使用 NoC 可以大大簡化 SoC的開發,但這在很大程度上取決于誰在開發NoC
除了最簡單的產品以外,幾乎所有的現代系統級芯片 (SoC) 設備都將利用片上網絡 (NoC) 來實現其片上通信。有些人質疑是否有必要使用 NoC,或者采用更基本的方法是否能足夠滿足需要。
SoC中有什么?
SoC 是一種集成電路 (IC),它集成了計算機或其他電子系統的大部分或全部組件。SoC 由稱為知識產權 (IP) 模塊的多個功能單元組成。其中有許多模塊將來自第三方供應商;剩下的部分 - 那些提供“秘密武器”,將此SoC與競爭產品區分開來 - 將由自己內部開發創建。
這些 IP 模塊可以包括處理器內核,如微處理器單元 (MPU)、圖形處理單元 (GPU) 和神經處理單元 (NPU)。除了各種類型的存儲器 IP 外,其他 IP 模塊還可以執行通信、實用程序、外設和加速功能。
總線、crossbar switch和NoC
每個 IP 塊都表示在系統內存空間中的某個位置。術語“事務” (transaction) 是指從系統內存空間的地址中寫入或讀取數據字節的操作。為了使SoC發揮其魔力,IP塊必須使用事務通過某種形式的互連來相互“交談”。術語“啟動器” (initiator) 和“目標” (target) 是指生成或響應事務的 IP 塊。
1990年代SoC上使用的主要互連機制是總線 (bus)。高度簡化的表示如圖 1 所示。請注意,標記為“總線”的線路將包括多條實現數據總線、地址總線和相關控制信號的線路。
圖1:簡化的總線互連結構。
在許多早期的SoC設計中,只有一個中央處理器 (CPU) 形式的啟動器IP塊。當啟動器在地址總線上放置一個地址時,所有的目標 IP 塊都會看到它,其中一個會對自己說:“這是我”。當啟動器隨后發出讀取命令時,或者當它將數據放在數據總線上并發出寫命令時,相應的目標將做出響應。
有一些早期的 SoC 可能會使用多個啟動器。例如,CPU 可能附帶直接內存訪問 (DMA) 功能,該功能可用于在不同內存區域和外圍設備之間快速傳輸大型數據塊。隨著設計中啟動器數量的增加,有必要實施某種形式的仲裁方案,允許它們協商總線的控制。
在 2000 年代初期,隨著 SoC 設計變得越來越復雜 (包含越來越多的 IP 模塊并采用多個啟動器),使用基于 crossbar switch交叉開關的互連架構變得很普遍 (圖 2)。同樣,此圖中的每一條線代表一條包含數據、地址和控制信號的多線總線。
圖2:簡化的 crossbar switch互連架構。
在這種情況下,任何啟動器都可以與任何目標通信。當事務從啟動器傳遞到目標并再次返回時,switch交叉開關對事務進行路由,并且多個事務可以隨時在“進行中”。每個switch都具有緩沖事務的能力,因此如果許多事務同時到達,它可以決定哪個事務具有更高的優先級。
SoC 設計的規模和復雜性持續增長。大約在 1990 年代初期,SoC 可能只包含幾十個 IP 模塊,整個設備可能只包含 20,000 到 50,000 個邏輯門和寄存器。相比之下,如今,SoC 可以包含數百個 IP 模塊,每個模塊包含數十萬甚至數百萬個邏輯門和寄存器。
在同一時期,數據總線的寬度從8位增加到16位,32位,64位,甚至更高。事實上,目前數據傳輸的典型大小是 64 字節 (512 位) 緩存行,這很快就會導致路由擁塞問題。盡管硅芯片工藝的發展已經使晶體管縮小了幾個數量級,但由于芯片上導線的寬度沒有以同樣的速度減小,這些問題變得更加嚴重。
為了解決這些問題,今天的設計人員采用了片上網絡 (NoC) 的概念。圖 3 是一個簡單的 NoC 示例。在這種情況下,事務就由傳遞的信息包承擔。每個數據包包含一個反映目標地址的標頭和一個包含數據、指令、請求類型等的正文。
圖3:簡化的片上網絡(NoC)互連架構。
多個信息包可以在任何特定時間“傳輸”,并且switch再次具有緩沖事務并確定事務優先級的能力。由于每個啟動器不需要能夠與每個目標通信,這可以反映在架構中,從而進一步降低了互連要求。
使用成品還是“自己動手”?
從一個角度來看,使用 NoC 極大地簡化了 SoC 的設計,但這在很大程度上取決于誰在開發 NoC。術語“套接字” (socket) 是指IP塊與NoC之間的物理接口 (例如,數據寬度) 和通信協議。SoC行業已經定義并采用了幾種socket協議 (OCP,APB,AHB,AXI,STBus,DTL等)。
除了不同的數據寬度外,同一設計中的IP模塊可能以不同的頻率計時。由于 SoC 設計可能涉及數百個 IP 塊,其中許多來自其他第三方供應商,因此 IP 可能使用不同的socket協議。為了適應這種多樣性,可能需要在啟動器和目標socket之間轉換事務。
支持多個 SoC 項目的內部 NoC 需要多個維度的可配置性和靈活性。因此,從頭開始開發 NoC 可能與設計 SoC 的其余部分一樣復雜和耗時。此外,開發人員現在有兩件事需要驗證和調試 - NoC和設計的其余部分。
解決措施是使用現成的NoC解決方案,例如 Arteris的FlexNoC。在這種情況下,FlexNoC直觀的界面使設計人員能夠識別構成架構的IP模塊以及每個模塊的socket特性 (寬度、協議、頻率等)。開發人員還可以指定哪些啟動器需要與哪些目標通信。此時,生成NoC實際上是一個“按鈕”操作。
SoC 到底有多復雜?
回到SoC設計何時需要片上網絡的問題。直覺的答案可能是較小的設計可能被豁免。但是,在最近與Semico Research的Rich Wawrzyniak的討論中,他證實我們已經在客戶那里看到的情況是:即使在工業和物聯網領域的較小設計中,用戶也經常面臨數十到數百個必須組裝和協調的IP塊。
如圖 4 所示,Semico 定義了四類 SoC。其中三種 - 具有100-200個離散模塊和1+互連的基本SoC,具有200-275個模塊和4+復雜互連的特定價值多核SoC,以及具有>275模塊和5+復雜互連的高性能SoC - 是NoC自動化的明確靶心目標。但是除此之外,即使是最簡單的商用控制器,設計人員也要面臨著10到100個需要交互的離散模塊。
對于較小的設計,工程師傾向于“自己做NoC”。但通常情況下,他們很快就會意識到:他們應該打電話給Arteris來利用NoC自動化。
圖4:Semico根據復雜性將SoC分為四類。
審核編輯:劉清
-
soc
+關注
關注
38文章
4194瀏覽量
218768 -
片上網絡
+關注
關注
0文章
33瀏覽量
11826 -
OCP
+關注
關注
0文章
80瀏覽量
16462 -
NoC
+關注
關注
0文章
38瀏覽量
11752
原文標題:我的SoC設計何時需要NoC ?
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論