




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,計(jì)算機(jī)組成原理,2,第9章輸入輸出系統(tǒng),3,計(jì)算機(jī)的輸入輸出系統(tǒng)是整個(gè)計(jì)算機(jī)系統(tǒng)中最具有多樣性和復(fù)雜性的部分,本章首先討論主機(jī)與外設(shè)之間的連接問(wèn)題,重點(diǎn)介紹程序查詢(xún)方式、程序中斷方式、DMA方式、通道方式等4種輸入輸出控制方式。,4,本章學(xué)習(xí)內(nèi)容,9.1 主機(jī)與外設(shè)的連接 9.2 程序查詢(xún)方式及其接口 9.3 中斷系統(tǒng)和程序中斷方式 9.4 DMA方式及其接口 9.5 通道控制方式,5,本章學(xué)習(xí)要求,了解:接口的基本組成,接口和端口概念 了解:程序查詢(xún)方式的特點(diǎn)和工作流程 理解:程序中斷的基本概念,程序中斷與調(diào)用子程序的區(qū)別 掌握:CPU響應(yīng)中斷的條件和中斷隱指令概念 理解:中斷的各個(gè)過(guò)程
2、 了解:DMA方式的特點(diǎn)和DMA接口的組成 理解:DMA傳送方法和DMA傳送過(guò)程。 了解:通道控制方式和通道控制的類(lèi)型 了解:總線控制,6,9.1 主機(jī)與外設(shè)的連接,現(xiàn)代計(jì)算機(jī)系統(tǒng)中外部設(shè)備的種類(lèi)繁多,各類(lèi)外部設(shè)備不僅結(jié)構(gòu)和工作原理不同,而且與主機(jī)的連接方式也是復(fù)雜多變的。,7,9.1.1 輸入輸出接口,主機(jī)和外設(shè)的連接方式有輻射型連接、總線型連接等。輸入輸出接口(I/O接口)是主機(jī)和外設(shè)之間的交接界面,通過(guò)接口可以實(shí)現(xiàn)主機(jī)和外設(shè)之間的信息交換。 主機(jī)和外設(shè)之間進(jìn)行信息交換為什么一定要通過(guò)接口呢?這是因?yàn)橹鳈C(jī)和外設(shè)各自具有自己的工作特點(diǎn),它們?cè)谛畔⑿问胶凸ぷ魉俣壬暇哂泻艽蟮牟町?,接口正是為了?/p>
3、決這些差異而設(shè)置的。,8,1.接口的功能 實(shí)現(xiàn)主機(jī)和外設(shè)的通信聯(lián)絡(luò)控制 接口中的同步控制電路用來(lái)解決主機(jī)與外設(shè)的時(shí)間配合問(wèn)題。 進(jìn)行地址譯碼和設(shè)備選擇 任何一個(gè)計(jì)算機(jī)系統(tǒng)都配備有多種外設(shè),同一種外設(shè)也可能配備多臺(tái),主機(jī)在不同時(shí)刻要與不同外設(shè)交換信息,當(dāng)CPU送來(lái)選擇外設(shè)的地址碼后,接口必須對(duì)地址進(jìn)行譯碼以產(chǎn)生設(shè)備選擇信息,使主機(jī)能和指定外設(shè)交換信息。,9.1.2 接口的功能和基本組成,9,1.接口的功能(續(xù)),實(shí)現(xiàn)數(shù)據(jù)緩沖 在接口電路中,一般設(shè)置有一個(gè)或幾個(gè)數(shù)據(jù)緩沖寄存器,用于數(shù)據(jù)的暫存,以避免因速度不一致而丟失數(shù)據(jù)。在傳送過(guò)程中,先將數(shù)據(jù)送入數(shù)據(jù)緩沖寄存器中,然后再送到輸出設(shè)備或主機(jī)中去。
4、數(shù)據(jù)格式的變換 在輸入或輸出操作過(guò)程中,為了滿足主機(jī)或外設(shè)的各自要求,接口電路中必須具有實(shí)現(xiàn)各類(lèi)數(shù)據(jù)相互轉(zhuǎn)換的功能。例如:并串轉(zhuǎn)換、串并轉(zhuǎn)換、模數(shù)轉(zhuǎn)換、數(shù)模轉(zhuǎn)換以及二進(jìn)制數(shù)和ASCII碼的相互轉(zhuǎn)換等。,10,1.接口的功能(續(xù)),傳遞控制命令和狀態(tài)信息 當(dāng)CPU要啟動(dòng)某一外設(shè)時(shí),通過(guò)接口中的命令寄存器向外設(shè)發(fā)出啟動(dòng)命令;當(dāng)外設(shè)準(zhǔn)備就緒時(shí),則有“準(zhǔn)備好”狀態(tài)信息送回接口中的狀態(tài)寄存器,為CPU提供反饋信息,告訴CPU,外設(shè)已經(jīng)具備與主機(jī)交換數(shù)據(jù)的條件。當(dāng)外設(shè)向CPU提出中斷請(qǐng)求和DMA請(qǐng)求時(shí),CPU也應(yīng)有相應(yīng)的響應(yīng)信號(hào)反饋給外設(shè)。,11,接口中要分別傳送數(shù)據(jù)信息、控制信息和狀態(tài)信息,數(shù)據(jù)信息、控
5、制信息和狀態(tài)信息都通過(guò)數(shù)據(jù)總線來(lái)傳送。大多數(shù)計(jì)算機(jī)都把外部設(shè)備的狀態(tài)信息視為輸入數(shù)據(jù),而把控制信息看成輸出數(shù)據(jù),并在接口中分設(shè)各自相應(yīng)的寄存器,賦以不同的端口地址,各種信息分時(shí)地使用數(shù)據(jù)總線傳送到各自的寄存器中去。,2.接口的基本組成,12,圖9-1 接口與主機(jī)、外設(shè)間的連接示意圖,接口與主機(jī)、外設(shè)間的連接示意圖,13,接口與端口是兩個(gè)不同的概念。端口是指接口電路中可以被CPU直接訪問(wèn)的寄存器,若干個(gè)端口加上相應(yīng)的控制邏輯電路才組成接口。 通常,一個(gè)接口中包含有數(shù)據(jù)端口、命令端口和狀態(tài)端口。存放數(shù)據(jù)信息的寄存器稱(chēng)為數(shù)據(jù)端口,存放控制命令的寄存器稱(chēng)為命令端口,存放狀態(tài)信息的寄存器稱(chēng)為狀態(tài)端口。C
6、PU通過(guò)輸入指令可以從有關(guān)端口中讀取信息,通過(guò)輸出指令可以把信息寫(xiě)入有關(guān)端口。,2.接口的基本組成(續(xù)),14,CPU對(duì)不同端口的操作有所不同,有的端口只能寫(xiě)或只能讀,有的端口既可以讀又可以寫(xiě)。例如:對(duì)狀態(tài)端口只能讀,可將外設(shè)的狀態(tài)標(biāo)志送到CPU中去;對(duì)命令端口只能寫(xiě),可將CPU的各種控制命令發(fā)送給外設(shè)。為了節(jié)省硬件,在有的接口電路中,狀態(tài)信息和控制信息可以共用一個(gè)寄存器(端口),稱(chēng)之為設(shè)備的控制/狀態(tài)寄存器。,2.接口的基本組成(續(xù)),15,輸入輸出接口的分類(lèi)可以從不同的角度來(lái)考慮。 按數(shù)據(jù)傳送方式分類(lèi) 按主機(jī)訪問(wèn)I/O設(shè)備的控制方式分類(lèi) 按功能選擇的靈活性分類(lèi) 按通用性分類(lèi) 按輸入輸出的信
7、號(hào)分類(lèi) 按應(yīng)用來(lái)分類(lèi),3.接口的類(lèi)型,16,為了能在眾多的外設(shè)中尋找或挑選出要與主機(jī)進(jìn)行信息交換的外設(shè),就必須對(duì)外設(shè)進(jìn)行編址。外設(shè)識(shí)別是通過(guò)地址總線和接口電路中的外設(shè)識(shí)別電路來(lái)實(shí)現(xiàn)的,I/O端口地址就是主機(jī)與外設(shè)直接通信的地址,CPU可以通過(guò)端口發(fā)送命令、讀取狀態(tài)和傳送數(shù)據(jù)。,9.1.3 外設(shè)的識(shí)別與端口尋址,17,I/O端口編址方式有兩種:一種是I/O映射方式,即把I/O端口地址與存儲(chǔ)器地址分別進(jìn)行獨(dú)立的編址;另一種是存儲(chǔ)器映射方式,即把端口地址與存儲(chǔ)器地址統(tǒng)一編址。 獨(dú)立編址 在這種編址方式中,主存地址空間和I/O端口地址空間是相對(duì)獨(dú)立的,分別單獨(dú)編址。CPU訪問(wèn)主存時(shí),由主存讀寫(xiě)控制線控
8、制;訪問(wèn)外設(shè)時(shí),由I/O讀寫(xiě)控制線控制。,1.端口地址編址方式,18,統(tǒng)一編址 在這種編址方式中,I/O端口地址和主存單元的地址是統(tǒng)一編址的,把I/O接口中的端口作為主存單元一樣進(jìn)行訪問(wèn),不設(shè)置專(zhuān)門(mén)的I/O指令。,1.端口地址編址方式(續(xù)),19,獨(dú)立編址方式在Intel系列、Z80系列微機(jī)及大型計(jì)算機(jī)中得到廣泛應(yīng)用,Intel 80 x86的I/O地址空間由216(64K)個(gè)獨(dú)立編址的8位端口組成。兩個(gè)連續(xù)的8位端口可作為16位端口處理;四個(gè)連續(xù)的8位端口可作為32位端口處理。因此,I/O地址空間最多能提供64K個(gè)8位端口、32K個(gè)16位端口、16K個(gè)32位端口或總?cè)萘坎怀^(guò)64KB的不同端
9、口的組合。,2.獨(dú)立編址方式的端口訪問(wèn),20,80 x86的專(zhuān)用I/O指令I(lǐng)N和OUT有直接尋址和間接尋址兩種類(lèi)型。直接尋址I/O端口的尋址范圍為000000FFH,至多為256個(gè)端口地址。 間接尋址由DX寄存器間接給出I/O端口地址。DX寄存器長(zhǎng)16位,所以最多可尋址216=64K個(gè)端口地址。 CPU一次可實(shí)現(xiàn)字節(jié)(8位)、字(16位)或雙字(32位)的數(shù)據(jù)傳送。32位端口應(yīng)對(duì)準(zhǔn)可被4整除的偶地址;16位端口應(yīng)對(duì)準(zhǔn)偶地址;8位端口可定位在偶地址,也可定位在奇地址。,2.獨(dú)立編址方式的端口訪問(wèn)(續(xù)),21,9.1.4 輸入輸出信息傳送控制方式,主機(jī)和外設(shè)之間的信息傳送控制方式,經(jīng)歷了由低級(jí)到高
10、級(jí)、由簡(jiǎn)單到復(fù)雜、由集中管理到各部件分散管理的發(fā)展過(guò)程,按其發(fā)展的先后次序和主機(jī)與外設(shè)并行工作的程度,可以分為4種。,22,1.程序查詢(xún)方式,程序查詢(xún)方式是一種程序直接控制方式,這是主機(jī)與外設(shè)間進(jìn)行信息交換的最簡(jiǎn)單方式,輸入和輸出完全是通過(guò)CPU執(zhí)行程序來(lái)完成的。一旦某一外設(shè)被選中并啟動(dòng)之后,主機(jī)將查詢(xún)這個(gè)外設(shè)的某些狀態(tài)位,看其是否準(zhǔn)備就緒?若外設(shè)未準(zhǔn)備就緒,主機(jī)將再次查詢(xún);若外設(shè)已準(zhǔn)備就緒,則執(zhí)行一次I/O操作。 這種方式控制簡(jiǎn)單,但外設(shè)和主機(jī)不能同時(shí)工作,各外設(shè)之間也不能同時(shí)工作,系統(tǒng)效率很低,因此,僅適用于外設(shè)的數(shù)目不多,對(duì)I/O處理的實(shí)時(shí)要求不那么高,CPU的操作任務(wù)比較單一,并不很忙
11、的情況。,23,在主機(jī)啟動(dòng)外設(shè)后,無(wú)須等待查詢(xún),而是繼續(xù)執(zhí)行原來(lái)的程序,外設(shè)在做好輸入輸出準(zhǔn)備時(shí),向主機(jī)發(fā)中斷請(qǐng)求,主機(jī)接到請(qǐng)求后就暫時(shí)中止原來(lái)執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序?qū)ν獠空?qǐng)求進(jìn)行處理,在中斷處理完畢后返回原來(lái)的程序繼續(xù)執(zhí)行。顯然,程序中斷不僅適用于外部設(shè)備的輸入輸出操作,也適用于對(duì)外界發(fā)生的隨機(jī)事件的處理。 完成一次程序中斷還需要許多輔助操作,主要適用于中、低速外設(shè)。,2.程序中斷方式,24,DMA方式是在主存和外設(shè)之間開(kāi)辟直接的數(shù)據(jù)通路,可以進(jìn)行基本上不需要CPU介入的主存和外設(shè)之間的信息傳送,這樣不僅能保證CPU的高效率,而且能滿足高速外設(shè)的需要。 DMA方式只能進(jìn)行簡(jiǎn)單的數(shù)據(jù)
12、傳送操作,在數(shù)據(jù)塊傳送的起始和結(jié)束時(shí)還需CPU及中斷系統(tǒng)進(jìn)行預(yù)處理和后處理。,3.直接存儲(chǔ)器存?。―MA)方式,25,I/O通道控制方式是DMA方式的進(jìn)一步發(fā)展,在系統(tǒng)中設(shè)有通道控制部件,每個(gè)通道掛若干外設(shè),主機(jī)在執(zhí)行I/O操作時(shí),只需啟動(dòng)有關(guān)通道,通道將執(zhí)行通道程序,從而完成I/O操作。 通道是一個(gè)具有特殊功能的處理器,它能獨(dú)立地執(zhí)行通道程序,產(chǎn)生相應(yīng)的控制信號(hào),實(shí)現(xiàn)對(duì)外設(shè)的統(tǒng)一管理和外設(shè)與主存之間的數(shù)據(jù)傳送。但它不是一個(gè)完全獨(dú)立的處理器。它要在CPU的I/O指令指揮下才能啟動(dòng)、停止或改變工作狀態(tài),是從屬于CPU的一個(gè)專(zhuān)用處理器。,4.I/O通道控制方式,26,一個(gè)通道執(zhí)行輸入輸出過(guò)程全部由
13、通道按照通道程序自行處理,不論交換信息多少,只打擾CPU兩次(啟動(dòng)和停止時(shí))。因此,主機(jī)、外設(shè)和通道可以并行同時(shí)工作,而且一個(gè)通道可以控制多臺(tái)不同類(lèi)型的設(shè)備。 目前,小型、微型機(jī)大多采用程序查詢(xún)方式、程序中斷方式和DMA方式;大、中型機(jī)多采用通道方式。,4.I/O通道控制方式(續(xù)),27,程序查詢(xún)方式是主機(jī)與外設(shè)間進(jìn)行信息交換的最簡(jiǎn)單方式,程序查詢(xún)方式的核心問(wèn)題在于需要不斷地查詢(xún)I/O設(shè)備是否準(zhǔn)備就緒。,9.2 程序查詢(xún)方式及其接口,28,1.程序查詢(xún)的基本思想 由CPU執(zhí)行一段輸入輸出程序來(lái)實(shí)現(xiàn)主機(jī)與外設(shè)之間數(shù)據(jù)傳送的方式叫做程序直接控制方式。根據(jù)外設(shè)的不同性質(zhì),這種傳送方式又可分為無(wú)條件傳
14、送和程序查詢(xún)方式兩種。 為了保證數(shù)據(jù)傳送的正確進(jìn)行,就要求CPU在程序中查詢(xún)外設(shè)的工作狀態(tài)。如果外設(shè)尚未準(zhǔn)備就緒,CPU就循環(huán)等待,只有當(dāng)外設(shè)已作好準(zhǔn)備,CPU才能執(zhí)行I/O指令進(jìn)行數(shù)據(jù)傳送,這就是程序查詢(xún)方式。,9.2.1 程序查詢(xún)方式,29,2.程序查詢(xún)方式的工作流程,預(yù)置傳送參數(shù)。在傳送數(shù)據(jù)之前,由CPU執(zhí)行一段初始化程序,預(yù)置傳送參數(shù)。傳送參數(shù)包括存取數(shù)據(jù)的主存緩沖區(qū)首地址和傳送數(shù)據(jù)的個(gè)數(shù)。 向外設(shè)接口發(fā)出命令字。當(dāng)CPU選中某臺(tái)外設(shè)時(shí),執(zhí)行輸出指令向外設(shè)接口發(fā)出命令字啟動(dòng)外設(shè),為接收數(shù)據(jù)或發(fā)送數(shù)據(jù)做應(yīng)有的操作準(zhǔn)備。 從外設(shè)接口取回狀態(tài)字。CPU執(zhí)行輸入指令,從外設(shè)接口中取回狀態(tài)字并進(jìn)
15、行測(cè)試,判斷數(shù)據(jù)傳送是否可以進(jìn)行。,30,2.程序查詢(xún)方式的工作流程(續(xù)),查詢(xún)外設(shè)標(biāo)志。CPU不斷查詢(xún)狀態(tài)標(biāo)志。如果外設(shè)沒(méi)有準(zhǔn)備就緒,CPU就踏步進(jìn)行等待,一直到這個(gè)外設(shè)準(zhǔn)備就緒,并發(fā)出“外設(shè)準(zhǔn)備就緒”信號(hào)為止。 傳送數(shù)據(jù)。只有外設(shè)準(zhǔn)備好,才能實(shí)現(xiàn)主機(jī)與外設(shè)間的一次數(shù)據(jù)傳送。輸入時(shí),CPU執(zhí)行輸入指令,從外設(shè)接口的數(shù)據(jù)緩沖寄存器中接收數(shù)據(jù);輸出時(shí),CPU執(zhí)行輸出指令,將數(shù)據(jù)寫(xiě)入外設(shè)接口的數(shù)據(jù)緩沖寄存器中。,31,2.程序查詢(xún)方式的工作流程(續(xù)),修改傳送參數(shù)。每進(jìn)行一次數(shù)據(jù)傳送之后必須要修改傳送參數(shù),其中包括主存緩沖區(qū)地址加1,傳送個(gè)數(shù)計(jì)數(shù)器減1。 判斷傳送是否結(jié)束。如果傳送個(gè)數(shù)計(jì)數(shù)器不為0
16、,則轉(zhuǎn)第步,繼續(xù)傳送,直到傳送個(gè)數(shù)計(jì)數(shù)器為0,表示傳送結(jié)束。,32,程序查詢(xún)方式流程,圖9-2 程序查詢(xún)方式流程,33,程序查詢(xún)方式是最簡(jiǎn)單、經(jīng)濟(jì)的I/O方式,只需很少的硬件。通常接口中至少有兩個(gè)寄存器,一個(gè)是數(shù)據(jù)緩沖寄存器,即數(shù)據(jù)端口,用來(lái)存放與CPU進(jìn)行傳送的數(shù)據(jù)信息;另一個(gè)是供CPU查詢(xún)的設(shè)備狀態(tài)寄存器,即狀態(tài)端口,這個(gè)寄存器由多個(gè)標(biāo)志位組成,其中最重要的是“外設(shè)準(zhǔn)備就緒”標(biāo)志。當(dāng)CPU得到這位標(biāo)志后就進(jìn)行判斷,以決定下一步是繼續(xù)循環(huán)等待還是進(jìn)行I/O傳送。也有些計(jì)算機(jī)僅設(shè)置狀態(tài)標(biāo)志觸發(fā)器,其作用與設(shè)備狀態(tài)寄存器相同。,9.2.2 程序查詢(xún)方式接口,34,圖9-3為查詢(xún)式輸入接口電路,圖
17、中Ready為準(zhǔn)備好觸發(fā)器,它對(duì)應(yīng)于設(shè)備狀態(tài)寄存器的D0位。 在輸入設(shè)備準(zhǔn)備好數(shù)據(jù)時(shí),發(fā)出一個(gè)選通信號(hào)(STB),一方面將數(shù)據(jù)送入鎖存器,同時(shí)將Ready觸發(fā)器置“1”,以表示接口電路中已有數(shù)據(jù)(即準(zhǔn)備就緒)。CPU要從外設(shè)輸入數(shù)據(jù)時(shí),先執(zhí)行輸入指令讀取狀態(tài)字,如Ready=1,再執(zhí)行輸入指令從鎖存器中讀取數(shù)據(jù),同時(shí)把Ready觸發(fā)器清“0”,以準(zhǔn)備從外設(shè)接收下一個(gè)數(shù)據(jù);如Ready=0,則踏步等待,繼續(xù)讀取狀態(tài)字,直至Ready=1為止。,1.輸入接口,35,查詢(xún)式輸入接口電路,圖9-3 查詢(xún)式輸入接口電路,36,圖9-4為查詢(xún)式輸出接口電路,圖中Busy為忙觸發(fā)器,對(duì)應(yīng)于設(shè)備狀態(tài)寄存器的D
18、7位。 輸出時(shí),CPU首先執(zhí)行輸入指令讀取狀態(tài)字,如Busy=1,表示接口的輸出鎖存器是滿的,CPU只能踏步等待,繼續(xù)讀取狀態(tài)字,直至Busy=0為止;如Busy=0,表示接口的輸出鎖存器是空的,允許CPU向外設(shè)發(fā)送數(shù)據(jù)。此時(shí),CPU執(zhí)行輸出指令,將數(shù)據(jù)送入鎖存器,并將Busy觸發(fā)器置“1”。當(dāng)輸出設(shè)備把CPU送來(lái)的數(shù)據(jù)真正輸出之后,將發(fā)出一個(gè) 信號(hào),使Busy觸發(fā)器置“0”,以準(zhǔn)備下一次傳送。,2.輸出接口,37,查詢(xún)式輸出接口電路,圖9-4 查詢(xún)式輸出接口電路,38,中斷是現(xiàn)代計(jì)算機(jī)有效合理地發(fā)揮效能和提高效率的一個(gè)十分重要的功能。CPU中通常設(shè)有處理中斷的機(jī)構(gòu)中斷系統(tǒng),以解決各種中斷的共
19、性問(wèn)題。本節(jié)主要分析中斷系統(tǒng)的功能,特別強(qiáng)調(diào)I/O中斷。,9.3 中斷系統(tǒng)和程序中斷方式,39,1.中斷的提出 程序查詢(xún)方式雖然簡(jiǎn)單,但卻存在著下列明顯的缺點(diǎn): 在查詢(xún)過(guò)程中,CPU長(zhǎng)期處于踏步等待狀態(tài),使系統(tǒng)效率大大降低; CPU在一段時(shí)間內(nèi)只能和一臺(tái)外設(shè)交換信息,其他設(shè)備不能同時(shí)工作; 不能發(fā)現(xiàn)和處理預(yù)先無(wú)法估計(jì)的錯(cuò)誤和異常情況。,9.3.1 中斷的基本概念,40,程序中斷方式的思想是:CPU在程序中安排好在某一時(shí)刻啟動(dòng)某一臺(tái)外設(shè),然后CPU繼續(xù)執(zhí)行原來(lái)程序,不需要象查詢(xún)方式那樣一直等待外設(shè)的準(zhǔn)備就緒狀態(tài)。一旦外設(shè)完成數(shù)據(jù)傳送的準(zhǔn)備工作時(shí),便主動(dòng)向CPU發(fā)出一個(gè)中斷請(qǐng)求,請(qǐng)求CPU為自己服
20、務(wù)。在可以響應(yīng)中斷的條件下,CPU暫時(shí)中止正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序?yàn)橹袛嗾?qǐng)求者服務(wù),在中斷服務(wù)程序中完成一次主機(jī)與外設(shè)之間的數(shù)據(jù)傳送,傳送完成后,CPU仍返回原來(lái)的程序,從斷點(diǎn)處繼續(xù)執(zhí)行。,1.中斷的提出(續(xù)),41,圖9-6 程序中斷方式示意圖,程序中斷方式示意圖,42,中斷的處理過(guò)程實(shí)際上是程序的切換過(guò)程,即從現(xiàn)行程序切換到中斷服務(wù)程序,再?gòu)闹袛喾?wù)程序返回到現(xiàn)行程序。CPU每次執(zhí)行中斷服務(wù)程序前總要保護(hù)斷點(diǎn)、保護(hù)現(xiàn)場(chǎng),執(zhí)行完中斷服務(wù)程序返回現(xiàn)行程序之前又要恢復(fù)現(xiàn)場(chǎng)、恢復(fù)斷點(diǎn)。這些中斷的輔助操作都將會(huì)限制數(shù)據(jù)傳送的速度。 中斷系統(tǒng)是計(jì)算機(jī)實(shí)現(xiàn)中斷功能的軟、硬件總稱(chēng)。一般在CPU
21、中配置中斷機(jī)構(gòu),在外設(shè)接口中配置中斷控制器,在軟件上設(shè)計(jì)相應(yīng)的中斷服務(wù)程序。,1.中斷的提出(續(xù)),43,程序中斷是指:計(jì)算機(jī)執(zhí)行現(xiàn)行程序的過(guò)程中,出現(xiàn)某些急需處理的異常情況和特殊請(qǐng)求,CPU暫時(shí)中止現(xiàn)行程序,而轉(zhuǎn)去對(duì)隨機(jī)發(fā)生的更緊迫的事件進(jìn)行處理,在處理完畢后,CPU將自動(dòng)返回原來(lái)的程序繼續(xù)執(zhí)行。,2.程序中斷與調(diào)用子程序的區(qū)別,44,從表面上看起來(lái),計(jì)算機(jī)的中斷處理過(guò)程有點(diǎn)類(lèi)似于調(diào)用子程序的過(guò)程,這里現(xiàn)行程序相當(dāng)于主程序,中斷服務(wù)程序相當(dāng)于子程序。但是,它們之間卻有著本質(zhì)上的區(qū)別: 子程序的執(zhí)行是由程序員事先安排好的(由一條調(diào)用子程序指令轉(zhuǎn)入),而中斷服務(wù)程序的執(zhí)行則是由隨機(jī)的中斷事件引起
22、的; 子程序的執(zhí)行受到主程序或上層子程序的控制,而中斷服務(wù)程序一般與被中斷的現(xiàn)行程序毫無(wú)關(guān)系; 不存在同時(shí)調(diào)用多個(gè)子程序的情況,而有可能發(fā)生多個(gè)外設(shè)同時(shí)請(qǐng)求CPU為自己服務(wù)的情況。,2.程序中斷與調(diào)用子程序的區(qū)別(續(xù)),45,自愿中斷和強(qiáng)迫中斷 自愿中斷又稱(chēng)程序自中斷,它不是隨機(jī)產(chǎn)生的中斷,而是在程序中安排的有關(guān)指令,這些指令可以使機(jī)器進(jìn)入中斷處理的過(guò)程,如:80 x86指令系統(tǒng)中的軟中斷指令I(lǐng)NT n。 強(qiáng)迫中斷是隨機(jī)產(chǎn)生的中斷,不是程序中事先安排好的。當(dāng)這種中斷產(chǎn)生后,由中斷系統(tǒng)強(qiáng)迫計(jì)算機(jī)中止現(xiàn)行程序并轉(zhuǎn)入中斷服務(wù)程序。,3.中斷的基本類(lèi)型,46,程序中斷和簡(jiǎn)單中斷 程序中斷就是我們前面提
23、到的中斷,主機(jī)在響應(yīng)中斷請(qǐng)求后,通過(guò)執(zhí)行一段中斷服務(wù)程序來(lái)處理更緊迫的任務(wù),它需要占用一定的CPU時(shí)間。 簡(jiǎn)單中斷就是外設(shè)與主存間直接進(jìn)行信息交換的方法,即DMA方式。這種中斷不去執(zhí)行中斷服務(wù)程序,故不破壞現(xiàn)行程序的狀態(tài)。主機(jī)發(fā)現(xiàn)有簡(jiǎn)單中斷請(qǐng)求(也就是DMA請(qǐng)求)時(shí),讓出一個(gè)或幾個(gè)存取周期供外設(shè)與主存交換信息,然后繼續(xù)執(zhí)行程序。簡(jiǎn)單中斷是早期對(duì)DMA方式的一種叫法,為避免誤解,現(xiàn)在一般很少使用這個(gè)名詞。,3.中斷的基本類(lèi)型(續(xù)),47,內(nèi)中斷和外中斷 內(nèi)中斷是指由于CPU內(nèi)部硬件或軟件原因引起的中斷,如單步中斷、溢出中斷等。 外中斷是指CPU以外的部件引起的中斷。通常,外中斷又可以分為不可屏蔽
24、中斷和可屏蔽中斷兩種。不可屏蔽中斷優(yōu)先級(jí)別較高,常用于應(yīng)急處理,如掉電、主存讀寫(xiě)校驗(yàn)錯(cuò)等;而可屏蔽中斷級(jí)別較低,常用于一般I/O設(shè)備的數(shù)據(jù)傳送。,3.中斷的基本類(lèi)型(續(xù)),48,向量中斷和非向量中斷 向量中斷是指那些中斷服務(wù)程序的入口地址是由中斷事件自己提供的中斷。中斷事件在提出中斷請(qǐng)求的同時(shí),通過(guò)硬件向主機(jī)提供中斷服務(wù)程序入口地址,即向量地址。 非向量中斷的中斷事件不能直接提供中斷服務(wù)程序的入口地址。,3.中斷的基本類(lèi)型(續(xù)),49,單重中斷和多重中斷 單重中斷在CPU執(zhí)行中斷服務(wù)程序的過(guò)程中不能被再打斷。 多重中斷在執(zhí)行某個(gè)中斷服務(wù)程序的過(guò)程中,CPU可去響應(yīng)級(jí)別更高的中斷請(qǐng)求,又稱(chēng)為中斷
25、嵌套。多重中斷表征計(jì)算機(jī)中斷功能的強(qiáng)弱,有的計(jì)算機(jī)能實(shí)現(xiàn)8級(jí)以上的多重中斷。,3.中斷的基本類(lèi)型(續(xù)),50,1.中斷源和中斷請(qǐng)求信號(hào) 中斷源是指中斷請(qǐng)求的來(lái)源,即引起計(jì)算機(jī)中斷的事件。通常,一臺(tái)計(jì)算機(jī)允許有多個(gè)中斷源。由于每個(gè)中斷源向CPU發(fā)出中斷請(qǐng)求的時(shí)間是隨機(jī)的,為了記錄中斷事件并區(qū)分不同的中斷源,可采用具有存儲(chǔ)功能的觸發(fā)器來(lái)記錄中斷源,這個(gè)觸發(fā)器稱(chēng)為中斷請(qǐng)求觸發(fā)器(INTR)。當(dāng)某一個(gè)中斷源有中斷請(qǐng)求時(shí),其相應(yīng)的中斷請(qǐng)求觸發(fā)器置成“1”狀態(tài),表示該中斷源向CPU提出中斷請(qǐng)求。,9.3.2 中斷請(qǐng)求和中斷判優(yōu),51,獨(dú)立請(qǐng)求線 每個(gè)中斷源單獨(dú)設(shè)置中斷請(qǐng)求線,將中斷請(qǐng)求信號(hào)直接送往CPU。
26、 公共請(qǐng)求線 多個(gè)中斷源共有一根公共請(qǐng)求線。 二維結(jié)構(gòu) 將中斷請(qǐng)求線連成二維結(jié)構(gòu),同一優(yōu)先級(jí)別的中斷源,采用一根公共的請(qǐng)求線;不同請(qǐng)求線上的中斷源優(yōu)先級(jí)別不同。,2.中斷請(qǐng)求信號(hào)的傳送,52,通常,把全部中斷源按中斷的性質(zhì)和處理的輕重緩急安排優(yōu)先級(jí),并進(jìn)行排隊(duì)。 確定中斷優(yōu)先級(jí)的原則是:對(duì)那些提出中斷請(qǐng)求后需要立刻處理,否則就會(huì)造成嚴(yán)重后果的中斷源規(guī)定最高的優(yōu)先級(jí);而對(duì)那些可以延遲響應(yīng)和處理的中斷源規(guī)定較低的優(yōu)先級(jí)。如故障中斷一般優(yōu)先級(jí)較高,其次是簡(jiǎn)單中斷,接著才是I/O設(shè)備中斷。,3.中斷優(yōu)先級(jí)與判優(yōu)方法,53,軟件判優(yōu)法 所謂軟件判優(yōu)法,就是用程序來(lái)判別優(yōu)先級(jí),這是最簡(jiǎn)單的中斷判優(yōu)方法。當(dāng)
27、CPU接到中斷請(qǐng)求信號(hào)后,就執(zhí)行查詢(xún)程序,逐個(gè)檢測(cè)中斷請(qǐng)求寄存器的各位狀態(tài)。檢測(cè)順序是按優(yōu)先級(jí)的大小排列的,最先檢測(cè)的中斷源具有最高的優(yōu)先級(jí),其次檢測(cè)的中斷源具有次高優(yōu)先級(jí),如此下去,最后檢測(cè)的中斷源具有最低的優(yōu)先級(jí)。 軟件判優(yōu)方法簡(jiǎn)單,可以靈活地修改中斷源的優(yōu)先級(jí)別;但查詢(xún)、判優(yōu)完全是靠程序?qū)崿F(xiàn)的,不但占用CPU時(shí)間,而且判優(yōu)速度慢。,3.中斷優(yōu)先級(jí)與判優(yōu)方法(續(xù)),54,硬件判優(yōu)電路 采用硬件判優(yōu)電路實(shí)現(xiàn)中斷優(yōu)先級(jí)的判定可節(jié)省CPU時(shí)間,而且速度快,但是成本較高。 根據(jù)中斷請(qǐng)求信號(hào)的傳送方式不同,有不同的優(yōu)先排隊(duì)電路,常見(jiàn)的方案有:獨(dú)立請(qǐng)求線的優(yōu)先排隊(duì)電路、公共請(qǐng)求線的優(yōu)先排隊(duì)電路等。這些
28、排隊(duì)電路的共同特點(diǎn)是:優(yōu)先級(jí)別高的中斷請(qǐng)求將自動(dòng)封鎖優(yōu)先級(jí)別低的中斷請(qǐng)求的處理。硬件排隊(duì)電路一旦設(shè)計(jì)連接好之后,將無(wú)法改變其優(yōu)先級(jí)別。,3.中斷優(yōu)先級(jí)與判優(yōu)方法(續(xù)),55,1.CPU響應(yīng)中斷的條件 CPU接收到中斷請(qǐng)求信號(hào) 首先中斷源要發(fā)出中斷請(qǐng)求,同時(shí)CPU還要接收到這個(gè)中斷請(qǐng)求信號(hào)。 CPU允許中斷 CPU允許中斷,即開(kāi)中斷。CPU內(nèi)部有一個(gè)中斷允許觸發(fā)器(EINT),只有當(dāng)EINT=1時(shí),CPU才可以響應(yīng)中斷源的中斷請(qǐng)求;如EINT=0,CPU處于不允許中斷狀態(tài),即使中斷源有中斷請(qǐng)求,CPU也不響應(yīng)。,9.3.3 中斷響應(yīng)和中斷處理,56,通常,中斷允許觸發(fā)器由開(kāi)中斷指令來(lái)置位,由關(guān)中
29、斷指令或硬件自動(dòng)使其復(fù)位。 一條指令執(zhí)行完畢 這是CPU響應(yīng)中斷請(qǐng)求的時(shí)間限制條件。一般情況下,CPU在一條指令執(zhí)行完畢且沒(méi)有更緊迫的任務(wù)時(shí)才能響應(yīng)中斷請(qǐng)求。,1.CPU響應(yīng)中斷的條件(續(xù)),57,CPU響應(yīng)中斷之后,經(jīng)過(guò)某些操作,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。這些操作是由硬件直接實(shí)現(xiàn)的,我們把它稱(chēng)為中斷隱指令。中斷隱指令并不是指令系統(tǒng)中的一條真正的指令,它沒(méi)有操作碼,所以中斷隱指令是一種不允許、也不可能為用戶使用的特殊指令。,2.中斷隱指令,58,中斷隱指令完成的操作主要有: 保存斷點(diǎn) 為了保證在中斷服務(wù)程序執(zhí)行完畢能正確返回原來(lái)的程序,必須將原來(lái)程序的斷點(diǎn)(即程序計(jì)數(shù)器PC的內(nèi)容)保存起來(lái)。斷點(diǎn)可
30、以壓入堆棧,也可以存入主存的特定單元中。 暫不允許中斷 暫不允許中斷即關(guān)中斷。在中斷服務(wù)程序中,為了保護(hù)中斷現(xiàn)場(chǎng)(即CPU的主要寄存器狀態(tài))期間不被新的中斷所打斷,必須要關(guān)中斷,從而保證被中斷的程序在中斷服務(wù)程序執(zhí)行完畢之后能接著正確地執(zhí)行下去。,2.中斷隱指令(續(xù)),59,并不是所有的計(jì)算機(jī)都在中斷隱指令中由硬件自動(dòng)地關(guān)中斷,也有些計(jì)算機(jī)的這一操作是由軟件(中斷服務(wù)程序)來(lái)實(shí)現(xiàn)的。 引出中斷服務(wù)程序 引出中斷服務(wù)程序的實(shí)質(zhì)就是取出中斷服務(wù)程序的入口地址送程序計(jì)數(shù)器PC。對(duì)于向量中斷和非向量中斷,引出中斷服務(wù)程序的方法是不相同的。,2.中斷隱指令(續(xù)),60,以上幾個(gè)基本操作在不同的計(jì)算機(jī)系統(tǒng)
31、中的處理方法是各異的。通常,在組合邏輯控制的計(jì)算機(jī)中,專(zhuān)門(mén)設(shè)置了一個(gè)中斷周期來(lái)完成中斷隱指令的任務(wù)。在微程序控制的計(jì)算機(jī)中,則專(zhuān)門(mén)安排有一段微程序來(lái)完成中斷隱指令的這些操作。,3.中斷周期,61,軟件的方法由中斷隱指令控制進(jìn)入一個(gè)中斷總服務(wù)程序,在那里判優(yōu)、尋找中斷源并且轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。這種方法方便、靈活,硬件極簡(jiǎn)單,但效率是比較低的。 對(duì)于硬件向量中斷法,當(dāng)CPU響應(yīng)某一中斷請(qǐng)求時(shí),硬件能自動(dòng)形成并找出與該中斷源對(duì)應(yīng)的中斷服務(wù)程序的入口地址。 當(dāng)中斷源向CPU發(fā)出中斷請(qǐng)求信號(hào)之后,CPU進(jìn)行一定的判優(yōu)處理。若決定響應(yīng)這個(gè)中斷請(qǐng)求,則向中斷源發(fā)出中斷響應(yīng)信號(hào)INTA。中斷源接到INTA
32、信號(hào)后就通過(guò)自己的向量地址形成部件向CPU發(fā)送向量地址,CPU接收該向量地址之后就可轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。,4.進(jìn)入中斷服務(wù)程序,62,圖9-11 向量中斷過(guò)程,向量中斷過(guò)程,63,向量地址通常有兩種情況: 向量地址是中斷服務(wù)程序的入口地址 如果向量地址就是中斷服務(wù)程序的入口地址,則CPU不需要再經(jīng)過(guò)處理就可以進(jìn)入相應(yīng)的中斷服務(wù)程序。 向量地址是中斷向量表的指針 如果向量地址是中斷向量表的指針,則向量地址指向一個(gè)中斷向量表,從中斷向量表的相應(yīng)單元中再取出中斷服務(wù)程序的入口地址,此時(shí)中斷源給出的向量地址是中斷服務(wù)程序入口地址的地址。,4.進(jìn)入中斷服務(wù)程序(續(xù)),64,中斷現(xiàn)場(chǎng)指的是發(fā)生中斷時(shí)C
33、PU的主要狀態(tài),其中最重要的是斷點(diǎn),另外還有一些通用寄存器的狀態(tài)。之所以需要保護(hù)和恢復(fù)現(xiàn)場(chǎng)的原因是因?yàn)镃PU要先后執(zhí)行兩個(gè)完全不同的程序(現(xiàn)行程序和中斷服務(wù)程序),必須進(jìn)行兩種程序運(yùn)行狀態(tài)的轉(zhuǎn)換。一般來(lái)說(shuō),在中斷隱指令中,CPU硬件將自動(dòng)保存斷點(diǎn),有些計(jì)算機(jī)還自動(dòng)保存程序狀態(tài)寄存器(PSWR)的內(nèi)容。但是,在許多應(yīng)用中,要保證中斷返回后原來(lái)的程序能正確地繼續(xù)運(yùn)行,僅保存這一、二個(gè)寄存器的內(nèi)容是不夠的。,5.中斷現(xiàn)場(chǎng)的保護(hù)和恢復(fù),65,在中斷服務(wù)程序開(kāi)始時(shí),應(yīng)由軟件去保存那些硬件沒(méi)有保存,而在中斷服務(wù)程序中又可能用到的寄存器(如某些通用寄存器)的內(nèi)容,在中斷返回之前,這些內(nèi)容還應(yīng)該被恢復(fù)。 軟、
34、硬件保護(hù)現(xiàn)場(chǎng)往往是和向量中斷結(jié)合在一起使用的。先把斷點(diǎn)和程序狀態(tài)字自動(dòng)壓入堆棧,這就是保護(hù)舊現(xiàn)場(chǎng);接著根據(jù)中斷源送來(lái)的向量地址自動(dòng)取出中斷服務(wù)程序入口地址和新的程序狀態(tài)字,這就是建立新現(xiàn)場(chǎng);最后由一些指令實(shí)現(xiàn)對(duì)必要的通用寄存器的保護(hù)。恢復(fù)現(xiàn)場(chǎng)則是保護(hù)現(xiàn)場(chǎng)的逆處理。,5.中斷現(xiàn)場(chǎng)的保護(hù)和恢復(fù),66,1.中斷嵌套 中斷嵌套的層次可以有多層,越在里層的中斷請(qǐng)求越急迫,優(yōu)先級(jí)越高,因此優(yōu)先得到CPU的服務(wù)。 要使計(jì)算機(jī)具有多重中斷的能力,首先要能保護(hù)多個(gè)斷點(diǎn),而且先發(fā)生的中斷請(qǐng)求的斷點(diǎn),先保護(hù)后恢復(fù);后發(fā)生的中斷請(qǐng)求的斷點(diǎn),后保護(hù)先恢復(fù)。堆棧的先進(jìn)后出特點(diǎn)正好滿足多重中斷這一先后次序的需要。同時(shí),在C
35、PU進(jìn)入某一中斷服務(wù)程序之后,系統(tǒng)必須處于開(kāi)中斷狀態(tài),否則中斷嵌套是不可能實(shí)現(xiàn)的。,9.3.4 多重中斷與中斷屏蔽,67,允許中斷還是禁止中斷是用CPU中的中斷允許觸發(fā)器控制的,當(dāng)中斷允許觸發(fā)器(EINT)被置“1”,則允許中斷;當(dāng)中斷允許觸發(fā)器(EINT)被置“0”,則禁止中斷。 允許中斷即開(kāi)中斷,下列情況應(yīng)開(kāi)中斷: 無(wú)論是單重中斷還是多重中斷,在中斷服務(wù)程序執(zhí)行完畢,恢復(fù)中斷現(xiàn)場(chǎng)之后; 在多重中斷的情況下,保護(hù)中斷現(xiàn)場(chǎng)之后。 禁止中斷即關(guān)中斷,下列情況應(yīng)關(guān)中斷: 當(dāng)響應(yīng)某一級(jí)中斷請(qǐng)求,不再允許被其他中斷請(qǐng)求打斷時(shí); 在中斷服務(wù)程序的保護(hù)和恢復(fù)現(xiàn)場(chǎng)之前。,2.允許和禁止中斷,68,中斷源發(fā)出
36、中斷請(qǐng)求之后,這個(gè)中斷請(qǐng)求并不一定能真正送到CPU去,在有些情況下,可以用程序方式有選擇地封鎖部分中斷,這就是中斷屏蔽。 如果給每個(gè)中斷源都相應(yīng)地配備一個(gè)中斷屏蔽觸發(fā)器(MASK),則每個(gè)中斷請(qǐng)求信號(hào)在送往判優(yōu)電路之前,還要受到屏蔽觸發(fā)器的控制。當(dāng)MASK=1,表示對(duì)應(yīng)中斷源的請(qǐng)求被屏蔽,可見(jiàn)中斷請(qǐng)求觸發(fā)器和中斷屏蔽觸發(fā)器是成對(duì)出現(xiàn)的。,3.中斷屏蔽,69,用程序設(shè)置的方法將屏蔽寄存器中的某一位置“1”,則對(duì)應(yīng)的中斷請(qǐng)求被封鎖,無(wú)法去參加排隊(duì)判優(yōu);若屏蔽寄存器中的某一位置“0”,才允許對(duì)應(yīng)的中斷請(qǐng)求送往CPU。,3.中斷屏蔽(續(xù)),70,圖9-15 中斷屏蔽寄存器的作用,中斷屏蔽寄存器的作用,
37、71,如一個(gè)中斷系統(tǒng)有16個(gè)中斷源,每一個(gè)中斷源按其優(yōu)先級(jí)別賦予一個(gè)屏蔽字。屏蔽字與中斷源的優(yōu)先級(jí)別是一一對(duì)應(yīng)的,“0”表示開(kāi)放,“1”表示屏蔽。 第1級(jí)中斷源的屏蔽字是16個(gè)“1”,它的優(yōu)先級(jí)別最高,禁止本級(jí)和更低級(jí)的中斷請(qǐng)求;第16級(jí)中斷源的屏蔽字只有第16位(最低位)為“1”,其余各位為“0”,它的優(yōu)先級(jí)別最低,僅禁止本級(jí)的中斷請(qǐng)求,而對(duì)其他高級(jí)的中斷請(qǐng)求全部開(kāi)放。,3.中斷屏蔽(續(xù)),72,各中斷源的屏蔽字,73,中斷屏蔽字的另一個(gè)作用是可以改變中斷優(yōu)先級(jí),將原級(jí)別較低的中斷源變成較高的級(jí)別,我們稱(chēng)之為中斷升級(jí)。這實(shí)際上是一種動(dòng)態(tài)改變優(yōu)先級(jí)的方法。 這里所說(shuō)的改變優(yōu)先次序是指改變中斷的
38、處理次序。中斷處理次序和中斷響應(yīng)次序是兩個(gè)不同的概念,中斷響應(yīng)次序是由硬件排隊(duì)電路決定的,無(wú)法改變。但是,中斷處理次序是可以由屏蔽碼來(lái)改變的,故把屏蔽碼看成軟排隊(duì)器。中斷處理次序可以不同于中斷響應(yīng)次序。,4.中斷升級(jí),74,例如,某計(jì)算機(jī)的中斷系統(tǒng)有4個(gè)中斷源,每個(gè)中斷源對(duì)應(yīng)一個(gè)屏蔽碼。中斷響應(yīng)的優(yōu)先次序?yàn)?234,中斷的處理次序和中斷的響應(yīng)次序是一致的。,4.中斷升級(jí)(續(xù)),75,圖9-16 CPU的運(yùn)動(dòng)軌跡,CPU的運(yùn)動(dòng)軌跡,76,在不改變中斷響應(yīng)次序的條件下,通過(guò)改寫(xiě)屏蔽碼可以改變中斷處理次序,例如,要使中斷處理次序改為1432,則只需使中斷屏蔽碼改為:,4.中斷升級(jí)(續(xù)),77,圖9-
39、17 處理次序改變后的CPU運(yùn)動(dòng)軌跡,處理次序改變后的CPU運(yùn)動(dòng)軌跡,78,這里所說(shuō)的中斷全過(guò)程指的是從中斷源發(fā)出中斷請(qǐng)求開(kāi)始,CPU響應(yīng)這個(gè)請(qǐng)求,現(xiàn)行程序被中斷,轉(zhuǎn)至中斷服務(wù)程序,直到中斷服務(wù)程序執(zhí)行完畢,CPU再返回原來(lái)的程序繼續(xù)執(zhí)行的整個(gè)過(guò)程。 中斷全過(guò)程分為5個(gè)階段:中斷請(qǐng)求,中斷判優(yōu),中斷響應(yīng),中斷處理,中斷返回。 其中中斷處理就是執(zhí)行中斷服務(wù)程序,這是中斷系統(tǒng)的核心。,9.3.5 中斷全過(guò)程,79,圖9-18 中斷處理過(guò)程,中斷處理過(guò)程,80,中斷處理過(guò)程基本上由3部分組成,第一部分為準(zhǔn)備部分,其基本功能是保護(hù)現(xiàn)場(chǎng),對(duì)于非向量中斷方式則需要確定中斷源,最后開(kāi)放中斷,允許更高級(jí)的中斷
40、請(qǐng)求打斷低級(jí)的中斷服務(wù)程序;第二部分為處理部分,即真正執(zhí)行具體的為某個(gè)中斷源服務(wù)的中斷服務(wù)程序;第三部分為結(jié)尾部分,首先要關(guān)中斷,以防止在恢復(fù)現(xiàn)場(chǎng)過(guò)程中被新的中斷請(qǐng)求打斷,接著恢復(fù)現(xiàn)場(chǎng),然后開(kāi)放中斷,以便返回原來(lái)的程序后可響應(yīng)其他的中斷請(qǐng)求。中斷服務(wù)程序的最后一條指令一定是中斷返回指令。,9.3.5 中斷全過(guò)程(續(xù)),81,具有中斷能力的外設(shè)接口是由程序查詢(xún)式接口再加上中斷控制機(jī)構(gòu)組成的。 中斷控制機(jī)構(gòu)包括: 中斷請(qǐng)求電路 中斷優(yōu)先電路 向量地址形成部件,9.3.6 程序中斷接口結(jié)構(gòu),82,DMA方式是為了在主存與外設(shè)之間實(shí)現(xiàn)高速、批量數(shù)據(jù)交換而設(shè)置的。DMA方式的數(shù)據(jù)傳送直接依靠硬件(DMA
41、控制器)來(lái)實(shí)現(xiàn),不需要執(zhí)行任何程序。,9.4 DMA方式及其接口,83,1.DMA方式的特點(diǎn) 無(wú)論程序查詢(xún)還是程序中斷方式,主要的工作都是由CPU執(zhí)行程序完成的,這需要花費(fèi)時(shí)間,因此不能實(shí)現(xiàn)高速外設(shè)與主機(jī)的信息交換。 DMA方式是在外設(shè)和主存之間開(kāi)辟一條“直接數(shù)據(jù)通道”,在不需要CPU干預(yù)也不需要軟件介入的情況下在兩者之間進(jìn)行的高速數(shù)據(jù)傳送方式。在DMA傳送方式中,對(duì)數(shù)據(jù)傳送過(guò)程進(jìn)行控制的硬件稱(chēng)為DMA控制器。當(dāng)外設(shè)需要進(jìn)行數(shù)據(jù)傳送時(shí),通過(guò)DMA控制器向CPU提出DMA傳送請(qǐng)求,CPU響應(yīng)之后將讓出系統(tǒng)總線,由DMA控制器接管總線進(jìn)行數(shù)據(jù)傳送。,9.4.1 DMA方式的基本概念,84,DMA方
42、式具有下列特點(diǎn): 它使主存與CPU的固定聯(lián)系脫鉤,主存既可被CPU訪問(wèn),又可被外設(shè)訪問(wèn); 在數(shù)據(jù)塊傳送時(shí),主存地址的確定、傳送數(shù)據(jù)的計(jì)數(shù)等都由硬件電路直接實(shí)現(xiàn); 主存中要開(kāi)辟專(zhuān)用緩沖區(qū),及時(shí)供給和接收外設(shè)的數(shù)據(jù); DMA傳送速度快,CPU和外設(shè)并行工作,提高了系統(tǒng)的效率。 DMA在傳送開(kāi)始前要通過(guò)程序進(jìn)行預(yù)處理,結(jié)束后要通過(guò)中斷方式進(jìn)行后處理。,1.DMA方式的特點(diǎn)(續(xù)),85,中斷方式是程序切換,需要保護(hù)和恢復(fù)現(xiàn)場(chǎng);而DMA方式除了開(kāi)始和結(jié)尾時(shí),不占用CPU的任何資源。 對(duì)中斷請(qǐng)求的響應(yīng)時(shí)間只能發(fā)生在每條指令執(zhí)行完畢時(shí);而對(duì)DMA請(qǐng)求的響應(yīng)時(shí)間可以發(fā)生在每個(gè)機(jī)器周期結(jié)束時(shí)。 圖9-19 兩種
43、請(qǐng)求的響應(yīng)時(shí)刻比較,2.DMA和中斷的區(qū)別,86,中斷傳送過(guò)程需要CPU的干預(yù);而DMA傳送過(guò)程不需要CPU的干預(yù),故數(shù)據(jù)傳輸速率非常高,適合于高速外設(shè)的成組數(shù)據(jù)傳送。 DMA請(qǐng)求的優(yōu)先級(jí)高于中斷請(qǐng)求。 中斷方式具有對(duì)異常事件的處理能力,而DMA方式僅局限于完成傳送數(shù)據(jù)塊的I/O操作。,2.DMA和中斷的區(qū)別(續(xù)),87,DMA方式一般應(yīng)用于主存與高速外設(shè)間的簡(jiǎn)單數(shù)據(jù)傳送。高速外設(shè)如磁盤(pán)、磁帶、光盤(pán)等輔助存儲(chǔ)器以及其他帶有局部存儲(chǔ)器的外設(shè)、通信設(shè)備等。 DMA傳送是直接依靠硬件實(shí)現(xiàn)的,可用于快速的數(shù)據(jù)直傳。也正是由于這一點(diǎn),DMA方式本身不能處理較復(fù)雜的事件。因此,在某些場(chǎng)合常綜合應(yīng)用DMA方
44、式與程序中斷方式,二者互為補(bǔ)充。,3.DMA方式的應(yīng)用,88,1.DMA控制器的功能 在DMA傳送過(guò)程中,DMA控制器將接管CPU的地址總線、數(shù)據(jù)總線和控制總線,CPU的主存控制信號(hào)被禁止使用。而當(dāng)DMA傳送結(jié)束后,將恢復(fù)CPU的一切權(quán)利并開(kāi)始執(zhí)行其操作。由此可見(jiàn),DMA控制器必須具有控制系統(tǒng)總線的能力,即能夠像CPU一樣輸出地址信號(hào),接收或發(fā)出控制信號(hào),輸入或輸出數(shù)據(jù)信號(hào)。,9.4.2 DMA接口,89,DMA控制器在外設(shè)與主存之間直接傳送數(shù)據(jù)期間,完全代替CPU進(jìn)行工作,主要功能有: 接受外設(shè)發(fā)出的DMA請(qǐng)求,并向CPU發(fā)出總線請(qǐng)求; CPU響應(yīng)此總線請(qǐng)求,發(fā)出總線響應(yīng)信號(hào)后,接管對(duì)總線的
45、控制,進(jìn)入DMA操作周期; 確定傳送數(shù)據(jù)的主存單元地址及傳送長(zhǎng)度,并能自動(dòng)修改主存地址計(jì)數(shù)值和傳送長(zhǎng)度計(jì)數(shù)值; 規(guī)定數(shù)據(jù)在主存與外設(shè)之間的傳送方向,發(fā)出讀寫(xiě)或其他控制信號(hào),并執(zhí)行數(shù)據(jù)傳送的操作。 向CPU報(bào)告DMA操作的結(jié)束。,1.DMA控制器的功能,90,圖9-21 簡(jiǎn)單的DMA控制器,簡(jiǎn)單的DMA控制器,DACK,91,主存地址計(jì)數(shù)器 用來(lái)存放待交換數(shù)據(jù)的主存地址。該計(jì)數(shù)器的初始值為主存緩沖區(qū)的首地址,當(dāng)DMA傳送時(shí),每傳送一個(gè)數(shù)據(jù),將地址計(jì)數(shù)器加“1”,從而以增量方式給出主存中要交換的一批數(shù)據(jù)的地址,直至這批數(shù)據(jù)傳送完畢為止。 傳送長(zhǎng)度計(jì)數(shù)器 用來(lái)記錄傳送數(shù)據(jù)塊的長(zhǎng)度。其初始值為傳送數(shù)據(jù)
46、的總字?jǐn)?shù)或總字節(jié)數(shù),每傳送一個(gè)字或一個(gè)字節(jié),計(jì)數(shù)器自動(dòng)減“1”,當(dāng)其內(nèi)容為0時(shí)表示數(shù)據(jù)已全部傳送完畢。,2.DMA控制器的基本組成,92,數(shù)據(jù)緩沖寄存器 用來(lái)暫存每次傳送的數(shù)據(jù)。輸入時(shí),數(shù)據(jù)由外設(shè)(如磁盤(pán))先送往數(shù)據(jù)緩沖寄存器,再通過(guò)數(shù)據(jù)總線送到主存。反之,輸出時(shí),數(shù)據(jù)由主存通過(guò)數(shù)據(jù)總線送到數(shù)據(jù)緩沖寄存器,然后再送到外設(shè)。 DMA請(qǐng)求觸發(fā)器 每當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)后給出一個(gè)控制信號(hào),使DMA請(qǐng)求觸發(fā)器置位。,2.DMA控制器的基本組成(續(xù)),93,控制/狀態(tài)邏輯 它由控制和時(shí)序電路以及狀態(tài)標(biāo)志等組成,用于指定傳送方向,修改傳送參數(shù),并對(duì)DMA請(qǐng)求信號(hào)和CPU響應(yīng)信號(hào)進(jìn)行協(xié)調(diào)和同步。 中斷機(jī)構(gòu) 當(dāng)一
47、個(gè)數(shù)據(jù)塊傳送完畢后觸發(fā)中斷機(jī)構(gòu),向CPU提出中斷請(qǐng)求,CPU將進(jìn)行DMA傳送的結(jié)尾處理。,2.DMA控制器的基本組成(續(xù)),94,地址總線 在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)行編程。,3.DMA控制器的引出線,95,控制數(shù)據(jù)傳送方式的信號(hào)線 存儲(chǔ)器讀信號(hào) 、存儲(chǔ)器寫(xiě)信號(hào) 、外設(shè)讀信號(hào) 、外設(shè)寫(xiě)信號(hào) 。 當(dāng)數(shù)據(jù)從外設(shè)寫(xiě)入主存時(shí), 和 同時(shí)有效;而當(dāng)數(shù)據(jù)從主存讀出送外設(shè)時(shí), 和 將同時(shí)有效。,3.DMA控制器的引出線(續(xù)),
48、96,DMA控制器與外設(shè)之間的聯(lián)絡(luò)信號(hào)線 DMA請(qǐng)求信號(hào)DREQ,是外設(shè)向DMA控制器提出DMA操作的申請(qǐng)信號(hào); DMA響應(yīng)信號(hào)DACK,是DMA控制器向提出DMA請(qǐng)求的外設(shè)表示的應(yīng)答信號(hào)。 DMA控制器與CPU之間的聯(lián)絡(luò)信號(hào)線 總線請(qǐng)求HRQ,是DMA控制器向CPU請(qǐng)求讓出總線的信號(hào); 總線響應(yīng)信號(hào)HLDA,是CPU向DMA控制器表示響應(yīng)總線請(qǐng)求的信號(hào)。,3.DMA控制器的引出線(續(xù)),97,圖9-22給出了DMA控制器與CPU及主存、外設(shè)之間的連接框圖。在進(jìn)行DMA操作之前應(yīng)先對(duì)DMA控制器編程。比如,確定傳送數(shù)據(jù)的主存起始地址、要傳送的字節(jié)數(shù)以及傳送方式,是由外設(shè)將數(shù)據(jù)寫(xiě)入主存還是從主存
49、將數(shù)據(jù)讀出送外設(shè)。,4.DMA控制器的連接和傳送,98,圖9-22 DMA控制器的連接,DMA控制器的連接,99,下面以外設(shè)將一個(gè)數(shù)據(jù)塊寫(xiě)入主存的操作為例,簡(jiǎn)述DMA控制器的操作過(guò)程。 首先由外設(shè)向DMA控制器發(fā)出請(qǐng)求信號(hào)DREQ。 DMA控制器向CPU發(fā)出總線請(qǐng)求信號(hào)HRQ。 CPU向DMA控制器發(fā)出總線響應(yīng)信號(hào)HLDA,此時(shí),DMA控制器獲取了總線的控制權(quán)。 DMA控制器向外設(shè)發(fā)出DMA響應(yīng)信號(hào)DACK,表示DMA控制器已控制了總線,允許外設(shè)與主存交換數(shù)據(jù)。,4.DMA控制器的連接和傳送(續(xù)),100,DMA控制器按主存地址計(jì)數(shù)器的內(nèi)容發(fā)出地址信號(hào)作為主存地址的選擇,同時(shí)主存地址計(jì)數(shù)器的內(nèi)
50、容加1。 DMA控制器發(fā)出 信號(hào)到外設(shè),將外設(shè)數(shù)據(jù)讀入總線,同時(shí)發(fā)出 信號(hào),將數(shù)據(jù)總線的數(shù)據(jù)寫(xiě)入地址總線選中的主存單元。 傳送長(zhǎng)度計(jì)數(shù)器減1。 重復(fù)步驟,直到字節(jié)計(jì)數(shù)器減到0為止,數(shù)據(jù)塊的DMA方式傳送工作宣告完成。這時(shí),DMA控制器的HRQ降為低電平,總線控制權(quán)交還CPU。,4.DMA控制器的連接和傳送(續(xù)),101,1.DMA傳送方法 CPU停止訪問(wèn)主存法 這種方法是用DMA請(qǐng)求信號(hào)迫使CPU讓出總線控制權(quán)。CPU在現(xiàn)行機(jī)器周期執(zhí)行完成之后,使其數(shù)據(jù)、地址總線處于三態(tài),并輸出總線批準(zhǔn)信號(hào)。每次DMA請(qǐng)求獲得批準(zhǔn),DMA控制器獲得總線控制權(quán)以后,連續(xù)占用若干個(gè)存取周期(總線周期)進(jìn)行成組連續(xù)
51、的數(shù)據(jù)傳送,直至批量傳送結(jié)束,DMA控制器才把總線控制權(quán)交回CPU。,9.4.3 DMA傳送方法與傳送過(guò)程,102,圖9-23(a) CPU停止訪問(wèn)主存法,CPU停止訪問(wèn)主存法,103,存儲(chǔ)器分時(shí)法 把原來(lái)的一個(gè)存取周期分成兩個(gè)時(shí)間片,一片分給CPU,一片分給DMA,使CPU和DMA交替地訪問(wèn)主存。這種方法無(wú)須申請(qǐng)和歸還總線,使總線控制權(quán)的轉(zhuǎn)移幾乎不需要什么時(shí)間,所以對(duì)DMA傳送來(lái)講效率是很高的,而且CPU既不停止現(xiàn)行程序的運(yùn)行,也不進(jìn)入保持狀態(tài),在CPU不知不覺(jué)中便進(jìn)行了DMA傳送;但這種方法需要主存在原來(lái)的存取周期內(nèi)為兩個(gè)部件服務(wù),如果要維持CPU的訪存速度不變,就要求主存的工作速度提高一
52、倍。,1.DMA傳送方法(續(xù)),104,圖9-23(b) 存儲(chǔ)器分時(shí)法,存儲(chǔ)器分時(shí)法,105,周期挪用法 周期挪用法是前兩種方法的折衷。當(dāng)外設(shè)沒(méi)有DMA請(qǐng)求時(shí),CPU按程序要求訪問(wèn)主存;一旦外設(shè)有DMA請(qǐng)求并獲得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請(qǐng)求的到來(lái)。重復(fù)上述過(guò)程,直至數(shù)據(jù)塊傳送完畢。,1.DMA傳送方法(續(xù)),106,圖9-23(c) 周期挪用法,周期挪用法,107,當(dāng)主存工作速度高出外設(shè)較多時(shí),采用周期挪用
53、法可以提高主存的利用率,對(duì)CPU的影響較小,因此,高速主機(jī)系統(tǒng)常采用這種方法。根據(jù)主存的存取周期與磁盤(pán)的數(shù)據(jù)傳輸率,可以計(jì)算出主存操作時(shí)間的分配情況:有多少時(shí)間需用于DMA傳送(被挪用),有多少時(shí)間可用于CPU訪存。這在一定程度上反映了系統(tǒng)的處理效率。,1.DMA傳送方法(續(xù)),108,DMA預(yù)處理 在DMA傳送之前必須要做準(zhǔn)備工作,即初始化。這是由CPU來(lái)完成的。CPU首先執(zhí)行幾條I/O指令,用于測(cè)試外設(shè)的狀態(tài)、向DMA控制器的有關(guān)寄存器置初值、設(shè)置傳送方向、啟動(dòng)該外部設(shè)備等。 在這些工作完成之后,CPU繼續(xù)執(zhí)行原來(lái)的程序,在外設(shè)準(zhǔn)備好發(fā)送的數(shù)據(jù)(輸入)或接收的數(shù)據(jù)已處理完畢(輸出)時(shí),外設(shè)
54、向DMA控制器發(fā)DMA請(qǐng)求,再由DMA控制器向CPU發(fā)總線請(qǐng)求。,2.DMA傳送過(guò)程,109,數(shù)據(jù)傳送 DMA的數(shù)據(jù)傳送可以以單字節(jié)(或字)為基本單位,也可以以數(shù)據(jù)塊為基本單位。對(duì)于以數(shù)據(jù)塊為單位的傳送,DMA控制器占用總線后的數(shù)據(jù)輸入和輸出操作都是通過(guò)循環(huán)來(lái)實(shí)現(xiàn)的。 需要特別指出的是,圖9-24所示的流程圖不是由CPU執(zhí)行程序?qū)崿F(xiàn)的,而是由DMA控制器實(shí)現(xiàn)的。,2.DMA傳送過(guò)程(續(xù)),110,圖9-24 DMA的數(shù)據(jù)傳送過(guò)程,DMA的數(shù)據(jù)傳送過(guò)程,111,DMA后處理 當(dāng)傳送長(zhǎng)度計(jì)數(shù)器計(jì)到0時(shí),DMA操作結(jié)束,DMA控制器向CPU發(fā)中斷請(qǐng)求,CPU停止原來(lái)程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序做DMA結(jié)束處理工作。,2.DMA傳送過(guò)程(續(xù)),112,在大型計(jì)算機(jī)系統(tǒng)中,所連接的I/O設(shè)備數(shù)量多,輸入輸出頻繁,要求整體的速度快,單純依靠主CPU采取程序中斷和DMA等控制方式已不能滿足要求,于是通道控制方式被引入計(jì)算機(jī)系統(tǒng)。,9.5 通道控制方式,113,1.通道控制方式與DMA方式的區(qū)別 D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 突發(fā)重大事故應(yīng)急預(yù)案
- 安全隱患排查治理活動(dòng)總結(jié)
- 保安隊(duì)員月工作總結(jié)
- 環(huán)保安全事故心得體會(huì)
- 重大隱患臺(tái)賬清單
- 安全生產(chǎn)法律法規(guī)培訓(xùn)內(nèi)容記錄
- 安全生產(chǎn)第21條規(guī)定
- 養(yǎng)老機(jī)構(gòu)安全管理培訓(xùn)
- 司爐工安全操作規(guī)程
- 安全生產(chǎn)抓早抓小
- 2023-2024年全科醫(yī)學(xué)(正高)考試高頻題庫(kù)(歷年考點(diǎn)版)帶答案解析
- YY/T 0870.2-2019醫(yī)療器械遺傳毒性試驗(yàn)第2部分:體外哺乳動(dòng)物細(xì)胞染色體畸變?cè)囼?yàn)
- JJG 40-2011X射線探傷機(jī)
- GB/T 8923.1-2011涂覆涂料前鋼材表面處理表面清潔度的目視評(píng)定第1部分:未涂覆過(guò)的鋼材表面和全面清除原有涂層后的鋼材表面的銹蝕等級(jí)和處理等級(jí)
- GB/T 7778-2017制冷劑編號(hào)方法和安全性分類(lèi)
- GB/T 4169.4-2006塑料注射模零件第4部分:帶頭導(dǎo)柱
- 天津2023年天津銀行信息技術(shù)崗招聘黑鉆模擬III試題3套含答案詳解
- 01-TOC約束理論(瓶頸管理)八講 作業(yè)
- 《國(guó)家學(xué)生體質(zhì)健康標(biāo)準(zhǔn)》登記卡(高中樣表)
- 靜脈炎的分級(jí)及護(hù)理課件
- 折讓證明模板
評(píng)論
0/150
提交評(píng)論