SDRAM
[Wikipedia|▼Menu]
これは通常リード・バーストの完了を待ち合わせるか、リード・バーストを停止するか、DQM制御線を使うことでなされる。

メモリコントローラが別のロウにアクセスする必要が生じると、まずそのロウの所属するバンクのセンスアンプをアイドル状態に戻す必要があり、その後に次のロウにアクセスする準備をする。これを「プリチャージ」と称し、「ロウを閉じる」と呼ぶ。プリチャージは独立したコマンドとして実行することもあるし、リードまたはライトの際に自動的に行うこともある。プリチャージにも時間がかかり、ロウ・プリチャージ遅延または tRP と呼ぶ。指定したバンクが完全にアイドル状態となるまでにかかる時間であり、その後に次のアクティブ・コマンドを受け付けられるようになる。

ロウを活性化すると副作用としてリフレッシュが行われるが、それにも時間がかかる。これを最小ロウアクセス時間 tRAS と呼び、あるロウをアクティブ・コマンドで開いた後からプリチャージ・コマンドで閉じることができるようになるまでの間に生じる遅延時間として現れる(言い換えると、アクティブ・コマンドとプリチャージ・コマンドの間でカラムアドレスを出すこと以外は何もしなくても遅延時間が発生する)。しかし、通常アクティブ・コマンドの後にはリードまたはライトを行うので、性能にはほとんど影響を及ぼさない。リード・ライトの動作の方が tRAS よりも長いからである。
コマンドによる対話

どのような状態でもNOPコマンドは常に受け付けられる。

全バンクがアイドル状態のとき、以下のコマンドが発行できる。

モードレジスタのロード・コマンド:モードレジスタの変更が効力を持つまである遅延時間がかかる。

オートリフレッシュ・コマンド:チップがアイドル状態に戻るまでにリフレッシュサイクル時間 tRFC がかかる。この時間は一般に tRCD+tRP と同じである。

全バンクではなく、対話したい特定のバンクがアイドル状態のときに発行できるコマンド

アクティブ・コマンド:上述の通り、アクティブ・コマンドはロウが完全に開いてリードまたはライト・コマンドを受けつけ可能になるまで tRCD という時間を要する。

バンクが開いているとき(オープン状態のとき)、4つのコマンドを受け付けられる。

リード・コマンド

ライト・コマンド

バースト終了コマンド

プリチャージ・コマンド

リード・コマンドはリードバースト(連続読出)を開始する。一方、ライト・コマンドはライトバースト(連続書込)を開始する。そして、続くコマンドによってバーストを中断できる。
リードバースト割り込み

「リード・コマンド」「バースト終了コマンド」「プリチャージ・コマンド」は、リードバースト開始後、任意の時点で発行でき、設定されたCASレイテンシ後にリードバーストに割り込むことができる。

リード・コマンドをサイクル0で発行し、別のリード・コマンドをサイクル2で発行したとする。CASレイテンシが3の場合、最初のリード・コマンドはデータのバースト出力をサイクル3および4で開始し、2つ目のリード・コマンドの処理はサイクル5から開始される。

以上をまとめると以下のようになる。サイクル0 : リード・コマンド(1つ目)サイクル1 :サイクル2 : リード・コマンド(2つ目)サイクル3 : リードバースト開始サイクル4 : (ここでリードバースト開始になることもある)サイクル5 : 2つ目のリード・コマンドの処理開始

サイクル2で発行したコマンドがバースト終了またはアクティブなバンクのプリチャージだった場合、サイクル5までの間に出力は生成されない。

リードバースト割り込みは任意のアクティブなバンクで起きうるが、プリチャージ・コマンドがリードバーストに割り込むのは、それが同じバンクに対するものか全バンクに対するものだった場合だけである。異なるバンクへのプリチャージ・コマンドはリードバーストに割り込まない。

ライト・コマンドでリードバーストに割り込むことも可能だが、やや難しい。ライトの際にはDQ線でSDRAMに書き込むデータを示す必要があるため、メモリコントローラはDQM信号を使ってSDRAMの出力を抑制する必要がある。DQMによるリードデータ抑制の効果は2サイクル遅延するが、ライトデータへの効果は即座に現れる。したがってライト・コマンドの少なくとも2サイクル前にDQMをアサートしてリードデータをマスクする必要があるが、ライト・コマンドを発行する時点にはDQMを下げておく必要がある。その間はわずか2サイクルであり、微妙なタイミング調整を必要とする。クロック周波数が高い場合は3サイクルを必要とすることもある。

自動プリチャージ付きのリード・コマンドの場合、プリチャージはコマンドに割り込むのと同じサイクルで開始される。
バースト要求

最近のキャッシュを持つマイクロプロセッサは、一般にキャッシュライン単位でメモリにアクセスする。キャッシュラインが64バイト(512bit)の場合、64ビットのDIMMに8回連続アクセスする必要がある。64ビットのDIMMが8つのSDRAMチップで構成されている場合、1つのSDRAMチップは8bit単位で8回連続アクセスされることになる。それを1回のリードまたはライト・コマンドで開始するよう設定できる。すなわち、モードレジスタで8ワードのバースト転送を設定すればよい(BL=8、BLとは「バースト長」)。

キャッシュラインのフェッチは一般に特定アドレスからのリードで開始され、SDRAMは「クリティカルワード」(キャッシュラインの先頭に位置しないワード)を最初に転送することを可能としている。ここでいう「ワード」の長さは、SDRAMチップまたはDIMMのデータ出力幅であり、典型的なDIMMでは64ビットである。SDRAMチップは、キャッシュライン内の残りのワードの転送順序を2種類サポートする。

バーストは常にバースト長 (BL) でアライン(整列)されたブロック(キャッシュラインに対応)にアクセスし、ブロックの開始アドレスはBLの整数倍の位置となる。例えば4ワード・バーストでカラムアドレス4から7のいずれかにアクセスしようとすると、4-7の4ワードがバースト転送される。ブロックの先頭から転送を要求した場合、順番に転送されるだけである。しかし、ブロックの途中のアドレスから転送を要求すると、その転送順序は要求したアドレスに依存し、「シーケンシャル」または「インターリーブ」という2つのバースト種別のオプションで設定される。一般にメモリコントローラはどちらか一方をサポートしている。

バースト長が1または2の場合、バースト種別は問題とはならない。バースト長が1なら、要求されたワードにアクセスするだけである。バースト長が2なら、まず要求されたアドレスのワードにアクセスし、次にブロックを構成するもう1つのワードにアクセスする。指定したアドレスが偶数なら2番目にアクセスするのはその次のワードであり、奇数なら1つ前のワードということになる。

シーケンシャル型のバーストモードでは、指定されたアドレスを起点としてアドレスが大きくなる順にアクセスしていき、ブロック境界まで来るとブロック先頭に戻って順にアクセスしていく。例えばバースト長が4の場合、要求したカラムアドレスが5だとすると、アクセスするワードの順序は 5-6-7-4 となる。バースト長が8の場合、アクセス順序は 5-6-7-0-1-2-3-4 となる。これはカラムアドレスにカウンタの値を加算することでなされ、バースト長を超えたときにキャリーを無視することでこのような順序となる。

インターリーブ型のバーストモードでは、カウンタと指定されたアドレスの間で排他的論理和操作をおこなってアドレスを計算する。バースト長が4ワードの場合、同じようにアドレス5で開始すると、アクセス順序は 5-4-7-6 となる。同様に8ワードバーストなら 5-4-7-6-1-0-3-2 となる。人間にはこのような順序は判りにくいが、ハードウェアでの実装は容易であり、インテル製マイクロプロセッサがこの方式をよく採用している(どのような順番でもブロック内が全て転送されればよい)。

要求されたカラムアドレスがブロック(キャッシュラインに対応)の先頭だった場合、どちらのモードであっても同じ 0-1-2-3-4-5-6-7 という整列した順序でデータを返す。2つのモードの違いが問題となるのは、クリティカルワードを最初としてキャッシュラインをフェッチする場合である。
モードレジスタ

シングルデータレートのSDRAMには、10ビットのプログラム可能なモードレジスタがある。DDR SDRAM の規格ではモードレジスタがさらに追加されており、バンクアドレスピンを使って指定できる。SDR SDRAM の場合、バンクアドレスピンや A10 以上のアドレス線は無視されるが、モードレジスタに書き込む際はそれらを0にしておくべきである。

モードレジスタのロードを行うサイクルでは、アドレス線 A0 から A9 でモードレジスタの内容を指定し、それぞれ M0 から M9 のビットに対応している。
M9: ライトバーストモード。0の場合、ライト・コマンドでもリードバーストの長さとモードでバースト転送する。1の場合、全てのライトはバースト転送しない(1ワードのみの書き込みとなる)。

M8, M7: 予約されている。常に 00 とする。

M6, M5, M4: CASレイテンシ。一般に 010 (CL2) と 011 (CL3) のみが妥当である。リード・コマンドからデータ出力までのサイクル数を指定する。チップにはナノ秒単位の基本的な限界が存在する。初期化の際にメモリコントローラがその限界を考慮して適切なサイクル数に変換して設定しなければならない。

M3: バースト種別。0の場合はシーケンシャル型のバースト順序、1の場合はインターリーブ型のバースト順序となる。

M2, M1, M0: バースト長。000、001、010、011 がそれぞれ1ワード、2ワード、4ワード、8ワードに対応する。リード・コマンド(M9が0ならライトも)は、指定された長さでアクセスするが、バースト終了または他のコマンドで割り込むこともできる。111と設定した場合、ロウ全体のバースト転送となる。バーストは割り込むまで続く。ロウ全体のバーストはシーケンシャルモードのときのみ可能である。

オートリフレッシュ

それぞれのバンクのそれぞれのロウを開いて閉じる(アクティブとプリチャージ)ことで、メモリセルをリフレッシュできる。しかし、メモリコントローラを単純化するため、SDRAMチップには「オートリフレッシュ」コマンドがあり、それぞれのバンクの1つのロウに対して同時にリフレッシュを行うことができる。SDRAMは内部にカウンタを持っていて、バンク内のロウを順番にオートリフレッシュすることができる。メモリコントローラはリフレッシュインターバル(一般に tREF = 64 ms)ごとにロウの数(これまで説明してきた例では4096)をカバーするのに十分なだけのオートリフレッシュ・コマンドを発行すればよい(この例だと、64ms内に4096回発行するということ)。このコマンドを発行する際には全バンクがアイドル状態でなければならない。
省電力モード

CKE (clock enable) 信号を使うと、SDRAMのクロックを事実上停止することができる。CKE信号はクロック波形の立ち上がりごとにサンプリングされ、ローレベルであれば次のクロックの立ち上がりが無視され、CKE信号のチェック以外の処理が行われなくなる。CKEをローレベルにしている間はクロック周波数を変更したり、クロックを完全に止めたりすることも可能である。

CKEがローレベルになるとSDRAMは処理をフリーズさせ、CKEがハイレベルになるまでその状態を保つ。

CKEがローレベルとなってSDRAMがアイドル状態なら(全バンクがプリチャージされ、コマンドを処理中でない場合)、SDRAMは自動的に省電力モードとなり、CKEがハイレベルになるまで最小限の電力しか消費しない状態となる。ただし、リフレッシュインターバル tREF 以上にこのモードを続けることはできない(メモリの内容が失われてしまうため)。この状態でクロックを完全に止めれば、さらに電力消費を抑えることができる。

また、CKEをローレベルにしたときにオートリフレッシュ・コマンドをSDRAMに送れば、SDRAMはセルフリフレッシュ・モードとなる。この場合も省電力状態となるが、SDRAMは内部のタイマを使って必要なリフレッシュサイクルを生成する。この場合もクロック供給を止めることができる。上述の省電力モードよりも電力消費は若干多いが、メモリコントローラを完全に停止させることができ、システム全体としてはこちらの方が省電力となる。

バッテリ駆動の機器向けにさらなる省電力オプションが用意されている。
温度対応型リフレッシュ : チップ上の温度センサが温度を測定し、低温になるほどセルフリフレッシュでのリフレッシュレートを低減させる。

選択的リフレッシュ : DRAMアレイの一部だけでセルフリフレッシュを行う。どの部分をリフレッシュするかは追加のモードレジスタで設定する。

DPD (deep power down) モード : モバイルDDR
(LPDDR) やLPDDR2が実装している。メモリ内容を無効化して、通常状態に復帰するときに再設定を必要とする。CKEをローレベルにする際にバースト終了コマンドを発行することでDPDモードとなる。

世代
SDRAM

SDR SDRAM(詳細は前述)は、1クロックサイクルの片エッジでの転送である(シングルデータレート(SDR))。
その他の提案

SDR SDRAMの後継としてDDR SDRAMが普及するまでの間に、多少の技術的・政治的混沌があった。#成功しなかった後継テクノロジーの節を参照。
DDR SDRAM詳細は「DDR SDRAM」を参照

DRAMのアクセスレイテンシはDRAMアレイによって基本的に制限されているが、内部では数千ビットのロウを一度に読み出すので、帯域幅はさらに高められる可能性を持っている。ユーザーに対してさらなる帯域幅を提供するため、ダブルデータレートというインタフェースが開発された。コマンドを1サイクルに1つ受け付けるのは従来と同じだが、リードとライトは1クロックサイクルに2ワードのデータを扱う。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:49 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef