小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DMA無(wú)處不在

 共同成長(zhǎng)888 2016-05-24

DMA無(wú)處不在http://blog./ilove314/1790879/message.aspx

         在一次閑聊中,一位朋友就問(wèn)其中幾位物流專(zhuān)業(yè)的同學(xué)“你們是什么專(zhuān)業(yè)的”。答曰“物流”。那位朋友就調(diào)侃說(shuō)“物流就是把東西搬來(lái)搬去”。同學(xué)不服,糾正說(shuō)“應(yīng)該是‘實(shí)現(xiàn)物體空間的位移‘”。然后我就問(wèn)自己,“我們這般電子工程師在干什么?很多時(shí)候(當(dāng)然不完全是)不也是在做物流嗎?只不過(guò)對(duì)象不同而已,因?yàn)槲覀兪恰畬?shí)現(xiàn)數(shù)據(jù)(信息)的空間位移’”。哈哈,說(shuō)得通俗一點(diǎn),“通信”不也是“物流”嗎?

         言歸正傳,數(shù)據(jù)的傳輸可以通過(guò)各種各樣的途徑,載體可以是模擬的,也可以是數(shù)字的;協(xié)議可以五花八門(mén)的,位寬也可以或大或小,速度當(dāng)然也是各有千秋,電平不同,穩(wěn)定性也有差異……而這里要提一種在CPU系統(tǒng)數(shù)據(jù)傳輸中很常見(jiàn)的通信方式——DMADirect Memory Access),即直接存儲(chǔ)存取。在很多較高端的DSP或是MCU中,都存在著這樣一種數(shù)據(jù)傳輸功能,引一段網(wǎng)絡(luò)上常見(jiàn)的對(duì)DAM的解釋如下。

DMA是一種不經(jīng)過(guò)CPU而直接從內(nèi)存存取數(shù)據(jù)的數(shù)據(jù)交換模式。在DMA模式下,CPU只須向DMA控制器下達(dá)指令,讓DMA控制器來(lái)處理數(shù)據(jù)的傳送,數(shù)據(jù)傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率,可以大大節(jié)省系統(tǒng)資源。

         那么也就是說(shuō),DMA工作時(shí)可以和正常工作的CPU毫不相關(guān),CPU可以控制(或者確切的說(shuō)是配置)DMA,而DMACPU和并行工作。大家都明白CPU工作大多要有軟件程序運(yùn)行,而軟件的順序決定了它的速度和性能是有瓶頸的,但是一旦有了DMA這個(gè)功能,就能夠給系統(tǒng)帶來(lái)一定性能上的提升。打個(gè)不恰當(dāng)?shù)谋确?,還是和前面提到的物流相關(guān),在AB地之間原本只有一條鐵軌(對(duì)應(yīng)一條總線(xiàn))一列火車(chē)(對(duì)應(yīng)一個(gè)CPU)進(jìn)行運(yùn)輸,那么如果要在一個(gè)月或一年之內(nèi)多運(yùn)一些東西(加大數(shù)據(jù)吞吐量),除了加快火車(chē)速度外別無(wú)選擇,但是DMA就相當(dāng)于在火車(chē)運(yùn)轉(zhuǎn)過(guò)程中的空閑路段上(不被總線(xiàn)占用的模塊)增加了一列火車(chē),他不負(fù)責(zé)全程運(yùn)輸,他只負(fù)責(zé)一個(gè)路段的運(yùn)輸(局部數(shù)據(jù)傳輸),并且只能在主運(yùn)火車(chē)不占用該路段的情況下工作(由總線(xiàn)仲裁器進(jìn)行判斷)。

換句話(huà)說(shuō),DMA可以提升系統(tǒng)的數(shù)據(jù)吞吐量。因?yàn)?/span>DMA能夠傳送CPU配置好的初始地址到目的地址之間的數(shù)據(jù),他在初始化并啟動(dòng)之后不需要CPU程序的任何其他控制,直到傳輸結(jié)束遞交一個(gè)中斷信號(hào)。DMA的吞吐量很大程度上決定于與他所連接的模塊(可以是存儲(chǔ)器、總線(xiàn)、芯片等等)。當(dāng)然,越多的DMA通道也就越能夠加大系統(tǒng)的數(shù)據(jù)吞吐量。就如圖1所示。從一個(gè)DMA到兩個(gè)DMA,可以在系統(tǒng)運(yùn)行中,讓每個(gè)模塊都不處于閑置狀態(tài)。

點(diǎn)擊看大圖

1

舉一個(gè)很簡(jiǎn)單的CPU系統(tǒng)中使用DMA的例子。如圖2所示,在不是用DMACPU系統(tǒng)中,需要完成一個(gè)數(shù)據(jù)采集(輸入)、數(shù)據(jù)處理、數(shù)據(jù)傳輸(輸出)的功能,就需要CPU從始至終不停的運(yùn)轉(zhuǎn),這三個(gè)步驟都是CPU的程序來(lái)控制,采集到數(shù)據(jù),然后扔進(jìn)buffer(通常是存儲(chǔ)器),處理的時(shí)候也需要從buffer里取數(shù)據(jù),處理完成還要送出去。同樣的功能,如圖3所示的含有DMA的系統(tǒng)中對(duì)數(shù)據(jù)的傳輸就顯得游刃有余,CPU可以專(zhuān)注于數(shù)據(jù)處理,數(shù)據(jù)輸入輸出這等搬運(yùn)工干的活就交給DMA來(lái)做,DMACPU可以共用一片存儲(chǔ)區(qū),并且采用乒乓操作進(jìn)行交互,這樣一來(lái),系統(tǒng)性能得到大大提高,CPU的運(yùn)算能力也可以最大限度的得到發(fā)揮。

DMA無(wú)處不在 - mme2003 - 明天眼睛的編程

2

DMA無(wú)處不在 - mme2003 - 明天眼睛的編程

3

         說(shuō)完CPU系統(tǒng)中的DMA,不得不轉(zhuǎn)移話(huà)題來(lái)解釋下這篇博文的主題“DMA無(wú)處不在”。沒(méi)錯(cuò),特權(quán)同學(xué)就是想說(shuō)FPGA,一個(gè)FPGA原型開(kāi)發(fā)系統(tǒng)中“DMA無(wú)處不在”。因?yàn)橐粋€(gè)數(shù)據(jù)流的處理中,往往是一個(gè)流水線(xiàn)式的一刻都不停歇的工作機(jī)制。并且任意兩個(gè)相關(guān)模塊的通信都有一套握手機(jī)制,都有專(zhuān)用的數(shù)據(jù)地址通道,當(dāng)然也可以復(fù)用,這時(shí)候就會(huì)涉及到總線(xiàn)仲裁。對(duì)于點(diǎn)到點(diǎn)數(shù)據(jù)傳輸,特權(quán)同學(xué)最喜歡的一種簡(jiǎn)單握手機(jī)制如圖4所示,模塊A要向模塊B寫(xiě)入或在讀出數(shù)據(jù),只要發(fā)出req請(qǐng)求,然后送ab/db,直到模塊B發(fā)出傳輸完成標(biāo)志ack信號(hào),那么模塊A撤銷(xiāo)req完成一次傳輸。

DMA無(wú)處不在 - mme2003 - 明天眼睛的編程

4

         而對(duì)于多點(diǎn)到點(diǎn)的傳輸,簡(jiǎn)單的看就如圖5所示。需要添加一個(gè)仲裁邏輯。

點(diǎn)擊看大圖

5

         再看整個(gè)系統(tǒng)的傳輸,最簡(jiǎn)單的順序流傳輸就如6所示。

點(diǎn)擊看大圖

6

         對(duì)于稍復(fù)雜一些的互聯(lián)架構(gòu)的系統(tǒng),如圖7所示。

點(diǎn)擊看大圖

7

         從上面的幾個(gè)示意圖中不難發(fā)現(xiàn),尤其是圖7,系統(tǒng)的利用率很高,可以做到同一時(shí)刻整個(gè)系統(tǒng)都在運(yùn)轉(zhuǎn),并且可以是毫不相關(guān)的。這就是FPGA的硬件特性所決定的,軟件系統(tǒng)的硬件架構(gòu)其實(shí)就是FPGA設(shè)計(jì)的精髓,在FPGA系統(tǒng)中的DMA是無(wú)處不在的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多