メモリ屋社長のちょっとタメになるメモリ話
メモリモジュールに“SPD”という情報があるのを知っていますか?
2017年8月22日 06:00
みなさま、こんにちは。センチュリーマイクロ株式会社代表の嶋野です。先日弊社のTwitterにて「メモリモジュールにSPDという情報があるのを知っていますか?」とアンケートを実施したところ、「知らない」という回答が32%と、もっとも多い結果になりました。
「え、デカ●●ジャー(自主規制)じゃないの!?」とウチの小太郎(男・1歳・彼女いない歴1年)が驚いていましたが、捏造など一切ございませんので、くれぐれもよろしくお願いいたします。
アンケートです!
— センチュリーマイクロ株式会社 (@CENTURY_MICRO)2017年6月8日
メモリーモジュールにSPDという情報があるのを知っていますか?
さて、今回の内容は、お察しのとおり「SPD」です。掘り下げていくと底が見えないくらいディープな話になるので、今までどおりゆるふわな感じで解説していこうと思います。
SPDって何?
「Serial Presence Detect」の略称です。読み方はそのまま「えす・ぴー・でぃー」です。発音はおまかせします。役割を要約すると「PCやサーバーを起動するさいに、メモリモジュールの情報をBIOSに伝える規格/仕組み。」のことでございます。
擬人化すると、
マザー: 私のメモリスロットに挿さってるあなたは何者ですか?
メモリ: 初めまして。私はセンチュリーマイクロのDDR4-2400 8GB U-DIMMと申します。搭載しているDRAMは(以下、略)。
……というようなイメージですね。
SPDデータの主な内容
SPDの管轄は、おなじみJEDEC。彼らの定めた規格/ガイドラインに沿って、SPDデータを作成します。
では、メモリモジュールの情報とはいったいどんなものなのか?ここで主な項目を書き出してみます。
- (1)メーカー名
- (2)規格
- (3)容量
- (4)搭載DRAM(CHIP)の情報(メーカー名/規格/bit構成/容量)
- (5)動作クロック周波数
- (6)CAS Latency(Column Address Strobe Latency)
- (7)動作電圧
- (8)ECC(誤り訂正符号)
……キリがないので、ここらで止めておきます。
こう書くととても簡単そうに見えますが、実際のSPDデータは英数字の羅列です。「搭載したDRAMのクロック周波数が2,400MHzだから、2400と値を入力する。」といった単純な形ではありません。参考までに、当社製品のSPDデータを見てください。
SPDデータを公開するのは、たぶん初めてです。開発の人間に怒られること間違いなし、かも。
SPDデータが書ける容量は最大で512byte。その内384byteを使って16進数で値を書き込んでいきます。SPDデータの項目は非常に奥が深く、ほかにもモジュール製造者やモジュールが作られた工場の場所、通し番号で約4.3億個分のシリアル番号が書き込めたりします。
SPDデータを思うように調整できると、チューニングの幅が非常に広がります。しかし、当社内でもSPDデータを作れるスタッフは数人しかいません。何気にハードルが高いのです。
SPDデータの保存先
次に、上記で作成したSPDデータをメモリモジュールに保存します。「あれ、メモリモジュールってHDDと違って、電源を切るとデータが消えるんじゃないの?」と普通は思いますよね。ところが、メモリモジュールにはEEPROM(Electrically Erasable Programmable Read Only Memoryの略称)という小さな部品が搭載されており、電源供給がなくてもデータを保持してくれます。
ちなみにこのEEPROM、小さいながらもとても優秀で、データを誤って書き換えたり、消去できないように、ライトプロテクト機能が搭載されています。ライトプロテクトを発動させるか否かは、各メモリモジュールメーカーの判断に委ねられています。
みなさまにはあまり関係はありませんが、その昔ある大手メーカー様にてプロテクトをかけていないメモリモジュールに、いきなりプロテクトがかかってしまうという事象が発生し、原因特定と解除に非常に悩まされたことがありました。(弊社のメモリモジュールじゃないですよ。一応、念のため。)
SPD書き換えツール
SPDに関して駆け足で説明しましたが、みなさまが自由にアクセスできる領域ではありませんから、いまいち親近感がわかないかもしれません。
では、当社はどうやってSPDの読み・書きをしているかと言うと、通常SPDは工場にて書き込みが行なわれます。当社内でも読み・書きできますが、そのツールはメモリモジュールテスターも兼ねており、誰でもさわれるものではありません。1台数百万円するくらい非常に高価なものですしね。
そのため、企画物の製品やDRAM耐性を図るために実施するオーバークロック検証のさいには、研究開発用に自社で作ったSPD書き換えツールを使用しています。
無ければ、作っちゃえ! というとてもシンプルな発想で作った社内用SPD読み・書きツールです。これも初公開です。
この社内用SPD読み・書きツールは、メモリモジュールからSPDデータを読み出したり、PCで作成したSPDデータをSDカードにコピーし、メモリモジュールに書き込むということができます。
この方式ならばPCを起動しなくてもメモリモジュールにSPDデータを書き込むことができるので、もの作りの観点から非常に使い勝手が良いのです。このツールがほしいという声が非常に多いのですが、販売するにはちょっとアレなビジュアルですし、そもそもSPDデータを作るのがたいへんという理由から、製品化していません。
XMPについて
最後にXMPについて説明します。オーバークロックのための規格ですから、弊社とはあまり縁がありません。「どのような環境でも、長期間安定して動く製品を真面目に作ること。」ということが弊社のポリシーですから、ユーザー様の環境によって動いたり、動かなかったりするオーバークロック製品の取り扱いには非常に慎重になります。ここでは、SPDという観点から見たXMPを説明したいと思います。
前述のとおり、「SPDデータが書ける容量は最大で512byteで、その内384byteを使う。」と説明しましたが、この残りの128byteがXMPデータを書き込める領域なのです。
XMPの利点は、たとえばメモリをオーバークロックする場合、XMP領域に上記で説明したデータが書き込めるため、マザーボードのBIOSから設定するよりも、より細かくかつ幅広い値を書き込むことが可能になります。
ここで、ちょっと小ネタを1つ。
上の表は、クロック周波数とCAS Latencyの反応速度を比較した一覧表です。オーバークロックと言うとクロック周波数がクローズアップされることが多いですが、CAS Latencyの値も性能に大きな影響があります。ぜひご活用ください。
こういった話をすると、自分でSPDデータを作ったり、書き込んだり、手持ちのメモリモジュールからSPDを吸い出して比較したり、いろいろやってみたくなりますよね。私もそうです。
ということで、なければ作っちゃえ! 発想で作ってみました。
ダンボール&紙&コネクタ(本物)で作った量産型SPD書き換えツール(仮)です。DDR4メモリモジュール専用で、ダブルウッシュボーンも真っ青のしなやかな足を6基搭載。どんな悪路もこれで安心です……という妄想で10分くらいは楽しめます。あと、メモリモジュールを鑑賞したい場合に使えそうです。
最後に
以上が4回目のコラムとなります。ゆるふわと言いつつ、なんだか専門的な内容が多かったですね。いかがだったでしょうか?
次回のネタも皆さまからのリクエストからチョイスしたいと思います。SPDのライトプロテクトを解除する方法が知りたい、ダンボール製SPD書き換えツールがほしいなど、弊社Twitter宛にリクエストをくださいませ。楽しみにお待ちしております。
それではまた。