版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章輸入/輸出系統(tǒng)7.1概述7.2I/O接口7.3直接程序控制7.4程序中斷控制7.5DMA技術7.6通道習題
7.1概述
7.1.1輸入/輸出系統(tǒng)的功能計算機系統(tǒng)中主機的主要功能是運行程序對數(shù)據(jù)進行加工和處理,然后給出處理結果。程序中的數(shù)據(jù)可以來自輸入設備,如鍵盤、掃描儀、鼠標、寫字板等,而結果可以輸出到輸出設備,如顯示器、打印機、繪圖儀、文件等,這些輸入(Input)/輸出(Output)設備(簡稱I/O設備)就是人機交互的橋梁,它們通過系統(tǒng)總線和主機進行連接。I/O設備和總線就構成了計算機中的輸入/輸出系統(tǒng)。
計算機中的輸入/輸出系統(tǒng)主要用于解決主機與外部設備間的信息通信,提供信息通路,使外圍設備與主機能夠協(xié)調一致地工作。輸入/輸出系統(tǒng)的基本功能是:
(1)確定一次數(shù)據(jù)傳輸過程中的源端設備和目的端設備。
(2)確保I/O設備和主機之間能夠順利地進行信息交換。
7.1.2輸入/輸出系統(tǒng)的組成
1.輸入/輸出系統(tǒng)的硬件
輸入/輸出系統(tǒng)的硬件構成如圖7-1所示。其包括系統(tǒng)總線、設備接口和I/O設備。系統(tǒng)總線是連接CPU、主存、外圍設備的公共信息傳送線路,總線邏輯要考慮如何通過接
口部件連接各種外圍設備以及如何與CPU相連接??偩€涉及系統(tǒng)的各部件,總線的相關內容在第4章已經做過說明,這里不再贅述。接口一方面與種類繁多的外設備相連;另一方面則通過某種標準與系統(tǒng)總線相連,接口通過總線將外設數(shù)據(jù)與主機交互時還必須選取一定的信息傳送控制方式(如中斷、DMA等)。
圖7-1中的I/O設備實際包括設備和設備控制器兩部分,設備控制器可以對外部設備進行起停及操作控制,也可以用來指示設備的工作狀態(tài)等,對具體設備而言,設備控制器可以包含在設備之中(如打印機、鍵盤等),也可以獨立于設備之外(如顯卡等)。圖7-1輸入/輸出系統(tǒng)的硬件構成
2.輸入/輸出系統(tǒng)的軟件
輸入/輸出系統(tǒng)軟件包括用戶的I/O程序、設備驅動程序和設備控制程序。用戶對I/O設備的訪問有兩種方式:
一種是通過調用操作系統(tǒng)提供的外設管理程序;
另一種是用戶自己編寫驅動程序對外設進行訪問。
若使用的外部設備有某些特殊要求或特殊功能時,則需要用戶自己編寫設備驅動程序。在這樣的程序中就需要用到指令系統(tǒng)中的I/O指令和通道指令。具體分述如下:
(1)I/O指令。I/O指令是指令系統(tǒng)中的一部分,是專門用于訪問I/O設備的指令,由CPU譯碼并執(zhí)行。I/O指令也是由操作碼和地址碼組成,地址碼用于指明外設的地址。計算機系統(tǒng)中數(shù)量眾多的外設都有各自不同的編號,用來區(qū)分不同的設備,這個編號稱為外設地址。
(2)通道指令。通道是一個特殊功能的處理器,在計算機系統(tǒng)中是專門用來管理和控制外部設備的。通道通過執(zhí)行通道程序控制外圍設備應執(zhí)行的操作及操作順序,而通道程
序是由通道指令組成的。
通道指令的位數(shù)一般比較長,因為它需要指明:①傳送數(shù)據(jù)組在主存中的首地址;②傳輸?shù)淖止?jié)數(shù)或數(shù)據(jù)組的末地址;③傳送給設備的命令;④所選設備的地址。例如,
IBM370機的通道指令字長為64位。通道指令是由通道執(zhí)行的,控制I/O設備與主存之間的數(shù)據(jù)傳輸,如對硬盤的讀寫等。
7.1.3外圍設備與主機的連接方式
主機與外圍設備的連接方式大致可分為總線型、通道型和I/O處理機方式(IOP方式)。
1.總線型連接方式
圖7-1所示的是單總線結構的總線型連接方式。在這種方式下,CPU、主存儲器和I/O接口都是通過總線相連的,CPU通過I/O接口電路進一步實現(xiàn)對外部設備的控制。
總線型連接方式的優(yōu)點是系統(tǒng)模塊化程度較高,I/O接口擴充方便;但是在總線方式下,所有部件之間的信息交換都需要依賴于總線,總線成為系統(tǒng)速度的瓶頸。
2.通道型方式
通道是一種專門負責I/O操作控制的處理器,它通過執(zhí)行由專門的通道指令編制且存放在內存中的通道程序實現(xiàn)對外設的控制。具有通道結構的I/O設備連接方式如圖7-2所示。在這種I/O控制方式下,由通道控制器實現(xiàn)主機與外部設備之間的數(shù)據(jù)交換,CPU不再負責具體的I/O控制,這樣就提高了CPU的效率,實現(xiàn)了CPU、通道控制器及外設
的并行工作。在這種方式下,通道是從屬于CPU的一個專用處理器,它需要依據(jù)CPU的I/O指令啟動、停止和改變其工作狀態(tài)。圖7-2I/O設備通過通道與主機交換信息
3.I/O處理機方式
I/O處理機又稱為外圍處理機,它是獨立于主機工作的,可以完成對I/O設備的控制,同時還可以完成簡單的數(shù)據(jù)處理,如格式轉換、糾錯等。具有I/O處理機的輸入/輸出系統(tǒng)相比通道而言,與CPU工作的并行性更高。
7.1.4主機與I/O設備間信息傳送的控制方式
主機與外圍設備之間進行信息交換時,從CPU程序設計的角度,需要考慮以下兩個問題:
(1)CPU在啟動外設后,由于外設的操作往往包含較長的機械動作時間,如打印、走紙、磁頭移動、電機旋轉等,因此外設往往需要一個準備階段。因此,需要考慮在外設的這
個準備時間段里,CPU是采取一直等待的方式,還是讓它并行地執(zhí)行主機的其他程序?
(2)如果讓CPU并行地執(zhí)行其他程序,那么當外設準備階段結束后,如何通知CPU去執(zhí)行相應的I/O操作?
當外部設備與主機之間采用總線方式進行連接時,根據(jù)不同的設備和環(huán)境要求可以采用以下三種方式。
1.直接程序控制方式
直接程序控制方式指CPU直接利用程序控制I/O設備實現(xiàn)數(shù)據(jù)輸入和輸出,程序中包含一系列的啟動外設、檢測外設狀態(tài)、數(shù)據(jù)傳輸?shù)裙δ艿腎/O指令。
這種方式的特點是CPU掌握主動權,外設只能被動接受CPU的操作,當CPU發(fā)送一個命令后,必須等待外設操作完畢,因此主機和外設處于串行工作狀態(tài)。這種方式的優(yōu)點是控制邏輯簡單,只需簡單的硬件支持。
2.程序中斷方式
程序中斷方式是CPU在發(fā)出啟動外設的命令后繼續(xù)執(zhí)行其他操作,當外設完成數(shù)據(jù)準備工作后主動向主機提出中斷申請,請求CPU的數(shù)據(jù)處理操作,CPU在響應中斷后通過執(zhí)行該設備的中斷服務程序完成數(shù)據(jù)傳輸工作。
在程序中斷方式下,從主機啟動外設到外設提出中斷請求這段時間,CPU也在正常工作,因此,在一定程度上實現(xiàn)了主機和外設的并行工作。若同一時刻有多臺外設提出中斷
請求,CPU可以按照一定的規(guī)則去處理這些設備的數(shù)據(jù)傳輸請求,因此程序中斷方式還可以實現(xiàn)多臺設備的并行工作。
3.直接存儲器存取(DirectMemoryAccess,DMA)方式
程序控制方式和中斷方式都是以CPU為中心的系統(tǒng)結構,這兩種方式都是通過CPU執(zhí)行程序來實現(xiàn)外部設備的啟動、控制和數(shù)據(jù)傳輸?shù)?這都需要占用CPU的時間,因而只
適用于低速設備。
當硬盤、圖像采集卡等高速設備需要與內存進行批量信息交換時,通常采用直接訪問內存的控制方式,這就是直接存儲器存取(DMA)方式。在DMA輸入/輸出方式中,存儲器與外設的數(shù)據(jù)交換不是CPU通過執(zhí)行程序完成,而是在DMA控制器的控制下完成的,無需CPU的參與。
在這種方式下,可以將DMA控制器看做一個和CPU共享主存的獨立處理器,當DMA控制器和CPU同時訪問主存的請求發(fā)生沖突時,DMA控制器具有較高的優(yōu)先權,這樣就能及時響應高速設備提出的數(shù)據(jù)傳輸請求。因此,也可將DMA控制器看做以主存儲器為中心的一種方式。
主機與I/O設備間信息傳送的控制方式還有前面介紹過的通道型和I/O處理機方式。為了使讀者更方便地理解計算機系統(tǒng)中主機與I/O設備的連接和信息傳輸控制方式,圖7-3給出了各種實現(xiàn)方法和適用情況。圖7-3幾種I/O連接和信息傳送控制方式的比較
7.2I/O接口
“接口”通常是指各軟件或硬件部件之間交接的部分。I/O(輸入/輸出)接口是指計算機中將主機與外部設備或其他外部系統(tǒng)進行連接的接口邏輯。I/O接口是主機與外設連接的橋梁,通過接口可以實現(xiàn)主機和外設之間的信息交換,如圖7-4所示。接口一側面向各具特色的外圍設備,另一側面向某種標準系統(tǒng)總線,并與所采用的信息傳送控制方式(如中斷、DMA等)有關。接口不僅需要硬件部件,還需要相應的軟件。圖7-4外設與主機的連接方法
7.2.1I/O接口的功能
計算機系統(tǒng)中外設的數(shù)量和種類繁多,每個外設都有各自的工作特點。每個設備往往會涉及不同的物理量、數(shù)據(jù)格式、時鐘信號、工作速度等,各自對接口電路都有特殊的要
求。I/O接口的功能就是為了使主機與外設能協(xié)調工作,并盡可能地提高主機和外設的工作效率。
一般來說,I/O接口的基本功能可以概括為以下幾個方面:
(1)識別設備地址,選擇指定的端口。連接到總線上的每一個設備都預先分配了設備地址碼。CPU將I/O指令中給出的設備地址送到地址總線,通過譯碼確定要選擇的設備。一般情況下一個接口中有多個寄存器,可以被CPU訪問的寄存器地址稱為一個端口,接口配有專門的端口選擇電路,該電路對輸入的地址譯碼后選擇與該地址匹配的端口與CPU進行數(shù)據(jù)傳輸。
(2)實現(xiàn)數(shù)據(jù)的傳送與緩沖。由于各種外設的工作速度差異很大,而且與CPU相比速度是非常慢的。因此,有必要在接口內部設置一個或多個數(shù)據(jù)緩沖寄存器,以提供數(shù)據(jù)緩沖的功能。這樣CPU和外部設備都只需要與緩沖寄存器進行數(shù)據(jù)交換,就可以解決外設CPU的速度匹配問題。
(3)實現(xiàn)信號形式和數(shù)據(jù)格式轉換。接口與外部設備之間根據(jù)設備要求可以采用并行傳輸或串行傳輸,而接口與總線之間往往是并行的數(shù)據(jù)傳輸,因此接口需要完成數(shù)據(jù)的串
并轉換功能。
(4)邏輯控制。為了能夠順利地實現(xiàn)數(shù)據(jù)傳輸,接口必須根據(jù)主機的命令控制外設,同時應將外設和接口的狀態(tài)提供給主機;根據(jù)信息傳輸控制方式的不同,接口還應當具備中斷和DMA控制邏輯等;保證主機和外設之間的時序關系協(xié)調。
這里需要說明的是,在大規(guī)模集成電路廣泛使用后,一些專用的設備往往與接口集成在一起,做成一個符合系統(tǒng)總線標準的獨立板卡,可以直接將其插入主板上的總線插槽,如語音卡、圖像采集卡等。
7.2.2I/O接口的基本結構
按照傳輸信息的功能,可以將接口與CPU之間傳送的信息分為數(shù)據(jù)信息、控制信息和狀態(tài)信息三類。
1.數(shù)據(jù)信息
1)數(shù)字量
數(shù)字量是指用二進制形式提供的信息,如用二進制形式表示的數(shù)據(jù)、以ASCII碼形式表示的字符等,通常有8位、16位和32位數(shù)據(jù)。
2)模擬量
模擬量是指連續(xù)變化的物理量,如溫度、濕度、位移、壓力、流量等。計算機無法直接接收和處理模擬量,要經過A/D變換將模擬量變成數(shù)字量,才能送入計算機;同樣,計算
機輸出的數(shù)字量要經過D/A變換將數(shù)字量變成模擬量,才能送給使用模擬量的外設。
3)開關量
開關量有兩個狀態(tài):“0”和“1”,可以用1位二進制數(shù)表示。具有兩種狀態(tài)的量,如開關的閉合和斷開、設備的啟動和停止等,均可用開關量表示。
2.控制信息
在外設的工作過程中,CPU需要通過發(fā)送控制信息(命令)控制外設的工作,如實現(xiàn)外設的啟動和停止等。不同外設在工作時,所需的控制信息各不相同,因此CPU需要通過接
口將各自的控制信息傳送給外設。
3.狀態(tài)信息
狀態(tài)信息就是反映當前外設所處工作狀態(tài)的信息。在與外設進行數(shù)據(jù)信息交換前,CPU往往需要通過狀態(tài)信息了解外設的工作狀態(tài)。例如,外設可以用“準備好(READY)”
信號來表明是否準備就緒;用“忙(BUSY)”信號表示是否處于空閑狀態(tài)。當數(shù)據(jù)輸入時,輸入設備將數(shù)據(jù)放入緩存器后,然后將“READY”信號置為“1”,當CPU檢測到READY=
1時,就可以從數(shù)據(jù)緩沖器讀入數(shù)據(jù);當數(shù)據(jù)輸出時,只有當CPU檢測輸出設備的BUSY=0時,才可以向接口發(fā)送數(shù)據(jù)。
數(shù)據(jù)信息、狀態(tài)信息和控制信息是不同性質的信息,往往會分別傳送。從廣義上講,可以將狀態(tài)信息和控制信息也看成數(shù)據(jù)信息,通過數(shù)據(jù)總線來傳送。為了區(qū)別這三種信
息,在接口中往往將它們分別送入不同的寄存器。CPU同外設之間的信息傳送實質上是對相應的端口進行“讀”或“寫”操作。接口的內部結構如圖7-5所示。圖7-5接口的內部結構
在圖7-5中,接口中的基本電路由設備選擇電路、DR(數(shù)據(jù)緩存寄存器)、SR(狀態(tài)寄存器)、CR(命令寄存器)和控制電路組成,各部件的功能說明如下:
(1)設備選擇電路:用于接收總線傳來的地址信息,經譯碼后,選定該設備中的某個端口。
(2)DR(數(shù)據(jù)端口):用于存放主機與外設之間要傳遞的數(shù)據(jù)信息。
(3)CR(控制端口):用于存放主機向外設發(fā)送的控制信息。
(4)SR(狀態(tài)端口):用于存放外設或接口的工作狀態(tài)。
(5)控制電路:如中斷控制邏輯、DMA控制邏輯以及各類特殊部件。
7.2.3接口的編址方式
前面介紹過,接口中可以由CPU進行讀或寫的寄存器稱為“端口”(Port)或I/O端口,計算機系統(tǒng)為了區(qū)分不同的I/O設備,需要對這些I/O設備進行編址,實質上就是對I/O
接口中的端口編址。在一次具體的I/O操作中,CPU只能利用I/O指令向接口中的端口發(fā)送控制命令,再由接口對外設實施具體的操作控制。CPU通過I/O指令中的端口地址實現(xiàn)對特定端口的訪問。
I/O端口有如下三種編址方式。
1.統(tǒng)一編址
在統(tǒng)一編址方式下,I/O端口和存儲器共用一個地址空間,將I/O端口與存儲器單元統(tǒng)一進行編址,如圖7-6(a)所示。若主機有20根地址線,主存和I/O端口共同分配1M的地址空間,在這種方式下,可以將一個I/O端口看做存儲器中的一個單元,每個I/O端口占用一個存儲器單元地址。圖7-6端口的兩種編址方式
I/O端口與主存統(tǒng)一編址方式的優(yōu)點:
(1)CPU可使用訪存指令對I/O端口進行操作,尋址方式十分靈活和方便。
(2)不需要用專門的指令及控制信號對存儲器或I/O端口的操作進行選擇,使得硬件相對簡單。
這種方式的缺點是:
(1)由于I/O端口占用了主存單元的部分地址空間,使內存容量減小。
(2)程序中只能通過訪問地址的范圍區(qū)分對存儲器或I/O端口訪問,降低了程序的可讀性。
2.獨立編址
獨立編址是指主存和I/O端口都有各自的地址空間,分別獨立進行編址,如圖7-6(b)所示。其主存和I/O端口分別有1M和64K的地址空間。
獨立編址方式的優(yōu)點是:
(1)I/O端口具有獨立的地址空間,不占用內存空間。
(2)由于程序中訪問存儲器和訪問I/O端口分別使用不同的指令,因此程序的可讀性較好。
獨立編址方式的缺點是:
(1)在通常情況下,I/O指令的功能簡單,而且其尋址方式簡單,編寫程序不夠方便。
(2)硬件需要設置用于選擇I/O設備或存儲器的專用控制信號(如M/IO)。
7.2.4I/O接口的分類
按照不同的分類原則,I/O接口有不同的分類。
1.按數(shù)據(jù)傳送格式分類
(1)串行接口:接口與設備之間的信息傳送是逐位進行的。
(2)并行接口:接口與設備之間的信息傳送是將一個字或一個字節(jié)的所有位同時進行傳送的。
選用哪種接口與設備本身的工作方式有關,還與傳輸距離的遠近有關。
2.按時序的控制方式分類
(1)同步控制接口:一般與同步總線相連,接口與總線采用統(tǒng)一時鐘信號。無論是CPU與I/O設備,還是存儲器與I/O設備交換信息,都與總線的時鐘脈沖同步。
同步控制接口簡單,但要I/O設備與CPU和主存在速度上必須能夠匹配,這在某種程度上就限制了I/O設備的種類與型號。在實際應用中,從靈活性方面考慮,一般允許不同I/O設備的速度相差在幾個總線時鐘周期范圍內。
(2)異步控制接口:與異步總線相連,接口與系統(tǒng)總線之間采用異步應答方式。在異步控制方式下,主設備提出交換信息的“請求”信號,經總線和接口傳遞到從設備,從設備完成主設備指定的操作后,又通過接口和總線向主設備發(fā)出“回答”信號。
整個信息交換過程總是這樣“請求”、“回答”地進行著,而從“請求”到“回答”的時間是由操作的實際時間決定的,沒有硬性的定時節(jié)拍的規(guī)定。
3.按信息傳輸?shù)目刂品绞椒诸?/p>
按照I/O設備與主機之間交換信息時控制方式的不同,編址方式可以分為前面介紹過的直接程序控制方式、程序中斷傳送方式、直接存儲器存儲方式、通道方式和I/O處理機方式。
7.2.5MIPS機中I/O編址與訪問
1.MIPS中I/O設備的地址空間
在MIPS機器中I/O地址線的位數(shù)是32位,因此I/O地址空間最大可以達到4G,但是由于MIPS機器中I/O和存儲器采用統(tǒng)一編址方式,即I/O設備和存儲器共用4G地址空間,因此MIPS機器把CPU地址空間按照對存儲器和設備的容量需求劃分為若干區(qū)域,每個區(qū)域可以對應存儲器或設備,如圖7-7所示。圖7-7I/O設備和存儲器地址統(tǒng)一編址實例
2.CPU訪問I/O設備的指令
由于采用統(tǒng)一編址方式,因此在MIPS機器中直接可以使用訪存指令LW和SW指令訪問I/O設備,從軟件角度看,讀寫設備寄存器與讀寫存儲器是無差別的。
LW和SW指令的本質是對地址空間中某個存儲單元或設備寄存器進行訪問,需要根據(jù)地址譯碼后的空間確定訪問I/O寄存器還是主存單元,若譯碼后的區(qū)間是I/O地址范圍,則訪問I/O設備。
3.CPU與I/O設備的連接
為了使CPU實現(xiàn)對I/O設備的訪問,需要在原有數(shù)據(jù)通路的基礎上增加訪問I/O設備的地址、數(shù)據(jù)和讀寫控制信號,如圖7-8所示。圖7-8是CPU與一個接口UART的連接示意圖。接口與CPU的連接信號主要有以下幾類:
(1)地址:Addr,用于選擇設備內部的寄存器。
(2)數(shù)據(jù):
①輸入數(shù)據(jù):Din,CPU寫入到I/O設備的數(shù)據(jù)。
②輸出數(shù)據(jù):Dout,CPU從I/O設備讀取的數(shù)據(jù)。
(3)讀寫控制信號:控制數(shù)據(jù)傳送的方向。圖7-8CPU與外部設備的連接
系統(tǒng)中有多個I/O設備,CPU不可能為每個設備都提供一套地址/數(shù)據(jù),可以采用橋的方式使CPU實現(xiàn)多個I/O設備的訪問。橋可以提供1套地址、1套寫數(shù)據(jù)、N套讀數(shù)據(jù)。橋實現(xiàn)了I/O設備輸入數(shù)據(jù)的匯聚功能,以及將CPU數(shù)據(jù)派發(fā)給I/O設備的功能。
7.3直接程序控制
7.3.1程序查詢方式的處理過程直接程序控制方式可以分為直接控制和程序查詢方式。
1.直接控制方式如果外設總被認為處于“待命”狀態(tài),就不需要預先查詢外設狀態(tài)而直接執(zhí)行I/O指令傳送數(shù)據(jù),如數(shù)碼管和顯示器。這種方式可以理解為CPU對I/O的讀/寫就像對存儲器的讀/寫一樣,完全不必關心外設的狀態(tài)。
在直接控制方式下對某個I/O設備的讀/寫操作過程如下:
(1)CPU將I/O地址送地址總線,經譯碼后選中某特定外設。
(2)CPU將數(shù)據(jù)送至數(shù)據(jù)總線,或CPU等待數(shù)據(jù)總線出現(xiàn)數(shù)據(jù)。
(3)CPU發(fā)出寫命令,將數(shù)據(jù)總線上的數(shù)據(jù)寫入外設數(shù)據(jù)緩沖寄存器,或CPU發(fā)出讀命令將數(shù)據(jù)緩沖寄存器的數(shù)據(jù)通過數(shù)據(jù)總線讀入CPU中。
2.程序查詢方式
在程序查詢方式中,CPU在對I/O設備操作前,需要
獲得外設的工作狀態(tài)。CPU只有在確定外設“準備就緒”后才能夠進行數(shù)據(jù)傳輸操作。當外設的操作時間未知或不確
定時,往往采用程序查詢方式進行同步控制。
這種方式下對I/O的訪問完全是通過程序來控制的,
程序流程如圖7-9所示。
圖7-9的程序流程中完成一次數(shù)據(jù)傳輸包括四個基本步驟:
(1)向外設發(fā)出啟動命令。
(2)讀取外設的工作狀態(tài)。
(3)判斷外設是否準備就緒,若未就緒轉(2),否則轉(4)。
(4)CPU將數(shù)據(jù)寫入接口的數(shù)據(jù)緩沖寄存器,或將接口中緩存寄存器的數(shù)據(jù)讀入。
其中,步驟(1)、(2)和(4)中對外設的訪問都是通過I/O指令完成的。圖7-9程序查詢方式流程圖
7.3.2程序查詢方式的接口
在圖7-5所示的接口的內部結構中,有三個不同的寄存器(端口):
(1)CR(CommandRegister)用來接收來自CPU的命令。
(2)SR(StatusRegister)用于記錄外設工作狀態(tài),可以用特定的某一位表示外設就緒與否,當設備的狀態(tài)信息較多時,可以用每一位表示一種狀態(tài)。
(3)DR(DataRegister)用來緩存?zhèn)鬏數(shù)臄?shù)據(jù)。
在程序查詢方式下,一個完整的數(shù)據(jù)傳輸過程需要通過I/O指令訪問這三個寄存器,其過程如下:
(1)啟動外設工作。CPU將控制命令送到接口的CR端口,再由接口將控制命令送給外設,完成外設的啟動工作。
(2)讀取外設工作狀態(tài)。CPU通過執(zhí)行I/O指令讀取接口中SR端口的數(shù)據(jù)。
(3)狀態(tài)判斷。CPU對來自SR的數(shù)據(jù)進行位測試,若測試后表明外設就緒,則轉(4),否則轉(2)。
(4)執(zhí)行數(shù)據(jù)傳輸。CPU讀取DR端口的數(shù)據(jù),或向DR端口寫入數(shù)據(jù)。程序查詢方式下的數(shù)據(jù)傳輸過程如圖7-10所示。圖中,CR和SR都是具有清零和置位功能的觸發(fā)器表示。這里以數(shù)據(jù)輸入為例說明數(shù)據(jù)的傳輸過程:
①CPU通過I/O指令,向CR發(fā)出啟動外設的命令,使“啟動”觸發(fā)器的輸出為1,同時使SR對應的“就緒”觸發(fā)器狀態(tài)置為“0”。
②“啟動”觸發(fā)器利用其輸出端的上升沿通知外部設備開始準備數(shù)據(jù)。
③CPU讀取SR的值。
④CPU對SR中的“就緒”位進行測試,如果“就緒”
=0,則CPU會繼續(xù)回到③。
⑤外部設備將數(shù)據(jù)準備好后,將數(shù)據(jù)送往接口的DR端口。
⑥外部設備將“就緒”位置1,同時將CR的“啟動”位清零。
⑦CPU在④中測試“就緒”=1后,從接口的DR端口中讀取數(shù)據(jù)。圖7-10程序查詢方式接口訪問過程示意圖
通過以上的分析,可以看出程序查詢控制方式適用于下述場合:
(1)CPU速度不高,并且CPU工作效率問題不是很重要。
(2)需要調試或診斷I/O接口及設備。
這種方式的缺點是:
(1)CPU與外圍設備無法并行工作,CPU效率很低。
(2)不能響應來自外部的隨機請求,CPU無法處理突發(fā)事件。
7.4程序中斷控制
7.4.1中斷的基本概念
1.中斷的定義中斷是指計算機在執(zhí)行程序的過程中,由于某些急待處理的事件產生,CPU暫時中斷現(xiàn)行程序的執(zhí)行,而轉去執(zhí)行另一服務程序來處理這些事件,待處理完后CPU又繼續(xù)執(zhí)行原來程序的整個過程。
中斷的整個過程可以用如圖7-11所示的過程進行說明。圖中,CPU在執(zhí)行主程序的過程中(①),有中斷源提出了中斷請求(②),CPU響應中斷源提出的請求,將程序指針指向中斷源提前準備好的中斷服務程序首地址(③),CPU執(zhí)行中斷服務程序(④),CPU執(zhí)行完中斷服務程序返回主程序的斷點(⑤),CPU繼續(xù)執(zhí)行主程序(⑥)。圖7-11中斷過程示意圖
這里需要說明幾個概念:
(1)中斷源:引起中斷產生的事件或發(fā)生中斷請求的來源。
(2)斷點:現(xiàn)行程序中被打斷執(zhí)行的指令地址。斷點是整個中斷過程中連接主程序和中斷程序的關鍵位置。
(3)中斷響應:CPU接到中斷請求信號后,若某種條件滿足(允許中斷),就保存斷點,找到中斷服務程序的首地址,并使程序指針PC指向該地址,這個過程稱為中斷響應。中斷響應的目的就是使CPU能夠執(zhí)行中斷服務程序。
(4)中斷向量:中斷服務程序在內存中存放的入口地址,即首地址。
(5)中斷服務程序:為處理突發(fā)或有意安排的任務而預先編寫的程序。
(6)單級中斷:單級中斷是指所有的中斷都是相同級別的,也就是說,如果響應某個中斷服務請求后,CPU只能為該中斷服務,不允許被其他中斷請求打斷,只有當本次中斷服務全部完成并返回到原程序后,CPU才能響應其他新的中斷請求。
(7)多級中斷:多級中斷是指系統(tǒng)的中斷源是有優(yōu)先級別之分的,CPU是按照中斷的優(yōu)先級別對中斷源進行服務的,因此,CPU在執(zhí)行優(yōu)先級別較低的中斷服務程序時,允許響應比它優(yōu)先級別高的中斷請求,而暫停正在處理的中斷,優(yōu)先為高級別的中斷源提供服務,待優(yōu)先權高的中斷服務結束后,再返回原來被打斷的低級中斷服務程序繼續(xù)為它服務。這種中斷處理的方式又稱為中斷嵌套。對于同級或低級的中斷請求CPU則不予響應。
圖7-12說明了兩級中斷嵌套的過程。在圖7-12中,S+1和T+1分別是主程序和2#中斷服務程序的斷點,當主程序在S指令執(zhí)行完畢后,響應2#中斷源的請求去執(zhí)行2#中斷的服務程序,在該程序執(zhí)行到T指令的時候,又有3#中斷提出中斷請求,CPU響應該中斷請求后執(zhí)行3#中斷服務程序??梢?#中斷的優(yōu)先級高于2#中斷源,因此3#中斷源打斷了2#中斷的服務程序。當3#中斷服務程序結束后,回到T+1繼續(xù)執(zhí)行2#中斷源的服務程序,當2#中斷服務程序結束后會回到主程序的斷點S+1繼續(xù)執(zhí)行主程序。圖7-12兩級中斷嵌套的過程
2.引起中斷的原因
中斷的復雜性表現(xiàn)在中斷源的多樣性上,計算機系統(tǒng)中引起中斷的原因有以下幾種:
(1)由外圍設備引起的中斷。通常情況下是外部設備需要與CPU之間進行控制或數(shù)據(jù)傳輸。例如,慢速設備的緩沖寄存器準備好接收或發(fā)送數(shù)據(jù)、信息塊傳送的前后處理、
設備的啟動或非數(shù)據(jù)控制動作(如磁帶、磁盤定位)的完成、定時進行設備檢測或數(shù)據(jù)采樣、外設出現(xiàn)錯誤等。
(2)由主機的硬件故障引起的中斷。常見的情況如下:
①運算的數(shù)據(jù)產生錯誤。例如,算術操作的溢出、除數(shù)為零、數(shù)據(jù)格式非法、校驗錯等。
②存儲器管理部件產生錯誤。例如,動態(tài)存儲器刷新、地址非法(地址不存在、越界)、頁面失效、校驗錯、存取訪問超時等。
③控制器產生的中斷。例如,非法指令、用戶程序執(zhí)行特權指令、分時系統(tǒng)中時間片到期、操作系統(tǒng)用戶目態(tài)和管態(tài)的切換等。
(3)實時時鐘中斷。
(4)電源故障中斷。
(5)人為測試程序時設置的中斷,如單步運行和斷點運行。
3.中斷的分類
按照分類原則不同,中斷有多種分類方法。
(1)按照中斷的產生方式,分為硬件中斷和軟件中斷。硬件中斷是指由某個硬件設備的中斷請求信號引發(fā)的中斷;軟件中斷是指由執(zhí)行中斷軟指令引發(fā)的中斷。這兩種中斷的
區(qū)別在于:硬件中斷產生的時間是不可預期的,是通過中斷源的請求信號獲得中斷向量的,軟件中斷是在程序中主動安排的,其中斷向量則是由中斷軟指令中的中斷號經過轉換得到的。
(2)按照中斷的可預測性,分為強迫中斷和自愿中斷。
①強迫中斷是指由硬件故障或軟件出錯產生的。這種中斷是隨機產生的,CPU不得不暫停執(zhí)行中的程序。例如,硬件電路中的集成電路芯片、元件、器件、印刷線路板、導線
及焊點引起的故障或電源電壓的下降等。
②自愿中斷是指計算機系統(tǒng)出于管理的需要,自愿進入的中斷。計算機系統(tǒng)為了方便用戶調試軟件、檢查程序、調用外部設備,提供了一些系統(tǒng)管理程序,用戶可以根據(jù)需要通過軟中斷指令來調用的這些管理程序。自愿中斷是程序有意安排的。
(3)按照中斷源所處的位置,分為內部中斷和外部中斷。
①內部中斷是指來自主機內部設備的中斷請求,如電源故障、CPU故障、軟中斷等。
②外部中斷是指來自主機外,由外設提出的中斷,如鍵盤、顯示器、打印機、硬盤等。
(4)按照中斷的可控制性,分為可屏蔽中斷和不可屏蔽中斷。
①某個外部設備能否提出中斷請求是由其接口的中斷屏蔽字控制的,CPU可以編程實現(xiàn)對屏蔽字的設置,這樣的中斷稱為可屏蔽中斷,一般外設提出的中斷都是可屏蔽中斷。
②一些要求CPU必須響應的中斷請求(如硬件、主機故障等引起的),稱為不可屏蔽中斷,CPU不得不響應。軟件中斷也是不可屏蔽中斷。
(5)按照中斷服務程序入口地址的生成方式,分為向量中斷和非向量中斷。
①如果中斷向量是根據(jù)中斷源的類型號,通過查詢主存中的中斷向量表得到的,這種方式就是向量中斷。
②如果中斷服務的入口地址是通過執(zhí)行軟件(如中斷服務總程序)來獲得的,就屬于非向量中斷。
4.中斷系統(tǒng)需要解決的問題
計算機系統(tǒng)為了能夠處理中斷,需要解決下面的問題:
(1)中斷源在什么條件下可以提出中斷請求?
(2)當CPU檢測到有多個中斷源同時提出請求時,如何處理?
(3)CPU在什么時間、條件下可以響應中斷?
(4)CPU以什么樣方式響應中斷?
(5)CPU如何獲得中斷源的中斷服務程序首地址?
(6)CPU如何實現(xiàn)將PC指向中斷服務程序?
(7)中斷服務程序編寫和子程序有什么差別?
(8)中斷服務程序結束后如何能夠確保程序指針回到原來斷點繼續(xù)執(zhí)行?
以上8個問題是由軟件和硬件共同完成的。
7.4.2中斷的完整過程
一個完整的硬件中斷處理全過程包含以下五個:
①中斷請求;
②中斷判優(yōu);
③中斷響應;
④中斷處理;
⑤中斷返回。
1.中斷請求
中斷請求信號的建立,是基于中斷源有請求中斷的需要,與外設接口中的中斷請求信號的產生過程和接口的內部結構有關,涉及中斷請求寄存器、中斷屏蔽寄存器和中斷信號產生電路。
1)中斷請求控制邏輯電路
計算機系統(tǒng)為了區(qū)分不同的中斷源,設置了中斷請求標記觸發(fā)器,簡稱中斷請求觸發(fā)器,如圖7-13所示。圖中用INTRi
標記。當中斷請求觸發(fā)器INTRi
的輸出為“1”時,表示該中斷源有中斷請求。圖7-13中斷請求信號的產生
多個中斷請求觸發(fā)器可以組成一個中斷請求寄存器,如圖7-14所示。寄存器的0~n-1位分別表示電源故障、主存校驗錯誤、階碼上溢、除數(shù)為零、串口輸入等。圖7-14中斷請求寄存器舉例
2)中斷請求信號的傳輸
中斷請求信號只有傳遞給CPU才能實現(xiàn)中斷功能,一般來說有三種中斷信號的傳輸方式,如圖7-15所示。
(1)獨立請求方式,如圖7-15(a)所示。每個中斷源都有獨自的中斷請求線,有多根請求線被直接送往CPU。這種中斷請求方式下,CPU可以立即確定具體的中斷源。獨立請
求方式的優(yōu)點是便于實現(xiàn)向量中斷,因為可以方便地通過編碼電路形成向量地址,但是由于CPU的中斷請求連線數(shù)量有限,中斷源的數(shù)量難以擴充。
(2)單線請求方式,如圖7-15(b)所示。CPU只有一根中斷請求信號,各中斷源的請求信號通過三態(tài)門匯集到一根公共請求線。這種方法可以減少CPU的引腳,也便于中斷
源的擴展,但是需要通過鏈式查詢邏輯來確定優(yōu)先級最高的中斷源,所以響應速度會慢一些。
(3)二維請求方式。這種方式是獨立請求方式和單線請求方式的結合,如圖7-15(c)所示。CPU可以有多根中斷請求線,它們有固定的優(yōu)先級,稱為主優(yōu)先級。每個中斷請求
線又可以連接多個中斷源,這些中斷源又按照單線的方式確定優(yōu)先級。圖7-15中斷請求信號傳輸給CPU的方式
2.中斷判優(yōu)
由于中斷請求是隨機產生的,而且同一個時刻可能有多個中斷源同時提出中斷請求,因此CPU需要根據(jù)中斷源的優(yōu)先級別,響應優(yōu)先級別最高的那一個。中斷優(yōu)先級判別的方法有軟件和硬件兩種。
1)硬件判別
硬件判別是由優(yōu)先排隊電路完成的。中斷優(yōu)先級的判別方式與中斷請求信號傳輸給CPU的方式有關。
(1)獨立請求方式。獨立請求方式中有多條中斷請求信號送往CPU,CPU通過內部的優(yōu)先排隊電路對中斷源的優(yōu)先級進行排隊,并輸出當前優(yōu)先級最高的中斷源的中斷向量,
其內部邏輯如圖7-16所示。圖7-16獨立請求方式的優(yōu)先級排隊和中斷向量生成邏輯
(2)單線請求方式。如果多個中斷源是通過一根公共請求線向CPU提出中斷請求的,就需要采用如圖7-17所示的鏈式排隊器識別優(yōu)先級最高的中斷源。圖7-17鏈式排隊器
2)軟件判別
軟件對中斷優(yōu)先級的判別通常采用查詢方法。在軟件查詢法中每一個中斷源都附帶一個標志位,該標志置“1”代表相應中斷源有中斷請求,因此,判別某個中斷源是否產生中斷
只需采用位測試即可,程序中按一定的優(yōu)先次序檢查這些標志位,遇到第一個為“1”的標志就得到優(yōu)先服務。軟件查詢法的流程如圖7-18所示。CPU在響應中斷請求后,首先轉
向固定的中斷查詢程序入口,在該程序查詢各設備是否有中斷請求,查詢的順序決定了設備中斷優(yōu)先權。當確定了提出請求中優(yōu)先級最高的設備后,立即轉去執(zhí)行該設備的中斷服
務程序。在圖7-18中,0號設備優(yōu)先權最高,依次是1號、2號……逐次降低。圖7-18軟件查詢法判別中斷源的優(yōu)先級
中斷優(yōu)先級劃分的一般規(guī)律是:
(1)硬件故障中斷的優(yōu)先級是最高的,因為這類情況的出現(xiàn)會使程序無法運行。
(2)程序錯誤中斷次之,這類錯誤即使程序繼續(xù)運行也沒有意義。
(3)DMA請求優(yōu)先于輸入/輸出數(shù)據(jù)傳輸?shù)闹袛嗾埱蟆?/p>
(4)在外部設備中,高速設備的中斷優(yōu)先級高于低速設備,實時控制設備的中斷優(yōu)先級高于普通數(shù)傳設備。
3.中斷響應
中斷響應操作是指程序指針PC由斷點轉向中斷服務程序首地址這個時間段中需要完成的工作,這個時間段稱為“中斷周期”。中斷響應是完全由稱為“中斷隱指令”的硬件實現(xiàn)的。被稱為“中斷隱指令”的原因是,中斷響應整個過程的操作是由硬件自動完成的,并不包含在機器的指令系統(tǒng)中。
1)響應中斷的條件
CPU停止執(zhí)行現(xiàn)行程序,轉去處理中斷請求稱為“中斷響應”。CPU要響應中斷必須滿足以下兩個條件:
(1)有中斷請求。
(2)CPU允許接受中斷請求。
條件(2)是由CPU內部的一個中斷允許寄存器(記作EINT)的狀態(tài)決定的。CPU可以執(zhí)行開中斷指令,將EINT觸發(fā)器置“1”,也可以執(zhí)行關中斷指令,將EINT置“0”。只有當EINT=1且有中斷請求時,CPU才可以響應中斷。
2)響應中斷的時間點
為了保證指令的正常執(zhí)行和簡化中斷系統(tǒng),CPU只有在一條指令執(zhí)行結束后,才會響應中斷請求。也就是說,在一條指令的指令周期結束后,若有中斷,則CPU會進入中斷周期;若無中斷,CPU則繼續(xù)下一條指令的指令周期。硬件上只有在每個指令周期的最后一個時鐘周期檢測是否有中斷請求,圖7-13中INTR觸發(fā)器的時鐘信號CLK就是在指令周期的最后一個時鐘周期產生的。
3)中斷隱指令
一旦CPU響應中斷的條件得到滿足,CPU就進入中斷周期,在中斷周期中系統(tǒng)會自動執(zhí)行中斷隱指令來響應中斷。中斷隱指令會依次完成保護斷點、轉向中斷服務程序和關
中斷的操作。
(1)保護斷點。保護斷點信息的目的是為了在中斷服務程序執(zhí)行完畢后,能夠使程序繼續(xù)從斷點處執(zhí)行后續(xù)的程序。斷點信息包括兩個:
①程序計數(shù)器PC當前的內容。
②當前程序運行的狀態(tài)字(PSW)。
考慮這樣一種情況,若需要比較兩個數(shù)a和b的大小來實現(xiàn)程序轉移,通常的做法是先執(zhí)行SUB指令完成a-b的運算,然后執(zhí)行JS指令實現(xiàn)轉移。SUB指令通常會根據(jù)運算結果符號標志SF(SF存放在PSW),JS指令可以對SF進行判斷,以決定程序是否轉移,若SF=1說明a<b;否則說明a≥b。
若程序在執(zhí)行SUB指令的時候,有中斷產生,且CPU響應了中斷,在執(zhí)行完中斷服程序后,返回斷點繼續(xù)執(zhí)行后續(xù)的JS指令,JS指令是需要判斷SF狀態(tài)的,因此必須要保護PSW。
(2)將程序指針PC轉向中斷服務程序。由于中斷周期結束后要執(zhí)行中斷服務程序的第一條指令,因此在中斷周期內必須確定中斷服務程序的入口地址。中斷服務程序入口地址的獲取方法有在中斷判優(yōu)中介紹過的硬件和軟件兩種方式。
這里再介紹另外一種硬件方式獲取中斷向量的方法,即在內存中安排一個如圖7-19所示的中斷向量表,向量表中存放著每個中斷源的中斷服務程序入口地址。中斷源只需要提供中斷向量地址(或類型號),就可以根據(jù)中斷向量地址直接或經過計算后得到其中斷服務程序的入口地址。例如,在圖7-19中,10H、11H、12H的中斷向量可以在中斷向量表中直接查詢到其對應的中斷服務程序的入口地址分別是200H、300H和400H。IntelCPU就是采用這種方法獲得中斷程序的入口地址的。
由于硬件向量法具有速度快的特點,被現(xiàn)代計算機普遍采用。圖7-19中斷向量表
(3)關中斷。CPU進入中斷周期后,為了確保CPU響應中斷過程中不再受到新的中斷請求的干擾,在中斷周期中必須自動關閉中斷(即將EINT置為0)。
4.中斷服務
中斷隱指令執(zhí)行完畢后,PC就指向了中斷服務程序的入口地址,標志著CPU開始為中斷源服務,中斷服務過程是通過執(zhí)行中斷服務程序來完成的。
不同設備的中斷服務程序是不同的,但是程序的流程卻是類似的。中斷服務程序的流程分為:保護現(xiàn)場、開中斷、設備服務、恢復現(xiàn)場和中斷返回,如圖7-20所示。圖7-20中斷服務程序設計流程圖
1)保存現(xiàn)場
CPU中寄存器的數(shù)量是非常有限的,保護現(xiàn)場是指將中斷服務程序中使用的通用寄存器保存到堆棧中去,這樣做的目的是為了不影響被中斷程序的正常執(zhí)行,當中斷處理結束后再恢復這些通用寄存器。
2)開中斷
開中斷的實質是使EINT=1。在多級中斷中,開中斷允許更高級的中斷請求得到響應,實現(xiàn)中斷嵌套。
圖7-20(a)是單級中斷的流程圖,所有中斷都是同級別的,因此,只有在中斷返回前才需要開中斷。
圖7-20(b)是多級中斷的流程圖,在多級中斷系統(tǒng)中的中斷源是有優(yōu)先級之分的,具體體現(xiàn)在執(zhí)行低級中斷服務程序時可以被比其級別高的中斷源打斷,因此在保護完現(xiàn)場
后,必須開中斷才能夠響應更高級別的中斷。
3)設備服務
設備服務是中斷程序的核心,隨中斷源不同有很大差異。它通常完成數(shù)據(jù)的輸入或輸出操作,以及執(zhí)行數(shù)據(jù)傳輸?shù)牡刂?、個數(shù)和差錯檢驗處理等。
4)恢復現(xiàn)場
恢復現(xiàn)場是指在退出中斷服務程序之前,將使用的通用寄存器的內容進行恢復。它通常使用出棧指令,將保存在堆棧中的信息依次送回到原來的寄存器中。
5)中斷返回
中斷返回是在中斷服務程序的最后通過一條中斷返回指令實現(xiàn)的。中斷返回指令的功能是將中斷響應周期中保存在堆棧中的PC和PSW值重新賦給PC和PSW,這樣就使得程序又回到原來的斷點繼續(xù)執(zhí)行程序。
5.中斷返回
中斷返回是由中斷服務程序中的最后一條指令完成的。
7.4.3中斷方式接口
中斷方式的基本接口如圖7-21所示。與程序查詢方式接口相比,中斷方式的接口電路中主要增加了一個被稱為允許中斷觸發(fā)器(EI)的控制觸發(fā)器以及中斷向量電路邏輯。需
要說明是:為了便于描述中斷接口,圖7-21中的CPU只有一個中斷源,如果有多級多個中斷源,還應當有中斷優(yōu)先排隊電路。圖7-21中斷方式的基本接口
外設接口是否允許以中斷的方式與CPU進行數(shù)據(jù)交換,是由CPU和外設接口的狀態(tài)兩方面來控制的。在接口方面主要是接口中的“就緒”(RD)標志和“允許中斷”(EI)標志兩個觸發(fā)器;在CPU方面,除了前面已經介紹過的EINT觸發(fā)器外,還有“中斷請求”(IR)標志和“中斷屏蔽”(IM)標志兩個觸發(fā)器。上述4個標志觸發(fā)器的具體功能如下:
(1)RD觸發(fā)器:它與程序查詢方式中的“就緒”觸發(fā)器的功能是一樣的。一旦設備做好一次數(shù)據(jù)的接收或發(fā)送準備工作,便發(fā)出一個設備動作完畢信號,使RD標志為“1”。在中斷方式中,該標志用于中斷源提出中斷請求的觸發(fā)器。
(2)EI觸發(fā)器(EI):CPU可以使用I/O指令來置位或復位接口中的這個寄存器。當EI為“1”時,表示該設備可以向CPU發(fā)出中斷請求;當EI為“0”時,該設備不能向CPU
發(fā)出中斷請求,這意味著該設備是禁止向CPU提出中斷請求的。設置EI標志可以使CPU通過程序來控制是否允許某設備發(fā)出中斷請求。
(3)中斷請求觸發(fā)器(IR):CPU中用于暫存中斷請求線上由設備發(fā)出的中斷請求信號。當IR標志為“1”時,表示設備發(fā)出了中斷請求。
(4)中斷屏蔽觸發(fā)器(IM):是CPU中是否受理中斷的標志。例如,當IM標志為“0”時,CPU可以受理對應的中斷請求;反之,IM標志為“1”時,CPU不受理對應的中斷請求。
在圖721中,標號①~⑩表示某一外設接口以中斷方式進行一個數(shù)據(jù)輸入的控制過程。
①CPU通過程序啟動外設,將該外設接口的“CR”觸發(fā)器置“1”,“RD”觸發(fā)器清“0”。
②CR觸發(fā)器接口向外設發(fā)出啟動信號。
③外設將準備好的數(shù)據(jù)傳送到接口的數(shù)據(jù)緩沖寄存器DR。
④當設備動作結束或緩沖寄存器數(shù)據(jù)填滿時,設備向接口送出一個控制信號,將“RD”觸發(fā)器置“1”。
⑤若中斷允許寄存器EI為“1”且RD為“1”時,接口向CPU發(fā)出中斷請求信號。
⑥在當前指令周期的最后一個時鐘周期CPU檢查中斷請求線,將中斷請求線的請求信號鎖存至中斷請求觸發(fā)器IR。
⑦如果中斷屏蔽觸發(fā)器IM的對應位為“0”且EINT為“1”,則CPU在當前指令周期結束后會受理外設的中斷請求。CPU會自動執(zhí)行中斷隱指令,首先向外設發(fā)出響應中斷信號INTA并關中斷(將EINT置為“0”)。
⑧接口在收到INTA信號后,將中斷向量通過數(shù)據(jù)總線傳送給CPU,中斷隱指令會保護程序斷點,并將程序指針PC指向該設備中斷服務程序的入口。
⑨CPU執(zhí)行中斷服務程序,在中斷服務程序用I/O指令將數(shù)據(jù)從接口中的數(shù)據(jù)緩沖寄存器讀至CPU的寄存器中。
⑩CPU向接口發(fā)出控制信號(通過數(shù)據(jù)總線)將接口中的BS觸發(fā)器復位,一次中斷處理結束。
7.4.4多級中斷技術
1.多級中斷的條件
在計算機系統(tǒng)中為了能夠方便實現(xiàn)對整個中斷系統(tǒng)和各中斷源的開放和關閉,采用了以下幾個技術:
(1)對所有中斷源的中斷允許通過設置一個中斷屏蔽觸發(fā)器EINT實現(xiàn)。處理器可以通過專用的開中斷指令或關中斷指令設置EINT的狀態(tài)。當EINT處于“1”狀態(tài)時,稱為開中斷,允許CPU接收中斷請求并為各中斷源服務;當EINT處于“0”狀態(tài)時,稱為關中斷,CPU拒絕所有中斷請求。
(2)對某個特定的中斷源,可以通過I/O指令設置中斷源接口設備中對應的允許中斷觸發(fā)器(如圖7-21接口中的EI)來控制該接口是否允許以中斷方式傳送數(shù)據(jù)。
一般來說,在一個具有多級中斷的計算機系統(tǒng)中,優(yōu)先權高的中斷源可以打斷優(yōu)先權低的中斷服務程序。根據(jù)系統(tǒng)配置的不同,多級中斷又可分為一維多級中斷和二維多級中斷,其結構如圖7-22所示。一維多級中斷是指每一級中斷只有一個中斷源,而二維多級中斷是指每一級中斷中又有多個中斷源。在圖7-22中,若去掉虛線右邊的所有設備,只保留虛線左邊的設備為一維多級中斷結構,整個圖則構成二維多級中斷結構。圖7-22多級中斷系統(tǒng)的結構
通過前面的分析,我們知道要想實現(xiàn)多級中斷必須滿足兩個基本條件:
(1)EINT=1。
(2)高級別的中斷可以打斷優(yōu)先級別低的中斷。
前面講過,對于多級中斷必須在中斷服務程序中設置開中斷指令滿足條件(1)。在滿足條件(1)的條件下,一個正在執(zhí)行的中斷服務程序只能被優(yōu)先級別比其高的中斷源的請
求打斷,而同級和低級中斷源的請求則不予處理。
例如,如圖7-23所示,圖中有A、B、C、D四個中斷源,其中斷優(yōu)先級按A、B、C、D由低到高依次排列。在CPU執(zhí)行主程序時,同時出現(xiàn)了B和C兩個中斷請求,由于C的優(yōu)先級高于B,因此CPU先執(zhí)行C的中斷服務程序;在C的中斷服務程序執(zhí)行過程中,中斷源D提出了中斷請求,由于D的優(yōu)先級別高于C,因此CPU暫停對C的中斷服務程序,轉去執(zhí)行D的中斷服務程序;在D中斷服務程序的執(zhí)行過程中中斷源A提出了中斷請求,由于A的優(yōu)先級低于D的優(yōu)先級,
CPU不會響應A的請求;當中斷源D的中斷服務結束后,返回被其中斷的C的中斷服務程序繼續(xù)執(zhí)行直到完成后返回到主程序,由于B和A中斷請求并未撤出且B的優(yōu)先級高于A,因此,CPU會先去執(zhí)行B的中斷服務程序,執(zhí)行完畢后返回主程序再去執(zhí)行A中斷
服務程序。圖7-23多重中斷程序處理過程示意圖
2.中斷屏蔽字與中斷優(yōu)先級的關系
利用中斷屏蔽字可以屏蔽某個中斷源。例如,在圖7-13中說明了操作就緒觸發(fā)器D、中斷請求觸發(fā)器INTR和中斷屏蔽觸發(fā)器MASK的關系。CPU可以通過對MASK的控制,允許或禁止打開中斷的請求。
在如圖7-22所示的多級中斷系統(tǒng)中,CPU內部的排隊器邏輯如圖7-24所示。圖7-24具有屏蔽功能的排隊器
對應每個中斷請求觸發(fā)器就有一個中斷屏蔽觸發(fā)器,將所有屏蔽觸發(fā)器組合在一起,就構成了一個屏蔽寄存器,如圖7-24中的MASK寄存器,屏蔽寄存器的內容稱為屏蔽字。屏蔽字與中斷源的優(yōu)先級別是對應的,如表7-1所示。
3.利用中斷屏蔽字改變中斷源優(yōu)先級
在中斷服務程序中可以通過設置中斷屏蔽字改變中斷的優(yōu)先級。例如,在3級中斷中如果將屏蔽字設為“0001”就會使得在執(zhí)行3級中斷服務程序的過程中可以響應2級和1級
中斷,從而改變中斷源處理的優(yōu)先級。
嚴格地說,中斷源的優(yōu)先級有響應優(yōu)先級和處理優(yōu)先級之分。響應優(yōu)先級是指CPU響應各中斷源請求的優(yōu)先順序,這個優(yōu)先級別是由硬件線路的邏輯決定的,是無法改變的。處理優(yōu)先級是指CPU實際對各中斷源的處理優(yōu)先順序。如果不采用屏蔽技術,響應的優(yōu)先級就是處理的優(yōu)先級。處理優(yōu)先級是否可以改變是由中斷優(yōu)先級的排隊電路是否受中
斷屏蔽字控制而決定的,例如,圖7-24所示的排隊電路就受到中斷屏蔽字的控制。
采用中斷屏蔽技術,可以改變CPU對各級中斷源的處理優(yōu)先等級,從而改變CPU執(zhí)行程序的軌跡。例如,如果有4個中斷源A、B、C、D,其優(yōu)先級別按照A→B→C→D降序排列,若4個中斷源的屏蔽字按照表7-1設置,當這4個中斷源同時提出中斷請求時,CPU的響應順序和服務順序是一致的,如圖7-25所示。
在不改變中斷響應優(yōu)先級的情況下,如果要將中斷源的處理次序優(yōu)先級從高到低改為A→C→D→B,則每個中斷源的中斷屏蔽字如表7-2所示。圖7-25響應和處理優(yōu)先級一致的CPU處理過程
當四個中斷源同時提出中斷請求時,CPU的響應和服務順序的過程如圖7-26所示。圖7-26利用中斷屏蔽字改變中斷服務優(yōu)先級的CPU處理過程
需要說明的是,在采用中斷屏蔽字改變CPU多級中斷的處理優(yōu)先級時,中斷服務程序的流程圖與圖7-20(b)有所不同,需要保存原中斷屏蔽字后設置新的中斷屏蔽字,在中斷返回前需要恢復中斷屏蔽字。當利用中斷技術改變優(yōu)先級時,其中斷服務程序流程圖如7-27所示。圖7-27采用屏蔽技術的中斷服務程序流程圖
4.多級中斷的斷點保護
與單級中斷類似,多級中斷的斷點也是由中斷隱指令自動進行保存的,對用戶是透明的。斷點通常保存在堆棧中。在如圖7-12所示的多級中斷中,由于堆棧具有先進后出的
特點,因此先將主程序斷點S+1進棧,接著是2#中斷服務程序的T+1斷點進棧,出棧時,則按照相反順序從堆棧中彈出斷點地址就可準確地返回程序斷點位置。
例7-1根據(jù)圖7-22所示的二維中斷系統(tǒng),回答下列問題:
(1)在中斷情況下,CPU和設備的優(yōu)先級如何考慮?請按降序排列各設備的中斷優(yōu)先級。
(2)若CPU現(xiàn)正執(zhí)行設備B的中斷服務程序,則IM2、IM1
、IM0
的狀態(tài)是什么?如果CPU正執(zhí)行設備D的中斷服務程序,則IM2
、IM1
、IM0
的狀態(tài)又是什么?
(3)每一級的IM能否對某個優(yōu)先級的個別設備單獨進行屏蔽?如果不能,則采取什么辦法才能達到目的?
(4)假如要求設備C提出中斷請求,CPU就立即進行響應,如何調整才能滿足此要求?
解:(1)在中斷情況下,CPU的優(yōu)先級最低,各設備的優(yōu)先次序是A-B-C-D-E-F-G-H-I。
(2)執(zhí)行設備B的中斷服務程序時,IM2
、IM1
、IM0
等于111;執(zhí)行設備D的中斷服務程序時,IM2
、IM1
、IM0
等于011。
(3)每一級的IM標志不能對某個優(yōu)先級的個別設備進行單獨屏蔽,可將該設備接口中的EI(中斷允許)標志清“0”,禁止該設備發(fā)出中斷請求。
(4)要使設備C的中斷請求及時得到響應,可將設備C從第2級取出來,單獨放在第3級上,使第3級的優(yōu)先級最高,同時令IM3=0。
例7-2某計算機中斷系統(tǒng)有四級中斷源A、B、C、D,中斷響應的優(yōu)先次序從高到低依次為A>B>C>D,每級中斷對應一個屏蔽碼。現(xiàn)要求將中斷處理次序改為
D>A>C>B。
(1)寫出每個中斷源對應的屏蔽字。
(2)當四個中斷源的請求時刻如圖7-28所示時,畫出CPU執(zhí)行程序的過程。(假設每個中斷服務程序的執(zhí)行時間為20μs。)圖7-28例7-2的中斷請求時間
解(1)若中斷處理次序由高到低改為D→A→C→B,則每個中斷源對應的屏蔽字如表7-3所示。
(2)根據(jù)新的中斷處理優(yōu)先級,CPU執(zhí)行程序的軌跡如圖7-29所示。圖7-29例7-2的CPU運行軌跡
圖7-29中按順序標注了CPU的運行軌跡和過程序號,各過程的分析如下:
①CPU在執(zhí)行主程序到15μs的時刻,CPU響應中斷源A的請求,A程序將中斷屏蔽字設置為1110,在執(zhí)行A程序的過程中,中斷源C在25μs提出中斷請求,由于此刻C
是被屏蔽的,因此CPU會繼續(xù)執(zhí)行A程序直到35μs時刻結束返回主程序。
②由于C的請求并未撤除,在主程序中CPU會響應C的中斷請求轉去執(zhí)行程序C,并在程序C中設置屏蔽字0110,在40μs時刻,中斷源D提出請求,由于D未被屏蔽,因
此CPU中斷C程序的執(zhí)行轉去執(zhí)行D程序。
③在D程序中設置屏蔽字1111,在55μs時刻中斷源B提出請求,但程序D屏蔽了所有中斷源,因此不會因響應任何中斷請求而中斷,直到60μs時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品管經理述職報告
- 肺部感染護理查房指南
- 《GBT 34341-2017 組織水足跡評價和報告指南》專題研究報告
- 2026年青海建筑職業(yè)技術學院單招職業(yè)適應性測試題庫及參考答案詳解1套
- 新能源汽車充電樁信息運維服務合同
- 智能手環(huán)維修技師(高級)考試試卷及答案
- 珠寶設計行業(yè)珠寶設計項目經理崗位招聘考試試卷及答案
- 物業(yè)公司年度個人工作總結報告2025(3篇)
- 2025年公共衛(wèi)生的試題及答案
- 2025年化學單質:碳項目發(fā)展計劃
- 2025年中國大唐集團有限公司校園招聘筆試參考題庫附帶答案詳解
- 2025年國投集團招聘筆試參考題庫含答案解析
- 黑龍江省哈爾濱市2024屆中考數(shù)學試卷(含答案)
- 常用統(tǒng)計軟件應用知到智慧樹章節(jié)測試課后答案2024年秋揚州大學
- 危險作業(yè)安全培訓
- 石油鉆機講義
- 中醫(yī)寒熱辨證
- 環(huán)衛(wèi)安全隱患排查報告
- 海洋氣象數(shù)據(jù)同化技術創(chuàng)新
- 《光伏發(fā)電工程安全驗收評價規(guī)程》(NB-T 32038-2017)
- 帶你聽懂中國傳統(tǒng)音樂智慧樹知到期末考試答案2024年
評論
0/150
提交評論