論理回路デザイン
お問い合わせ サイトマップ リンク Tips
ArchiTek home page
目的

考え方(ランダムアクセス)

考え方(アドレスマッピング)

考え方(マスターインターフェイス)

考え方(DDRインターフェイス)

考え方(DDR割込みアクセス)

その他

回路デザイン > 設計例 [DDR制御(論理)] > 目的・考え方    次のページ(実装にあたって)    このページのTOP ▲

[1]
アドレスの高度な変換は、MMUなど上位マスターで実施することが多いと思います。
[2]
一旦保持するためのバッファの構造が主です。同時アクセスのためのレイテンシ吸収や、Out-of-order対応などさまざまな手法が試されます。キャッシュもその一例です。
[3]
R/Wが交互になるとNOP挿入が多発して性能劣化します。いかにR/Wが切り替わらないようにするかもポイントです。In-orderが前提なので、ブリッジより上位の部分で複数アクセスの順序換え等で対処する必要があります。
[4]
ランダムアクセスの単位を変えるにはDDRの語長を変える他はありませんが、スループット(帯域)の確保も条件にあるなら、グラフィックスシステムのようにDDRをマルチチャネル化する必要があります。
[5]
SDRAMはアクセスパイプラインに繋がるセンスアンプに一旦データをテンポラリとして置かなければなりません。それがActivateコマンドです。Writeは一部変更になるため必ずメモリセルに書き戻さねばなりません。それがPre-chargeコマンドです。

Readは読み出すだけなので不要、と言うわけにはいきません。センスアンプにデータを置くとメモリセル内のデータも消えます。ですので結局書き戻しが必要になります。これがないとReadは速くなるんですが...
[6]
Activateコマンドは電力を多く消費します。R/Wを連続発行するだけのページ機能は低消費電力には有効な手段です。

しかしActivate状態を維持すると、同一バンクで異なるRowアドレスアクセスが来た場合、一旦メモリセルにデータを戻して再度取り直す必要があります。つまり、ペナルティが大きくランダムアクセスには不向きです。

mc2のP.9の右半分の波形を参照してもらうといいのですが、アクセスが同一バンクの同一Rowアドレスを判別してページアクセスする(これは当然ですね)ことと、アクセスがなくてもどこかのタイミングでPre-chargeする機能を組み込めばそこそこ両立できます。

ただし、このページで述べる割り込みアクセスがあれば、即座にページアクセスを中断しなければいけないことに注意して下さい。
[7]
バースト境界に関するアドレスが0でなく、バーストの途中からグルッと回ってアクセスするWrappingモードはDDRに用意されています。これを使う価値ですが、メモリの途中番地のものを優先して処理したい場合に使います。

例えば、CPUが4番地を処理したい場合、4番地が先着しキャッシュに入るとともにショートカットしてCPUに伝えられます。その他の番地は順にキャッシュに格納されます(グルッと回って0番地が最後)。0番地が先着する場合に比べ、1サイクルお得です。
[8]
メモリ接続で述べたように、データFIFOを用いたモジュールがあると、R/Wを含め完全なハンドシェーク型のインターフェイスにすることが可能です。

例えば、このようなモジュールを使います(ワードアクセスからバーストアクセスへの変換も含む)。
[9]

 tRC   Active to Active
       Command Time

 tRCD  Active to Read/Write
       Command Delay

 tRRD  Active one Bank to Active
       other Bank Command Period

 tRP   Pre-charge Command Period

 tRAS  Active to Pre-charge Delay

 tRFC  Auto-refresh to
       Active/Auto-refresh
       Command Time

 tREFI Average Periodic Refresh

 tWTR  Write to Read
       Turn-around Time

 tFAW  Four Active Window

 AL    Additive Latency

 CL    CAS Latency

 CWL   CAS Write Latency

 WR    Write Recovery

 BL    Burst Length = 8

[10]
mc2の宣伝になってしまうのですが、メモリマッピングの柔軟性の実現と、DDRにとって最適なスケジューリングの実施を行えば90%効率までは達成できます。是非トライしてみて下さい。