在互聯(lián)網(wǎng)行業(yè),隨著信息化的普及,數(shù)據(jù)量的暴增使得人們對存儲空間又有了新要求,同時,機器學(xué)習(xí)、人工智能、無人駕駛、工業(yè)仿真等領(lǐng)域的崛起,使得通用CPU在處理海量計算、海量數(shù)據(jù)/圖片時遇到越來越多的性能瓶頸,如并行度不高、帶寬不夠、時延高等。
為了應(yīng)對計算多元化的需求,越來越多的場景開始引入GPU、FPGA等硬件進行加速,異構(gòu)計算應(yīng)運而生。異構(gòu)計算(Heterogeneous Computing),主要指不同類型的指令集和體系架構(gòu)的計算單元組成的系統(tǒng)的計算方式。
20世紀80年代,異構(gòu)計算技術(shù)就已經(jīng)誕生了。所謂的異構(gòu),就是CPU、DSP、GPU、ASIC、協(xié)處理器、FPGA等各種計算單元、使用不同的類型指令集、不同的體系架構(gòu)的計算單元,組成一個混合的系統(tǒng),執(zhí)行計算的特殊方式,就叫做“異構(gòu)計算”。
特別是在人工智能領(lǐng)域,異構(gòu)計算大有可為。眾所周知,AI意味著對計算力的超高要求,目前以GPU為代表的異構(gòu)計算已成為加速AI創(chuàng)新的新一代計算架構(gòu)。
我們?yōu)槭裁葱枰悩?gòu)計算?
談到計算,我們通常會想到CPU,但是CPU屬于通用計算,受制于摩爾定律,隨著計算多元化的發(fā)展,特別是應(yīng)用類型的多樣化,導(dǎo)致CPU在處理某些計算類型方面出現(xiàn)“力不從心”的情況。引入特定的單元讓計算系統(tǒng)變成混合結(jié)構(gòu)成為了必然,每一種不同類型的計算單元都可以執(zhí)行自己最山擅長的任務(wù)。
CPU雖然運算不行,但是擅長管理和調(diào)度,比如讀取數(shù)據(jù),管理文件,人機交互等,例程多,輔助工具也很多;GPU管理更弱,運算更強,但由于是多進程并發(fā),更適合整塊數(shù)據(jù)進行流處理的算法;FPGA能管理能運算,但是開發(fā)周期長,復(fù)雜算法開發(fā)難度大。適合流處理算法,不管是整塊數(shù)據(jù)進還是一個一個進。還有實時性來說,F(xiàn)PGA是最高的。
當(dāng)人工智能等海量計算力訴求到來之后,GPU、FPGA配合CPU進行計算也就“水到渠成”了。
異構(gòu)計算的兩大派別——GPU和FPGA
我們最熟悉的異構(gòu)計算平臺就是“CPU+GPU”以及“CPU+FPGA” 架構(gòu)。這些典型異構(gòu)計算架構(gòu)最大的優(yōu)點是具有比傳統(tǒng)CPU并行計算更高效率和低延遲的計算性能,尤其是業(yè)界對計算性能需求水漲船高的情況下,異構(gòu)計算變得愈發(fā)重要,整個計算行業(yè)生態(tài)無一不在此發(fā)力。
眾所周知,相比CPU,GPU和FPGA擁有太多的優(yōu)勢,GPU有更高的并行度、更高的單機計算峰值、更高的計算效率;而FPGA的優(yōu)勢則主要體現(xiàn)在它擁有更高的每瓦性能、非規(guī)整數(shù)據(jù)計算更高的性能、更高的硬件加速性能、更低的設(shè)備互聯(lián)延遲。
目前異構(gòu)計算使用最多的是利用GPU來加速。主流GPU都采用了統(tǒng)一架構(gòu)單元,憑借強大的可編程流處理器陣容,GPU在單精度浮點運算方面將CPU遠遠甩在身后。以英偉達、AMD為代表的GPU廠家大肆宣傳GPU極大加速通用計算。各個GPU廠家都推出了適用于通用計算的GPU,GPGPU(General Perpose GPU)。一時間,整個業(yè)界都在談?wù)揋PU計算。
除了GPU,F(xiàn)PGA成為近年半導(dǎo)體產(chǎn)業(yè)的熱點。FPGA作為一種高性能、低功耗的可編程芯片,可以根據(jù)客戶定制來做針對性的算法設(shè)計。所以在處理海量數(shù)據(jù)的時候,F(xiàn)PGA 相比于CPU 和GPU,優(yōu)勢在于:FPGA計算效率更高,F(xiàn)PGA更接近IO.
FPGA不采用指令和軟件,是軟硬件合一的器件。對FPGA進行編程要使用硬件描述語言,硬件描述語言描述的邏輯可以直接被編譯為晶體管電路的組合。所以FPGA實際上直接用晶體管電路實現(xiàn)用戶的算法,沒有通過指令系統(tǒng)的翻譯。
當(dāng)然除了GPU和FPGA,ASIC也是目前計算芯片的一種選擇。ASIC是一種專用芯片,與傳統(tǒng)的通用芯片有一定的差異,是為了某種特定的需求而專門定制的芯片。ASIC芯片的計算能力和計算效率都可以根據(jù)算法需要進行定制,所以ASIC與通用芯片相比,具有以下幾個方面的優(yōu)越性:體積小、功耗低、計算性能高、計算效率高、芯片出貨量越大成本越低。但是缺點也很明顯:算法是固定的,一旦算法變化就可能無法使用。
目前人工智能屬于大爆發(fā)時期,大量的算法不斷涌出,遠沒有到算法平穩(wěn)期,ASIC專用芯片如何做到適應(yīng)各種算法是個最大的問題。
不同處理器芯片在構(gòu)建異構(gòu)計算方面有著自己的鮮明特點。CPU、GPU領(lǐng)域存在大量的開源軟件和應(yīng)用軟件,任何新的技術(shù)首先會用CPU實現(xiàn)算法,因此CPU編程的資源豐富而且容易獲得,開發(fā)成本低而開發(fā)周期。FPGA的實現(xiàn)采用Verilog/VHDL等底層硬件描述語言實現(xiàn),需要開發(fā)者對FPGA的芯片特性有較為深入的了解,但其高并行性的特性往往可以使業(yè)務(wù)性能得到量級的提升;同時FPGA是動態(tài)可重配的,當(dāng)在數(shù)據(jù)中心部署之后,可以根據(jù)業(yè)務(wù)形態(tài)來配置不同的邏輯實現(xiàn)不同的硬件加速功能。
ASIC芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低;但是AISC開發(fā)風(fēng)險極大,需要有足夠大的市場來保證成本價格,而且從研發(fā)到市場的時間周期很長,不適合例如深度學(xué)習(xí)CNN等算法正在快速迭代的領(lǐng)域。
結(jié)語
當(dāng)前計算多元化趨勢不可阻擋,單一的CPU已經(jīng)無法計算力的需求。在這種情況下,以GPU和FPGA為代表的異構(gòu)計算大行其道。特別是人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)等新技術(shù)的推動,應(yīng)用類型呈現(xiàn)多樣化,其對計算的需求也呈現(xiàn)差異化的特點。不管是“CPU+GPU”還是“CPU+FPGA” ,都是為了更好地服務(wù)個性化的計算需求。
可以預(yù)見的是隨著計算產(chǎn)業(yè)的演進,異構(gòu)計算具有廣泛的發(fā)展空間,我們也會看到越來越多的異構(gòu)計算架構(gòu)在承載應(yīng)用方面發(fā)揮越來越重要的作用。