Re: [請益] 最近的顯示卡

看板VideoCard作者 (小多愛喝養樂多)時間16年前 (2007/10/12 19:51), 編輯推噓16(1600)
留言16則, 16人參與, 最新討論串1/1
大家都知道DirectX 8 將3D處理分成Vertex Shader 跟 Pixel Shader (DirectX 9只是增加精度) 一次處理都是四個資料 像Vertex Shader 空間三軸跟單位向量(XYZW) Pixel Shader 紅綠藍跟透明度 (RGBA) 因為像素跟頂點當作向量處理 所以又稱為"向量運算單元" (vector-4) 這是早期 Geforce 4 跟 Radeon 8的做法 但是這就會衍伸出一個問題 如果我要處理一個材質 譬如說從紅色變成淡紅色 那我RGBA 四個運算單元只要改一個透明度就好了 這樣就會造成其他三個運算單元沒事幹 所以為了提高運算單元的使用率 Vector-4 被拆開成Vector-3 加一個Scalar (1D純量) 這樣一次還是可以送四個資料 但是如果有需要一次送一個資料時也是可以 雖然整體運算總數不變 但是使用效率卻提高了 這是Geforce6 Radeon 9 一直到 Geforce 7 Radeon X1000都是 不同的是Geforce 6/7還可以拆成 2D+2D 進一步增加使用率 不論你是3D+1D 2D+2D 都會有運算單元被閒置 在切下去就沒有第二條路了 所以DirectX 10 最大的改變 就是把Vertex Shader 跟 Pixel Shader取消 直接變成 Unnifed Shader 管你是3D或4D 全部拆成1D去計算 這樣就可以避免 Shader被閒置 但這樣就衍伸出需要更複雜的控制單元來監控附載狀況 所以在DirectX 10多加了一個 Geomerty Shader (幾何運算) 幾何運算的單元稱為串流處理器(Stream Precessor 簡稱SP) R600有320SP G80有128個 數字大並不是就好 因為兩個的設計理念完全不同 G80的想法很簡單 就是有一個獨立的硬體把4D拆成1D 128個SP裡有誰閒置就丟進去運算 而R600的狀況就比較特殊他是利用VLIW架構64個五路超純量單元邏輯上拆成 320個1D SP單元再組合成4個SIMD組群 VLIW這個功能是原本用在CPU上做運算指令平行化的技術 這有點像在玩俄羅斯方塊 如果本來有1D 2D 3D 4D各一個 透過驅動程式排列後拆成兩個5D超長指令串 再送進運算單元(SP)裡 資料排列純粹看驅動程式的寫法 必要的時候還可以打散資料再重排 用VLIW來重新排列組合 其實是滿冒險的 因為驅動程式的平行化是滿費工夫的 由於沒有硬體路線 使用率要到達90%是非常難的 不是不可能 是非常難 得要靠驅動程式改版個十幾次才有可能達成 G80是靠純硬體有專門拆散或組合資料 與重組之後平行運算相依性的部分 R600要靠驅動程式 而且得確保不會占太多CPU資源 R600與G80還有個不同之處就是SIMD 無論是R600的超純量單元與G80的1D純量單元 都不可能讓64個或128個運算單元各自處理不同的指令 這樣線路會複雜到爆表 分成組群是必要的 每個組群在單一週期內執行相同的指令 這就是SIMD R600是320分四組 G80是128分8組 由於是SIMD 同組群只運算相同的資料型態 (像素 幾何 或頂點)這樣可以簡化線路且確保高效能 但對使用率就會有一定的影響 因為相同指令的資料有可能永遠塞不滿群組 而R600就是在SIMD裡在做一次簡化 讓SIMD組群再拆成五路超純量單元 G80是SIMD切得更細一點 用複雜的線路來換取 單元使用率 總結一下 R600 G80 Unifed shader 架構 相同 支援DirectX10 360個1D純量單元 內部為 128個1D運算單元 64個五路超純量單元 VLIW架構 用驅動程式重組 純硬體架構 資料 核心時脈742MHZ 1.35GHZ 512位元記憶體介面 384位元 32個材質存取單元 32個 16個材質過濾單元 64個材質過濾單元 R600特性是利用驅動程式來重組資料 這樣會比純硬體的G80成本來的低 效能會隨著驅動程式不同而有很大的差距 如果驅動程式寫得好的話 R600的效能是可能超越G80 有些人會覺得說為什麼ATI不用像Nvidia那樣直觀的方法去做顯卡 反而要用比較困難的驅動程式來重組資料 ATI的想法很明顯 邏輯運算單元其實是不複雜的超純量單元 而且少了重組指令的硬體線路 由於簡單 所以可以大量複製成64個 相當於有320個1D scalar 理論運算值超高 但實際的利用率是取決於驅動程式 的VLIW上 將重排指令的電晶體成本轉嫁到軟體上 先把硬體做出來 靠簡單的設計 快速縮小在65nm的晶片上 壓低晶片成本 再利用定期更新驅動程式來提升效能 好處是隨著驅動程式更新會有意想不到的驚喜(?) 照理來說若驅動程式寫得好 執行1D的效能會是4D的四倍 因為VLIW會想辦法填滿超純量單元來增加使用率 NVIDIA的想法是 完全靠硬體排成打散資料 控制單元非常複雜 但可強化128SP 性能 在內部切出許多階(stage) 縮短每一階的工作時脈 讓運算單元變成核心二倍速 的高時脈 好處是驅動程式的開發成本不高 且65nm後時脈可以拉得更高 ATI跟NVIDIA的目的都是在降低成本 但不同的是一個在軟體 一個在硬體 寫到這裡 可能大家都會看出下一個高階顯示卡的決戰點會在"成本"與"使用率" 如何降低成本 提高SP的使用率 是ati跟Nvidia是否的打敗對手的關鍵 R600是設計簡單 數量多(320SP) 跑得慢(7XXMHZ) G80是線路複雜 數量少 (128SP) 跑得快(1.35GHZ) 到底誰優誰劣 其實很難說出來 以未來性來說 R600簡化了線路 有助於縮小製成可以塞進更多的SP 而且驅動程式效能應該會設計的越來越好(應該啦) G80在縮小製成後設計很難像R600那麼簡單(因為還要塞進控制單元的電路) 但有立即可得的高效能 未來只能看它們在中低階產品所做的成本控制了 反正對大家來說 規格多好並不是很重要 要如何做的便宜又效能好 誰就贏了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.34.181

10/12 20:28, , 1F
頂!!驅動一直是ATI的............
10/12 20:28, 1F

10/12 20:40, , 2F
推!!
10/12 20:40, 2F

10/12 20:44, , 3F
太專業啦~推一個
10/12 20:44, 3F

10/12 20:53, , 4F
重組資料XD
10/12 20:53, 4F

10/12 20:54, , 5F
精闢
10/12 20:54, 5F

10/12 21:14, , 6F
原po打到最後都累了XD
10/12 21:14, 6F

10/12 21:26, , 7F
同意1f說的,雖說近年來有改進,但..
10/12 21:26, 7F

10/12 22:01, , 8F
專業!
10/12 22:01, 8F

10/12 22:09, , 9F
1F講的正是Ati永遠的痛,所以..實現不可能?
10/12 22:09, 9F

10/12 22:20, , 10F
大家都知道@@? 我不曉得耶? 長知識
10/12 22:20, 10F

10/13 01:19, , 11F
推一個,希望Ati要加油啊
10/13 01:19, 11F

10/13 01:30, , 12F
這篇就稍稍看的懂了!學機械的都看懂ㄟ!!
10/13 01:30, 12F

10/13 13:12, , 13F
10/13 13:12, 13F

10/13 18:00, , 14F
在vista...ATI driver的技術已經逆轉了...
10/13 18:00, 14F

10/13 20:46, , 15F
我裝ATI驅動 都沒遇到問題
10/13 20:46, 15F

10/19 11:14, , 16F
10/19 11:14, 16F
※ 編輯: gogoabc 來自: 118.168.232.182 (05/23 18:26)
文章代碼(AID): #173r-ddu (VideoCard)