SDRAMの種類
種類 | プリフェッチ | データレートの例 | Bank数 | VDD |
---|---|---|---|---|
SDRAM | なし | 133 MT/s/pin | 4 Bank | 3.3 V |
DDR SDRAM | 2 プリフェッチ | 400 MT/s/pin | 4 Bank | 2.5 V |
DDR2 SDRAM | 4 プリフェッチ | 800 MT/s/pin | 4 or 8 Bank | 1.8 V (DDR2L 1.5 V) |
DDR3 SDRAM | 8 プリフェッチ | 1600 MT/s/pin | 8 Bank | 1.5 V (DDR3L 1.35 V) |
DDRとは
クロックの立上がり,立下がりでデータ読み書き.
SDRAMは,CLKの立ち上がりでデータ読み書きするが,
DDR SDRAM以降,データはDQSとともに送信され、読込み時はDQSのエッジ位置で、書込み時はDQSのセンターで取り込む.
バスクロックの2倍でデータをやり取りできる.
DQSはデータと一緒に伝送されるので,CLK基準でデータやり取りするより,タイミングマージンを確保しやすい.
ワードとは
メモリチップのデータバス幅(x8, x16, ...)単位で1ワードと呼ぶ.
容量256Mbitのメモリチップなら,
x8: 256Mbit = 8 bit/ワード * 32M ワード
x16: 256Mbit = 16 bit/ワード * 16M ワード
...
プリフェッチとは
- リードラッチに,データバス幅のプリフェッチ数倍のデータを読んでおき,データバスに出力.
- ライトFIFOに,データバス幅のプリフェッチ数倍のデータを詰めておき,メモリにまとめ書き.
DDR3のx16品なら,
- 8ワード(128bit)ラッチしておき,MUXで各ワード(16bit)を切り替えてDQに出力.
- DQから1ワード(16bit)ずつFIFOに詰めておき,8ワード(128bit)をまとめて書き込み.
メモリクロックのプリフェッチ数倍でデータをやり取りできる.
Micron; tn4719_form_function_ddr2
データレートの例
データレート = [非DDR=1 or DDR=2] * バスクロック = [プリフェッチ数] * メモリクロック
- SDRAM
133 MT/s/pin = 133 MHz = 133 MHz - DDR SDRAM
400 MT/s/pin = 2200 MHz = 4100 Hz - DDR3 SDRAM
1600 MT/s/pin = 2800 MHz = 8200 MHz
※標準モジュールは64 bit幅のデータバスなので,
DDR3-1600標準モジュールのデータレートは,
1600 (MT/s/pin) * 64 (pin) / 8 (Byte/bit) = 12.8 (GB/s)
BankとRowとColumn
Micron; 256Mb SDRAMデータシート
SDRAM 16Mb x16品を例にとると,
- BankセレクトBA[1:0] -> 2^2 = 4 Banks
- RowアドレスA[12:0] -> 2^13 = 8192 Rows
- ColumnアドレスA[8:0] -> 2^9 = 512 Columns
(Bank, Row, Column)の組み合わせで1つのワード(16bit)が選択されるから,
4 * 8192 * 512 * 16 = 2^28 = 256 Mbit
操作
Rowをアクティブ(1行まとめてメモリセルからラッチ)にして,
読み書きした後,プリチャージ(ラッチからメモリセルに書き戻し.DRAMは読み出すとデータ破壊される)する.
-
READ
(Bank, Row)選んでアクティブコマンド発行
→ [tRCD後,指定Rowの16 bit * 512 Columnsがセンスアンプで読まれラッチ(=「活性化」)]
→ Column選んでリードコマンド発行
→ [CASレイテンシ(CL)後のクロックから,指定Columnから順繰り※1に16 bitデータ出力]
→ プリチャージコマンド発行※2
→ [tRP後,プリチャージ完了] -
WRITE
(Bank, Row)選んでアクティブコマンド発行
→ [tRCD後,指定Rowの16 bit * 512 Columnsがセンスアンプで読まれラッチ(=「活性化」)]
→ Column選んで,データ入れて,ライトコマンド発行
→ [クロック毎に順繰り※1に16 bitデータ入力,最後のデータからtWR待つ]
→ プリチャージコマンド発行※2
→ [tRP後,プリチャージ完了]
※1 シーケンシャル,インタリーブで順番のつけ方変わる
※2 リードorライトコマンド発行時,A10=H(オートプリチャージ有効)なら,プリチャージコマンド発行不要
Command Rate(CR)
コマンド受付に何クロックかけるか.1T, 2T, ...が使われる.
「Column選んで,データ入れて,ライトコマンド発行」では,
1Tでは,コマンド信号入れた1CLK目で,アドレスバス,データバスを読み取り,コマンド受け付けるが,
2Tでは,コマンド信号入れてから2CLK目で,コマンド受け付ける.タイミングマージンが確保しやすい.
Rank
データバスDQをいくつのメモリチップで共有するか.
シングルランクなら,メモリコントローラとメモリチップで1対1接続だが,
デュアルランクなら,1対2接続となる.#CSで有効とするメモリチップを選択してアクセスする.
無効にしたメモリチップに繋がるDQはスタブになるので,信号品質は劣化する.