在今年的 FPGA 國際研討會(ISFPGA’20)上,英特爾發(fā)表了一篇名為《Architectural Enhancements in Intel Agilex FPGAs》的論文,它在技術(shù)層面詳細(xì)介紹了英特爾的新旗艦 FPGA - Agilex 系列的若干重大的架構(gòu)創(chuàng)新。
相比 Altera 時代的頂級 FPGA 系列 Stratix、特別是 2016 年推出的 Stratix10 FPGA,Agilex 在 FPGA 架構(gòu)層面做出了諸多根本性的改變??偨Y(jié)起來主要有以下六個方面:
全新的芯片布局
ALM 微架構(gòu)的優(yōu)化設(shè)計
重新設(shè)計的布線架構(gòu)
新一代 HyperFlex 寄存器結(jié)構(gòu)
多樣的時序優(yōu)化方法
更加靈活的 DSP 微架構(gòu)
有了這些新型架構(gòu)的加持,Agilex 相比 Stratix10 FPGA 取得了超過 40%的性能提升。同時,它在設(shè)計的靈活性和穩(wěn)定性等方面也取得了可觀的提升。在接下來的文章中,老石將分別對這幾點(diǎn)架構(gòu)創(chuàng)新做深入解析。
Agilex FPGA 簡介
在之前的文章《英特爾 10 納米 Agilex FPGA 核心技術(shù)分析》中,老石曾對 Agilex FPGA 在系統(tǒng)層面的重要創(chuàng)新做過深度梳理。與進(jìn)化多年的 Stratix、Arria、Cyclone、Max 等 FPGA 產(chǎn)品系列相比,Agiliex 是英特爾收購 Altera 后推出的第一個全新的高端 FPGA 系列。正因如此,Agilex 也被英特爾寄予了很高的期望。
Agilex 這個名稱源于 Agile(敏捷)和 Flexible(靈活)的合二為一,這兩個特點(diǎn)也是現(xiàn)代 FPGA 技術(shù)最為核心的要素。作為新一代旗艦 FPGA,Agilex 上自然也裝備了很多英特爾專屬的“黑科技”。在半導(dǎo)體工藝上,Agilex 是首個使用英特爾 10 納米量產(chǎn)工藝的 FPGA 產(chǎn)品,它基于第三代 FinFET 晶體管技術(shù)進(jìn)行制造,并在物理實現(xiàn)時對 FPGA 架構(gòu)進(jìn)行了針對性優(yōu)化。
在系統(tǒng)層面,Agilex 引入了對 UPI、CXL 以及 PCIe Gen4/5 的硬核支持。CXL 全稱是 Compute Express Link,它是英特爾發(fā)起的一個緩存一致性標(biāo)準(zhǔn)。CXL 的主要目的在于明確定義硬件加速器與處理器之間的互聯(lián)標(biāo)準(zhǔn)。CXL 在 2019 年 3 月提出,它的主要創(chuàng)始成員見下圖。從中可以看出,CXL 的主要發(fā)起者中除了英特爾之外,還有有四個互聯(lián)網(wǎng)公司、兩個服務(wù)器設(shè)備制造商,以及兩個網(wǎng)絡(luò)設(shè)備制造商。這也清晰的呈現(xiàn)出 CXL 的目標(biāo)應(yīng)用領(lǐng)域:網(wǎng)絡(luò)數(shù)據(jù)中心、通信基礎(chǔ)設(shè)施、云計算與云服務(wù)等等。而這些領(lǐng)域也正是當(dāng)前 FPGA 大展身手的平臺。關(guān)于 CXL 的更多介紹,可以參考之前的文章。
接下來,老石就對 Agilex FPGA 在架構(gòu)方面的主要升級做詳細(xì)介紹。
全新的芯片布局
相比 Stratix10 FPGA,Agilex 在芯片布局和微架構(gòu)設(shè)計上做出了多個重要改變。Agilex 的芯片布局如下圖所示。與現(xiàn)有的英特爾 FPGA 相似,Agilex 也使用了 EMIB(嵌入式多管芯互聯(lián)橋接)技術(shù),用來提供多個異構(gòu)硅片之間的高速互聯(lián),特別是可編程邏輯部分與不同速度的收發(fā)器 Tile 之間的連接。在下圖中可以看到,收發(fā)器固定位于芯片的東西兩側(cè),而其他的非可編程邏輯結(jié)構(gòu),諸如通用 IO 接口、存儲器接口、嵌入式 SRAM、4 核 ARM CPU 等等,都將固定位于芯片的南北兩側(cè)。
Agilex 在芯片布局上的一個重大變化,就是將原本位于芯片中間的很多通用 I/O、存儲器 I/O、硬核處理器等部分移到了芯片兩端。
在英特爾之前的幾代 FPGA 中,例如 Arria10 和 Stratix10 FPGA 中,可編程邏輯陣列、I/O 單元、存儲器、DSP 等邏輯結(jié)構(gòu)都是按列間隔排列,如下圖所示。事實上,這也是包括賽靈思在內(nèi)的其他 FPGA 廠商所常用的芯片布局方法。
Arria10 FPGA 的芯片布局
這種間隔排列的結(jié)構(gòu)最大的優(yōu)點(diǎn)在于,它能簡化 FPGA 設(shè)計過程中的布局規(guī)劃,特別是與 I/O 相關(guān)的布局。這是因為每個邏輯單元與 I/O 的距離近似,所以在布局和放置時有著比較高的靈活性。
然而,這種結(jié)構(gòu)最突出的缺點(diǎn)是,它相當(dāng)于人為的將可編程邏輯陣列分成了很多區(qū)域,這就極大的增加了跨區(qū)域的布線延時。同時,對于高速且大型的設(shè)計而言,這種結(jié)構(gòu)很有可能造成局部的布局擁塞。相信有經(jīng)驗的 FPGA 工程師在很多實際項目中都遇到過這樣的問題,那就是在一個設(shè)計中,可能有很多區(qū)域的設(shè)計擁堵嚴(yán)重,而其他區(qū)域卻有著大量可用資源。這一問題的根源之一就是由于這種 FPGA 結(jié)構(gòu)所致。
在 Agilex 里,這些 I/O 被移出了可編程邏輯陣列,并挪到了芯片的上下兩側(cè),從而形成了一個更加規(guī)整的可編程陣列布局,如下圖所示。由于消除了 I/O 單元對邏輯陣列帶來的區(qū)隔,系統(tǒng)性能會得到提升,也會極大簡化時序計算,并提升布局與放置的靈活性。
ALM 微架構(gòu)的設(shè)計優(yōu)化
在微架構(gòu)方面,Agilex 對其中的 ALM(Adaptive Logic Module)進(jìn)行了設(shè)計優(yōu)化,以進(jìn)一步降低其傳輸延時。
ALM 是 FPGA 的基本可編程單元,Stratix10 的 ALM 結(jié)構(gòu)如下圖所示。它主要包含一個 6 輸入 LUT,一個加法器進(jìn)位鏈,以及 4 個輸出寄存器。多個 ALM 可以組成更大的可編程陣列,名為 LAB(Logic Array Block)。
Stratix 10 FPGA 的 ALM 結(jié)構(gòu)
和 Stratix10 相比,Agilex 對 ALM 做了不少架構(gòu)升級,如下圖所示。其中,增加了兩個 LUT 的快速輸出端口,使得 LUT 的輸出可以直連 HyperFlex 寄存器,而無需通過 ALM 內(nèi)部的寄存器中轉(zhuǎn)。這顯然是針對利用 HyperFlex 對關(guān)鍵路徑進(jìn)行 retiming 的應(yīng)用場景。同時,ALM 內(nèi)部的寄存器靈活性得到了極大增強(qiáng),可以看到在 Agilex 的 ALM 里,每個寄存器的輸入都增加了一個 4 輸入 MUX,同時寄存器可以通過兩個獨(dú)立的時鐘進(jìn)行控制。
Agilex FPGA 的 ALM 結(jié)構(gòu)
除了 ALM 之外,Agilex 還特別增加了片上內(nèi)存 MLAB 的邏輯密度。與 Stratix10 相比,單位面積內(nèi) Agilex 有著雙倍的 MLAB 密度,而且 50%的 LAB 可以配置成存儲器模式。這個優(yōu)化很明顯是針對高帶寬需求的應(yīng)用領(lǐng)域,如 AI 相關(guān)的計算加速等。?
重新設(shè)計的布線架構(gòu)
Agilex 對 FPGA 的布線單元進(jìn)行了重新設(shè)計。在下圖中可以看到,每個交換節(jié)點(diǎn)都只連接一個邏輯功能單元(可以是 LAB、RAM、DSP 等),但可以連接多個其他的布線單元或者其他的交換節(jié)點(diǎn)。
相比之下,在之前的 FPGA 架構(gòu)中,通常情況下一個交換節(jié)點(diǎn)會和左右兩側(cè)的兩個邏輯功能單元進(jìn)行連接。Agilex 這樣的簡化設(shè)計使得它的整體布線架構(gòu)更加簡潔,也在很大程度上減少了交換節(jié)點(diǎn) MUX 的輸入,從而在保證布線靈活性的基礎(chǔ)上,有效的降低容抗、并提升性能。事實上,在之前的研究中就表明,F(xiàn)PGA 的布線節(jié)點(diǎn)并不需要保持全連接,這在之前的文章中有過詳細(xì)解析。而 Agilex 則更進(jìn)一步,直接做成了 1 對 1 連接,相信這也對 FPGA 設(shè)計工具和布局布線算法提出了更高的要求。
此外,Agilex 對延時的同一性做了針對性的優(yōu)化。在之前的 FPGA 中,由于存在不可避免的工藝和時序變化(variation),會特意對芯片上的各種硬件資源做差異化處理。也就是說,同樣的硬件資源可能有著不同的延時分布。從理論上講,F(xiàn)PGA 設(shè)計工具會避免將慢速資源分配到關(guān)鍵路徑上。但在實際應(yīng)用中,這并非總是可行的。例如,在高速設(shè)計或深度流水線設(shè)計中,可能存在多條 near critical path,這就給資源分配造成很大負(fù)擔(dān)和限制。
在 Agilex 中,使用了基本同化的硬件資源,以及對應(yīng)的布線方法,從而使得各個硬件資源的延時趨于近似。從下圖中可以清楚的看到,相比 Stratix10 FPGA,Agilex 的延時分布非常平坦。這樣就簡化了布局布線工具對資源分配的過程,從而提升了開發(fā)效率和系統(tǒng)性能。
新一代 HyperFlex 寄存器結(jié)構(gòu)
Stratix10 FPGA 中首次引入了 HyperFlex 架構(gòu)。它的主要思想就是在 FPGA 的布線網(wǎng)絡(luò)上,加入很多名為 Hyper-Register 的小型寄存器,這樣可以把原本比較長的時序路徑分割成多個較短的路徑,從而提升 FPGA 的時鐘頻率。
但是,理想很豐滿,現(xiàn)實很骨感。HyperFlex 這樣的設(shè)計有著很好的初衷,但在實際應(yīng)用中還是存在著很多的問題。比如,很多情況下并不會用到所有的 hyper-register,這就需要每個寄存器都配備一個 2:1 選擇器用來選通。然而這樣的架構(gòu)反而會帶來較大的額外延時。此外,每個 Hyper-Register 并非由邊沿驅(qū)動的“寄存器”(flip-flop),而是由脈沖驅(qū)動的“鎖存器”(latch),這就使得它的時序特性較差,并且非常容易受工藝變化(process variation)的影響。
值得注意的是,在賽靈思推出的 ACAP 中,也采用了類似的設(shè)計理念。ACAP 引入了名為“Imux 寄存器”的新結(jié)構(gòu),并且對上述問題進(jìn)行了針對性的改進(jìn)。有關(guān) ACAP 的詳細(xì)技術(shù)解讀,請參考這篇文章《賽靈思下一代計算平臺 ACAP 技術(shù)細(xì)節(jié)全揭秘》。
顯然,英特爾也意識到了這些問題,并在 Agilex FPGA 中采用了“第二代”HyperFlex 架構(gòu),并對上面的問題進(jìn)行了大幅改進(jìn)。新一代 Hyper-Register 的結(jié)構(gòu)如下圖所示,可以看到它把鎖存器替換成了寄存器,并對驅(qū)動節(jié)點(diǎn)進(jìn)行了重新設(shè)計。同時,Agilex 在布線網(wǎng)絡(luò)中移除了近三分之二的 Hyper-Register,這無論對于面積、功耗、或是設(shè)計工具的優(yōu)化來說,都是極為有利的。
多樣的時序優(yōu)化方法
Agilex 主要采用了三種時序優(yōu)化方法:retiming、clock skewing 和 time borrowing。例如,retiming 可以在不改變邏輯功能的前提下,重新分配寄存器在延時路徑中的位置,從而實現(xiàn)“取長補(bǔ)短”,降低整體的路徑延時。這實際上與所謂的“木桶理論”類似,而 retiming 就是將其他更長的木板拆開,并將短板補(bǔ)齊,如下圖所示。由于篇幅所限,有關(guān) clock skewing 和 timing borrowing 的具體內(nèi)容在本文不再詳述,老石之后會在知識星球和微博里進(jìn)一步解讀。
更加靈活的 DSP 微架構(gòu)
之前的文章曾經(jīng)多次介紹過,F(xiàn)PGA 在人工智能應(yīng)用中的最大優(yōu)勢之一就是可以采用可變精度的字長表示和數(shù)學(xué)運(yùn)算,從而帶來巨大的性能提升。相比 Stratix10 FPGA,Agilex 的 DSP 單元增加了對 FP16、FP19、BFLOAT16 的支持,同時也保留了對 FP32、INT9 等多種數(shù)據(jù)表達(dá)方式的支持,這極大提升了 DSP 的配置靈活性,使其更加適用于 AI 相關(guān)的應(yīng)用。
Agilex 的 DSP 邏輯架構(gòu)如下圖所示,它可以配置成多種結(jié)構(gòu),同時也可以在水平方向上進(jìn)行擴(kuò)展,從而支持向量和矩陣操作。
結(jié)語
下圖展示了 Agilex 的工程樣片與 Stratix10 的基準(zhǔn)測試比較結(jié)果??梢钥吹剑珹gilex 可以取得平均 41%的性能提升。在這些基準(zhǔn)測試的設(shè)計中,最高時鐘頻率的平均值是 566MHz,其中最小 284MHz,最高的時鐘頻率達(dá)到了 951MHz!相比于傳統(tǒng) FPGA 設(shè)計的 300MHz 左右的時鐘頻率,這組數(shù)據(jù)也標(biāo)志著 FPGA 的時鐘頻率提升到了一個全新的高度。同時應(yīng)該注意到,盡管 Agilex 使用了 10 納米工藝,但相比 Stratix10 而言,Agilex 使用了更低的電壓以降低功耗。在這個背景下,這些頻率的提升大部分都?xì)w功于 Agilex 的架構(gòu)創(chuàng)新。
這次發(fā)表的 Agilex 論文很好的介紹了英特爾新旗艦 FPGA 的重要架構(gòu)創(chuàng)新,讓人對 Agilex 量產(chǎn)并交付后的表現(xiàn)更加的期待。然而,這篇論文并沒有過多介紹 Quartus 工具為了這些架構(gòu)創(chuàng)新而做的改進(jìn)。在 Agilex 發(fā)布之初,英特爾就宣布它將成為首款支持 oneAPI 的 FPGA 產(chǎn)品。那么,Agilex 實際開發(fā)的靈活性、編譯效率、實際性能、以及如何利用 oneAPI 對 FPGA 進(jìn)行編程和開發(fā),也都值得我們繼續(xù)關(guān)注。
(注:本文僅代表作者個人觀點(diǎn),與任職單位無關(guān)。)