AI芯片最簡(jiǎn)單直接設(shè)計(jì)思路就是將神經(jīng)元直接映射到硬件芯片上,如圖所示,全硬件實(shí)現(xiàn)方案(Full-Hardware Implementation)將每個(gè)神經(jīng)元映射為一個(gè)邏輯計(jì)算單元,每個(gè)突觸映射為一個(gè)數(shù)據(jù)存儲(chǔ)單元,這種架構(gòu)設(shè)計(jì)可以實(shí)現(xiàn)一個(gè)高性能且低功耗的AI芯片,比如Intel ETANN芯片。在全硬件實(shí)現(xiàn)方案中上一層輸出數(shù)據(jù)和權(quán)重相乘,相乘的結(jié)果再相加,然后再經(jīng)過一個(gè)激活函數(shù)輸出到下一層計(jì)算。這種架構(gòu)設(shè)計(jì)將計(jì)算和存儲(chǔ)緊密的耦合在一起,使得芯片在進(jìn)行高速計(jì)算的同時(shí)由能避免大規(guī)模的數(shù)據(jù)訪存,在提高整體計(jì)算性能的同時(shí)也降低了功耗。
全硬件實(shí)現(xiàn)方案具有設(shè)計(jì)簡(jiǎn)單、計(jì)算性能高、功耗低等特定,但它僅適用于小規(guī)模的神經(jīng)網(wǎng)絡(luò)計(jì)算,對(duì)于大型神經(jīng)網(wǎng)絡(luò)的計(jì)算存在明顯的硬件限制。如圖所示,當(dāng)網(wǎng)絡(luò)層的節(jié)點(diǎn)為16 x 16時(shí),芯片面積只需要0.71 mm2 ,但當(dāng)網(wǎng)絡(luò)層的節(jié)點(diǎn)為32 x 32時(shí),芯片面積則需要2.66 mm2 ,當(dāng)網(wǎng)絡(luò)層包含的節(jié)點(diǎn)進(jìn)一步增大時(shí)所需要的芯片面積和能耗將大幅提升,所以直接映射方案已經(jīng)不能滿足當(dāng)前規(guī)模越來越大的深度學(xué)習(xí)算法發(fā)展。
ASIC芯片的設(shè)計(jì)基本都是針對(duì)領(lǐng)域計(jì)算特性,圍繞訪存、能耗、吞吐率、成本、靈活性等指標(biāo)進(jìn)行優(yōu)化和設(shè)計(jì)。隨著深度學(xué)習(xí)算法發(fā)展,神經(jīng)網(wǎng)絡(luò)深度和規(guī)模越來越大,網(wǎng)絡(luò)結(jié)構(gòu)也從CNN為主的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)逐漸演變到Transformer為主的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì),算法對(duì)芯片需求也從計(jì)算密集性過度到存算密集性,AI芯片的設(shè)計(jì)也從偏計(jì)算走向存算一體的混合計(jì)算模式。具體體現(xiàn)在:
底層架構(gòu):從存算分離到存算一體設(shè)計(jì)。
數(shù)據(jù)通信:從高速數(shù)據(jù)通信到低精度計(jì)算和稀疏計(jì)算。
模型設(shè)計(jì):從模型-硬件獨(dú)立設(shè)計(jì)到模型-軟硬件聯(lián)合優(yōu)化設(shè)計(jì)。
時(shí)域計(jì)算
時(shí)域計(jì)算指采用定制化指令集的專用處理器,其通過指令流水線對(duì)邏輯計(jì)算單元(Arithmetic Logic Unit, ALU)和存儲(chǔ)系統(tǒng)進(jìn)行統(tǒng)一管理和調(diào)度,ALU流水線從存儲(chǔ)系統(tǒng)中讀取數(shù)據(jù),經(jīng)過多級(jí)流水線處理后將最終運(yùn)算結(jié)果寫回存儲(chǔ)系統(tǒng)。深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型主要是大量的線性代數(shù)運(yùn)算,而控制流程則相對(duì)簡(jiǎn)單,所以,AI芯片通常采用高度并行的計(jì)算架構(gòu)設(shè)計(jì),為了提高處理器并行計(jì)算能力,需要讓一條指令同時(shí)針對(duì)多個(gè)數(shù)據(jù)元素執(zhí)行相同的操作?;谏疃葘W(xué)習(xí)的計(jì)算流程相對(duì)固定的特點(diǎn),多個(gè)固定步驟的計(jì)算可以通過多個(gè)ALU流水線設(shè)計(jì)來實(shí)現(xiàn)高效計(jì)算,比如矩陣運(yùn)算中的多數(shù)據(jù)乘累加計(jì)算。
時(shí)域計(jì)算架構(gòu)
中國科學(xué)院計(jì)算技術(shù)研究所的DianNao系列架構(gòu)設(shè)計(jì)是一種典型的時(shí)域計(jì)算架構(gòu)設(shè)計(jì)。DianNao系列的芯片主要包含三部分:神經(jīng)功能單元(Neural Functional Unit, NFU)、三個(gè)不同功能片上存儲(chǔ)區(qū)和控制器。NFU和存儲(chǔ)通過控制器的指令進(jìn)行調(diào)度,運(yùn)算核心NFU按照卷積運(yùn)算流程劃分為乘法功能段NFU1、加法功能段NFU2以及非線性激活函數(shù)功能段NFU3的三級(jí)流水線設(shè)計(jì)。DianNao針對(duì)深度學(xué)習(xí)的計(jì)算特性進(jìn)行定制設(shè)計(jì),使其在AI計(jì)算上能夠獲得比通用處理器更高的能效。
空域計(jì)算
與時(shí)域計(jì)算不同,空域計(jì)算中每個(gè)計(jì)算單元PE都具有獨(dú)立的控制單元和存儲(chǔ)單元??沼蛴?jì)算架構(gòu)通常由一維或二維PE陣列構(gòu)成,每個(gè)PE內(nèi)部自帶控制器和緩存,PE之間可以直接傳遞數(shù)據(jù)。除此之外,還有片上全局緩存、片外DRAM等不同層次存儲(chǔ)構(gòu)成的多級(jí)存儲(chǔ)系統(tǒng)??沼蛴?jì)算架構(gòu)利用大量PE陣列完成高效的并行計(jì)算,通過PE之間的數(shù)據(jù)流動(dòng)減少處理器與主存之間的通信次數(shù)。
空域計(jì)算架構(gòu)
Google TPU (Tensor Processing Unit)是空域計(jì)算架構(gòu)的典型代表之一,它包含一個(gè)256x256個(gè)MAC組成二維矩陣乘法陣列,此外其內(nèi)部還集成了歸一化/池化單元和非線性激活單元等。TPU的二維矩陣乘法陣列按照脈動(dòng)陣列(Systolic Array)方式互連,PE計(jì)算的數(shù)據(jù)來自前一個(gè)時(shí)鐘周期中相鄰PE的計(jì)算結(jié)果,PE在當(dāng)前時(shí)鐘周期計(jì)算得到的結(jié)果則按同樣的方式流入相鄰的PE在下一個(gè)時(shí)鐘周期參與計(jì)算,由于數(shù)據(jù)在陣列中不同PE之間的流動(dòng)像血液在血管中脈動(dòng)傳輸一樣按照規(guī)定的節(jié)奏進(jìn)行傳遞和計(jì)算,所以稱之為脈動(dòng)陣列架構(gòu)。
數(shù)據(jù)復(fù)用
數(shù)據(jù)復(fù)用指在計(jì)算過程中對(duì)同一數(shù)據(jù)進(jìn)行重復(fù)使用以減少對(duì)存儲(chǔ)器訪問次數(shù)。深度學(xué)習(xí)中的數(shù)據(jù)復(fù)用通常包括:輸入數(shù)據(jù)復(fù)用、輸出數(shù)據(jù)復(fù)用和權(quán)重?cái)?shù)據(jù)復(fù)用。例如,在DianNao架構(gòu)中SB和NBin分別用來存儲(chǔ)權(quán)重和數(shù)據(jù)神經(jīng)元數(shù)據(jù),NFU單元用來進(jìn)行點(diǎn)乘和累加的運(yùn)算,輸出數(shù)據(jù)存儲(chǔ)在NBout中,在計(jì)算過程中輸出數(shù)據(jù)會(huì)先輸出到緩存器中直到完成所有的部分和的累加后才會(huì)被寫回。
存儲(chǔ)優(yōu)化
彌補(bǔ)計(jì)算單元和存儲(chǔ)器之間的差距的途徑主要包括:
高帶寬的數(shù)據(jù)通信技術(shù),使用更先進(jìn)的通信技術(shù)提高數(shù)據(jù)傳輸?shù)男省?/p>
通過增加片上存儲(chǔ)容量讓數(shù)據(jù)更靠近計(jì)算單元,減少數(shù)據(jù)在計(jì)算單元和內(nèi)存之間的搬運(yùn)成本。
使用高密度片上存儲(chǔ)技術(shù),例如eDRAM存儲(chǔ)單元由晶體管和電容構(gòu)成,相比于SRAM具有更高的存儲(chǔ)密度。
使用三維集成(3D Integration)存儲(chǔ)器技術(shù)將多塊存儲(chǔ)器在垂直方向上堆疊起來,以獲得更大存儲(chǔ)容量。
直接在存儲(chǔ)器內(nèi)部實(shí)現(xiàn)計(jì)算,即存內(nèi)計(jì)算,目前受限制造工藝和計(jì)算精度等問題,其應(yīng)用范圍還比較有限。
鄭重聲明:文中僅代表作者觀點(diǎn),不代表本公司觀點(diǎn),本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或者刪除,感謝您的關(guān)注!