千核能擁有怎樣能力走近RISC-V超大規(guī)模人工智能芯片_第1頁
千核能擁有怎樣能力走近RISC-V超大規(guī)模人工智能芯片_第2頁
千核能擁有怎樣能力走近RISC-V超大規(guī)模人工智能芯片_第3頁
千核能擁有怎樣能力走近RISC-V超大規(guī)模人工智能芯片_第4頁
千核能擁有怎樣能力走近RISC-V超大規(guī)模人工智能芯片_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    千核能擁有怎樣能力走近risc-v超大規(guī)模人工智能芯片    張平risc-v近年來的發(fā)展勢(shì)頭不錯(cuò),其開放、免費(fèi)的特性吸引了大批企業(yè)、研究人員的關(guān)注,采用risc-v架構(gòu)的產(chǎn)品也逐漸向各個(gè)方面延伸。2020年底,一家名為esperanto的公司公布了一款采用risc-v架構(gòu)的超大規(guī)模高性能al芯片,由于其獨(dú)特的設(shè)計(jì)和理念,在發(fā)布后就引發(fā)了業(yè)內(nèi)關(guān)注。不過當(dāng)時(shí)并未公布太多信息,直到近期,esperanto才披露了這款產(chǎn)品在架構(gòu)、設(shè)計(jì)以及運(yùn)行方面的詳細(xì)信息,值得一看。目前ai芯片是業(yè)內(nèi)熱門的發(fā)展方向,考慮到未來ai計(jì)算廣闊的市場(chǎng)前進(jìn),大量企業(yè)都希望參與

2、其中。目前設(shè)計(jì)ai芯片的方法多種多樣,比如采用x86架構(gòu)、arm架構(gòu)組建cpu來實(shí)現(xiàn),或者采用自有指令集設(shè)計(jì),這些不同的方法擁有各自的優(yōu)勢(shì)和不足。esperanto作為一家初創(chuàng)公司,選擇了risc-v指令集來制造一款全新的ai芯片。不僅如此,這款產(chǎn)品還包含了高達(dá)238億晶體管,以及超過1000個(gè)核心,規(guī)模之大令人咋舌。et-soc-1處理器總覽esperanto推出的首款處理器全稱是“esperanto technologies supercomputer-on-chip 1”,縮寫為“et-soc-l”。它定位一款推理加速器,而不是常見的訓(xùn)練加速器。一般來說,神經(jīng)網(wǎng)絡(luò)需要在訓(xùn)練完成建立模型后

3、,才交由推理加速器進(jìn)行推理。在訓(xùn)練階段需要大量的原始數(shù)據(jù)、極高的計(jì)算能力和較長的訓(xùn)練時(shí)間。推理時(shí)間則相對(duì)短一些,它使用訓(xùn)練模型來完成,因此對(duì)計(jì)算能力要求不高,但是對(duì)延遲很敏感。因此在設(shè)計(jì)方面,et-soc-1需要進(jìn)行針對(duì)性優(yōu)化。et-soc-1包含了2個(gè)類型的核心,一個(gè)被稱為et-minion,是一種順序執(zhí)行的小核心,用于處理矩陣乘法、自定義張量計(jì)算等。另一個(gè)被稱為et-maxion,是一個(gè)較復(fù)雜的大內(nèi)核,能夠運(yùn)行l(wèi)inux操作系統(tǒng)。在et-soc-1中,et-maxion被用作控制cpu,et-minion則被用作并行數(shù)據(jù)處理使用。et-soc-1設(shè)計(jì)了一個(gè)6×6網(wǎng)格,一共36個(gè)區(qū)

4、塊,其中2個(gè)被用作控制處理器集群和pcle控制器,其余34個(gè)全部布局了被稱作minion shires的et-minion處理器集群。1個(gè)minion shires中包含了總計(jì)32個(gè),分為4組的et-minion核心,這樣它一共擁有1088個(gè)(34×32) et-minion核心,以及這些核心所擁有的總計(jì)136mb l2緩存。實(shí)際上et-soc-1中還有1個(gè)額外的et-minion核心用作服務(wù)處理器。在控制中心方面,4個(gè)et-maxion和4mb l2被集成在一個(gè)區(qū)塊上,用于運(yùn)行操作系統(tǒng)等。此外,et-soc-1面向超大規(guī)模的數(shù)據(jù)中心市場(chǎng),這意味著它也可以和高性能獨(dú)立處理器一起工作。

5、對(duì)一些邊緣應(yīng)用而言,et-soc-1配合高性能獨(dú)立處理器可以發(fā)揮更大的作用。加總起來,et-soc-1擁有1093個(gè)核心。et-soc-1采用了臺(tái)積電7nm工藝,擁有238億晶體管。雖無芯片面積和封裝尺寸的信息,但根據(jù)同類產(chǎn)品進(jìn)行估計(jì),et-soc-1的封裝面積可能在350mm2以上,算得上中大型處理器。單個(gè)et-minion可以在1ghz頻率下實(shí)現(xiàn)int8精度的1280ps/周期或者128gops算力。用此數(shù)據(jù)計(jì)算的話,在1ghz頻率下,所有1088個(gè)et-minion核心可以輸出最多139.3 tops算力(int8)。隨著頻率提升,et-soc-1的算力也會(huì)增長,比如在1.5ghz下,e

6、t-soc-1的算力會(huì)提升至208.9tops (int8)。et-soc-1支持fp16(半精度)或者fp32的計(jì)算,但算力相比int8低不少。在1ghz時(shí),et-soc-1的fp16算力為35tflops,在1.5ghz時(shí)會(huì)提升至52tflops。et-soc-1使用低功耗的lpddr4接口進(jìn)行數(shù)據(jù)通信和供電,最多支持32gb容量的dram,最大帶寬可達(dá)137gb/s。et-soc-1還可以通過pcie 4.0x8接口和外界連接。et-soc-1的典型工作功耗大約在20w,也可以低于它。這么低的功耗是由于芯片的運(yùn)行頻率非常低,只有1ghz1.5ghz,且整體規(guī)模不大,這使得et-soc-1

7、符合ocpm.2加速器模塊的規(guī)格。不過未來et-soc-1還可能會(huì)衍生出支持pcie接口,具備更高規(guī)格和功耗的產(chǎn)品。深入et-soc-1核心架構(gòu)接下來讓我們深入et-soc-1內(nèi)部,去看看這款risc-v架構(gòu)的處理器到底有哪些獨(dú)特之處。首先是負(fù)責(zé)控制的et-maxion核心的架構(gòu)設(shè)計(jì)。et-maxion:性能堪比cortex-a72的控制核心et-maxion是一個(gè)典型的高性能大核心。和之前提到et-minion運(yùn)行在大約1ghz1.5ghz不同的是,et-maxion運(yùn)行的頻率要高一些,超過了2ghz。從設(shè)計(jì)上來看,et-maxion實(shí)際上是uc berkeley out-of-order

8、machine (boom)v2 cpu(簡(jiǎn)寫為risc-v boom)的一個(gè)分支。它是采用chisel硬件構(gòu)建語言編寫的一個(gè)可合成和可參數(shù)化的開源rv64gc risc-v核心。由于它是開源的,所以廠商可以在開源許可文件的約束下自由使用它,一般人們會(huì)利用rsic-v boom構(gòu)建高性能處理器。esperanto正是利用risc-v boom構(gòu)建了et-maxion的基本架構(gòu)。相比risc-v boom,et-maxion在各方面都進(jìn)行了大刀闊斧的改進(jìn),比如et-maxion更寬、更長、規(guī)模也更大,前端經(jīng)過了重新設(shè)計(jì),執(zhí)行單元也進(jìn)行了重制,并加入了分支預(yù)測(cè)器和預(yù)取器,還帶來了新的底層緩存和支持

9、ecc的tlb。由于et-maxion要面向商業(yè)用戶,因此還增加了商業(yè)級(jí)別芯片的調(diào)試和性能監(jiān)控等功能。在spec2006的iso頻率上et-maxion的性能略遜于cortex-a72,但高于cortex-a57。僅從性能來看,et-maxion在risc-v架構(gòu)下排名靠前,僅弱于sifive的p550內(nèi)核,后者的ipc顯著高于et-maxion以及cortex-a72,spec2006測(cè)試成績大約有8.65/ghz。et-maxion是典型的10級(jí)流水線的亂序執(zhí)行架構(gòu)。它的前端是一個(gè)4發(fā)射結(jié)構(gòu),每周期能夠獲取16b的數(shù)據(jù),解碼后以每周期4條指令的速度將其分派到后端執(zhí)行部分。整個(gè)架構(gòu)也可以從具

10、有奇偶校驗(yàn)和ecc功能的32kb分塊指令緩存中獲取指令。esperanto花了相當(dāng)大的精力為它設(shè)計(jì)了先進(jìn)的條件預(yù)測(cè)器和擁有2k條目深度,支持btb、基于路徑的間接預(yù)測(cè)器。最終,et-maxion的分支預(yù)測(cè)器實(shí)現(xiàn)了2級(jí)預(yù)測(cè):高速度且單周期運(yùn)行、基于btb的預(yù)測(cè)執(zhí)行得到結(jié)果后,輸入第二級(jí)多周期、高精度分支預(yù)測(cè)器中進(jìn)一步處理,后者的結(jié)果可能會(huì)覆蓋前者,也可能不會(huì)。et-maxion的前端每周期最多可以向調(diào)度部分發(fā)送4個(gè)指令。et-maxion使用的是分布式調(diào)度器,總?cè)萘繛?4個(gè)條目。et-maxion的重命名/分配/提交重排序緩沖區(qū)的深度為128條目。前端解碼后的微指令在這里暫存并進(jìn)行排序、重命名或

11、者分配處理,等待進(jìn)入后續(xù)的執(zhí)行單元。執(zhí)行單元的分派部分設(shè)計(jì)非常獨(dú)特,由1個(gè)128條目的整數(shù)通用寄存器文件和1個(gè)64條目的浮點(diǎn)寄存器實(shí)現(xiàn),整個(gè)分派部分每次可以輸出5條指令。這5條指令指向后部的4個(gè)調(diào)度隊(duì)列,每個(gè)調(diào)度隊(duì)列都是16深度的。其中,fpu執(zhí)行單元擁有1個(gè)調(diào)度隊(duì)列,剩余整數(shù)部分的復(fù)雜alu、2個(gè)簡(jiǎn)單alu和agu各擁有1個(gè)調(diào)度隊(duì)列。值得注意的是,2個(gè)簡(jiǎn)單alu共享一個(gè)調(diào)度器,另外,復(fù)雜alu還加入了分支預(yù)測(cè)單元,能夠處理部分分支預(yù)測(cè)操作。所有4個(gè)調(diào)度隊(duì)列每周期可以處理5個(gè)微指令輸出的操作。浮點(diǎn)單元設(shè)計(jì)為64bit寬度,能夠支持risc-v 32和雙精度的risc-v 64浮點(diǎn)擴(kuò)展。espe

12、ranto本來計(jì)劃選擇自定義指令集,但是考慮到通用性、簡(jiǎn)單性和市場(chǎng)接受度等因素最終選擇了risc-v。esperanto希望將更多精力花在性能和架構(gòu)方面的優(yōu)化上,而不是去解決isa的問題。esperanto展示了et-maxion的平面圖,其中幾乎1/3的面積用在緩存和分支預(yù)測(cè)上。另外占據(jù)較大面積的部件包括硬件預(yù)取器hpf、fpu浮點(diǎn)單元、lsu、000亂序引擎等。et-maxion的硬件預(yù)取器選用了更慢但是更準(zhǔn)確的版本,反而可以提高性能,將其放置在芯片的頂部以及關(guān)鍵路徑的外部,可以簡(jiǎn)化接線。et-minion:專精于大規(guī)模計(jì)算的小核心esperanto設(shè)計(jì)了用于大規(guī)模并行計(jì)算的專用小核心et

13、-minion。它和et-maxion存在巨大差異,雖然也是一個(gè)64位的risc-v核心,但采用的是順序執(zhí)行架構(gòu)。et-minion由于面向吞吐量,因此也采用了多線程的方案,它具有2個(gè)可以在停頓時(shí)交換的線程。et-minion采用標(biāo)量流水線設(shè)計(jì),每個(gè)周期獲取、解碼和發(fā)出一條指令,然后進(jìn)行處理并輸出結(jié)果。et-minion的主要目的是加速推理計(jì)算,針對(duì)這個(gè)類型的計(jì)算,esperanto為其設(shè)計(jì)了全新的執(zhí)行引擎。et-minion的后端為矢量密集型,為了節(jié)約資源給矢量計(jì)算,et-minion只設(shè)計(jì)了一個(gè)執(zhí)行單元來執(zhí)行risc-v架構(gòu)所需的所有必要操作。其余部分包括2個(gè)執(zhí)行管道,1個(gè)256bit的浮

14、點(diǎn)矢量單元和1個(gè)512bit的整數(shù)矢量單元。伴隨著這些矢量單元的是2個(gè)寄存器,1個(gè)32條目的256bit浮點(diǎn)寄存器和1個(gè)32條目、256bit的整數(shù)寄存器。寄存器對(duì)每個(gè)線程來說都是重復(fù)的,這意味著總計(jì)有2個(gè)“整數(shù)寄存器+浮點(diǎn)寄存器”組,每一組分別服務(wù)于一個(gè)線程。浮點(diǎn)矢量單元又可以細(xì)分為8×32的fma,每周期可以提供單精度16flops的性能,或者每周期半精度32flops的性能。整數(shù)矢量單元的寬度是浮點(diǎn)單元的2倍,又被細(xì)分為16×32 tima,每周期能夠執(zhí)行128個(gè)int8操作。在工作模式上,fp矢量單元從fp矢量寄存器中讀入數(shù)據(jù),但是整數(shù)矢量單元需要從fp矢量寄存器文

15、件中獲得一半的矢量信息(256bit),再和私有整數(shù)矢量寄存器中獲得的信息組合起來,才能實(shí)現(xiàn)整個(gè)512bit寬度的寄存器文件。從整個(gè)架構(gòu)設(shè)計(jì)來看,esperanto在et-minion中加入了如此強(qiáng)大的浮點(diǎn)計(jì)算能力,這還是非常少見的。因?yàn)榻^大部分類似的產(chǎn)品都只提供int8操作的能力。雖然對(duì)現(xiàn)有的計(jì)算來說,int8其實(shí)很多場(chǎng)合下已經(jīng)足夠使用了,但是對(duì)那些需要fp16或者fp32的工作負(fù)載來說,et-minion的確更具優(yōu)勢(shì)。et-minion包含一個(gè)矢量超越單元。這個(gè)單元可以執(zhí)行超越函數(shù),比如各類三角函數(shù)、指數(shù)、對(duì)數(shù)的計(jì)算,以加速諸如激活函數(shù)等操作。這個(gè)超越單元的設(shè)計(jì)非常有趣,它基于rom進(jìn)行,

16、這有助于降低功耗。除了矢量單元外,et-minion還集成了一個(gè)矢量超越單元,可以執(zhí)行超越函數(shù),如各種三角函數(shù)、指數(shù)和對(duì)數(shù),以加快激活函數(shù)等。另外,esperanto在矢量單元的設(shè)計(jì)上還做了一些獨(dú)特的操作,除了標(biāo)準(zhǔn)的risc-v的矢量指令外,esperanto還加入了2條獨(dú)特的矢量擴(kuò)展指令,一個(gè)是多周期張量指令,另一個(gè)是伴隨前者的矢量超越指令。實(shí)際上,這兩條指令對(duì)ai相關(guān)的計(jì)算是非常重要的,risc-v和其他指令一樣,都對(duì)ai計(jì)算這種新生事物缺乏支持,原始的指令集也沒有集成相關(guān)加速的指令,因此廠商在這里添加了自有的指令集,這也是可以理解的。實(shí)際上,risc-c基金會(huì)也直在做類似的操作,比如將自

17、定義擴(kuò)展植入規(guī)范中,以便更多的用戶使用。不過這里存在一個(gè)知識(shí)產(chǎn)權(quán)的問題,esperanto可以宣稱這個(gè)指令集是自己的知識(shí)產(chǎn)權(quán)以阻止第三方使用,但是現(xiàn)在esperanto沒有這樣做,目前尚不清楚esperanto對(duì)這些私有的指令集的處理方法,如果能夠開放給業(yè)界使用的話,肯定能在很大程度上推進(jìn)整個(gè)產(chǎn)業(yè)的發(fā)展。具體到這兩個(gè)指令集來看的話,多周期張量指令集的特點(diǎn)是允許內(nèi)核讀取一條指令,通過引入張量定序器狀態(tài)機(jī)(tensor sequencer),可以在100多個(gè)甚至1000多個(gè)周期內(nèi)重復(fù)操作。和大多數(shù)定序器一樣,et-minion為整個(gè)前端和其他每一個(gè)在張量操作發(fā)布和執(zhí)行時(shí)沒有被利用的單元設(shè)計(jì)了門控操

18、作。這使得內(nèi)核能夠進(jìn)一步削減功耗。另外還有一點(diǎn)需要提及。et-minion的物理設(shè)計(jì)為了低功耗做出了很多優(yōu)化。比如為了提高低電壓下的頻率,et-minion的流水線被設(shè)計(jì)為較少的級(jí)數(shù)。另外,esperanto還設(shè)計(jì)了自己定制的sram而不是臺(tái)積電的標(biāo)準(zhǔn)sram。這種定制單元雖然在物理實(shí)現(xiàn)上要比臺(tái)積電的標(biāo)準(zhǔn)單元更大,但是可以在更低的電壓下穩(wěn)定運(yùn)行,甚至遠(yuǎn)遠(yuǎn)低于額定電壓。這里的額定電壓可能在0.75v左右,但是esperanto的sram可以在0.4v下穩(wěn)定運(yùn)行,這又可以節(jié)省大部分功耗。從核心到區(qū)塊再到片區(qū):et-soc-1的實(shí)現(xiàn)方式et-soc-1內(nèi)擁有大量的核心,那么他們是如何集成和工作的呢?

19、在這里,esperanto帶來了區(qū)塊和片區(qū)的概念。先來看看區(qū)塊。以1個(gè)et-minion為基本單位的話,8個(gè)et-minion可以被看作是一個(gè)區(qū)塊。在一個(gè)區(qū)塊內(nèi),每個(gè)內(nèi)核會(huì)競(jìng)爭(zhēng)性的共享32kb指令緩存。每個(gè)周期,一個(gè)緩存行數(shù)據(jù)被發(fā)送至2個(gè)內(nèi)核。換句話說,指令緩存在每個(gè)周期內(nèi)輪詢一堆內(nèi)核,將64b的16條指令發(fā)送到2個(gè)獨(dú)立的內(nèi)核,內(nèi)核對(duì)這些信息進(jìn)行緩沖存儲(chǔ),允許他們?cè)谥噶罹彺孓D(zhuǎn)移到其他內(nèi)核的時(shí)候繼續(xù)運(yùn)行。在區(qū)塊之上是片區(qū)。4個(gè)區(qū)塊結(jié)合成為1個(gè)片區(qū),1個(gè)片區(qū)擁有32個(gè)核心。每個(gè)區(qū)塊通過交叉開關(guān)連接到周圍的4組l2緩存。1個(gè)l2緩存包含4個(gè)1mb的sram組,可以通過軟件配置其為高速緩存或者暫存器訪存。在暫存器的配置下,整個(gè)緩存將被視作一個(gè)很大的地址空間,軟件可以使用它精確地訪問數(shù)據(jù)。有趣的是,默認(rèn)情況下,片區(qū)的l2緩存都是私有的,當(dāng)然也可以配置為跨越整個(gè)芯片的最后一級(jí)緩存,所有這些功能都以每個(gè)緩存bank的粒度進(jìn)行配置。比如,一個(gè)緩存bank可以被保留為暫存器,另一個(gè)可以用于1mb的片區(qū)lcc,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論