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