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