新電腦世代 - CPU加GPGPU的組合
>> 2009年5月31日 星期日
如果說Windows95當年是使用者經驗(User Experience)的一個大躍進,那這個大躍進的成功背後兩大誘因:
一)大部份中央處理器(CPU - Central processing unit)已提供了浮點運算器(FPU) - 由於80486後的CPU已整合了浮點運算器而不再需要另外購買數位輔助處理器(Coprocessor),所以其後大部份軟件都直接使用浮點運算指令,因此大大增強了電腦浮點運算能力。
二)繪圖加速晶片的出現 - 當年出現了很多專爲Windows設計的繪圖加速卡,其原理是用硬件來處理圖像操作好像BitBlt等,因此使用者介面(UI - User Interface)的反應快了很多
等了這多年,Windows的使用者經驗(User Experience)好像再沒有多大的突破,我認爲原因之一是沒有相關的硬體技術的突破,新版本的Windows只會用愈來愈多的系統資源(System Resource),令系統愈來愈慢。而GPGPU(General-Purpose Graphics Processing Units通用繪圖處理器)和OpenCL(Open Computing Language開放運算語言)的出現會是一個新突破.
傳統來說CPU(Central Processing Unit)和GPU(Graphic Processing Unit)兩者河水不犯井水。CPU是十八般武藝樣樣通,尤其擅長處理無可預知的任務;GPU則是精通一種任務,尤其是高度平行(highly parallel)的任務。GPGPU的慨念是以GPU來進行通用的計算,運用GPU裡內含的數十個(高階晶片裡甚至有數百個)處理核心,來加速處理任務。這些任務若交給中央處理器(CPU)來做,其執行效率可能比較差。因此GPU可以作爲CPU的協同處理器,GPU的高速運算能力讓他們在許多不同的應用上都能有很大的助益。
隨著市售的GPU可程式化程度的提升,愈來愈多的應用將會出現。這正是CUDA和OpenCL切入之處,讓開發者能有效率地利用目前閉鎖在繪圖處理器內的運算效能。CUDA是Nvidia提供用來的程式化GPU的API,而OpenCL是一種支援異質運算(heterogeneous computing)的程式設計環境。所謂異質運算,意指混用多核心的CPU與繪圖處理器(GPU)。在和NVIDIA的合作下,Apple於2008夏季向Khronos遞交OpenCL的提案,希望能為GPU運算打造一個跨平台。NVIDIA的內容發展副總裁Neil Trevett擔任OpenCL工作小組的主席一職,Nvidia的軟體研發團隊並直接為此組織提供支援。支持OpenCL的廠商包括Apple(蘋果)、AMD、Intel(英特爾)、Nvidia等,雖然Microsft(微軟)不支持OpenCL,但其程式設計介面(API)DirectX 11亦將會提供使用GPU的API。
已有軟件廠商利用CUDA技術,研發了一個Adobe Premiere Pro的外掛程式。通過外掛程式,使用者就可以利用GPU去加速H.264/MPEG-4 AVC的編碼速度。速度是單純利用CPU作軟件加速的7倍左右。而Mathematica亦將支援使用CUDA來提高計算速度。其它可受惠的應用還包括經常使用FFT(Fast Fourier Transform快速傅立葉轉換)的圖像處理(e.g. JPEG編碼), SSL編碼, Realtime harddisk Encryption等。
OpenCL將成為蘋果作業系統(Snow Leopard)的一部分,而DirectX 11將成為Windows 7的一部分(我相信未來Linux亦會有針對 OpenCL 的支援)。這對消費者的意義是,如果你的筆記型電腦內建Nvidia GPU或ATI (AMD) GPU,作業系統就會跑得比較快,因為作業系統基本上是用兩個處理器來執行。這個CPU加GPGPU的組合,對運算力有相當要求的 H.264 技術有很大的幫助,因為在一些較低規格的電腦,有圖形處理器的幫助,可以很流暢播放 H.264 的片段。就算在智能手機都有高速的圖形處理器和數碼訊號處理器,藉這些硬件來彌補手機處理器運算能量的不足。
使用CPU加GPGPU的組合是電腦史上的其中一大重大改變,短期內未必會改變電腦業界的發展,但長遠而言對電腦業界的版圖,會帶來相當大的改變。但令用戶更充分使用硬件的資源,無論如何都會是一件值得高興的事。