同じメモリ(に見えた)を使って64GBから128GBにするのに苦労した話

結論

Ryzen 9 7950XとASRock B650 Steel Legend WiFiで、DDR5 32GBを4枚、合計128GB搭載したところ、起動時のメモリトレーニングでかなり苦労しました。

今回使ったメモリはCorsair VENGEANCE DDR5-5600です。

型番は4枚とも同じ、

CMK64GX5M2B5600Z40

です。

しかし、実際には64GB(32GB×2)のキットを2セット購入しており、メモリに記載されているVersionが異なっていました。

  • 2枚:Ver 3.34.02
  • 2枚:Ver 4.43.02

2枚構成なら、どちらのVersionでも問題なく起動します。

さらにVer 3とVer 4を1枚ずつ混在させても、A2/B2の2枚構成なら問題なく起動しました。

ところが4枚にすると状況が変わります。

メモリトレーニングが非常に長くなったり、DRAMランプが点滅したまま起動しなくなったりしました。

今回いろいろ試して分かったのは、

同じ型番のDDR5メモリでも、32GB×4の4 DIMM構成は、32GB×2とはまったく別物として考えた方がよい

ということです。


使用環境

今回の環境は以下です。

項目構成
CPUAMD Ryzen 9 7950X
マザーボードASRock B650 Steel Legend WiFi
BIOS4.43
メモリCorsair VENGEANCE DDR5
型番CMK64GX5M2B5600Z40
公称速度DDR5-5600
容量32GB×4 = 128GB
Ver3.34.02×2、4.43.02×2

最初はBIOS 3.01を使用していました。

メモリ関係の問題を疑い、最終的にはBIOS 4.43まで更新しています。


そもそもA1/A2/B1/B2とは何なのか

これも今回調べていて分かりにくかったところです。

B650 Steel Legend WiFiのDIMMスロットは、CPUに近い側から、

CPU
 |
 v

+-----------+    +----+ +----+ +----+ +----+
|           |    | A1 | | A2 | | B1 | | B2 |
| Ryzen 9   |    |    | |    | |    | |    |
| 7950X     |    |    | |    | |    | |    |
|           |    |    | |    | |    | |    |
+-----------+    +----+ +----+ +----+ +----+

という順番です。

ここで重要なのは、

  • A1/A2 = Channel A
  • B1/B2 = Channel B

という関係です。

論理的には、

                Ryzen 9 7950X
                      |
            +---------+---------+
            |                   |
        Channel A           Channel B
            |                   |
         +--+--+              +--+--+
         |     |              |     |
        A1    A2             B1    B2

となります。


なぜ2枚ならA2/B2なのか

ASRockのマニュアルを見ると、メモリを2枚だけ使用する場合はA2/B2に挿すよう指定されています。

最初は、

A1とA2があるのに、なぜ「1」ではなく「2」を優先するのか?

というのがよく分かりませんでした。

しかし、A/Bがメモリチャネルだと考えると理解しやすくなります。

A2/B2に1枚ずつ挿すと、

Channel A             Channel B
    |                     |
   A2                    B2
    |                     |
  32GB                  32GB

となり、CPUの2つのメモリチャネルを両方使用できます。

物理的には、

CPU側 →

A1     A2     B1     B2
[ ]    [RAM]  [ ]    [RAM]
        ↑             ↑

です。

このA2/B2が、各チャネル1枚で使用する場合の推奨スロットです。


2枚構成では問題がない

最初に各メモリキットを単独で試しました。

Ver 3.34.02を2枚、

A1     A2     B1     B2
[ ]    [V3]   [ ]    [V3]

として起動。

これは問題ありませんでした。

次にVer 4.43.02を2枚、

A1     A2     B1     B2
[ ]    [V4]   [ ]    [V4]

としても正常に起動しました。

つまり、どちらの64GBキットも単独では正常です。


Ver 3とVer 4を混ぜてみた

次に、

A1     A2     B1     B2
[ ]    [V4]   [ ]    [V3]

としてみました。

これも問題なく起動しました。

この結果はかなり重要でした。

少なくとも、

Ver 3とVer 4を混ぜた瞬間に起動できなくなる

というわけではありません。

A2/B2の2枚構成、つまり各チャネル1 DIMMであれば、異なるVersionを混在させても私の環境では正常に動作しました。


3枚にすると話が変わった

そこで3枚構成を試しました。

例えば、

A1     A2     B1     B2
[V3]   [V4]   [ ]    [V3]

です。

この構成ではうまく起動しませんでした。

DRAMのLEDが点滅し続け、メモリトレーニングから抜けられない状態になりました。

ところが別の配置、

A1     A2     B1     B2
[ ]    [V4]   [V3]   [V3]

では起動できました。

つまり単純に、

3枚だから絶対にダメ

というわけでもありません。

DIMMの配置によって結果が変わりました。


4枚ではメモリトレーニングが問題になる

最終的に使いたいのは、

A1     A2     B1     B2
[RAM]  [RAM]  [RAM]  [RAM]

という128GB構成です。

2枚の場合は、

Channel A : 1 DIMM
Channel B : 1 DIMM

なので1DPC(1 DIMM Per Channel)です。

一方4枚の場合は、

Channel A : A1 + A2
Channel B : B1 + B2

となり、2DPC(2 DIMMs Per Channel)になります。

同じ32GBのメモリを使っていても、CPUのメモリコントローラから見ると条件が大きく変わります。

今回の環境では、4 DIMMにするとメモリトレーニングが非常にシビアになりました。


DDR5-3600まで落としても解決しなかった

当然、DDR5-5600で4枚動かすのは厳しい可能性があるため、メモリクロックも落としました。

最終的にはDDR5-3600まで落として試しています。

しかし、

3600まで落とせば4枚でも簡単に安定する

という結果にはなりませんでした。

メモリトレーニング後に一度Windowsが起動することはあります。

問題は、その次の起動です。

再度メモリトレーニングが始まり、DRAM LEDが点滅したままになることがありました。

このため、単純なメモリクロックだけの問題ではないと判断しました。


Memory Context Restoreについて

AM5には、

Memory Context Restore

という設定があります。

これは、一度成功したメモリトレーニングの結果を次回の起動で再利用し、毎回フルのメモリトレーニングを行うことを避けるための機能です。

B650 Steel Legend WiFiのBIOS 4.43では、私の環境ではMemory Context RestoreはデフォルトでEnabledになっていました。

つまり今回、

MCRを有効にしていなかったから毎回トレーニングされていた

という単純な話ではありませんでした。

MCRがEnabledでも、4 DIMM構成ではトレーニング結果をうまく再利用できない場合がありました。


Power Down Enableも関係する

AM5のメモリ設定を調べていると、

Power Down Enable

という設定も出てきます。

これはDRAMの省電力機能ですが、Memory Context Restoreと組み合わせた際の挙動にも関係します。

今回、

Memory Context Restore = Enabled
Power Down Enable      = Enabled

という組み合わせも試しました。

ただし、MCRをEnabledにすれば必ず解決するというものではありませんでした。

128GBの4 DIMM構成そのものが正常にトレーニングでき、その結果を次回起動時に正常に復元できることが前提になります。


BIOSも3.01から4.43へ更新

最初に使用していたBIOSは3.01でした。

メモリ互換性やAGESAの更新もあるため、途中で最新の4.43へ更新しました。

BIOS更新後は、

  • EXPO
  • DRAM Frequency
  • Memory Context Restore
  • Power Down Enable
  • SoC Voltage
  • DRAM Voltage

などを一度Autoまたはデフォルトに戻し、そこから検証しています。

それでも2 DIMMと4 DIMMでは明確に挙動が違いました。


同じ型番でもVersionが違った

今回、もう一つ気になったのがCorsairメモリのVersionです。

4枚とも型番は、

CMK64GX5M2B5600Z40

で完全に同じです。

しかし実際には、

2枚:Ver 3.34.02
2枚:Ver 4.43.02

でした。

つまり、型番だけを見れば同じメモリですが、製造Versionは異なります。

ただし今回の検証では、

A1     A2     B1     B2
[ ]    [V4]   [ ]    [V3]

という異なるVersionを混在させた2枚構成でも正常に動作しました。

そのため、

Versionが違うから起動しない

と単純には結論付けられません。

むしろ、4 DIMMによって1チャネルあたり2枚になることの影響が大きいように見えます。


現在試している配置

3枚で、

CPU側 →

A1     A2     B1     B2
[ ]    [V4]   [V3]   [V3]

が正常に起動しました。

そこで現在は、

CPU側 →

A1     A2     B1     B2
[V4]   [V4]   [V3]   [V3]

という配置を試しています。

論理的には、

Channel A
 |
 +-- A1 : Ver 4.43.02
 +-- A2 : Ver 4.43.02


Channel B
 |
 +-- B1 : Ver 3.34.02
 +-- B2 : Ver 3.34.02

です。

各チャネルの中ではVersionを統一した形になります。

この配置で一度メモリトレーニングを正常に完走し、Windowsまで起動できれば、DIMMの位置を固定した上で、次回以降Memory Context Restoreが正常に機能するかを確認する予定です。


今回分かったこと

今回かなりの組み合わせを試しましたが、現時点では次のように考えています。

構成結果
Ver 3 ×2、A2/B2正常
Ver 4 ×2、A2/B2正常
Ver 3 + Ver 4、A2/B2正常
3 DIMM配置によって成功・失敗
4 DIMMトレーニングが非常にシビア
DDR5-36004 DIMM問題の完全な解決にはならず
BIOS 3.01使用当初の環境
BIOS 4.43更新後も検証継続
MCR Enabled4 DIMMで必ずトレーニングを回避できるわけではない

特に大きかったのは、

異なるVersionを2枚混ぜてもA2/B2なら正常に動く

という結果です。

これによって、単純なメモリVersion混在だけが原因とは考えにくくなりました。


最終的に64GB×2の方がよい可能性もある

今回の目的は128GB搭載することです。

その方法には、

32GB × 4 = 128GB

だけでなく、

64GB × 2 = 128GB

もあります。

AM5で128GBを安定して使用することを最優先するのであれば、64GB×2の方が合理的な可能性があります。

64GB×2なら、

A1     A2     B1     B2
[ ]    [64]   [ ]    [64]

となり、128GBでも1DPCを維持できます。

今回32GB×4で苦労している、

1チャネルにDIMMを2枚接続する

という条件そのものを避けられます。


最終判断

Ryzen 9 7950XでDDR5を128GB搭載する場合、

「DDR5-5600の32GBを4枚買って、速度を3600くらいまで落とせば普通に動くだろう」

と考えていました。

実際には、それほど単純ではありませんでした。

2枚ではまったく問題のないメモリでも、4枚にした途端にメモリトレーニングが非常にシビアになります。

さらに、

  • DIMMの配置
  • 1DPC / 2DPC
  • メモリのVersion
  • BIOS / AGESA
  • Memory Context Restore
  • Power Down Enable
  • メモリクロック

などが絡んできます。

少なくとも今回の検証では、異なるVersionの混在2枚構成は正常に動作しました。

したがって、現在最も疑っているのは、Versionの違いそのものではなく、

32GB×4による2DPC構成

です。

128GBが必要で、これから新しくメモリを購入するのであれば、32GB×4よりも64GB×2を選んだ方がトラブルは少ないと思います。

一方、手元に32GB×4があるので、もう少しこの構成で検証を続けます。

現在は、

A1     A2     B1     B2
[V4]   [V4]   [V3]   [V3]

という、各チャネル内でVersionを統一した配置を試しています。

この状態でMemory Context Restoreが正常に働き、毎回の長いメモリトレーニングを回避できるのか。

結果が分かったら追記します。