《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 高層次綜合:解鎖FPGA廣闊應用的最后一塊拼圖

高層次綜合:解鎖FPGA廣闊應用的最后一塊拼圖

2019-10-16
關鍵詞: FPGA 高層次綜合

  我們為什么需要高層次綜合

  高層次綜合(High-level Synthesis)簡稱HLS,指的是將高層次語言描述的邏輯結構,自動轉換成低抽象級語言描述的電路模型的過程。所謂的高層次語言,包括C、C++、SystemC等,通常有著較高的抽象度,并且往往不具有時鐘或時序的概念。相比之下,諸如Verilog、VHDL、SystemVerilog等低層次語言,通常用來描述時鐘周期精確(cycle-accurate)的寄存器傳輸級電路模型,這也是當前ASIC或FPGA設計最為普遍使用的電路建模和描述方法。

  然而,HLS技術在近十年來獲得了大量的關注和飛速的發展,尤其是在FPGA領域。縱觀近年來各大FPGA學術會議,HLS一直是學術界和工業界研究最集中的領域之一。究其原因,主要有以下幾點。

  第一,使用更高的抽象層次對電路建模,是集成電路設計發展的必然選擇。集成電路伴隨摩爾定律發展至今,其復雜性已經逐漸超過人類可以手工管理的范疇。例如,蘋果iPhone11內置的A13芯片,就有著約85億支晶體管。

640.webp (20).jpg

 ?。▓D片來自Stephen Shankland/CNET)

  然而,根據NEC 2004年發布的研究,一個擁有100萬邏輯門的芯片設計通常需要編寫30萬行RTL代碼。因此,完全使用RTL級的邏輯抽象設計當代芯片是不現實的,并將對設計、驗證、集成等各個環節造成巨大的壓力。

  相比之下,使用諸如C、C++等高層語言對系統建模,可以將代碼密度壓縮7到10倍,這極大的緩解了設計復雜度。

  第二,高層語言能促進IP重用的效率。傳統的基于RTL的IP往往需要定義固定的架構和接口標準,在IP重用時需要花費大量時間進行系統互聯和接口驗證。相比之下,高層語言隱藏了這些要求,轉而由HLS工具負責具體實現。

  對于FPGA而言,現代FPGA里有著大量成熟的IP單元,如嵌入式存儲器、算術運算單元、嵌入式處理器,以及最近逐漸興起的AI加速器、片上網絡系統等等。這些FPGA IP有著固定的功能和位置,因此可以被HLS工具充分利用,在提升IP重用效率的同時,簡化綜合算法、提高綜合后電路的性能。

  第三,HLS能幫助軟件和算法工程師參與、甚至主導芯片或FPGA設計。這是由于HLS工具能封裝和隱藏硬件的實現細節,從而使軟件和工程師能專注于上層算法的實現。對于硬件工程師而言,HLS也能幫助他們進行快速的設計迭代,并專注于對性能、面積或功耗敏感的模塊和子系統的優化設計。

  FPGA高層次綜合的前世今生

  伴隨集成電路的復雜性的飛速增長,芯片設計方法學也在不斷演進。早在FPGA出現之前,人們就已經開始嘗試擺脫依靠人工檢視芯片版圖的設計方法,轉而探索使用高層語言對電路邏輯進行行為級描述,并通過自動化工具將電路模型轉化為實際的電路設計。

  在上世紀八九十年代,面向集成電路設計的HLS工具就已經是學術界研究的熱點。這其中比較有代表性的工作,包括卡耐基梅隆大學的CMU-DA(design automation)工具,以及加拿大卡爾頓大學提出的force-directed調度算法等等。

  從現在看來,這些工作為當前的電路綜合算法打下了基礎,并為后來HLS研究提供了很多寶貴的經驗和借鑒。然而,這個階段的HLS工作在成果轉化方面十分失敗,并未有效的轉化成工業實踐。一個最主要的原因,就在于“在錯誤的時間,遇上了對的人”。

  當時正值摩爾定律蓬勃興起的時期,集成電路設計正在經歷史上最大的變革。在后端,自動布局布線已經逐漸成為主流;在前端,RTL綜合也在逐漸興起。傳統電路設計工程師都紛紛開始采用基于RTL的電路建模方法,取代傳統的基于原理圖和版圖的設計,并由此帶來RTL綜合工具的飛速發展。相比之下,這個階段的HLS研究往往使用了特殊的編程語言,如CMU-DA采用的名為“ISPS”的語言,因此很難獲得那些正在和RTL處于“蜜月期”的工程師們的青睞。

  伴隨著一段時間的沉寂,HLS在2000年之后再次開始獲得學術界和工業界的關注,比較有名的工具包括Bluespec和AutoPilot等。主導這一變化的主要原因是,HLS工具開始將C/C++作為主要的目標語言,從而被很多不了解RTL的系統和算法工程師所逐漸接受。同時,HLS工具綜合生成的結果也有了長足進步,在某些應用領域甚至可以和人工手寫RTL近似的性能水平。

  此外,FPGA的逐漸興起也對HLS的發展起到了重要的助推作用。和ASIC設計不同,FPGA有著固定數量的片上邏輯資源。因此HLS工具不用過度糾結于ASIC設計中面積、性能和功耗的絕對優化,而只需要將設計合理的映射到FPGA的固定架構上即可。這樣,HLS就成為了在FPGA上快速實現目標算法的絕佳方式。

  時至今日,高層次綜合技術取得了進一步的發展。大型FPGA公司都推出了各自的HLS工具,如賽靈思的Vivado HLS和英特爾的HLS編譯器、OpenCL SDK等。在學術界也有諸多成果涌現,如多倫多大學的LegUp等等。

  接下來,老石將以AutoPilot這個HLS工具為例,簡單介紹高層次綜合的主要工作原理。

  高層次綜合的主要工作原理

  AutoESL公司的AutoPilot工具,可以說是HLS領域最為成功的學術成果轉化案例。AutoPilot源自于UCLA叢京生教授主導的xPilot項目,從隨后與當時負責該課題的博士生張志如(現任康奈爾大學副教授)一起創辦了AutoESL公司,并在2011年被賽靈思收購,成為了之后的Vivado HLS。

640.webp (19).jpg

  AutoPilot的工作流程框圖如下圖所示。在前端,它使用了基于LLVM的編譯器架構,能夠處理可綜合的ANSI C、C++,以及OSCI SystemC等語言編寫的模型。這個名為llvm-gcc的前端編譯器會將高層語言模型轉換為中間表達式(IR),并進行一系列針對代碼復雜度、冗余、并行性等方面的代碼優化。然后再根據具體的硬件平臺,綜合生成RTL代碼、驗證與仿真環境,以及必須的時序和布局約束等。

640.webp (18).jpg

  AutoPilot的成功之處在于,它的HLS結果在某些應用領域完勝人工優化RTL取得的結果。例如,在一個無線MIMO系統中使用的Sphere解碼器IP中,AutoPilot將4000行C代碼算法成功綜合到Virtex5 FPGA上,運行在225MHz,并取得了比賽靈思Sphere解碼器IP更少的邏輯資源使用量,見下圖。這個結果放在現在也令人十分震撼,它很好的證明了HLS有潛力取得比RTL IP更為出色的性能。

640.webp (17).jpg

  獲取有關AutoPilot的更多技術細節和論文內容,請在老石談芯公眾號后臺回復“HLS”或“高層次綜合”。

  高層次綜合工具常用的優化方法

  傳統的處理器編譯器設計通常只有一個主要目標,那就是盡量提升性能。相比之下,高層次綜合工具需要統籌考慮各種電路設計的主要指標,如性能、功耗、面積等等,同時也要兼顧工具本身的性能,比如占用的資源和運行時間等。因此,在開發HLS工具時,要額外考慮和采用更多的優化方法,而這些優化方法也是當今學術界和工業界在HLS領域重點研究的方向。總的來說,HLS工具的主流優化方法有以下幾種。

  01

  字長分析和優化

  FPGA的一個最主要特點就是可以使用任意字長的數據通路和運算。因此,FPGA的HLS工具不需要拘泥于某種固定長度(如常見的32位或64位)的表達方式,而可以對設計進行全局或局部的字長優化,從而達到性能提升和面積縮減的雙重效果。

  然而,字長分析和優化需要HLS的使用者對待綜合的算法和數據集有深入的了解,這也是限制這種優化方式廣泛使用的主要因素之一。

  02

  循環優化

  循環優化一直是HLS優化方法的研究重點和熱點,因為這是將原本順序執行的高層軟件循環有效映射到并行執行的硬件架構的重點環節。

  循環優化的最終目的,就是盡量將循環里兩次相鄰的操作以最小的時延實現,理想情況下,相鄰的循環操作可以完全并行執行。然而,由于硬件資源的限制,以及更多的是因為循環間存在嵌套和依賴關系,很難將循環完全展開。如何優化各種循環,以實現最優的硬件結構,就成為了學術界和工業界最為關心的要點。

  一個流行的循環優化方法,就是所謂的多面體模型,即Polyhedral Model。多面體模型的應用非常廣泛,在HLS里主要被用來將循環語句以空間多面體表示(見下圖),然后根據邊界約束和依賴關系,通過幾何操作進行語句調度,從而實現循環的變換。

640.webp (16).jpg

  關于多面體模型的細節,本文不再展開,有興趣的讀者可以在公眾號后臺回復“HLS”或“高層次綜合”獲取更多相關信息。需要指出的是,多面體模型在FPGA HLS里已經取得了相當的成功,很多研究均證明多面體模型可以幫助實現性能和面積的優化,同時也能幫助提升FPGA片上內存的使用效率。

  03

  對軟件并行性的支持

  C/C++與RTL相比,一個主要的區別是,前者編寫的程序被設計用來在處理器上順序執行,而后者可以通過直接例化多個運算單元,實現任務的并行處理。隨著處理器對并行性的逐步支持,以及如GPU等非處理器芯片的興起,C/C++開始逐漸引入對并行性的支持。例如,出現了pthreads和OpenMP等多線程并行編程方法,以及OpenCL等針對GPU等異構系統進行并行編程的C語言擴展。

  因此作為HLS工具,勢必要增加對這些軟件并行性的支持。例如,LegUp就整合了度pthreads和OpenMP的支持,從而可以實現任務和數據層面的并行性。

640.webp (15).jpg

  獲取有關LegUp的更多技術細節和論文內容,請在老石談芯公眾號后臺回復“HLS”或“高層次綜合”。

640.webp (14).jpg

  另外,Altera在被英特爾收購之前就已經推出了OpenCL SDK,可以將OpenCL進行高層次綜合,并生成FPGA電路邏輯與CPU代碼兩部分,從而實現FPGA作為硬件加速模塊的快速開發。

640.webp (13).jpg

  高層次綜合的發展前景

  HLS經過十數年的發展,雖然有諸如AutoPilot、OpenCL SDK等FPGA HLS商業化成功的案例出現,但距離其完全替代人工RTL建模還有很長的路要走。

  比如,對于FPGA而言,內存瓶頸一直是制約系統性能的重要因素。除片上的各類BRAM之外,還有各類片外存儲單元,如DDR、QDR,以及近年興起的HBM等等。因此,有效利用片上和片外各類存儲單元一直是HLS的研究熱點。

  此外,HLS的仿真和調試也需要進一步探索。一方面,需要形式化方法證明HLS生成的RTL代碼與高層次代碼等效;另一方面,當需要進行軟硬件分別和協同仿真、調試時,HLS工具要提供相關的測試環境、用例、腳本、調試方法等。當硬件出現問題時,如何向上調試軟件中的漏洞,也需要方法論的支持。

  近年來,越來越多的研究開始專注于特定領域(domain specific)的編程語言和對應的HLS,比如在之前文章中介紹過的P4,就是針對網絡數據包領域的高層編程語言。隨著人工智能的發展,也出現了針對AI應用的Python HLS。通過使用特定領域的HLS,可以進一步對工具進行領域的針對性優化,也能大幅提升系統性能、減少面積和功耗。

  結語

  業界普遍認為,GPU之所以在人工智能時代取得了非凡成功,很大程度上得益于對軟件和算法工程師友好的編程語言和環境。與之相比,FPGA雖然也在不斷擴展自己的應用范圍,并在性能和功耗上相比GPU有著明顯優勢,其編程模型還是以硬件工程師進行RTL開發為主。

  老石認為,FPGA的高層次綜合是業界發展的必然趨勢。相信隨著HLS領域的難題不斷被攻破,使用高層語言對FPGA進行高效編程也必然會實現,而這也將最終成為FPGA更廣泛應用的最后一塊拼圖。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美在线观看日本一区| 欧美精品久久一区| 日韩特黄影片| 亚洲激情校园春色| 亚洲国产毛片完整版| 久久国产天堂福利天堂| 欧美亚洲日本网站| 欧美一区1区三区3区公司| 亚洲女女做受ⅹxx高潮| 亚洲女女女同性video| 亚洲综合色激情五月| 亚洲一区二区三区激情| 亚洲一区二区视频在线| 亚洲在线网站| 亚洲欧美文学| 欧美一区二区三区喷汁尤物| 午夜视频在线观看一区| 午夜精品一区二区三区在线| 亚洲欧美影院| 久久不射中文字幕| 亚洲成色www久久网站| 亚洲高清不卡| 91久久一区二区| 99国产精品| 一区二区激情视频| 亚洲午夜国产一区99re久久 | 国产精品啊v在线| 欧美性生交xxxxx久久久| 国产精品国码视频| 国产私拍一区| 在线观看福利一区| 亚洲精品视频在线看| 在线天堂一区av电影| 亚洲欧美日韩一区二区三区在线观看| 欧美一级播放| 亚洲精品乱码久久久久久蜜桃91| 99亚洲精品| 亚洲综合欧美日韩| 久久偷看各类wc女厕嘘嘘偷窃| 男人的天堂亚洲| 欧美视频一区二区三区| 国产日韩一区二区三区| 亚洲大片在线| 亚洲视频一二三| 欧美在线综合| 亚洲精品国偷自产在线99热| 亚洲影院色无极综合| 久久国产精品免费一区| 免费一区二区三区| 国产精品www网站| 国产一区自拍视频| 亚洲美女精品久久| 欧美亚洲一区| 99国产精品久久久久久久久久| 亚洲欧美日韩区| 蜜臀av国产精品久久久久| 欧美偷拍另类| 怡红院精品视频| 制服丝袜激情欧洲亚洲| 亚洲高清资源| 亚洲欧美日韩在线观看a三区| 老鸭窝毛片一区二区三区| 欧美日韩在线观看一区二区| 国产自产女人91一区在线观看| 日韩西西人体444www| 欧美专区在线观看| 亚洲一区bb| 免费久久久一本精品久久区| 国产精品久久久久久久久婷婷 | 国产精品久久久久一区二区三区共| 国产亚洲精品美女| 日韩午夜av| 久久爱www久久做| 亚洲一级影院| 欧美成人精品一区二区三区| 国产精品亚洲一区二区三区在线| 亚洲国产日韩综合一区| 欧美一级网站| 亚洲性线免费观看视频成熟| 欧美99久久| 国产亚洲一区在线| 亚洲性感激情| 一区二区三区成人| 免费一级欧美片在线观看| 国产午夜一区二区三区| 亚洲色在线视频| 99精品国产在热久久| 麻豆久久婷婷| 国产综合激情| 亚洲综合色网站| 亚洲一区二区三区四区中文| 欧美激情影院| 亚洲高清资源| 亚洲国产99精品国自产| 欧美在线视频全部完| 欧美香蕉大胸在线视频观看| 亚洲人成人99网站| 亚洲国产婷婷香蕉久久久久久| 欧美一区深夜视频| 国产精品成人在线观看| 亚洲人午夜精品免费| 亚洲精品国产精品久久清纯直播| 久久久久九九九| 国产日韩欧美日韩| 亚洲欧美日韩第一区| 亚洲欧美欧美一区二区三区| 欧美三区美女| 亚洲乱码国产乱码精品精可以看| 亚洲电影成人| 美女爽到呻吟久久久久| 狠狠色综合播放一区二区| 欧美一区日韩一区| 久久精品二区三区| 国产日韩欧美一二三区| 午夜一区二区三视频在线观看| 亚洲自拍偷拍一区| 国产精品激情偷乱一区二区∴| 在线亚洲+欧美+日本专区| 亚洲午夜未删减在线观看| 欧美视频精品一区| 中文欧美在线视频| 亚洲欧美中文另类| 国产精品永久| 性欧美xxxx视频在线观看| 欧美在现视频| 国产综合久久久久影院| 亚洲高清自拍| 欧美成人在线影院| 亚洲欧洲一区二区三区久久| 日韩天堂在线观看| 欧美日韩一区二区欧美激情 | 在线中文字幕日韩| 午夜在线电影亚洲一区| 国产日韩欧美制服另类| 久久精品99久久香蕉国产色戒| 久久综合色8888| 亚洲成人直播| 99国产精品久久久久老师| 欧美日韩一级大片网址| 亚洲一区免费看| 久久精品国产999大香线蕉| 狠狠色噜噜狠狠色综合久| 亚洲黄色在线观看| 欧美日韩精品一区视频| 亚洲视屏在线播放| 久久精品夜色噜噜亚洲a∨| 一色屋精品视频在线观看网站| 亚洲精品视频在线看| 欧美亚男人的天堂| 欧美在线观看一区二区| 欧美大尺度在线| 亚洲视频欧美在线| 久久精品中文字幕一区二区三区| 一区二区在线不卡| 这里只有精品电影| 国产日韩欧美三级| 亚洲精品女av网站| 国产精品久久久亚洲一区| 欧美专区在线观看一区| 欧美激情片在线观看| 亚洲视频axxx| 久久字幕精品一区| 亚洲免费成人av电影| 欧美一区二区视频在线观看2020 | 国产精品a久久久久| 欧美专区在线观看| 欧美精品久久久久久久久久| 亚洲一区欧美激情| 欧美暴力喷水在线| 正在播放亚洲| 欧美va天堂在线| 亚洲视频在线一区| 麻豆精品精华液| 亚洲午夜精品福利| 欧美大片网址| 亚洲欧美日本国产有色| 欧美福利视频在线观看| 亚洲在线观看视频网站| 欧美高清在线视频| 羞羞答答国产精品www一本| 欧美精品一区二区三区蜜臀| 午夜视频在线观看一区二区三区| 欧美国产日韩在线| 亚洲欧美在线一区| 欧美国产先锋| 久久成人免费视频| 国产精品第一页第二页第三页| 91久久久一线二线三线品牌| 国产精品久久久久天堂| 日韩视频在线观看国产| 国产中文一区二区三区| 亚洲宅男天堂在线观看无病毒| 在线免费不卡视频| 久久激情五月婷婷| 一本色道久久综合亚洲91| 麻豆精品视频在线| 亚洲欧美精品在线| 国产精品va在线播放| 亚洲蜜桃精久久久久久久| 国产无遮挡一区二区三区毛片日本|