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