直接存儲(chǔ)器概述
直接存儲(chǔ)器存取是一種高速數(shù)據(jù)傳輸?shù)姆椒?,?shù)據(jù)可以從一個(gè)通道,不經(jīng)過CPU的處理就直接在存儲(chǔ)器或輸入輸出設(shè)備之間進(jìn)行傳輸。
一個(gè)設(shè)備接口試圖通過總線直接向另一個(gè)設(shè)備發(fā)送數(shù)據(jù)(一般是大批量的數(shù)據(jù)),它會(huì)先向CPU發(fā)送DMA請(qǐng)求信號(hào)。外設(shè)通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權(quán)的總線請(qǐng)求,CPU收到該信號(hào)后,在當(dāng)前的總線周期結(jié)束后,會(huì)按DMA信號(hào)的優(yōu)先級(jí)和提出DMA請(qǐng)求的先后順序響應(yīng)DMA信號(hào)。CPU對(duì)某個(gè)設(shè)備接口響應(yīng)DMA請(qǐng)求時(shí),會(huì)讓出總線控制權(quán)。于是在DMA控制器的管理下,外設(shè)和存儲(chǔ)器直接進(jìn)行數(shù)據(jù)交換,而不需CPU干預(yù)。數(shù)據(jù)傳送完畢后,設(shè)備接口會(huì)向CPU發(fā)送DMA結(jié)束信號(hào),交還總線控制權(quán)。實(shí)現(xiàn)DMA傳送的基本操作如下:(1)外設(shè)可通過DMA控制器向CPU發(fā)出DMA請(qǐng)求:(2)CPU響應(yīng)DMA請(qǐng)求,系統(tǒng)轉(zhuǎn)變?yōu)镈MA工作方式,并把總線控制權(quán)交給DMA控制器;(3)由DMA控制器發(fā)送存儲(chǔ)器地址,并決定傳送數(shù)據(jù)塊的長(zhǎng)度;(4)執(zhí)行DMA傳送;(5)DMA操作結(jié)束,并把總線控制權(quán)交還CPU。
DMA的工作過程大致如下:①當(dāng)外設(shè)準(zhǔn)備好,可以進(jìn)行DMA傳送時(shí),外設(shè)向DMA控制器發(fā)出DMA傳送請(qǐng)求信號(hào)DREQ;②DMA控制器收到請(qǐng)求后,向CPU發(fā)出“總線請(qǐng)求”信號(hào)HOLD,表示希望占用總線;③CPU在完成當(dāng)前總線周期后會(huì)立即對(duì)HOLD信號(hào)進(jìn)行響應(yīng)。響應(yīng)包括兩個(gè)方面:一是CPU將數(shù)據(jù)總線、地址總線和相應(yīng)的控制信號(hào)線均置為高阻態(tài),由此放棄對(duì)總線的控制權(quán)。另一方面,CPU向DMA控制器發(fā)出“總線響應(yīng)”信號(hào)HLDA;④DMA控制器收到HLDA信號(hào)后,就開始控制總線,并向外設(shè)發(fā)出DMA響應(yīng)信號(hào)⑤DMA控制器送出地址信號(hào)和相應(yīng)的控制信號(hào),實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存之間的直接數(shù)據(jù)傳送。例如,在地址總線上發(fā)出存儲(chǔ)器的地址,向存儲(chǔ)器發(fā)出寫信號(hào)同時(shí)向外設(shè)發(fā)出I/o地址和AEN信號(hào),即可從外設(shè)向內(nèi)存?zhèn)魉鸵粋€(gè)字節(jié);⑥D(zhuǎn)MA控制器自動(dòng)修改地址和字節(jié)計(jì)數(shù)器,并據(jù)此判斷是否需要重復(fù)傳送操作。規(guī)定的數(shù)據(jù)傳送完后,DMA控制器就撤銷發(fā)往CPU的HOLD信號(hào)。CPU檢測(cè)到HOLD失效后,緊接著撤銷HLDA信號(hào),并在下一時(shí)鐘周期重新開始控制總線,繼續(xù)執(zhí)行原來的程序。
DMA方式具有下列特點(diǎn):①改變了主存與CPU的固定聯(lián)系,主存既可被CPU訪問,又可被外設(shè)訪問;②在數(shù)據(jù)塊傳送時(shí),主存地址的確定、傳送數(shù)據(jù)的計(jì)數(shù)等都由硬件電路直接實(shí)現(xiàn);③主存中要開辟專用緩沖區(qū),及時(shí)供給和接收外設(shè)的數(shù)據(jù);④CPU和外設(shè)并行工作,提高了系統(tǒng)的效率;⑤DMA在傳送開始前要通過程序進(jìn)行預(yù)處理,結(jié)束后要通過中斷方式進(jìn)行后處理。
DMA的適用場(chǎng)合有下述幾種:①硬盤和軟盤I/O??梢允褂肈MAC作磁盤存儲(chǔ)介質(zhì)與半導(dǎo)體主存儲(chǔ)器之間傳送數(shù)據(jù)的接口。這種場(chǎng)合需要將磁盤中的大量數(shù)據(jù)如操作系統(tǒng)等快速地裝入內(nèi)部存儲(chǔ)器。②快速通信通道I/O。例如,光導(dǎo)纖維通信鏈路,DMAC可以用來作為計(jì)算機(jī)系統(tǒng)和快速通信通道之間的接口,例如,作為同步通信數(shù)據(jù)的發(fā)送和接收,以便提高響應(yīng)時(shí)間,支持較高的數(shù)據(jù)傳輸速率,并使CPU脫離出來做其他工作。③多處理機(jī)和多程序數(shù)據(jù)塊傳送。對(duì)于多處理機(jī)結(jié)構(gòu),通過DMAC控制數(shù)據(jù)傳送,可以較容易地實(shí)現(xiàn)專用存儲(chǔ)器和公用存儲(chǔ)器之間的數(shù)據(jù)傳送,對(duì)多任務(wù)應(yīng)用、頁式調(diào)度和任務(wù)調(diào)度都需要傳送大量的數(shù)據(jù)。因此,采用DMA方式可以提高數(shù)據(jù)傳輸速度。④掃描操作。在圖像處理中,對(duì)CRT屏幕送數(shù)據(jù),也可以采用DMA方式。⑤快速數(shù)據(jù)采集。當(dāng)要采集的數(shù)據(jù)量很大,而且數(shù)據(jù)是以密集突發(fā)的形式出現(xiàn)時(shí),例如對(duì)波形的采集,此時(shí)采用DMA方式可能是最好的方法,它能滿足響應(yīng)時(shí)間和數(shù)據(jù)傳輸率的要求。⑥在PC/XT機(jī)中還采用DMA方式進(jìn)行DRAM的刷新操作。