消費電力 & 動作周波数(グラフ126~138)

いよいよ問題の消費電力である。まずはトータルのFireStrike Ultra実行時の消費電力変動(グラフ126)と、待機時電力との差(グラフ127)、およびその平均値のまとめ(グラフ128)をご覧いただきたい。

絶対的な消費電力、という意味ではRX 480 CFの消費電力はR9 390Xよりもむしろやや低い程度でしかない。ただグラフ126は待機時の消費電力の違いを考慮していないので、これを差し引いたのがグラフ127であるが、やはりR9 390Xより微妙に低いあたりである。

このグラフから、Game Test 1/2とCombined Test実施中と思われる時間の消費電力の平均値を取ったのがグラフ128である。やはりRX 480 CFの消費電力はR9 390Xよりやや低い程度である。

意外にGTX 1080の消費電力も意外に大きいことがわかる。GTX 980を明らかに上回っており、GTX 1070と比較すると40~50Wの上乗せになっている。性能/消費電力比はともかくとして、絶対的な消費電力は増えているのは興味深い。

ということで懸案だった、150Wオーバー問題である。実はこのグラフ128からも、その片鱗が見えている。このグラフからRX 480とRX 480 CFの実効消費電力を抜き出して差を比較すると

Idle 8.4W
Game Test 1 155.5W
Game Test 2 154.5W
Combined Test 162.5W

となる。もともとIdleというのは

GPU以外(=CPU+Memory+M/B上の様々な周辺回路+SATA+Fan+etc...)の待機時消費電力+GPUの待機時消費電力

という計算になる。

RX 480 CFの場合はこれが

GPU以外(=CPU+Memory+M/B上の様々な周辺回路+SATA+Fan+etc...)の待機時消費電力+GPUの待機時消費電力×2

となるから、GPUのIdle時の待機電力は8.4Wということになる。

さて、問題はGame Testなどの場合だ。グラフ128で示している数字はIdle時との差なので、RX 480 CF以外は

GPU以外の稼動時消費電力差+GPUの稼動時電力差

であるが、RX 480 CFのみ

GPU以外の稼動時消費電力差+GPUの稼動時電力差×2

となる。もちろんこれも厳密に言えばCrossFire構成にすることでオーバーヘッドが増え、その分CPUやメモリの消費電力も微妙に増えている可能性はあるのだが、それが数十Wに及ぶことは考えにくいということで無視すると、つまり

GPUの稼動時電力差=154.5~162.5W

という計算になり、これにIdleの8.4Wを加味して

GPUの稼動時電力=162.9~170.9W

という計算が成り立つ。RX 480はTDP 150Wということで、補助電源が6pin×1しかないから、確かに電力に関してはスペックに反して消費電力が高くなっている。

この電力についてはこの直後にもう少しちゃんと論じるとして、先に動作周波数変動などを見てみたい。グラフ129~136は、GPU-Zを利用しての動作周波数とコア温度を測定した結果を個別にまとめてみた。

ほとんどのものは前回と同じであるが、注目点としてはまずGTX 1080(グラフ132)で、動作周波数は1.8GHz近いところまであがっているにも関わらず、コア温度は最大でも48℃程度に抑えられており、非常に効果的に冷却が行われている。

またGame Test 1を開始する前の周波数変動をGTX 1070(グラフ131)と見比べると興味深い。GTX 1070とは少し周波数変更のアルゴリズムが違うようである。(Game Test 2の終了直後もそんな感じである)。

R9 390XはおおむねR9 390と同じ傾向だが、消費電力が多少多い分、発熱も多いためか、変化傾向は変わらないまま温度そのものが10℃ほど上乗せになっている。

最後がRX 480 CF(グラフ136)で、CrossFireになると動作周波数を連動して変更しないといけなくなるためか、変動の度合いがRX 480単独(グラフ135)よりも少ないというか、より長時間一定の周波数で動いている感じである。

その分温度も高めで、Game Test 2の終わりあたりには80度を超えている。ただこれはマザーボードに2枚挿しして、間が1スロット分しか開いていないので、吸気温度そのものが高く、上乗せされているという可能性が高い。

グラフ137は、グラフ129~136の温度変動のみをまとめてプロットしたもので、これの平均値と最大値を取ったのがグラフ138である。RX 480 CFはやはりかなり熱くなっているが、それでもR9 390Xよりもマシというのは、逆にR9 390Xがどれだけ壮絶かを物語っている。また、一番温度が低いのがGTX 1080というのは、実はFireStrike UltraですらGTX 1080には負荷として軽いということなのかもしれない。

さて、先に触れた消費電力オーバーの話。ここからは他のサイトの引用になる。最初にこの問題を報じたのはTom's Hardwareの記事だと思うのだが、彼らはPCIeのライザーカード(具体的な型番は分からないが、例えばこのような製品もの)を利用して、PCIeスロットからRX 480に供給される電力(3.3Vレーンと12Vレーン)を正確に測定し(Rohde & Schwarzの電流プローブを利用した模様)、その結果としてPCIeスロットから最小29W、最大121W、平均89Wの電力が供給されていると報じた。

どうしてこうなるのか? もう少し詳しく解説したい。図1はGPUカード上の電源供給回路の簡単な模式図だ。実際はこれに加えてメモリ(GDDR5)用のPMICとDC/DCコンバータがもう一組入るが、説明の簡略化のために省いた。

さて、GPUカードには大別して3種類の電源供給源があり、

  • PCIeスロットの3.3V電源供給レーン
  • PCIeスロットの12V電源供給レーン
  • 補助電源コネクタ

となっている。それぞれの電力供給能力は決まっており、3.3Vレーンが最大3A、12Vレーンが最大5.5A、補助電源は75/150/225Wが供給可能で、それぞれ6.25/12.5/18.75Aが供給される形になる。つまりRX 480で150Wをフルに使いたい場合は

  • PCIeスロットの3.3Vレーンから10W
  • PCIeスロットの12Vレーンから65W(理論上は66W)
  • 補助電源コネクタから75W

という複数の電源ソースからかき集める作業が必要になる。

これを管理するのがPMIC(Power Management IC)である。それぞれの電源ソースからの電源(図中水色/青色の矢印)は別々のDC/DCコンバータを経由して、最終的に同一の電圧(Vcc)に変換され、GPUチップに供給される(図中黄緑の矢印)ことになる。

この際にPMICは単にDC/DCコンバータの出力電圧を調整するだけでなく、供給する最大電流量(あるいは、取り込む最大電流量)をうまく調整することが求められる(図中赤色矢印)。これを最終的に制御するのはGPUチップそのものである。

GPUからPMBus(PowerManagement Bus)やSPI、あるいはそのほかのバスを経由してすべてのPMICに対して「この供給回路からどれだけの電力を供給しろ」と指示するのがGPUチップそのものである(図中橙色矢印)。

ではGPUチップはこれをどう制御するか? というと、これは内部にファームウェアというかテーブルに近いものを抱えているのだが、これは起動時にドライバから流し込まれる(正確に言えば、ブート用のテーブルだけは固定で持っており、ドライバに制御が移るとこれが新しいテーブルに更新される形)。ということで話が長くなったが、実は供給電力が多すぎる問題は、ドライバ内部のPMICに対する指示に間違いがあり、PCIeレーンから過剰に電力を引っ張るような仕様になっていたことが理由である。

余談ながら、これが理由で直ちにマザーボードが火を噴くことは考えにくい。というのは、RX 480を装着するようなマザーボードの場合、大抵2スロットのPCIe x16レーンが用意されているからだ。またPCIeの話に戻るが、PCIeスロット(正確に書けばPCIe x16のコネクタ)は、すべて最大で75Wを供給できないといけない仕様になっている。これはx16のコネクタの仕様であって、そこに実際にはx1相当しか配線がなくても75W分の電源は供給しないといけない。

さて、そうなると例えばPCIe x16スロットを3本持つ(ゲーミングマザーボードではしばしば見かける)構成の場合、マザーボードはPCIeのスロット3本用に、合計225W分の電源供給能力を用意するのが普通だ。

この際に、厳密に1スロット75Wとかチェックすることはなく、「3スロットまとめて225W」という形で供給される。だから、RX 480がたとえば1枚で90Wづつ消費したとして、2枚でも180Wだから、マザーボードの供給能力にはまだゆとりがある。

もちろん厳密にはコネクタの電気容量的にややオーバーであるが、こちらもある程度安全のためのマージンが取られているから、すぐに発熱して炎上なんてことはおきない。もちろん無理にずっと使い続ければ、いずれ火を噴く危険性が無いとは言えないのだが、それはそれなりの期間(最低でも1カ月くらいの連続運転)が必要だろう。

話を戻すとこれの是正は簡単で、ドライバ内部におけるPMICへの指示部を正しく書き直すだけで済む。実際AMDは、Radeon CRIMSON Software 16.7.1以降でこれが修正されるとしている。ということで、次にこの16.7.1を利用した結果を見てみたいと思う。ちなみに現在は16.7.2 HotFixがリリースされているのでやや古いのだが、この16.7.1のリリースノートを見てみると、修正点として

  • Grand Theft Auto Vでマイナーバグを修正
  • DOOMを1920x1080pixel以上で動作させる場合の描画乱れを修正
  • Hitman 2016をDX12環境で利用した際に、武器を持ったままズームするとグラフィックが乱れる問題を修正

などが挙げられており、さらにに主要なゲームで3%ほどの性能改善があるとしている。そんなわけで、ここまで見てきた中であまり芳しくない性能を出したテストを中心に再度比較を行い、最後に消費電力の改善具合を見てみたいと思う。

さて、ここからは16.6.2と16.7.1の比較ということで

16.6.2:AMD Radeon RX 480 Reference+CRIMSON Software 16.6.2 16.7.1:AMD Radeon RX 480 Reference+CRIMSON Software 16.7.1 16.6.2 CF:AMD Radeon RX 480 Reference×2のCrossFire動作+CRIMSON Software 16.6.2 16.7.1 CF:AMD Radeon RX 480 Reference×2のCrossFire動作+CRIMSON Software 16.7.1