国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    623

    瀏覽量

    37529
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    運動相機RED認證指令介紹

    運動相機出口歐盟,帶無線功能(WiFi / 藍牙?/ 4G/5G)必須符合?CERED?指令;僅有線款無需 RED,需滿足?LVD 2014/35/EU?與?EMC 2014/30/EU。RED
    的頭像 發表于 02-26 14:55 ?84次閱讀
    運動相機RED認證<b class='flag-5'>指令</b><b class='flag-5'>介紹</b>

    關于MT6901的直線DEMO介紹

    關于MT6901的直線DEMO介紹
    的頭像 發表于 01-30 10:54 ?405次閱讀
    <b class='flag-5'>關于</b>MT6901的直線DEMO<b class='flag-5'>介紹</b>

    關于NFC鎳鋅鐵氧體片的介紹

    關于NFC鎳鋅鐵氧體片的介紹
    的頭像 發表于 12-04 10:52 ?407次閱讀
    <b class='flag-5'>關于</b>NFC鎳鋅鐵氧體片的<b class='flag-5'>介紹</b>

    時鐘周期、機器周期、指令周期介紹

    執行操作,以時鐘作為驅動完成每一步。因此時鐘周期決定了計算機的工作節奏,進而影響到計算機工作速度。 機器周期:通常用從內存中讀取一個指令字的最短時間來規定CPU周期(機器周期),也即CPU完成一個
    發表于 11-17 07:54

    歐盟CE-RED指令介紹

    歐盟CE-RED指令,全稱是RadioEquipmentDirective(無線電設備指令),指令編號為2014/53/EU,是歐盟針對所有帶無線發射功能設備制定的一項強制性法規。它是歐盟CE認證
    的頭像 發表于 11-05 14:01 ?713次閱讀
    歐盟CE-RED<b class='flag-5'>指令</b><b class='flag-5'>介紹</b>

    關于協處理器自定義指令的實現

    ,4種指令一共能定義出512條自定義指令。 現在指令已經介紹完了,相信學過匯編的同學都知道匯編指令中有這源操作數跟目的操作數這兩個概念,源
    發表于 10-31 06:36

    關于系統鏈接腳本的介紹

    一、隊伍介紹 本篇為蜂鳥E203系列分享第四篇,本篇介紹的內容是系統鏈接腳本。 二、如何實現不同的下載模式? 實現三種不同的程序運行方式,可通過makefile的命令行指定不同的鏈接腳本,從而實現
    發表于 10-30 08:26

    利用蜂鳥內核實現指令的仿真模擬

    介紹一下RISC-V的指令架構,在RSIC-V中主要有以下6種指令格式: 因此,我們在對于一條指令進行分析時,我們首先要知道其的指令類型,
    發表于 10-24 08:52

    利用蜂鳥內核來實現指令的仿真模擬

    介紹一下RISC-V的指令架構,在RSIC-V中主要有以下6種指令格式: 因此,我們在對于一條指令進行分析時,我們首先要知道其的指令類型,
    發表于 10-24 08:17

    e203進行F指令擴展的具體實現

    (EXU)中并針對F指令的相關功能執行對應操作。 IR寄存器用于存儲操作數在寄存器中的索引位,并且該索引位需要完成對整數寄存器以及浮點寄存器的判斷。判斷索引位的位置信息以及對應寄存器信息,需要利用取值階段
    發表于 10-21 11:51

    Jenkins Pipeline的高級應用技巧

    為一名在運維一線摸爬滾打5年的工程師,我見過太多因為CI/CD流水線配置不當而導致的生產事故。今天分享一些Jenkins Pipeline的高級應用技巧,這些都是我在實際項目中踩過坑后總結的經驗,希望能幫助大家少走彎路。
    的頭像 發表于 08-27 14:32 ?667次閱讀

    使用k230,可以使用pipeline庫,將輸入的視頻流進行二值化處理嗎?

    關于使用k230,可以使用pipeline庫,將輸入的視頻流進行二值化處理嗎
    發表于 06-16 06:46

    從技術到產品 | 士模Pipeline ADC

    流水線型(Pipeline)ADC由于能夠同時滿足高精度和高采樣率的需求,在高性能數據采集和儀器系統、醫療設備、通信測試設備、軟件無線電等領域得到了廣泛應用。高采樣速率往往伴隨著較高的功耗,而客戶群
    的頭像 發表于 04-28 16:37 ?1441次閱讀
    從技術到產品 | 士模<b class='flag-5'>Pipeline</b> ADC

    CPU的各種指令和執行流程

    、數據傳輸等功能。要深入理解CPU的指令,我們需要從多個維度進行分析,尤其是指令的構成、分類、執行流程以及與不同架構的關系。
    的頭像 發表于 04-18 11:24 ?2619次閱讀

    AXI握手時序優化—pipeline緩沖器

    skid buffer(pipeline緩沖器)介紹 ??解決ready/valid兩路握手的時序困難,使路徑流水線化。 ??只關心valid時序參考這篇寫得很好的博客鏈接:?握手協議(pvld
    的頭像 發表于 03-08 17:10 ?1334次閱讀
    AXI握手時序優化—<b class='flag-5'>pipeline</b>緩沖器