精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    606

    瀏覽量

    35651
收藏 人收藏

    評論

    相關推薦

    plc基本指令的應用有哪些

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

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

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

    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 ?3385次閱讀

    三菱plc trd指令詳解介紹

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

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

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

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

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

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

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

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

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

    淺析SpinalHDL中Pipeline中的復位定制

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

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

    本文介紹了在 Go 中構建流數據pipeline的技術。 處理此類pipeline中的故障很棘手,因為pipeline中的每個階段可能會阻止嘗試向下游發送值,并且下游階段可能不再關心傳
    的頭像 發表于 03-11 10:16 ?554次閱讀

    AMD-Xilinx的Vitis-HLS編譯指示小結

    流水線指令 pragma HLS pipeline 通過流水線提高性能是計算機架構設計的8個偉大思想之一,不管是硬件設計還是軟件設計,流水線設計(pipeline)都能夠用更多的資源來實現高速
    發表于 12-31 21:20

    如何在zcu102板卡上創建pipeline呢?

    DisplayPort 1.4 Tx Subsystem core的最簡pipeline就是如它的linux driver wiki page里的figure-4那樣,framebuffer_read+DP+video_phy。
    的頭像 發表于 12-29 10:09 ?499次閱讀

    【愛芯派 Pro 開發板試用體驗】ax650使用ax-pipeline進行推理

    ax650使用ax-pipeline進行推理 搭建交叉編譯環境 拉取ax-pipeline源碼及子模塊 git clone --recursive https://github.com
    發表于 12-19 17:36

    PLC常見的傳送指令介紹

    單一數據傳送指令用于傳送一個數據,根據傳送數據的字長不同,可分為字節、字、雙字和實數傳送指令。單一數據傳送指令的功能是在EN端有輸入(即EN=1)時,將IN端指定單元中的數據送入OUT端指定的單元中。
    發表于 12-07 09:46 ?2727次閱讀
    PLC常見的傳送<b class='flag-5'>指令</b><b class='flag-5'>介紹</b>