九、輸入與輸出系統(tǒng)
1.輸入輸出系統(tǒng)的發(fā)展
輸入輸出系統(tǒng)的發(fā)展大致分為五種方式,即程序控制的輸入輸出方式、中斷方式,DMA方式、輸入/輸出通道方式和I/O處理機等五種方式。
程序查詢方式和程序中斷方式適用于數(shù)據(jù)傳輸率比較低的外部設備。而DMA方式、通道方式和I/O處理機方式適用于數(shù)據(jù)傳輸率比較高的設備。目前,小型機和微型機大都采用程序查詢方式、程序中斷方式和DMA方式。通道方式、I/O處理機方式大都用在中、大型計算機中。為了介紹方便,我們把通道方式和I/O處理機方式視為一種方式。
2.程序查詢方式
程序查詢方式又叫程序控制I/O方式。在這種方式中,數(shù)據(jù)在CPU和外部設備之間的傳送完全靠計算機程序控制,是在CPU主動控制下進行的,當輸入/輸出時,CPU暫停執(zhí)行主程序,轉去執(zhí)行輸入/輸出的服務程序,根據(jù)服務程序中的I/O指令進行數(shù)據(jù)傳送。
這是一種最簡單、最經濟的輸入/輸出方式。它只需很少的硬件,因此幾乎所有的機器都具有程序查詢方式。特別是在微、小型機中,常用程序查詢方式來實現(xiàn)低速設備的輸入輸出管理。
3.程序中斷方式
“中斷”概念的提出,是計算機系統(tǒng)結構設計中的一個重大變革。在程序中斷方式中,某一外設的數(shù)據(jù)準備就緒后,它“主動”向CPU發(fā)請求中斷的信號,請求CPU暫時中斷目前的工作而進行數(shù)據(jù)交換。當CPU響應這個中斷時,便暫停運行主程序,并自動轉移到該設備的中斷服務程序。當中斷服務程序結束以后,CPU又回到原來的主程序。其原理和調用子程序相仿,不過,這里要求轉移到中斷服務子程序的請求是由外部設備發(fā)出的。中斷方式特別適合于隨機出現(xiàn)的服務。
4.DMA方式
(1)DMA方式的基本概念
直接訪問內存DMA方式,是一種完全由硬件執(zhí)行I/O交換的工作方式。在這種方式中,DMA控制器從CPU中完全接管對總線的控制,數(shù)據(jù)交換不經過CPU,而直接在內存儲器和I/O設備之間進行。DMA方式一般用于高速地傳送成組的數(shù)據(jù)。DMA控制器將向內存發(fā)出地址和控制信號、修改地址、對傳送的字的個數(shù)計數(shù),并且以中斷方式向CPU報告?zhèn)魉筒僮鞯慕Y束。DMA方式的主要優(yōu)點是速度快。由于CPU根本不參加傳送操作,因此就省去了CPU取指令、取數(shù)、送數(shù)等操作。在數(shù)據(jù)傳送過程中,也不象中斷方式那樣,要進行保存現(xiàn)場、恢復現(xiàn)場之類的工作。內存地址修改、傳送字個數(shù)的計數(shù)等,也不是由軟件實現(xiàn),而是用硬件線路直接實現(xiàn)的。DMA的種類很多,但各種DMA至少能執(zhí)行以下一些基本操作:①從外部設備發(fā)出DMA請求;
②CPU響應請求,把CPU工作改成DMA操作方式,DMA控制器從CPU接管總線的控制;③由DMA控制器對內存尋址,即決定數(shù)據(jù)傳送的內存單元首地址及數(shù)據(jù)傳送個數(shù)的計數(shù),并執(zhí)行數(shù)據(jù)傳送的操作;
④向CPU報告DMA操作的結束。
(2)DMA技術的出現(xiàn),使得外部設備可以通過DMA控制器直接訪問內存,與此同時,CPU可以繼續(xù)執(zhí)行程序。那么DMA控制器與CPU怎樣分時使用內存呢?通常采用以下三種方法:①停止CPU訪問;②周期挪用;
③DMA與CPU交替訪問。
(3)基本的DMA控制器
一個DMA控制器實際上是采用DMA方式的外部設備與系統(tǒng)總線之間的接口電路。這個接口電路是在中斷接口的基礎上再加DMA機構組成。習慣上將DMA方式的接口電路稱為DMA控制器。①內存地址計數(shù)器
用于存放內存中要交換的數(shù)據(jù)地址。在DMA傳送前,需通過程序將數(shù)據(jù)在內存中的起始位置(首地址)送到內存地址計數(shù)器。而當DMA傳送時,每交換一次數(shù)據(jù),將地址計數(shù)器加“1”,從而以增量方式給出內存中要交換的一批數(shù)據(jù)的地址。②字計數(shù)器
用于記錄傳送數(shù)據(jù)塊的長度(多少字數(shù))。其內容也是在數(shù)據(jù)傳送之前由程序預置,交換的字數(shù)通常以補碼形式表示。在DMA傳送時,每傳送一個字,字計數(shù)器就加“1”,當計數(shù)器溢出即最高位產生進位時,表示這批數(shù)據(jù)傳送完畢,于是引起DMA控制器向CPU發(fā)出中斷信號。③數(shù)據(jù)緩沖寄存器
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |