圖1:CPU 的工業(yè)類比

這些工人每人都能使用通用工具生產(chǎn)出幾乎任何產(chǎn)品。每位工人按順序使用不同的工具,將原材料制造為成品,一次生產(chǎn)一件產(chǎn)品。根據(jù)任務(wù)的性質(zhì),這種串行生產(chǎn)流程可能用到大量步驟。這些車間基本(不考慮緩存的情況下)彼此獨(dú)立,工人能全身心地完成不同任務(wù),不必?fù)?dān)心干擾或協(xié)調(diào)問題。盡管CPU 十分靈活,但它的底層硬件是固定的。CPU 仍然在基本的馮諾依曼架構(gòu)(或者更確切地說,存儲程序計算機(jī))上運(yùn)行。數(shù)據(jù)從存儲器讀取到處理器進(jìn)行運(yùn)算,然后寫回到存儲器?;旧厦總€ CPU 都以串行方式運(yùn)行,一次一個指令。同時架構(gòu)以算術(shù)邏輯單元 (ALU) 為中心,每次運(yùn)算都需要將數(shù)據(jù)輸入到 ALU 并從 ALU 輸出數(shù)據(jù)。

CPU的工業(yè)類比

GPU 也可以用車間和工人類比,但它們的數(shù)量要大得多,并且工人的專業(yè)化程度也要高很多,如圖2所示。

圖 2: GPU 的工業(yè)類比

GPU 工人只能使用特定的工具,每人能完成的任務(wù)種類要少得多,但他們完成任務(wù)的效率非常高。GPU 工人在重復(fù)做相同的少量任務(wù)時效率最高,尤其是當(dāng)他們?nèi)w同時做同一件事情時。GPU 解決了 CPU 的主要缺陷之一,即并行處理大量數(shù)據(jù)的能力。

雖然 GPU 比 CPU 擁有非常多的核,但 GPU 采用的依然是固定的硬件架構(gòu)。GPU 的核仍然包含某種類型的馮諾依曼處理器。一條指令就能處理上千條或者更多數(shù)量的數(shù)據(jù),盡管通常必須對同時處理的每一條數(shù)據(jù)進(jìn)行相同的運(yùn)算。原子處理元在數(shù)據(jù)矢量上運(yùn)算(非 CPU 情況下的數(shù)據(jù)點(diǎn)),但仍然是每個 ALU 執(zhí)行一條固定的指令。因此,用戶仍然需要通過固定的數(shù)據(jù)路徑,從存儲器將數(shù)據(jù)傳遞給這些處理單元。與 CPU 相似,GPU 也采用固定硬件構(gòu)建,對所有的機(jī)器人應(yīng)用而言,其基本架構(gòu)和數(shù)據(jù)流都是固定不變的。

FPGA 的工業(yè)類比

如果說 CPU 和 GPU 是工人按照順序依次將輸入加工成輸出的車間,那么 FPGA 就是靈活的自適應(yīng)工廠,能夠針對手中的具體任務(wù)定制創(chuàng)設(shè)裝配線和傳送帶(參見圖 3)。

圖 4: FPGA 的工業(yè)類比

這種靈活應(yīng)變能力,意味著 FPGA 架構(gòu)師可以先構(gòu)建工廠、裝配線和工位,然后根據(jù)所需完成的任務(wù)對它們進(jìn)行量身定制,而不是使用通用工具。這些工廠中的原材料由分配在裝配線上的工人小組逐步加工成成品。每名工人都重復(fù)地完成同樣的任務(wù),同時半成品通過傳送帶在工人間進(jìn)行傳遞。這樣能大幅提升生產(chǎn)力,并保證以最佳方式充分利用資源和電力。在這個類比中,工廠是 OpenCL 加速內(nèi)核,裝配線是數(shù)據(jù)流流水線,工位是 OpenCL 計算功能。

ASIC的工業(yè)類比

與 FPGA 類似,ASIC 也建造工廠,但是 ASIC 中的工廠是最終形態(tài),不能改動(參見圖 4)。換言之,這些 ASIC 內(nèi)部只有機(jī)器人,工廠內(nèi)不存在人類認(rèn)知。這些裝配線和傳送帶是固定的,不允許變更自動化流程。ASIC 的這種專用型固定架構(gòu)賦予它們極高的能效,以及大批量規(guī)?;a(chǎn)下的最低價格。但遺憾的是,ASIC 的開發(fā)通常需要耗時多年,而且不支持進(jìn)行任何變更,這將會導(dǎo)致前期投入的資產(chǎn)很快跟不上未來生產(chǎn)力提升的變化。

圖 4: ASIC 的工業(yè)類比

分享到

xiesc

相關(guān)推薦