DIMM(Dual Inline Memory Module、ディム)は、複数のDRAMチップをプリント基板上に搭載したメモリモジュールのことを指し、コンピュータの主記憶として利用される。また、そのピン配置や電気的特性を規定したDIMM規格のこと。従来のSIMM(Single Inline Memory Module)では表裏の対向する2つの端子に同一の信号が出ているのに対して、DIMMでは異なる信号が出ていることからDIMMと呼ばれる。2007年現在、DIMMと言った場合、多くのパーソナルコンピュータやワークステーションで使用可能なSDRAMを搭載したものを指す。

## 規格

DIMM規格はJEDEC(Joint Electron Device Engineering Council)で標準化が行われており、搭載されるSDRAMチップの種類毎に多種の規格が存在する。また、「DIMM」という名称は、メモリ基板を挿すスロット(ソケット)のことを指している場合もあるが厳密には誤用であり、これらは「DIMMスロット」や「DIMMソケット」と呼ぶのが正確である。

基本的にDIMMインタフェースはアドレス、データ、制御信号からなっており、一般的にPC用は64bitデータのDIMMが使用されるが、高信頼性が求められるサーバではECC 8bitを付加した72bitデータのDIMMが使用される。

## 種類と互換性

DIMMの形態は大きく分けてUnbuffered DIMM (UDIMM)、Buffered (Registered) DIMM、Fully Buffered DIMM (FB-DIMM) の3種類が存在し、これらはインタフェースが異なり、規格上の互換性は無い。また、各DIMM内でもDDR2やDDR3といった違いやECC付き/無し、SDRAMの動作速度(アクセス・タイミング)の上限値や動作電圧範囲、などによって細かな規格に分かれており、同一種別間では概ね上位互換性が保たれている。実効転送速度と接続可能なモジュール数はトレードオフの関係にある。

### Unbuffered DIMM

チップセットからのアドレス、制御、データ信号が直接DIMM基板上のSDRAMチップに分配接続される形態のDIMM。

アドレスと制御信号が接続されている全モジュール上の全てのSDRAMチップに分配されるため、駆動側の電流負荷が大きい。例えば 4bit SDRAMチップが搭載されたDIMMの場合、アドレス線は16個のDRAM ICに分配されることになり、50-60個ほどが駆動できる限界なので、1つのチャンネル当り接続可能なモジュール数は3-4枚ほどが上限となる。このようにUnbuffered DIMMは、1つのチャンネルに多数接続することができずに、通常は3-4枚までに制約されている。しかし、他の2規格に比べると伝送路の途中に介在物が無いことから実効転送速度で優れコスト面でも有利となる。ワークステーションのうちメモリ容量が最優先ではないものに採用されるほか、パーソナルコンピュータのほとんどに使用されている。

### Buffered DIMM

アドレス信号と制御信号を、DIMM基板上のレジスタード・バッファ (Registered buffer) と呼ばれるICで一旦受けて整形増幅してから、各SDRAMチップに分配するDIMM規格である。データ信号はバッファされない。Registered DIMMとも呼ばれる。

バッファの存在により、アドレス信号線と制御信号線の電気的負荷は1モジュール当り1ICだけの負荷となり、1つのチャンネル当り多くのモジュールが接続可能となる。数GBから数十GBといった主記憶容量を必要とするサーバに向いている。なお、一旦バッファで受けることから、Unbuffered DIMMとアクセスタイミングが異なる。例えばリード(READ)の際は、実際にSDRAMチップへ通知されるアドレス、制御信号がバッファにより1クロック遅れることから、見かけ上DIMMからのデータの出力がUnbuffered DIMMと比べて1クロック遅くなる。

DDR2, DDR3 とSDRAMチップが高速化してきたため、バッファされていないデータ信号線の過重な負荷やノイズ耐性の不足が顕在化しており、高速動作させるためにはあまり多くのDIMMは接続できなくなっている。

### Fully Buffered DIMM

FB-DIMM(Fully Buffered DIMM)はアドレス、データ、制御信号の全てを一旦DIMM基板上のAMB(high-speed Advanced Memory Buffer)と呼ばれるバッファ内蔵の専用コントローラ・チップで受ける形態のDIMMである。CPU/チップセット側とは、PCI Express(PCIe)に似た少ピンの高速シリアル・インタフェースで接続される。従来のDIMMはスタブのあるバス接続によって複数のモジュールが共有接続されていたが、FB-DIMMでは隣り同士がPoint-to-Point接続によって拡張されるデイジーチェーンによる接続方式となっている。

従来のDIMMに比べチップセット(またはCPU)側の信号が減らされており、アドレス、制御、3.2 - 4.0GHzで駆動される上り用14レーン/下り用10レーンの24組の高速データ信号線(合計48本)を含む全69端子で構成される。各信号線の伝送動作などはPCIeに近いが、通常はPCIeよりも短い伝送距離でもあり、各信号は8b/10b方式のようなクロックは重畳されていない。サーバ機などでの実使用環境では、ライトに比べてリードの比率が圧倒的に高いため、ライト方向とリード方向で信号本数が異なる非対称になっている。

各モジュールごとに1つずつ備わるAMBは、上流側モジュールまたはチップセット(CPU)側とのインタフェース、下流側モジュール側インタフェース、自らの汎用SDRAMとのインタフェースという3方向へのインタフェースを有しており、各モジュールのAMBはチップセット(CPU)に近い上流側から信号を受けると、自らがターゲットではない場合は隣接する下流側のモジュールへ信号を転送する。下流側から上流側に向かう場合も同様にAMB間で順次転送される。このようにローカルなメモリコントローラともいえるAMBが互いに連接されることで、デイジーチェーンを構築し、各チャネルあたり最大8枚のDIMMを接続することが可能となっている。各AMB間は同期転送による遅延が生じるため、CPU側から見て遠いモジュール(下流側)へのアクセスは近いモジュール(上流側)よりも遅くなる。各AMB内で、並列/直列変換や動作コマンドの翻訳、CRCコードの生成/確認などを高速に行うため発熱量も多くなる。

米Intel社の主導でPCサーバやワークステーション向けに製品化されたFB-DIMMであるが、AMBチップという高機能ICの使用などから高コストであり、放熱への配慮が求められることや、チャンネル当りのモジュール数増加によってレイテンシも増大することもあって、特に大記憶容量と広帯域メモリアクセスが強く求められるエンタープライズ・サーバのような用途を除いては、ミドル/ローエンドクラスのサーバへの採用は広がらなかった。また、ラムバス社の特許権については、Buffered DIMMだけでなくFB-DIMMの構造に関するロイヤリティの支払いが生じることも不利に働いている。

このため、Intel社は次世代メモリインターフェースとしてCPUからはFB-DIMMインターフェースでDRAMにアクセスするが、AMBはマザーボード上に実装し、DIMM自体は従来の物に戻すことを計画している。依然としてコンシューマー向けメモリはUnbuffered DIMMが主流であり、コンシューマーからエンタープライズサーバまで幅広いSKUをカバーする次世代プロセッサNehalemのマスクバリエーションをいたずらに増やしたくないintelの意図が伺われる。