CPU
大家對(duì)CPU都不陌生,所有的設(shè)備都需要一個(gè)或者多個(gè)CPU芯片,由CPU來完成設(shè)備需要完成的各種功能,這其中涉及到大量的復(fù)雜數(shù)據(jù)的處理和計(jì)算。CPU由控制器和運(yùn)算器構(gòu)成。整個(gè)CPU工作起來就像一個(gè)工廠對(duì)產(chǎn)品的加工過程:進(jìn)入工廠的原料(指令),經(jīng)過物資分配部門(控制單元)的調(diào)度分配,被送往生產(chǎn)線(邏輯運(yùn)算單元),生產(chǎn)出成品(處理后的數(shù)據(jù))后,再存儲(chǔ)在倉庫(存儲(chǔ)器)中,最后等著拿到市場上去賣(交由應(yīng)用程序使用)。經(jīng)過這么多年的技術(shù)發(fā)展,CPU的處理數(shù)據(jù)速度有了很大提升。除了通用的Intel和AMD的CPU之外,也出現(xiàn)了很多專業(yè)技術(shù)領(lǐng)域里的CPU,一臺(tái)設(shè)備如果沒有了CPU就等于一臺(tái)死機(jī)器,不能開機(jī),一切都不能執(zhí)行。
GPU
很多人對(duì)GPU不了解。GPU(Graphics Processing Unit)是現(xiàn)代顯卡中非常重要的一個(gè)部分,其地位與CPU在服務(wù)器上的地位一致,主要負(fù)責(zé)加速圖形處理的速度。我們知道圖形文件,包括視頻文件都比較大,計(jì)算量很大,并對(duì)數(shù)據(jù)的實(shí)時(shí)性要求要高一些,所以GPU更適用于這種計(jì)算中。GPU是一個(gè)高度并行化的多線程、多核心處理器,它比CPU的計(jì)算能力要強(qiáng)多了?,F(xiàn)在我們常說的CPU實(shí)際上兩者都包含,有的指的是CPU有的指的是GPU,并沒有對(duì)兩者進(jìn)行區(qū)別。GPU是以大量線程實(shí)現(xiàn)面向吞吐量的數(shù)據(jù)并行計(jì)算,適合處理計(jì)算密度高、邏輯分支簡單的大規(guī)模數(shù)據(jù)并行負(fù)載,而CPU則有復(fù)雜的控制邏輯和大容量的緩存減少延遲,擅長復(fù)雜邏輯運(yùn)算。GPU屬于強(qiáng)計(jì)算弱控制,更多資源用于數(shù)據(jù)計(jì)算,而CPU屬于強(qiáng)控制弱計(jì)算,更多資源用于緩存。GPU早期主要應(yīng)用于顯卡,以圖形處理為主,現(xiàn)在發(fā)展成為圖形和高性能計(jì)算并重,像AMD的FireStream和NVIDIA的Tesla都是通用計(jì)算的GPU。
FPGA
GPU 的核心數(shù)量一般是 CPU 的成百上千倍,計(jì)算能力要比 CPU 多出幾個(gè)數(shù)量級(jí),也更適合進(jìn)行并行計(jì)算。但是如果計(jì)算里面有大量的分支,或者算法的數(shù)據(jù)前后存在依賴關(guān)系,使得算法無法并行運(yùn)行,則 GPU 的性能優(yōu)勢(shì)會(huì)被大大減弱。這時(shí)出現(xiàn)了一種新的計(jì)算方式FPGA(Field Programable Gate Array),其基本原理是在 FPGA 芯片內(nèi)集成大量的數(shù)字電路基本門電路以及存儲(chǔ)器,通過燒寫FPGA 配置文件來定義這些門電路以及存儲(chǔ)器之間的連線。這種燒入不是一次性的,可以反復(fù)燒寫,所以叫做可編程門陣列。FPGA 既能提供集成電路的性能優(yōu)勢(shì),又具備CPU可重新配置的靈活性。相比GPU,F(xiàn)PGA的可操控粒度更小,具備更高的靈活度和算法適應(yīng)性。FPGA能夠簡單地通過使用觸發(fā)器來實(shí)現(xiàn)順序邏輯,并通過使用查找表來實(shí)現(xiàn)組合邏輯。當(dāng)算法需要并行計(jì)算能力時(shí),可以將大部分的邏輯資源都用來做計(jì)算,達(dá)到更高的計(jì)算效率。打破了順序執(zhí)行的模式,在每個(gè)時(shí)鐘周期內(nèi)完成更多的處理任務(wù),超越了數(shù)字信號(hào)處理器的運(yùn)算能力。FPGA融合了ASIC和基于處理器系統(tǒng)的最大優(yōu)勢(shì),能夠提供硬件定時(shí)的速度和穩(wěn)定性,且無需類似自定制ASIC設(shè)計(jì)巨額前期費(fèi)用的大規(guī)模投入。
ASIC
FPGA 雖然成本比設(shè)計(jì)的專用芯片(ASIC)要便宜,當(dāng)然性能也沒有專用芯片強(qiáng),在很多的技術(shù)場合還是需要采用ASIC芯片來完成計(jì)算,比如網(wǎng)絡(luò)設(shè)備。ASIC(Application Specific Integrated Circuits)專用集成電路是指應(yīng)特定用戶要求或特定電子系統(tǒng)的需求而設(shè)計(jì)制造的集成電路。這類ASIC專業(yè)性極強(qiáng),將所有的計(jì)算資源都應(yīng)用到特定的應(yīng)用中,所以處理某一類計(jì)算時(shí)效率特別高。比如網(wǎng)絡(luò)轉(zhuǎn)發(fā)ASIC芯片,其專門處理二三層網(wǎng)絡(luò)流量轉(zhuǎn)發(fā),其它功能均沒有,所以執(zhí)行效率高。當(dāng)然,就像是私人定制,既然是專有的東西,那一定是特別貴。是的,ASIC要比CPU、GPU還是FPGA都貴得多,實(shí)際上ASIC的內(nèi)部實(shí)現(xiàn)并不如這三種復(fù)雜,但是里面涉及了很多專業(yè)領(lǐng)域很強(qiáng)的技術(shù),其它三種計(jì)算硬件做不來。ASIC在吞吐量、延遲和功耗方面都無可指摘,但ASIC研發(fā)成本高、周期長,而且ASIC是一錘子買賣,設(shè)計(jì)出來要是發(fā)現(xiàn)哪里不對(duì)基本就沒有機(jī)會(huì)改了,這也使得每款A(yù)SIC推出來的時(shí)間都要長,再加上不像通用CPU市場競爭那樣激烈,ASIC的價(jià)格都比較貴,甚至具有一定的市場壟斷性。還有ASIC的靈活性也是硬傷,ASIC不能做復(fù)雜的有狀態(tài)處理,比如某種自定義的加密算法,我們也看到像網(wǎng)絡(luò)交換芯片,基本都是處理二三層的轉(zhuǎn)發(fā),對(duì)于四到七層網(wǎng)絡(luò)協(xié)議由于涉及到很多狀態(tài)機(jī)的處理,就不能靠ASIC來完成。所以對(duì)于四到七層的網(wǎng)絡(luò)流量依然要交由通用CPU處理,像很多支持四到七層網(wǎng)絡(luò)轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備,實(shí)際內(nèi)部還是靠CPU或者FPGA來實(shí)現(xiàn)網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能的,這樣轉(zhuǎn)發(fā)效率沒有二三層網(wǎng)絡(luò)設(shè)備高。
通過以上的對(duì)比,可以看到每種硬件計(jì)算技術(shù)都有其各自的優(yōu)先和缺點(diǎn),應(yīng)用于不同的計(jì)算環(huán)境中。在數(shù)據(jù)中心的技術(shù)大染缸里,每種計(jì)算技術(shù)都在發(fā)揮著作用,雖然每種技術(shù)都在不斷發(fā)展與進(jìn)步,但短時(shí)間之內(nèi),誰也無法替代誰,四種硬件計(jì)算技術(shù)仍要長時(shí)間在數(shù)據(jù)中心領(lǐng)域里共存。