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