片上網絡 (NoC) 是一種用于組織位于同一芯片上的操作模塊之間的通信的方案。它旨在結合各種用途的計算核心(執行、圖形、物理等)、設備控制器、ROM 和 RAM 模塊、獨立設備、傳感器以及更多可以放置在硅晶體上的東西。目前,NoC 是一般微處理器技術特別是單芯片系統發展最有前途的領域之一。
接下來會首先分析一下NoC的特點,然后說明一下目前FPGA領域在這個硬件架構下的應用,最后簡單分析未來這一架構的前景。
NoC
開頭已經介紹了幾個概念,這里在簡單介紹一下:
R為路由節點,Core為計算節點。
首先,讓我們弄清楚開發的片上網絡架構的典型特征是什么。與在模塊之間建立直接鏈接或將所有模塊連接到一個或多個公共總線(其中信號通過相同的線路但在不同的時間傳輸)的傳統方案不同,這種架構意味著每個模塊都連接到一個內部網絡建立在交換機上,它將路由它們與操作塊之間的信號。
每個交換機都是一個網絡節點,類似于傳統數據網絡中的類似物——LAN 和 WAN。交換機將數據拆分為更小的部分(數據包),并以這種形式通過一系列后續交換機將它們發送給接收者。每個中間節點瀏覽接收到的數據包的報頭以搜索目的地,并根據路由表將它們轉發到下一個。需要注意的是,數據包可以通過不同的方式到達最終交換機,因為中間節點可以根據特定連接的負載(動態路由)改變它們的路由。最終交換機從數據包中收集原始消息并將其傳輸給接收者。此外,這樣的交換系統允許為不同的流量設置優先級(例如,服務質量單芯片系統中的算法)。
當前概念中的片上網絡拓撲基于三種類型的元素:
開關(路由);
通道;
資源網絡接口。
交換機根據所選拓撲采用在網絡節點之間路由信號的任務。請注意,NoC 的架構假設使用了一個相當強大的開關,這將提供最低水平的延遲(最多納秒)。但是由于它的實現,除了提高處理能力之外,還可以實現集成不同供應商的 IP 內核(包括圖形內核、控制器和信號微處理器)提供的靈活性(前提是它們配備了兼容的網絡接口),以及可能的網絡拓撲的選擇(因為可以通過各種方式建立各個功能塊之間的通信)。
通道提供交換機和網絡接口之間的物理連接。一些變體甚至會包括通信緩沖區。
最后,資源網絡接口。這些 NoC 元素將確保各個 SoC 元素與公共內部網絡的連接。
NoC和SoC有什么區別?
現代半導體是真正的科學奇跡,微處理器架構的微妙之處可能會讓初學者感到困惑。讓我們簡要回顧一下片上網絡和片上系統概念之間的區別。
片上網絡是一種特殊方案,用于在 SoC 或處理器內的有限組件之間建立鏈接。它確保了最大的數據傳輸速度并減少了必要的物理連接總數。此外,正如我們已經指出的那樣,它允許將來自不同供應商的不同目的的多個 IP 放置在同一個晶體中。
片上系統 (SoC) 是包含一整套多樣化和互連單元的單芯片,旨在解決一定范圍的任務。傳統上,SoC 包括幾個計算內核、內存控制器、I/O 子系統、它們之間的連接以及切換方式(總線、交叉開關、NoC 元件)。
是什么讓 NoC 的理念栩栩如生:處理器性能提升的問題
僅在十幾年前,提高處理器性能的主要方法是提高其時鐘頻率(廣泛的方法)。然而,在達到 2 GHz 之后,工程師們遇到了第一個問題,包括所用材料的物理限制(二氧化硅層太薄,無法保證晶體管的精確切換:存在“漏電流”,導致晶體過熱、功耗過大,甚至操作不當)和技術工藝(可以通過減小邏輯元件的物理尺寸來降低能耗,這是現有光刻方法和半導體材料難以實現的)。因此,開始尋找替代解決方案。一系列創新技術使現代 CPU 能夠在 3.8-4 GHz 下穩定工作。
主要是基于在單個封裝中集成多個處理器內核的計算并行化。并行計算本身并不是一個新話題:任務并行化的第一個理論論證是由 Gaspard de Prony 在 18 世紀末為法國地籍計算對數和三角表時提出的。在現代計算機技術的應用中,自 1950 年代“大型”計算機出現以來,并行計算得到了發展。在這里,幾個獨立處理器的聯合工作用于計算——在某些情況下多達數千個。然而,直到 1980 年代中期,這種方法仍然是大型機的特權——直到第一臺基于桌面處理器(英特爾 8086)的超級計算機在加州理工學院并發計算項目.
事實上,多核處理器不是專注于單個執行線程中每秒可能執行的最大操作數,而是允許同時執行多個線程,每個核心最多兩個線程。這個想法本身很好,除了一點:并行計算的性能在很大程度上取決于特定任務的并行化程度以及開發人員應對它的能力。
還有一個問題。從一開始,這些單元(內核)之間的連接元素就是處理器總線——單核處理器的傳統。它的主要缺點是一次只有一個處理器塊可以傳輸數據。所有其他單位只能是當時的收件人。當需要從 N 個塊傳輸信號時,在每個給定的時間片內,N-1 個塊必須“等待”輪到它們。這種等待會導致延遲,這對于承擔高負載的系統來說是一個嚴重的缺點。特別是,這一特性開始阻礙處理器公司的進一步發展,這些公司尋求增加其產品中的內核數量。畢竟,如果有很多強制碰撞,那么大量的核心沒有任何優勢。總線結構發展的下一個階段是矩陣方案,也稱為交叉開關。但實際上,這只是增加了各個塊之間的鏈接數量。這就是為什么交叉開關也不是問題的明確解決方案。這樣的連接方案只是允許通過組織更多的交叉鏈接將問題推遲一段時間。
不幸的是,這兩個因素嚴重制約了軟件開發人員。他們必須尋找解決方法來執行他們的任務。
在這里,我們找到了問題的根源。解決它的三個組成部分和可能的途徑:
時鐘頻率增加。在沒有昂貴的冷卻系統的情況下,目前的科學狀態幾乎無法允許將時鐘頻率提高到 5 GHz 以上。研究正在進行中,但結果不會很快出來。
運算核心的倍增和專業化。僅通過增加核心來提高處理器的性能,如果后者之間的相互通信基于總線架構及其衍生產品,則在每個晶體 16 個核心的點上會耗盡自己。
編程中的并行方法。并行編程的方法相當成熟,但是:
首先,并非每個任務都可以并行化。有很多問題需要依次解決;
其次,這里的一切都取決于程序員:他們的技能和工具。芯片制造商無能為力,盡管英特爾,超微, 和高通– 所有領先的供應商 – 盡其所能提供幫助。
最近,在尋找第二條路線的解決方案時,工程師們提出了實現基于數據包的交換/路由系統的想法(如現代通信系統中所見——TCP/IP、蜂窩網絡、Wi-Fi、藍牙等)。通過路由數據包在處理器塊之間建立關系的整個想法稱為片上網絡(NoC)。
3D-NoC
上面介紹的是目前常用的2D-NoC架構,其實NoC還有一種3D架構,如下圖所示:
這種架構和2D-NoC差不多,只不過路由部分復雜一些。
FPGA在NoC架構上的應用
FPGA從Xilinx公司1985年推出世界首款FPGA芯片“XC2064”經歷過數十年發展,目前在各大領域大放異彩,下面是其大致的發展歷程。
其實目前FPGA廠家都在大容量FPGA設計上費盡心力,其中NoC硬件架構也是其探索的一個方向。
Achronix Speedster7t FPGA
2020年上半年,Achronix 公司推出了基于臺積電(TSMC)的 7nm FinFET 工藝的 Speedster7t FPGA 器件,該器件包含了革命性的新型二維片上網絡(2D-NoC)。該2D-NoC 如同在 FPGA 可編程邏輯結構上運行的高速公路網絡一樣,為 FPGA 外部高速接口和內部可編程邏輯的數據傳輸提供了超高帶寬(~27Tbps)。
圖 1 ?Speedster 7t FPGA 結構圖
據介紹,該FPGA不僅在架構上使用NoC,通道上也是使用了標準AXi通道(每一行或每一列都有兩個 256 位的、單向的、行業標準的 AXI 通道),該通道可以在每個方向上以 512Gbps(256bit x 2GHz)的傳輸速率運行。
下面以三重數據加密解密算法(3DES)為例介紹一下NoC架構的特點,在傳統FPGA上實現該算法后端布局如下:
3DES 設計(沒有用 NoC)后端布局布線圖
從上圖中可以看出來很多問題:
總線之間有交叉
這會大大增加布局布線時間。
加密和解密模塊中間的連線太長,導致延時很長。
該問題可以通過增加緩存寄存器或者流水操作解決,但是這樣帶來的問題:一是性能受限;二是總線寬度過大,增加相關寄存器占用的寄存器資源很大。
這種問題,應該很多廠商都會遇到,似乎使用NoC該問題就可以迎刃而解,下圖是使用2D-NoC的綜合結果。
利用 2D NoC 進行內部邏輯互連
在 NoC 的每個交叉點上都有兩個網絡接入點(NAP),用戶只要簡單地通過例化原語或者宏定義就可以將自己的邏輯接入到 NoC 并進行互連。
網絡接入點 NAP
例化 NAP 宏定義示例
通過例化等操作,下圖是后端布局布線完成后的示意圖:
3DES 設計(利用 NoC)后端布局布線圖
通過上面的操作,不僅僅簡化了用戶的設計(優化時間),而且性能也提高了(理論上,從260MHz 提高到了 750MHz),后續的優化也就簡化了很多。
這次Achronix 新一代的 Speedster7t FPGA 來簡化和加速用戶的設計,不僅僅是一種嘗試,更能看出未來在大型設計時,NoC總線在FPGA中的應用。
如果說Achronix是在國內比較“小眾”的公司,那么Xilinx在NoC方向上的使用更能說明問題。
Xilinx AI 引擎技術(AIE)
這部分參考:
?
https://china.xilinx.com/content/dam/xilinx/support/documentation/architecture-manuals/am009-versal-ai-engine.pdf
?
https://china.xilinx.com/content/dam/xilinx/support/documentation/white_papers/c_wp506-ai-engine.pdf
?
https://china.xilinx.com/content/dam/xilinx/support/documentation/application_notes/xapp1352-beamforming-ai-engine.pdf
?
https://china.xilinx.com/content/dam/xilinx/support/documentation/white_papers/EW2020-Deep-Learning-Inference-AICore.pdf
詳細的信息在上面鏈接文檔中都有介紹,下面簡單介紹一下:
在Versal ACAP系列中,Xilinx(現在叫AMD了)FPGA中集成了AI 引擎,如下圖中AI Engine(下簡稱AIE)。
為了這下AIE高效有序的工作,AMD采用了“ 2D 陣列架構”的方式,下圖就是示意圖:
這就是我們說的2D-NoC架構,官網上詳細介紹了這種架構的優點:
同時,AMD的架構也是和上面介紹的Achronix架構一樣,采用NoC架構和AXI總線,下圖就是AXI總線在Versal ACAP中的示意圖:
?
整個系統其實比我描述的要復雜的多,這里只是簡單介紹一下,詳細的設計可以參考上面的鏈接。
通過這兩FPGA廠家的一些架構分析,我們也能簡單看到一些未來FPGA的微架構可能會大量采用NoC硬件架構以適應更加復雜的應用,尤其現在FPGA對于一些嵌入式內核、AI內核的需求越來越大。
NoC在FPGA應用上的發展前景
目前,NoC 應用的主要領域仍然是超級計算機的創造(例如,基于 260 核的神威中國江南計算實驗室公司的處理器系列)。然而,所有領先的芯片制造商已經在桌面和服務器芯片的開發中實現了單獨的 NoC 元素。例如,Infinity Fabric來自 AMD - 最新 Zen (CPU) 和 Vega (GPU) 處理器系列的基礎 - 或 AMD 和英特爾的聯合開發:Kaby Lake-G。
至于在FPGA應用上,我們也能看出來:
NoC 為 FPGA 設計提供了幾項重要優勢,包括:
提高設計的性能。
減少邏輯資源閑置,在高資源占用設計中降低布局布線擁塞的風險。
減小功耗。
簡化邏輯設計,由 NoC 去替代傳統的邏輯去做高速接口和總線管理。
實現真正的模塊化設計。
目前短期內,這項技術還需要解決自己的一些短板,比如虛擬旁路和低擺幅信號。這些技術可以進一步降低功耗并最大限度地減少傳輸延遲,從而可以根據需要擴展系統規模并增加內核數量(而不影響其功能)。
最后在介紹幾個NoC 系統的領先開發商:
最著名的 NoC 系統和元件開發商是NetSpeed Systems(http://netspeedsystems.com/), Arteris, Sonics和Aims Technology Inc。他們為高通和英特爾等世界知名芯片供應商創建理論和硬件解決方案。
以上就是本人的個人見解,如有不同見解,歡迎后臺留言指正。
審核編輯:黃飛
?
評論