http://kktzf.com.cn/wiki/history/DMA?feed=atom
国产一区二区精品视频,久久99精品久久久久久青青,久久精品国产av一区二区三区
2025-07-20T23:01:00Z
本wiki上該頁面的版本歷史
MediaWiki 1.39.3
http://kktzf.com.cn/wiki/DMA?diff=111009&oldid=prev
尋找:?以內(nèi)容“'''DMA'''(Direct Memory Access,直接內(nèi)存存?。┦怯?jì)算機(jī)科學(xué)中的一種內(nèi)存訪問技術(shù)。它允許某些電腦內(nèi)部的硬件[[子...”創(chuàng)建新頁面
2012-06-29T08:55:50Z
<p>以內(nèi)容“'''DMA'''(Direct Memory Access,<a href="/wiki/%E7%9B%B4%E6%8E%A5%E5%86%85%E5%AD%98%E5%AD%98%E5%8F%96" class="mw-redirect" title="直接內(nèi)存存取">直接內(nèi)存存取</a>)是<a href="/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6" title="計(jì)算機(jī)科學(xué)">計(jì)算機(jī)科學(xué)</a>中的一種<a href="/wiki/%E5%86%85%E5%AD%98" title="內(nèi)存">內(nèi)存</a>訪問技術(shù)。它允許某些<a href="/wiki/%E7%94%B5%E8%84%91" class="mw-redirect" title="電腦">電腦</a>內(nèi)部的<a href="/wiki/%E7%A1%AC%E4%BB%B6" title="硬件">硬件</a>[[子...”創(chuàng)建新頁面</p>
<p><b>新頁面</b></p><div>'''DMA'''(Direct Memory Access,[[直接內(nèi)存存取]])是[[計(jì)算機(jī)科學(xué)]]中的一種[[內(nèi)存]]訪問技術(shù)。它允許某些[[電腦]]內(nèi)部的[[硬件]][[子系統(tǒng)]](電腦外設(shè)),可以獨(dú)立地直接讀寫[[系統(tǒng)]]內(nèi)存,而不需繞道[[中央處理器]]([[CPU]])。在同等程度的[[處理器]]負(fù)擔(dān)下,DMA是一種快速的[[數(shù)據(jù)]]傳送方式。很多[[硬件]]的系統(tǒng)會使用DMA,包含[[硬盤]]控制器、繪圖[[顯卡]]、網(wǎng)絡(luò)卡和[[聲卡]]。<br />
==DMA原理==<br />
DMA(Direct Memory Access,直接內(nèi)存存取) 是所有現(xiàn)代[[電腦]]的重要特色,它允許不同速度的硬件裝置來溝通,而不需要依于[[CPU]]的大量中斷負(fù)載。否則,CPU 需要從來源把每一片段的資料復(fù)制到 暫存器,然后把它們再次寫回到新的地方。在這個(gè)時(shí)間中,CPU 對于其他的工作來說就無法使用。DMA 傳輸將[[數(shù)據(jù)]]從一個(gè)地址空間復(fù)制到另外一個(gè)地址空間。當(dāng)CPU初始化這個(gè)傳輸動作,傳輸動作本身是由 DMA 控制器 來實(shí)行和完成。典型的例子就是移動一個(gè)外部內(nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能 嵌入式系統(tǒng) 算法和[[網(wǎng)絡(luò)]]是很重要的。<br />
==DMA工作步驟==<br />
*'''DMA請求'''<br />
CPU對DMA控制器初始化,并向[[I/O]][[接口]]發(fā)出操作命令,[[I/O接口]]提出DMA請求。<br />
*'''DMA響應(yīng)'''<br />
DMA控制器對DMA請求判別優(yōu)先級及屏蔽,向總線裁決邏輯提出總線請求。當(dāng)CPU執(zhí)行完當(dāng)前總線周期即可釋放總線控制權(quán)。此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示DMA已經(jīng)響應(yīng),通過DMA控制器通知I/O接口開始DMA傳輸。<br />
*'''DMA傳輸'''<br />
DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出讀寫命令,直接控制[[RAM]]與I/O接口進(jìn)行DMA傳輸。在DMA控制器的控制下,在存儲器和外部設(shè)備之間直接進(jìn)行數(shù)據(jù)傳送,在傳送過程中不需要[[中央處理器]]的參與。開始時(shí)需提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù)長度。<br />
*'''DMA結(jié)束'''<br />
當(dāng)完成規(guī)定的成批數(shù)據(jù)傳送后,DMA控制器即釋放總線控制權(quán),并向I/O接口發(fā)出結(jié)束信號。當(dāng)I/O接口收到結(jié)束信號后,一方面停止[[I/O]]設(shè)備的工作,另一方面向CPU提出中斷請求,使CPU從不介入的狀態(tài)解脫,并執(zhí)行一段檢查本次DMA傳輸操作正確性的[[代碼]]。最后,帶著本次操作結(jié)果及狀態(tài)繼續(xù)執(zhí)行原來的[[程序]]。由此可見,DMA傳輸方式無需CPU直接控制傳輸,也沒有中斷處理方式那樣保留現(xiàn)場和恢復(fù)現(xiàn)場的過程,通過硬件為RAM與I/O設(shè)備開辟一條直接傳送數(shù)據(jù)的通路,使CPU的效率大為提高。<br />
==DMA傳送方式==<br />
DMA技術(shù)的出現(xiàn),使得外圍設(shè)備可以通過DMA控制器直接訪問內(nèi)存,與此同時(shí),CPU可以繼續(xù)執(zhí)行程序.那么DMA控制器與CPU怎樣分時(shí)使用內(nèi)存呢?通常采用以下三種方法:(1)停止CPU訪內(nèi);(2)周期挪用;(3)DMA與CPU交替訪內(nèi)存. <br />
*'''停止CPU訪問內(nèi)存'''<br />
當(dāng)外圍設(shè)備要求傳送一批數(shù)據(jù)時(shí),由DMA控制器發(fā)一個(gè)停止信號給CPU,要求CPU放棄對地址總線、數(shù)據(jù)總線和有關(guān)控制總線的使用權(quán).DMA控制器獲得總線控制權(quán)以后,開始進(jìn)行數(shù)據(jù)傳送.在一批數(shù)據(jù)傳送完畢后,DMA控制器通知CPU可以使用內(nèi)存,并把總線控制權(quán)交還給CPU.圖(a)是這種傳送方式的時(shí)間圖.很顯然,在這種DMA傳送過程中,CPU基本處于不工作狀態(tài)或者說保持狀態(tài)。優(yōu)點(diǎn): 控制簡單,它適用于數(shù)據(jù)傳輸率很高的設(shè)備進(jìn)行成組傳送。缺點(diǎn): 在DMA控制器訪內(nèi)階段,內(nèi)存的效能沒有充分發(fā)揮,相當(dāng)一部分內(nèi)存工作周期是空閑的。這是因?yàn)椋鈬O(shè)備傳送兩個(gè)數(shù)據(jù)之間的間隔一般總是大于內(nèi)存存儲周期,即使高速I/O設(shè)備也是如此。例如,軟盤讀出一個(gè)8位二進(jìn)制數(shù)大約需要32us,而半導(dǎo)體內(nèi)存的存儲周期小于0.5us,因此許多空閑的存儲周期不能被CPU利用. <br />
*'''周期挪用''' <br />
當(dāng)I/O設(shè)備沒有DMA請求時(shí),CPU按程序要求訪問內(nèi)存;一旦I/O設(shè)備有DMA請求,則由I/O設(shè)備挪用一個(gè)或幾個(gè)內(nèi)存周期。I/O設(shè)備要求DMA傳送時(shí)可能遇到兩種情況:<br />
#此時(shí)CPU不需要訪內(nèi),如CPU正在執(zhí)行乘法指令。由于乘法指令執(zhí)行時(shí)間較長,此時(shí)I/O訪內(nèi)與CPU訪內(nèi)沒有沖突,即I/O設(shè)備挪用一二個(gè)內(nèi)存周期對CPU執(zhí)行程序沒有任何影響。<br />
#I/O設(shè)備要求訪內(nèi)時(shí)CPU也要求訪內(nèi),這就產(chǎn)生了訪內(nèi)沖突,在這種情況下I/O設(shè)備訪內(nèi)優(yōu)先,因?yàn)镮/O訪內(nèi)有時(shí)間要求,前一個(gè)I/O數(shù)據(jù)必須在下一個(gè)訪內(nèi)請求到來之前存取完畢。顯然,在這種情況下I/O 設(shè)備挪用一二個(gè)內(nèi)存周期,意味著CPU延緩了對指令的執(zhí)行,或者更明確地說,在CPU執(zhí)行訪內(nèi)指令的過程中插入DMA請求,挪用了一二個(gè)內(nèi)存周期。 與停止CPU訪內(nèi)的DMA方法比較,周期挪用的方法既實(shí)現(xiàn)了I/O傳送,又較好地發(fā)揮了內(nèi)存和CPU的效率,是一種廣泛采用的方法。但是I/O設(shè)備每一次周期挪用都有申請總線控制權(quán)、建立線控制權(quán)和歸還總線控制權(quán)的過程,所以傳送一個(gè)字對內(nèi)存來說要占用一個(gè)周期,但對DMA控制器來說一般要2—5個(gè)內(nèi)存周期(視邏輯線路的延遲而定)。因此,周期挪用的方法適用于I/O設(shè)備讀寫周期大于內(nèi)存存儲周期的情況。 <br />
*'''DMA與CPU交替訪內(nèi)'''<br />
如果CPU的工作周期比內(nèi)存存取周期長很多,此時(shí)采用交替訪內(nèi)的方法可以使DMA傳送和CPU同時(shí)發(fā)揮最高的效率。假設(shè)CPU工作周期為 1.2μs,內(nèi)存存取周期小于0.6μs,那么一個(gè)CPU周期可分為C1和C2兩個(gè)分周期,其中C1供DMA控制器訪內(nèi),C2專供CPU訪內(nèi)。<br />
==相關(guān)詞條==<br />
*[[I/O]]<br />
*[[計(jì)算機(jī)]]<br />
*[[CPU]]<br />
*[[數(shù)據(jù)]]<br />
==參考來源==<br />
*http://zh.wikipedia.org/wiki/DMA<br />
*http://baike.baidu.com/view/32471.htm<br />
[[category:CPU|D]]<br />
[[category:計(jì)算機(jī)|D]]</div>
尋找