一個擁有496個核心的RISC-V晶片

半導體行業觀察 發佈 2020-01-13T20:18:35+00:00

對於那些不熟悉Celerity的人,我可以告訴你,這是在多家大學共同努力下,而創造的一個開源多核RISC-V分層加速器晶片。

來源:內容由半導體行業觀察(icbank)編譯自「fuse.wikichip」,作者:David Schor,謝謝。

對於那些不熟悉Celerity的人,我可以告訴你,這是在多家大學共同努力下,而創造的一個開源多核RISC-V分層(tiered)加速器晶片。該項目是DARPA快速電路實現(Circuit Realization At Faster Timescales:CRAFT)計劃的一部分,該計劃希望將定製集成電路的設計周期從幾年縮短到幾個月甚至幾周。Celerity團隊首先在Hot Chips 29上展示了該晶片。

去年,在VLSI 2019上,Celerity又回來談論其第二代晶片的PLL和NoC。演示文稿由密西根大學的Austin Rovinski進行。

下面我們先對整個Celerity SoC進行快速概述:它是一個多核多層(many-core multi-tier)AI加速器。總體而言,該晶片包括三個主要層:通用層,大規模並行層和專用層。為什麼要使用分層SoC?這是為了在典型的CPU設計上實現高靈活性和更高的電源效率(儘管效率不及ASIC NPU)。

通用層幾乎可以執行任何操作,例如通用計算,內存管理以及控制晶片的其餘部分。為此,他們集成了Free Chip Project的五個高性能亂序RISC-V Rocket內核。

下一層是大規模並行層,它將496個低功耗定製設計的RISC-V內核集成到一個網格中。這些稱為Vanilla-5的自定義內核是有序標量內核,其占用的空間比Rocket內核少40倍。最後一層是集成二值神經網絡(BNN)加速器的專業化層。這三層都是緊密連結的,並通過400 MHz運行的DDR存儲器接口連接。

Celerity上的Manycore Mesh時鐘由自定義數字PLL提供。這是一個相當簡單的一階ΔΣ頻率數字轉換器(FDC)PLL。該實現使用了一組16個DCO ,每個實現為環形振蕩器,其反相元件裝有NAND門FCE,如以下幻燈片中的電路圖所示。這樣做是為了僅使用標準單元來實現整個設計。為此,整個數字PPL是完全合成的並自動放置和布線的設計。該PLL在其16納米晶片上的頻率範圍為10 MHz至3.3 GHz。

與許多學術項目一樣,矽面積也非常重要的。我們看到,整個晶片為25平方毫米(5×5)。而對於Celerity而言,許多關鍵的架構設計決策都以限制矽面積的需求為主導,這意味著降低了複雜性。Manycore本身是16乘31的Vanilla-5 RISC-V小型內核陣列。該陣列的第32行應該是用於外部主機,用於與晶片上的其餘組件進行連接(例如,將消息/數據發送到大型Rocket內核以進行最終處理)。整個網格為3.38毫米乘4.51毫米(15.24毫米²),約占整個晶片的61%。Vanilla-5核心是5級有序流水線RV32IM核心,因此它們支持整數和乘法擴展。在矽晶片中,這些內核能夠達到1.4 GHz,比他們在Hot Chips 29上展示的第一個矽晶片高350 MHz。

為了降低多核陣列的複雜性,Celerity利用分區的全局地址空間進行單晶片數據包(single-flit packets)和遠程存儲編程模型。

該陣列利用了全局分區地址空間(global partitioning address space:GPAS)。換句話說,這個晶片不是使用高速緩存,而是使用32位地址方案將整個內存地址空間映射到網絡中的所有節點上。這種方法也意味著無需虛擬化或翻譯,從而大大簡化了設計。他們聲稱,與等效的一致性緩存系統相比,該設計可將區域開銷降低20倍。

值得指出的是,由於該多核陣列的目標工作負載是AI加速(相對於更通用的計算),因此它們可以採用顯式分區(explicitly partitione)的暫存器存儲方案,因為這些工作負載表現出高度並行的定義明確的獨立流模式。而且,對於這種類型的代碼,控制存儲器局部性的能力可能證明是非常有利的。陣列中的每個核都可以自由執行加載並存儲到任何本地地址,但是,它只能執行存儲到遠程地址。沒有遠程負載意味著它們將路由面積( router area)減少了10%,並且由於可以對遠程存儲進行流水線處理,因此可以防止流水線停頓。這種遠程存儲編程模型方案允許他們使用兩個網絡來實現此目的:數據網絡和用於管理優秀存儲的可心計數器網絡(credit counter network )。

如前所述,第32行用於外部主機。實際上,這意味著內存映射擴展到陣列底部的十六個路由停靠點,這使消息可以從多核陣列傳入和傳出多核陣列,到達晶片上的大核和其他外設。

Celerity並沒有使用這種類型應用程式非常常見的wormhole routing(也由Kilocore,Piton,Tile64等使用),而是將地址和數據合併到單個flit數據包中。該設計擺脫了發送數據都需要的標題/尾部信息。另外,由於沒有保留的路由,它擺脫了HOL阻塞。每個flit均為80b寬,其中控制位16位,數據位32位,節點地址位10位,存儲器地址位22位。flit節點地址保留了將數據發送到任何目的地的能力。該設計的主要好處是,由於僅將單個flit注入網絡,因此可以使用有序管道在每個周期執行一個存儲。

在多核陣列中的496個節點中,每個幾點都有一個路由。路由本身在每個基本方向(N,S,E,W)的輸入處都包含兩個元素的FIFO,以及在網絡擁塞情況下用作臨時存儲的控制處理器。他們使用循環仲裁(round-robin arbitration)來確定數據包的優先級,從而可以在每個周期對每個方向進行仲裁(arbitrate )。他們使用尺寸順序的布線(在一個方向上減小偏移,然後再移動到另一方向)。通過簡單的設計,他們可以將整個路由實現為單級設計,而節點之間沒有管道寄存器。換句話說,每跳只需要一個周期。例如,任何相鄰的核心存儲區的延遲只有3個周期-轉到本地路由,跳到相鄰路由,最後去鄰居的記憶空間,路由器與內核位於相同的時鐘域,這意味著它們還可以在高達1.4 GHz的頻率下運行。

有兩個網絡-數據網絡和信用計數器網絡。路由器使用源控制的credit counter,每次將遠程存儲包注入網絡時,該計數器都會遞減。credit 通過credit counter網絡返回,該計數器使用與上述數據相同的體系結構,但只有9位,因為它只包含節點地址。

那麼,將這些加起來又是什麼呢?Celerity團隊報告了在500 mH到1.4 GHz的頻率範圍內在600 mV至980 mV的正確操作(在CoreMark上)。我們相信Celerity現在是時鐘頻率第二高的大學晶片,僅次於Kilocore(值得指出的是,由於封裝方面的限制,Kiloecore只能支持其1000個內核中的160個)。在1.4 GHz時,整個網格的最大計算能力為694.4 INT32 GOPS。他們以每秒Giga-RISC-V指令(GRVIS)而不是GOPS報告其數字,以便強調一個事實,即這些指令是完整的RISC-V指令,而不僅僅是整數運算。請注意,由於Vanilla-5內核是RV32IM,它們支持RISC-V整數和乘法擴展,但不支持浮點運算,因此所有AI工作負載都必須進行量化。由於將節點互連的路由與核心位於相同的時鐘域,每個路由每個周期支持5個flit,因此每個節點的總聚合帶寬為748 Gbps,總聚合網絡帶寬為371 Tb / s。

令人遺憾的是,Celerity團隊沒有報告任何與AI相關的常見基準測試結果。相反,他們選擇使用CoreMark,它們達到580.25 CoreMarks / MHz,總得分為812,350。在過去的幾年中,CoreMark一直是RISC-V社區的首選比較基準。但CoreMark的問題在於,它通常會為簡單的有序設計產生令人難以置信的樂觀分數,這些分數似乎可以與經過良好調整的現代無序設計很好地競爭,而實際工作負載卻表現出截然不同的結果。鑒於此晶片的前提是生產高度靈活的AI加速器,我們希望鼓勵Celerity團隊提供更有意義的結果,例如正式提交MLPerf。

我們現在可在Celerity網站上訪問Celerity的開源RTL 。

*免責聲明:本文由作者原創。文章內容系作者個人觀點,半導體行業觀察轉載僅為了傳達一種不同的觀點,不代表半導體行業觀察對該觀點讚同或支持,如果有任何異議,歡迎聯繫半導體行業觀察。

今天是《半導體行業觀察》為您分享的第2188期內容,歡迎關注

關鍵字: