世界變化太快,本來(lái)生活中就只有CPU,后來(lái)又闖入了MCU、FPGA、GPU、DSP、ASIC,已經(jīng)難以分辨了?,F在又多了SoC、SiP、TPU、XPU,讓我們讀書(shū)看報越發(fā)艱難啦。
它們共同特點(diǎn)是都屬于IC(Integrate Circuit,集成電路),并且具有運算功能。這篇文章就是要區分開(kāi)它們。
FPGA就如一塊生鐵,其它都是工具
生鐵買(mǎi)回家沒(méi)法直接使用,但它能做成各種工具。
FPGA (Field Programmable Gate Array,現場(chǎng)可編程門(mén)陣列),把它裝在電路板上也沒(méi)法直接使用。FPGA工程師的任務(wù)就是通過(guò)改變物理上的連接關(guān)系,實(shí)現各種邏輯和運算功能。
就像一塊生鐵能打造出很多工具,FPGA最強大的地方在于,可以靈活實(shí)現各種結構,對事件進(jìn)行即時(shí)響應。比如對于大量的運算:
把累加操作變成流水線(xiàn)操作,一個(gè)時(shí)鐘周期就完成一次很多數的累加。類(lèi)似接力搬磚,只要人足夠多,可以迅速把磚頭移動(dòng)到很遠的地方。
可以模擬出100塊CPU計算單元,大幅提升并行計算速度。類(lèi)似于有很多個(gè)人在不同的位置同時(shí)搬磚,只要人數夠多,磚頭一會(huì )兒就搬完了。
為了應對人工智能深度學(xué)習對運算的需求,百度和賽靈思合作,基于FPGA推出XPU(X Processing Unit),X應該就是想表明很厲害、萬(wàn)能的意思吧。
FPGA的缺點(diǎn)也明顯:
不可能對每個(gè)門(mén)電路進(jìn)行優(yōu)化,用戶(hù)連接只在一定顆粒度上是可行的。比起專(zhuān)用芯片來(lái),速度慢、功耗大。
受工藝限制,比起專(zhuān)用芯片來(lái),量產(chǎn)成本高很多。
FPGA的開(kāi)發(fā)比起軟件編程來(lái),麻煩很多。需要考慮一些硬件設計的問(wèn)題,比如信號時(shí)間上對齊、資源的評估、節能等。
FPGA名字當然有其演化的歷史,但實(shí)踐上看,名字起得并非完美。
由于名字中有“可編程”的字眼,導致很多人認為FPGA工程師是軟件設計人員。而軟件工程師只是忿忿的說(shuō),“FPGA能實(shí)現遞歸函數嗎?不行吧。你這也叫編程?”他們絕對不會(huì )認為FPGA工程師是自己的一員。
如果從避免混淆的角度來(lái)看,我覺(jué)得叫FCGA (Field Connectable Gate Array,現場(chǎng)可連接門(mén)陣列)更清晰。 “連接”表明從硬件上改變了它,這樣FCGA工程師就清晰無(wú)誤地屬于硬件設計工程師了。如果對應到其它硬件電路設計流程,他們同時(shí)負責設計、仿真、原理圖、PCB布線(xiàn)、和測試工作。
CPU是通用工具,其它都是專(zhuān)用的
通用工具有很多種。當一個(gè)人說(shuō)工具時(shí),我們很難具體指明他在說(shuō)什么。
CPU(Central Processing Unit,中央處理器),它在電路板上的地位是配置和控制其它所有設備,當然也包括FPGA。從功能上看,它是最要的器件。當電源正常工作后,第一件事情就是啟動(dòng)CPU系統,之后CPU檢查其它硬件的狀態(tài),并依次配置和啟動(dòng)它們,最終讓系統進(jìn)入工作狀態(tài)。我所認知的CPU都是支持軟件編程的,這保持了通用性。
從控制其它設備和可以編程的角度來(lái)看,MCU、DSP、SoC、甚至ASIC都可以劃分到CPU的范疇。
因特爾、AMD等大廠(chǎng)的CPU廣泛應用于PC上,它們構成CPU最經(jīng)典的概念。
MCU(Micro Controller Unit,微控制器),通常稱(chēng)為單片機。常說(shuō)的ARM,就是單片機的一種。跟PC上的CPU相比:
內部集成了很多設備,比如存儲器、數模、模數轉換器、時(shí)鐘單元、各種通信接口等。MCU只需加上很少的外部器件,就能做出很實(shí)用、高可靠性的產(chǎn)品,比如Pad、白色電器、汽車(chē)控制系統等等,生活中無(wú)處不在。
通常MCU處理速度比CPU低,畢竟大部分的應用場(chǎng)景對運算的要求并不高。
功耗比CPU低很多,對于需要電池的設備有很大的吸引力。
種類(lèi)繁多,便宜的幾塊錢(qián)就能買(mǎi)到,也能滿(mǎn)足很多簡(jiǎn)單控制的需求。
DSP(Digtial Signal Processor,數字信號處理器),可以看成MCU的一種,它強調對運算的優(yōu)化,適用于視頻、音頻大數據流的處理。
ASIC是專(zhuān)用工具,精益求精
干特定的活,用專(zhuān)門(mén)的工具,無(wú)比順手啊。
ASIC(Application Specific Integrated Circuit,專(zhuān)用集成電路),為了應對某一特定領(lǐng)域大量的需求,優(yōu)化到每一個(gè)門(mén)電路,在性能上做到極致。犧牲了通用性,主要功能無(wú)法更改,好處是批量生產(chǎn)成本低、速度快(比FPGA更迅速)、能耗低。
GPU(Graphic Processing Unit,圖形處理器),分擔CPU對顯示部分主要的工作量。順序運算能力遠不如CPU,但可以比較靈活的配置多進(jìn)程,并行計算能力比CPU有數十倍的提升。也因此,現在常被借用來(lái)進(jìn)行加速計算,跟圖形已經(jīng)沒(méi)有關(guān)系了。編程通常是通過(guò)CUDA(Compute Unified Device Architecture)平臺來(lái)實(shí)現的。由于人工智能深度學(xué)習的興起,對計算能力要求飛速提升,GPU的行業(yè)老大英偉達的股價(jià)也一柱沖天。
麒麟芯片,華為用在手機里,硬件實(shí)現了對各種通信協(xié)議的處理。手機出貨量大,能大幅攤薄前期A(yíng)SIC的開(kāi)發(fā)成本,而且手機對功耗要求很高,尤其適合采用ASIC。
麒麟960
TPU(Tensor Processing Unit,張量處理器),谷歌為了深度學(xué)習開(kāi)發(fā)的芯片,架構不詳。從名字來(lái)看,應該是對矩陣的運算做了優(yōu)化,適配自己的深度學(xué)習軟件框架TensorFlow。谷歌購買(mǎi)了世界5%的服務(wù)器處理器,這個(gè)量完全足夠支持它開(kāi)發(fā)一套專(zhuān)用的芯片。目前,谷歌還沒(méi)有計劃向外銷(xiāo)售TPU。
由于深度學(xué)習的算法目前還處于迅速演進(jìn)過(guò)程中,對深度學(xué)習ASIC的高度定制,比如針對某種神經(jīng)網(wǎng)絡(luò )的定制,是件高風(fēng)險的事情。也許上午花了上千萬(wàn)定制的ASIC剛剛問(wèn)世,下午就出現一種效率提高10倍的算法,那這塊ASIC也就幾乎沒(méi)有什么價(jià)值了。
FPGA、CPU和ASIC比較
下圖表明了它們的位置關(guān)系。
它們之間的對話(huà)是這樣的:

SoC 和 SiP 是工具包
工具包的意思就是里面啥都可以有。

FPGA、CPU和ASIC各有優(yōu)缺點(diǎn),現在它們已經(jīng)有融合的趨勢了。
因特爾,傳統的CPU廠(chǎng)商收購了Altera(FPGA的主力廠(chǎng)商),CPU融合FPGA的心不言自明。
而FPGA的老大賽靈思也早就開(kāi)始在它的FPGA里面集成了CPU,構成Zynq系列的FPGA產(chǎn)品。
華為專(zhuān)用麒麟芯片更是集成了CPU和GPU。
不僅如此,很多芯片也像單片機那樣,集成數模、模數轉換、存儲器、各種通信協(xié)議。這些集成了的東西,你中有我,我中有你,難以再區分它們。SoC (System on Chip,片上系統),可以籠統的指代它們。單片機就是很典型的SoC。
而把很多器件融合到一顆芯片里面難度比較大。直接把它們拼接到一起,然后再加個(gè)殼,外觀(guān)上構成一個(gè)器件,就是SiP(System in Package,封裝系統),技術(shù)難度比較低,模塊化較好,緊湊度差些,算是SoC的初級形式吧。

總結
FPGA像塊生鐵,自己怎么鍛造就怎么用,CPU適應性強,怎么編程就怎么用,ASIC讓你怎么用你就怎么用。SoC和SiP是多種芯片的融合體。各種芯片比較一遍,驗證了一個(gè)樸素的道理,世上沒(méi)有免費的午餐。性能(速度和功耗)、靈活性、價(jià)格三者,最多只能占兩樣。
聯(lián)系客服