计算机组成原理(哈工大刘宏伟)135讲(二)
第5章 輸入輸出系統(tǒng)
5.1 概述
輸入輸出系統(tǒng)的發(fā)展概況
輸入輸出系統(tǒng)的組成
1.I/O軟件
- 設(shè)備 通過 接口 連接在 總線 上,和 主機 進行信息交互
I/O設(shè)備與主機的聯(lián)系方式
-
I/O設(shè)備編址方式 :
1.統(tǒng)一編址 :就是把 I/O設(shè)備的地址 看成是 內(nèi)存地址的一部分;這種情況下,cpu可以直接利用取數(shù)或者存數(shù)指令對I/O設(shè)備進行訪問/控制,不需要單獨的I/O指令,只要取數(shù)(存數(shù))指令中的地址落在了I/O設(shè)備;如果內(nèi)存系統(tǒng)的編址空間比較大,就可以使用這種
2.不統(tǒng)一編址 :在內(nèi)存地址空間以外專門設(shè)立一個地址空間,為了區(qū)分一條指令 究竟是對 內(nèi)存進行操作還是I/O進行操作,在單獨編址的計算機中,輸入輸出系統(tǒng)就不能再采用計算機系統(tǒng)原有的取數(shù)存數(shù)指令,要有專用的I/O指令對它控制 -
數(shù)據(jù)傳送方式 :(與第三章同)
1.串行 :數(shù)據(jù)一位一位的進行傳輸,傳輸速度比較慢,但適合進行 遠程傳輸
2.并行 :同時有多位數(shù)據(jù)在數(shù)據(jù)線上傳輸,通常數(shù)據(jù)線的條數(shù)是8的倍數(shù)
-
聯(lián)絡(luò)方式 :主要是外部設(shè)備接收或者發(fā)送數(shù)據(jù)的相應(yīng)情況
異步 分成 兩種,可以 并行傳輸,也可以 串行傳輸;cpu與接口之間一般都是并行傳輸
同步工作 :設(shè)備和主機之間如果要 同步工作 的話,必須有一個定寬定距的時標(biāo),來控制在某一個時間點必須開始某一項工作,在某一個時間點某一項工作必須結(jié)束
-
連接方式 :
輻射式連接 :其實就是 分散式連接,增加一個I/O設(shè)備,在主機中就需要增加一套控制電路,對這個設(shè)備進行控制,早期由于外部設(shè)備數(shù)量比較少,采用這種方式,而現(xiàn)在外部設(shè)備越來越多,不合適
總線連接 :外部設(shè)備 通過 接口,和主機進行連接,接口可以向外部設(shè)備傳送主機的控制命令,可以向主機傳送外部設(shè)備的狀態(tài)信息,同樣,接口還可以完成信息傳送,還可以用來在接口緩存;只要外部設(shè)備采用標(biāo)準(zhǔn)接口的方式,就可以增刪設(shè)備
I/O設(shè)備與主機信息傳送的控制方式
- 程序查詢方式 :
這是最早的方式
在這種方式中,cpu與外設(shè)采用 串行 方式進行工作 - 程序中斷方式 :
這種方式中cpu實現(xiàn)了與I/O設(shè)備之間 部分的并行工作,也就是在I/O設(shè)備進行數(shù)據(jù)準(zhǔn)備時,cpu還可以執(zhí)行自己的程序,不需要停 - DMA方式 :
這種方式把cpu進一步的從 數(shù)據(jù)的輸入輸出 這個工作中解放出來,使外部設(shè)備與內(nèi)存之間可以建立直接的的連接,由dma接口,或者dma控制器直接控制外部設(shè)備和內(nèi)存之間進行數(shù)據(jù)交換
-
這種方式,cpu效率非常低;這種方式中,內(nèi)存與I/O之間要想進行數(shù)據(jù)交換的話,必須要通過cpu,先要送入cpu之中
-
是對第一種方式的一個改進,在這種方式中,cpu一定程度上從數(shù)據(jù)的輸入輸出工作中解放出來
-
I/O工作可以分成兩個階段 :1.數(shù)據(jù)準(zhǔn)備階段,也就是自身準(zhǔn)備;2.才是與主機交換信息。在程序查詢方式中,這兩個階段cpu都要工作都要參與。而在 中斷方式中,第一個階段是cpu與I/O是 并行工作的
-
在 中斷 方式中,要想輸入一個數(shù)據(jù),把它輸入到內(nèi)存中去,依然是先要把這個數(shù)據(jù)讀入cpu,然后從cpu寫入到內(nèi)存,或者是發(fā)給I/O設(shè)備。也就是說,即使是中斷方式,內(nèi)存、cpu、I/O設(shè)備這三者的關(guān)系,依然是cpu在兩者的中間,內(nèi)存和外設(shè)在兩邊,它們兩者之間如果要進行信息的傳輸,依然需要cpu的參與,所以即使是在 中斷 的方式中,數(shù)據(jù)的傳輸過程,依然需要cpu來做
-
DMA方式中,cpu被進一步的從數(shù)據(jù)的輸入輸出工作中解放出來
-
這種方式,在內(nèi)存和I/O之間建立了直接的通路
-
在這個周期中,cpu不能使用總線對內(nèi)存進行訪問,這個周期結(jié)束以后,I/O設(shè)備可以繼續(xù)進行準(zhǔn)備,cpu可以繼續(xù)執(zhí)行現(xiàn)行的程序,也就是說,這個周期結(jié)束后,總線的控制權(quán)、對內(nèi)存的使用權(quán)又歸還給了cpu,在這一個存取周期中,cpu雖然不能使用系統(tǒng)的總線,不能使用內(nèi)存,不能進行訪存操作,但是在這個周期中,cpu還是可以執(zhí)行
5.2 I/O設(shè)備
概述
輸入設(shè)備
輸出設(shè)備
其他、多媒體技術(shù)
5.3 I/O接口
概述
接口的功能和組成
- 狀態(tài)標(biāo)記 由 觸發(fā)器 實現(xiàn)
接口類型
5.4 程序查詢方式
程序查詢流程
- 因為 程序查詢方式 中,要完成內(nèi)存與外設(shè)之間數(shù)據(jù)的輸入輸出,需要借助cpu中的某一個寄存器對數(shù)據(jù)進行暫存
- 設(shè)置計數(shù)器的值,是為了控制我們傳輸?shù)臄?shù)據(jù)量
- 設(shè)置計數(shù)值,有兩種方式 :1.如果我們要傳輸n個字,計數(shù)器的值就設(shè)為n,每完成一個字的傳輸,計數(shù)器的值就減1,直到減為0;2.把計數(shù)器的值設(shè)為-n,并且這個負(fù)數(shù)用補碼來表示,直到計數(shù)器發(fā)生溢出,里面的值變?yōu)?
- 設(shè)置計數(shù)值后,為了完成內(nèi)存與I/O之間數(shù)據(jù)傳輸,我們要知道內(nèi)存的這個塊的起始地址,因此要設(shè)置主存緩沖區(qū)的地址,我們保存數(shù)據(jù)或者讀取數(shù)據(jù)就從這個緩沖區(qū)的起始地址開始
- 然后就可以啟動外部設(shè)備,然后,因為我們是 程序查詢方式,cpu開始查詢I/O接口的狀態(tài)是否準(zhǔn)備好,如果沒有準(zhǔn)備好,cpu就原地踏步反復(fù)進行查詢,一直到狀態(tài)標(biāo)志表明數(shù)據(jù)已經(jīng)準(zhǔn)備好了,這個查詢才會停止,
- 傳送好后,修改主存地址,+1或者-1,為輸入或者輸出下一個數(shù)據(jù)進行準(zhǔn)備,同時,為了表面還有多少數(shù)據(jù)需要傳輸,計數(shù)器的值也要進行修改,+1或者-1
程序查詢方式的接口電路
- 首先需要 SEL信號 有效且 啟動命令 有效,這個I/O接口電路才會開始工作
- 以 輸入數(shù)據(jù) 為例 :
cpu通過 地址線 給出外部設(shè)備的地址
設(shè)備選擇電路把自己的地址或者端口號和地址線上的地址進行比較,如果相同,說明這次啟動的是連接在這個接口上的設(shè)備,SEL這個信號會有效
在啟動命令和SEL都有效的前提下,我們對兩個狀態(tài)標(biāo)記進行質(zhì)問,到目前為止,是cpu發(fā)出讀命令,設(shè)備還沒開始工作,因此 標(biāo)記D 應(yīng)該為0,表示數(shù)據(jù)還沒有準(zhǔn)備好
B1后,表示設(shè)備忙,設(shè)備開始工作,把數(shù)據(jù)準(zhǔn)備好,并且通過輸入的數(shù)據(jù)線把它保存到DBR,此時,設(shè)備的工作結(jié)束,設(shè)備會通過設(shè)備的狀態(tài)線向接口電路送入工作結(jié)束信號,這個信號會修改接口電路中的兩個標(biāo)記,此時,標(biāo)記D應(yīng)該被修改為1,表示數(shù)據(jù)已經(jīng)準(zhǔn)備好了,同時標(biāo)記B被改為0,表示設(shè)備已經(jīng)工作完成,不忙了
在這個過程中,一直到D信號變成1之前,cpu都在原地踏步進行查詢,就是查詢D是否變成了1,查詢到D為1說明數(shù)據(jù)已經(jīng)被放入到DBR中了,cpu可以進行數(shù)據(jù)傳輸了,cpu就通過數(shù)據(jù)線把數(shù)據(jù)進行讀入
5.5 程序中斷方式
中斷的概念
- 中斷 指的是,cpu在執(zhí)行程序的過程中,如果發(fā)生意外事件,或者特殊事件,cpu要中斷當(dāng)前程序的處理,或者當(dāng)前程序的執(zhí)行,轉(zhuǎn)而去處理特殊事件,或者是異常事件;處理結(jié)束后,要返回到被中斷程序的程序斷點繼續(xù)執(zhí)行原來程序
I/O中斷的產(chǎn)生
程序中斷方式的接口電路
- 程序中斷方式的接口電路,除了選址、數(shù)據(jù)緩存等等,還需要圖上這些
- 1.需要 中斷請求標(biāo)志,由外設(shè)對中斷請求標(biāo)志進行設(shè)置,表示有中斷請求;這個中斷請求標(biāo)志能否變成中斷請求信號向cpu發(fā)出中斷請求,還要看這個中斷請求標(biāo)志是否會被屏蔽掉,所以我們需要一個中斷屏蔽觸發(fā)器,因為有的時候,計算機正在執(zhí)行的程序,或者正在執(zhí)行的中斷服務(wù)程序,它的重要性要比這個設(shè)備提出的中斷請求的重要性要高,那么這個中斷標(biāo)志就會被屏蔽掉,不會對cpu發(fā)出中斷請求
- 2.我們要用 排隊電路,在同一個時刻,向cpu發(fā)出中斷請求的可能有多個設(shè)備,這些設(shè)備的優(yōu)先級不同,比如高速設(shè)備的優(yōu)先級比較高,不然保存的數(shù)據(jù)可能丟失。經(jīng)過排隊器后,只有優(yōu)先級最高的那個設(shè)備提出的中斷可以被響應(yīng)
- 如果要響應(yīng)這個中斷,去執(zhí)行中斷服務(wù)程序,cpu必須要知道中斷服務(wù)程序的入口地址,也就是中斷服務(wù)程序在內(nèi)存中的起始地址,因此要采用 中斷向量地址形成部件
- 當(dāng) 完成觸發(fā)器D =1時,設(shè)備已經(jīng)準(zhǔn)備好數(shù)據(jù)了并且把數(shù)據(jù)放在了DBR中,MASK若為0不被屏蔽,此時,中斷請求觸發(fā)器被設(shè)置為1,表示有中斷請求,另外,指令執(zhí)行周期結(jié)束前,cpu會發(fā)出中斷查詢信號,這個中斷查詢信號會是INTR的D端的輸入,產(chǎn)生中斷請求
-
排隊有兩種方式,一種是通過硬件實現(xiàn),另一種是軟件
-
有兩種方式完成硬件實現(xiàn) :將排隊電路集中放在cpu內(nèi)部,也可以把硬件的排隊電路放在每一個接口中,然后連接在一起,組成一個鏈,這樣是鏈?zhǔn)脚抨犉?/p>
-
軟件方式實現(xiàn)排隊,實際上是通過查詢的方法,中斷的優(yōu)先級在一個表格中進行規(guī)定
-
圖上是 鏈?zhǔn)脚抨犉?br />
-
中斷向量,可以理解成中斷服務(wù)程序的入口地址
-
向量地址 指的是 中斷向量保存的內(nèi)存單元的地址
I/O中斷處理過程
中斷服務(wù)程序流程
5.6 DMA方式
DMA方式的特點
-
這里提到的 周期 ,指的是 訪存周期(內(nèi)存訪問周期)
-
這種情況下,與上一種相比,cpu可以利用這個 間隙 進行訪存操作,使主存儲器和總線的利用率更高
-
這種方式中,由于不需要DMA提出申請,建立對總線的控制權(quán)和對內(nèi)存的使用權(quán),因此,速度會比較快
DMA接口的功能和組成
DMA的工作過程
DMA接口的類型
-
通道 也是一種 小型的DMA接口
-
速度越高的設(shè)備,優(yōu)先級 越高
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理(哈工大刘宏伟)135讲(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尚硅谷最新版JavaWeb全套教程,ja
- 下一篇: 计算机组成原理(哈工大刘宏伟)135讲(