版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章 輸入輸出系統(tǒng),輸入輸出系統(tǒng)是微機(jī)系統(tǒng)的重要組成部分,微機(jī)是通過輸入輸出設(shè)備與外界進(jìn)行數(shù)據(jù)交互。輸入輸出系統(tǒng)包括外部設(shè)備(輸入輸出設(shè)備和輔助存儲(chǔ)器)及其與主機(jī)(CPU和主存儲(chǔ)器)之間的控制部件。后者稱之為設(shè)備控制器,諸如磁盤控制器、打印機(jī)控制器等,有時(shí)也稱為設(shè)備適配器或接口,其作用是控制并實(shí)現(xiàn)主機(jī)與外部設(shè)備之間的數(shù)據(jù)傳送。,隨著計(jì)算機(jī)系統(tǒng)的不斷發(fā)展和應(yīng)用范圍的不斷擴(kuò)大,輸入輸出系統(tǒng)設(shè)備的種類也越來越多,提供的操作功能越來越強(qiáng),而且繼續(xù)朝智能化、高可靠性、小型廉價(jià)的方向發(fā)展。他們與主機(jī)的聯(lián)絡(luò)方式和信息的交換方式也各不相同。本章介紹兩大內(nèi)容I/O設(shè)備與I/O系統(tǒng),重點(diǎn)介紹I/O接口的功能和結(jié)
2、構(gòu)、I/O設(shè)備的編址和尋址、以及在主機(jī)和外設(shè)間進(jìn)行數(shù)據(jù)傳送的各種輸入輸出控制方式等內(nèi)容。然后介紹的是一些常用的I/O設(shè)備的基本組成和運(yùn)行原理,如顯示器、打印機(jī)、鍵盤和鼠標(biāo)等。,7.1 輸入輸出系統(tǒng)概述,7.1.1 I/O接口電路 為了實(shí)現(xiàn)友好的人機(jī)交互界面和各種形式的輸入/輸出,人們使用了多種I/O設(shè)備,例如鍵盤、鼠標(biāo)、顯示器、打印機(jī)、繪圖儀等。在某些場合為了讓計(jì)算機(jī)應(yīng)用于數(shù)據(jù)采集、參數(shù)監(jiān)測和實(shí)時(shí)控制等領(lǐng)域,還會(huì)用到模/數(shù)轉(zhuǎn)換器、數(shù)/模轉(zhuǎn)換器、發(fā)光二極管、按鈕開關(guān)等。這些外部設(shè)備在工作原理、驅(qū)動(dòng)方式、信息格式以及工作速度方面彼此都有很大的差別,比如信息量可能是開關(guān)量、數(shù)字量,更有可能是各種不同
3、性質(zhì)的模擬量,如溫度、壓力、流量、長度和濃度等;在數(shù)據(jù)處理上,其速度也比CPU慢的多,信號(hào)時(shí)序差別很大,必須進(jìn)行緩沖和協(xié)調(diào)。所以,他們不能直接和CPU相連,必須經(jīng)過中間電路再與系統(tǒng)相連,這部分電路叫做I/O接口電路。如圖7.1所示。,圖7.1 微機(jī)系統(tǒng)中各類接口框圖,7.1.2 I/O接口的結(jié)構(gòu)與功能 1.I/O接口的內(nèi)部結(jié)構(gòu) 圖7.2為I/O接口面向用戶的典型結(jié)構(gòu),內(nèi)部一般包括3類可尋址的寄存器: (1)數(shù)據(jù)寄存器在輸入時(shí),它保存從外設(shè)發(fā)往CPU的數(shù)據(jù),輸出時(shí),它保存從CPU發(fā)往外設(shè)的數(shù)據(jù); (2)狀態(tài)寄存器保存外設(shè)或接口電路的狀態(tài),CPU可從狀態(tài)寄存器讀取當(dāng)前狀態(tài); (3)控制寄存器用來保
4、存CPU寫入的控制字。CPU可以向其中寫入命令,選擇接口電路的工作方式,并控制外設(shè)進(jìn)行相關(guān)的操作 在I/O接口中,這3類可操作的寄存器分別稱為數(shù)據(jù)端口、狀態(tài)端口和控制端口,或簡稱為數(shù)據(jù)口、狀態(tài)口和控制口。請注意:每類端口的數(shù)量可能不止一個(gè)。,2.接口的功能 I/O接口用于實(shí)現(xiàn)主機(jī)與外設(shè)之間的數(shù)據(jù)交換并控制外設(shè),其主要功能如下: (1)接受和執(zhí)行CPU命令的功能:CPU對被控對象外部設(shè)備的控制命令是以命令代碼的形式先發(fā)送到接口中稱之為“命令口”的命令寄存器。再有接口電路對命令代碼進(jìn)行識(shí)別和分析,分解成若干個(gè)控制信號(hào),傳送到I/O設(shè)備,使其產(chǎn)生相應(yīng)的具體操作。,圖7.2 I/O接口面向用戶的典型結(jié)
5、構(gòu),(2)返回外設(shè)狀態(tài)的功能:通過狀態(tài)口查詢現(xiàn)在外設(shè)的狀態(tài):“忙”、“閑”、“準(zhǔn)備就緒”、“未準(zhǔn)備就緒”、“滿”、“空”、以及“溢出錯(cuò)”、“格式錯(cuò)”、“校驗(yàn)錯(cuò)”等狀態(tài),供CPU做出判斷和處理。 (3)數(shù)據(jù)緩沖功能:解決CPU與外設(shè)的速度不匹配,避免因速度不一致而丟失數(shù)據(jù)。接口中一般設(shè)置數(shù)據(jù)緩沖寄存器,簡稱數(shù)據(jù)緩存器,常稱之為“數(shù)據(jù)口”。 (4)信號(hào)轉(zhuǎn)換功能:由于外設(shè)所需要的控制信號(hào)和所提供的狀態(tài)信號(hào)往往同微機(jī)的總線信號(hào)不兼容。不兼容表現(xiàn)在兩者的信號(hào)功能定義、邏輯關(guān)系、電平高低以及工作時(shí)序的不一致。故需對信號(hào)進(jìn)行轉(zhuǎn)換,以達(dá)到信號(hào)的邏輯關(guān)系、時(shí)序配合以及電平匹配。 (5)設(shè)備選擇功能:因微機(jī)系統(tǒng)中
6、一般有多種外設(shè),在同一種外設(shè)中也可能有多臺(tái),而一個(gè)CPU在同一時(shí)間只能與一臺(tái)外設(shè)交換信息,這就要在接口中設(shè)置I/O端口地址譯碼電路對外設(shè)進(jìn)行尋址。,(6)數(shù)據(jù)寬度與數(shù)據(jù)格式轉(zhuǎn)換的功能: 數(shù)據(jù)寬度:CPU所處理的是并行數(shù)據(jù)(8位、16位或32位、64位),而有的外設(shè)(如串行通信設(shè)備,磁盤驅(qū)動(dòng)器等)只能處理串行數(shù)據(jù),因此,接口就應(yīng)有數(shù)據(jù)“并串”和“串并”的轉(zhuǎn)換能力。為此,在接口中設(shè)置移位寄存器。 數(shù)據(jù)格式:CPU與有些外設(shè)交換數(shù)據(jù)時(shí),要求按一定的格式傳送,如串行通信中的起止式異步通信數(shù)據(jù)格式及面向字符的同步通信數(shù)據(jù)格式。此時(shí),需在CPU與通信設(shè)備之間進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換。,7.1.3 I/O端口的尋址
7、 I/O設(shè)備編址原因:為了方便CPU對I/O設(shè)備進(jìn)行尋址和選擇,必須給每一臺(tái)設(shè)備規(guī)定一些地址碼(設(shè)備號(hào)或設(shè)備代碼)。外設(shè)識(shí)別是通過地址總線和接口電路中的地址譯碼器來實(shí)現(xiàn)的。一臺(tái)外設(shè)可以對應(yīng)一個(gè)或幾個(gè)識(shí)別碼,從硬件結(jié)構(gòu)來講,每個(gè)特定的地址碼指向外設(shè)接口中的一個(gè)寄存器。目前,常采用兩種不同的外設(shè)編址方式:統(tǒng)一編址方式和獨(dú)立編址方式。 (1)端口獨(dú)立編址方式是把所有I/O接口看作一個(gè)獨(dú)立于存儲(chǔ)器的I/O空間。在這個(gè)I/O空間內(nèi),每個(gè)端口都被分配一個(gè)地址與之對應(yīng)。要訪問獨(dú)立于存儲(chǔ)空間的端口,必須用專門的I/O指令:IN和OUT指令。 獨(dú)立編址方式的優(yōu)點(diǎn)是:使用專門的I/O指令訪問外設(shè),與訪存指令分開;
8、指令執(zhí)行快;不占內(nèi)存地址空間。 I/O端口與存儲(chǔ)器,都有自己的地址譯碼器,地址空間獨(dú)立,互不影響。,獨(dú)立編址方式的缺點(diǎn):需專用指令、尋址方式少。 輸入指令 IN AL,i8;字節(jié)輸入,直接尋址 IN AL,DX;字節(jié)輸入,間接尋址 IN AX,i8;字輸入,直接尋址 IN AX,DX;字輸入,間接尋址 輸出指令 OUT i8,AL;字節(jié)輸出,直接尋址 OUT DX,AL;字節(jié)輸出,間接尋址 OUT i8,AL;字輸出,直接尋址 OUT DX,AL;字輸出,間接尋址,(2)端口統(tǒng)一編址方式是把每一個(gè)端口視為一個(gè)存儲(chǔ)器單元,并賦以相應(yīng)的存儲(chǔ)器地址。微處理機(jī)訪問端口,如同訪問存儲(chǔ)器(只是地址不同),
9、所有訪問存儲(chǔ)器的指令同樣適合于I/O端口。由于端口地址被映象到存儲(chǔ)空間,作為存儲(chǔ)空間的一小部分,因此,也稱為“存儲(chǔ)器映象編址”。 統(tǒng)一編址方式的優(yōu)點(diǎn)是:訪存指令可訪問端口,尋址類型多。 統(tǒng)一編址方式的缺點(diǎn)是:端口占用存儲(chǔ)器空間;速度慢。 7.2 輸入/輸出信息傳送控制方式 輸入/輸出設(shè)備本身在速度上有很大差異,而它們與主機(jī)在速度上的差異更大。因此,如何保證主機(jī)與外圍設(shè)備在時(shí)間上的同步,這是必須要解決的一個(gè)問題。 我們來分析輸入/輸出設(shè)備與中央處理器進(jìn)行數(shù)據(jù)交換的過程。,首先是輸入過程。在中央處理器進(jìn)行輸入的過程中,至少需要包括以下三個(gè)步驟: (1)中央處理器把一個(gè)地址值放在地址總線上,用于選擇
10、某一輸入設(shè)備。 (2)中央處理器等候輸入設(shè)備的數(shù)據(jù)成為有效。 (3)中央處理器從數(shù)據(jù)總線讀入數(shù)據(jù),并放在一個(gè)有關(guān)的寄存器中。 在中央處理器進(jìn)行輸出的過程中,至少也需要經(jīng)歷以下三個(gè)步驟: (1)中央處理器把一個(gè)地址放在地址總線上,選擇輸出設(shè)備。 (2)中央處理器把數(shù)據(jù)放在數(shù)據(jù)總線上。 (3)輸出設(shè)備確認(rèn)數(shù)據(jù)總線上的數(shù)據(jù)有效,從而把數(shù)據(jù)取走。,在上述的輸入/輸出過程中,由于輸入/輸出設(shè)備具有不同的操作速度,因此需要有不同的定時(shí)方式,才能使輸入/輸出過程有效。中央處理器與輸入/輸出設(shè)備之間的定時(shí)有以下三種情況: (1)速度極慢的輸入/輸出設(shè)備。這類設(shè)備,包括機(jī)械開關(guān)、顯示二極管在內(nèi),中央處理器總是能
11、夠快捷地應(yīng)對它們的動(dòng)作的響應(yīng),而由于它們的動(dòng)作是這樣的慢,中央處理器可以認(rèn)為它們在它的一個(gè)工作周期內(nèi)的數(shù)據(jù)送是有效的(不變的)。因此,中央處理器可以隨時(shí)接收或發(fā)送數(shù)據(jù)。當(dāng)然,這時(shí)這些設(shè)備的接口也要發(fā)揮作用。 (2)慢速或中速的輸入/輸出設(shè)備。由于這些設(shè)備的速度特性,因此中央處理器與這類設(shè)備之間的數(shù)據(jù)交換通常是以異步定時(shí)方式進(jìn)行。這個(gè)過程大致是:如果中央處理器要從某個(gè)輸入設(shè)備接收一個(gè)字,則它首先要詢問外設(shè)的當(dāng)前狀態(tài)。如果該外設(shè)的狀態(tài)標(biāo)志,表明它已“準(zhǔn)備就緒”,那么中央處理器就可以通過總線從該設(shè)備接收數(shù)據(jù)。而后,如果中央處理器還需要數(shù)據(jù),則還須等待這個(gè)輸入設(shè)備把數(shù)據(jù)準(zhǔn)備好了才能實(shí)現(xiàn)。中央處理器發(fā)送
12、數(shù)據(jù)的情況也和上述情況類似。 (3)高速的輸入/輸出設(shè)備。這類設(shè)備是以相等的時(shí)間間隔操作的,而中央處理器也以等間隔的時(shí)間執(zhí)行指令。當(dāng)涉及兩種設(shè)備這樣的數(shù)據(jù)傳輸過程時(shí),很自然地出現(xiàn)對于緩沖區(qū)的需要,因?yàn)楹茈y設(shè)想,如果兩種設(shè)備好像接力棒那樣,怎么能保證效率。如果有了緩沖區(qū),那就可以使得任何一方的操作都不受另一方的制約:一方向緩沖區(qū)送入數(shù)據(jù),而另一方則從緩沖區(qū)取數(shù)據(jù)。這樣,盡管兩者的速度上有差異,但仍可以“同步”地進(jìn)行。這也就是接口設(shè)備的作用。因?yàn)椋话銇碚f,緩沖區(qū)是設(shè)立在接口設(shè)備上的。,從上面可以看出,輸入/輸出信息的交換應(yīng)該在信息已經(jīng)放進(jìn)了緩沖區(qū)之后進(jìn)行。在此基礎(chǔ)上,主要有下列五種輸入/輸出方式
13、:程序查詢方式、程序中斷方式、直接存儲(chǔ)器存取方式、通道方式和外圍處理機(jī)方式。如圖7.3所示:,7.2.1 查詢方式 1. 程序查詢的基本思想 由CPU執(zhí)行一段輸入/輸出程序來實(shí)現(xiàn)主存與外設(shè)之間的數(shù)據(jù)傳送方式,叫做程序直接控制方式。根據(jù)外設(shè)的不同性質(zhì),這種傳送方式又可分為無條件傳送和程序查詢方式兩種。 在無條件傳送方式中,I/O接口總是準(zhǔn)備好接收主機(jī)的輸出數(shù)據(jù),或總是準(zhǔn)備好向主機(jī)輸入的數(shù)據(jù),因而CPU無需查詢外設(shè)的工作狀態(tài),而默認(rèn)外設(shè)始終處于準(zhǔn)備就緒狀態(tài)。 許多外設(shè)的工作狀態(tài)是很難事先預(yù)知的,為了保證數(shù)據(jù)傳送的正確進(jìn)行,就要求CPU在程序中查詢外設(shè)的工作狀態(tài),如果外設(shè)尚未準(zhǔn)備就緒,CPU就等待,
14、只有外設(shè)已作好準(zhǔn)備,CPU才能執(zhí)行I/O指令,這就是程序查詢方式。,2. 程序查詢方式的工作流程 (1) 預(yù)置傳送參數(shù) 在傳送數(shù)據(jù)之前,由CPU執(zhí)行一段程序,預(yù)置傳送參數(shù)。傳送參數(shù)包括存取數(shù)據(jù)的主存緩沖區(qū)首地址和傳送數(shù)據(jù)的個(gè)數(shù)。 (2) 向I/O接口發(fā)命令字 當(dāng)CPU選中某臺(tái)外設(shè)時(shí),執(zhí)行輸出指令向I/O接口發(fā)出命令字,啟動(dòng)外設(shè),為接收數(shù)據(jù)或發(fā)送數(shù)據(jù)的操作做準(zhǔn)備。 (3) 從I/O接口取回狀態(tài)字 CPU執(zhí)行輸入指令,從I/O接口中取回狀態(tài)字并進(jìn)行測試,判斷數(shù)據(jù)傳送是否可以進(jìn)行。 (4) 查詢外設(shè)標(biāo)志 CPU不斷查詢狀態(tài)標(biāo)志,如果外設(shè)沒有準(zhǔn)備就緒,CPU就踏步進(jìn)行等待,一直到這個(gè)外設(shè)準(zhǔn)備就緒,并發(fā)
15、出“準(zhǔn)備就緒”信號(hào)為止。,(5) 傳送數(shù)據(jù) 只有外設(shè)準(zhǔn)備好,才能實(shí)現(xiàn)主機(jī)與外設(shè)間的一次數(shù)據(jù)傳送。輸入時(shí),CPU 執(zhí)行輸入指令,從I/O接口的數(shù)據(jù)緩沖寄存器中接收數(shù)據(jù);輸出時(shí),CPU執(zhí)行輸出指令,將數(shù)據(jù)寫入I/O接口的數(shù)據(jù)緩沖寄存器。 (6) 修改傳送參數(shù) 每進(jìn)行一次數(shù)據(jù)傳送,需要修改傳送參數(shù),其中包括主存緩沖區(qū)地址加1,傳送個(gè)數(shù)減1。 (7) 判斷傳送是否結(jié)束 如果傳送個(gè)數(shù)不為0,則轉(zhuǎn)第(3)步,繼續(xù)傳送,直到傳送結(jié)束為止。在等待過程中,CPU什么也不能做,這對于寶貴的CPU資源來說無疑是極大地浪費(fèi)。因此,除單片機(jī)外,現(xiàn)在計(jì)算機(jī)一般都不采用這種方式。,7.2.2 程序中斷方式,1.中斷傳送方式
16、的引入 為何將中斷技術(shù)應(yīng)用于CPU與IO設(shè)備的數(shù)據(jù)傳送呢?這需從查詢方式的缺點(diǎn)說起。外設(shè)的速度相對CPU而言一般慢得多。例如,串行通信時(shí),若取傳輸速率為9600bps(bitpersecond),則傳送一個(gè)字節(jié)的數(shù)據(jù)約需1ms(以字節(jié)為單位的串行通信,在數(shù)據(jù)位的前面要加一位起始位,數(shù)據(jù)位后要有12位停止位,還可以選用1位奇偶檢驗(yàn)位。因此傳送一個(gè)字節(jié)的信息量,約需依次傳送101l位)。采用查詢方式,每傳送一個(gè)字節(jié),CPU約需等待1ms,而1ms內(nèi)CPU可以執(zhí)行幾萬條、幾十萬條乃至更多的指令,可見資源的浪費(fèi)是驚人的。采用這種方式,CPU和外設(shè)的工作是串行的。外設(shè)工作時(shí)CPU處于等待狀態(tài)。中斷傳送方
17、式就是讓CPU和外設(shè)并行工作。仍以串行通信為例,當(dāng)CPU送一個(gè)數(shù)據(jù)至串行通信接口后繼續(xù)進(jìn)行自己的工作;當(dāng)接口電路完成具體的發(fā)送后提出一個(gè)中斷請求;CPU在條件許可時(shí)響應(yīng)這個(gè)請求,進(jìn)入相應(yīng)的中斷服務(wù)程序;在中斷服務(wù)程序中給接口電路再送下一個(gè)數(shù)據(jù),然后返回去接著做原來的工作。可見,在外設(shè)工作期間,CPU不需等待,機(jī)器最重要的資源得到充分利用。,將中斷技術(shù)用于處理計(jì)算機(jī)運(yùn)行過程中遇到的緊急事件很容易理解。所謂中斷,是指CPU在正常運(yùn)行時(shí)由于程序的預(yù)先安排或內(nèi)外部事件引起CPU暫行正在運(yùn)行的程序,轉(zhuǎn)到為預(yù)先安排的事件或內(nèi)外部事件服務(wù)的程序中去,服務(wù)程序執(zhí)行結(jié)束后再返回到暫行的程序繼續(xù)執(zhí)行。引起中斷的事
18、件稱為中斷源。預(yù)先安排的事件是指PC的中斷指令。內(nèi)部事件是指系統(tǒng)中出現(xiàn)的一些事件信號(hào),中斷指令也可看作內(nèi)部事件。外部事件是指某些接口設(shè)備所發(fā)出的請求中斷程序執(zhí)行的信號(hào),這些信號(hào)稱為中斷請求信號(hào),中斷請求信號(hào)是不能預(yù)知的,然而它們一旦請求中斷,則會(huì)向CPU發(fā)出信號(hào),這樣CPU就無需花大量時(shí)間去查詢這些信號(hào)是否產(chǎn)生。中斷請求信號(hào)一旦產(chǎn)生,CPU得知這個(gè)信號(hào)后,便立即去執(zhí)行相應(yīng)的中斷服務(wù)程序,執(zhí)行完成后CPU恢復(fù)被中斷的程序。有時(shí)中斷源有幾個(gè),因此CPU響應(yīng)這些中斷就得有先后次序,這稱為中斷優(yōu)先級(jí)。優(yōu)先級(jí)高的中斷首先響應(yīng),優(yōu)先級(jí)低的中斷暫不響應(yīng)。CPU響應(yīng)中斷由中斷源提供地址信息,引導(dǎo)程序轉(zhuǎn)移到中斷
19、服務(wù)程序中去,這個(gè)地址信息稱為中斷向量,它一般是和中斷源相對應(yīng)的,PC機(jī)采用類型碼來識(shí)別中斷源。,2.中斷傳送方式接口電路 如圖7.4所示為使用中斷傳送方式進(jìn)行輸入的接口電路。該電路由數(shù)據(jù)輸入端口、寫屏蔽輸出端口、中斷請求觸發(fā)器和中斷向量提供邏輯等組成。該接口電路的工作原理可分4個(gè)階段來說明。,(1)發(fā)出中斷請求 當(dāng)輸入設(shè)備準(zhǔn)備好一個(gè)數(shù)據(jù)后,產(chǎn)生一個(gè)選通信號(hào)STB,該信號(hào)將設(shè)備的數(shù)據(jù)送入輸入緩沖寄存器(供CPU讀取),同時(shí)把中斷請求觸發(fā)器置1。若這時(shí)該中斷源沒有被屏蔽,即屏蔽觸發(fā)器為l,則中斷請求觸發(fā)器1端的輸出通過與門,向CPU提出中斷請求INTR。與此同時(shí),請求觸發(fā)器1端的輸出送到輸入設(shè)備
20、的IBF(輸入緩沖器滿)端,表示CPU還未將輸入緩沖器中的數(shù)據(jù)取走,輸入設(shè)備不要送新的數(shù)據(jù)來。 (2)中斷響應(yīng) 如果該輸入設(shè)備提出請求時(shí)沒有更高優(yōu)先級(jí)的中斷源提出請求,則CPU在當(dāng)前指令執(zhí)行結(jié)束時(shí)響應(yīng)該中斷請求,進(jìn)人中斷響應(yīng)周期。在中斷響應(yīng)周期內(nèi)中斷響應(yīng)信號(hào)INTA有效,該信號(hào)把事先準(zhǔn)備好的中斷標(biāo)識(shí)碼(或稱中斷向量)送上數(shù)據(jù)總線,于是CPU得到中斷服務(wù)程序入口地址(或形成中斷服務(wù)程序入口地址的有關(guān)信息),從而進(jìn)入中斷服務(wù)程序。,(3)在中斷服務(wù)程序中讀取輸入緩沖器中的數(shù)據(jù) 在中斷服務(wù)程序中執(zhí)行一條輸入指令可將已存放在輸入緩沖器中的數(shù)據(jù)讀入到CPU指定的寄存器。同時(shí),將中斷請求觸發(fā)器復(fù)位。復(fù)位中
21、斷請求觸發(fā)器,一方面為下一次中斷請求作準(zhǔn)備;另一方面通知輸入設(shè)備,CPU已將輸入緩沖器中的數(shù)據(jù)取走,可以送新的數(shù)據(jù)了。 (4)中斷返回 中斷服務(wù)程序中的最后一條指令是中斷返回指令。執(zhí)行該指令,CPU返回去繼續(xù)執(zhí)行被中斷了的主程序。如圖7.5所示為用中斷傳送方式進(jìn)行輸出的接口電路。請讀者自行分析它的組成和工作原理。分析時(shí)可從在中斷服務(wù)程序中執(zhí)行一條輸出指令說起。提示兩點(diǎn):第一,設(shè)備輸出一個(gè)數(shù)據(jù)后在ACK端會(huì)發(fā)出一個(gè)回答信號(hào);第二,圖中的引腳符號(hào)OBF英文全稱是Output_BufferFull,即輸出緩沖器滿。,7.2.3 DMA方式,DMA是Direct Memory Access的縮寫,其意
22、思是“存儲(chǔ)器直接訪問”。它是指一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫數(shù)據(jù),即不通過CPU,也不需要CPU干預(yù)。整個(gè)數(shù)據(jù)傳輸操作在一個(gè)稱為“DMA控制器”的控制下進(jìn)行的。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時(shí)作一點(diǎn)處理外,在傳輸過程中CPU可以進(jìn)行其它的工作。這樣,在大部分時(shí)間里,CPU和輸入輸出都處在并行操作。因此,使整個(gè)計(jì)算機(jī)系統(tǒng)的效率大大提高。 DMA技術(shù)剛發(fā)明的時(shí)候, CPU和主存之間的速度差異問題還沒有現(xiàn)在這么突出,那時(shí)候也沒有什么南北橋局部總線的概念, CPU、DMA模塊、I/O設(shè)備、內(nèi)存一般就是掛在單條總線上,CPU是非常緊張的資源,在不流水的情況下,可能每隔好幾個(gè)總
23、線周期才訪問一次內(nèi)存,這時(shí)候DMA模塊就模擬CPU的功能,通過周期竊取(cycle-stealing)技術(shù)在CPU不訪存、總線空閑的時(shí)候來進(jìn)行DMA傳輸,最大限度的節(jié)省CPU。另外一種DMA技術(shù)叫CPU暫停,就是總線被占、CPU空閑的情況。在現(xiàn)在的計(jì)算機(jī)體系中DMA的作用更多的體現(xiàn)在最大限度利用內(nèi)存帶寬和提高I/O速度上。,為什么要采用DMA技術(shù)? 為了說明這個(gè)問題我們先來看一看程序控制輸入輸出方式的特點(diǎn)。在這種方式下進(jìn)行輸入輸出操作,要由CPU本身執(zhí)行一段輸入輸出程序,在這段程序中要檢查輸入輸出設(shè)備的當(dāng)前狀態(tài)(忙閑),向設(shè)備發(fā)送讀寫命令,傳送數(shù)據(jù)等。由于輸入輸出設(shè)備都是外部設(shè)備,它們的操作大
24、多是一些機(jī)械動(dòng)作(如磁盤、打印機(jī)),所以其速度遠(yuǎn)遠(yuǎn)低于CPU。CPU傳送一個(gè)字節(jié)的數(shù)據(jù)后,外部設(shè)備卻需要很長時(shí)間才能完成操作。這樣,CPU必須在傳送下一個(gè)字節(jié)之前,反復(fù)測試外部設(shè)備的狀態(tài),直到外部設(shè)備完成操作(由“忙”態(tài)轉(zhuǎn)為“閑”態(tài)),才能傳送下一個(gè)數(shù)據(jù)。因此CPU的大量時(shí)間處于檢查和等待狀態(tài),整個(gè)計(jì)算機(jī)系統(tǒng)的效率十分低下,在現(xiàn)在的微機(jī)系統(tǒng)中,程序控制輸入輸出方式已經(jīng)不再使用。,在中斷控制輸入輸出方式(簡稱為中斷方式)中,CPU在向輸入輸出設(shè)備發(fā)出讀寫一個(gè)數(shù)據(jù)字的命令之后就可以轉(zhuǎn)入其它的工作,而由輸入輸出部件獨(dú)立地控制輸入輸出操作,直到操作完成才向CPU發(fā)出中斷請求。這時(shí)CPU才暫停當(dāng)前的工作
25、來響應(yīng)中斷,再次向輸入輸出設(shè)備發(fā)出讀寫命令。以后將重復(fù)上述過程,直到全部數(shù)據(jù)字傳送完畢。在中斷方式過程中去完成其它的工作,這就大大提高了CPU的工作效率。 但是,中斷方式仍然占用了CPU相當(dāng)多的時(shí)間。這里因?yàn)檩斎胼敵鲈O(shè)備每傳送一個(gè)數(shù)據(jù)字都要向CPU發(fā)出一次中斷請求,也就要中斷一次CPU的當(dāng)前工作。而且CPU在每次響應(yīng)中斷之后還要作保護(hù)現(xiàn)場操作(把當(dāng)前各個(gè)寄存器中的內(nèi)容送入內(nèi)存保存起來),再輸入中斷處理程序,執(zhí)行完畢中斷處理程序之后,還要恢復(fù)現(xiàn)場(把剛才送入內(nèi)存保存的內(nèi)容再重新裝入各個(gè)寄存器中),以便繼續(xù)執(zhí)行被,中斷之前的工作。這樣,在連續(xù)傳送一個(gè)數(shù)據(jù)塊的過程中,CPU要反復(fù)多次被中斷,并且花費(fèi)
26、很多時(shí)間去處理中斷,使得CPU的效率仍然不能得到很好地發(fā)揮。整個(gè)系統(tǒng)效率的提高仍然受到限制。所以,在傳送的數(shù)據(jù)量較大時(shí),中斷方式也不能滿足要求。 在DMA技術(shù)中,數(shù)據(jù)的傳送是在DMA控制器(簡稱DMAC)下進(jìn)行的,DMAC是一種能獨(dú)立于微處理器進(jìn)行操作的專用芯片或電路。在DMA數(shù)據(jù)傳送過程中,DMA控制器接管了微處理器的地址總線、數(shù)據(jù)總線和控制總線。在當(dāng)前總線周期結(jié)束之前,有一條外部控制線終止了微處理器的操作。在DMA開始傳送數(shù)據(jù)時(shí),微處理器的內(nèi)存控制信號(hào)禁止使用;當(dāng)DMA傳送結(jié)束后,DMA控制器將終止信號(hào)復(fù)位,這樣微處理器就恢復(fù)了它的一切權(quán)力并開始執(zhí)行自己的操作。 由此可見,DMA必須具有控
27、制系統(tǒng)總線的能力,即DMA能夠像微處理器一樣輸出地址信號(hào),接收或發(fā)出控制信號(hào),輸入或輸出數(shù)據(jù)信號(hào)。,7.2.4 通道和外圍處理機(jī)方式,通道 通道是一個(gè)專用的控制器,通過執(zhí)行通道程序?qū)/O操作進(jìn)行管理,為主機(jī)和I/O設(shè)備提供一條數(shù)據(jù)傳輸通道,所以該傳輸方式被稱為通道方式。 從邏輯上看,通道也是一種接口,但與普通的接口不同,它有更強(qiáng)大的功能,可通過執(zhí)行通道程序替CPU管理和控制外設(shè)。因此,通道可以看作是一種能執(zhí)行有限I/O指令集合通道命令的I/O處理機(jī)。 I/O通道控制方式,是使用從屬于CPU的、專用于處理I/O操作的處理器( 通道)協(xié)助 CPU 完成輸入輸出操作的運(yùn)行方式。該處理器(通道)有自
28、己的通道命令,在CPU的I/O指令的驅(qū)動(dòng)下,可以執(zhí)行用通道命令編寫控制輸入輸出的程序(通道程序),把它產(chǎn)生的各種控制信號(hào)送到設(shè)備控制器,從而控制相應(yīng)設(shè)備完成輸入輸出操作。,在通道控制方式下,一個(gè)主機(jī)可以連接幾個(gè)通道。每個(gè)通道又可連接多臺(tái)I/O設(shè)備,這些設(shè)備可具有不同速度,可以是不同種類。這種輸入輸出系統(tǒng)增強(qiáng)了主機(jī)與通道操作的并行能力以及各通道之間、同一通道的各設(shè)備之間的并行操作能力。同時(shí)也為用戶提供了增減外圍設(shè)備的靈活性。 采用通道方式組織輸入輸出系統(tǒng),多使用主機(jī)通道設(shè)備控制器I/O設(shè)備四級(jí)連接方式。通道通過執(zhí)行通道程序?qū)嵤/O系統(tǒng)的統(tǒng)一管理和控制,因此,它是完成輸入輸出操作的主要部件。在
29、CPU啟動(dòng)通道后,通道自動(dòng)地去內(nèi)存取出通道指令并執(zhí)行指令。直到數(shù)據(jù)交換過程結(jié)束向CPU發(fā)出中斷請求,進(jìn)行通道結(jié)束處理工作。,通道的任務(wù): (1) 接受CPU的I/O指令,按指令要求與指定的外圍設(shè)備進(jìn)行通信。 (2) 從內(nèi)存選取屬于該通道程序的通道指令,經(jīng)譯碼后向設(shè)備控制器和設(shè)備發(fā)送各種命令。 (3) 組織外圍設(shè)備和內(nèi)存之間進(jìn)行數(shù)據(jù)傳送,并根據(jù)需要提供數(shù)據(jù)緩存的空間,以及提供數(shù)據(jù)存入內(nèi)存的地址和傳送的數(shù)據(jù)量。 (4) 從外圍設(shè)備得到設(shè)備的狀態(tài)信息,形成并保存通道本身的狀態(tài)信息,根據(jù)要求將這些狀態(tài)信息送到內(nèi)存的指定單元,供CPU使用。 將外圍設(shè)備的中斷請求和通道本身的中斷請求,按次序及時(shí)報(bào)告CPU
30、。,采用通道結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)如圖7.6所示。,由于I/O設(shè)備的特性各異,通道可分為三類:字節(jié)多路通道、選擇通道和數(shù)組多路通道 (1)字節(jié)多路通道 字節(jié)多路通道(Multiplexor Channel)是一種簡單的共享通道,在時(shí)間分割的基礎(chǔ)上,服務(wù)于多臺(tái)低速和中速面向字符的外圍設(shè)備。 (2)選擇通道 選擇通道每次只能從所連接的設(shè)備中選擇一臺(tái)I/O設(shè)備的通道程序。 (3)數(shù)組多路通道 數(shù)組多路通道把字節(jié)多路通道和選擇通道的特點(diǎn)結(jié)合起來。它有多個(gè)子通道,既可以執(zhí)行多路通道程序,像字節(jié)多路通道那樣,所有子通道分時(shí)共享總通道;又可以用選擇通道那樣的方式傳送數(shù)據(jù)。,通道在很大程度上將CPU從繁重的I/
31、O管理工作中解脫出來,從而提高了系統(tǒng)的整體效率。 與中斷方式相比,二者都是以程序方式來完成輸入/輸出操作,不同的是通道不需要CPU執(zhí)行中斷服務(wù)程序,幾乎可完全代替CPU完成輸入/輸出的控制操作。 與DMA方式相比,二者在進(jìn)行數(shù)據(jù)傳送時(shí)都可以直接訪問主存儲(chǔ)器,不需要CPU干預(yù),不同的是DMA完全借助于硬件完成數(shù)據(jù)傳送,而通道則是通過一組通道命令或一個(gè)通道程序與硬件一起完成數(shù)據(jù)傳送。通道除了承擔(dān)DMA的全部功能外,還承擔(dān)了設(shè)備控制器的初始化工作,并包括了低速外設(shè)單個(gè)字符傳送的程序中斷功能,因此它分擔(dān)了計(jì)算機(jī)系統(tǒng)中全部或大部分I/O功能,提高了計(jì)算機(jī)系統(tǒng)功能分散化程度。,通道型I/O處理機(jī)(IOP)
32、和外圍處理機(jī) IOP是通道向著更強(qiáng)、更通用、更獨(dú)立的方向發(fā)展產(chǎn)物。IOP不是一臺(tái)獨(dú)立的計(jì)算機(jī),而是計(jì)算機(jī)系統(tǒng)中的一個(gè)部件。IOP可以和CPU并行工作,提供高速的DMA處理能力,實(shí)現(xiàn)數(shù)據(jù)的高速傳送。此外,有些IOP還提供數(shù)據(jù)的變換、搜索和字裝配/分拆能力。IOP接近于CPU的結(jié)構(gòu),但是專用,更適合I/O操作的管理,有的計(jì)算機(jī)中,IOP由通用的CPU來充當(dāng)。 外圍處理機(jī)結(jié)構(gòu)更接近于一般處理機(jī),或者就是選用已有的通用機(jī)充當(dāng)整個(gè)計(jì)算機(jī)的I/O處理機(jī)。外圍處理機(jī)基本上是獨(dú)立于主CPU工作的,主要用于大型高性能的計(jì)算機(jī)系統(tǒng)中,是使用微小型通用計(jì)算機(jī)協(xié)助主處理機(jī)完成輸入輸出操作。它不但可以完成前面講的I/O
33、通道的I/O控制功能,還可以完成更加復(fù)雜多樣的附加操作功能。例如碼制轉(zhuǎn)換、格式處理、數(shù)據(jù)塊的檢錯(cuò)糾錯(cuò)處理,承擔(dān)I/O系統(tǒng)與設(shè)備的診斷維護(hù)、人機(jī)交互處理等處理功能。外圍處理機(jī)可以看作為主CPU的伙伴和助手,促成計(jì)算機(jī)系統(tǒng)從完全的功能集中型向功能分布型發(fā)展。,7.3 程序中斷方式,7.3.1 中斷的基本概念 所謂程序中斷,是指在程序的正常運(yùn)作過程中,輸入/輸出設(shè)備由于要插進(jìn)來完成交付給它們的任務(wù),當(dāng)它們已經(jīng)準(zhǔn)備就緒時(shí),就向中央處理器發(fā)出請求中斷的信號(hào),請求中央處理器暫時(shí)中斷目前正在執(zhí)行的程序而進(jìn)行數(shù)據(jù)交換,這也就是執(zhí)行中斷處理程序,確定提出請求程序中斷的設(shè)備,接著執(zhí)行實(shí)現(xiàn)輸入/輸出的程序。當(dāng)輸入/
34、輸出任務(wù)完成后,設(shè)備發(fā)出中斷完成信號(hào)并且從子程序(中斷處理程序)返回到原來的中央處理器程序,繼續(xù)它原來的執(zhí)行。中斷方式節(jié)省了中央處理器的時(shí)間,但它是以硬件結(jié)構(gòu)增加復(fù)雜性為代價(jià)的。和程序查詢方式相比,它的服務(wù)開銷時(shí)間也加大。它一般適用于處理隨機(jī)出現(xiàn)的事件。 1中斷的作用 中斷有下列一些作用:,(1)CPU與I/O設(shè)備并行工作 圖7.9給出了CPU和I/O設(shè)備(如打印機(jī))并行工作的時(shí)間安排。大部分時(shí)間CPU和打印機(jī)都是并行工作的。當(dāng)打印機(jī)完成一行打印后,向CPU發(fā)出中斷請求信號(hào),如果CPU響應(yīng)中斷,則停止當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)去處理打印機(jī)的中斷服務(wù)程序,把要打印的一行字送到打印機(jī)的控制器并啟動(dòng)打印
35、機(jī)打印。然后CPU回到原來被中斷的地方繼續(xù)執(zhí)行程序。,(2)硬件故障處理 計(jì)算機(jī)運(yùn)行時(shí),如硬件出現(xiàn)某些故障,機(jī)器中斷系統(tǒng)發(fā)出中斷請求,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)的機(jī)器里這些功能幾乎是無法實(shí)現(xiàn)的。利用中斷系統(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í)間片,利
36、用時(shí)鐘定時(shí)發(fā)中斷進(jìn)行程序切換。,(5)實(shí)現(xiàn)實(shí)時(shí)處理 所謂實(shí)時(shí)處理,是指在某個(gè)事件或現(xiàn)象出現(xiàn)時(shí),計(jì)算機(jī)能及時(shí)地進(jìn)行處理,而不是集中起來再進(jìn)行批處理。這些事件出現(xiàn)的時(shí)刻是隨機(jī)的,而不是程序本身所能預(yù)見的,因此,要求計(jì)算機(jī)中斷正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序。 (6)實(shí)現(xiàn)應(yīng)用程序和操作系統(tǒng)(管態(tài)程序)的聯(lián)系 可以在用戶程序中安排一條“Trap”指令進(jìn)入操作系統(tǒng),稱之為“軟中斷”。其中斷處理過程與其他中斷類似。 (7)多處理機(jī)系統(tǒng)各處理機(jī)間的聯(lián)系 在多處理機(jī)系統(tǒng)中,處理機(jī)和處理機(jī)之間的信息交流和任務(wù)切換可以通過中斷來實(shí)現(xiàn)。,2中斷源及其種類 凡是能引起中斷的設(shè)備或事件均稱為中斷源。目前,微機(jī)中的
37、中斷源一般有以下幾種: (1)外設(shè)的服務(wù)請求:如鍵盤在用戶按了一個(gè)鍵后向CPU提出中斷請求,請求CPU接收該按鍵的編碼。又如打印機(jī)在打印完一個(gè)字符后向CPIJ提出中斷請求,請求CPU輸出下一個(gè)要打印的字符(有的打印機(jī)設(shè)有數(shù)據(jù)緩沖區(qū),在緩沖區(qū)的數(shù)據(jù)都打印完后,才提出中斷請求)。 (2)CPU內(nèi)部事件:如除法錯(cuò),運(yùn)算溢出、非法數(shù)據(jù)格式、設(shè)置了單步執(zhí)行方式等。 (3)硬件故障:如電源掉電、內(nèi)存出錯(cuò)等。 (4)由存儲(chǔ)器引起的中斷:如非法地址,主存頁面失效,數(shù)據(jù)校驗(yàn)出錯(cuò)等。,(5)由總線產(chǎn)生的中斷:包括I/O總線出錯(cuò),存儲(chǔ)器總線出錯(cuò)等。 (6)軟中斷:軟中斷又稱為軟件中斷,是用軟件方法產(chǎn)生中斷,即在程序
38、中安排特定的指令:INT,當(dāng)程序執(zhí)行到該類指令時(shí),進(jìn)入到中斷類型號(hào)所對應(yīng)的中斷服務(wù)程序。顯然,軟中斷是人為安排的,而上面介紹硬件中斷源引起的中斷是隨機(jī)的。在PC系列機(jī)中,軟中斷是調(diào)用操作系統(tǒng)功能的一種方法。 (7)軟時(shí)鐘:為了提供時(shí)間標(biāo)志,早期的計(jì)算機(jī)在內(nèi)存中開辟了幾個(gè)單元,分別作年、月、日、時(shí)、分、秒計(jì)數(shù)器,并設(shè)置了一個(gè)定時(shí)信號(hào)發(fā)生器,大約55ms輸出一個(gè)脈沖,作為中斷請求。,當(dāng)中斷源發(fā)生引起中斷的事件時(shí),先將它保存在設(shè)備控制器的“中斷觸發(fā)器”中,即將“中斷觸發(fā)器”置“1”。當(dāng)中斷觸發(fā)器為“1”時(shí),向CPU發(fā)出“中斷請求”信號(hào)。每個(gè)中斷源有一個(gè)中斷觸發(fā)器。全機(jī)的多個(gè)中斷觸發(fā)器構(gòu)成中斷寄存器。
39、其內(nèi)容稱為中斷字或中斷碼。CPU進(jìn)行中斷處理時(shí),根據(jù)中斷字確定中斷源,轉(zhuǎn)入相應(yīng)的服務(wù)程序。 3中斷判優(yōu) 一臺(tái)計(jì)算機(jī)一般有若干個(gè)中斷源,往往會(huì)出現(xiàn)有兩個(gè)或兩個(gè)以上的中斷源同時(shí)提出中斷請求的情況,而CPU在一個(gè)時(shí)刻只能響應(yīng)一個(gè)請求。解決這個(gè)問題的方法是:將所有的中斷源按照需要服務(wù)的輕重緩急程度分成若干個(gè)級(jí)別,把最迫切需要服務(wù)的中斷源安排在最高級(jí)別,然后依次降低級(jí)別。這樣,當(dāng)出現(xiàn)多個(gè)中斷源同時(shí)提出中斷請求時(shí),CPU響應(yīng)其中級(jí)別最高的。中斷判優(yōu)是指在同時(shí)出現(xiàn)的若干個(gè)中斷請求中找出級(jí)別最高的,以便進(jìn)行相應(yīng)的中斷服務(wù)。中斷判優(yōu)可用軟件方法,也可用硬件方法。,(1)軟件判優(yōu) 當(dāng)采用查詢法識(shí)別中斷源時(shí),已將判
40、優(yōu)機(jī)制納入到其中。最先被查尋到的中斷源是級(jí)別最高的,然后優(yōu)先級(jí)依次降低。如圖7.10。當(dāng)中斷源較多時(shí),軟件判優(yōu)要占用CPU較多的時(shí)間。,(2)硬件判優(yōu) 并行判優(yōu)采用圖7.11所示的優(yōu)先權(quán)中斷控制器PIC(Priority Interrupt Controller)。PIC能從當(dāng)前的所有中斷請求中找出級(jí)別最高的,產(chǎn)生它所對應(yīng)的中斷標(biāo)識(shí)碼。PIC的核心部分是中斷判優(yōu)電路,如圖7.11所示是實(shí)現(xiàn)8級(jí)判優(yōu)的PIC的判優(yōu)電路。它由8線一3線優(yōu)先權(quán)編碼器、優(yōu)先權(quán)寄存器、3位二進(jìn)制數(shù)比較器和門電路組成。8個(gè)中斷請求信號(hào)(序號(hào)小的級(jí)別高)接在編碼器的輸入端。當(dāng)一個(gè)或多個(gè)請求信號(hào)有效時(shí),該電路將選出優(yōu)先權(quán)最高的
41、中斷源,產(chǎn)生相應(yīng)的編碼。,例如,設(shè)中斷請求l和中斷請求2同時(shí)有效,因中斷請求1級(jí)別高,所以編碼器將輸出中斷請求l所對應(yīng)的編碼001。接下來進(jìn)行的有兩種可能: 果當(dāng)前沒有正在服務(wù)的中斷,則優(yōu)先權(quán)寄存器的“比較失效”輸出將有效(為高電平),它打開與門,使中斷請求信號(hào)可通過,從而向CPU提出中斷請求。 如果當(dāng)前有正在服務(wù)的中斷,則優(yōu)先權(quán)寄存器的“比較失效”輸出將無效(為低電平),與門2被封鎖。此時(shí)比較器的輸出將起作用。參加比較的一個(gè)數(shù)是編碼器的輸出,即當(dāng)前提出請求且級(jí)別最高的中斷編碼;另一個(gè)數(shù)是優(yōu)先權(quán)寄存器的輸出,它是當(dāng)前正在服務(wù)的中斷的編碼。二者比較有兩種可能,仍接著上面的假設(shè)說明:如果當(dāng)前正在服
42、務(wù)是中斷請求0,則優(yōu)先權(quán)寄存器的輸出為000,比較器的“A000),封鎖與門1。這樣,向CPU傳送中斷請求的通道全部被封死。如果當(dāng)前正在服務(wù)是中斷請求3,則優(yōu)先權(quán)寄存器的輸出為011,比較器的“AB”端輸出高電平有效信號(hào)(因?yàn)?01011),它打開與門1,使中斷請求信號(hào)得以通過,從而向CPU提出中斷請求。,下面,對該電路的功能做一個(gè)小結(jié): 該電路能從多個(gè)中斷請求中找出級(jí)別最高的,并產(chǎn)生相應(yīng)的編碼。 如果當(dāng)前沒有正在服務(wù)的中斷或者雖有正在服務(wù)的中斷,但新的請求比它的級(jí)別高,則該電路向CPU提出中斷請求。CPU在中斷響應(yīng)時(shí),可獲取該電路產(chǎn)生的中斷編碼,從而直接轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。 如果新的中斷
43、請求比正在服務(wù)的中斷級(jí)別低,則不向CPU提中斷請求。 為了增加對中斷的管理功能,優(yōu)先權(quán)中斷控制器PIC中除了上述的并行判優(yōu)電路外,一般還設(shè)有中斷請求寄存器(寄存或表達(dá)外部的中斷請求)、中斷屏蔽寄存器和中斷屏蔽邏輯。PIC早已集成化,典型的PIC芯片是:Intel 8259 AB端輸出高電平有效信號(hào)(因?yàn)?01011),它打開與門1,使中斷請求信號(hào)得以通過,從而向CPU提出中斷請求。,4中斷屏蔽與嵌套 為了更靈活地運(yùn)用中斷,計(jì)算機(jī)中采用中斷屏蔽技術(shù)。屏蔽的基本意思是讓某種中斷不起作用。說的確切些,對每一個(gè)外部硬件中斷源設(shè)置一個(gè)中斷屏蔽位,約定該位為0,為開屏蔽狀態(tài),為l表示處于屏蔽狀態(tài),當(dāng)然也可
44、以反過來約定。一個(gè)中斷源在對應(yīng)的中斷屏蔽位為屏蔽狀態(tài)的情況下,它的中斷請求不能得到CPU的響應(yīng),或者干脆就不能向CPU提出中斷請求。 一般機(jī)器是將中斷屏蔽位集中在一起,構(gòu)成中斷屏蔽寄存器。按照是否可以被屏蔽,可將中斷分為兩大類:不可屏蔽中斷(又叫非屏蔽中斷)和可屏蔽中斷。不可屏蔽中斷源一旦提出請求,CPU必須無條件響應(yīng),而對可屏蔽中斷源的請求,CPU可以響應(yīng),也可以不響應(yīng)。CPU一般設(shè)置兩根中斷請求輸入線:可屏蔽中斷請求INTR(Interrupt Require)和不可屏蔽中斷請求NMI(NonMaskable Interrupt)。對于可屏蔽中斷,除了受本身的屏蔽位控制外,還都要,受一個(gè)總
45、的控制,即CPU標(biāo)志寄存器中的中斷允許標(biāo)志位IF(Iinterrupt Flag)的控制,IF位為1,可以得到CPU的響應(yīng),否則,得不到響應(yīng)。IF位可以由用戶控制,指令STI或Turboc的Enable()函數(shù),將IF位置1(開中斷),指令CLI或Turbo_c 的Disable()函數(shù),將IF位清0(關(guān)中斷)。典型的非屏蔽中斷源的例子是電源掉電,一旦出現(xiàn),必須立即無條件地響應(yīng),否則進(jìn)行其他任何工作都是沒有意義的。典型的可屏蔽中斷源的例子是打印機(jī)中斷,CPU對打印機(jī)中斷請求的響應(yīng)可以快一些,也可以慢一些,因?yàn)樽尨蛴C(jī)等待兒是完全可以的。對于軟中斷,它不受IF位的影響,所以屬于非屏蔽中斷范疇。還
46、有一點(diǎn),細(xì)心的讀者會(huì)想到:CPU只有兩根中斷請求輸入線,有多個(gè)中斷源怎么辦?一般借助于外部電路,如中斷控制器。這將在以后介紹。,當(dāng)CPU正在為某一個(gè)中斷源服務(wù)的過程中,又出現(xiàn)了其他中斷請求,如何處理?一般的做法是,如果新提出的中斷請求比當(dāng)前正在服務(wù)的中斷級(jí)別高,說明它更緊急、更迫切需要服務(wù),CPU應(yīng)暫停當(dāng)前正在執(zhí)行的中斷服務(wù),轉(zhuǎn)去執(zhí)行更高級(jí)的中斷服務(wù)程序。于是,出現(xiàn)了多重中斷,或稱中斷嵌套;如果新提出的中斷請求比當(dāng)前正在服務(wù)的中斷級(jí)別低,則不予理睬,待當(dāng)前服務(wù)執(zhí)行完后,再去根據(jù)當(dāng)時(shí)的情況決定是否響應(yīng)。中斷過程中要占用堆??臻g來存放斷點(diǎn)地址和現(xiàn)場信息。堆棧還用來存放子程序的返回地址。只要堆棧空間
47、足夠,中斷嵌套的層數(shù)一般沒有限制。,5各類中斷的響應(yīng)過程 中斷響應(yīng)是實(shí)現(xiàn)向中斷服務(wù)程序的過渡。在中斷響應(yīng)周期,CPU要順序完成以下操作: 發(fā)出中斷響應(yīng)信號(hào)INTA(Interrrupt Acknowledge); 關(guān)中斷,即將IF位清0。這是因?yàn)樵陧憫?yīng)一個(gè)中斷的期間不能響應(yīng)另一個(gè)中斷; 保護(hù)斷點(diǎn)和標(biāo)志寄存器(FR); 斷點(diǎn)是按正常順序(即沒有中斷)應(yīng)執(zhí)行的下一條指令的地址。對8086來說,保護(hù)斷點(diǎn)就是保存CS和IP的內(nèi)容(壓入堆棧)。標(biāo)志寄存器FR中存放著剛執(zhí)行的指令的一些重要特征,也需要保存起來,以便中斷返回時(shí)繼續(xù)使用其中的內(nèi)容。 查找中斷源,轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序的入口; 前三個(gè)操作由硬件
48、完成,而第四步可用硬件,也可用軟件來完成。,CPU對各類中斷的響應(yīng)不完全相同,主要區(qū)別在于如何獲得中斷類型碼。 (1)可屏蔽中斷的響應(yīng)過程 外設(shè)向8259A發(fā)中斷請求信號(hào),經(jīng)8259A處理;形成相應(yīng)中斷類型碼,并向CPU申請中斷(INTR1)。 CPU在當(dāng)前指令結(jié)束后,當(dāng)IF1,且沒有內(nèi)部中斷,NMI0,HOLD0時(shí),發(fā)生中斷響應(yīng)信號(hào) 8259A連續(xù)兩個(gè)總線周期接收到兩個(gè) 的負(fù)脈沖的中斷響應(yīng)信號(hào),則通過數(shù)據(jù)總線將中斷類型碼送往CPU,CPU把其乘以4作為中斷向量表的地址指針。 CPU保護(hù)斷點(diǎn),將PSW及當(dāng)前CS和IP壓棧。 清IF和TF標(biāo)志。,查中斷向量表,取出中斷向量(中斷處理程序首址),將
49、其分別置入IP和CS中,程序轉(zhuǎn)入中斷處理程序。 (2)非屏蔽中斷的響應(yīng)過程。 中斷請求在NMI端加入,等待當(dāng)前指令結(jié)束后,CPU優(yōu)先響應(yīng)NMI,其類型碼由硬件決定,其他與可屏蔽中斷相同。 非屏蔽中斷的特點(diǎn)是: 中斷類型碼由指令給定或由硬件決定。 沒有 響應(yīng)周期。 不受IF影響。 除單步中斷外,其他內(nèi)部中斷優(yōu)先于外部中斷,響應(yīng)過程與非屏蔽中斷類似。,7.3.2 中斷控制器8259A,8259是一種可編程的中斷控制器。每塊芯片可管理8級(jí)向量中斷,同時(shí),可通過多片級(jí)連實(shí)現(xiàn)多達(dá)64級(jí)的中斷管理。PC/AT中使用兩片8259,對15級(jí)向量中斷進(jìn)行管理。 中斷控制器支持8級(jí)中斷請求,可通過編程設(shè)定優(yōu)先級(jí),
50、8位的中斷請求寄存器(IRR)將8個(gè)中斷請求信號(hào)鎖存其中(有請求相應(yīng)位置“1”),IRR可以編程為邊沿或電平觸發(fā)。同時(shí)支持級(jí)連工作方式,允許把附加的控制器加到系統(tǒng)內(nèi),這樣就可以擴(kuò)充外部中斷請求信號(hào)的數(shù)目,比如PC/AT系統(tǒng)就支持這種級(jí)連工作方式。 中斷控制器8259有四種主要工作方式,即全嵌套、循環(huán)優(yōu)先級(jí)、特定屏蔽和程序查詢方式。同時(shí),它還有一4種從屬工作方式,即結(jié)束中斷、讀狀態(tài)、中斷請求觸發(fā)和數(shù)據(jù)緩沖方式。此外它分單片系統(tǒng)和多片級(jí)連系統(tǒng)兩大類,在多片級(jí)連系統(tǒng)中還允許主片選擇特殊全嵌套方式。這些工作方式都可以通過編程選擇。,中斷方法是解決外部設(shè)備和系統(tǒng)連接的很好途徑,它有效地實(shí)現(xiàn)了外部設(shè)備與C
51、PU的并行工作。在實(shí)際應(yīng)用中,除了要考慮如何對中斷控制器進(jìn)行編程的問題,還要對采用中斷方式進(jìn)行I/O控制的接口電路進(jìn)行設(shè)計(jì)。 1.8259A的內(nèi)部結(jié)構(gòu)及引腳信號(hào) 8259A的內(nèi)部結(jié)構(gòu)圖如圖7.13所示。它有8根中斷請求輸入線IR7IR0,內(nèi)部有8個(gè)主要的功能塊。其中3個(gè)寄存器是可編程的,即用戶可用程序訪問它們,這3個(gè)寄存器都是8位的。,(1)中斷請求寄存器IRR(Interrupt Request Register) IRR用來存放中斷請求。某位為l表示相應(yīng)的中斷請求線IR有請求,為0表示該引腳無請求。將IRR某位置1的方式稱為觸發(fā)方式。有兩種觸發(fā)方式:邊沿觸發(fā)和電平觸發(fā),前者是利用IR線由低
52、到高的跳變,后者要求IR線為高電平并保持到第一個(gè)中斷響應(yīng)信號(hào)INTA結(jié)束之前。在電平觸發(fā)方式下,要求中斷請求得到響應(yīng)之后請求輸入端必須及時(shí)撤除高電平。如果在CPU進(jìn)入中斷處理過程并且開放中斷前未去掉高電平信號(hào),則可能引起不應(yīng)該發(fā)生的第二次中斷。相比之下,邊沿觸發(fā)方式用起來要方便一些。觸發(fā)方式由初始化命令字ICWl來設(shè)置。 (2)中斷屏蔽寄存器IMR(Interrupt Mask Register) IMR存放著8個(gè)屏蔽位信息,某位為0表示對應(yīng)的中斷源未被屏蔽,為1表示對應(yīng)的中斷源被屏蔽。被屏蔽的中斷源的請求不能參與中斷判優(yōu),也就不可能向CPU提出中斷請求。,(3)正在服務(wù)寄存器ISR(In-S
53、ervice Register) ISR存放著當(dāng)前正在服務(wù)的所有中斷級(jí)。某位為1表示相應(yīng)的中斷正在服務(wù)中。ISR中可能有多位為l,這表明當(dāng)前出現(xiàn)了中斷嵌套。 (4)控制邏輯 控制邏輯含一組初始化命令寄存器和一組操作命令寄存器,按預(yù)置的工作方式(初始化命令字)或程序員的干預(yù)(操作命令字)來管理8259A的全部工作。 (5)優(yōu)先權(quán)判決電路 優(yōu)先權(quán)判決電路對保存在IRR中的各種中斷請求以及IMR的內(nèi)容進(jìn)行判斷,確定出最高優(yōu)先級(jí),如果當(dāng)前沒有正在服務(wù)的中斷或者它比當(dāng)前正在服務(wù)的級(jí)別高,則在CPU中斷響應(yīng)期間把它選通至ISR。簡言之,在中斷響應(yīng)期間,優(yōu)先權(quán)判決電路找出應(yīng)該服務(wù)。,8259A是一種可編程的
54、中斷控制器,用于實(shí)現(xiàn)中斷優(yōu)先管理,中斷屏蔽。單片可處理8級(jí)優(yōu)先級(jí)中斷,級(jí)聯(lián)最多可處理64級(jí)中斷。編程時(shí)有4個(gè)初始化命令字ICW1ICW4和三個(gè)操作命令字OCW1OCW3.在使用8259A時(shí),首先要對其編程。一般情況下,初始化命令字一旦設(shè)定,工作過程中就不再改變,操作命令字則是由應(yīng)用程序設(shè)定的,用于對中斷處理過程動(dòng)態(tài)控制。 2.8259A的工作方式 (1)設(shè)置優(yōu)先級(jí)方式 按優(yōu)先級(jí)設(shè)置方法可有如下四種方式: 全嵌套方式 這是8259A的默認(rèn)方式。在此方式下,中斷請求按07優(yōu)先級(jí)進(jìn)行處理。當(dāng)一個(gè)中斷被響應(yīng),即把相應(yīng)的中斷類型碼置于DB上,同時(shí)ISR對應(yīng)位置1,并保持至CPU發(fā)出EOI命令。,特殊全嵌
55、套方式 此種方式多用于多片級(jí)聯(lián)且必須將響應(yīng)的中斷優(yōu)先級(jí)保存在各從片的大系統(tǒng)中。此時(shí)特殊全嵌套方式僅設(shè)置在主片中。它和全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,當(dāng)處理某一級(jí)中斷時(shí),可響應(yīng)同級(jí)的中斷請求,從而實(shí)現(xiàn)對同級(jí)中斷請求的特殊嵌套。 優(yōu)先級(jí)自動(dòng)循環(huán)方式 這種方式一般用在系統(tǒng)中多個(gè)中斷源優(yōu)先級(jí)相等的場合。這種方式下,優(yōu)先級(jí)隊(duì)列不是固定不變的,一個(gè)設(shè)備得到中斷服務(wù)后,其優(yōu)先級(jí)自動(dòng)譯為最低。而初始優(yōu)先級(jí)從高到底隊(duì)列規(guī)定為IR0、IR1、IR7。 優(yōu)先級(jí)特殊循環(huán)方式 這種方式與的區(qū)別是初始優(yōu)先級(jí)可通過編程指定最低優(yōu)先級(jí)。,(2)屏蔽中斷源的方式 普通屏蔽方式:通過OCW1使IMR中的一位或若
56、干位置1來相應(yīng)地屏蔽掉對應(yīng)為的中斷級(jí)。 特殊屏蔽方式:提供OCW2的D6D511來設(shè)定,此時(shí)除OCW1中置1為對應(yīng)的中斷級(jí)被屏蔽外,置0的這些的中斷級(jí),無論其中斷級(jí)別如何都可被響應(yīng)。由此可見,這種方式總是在中斷服務(wù)程序中使用,此時(shí)盡管CPU仍在處理一個(gè)高優(yōu)先級(jí)中斷,但低優(yōu)先級(jí)的中斷請求仍可以得到響應(yīng)。 (3)結(jié)束中斷的處理方式 在8259A中,當(dāng)一個(gè)中斷得到響應(yīng)時(shí),會(huì)使其相應(yīng)的ISR位置1,而當(dāng)中斷服務(wù)結(jié)束時(shí),應(yīng)使相應(yīng)復(fù)位,這稱為中斷結(jié)束處理。 8259A有兩種中斷結(jié)束方式:,自動(dòng)中斷結(jié)束方式,僅用在多個(gè)中斷不會(huì)嵌套的單片系統(tǒng),只要使ICW4的D11,即處于這種方式下,當(dāng)CPU進(jìn)入中斷過程,8
57、259A就自動(dòng)將ISR中相應(yīng)位清0。 當(dāng)ICW4的D10,8259A即處于非自動(dòng)中斷方式,此時(shí)必須在中斷服務(wù)程序之前發(fā)EOI命令以便把ISR中相應(yīng)位清0。EOI命令由操作命令字OCW2發(fā)送。EOI命令有兩種方式: A) 若為全嵌套方式,發(fā)普通EOI命令(OCW220H)。 B) 若為特殊全嵌套方式或優(yōu)先級(jí)循環(huán)方式,由于ISR無法確定響應(yīng)的是哪一級(jí)中斷,必須發(fā)特殊的EOI命令指定其復(fù)位ISR中的對應(yīng)位。若8359A工作在級(jí)聯(lián)方式,有可能需要送兩個(gè)EOI命令,一個(gè)送從片,一個(gè)送主片。,(4)連接系統(tǒng)總線方式 :在多片級(jí)聯(lián)的系統(tǒng)中,要求數(shù)據(jù)總線有總線緩沖器。此時(shí)用sp*/cn* =0啟動(dòng)緩沖器工作,
58、由ICW2中D3來對主片及從片同時(shí)設(shè)定。若系統(tǒng)中只有單片8259A,一般不需要總線緩沖器,此時(shí) sp*/cn* =1。 (5) 中斷請求方式 邊沿觸發(fā)方式:以正跳轉(zhuǎn)沿向8259A請求中斷,上跳沿后可一直維持電平平。 電平觸發(fā)方式:以高電平申請中斷。注意在響應(yīng)中斷后必須及時(shí)把申請中斷線變?yōu)榈碗娖剑苑乐股洗沃袛唷?中斷查詢方式:這是一種用軟件查詢中斷請求位狀態(tài),從而確定中斷源的方式。這種方式的特點(diǎn)是外設(shè)仍通過8259A申請中斷,但8259A卻不使用INT信號(hào)向CPU申請中斷。CPU中IF0,CPU執(zhí)行IN指令得到查詢字,查詢字說明當(dāng)前有否中斷請求,若有可得到申請申請中斷優(yōu)先級(jí)最高的中斷源。,7.
59、4 DMA方式,DMA(Driect Memory Access)技術(shù)是一種代替微處理器完成存儲(chǔ)器與外部設(shè)備或存儲(chǔ)器之間大量數(shù)據(jù)傳送的方法,也稱直接存儲(chǔ)器存取方法。 在微機(jī)系統(tǒng)內(nèi),外設(shè)與內(nèi)存間的數(shù)據(jù)傳送通常是通過CPU執(zhí)行一段程序來實(shí)現(xiàn)的,但利用DMA技術(shù)則可不用CPU介入就能實(shí)現(xiàn)外設(shè)與內(nèi)存之間數(shù)據(jù)的直接傳送。DMA的主要優(yōu)點(diǎn)是當(dāng)需要把一個(gè)外設(shè)的大量數(shù)據(jù)送到指定內(nèi)存時(shí),它可以自動(dòng)完成傳送任務(wù),也就是說外設(shè)發(fā)出一個(gè)DMA請求,則DMA電路暫停CPU的操作,并控制外設(shè)與內(nèi)存之間進(jìn)行一次傳輸,然后再讓CPU繼續(xù)執(zhí)行程序,這樣就使CPU節(jié)省了大量對外設(shè)的查詢時(shí)間,從而提高了系統(tǒng)的整體性能。 在DMA技術(shù)中,數(shù)據(jù)的傳送是在DMA控制器(簡稱DMAC)下進(jìn)行的,DMAC是一種能獨(dú)立于微處理器進(jìn)行操作的專用芯片或電路。在DMA數(shù)據(jù)傳送過程中,DMA控制器接管了微處理器的地址,總線、數(shù)據(jù)總線和控制總線。在當(dāng)前總線周期結(jié)束之前,有一條外部控制線終止了微處理器的操作。在DMA開始傳送數(shù)據(jù)時(shí),微處理器的內(nèi)存控制信號(hào)禁止使用;當(dāng)DMA傳送結(jié)束后,DMA控制器將終止信號(hào)復(fù)位,這樣微處理器就恢復(fù)了它的一切權(quán)力并開始執(zhí)行自己的操作。由此可見,DMA必須具有控制系統(tǒng)總線的能力,即DMA能
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年供應(yīng)商關(guān)系管理提升
- 2026年車載攝像頭模組安裝協(xié)議
- 2026雅詩蘭黛(中國)秋招面試題及答案
- 2026官方離婚協(xié)議書(標(biāo)準(zhǔn)版)
- 企業(yè)檔案管理與使用指南(標(biāo)準(zhǔn)版)
- 旅游酒店服務(wù)標(biāo)準(zhǔn)與禮儀手冊
- 二手工程機(jī)械評估師節(jié)假日后復(fù)工安全考核試卷含答案
- 藏藥調(diào)理師節(jié)假日后復(fù)工安全考核試卷含答案
- 2025年網(wǎng)絡(luò)安全行業(yè)風(fēng)險(xiǎn)管理指南
- 供應(yīng)鏈管理優(yōu)化策略手冊
- 數(shù)字孿生方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 機(jī)動(dòng)車駕校安全培訓(xùn)課件
- 2025年役前訓(xùn)練考試題庫及答案
- 2024VADOD臨床實(shí)踐指南:耳鳴的管理課件
- 行政崗位面試問題庫及應(yīng)對策略
- 2025廣東潮州府城文化旅游投資集團(tuán)有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
- 城市軌道交通服務(wù)與管理崗位面試技巧
- 2025年公務(wù)員多省聯(lián)考《申論》題(陜西A卷)及參考答案
- 《允許一切發(fā)生》讀書感悟
- 續(xù)保團(tuán)購會(huì)活動(dòng)方案
評論
0/150
提交評論