《計算機原理與匯編語言程序設(shè)計》課件第10章_第1頁
《計算機原理與匯編語言程序設(shè)計》課件第10章_第2頁
《計算機原理與匯編語言程序設(shè)計》課件第10章_第3頁
《計算機原理與匯編語言程序設(shè)計》課件第10章_第4頁
《計算機原理與匯編語言程序設(shè)計》課件第10章_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章輸入/輸出系統(tǒng)10.1概述10.2程序查詢傳送方式10.3程序中斷傳送方式10.48086CPU的中斷10.5直接存儲器存取(DMA)方式10.6通道控制方式習題

10.1概述計算機與人之間的交流是通過輸入/輸出(I/O)設(shè)備來實現(xiàn)的。輸入/輸出設(shè)備也被稱為外部設(shè)備(外設(shè)),是計算機系統(tǒng)的一個重要組成部分。在計算機系統(tǒng)中,常用的外設(shè)有鍵盤、鼠標、打印機、顯示器、掃描儀等,還有一些其他的專用設(shè)備。計算機中的內(nèi)存和CPU都是半導(dǎo)體器件,工作原理和速度相當,所以它們之間可以直接相連。而外部設(shè)備則種類繁多,各類外部設(shè)備不僅結(jié)構(gòu)和工作原理不同,而且與主機的連接方式也可能完全不同。為了方便地將主機與各種外設(shè)連接起來,需要在CPU與外設(shè)之間使用一個特殊的連接電路作為CPU與外設(shè)交換信息的轉(zhuǎn)換器,稱為輸入/輸出接口(I/O接口),簡稱接口。主機與外設(shè)之間存在以下主要差異:

(1)?CPU和I/O設(shè)備所采用的數(shù)據(jù)格式、傳送方式不一樣。CPU處理的是數(shù)字信息,外設(shè)處理的信息有數(shù)字信號、模擬信號、開關(guān)信號、電壓信號或電流信號等。CPU使用的是并行數(shù)據(jù),外設(shè)使用的既有串行數(shù)據(jù)也有并行數(shù)據(jù)。

(2)?CPU和I/O設(shè)備信號傳輸處理的速度不匹配。CPU是高速設(shè)備,外設(shè)有的速度很慢,有的速度很快,不同的外圍設(shè)備處理信息的速度相差懸殊。

(3)?CPU和I/O設(shè)備的工作時序不同。CPU和I/O設(shè)備沒有使用統(tǒng)一的時序系統(tǒng),CPU與外設(shè)兩者的信號線不兼容,在信號線功能定義、邏輯定義和時序關(guān)系上都不一致。

(4)?CPU和I/O設(shè)備的電器特性(如電平的極性和電平的高低等)有差別。設(shè)置I/O接口的主要目的就是解決主機和外設(shè)之間的這些差異:I/O接口一方面應(yīng)該負責接收、轉(zhuǎn)換、解釋并執(zhí)行CPU發(fā)來的命令,另一方面應(yīng)能將外設(shè)的狀態(tài)或請求傳送給CPU,從而完成CPU與外設(shè)之間的數(shù)據(jù)傳輸。輸入/輸出系統(tǒng)通常包括輸入/輸出設(shè)備、輸入/輸出接口和同輸入/輸出操作有關(guān)的軟硬件。10.1.1接口的功能接口電路是計算機系統(tǒng)的重要組成部分,由于外設(shè)不同,接口電路的功能也不一樣,一般接口電路應(yīng)具有以下功能。

1.數(shù)據(jù)緩沖功能外部設(shè)備種類繁多,速度不一,與CPU速度相差很大,可通過接口實現(xiàn)數(shù)據(jù)緩沖,達到速度匹配。接口電路中一般都設(shè)置有數(shù)據(jù)寄存器或鎖存器數(shù)據(jù)口,以解決高速的主機與低速的外設(shè)之間的速度匹配問題,避免因主機與外設(shè)的速度不匹配而丟失數(shù)據(jù)。

2.通信聯(lián)絡(luò)、控制功能外部設(shè)備要把工作狀態(tài)告知CPU,可通過接口提供外設(shè)的狀態(tài)信息,供CPU查詢;CPU要對外設(shè)進行控制操作,可通過接口送出控制命令。接口中一般都設(shè)置狀態(tài)寄存器,稱“狀態(tài)口”。狀態(tài)信號以狀態(tài)代碼形式存放在接口電路的狀態(tài)寄存器中。CPU從狀態(tài)口讀取狀態(tài)信息,供CPU作出判斷與處理。接口電路在執(zhí)行命令之前、執(zhí)行命令過程中和執(zhí)行命令之后,外部設(shè)備及接口電路都會有一些情況發(fā)生,包括正常工作狀態(tài)和故障狀態(tài)。

CPU對外設(shè)的控制命令一般以代碼形式輸出到接口電路的控制端口,接口電路對命令代碼進行識別、分析,分解成若干控制信號,傳送到I/O設(shè)備,并產(chǎn)生相應(yīng)的具體操作。

3.地址譯碼和端口讀寫功能微機系統(tǒng)中常有多個外設(shè),而CPU在任一時刻只能與一個端口交換信息,因此需要通過接口的地址譯碼電路對端口進行尋址。

4.數(shù)據(jù)寬度與數(shù)據(jù)格式轉(zhuǎn)換功能外設(shè)所提供的數(shù)據(jù)、狀態(tài)和控制信號格式可能與計算機的不同,通過接口可以實現(xiàn)外設(shè)與計算機之間各種數(shù)據(jù)格式的轉(zhuǎn)換。外設(shè)與微機的總線信號不兼容,所以接口電路應(yīng)進行相應(yīng)的信號轉(zhuǎn)換。

CPU所處理的是并行數(shù)據(jù),而有的外設(shè)只能處理串行數(shù)據(jù),接口應(yīng)具有數(shù)據(jù)“并串”、“串并”的轉(zhuǎn)換能力。

5.時序控制功能不同的外設(shè)工作時序不同,可通過接口電路滿足計算機和外設(shè)在時序方面的要求。

6.中斷管理功能

當外設(shè)需要及時得到CPU的服務(wù),特別是出現(xiàn)故障需要CPU立即處理時,就要求接口中設(shè)置中斷控制器,以便于CPU處理有關(guān)中斷事務(wù)(如中斷請求、中斷優(yōu)先級排隊、提供中斷向量等)。

7.可編程功能由于I/O接口電路大多由可編程接口芯片組成,因此就有可能在不改變硬件電路的情況下,只要修改接口驅(qū)動程序就可以改變接口的工作方式,提高了接口的靈活性和可擴充性,使接口向智能化方向發(fā)展。10.1.2I/O接口的基本結(jié)構(gòu)

I/O接口電路的典型結(jié)構(gòu)如圖10-1所示。外設(shè)接口是CPU與外設(shè)之間傳送信息的一個連接部件,因此其外部引腳應(yīng)分別滿足CPU的總線結(jié)構(gòu)和外設(shè)的總線結(jié)構(gòu)。從圖10-1中可以看到,接口電路面向CPU的一邊一般表現(xiàn)為三總線結(jié)構(gòu);接口電路面向外設(shè)的一邊隨外設(shè)的不同而提供不同的信號,一般把這些信號分為數(shù)據(jù)信號、狀態(tài)信號和控制信號三類。從I/O的接口可以看出,I/O接口中可能存在三種信息,即數(shù)據(jù)信息、狀態(tài)信息和控制信息。圖10-1I/O接口電路的典型結(jié)構(gòu)

1.數(shù)據(jù)信息數(shù)據(jù)信息是可以通過輸入/輸出設(shè)備送到計算機的原始數(shù)據(jù),也可以是經(jīng)過計算機處理后送往輸出設(shè)備的結(jié)果數(shù)據(jù)。

CPU與外設(shè)交換的數(shù)據(jù)信息將在I/O接口中被緩沖或鎖存。這些數(shù)據(jù)信息可能以以下幾種形式出現(xiàn):

(1)數(shù)字量:二進制數(shù)以及ASCII碼形式的數(shù)據(jù)信息。

(2)開關(guān)量:用“0”和“1”來表示兩種狀態(tài),如開關(guān)的通/斷、電機的轉(zhuǎn)/停、閥門的開/關(guān)等。

(3)模擬量:模擬的電壓、電流或者非電量。一般接口會對電模擬量進行A/D或D/A轉(zhuǎn)換后再完成CPU與外設(shè)之間的數(shù)據(jù)傳送。

2.狀態(tài)信息

CPU在傳送數(shù)據(jù)信息之前,經(jīng)常需要先了解外設(shè)當前的狀態(tài)。如輸入設(shè)備的數(shù)據(jù)是否準備好、輸出設(shè)備是否忙等。用于表征外設(shè)工作狀態(tài)的信息就叫做狀態(tài)信息,它總是通過I/O接口輸入給CPU。狀態(tài)信息的長度不定,可能是1個或幾個位;含義也隨外設(shè)的不同而不同。常見的狀態(tài)信息用來表示數(shù)據(jù)是否準備好、設(shè)備是否忙等。

3.控制信息控制信息是由CPU發(fā)出的,用于控制外設(shè)的工作,比如外設(shè)啟動和停止的命令、輸入/輸出的控制、中斷的開放和禁止等??刂菩畔⒖偸怯蒀PU通過接口發(fā)出。數(shù)據(jù)信息、狀態(tài)信息和控制信息通常都是以數(shù)據(jù)形式通過數(shù)據(jù)總線同CPU進行交換的。這些信息分別存放在外設(shè)接口的不同類型的寄存器中。CPU同外設(shè)之間的信息傳送實質(zhì)上是對這些寄存器進行“讀”或“寫”操作。接口中這些可以由CPU進行讀或?qū)懙募拇嫫鞅环Q為“端口”(Port)。按存放信息的類型,這些端口可分為“數(shù)據(jù)口”、“狀態(tài)口”和“控制口”,分別存放數(shù)據(jù)信息、狀態(tài)信息和控制信息。在一個外設(shè)接口中往往需要有幾個端口才能滿足和協(xié)調(diào)外設(shè)工作的要求。CPU通過訪問這些端口來了解外設(shè)的狀態(tài),控制外設(shè)的工作,以及同外設(shè)之間進行數(shù)據(jù)傳輸。要特別注意的是,接口(Interface)和端口(Port)是兩個不同的概念。端口是指接口電路中的一些寄存器,這些寄存器分別用來存放數(shù)據(jù)信息、控制信息和狀態(tài)信息,相應(yīng)的就是數(shù)據(jù)端口、控制端口和狀態(tài)端口。若干個端口加上相應(yīng)的控制邏輯才能組成接口。CPU通過輸入指令從端口讀入信息,通過輸出指令可將信息寫入到端口中。10.1.3端口的編址方式

CPU對外設(shè)的訪問實質(zhì)上是對外設(shè)接口電路中相應(yīng)的端口進行訪問。I/O端口的編址方式有兩種:統(tǒng)一編址和獨立編址。

1.統(tǒng)一編址方式統(tǒng)一編址方式是指把端口寄存器當作存儲單元,將I/O端口和存儲單元統(tǒng)一安排地址,把I/O接口中的端口當作存儲器單元一樣進行訪問,不設(shè)置專門的I/O指令。存儲器與I/O設(shè)備的區(qū)別是所占用的地址空間不同,例如,可以把地址線最高位為“1”的地址空間作為I/O端口使用的地址。統(tǒng)一編址方式的優(yōu)點是:任何對存儲器數(shù)據(jù)進行操作的指令都可用于I/O端口的數(shù)據(jù)操作,不需要專用的I/O指令,從而使系統(tǒng)編程比較靈活;I/O端口的地址空間是內(nèi)存空間的一部分,這樣,I/O端口的地址空間可大可小,從而使外設(shè)的數(shù)目幾乎可以不受限制。統(tǒng)一編址方式的缺點是:I/O端口占用了內(nèi)存空間的一部分,顯然內(nèi)存空間必然減少,影響了系統(tǒng)內(nèi)存的容量;同時訪問I/O端口同訪問內(nèi)存一樣,由于訪問內(nèi)存時的地址長,指令的機器碼也長,執(zhí)行時間明顯增加。

2.獨立編址方式獨立編址方式是指將I/O端口和存儲單元分別處理,建立各自獨立的地址空間。主存地址空間和I/O端口地址空間是相互獨立、分開的,即I/O端口地址不占用存儲器地址空間。CPU設(shè)置專門的輸入/輸出指令(IN/OUT),通過這些指令中的地址來區(qū)分不同的外設(shè)。獨立編址方式的優(yōu)點是:I/O端口的地址碼較短,譯碼電路較簡單,存儲器同I/O端口的操作指令不同,程序比較清晰;I/O設(shè)備的端口地址空間與存儲器地址空間是完全分開、相互獨立的;存儲器和I/O端口的控制結(jié)構(gòu)相互獨立,可以分別設(shè)計。獨立編址方式的缺點是:需要有專用的I/O指令,而這些I/O指令的功能一般不如存儲器訪問指令豐富,所以程序設(shè)計的靈活性較差。10.1.4接口類型因為外設(shè)的種類繁多,所以對應(yīng)的接口也各不相同,可按以下不同方式分類。

(1)按數(shù)據(jù)傳送方式分類:有并行接口和串行接口兩類。并行接口是將一個字節(jié)(或一個字)的所有位同時傳送;串行接口是在設(shè)備與接口間一位一位傳送。由于接口與主機之間是按字節(jié)或字并行傳送的,因此對串行接口而言,其內(nèi)部還必須設(shè)有串—并及并—串轉(zhuǎn)換部分。

(2)按功能選擇的靈活性分類:有可編程接口和不可編程接口兩種??删幊探涌诘墓δ芗安僮鞣绞娇捎贸绦騺砀淖兓蜻x擇;不可編程接口不能由程序來改變其功能,但可通過連線邏輯來實現(xiàn)不同的功能。

(3)按通用性分類:有通用接口和專用接口兩類。通用接口可供多種外設(shè)使用;專用接口是為某類外設(shè)或某種用途專門設(shè)計的。

(4)按數(shù)據(jù)傳送的控制方式分類:有中斷接口和DMA接口兩類。中斷接口用于連接速度較慢的I/O設(shè)備,如顯示終端、鍵盤、打印機等?,F(xiàn)代計算機一般都采用程序中斷方式實現(xiàn)主機與I/O設(shè)備交換信息,所以都配有這類接口。DMA型接口用于連接高速I/O設(shè)備,如磁盤、磁帶等。10.1.5數(shù)據(jù)傳送方式計算機系統(tǒng)中主機與外設(shè)之間的數(shù)據(jù)傳輸方式稱為I/O方式或數(shù)據(jù)傳送方式,這實際上也就是指CPU和接口(端口)之間的信息傳送方式。計算機與外部設(shè)備交換信息是由CPU控制的。主機與外部設(shè)備之間的信息交換方式經(jīng)歷了由低級到高級、由簡單到復(fù)雜、由集中管理到各部分分散管理的發(fā)展過程,按其發(fā)展的先后次序和主機與外設(shè)并行工作的程度,可分成程序查詢傳送方式、程序中斷傳送方式、直接存儲器存取(DMA)方式和通道控制方式四種。下面幾節(jié)將分別介紹這四種數(shù)據(jù)傳送方式。10.2程序查詢傳送方式程序查詢傳送方式是一種程序直接控制方式,輸入和輸出完全是通過CPU執(zhí)行程序來完成的,這是主機與外設(shè)進行信息交換的最簡單的方式。由于CPU的工作速度遠遠高于外設(shè),當CPU與外部設(shè)備交換數(shù)據(jù)時,不能保證外部設(shè)備已經(jīng)準備好了數(shù)據(jù),因此,傳送數(shù)據(jù)之前CPU要先查詢外設(shè)的狀態(tài),在外部設(shè)備和數(shù)據(jù)端口都就緒時,才能進行數(shù)據(jù)傳送,這就是程序查詢傳送方式。采用程序查詢傳送方式傳送數(shù)據(jù)時,首先由主機通過指令啟動被選中的外設(shè)工作,之后主機將查詢這個外設(shè)的狀態(tài)位,看其是否準備就緒。若外設(shè)未準備就緒,主機將再次查詢。若外設(shè)已準備就緒,則執(zhí)行一次I/O操作。程序查詢傳送方式的接口電路中除了數(shù)據(jù)寄存器之外,還必須設(shè)置狀態(tài)寄存器,用來保存狀態(tài)信息。一般外設(shè)均可提供一些反映其狀態(tài)的信息,如對輸入設(shè)備來說,它能夠提供“準備好”(READY)信號,“READY”=?1表示輸入數(shù)據(jù)已準備好。輸出設(shè)備則提供“忙”(BUSY)信號,“BUSY”=?1表示當前時刻不能接收來自CPU的數(shù)據(jù),只有當“BUSY”=?0時,才表明它可以接收來自于CPU的輸出數(shù)據(jù)。圖10-2是程序查詢傳送方式的程序流程圖。設(shè)接口電路中狀態(tài)端口的地址為STATUS,數(shù)據(jù)端口的地址為DATA,狀態(tài)口的D7位作為BUSY狀態(tài),則CPU讀取輸入設(shè)備的數(shù)據(jù)可以通過執(zhí)行下列程序段實現(xiàn):圖10-2程序查詢傳送方式流程圖

TES:INAL,STATUS ;讀取狀態(tài)信息

TESTAL,80H ;測試數(shù)據(jù)是否準備好

JETES ;沒準備好,繼續(xù)測試

INAL,DATA;準備好,讀數(shù)據(jù)程序查詢傳送方式的優(yōu)點是接口硬件結(jié)構(gòu)比較簡單,但外設(shè)和主機不能同時工作,各外設(shè)之間也不能同時工作,主機與外部設(shè)備之間以及外部設(shè)備之間均處于串行工作狀態(tài)。當外設(shè)速度很慢時,CPU在等待外設(shè)就緒的過程中不能處理其他業(yè)務(wù),大量時間被消耗在測試等待中,使主機不能充分發(fā)揮效率,而且程序查詢傳送方式不能發(fā)現(xiàn)和處理預(yù)先無法估計的錯誤和異常情況。因此,這種方式僅適用于外設(shè)的數(shù)目不多,對I/O處理的實時要求不太高,CPU的操作任務(wù)比較單一,而且不是很忙的情況。目前很少使用程序查詢傳送方式。10.3程序中斷傳送方式在程序查詢傳送方式中,CPU要不斷測試外設(shè)狀態(tài)信息,直到外設(shè)就緒,CPU才能進行數(shù)據(jù)傳送,CPU的大部分工作時間被浪費在查詢外設(shè)的工作上,工作效率很低,而且CPU和外設(shè)、外設(shè)和外設(shè)之間的工作均是串行的。為了提高CPU的工作效率,CPU采用程序中斷傳送方式與外設(shè)交換數(shù)據(jù)。采用程序中斷傳送方式時,CPU啟動外設(shè)工作后不對外設(shè)的工作狀態(tài)進行測試,而是繼續(xù)執(zhí)行程序,只有當外設(shè)工作完成后主動向CPU提出中斷請求,CPU在滿足一定的條件下,暫停正在執(zhí)行的程序,轉(zhuǎn)入中斷服務(wù)程序為該設(shè)備服務(wù),在中斷處理程序中與外設(shè)交換數(shù)據(jù),這樣就能實現(xiàn)CPU和外設(shè)并行工作,大大提高了CPU的利用率。中斷系統(tǒng)是計算機實現(xiàn)中斷功能的軟、硬件總稱。一般在CPU中配置中斷機構(gòu),在外部設(shè)備接口中配置中斷控制器,在軟件上設(shè)計相應(yīng)的中斷服務(wù)程序。計算機系統(tǒng)引入中斷機制后,不但使CPU與外設(shè)(多個外設(shè))處于并行工作狀態(tài),還使CPU具備了實時控制能力和對緊急事件的處理能力。10.3.1中斷的基本概念所謂中斷,就是計算機執(zhí)行現(xiàn)行程序的過程中,發(fā)生特殊請求和異常情況時,CPU中止現(xiàn)行程序的運行,轉(zhuǎn)去執(zhí)行對特殊請求和異常情況處理的程序(中斷服務(wù)程序),處理完畢后,又返回到被中止的程序繼續(xù)執(zhí)行,我們把這一過程稱為中斷。中斷方式的原理示意圖如圖10-3所示。圖10-3中斷原理圖程序中斷過程與調(diào)用子程序極為相似,但它們有本質(zhì)的區(qū)別。首先,程序中斷是隨機發(fā)生的,而轉(zhuǎn)子程序是預(yù)先考慮好的;其次,子程序的執(zhí)行是主程序的調(diào)用,是為主程序服務(wù)的,而中斷程序與主程序的程序毫無關(guān)系;還有就是程序的切換方式不同,子程序是由調(diào)用指令給出目標地址,中斷是通過隱指令獲得中斷服務(wù)的入口地址。

1.中斷源任何引起中斷的事件統(tǒng)稱為中斷源,或者說中斷源是引起中斷的事件及發(fā)生中斷請求的來源。一般有以下幾種情況:

1)人為設(shè)置的中斷這種中斷也叫自愿中斷,是在程序中設(shè)置中斷指令,一旦機器執(zhí)行這種指令,便停止現(xiàn)行程序的執(zhí)行而轉(zhuǎn)入中斷處理。

2)計算機內(nèi)部產(chǎn)生的中斷如運算過程出現(xiàn)溢出、數(shù)據(jù)格式非法,數(shù)據(jù)傳送過程出現(xiàn)校驗錯,控制器遇到非法指令等,這些都屬于由程序設(shè)計不周而引起的中斷。

3)硬件故障引起的中斷硬件故障類型很多,如電源掉電、磁表面損壞等都屬硬件故障,這時要求CPU進行緊急處理。

4)?I/O設(shè)備產(chǎn)生的中斷

I/O設(shè)備被啟動后,要與主機進行數(shù)據(jù)交換時,向主機發(fā)出已做好接收或發(fā)送信息的中斷請求,CPU終止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去為外設(shè)傳送數(shù)據(jù)。每個I/O設(shè)備都能發(fā)出中斷請求。

5)為了調(diào)試程序而設(shè)置的中斷新的程序編制好后,必須經(jīng)過反復(fù)調(diào)試才能正確可靠地工作。在程序調(diào)試過程中,為了尋找錯誤的位置,往往要求在程序中設(shè)置斷點或使程序單步工作(一次只執(zhí)行一條指令)。這也要由中斷系統(tǒng)來實現(xiàn)。

2.中斷類型可以按照不同的方式對中斷進行分類。

1)按中斷處理方法分類

(1)程序中斷。主機響應(yīng)中斷請求后,通過執(zhí)行一段服務(wù)程序來處理有關(guān)的事宜,主要用于與中、慢速外設(shè)的數(shù)據(jù)傳送。

(2)簡單中斷。主機響應(yīng)中斷請求后,不執(zhí)行服務(wù)程序,無需CPU干預(yù),而是讓出一個或幾個主存周期供外設(shè)與主存交換信息。

2)按中斷源分類

(1)強迫中斷。強迫中斷是隨機產(chǎn)生的,不是程序預(yù)先安排好的。強迫中斷的產(chǎn)生有以下三個方面:①硬件故障:主要是電源故障、主存讀寫校驗錯等;②外中斷:是由外部設(shè)備引起的中斷;③程序故障:主要是在程序中出現(xiàn)了非法指令、發(fā)生溢出等。

(2)自愿中斷。自愿中斷又稱程序自中斷,不是隨機產(chǎn)生的中斷,是由程序中的指令產(chǎn)生的中斷,如軟件中斷指令等,是為了引出一段具有特定功能的程序。

3)按中斷源是否提供向量地址分類中斷的核心問題是解決主程序向中斷服務(wù)程序的轉(zhuǎn)移,也叫切換,所以,CPU如何在收到中斷申請后轉(zhuǎn)去中斷處理,關(guān)鍵是怎樣獲得中斷服務(wù)程序的入口地址(中斷向量)。

(1)向量中斷。CPU響應(yīng)中斷后,由中斷接口自動地將中斷向量通知CPU,根據(jù)向量CPU轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序,這種能夠產(chǎn)生中斷向量的中斷稱為向量中斷。

(2)非向量中斷。非向量中斷不能直接提供中斷服務(wù)程序的入口地址,而要采用軟件查詢找到服務(wù)程序入口地址。

4)按中斷請求的可屏蔽性分類

(1)不可屏蔽中斷。不可屏蔽中斷是指CPU不受中斷允許觸發(fā)器的限制,只要有申請CPU就必須無條件響應(yīng)。比如電源掉電這類比較緊急的中斷就不能被限制,一旦出現(xiàn),必須立即無條件地響應(yīng)。

(2)可屏蔽中斷??善帘沃袛嗍艿街袛嘣试S觸發(fā)器的控制,當中斷允許觸發(fā)器的狀態(tài)為“1”時,CPU可以接受中斷申請,稱為開中斷;否則,CPU不接受中斷申請,稱為關(guān)中斷。

5)按中斷是否有嵌套來分類

(1)單級中斷。單級中斷是指CPU在執(zhí)行中斷的過程中不允許被打斷服務(wù)程序,只有在本次中斷服務(wù)程序完成后,才能響應(yīng)新的中斷請求。

(2)多級中斷。多級中斷是指CPU在處理中斷的過程中,允許終止較低級別的中斷服務(wù)程序,轉(zhuǎn)去響應(yīng)優(yōu)先級別較高的中斷請求,執(zhí)行新的中斷服務(wù)程序。多級中斷又稱中斷嵌套。中斷技術(shù)的出現(xiàn),提供了一種以響應(yīng)外部異常事件而改變狀態(tài)流程的有效手段,它支持了多重程序的運行及多個用戶同時共享整個計算機資源,充分發(fā)揮了計算機的高速處理和實時處理能力,以及自動處理機內(nèi)部故障的能力。10.3.2中斷處理過程一個完整的中斷處理過程包括中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。

.中斷請求由中斷源向CPU發(fā)出的中斷申請稱為中斷請求。中斷源發(fā)出中斷請求要滿足兩個條件:

(1)外設(shè)工作已經(jīng)完成;

(2)該外設(shè)的中斷沒有被系統(tǒng)屏蔽。中斷過程是從中斷源發(fā)出中斷請求開始的。為了讓每個中斷源都能發(fā)出中斷請求信號,要為每一個中斷源設(shè)置一個觸發(fā)器,稱為中斷請求觸發(fā)器。當有中斷申請發(fā)生時,相應(yīng)的中斷請求觸發(fā)器置“1”,向CPU發(fā)出中斷申請,并一直保留這個狀態(tài)直到CPU響應(yīng)中斷,才將此中斷請求清除。中斷請求產(chǎn)生后,通過中斷請求線傳送給CPU,通常有單線中斷和多線中斷。單線中斷是指多個中斷源共用一根公共請求線。如圖10-4所示。多線中斷是指每個中斷源單獨設(shè)置中斷請求線,將中斷請求信號直接送往CPU,如圖10-5所示。

2.中斷判優(yōu)對于一個中斷系統(tǒng),在任一時刻,只能響應(yīng)一個中斷源的請求。當某時刻有多個中斷源同時提出中斷申請時,中斷系統(tǒng)必須按預(yù)先安排好的響應(yīng)次序予以響應(yīng),這個響應(yīng)次序就是優(yōu)先級(優(yōu)先權(quán))。各中斷源的響應(yīng)順序是根據(jù)中斷源的性質(zhì)和處理的輕重緩急來分配的。圖10-4單線中斷圖10-5多線中斷確定中斷優(yōu)先級的原則是,對那些不及時響應(yīng)就會造成嚴重后果的中斷源,設(shè)置最高的優(yōu)先級,而對可以延遲響應(yīng)和處理的中斷源,則設(shè)置較低的優(yōu)先級。一般來說,在各種類型的中斷請求中,故障引起的中斷優(yōu)先級最高;其次是簡單中斷及I/O中斷。而在I/O中斷中,高速外設(shè)的優(yōu)先級高于低速外設(shè)的優(yōu)先級,輸入設(shè)備的優(yōu)先級高于輸出設(shè)備的優(yōu)先級。I/O設(shè)備中斷請求的中斷判優(yōu)可用硬件實現(xiàn),也可用軟件實現(xiàn)。

1)硬件判優(yōu)采用硬件判優(yōu)電路實現(xiàn)中斷優(yōu)先級的判定可節(jié)省CPU時間,而且速度快,但是成本較高。根據(jù)中斷請求信號的傳送方式不同,有不同的優(yōu)先排隊電路,常見的方案有:獨立請求線的優(yōu)先排隊電路、公共請求線的優(yōu)先排隊電路等。這些排隊電路的共同特點是:優(yōu)先級別高的中斷請求將自動封鎖優(yōu)先級別低的中斷請求的處理。硬件排隊電路一旦設(shè)計連接好之后,將無法改變其優(yōu)先級別。獨立請求判優(yōu)線路如圖10-6(a)所示。各設(shè)備的中斷請求共用一根請求線來傳送,當CPU接到一個或幾個中斷請求后,發(fā)出中斷響應(yīng)信號INTA,它串行地依次連接所有中斷源,遇到提出中斷申請的中斷源時,就不再往下傳遞,表示CPU接受該設(shè)備的中斷申請,同時啟動向量地址編碼器,產(chǎn)生相應(yīng)的中斷向量,通過數(shù)據(jù)線傳送給CPU后,就可以轉(zhuǎn)入執(zhí)行對應(yīng)的中斷服務(wù)程序。這種線路也稱菊花鏈線路,連接在線路上的設(shè)備距CPU越近的優(yōu)先級就越高。多線請求判優(yōu)線路如圖10-6(b)所示。每一個設(shè)備都有各自的中斷請求線,將中斷請求信號傳送到CPU,在CPU內(nèi)設(shè)置有判優(yōu)電路,接受各中斷請求信號,并判斷各申請的優(yōu)先級。圖10-6中斷判優(yōu)線路

2)軟件判優(yōu)所謂軟件判優(yōu)法,就是用程序來判別優(yōu)先級,這是最簡單的中斷判優(yōu)方法。圖10-7給出了軟件判優(yōu)的流程圖。當CPU接到中斷請求信號后,就執(zhí)行查詢程序,逐個檢測中斷請求觸發(fā)器的狀態(tài)。檢測順序是按優(yōu)先級的大小排列的,最先檢測的中斷源優(yōu)先級最高,其次檢測的中斷源具有次高的優(yōu)先級,最后檢測的中斷源優(yōu)先級別就是最低的。軟件判優(yōu)方法簡單,可靈活地修改中斷源的優(yōu)先級別,但查詢、判優(yōu)全靠程序?qū)崿F(xiàn),這不但占用CPU的寶貴時間,而且判優(yōu)速度慢。圖10-7軟件判優(yōu)流程圖

3.中斷響應(yīng)及響應(yīng)條件

I/O設(shè)備提出中斷請求后,CPU中止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去為某個設(shè)備服務(wù)的過程,稱為中斷響應(yīng)。

1)中斷響應(yīng)的條件中斷響應(yīng)要滿足三個條件:

(1)中斷源有中斷請求。首先中斷源要發(fā)出中斷請求,同時CPU還要接收到這個中斷請求信號。

(2)?CPU允許接受中斷請求。CPU要設(shè)置在允許中斷狀態(tài),即開中斷。CPU內(nèi)部有一個中斷允許觸發(fā)器,只有當中斷允許觸發(fā)器的狀態(tài)為“1”時,CPU才可以接受中斷源的中斷請求;如果中斷允許觸發(fā)器的狀態(tài)為“0”,則CPU處于關(guān)中斷狀態(tài),這時即使中斷源有中斷請求,CPU也不響應(yīng)。

(3)現(xiàn)行指令結(jié)束。一般情況下,CPU在一條指令執(zhí)行完畢且沒有更緊迫的任務(wù)時才能響應(yīng)中斷請求。在指令執(zhí)行周期結(jié)束后,若有中斷,則CPU進入中斷周期;若無中斷,則CPU進入下一條指令的取指周期。

CPU之所以在指令周期結(jié)束后才能進入中斷處理,是因為CPU在指令周期結(jié)束時才安排中斷查詢。因此,只有在指令周期結(jié)束后CPU才能獲知哪個中斷源有請求。

2)中斷服務(wù)程序入口地址的尋找中斷請求具有隨機性,所以一旦中斷查詢發(fā)現(xiàn)有中斷申請,CPU應(yīng)立即響應(yīng),即終止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。但由于不同的中斷源對應(yīng)不同的中斷服務(wù)程序,因此準確地找到對應(yīng)的中斷服務(wù)程序的入口地址是實現(xiàn)中斷處理的核心問題。

CPU響應(yīng)中斷之后,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,這些操作是由硬件機構(gòu)直接形成中斷隱指令來實現(xiàn)的。中斷隱指令并不是指令系統(tǒng)中的一條真正的指令,它沒有操作碼,中斷隱指令是一種不允許、也不可能為用戶使用的特殊指令。在中斷隱指令中CPU完成兩個功能:

(1)保存原程序的斷點和程序狀態(tài)字;

(2)取出新的程序狀態(tài)字,轉(zhuǎn)向?qū)?yīng)的中斷服務(wù)程序。

4.中斷服務(wù)處理不同設(shè)備的中斷服務(wù)程序是不相同的,可它們的程序流程又是類似的,一般中斷服務(wù)程序的流程如圖10-8所示。圖10-8中斷處理過程

(1)關(guān)中斷。為了保護斷點和保護中斷現(xiàn)場的工作不被新的中斷源打斷,CPU在響應(yīng)了中斷請求后,系統(tǒng)會自動關(guān)閉中斷,即中斷允許觸發(fā)器被置“0”。

(2)保護斷點、保護現(xiàn)場。為了在處理完中斷后能正確地返回到原程序繼續(xù)執(zhí)行,CPU在響應(yīng)中斷前,要把當前程序計數(shù)器的內(nèi)容(斷點)以及通用寄存器和狀態(tài)寄存器的內(nèi)容(現(xiàn)場)保存起來。

(3)判別中斷源,轉(zhuǎn)入中斷服務(wù)程序。

(4)開中斷。因為CPU響應(yīng)中斷請求后,系統(tǒng)自動關(guān)閉了中斷,如果不“開中斷”,那么CPU就不能再響應(yīng)其他中斷源的中斷請求。計算機在處理中斷的過程中,有可能出現(xiàn)新的中斷請求,此時如果CPU暫?,F(xiàn)行的中斷服務(wù)程序,轉(zhuǎn)去處理新的中斷請求,這種現(xiàn)象叫做中斷嵌套,或叫做多重中斷。如果CPU對新的請求不予響應(yīng),待執(zhí)行完當前的服務(wù)程序后再響應(yīng),即為單重中斷。對于單重中斷,開中斷指令設(shè)置在最后“中斷返回”之前,這樣在整個中斷服務(wù)處理過程中,都不能再響應(yīng)其他中斷源的請求。而對于多重中斷,開中斷指令要放在“保護現(xiàn)場”之后。只有這樣,在中斷服務(wù)處理的過程中,若有級別更高的中斷源提出請求,CPU就可以響應(yīng),并終止現(xiàn)行的中斷服務(wù)程序,轉(zhuǎn)至新的中斷服務(wù)程序,這就是多重中斷。多重中斷過程見圖10-9。只有優(yōu)先級別較高的中斷源請求,才可以中斷比其級別低的中斷服務(wù)程序,同級或較低級的中斷源都不能產(chǎn)生中斷嵌套。圖10-9多重中斷

(5)執(zhí)行中斷服務(wù)程序。這是中斷服務(wù)程序的主體部分,不同的中斷請求源其中斷服務(wù)操作內(nèi)容是不同的。

(6)關(guān)中斷。為了在恢復(fù)現(xiàn)場和恢復(fù)斷點過程中不再接受其他的中斷申請,將中斷允許觸發(fā)器置“0”,把中斷關(guān)閉。

(7)恢復(fù)現(xiàn)場、恢復(fù)斷點。這是中斷服務(wù)程序的結(jié)束部分,在退出中斷服務(wù)程序前,恢復(fù)原來保存的斷點和現(xiàn)場,以便中斷處理結(jié)束后被中斷的程序能在原來現(xiàn)場狀況下恢復(fù)繼續(xù)執(zhí)行。

(8)開中斷。為了在本次中斷結(jié)束后,計算機能夠再次處理新中斷源的中斷申請,在中斷返回之前要開中斷。

5.中斷返回中斷服務(wù)程序的最后一條指令通常是一條中斷返回指令,使其返回到原程序的斷點處,繼續(xù)執(zhí)行原程序。

CPU在執(zhí)行中斷服務(wù)程序時,如果在保護斷點和保護現(xiàn)場后不“開中斷”,則對新的中斷請求將不予響應(yīng),這時的中斷就是單重中斷;倘若在保護斷點和保護現(xiàn)場后“開中斷”,這時就有發(fā)生多重中斷的可能。所以,多重中斷和單重中斷在中斷服務(wù)程序上略有不同。10.3.3中斷屏蔽技術(shù)當多個中斷源發(fā)出中斷請求時,CPU只能響應(yīng)一個中斷,為了更靈活地運用中斷,在計算機中采用了中斷屏蔽技術(shù)。屏蔽的意思是讓某種中斷不起作用,用中斷屏蔽技術(shù)可以有選擇地封鎖部分中斷。中斷屏蔽的具體方法如圖10-10所示,就是在中斷接口中設(shè)置一個中斷屏蔽觸發(fā)器IM。中斷源發(fā)出中斷請求之后,這個中斷請求并沒有被直接送到CPU中,而是在送往判優(yōu)電路之前,先受到中斷屏蔽觸發(fā)器的控制。通過指令將中斷屏蔽觸發(fā)器設(shè)置為“1”或“0”,可以有選擇地禁止或開放對應(yīng)中斷源的中斷申請。圖10-10中斷屏蔽線路采用中斷屏蔽技術(shù),可以動態(tài)地改變原設(shè)置的中斷優(yōu)先級別。如圖10-6(a)所示,硬件安排好的中斷優(yōu)先級一旦連接完成就不能隨便改變,對于一些級別比較低的中斷源,可能會長時間得不到CPU響應(yīng),這不利于外設(shè)的正常工作。因此,可以利用中斷屏蔽技術(shù),將高級中斷源的中斷屏蔽掉,這樣低級中斷源的中斷申請就能被響應(yīng)。實際應(yīng)用時,會將多個中斷屏蔽寄存器的狀態(tài)放在一個寄存器中,稱為屏蔽字,可以通過一條專門的指令送到屏蔽寄存器中。屏蔽字中不同位上的0和1,控制不同中斷源的中斷請求進入中斷判優(yōu)排隊線路中。中斷響應(yīng)次序是由硬件排隊電路決定的,無法改變。但是,中斷處理次序是可以由屏蔽碼來改變的,所以可以把屏蔽碼看成軟排隊器。10.48086CPU的中斷10.4.18086CPU中斷的分類

8086CPU的中斷分為兩大類:內(nèi)部中斷和外部中斷。

1.外部中斷外部中斷是由來自CPU外部的硬件電路產(chǎn)生的中斷,又稱硬件中斷。外部中斷分不可屏蔽中斷NMI和可屏蔽中斷INTR。

1)不可屏蔽中斷NMI該中斷請求不能通過軟件的方式進行屏蔽,一旦出現(xiàn)NMI中斷請求,CPU必須立即響應(yīng)。因此,把對系統(tǒng)運行有重大影響的中斷請求作為NMI中斷請求信號。比如掉電、奇偶校驗錯誤等中斷請求。

2)可屏蔽中斷INTR該中斷請求可以通過軟件的方式進行屏蔽。一旦出現(xiàn)可屏蔽中斷請求,CPU是否響應(yīng),取決于CPU中的中斷標志位IF。當IF?=?1時,CPU響應(yīng)中斷;當IF?=?0時,CPU不響應(yīng)中斷。IF的值可以通過軟件來設(shè)置。

2.內(nèi)部中斷內(nèi)部中斷是由于CPU內(nèi)部的原因產(chǎn)生的中斷,內(nèi)部中斷不受IF狀態(tài)位的影響。

1)除法錯中斷在除法運算時,若除法為0或商超出了寄存器所能表示的范圍,就產(chǎn)生一個類型碼為0的中斷。

2)單步中斷在使用DEBUG調(diào)試程序時,常常使用T命令單步執(zhí)行程序,這樣每執(zhí)行一條指令,就顯示出當前各個寄存器的值、每個狀態(tài)標志位的狀態(tài)以及下一條要執(zhí)行的指令。單步中斷是指在TF=1時,CPU每執(zhí)行一條指令,將自動產(chǎn)生一個類型碼為1的中斷。

3)斷點中斷斷點中斷是類型碼為3的中斷,與單步中斷一樣,主要用于程序調(diào)試。在程序中設(shè)置斷點,就是插入一條斷點指令I(lǐng)NT3,程序執(zhí)行到斷點時便產(chǎn)生中斷,顯示出當前各個寄存器的值、每個狀態(tài)標志位的狀態(tài)以及下一條要執(zhí)行的指令。

4)溢出中斷溢出中斷是類型碼為4的中斷。若程序在執(zhí)行某條指令時,OF?=?1,就產(chǎn)生溢出中斷。

5)軟中斷軟中斷是執(zhí)行軟中斷指令(INTn)發(fā)生的中斷。軟中斷中的n稱為中斷類型碼,n的取值范圍是0~FFH或0~255。

CPU在執(zhí)行INT指令時,就產(chǎn)生一個中斷,該中斷的中斷處理程序完成預(yù)設(shè)的功能。例如,DOS功能調(diào)用指令I(lǐng)NT21H就是軟中斷指令,中斷類型為21H。

3.中斷優(yōu)先級

8086CPU規(guī)定的各個中斷源的優(yōu)先級按由高到低分配如下:除法錯中斷、斷點中斷、溢出中斷、軟中斷、NMI、INTR、單步中斷。10.4.2中斷向量表

8086CPU最多可以有256個中斷源,用數(shù)據(jù)00H~FFH來表示,稱為中斷類型碼。256個中斷對應(yīng)有256個中斷服務(wù)程序的入口地址,將這些地址存放在內(nèi)存中,形成中斷向量表,表的每一項占用4個字節(jié)單元,其中低地址的2個單元存放中斷向量的偏移地址,高地址的2個單元存放中斷向量的段地址,這個向量表共需4?×?256?=?1024個字節(jié)單元,即1KB存儲空間,存放在內(nèi)存00000H~003FFH中。這個表建立了中斷類型碼與中斷向量之間的對應(yīng)關(guān)系,CPU響應(yīng)中斷后,通過中斷類型碼獲得中斷服務(wù)程序的入口地址,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。假如某中斷源使用的中斷類型碼是60H,則該中斷源對應(yīng)的中斷向量存放在向量表中的地址為60H?×?4?=?00180H,即從內(nèi)存00180H開始的4個連續(xù)單元中,存放了60H中斷的中斷向量,00180H字單元中存放中斷向量的偏移地址,00182H字單元中存放中斷向量的段地址。當CPU執(zhí)行軟中斷指令I(lǐng)NT60H時,自動將00180H字單元中的偏移地址取出賦給IP,將00182H字單元中的段地址取出賦給CS,使CPU執(zhí)行的下一條指令為中斷服務(wù)程序的第一條指令。10.5直接存儲器存取(DMA)方式10.5.1DMA的基本概念采用程序中斷傳送方式,能實現(xiàn)外部設(shè)備間的并行工作,提高了計算機系統(tǒng)的工作效率。但程序中斷傳送方式主要的工作都是由CPU執(zhí)行程序完成的,每處理一次I/O交換,約需幾十微秒到幾百微秒,而且中斷系統(tǒng)的保存與恢復(fù)現(xiàn)場也需一定的時間,因此中斷方式不能實現(xiàn)高速外設(shè)與主機的信息交換。對一些工作速度高、要成批量交換數(shù)據(jù)的外設(shè)來說,仍然顯得速度太慢,而且CPU頻繁地干預(yù),會引起大量數(shù)據(jù)丟失。

DMA方式的數(shù)據(jù)交換不是通過CPU執(zhí)行一段程序?qū)崿F(xiàn)的,而是使用專門的硬件來控制外設(shè)與主存間數(shù)據(jù)的直接交換,這個控制數(shù)據(jù)傳送的硬件稱為DMA控制器(簡稱為DMAC)。在DMA傳送方式中,當外設(shè)需要進行數(shù)據(jù)傳送時,通過DMA控制器向CPU提出DMA傳送請求,CPU響應(yīng)之后讓出總線控制權(quán),由DMA控制器接管總線進行數(shù)據(jù)傳送。在DMA控制器的控制下,數(shù)據(jù)直接在內(nèi)存和I/O設(shè)備之間進行傳送,如圖10-11所示。DMA方式一般用于高速傳送成組數(shù)據(jù)。

DMA控制器與CPU是共享存儲器的兩個獨立的處理器,但DMA控制器是一個非常簡單的控制器。當DMA和CPU同時需要使用總線時,系統(tǒng)賦予DMA控制口較高的優(yōu)先權(quán)。圖10-11DMA通道

DMA方式與中斷方式相比有以下不同:

(1)中斷方式下,CPU需要執(zhí)行中斷服務(wù)程序,才能完成數(shù)據(jù)交換;而DMA方式是通過硬件來實現(xiàn)數(shù)據(jù)的交換,不需CPU干預(yù),占用CPU的時間少。

(2)?DMA的響應(yīng)速度比中斷快。I/O設(shè)備發(fā)出中斷請求后,CPU要執(zhí)行完當前指令后才給予響應(yīng);而DMA請求是在現(xiàn)行機器周期結(jié)束后響應(yīng)。

(3)中斷方式適用于慢速外設(shè)的I/O方式;DMA方式適用于高速的I/O設(shè)備。

(4)中斷方式具有對異常事件進行處理的能力,DMA方式僅用于數(shù)據(jù)傳送。10.5.2DMA接口的功能和組成直接存儲器存取的傳送方式不需要CPU的干預(yù),在硬件電路控制下完成外設(shè)與存儲器之間的數(shù)據(jù)交換,這種硬件電路稱為DMA控制器,也叫DMA接口,在沒有進行DMA操作時,DMA控制器可以看成是CPU的一個普通接口。

1.DMA接口的功能

DMA接口具有以下幾個功能:

(1)能接收外設(shè)發(fā)來的DMA請求信號,并能向CPU發(fā)總線請求信號。

(2)?CPU回答后,從CPU的控制下接管對總線的控制。

(3)在DMA期間管理系統(tǒng)總線,能識別數(shù)據(jù)傳送方向并在控制線上給出正確的讀寫控制信息。

(4)確定數(shù)據(jù)傳送的起始地址和數(shù)據(jù)長度,修正數(shù)據(jù)傳送過程中的數(shù)據(jù)地址和數(shù)據(jù)長度,并執(zhí)行數(shù)據(jù)的傳送操作控制。

(5)在數(shù)據(jù)塊傳送結(jié)束時,能發(fā)出DMA結(jié)束信號,引起一次DMA中斷,進行數(shù)據(jù)校驗等一些后處理,使CPU恢復(fù)對總線的控制。

2.DMA接口基本組成最簡單的DMA控制器的結(jié)構(gòu)如圖10-12所示,它由以下邏輯部件組成:

1)內(nèi)存地址計數(shù)器內(nèi)存地址計數(shù)器用于存放存儲器數(shù)據(jù)區(qū)的首地址。初始化時,將數(shù)據(jù)區(qū)首地址送地址計數(shù)器,在DMA期間,其內(nèi)容遞增(或遞減),以給出下一個要傳送的字的地址,直至這批數(shù)據(jù)傳送完畢為止。圖10-12DMA控制器

2)字計數(shù)器字計數(shù)器用于記錄傳送數(shù)據(jù)塊的長度。初始化時將字節(jié)數(shù)或字數(shù)送計數(shù)器,DMA期間,每傳送一個字(或字節(jié)),修改計數(shù)器,直到計數(shù)值為0。

3)數(shù)據(jù)緩沖寄存器數(shù)據(jù)緩沖寄存器用來暫存每次傳送的數(shù)據(jù)。

4)?DMA請求觸發(fā)器每當外設(shè)準備好數(shù)據(jù)后給出一個控制信號,使DMA請求觸發(fā)器置位。

5)控制/狀態(tài)邏輯控制/狀態(tài)邏輯由控制和時序電路以及狀態(tài)標志等組成,用于修改內(nèi)存地址計數(shù)器和字計數(shù)器,指定傳送類型(輸入或輸出),并對“DMA請求”信號和CPU響應(yīng)信號進行協(xié)調(diào)和同步。

6)中斷機構(gòu)當一個數(shù)據(jù)塊傳送結(jié)束后觸發(fā)中斷機構(gòu),向CPU提出中斷請求,CPU將進行DMA傳送的后處理。10.5.3DMA數(shù)據(jù)傳送過程

DMA工作過程如圖10-13所示,分為三個階段:傳送前的預(yù)處理、數(shù)據(jù)傳送及傳送后處理。

1.?DMA預(yù)處理(初始化)為了實現(xiàn)外圍設(shè)備和內(nèi)存之間數(shù)據(jù)直接成批的交換,必然要把有關(guān)數(shù)據(jù)來源、去向和傳送數(shù)據(jù)的總數(shù)等信息預(yù)先通知DMA接口。所以在數(shù)據(jù)傳送之前先由CPU用測試指令測試外圍設(shè)備狀態(tài),以判斷是否可以使用該設(shè)備。若該設(shè)備可用,CPU將執(zhí)行一段初始化程序,完成對DMA控制器中各參數(shù)寄存器初始值的設(shè)定。主要操作包括:向DMA控制器的設(shè)備地址寄存器中送入設(shè)備號并啟動設(shè)備,向內(nèi)存地址計數(shù)器中送入起始地址,向字計數(shù)器中送入交換的數(shù)據(jù)字個數(shù)。在這些工作完成后,CPU繼續(xù)執(zhí)行原來的主程序。當外部設(shè)備準備好發(fā)送的數(shù)據(jù)(輸入)或上次接受的數(shù)據(jù)已經(jīng)處理完畢(輸出)時,它便通過DMA接口向CPU提出控制總線的申請,若有多個DMA同時申請,則按輕重緩急由硬件排隊判優(yōu)線路決定優(yōu)先等級。等設(shè)備得到總線控制權(quán)后,數(shù)據(jù)的傳送便由該DMA接口進行管理。圖10-13DMA工作過程

2.?DMA數(shù)據(jù)傳送

DMA的數(shù)據(jù)傳送可以以單字節(jié)(或字)為基本單位,也可以以數(shù)據(jù)塊為基本單位。對于以數(shù)據(jù)塊為單位的傳送,DMA控制器占用總線后的數(shù)據(jù)輸入和輸出操作都是通過循環(huán)來實現(xiàn)的。DMA數(shù)據(jù)傳送過程如圖10-14所示。

3.?DMA傳送后處理當DMA傳送結(jié)束后,由DMA接口中的中斷控制邏輯向CPU發(fā)中斷申請,要求處理機做結(jié)束處理工作。一旦DMA的中斷請求得到響應(yīng),CPU便暫停原來程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,做一些DMA的結(jié)束處理工作。這些工作常常包括校驗送入主存的數(shù)據(jù)是否正確,決定是繼續(xù)用DMA方式傳送數(shù)據(jù)還是結(jié)束傳送,測試在傳送過程中是否發(fā)生了錯誤,等等。圖10-14DMA數(shù)據(jù)傳送過程10.5.4DMA傳送方式

DMA技術(shù)的出現(xiàn),使得外設(shè)可以通過DMA控制器直接訪問內(nèi)存。DMA控制器與CPU分時使用內(nèi)存通常采用以下三種方法。

1.停止CPU訪問內(nèi)存

CPU響應(yīng)DMA請求后,讓出總線控制權(quán),DMA控制器獲得總線控制權(quán)后,連續(xù)占用若干個存取周期(總線周期)進行成組的數(shù)據(jù)傳送,一批數(shù)據(jù)傳送完畢,DMA控制器才把總線控制權(quán)歸還給CPU。在這種DMA傳送過程中,CPU基本處于不工作或保持狀態(tài)。這個方式的優(yōu)點是控制簡單,適用于高速外設(shè)的成組傳送,尤其是外設(shè)的數(shù)據(jù)傳送速度接近于內(nèi)存工作速度時,常采用這種方法。它可以減少系統(tǒng)總線控制權(quán)的交換次數(shù),有利于提高輸入/輸出的速度,但在DMA控制器訪問內(nèi)存階段,CPU基本處于不工作狀態(tài),CPU和內(nèi)存的效能沒有充分發(fā)揮,相當一部分內(nèi)存工作周期是空閑的,因為外設(shè)傳送兩個數(shù)據(jù)之間的間隔一般總是大于內(nèi)存存儲周期。

2.?DMA與CPU交替訪問內(nèi)存

這種方法是把原來的一個存取周期分成兩個時間段,一段分給CPU,一段分給DMA,使CPU和DMA交替地訪問主存。如果CPU的工作周期比內(nèi)存存取周期長很多,此時采用交替訪問內(nèi)存的方法可以使DMA傳送和CPU同時發(fā)揮最高的效率。這種方式不需要總線使用權(quán)的申請、建立和歸還過程,總線控制權(quán)的轉(zhuǎn)移幾乎不需要時間,所以對DMA傳送來講效率是很高的。而且CPU既不停止現(xiàn)行程序的運行,也不進入保持狀態(tài),在不知不覺中CPU便進行了DMA傳送。但這種方法需要內(nèi)存在原來的存取周期內(nèi)為兩個部件服務(wù),如果要維持CPU訪存速度不變,就要求內(nèi)存的工作速度提高一倍。另外,由于大多數(shù)外設(shè)的速度都不能與CPU相匹配,所以供DMA使用的時間段可能成為空操作,將會造成一些不必要的浪費。

3.周期挪用法(周期竊取方式)周期挪用法是當外設(shè)沒有DMA請求時,CPU按程序要求訪問主存,一旦外設(shè)有DMA請求并獲得批準后,CPU讓出一個周期的總線控制權(quán),由DMA控制器控制系統(tǒng)總線,挪用一個存取周期進行一次數(shù)據(jù)傳送,傳送一個字節(jié)或一個字,然后,DMA控制器將總線控制權(quán)交還CPU,CPU繼續(xù)進行自己的操作,等待下一個DMA請求的到來。重復(fù)上述過程,直至數(shù)據(jù)塊傳送完畢。與停止CPU訪問內(nèi)存的DMA方法比較,周期挪用的方法既實現(xiàn)了I/O傳送,又較好地發(fā)揮了內(nèi)存和CPU的效率,是一種廣泛采用的方法,但其硬件結(jié)構(gòu)比較復(fù)雜。由于I/O設(shè)備每一次周期挪用都有申請總線控制權(quán)、建立線控制權(quán)和歸還總線控制權(quán)的過程,所以傳送一個字對內(nèi)存來說可能只占用一個周期,但對DMA控制器來說有時卻需要2~5個存取周期。因此,周期挪用的方法適用于I/O設(shè)備讀/寫周期大于內(nèi)存存取周期的情況。如果在同一時刻,發(fā)生CPU與DMA的訪存沖突,那么優(yōu)先保證DMA工作,而CPU等待一個存取周期。若DMA傳送期間CPU無需訪存,則周期挪用對CPU執(zhí)行程序無任何影響。10.6通道控制方式10.6.1通道的基本概念通道是一個具有輸入/輸出處理器控制的輸入/輸出部件。當今計算機系統(tǒng),由于連接的I/O設(shè)備數(shù)量多,輸入/輸出頻繁,但又要求整體的速度快,所以,只依靠主CPU采取程序中斷和DMA等I/O方式已不能滿足要求,于是在計算機系統(tǒng)中引進了通道控制方式。可以把通道看做一個簡單的專用計算機,它有自己的指令系統(tǒng)。通道處理器能夠獨立執(zhí)行用通道命令編寫的輸入/輸出控制程序,產(chǎn)生相應(yīng)的控制信號控制設(shè)備的工作。通道通過數(shù)據(jù)通路與設(shè)備的控制器進行通信。通道控制方式是DMA方式的進一步發(fā)展,兩者都是實現(xiàn)外設(shè)與內(nèi)存之間直接交換數(shù)據(jù)的控制器,與DMA控制器相比,兩者的區(qū)別在于:

(1)?DMA控制器是通過專門設(shè)計的硬件控制邏輯來實現(xiàn)對數(shù)據(jù)傳送的控制;而通道則是一個具有特殊功能的處理器,它具有自己的指令和程序,通過執(zhí)行通道程序來實現(xiàn)對數(shù)據(jù)傳送的控制,故通道具有更強的獨立處理數(shù)據(jù)輸入/輸出的功能。

(2)?DMA控制器通常只能控制一臺或少數(shù)幾臺同類設(shè)備;而一個通道則可以同時控制許多臺同類或不同類的設(shè)備。10.6.2通道的功能通道的出現(xiàn)進一步提高了CPU的效率。因為通道是一個特殊功能的處理器,它有自己的指令和程序?qū)iT負責數(shù)據(jù)輸入/輸出的傳輸控制,而CPU將“I/O”的功能下放給通道后只負責“數(shù)據(jù)處理”功能。這樣,通道與CPU分時使用內(nèi)存,實現(xiàn)了CPU內(nèi)部運算與I/O設(shè)備的平行工作。

1.通道的功能通道的主要功能有:

(1)接受CPU的I/O指令,確定要訪問的子通道及外設(shè)。

(2)根據(jù)CPU給出的信息,從主存取出屬于該通道程序的通道指令,經(jīng)譯碼后向設(shè)備控制器和設(shè)備發(fā)送各種命令。

(3)組織外圍設(shè)備和內(nèi)存之間進行數(shù)據(jù)傳送,并根據(jù)需要提供數(shù)據(jù)緩存的空間,以及提供數(shù)據(jù)存入內(nèi)存的地址和傳送的數(shù)據(jù)量。

(4)從外設(shè)獲得設(shè)備的狀態(tài)信息,形成并保存通道本身的狀態(tài)信息,根據(jù)要求將這些狀態(tài)信息送到主存的指定單元,供CPU使用。

(5)將外圍設(shè)備的中斷請求和通道本身的中斷請求,按次序及時報告給CPU。

2.通道工作過程通道執(zhí)行一次輸入/輸出操作,大體要經(jīng)過啟動、傳輸和結(jié)束三個階段。

1)啟動通道當程序執(zhí)行到需要輸入/輸出時,由專門的外設(shè)管理程序?qū)⒈敬屋斎?輸出的各種主要信息準備好,根據(jù)輸入/輸出的具體要求,組織好通道程序,存入內(nèi)存,并將它的首地址送入約定單元或?qū)S眉拇嫫髦校缓髨?zhí)行輸入/輸出指令,向通道發(fā)出“啟動I/O”命令。

2)數(shù)據(jù)傳輸通道執(zhí)行CPU為它組織的通道程序,控制外部設(shè)備進行指定數(shù)據(jù)的輸入/輸出工作。

3)通道指令執(zhí)行結(jié)束及輸入/輸出結(jié)束通道程序結(jié)束后向CPU發(fā)中斷請求。CPU響應(yīng)這個中斷請求后,第二次進入操作系統(tǒng),調(diào)用管理程序?qū)χ袛嗾埱筮M行處理。10.6.3通道的類型按照通道獨立于主機的程度,可分為結(jié)合型通道和獨立型通道兩種類型。結(jié)合型通道在硬件結(jié)構(gòu)上與CPU結(jié)合在一起,借助于CPU的某些部件作為通道部件來實現(xiàn)外設(shè)與主機的信息交換。這種通道結(jié)構(gòu)簡單,成本較低,但功能較弱。獨立型通道完全獨立于主機對外設(shè)進行管理和控制。這種通道功能強,但設(shè)備成本高。按照輸入/輸出的傳送方式,通道可以分成以下三類。

1.字節(jié)多路通道字節(jié)多路通道是一種簡單的共享通道,用于連接多個慢速的和中速的設(shè)備,這些設(shè)備的數(shù)據(jù)傳送以字節(jié)為單位。由于每傳送一個字節(jié)要等待較長時間,因此,這種通道可以以字節(jié)交叉方式輪流為多個外設(shè)服務(wù),以提高通道的利用率。字節(jié)多路通道的功能好比一個多路開關(guān),交叉(輪流)地接通各臺外部設(shè)備。

2.選擇通道對于高速設(shè)備,通道無法同時對多個這種設(shè)備進行操作,一次只能選擇一個。實際應(yīng)用中,通道也是連接多個設(shè)備的,但這些設(shè)備不能同時工作,在一段時間內(nèi)通道只能選擇其中一臺設(shè)備進行數(shù)據(jù)傳送,此時該設(shè)備可以獨占整個通道。因此,選擇通道每次只能執(zhí)行一個通道程序,只有當它與主存交換完信息后,才能再選擇另一臺外部設(shè)備并執(zhí)行該設(shè)備的通道程序。

3.數(shù)組多路通道數(shù)組多路通道是把字節(jié)多路通道和選擇通道的特點結(jié)合起來的一種通道結(jié)構(gòu)。它適用于高速外圍設(shè)備,這些設(shè)備的數(shù)據(jù)傳輸以塊為單位。通道用塊交叉的方法,輪流為多個外設(shè)服務(wù)。當同時為多臺外設(shè)傳送數(shù)據(jù)時,每傳送完一塊數(shù)據(jù)后選擇下一個外設(shè)進行數(shù)據(jù)傳送,使多路傳輸并行進行。數(shù)組多路通道有多個子通道,既可以執(zhí)行多路通道程序,即像字節(jié)多路通道那樣,所有子通道分時共享總通道,又可以用選擇通道那樣的方式成組地傳送數(shù)據(jù);既具有多路并行操作的能力,又具有很高的數(shù)據(jù)傳輸速率,使通道的效率得到充分發(fā)揮。因此數(shù)組多路通道在實際系統(tǒng)中得到較多的應(yīng)用。字節(jié)多路通道和數(shù)組多路通道都是多路通道,在一段時間內(nèi)可以交替地執(zhí)行多個設(shè)備的通道程序,使這些設(shè)備同時工作。但兩者也有區(qū)別,首先數(shù)組多路通道允許多個設(shè)備同時工作,但只允許一個設(shè)備進行傳輸型操作,而其他設(shè)備進行控制型操作;而字節(jié)多路通道不僅允許多個線路同時操作,而且允許它們同時進行傳輸型操作。其次,數(shù)組多路通道與設(shè)備之間的數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊,通道必須為一個設(shè)備傳送完一個數(shù)據(jù)塊以后才能為別的設(shè)備傳送數(shù)據(jù)塊,而字節(jié)多路通道與設(shè)備之間的數(shù)據(jù)傳送基本單位是字節(jié)。通道為一個設(shè)備傳送一個字節(jié)之后,又可以為另一個設(shè)備傳送一個字節(jié),因此各設(shè)備與通道之間的數(shù)據(jù)傳送是以字節(jié)為單位交替進行的。

DMA方式的出現(xiàn)減輕了CPU對I/O操作的控制,使得CPU的效率有顯著的提高,而通道的出現(xiàn)則進一步提高了CPU的效率。這是因為,CPU將部分權(quán)力下放給通道,通道可以實現(xiàn)對外圍設(shè)備的統(tǒng)一管理和外圍設(shè)備與內(nèi)存之間的數(shù)據(jù)傳送,CPU僅負責數(shù)據(jù)處理,這種方式大大提高了CPU的工作效率,也縮短了響應(yīng)外設(shè)請求的時間。然而這種提高CPU效率的辦法是以花費更多硬件為代價的。習題一、填空題

1.可以根據(jù)中斷源在系統(tǒng)中的位置將中斷源分為內(nèi)部中斷和外部中斷,一般運算器除法錯是

,鍵盤輸入要求中斷是

2.中斷響應(yīng)必須滿足三個條件:(1)中斷源有中斷請求;(2)

;(3)一條指令執(zhí)行完畢。

3.字節(jié)多路通道是一種簡單的共享通道,它是建立在

的基礎(chǔ)上,輪流為多臺低速和中速外設(shè)服務(wù)。選擇通道數(shù)據(jù)的傳送是以

方式進行,因此傳送速率高。

4.多個中斷源在軟件查詢方式中

最先被訪問。

5.根據(jù)數(shù)據(jù)傳送方式,可以將通道分為

通道、

通道和數(shù)組多路通道。

6.一個中斷向量對應(yīng)一個

。

7.中斷處理過程可以嵌套,

的設(shè)備可以中斷

的設(shè)備的中斷服務(wù)程序。

8.中斷請求的優(yōu)先排隊可以歸納為兩大類,它們是

9.?DMA方式中,DMA控制器從CPU完全接管對

的控制,數(shù)據(jù)交換不經(jīng)過CPU,而

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論