吴忠躺衫网络科技有限公司

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

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

3天內不再提示

關于pipeline 以及 unroll 指令的介紹

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-09 09:53 ? 次閱讀

本文轉載自: XILINX開發者社區微信公眾號

HLS 優化設計的最關鍵指令有兩個:一個是流水線 (pipeline) 指令,一個是數據流(dataflow) 指令。正確地使用好這兩個指令能夠增強算法地并行性,提升吞吐量,降低延遲但是需要遵循一定的代碼風格。展開 (unroll) 指令是只針對 for 循環的展開指令,和流水線指令關系密切,所以我們放在一起首先我們來看一下這三個指令在 Xilinx 官方指南中的定義:

Unroll: Unroll for-loops to create multiple instances of the loop body and its instructions that can then be scheduled independently.

Pipeline:Reduces the initiation interval by allowing the overlapped execution of operations within a loop or function.

Dataflow:Enables task level pipelining, allowing functions and loops to execute concurrently. Used to optimize through output and/or latency.

Unroll 指令在 for 循環的代碼區域進行優化,這個指令不包含流水線執行的概念,單純地將循環體展開使用更多地硬件資源實現,保證并行循環體在調度地過程中是彼此獨立的。

Pipeline 指令在循環和函數兩個層級都可以使用,通過增加重復的操作指令(如增加資源使用量等等)來減小初始化間隔。

Dataflow 指令是一個任務級別的流水線指令,從更高的任務層次使得循環或函數可以并行執行,目的在于減小延遲增加吞吐量。

Unroll 和 Pipeline 指令相互重合的關系在于,當對函數進行流水線處理時,以下層次結構中的所有循環都會自動展開,而使用展開指令的循環并沒有給定對II的約束。在最新版本的 Vitis HLS 工具中,工具會自動分析數據之間的流水線操作關系,以II=1為目標優化,但是還是會受限于設計本身的算法和代碼風格。下圖非常清晰地闡明了Unroll 和 Pipeline 指令的關系,Pipeline 指令放置的循環層次越高,循環展開的層次也越高,最終會導致使用更大面積的資源去實現,同時并行性也更高。

pIYBAGAJe8GAUqsaAAOfRydUAUE307.png

這里如果循環的邊界是變量的話,則無法展開。這將組織函數被流水線化,可以通過添加tripcount 等指令,指定循環在綜合時大概的最大最小邊界。

在循環流水線優化的過程中,有一個完美循環,半完美循環和非完美循環的代碼風格概念,只有當流水線循環完美或半完美時,才可以將嵌套循環徹底并行展開。

完美循環:只有最里面的循環才具有主體內容,在循環語句之間沒有指定邏輯,循環界限是恒定的。

半完美循環:只有最里面的循環才具有主體 (內容), 在循環語句之間沒有指定邏輯,只有最外面的循環邊界可以是可變的。

非完美循環:循環的主體內容分布在循環的各個層次或內層循環的邊界是變量。

pIYBAGAJfAOAJQTrAAO0fO_yjLU263.png

當我們要爭去最大流水線循環的成功執行,就需要將非完美循環手動修改成完美或半完美循環。 以下代碼例子給出了完美循環(左邊)和非完美循環(右邊)在Vitis HLS 中的執行結果。

o4YBAGAJfEGAEP37AABWikWhzdc769.png

o4YBAGAJfIGAGbXPAAKaN1p2Ycs520.png

綜合完畢后,我們可以在分析窗口和綜合報告中都很清晰的看出,完美循環在執行的時候,工具自動將內層循環LOOP_J和外層循環LOOP_I合并為一整個大循環,并實現了整個大循環的流水線操作,延遲的周期數為: (400-1) *1+8-1 =406個周期數,延遲大約為 408*2.5 = 1,020 ns

非完美循環中,內層和外層循環沒有合并,只有內層循環LOOP_J 實現了流水線執行,進出內循環的浪費的時鐘周期增加了整個循環的時鐘周期,同時還有一些命令行沒有辦法跨越循環的層級實現調度上的優化,這些因素都導致了設計的延遲的增加。

本文關于pipeline 以及 unroll 指令的介紹到此結束,下篇文章我們將著重介紹 daraflow 指令。

審核編輯:何安

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

    關注

    1

    文章

    611

    瀏覽量

    35816
收藏 人收藏

    評論

    相關推薦

    Erp指令能效

    ErP指令EC244/2009、EC245/2009、EU1194/2012和能效標簽指令EU874/2012已經實行多年,歐盟委員會在近3年通過參照不斷改進的照明產品技術、環境和經濟因素以及實際
    的頭像 發表于 11-20 23:57 ?252次閱讀
    Erp<b class='flag-5'>指令</b>能效

    plc基本指令的應用有哪些

    控制、數據類型轉換、算術運算、比較操作、程序控制以及基本的輸入輸出操作等多個方面。 一、邏輯運算指令 邏輯運算指令是PLC編程中最常用的指令之一,它們用于實現基本的邏輯運算功能,包括邏
    的頭像 發表于 10-21 17:16 ?1154次閱讀

    復雜指令集和精簡指令集有什么區別

    的兩種主要指令集架構,它們在多個方面存在顯著的差異。以下是對這兩種指令集架構的詳細比較,涵蓋設計理念、指令復雜性、尋址方式、實現方式、性能特點、應用場景以及未來發展等多個方面。
    的頭像 發表于 08-22 11:00 ?3861次閱讀

    微處理器的指令集架構介紹

    微處理器的指令集架構(Instruction Set Architecture,ISA)是計算機體系結構中至關重要的部分,它定義了微處理器能夠執行的操作和指令的集合,以及這些指令如何被
    的頭像 發表于 08-22 10:53 ?1575次閱讀

    lyrat-mini-v1.2使用例程pipeline_wav_amr_sdcard錄音沒有聲音怎么解決?

    lyrat-mini-v1.2使用例程pipeline_wav_amr_sdcard錄音沒有聲音,SD卡中有文件,但是沒有聲音怎么解決啊
    發表于 06-28 06:43

    三菱plc累加指令怎么用

    中,累加指令通常使用ADD指令來實現。以下是關于三菱PLC累加指令的詳細介紹。 累加指令的基本概
    的頭像 發表于 06-20 11:34 ?4075次閱讀

    三菱plc trd指令詳解介紹

    為“Transfer Data”。本文將詳細介紹TRD指令的基本概念、語法結構、功能特點以及應用實例。 一、TRD指令的基本概念 1.1 TRD指令
    的頭像 發表于 06-20 11:29 ?3530次閱讀

    三菱PLC指令ZRST和RST的區別

    指令,它們都與復位操作有關,但具體的功能和應用場景有所不同。本文將詳細介紹ZRST和RST指令的區別,以及它們在實際應用中的使用方法。 一、ZRST
    的頭像 發表于 06-20 10:48 ?6996次閱讀

    西門子S7-1200 PLC的指令介紹

    了最新的技術,為用戶提供了更為高效、靈活的控制方案。本文將詳細介紹S7-1200 PLC的指令系統,包括其指令分類、具體指令功能以及在實際應
    的頭像 發表于 06-18 14:52 ?3119次閱讀

    三菱PLC數據傳送指令介紹

    等功能的基礎。本文將詳細介紹三菱PLC的數據傳送指令,包括其功能、格式、應用示例及注意事項等方面,以幫助讀者更好地掌握其使用方法。
    的頭像 發表于 06-18 09:53 ?4246次閱讀

    plc控制伺服電機的指令有哪些

    PLC(可編程邏輯控制器)是一種廣泛應用于工業自動化領域的控制設備。伺服電機作為執行元件,可以通過PLC進行精確控制。以下是關于PLC控制伺服電機的指令的詳細介紹。 概述 PLC控制伺服電機
    的頭像 發表于 06-12 11:39 ?2692次閱讀

    部分TIA集成指令處理的方法介紹

    對于優化的DB塊,可使用FILL_BLK指令或創建相同的UDT結構類型的DB塊,使用MOVE指令清零DB塊數據。
    發表于 04-15 09:34 ?1341次閱讀
    部分TIA集成<b class='flag-5'>指令</b>處理的方法<b class='flag-5'>介紹</b>

    藍牙雙模音頻模塊支持串口AT指令控制介紹

    藍牙音頻模塊支持串口AT指令控制介紹,這里推薦BT401藍牙模塊,功能簡介如下: BT401模塊是一款支持藍牙、U盤、TF卡播放的5合1的解決方案。模組的亮點在支持無損音樂的播放,以及簡單明了的串口控制功能,支持BLE透傳,
    的頭像 發表于 03-28 11:27 ?817次閱讀
    藍牙雙模音頻模塊支持串口AT<b class='flag-5'>指令</b>控制<b class='flag-5'>介紹</b>

    淺析SpinalHDL中Pipeline中的復位定制

    之前有系列文章介紹了SpinalHDL中Pipeline的使用,最近在一個功能模塊中真實的使用了這個lib。
    的頭像 發表于 03-17 17:31 ?1128次閱讀
    淺析SpinalHDL中<b class='flag-5'>Pipeline</b>中的復位定制

    什么是pipeline?Go中構建流數據pipeline的技術

    本文介紹了在 Go 中構建流數據pipeline的技術。 處理此類pipeline中的故障很棘手,因為pipeline中的每個階段可能會阻止嘗試向下游發送值,并且下游階段可能不再關心傳
    的頭像 發表于 03-11 10:16 ?668次閱讀
    大发888游戏是真的吗| 百家乐五湖四海娱乐平台| 最佳场百家乐官网的玩法技巧和规则 | 大发888官wang| 十三张娱乐城开户| 万宁市| 百家乐官网稳一点的押法| 百家乐官网游戏作弊| 百家乐官网8点直赢| 天博百家乐官网的玩法技巧和规则 | 大嘴棋牌官方下载| 百家乐官网3宜3忌| 百家乐官网斗地主炸金花| 百家乐高手论坮| 迪士尼百家乐的玩法技巧和规则| 至尊百家乐赌场娱乐网规则| 同花顺百家乐的玩法技巧和规则| 小孟百家乐的玩法技巧和规则| 百合百家乐的玩法技巧和规则 | 威尼斯人娱乐城真钱游戏| 大发888分享| 扶余县| 九州百家乐官网的玩法技巧和规则| 百家乐稳赚秘籍| 全讯网新2网址| 兴化市| 百家乐官网棋牌游戏开发| 菲律宾百家乐赌场娱乐网规则 | 百家乐官网压分技巧| 澳门百家乐官网家用保险柜| 24山向方位度数| 至尊百家乐于波| 澳门百家乐官网下注最低| 百家乐在线怎么玩| 大发888娱乐场 888| 伊春市| 百家乐稳赢玩法| a8娱乐城线上娱乐| 百家乐官网赚水方法| 精通百家乐的玩法技巧和规则 | 澳门百家乐下注最低|