1. 程式人生 > 其它 >Application Defined On-chip Networks for Heterogeneous Chiplets: An Implementation Perspective 閱讀筆記

Application Defined On-chip Networks for Heterogeneous Chiplets: An Implementation Perspective 閱讀筆記

  近日讀了一篇和自己工作內容非常契合的paper, 作者是華為海思的工程師們,通訊作者是夏晶,文章主要是介紹chiplet現狀以及提出的一種無buffer的環形匯流排NOC的結構,由於本人常年從事匯流排設計工作,讀起來非常得心應手,在此寫一些總結和感想。

  首先介紹一下這篇paper的主要內容:

    核心思想: 提出一種bufferless multi-ring NoC

    針對場景: 異構的chiplet-based SoC. 包括但不限於Server-CPU, AI-Processor, Baseband-Processor, IO Die等

    動機: 最近chiplet非常火,前一陣Intel還推出了UCIe的統一標準(chiplet為什麼這麼火的原因在這裡就不詳細講了,比如因為摩爾定律不再嚴格使用,比如因為多工藝降低成本,比如xxx,分析這類原因的文章非常多,包括之前我們組和清華大學交叉學院的馬愷聲老師也一起探討過,他寫過一篇公眾號文章,介紹的還是非常詳細的,有興趣可以參考閱讀.), 而chiplet的互聯NoC是一個關鍵的技術點,同時針對不同的SOC,NoC所需要滿足的要求側重點也有所不同,為了滿足這些需求,所以提出了這種NoC架構.

 

    NoC設計需要做的trade-off決策: Application, architecture, physical design.

    NoC設計的主要指標:

      1. Network Latency: 像Server-CPU, 對訪存的延遲非常敏感,這裡的NoC主要需要保證latency的減少

      2. Network Bandwidth: 像AI-Processor, 海量的資料處理,主要看NoC的頻寬

      3. Network Area Efficiency: 這裡主要是從後端的角度,SoC越來越複雜,想達到timing closure, 對面積的要求非常高

後面文章花了一個大章節主要講NoC co-design(軟體應用角度,設計角度,後端角度)方法論的來源,比如從market的需求,比如從計算的特性等,反正NoC很關鍵,需要提升上面的關鍵指標.

 

    NoC方案用的協議: CHI協議,這裡有一點讓我意外的是,Server-CPU用CHI協議是天然成立的,ARM也一直在推CMN一致性匯流排IP,但是AI-processor, 這篇文章說也用了CHI協議,同時有cache相關的行為。而我的理解是,各個AI core很少有共享同一份資料的使用場景,多是序列化的,也就是第一個core處理後的資料給第二個core使用,一般也不需要保持core間的一致性,所以,這裡為什麼用CHI協議,我是比較好奇的

 

  然後文章提出了bufferless multi-ring NoC:

    Application: 提供15TB/s以上的頻寬,低延遲

    Architecture: Flexible

    Physical Implementation: 簡化,提高distance per cycle

  這個方案的最大特點: No buffer. 這裡主要說的是NoC本身採用無buffer的設計方式,好處是降低電路複雜度和能耗. 我的理解是他只是儘量減少了XP(Crosspoint)上所使用的buffer,事實上後面也有提到在不同的node上根據不同的原因也會有buffer的存在,尤其是要解決deadlock問題時,更增加了buffer的使用,所以對bufferless,我們只瞭解他的設計思想就可以.

  Deflection routing: 這個詞文章沒有做過多的解釋,我研究了一下Onur Mutlu教授2014年的一個PPT,"Design and Evaluation of Hierarchical Rings with Deflection Routing", 從PPT上看,和海思的這篇文章思想幾乎完全一樣(這不算抄襲麼,好奇),也是把所有的local router的buffer移除,並去掉bridge router絕大多數的buffer. Routing方式就是有flit就給他做路由偏轉,如下圖

 

 

 

 

然後文章主要介紹了這種NoC的實現方法,左邊這個圖和上面PPT的內容就非常類似了,講的是一個router對flit的處理方式,後面是環形匯流排的大致結構,D和E的區別是片內匯流排還是片間匯流排

 

 

 

 

然後介紹了server和AI SoC的架構,基本上從下面兩張圖就可以看出實現的思想和結構

 

 

 

  事實上,這個架構我整體看下來,覺得新穎的地方其實並不多,主要是bufferless的這個理念,其他的環形匯流排巢狀早在多年前就有實現,而且裡面的具體實現在華芯通的第一顆晶片上就非常詳細,幾乎是一樣的架構,而且paper裡所述deadlock-free的場景和解決辦法也非常熟悉,這個死鎖相關資訊概述如下:

  Ringbus上面的傳輸是用Token/Credit作為信令的,也就是paper說的I-tag和E-tag,當多個ringbus有匯聚點的時候,產生跨ring的行為,就有可能造成死鎖的場景. 當每個flit都想傳輸到另一個ring的時候,而兩個ringbus都沒有資源供使用,就會死鎖。

常見的解決辦法是virtual channel.也就是用一個額外的slot reservation來解決掉某一個transaction. 文章認為這種解決方法會增加latency, 所以採用了"SWAP"機制

 

 

 

Deadlock detection and deadlock resolution:

  什麼情況認為發生了deadlock呢?當系統發現某個Cross point上,有連續fail掉的inject flits,且超過了一個閾值cycle數,就認為Eject Queue和可以使用的Tx buffer被全部佔用,Inject Queue就無法傳送新的傳輸.

  此時跨ring的bridge進入到死鎖恢復模式(Deadlock resolution mode), 此模式會把預留的Tx buffer給死鎖的flit使用, Eject Queue的一個Flit被push到預留buffer裡,從而空出來一個位置用於cross-ring flit.這種和Virtual channel的本質區別是什麼呢,其實我沒太懂。。。

 

  後面paper介紹了各種實驗資料,大概表示我這種NoC比別人的好blablabla, 不在此詳述了.

  說一點自己的想法,最近我也開始瞭解Chiplet相關的資訊,文章裡講的更多是協議層上的實現,而chiplet的實現需要的是協議層和物理層的協同工作,是用Serdes還是用並行匯流排(類似intel AIB, 或者Apple M1 Ultra),還有工藝的問題等等。海思確實厲害,我相信他們已經可以把這套NoC在chiplet互聯的協議層實現了,只是我更感興趣的是整體的一個結構,一起針對chiplet所做的一些優化。ARM_Based主流的chiplet實現還是用CMN轉CXS協議,通過CCIX或CXL連線到Compute die或者Accelerator die上面. 另外,片內的NoC主流已經是mesh架構了,這裡講的仍然是ringbus, 估計海思更核心的mesh不想往外說吧。

  另外從一位朋友那兒瞭解的,這篇paper主要突出實現,而非創新性,工程量確實是很大的.