VP3 挑戰HD解碼王 (上)
Posted on October 14, 2008
Filed Under 顯示卡Video Card, 顯示週邊Video
NVIDIA G98核心補完高畫質影片加速能力
G98是NVIDIA早在去年就推出的新核心,不過它一直隱身於GeForce 8400 GS當中,NVIDIA沒有說明這個做法的原因,但筆者猜測應該是GeForce 9系列還沒正式推出入門級產品,G98只好暫且隱藏於GeForce 8400 GS當中。但有趣的是核心裡頭還置入了NVIDIA下一代的VP3引擎,可說是補完VP2在VC-1解碼能力的缺陷。因此我們收集了內建VP1、VP2與 VP3引擎的產品,來與ATI的UVD與UVD2比個高低,看看誰才是高畫質影片解碼的硬體霸王。
G86核心的縮小版
拿到內藏G98核心的GeForce 8400 GS之後,一時之間也看不出與採用G86核心的GeForce 8400 GS有什麼差異,雖然PCB板上有些元件不同,但是還得實際拆下風扇觀察晶片,再用GPU-Z來檢查規格。
在架構方面,G98仍然與G86一樣都只有16個stream processor、四組ROP,製程方面G98是65nm,但日後正式推出時應該會是55nm,而G86核心則是較舊的80nm。雖然G98與G86的 架構差異不大,不過時脈卻有相當大的不同,G98顯示晶片時脈為576MHz、shader則是1.4GHz;G86晶片時脈是450MHz、 shader為900MHz。
由於NVIDIA尚未正式發表G98核心,再加上本篇的目地是測試高畫質影片解碼,因此在3D效能部分我們就不多著墨了。
VP1到VP3的演變
在NVIDIA陣營方面,所謂VP指的是Video Processor,它最早出現於NVIDIA的GeForce 7系列的顯示晶片當中,不過當初播放H.264格式時,只能協助播放四大步驟的其中三個步驟,剩下的還是得交由處理器運算,而這時候的VP也就是第一代的 產物。使用VP1的顯示卡,目前還潛伏於GeForce 8系列當中,像是GeForce 8800 Ultra、GTX等採用G80核心的顯示卡,所以買這些高階顯示卡的用戶,在播放高畫質影片時,若是處理器不夠強就會看到相當明顯的延遲畫面。
不過NVIDIA修正了其餘的GeForce 8系列,從GeForce 8600、8500系列開始,多加入一顆BSP(Bistream Processor)晶片,最大作用就是處理H.264格式的CABAC(Context Adaptive Variable Length Coding)與CAVLC(Context Adaptive Binary Arithmetic Coding)解碼,也就是播放H.264與VC-1影片的第一步──Bitstream Processor/Entropy Decode,而這也是VP1所不支援的功能。直到第二代的VP2與BSP晶片配合之後,就可以「完整」解碼H.264、MPEG-2格式影像,所以到了 這個階段NVIDIA的硬體解碼流程才比較完整。
不過對於VC-1影片解碼部分,bitstream processor/entropy decode還是依靠處理器進行,雖然NVIDIA不斷宣稱VP2與BSP配合之後,VC-1少了這個步驟不會讓處理器佔用率增加太多,但實際測試VC- 1格式影片,GeForce 8、9系列的VP2搭配BSP一直是輸給ATI一大截。
全新一代的G98核心號稱已經完全具備先前缺少的VC-1影片bitstream processor/entropy decode解碼能力,因此可以稱為VP3。由於G98是NVIDIA完全沒有發布的產品,我們手邊也沒有任何資料可以看出它的架構,只能夠透過實際測試 來考驗NVIDIA尚未推出的VP3能力。
NVIDIA VP2的VC-1解碼技術
|
ATI一次做到位
ATI方面,從Radeon X 1000系列邁向Radeon HD 2000之後,除了顯示卡系列名稱多了「HD」的字眼,由Radeon HD 2600、2400系列開始,在顯示晶片裡頭直接塞了一顆Xilleon晶片,它的作用就是替H.264、VC-1格式影片進行bitstream processor/entropy decode解碼,而其它解碼步驟就交給顯示晶片裡的UVD,也就是Universal Video Decoder。所以,從Radeon HD 2000系列開始,ATI陣營一直在播放H.264、VC-1格式影像有極為搶眼的表現。
雖然在Radeon HD 2000系列推出之時,其3D效能並不突出,但是播放高畫質影片卻有極小的處理器佔用率,播放VC-1格式影片,更可以看到ATI與NVIDIA陣營顯示 卡會有極大差距,ATI只有極低的處理器使用率,NVIDIA則佔用頗多的處理器資源。所以HTPC玩家幾乎人人都推薦ATI顯示卡來播放高畫質影片,不 過現在有了NVIDIA的VP3來挑戰,ATI是否還能立於不敗,就要好好看下去了。
高畫質影片解碼流程說明
開始測試之前,先來瞭解一下高畫質影片解碼的流程。舉例來說,H.264與VC-1的四大解碼過程分別是:
1.Bitstream processor/entropy decode(串流資料處理/熵解碼)
2.Inverse transform or frequency transform(反轉換)
3.Motion compensation or pixel prediction(動作補償)
4.Deblocking(去分塊)
原本這四大步驟是交由處理器運算,卻會耗費許多處理器資源,尤其第一步bitstream processor/entropy decode(串流資料處理/熵解碼),更是十分吃重,因此ATI納入Xilleon晶片、NVIDIA加入了BSP晶片便可以大大減輕負擔。而其它步驟 則是靠ATI的UVD與NVIDIA的VP引擎執行。
1.串流資料處理/熵解碼
| ATI、NVIDIA解碼晶片等級 | |
| ATI | |
| UVD2 | Radeon HD 4800 |
| UVD | Radeon HD 3800 |
| Radeon HD 3600 | |
| Radeon HD 3400 | |
| Radeon HD 2600 | |
| Radeon HD 2400 | |
| UVA | Radeon HD 2900 |
| NVIDIA | |
| VP3 | GeForce 8400 GS(G98) |
| VP2+BSP | GeForce GTX 200 |
| GeForce 9800 | |
| GeForce 9600 | |
| GeForce 9500 | |
| GeForce 8800 | |
| GeForce 8600 | |
| GeForce 8500 | |
| GeForce 8400 | |
| GeForce 8300 | |
| VP1 | GeForce 8800 Ultra、GTX |
這裡的步驟就是「壓縮演算法」。例如每篇電腦王文章當中「GeForce」字串出現的機率是不一樣的,若將這些字串以相 同的長度來編碼,就會造成「使用太多位元」的情況,有些資料用的太少,例如,一篇文章只出現一次「筆者好帥」的字串,這又會形成空間的浪費,所以需要「對 不同的字串使用不同長度編碼」的壓縮演算法。
看完上面的火星文,簡單的說,壓縮演算法就是讓「經常出現的字串變短!」例如GeForce字串通通變成「G」,若是一篇文章裡有100 個GeForce字串,那麼就會形成100個「G」字串,少了六個英文字母。我們還可以再聰明點變成「(100,G)」,也就是只要記錄 「(100,G)」就代表GeForce字串出現一百次,這樣就變成更短的字串資料,而所謂壓縮的精神就是「變化長度」。
前面提到CABAL、CAVLC等等,指的就是高畫質影片壓縮演算法的種類,例如H.264與MPEG-2格式影像,在同樣畫質下 H.264勢必會有更低的檔案容量,而同樣的壓縮比例下,H.264將提供更好的影像品質,H.264或VC-1可以提高壓縮能力,就是因為使用比以往更 複雜的編碼架構,所以播放時就需要特別多的硬體解碼資源。
2.反轉換
在這個部分,NVIDIA稱之為inverse transform、ATI則是稱作frequency transform。不管怎麼稱呼,這裡的流程就是「離散餘弦變換」,英文簡稱DCT 、全名則是Discrete Cosine Transform。由於牽涉一些數學公式,筆者這個數學白痴就不多談,想深入瞭解的讀者可以直接拜一拜Google大神。
簡單的說,就是將影片上的「色彩」資訊轉為「頻率」資訊,例如一張焰陽高照的畫面上,強烈的「太陽光線」就會轉成為「高頻」,而其它顏色較 不強烈的則會轉成「低頻」。所以當你在看一台汽車的畫面,透過DCT轉成後高頻的部分就形成車體「邊框」,而其餘低頻部分則是呈現車體顏色,如果低頻愈 「平緩」地由高至低,畫面上就會看到「層次」更豐富的車體。
很多網路上下載的影片效果很差,其中一個很大的原因就是DCT處理時把低頻的部分砍掉,因此畫面上都「只見形體、不見細節」了,這也是一種影片壓縮的方式。
3.動作補償
這個流程NVIDIA與ATI也有不同的說法,NVIDIA稱作motion compensation,而ATI則是稱為pixel prediction,比較多人採用NVIDIA的用詞。
動作補償也是一種影片壓縮的手法,例如拍攝一段影片,把攝影鏡頭對準一顆大樹,而在攝影當中樹上的樹枝有些會隨風搖晃、有些不會,若是拍攝時間只有一秒,在這一秒之內有24張圖片,接下來的壓縮方法就很簡單了。
首先只要取一張圖片作為基準點,而接下來的圖片和它「對照」,例如畫面上沒動的樹枝,第二張圖片就不「不儲存」,但是會動的樹枝就儲存下來,以便呈現樹枝搖晃的狀態。
不過這種比對畫面的做法,並不是一張一張全區域比較的,而是把畫面分成區塊,像是H.264從16×16、8×8、4×4 mode都有(8×16、4×8的mode也有),這樣可以讓H.264更準確呈現區塊中的移動與變化。例如分成區塊後的圖片(第三張,A區),會去比較 前後張的圖片(第二、四張,A區)。這種「記錄變動」也是一種很好的影片壓縮方法。當然,愈新的VC-1、H.264等格式就能比較愈多的前後畫面以及張 數。
4.去分塊
上一步的動作補償,畫面已經被畫分成許多區塊,這裡就是要回復畫面,以免播放時變成「棋盤式」的畫面,也就是所謂「去分塊」。這個步驟與其它部份相比,已經是非常輕鬆的流程,完全交給顯示晶片去做都沒問題。
Comments
Leave a Reply
