在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對DMA的理解和認識

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

本文選自極術專欄“IC設計”,作者芯工阿文,授權轉自微信公眾號芯工阿文,本篇主要講述對DMA的理解和認識。

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

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

數據轉移,簡單來說有3個要素,源地址、目的地址和數據長度。一般來說,DMA的實現有兩種方式,一是Direct DMA,另一個是鏈表DMA。Direct DMA就是通過寄存器讀寫的方式直接配置上述的3個要素;鏈表DMA就是將保存上述3要素的描述符存放于內存,再將其地址信息配置至DMA,啟動DMA后,解析描述符后做數據轉移。

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

1)根據配置信息啟動描述符讀取操作,解析描述符;

2)基于描述信息,獲取源地址和數據長度,啟動數據讀取操作;

3)讀取數據返回后,再將數據發送至目的地址,完成后告知狀態。

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

個人認為,在SOC芯片內的幾乎所有計算模塊,均可以基于DMA的模型進行理解,再以此進行擴展開發,包括CPU。

再來看一下CPU是如何工作的,沒有深入了解CPU的結構,僅僅知道大概,如有錯誤,請輕噴。首先,CPU基于起始地址,從該地址讀取指令,再執行。一般來說,執行指令會伴隨著數據讀取,也就是LOAD,將數據搬運過來之后,再對數據做各種運算,完成后再將數據放回去,對應著STORE。這個過程是否跟DMA搬運數據非常類似?如下是對應關系。

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

圖1

兩者之間有非常近似的對應關系,基本原理是一樣的,只是在具體實現過程中,存在較大的差異。如描述符,對于DMA,僅有有限的幾個格式,不同實現有不同的指令格式,對于CPU,指令集就相當于描述符,類型很多,不同架構有不同的指令集,由此也會引入很多問題,其復雜度是DMA的很多很多倍,如CPU需要Cache,但是從沒聽說過DMA需要使用Cache。

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

可以看到,CPU和DMA之間,差不多就是兩個極端。CPU是屬于general purpose,DMA是目的性非常強的設計。在這中間取一個點,是否就可以對應GPU、AI、DSA等等場景?

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

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10911

    瀏覽量

    213150
  • 接口
    +關注

    關注

    33

    文章

    8718

    瀏覽量

    152026
  • IC設計
    +關注

    關注

    38

    文章

    1302

    瀏覽量

    104327
  • dma
    dma
    +關注

    關注

    3

    文章

    566

    瀏覽量

    101027
  • 數字芯片
    +關注

    關注

    1

    文章

    110

    瀏覽量

    18485

原文標題:把DMA當作一個模型

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DMA 串口傳輸原理解

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

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

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

    F28335 DMA設置代碼的理解

    嗎?我的理解是如果AD采樣頻率是64HZ的話,DMA的中斷頻率差不多是1HZ。然而我不論是設置采樣頻率為2000HZ還是2HZ,DMA產生中斷的頻率都沒有變化。不知道是我理解有錯還是什
    發表于 06-25 08:26

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

    請教下UART帶DMA接口怎么理解???我想用K60的UART做一個485通信,主要的功能就是用K60做上位機讀取下位機的數據,這個過程可以用485的通信協議來傳輸數據,但是怎么利用一下DMA接口呢
    發表于 02-23 10:40

    如何理解AT32的DMA彈性映射

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

    如何理解DMA? DMA配置過程是怎樣的?

    如何理解DMA?DMA配置過程是怎樣的?
    發表于 02-14 06:51

    關于stm32f1中的ADC和DMA理解

    怎樣去校準stm32f1中的ADC呢?怎樣去理解stm32f1中的ADC和DMA呢?
    發表于 02-21 06:05

    DMADMA控制器

    DMA(Direct Memory Access)的概念DMA方式不用處理器干預完成M與I/O間數據傳送。DMA期間系統總線由其它主模塊控
    發表于 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”,漢語的意思就是直接內存訪問,是一種不經過CPU而直接從內存了存取數據的數據交換模式
    發表于 04-17 17:06 ?3.6w次閱讀
    <b class='flag-5'>dma</b>是什么意思? 什么是<b class='flag-5'>dma</b>?

    鎳電池的理解認識

    鎳電池的理解認識 鎳氫電池也有記憶效應,只是沒鎳鎘電池明顯。記憶效應最不明顯的是鋰電池。  記憶效應不明顯意味著,可以多次充電
    發表于 11-05 16:16 ?1669次閱讀

    STM32串口DMA問題詳解

    昨天晚上在STM32串口DMA的問題上糾結了好長時間,所以今天上午寫篇博客來談談我對串口DMA發送的理解
    的頭像 發表于 10-27 16:16 ?8499次閱讀
    STM32串口<b class='flag-5'>DMA</b>問題詳解

    單片機的RAM和FLASH認識理解

    最近在一個問答社區回答了一個問題,關于單片機存儲器的,于是有了想專門寫一篇關于單片機存儲器的想法。作為單片機內部一個重要組成部分,存儲器占有很重要的地位,今天就來聊聊我對于單片機的內部存儲器RAM和FLASH的一些認識理解。
    的頭像 發表于 05-03 18:17 ?1.1w次閱讀
    單片機的RAM和FLASH<b class='flag-5'>認識</b><b class='flag-5'>理解</b>

    16、STM32——DMA詳解

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

    STM32使用DMA控制器試驗總結

    在使用串口DMA試驗過程中,遇到了一些問題,通過試驗找到了問題所在,也對DMA的應用有了新的認識,僅以此分享給大家,不足之處請多多指教。DMA初始化// 串口對應的
    發表于 12-03 09:21 ?7次下載
    STM32使用<b class='flag-5'>DMA</b>控制器試驗總結

    STM32學習筆記(串口+DMA)

    小焦的STM32學習日志(一)2020.4.20數據位大小與大端小端:實際應用:`assert_param();`函數的理解:串口配合DMA的使用方法回顧:實現平臺說明:重要的初始化內容:需要額外
    發表于 12-27 19:22 ?23次下載
    STM32學習筆記(串口+<b class='flag-5'>DMA</b>)
    主站蜘蛛池模板: 91久久夜色精品国产网站 | 一级特级毛片免费 | 亚洲91在线视频 | 波多野结衣在线一区 | 种子在线搜索 | 狠狠摸狠狠操 | eee在线播放成人免费 | 久久伊人成人 | 免费观看一级一片 | 欧美午夜在线观看 | 日本高清视频不卡 | 国产成人高清一区二区私人 | 黄色一级大片视频 | 老色批在线播放视频网站免费 | www.午夜色| 农村苗族一级特黄a大片 | 国产精品免费视频拍拍拍 | 一级在线观看视频 | 黄色大片网| 欧美性猛交ⅹxxx乱大交免费 | 国产成人精品曰本亚洲78 | 看免费黄色大片 | 深爱激情婷婷 | 一级特级女人18毛片免费视频 | 欧美肥穴 | 亚洲成在人线影视天堂网 | 亚洲黄视频 | 亚州人成网在线播放 | 国产精品久久久久影院免费 | 经典三级一区二区三区视频 | 在线观看视频h | 伊人精品成人久久综合欧美 | 亚洲 丝袜 制服 欧美 另类 | 亚洲福利视频一区二区 | 午夜福免费福利在线观看 | 操综合 | 午夜嘿咻| 有码日韩| 中文字幕在线观看你懂的 | 四虎永久在线精品视频免费观看 | 亚洲精品日韩专区silk |