(原文作者:Eji) GPU在非繪圖運算領域上最主要的優勢,是它既有的龐大記憶體頻寬,但是和CPU設計不同的是,GPU的許多架構設計都是為了應付繪圖作業的特性,像是使用大量的記憶體頻寬,所以它可以執行的通用運算,必須和繪圖工作的性質類似,才有辦法做到適才適所,繪圖工作的性質包括: 1. 畫面上每個像素之間沒有關連性,所以即使會用到鄰近的材質,彼此的運算過程並不相關,就算每個像素處理得不快,你還可以用「一次處理很多個像素」的方式來提高處理速度。
2. 只要整體的運作速度夠快就好,單一像素的速度影響不大,不會造成延遲。盡可能讓整個管線持續運作,繪圖系統就不會停頓。因為不必考慮延遲的問題,所以不需要使用亂序執行等運算技術來縮短延遲時間。單一執行管線裡的內部控制單元,規模也不用太大、太複雜。
3. 延遲不是問題,就不需要講求低延遲的記憶體系統,可以透過較高延遲的記憶體系統來放大頻寬。目前記憶體系統的發展都傾向高時脈、同時傳輸多筆資料,這些都會帶來較高的延遲,使得需要十項全能的CPU很難採用這種硬體。但是GPU可以為了頻寬犧牲記憶體存取的延遲時間,只要它的設計架構可以吸收延遲,讓管線能維持運作便可,而這樣也會消耗相當規模的電晶體。
GPGPU過去可以做什麼
看到這裡可以發現,GPU發展的方向就是大而寬。但是當它要處理和原本特性不同的運算工作時,大而寬的特性很容易變成絆腳石,讓GPU執行得很彆扭,效率不彰。因為非繪圖工作就不見有「數值之間彼此沒有關連性」、「不必考慮延遲」等特性。所以GPU如果要「兼差」,會因為它太專精了,很難兼到性質差太多的工作,而只能兼一些和它專業相關的小差而已,例如傾向數值分析的領域,也就是科學運算。
不過科學運算的領域和一般人的關係不大,或許近期開張的GPGPU版Folding@Home很炫,但畢竟是已經在PS3和CELL上大放異彩的議題,只是證明了科學運算更需要平行處理來改善效率,以及科學運算的資料規模也許很大,但是多半可以分割成小單位逐次處理,相對來說比較容易做到平行化。
科學運算市場已經有CELL這樣重視平行處理的CPU來和GPU競爭,事實上CELL和GPGPU幾乎是同時投入市場,但是CELL只有用在PS3上,而GPGPU現在才要開始被「介紹」。顯然這兩年間主要的推展都還停留在科學運算,消費者需要讓日常工作更方便的應用,否則的話平常電腦不用幹嘛不關機呢?所以GPU廠商想推廣通用運算,應該要思考一般人的需求。
GPU的話還有個最近比較被提起的(其實很久了)是視訊加速,一個畫面被分成幾個子單元就丟給幾個去算...聽起來很合哩,不過感覺我哪裡有誤了...算了...