• 正文
    • VLIW+SIMD架構(gòu)設(shè)計(jì)
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

VLIW+SIMD:解密AI芯片的并行計(jì)算基因

5小時(shí)前
135
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

AI處理器需要處理大量的并行數(shù)據(jù),這對(duì)其并行度要求極高。處理器提升并行度的方式有多種,較為常見的策略有提升指令級(jí)別的并行度(Instruction Level Parallelism, ILP)、提升數(shù)據(jù)級(jí)別的并行度(Data Level Parallelism, DLP)以及提升線程級(jí)別的并行度(Thread Level Parallelism, TLP)。

提升指令級(jí)別的并行度是指提升每個(gè)時(shí)鐘周期能夠執(zhí)行的指令數(shù)量,超長指令字(Very Long InstructionWord,VLIW)技術(shù)和超標(biāo)量(Superscalar)技術(shù)是兩種典型的提升指令級(jí)別并行度的技術(shù)。提升數(shù)據(jù)級(jí)別的并行度是指提升每個(gè)時(shí)鐘周期能夠處理的數(shù)據(jù)數(shù)量,單指令多數(shù)據(jù)(SIMD)是一種典型的提升數(shù)據(jù)級(jí)別的并行度的技術(shù),單指令多線程(Single Instruction Multiple Thread,SIMT)是一種典型的提升線程級(jí)的并行度的技術(shù)。下面我們就以VLIW+SIMD架構(gòu)設(shè)計(jì)為例,介紹一下典型的AI處理器硬件架構(gòu)實(shí)現(xiàn)方案。

VLIW+SIMD架構(gòu)設(shè)計(jì)

VLIW架構(gòu)是一種典型的利用指令級(jí)并行機(jī)制的處理器架構(gòu),其核心思想是在每個(gè)時(shí)鐘周期,并行發(fā)射多條指令到不同的執(zhí)行單元中并行執(zhí)行。同一時(shí)鐘周期發(fā)射的這些指令組成了指令包(Instruction Package),指令包中的指令之間不能有依賴關(guān)系。VLIW架構(gòu)中的并行執(zhí)行指令不需要硬件動(dòng)態(tài)調(diào)度,完全依靠編譯器層面的指令調(diào)度。

圖1.VLIW架構(gòu)示例

圖1是一個(gè)VLIW架構(gòu)處理器示意圖,VLIW指令存于指令緩存(VLIW Instruction Cache),VLIW指令的提?。‵etch)以指令包為單位,指令包的典型寬度有64bit、128bit和256bit,可以看到,由于指令包寬度較寬,同時(shí)編譯器進(jìn)行指令打包過程中,不一定能找到合適的指令填滿整個(gè)指令包,指令包中可能會(huì)存在大量的空指令(No Operation,NOP),這使得VLIW架構(gòu)的指令密度較低,于是VLIW架構(gòu)的指令緩存容量一般需要設(shè)置得比較大。

指令完成提取后,送入VLIW譯碼單元中進(jìn)行指令譯碼,指令譯碼對(duì)指令包中所有指令進(jìn)行類型判斷,將指令送入對(duì)應(yīng)的執(zhí)行單元中。指令包可以分為多個(gè)指令槽位(Slot),每個(gè)指令槽位存放一條指令。圖1所示的指令包中包含5個(gè)指令槽位,其中Slot0為標(biāo)量指令,送往標(biāo)量流水線(Scalar Pipeline);Slot1為Vector Load指令,Slot2為Vector Store指令,它們被送往向量訪存單元(Vector Load Store Unit,VLSU)中完成向量數(shù)據(jù)的加載和存儲(chǔ);Slot3為向量執(zhí)行指令,送往向量流水線(Vector Pipeline);Slot4為矩陣運(yùn)算指令,送往矩陣流水線(Matrix Pipeline)。

需要注意的是,每個(gè)Slot所對(duì)應(yīng)的指令類型不是完全固定不變的,比如在向量運(yùn)算密集的代碼中,指令包中可能會(huì)有兩個(gè)Slot存放Vector Load指令,一個(gè)Slot存放Vector Store指令,一個(gè)Slot存放向量運(yùn)算類指令,最后一個(gè)Slot存放其他指令;在標(biāo)量運(yùn)算密集的代碼中,可以有多個(gè)Slot存放標(biāo)量指令。通過這種靈活的指令打包方式,一定程度上可以提升指令打包效率。

VLIW架構(gòu)設(shè)計(jì)的核心在于指令級(jí)并行,隨著指令包中槽位的增加,編譯器進(jìn)行指令調(diào)度的復(fù)雜度也隨之增加:當(dāng)指令包中只有兩個(gè)槽位時(shí),編譯器還是比較容易將指令包填滿的,當(dāng)指令包中有更多槽位時(shí),編譯器很難在局部范圍內(nèi)找到多條無關(guān)指令,加之這些槽位對(duì)可存放的指令有所限制,編譯器的調(diào)度難度更高了,這種情況下,指令包中可能會(huì)插入多條NOP指令。另外隨著指令包中槽位的增加,指令緩存的容量也需要隨之增大,并且也要增加硬件中的執(zhí)行單元數(shù)量,這增加了硬件面積開銷。因此指令包中的指令槽位不能過多,通常為3~6個(gè)。

當(dāng)指令級(jí)別的并行度提升遇到瓶頸時(shí),可以提升數(shù)據(jù)級(jí)別的并行度。SIMD是一種提升數(shù)據(jù)級(jí)別并行的技術(shù),在一條指令的驅(qū)動(dòng)下,多個(gè)通道對(duì)不同輸入數(shù)據(jù)進(jìn)行相同的指令操作,SISD(Single Instruction Single Datastream,單指令單數(shù)據(jù)流)和SIMD的對(duì)比如圖2所示,在采用SISD設(shè)計(jì)的處理器中,一條指令對(duì)應(yīng)一組數(shù)據(jù),在采用SIMD設(shè)計(jì)的處理器中,一條指令對(duì)應(yīng)多組數(shù)據(jù)。

圖2.SISD和SIMD的對(duì)比

SIMD技術(shù)特別適合高效處理大規(guī)模、高并行計(jì)算的場景,能夠極大地減少總線訪問周期,提高數(shù)據(jù)處理的并行性,然而它對(duì)算法和數(shù)據(jù)結(jié)構(gòu)的要求比較高,如果算法存在較多的單點(diǎn)之間的依賴關(guān)系,則不適合使用該技術(shù)進(jìn)行加速。另外,在高并行度的SIMD架構(gòu)處理器中,如果需要處理的數(shù)據(jù)分布較為離散,則可能需要對(duì)這些數(shù)據(jù)進(jìn)行合并、拆分、壓縮等操作,而硬件實(shí)現(xiàn)這些操作需要消耗大量的硬件資源,并且增加了后端布局布線的復(fù)雜度。這類似于提升指令級(jí)別的并行度時(shí)遇到的瓶頸,因此SIMD架構(gòu)的數(shù)據(jù)級(jí)別并行度也不能太高。以上內(nèi)容節(jié)選自《AI處理器硬件架構(gòu)設(shè)計(jì)》作者:任子木 李東聲

推薦閱讀

▊《AI處理器硬件架構(gòu)設(shè)計(jì)》,任子木 李東聲編著

文檔及細(xì)節(jié)還原架構(gòu)設(shè)計(jì)精髓,全方位剖析先進(jìn)AI處理器架構(gòu)/微架構(gòu)及相關(guān)技術(shù)

融合了一線自研高性能處理器資深工程師多年工作經(jīng)驗(yàn),從人工智能處理器的架構(gòu)設(shè)計(jì)出發(fā),對(duì)比各種不同架構(gòu)的人工智能處理器的優(yōu)缺點(diǎn),詳細(xì)介紹各個(gè)組件的架構(gòu)和微架構(gòu)設(shè)計(jì),循序漸進(jìn)、由淺入深,圖文結(jié)合。用戶可根據(jù)本書的介紹,從0到1完成人工智能處理器的設(shè)計(jì)、驗(yàn)證工作。

撰 ?稿 ?人:計(jì)旭

責(zé)任編輯:張淑謙

審 ?核 ?人:曹新宇

相關(guān)推薦