版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章輸入/輸出系統(tǒng)計(jì)算機(jī)的基本功能之一是能夠與其他的外部設(shè)備交換信息。但是由于這些設(shè)備具有各自不同的組成結(jié)構(gòu)和工作原理,因此,與中央處理機(jī)的連接方式也各不相同。輸入輸出系統(tǒng)又簡稱為I/O系統(tǒng),其功能是完成計(jì)算機(jī)與外部設(shè)備的聯(lián)系。它和整機(jī)的速度、處理能力、實(shí)用性、兼容性等各種系統(tǒng)性能都有非常密切的關(guān)系。隨著計(jì)算機(jī)應(yīng)用范圍的不斷擴(kuò)大,I/O系統(tǒng)的地位顯得越來越重要。用戶主要是通過外部設(shè)備和主機(jī)交互信息的,因此,了解常用的外部設(shè)備的工作原理十分必要。I/O系統(tǒng)的任務(wù)和功能計(jì)算機(jī)的I/O方式本章要點(diǎn):
計(jì)算機(jī)的輸入輸出系統(tǒng)(I/O系統(tǒng))由I/O接口、I/O管理部件以及有關(guān)的I/O軟件組成,其主要作用是實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的輸入輸出功能。I/O系統(tǒng)具體要解決的問題是:怎樣在主機(jī)和外部設(shè)備之間建立一個(gè)高效、可靠的信息傳輸“通路”;如何對(duì)外設(shè)進(jìn)行編址,使CPU方便地尋找到要訪問的外設(shè);I/O接口、管理部件如何協(xié)調(diào)完成主機(jī)和外部設(shè)備之間的數(shù)據(jù)交換等等。9.1I/O系統(tǒng)輸入輸出系統(tǒng)的發(fā)展大致可分為四個(gè)階段。1.早期階段早期的I/O設(shè)備種類較少,I/O設(shè)備與主機(jī)交換信息都必須通過CPU。工作模式如圖9-1所示。9.1.1I/O系統(tǒng)概述內(nèi)存CPUI/O圖9-1I/O通過CPU與主機(jī)交換信息這種交換方式延續(xù)了相當(dāng)長的時(shí)間。當(dāng)時(shí)的I/O系統(tǒng)具有以下幾個(gè)特點(diǎn):每個(gè)I/O設(shè)備都必須配有一套獨(dú)立的邏輯電路與CPU相連,用來實(shí)現(xiàn)I/O設(shè)備與主機(jī)交換信息,因此線路十分零散、龐雜;輸入輸出過程是穿插在CPU執(zhí)行程序期間進(jìn)行的,當(dāng)I/O設(shè)備與主機(jī)交換信息時(shí),CPU不得不停止各種運(yùn)算,因此,I/O設(shè)備與CPU是按串行方式工作的,極大的浪費(fèi)了CPU的時(shí)間;每個(gè)I/O設(shè)備的邏輯控制電路與CPU的控制器緊密構(gòu)成一個(gè)不可分割的整體,它們彼此依賴,相互牽連,因此,想要增加、刪除或者更換I/O設(shè)備就非常困難。在這個(gè)階段中,計(jì)算機(jī)系統(tǒng)硬件價(jià)格十分昂貴,機(jī)器速度不高,配置的I/O設(shè)備不多,主機(jī)與I/O設(shè)備交換的信息量也不大,計(jì)算機(jī)應(yīng)用的普及程度還比較低。2.接口模塊和DMA階段在這個(gè)階段,I/O設(shè)備通過接口模塊與主機(jī)連接,計(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è)備通過I/O接口和主機(jī)交換信息
通常在接口中都設(shè)有數(shù)據(jù)通路和控制通路。數(shù)據(jù)經(jīng)過接口既起到緩沖作用,又可完成串—并變換或并—串變換??刂仆酚靡詡魉虲PU向I/O設(shè)備發(fā)出的各種控制命令,或者使CPU接受來自I/O設(shè)備的反饋信號(hào)。許多接口還能滿足中斷請求處理的要求,使得I/O設(shè)備與CPU可按并行方式工作,大大地提高了CPU的工作效率。采用接口技術(shù)還可以使多臺(tái)I/O設(shè)備分時(shí)占用總線,使得多臺(tái)I/O設(shè)備互相之間也可實(shí)現(xiàn)并行工作方式,有利于整機(jī)工作效率的提高。雖然這個(gè)階段實(shí)現(xiàn)了CPU和I/O設(shè)備并行工作,但是在主機(jī)與I/O設(shè)備交換信息時(shí),CPU要中斷現(xiàn)行程序,即CPU與I/O設(shè)備還不能做到絕對(duì)的并行工作。為了進(jìn)一步提高CPU的工作效率,又出現(xiàn)了DMA(DirectMemoryAccess)技術(shù),其特點(diǎn)是I/O設(shè)備與主存之間有一條直接數(shù)據(jù)通路,I/O設(shè)備可以與主存直接交換信息,而不需要打斷CPU的工作,故其資源利用率得到了進(jìn)一步的提高。在小型和微型計(jì)算機(jī)中,采用DMA方式可實(shí)現(xiàn)高速外設(shè)與主機(jī)成組數(shù)據(jù)的交換,但在大、中型計(jì)算機(jī)中,外設(shè)配置繁多,數(shù)據(jù)傳送頻繁,若仍采用DMA方式會(huì)出現(xiàn)一系列問題。如果每臺(tái)外設(shè)都配置專用的DMA接口,不僅增加了硬件成本,而且為了解決眾多DMA同時(shí)訪問主存的沖突問題,使控制變得十分復(fù)雜。CPU需要對(duì)眾多的DMA進(jìn)行管理,同樣會(huì)占用CPU的工作時(shí)間,而且因頻繁地進(jìn)入周期挪用階段,也會(huì)直接影響CPU的整體工作效率。3.具有通道結(jié)構(gòu)的階段因此在大、中型計(jì)算機(jī)系統(tǒng)中,采用了I/O通道的方式來進(jìn)行數(shù)據(jù)交換。圖9-3表示了具有通道結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)。CPU內(nèi)存I/O通道圖9-3I/O通過通道與主機(jī)交換信息通道是用來負(fù)責(zé)管理I/O設(shè)備以及實(shí)現(xiàn)主存與I/O設(shè)備之間交換信息的部件,可視為一種具有特殊功能的處理器。通道有專用的通道指令,它能獨(dú)立地執(zhí)行用通道指令所編寫的輸入輸出程序,但它不是一個(gè)完全獨(dú)立的處理器,它受CPU的I/O指令啟動(dòng)、停止或改變其工作狀態(tài),是從屬于CPU的一個(gè)專用處理器。依賴通道管理的I/O設(shè)備在與主機(jī)交換信息時(shí),CPU不直接參與管理,故CPU的資源利用率更高。4.具有I/O處理機(jī)的階段輸入輸出系統(tǒng)發(fā)展到第四階段是具有I/O處理機(jī)的階段。I/O處理機(jī)又叫做外圍處理機(jī)(PeripheralProcessorUnit,PPU),它基本獨(dú)立于主機(jī)工作,不僅可完成I/O通道要完成的I/O控制,還可完成碼制變換、格式處理、數(shù)據(jù)塊檢錯(cuò)、糾錯(cuò)等操作。具有I/O處理機(jī)的輸入輸出系統(tǒng)與CPU工作的并行性更高。這說明I/O系統(tǒng)對(duì)主機(jī)來說,具有更大的獨(dú)立性。9.1.2I/O系統(tǒng)組成I/O接口設(shè)備控制器 I/O設(shè)備CPU主存圖9-4I/O系統(tǒng)的組成外部設(shè)備能夠利用光、電、磁及機(jī)械傳動(dòng)等手段,把信息轉(zhuǎn)換為二進(jìn)制代碼的形式。設(shè)備控制器能將設(shè)備生成的各種形式的二進(jìn)制代碼轉(zhuǎn)換成電信號(hào),并根據(jù)輸入信號(hào)的要求對(duì)設(shè)備進(jìn)行控制。設(shè)備控制器是設(shè)備與計(jì)算機(jī)連接的部件,是外部設(shè)備的一個(gè)組成部分。I/O接口負(fù)責(zé)交換主機(jī)和I/O設(shè)備的狀態(tài)信息,使主機(jī)與I/O設(shè)備的速度相匹配,實(shí)現(xiàn)主機(jī)與I/O設(shè)備之間的數(shù)據(jù)交換,并且實(shí)現(xiàn)數(shù)據(jù)格式的變換。I/O接口可以分為兩類:串行接口和并行接口。串行接口與I/O設(shè)備之間,按順序逐位傳送信息;接口與主機(jī)之間,按字或字節(jié)并行傳送數(shù)據(jù),數(shù)據(jù)格式的變換在接口內(nèi)部完成。并行接口與I/O設(shè)備之間,或者與主機(jī)之間都是按字或字節(jié)并行傳送數(shù)據(jù)。顯然,并行接口傳輸效率高。目前計(jì)算機(jī)的I/O接口正向標(biāo)準(zhǔn)化、通用化和系列化方向發(fā)展。
思考:
在系統(tǒng)總線和I/O設(shè)備中間為什么要使用I/O接口電路?由于各種外設(shè)的工作速度相差很大,有些設(shè)備工作速度相當(dāng)高,如當(dāng)前硬盤的內(nèi)部傳輸率達(dá)17.5-66MB/s,而有些外設(shè)卻由于機(jī)械和其他因素所致速度相當(dāng)?shù)?,如鍵盤是用于人工輸入數(shù)據(jù)的,通常速度為幾十毫秒輸入一個(gè)字節(jié)。因此,CPU何時(shí)從輸入設(shè)備讀取數(shù)據(jù)以及何時(shí)往輸出設(shè)備寫入數(shù)據(jù),就成為較復(fù)雜的定時(shí)問題。9.2計(jì)算機(jī)I/O方式計(jì)算機(jī)主機(jī)與外設(shè)之間的數(shù)據(jù)傳送方式隨著計(jì)算機(jī)技術(shù)的發(fā)展經(jīng)歷了從簡單到復(fù)雜、從低級(jí)到高級(jí)、從集中管理到分散管理的演變過程。按照I/O管理組織、I/O接口與外設(shè)并行工作的程序方式,概括起來,可將數(shù)據(jù)傳送方式分為:程序查詢方式、中斷方式、DMA方式。程序查詢方式是主機(jī)與外設(shè)間進(jìn)行信息交換的最簡單方式,程序查詢方式的核心問題在于需要不斷地查詢I/O設(shè)備是否準(zhǔn)備就緒。由CPU執(zhí)行一段輸入輸出程序來實(shí)現(xiàn)主機(jī)與外設(shè)之間數(shù)據(jù)傳送的方式叫做程序直接控制方式。根據(jù)外設(shè)的不同性質(zhì),這種傳送方式又可分為無條件傳送和程序查詢方式兩種。9.2.1程序查詢方式在無條件傳送方式中,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)為需要時(shí),隨時(shí)可直接利用I/O指令訪問相應(yīng)的I/O端口,實(shí)現(xiàn)與外設(shè)之間的數(shù)據(jù)交換。這種方式的優(yōu)點(diǎn)是軟、硬件結(jié)構(gòu)都很簡單,但要求時(shí)序配合精確,一般的外設(shè)難以滿足要求。所以,只能用于簡單開關(guān)量的輸入輸出控制中,稍復(fù)雜一點(diǎn)的外設(shè)都不采用此種方式。許多外設(shè)的工作狀態(tài)是很難事先預(yù)知的,比如何時(shí)按鍵,打印機(jī)是否能接收新的打印輸出信息等。當(dāng)CPU與外設(shè)工作不同步時(shí),很難確保CPU在執(zhí)行輸入操作時(shí),外設(shè)一定是“準(zhǔn)備好”的;而在執(zhí)行輸出操作時(shí),外設(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ù)傳送,這就是程序查詢方式。程序查詢方式的工作過程大致為:(1)預(yù)置傳送參數(shù)。在傳送數(shù)據(jù)之前,由CPU執(zhí)行一段初始化程序,預(yù)置傳送參數(shù)。傳送參數(shù)包括存取數(shù)據(jù)的主存緩沖區(qū)首地址和傳送數(shù)據(jù)的個(gè)數(shù)。(2)向外設(shè)接口發(fā)出命令字。當(dāng)CPU選中某臺(tái)外設(shè)時(shí),執(zhí)行輸出指令向外設(shè)接口發(fā)出命令字啟動(dòng)外設(shè),為接收數(shù)據(jù)或發(fā)送數(shù)據(jù)做應(yīng)有的操作準(zhǔn)備。(3)從外設(shè)接口取回狀態(tài)字。CPU執(zhí)行輸入指令,從外設(shè)接口中取回狀態(tài)字并進(jìn)行測試,判斷數(shù)據(jù)傳送是否可以進(jìn)行。(4)查詢外設(shè)狀態(tài)標(biāo)志。CPU不斷查詢狀態(tài)標(biāo)志,如果外設(shè)沒有準(zhǔn)備就緒,CPU就反復(fù)進(jìn)行查詢,一直到這個(gè)外設(shè)準(zhǔn)備就緒,并發(fā)出“外設(shè)準(zhǔn)備就緒”信號(hào)為止。(5)傳送數(shù)據(jù)。只有當(dāng)外設(shè)準(zhǔn)備好時(shí),才能實(shí)現(xiàn)主機(jī)與外設(shè)間的一次數(shù)據(jù)傳送。輸入時(shí),CPU執(zhí)行輸入指令,從外設(shè)接口的數(shù)據(jù)緩沖寄存器中接收數(shù)據(jù);輸出時(shí),CPU執(zhí)行輸出指令,將數(shù)據(jù)寫入外設(shè)接口的數(shù)據(jù)緩沖寄存器中。(6)修改傳送參數(shù)。每進(jìn)行一次數(shù)據(jù)傳送之后必須要修改傳送參數(shù),其中包括主存緩沖區(qū)地址加l,傳送個(gè)數(shù)計(jì)數(shù)器減1。(7)判斷傳送是否結(jié)束。如果傳送個(gè)數(shù)計(jì)數(shù)器不為0,則轉(zhuǎn)第(3)步,繼續(xù)傳送,直到傳送個(gè)數(shù)計(jì)數(shù)器為0,表示傳送結(jié)束。程序查詢方式的工作流程如圖9-5所示,其程序查詢的核心部分在圖中用虛線框框出,真正傳送數(shù)據(jù)的操作由輸入或輸出指令完成。程序查詢方式使CPU處于忙等的狀態(tài),不利于CPU資源的充分利用,所以人們提出中斷方式。預(yù)置傳送參數(shù)啟動(dòng)外設(shè)外設(shè)準(zhǔn)備就緒?傳送一次數(shù)據(jù)修改傳送參數(shù)傳送完否?取外設(shè)狀態(tài)結(jié)束YYNN圖9-5程序查詢方式流程在程序查詢方式中使CPU循環(huán)等待,造成了CPU資源的浪費(fèi)。中斷傳送方式很好地解決了這個(gè)問題,在外設(shè)沒有做好數(shù)據(jù)傳送準(zhǔn)備時(shí),CPU可以運(yùn)行與傳送數(shù)據(jù)無關(guān)的其他指令,外設(shè)做好傳送準(zhǔn)備后,主動(dòng)向CPU提出申請,若CPU響應(yīng)這一申請,則暫停正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行數(shù)據(jù)輸入/輸出操作的指令,數(shù)據(jù)傳送完畢后返回,CPU繼續(xù)執(zhí)行原來運(yùn)行的程序,這樣使得外設(shè)與CPU可以并行工作,提高了系統(tǒng)的效率。如今,中斷已經(jīng)是現(xiàn)代計(jì)算機(jī)普遍采用的一項(xiàng)技術(shù)。9.2.2中斷方式中斷是指在計(jì)算機(jī)中,打斷CPU正在執(zhí)行的程序,而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序,在中斷服務(wù)程序執(zhí)行完畢后,再返回到原程序繼續(xù)執(zhí)行的過程。實(shí)現(xiàn)中斷的硬件和軟件所組成的系統(tǒng),就叫中斷系統(tǒng)。計(jì)算機(jī)正是依靠中斷系統(tǒng)實(shí)現(xiàn)了分時(shí)處理、故障處理、實(shí)時(shí)處理等實(shí)際問題。1.中斷的相關(guān)概念中斷系統(tǒng)的組成包括:微處理器內(nèi)有中斷的相關(guān)硬件電路,用來接收中斷請求、響應(yīng)請求、保護(hù)現(xiàn)場、轉(zhuǎn)向中斷服務(wù)程序、處理完畢返回等;外圍有與該處理器匹配的中斷控制器即中斷接口,實(shí)現(xiàn)管理多個(gè)中斷源,完成優(yōu)先級(jí)裁決,中斷源屏蔽等功能;此外還包括依據(jù)處理器、控制器的結(jié)構(gòu)編寫的中斷處理程序,系統(tǒng)初始化程序等實(shí)現(xiàn)中斷管理的軟件。中斷系統(tǒng)的功能包括:中斷源的識(shí)別、多個(gè)中斷源請求時(shí),軟件可禁止與允許每個(gè)請求,優(yōu)先級(jí)的確定、中斷現(xiàn)場的保存、對(duì)中斷請求的分析和處理、中斷返回等。中斷是由中斷源產(chǎn)生的,一臺(tái)計(jì)算機(jī)可以有多個(gè)中斷源,中斷源向中斷系統(tǒng)發(fā)出請求中斷的申請,多數(shù)具有隨機(jī)性,計(jì)算機(jī)為記錄中斷源的來源,對(duì)應(yīng)每個(gè)中斷源有一個(gè)具有存儲(chǔ)功能的中斷請求觸發(fā)器(INTR),當(dāng)某一個(gè)中斷源有中斷請求時(shí),它對(duì)應(yīng)的中斷請求觸發(fā)器置“1”狀態(tài),表示向CPU發(fā)出了中斷請求信號(hào)。在中斷接口電路中,多個(gè)中斷觸發(fā)器構(gòu)成中斷寄存器,其內(nèi)容稱為中斷字,記錄中斷源的來源。CPU在處理一些緊要事件時(shí)不允許中斷,因?yàn)檫@類事件執(zhí)行過程中一旦被中斷,將會(huì)引起嚴(yán)重后果,為避免中斷請求信號(hào)的干擾,設(shè)置了開中斷/關(guān)中斷觸發(fā)器INH,當(dāng)INH置“0”時(shí),中斷源的中斷請求信號(hào)被允許進(jìn)入排隊(duì),稱為“開中斷”;當(dāng)INH置“1”時(shí),所有中斷源發(fā)出的中斷請求被禁止,稱為“關(guān)中斷”。當(dāng)多個(gè)中斷源同時(shí)向CPU發(fā)出中斷請求時(shí),CPU首先處理哪個(gè)中斷源的請求呢?為了不發(fā)生矛盾,而且處理及時(shí),計(jì)算機(jī)將所有中斷源的請求按輕重緩急排序,0級(jí)、1級(jí)、2級(jí)……n級(jí)排隊(duì)依次處理,保證緊迫程度最高的中斷源的中斷請求排在最前,最快得到CPU的處理。這種中斷處理過程中的優(yōu)先級(jí)別,叫做中斷優(yōu)先權(quán)。例如:PC機(jī)的中斷優(yōu)先權(quán)由高到低的順序是:除法錯(cuò)誤中斷,INT0,INTn→NMI(非屏蔽中斷)→INTR(外設(shè)中斷)→單步中斷。2.中斷優(yōu)先權(quán)與中斷屏蔽如何判別設(shè)備中斷的優(yōu)先權(quán)要由中斷判優(yōu)來完成,中斷排隊(duì)的目的是為了判優(yōu),中斷判優(yōu)的方法有軟件判優(yōu)法和硬件判優(yōu)法。軟件判優(yōu)是用程序來判別優(yōu)先級(jí),優(yōu)先級(jí)高的先查詢,優(yōu)先級(jí)低的后查詢,而通過修改程序可以調(diào)整設(shè)備的優(yōu)先級(jí)。如圖9-6所示,CPU接到中斷請求信號(hào),就執(zhí)行查詢程序,順序檢測中斷請求寄存器的狀態(tài),在識(shí)別中斷源的過程中,優(yōu)先級(jí)順序已經(jīng)按查詢順序排好,若要改變優(yōu)先級(jí)可以通過改變程序查詢順序來完成。1#中斷服務(wù)2#中斷服務(wù)3#中斷服務(wù)1#設(shè)備?2#設(shè)備?3#設(shè)備?YYYNNN圖9-6軟件判優(yōu)法
硬件判優(yōu)是靠硬件電路實(shí)現(xiàn)的,一旦電路設(shè)計(jì)好,優(yōu)先級(jí)就不能更改,成本較高,但速度快,根據(jù)中斷請求信號(hào)的傳送方式不同,常見的硬件排隊(duì)電路有:獨(dú)立請求線的優(yōu)先排隊(duì)電路、公共請求線的優(yōu)先排隊(duì)電路。公共請求線的排隊(duì)電路如圖9-7所示。CPU1#設(shè)備接口2#設(shè)備接口n#設(shè)備接口……中斷請求ARQI/O數(shù)據(jù)總線SYNPOL圖9-7串行順序鏈識(shí)別法
多重中斷多重中斷是指在處理某一中斷過程中,又有比該中斷優(yōu)先級(jí)高的中斷請求,于是CPU中斷原中斷服務(wù)程序的執(zhí)行,而又轉(zhuǎn)去執(zhí)行新的中斷服務(wù)程序。這種多重中斷的執(zhí)行形成了中斷嵌套,如圖9-8所示。圖9-8多重中斷中斷屏蔽當(dāng)多個(gè)中斷源發(fā)出中斷請求時(shí),CPU只能響應(yīng)一個(gè)中斷,中斷屏蔽可實(shí)現(xiàn)部分中斷的封鎖。每個(gè)中斷源在配有一個(gè)中斷請求觸發(fā)器的同時(shí),配有一個(gè)中斷屏蔽觸發(fā)器(MASK),它們成對(duì)出現(xiàn),當(dāng)MASK置1時(shí),該中斷源的請求被屏蔽,中斷請求不能進(jìn)入中斷排隊(duì)邏輯,進(jìn)行判優(yōu);當(dāng)MASK置0時(shí),該中斷請求被允許,經(jīng)過中斷排隊(duì)判優(yōu)后,最終送往CPU。多個(gè)中斷屏蔽觸發(fā)器組成了中斷屏蔽寄存器,其內(nèi)容被稱為屏蔽字。我們可以通過軟件編程改變屏蔽寄存器的某一位,使其置1,從而實(shí)現(xiàn)對(duì)某個(gè)中斷源的屏蔽控制。此外,硬件的中斷排隊(duì)電路所決定的中斷響應(yīng)次序是固定的,但通過中斷屏蔽位的控制,決定某級(jí)中斷請求能否進(jìn)入中斷排隊(duì)器,可以改變中斷響應(yīng)次序。需要注意的是,這里的中斷屏蔽作用是,是否讓中斷源的請求進(jìn)入排隊(duì)邏輯,最終讓CPU接到請求信號(hào),而在CPU內(nèi)部中斷邏輯中,有一個(gè)同樣起中斷屏蔽作用的開/關(guān)中斷觸發(fā)器,它的作用是,是否允許CPU接受中斷請求、響應(yīng)中斷。對(duì)中斷請求的整個(gè)處理過程是由硬件和軟件結(jié)合起來形成的一套中斷請求機(jī)構(gòu)實(shí)施的,一般包括5個(gè)步驟,如圖9-9所示。3.中斷響應(yīng)與中斷處理中斷源發(fā)出中斷請求中斷判優(yōu)中斷響應(yīng)中斷處理中斷返回圖9-9中斷過程中斷源向CPU發(fā)出中斷請求需要有兩個(gè)條件:第一,外設(shè)本身準(zhǔn)備工作完畢;第二,系統(tǒng)允許外設(shè)發(fā)中斷請求,即CPU處于開中斷狀態(tài)。中斷請求信號(hào)經(jīng)過中斷判優(yōu)后,將優(yōu)先權(quán)最高級(jí)別的中斷請求送往CPU,CPU收到后,向中斷源發(fā)出響應(yīng)信號(hào),并做出相應(yīng)的響應(yīng)動(dòng)作。我們把發(fā)生中斷時(shí),CPU暫停執(zhí)行當(dāng)前的程序,而轉(zhuǎn)去處理中斷,CPU對(duì)中斷請求做出反應(yīng)的過程,稱為中斷響應(yīng)。中斷響應(yīng)后進(jìn)入中斷處理階段,即中央處理機(jī)執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序的末尾有一條中斷返回指令,實(shí)現(xiàn)中斷完成后恢復(fù)現(xiàn)場,即將中斷響應(yīng)時(shí)保存過的程序指令計(jì)數(shù)器PC、程序狀態(tài)字寄存器PSW以及某些通用寄存器的內(nèi)容重新取回,CPU返回原程序。中斷方式很好的解決了程序查詢方式的忙等問題,但如果中斷程序在執(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方式。DMA方式即直接存儲(chǔ)器訪問(DirectMemoryAccess)方式,是為了在主存與外設(shè)之間實(shí)現(xiàn)高速、批量數(shù)據(jù)交換而設(shè)置的。DMA方式的數(shù)據(jù)傳送直接依靠硬件(DMA控制器)來實(shí)現(xiàn),不需要執(zhí)行任何程序。無論程序查詢還是程序中斷方式,主要的工作都是由CPU執(zhí)行程序完成的,這需要花費(fèi)時(shí)間,因此不能實(shí)現(xiàn)高速外設(shè)與主機(jī)的信息交換。9.2.3DMA方式DMA方式是在外設(shè)和主存之間開辟一條“直接數(shù)據(jù)通道”,在不需要CPU干預(yù)也不需要軟件介入的情況下在兩者之間進(jìn)行的高速數(shù)據(jù)傳送方式。在DMA傳送方式中,對(duì)數(shù)據(jù)傳送過程進(jìn)行控制的硬件稱為DMA控制器。當(dāng)外設(shè)需要進(jìn)行數(shù)據(jù)傳送時(shí),通過DMA控制器向CPU提出DMA傳送請求,CPU響應(yīng)之后將讓出系統(tǒng)總線,由DMA控制器接管總線進(jìn)行數(shù)據(jù)傳送。DMA和中斷的有很多不同,中斷方式是程序切換,需要保護(hù)和恢復(fù)現(xiàn)場;而DMA方式除了開始和結(jié)尾時(shí),不占用CPU的任何資源;對(duì)中斷請求的響應(yīng)時(shí)間只能發(fā)生在每條指令執(zhí)行完畢時(shí);而對(duì)DMA請求的響應(yīng)時(shí)間可以發(fā)生在每個(gè)機(jī)器周期結(jié)束時(shí),如圖8-10所示;中斷傳送過程需要CPU的干預(yù),而DMA傳送過程不需要CPU的干預(yù),所以數(shù)據(jù)傳輸速率非常高,適合于高速外設(shè)的成組數(shù)據(jù)傳送;DMA請求的優(yōu)先級(jí)高于中斷請求;中斷方式具有對(duì)異常事件的處理能力,而DMA方式僅局限于完成傳送數(shù)據(jù)塊的I/O操作。取指令取源操作數(shù)取目的操作數(shù)執(zhí)行DMA斷點(diǎn)圖9-10兩種請求的響應(yīng)時(shí)刻比較DMA方式一般應(yīng)用于主存與高速外設(shè)間的簡單數(shù)據(jù)傳送。高速外設(shè)如磁盤、磁帶、光盤等輔助存儲(chǔ)器以及其他帶有局部存儲(chǔ)器的外設(shè)、通信設(shè)備等。對(duì)磁盤的讀寫是以數(shù)據(jù)塊為單位進(jìn)行的,一旦找到數(shù)據(jù)塊起始位置,就將連續(xù)地讀寫。找到數(shù)據(jù)塊起始位置的時(shí)間是隨機(jī)的,相應(yīng)地,接口何時(shí)具備數(shù)據(jù)傳送條件也是隨機(jī)的。由于磁盤讀寫速度較快,在連續(xù)讀寫過程中不允許CPU花費(fèi)過多的時(shí)間,因此,從磁盤中讀出數(shù)據(jù)或往磁盤中寫人數(shù)據(jù)時(shí),一般采用DMA方式傳送,即直接將數(shù)據(jù)由主存經(jīng)數(shù)據(jù)總線輸出到磁盤接口,然后寫入盤片;或?qū)?shù)據(jù)由盤片讀出到磁盤接口,然后經(jīng)數(shù)據(jù)總線寫入主存。當(dāng)計(jì)算機(jī)系統(tǒng)通過通信設(shè)備與外部通信時(shí),常以數(shù)據(jù)塊為單位進(jìn)行批量傳送。開始通信后,常以較快的數(shù)據(jù)傳輸速率連續(xù)傳送,因此,適于采用DMA方式。在不通信時(shí),CPU可以照常執(zhí)行程序;在通信過程中僅需占用系統(tǒng)總線,系統(tǒng)開銷很少。在大批量數(shù)據(jù)采集系統(tǒng)中,也可以采用DMA方式。許多計(jì)算機(jī)系統(tǒng)中選用動(dòng)態(tài)存儲(chǔ)器DRAM,并用異步方式安排刷新周期。刷新請求的提出,對(duì)主機(jī)來說是隨機(jī)的。DRAM的刷新操作可視為存儲(chǔ)器內(nèi)部的數(shù)據(jù)批量傳送,因此,也可采用DMA方式實(shí)現(xiàn),將每次刷新請求當(dāng)成DMA請求。CPU在刷新周期中讓出系統(tǒng)總線,按行地址(刷新地址)訪問主存,實(shí)現(xiàn)各芯片中的一行刷新。利用系統(tǒng)的DMA機(jī)制實(shí)現(xiàn)動(dòng)態(tài)刷新,簡化了專門的動(dòng)態(tài)刷新邏輯,提高了主存的利用率。DMA傳送是直接依靠硬件實(shí)現(xiàn)的,可用于快速的數(shù)據(jù)直傳。也正是由于這一點(diǎn),DMA方式本身不能處理較復(fù)雜的事件。因此,在某些場合常綜合應(yīng)用DMA方式與程序中斷方式,二者互為補(bǔ)充。DMA接口相對(duì)于查詢式接口和中斷式接口來說比較復(fù)雜,習(xí)慣上將DMA方式的接口電路稱為DMA控制器。在DMA傳送過程中,DMA控制器將接管CPU的地址總線、數(shù)據(jù)總線和控制總線,CPU的主存控制信號(hào)被禁止使用。而當(dāng)DMA傳送結(jié)束后,將恢復(fù)CPU的一切權(quán)力并開始執(zhí)行其操作。由此可見,DMA控制器必須具有控制系統(tǒng)總線的能力,即能夠像CPU一樣輸出地址信號(hào),接收或發(fā)出控制信號(hào),輸入或輸出數(shù)據(jù)信號(hào)。DMA控制器在外設(shè)與主存之間直接傳送數(shù)據(jù)期間,完全代替CPU進(jìn)行工作。圖9-11給出了一個(gè)簡單的DMA控制器框圖,它由以下幾部分組成(1)主存地址計(jì)數(shù)器:用來存放待交換數(shù)據(jù)的主存地址。該計(jì)數(shù)器的初始值為主存緩沖區(qū)的首地址,當(dāng)DMA傳送時(shí),每傳送一個(gè)數(shù)據(jù),將地址計(jì)數(shù)器加“1”,從而以增量方式給出主存中要交換的一批數(shù)據(jù)的地址,直至這批數(shù)據(jù)傳送完畢為止。(2)傳送長度計(jì)數(shù)器:用來記錄傳送數(shù)據(jù)塊的長度。其初始值為傳送數(shù)據(jù)的總字?jǐn)?shù)或總字節(jié)數(shù),每傳送一個(gè)字或一個(gè)字節(jié),計(jì)數(shù)器自動(dòng)減“1”,當(dāng)其內(nèi)容為0時(shí)表示數(shù)據(jù)已全部傳送完畢。也有些DMA控制器中,初始時(shí)將字?jǐn)?shù)或字節(jié)數(shù)求補(bǔ)之后送計(jì)數(shù)器,每傳送一個(gè)字或一個(gè)字節(jié),計(jì)數(shù)器加“1”,當(dāng)計(jì)數(shù)器溢出時(shí),表示數(shù)據(jù)傳送完畢。(3)數(shù)據(jù)緩沖寄存器:用來暫存每次傳送的數(shù)據(jù)。輸人時(shí),數(shù)據(jù)由外設(shè)(如磁盤)先送往數(shù)據(jù)緩沖寄存器,再通過數(shù)據(jù)總線送到主存。反之,輸出時(shí),數(shù)據(jù)由主存通過數(shù)據(jù)總線送到數(shù)據(jù)緩沖寄存器,然后再送到外設(shè)。(4)DMA請求觸發(fā)器:每當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)后給出一個(gè)控制信號(hào),使DMA請求觸發(fā)器置位。(5)控制/狀態(tài)邏輯:它由控制和時(shí)序電路以及狀態(tài)標(biāo)志等組成,用于指定傳送方向,修改傳送參數(shù)DMA請求信號(hào)和CPU響應(yīng)信號(hào)進(jìn)行協(xié)調(diào)和同步。(6)中斷機(jī)構(gòu):當(dāng)一個(gè)數(shù)據(jù)塊傳送完畢后觸發(fā)中斷機(jī)構(gòu),向CPU提出中斷請求,CPU將進(jìn)行DMA傳送的結(jié)尾處理。主存CPU中斷機(jī)構(gòu)設(shè)備選擇設(shè)備控制/狀態(tài)邏輯DMA請求觸發(fā)器主存地址計(jì)數(shù)器傳送長度計(jì)數(shù)器數(shù)據(jù)緩沖寄存器HRQHLDADMAC控制線中斷請求溢出信號(hào)數(shù)據(jù)線地址線+1系統(tǒng)總線圖9-11簡單的DMA控制器DMA控制器必須有以下總線:地址總線:在DMA方式下,呈輸出狀態(tài),可對(duì)主存進(jìn)行地址選擇;在CPU方式下,呈輸入狀態(tài)可對(duì)DMA控制器中的有關(guān)寄存器進(jìn)行尋址。數(shù)據(jù)總線:在DMA方式下,用它進(jìn)行數(shù)據(jù)傳送,在CPU方式下,可對(duì)DMA控制器的有關(guān)寄存器進(jìn)行編程??刂茢?shù)據(jù)傳送方式的信號(hào)線:當(dāng)數(shù)據(jù)從外設(shè)寫入主存時(shí),存儲(chǔ)器寫信號(hào)和外設(shè)讀信號(hào)同時(shí)有效;而當(dāng)數(shù)據(jù)從主存讀出送外設(shè)時(shí),存儲(chǔ)器讀信號(hào)和外設(shè)寫信號(hào)將同時(shí)有效。DMA控制器與外設(shè)之間的聯(lián)絡(luò)信號(hào)線:DMA請求信號(hào)DREQ(輸入)是外設(shè)向DMA控制器提出DMA操作的申請信號(hào);DMA響應(yīng)信號(hào)DACK(輸出)是DMA控制器向提出DMA請求的外設(shè)表示的應(yīng)答信號(hào)。DMA控制器與CPU之間的聯(lián)絡(luò)信號(hào)線:總線請求HRQ(輸出)是DMA控制器向CPU請求讓出總線的信號(hào);總線響應(yīng)信號(hào)HLDA(輸人)是CPU向DMA控制器表示響應(yīng)總線請求的信號(hào)。DMA控制器利用這些總線與CPU、主存及外設(shè)之間進(jìn)行連接。圖9-12給出了DMA控制器與CPU、主存及外設(shè)之間的連接框圖。在進(jìn)行DMA操作之前應(yīng)先對(duì)DMA控制器編程。比如,確定傳送數(shù)據(jù)的主存起始地址、要傳送的字節(jié)數(shù)以及傳送方式,是由外設(shè)將數(shù)據(jù)寫入主存還是從主存將數(shù)據(jù)讀出送外設(shè)。主存CPUDMA控制器外設(shè)HRQHLDADREQDACK數(shù)據(jù)線地址總線數(shù)據(jù)總線圖9-12DMA控制器的連接下面以外設(shè)將一個(gè)數(shù)據(jù)塊寫入主存的操作為例,簡述DMA控制器的操作過程。(1)由外設(shè)向DMA控制器發(fā)出請求信號(hào)DREQ。(2)DMA控制器向CPU發(fā)出總線請求信號(hào)HRQ。(3)CPU向DMA控制器發(fā)出總線響應(yīng)信號(hào)HLDA,此時(shí),DMA控制器獲取了總線的控制權(quán)。(4)DMA控制器向外設(shè)發(fā)出DMA響應(yīng)信號(hào)DACK,表示DMA控制器已控制了總線,允許外設(shè)與主存交換數(shù)據(jù)。(5)DMA控制器按主存地址計(jì)數(shù)器的內(nèi)容發(fā)出地址信號(hào)作為主存地址的選擇,同時(shí)主存地址計(jì)數(shù)器的內(nèi)容加1。(6)DMA控制器發(fā)出信號(hào)到外設(shè),將外設(shè)數(shù)據(jù)讀入總線,同時(shí)發(fā)出信號(hào),將數(shù)據(jù)總線的數(shù)據(jù)寫入地址總線選中的主存單元。(7)傳送長度計(jì)數(shù)器減1。(8)判斷字節(jié)計(jì)數(shù)器是否減到0,如果字節(jié)計(jì)數(shù)器不為0,跳轉(zhuǎn)到步驟(5),如果字節(jié)計(jì)數(shù)器為0,數(shù)據(jù)塊的DMA方式傳送工作完成。這時(shí),DMA控制器的HRQ降為低電平,總線控制權(quán)交還CPU。DMA控制器與CPU通常采用三種方法使用主存,即CPU停止訪問主存法、存儲(chǔ)器分時(shí)法和周期挪用法。CPU停止訪問主存法是最簡單的DMA方法。這種方法是用DMA請求信號(hào)迫使CPU讓出總線控制權(quán)。CPU在現(xiàn)行機(jī)器周期執(zhí)行完成之后,使其數(shù)據(jù)、地址總線處于三態(tài),并輸出總線批準(zhǔn)信號(hào)。每次DMA請求獲得批準(zhǔn),DMA控制器獲得總線控制權(quán)以后,連續(xù)占用若干個(gè)存取周期(總線周期)進(jìn)行成組連續(xù)的數(shù)據(jù)傳送,直至批量傳送結(jié)束,DMA控制器才把總線控制權(quán)交回CPU。在DMA操作期間,CPU處于保持狀態(tài),停止訪問主存,僅能進(jìn)行一些與總線無關(guān)的內(nèi)部操作。圖9-13(a)是這種傳送方法的時(shí)間圖。這種方法只適用于高速外設(shè)的成組傳送。當(dāng)外設(shè)的數(shù)據(jù)傳輸率接近于主存工作速度時(shí),或CPU除了等待DMA傳送結(jié)束而并無其它工作可做(例如單用戶狀態(tài)下的個(gè)人計(jì)算機(jī))時(shí),常采用這種方法。這樣可以減少系統(tǒng)總線控制權(quán)的交換次數(shù),有利于提高輸入輸出的速度。采用存儲(chǔ)器分時(shí)法時(shí),把原來的一個(gè)存取周期分成兩個(gè)時(shí)間片,一片分給CPU,一片分給DMA,使CPU和DMA交替地訪問主存。
這種方法無須申請和歸還總線,使總線控制權(quán)的轉(zhuǎn)移幾乎無需浪費(fèi)時(shí)間,因此DMA傳送的效率很高,同時(shí)CPU不停止現(xiàn)行程序的運(yùn)行,也不進(jìn)入保持狀態(tài),在很短的時(shí)間內(nèi)便進(jìn)行了DMA傳送;但這種方法需要主存在原來的存取周期內(nèi)為兩個(gè)部件服務(wù),如果要維持CPU的訪存速度不變,就要求主存的工作速度提高一倍。另外,由于大多數(shù)外設(shè)的速度都不能與CPU相匹配,所以供DMA使用的時(shí)間片可能成為空操作,將會(huì)造成一些不必要的浪費(fèi)。圖9-13(b)是這種方法的時(shí)間圖。周期挪用法是前兩種方法的折衷。當(dāng)外設(shè)沒有DMA請求時(shí),CPU按程序要求訪問主存。一旦外設(shè)有DMA請求并獲得CPU批準(zhǔn)后,CPU讓出一個(gè)周期的總線控制權(quán),由DMA控制器控制系統(tǒng)總線,挪用一個(gè)存取周期進(jìn)行一次數(shù)據(jù)傳送,傳送一個(gè)字節(jié)或一個(gè)字。然后,DMA控制器將總線控制權(quán)交回CPU,CPU繼續(xù)進(jìn)行自己的操作,等待下一個(gè)DMA請求的到來。重復(fù)上述過程,直至數(shù)據(jù)塊傳送完畢。如果在同一時(shí)刻,發(fā)生CPU與DMA的訪存沖突,那么優(yōu)先保證DMA工作,而CPU等待一個(gè)存取周期;若DMA傳送期間CPU無須訪存,則周期挪用對(duì)CPU執(zhí)行程序無任何影響。如圖9-13(c)所示。DMA不工作DMA不工作CPU控制并使用主存DMA控制并使用主存主存工作時(shí)間CPU控制并使用主存DMA控制并使用主存主存工作時(shí)間CPU控制并使用主存DMA控制并使用主存主存工作時(shí)間(a)(b)(c)圖9-13DMA傳送方法當(dāng)主存工作速度高出外設(shè)較多時(shí),采用周期挪用法可以提高主存的利用率,且對(duì)CPU的影響較小,因此,高速主機(jī)系統(tǒng)常采用這種方法。根據(jù)主存的存取周期與磁盤的數(shù)據(jù)傳輸率,可以計(jì)算出主存操作時(shí)間的分配情況:有多少時(shí)間需用于DMA傳送(被挪用),有多少時(shí)間可用于CPU訪存。這在一定程度上反映了系統(tǒng)的處理效率。DMA的傳送過程可分為三個(gè)階段:DMA傳送前的預(yù)處理、數(shù)據(jù)傳送和傳送后的結(jié)束處理。在DMA傳送之前必須要做準(zhǔn)備工作,即初始化。這是由CPU來完成的。CPU首先執(zhí)行幾條I/O指令,用于測試外設(shè)的狀態(tài)、向DMA控制器的有關(guān)寄存器置初值、設(shè)置傳送方向和啟動(dòng)該外部設(shè)備等。
在這些工作完成之后,CPU繼續(xù)執(zhí)行原來的程序,在外設(shè)準(zhǔn)備好發(fā)送的數(shù)據(jù)(輸入)或接收的數(shù)據(jù)已處理完畢(輸出)時(shí),外設(shè)向DMA控制器發(fā)DMA請求,再由DMA控制器向CPU發(fā)總線請求。DMA的數(shù)據(jù)傳送可以以單字節(jié)(或字)為基本單位,也可以以數(shù)據(jù)塊為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025臨時(shí)租車合同模板
- 全勤獎(jiǎng)協(xié)議合同范例
- 公司勞務(wù)外包合同范本
- 2024年01月江蘇2024年蘇州銀行零售銀行總部財(cái)富管理部招考(013)號(hào)筆試歷年參考題庫附帶答案詳解
- 個(gè)人鋪位合同范本
- 出售水桶模具合同范本
- 個(gè)人跟工廠采購合同范本
- 醫(yī)院藥品招標(biāo)合同范例
- 出售挖機(jī)合同范本
- 中國銀行信托合同范例
- 護(hù)理人文知識(shí)培訓(xùn)課件
- 建筑工程施工安全管理課件
- 2025年春新人教版數(shù)學(xué)七年級(jí)下冊教學(xué)課件 7.2.3 平行線的性質(zhì)(第1課時(shí))
- 上海市楊浦區(qū)2022屆初三中考二模英語試卷+答案
- 高中英語原版小說整書閱讀指導(dǎo)《奇跡男孩》(wonder)-Part one 講義
- GB/T 4745-2012紡織品防水性能的檢測和評(píng)價(jià)沾水法
- 國家綜合性消防救援隊(duì)伍消防員管理規(guī)定
- 2023年全國各地高考英語試卷:完形填空匯編(9篇-含解析)
- 五年級(jí)上冊數(shù)學(xué)習(xí)題課件 簡便計(jì)算專項(xiàng)整理 蘇教版 共21張
- 疼痛科的建立和建設(shè)
- 運(yùn)動(dòng)技能學(xué)習(xí)PPT課件
評(píng)論
0/150
提交評(píng)論