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