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