在計算機的操作中最基本和最頻繁的操作是數(shù)據(jù)傳送,在微機系統(tǒng)中,數(shù)據(jù)主要在CPU、內(nèi)存和I/O接口之間傳送,在傳送過程中,關(guān)鍵問題是數(shù)據(jù)傳送的控制方式,按照I/O控制組織的演變順序以及外設(shè)與主機并行工作的程度,微機系統(tǒng)中數(shù)據(jù)傳送的控制方式主要有兩種,即程序控制方式和DMA(直接存儲器存取)方式。
4.2.1 程序控制傳送方式
程序控制的數(shù)據(jù)傳送分為無條件傳送、查詢傳送和中斷傳送,這類傳送方式的特點是,以CPU為中心,數(shù)據(jù)傳送的控制來自CPU,通過預(yù)先編制好的輸入或輸出程序(傳送指令和I/O指令)實現(xiàn)數(shù)據(jù)的傳送。這種傳送方式的數(shù)據(jù)傳送速度較低,傳送路徑要經(jīng)過CPU內(nèi)部的寄存器,同時數(shù)據(jù)的輸入輸出的響應(yīng)也較慢。
1.無條件傳送方式
又稱“同步傳送方式”。主要用于外設(shè)的定時是固定的而且是已知的場合,外設(shè)必需在微處理器限定的指令時間內(nèi)準(zhǔn)備就緒,并完成數(shù)據(jù)的接收或發(fā)送。通常采用的辦法是:把I/O指令插入到程序中,當(dāng)程序執(zhí)行到該I/O指令時,外設(shè)必定已為傳送數(shù)據(jù)做好了準(zhǔn)備,于是在此指令時間內(nèi)完成數(shù)據(jù)傳送任務(wù)。無條件傳送是最簡便的傳送方式,它所需的硬件和軟件都較少。
一個無條件傳送的例子如圖4-4所示。這是一個同步傳送的數(shù)據(jù)采集系統(tǒng),圖中U5為繼電器(U5a為繼電器的8個控制觸點,U5b為繼電器的8個線圈),繼電器線圈PO、P1、…P7控制8個觸點K0、K1、…、K7逐個接通,對8個輸入模擬量進(jìn)行采樣,采樣輸入之模擬量送入一個4位10進(jìn)制數(shù)字電壓表U1測量,把被采樣的模擬量轉(zhuǎn)換成16位BCD碼(4位10進(jìn)制數(shù)),高8位和低8位通過兩個8位端口U2(端口地址為llH和U3(端口地址為10H)送上系統(tǒng)的數(shù)據(jù)總線,CPU通過IN指令讀入轉(zhuǎn)換后的數(shù)字量。至于究竟采集哪一通道的模擬量,則由CPU通過U4(端口地址為20H)輸出控制信號,以控制繼電器線圈PO~P7中電流的通斷,繼而控制繼電器觸點KO~K7的吸合,以實現(xiàn)對不同通道模擬量的采集(“0”使線圈P電流“斷”,“1”使線圈P電流“通”)。
以下程序可以用來實現(xiàn)圖4-4電路的數(shù)據(jù)采集。
START:MOV DX,0100H;01→DH,設(shè)置閉合第一個繼電器代碼
;00→DL,設(shè)置斷開所有繼電器代碼
LEA BX,DSTOR;輸入數(shù)據(jù)緩沖區(qū)的地址偏移量→BX
XOR AL,AL;清AL及進(jìn)位標(biāo)志
AGAIN:MOV AL,DL
OUT 20H,AL;斷開所有繼電器線圈
CALL NEAR DELAY1;模擬繼電器觸點的釋放時間
MOV AL,DH
OUT 20H,AL;使PO吸合
CALL NEAR DELAY;模擬觸點閉合及數(shù)字電壓表的轉(zhuǎn)換時間
IN AX,10H;輸入
MOV [BX],AX
INC BX
INC BX
RCL DH,1;DH左移一位,為下一個觸點閉合作準(zhǔn)備
JNC AGAIN;8個模擬量未輸入完,循環(huán)此段程序
2.查詢傳送方式
又稱“異步傳送方式”。當(dāng)CPU同外設(shè)工作不同步時,很難確保CPU在執(zhí)行輸入操作時,外設(shè)一定是“準(zhǔn)備好”的;而在執(zhí)行輸出操作時,外設(shè)寄存器一定是“空”的。這樣為保證數(shù)據(jù)傳送的正確進(jìn)行,提出了查詢傳送方式。當(dāng)采用這種方式傳送前,CPU必須先對外設(shè)進(jìn)行狀態(tài)檢測。完成一次傳送過程的步驟如下:
(1)通過執(zhí)行一條輸入指令,讀取所選外設(shè)的當(dāng)前狀態(tài)。
(2)根據(jù)該設(shè)備的狀態(tài)決定程序去向,如果外設(shè)正處于“忙”或“未準(zhǔn)備就緒”,則程序轉(zhuǎn)回重復(fù)檢測外設(shè)狀態(tài),如果外設(shè)處于“空”或“準(zhǔn)備就緒”,則發(fā)出一條輸入購出指令,進(jìn)行一次數(shù)據(jù)傳送。
一個查詢傳送的例子如圖4-5所示。這是一個采用模/數(shù)轉(zhuǎn)換器(A/D轉(zhuǎn)換器)對8個模擬量IN0~I(xiàn)N7采樣的數(shù)據(jù)采集系統(tǒng)。8個輸入模擬量經(jīng)過多路開關(guān)U5選擇后送入A/D轉(zhuǎn)換器 U1,多路開關(guān)U5由控制端口U4(端口地址為04H)輸出的三位二進(jìn)制碼(對應(yīng)于b2b1b0位)控制,當(dāng)b2b1b0=000時選通IN0輸入A/D轉(zhuǎn)換器,…b2b1b0=1ll時選通IN7輸入A/D轉(zhuǎn)換器,每次只送出一路模擬量到A/D轉(zhuǎn)換器。同時,由控制端口U4的b4位控制A/D轉(zhuǎn)換器的啟動(b4=1)與停止(b4=0)。當(dāng)A/D轉(zhuǎn)換器完成轉(zhuǎn)換后,READ端輸出有效信號(高電平)經(jīng)過狀態(tài)端口U2(端口地址為02H)的b0位輸入到CPU的數(shù)據(jù)總線。然后,經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)由數(shù)據(jù)端口 U3(端口地址為 03H)輸入CPU的數(shù)據(jù)總線。該數(shù)據(jù)采集系統(tǒng)中,采用了三個端口——數(shù)據(jù)口U3、控制口U4和狀態(tài)口U2。
根據(jù)上述要求,可編寫如下數(shù)據(jù)采集程序:
START:MOV DL,OF8H;設(shè)置啟動A/D轉(zhuǎn)換的信號
MOV DI,OFFSET DSTOR ;輸入數(shù)據(jù)緩沖區(qū)的地址偏移量→DI
AGAIN:MOV AL,DL
AND AL OEFH;使D4=0
OUT 4,AL;停止A/D轉(zhuǎn)換
CALL DELAY;等待停止A/D操作的完成
MOV AL,DL
OUT 4,AL;啟動A/D,且選擇模擬量IN0
POLL: IN AL,2;輸入狀態(tài)信息
SHR AL,1
JNC POLL;若未READY,程序循環(huán)等待
IN AL,3;否則,輸入數(shù)據(jù)
STOSB;存至內(nèi)存
INC DL;修改多路開關(guān)控制信號,指向下一個模擬量
JNE AGAIN;8個模擬量未輸入完,循環(huán)
…
;已完,執(zhí)行別的程序段
3.中斷傳送方式
無條件傳送和查詢傳送的缺點是:CPU和外設(shè)只能串行工作,各外設(shè)之間也只能串行工作。為了使CPU和外設(shè)以及外設(shè)和外設(shè)之間能并行工作,以提高系統(tǒng)的工作效率,充分發(fā)揮CPU高速運算的能力,在計算機系統(tǒng)中引入了“中斷”系統(tǒng),利用中斷來實現(xiàn)CPU與外設(shè)之間的數(shù)據(jù)傳送,這就是中斷傳送方式。
在中斷傳送方式中,通常是在程序中安排好在某一時刻啟動某一臺外設(shè),然后CPU繼續(xù)執(zhí)行其主程序,當(dāng)外設(shè)完成數(shù)據(jù)傳送的準(zhǔn)備后,向CPU發(fā)出“中斷請求”信號,在CPU可以響應(yīng)中斷的條件下,現(xiàn)行主程序被“中斷”,轉(zhuǎn)去執(zhí)行“中斷服務(wù)程序”,在“中斷服務(wù)程序” 中完成一次CPU與外設(shè)之間的數(shù)據(jù)傳送,傳送完成后仍返回被中斷的主程序,從斷點處繼續(xù)執(zhí)行。
采用中斷傳送方式時,CPU從啟動外設(shè)直到外設(shè)就緒這段時間,一直仍在執(zhí)行主程序,而不是像查詢方式中處于等待狀態(tài),僅僅是在外設(shè)準(zhǔn)備好數(shù)據(jù)傳送的情況下才中止CPU執(zhí)行的主程序,在一定程度上實現(xiàn)了主機和外設(shè)的并行工作。同時,如果某一時刻有幾臺外設(shè)發(fā)出中斷請求,CPU可以根據(jù)預(yù)先安排好的優(yōu)先順序,按輕重緩急處理幾臺外設(shè)同CPU的數(shù)據(jù)傳送,這樣在一定程度上也可實現(xiàn)幾個外設(shè)的并行工作。
(1)中斷控制電路。在采用中斷傳送方式的I/O接口中,通常要采用中斷控制電路來實現(xiàn)中斷控制,該控制電路必須實現(xiàn)如下功能:
①能控制多個中斷源(采用中斷方式的I/O設(shè)備)實現(xiàn)中斷傳送,即任一個中斷源提出中斷請求,該中斷控制電路必須都能向CPU發(fā)出中斷請求信號;
②能對多個中斷源同時發(fā)出的中斷請求進(jìn)行優(yōu)先級判別;
③能實現(xiàn)中斷嵌套;
④能提供對應(yīng)中斷源的中斷類型碼(用以指示中斷服務(wù)程序的入口地址,見4.3節(jié))
目前常用的中斷控制器中,常采用如圖4-6所示的編碼器和比較器組成的中斷優(yōu)先級排隊電路來實現(xiàn)上述功能。
該電路的工作過程如下;
設(shè)有8個中斷源,當(dāng)任何一個有中斷請求時,通過“或”門,即可產(chǎn)生一個中斷請求信號,但它能否送至CPU的中斷請求線,還必須受比較器的控制。
8條中斷輸入線的任何一條,經(jīng)過編碼器可以產(chǎn)生三位二進(jìn)制優(yōu)先級編碼A2A1A0,優(yōu)先級最高的中斷輸入線的編碼為111,優(yōu)先級最低的中斷輸入線的編碼為000,而且若有多個中斷輸入線同時輸入,則編碼器只輸出優(yōu)先級最高的編碼。
正在進(jìn)行中斷處理的外設(shè)的優(yōu)先級編碼,由CPU通過軟件,經(jīng)數(shù)據(jù)總線送至優(yōu)先級寄存器,然后輸出編碼B2B1B0至比較器。
比較器對編碼A2A1A0與B2B1B0的大小進(jìn)行比較。若A≤B,則“A>B”端輸出低電平。封鎖與門1,禁止向CPU發(fā)出新的中斷請求;只有當(dāng)A>B時,比較器輸出端才為高電平,打開與門1,將中斷請求信號送至CPU的INT輸入端,當(dāng)CPU響應(yīng)中斷后,就中斷正在進(jìn)行的中斷服務(wù)程序,轉(zhuǎn)去執(zhí)行優(yōu)先級更高的中斷服務(wù)程序。
若CPU不在執(zhí)行中斷服務(wù)程序時(即在執(zhí)行主程序),則優(yōu)先級失效信號為高電平,此時如有任一中斷源請求中斷,都能通過與門2,向CPU發(fā)出INT信號。
當(dāng)外設(shè)的個數(shù)≤8時,它們公用一個產(chǎn)生中斷向量的電路,該電路有三位比較器的編碼A2A1A0供給。據(jù)此不同的編碼,即可轉(zhuǎn)入不同的入口地址。
圖中IRR為中斷請求寄存器、IMR為中斷屏蔽寄存器,其作用見4.4節(jié)。
(2)中斷傳送方式的接口電路。中斷傳送方式的接口電路如圖4-7所示。這是一個輸入接口電路。當(dāng)輸入設(shè)備準(zhǔn)備好一個數(shù)據(jù)后,發(fā)出選通信號STB,該信號一路送數(shù)據(jù)鎖存器U1,使輸入設(shè)備的8位數(shù)據(jù)送入鎖存器U1;另一路送中斷請求觸發(fā)器U2,將U2置“1”,若系統(tǒng)允許該設(shè)備發(fā)出中斷請求,則中斷屏蔽觸發(fā)器U3已置“l(fā)”,從而通過與門U7向CPU發(fā)出中斷請求信號INTR。若無其它設(shè)備的中斷請求,在CPU開中的情況下,則在現(xiàn)行指令結(jié)束后,CPU響應(yīng)該設(shè)備的中斷請求,執(zhí)行中斷響應(yīng)總線周期,發(fā)出中斷響應(yīng)信號INTA,要求提出中斷請求的外設(shè)把一個字節(jié)的中斷類型碼送上數(shù)據(jù)總線,然后CPU根據(jù)該中斷類型碼轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序,讀入數(shù)據(jù)(通過IN指令,打開三態(tài)緩沖器U4),同時復(fù)位中斷請求觸發(fā)器U2。中斷服務(wù)完成后,再返回被中斷的主程序。
4.2.2 DMA(直接存儲器存取)傳送方式
當(dāng)某些外設(shè),諸如磁盤、CRT顯示器、高速模數(shù)轉(zhuǎn)換器等要求高速而大量地傳送數(shù)據(jù)時,采用程序控制方式來傳送數(shù)據(jù)往往無法滿足速度的要求,就拿程序控制方式中傳送速度
最快的中斷方式而言,每傳送一個字節(jié)(或一個字)就得把主程序停下來,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序,在執(zhí)行中斷服務(wù)程序前要做好現(xiàn)場保護(hù),執(zhí)行完中斷服務(wù)程序后還得恢復(fù)現(xiàn)場。由于在程序控制方式中數(shù)據(jù)傳送過程始終受CPU的干預(yù),CPU都需要取出和執(zhí)行一系列指令,每一字節(jié)(或字)數(shù)據(jù)都必需經(jīng)過CPU的累加器才能輸入輸出,這就從本質(zhì)上限制了數(shù)據(jù)傳送的速度。為此提出了在外設(shè)和內(nèi)存之間直接地傳送數(shù)據(jù)的方式,即DMA傳送方式。
DMA(Direct Memory Access)是一種不需要 CPU干預(yù)也不需要軟件介入的高速數(shù)據(jù)傳送方式。由于CPU只啟動而不干預(yù)這一傳送過程,同時整個傳送過程只由硬件完成而不需軟件介入,所以其數(shù)據(jù)傳送速率可以達(dá)到很高。在DMA傳送方式中,對這一數(shù)據(jù)傳送過程進(jìn)行控制的硬件稱為DMA控制器(DMA)。
1.DMA操作的基本方法
DMA操作的基本方法有三種:
(1)周期挪用(Cycle stealing)。利用CPU不訪問存儲器的那些周期來實現(xiàn)DMA操作,此時,DMAC可以使用總線而不用通知CPU也不會妨礙CPU的工作。這種方法的關(guān)鍵是如何識別合適的可挪用的周期,以避免同CPU的操作發(fā)生重疊。有的CPU能產(chǎn)生一個表示存儲器是否正在被使用的信號(例如M6800的VMA),有的 CPU則規(guī)定在特定狀態(tài)下(例如Inte18080的T4、T5狀態(tài))不訪問存儲器,此時就可用于實現(xiàn)DMA操作。周期挪用并不減慢CPU的操作,但可能需要復(fù)雜的時序電路,而且數(shù)據(jù)傳送過程是不連續(xù)的和不規(guī)則的。
(2)周期擴展。使用專門的時鐘發(fā)生器/驅(qū)動器電路,當(dāng)需要進(jìn)行DMA操作時,由DMA發(fā)出請求信號給時鐘電路,時鐘電路把供給CPU的時鐘周期加寬,而提供給存儲器和DMAC的時鐘周期不變。這樣,CPU在加寬時鐘周期內(nèi)操作不往下進(jìn)行,而這加寬的時鐘周期相當(dāng)于若干個正常的時鐘周期,可用來進(jìn)行DMA操作。加寬的時鐘結(jié)束后,CPU仍按正常的時鐘繼續(xù)操作。這種方法會使CPU的處理速度減慢,而且CPU時鐘周期的加寬是有限制的。因此用這種方法進(jìn)行DMA傳送,一次只能傳送一個字節(jié)。
(3)CPU停機方式。在這種方式下,當(dāng)DMA要進(jìn)行DMA傳送時,DMAC向CPU發(fā)出DMA請求信號,迫使CPU在現(xiàn)行的總線周期(機器周期)結(jié)束后,使其地址總線、數(shù)據(jù)總線和部分控制總線處于高阻態(tài),從而讓出對總線的控制權(quán),并給出DMA響應(yīng)信號。DMA接到該響應(yīng)信號后,就可以控制總線,進(jìn)行數(shù)據(jù)傳送的控制工作,直到DMA操作完成,CPU再恢復(fù)對總線的控制權(quán),繼續(xù)執(zhí)行被中斷的程序。注意,采用這種方法進(jìn)行的DMA傳送期間,CPU處于空閑狀態(tài),會降低CPU的利用率,而且會影響CPU對中斷(包括不可屏蔽中斷)的響應(yīng)和動態(tài)hAM的刷新,這是需要加以考慮的。但在實際應(yīng)用中,這是最常用、最簡單的傳送方式,大部分DMA都采用這種方式。
2.DMA的傳送方式
通常,大部分DMA都有三種DMA傳送方式:
(1)單字節(jié)傳送方式。每次DMA傳送只傳送一個字節(jié)的數(shù)據(jù),傳送后釋放總線由CPU控制總線至少一個完整的總線周期。以后又測試DMA請求線DREQ,若有效,再進(jìn)入DMA周期。在這種方式中要注意:①在DMA響應(yīng)信號DACK有效前,DREQ必須保持有效;②若DREQ在傳送過程中一直保持有效,在兩次傳送之間也必需釋放總線。
(2)成組傳送方式。一個DMA請求可以傳送一組信息,這一組信息的字節(jié)數(shù)由編程決定(在DMA初始化時),只要在DACK有效之前DRFQ保持有效即可。一旦DACK有效,不管DREQ是否有效,DMA一直不放棄總線控制權(quán),直到整個數(shù)組傳送完。
(3)請求傳送方式。又稱查詢傳送方式。該方式的傳送類似于成組傳送方式,但每傳送一個字節(jié)后,DMA就檢測DRFQ,若無效,剛掛起;若有效,繼續(xù)DMA傳送,直到:①一組信息傳送結(jié)束;②外加信號強制DMA中止操作。
3.DMAC(DMA控制器)的基本功能
在DMA操作中,DMAC是控制存儲器和外設(shè)之間高速傳送數(shù)據(jù)的硬件電路,是一種完成直接數(shù)據(jù)傳送的專用處理器,它必需能夠取代CPU和軟件在程序控制傳送中的各項功能,因此DMA應(yīng)該具有如下功能:
(1)能接受外設(shè)的DMA請求信號DREQ,并能向外設(shè)發(fā)出DMA響應(yīng)信號DACK;
(2)能向CPU發(fā)出總線請求信號(HOLD或BUSRQ),當(dāng)CPU發(fā)出總線響應(yīng)信號(HLDA或BUSAK)后能接管對總線的控制權(quán),進(jìn)入DMA方式;
(3)能發(fā)出地址信息,對存儲器尋址并修改地址指針;
(4)能發(fā)出讀、寫等控制信號,包括存儲器訪問信號和I/O訪問信號;
(5)能決定傳送的字節(jié)數(shù),并能判斷DMA傳送是否結(jié)束;
(6)能發(fā)出DMA結(jié)束信號,釋放總線,使CPU恢復(fù)正常工作。
具有上述功能的DMA工作示意圖如圖4-8所示。
該電路的工作過程如下:當(dāng)輸入設(shè)備準(zhǔn)備好一個字節(jié)數(shù)據(jù)時,發(fā)出選通脈沖STB,該信號一方面選通“數(shù)據(jù)緩沖寄存器”U2,把輸入數(shù)據(jù)通過U2送入“鎖存器”U3;另一方面將“DMA請求觸發(fā)器” U1置“1”,作為鎖存器U3的準(zhǔn)備就緒信號READY,打開鎖存器U3,把輸入數(shù)據(jù)送上數(shù)據(jù)總線;同時DMA請求觸發(fā)器U1向DMA發(fā)出DMA請求信號。然后,DMA向CPU發(fā)出HOLD(總線請求)信號,CPU在現(xiàn)行總線周期結(jié)束后給予響
應(yīng),發(fā)出HLDA信號,DMAC接到該信號后接管總線控制權(quán),發(fā)出DMA響應(yīng)和地址信息,并發(fā)出存儲器寫命令,把外設(shè)輸入數(shù)據(jù)(經(jīng)緩沖器U2、鎖存器U3暫存在系統(tǒng)數(shù)據(jù)總線上)寫到內(nèi)存,然后修改地址指針,修改計數(shù)器、檢查傳送是否結(jié)束,若未結(jié)束,則循環(huán)傳送直至整個數(shù)據(jù)塊傳送完。在整個數(shù)據(jù)傳送完后,DMA撤除總線請求信號HOLD。在下一個T周期的上升沿,使HLDA變?yōu)闊o效。上述過程如圖4-9的波形圖所示。
聲明:
(一)由于考試政策等各方面情況的不斷調(diào)整與變化,本網(wǎng)站所提供的考試信息僅供參考,請以權(quán)威部門公布的正式信息為準(zhǔn)。
(二)本網(wǎng)站在文章內(nèi)容來源出處標(biāo)注為其他平臺的稿件均為轉(zhuǎn)載稿,免費轉(zhuǎn)載出于非商業(yè)性學(xué)習(xí)目的,版權(quán)歸原作者所有。如您對內(nèi)容、版權(quán)等問題存在異議請與本站聯(lián)系,我們會及時進(jìn)行處理解決。
相關(guān)推薦
2022年浙江自考心理學(xué)復(fù)習(xí)重點(七)
08-062023年10月浙江自考傳播學(xué)概論復(fù)習(xí)資料:反饋
08-292023年4月浙江自考環(huán)境心理學(xué)復(fù)習(xí)重點三
11-182022年浙江《組織與管理概論》復(fù)習(xí)資料
09-222022年浙江自考市政學(xué)復(fù)習(xí)筆記第四章
09-142023年4月浙江自考知識產(chǎn)權(quán)法復(fù)習(xí)資料:馳名商標(biāo)的特別保護(hù)
04-142023年10月浙江自考中國古代文學(xué)史(一)復(fù)習(xí)資料:盛唐詩歌
09-052023年4月浙江自考英美文學(xué)選讀復(fù)習(xí)筆記:Jane Austen
12-092024年4月浙江自考中藥化學(xué)復(fù)習(xí)筆記五
01-032023年浙江自考勞動就業(yè)概論復(fù)習(xí)資料:勞動概述
02-22與考生自由互動、并且能直接與專業(yè)老師進(jìn)行交流解答。
與考生自由互動、并且能直接與專業(yè)老師進(jìn)行交流解答。