更新履歴 [ 全て表示戻す ]
2014.03.13: 280Xのスイートスポットに関する情報や、参考リンクなどを追記

2014.03.05: 初出


Litecoinフォーラム(litecointalk.org)にて、
Poor hash rate on Radeon 7900 / 280X series cards? Here is the fix
(Radeon 7900 および R9 280X でハッシュレートが上がらない場合の対処法)というスレッドを発見。

Poor hash rate on Radeon 7900 / 280X series cards? Here is the fix
Poor hash rate on Radeon 7900 / 280X series cards? Here is the fix

大雑把に解説すると、メモリのタイミングテーブルが以下で切り替わるので、
メモリのタイミングテーブル
メモリを1500Mhz以上にOCする時は特に注意しな!
あと、搭載しているメモリモジュールによっては、700Kh/s出すの絶対無理だからな!って事のようです。

これらの理由が詳しく解説されていて、なかなか興味深かったので、頑張って意訳してみました。

リンク先の要約

ってな内容になっています

スポンサー リンク

以下、意訳文

一般的に、GPUコア:GPUメモリのクロック数は(GPU/メモリ=0.57のような感じで) 最適な比率が存在すると言われている。
けれど、scryptマイニングの場合、この法則が当てはまらない。
こういう法則を信じていると、大抵の場合、酷い結果が待っている。

scryptマイニングは、大量のメモリを必要とするが、(ゲームなど一般的な用途と違い)メモリ速度の帯域などは重要性が薄い。
しかしその代わりに、メモリのレイテンシに関しては非常にデリケートである。

VBIOSの設定が上手く行っていない場合、通常より200Kh/sくらいの速度低下は普通に発生する。
※VBIOS・・・・GPU BIOSのこと

 

レイテンシは、クロック周波数(サイクル当たりの時間)を増加させることによって減少させることができる。なのでメモリ周波数自体は、パフォーマンスに大きな影響を与えると思われる。
とは言うものの、VBIOSが適正に調整してくれる限りは、メモリのパフォーマンスは同一になる筈。
(例えば1250MHz(DDR5000)と1500MHz(DDR6000)は同じ性能になる筈)


VBIOSが正常に作動すれば、メモリタイミングはVBIOSで定義されたプリセットに基きメモリコントローラによって調整される。
例えば7970のプリセットには、以下のような「クロックの分け方」でメモリタイミング/レイテンシが設定されている。

400MHz (0-400MHz)
800MHz (401-800MHz)
900MHz (801-900MHz)
1000MHz (901-1000MHz)
1125MHz (1001-1125MHz)
1250MHz (1126-1250MHz)
1375MHz (1251-1375MHz)
1500MHz (1376-1500MHz)
1625MHz (1501-1625MHz)
1750MHz (1626-VCO Max)

7970カードのデフォルトのメモリクロックが1500MHzの時、メモリコントローラは(もし存在するなら)、1500MHzのクロックプロファイルで定義されたタイミングで駆動するだろう。
ここで例えば、ユーザがメモリクロックを1501MHzに設定すると、メモリコントローラは、1625MHzのプロファイルで定義されたタイミングの駆動を開始する。
(ちなみにこれはクロックを1375MHzまで下げた場合でも、同じことが起こる)

 

高クロック数のプロファイルは通常、(CPUやマザーのOCをする時と同様、)メモリレイテンシを増やしタイミングを緩める場合があります。

例えば、Hynix モジュール用の1500MHz、GDDR5タイミングは16-17-17 (tCL-tRCD-tRP, in MEMCLKs) です。
この場合の実際のサイクルタイムは
 tCL・・・・・・・・・・・10.66ns
 tRCDとTRP・・・・11.33ns
 (1000 / 1500 * delay in MEMCLKs)
となります。

一方、1625MHzのクロックプロファイルのタイミングは17-18-18です。
この場合の実際のサイクルタイムは
 tCL・・・・・・・・・・・10.967ns
 tRCDとTRP・・・・11.612ns
となり、
1500MHzから1550MHzにメモリをOCした場合、実際のメモリレイテンシは増加することを意味しています。

これは、メモリのオーバークロックでは望ましい結果が出ない理由の一つです。

ここからが重要

Radeon HD79XXおよび280Xシリーズのカードで使用される「GDDR5メモリ」には、Hynix (AFR と MFR)、Elpidaの3つのタイプがあります。
ODM先は、上記3つモジュールから好きなものを選択できます。バッチ(ロット)毎に異なるメモリが使われる場合もあります。

HynixのAFRモジュール(AMD提供品)が、唯一、適切にメモリブロックを調整されています。
Hynix AFRモジュールの場合のみ、そのビデオカードは性能上の制限がありません。

しかし、HynixのMFRモジュールの性能はハッキリ言ってゴミです。
VBIOSのメモリブロックは十分に調整されないまま、AMDからODM先へ供給されてしまってます。

エルピーダのメモリは、上の2つのHynixモジュールの中間です。
若干の性能限界はあるけれど、それはHynix MFRモジュールほど深刻ではありません。

 

Hynix MFRメモリを搭載した私の7970カードはGPUコア/メモリクロックが1000/1500MHz の状態で530Kh/s程度のハッシュレートしか出ません。

Tahitiベースのカードのハッシュレート計算式は以下です。
 シェーダー数 X GPUクロック(Ghz換算) X 0.34
 2048 X 1 X 0.34 = 696kHash/s
Tahitiコアを使った通常のカードは通常、 696kHash/s 前後のハッシュレートが出ます。

7970および280Xのハッシュレートがこれより低い場合、問題は恐らくメモリとVBIOSに起因しています。

このような問題に直面した場合、Tahiti GDDR5 Identifier を使って(搭載メモリを確認して)みましょう。
Tahiti GDDR5 Identifier は現在ダウンロードリンク切れ
※追記: ツールダウンロード先発見
 個人用倉庫な感じです。乱用厳禁。あと自己責任で利用する事。
 ttp://bal3wolf.centelia.net/DRIVERS/TOOLS/
 ▲Tahiti_GDDR5_Info.zipが該当ツールです。

Tahiti GDDR5 Identifier の使い方

  • 管理者権限で起動して、利用しているOSのバージョンを選択
  • プログラムが起動すると、「システムにインストールされたTahiti コア(7900または280X)」に実装されたアダプタ(バス)が全てが表示される。
    Tahiti GDDR5 Identifier
    ▲この画像はlitecointalk.orgより転載
  • 「メモリの種類」に「SK Hynix H5GQ2H24MFR」が見つかった場合、そのカードには修正BIOSが必要になる。

この場合、最新のGPU-ZとAtiflashを利用してカードのオリジナルBIOSをダンプ(書き出し)して、どこかにアップロードしてください。
私が適切に校正、最適化したメモリブロックを利用してBIOSをコンパイルしなおします。
注意: 作業量を減らすため、カードの製造元や製品番号なども明記してください。

・・・・うーむ。。。

翻訳ここで終わり。

つまり、素人には修正無理だから、著者が個別に診断して修正するよ、と言う事なのですね。そして、ツールのダウンロードが終了していると云う事は、BIOSの修正も現在は行っていないのかもしれません。

それでも、このスレッドには非常に多くのレスがついており、問題の発生したカードのBIOSのアップロード及びそれに対する修正BIOSのダウンロードは可能になっています。(リンク切れしたモノもあり)

対処方法

 ・HD7900系やR9 280Xのカードを利用していて、
 ・GPU/MEMクロックを 1000Mhz/1500Mhzに設定して
 ・ハッシュレートが696Kh/sを大幅に下回る場合

上記のような場合は、このスレッド内の個別レスから、自分のカードと同じ型番・製造番号を探してみましょう。もしかすると、修正BIOSがアップロードされているかもしれません。

注意

スレ主が個別に調整している所をみると、そのまま使うと不具合が出る可能性もあります。利用はあくまでも自己責任でお願いします。

余談(私の環境)

とりあえず、GPU-ZやDOS版AtiflashでBIOSをダンプすれば、ドコのメモリを使っているかは分かるみたいです。

と云う事で、手持ちのMSI R9 280X GAMING 3Gは、GPU-Zで確認する限り
 ・912-V277-064(28SB)・・・・エルピーダ製
 ・912-V277-072(38SB)・・・・Hynix 製
のようです。

ただし、AFRかMFRか、は確認できず。。。
Hynix 製

GPU-Zで取得したBIOSをVBE7に放り込んでみると・・・
VBE7
▲メモリタイプはElpida かHynix AFRのどちらかか・・・いや、ここに表示されるのは「サポートされるメモリ」で、実装されたメモリの表記ではないらしい。

GPUクロックを上げれば上げた分だけ素直にハッシュレートが伸びてくれるので、恐らくAFR搭載なんだろうけど、、、912-V277-072(38SB)は爆熱過ぎてOCする気になれない('Α`)

参考リンク: 280Xの個体差、スイートスポット

ここまでの情報を理解してから、以下のサイトを読むとなかなか面白いです。

海外サイトRumors City にはマイニング情報を詳しく扱っているカテがあり、R9 280X関連の情報は、現時点で上記8ページです。

「スイートスポット」という単語が頻繁に出てくるように、個体によって「最適な電圧、周波数、cgminerの設定」が異なっており、上手くヒットさせないとモノによっては690~700Kh/sあたりでハッシュレートが頭打ちになってしまう感じです。

上のサイトでは、メーカー別にスイートスポットを紹介していますが、メーカー関係なく、個体差でスイートスポットが存在している感じがします。

あとがき

うちのカードはどれも、1000/1500Mhzで695~700Kh/s前後の速度が出るので、このページで紹介されているBIOSに挑戦する必要は無い感じです。

メモリ速度を上げたり下げたり、CGminerの -I 値や --thread-concurrency 値を増やしたり減らしたりして、色々頑張っても、ハッシュレートが上がらないカードがあるのはこういう理由があるからみたいですね('Α`)

あと、メモリをOCしたい場合は、一気に1600~1625Mhzあたりまで上げてみないと、マイニングには効果が無いようですね。で、これが可能なのはhynix afrメモリだけだよ、と( ̄▽ ̄;)