為了提高設(shè)計(jì)數(shù)字硬件組件的效率,高層綜合(HLS)被視為提高設(shè)計(jì)抽象水平的下一步。但是,HLS工具的結(jié)果質(zhì)量(QoR)往往落后于手動(dòng)寄存器傳輸級(jí)別(RTL)流程的質(zhì)量。在本文中,我們調(diào)查了自2010年以來(lái)發(fā)表的有關(guān)HLS和RTL設(shè)計(jì)流程之間的QoR和生產(chǎn)率差異的科學(xué)文獻(xiàn)。我們的調(diào)查總共涵蓋46篇論文和118篇相關(guān)申請(qǐng)。我們的結(jié)果表明,平均而言,RTL流程的QoR仍然優(yōu)于最新的HLS工具。但是,使用HLS工具的平均開(kāi)發(fā)時(shí)間僅為RTL流程的三分之一,并且設(shè)計(jì)人員使用HLS可以獲得的生產(chǎn)率是其四倍以上。根據(jù)我們的發(fā)現(xiàn),我們還提供了一個(gè)模型案例研究,以總結(jié)HLS和RTL之間的比較研究中的最佳實(shí)踐。我們的案例研究的結(jié)果也與調(diào)查結(jié)果一致,因?yàn)槭褂肏LS工具可以使生產(chǎn)率提高六倍。此外,為了幫助彌合QoR差距,我們提供了一份針對(duì)改善HLS的文獻(xiàn)調(diào)查。我們的結(jié)果使我們得出結(jié)論,HLS當(dāng)前是用于快速原型設(shè)計(jì)和較短上市時(shí)間的可行選擇。
引言
數(shù)十年來(lái),寄存器傳輸級(jí)別(RTL)一直是描述超大規(guī)模集成(VLSI)系統(tǒng)及其組成知識(shí)產(chǎn)權(quán)塊的主要方法。盡管RTL工具只是逐步發(fā)展的,但VLSI系統(tǒng)的復(fù)雜性卻呈指數(shù)級(jí)增長(zhǎng),這使設(shè)計(jì)和驗(yàn)證過(guò)程成為生產(chǎn)力的瓶頸[1]。
高級(jí)綜合(HLS)有望通過(guò)各種方式來(lái)緩解此問(wèn)題[2]–[3][4][5]。在HLS中,在行為級(jí)別上描述了該應(yīng)用程序,省略了實(shí)現(xiàn)細(xì)節(jié),例如時(shí)序以及接口和存儲(chǔ)元素的性質(zhì)。這些詳細(xì)信息是使用HLS工具確定的,該工具將行為描述作為輸入。設(shè)計(jì)人員可以在工具中選擇目標(biāo)技術(shù),并將接口和內(nèi)存變量映射到指定的技術(shù)相關(guān)元素。然后,HLS工具會(huì)根據(jù)目標(biāo)技術(shù)和微體系結(jié)構(gòu)選擇生成RTL描述。
HLS的承諾很多。
通過(guò)提高抽象級(jí)別,可以減少最初的設(shè)計(jì)工作量。設(shè)計(jì)人員可以集中精力描述系統(tǒng)的行為,而不必花費(fèi)時(shí)間來(lái)實(shí)現(xiàn)微體系結(jié)構(gòu)的細(xì)節(jié)。在更高的抽象級(jí)別上,也不太可能在代碼中引入錯(cuò)誤。
驗(yàn)證被加速。通常可以使用軟件驗(yàn)證工具來(lái)驗(yàn)證設(shè)計(jì)的行為,該軟件驗(yàn)證工具比RTL仿真工具更容易使用。此外,HLS工具的RTL輸出可以使用原始的行為測(cè)試臺(tái)進(jìn)行驗(yàn)證,因?yàn)樵摴ぞ呖梢詸z查兩個(gè)模型的結(jié)果是否相同。
設(shè)計(jì)空間探索(DSE)更快??梢酝ㄟ^(guò)在HLS工具中進(jìn)行選擇來(lái)探索微體系結(jié)構(gòu),這些選擇幾乎不需要修改代碼。因此,可以在數(shù)小時(shí)內(nèi)探索幾種轉(zhuǎn)換,例如流水線化和各種循環(huán)展開(kāi)因子。這是對(duì)RTL方法論的巨大改進(jìn),在RTL方法論上,此類更改將需要對(duì)源代碼進(jìn)行重大修改。
定位新平臺(tái)非常簡(jiǎn)單。如果目標(biāo)平臺(tái)發(fā)生變化,則HLS工具能夠相應(yīng)地修改RTL輸出。例如,如果新平臺(tái)具有不同的時(shí)鐘頻率,則HLS工具將根據(jù)新頻率重新安排操作。
軟件工程師可以訪問(wèn)HLS。RTL設(shè)計(jì)需要了解VHDL和Verilog等語(yǔ)言,而HLS工具通常使用熟悉的語(yǔ)言,如C / C ++。HLS工具可以處理大多數(shù)特定于硬件的實(shí)現(xiàn)細(xì)節(jié),因此大大降低了軟件工程師處理硬件項(xiàng)目的門(mén)檻。也就是說(shuō),為了獲得最佳結(jié)果,在使用HLS時(shí),硬件專業(yè)知識(shí)仍然有用。
這些好處加在一起,減少了設(shè)計(jì)和驗(yàn)證時(shí)間,降低了開(kāi)發(fā)成本,并降低了進(jìn)行硬件項(xiàng)目的門(mén)檻。因此,縮短了產(chǎn)品上市時(shí)間,并且在異構(gòu)系統(tǒng)上使用硬件加速已成為更具吸引力的選擇。
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的興起也是HLS的推動(dòng)因素。FPGA是HLS設(shè)計(jì)的理想平臺(tái),因?yàn)樗鼈兛梢钥焖龠M(jìn)行原型設(shè)計(jì),具有快速的設(shè)計(jì)周期并且具有固有的可重新編程性?,F(xiàn)代的HLS工具通常包含用于設(shè)計(jì)目標(biāo)的廣泛的FPGA技術(shù)庫(kù)。
HLS的歷史可以追溯到1970年代和1980年代,但是直到世紀(jì)之交,它才成為該行業(yè)的可行選擇[2]。緩慢采用的原因之一是結(jié)果質(zhì)量(QoR),例如資源使用和性能,最初與RTL方法相比較差。使用最新一代的HLS工具可以改善QoR,但是個(gè)別研究報(bào)告的結(jié)果仍然不同,目前尚不清楚QoR差距是否已經(jīng)消除。
本文的目的是通過(guò)文獻(xiàn)綜述來(lái)回答這個(gè)問(wèn)題。我們檢查了46篇最新論文,比較了針對(duì)相同應(yīng)用的HLS和RTL方法的QoR和開(kāi)發(fā)工作。本文有四個(gè)主要貢獻(xiàn)。
對(duì)科學(xué)文章中報(bào)道的HLS和RTL流程的QoR和設(shè)計(jì)工作的比較分析。
案例研究介紹了將HLS和RTL方法與使用這兩種流程來(lái)實(shí)現(xiàn)HEVC / H.265視頻編碼器的一部分的測(cè)試組進(jìn)行比較的最佳實(shí)踐。
文獻(xiàn)調(diào)查表明了改善HLS的研究方向和方法。
關(guān)于HLS的最新技術(shù)的結(jié)論。
據(jù)我們所知,這是第一項(xiàng)全面的定量研究,它使用多種來(lái)源來(lái)比較HLS和RTL流程的QoR和設(shè)計(jì)工作。相反,先前的工作著重于將不同的HLS工具彼此進(jìn)行比較[6],[7]。其他論文提供了有關(guān)如何彌合RTL的QoR差距或以其他方式改進(jìn)HLS工具的見(jiàn)解[5],[8]。但是,缺少對(duì)HLS當(dāng)前狀態(tài)的全面定量分析,對(duì)此進(jìn)行了修改。
本文其余部分的結(jié)構(gòu)如下。第二部分介紹了我們選擇定量分析論文的標(biāo)準(zhǔn)。第三節(jié)包含對(duì)已審閱論文的薈萃分析,總結(jié)了其中所報(bào)告的信息類型。在第四節(jié)中,我們顯示并分析了文獻(xiàn)研究的結(jié)果,第五節(jié)介紹了我們的測(cè)試組研究及其結(jié)果。第六節(jié)回顧了提出對(duì)HLS進(jìn)行改進(jìn)的論文,最后,第七節(jié)總結(jié)了本文,并對(duì)結(jié)果進(jìn)行了一些討論。
相關(guān)論文
在本文中,我們研究了2010年或以后發(fā)表的文章,以全面了解HLS的最新作品。我們總共找到了超過(guò)一千篇候選論文,并選擇了需要進(jìn)一步研究的文章,其摘要指出:1)使用HLS實(shí)現(xiàn)了一個(gè)或多個(gè)應(yīng)用程序,以及2)將獲得的結(jié)果與同等的自制或參考RTL應(yīng)用程序進(jìn)行了比較。
我們還要求符合條件的論文必須列出下列一項(xiàng)或多項(xiàng)指標(biāo),用于HLS和RTL版本的申請(qǐng):
應(yīng)用特定指標(biāo)的性能。
執(zhí)行時(shí)間和/或延遲。
目標(biāo)平臺(tái)上可達(dá)到的最大時(shí)鐘頻率。
FPGA上的資源使用情況。
能量消耗。
開(kāi)發(fā)時(shí)間。
輸入源代碼(LoC)的行。
最終,我們一共發(fā)現(xiàn)了46篇合格論文,其中39篇來(lái)自IEEE Xplore,兩篇來(lái)自Springer Link,一篇來(lái)自ACM Digital Library,兩篇來(lái)自arXiv.org,一篇來(lái)自EBSCOhost,另一篇來(lái)自Science Direct。附錄表IX中提供了所有已審閱論文的基本信息。從表中可以看出,應(yīng)用范圍非常廣泛。這使得按應(yīng)用類型分析QoR結(jié)果不切實(shí)際,否則將對(duì)HLS的優(yōu)缺點(diǎn)提供有趣的見(jiàn)解。這樣的定性分析也將受益于很少獲得的實(shí)現(xiàn)的源代碼。
表一顯示了每年發(fā)表的合格論文數(shù)量。由于每年發(fā)表的論文數(shù)量較少,因此用我們的數(shù)據(jù)來(lái)檢查這些年內(nèi)HLS的QoR可能的趨勢(shì)是不可行的。對(duì)于這類研究來(lái)說(shuō),較長(zhǎng)的年份范圍也是比較好的。
分析
表II匯總了所關(guān)注論文中關(guān)注指標(biāo)及其發(fā)生的頻率。一般而言,所審查的作品在有關(guān)實(shí)驗(yàn)設(shè)置和結(jié)果的報(bào)告細(xì)節(jié)方面差異很大。該表僅統(tǒng)計(jì)那些以絕對(duì)值或百分比精確報(bào)告結(jié)果的論文。我們的定量分析排除了諸如“執(zhí)行時(shí)間少于100毫秒”之類的不精確值。
表II指標(biāo)及其在審閱論文中的出現(xiàn)頻率
22篇文章報(bào)告了多個(gè)應(yīng)用程序或?qū)嶒?yàn)設(shè)置的結(jié)果。在許多作品中,實(shí)現(xiàn)了多個(gè)不同的應(yīng)用程序,這些應(yīng)用程序經(jīng)常彼此關(guān)聯(lián)(例如[9]–[10][11])。一些作者比較了不同的HLS工具[12]–[13][14],而其他作者比較了各種微體系結(jié)構(gòu)優(yōu)化,例如循環(huán)展開(kāi)和流水線[15],[16]或不同的FPGA芯片[17]和[18]。。因此,數(shù)據(jù)集比僅合格論文所建議的數(shù)量要大。為簡(jiǎn)便起見(jiàn),我們將分別稱為這些結(jié)果申請(qǐng)表,無(wú)論它們是基于實(shí)際的不同應(yīng)用,HLS工具,F(xiàn)PGA芯片還是其他版本。表II的第三列顯示了報(bào)告給定指標(biāo)的應(yīng)用程序總數(shù)。
比較HLS和RTL方法時(shí),開(kāi)發(fā)時(shí)間非常受關(guān)注。但是,只有三分之一的論文報(bào)告了開(kāi)發(fā)時(shí)間,這在忽略它的文章中被視為一個(gè)缺陷。在各種QoR指標(biāo)中,報(bào)告的FPGA資源使用率要比性能值高。只有四篇論文針對(duì)ASIC實(shí)現(xiàn)(而非FPGA),因此沒(méi)有足夠的數(shù)據(jù)來(lái)比較ASIC面積結(jié)果。功耗也是如此。 幾乎所有論文都報(bào)告了使用的HLS工具。其余作品沒(méi)有理由不透露信息,但許可協(xié)議可能是原因。但是,即使那些文章也提到了HLS輸入語(yǔ)言。 表III匯總了所使用的HLS工具。第二列告訴每個(gè)工具出現(xiàn)的次數(shù),第三列告訴他們輸入語(yǔ)言。該表表明,至少在學(xué)術(shù)界,Vivado HLS(以前稱為自動(dòng)駕駛儀)是最受歡迎的HLS工具。所有其他工具僅獲得分散的使用。Vivado之所以受歡迎,可能是因?yàn)閄ilinx是領(lǐng)先的FPGA供應(yīng)商,其FPGA設(shè)計(jì)套件包括Vivado HLS。大量使用過(guò)的HLS工具還說(shuō)明了該領(lǐng)域的相對(duì)不成熟。
表III按論文分列的HLS工具使用情況
在46項(xiàng)合格作品中,有39項(xiàng)使用自制的RTL實(shí)現(xiàn)方案與HLS進(jìn)行了比較,還有7項(xiàng)引用了其他研究組提出的RTL結(jié)果。還有其他一些可以勝任本論文的工作,但是他們引用了具有不兼容的RTL實(shí)現(xiàn)的論文,因此被排除在外。例如,用于RTL的FPGA芯片來(lái)自不同的家族,這妨礙了公平地比較資源使用情況。
研究結(jié)果比較
A.關(guān)于QoR指標(biāo) FPGA的基本構(gòu)建塊是可配置邏輯塊(CLB)或邏輯陣列塊(LAB),具體取決于FPGA供應(yīng)商和器件。CLB / LAB由幾個(gè)邏輯單元組成,這些邏輯單元可以稱為邏輯單元(LC),邏輯元件(LE)或自適應(yīng)邏輯模塊。這些邏輯單元由查找表和觸發(fā)器組成。綜述的論文通常在為FPGA合成應(yīng)用程序時(shí)報(bào)告這些圖之一。就本文而言,與報(bào)告哪個(gè)數(shù)字無(wú)關(guān),因?yàn)槲覀儗?duì)HLS和RTL之間的資源使用比率感興趣。因此,我們將所有這些資源指標(biāo)歸為同一術(shù)語(yǔ),稱為基本FPGA資源。 FPGA還包含其他資源,例如DSP塊和片上塊RAM(BRAM)存儲(chǔ)器,如果沒(méi)有FPGA供應(yīng)商的足夠數(shù)據(jù),則無(wú)法將其轉(zhuǎn)換為CLB等效項(xiàng)。這將需要知道確切的FPGA芯片類型,但是只有大約60%的審閱論文對(duì)此進(jìn)行了報(bào)告,而其他論文僅陳述了所使用的FPGA系列。因此,我們沒(méi)有一種通用的方法將所有資源指標(biāo)組合為一個(gè)資源使用價(jià)值,可以在各個(gè)應(yīng)用程序之間進(jìn)行比較。因此,我們放棄了這種方法,而是選擇CLB或其組成部分作為資源使用情況比較的基礎(chǔ)。 審閱的論文還根據(jù)實(shí)現(xiàn)的應(yīng)用程序使用了各種不同的性能指標(biāo)。這些可以分為四類:1)性能;2)執(zhí)行時(shí)間;3)延遲;4)最大頻率。在這種情況下,可以根據(jù)應(yīng)用以幾種方式解釋性能。例如,對(duì)于視頻編碼器,這表示每秒的幀數(shù),對(duì)于加密模塊,則表示每秒的加密位。對(duì)于具有清晰開(kāi)始和結(jié)束的應(yīng)用程序,通常會(huì)報(bào)告執(zhí)行時(shí)間,有些論文會(huì)報(bào)告延遲,即處理樣本的時(shí)鐘周期數(shù)。最常報(bào)告的性能指標(biāo)是可以在目標(biāo)FPGA上調(diào)度應(yīng)用程序的最大頻率。
我們希望包括盡可能多的性能指標(biāo),以便在本文中全部使用。對(duì)于報(bào)告多個(gè)指標(biāo)的論文,我們將性能優(yōu)先于執(zhí)行時(shí)間,優(yōu)先于延遲而不是延遲,將延遲優(yōu)先于最大頻率。因此,我們?cè)诿總€(gè)應(yīng)用程序中僅使用這些值之一,而不是嘗試創(chuàng)建任意的聚合性能指標(biāo)。在以下各節(jié)的圖中,我們將所選值稱為Performance。我們還在數(shù)字的計(jì)算中反轉(zhuǎn)了執(zhí)行時(shí)間和等待時(shí)間值,因此值越大越好。在以下各節(jié)中檢查各種數(shù)據(jù)云圖形的方法不是將各個(gè)數(shù)據(jù)點(diǎn)相互比較,而是集中在重心和數(shù)據(jù)分散性上。
B 數(shù)值分析 表IV收集了我們發(fā)現(xiàn)的數(shù)值匯總數(shù)據(jù)。?表示報(bào)告了相應(yīng)數(shù)據(jù)的申請(qǐng)數(shù)量。第三列報(bào)告HLS和RTL結(jié)果之間的比率平均值。對(duì)于除DSP模塊和BRAM以外的所有值,我們使用幾何平均值而不是算術(shù)平均值,因?yàn)橛捎趹?yīng)用范圍廣泛,每個(gè)類別中的值可能相差一個(gè)數(shù)量級(jí)。對(duì)于DSP模塊和BRAM,由于數(shù)據(jù)集中的零,因此無(wú)法計(jì)算幾何平均值,因此使用了算術(shù)平均值。粗體均值支持HLS,而非粗體均值支持RTL。第四列顯示幾何標(biāo)準(zhǔn)偏差(GSD)。請(qǐng)注意,它是一個(gè)乘法值:下限是通過(guò)除以GSD獲得的,上限是通過(guò)乘以GSD獲得的。
表IV論文數(shù)值數(shù)據(jù)摘要
不出所料,HLS在開(kāi)發(fā)時(shí)間和源代碼行方面均優(yōu)于RTL。平均開(kāi)發(fā)時(shí)間僅為相應(yīng)RTL應(yīng)用程序的三分之一。我們還檢查了HLS與RTL的開(kāi)發(fā)時(shí)間比例與絕對(duì)開(kāi)發(fā)時(shí)間的關(guān)系看看項(xiàng)目規(guī)模是否對(duì)比率有影響,但沒(méi)有相關(guān)性。因此,對(duì)于大型和小型應(yīng)用程序來(lái)說(shuō),減少的開(kāi)發(fā)時(shí)間似乎是相同的。另一方面,分別與代碼大小的比較表明,對(duì)于較大的應(yīng)用程序(1000 LoC或更多),HLS代碼似乎比RTL代碼更緊湊。實(shí)際上,在所有情況下,HLS LoC比RTL LoC多,代碼大小小于250 LoC。使用較小的代碼大小,非行為代碼將在總代碼中占相對(duì)較大的部分,這似乎有利于RTL。 在性能和執(zhí)行時(shí)間上,HLS設(shè)計(jì)的平均水平明顯較差,但在延遲和最大頻率方面,差異不那么明顯。HLS方法還會(huì)浪費(fèi)基本資源:平均而言,HLS使用的基本FPGA資源比RTL多41%。使用BRAM和DSP模塊,結(jié)果是矛盾的?;趫?bào)告已使用的BRAM塊數(shù)量的論文,HLS似乎更有效地使用它們,但是對(duì)于報(bào)告以千位為單位的BRAM使用情況的論文,RTL勝出。在DSP塊使用中,HLS和RTL看起來(lái)很相似。 我們還研究了HLS輸入語(yǔ)言如何影響QoR。在[19],HLS工具根據(jù)其描述輸入的樣式分為五類:諸如框架的硬件描述語(yǔ)言(HDL),基于C的框架,基于高級(jí)語(yǔ)言(HLL)的框架(這些是高度抽象的,通常是對(duì)象面向語(yǔ)言),基于模型的框架(使用可執(zhí)行規(guī)范,例如NI LabView和MATLAB HDL Coder)以及基于CUDA / OpenCL的框架。在本文中,我們發(fā)現(xiàn)有5個(gè)使用HDL的應(yīng)用程序,例如77個(gè)基于C的應(yīng)用程序,10個(gè)基于HLL的應(yīng)用程序,六個(gè)基于模型的應(yīng)用程序和11個(gè)基于CUDA / OpenCL的框架。由于基于C的框架以外的框架僅接受分散的用法,因此不明智地將所有類別相互比較。相反,我們比較了基于C的框架和所有其他框架的QoR。結(jié)果顯示在表V中,其中?表示可比較結(jié)果的數(shù)量。似乎基于C的框架所產(chǎn)生的設(shè)計(jì)性能要比其他框架差,但可以節(jié)省基本資源的使用。進(jìn)一步研究數(shù)據(jù),我們注意到基于CUDA / OpenCL的框架特別消耗資源(3.56×)并產(chǎn)生了最差的效果(0.56×)。
表V按框架類型比較QoR
C.資源使用情況和性能之間的比較 為了更好地說(shuō)明QoR差異,圖1顯示了相對(duì)HLS / RTL性能相對(duì)于每個(gè)應(yīng)用程序的相對(duì)HLS / RTL基本資源使用情況。圖中的每個(gè)“ X”代表一個(gè)應(yīng)用程序。較寬的水平線和垂直線表示收支平衡線,其中HLS和RTL的性能和基本資源使用率分別相同。大多數(shù)標(biāo)記都聚集在收支平衡線的交點(diǎn)附近,這表明在大多數(shù)情況下,HLS和RTL之間的性能和基本資源使用方面的差異相對(duì)較小。盡管如此,相對(duì)于相反的方向,在圖的右邊和底部有更多的標(biāo)記,這表明RTL在這兩個(gè)方面都傾向于不及HLS。
圖1. 不同應(yīng)用程序的性能和基本資源使用率之間的HLS與RTL之比的散布圖。
圖2顯示了另一種查看相同數(shù)據(jù)的方法,該圖顯示了HLS應(yīng)用程序(“ +”)和RTL應(yīng)用程序(“X”)。較大的,部分重疊的符號(hào)對(duì)應(yīng)兩個(gè)度量均基于幾何平均值顯示了重心。數(shù)據(jù)點(diǎn)云在很大程度上重疊,并且重心彼此靠近。因此,平均而言,HLS和RTL QoR之間沒(méi)有根本差異,但是RTL的要好一些。
圖2-每個(gè)應(yīng)用程序的HLS(橙色$ x $)和RTL(藍(lán)色+)性能以及基本資源使用情況。請(qǐng)注意,該性能沒(méi)有列出的單位,因?yàn)樗驊?yīng)用程序而異。
我們還想了解相對(duì)HLS / RTL性能與基本資源使用的絕對(duì)數(shù)量之間是否存在任何關(guān)聯(lián)。也就是說(shuō),HLS和RTL設(shè)計(jì)之間的相對(duì)性能是否根據(jù)消耗的FPGA資源而變化。我們的假設(shè)是,對(duì)于大型應(yīng)用程序,HLS工具優(yōu)化數(shù)據(jù)路徑和控制邏輯的能力可能會(huì)受到更大的限制。結(jié)果繪制在圖3中,該圖表明沒(méi)有明確的相關(guān)性,并且對(duì)于該數(shù)據(jù)集,皮爾遜相關(guān)系數(shù)的確僅為0.10。因此,設(shè)計(jì)的大小似乎并不影響HLS工具優(yōu)化性能的能力。
圖3-HLS / RTL性能與HLS基本資源使用情況。
D.基于設(shè)計(jì)努力的比較 圖4顯示了報(bào)告了開(kāi)發(fā)時(shí)間的應(yīng)用程序的HLS / RTL開(kāi)發(fā)時(shí)間比率。除了三種情況外,其他所有比率均小于1,而在72%的情況下,比率小于0.5。這三個(gè)應(yīng)用程序的HLS開(kāi)發(fā)時(shí)間比RTL的開(kāi)發(fā)時(shí)間長(zhǎng),它們來(lái)自相同的工作[13]。作者指出,開(kāi)發(fā)時(shí)間的差異是由于學(xué)習(xí)使用HLS工具所花費(fèi)的時(shí)間以及修改參考C ++源代碼以達(dá)到所需吞吐量的需要。
圖4-不同應(yīng)用程序的HLS / RTL開(kāi)發(fā)時(shí)間比率。 同樣,圖5描繪了HLS和RTL設(shè)計(jì)之間的LoC比。在這里,HLS的主導(dǎo)地位不那么突出,但仍然很重要。在75%的情況下,HLS LoC小于RTL LoC。
圖5-不同應(yīng)用的HLS / RTL LoC比。
我們還研究了LoC中的應(yīng)用程序大小與HLS / RTL性能之間的可能相關(guān)性。圖6(a)示出了數(shù)據(jù)。從計(jì)算中除去右上角的三個(gè)異常值時(shí),Pearson相關(guān)系數(shù)僅為0.04。因此,似乎代碼的大小并不表示相對(duì)HLS / RTL性能。圖6(b)顯示了相對(duì)HLS / RTL基本資源使用情況的相同數(shù)據(jù)。相關(guān)性是-0.08,因此代碼大小也不與基本資源使用率相關(guān)。兩者合計(jì),無(wú)花果。圖3和6表示應(yīng)用程序的復(fù)雜性不會(huì)影響相對(duì)于HTL的RTL性能或基本資源使用率。但是,如圖6可以看出,就LoC而言,論文中提出的大多數(shù)應(yīng)用程序都相當(dāng)小。由于缺少數(shù)據(jù),因此省略了使用較大的應(yīng)用程序研究各自的行為。
圖6.-HLS / RTL(a)性能比(b)基本資源使用率與HLS LoC的關(guān)系。
觀察HLS相對(duì)于RTL有用性的一種方法是檢查每個(gè)設(shè)計(jì)小時(shí)獲得的性能,如在[11]中討論的。圖7通過(guò)將HLS / RTL性能除以開(kāi)發(fā)時(shí)間比率顯示了報(bào)告了性能和開(kāi)發(fā)時(shí)間的所有應(yīng)用程序的相對(duì)生產(chǎn)率。值大于1表示HLS方法在每個(gè)設(shè)計(jì)小時(shí)內(nèi)提供的性能要比RTL高。平均值是4.4。在情況1到4中,RTL方法顯然是成功的。在情況5和6中,方法學(xué)大致相同,而在其他情況下,HLS是更好的方法。對(duì)于應(yīng)用程序1,該條幾乎是不可見(jiàn)的,因?yàn)樵摫嚷蕿?.05。此應(yīng)用程序是稀疏算法矩陣乘法[11]具有動(dòng)態(tài)循環(huán)邊界,不適用于HLS工具為加速計(jì)算而執(zhí)行的自動(dòng)優(yōu)化。盡管如此,該圖表明,平均而言,使用HLS工具,設(shè)計(jì)師在每個(gè)設(shè)計(jì)小時(shí)內(nèi)可獲得更高的性能。
圖7-不同應(yīng)用的HLS到RTL的相對(duì)生產(chǎn)率。
測(cè)試研究
這項(xiàng)調(diào)查表明,許多先前的工作報(bào)告的HLS與RTL比較結(jié)果均不夠充分,這也使我們的數(shù)據(jù)收集變得復(fù)雜。因此,我們組織了一個(gè)案例研究,以展示在建立適當(dāng)?shù)臏y(cè)試以進(jìn)行比較和報(bào)告結(jié)果方面的最佳實(shí)踐。案例研究的第二個(gè)目的是檢查HLS和RTL流量從用戶的角度來(lái)看有何不同,以及流量的相對(duì)生產(chǎn)率是多少。以前的大多數(shù)研究只集中在QoR差異上。 案例研究是為實(shí)現(xiàn)2D離散余弦變換(DCT)算法[20]8×8高效視頻編碼(HEVC)[21]編碼器中使用的剩余塊。選擇DCT是因?yàn)樗娝苤⑶揖哂羞m當(dāng)?shù)膹?fù)雜性。 A.測(cè)試組 該測(cè)試小組由六名具有數(shù)字設(shè)計(jì)和編程基礎(chǔ)知識(shí)的參與者組成。如表VI所示,他們以前已經(jīng)編寫(xiě)了1k到100k行的C或C ++。平均而言,他們?cè)诠ぷ骰驑I(yè)余項(xiàng)目中大約有15個(gè)月的編程經(jīng)驗(yàn)。參加者在硬件設(shè)計(jì)方面的經(jīng)驗(yàn)要少得多,他們平均只有1000行VHDL或Verilog代碼,并且在此類項(xiàng)目中的經(jīng)驗(yàn)為三個(gè)月。在進(jìn)行這項(xiàng)研究之前,只有一名參與者完成了有關(guān)HLS的小教程,從而使該實(shí)驗(yàn)成為了其余部分中HLS的首次介紹。 表VI測(cè)試小組的背景經(jīng)驗(yàn)
我們選擇了硬件經(jīng)驗(yàn)有限但軟件經(jīng)驗(yàn)適中的參與者,因?yàn)镠LS承諾會(huì)隱藏特定于硬件的實(shí)施細(xì)節(jié)。因此,習(xí)慣于在軟件項(xiàng)目中編寫(xiě)行為描述的程序員是HLS的理想讀者。確實(shí),HLS的試金石測(cè)試是,在設(shè)計(jì)相對(duì)簡(jiǎn)單的硬件模塊時(shí),此類用戶可以毫不費(fèi)力地產(chǎn)生可接受的結(jié)果。為了獲得足夠的HLS背景知識(shí),參與者自學(xué)了HLS基礎(chǔ)知識(shí),并進(jìn)行了五個(gè)小練習(xí),以實(shí)現(xiàn)FPGA音頻編解碼器的各個(gè)部分。以前,他們使用VHDL RTL進(jìn)行了相同的練習(xí)。 B.測(cè)試用例 在HEVC編碼器中,DCT用于轉(zhuǎn)換8×8空間域殘差塊成8×8變換域系數(shù)(tcoeff)矩陣。眾所周知的行列算法[20]在兩個(gè)連續(xù)的階段中執(zhí)行具有可分離的1-D轉(zhuǎn)換的這些2-D轉(zhuǎn)換。首先將變換應(yīng)用于殘差塊的每一行以生成中間矩陣,然后將其應(yīng)用于中間矩陣的每一列以生成最終的變換系數(shù)矩陣。 參與者被分配為實(shí)現(xiàn)此2-D DCT硬件單元8×8帶有RTL(VHDL或Verilog)和HLS(帶有Mentor Graphics的Catapult-C版本8.2 m UV的C / C ++)的剩余塊。Catapult-C支持從編寫(xiě)原始源代碼到生成和驗(yàn)證RTL代碼的整個(gè)設(shè)計(jì)流程。在本文中,沒(méi)有進(jìn)行物理的FPGA實(shí)現(xiàn),但僅使用綜合結(jié)果來(lái)獲得QoR數(shù)據(jù)。由于我們對(duì)HLS與RTL的相對(duì)結(jié)果感興趣,因此省略了執(zhí)行布局和路線(P&R),并且P&R不會(huì)顯著影響該比率。 提供的DCT參考包括HEVC規(guī)范及其在HEVC參考編碼器中的實(shí)現(xiàn)[22]。與會(huì)者還獲得了現(xiàn)成的SystemC測(cè)試平臺(tái)以及對(duì)接口的要求,以使測(cè)試平臺(tái)能夠正常工作。接口要求包括輸入和輸出數(shù)據(jù)總線的寬度以及相關(guān)的控制信號(hào)。RTL和HLS版本使用相同的測(cè)試平臺(tái)。它為第一遍生成隨機(jī)殘差值,并為第二遍執(zhí)行必要的轉(zhuǎn)置。成功實(shí)施的條件是要通過(guò)測(cè)試平臺(tái)驗(yàn)證。 還指示參與者將工作時(shí)間分配到五個(gè)類別:1)設(shè)計(jì);2)實(shí)施;3)搜索信息;4)模擬;5)調(diào)試。他們被允許選擇是先實(shí)施HLS還是RTL版本,或者同時(shí)實(shí)施兩者。 C.結(jié)果 表VII顯示了各個(gè)測(cè)試人員執(zhí)行RTL和HLS的面積和速度數(shù)字。HLS / RTL比率顯示HLS和RTL結(jié)果之間的比率。粗體字表示HLS流量何時(shí)達(dá)到更好的結(jié)果。使用參與者報(bào)告的輸出系數(shù),等待時(shí)間,吞吐量和頻率,將速度計(jì)算為每秒百萬(wàn)個(gè)變換系數(shù)。 表VIIRTL和HLS設(shè)計(jì)的面積和性能圖
有四名測(cè)試人員開(kāi)始了RTL實(shí)施工作。所有參與者都使用VHDL而不是Verilog編寫(xiě)了RTL代碼。即使使用RTL實(shí)現(xiàn)了最小的面積和最高的頻率,總體趨勢(shì)是,參與者可以使用HLS工具獲得略小的面積和略高的時(shí)鐘頻率。此外,HLS設(shè)計(jì)已經(jīng)結(jié)束2.5×速度與RTL設(shè)計(jì)一樣快,這也影響了速度與面積之比。例如,第4個(gè)人在使用HLS的所有設(shè)計(jì)中都獲得了最佳的速度與面積之比。另一方面,第3個(gè)人是唯一使用RTL獲得更快的速度與面積比的人。所有測(cè)試人員都使用多級(jí)結(jié)構(gòu)來(lái)計(jì)算RTL代碼中的DCT,但是他們都沒(méi)有實(shí)現(xiàn)更復(fù)雜的狀態(tài)機(jī)以對(duì)連續(xù)輸入使用級(jí)流水線。在RTL情況下,缺少流水線會(huì)降低吞吐量。相比之下,與RTL相比,所有人都可以在HLS中使用循環(huán)展開(kāi)和流水線操作來(lái)獲得更好的吞吐量值。 表VIII列出了HLS和RTL方法的生產(chǎn)率值。使用HLS工具,所有參與者的生產(chǎn)力顯然都更好,并且HLS的平均生產(chǎn)力高達(dá)RTL的6.0倍。因此,它甚至高于調(diào)查結(jié)果。我們可以推測(cè),如果人們?cè)谄銻TL實(shí)現(xiàn)中實(shí)現(xiàn)了階段流水線工作,生產(chǎn)力將如何改變。生產(chǎn)力水平不太可能轉(zhuǎn)移到支持HTL之上的RTL,因?yàn)闀r(shí)間使用量會(huì)隨著吞吐量的增加而增加。 表VIIIHLS和RTL生產(chǎn)率
表IX論文摘要
圖8顯示了五類參與者的時(shí)間使用情況。平均而言,與HLS一起工作的人在所有類別中花費(fèi)的時(shí)間更少。RTL流的最大,平均和最小時(shí)間使用總計(jì)分別為37.7、15.1和3.7 h,而HLS流的相同值為25.0、10.1和1.6 h。
圖8使用RTL和HLS的不同類別的最大,最小和平均時(shí)間使用情況。 結(jié)論是,使用HLS的所有參與者的生產(chǎn)率都高于使用RTL的生產(chǎn)率。盡管小組規(guī)模很小,并且人員的硬件背景非常相似,但這項(xiàng)研究表明,采用HLS比RTL更容易,并且對(duì)于擁有大多數(shù)軟件設(shè)計(jì)經(jīng)驗(yàn)的人員來(lái)說(shuō),更快地收到更好的結(jié)果。該結(jié)果強(qiáng)調(diào)了以下事實(shí):HLS對(duì)于想要實(shí)施例如硬件加速器的軟件工程師是有用的工具。 應(yīng)該注意的是,我們的結(jié)果不同于典型的調(diào)查研究,后者的RTL的QoR優(yōu)于HLS的QoR。對(duì)此的可能解釋是,在接受調(diào)查的作品中,設(shè)計(jì)師比我們的測(cè)試人員擁有更多的硬件專業(yè)知識(shí)。另一方面,我們的案例研究與有關(guān)生產(chǎn)率的調(diào)查文獻(xiàn)一致,這有利于HLS。 D.測(cè)試人員的反饋 完成測(cè)試任務(wù)后,向參與者詢問(wèn)HLS和RTL設(shè)計(jì)流程的優(yōu)缺點(diǎn),最后他們必須從中選擇自己喜歡的。答案在HLS和RTL流之間平均分配(3–3)。 與HLS相比,偏愛(ài)RTL的人們希望為HLS工具提供更多的開(kāi)源支持,因?yàn)榱鞒谈叨纫蕾囉诠ぞ?。這將允許更多的業(yè)余愛(ài)好者使用HLS工具。一些測(cè)試人員還希望在HLS工具中對(duì)周期精度方面的結(jié)果RTL進(jìn)行更多控制。對(duì)于他們來(lái)說(shuō),RTL更容易進(jìn)行微調(diào),并且可以使他們更好地了解當(dāng)前的問(wèn)題。 與HTL相比,HLS的支持者更喜歡HLS的易用性,HLS工具的職責(zé)是保留不必要的細(xì)節(jié),如自動(dòng)I / O握手和流水線支持。這使參與者可以集中精力定義行為描述。他們還認(rèn)為RTL更加耗時(shí),需要更多的計(jì)劃,并且很難進(jìn)行重新設(shè)計(jì)。 測(cè)試人員的總體結(jié)論是,在嵌入式編程中,HLS和RTL與C和匯編語(yǔ)言相比。他們認(rèn)為,設(shè)計(jì)人員寧愿使用HLS(可用的最高抽象級(jí)別),而較低級(jí)別的RTL僅應(yīng)在周期關(guān)鍵型應(yīng)用程序中使用,或者應(yīng)能夠顯著提高性能。 E.最佳做法 我們使用文獻(xiàn)調(diào)查和本案例研究來(lái)總結(jié)以下最佳實(shí)踐,以對(duì)RTL和HLS工作流程進(jìn)行比較研究。
應(yīng)該使用一組人來(lái)實(shí)施相同的設(shè)計(jì),以減少設(shè)計(jì)師體驗(yàn)這兩種流程的影響。
除非許可協(xié)議禁止,否則應(yīng)報(bào)告使用的HLS工具和語(yǔ)言。這些選擇已顯示出會(huì)影響QoR [12]–[13][14]。
當(dāng)進(jìn)行專注于QoR差異的研究時(shí),在RTL和HLS設(shè)計(jì)中應(yīng)使用相同的微體系結(jié)構(gòu)。但是,如果重點(diǎn)是生產(chǎn)力或HLS的可用性,則可以取消此限制。
對(duì)于FPGA實(shí)施,應(yīng)報(bào)告確切的FPGA芯片模型和版本以允許復(fù)制結(jié)果。
應(yīng)報(bào)告每個(gè)設(shè)計(jì)師的時(shí)間使用情況。此外,應(yīng)該報(bào)告每個(gè)工作階段所花費(fèi)的時(shí)間,以便更深入地了解使用HLS和RTL版本最耗時(shí)的部分。
應(yīng)該報(bào)告輸入代碼的行,以顯示應(yīng)用程序的大小和復(fù)雜性。
除了基本的QoR結(jié)果外,還應(yīng)報(bào)告每個(gè)設(shè)計(jì)時(shí)間的性能,以顯示HLS和RTL流程之間的生產(chǎn)率差異。
彌補(bǔ)質(zhì)量差距
我們的調(diào)查表明,對(duì)于任何給定的應(yīng)用程序,HLS和RTL方法之間通常仍然存在QoR差距,通常更傾向于RTL。現(xiàn)有大量文獻(xiàn)已經(jīng)認(rèn)識(shí)到這一差距并提出了縮小差距的方法。在本節(jié)中,我們將對(duì)這些文獻(xiàn)進(jìn)行調(diào)查,以向HLS研究人員和開(kāi)發(fā)人員重點(diǎn)介紹。此外,我們將對(duì)對(duì)現(xiàn)有HLS流程進(jìn)行新穎改進(jìn)的論文進(jìn)行審查。 A.工具開(kāi)發(fā)人員的研究方向 Sun 等 [8]為HLS工具開(kāi)發(fā)人員集中精力提供了一些建議。他們指出,資源共享和調(diào)度是當(dāng)前HLS工具仍在努力的HLS技術(shù)的兩個(gè)主要功能。例如,他們演示了當(dāng)僅需要13個(gè)具有最佳共享功能的硬件時(shí),HLS工具會(huì)實(shí)例化31種特定類型的硬件操作員。他們還注意到,HLS工具混淆了源代碼和生成的硬件之間的關(guān)系,從而使識(shí)別代碼的次優(yōu)部分變得困難。此外,作者呼吁業(yè)界就HLS的基于C的標(biāo)準(zhǔn)輸入語(yǔ)言達(dá)成一致。這將為工具用戶和工具本身提供一種明確的方式來(lái)解釋源代碼。 Rupnow 等 [57]在HLS的可用性和QoR方面都有公認(rèn)的發(fā)展空間。他們的研究使用的是AutoPilot(現(xiàn)為Vivado HLS),但建議是可推廣的。作者建議對(duì)循環(huán)流水線和展開(kāi)進(jìn)行自動(dòng)權(quán)衡分析,以使DSE更快。對(duì)于復(fù)雜的循環(huán)結(jié)構(gòu),可能的優(yōu)化組合數(shù)量可能會(huì)非常多。此外,作者呼吁支持BRAM端口復(fù)制指令,為數(shù)據(jù)流轉(zhuǎn)換提供更強(qiáng)大的功能,并支持2-D訪問(wèn)模式的流計(jì)算。為了改善QoR,他們建議這些工具應(yīng)該檢測(cè)單獨(dú)的循環(huán)和函數(shù)之間的內(nèi)存級(jí)別相關(guān)性,并自動(dòng)對(duì)內(nèi)存訪問(wèn)進(jìn)行重新排序,以允許分區(qū),流傳輸和更好的流水線操作。這些工具還應(yīng)該自動(dòng)創(chuàng)建緩沖區(qū),以提高內(nèi)存訪問(wèn)的重用性。 在[5]中也認(rèn)識(shí)到了優(yōu)化存儲(chǔ)器訪問(wèn)在高質(zhì)量設(shè)計(jì)中的重要性。作者指出,HLS工具通常不支持內(nèi)存層次結(jié)構(gòu),也不抽象外部?jī)?nèi)存訪問(wèn)。因此,要求設(shè)計(jì)人員注意總線接口和內(nèi)存控制器的細(xì)節(jié),這與行為設(shè)計(jì)范式的思想不太吻合。HLS工具應(yīng)向設(shè)計(jì)人員隱藏外部存儲(chǔ)器傳輸,以解決此問(wèn)題。
本文還指出了從順序C / C ++規(guī)范中獲得任務(wù)級(jí)并行性的困難,為此作者建議開(kāi)發(fā)適當(dāng)?shù)脑O(shè)備中性編程模型。 在[32]中,提出了在HLS工具中缺乏對(duì)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的支持。作者采用以數(shù)據(jù)流為中心的方式并通過(guò)使用動(dòng)態(tài)內(nèi)存分配的遞歸樹(shù)遍歷來(lái)實(shí)現(xiàn)相同的算法,并觀察到使用后一種方法會(huì)明顯降低性能。通過(guò)應(yīng)用幾次手動(dòng)代碼轉(zhuǎn)換,作者可以提高性能,并得出結(jié)論,HLS工具應(yīng)使用動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)自動(dòng)執(zhí)行類似的優(yōu)化。 B. HLS流程的改進(jìn) 由于研究文章的作者通常無(wú)法訪問(wèn)商業(yè)HLS工具的源代碼,因此大多數(shù)對(duì)HLS結(jié)果進(jìn)行了改進(jìn)的論文都是通過(guò)在設(shè)計(jì)流程中引入新的優(yōu)化步驟來(lái)實(shí)現(xiàn)的。本節(jié)將回顧一些屬于此類的有希望的結(jié)果。 Josipovic 等[58]提出了使用并行模式模板來(lái)根據(jù)目標(biāo)設(shè)備的屬性來(lái)擴(kuò)展模塊實(shí)現(xiàn),這超出了HLS工具的能力。作者出現(xiàn)了2.8 × 加快了標(biāo)準(zhǔn)HLS工具流程的速度。在[59]中也使用了基于模板的方法,其中使用針對(duì)硬件優(yōu)化的通用計(jì)算模式的可組合和可參數(shù)化模板來(lái)提高性能。為了方便用戶,這些模板可以包含在HLS工具中。 在[60]中,討論了大規(guī)模并行算法中的內(nèi)存訪問(wèn)瓶頸問(wèn)題。作者提出了一種算法,該算法可以調(diào)度在不同管線階段訪問(wèn)的內(nèi)存,從而減少了同時(shí)訪問(wèn)的壓力。他們的方法平均將流水線性能提高了43%,并將存儲(chǔ)庫(kù)使用量減少了55%。[61]中討論了另一種減少內(nèi)存訪問(wèn)開(kāi)銷的方法。
本文提出了一種新穎的算法,可以在某些區(qū)域約束下選擇性地將陣列定標(biāo)為片上寄存器。結(jié)果表明性能有了顯著提高。 啟用更高效的HLS的一種方法是通過(guò)識(shí)別自順序基本操作合并的自定義操作。這降低了合成算法的數(shù)據(jù)流圖的復(fù)雜性,從而減少了合成時(shí)間并提高了QoR。在[62]中已經(jīng)研究了這種方法,在面積消耗,性能和代碼大小方面實(shí)現(xiàn)了顯著的改進(jìn)。因此,HLS工具應(yīng)包括自定義操作標(biāo)識(shí)作為預(yù)處理步驟。 資源分配和操作綁定是HLS中的兩個(gè)基本步驟。因此,它們的有效實(shí)施對(duì)于實(shí)現(xiàn)良好的QoR至關(guān)重要。在[63]中,已經(jīng)研究了寄存器分配的影響。
本文表明,在大多數(shù)情況下,一種簡(jiǎn)單的資源分配策略,即每個(gè)變量一個(gè)寄存器而沒(méi)有寄存器共享,可以帶來(lái)最佳的QoR結(jié)果。 HLS工具使用軟件編譯器來(lái)創(chuàng)建輸入程序的中間表示(IR)。然后在HLS優(yōu)化步驟中使用IR。IR和編譯器選項(xiàng)影響QoR也就不足為奇了。黃等。 [64]研究了不同編譯器選項(xiàng)對(duì)QoR的影響,并開(kāi)發(fā)了一種方法,僅自動(dòng)選擇可改善QoR的選項(xiàng),與通常的-O3優(yōu)化水平相比,平均性能提高了16%。 在[65]中,觀察到可以通過(guò)合并不同的行為描述而不是分別為每個(gè)行為描述執(zhí)行HLS來(lái)節(jié)省大量面積。這是因?yàn)楫?dāng)HLS工具可以在描述之間共享功能單元時(shí),可以更好地共享FPGA上的功能單元。本文提出了一種在給定的等待時(shí)間約束內(nèi)搜索最佳合并的算法。 C.設(shè)計(jì)空間探索 HLS工具包含各種指令,可以指導(dǎo)硬件綜合以生成更有效的設(shè)計(jì)。這些指令包括流水線化和循環(huán)展開(kāi)以及數(shù)組分區(qū)等。由于大多數(shù)算法都包含許多循環(huán)和數(shù)據(jù)數(shù)組,因此找到一組Pareto最佳指令設(shè)置可能是一項(xiàng)艱巨的任務(wù),但這對(duì)獲得良好的QoR至關(guān)重要。因此,應(yīng)該自動(dòng)探索最佳設(shè)置的設(shè)計(jì)空間,但是當(dāng)前領(lǐng)先的HLS工具無(wú)法為DSE用戶提供幫助。另一方面,有一些學(xué)術(shù)論文研究了HLS中的DSE自動(dòng)化。 一種簡(jiǎn)單的自動(dòng)迭代DSE方法在[66]中提出。與非引導(dǎo)式HLS流量相比,該方法著重于減小面積,可將QoR提升多達(dá)50%。[67]中展示了一種基于自適應(yīng)加窗方法的更復(fù)雜的DSE算法。該算法顯示出可以在運(yùn)行時(shí)間和找到最佳QoR之間取得良好的折衷。專門(mén)針對(duì)具有嵌套循環(huán)的應(yīng)用程序的類似方法已展示了235 × 與詳盡的DSE相比,速度更快,同時(shí)獲得了相似的結(jié)果[68]。 在[69]中,基于順序模型的優(yōu)化已應(yīng)用于DSE問(wèn)題。
本文表明,該方法可以在合理的時(shí)間內(nèi)從成千上萬(wàn)個(gè)可能的設(shè)計(jì)空間中找到全局最優(yōu)點(diǎn)。在[70]中,在HLS之前添加了輕量級(jí)的預(yù)處理步驟以執(zhí)行目標(biāo)算法的動(dòng)態(tài)相關(guān)性分析。當(dāng)將這些機(jī)會(huì)作為HLS工具的約束條件時(shí),該方法可以公開(kāi)資源共享機(jī)會(huì),從而產(chǎn)生更好的QoR。 在[71]中已經(jīng)討論了找到最佳環(huán)路展開(kāi)因子的特定但重要的問(wèn)題。作者已經(jīng)開(kāi)發(fā)出一種算法,可以在給定的區(qū)域約束內(nèi)找到最佳展開(kāi)因子,并表明與其他可能的解決方案相比,該算法可以提供最佳性能。 D.驗(yàn)證 驗(yàn)證仍然是任何設(shè)計(jì)項(xiàng)目中耗時(shí)的部分。因此,HLS工具在所有階段都支持驗(yàn)證流程至關(guān)重要。盡管HLS流程允許對(duì)單個(gè)模塊進(jìn)行有效的行為驗(yàn)證,但仍必須對(duì)生成的RTL進(jìn)行非行為方面的驗(yàn)證,例如接口綜合結(jié)果和成功的組件集成。HLS之后傳統(tǒng)的RTL驗(yàn)證比較困難,因?yàn)榕c輸入源代碼[4],[5],[8]沒(méi)有直接關(guān)系。然而,在許多情況下,使用HLS可以將驗(yàn)證時(shí)間減少一半[72]。 HLS的驗(yàn)證方面在最近的一篇論文中進(jìn)行了廣泛的討論[72]。作者指出,邏輯冗余會(huì)降低測(cè)試覆蓋率,這是HLS的主要問(wèn)題。邏輯冗余可能出現(xiàn)在源規(guī)范中,但也可能在RTL生成中由HLS工具引入。因此,HLS工具的開(kāi)發(fā)人員應(yīng)努力消除產(chǎn)生邏輯冗余的趨勢(shì)。除此之外,在驗(yàn)證過(guò)程中可以使用正式的工具來(lái)識(shí)別冗余。
本文還提倡使用源掉毛作為改善HLS的一種方法。它不僅可以用于檢查錯(cuò)誤源,還可以通過(guò)證明FIFO大小等屬性來(lái)幫助優(yōu)化設(shè)計(jì)。 叢等。 [5]提出了三個(gè)值得注意的項(xiàng)目,以使大多數(shù)調(diào)試都可以在行為輸入語(yǔ)言級(jí)別上進(jìn)行,以進(jìn)行片上驗(yàn)證:1)以較小的開(kāi)銷添加調(diào)試邏輯的能力;2)觀察諸如FIFO之類的關(guān)鍵緩沖區(qū)的能力;3)使用源代碼中的斷點(diǎn)觀察硬件塊內(nèi)部狀態(tài)的能力。由于計(jì)算機(jī)生成的RTL代碼,執(zhí)行HLS后無(wú)法在RTL級(jí)別上實(shí)現(xiàn)這些重要的調(diào)試功能。 除了驗(yàn)證之外,工程變更單(ECO)還在HLS方面帶來(lái)了困難[4]。發(fā)出ECO時(shí),僅需要一些小的增量更改,這些更改通常不會(huì)被高級(jí)行為描述捕獲。另一方面,已經(jīng)注意到,由于可以廣泛驗(yàn)證行為源代碼,并且HLS工具確保所生成的RTL是正確的,因此ECO在HLS流中并不常見(jiàn)[66]。
結(jié)論
在本文中,我們檢查了46篇最近的文章,這些文章比較了HLS和RTL設(shè)計(jì)流程之間的QoR和設(shè)計(jì)工作。由于HLS有望比RTL帶來(lái)更高的生產(chǎn)率,因此我們的目的是了解現(xiàn)代HLS工具是否也能夠產(chǎn)生可與手動(dòng)調(diào)整的RTL設(shè)計(jì)競(jìng)爭(zhēng)的結(jié)果。 我們的調(diào)查表明,即使是最新一代的HLS工具,也無(wú)法提供與手動(dòng)RTL一樣好的性能和資源使用。但是,結(jié)果差異很大,并且在大約40%的評(píng)估案例中,HLS被證明等于或優(yōu)于RTL方法。我們自己的案例研究表明,硬件經(jīng)驗(yàn)有限的設(shè)計(jì)人員可以使用HLS獲得更好的結(jié)果,并且性能提高2.5倍,F(xiàn)PGA資源使用率略低。我們還檢查了設(shè)計(jì)的大小是否影響了HLS和RTL之間的相對(duì)QoR,但沒(méi)有發(fā)現(xiàn)相關(guān)性。因此,HLS似乎適合于大小設(shè)計(jì)。 在設(shè)計(jì)方面,調(diào)查顯示HLS顯然是預(yù)期的領(lǐng)先者。平均而言,HLS設(shè)計(jì)時(shí)間僅為相應(yīng)RTL設(shè)計(jì)時(shí)間的三分之一。另外,HLS輸入代碼的大小幾乎減半,平均為RTL代碼大小的52%。當(dāng)同時(shí)考慮QoR和設(shè)計(jì)工作時(shí),我們發(fā)現(xiàn),使用HLS的設(shè)計(jì)者在每個(gè)設(shè)計(jì)小時(shí)的平均性能是RTL的4.4倍。我們自己的案例研究通過(guò)報(bào)告生產(chǎn)率提高6.0倍來(lái)支持這一論點(diǎn)。因此,當(dāng)上市時(shí)間成為主要問(wèn)題并且沒(méi)有迫切需要獲得產(chǎn)品的最終性能或最小資源消耗時(shí),HLS是一個(gè)特別好的選擇。當(dāng)對(duì)現(xiàn)有設(shè)計(jì)進(jìn)行架構(gòu)更改時(shí),HLS還可以節(jié)省大量時(shí)間。
在我們的參考文獻(xiàn)中,經(jīng)常缺少信息,這使得HLS與RTL的比較更具挑戰(zhàn)性。因此,我們的案例研究還展示了報(bào)告同一應(yīng)用程序的HLS和RTL結(jié)果的最佳實(shí)踐。最好,測(cè)試組應(yīng)該比我們可以使用的更大,但是我們的測(cè)試用例仍然顯示了我們建議在此類研究中報(bào)告的基本細(xì)節(jié)。將來(lái),可以由具有更多硬件專業(yè)知識(shí)的測(cè)試小組進(jìn)行類似的案例研究。盡管本文顯示出硬件經(jīng)驗(yàn)有限的人可以輕松采用HLS并產(chǎn)生良好的結(jié)果,但有趣的是,看看硬件工程師作為測(cè)試人員的生產(chǎn)率和QoR差異如何表現(xiàn)。 在調(diào)查的論文中,經(jīng)常也缺少驗(yàn)證工作量的比較。大多數(shù)情況下,關(guān)于HLS工具如何允許在RTL驗(yàn)證中方便地使用行為測(cè)試平臺(tái)的簡(jiǎn)短說(shuō)明。由于驗(yàn)證是任何硬件項(xiàng)目的重要組成部分,因此這是對(duì)HLS研究狀態(tài)的重大監(jiān)督。因此,將來(lái),應(yīng)該對(duì)HLS與RTL驗(yàn)證流程進(jìn)行更多的定量研究。 我們還對(duì)文獻(xiàn)進(jìn)行了調(diào)查,以提出建議并完成研究,以改善HLS的QoR和驗(yàn)證流程。我們發(fā)現(xiàn)了許多論文,這些論文展示了通過(guò)在HLS設(shè)計(jì)流程中添加新步驟或使DSE自動(dòng)化來(lái)顯著改善QoR的方法。 過(guò)去十年中,隨著HLS工具取得的進(jìn)展,我們可以得出結(jié)論,該方法已為業(yè)界在原型設(shè)計(jì)和快速產(chǎn)品開(kāi)發(fā)中采用做好了準(zhǔn)備。如果下一代HLS工具可以完全彌補(bǔ)QoR差距,那么HLS將成為新的標(biāo)準(zhǔn)設(shè)計(jì)方法,而RTL可以針對(duì)與當(dāng)今軟件開(kāi)發(fā)中的匯編語(yǔ)言類似的有限微調(diào)。 后續(xù)文章中我們會(huì)討論可編程網(wǎng)絡(luò)中使用的各種高級(jí)語(yǔ)言。
審核編輯:郭婷
-
寄存器
+關(guān)注
關(guān)注
31文章
5358瀏覽量
120775 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110182
原文標(biāo)題:HLS與RTL語(yǔ)言使用情況調(diào)查
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論