メモリ屋社長のちょっとタメになるメモリ話

SPDとマザーボードの関係性

 みなさま、こんにちは。決算月(当社は2月が決算)で超絶忙しいなか、現実逃避を図るべくGoogleを駆使し、巷を席巻している「eスポーツ」なんていうオラ、ワクワクすっぞなワードにたどり着き、そういえば私も昔ゲームにハマってたなぁと押し入れをひっくり返し、ようやくゲームメディアを発見するも動作するOSはWindows 95やWindows NT 4.0のオンパレードで、現実を逃避するどころか逆に現実に引き戻されたセンチュリーマイクロ株式会社代表の嶋野です。あ、ちなみにいまはMacしか持ってません。

 ということで、第7回、2018年初のコラムです。発売したてほやほやの弊社オリジナル製品「SPD PROGRAMMER2 Lite Edition」が、ご好評いただいていることもあり、SPDに関連した内容でお届けします。

SPDについておさらい

 SPDとはなんぞや、について詳細は以前の記事でお話ししましたが、簡単におさらいしますと、SPDとは「Serial Presence Detect」の略で、

  1. メーカー名
  2. 規格
  3. 容量
  4. 搭載DRAM(CHIP)の情報(メーカー名/規格/bit構成/容量)
  5. 動作クロック周波数
  6. CAS Latency(Column Address Strobe Latency)
  7. 動作電圧
  8. ECC(誤り訂正符号)

 などの情報をマザーボードに伝える役割のものです。マザーボードはこの情報を読み取ってどんなメモリか判断しているわけですね。

 では、マザーボードは、メモリから受け取ったSPD情報を、どのように認識しているのでしょうか。

 今回はそのあたりを、実機を使って調査してみました。

マザーボードのSPDとの付き合い方

 オーバークロック(以下OC)をたしなむ方であれば良くご存じの内容かと思いますが、OC対応のマザーボードの場合、UEFI/BIOS(以下BIOS)設定にて、CPUやメモリの動作クロック周波数等に対し、Auto設定かManual設定かの選択ができます。ほかにも、VoltageやLatencyなどの設定も、同様にAuto/Manualの設定ができるものが多いですね。

 では、BIOSのAuto設定とManual設定の違いはなんなのかというと、ざっくりと、

  • Auto:SPDの設定値を参照し値を決める
  • Manual:BIOS上での入力値を反映させる

ということが言えるでしょう。

【図1】SPD設定を無視してManual設定が反映される

 まずはManual設定での動作について確認です。

 図1はGIGABYTE製マザーボード「X299 AORUS GAMING7」のBIOS画面です。DDR4-2400のメモリを搭載しており、標準設定(Auto)の状態では、SPDどおりの2,400MHzで起動します。

 一例として、「System Memory Multiplier」の設定値をAutoからManualで「32.00」に変更した(1)ところ、SPDの「2,400MHz」という設定(2)を無視して3,200MHzで動作(3)しています。

 つまりManual設定では、「OCのためにSPDの設定を無視して動作する」、ということですね。

 では、「Auto設定」=「SPDの言うことを聞く」、「Manual設定」=「SPDの言うことを聞かない」、ということがわかったところで、次に行きましょう。

BIOSはどの程度SPDを解釈できるのか?

 SPDのFrequency設定は、1MHz刻みとまでは言えませんが、かなり細かく刻むことができます。

 では、マザーボード側は、BIOSのメモリ周波数設定が「Auto」であれば、SPDのFrequency設定がどんな値であっても、期待したとおり解釈できるのでしょうか?

 ここでは、BIOSのメモリ周波数設定を「Auto」に設定した場合の動作について検証します。

 先ほども登場した、GIGABYTEのX299 AORUS GAMING7で試してみました。検証時のBIOSバージョンは「F7l」です。

 SPD値を1ずつ変えて、小刻みに試すのはたいへんなので、成果が出やすいと思われる、100の倍数と133.33……の倍数で試してみました。それぞれのSPD設定値に対し、BIOSはどのように解釈するでしょうか。次の表をご覧ください。

 今回使用したメモリモジュールはDDR4-2666ですので、2,666MHz以上のSPD設定を試してみました。赤で塗りつぶしたところは、設定したSPDの値にならなかったものです。

 この結果を見るかぎり、BIOSがSPD解釈用の定義情報を持っていて、それに該当しないSPD値の場合は、近似の周波数で解釈する、という仕組みかと見受けられます。

 単純にSPD情報のまま動作しているわけではなく、BIOSとSPD間で綿密な連携を取っていることがわかりました。

 なお、BIOSによるSPDの解釈の仕方は、マザーボードメーカーによって異なります。機種によっても、BIOSバージョンによっても異なります。今回使用したマザーボードは設定値に近い値で解釈・動作してくれましたが、2,133MHz/2,400MHz/2,666MHz/2,933MHz/3,200MHzといった、規格どおりの綺麗な値に補正して解釈するものもあります。

 このあたりは、マザーボード各社の開発ポリシーによるものだと思いますね。

最後に

 以上が7回目のコラムとなります。

 SPDによってメモリの設定値を変えたとしても、必ずしも設定した値どおりにマザーボードが解釈してくれるとはかぎらない、というお話でした。

 ちなみに記事中で当然のようにOCしておりますが、念のために申しておきますと、弊社製品はOCに関しては動作保証外ですので、ご理解のほどよろしくお願いいたします。

 検証部材のなかには他社さんのメモリもありますので、担当者はきっとそれを使ったのでしょう(と、いうことにしておいてくださいませ)。

SPD PROGRAMMER 2 Lite Edition(下)。上は以前販売していたDDR3向けのSPD PROGRAMMER1

 最近、「DDR3版のSPD PROGRAMMER2は、販売しないのですか?」という声がチラホラ聞こえてきますが、じつはDDR3版=SPD PROGRAMMER1(以前販売し、現在生産終了)という事実がありまして・・・。ほしい方がたくさんいたら作っちゃおうかなぁ。

 ということで、コラムネタを引き続き募集しておりますので、記事へのコメントや弊社Twitterまでぜひよろしくお願いいたします。また、SPD PROGRAMMER2をご購入いただいた方はご感想をいただけると開発者がとても喜びます。

それではまた。

嶋野 康生

センチュリーマイクロ株式会社代表取締役社長。PCパーツショップのサポート、台湾系マザーボードメーカーを経て、2005年7月にセンチュリーマイクロに入社。マーケティング担当として入社したが、Webマスター・営業などさまざまな業務を担当後、現職に至る。PC、スマホはもちろん、カメラやクルマ、バイクなど多趣味かつ新しいモノ好き。たまにものすごく脱線します。