[PC設定]メモリタイミング等のDRAM設定を行ってみる

PC設定

先日購入したゲーミングPCのメモリタイミングを調整してみて、メモリ設定によってゲーム性能が上がるのか見てみます。

ゲーム性能の指標としてはベンチマークのスコアとその際のFPS値を使用します。

またメモリの設定を行うにあたり調べ学習をしました。それらを引用しまくったメモを張り付けます。

実際に行ったのはメモリOCではないです(1.35VもOCっちゃOCなのだろうけど)。タイミング調整のみです。

参考資料

参考というかパクリ元です。ここら辺を読んで、ちょろっとまとめたメモを作成しました。

なのでここよりこっちを見るとよいと思いますよ。

メモリOC・タイミング調整

ハリフーン (hurriphoon)さんのゆっくり解説動画。動画なので気楽にメモリのタイミング調整について学べます。今回のFPS値検証はハリフーンさんの結果を再現させているだけではあります。

ゲーム向けのメモリ設定の最適化・選び方について述べられています。

メモリの設定手順について解説しています。大体これに従って設定してみています。

諸タイミングが何を指しているか等、メモリ設定を解説しています。

仮想メモリ・レジストリ

メモリ関連のレジストリ公式ドキュメント

メモリ関連のレジストリについてまとめられています。

DRAMのしくみ

メモリって何?なざっくりとした読み物です

メモリの仕組みからタイミングとは何か解説しています

メモリについてデジタルな話をしています。

  • https://www.micron.com/-/media/client/global/documents/products/technical-note/dram/tned03_gddr6.pdf

micronのテクニカルノートで検索すると専門的な話をしたものがいろいろあります。

安定性テスト

不安定な設定だと完走できずに落ちることがあるので簡単なテストに使えます

高い負荷をメモリに長時間かけエラーが出ないかテストします。

ほかにもいろいろあるぽいけど一杯やるのめんどくさいしいいかになってしまった

メモリタイミングと設定方法等

上記参考資料をパクって自分用にまとめたのです。

値の設定はBiosで行います。PCを起動したらF2を押しDRAMの設定を行います。

不明な単語は上記参考資料見たりすればいいのではないだろうか

安定性

条件を厳しくしていき動作が不安定にならないところに決定します。

安定して動作する中での最良の条件を見つけます。

下記手順ごとにOSが起動したらベンチマークを回し安定性をテストする。

簡易的に安定性を見る。不安定だと落ちる。

  • cinebench r23 multi
  • FF15bench

条件が固まってきたらprime95で長時間高負荷時の安定性を見る。

メモリ情報の確認

Thaiphoon Burnerで見れるらしい(環境では動作しなかった)

biosでinfomationから一部確認することができる

ダイの種類で詰めやすさが変わるらしい

シングルランクよりデュアルランクのほうが高速らしい

Voltage

標準は1.2V、XMP適用で1.35Vのものが多いと思います。

~1.5VはOCと言ってよいのではないでしょうか(1.35VもOCではあるのでしょうけど)

GEAR MODE

メモリコントローラのクロックを決定します。GEARMODE1はDRAMと同じクロックで動作し、2は半分で動作するようです。

ますGEARMODE1にします。

Clock

言うまでもないですがクロックが高いほうが高速で動作します。

タイミングAutoでクロックを上げていき起動しなくなる周波数を探り、使用するクロックを決定します。

timing

タイミングの実時間速さは何クロック使用するか、であるのでクロックの高さに依存します。

primary timing

  • tCL

CAS latency (Column Address Strobe)

アクティブ化した行でアクティブ化した要求列のアドレスを読み込みデータを取得するまでの時間

tCLを不安定になるまで下げていき値を決定し設定します。
サイクル実時間は下記から求められます
$$\sf{timing}\ast\frac{2000}{clock} [ns]$$
  • tRCD

Row to Column Delay

行をアクティブ化した後、列をアクティブにするまでの時間

行アクティブ後列データ読み込みまでにかかる時間はtCL+tRCD

  • tRP

Row Precharge Time

プリチャージ=非アクティブ化してから次の読み込み行をアクティブ化するまでの時間

読み取り後、非アクティブにし次の列アドレスをアクティブしようとするまでの時間

tRCD, tRPを同値で不安定になるまで下げていき値を決定し設定します。
  • tRAS

Row Active Time

行をアクティブ化してから非アクティブまでの、行がアクティブである最小時間

通常tCL+tRP
tRAS=tCL+tRPを最小値として設定し不安定なら上げていき値を決定し設定します。
  • CR

Command Rate

コマンド送信回数。少ないほうが高速だが、複数回コマンドを送信すれが当然エラー率は下がる

クロックが割と高くなければ1で通るらしい

1から設定し、不安定なら上げ値を決定し設定します。

secondary timing

  • tWR

Write Recovery Time

書き込み回復時間

書き込み終了後にバンクが非アクティブ化されるまでの時間

  • tRTP

Read to Precharge Delay

読み取りから非アクティブ化までの時間

tWR=2*tRTPとなります
tWR tRTP
safe 2010
tight 168
extreme 126
  • tRRD_S

RAS to RAS Delay Different Bank Group

異なるバンクへグループの遅延時間。メモリは複数のバンクおよびバンクグループがある

RRDS分だけ待機する

  • tRRD_L

RAS to RAS Delay Same Bank Group

  • tFAW

Four Activate Window

同ランク内で4つの行のアクティブ化が発生できる時間

tRRDS tRRDL tFAW
safe6624
tight4616
extreme 4416
  • tRFC

Refresh Cycle Time

メモリは一定期間でリフレッシュが入る。リフレッシュにかかる時間なので短いほど良い

周囲温度が高いときつくなるためややマージンを持つとよいかも

下記表のとおりに加減も決まってるようで台に応じて徐々に下げていくとよい
$$\sf{tRFC timing}=\sf{tRFC[ns]}\ast\frac{clock}{2000}$$
IC tRFC (ns)
S8B120 – 180
N8B150 – 170
H8D240 – 260
H8A、H8C260 – 280
M8E、M16B 280 – 310
S8C300 – 340
  • tCWL

CAS Write Latency

CASの書き込み版。列アクティブから書き込みまでの時間

tCWL1
safetCL
tightTCL-1
extreme TCL-2
tCWL を変更すると tWRRD_dg/sg に影響し、したがって tWTR_S/L に影響します。
tCWL を 1 下げる場合、同じ tWTR 値を維持するには、tWRRD_dg/sg を 1 下げる必要があります
  • tWTR_S

Write to Read Delay Different Bank Group

異なるバンクグループでの書き込みから読み込みまでの待機時間

  • tWTR_L

Write to Read Delay Same Bank Group

tWTRS tWTRL
safe412
tight410
extreme 48
tWTRS/L を auto のままにし、それぞれ tWRRD_dg/sg で制御する必要があります。
tWRRD_dg/sg を 1 下げると、tWTRS が 1 下がります。
tWRRD_sg も同様です。可能な限り低くなったら、tWTRS/L を手動で設定します
tCWL→tWRRD→tWTRの順に設定

third timing

  • tREFI

リフレッシュを行う間隔。リフレッシュ中は動作できないため間隔は長いほどよい

周囲温度が高いときつくなるためややマージンを持つとよいかも

tREFI
safe32768
tight4000
extreme 65534
  • tCKE

Clock Enable Time

  • tRC

Row Cycle Time

RASは行がアクティブにされてから非アクティブにするまでの時間、

RPが非アクティブにされてから次の行をアクティブにするまでの時間

よって最小値は tRAS + tRP

tRAS+tRPを最小値として不安定なら増やす

turn around timing

  • tRDWR

Read Write Command Spacing

読み取りコマンド後書き込みコマンドまでの間隔

  • tWRRD

Write Read Command Spacing

書き込みコマンド後読み取りコマンドまでの間隔

  • tRDRD
  • tWRWR
tRDRD
sg dg d r dd
safe8488
tight7477
extreme 6466
tWRWR
sgdgdrdd
safe8488
tight7477
extreme6466
tWRRD_sg/dgは上記参照
tRDWRは9/9/9/9 のような感じで1ずつ下げていきます
drはデュアルランクに関するもので、シングルランクでは無視できます。

メモリ設定の違いによるFPS値の変化

前回(HWiNFOとRTSSでPCのベンチマークを記録してGNU Octaveからグラフを出力してみる)作成したものを使用してベンチマーク中のFPS値を測定します。

使用するメモリはこちらです。XMP 3600MHz

Patriot Viper Steel DDR4 3600MHz 16GB x 2枚

余談ですがこのメモリXMPを適用するとやや不安定で、たまに落ちます。あまり良い個体を引けなかったようです。

XMP運用できません。最初からタイミング調整するつもりだったとはいえ設定されてるんだから動いてくれよなんですけど。XMPとの比較はできません。無意味では?

というわけでそもそもの目的としてOCして限界に挑むとかでなく1.35V3600MHzで安定動作する設定を探すという風です。

ついでに設定の差によるFPS値やスコアの変動も見てみます。

使用ベンチマーク

7zipベンチマークcompression

3D Mark Timespy

ff14ベンチマーク

条件

それぞれの条件で安定動作したものを使用しています。

clock MHz

  • 2666(SPD)
  • 3200
  • 3400
  • 3600

timing

  • 自動
  • 一次のみ
  • その他も

結果

スコア

  • 7zip comp

タイミングを設定するごとにスコアが上昇しています。一次のみで見てみると3200MHzがなんかスコア高いですね。

一次タイミング以降を設定するとスコアがめちゃくちゃ伸びています。

ゲームにおいてここまで差がつくかといわれるとですが、一次以降のタイミングも重要であることはわかります。

  • timespy physics

こちらも同様の傾向です。

2666MHzとの差が大きく見え、クロックが高いほうが性能がよさそうです。

  • ff14

ff14は一次タイミングでの伸びと+一次以降との伸びが同じくらいです。

fps

ff14の結果から

  • 2666auto VS 3600 all

拡大しないと見づらいですが、どこの地点でも20fps程度の差があります。

SPDとの比較ですが、2666等の一番安いものを買うのと数千円盛って安いOCメモリを買うのとでこれぐらいの差がある感じでしょうか。

  • 3200all VS 3400all VS 3600all

拡大しないと見えない。

3200と3400と3600とでそれぞれ調整しましたが、周波数は高いほうがFPSがちょっと高いです。

3200→3400の伸びは目に見えますが、3400→3600の伸びはそれに比べるとかなり小さいです。

  • 3600 auto VS primary VS all

自動→一次のみ、一次のみ→全部 でそれぞれ10fps程度伸びています。

まとめと調整した感想

タイミングを手動調整することで、ちゃんとFPSが向上することがわかりました。

何よりBiosやメモリ設定をいじるという食わず嫌いがなくなるのがよいと思います。こうでもしなきゃめんどくさくて触ろうとすることなかったでしょうからね。

あとちゃんとOCメモリを安定させられるというのが性能面よりも大きいですよね

下記調べながら等環境でメモリを設定してみた結果です記録用。ちゃんとできてるのかは知らないけど。

Gear1
tCL19
tRCD21
tRP21
CR1
tWR12
tRFC549
tRRD_L6
tRRD_S4
tWTR_L6
tWTR_S4
tRTP6
tFAW16
tCWL17
tREFE65534
tCKE4
tRC61
tRDRD_sg7
tRDRD_dg4
tRDRD_dr7
tRDRDdd7
tRDWR_sg12
tRDWR_dg12
tRDWR_dr14
tRDWR_dd14
tWRRD_sg29
tWRRD_dg27
tWRRD_dr10
tWRRD_dd10
tWRWR_sg8
tWRWR_dg4
tWRWR_dr8
tWRWR_dd8

仮想メモリとレジストリ

レジストリ

参考資料のところで示しましたが

あたりを読んだり試してみたりしました。

これらレジストリ自体古くて機能していないものも多いようです。

Microsoftに高スぺの場合カーネルを物理メモリに常駐させるようレジストリをいじると性能が上がる可能性があると書いてあったりします。

インターネットでも見てるとレジストリからメモリの最適化できますというのはいっぱい出てきます。

まあ等環境では目に見えたfps向上などの変化は見られませんでしたので、わざわざレジストリをいじる必要性は感じられませんでした。とりあえずデフォルト推奨です。(そのうち要検証?)

ソフトウェアなどによって勝手にレジストリが変更されている、ということがあるというのも見ましたので、そういう場合は元に戻しておくのがよいかな。

仮想メモリ

仮想メモリもレジストリから編集することはできますがパフォーマンスオプションから設定することができます。

win+rからSystemPropertiesPerformanceを実行するか、ショートカットを作っておきましょう。

パフォーマンスオプション>詳細設定>仮想メモリ

仮想メモリのオンオフや割当量を設定することができます。

メモリ量が十分であれば仮想メモリをオフにする方がよい、ということも聞きますがどうなのでしょうか。fps値向上等の目に見えた変化は見られませんでした。好きな方でよさそう。仮想メモリ割り当てないと不安定になるゲームもあるとか聞いたことがあります。

確かに計算機等の基本的な本等に書いてある理屈の上では仮想メモリのデータにアクセスする際遅延が発生しそうですが、そのレベルが実際に影響を及ぼすのかは疑問です。逆に物理メモリのスペースを空けることで良い効果もあるとか。(そのうち要検証?なんかどうでもよさそう

おわり

メモリタイミングを調整することで10程度規模のfps差が生じました。大きいか小さいかはちょっとの値段の差をどう捉えるか人それぞれでしょうか。

おすすめのメモリの買い方は自分で設定したくない人はネイティブ3200を買う。ちょっと安いし。OCメモリならXMP当てずにタイミングを手動設定する。です

ただ今回調整する中でBiosも立ち上がらなくなったのがありました(片方のメモリを抜き原因のタイミングを再設定し対処。ダメだったとしてもCMOSクリアすれば大丈夫かな?)。なのでまあなにかしらのリスクはあることは想定してやるべきなのだなあ。

……めんどくさいしネイティブでよくね?ちょっと安いし。

XMPは不安定だったのでゴミです。どこを見てもOCメモリが当たり前におすすめされててなんだかなあと思ったりしました。不安定なことはまれなのだろうか?それでも不安定な可能性を孕んでいるよなあ……など。

何より今回はメモリに関する知識が多少身についたことと、メモリタイミングの設定を実際に行ってみた経験が収穫です。

前回:HWiNFOとRTSSでPCのベンチマークを記録してGNU Octaveからグラフを出力してみる

次の記事:Windows11インストール後の初期設定(MS-settings)


コメント

タイトルとURLをコピーしました