版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1,第10章 輸入、輸出(I/O)系統(tǒng),,10.1 輸入輸出(I/O)系統(tǒng)概述 輸入輸出系統(tǒng)包括外部設(shè)備及其與主機(jī)(CPU和存儲(chǔ)器)之間的控制部件。后者稱之為設(shè)備控制器,有時(shí)也稱為設(shè)備適配器或接口,其作用是控制并實(shí)現(xiàn)主機(jī)與外部設(shè)備之間的數(shù)據(jù)傳送。本章主要介紹設(shè)備控制器的工作原理及其與主機(jī)之間傳送數(shù)據(jù)的協(xié)議,即系統(tǒng)總線。,3,,10.1.1 功能 接口是計(jì)算機(jī)與I/O設(shè)備或其他系統(tǒng)之間所設(shè)置的邏輯控
2、制部件,也稱I/O控制器。接口的引入:,外設(shè)類型不同: 機(jī)械、電子、機(jī)電、電磁傳送信息類型: 數(shù)字量、模擬量傳送速度傳送方式:串行、并行編碼方式:,能實(shí)現(xiàn)數(shù)據(jù)緩沖和數(shù)據(jù)鎖存能完成信息格式和電平的轉(zhuǎn)換能進(jìn)行地址譯碼和設(shè)備選擇能保證數(shù)據(jù)傳送的定時(shí)與協(xié)調(diào),功能:,4,外圍設(shè)備接口的結(jié)構(gòu),接口地址,,,地址,譯碼,器,數(shù)據(jù)寄存器,命令寄存器,,RD,WE,,地址,有效,,總線,,數(shù)據(jù)線,,地址線,,外設(shè)接口,,外設(shè)控
3、制信號(hào),,外設(shè)數(shù)據(jù),,外設(shè)狀態(tài),狀態(tài)寄存器,,,,,,I/O接口功能演示,5,1.輸入輸出接口的基本結(jié)構(gòu),CPU和外設(shè)之間通常傳遞的信息:數(shù)據(jù)、狀態(tài)、控制,組成:寄存器組、控制邏輯電路、主機(jī)與接口和接口與I/O設(shè)備之間的信號(hào)聯(lián)接線、數(shù)據(jù)地址線、控制狀態(tài)信號(hào)線,CPU,,控制電路,DR,SR,CR,I/O設(shè)備,,地址,,數(shù)據(jù),,,,IO/M,RD,WR,,,,,數(shù)據(jù),,,狀態(tài),控制,6,2. I/O接口分類,結(jié)構(gòu)方式并行和串行收發(fā)
4、配合方式同步和異步數(shù)據(jù)傳送配合方式程序傳送、中斷傳送、DMA、通道、IO處理器電路規(guī)模簡單接口、可編程接口、外設(shè)接口適配器,7,3. 輸入輸出接口的編址方式,在接口電路中通常都具有多個(gè)可由CPU進(jìn)行讀寫操作的寄存器,每個(gè)寄存器也叫做“端口”。為了CPU便于對I/O設(shè)備進(jìn)行尋址和選擇,必須給眾多的I/O設(shè)備的端口進(jìn)行編址,也就是給每一臺(tái)設(shè)備規(guī)定一些地址碼稱為設(shè)備號(hào)或設(shè)備代碼。 (1) 存儲(chǔ)器、I/O接口統(tǒng)一編址
5、優(yōu):訪存指令可訪問端口,這樣尋址類型多,編程較方便。 缺:占用存儲(chǔ)器空間;速度慢。 (2) I/O端口獨(dú)立編址優(yōu):專門的I/O指令,與訪存分開;指令執(zhí)行快;不占內(nèi)存地址空間。缺:需專用指令、尋址方式少。,8,,IBM PC等系列機(jī)設(shè)置有專門的I/O指令(IN和OUT),設(shè)備的編址可達(dá)512個(gè),部分設(shè)備的地址碼如表 10.1所示。 從表中可見,每一臺(tái)設(shè)備占用了若干個(gè)地址碼分別表示相應(yīng)的設(shè)備控制器中的寄存器地址。,9,1
6、0.1.2 主機(jī)與外設(shè)間 數(shù)據(jù)傳送控制方式,(1) 程序直接控制(program direct control ) 傳遞方式(2) 程序中斷傳送(program interrupt transfer)方式(3) 直接存儲(chǔ)器存取(direct memory access) 方式——DMA(4) I/O通道控制(I/O channel control)方式(5) 外圍處理機(jī)(peripheral process
7、or unit)方式,10,,,,信號(hào)傳輸過程,,,,,,,,狀態(tài)寄存器,數(shù)據(jù)寄存器,2,控制,器,ALU,數(shù)據(jù)寄存器,1,地址寄存器,設(shè)備驅(qū)動(dòng)電路,數(shù)據(jù)寄存器,地址譯碼器,,設(shè)備接口,,CPU,,,,,11,1、 程序直接控制傳送方式,該方法是主機(jī)與外設(shè)之間進(jìn)行數(shù)據(jù)交換的最簡單、最基本的控制方法。無條件傳送只有在外設(shè)總處于準(zhǔn)備好狀態(tài)程序查詢方式優(yōu)點(diǎn):較好協(xié)調(diào)主機(jī)與外設(shè)之間的時(shí)間差異所用硬件少。缺點(diǎn):主機(jī)與外設(shè)只能串
8、行工作主機(jī)一個(gè)時(shí)間段只能與一個(gè)外設(shè)進(jìn)行通訊CPU效率低。,從I/O接口中讀 一個(gè)字到CPU,,從CPU向主存 寫入一個(gè)字,,CPU向I/O發(fā) 讀指令,,CPU讀I/O狀態(tài),,檢查狀態(tài),,完成否,,,,,,,,,,,未準(zhǔn)備就緒,現(xiàn)行程序,是,,出錯(cuò),已準(zhǔn)備就緒,否,12,2、程序中斷傳送方式,由于CPU與外設(shè)之間的速度至今仍是微秒和毫秒的數(shù)量級,速度差異懸殊,會(huì)使CPU的工作效率下降。優(yōu)點(diǎn):避免頻繁查詢,適合隨機(jī)出
9、現(xiàn)的服務(wù)和中低速外設(shè)使用。缺點(diǎn):成批數(shù)據(jù)交換時(shí),中斷影響傳送效率,一次傳送一個(gè)字符,中斷處理時(shí)間大于傳送數(shù)據(jù)時(shí)間。需要一定的硬件電路。,中斷方式的引入,程序中斷方式的輸入接口工作過程演示,13,3、直接存儲(chǔ)器訪問方式,1. DMA方式的引入前兩種方式以CPU為中心,占用CPU時(shí)間。DMA方式以內(nèi)存為中心。2. 基本工作原理在外設(shè)通過專門的接口電路和存儲(chǔ)器進(jìn)行數(shù)據(jù)交換,而不用通過CPU的寄存器??刂七^程由DMA控制器這
10、樣的硬件來完成,不需要保存斷點(diǎn)。 特點(diǎn):適用于高速設(shè)備和大數(shù)據(jù)量的數(shù)據(jù)傳輸,需用更多的硬件電路支持。,直接存儲(chǔ)器存取方式軟盤控制接口工作演示,14,三種方式的 CPU 工作效率比較,,,,,,,,,,程序查詢方式,程序中斷方式,DMA 方式,15,,4、I/O通道控制方式 I/O通道具有少數(shù)專用的指令系統(tǒng),能實(shí)現(xiàn)指令所控制的操作,管轄其相應(yīng)的設(shè)備控制器,所以I/O通道已具備簡單處理機(jī)的功能。但它僅僅是面向外圍設(shè)
11、備的控制和數(shù)據(jù)的傳送,其指令系統(tǒng)也僅僅是幾條簡單的與I/O操作有關(guān)的命令。它要在CPU的I/O指令指揮下啟動(dòng)、停止或改變工作狀態(tài)。因此,l/O通道不是一個(gè)完全獨(dú)立的處理機(jī),它只是從屬于CPU的一個(gè)專用I/O處理器。它的進(jìn)一步發(fā)展是引入專用的輸入輸出處理機(jī)。 通道方式的出現(xiàn)進(jìn)一步提高了CPU的效率。但需更多的硬件電路。,16,5、 輸入輸出處理機(jī)(IOP)方式,有單獨(dú)的存儲(chǔ)器和獨(dú)立的運(yùn)算部件,可訪問系統(tǒng)的內(nèi)部存儲(chǔ)器除數(shù)據(jù)傳輸外,還
12、應(yīng)有以下功能:能處理傳送過程中出錯(cuò)及異常情況,數(shù)據(jù)格式翻譯,數(shù)據(jù)塊校驗(yàn)。IOP方式是通道方式的進(jìn)一步的發(fā)展。它們大多應(yīng)用在中、大型計(jì)算機(jī)中。,17,,10.2 程序中斷控制技術(shù) 中斷:計(jì)算機(jī)暫時(shí)中止當(dāng)前程序運(yùn)行,轉(zhuǎn)而處理意外出現(xiàn)的情況或有意安排的任務(wù),在處理結(jié)束后能自動(dòng)恢復(fù)原程序的執(zhí)行,這個(gè)過程叫作“中斷”。 中斷系統(tǒng)是計(jì)算機(jī)實(shí)現(xiàn)中斷功能的軟、硬件總稱。在CPU一側(cè)配置了中斷機(jī)構(gòu),在設(shè)備一側(cè)配置了中斷控制接口,在軟件上
13、設(shè)計(jì)了相應(yīng)的中斷服務(wù)程序。 中斷過程由中斷請求、中斷響應(yīng)、狀態(tài)保護(hù)、中斷屏蔽、中斷處理、恢復(fù)和返回組成。,18,I/O 中斷的產(chǎn)生,以打印機(jī)為例,CPU 與打印機(jī)并行工作,19,10.2.1 中斷的概念,在機(jī)器中引起中斷產(chǎn)生的事件或發(fā)生中斷請求的來源統(tǒng)稱為中斷源。 硬件中斷: 是指由某個(gè)硬件中斷請求信號(hào)引起的中斷 ,硬件中斷通過是中斷請求信號(hào)形成向量地址。向量地址是中斷服務(wù)程序入口地址的地址。 軟中斷:
14、 是指由軟中斷指令所引起的中斷,軟中斷由指令提供中斷號(hào)n,再轉(zhuǎn)換為向量地址。 強(qiáng)迫中斷: 是指由于故障、外部請求等所引起的強(qiáng)迫性中斷,非程序本身安排的,這種請求的提出和相應(yīng)的服務(wù)處理都是隨機(jī)的。 自愿中斷即軟中斷 這是程序有意安排的,即以事先在程序某處設(shè)置斷點(diǎn),以中斷方式引出服務(wù)程序,實(shí)現(xiàn)某種功能。如單步調(diào)試程序。,1. 中斷源,20,,內(nèi)部中斷:指來自主機(jī)內(nèi)部的中斷請求,如CPU內(nèi)部硬件故障、軟
15、中斷、程序出錯(cuò)、運(yùn)算產(chǎn)生故障引起的中斷、控制器產(chǎn)生的中斷。即溢出、除數(shù)為零、校驗(yàn)錯(cuò)、非法格式、、虛擬存儲(chǔ)器頁面失效、 非法指令、調(diào)用失敗、故障中斷等。 外部中斷:由CPU外部產(chǎn)生的中斷鍵盤中斷、打印機(jī)中斷、磁盤存儲(chǔ)器申請中斷、電源故障、主機(jī)設(shè)備故障、定時(shí)時(shí)鐘中斷、顯示器中斷、打印機(jī)中斷等。 可屏蔽中斷INTR 一般將外圍設(shè)備中斷作為可屏蔽中斷,CPU通過屏蔽技術(shù)施加以控制。 不可屏蔽中斷NMI 這是一種必須
16、響應(yīng)處理的中斷請求,作為非屏蔽中斷,不受CPU屏蔽。軟中斷發(fā)生于CPU內(nèi)部,不屬于外中斷范疇,從概念上將它也是不可屏蔽的。,21,,向量中斷 CPU響應(yīng)中斷后,由中斷機(jī)構(gòu)自動(dòng)將向量地址通知處理機(jī),由向量地址指明中斷向量位置并實(shí)現(xiàn)向量切換,不必經(jīng)過處理程序來查詢中斷源的中斷功能,稱為向量中斷。即直接依靠硬件來實(shí)現(xiàn)根據(jù)中斷源獲得服務(wù)程序入口地址,以實(shí)現(xiàn)程序切換。向量中斷的特點(diǎn)是根據(jù)中斷請求信號(hào)能快速地、直接轉(zhuǎn)向?qū)?yīng)的服務(wù)程序。因此,
17、現(xiàn)代計(jì)算機(jī)基本上多具有向量中斷能力。 非向量中斷 CPU不能直接提供中斷服務(wù)程序入口地址,而是CPU在響應(yīng)中斷時(shí)只產(chǎn)生一個(gè)固定的地址,由此讀取中斷查詢程序的入口地址,從而轉(zhuǎn)向查詢程序;通過執(zhí)行查詢程序,確定被優(yōu)先批準(zhǔn)的中斷源,然后分支進(jìn)入相應(yīng)的中斷服務(wù)程序。非向量中斷也稱為單向量中斷。,22,2. CPU響應(yīng)中斷必須滿足的條件,中斷源有中斷請求中斷寄存器CPU允許接受中斷請求開中斷中斷屏蔽寄存器(判優(yōu))
18、禁止中斷一般一條指令執(zhí)行完畢后CPU才能響應(yīng)中斷,并且當(dāng)前執(zhí)行的不是停機(jī)指令,又沒有優(yōu)先權(quán)更高的請求,則CPU進(jìn)入中斷周期狀態(tài),進(jìn)入中斷響應(yīng)。,取指令,,執(zhí)行指令,,中斷,響應(yīng)中斷,,,執(zhí)行中斷服務(wù)程序,,,,,,,返回?cái)帱c(diǎn),,關(guān)中斷、保存斷點(diǎn)、現(xiàn)場、開中斷,關(guān)中斷、恢復(fù)現(xiàn)場、斷點(diǎn)、開中斷,NO,Y,23,,相關(guān)知識(shí)說明 1)中斷響應(yīng) 一旦CPU中斷響應(yīng)條件得到滿足,則CPU進(jìn)入中斷周期狀態(tài),并開始響應(yīng)中斷。CP
19、U響應(yīng)中斷意味著處理機(jī)從一個(gè)程序切換到另一個(gè)程序。 2)中斷服務(wù)程序 為處理意外情況或有意安排的任務(wù)而編寫的程序稱為“中斷服務(wù)程序” 3)中斷請求的檢測與屏蔽在一個(gè)指令周期的最后一個(gè)機(jī)器周期檢測當(dāng)外部中斷源申請中斷時(shí),CPU是否響應(yīng)還要取決于其內(nèi)部的中斷允許寄存器IR。 IR=1 是允許中斷申請(開中斷);IR=0 時(shí)禁止中斷申請(關(guān)中斷)。由指令STI和CLI軟件設(shè)置。,24,,4)中斷請求觸發(fā)器:
20、 當(dāng)中斷源發(fā)生引起中斷的事件時(shí)先將它保存在設(shè)備控制器的‘中斷請求觸發(fā)器’中,即將“中斷觸發(fā)器’置1”。 5)禁止中斷: 產(chǎn)生中斷源后,由于某種條件的存在,CPU不能中止現(xiàn)行程序的執(zhí)行,稱為禁止中斷。一般在CPU內(nèi)部設(shè)有一個(gè)“中斷允許’觸發(fā)器。只有該觸發(fā)器為‘1’狀態(tài)時(shí)。才允許處理機(jī)響應(yīng)中斷;如果該觸發(fā)器被清除,則不響應(yīng)外部中斷源申請的中斷、前者叫做允許中斷,后者叫做禁止中斷。 6)堆棧與斷點(diǎn)的保護(hù)程序被中斷的地址稱為
21、斷點(diǎn),需保存,以備恢復(fù)執(zhí)行時(shí)使用,保存斷點(diǎn)的地方稱為棧區(qū)。棧區(qū):內(nèi)存中開辟的專用數(shù)據(jù)存取區(qū),25,,7)“中斷允許’觸發(fā)器通過‘開中斷ST I’或‘關(guān)中斷CLI’指令來置位、復(fù)位。進(jìn)入中斷服務(wù)程序后自動(dòng)“關(guān)中斷’。 8)中斷屏蔽: 當(dāng)產(chǎn)生中斷請求后,用程序方式有選擇地封鎖部分中斷而允許其余部分中斷仍得到響應(yīng),稱為中斷屏蔽。 實(shí)現(xiàn)方法是為每個(gè)中斷源設(shè)置一個(gè)中斷屏蔽觸發(fā)器來屏蔽該設(shè)備的中斷請求。具體說
22、,用程序方法將該觸發(fā)器置“l(fā)’則對應(yīng)的設(shè)備中斷被封鎖,若將其置“0”,才允許該設(shè)備的中斷請求得到響應(yīng),由各設(shè)備的中斷屏蔽觸發(fā)器組成中斷屏蔽寄存器。,26,,9)向量(矢量)中斷和中斷向量(矢量)矢量中斷:是根據(jù)發(fā)生中斷時(shí),CPU能夠直接獲得到一個(gè)中斷服務(wù)程序的起始地址的方式而得名。中斷矢量:實(shí)際上就是一個(gè)指針,其內(nèi)容是中斷服務(wù)程序起始地址。即中斷服務(wù)程序起始地址的地址。 10)中斷矢量表:微機(jī)中把全部中斷矢量存放在內(nèi)存的某一
23、區(qū)域中,形成一個(gè)中斷矢量表。當(dāng)發(fā)生中斷時(shí),根據(jù)中斷源不同,從中斷矢量表中取出對應(yīng)的中斷矢量送給CPU的IP寄存器,CPU開始執(zhí)行中斷處理子程序。 11)多重中斷和中斷優(yōu)先:多重中斷就是CPU在執(zhí)行某一中斷服務(wù)程序后,如果令I(lǐng)R=1,那么 CPU還可以接受更高級的中斷申請執(zhí)行其中斷服務(wù)程序.形成多重中斷(也稱為中斷嵌套)。 響應(yīng)多重中斷的原則是按實(shí)現(xiàn)設(shè)定好的各中斷源的中斷優(yōu)先級別進(jìn)行先后處理。級別高的優(yōu)先處理,級
24、別低的后處理。具體判斷方法可用硬件判斷或軟件判斷。,27,,3.中斷屏蔽技術(shù)的應(yīng)用 通過輸出指令送出一個(gè)屏蔽字,有選擇地允許某些中斷請求、屏蔽某些中斷請求。常用于如下兩種場合。 1)在多重中斷方式中(即允許中斷嵌套),當(dāng)CPU響應(yīng)某個(gè)中斷請求后,送出一個(gè)新的屏蔽字,以禁止與該請求統(tǒng)一優(yōu)先級或更低級優(yōu)先級的其它請求。只允許比該請求優(yōu)先級高的其它中斷請求可以提出。 2)利用屏蔽技術(shù)動(dòng)態(tài)地修改優(yōu)先級 硬
25、件排優(yōu)邏輯所分配的優(yōu)先級是固定的,但有時(shí)根據(jù)程序的需要臨時(shí)動(dòng)態(tài)的修改優(yōu)先順序,就可利用屏蔽字將原來優(yōu)先級高的設(shè)備請求暫時(shí)屏蔽。原來級別低的請求由于未被屏蔽,優(yōu)先級相對提高,稱為中斷升級。過一段時(shí)間再恢復(fù)或再調(diào)整屏蔽字。,28,,4. 中斷的作用和功能(1)CPU可與 I/O設(shè)備并行工作,提高CPU的工作效率(2)利用中斷來處理故障,提高了機(jī)器的可靠性。 計(jì)算機(jī)運(yùn)行時(shí),如硬件出現(xiàn)某些故障,機(jī)器中斷系統(tǒng)發(fā)出中斷請求,
26、CPU響應(yīng)中斷后自動(dòng)進(jìn)行處理。(3)實(shí)現(xiàn)人機(jī)聯(lián)系 在計(jì)算機(jī)工作過程中,如果用戶要干預(yù)機(jī)器,如抽查計(jì)算中間結(jié)果,了解機(jī)器的工作狀態(tài),給機(jī)器下達(dá)臨時(shí)性的命令等。利用中斷系統(tǒng)實(shí)現(xiàn)人機(jī)通信是很方便、很有效的。(4)實(shí)現(xiàn)多道程序和分時(shí)操作 計(jì)算機(jī)實(shí)現(xiàn)多道程序運(yùn)行是提高機(jī)器效率的有效手段,多道程序的切換運(yùn)行需借助于中斷系統(tǒng)。在一道程序的運(yùn)行中,由I/O中斷系統(tǒng)切換到另外一道程序運(yùn)行,也可以通過分配每道程序一個(gè)固定時(shí)間片,
27、利用時(shí)鐘定時(shí)發(fā)中斷進(jìn)行程序切換。,29,,(5)實(shí)現(xiàn)實(shí)時(shí)處理 所謂實(shí)時(shí)處理,是指在某個(gè)事件或現(xiàn)象出現(xiàn)時(shí)及時(shí)地進(jìn)行處理,而不是集中起來再進(jìn)行批處理。這些事件出現(xiàn)的時(shí)刻是隨機(jī)的,而不是程序本身所能預(yù)見的,因此,要求計(jì)算機(jī)中止正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序。在實(shí)際工程中,利用中斷技術(shù)進(jìn)行實(shí)時(shí)控制已廣泛應(yīng)用于各個(gè)生產(chǎn)領(lǐng)域中。 (6)實(shí)現(xiàn)應(yīng)用程序和操作系統(tǒng)的聯(lián)系 可以在用戶程序中
28、安排一條Trap指令進(jìn)入操作系統(tǒng),稱之為軟中斷。其中斷處理過程與其他中斷類似。 (7)多處理機(jī)系統(tǒng)各處理機(jī)間的聯(lián)系 在多處理機(jī)系統(tǒng)中,處理機(jī)和處理機(jī)之間的信息交流和任務(wù)切換可以通過中斷來實(shí)現(xiàn)。,10.2.2 中斷處理,1.中斷處理過程,,31,,I/O 中斷處理過程,,,DBR,,,,,,,設(shè)備選擇電路,,,,,以輸入為例,32,,(1)關(guān)中斷:由硬件自動(dòng)實(shí)現(xiàn)、因?yàn)榻酉氯ヒ4鏀帱c(diǎn),保存現(xiàn)場。在保
29、存現(xiàn)場過程中,即使有更高級的中斷源申請中斷,CPU也不應(yīng)該響應(yīng)。否則,如果現(xiàn)場保存不完整,在中斷服務(wù)程序結(jié)束之后,也就不能正確地恢復(fù)現(xiàn)場并繼續(xù)執(zhí)行現(xiàn)行程序。(2)保存斷點(diǎn)和現(xiàn)場 為了在中斷處理結(jié)束后能正確地返回到中斷點(diǎn),在響應(yīng)中斷時(shí),必須把當(dāng)前的程序計(jì)數(shù)器PC中的內(nèi)容(即斷點(diǎn))保存起來。 現(xiàn)場信息一般指的是程序狀態(tài)字中斷屏蔽寄存器和CPU中某些寄存器的內(nèi)容。對現(xiàn)場信息的處理有兩種方式。一種是
30、由硬件對現(xiàn)場信息進(jìn)行保存和恢復(fù);另一種是由軟件即中斷服務(wù)程序?qū)ΜF(xiàn)場信息保存和恢復(fù)。 對于由硬件保存現(xiàn)場信息的方式,各種不同的機(jī)器有不同的方案。有的機(jī)器把斷點(diǎn)等保存在主存固定的單元。,33,,有的機(jī)器則不然,它在每次響應(yīng)中斷后把處理機(jī)狀態(tài)字和程序計(jì)數(shù)器內(nèi)容相繼壓入堆棧,再從指定的兩個(gè)主存單元分別取出新的程序計(jì)數(shù)器內(nèi)容和處理機(jī)狀態(tài)字來代替,稱為交換新、舊狀態(tài)字方式。 (3)判別中斷源,轉(zhuǎn)向中斷服務(wù)程序。在多
31、個(gè)中斷源同時(shí)請求中斷的情況下。本次實(shí)際響應(yīng)的只能是優(yōu)先權(quán)最高的那個(gè)中斷源、所以,需進(jìn)一步判別中斷源,并轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口。 (4)開中斷。因?yàn)榻酉氯ゾ鸵獔?zhí)行中斷服務(wù)程序,開中斷將允許更高級中斷請求得到響應(yīng)。實(shí)現(xiàn)中斷嵌套。 (5)執(zhí)行中斷服務(wù)程序。不同中斷源的中斷服務(wù)程序是不同的,實(shí)際有效的中斷處理工作是在此程序段中實(shí)現(xiàn)的。 (6)退出中斷。在退出時(shí),又應(yīng)進(jìn)入不可中斷狀態(tài),即關(guān)中斷,恢復(fù)現(xiàn)場、恢
32、復(fù)斷點(diǎn),然后開中斷,返回原程序執(zhí)行。 進(jìn)入中斷時(shí)執(zhí)行的關(guān)中斷、保存斷點(diǎn)等操作一般是由硬件實(shí)現(xiàn)的,它類似于一條指令, 但它與一般的指令不同,不能被編寫在程序中。因此,常常稱為‘中斷隱指令’。,34,,2. 判別中斷源 查詢法 :由測試程序按一定優(yōu)先排隊(duì)次序檢查各個(gè)設(shè)備的“中斷觸發(fā)器”(或稱為中斷標(biāo)志)。當(dāng)遇到第一個(gè)‘1’標(biāo)志時(shí),即找到了優(yōu)先進(jìn)行處理的中斷源,通常取出其設(shè)備碼,根據(jù)設(shè)備碼轉(zhuǎn)入相應(yīng)的中斷服務(wù)
33、程序。 串行排隊(duì)鏈法 :由硬件確定中斷源。圖10.4為中斷請求邏輯圖和串行排隊(duì)判優(yōu)先線路圖。專用硬件——獨(dú)立請求。 中斷服務(wù)程序入口地址有兩種方法。其一是在中斷程序中設(shè)一條專門接受中斷設(shè)備號(hào)的指令I(lǐng)NTA,收到設(shè)備號(hào)后,在通過主存的跳轉(zhuǎn)表產(chǎn)生其中斷服務(wù)程序入口地址。另一種是目前廣泛應(yīng)用的向量中斷方法。3. 多重中斷處理——中斷嵌套:在處理某一個(gè)中斷的過程中又發(fā)生了新的更高級中斷源的中斷申請,且CUP又處
34、于開中斷狀態(tài)下,CPU就要中斷該服務(wù)程序的執(zhí)行,轉(zhuǎn)去進(jìn)行新的中斷處理服務(wù)程序。一般情況下與它同級的或比它低級的新中斷請求不能CPU不能相應(yīng)其請求,35,,中斷優(yōu)先級的響應(yīng)次序由硬件排隊(duì)線路決定。一旦設(shè)計(jì)完成,系統(tǒng)的優(yōu)先級別就決定了,但缺乏改變優(yōu)先權(quán)級別的靈活性。在有優(yōu)先級中斷屏蔽碼控制的條件下,可以不改變系統(tǒng)排隊(duì)線路,使其中斷響應(yīng)次序不同。因?yàn)橹袛嗥帘未a是由軟件賦值,改變屏蔽碼可以改變個(gè)設(shè)備之間中斷處理次序,所以屏蔽碼可看成中斷處理過程
35、中的軟排隊(duì)器。從中斷服務(wù)程序結(jié)構(gòu)看,中段服務(wù)程序可以在具體處理前被中斷,所以中斷處理次序可以不同于中斷響應(yīng)次序。這就反映了中斷系統(tǒng)軟硬件結(jié)合所帶來的靈活性。,36,中斷判優(yōu)邏輯,① 分散 在各個(gè)中斷源的 接口電路中 鏈?zhǔn)脚抨?duì)器,② 集中 在 CPU 內(nèi),(1) 硬件實(shí)現(xiàn)(排隊(duì)器),INTR1,INTR2,INTR3,INTR4,INTR1 、 INTR2 、 INTR3 、 INTR4 優(yōu)先級 按 降序 排列,,37,A、B、C
36、 優(yōu)先級按 降序 排列,(2) 軟件實(shí)現(xiàn)(程序查詢),……,,,轉(zhuǎn) A 的服務(wù)程序入口地址,轉(zhuǎn) B 的服務(wù)程序入口地址,轉(zhuǎn) C 的服務(wù)程序入口地址,38,中斷服務(wù)程序入口地址的尋找,1. 硬件向量法,向量地址 12H、13H、14H入口地址 200、 300、 400,39,2. 軟件查詢法,M,……,,40,3. 中斷隱指令,(1) 保護(hù)程序斷點(diǎn),(2) 尋找服務(wù)程序入口地址,(3) 硬件 關(guān)中斷,PC,,,,,,,
37、斷點(diǎn)存于 特定地址( 0 號(hào)地址) 內(nèi),斷點(diǎn) 進(jìn)棧,INT 中斷標(biāo)記,EINT 允許中斷,R – S 觸發(fā)器,41,保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場,1. 保護(hù)現(xiàn)場,2. 恢復(fù)現(xiàn)場,,保護(hù)現(xiàn)場,其他服務(wù)程序,恢復(fù)現(xiàn)場,中斷返回,PUSH,視不同請求源而定,POP,中斷服務(wù)程序 完成,中斷服務(wù)程序,,中斷隱指令 完成,中斷服務(wù)程序 完成,IRET,42,1. 多重中斷的概念,,,,,,,,,,,,,,k,l,m,k +1,l +1,m
38、+1,程序斷點(diǎn) k+1 , l+1 , m+1,中斷屏蔽技術(shù),43,2. 實(shí)現(xiàn)多重中斷的條件,,,,,中斷請求,主程序,(2) 優(yōu)先級別高 的中斷源 有權(quán)中斷優(yōu)先級別低 的中斷源,(1) 提前 設(shè)置 開中斷 指令,,,,,,,44,3. 屏蔽技術(shù),(1) 屏蔽觸發(fā)器的作用,MASK = 0(未屏蔽),INTR 能被置 “1”,,,,,MASKi = 1 (屏蔽),INTPi = 0 (不能被排隊(duì)選中),45,(
39、2) 屏蔽字,16個(gè)中斷源 1、2、3 …… 16 按 降序 排列,46,(3) 屏蔽技術(shù)可改變優(yōu)先等級,(4) 屏蔽技術(shù)的其他作用,0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1,0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1,6# 比 5# 優(yōu)先級高,便于程序控制,可以 人為地屏蔽 某個(gè)中斷源的請求,47,,例1 假設(shè)某機(jī)有設(shè)備一、二、三和四共4個(gè)設(shè)備中斷源,每個(gè)中斷原具有不同的優(yōu)先權(quán),共1、2
40、、3、4級響應(yīng)優(yōu)先權(quán)。設(shè)其中斷源的優(yōu)先級別從高到低分別為1→2→3→4的順序。每級對應(yīng)1個(gè)屏蔽碼。表1列出中斷響應(yīng)優(yōu)先級與屏蔽級一致情況下的屏蔽碼。 表1,48,,假設(shè)當(dāng)CPU執(zhí)行主程序過程中同時(shí)出現(xiàn)設(shè)備2和3兩個(gè)中斷請求。按排隊(duì)線路,因設(shè)備2的優(yōu)先級高于3,故應(yīng)先響應(yīng)設(shè)備2中斷請求。執(zhí)行設(shè)備2的中斷服務(wù)程序并保護(hù)現(xiàn)場和原屏蔽字后,將2級程序的屏蔽碼置入各接口屏蔽寄存器,它將屏蔽3級的中斷請求。執(zhí)行
41、完2級服務(wù)程序后恢復(fù)原屏蔽碼,返回主程序后再響應(yīng)3級的中斷請求。 此時(shí)若4級又提出中斷請求,CPU暫不予理睬。3級中斷程序執(zhí)行完后再響應(yīng)4級的中斷。由圖10.5可知,縱向表示各中斷源申請中斷的先后時(shí)間,橫向表示中斷優(yōu)先級別。 假若CPU再次執(zhí)行2級中斷服務(wù)程序時(shí),出現(xiàn)了1級中斷請求,由于在執(zhí)行3級服務(wù)程序時(shí)已經(jīng)把其程序屏蔽字置入屏蔽寄存器了,這樣對1級中斷是開放的。因其1級優(yōu)先級高于2級,則CPU暫停對第2級中斷服務(wù)程
42、序的執(zhí)行,轉(zhuǎn)去執(zhí)行第1級中斷服務(wù)程序。等第1級中斷服務(wù)程序執(zhí)行完后,再去執(zhí)行第2級中斷服務(wù)程序。在本例中,中斷請求次序?yàn)?、3→4→2→l;而中斷完成次序?yàn)?→3→4→l→2,兩者不相同。,49,,圖10.5 多重中斷處理示意圖中斷請求 主程序 中斷處理程序 1 2
43、3 4,,3,2 4,,,,,,,,,,,,,,,,,,,,,,,,21,,50,(1) 斷點(diǎn)進(jìn)棧,(2) 斷點(diǎn)存入“ 0 ” 地址,中斷隱指令 完成,中斷周期,命令存儲(chǔ)器寫,三次中斷,三個(gè)斷點(diǎn)都存入 “ 0 ” 地址,多重中斷的斷點(diǎn)保護(hù),中斷隱指令 完成,51,(3) 程序斷點(diǎn)存入 “ 0 ” 地址的斷點(diǎn)保護(hù),SERVE,LDA SAVE,JMP @ RETURN,存程序斷點(diǎn),5 為向量地址,…,保護(hù)現(xiàn)場
44、,恢復(fù)現(xiàn)場,間址返回,存放 ACC 內(nèi)容,轉(zhuǎn)存 0 地址內(nèi)容,開中斷,ENI,52,,例2 在不改變硬件排隊(duì)響應(yīng)次序下,欲臨時(shí)改變上題中斷處理次序?yàn)?→4→3→2時(shí),則可以采用改變中斷屏蔽碼來實(shí)現(xiàn)。如表2所示。 在CPU執(zhí)行主程序過程中的某一時(shí)刻,1、2和4三個(gè)設(shè)備同時(shí)出現(xiàn)中斷請求信號(hào),首先響應(yīng)1級請求;當(dāng)返回主程序后,有硬件排隊(duì)線路決定先響應(yīng)2級請求,但2級屏蔽碼置入屏蔽寄存器后,由于2級對4級是開放的且屏蔽它本身,2
45、級服務(wù)程序執(zhí)行到開中斷指令后就被4級中斷;當(dāng)4級中斷服務(wù)程序執(zhí)行完后返回到2級程序,并執(zhí)行完2級服務(wù)程序后返回主程序。由此可知,它改變了硬件排隊(duì)所決定的響應(yīng)次序。當(dāng)?shù)诙M中斷請求出現(xiàn)時(shí),3級申請先出現(xiàn),故先響應(yīng)3級中斷,并執(zhí)行中斷服務(wù)程序。因3級對1級開放,所以當(dāng)1級請求出現(xiàn)時(shí),1級中斷了3級。當(dāng)1級服務(wù)程序執(zhí)行完后返回3級后,又由2級出現(xiàn)申請時(shí),由于3級對2級屏蔽,故當(dāng)3級執(zhí)行完返回主程序后才響應(yīng)2級請求并執(zhí)行執(zhí)行完后返回主程序。,5
46、3,,CPU執(zhí)行中斷的時(shí)序如圖10.6。 表2 中斷處理次序?yàn)?→4→3→2的屏蔽碼 圖10.6響應(yīng)次序與處理次序不一致時(shí)CPU的執(zhí)行時(shí)序,54,10.2.3 80X86的中斷功能,允許256個(gè)中斷源、0~2551.按中斷原因分:軟件中斷:執(zhí)行特定指令時(shí)產(chǎn)生的中斷硬件中斷:外部事件觸發(fā)產(chǎn)生的中斷2.中斷矢量:中斷服務(wù)程序入口地址的地址。3.中斷服務(wù)程序入口地址:放在 CS和IP中。,,55,4. 808
47、6中斷響應(yīng)過程,將類型碼乘4作為指向中斷矢量(向量)表內(nèi)的地址;標(biāo)志寄存器FR入棧,保護(hù)各個(gè)標(biāo)志位;將陷阱標(biāo)志寄存器TF的內(nèi)容送入暫存寄存器,清除中斷允許寄存器IR和TF的內(nèi)容,屏蔽新的外部中斷申請INTR和單步中斷。根據(jù)中斷矢量,從中斷矢量表中取中斷服務(wù)程序入口地址分別送入指令指針寄存器IP和程序段寄存器CS在中斷服務(wù)程序中通常要保護(hù)CPU內(nèi)部有關(guān)通用寄存器的內(nèi)容(保存現(xiàn)場),開中斷;中斷服務(wù)程序運(yùn)行結(jié)束后要恢復(fù)現(xiàn)場,返回被
48、中斷的程序繼續(xù)執(zhí)行下條指令。,56,10.2.4 可編程中斷控制器8259A簡介,1、功能:允許8個(gè)外部中斷源.可二級級聯(lián),最多可控制64個(gè)中斷源(9片)片內(nèi)可編程,自動(dòng)選擇不同的優(yōu)先級判定方式(固定優(yōu)先級和循環(huán)優(yōu)先級)選擇控制中斷方式對某個(gè)中斷可進(jìn)行屏蔽設(shè)置2、邏輯結(jié)構(gòu)圖:,57,圖10.7 可編程中斷控制器8259A邏輯結(jié)構(gòu)圖,,D7~D0,,INTA,,INTR,,中斷請求鎖存器,中斷屏蔽寄存器,數(shù)據(jù)總線緩沖器,,
49、,,IR0,IR7,讀/寫控制邏輯,級聯(lián)緩沖器比較器,,,,,CAS0,CSA1,CAS2,SP/EN,,,優(yōu)先權(quán)判別電路,正在服務(wù)寄存器,,,,,,,,,控制邏輯,,,,,,,,,,,,,,,58,,Intel 8259A中斷控制器件的內(nèi)部結(jié)構(gòu) 如圖 I0.7所示。它由八個(gè)部分組成;中斷請求寄存器、中斷狀態(tài)寄存器、優(yōu)先級判斷器、中斷屏蔽寄存器、中斷控制邏輯、數(shù)據(jù)緩沖器、級聯(lián)緩沖器/比較器和讀/寫邏輯。
50、 八位中斷請求寄存器接受外設(shè)來的中斷請求(IR0~I(xiàn)R7),每一位表示一個(gè)外部設(shè)備的中斷請求。 中斷寄存器的各位送入優(yōu)先級判斷器,根據(jù)中斷屏蔽寄存器和中斷狀態(tài)寄存器的狀態(tài)決定最高優(yōu)先級的中斷請求并將判優(yōu)結(jié)果送入中斷狀態(tài)寄存器。如果中斷請求被接受,則由控制邏輯向CPU發(fā)中斷請求INT。 D0~D7為雙向數(shù)據(jù)線、數(shù)據(jù)緩沖器暫時(shí)保存在內(nèi)部總線和系統(tǒng)數(shù)據(jù)總線間進(jìn)行傳送的數(shù)據(jù)。 讀/寫邏輯將決定
51、數(shù)據(jù)的傳送方向。RD為讀命令,而WR為寫命令。,59,,/CS為8259A芯片的選擇信號(hào),A0與8259A中被選的寄存器地址有關(guān)。 在8259A中,為每一個(gè)外設(shè)的中斷請求(IR0~I(xiàn)R7)設(shè)置一個(gè)中斷類型碼(8位),當(dāng)其中一個(gè)外設(shè)的中斷請求被CPU響應(yīng)后,8259A送出與該中斷所對應(yīng)的中斷類型碼作為尋找中斷服務(wù)程序入口的依據(jù)。中斷類型碼(8位)由兩部分組成,其高5位是由計(jì)算機(jī)初始化程序設(shè)置的,保存在8259A中以后不再改變;
52、低3位由被響應(yīng)的中斷請求序號(hào)提供。例如,IR3的中斷請求被響應(yīng),中斷類型碼的低3位即為011。在同一個(gè)8259A中,高5位為8個(gè)中斷請求共用(類型地址高位編號(hào))。假設(shè)與IR0對應(yīng)的中斷類型碼為40H,那么與IR1~I(xiàn)R7對應(yīng)的中斷類型碼為4lH~47H。 每個(gè)8259A最多能控制8個(gè)外部中斷信號(hào),但可將多個(gè)8259A級聯(lián)以處理多達(dá)64個(gè)中斷請求、它允許有一個(gè)主單元和多個(gè)(不超過8個(gè))從單元,稱為主從系統(tǒng)。如下圖所示。,60
53、,8259級聯(lián)工作示意圖,61,,8259允許采用多種中斷優(yōu)先級選擇方式和屏蔽方式。 8259A的中斷優(yōu)先級選擇方式具有完全嵌套方式、輪換優(yōu)先級A,輪換優(yōu)先級B和查詢方式。完全嵌套方式是一種固定優(yōu)先級方式,連至IR0的外圍設(shè)備優(yōu)先權(quán)最高,而連至IR7的優(yōu)先權(quán)最低。這種固定優(yōu)先級方式對級別低的中斷不利,在某些情況下,最低級別的中斷請求可能一直不能被處理。 輪換優(yōu)先級方式A,每個(gè)級別的中斷保證有機(jī)會(huì)被處理。它把給定的中
54、斷級別處理完后,立即把它放到最低級別的位置上去。輪換優(yōu)先級方式B要求CPU可在任何時(shí)間規(guī)定最低優(yōu)先級,然后按順序規(guī)定其他IR線上的優(yōu)先級。查詢方式由8259給出一個(gè)狀態(tài)字表示出正在請求中斷的最高憂先級IR線,并能表示出中斷請求是否有效。,62,設(shè)備1,接口,菊花鏈邏輯電路,,,,,,,,,設(shè)備2,接口,菊花鏈邏輯電路,,,,,,,,設(shè)備3,接口,菊花鏈邏輯電路,,,,,,,,,,,,,,,,,,,CPU以及總線控制邏輯
55、 INTA INTR,,,,,,,,,,,,,,,中斷回答,中斷請求,,菊花鏈?zhǔn)脚袃?yōu)法,+5v,63,,8259A單元提供了兩種屏蔽方式,簡單屏蔽方式和特殊屏蔽方式。簡單屏蔽方式提供了8位的屏蔽字,每位對應(yīng)著各自的IR線被置位的任何一位就禁止了相應(yīng)IR線上的中斷。 特殊屏蔽方式允許CPU讓來自低優(yōu)先級外設(shè)的中斷去中斷高優(yōu)先級的服務(wù)程序。當(dāng)8位屏蔽位的某一位被置‘0’時(shí),則對應(yīng)此位的IR
56、線上的外設(shè)中斷可中斷比它高優(yōu)先級別的服務(wù)程序。例如,若屏蔽字為1110 1111,說明IR4線上的中斷可中斷任何高級別的中斷服務(wù)程序。 8259A單元的不同工作方式是通過編程來進(jìn)行選擇的,CPU送出一系列的初始化控制字和操作控制字來執(zhí)行選定的操作。CPU將8259當(dāng)作兩個(gè)I/O端口或兩個(gè)存儲(chǔ)單元來尋址,由A0端確定這些控制字存入讀/寫邏輯中哪個(gè)控制字寄存器。,64,,10.3 DMA(Direct Memory Access)
57、 輸入輸出方式 高速大容量存儲(chǔ)器和主存之間交換時(shí),若采用程序直接傳送或程序中斷傳送的方式,則會(huì)有如下問題發(fā)生。 1)采用程序直接傳送,主機(jī)工作效率受到限制。 2)采用中斷控制數(shù)據(jù)傳送可以提高主機(jī)效率,但用于高速外設(shè)和主機(jī)交換信息,會(huì)使主機(jī)處于頻繁的中斷與返回過程中,從而加重了與中斷有關(guān)的額外負(fù)擔(dān)(即保護(hù)舊現(xiàn)場,恢復(fù)新現(xiàn)場),這樣降低了CPU的性能,還有丟失數(shù)據(jù)的可能。所以對高速I/O設(shè)備,用中斷傳送控
58、制方式也是不合適的。應(yīng)采用直接存儲(chǔ)器訪問方式傳送,即DMA方式較為合適。,65,,,,66,,DMA是l/O設(shè)備與主存儲(chǔ)器之間由硬件組成的直接數(shù)據(jù)通路,主要用于高速I/O設(shè)備與主存之間的成組數(shù)據(jù)傳送。數(shù)據(jù)傳送時(shí)是在DMA控制器控制下進(jìn)行的,由DMA控制器給出當(dāng)前正在傳送的數(shù)據(jù)字的主存地址,并統(tǒng)計(jì)傳送數(shù)據(jù)的個(gè)數(shù)以確定一組數(shù)據(jù)的傳送是否已結(jié)束。在主存中要開辟連續(xù)地址的專用緩沖器,用來提供或接收傳送的數(shù)據(jù)。在數(shù)據(jù)傳送之前和結(jié)束后要通過程序或中
59、斷方式對緩沖器和DMA控制器進(jìn)行預(yù)處理和后處理。 對磁盤的讀寫是以數(shù)據(jù)塊為單位進(jìn)行的,一旦找到數(shù)據(jù)塊的起始位置就將連續(xù)地讀寫。 而計(jì)算機(jī)通過通信設(shè)備與外部通信時(shí),常以數(shù)據(jù)幀為單位進(jìn)行批量傳送。但在大批量數(shù)據(jù)采集系統(tǒng)中,也可以采用DMA方式。,67,,1.CPU暫停方式 主機(jī)響應(yīng)DMA請求后讓出存儲(chǔ)總線,直到一組數(shù)據(jù)傳送完畢后,DMA控制器才把總線控制權(quán)交還給CPU。采用這種工作方式的I/O設(shè)備,在其接口中一般設(shè)
60、置有存取速度較快的小容量存儲(chǔ)器。I/O設(shè)備與小容量存儲(chǔ)器先交換數(shù)據(jù),然后小容量存儲(chǔ)器再與主機(jī)交換數(shù)據(jù),這樣可減少DMA傳送占用存儲(chǔ)總線的時(shí)間,也即減少CPU暫停工作時(shí)間。這種方式也稱為成組連續(xù)傳送方式,它可減少系統(tǒng)總線控制權(quán)的交換次數(shù),有利于提高輸入輸出速度。適用于高速外設(shè)或單用戶狀態(tài)下的個(gè)人計(jì)算機(jī)。2. CPU周期竊取方式 DMA控制器與主存儲(chǔ)器之間傳送一個(gè)數(shù)據(jù)占用(竊?。┮粋€(gè)CPU周期即CPU暫停工作一個(gè)周期,然后繼續(xù)
61、執(zhí)行程序。這種方式也稱為單字傳送方式。,10.3.1 DMA三種工作方式,68,,3.直接訪問存儲(chǔ)器工作方式 這是標(biāo)準(zhǔn)的 DMA工作方式。如傳送數(shù)據(jù)時(shí)CPU正好不占用存儲(chǔ)總線,則對 CPU不產(chǎn)生任何影響。如同時(shí)需要訪問存儲(chǔ)總線,則DMA的優(yōu)先級高于CPU。 10.3.2 DMA控制器組成 DMA控制器基本組成如圖10.8所示。它包括多個(gè)設(shè)備寄存器、中斷控制和DMA控制邏輯等。DMA控制器中包含多個(gè)寄存器,主
62、要的寄存器有: (1)主存地址寄存器(MAR):該寄存器初始值為主在緩沖區(qū)的首地址,在傳送前要由程序送入。主存緩沖區(qū)地址是連續(xù)的。在DMA傳迭期間,每交換一個(gè)字由硬件邏輯將其自動(dòng)加1而成為下一次數(shù)據(jù)傳送的主存地址。 (2)外圍設(shè)備地址寄存器(ADR):該寄存器存放I/O設(shè)備的設(shè)備碼或者表示設(shè)備信息存儲(chǔ)區(qū)的尋址信息,如磁盤數(shù)據(jù)所在的區(qū)號(hào)、盤面號(hào)和柱面號(hào)等。具體內(nèi)容取決于I/O設(shè)備的數(shù)據(jù)格式和地址字編址方式。,69,,(3)字
63、數(shù)計(jì)數(shù)器(WC):該計(jì)數(shù)器對傳送數(shù)據(jù)的總字?jǐn)?shù)進(jìn)行統(tǒng)計(jì),在傳送開始前,由程序?qū)⒁獋魉偷囊唤M數(shù)據(jù)的字?jǐn)?shù)送入 WC,以后每傳送一個(gè)字(或字節(jié))計(jì)數(shù)器自動(dòng)減 1,當(dāng)WC內(nèi)容為零時(shí)表示數(shù)據(jù)已全部傳送完畢。 (4)控制與狀態(tài)寄存器(CSR):該寄存器用來存放控制率和狀態(tài)字,有的接口中使用兩個(gè)寄存器分別存放控制字和狀態(tài)字。 (5)數(shù)據(jù)緩沖寄存器(DBR):該寄存器用來暫存I/O設(shè)備與主存?zhèn)魉偷臄?shù)據(jù)。通常DMA與主存之間是按字傳送的,而DM
64、A與設(shè)備之間時(shí)能是按字節(jié)或塊傳送的。因此,DMA還可能要包括裝配和拆卸字信息的硬件。如數(shù)據(jù)移位緩沖寄存器、字節(jié)計(jì)數(shù)器等。 各寄存器均有自己的總線地址,它們是主存的指定單元或I/O設(shè)備號(hào),CPU可對這些寄存器進(jìn)行讀/寫。,70,DMA控制器結(jié)構(gòu),71,,此外還有中斷控制邏輯 DMA中斷控制邏輯負(fù)責(zé)申請CPU對DMA進(jìn)行預(yù)處理和后處理。 DMA控制邏輯 一般包括設(shè)備碼選擇電路;DMA優(yōu)先排隊(duì)電路,產(chǎn)生DMA請求的線路
65、等;在DMA取得總線控制權(quán)后控制主存和設(shè)備之間的數(shù)據(jù)傳送; DMA接口與主機(jī)和I/O設(shè)備兩個(gè)方向的數(shù)據(jù)線、地址線和控制信號(hào)線以及有關(guān)收發(fā)與驅(qū)動(dòng)線路。 DMA傳送是直接依靠硬件實(shí)現(xiàn)的,這是它不同于程序查詢方式、中斷傳送訪時(shí)之處。原理方框圖如下:,72,,數(shù)據(jù)總線,控制總線,地址譯碼器,,地址總線,,,,,總線請求,總線允許,控制寄存器,狀態(tài)寄存器,地址寄存器,字節(jié)計(jì)數(shù)器,,,,DMA請求,DMA回答,計(jì)數(shù)結(jié)束信號(hào),DMA
66、控制器框圖,73,,10.3.3 DMA的數(shù)據(jù)傳送過程 DMA的數(shù)據(jù)傳送過程可分為三個(gè)階段。DMA傳送前預(yù)處理、數(shù)據(jù)傳送及傳送后處理。1. DMA預(yù)處理 在進(jìn)行DMA數(shù)據(jù)傳送之前要用程序做一些必要的準(zhǔn)備工作。先由CPU執(zhí)行幾條輸入輸出指令測試設(shè)備狀態(tài);向DMA控制器的設(shè)備地址寄存器中送入設(shè)備地址并啟動(dòng)設(shè)備;在主存地址寄存器中送入交換數(shù)據(jù)的主存起始地址;在數(shù)據(jù)字?jǐn)?shù)寄存器中送入交換的數(shù)據(jù)個(gè)數(shù)。 在這些工作完成之后,
67、CPU繼續(xù)執(zhí)行原來的程序等待設(shè)備發(fā)出DMA申請。,,,N,,,CPU預(yù)處理,,,數(shù)據(jù)傳送,,,后處理,,,DMA請求,,,,,,圖10.9 DMA數(shù)據(jù)傳送過程,,N,Y,Y,75,,2. DMA控制I/0設(shè)備與主存之間的數(shù)據(jù)交換 I/O設(shè)備啟動(dòng)后,若為輸入數(shù)據(jù),則要進(jìn)行以下操作 (1)從輸入介質(zhì)讀入一個(gè)字到數(shù)據(jù)緩沖寄存器 DBR中,如 I/0設(shè)備是面向字符的,也就是一次讀入的數(shù)據(jù)為一個(gè)字節(jié),則組成一個(gè)字需經(jīng)裝配。
68、 (2)向CPU發(fā)DMA請求,在取得總線控制權(quán)后將DBR中的數(shù)據(jù)送入主存的數(shù)據(jù)寄存器。 (3)將DMA中的MAR內(nèi)容送主存的地址寄存器,啟動(dòng)寫操作將數(shù)據(jù)寫入主存。 (4)將WC內(nèi)容減1;將MAR的內(nèi)容加1,給出下一個(gè)字的地址。 (5) 判斷WC是否為“0”,若不是,說明還有數(shù)據(jù)需要傳送,檢查無錯(cuò)后準(zhǔn)備下一字的輸入。若WC為“0”,表明一組數(shù)據(jù)已傳送完畢,此時(shí)應(yīng)置結(jié)束標(biāo)志向CPU發(fā)中斷請求。,76,,若為輸出數(shù)據(jù)應(yīng)
69、進(jìn)行以下操作(1)將MAR的內(nèi)容送主存的地址寄存器。(2)啟動(dòng)主存讀操作,將對應(yīng)單元的內(nèi)容讀入主存的數(shù)據(jù)寄存器(3)將主存數(shù)據(jù)寄存器的內(nèi)容送到DMA的DBR中。(4)將DBR的內(nèi)容送到輸出設(shè)備,若為字符設(shè)備則需將DBR內(nèi)容拆成字符輸出。(5)將 WC內(nèi)容減 1,MAR內(nèi)容加 1,為下一個(gè)字的輸出做好準(zhǔn)備。(6)判斷WC的內(nèi)容是否為0。如不為0,說明還需繼續(xù)傳送。輸出設(shè)備處理完數(shù)據(jù)后,發(fā)DMA請求。如 WC為0或檢驗(yàn)有錯(cuò)則停止
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第11章高級輸出與輸入-read
- 串行輸入輸出接口
- 計(jì)算機(jī)外部設(shè)備實(shí)訓(xùn)室的建設(shè)與應(yīng)用
- 第6章 外部存儲(chǔ)設(shè)備
- 第9章 常見輸入設(shè)備
- 虛擬桌面中外部設(shè)備支持機(jī)制的研究.pdf
- 第7章 輸出設(shè)備
- 第5章mcs-51單片機(jī)的輸入輸出通道接口
- 面向虛擬環(huán)境的外部設(shè)備接入系統(tǒng).pdf
- 智能數(shù)字集群通信終端的外部設(shè)備管理與驅(qū)動(dòng)設(shè)計(jì).pdf
- 輸入輸出接口及通道分配.doc
- 艦載武器系統(tǒng)外部設(shè)備模擬系統(tǒng)研究.pdf
- 計(jì)算機(jī)外部設(shè)備裝配調(diào)試員考前練習(xí)題與答案
- 第七章計(jì)算機(jī)輸入輸出系統(tǒng)與接口技術(shù)
- 輸入輸出接口及通道分配.doc
- 計(jì)算機(jī)外部設(shè)備裝配調(diào)試員考前練習(xí)題與答案
- vc++講義第10單元 圖形設(shè)備接口
- 第10章傳熱設(shè)備的控制
- 第4章(學(xué)案) 細(xì)胞的物質(zhì)輸入和輸出 閱讀探究
- 認(rèn)識(shí)輸入輸出設(shè)備
評論
0/150
提交評論