在2016年11月中旬舉辦的“2016年超算大會(huì)上”,,FPGA大廠Xilinx發(fā)布了可重配置加速棧(ReconfigurableAcceleraTIon Stack),。配合可重構(gòu)的FPGA,,這個(gè)架構(gòu)能解決可重構(gòu)計(jì)算中的編程困難問(wèn)題,,并加速可重構(gòu)計(jì)算生態(tài)的建設(shè)。
日前,,Amazon云服務(wù)AWS更是基于Xilinx高端Ultrascale+ FPGA推出了使用在云端的FPGA解決方案,。眾多巨頭的參與,,讓誕生幾十年的可重構(gòu)計(jì)算再度成為業(yè)界關(guān)注的焦點(diǎn),。但是你真的懂得可重構(gòu)計(jì)算嗎?
可重構(gòu)計(jì)算的起源
自從計(jì)算機(jī)誕生以來(lái),,科學(xué)家們就意識(shí)到計(jì)算機(jī)架構(gòu)對(duì)于其處理能力有著至關(guān)重要的影響。事實(shí)上,,從來(lái)不存在一種對(duì)所有運(yùn)算任務(wù)都是最優(yōu)解的計(jì)算機(jī)架構(gòu),。這是因?yàn)橛?jì)算機(jī)的運(yùn)算單元由芯片構(gòu)成,而在芯片的面積固定的情況下計(jì)算機(jī)架構(gòu)就決定了如何分配芯片的資源,。
舉例來(lái)說(shuō),,機(jī)器學(xué)習(xí)應(yīng)用(尤其是CNN)會(huì)比較注重并行運(yùn)算,因此最適合的架構(gòu)是能處理并行運(yùn)算的多核架構(gòu),,而每個(gè)核的運(yùn)算能力并不需要特別強(qiáng),。另一方面,在一些科學(xué)及工業(yè)運(yùn)算上,,計(jì)算是無(wú)法并行執(zhí)行的,,于是最適合的架構(gòu)是單核架構(gòu)并把這個(gè)核做到非常強(qiáng),。
根據(jù)數(shù)據(jù)和指令的執(zhí)行方式,60年代著名的計(jì)算機(jī)科學(xué)家Flynn提出了架構(gòu)的分類方法,,一共有單指令流單數(shù)據(jù)流(SISD),單指令流多數(shù)據(jù)流(SIMD),,多指令流單數(shù)據(jù)流(MISD)以及多指令流多數(shù)據(jù)流(MIMD)四種,。
正是由于對(duì)于不同的任務(wù)有最合適的架構(gòu),計(jì)算機(jī)科學(xué)家們開(kāi)始構(gòu)思如何使用一種靈活的架構(gòu)解決這個(gè)問(wèn)題,??芍貥?gòu)運(yùn)算(reconfigurable compuTIng)從上世紀(jì)60年代由Gerald Estrin提出,到現(xiàn)在已經(jīng)經(jīng)歷了半個(gè)世紀(jì),。
在Estrin最初的設(shè)想中,,可重構(gòu)運(yùn)算包括一個(gè)作為中央控制單元的標(biāo)準(zhǔn)CPU,以及眾多可重構(gòu)的運(yùn)算單元,,這些可重構(gòu)運(yùn)算單元由中央CPU控制,,在執(zhí)行相應(yīng)任務(wù)(如圖像處理,模式識(shí)別,,科學(xué)運(yùn)算等等)時(shí)配置成對(duì)應(yīng)的最優(yōu)架構(gòu)(即硬件編程),。
在理論上這個(gè)構(gòu)想非常成功:2001年,Reiner Hartenstein的論文中提到,,即使可重構(gòu)運(yùn)算使用的運(yùn)算單元(FPGA)時(shí)鐘頻率遠(yuǎn)低于當(dāng)時(shí)的CPU,,但是可重構(gòu)計(jì)算的綜合運(yùn)算能力卻可以超越CPU數(shù)倍,而功耗也遠(yuǎn)小于CPU,。
可重構(gòu)計(jì)算的例子(使用FPGA作為可重構(gòu)計(jì)算單元)
然而,,可重構(gòu)運(yùn)算在當(dāng)時(shí)并沒(méi)有普及。從可重構(gòu)運(yùn)算提出直到二十一世紀(jì)初的40年正是摩爾定律的黃金時(shí)期,,工藝一年半就更新一次,,因此架構(gòu)上更新帶來(lái)的性能增強(qiáng)可能還不如工藝更新來(lái)得強(qiáng)。
當(dāng)時(shí)最流行的就是靠摩爾定律狂飆突進(jìn)來(lái)實(shí)現(xiàn)處理器運(yùn)算能力的進(jìn)化,,因此與舊架構(gòu)相差很大的可重構(gòu)運(yùn)算并未得到重視:花五年時(shí)間研發(fā)的可重構(gòu)計(jì)算芯片很可能性能還不及依靠摩爾定律提升性能的傳統(tǒng)架構(gòu)CPU,。
同時(shí),由摩爾定律帶來(lái)的CPU性能增長(zhǎng)完全可以滿足當(dāng)時(shí)運(yùn)算的需求,。因此當(dāng)時(shí)可重構(gòu)運(yùn)算還只是停留在學(xué)術(shù)圈子里的精致理論,,業(yè)界推廣的動(dòng)力并不大。
另一個(gè)可重構(gòu)運(yùn)算普及的障礙是使用難度,。傳統(tǒng)CPU上編程使用抽象的高級(jí)語(yǔ)言(如C++,,Java等等)描述,已經(jīng)有成熟的體系,。然而可重構(gòu)計(jì)算需要的硬件編程通常使用硬件描述語(yǔ)言(Verilog,,VHDL等等),,對(duì)于程序員來(lái)說(shuō)需要大量的時(shí)間才能掌握。
這樣的話可重構(gòu)計(jì)算的生態(tài)就無(wú)法發(fā)展:門(mén)檻高意味著做的人少,,做的人少意味著知名度低,,相關(guān)項(xiàng)目數(shù)量少,這又導(dǎo)致了無(wú)法吸引到開(kāi)發(fā)者參與項(xiàng)目,。
異構(gòu)計(jì)算與可重構(gòu)計(jì)算
在今天,,摩爾定律遇到了瓶頸,因此可重構(gòu)計(jì)算普及的第一個(gè)障礙正在慢慢消失,。摩爾定律的瓶頸第一來(lái)自于經(jīng)濟(jì)學(xué),,第二來(lái)自于物理定律。從經(jīng)濟(jì)學(xué)的角度,,本來(lái)摩爾定律的目標(biāo)就是通過(guò)工藝制程進(jìn)步縮小特征尺寸讓相同功能的芯片需要的晶圓面積更小,。工藝制程進(jìn)步所需的研發(fā)成本和mask制作的NRE成本上升,而每塊芯片的制造成本下降
,。在之前的幾十年里,,工藝制程研發(fā)成本和mask制作的NRE成本上升平攤到每塊芯片中不會(huì)抵消太多芯片制造成本的下降,從而使用新工藝的芯片的總成本相對(duì)于舊工藝會(huì)下降,。然而,,在最新的工藝中,由于新工藝的mask NRE成本非常高,,生產(chǎn)的芯片必須出貨量非常大才能保證攤薄NRE成本上升,,這對(duì)于很多芯片設(shè)計(jì)公司來(lái)說(shuō)風(fēng)險(xiǎn)很大。因此經(jīng)濟(jì)學(xué)角度對(duì)于摩爾定律的驅(qū)動(dòng)力大大下降了,。
從物理學(xué)角度來(lái)說(shuō),,障礙主要來(lái)源于量子效應(yīng)和光刻精度。當(dāng)特征尺寸縮小到10nm的時(shí)候,,柵氧化層的厚度僅僅只有十個(gè)原子那么厚,,在那個(gè)時(shí)候會(huì)產(chǎn)生諸多量子效應(yīng),導(dǎo)致晶體管的特性難以控制,。
另一方面,,隨著大數(shù)據(jù)時(shí)代的來(lái)臨,整個(gè)社會(huì)產(chǎn)生的運(yùn)算需求迅猛增加,。這一點(diǎn)與摩爾定律遇到的瓶頸此消彼長(zhǎng),,導(dǎo)致計(jì)算機(jī)以及半導(dǎo)體行業(yè)不得不停下來(lái)仔細(xì)思考在除了繼續(xù)無(wú)腦改進(jìn)CPU制造工藝之外,還有沒(méi)有其他滿足運(yùn)算需求的辦法,。
很自然地,,大家想到了計(jì)算機(jī)架構(gòu)這件事。目前在云端的計(jì)算五花八門(mén),,包括機(jī)器學(xué)習(xí),,數(shù)據(jù)庫(kù),,圖像處理,金融運(yùn)算等等,。為什么運(yùn)算能力不足?因?yàn)榇蠹叶枷胍獔D方便,,只用通用的CPU來(lái)處理所有的任務(wù)。
前面已經(jīng)提到,,CPU的架構(gòu)并不適合所有任務(wù),,只是因?yàn)樵诖髷?shù)據(jù)時(shí)代來(lái)臨前CPU性能夠強(qiáng)而且編程夠方便所以大家也沒(méi)有想要試試其他的架構(gòu)(當(dāng)然在圖形加速方面用的是GPU,不過(guò)類似的例子并不普遍),。今天,顯然光CPU已經(jīng)不足以滿足所有運(yùn)算的需求了,,所以可以根據(jù)相應(yīng)的任務(wù)來(lái)設(shè)計(jì)專用加速器,,計(jì)算機(jī)由CPU控制并在執(zhí)行該任務(wù)時(shí)把相應(yīng)的運(yùn)算丟給加速器來(lái)完成。
大數(shù)據(jù)時(shí)代的數(shù)據(jù)量以指數(shù)上升(上圖),,而摩爾定律卻遇到了瓶頸(下圖),,晶體管性能增長(zhǎng)有限
這樣的架構(gòu)叫做異構(gòu)計(jì)算,即用各種不同的的運(yùn)算單元去完成相應(yīng)的任務(wù),,區(qū)別于傳統(tǒng)的用同一個(gè)運(yùn)算單元(CPU)去完成所有運(yùn)算,。
異構(gòu)計(jì)算比起可重構(gòu)計(jì)算來(lái)說(shuō),由于加速器的結(jié)構(gòu)是實(shí)現(xiàn)定義好的,,因此無(wú)需使用者(程序員)再次用硬件語(yǔ)言去配置它,,所以普及起來(lái)比起可重構(gòu)計(jì)算要容易不少。然而,,異構(gòu)計(jì)算也存在一個(gè)問(wèn)題:如果使用者需要臨時(shí)換一個(gè)應(yīng)用,,怎么辦?臨時(shí)安裝對(duì)應(yīng)的加速卡很難滿足需求,因?yàn)榧铀倏◤挠嗁?gòu),,安裝調(diào)試到最后能用需要很長(zhǎng)的時(shí)間,,換句話說(shuō),異構(gòu)計(jì)算的靈活性是受到限制的,。
從另一個(gè)角度來(lái)說(shuō),,如果可重構(gòu)計(jì)算能夠突破編程困難這個(gè)瓶頸,那么在大數(shù)據(jù)時(shí)代一定會(huì)成為計(jì)算機(jī)的重要部分,。為了解決編程困難問(wèn)題,,目前業(yè)界和學(xué)界都在開(kāi)發(fā)能把高級(jí)語(yǔ)言(如C語(yǔ)言)直接轉(zhuǎn)化為硬件的高級(jí)綜合(high-level synthesis tool)工具。除此以外,,OpenCL框架也是讓程序員直接編程硬件的可行道路,。但是,直到最近,,可重構(gòu)計(jì)算的生態(tài)還沒(méi)有起來(lái),。
大數(shù)據(jù)時(shí)代可重構(gòu)計(jì)算開(kāi)始發(fā)力
近日,,可重構(gòu)計(jì)算進(jìn)入了超級(jí)計(jì)算機(jī)業(yè)界的焦點(diǎn),Intel收購(gòu)FPGA制造商Altera,,并且預(yù)期到2020 年將會(huì)有三分之一的云端處理器使用CPU-FPGA的混合結(jié)構(gòu),。FPGA巨頭Xilinx也不甘落后,于11月中旬在2016年超算大會(huì)上發(fā)布了可重配置加速棧(Reconfigurable AcceleraTIon Stack),。配合可重構(gòu)的FPGA,,該架構(gòu)旨在解決可重構(gòu)計(jì)算中的編程困難問(wèn)題,并加速可重構(gòu)計(jì)算生態(tài)的建設(shè),。
在可重配置加速棧中,,Xilinx提供了幾款流行應(yīng)用框架的整合,包括Caffe(深度學(xué)習(xí)應(yīng)用),,F(xiàn)FMPEG(視頻處理)以及SQL(數(shù)據(jù)庫(kù)),。通過(guò)這樣的整合,云端服務(wù)器的程序員無(wú)需使用Verilog/VHDL硬件描述語(yǔ)言就可以在可重配置加速棧中使用FPGA資源加速這些框架中的應(yīng)用,。除此之外,,Xilinx還提供了各種庫(kù),通過(guò)在程序中調(diào)用這些庫(kù)也可以實(shí)現(xiàn)更靈活地用FPGA硬件加速程序,。
Xilinx推出的Reconfigurable AcceleraTIon Stack
這些用于云端的FPGA將會(huì)使用部分重配置方案,。通常FPGA配置過(guò)程包括硬件描述語(yǔ)言的綜合,布局布線,,最后產(chǎn)生比特流文件并寫(xiě)入以完成配置,。在這個(gè)過(guò)程中,綜合以及布局布線花費(fèi)的時(shí)間非常長(zhǎng),,可達(dá)數(shù)小時(shí),,而最后比特流文件寫(xiě)入以及配置可以在一秒內(nèi)完成。
用于云端的FPGA方案為了實(shí)現(xiàn)快速應(yīng)用切換,,預(yù)計(jì)將會(huì)使用硬IP(即針對(duì)某應(yīng)用硬件加速的比特流),,并在需要使用該應(yīng)用時(shí)快速寫(xiě)入該比特流。在未來(lái),,云端FPGA的生態(tài)預(yù)計(jì)將不止包括Xilinx,,還會(huì)包括許多第三方IP提供商,最后形成類似App Store的形式讓使用者方便地選購(gòu)對(duì)應(yīng)的硬件加速方案并實(shí)時(shí)加載/切換,。
Xilinx FPGA硬件也很強(qiáng),,可以非常高效地實(shí)現(xiàn)各種計(jì)算。例如,,實(shí)現(xiàn)相同的性能,,使用FPGA加速器僅需要CPU服務(wù)器所占空間的1/12, 功耗為CPU服務(wù)器的1/12,而成本也僅為CPU服務(wù)器的1/10,。
在云服務(wù)商這邊,,Amazon云服務(wù)也于近日推出了使用在云端的FPGA解決方案:EC2 F1。該解決方案使用Xilinx的高端Ultrascale+ FPGA(包含250萬(wàn)邏輯單元以及6800個(gè)DSP核),,并為每塊FPGA芯片配備64GB的DDR4內(nèi)存,,以及與CPU進(jìn)行接口的專用PCIe x16界面。該FPGA將會(huì)接入服務(wù)器,,并為相應(yīng)應(yīng)用做加速,。另外,F(xiàn)PGA可以通過(guò)高速PCIe接口組成陣列,,同一陣列中的FPGA可以以400Gbps的帶寬訪問(wèn)同一個(gè)內(nèi)存空間,。在未來(lái),Amazon可望使用FPGA-as-a-Service模式,,把FPGA加速(包括硬件以及相關(guān)加速I(mǎi)P)作為產(chǎn)品推出,。
亞馬遜推出EC2:F1架構(gòu),使用FPGA實(shí)現(xiàn)可重構(gòu)計(jì)算
除了亞馬遜之外,,微軟和Intel也在積極布局云端FPGA加速。微軟于兩年前開(kāi)始的Catapult計(jì)劃,,使用FPGA為Bing搜索服務(wù)加速,,并且將在Azure云服務(wù)商也使用FPGA加速??赏诓痪玫膶?lái),,我們能看到可重構(gòu)計(jì)算生態(tài)的一次快速成長(zhǎng),從而改變?cè)朴?jì)算的格局,。