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

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

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

3天內不再提示

AI芯片設計DNN加速器buffer管理策略

冬至子 ? 來源:嵌入式AI ? 作者:下冰雹 ? 2023-10-17 17:23 ? 次閱讀

如前所述,數據緩存是創建高效DNN加速器的關鍵組件之一。因此,除了選擇適當的數據流(控制數據緩存的位置和時間)外,DNN加速器還需要一個緩存方案,該方案應尋求實現以下目標:

l 以高效并及時的方式準確地傳送數據的consumer需要的數據;

l 將未來所需數據的接收與當前正在使用的數據的使用重疊;

l 在不再需要數據時刪除數據;

l 通過同步來完成上述所有操作。

一般來說,可以實現這些目標的稱為實現良好的數據編排。[170]中對當前數據編排方法的分類如圖5.29所示。在圖中,buffer的用法沿著兩個軸進行劃分。在較高的層次上,沿一個軸的implicit/explicit區分是指利用工作負載來控制數據緩沖決策的程度,而在另一個軸上的coupled/decoupled是指內存響應和請求是往返(請求-響應)還是向前流(自動將數據推送給consumer)。

image.png

圖5.29: 數據編排方法的分類。假設通信(帶箭頭的線)在硬件通道(通常是 NoC 鏈路)上傳輸。 (圖來自[170])

5.8.1 隱式與顯式編排

在通用計算中,cache是主要的緩沖機制,并且基于加載/存儲操作。緩存有幾個理想的屬性,例如以不可見的方式組合成層次結構。內存級并行性(多個未完成的填充以及填充和訪問當前內容之間的并發性)可以使用經過充分研究的附加硬件(通常稱為無鎖緩存結構)來實現。

Cache可以被描述為執行implicit式數據編排,因為加載請求發起者不直接控制緩存層次結構關于響應數據是否保留在存儲層次結構的任何給定級別上的決策,也不直接控制何時刪除響應數據。啟發式替換策略在通用場景中是有利的,因為它們與工作負載無關。另一方面,對于DNN加速器來說,標簽匹配和關聯集等特征的面積和能量開銷很高。

Cache的另一種替代方法是使用scratchpad,它為加載和存儲了特定暫存緩沖區的地址范圍,從而支持對數據編排的顯式和精確控制 (在圖5.29中,這是由管理本地和全局請求/響應的數據路徑表示的)。GPU的共享scratchpad [171]是這種顯式數據編排習慣用法的一個例子。scratchpad的大小和地址范圍在體系結構上是公開的,數據進出scratchpad的傳輸是通過明確的指令進行管理的。雖然scratchpad避免了緩存的硬件開銷,但提取內存并行性(跨填充和重疊填充和訪問)既繁瑣又容易出錯,因此很難將它們組合成層次結構。

5.8.2 耦合和解耦編排

緩存和暫存區都使用加載/存儲模式,其中請求的發起方也接收響應。這被稱為數據的耦合分段,反映在圖5.29的左列中。有了這種設置,數據需求和數據可用性之間的同步既高效又直觀——當相應的響應返回時(load-use)會通知請求者。缺點是,由于單個requester/consumer必須在請求和使用響應之間交替,它使數據塊的填充和訪問重疊(例如,通過雙緩沖)變得復雜。此外,傳入數據tile的“landing zone”必須在整個往返加載延遲期間保留(因此是空閑的),這增加了內存資源的壓力,否則內存資源可能會用于更大的瓦tile size。

另一種選擇是將負載請求啟動器與響應接收器解耦(在圖5.29中,這由指向不同模塊的請求/響應箭頭表示)。在這種設置中,一個單獨的硬件模塊(例如DMA引擎或地址生成器(AGEN))負責將數據推入一個或多個功能單元的緩沖器。為了容忍延遲,這些緩沖器通常是雙緩沖的,有時被稱為ping-pong buffers [172, 173]。這種方法的主要優點是,請求者可以以自己的速率運行,并且可以將數據多播到多個同時使用的用戶。此外,pipeline的前饋特性意味著只需要按層次結構相鄰級別之間的延遲比例保留tile landing zone,而不是整個層次結構遍歷往返,從而增加對同等大小內存的利用率。最后,這種方法通常可以傳輸大數據塊(即批量傳輸,這比小請求更有效),這些數據塊必須動態地重新合并對同一內存行的訪問。

這種分離的producer/consumer方法類似于Smith[174]的通用計算架構的decoupled access execute (DAE)風格。在DAE組織中,兩個處理器通過硬件隊列連接。訪問處理器負責執行所有地址計算和生成負載——類似于DMA引擎。負載響應被傳遞給執行處理器——類似于加速器的功能單元及其本地staging緩沖區。DAE提高了并行性,減少了指令的關鍵路徑,同時允許兩個處理器以其自然速率進行計算。然而經典的DAE并沒有顯式地控制數據編排緩沖區——關于暫存在數據的決策仍然由緩存層次管理,因此圖5.29將DAE歸類為隱式解耦。

5.8.3 顯式解耦數據編排(EDDO)

DNN加速器中最常見的緩沖方法是顯式解耦數據編排(EDDO)。硬件FIFO[175,176]是一種傳統的可重用EDDO分段緩沖結構。其優點是FIFO通過頭指針和尾指針清晰地封裝了同步,并且易于分層組合。然而在實踐中FIFO不夠靈活,無法滿足DNN加速器的需求,因為DNN加速器經常在一個窗口內重復訪問(例如,在執行卷積時)。此外,對于部分和之類的數據類型,分級數據必須在清除之前進行多次修改。這在沒有昂貴的再循環的單寫端口FIFO中是不可能的。

一些深度神經網絡加速器[142, 152, 159, 177, 178]已經將顯式解耦數據編排(EDDO)方案作為定制緩沖機制納入其中,并提出了其他特定的EDDO緩沖方案,如DESC[179]。然而,為了說明典型的EDDO方案將描述buffets[170],它是Eyeriss[101]中數據編排方案的概括。

從本質上講,buffet的操作就像FIFO一樣,值從輸入NoC鏈路(即硬件通信通道)填充到由頭和尾指針控制的圓形緩沖區中。只有當填充發生時,值才會從填充NoC鏈接中刪除。對緩沖區中的數據的訪問是由讀取命令提供的,但是與只能在其頭部讀取的FIFO不同,buffet讀取增加了一個地址,這被解釋為頭部的偏移量。在buffet中保留一組值并多次讀取它們可以重用數據塊。與填充類似,read命令只在讀取值可以在讀取值NoC鏈路上發送時才會執行(即,NoC鏈路沒有阻塞)。

Buffets還支持在其緩沖區中更新值。只允許更新之前讀過的值,并使用read+update命令讀取位置的值。這使得buffet支持存儲和更新partial sum。

最后,buffet提供了一個shrink操作,從緩沖區的頭部刪除指定數量的項。shrink可以讓人輕松地釋放tile占用的空間。為了避免在切換tile時發生延遲,可以定義一個比buffet尺寸小的tile。因此,在處理前一個tile片時,可以開始填充下一個tile。然而,額外的空間只需要足夠大,就避免在下一個tile上開始工作之前的啟動瞬態。這通常比雙緩沖所需的空間要小得多。

shrink不需要移除整個tile。只移除tile的一部分(例如,只移除一個值),然后從零偏移開始按順序再次讀取,這樣buffets就可以支持滑動窗口。

圖5.30給出了buffet的框圖。當操作(命令或填充)所需的所有輸入NoC鏈接上都有值,并且輸出NoC鏈接中有空間(僅用于讀取)時,就會發生操作。圖中所示的活動如下。

image.png

圖5.30: buffet框圖: 主要的輸入是一個fill value; a read address and read value; an update address, and update value; 以及一個command,可以指定是執行讀取、讀取+更新還是shrink。唯一的輸出是一個read value。head、tail和date單元在內部提供了同步,通過暫停操作來保持正確的順序。

l 正在調用read命令(r),該read命令將讀取地址(1)作為從head的偏移量來產生read value(d)

l Update address (3)處的更新正在將update value(f’)寫入buffet。請注意,這是允許的,因為較早的命令必須是偏移量3處的read+update

l Fill value(k)即將寫入buffet的尾部tail

上述所有活動都是在buffet內部通過head、tail和最新狀態進行協調的,這保證了正確的ordering。例如,一個read操作必須等待數據filled and updated (如果之前有一個read+update)。fill必須等到緩沖區有空間。

這里沒有說明shrink命令,它只是在等待未完成的更新后調整頭部指針,從buffet頭部刪除給定數量的值。

圖5.31展示了一個簡單的示例,演示了buffet是如何自然組合的,并可以用來處理滑動窗口和更新。L1輸入buffet與L0輸入buffet的自然組合允許外部無同步填充,因為填充由每個buffet的內部排序控件控制。在L0 Input Buffet中的1個shrink會創建一個輸入滑動窗口,因此輸入的相對序列將是0, 1, 2, 1, 2, 3, 2, 3, 4......內部同步還控制partial sum的更新。

image.png

圖5.31: buffet示例——一個類似于Eyeriss的全局緩沖區和使用buffet構建的PE的示例。對L1輸入buffet的讀取填充L0 buffet,L0 buffet執行讀取,將輸入滑動窗口傳遞給乘法器。L0輸出緩沖區執行一系列read+update命令來生成partial sum。Weight buffet沒有顯示。

總之,在DNN加速器設計中需要有效的數據編排,并且通常由管理數據移動的機制(如buffet)提供。這通常在設計中表現為明確的控制,其中數據在存儲層次結構中被確定地推送,避免了昂貴的往返通信,并最大限度地減少了“landing space”存儲需求。通過解耦的活動還可以提高效率,其中硬件提供所需值的本地確定和本地同步控制。顯然,并非每個存儲緩沖區都需要buffet的完整語義,因此可以采用這些語義子集的優化實現或其他提供類似好處的自定義設計。

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

    關注

    2

    文章

    799

    瀏覽量

    37874
  • 緩沖器
    +關注

    關注

    6

    文章

    1922

    瀏覽量

    45487
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    5979
  • AI芯片
    +關注

    關注

    17

    文章

    1887

    瀏覽量

    35027
收藏 人收藏

    評論

    相關推薦

    深入理解DNN加速器中的基本單元——DSP

    DNN加速器的設計一直在兩個方面使力:通用架構和高效性能。通用性需要自頂向下的設計,首先綜合各種神經網絡的算子設計一套標準的指令集,然后根據硬件平臺的特點,考察計算資源,存儲資源以及帶寬,進行硬件
    的頭像 發表于 07-28 17:56 ?7182次閱讀

    家居智能化,推動AI加速器的發展

    電子發燒友網報道(文/黃山明)AI加速芯片,也稱為人工智能加速器AI Accelerator),是一種專為執行機器學習和深度學習任務而設計
    的頭像 發表于 02-23 00:18 ?4594次閱讀

    #硬聲創作季 電子制作:磁性加速器

    加速器DIY
    Mr_haohao
    發布于 :2022年10月19日 00:19:38

    使用AMD-Xilinx FPGA設計一個AI加速器通道

    介紹使用 AMD-Xilinx FPGA設計一個全連接DNN核心現在比較容易(Vitis AI),但是利用這個核心在 DNN 計算中使用它是另一回事。本項目主要是設計AI
    發表于 02-21 15:01

    【書籍評測活動NO.18】 AI加速器架構設計與實現

    創新的芯片架構設計,這正面臨新的挑戰。本書從神經網絡的分析出發,總結和提煉了AI加速器架構設計中常見的難點,以及解決這些難點的技術、方法和思想,是AI軟硬件架構師、設計師非常寶貴的參考
    發表于 07-28 10:50

    AI加速器架構設計與實現》+第2章的閱讀概括

    首先感謝電子發燒友論壇提供的書籍和閱讀評測的機會。 拿到書,先看一下封面介紹。這本書的中文名是《AI加速器架構設計與實現》,英文名是Accelerator Based on CNN Design
    發表于 09-17 16:39

    一種基于FPGA的高性能DNN加速器自動生成方案

    可是,設計一個基于FPGA的高性能DNN推理加速器還是充滿了困難,它需要寄存傳輸級(RTL)編程技巧,硬件驗證知識和豐富的硬件資源分配經驗等硬件設計相關知識,對于在算法層面關注深度學習的研究人員來說是非常不友好的。
    的頭像 發表于 11-16 10:39 ?5539次閱讀

    UIUC推出最新DNN/FPGA協同方案 助力物聯網終端設備AI應用

    UIUC、IBM 和 Inspirit IoT, Inc(英睿物聯網)的研究人員提出 DNN 和 FPGA 加速器的協同設計方案(DNN/FPGA co-design),通過首創的「Auto-
    發表于 06-10 14:39 ?1229次閱讀
    UIUC推出最新<b class='flag-5'>DNN</b>/FPGA協同方案 助力物聯網終端設備<b class='flag-5'>AI</b>應用

    借助 NVIDIA 融合加速器開發套件加速數據中心 AI

    安全和自主管理式數據中心的唯一出路。 NVIDIA 融合加速器在業界率先推出 AI 增強型 DPU。它將 GPU 的強大計算能力與 DPU 的網絡加速和安全優勢相結合,為
    的頭像 發表于 11-16 16:12 ?2043次閱讀

    什么是AI加速器 如何確需要AI加速器

    AI加速器是一類專門的硬件加速器或計算機系統旨在加速人工智能的應用,主要應用于人工智能、人工神經網絡、機器視覺和機器學習。
    發表于 02-06 12:47 ?4686次閱讀

    用于 AI 應用的硬件加速器設計師指南

    AI 設計人員將硬件加速器整合到用于訓練和推理應用的定制芯片中時,應考慮以下四個因素
    發表于 08-19 11:35 ?1653次閱讀
    用于 <b class='flag-5'>AI</b> 應用的硬件<b class='flag-5'>加速器</b>設計師指南

    使用AXI CDMA制作FPGA AI加速器通道

    使用 AMD-Xilinx FPGA設計一個全連接DNN核心現在比較容易(Vitis AI),但是利用這個核心在 DNN 計算中使用它是另一回事。本項目主要是設計AI
    的頭像 發表于 02-08 09:33 ?2033次閱讀

    使用賽靈思Alveo加速器加速DNN

    電子發燒友網站提供《使用賽靈思Alveo加速器加速DNN.pdf》資料免費下載
    發表于 09-18 09:27 ?1次下載
    使用賽靈思Alveo<b class='flag-5'>加速器</b>卡<b class='flag-5'>加速</b><b class='flag-5'>DNN</b>

    PCIe在AI加速器中的作用

    從線上購物時的“猜你喜歡”、到高等級自動駕駛汽車上的實時交通信息接收,再到在線視頻游戲,所有的這些都離不開人工智能(AI加速器AI加速器是一種高性能的并行計算設備,旨在高效處理神經
    的頭像 發表于 11-18 10:36 ?2185次閱讀
    PCIe在<b class='flag-5'>AI</b><b class='flag-5'>加速器</b>中的作用

    粒子加速器加速原理是啥呢?

    粒子加速器加速原理是啥呢? 粒子加速器是一種重要的實驗設備,用于研究粒子物理學、核物理學等領域。其主要原理是通過電場和磁場的作用,對帶電粒子進行加速,在高速運動過程中使其獲得較大的動
    的頭像 發表于 12-18 13:52 ?2119次閱讀
    主站蜘蛛池模板: 视频在线观看高清免费大全| 国产成人在线播放视频| 美日韩中文字幕| avtt国产| 人人揉揉香蕉大免费不卡| 亚洲一区二区三区播放在线| 特级黄色毛片| 欧美天天视频| 国产日本三级| 午夜影剧院| 202z欧美成人| 一久久| 色福利网站| 激情网址在线观看| 一级片免费在线观看视频| 男女啪视频大全1000| 免费在线视频播放| av免费网站在线观看| 久久青草国产精品一区| 91色在线视频| 中文字幕一区二区三区5566| 日韩色网| 69成人免费视频| 国产成人1024精品免费| 亚洲高清国产拍精品影院| 国产成人一区二区在线不卡| 色射啪| 日韩一级欧美一级| 天堂va欧美ⅴa亚洲va一国产| 男男失禁play 把尿bl| 久久成人亚洲| 手机在线完整视频免费观看| 深爱婷婷激情网| 国产激情电影综合在线看| 久久免费久久| 天堂网www最新版在线资源| 黄网站免费大全| 欧美xxxx性高清| 午夜色综合| 午夜影院美女| 伊人网狠狠干|