設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或處理機之間的數(shù)據(jù)傳送乐疆,外圍設(shè)備和內(nèi)存之間的輸入/輸出控制方式有四種辞友,下面分別介紹辐董。
1 程序直接控制方式
在早期的計算機中印屁,由于無中斷機構(gòu),處理機對I/O設(shè)備的控制采用程序直接控制方式骂租,或稱為忙-等待方式蚊夫。
如圖(a)所示券时,計算機從外部設(shè)備讀取數(shù)據(jù)到存儲器邮旷,每次讀一個字的數(shù)據(jù)黄选。對讀入的每個字,CPU需要對外設(shè)狀態(tài)進行循環(huán)檢查婶肩,直到確定該字已經(jīng)在I/O控制器的數(shù)據(jù)寄存器中办陷。由于CPU的高速性和I/O設(shè)備的低速性,致使CPU的絕大部分時間都處于等待I/O設(shè)備完成數(shù)據(jù)I/O的循環(huán)測試中律歼,造成了 CPU資源的極大浪費民镜。
程序直接控制方式雖然簡單易于實現(xiàn),但是其缺點也是顯而易見的险毁,由于CPU和I/O設(shè)備只能串行工作制圈,導(dǎo)致CPU的利用率相當?shù)汀?/p>
2 中斷驅(qū)動方式
中斷驅(qū)動方式的思想是,允許I/O設(shè)備主動打斷CPU的運行并請求服務(wù)畔况,從而“解放”CPU离唐,使得其向I/O控制器發(fā)送讀命令后可以繼續(xù)做其他有用的工作,CPU與I/O可以并行操作问窃。
如圖(b)所示:
從I/O控制器的角度來看,I/O控制器從CPU接收一個讀命令完沪,然后從外圍設(shè)備讀數(shù)據(jù)域庇。一旦數(shù)據(jù)讀入到該I/O控制器的數(shù)據(jù)寄存器嵌戈,便通過控制線給CPU發(fā)出一個中斷信號,表示數(shù)據(jù)已準備好听皿,然后等待CPU請求該數(shù)據(jù)熟呛。I/O控制器收到CPU發(fā)出的取數(shù)據(jù)請求后,將數(shù)據(jù)放到數(shù)據(jù)總線上尉姨,傳到CPU的寄存器中庵朝。至此,本次I/O操作完成又厉,I/O控制器又可幵始下一次I/O操作九府。
從CPU的角度來看,CPU發(fā)出讀命令覆致,然后保存當前運行程序的上下文(現(xiàn)場侄旬,包括程序計數(shù)器及處理機寄存器),轉(zhuǎn)去執(zhí)行其他程序煌妈。在每個指令周期的末尾儡羔,CPU檢查中斷。當有來自I/O控制器的中斷時璧诵,CPU保存當前正在運行程序的上下文汰蜘,轉(zhuǎn)去執(zhí)行中斷處理程序處理該中斷。這時之宿,CPU從I/O控制器讀一個字的數(shù)據(jù)傳送到寄存器族操,并存入主存。接著澈缺, CPU恢復(fù)發(fā)出I/O命令的程序(或其他程序)的上下文坪创,然后繼續(xù)運行。
中斷驅(qū)動方式比程序直接控制方式有效姐赡,但由于數(shù)據(jù)中的每個字在存儲器與I/O控制器之間的傳輸都必須經(jīng)過CPU莱预,這就導(dǎo)致了中斷驅(qū)動方式仍然會消耗較多的CPU時間。
3 DMA方式
在中斷驅(qū)動方式中项滑,I/O設(shè)備與內(nèi)存之間的數(shù)據(jù)交換必須要經(jīng)過CPU中的寄存器依沮,所以速度還是受限,而DMA(直接存儲器存惹箍瘛)方式的基本思想是在I/O設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路危喉,徹底“解放” CPU。DMA方式的特點是:
- 基本單位是數(shù)據(jù)塊州疾。
- 所傳送的數(shù)據(jù)辜限,是從設(shè)備直接送入內(nèi)存的,或者相反严蓖。
- 僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時薄嫡,才需CPU干預(yù)氧急,整塊數(shù)據(jù)的傳送是在 DMA控制器的控制下完成的。
下圖列出了 DMA控制器的組成毫深。
為了實現(xiàn)在主機與控制器之間成塊數(shù)據(jù)的直接交換吩坝,必須在DMA控制器中設(shè)置如下四類寄存器:
-
命令/狀態(tài)寄存器(CR)
用于接收從CPU發(fā)來的I/O命令或有關(guān)控制信息,或設(shè)備的狀態(tài)哑蔫。 -
內(nèi)存地址寄存器(MAR)
在輸入時钉寝,它存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始目標地址;在輸出時闸迷,它存放由內(nèi)存到設(shè)備的內(nèi)存源地址嵌纲。 -
數(shù)據(jù)寄存器(DR)
用于暫存從設(shè)備到內(nèi)存,或從內(nèi)存到設(shè)備的數(shù)據(jù)稿黍。 -
數(shù)據(jù)計數(shù)器(DC)
存放本次CPU要讀或?qū)懙淖郑ü?jié))數(shù)疹瘦。
如圖(c)所示,DMA方式的工作過程是:CPU讀寫數(shù)據(jù)時巡球,它給I/O控制器發(fā)出一條命令言沐,啟動DMA控制器,然后繼續(xù)其他工作酣栈。之后CPU就把控制操作委托給DMA控制器险胰,由該控制器負責處理。DMA控制器直接與存儲器交互矿筝,傳送整個數(shù)據(jù)塊起便,每次傳送一個字,這個過程不需要CPU參與窖维。當傳送完成后榆综,DMA控制器發(fā)送一個中斷信號給處理器。因此只有在傳送開始和結(jié)束時才需要CPU的參與铸史。
DMA控制方式與中斷驅(qū)動方式的主要區(qū)別是中斷驅(qū)動方式在每個數(shù)據(jù)需要傳輸時中斷CPU鼻疮,而DMA控制方式則是在所要求傳送的一批數(shù)據(jù)全部傳送結(jié)束時才中斷CPU;此外琳轿,中斷驅(qū)動方式數(shù)據(jù)傳送是在中斷處理時由CPU控制完成的判沟,而DMA控制方式則是在DMA 控制器的控制下完成的。
4 通道控制方式
I/O通道是指專門負責輸入/輸出的處理機崭篡。I/O通道方式是DMA方式的發(fā)展挪哄,它可以進一步減少CPU的干預(yù),即把對一個數(shù)據(jù)塊的讀(或?qū)懀閱挝坏母深A(yù)琉闪,減少為對一組數(shù)據(jù)塊的讀(或?qū)懀┘坝嘘P(guān)的控制和管理為單位的干預(yù)迹炼。同時,又可以實現(xiàn)CPU颠毙、通道和I/O設(shè)備三者的并行操作斯入,從而更有效地提高整個系統(tǒng)的資源利用率拿霉。
例如,當CPU要完成一組相關(guān)的讀(或?qū)懀┎僮骷坝嘘P(guān)控制時咱扣,只需向I/O通道發(fā)送一條I/O指令,以給出其所要執(zhí)行的通道程序的首地址和要訪問的I/O設(shè)備涵防,通道接到該指令后闹伪,通過執(zhí)行通道程序便可完成CPU指定的I/O任務(wù),數(shù)據(jù)傳送結(jié)束時向CPU發(fā)中斷請求壮池。I/O通道與一般處理機的區(qū)別是:通道指令的類型單一偏瓤,沒有自己的內(nèi)存,通道所執(zhí)行的通道程序是放在主機的內(nèi)存中的椰憋,也就是說通道與CPU共享內(nèi)存厅克。
I/O通道與DMA方式的區(qū)別是:
- DMA方式需要CPU來控制傳輸?shù)臄?shù)據(jù)塊大小、傳輸?shù)膬?nèi)存位置橙依,而通道方式中這些信息是由通道控制的证舟。*
- 每個DMA控制器對應(yīng)一臺設(shè)備與內(nèi)存?zhèn)鬟f數(shù)據(jù),而一個通道可以控制多臺設(shè)備與內(nèi)存的數(shù)據(jù)交換窗骑。