高端FPGA揭秘之設計工具起源

來源:內容由「網絡交換FPGA」編譯自「eejournal」,作者:Kevin Morris,謝謝。

在本系列的第1部分中,我們研究了Xilinx,Intel和Achronix的新型高端FPGA系列,並討論了它們的底層半導體工藝,可編程邏輯LUT結構的類型和數量,DSP /算術資源的類型和數量以及它們適用於AI推理加速任務,聲稱的TOPS / FLOPS性能功能以及片上互連,例如FPGA路由資源和片上網絡(NOC)。在第二部分,我們研究了內存架構,封裝內集成架構和高速串行IO功能。從這些比較中可以明顯看出,這是有史以來開發的最複雜,最複雜的芯片,這場戰鬥涉及很多賭注,而且每個供應商都帶來了一些獨特的價值,而沒有明顯的贏家或輸家。

在本期中,我們將探討最重要的因素-設計工具流程,使工程團隊可以利用這些設備的強大功能。事實證明,可編程邏輯的靈活性和強大功能既是其最大的資產,也是其最大的局限性。FPGA不是處理器,即使它們最吸引人的用途之一是加速計算。具有純軟件背景的工程師通常無法理解使用這些器件所涉及的複雜性,以及獲得足夠的熟練程度以在能力範圍內使用FPGA所需的漫長學習曲線。與傳統的馮·諾依曼處理器不同,FPGA不是軟件可編程的,至少不是傳統意義上的。

要充分利用FPGA的優勢,就需要設計數字邏輯,儘管有數十年的發展,但我們還沒有達到在設計過程中至少沒有一定程度的硬件專業知識就可以最佳地使用FPGA的地步。但是,那句話。首先,經過多年處理龐大(且不斷增加)的FPGA設計複雜性之後,FPGA供應商提出了一些緩解該問題的技巧。最簡單,最重要的是使用預先設計的單功能加速器和應用程序。對於某些常見的應用,FPGA公司已經為您完成了設計–專家們對邏輯進行了調整和調整,以實現最佳性能,功耗和利用率。如果您碰巧正在做這些應用程序之一,那麼您甚至可能根本不知道自己正在使用FPGA。它只是靜靜地坐在後台,使您的系統中的一切都變得更好。在以後的文章中,我們將討論這些設備的市場營銷和分銷時,將對此進行更詳細的介紹。

減少所需設計專業知識的第二種方法是提高設計抽象水平。通過創建允許在更高級別進行設計的工具,FPGA供應商減少了在寄存器傳輸級別進行詳細設計的需求,從而大大簡化了流程。我們將在本文後面詳細討論。

但是,不管實際情況如何,當今的FPGA公司都主要針對三個不同的受眾或專業領域。具有HDL技能的數字硬件工程師,軟件工程師和(最近)AI / ML工程師。這些用戶組中的每一個都將從FPGA技術的應用中受益匪淺,但是為每個用戶組提供他們利用FPGA所需的工具是一項艱巨的任務。

為了展現FPGA工具和IP的廣闊前景,我們應該從核心開始-唯一定義FPGA的部分,即查找表(LUT)結構。在現代,FPGA的發展就像瑞士軍刀或智能手機一樣。SAK的「刀」部分僅占設備功能的一小部分,但我們仍稱其為「刀」。智能手機的「電話」功能在區分設備方面正變得越來越小,但我們仍將其稱為「電話」。而且,FPGA中的LUT架構現在僅是這些驚人器件所提供價值的一小部分,但是LUT架構是唯一賦予FPGA強大功能的一件事。

賽靈思指出,他們的「 ACAP」設備根本不需要配置或甚至不使用LUT結構即可引導和使用其Versal設備。這是宣稱Versal器件不是FPGA而是一個新類別的基礎。但是,所有這些設備的功能和任務都有足夠的共性來比較它們,並且Versal不太可能在完全不使用FPGA架構的許多應用中找到家。

一切始於HDL設計

FPGA域中最低級別的設計工具是布局布線。此過程獲取互連LUT(以及這些LUT的配置)的網表,以(希望)接近最佳的方式將其排列在芯片上,並通過可編程互連結構進行所需的連接。布局布線是FPGA實現的核心。隨着設備變得越來越大,兩個趨勢影響了布局和布線過程。首先,專用於互連(相對於邏輯)的芯片部分必須增加,以便成功進行大型設計。當然,FPGA公司不喜歡為路由分配大量的硅,因為這意味着其設備上的邏輯更少。您永遠不會看到供應商吹噓他們提供的大量路由資源,但是LUT的數量通常處於中心位置。因此,最大化LUT和最小化布線是最重要的問題。

為了最大程度地減少路由資源消耗的硅空間,FPGA公司在芯片設計期間進行了詳盡的介紹,他們在芯片開發的眾多迭代中放置和路由了無數的實際設計,以找到最平衡的平衡點。用戶設計將能夠利用芯片上大量邏輯資源,而不會在布線過程中失敗。如果他們分配的路由資源太少,則芯片上的大量邏輯將無法使用。過去曾發生過這種情況,因為FPGA公司發佈的芯片通常只能以60%左右的利用率進行布線,從而使這些芯片遠遠低於其在現實世界中宣傳的容量。相反,如果為路由分配的硅過多,

顯然,布局和布線算法執行得越好,完成大多數設計所需的布線資源就越少。因此,布局和路線的性能一直影響到設備本身的設計。

影響布局布線的第二個趨勢是邏輯路徑延遲的主要因素已從「邏輯」延遲變為「互連」延遲。這對設計流程產生了深遠的影響,因為邏輯綜合過程不再能夠獨立於與路由/互連相關的延遲進行時序分析。這意味着必須將邏輯綜合和布局布線緊密地結合在一起-位置信息確定路由延遲,並且將這些路由延遲反饋回來,以便通過綜合在構建邏輯路徑時做出不同的決策。在當今世界中,邏輯綜合以及布局和路線通常是通過一個(通常是迭代的)步驟捆綁在一起的,

這三家公司中的每家公司都提供了強大的綜合和布局布線工具集,這些工具集是傳統FPGA用戶的基礎-傳統的FPGA用戶是上述「具有HDL技能的數字硬件工程師」。

Xilinx在2012年徹底改寫了當時老化的ISE工具套件,從而創建了Vivado。七年後,Vivado已經很好地發展成為一個相對健壯,可靠的平台,其架構通常能夠很好地跟上FPGA業務的快速升級步伐。邏輯綜合和布局布線算法是最先進的,Vivado在當今的龐大設計中在編譯時間和內存佔用方面表現出色。Vivado可通過TCL進行自定義,從而提供大量控制和可自定義性。Vivado還包含一個模擬器和一個IP集成工具。

賽靈思在其工具和FPGA架構之間進行了廣泛的迭代,以在路由與邏輯資源方面找到最有利的位置,從而使他們的設備能夠利用其工具實現一致的高利用率,並在時序收斂方面取得了可觀的成果。在這三個供應商中,賽靈思在布局和時序收斂方面是最「老派」,而英特爾和Achronix在其設備架構中都採取了一些新穎的架構步驟,以幫助實現當今大型複雜設計的時序收斂。

但是,賽靈思在FPGA領域也領導了高級綜合(HLS)領域,而且Vivado HLS是(迄今為止,我們相信)業界最常用的HLS工具,支持C / C ++為硬件設計人員提供門控流程尋找超出寄存器傳輸級別(RTL)所提供的生產力。賽靈思HLS工具的高採用率還有助於解決時序收斂問題,因為從HLS工具自動生成的RTL往往比手寫RTL表現得更好。

英特爾的Quartus Prime Pro是Altera Quartus設計工具套件的演進,在過去的二十年中,它們一直是FPGA設計的旗艦。正如我們前面提到的,英特爾在幾代之前使用所謂的「 HyperFlex」架構更新了其芯片–本質上覆蓋了帶有小型寄存器的設備,這些寄存器有助於通過這些工具對關鍵邏輯路徑進行即時重新定時。這有助於簡化複雜設計上的時序收斂,這可能會犧牲一些整體性能。

最近,英特爾在Quartus中添加了一種稱為「分形綜合」的可選策略,用於諸如算術運算量較大或乘數較小的機器學習算法之類的設計。該公司表示,微軟在其「 Brainwave」項目(為Bing搜索提供支持)中使用了Fractal Synthesis,以將Stratix 10器件的高性能填充到92%。最新的另一項新增功能是Design Assistant設計規則檢查(DRC),可幫助查找約束條件和放置的網表中的問題,旨在減少關閉時序所需的迭代。

英特爾比Xilinx晚了參加HLS大會,但現在Quartus套件中包括了英特爾HLS編譯器。HLS編譯器將未定時的C ++作為輸入,並生成針對目標FPGA優化的RTL代碼。儘管英特爾的HLS工具在現場的使用率比Xilinx的Vivado HLS少得多,但隨着HLS編譯器為英特爾One API軟件開發平台的「 FPGA」分支提供動力,我們預計將看到相當多的採用。看來,英特爾的HLS實施可能比Xilinx的實施更偏向軟件工程師(後者顯然是硬件設計師的強大工具)。

Achronix的ACE工具套件依賴於第三方工具進行仿真和綜合。ACE套件中包含OEM版本的Synopsys Synplify Pro,它包括高級布局規劃和關鍵路徑分析功能,以幫助關閉時序。但是,藉助Speedster7t,Achronix通過其新穎的片上網絡(NoC)實現採用了獨特的時序收斂方法。NoC使設計師能夠在不使用邏輯資源的情況下,以高達2GHz的速度在FPGA架構中的任何地方傳輸數據。這也意味着,與必須專門使用LUT在設備內路由信號的傳統FPGA相比,在放置和路由用戶設計時,將消耗更少的寶貴FPGA資源。」

由於加速工作負載通常涉及用於多位路徑的大量「總線」路由,因此Achronix還引入了基於位元組(或半位元組)的路由,以進一步改善時序收斂性。如果移動了數據字,並且不需要位交換,則可以使用這些額外的路由資源。

對於他們的HLS入門,Achronix與Mentor合作,後者的Catapult-C可能是市場上最成熟的ASIC HLS工具。Catapult-C具有工業實力,而且價格適中。Catapult-C將允許完整的C / C ++流向Speedster7t FPGA定位-通常的警告是HLS仍然是為硬件工程師設計的工具,用於提高生產率和結果質量,而不是使軟件工程師設計硬件的工具。Catapult-C當然應該在5G應用中大放異彩,並在優化加速工作量(如AI推理)方面發揮作用。

軟件開發人員的切入點

在過去的二十年中(自Altera推出命運不佳的「 Excalibur」系列以來),許多高端FPGA除了其LUT結構之外,還包含傳統的馮·諾依曼處理器。這些處理器的範圍從在LUT架構本身中實現的「軟」微控制器到具有外圍設備的複雜「硬」多核64位處理子系統。這些FPGA符合片上系統(SoC)的標準,並且隨着這種發展,設計問題變得更加複雜,因為我們現在需要工具來支持軟件工程師來開發在當今FPGA嵌入式處理子系統中運行的應用程序。

多年來,這意味着FPGA SoC項目需要團隊中的硬件和軟件專家。但是,由於FPGA公司致力於打入其芯片新市場,因此他們努力減少了對HDL /硬件專業知識的依賴。如今,他們正在努力提供軟件開發工具套件,這些套件不僅使軟件工程師能夠開發在嵌入式處理子系統上運行的代碼,而且還使這些軟件工程師能夠創建利用FPGA架構來加速其應用程序的加速器。

正如我們最近所寫,Xilinx剛剛發佈了他們的Vitis統一平台,該平台旨在使軟件工程師(以及使用「 Vitis AI」入口點的AI開發人員)能夠加速使用Xilinx設備的應用程序。Xilinx說,Vitis「為加速的主機CPU,嵌入式CPU和混合(主機+嵌入式)應用程序提供了統一的編程模型。除了核心開發工具外,Vitis還提供了一套豐富的硬件加速庫,這些庫針對Xilinx硬件平台進行了預優化。」

對於「承諾開放源代碼和社區參與」的Xilinx(歷史上因食用自己的生態系統而享有盛譽的人),Vitis可能代表了其行為和理念的轉變。Xilinx表示,他們所有的硬件加速庫都在GitHub上發佈,其運行時XRT也已開源。當然,所有這些開源仍然是最終以Xilinx硬件為目標的軟件,將其修改為目標競爭對手的設備可能是一項相當大的任務,但是–結合免費提供Vitis的事實,朝着公司正確的方向邁出了巨大的一步,並為非傳統用戶(如CUDA開發人員)鋪了紅地毯。

英特爾的One API的設計目標與Xilinx的Vitis相似,但目標卻可以理解。由於英特爾的計算產品組合的廣度–重鐵Xeon處理器,GPU,FPGA,諸如Nervana和Movidius之類的專用AI引擎等–英特爾正在為實現跨軟件開發的單入口點制定宏偉的目標英特爾所謂的「 SVMS架構」(標量,向量,矩陣,空間,部署在CPU,GPU,NNP和FPGA中)的範圍。英特爾表示,One API「有望通過將數據的DMA從主機傳輸到FPGA並返回到FPGA來消除FPGA上硬件加速器當前存在的進入障礙,這在Java中非常手動,繁瑣且容易出錯。基於HDL的設計流程。

英特爾提醒我們注意:「 FPGA開發人員將需要修改其代碼,以實現FPGA上的最佳性能,或者使用針對空間FPGA架構進行了預優化的庫。軟件開發人員必須接受FPGA方面的培訓,以實現FPGA特殊架構加速的全部性能優勢以及跨架構的可移植性。」

謝謝Intel-wan。我們都渴望接受FPGA方面的培訓。

一個API將使用一種稱為「數據並行C ++」(DPC ++)的新編程語言以及API調用。一種API將包含針對各種工作負載域的API庫,還將包含針對DPC ++定製的增強型分析和調試工具。

使英特爾產品脫穎而出的一項功能是它們在XEON可擴展處理器與FPGA加速器之間的優化的低延遲和緩存一致性UPI(以及將來的CXL)接口。該公司表示,此功能「使虛擬化,AI和大內存數據庫等應用程序能夠比依靠傳統的PCIe連接性更高的性能。」

在使軟件開發人員直接利用FPGA加速方面,Achronix與更大,更多樣化的競爭對手相比處於劣勢。該公司正在通過各種合作夥伴關係開發生態系統,但是他們可能主要針對具有所需硬件專業知識的設計團隊,以有效地使用他們的FPGA,以及Achronix生態系統已經具有可靠的預優化解決方案和參考設計的應用程序。

隨着AI接管世界……

最近,人工智能已經成為FPGA的新「殺手級應用」。正如我們在前幾期中討論的那樣,FPGA具有出色的能力來動態創建針對特定AI推理應用程序的需求量身定製的定製處理引擎。但是,這也創造了一種新的用戶– AI / ML工程師。這第三位目標受眾帶來了自己對工具流程的一組要求,以利用FPGA的功能。這些人需要對TensorFlow,Caffe和其他行業的前端工具的支持,並提供將其轉化為針對其問題的合理優化的基於FPGA的解決方案的途徑。

作為其Vitis統一軟件平台聲明的一部分,賽靈思還發佈了Vitis AI,這是一個針對(可能會猜到)人工智能和數據科學家的插件。它允許AI模型直接從TensorFlow等標準框架進行編譯。Vitis AI實例化了Xilinx在FPGA架構或Versal設備的AI引擎中稱為域特定處理單元(DPU)的功能。這種方法的一個關鍵(且引人注目的)優勢是Vitis AI將AI模型編譯為DPU的操作代碼,因此,無需新的位置和路線,就可以在幾分鐘甚至幾秒鐘內下載並運行模型。與大多數將FPGA架構配置作為計劃一部分的方法相比,這使得迭代時間和實際工作負載調配變得更加簡單和快捷。

英特爾通過OpenVINO工具包的英特爾發行版向AI開發人員的One API採用了類似的方法(實際上,順序相反)。英特爾的版本為AI開發人員提供了該公司所說的「單個工具包,可加快他們在包括英特爾FPGA在內的多個硬件平台上部署解決方案的速度。英特爾表示,OpnVINO可以使AI開發人員和數據科學家從TensorFlow和Caffe等框架直接進入硬件,而無需任何FPGA知識。

英特爾的解決方案支持各種流行的神經網絡,還允許創建自定義網絡。它們還包括供FPGA開發人員定製的API,以使其應用程序的引擎變型。該公司表示,通過為應用程序的特定數據流和構建塊自定義構建AI引擎,可以實現數量級的性能提升。

定製流程還包括英特爾所謂的AI +,用於除AI外還需要其他功能的應用程序。這使應用程序開發人員可以利用FPGA架構的靈活性來啟用(例如)AI +預處理,從而使CPU不必執行業務流程,並減少了總體系統延遲。

Achronix為諸如TensorFlow之類的框架提供了低級的機器學習庫功能,並支持了更高級別的框架。它們既支持「覆蓋體系結構」,又支持將數據圖從高級框架直接映射到FPGA邏輯。該公司表示,「疊加層」是「針對一個或多個ML網絡進行了優化的專用應用處理器,其硬件以可重編程邏輯實例化,而特定網絡則以在該硬件實例上運行的微代碼實現。」 這意味着可以通過更改軟件或更改硬件和軟件來修改覆蓋實現的功能,而直接映射的數據圖則需要對FPGA結構進行完全或部分重新配置。

如您所見,在這些複雜的可編程邏輯設備上投入的開發工具和技術的範圍和規模是巨大的,我們在這裡幾乎沒有涉及任何內容。有趣的是,將看到什麼功能將成為差異化產品,因為我們相信,基於開發流程贏得的硬件套接字將比基於硬件本身的能力贏得更多。