DIMMのスペック(CL/RCD/RP)
DIMMのスペックを見ると以下のような記述を見ることがある。
DDR3-1333 容量4GB CL-tRCD-tRP=9-9-9 RANK=2
ここでは、これらのCL, tRCD, tRPなどのパラメータが具体的に何を意味するかを掘り下げてみる。
ここでは1Gbitでデータ幅が16BitのDDR3メモリチップを例に取る。考え方は、DDR1/2/3全てで共通だ。
DDR系のメモリでは、このアドレスをBANK,ROW.COLの3要素に分割する。これら3要素のビット数はJEDECにより規格化されており、DDR3で容量1Gbit、データ幅16Bitの場合は、以下のようになっている
BANK: 3bit
ROW: 13bit
COL: 10bit
概念的には以下に示す絵のようになる。
メモリにライト、あるいはメモリからリードするには上記3つのアドレスを指定しなければならないわけだが、DRAMの場合、このアドレスを指定する手続きが独特の方式になっている。リードでは以下のようになる。
DRAMにBANKとROWアドレスを入力する(ACTコマンドの入力)
DRAMにCOLアドレスを入力する(READコマンドの入力)
DRAMからデータが出力される
BANKとROWアドレスが同じで、COLアドレスが異なるだけの場合、2と3のみを繰り返し異なるアドレスのリードが行う
当該BANKのアクセス終了処理をする(PREコマンドの入力)
1に戻って、別のBANK/ROWアドレスのデータにアクセスする
上記からわかるように、BANKとROWアドレスが同じでCOLアドレスだけを変化させる場合、ACT-READ-READ-...-PREというようにデータを読み出すことができる。
一方、異なるBANKやROWアドレスからデータを読み出す場合ACT-READ-PRE-ACT-READ-PREのように、より多くのコマンドを入れる必要がある。
ACT-READ-READ-PRE-ACTのタイミングチャートを以下に示す。
それぞれのコマンドの間に何サイクルか空きサイクルがあるが、これらは、DRAMのスペックとして最小サイクルが規定されている。代表的なものとしては、図にも示すとおり、以下のようなものが挙げられる。
ACTコマンドからREADコマンドの最小サイクル数間隔(tRCD)
READコマンドからデータが出力されるまでのサイクル数(CL)
PREコマンドから次のACTコマンドまでの最小サイクル数間隔(tRP)
ACTコマンドからPREコマンドの最小サイクル数間隔(tRAS)
READコマンドからデータが出力されるまでのサイクル数は、DRAMの初期化時にユーザが設定できるようになっており、CLは設定可能な最小値となる。
それぞれの値が小さいほど、DRAMの反応が早くなるわけで、高速なメモリということができる。理想的には全て1となるわけだ。上のタイミングチャートが、最短のタイミングで動作させているものだとすると、そのDRAMのスペックはCL-tRCD-tRP-tRAS=2-3-3-15ということになる。
このスペックは、DRAMの内部では時間で規定されるものを、動作クロックでサイクライズしたものとなっている。メモリチップのデータシートでは、時間のほうの値も記載されており、クロックスピードを落として使う場合は、サイクルで計算すると遅くなってしまうため、時間のほうで計算することもある。