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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HLS優(yōu)化設(shè)計(jì)的最關(guān)鍵指令

YCqV_FPGA_EETre ? 來源:FPGA開發(fā)圈 ? 作者:FPGA開發(fā)圈 ? 2021-01-14 09:41 ? 次閱讀

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

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

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

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

Unroll 指令在 for 循環(huán)的代碼區(qū)域進(jìn)行優(yōu)化,這個指令不包含流水線執(zhí)行的概念,單純地將循環(huán)體展開使用更多地硬件資源實(shí)現(xiàn),保證并行循環(huán)體在調(diào)度地過程中是彼此獨(dú)立的。

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

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

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

7728e698-51a7-11eb-8b86-12bb97331649.png

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

在循環(huán)流水線優(yōu)化的過程中,有一個完美循環(huán),半完美循環(huán)和非完美循環(huán)的代碼風(fēng)格概念,只有當(dāng)流水線循環(huán)完美或半完美時,才可以將嵌套循環(huán)徹底并行展開。

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

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

非完美循環(huán):循環(huán)的主體內(nèi)容分布在循環(huán)的各個層次或內(nèi)層循環(huán)的邊界是變量。

779a5dc8-51a7-11eb-8b86-12bb97331649.png

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

Perfect_loop

#include "loop_perfect.h"

void loop_perfect (din_t A[N], dout_t B[N]) {

int i,j;

dint_t acc;

LOOP_I:for (i=0; i < 20; i++) {?

LOOP_J: for (j=0; j < 20; j++) {?

if(j==0) acc = 0;

acc += A[j] * j;

if(j==19) {

if (i%2 == 0)

B[i] = acc / 20;

else

B[i] = 0;

}

}

}

}

void loop_imperfect (din_t A[N], dout_t B[N]) {

int i,j;

dint_t acc;

LOOP_I:for(i=0; i < 20; i++){?

acc = 0;

LOOP_J: for (j=0; j < 20; j++) {?

acc += A[j] * j;

}

if (i%2 == 0)

B[i] = acc / 20;

else

B[i] = 0;

}

}

77d756e2-51a7-11eb-8b86-12bb97331649.png

78f8c790-51a7-11eb-8b86-12bb97331649.png

792ca6d2-51a7-11eb-8b86-12bb97331649.png

7962a03e-51a7-11eb-8b86-12bb97331649.png

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

非完美循環(huán)中,內(nèi)層和外層循環(huán)沒有合并,只有內(nèi)層循環(huán)LOOP_J 實(shí)現(xiàn)了流水線執(zhí)行,進(jìn)出內(nèi)循環(huán)的浪費(fèi)的時鐘周期增加了整個循環(huán)的時鐘周期,同時還有一些命令行沒有辦法跨越循環(huán)的層級實(shí)現(xiàn)調(diào)度上的優(yōu)化,這些因素都導(dǎo)致了設(shè)計(jì)的延遲的增加。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4630

    瀏覽量

    93359
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62977
  • 數(shù)據(jù)流
    +關(guān)注

    關(guān)注

    0

    文章

    121

    瀏覽量

    14440
收藏 人收藏

    評論

    相關(guān)推薦

    SAR ADC的工作過程和關(guān)鍵指標(biāo)

    ADC以其低功耗、高精度、小尺寸以及適中的速度和分辨率,在中等至高分辨率應(yīng)用中占據(jù)主導(dǎo)地位。本文將詳細(xì)介紹SAR ADC的概念、工作過程、關(guān)鍵指標(biāo)以及其在不同領(lǐng)域的應(yīng)用。
    的頭像 發(fā)表于 02-02 13:57 ?94次閱讀

    前端性能優(yōu)化:提升用戶體驗(yàn)的關(guān)鍵策略

    在互聯(lián)網(wǎng)飛速發(fā)展的今天,用戶對于網(wǎng)頁的加載速度和響應(yīng)性能要求越來越高。前端性能優(yōu)化成為了提升用戶體驗(yàn)、增強(qiáng)網(wǎng)站競爭力的關(guān)鍵策略。一個性能良好的前端應(yīng)用,能夠快速響應(yīng)用戶的操作,減少等待時間,為用戶
    的頭像 發(fā)表于 01-22 10:08 ?84次閱讀

    數(shù)字化車間——有哪些關(guān)鍵指標(biāo)?

    數(shù)字化車間是智能制造的核心引擎,通過數(shù)字化技術(shù)和信息化手段,實(shí)現(xiàn)生產(chǎn)數(shù)據(jù)的實(shí)時采集、傳輸、分析和應(yīng)用,提高生產(chǎn)效率和管理水平,增強(qiáng)競爭力。影響其性能的關(guān)鍵指標(biāo)包括設(shè)備綜合效率(OEE)、時間開動率、性能開動率、合格品率等。
    的頭像 發(fā)表于 12-23 11:01 ?254次閱讀
    數(shù)字化車間——有哪些<b class='flag-5'>關(guān)鍵指</b>標(biāo)?

    低噪聲運(yùn)算放大器的關(guān)鍵指標(biāo)特點(diǎn)、優(yōu)勢和應(yīng)用場景

    低噪聲運(yùn)算放大器的關(guān)鍵指標(biāo)特點(diǎn)、優(yōu)勢和應(yīng)用場景。 1 低噪聲 應(yīng)用場景1: 在大部分高精度放大的應(yīng)用中,都需要外部增加一款運(yùn)放進(jìn)行電流采樣放大,而在電路應(yīng)用系統(tǒng)中一般輸入信號幅值比較小,這樣就要求運(yùn)放自身的噪聲要遠(yuǎn)
    的頭像 發(fā)表于 12-23 10:13 ?555次閱讀
    低噪聲運(yùn)算放大器的<b class='flag-5'>關(guān)鍵指</b>標(biāo)特點(diǎn)、優(yōu)勢和應(yīng)用場景

    單臂螺旋天線:優(yōu)化通信性能的關(guān)鍵組件

    深圳探測器|單臂螺旋天線:優(yōu)化通信性能的關(guān)鍵組件
    的頭像 發(fā)表于 12-17 09:03 ?225次閱讀

    MCU性能與功能:優(yōu)化設(shè)計(jì)的關(guān)鍵

    MCU(微控制單元)是現(xiàn)代電子產(chǎn)品中不可或缺的核心組件,廣泛應(yīng)用于家電、汽車、工業(yè)控制、醫(yī)療設(shè)備及消費(fèi)電子等領(lǐng)域。隨著科技的不斷發(fā)展,MCU的性能與功能得到了前所未有的提升,而優(yōu)化設(shè)計(jì)成為推動這一變化的關(guān)鍵所在。
    的頭像 發(fā)表于 11-01 13:26 ?358次閱讀

    如何優(yōu)化 Llama 3 的輸入提示

    優(yōu)化輸入提示(prompt engineering)是提高人工智能模型輸出質(zhì)量的關(guān)鍵步驟。對于Llama 3這樣的模型,優(yōu)化輸入提示可以幫助模型更準(zhǔn)確地理解用戶的意圖,從而生成更相關(guān)和高質(zhì)量的內(nèi)容
    的頭像 發(fā)表于 10-27 14:39 ?467次閱讀

    在選擇SD-WAN提供商時,需要關(guān)注哪些關(guān)鍵指標(biāo)?

    在選擇SD-WAN提供商時,應(yīng)該關(guān)注以下關(guān)鍵指標(biāo): 1、帶寬利用率:SD-WAN應(yīng)能有效利用可用帶寬,確保數(shù)據(jù)傳輸?shù)母咝c穩(wěn)定。 2、路徑選擇與負(fù)載均衡:SD-WAN需要能夠智能選擇最佳路徑并實(shí)現(xiàn)
    的頭像 發(fā)表于 09-30 12:24 ?292次閱讀

    高頻電路設(shè)計(jì)中的關(guān)鍵指標(biāo)

    為了確保高頻電路的高效運(yùn)行和可靠性,一系列性能指標(biāo)被提出并嚴(yán)格遵循。這些性能指標(biāo)涵蓋了增益、通頻帶、選擇性、噪聲系數(shù)和穩(wěn)定性等多個方面,下面將逐一探討這些關(guān)鍵指標(biāo)及其在高頻電路設(shè)計(jì)中的重要性。 增益
    的頭像 發(fā)表于 09-20 16:31 ?727次閱讀

    您想了解的數(shù)據(jù)采集DAQ關(guān)鍵指標(biāo)都在這里了

    數(shù)據(jù)采集DAQ關(guān)鍵指標(biāo)有哪些
    的頭像 發(fā)表于 09-03 13:52 ?491次閱讀
    您想了解的數(shù)據(jù)采集DAQ<b class='flag-5'>關(guān)鍵指</b>標(biāo)都在這里了

    優(yōu)化 FPGA HLS 設(shè)計(jì)

    優(yōu)化 FPGA HLS 設(shè)計(jì) 用工具用 C 生成 RTL 的代碼基本不可讀。以下是如何在不更改任何 RTL 的情況下提高設(shè)計(jì)性能。 介紹 高級設(shè)計(jì)能夠以簡潔的方式捕獲設(shè)計(jì),從而
    發(fā)表于 08-16 19:56

    一種在HLS中插入HDL代碼的方式

    很多人都比較反感用C/C++開發(fā)(HLS)FPGA,大家第一拒絕的理由就是耗費(fèi)資源太多。但是HLS也有自己的優(yōu)點(diǎn),除了快速構(gòu)建算法外,還有一個就是接口的生成,尤其對于AXI類接口,按照標(biāo)準(zhǔn)語法就可以很方便地生成相關(guān)接口。
    的頭像 發(fā)表于 07-16 18:01 ?828次閱讀
    一種在<b class='flag-5'>HLS</b>中插入HDL代碼的方式

    電源濾波器選擇關(guān)鍵指標(biāo)解析

    在電子設(shè)備日益普及的今天,電源濾波器作為保障電源質(zhì)量、抑制電磁干擾的重要器件,其選擇和應(yīng)用顯得尤為重要。本文維愛普電源濾波器小編將為您詳細(xì)介紹電源濾波器選擇時需要考慮的關(guān)鍵指標(biāo),幫助您更好地理解和應(yīng)用電源濾波器。
    的頭像 發(fā)表于 06-18 10:46 ?518次閱讀
    電源濾波器選擇<b class='flag-5'>關(guān)鍵指</b>標(biāo)解析

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

    對于優(yōu)化的DB塊,可使用FILL_BLK指令或創(chuàng)建相同的UDT結(jié)構(gòu)類型的DB塊,使用MOVE指令清零DB塊數(shù)據(jù)。
    發(fā)表于 04-15 09:34 ?1341次閱讀
    部分TIA集成<b class='flag-5'>指令</b>處理的方法介紹

    如何優(yōu)化HLS仿真腳本運(yùn)行時間

    需求:由于自己目前一個 HLS 仿真腳本需要運(yùn)行 1個多小時,先打算通過打印時間戳的方式找出最耗時的部分,然后想辦法優(yōu)化
    的頭像 發(fā)表于 02-23 09:29 ?781次閱讀
    赌神网百家乐的玩法技巧和规则| 十六浦百家乐的玩法技巧和规则| 做生意发财招财图像| 神人百家乐官网赌场| 邯郸百家乐官网园真钱区| 足球比分直播| 大发888在线开户| 威尼斯人娱乐城优惠活动| 百家乐的出牌技巧| 做生意风水门面要求| 环球百家乐官网的玩法技巧和规则| 线上百家乐官网| 网络百家乐官网游戏机怎么破解| 东台市| 皇冠正网开户| 大发888官方 3000| 筒子二八杠分析仪| 百家乐77scs官| 喜力百家乐的玩法技巧和规则| 网络百家乐怎样出千| 鲨鱼百家乐游戏平台| 棋牌百家乐怎么玩| 百家乐无敌直缆| 百家乐官网赌博代理荐| 网上百家乐官网有没有假| 百家乐官网破解视频| 华坪县| 棋牌游戏下载| 大发888在线网址| 大发888大发888m摩卡游戏博彩官方下载| 大发888娱乐城 真钱bt| 威尼斯人娱乐城简介| 玩百家乐去哪个娱乐城最安全| 喜力百家乐的玩法技巧和规则 | 百家乐官网珠盘路| 云顶娱乐| 足球投注| 澳门在线转盘| 汉川市| 百家乐官网专打和局| 真人百家乐官网开户须知|