第9章 輸入輸出系統(tǒng)_第1頁
第9章 輸入輸出系統(tǒng)_第2頁
第9章 輸入輸出系統(tǒng)_第3頁
第9章 輸入輸出系統(tǒng)_第4頁
第9章 輸入輸出系統(tǒng)_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第9章 輸入/輸出系統(tǒng)v計算機(jī)的基本功能之一是能夠與其他的外部設(shè)備交換信息。但是由于這些設(shè)備具有各自不同的組成結(jié)構(gòu)和工作原理,因此,與中央處理機(jī)的連接方式也各不相同。輸入輸出系統(tǒng)又簡稱為I/O系統(tǒng),其功能是完成計算機(jī)與外部設(shè)備的聯(lián)系。它和整機(jī)的速度、處理能力、實用性、兼容性等各種系統(tǒng)性能都有非常密切的關(guān)系。隨著計算機(jī)應(yīng)用范圍的不斷擴(kuò)大,I/O系統(tǒng)的地位顯得越來越重要。用戶主要是通過外部設(shè)備和主機(jī)交互信息的,因此,了解常用的外部設(shè)備的工作原理十分必要。uI/O系統(tǒng)的任務(wù)和功能u計算機(jī)的I/O方式本章要點:本章要點: v計算機(jī)的輸入輸出系統(tǒng)(I/O系統(tǒng))由I/O接口、I/O管理部件以及有關(guān)的I/O

2、軟件組成,其主要作用是實現(xiàn)計算機(jī)系統(tǒng)的輸入輸出功能。I/O系統(tǒng)具體要解決的問題是:怎樣在主機(jī)和外部設(shè)備之間建立一個高效、可靠的信息傳輸“通路”;如何對外設(shè)進(jìn)行編址,使CPU方便地尋找到要訪問的外設(shè);I/O接口、管理部件如何協(xié)調(diào)完成主機(jī)和外部設(shè)備之間的數(shù)據(jù)交換等等。v9.1 I/O9.1 I/O系統(tǒng)系統(tǒng)v輸入輸出系統(tǒng)的發(fā)展大致可分為四個階段。v1早期階段v早期的I/O設(shè)備種類較少,I/O設(shè)備與主機(jī)交換信息都必須通過CPU。工作模式如圖9-1所示。9.1.1 I/O系統(tǒng)概述系統(tǒng)概述內(nèi)存內(nèi)存CPUCPUI/O圖9-1 I/O通過CPU與主機(jī)交換信息v這種交換方式延續(xù)了相當(dāng)長的時間。當(dāng)時的I/O系統(tǒng)具

3、有以下幾個特點:每個I/O設(shè)備都必須配有一套獨立的邏輯電路與CPU相連,用來實現(xiàn)I/O設(shè)備與主機(jī)交換信息,因此線路十分零散、龐雜;輸入輸出過程是穿插在CPU執(zhí)行程序期間進(jìn)行的,當(dāng)I/O設(shè)備與主機(jī)交換信息時,CPU不得不停止各種運算,因此,I/O設(shè)備與CPU是按串行方式工作的,極大的浪費了CPU的時間;每個I/O設(shè)備的邏輯控制電路與CPU的控制器緊密構(gòu)成一個不可分割的整體,它們彼此依賴,相互牽連,因此,想要增加、刪除或者更換I/O設(shè)備就非常困難。v在這個階段中,計算機(jī)系統(tǒng)硬件價格十分昂貴,機(jī)器速度不高,配置的I/O設(shè)備不多,主機(jī)與I/O設(shè)備交換的信息量也不大,計算機(jī)應(yīng)用的普及程度還比較低。v2接

4、口模塊和DMA階段v在這個階段,I/O設(shè)備通過接口模塊與主機(jī)連接,計算機(jī)系統(tǒng)采用了總線結(jié)構(gòu),工作模式如圖9-2所示。主機(jī)I/O接口外部設(shè)備1外部設(shè)備2外部設(shè)備nI/O接口I/O接口I/O總線圖圖9-2 外部設(shè)備通過外部設(shè)備通過I/O接口和主機(jī)交換信息接口和主機(jī)交換信息 v 通常在接口中都設(shè)有數(shù)據(jù)通路和控制通路。數(shù)據(jù)經(jīng)過接口既起到緩沖作用,又可完成串 并變換或并 串變換。控制通路用以傳送CPU向I/O設(shè)備發(fā)出的各種控制命令,或者使CPU接受來自I/O設(shè)備的反饋信號。許多接口還能滿足中斷請求處理的要求,使得I/O設(shè)備與CPU可按并行方式工作,大大地提高了CPU的工作效率。采用接口技術(shù)還可以使多臺I

5、/O設(shè)備分時占用總線,使得多臺I/O設(shè)備互相之間也可實現(xiàn)并行工作方式,有利于整機(jī)工作效率的提高。v雖然這個階段實現(xiàn)了CPU和I/O設(shè)備并行工作,但是在主機(jī)與I/O設(shè)備交換信息時,CPU要中斷現(xiàn)行程序,即CPU與I/O設(shè)備還不能做到絕對的并行工作。v為了進(jìn)一步提高CPU的工作效率,又出現(xiàn)了DMA(Direct Memory Access)技術(shù),其特點是I/O設(shè)備與主存之間有一條直接數(shù)據(jù)通路,I/O設(shè)備可以與主存直接交換信息,而不需要打斷CPU的工作,故其資源利用率得到了進(jìn)一步的提高。v在小型和微型計算機(jī)中,采用DMA方式可實現(xiàn)高速外設(shè)與主機(jī)成組數(shù)據(jù)的交換,但在大、中型計算機(jī)中,外設(shè)配置繁多,數(shù)據(jù)

6、傳送頻繁,若仍采用DMA方式會出現(xiàn)一系列問題。如果每臺外設(shè)都配置專用的DMA接口,不僅增加了硬件成本,而且為了解決眾多DMA同時訪問主存的沖突問題,使控制變得十分復(fù)雜。CPU需要對眾多的DMA進(jìn)行管理,同樣會占用CPU的工作時間,而且因頻繁地進(jìn)入周期挪用階段,也會直接影響CPU的整體工作效率。3 3具有通道結(jié)構(gòu)的階段v因此在大、中型計算機(jī)系統(tǒng)中,采用了I/O通道的方式來進(jìn)行數(shù)據(jù)交換。v圖9-3表示了具有通道結(jié)構(gòu)的計算機(jī)系統(tǒng)。CPU內(nèi)存內(nèi)存I/O通通道道圖圖9-3 I/O通過通道與主機(jī)交換信息通過通道與主機(jī)交換信息v通道是用來負(fù)責(zé)管理I/O設(shè)備以及實現(xiàn)主存與I/O設(shè)備之間交換信息的部件,可視為一

7、種具有特殊功能的處理器。通道有專用的通道指令,它能獨立地執(zhí)行用通道指令所編寫的輸入輸出程序,但它不是一個完全獨立的處理器,它受CPU的I/O指令啟動、停止或改變其工作狀態(tài),是從屬于CPU的一個專用處理器。依賴通道管理的I/O設(shè)備在與主機(jī)交換信息時,CPU不直接參與管理,故CPU的資源利用率更高。v4具有I/O處理機(jī)的階段v輸入輸出系統(tǒng)發(fā)展到第四階段是具有I/O處理機(jī)的階段。I/O處理機(jī)又叫做外圍處理機(jī)(Peripheral Processor Unit,PPU),它基本獨立于主機(jī)工作,不僅可完成I/O通道要完成的I/O控制,還可完成碼制變換、格式處理、數(shù)據(jù)塊檢錯、糾錯等操作。具有I/O處理機(jī)的

8、輸入輸出系統(tǒng)與CPU工作的并行性更高。這說明I/O系統(tǒng)對主機(jī)來說,具有更大的獨立性。9.1.2 I/O系統(tǒng)組成系統(tǒng)組成I/O接接口口設(shè) 備 控 制 器I/O設(shè)備CPU主 存主 存圖圖9-4 I/O系統(tǒng)的組成系統(tǒng)的組成v外部設(shè)備能夠利用光、電、磁及機(jī)械傳動等手段,把信息轉(zhuǎn)換為二進(jìn)制代碼的形式。v設(shè)備控制器能將設(shè)備生成的各種形式的二進(jìn)制代碼轉(zhuǎn)換成電信號,并根據(jù)輸入信號的要求對設(shè)備進(jìn)行控制。設(shè)備控制器是設(shè)備與計算機(jī)連接的部件,是外部設(shè)備的一個組成部分。vI/O接口負(fù)責(zé)交換主機(jī)和I/O設(shè)備的狀態(tài)信息,使主機(jī)與I/O設(shè)備的速度相匹配,實現(xiàn)主機(jī)與I/O設(shè)備之間的數(shù)據(jù)交換,并且實現(xiàn)數(shù)據(jù)格式的變換。vI/O接

9、口可以分為兩類:串行接口和并行接口。串行接口與I/O設(shè)備之間,按順序逐位傳送信息;接口與主機(jī)之間,按字或字節(jié)并行傳送數(shù)據(jù),數(shù)據(jù)格式的變換在接口內(nèi)部完成。并行接口與I/O設(shè)備之間,或者與主機(jī)之間都是按字或字節(jié)并行傳送數(shù)據(jù)。顯然,并行接口傳輸效率高。目前計算機(jī)的I/O接口正向標(biāo)準(zhǔn)化、通用化和系列化方向發(fā)展。v 思考: 在系統(tǒng)總線和I/O設(shè)備中間為什么要使用I/O接口電路?v由于各種外設(shè)的工作速度相差很大,有些設(shè)備工作速度相當(dāng)高,如當(dāng)前硬盤的內(nèi)部傳輸率達(dá)17.5-66MB/s,而有些外設(shè)卻由于機(jī)械和其他因素所致速度相當(dāng)?shù)?,如鍵盤是用于人工輸入數(shù)據(jù)的,通常速度為幾十毫秒輸入一個字節(jié)。因此,CPU何時從

10、輸入設(shè)備讀取數(shù)據(jù)以及何時往輸出設(shè)備寫入數(shù)據(jù),就成為較復(fù)雜的定時問題。9.2 計算機(jī)計算機(jī)I/O方式方式v計算機(jī)主機(jī)與外設(shè)之間的數(shù)據(jù)傳送方式隨著計算機(jī)技術(shù)的發(fā)展經(jīng)歷了從簡單到復(fù)雜、從低級到高級、從集中管理到分散管理的演變過程。按照I/O管理組織、I/O接口與外設(shè)并行工作的程序方式, 概括起來,可將數(shù)據(jù)傳送方式分為:程序查詢方式、中斷方式、DMA方式。v程序查詢方式是主機(jī)與外設(shè)間進(jìn)行信息交換的最簡單方式,程序查詢方式的核心問題在于需要不斷地查詢I/O設(shè)備是否準(zhǔn)備就緒。v由CPU執(zhí)行一段輸入輸出程序來實現(xiàn)主機(jī)與外設(shè)之間數(shù)據(jù)傳送的方式叫做程序直接控制方式。根據(jù)外設(shè)的不同性質(zhì),這種傳送方式又可分為無條件

11、傳送和程序查詢方式兩種。9.2.1 程序查詢方式程序查詢方式v在無條件傳送方式中,I/O端口總是準(zhǔn)備好接收主機(jī)的輸出數(shù)據(jù),或總是準(zhǔn)備好向主機(jī)輸入數(shù)據(jù),因而CPU無須查詢外設(shè)的工作狀態(tài),而默認(rèn)外設(shè)始終處于準(zhǔn)備就緒狀態(tài)。在CPU認(rèn)為需要時,隨時可直接利用I/O指令訪問相應(yīng)的I/O端口,實現(xiàn)與外設(shè)之間的數(shù)據(jù)交換。這種方式的優(yōu)點是軟、硬件結(jié)構(gòu)都很簡單,但要求時序配合精確,一般的外設(shè)難以滿足要求。所以,只能用于簡單開關(guān)量的輸入輸出控制中,稍復(fù)雜一點的外設(shè)都不采用此種方式。v許多外設(shè)的工作狀態(tài)是很難事先預(yù)知的,比如何時按鍵,打印機(jī)是否能接收新的打印輸出信息等。當(dāng)CPU與外設(shè)工作不同步時,很難確保CPU在執(zhí)

12、行輸入操作時,外設(shè)一定是“準(zhǔn)備好”的;而在執(zhí)行輸出操作時,外設(shè)一定是“緩沖器空”的。為了保證數(shù)據(jù)傳送的正確進(jìn)行,就要求CPU在程序中查詢外設(shè)的工作狀態(tài)。如果外設(shè)尚未準(zhǔn)備就緒,CPU就循環(huán)等待,只有當(dāng)外設(shè)已做好準(zhǔn)備,CPU才能執(zhí)行I/O指令進(jìn)行數(shù)據(jù)傳送,這就是程序查詢方式。v程序查詢方式的工作過程大致為:v(1)預(yù)置傳送參數(shù)。在傳送數(shù)據(jù)之前,由CPU執(zhí)行一段初始化程序,預(yù)置傳送參數(shù)。傳送參數(shù)包括存取數(shù)據(jù)的主存緩沖區(qū)首地址和傳送數(shù)據(jù)的個數(shù)。v(2)向外設(shè)接口發(fā)出命令字。當(dāng)CPU選中某臺外設(shè)時,執(zhí)行輸出指令向外設(shè)接口發(fā)出命令字啟動外設(shè),為接收數(shù)據(jù)或發(fā)送數(shù)據(jù)做應(yīng)有的操作準(zhǔn)備。v(3)從外設(shè)接口取回狀態(tài)

13、字。CPU執(zhí)行輸入指令,從外設(shè)接口中取回狀態(tài)字并進(jìn)行測試,判斷數(shù)據(jù)傳送是否可以進(jìn)行。v(4)查詢外設(shè)狀態(tài)標(biāo)志。CPU不斷查詢狀態(tài)標(biāo)志,如果外設(shè)沒有準(zhǔn)備就緒,CPU就反復(fù)進(jìn)行查詢,一直到這個外設(shè)準(zhǔn)備就緒,并發(fā)出“外設(shè)準(zhǔn)備就緒”信號為止。v(5)傳送數(shù)據(jù)。只有當(dāng)外設(shè)準(zhǔn)備好時,才能實現(xiàn)主機(jī)與外設(shè)間的一次數(shù)據(jù)傳送。輸入時,CPU執(zhí)行輸入指令,從外設(shè)接口的數(shù)據(jù)緩沖寄存器中接收數(shù)據(jù);輸出時,CPU執(zhí)行輸出指令,將數(shù)據(jù)寫入外設(shè)接口的數(shù)據(jù)緩沖寄存器中。v(6)修改傳送參數(shù)。每進(jìn)行一次數(shù)據(jù)傳送之后必須要修改傳送參數(shù),其中包括主存緩沖區(qū)地址加l,傳送個數(shù)計數(shù)器減1。v(7)判斷傳送是否結(jié)束。如果傳送個數(shù)計數(shù)器不為

14、0,則轉(zhuǎn)第(3)步,繼續(xù)傳送,直到傳送個數(shù)計數(shù)器為0,表示傳送結(jié)束。v程序查詢方式的工作流程如圖9-5所示,其程序查詢的核心部分在圖中用虛線框框出,真正傳送數(shù)據(jù)的操作由輸入或輸出指令完成。v程序查詢方式使CPU處于忙等的狀態(tài),不利于CPU資源的充分利用,所以人們提出中斷方式。預(yù)置傳送參數(shù)預(yù)置傳送參數(shù)啟動外設(shè)啟動外設(shè)外設(shè)準(zhǔn)備外設(shè)準(zhǔn)備就緒就緒?傳送一次數(shù)據(jù)傳送一次數(shù)據(jù)修改傳送參數(shù)修改傳送參數(shù)傳 送 完傳 送 完否否?取外設(shè)狀態(tài)取外設(shè)狀態(tài)結(jié)束YYNN圖圖9-5 程序查詢方式流程程序查詢方式流程v在程序查詢方式中使CPU循環(huán)等待,造成了CPU資源的浪費。中斷傳送方式很好地解決了這個問題,在外設(shè)沒有做好

15、數(shù)據(jù)傳送準(zhǔn)備時,CPU可以運行與傳送數(shù)據(jù)無關(guān)的其他指令,外設(shè)做好傳送準(zhǔn)備后,主動向CPU提出申請,若CPU響應(yīng)這一申請,則暫停正在運行的程序,轉(zhuǎn)去執(zhí)行數(shù)據(jù)輸入/輸出操作的指令,數(shù)據(jù)傳送完畢后返回,CPU繼續(xù)執(zhí)行原來運行的程序,這樣使得外設(shè)與CPU可以并行工作,提高了系統(tǒng)的效率。如今,中斷已經(jīng)是現(xiàn)代計算機(jī)普遍采用的一項技術(shù)。9.2.2 中斷方式中斷方式v中斷是指在計算機(jī)中,打斷CPU正在執(zhí)行的程序,而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序,在中斷服務(wù)程序執(zhí)行完畢后,再返回到原程序繼續(xù)執(zhí)行的過程。實現(xiàn)中斷的硬件和軟件所組成的系統(tǒng),就叫中斷系統(tǒng)。計算機(jī)正是依靠中斷系統(tǒng)實現(xiàn)了分時處理、故障處理、實時處理等實際問題

16、。1 1中斷的相關(guān)概念中斷的相關(guān)概念v中斷系統(tǒng)的組成包括:微處理器內(nèi)有中斷的相關(guān)硬件電路,用來接收中斷請求、響應(yīng)請求、保護(hù)現(xiàn)場、轉(zhuǎn)向中斷服務(wù)程序、處理完畢返回等;外圍有與該處理器匹配的中斷控制器即中斷接口,實現(xiàn)管理多個中斷源,完成優(yōu)先級裁決,中斷源屏蔽等功能;此外還包括依據(jù)處理器、控制器的結(jié)構(gòu)編寫的中斷處理程序,系統(tǒng)初始化程序等實現(xiàn)中斷管理的軟件。v中斷系統(tǒng)的功能包括:中斷源的識別、多個中斷源請求時,軟件可禁止與允許每個請求,優(yōu)先級的確定、中斷現(xiàn)場的保存、對中斷請求的分析和處理、中斷返回等。v中斷是由中斷源產(chǎn)生的,一臺計算機(jī)可以有多個中斷源,中斷源向中斷系統(tǒng)發(fā)出請求中斷的申請,多數(shù)具有隨機(jī)性,

17、計算機(jī)為記錄中斷源的來源,對應(yīng)每個中斷源有一個具有存儲功能的中斷請求觸發(fā)器(INTR),當(dāng)某一個中斷源有中斷請求時,它對應(yīng)的中斷請求觸發(fā)器置“1”狀態(tài),表示向CPU發(fā)出了中斷請求信號。在中斷接口電路中,多個中斷觸發(fā)器構(gòu)成中斷寄存器,其內(nèi)容稱為中斷字,記錄中斷源的來源。vCPU在處理一些緊要事件時不允許中斷,因為這類事件執(zhí)行過程中一旦被中斷,將會引起嚴(yán)重后果,為避免中斷請求信號的干擾,設(shè)置了開中斷/關(guān)中斷觸發(fā)器INH,當(dāng)INH置“0”時,中斷源的中斷請求信號被允許進(jìn)入排隊,稱為“開中斷” ;當(dāng)INH置“1”時,所有中斷源發(fā)出的中斷請求被禁止,稱為“關(guān)中斷”。v當(dāng)多個中斷源同時向CPU發(fā)出中斷請求

18、時,CPU首先處理哪個中斷源的請求呢?為了不發(fā)生矛盾,而且處理及時,計算機(jī)將所有中斷源的請求按輕重緩急排序,0級、1級、2級 n級排隊依次處理,保證緊迫程度最高的中斷源的中斷請求排在最前,最快得到CPU的處理。這種中斷處理過程中的優(yōu)先級別,叫做中斷優(yōu)先權(quán)。例如:PC機(jī)的中斷優(yōu)先權(quán)由高到低的順序是:除法錯誤中斷,INT0,INTnNMI(非屏蔽中斷)INTR(外設(shè)中斷)單步中斷。2 2中斷優(yōu)先權(quán)與中斷屏蔽中斷優(yōu)先權(quán)與中斷屏蔽v如何判別設(shè)備中斷的優(yōu)先權(quán)要由中斷判優(yōu)來完成,中斷排隊的目的是為了判優(yōu),中斷判優(yōu)的方法有軟件判優(yōu)法和硬件判優(yōu)法。軟件判優(yōu)是用程序來判別優(yōu)先級,優(yōu)先級高的先查詢,優(yōu)先級低的后查

19、詢,而通過修改程序可以調(diào)整設(shè)備的優(yōu)先級。 v如圖9-6所示,CPU接到中斷請求信號,就執(zhí)行查詢程序,順序檢測中斷請求寄存器的狀態(tài),在識別中斷源的過程中,優(yōu)先級順序已經(jīng)按查詢順序排好,若要改變優(yōu)先級可以通過改變程序查詢順序來完成。1#中斷服務(wù)中斷服務(wù)2#中斷服務(wù)中斷服務(wù)3#中斷服務(wù)中斷服務(wù)1#設(shè)備設(shè)備?2#設(shè)備設(shè)備?3#設(shè)備設(shè)備?YYYNNN 圖9-6 軟件判優(yōu)法 v硬件判優(yōu)是靠硬件電路實現(xiàn)的,一旦電路設(shè)計好,優(yōu)先級就不能更改,成本較高,但速度快,根據(jù)中斷請求信號的傳送方式不同,常見的硬件排隊電路有:獨立請求線的優(yōu)先排隊電路、公共請求線的優(yōu)先排隊電路。公共請求線的排隊電路如圖9-7所示。CPU1

20、#設(shè) 備 接設(shè) 備 接口口2#設(shè) 備 接設(shè) 備 接口口n#設(shè)備接設(shè)備接口口中 斷 請 求中 斷 請 求ARQI/O數(shù)據(jù)總線數(shù)據(jù)總線SYNPOL圖圖9-7 串行順序鏈串行順序鏈識別法識別法v 多重中斷 v多重中斷是指在處理某一中斷過程中,又有比該中斷優(yōu)先級高的中斷請求,于是CPU中斷原中斷服務(wù)程序的執(zhí)行,而又轉(zhuǎn)去執(zhí)行新的中斷服務(wù)程序。這種多重中斷的執(zhí)行形成了中斷嵌套,如圖9-8所示。 K1 K1+1 K2 K2+1 K3 K3+1 原主程序 1#中斷 服務(wù)程序 2#中斷 服務(wù)程序 3#中斷 服務(wù)程序 返回 返回 返回 響應(yīng) 1#請求 2#請求 響應(yīng) 3#請求 響應(yīng) K1+1 PSW1 K2+1

21、PSW2 K3+1 PSW3 堆棧 圖圖9-8 多重中斷多重中斷v中斷屏蔽v當(dāng)多個中斷源發(fā)出中斷請求時,CPU只能響應(yīng)一個中斷,中斷屏蔽可實現(xiàn)部分中斷的封鎖。每個中斷源在配有一個中斷請求觸發(fā)器的同時,配有一個中斷屏蔽觸發(fā)器(MASK),它們成對出現(xiàn),當(dāng)MASK置1時,該中斷源的請求被屏蔽,中斷請求不能進(jìn)入中斷排隊邏輯,進(jìn)行判優(yōu);當(dāng)MASK置0時,該中斷請求被允許,經(jīng)過中斷排隊判優(yōu)后,最終送往CPU。v多個中斷屏蔽觸發(fā)器組成了中斷屏蔽寄存器,其內(nèi)容被稱為屏蔽字。我們可以通過軟件編程改變屏蔽寄存器的某一位,使其置1,從而實現(xiàn)對某個中斷源的屏蔽控制。此外,硬件的中斷排隊電路所決定的中斷響應(yīng)次序是固定

22、的,但通過中斷屏蔽位的控制,決定某級中斷請求能否進(jìn)入中斷排隊器,可以改變中斷響應(yīng)次序。v需要注意的是,這里的中斷屏蔽作用是,是否讓中斷源的請求進(jìn)入排隊邏輯,最終讓CPU接到請求信號,而在CPU內(nèi)部中斷邏輯中,有一個同樣起中斷屏蔽作用的開/關(guān)中斷觸發(fā)器,它的作用是,是否允許CPU接受中斷請求、響應(yīng)中斷。v對中斷請求的整個處理過程是由硬件和軟件結(jié)合起來形成的一套中斷請求機(jī)構(gòu)實施的,一般包括5個步驟,如圖9-9所示。3 3中斷響應(yīng)與中斷處理中斷響應(yīng)與中斷處理中斷源發(fā)出中斷中斷源發(fā)出中斷請求請求中斷判優(yōu)中斷判優(yōu)中斷響應(yīng)中斷響應(yīng)中斷處理中斷處理中斷返回中斷返回圖圖9-9 中斷過程中斷過程v中斷源向CPU

23、發(fā)出中斷請求需要有兩個條件:第一,外設(shè)本身準(zhǔn)備工作完畢;第二,系統(tǒng)允許外設(shè)發(fā)中斷請求,即CPU處于開中斷狀態(tài)。v中斷請求信號經(jīng)過中斷判優(yōu)后,將優(yōu)先權(quán)最高級別的中斷請求送往CPU,CPU收到后,向中斷源發(fā)出響應(yīng)信號,并做出相應(yīng)的響應(yīng)動作。我們把發(fā)生中斷時,CPU暫停執(zhí)行當(dāng)前的程序,而轉(zhuǎn)去處理中斷,CPU對中斷請求做出反應(yīng)的過程,稱為中斷響應(yīng)。v中斷響應(yīng)后進(jìn)入中斷處理階段,即中央處理機(jī)執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序的末尾有一條中斷返回指令,實現(xiàn)中斷完成后恢復(fù)現(xiàn)場,即將中斷響應(yīng)時保存過的程序指令計數(shù)器PC、程序狀態(tài)字寄存器PSW以及某些通用寄存器的內(nèi)容重新取回,CPU返回原程序。v中斷方式很好的解

24、決了程序查詢方式的忙等問題,但如果中斷程序在執(zhí)行過程中外部設(shè)備和主存之間需要進(jìn)行大量的數(shù)據(jù)傳輸,CPU仍需為外部設(shè)備和主存中轉(zhuǎn)這些數(shù)據(jù),中轉(zhuǎn)數(shù)據(jù)傳輸完畢后才可以執(zhí)行中斷返回。為了可以使外部設(shè)備和主存之間直接傳遞數(shù)據(jù),而不需要CPU的參與,從而節(jié)約CPU資源,人們又進(jìn)一步提出DMA方式。vDMA方式即直接存儲器訪問(Direct Memory Access)方式,是為了在主存與外設(shè)之間實現(xiàn)高速、批量數(shù)據(jù)交換而設(shè)置的。DMA方式的數(shù)據(jù)傳送直接依靠硬件(DMA控制器)來實現(xiàn),不需要執(zhí)行任何程序。v無論程序查詢還是程序中斷方式,主要的工作都是由CPU執(zhí)行程序完成的,這需要花費時間,因此不能實現(xiàn)高速外設(shè)

25、與主機(jī)的信息交換。9.2.3 DMA方式方式vDMA方式是在外設(shè)和主存之間開辟一條“直接數(shù)據(jù)通道”,在不需要CPU干預(yù)也不需要軟件介入的情況下在兩者之間進(jìn)行的高速數(shù)據(jù)傳送方式。在DMA傳送方式中,對數(shù)據(jù)傳送過程進(jìn)行控制的硬件稱為DMA控制器。當(dāng)外設(shè)需要進(jìn)行數(shù)據(jù)傳送時,通過DMA控制器向CPU提出DMA傳送請求,CPU響應(yīng)之后將讓出系統(tǒng)總線,由DMA控制器接管總線進(jìn)行數(shù)據(jù)傳送。vDMA和中斷的有很多不同,中斷方式是程序切換,需要保護(hù)和恢復(fù)現(xiàn)場;而DMA方式除了開始和結(jié)尾時,不占用CPU的任何資源;對中斷請求的響應(yīng)時間只能發(fā)生在每條指令執(zhí)行完畢時;而對DMA請求的響應(yīng)時間可以發(fā)生在每個機(jī)器周期結(jié)束

26、時,如圖8-10所示;中斷傳送過程需要CPU的干預(yù),而DMA傳送過程不需要CPU的干預(yù),所以數(shù)據(jù)傳輸速率非常高,適合于高速外設(shè)的成組數(shù)據(jù)傳送;DMA請求的優(yōu)先級高于中斷請求;中斷方式具有對異常事件的處理能力,而DMA方式僅局限于完成傳送數(shù)據(jù)塊的I/O操作。取指令取指令取源操作數(shù)取源操作數(shù)取目的操作數(shù)取目的操作數(shù)執(zhí)行執(zhí)行DMA斷點斷點圖圖9-10 兩種請求的響應(yīng)時刻比較兩種請求的響應(yīng)時刻比較vDMA方式一般應(yīng)用于主存與高速外設(shè)間的簡單數(shù)據(jù)傳送。高速外設(shè)如磁盤、磁帶、光盤等輔助存儲器以及其他帶有局部存儲器的外設(shè)、通信設(shè)備等。v對磁盤的讀寫是以數(shù)據(jù)塊為單位進(jìn)行的,一旦找到數(shù)據(jù)塊起始位置,就將連續(xù)地讀

27、寫。找到數(shù)據(jù)塊起始位置的時間是隨機(jī)的,相應(yīng)地,接口何時具備數(shù)據(jù)傳送條件也是隨機(jī)的。由于磁盤讀寫速度較快,在連續(xù)讀寫過程中不允許CPU花費過多的時間,因此,從磁盤中讀出數(shù)據(jù)或往磁盤中寫人數(shù)據(jù)時,一般采用DMA方式傳送,即直接將數(shù)據(jù)由主存經(jīng)數(shù)據(jù)總線輸出到磁盤接口,然后寫入盤片;或?qū)?shù)據(jù)由盤片讀出到磁盤接口,然后經(jīng)數(shù)據(jù)總線寫入主存。v當(dāng)計算機(jī)系統(tǒng)通過通信設(shè)備與外部通信時,常以數(shù)據(jù)塊為單位進(jìn)行批量傳送。開始通信后,常以較快的數(shù)據(jù)傳輸速率連續(xù)傳送,因此,適于采用DMA方式。在不通信時,CPU可以照常執(zhí)行程序;在通信過程中僅需占用系統(tǒng)總線,系統(tǒng)開銷很少。v在大批量數(shù)據(jù)采集系統(tǒng)中,也可以采用DMA方式。v許

28、多計算機(jī)系統(tǒng)中選用動態(tài)存儲器DRAM,并用異步方式安排刷新周期。刷新請求的提出,對主機(jī)來說是隨機(jī)的。DRAM的刷新操作可視為存儲器內(nèi)部的數(shù)據(jù)批量傳送,因此,也可采用DMA方式實現(xiàn),將每次刷新請求當(dāng)成DMA請求。CPU在刷新周期中讓出系統(tǒng)總線,按行地址(刷新地址)訪問主存,實現(xiàn)各芯片中的一行刷新。利用系統(tǒng)的DMA機(jī)制實現(xiàn)動態(tài)刷新,簡化了專門的動態(tài)刷新邏輯,提高了主存的利用率。vDMA傳送是直接依靠硬件實現(xiàn)的,可用于快速的數(shù)據(jù)直傳。也正是由于這一點,DMA方式本身不能處理較復(fù)雜的事件。因此,在某些場合常綜合應(yīng)用DMA方式與程序中斷方式,二者互為補(bǔ)充。vDMA接口相對于查詢式接口和中斷式接口來說比較

29、復(fù)雜,習(xí)慣上將DMA方式的接口電路稱為DMA控制器。在DMA傳送過程中,DMA控制器將接管CPU的地址總線、數(shù)據(jù)總線和控制總線,CPU的主存控制信號被禁止使用。而當(dāng)DMA傳送結(jié)束后,將恢復(fù)CPU的一切權(quán)力并開始執(zhí)行其操作。由此可見,DMA控制器必須具有控制系統(tǒng)總線的能力,即能夠像CPU一樣輸出地址信號,接收或發(fā)出控制信號,輸入或輸出數(shù)據(jù)信號。vDMA控制器在外設(shè)與主存之間直接傳送數(shù)據(jù)期間,完全代替CPU進(jìn)行工作。v圖9-11給出了一個簡單的DMA控制器框圖,它由以下幾部分組成v(1)主存地址計數(shù)器:用來存放待交換數(shù)據(jù)的主存地址。該計數(shù)器的初始值為主存緩沖區(qū)的首地址,當(dāng)DMA傳送時,每傳送一個數(shù)

30、據(jù),將地址計數(shù)器加“1”,從而以增量方式給出主存中要交換的一批數(shù)據(jù)的地址,直至這批數(shù)據(jù)傳送完畢為止。v(2)傳送長度計數(shù)器:用來記錄傳送數(shù)據(jù)塊的長度。其初始值為傳送數(shù)據(jù)的總字?jǐn)?shù)或總字節(jié)數(shù),每傳送一個字或一個字節(jié),計數(shù)器自動減“1”,當(dāng)其內(nèi)容為0時表示數(shù)據(jù)已全部傳送完畢。也有些DMA控制器中,初始時將字?jǐn)?shù)或字節(jié)數(shù)求補(bǔ)之后送計數(shù)器,每傳送一個字或一個字節(jié),計數(shù)器加“1”,當(dāng)計數(shù)器溢出時,表示數(shù)據(jù)傳送完畢。v(3)數(shù)據(jù)緩沖寄存器:用來暫存每次傳送的數(shù)據(jù)。輸人時,數(shù)據(jù)由外設(shè)(如磁盤)先送往數(shù)據(jù)緩沖寄存器,再通過數(shù)據(jù)總線送到主存。反之,輸出時,數(shù)據(jù)由主存通過數(shù)據(jù)總線送到數(shù)據(jù)緩沖寄存器,然后再送到外設(shè)。v

31、(4)DMA請求觸發(fā)器:每當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)后給出一個控制信號,使DMA請求觸發(fā)器置位。v(5)控制狀態(tài)邏輯:它由控制和時序電路以及狀態(tài)標(biāo)志等組成,用于指定傳送方向,修改傳送參數(shù)DMA請求信號和CPU響應(yīng)信號進(jìn)行協(xié)調(diào)和同步。v(6)中斷機(jī)構(gòu):當(dāng)一個數(shù)據(jù)塊傳送完畢后觸發(fā)中斷機(jī)構(gòu),向CPU提出中斷請求,CPU將進(jìn)行DMA傳送的結(jié)尾處理。主存主存CPU中斷機(jī)構(gòu)中斷機(jī)構(gòu)設(shè)備選擇設(shè)備選擇設(shè)備設(shè)備控制控制/狀態(tài)邏輯狀態(tài)邏輯D M A 請請求觸發(fā)器求觸發(fā)器主存地址計數(shù)主存地址計數(shù)器器傳送長度計數(shù)傳送長度計數(shù)器器數(shù)據(jù)緩沖寄存數(shù)據(jù)緩沖寄存器器HRQHLDADMAC控制線控制線中斷請求中斷請求溢出信號溢出信號數(shù)據(jù)線

32、數(shù)據(jù)線地址線地址線+1系統(tǒng)總線系統(tǒng)總線圖圖9-11 簡單的簡單的DMA控制器控制器vDMA控制器必須有以下總線:v地址總線:在DMA方式下,呈輸出狀態(tài),可對主存進(jìn)行地址選擇;在CPU方式下,呈輸入狀態(tài)可對DMA控制器中的有關(guān)寄存器進(jìn)行尋址。v數(shù)據(jù)總線:在DMA方式下,用它進(jìn)行數(shù)據(jù)傳送,在CPU方式下,可對DMA控制器的有關(guān)寄存器進(jìn)行編程。v控制數(shù)據(jù)傳送方式的信號線:當(dāng)數(shù)據(jù)從外設(shè)寫入主存時,存儲器寫信號和外設(shè)讀信號同時有效;而當(dāng)數(shù)據(jù)從主存讀出送外設(shè)時,存儲器讀信號和外設(shè)寫信號將同時有效。vDMA控制器與外設(shè)之間的聯(lián)絡(luò)信號線:DMA請求信號DREQ(輸入)是外設(shè)向DMA控制器提出DMA操作的申請信

33、號;DMA響應(yīng)信號DACK(輸出)是DMA控制器向提出DMA請求的外設(shè)表示的應(yīng)答信號。vDMA控制器與CPU之間的聯(lián)絡(luò)信號線:總線請求HRQ(輸出)是DMA控制器向CPU請求讓出總線的信號;總線響應(yīng)信號HLDA(輸人)是CPU向DMA控制器表示響應(yīng)總線請求的信號。 vDMA控制器利用這些總線與CPU、主存及外設(shè)之間進(jìn)行連接。圖9-12給出了DMA控制器與CPU、主存及外設(shè)之間的連接框圖。在進(jìn)行DMA操作之前應(yīng)先對DMA控制器編程。比如,確定傳送數(shù)據(jù)的主存起始地址、要傳送的字節(jié)數(shù)以及傳送方式,是由外設(shè)將數(shù)據(jù)寫入主存還是從主存將數(shù)據(jù)讀出送外設(shè)。主存CPUDMA控制器外設(shè)HRQHLDADREQDAC

34、K數(shù)據(jù)線地址總線數(shù)據(jù)總線圖9-12 DMA控制器的連接MEMRMEMWv下面以外設(shè)將一個數(shù)據(jù)塊寫入主存的操作為例,簡述DMA控制器的操作過程。v(1)由外設(shè)向DMA控制器發(fā)出請求信號DREQ。v(2)DMA控制器向CPU發(fā)出總線請求信號HRQ。v(3)CPU向DMA控制器發(fā)出總線響應(yīng)信號HLDA,此時,DMA控制器獲取了總線的控制權(quán)。v(4)DMA控制器向外設(shè)發(fā)出DMA響應(yīng)信號DACK,表示DMA控制器已控制了總線,允許外設(shè)與主存交換數(shù)據(jù)。v(5)DMA控制器按主存地址計數(shù)器的內(nèi)容發(fā)出地址信號作為主存地址的選擇,同時主存地址計數(shù)器的內(nèi)容加1。v(6)DMA控制器發(fā)出信號到外設(shè),將外設(shè)數(shù)據(jù)讀入總

35、線,同時發(fā)出信號,將數(shù)據(jù)總線的數(shù)據(jù)寫入地址總線選中的主存單元。v(7)傳送長度計數(shù)器減1。v(8)判斷字節(jié)計數(shù)器是否減到0,如果字節(jié)計數(shù)器不為0,跳轉(zhuǎn)到步驟(5),如果字節(jié)計數(shù)器為0,數(shù)據(jù)塊的DMA方式傳送工作完成。這時,DMA控制器的HRQ降為低電平,總線控制權(quán)交還CPU。vDMA控制器與CPU通常采用三種方法使用主存,即CPU停止訪問主存法、存儲器分時法和周期挪用法。vCPU停止訪問主存法是最簡單的DMA方法。這種方法是用DMA請求信號迫使CPU讓出總線控制權(quán)。CPU在現(xiàn)行機(jī)器周期執(zhí)行完成之后,使其數(shù)據(jù)、地址總線處于三態(tài),并輸出總線批準(zhǔn)信號。每次DMA請求獲得批準(zhǔn),DMA控制器獲得總線控制

36、權(quán)以后,連續(xù)占用若干個存取周期(總線周期)進(jìn)行成組連續(xù)的數(shù)據(jù)傳送,直至批量傳送結(jié)束,DMA控制器才把總線控制權(quán)交回CPU。在DMA操作期間,CPU處于保持狀態(tài),停止訪問主存,僅能進(jìn)行一些與總線無關(guān)的內(nèi)部操作。圖9-13(a)是這種傳送方法的時間圖。這種方法只適用于高速外設(shè)的成組傳送。v當(dāng)外設(shè)的數(shù)據(jù)傳輸率接近于主存工作速度時,或CPU除了等待DMA傳送結(jié)束而并無其它工作可做(例如單用戶狀態(tài)下的個人計算機(jī))時,常采用這種方法。這樣可以減少系統(tǒng)總線控制權(quán)的交換次數(shù),有利于提高輸入輸出的速度。v采用存儲器分時法時,把原來的一個存取周期分成兩個時間片,一片分給CPU,一片分給DMA,使CPU和DMA交替

37、地訪問主存。 v這種方法無須申請和歸還總線,使總線控制權(quán)的轉(zhuǎn)移幾乎無需浪費時間,因此DMA傳送的效率很高,同時CPU不停止現(xiàn)行程序的運行,也不進(jìn)入保持狀態(tài),在很短的時間內(nèi)便進(jìn)行了DMA傳送;但這種方法需要主存在原來的存取周期內(nèi)為兩個部件服務(wù),如果要維持CPU的訪存速度不變,就要求主存的工作速度提高一倍。另外,由于大多數(shù)外設(shè)的速度都不能與CPU相匹配,所以供DMA使用的時間片可能成為空操作,將會造成一些不必要的浪費。圖9-13(b)是這種方法的時間圖。 v周期挪用法是前兩種方法的折衷。當(dāng)外設(shè)沒有DMA請求時,CPU按程序要求訪問主存。一旦外設(shè)有DMA請求并獲得CPU批準(zhǔn)后,CPU讓出一個周期的總

38、線控制權(quán),由DMA控制器控制系統(tǒng)總線,挪用一個存取周期進(jìn)行一次數(shù)據(jù)傳送,傳送一個字節(jié)或一個字。然后,DMA控制器將總線控制權(quán)交回CPU,CPU繼續(xù)進(jìn)行自己的操作,等待下一個DMA請求的到來。重復(fù)上述過程,直至數(shù)據(jù)塊傳送完畢。如果在同一時刻,發(fā)生CPU與DMA的訪存沖突,那么優(yōu)先保證DMA工作,而CPU等待一個存取周期;若DMA傳送期間CPU無須訪存,則周期挪用對CPU執(zhí)行程序無任何影響。如圖9-13(c)所示。DMA不工作不工作DMA不工作不工作CPU控制并使用主控制并使用主存存DMA控制并使用主控制并使用主存存主存工作時間主存工作時間CPU控制并使用主控制并使用主存存DMA控制并使用主控制并

39、使用主存存主存工作時間主存工作時間CPU控制并使用主控制并使用主存存DMA控制并使用主控制并使用主存存主存工作時間主存工作時間(a)(b)(c)圖圖9-13 DMA傳傳送方法送方法v當(dāng)主存工作速度高出外設(shè)較多時,采用周期挪用法可以提高主存的利用率,且對CPU的影響較小,因此,高速主機(jī)系統(tǒng)常采用這種方法。根據(jù)主存的存取周期與磁盤的數(shù)據(jù)傳輸率,可以計算出主存操作時間的分配情況:有多少時間需用于DMA傳送(被挪用),有多少時間可用于CPU訪存。這在一定程度上反映了系統(tǒng)的處理效率。vDMA的傳送過程可分為三個階段:DMA傳送前的預(yù)處理、數(shù)據(jù)傳送和傳送后的結(jié)束處理。v在DMA傳送之前必須要做準(zhǔn)備工作,即初始化。這是由CPU來完成的。CPU首先執(zhí)行幾條I/O指令,用于測試外設(shè)的狀態(tài)、向DMA控制器的有關(guān)寄存器置初值、設(shè)置傳送方向和啟動該外部設(shè)備等。v 在這些工作完成之后,CPU繼續(xù)執(zhí)行原來的程序,在外設(shè)準(zhǔn)備好發(fā)送的數(shù)據(jù)(輸入)或接收的數(shù)據(jù)已處理完畢(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論