




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第9章 I/O組織9.1 I/O系統(tǒng)概述9.1.1 I/O系統(tǒng)需要解決的主要問題 計(jì)算機(jī)系統(tǒng)中的I/O系統(tǒng)主要解決主機(jī)與外部設(shè)備問的數(shù)據(jù)交換的問題,使外圍設(shè)備與主機(jī)能夠協(xié)調(diào)一致地工作。這里所謂“協(xié)調(diào)一致有兩層含義: 一是實(shí)現(xiàn)處理機(jī)與外部設(shè)備在數(shù)據(jù)處理的速度上能夠相互匹配; 二是實(shí)現(xiàn)處理機(jī)與外部設(shè)備并行工作,以提高整個(gè)計(jì)算機(jī)系統(tǒng)的工作效率。 如何實(shí)現(xiàn)它們之間的速度匹配呢?主要是靠緩沖技術(shù)。 如何實(shí)現(xiàn)處理機(jī)與外部設(shè)備并行工作呢?關(guān)鍵是減少處理機(jī)對(duì)外部設(shè)備的直接控制,甚至處理機(jī)干脆不再干預(yù)外部設(shè)備的控制,而交由專門的硬件裝置去實(shí)現(xiàn)對(duì)外部設(shè)備的管理與監(jiān)督。9.1.2 I/O系統(tǒng)的組成 在現(xiàn)代計(jì)算機(jī)系統(tǒng)
2、中,I/O系統(tǒng)由四局部組成:擴(kuò)展總線、I/O設(shè)備接口控制器、I/O設(shè)備以及相關(guān)控制軟件。計(jì)算機(jī)I/O系統(tǒng)典型結(jié)構(gòu)如圖9-1所示。 1 I/O接口控制器的功能之一就是要負(fù)責(zé)利用適當(dāng)?shù)氖侄?,譯碼處理機(jī)送來的用于控制外設(shè)的命令字,進(jìn)而向它所控制的外設(shè)提供外設(shè)所需要的控制信號(hào); 除此之外接口控制器也需要接收外設(shè)返回的狀態(tài),并以此為依據(jù)進(jìn)一步將其組織成設(shè)備狀態(tài)字,提供給處理機(jī)查詢; 同時(shí)l/O接口還要在一定程度上負(fù)責(zé)數(shù)據(jù)的緩沖,從而實(shí)現(xiàn)處理機(jī)與外設(shè)之問的速度匹配。 9.1.3 主機(jī)與外圍設(shè)備間的連接方式與組織管理 在現(xiàn)代計(jì)算機(jī)中,主機(jī)與外圍設(shè)備的連接方式大致可分為:總線方式、通道方式和I/O處理機(jī)(IO
3、P)方式。2 總線型連接方式 CPU通過系統(tǒng)總線與內(nèi)存儲(chǔ)器、I/O接口控制器相連接,通過I/O接口控制器實(shí)現(xiàn)對(duì)外圍設(shè)備的控制,如圖9-1所示。 這種連接方式是目前大多數(shù)中、小型計(jì)算機(jī)包括微型計(jì)算機(jī)所采用的連接模式。 優(yōu)點(diǎn)是系統(tǒng)模塊化程度較高,I/O接口擴(kuò)充方便。 缺點(diǎn)是系統(tǒng)中部件之間的信息交換均依賴于總線,總線容易成為系統(tǒng)中的瓶頸,因而不適于系統(tǒng)需要配備大量外圍設(shè)備的場(chǎng)合。 通道控制連接方式 其控制連接方式如圖9-2所示。3 從連接角度看,通道控制器的一端與系統(tǒng)總線相連,另一端那么控制一條I/O總線。 設(shè)備控制器及其所控制的設(shè)備那么連接到I/O總線上,構(gòu)成了主機(jī)、通道、I/O接口(設(shè)備控制器)
4、和外設(shè)的四級(jí)連接方式。 I/O 處理機(jī)控制連接方式 I/O處理機(jī)(I/O processor,IOP)與通道相比,有更強(qiáng)的獨(dú)立性,它與主機(jī)中CPU所采用的體系結(jié)構(gòu)無關(guān),可視為一種專用的CPU。9.1.4 I/O信息傳送的控制方式 由程序控制的數(shù)據(jù)傳送。 由處理機(jī)執(zhí)行所謂的I/O程序,實(shí)現(xiàn)對(duì)整個(gè)I/O數(shù)據(jù)傳送過程的全程監(jiān)督與管理,一般在總線型連接方式中采用。 由程序控制的數(shù)據(jù)傳送可進(jìn)一步分為直接程序控制方式(programmed direct control,PDC)和程序中斷傳送方式(program interrupt transfer,PIT)。 由專有硬件控制的數(shù)據(jù)傳送。 49.2 I/O
5、接口 不同功能部件之間的交界面稱為接口 接口與端口是兩個(gè)不同的概念: 端口:是指能被CPU直接訪問的存放器。 接口:由假設(shè)干個(gè)端口加上相應(yīng)的控制邏輯電路組成。 一個(gè)接口通常包括數(shù)據(jù)端口、命令端口和狀態(tài)端口。 主機(jī)與外設(shè)的主要差異: 工作速度相差幾個(gè)數(shù)量級(jí)。 數(shù)據(jù)格式不同,主機(jī)內(nèi)部采用二進(jìn)制編碼;而外設(shè)種類繁多,編碼各異,另外還有串并數(shù)據(jù)之分。 主機(jī)和外設(shè)之間需要交換的信息: 數(shù)據(jù)信息 控制信息 狀態(tài)信息 聯(lián)絡(luò)信息 外設(shè)識(shí)別信息9.2.1 I/O接口的功能 一個(gè)I/O接口的典型結(jié)構(gòu)如圖9-3所示。5 接口的根本功能有: 數(shù)據(jù)傳送與數(shù)據(jù)緩沖、隔離和鎖存 錯(cuò)誤或狀態(tài)的檢測(cè) 控制和定時(shí) 數(shù)據(jù)格式轉(zhuǎn)換
6、與主機(jī)和設(shè)備通信 上述功能都有必須通過I/O接口與主機(jī)或設(shè)備之間的通信來完成。例如,I/O接口與主機(jī)側(cè)進(jìn)行通信: 對(duì)主機(jī)通過SB送來的地址信息進(jìn)行譯碼,以確定是否選中本設(shè)備。 接受SB送來的控制信息,以確定數(shù)據(jù)傳送的方向。6 將接口中數(shù)據(jù)緩沖存放器或狀態(tài)存放器的信息送到SB,或接收SB送來的數(shù)據(jù)或命令信息,將其送到接口中的數(shù)據(jù)緩沖存放器或控制存放器。 又如,I/O接口與設(shè)備進(jìn)行通信: 將控制存放器中的命令譯碼輸出外部接口的控制線上。 發(fā)送數(shù)據(jù)緩沖存放器的數(shù)據(jù)外部接口的數(shù)據(jù)線上。 接受外設(shè)的狀態(tài)或數(shù)據(jù)信息, 接口中的狀態(tài)存放器或數(shù)據(jù)緩沖存放器中。 數(shù)據(jù)在外設(shè)和主機(jī)之間進(jìn)行傳送的過程如下圖:7 I
7、/O端口的編址 端口:是指能被CPU直接訪問的存放器。 一個(gè)I/O端口可能是輸入端口,也可能是輸出端口或是雙向端口 端口地址的編址方式一般有以下兩種:獨(dú)立編址和統(tǒng)一編址。 獨(dú)立編址 例如在IBM PC微型計(jì)算機(jī)系統(tǒng)中就采用了此種方式。如圖9-4所示。 在IBM PC中局部I/O端口地址分配如表9-1所示。8表9-1 IBM PC中I/O地址分配 輸入輸出設(shè)備 占用地址數(shù) 地址(十六進(jìn)制)硬盤控制器1632032F軟盤控制器832032F彩色圖形顯示適配器163D03DF異步通信控制器83F83FF 獨(dú)立編址方法的優(yōu)點(diǎn)是:I/O端口與存儲(chǔ)器單元都有各自獨(dú)立的地址空間,各自的地址譯碼與控制電路會(huì)相
8、對(duì)簡(jiǎn)單一些,同時(shí)由于設(shè)置了I/O指令,使機(jī)器語言或匯編語言源程序中的I/O局部較為明顯,程序的結(jié)構(gòu)比較清晰,便于閱讀、修改程序。 缺點(diǎn)是通常為I/O指令設(shè)計(jì)的尋址方式與存儲(chǔ)單元訪問指令中的尋址方式相比要單調(diào)一些,同時(shí)增加了指令系統(tǒng)的復(fù)雜性。但一般不會(huì)給程序的編制帶來不便。 存儲(chǔ)器映射(統(tǒng)一編址)方式是從主存儲(chǔ)器地址空間中分出一局部地址作為I/O端口地址,即存儲(chǔ)單元與I/O端口存放器處在一個(gè)統(tǒng)一9的地址空間中,如圖9-5所示I/O端口存儲(chǔ)器圖9-5 存儲(chǔ)器映射的I/O設(shè)備編址方式 統(tǒng)一編址方法的優(yōu)點(diǎn)是:簡(jiǎn)化了CPU控制器的設(shè)計(jì)、實(shí)現(xiàn)。當(dāng)訪問存儲(chǔ)器的指令中出現(xiàn)被I/O映射的地址碼時(shí),表示當(dāng)前訪問的
9、對(duì)象不是存儲(chǔ)單元而是I/O端口。由于通常對(duì)訪問存儲(chǔ)單元的指令會(huì)設(shè)計(jì)較多的尋址方式,因而I/O程序編制較為方便、靈活。 缺點(diǎn)也很明顯,其一是存儲(chǔ)器的空間被占用;二是機(jī)器語言或匯編語言源程序中的I/O局部難以閱讀、修改及維護(hù)。 9.2.2 I/O接口的分類 按數(shù)據(jù)傳送方式分類: 串行接口和并行接口。10 按功能選擇的靈活性分類: 可編程接口和不可編程接口。 按通用性分: 通用接口和專用接口。 按主機(jī)訪問I/O設(shè)備的控制方式分類: 程序查詢接口 中斷接口 DMA接口 按連接方式來分: 有點(diǎn)對(duì)點(diǎn)的接口和多點(diǎn)接口。 輸入和輸出的信號(hào)分類: 數(shù)字接口和模擬接口 按應(yīng)用來分: 運(yùn)行輔助接口 用戶交互接口 傳
10、感接口 控制接口119.3 程序控制方式9.3.1 I/O控制方式類型 程序查詢方式 程序中斷方式 DMA方式 Channel方式 I/O處理機(jī)方式9.3.2 程序直接控制方式 直接通過程序來控制主機(jī)和外設(shè)的數(shù)據(jù)交換。通常有兩種類型的程序直接控制數(shù)據(jù)傳送方式:無條件傳送方式和有條件傳送方式。 無條件傳送方式 也稱同步傳送方式。其實(shí)質(zhì)是用程序來定時(shí)同步地傳送數(shù)據(jù)。適合于各類巡回檢測(cè)或過程控制。見圖。12 有條件傳送方式 也稱異步傳送方式或程序查詢方式。見圖。 程序查詢方式的優(yōu)點(diǎn)是:簡(jiǎn)單、易控制、外圍接口控制邏輯少。 缺點(diǎn)是:外設(shè)完全串行工作,效率低、速度慢。 13 查詢可采用多種不同的方式進(jìn)行,
11、主要取決于I/O設(shè)備本身以及該I/O設(shè)備是否能夠獨(dú)立啟動(dòng)I/O。例: 鼠標(biāo)是慢速設(shè)備,所以常用查詢方式。用戶可以移動(dòng)鼠標(biāo)或單擊鼠標(biāo)按鈕就能夠獨(dú)立啟動(dòng)I/O完成輸入操作。 軟盤或打印機(jī)只能在OS控制下才能啟動(dòng),這樣的設(shè)備只有OS知道它被激活后才能進(jìn)行查詢,但這種查詢的開銷很大。下面舉例說明對(duì)于不同I/O速率的設(shè)備,I/O的程序查詢開銷是不同的。 例:設(shè)查詢操作所需的周期數(shù)是400個(gè),PE按500MHz的速度執(zhí)行,即PE每秒產(chǎn)生500106個(gè)PE周期。假定查詢速度足夠快,能保證數(shù)據(jù)沒有任何數(shù)據(jù)喪失,并設(shè)設(shè)備總是忙,考察以下三種情況下所消耗的CPU時(shí)間百分比。 鼠標(biāo)必須每秒鐘被查詢30次,以保證不錯(cuò)
12、過用戶的任何一次移動(dòng)。 那么每秒用于查詢的時(shí)鐘周期為30400=12000周期,花費(fèi)PE時(shí)鐘周期的百分比為12000/(500106)= 0.0024%。14 軟盤按16位(2B)為單位將數(shù)據(jù)傳送到PE,傳輸速率為 50KB/s,且沒有任何數(shù)據(jù)傳送被錯(cuò)過,查詢速率需到達(dá)50KB/2B=25K次才能保證沒有任何數(shù)據(jù)喪失。因此,每秒用于查詢的時(shí)鐘周期數(shù)為25K400=10M,這占整個(gè)PE時(shí)鐘周期數(shù)為10M /(500106)=2%。 硬盤以4字塊(=16B)進(jìn)行傳輸,速率為4MB/s,同樣沒有任何數(shù)據(jù)傳送被錯(cuò)過。查詢速率應(yīng)為4MB/16B=250K次才能保證沒有任何數(shù)據(jù)喪失。因此,每秒用于查詢的時(shí)
13、鐘周期數(shù)為250K400=100M,這占整個(gè)PE時(shí)鐘周期數(shù)為100M /(500106)=20%。也就是說處理器中1/5的時(shí)間用于查詢硬盤,顯然這是不可取的。9.3.2 程序中斷傳送方式 中斷的根本概念 中斷問題的提出 程序查詢方式雖然簡(jiǎn)單,但存在以下明顯的缺點(diǎn): 在查詢過程中,CPU長(zhǎng)期于等待狀態(tài),系統(tǒng)效率低; CPU在一段時(shí)間內(nèi)只能與一臺(tái)外設(shè)交換信息,其他設(shè)備不能并行工作; 不能發(fā)現(xiàn)和處理預(yù)先未估計(jì)到的錯(cuò)誤和異常情況。15 中斷方式在一定程度上實(shí)現(xiàn)了CPU和外設(shè)的并行工作,提高了CPU的工作效率?,F(xiàn)在中斷已從提高計(jì)算機(jī)效率變?yōu)樘岣咝堋?中斷系統(tǒng)是計(jì)算機(jī)實(shí)現(xiàn)中斷功能的軟、硬件總稱。 中斷處
14、理過程實(shí)際上是程序切換過程。因此,CPU每次執(zhí)行效勞程序前總要保護(hù)被中止的程序的斷點(diǎn)、和現(xiàn)場(chǎng)。返回時(shí),要恢復(fù)被中止的程序的斷點(diǎn)、和現(xiàn)場(chǎng)。 中斷:由于意外事件,迫使CPU中止運(yùn)行現(xiàn)行程序,轉(zhuǎn)向去執(zhí)行處理意外事件的效勞程序,處理完畢后,CPU再返回被中止運(yùn)行的程序的斷點(diǎn)繼續(xù)執(zhí)行的這一過程。 16 中斷機(jī)構(gòu)的建立 設(shè)計(jì)、實(shí)現(xiàn)一個(gè)計(jì)算機(jī)系統(tǒng)的中斷機(jī)構(gòu)主要涉及以下一些要素: 中斷源的設(shè)置。 中斷的分類與分級(jí)。 中斷信號(hào)的建立與傳送。 實(shí)現(xiàn)優(yōu)先級(jí)比較的方式和方法。 CPU響應(yīng)中斷的條件和時(shí)機(jī),以及CPU在響應(yīng)中斷時(shí)要做的工作。 CPU識(shí)別各個(gè)中斷的方法,以及如何找到處理相應(yīng)中斷的中斷處理程序。程序中斷與調(diào)
15、子的區(qū)別 子程序的執(zhí)行是由程序員事先安排好的(即由事先安排的調(diào)子程序轉(zhuǎn)入),而中斷效勞子程序的執(zhí)行那么是隨機(jī)的。 子程序的執(zhí)行受上層子程序或主程序的控制,而中斷效勞程序與被中斷的現(xiàn)行程序無關(guān)。 不存在同時(shí)調(diào)用多個(gè)子程序的情況,而可能發(fā)生多個(gè) 中斷源同時(shí)請(qǐng)求CPU為自己效勞的情況。17 是否允許正在執(zhí)行的中斷處理程序被其他高級(jí)別的中斷請(qǐng)求打斷,即系統(tǒng)是否允許中斷嵌套。 中斷系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)要求 在一個(gè)成功的中斷系統(tǒng)的設(shè)計(jì)、實(shí)現(xiàn)中,中斷系統(tǒng)應(yīng)滿足以下要求: 保證中斷請(qǐng)求信號(hào)的建立及保持其準(zhǔn)確性,保證中斷在未被響應(yīng)時(shí),中斷請(qǐng)求信號(hào)不能被隨便喪失。 保證中斷響應(yīng)的及時(shí)性,各類中斷都能及時(shí)得到響應(yīng),不應(yīng)
16、出現(xiàn)某些中斷由于某種原因長(zhǎng)時(shí)間得不到響應(yīng)。 必須防止在處理某個(gè)中斷過程中,又去響應(yīng)同樣的中斷。 保證中斷處理過程的正確性,在中斷處理過程結(jié)束后能夠正確返回被中斷的程序,使之繼續(xù)執(zhí)行。 高級(jí)中斷能打斷低級(jí)中斷的處理過程,允許中斷嵌套。 中斷優(yōu)先級(jí)的設(shè)置應(yīng)具備方便性及靈活性,允許動(dòng)態(tài)改變一個(gè)中斷的優(yōu)先級(jí)別。 中斷源的設(shè)置 中斷源是指能引起中斷事件的原因。 18 中斷還能幫助我們解決在計(jì)算機(jī)系統(tǒng)中許多看似難以解決的問題,這些問題歸納如下: 實(shí)現(xiàn)人機(jī)聯(lián)系。 單步調(diào)試程序。 實(shí)時(shí)處理。 提高機(jī)器的可靠性。 應(yīng)用程序和操作系統(tǒng)的聯(lián)系。 實(shí)現(xiàn)多道程序。 實(shí)現(xiàn)多處理機(jī)系統(tǒng)中各處理機(jī)之間的聯(lián)系。 19 中斷的分
17、類 不同的系統(tǒng)有自己的分類方法,比方分為硬件中斷(設(shè)備中斷)和軟件中斷(trap或int指令中斷),也可分為外部中斷和內(nèi)部中斷等。 內(nèi)中斷: 由PE的異常事件引起的中斷。 根據(jù)發(fā)生的原因,又分為硬件故障中斷和程序例外引起的中斷。 硬件故障中斷:由硬聯(lián)線路出現(xiàn)異常引起的。如掉電,存儲(chǔ)線路錯(cuò)等。 程序例外中斷(也稱軟中斷)。由CPU執(zhí)行某個(gè)指令而引起的發(fā)生在PE內(nèi)部的異常事件,也稱為例外(Exception)。如單步中斷、溢出中斷、缺頁、除數(shù)為0等。 按發(fā)生異常的報(bào)告方式和返回方式的不同,程序性中斷又分為失效(Fault)、自陷(Trap)、終止(Abort)三種。 失效:是在引起失效的指令后、執(zhí)
18、行前被檢測(cè)到的一類例外事件。在相應(yīng)的中斷處理程序完成后,應(yīng)回到該指令,重新啟動(dòng)并執(zhí)行。例:“缺頁中斷。20 自陷:是產(chǎn)生在自陷指令執(zhí)行完后才被報(bào)告的一類例外事件,中斷處理完成后,回到主程序中該條指令的下一條指令繼續(xù)執(zhí)行。 例:80 x86 CPU中的INT n指令。 終止:是對(duì)引起異常的指令確實(shí)切位置無法確定的一類例外事件,出現(xiàn)這類嚴(yán)重錯(cuò)誤,原程序無法繼續(xù)執(zhí)行,只好終止,而由中斷效勞程序重新啟動(dòng)OS。例如,硬件錯(cuò)誤、系統(tǒng)表中的非法數(shù)值、非法操作碼等造成的異常。 外中斷: 指CPU以外的部件引起的中斷。例如,任務(wù)完成、打印機(jī)缺紙、鍵盤輸入、采樣計(jì)時(shí)到等。它又分可屏蔽中斷和非可屏蔽中斷。 可屏蔽中
19、斷:打印機(jī)準(zhǔn)備好、任務(wù)完成等。 非可屏蔽中斷:DMA中斷等。中斷也可用另外分類方法 自愿中斷和強(qiáng)迫中斷 自愿中斷又稱自中斷,它不是隨機(jī)產(chǎn)生的中斷,而是在程序中安排的有關(guān)指令,使機(jī)器進(jìn)入中斷處理的過程,如8086中的軟中斷指令I(lǐng)NT n。 21 強(qiáng)迫中斷是隨機(jī)產(chǎn)生的中斷,不是程序中事先安排的。當(dāng)這種中斷產(chǎn)生以后,由中斷系統(tǒng)迫使計(jì)算機(jī)中止現(xiàn)行程序并轉(zhuǎn)入中斷效勞程序。 程序中斷和簡(jiǎn)單中斷 程序中斷就是上面所提到的中斷,主機(jī)響應(yīng)中斷請(qǐng)求后,通過執(zhí)行一段中斷效勞子程序來處理更緊迫的任務(wù)。它須要占用一定的CPU時(shí)間。 簡(jiǎn)單中斷指外設(shè)與主存間直接進(jìn)行交換的方法,即DMA方式。這種中斷不去執(zhí)行中斷效勞程序,而
20、主要是靠硬件來處理。 內(nèi)中斷和外中斷 內(nèi)中斷由CPU內(nèi)部硬件或軟件原因引起的中斷,如單步中斷、溢出中斷等。 外中斷指CPU以外的部件引起的中斷。它又分可屏蔽中斷和非可屏蔽中斷。 向量中斷和非向量中斷 向量中斷:指能自己提供中斷效勞程序入口地址的中斷。 22 非向量中斷是不能自己提供中斷效勞程序入口地址的中斷。 單重中斷和多重中斷 單重中斷在CPU執(zhí)行中斷效勞程序過程中不能再被打斷的中斷。 多重中斷在CPU執(zhí)行中斷效勞程序過程中可以響應(yīng)優(yōu)先級(jí)更高的中斷請(qǐng)求。又稱為中斷嵌套。 例:80 x86 PE中斷系統(tǒng)把中斷分成以下兩大類: 外中斷(硬中斷):通過PE的INTR和NMI兩根引線實(shí)現(xiàn)請(qǐng)求的中斷。
21、 由外設(shè)中斷源引起的中斷通過INTR線向CPU申請(qǐng)中斷,它是可屏蔽中斷。 由外設(shè)中斷源引起的重要或緊急的硬件故障中斷,通過NMI線向CPU申請(qǐng)中斷,它是不可屏蔽中斷。 內(nèi)中斷(軟中斷):也稱為異?;蚶狻S商幚砥鲀?nèi)部產(chǎn)生而不通過中斷線請(qǐng)示的中斷,為不可屏蔽中斷。23 由外設(shè)引起的I/O的中斷和前面看到的異常在本質(zhì)上是一樣的,但是有兩個(gè)重要的不同點(diǎn): 一個(gè)I/O中斷相對(duì)于指令的執(zhí)行是異步,即I/O中斷不和任何指令相關(guān),也不阻止指令的執(zhí)行完成,它與“缺頁例外和“溢出例外等有很大的不同 ,I/O中斷控制邏輯僅需要在開始一個(gè)新指令之前檢測(cè)是否有I/O中斷請(qǐng)求。 異常是由PE自身發(fā)現(xiàn)的,不必通過外部的某
22、個(gè)信號(hào)通知CPU,也不要識(shí)別是哪種異常。而對(duì)中斷,PE除了被通知一個(gè)“I/O中斷已發(fā)生外,還必須進(jìn)一步檢查是哪些設(shè)備發(fā)生了中斷,它們?cè)O(shè)備標(biāo)識(shí)號(hào)是多少?還要進(jìn)一步根據(jù)不同的緊急程度選擇其中一個(gè)響應(yīng) 中斷請(qǐng)求信號(hào)的建立與傳送 中斷請(qǐng)求信號(hào)的建立與中斷屏蔽 中斷請(qǐng)求存放器:記錄各外設(shè)的中斷請(qǐng)求,每個(gè)中斷請(qǐng)求對(duì)應(yīng)中斷存放器中一位。 中斷屏蔽存放器:每個(gè)中斷有自己的中斷屏蔽字(所有中斷源此時(shí)的屏蔽位的值),在相應(yīng)的中斷處理之前送往中斷屏蔽存放器。24公共請(qǐng)求獨(dú)立請(qǐng)求25 中斷請(qǐng)求信號(hào)的傳送 通常有四種傳送模式,如圖9-9所示。 各中斷源單獨(dú)設(shè)置自己的中斷請(qǐng)求線,每條中斷請(qǐng)求線都直接送往CPU,即CPU一
23、端需要設(shè)置多條中斷請(qǐng)求信號(hào)線,如圖9-9(a)所示。 各中斷源的中斷請(qǐng)求信號(hào)通過三態(tài)門電路聚集到一根公共中斷請(qǐng)求線,如圖9-9(b)所示。 也可在CPU外部設(shè)置一個(gè)中斷控制電路,該電路負(fù)責(zé)將所有中斷源所發(fā)出的中斷請(qǐng)求聚集起來,通過或門向CPU請(qǐng)求中斷,如圖9-9(c)所示。 另一種方案是兼有公共請(qǐng)求線與獨(dú)立請(qǐng)求線,如圖9-9(d)所示。對(duì)要求快速響應(yīng)的12個(gè)中斷請(qǐng)求,采取獨(dú)立請(qǐng)求線方式,以便快速識(shí)別。將其余響應(yīng)速度允許相對(duì)低些的中斷請(qǐng)求聚集為一根公共請(qǐng)求線。 中斷判優(yōu) CPU目前執(zhí)行程序的優(yōu)先級(jí)與中斷請(qǐng)求優(yōu)先級(jí)間的判優(yōu) 首先,可在CPU內(nèi)部設(shè)置一個(gè)允許中斷觸發(fā)器,如圖9-10所示。26 指令系
24、統(tǒng)提供具有開中斷與關(guān)中斷功能的指令。 如果允許中斷觸發(fā)器處于關(guān)中斷狀態(tài),那么CPU不響應(yīng)外部中斷請(qǐng)求。換句話說,所有外部中斷請(qǐng)求所要求的效勞都沒有現(xiàn)行程序的任務(wù)重要。 如果開中斷,那么CPU可響應(yīng)外部請(qǐng)求,發(fā)出中斷應(yīng)答(INTA)信號(hào)。在早期的微型計(jì)算機(jī)系統(tǒng)中,只安排了這一級(jí)控制。 27 中斷請(qǐng)求之間的判優(yōu) 首先按中斷請(qǐng)求性質(zhì)來劃分優(yōu)先級(jí)。 一般來說CPU內(nèi)部引發(fā)的中斷優(yōu)先級(jí)最高,然后才是外部中斷。 對(duì)外部中斷而言,不可屏蔽中斷的優(yōu)先級(jí)要高于可屏蔽中斷,前者往往要求CPU處理故障,后者要求CPU處理一般的I/O中斷。 對(duì)于一般的I/O中斷,按中斷請(qǐng)求要求的數(shù)據(jù)傳送方向,通常的原那么是讓輸入操作
25、的請(qǐng)求優(yōu)于輸出操作的請(qǐng)求。 下面介紹幾種優(yōu)先級(jí)排隊(duì)方法。 軟件查詢 圖9-11 軟件查詢中斷的中斷請(qǐng)求邏輯和查詢流程28 開仃優(yōu)先級(jí)排隊(duì)邏輯 如果各中斷源都能提供獨(dú)立的中斷請(qǐng)求信號(hào)線送往CPU,那么可以采取并行優(yōu)先級(jí)排隊(duì)邏輯,也稱具有獨(dú)立請(qǐng)求線的硬件優(yōu)先級(jí)排隊(duì)邏輯,如圖9-12所示 圖9-12 具有獨(dú)立請(qǐng)求線的硬件優(yōu)先級(jí)排隊(duì)邏輯0110129 鏈?zhǔn)絻?yōu)先排隊(duì)邏輯 如果中斷請(qǐng)求信號(hào)的傳遞模式采用公共請(qǐng)求線方式,那么優(yōu)先級(jí)排隊(duì)結(jié)果可以用形成紫設(shè)備編碼或中斷識(shí)別編碼來表示,相應(yīng)地可采用鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)邏輯,該邏輯也稱為優(yōu)先鏈邏輯。各個(gè)中斷源提出的中斷請(qǐng)求都送到公共中斷請(qǐng)求信號(hào)線上,形成公用的中斷請(qǐng)求信號(hào)
26、INT送往CPU。 圖9-13 鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)邏輯 在采取這種連接方式時(shí),所有可能作為中斷源的設(shè)備被連接成一條鏈,其連接順序表達(dá)了優(yōu)先級(jí)順序,在邏輯上離CPU最近的設(shè)備,優(yōu)先級(jí)最高。這種優(yōu)先鏈結(jié)構(gòu)在許多文獻(xiàn)中也被稱為菊花鏈,是應(yīng)用很廣泛的一種邏輯結(jié)構(gòu)。3230 串行鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)邏輯是由硬件實(shí)現(xiàn)的采用公共請(qǐng)求線的優(yōu)先級(jí)排隊(duì)方式,其邏輯線路如圖9-14所示。圖9-14 串行優(yōu)先級(jí)排隊(duì)電路01110101001131 在圖9-13(b)所示結(jié)構(gòu)中,批準(zhǔn)信號(hào)同時(shí)送往所有接口;但中斷優(yōu)先級(jí)排隊(duì)電路保證只有在申請(qǐng)者中優(yōu)先級(jí)最高的一個(gè)中斷源可以通過系統(tǒng)總線向CPU送出自己的識(shí)別編碼。根據(jù)編碼,CPU可以識(shí)
27、別出中斷源,從而轉(zhuǎn)向?qū)?yīng)的中斷效勞程序。 二維結(jié)構(gòu)的優(yōu)先排隊(duì) 如果中斷請(qǐng)求信號(hào)的傳送采取二維結(jié)構(gòu),那么優(yōu)先排隊(duì)邏輯結(jié)構(gòu)如圖9-15所示。 32 采用中斷控制器集成芯片的優(yōu)先邏輯 Intel 8259A芯片內(nèi)部大致的邏輯結(jié)構(gòu)如圖9-16所示。Intel 8259A芯片主要包含下述組件。 圖9-1 6 可編程中斷控制器Intel 8259A33 在中斷優(yōu)先級(jí)排隊(duì)問題的各種方法中,有些方法可以綜合運(yùn)用,從而在實(shí)際應(yīng)用中派生出許多具體方式。例如中斷控制器8259A,可編程指定多種優(yōu)先級(jí)排隊(duì)方法,如固定優(yōu)先級(jí)方式、循環(huán)優(yōu)先級(jí)方式、特殊屏蔽方式等。 當(dāng)中斷源較多時(shí),它可以多級(jí)串聯(lián),將一片8259A的INT
28、作為上一級(jí)的IR0-7的中斷請(qǐng)求信號(hào)來使用,以擴(kuò)展中斷請(qǐng)求的數(shù)量。 34 中斷響應(yīng)和中斷處理(中斷效勞) 中斷響應(yīng) CPU接到中斷請(qǐng)求信號(hào)后,如果滿足響應(yīng)中斷的條件,CPU就會(huì)暫停現(xiàn)行程序的執(zhí)行,而轉(zhuǎn)入中斷處理,將這一過程稱為中斷響應(yīng) CPU響應(yīng)外部中斷一般應(yīng)具備如下條件: 有中斷源請(qǐng)求中斷。 允許響應(yīng)中斷,即處于開中斷狀態(tài)。 一條指令執(zhí)行結(jié)束。 CPU響應(yīng)中斷后進(jìn)入中斷響應(yīng)周期,在中斷響應(yīng)周期內(nèi),完成下面操作。 關(guān)中斷:以便在保存現(xiàn)場(chǎng)的過程中不允許響應(yīng)新的中斷請(qǐng)求,確?,F(xiàn)場(chǎng)保存的正確性。 保存斷點(diǎn)地址(即返回地址)和程序狀態(tài)字:一般將它們壓入堆棧中。 轉(zhuǎn)入中斷效勞程序入口:以便執(zhí)行相應(yīng)的中斷
29、效勞程序,完成中斷處理任務(wù)。 35 中斷處理(中斷效勞) 中斷效勞程序一般由三局部組成,即起始局部、主體局部和結(jié)尾局部。 中斷效勞程序的起始局部的主要功能按執(zhí)行次序如下: 判明中斷原因,識(shí)別中斷源,對(duì)于不同中斷源轉(zhuǎn)入不同的效勞程序。 36 對(duì)于向量中斷,直接由硬件查明中斷源并給出中斷向量地址,轉(zhuǎn)入相應(yīng)中斷效勞程序。 對(duì)于非向量中斷那么需通過執(zhí)行一段查詢程序,查明中斷源后轉(zhuǎn)入相應(yīng)的中斷效勞程序。 設(shè)置屏蔽字,封鎖同級(jí)中斷與低級(jí)中斷。 保存中斷現(xiàn)場(chǎng)。 開中斷,以便在本次中斷處理過程中能夠響應(yīng)更高級(jí)的中斷請(qǐng)求。 中斷效勞程序的主體局部是執(zhí)行處理具體中斷的程序。如控制設(shè)備進(jìn)行輸入輸出操作。 中斷效勞程
30、序的結(jié)尾局部按執(zhí)行次序主要完成以下功能: 關(guān)中斷。以便在恢復(fù)現(xiàn)場(chǎng)的過程中不允許響應(yīng)新的中斷。 恢復(fù)中斷現(xiàn)場(chǎng),將起始局部保存的存放器內(nèi)容送回到原存放器中。 清中斷請(qǐng)求或中斷效勞信號(hào),表示本次中斷處理結(jié)束。 清屏蔽字,開放同級(jí)中斷和低級(jí)中斷。 開中斷,以便響應(yīng)新的中斷請(qǐng)求。 恢復(fù)PSW、PC,返回被中斷的程序。 37 中斷效勞程序入口地址的獲取方法 向量中斷 首先說明五個(gè)有關(guān)的概念。 中斷向量:通常將中斷效勞程序的入口地址及其程序狀態(tài)字合稱為中斷向量。有些計(jì)算機(jī)系統(tǒng)(例如早期的微型計(jì)算機(jī))沒有完整的程序狀態(tài)字,此時(shí)中斷向量?jī)H指中斷效勞程序的入口地址。 中斷向量表:存放中斷向量的表格。如圖9-18所
31、示。 PSWnPCnPSW2PC2PSW1PC1圖9-18 中斷向量表38 向量地址:訪問中斷向量表中的一個(gè)表項(xiàng)的地址碼,即讀取中斷向量所需的內(nèi)存地址,也稱為中斷指針。 中斷類型碼:中斷源提供的標(biāo)識(shí)中斷類型的編碼,CPU一般據(jù)此編碼計(jì)算得到向量地址。 8086中斷向量表存放的形式是:4n+3, 4n+2兩個(gè)單元存放CS內(nèi)容4n+1, 4n兩個(gè)單元存放IP內(nèi)容 不必經(jīng)過程序查詢中斷源,由被響應(yīng)的中斷源自己提供其中斷處理程序的起始地址的功能稱為向量中斷。 向量中斷是指這樣一種中斷響應(yīng)方式: 將各個(gè)中斷效勞程序的中斷向量組織成中斷向量表;響應(yīng)中斷時(shí),由中斷源提供中斷類型編碼; CPU計(jì)算得到對(duì)應(yīng)于該
32、中斷的向量地址;39 根據(jù)向量地址訪問中斷向量表,從中讀取相應(yīng)的中斷效勞程序的人口地址及PSW編碼字,將入口地址裝到程序計(jì)數(shù)器(PC)中,將PSW編碼字裝入到程序狀態(tài)字存放器中; CPU就轉(zhuǎn)向執(zhí)行中斷效勞程序。 上述工作一般安排在中斷響應(yīng)周期中,由CPU執(zhí)行中斷響應(yīng)隱指令實(shí)現(xiàn)。 中斷隱指令 CPU響應(yīng)中斷之后,經(jīng)過某些操作,才能轉(zhuǎn)去執(zhí)行中斷效勞子程序。這些操作是由硬件直接實(shí)現(xiàn)的,稱之為中斷隱指令。 對(duì)于中斷向量的含義,不同的計(jì)算機(jī)的定義是不同的。 例如: 80 x86定義中斷向量是中斷類型號(hào)。 40 非向量中斷 非向量中斷是指這樣一種中斷響應(yīng)方式: CPU在響應(yīng)中斷時(shí)只產(chǎn)生一個(gè)固定的地址,該地
33、址是中斷查詢程序的人口地址,這樣CPU可以轉(zhuǎn)去執(zhí)行查詢程序,通過軟件查詢確定被優(yōu)先批準(zhǔn)的中斷源,然后執(zhí)行相應(yīng)的中斷效勞程序。 查詢程序是為所有中斷請(qǐng)求效勞的,又稱為中斷總效勞程序。它的任務(wù)僅僅是判定提出中斷請(qǐng)求的中斷源,進(jìn)而轉(zhuǎn)去執(zhí)行處理中斷的效勞程序。 非向量中斷方式是通過軟件方式確定中斷效勞程序入口地址的。 優(yōu)點(diǎn)是可以簡(jiǎn)化硬件邏輯,靈活地修改優(yōu)先順序; 缺點(diǎn)是相對(duì)來說中斷的響應(yīng)速度較慢。 中斷嵌套(多重中斷) 如果CPU在處理某一級(jí)中斷的過程中,又遇到了新的中斷請(qǐng)求,CPU暫停原中斷的處理,而轉(zhuǎn)去處理新的中斷,待處理完畢,再恢復(fù)原來中斷的處理,把這種中斷行為稱為多重中斷,也稱中斷嵌套,如圖9
34、-19所示。41對(duì)于多重中斷處理是:中斷哪段程序返回哪段程序。 簡(jiǎn)而言之,中斷誰返回誰。 中斷屏蔽還有一個(gè)用處就是中斷升級(jí)。還以前面所舉的五級(jí)中斷為例,各中斷源的優(yōu)先級(jí)為12345 ,每個(gè)中斷源對(duì)應(yīng)一個(gè)屏蔽碼,屏蔽碼為1表示中斷被屏蔽。根據(jù)多重中斷的處理原那么,屏蔽碼的設(shè)置如表9-2所示。 設(shè)先有中斷請(qǐng)求是1、2、4級(jí)。在執(zhí)行4級(jí)中斷效勞程序時(shí),又有3級(jí)中斷請(qǐng)求。在執(zhí)行3級(jí)中斷效勞程序時(shí),又有1、5級(jí)中斷請(qǐng)求。那么處理過程見圖所示。42表9-2 程序級(jí)別與屏蔽碼 程序級(jí)別屏蔽碼 1級(jí) 2級(jí) 3級(jí) 4級(jí)5級(jí)第一級(jí) 1 1 1 1 1第二級(jí)011 1 1第三級(jí)001 1 1第四級(jí)000 1 1第五
35、級(jí)0000 1 43 如優(yōu)先級(jí)為14325,那么對(duì)上述請(qǐng)求順序見表9-3所示。 表9-3 修改中斷處理次序屏蔽碼 程序級(jí)別屏蔽碼 1級(jí) 2級(jí) 3級(jí) 4級(jí)5級(jí)第一級(jí) 1 1 1 1 1第二級(jí)0100 1第三級(jí)011 0 1第四級(jí)01 1 1 1第五級(jí)0000 1 還是剛剛的中斷順序。那么處理過程見以下圖所示。44 補(bǔ)充二維中斷判優(yōu)結(jié)構(gòu),見以下圖所示。 CPU在執(zhí)行主程序時(shí)發(fā)生中斷請(qǐng)求是設(shè)備2,2。接著又有設(shè)備1,n,設(shè)備3,1同時(shí)發(fā)請(qǐng)求,在執(zhí)行設(shè)備3,1中斷效勞程序時(shí),又發(fā)生設(shè)備2,3中斷請(qǐng)求,那么處理過程 45 9中斷響應(yīng)的及時(shí)性 影響延遲時(shí)間的因素有以下四點(diǎn): 一是指令的執(zhí)行時(shí)間。一般外部中
36、斷是在指令之間響應(yīng),如果指令系統(tǒng)中有執(zhí)行時(shí)間較長(zhǎng)的指令,如x86平臺(tái)的MOVS指令,那么需要考慮提供在指令執(zhí)行過程中也可以對(duì)外部中斷請(qǐng)求予以響應(yīng)的能力。 二是程序執(zhí)行環(huán)境的轉(zhuǎn)換的開銷,即保護(hù)斷點(diǎn)、現(xiàn)場(chǎng)和恢復(fù)斷點(diǎn)、46現(xiàn)場(chǎng)時(shí)CPU的開銷。 三是中斷效勞程序入口地址確實(shí)定方式。 四是中斷處理程序最好也安排在cache中,以便加快中斷處理。 總結(jié):中斷過程大體上分為五個(gè)階段: 中斷請(qǐng)求 中斷判優(yōu) 中斷響應(yīng) 中斷處理 中斷返回 設(shè)硬盤以4字塊(=16B)進(jìn)行傳輸,速率為4MB/s,同樣沒有任何數(shù)據(jù)傳送被錯(cuò)過。查詢速率應(yīng)為4MB/16B=250K次才能保證沒有任何數(shù)據(jù)喪失。因此,每秒用于查詢的時(shí)鐘周期數(shù)
37、為250K400=100M,這占整個(gè)PE時(shí)鐘周期數(shù)為 100M /(500106)=20%。 假設(shè)使用中斷驅(qū)動(dòng)I/O,傳送速率應(yīng)到達(dá)4MB/16B=250K次中斷的速度,才能保證沒有任何數(shù)據(jù)喪失。設(shè)每次開銷(包括中斷響應(yīng)和中斷處理的時(shí)間)為500個(gè)時(shí)鐘周期。如果硬盤僅占用PE5%的時(shí)間進(jìn)行傳送,那么,PE用在數(shù)據(jù)傳送上所花的時(shí)間百分比是多少?47 每秒用于中斷的周期數(shù)為250K500=125106,在一次傳輸中所消耗的PE時(shí)間的百分比為125106 /(500106)= 25%。假定硬盤僅用其中5%的時(shí)間來傳送數(shù)據(jù),那么PE消耗的平均占用率為25%5%=1.25%。 由上面計(jì)算可知,在硬盤傳送
38、數(shù)據(jù)時(shí),PE仍要花費(fèi)多達(dá)25%的時(shí)間為硬盤效勞,使PE效率下降至75%。 例:下面是采用程序控制I/O方式從磁盤上輸出一組數(shù)據(jù)的控制程序,設(shè)主機(jī)執(zhí)行傳送、 測(cè)試、轉(zhuǎn)移及輸入/輸出指令的平均速度為100萬條/秒,問:從磁盤上讀出相鄰兩 個(gè)數(shù)據(jù)的最短允許時(shí)間間隔為多少?如果太短會(huì)發(fā)生什么問題? LOOP: INC STR ;啟動(dòng)所選設(shè)備。 Wait: TSTB STR ;測(cè)試狀態(tài)存放器。 BPL Wait ;沒準(zhǔn)備好那么繼續(xù)測(cè)試。 MOV (R1)+,DBR ;準(zhǔn)備好,那么主存緩沖區(qū)數(shù)據(jù) 送接口,而后地址增值。 DEC R0 ;傳送數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器減1。 BNE LOOP ;結(jié)果0,那么準(zhǔn)備下一個(gè)數(shù)
39、 據(jù)繼續(xù)傳送。48解: 由100萬條/秒指令知每條指令執(zhí)行時(shí)間為1s,該項(xiàng)循環(huán)為6條 指令,因此讀相鄰兩個(gè)數(shù)據(jù)的間隔最少為6 s,否那么讀盤時(shí)將會(huì) 喪失數(shù)據(jù)。499.5 DMA方式及其接口 無論程序查詢方式還是程序中斷方式,其主要工作都是CPU執(zhí)行程序完成的,這須要花費(fèi)時(shí)間,因此不適應(yīng)高速外設(shè)與主機(jī)的信息交換。 DMA方式是在外設(shè)和MM之間開辟一條“直接數(shù)據(jù)通道,在不需要CPU干預(yù)也不需要軟件介入的情況下在外設(shè)和MM之間進(jìn)行高速數(shù)據(jù)傳送方式。在DMA傳送方式中,對(duì)數(shù)據(jù)傳送過程進(jìn)行控制的硬件稱為DMAC。 當(dāng)外設(shè)須要進(jìn)行數(shù)據(jù)傳送時(shí),通過DMAC向CPU發(fā)DMA傳送請(qǐng)求,CPU響應(yīng)之后將讓出系統(tǒng)B
40、US,由DMAC接管BUS進(jìn)行數(shù)據(jù)傳送。 用DMA方式進(jìn)行高速設(shè)備的I/O操作中,有些環(huán)節(jié)是用程序查詢和中斷方式完成的。9.4.1 DMA方式的特點(diǎn)與應(yīng)用場(chǎng)合: 它使MM與CPU的固定聯(lián)系脫鉤, MM既可被CPU訪問,也可被外設(shè)訪問。 50 在數(shù)據(jù)塊傳送時(shí),MM地址確實(shí)定、傳送數(shù)據(jù)的計(jì)數(shù)等都由硬件電路直接實(shí)現(xiàn)。 在MM中要開辟專用緩沖區(qū),用時(shí)供給和接收外設(shè)的數(shù)據(jù)。 DMA傳送速度快,CPU和外設(shè)并行工作,提高了工作效率。 DMA在傳送開始前要通過程序進(jìn)行預(yù)處理,結(jié)束后要通過中斷方式后處理。 DMA和中斷的區(qū)別: 中斷方式是程序切換,需要保護(hù)和恢復(fù)現(xiàn)場(chǎng);而DMA除了開始和結(jié)束時(shí),不占用CPU的任
41、何資源。 中斷請(qǐng)求的響應(yīng)只能發(fā)生在每一條指令的完成時(shí);對(duì)DMA請(qǐng)求響應(yīng)可以發(fā)生在每個(gè)機(jī)器周期結(jié)束時(shí)。51 中斷傳送過程需要CPU干預(yù);而DMA傳送過程不需要CPU干預(yù),傳送速率非常高,適合于高速外設(shè)的成組數(shù)據(jù)傳送。 DMA請(qǐng)求BUS的優(yōu)級(jí)高于CPU;除斷電等特殊情況外,一般中斷優(yōu)先級(jí)低于CPU。 中斷具有對(duì)異常事件的處理能力;而DMA方式僅局限于完成傳送信息塊的I/O操作。9.4.2 DMA傳送方式 CPU停止法(成組傳送) CPU交出BUS控制權(quán),停止訪問MM,直到DMA傳送一塊數(shù)據(jù)結(jié)束。 周期挪用(竊取,單字傳送) 由DMAC挪用一個(gè)MM 周期來訪問MM,傳送一個(gè)數(shù)據(jù)后立即釋放BUS。 交
42、替分時(shí)訪問 以上三種方式見圖。52圖9-21 DMA傳送方式 53 圖9.21(a)中,DMA訪存時(shí),CPU根本上處于停止?fàn)顟B(tài),使CPU工作受影響,MM周期沒有得到充分利用。但這種方法控制簡(jiǎn)單,在傳輸率很高的外設(shè)實(shí)現(xiàn)成組傳送時(shí)比較適用。彌補(bǔ)CPU停止法的缺點(diǎn)的做法有兩個(gè): 在DMA接口中引入緩沖器 在DMA接口中采用一個(gè)小容量的半導(dǎo)存儲(chǔ)器,使I/O設(shè)備先和小容量存儲(chǔ)器交換數(shù)據(jù),然后再使用BUS由小容量存儲(chǔ)器與MM進(jìn)行交換數(shù)據(jù),以減少DMA傳送數(shù)據(jù)時(shí)占用BUS的時(shí)間,也就減少了CPU的等待時(shí)間。 采用周期挪用法 I/O設(shè)備要求進(jìn)行DMA傳送時(shí)可能會(huì)遇到以下三種情況: CPU不需要訪問MM 例CP
43、U正在執(zhí)行乘法運(yùn)算時(shí),不訪問MM,可以進(jìn)行DMA傳送不會(huì)與CPU發(fā)生沖突。 CPU正在訪問MM 必須等到存儲(chǔ)周期結(jié)束。 CPU也同時(shí)訪問MM DMA的BUS優(yōu)先權(quán)比CPU高。549.4.3 DMA接口的結(jié)構(gòu)和功能 DMA傳送數(shù)據(jù)過程是由DMA接口的控制邏輯完成,一般把DMA接口中控制傳送的硬件邏輯稱為DMA控制器 (DMAC)。當(dāng)CPU需要讀寫I/O時(shí),它就把要把傳送的數(shù)據(jù)的個(gè)數(shù)、數(shù)據(jù)塊在MM的首址、數(shù)據(jù)傳送的方向(是讀還是寫)、設(shè)備的地址等參數(shù)送DMAC,然后發(fā)送一個(gè)命令給DMA接口,啟動(dòng)外設(shè)進(jìn)行數(shù)據(jù)傳送準(zhǔn)備工作。在這些工作完成后,CPU繼續(xù)進(jìn)行其他工作,而I/O設(shè)備和MM交換數(shù)據(jù)的事情就交
44、給了DMAC。圖給出了 DMA 接口的典型結(jié)構(gòu)。9.4.4 DMAC的組成 存放器 MAR: 設(shè)備地址存放器(DAR) :該存放器用于存放I/O設(shè)備的設(shè)備碼,或者表示設(shè)備接口控制器上數(shù)據(jù)緩沖器的地址信息。 傳輸量計(jì)數(shù)器(WC): 控制與狀態(tài)存放器(CSR): 數(shù)據(jù)緩沖存放器(DBR):55 DMA控制邏輯 DMA控制邏輯負(fù)責(zé)完成DMA的預(yù)處理(初始化各類存放器)、接收設(shè)備控制器送來的DMA請(qǐng)求信號(hào)、向設(shè)備控制器答復(fù)DMA允許(應(yīng)答)信號(hào)、向系統(tǒng)申請(qǐng)總線以及控制總線實(shí)現(xiàn)DMA傳輸控制等工作。 中斷控制邏輯 數(shù)據(jù)線、地址線和控制信號(hào)線圖9-22 DMAC框圖569.4.5 DMA控制方式的數(shù)據(jù)傳送
45、過程 DMA控制方式下的數(shù)據(jù)傳送過程可分為三個(gè)階段:圖9-23所示。 DMA傳送前的預(yù)處理 數(shù)據(jù)傳送 假設(shè)為輸入數(shù)據(jù) 從輸入設(shè)備接口控制器的數(shù)據(jù)緩沖存放器中讀入一個(gè)字到DMAC的數(shù)據(jù)緩沖存放器(DBR)中。如I/O設(shè)備是面向字符的,也就是一次讀入的數(shù)據(jù)為一個(gè)字節(jié),那么需將兩個(gè)字節(jié)的數(shù)據(jù)組成一個(gè)字。 DMAC將主存地址存放器(MAR)中的主存地址送入主存的地址存放器。 DMAC將數(shù)據(jù)緩沖存放器(DBR)中的數(shù)據(jù)送入主存的數(shù)據(jù)存放器中,并發(fā)出存儲(chǔ)器寫操作信號(hào),將數(shù)據(jù)寫入主存單元。 將主存地址存放器(MAR)中的內(nèi)容加1或減1,以確定下一次交換數(shù)據(jù)的內(nèi)存單元的地址。將傳輸量計(jì)數(shù)器(WC)的內(nèi)容加1。
46、 判斷傳輸量計(jì)數(shù)器(WC)是否為溢出(高位有進(jìn)位)狀態(tài),假設(shè)不是,說明還有數(shù)據(jù)需要傳送,準(zhǔn)備下一字的輸入。假設(shè)傳輸量計(jì)數(shù)器57(WC)為溢出狀態(tài),說明一組數(shù)據(jù)已傳送完畢,置DMA操作結(jié)束標(biāo)志并向CPU發(fā)中斷請(qǐng)求。 假設(shè)為輸出數(shù)據(jù) DMAC將MAR的地址送入MAR。 DMAC發(fā)出存儲(chǔ)器讀操作信號(hào),以啟動(dòng)主存的讀操作,將對(duì)應(yīng)單元的內(nèi)容讀入主存的數(shù)據(jù)存放器中。 將主存數(shù)據(jù)存放器的內(nèi)容送到DMAC的數(shù)據(jù)緩沖存放器(DBR)中。 將數(shù)據(jù)緩沖存放器(DBR)的內(nèi)容送到輸出設(shè)備控制器的DBR中,假設(shè)為字符設(shè)備,那么需將DBR內(nèi)存放的字分解成字符后再輸出。 將MAR中的內(nèi)容+1或-1,以確定下一次交換數(shù)據(jù)的內(nèi)
47、存單元的地址。將傳輸量計(jì)數(shù)器(WC)的內(nèi)容+1。 判斷傳輸計(jì)數(shù)器(WC)是否為溢出(高位有進(jìn)位)狀態(tài),假設(shè)不是,說明還有數(shù)據(jù)需要傳送,準(zhǔn)備下一字的輸出。假設(shè)傳輸計(jì)數(shù)器(WC)為溢出狀態(tài),說明一組數(shù)據(jù)已傳送完畢,置DMA操作結(jié)束標(biāo)志并向CPU發(fā)中斷請(qǐng)求。 DMA結(jié)束處理58圖9-23 DMA控制方式下的數(shù)據(jù)傳送過程5759(STB)(HEQ)(HLDA)(DACK)(DRQ) DMAC的功能 接受外設(shè)的DMA請(qǐng)求,并向CPU發(fā)BUS請(qǐng)求。 當(dāng)CPU響應(yīng)此BUS請(qǐng)求,發(fā)出BUS響應(yīng)信號(hào)后,接管對(duì)BUS的控制,進(jìn)入DMA操作周期; 確定傳送數(shù)據(jù)的MM單元地址及傳送長(zhǎng)度,并能自動(dòng)修改MM地址計(jì)數(shù)值和傳
48、送數(shù)據(jù)計(jì)數(shù)值; 規(guī)定數(shù)據(jù)MM與外設(shè)之間的傳送方向,發(fā)出R/W或其他控制信號(hào),并執(zhí)行數(shù)據(jù)傳送的操作; 能確定傳送數(shù)據(jù)的字節(jié)個(gè)數(shù)。 60 向CPU報(bào)告DMA操作結(jié)束,引起一次DMA中斷,進(jìn)行數(shù)據(jù)校驗(yàn)等一些后處理。 例:設(shè)PE周期為500MHz,硬盤以4字塊傳輸,速率為 4MB/s,假定沒有任何數(shù)據(jù)傳輸被錯(cuò)過。DMA初始化時(shí)花費(fèi)了1000個(gè)時(shí)鐘周期,DMA中斷完成后的中斷處理需要花費(fèi)500個(gè)時(shí)鐘周期。 如果從硬盤發(fā)出的平均每次傳輸量是8KB,硬盤進(jìn)行傳送時(shí)間占100%(即硬盤一直在進(jìn)行讀寫,并傳輸數(shù)據(jù)),那么具有500MHz的PE在硬盤I/O操作上的花銷是多少? 解:每個(gè)DMA傳送耗時(shí)=8KB/(4
49、MB/s)=2ms,硬盤一直在進(jìn)行讀寫數(shù)據(jù)的話,PE每秒鐘將有103次DMA傳送。 因此,一秒鐘內(nèi)CPU花在DMA傳送上的開銷 = 103 (1000+500) =750 103 個(gè)周期來為硬盤初始化和DMA結(jié)束后的操作。所以,在硬盤I/O操作上PE花費(fèi)的時(shí)間占 =750103 /(500106)=0.15%619.6 Channel和I/O處理器方式 概念 通道控制方式與DMA方式的區(qū)別 兩者主要區(qū)別如下: DMAC是通過專門設(shè)計(jì)的硬件控制邏輯來實(shí)現(xiàn)對(duì)數(shù)據(jù)傳送的控制;而通道那么是一個(gè)具有特殊功能的處理器,它具有獨(dú)立指令和程序,通過執(zhí)行通道程序來實(shí)現(xiàn)對(duì)數(shù)據(jù)傳送的控制,故通道具有更強(qiáng)的獨(dú)立處理數(shù)
50、據(jù)I/O的功能。 DMAC只能控制一臺(tái)或少數(shù)幾臺(tái)的同類的設(shè)備;而一個(gè)通道那么可以同時(shí)控制多臺(tái)同類或不同類的設(shè)備。 通道的功能 具有通道的計(jì)算機(jī),從邏輯結(jié)構(gòu)上講具有四級(jí)連接: 主機(jī)通道設(shè)備控制器外設(shè)。62 CPU對(duì)CH的控制通過 以下兩個(gè)途徑: 執(zhí)行I/O指令(這時(shí)管態(tài)指令)。當(dāng)需要進(jìn)行I/O操作時(shí),CPU按約定的格式準(zhǔn)備好指令和數(shù)據(jù),編制好CH程序,然后通過執(zhí)行I/O指令啟動(dòng)CH。 處理來自CH的中斷請(qǐng)求。 通道大致應(yīng)有以下幾個(gè)方面的功能: 接受CPU的I/O指令,按指令要求與指定的外設(shè)進(jìn)行聯(lián)系。 從主存取出屬于該通道程序的通道指令,經(jīng)譯碼向設(shè)備控制器和設(shè)備發(fā)各種命令。 實(shí)施主存與各外設(shè)間的數(shù)
51、據(jù)傳送,如為主存或外設(shè)裝配和折卸信息,提供數(shù)據(jù)中間緩存以及指示數(shù)據(jù)在主存地址和傳送的數(shù)據(jù)量。 從外設(shè)獲取設(shè)備的狀態(tài)信息,形成并保存通道本身的狀態(tài)信息,根據(jù)要求將這些信息送到主存的指定單元,供CPU使用。 將外設(shè)的中斷請(qǐng)求和通道本身的中斷請(qǐng)求(屬于I/O請(qǐng)求)及時(shí)報(bào)告給CPU。 設(shè)備控制器的功能 Channel通過通道程序控制設(shè)備控制器進(jìn)行數(shù)據(jù)傳送操作,并以63通道狀態(tài)字(CSW)來接收設(shè)備控制器反響的外設(shè)狀態(tài)。因此,設(shè)備控制器就是通道對(duì)外部設(shè)備實(shí)現(xiàn)傳送控制的執(zhí)行機(jī)構(gòu)。 設(shè)備控制器的具體任務(wù)如下: 從通道接收控制信號(hào),控制外設(shè)完成所要求的操作。 向通道反響外部設(shè)備的狀態(tài)。 將外部設(shè)備的各種不同信
52、號(hào)轉(zhuǎn)換成通道能識(shí)別的標(biāo)準(zhǔn)信號(hào)。 通道類型 按照通道獨(dú)立于主機(jī)的程度,可分為結(jié)合型通道和獨(dú)立型通道。 按照I/O信息傳送方式分三種類型: 字節(jié)多路通道 以字節(jié)交叉方式傳送信息。一個(gè)字節(jié)多路通道包括多個(gè)按字節(jié)方式傳送信息的子通道。每個(gè)子通道效勞于一個(gè)設(shè)備控制器,每個(gè)子通道都可以并行工作。但是,所有子通道的控制局部是公共的,各個(gè)子通道分時(shí)使用。其傳送方式見以下圖。64 選擇通道 又稱高速通道,在一段時(shí)間內(nèi),只能選擇一臺(tái)設(shè)備進(jìn)行數(shù)據(jù)傳送,此時(shí)該設(shè)備獨(dú)占整個(gè)通道。因此,該通道一次只能執(zhí)行一個(gè)通道程序,只有當(dāng)它與主存交換完信息后,才能再選擇另一臺(tái)外設(shè)并執(zhí)行該設(shè)備的通道程序。其傳送方式見右圖。子通道1子通道
53、2子通道365 數(shù)組多路通道 是將字節(jié)多路通道和選擇通道的特點(diǎn)結(jié)合起來的一種通道,根本思想是:當(dāng)某個(gè)設(shè)備進(jìn)行數(shù)據(jù)傳送時(shí),通道只為這個(gè)設(shè)備效勞,當(dāng)該設(shè)備在執(zhí)行輔助操作時(shí),通道暫時(shí)斷開與這個(gè)設(shè)備的連接,掛起該通道程序,去為其他設(shè)備效勞。 數(shù)組多路通道有多個(gè)子通道,既可以像字節(jié)多路通道那樣執(zhí)行多路通道程序,實(shí)現(xiàn)所有子通道分時(shí)共享,又可以用選擇通道那樣的方式成組地傳送數(shù)據(jù);既有并行操作的能力,又具有很高的數(shù)據(jù)傳送速率,使得通道效率充分得到發(fā)揮。通過把多臺(tái)高速設(shè)備的輔助操作時(shí)間重疊起來,輪流為它們傳送定長(zhǎng)的數(shù)據(jù)塊,實(shí)現(xiàn)多臺(tái)高速外設(shè)并行工作。 三種通道組織在一起,可配置假設(shè)干臺(tái)不同種類、不同速度的I/O設(shè)
54、備,使計(jì)算機(jī)的I/O組織更合理、功能更完善、管理更方便。以下圖為IBM4300的通道組織結(jié)構(gòu)。6667圖9-26 通道的邏輯框圖68 通道程序 通道結(jié)構(gòu)計(jì)算機(jī)中的I/O指令 CPU是通過執(zhí)行I/O指令以及來自通道的中斷,來實(shí)現(xiàn)對(duì)通道的管理的。 CPU運(yùn)行操作系統(tǒng)管理程序時(shí)的狀態(tài)稱為管態(tài),具有通道結(jié)構(gòu)的計(jì)算機(jī)中,I/O指令都是管態(tài)指令。在采用通道結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)中,與輸入/輸出有關(guān)的指令分為兩級(jí): CPU執(zhí)行的I/O指令 采用通道結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)中,這種I/O指令比較簡(jiǎn)單,它并不直接控制具體的I/O操作,只是負(fù)責(zé)通道的啟動(dòng)和停止,查詢通道和設(shè)備的狀態(tài),控制通道去完成I/O操作。 如IBM4300
55、中主要有以下幾條I/O指令,用于對(duì)通道和設(shè)備進(jìn)行管理: SIO:?jiǎn)?dòng)I/O指令。 HIO:停止I/O指令。 TIO:測(cè)試I/O指令。 TCH:測(cè)試通道狀態(tài)指令。 69 通道執(zhí)行的通道指令 通道指令也就是CCW,用它來編制通道程序,并由管理程序存放在主存的任何地方。在主CPU啟動(dòng)指定通道以后,通道將執(zhí)行通道程序來實(shí)現(xiàn)具體的I/O操作,直到組成程序的全部CCW執(zhí)行完畢時(shí),這次I/O傳送就算完成了。 通道指令格式簡(jiǎn)單,功能專一,一般帶有很強(qiáng)的面向外設(shè)的特征。 通道指令格式 以IBM4300的通道指令格式為例,見以下圖。 這是一個(gè)雙字長(zhǎng)(64位)的指令,共分5個(gè)字段。 命令碼70 數(shù)據(jù)地址 通道指令字中的831位給出本次I/O傳送操作(讀、寫、反讀)時(shí)主存緩沖區(qū)的首地址。傳送過程中,每傳送一個(gè)字或字節(jié),數(shù)據(jù)地址修改一次。 傳送字節(jié)數(shù) 通道指令字中的4863位給出本次I/O傳送數(shù)據(jù)塊的長(zhǎng)度,通常以字節(jié)為單位。傳送過程中,每傳送一個(gè)字節(jié),計(jì)數(shù)值減“1,或是計(jì)數(shù)值的補(bǔ)碼加“1,直到計(jì)數(shù)值全為“0時(shí)為止。 標(biāo)志碼通道指令
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度員工因公外出免責(zé)及責(zé)任限制協(xié)議
- 二零二五年度高空電力線路作業(yè)勞務(wù)合同
- 足療店二零二五年度品牌使用權(quán)及資產(chǎn)轉(zhuǎn)讓合同
- 二零二五年度房產(chǎn)抵押合同:房產(chǎn)抵押擔(dān)保合同
- 二零二五年度委托代理農(nóng)村宅基地買賣協(xié)議
- 二零二五年度交通行業(yè)職工勞動(dòng)合同終止協(xié)議及安置方案
- 二零二五年度前臺(tái)聘用合同雙篇-金融企業(yè)前臺(tái)人員保密及競(jìng)業(yè)限制合同
- 二零二五年度正常勞動(dòng)合同續(xù)簽及試用期規(guī)范操作指導(dǎo)合同
- 二零二五年度企事業(yè)單位保潔員勞動(dòng)合同示范
- 2025年度水電工程咨詢、設(shè)計(jì)、施工及驗(yàn)收合同
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- (完整版)考研英美文學(xué)名詞解釋
- 第3章MAC協(xié)議
- 中小學(xué)基本辦學(xué)條件標(biāo)準(zhǔn)(建設(shè)用地校舍建設(shè)標(biāo)準(zhǔn))
- 《醫(yī)院感染法律法規(guī)》最新PPT課件
- 交管12123駕照學(xué)法減分題庫及答案共155題(完整版)
- word公章模板
- 中西醫(yī)結(jié)合腫瘤學(xué)試卷(含答案)
- 制衣常識(shí)中英對(duì)照精講
- 頸椎病先兆頸椎病的保養(yǎng)及頸椎枕選擇原則
- 集團(tuán)公司財(cái)務(wù)管理內(nèi)部交易管理辦法,
評(píng)論
0/150
提交評(píng)論