10.1 輸入輸出接口的基本功能


計算機組成

10 輸入輸出設備

10.1 輸入輸出接口的基本功能

Screen Shot 2018-09-30 at 10.06.14 am

計算機的核心能力就是運算,而快速的數學運算,甚至是早期設計計算機時的唯一目標。但是今天,計算機已經成為了我們日常生活中密不可分的一部分。我們平時感受更多的,可能是計算機與外界交互的能力。因此,想要了解計算機的組成,我們就必須要知道現代計算機當中,輸入輸出設備到底是怎么工作的。

Screen Shot 2018-09-30 at 10.06.24 am

我們先來一起回顧模型機的結構。這個模型機由一個CPU,一個存儲器,和一個輸入輸出設備組成。在系統啟動后,CPU就會從地址總線發出地址給存儲器,然后從數據總線讀回對應的指令編碼,並通過指令譯碼部件,產生相應的控制信號,完成對應的操作,這些操作有可能是進行運算,也可能是讀寫存儲器當中的某個單元,也有可能是要進行輸入輸出的動作。

那我們來看一看,CPU如果要完成一個簡單的輸入動作,會是怎么樣的。

Screen Shot 2018-09-30 at 10.06.33 am

我們這里的輸入設備是八個手動的開關,假設前三個開關都撥到高電平,后五個開關撥到低電平。這八個開關可能連接到了一個寄存器,那這個單元當中就保存了11100000這個數,而且事先在系統當中,也為這個單元分配了一個地址(1111)。那么事先就編寫了一個用於輸入的程序,在這個程序當中有一條指令就是讀取1111這個地址單元。當CPU執行了這條指令的時候,就會在地址總線上發出這個地址,與此同時,在控制總線上發出表示當前是讀操作的信號。輸入輸出設備收到1111地址和Read控制信號之后,就會從1111這個單元,取出對應的內容,然后把它送到數據總線上去。而CPU這時會采樣數據總線上的信號,得到這個數值。然后這條指令應該是把這個數,保存到某個通用寄存器當中去,這樣后續的程序也就可以對這個數進行操作了。這就完成了一個輸入的動作。

Screen Shot 2018-09-30 at 10.06.41 am

那我們再來看一個輸出的簡單場景。我們現在的輸出設備是8個小燈泡,它也和一個8位的寄存器相連,並有對應的地址。現在CPU執行到某一條指令,是想點亮這8個燈泡當中的某幾個,這條指令就會在地址總線上送出1110,然后在控制總線上送出寫(Write)的控制信號。與此同時,還需要在數據總線上,送出要寫的數據11001100。這個輸入輸出設備,就會根據控制總線發現是一次寫操作,就找到地址總線上的信號對應的單元,並將數據總線上對應的信號寫進去。於是1110這個單元,就被寫入了11001100這個數,然后這個單元的輸出就直接通過物理的連線,連接到8個小燈泡上。數值為1代表高電平,就會點亮某個燈泡;數值為0代表低電平,對應的燈泡就是熄滅的狀態。

這樣我們就通過一條指令,完成了這幾個小燈泡亮滅的控制,從而讓計算機外部的人,可以觀察到輸出的信息。

Screen Shot 2018-09-30 at 10.06.49 am

因此,由CPU、存儲器和輸入輸出設備,就構成了一個簡單的計算機系統。用於輸入輸出的可以是撥碼開關、LED管,這樣的的簡單的設備,也可能是比較復雜的設備,像打印機、硬盤。現在的計算機系統當中,輸入輸出設備變得越來越多,功能也非常的豐富。這些設備的差異非常大,有些設備要求很高的數據傳輸率,比如說顯示器;有些設備的速度卻很慢,比如鍵盤和鼠標。而且有一些接口是串行的,有一些是並行的;有數字電路的接口,也有模擬電路的接口。如此千差萬別的設備,就沒有辦法直接和CPU這一個芯片進行連接。因此,我們就需要在CPU和這些設備之間,設置一個中轉站。這就是輸入輸出接口,也被稱為I/O接口。

Screen Shot 2018-09-30 at 10.06.57 am

I/O接口主要提供了這些功能。

  1. 數據緩沖,用於解決高速的CPU和低速的外設之間的差距;
  2. 提供聯絡信息,比如打印機什么時候能夠接收數據。
  3. 提供格式上的轉換,比如模擬信號和數字信號之間的轉換,串行信號和並行信號之間的轉換,不同電平之間的轉換。
  4. 一個接口可能連接了多個設備,比如說有多個硬盤,那這個I/O接口還需要提供設備選擇的功能。
  5. 其它還有一些功能,在用到的時候再做介紹。

Screen Shot 2018-09-30 at 10.07.05 am

因此,在現代的計算機系統當中,往往把跟輸入輸出相關的設備分解成兩個類型(I/O接口和外設)。一部分是I/O接口,這可能是插在計算機主板上的一塊插卡,也有可能是主板上的一個芯片。它內部會有一些寄存器,CPU可以通過系統總線,去訪問I/O接口當中的這些寄存器。而這個I/O接口芯片,還會有一些管角,與外部的設備相連。這種划分的典型代表,就是顯卡和顯示器。顯卡是一個I/O接口,顯示器則被稱為外設。

我們要注意的是,這樣的划分和馮諾依曼結構當中所定義的輸入輸出設備,是不能完全一一對應的。在這里,我們描述的是現代計算機發展過程中的,一種具體的實現。

I/O接口究竟是如何與外設相連的,我們來看一個例子。

Screen Shot 2018-09-30 at 10.07.15 am

這是一種最簡單的I/O接口,叫做並行接口。它一邊通過系統總線和CPU相連,另一邊可以連接數碼管、撥碼開關,這樣簡單的設備,也可以連接打印機這樣比較復雜的設備。

這樣的並行接口,一般有兩種常見的實現形式。一種是采用獨立的芯片,比如這個8255A就是一個並行接口芯片。那么早期的I/O接口,大多會采用這樣獨立芯片的形式;而現在可以在一個芯片當中,實現多個I/O接口的功能。所以,這個並行接口,也可能被實現在一個多功能的芯片當中。但不管是哪種實現形式,它總是要與這些外設進行連接。

Screen Shot 2018-09-30 at 10.07.24 am

我們先來看看它和那些簡單的外設是怎么連接的。比如說和一個簡單的輸出設備,就是這個數碼管。這個並行接口的芯片,對外會有8根引角,通過主板上的連線,就可以連接到這個數碼管。每根信號線,正好連接到其中一個可以發亮的部分,加上旁邊的這個小數點,一共有8個。因此,這和我們剛才用模型機演示的例子一樣,CPU只要將對應的數據寫到這個數據輸出寄存器上,並行接口芯片就會直接將這個寄存器的內容,輸出到這八根信號線上,這個數碼管上對應的部分就會亮起,從而展現出我們編程想要輸出的數字。

類似的,這個並行接口芯片,還可以有8個引角,連接到撥碼開關。那撥碼開關的狀態,就會被保存在數據輸入寄存器當中,等待CPU來讀取。

這些都是非常簡單的設備。

Screen Shot 2018-09-30 at 10.07.33 am

那我們再看一些稍微復雜一點的設備,比如說打印機。那么就不能像剛才那樣簡單的傳入數據了,除了連接剛才那8根輸出的信號之外,還需要有一根信號,告訴打印機,此時輸出的數據,是希望打印機接收的數據。而打印機在接收了這個數據之后,還要給出一個回答的信號,以表示它已經完成了這個數據的接收工作。這樣才能保證,這個並行接口和打印機進行數據傳輸時,既不丟失數據,也不會傳輸重復的數據。

那么對於掃描儀這樣的輸入設備,也是類似的情況。掃描儀在將掃描了的數據進行輸入時,也需要給出一個輸入准備好的信號,並行接口電路在采樣了數據輸入之后,也需要給出輸入的回答信號。因此,並行接口芯片,在連接這些比較復雜的設備時,除了那8根數據信號之外,還需要有兩根用於通訊聯絡的信號,而這兩根信號,又被稱為握手信號,在數據傳輸中,起着協調和聯絡的作用。對於稍微復雜一些的外設,都得采用帶握手信號的數據傳輸的方式。

Screen Shot 2018-09-30 at 10.07.41 am

在現代的計算機當中,這種並行接口電路,算是最簡單的I/O接口了。它和許多其它更為復雜的I/O接口,都會在集成在南橋芯片當中。而還有少數對性能要求比較高的接口,則會采用獨立的芯片或者板卡的形式。而在一些緊湊型的設備中,比如說平板電腦和智能手機,這些I/O接口甚至會和CPU一起,集成在一個芯片當中。

不管是哪種形式,這些I/O接口的功能都是獨立存在的,而且它們也需要各自的管角、連線,與對應的外設相連,從而讓CPU可以與外部進行交互。

Screen Shot 2018-09-30 at 10.07.49 am

外面的世界很精彩,但也很復雜。我們的CPU雖然有超群的計算能力,然而它的交往技巧卻是很貧乏。所以,我們為它找到了I/O接口這個好幫手。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM