<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

什么是DMA

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

什么是DMA

本文引用地址:http://dyxdggzs.com/article/201609/304534.htm

當我們向計算機中加入了一塊新的聲卡或其它適配卡時(shí),安裝程序可能會(huì )提醒我們應該選擇一個(gè)DMA通道。那DMA是什么呢? DMA(Direct Memory Access) ,即直接存儲器存取,是一種快速傳送數據的機制。數據傳遞可以從適配卡到內存,從內存到適配卡或從一段內存到另一段內存。DMA技術(shù)的重要性在于,利用它進(jìn)行數據傳送時(shí)不需要CPU的參與。每臺電腦主機板上都有DMA控制器,通常計算機對其編程,并用一個(gè)適配器上的ROM(如軟盤(pán)驅動(dòng)控制器上的ROM)來(lái)儲存程序,這些程序控制DMA傳送數據。一旦控制器初始化完成,數據開(kāi)始傳送,DMA就可以脫離CPU,獨立完成數據傳送。

在DMA傳送開(kāi)始的短暫時(shí)間內,基本上有兩個(gè)處理器為它工作,一個(gè)執行程序代碼,一個(gè)傳送數據。利用DMA傳送數據的另一個(gè)好處是,數據直接在源地址和目的地址之間傳送,不需要中間媒介。如果通過(guò)CPU把一個(gè)字節從適配卡傳送至內存,需要兩步操作。首先,CPU把這個(gè)字節從適配卡讀到內部寄存器中,然后再從寄存器傳送到內存的適當地址。DMA控制器將這些操作簡(jiǎn)化為一步,它操作總線(xiàn)上的控制信號,使寫(xiě)字節一次完成。這樣大大提高了計算機運行速度和工作效率。

計算機發(fā)展到今天,DMA已不再用于內存到內存的數據傳送,因為CPU速度非???,做這件事,比用DMA控制還要快,但要在適配卡和內存之間傳送數據,仍然是非DMA莫屬。要從適配卡到內存傳送數據,DMA同時(shí)觸發(fā)從適配卡讀數據總線(xiàn)(即I/O讀操作)和向內存寫(xiě)數據的總線(xiàn)。激活I(lǐng)/O讀操作就是讓適配卡把一個(gè)數據單位(通常是一個(gè)字節或一個(gè)字)放到PC數據總線(xiàn)上,因為此時(shí)內存寫(xiě)總線(xiàn)也被激活,數據就被同時(shí)從PC總線(xiàn)上拷貝到內存中。

對于每一次寫(xiě)操作,DMA控制器都控制地址總線(xiàn),通知應將數據寫(xiě)到哪段內存中去。 DMA控制數據從內存傳送到適配卡的方法與上面類(lèi)似。對每一個(gè)要傳送的單位數據,DMA控制器激活讀內存和I/O寫(xiě)操作的總線(xiàn)。內存地址被放到地址總線(xiàn)上,像從適配卡到內存傳送數據一樣,以數據總線(xiàn)為通道,數據從源地址直接傳送到目的地址。 DMA從DMA請求線(xiàn)(DREQ)上接收DMA請求,正像中斷控制器從中斷請求線(xiàn)(IRQ)上接收中斷請求一樣。

一個(gè)典型的從適配卡到內存的數據傳送是這樣進(jìn)行的,首先,對DMA控制器編程,寫(xiě)入數據要到達的內存地址和要傳送的字節數。適配器可以開(kāi)始傳送數據時(shí),它將激活DREQ線(xiàn),與DMA控制器連通。DMA控制器在與CPU取得總線(xiàn)控制權后,輸出內存地址,發(fā)送控制信號,使得一個(gè)字節或一個(gè)字從適配器讀出并寫(xiě)入相應內存中,然后更新內存地址,指向下一個(gè)字節(或字)要寫(xiě)入的地址,重復上面的操作,直至數據傳送完畢。對控制器進(jìn)行不同編程,就可以實(shí)現單字節傳送(即每傳送一個(gè)字節都要求一個(gè)DREQ信號)或塊數據傳送(即全部數據傳送只需要一個(gè)DREQ信號)。

如果你要往計算機中插一塊適配卡,而且適配卡使用DMA,通常安裝程序會(huì )讓你選擇一個(gè)DMA通道,設定DIP開(kāi)關(guān)或跳線(xiàn),來(lái)為相應適配器設置DMA通道。盡管從理論上講,只要不是同時(shí)使用DREQ線(xiàn),不同的適配卡可以共享這條線(xiàn)的,但是按常規,我們最好為每個(gè)適配卡單獨安排一個(gè)DMA通道,這樣就可以保證不會(huì )發(fā)生DMA沖突。附表是DMA的缺省分配情況。通道 功能 通道 功能 O 空閑 4 用于級聯(lián)DMA控制器 1 空閑 5 空閑 2 軟盤(pán) 6 空閑3 空閑 7 空閑從中可以看出,DMA通道2和4已被占用,在大多數微機上,通道1、3、5、6和7可由你任意分配。我們平時(shí)最好對自己的計算機上DMA通道的分配情況記錄下來(lái),以免我們向計算機增加新硬件時(shí)出現兩個(gè)適配卡共用一個(gè)通道,導致沖突。

DMA---Direct Memory Access,直接內存訪(fǎng)問(wèn),是一種數據傳輸模式。DMA方式下由于不直接訪(fǎng)問(wèn)計算機的CPU,而直接在RAM與設備之間傳輸,因而大大提高了數據傳輸速度



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>