自從幾十年前首次推出 FPGA 以來,每種新架構(gòu)都繼續(xù)在采用按位(bit-wise)的布線結(jié)構(gòu)。雖然這種方法一直是成功的,但是隨著高速通信標(biāo)準(zhǔn)的興起,總是要求不斷增加片上總線位寬,以支持這些新的數(shù)據(jù)速率。這種限制的一個后果是,設(shè)計人員經(jīng)?;ㄙM大量的開發(fā)時間來嘗試實現(xiàn)時序收斂,犧牲性能來為他們的設(shè)計布局布線。
傳統(tǒng)的 FPGA 布線基于整個 FPGA 中水平和垂直方向上運行的多個獨立分段互連線(segment),在水平和垂直布線的交叉點處帶有開關(guān)盒(switch box)以實現(xiàn)通路的連接。通過這些獨立段和開關(guān)盒可以在 FPGA 上構(gòu)建從任何源到任何目的地的通路。FPGA 布線的這種統(tǒng)一結(jié)構(gòu)為實現(xiàn)任何邏輯功能提供了極大的靈活性,可用于 FPGA 邏輯陣列內(nèi)的任何數(shù)據(jù)路徑位寬。
盡管在 FPGA 中的按位來布線非常靈活,但其缺點是每個段都會給任何給定的信號通路增加延遲。需要在 FPGA 中進(jìn)行長距離傳輸?shù)男盘枙?dǎo)致分段之間的連接延遲,從而降低了功能的性能。按位布線的另一個挑戰(zhàn)是擁塞,它要求信號路徑繞過擁塞,這會導(dǎo)致更多的延遲,并造成性能的進(jìn)一步降低。
Achronix 將此挑戰(zhàn)視為一個開發(fā)全新架構(gòu)的機(jī)會,以消除傳統(tǒng) FPGA 的設(shè)計挑戰(zhàn)并提高系統(tǒng)性能。Achronix 的解決方案是在傳統(tǒng)分段式 FPGA 布線結(jié)構(gòu)之上,再為其全新的 Speedster7t FPGA 系列器件創(chuàng)建一個革命性的二維(2D)高速片上網(wǎng)絡(luò)(NoC)。Speedster7t NoC 連接到所有片上高速接口:400G 以太網(wǎng)、PCIe Gen5、GDDR6 和 DDR4 / 5 的多個端口。
NoC 的內(nèi)部由一組行和列組成,它們在整個 FPGA 邏輯陣列中將網(wǎng)絡(luò)數(shù)據(jù)流量從水平和垂直方向上進(jìn)行分發(fā)。主 NoC 接入(NAP)點和從 NoC 接入點位于 NoC 的每一行和每一列交叉的位置。這些 NAP 可以是 NoC 和可編程邏輯陣列之間的源或目的地。
圖 1:Speedster7t 的片上網(wǎng)絡(luò)(NoC)和接口
Ethernet:以太網(wǎng)
Security:安全性
Configuration:配置
each direction:每個方向
Speedster7t 的 NoC 似乎只對 FPGA 內(nèi)部的布線總線有所幫助;但是,這種新型架構(gòu)可以顯著提高設(shè)計人員的工作效率,實現(xiàn)全新的設(shè)計功能,并提供了輕松實現(xiàn)密集型數(shù)據(jù)處理應(yīng)用的能力。下面列舉了在效率提高、設(shè)計變更和性能提升方面最顯著的八種應(yīng)用場景。
在整個 FPGA 的邏輯陣列中簡化高速數(shù)據(jù)分發(fā)
在傳統(tǒng)的各種 FPGA 架構(gòu)中,對連接到 FPGA 的片外存儲器以及與之相連的外部高速數(shù)據(jù)源進(jìn)行雙向的讀 / 寫操作,需要數(shù)據(jù)在 FPGA 邏輯架構(gòu)中經(jīng)過一條較長且分段的路由路徑。這種制約不僅限制了帶寬,而且還會消耗在邏輯陣列中的用戶設(shè)計所需的布線資源,這給 FPGA 設(shè)計人員在時序收斂方面帶來了挑戰(zhàn),尤其是其他邏輯功能對器件利用率提高的時候。
使用 Speedster7t 的 NoC 將數(shù)據(jù)從外部源傳輸?shù)?FPGA 和存儲器,比使用傳統(tǒng)的 FPGA 架構(gòu)完成同樣的工作要容易得多。Speedster7t NoC 增強(qiáng)了 FPGA 陣列中傳統(tǒng)的可編程互連,其中的 NoC 就像一個疊加在城市街道系統(tǒng)上的高速公路網(wǎng)絡(luò)。雖然 Speedster7t FPGA 中傳統(tǒng)的、可編程互連矩陣仍然適用于較慢的本地數(shù)據(jù)流量,但 NoC 可以處理更具挑戰(zhàn)性的、高速的數(shù)據(jù)流。
NoC 中的每一行或每一列都被實現(xiàn)為兩個 256 位的、以 2 Ghz 固定時鐘速率運行的單向數(shù)據(jù)通道。行具有東 / 西通道,列具有北 / 南通道,從而允許每個 NoC 行或列可以同時處理每個方向上 512 Gbps 的數(shù)據(jù)流量??偠灾?,這些通道可以通過編寫簡單的 Verilog 或 VHDL 代碼,在 FPGA 陣列中傳輸大量的數(shù)據(jù),這些代碼支持 FPGA 與 NAP 通信并連接到 NoC 高速公路網(wǎng)絡(luò)上。
下圖顯示了 NoC 中各個點之間的數(shù)據(jù)傳輸。點 1 和點 2 的邏輯分別實例化了一個水平 NAP。NAP 可以發(fā)送和接收數(shù)據(jù),但是每個單獨的數(shù)據(jù)流都只是朝向一個方向。類似地,點 3 和點 4 的邏輯實例化了一個垂直 NAP,并且可以在彼此之間發(fā)送數(shù)據(jù)流。
圖 2:NoC 上跨越器件邏輯陣列的數(shù)據(jù)流
自動將 PCIe 接口連接到存儲器
在現(xiàn)在的 FPGA 中,設(shè)計人員在將高速接口連接至連有 FPGA 的存儲器件進(jìn)行讀寫時,必須考慮在器件內(nèi)由于連接邏輯、進(jìn)行布線、以及輸入和輸出信號的位置而產(chǎn)生的延遲。為了實現(xiàn)基本的接口功能,在設(shè)計過程中構(gòu)建一個簡單的存儲接口通常就要花費大量的時間。
在 Speedster7t 架構(gòu)中,將嵌入式 PCIe Gen5 接口連接到已連接的 GDDR6 或 DDR4 存儲器這項工作,可由外圍 NoC 自動處理,不需要設(shè)計人員編寫任何 RTL 來建立這些連接。由于 NoC 連接到所有的外圍 IP 接口,因此設(shè)計人員在將 PCIe 連接到 GDDR6 或 DDR4 的任何一個存儲器接口時,都具有極大的靈活性。在下面的示例中,NoC 能夠提供足夠的帶寬,以持續(xù)支持 PCIe Gen 5 通信流連接到 GDDR6 內(nèi)存的任意兩個通道。這種高帶寬連接無需消耗任何 FPGA 邏輯陣列資源即可實現(xiàn),并且設(shè)計所需時間幾乎為零。用戶只需要啟用 PCIe 和 GDDR6 接口即可在 NoC 上發(fā)送事務(wù)。
圖 3:將 PCIe 直接連接到 GDDR6 接口
在獨立的 FPGA 邏輯陣列模塊上實現(xiàn)安全的局部重新配置
與其他基于靜態(tài)隨機(jī)存取存儲器(SRAM)的 FPGA 一樣,Speedster7t FPGA 必須在通電時進(jìn)行配置。Speedster7t FPGA 具有一個片上 FPGA 配置單元(FCU),用于管理 FPGA 的初始配置和任何后續(xù)的局部重新配置。FCU 還被連接到 NoC,從而在配置 FPGA 時提供了更高的靈活性。使用 NoC 將配置位流傳輸?shù)?Speedster7t FCU,可以使用以前不可用的新方法來對 FPGA 進(jìn)行配置。
在器件配置之前,Speedster7t NoC 可用于某些讀 / 寫事務(wù):PCIe 至 GDDR6、PCIe 至 DDR4、最后是 PCIe 至 FCU。一旦 PCIe 接口被設(shè)置好,F(xiàn)PGA 就可以通過 PCIe 接口接收配置比特流(bitstream),并將其發(fā)送給 FCU 以配置器件的其余部分。一旦到達(dá) FCU,配置比特流被寫入 FPGA 可編程邏輯以配置器件。在器件被配置完成后,設(shè)計人員可以靈活地重新配置 FPGA 的某些部分(局部重新配置),以增加新的功能或提高加速性能,而無需關(guān)閉 FPGA。
新的局部重新配置比特流可以通過 PCIe 接口發(fā)送到 FCU,來重新配置器件的任何部分。當(dāng)部分器件被重新配置時,通過在所需的區(qū)域中實例化一個 NAP 與 NoC 進(jìn)行通信,任何進(jìn)出新配置區(qū)域的數(shù)據(jù)都可以在 Speedster7t1500 器件中被輕松訪問。NoC 消除了傳統(tǒng) FPGA 局部重新配置的復(fù)雜性,因為用戶不必?fù)?dān)心圍繞現(xiàn)有邏輯功能進(jìn)行布線并影響性能,也不必?fù)?dān)心由于該區(qū)域中的現(xiàn)有邏輯而無法訪問某些器件的引腳。該功能節(jié)省了設(shè)計人員的時間,并在使用局部重新配置時提供了更大的靈活性。
此外,局部重新配置允許設(shè)計人員在工作負(fù)載變化時調(diào)整器件內(nèi)的邏輯。例如,如果 FPGA 正在對輸入的數(shù)據(jù)執(zhí)行壓縮算法,并且不再需要壓縮,則主機(jī) CPU 可以告訴 FPGA 重新配置,并加載經(jīng)過優(yōu)化的新設(shè)計以處理下一個工作負(fù)載。在器件仍處于運行狀態(tài)時,局部重新配置可以在邏輯陣列集群(cluster)級別上獨立完成。一個聰明的用例是開發(fā)一個具有自我感知的 FPGA,該 FPGA 通過使用一個軟 CPU 來監(jiān)測器件操作以實時啟動局部重新配置,來關(guān)閉邏輯從而節(jié)省功耗,或在 FPGA 架構(gòu)中添加更多加速器模塊,以臨時處理大量的輸入數(shù)據(jù)。這些功能為設(shè)計人員提供了前所未有的配置靈活性。
輕松支持硬件虛擬化
Speedster7t NoC 通過利用 NAP 及其 AXI 接口,為設(shè)計人員提供了在單個 FPGA 中創(chuàng)建虛擬化安全硬件的獨特能力。將可編程邏輯設(shè)計直接連接到 NoC 只需要在邏輯設(shè)計中實例化一個 NAP 及其 AXI4 接口即可。每個 NAP 還具有一個相關(guān)的地址轉(zhuǎn)換表(ATT),該表將 NAP 上的邏輯地址轉(zhuǎn)換為 NoC 上的物理地址。NAP 的 ATT 允許可編程邏輯模塊使用本地地址,同時將 NoC 定向事務(wù)映射到 NoC 全局存儲映射所分配的地址。此項重新映射功能可以以多種方式使用。例如,它可以用于允許加速引擎的所有相同副本使用基于零的虛擬尋址,同時將數(shù)據(jù)流量從每個加速引擎發(fā)送到不同的物理存儲位置。
每個 ATT 條目還包含一個訪問保護(hù)位,以防止該節(jié)點訪問被禁止的地址范圍。該功能提供了一種重要的進(jìn)程間安全機(jī)制,可防止同時在一個 Speedster7t FPGA 上運行的多個應(yīng)用或多個任務(wù)干擾分配給其他應(yīng)用或任務(wù)的存儲模塊。這種安全機(jī)制還有助于防止由于意外、偶然甚至是故意的存儲地址沖突而導(dǎo)致系統(tǒng)崩潰。此外,設(shè)計人員可以使用此方案阻止邏輯功能訪問整個存儲設(shè)備。
圖 4:使用 Speedster7t NoC 實現(xiàn)硬件虛擬化
Memory Space:存儲空間
簡化團(tuán)隊協(xié)同設(shè)計
基于團(tuán)隊的協(xié)同化 FPGA 設(shè)計并不是一個新的概念,但是底層架構(gòu)和布線依賴于 FPGA 的其他部分,從而使得實現(xiàn)這個簡單概念非常具有挑戰(zhàn)性。一旦一個團(tuán)隊完成了設(shè)計的一部分,另一個設(shè)計其他部分的團(tuán)隊在嘗試訪問設(shè)備另一端的資源時,通常會遇到挑戰(zhàn),因為需要在已經(jīng)完成的設(shè)計部分進(jìn)行布線。同樣,對一部分已進(jìn)行設(shè)計布線的 FPGA 的區(qū)域或大小進(jìn)行更改,可能會對所有其他 FPGA 設(shè)計模塊產(chǎn)生連鎖影響。
使用 Speedster7t NoC,可以將設(shè)計模塊映射到 FPGA 的任何部分,并且可以對資源分配進(jìn)行更改,而不會影響其他 FPGA 模塊的時序、布局或布線。由于器件中所有的 NAP 都支持每個設(shè)計模塊無限制地訪問 NoC 進(jìn)行通信,因此使得基于團(tuán)隊的設(shè)計成為可能。因此,如果一個設(shè)計的某個部分在規(guī)模上有所增大,只要有足夠的 FPGA 資源可用,數(shù)據(jù)流就會由 NoC 自動管理,從而使設(shè)計人員不必?fù)?dān)心是否滿足時序,以及對其他團(tuán)隊成員正在進(jìn)行的設(shè)計的其他部分可能帶來的后續(xù)影響。
圖 5:致力于開發(fā)同一個 FPGA 的多個設(shè)計團(tuán)隊
Design Team:設(shè)計團(tuán)隊
通過獨立的接口和邏輯驗證加快設(shè)計速度
Speedster7t NoC 的另一個獨特功能是支持設(shè)計人員獨立于用戶邏輯去配置和驗證 I/O 連接。例如,一個設(shè)計團(tuán)隊可以驗證 PCIe 至 GDDR6 的接口,而另一個設(shè)計團(tuán)隊可以獨立地驗證內(nèi)部邏輯功能。這種獨立操作之所以能夠?qū)崿F(xiàn),是因為 NoC 的外圍部分連接了 PCIe、GDDR6、DDR4 和 FCU,而不會消耗任何 FPGA 資源。這些連接可以在不使用任何 HDL 代碼的情況下進(jìn)行測試,從而可以同時獨立地驗證接口和邏輯。該功能消除了驗證步驟之間的依賴關(guān)系,并實現(xiàn)了比傳統(tǒng) FPGA 架構(gòu)更快的總體驗證速度。
圖 6:獨立的 I/O 和邏輯驗證
Design Team 1: I/O Verification:設(shè)計團(tuán)隊 1:I/O 驗證
Design Team 2: Logic Verification:設(shè)計團(tuán)隊 2:邏輯驗證
采用分組模式(Packet Mode)簡化 400 Gbps 以太網(wǎng)應(yīng)用
在 FPGA 中實現(xiàn)高速 400 Gbps 以太網(wǎng)數(shù)據(jù)通路所面臨的挑戰(zhàn)是找到一種能夠滿足 FPGA 性能要求的總線位寬。對于 400G 以太網(wǎng),全帶寬運行的唯一可行選擇是運行在 724 MHz 的 1,024 位總線,或運行在 642 MHz 的 2,048 位總線。如此寬的總線難以布線,因為它們在 FPGA 架構(gòu)內(nèi)消耗了大量的邏輯資源,即使在最先進(jìn)的 FPGA 中也會在這樣的速率要求下產(chǎn)生時序收斂挑戰(zhàn)。
但是,在 Speedster7t 架構(gòu)中,設(shè)計人員可以使用一種稱為分組模式(packet mode)的新型處理模式,其中傳入的以太網(wǎng)流被重新排列為四個較窄的 32 字節(jié)數(shù)據(jù)包,或者四條獨立的以 506 MHz 頻率運行的 256 位總線。這種模式的優(yōu)點包括:當(dāng)數(shù)據(jù)包結(jié)束時減少了字節(jié)的浪費,并且可以并行傳輸數(shù)據(jù),而不必等到第一個數(shù)據(jù)包完成后才開始第二個數(shù)據(jù)包的傳輸。Speedster7t FPGA 架構(gòu)的設(shè)計旨在通過將以太網(wǎng) MAC 直接連接到特定的 NoC 列,然后使用用戶實例化的 NAP 從 NoC 列連接到邏輯陣列中,從而啟用分組模式。使用 NoC 列,數(shù)據(jù)可以沿著該列被發(fā)送到 FPGA 架構(gòu)中的任何位置,以便進(jìn)一步處理。使用 ACE 設(shè)計工具配置分組模式,可大大簡化用戶設(shè)計,并在處理 400 Gbps 以太網(wǎng)數(shù)據(jù)流時提高了效率。
圖 7:分組模式下的數(shù)據(jù)總線重排
Packet:數(shù)據(jù)包
Byte:字節(jié)
圖 8:使用分組模式的 400 Gbps 以太網(wǎng)
降低邏輯占用并提高整體 FPGA 性能
與以前的傳統(tǒng) FPGA 相比,Speedster7t NoC 具有更大的靈活性和更簡單的設(shè)計方法。一個潛在的好處是 NoC 會自動減少給定設(shè)計所需的邏輯量,設(shè)計可以使用 NoC 代替 FPGA 邏輯陣列來進(jìn)行模塊間布線。ACE 設(shè)計工具自動管理將設(shè)計單元連接到 Speedster7t NoC 的復(fù)雜性,因此設(shè)計人員無需編寫 HDL 代碼即可實現(xiàn)生產(chǎn)率。這種方法簡化了實現(xiàn)時序收斂的耗時挑戰(zhàn),同時又不會由于 FPGA 邏輯陣列內(nèi)的布線擁塞而降低整體應(yīng)用性能。NoC 還可以在不犧牲 FPGA 性能的情況下提高器件利用率,并且可以顯著增加可用于計算的查找表(LUT)數(shù)量。
為了強(qiáng)調(diào)這一優(yōu)勢,我們創(chuàng)建了一個支持二維輸入圖像卷積的示例設(shè)計。每個模塊都使用 Speedster7t 機(jī)器學(xué)習(xí)處理器(MLP)和 BRAM 模塊,每個 MLP 在一個周期內(nèi)執(zhí)行 12 次 int8 乘法。將 40 個二維卷積模塊鏈接在一起,以利用器件中幾乎所有可用的 BRAM 和 MLP 資源。總共有 40 個二維卷積示例設(shè)計實例并行運行,使用了 94%的 MLP、97%的 BRAM、但僅使用了 8%的 LUT。在總的可用 LUT 中,其余 92%的 LUT 仍可被用于其他功能。
隨著更多的實例被內(nèi)置于器件中,單個單元模塊的最高頻率(FMAX)不會降低。該設(shè)計能夠保持性能,因為進(jìn)出每個二維卷積模塊的數(shù)據(jù)可以直接從連接到 NoC 的 NAP 訪問 GDDR6 內(nèi)存,而無需通過 FPGA 邏輯陣列進(jìn)行布線。
圖 9:一個帶有 40 個二維卷積模塊實例的 Speedster7t 器件
結(jié)論
Speedster7t NoC 實現(xiàn)了 FPGA 設(shè)計過程的根本轉(zhuǎn)變。Achronix 是第一家實現(xiàn)二維片上網(wǎng)絡(luò)(2D NoC)的 FPGA 公司,該 2D NoC 可以連接所有的系統(tǒng)接口和 FPGA 邏輯陣列。這種新型架構(gòu)使 Achronix 公司的 FPGA 特別適用于高帶寬應(yīng)用,同時顯著提高了設(shè)計人員的生產(chǎn)率。由于 NoC 管理了 FPGA 中設(shè)計的數(shù)據(jù)加速器和高速數(shù)據(jù)接口之間的所有網(wǎng)絡(luò)功能,因此設(shè)計人員只需要設(shè)計其數(shù)據(jù)加速器并將其連接到 NAP 原語即可。ACE 和 NoC 負(fù)責(zé)其他所有事務(wù)。通過使用 NoC,F(xiàn)PGA 設(shè)計人員將受益于:
在整個 FPGA 邏輯陣列中簡化高速數(shù)據(jù)分發(fā)
自動將 PCIe 接口連接到存儲器
在獨立的 FPGA 邏輯陣列模塊上實現(xiàn)安全的局部重新配置
輕松支持硬件虛擬化
簡化團(tuán)隊化設(shè)計
通過獨立的接口和邏輯驗證加快設(shè)計速度
采用分組模式簡化 400 Gbps 以太網(wǎng)應(yīng)用
降低邏輯占用并提高整體 FPGA 性能
? ? ? ?責(zé)任編輯:pj
評論