0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

昇騰AI處理器:全面解密DaVinci架構(gòu)

sakobpqhz ? 來源:算力基建 ? 2023-03-30 10:46 ? 次閱讀

在達(dá)芬奇架構(gòu)下,控制單元為整個(gè)計(jì)算過程提供了指令控制,相當(dāng)于AI Core的司令部,負(fù)責(zé)整個(gè)AI Core的運(yùn)行,起到了至關(guān)重要的作用。 控制單元的主要組成部分為系統(tǒng)控制模塊、指令緩存、標(biāo)量指令處理隊(duì)列、指令發(fā)射模塊、矩陣運(yùn)算隊(duì)列、向量運(yùn)算隊(duì)列、存儲(chǔ)轉(zhuǎn)換隊(duì)列和事件同步模塊,如圖3-13中加粗所示。 在指令執(zhí)行過程中,可以提前預(yù)取后續(xù)指令,并一次讀入多條指令進(jìn)入緩存,提升指令執(zhí)行效率。

01 DaVinci架構(gòu)(總覽)

wKgaomQk-A2AbOBbAABtnjE4EB0869.png

不同于傳統(tǒng)的支持通用計(jì)算的CPUGPU,也不同于專用于某種特定算法的專用芯片ASIC,達(dá)芬奇架構(gòu)本質(zhì)上是為了適應(yīng)某個(gè)特定領(lǐng)域中的常見的應(yīng)用和算法,通常稱之為“特定域架構(gòu)(Domain Specific Architecture,DSA)”芯片。

昇騰AI芯片的計(jì)算核心主要由AI Core構(gòu)成,負(fù)責(zé)執(zhí)行標(biāo)量、向量和張量相關(guān)的計(jì)算密集型算子。 AI Core采用了達(dá)芬奇架構(gòu),其基本結(jié)構(gòu)如圖3-2所示,從控制上可以看成是一個(gè)相對(duì)簡化的現(xiàn)代微處理器的基本架構(gòu)。 它包括了三種基礎(chǔ)計(jì)算資源:矩陣計(jì)算單元(Cube Unit)、向量計(jì)算單元(Vector Unit)和標(biāo)量計(jì)算單元(Scalar Unit)。 這三種計(jì)算單元分別對(duì)應(yīng)了張量、向量和標(biāo)量三種常見的計(jì)算模式,在實(shí)際的計(jì)算過程中各司其職,形成了三條獨(dú)立的執(zhí)行流水線,在系統(tǒng)軟件的統(tǒng)一調(diào)度下互相配合達(dá)到優(yōu)化的計(jì)算效率。 此外在矩陣計(jì)算單元和向量計(jì)算單元內(nèi)部還提供了不同精度、不同類型的計(jì)算模式。 AI Core中的矩陣計(jì)算單元目前可以支持INT8、INT4和FP16的計(jì)算; 向量計(jì)算單元目前可以支持FP16和FP32的計(jì)算。

為了配合AI Core中數(shù)據(jù)的傳輸和搬運(yùn),圍繞著三種計(jì)算資源還分布式的設(shè)置了一系列的片上緩沖區(qū),比如用來放置整體圖像特征數(shù)據(jù)、網(wǎng)絡(luò)參數(shù)以及中間結(jié)果的輸入緩沖區(qū)(Input Buffer,IB)和輸出緩沖區(qū)(Output Buffer,OB),以及提供一些臨時(shí)變量的高速寄存器單元,這些寄存器單元位于各個(gè)計(jì)算單元中。 這些存儲(chǔ)資源的設(shè)計(jì)架構(gòu)和組織方式不盡相同,但目的都是為了更好的適應(yīng)不同計(jì)算模式下格式、精度和數(shù)據(jù)排布的需求。 這些存儲(chǔ)資源和相關(guān)聯(lián)的計(jì)算資源相連,或者和總線接口單元(Bus Interface Unit,BIU)相連從而可以獲得外部總線上的數(shù)據(jù)。

在AI Core中,輸入緩沖區(qū)之后設(shè)置了一個(gè)存儲(chǔ)轉(zhuǎn)換單元(Memory Transfer Unit,MTE)。 這是達(dá)芬奇架構(gòu)的特色之一,主要的目的是為了以極高的效率實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)換。 比如前面提到GPU要通過矩陣計(jì)算來實(shí)現(xiàn)卷積,首先要通過Im2Col的方法把輸入的網(wǎng)絡(luò)和特征數(shù)據(jù)重新以一定的格式排列起來。 這一步在GPU當(dāng)中是通過軟件來實(shí)現(xiàn)的,效率比較低下。 達(dá)芬奇架構(gòu)采用了一個(gè)專用的存儲(chǔ)轉(zhuǎn)換單元來完成這一過程,將這一步完全固化在硬件電路中,可以在很短的時(shí)間之內(nèi)完成整個(gè)轉(zhuǎn)置過程。 由于類似轉(zhuǎn)置的計(jì)算在深度神經(jīng)網(wǎng)絡(luò)中出現(xiàn)的極為頻繁,這樣定制化電路模塊的設(shè)計(jì)可以提升AI Core的執(zhí)行效率,從而能夠?qū)崿F(xiàn)不間斷的卷積計(jì)算。

AI Core中的控制單元主要包括系統(tǒng)控制模塊、標(biāo)量指令處理隊(duì)列、指令發(fā)射模塊、矩陣運(yùn)算隊(duì)列、向量運(yùn)算隊(duì)列、存儲(chǔ)轉(zhuǎn)換隊(duì)列和事件同步模塊。 系統(tǒng)控制模塊負(fù)責(zé)指揮和協(xié)調(diào)AI Core的整體運(yùn)行模式,配置參數(shù)和實(shí)現(xiàn)功耗控制等。

在AI Core中,存儲(chǔ)單元為各個(gè)計(jì)算單元提供轉(zhuǎn)置過并符合要求的數(shù)據(jù),計(jì)算單元返回運(yùn)算的結(jié)果給存儲(chǔ)單元,控制單元為計(jì)算單元和存儲(chǔ)單元提供指令控制,三者相互協(xié)調(diào)合作完成計(jì)算任務(wù)。

02 DaVinci架構(gòu)(控制單元)

wKgaomQk-A2AbmmCAADzF9YVODA277.png

在達(dá)芬奇架構(gòu)下,控制單元為整個(gè)計(jì)算過程提供了指令控制,相當(dāng)于AI Core的司令部,負(fù)責(zé)整個(gè)AI Core的運(yùn)行,起到了至關(guān)重要的作用。 控制單元的主要組成部分為系統(tǒng)控制模塊、指令緩存、標(biāo)量指令處理隊(duì)列、指令發(fā)射模塊、矩陣運(yùn)算隊(duì)列、向量運(yùn)算隊(duì)列、存儲(chǔ)轉(zhuǎn)換隊(duì)列和事件同步模塊,如圖3-13中加粗所示。

在指令執(zhí)行過程中,可以提前預(yù)取后續(xù)指令,并一次讀入多條指令進(jìn)入緩存,提升指令執(zhí)行效率。 多條指令從系統(tǒng)內(nèi)存通過總線接口進(jìn)入到AI Core的指令緩存中并等待后續(xù)硬件快速自動(dòng)解碼或運(yùn)算。 指令被解碼后便會(huì)被導(dǎo)入標(biāo)量隊(duì)列中,實(shí)現(xiàn)地址解碼與運(yùn)算控制。 這些指令包括矩陣計(jì)算指令、向量計(jì)算指令以及存儲(chǔ)轉(zhuǎn)換指令等。 在進(jìn)入指令發(fā)射模塊之前,所有指令都作為普通標(biāo)量指令被逐條順次處理。 標(biāo)量隊(duì)列將這些指令的地址和參數(shù)解碼配置好后,由指令發(fā)射模塊根據(jù)指令的類型分別發(fā)送到對(duì)應(yīng)的指令執(zhí)行隊(duì)列中,而標(biāo)量指令會(huì)駐留在標(biāo)量指令處理隊(duì)列中進(jìn)行后續(xù)執(zhí)行,如圖所示。

指令執(zhí)行隊(duì)列由矩陣運(yùn)算隊(duì)列、向量運(yùn)算隊(duì)列和存儲(chǔ)轉(zhuǎn)換隊(duì)列組成。 矩陣計(jì)算指令進(jìn)入矩陣運(yùn)算隊(duì)列,向量計(jì)算指令進(jìn)入向量運(yùn)算隊(duì),存儲(chǔ)轉(zhuǎn)換指令進(jìn)入存儲(chǔ)轉(zhuǎn)換隊(duì)列,同一個(gè)指令執(zhí)行隊(duì)列中的指令是按照進(jìn)入隊(duì)列的順序進(jìn)行執(zhí)行的,不同指令執(zhí)行隊(duì)列之間可以并行執(zhí)行,通過多個(gè)指令執(zhí)行隊(duì)列的并行執(zhí)行可以提升整體執(zhí)行效率。

當(dāng)指令執(zhí)行隊(duì)列中的指令到達(dá)隊(duì)列頭部時(shí)就進(jìn)入真正的指令執(zhí)行環(huán)節(jié),并被分發(fā)到相應(yīng)的執(zhí)行單元中,如矩陣計(jì)算指令會(huì)發(fā)送到矩陣計(jì)算單元,存儲(chǔ)轉(zhuǎn)換指令會(huì)發(fā)送到存儲(chǔ)轉(zhuǎn)換單元。 不同的執(zhí)行單元可以并行的按照指令來進(jìn)行計(jì)算或處理數(shù)據(jù),同一個(gè)指令隊(duì)列中指令執(zhí)行的流程被稱作為指令流水線。

對(duì)于指令流水線之間可能出現(xiàn)的數(shù)據(jù)依賴,達(dá)芬奇架構(gòu)的解決方案是通過設(shè)置事件同步模塊來統(tǒng)一協(xié)調(diào)各個(gè)流水線的進(jìn)程。 事件同步模塊時(shí)刻控制每條流水線的執(zhí)行狀態(tài),并分析不同流水線的依賴關(guān)系,從而解決數(shù)據(jù)依賴和同步的問題。 比如矩陣運(yùn)算隊(duì)列的當(dāng)前指令需要依賴向量計(jì)算單元的結(jié)果,在執(zhí)行過程中,事件同步控制模塊會(huì)暫停矩陣運(yùn)算隊(duì)列執(zhí)行流程,要求其等待向量計(jì)算單元的結(jié)果。 而當(dāng)向量計(jì)算單元完成計(jì)算并輸出結(jié)果后,此時(shí)事件同步模塊則通知矩陣運(yùn)算隊(duì)列需要的數(shù)據(jù)已經(jīng)準(zhǔn)備好,可以繼續(xù)執(zhí)行。 在事件同步模塊準(zhǔn)許放行之后矩陣運(yùn)算隊(duì)列才會(huì)發(fā)射當(dāng)前指令。 在達(dá)芬奇架構(gòu)中,無論是流水線內(nèi)部的同步還是流水線之間的同步,都是通過事件同步模塊利用軟件控制來實(shí)現(xiàn)的。

在控制單元中還存在一個(gè)系統(tǒng)控制模塊。 在AI Core運(yùn)行之前,需要外部的任務(wù)調(diào)度器來控制和初始化AI Core的各種配置接口,如指令信息、參數(shù)信息以及任務(wù)塊信息等。 這里的任務(wù)塊是指AI Core中的最小的計(jì)算任務(wù)粒度。 在配置完成后,系統(tǒng)控制模塊會(huì)控制任務(wù)塊的執(zhí)行進(jìn)程,同時(shí)在任務(wù)塊執(zhí)行完成后,系統(tǒng)控制模塊會(huì)進(jìn)行中斷處理和狀態(tài)申報(bào)。 如果在執(zhí)行過程中出現(xiàn)了錯(cuò)誤,系統(tǒng)控制模塊將會(huì)把執(zhí)行的錯(cuò)誤狀態(tài)報(bào)告給任務(wù)調(diào)度器,進(jìn)而反饋當(dāng)前AI Core的狀態(tài)信息給整個(gè)昇騰AI芯片系統(tǒng)。

03 DaVinci架構(gòu)(計(jì)算單元)

計(jì)算單元是AI Core中提供強(qiáng)大算力的核心單元,相當(dāng)于AI Core的主力軍。 AI Core計(jì)算單元主要包含矩陣計(jì)算單元、向量計(jì)算單元、標(biāo)量計(jì)算單元和累加器,矩陣計(jì)算單元和累加器主要完成與矩陣相關(guān)的運(yùn)算,向量計(jì)算單元負(fù)責(zé)執(zhí)行向量運(yùn)算,標(biāo)量計(jì)算單元主要負(fù)責(zé)各類型的標(biāo)量數(shù)據(jù)運(yùn)算和程序的流程控制。

wKgaomQk-A2ALCkYAAEFWmNFSjw231.png

wKgZomQk-A2AduAzAAMqeggCNoI480.png

1、矩陣計(jì)算單元

wKgZomQk-A2AI6FZAABaME5FtYk788.png

上圖表示一個(gè)矩陣A和另一個(gè)矩陣B之間的乘法運(yùn)算C=A*B,其中M表示矩陣A的行數(shù),K表示矩陣A的列數(shù)以及矩陣B的行數(shù),N表示矩陣B的列數(shù)。 這個(gè)矩陣乘法在CPU如何實(shí)現(xiàn)?

wKgaomQk-A2ANxJ7AAALCd2riPI867.png

該程序需要用到3個(gè)循環(huán)進(jìn)行一次完整的矩陣相乘計(jì)算,如果在一個(gè)單發(fā)射的CPU上執(zhí)行至少需要M?K?N個(gè)時(shí)鐘周期才能完成,當(dāng)矩陣非常龐大時(shí)執(zhí)行過程極為耗時(shí)。

由于常見的深度神經(jīng)網(wǎng)絡(luò)算法中大量的使用了矩陣計(jì)算,達(dá)芬奇架構(gòu)中特意對(duì)矩陣計(jì)算進(jìn)行了深度的優(yōu)化并定制了相應(yīng)的矩陣計(jì)算單元來支持高吞吐量的矩陣處理。 通過精巧設(shè)計(jì)的定制電路和極致的后端優(yōu)化手段,矩陣計(jì)算單元可以用一條指令完成兩個(gè)16*16矩陣的相乘運(yùn)算(標(biāo)記為16^3,也是Cube這一名稱的來歷),等同于在極短時(shí)間內(nèi)進(jìn)行了16^3=4096個(gè)乘加運(yùn)算,并且可以實(shí)現(xiàn)FP16的運(yùn)算精度。 如圖3-7所示,矩陣計(jì)算單元在完成A?B=C的矩陣運(yùn)算時(shí),會(huì)事先將矩陣A按行存放在輸入緩沖區(qū)中,同時(shí)將矩陣B按列存放在輸入緩沖區(qū)中,通過矩陣計(jì)算單元計(jì)算后得到的結(jié)果矩陣C按行存放在輸出緩沖區(qū)中。 在矩陣相乘運(yùn)算中,如圖3-7所示,矩陣C的第一元素由矩陣A的第一行的16個(gè)元素和矩陣B的第一列的16個(gè)元素由矩陣計(jì)算單元子電路進(jìn)行16次乘法和15次加法運(yùn)算得出。 矩陣計(jì)算單元中存在256個(gè)矩陣計(jì)算子電路組成,可以由一條指令并行完成矩陣C的256個(gè)元素計(jì)算。

wKgZomQk-A2ATTgOAAIlCSwDwP8615.png

2、向量計(jì)算單元

AI Core中的向量計(jì)算單元主要負(fù)責(zé)完成和向量相關(guān)的運(yùn)算,能夠?qū)崿F(xiàn)向量和標(biāo)量,或雙向量之間的計(jì)算,功能覆蓋各種基本和多種定制的計(jì)算類型,主要包括FP32、FP16、INT32和INT8等數(shù)據(jù)類型的計(jì)算。

如上圖所示,向量計(jì)算單元可以快速完成兩個(gè)FP16類型的向量相加或者相乘。 向量計(jì)算單元的源操作數(shù)和目的操作數(shù)通常都保存在輸出緩沖器中。 對(duì)向量計(jì)算單元而言,輸入的數(shù)據(jù)可以不連續(xù),這取決于輸入數(shù)據(jù)的尋址模式。

wKgZomQk-A2ARLMjAACXKyHpFHE019.png

向量計(jì)算單元可以作為矩陣計(jì)算單元和輸出緩沖區(qū)之間的數(shù)據(jù)通路和橋梁。 矩陣運(yùn)算完成后的結(jié)果在向輸出緩沖區(qū)傳遞的過程中,向量計(jì)算單元可以順便完成在深度神經(jīng)網(wǎng)絡(luò)尤其是卷積神經(jīng)網(wǎng)絡(luò)計(jì)算中常用的ReLU激活函數(shù)、池化等功能并實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)換。 經(jīng)過向量計(jì)算單元處理后的數(shù)據(jù)可以被寫回到輸出緩沖區(qū)或者矩陣計(jì)算單元中,以等待下一次運(yùn)算。 所有的這些操作都可以通過軟件配合相應(yīng)的向量單元指令來實(shí)現(xiàn)。 向量計(jì)算單元提供了豐富的計(jì)算功能,也可以實(shí)現(xiàn)很多特殊的計(jì)算函數(shù),從而和矩陣計(jì)算單元形成功能互補(bǔ),全面完善了AI Core對(duì)非矩陣類型數(shù)據(jù)計(jì)算的能力。

3、標(biāo)量計(jì)算單元

標(biāo)量計(jì)算單元負(fù)責(zé)完成AI Core中與標(biāo)量相關(guān)的運(yùn)算。 它相當(dāng)于一個(gè)微型CPU,控制整個(gè)AI Core的運(yùn)行。 標(biāo)量計(jì)算單元可以對(duì)程序中的循環(huán)進(jìn)行控制,可以實(shí)現(xiàn)分支判斷,其結(jié)果可以通過在事件同步模塊中插入同步符的方式來控制AI Core中其它功能性單元的執(zhí)行流水。 它還為矩陣計(jì)算單元或向量計(jì)算單元提供數(shù)據(jù)地址和相關(guān)參數(shù)的計(jì)算,并且能夠?qū)崿F(xiàn)基本的算術(shù)運(yùn)算。 其它復(fù)雜度較高的標(biāo)量運(yùn)算則由專門的AI CPU通過算子完成。

在標(biāo)量計(jì)算單元周圍配備了多個(gè)通用寄存器(General Purpose Register,GPR)和專用寄存器(Special Purpose Register,SPR)。 這些通用寄存器可以用于變量或地址的寄存,為算術(shù)邏輯運(yùn)算提供源操作數(shù)和存儲(chǔ)中間計(jì)算結(jié)果。 專用寄存器的設(shè)計(jì)是為了支持指令集中一些指令的特殊功能,一般不可以直接訪問,只有部分可以通過指令讀寫。

AI Core中具有代表性的專用寄存器包括Core ID(用于標(biāo)識(shí)不同的AI Core),VA(向量地址寄存器)以及STATUS(AI Core運(yùn)行狀態(tài)寄存器)等。 軟件可以通過監(jiān)視這些專用寄存器來控制和改變AI Core的運(yùn)行狀態(tài)和模式。

04 DaVinci架構(gòu)(存儲(chǔ)系統(tǒng))

AI Core的片上存儲(chǔ)單元和相應(yīng)的數(shù)據(jù)通路構(gòu)成了存儲(chǔ)系統(tǒng)。 眾所周知,幾乎所有的深度學(xué)習(xí)算法都是數(shù)據(jù)密集型的應(yīng)用。 對(duì)于昇騰AI芯片來說,合理設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)和傳輸結(jié)構(gòu)對(duì)于最終系統(tǒng)運(yùn)行的性能至關(guān)重要。 不合理的設(shè)計(jì)往往成為性能瓶頸,從而白白浪費(fèi)了片上海量的計(jì)算資源。 AI Core通過各種類型分布式緩沖區(qū)之間的相互配合,為深度神經(jīng)網(wǎng)絡(luò)計(jì)算提供了大容量和及時(shí)的數(shù)據(jù)供應(yīng),為整體計(jì)算性能消除了數(shù)據(jù)流傳輸?shù)钠款i,從而支撐了深度學(xué)習(xí)計(jì)算中所需要的大規(guī)模、高并發(fā)數(shù)據(jù)的快速有效提取和傳輸。

1、存儲(chǔ)單元

芯片中的計(jì)算資源要想發(fā)揮強(qiáng)勁算力,必要條件是保證輸入數(shù)據(jù)能夠及時(shí)準(zhǔn)確的出現(xiàn)在計(jì)算單元里。 達(dá)芬奇架構(gòu)通過精心設(shè)計(jì)的存儲(chǔ)單元為計(jì)算資源保證了數(shù)據(jù)的供應(yīng),相當(dāng)于AI Core中的后勤系統(tǒng)。 AI Core中的存儲(chǔ)單元由存儲(chǔ)控制單元、緩沖區(qū)和寄存器組成,如圖3-11中的加粗顯示。 存儲(chǔ)控制單元通過總線接口可以直接訪問AI Core之外的更低層級(jí)的緩存,并且也可以直通到DDR或HBM從而可以直接訪問內(nèi)存。 存儲(chǔ)控制單元中還設(shè)置了存儲(chǔ)轉(zhuǎn)換單元,其目的是將輸入數(shù)據(jù)轉(zhuǎn)換成AI Core中各類型計(jì)算單元所兼容的數(shù)據(jù)格式。 緩沖區(qū)包括了用于暫存原始圖像特征數(shù)據(jù)的輸入緩沖區(qū),以及處于中心的輸出緩沖區(qū)來暫存各種形式的中間數(shù)據(jù)和輸出數(shù)據(jù)。 AI Core中的各類寄存器資源主要是標(biāo)量計(jì)算單元在使用。

所有的緩沖區(qū)和寄存器的讀寫都可以通過底層軟件顯式的控制,有經(jīng)驗(yàn)的程序員可以通過巧妙的編程方式來防止存儲(chǔ)單元中出現(xiàn)讀寫沖突而影響流水線的進(jìn)程。 對(duì)于類似卷積和矩陣這樣規(guī)律性強(qiáng)的計(jì)算模式,高度優(yōu)化的程序可以實(shí)現(xiàn)全程無阻塞的流水線執(zhí)行。

wKgZomQk-A2AOmtzAADp7jnuT0E449.png

上圖中的總線接口單元作為AI Core的“大門”,是一個(gè)與系統(tǒng)總線交互的窗口,并以此通向外部世界。 AI Core通過總線接口從外部L2緩沖區(qū)、DDR或HBM中讀取或者寫回?cái)?shù)據(jù)。 總線接口在這個(gè)過程中可以將AI Core內(nèi)部發(fā)出的讀寫請(qǐng)求轉(zhuǎn)換為符合總線要求的外部讀寫請(qǐng)求,并完成協(xié)議的交互和轉(zhuǎn)換等工作。

輸入數(shù)據(jù)從總線接口讀入后就會(huì)經(jīng)由存儲(chǔ)轉(zhuǎn)換單元進(jìn)行處理。 存儲(chǔ)轉(zhuǎn)換單元作為AI Core內(nèi)部數(shù)據(jù)通路的傳輸控制器,負(fù)責(zé)AI Core內(nèi)部數(shù)據(jù)在不同緩沖區(qū)之間的讀寫管理,以及完成一系列的格式轉(zhuǎn)換操作,如補(bǔ)零,Img2Col,轉(zhuǎn)置、解壓縮等。 存儲(chǔ)轉(zhuǎn)換單元還可以控制AI Core內(nèi)部的輸入緩沖區(qū),從而實(shí)現(xiàn)局部數(shù)據(jù)的緩存。

在深度神經(jīng)網(wǎng)絡(luò)計(jì)算中,由于輸入圖像特征數(shù)據(jù)通道眾多且數(shù)據(jù)量龐大,往往會(huì)采用輸入緩沖區(qū)來暫時(shí)保留需要頻繁重復(fù)使用的數(shù)據(jù),以達(dá)到節(jié)省功耗、提高性能的效果。 當(dāng)輸入緩沖區(qū)被用來暫存使用率較高的數(shù)據(jù)時(shí),就不需要每次通過總線接口到AI Core的外部讀取,從而在減少總線上數(shù)據(jù)訪問頻次的同時(shí)也降低了總線上產(chǎn)生擁堵的風(fēng)險(xiǎn)。 另外,當(dāng)存儲(chǔ)轉(zhuǎn)換單元進(jìn)行數(shù)據(jù)的格式轉(zhuǎn)換操作時(shí),會(huì)產(chǎn)生巨大的帶寬需求,達(dá)芬奇架構(gòu)要求源數(shù)據(jù)必須被存放于輸入緩沖區(qū)中,才能夠進(jìn)行格式轉(zhuǎn)換,而輸入緩沖控制器負(fù)責(zé)控制數(shù)據(jù)流入輸入緩沖區(qū)中。 輸入緩沖區(qū)的存在有利于將大量用于矩陣計(jì)算的數(shù)據(jù)一次性的被搬移到AI Core內(nèi)部,同時(shí)利用固化的硬件極高的提升了數(shù)據(jù)格式轉(zhuǎn)換的速度,避免了矩陣計(jì)算單元的阻塞,消除了由于數(shù)據(jù)轉(zhuǎn)換過程緩慢而帶來的性能瓶頸。

在神經(jīng)網(wǎng)絡(luò)中往往可以把每層計(jì)算的中間結(jié)果放在輸出緩沖區(qū)中,從而在進(jìn)入下一層計(jì)算時(shí)方便的獲取數(shù)據(jù)。 由于通過總線讀取數(shù)據(jù)的帶寬低,延遲大,通過充分利用輸出緩沖區(qū)就可以大大提升計(jì)算效率。

在矩陣計(jì)算單元還包含有直接的供數(shù)寄存器,提供當(dāng)前正在進(jìn)行計(jì)算的大小為1616的左、右輸入矩陣。 在矩陣計(jì)算單元之后,累加器也含有結(jié)果寄存器,用于緩存當(dāng)前計(jì)算的大小為1616的結(jié)果矩陣。 在累加器配合下可以不斷的累積前次矩陣計(jì)算的結(jié)果,這在卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算過程中極為常見。 在軟件的控制下,當(dāng)累積的次數(shù)達(dá)到要求后,結(jié)果寄存器中的結(jié)果可以被一次性的傳輸?shù)捷敵鼍彌_區(qū)中。

AI Core中的存儲(chǔ)系統(tǒng)為計(jì)算單元提供源源不斷的數(shù)據(jù),高效適配計(jì)算單元的強(qiáng)大算力,綜合提升了AI Core的整體計(jì)算性能。 與谷歌TPU設(shè)計(jì)中的統(tǒng)一緩沖區(qū)設(shè)計(jì)理念相類似,AI Core采用了大容量的片上緩沖區(qū)設(shè)計(jì),通過增大的片上緩存數(shù)據(jù)量來減少數(shù)據(jù)從片外存儲(chǔ)系統(tǒng)搬運(yùn)到AI Core中的頻次,從而可以降低數(shù)據(jù)搬運(yùn)過程中所產(chǎn)生的功耗,有效控制了整體計(jì)算的能耗。

達(dá)芬奇架構(gòu)通過存儲(chǔ)轉(zhuǎn)換單元中內(nèi)置的定制電路,在進(jìn)行數(shù)據(jù)傳輸?shù)耐瑫r(shí),就可以實(shí)現(xiàn)諸如Im2Col或者其它類型的格式轉(zhuǎn)化操作,不光是節(jié)省了格式轉(zhuǎn)換過程中的消耗,同時(shí)也節(jié)省了數(shù)據(jù)轉(zhuǎn)換的指令開銷。 這種能將數(shù)據(jù)在傳輸?shù)耐瑫r(shí)進(jìn)行轉(zhuǎn)換的指令稱為隨路指令。 硬件單元對(duì)隨路指令的支持為程序設(shè)計(jì)提供了便捷性。

2、數(shù)據(jù)通路

wKgaomQk-A2AT4q2AAF5VZqFCh0843.png

數(shù)據(jù)通路指的是AI Core在完成一個(gè)計(jì)算任務(wù)時(shí),數(shù)據(jù)在AI Core中的流通路徑。 前文已經(jīng)以矩陣相乘為例簡單介紹了數(shù)據(jù)的搬運(yùn)路徑。 圖3-12展示了達(dá)芬奇架構(gòu)中一個(gè)AI Core內(nèi)完整的數(shù)據(jù)傳輸路徑。 這其中包含了DDR或HBM,以及L2緩沖區(qū),這些都屬于AI Core核外的數(shù)據(jù)存儲(chǔ)系統(tǒng)。 圖中其它各類型的數(shù)據(jù)緩沖區(qū)都屬于核內(nèi)存儲(chǔ)系統(tǒng)。

核外存儲(chǔ)系統(tǒng)中的數(shù)據(jù)可以通過LOAD指令被直接搬運(yùn)到矩陣計(jì)算單元中進(jìn)行計(jì)算,輸出的結(jié)果會(huì)被保存在輸出緩沖區(qū)中。 除了直接將數(shù)據(jù)通過LOAD指令發(fā)送到矩陣計(jì)算單元中,核外存儲(chǔ)系統(tǒng)中的數(shù)據(jù)也可以通過LOAD指令先行傳入輸入緩沖區(qū),再通過其它指令傳輸?shù)骄仃囉?jì)算單元中。 這樣做的好處是利用大容量的輸入緩沖區(qū)來暫存需要被矩陣計(jì)算單元反復(fù)使用的數(shù)據(jù)。

矩陣計(jì)算單元和輸出緩沖區(qū)之間是可以相互傳輸數(shù)據(jù)的。 由于矩陣計(jì)算單元容量較小,部分矩陣運(yùn)算結(jié)果可以寫入輸出緩沖區(qū)中,從而提供充裕的空間容納后續(xù)的矩陣計(jì)算。 當(dāng)然也可以將輸出緩沖區(qū)中的數(shù)據(jù)再次搬回矩陣計(jì)算單元作為后續(xù)計(jì)算的輸入。 輸出緩沖區(qū)和向量計(jì)算單元、標(biāo)量計(jì)算單元以及核外存儲(chǔ)系統(tǒng)之間都有一條獨(dú)立的雙向數(shù)據(jù)通路。 輸出緩沖區(qū)中的數(shù)據(jù)可以通過專用寄存器或通用寄存器進(jìn)出標(biāo)量計(jì)算單元。

值得注意的是,AI Core中的所有數(shù)據(jù)如果需要向外部傳輸,都必須經(jīng)過輸出緩沖區(qū),才能夠被寫回到核外存儲(chǔ)系統(tǒng)中。 例如輸入緩沖區(qū)中的圖像特征數(shù)據(jù)如果需要被輸出到系統(tǒng)內(nèi)存中,則需要先經(jīng)過矩陣計(jì)算單元處理后存入輸出緩沖區(qū)中,最終從輸出緩沖區(qū)寫回到核外存儲(chǔ)系統(tǒng)中。 在AI Core中并沒有一條從輸入緩沖區(qū)直接寫入到輸出緩沖區(qū)的數(shù)據(jù)通路。 因此輸出緩沖區(qū)作為AI Core數(shù)據(jù)流出的閘口,能夠統(tǒng)一的控制和協(xié)調(diào)所有核內(nèi)數(shù)據(jù)的輸出。

達(dá)芬奇架構(gòu)數(shù)據(jù)通路的特點(diǎn)是多進(jìn)單出,數(shù)據(jù)流入AI Core可以通過多條數(shù)據(jù)通路,可以從外部直接流入矩陣計(jì)算單元、輸入緩沖區(qū)和輸出緩沖區(qū)中的任何一個(gè),流入路徑的方式比較靈活,在軟件的控制下由不同數(shù)據(jù)流水線分別進(jìn)行管理。 而數(shù)據(jù)輸出則必須通過輸出緩沖區(qū),最終才能輸出到核外存儲(chǔ)系統(tǒng)中。

這樣設(shè)計(jì)的理由主要是考慮到了深度神經(jīng)網(wǎng)絡(luò)計(jì)算的特征。 神經(jīng)網(wǎng)絡(luò)在計(jì)算過程中,往往輸入的數(shù)據(jù)種類繁多并且數(shù)量巨大,比如多個(gè)通道、多個(gè)卷積核的權(quán)重和偏置值以及多個(gè)通道的特征值等,而AI Core中對(duì)應(yīng)這些數(shù)據(jù)的存儲(chǔ)單元可以相對(duì)獨(dú)立且固定,可以通過并行輸入的方式來提高數(shù)據(jù)流入的效率,滿足海量計(jì)算的需求。 AI Core中設(shè)計(jì)多個(gè)輸入數(shù)據(jù)通路的好處是對(duì)輸入數(shù)據(jù)流的限制少,能夠?yàn)橛?jì)算源源不斷的輸送源數(shù)據(jù)。 與此相反,深度神經(jīng)網(wǎng)絡(luò)計(jì)算將多種輸入數(shù)據(jù)處理完成后往往只生成輸出特征矩陣,數(shù)據(jù)種類相對(duì)單一。 根據(jù)神經(jīng)網(wǎng)絡(luò)輸出數(shù)據(jù)的特點(diǎn),在AI Core中設(shè)計(jì)了單輸出的數(shù)據(jù)通路,一方面節(jié)約了芯片硬件資源,另一方面可以統(tǒng)一管理輸出數(shù)據(jù),將數(shù)據(jù)輸出的控制硬件降到最低。

綜上,達(dá)芬奇架構(gòu)中的各個(gè)存儲(chǔ)單元之間的數(shù)據(jù)通路以及多進(jìn)單出的核內(nèi)外數(shù)據(jù)交換機(jī)制是在深入研究了以卷積神經(jīng)網(wǎng)絡(luò)為代表的主流深度學(xué)習(xí)算法后開發(fā)出來的,目的是在保障數(shù)據(jù)良好的流動(dòng)性前提下,減少芯片成本、提升計(jì)算性能、降低控制復(fù)雜度。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229842
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4314

    瀏覽量

    85846
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    30896

    瀏覽量

    269086
  • 控制單元
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12826
  • davinci
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    12403

原文標(biāo)題:昇騰AI處理器:全面解密DaVinci架構(gòu)

文章出處:【微信號(hào):算力基建,微信公眾號(hào):算力基建】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    華為首次發(fā)布基于ARM架構(gòu)處理器芯片

    今年10月,華為發(fā)布的兩款AI芯片:910和310是華為AI的核心武器,用來武裝企業(yè)端—
    的頭像 發(fā)表于 12-25 10:04 ?7643次閱讀

    華為發(fā)布全球算力最強(qiáng)AI處理器,芯片910問世!

    今天,在華為深圳坂田基地,華為正式發(fā)布算力最強(qiáng)的AI處理器Ascend 910(910),同時(shí)推出全場景AI計(jì)算框架MindSpore。
    發(fā)表于 08-23 17:24 ?4386次閱讀

    AI處理器:Ascend310和CANN簡介

    Ascend310 AI處理器邏輯架構(gòu)AI處理器
    發(fā)表于 06-05 14:09 ?1.3w次閱讀
    <b class='flag-5'>昇</b><b class='flag-5'>騰</b><b class='flag-5'>AI</b><b class='flag-5'>處理器</b>:Ascend310和CANN簡介

    華為正式推出兩款AI芯片:910和310

    在今日舉行的華為全聯(lián)接2018大會(huì)上,華為輪值董事長徐直軍首次闡述了AI戰(zhàn)略。徐直軍宣布,一直以來華為都在研發(fā)AI芯片,在此正式發(fā)布兩款AI芯片:
    的頭像 發(fā)表于 10-10 10:32 ?6464次閱讀

    華為師資培訓(xùn)沙龍成都場

    華為師資培訓(xùn)沙龍成都場,隨著萬物互聯(lián)時(shí)代的到來,人工智能技術(shù)正處于爆發(fā)期,在5G、低延時(shí)等技術(shù)的加持下,AI應(yīng)用的能力得到了跨越式的提升,越來越多的場景和行業(yè)正在被AI改寫,整個(gè)社
    發(fā)表于 07-28 08:04

    OpenHarmony集成 AI

    OpenHarmony集成 AI:目前,沒有提供OpenHarmony系統(tǒng)可用的驅(qū)動(dòng)。如果OpenHarmony要用
    發(fā)表于 02-17 11:57

    310的用途以及設(shè)計(jì)細(xì)節(jié)

    10月10日,華為在全聯(lián)接大會(huì)2018上,首次宣布了華為的AI戰(zhàn)略以及全棧解決方案。與此同時(shí),華為發(fā)布了自研云端AI芯片“(Ascend )”系列,基于達(dá)芬奇
    發(fā)表于 10-13 10:49 ?1.3w次閱讀

    華為推出910、310兩款AI芯片,910的半精度算力可達(dá)到256 TFLOPs

    說起華為的芯片我們首先想到的就是麒麟980、麒麟970,其實(shí)華為不只有麒麟處理器,也一直在研發(fā)AI芯片。在剛剛舉行的華為全鏈接2018 (HUAWEI CONNECT 2018)大會(huì)上,華為輪值CEO徐直軍公布了華為全棧全場景AI
    發(fā)表于 10-10 16:18 ?2w次閱讀

    華為發(fā)布最強(qiáng)的AI處理器910”與打造全棧全場景AI解決方案

    ”與MindSpore配合與現(xiàn)有主流訓(xùn)練單卡配合TensorFlow相比,顯示出接近2倍的性能提升。面向未來,華為將持續(xù)投資,推出更多的AI處理器,持續(xù)提供更充裕、更經(jīng)濟(jì)、更適配的AI算力。
    的頭像 發(fā)表于 08-23 15:03 ?3888次閱讀

    華為發(fā)布AI全棧軟件平臺(tái),讓AI計(jì)算觸手可及

    今日,在深圳舉行的AI新品全球發(fā)布會(huì)(HAI 2020)上,華為發(fā)布業(yè)界領(lǐng)先的AI全棧軟
    發(fā)表于 08-10 17:40 ?1058次閱讀

    AI的三級(jí)跳

    我們的讀者,應(yīng)該都已經(jīng)關(guān)注AI很長時(shí)間了。 如果回溯整個(gè)AI計(jì)算產(chǎn)業(yè)的發(fā)展歷程,會(huì)發(fā)現(xiàn)兩
    的頭像 發(fā)表于 07-16 19:42 ?1746次閱讀
    <b class='flag-5'>昇</b><b class='flag-5'>騰</b><b class='flag-5'>AI</b>的三級(jí)跳

    基于CANN的AI應(yīng)用開發(fā)

    本次AI開發(fā)者創(chuàng)享日圍繞基于CANN的AI應(yīng)用開發(fā),多位技術(shù)大咖分享多樣的趣味訓(xùn)練。
    的頭像 發(fā)表于 04-24 13:16 ?1713次閱讀

    深度解析AI全棧架構(gòu)設(shè)計(jì)

    面向計(jì)算機(jī)視覺、自然語言處理、推薦系統(tǒng)、類機(jī)器人等領(lǐng)域量身打造了基于“達(dá)芬奇(DaVinci架構(gòu)”的(Ascend)
    發(fā)表于 05-30 09:54 ?1460次閱讀
    深度解析<b class='flag-5'>昇</b><b class='flag-5'>騰</b><b class='flag-5'>AI</b>全棧<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)

    AI框架全棧深度介紹

    華為公司面向計(jì)算機(jī)視覺、自然語言處理、推薦系統(tǒng)、類機(jī)器人等領(lǐng)域量身打造了基于“達(dá)芬奇(DaVinci架構(gòu)”的(Ascend)
    的頭像 發(fā)表于 10-22 16:19 ?3186次閱讀
    <b class='flag-5'>昇</b><b class='flag-5'>騰</b><b class='flag-5'>AI</b>框架全棧深度介紹

    思原生,助力智譜打造自主創(chuàng)新大模型體系!

    自從全面啟動(dòng)原生開發(fā),越來越多的生態(tài)伙伴選擇,大模型生態(tài)從“應(yīng)用遷移”走向“原生開發(fā)”,充分依托
    的頭像 發(fā)表于 08-20 18:29 ?446次閱讀
    <b class='flag-5'>昇</b><b class='flag-5'>騰</b>與<b class='flag-5'>昇</b>思原生,助力智譜打造自主創(chuàng)新大模型體系!