大數據時代來臨,可重構計算復興
可重構計算的起源
自從計算機誕生以來,科學家們就意識到計算機架構對於其處理能力有著至關重要的影響。事實上,從來不存在一種對所有運算任務都是最優解的計算機架構。這是因為計算機的運算單元由晶元構成,而在晶元的面積固定的情況下計算機架構就決定了如何分配晶元的資源。舉例來說,機器學習應用(尤其是CNN)會比較注重並行運算,因此最適合的架構是能處理並行運算的多核架構,而每個核的運算能力並不需要特彆強。另一方面,在一些科學及工業運算上,計算是無法並行執行的,於是最適合的架構是單核架構並把這個核做到非常強。
根據數據和指令的執行方式,60年代著名的計算機科學家Flynn提出了架構的分類方法,一共有單指令流單數據流(SISD),單指令流多數據流(SIMD),多指令流單數據流(MISD)以及多指令流多數據流(MIMD)四種。
Flynn架構分類,圖來自Wiki
正是由於對於不同的任務有最合適的架構,計算機科學家們開始構思如何使用一種靈活的架構解決這個問題。可重構運算(reconfigurable computing)從上世紀60年代由Gerald Estrin提出,到現在已經經歷了半個世紀。在Estrin最初的設想中,可重構運算包括一個作為中央控制單元的標準CPU,以及眾多可重構的運算單元,這些可重構運算單元由中央CPU控制,在執行相應任務(如圖像處理,模式識別,科學運算等等)時配置成對應的最優架構(即硬體編程)。在理論上這個構想非常成功:2001年,Reiner Hartenstein的論文中提到,即使可重構運算使用的運算單元(FPGA)時鐘頻率遠低於當時的CPU,但是可重構計算的綜合運算能力卻可以超越CPU數倍,而功耗也遠小於CPU。
可重構計算的例子(使用FPGA作為可重構計算單元)
然而,可重構運算在當時並沒有普及。從可重構運算提出直到二十一世紀初的40年正是摩爾定律的黃金時期,工藝一年半就更新一次,因此架構上更新帶來的性能增強可能還不如工藝更新來得強。當時最流行的就是靠摩爾定律狂飆突進來實現處理器運算能力的進化,因此與舊架構相差很大的可重構運算並未得到重視:花五年時間研發的可重構計算晶元很可能性能還不及依靠摩爾定律提升性能的傳統架構CPU。同時,由摩爾定律帶來的CPU性能增長完全可以滿足當時運算的需求。因此當時可重構運算還只是停留在學術圈子裡的精緻理論,業界推廣的動力並不大。
另一個可重構運算普及的障礙是使用難度。傳統CPU上編程使用抽象的高級語言(如C++,Java等等)描述,已經有成熟的體系。然而可重構計算需要的硬體編程通常使用硬體描述語言(Verilog,VHDL等等),對於程序員來說需要大量的時間才能掌握。這樣的話可重構計算的生態就無法發展:門檻高意味著做的人少,做的人少意味著知名度低,相關項目數量少,這又導致了無法吸引到開發者參與項目。
異構計算與可重構計算
在今天,摩爾定律遇到了瓶頸,因此可重構計算普及的第一個障礙正在慢慢消失。摩爾定律的瓶頸第一來自於經濟學,第二來自於物理定律。從經濟學的角度,本來摩爾定律的目標就是通過工藝製程進步縮小特徵尺寸讓相同功能的晶元需要的晶圓面積更小。工藝製程進步所需的研發成本和mask製作的NRE成本上升,而每塊晶元的製造成本下降。在之前的幾十年里,工藝製程研發成本和mask製作的NRE成本上昇平攤到每塊晶元中不會抵消太多晶元製造成本的下降,從而使用新工藝的晶元的總成本相對於舊工藝會下降。然而,在最新的工藝中,由於新工藝的mask NRE成本非常高,生產的晶元必須出貨量非常大才能保證攤薄NRE成本上升,這對於很多晶元設計公司來說風險很大。因此經濟學角度對於摩爾定律的驅動力大大下降了。從物理學角度來說,障礙主要來源於量子效應和光刻精度。當特徵尺寸縮小到10nm的時候,柵氧化層的厚度僅僅只有十個原子那麼厚,在那個時候會產生諸多量子效應,導致晶體管的特性難以控制。
另一方面,隨著大數據時代的來臨,整個社會產生的運算需求迅猛增加。這一點與摩爾定律遇到的瓶頸此消彼長,導致計算機以及半導體行業不得不停下來仔細思考在除了繼續無腦改進CPU製造工藝之外,還有沒有其他滿足運算需求的辦法。很自然地,大家想到了計算機架構這件事。目前在雲端的計算五花八門,包括機器學習,資料庫,圖像處理,金融運算等等。為什麼運算能力不足?因為大家都想要圖方便,只用通用的CPU來處理所有的任務。前面已經提到,CPU的架構並不適合所有任務,只是因為在大數據時代來臨前CPU性能夠強而且編程夠方便所以大家也沒有想要試試其他的架構(當然在圖形加速方面用的是GPU,不過類似的例子並不普遍)。今天,顯然光CPU已經不足以滿足所有運算的需求了,所以可以根據相應的任務來設計專用加速器,計算機由CPU控制並在執行該任務時把相應的運算丟給加速器來完成。
大數據時代的數據量以指數上升(上圖),而摩爾定律卻遇到了瓶頸(下圖),晶體管性能增長有限
這樣的架構叫做異構計算,即用各種不同的的運算單元去完成相應的任務,區別於傳統的用同一個運算單元(CPU)去完成所有運算。異構計算比起可重構計算來說,由於加速器的結構是實現定義好的,因此無需使用者(程序員)再次用硬體語言去配置它,所以普及起來比起可重構計算要容易不少。然而,異構計算也存在一個問題:如果使用者需要臨時換一個應用,怎麼辦?臨時安裝對應的加速卡很難滿足需求,因為加速卡從訂購,安裝調試到最後能用需要很長的時間,換句話說,異構計算的靈活性是受到限制的。從另一個角度來說,如果可重構計算能夠突破編程困難這個瓶頸,那麼在大數據時代一定會成為計算機的重要部分。為了解決編程困難問題,目前業界和學界都在開發能把高級語言(如C語言)直接轉化為硬體的高級綜合(high-level synthesis tool)工具。除此以外,OpenCL框架也是讓程序員直接編程硬體的可行道路。但是,直到最近,可重構計算的生態還沒有起來。
異構計算架構示例
大數據時代可重構計算開始發力
近日,可重構計算進入了超級算機業界的焦點,Intel收購FPGA製造商Altera,並且預期到2020 年將會有三分之一的雲端處理器使用CPU-FPGA的混合結構。FPGA巨頭Xilinx也不甘落後,於11月中旬在2016年超算大會上發布了可重配置加速棧(Reconfigurable Acceleration Stack)。配合可重構的FPGA,該架構旨在解決可重構計算中的編程困難問題,並加速可重構計算生態的建設。在可重配置加速棧中,Xilinx提供了幾款流行應用框架的整合,包括Caffe(深度學習應用),FFMPEG(視頻處理)以及SQL(資料庫)。通過這樣的整合,雲端伺服器的程序員無需使用Verilog/VHDL硬體描述語言就可以在可重配置加速棧中使用FPGA資源加速這些框架中的應用。除此之外,Xilinx還提供了各種庫,通過在程序中調用這些庫也可以實現更靈活地用FPGA硬體加速程序。
Xilinx推出的Reconfigurable Acceleration Stack
這些用於雲端的FPGA將會使用部分重配置方案。通常FPGA配置過程包括硬體描述語言的綜合,布局布線,最後產生比特流文件並寫入以完成配置。在這個過程中,綜合以及布局布線花費的時間非常長,可達數小時,而最後比特流文件寫入以及配置可以在一秒內完成。用於雲端的FPGA方案為了實現快速應用切換,預計將會使用硬IP(即針對某應用硬體加速的比特流),並在需要使用該應用時快速寫入該比特流。在未來,雲端FPGA的生態預計將不止包括Xilinx,還會包括許多第三方IP提供商,最後形成類似App Store的形式讓使用者方便地選購對應的硬體加速方案並實時載入/切換。
Xilinx FPGA硬體也很強,可以非常高效地實現各種計算。例如,實現相同的性能,使用FPGA加速器僅需要CPU伺服器所佔空間的1/12, 功耗為CPU伺服器的1/12,而成本也僅為CPU伺服器的1/10。
在雲服務商這邊,Amazon雲服務也於近日推出了使用在雲端的FPGA解決方案:EC2 F1。該解決方案使用Xilinx的高端Ultrascale+ FPGA(包含250萬邏輯單元以及6800個DSP核),並為每塊FPGA晶元配備64GB的DDR4內存,以及與CPU進行介面的專用PCIe x16界面。該FPGA將會接入伺服器,並為相應應用做加速。另外,FPGA可以通過高速PCIe介面組成陣列,同一陣列中的FPGA可以以400Gbps的帶寬訪問同一個內存空間。在未來,Amazon可望使用FPGA-as-a-Service模式,把FPGA加速(包括硬體以及相關加速IP)作為產品推出。
亞馬遜推出EC2:F1架構,使用FPGA實現可重構計算
除了亞馬遜之外,微軟和Intel也在積極布局雲端FPGA加速。微軟於兩年前開始的Catapult計劃,使用FPGA為Bing搜索服務加速,並且將在Azure雲服務商也使用FPGA加速。可望在不久的將來,我們能看到可重構計算生態的一次快速成長,從而改變雲計算的格局。
========
歡迎加入我們的讀者群,與志同道合的人一起交流一起吐槽!點下面的鏈接填寫您的信息我們會邀請您入群!
矽說讀者交流群
我們同時也開通了微信平台(微信號:silicon_talks),將會發布更多半導體行業深度解讀和福利,歡迎搜索公眾號!
推薦閱讀:
※如何選擇合適的電磁場模擬演算法
※模擬電路應用(三)Switched-capacitor integrator finite gain compensation
※小荷才露尖尖角——評松果和澎湃S1
※斷崖式下滑,全志2017年利潤預計最高下滑92% | 半導體行業觀察