电竞比分网-中国电竞赛事及体育赛事平台

分享

計算機輸入輸出(I/O)的基本原理

 山峰云繞 2025-11-11 發(fā)布于貴州

https://m.toutiao.com/is/tEaukwfVmBc/

計算機的核心能力就是運算,而快速的數(shù)學運算,甚至是早期設(shè)計計算機時的唯一目標。但是今天,計算機已經(jīng)成為了我們?nèi)粘I钪忻懿豢煞值囊徊糠?。我們平時感受更多的,可能是計算機與外界交互的能力。因此,想要了解計算機的組成,我們就必須要知道現(xiàn)代計算機當中,輸入輸出設(shè)備到底是怎么工作的。

打開今日頭條查看圖片詳情

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

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

打開今日頭條查看圖片詳情

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

打開今日頭條查看圖片詳情

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

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

打開今日頭條查看圖片詳情

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

打開今日頭條查看圖片詳情

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

  1. 數(shù)據(jù)緩沖,用于解決高速的CPU和低速的外設(shè)之間的差距;

  2. 提供聯(lián)絡(luò)信息,比如打印機什么時候能夠接收數(shù)據(jù)。

  3. 提供格式上的轉(zhuǎn)換,比如模擬信號和數(shù)字信號之間的轉(zhuǎn)換,串行信號和并行信號之間的轉(zhuǎn)換,不同電平之間的轉(zhuǎn)換。

  4. 一個接口可能連接了多個設(shè)備,比如說有多個硬盤,那這個I/O接口還需要提供設(shè)備選擇的功能。

  5. 其它還有一些功能,在用到的時候再做介紹。

打開今日頭條查看圖片詳情

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

我們要注意的是,這樣的劃分和馮諾依曼結(jié)構(gòu)當中所定義的輸入輸出設(shè)備,是不能完全一一對應的。在這里,我們描述的是現(xiàn)代計算機發(fā)展過程中的,一種具體的實現(xiàn)。

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

這是一種最簡單的I/O接口,叫做并行接口。它一邊通過系統(tǒng)總線和CPU相連,另一邊可以連接數(shù)碼管、撥碼開關(guān),這樣簡單的設(shè)備,也可以連接打印機這樣比較復雜的設(shè)備。

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

打開今日頭條查看圖片詳情

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

類似的,這個并行接口芯片,還可以有8個引角,連接到撥碼開關(guān)。那撥碼開關(guān)的狀態(tài),就會被保存在數(shù)據(jù)輸入寄存器當中,等待CPU來讀取。

這些都是非常簡單的設(shè)備。

打開今日頭條查看圖片詳情

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

那么對于掃描儀這樣的輸入設(shè)備,也是類似的情況。掃描儀在將掃描了的數(shù)據(jù)進行輸入時,也需要給出一個輸入準備好的信號,并行接口電路在采樣了數(shù)據(jù)輸入之后,也需要給出輸入的回答信號。因此,并行接口芯片,在連接這些比較復雜的設(shè)備時,除了那8根數(shù)據(jù)信號之外,還需要有兩根用于通訊聯(lián)絡(luò)的信號,而這兩根信號,又被稱為握手信號,在數(shù)據(jù)傳輸中,起著協(xié)調(diào)和聯(lián)絡(luò)的作用。對于稍微復雜一些的外設(shè),都得采用帶握手信號的數(shù)據(jù)傳輸?shù)姆绞健?

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

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多