コンピューティング において、シリアルプレゼンス検出(SPD )は、メモリモジュールに関する情報に自動的にアクセスするための標準化された方法です。以前の72ピンSIMMには、5ビットのパラレルプレゼンス検出(PPD)データを提供する5つのピンが含まれていましたが、168ピンDIMM規格では、より多くの情報をエンコードするためにシリアルプレゼンス検出に変更されました。[ 1 ]
一般的な現代のコンピュータの電源を入れると、まず電源投入時自己診断テスト(POST)が実行されます。1990年代半ば頃から、このプロセスには、現在搭載されているハードウェアの自動構成が含まれるようになりました。SPDはメモリハードウェアの機能の一つで、コンピュータがどのようなメモリが搭載されているか、そしてメモリにアクセスするためにどのようなメモリタイミングを使用すべきかを認識できるようにするものです。
コンピュータによっては、ハードウェアの変更に完全に自動的に対応できるものもあります。ほとんどの場合、BIOSパラメータにアクセスして設定を表示したり変更したりするための特別なオプション手順が用意されています。コンピュータがメモリSPDデータをどのように使用するかを制御することが可能です。設定を選択したり、メモリタイミングを選択的に変更したり、場合によってはSPDデータを完全に上書きしたりすることもできます(オーバークロックを参照)。
メモリモジュールがSPDをサポートするためには、JEDEC規格では、メモリモジュールに搭載されたEEPROMの下位128バイト(世代によってはそれ以上)に特定のパラメータが格納されていることが求められています。これらのバイトには、タイミングパラメータ、製造元、シリアル番号、その他モジュールに関する有用な情報が含まれています。メモリを利用するデバイスは、この情報を読み取ることでモジュールの主要パラメータを自動的に判別します。例えば、SDRAMモジュールのSPDデータにはCASレイテンシに関する情報が含まれているため、システムはユーザーの介入なしにこれを正しく設定できます。
SPD EEPROMファームウェアへのアクセスには、 I 2 Cプロトコルの派生版であるSMBusを使用します。これにより、モジュール上の通信ピンの数はクロック信号とデータ信号の2つに削減されます。EEPROMはRAMとグランドピンを共有し、独自の電源ピンを持ち、スロットを識別するための3つの追加ピン(SA0~2)を備えています。これらのピンは、EEPROMに0x50~0x57の範囲で固有のアドレスを割り当てるために使用されます。通信ラインは8つのメモリモジュール間で共有できるだけでなく、同じSMBusは、電源電圧、CPU温度、ファン速度の読み取りなど、システムの状態監視タスクのためにマザーボードで一般的に使用されています。
SPDが登場する以前は、メモリチップはPPD(並列存在検出)によって検出されていました。PPDは情報の各ビットに個別のピンを使用していたため、ピンのスペースが限られていたことから、メモリモジュールの速度と密度しか記録できませんでした。

最初の SPD 仕様は JEDEC によって発行され、1998 年に導入されたIntel のPC100メモリ仕様の一部として、Intel によって厳格化されました。 [ 2 ] [ 3 ] [ 4 ]指定されている値のほとんどは、2 進化 10 進数形式です。最上位4 ビットには 10 から 15 までの値を含めることができ、場合によってはそれ以上に拡張されます。そのような場合、1、2、3 のエンコードは、代わりに 16、17、18 をエンコードするために使用されます。最上位 4 ビットの 0 は、「未定義」を表すために予約されています。
SPD ROMは、バイト18のセットビットによって指定される3つのCASレイテンシに対応する、最大3つのDRAMタイミングを定義します。最初に最も高いCASレイテンシ(最も速いクロック)があり、次にクロック速度が徐々に低くなる2つの低いCASレイテンシがあります。
DDR DIMM SPDフォーマットは、SDR SDRAMフォーマットの拡張版です。主に、より高速な動作に対応するために、パラメータ範囲が再スケーリングされています。
DDR2 SPD規格はいくつかの変更点がありますが、概ね上記と似ています。注目すべき削除点の1つは、容量の異なる2つのランクを持つDIMMに対する、紛らわしくほとんど使用されていないサポートです。
BCDでエンコードされるサイクルタイムフィールド(バイト9、23、25、49)については、一般的なタイミングを正確に表現するために、10分の1の位にいくつかの追加のエンコードが定義されています。
DDR3 SDRAM規格では、SPDの内容レイアウトが大幅に刷新され、簡素化されています。多数のBCDエンコードされたナノ秒フィールドの代わりに、いくつかの「タイムベース」単位が高精度で指定され、さまざまなタイミングパラメータがそのベース単位の倍数としてエンコードされます。[ 8 ]さらに、CASレイテンシに応じて異なる時間値を指定する慣行は廃止され、現在は単一のタイミングパラメータセットのみとなっています。
リビジョン1.1では、一部のパラメータを「中時間ベース」値と(符号付き、-128 + 127)「微分時間ベース」補正値として表現できるようになりました。一般的に、中時間ベースは1/8 ns(125 ps)、微分時間ベースは1、2.5、または5 psです。補正値のない以前のバージョンとの互換性を保つため、中時間ベースの値は通常切り上げられ、補正値は負の値になります。この方法で機能する値は次のとおりです。
モジュールのメモリ容量は、バイト4、7、8から計算できます。モジュール幅(バイト8)をチップあたりのビット数(バイト7)で割ると、ランクあたりのチップ数が得られます。次に、この値にチップあたりの容量(バイト4)とモジュール上のチップのランク数(通常はバイト7から得られる1または2)を掛けます。
DDR4 SDRAMの「Annex L」規格では、SPDで使用されるEEPROMモジュールが変更されています。従来のAT24C02互換の256バイトEEPROMの代わりに、JEDECはSMBusレベルでそれぞれ256バイトの2ページを持つ新しい非標準EE1004タイプを定義しています。新しいメモリは引き続き従来の0x50~0x57アドレスを使用しますが、0x36(SPA0)と0x37(SPA1)の2つの追加アドレスが、バスの現在アクティブなページを選択するコマンドを受信するために使用され、バンク切り替えの一種となっています。[ 11 ]内部的には、各論理ページはさらに128バイトの2つの物理ブロックに分割され、合計4つのブロック、512バイトになります。[ 12 ]「特殊」アドレス範囲のその他のセマンティクスは同じままですが、書き込み保護はブロック単位で管理されるようになり、SA0に高電圧を印加することで状態を変更できるようになりました。[ 13 ]
付属書Lでは、メモリモジュールの種類に応じて、512バイト(最大320バイトが定義されている)のテンプレートに挿入できるいくつかの異なるレイアウトが定義されています。ビット定義はDDR3に似ています。[ 12 ]
JESD400-5仕様に基づくDDR5の暫定表。[ 15 ]
DDR5では、SPDテーブルが1024バイトに拡張されています。DDR5のSPDはI3Cバスを使用しています。
JEDEC規格で規定されているEEPROMには、主に3つの世代があります。DDR3以前の256バイトEE1002、DDR4の512バイトEE1004、そしてDDR5の1024バイト「ハブ」SPD5118です。EE1002は標準的な24シリーズEEPROMです。EE1004はより新しい34シリーズEEPROMで、主に「ページスイッチ」コマンドを備えており、その全内容にアクセスできる点が異なります(他にも違いがあります)。SPD5118は大きく異なります。
EE1002とEE1004には温度センサー搭載バージョンもありますが、SPD部分に関しては同じプロトコルを使用しています。
前述の通り、SPDは0から7までの最大8個のモジュールをアドレス指定するために3つのピンを使用します。これはEE1002とEE1004にのみ当てはまります。SPD5118は、接地抵抗を備えた単一のピンを使用して、モジュールの識別子を0から7まで指定します。[ 16 ]:§2.7
EE1002 および EE1004 の場合、I 2 C アドレス範囲は 0x50~0x57 です。書き込み保護されていない場合は、0x30~0x37 にも応答します (下記参照)。関連する温度センサーがある場合は、0x18~0x1F を使用します。これらの値はすべて、デバイス タイプ識別子コード (DTIC) と SA0~2 によって形成される7 ビットの I 2 C アドレスです。スロット 3 から (1100) を読み取るには、 を使用します。最後の R/W ビットで 8 ビットのデバイス選択コードを形成します。[ 17 ]110 0011 = 0x33
5118には多数のデバイスが含まれている。ハブ自体は以前と同様に0x50~0x57に位置する。ローカルデバイスはI3Cを使用してハブを介してアドレス指定される。[ 16 ]:§2.7
EE1002には3層の書き込み保護機能があります。ハードウェア層はWC#ピンの形で、ローに駆動するとすべての書き込みが禁止されます。ソフトウェア層はいくつかのコマンドの形で、ソフトウェア書き込み保護を変更するには、アドレスピンSA0に(通常の0または1の論理電圧ではなく)V HVを駆動し、他のSAピンには特定の組み合わせを指定する必要があります。その結果、スロットIDの区別はありません。[ 18 ]最後の層は「永久」層で、最初の128バイトを永久に変更できないようにするコマンドを送信できます。[ 19 ]
EE1004にはWC#ピンや「永続的」レイヤーはありません。デバイスの64バイトスライスごとに書き込み保護状態を個別に設定するコマンドが4つ(異なるものを使用)、およびそれらを一度にすべてクリアするコマンドが1つあります。これらのコマンドはすべて、以前と同様にV HVを駆動する必要があります。[ 20 ]
SPD5118には2つの保護モードがあります。アドレスピンが抵抗を介してGNDに接続されている通常動作モードでは、64バイトのスライスにのみ保護を追加でき、削除することはできません。しかし、アドレスピンがGNDに直接接続されている「テスター」モードでは、これらのビットを自由に削除できます。[ 16 ] : §2.7 (ハブ自体にも、EEPROM部分とは独立した揮発性レジスタと不揮発性レジスタが多数あります。一部のレジスタは「パスワード保護」されており、「パスワードレジスタ」に正しい値が書き込まれない限り、読み書きできません。)
DDR4またはDDR5 DIMMを搭載した多くの最新コンピュータでは、起動時のメモリ初期化が完了すると、 UEFI/BIOSがSPD EEPROMを読み取り専用としてマークします。そのため、Thaiphoon BurnerなどのソフトウェアでSPD EEPROMを変更することが困難になります。
JEDEC規格では、SPDバイトの一部のみが規定されています。本当に重要なデータ(DDR3まで)は最初の64バイトに収まり、[ 6 ] [ 7 ] [ 21 ] [ 22 ] [ 23 ]残りの一部はメーカー識別用に確保されています。ただし、256バイトのEEPROMは標準化されています(DDR3まで)。残りのスペースはさまざまな用途に使用されています。
メモリは通常、すべてのシステムで基本的な機能が保証されるように、SPD ROM に保守的なタイミング推奨値が含まれています。エンスージアストは、より高速にするためにメモリのタイミングを手動で調整するのにかなりの時間を費やすことがよくあります。Intel XMP や AMD EXPO などの特別な構成を有効にすると、システムの安定性を確保するために追加のテストが必要になることが多く[ 24 ]、メーカーが公開している仕様外で使用すると CPU の保証が無効になる場合があります。[ 25 ] [ 26 ] [ 27 ]
Enhanced Performance Profilesは、 NvidiaとCorsairが開発したSPDの拡張機能で、JEDEC SPD仕様には含まれていない供給電圧やコマンドタイミング情報など、 DDR2 SDRAMの高性能動作のための追加情報が含まれています。EPP情報は、同じEEPROMに格納されますが、標準のDDR2 SPDでは使用されない99~127バイト目に格納されます。[ 28 ]
これらのパラメータは、 nForce 5、nForce 6、nForce 7チップセットのメモリコントローラに特化して設計されています。Nvidiaは、ハイエンドマザーボードチップセットのBIOSでEPPをサポートすることを推奨しています。これは、最小限の手間でパフォーマンスを向上させるための「ワンクリックオーバークロック」を実現することを目的としています。
性能と安定性が認定された Nvidia の EPP メモリの名称は「SLI 対応メモリ」です。[ 29 ]「SLI 対応メモリ」という用語は、SLI ビデオとは何の関係もないため、混乱を招いています。EPP/SLI メモリは、単一のビデオ カード (Nvidia 以外のカードでも) で使用できますし、EPP/SLI メモリなしでマルチ カード SLI ビデオ セットアップを実行することもできます。
拡張版のEPP 2.0はDDR3メモリもサポートしている。[ 30 ]
同様の、Intelが開発したJEDEC SPD拡張機能はDDR3 SDRAM DIMM用に開発され、後にDDR4およびDDR5 SDRAMでも使用されました。XMPは、JEDECによって割り当てられていないバイト176~255を使用して、より高性能なメモリタイミングをエンコードします。[ 31 ]
その後、AMDはXMPと同等の技術であるAMPを開発し、AMDプラットフォームでの使用に最適化されたメモリモジュール「Radeon Memory」シリーズで使用しました。[ 32 ] [ 33 ]さらに、マザーボード開発者は、AMDベースのマザーボードでXMPプロファイルを読み取れるように独自の技術を実装しました。MSIはA-XMPを提供し、[ 34 ] ASUSはDOCP(Direct Over Clock Profile)、GigabyteはEOCP(Extended Over Clock Profile)を提供しています。[ 35 ]
ヘッダーには以下のデータが含まれています。最も重要なのは、「中期タイムベース」値MTBで、ナノ秒の有理数(一般的な値は1/8、1/12、1/16ナノ秒)で表されます。その他の多くのタイミング値は、MTB単位の整数値で表されます。
ヘッダーには、プロファイルがサポートするように設計されているメモリチャネルあたりのDIMMの数も含まれています。DIMMの数を増やしても、正常に動作しない場合があります。
AMDのExtended Profiles for Overclocking(EXPO)は、 DDR5 DIMM向けに開発されたJEDEC SPD拡張機能で、ワンクリックでシステムメモリに自動オーバークロックプロファイルを適用できます。[ 37 ] [ 38 ] AMD EXPO認定DIMMには、 Zen 4プロセッサで動作することが認定された最適化されたタイミングが含まれています。[ 39 ] Intelのクローズド標準XMPとは異なり、EXPO標準はオープンでロイヤリティフリーです。[ 38 ] Intelプラットフォームで使用できます。[ 38 ] 2022年9月の発売時点で、EXPO認定を受けたパートナーRAMキットが15種類あり、最大6400 MT/sに達します。[ 40 ]
Computex 2026で、AMDはEXPO Ultra Low Latency(EXPO ULL)を発表しました。これはEXPOの拡張版で、t REFI(リフレッシュ間隔)、t RRD_S(RASからRASへの遅延、ショート)、t WR (書き込み回復時間)などの追加のサブタイミングを指定でき、V DDP電圧も指定できます。 [ 41 ] [ 42 ] EXPO ULLは既存のEXPO互換マザーボードと互換性がありますが、BIOSのアップデートが必要になる可能性が高いです。[ 42 ] DDR5-6000については、AMDはRyzen 7 9700X CPUでテストした30のゲーム全体で、非ULL EXPO DIMMと比較して平均fpsが4% 、低fpsが1%向上したと主張しています。 [ 42 ] AMDは、EXPO ULL RAMキットは非ULL EXPOキットと「実質的に同じ価格帯」になると主張しています。[ 42 ]対照的に、G.Skillはより厳格な選別が必要であるとして、価格の上昇を予想した。[ 43 ]
よくある悪用例として、特定のメモリ領域に情報を書き込むことで、ベンダー固有のメモリモジュールを特定のシステムに紐付けるというものがあります。富士通テクノロジーソリューションズはこの手法を用いることで知られています。システムに別のメモリモジュールを追加しようとすると、通常は拒否されるか、あるいは(起動時に毎回F1キーを押すなど)何らかの対策が必要になります。
02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........MGF 53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
これは、富士通シーメンスコンピュータ向けにブランド化された、マイクロンテクノロジーズ製の512MBメモリモジュールの出力です 。「FSC」(46 53 43)という文字列に注目してください。システムBIOSは、オフセット128hから始まるこの情報がないメモリモジュールを拒否します。
Packard Bell AMD ノートパソコンの一部もこの方法を使用しており、この場合、症状は異なる場合がありますが、ビープ音ではなくカーソルが点滅することがあります。ちなみに、これは BIOS の破損の症状である可能性もあります。[ 44 ]ただし、2 GB から 4 GB にアップグレードすると問題が発生することもあります。
メモリモジュールの製造元は、モジュール上のEEPROMにSPD情報を書き込みます。マザーボードのBIOSは、このSPD情報を読み取り、メモリコントローラを設定します。
マザーボードのSMBusコントローラは、それに接続されたメモリモジュール上のSPDにアクセスするための「直接的な」方法です。一部のマザーボードチップセットでは、SPDを書き込み保護するかどうかを選択できます。この方法でアクセスするには、オペレーティングシステムがSMBusをサポートし、EEPROM用の適切なドライバを備え、マザーボードのSMBusがSPD EEPROMに接続されている必要があります。
decode-dimmsi2c-toolseeprogi2c-toolsのツールを使用すると、24シリーズのEEPROM、つまりDDR3までの書き込みが可能です。spd-eepromAT24 および EE1004 シリーズの EEPROM の読み書きを行います。生の SMBus の読み書きのみを提供し、デコードは提供しません。ドライバの要件は と同じですi2c-tools。[ 47 ]JEDECは、メモリストリップ上のSMBusアドレス指定可能な温度センサーの規格を定めています。TS3000はDDR3までの独立型センサーです。TSE2002はDDR3までのSPDと温度センサーを統合したものです。TSE2004はDDR4用のSPDと温度センサーを統合したものです。SPD5118はDDR5上で温度とSPDを統合する「ハブ」です。
一部のメモリモジュール(特にゲーミングPC)[ 49 ]は、独自のSMBusコマンドで制御されるRGB LEDをサポートしています。これにより、追加のコネクタやケーブルなしでLEDの色を制御できます。複数のメーカーのWindowsカーネルドライバは、ライトを制御するために必要であり、2020年だけでも、カーネルメモリ全体へのアクセスからMSRやI/Oポートの制御に至るまで、さまざまなアクセス権を取得するために何度も悪用されています。[ 50 ] [ 51 ] [ 52 ]
SMBIOSは、BIOS からコンピュータにメモリに関するデータを中継します。この情報は、Linux、FreeBSD、NetBSD、OpenBSD、BeOS、Cygwin、Solarisで動作するdmidecodeプログラムによってアクセスされます。繰り返しますが、SPD 情報ではなく SMBIOS 情報にアクセスするため、データが制限されていたり、不正確であったりする可能性があります。[ 53 ]
EEPROMチップを取り外して別の場所に移植することで、SMBusへのより直接的なアクセスが可能になります。これにより、チップセットからの干渉を排除できます。
古いノートパソコンのあまり一般的ではない用途の一つに、汎用SMBusリーダーとしての利用があります。これは、BIOSがモジュールのEEPROMを読み取った後にEEPROMを無効化できるため、バスが実質的に使用可能になるからです。その方法は、A0、A1ラインをローレベルにプルダウンして内部メモリをシャットダウンし、外部デバイスがSMBusにアクセスできるようにすることです。これが完了すると、カスタムLinuxビルドまたはDOSアプリケーションが外部デバイスにアクセスできるようになります。一般的な用途としては、LCDパネルのメモリチップからデータを復旧し、汎用パネルを独自のノートパソコンに後付けすることが挙げられます。
関連する技術として、多くのノートパソコンに搭載されているウェブカメラのチップを書き換える方法があります。これは、ウェブカメラのバス速度が大幅に速いためです。さらに、マザーボードのUEFI ROMの保存によく使われる25シリーズのチップを書き換えることで、チップの故障に対する保護機能を実現することも可能です。
一部のチップでは、書き込み保護ラインを分離しておくと、再プログラミング中にオンボードチップのデータが消去されるのを防ぐことができるので良いでしょう。
残念ながら、これはDDR3以下の規格でのみ有効です。DDR4は、512バイトのSPD(以前の世代の256バイトとは異なります)に対応するために、異なるチップモデル(34シリーズ)を使用しているためです。このチップインターフェース(EE1004/TSE2004)は、ストレージを2つのページに分割しており、チップ全体を読み書きするにはページ切り替えが必要です。
一部のチップセットは、34シリーズEEPROMチップの読み取りを正しく処理できないため、読み取りに失敗する場合があります。その場合、ソフトウェアは「互換性のないSMBusドライバですか?」というメッセージを返すことがあります。
DDR5はさらに複雑な設計を採用しており、容量がさらに倍増したSPD5118「ハブ」を使用している。
一部の旧型機器では、パラレルプレゼンス検出(一般的にはプレゼンス検出、またはPDと呼ばれる)機能を備えたSIMMの使用が必要です。これらの機器の中には、非標準のPDコーディングを使用しているものがあり、特にIBMコンピュータやヒューレット・パッカードのLaserJetプリンターなどが挙げられます。
クロック周波数や電圧を変更すると、プロセッサやその他のシステムコンポーネントが損傷したり、寿命が短くなったり、システムの安定性やパフォーマンスが低下する可能性があります。プロセッサを仕様を超えて使用した場合、製品保証が適用されない場合があります。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク)