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