由于摩爾定律將壽終正寢,英特爾的芯片設(shè)計(jì)專家們正另辟蹊徑解決百億億次(exascale)挑戰(zhàn),他們已設(shè)想了一種新的架構(gòu),有望一舉終結(jié)通用處理器這個(gè)概念和X86指令集這個(gè)現(xiàn)代計(jì)算的基礎(chǔ)。
他們提出的這種新架構(gòu)名為可配置空間加速器(CPA),但“加速器”這個(gè)詞取名不當(dāng),因?yàn)樗麄兲岢龅氖且环N構(gòu)建處理器或協(xié)處理器的方法,這種處理器或協(xié)處理器實(shí)際上是數(shù)據(jù)流引擎,而不是串行處理器或矢量協(xié)處理器,可以直接處理程序在按傳統(tǒng)的意義被編譯到CPU之前創(chuàng)建的圖形。CSA方法有點(diǎn)類似搭載數(shù)學(xué)協(xié)處理器的開關(guān)ASIC混合體,如果需要支持老式應(yīng)用,可能還有一個(gè)可選的X86協(xié)處理器
數(shù)據(jù)流引擎并不是什么新概念。現(xiàn)代開關(guān)式芯片就采用了這種工作方式,因而讓其可編程性達(dá)到一定的程度,而不是僅僅成為高速傳輸數(shù)據(jù)包的靜態(tài)器件。英特爾整合到CSA上的許多想法已經(jīng)在Graphcore公司的智能處理單元(IPU)上得到了體現(xiàn)。這里很重要的一點(diǎn)是,英特爾這個(gè)巨頭擯棄X86架構(gòu)(除了數(shù)據(jù)流的基本控制),讓計(jì)算的一大部分遠(yuǎn)離嚴(yán)格定義的馮?諾依曼架構(gòu)。所以,用可配置空間架構(gòu)來形容這種新的計(jì)算方法可能更適合,也許應(yīng)該將至強(qiáng)芯片視為其協(xié)處理器,而不是反過來。
不管怎樣,CSA的基本思路聽起來很簡(jiǎn)單,但是用編譯器來實(shí)現(xiàn)可能很難,即便這確實(shí)看起來為處理各種工作負(fù)載的一大批計(jì)算引擎提供了幾乎無比廣闊的前景。送交阿爾貢國立實(shí)驗(yàn)室(英特爾是該實(shí)驗(yàn)室的主承包商)的第一代Aurora準(zhǔn)百億億次系統(tǒng)在去年秋天被受挫后,我們采訪了英特爾企業(yè)和HPC部門的總經(jīng)理巴里?戴維斯(Barry Davis),暢談?dòng)⑻貭柨赡懿捎檬裁醇夹g(shù)為阿爾貢國立實(shí)驗(yàn)室制造系統(tǒng),當(dāng)時(shí)英特爾有意含糊其辭。不過CSA方面的信息倒與戴維斯說的相一致。
基本想法是,獲取程序的數(shù)據(jù)流圖(該圖由所有編譯器創(chuàng)建);在處理成特定處理器的指令集、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流之前,將該數(shù)據(jù)流直接放在一系列大規(guī)模并行計(jì)算元件及之間的互連件上。你可以將該數(shù)據(jù)流直接放在用硅蝕刻的靜態(tài)硬件上,而不是像FPGA那樣用Verilog或VHDL編寫語言來構(gòu)建,所以別搞錯(cuò)了“可配置”在這里的含義。
可配置部分是指,英特爾會(huì)有許多不同的CSA配置(可能數(shù)十種乃至數(shù)百種),針對(duì)具體應(yīng)用的數(shù)據(jù)流,從以單精度和雙精度浮點(diǎn)運(yùn)算為主的傳統(tǒng)模擬和建模,到結(jié)合使用不同精度的浮點(diǎn)和整數(shù)的機(jī)器學(xué)習(xí),這取決于工作負(fù)載是訓(xùn)練網(wǎng)絡(luò)還是由此而來的推理分類。這與英特爾對(duì)至強(qiáng)處理器采取的做法形成了對(duì)照,“Skylake”這一代至強(qiáng)處理器有三種版本,每種版本有10個(gè)、18個(gè)或28個(gè)核心,英特爾調(diào)整了核心數(shù)量和時(shí)鐘頻率,還調(diào)整了其他元件,出于市場(chǎng)對(duì)不同價(jià)位的需要。有了CSA,你想要激活該器件中盡可能多的底層元件,用正好夠用的資源來處理任何特定的工作負(fù)載。這與其說是一種批量制造做法,還不如說是針對(duì)具體應(yīng)用的批量定制――我們認(rèn)為,隨著摩爾定律氣數(shù)已盡,勢(shì)必會(huì)這樣。
CSA由英特爾聯(lián)合美國國防部一同開發(fā),因向美國專利及商標(biāo)局提交了專利申請(qǐng)而被公眾熟知(申請(qǐng)公告早在7月5日就發(fā)布了)。實(shí)際上英特爾早在2016年12月30日提交了專利申請(qǐng)。按照國防部的這份合同,英特爾提交了其他專利申請(qǐng),包括涉及可擴(kuò)展分級(jí)式互連拓?fù)浣Y(jié)構(gòu)的一項(xiàng)專利和涉及對(duì)稱尋址的另一項(xiàng)專利。CSA專利申請(qǐng)之所以備受關(guān)注,原因在于專利提到的設(shè)計(jì)師除了一批自英特爾多年前收購DEC Alpha芯片公司以來一直效力于英特爾的芯片設(shè)計(jì)師外,還有阿爾?加拉(Al Gara),他正是IBM的BlueGene系列并行超級(jí)計(jì)算機(jī)的架構(gòu)師,以及英特爾Knights系列并行處理器的架構(gòu)師。
CSA備受關(guān)注的還有一個(gè)原因是,如果傳聞屬實(shí),英特爾會(huì)竭力將CSA推向市場(chǎng),可能會(huì)先用在安裝在阿爾貢國立實(shí)驗(yàn)室的“Aurora”A21超級(jí)計(jì)算機(jī):顧名思義,這臺(tái)超級(jí)計(jì)算機(jī)預(yù)計(jì)是2021年安裝于美國的第一臺(tái)百億億次系統(tǒng)。坊間傳聞,CSA的后一代版本最終可能用在美國政府資助研發(fā)的其他超級(jí)計(jì)算機(jī)中;近日剛宣布的得克薩斯高級(jí)計(jì)算中心(TACC)的“Frontera”超級(jí)計(jì)算機(jī)很顯然是下一個(gè)使用CSA的系統(tǒng),因?yàn)樗呀?jīng)使用英特爾至強(qiáng)用于計(jì)算,更何況TACC在使用英特爾的Knights系列方面有著豐富經(jīng)驗(yàn)。坦率地說,叫停Knights后,英特爾不光欠阿爾貢國立實(shí)驗(yàn)室一份情,還欠TACC一份情。不過那僅僅是我們單方面的猜測(cè)。
CSA遵循極簡(jiǎn)設(shè)計(jì)方法,只把具體工作負(fù)載必不可少的那些計(jì)算、互連、交換和存儲(chǔ)元件放在一塊芯片上。CSA的基礎(chǔ)是網(wǎng)格狀的計(jì)算和存儲(chǔ)元件,如下圖所示:
上圖中有處理整數(shù)或浮點(diǎn)指令的處理元件、處理元件之間的網(wǎng)格互連件,以及這種功能:塊(tile)上本地結(jié)合存儲(chǔ)元件,并與結(jié)構(gòu)(fabric)連起來,供處理元件共用。這個(gè)CSA加速器可按一對(duì)一的方式與多個(gè)核心實(shí)現(xiàn)在一塊至強(qiáng)芯片上,兩者都訪問同一主內(nèi)存,也可以與同一封裝件中的多塊芯片連同封裝件上的互連件一同實(shí)現(xiàn),或者作為單獨(dú)的器件,有自己的插座,或者基于PCI-Express總線,使用卸載模式。我們認(rèn)為,英特爾對(duì)卸載模式?jīng)]有興趣,它希望把CSA與至強(qiáng)封裝在一起,可能采用多對(duì)一配置:至強(qiáng)負(fù)責(zé)裝入CSA程序,為在一個(gè)或多個(gè)CSA上運(yùn)行的應(yīng)用程序從熱存儲(chǔ)或冷存儲(chǔ)提取數(shù)據(jù)。
該圖顯示了應(yīng)用程序代碼、編譯器創(chuàng)建的數(shù)據(jù)流圖以及CSA芯片中用于執(zhí)行從輸入到輸出的數(shù)據(jù)流的元件三者之間的關(guān)系:
這個(gè)例子顯然很簡(jiǎn)單。數(shù)據(jù)流會(huì)變得很復(fù)雜,架構(gòu)會(huì)變得要復(fù)雜一點(diǎn),如下圖所示:
在這里,芯片上有多層開關(guān)來互連執(zhí)行整數(shù)和融合乘加(FMA)運(yùn)算的處理元件,它們與外面的內(nèi)存控制器連起來,數(shù)據(jù)在此存儲(chǔ)起來,然后再進(jìn)行處理。處理元件有自己的緩沖器和寄存器。這進(jìn)一步構(gòu)建成了更復(fù)雜的CSA器件,如下圖所示:
在這個(gè)更復(fù)雜的器件中,處理元件集群由請(qǐng)求地址文件充當(dāng)前端,有各自的表后備緩沖器(TLB),然后將數(shù)據(jù)輸出到L2緩存接口、L2緩存組以及由整個(gè)器件共享的一片L3緩存。各個(gè)CSA塊上的結(jié)構(gòu)分散到多個(gè)塊上,隨著程序變大、數(shù)據(jù)流因而變大,數(shù)據(jù)流可以無縫地分散到這些塊上的元件。問題是,有好多方法來實(shí)現(xiàn)CSA;必要時(shí),CPU的傳統(tǒng)元件可以添加到該器件上,若不需要,可以完全避免。
據(jù)專利撰寫人聲稱,CSA方法的主要優(yōu)點(diǎn)是,它提供了非常密集的計(jì)算和內(nèi)存,能效又很高,因?yàn)槌绦蜻\(yùn)行時(shí),只有某個(gè)數(shù)據(jù)流需要的元件才被激活。芯片上其他所有元件處于閑置的狀態(tài)。這到頭來會(huì)是一大塊暗硅(dark silicon),浪費(fèi)了錢財(cái),所以關(guān)鍵是研制針對(duì)具體的應(yīng)用和數(shù)據(jù)流來定制的CSA器件。
專利撰寫人寫道:“處理元件(PE)陣列可能是異構(gòu)的,比如說,沒有一個(gè)PE支持完整的CSA數(shù)據(jù)流架構(gòu),及/或一個(gè)或多個(gè)PE被編程(比如定制),以執(zhí)行少數(shù)幾種但高效的操作。某些實(shí)施方案(embodiment)因而獲得的加速器有一組處理元件:相比路線圖架構(gòu),它們具有計(jì)算密集的特點(diǎn),不過相對(duì)現(xiàn)有的HPC方案,能效和性能高出大約一個(gè)數(shù)量級(jí)。由于器件和數(shù)據(jù)流的性質(zhì)使然,程序可供利用的并行機(jī)制是顯式的,直接映射到器件上。按照設(shè)想,CSA的軟件堆棧拿來C、C++和Fortran程序后可以直接扔給CSA,如下圖所示:
英特爾提議用于CSA的原型編譯器(我們猜測(cè),如果CSA的確要用于超級(jí)計(jì)算機(jī)Aurora A21,英特爾已實(shí)現(xiàn)了該編譯器)有一個(gè)Clang前端,它拋開了針對(duì)加速的代碼區(qū)域的LLVM中間表示(IR),然后該IR直接編譯到了CSA本身。
在該器件上實(shí)現(xiàn)傳統(tǒng)的順序代碼需要一些精巧的接口,以便訪問器件上的內(nèi)存,英特爾顯然意識(shí)到了這點(diǎn)。英特爾表示,訣竅在于將內(nèi)存訪問視作與其他任何類型的數(shù)據(jù)流操作無異。
專利申請(qǐng)書寫道:“CSA的實(shí)施方案提供了基本的內(nèi)存操作,比如加載(拿來地址通道后,往響應(yīng)通道填充對(duì)應(yīng)于地址的值),比如存儲(chǔ)。CSA的實(shí)施方案還可能提供更高級(jí)的操作,比如內(nèi)存中的原子操作和一致性操作等。這些操作可能與馮?諾依曼架構(gòu)的對(duì)應(yīng)操作有相似的語義。CSA的實(shí)施方案還可以加速用C和Fortran等順序語言描述的現(xiàn)有程序。支持這些語言模型的結(jié)果是,解決了程序內(nèi)存訪問順序,比如通常由這些語言規(guī)定的存儲(chǔ)操作的順序處理?!?/p>
再說一下,重要的是代碼方面的并行機(jī)制顯式獲取,并映射到CSA上,附有處理元件、存儲(chǔ)、交換等部分的特定配置。所以,各種各樣的并行機(jī)制(指令、數(shù)據(jù)、管道、矢量、內(nèi)存、線程和任務(wù))都可以按某種方式實(shí)現(xiàn)在CSA器件中。
專利申請(qǐng)書中沒有太多的信息來表明CSA的性能可與標(biāo)準(zhǔn)至強(qiáng)CPU相媲美,不過有幾個(gè)線索可尋。處理元件與CPU核心(核心上有許多元件來維持狀態(tài),并保留進(jìn)出順序執(zhí)行單元、分支預(yù)測(cè)單元和推測(cè)執(zhí)行單元的數(shù)據(jù))相比非常小時(shí),CSA方法可以將數(shù)量比使用矢量處理器多出16倍的FMA單元塞到一塊芯片上。大概這是與至強(qiáng)中的AVX-2或AVX-512單元作比較。此外,英特爾表示CSA塊的浮點(diǎn)性能可能比CPU核心高出一個(gè)數(shù)量級(jí)。正如HPC界所希望的,如果我們要在20兆瓦的功率范圍內(nèi)達(dá)到百億億次計(jì)算能力,這種提升將必不可少。
在專利申請(qǐng)書中,英特爾展示了做成片上系統(tǒng)的CSA,多個(gè)塊裹以共享的緩存和內(nèi)存控制器,而總線控制器與環(huán)狀互連件相連接。在另一種可能的配置中,一個(gè)CPU連接至CSA協(xié)處理器,南橋I/O控制器和主內(nèi)存如往常那樣與CPU相連接。英特爾承認(rèn),這可能是Arm或MIPS處理器,而不只是其自己的X86處理器,這值得關(guān)注。還有一種配置顯示CSA與雙插座服務(wù)器中的芯片組相連接,這跟傳統(tǒng)方案一樣。但下一種配置配置兩個(gè)CSA連在同一塊板上,它們與面向外部I/O的南橋芯片組之間采用點(diǎn)對(duì)點(diǎn)互連件。專利申請(qǐng)書上的最后一張圖還顯示了如何在CSA上仿真二進(jìn)制代碼,針對(duì)X86芯片或另一種架構(gòu)。這對(duì)于方塊圖而言顯然很容易,但是在實(shí)際情況下處理計(jì)算效率卻很難。仿真是安騰芯片沒有做好的一方面,但它的編譯器也不是很好,這是安騰失敗的兩個(gè)原因。所以這方面值得深思。
最后要說的一點(diǎn)是,我們認(rèn)為CSA基本上過了第一道關(guān)。鑒于三年前英特爾斥資167億美元收購了FPGA制造商Altera,現(xiàn)又準(zhǔn)備推出至強(qiáng)-FPGA混合芯片,如果CSA更易于編程,能夠針對(duì)許多工作負(fù)載獲得更理想的結(jié)果,那么CSA對(duì)于英特爾的FPGA業(yè)務(wù)會(huì)帶來怎樣的影響?如果英特爾從FPGA轉(zhuǎn)向CSA,勢(shì)必要燒大量的錢。