NOC片上網絡總線初探
NoC(Network on Chip,片上網絡) 是一種在復雜芯片(如多核處理器、SoC)內部,用于連接大量核心(CPU、GPU)、內存、緩存和其他IP模塊的通信架構。
1. 為什么需要NoC?傳統總線的問題
在芯片核心還很少的時代(比如雙核、四核),通常使用傳統的總線(Bus) 或交叉開關(Crossbar) 進行通信。
- 總線(Bus):像一條共享的高速公路,所有組件都連接在這條公路上。缺點是獨占性,同一時間只能有一對組件通信,其他組件必須等待,容易成為性能瓶頸。
- 交叉開關(Crossbar):像是一個巨大的交換機,可以建立多個并行的點對點連接,性能很好。但問題是復雜度高,隨著核心數量(N)的增加,其布線資源和面積開銷會以 N2 的速度增長,成本極高。
當芯片發展到擁有幾十個甚至上百個核心時(例如,服務器CPU、AI加速器),傳統的總線架構就無法滿足高帶寬、低延遲、可擴展的通信需求了,這時,NoC就成為了必然選擇。
2. NoC的核心思想和工作原理
NoC借鑒了大型計算機網絡(如互聯網)的思想,將通信和計算分離。
- 網絡化:將芯片上的各個模塊看作網絡中的一個個“節點”(Node)。
- 路由:數據被打包成一個個“數據包”(Packet),通過一系列“路由器”(Router)和“鏈路”(Link)被路由到目的地。
- 并行通信:多個數據包可以同時在網絡的不同部分傳輸,實現了極高的并行通信能力。
NoC的基本組成單元:
- 處理單元(PE):就是需要被連接的各個核心、內存控制器、DSP等IP模塊。
- 路由器(Router):網絡的核心交換設備,負責接收、緩存、選擇和轉發數據包。每個路由器通常連接到鄰近的其他路由器和本地處理單元。
- 網絡接口(NI):連接處理單元和路由器的適配器,負責將處理單元的通信請求打包成網絡數據包,或者將收到的數據包解包并傳遞給處理單元。
- 鏈路(Link):連接路由器和網絡接口的物理通道(一組導線)。
3. NoC的主要拓撲結構
拓撲結構決定了路由器和處理單元是如何連接的,直接影響性能、面積和功耗。常見的有:
-
網格(Mesh):最常見的一種,路由器呈二維網格排列,每個路由器連接東、南、西、北四個鄰居和本地一個處理單元。結構規整,易于設計和布局布線。例如,Intel的很多至強處理器就采用Mesh NoC。
-
環(Ring):路由器連接成一個環。結構簡單,但延遲會隨著節點增多而變大。在一些多核CPU(如早期的Intel酷睿)中常用。
-
蝶形(Butterfly):一種高性能拓撲,適用于高吞吐量場景,但結構更復雜。
-
樹(Tree):像公司組織架構圖,根節點帶寬壓力大,可能成為瓶頸。
4. NoC相比傳統總線的優勢
| 特性 | 傳統總線 (Bus) | 片上網絡 (NoC) |
|---|---|---|
| 可擴展性 | 差,核心越多,競爭越激烈,性能下降快 | 優秀,增加核心只需增加路由器和鏈路,性能線性增長 |
| 并行性 | 差,共享介質,同一時間只能一對一通信 | 強,多對通信可在網絡的不同部分同時進行 |
| 帶寬 | 有限,所有流量共享總線的最大帶寬 | 極高,整體帶寬是眾多鏈路帶寬的總和 |
| 功耗 | 所有信號廣播,功耗較高 | 點到點通信,只在需要時激活相關鏈路,更節能 |
| 時鐘 | 通常需要全局同步時鐘 | 可以設計為全局異步局部同步(GALS),設計更靈活 |
| 設計復雜度 | 簡單 | 復雜,需要設計路由算法、流控、避免死鎖等 |
5. 應用場景
NoC是現代復雜芯片的“血管”和“神經系統”,廣泛應用于:
- 多核CPU:AMD EPYC、Intel Xeon、ARM Neoverse等多核服務器處理器。
- AI加速器:NVIDIA的GPU、Google的TPU,內部有巨大的NoC來處理海量核心間的數據流。
- 復雜SoC:智能手機的SoC(如高通驍龍、蘋果A系列),連接CPU、GPU、NPU、ISP、內存控制器等。
- FPGA:新一代FPGA內部也采用NoC來提供高速互連。
總結
NoC(片上網絡)是一種用于芯片內部、基于分組交換的高速互連技術。它通過將計算機網絡的思想引入芯片設計,解決了多核時代傳統總線架構存在的可擴展性差、帶寬瓶頸等問題,是實現當今擁有數十億晶體管、上百個核心芯片的基石技術。

浙公網安備 33010602011771號