輸入/輸出系統
1、主機與外設的連接
1.1、輸入輸出接口
I/O接口是主存和外設之間的交接界面,通過(guò)接口可以實(shí)現主機和外設之間的信息交換
主機和外設之間需要交換的信息:
數據信息:這些信息可以是通過(guò)輸入設備送到計算機的輸入數據,也可以是經(jīng)過(guò)計算機運算處理和加工后,送到輸出設備的結果數據
控制信息:這是CPU對外設的控制信息或管理命令,如外設的啟動(dòng)和停止指控,輸入和輸出操作的制定、工作方式的選擇、中斷功能的允許和禁止等
狀態(tài)信息:這類(lèi)信息用來(lái)標志外設的工作狀態(tài),比如,輸入設備數據準備好標志,輸出設備忙、閑標志等
聯(lián)絡(luò )信息:主機與外設間的時(shí)間配合信息
外設識別信息:I/O尋址信息,使CPU能從眾多的外設中尋找出與自己進(jìn)行信息交換的唯一的設備
2、接口的功能和基本組成
(1)接口的功能
實(shí)現主機和外部設備的通信聯(lián)絡(luò )控制
進(jìn)行地址譯碼和設備選擇:當CPU送來(lái)選擇外設的地址碼后,接口必須對地址進(jìn)行譯碼以產(chǎn)生設備選擇信息,使主機能和指定外設交換信息
實(shí)現數據緩沖:在接口電路中,一般設置一個(gè)或幾個(gè)數據緩沖寄存器,用于數據的暫存,以避免因速度不一致而丟失數據。在傳送過(guò)程中,先將數據送入數據緩沖寄存器中,然后再送到外部設備或主機中去
數據格式的變換:在輸入或輸出操作過(guò)程中,為了滿(mǎn)足主機或外設的各自要求,接口電路中必須具有實(shí)現各類(lèi)數據相互轉換的功能,如:并-串轉換、串-并轉換、模-數轉換、數-模轉換以及二進(jìn)制數和ASCII碼的相互轉換等
傳遞控制命令和狀態(tài)信息:當CPU要啟動(dòng)某一外設時(shí),通過(guò)接口中的命令寄存器向外設發(fā)出啟動(dòng)命令;當外設準備就緒時(shí),則有“準備好”狀態(tài)信息送回接口中的狀態(tài)寄存器,為CPU提供反饋信息,告訴CPU,外設已經(jīng)具備與主機交換數據的條件
(2)接口的基本組成
接口中要分別傳送數據信息、控制信息、和狀態(tài)信息,數據信息、控制信息和狀態(tài)信息都通過(guò)數據總線(xiàn)來(lái)傳送。大多數計算機都把外部設備的狀態(tài)信息視為輸入數據,而把控制信息看成是輸出數據,并在接口中分設各自相應的寄存器,賦以不同的端口地址,各種信息分時(shí)地使用數據總線(xiàn)傳送到各自的寄存器中
接口與端口是兩個(gè)不同的概念,端口是指接口電路中可以被CPU直接訪(fǎng)問(wèn)的寄存器,若干個(gè)端口加上相應的控制邏輯電路才組成接口
通常,一個(gè)接口中包含有數據端口、命令端口和狀態(tài)端口。存放數據信息的寄存器稱(chēng)為數據端口,存放控制命令的寄存器稱(chēng)為命令端口,存放狀態(tài)信息的寄存器稱(chēng)為狀態(tài)端口。CPU通過(guò)輸入指令可以從有關(guān)端口中讀取信息,通過(guò)輸出指令可以把信息寫(xiě)入有關(guān)端口。CPU對不同端口的操作有所不同,有的端口只能讀或只能寫(xiě),有的端口可讀可寫(xiě)。例如,對狀態(tài)端口只能讀,可將外設的標志送到CPU中去;對命令端口只能寫(xiě),可將CPU的各種控制命令發(fā)送給外設
1.3、外設的識別與端口尋址
外設識別是通過(guò)地址總線(xiàn)和接口電路中的外設識別電路來(lái)實(shí)現的,I/O端口地址就是主機與外設直接通信的地址,CPU可以通過(guò)端口發(fā)送命令、讀取狀態(tài)和傳送數據。
(1)端口地址的編址方式
I/O端口的編址方式有兩種:
獨立編址:主存地址空間和I/O端口地址空間是相對獨立的,分別單獨編址。CPU訪(fǎng)問(wèn)主存時(shí),由主存讀/寫(xiě)控制線(xiàn)控制,訪(fǎng)問(wèn)外設時(shí),由I/O讀/寫(xiě)控制線(xiàn)控制,在指令系統中,必須設置專(zhuān)門(mén)的I/O指令。當CPU使用I/O指令時(shí),其指令的地址字段直接或間接的指出端口地址。這些端口地址被接口電路中的地址譯碼器接受并進(jìn)行譯碼,符合者就是CPU所指定的外設寄存器,該寄存器將被CPU訪(fǎng)問(wèn)
統一編址:在這種編址方式中,I/O端口地址和主存單元的地址是統一編址的,把I/O接口中的端口作為主存單元一樣進(jìn)行訪(fǎng)問(wèn),不設置專(zhuān)門(mén)的I/O指令。當CPU訪(fǎng)問(wèn)外設時(shí),把分配給該外設的地址碼送到地址總線(xiàn)上,然后各外設接口中的地址譯碼器對地址碼進(jìn)行譯碼,如果符合就是CPU指定的外設寄存器
(2)獨立編址方式的端口訪(fǎng)問(wèn)
Intel 80X86的I/O地址空間由64K個(gè)獨立編址的8位端口組成。兩個(gè)連續的8位端口可作為16位端口處理;4個(gè)連續的8位端口可作為32位端口處理。因此,I/O地址空間最多可提供64K個(gè)8位端口、32K個(gè)16位端口、16K個(gè)32位端口
80X86的專(zhuān)用I/O指令I(lǐng)N和OUT有直接尋址和間接尋址兩種類(lèi)型。直接尋址I/O端口的尋址范圍為00~FFH,最多為256個(gè)端口地址
間接尋址由DX寄存器間接給出I/O端口地址,DX寄存器長(cháng)16位,尋址范圍為0000~FFFFH,最多可尋址64K個(gè)端口地址。
CPU一次可實(shí)現字節(8位)、字(16位)或雙字(32位)的數據傳送。32位的端口地址應對準可被4整除的地址;16位端口應對準偶地址;8位端口可定位在偶地址,也可定位在奇地址
1.4、輸入/輸出信息傳送控制方式
外設與主機之間的信息傳送控制方式,經(jīng)歷了由低級到高級、由簡(jiǎn)單到復雜、由集中管理到各部件分散管理的發(fā)展過(guò)程,按其發(fā)展的先后順序和主機與外設并行工作的程度,可以分為四種:
(一般嵌入式系統外設與主存間的數據傳輸方式)
程序查詢(xún)方式:(CPU效率低)程序直接查詢(xún)控制方式,這是主機與外設間進(jìn)行信息交換的最簡(jiǎn)單的方式,輸入和輸出完全是通過(guò)CPU執行程序來(lái)完成的。一旦某一外設被選中并啟動(dòng)之后,主機將查詢(xún)這個(gè)外設的某些狀態(tài)位,看其是否準備就緒。若外設未準備就緒,主機將再次查詢(xún);若外設已準備就緒,則執行一次I/O操作
程序中斷方式:(不占用CPU)在主機啟動(dòng)外設后,無(wú)需等待查詢(xún),而是繼續執行原來(lái)的程序,外設在做好輸入/輸出準備時(shí),向主機發(fā)中斷請求,主機接到請求后就暫時(shí)中止原來(lái)執行的程序,轉去執行中斷服務(wù)程序對外部請求進(jìn)行處理,在中斷處理完畢后返回原來(lái)的程序繼續執行。程序中斷不僅適用于外部設備的輸入輸出操作,也適用于對外界發(fā)生的隨機事件的處理
直接存儲器存?。―MA)方式:DMA方式是在主存和外設之間開(kāi)辟直接的數據通路,可以進(jìn)行基本上不需要CPU介入的在主存和CPU之間的信息傳送,這樣不僅保證CPU的高效率,而且能滿(mǎn)足高速外設的需要。DMA方式只能進(jìn)行簡(jiǎn)單的數據傳送操作,在數據塊的傳送的開(kāi)始和結束時(shí)還需要CPU和中斷系統進(jìn)行預處理和后處理
I/O通道控制方式:在系統中設有通道控制部件,每個(gè)通道掛若干外設,主機在執行I/O操作時(shí),只需啟動(dòng)有關(guān)通道,通道將執行通道程序,從而完成I/O操作。通道是一個(gè)具有特殊功能的處理器,它能獨立地執行通道程序,產(chǎn)生相應的控制信號,實(shí)現對外設的統一管理和外設與主存之間的數據傳送。但它不是一個(gè)完全獨立的處理器,它要在CPU的I/O指令指揮下才能啟動(dòng)、停止或改變工作狀態(tài),是從屬于CPU的一個(gè)專(zhuān)用處理器
2、程序查詢(xún)方式
基本思想:由CPU執行一段輸入/輸出程序來(lái)實(shí)現主機與外設之間的數據傳送
工作流程:
預置傳送參數:在傳送數據之前,由CPU執行一段初始化程序,預置傳送參數。傳送參數包括存儲數據的主存緩沖區首地址和傳送數據的個(gè)數
向外設接口發(fā)出命令字:當CPU選中某臺外設時(shí),執行輸出指令向外設接口發(fā)出命令字啟動(dòng)外設,為接受數據或發(fā)送數據做應有的準備
從外設接口取回狀態(tài)字:CPU執行輸入命令,從外設接口中取回狀態(tài)字并進(jìn)行測試,判斷數據傳送是否可以進(jìn)行
查詢(xún)外設標志:CPU不斷查詢(xún)狀態(tài)標志。如果外設沒(méi)有準備就緒,CPU就踏步進(jìn)行等待,一直到外設準備就緒,并發(fā)出外設準備就緒信號為止
傳送數據:輸入時(shí),CPU執行輸入指令,從外設接口的數據緩沖寄存器中接受數據;輸出時(shí),CPU執行輸出指令,將數據寫(xiě)入外設接口的數據緩沖寄存器
修改傳送參數:每進(jìn)行一次數據傳送之后必須要修改傳送參數,其中包括主存緩沖區地址加1,傳送個(gè)數計數器減1
判斷傳送是否結束:如果傳送個(gè)數計數器不為0,則轉第3步,繼續傳送,直到傳送個(gè)數計數器為0,表示傳送結束
3、中斷系統和程序中斷方式
3.1、中斷的基本概念
(1)中斷的提出
基本思想:CPU在程序中安排好在某一時(shí)刻啟動(dòng)某一臺外設,然后CPU繼續執行原來(lái)程序,一旦外設完成數據傳送的準備工作時(shí),便主動(dòng)向CPU發(fā)出一個(gè)中斷請求,請求CPU為自己服務(wù)。在可以響應中斷的條件下,CPU暫時(shí)中止正在執行的程序,轉去執行中斷服務(wù)程序為中斷請求者服務(wù),在中斷服務(wù)程序中完成一次主機與外設之間的數據傳送,傳送完成后,CPU仍然返回原來(lái)的程序,從斷點(diǎn)處繼續執行
中斷的處理過(guò)程實(shí)際是程序的切換過(guò)程,即從現行程序切換到中斷服務(wù)程序,再從中斷服務(wù)程序返回到現行程序。CPU每次執行中斷服務(wù)程序前總要保護斷點(diǎn)、保存現場(chǎng),執行完中斷服務(wù)程序返回現行程之前又要恢復現場(chǎng)、恢復斷點(diǎn)
中斷系統是計算機實(shí)現中斷功能的軟、硬件總稱(chēng)。一般在CPU中配置中斷機構,在外設接口中配置中斷控制器,在軟件上設置上相應的中斷服務(wù)程序
(2)程序中斷與調用子程序的區別
子程序的執行是由程序員事先安排好的,而中斷服務(wù)程序的執行則是由隨機的中斷事件引起的
子程序的執行受到主程序或上層子程序的控制,而中斷服務(wù)程序一般與被中斷的現行程序毫無(wú)關(guān)系
不存在同時(shí)調用多個(gè)子程序的情況,而有可能發(fā)生多個(gè)外設同時(shí)請求CPU為自己服務(wù)的情況
3.2、中斷請求
中斷源是指中斷請求的來(lái)源,即引起計算機中斷的事件。通常,一個(gè)計算機允許有多個(gè)中斷源。由于每個(gè)中斷源向CPU發(fā)出中斷請求的時(shí)間是隨機的,為了記錄中斷事件并區分不同的中斷源,可采用具有存儲功能的觸發(fā)器來(lái)記錄中斷源,這個(gè)觸發(fā)器稱(chēng)為中斷請求觸發(fā)器(INTR)。當一個(gè)中斷源有中斷請求時(shí),其相應的中斷請求觸發(fā)器被置1狀態(tài),表示該中斷源向CPU發(fā)出中斷請求
3.3、中斷響應
(1)CPU響應中斷的條件
CPU接收到中斷請求信號
CPU允許中斷:CPU內部有一個(gè)中斷允許觸發(fā)器(EINT),只有當EINT=1時(shí),CPU才可以響應中斷源的請求。通常,中斷允許觸發(fā)器由開(kāi)中斷指令來(lái)置位,由關(guān)中斷指令使其復位
一條指令執行完畢:這是CPU響應中斷請求的時(shí)間限制條件。一般情況下,CPU在一條指令執行完畢且沒(méi)有更緊迫的任務(wù)時(shí)才能響應中斷請求
(2)中斷隱指令
CPU響應中斷之后,經(jīng)過(guò)某些操作,轉去執行中斷服務(wù)程序。這些操作是由硬件直接實(shí)現的,我們把它稱(chēng)為中斷隱指令。中斷隱指令并不是指令系統中的一條真正的指令,它沒(méi)有操作碼,所以中斷隱指令是一種不允許、也不可能為用戶(hù)使用的特殊指令。其所完成的操作主要有:
保存斷點(diǎn):為了保證在中斷服務(wù)程序執行完畢能正確返回原來(lái)的程序,必須將原來(lái)程序的斷點(diǎn)(即程序計數器PC的內容)保存起來(lái)。斷點(diǎn)可以壓入棧,也可以存入主存的特定單元中
暫不允許中斷:在中斷服務(wù)程序中,為了保護中斷現場(chǎng)(即CPU的主要寄存器)期間不被新的中斷所打斷,必須要關(guān)中斷,從而保證被中斷的程序在中斷服務(wù)程序執行完畢之后能接著(zhù)正確地執行下去
引出中斷服務(wù)程序:引出中斷服務(wù)的實(shí)質(zhì)是取出中斷服務(wù)程序的入口地址送程序計數器(PC)
(3)中斷周期
以上幾個(gè)基本操作在不同的計算機系統中的處理方法是各異的。通常,在組合邏輯控制的計算機中,專(zhuān)門(mén)設置了一個(gè)中斷周期來(lái)完成中斷隱指令的任務(wù)。在微程序控制的計算機中,則專(zhuān)門(mén)安排有一段微程序來(lái)完成中斷隱指令的這些操作
假設將斷點(diǎn)存至主存的0號單元,且采用硬件向量中斷法尋找中斷服務(wù)程序的入口地址,則在中斷周期需完成如下操作:
將特定地址0送至存儲器地址寄存器,記作0——>MAR
將PC的內容送至MDR,記作(PC)——>MDR
向主存發(fā)寫(xiě)命令,啟動(dòng)存儲器做寫(xiě)操作,記作Write
將MDR的內容通過(guò)數據總線(xiàn)寫(xiě)入到MAR所指示的主存單元(0號)中,記作MDR——>M(MAR)
向量地址形成部件的輸出送至PC,為進(jìn)入中斷服務(wù)程序做準備,記作向量地址——>PC
關(guān)中斷,將中斷允許觸發(fā)器清0,記作0——>EINT
3.4、硬件向量中斷法
當CPU響應某一中斷請求時(shí),硬件能自動(dòng)形成并找出與該中斷源對應的中斷服務(wù)程序的入口地址
向量中斷過(guò)程:當中斷源向CPU發(fā)出中斷請求信號之后,CPU進(jìn)行一定的判優(yōu)處理,若決定響應這個(gè)中斷請求,則向中斷源發(fā)出中斷響應信號INTA,中斷源接到INTA信號后就通過(guò)自己的向量地址形成部件向CPU發(fā)送向量地址,CPU接收向量地址之后就可轉入相應的中斷服務(wù)程序
向量地址通常有兩種情況:向量地址是中斷服務(wù)程序的入口地址,向量地址是中斷向量表的指針
3.5、中斷現場(chǎng)的保護和恢復
中斷現場(chǎng)指的是發(fā)生中斷時(shí)CPU的主要狀態(tài),其中最重要的是斷點(diǎn),另外還有一些通用寄存器的狀態(tài)。之所以需要保護和恢復現場(chǎng)的原因是因為CPU要先后執行兩個(gè)完全不同程序(現行程序),必須進(jìn)行兩種程序運行狀態(tài)的轉換。一般來(lái)說(shuō),在中斷隱指令中,CPU硬件將自動(dòng)保存斷點(diǎn),有些計算機還自動(dòng)保存程序狀態(tài)寄存器的內容。但是,在許多應用中,要保證中斷返回后原來(lái)的程序能正確地繼續運行,僅保存這一二個(gè)寄存器的內容是不夠的。為此,在中斷服務(wù)程序開(kāi)始時(shí),應由軟件去保存那些硬件沒(méi)有保存,而在中斷服務(wù)程序中又可能用到的寄存器的內容,在中斷返回之前,這些內容還應該被恢復
現場(chǎng)的保護和恢復方法不外乎有純軟件和軟、硬件相結合兩種。純軟件方法是在CPU響應中斷后,用一系列傳送指令把要保存的現場(chǎng)參數傳送到主存某些單元中去,當中斷服務(wù)程序結束后,再采用傳送指令進(jìn)行相反方向的傳送。軟硬件保護現場(chǎng)往往是和向量中斷在一起使用的。先把斷點(diǎn)和程序狀態(tài)字自動(dòng)壓入堆棧,這就是保護舊現場(chǎng);接著(zhù)根據中斷源送來(lái)的向量地址自動(dòng)取出中斷服務(wù)程序入口地址和新的程序狀態(tài)字,這就是建立新現場(chǎng);最后由一些指令實(shí)現對必要的通用寄存器的保護?;謴同F場(chǎng)是保護現場(chǎng)的逆處理
3.6、多重中斷與中斷屏蔽
(1)中斷嵌套
要使計算機具有多重中斷的能力,首先要能保護多個(gè)斷點(diǎn),而且先發(fā)生的中斷請求的斷點(diǎn),先保護后恢復;后發(fā)生的中斷請求的斷點(diǎn),后保護先恢復。堆棧的后進(jìn)先出特點(diǎn)正好滿(mǎn)足多重中斷這一先后次序的需要。同時(shí),在CPU進(jìn)入某一中斷服務(wù)程序之后,系統必須處于開(kāi)中斷狀態(tài),否則中斷嵌套是不可能實(shí)現的
(2)允許和禁止中斷
允許還是禁止中斷是用CPU中的中斷允許觸發(fā)器控制的,當中斷允許觸發(fā)器(EINT)被置1,則允許中斷;當中斷允許觸發(fā)器被置0,則禁止中斷
下列情況應開(kāi)中斷:
在中斷服務(wù)程序執行完畢,恢復中斷現場(chǎng)后
在多重中斷的情況下,保護中斷現場(chǎng)后
下列情況應該關(guān)中斷:
當響應某一級中斷請求,不再允許被其他中斷請求打斷時(shí)
在中斷服務(wù)程序的保護和恢復現場(chǎng)之前
(3)中斷屏蔽
中斷源發(fā)出中斷請求之后,這個(gè)中斷請求不一定能真的送到CPU去,可以用程序方式有選擇地封鎖部分中斷,這就是中斷屏蔽。如果給每個(gè)中斷源都相應地配備一個(gè)中斷屏蔽觸發(fā)器MASK,則每個(gè)中斷請求信號在送往判優(yōu)電路之前,還要受到屏蔽觸發(fā)器的控制。在中斷接口電路中,多個(gè)中斷屏蔽觸發(fā)器組成一個(gè)屏蔽寄存器,其內容稱(chēng)為屏蔽字,由程序來(lái)設置。屏蔽字的某一位的狀態(tài)將成為本中斷源能否真正發(fā)出中斷請求信號的必要條件之一。這樣就可以實(shí)現CPU對中斷處理的控制,使中斷能在系統中合理協(xié)調地進(jìn)行。用程序設置的方法將屏蔽寄存器中的某一位置1,則對應的中斷請求被封鎖,無(wú)法去參加排隊判優(yōu)
如一個(gè)中斷系統有16個(gè)中斷源,每一個(gè)中斷源按其優(yōu)先級別賦予一個(gè)屏蔽字,屏蔽字與中斷源的優(yōu)先級別是一一對應的。第一級中斷源的屏蔽字是16個(gè)1,它的優(yōu)先級別最高,禁止本級和更低級的中斷請求,第16級中斷源的屏蔽字只有第16位為1,其余各位為0,它的優(yōu)先級別最低,僅禁止本級的中斷請求,而對其他高級的中斷請求全部開(kāi)放
3.7、中斷全過(guò)程
中斷全過(guò)程是指的是從中斷源發(fā)出中斷請求開(kāi)始,CPU響應這個(gè)請求,現行程序被中斷,轉至中斷服務(wù)程序,直到中斷服務(wù)程序執行完畢,CPU再返回原來(lái)的程序繼續執行的整個(gè)過(guò)程
大體上可以把中斷全過(guò)程分為5個(gè)階段:即中斷請求、中斷判優(yōu)、中斷響應、中斷處理和中斷返回
中斷處理就是執行中斷服務(wù)程序,這是中斷系統的核心。中斷處理過(guò)程基本上由三部分組成,第一部分為準備部分,其基本功能是保護現場(chǎng),對于非向量中斷方式則需要確定中斷源,最后開(kāi)放中斷,允許更高級的中斷請求打斷低級的中斷服務(wù)程序;第二部分為處理部分,即真正執行具體的為某個(gè)中斷源服務(wù)的中斷服務(wù)程序;第三部分為結尾部分,首先要關(guān)中斷,以防止在恢復現場(chǎng)過(guò)程中被新的中斷請求打斷,接著(zhù)恢復現場(chǎng),然后開(kāi)放中斷,以便返回原來(lái)的程序后可響應其他的中斷請求。中斷服務(wù)程序的最后一條指令一定是中斷返回指令
4、DMA方式
4.1、DMA方式的基本概念
直接存儲器訪(fǎng)問(wèn)方式是在外設和主存之間開(kāi)辟一條“直接數據通道”,在不需要CPU干涉也需要軟件介入的情況下在兩者之間進(jìn)行的高速數據傳送方式。在DMA傳送方式中,對數據傳送過(guò)程進(jìn)行控制的硬件稱(chēng)為DMA控制器。當外設需要進(jìn)行數據傳送時(shí),通過(guò)DMA控制器向CPU提出DMA傳送請求,CPU響應之后將讓出系統總線(xiàn),由DMA控制器接管總線(xiàn)進(jìn)行數據傳送
DMA方式的特點(diǎn):
它使主存與CPU的固定聯(lián)系脫鉤,主存即可以被CPU訪(fǎng)問(wèn),又可被外設訪(fǎng)問(wèn)
在數據塊傳送時(shí),主存地址的確定、傳送數據的技術(shù)都由硬件電路直接實(shí)現
主存中要開(kāi)辟專(zhuān)用緩沖區,及時(shí)供給和接受外設的數據
DMA傳送速度快,CPU與外設并行工作,提高了系統的效率
DMA在傳送開(kāi)始前要通過(guò)程序進(jìn)行預處理,結束后要通過(guò)中斷方式進(jìn)行后處理
DMA和中斷的區別:
中斷方式是程序切換,需要保護和恢復現場(chǎng),而DMA方式除了開(kāi)始和結尾時(shí),不占用CPU的任何資源
對中斷請求的響應時(shí)間只能發(fā)生在每條指令執行完畢時(shí);而對DMA請求的響應時(shí)間可以發(fā)生在每個(gè)機器周期結束時(shí)
中斷傳送過(guò)程需要CPU的干涉;而DMA傳送過(guò)程不需要CPU的干涉,故數據傳輸速率非常高,適合于高速外設的成組數據傳送
DMA請求的優(yōu)先級高于中斷請求
中斷方式具有對異常事件的處理能力,而DMA方式僅局限于完成傳送數據塊的I/O操作
DMA方式的應用:DMA方式一般應用于主存與高速外設間的簡(jiǎn)單數據傳送。高速外設如磁盤(pán)、磁帶、光盤(pán)等輔助存儲器以及其他帶有局部存儲器的外設、通信設備等
4.2、DMA傳送方法與傳送過(guò)程
(1)DMA傳送方法
DMA控制器與CPU通常采用以下三種方法使用主存:
CPU停止訪(fǎng)問(wèn)主存法:DMA請求信號迫使CPU讓出總線(xiàn)控制權,CPU在現行及其周期執行完畢后,使其數據、地址總線(xiàn)處于三態(tài),并輸出總線(xiàn)批準信號。每次DMA請求獲得批準,DMA控制器獲得總線(xiàn)控制權以后,連續占用若干個(gè)存取周期進(jìn)行成組連續的數據傳送,直至批量傳送結束,DMA控制器才把總線(xiàn)控制權交回CPU
存儲器分時(shí)法:把原來(lái)的一個(gè)存取周期分成兩個(gè)時(shí)間片,一片分給CPU,一片分給DMA,使CPU和DMA交替地訪(fǎng)問(wèn)主存
周期挪用法:當外設沒(méi)有DMA請求時(shí),CPU按程序要求訪(fǎng)問(wèn)主存;一旦外設有DMA請求并獲得CPU批準后,CPU讓出一個(gè)周期的總線(xiàn)控制權,由DMA控制器控制系統總線(xiàn),挪用一個(gè)存取周期進(jìn)行一次數據傳送,傳送一個(gè)字或一個(gè)字節;然后DMA控制器將總線(xiàn)控制權交回CPU,CPU繼續進(jìn)行自己的操作,等待下一個(gè)DMA請求的到來(lái)。重復上述過(guò)程,直至數據塊傳送完畢
(2)DMA傳送過(guò)程
DMA的傳送過(guò)程可分為三個(gè)階段:DMA傳送前的預處理、數據傳送和傳送后的結束處理
DMA預處理:CPU首先執行幾條I/O指令,用于測試外設的狀態(tài)、向DMA控制器的有關(guān)寄存器置初值、設置傳送方式、啟動(dòng)外部設備等
在這些工作完成之后,CPU繼續執行原來(lái)的程序,在外設準備好發(fā)送的數據或接受的數據以處理完畢時(shí),外設向DMA控制器發(fā)DMA請求,再由DMA控制器向CPU發(fā)總線(xiàn)請求
數據傳送:DMA的數據傳送可以以字節為基本單位,也可以以數據塊為基本單位。對于以數據塊為單位的傳送,DMA控制器占用總線(xiàn)后的數據輸入和輸出操作都是通過(guò)循環(huán)來(lái)實(shí)現的
DMA后處理:當傳送長(cháng)度計數器計到0時(shí),DMA操作結束,DMA控制器向CPU發(fā)中斷請求,CPU停止原來(lái)程序的執行,轉去中斷服務(wù)程序做DMA結束處理工作
5、通道工作方式
5.1、通道的基本概念
從邏輯結構上講,通道控制方式具有四級連接:主機——>通道——>設備控制器——>外部設備
通道是一種高級的I/O控制部件,它在一定的硬件基礎上利用軟件手段實(shí)現對I/O的控制和傳送,更多的免去了CPU的介入,從而使主機和外設的并行工作程度更高。當然,通道不能完全脫離CPU,它還要受到CPU的管理,比如啟動(dòng)、停止等,而且通道還應該向CPU報告自己的狀態(tài),以便CPU決定下一步的處理
通道大致具有以下幾個(gè)方面的功能:
接受CPU的I/O指令,按指令要求與指定的外設進(jìn)行聯(lián)系
從主存取出屬于該通道程序的通道指令,經(jīng)譯碼后向設備控制器和設備發(fā)送各種命令
實(shí)施主存和外設間的數據傳送,提供數據中間緩存的空間以及指示數據存放的主存地址和傳送的數據量
從外設獲得設備的狀態(tài)信息,形成并保存通道本身的狀態(tài)信息,根據要求將這些狀態(tài)信息送到主存的指定單元,供CPU使用
將外設的中斷請求和通道本身的中斷請求按次序及時(shí)報告CPU
設備控制器的功能:通道通過(guò)執行通道程序來(lái)控制設備控制器進(jìn)行數據傳送操作,并以通道狀態(tài)字來(lái)接受設備控制器反饋回來(lái)的外部設備狀態(tài)。因此,設備控制器就是通道對外部設備實(shí)現傳送控制的執行機構。設備控制器的具體任務(wù)如下:
從通道接受控制信號,控制外部設備完成所要求的操作
向通道反饋外部設備的狀態(tài)
將外部設備的各種不同信號轉換為通道能識別的標準信號
5.2、通道程序
在采用通道結構的計算機系統中,與輸入輸出有關(guān)的指令分為兩級
CPU執行的I/O指令:在采用通道結構的系統中,這種I/O指令比較簡(jiǎn)單,它并不直接控制具體的I/O操作,只是負責通道的啟動(dòng)和停止,查詢(xún)通道或設備的狀態(tài),控制通道完成I/O操作
通道執行的通道指令:通道指令也就是通道命令字,用它來(lái)編制通道程序,并由管理程序存放在主存的任何地方。在主CPU啟動(dòng)指定通道后,通道將執行通道程序來(lái)實(shí)現具體的I/O操作,直到組成通道指令程序的全部通道命令字執行完畢時(shí),這次I/O傳送就算完成了
5.3、通道工作過(guò)程
通道完成一次數據傳輸的主要過(guò)程分為如下三步:
在用戶(hù)程序中使用訪(fǎng)管指令進(jìn)入管理程序,由CPU通過(guò)管理程序組織一個(gè)通道程序,并啟動(dòng)通道
通道執行CPU為它組織的通道程序,完成指定的數據輸入輸出工作
通道程序結束后向CPU發(fā)中斷請求,CPU響應這個(gè)中斷請求后,第二次進(jìn)入操作系統,調用管理程序對中斷請求進(jìn)行處理
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/hbrqlpf/archive/2008/04/14/2290726.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。