了解一下IO控制器與控制方式


IO控制器
CPU無法直接控制IO設備的機械部件,因此IO設備還要有個電子部件作為CPU和IO設備機械部件之間的“中介”,用於實現CPU對設備的控制。
這個電子部件就是IO控制器,又稱為設備控制器。CPU可控制IO控制器,IO控制器來控制設備的機械部件。

IO控制器的功能
接收設備CPU指令:CPU的讀寫指令和參數存儲在控制寄存器中
向CPU報告設備的狀態:IO控制器中會有相應的狀態寄存器,用於記錄IO設備的當前狀態。(比如1代表設備忙碌,0代表設備就緒)
數據交換:數據寄存器,暫存CPU發來的數據和設備發來的數據,之后將數據發給控制寄存器或CPU。
地址識別:類似於內存的地址,為了區分設備控制器中的各個寄存器,需要給各個寄存器設置一個特定的地址。IO控制器通過CPU提供的地址來判斷CPU要讀寫的是哪個寄存器。
IO控制器的組成
CPU與控制器之間的接口(實現控制器與CPU之間的通信),IO邏輯(負責識別CPU發出的命令,並向設備發出命令),控制器與設備之間的接口(實現控制器與設備之間的通信)
兩種寄存器編址方式
**內存映射IO:**控制器中的寄存器與內存統一編制,可以采用對內存進行操作的指令來對控制器進行操作。
寄存器獨立編制:控制器中的寄存器獨立編制。需要設置專門的指令來操作控制器。

I/O控制方式
程序直接控制方式
CPU向IO模塊發出讀指令,CPU會從狀態寄存器中讀取IO設備的狀態,如果是忙碌狀態就繼續輪詢檢查狀態,如果是已就緒,就代表IO設備已經准備好,可以從中讀取數據到CPU寄存器中(IO->CPU)讀到CPU后,CPU還要往存儲器(內存)中寫入數據。寫完后,再執行下一套指令。


CPU干預的頻率:很頻繁,IO操作開始之前、完成之后需要CPU的介入,並且在等待IO完成的過程中CPU需要不斷的輪詢檢查。
數據流向

讀操作(數據的輸入):IO設備->CPU->內存
寫操作(數據的輸出):內存->CPU->IO設備
每個字的讀寫都需要CPU的幫助。
主要缺點和主要優點
優點:實現簡單。在讀寫指令之后,加上實現循環檢查的一些列指令即可。
缺點:CPU和IO設備只能串行化工作,CPU需要一直輪詢檢查,長期處於忙等狀態,CPU利用率很低。
中斷驅動方式
因為IO設備速度很快,CPU處理速度很快,因此在CPU發出讀寫命令后,可將等待IO的進程阻塞,先切換到別的進程執行。當IO完成后控制器會向CPU發出一個中斷信號,CPU檢測到中斷信號后,會保存當前進程的運行環境信息,轉去執行中斷處理程序。這樣就使得CPU與IO設備能夠並行工作。

優點:與程序直接控制方式相比,在中斷驅動方式中,IO控制器會通過中斷信號主動報告IO已完成,CPU不再需要不停的輪詢。CPU和IO設備可並行工作,CPU利用率得到明顯提升。
缺點:每個字在IO設備與內存之間的傳輸,都需要經過CPU。而頻繁的中斷處理會消耗很多的CPU時間。


DMA(直接存儲方式)
與中斷驅動方式相比,DMA方式有以下改進。

數據的傳送單位是“塊”。
數據的流向是從設備直接放入內存,或者是從內存直接到設備。不在使用CPU作中間者。
僅僅在傳送一個或多個數據塊的開始和結束時,才需要CPU的干預。
CPU在讀寫之前要指明要讀入多少數據、數據要存放在內存中的什么位置、數據放在外部磁盤的什么位置。
DMA控制器會根據CPU踢出的要求完成數據的讀寫操作,整塊數據的傳輸完成后,才像CPU發出中斷信號。


DR:暫存從設備到內存,或從內存到設備的數據。

MAR(內存地址寄存器):再輸入時,MAR表示數據應放在內存中的什么地方,輸出時MAR表示要輸出的數據放在內存中的什么位置。

DC(數據計數器):表示剩余要讀/寫的字節數

CR(命令/狀態寄存器):用於存放CPU發來的IO命令,或設備的狀態信息。

CPU干預的頻率:僅在傳送一個或多個數據塊的開始和結束時,才需要CPU的干預。

數據傳送單位是以塊為單位,每次讀寫一個或多個塊(需要注意的是讀寫的只能是連續的塊,且這些塊讀入內存后在內存中也必須是連續的)
數據的流向也不再需要CPU干預。

優點:數據傳輸效率以塊為單位,CPU的介入性進一步降低。CPU和IO設備的並行性進一步提升。
缺點:CPU發出一條指令,只能讀或寫一個或多個連續的數據塊。如果讀或寫的數據塊不是連續存放的而是離散的,那么CPU要分別發出多條IO指令,進行多次中斷處理才能完成。

通道控制方式
通道是一種硬件,可以理解為“弱雞版的CPU”。通道只能執行一類通道指令。
因為通道與CPU相比的話,CPU能夠處理的指令的種類比通道多,也就是說通道執行的指令單一,他與CPU共用主機的內存。

具體處理過程:
CPU將操作步驟告訴通道,通道程序會把操作的指令列在一個類似於“任務清單上”。然后剩下的事CPU就不參與了,等到通道把指令執行完后,發出一個中斷,告訴CPU我處理完了,然后CPU在處理后續操作。

這時候的CPU就像一個每天忙碌的大老板,通道就是小組的組長之類的,老板很忙,把一些任務交給組長去做,做完后得匯報給老板。

使用這種方式CPU干涉的頻率極低,通道會根據CPU的指示執行響應的通道程序,只有完成一組數據塊的讀寫后才需要發出中斷信號讓CPU干預。

每次讀寫一組數據塊。

優點:CPU 通道、IO設備可並行工作,資源利用率極高。
缺點:實現復雜,需要專門的通道硬件支持。

 


免責聲明!

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



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