使用 NoC 可以大大簡化 SoC的開發,但這在很大程度上取決于誰在開發NoC。
作者:Michael Frank and Frank Schirrmeister
除了簡易的產品以外,幾乎所有的現代系統級芯片 (SoC) 設備都將利用片上網絡(NoC) 來實現其片上通信。有些人質疑是否有必要使用 NoC,或者采用更基本的方法是否能足夠滿足需要。
Part.1
SoC中有什么?
SoC 是一種集成電路(IC),它集成了計算機或其他電子系統的大部分或全部組件。SoC 由稱為知識產權(IP) 模塊的多個功能單元組成。其中有許多模塊將來自第三方供應商;剩下的部分- 那些提供“秘密武器”,將此SoC與競爭產品區分開來 - 將由自己內部開發創建。
這些 IP 模塊可以包括處理器內核,如微處理器單元(MPU)、圖形處理單元(GPU) 和神經處理單元(NPU)。除了各種類型的存儲器 IP 外,其他 IP 模塊還可以執行通信、實用程序、外設和加速功能。
Part.2
總線、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)。同樣,此圖中的每一條線代表一條包含數據、地址和控制信號的多線總線。
在 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再次具有緩沖事務并確定事務優先級的能力。由于每個啟動器不需要能夠與每個目標通信,這可以反映在架構中,從而進一步降低了互連要求。
Part.3
使用成品還是“自己動手”?
從一個角度來看,使用 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實際上是一個“按鈕”操作。
Part.4
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設計何時需要NoC?”的問題。簡單的答案是,當今日益復雜的SoC設計始終需要一個NoC來優化實現出色路由和性能目標。實施前衛的NoC的簡單方法是使用Arteris的FlexNoC 。
關于 Arteris
Arteris是系統IP的先進提供商,包括 片上網絡(NoC) 互連 IP 和 IP 部署技術兩部分,可加速各種電子產品的系統級芯片(SoC)半導體開發和集成。垂直應用包括汽車、移動、消費電子、企業數據中心、5G 通信、工業和物聯網,利用 AI/ML 等技術和功能安全為寶馬、博世、百度、 Mobileye、三星、東芝和恩智浦等客戶提供服務。Arteris IP產品包括FlexNoC互連IP,Ncore緩存一致性IP,CodaCache獨立末級緩存,ISO 26262 安全,人工智能,自動時序收斂和Magillem SoC 組裝自動化。Arteris IP 產品可以幫助客戶提升性能、降低功耗和面積、提高設計復用效率、加快 SoC 開發速度,從而降低開發和生產成本。
審核編輯 :李倩
-
模塊
+關注
關注
7文章
2695瀏覽量
47433 -
soc
+關注
關注
38文章
4163瀏覽量
218168 -
啟動器
+關注
關注
0文章
60瀏覽量
13158
原文標題:我的SoC設計何時需要NoC?
文章出處:【微信號:ArterisIP,微信公眾號:ArterisIP】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論