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

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

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

高層次綜合技術(shù)(High-level synthesis)的概念

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-02-08 17:26 ? 次閱讀

作者:Wen Chen,文章來源: 賽靈思中文社區(qū)論壇

說起高層次綜合技術(shù)(High-level synthesis)的概念,現(xiàn)在有很多初學者簡單地把它理解為可以自動把c/c++之類地高級語言直接轉(zhuǎn)換成底層硬件描述語言(RTL)的技術(shù)。其實更準確的表述是:由更高抽象度的行為描述生產(chǎn)電路的技術(shù)。高層次的概念代表的是硬件描述語言里面較高的抽象層次,只是隨著軟件硬件語言的共同發(fā)展,這樣的高抽象度的行為描述語言來到了C/C++/System C 這樣的層次。

以下是南加州大學的DANIEL D.GAJSKI教授在1994年出版的期刊時對高層次綜合技術(shù)的描述[1]:High-level synthesis systems start with an abstract behavioral specification of a digital system and find a register-transfer level structure that realizes the given behavior. 下圖揭示了高層次綜合工作的基本流程,以及它于傳統(tǒng)的RTL綜合流程的對比。接下來將對行為描述,行為綜合,分析與優(yōu)化三個主要子流程詳細描述。

o4YBAGAJiTuAcls4AAC8bT100m4455.png


1、行為描述

當我們把HLS技術(shù)的起點立為一種行為描述語言的時候,就需要軟件語言遵循特定的行為描述規(guī)范,并且剔除一些源自于軟件系統(tǒng)的的思維理念。雖然各個HLS工具的行為綜合都有自己的規(guī)范,但是關(guān)于動態(tài)內(nèi)存分配的約束是共通的:禁止遞歸和動態(tài)指針。

函數(shù)遞歸意味著需要能夠動態(tài)生成電路模塊,動態(tài)指針是指運行時指針值可以任意變化的指針變量。 硬件不像軟件具有大塊的主內(nèi)存,只有分布在局部的內(nèi)存,所以比較適合并行實現(xiàn)。動態(tài)指針要求作為對象的訪問實體在運行時變化,超出了數(shù)字電路概念的一種功能。同樣,超出了數(shù)字電路概念的還有管理系統(tǒng)內(nèi)存分配的系統(tǒng)調(diào)用函數(shù)等,在此不一一列舉了。

行為描述的概念,讓我們明確了針對數(shù)字電路特性使用高層次語言去編寫行為代碼的這一設(shè)計基本準則。而后探討代碼風格(coding style),系統(tǒng)優(yōu)化都由這一基本準則延申。這就是為什么我們寫的C語言代碼會有一種介于硬件與軟件設(shè)計風格之間的根本原因。

行為描述的基本對象有輸入輸出接口,數(shù)據(jù)位寬,并行化描述等等,在 Vitis HLS 中有行為描述的規(guī)范和推薦的寫法等等,在展開介紹之前,我們先明確行為綜合的流程。

2、行為綜合

在行為綜合的過程中,行為描述中使用的變量,數(shù)組,運算分別用寄存器(FF,LUT),局部內(nèi)存(URAM,BRAM,DRAM),運算器(DSP,ALU)等數(shù)字電路單元來實現(xiàn)。行為描述中的處理流程(順序執(zhí)行, 分支,循環(huán)則以有限狀態(tài)機(FSM)的形式來呈現(xiàn)。通過分析行為描述,可以將運算的依賴關(guān)系表示為數(shù)據(jù)流圖(DFG),將控制流程表示為控制流圖(CFG)。

分析到這里兩個非常重要的行為綜合概念出現(xiàn)了,就是調(diào)度(scheduling)和綁定(Binding).

根據(jù)數(shù)據(jù)流圖和控制流圖來決定運行順序和運行速度的過程稱為調(diào)度。

將變量和運算映射到寄存器或運算器的過程稱為綁定。

下圖簡潔明了地介紹了從C語言設(shè)計到導出RTL設(shè)計過程中,依據(jù)HLS庫和用戶指令進行調(diào)度和綁定的過程。

這里我們使用一個非常簡單的例子描述一下行為綜合的過程

(1) Compilation and Transformation 將一個行為描述代碼的轉(zhuǎn)化為數(shù)據(jù)流圖DFG

數(shù)據(jù)流圖由很多數(shù)據(jù)節(jié)點組成,最重要的是表達出了各個節(jié)點上數(shù)據(jù)的依賴關(guān)系,這是后面調(diào)度和綁定的基礎(chǔ)。

在這個步驟中,代碼風格是一個比較關(guān)鍵的因素。HLS在轉(zhuǎn)化過于繁復高層次語言表達的時候,極個別情況會無法識別一些嵌套非常深的軟件算法,也會增加編譯時間. 所以盡量簡潔,邏輯明晰的硬件友好代碼會提升開發(fā)效率。

o4YBAGAJihqAIGEaAAAnmT_VQqA422.png

(2) Scheduling 調(diào)度

在數(shù)據(jù)流圖中,我們看到XY和EF數(shù)據(jù)之間沒有依賴,他們可以選擇在同一個Control Step里面并行執(zhí)行,或者在兩個ST里面順序執(zhí)行.

這個過程中調(diào)度的并行性由HLS編譯器,用戶指令共同作用影響著,比如編譯器會主動發(fā)現(xiàn)可以并行的優(yōu)化點自動優(yōu)化,也會誤以為某些表達式存在數(shù)據(jù)依賴無法并行優(yōu)化等,所以仍需要用戶加入指令說明情況。 當然追求更高的并行性對資源也有更大的需求,所以并不是一切調(diào)度都以最大并行性為目標。

pIYBAGAJimCAT8XdAAERT_hGUYY322.png

(3) Binding

在早期的HLS研究中,Allocation 和 Binding 是分開的兩個步驟。其中Allocation 鎖定了資源的數(shù)量和類型,Binding完成了運算到資源的映射。現(xiàn)在我們就統(tǒng)稱這些操作在Binding步驟完成。早期FPGA中的含有一種集成的算法單元ALU,如今DSP這樣的硬件模塊已經(jīng)包含了ALU和乘法器模塊等等。

下圖基于早期的ALU單元揭示了Binding 的可能性, 將加減法操作映射到寄存器還是ALU模塊,呈現(xiàn)了兩種不同的方案.

o4YBAGAJip-AEX_gAACyEzO-B8k004.png

以下是選擇了使用一個ALU、兩個寄存器、一個乘法器的綜合結(jié)果。對于既定的調(diào)度方案,可以通過行為綜合來生成相應的狀態(tài)機。HLS在行為綜合的過程中,除了達到算法的基本功能,更重要的是選擇不同的綁定和調(diào)度方案在資源、性能、吞吐量等各個指標中做權(quán)衡和取舍。

pIYBAGAJiuCAf5FUAACqilbN7hg249.png

3、分析和優(yōu)化

電路的規(guī)模和運行時間存在權(quán)衡關(guān)系,所以產(chǎn)生最優(yōu)化的RTL描述需要開發(fā)者提供大致的優(yōu)化方針,甚至是明確的優(yōu)化仿真。

因此Xilinx的高層綜合工具提供了一系列性能評估的功能和向編譯器指向優(yōu)化方式的途徑。針對行為描述進行行為綜合,可以獲取如下多種性能指標:

?面積(電路規(guī)模):根據(jù)資源實施設(shè)計所需的硬件資源量

在FPGA中可用,包括查找表(LUT),寄存器,Block RAM和DSP48。

?延遲:函數(shù)計算所有輸出值所需的時鐘周期數(shù)。

?初始化間隔(II):函數(shù)可以接受新輸入數(shù)據(jù)之前的時鐘周期數(shù)。

?循環(huán)迭代延遲:完成循環(huán)的一次迭代所需的時鐘周期數(shù)。

?循環(huán)啟動間隔:下一次循環(huán)迭代開始處理數(shù)據(jù)之前的時鐘周期數(shù)。

?循環(huán)延遲:執(zhí)行循環(huán)所有迭代的循環(huán)數(shù)。

這些性能指標的行為綜合結(jié)果都會在HLS工具的報告中指出,開發(fā)者需要找出性能瓶頸或者性能過剩的部分。針對循環(huán)的優(yōu)化方式由流水線(pipeline)或展開(unroll). 此外還有指示運算器的并行或共享,指示數(shù)組的拆分(partition)和訪問調(diào)度,指示功能函數(shù)的內(nèi)聯(lián)(inline)等等。這些優(yōu)化指令相互作用,需要從全局出發(fā)確定優(yōu)化指令。

當進行詳細的優(yōu)化指令也無法達到預期的指標時,就需要考慮代碼本身的優(yōu)化。這就需要開發(fā)者在設(shè)計模塊(函數(shù)、循環(huán)等)時靈活運用并行、流水線等架構(gòu),并在充分理解行為綜合機制的基礎(chǔ)上編寫更容易生成高效硬件行為描述的代碼。

4、接口連接

行為描述后的模塊需再和其他模塊群整合,所以就過渡到考慮如何設(shè)計端口類型與其他IP進行實例化連接了。

在RTL設(shè)計中,數(shù)據(jù)通過端口進出IP,這些端口可以使用固特定的IP接口協(xié)議(AXI-Master/ AXI-lite)來進行操作. 進出IP的每一條數(shù)據(jù),都應該將其指定為主源文件中的一個獨立函數(shù)實參。該函數(shù)實參將會被綜合為硬件RTL中的一個端口。

數(shù)據(jù)端口的類型大概分為以下三個大類:

1、直接讀寫數(shù)據(jù)值的寄存器式

2、按照隊列收發(fā)數(shù)據(jù)的數(shù)據(jù)流式

3、指定地址進行讀寫的內(nèi)存總線模式

不同接口能夠為不同設(shè)計提供最優(yōu)性能,比如數(shù)據(jù)流接口更適合于數(shù)據(jù)驅(qū)動型應用,為了更高效地傳輸數(shù)據(jù)經(jīng)常在發(fā)送和接收雙方之間插入FIFO緩沖器。這樣的使用規(guī)則為FPGA硬件開發(fā)者所熟知,軟件開發(fā)者仍需要深入理解。

下表為Vivado Design Flow 下的接口類型已經(jīng)變量類型的關(guān)系。 其中標量,數(shù)組,指針和hls數(shù)據(jù)流格式對應的默認接口模式標注為D,支持的接口標注為1,不支持的接口標注為3, ,是一個重要的設(shè)計參考表格。

o4YBAGAJix6ACnFaAACwPBcGev4479.png

本章節(jié)通過揭示HLS工作的基本概念讓大家對技術(shù)有了宏觀上的理解。這一份宏觀上的理解雖然淺顯易懂,但是它將基于CPU的架構(gòu)的軟件程序與在高層次綜合這項技術(shù)上行為描述語言做出了明顯的區(qū)分。賽靈思的HLS官方手冊中,對文中提到了端口協(xié)議,優(yōu)化指令,數(shù)據(jù)類型等都有非常詳細的解釋。本系列以后的文章將適合HLS加速的應用場景出發(fā),重點講解數(shù)據(jù)傳輸?shù)募軜?gòu)優(yōu)化以及如何編寫高效的硬件描述C代碼。

寫在最后:

"為現(xiàn)場可編程門陣列的高層次綜合建立的算法基礎(chǔ)”曾獲IEEE計算機分會年度技術(shù)成就獎的叢京生教授在ASPDAC 會議上對高層次綜合技術(shù)未來的展望:

一個性能優(yōu)于CPU的優(yōu)秀的高層次綜合設(shè)計的HLS C/C++代碼可能會很長,甚至和原始代碼相比面目全非。類似這樣對于一個軟件程序員進行常年的HLS C/C++代碼的訓練并不是可推廣和有效率的模式。但是在可定制計算技術(shù)的長河中,科學家和研究者們希望無論軟硬件工作人員,都只要經(jīng)過一些基本優(yōu)化理論的訓練就可以通過寫軟件代碼得到優(yōu)于通用CPU的設(shè)計。這樣大家才能廣泛體會到可定制計算能夠帶來的好處[4]。

審核編輯:何安

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

    關(guān)注

    21

    文章

    2085

    瀏覽量

    73302
收藏 人收藏

    評論

    相關(guān)推薦

    雙閉環(huán)PID先調(diào)內(nèi)環(huán)還是外環(huán)

    調(diào)整的分析: 一、雙閉環(huán)控制系統(tǒng)的基本概念 雙閉環(huán)控制系統(tǒng)的定義 雙閉環(huán)控制系統(tǒng)是一種具有兩個反饋控制環(huán)的控制系統(tǒng)。它通常由一個內(nèi)環(huán)和一個外環(huán)組成,內(nèi)環(huán)負責快速響應和穩(wěn)定系統(tǒng),外環(huán)則負責實現(xiàn)更高層次的控制目標。 內(nèi)環(huán)和
    的頭像 發(fā)表于 08-23 09:22 ?436次閱讀

    西門子推出Catapult AI NN軟件

    西門子數(shù)字化工業(yè)軟件日前推出Catapult AI NN軟件,可幫助神經(jīng)網(wǎng)絡加速器在專用集成電路(ASIC)和芯片級系統(tǒng)(So)上進行高層次綜合(HLS)。
    的頭像 發(fā)表于 06-19 10:48 ?598次閱讀

    西門子推出Catapult AI NN軟件,加速神經(jīng)網(wǎng)絡在ASIC和SoC上綜合

    在數(shù)字化工業(yè)的新浪潮中,西門子數(shù)字化工業(yè)軟件再次引領(lǐng)潮流,日前推出了名為Catapult? AI NN的革新性軟件,旨在為神經(jīng)網(wǎng)絡加速器在專用集成電路(ASIC)和芯片級系統(tǒng)(SoC)上實現(xiàn)高層次
    的頭像 發(fā)表于 06-18 17:29 ?786次閱讀

    各類常用混頻器的高層次設(shè)計和優(yōu)缺點

    在RF和微波設(shè)計中,混頻是信號鏈最關(guān)鍵的部分之一。過去,很多應用都受制于混頻器的性能?;祛l器的頻率范圍、轉(zhuǎn)換損耗和線性度,決定了混頻器能否用于特定應用。頻率高于30 GHz的設(shè)計很難實現(xiàn),此等頻率的器件封裝更是難上加難。大部分時候,簡單的單、雙和三平衡混頻器滿足了一般市場的需求。但是,隨著企業(yè)開發(fā)出的應用越來越先進,并希望提高每dB的性能,傳統(tǒng)混頻器便顯得捉襟見肘。當今和未來的市場需要這樣的混頻解決方案:針對各種
    的頭像 發(fā)表于 06-04 09:32 ?1452次閱讀
    各類常用混頻器的<b class='flag-5'>高層次</b>設(shè)計和優(yōu)缺點

    贛江新區(qū)黨工委專職副書記羅進走訪慰問我司高層次人才駱建輝!

    1月31日,贛江新區(qū)黨工委專職副書記羅進走訪慰問江西薩瑞微電子技術(shù)有限公司高層次人才駱建輝。與駱建輝進行了深入的交流,體現(xiàn)了新區(qū)對高層次人才的重視以及對科技創(chuàng)新的執(zhí)著追求。在對薩瑞微電子的發(fā)展
    的頭像 發(fā)表于 04-13 08:38 ?379次閱讀
    贛江新區(qū)黨工委專職副書記羅進走訪慰問我司<b class='flag-5'>高層次</b>人才駱建輝!

    宙訊科技董事長周沖入選“紫金山英才計劃高層次創(chuàng)新創(chuàng)業(yè)人才”

    近日,中共南京市委人才工作領(lǐng)導小組發(fā)布了南京市“紫金山英才計劃高層次創(chuàng)新創(chuàng)業(yè)人才項目”評審結(jié)果,宙訊科技董事長周沖成為該項目入選人才。
    的頭像 發(fā)表于 02-26 09:23 ?692次閱讀

    CYT4BF8CES的SPI通信的SDL中,Slave模式的High level如何修改發(fā)送的數(shù)據(jù)?

    英飛凌CYT4BF8CES的SPI通信的SDL中,Slave模式的High level如何修改發(fā)送的數(shù)據(jù)?目前只有初始化buffer能夠成功發(fā)送,中間如果修改buffer會進中斷并且報bus error。
    發(fā)表于 02-01 07:59

    利用莫爾圖樣開發(fā)的莫爾突觸晶體管

    受人腦的啟發(fā),研究人員開發(fā)出了一種新的突觸晶體管,它可以像人腦一樣同時處理和存儲信息,進行更高層次的思考。
    的頭像 發(fā)表于 01-13 11:12 ?619次閱讀

    研討會:利用編譯器指令提升AMD Vitis? HLS 設(shè)計性能

    AMD Vitis 高層次綜合 ( HLS ) 已成為自適應 SoC 及 FPGA 產(chǎn)品設(shè)計領(lǐng)域的一項顛覆性技術(shù),可在創(chuàng)建定制硬件設(shè)計時實現(xiàn)更高層次的抽象并提高生產(chǎn)力。Vitis HL
    的頭像 發(fā)表于 12-05 09:10 ?411次閱讀
    研討會:利用編譯器指令提升AMD Vitis? HLS 設(shè)計性能

    3D-IC 設(shè)計之早期三維布圖綜合以及層次化設(shè)計方法

    3D-IC 設(shè)計之早期三維布圖綜合以及層次化設(shè)計方法
    的頭像 發(fā)表于 12-04 16:53 ?399次閱讀
    3D-IC 設(shè)計之早期三維布圖<b class='flag-5'>綜合</b>以及<b class='flag-5'>層次</b>化設(shè)計方法

    芯片設(shè)計復雜性處理之層次結(jié)構(gòu)概念分析

     考慮當今使用的層次結(jié)構(gòu)形式的最簡單方法是要求工程師從概念上設(shè)計一個系統(tǒng)。他們可能會開始繪制一個包含大塊的框圖,其中包含 CPU、編碼器、顯示子系統(tǒng)等標簽。這不是一個功能層次結(jié)構(gòu),盡管許多劃分的塊被認為是提供功能的。這也不是純粹
    發(fā)表于 11-22 09:59 ?854次閱讀
    芯片設(shè)計復雜性處理之<b class='flag-5'>層次</b>結(jié)構(gòu)<b class='flag-5'>概念</b>分析

    使用Vivado高層次綜合(HLS)進行FPGA設(shè)計的簡介

    電子發(fā)燒友網(wǎng)站提供《使用Vivado高層次綜合(HLS)進行FPGA設(shè)計的簡介.pdf》資料免費下載
    發(fā)表于 11-16 09:33 ?0次下載
    使用Vivado<b class='flag-5'>高層次</b><b class='flag-5'>綜合</b>(HLS)進行FPGA設(shè)計的簡介

    通過Level和Step兩方面剖析現(xiàn)代電子集成技術(shù)

    芯片上的集成,封裝內(nèi)的集成,PCB板級集成,是電子集成的三個層次。每一個層次的集成,都分為不同的環(huán)節(jié)。這篇文章,我們從層次-Level和環(huán)節(jié)-Step兩個方面來剖析現(xiàn)代電子集成
    發(fā)表于 11-15 15:11 ?466次閱讀
    通過<b class='flag-5'>Level</b>和Step兩方面剖析現(xiàn)代電子集成<b class='flag-5'>技術(shù)</b>

    ESL事務級建模語言簡介

    任何系統(tǒng)級建模語言,都需要具備在較高層次的抽象能力和對不同來源的IP的集成能力。建模方法的選擇通常基于語言熟悉程度、建模支持、模型可用性和簡單性。 在各種軟硬件描述語言中,Verilog和VHDL
    的頭像 發(fā)表于 11-02 15:10 ?575次閱讀

    什么是Logic Synthesis?Synthesis的流程

    什么是Logic Synthesis?Logic Synthesis用于將輸入的高級語言描述(如HDL、verilog)轉(zhuǎn)換為門級電路的網(wǎng)絡表示。
    的頭像 發(fā)表于 10-24 15:56 ?1201次閱讀
    什么是Logic <b class='flag-5'>Synthesis</b>?<b class='flag-5'>Synthesis</b>的流程