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