DDR3 SDRAMにおけるコマンドとオペレーション
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/26 10:16 UTC 版)
ナビゲーションに移動 検索に移動![]() | この記事名から外れる話題については、DDR3 SDRAMのページに記載してください。 |
DDR3 SDRAMにおけるコマンドとオペレーションでは、DDR3 SDRAMの内部レジスタ及びコマンドに対するオペレーションについて記述する。
コマンドとオペレーション
ここではデバイスの制御方法とコマンドについて解説する。 まずコマンドの一覧を示す。コマンドは全てCKの上がりエッジとCK#の下がりエッジの交点を基準としたタイミングで与えられるハイ (H) またはロー (L) を意味する。ただしRESET#以外のピンのハイまたはローはVrefCAを基準とする。
機能 | 略称 | CKE | CS# | RAS# | CAS# | WE# | BA2 - BA0 |
A15 - A13 |
A12 / BC# |
A10 / AP |
A11 A9 - A0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
前 サ イ ク ル |
現 サ イ ク ル | |||||||||||
モードレジスタセット (Mode Register Set) |
MRS | H | H | L | L | L | L | 0 | MR0コード | |||
1 | MR1コード | |||||||||||
2 | MR2コード | |||||||||||
3 | MR3コード | |||||||||||
リフレッシュ (Refresh) |
REF | H | H | L | L | L | H | V | V | V | V | V |
セルフリフレッシュエントリ (Self Refresh Entry) |
SRE | H | L | L | L | L | H | V | V | V | V | V |
セルフリフレッシュイグジット (Self Refresh Exit) |
SRX | L | H | H | V | V | V | V | V | V | V | V |
L | H | H | H | |||||||||
プリチャージ (Precharge) |
PRE | H | H | L | L | H | L | BA | V | V | L | V |
全バンクプリチャージ (Precharge All bank) |
PREA | H | H | L | L | H | L | V | V | V | H | V |
バンクアクティブ (Bank Activate) |
ACT | H | H | L | L | H | H | BA | RA | |||
ライト (BL8/BL4:固定) | WR | H | H | L | H | L | L | BA | RFU | V | L | CA |
ライト (BL4:動的に指定) | WRS4 | H | H | L | H | L | L | BA | RFU | L | L | CA |
ライト (BL8:動的に指定) | WRS8 | H | H | L | H | L | L | BA | RFU | H | L | CA |
ライトオートプリチャージ (Write Auto Precharge) (BL8/BL4:固定) |
WRA | H | H | L | H | L | L | BA | RFU | V | H | CA |
ライトオートプリチャージ (BL4:動的に指定) |
WRAS4 | H | H | L | H | L | L | BA | RFU | L | H | CA |
ライトオートプリチャージ (BL8:動的に指定) |
WRAS8 | H | H | L | H | L | L | BA | RFU | H | H | CA |
リード (BL8/BL4:固定) | RD | H | H | L | H | L | H | BA | RFU | V | L | CA |
リード (BL4:動的に指定) | RDS4 | H | H | L | H | L | H | BA | RFU | L | L | CA |
リード (BL8:動的に指定) | RDS8 | H | H | L | H | L | H | BA | RFU | H | L | CA |
リードオートプリチャージ (Read Auto Precharge) (BL8/BL4:固定) |
RDA | H | H | L | H | L | H | BA | RFU | V | H | CA |
リードオートプリチャージ (BL4:動的に指定) |
RDAS4 | H | H | L | H | L | H | BA | RFU | L | H | CA |
リードオートプリチャージ (BL8:動的に指定) |
RDAS8 | H | H | L | H | L | H | BA | RFU | H | H | CA |
ノーオペレーション (No Operation) |
NOP | H | H | L | H | H | H | V | V | V | V | V |
デバイスディセレクト (Device Deselect) |
DES | H | H | H | X | X | X | X | X | X | X | X |
ZQキャリブレーションロング (ZQ calibration Long) |
ZQCL | H | H | L | H | H | L | V | V | V | H | V |
ZQキャリブレーションショート (ZQ calibration Short) |
ZQCS | H | H | L | H | H | L | V | V | V | L | V |
パワーダウンエントリ (Power Down Entry) |
PDE | H | L | L | H | H | H | V | V | V | V | V |
H | V | V | V | |||||||||
パワーダウンイグジット (Power Down Exit) |
PDX | L | H | L | H | H | H | V | V | V | V | V |
H | V | V | V |
表中のVまたはXはハイまたはローを意味する。Xはフローティングでもかまわない。BAはバンクアドレス (Bank Address)、RAはロウアドレス (Row Address)、CAはカラムアドレス (Column Address)、RFUは予備 (Reserve for Future Use)。
状態遷移図
以下にDDR3 SDRAMの状態遷移図を示す。
リセットと初期化
ここではリセットピンとデバイスの電源投入時の初期化手順を説明する。
リセットピンについて
リセットピンはDDR3 SDRAMで採用されたリセット用の信号入力ピンである。他の信号はVref(参照電圧)と比較してハイ/ローを決定するため振幅が小さくてもデバイスは信号として受け取るのに対してリセットピンはCMOSレールトゥレール (Rail to Rail) で動作する。レールトゥレールとはハイ/ローの電圧幅いっぱいに振る信号を意味する。DDR3 SDRAMのリセットピンは電源電圧VDDとグランド電圧VSSに対して80%でハイ、20%でローとなる。例えばVDDが1.5Vの場合は1.2Vでハイ、0.3Vでローとなる。これはリセットピンが微小な変化に対して敏感である必要はなく、むしろノイズなどの小さな電圧変化に伴う誤動作を避ける目的がある。
またリセットピンは誤動作を避けるためにローパスフィルタ(電圧変動の高周波成分を除去する装置)の内蔵が推奨されている。リセットはメモリセルアレイの内容を破壊するかもしれない。
電源投入と初期化手順
- 電源投入後、リセットを投入(リセットピンの電圧を0.2×VDD以下にし最低200us以上維持)する。次にCKEをローに落とし、最低10ns以上経過後リセットを解除(RESET#電圧を0.8×VDD以上に復帰)する。
- リセットを解除してから500us以上、CKEをローに保たなければならない。
- CKEをハイにする10nsまたは5サイクル以上前にクロックをスタートさせる必要がある。この間 コマンドはノーオペレーション (No Operation:NOP) またはデバイスディセレクト (Device Deselect:DES) でなければならない。CKEをハイにしてから初期化が完了するまでの間、CKEはハイを保持しなければならない。
- CKEをハイにしてからtXPR (Reset CKE Exit Time) 経過後にMRSコマンドを投入する。
- MRSコマンドはMR2, MR3, MR1, MR0の順で投入する。MRSコマンドとMRSコマンドの間はtMRD以上の間隔を開けなければならない。MR1でDLLを有効にしMR0でDLLリセットを行う。
- ZQキャリブレーションロング (ZQ Calibration Long:ZQCL) コマンドでZQ補正を開始する。DLLリセット中でもZQキャリブレーションは可能なので、ZQCL投入はMR1コマンド入力後tDLLKを待つ必要はないがtMODを待つ必要がある。
- DLLリセット/ZQキャリブレーションの完了のためtDLLK/tZQin待って初期化は終了する。tDLLK/tZQinはそれぞれ512サイクル。
モードレジスタセット (Mode Register Set:MRS) の書き込み手順
DDR3 SDRAMでは各種modeやパラメタ設定のため4つのモードレジスタセットを用意している。各MRSにはデフォルトを設定していないので電源投入直後や、リセット・初期化時は、全てのMRSを設定しなければならない。MRSコマンドやDLLリセットはメモリセルアレイに格納されているデータへ何も影響しない。
MRSコマンドの書き込みにはtMRDサイクルを必要とするため、次のMRSコマンド入力は最低tMRD空けて実行しなければならない。またDLLリセット以外のMRSコマンドは完了までにtMODサイクルを必要とするため、MRSとノーオペレーション (No Operation:NOP) やデバイスディセレクト (Device Deselect:DES) を除くコマンドの入力は最低tMODサイクル待たなければならない。DRAMがアイドル状態のときはいつでもMRSの内容を書き換えることができる。
モードレジスタ (Mode Register) MR0と設定できる機能
以下ではモードレジスタMR0で設定できるモードとその説明を行う。MR0は以下のフォーマットで設定する。
BA2 | BA1 | BA0 | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | PPD | WR | DLL | TM | CL | BT | CL | BL |
- BL
- バースト長 (Burst Length:BL)
- CL
- CASレイテンシ (CAS Latency:CL)
- BT
- バーストタイプ (Burst Type:BT)
- TM
- テストモード (Test Mode:TM)
- DLL
- DLLリセット (DLL Reset)
- WR
- ライトリカバリ (Write Recovery for Auto Precharge:WR)
- PPD
- プリチャージパワーダウン時のDLLコントロール (DLL control for Precharge Power Down:PPD)
バースト長 (Burst Length:BL)・バーストタイプ (Burst Type:BT)
A1 | A0 | BL |
---|---|---|
0 | 0 | 8 (固定) |
0 | 1 | 4 or 8 (動的に指定) |
1 | 0 | 4 (固定) |
1 | 1 | Reserved |
A3 | バーストタイプ |
---|---|
0 | 4ビットシーケンシャル (Nibble Sequential) |
1 | インタリーブ (Interleave) |
バースト長、開始アドレス、およびバーストタイプでバースト中にアクセスするアドレス順は下表の通り。MR0:A1=0 A0=1時リード/ライトコマンド入力時のA12/BC#でBL8またはBC4 (バーストチョップ:Burst Chop) を選択できる。
バースト長 | リード ライト |
開始アドレス | バーストタイプ | |
---|---|---|---|---|
シーケンシャル | インタリーブ | |||
4バーストチョップ | リード | 0 | 0,1,2,3,T,T,T,T | 0,1,2,3,T,T,T,T |
1 | 1,2,3,0,T,T,T,T | 1,0,3,2,T,T,T,T | ||
2 | 2,3,0,1,T,T,T,T | 2,3,0,1,T,T,T,T | ||
3 | 3,0,1,2,T,T,T,T | 3,2,1,0,T,T,T,T | ||
4 | 4,5,6,7,T,T,T,T | 4,5,6,7,T,T,T,T | ||
5 | 5,6,7,4,T,T,T,T | 5,4,7,6,T,T,T,T | ||
6 | 6,7,4,5,T,T,T,T | 6,7,4,5,T,T,T,T | ||
7 | 7,4,5,6,T,T,T,T | 7,6,5,4,T,T,T,T | ||
ライト | 0~3 | 0,1,2,3,X,X,X,X | 0,1,2,3,X,X,X,X | |
4~7 | 4,5,6,7,X,X,X,X | 4,5,6,7,X,X,X,X | ||
8 | リード | 0 | 0,1,2,3,4,5,6,7 | 0,1,2,3,4,5,6,7 |
1 | 1,2,3,0,5,6,7,4 | 1,0,3,2,5,4,7,6 | ||
2 | 2,3,0,1,6,7,4,5 | 2,3,0,1,6,7,4,5 | ||
3 | 3,0,1,2,7,4,5,6 | 3,2,1,0,7,6,5,4 | ||
4 | 4,5,6,7,0,1,2,3 | 4,5,6,7,0,1,2,3 | ||
5 | 5,6,7,4,1,2,3,0 | 5,4,7,6,1,0,3,2 | ||
6 | 6,7,4,5,2,3,0,1 | 6,7,4,5,2,3,0,1 | ||
7 | 7,4,5,6,3,0,1,2 | 7,6,5,4,3,2,1,0 | ||
ライト | 0~7 | 0,1,2,3,4,5,6,7 | 0,1,2,3,4,5,6,7 |
バースト長にBL4固定を指定した場合、メモリデバイス内部では入出力バッファからメモリセルアレイに対する書き込み動作をBL8を指定した場合よりも2サイクル早く開始する。これはtWRとtWTRの開始位置が2サイクル短くなることを意味している。ただしBL8/BC4を動的に決定するモードを選択した場合、常にBL8と同じサイクルでライト動作を開始しなければならない。T: DQおよびDQSの出力ドライバはHi-Z。X: Don't care。
リード動作やライト動作を繰り返して行う場合、CASを再びローに落とせる様になるまでのサイクル数の下限であるtCCDが4であるため、BC4であっても続くリード/ライトコマンドの入力はBL8と同じサイクル数後になる。つまりBC4を選択しても空いたサイクルに別のデータを詰めてリード/ライト動作を継続できるわけではない。このためリード/ライト動作を継続する場合はバーストチョップを使用するメリットはない。しかしリード→ライト時や、ライト→リード時、ライト→プリチャージ (Precharge) 時にバーストチョップを行うことでBL8を利用する場合に比べてサイクル数を減らせる場合がある。詳細は後述のタイミングチャートを参照。
CASレイテンシ (CAS Latency:CL)
A6 | A5 | A4 | A2 | CAS レイテンシ |
---|---|---|---|---|
0 | 0 | 0 | 0 | Reserved |
0 | 0 | 1 | 0 | 5 |
0 | 1 | 0 | 0 | 6 |
0 | 1 | 1 | 0 | 7 |
1 | 0 | 0 | 0 | 8 |
1 | 0 | 1 | 0 | 9 |
1 | 1 | 0 | 0 | 10 |
1 | 1 | 1 | 0 | 11 (Reserve) |
CASレイテンシはリードコマンドが有効になってから実際にデータが出力されるまでの遅延サイクル数を指す。リードコマンドを入力してからデータが出てくるまでの遅延サイクルであるリードレイテンシ (Read Latency:RL) はアディティブレイテンシ (Additive Latency:AL) とCLの和になる。CASレイテンシはデバイススペックや実動作速度で設定できる値が異なる。詳しくは各デバイスのスペックシートを参照すること。
テストモード (Test Mode:TM)
A7 | テストモード |
---|---|
0 | 通常動作 |
1 | テストモード使用 |
テストモードはデバイス生産時にのみ使用されるテスト用のモードである。通常は使用してはならない。テストモードでデバイスがどのように動作するかは未定義。おそらくデバイスメーカによってテストモードの動作は異なる。
DLLリセット (DLL Reset)
A8 | DLLリセット |
---|---|
0 | DLLをリセットしない |
1 | DLLをリセットする |
DLLリセットはデバイス内部のDLL (Delay Locked Loop) 回路のリセットを指定する。DLL回路とは時間の経過と共に環境の変化(電源電圧や温度など)や内的原因(メモリデバイス内で行う処理や内部クロック自身の持つ誤差)に起因して外部クロックと内部クロックの間に発生する誤差を補正しタイミングを一定に保つための回路。外部クロックと内部クロックの信号を継続的に比較する位相検出器で構成されている。信号間に位相差を検出した場合、調整回路(遅延回路)に制御情報をフィードバックする。DLLをリセットすることでDLL回路は外部クロックをロックすることができる。DLLリセットは外部クロックと内部クロックの同期のためにtDLLKサイクルを必要とする。tDLLKの区間、CKEはハイでなければならない。DLLを使用する場合、DLLを有効にしてからDLLをリセットする必要がある。DLLをリセットしてからtDLLK後にDLLが使用可能になる。DLLリセットはDLL回路のリセット完了後自動的に通常状態に戻るのでDLLリセット完了後に明示的にMR0:A8=0を再設定する必要はない。
ライトリカバリ (Write Recovery for Auto Precharge)
A11 | A10 | A9 | ライトリカバリサイクル数(WR) |
---|---|---|---|
0 | 0 | 0 | Reserved |
0 | 0 | 1 | 5 |
0 | 1 | 0 | 6 |
0 | 1 | 1 | 7 |
1 | 0 | 0 | 8 |
1 | 0 | 1 | 10 |
1 | 1 | 0 | 12 |
1 | 1 | 1 | Reserved |
ライトリカバリサイクル数 (WR) はリカバリオートプリチャージ (Recovery Auto Precharge) 時間の計算式 (tDAL=WR+tRP/tCK) に用いられるサイクル数。tRPはプリチャージコマンドサイクル数。最小ライトリカバリサイクル数 (WRmin) はtWR/tCKで求める(小数点以下は切り上げ)。tWRはスペックシートに規定されているライトリカバリタイム、tCKは1サイクルタイム。設定するWRはWRmin以上の値を設定する。
プリチャージパワーダウン時のDLLコントロール (DLL Control for Precharge Power Down)
A12 | DLLコントロールモード |
---|---|
0 | スローイグジット (DLLオフ) |
1 | ファストイグジット (DLLオン) |
プリチャージパワーダウン時のDLLコントロール (DLL Control for Precharge Power Down) はプリチャージパワーダウン時にDLLを保持するかどうかを指定する。スローイグジットを選択した場合、DLLはプリチャージパワーダウン突入後に電流消費量を抑えるためにDLLを解除する。そのためパワーダウンを解除してからDLLの再ロックが必要となりデバイスに対してコマンド入力が有効になるまでにtXPDLLを要する。ファストイグジットを選択した場合、DLLはプリチャージパワーダウン突入後にも維持される。そのためパワーダウンを解除してからDLLの再ロックは不要であるためtXP後にデバイスに対してコマンド入力が有効になる。
モードレジスタ (Mode Register) MR1と設定できる機能
以下ではモードレジスタMR1で設定できるモードとその説明を行う。MR1は以下のフォーマットで設定する。
BA2 | BA1 | BA0 | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 | Qoff | TDQS | 0 | RTT_Nom | 0 | Level | RTT_Nom | DIC | AL | RTT_Nom | DIC | DLL |
- DLL
- DLLイネーブル (DLL enable)
- DIC
- 出力ドライバインピーダンスコントロール (Output Driver Impedance Control)
- RTT_Nom
- 通常時の終端抵抗 (RTT Nominal)
- AL
- アディティブレイテンシ (Additive Latency)
- Level
- ライトレベリングイネーブル (Write Leveling enable)
- TDQS
- ターミネーションDQSイネーブル (Termination DQS Enable:TDQS)
- Qoff
- 出力禁止
DLLイネーブル (DLL Enable)
A0 | DLLイネーブル |
---|---|
0 | DLLを有効にする (Enable) |
1 | DLLを無効にする (Disable) |
DLLを有効にするか (Enable) 無効にするか (Disable) を指定する。DLLとはDelay Locked Loopの略で外部クロックと内部クロックのタイミング補正に使用される回路である。通常、動作時は常にDLLは有効にしておかなければならない。電源投入後の初期化時や、DLL無効後に通常動作に復帰するときにDLLイネーブルを設定する必要がある。DLLはセルフリフレッシュ開始時に自動的に無効となりセルフリフレッシュ終了時に自動的に有効になる。MR1でDLLを有効にした場合は、続いてMR0でDLLのリセットを行わなければならない。
DLLを無効にした場合、ダイナミックODTは使用できない。DLLが無効の間はODTの入力をローにするか、またはMR1:A9,A6,A2 (RTT_Nom) を0にしなければならない。またMR2:A10,A9 (RTT_WR) =0にしてダイナミックODTも無効にしておかなければならない。
出力ドライバインピーダンスコントロール (Output Driver Impedance Control:DIC)
A5 | A1 | 出力インピーダンス値 |
---|---|---|
0 | 0 | Reserved for RZQ/6 |
0 | 1 | RZQ/7 |
1 | 0 | RZQ/TBD |
1 | 1 | RZQ/TBD |
出力ドライバインピーダンスを指定する。RZQ=240Ω。データピンの出力ドライバは240Ωの抵抗をプルアップ・プルダウン用に7個ずつ持っている。この抵抗の一部あるいは全部を有効・無効にすることで出力インピーダンスを調整する。この出力抵抗回路はRTT_Nom/RTT_WRで指定する終端抵抗と共有している。
通常時の終端抵抗指定値 (RTT_Nom)
A9 | A6 | A2 | RTT_Nom |
---|---|---|---|
0 | 0 | 0 | ODT disabled |
0 | 0 | 1 | RZQ/4 |
0 | 1 | 0 | RZQ/2 |
0 | 1 | 1 | RZQ/6 |
1 | 0 | 0 | RZQ/12 |
1 | 0 | 1 | RZQ/8 |
1 | 1 | 0 | Reserved |
1 | 1 | 1 | Reserved |
RTT_NomとRTT_WRを個別に制御できる。MR1でRTT_Nomを指定する。RZQ=240Ω。
アディティブレイテンシ (Additive Latency:AL)
A4 | A3 | アディティブレイテンシ |
---|---|---|
0 | 0 | 0 (AL disabled) |
0 | 1 | CL-1 |
1 | 0 | CL-2 |
1 | 1 | Reserved |
アディティブレイテンシを利用することでデータバスを効率的に活用できるようになる。アクティブコマンドからリード/ライトコマンドの入力が可能になるまでにtRCD時間が必要である。このtRCDのためにリード/ライトコマンドと別のバンクに対するアクティブコマンドの競合が発生することがある。この競合を避けるために別のバンクに対するアクティブコマンドの入力が1サイクル遅らせると、データを連続的にリード/ライトできないサイクルが発生する。このようなサイクルをバブル (bubble) と言う。バブルが発生するとデータバスに無駄な空きが生じ、データ転送効率が低下する。そこでDDR2 SDRAMからポステッドCAS (Posted CAS) が採用された。ポステッドCASとはtRCD期間中の任意のタイミングに次のリード/ライトコマンドを入力できるようにする機能である。入力したリード/ライトコマンドはデバイス内部で保持され一定期間後に有効となる。この一定期間をアディティブレイテンシと言う。ポステッドCASを活用することで効率的なコマンド入力が可能になりデータ転送効率が向上する。
ライトコマンドから実際にデータの書き込まれるまでのサイクル数=ライトレイテンシ(Write Latency:WL)はアディティブレイテンシ (AL) とCASライトレイテンシ (CAS Write Latency:CWL) の和 (WL=CWL+AL)、リードコマンドから実際にデータが読み出されるまでのサイクル数=リードレイテンシ (Read Latency:RL) はアディティブレイテンシ (AL) とCASレイテンシ (CAS Latency:CL) の和にな る(RL=CL+AL)。
DDR2 SDRAMではAL=0~4が選択可能であったが、DDR3 SDRAMではAL=0,CL-1,CL-2が選択可能である。
ライトレベリング (Write Leveling)
A7 | ライトレベリングイネーブル |
---|---|
0 | ライトレベリングを使用しない (Disable) |
1 | ライトレベリングを使用する (Enabled) |
ライトレベリングを設定するとデバイスはライトレベリングモードに突入する。ライトレベリングモード時、デバイスはDQSの上がりエッジでサンプリングしたクロックの値をDQピンから出力する。
DDR3のメモリモジュールでは波形品質の向上のために、コマンドやアドレス、クロックを各デバイスを各ピン一つのラインで数珠繋ぎ(デイジーチェイン)でつなぐフライバイ構造 (Fly-by) を用いる。従来のメモリモジュールはクロックをトーナメント方式で分岐して各デバイスに同一タイミングで入力するように調整していた。このためメモリデバイス・コントローラはクロックとコマンド・アドレス・データのタイミングがずれることを考慮する必要がなかった反面、データ転送が高速化するにつれて等長配線への要求が厳しくなるとともに等長配線のための引き回しが配線長を伸張し波形品質の劣化を招いた。そこでデバイスを最短距離で数珠繋ぎに接続するフライバイ構造の提案がなされた。
フライバイ構造によって波形品質の向上とDIMM内の配線の短縮が可能になるが、反面クロックがDIMM内の各DRAMに伝播する時間に差が生じ、クロックとDQSの位相差が発生する。そこでメモリコントローラはDQS入力タイミングをクロックの伝播遅延にあわせて遅らせるという処理が必要になる。ライトレベリングはこの遅延量の決定のために必要となる機能である。
ライトレベリングとはDDR3 SDRAMからの簡易なフィードバックによってメモリコントローラがクロックとDQSの位相補正を行う機能のことを言う。 DDR3 SDRAMはDQSの上がりエッジでクロックをサンプルした結果をDQピンからメモリコントローラに返す。このフィードバックは非同期で行われる。 メモリコントローラはDQSのタイミングを変更しながら、この値が0から1に変化するタイミングを検出する。この位相差はDQピンにも同時にフィードバックしなければならない。DQS,DQS#,DQピンは全てコントローラで終端する。x16デバイスでは上位8ビットと下位8ビットは独立しておりそれぞれ別々に制御する。
出力禁止 (Output Buffer Disable:Qoff)
A12 | Qoff |
---|---|
0 | 出力を禁止しない |
1 | 出力を禁止する |
出力禁止(Qoff)を設定するとデバイスの出力ピン (DQ, DQS DQS#) は何も接続しない状態(Hi-Z)になる。
ターミネーションDQSイネーブル (Termination DQS Enable:TDQS)
A11 | TDQS | DM/TDQSピン | NU/TDQS#ピン |
---|---|---|---|
0 | TDQSを使用しない(Disable) | データマスク (DM) として動作 | Hi-Z状態 |
1 | TDQSを使用する(Enable) | TDQSとして動作 | TDQS#として動作 |
TDQS, TDQS#ピンはx8デバイスで構成されているDIMMモジュールとx4デバイスで構成されているDIMMモジュールが混在するようなシステムでx4デバイスのDQS,DQS#をx8デバイスのTDQS/TDQS#で終端し反射を抑制することで波形品質を維持するために付けられたピンである。大規模なシステムで複数の種類のモジュールの混在を許容することでシステムの柔軟性を高めるのに役立つ。
TDQSはx8デバイスのみ有効にすることが可能で、x4/x16デバイスでは有効にすることができない。TDQS/TDQS#の終端抵抗値はDQS/DQS#と等しい。DDR2 SDRAMにおけるRDQSと近い機能でRDQSはデータ出力時にデータストローブ信号を出力するのに対して、TDQSは終端抵抗だけを提供する。
TDQSとデータマスク (Data Mask:DM) は同じピンを使うため、TDQSを使用する場合はDMは使用できない。TDQSを使用しない場合のみはDMを使用可能となる。TDQSを使用しない場合、TDQS#ピンは使われない。
モードレジスタ (Mode Register)MR2と設定できる機能
BA2 | BA1 | BA0 | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | RTT_WR | 0 | SRF | ASR | CWL | PASR |
- PASR
- パーシャルアレイセルフリフレッシュ (Partial Array Self Refresh:PASR) - オプション機能
- CWL
- CASライトレイテンシ (CAS Write Latency:CWL)
- ASR
- オートセルフリフレッシュ (Auto Self Refresh:ASR)
- SRF
- セルフリフレッシュテンプラチャ (Self-refresh temperature range:SRT)
- RTT_WR
- ライト時の終端抵抗 (RTT Write)
パーシャルアレイセルフリフレッシュ (Partial Array Self Refresh:PASR) - オプション機能
A2 | A1 | A0 | パーシャルアレイセルフリフレッシュ |
---|---|---|---|
0 | 0 | 0 | 全アレイ |
0 | 0 | 1 | 1/2アレイ (BA0~BA2:0,1,2,3 )
000,001,010, &011) |
0 | 1 | 0 | 1/4アレイ (BA0~BA2:0,1 ) |
0 | 1 | 1 | 1/8アレイ (BA0~BA2:0 ) |
1 | 0 | 0 | 3/4アレイ (BA0~BA2: 2,3,4,5,6,7) |
1 | 0 | 1 | 1/2アレイ (BA0~BA2: 4,5,6,7) |
1 | 1 | 0 | 1/4アレイ (BA0~BA2: 6,7) |
1 | 1 | 1 | 1/8アレイ (BA0~BA2: 7) |
オプション機能なのでデータシートを確認すること。PASRはデバイスの一部のバンクだけをセルフリフレッシュの対象にする機能。必要なバンクだけリフレッシュするため全体をリフレッシュする場合よりも消費電力を抑えられる。PASRが有効の場合、指定された領域のメモリがセルフリフレッシュの対象となる(対象外の領域のデータは失われる場合がある)
CASライトレイテンシ (CAS Write Latency:CWL)
A5 | A4 | A3 | CASライトレイテンシ |
---|---|---|---|
0 | 0 | 0 | 5 ( tCK≧2.500ns) |
0 | 0 | 1 | 6 (2.500ns>tCK≧1.875ns) |
0 | 1 | 0 | 7 (1.875ns>tCK≧1.500ns) |
0 | 1 | 1 | 8 (1.500ns>tCK≧1.250ns) |
1 | 0 | 0 | Reserved |
1 | 0 | 1 | Reserved |
1 | 1 | 0 | Reserved |
1 | 1 | 1 | Reserved |
CASライトレイテンシ (CAS write latency:CWL) は内部ライトコマンドから実際にデータの書き込み準備が完了し最初のデータ書き込みが始まるまでの遅延サイクル数を表す。
DDR2 SDRAMでライトレイテンシ (Write Latency:WL) はリードレイテンシ (Read Latency:RL) で与えられる計算式WL=RL-1で自動的に決定する。ただしリードレイテンシはCASレイテンシ (CAS Latency:CL) とアディティブレイテンシ (Additive Latency:AL) の和 (RL=CL+AL)。DDR3 SDRAMではDDR2 SDRAMと異なりWLは新たに定義されたCASライトレイテンシ (CAS Write Latency:CWL) とALで与えられる計算式WL=AL+CWLで決定する。CWLはモードレジスタMR2で5~8の値を指定する。
オートセルフリフレッシュ (Auto Self Refresh Method:ASR) とセルフリフレッシュテンプラチャ (Self-Refresh Temperature Range:SRT)
A6 | オートセルフリフレッシュ |
---|---|
0 | オートセルフリフレッシュを使用しない |
1 | オートセルフリフレッシュを使用する - オプション機能 |
A7 | セルフリフレッシュテンプラチャ |
---|---|
0 | 通常温度範囲でセルフリフレッシュを行う |
1 | 拡張温度範囲でセルフリフレッシュを行う - オプション機能 |
オプション機能なのでデータシートを確認すること。DDR3 SDRAMは動作保証温度範囲内 (TOPER:0~95℃) においてセルフリフレッシュの動作を保証しているが、より広範な温度帯域でセルフリフレッシュ動作を期待する場合がある。そのような場合、ASR機能かSRTを使用しなければならない。
動作保証温度範囲ではオートセルフリフレッシュかオートセルフのいずれかを有効にしなければならない。動作保証温度範囲を超える場合、セルフリフレッシュテンプラチャを有効にする。
ライト時の終端抵抗 (RTT_WR)
A10 | A9 | RTT_WR |
---|---|---|
0 | 0 | ダイナミックODT (Dynamic ODT) オフ |
0 | 1 | RZQ/4 |
1 | 0 | RZQ/2 |
1 | 1 | Reserved |
RTT_WRに0以外を設定することでダイナミックODTが有効になる。データバスの波形品質を向上させるためにDDR3 SDRAMにライト時の終端抵抗値を動的に変更する機能ダイナミックODTが加えられた。ただしライトレベリング (Write Leveling) 時はRTT_Nomだけが有効。RZQ=240Ω。
モードレジスタ (Mode Register) MR3と設定できる機能
BA2 | BA1 | BA0 | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ODTS | MPR | MPR Loc |
- ODTS
- オンダイサーマルセンサ (On Die Thermal Sensor:ODTS) - オプション機能
- MPR
- マルチパーパスレジスタ (Multi-Purpose Register:MPR)
- MPR Loc
- マルチパーパスレジスタロケーション (Multi-Purpose Register location:MPR Loc)
マルチパーパスレジスタ (Multi-Purpose Register:MPR) - リードレベリング (Read Leveling)
A1 | A0 | MPR Loc |
---|---|---|
0 | 0 | 定義済パターンの出力 (Predefined pattern) |
0 | 1 | Reserved |
1 | 0 | Reserved |
1 | 1 | Reserved |
A2 | マルチパーパスレジスタ |
---|---|
0 | 通常動作 |
1 | MPRからデータ出力 |
MPRはデータ読み出し時のタイミング補正のために用いられる。DDR3のメモリモジュールでは波形品質の向上のために、コマンドやアドレス、クロックを各デバイスを各ピン一つのラインで数珠繋ぎ(デイジーチェイン)でつなぐフライバイ (Fly-by) 構造を用いる。フライバイ構造によって波形品質の向上とDIMM内の配線の短縮が可能になるが、反面クロックがDIMM内の各DRAMに伝播する時間に差が生じ、データ出力タイミングが各デバイスごとに異なる。そこでメモリコントローラ内にデータを受け取るタイミング差を修正する遅延回路を設けて対応する。このとき各デバイスの遅延時間を見積もる操作をリードレベリング (Read Leveling) と呼ぶ。
MPRを有効にした後、リードコマンド (RDまたはRDA) を入力するとリードコマンドはメモリセルアレイではなくMPRに入力される。メモリセルアレイのデータの読み出しはMPRを無効にするまでできない。またMPRが有効であるとき、MRSコマンド、リードコマンド、リセット入力以外は無効である。
MPR読み出し動作中は1ビットの論理インタフェイスとなる。つまりDQ0 (DQU0/DQL0) はMPRからのデータを出力し、DQ0以外のピンはDQ0と同一データかもしくは0を出力する。DQS, DQS#からは通常のリードコマンド入力時と同様データストローブ信号を出力する。読み出し動作時のバースト長、バーストタイプ、リードレイテンシ(Read Latency)はMRSの設定に従い、バーストチョップ(Burst Chop:BC)はリードコマンド入力時のA12/BCに従う。リードコマンド入力時、A0~A1は0でなければならない。A12はバーストチョップの判断に用いられる。その他のアドレス入力は無視する。MR3:A1=0, A0=0のとき、MPRから常に0,1,0,1というデータが読み出される。
アクティブコマンド (Active:ACT)
アクティブコマンドはこれからアクセスするバンクアドレスをBA0-BA2、ロウアドレスをA0-A15で指定し開く(有効にする)。このロウアドレスはプリチャージコマンド (precharge) の入力でそのバンクがアイドルになるまで有効となる。他のロウアドレスを指定する場合、プリチャージコマンドを入力する必要がある。
プリチャージコマンド (Precharge:PRE,PREA)
プリチャージコマンドはアクティブコマンドで開いたバンク/ローアドレスを閉じる(ロウアドレスを無効にして保存する)。オートプリチャージを使っている場合を除き、プリチャージコマンドからtRP時間経過しなければ同一バンクをActiveすることができない。プリチャージコマンドを入力すると当該バンクはアイドル状態に復帰する。プリチャージコマンドはアクティブしていないバンクに対しても有効。
プリチャージコマンドは単一バンクを対象とするプリチャージコマンド (PRE) と全バンクを対象とするプリチャージオールコマンド (PREA) がある。プリチャージコマンドはA10をローにし、BA0-BA2で対象バンクを指定する。プリチャージオールコマンドはA10をハイにし、BA0-BA2は0にしておく。
リードコマンド
リードコマンドはデータを読み出すコマンド。メモリデバイスはアクティブコマンドで指定したバンクおよびロウアドレス、リードコマンドで指定したカラムアドレスからバースト長分だけデータを連続で出力する。データはリードコマンドからアディティブレーテンシ (AL) とCASレーテンシ (CL) の和 (AL+CL) のサイクル数分送れて出力される。データと同期してデータストローブ信号 (DQS) も出力する。DQSはデータの出始め前にtRPRE期間プリアンブル (Preamble)、データ終了時にtRPST期間のポストアンブル (Postamble) を出力する。
リード/ライトコマンドの入力時にA12/BC#で動的にバーストチョップ (Burst Chop:BC) の有無 (BC4/BL8) を切り替えることができる。リード作時のタイミングパラメタを以下に示す。
- tDQSCKmax/tDQSCKminはCK/CK#の交点に対するDQS/DQS#の交点の許容される振れ幅に対する規定値
- tDQSCKはCK/CK#の交点に対するDQS/DQS#の交点のタイミング
- tQSHはDQSのハイ区間、tQSLはDQSのロー区間。
- tLZ/tHZはCK/CK#の交点からDQS/DQが信号を出力を開始するまでの時間、およびHi-Zになるまでの時間
- tDQSQはDQS/DQS#の交点から最も出力タイミングが遅いDQピンからデータが出始めるまでの時間
- tQHははDQS/DQS#の交点から最も出力タイミングの早いDQピンからデータが出終わるまでの時間
- 有効データ区間はtQH-tDQSQと等しい。
ただしtLZ/tHZおよびtRPREの起点/TRPSTの終点はは下図で示すように計算する。
以下にリードコマンドと他のコマンドを組合せたときのタイミングチャートを示す。
ただしBL=8、AL=0、CL=5、Dout nはCol nに対応して読み出されたデータである。
DDR3 SDRAMではCAS#から次のCAS#までのタイミング制限tCCDは4サイクルである。そのためリードコマンドは4サイクルごとにしか入力できない。データの読み出しが連続する場合、1つ目のリードコマンドに対するポストアンブル (Postamble)、2つ目のリードコマンドに対するプリアンブル (Preamble) は消失し連続した読み出しの先頭にプリアンブル、最後にポストアンブルが現われる。
ただしBC4、CL=5、AL=5、Dout nはCol nに対応して読み出されたデータである。 バーストチョップ (Burst Chop:BC4) を用いてリードデータを途中で停止しても続くリードコマンドをtCCDより短いタイミングで入力することはできない。そのため2つ目のリードコマンドに対応する読み出しは1つ目のリードコマンドがバーストチョップでなかった場合と等しい。
ただしBL8、CL=5、CL=0、CWL=5、Dout nはCol nに対応して読み出されたデータ、Din bはCol bに対応して書き込まれるデータである。
バーストチョップしないリードコマンドからライトコマンドには
ただしBC4、CL=5、AL=0、CWL=5、Dout nはCol nに対応して読み出されたデータ、Din bはCol bに対応して書き込まれるデータである。
バーストチョップしたリードコマンドからライトコマンドまでの期間は
ただしCL=5、AL=0、Dout nはCol nに対応して読み出されたデータである。
ただしCL=5、AL=0、Dout nはCol nに対応して読み出されたデータである。 先に読み出すデータに対してバーストチョップを行ってもtCCDは変わらない。そのため1つ目のリードコマンドに対応するデータの読み出しと2つ目のリードコマンドに対応するデータの読み出しの間に2サイクルデータの出力されない区間が発生する。このような場合、それぞれのデータの読み出し始めと終わりにプリアンブル・ポストアンブルが挿入される。
ただしCL=5、AL=0、CWL=5、Dout nはCol nに対応して読み出されたデータ、Din bはCol bに対応して書き込まれるデータである。
バーストチョップしたリードコマンドからライトコマンドまでの期間はライトコマンドがバーストチョップかどうかに関係なく