




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第8章章 I/O 接口技術(shù)接口技術(shù)1本章主要內(nèi)容本章主要內(nèi)容(1) I/O接口的基本概念接口的基本概念(2) I/O控制方式控制方式(3) DMA接口技術(shù)接口技術(shù)(4) 中斷系統(tǒng)中斷系統(tǒng)28.1 I/O接口概述接口概述8.1.1 I/O接口的基本功能接口的基本功能 (1) 數(shù)據(jù)緩沖數(shù)據(jù)緩沖 (2) 提供聯(lián)絡(luò)信息提供聯(lián)絡(luò)信息 (3) 信號與信息格式的轉(zhuǎn)換信號與信息格式的轉(zhuǎn)換 (4) 設(shè)備選擇設(shè)備選擇 (5) 中斷管理中斷管理 (6) 可編程功能可編程功能38.1.2 I/O接口的基本結(jié)構(gòu)接口的基本結(jié)構(gòu)nI/O接口的基本結(jié)構(gòu)如圖接口的基本結(jié)構(gòu)如圖8.1所示。所示。4cpu外外 圍圍 設(shè)設(shè) 備備
2、數(shù)據(jù)輸入寄存器數(shù)據(jù)輸入寄存器數(shù)據(jù)輸出寄存器數(shù)據(jù)輸出寄存器狀態(tài)寄存器狀態(tài)寄存器 控制寄存器控制寄存器中斷控制邏輯中斷控制邏輯數(shù)據(jù)總線數(shù)據(jù)總線地址總線地址總線控制總線控制總線圖圖8.1 I/O 接口的基本結(jié)構(gòu)接口的基本結(jié)構(gòu)I/O接口接口58.1.3 I/O端口的編址方式端口的編址方式n輸入輸出接口包含一組稱為輸入輸出接口包含一組稱為I/O端口的寄存器。為了讓端口的寄存器。為了讓CPU能夠訪問這些能夠訪問這些I/O端口,每個(gè)端口,每個(gè)I/O端口都需有自己端口都需有自己的端口地址的端口地址(或端口號或端口號)。n在一個(gè)微型計(jì)算機(jī)系統(tǒng)中,如何編排這些在一個(gè)微型計(jì)算機(jī)系統(tǒng)中,如何編排這些I/O接口的端接口
3、的端口地址,稱為口地址,稱為I/O端口的編址方式。端口的編址方式。6n常見的常見的I/O端口編址方式有兩種端口編址方式有兩種: n一種是一種是I/O端口和存儲器端口和存儲器統(tǒng)一編址統(tǒng)一編址,也稱存儲器映像的,也稱存儲器映像的I/O(MemoryMapped I/O)方式;方式;n另一種是另一種是I/O端口和存儲器端口和存儲器分開編址分開編址,也稱,也稱I/O映像的映像的I/O(I/O Mapped I/O)方式。方式。71. I/O端口和存儲器統(tǒng)一編址端口和存儲器統(tǒng)一編址 (Memory-mapped I/O)nI/O端口和存儲器統(tǒng)一編址的地址空間分布情況如圖端口和存儲器統(tǒng)一編址的地址空間分布
4、情況如圖8.2所示。所示。8I/O 端口端口存儲單元存儲單元I/O 地址空間地址空間存儲器地址空間存儲器地址空間整個(gè)地址空間整個(gè)地址空間圖圖8.2 I/O 端口和存儲器統(tǒng)一編址端口和存儲器統(tǒng)一編址9n這種編址方式的優(yōu)點(diǎn)是,這種編址方式的優(yōu)點(diǎn)是,可以用訪向存儲器的指令來可以用訪向存儲器的指令來訪問訪問I/O端口,而訪問存儲器的指令功能比較強(qiáng),不僅端口,而訪問存儲器的指令功能比較強(qiáng),不僅有一般的傳送指令,還有算術(shù)、邏輯運(yùn)算指令,以及有一般的傳送指令,還有算術(shù)、邏輯運(yùn)算指令,以及各種移位、比較指令等,并且可以實(shí)現(xiàn)直接對各種移位、比較指令等,并且可以實(shí)現(xiàn)直接對I/O端口端口內(nèi)的數(shù)據(jù)進(jìn)行處理。內(nèi)的數(shù)據(jù)進(jìn)
5、行處理。n例如,若一個(gè)存儲器映像的例如,若一個(gè)存儲器映像的I/O端口地址為端口地址為3000H, n則可以直接用指令則可以直接用指令“ADD AL, DS:3000H”對端口對端口的內(nèi)容進(jìn)行算術(shù)運(yùn)算。的內(nèi)容進(jìn)行算術(shù)運(yùn)算。10n缺點(diǎn)是:缺點(diǎn)是:n由于由于I/O端口占用了一部分存儲器地址空間,因而使用端口占用了一部分存儲器地址空間,因而使用戶的存儲地址空間相對減??;戶的存儲地址空間相對減小;n另外,由于利用訪問存儲器的指令來進(jìn)行另外,由于利用訪問存儲器的指令來進(jìn)行I/O操作,指操作,指令的長度通常比單獨(dú)令的長度通常比單獨(dú)I/O指令要長,因而指令的執(zhí)行時(shí)指令要長,因而指令的執(zhí)行時(shí)間也較長。間也較長。
6、n微處理器微處理器MC6800系列、系列、6502系列以及系列以及MC680 x0系列系列采用這種編址方式。采用這種編址方式。112. I/O端口和存儲器單獨(dú)編址端口和存儲器單獨(dú)編址 (I/O- mapped I/O)nI/O端口和存儲器單獨(dú)編址的地址空間分布如圖端口和存儲器單獨(dú)編址的地址空間分布如圖8.3所所示。示。 12存儲單元存儲單元存儲地址空存儲地址空間間I/O 端口端口I/O 地址空間地址空間圖圖8.3 I/O 端口和存儲器單獨(dú)編址端口和存儲器單獨(dú)編址 13n這種編址方式的這種編址方式的優(yōu)點(diǎn)是:優(yōu)點(diǎn)是:n第一,第一,I/O端口不占用存儲器地址,故不會(huì)減少用戶的端口不占用存儲器地址,故
7、不會(huì)減少用戶的存儲器地址空間;存儲器地址空間;n第二,單獨(dú)第二,單獨(dú)I/O指令的地址碼較短,地址譯碼方便,指令的地址碼較短,地址譯碼方便,I/O指令短,執(zhí)行速度快;指令短,執(zhí)行速度快;n第三,采用單獨(dú)的第三,采用單獨(dú)的I/O指令,使程序中指令,使程序中I/O操作和其他操作和其他操作層次清晰,便于理解。操作層次清晰,便于理解。14n這種編址方式的這種編址方式的缺點(diǎn)是:缺點(diǎn)是:n第一,單獨(dú)第一,單獨(dú)I/O指令的功能有限,只能對端口數(shù)據(jù)進(jìn)行指令的功能有限,只能對端口數(shù)據(jù)進(jìn)行輸入輸入/輸出操作,不能直接進(jìn)行移位、比較等其他操作;輸出操作,不能直接進(jìn)行移位、比較等其他操作;n第二,由于采用了專用的第二,
8、由于采用了專用的I/O操作時(shí)序及操作時(shí)序及I/O控制信號控制信號線,因而增加了微處理器本身控制邏輯的復(fù)雜性。線,因而增加了微處理器本身控制邏輯的復(fù)雜性。n微處理器微處理器Z80系列、系列、Intel 80 x86系列采用了這種編址方系列采用了這種編址方式。式。158.1.4 I/O接口的地址譯碼及片選信號的產(chǎn)生接口的地址譯碼及片選信號的產(chǎn)生在一個(gè)微機(jī)系統(tǒng)中通常具有多臺外設(shè),當(dāng)在一個(gè)微機(jī)系統(tǒng)中通常具有多臺外設(shè),當(dāng)CPU與外設(shè)進(jìn)與外設(shè)進(jìn)行通信時(shí),需要對各個(gè)設(shè)備所對應(yīng)的接口芯片進(jìn)行邏輯行通信時(shí),需要對各個(gè)設(shè)備所對應(yīng)的接口芯片進(jìn)行邏輯選擇,從而實(shí)現(xiàn)與相應(yīng)的設(shè)備進(jìn)行數(shù)據(jù)交換。選擇,從而實(shí)現(xiàn)與相應(yīng)的設(shè)備進(jìn)
9、行數(shù)據(jù)交換。這種邏輯選擇功能是由這種邏輯選擇功能是由I/O接口電路中的地址譯碼器實(shí)接口電路中的地址譯碼器實(shí)現(xiàn)的?,F(xiàn)的。目前常見的一種做法是目前常見的一種做法是:先通過對:先通過對I/O端口地址的某幾端口地址的某幾位位高位地址進(jìn)行譯碼,產(chǎn)生有效的片選信號高位地址進(jìn)行譯碼,產(chǎn)生有效的片選信號,從而選中,從而選中對應(yīng)的接口芯片,再利用對應(yīng)的接口芯片,再利用I/O端口地址的端口地址的低位地址作為低位地址作為對接口芯片內(nèi)部有關(guān)寄存器的選擇對接口芯片內(nèi)部有關(guān)寄存器的選擇。16n例如,在例如,在IBM PC/XT微機(jī)中,其系統(tǒng)板上有數(shù)片微機(jī)中,其系統(tǒng)板上有數(shù)片I/O接口接口芯片,其中包括芯片,其中包括DMA
10、控制器控制器8237、中斷控制器、中斷控制器8259A、并、并行接口行接口8255A、計(jì)數(shù)器、計(jì)數(shù)器/定時(shí)器定時(shí)器8253等。等。n這些接口芯片必須是在相應(yīng)的片選信號有效時(shí)才能工作。這些接口芯片必須是在相應(yīng)的片選信號有效時(shí)才能工作。n圖圖8.4所示的就是在該微機(jī)系統(tǒng)中片選信號的產(chǎn)生電路。所示的就是在該微機(jī)系統(tǒng)中片選信號的產(chǎn)生電路。17 A Y0 B Y1 C Y2 Y3 Y4G2B Y5 G2A Y6 G1 Y7A5A6A874LS138A7A9AENPPICST/C CSINTRCSDMACSIOWWRTDMAPG(寫寫DMA頁面寄存器頁面寄存器)WRTNMIREG(寫(寫NMI屏蔽寄存器)
11、屏蔽寄存器)圖圖8.4 片選信號的產(chǎn)生片選信號的產(chǎn)生188.2 I/O控制方式控制方式n主機(jī)與外圍設(shè)備之間的數(shù)據(jù)傳送控制方式主機(jī)與外圍設(shè)備之間的數(shù)據(jù)傳送控制方式(即即I/O控制控制方式方式)主要有三種:主要有三種:n程序控制方式程序控制方式、中斷控制方式中斷控制方式和和直接存儲器存取直接存儲器存取(DMA)方式。方式。8.2.1 程序控制方式程序控制方式n程序控制方式是指在程序控制下進(jìn)行的數(shù)據(jù)傳送方式。程序控制方式是指在程序控制下進(jìn)行的數(shù)據(jù)傳送方式。它又分為無條件傳送和程序查詢傳送兩種。它又分為無條件傳送和程序查詢傳送兩種。1. 無條件傳送方式無條件傳送方式n優(yōu)點(diǎn):優(yōu)點(diǎn):控制程序簡單??刂瞥绦?/p>
12、簡單。n缺點(diǎn):缺點(diǎn):必須是在外設(shè)已準(zhǔn)備好的情況下才能使用,否必須是在外設(shè)已準(zhǔn)備好的情況下才能使用,否則,傳送就會(huì)出錯(cuò)。則,傳送就會(huì)出錯(cuò)。 192. 程序查詢傳送方式程序查詢傳送方式n優(yōu)點(diǎn):優(yōu)點(diǎn):比無條件傳送要準(zhǔn)確和可靠。比無條件傳送要準(zhǔn)確和可靠。 n缺點(diǎn):缺點(diǎn): (1)CPU的利用率低;的利用率低; (2)不能滿足實(shí)時(shí)控制系統(tǒng)對)不能滿足實(shí)時(shí)控制系統(tǒng)對I/O處理的要求。處理的要求。 20準(zhǔn)備好?準(zhǔn)備好?讀取狀態(tài)信息讀取狀態(tài)信息輸入數(shù)據(jù)輸入數(shù)據(jù)是是否否圖圖8.5 查詢式輸入程序流程圖查詢式輸入程序流程圖忙?忙?讀取狀態(tài)信息讀取狀態(tài)信息輸出數(shù)據(jù)輸出數(shù)據(jù)否否是是圖圖8.6 查詢式輸出程序流程圖查詢式
13、輸出程序流程圖218.2.2 中斷控制方式中斷控制方式n與程序查詢方式相比,中斷控制方式的數(shù)據(jù)交換具有與程序查詢方式相比,中斷控制方式的數(shù)據(jù)交換具有如下特點(diǎn)如下特點(diǎn): (1) 提高了提高了CPU的工作效率的工作效率; (2) 外圍設(shè)備具有申請服務(wù)的主動(dòng)權(quán)外圍設(shè)備具有申請服務(wù)的主動(dòng)權(quán); (3) CPU可以和外設(shè)并行工作可以和外設(shè)并行工作; (4) 可適合實(shí)時(shí)系統(tǒng)對可適合實(shí)時(shí)系統(tǒng)對I/O處理的要求。處理的要求。228.2.3 DMA方式方式1. DMA的基本概念的基本概念n采用程序控制方式以及中斷方式進(jìn)行數(shù)據(jù)傳送時(shí),都采用程序控制方式以及中斷方式進(jìn)行數(shù)據(jù)傳送時(shí),都是靠是靠CPU執(zhí)行程序指令來實(shí)現(xiàn)數(shù)
14、據(jù)的輸入執(zhí)行程序指令來實(shí)現(xiàn)數(shù)據(jù)的輸入/輸出的。輸出的。n采用程序控制方式及中斷方式時(shí),數(shù)據(jù)的傳輸率不會(huì)采用程序控制方式及中斷方式時(shí),數(shù)據(jù)的傳輸率不會(huì)很高。很高。n對于高速外設(shè)對于高速外設(shè),如高速磁盤裝置或高速數(shù)據(jù)采集系統(tǒng),如高速磁盤裝置或高速數(shù)據(jù)采集系統(tǒng)等,采用這樣的傳送方式,往往滿足不了其數(shù)據(jù)傳輸?shù)?,采用這樣的傳送方式,往往滿足不了其數(shù)據(jù)傳輸率的要求。率的要求。n例如,對于磁盤裝置,其數(shù)據(jù)傳輸率通常在例如,對于磁盤裝置,其數(shù)據(jù)傳輸率通常在20萬字節(jié)萬字節(jié)/秒以上,即傳輸一個(gè)字節(jié)的時(shí)間要小于秒以上,即傳輸一個(gè)字節(jié)的時(shí)間要小于5s。23n對于通常的對于通常的PC機(jī)來說,執(zhí)行一條程序指令平均需要幾
15、機(jī)來說,執(zhí)行一條程序指令平均需要幾s時(shí)時(shí)間。顯然,采用程序控制或中斷方式不能滿足這種高速外間。顯然,采用程序控制或中斷方式不能滿足這種高速外設(shè)的要求。設(shè)的要求。n由此產(chǎn)生由此產(chǎn)生不需要不需要CPU干預(yù)干預(yù)(不需不需CPU執(zhí)行程序指令執(zhí)行程序指令),而在,而在專門硬件控制電路控制之下進(jìn)行的外設(shè)與存儲器間直接數(shù)專門硬件控制電路控制之下進(jìn)行的外設(shè)與存儲器間直接數(shù)據(jù)傳送的方式據(jù)傳送的方式,稱為直接存儲器存取,稱為直接存儲器存取(Direct Memory Access),簡稱簡稱DMA方式方式。n這一專門的硬件控制電路稱為這一專門的硬件控制電路稱為DMA控制器,簡稱控制器,簡稱DMAC。24CPU外設(shè)
16、外設(shè)存儲器存儲器總線總線:執(zhí)行程序指令的數(shù)據(jù)傳送路徑;:執(zhí)行程序指令的數(shù)據(jù)傳送路徑; :DMA方式的數(shù)據(jù)傳送路徑方式的數(shù)據(jù)傳送路徑圖圖8.7 兩種不同的數(shù)據(jù)傳送路徑兩種不同的數(shù)據(jù)傳送路徑252. 幾種不同形式的幾種不同形式的DMA傳送傳送內(nèi)存外設(shè)DMAC輸出輸入外設(shè)外設(shè)DMAC內(nèi)存內(nèi)存DMAC圖圖 8.8 DMA傳送的幾種形式傳送的幾種形式26隨著大規(guī)模集成電路技術(shù)的發(fā)展,隨著大規(guī)模集成電路技術(shù)的發(fā)展,DMADMA傳送已不局限傳送已不局限于存儲器與外設(shè)間的信息交換,而可以擴(kuò)展為在存儲器的于存儲器與外設(shè)間的信息交換,而可以擴(kuò)展為在存儲器的兩個(gè)區(qū)域之間,或兩種高速的外設(shè)之間進(jìn)行兩個(gè)區(qū)域之間,或兩種
17、高速的外設(shè)之間進(jìn)行DMADMA傳送,如傳送,如圖所示。圖所示。8.3 DMA技術(shù)技術(shù)8.3.1 DMA控制器的基本功能控制器的基本功能 (1) 能接收能接收I/O接口的接口的DMA請求,并向請求,并向CPU發(fā)出總線請發(fā)出總線請求信號;求信號; (2) 當(dāng)當(dāng)CPU發(fā)出總線回答信號后,接管對總線的控制,發(fā)出總線回答信號后,接管對總線的控制,進(jìn)入進(jìn)入DMA傳送過程;傳送過程; (3) 能實(shí)現(xiàn)有效的尋址,即能輸出地址信息并在數(shù)據(jù)傳能實(shí)現(xiàn)有效的尋址,即能輸出地址信息并在數(shù)據(jù)傳送過程中自動(dòng)修改地址;送過程中自動(dòng)修改地址;27 (4) 能向存儲器和能向存儲器和I/O接口發(fā)出相應(yīng)的讀接口發(fā)出相應(yīng)的讀/寫控制信
18、號;寫控制信號; (5) 能控制數(shù)據(jù)傳送的字節(jié)數(shù),控制能控制數(shù)據(jù)傳送的字節(jié)數(shù),控制DMA傳送是否結(jié)束;傳送是否結(jié)束; (6) 在在DMA傳送結(jié)束后,能釋放總線給傳送結(jié)束后,能釋放總線給CPU,恢復(fù),恢復(fù)CPU對對總線的控制。總線的控制。288.3.2 DMA控制器的一般結(jié)構(gòu)控制器的一般結(jié)構(gòu)n一個(gè)單通道一個(gè)單通道DMA控制器的一般結(jié)構(gòu)及其與控制器的一般結(jié)構(gòu)及其與I/O接口的接口的連接如圖連接如圖8.9所示。所示。n圖圖8.9的上半部分是的上半部分是I/O接口,下半部分是接口,下半部分是DMA控制器??刂破?。29計(jì)數(shù)結(jié)束信號計(jì)數(shù)結(jié)束信號(可作為中斷請求信號)(可作為中斷請求信號)控制寄存器控制寄存
19、器 狀態(tài)寄存器狀態(tài)寄存器數(shù)據(jù)輸入寄存器數(shù)據(jù)輸入寄存器數(shù)據(jù)輸出寄存器數(shù)據(jù)輸出寄存器控制寄存器控制寄存器 狀態(tài)寄存器狀態(tài)寄存器地址寄存器地址寄存器字節(jié)計(jì)數(shù)寄存器字節(jié)計(jì)數(shù)寄存器數(shù)據(jù)總線數(shù)據(jù)總線控制總線控制總線數(shù)據(jù)總線數(shù)據(jù)總線控制總線控制總線地址總線地址總線地址總線地址總線地址譯地址譯碼器碼器 DMA控制器控制器DMA請求請求DMA響應(yīng)響應(yīng)中斷請求中斷請求外設(shè)外設(shè)I/O 接口接口總線回答總線回答總線請求總線請求圖圖8.9 DMA控制器的一般結(jié)構(gòu)及其與控制器的一般結(jié)構(gòu)及其與I/O 接口的連接接口的連接308.3.3 DMA控制器的工作方式控制器的工作方式nDMA控制器的工作方式通常有控制器的工作方式通常
20、有“單字節(jié)傳輸方式單字節(jié)傳輸方式”、“塊傳輸方式塊傳輸方式”以及以及“請求傳輸方式請求傳輸方式”等。等。1. 單字節(jié)傳輸方式單字節(jié)傳輸方式n在單字節(jié)傳輸方式下,在單字節(jié)傳輸方式下,DMA控制器每次請求總線只傳控制器每次請求總線只傳送一個(gè)字節(jié)數(shù)據(jù),傳送完后即釋放總線控制權(quán)。送一個(gè)字節(jié)數(shù)據(jù),傳送完后即釋放總線控制權(quán)。n在此方式下,總線控制權(quán)處于在此方式下,總線控制權(quán)處于CPU與與DMA控制器交替控制器交替控制之中,其間,總線控制權(quán)經(jīng)過多次交換。控制之中,其間,總線控制權(quán)經(jīng)過多次交換。2. 塊傳輸方式塊傳輸方式(也稱成組傳輸方式也稱成組傳輸方式)n塊傳輸方式是指塊傳輸方式是指DMA控制器每次請求總線
21、即連續(xù)傳送控制器每次請求總線即連續(xù)傳送一個(gè)數(shù)據(jù)塊,待整個(gè)數(shù)據(jù)塊全部傳送完成后再釋放總一個(gè)數(shù)據(jù)塊,待整個(gè)數(shù)據(jù)塊全部傳送完成后再釋放總線控制權(quán)。線控制權(quán)。313. 請求傳輸方式請求傳輸方式n每傳輸完一個(gè)字節(jié),每傳輸完一個(gè)字節(jié),DMA控制器都要檢測由控制器都要檢測由I/O接口接口發(fā)來的發(fā)來的“DMA請求請求”信號是否仍然有效,如果該信號信號是否仍然有效,如果該信號仍有效,則繼續(xù)進(jìn)行仍有效,則繼續(xù)進(jìn)行DMA傳輸;傳輸;n否則,就暫停傳輸,交還總線控制權(quán)給否則,就暫停傳輸,交還總線控制權(quán)給CPU,直至,直至“DMA請求請求”信號再次變?yōu)橛行?,?shù)據(jù)塊傳輸則從剛信號再次變?yōu)橛行?,?shù)據(jù)塊傳輸則從剛才暫停的那一
22、點(diǎn)繼續(xù)進(jìn)行下去。才暫停的那一點(diǎn)繼續(xù)進(jìn)行下去。328.3.4 DMA工作過程工作過程n在在DMA方式下,往往傳送的是一個(gè)數(shù)據(jù)塊,但傳送這方式下,往往傳送的是一個(gè)數(shù)據(jù)塊,但傳送這個(gè)數(shù)據(jù)塊的具體操作方式,可以采用上面介紹的單字個(gè)數(shù)據(jù)塊的具體操作方式,可以采用上面介紹的單字節(jié)傳輸方式,也可采用塊傳輸或請求傳輸方式。節(jié)傳輸方式,也可采用塊傳輸或請求傳輸方式。n下面先以從下面先以從內(nèi)存輸出一個(gè)字節(jié)數(shù)據(jù)到外設(shè)內(nèi)存輸出一個(gè)字節(jié)數(shù)據(jù)到外設(shè)的的DMA傳送傳送過程為例,具體說明過程為例,具體說明DMA的操作過程。然后再給出的操作過程。然后再給出以以DMA方式輸入一個(gè)數(shù)據(jù)塊方式輸入一個(gè)數(shù)據(jù)塊的工作過程。的工作過程。n
23、以以DMA方式從內(nèi)存輸出一個(gè)字節(jié)數(shù)據(jù)到外設(shè)的具體工方式從內(nèi)存輸出一個(gè)字節(jié)數(shù)據(jù)到外設(shè)的具體工作過程如圖作過程如圖8.10中第步所示。中第步所示。33(6) 內(nèi)存把數(shù)據(jù)送數(shù)據(jù)總線內(nèi)存把數(shù)據(jù)送數(shù)據(jù)總線(7) 接口鎖存數(shù)據(jù)接口鎖存數(shù)據(jù)內(nèi)存內(nèi)存接口接口DMA控制器控制器I/O 設(shè)備設(shè)備CPU 和總線和總線控制邏輯控制邏輯HOLD HLDA (1) 接口準(zhǔn)備就緒,發(fā)接口準(zhǔn)備就緒,發(fā)DMA請求請求(2) 發(fā)總線請求發(fā)總線請求(3) 總線允許總線允許 (5) DMA響應(yīng)響應(yīng)(9) CPU收回總線控制權(quán)收回總線控制權(quán)(8)DMA 控制器撤銷總線請求控制器撤銷總線請求(4) DMA控制器把地址送地址總線控制器把地
24、址送地址總線數(shù)據(jù)總線數(shù)據(jù)總線控制總線控制總線地址總線地址總線圖圖 8.10 以以DMA方式輸出一個(gè)字節(jié)數(shù)據(jù)的工作過程方式輸出一個(gè)字節(jié)數(shù)據(jù)的工作過程34n若從外設(shè)往內(nèi)存輸入一個(gè)數(shù)據(jù)塊若從外設(shè)往內(nèi)存輸入一個(gè)數(shù)據(jù)塊(輸入過程輸入過程),在,在單字節(jié)傳輸單字節(jié)傳輸方式下方式下,其主要工作過程為:,其主要工作過程為:(1)I/O接口準(zhǔn)備就緒,向接口準(zhǔn)備就緒,向DMA控制器發(fā)控制器發(fā)“DMA請求請求”信號;信號;(2)DMA控制器向控制器向CPU發(fā)發(fā)“總線請求總線請求”信號;信號;(3)CPU向向DMA控制器發(fā)控制器發(fā)“總線允許總線允許”信號;信號; (4)DMA控制器把地址送到地址總線上;控制器把地址送
25、到地址總線上;(5)DMA控制器向控制器向I/O接口發(fā)接口發(fā)“DMA響應(yīng)響應(yīng)”信號;信號;35(6)DMA控制器發(fā)讀控制器發(fā)讀I/O接口信號,令接口信號,令I(lǐng)/O接口把數(shù)據(jù)送接口把數(shù)據(jù)送到數(shù)據(jù)總線上;到數(shù)據(jù)總線上;(7)DMA控制器發(fā)寫存儲器信號,將數(shù)據(jù)寫入由地址控制器發(fā)寫存儲器信號,將數(shù)據(jù)寫入由地址總線上的地址所指向的內(nèi)存單元;總線上的地址所指向的內(nèi)存單元;(8)DMA控制器撤銷總線請求;控制器撤銷總線請求;(9)CPU 收回總線控制權(quán);收回總線控制權(quán);(10)地址寄存器加)地址寄存器加1;(11)字節(jié)計(jì)數(shù)寄存器減)字節(jié)計(jì)數(shù)寄存器減1;(12)如果字節(jié)計(jì)數(shù)寄存器的值不為零,則返回第()如果字
26、節(jié)計(jì)數(shù)寄存器的值不為零,則返回第(1) 步,否則結(jié)束。步,否則結(jié)束。368.3.5 可編程可編程DMA控制器控制器8237nIntel 8237是一種功能很強(qiáng)的可編程是一種功能很強(qiáng)的可編程DMA控制器,目前控制器,目前仍在微機(jī)系統(tǒng)中廣泛應(yīng)用(置于南橋芯片中)。采用仍在微機(jī)系統(tǒng)中廣泛應(yīng)用(置于南橋芯片中)。采用5MHz時(shí)鐘時(shí),其傳輸速率可達(dá)時(shí)鐘時(shí),其傳輸速率可達(dá)1.6MB/s;n一片一片8237內(nèi)部有內(nèi)部有4個(gè)獨(dú)立的個(gè)獨(dú)立的DMA通道,每個(gè)通道一次通道,每個(gè)通道一次DMA傳送的最大長度可達(dá)傳送的最大長度可達(dá)64KB;每個(gè)通道的;每個(gè)通道的DMA請請求都可以分別允許和禁止;不同通道的求都可以分別允
27、許和禁止;不同通道的DMA請求有不請求有不同的優(yōu)先級,優(yōu)先級可以是固定的,也可以是循環(huán)的同的優(yōu)先級,優(yōu)先級可以是固定的,也可以是循環(huán)的(可編程設(shè)定可編程設(shè)定);n4個(gè)通道可以分時(shí)地為個(gè)通道可以分時(shí)地為4個(gè)外部設(shè)備實(shí)現(xiàn)個(gè)外部設(shè)備實(shí)現(xiàn)DMA傳送,也傳送,也可以同時(shí)使用其中的通道可以同時(shí)使用其中的通道0和通道和通道1實(shí)現(xiàn)存儲器到存儲實(shí)現(xiàn)存儲器到存儲器的直接傳送,還可以用多片器的直接傳送,還可以用多片8237進(jìn)行級聯(lián),從而構(gòu)進(jìn)行級聯(lián),從而構(gòu)成更多的成更多的DMA通道。通道。378.4 中斷系統(tǒng)中斷系統(tǒng)8.4.1 基本概念基本概念1. 中斷中斷n在程序運(yùn)行時(shí),系統(tǒng)外部、內(nèi)部或現(xiàn)行程序本身若出在程序運(yùn)行時(shí)
28、,系統(tǒng)外部、內(nèi)部或現(xiàn)行程序本身若出現(xiàn)緊急事件,處理器必須立即強(qiáng)行中止現(xiàn)行程序的運(yùn)現(xiàn)緊急事件,處理器必須立即強(qiáng)行中止現(xiàn)行程序的運(yùn)行,改變機(jī)器的工作狀態(tài)并啟動(dòng)相應(yīng)的程序來處理這行,改變機(jī)器的工作狀態(tài)并啟動(dòng)相應(yīng)的程序來處理這些事件,然后再恢復(fù)原來的程序運(yùn)行,這一過程稱為些事件,然后再恢復(fù)原來的程序運(yùn)行,這一過程稱為中斷中斷(interrupt) 。在通用計(jì)算機(jī)中,為了提高系統(tǒng)的效率,采用在通用計(jì)算機(jī)中,為了提高系統(tǒng)的效率,采用CPU與與外設(shè)并行工作的方式,中斷就作為外設(shè)和外設(shè)并行工作的方式,中斷就作為外設(shè)和CPU之間聯(lián)之間聯(lián)系的手段。隨著計(jì)算機(jī)系列化產(chǎn)品和操作系統(tǒng)的出現(xiàn),系的手段。隨著計(jì)算機(jī)系列化產(chǎn)
29、品和操作系統(tǒng)的出現(xiàn),中斷系統(tǒng)的地位更加重要。中斷系統(tǒng)的地位更加重要。381)中斷源)中斷源n能夠向能夠向CPU發(fā)出中斷請求的中斷來源稱為中斷源。常見發(fā)出中斷請求的中斷來源稱為中斷源。常見的中斷源為:的中斷源為:(1) 一般的輸入一般的輸入/輸出設(shè)備,如輸出設(shè)備,如CRT終端、打印機(jī)等;終端、打印機(jī)等;(2) 數(shù)據(jù)通道,如磁盤、磁帶等;數(shù)據(jù)通道,如磁盤、磁帶等;(3) 實(shí)時(shí)時(shí)鐘,如定時(shí)器輸出的作為定時(shí)中斷請求信號等;實(shí)時(shí)時(shí)鐘,如定時(shí)器輸出的作為定時(shí)中斷請求信號等;(4) 故障信號,如電源掉電等;故障信號,如電源掉電等;(5) 軟件中斷,如為調(diào)試程序而設(shè)置的中斷源。軟件中斷,如為調(diào)試程序而設(shè)置的中
30、斷源。392) 現(xiàn)代計(jì)算機(jī)采用的中斷系統(tǒng)的主要目的現(xiàn)代計(jì)算機(jī)采用的中斷系統(tǒng)的主要目的(1)維持系統(tǒng)的正常工作,提高系統(tǒng)效率;)維持系統(tǒng)的正常工作,提高系統(tǒng)效率;(2)實(shí)時(shí)處理;)實(shí)時(shí)處理;(3)為故障處理作準(zhǔn)備。)為故障處理作準(zhǔn)備。2. 中斷響應(yīng)和處理的一般過程中斷響應(yīng)和處理的一般過程n每個(gè)中斷源向每個(gè)中斷源向CPU發(fā)出的中斷請求信號通常是隨機(jī)的,而發(fā)出的中斷請求信號通常是隨機(jī)的,而大多數(shù)大多數(shù)CPU都是在現(xiàn)行都是在現(xiàn)行指令周期結(jié)束時(shí)指令周期結(jié)束時(shí),才檢測有無中斷,才檢測有無中斷請求信號到來。故在現(xiàn)行指令執(zhí)行期間,各中斷源必須把請求信號到來。故在現(xiàn)行指令執(zhí)行期間,各中斷源必須把中斷請求信號鎖存
31、起來中斷請求信號鎖存起來,并保持到,并保持到CPU響應(yīng)這個(gè)中斷請求響應(yīng)這個(gè)中斷請求后,才清除中斷請求。后,才清除中斷請求。40nCPU在執(zhí)行每條指令的最后一個(gè)機(jī)器周期的最后一個(gè)在執(zhí)行每條指令的最后一個(gè)機(jī)器周期的最后一個(gè)時(shí)鐘周期,檢測中斷請求信號輸入線。若發(fā)現(xiàn)中斷請時(shí)鐘周期,檢測中斷請求信號輸入線。若發(fā)現(xiàn)中斷請求信號有效,對于可屏蔽中斷還必須求信號有效,對于可屏蔽中斷還必須CPU開放中斷,開放中斷,則在下一總線周期進(jìn)入中斷響應(yīng)周期。進(jìn)入中斷響應(yīng)則在下一總線周期進(jìn)入中斷響應(yīng)周期。進(jìn)入中斷響應(yīng)周期后,中斷響應(yīng)和處理的一般過程如下。周期后,中斷響應(yīng)和處理的一般過程如下。進(jìn)入中斷響應(yīng)周期后,中斷響應(yīng)和處
32、理的過程如下:進(jìn)入中斷響應(yīng)周期后,中斷響應(yīng)和處理的過程如下:1)關(guān)中斷)關(guān)中斷 CPU在響應(yīng)中斷時(shí),發(fā)出中斷響應(yīng)信號在響應(yīng)中斷時(shí),發(fā)出中斷響應(yīng)信號INTA*,同時(shí),同時(shí)內(nèi)部自動(dòng)地關(guān)中斷,以禁止接受其他的中斷請求。內(nèi)部自動(dòng)地關(guān)中斷,以禁止接受其他的中斷請求。412)保存斷點(diǎn))保存斷點(diǎn) 把斷點(diǎn)處的指令指針把斷點(diǎn)處的指令指針I(yè)P值和值和CS值壓入堆棧,以使中斷值壓入堆棧,以使中斷處理完后能正確地返回主程序斷點(diǎn)。處理完后能正確地返回主程序斷點(diǎn)。3)識別中斷源)識別中斷源 CPU要對中斷請求進(jìn)行處理,必須找到相應(yīng)的中斷服要對中斷請求進(jìn)行處理,必須找到相應(yīng)的中斷服務(wù)程序的入口地址,這就是中斷的識別。務(wù)程序
33、的入口地址,這就是中斷的識別。4)保護(hù)現(xiàn)場)保護(hù)現(xiàn)場 為了不使中斷服務(wù)程序的運(yùn)行影響主程序的狀態(tài),必為了不使中斷服務(wù)程序的運(yùn)行影響主程序的狀態(tài),必須把斷點(diǎn)處有關(guān)寄存器須把斷點(diǎn)處有關(guān)寄存器(指在中斷服務(wù)程序中要使用的指在中斷服務(wù)程序中要使用的寄存器寄存器)的內(nèi)容以及標(biāo)志寄存器的狀態(tài)壓入堆棧保護(hù)。的內(nèi)容以及標(biāo)志寄存器的狀態(tài)壓入堆棧保護(hù)。425)執(zhí)行中斷服務(wù)程序)執(zhí)行中斷服務(wù)程序 在執(zhí)行中斷服務(wù)程序中,可在適當(dāng)時(shí)刻重新開放中斷,在執(zhí)行中斷服務(wù)程序中,可在適當(dāng)時(shí)刻重新開放中斷,以便允許響應(yīng)較高優(yōu)先級的中斷。以便允許響應(yīng)較高優(yōu)先級的中斷。6)恢復(fù)現(xiàn)場并返回)恢復(fù)現(xiàn)場并返回 把中斷服務(wù)程序執(zhí)行前壓入堆棧的
34、現(xiàn)場信息彈回原寄把中斷服務(wù)程序執(zhí)行前壓入堆棧的現(xiàn)場信息彈回原寄存器,然后執(zhí)行中斷返回指令,從而返回主程序繼續(xù)存器,然后執(zhí)行中斷返回指令,從而返回主程序繼續(xù)運(yùn)行。運(yùn)行。43n在上述中斷響應(yīng)及處理的在上述中斷響應(yīng)及處理的6項(xiàng)操作中,項(xiàng)操作中,前前3項(xiàng)項(xiàng)是中斷響是中斷響應(yīng)過程,一般由中斷系統(tǒng)硬件負(fù)責(zé)完成;應(yīng)過程,一般由中斷系統(tǒng)硬件負(fù)責(zé)完成;n后后3項(xiàng)項(xiàng)是中斷處理過程,通常是由用戶或系統(tǒng)程序設(shè)計(jì)是中斷處理過程,通常是由用戶或系統(tǒng)程序設(shè)計(jì)者編制的中斷處理程序者編制的中斷處理程序(軟件軟件)負(fù)責(zé)完成。負(fù)責(zé)完成。n針對一個(gè)具體的系統(tǒng)或機(jī)型,中斷服務(wù)程序設(shè)計(jì)者應(yīng)針對一個(gè)具體的系統(tǒng)或機(jī)型,中斷服務(wù)程序設(shè)計(jì)者應(yīng)該
35、清楚該系統(tǒng)在中斷響應(yīng)時(shí),中斷響應(yīng)硬件完成了哪該清楚該系統(tǒng)在中斷響應(yīng)時(shí),中斷響應(yīng)硬件完成了哪些操作(如程序狀態(tài)字些操作(如程序狀態(tài)字PSW是否已被壓入堆棧),還是否已被壓入堆棧),還需中斷處理軟件(中斷服務(wù)程序)完成哪些操作。需中斷處理軟件(中斷服務(wù)程序)完成哪些操作。443. 中斷優(yōu)先級和中斷嵌套中斷優(yōu)先級和中斷嵌套1) 中斷優(yōu)先級中斷優(yōu)先級n在實(shí)際系統(tǒng)中,多個(gè)中斷請求可能同時(shí)出現(xiàn),但中斷在實(shí)際系統(tǒng)中,多個(gè)中斷請求可能同時(shí)出現(xiàn),但中斷系統(tǒng)只能按一定的次序來響應(yīng)和處理,這時(shí)系統(tǒng)只能按一定的次序來響應(yīng)和處理,這時(shí)CPU必須必須確定服務(wù)的次序,即根據(jù)中斷源的重要性和實(shí)時(shí)性,確定服務(wù)的次序,即根據(jù)中斷
36、源的重要性和實(shí)時(shí)性,照顧到操作系統(tǒng)處理的方便,對中斷源的響應(yīng)次序進(jìn)照顧到操作系統(tǒng)處理的方便,對中斷源的響應(yīng)次序進(jìn)行確定。行確定。n這個(gè)響應(yīng)次序稱為中斷優(yōu)先級這個(gè)響應(yīng)次序稱為中斷優(yōu)先級(priority)。)。45n通常,可用軟件查詢法確定中斷優(yōu)先級,也可用硬件通常,可用軟件查詢法確定中斷優(yōu)先級,也可用硬件組成中斷優(yōu)先級編碼電路來實(shí)現(xiàn)。組成中斷優(yōu)先級編碼電路來實(shí)現(xiàn)。n現(xiàn)代現(xiàn)代PC機(jī)中多采用可編程中斷控制器(如機(jī)中多采用可編程中斷控制器(如8259A)來)來處理中斷優(yōu)先級問題。處理中斷優(yōu)先級問題。(1) 軟件查尋法確定中斷優(yōu)先級軟件查尋法確定中斷優(yōu)先級n采用軟件查詢法解決中斷優(yōu)先級只需要少量硬件電
37、路。采用軟件查詢法解決中斷優(yōu)先級只需要少量硬件電路。如圖如圖8.11所示,系統(tǒng)中有多種外部設(shè)備,將這些設(shè)備所示,系統(tǒng)中有多種外部設(shè)備,將這些設(shè)備的中斷請求信號相的中斷請求信號相“或或”,從而產(chǎn)生一個(gè)總的中斷請,從而產(chǎn)生一個(gè)總的中斷請求信號求信號INTR發(fā)給發(fā)給CPU。46圖圖8.11 軟件查詢接口電路軟件查詢接口電路磁磁盤盤磁磁帶帶CRT顯示顯示鍵鍵盤盤輸輸入入打打印印輸輸出出電電源源故故障障紙紙帶帶輸輸入入保保留留INTR47當(dāng)當(dāng)CPU響應(yīng)中斷請求進(jìn)入中斷處理程序后,必須在中響應(yīng)中斷請求進(jìn)入中斷處理程序后,必須在中斷處理程序的開始部分安排一段帶優(yōu)先級的查詢程序,斷處理程序的開始部分安排一段帶
38、優(yōu)先級的查詢程序,查詢的先后順序就體現(xiàn)了不同設(shè)備的中斷優(yōu)先級,查詢的先后順序就體現(xiàn)了不同設(shè)備的中斷優(yōu)先級,即即先查的設(shè)備具有較高的優(yōu)先級,后查的設(shè)備具有較低先查的設(shè)備具有較高的優(yōu)先級,后查的設(shè)備具有較低的優(yōu)先級。的優(yōu)先級。 一般來說總是先查速度較快或是實(shí)時(shí)性較高的設(shè)備。一般來說總是先查速度較快或是實(shí)時(shí)性較高的設(shè)備。 軟件查詢的流程如圖軟件查詢的流程如圖8.12所示。所示。48圖圖8.12 軟件查詢流程圖軟件查詢流程圖保護(hù)現(xiàn)場保護(hù)現(xiàn)場恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場A申請服務(wù)?申請服務(wù)?B申請服務(wù)?申請服務(wù)?C申請服務(wù)?申請服務(wù)?外設(shè)外設(shè)A中斷服務(wù)程序中斷服務(wù)程序NNN外設(shè)外設(shè)B中斷服務(wù)程序中斷服務(wù)程序外設(shè)外設(shè)
39、C中斷服務(wù)程序中斷服務(wù)程序YYY49(2) 菊花鏈優(yōu)先級排隊(duì)電路菊花鏈優(yōu)先級排隊(duì)電路 菊花鏈菊花鏈(Daisy Chain)優(yōu)先級排隊(duì)電路是一種優(yōu)先級管優(yōu)先級排隊(duì)電路是一種優(yōu)先級管理的簡單硬件方案。它是在每個(gè)設(shè)備接口設(shè)置一個(gè)簡理的簡單硬件方案。它是在每個(gè)設(shè)備接口設(shè)置一個(gè)簡單的邏輯電路,以便根據(jù)優(yōu)先級順序來傳遞或截留單的邏輯電路,以便根據(jù)優(yōu)先級順序來傳遞或截留CPU發(fā)出的中斷響應(yīng)信號發(fā)出的中斷響應(yīng)信號INTA*,以實(shí)現(xiàn)響應(yīng)中斷的,以實(shí)現(xiàn)響應(yīng)中斷的優(yōu)先順序。優(yōu)先順序。(3)可編程中斷控制器)可編程中斷控制器n中斷優(yōu)先級管理的第三種方法是利用專門的可編程中中斷優(yōu)先級管理的第三種方法是利用專門的可編程
40、中斷控制器,如可編程中斷控制器斷控制器,如可編程中斷控制器8259A。502) 中斷嵌套中斷嵌套n當(dāng)當(dāng)CPU正在執(zhí)行優(yōu)先級較低的中斷服務(wù)程序時(shí),允許正在執(zhí)行優(yōu)先級較低的中斷服務(wù)程序時(shí),允許響應(yīng)比它優(yōu)先級高的中斷請求,而將正在處理的中斷響應(yīng)比它優(yōu)先級高的中斷請求,而將正在處理的中斷暫時(shí)掛起,這就是暫時(shí)掛起,這就是中斷嵌套中斷嵌套。n此時(shí),此時(shí),CPU首先為級別高的中斷服務(wù),待優(yōu)先級高的首先為級別高的中斷服務(wù),待優(yōu)先級高的中斷服務(wù)結(jié)束后,再返回到剛才被中斷的較低的那一中斷服務(wù)結(jié)束后,再返回到剛才被中斷的較低的那一級,繼續(xù)為它進(jìn)行中斷服務(wù)。如圖級,繼續(xù)為它進(jìn)行中斷服務(wù)。如圖8.13所示。所示。51圖
41、圖8.13 中斷嵌套示意圖中斷嵌套示意圖STIIRETSTIIRET.52n中斷嵌套的深度中斷嵌套的深度(中斷服務(wù)程序又被中斷的層次)受(中斷服務(wù)程序又被中斷的層次)受到堆棧容量的限制。到堆棧容量的限制。n所以在編寫中斷服務(wù)程序時(shí),必須要考慮有足夠的堆所以在編寫中斷服務(wù)程序時(shí),必須要考慮有足夠的堆棧單元來保留多次中斷的斷點(diǎn)信息及有關(guān)寄存器的內(nèi)棧單元來保留多次中斷的斷點(diǎn)信息及有關(guān)寄存器的內(nèi)容。容。538.4.2 80 x86實(shí)模式的中斷系統(tǒng)實(shí)模式的中斷系統(tǒng)1. 中斷的分類中斷的分類n中斷分類的方式很多。根據(jù)其重要性和緊急程度可分中斷分類的方式很多。根據(jù)其重要性和緊急程度可分為為可屏蔽中斷可屏蔽中
42、斷和和不可屏蔽中斷不可屏蔽中斷,根據(jù)中斷源的位置可,根據(jù)中斷源的位置可分為分為內(nèi)部中斷內(nèi)部中斷和和外部中斷外部中斷,根據(jù)進(jìn)入中斷的方式可分,根據(jù)進(jìn)入中斷的方式可分為為自愿中斷自愿中斷和和強(qiáng)迫中斷強(qiáng)迫中斷等。等。n實(shí)模式下的實(shí)模式下的80 x86有一個(gè)簡單而靈活的中斷系統(tǒng),每個(gè)有一個(gè)簡單而靈活的中斷系統(tǒng),每個(gè)中斷都有一個(gè)中斷類型碼中斷都有一個(gè)中斷類型碼(也叫中斷類型號也叫中斷類型號),以供,以供CPU進(jìn)行識別。實(shí)模式下的進(jìn)行識別。實(shí)模式下的80 x86最多能處理最多能處理256種不種不同的中斷,對應(yīng)的中斷類型碼為同的中斷,對應(yīng)的中斷類型碼為0255。54n中斷可以由中斷可以由CPU外的外的硬設(shè)備
43、啟動(dòng)硬設(shè)備啟動(dòng),也可由,也可由軟件中斷指軟件中斷指令啟動(dòng)令啟動(dòng),在某些情況下,也可由,在某些情況下,也可由CPU自身啟動(dòng)自身啟動(dòng)。根據(jù)。根據(jù)中斷源的位置,將實(shí)模式下的中斷源的位置,將實(shí)模式下的80 x86系統(tǒng)的中斷分為內(nèi)系統(tǒng)的中斷分為內(nèi)部中斷和外部中斷兩大類,如圖部中斷和外部中斷兩大類,如圖8.14所示。所示。n內(nèi)部中斷來自內(nèi)部中斷來自CPU內(nèi)部,包括指令中斷內(nèi)部,包括指令中斷INT n、溢出中、溢出中斷(斷(INTO)、除法錯(cuò))、除法錯(cuò)(除數(shù)為除數(shù)為0)中斷、單步中斷、斷中斷、單步中斷、斷點(diǎn)中斷點(diǎn)中斷(INT 3)等幾種。等幾種。55圖圖8.14 80 x86實(shí)模式系統(tǒng)的中斷分類實(shí)模式系統(tǒng)的
44、中斷分類INT n 指令指令中中 斷斷 邏邏 輯輯斷點(diǎn)中斷斷點(diǎn)中斷(INT 3)溢出中斷溢出中斷(INTO, OF=1)單步中斷單步中斷(TF=1)除法錯(cuò)除法錯(cuò)中斷中斷軟件中斷(內(nèi)部中斷)軟件中斷(內(nèi)部中斷)非屏蔽中斷請求非屏蔽中斷請求中中斷斷控控制制器器(8259A)NMIINTRIRQ0.IRQ7可可 屏屏 蔽蔽 中中 斷斷 硬件中斷(外部中斷)硬件中斷(外部中斷)56n80 x86實(shí)模式系統(tǒng)中可引入的外部中斷分為可屏蔽中斷實(shí)模式系統(tǒng)中可引入的外部中斷分為可屏蔽中斷和不可屏蔽中斷兩大類。不可屏蔽中斷也叫非屏蔽中和不可屏蔽中斷兩大類。不可屏蔽中斷也叫非屏蔽中斷,通過斷,通過CPU的的NMI
45、引腳進(jìn)入,它不受中斷允許標(biāo)志引腳進(jìn)入,它不受中斷允許標(biāo)志IF的屏蔽,一般將比較緊急、需要系統(tǒng)立即響應(yīng)的中的屏蔽,一般將比較緊急、需要系統(tǒng)立即響應(yīng)的中斷定義為非屏蔽中斷。斷定義為非屏蔽中斷。n可屏蔽中斷是通過可屏蔽中斷是通過CPU的的INTR引腳進(jìn)入的,并且只有引腳進(jìn)入的,并且只有當(dāng)中斷允許標(biāo)志當(dāng)中斷允許標(biāo)志IF=1時(shí),可屏蔽中斷才能進(jìn)入。在一時(shí),可屏蔽中斷才能進(jìn)入。在一個(gè)系統(tǒng)中,通過中斷控制器個(gè)系統(tǒng)中,通過中斷控制器(如如8259A)的配合工作,可的配合工作,可屏蔽中斷可以有幾個(gè)甚至幾十個(gè)。屏蔽中斷可以有幾個(gè)甚至幾十個(gè)。n外部中斷也叫硬件中斷,內(nèi)部中斷也叫軟件中斷。外部中斷也叫硬件中斷,內(nèi)部中
46、斷也叫軟件中斷。57n需要說明的是,對于工作于保護(hù)模式下的需要說明的是,對于工作于保護(hù)模式下的80386以上微處以上微處理器,把外部中斷稱為理器,把外部中斷稱為“中斷中斷”,把內(nèi)部中斷稱為,把內(nèi)部中斷稱為“異常異常”(exception)。)。n關(guān)于保護(hù)模式下的中斷和異常的相關(guān)概念和操作過程,這關(guān)于保護(hù)模式下的中斷和異常的相關(guān)概念和操作過程,這里不再做專門介紹。里不再做專門介紹。582. 中斷向量表中斷向量表n所謂所謂中斷向量(中斷向量(interrupt vector),實(shí)際上就是,實(shí)際上就是中斷服中斷服務(wù)程序的入口地址務(wù)程序的入口地址,每個(gè)中斷類型對應(yīng)一個(gè)中斷向量。,每個(gè)中斷類型對應(yīng)一個(gè)中
47、斷向量。n每個(gè)中斷向量占每個(gè)中斷向量占4字節(jié)的存儲單元。字節(jié)的存儲單元。其中其中:n前兩個(gè)字節(jié)單元存放中斷服務(wù)程序入口地址的偏移量前兩個(gè)字節(jié)單元存放中斷服務(wù)程序入口地址的偏移量(IP),低字節(jié)在前,高字節(jié)在后;,低字節(jié)在前,高字節(jié)在后;n后兩個(gè)字節(jié)單元存放中斷服務(wù)程序入口地址的段基值后兩個(gè)字節(jié)單元存放中斷服務(wù)程序入口地址的段基值(CS),也是低字節(jié)在前,高字節(jié)在后。,也是低字節(jié)在前,高字節(jié)在后。59n80 x86實(shí)模式系統(tǒng)允許引入的中斷可達(dá)實(shí)模式系統(tǒng)允許引入的中斷可達(dá)256個(gè),因此需個(gè),因此需占用占用1K字節(jié)的存儲空間來存放這字節(jié)的存儲空間來存放這256個(gè)中斷服務(wù)程序個(gè)中斷服務(wù)程序入口地址。入
48、口地址。n80 x86實(shí)模式系統(tǒng)把中斷服務(wù)程序入口地址信息設(shè)置在實(shí)模式系統(tǒng)把中斷服務(wù)程序入口地址信息設(shè)置在存儲器的最低端,即從存儲器的最低端,即從00000H003FFH的的1K字節(jié)存字節(jié)存儲空間中。儲空間中。n這一存儲空間就叫這一存儲空間就叫中斷向量表,中斷向量表,如圖如圖8.15所示。所示。60圖圖8.15 實(shí)模式系統(tǒng)的中斷向量表實(shí)模式系統(tǒng)的中斷向量表CSIPCSIPCSIPCSIPCSIPCSIPCSIP類型類型255(十進(jìn)制)(十進(jìn)制)類型類型32類型類型31(十進(jìn)制)(十進(jìn)制)供用戶定義的中斷供用戶定義的中斷(共(共224個(gè))個(gè))類型類型5類型類型4類型類型3類型類型2類型類型1類型
49、類型0保留的中斷保留的中斷(共(共27個(gè))個(gè))專用的中斷專用的中斷(共(共5個(gè))個(gè))0000: 03FFH0000:007FH0000:007EH 0000:0014H0000:0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H溢出中斷溢出中斷斷點(diǎn)中斷斷點(diǎn)中斷非屏蔽中斷非屏蔽中斷單步中斷單步中斷除數(shù)為除數(shù)為0中斷中斷61n在中斷向量表中,各中斷向量按中斷類型碼從在中斷向量表中,各中斷向量按中斷類型碼從0 0到到255255順序存放。這樣,知道了中斷類型碼,
50、很快就可算出順序存放。這樣,知道了中斷類型碼,很快就可算出相應(yīng)中斷向量的存放位置,從而取出中斷向量相應(yīng)中斷向量的存放位置,從而取出中斷向量。n例如,中斷類型碼為例如,中斷類型碼為27H的中斷所對應(yīng)的中斷向量應(yīng)的中斷所對應(yīng)的中斷向量應(yīng)存放在從存放在從0000H:009CH開始的開始的4個(gè)連續(xù)字節(jié)單元中。個(gè)連續(xù)字節(jié)單元中。n如果相應(yīng)存儲單元的內(nèi)容如圖如果相應(yīng)存儲單元的內(nèi)容如圖8.16所示,那么所示,那么27H號中號中斷的中斷服務(wù)程序的入口地址即為斷的中斷服務(wù)程序的入口地址即為8765H:4321H。62圖圖8.16 中斷向量的存放格式中斷向量的存放格式87H65H43H21H0000:009FH0
51、000:009CH63n由于中斷向量在中斷向量表中是按中斷類型碼(也稱中由于中斷向量在中斷向量表中是按中斷類型碼(也稱中斷向量號)順序存放的,所以每個(gè)中斷向量的地址可由斷向量號)順序存放的,所以每個(gè)中斷向量的地址可由中斷類型碼乘以中斷類型碼乘以4 4計(jì)算出來。計(jì)算出來。nCPU響應(yīng)中斷時(shí),只要把中斷類型碼響應(yīng)中斷時(shí),只要把中斷類型碼N左移左移2位(乘以位(乘以4),即可得到中斷向量在中斷向量表中的對應(yīng)地址),即可得到中斷向量在中斷向量表中的對應(yīng)地址4N(該中斷向量所占該中斷向量所占4個(gè)字節(jié)單元的第一個(gè)字節(jié)單元的地個(gè)字節(jié)單元的第一個(gè)字節(jié)單元的地址址)。n然后把由此地址開始的兩個(gè)低字節(jié)單元的內(nèi)容裝
52、入然后把由此地址開始的兩個(gè)低字節(jié)單元的內(nèi)容裝入IP寄寄存器:存器: IP (4N, 4N+1) n再把兩個(gè)高字節(jié)單元的內(nèi)容裝入再把兩個(gè)高字節(jié)單元的內(nèi)容裝入 CS 寄存器寄存器: CS (4N+2, 4N+3)64n這就是使程序轉(zhuǎn)入中斷類型碼為這就是使程序轉(zhuǎn)入中斷類型碼為N的中斷服務(wù)程序的的中斷服務(wù)程序的控制過程,如下面例控制過程,如下面例8.1所示。所示。n至于中斷類型碼至于中斷類型碼N的來源,對于不同的中斷類型(內(nèi)的來源,對于不同的中斷類型(內(nèi)部中斷、外部中斷),情況有所不同,詳見后述。部中斷、外部中斷),情況有所不同,詳見后述。例例8.1 若中斷類型碼為若中斷類型碼為3,則由中斷類型碼取得
53、中斷服務(wù),則由中斷類型碼取得中斷服務(wù)程序入口地址的過程如圖程序入口地址的過程如圖8.17所示。所示。65圖圖8.17 根據(jù)中斷類型碼取得中斷服務(wù)程序入口地址根據(jù)中斷類型碼取得中斷服務(wù)程序入口地址OOH(IPL)0AH(IPH)00H(CSL)1EH(CSH)中斷服務(wù)程序中斷服務(wù)程序00000H00001H0000CH(0000:000CH) 1EA00H(1E00:0A00H)FFFFFH高地址高地址低地址低地址34000CH(中斷向量地址)(中斷向量地址)66例例8.2 中斷類型碼為中斷類型碼為20H,則中斷服務(wù)程序的入口地址存,則中斷服務(wù)程序的入口地址存放在中斷向量表從放在中斷向量表從00
54、00:0080H開始的開始的4個(gè)字節(jié)單元中。個(gè)字節(jié)單元中。若這若這4個(gè)字節(jié)單元的內(nèi)容分別為:個(gè)字節(jié)單元的內(nèi)容分別為:n(0000:0080H)= 10Hn(0000:0081H)= 20Hn(0000:0082H)= 30Hn(0000:0083H)= 40H試指出相應(yīng)的中斷服務(wù)程序的入口地址。試指出相應(yīng)的中斷服務(wù)程序的入口地址。解解: 中斷服務(wù)程序的入口地址為中斷服務(wù)程序的入口地址為 。67n例例8.3 中斷類型碼為中斷類型碼為17H,若中斷服務(wù)程序的入口地,若中斷服務(wù)程序的入口地址為址為2340H:7890H,試指出中斷向量表中存放該中斷,試指出中斷向量表中存放該中斷向量的向量的4個(gè)字節(jié)單
55、元的地址及內(nèi)容。個(gè)字節(jié)單元的地址及內(nèi)容。解解: 由于中斷類型碼為由于中斷類型碼為17H,所以中斷向量表中存放相,所以中斷向量表中存放相應(yīng)中斷向量的應(yīng)中斷向量的4個(gè)字節(jié)單元的地址分別為個(gè)字節(jié)單元的地址分別為0000:005CH、0000:005DH、0000:005EH、0000:005FH,4個(gè)字節(jié)單個(gè)字節(jié)單元的內(nèi)容分別為元的內(nèi)容分別為 。 683. 外部中斷外部中斷由外部的中斷請求信號啟動(dòng)的中斷,稱為外部中斷由外部的中斷請求信號啟動(dòng)的中斷,稱為外部中斷, ,也也稱硬件中斷。稱硬件中斷。80 x86 CPU80 x86 CPU為外部中斷提供兩條引線,即為外部中斷提供兩條引線,即NMINMI和和
56、INTRINTR,用來輸入中斷請求信號用來輸入中斷請求信號。1) 非屏蔽中斷非屏蔽中斷 從從NMI引腳進(jìn)入的中斷為非屏蔽中斷,它不受中斷允引腳進(jìn)入的中斷為非屏蔽中斷,它不受中斷允許標(biāo)志許標(biāo)志IF的影響。的影響。 非屏蔽中斷的類型碼為非屏蔽中斷的類型碼為2,因此,非屏蔽中斷處理子程,因此,非屏蔽中斷處理子程序的入口地址存放在序的入口地址存放在08H、09H、0AH和和0BH這這4個(gè)字個(gè)字節(jié)單元中節(jié)單元中 。692) 可屏蔽中斷可屏蔽中斷n一般外部設(shè)備請求的中斷都是從一般外部設(shè)備請求的中斷都是從CPU的的INTR端引入的端引入的可屏蔽中斷??善帘沃袛唷當(dāng)當(dāng)CPU接收到一個(gè)可屏蔽中斷請求時(shí),如果中
57、斷允許接收到一個(gè)可屏蔽中斷請求時(shí),如果中斷允許標(biāo)志標(biāo)志IF為為1,那么,那么CPU就會(huì)在執(zhí)行完當(dāng)前指令后響應(yīng)這就會(huì)在執(zhí)行完當(dāng)前指令后響應(yīng)這一中斷請求。一中斷請求。n至于至于IF的設(shè)置和清除,則可以通過指令或調(diào)試工具來的設(shè)置和清除,則可以通過指令或調(diào)試工具來實(shí)現(xiàn)。實(shí)現(xiàn)。nCPU響應(yīng)外部可屏蔽中斷時(shí),往響應(yīng)外部可屏蔽中斷時(shí),往INTA引腳上先后發(fā)兩引腳上先后發(fā)兩個(gè)負(fù)脈沖。外設(shè)接口收到第二個(gè)負(fù)脈沖以后,立即往個(gè)負(fù)脈沖。外設(shè)接口收到第二個(gè)負(fù)脈沖以后,立即往數(shù)據(jù)總線上送出中斷類型碼,以供數(shù)據(jù)總線上送出中斷類型碼,以供CPU讀取。讀取。704. 內(nèi)部中斷內(nèi)部中斷內(nèi)部中斷也稱軟件中斷。內(nèi)部中斷也稱軟件中斷。
58、它是由于它是由于CPU執(zhí)行了執(zhí)行了INT n(含含INT 3)、INTO指令,或指令,或者由于除法出錯(cuò)以及進(jìn)行單步操作所引起的中斷,主者由于除法出錯(cuò)以及進(jìn)行單步操作所引起的中斷,主要包括要包括INT n指令中斷、斷點(diǎn)中斷、溢出中斷、除法錯(cuò)指令中斷、斷點(diǎn)中斷、溢出中斷、除法錯(cuò)中斷以及單步中斷。中斷以及單步中斷。71(1) INT n 指令中斷。指令中斷。 n80 x86系統(tǒng)提供了直接調(diào)用中斷處理子程序的手段,這系統(tǒng)提供了直接調(diào)用中斷處理子程序的手段,這就是中斷指令就是中斷指令I(lǐng)NT n。n指令中的中斷類型碼指令中的中斷類型碼n告訴告訴CPU調(diào)用哪個(gè)中斷處理子程調(diào)用哪個(gè)中斷處理子程序。序。(2)
59、除法錯(cuò)中斷(類型除法錯(cuò)中斷(類型0)n在執(zhí)行除法指令在執(zhí)行除法指令DIV 或或IDIV 后,若所得的商超出了目后,若所得的商超出了目標(biāo)寄存器所能表示的范圍,比如用數(shù)值標(biāo)寄存器所能表示的范圍,比如用數(shù)值0作除數(shù),則作除數(shù),則CPU立即產(chǎn)生一個(gè)立即產(chǎn)生一個(gè)0型中斷型中斷。72(3) 溢出中斷(類型溢出中斷(類型4)若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位OF置置1,則緊,則緊接著執(zhí)行接著執(zhí)行INTO指令時(shí),將引起類型為指令時(shí),將引起類型為4的內(nèi)部中斷,的內(nèi)部中斷,CPU將轉(zhuǎn)入溢出錯(cuò)誤處理。將轉(zhuǎn)入溢出錯(cuò)誤處理。若若OF=0時(shí),則時(shí),則INTO指令執(zhí)行空操作,即指令執(zhí)行空操
60、作,即INTO指令不指令不起作用。起作用。 INTO指令通常安排在算術(shù)運(yùn)算指令之后,以便在發(fā)指令通常安排在算術(shù)運(yùn)算指令之后,以便在發(fā)生溢出時(shí)能及時(shí)處理。生溢出時(shí)能及時(shí)處理。73(4) 單步中斷(類型單步中斷(類型1)n當(dāng)把當(dāng)把CPU標(biāo)志寄存器的標(biāo)志寄存器的TF位置為位置為1以后,以后,CPU便處于便處于單步工作方式。單步工作方式。n在單步工作方式下,在單步工作方式下,CPU每執(zhí)行完一條指令,就會(huì)自每執(zhí)行完一條指令,就會(huì)自動(dòng)產(chǎn)生一個(gè)動(dòng)產(chǎn)生一個(gè)1 型中斷,進(jìn)入型中斷,進(jìn)入1型中斷處理程序。型中斷處理程序。n此處理程序顯示此處理程序顯示CPU內(nèi)部各寄存器的內(nèi)容并告知某些內(nèi)部各寄存器的內(nèi)容并告知某些附
溫馨提示
- 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45599-2025液體硅橡膠連接器用自潤滑型
- 高三數(shù)學(xué)復(fù)習(xí)試題與答案要點(diǎn)
- 江蘇省南京市、鹽城市2025屆高三下學(xué)期3月一模試題 英語 含解析
- 材料力學(xué)與智能制造重點(diǎn)基礎(chǔ)知識點(diǎn)
- 材料疲勞裂紋擴(kuò)展數(shù)據(jù)分析方法原理重點(diǎn)基礎(chǔ)知識點(diǎn)
- 景點(diǎn)火災(zāi)應(yīng)急預(yù)案目錄(3篇)
- 計(jì)算機(jī)軟件考試難點(diǎn)突破試題及答案
- 2025年法學(xué)概論考試技巧與試題及答案
- 停水停電火災(zāi)應(yīng)急預(yù)案(3篇)
- 高考數(shù)學(xué)典型試題及答案
- (一模)2025年深圳市高三年級第一次調(diào)研考試 英語試卷(含標(biāo)準(zhǔn)答案)
- 丙酸鉻、淀粉酶對黃羽肉雞生長性能、抗氧化和腸道健康的影響
- 光伏發(fā)電新能源課件
- 2025年貴州遵義路橋工程限公司招聘10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 上海市居住房屋租賃合同范本
- 老舊小區(qū)改造給排水施工方案
- 2025屆江蘇省南京市南京師大附中高考數(shù)學(xué)一模試卷含解析
- 49-提高臨邊防護(hù)欄桿有效合格率(清泉建筑)
- 新高考2025屆高考數(shù)學(xué)二輪復(fù)習(xí)專題突破精練第9講函數(shù)中的整數(shù)問題與零點(diǎn)相同問題學(xué)生版
- 中華民族共同體概論教案第九講-混一南北與中華民族大統(tǒng)合
- 旅游經(jīng)濟(jì)專業(yè)知識和實(shí)務(wù)經(jīng)濟(jì)師考試(中級)試卷及解答參考
評論
0/150
提交評論