熱心網(wǎng)友
什么是DMA? DMA(Direct Memory Access) ,即直接存儲(chǔ)器存取,是一種快速傳送數(shù)據(jù)的機(jī)制。數(shù)據(jù)傳遞可以從適配卡到內(nèi)存,從內(nèi)存到適配卡或從一段內(nèi)存到另一段內(nèi)存。DMA技術(shù)的重要性在于,利用它進(jìn)行數(shù)據(jù)傳送時(shí)不需要CPU的參與。每臺(tái)電腦主機(jī)板上都有DMA控制器,通常計(jì)算機(jī)對(duì)其編程,并用一個(gè)適配器上的ROM(如軟盤驅(qū)動(dòng)控制器上的ROM)來(lái)儲(chǔ)存程序,這些程序控制DMA傳送數(shù)據(jù)。一旦控制器初始化完成,數(shù)據(jù)開始傳送,DMA就可以脫離CPU,獨(dú)立完成數(shù)據(jù)傳送。 在DMA傳送開始的短暫時(shí)間內(nèi),基本上有兩個(gè)處理器為它工作,一個(gè)執(zhí)行程序代碼,一個(gè)傳送數(shù)據(jù)。利用DMA傳送數(shù)據(jù)的另一個(gè)好處是,數(shù)據(jù)直接在源地址和目的地址之間傳送,不需要中間媒介。如果通過(guò)CPU把一個(gè)字節(jié)從適配卡傳送至內(nèi)存,需要兩步操作。首先,CPU把這個(gè)字節(jié)從適配卡讀到內(nèi)部寄存器中,然后再?gòu)募拇嫫鱾魉偷絻?nèi)存的適當(dāng)?shù)刂?。DMA控制器將這些操作簡(jiǎn)化為一步,它操作總線上的控制信號(hào),使寫字節(jié)一次完成。這樣大大提高了計(jì)算機(jī)運(yùn)行速度和工作效率。 計(jì)算機(jī)發(fā)展到今天,DMA已不再用于內(nèi)存到內(nèi)存的數(shù)據(jù)傳送,因?yàn)镃PU速度非常快,做這件事,比用DMA控制還要快,但要在適配卡和內(nèi)存之間傳送數(shù)據(jù),仍然是非DMA莫屬。要從適配卡到內(nèi)存?zhèn)魉蛿?shù)據(jù),DMA同時(shí)觸發(fā)從適配卡讀數(shù)據(jù)總線(即I/O讀操作)和向內(nèi)存寫數(shù)據(jù)的總線。激活I(lǐng)/O讀操作就是讓適配卡把一個(gè)數(shù)據(jù)單位(通常是一個(gè)字節(jié)或一個(gè)字)放到PC數(shù)據(jù)總線上,因?yàn)榇藭r(shí)內(nèi)存寫總線也被激活,數(shù)據(jù)就被同時(shí)從PC總線上拷貝到內(nèi)存中。 對(duì)于每一次寫操作,DMA控制器都控制地址總線,通知應(yīng)將數(shù)據(jù)寫到哪段內(nèi)存中去。 DMA控制數(shù)據(jù)從內(nèi)存?zhèn)魉偷竭m配卡的方法與上面類似。對(duì)每一個(gè)要傳送的單位數(shù)據(jù),DMA控制器激活讀內(nèi)存和I/O寫操作的總線。內(nèi)存地址被放到地址總線上,像從適配卡到內(nèi)存?zhèn)魉蛿?shù)據(jù)一樣,以數(shù)據(jù)總線為通道,數(shù)據(jù)從源地址直接傳送到目的地址。 DMA從DMA請(qǐng)求線(DREQ)上接收DMA請(qǐng)求,正像中斷控制器從中斷請(qǐng)求線(IRQ)上接收中斷請(qǐng)求一樣。 一個(gè)典型的從適配卡到內(nèi)存的數(shù)據(jù)傳送是這樣進(jìn)行的,首先,對(duì)DMA控制器編程,寫入數(shù)據(jù)要到達(dá)的內(nèi)存地址和要傳送的字節(jié)數(shù)。適配器可以開始傳送數(shù)據(jù)時(shí),它將激活DREQ線,與DMA控制器連通。DMA控制器在與CPU取得總線控制權(quán)后,輸出內(nèi)存地址,發(fā)送控制信號(hào),使得一個(gè)字節(jié)或一個(gè)字從適配器讀出并寫入相應(yīng)內(nèi)存中,然后更新內(nèi)存地址,指向下一個(gè)字節(jié)(或字)要寫入的地址,重復(fù)上面的操作,直至數(shù)據(jù)傳送完畢。對(duì)控制器進(jìn)行不同編程,就可以實(shí)現(xiàn)單字節(jié)傳送(即每傳送一個(gè)字節(jié)都要求一個(gè)DREQ信號(hào))或塊數(shù)據(jù)傳送(即全部數(shù)據(jù)傳送只需要一個(gè)DREQ信號(hào))。 如果你要往計(jì)算機(jī)中插一塊適配卡,而且適配卡使用DMA,通常安裝程序會(huì)讓你選擇一個(gè)DMA通道,設(shè)定DIP開關(guān)或跳線,來(lái)為相應(yīng)適配器設(shè)置DMA通道。盡管從理論上講,只要不是同時(shí)使用DREQ線,不同的適配卡可以共享這條線的,但是按常規(guī),我們最好為每個(gè)適配卡單獨(dú)安排一個(gè)DMA通道,這樣就可以保證不會(huì)發(fā)生DMA沖突。附表是DMA的缺省分配情況。通道 功能 通道 功能 O 空閑 4 用于級(jí)聯(lián)DMA控制器 1 空閑 5 空閑 2 軟盤 6 空閑 3 空閑 7 空閑 從中可以看出,DMA通道2和4已被占用,在大多數(shù)微機(jī)上,通道1、3、5、6和7可由你任意分配。我們平時(shí)最好對(duì)自己的計(jì)算機(jī)上DMA通道的分配情況記錄下來(lái),以免我們向計(jì)算機(jī)增加新硬件時(shí)出現(xiàn)兩個(gè)適配卡共用一個(gè)通道,導(dǎo)致沖突。DMA---Direct Memory Access,直接內(nèi)存訪問(wèn),是一種數(shù)據(jù)傳輸模式。DMA方式下由于不直接訪問(wèn)計(jì)算機(jī)的CPU,而直接在RAM與設(shè)備之間傳輸,因而大大提高了數(shù)據(jù)傳輸速度。 。
熱心網(wǎng)友
Directly memory access channelBy:XIXI。QUMITAC-MSH-RBDRRT PC hardware architecture。DMA控制器(8237/8237-2)Integrated inside south bridge or ICH。DMA Channel Function:A:能接收外設(shè)的請(qǐng)求,向CPU發(fā)出DMA請(qǐng)求信號(hào)B:當(dāng)CPU發(fā)出回應(yīng)信號(hào)之后,接管對(duì)總線的控制,進(jìn)入DMA方式C:能尋址存儲(chǔ)器,即能輸出地址信息和修改地址D:能向存儲(chǔ)器和外設(shè)發(fā)出相應(yīng)的R/W信號(hào)E:能控制傳送的字節(jié)數(shù),判斷DMA傳送是否結(jié)束F:在DMA傳送結(jié)束以后,能結(jié)束 DMA請(qǐng)求信號(hào),釋放總線控制,使CPU恢復(fù)正常工作DMA控制器(8237/8237-2)Integrated inside south bridge or ICH。CHIP8237/8237-2 FUNCTION:A:一個(gè)芯片有2個(gè)控制器,每個(gè)控制器有四個(gè)DMA通道B:每個(gè)通道的請(qǐng)求都可以分別enable and disableC:每個(gè)請(qǐng)求的優(yōu)先權(quán)不同,可以固定,也可以通過(guò)編程控制D:可以在存儲(chǔ)器與外設(shè)、存儲(chǔ)器的兩個(gè)區(qū)域間進(jìn)行數(shù)據(jù)交換E:8237的DMA傳輸有以下四中方式:*單字節(jié)傳輸方式*數(shù)據(jù)塊傳輸方式*請(qǐng)求傳輸方式*級(jí)聯(lián)方式F:允許外界用EOP#(end of processor)來(lái)終止DMA的傳輸G:8237可以級(jí)聯(lián),任意擴(kuò)展通道數(shù)DMA控制器(8237/8237-2)Integrated inside south bridge or ICH。8237的結(jié)構(gòu):1:時(shí)序控制邏輯塊提供產(chǎn)生包括DMA傳送、請(qǐng)求、結(jié)束所需的內(nèi)部時(shí)序及外部信號(hào)2:程序命令控制塊對(duì)命令字及模式控制字進(jìn)行譯碼,以確定DMA服務(wù)類型3:優(yōu)先權(quán)編碼邏輯優(yōu)先權(quán)可以固定也可以旋轉(zhuǎn)DMA控制器(8237/8237-2)Integrated inside south bridge or ICH8237的工作狀態(tài)1:空閑周期(Free cycle)當(dāng)8237的每個(gè)通道都無(wú)請(qǐng)求時(shí)便進(jìn)入空閑周期,此時(shí)在每個(gè)時(shí)鐘周期都采樣通道的請(qǐng)求輸入信號(hào),只要無(wú)請(qǐng)求就始終停留在空閑狀態(tài)·2:有效周期(Active cycle)當(dāng)偵測(cè)到外設(shè)的請(qǐng)求信號(hào)時(shí),便脫離空閑周期,向CPU發(fā)出DMA請(qǐng)求信號(hào)HRQ,但尚未收到CPU的響應(yīng)信號(hào)HLDA,當(dāng)收到后,便使8237工作,開始DMA傳輸DMA控制器(8237/8237-2)Integrated inside south bridge or ICH主要信號(hào)解說(shuō):CLK 時(shí)鐘信號(hào) CS# 片選信號(hào) RESET復(fù)位信號(hào) READY就緒信號(hào) DREQ{0:3}各個(gè)通道的外設(shè)請(qǐng)求信號(hào) DACK{0:3}對(duì)應(yīng)之應(yīng)答信號(hào)HRQ向CPU要求控制權(quán)的請(qǐng)求信號(hào) HLDA CPU的應(yīng)答信號(hào)DB{0:7}數(shù)據(jù)總線0-7 A{0:7}地址總線0-7IOR# IOW# MEMR# MEMW#AEN地址有效,把鎖存在外部鎖存器中的高8位地址放到系統(tǒng)總線上ADSTB地址存取,在傳送開始時(shí),此信號(hào)把DB{0:7} 上輸出的高8位地址鎖存至外部鎖存器EOP#通過(guò)此信號(hào)來(lái)終結(jié)DMA傳送DMA控制器(8237/8237-2)Integrated inside south bridge or ICH8237的工作模式1:?jiǎn)巫止?jié)傳輸模式:每次DMA請(qǐng)求只傳送一個(gè)字節(jié)數(shù)據(jù),每傳完一 個(gè)字節(jié),會(huì)撤銷DMA請(qǐng)求信號(hào)釋放總線2:塊傳輸方式:每次DMA請(qǐng)求連續(xù)傳送一個(gè)數(shù)據(jù)塊,待規(guī)定的數(shù)據(jù)塊傳送完畢后才撤銷DMA請(qǐng)求釋放總線3:請(qǐng)求傳輸方式:在此種工作方式下,8237可以進(jìn)行連續(xù)的傳輸,當(dāng)出現(xiàn)以下三種情況之一時(shí)停止傳送a:字節(jié)計(jì)數(shù)器減到0發(fā)生TCb:由外界送來(lái)一個(gè)有效的EOP#信號(hào)c:外界的DREQ信號(hào)變得無(wú)效4:級(jí)聯(lián)方式:此種方式用于通過(guò)級(jí)聯(lián)以擴(kuò)展通道DMA控制器(8237/8237-2)Integrated inside south bridge or ICH一個(gè)DMA傳輸工作過(guò)程DEVICE REQUESTSEND DREQ TODMACDMACCPUCPU回應(yīng)DMA請(qǐng)求向CPU請(qǐng)求DMA回應(yīng)外設(shè)允許傳送AA傳送ENDDMAC接管BUSCPU交出總線控制權(quán)CPU恢復(fù)管理總線權(quán)。