欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

對(duì)DMA的理解和認(rèn)識(shí)

安芯教育科技 ? 來(lái)源:芯工阿文 ? 2023-08-08 09:31 ? 次閱讀

本文選自極術(shù)專欄“IC設(shè)計(jì)”,作者芯工阿文,授權(quán)轉(zhuǎn)自微信公眾號(hào)芯工阿文,本篇主要講述對(duì)DMA的理解和認(rèn)識(shí)。

這些天有個(gè)想法,在數(shù)字芯片設(shè)計(jì)中,很多模塊都可以近似為DMA模型,包括CPU?;谠撓敕ㄟM(jìn)行擴(kuò)展,一些復(fù)雜的模塊可以變得稍微容易理解。

首先描述一下什么是DMA,Direct Memory Access,字面意思就是直接內(nèi)存訪問(wèn)。個(gè)人認(rèn)為這個(gè)名詞應(yīng)該是從軟件視角進(jìn)行定義的。實(shí)際上,DMA完成的工作,無(wú)非就是從一個(gè)接口讀取數(shù)據(jù),再發(fā)送至另外一個(gè)接口,也就是對(duì)應(yīng)著一讀一寫。從硬件角度來(lái)看,這個(gè)是很常規(guī)的操作,但在軟件看來(lái),可以將大量的操作卸載到DMA,從而將CPU釋放出來(lái)做更多的事情。所以DMA實(shí)際完成的工作也就是數(shù)據(jù)的轉(zhuǎn)移,基于轉(zhuǎn)移的兩個(gè)方向之間的差異和特征,從而帶來(lái)各種收益。

數(shù)據(jù)轉(zhuǎn)移,簡(jiǎn)單來(lái)說(shuō)有3個(gè)要素,源地址、目的地址和數(shù)據(jù)長(zhǎng)度。一般來(lái)說(shuō),DMA的實(shí)現(xiàn)有兩種方式,一是Direct DMA,另一個(gè)是鏈表DMA。Direct DMA就是通過(guò)寄存器讀寫的方式直接配置上述的3個(gè)要素;鏈表DMA就是將保存上述3要素的描述符存放于內(nèi)存,再將其地址信息配置至DMA,啟動(dòng)DMA后,解析描述符后做數(shù)據(jù)轉(zhuǎn)移。

鏈表DMA的處理流程近似如下:

1)根據(jù)配置信息啟動(dòng)描述符讀取操作,解析描述符;

2)基于描述信息,獲取源地址和數(shù)據(jù)長(zhǎng)度,啟動(dòng)數(shù)據(jù)讀取操作;

3)讀取數(shù)據(jù)返回后,再將數(shù)據(jù)發(fā)送至目的地址,完成后告知狀態(tài)。

以此進(jìn)行擴(kuò)展,比如讀取數(shù)據(jù)返回后,做各種運(yùn)算,再將結(jié)果發(fā)送至目的地址,不少加速計(jì)算模塊均是基于該思路進(jìn)行處理的。再比如描述符讀取做一些處理,支持多樣化的描述符,或者描述符再嵌套描述符,等等。

個(gè)人認(rèn)為,在SOC芯片內(nèi)的幾乎所有計(jì)算模塊,均可以基于DMA的模型進(jìn)行理解,再以此進(jìn)行擴(kuò)展開發(fā),包括CPU。

再來(lái)看一下CPU是如何工作的,沒(méi)有深入了解CPU的結(jié)構(gòu),僅僅知道大概,如有錯(cuò)誤,請(qǐng)輕噴。首先,CPU基于起始地址,從該地址讀取指令,再執(zhí)行。一般來(lái)說(shuō),執(zhí)行指令會(huì)伴隨著數(shù)據(jù)讀取,也就是LOAD,將數(shù)據(jù)搬運(yùn)過(guò)來(lái)之后,再對(duì)數(shù)據(jù)做各種運(yùn)算,完成后再將數(shù)據(jù)放回去,對(duì)應(yīng)著STORE。這個(gè)過(guò)程是否跟DMA搬運(yùn)數(shù)據(jù)非常類似?如下是對(duì)應(yīng)關(guān)系。

a00bd496-3587-11ee-9e74-dac502259ad0.png

圖1

兩者之間有非常近似的對(duì)應(yīng)關(guān)系,基本原理是一樣的,只是在具體實(shí)現(xiàn)過(guò)程中,存在較大的差異。如描述符,對(duì)于DMA,僅有有限的幾個(gè)格式,不同實(shí)現(xiàn)有不同的指令格式,對(duì)于CPU,指令集就相當(dāng)于描述符,類型很多,不同架構(gòu)有不同的指令集,由此也會(huì)引入很多問(wèn)題,其復(fù)雜度是DMA的很多很多倍,如CPU需要Cache,但是從沒(méi)聽說(shuō)過(guò)DMA需要使用Cache。

還有一個(gè)明顯差別,CPU有計(jì)算邏輯ALU,通常來(lái)說(shuō),DMA將數(shù)據(jù)從源地址搬回來(lái)后,就直接寫到目的地址。這里再換個(gè)思路,如果在這兩者中間,加入一點(diǎn)計(jì)算邏輯,比如壓縮解壓縮、編解碼等等,是否與很多硬件加速器的架構(gòu)基本是一致的?

可以看到,CPU和DMA之間,差不多就是兩個(gè)極端。CPU是屬于general purpose,DMA是目的性非常強(qiáng)的設(shè)計(jì)。在這中間取一個(gè)點(diǎn),是否就可以對(duì)應(yīng)GPU、AI、DSA等等場(chǎng)景?

前一段時(shí)間想做點(diǎn)事情,設(shè)計(jì)一個(gè)DMA,但在數(shù)據(jù)讀取和寫入之間開放一個(gè)接口,在這接口之內(nèi)做一些計(jì)算邏輯,以此針對(duì)各種具體的數(shù)據(jù)計(jì)算場(chǎng)景,基于需求進(jìn)行設(shè)計(jì)。也就是說(shuō),將這個(gè)DMA作為一個(gè)平臺(tái),基于該平臺(tái)做后續(xù)的二次開發(fā)。但是,在梳理上述的概念之后,發(fā)現(xiàn)其實(shí)現(xiàn)在已經(jīng)有類似的東西,也就是RISC-V。該指令集是完全開放的,當(dāng)前也有各種各樣的開源代碼,有Verilog實(shí)現(xiàn)的,還有chisel,也有spinalHDL,完全可以基于這些代碼做針對(duì)需求場(chǎng)景的二次開發(fā),而且可以從更小的數(shù)據(jù)粒度進(jìn)行操控。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10911

    瀏覽量

    213150
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8718

    瀏覽量

    152027
  • IC設(shè)計(jì)
    +關(guān)注

    關(guān)注

    38

    文章

    1302

    瀏覽量

    104327
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    101028
  • 數(shù)字芯片
    +關(guān)注

    關(guān)注

    1

    文章

    110

    瀏覽量

    18485

原文標(biāo)題:把DMA當(dāng)作一個(gè)模型

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DMA 串口傳輸原理解

    從這個(gè)角度來(lái)說(shuō),DMA 并沒(méi)有加快串口本身的傳輸速度,只是解放了 CPU 資源而已。但是 CPU 被解放了, DMA 所使用的 緩存 資源可不能也隨之解放呀,只能等發(fā)送完畢后才能釋放。所以最簡(jiǎn)單的方法是在 緩存 前面加一個(gè) static 。
    發(fā)表于 09-16 10:04 ?1828次閱讀
    <b class='flag-5'>DMA</b> 串口傳輸原<b class='flag-5'>理解</b>析

    10行代碼,就能讓你真正理解DMA!

    dma
    YS YYDS
    發(fā)布于 :2023年05月22日 15:44:18

    F28335 DMA設(shè)置代碼的理解

    嗎?我的理解是如果AD采樣頻率是64HZ的話,DMA的中斷頻率差不多是1HZ。然而我不論是設(shè)置采樣頻率為2000HZ還是2HZ,DMA產(chǎn)生中斷的頻率都沒(méi)有變化。不知道是我理解有錯(cuò)還是什
    發(fā)表于 06-25 08:26

    K60的UART模塊帶DMA接口怎么理解

    請(qǐng)教下UART帶DMA接口怎么理解???我想用K60的UART做一個(gè)485通信,主要的功能就是用K60做上位機(jī)讀取下位機(jī)的數(shù)據(jù),這個(gè)過(guò)程可以用485的通信協(xié)議來(lái)傳輸數(shù)據(jù),但是怎么利用一下DMA接口呢
    發(fā)表于 02-23 10:40

    如何理解AT32的DMA彈性映射

    接觸雅特力的芯片有一段時(shí)間了,不得不說(shuō),相比于STM32F103有些功能做的確實(shí)挺不錯(cuò)的,比如AT32F403A DMA的彈性映射以下是我們所習(xí)慣的固定映射,這里兼容STM32F103的DMA固定
    發(fā)表于 08-11 21:49

    如何理解DMADMA配置過(guò)程是怎樣的?

    如何理解DMA?DMA配置過(guò)程是怎樣的?
    發(fā)表于 02-14 06:51

    關(guān)于stm32f1中的ADC和DMA理解

    怎樣去校準(zhǔn)stm32f1中的ADC呢?怎樣去理解stm32f1中的ADC和DMA呢?
    發(fā)表于 02-21 06:05

    DMADMA控制器

    DMA(Direct Memory Access)的概念DMA方式不用處理器干預(yù)完成M與I/O間數(shù)據(jù)傳送。DMA期間系統(tǒng)總線由其它主模塊控
    發(fā)表于 12-09 11:03 ?50次下載
    <b class='flag-5'>DMA</b>與<b class='flag-5'>DMA</b>控制器

    dma是什么意思? 什么是dma?

    dma是什么意思? 什么是dma? DMA的英文拼寫是“Direct Memory Access”,漢語(yǔ)的意思就是直接內(nèi)存訪問(wèn),是一種不經(jīng)過(guò)CPU而直接從內(nèi)存了存取數(shù)據(jù)的數(shù)據(jù)交換模式
    發(fā)表于 04-17 17:06 ?3.6w次閱讀
    <b class='flag-5'>dma</b>是什么意思? 什么是<b class='flag-5'>dma</b>?

    鎳電池的理解認(rèn)識(shí)

    鎳電池的理解認(rèn)識(shí) 鎳氫電池也有記憶效應(yīng),只是沒(méi)鎳鎘電池明顯。記憶效應(yīng)最不明顯的是鋰電池。  記憶效應(yīng)不明顯意味著,可以多次充電
    發(fā)表于 11-05 16:16 ?1669次閱讀

    STM32串口DMA問(wèn)題詳解

    昨天晚上在STM32串口DMA的問(wèn)題上糾結(jié)了好長(zhǎng)時(shí)間,所以今天上午寫篇博客來(lái)談?wù)勎覍?duì)串口DMA發(fā)送的理解。
    的頭像 發(fā)表于 10-27 16:16 ?8499次閱讀
    STM32串口<b class='flag-5'>DMA</b>問(wèn)題詳解

    單片機(jī)的RAM和FLASH認(rèn)識(shí)理解

    最近在一個(gè)問(wèn)答社區(qū)回答了一個(gè)問(wèn)題,關(guān)于單片機(jī)存儲(chǔ)器的,于是有了想專門寫一篇關(guān)于單片機(jī)存儲(chǔ)器的想法。作為單片機(jī)內(nèi)部一個(gè)重要組成部分,存儲(chǔ)器占有很重要的地位,今天就來(lái)聊聊我對(duì)于單片機(jī)的內(nèi)部存儲(chǔ)器RAM和FLASH的一些認(rèn)識(shí)理解。
    的頭像 發(fā)表于 05-03 18:17 ?1.1w次閱讀
    單片機(jī)的RAM和FLASH<b class='flag-5'>認(rèn)識(shí)</b><b class='flag-5'>理解</b>

    16、STM32——DMA詳解

    的事情,好像是多線程一樣。數(shù)據(jù)傳輸支持從外設(shè)到存儲(chǔ)器或者存儲(chǔ)器到存儲(chǔ)器,這里的存儲(chǔ)器可以是 SRAM 或者是 FLASH。DMA 控制器包含了 DMA1 和 DMA2,其中 DMA1
    發(fā)表于 12-02 13:51 ?21次下載
    16、STM32——<b class='flag-5'>DMA</b>詳解

    STM32使用DMA控制器試驗(yàn)總結(jié)

    在使用串口DMA試驗(yàn)過(guò)程中,遇到了一些問(wèn)題,通過(guò)試驗(yàn)找到了問(wèn)題所在,也對(duì)DMA的應(yīng)用有了新的認(rèn)識(shí),僅以此分享給大家,不足之處請(qǐng)多多指教。DMA初始化// 串口對(duì)應(yīng)的
    發(fā)表于 12-03 09:21 ?7次下載
    STM32使用<b class='flag-5'>DMA</b>控制器試驗(yàn)總結(jié)

    STM32學(xué)習(xí)筆記(串口+DMA)

    小焦的STM32學(xué)習(xí)日志(一)2020.4.20數(shù)據(jù)位大小與大端小端:實(shí)際應(yīng)用:`assert_param();`函數(shù)的理解:串口配合DMA的使用方法回顧:實(shí)現(xiàn)平臺(tái)說(shuō)明:重要的初始化內(nèi)容:需要額外
    發(fā)表于 12-27 19:22 ?23次下載
    STM32學(xué)習(xí)筆記(串口+<b class='flag-5'>DMA</b>)