长兴郴障科技有限公司

澎湃Logo
下載客戶端

登錄

  • +1

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

2022-02-14 08:50
來源:澎湃新聞·澎湃號·湃客
字號

選自 Medium

作者:Adi Fuchs

機(jī)器之心編譯

機(jī)器之心編輯部

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

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

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

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

ISA 描述了指令和操作如何由編譯器編碼,然后由處理器解碼和執(zhí)行,它是處理器架構(gòu)中面向程序員的部分。常見的例子是 Intel 的 x86、ARM、IBM Power、MIPS 和 RISC-V。我們可以將 ISA 視為處理器支持所有操作的詞匯表。通常,它由算術(shù)指令(如加、乘)、內(nèi)存操作(加載、存儲)和控制操作(例如,在 if 語句中使用的分支)組成。

目前看來,CPU ISA 已被分類為精簡指令集計(jì)算 (RISC) 和復(fù)雜指令集計(jì)算 (CISC):

RISC ISA 由簡單的指令組成,它們支持少量簡單操作(加、乘等)。所有指令的位長相同(例如 32 位),因此,RISC 指令的硬件解碼器被認(rèn)為是簡單的;

相反,在 CISC ISA 中,不同的指令可以有不同的長度,單個(gè)指令就可以描述操作和條件的復(fù)雜組合。

通常,CISC 程序比其等效的 RISC 程序代碼占用空間更小,即存儲程序指令所需的內(nèi)存量。這是因?yàn)閱蝹€(gè) CISC 指令可以跨越多個(gè) RISC 指令,并且可變長度的 CISC 指令被編碼為使得最少的位數(shù)代表最常見的指令。然而,為了體現(xiàn)復(fù)雜指令帶來的優(yōu)勢,編譯器需要做的足夠復(fù)雜才能實(shí)現(xiàn)。

x86(橙色)相對于 ARM(紫色)的計(jì)算市場遞減率預(yù)測。圖源:AMD/ExtremeTech

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

特定領(lǐng)域的 ISA

值得注意的是,RISC 和 CISC 都是用于構(gòu)建通用處理器的通用指令集架構(gòu)。但在加速器的背景下, CISC 與 RISC 相比, RISC 具有簡單性和簡潔性,更受歡迎(至少對于智能手機(jī)而言)。

45nm CMOS 處理器中執(zhí)行 ADD 指令能耗。圖源:M.Horowitz ISSCC 2014

很多 AI 加速器公司采用特定領(lǐng)域的 ISA。鑒于現(xiàn)有的精簡指令集架構(gòu)(以及潛在的處理核心),可以通過僅支持目標(biāo)應(yīng)用領(lǐng)域所需的指令子集來進(jìn)一步減少它。特定領(lǐng)域的 ISA 進(jìn)一步簡化了處理內(nèi)核和硬件 / 軟件接口,以實(shí)現(xiàn)高效的加速器設(shè)計(jì)。在通常由線性代數(shù)和非線性激活組成的 AI 應(yīng)用中,不需要許多「奇異」類型的運(yùn)算。因此,ISA 可以設(shè)計(jì)為支持相對較窄的操作范圍。

使用現(xiàn)有 RISC ISA 的簡化版本的好處是,一些 RISC 公司(如 ARM )出售現(xiàn)有 IP,即支持完整 ISA 的現(xiàn)有處理內(nèi)核,可用作定制處理的基線,用于加速器芯片的核心。這樣,加速器供應(yīng)商就可以依賴已經(jīng)過驗(yàn)證并可能部署在其他系統(tǒng)中的基線設(shè)計(jì);這是從頭開始設(shè)計(jì)新架構(gòu)更可靠的替代方案,對于工程資源有限、希望獲得現(xiàn)有處理生態(tài)系統(tǒng)支持或希望縮短啟動(dòng)時(shí)間的初創(chuàng)公司尤其有吸引力。

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

VLIW 架構(gòu)是由 Josh Fisher 在 20 世紀(jì) 80 年代早期提出,當(dāng)時(shí)集成電路制造技術(shù)和高級語言編譯器技術(shù)出現(xiàn)了巨大的進(jìn)步。其主要思想是:

將多個(gè)相互無依賴的指令封裝到一條超長的指令字中;

CPU 中有對應(yīng)數(shù)量的 ALU 完成相應(yīng)的指令操作;

指令之間的依賴性和調(diào)度由編譯器來完成。

就像特定領(lǐng)域的 ISA 可以被認(rèn)為是 RISC 思想(更簡單的指令,支持的操作較少)的擴(kuò)展,同樣地,我們可以將 CISC 進(jìn)行多個(gè)操作組合成單個(gè)復(fù)雜指令擴(kuò)展,這些架構(gòu)被稱為超長指令字 (VLIW)。

VLIW 架構(gòu)由算術(shù)和存儲單元的異構(gòu)數(shù)據(jù)路徑陣列組成。異構(gòu)性源于每個(gè)單元的時(shí)序和支持功能的差異:例如,計(jì)算簡單邏輯操作數(shù)的結(jié)果可能需要 1-2 個(gè)周期,而內(nèi)存操作數(shù)可能需要數(shù)百個(gè)周期。

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

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

VLIW 架構(gòu)的優(yōu)勢在于,通過指令編排處理器數(shù)據(jù)路徑的成本可能顯著降低;缺點(diǎn)是我們需要保證數(shù)據(jù)路徑中各個(gè)單元之間的工作負(fù)載得到平衡,以避免資源未得到充分利用。因此,要實(shí)現(xiàn)高性能執(zhí)行,編譯器需要能夠進(jìn)行復(fù)雜的靜態(tài)調(diào)度。更具體地說,編譯器需要分析程序,將數(shù)據(jù)分配給單元,知道如何對不同的數(shù)據(jù)路徑資源計(jì)時(shí),并以在給定時(shí)間利用最多單元的方式將代碼分解為單個(gè)指令。歸根結(jié)底,編譯器需要了解不同的數(shù)據(jù)路徑結(jié)構(gòu)及其時(shí)序,并解決計(jì)算復(fù)雜的問題,以提取高指令級并行 (ILP) 并實(shí)現(xiàn)高性能執(zhí)行。

脈動(dòng)陣列

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

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

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

脈動(dòng)結(jié)構(gòu)是執(zhí)行矩陣乘法的有效方式(DNN 工作負(fù)載具有豐富的矩陣乘法)。谷歌的 TPU 是第一個(gè)使用 AI 的脈動(dòng)陣列。因此,在這之后,其他公司也加入了脈動(dòng)陣列行列,在自家加速硬件中集成了脈動(dòng)執(zhí)行單元,例如 NVIDIA 的 Tensor Core。

可重構(gòu)處理器

我們所熟悉的處理器包括 CPU、GPU 和一些加速器,它們的流程依賴于預(yù)先確定數(shù)量的算術(shù)單元和運(yùn)行時(shí)行為,這些行為是在運(yùn)行時(shí)根據(jù)執(zhí)行的程序指令確定的。但是,還有其他類別的處理器稱為「可重構(gòu)處理器」。

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

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

FPGA 通過啟用位級可配置性來支持廣泛的計(jì)算范圍:可以配置算術(shù)單元來實(shí)現(xiàn)對任意寬度數(shù)量進(jìn)行操作的功能,并且可以融合片上存儲塊以構(gòu)建不同大小的存儲空間。

可重構(gòu)處理器的一個(gè)優(yōu)點(diǎn)是它們可以對用硬件描述語言 (HDL) 編寫的芯片設(shè)計(jì)進(jìn)行建模;這使公司能夠在幾個(gè)小時(shí)內(nèi)測試他們的設(shè)計(jì),而不是流片芯片,這個(gè)過程可能需要幾個(gè)月甚至幾年的時(shí)間。FPGA 的缺點(diǎn)是細(xì)粒度的位級可配置性效率低下,典型的編譯時(shí)間可能需要數(shù)小時(shí),并且所需的額外線路數(shù)量占用大量空間,而且在能量上也是浪費(fèi)。因此,F(xiàn)PGA 通常用于在流片之前對設(shè)計(jì)進(jìn)行原型設(shè)計(jì),因?yàn)橛纱水a(chǎn)生的芯片將比其 FPGA 同類產(chǎn)品性能更高、效率更高。

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

雖然 FPGA 在性能和功耗方面存在問題,但可重構(gòu)性仍然是 AI 加速器一個(gè)非常理想的特性。一般來說,一個(gè)芯片的設(shè)計(jì)周期大約是 2-3 年,每天會有數(shù)不清的實(shí)驗(yàn)依賴芯片運(yùn)行。但是,一個(gè)近期制造完成并花費(fèi)數(shù)百萬美元的芯片,往往是基于兩年多前存在的 AI 模型的假設(shè)設(shè)計(jì)的,可能與當(dāng)前的模型無關(guān)。

為了將高效、性能和可重構(gòu)性結(jié)合起來,一些初創(chuàng)公司設(shè)計(jì)了可重構(gòu)處理器,它們被稱為 CGRA(Coarse-Grained Reconfigurable Arrays)。

CGRA 在 1996 年被提出,與 FPGA 相比,CGRA 不支持位級可配置性,并且通常具有更嚴(yán)格的結(jié)構(gòu)和互連網(wǎng)絡(luò)。CGRA 具有高度的可重構(gòu)性,但粒度比 FPGA 更粗。

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

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

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

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

在 AI 加速器的背景下,執(zhí)行數(shù)據(jù)流有以下兩個(gè)優(yōu)勢:

深度學(xué)習(xí)應(yīng)用程序是結(jié)構(gòu)性的,因此有一個(gè)由應(yīng)用程序?qū)拥膶蛹壗Y(jié)構(gòu)決定的計(jì)算圖。所以,數(shù)據(jù)流圖已經(jīng)被放入代碼中。相比之下,馮諾依曼應(yīng)用程序首先被序列化為一系列指令,這些指令隨后需要(重新)并行化以提供給處理器;

數(shù)據(jù)流圖是計(jì)算問題的架構(gòu)不可知(architecturally-agnostic)表示。它抽象出所有源于架構(gòu)本身的不必要的約束(例如,指令集支持的寄存器或操作數(shù)等),并且程序的并行性僅受計(jì)算問題本身的固有并行維度的限制,而不是受計(jì)算問題本身的并行維度限制。

內(nèi)存處理

研究人員在提高加速器的計(jì)算吞吐量 (FLOP) 上花費(fèi)了大量精力,即芯片(或系統(tǒng))每秒提供的最大計(jì)算數(shù)量。然而,片上計(jì)算吞吐量并不是全部,還有內(nèi)存寬帶,因其片上計(jì)算速度超過片外內(nèi)存?zhèn)鬏敂?shù)據(jù)的速度,造成性能瓶頸。此外,從能量角度來看, AI 模型中存在著很高的內(nèi)存訪問成本,將數(shù)據(jù)移入和移出主存儲器比進(jìn)行實(shí)際計(jì)算的成本高幾個(gè)數(shù)量級。

45nm CMOS 技術(shù)的典型內(nèi)存和計(jì)算成本。圖源:ISSCC 2014 / M.Horowitz

AI 加速器公司為降低內(nèi)存成本常采用「近數(shù)據(jù)處理,near-data processing」方法。這些公司設(shè)計(jì)了小型且高效的軟件控制存儲器(也稱為便箋存儲器,Scratchpad Memory),它們將處理過的部分?jǐn)?shù)據(jù)存儲在核心芯片上,用于高速和低功耗并行處理。通過減少對片外存儲器(大而遠(yuǎn)存儲器)的訪問次數(shù),這種方法在減少訪問數(shù)據(jù)時(shí)間和能源成本方面邁出了第一步。

近數(shù)據(jù)處理的極端是 PIM(Processing-in-Memory),這種技術(shù)可以追溯到 1970 年代。在 PIM 系統(tǒng)中,主內(nèi)存模塊是用數(shù)字邏輯元件(如加法器或乘法器)制造的,計(jì)算處理位于內(nèi)存內(nèi)部。因此,不需要將存儲的數(shù)據(jù)傳送到中間線緩沖器。商業(yè)化的 PIM 解決方案仍然不是很常見,因?yàn)橹圃旒夹g(shù)和方法仍然穩(wěn)定,而且設(shè)計(jì)通常被認(rèn)為是僵化的。

基于點(diǎn)積模擬處理的神經(jīng)形態(tài)計(jì)算。圖源:Nature Communications

許多 PIM 依賴于模擬計(jì)算(analog computations)。具體來說,在 AI 應(yīng)用中,加權(quán)點(diǎn)積在模擬域中的計(jì)算方式類似于大腦處理信號的方式,這就是為什么這種做法通常也被稱為「神經(jīng)形態(tài)計(jì)算」的原因。由于計(jì)算是在模擬域中完成的,但輸入和輸出數(shù)據(jù)是數(shù)字的,神經(jīng)形態(tài)解決方案需要特殊的模數(shù)和數(shù)模轉(zhuǎn)換器,但這些在面積和功率上的成本都很高。

相關(guān)閱讀:

原文鏈接:https://medium.com/@adi.fu7/ai-accelerators-part-iii-architectural-foundations-3f1f73d61f1f? THE END

轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)

投稿或?qū)で髨?bào)道:content@jiqizhixin.com

原標(biāo)題:《詳解AI加速器(三):架構(gòu)基礎(chǔ)離不開ISA、可重構(gòu)處理器……》

閱讀原文

    本文為澎湃號作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場,澎湃新聞僅提供信息發(fā)布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。

            查看更多

            掃碼下載澎湃新聞客戶端

            滬ICP備14003370號

            滬公網(wǎng)安備31010602000299號

            互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006

            增值電信業(yè)務(wù)經(jīng)營許可證:滬B2-2017116

            ? 2014-2025 上海東方報(bào)業(yè)有限公司

            反饋
            百家乐注册| 济州岛百家乐的玩法技巧和规则| 百家乐官网游戏策略| 六合彩资料大全| 澳门百家乐网40125| 在线百家乐平台| 任我赢百家乐软件中国有限公司| 15人百家乐官网桌布| 海立方娱乐城线路| 澳门新世纪娱乐城| 网上百家乐官网的技巧| 蒙特卡罗娱乐| 百家乐官网有人赢过吗| 百家乐官网桌游| 环球百家乐官网娱乐城| 百家乐翻天粤qvod| 威尼斯人娱乐cheng| 全讯网报码| 德州扑克葫芦| 大发888 赌博网站| 必博备用| 宁明县| 澳门百家乐官网有赢钱的吗| 在线百家乐官网怎么下注| 百家乐官网赢的方法| 利德赌博| 澳门百家乐官网赢钱技术| 百家乐官网怎么玩才会赢钱| 玩百家乐官网去哪个娱乐城最安全| 金花百家乐官网的玩法技巧和规则 | 百家乐里靴是什么意识| 大发888娱乐场下载iyou qrd| 大发888真钱游戏下载官网| 真錢棋牌游戏| 百家乐官网赌博策略大全| 百家乐官网必赢| KTV百家乐的玩法技巧和规则| 百家乐娱乐真人娱乐| 德州扑克书籍| 百家乐官网百家乐官网视频游戏世界| 赌博百家乐官网规则|