發新話題
打印

從3870/3850軟改來看FireStream與GPGPU革新

[Close]

從3870/3850軟改來看FireStream與GPGPU革新


                  

什麼是軟改?

廣  告

  所謂「軟改」,一般指的是將「遊戲顯示卡」用破解軟體改造成「專業繪圖卡」的方法。最近我們在知名顯示卡硬體網站Guru3D.com論壇看到,ATI FireGL新版驅動程式8.44已被玩家找出軟改方法,可將遊戲卡Radeon HD2000系列變身為專業繪圖卡FireGL,其中另一個實驗版本,更可召喚出尚未推出的專業卡FireStream9170,這個訊息引起了熱烈討論與回應;這幾天我們也在友站論壇看到相關討論,為了讓網友們有更深入的了解,於是我們彙整了相關資料。

其實HD2000系列軟改成FireGL並不是最近才有的消息,早在半年多前,FireGL驅動程式8.391就已經可以成功辦到,而8.44是8.391的下一版,在去年底釋出,相關的軟改指令檔也在近日內被破解;平心而論,以實際應用面來說,軟改8.391是比較成熟的版本,因為8.44尚無法開啟工作站專業選項,還有待硬體發燒友的研究。


去年中,隨著Radeon HD 2000系列的推出,FireGL也一併更新

  先來談軟改技術,晶片設計商分別用兩種不同的驅動程式來引導顯示卡;方才提到的8.391與8.44皆是專業卡ATIFireGL的驅動程式版本,與遊戲卡Radeon有所不同,但如果以顯示晶片來看,兩者卻是相同的;我們可以這麼理解,當設計者開發出一款顯示晶片,可同時被賦予遊戲卡或專業卡的價值,當定位在遊戲卡時,只需對專屬領域如DirectX與相關遊戲做相容性測試與效能最佳化,並適時遮敝專業卡的功能;而定位在專業卡則是考量全然不同的點,主要用在3D製圖,它必須對OpenGL程式最佳化,注重圖形質量,不容許render時破圖出錯。

晶片設計商使用一些防堵方法,來防止消費者購買低廉的遊戲卡來改成高價的專業卡;NVIDIA在GeForce 7系列以後採用硬體保護,以致於只有早期MX200/400時代到5系列/6系列可軟改,而且保護設計繁雜,即使硬體破解也十分不易,較不受到硬體發燒友的熱衷(有興趣者,仍可查閱相關舊文-5700 Ultra變身Quadro FX 1100);反觀以專業卡起家的ATI,從舊卡到新卡,只需從PCI Device ID下手,即可輕鬆完成改造手續。

(這裡要補充說明一下:為什麼廠商要防堵消費者作軟硬改卡的行為?在一定程度的技術上,這些專業卡與一般使用者用到的顯示卡是相同的,否則怎麼可能可以改?其實這跟超頻的行為有某種程度上的相似意義,專業卡的價格早期是一般卡的數倍,這也是為什麼玩家會想要改卡的一大主因...)


5700 Ultra變身Quadro FX 1100硬改手法

  PCI DeviceID是驅動程式溝通硬體介面卡的一道識別門戶,如何將遊戲卡ID改成專業卡ID是破解的主要重點,可從硬體或軟體著手;以硬改而言,我們只要找到顯示卡板子上的相關SMD晶片,將之移動位置或去除後即可完成;聽起來似乎很容易,但難處在於關鍵SMD究竟在何處?一般玩家不容易得到原始設計圖,況且硬改之後,顯示卡隨之失去保固,有一定的風險;軟改則是設法創造一個專業卡的對應PCI Device ID,再遮敝原本遊戲卡PCI DeviceID,欺騙驅動程式強灌下去即可。NVIDIA早期和ATI的遊戲卡只要ID識別正確,相關OpenGL功能與著色管線即會打開,然而NVIDIA後期的卡設有多道防護,改ID只能成功識別為Quadro,實力依然是GeForce的表現;所以上一段才會說,改卡玩家主要以ATI為主。

目前具有軟改能力的軟體,只有RivaTuner能夠輕鬆辦到;RivaTuner提供一個給玩家自行更改指令檔的環境,在C:\ProgramFiles\RivaTuner\PatchScripts底下,分別有適用於ATI的SoftFireGL、以及適用於NVIDIA的SoftQuadro指令檔,副檔名為.rts,可用純文字編輯;以ATI為例,軟改時要修改的地方只有兩個,那就是在專業卡驅動程式裡的「ati2mtag.sy_」與.inf安裝引導檔,改完後直接安裝專業卡的驅動程式即可成功欺騙電腦。


專業卡對應遊戲卡一覽表,改造後身價立刻上漲,其中FireStream 9170尚未推出

  上表為新一代FireGL對應HD 2000系列的對照表,在V8600的部分可看到直接對應2900XT,兩者雖然顯示晶片相同,但公板卡配置的記憶體容量不同,V8600配置1GB,2900XT則是512MB(後來才有1GB版本)。另外,最超值的莫過於2600Pro改成V3600,我們實際拿V3600真卡與2600Pro軟改比較,兩者在SPECviewperf的測試下相差無幾,撇去評分軟體不說,在真實繪圖軟體如Pro/E、SolidWorks也有不錯的表現。

最令人感到訝異就是尚未推出的FireStream 9170,這是一張全新概念的顯示卡產品-StreamProcessor,晶片為RV670;自從AMD在去年底發佈消息以來,引起各界高度關注;顯示晶片RV670如果對應到遊戲卡,就是近期內非常火熱的HD 3870(RV670 XT)與HD 3850((RV670 Pro),於是,改卡者找到一個點企圖切入。

以下將實作HD 3850改成FireStream 9170,指令檔來源為Guru3D.com,由NewbieTech論壇的硬體高手破解;這裡要特別提醒大家的是,改卡僅供個人學術研究,不得用在任何商業用途。


HD 3870/3850的繪圖晶片皆為RV670

I LOVE vLan

TOP


                  

HD 3850軟改FireStream 9170圖解流程

廣  告

  
  必須先安裝RivaTuner,請到這裡下載最新版,目前為2.08

到AMD官方網站下載FireGL驅動程式

選擇8.44版本(XP 32-bit)

點安裝程式,預設先解壓到C:\AMD目錄下

解完壓縮後,立刻取消安裝

修改INF檔,路徑在C:\AMD\firegl_8_44_xp32_056527\Driver\XP_INF

用記事本打開後,找到[ATI.MFG.NTx86]這一欄,置換成以下的PCI Device ID對應位置

  

內容如下:

"ATI FireGL V3600" = ati2mtag_RV630GL, PCI\VEN_1002&DEV_9589
"ATI FireGL V5600" = ati2mtag_RV630GL, PCI\VEN_1002&DEV_9588
"ATI FireGL V7600" = ati2mtag_R600GL, PCI\VEN_1002&DEV_9405
"ATI FireGL V8600" = ati2mtag_R600GL, PCI\VEN_1002&DEV_9400
"ATI FireGL V8650" = ati2mtag_R600GL, PCI\VEN_1002&DEV_9400
"AMD FireStream 9170" = ati2mtag_RV630GL, PCI\VEN_1002&DEV_9501
"AMD FireStream 9170" = ati2mtag_RV630GL, PCI\VEN_1002&DEV_9505

INF完成後,接著對atimtag.sy_下手,但不能直接編輯此檔,需借助RivaTuner

新增一個文字檔,填入以下內容,存檔後取名為patch.rts

  

內容如下:

[Common]
SrcFile = ati2mtag.sys
BakFile = ati2mtag.old
MakeCRC = 1
Packed = 1

;common script for 669x

DstVar0 = force ATI FireGL V8650 capabilities
DstVar1 = force ATI FireGL V8600 capabilities
DstVar2 = force ATI FireGL V7600 capabilities
DstVar3 = force ATI FireGL V5600 capabilities
DstVar4 = force ATI FireGL V3600 capabilities
DstVar5 = force AMD FireStream 9170 capabilities

Src0 = FF 75 08 E8 79 60 00 00 85 C0 74 2E 33 C0 EB 3B
SCM0 = FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF
Dst0 = FF 75 08 E8 79 60 00 00 85 C0 74 2E 33 C0 EB 38
DCM0 = 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00

Src1 = 83 F8 40 75 1D 66 81 BD 00 00 FF FF 02 10 75 00 0F B7 85 FE FE FF FF
SCM1 = FF FF FF FF 00 FF FF FF 00 00 FF FF FF FF FF 00 FF FF FF FF FF FF FF
Dst1_0 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0A 94 66 89 85 FE FE FF FF 90
Dst1_1 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0B 94 66 89 85 FE FE FF FF 90
Dst1_2 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0F 94 66 89 85 FE FE FF FF 90
Dst1_3 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 8C 95 66 89 85 FE FE FF FF 90
Dst1_4 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 8D 95 66 89 85 FE FE FF FF 90


如果想適用在HD 2000全系列,不想用FireStream 9170,請改成以下內容,兩者只能擇一使用:


[Common]
SrcFile = ati2mtag.sys
BakFile = ati2mtag.old
MakeCRC = 1
Packed = 1

;common script for 669x

DstVar0 = force RV610GL capabilities
DstVar1 = force FireGL 5600 capabilities
DstVar2 = force FireGL 3600 capabilities
DstVar3 = force FireGL V3600 Mobility capabilities( HD2600 mobility)
DstVar4 = force FireGL V5600 Mobility capabilities( HD2600XT mobility)
DstVar5 = force FireGL V8650 capabilities (HD2900 XT)
DstVar6 = force FireGL V8600 capabilities (HD2900 Pro)
DstVar7 = force FireGL V7600 capabilities (HD2900 GT)

Src0 = 6A 67 8D 83 E0 01 00 00 50 E8 89 C9 FF FF 85 C0 74 09
SCM0 = FF FF FF 00 00 FF FF FF FF FF 00 00 FF FF FF FF FF FF
Dst0 = 6A 67 8D 83 E0 01 00 00 50 E8 89 C9 FF FF 85 C0 90 90
DCM0 = 00 00 00 FF FF 00 00 00 00 00 FF FF 00 00 00 00 00 00

Src1 = E8 00 00 FF FF A8 04 75 0B 6A 2E
SCM1 = FF 00 00 FF FF FF FF FF F0 FF FF
Dst1 = E8 00 00 FF FF 24 FB 90 90 6A 2E
DCM1 = 00 FF FF 00 00 00 00 00 00 00 00

Src2 = FF 75 08 E8 79 60 00 00 85 C0 74 2E 33 C0 EB 3B
SCM2 = FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF
Dst2 = FF 75 08 E8 79 60 00 00 85 C0 74 2E 33 C0 EB 38
DCM2 = 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00

Src3 = 81 7B 18 10 05 00 00 0F 82 17 01 00 00
SCM3 = FF FF FF FF FF FF FF FF FF 00 00 FF FF
Dst3 = 81 7B 18 10 05 00 00 90 E9 17 01 00 00
DCM3 = 00 00 00 00 00 00 00 00 00 FF FF 00 00

Src4 = 85 BE D8 00 00 00 75 2E 68 84 00 00 00
SCM4 = FF 00 FF FF FF FF FF FF FF FF FF FF FF
Dst4 = 85 BE D8 00 00 00 90 90 68 84 00 00 00
DCM4 = 00 FF 00 00 00 00 00 00 00 00 00 00 00

Src5 = 83 F8 2C 74 3D 83 F8 34 75 56 8B 45 F8 66 3B 46 04 74
Dst5 = 8B 45 F8 66 8B 46 04 89 45 F8 90 90 90 90 90 90 90 EB

Src6 = E8 5F 83 FF FF F6 C4 20 74 08 6A 2E
SCM6 = FF 00 00 FF FF FF FF FF FF FF FF FF
Dst6 = E8 5F 83 FF FF F6 C4 20 90 90 6A 2E
DCM6 = 00 FF FF 00 00 00 00 00 00 00 00 00

Src7 = 85 C0 74 0D FF 75 0C FF 75 08 E8
Dst7 = 85 C0 90 90 FF 75 0C FF 75 08 E8

Src8 = 83 F8 40 75 1D 66 81 BD 00 00 FF FF 02 10 75 00 0F B7 85 FE FE FF FF
SCM8 = FF FF FF FF 00 FF FF FF 00 00 FF FF FF FF FF 00 FF FF FF FF FF FF FF
Dst8_0 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D C5 94 66 89 85 FE FE FF FF 90
Dst8_1 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 8C 95 66 89 85 FE FE FF FF 90
Dst8_2 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 8D 95 66 89 85 FE FE FF FF 90
Dst8_3 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 81 95 66 89 85 FE FE FF FF 90
Dst8_4 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 83 95 66 89 85 FE FE FF FF 90
Dst8_5 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0A 94 66 89 85 FE FE FF FF 90
Dst8_6 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0B 94 66 89 85 FE FE FF FF 90
Dst8_7 = 0F B7 85 FE FE FF FF 66 25 00 00 66 0D 0F 94 66 89 85 FE FE FF FF 90

在C:\AMD\firegl_8_44_xp32_056527\Driver\XP_INF\B_56046,找到ati2mtag.sy_,改成ati2mtag.sys

開啟剛才做好的patch.rts,選擇FireStream 9170,對ati2mtag.sys做patch

patch成功

將atimtag.sys改回atimtag.sy_,舊檔將會成為atimtag.old,想回復可改回此檔

在新增移除程式下,移除所有ATI的驅動與軟體

在裝置管理員裡也一併將顯示卡砍掉

重新開機

找到新硬體,安裝時搜尋剛才改好的C:\AMD\firegl....驅動程式

成功欺騙為FireStream 9170,強制安裝驅動

裝完驅動後,再回到目錄下重裝ATI的管理程式Catalyst Control Center

CCC裡面識別為FireStream 9170,並且出現Workstation項目

GPU-Z讀取驅動程式也識別為FireStream 9170

I LOVE vLan

TOP


                  

軟改前後在模擬繪圖軟體方面得到質的飛越

廣  告

  由於通用計算領域GPGPU目前沒有常規的測試工具,我們只能先拿3D繪圖軟體來簡單判別是否改造成功;軟改前與軟改後分別測試一次,從下表可以看出,HD 3850改造成FireStream 9170在OpenGL計算能力有了大躍進,這樣的改變主要在於FireGL驅動程式的幫助。

有部分人士認為,軟改後得到的僅僅只是分數好看,沒有實質的效益,然而我們實際執行繪圖軟體,以2600 Pro軟改與FireGL V3600對比,前者增長幅度雖比不上原卡,但在render與快速旋轉大圖時確實收到「一些」效能上的改進。

FireStream 9170目前只有公佈相關規格,尚未推出實卡,因此無從得知用3850軟改後與原卡的差距。實際面來說,FireStream與FireGL定位點完全不同,拿繪圖軟體當基準點無疑是迷失方向;那麼,究竟FireStream的目標是什麼呢?

繪圖晶片切入通用計算領域-FireStream


第一代FireStream 580、第二代FireStream 9170 (圖片來源:AMD官方網站)

  現今繪圖晶片GPU發展一日千里,以HD3850的核心RV670為例,55nm製程,電晶體數目666百萬個,浮點運算Peak值達500GFlops,大幅超越CPU的浮點運算效能。因此,早在幾年前已經有研究者想到,如果讓GPU只單純處理圖形,不免浪費它應有的實力;於是出現將GPU作為CPU使用的案例,最著名的當屬史丹福大學「Folding@Home distributedcomputing」研究計畫;該專案將多台電腦組成一台超級電腦來進行疾病方面的研究,以ATI R580,也就是RadeonX1900的核心晶片,作分散式的科學運算。這種GPU不作圖形處理,轉而處理原本應該是CPU工作的GPU,一般通稱為GPGPU。

GPGPU為General PurposeGPU的縮寫,也就是作為「通用計算的圖形處理器」;史丹福大學研究員指出,GPU在處理圖形時,使用像是SIMD(SingleInstruction, Multiple Data)的概念並行處理,因此拿來作通用計算實不為過;隨著去年初DirectX10的到來而發揚光大,現今NVIDIA與ATI的顯示卡,如GeForce 8、Radeon HD2000之後,將傳統的頂點著色器與像素著色器合併為「統一架構著色器」,更是增進運算上的效率;新一代GeForce 9、Radeon3000也將GPGPU列為重點項目,勢必可見GPGPU在未來發展。

回過頭來看GPGPU的最初發展,首先問臨到的問題就是,GPU要如何作溝通?答案很清楚,DirectX或OpenGL是唯一的橋樑,但現在GPU不處理圖形,勢必要開發新的API才行。初代GPGPU透過DirectX或OpenGL來轉換需要處理的資料,這種克難式的間接運算方式,造成開發人員的大災難;因為熟悉科學運算或金融計算的開發人員,不一定熟知繪圖處理的開發語法,因此,打造GPGPU專屬的API是當務之急,兩家GPU研發大廠分別有所動作。

NVIDIA開發出「CUDA」,ATI則是跟著FireStream一起推出「Brook+」,這兩種編譯器最大的優點在於似C語言,開發人員可以很輕易地用熟悉的工作方式進行開發。

  上一段說的落落長,無非是想先解釋GPGPU的概念,因為ATI推出FireStream9170,主要目的就是用來作通用計算。FireStream是一款獨立的StreamProcessor,核心為RV670,55nm製程,為世界上首款雙精度浮點運算GPU;320個SP與2GB記憶體大幅強化FireStream9170的可能性,其單精度浮點運算最高上達512GFlops,主要作為彌補CPU浮點運算不足。

從以上我們看到,GPU與CPU的分界將會越來越模糊,甚至在未來,AMD計畫發表Fusion處理器,將CPU與GPU合一,有部分原因我們可說是邁向GPGPU的道路。

  那麼,本頁一開始測試的圖形處理效能就沒有用了嗎?非也,現階段的FireStream9170核心RV670本為繪圖晶片,擁有良好的圖形處理能力,相信即使不是以圖形處理為主的FireStream9170,在正式推出後,對繪圖軟體表現可能也不差。而HD 3850軟改後的FireStream9170,目前還在實驗階段,推測此版軟改應該還是FireGL的體質,並非真正改成FireStream;畢竟,只有用在GPGPU領域才能看出真正實力,有興趣的玩家不妨軟改後,用專屬SDK寫個浮點運算迴圈來試試;接下來,當然是等我們拿到FireStream實卡,再來作個效能對比,相信這一切會更加明確。

I LOVE vLan

TOP

而度唔會有人識 -.- 你除外啦....

太深層!!!!!!

TOP

個人覺得. 軟改左會令卡的溫度不正常的提升
對其生命有一定折扣

TOP

發新話題