PowerColor AXRX 550 2GBD5-DHA/OC

一部界隈で騒ぎになっていた、中古未使用GPUのPowerColor AXRX 550 2GBD5-DHA/OCを入手しました。

PowerColor AXRX 550 2GBD5-DHA/OC

チューニングの試行錯誤を防備録として残しておきます。が、かなりグダグダでかつ未解決事項残しです。

筆者は基本的にiGPU派でして、その最大の理由として消費電力の差が大きい(過ぎる)という点があげられます。
3Dをバリバリ使うのであればもちろんdGPUを使用すべきなのでしょうが、現在の筆者の用途ではほとんど必要としていません。
ですが、幾つかの点でdGPUの購入も考えなければいけない状態にはありました。

Inkscapeでイラストを描くようになってから現メインPCの性能に不足を感じてきたこと。しかし、これがdGPUを欲した直接の理由ではありません。Inkscapeが必要とするのはCPU性能です。現時点でもInkscapeは8スレッドまで対応していますが、筆者の現最高性能PCのCPUはi5-4570Sの4C4T。ですので、一番の要求はCPUの刷新、しかも、8C以上です。
今から新PCへと刷新するのであればZen2を待ちたい。
できればAPUが欲しいが、それだとかなり待たなければいけないので流石に待てない。
現APUでは4C8Tが最高なのだが、できれば8C8T以上が欲しい。
CoffeeLakeは高いし、現i5-4570Sから素性はあまり変わって無さそうなので面白みにも欠ける。
そうなると、Zen2のCPUではiGPUが付いていないのでdGPUが必要になる。

その一方で、現PCではメモリ容量も若干キツくなってきていて、かと言って、現時点でもう4Slot全て埋まっているDDR3の新規投資など今更したくはないし、もしかしたらdGPUの導入でほんの僅かでもメインメモリが空いて楽になったりしないかなぁ? という考えもありました。
そして、dGPUを購入するにしてもハイエンドは不要。しかし、dGPUのミドルローはプロセスの微細化が遅く、しばらくは14nm近辺で停滞することが予想できる。

で、あるならば、dGPUについては安い物があったら先走って購入してしまっても良いんじゃないか? というのが結論、で、今回出物を見つけることができまして、購入に至りました。
もともと28nmのGT710や730辺りで我慢するか、もしくは14nmのGT1030まで頑張っておくか、しかし、GT1030でも軽く1万円くらいはしてしまうし、いっそのこと最初から長く使う前提でGTX1050Ti4GBまで行ってしまうか考えていました。
そこに2GBではあるものの、14nmのGDDR5が¥4,760(送料が掛かったので)で出てきてくれたので、その次の本命dGPUまでかなり長い時間が掛かったとしても待てそうです。レイヤー数や画素サイズから考えると4GBあった方がもっと良かったですが……
もちろん、消費電力低減チューンを施す前提です!
とその前に。

HP Directplus -HP公式オンラインストア-

現状把握

PowerColor AXRX 550 2GBD5-DHA/OC

iGPUがある場合、普通に使い分けてくれるみたいですね、Windowsの場合。これはちょっとなかなかに良いかもしれないです。ドライブの仕方次第ですけど。

CPU-Zでの表示はこんな感じ。

PowerColor AXRX 550 2GBD5-DHA/OC

DieSize 123mm2、Transistors 3000Mという表記はこのGPUコア自体はRX560で使用されているものと同じで、Max 16CU:1024Shaderのものであることが分かります。
まぁ、選別で落とされている側の製品でしょうから大きな期待はできませんが。

PowerColor AXRX 550 2GBD5-DHA/OC

ASICは65.6%。やはり選別落ち品といったところなのでしょう。

というわけで、早速チューニングを開始したのだ! ……が……

HP Directplus -HP公式オンラインストア-

VBIOS書き換え

結論から言うとグダグダです。かつ、スッキリとチューンアップできず、特に現行マシンのLinuxでの運用は一旦諦めた状態で放置することを決めました。(Linux運用はまたZen2入手時にでも再挑戦します。Linux界隈は時間が解決してくれることもママあるのでね。(堕落思考))
VBIOSの書き換え作業と動作確認はWindows10にて行っています。

OS起動後のドライバで調整すれば良いではないか? とその通りだと思います。しかし、BIOSから省電力設定ができていればドライバがチンケでも使える(と思っていました)。特に筆者はLinuxで使いたいと思っているので、省電力関連に弱いLinuxではドライバに頼るよりもBIOSから対処しておきたい。そんな思いがありました。
また、VBIOSを書き換えるのであれば、Unlock ShaderにてCUの増加も可能かもしれません。CU増加できればその分パフォーマンスにプラスですし、パフォーマンスが不要ならその分クロックを落としてより電圧を落とした省電力駆動の道も見えてきます。
しかし、入念に下調べしたつもりでも実践は予期せぬ出来事の連続。躓きだらけでした。

躓きその1
GPU-Zで吸い出したオリジナルVBIOSがSRBPolarisで開くとなぜかチェックサムエラー。なんで?
オリジナルのバックアップを取って『安心』〜って思っていたら、まさかのバックアップ取得ミス? それとも、チェックサムが合っていないだけで中身は普通に吸い出せていたのだろうか?
(気になったので(今になって)ネットで拾ったVBIOSと比較してみたしたが、部分的に異なるところはあるものの99%同一でした。ここまでちゃんと吸い出せているのであればCPU-Zを信じても良いのかも知れません。部分的な差異というのは若干配置が異なりつつ値も若干違うというところが数箇所散見されるのですが、その差異は余り大きくはなく、番地のずれも値そのものもすぐにまた一致状態が続くようになるので、概ね一致っぽい感じではあるのです。チェックサムエラーというのはもしかしたらそもそもこの製品ではチェックサムなど使用していないという可能性もあります。(だから値が適当とか))

躓きその2
PolarisBIOSEditorで編集したものを書き込んでも正常に機能しなかった。
そもそもこの辺りのツールってバージョン違いがやたらと存在したり、『ウイルス入り』だぞみたいな怪情報もあったりして何が正常に動作するものだかなかなか分からないものがあります。
それに、できればより問題の修正されているであろう最新版を使用したいものですが、古い版ばかりが検索で引っ掛かってきてしまうなんてことも多々ありますよね。逆に新しいからといって動くとも限らない。
dGPUに関していうと、マイニングブームだったときに、よりdGPUの効率を高めるためにVBIOSを改変しようみたいな流行があったみたいで、その時期の情報ばかりがヒットするのですが、それよりも明確に新しい情報というものにはなかなかありつけません。
筆者は3種類用意しましたが、1.7.2は全く正常動作せず。.net3.5とNTDVMを要求されたのですが、NTDVMは64BitWindowsでは使用できません。なので32Bit環境でも動作を試してみましたが、黒いウインドウが出るだけにとどまりました。1.4.0と1.6.7は動作しましたが、それで作った改変BIOSではdGPUの正常動作にこぎつけませんでした。
結局PolarisBIOSEditorについては筆者は成功体験が一つも無かったのが残念です。電圧を細かに指示できるのがこれしか見つからなかったので、できればこれを使用したかったのです。失敗続きで時間をかなりロスしてしまいました。

HP Directplus -HP公式オンラインストア-

躓きその3
パッチ当てるの忘れてた。(完全に自分が悪いんですけど)
VBIOSを書き換えるとatikmdag-patcherを当てて修正しないと正常に動作しないということがあります。が、それを途中まで完全に忘れて、繰り返すWindowsの再起動に「なんでや?」と首をひねっていました。
もう記憶が曖昧なんですけど、もしかしたらPolarisBIOSEditorの失敗がパッチ忘れのせいな可能性もありますので、今度また試す時はパッチを忘れないようにしましょう。

躓きその4
電圧調整には謎が多い。
各ステートのクロックと電圧の値の兼ね合いかなにかで設定できる値の範囲がコロコロ変わります。各ステートで範囲が決まっているのではなく、他のステートの値によっても左右されます。
同じ値に設定しようとしても、修正の順序によってはその値が許されない、というケースが発生したりするのです。
例えば、ある局面では700mVに設定できていたものが、他のステート弄っていたら(OCではなくDownClockかつUnderVolting)725mVよりも下にはピクリとも修正が効かなくなったりします。
他のステートのクロックや電圧などからの関係で適用できる値の範囲が変わるっぽいのですが、その法則が良く分からず。
特に筆者みたいに低クロック低電圧みたいなのを追求していたりすると、高ステートでも低クロック低電圧のせいで低ステートの差が少ないのが悪いのか電圧固定みたいな値しか指定できなくなったりして謎でした。

躓きその5
WattManで最大ステータスを7以外に変更して動作確認しようとしても7に戻ってしまう。
これにより最大値での確認しか満足に行えず、各ステートでの負荷テストができませんでした。なんでやろな? もう疲れたので頭回りませんわ。
次やる時は全ステートの値を変更してステート7でもステート1と同じ値とかにして検証するようにします。面倒臭さMaxですけども。

結局、チェックサムが合っていないことで吸い出したVBIOSの信頼性が揺らいだのでネットで拾った199353.rom(一応、この製品の型番も記されてはいた。吸い出した内容とは若干の差異があったが)をベースにして、SRBPolarisで改変。パッチを当てて動作という流れくらいしか成功体験はできませんでした。

未完成なまとめ

筆者の固有単体ではシェーダーアンロックにより10CU→12CUへシェーダー数640→768に増加しました。
ネットに流れている情報ではバイナリエディタで「6F227022」の塊を検索し(この塊で検索すると多分引っ掛かるのは一箇所だけになります) => 「6F226F22」へ(3バイト目を70→6Fに)書き換えるだけです。が、そもそもSRBPolarisでボタン一押しで切り替えられますのでバイナリエディタで弄る必要はありませんでした。バイナリエディタでここを弄るだけだとチェックサム不整合が起こるようになるので、結局チェックサム修正のためにSRBPolarisを起動するのであればただの二度手間です。

SRBPolarisでBIOSを開いた際にチェックサム不整合で怒られたときは、一旦チェックサム修正だけをした状態でBIOSをセーブし、再びセーブしたBIOSを開くことで他のパラメータが表示されるようになり修正が可能になります。

SRBPolarisでGPUコア電圧を調整する際はその最大値しか設定できませんが、その他のステートの値は最大値設定から自動計算で調整されるようです。
筆者の個体の場合のデフォルト値とSRBPolarisで最大値を書き換えた後どのように変化したのか表にまとめておきます。

製品初期状態
State0State1State2State3State4State5State6State7
MHz214334504699874101911241189
mV8007467507547568509501031
Pointer65282652836528465285652866528765288
SRBPolarisでState7を書き換えたもの(他のStateは自動設定されたもの)
State0State1State2State3State4State5State6State7
MHz3004005006007008009001000
mV800746750754756758756756
Pointer65282?65283?65284?65285?65285?65285?65285
PowerColor AXRX 550 2GBD5-DHA/OCPowerColor AXRX 550 2GBD5-DHA/OC

クロックを1000MHzまで落としていますが、これでもシェーダーアンロックでCUが2割増しになっている効果もあって初期状態よりもほんの僅かに性能が上がります。(細かい検証はしていませんが簡単な動作確認でFPSが少し上昇していました。)
SRBPolarisによる自動設定でState0のクロックが上がってしまっているのが地味に気になります。(消費電力的に)
あと、この状態でベンチを回したら消費電力が何故か初期状態とほぼ同じくらいになってしまったので、もしかしたらこの電圧設定は無視されているかもしれません。
メモリ電圧は825mVに設定しましたが、なんの根拠も動作確認もしていないので、今後また詳細な詰めが必要になるかと思います。

今後に向けて

仮説ばかりです。注意。

WindowsではdGPUの増設でおよそ6W程度消費電力が増大したのですが、Linuxでは10W程度。しかも、なぜか文字入力しているだけでそこから30W近く上昇したりするので非常に謎です。(とずっと思っていたのですが、よくよく考えてみたらWindowsではdGPU有無での差を確認していないので6Wよりももっと多いかもしれない。HDDとか外して動作検証していたので殆ど当てにならない数値です。もしかしたら同一構成ならWindowsでもLinuxでもほぼ同じ消費電力になるかもしれん。それにしても文字入力だけで30W近いアップは酷いけど)
Linuxで動作するWattManのようなツールで確認すると(スクショ撮るの忘れちゃった(^^ゞ)300MHzに貼り付いているみたいな表示なのですが、グラフだけは最大と最小を行ったり来たりするので、もしかしたら文字入力だけでもフルパワーなのかもしれません。(し、CPUの上昇もそれなりに、っていってもなぁ。たかがIMEを使った文字入力でCPU負荷だってせいぜい7,8%くらいにしかならないんだけどなあ。)
PCの起動時にGPUのFanは回っていないのですが、おそらくXが起動した辺りからずっと一定回転(結構うるさい)で回っています。もしかしたら、この辺はsensors-detectとかで認識させれば調整できるようになるのかもしれませんが、まだ良くわかっていません。
PolarisBIOSEditorで成功しなかったのは電圧を直に設定してしまっていたから、という可能性があります。65288等のポインタで指定したものを試す必要がありそうです。それで通るようならばSRBPolarisよりも各Stateを自由に設定できるのでこちらを使用したいです。
あと、単純に低電圧にしすぎた可能性もあります。ネットで拾えた情報だと一応同じチップであるRX560のアイドルで721mVというのがありましたし、チューンで700mVに設定したという情報も見つかりましたので700mVはイケるんじゃないかと勝手に思っていましたが、筆者の個体ではダメなのかもしれません。(一応、かなり上げ直しての検証もしたのだけれど、State0を800mVから変えるとどうにも不安定になるような……。(頻繁にブラックアウトして1分くらい待たされる)

ちょっと疲れたので、再挑戦はまたやる気が出てからにします。(もしくは他の新PC用パーツが揃って後に退けなくなったときか)
Linuxで省電力で動かしたいなあ。Windowsはパフォーマンスが落ちるから戻りたくないんよ……。

追試

GPU-Zで吸い出したVBIOSは壊れていてダメ。PoralisBIOSEditorも相変わらずダメ。SRBPolarisでも設定値によってはダメ。と、かえって成功率が落ちるというさらに謎な結果となり、結局はたまたま成功したROMを大事に使用するという情けない結果となりました。
あ、但し、追試で300MHz725mVとかテストしましたが(また725mV未満に下げられない病が発生して)1000MHz時の40%以上のフレームレートは出るんですな。
素性的には700mVとかでもイケそうな気配ではあるのですが、いかんせんBIOS側のブロックなんでしょうか値の設定ができません。
メモリは1500MHzのままでOCすら試していませんが800mVでも大丈夫そうなので下げてやりましたよ。

そしたらですねぇ。なぜなのかさっぱりわからないのですが、地味にGPUコア電圧の値が変わっていましてね。

SRBPolarisでさらにメモリ電圧を800mVまで下げたもの
State0State1State2State3State4State5State6State7
MHz3004005006007008009001000
mV800725730740745750756756
Pointer65282?65283?65284?65285?65286?65287?65288?
PowerColor AXRX 550 2GBD5-DHA/OCPowerColor AXRX 550 2GBD5-DHA/OC

もう、わけわかめ、ですよ。(^^ゞ
さらに、わけが分からないことにLinux上で日本語入力しているだけで30W近く上昇という嫌な現象ですが、最大でも13W程度の上昇に収まるようになっていました。ううむ、謎。
消費電力は全体的に微減(アイドルも負荷時も)しているので電圧設定が無視されているわけではなさそう。
適当な仮説を言うなら、この製品、BoardPowerLimitが35Wに、PowerControlLimitが75%に設定されています。この縛りの方がキツめであるために、クロックや電圧の調整が直接効果として現れるわけではない、ということなのかもしれません。

PowerColor AXRX 550 2GBD5-DHA/OC

あと、コア電圧の設定はメモリ電圧の設定にある程度引っ張られているかもしれません。
いずれにせよ、若干の消費電力低減と若干のパフォーマンスアップは出来たっぽいので当面これで良いことにします。後は必要に応じてドライバの設定調整でなんとかすることにしましょう。

Linuxでの運用面としては、これでちょっとFanがうるさいのをどうにかするのと、起動時に画面が表示されない(iGPU側で立ち上げてからdGPU側に接続しなおすとちゃんと映るという)謎を解明して、実用に漕ぎ着けようかと。
Fan止めたら1Wくらいは消費電力落ちるかなぁ? アイドルでほぼ10W上昇は地味に痛いですぞ。(それでもメモリ電圧をさらに落とした成果か1Wにも満たない程度ではありますがアイドル消費電力は下がっています。)
と、思ったのですが、肝心のInkscapeの動作がほとんど速くなっていないようなので(体感上はむしろ遅くなっている可能性すら感じる)、やっぱ外してZen2待ちかな。
世の中上手く行かねえっすな……

あ、そうそう、今後のKernelでFanコントロール組み込まれるかもみたいな話をどっかで見たので、Zen2のときには組み込まれていると良いですね。

2019-01-19 2019-01-18

この記事のタグ

PC

Windows

Linux/BSD

レビュー

トライ