国产精品chinese,色综合天天综合精品网国产在线,成午夜免费视频在线观看,清纯女学生被强行糟蹋小说

    <td id="ojr13"><tr id="ojr13"><label id="ojr13"></label></tr></td>
        • <source id="ojr13"></source>
            <td id="ojr13"><ins id="ojr13"><label id="ojr13"></label></ins></td>

            Article / 文章中心

            詳解AI加速器(三):架構(gòu)基礎(chǔ)離不開ISA、可重構(gòu)處理器……

            發(fā)布時(shí)間:2022-02-18 點(diǎn)擊數(shù):965
            簡(jiǎn)介: 在上一篇文章中,前蘋果工程師、普林斯頓大學(xué)博士 Adi Fuchs 解說了為什么現(xiàn)在是 AI 加快器的黃金時(shí)代。在這篇文章中,咱們將聚焦 AI 加快器的隱秘基石——指令集架構(gòu) ISA、可重構(gòu)處理器等。


            上一篇文章中,前蘋果工程師、普林斯頓大學(xué)博士 Adi Fuchs 解說了為什么現(xiàn)在是 AI 加快器的黃金時(shí)代。在這篇文章中,咱們將聚焦 AI 加快器的隱秘基石——指令集架構(gòu) ISA、可重構(gòu)處理器等。

            image.png


            這是本系列博客的第三篇,咱們來到了整個(gè)系列的架構(gòu)基礎(chǔ)部分。

            在這一章節(jié)中,Adi Fuchs 為咱們介紹了 AI 加快器的架構(gòu)基礎(chǔ),包括指令集架構(gòu) ISA、特定范疇的 ISA、超長(zhǎng)指令字 (VLIW) 架構(gòu)、脈動(dòng)陣列、可重構(gòu)處理器、數(shù)據(jù)流操作、內(nèi)存處理。


            指令集架構(gòu)——ISA

            ISA 描述了指令和操作怎么由編譯器編碼,然后由處理器解碼和履行,它是處理器架構(gòu)中面向程序員的部分。常見的比如是 Intel 的 x86、ARM、IBM Power、MIPS 和 RISC-V。咱們可以將 ISA 視為處理器支撐所有操作的詞匯表。一般,它由算術(shù)指令(如加、乘)、內(nèi)存操作(加載、存儲(chǔ))和操控操作(例如,在 if 語句中運(yùn)用的分支)組成。

            image.pngimage.gif


            目前看來,CPU ISA 已被分類為精簡(jiǎn)指令集核算 (RISC) 和雜亂指令集核算 (CISC):

            • RISC ISA 由簡(jiǎn)略的指令組成,它們支撐少量簡(jiǎn)略操作(加、乘等)。所有指令的位長(zhǎng)相同(例如 32 位),因而,RISC 指令的硬件解碼器被認(rèn)為是簡(jiǎn)略的;
            • 相反,在 CISC ISA 中,不同的指令可以有不同的長(zhǎng)度,單個(gè)指令就可以描述操作和條件的雜亂組合。


            一般,CISC 程序比其等效的 RISC 程序代碼占用空間更小,即存儲(chǔ)程序指令所需的內(nèi)存量。這是由于單個(gè) CISC 指令可以跨越多個(gè) RISC 指令,并且可變長(zhǎng)度的 CISC 指令被編碼為使得最少的位數(shù)代表最常見的指令。但是,為了體現(xiàn)雜亂指令帶來的優(yōu)勢(shì),編譯器需求做的滿足雜亂才干完結(jié)。

            image.png

            x86(橙色)相關(guān)于 ARM(紫色)的核算市場(chǎng)遞減率猜測(cè)。圖源:AMD/ExtremeTech


            早在 1980 年、1990 年和 2000 時(shí)代初期,就有「RISC 與 CISC 之戰(zhàn)」,依據(jù) x86 的 Intel 和 AMD 首要專心于 CISC ,而 ARM 專心于 RISC。其實(shí)每種辦法都有利弊,但終究,由于依據(jù) ARM 的智能手機(jī)的蓬勃發(fā)展,RISC 在移動(dòng)設(shè)備中占有了上風(fēng)。現(xiàn)在,跟著亞馬遜依據(jù) ARM 的 AWS Graviton 處理器等的發(fā)布,RISC 在云中也開端占有主導(dǎo)地位。


            特定范疇的 ISA

            值得注意的是,RISC 和 CISC 都是用于構(gòu)建通用處理器的通用指令集架構(gòu)。但在加快器的布景下, CISC 與 RISC 比較, RISC 具有簡(jiǎn)略性和簡(jiǎn)潔性,更受歡迎(至少關(guān)于智能手機(jī)而言)。

            image.png

            45nm CMOS 處理器中履行 ADD 指令能耗。圖源:M.Horowitz ISSCC 2014


            許多 AI 加快器公司選用特定范疇的 ISA。鑒于現(xiàn)有的精簡(jiǎn)指令集架構(gòu)(以及潛在的處理中心),可以經(jīng)過僅支撐目標(biāo)使用范疇所需的指令子集來進(jìn)一步削減它。特定范疇的 ISA 進(jìn)一步簡(jiǎn)化了處理內(nèi)核和硬件 / 軟件接口,以完結(jié)高效的加快器規(guī)劃。在一般由線性代數(shù)和非線性激活組成的 AI 使用中,不需求許多「奇異」類型的運(yùn)算。因而,ISA 可以規(guī)劃為支撐相對(duì)較窄的操作規(guī)模。

            運(yùn)用現(xiàn)有 RISC ISA 的簡(jiǎn)化版本的優(yōu)點(diǎn)是,一些 RISC 公司(如 ARM )出售現(xiàn)有 IP,即支撐完好 ISA 的現(xiàn)有處理內(nèi)核,可用作定制處理的基線,用于加快器芯片的中心。這樣,加快器供應(yīng)商就可以依靠已經(jīng)過驗(yàn)證并或許布置在其他體系中的基線規(guī)劃;這是從頭開端規(guī)劃新架構(gòu)更牢靠的替代方案,關(guān)于工程資源有限、期望獲得現(xiàn)有處理生態(tài)體系支撐或期望縮短發(fā)動(dòng)時(shí)刻的草創(chuàng)公司特別有吸引力。


            超長(zhǎng)指令字 (VLIW) 架構(gòu)

            VLIW 架構(gòu)是由 Josh Fisher 在 20 世紀(jì) 80 時(shí)代早期提出,其時(shí)集成電路制作技能和高級(jí)言語編譯器技能呈現(xiàn)了巨大的前進(jìn)。其首要思維是:

            • 將多個(gè)相互無依靠的指令封裝到一條超長(zhǎng)的指令字中;
            • CPU 中有對(duì)應(yīng)數(shù)量的 ALU 完結(jié)相應(yīng)的指令操作;
            • 指令之間的依靠性和調(diào)度由編譯器來完結(jié)。


            就像特定范疇的 ISA 可以被認(rèn)為是 RISC 思維(更簡(jiǎn)略的指令,支撐的操作較少)的擴(kuò)展,同樣地,咱們可以將 CISC 進(jìn)行多個(gè)操作組合成單個(gè)雜亂指令擴(kuò)展,這些架構(gòu)被稱為超長(zhǎng)指令字 (VLIW)。

            VLIW 架構(gòu)由算術(shù)和存儲(chǔ)單元的異構(gòu)數(shù)據(jù)途徑陣列組成。異構(gòu)性源于每個(gè)單元的時(shí)序和支撐功用的差異:例如,核算簡(jiǎn)略邏輯操作數(shù)的結(jié)果或許需求 1-2 個(gè)周期,而內(nèi)存操作數(shù)或許需求數(shù)百個(gè)周期。

            image.png

            一個(gè)簡(jiǎn)略的 VLIW 數(shù)據(jù)途徑框圖。圖源:普林斯頓大學(xué)


            VLIW 架構(gòu)依靠于一個(gè)編譯器,該編譯器將多個(gè)操作組合成一個(gè)單一且雜亂的指令,該指令將數(shù)據(jù)分派到數(shù)據(jù)途徑陣列中的單元。例如,在 AI 加快器中,這種指令可以將張量指向矩陣乘法單元,并且并行地將數(shù)據(jù)部分發(fā)送到向量單元和轉(zhuǎn)置單元等等。

            VLIW 架構(gòu)的優(yōu)勢(shì)在于,經(jīng)過指令編排處理器數(shù)據(jù)途徑的本錢或許明顯降低;缺陷是咱們需求保證數(shù)據(jù)途徑中各個(gè)單元之間的作業(yè)負(fù)載得到平衡,以避免資源未得到充分利用。因而,要完結(jié)高功能履行,編譯器需求可以進(jìn)行雜亂的靜態(tài)調(diào)度。更具體地說,編譯器需求剖析程序,將數(shù)據(jù)分配給單元,知道怎么對(duì)不同的數(shù)據(jù)途徑資源計(jì)時(shí),并以在給定時(shí)刻利用最多單元的辦法將代碼分解為單個(gè)指令。歸根到底,編譯器需求了解不同的數(shù)據(jù)途徑結(jié)構(gòu)及其時(shí)序,并解決核算雜亂的問題,以提取高指令級(jí)并行 (ILP) 并完結(jié)高功能履行。


            脈動(dòng)陣列

            脈動(dòng)陣列由 H. T. Kung 和 C. E. Leiserson 于 1978 年引入。2017 年,Google 研制的 TPU 選用脈動(dòng)陣列作為核算中心結(jié)構(gòu),使其又一次火了起來。

            脈動(dòng)陣列自身的中心概念便是讓數(shù)據(jù)在運(yùn)算單元的陣列中進(jìn)行活動(dòng),削減訪存次數(shù),并且使得結(jié)構(gòu)愈加規(guī)整,布線愈加統(tǒng)一,進(jìn)步頻率。整個(gè)陣列以「節(jié)拍」辦法運(yùn)轉(zhuǎn),每個(gè) PE (processing elements)在每個(gè)核算周期處理一部分?jǐn)?shù)據(jù),并將其傳達(dá)給下一個(gè)互連的 PE。

            image.png

            矩陣經(jīng)過 4x4 脈動(dòng)網(wǎng)。圖源:NJIT


            脈動(dòng)結(jié)構(gòu)是履行矩陣乘法的有用辦法(DNN 作業(yè)負(fù)載具有豐富的矩陣乘法)。谷歌的 TPU 是第一個(gè)運(yùn)用 AI 的脈動(dòng)陣列。因而,在這之后,其他公司也加入了脈動(dòng)陣列行列,在自家加快硬件中集成了脈動(dòng)履行單元,例如 NVIDIA 的 Tensor Core。


            可重構(gòu)處理器

            咱們所了解的處理器包括 CPU、GPU 和一些加快器,它們的流程依靠于預(yù)先確認(rèn)數(shù)量的算術(shù)單元和運(yùn)轉(zhuǎn)時(shí)行為,這些行為是在運(yùn)轉(zhuǎn)時(shí)依據(jù)履行的程序指令確認(rèn)的。但是,還有其他類別的處理器稱為「可重構(gòu)處理器」。

            image.png

            基礎(chǔ) FPGA 架構(gòu)。圖源:Xilinx


            可重構(gòu)處理器由包括互連核算單元、內(nèi)存單元和操控平面的仿制陣列組成。為了運(yùn)轉(zhuǎn)程序,專用編譯器會(huì)構(gòu)建一個(gè)裝備文件,這個(gè)文件包括設(shè)置數(shù)組中每個(gè)元素行為的操控位。最常見的可重構(gòu)處理器類別是現(xiàn)場(chǎng)可編程門陣列 (FPGA)。

            FPGA 經(jīng)過啟用位級(jí)可裝備性來支撐廣泛的核算規(guī)模:可以裝備算術(shù)單元來完結(jié)對(duì)任意寬度數(shù)量進(jìn)行操作的功用,并且可以交融片上存儲(chǔ)塊以構(gòu)建不同巨細(xì)的存儲(chǔ)空間。

            可重構(gòu)處理器的一個(gè)優(yōu)點(diǎn)是它們可以對(duì)用硬件描述言語 (HDL) 編寫的芯片規(guī)劃進(jìn)行建模;這使公司可以在幾個(gè)小時(shí)內(nèi)測(cè)驗(yàn)他們的規(guī)劃,而不是流片芯片,這個(gè)進(jìn)程或許需求幾個(gè)月乃至幾年的時(shí)刻。FPGA 的缺陷是細(xì)粒度的位級(jí)可裝備性效率低下,典型的編譯時(shí)刻或許需求數(shù)小時(shí),并且所需的額外線路數(shù)量占用很多空間,并且在能量上也是糟蹋。因而,F(xiàn)PGA 一般用于在流片之前對(duì)規(guī)劃進(jìn)行原型規(guī)劃,由于由此發(fā)生的芯片將比其 FPGA 同類產(chǎn)品功能更高、效率更高。

            image.png

            處理器架構(gòu)的功能、功耗和靈活性的比較。圖源:ACM Computing Surveys

            雖然 FPGA 在功能和功耗方面存在問題,但可重構(gòu)性依然是 AI 加快器一個(gè)非常理想的特性。一般來說,一個(gè)芯片的規(guī)劃周期大約是 2-3 年,每天會(huì)有數(shù)不清的試驗(yàn)依靠芯片運(yùn)轉(zhuǎn)。但是,一個(gè)近期制作完結(jié)并花費(fèi)數(shù)百萬美元的芯片,往往是依據(jù)兩年多前存在的 AI 模型的假定規(guī)劃的,或許與當(dāng)前的模型無關(guān)。

            為了將高效、功能和可重構(gòu)性結(jié)合起來,一些草創(chuàng)公司規(guī)劃了可重構(gòu)處理器,它們被稱為 CGRA(Coarse-Grained Reconfigurable Arrays)。

            CGRA 在 1996 年被提出,與 FPGA 比較,CGRA 不支撐位級(jí)可裝備性,并且一般具有更嚴(yán)格的結(jié)構(gòu)和互連網(wǎng)絡(luò)。CGRA 具有高度的可重構(gòu)性,但粒度比 FPGA 更粗。


            數(shù)據(jù)流操作

            數(shù)據(jù)流(Dataflow)已經(jīng)有一段時(shí)刻了,起源可以追溯到 1970 時(shí)代。不同于傳統(tǒng)的馮諾依曼模型,它們是核算的另一種形式。

            在傳統(tǒng)的馮諾依曼模型中,程序被表明為一系列指令和暫時(shí)變量。但在數(shù)據(jù)流模型中,程序被表明為數(shù)據(jù)流圖(DFG,dataflow graph),其中輸入數(shù)據(jù)的一部分是運(yùn)用預(yù)訂的操作數(shù)(predetermined operands)核算的,核算機(jī)中的數(shù)據(jù)依據(jù)所表明的圖一直「活動(dòng)」到輸出,這一進(jìn)程由相似圖形的硬件核算而來。值得注意的是,硬件本質(zhì)上是并行的。

            image.png

            深度學(xué)習(xí)軟件到數(shù)據(jù)流圖映射的比如。圖源:Wave Computing — HotChips 2017


            在 AI 加快器的布景下,履行數(shù)據(jù)流有以下兩個(gè)優(yōu)勢(shì):

            • 深度學(xué)習(xí)使用程序是結(jié)構(gòu)性的,因而有一個(gè)由使用程序?qū)拥膶蛹?jí)結(jié)構(gòu)決議的核算圖。所以,數(shù)據(jù)流圖已經(jīng)被放入代碼中。比較之下,馮諾依曼使用程序首先被序列化為一系列指令,這些指令隨后需求(重新)并行化以提供給處理器;
            • 數(shù)據(jù)流圖是核算問題的架構(gòu)不可知(architecturally-agnostic)表明。它抽象出所有源于架構(gòu)自身的不必要的約束(例如,指令集支撐的寄存器或操作數(shù)等),并且程序的并行性僅受核算問題自身的固有并行維度的限制,而不是受核算問題自身的并行維度限制。 


            內(nèi)存處理

            研究人員在進(jìn)步加快器的核算吞吐量 (FLOP) 上花費(fèi)了很多精力,即芯片(或體系)每秒提供的最大核算數(shù)量。但是,片上核算吞吐量并不是悉數(shù),還有內(nèi)存寬帶,因其片上核算速度超過片外內(nèi)存?zhèn)鬏敂?shù)據(jù)的速度,形成功能瓶頸。此外,從能量視點(diǎn)來看, AI 模型中存在著很高的內(nèi)存訪問本錢,將數(shù)據(jù)移入和移出主存儲(chǔ)器比進(jìn)行實(shí)踐核算的本錢高幾個(gè)數(shù)量級(jí)。

            image.png

            45nm CMOS 技能的典型內(nèi)存和核算本錢。圖源:ISSCC 2014 / M.Horowitz

            AI 加快器公司為降低內(nèi)存本錢常選用「近數(shù)據(jù)處理,near-data processing」辦法。這些公司規(guī)劃了小型且高效的軟件操控存儲(chǔ)器(也稱為便箋存儲(chǔ)器,Scratchpad Memory),它們將處理過的部分?jǐn)?shù)據(jù)存儲(chǔ)在中心芯片上,用于高速和低功耗并行處理。經(jīng)過削減對(duì)片外存儲(chǔ)器(大而遠(yuǎn)存儲(chǔ)器)的訪問次數(shù),這種辦法在削減訪問數(shù)據(jù)時(shí)刻和動(dòng)力本錢方面邁出了第一步。

            近數(shù)據(jù)處理的極端是 PIM(Processing-in-Memory),這種技能可以追溯到 1970 時(shí)代。在 PIM 體系中,主內(nèi)存模塊是用數(shù)字邏輯元件(如加法器或乘法器)制作的,核算處理位于內(nèi)存內(nèi)部。因而,不需求將存儲(chǔ)的數(shù)據(jù)傳送到中間線緩沖器。商業(yè)化的 PIM 解決方案依然不是很常見,由于制作技能和辦法依然穩(wěn)定,并且規(guī)劃一般被認(rèn)為是僵化的。

            image.png

            依據(jù)點(diǎn)積模仿處理的神經(jīng)形狀核算。圖源:Nature Communications


            許多 PIM 依靠于模仿核算(analog computations)。具體來說,在 AI 使用中,加權(quán)點(diǎn)積在模仿域中的核算辦法相似于大腦處理信號(hào)的辦法,這便是為什么這種做法一般也被稱為「神經(jīng)形狀核算」的原因。由于核算是在模仿域中完結(jié)的,但輸入和輸出數(shù)據(jù)是數(shù)字的,神經(jīng)形狀解決方案需求特別的模數(shù)和數(shù)模轉(zhuǎn)換器,但這些在面積和功率上的本錢都很高。