以下、本発明の実施形態を図面を用いて説明する。信号が伝達される信号線には、信号名と同じ符号を使用する。
図1は、一実施形態におけるシステムSYSの例を示している。例えば、システムSYSは、バスBUSに接続されたマスタコントローラMST、周辺回路PERI、入出力インタフェースI/OおよびメモリコントローラMCNTと、メモリコントローラMCNTによりアクセスされるSDRAMとを有している。なお、半導体メモリの一例としてSDRAMが採用されているが、半導体メモリは、ラップバースト転送機能を有する他の半導体メモリ(SRAMや強誘電体メモリなど)でもよい。ここで、ラップバースト転送は、1つのアクセスコマンドに応答して所定の領域を有するメモリブロックにライトデータを巡回的に書き込む手法である。あるいは、ラップバースト転送は、1つのアクセスコマンドに応答して所定の領域を有するメモリブロックからリードデータを巡回的に読み出す手法である。
マスタコントローラMSTは、システムSYSの全体の動作を制御するCPUやDMAC等である。周辺回路PERIは、例えば、MPEGコントローラ等の画像制御回路である。入出力インタフェースI/Oは、例えば、USBインタフェース回路である。SDRAMは、高レベルのクロックイネーブル信号CKEを受けている間に、クロック信号CLKに同期して動作する。クロックイネーブル信号CKEは、メモリコントローラMCNTが出力しているが、マスタコントローラMSTが出力してもよい。SDRAMは、複数のコマンド端子CMD、複数のアドレス端子AD、データマスク端子DMおよび複数のデータ端子DQを有している。例えば、コマンド端子CMDは、チップセレクト信号、ライトネーブル信号およびアウトプットイネーブル信号をそれぞれ受ける。データマスク端子DMは、バースト転送において、ライトデータをマスクするためのデータマスク信号を受ける。
システムSYSは、例えば、携帯電話やデジタルカメラなどの制御基板の少なくとも一部を含む。例えば、マスタコントローラMST、周辺回路PERI、入出力インタフェースI/O、メモリコントローラMCNTおよびSDRAMは、SoC(System on Chip)として1つのLSIチップ上に形成され、制御基板に搭載される。なお、SDRAMは、単体のチップとして制御基板に搭載されてもよい。システムSYSの最小構成は、マスタコントローラMST、メモリコントローラMCNTおよびSDRAM等の半導体メモリである。
メモリコントローラMCNTは、バッファ部FIFO1、FIFO2および制御部CNT1、CNT2を有している。バッファ部FIFO1は、リードデータバッファRDBF1、ライトデータバッファWDBF1およびアドレス情報バッファAIBF1を有している。バッファ部FIFO2は、リードデータバッファRDBF2、ライトデータバッファWDBF2およびアドレス情報バッファAIBF2を有している。
制御部CNT1は、リードデータ制御部RDCNT1、リードデータ並び替え部RDEXC、リードセレクタSEL1、ライトデータ並び替え部WDEXC、ライトセレクタSEL2、ライトデータ制御部WDCNT1、アドレス情報変換部AICNV、アドレスセレクタSEL3、アドレス情報制御部AICNT1、並べ替え判定部JDGおよびレジスタREGを有している。制御部CNT2は、リードデータ制御部RDCNT2、ライトデータ制御部WDCNT2、アドレス情報制御部AICNT2、ページヒット判定部PHJDGおよびタイミング調整部TADJを有している。
マスタコントローラMSTからのアクセス要求は、アドレス情報ADIとしてアドレス情報バッファAIBF1(FIFO)に順次に保持される。特に限定されないが、アドレス情報ADIは、一般にトランザクションと称され、リード/ライト情報RW(リードアクセス要求/ライトアクセス要求)、アクセス要求アドレスBGN、データ転送サイズDSIZE、バースト長BBLおよびバーストタイプBTYPを含む。データ転送サイズDSIZEは、2のn乗(nは正の整数)に設定される。バースト長BBLは、マスタコントローラMSTとメモリコントローラMCNTの間でのデータ転送数を示す。
バーストタイプBTYPは、インクリメント、ラッピング、フィックスドのいずれかに設定される。インクリメントは、アクセス要求アドレスBGNから順にSDRAMのメモリ領域にアクセスするときに設定される。ラッピングは、データ転送サイズDSIZEで設定されるメモリ領域内を巡回的にアクセスするときに設定される。フィックスドは、ステータスフラグのモニタ等をするために、1つのアドレスを繰り返し読み出すときに設定される。バーストタイプBTYPは、マスタコントローラMSTからメモリコントローラMCNTに設定される情報であり、SDRAMに設定される情報ではない。
並べ替え判定部JDGは、SDRAMを効率的にアクセスするために、ライトデータまたはリードデータを並び替えるか否かを判定し、アクセス要求アドレスBGNを変更するか否かを判定する。並べ替え判定部JDGは、データを並び替え、アドレスを変更するときに論理1(活性化レベル)を示す並び替え信号EXCを出力する。並べ替え判定部JDGは、データを並び替えず、アドレスを変更しないときに論理0(非活性化レベル)を示す並び替え信号EXCを出力する。
並べ替え判定部JDGは、アドレス情報ADI、レジスタREGからのバス幅BW、バースト長BLおよび高速モードHSに応じて、並べ替えの有無を決定する。バースト長BLは、1回のアクセスコマンドに応答してSDRAMに連続して書き込まれるデータ数または1回のアクセスコマンドに応答してSDRAMから連続して読み出されるデータ数である。バス幅BWは、SDRAMのデータ端子DQのビット数である。データの並び替えおよびアドレスの変更により、後述するように、SDRAMに供給するアクセスコマンドの数が最小限になり、データ転送レートが向上する。
例えば、アクセス要求アドレスBGNが1回のバースト転送でアクセスされるSDRAMのメモリ領域(図4に示すメモリブロックMB)の先頭アドレスのとき、データの並び替えおよびアドレスの変更は実施されない。アクセス要求アドレスBGNが先頭アドレスか否かは、SDRAMのバス幅BWとバースト長BLから判断される。具体的には、並べ替え判定部JDGは、バス幅BWとバースト長BLの積からメモリ領域の大きさを求める。これにより、複数のメモリ領域の先頭アドレス、または先頭アドレスの間隔が求められる。そして、並べ替え判定部JDGは、アクセス要求アドレスBGNが先頭アドレスと異なるときに、データの並び替えおよびアドレスの変更を実施するために並び替え信号EXCを論理1に活性化する。
なお、バーストタイプBTYPがインクリメントまたはフィックスドのとき、データの並び替えおよびアドレスの変更は実施されない。このとき、並べ替え判定部JDGは、並び替え信号EXCを論理0に非活性化する。バーストタイプBTYPがラッピングであっても、データ転送サイズが1回のバースト転送でアクセスされるSDRAMのメモリ領域以下のときにはデータの並び替えおよびアドレスの変更は実施されない。
さらに、高速モードHSが設定されているとき、並び替え信号EXCは非活性化され、データの並び替えおよびアドレスの変更は実施されない。高速モードHSは、ライトアクセスにおいて、ライトデータWDTをできるだけ早くSDRAMに書き込みたいときに設定される。すなわち、ライトレイテンシWLを少なくしたいとき、データの並び替えは実施されない。ライトレイテンシWLは、マスタコントローラMSTがライトアクセス要求WR(トランザクション)をメモリコントローラMCNTに出力してから最初のライトデータがSDRAMに出力されるまでのクロックサイクル数である。
あるいは、高速モードHSは、リードアクセスにおいて、リードデータRDTをできるだけ早くバスBUSに出力したいときに設定される。すなわち、リードレイテンシRLを少なくしたいとき、データの並び替えは実施されない。リードレイテンシRLは、バスBUSからメモリコントローラMCNTにアクセス要求(トランザクション)が供給されてからリードデータRDTがメモリコントローラMCNTからバスBUSに出力されるまでクロック数ある。なお、リードデータRDTは、バスBUS上の外部リードバスに出力される。ライトデータWDTは、バスBUS上の外部ライトバスに出力される。この実施形態では、外部リードバスと外部ライトバスは、独立に配線されている。しかし、外部リードバスと外部ライトバスは、共通の信号線としてもよい。
なお、高速モードHSの情報は、レジスタREGに設定するのではなく、バスBUSから並べ替え判定部JDGに直接供給してもよい。さらに、並べ替え判定部JDGは、アクセスされるメモリ領域に応じて高速モードHSを識別してもよい。このとき、データを早く読み出す必要があるメモリ領域がアクセスされるとき、並べ替えを禁止するために並び替え信号EXCが非活性化される。
アドレス情報変換部AICNVは、並び替え信号EXCが活性化されているとき、アドレス情報バッファAIBF1から受けたアクセス要求アドレスBGNの値を変更するアドレス変換部としての機能を含む。アドレスセレクタSEL3は、並び替え信号EXCが非活性化されているときアドレス情報バッファAIBF1からのアクセス要求アドレスBGNを選択して出力する。アドレスセレクタSEL3は、並び替え信号EXCが活性化されているときアドレス情報変換部AICNVからのアクセス要求アドレスBGNを選択して出力する。すなわち、並び替え信号EXCが論理0のとき、アクセス要求アドレスBGNは、アドレス情報変換部AICNVを介さずにアドレス情報制御部AICNT1に転送される。リード/ライト情報RW、データ転送サイズDSIZE、バースト長BBLおよびバーストタイプBTYPは、アドレス情報バッファAIBF1からアドレス情報制御部AICNT1に直接転送される。
アドレス情報制御部AICNT1は、アドレスセレクタSEL3からのアドレス情報(トランザクション)を分割してSDRAMのコマンド体系に従ったアドレス情報(アクセス要求)に変換する。アドレス情報バッファAIBF2は、アドレス情報制御部AICNT1からのアドレス情報を順次に保持する。アドレス情報バッファAIBF2に保持されているアドレス情報は、連続する複数のアクセスコマンド(リードコマンド、ライトコマンド)およびアクセスコマンドに対応するアクセス開始アドレスを含む。
アドレス情報制御部AICNT2は、アドレス情報バッファAIBF2からのアドレス情報を受け、ページヒット判定部PHJDGおよびタイミング調整部TADJからの情報に基づいて、SDRAMに出力するアクセスコマンドおよびアクセス開始アドレスを生成する。ここで、アクセスコマンドとして、リードコマンド、ライトコマンド、アクティブコマンド、プリチャージコマンド、オールバンクプリチャージコマンド等がある。アクセスされるアドレスの範囲が、SDRAMの1回のバースト転送動作でアクセスされる範囲より狭いとき、アドレス情報制御部AICNT2は、アクセスしてはならないメモリ領域に対応してデータマスク信号DMを出力する。
ページヒット判定部PHJDGは、SDRAMがアクティブ状態で、アクセス開始アドレスがアクティブ中のページ内のアドレスに含まれるとき、ページヒットを示す情報をアドレス情報制御部AICNT2に出力する。ここで、SDRAMの1ページは、アクティブコマンドに応答してセンスアンプにラッチされるデータ群である。すなわち、1ページは、アクティブコマンドに応答して選択されるワード線に接続されたメモリセルに保持されるデータ群を示す。
SDRAMがスタンバイ状態(=プリチャージ状態)のとき、ページヒット判定部PHJDGは、ページミスを示す情報をアドレス情報制御部AICNT2に出力する。このとき、アドレス情報制御部AICNT2は、アクセスコマンドCMD(ライトコマンドまたはリードコマンド)を出力する前に、アクセス開始アドレスAD(ロウアドレス)とともにアクティブコマンドCMDを出力する。アクセス開始アドレスが、既にアクティブ状態のページ内のアドレスに含まれないとき、ページヒット判定部PHJDGは、ページミスを示す情報をアドレス情報制御部AICNT2に出力する。このとき、アドレス情報制御部AICNT2は、アクセスコマンドCMD(ライトコマンドまたはリードコマンド)を出力する前に、プリチャージコマンドCMDを出力して、アクティブ状態のページをスタンバイ状態に設定する。この後、アドレス情報制御部AICNT2は、アクセス開始アドレスAD(ロウアドレス)とともにアクティブコマンドCMDを出力し、新たなページをアクティブ状態に設定する。アクセス開始アドレスが既にアクティブ状態のページ内のアドレスに含まれるとき、ページヒット判定部PHJDGは、ページヒットを示す情報をアドレス情報制御部AICNT2に出力する。このとき、アドレス情報制御部AICNT2は、アクセスコマンドCMD(ライトコマンドまたはリードコマンド)およびアクセス開始アドレスAD(コラムアドレス)を出力する。
タイミング調整部TADJは、アドレス情報制御部AICNT2から出力されるアクセスコマンドCMDおよびアクセス開始アドレスADの供給間隔(クロックサイクル数)を調整する。例えば、タイミング調整部TADJは、プリチャージコマンドの後、所定の時間後にアクティブコマンドを出力するために、アドレス情報制御部AICNT2を制御する。
一方、ライトアクセス要求とともにマスタコントローラMSTから供給されるライトデータWDTは、ライトデータバッファWDBF1(FIFO)に順次に保持される。ライトデータ並び替え部WDEXCは、並び替え信号EXCが活性化レベルのとき、ライトデータを並び替える。ライトデータは、SDRAMの1回のバースト転送でアクセスされるメモリ領域にライトデータが纏めて書き込まれるように並び替えられる。
ライトセレクタSEL2は、並び替え信号EXCが活性化されているときにライトデータ並び替え部WDEXCからのライトデータを選択して出力する。並び替え信号EXCが非活性化されているときにライトデータバッファWDBF1からのライトデータを選択して出力する。すなわち、並び替え信号EXCが論理0のとき、ライトデータは、ライトデータ並び替え部WDEXCを介さずにライトデータ制御部WDCNT1に転送される。なお、バースト転送において、バスBUSからのライトデータの供給頻度がSDRAMへのライトデータの書き込み頻度より高いとき、メモリコントローラMCNTは、ビジー信号BSYを出力する。ビジー信号BSYを受けたマスタコントローラMSTは、現在出力中のライトデータを保持し、新たなライトデータの出力を禁止する。
ライトデータ制御部WDCNT1は、ライトセレクタSEL2からのライトデータの形式をSDRAMの仕様(データのビット数など)に合わせて変更し、ライトデータバッファWDBF2に出力する。ライトデータバッファWDBF2(FIFO)は、ライトデータ制御部WDCNT1からのライトデータを順次に保持する。ライトデータ制御部WDCNT2は、ライトデータバッファWDBF2に保持されているライトデータを、SDRAMの仕様(タイミング仕様など)に合わせてデータ端子DQに出力する。すなわち、ライトデータ制御部WDCNT2は、ライトデータ並び替え部WDEXCにより並び替えられたライトデータをSDRAMに出力するメモリ出力部としての機能を有している。
リードデータ制御部RDCNT2は、リードアクセス要求に応答してSDRAMのデータ端子DQから出力されるリードデータをリードデータバッファRDBF2に順次に転送する。リードデータバッファRDBF2(FIFO)は、リードデータを順次に保持し、リードデータ制御部RDCNT1に出力する。リードデータ制御部RDCNT1は、リードデータバッファRDBF2に保持されているリードデータの形式を、バスBUSの仕様(タイミング仕様、データのビット数およびデータの転送数など)に合わせて変更する。
リードデータ並び替え部RDEXCは、並び替え信号EXCが活性化レベルのとき、リードデータを並び替える。リードデータは、1回のバースト転送でアクセスされる領域からリードデータが纏めて読み出されるように並び替えられる。リードセレクタSEL1は、並び替え信号EXCが活性化されているときにリードデータ並び替え部RDEXCからのリードデータを選択して出力する。リードセレクタSEL1は、並び替え信号EXCが非活性化されているときにリードデータ制御部RDCNT1からのリードデータを選択して出力する。すなわち、並び替え信号EXCが論理0のとき、リードデータは、データ並び替え部RDEXCを介さずにリードデータバッファRDBF1に転送される。リードデータバッファRDBF1(FIFO)は、リードセレクタSEL1からのリードデータを順次に保持し、リードデータRDTとしてバスBUSに出力する。リードデータバッファRDBF1は、リードデータ並び替え部RDEXCにより並び替えられたリードデータをバスBUSに出力するバス出力部としての機能を有している。
図2は、図1に示したリードデータ並び替え部RDEXCおよびライトデータ並び替え部WDEXCの例を示している。リードデータ並び替え部RDEXCは、SDRAMからのリードデータの一部を順次に保持するリードバッファ回路(FIFO)およびリード並び替えセレクタSEL4を有している。リードバッファ回路(FIFO)は、バースト転送によりSDRAMから順次に読み出されたリードデータのうち、後からバスBUSに出力すべきリードデータを一時的に保持する。具体的には、リードバッファ回路(FIFO)は、リードホールド信号RHOLDが論理1に活性化されているときに供給されるリードデータのみを保持する。
リード並び替えセレクタSEL4は、リードホールド信号RHOLDが論理0に非活性化されているとき、リードデータ制御部RDCNT1からのリードデータを選択して出力する。リード並び替えセレクタSEL4は、リードホールド信号RHOLDが論理1に活性化されているとき、リードバッファ回路(FIFO)からのリードデータを選択して出力する。例えば、リードホールド信号RHOLDは、アドレス情報制御部AICNT1から出力される。リードデータの一部をリードバッファ回路(FIFO)に迂回させてることで、迂回させるリードデータの読み出しに必要なクロックサイクル数を増加させるだけで、リードデータを並べ替えることができる。すなわち、リードデータを少ないクロックサイクル数で並び替えることができる。
ライトデータ並び替え部WDEXCは、バスBUSからのライトデータを順次に保持するライトバッファ回路(FIFO)およびライト並び替えセレクタSEL5を有している。ライトバッファ回路(FIFO)は、バースト転送によりバスBUSから順次に受けるライトデータのうち、後からにSDRAMに書き込むべきライトデータを一時的に保持する。具体的には、ライトバッファ回路(FIFO)は、ライトホールド信号WHOLDが論理1に活性化されているときに供給されるライトデータのみを保持する。
ライト並び替えセレクタSEL5は、ライトホールド信号WHOLDが論理0に非活性化されているとき、ライトデータバッファWDBF1からのライトデータを選択して出力する。ライト並び替えセレクタSEL5は、ライトホールド信号WHOLDが論理1に活性化されているとき、ライトバッファ回路(FIFO)からのライトデータを選択して出力する。例えば、ライトホールド信号WHOLDは、アドレス情報制御部AICNT1から出力される。ライトデータの一部をライトバッファ回路(FIFO)に迂回させてライトデータを並び替えることで、迂回させるライトデータの書き込みに必要なクロックサイクル数を増加させるだけで、ライトデータを並べ替えることができる。すなわち、ライトデータを少ないクロックサイクル数で並び替えることができる。
図3は、図1に示したメモリコントローラMCNTの動作の例を示している。まず、ステップS10において、メモリコントローラMCNTは、マスタコントローラMSTからのアクセス要求(トランザクション)がライトアクセス要求WRかリードアクセス要求RDかを判定する。メモリコントローラMCNTは、ライトアクセス要求WRを受けたとき、ステップS20において、アクセス要求アドレスBGNが、ラップバースト転送によってアクセスされるメモリブロックMBの先頭アドレスか否かを判定する。アクセス要求アドレスBGNが先頭アドレスのとき、処理はステップS28に移行する。アクセス要求アドレスBGNが先頭アドレスと異なるとき、処理はステップS22に移行する。
ステップS22において、メモリコントローラMCNTは、高速モードHSが設定されているか否かを判定する。高速モードHSが設定されているとき、ライトレイテンシWLを少なくするために、処理はステップS28に移行する。高速モードHSが設定されていないとき、ライトレイテンシWLが重視されないと判断され、ライトデータの並び替えをするために、処理はステップS24に移行する。
ステップS24において、メモリコントローラMCNTは、アドレス情報変換部AICNVを用いて、SDRAMに供給するアドレスAD(アクセス開始アドレス)を、ラップバースト転送によって2番目にアクセスされるメモリブロックMBの先頭アドレスに設定する。ステップS26において、メモリコントローラMCNTは、ライトデータ並び替え部WDEXCを用いて、ライトデータWDTを並び替える。
次に、ステップS28において、メモリコントローラMCNTは、アドレス情報制御部AICNT1を用いて、SDRAMに供給するライトコマンドWRおよびライトアドレスADを生成する。ステップS30において、メモリコントローラMCNTは、アドレス情報制御部AICNT2およびライトデータ制御部WDCNT2を用いて、SDRAMにライトコマンドWR、ライトアドレスADおよびライトデータWDTを出力する。
一方、リードアクセス要求RDがメモリコントローラMCNTに供給されたとき、処理は、ステップS40に移行する。ステップS40において、メモリコントローラMCNTは、アクセス要求アドレスBGNがラップバースト転送によってアクセスされるSDRAMのメモリブロックMBの先頭アドレスか否かを判定する。アクセス要求アドレスBGNが先頭アドレスのとき、処理はステップS54に移行する。アクセス要求アドレスBGNが先頭アドレスと異なるとき、処理はステップS42に移行する。
ステップS42において、メモリコントローラMCNTは、高速モードHSが設定されているか否かを判定する。高速モードHSが設定されているとき、リードレイテンシRLを少なくするために、処理はステップS54に移行する。高速モードHSが設定されていないとき、リードレイテンシRLが重視されないと判断され、リードデータの並び替えをするために、処理はステップS44に移行する。
ステップS44において、メモリコントローラMCNTは、アドレス情報変換部AICNVを用いて、SDRAMに供給するアドレスAD(アクセス開始アドレス)を、ラップバースト転送によって最初にアクセスされるメモリブロックMBの先頭アドレスに設定する。ステップS46において、メモリコントローラMCNTは、アドレス情報制御部AICNT1を用いて、SDRAMに供給するリードコマンドRDおよびリードアドレスADを生成する。ステップS48において、メモリコントローラMCNTは、アドレス情報制御部AICNT2を用いて、SDRAMにリードコマンドRDおよびリードアドレスADを出力する。次に、ステップS50において、メモリコントローラMCNTは、リードデータ並び替え部RDEXCを用いて、SDRAMから出力されるリードデータRDTを並び替える。
一方、ステップS54では、ステップS46と同様に、メモリコントローラMCNTは、アドレス情報制御部AICNT1を用いて、SDRAMに供給するリードコマンドRDおよびリードアドレスADを生成する。ステップS56では、ステップS48と同様に、メモリコントローラMCNTは、アドレス情報制御部AICNT2を用いて、SDRAMにリードコマンドRDおよびリードアドレスADを出力する。そして、ステップ52において、メモリコントローラMCNTは、リードデータバッファRDBF1を用いて、リードデータRDTをバスBUSに出力する。
図4は、図1に示したSDRAMにアクセスする例を示している。各メモリブロックMBは、SDRAMの1回のバースト転送によりアクセスされるアクセス単位を示している。予め、マスタコントローラMSTは、メモリコントローラMCNTのバーストタイプBTYPとしてラッピングを指定している。このため、1回のアクセス要求に応答して、データ転送サイズDSIZEに対応するSDRAMのメモリ領域が常にアクセスされる。図中の網掛けは、アクセスされるデータを示している。枠内の数字は、メモリコントローラMCNTによるメモリブロックMBのアクセス順序を示している。
この例では、アクセス要求(トランザクション)毎に転送されるデータ転送サイズDSIZEは、SDRAMの2回のラップバースト転送によってアクセスされる2つのメモリブロックMBの大きさに等しい。バスBUSからメモリコントローラMCNTに供給されるアクセス要求アドレスBGNは、メモリブロックMBnに含まれ、かつメモリブロックMBnの先頭アドレスと異なる。換言すれば、アクセス要求アドレスBGNは、メモリブロックMBnの先頭アドレスと異なる。
ライトアクセス要求WR(ライトコマンド)に応答するライトアクセス動作おいて、ライトデータの並び替えが実施されるとき、メモリコントローラMCNTは、メモリブロックMBn+1にアクセスした後にメモリブロックMBnにアクセスする。すなわち、メモリコントローラMCNTは、アクセス要求アドレスBGNを含むメモリブロックMBnの次にアクセスされるべきメモリブロックMBn+1の先頭アドレスをアクセス開始アドレスADに設定する。これにより、アクセス要求アドレスBGNがメモリブロックMBnの先頭アドレスと異なるときにも、SDRAMへの2回のライトアクセス要求WRによって、データ転送サイズDSIZEに対応するメモリブロックMBn、MBn+1にライトデータを書き込みできる。
リードアクセス要求RD(リードコマンド)に応答するリードアクセス動作おいて、リードデータの並び替えが実施されるとき、メモリコントローラMCNTは、メモリブロックMBnにアクセスした後にメモリブロックMBn+1にアクセスする。すなわち、アクセス要求アドレスBGNを含むメモリブロックMBnの先頭アドレスをアクセス開始アドレスADに設定する。これにより、アクセス要求アドレスBGNがメモリブロックMBnの先頭アドレスと異なるときにも、SDRAMへの2回のリードアクセス要求RDによって、データ転送サイズDSIZEに対応するメモリブロックMBn、MBn+1からリードデータを読み出しできる。
これに対して、ライトアクセス動作またはリードアクセス動作において、データの並び替えが実施されないとき、メモリコントローラMCNTは、メモリブロックMBn、MBn+1を順次にアクセスした後、メモリブロックMBnを再びアクセスする。これにより、アクセス要求アドレスBGNから最終アドレスLSTまでのメモリ領域が巡回的にアクセスされる。この場合、3回のライトアクセス要求WRまたは3回のリードアクセス要求RDが必要になる。
図5は、図1に示したSDRAMにアクセスする別の例を示している。図4と同じ動作については、詳細な説明は省略する。この例では、アクセス要求アドレスBGNは、メモリブロックMBn+1に含まれ、かつメモリブロックMBn+1の先頭アドレスと異なる。
ライトアクセス要求WRに応答するライトアクセス動作おいて、ライトデータの並び替えが実施されるとき、メモリコントローラMCNTは、図4と同様に、アクセス要求アドレスBGNを含むメモリブロックMBn+1の次にアクセスされるべきメモリブロックMBnを最初にアクセスする。これにより、アクセス要求アドレスBGNがメモリブロックMBn+1の先頭アドレスと異なるときにも、SDRAMへの2回のライトアクセス要求WRによって、SDRAMにライトデータを書き込みできる。
リードアクセス要求RDに応答するリードアクセス動作おいて、リードデータの並び替えが実施されるとき、メモリコントローラMCNTは、図4と同様に、アクセス要求アドレスBGNを含むメモリブロックMBn+1を最初にアクセスする。これにより、アクセス要求アドレスBGNがメモリブロックMBn+1の先頭アドレスと異なるときにも、SDRAMへの2回のリードアクセス要求RDによって、SDRAMからリードデータを読み出しできる。
これに対して、ライトアクセス動作またはリードアクセス動作において、データの並び替えが実施されないとき、メモリコントローラMCNTは、メモリブロックMBn+1、MBnを順次にアクセスした後、メモリブロックMBn+1を再びアクセスする。これにより、アクセス要求アドレスBGNから最終アドレスLSTまでのメモリ領域が巡回的にアクセスされる。この場合、3回のライトアクセス要求WRまたは3回のリードアクセス要求RDが必要になる。
図6は、図1に示したSDRAMにアクセスする別の例を示している。図4と同じ動作については、詳細な説明は省略する。この例では、アクセス要求毎に転送されるデータ転送サイズDSIZEは、SDRAMの4回のラップバースト転送によってアクセスされる4つのメモリブロックMBに等しい。アクセス要求アドレスBGNは、メモリブロックMBn+1に含まれ、かつメモリブロックMBn+1の先頭アドレスと異なる。バーストタイプBTYPとしてラッピングが指定されているとき、1回のアクセス要求に応答して、データ転送サイズDSIZEに対応するSDRAMのメモリ領域がアクセスされる。
ライトアクセス要求WRに応答するライトアクセス動作おいて、ライトデータの並び替えが実施されるとき、メモリコントローラMCNTは、図4と同様に、アクセス要求アドレスBGNを含むメモリブロックMBn+1の次のメモリブロックMBn+2を最初にアクセスする。これにより、アクセス要求アドレスBGNがメモリブロックMBn+1の先頭アドレスと異なるときにも、SDRAMへの4回のライトアクセス要求WRによって、SDRAMにライトデータを書き込みできる。
リードアクセス要求RDに応答するリードアクセス動作おいて、リードデータの並び替えが実施されるとき、メモリコントローラMCNTは、図4と同様に、アクセス要求アドレスBGNを含むメモリブロックMBn+1を最初にアクセスする。これにより、アクセス要求アドレスBGNがメモリブロックMBn+1の先頭アドレスと異なるときにも、SDRAMへの4回のリードアクセス要求RDによって、SDRAMからリードデータを読み出しできる。
これに対して、ライトアクセス動作またはリードアクセス動作において、データの並び替えが実施されないとき、メモリコントローラMCNTは、メモリブロックMBn+1、MBn+2、MBn+3、MBnを順次にアクセスした後、メモリブロックMBn+1を再びアクセスする。これにより、アクセス要求アドレスBGNから最終アドレスLSTまでのメモリ領域が巡回的にアクセスされる。この場合、5回のライトアクセス要求WRまたは5回のリードアクセス要求RDが必要になる。
図7は、図1に示したSDRAMのメモリマップの例を示している。アドレスを示す数字は、16進数である。例えば、SDRAMのデータ端子DQは32ビットである。SDRAMのモードレジスタ等に設定されるバースト長BLが”8”のとき、1回のバースト転送でアクセスされるメモリブロックMBは、256ビットである。このとき、1つのメモリブロックMBは、”00”から”1F”までのアドレス空間を有している。
バスBUSとメモリコントローラMCNTの間でアクセス要求毎に転送されるデータ転送サイズDSIZEは、2つのメモリブロックMBの大きさに等しい。例えば、バスBUS上のデータ線が64ビットである。バスBUS上のデータのバースト長(以下、バスバースト長BBLとも称する)は”8”に設定されている。
図8は、図1に示したSDRAMにライトアクセスする例を示している。図8では、メモリコントローラMCNTは、32ビットのデータ端子DQ0−31を有するDDR(Double Data Rate)タイプのSDRAMにアクセスする。SDRAMのバースト長BLは、予め”8”に設定されている。この例では、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、図7に示したように、メモリブロックMBの先頭アドレスと異なる。このため、並べ替え判定部JDGは、マスタコントローラMSTからのライトアクセス要求WRに応答して、ライトデータの並び替えをするために並び替え信号EXCを活性化する。ライトアクセス要求WR(トランザクション)は、アドレス情報ADIとして示される(図8(a、b))。この例では、リード/ライト情報RWはライトアクセス要求WR、バーストタイプBTYPはラッピングWP、アクセス要求アドレスBGNは”10”または”58”、データ転送サイズDSIZEは64ビット、バスバースト長BBLは”8”である。
最初のライトアクセス要求WRに対応して、マスタコントローラMSTは、2番目のクロックサイクルから64ビットのライトデータWDT0−63を8回続けてバスBUSに出力する(図8(c))。この例では、説明を分かりやすくするために、各ライトデータWDT0−63は、下位の32ビット(例えば、D0L)と上位の32ビット(例えば、D0H)に分けて記載している。ライトデータを示す枠内の数字は、バスBUSに供給される順序を示している。ライトデータを示す枠の上と枠の下に括弧で示した数字は、ライトデータが書き込まれるSDRAMのアドレスを示している。ここでは、説明を分かりやすくするために、マスタコントローラMSTからバスBUSに供給されるアドレスは、SDRAMのアドレスと同じとしている。
アドレス情報変換部AICNVは、図3のステップS24に示したように、アクセス開始アドレスADを次のメモリブロックMBの先頭(20)に設定する(図8(d))。ライトデータD0L、D0H、D1L、D1Hがライトデータ並び替え部WDEXCに供給される2クロックサイクルの間、ライトホールド信号WHOLDは活性化される。このため、ライトデータ並び替え部WDEXCは、1番目と2番目に供給されるライトデータD0L、D0H、D1L、D1Hをライトバッファ回路(FIFO)に保持する。このように、ライトバッファ回路(FIFO)は、アクセス要求アドレスBGNから、アクセス要求アドレスBGNを含むメモリブロックMBの最終アドレスまでに対応するライトデータを順次に保持する。
ライトデータ並び替え部WDEXCのライト並べ替えセレクタSEL5は、ライトデータD2L、D2HからD7H、D7Lまでを、ライトセレクタSEL2を介してライトデータ制御部WDCNT1に順次に出力する(図8(e))。ライトデータ並び替え部WDEXCのライト並べ替えセレクタSEL5は、ライトデータD7H、D7Lに続いて、ライトバッファ回路(FIFO)に保持しているライトデータD0L、D0H、D1L、D1Hを、ライトセレクタSEL2を介してライトデータ制御部WDCNT1に順次に出力する(図8(f))。すなわち、図3のステップS26に示したように、ライトデータの並び替えが実施される。このように、ライト並べ替えセレクタSEL5は、アクセス要求アドレスBGNを含むメモリブロックMBの次のメモリブロックMBの先頭アドレスから、アクセス要求アドレスBGNの1つ前までに対応するライトデータを順次に選択して出力し、この後、ライトバッファ回路(FIFO)に保持されているライトデータを順次に選択して出力する。
次に、アドレス情報制御部AICNT2は、ライトコマンドWRとともに、変換されたアドレスAD(20)をSDRAMに出力する(図8(g))。バンクアドレスBAは、例えば、”0”である。なお、SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。ライトデータ制御部WDCNT2は、ライトコマンドWRから2クロック後に、ライトデータD2L、D2H、...、D5L、D5HをSDRAMに順次に出力する(図8(h))。ライトデータは、クロック信号CLKの立ち上がりエッジと立ち下がりエッジに同期して、SDRAMに書き込まれる。この例では、SDRAMへのライトレイテンシWLは”7”である。
この後、次のライトコマンドWRとともにアドレスAD(00)がSDRAMが供給される(図8(i))。ライトデータD6L、D6H、...、D0L、D0H、D1L、D1HがSDRAMに順次に供給され、SDRAMに書き込まれる(図8(j))。ここで、バスBUS上に最初に供給されたライトデータD0Lは、ライトアクセス要求WR(トランザクション)から14クロック後、すなわち、15番目のクロック信号CLKに同期してSDRAMに書き込まれる。
次のライトアクセス要求WRに対応して、マスタコントローラMSTは、10番目のクロックサイクルから64ビットのライトデータWDT0−63を8回続けてバスBUSに出力する(図8(k))。この際、前のライトサイクルにおけるデータの並び替えにより、ライトデータ並び替え部WDEXCからのライトデータの出力が本来より2クロックサイクル遅れる。このため、メモリコントローラMCNTは、例えば、11番目のクロック信号CLKの立ち下がりエッジに同期してビジー信号BSYを1クロックサイクル出力する。マスタコントローラMSTは、出力中のライトデータD1L、D1Hを、ビジー信号BSYを受けた次のクロックサイクルも出力し続ける(図8(l))。これにより、ライトデータが並び替えられるときにも、メモリコントローラMCNT内でライトデータが衝突することを防止でき、メモリコントローラMCNTが誤動作することを防止できる。
2番目のアドレス情報ADIによるライトサイクルでは、アドレス情報変換部AICNVは、アクセス開始アドレスADを次のメモリブロックMBの先頭(60)に設定する(図8(m))。ライトデータ並び替え部WDEXCは、最初に供給されるライトデータD0L、D0Hをライトバッファ回路(FIFO)に保持する。ライトデータ並び替え部WDEXCは、ライトデータD1L、D1HからD7H、D7Lまでをライトデータ制御部WDCNT1に順次に出力する(図8(n))。ライトデータ並び替え部WDEXCは、ライトデータD7H、D7Lに続いて、ライトバッファ回路(FIFO)に保持しているライトデータD0L、D0Hをライトデータ制御部WDCNT1に出力する(図8(o))。メモリコントローラMCNTは、最初のライトサイクルと同様に、ライトコマンドWRおよび並び替えられたライトデータをSDRAMに供給し、SDRAMにライトアクセスする。
例えば、マスタコントローラMSTは、次のライトアクセス要求(トランザクション)を、15番目のクロック信号CLKに同期して供給できる。後述する図9との比較により分かるように、ライトデータを並び替える場合、マスタコントローラMSTからメモリコントローラMCNTへのライトアクセス要求の頻度を向上できる。
以上により、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、マスタコントローラMSTからの各ライトアクセス要求WRに対応する512ビットのライトデータを2つのライトコマンドWRによりSDRAMに書き込むことができる。これにより、SDRAMのデータバスDQの使用効率を向上できる。さらに、メモリコントローラMCNTからマスタコントローラMSTへのビジー信号BSYの出力頻度を低くできるため、バスBUS上のデータ線の使用効率を向上できる。この結果、SDRAMのアクセス効率を向上でき、システムSYSの性能を向上できる。
図9は、図1に示したSDRAMにライトアクセスする別の例を示している。図8と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図8と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、図8と同じである。すなわち、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。但し、図9では、図1に示したレジスタREGに高速モードHSが設定されており、並び替え信号EXCは非活性化されている。このため、ライトデータの並び替えは実施されない。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
ライトデータの並び替えを実施しないとき、メモリコントローラMCNTは、1つのメモリブロックMBを、2つのアドレスAD(10)、(00)を用いて、2回に分けてアクセスする(図9(a、b))。あるいは、メモリコントローラMCNTは、1つのメモリブロックMBを、2つのアドレスAD(58)、(40)を用いて、2回に分けてアクセスする(図9(c、d))。SDRAMは、ライトアクセス毎に、バースト長BLに対応する8個のライトデータを受ける。ここで、バスBUS上に最初に供給されたライトデータD0Lは、ライトアクセス要求WR(トランザクション)から5クロック後に(すなわち、7番目のクロック信号CLKに同期して)SDRAMに書き込まれる。すなわち、ライトレイテンシWLは”5”である。これは、図8に示したライトレイテンシWL(=7)より少ない。
アドレスAD(10)によるバースト転送では、アドレスAD(00、04、08、0C)に対応する後半の4個のライトデータは、マスタコントローラMSTから受けていない。このため、メモリコントローラMCNTは、後半のライトデータの書き込みを禁止するために、データマスク信号DMをSDRAMに出力する(図9(e))。ライトデータが書き込まれないデータマスク期間DMに対応して、メモリコントローラMCNTは、マスタコントローラMSTにビジー信号BSYを出力する。
マスタコントローラMSTは、ビジー信号BSYを受けている間、出力中のライトデータ(例えば、D2L、D2H)を出力し続ける(図9(f))。他のライトサイクルにおいても、1つのメモリブロックMBが2回に分けてアクセスされるとき、データマスク期間DMが発生する。これにより、ビジー信号BSYの出力頻度が高くなり、バスBUS上のデータ線が高い頻度で占有される。SDRAMのデータバスDQの使用効率は低下し、バスBUS上のデータ線の使用効率は低下する。
例えば、マスタコントローラMSTは、次のライトアクセス要求(トランザクション)を、21番目のクロックサイクル以降でなければ供給できない。すなわち、ライトデータを並び替えない場合、マスタコントローラMSTからメモリコントローラMCNTへのライトアクセス要求の頻度が下がる。この結果、SDRAMのアクセス効率は低下する。
なお、高速モードHSでは、バスBUS上に最初に供給されたライトデータD0Lを、SDRAMに早く書き込みできる。このため、最初のライトデータを早くSDRAMに書き込む必要があるとき、メモリコントローラMCNTは高速モードHSに設定される。
図10は、図1に示したSDRAMにライトアクセスする別の例を示している。図8と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図8と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、アクセス要求アドレスBGN(00、40)がメモリブロックMBの先頭を示すことを除き、図8と同じである。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
アクセス要求アドレスBGN(00、40)がメモリブロックMBの先頭を示すため、図10では、並べ替え判定部JDGは、ライトデータの並び替えが不要であることを示す並び替え信号EXC(論理0)を出力する。したがって、図8と同様に、メモリコントローラMCNTは、マスタコントローラMSTからのライトアクセス要求WR毎に、2つのライトコマンドWRをSDRAMに供給し、SDRAMにライトアクセスする。換言すれば、上述した図8では、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、最小のサイクル時間でSDRAMにライトアクセスできる。
図11は、図1に示したSDRAMにリードアクセスする例を示している。図8と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図8と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、リード/ライト情報RWがリードアクセスRDであることを除き、図8と同じである。マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。このため、並べ替え判定部JDGは、マスタコントローラMSTからのリードアクセス要求RDに応答して、並び替えをするために並び替え信号EXCを活性化する。なお、SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
アドレス情報変換部AICNVは、図3のステップS44に示したように、アクセス開始アドレスADをメモリブロックMBの先頭(00、20)に設定する。メモリコントローラMCNTは、リードコマンドRDとともに、アドレス信号AD(00)、AD(20)をSDRAMに順次に出力する(図11(a、b))。メモリコントローラMCNTは、SDRAMから出力されるリードデータD0L、D0H、...、D7L、D7Hを順次に受ける(図11(c、d))。
リードデータD0L、D0H、D1L、D1Hがリードデータ並び替え部RDEXCに供給される2クロックサイクルの間、リードホールド信号RHOLDは活性化される。このため、リードデータ並び替え部RDEXCは、1番目と2番目に受けたリードデータD0L、D0H、D1L、D1Hをリードバッファ回路(FIFO)に保持する。このように、リードバッファ回路(FIFO)は、アクセス要求アドレスBGNを含むメモリブロックMBの先頭アドレスからアクセス要求アドレスBGNの1つ前までに対応するSDRAMからのリードデータを順次に保持する。
リードデータ並び替え部RDEXCのリード並べ替えセレクタSEL4は、リードデータD2L、D2HからD7H、D7Lまでを、リードセレクタSEL1を介してリードデータバッファRDBF1に順次に出力する(図11(e))。リードデータ並び替え部RDEXCのリード並べ替えセレクタSEL4は、リードデータD7H、D7Lに続いて、リードバッファ回路(FIFO)に保持しているリードデータD0L、D0H、D1L、D1Hを、リードセレクタSEL1を介してリードデータバッファRDBF1に順次に出力する(図11(f))。すなわち、図3のステップS50に示したように、リードデータの並び替えが実施される。このように、リード並べ替えセレクタSEL4は、アクセス要求アドレスBGNから、アクセス要求アドレスBGNを含むメモリブロックMBの先頭アドレスの1つ前までに対応するSDRAMからのリードデータを順次に選択して出力した後、リードバッファ回路(FIFO)に保持されているリードデータを順次に選択して出力する。
次に、アドレス情報変換部AICNVは、アクセス要求アドレスBGN(58)を受け、アクセス開始アドレスADをメモリブロックMBの先頭(40、60)に設定する。この後、メモリコントローラMCNTからSDRAMに2つのリードコマンドRDが供給され、SDRAMからリードデータD0L、D0H、...、D7L、D7Hが順次に出力される(図11(g、h))。リードデータ並び替え部RDEXCは、1番目から3番目に受けたリードデータD0L、D0H、D1L、D1H、D2L、D2Hをリードバッファ回路(FIFO)に保持する。リードデータ並び替え部RDEXCは、リードデータD3L、D3HからD7H、D7LまでをリードデータバッファRDBF1に順次に出力する(図11(i))。
リードバッファ回路(FIFO)に保持されるリードデータ量が多いとき、リードデータ並び替え部RDEXCは、最初にバスBUSに出力すべきリードデータD3L、D3Hをリードデータ制御部RDCNT1から遅く受ける。このとき、メモリコントローラMCNTは、ビジー信号BSYをバスBUSに出力し、マスタコントローラMSTにリードデータの受信を待たせる(図11(j))。リードデータ並び替え部RDEXCは、リードデータD7H、D7Lに続いて、リードバッファ回路(FIFO)に保持しているリードデータD0L、D0H、D1L、D1H、D2L、D2HをリードデータバッファRDBF1に順次に出力する(図11(k))。図10に示したリードアクセスにおいて、バスBUS上のリードレイテンシRLは、”12”と”13”である。バスBUS上のリードレイテンシRLは、マスタコントローラMSTがリードアクセス要求RD(トランザクション)をメモリコントローラMCNTに出力してから最初のリードデータがバスBUSに出力されるまでのクロックサイクル数である。
例えば、マスタコントローラMSTは、次のリードアクセス要求(トランザクション)を、17番目のクロック信号CLKに同期して供給できる。後述する図12との比較により分かるように、リードデータを並び替える場合、マスタコントローラMSTからメモリコントローラMCNTへのリードアクセス要求の頻度を向上できる。
以上により、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、マスタコントローラMSTからの各リードアクセス要求RDに対応する512ビットのリードデータを2つのリードコマンドRDによりSDRAMから読み出すことができる。これにより、SDRAMのデータバスDQの使用効率を向上できる。リードアクセスの途中にバスBUS上のデータ線が空く期間を最小限にできるため、バスBUS上のデータ線の使用効率を向上できる。この結果、SDRAMのアクセス効率を向上でき、システムSYSの性能を向上できる。
図12は、図1に示したSDRAMにリードアクセスする別の例を示している。図8および図11と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図8と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、図11と同じである。マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。但し、図12では、図1に示したレジスタREGに高速モードHSが設定されており、並び替え信号EXCは非活性化されている。このため、リードデータの並び替えは実施されない。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
リードデータの並び替えを実施しないとき、メモリコントローラMCNTは、図9と同様に、1つのメモリブロックMBを、2つのアドレスAD(10)、(00)を用いて、2回に分けてアクセスする(図12(a、b))。あるいは、メモリコントローラMCNTは、1つのメモリブロックMBを、2つのアドレスAD(58)、(40)を用いて、2回に分けてアクセスする(図12(c、d))。
図中に網掛けで示したリードデータDQ0−31は、マスタコントローラMSTに転送すべきデータである。一方、9番目および10番目のクロック信号CLKに同期してSDRAMから出力されるリードデータD2L、D2H、D3L、D3Hは、このタイミングではマスタコントローラMSTに転送する必要はない(図12(e))。このため、メモリコントローラMCNTは、リードデータD2L、D2H、D3L、D3Hを受け取らない(図12(f))。メモリコントローラMCNTは、リードデータをバスBUSに出力できない期間、ビジー信号BSYを出力する。マスタコントローラMSTは、ビジー信号BSYを受けている間、次のリードデータの受信を待つ(図12(g))。
リードデータ制御部RDCNT1は、次のリードデータD4L、D4Hを、リードデータD1L、D2Hの受信から2クロックサイクル後に受け取る(図12(h))。これ以降も、アクセス要求アドレスBGNがメモリブロックMBの途中にあるリードアクセスでは、リードデータは間欠的に読み出される。図12に示したリードアクセスにおいて、バスBUS上のリードレイテンシRLは、”10”と”14”である。最初のリードアクセスのリードレイテンシRLは、図11に示した最初のリードアクセスのリードレイテンシRLより”2”だけ少ない。このように、リードデータの並び替えをしない高速モードHSでは、マスタコントローラMSTは、最初のリードデータを早く受信できる。換言すれば、最初のリードデータを早く受信する必要があるとき、メモリコントローラMCNTは高速モードHSに設定される。
例えば、マスタコントローラMSTは、次のリードアクセス要求(トランザクション)を、25番目のクロックサイクル以降でなければ供給できない。すなわち、リードデータを並び替えない場合、マスタコントローラMSTからメモリコントローラMCNTへのリードアクセス要求の頻度が下がる。この結果、SDRAMのアクセス効率は低下する。
図13は、図1に示したSDRAMにリードアクセスする別の例を示している。図8および図11と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図8と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、アクセス要求アドレスBGN(00、40)がメモリブロックMBの先頭を示すことを除き、図10と同じである。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
アクセス要求アドレスBGN(00、40)がメモリブロックMBの先頭を示すため、図13では、並べ替え判定部JDGは、リードデータの並び替えが不要であることを示す並び替え信号EXC(論理0)を出力する。したがって、図8と同様に、メモリコントローラMCNTは、マスタコントローラMSTからのリードアクセス要求RD毎に、2つのリードコマンドRDをSDRAMに供給することで、リードデータをSDRAMから読み出しできる。換言すれば、上述した図10では、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、最小のサイクル時間でSDRAMにリードアクセスできる。
図14は、図1に示したSDRAMにライトアクセスする別の例を示している。図8と同じ動作については、詳細な説明は省略する。図14では、メモリコントローラMCNTは、64ビットのデータ端子DQ0−63を有するSDR(Single Data Rate)タイプのSDRAMにアクセスする。SDRAMのバースト長BLは、予め”4”に設定されている。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、図8と同じである。すなわち、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
図8と同様に、アドレス情報変換部AICNVは、アクセス開始アドレスADを次のメモリブロックMBの先頭(20)に設定する(図14(a))。ライトデータ並び替え部WDEXCは、1番目と2番目に供給されるライトデータD0、D1をライトバッファ回路(FIFO)に保持し、他のライトデータD2からD7までをライトデータ制御部WDCNT1に順次に出力する(図14(b))。ライトレイテンシWLは、図8と同じである。ライトデータ並び替え部WDEXCは、ライトデータD7に続いて、ライトバッファ回路(FIFO)に保持しているライトデータD0、D1をライトデータ制御部WDCNT1に順次に出力する(図14(c))。すなわち、図3のステップS26に示したように、ライトデータの並び替えが実施される。SDRタイプのSDRAMにライトアクセスするときにも、ライトデータを並べ替えることで、データバスDQの使用効率およびバスBUS上のデータ線の使用効率を向上できる。
図15は、図1に示したSDRAMにライトアクセスする別の例を示している。図9および図14と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図14と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、図14と同じである。すなわち、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。但し、図15では、図1に示したレジスタREGに高速モードHSが設定されており、並び替え信号EXCは非活性化されている。このため、ライトデータの並び替えは実施されない。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
図15に示したタイミングチャートは、クロック信号CLKの立ち上がりエッジのみに同期して64ビットのライトデータがSDRAMに書き込まれることを除き、図9と同じである。ライトレイテンシWLは、図9と同じである。すなわち、アクセス要求アドレスBGNがメモリブロックMBの途中にあるとき、データマスク期間DMが発生し、ビジー信号BSYの出力頻度が高くなる。これにより、SDRAMのデータバスDQの使用効率は低下し、バスBUS上のデータ線の使用効率は低下する。この結果、SDRAMのアクセス効率は低下し、システムSYSの性能は低下する。一方、ライトレイテンシWLを少なくできるため、最初のライトデータをSDRAMに早く書き込みできる。
図16は、図1に示したSDRAMにリードアクセスする別の例を示している。図11および図14と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図14と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、リード/ライト情報RWがリードアクセス要求RDであることを除き、図14と同じである。すなわち、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの途中にあり、リードデータは並び替えられる。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
図16に示したタイミングチャートは、クロック信号CLKの立ち上がりエッジのみに同期して64ビットのリードデータがSDRAMから読み出されることを除き、図11と同じである。バスBUS上のリードレイテンシRLも、図11と同じである。SDRタイプのSDRAMにリードアクセスするときにも、リードデータを並べ替えることで、データバスDQの使用効率およびバスBUS上のデータ線の使用効率を向上できる。
図17は、図1に示したSDRAMにリードアクセスする別の例を示している。図12および図14と同じ動作については、詳細な説明は省略する。メモリコントローラMCNTがアクセスするSDRAMは、図14と同じである。マスタコントローラMSTからメモリコントローラMCNTに供給されるアドレス情報ADIは、図14と同じである。すなわち、マスタコントローラMSTからバスBUSに供給されるアクセス要求アドレスBGN(10、58;16進数)は、メモリブロックMBの先頭アドレスと異なる。但し、図17では、図1に示したレジスタREGに高速モードHSが設定されており、並び替え信号EXCは非活性化されている。このため、リードデータの並び替えは実施されない。SDRAMは、予めアクティブコマンドを受け、アクティブ状態(ページヒット状態)であるとする。
図17に示したタイミングチャートは、クロック信号CLKの立ち上がりエッジのみに同期して64ビットのリードデータがSDRAMから読み出されることを除き、図12と同じである。バスBUS上のリードレイテンシRLも、図12と同じである。SDRタイプのSDRAMにおいても、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるとき、メモリコントローラMCNTを高速モードHSに設定することにより、最初のリードアクセスのリードレイテンシRLを少なくできる。
以上、この実施形態では、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、アクセス要求アドレスBGNを含むメモリブロックMBを1回リードアクセスするだけで、アクセス要求アドレスBGNに対応するリードデータを順にバスBUSに出力できる。また、アクセス要求アドレスBGNがメモリブロックMBの先頭アドレスと異なるときにも、アクセス要求アドレスBGNを含むメモリブロックMBを1回ライトアクセスするだけで、アクセス要求アドレスBGNに対応して順次に受けるライトデータをSDRAMに書き込みできる。これにより、SDRAMに供給するリードコマンドRDおよびライトコマンドWRの数を減らすことができ、半導体メモリのアクセス効率を向上できる。
ライトアクセスおよびリードアクセスにおけるSDRAMのデータバスDQの使用頻度を下げることができる。すなわち、SDRAMのデータバスDQの使用効率を向上できる。さらに、メモリコントローラMCNTからマスタコントローラMSTへのビジー信号BSYの出力頻度を低くできる。これにより、ライトアクセス中にバスBUS上のデータ線の使用頻度を下げることができる。リードアクセス中にBUS上のデータ線にリードデータが出力されない無駄なクロックサイクルを減らすことができる。この結果、バスの使用効率を向上できるため、SDRAMのアクセス効率を向上でき、システムSYSの性能を向上できる。
高速モードHSが設定されているときに、データの並び替えを強制的に禁止することで、リードレイテンシRLまたはライトレイテンシWLを優先して、SDRAMにリードアクセスまたはライトアクセスできる。
図18は、別の実施形態におけるシステムSYSの例を示している。図1と同じ要素については、詳細な説明は省略する。なお、半導体メモリの一例としてSDRAMが採用されているが、半導体メモリは、ラップバースト転送機能を有する他の半導体メモリ(SRAMや強誘電体メモリなど)でもよい。
システムSYSは、バスBUSに接続された2つのマスタコントローラMST1、MST2を有している。バスBUSを介してメモリコントローラMCNTに供給されるアドレス情報ADIは、アクセス要求(トランザクション)を発行するマスタコントローラMST1−2を示す情報を含んでいる。メモリコントローラMCNTは、マスタコントローラMST1、MCT2毎に高速モードHS1、HS2を保持するレジスタREGを有している。並べ替え判定部JDGは、アドレス情報ADIにマスタコントローラMST1のIDが含まれるとき、高速モードHS1に応じて並び替え信号EXCを出力する。並べ替え判定部JDGは、アドレス情報ADIにマスタコントローラMST2のIDが含まれるとき、高速モードHS2に応じて並び替え信号EXCを出力する。システムSYSのその他の構成は、図1と同じである。
なお、高速モードHS1−2の情報は、レジスタREGに設定するのではなく、バスBUSから並べ替え判定部JDGに直接供給してもよい。さらに、並べ替え判定部JDGは、アクセスされるメモリ領域に応じて高速モードHS1−2を識別してもよい。このとき、データを早く読み出す必要があるメモリ領域がアクセスされるとき、並べ替えを禁止するために並び替え信号EXCが非活性化される。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、システムSYSが複数のマスタコントローラMST1−2を有するときにも、マスタコントローラMST1−2毎に高速モードHS1−2を判定し、SDRAMにアクセスできる。
図19は、別の実施形態におけるシステムSYSの例を示している。図1と同じ要素については、詳細な説明は省略する。なお、半導体メモリの一例としてSDRAMが採用されているが、半導体メモリは、ラップバースト転送機能を有する他の半導体メモリ(SRAMや強誘電体メモリなど)でもよい。
システムSYSは、バスBUSに接続された2つのマスタコントローラMST1、MST2を有している。マスタコントローラMST1、MST2は、メモリコントローラMCNTの独立のポートにアドレス情報ADI1、ADI2をそれぞれ出力する。メモリコントローラMCNTは、図中に破線で囲ったアドレス情報バッファAIBF1、アドレス情報変換部AICNV、アドレスセレクタSEL3、アドレス情報制御部AICNT1、並べ替え判定部JDGおよびレジスタREGを、マスタコントローラMST1−2毎に有している。これにより、高速モードHSを、マスタコントローラMST1−2毎に設定できる。
なお、高速モードHSの情報は、レジスタREGに設定するのではなく、アドレス情報ADI1、ADI2に含めてバスBUSから並べ替え判定部JDGに直接供給してもよい。さらに、並べ替え判定部JDGは、アクセスされるメモリ領域に応じて高速モードHSを識別してもよい。このとき、データを早く読み出す必要があるメモリ領域がアクセスされるとき、並べ替えを禁止するために並び替え信号EXCが非活性化される。以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
なお、上述した実施形態では、並べ替え判定部JDGは、高速モードHSの情報に応じて、データの並び替えおよびアドレスの変更の要否を決定する例について述べた。しかし、例えば、並べ替え判定部JDGは、高速モードHSの情報を受けることなく、アドレス情報ADI、レジスタREGからのバス幅BWおよびバースト長BLに応じて、データの並び替えおよびアドレスの変更の要否を決定してもよい。
図18に示した実施形態では、複数の高速モードHS1−2の情報に応じて、複数のマスタコントローラMST1−2毎にデータの並び替えおよびアドレスの変更の要否を決定する例について述べた。図19に示した実施形態では、マスタコントローラMST1−2毎に供給される複数のアドレス情報ADI1−2に応じて、複数のマスタコントローラMST1−2毎にデータの並び替えおよびアドレスの変更の要否を決定する例について述べた。しかし、例えば、メモリコントローラMCNTは、マスタコントローラMST1−2に固有のアクセスパターンを検出し、検出結果に基づいてデータの並び替えおよびアドレスの変更の要否を決定してもよい。あるいは、マスタコントローラMST1−2毎にアクセスされる領域が異なるとき、アクセスアドレス(例えば、アクセス要求アドレスBGN)に基づいてデータの並び替えおよびアドレスの変更の要否を決定してもよい。
上述した実施形態に関して、さらに以下の付記を開示する。
(付記1)
半導体メモリのアクセス単位である少なくとも1つのメモリブロックをラップアクセスするためのアクセス要求アドレスが、前記メモリブロックの先頭アドレスと異なるときに並び替え信号を活性化する並べ替え判定部と、
前記並び替え信号が活性化されたときに、前記メモリブロックの先頭アドレスをアクセス開始アドレスに設定するアドレス変換部と、
前記並び替え信号が活性化されたときに、前記アクセス開始アドレスに応じて前記半導体メモリから順次に読み出されるリードデータを、前記アクセス要求アドレスに対応するリードデータを先頭にして並び替えるリードデータ並び替え部と、
並び替えられたリードデータを外部リードバスに出力するバス出力部と
を備えていることを特徴とするメモリコントローラ。
(付記2)
前記並べ替え判定部は、並び替えられたリードデータを前記外部リードバスに早く出力する高速モード中に、前記並び替え信号を非活性化すること
を特徴とする付記1記載のメモリコントローラ。
(付記3)
前記並び替え信号が活性化されたときに前記リードデータ並び替え部からのリードデータを選択し、前記並び替え信号が非活性化されたときに前記半導体メモリからのリードデータを選択するリードセレクタを備えていること
を特徴とする付記1または付記2記載のメモリコントローラ。
(付記4)
前記アドレス変換部は、複数の前記メモリブロックが連続してリードアクセスされ、前記アクセス要求アドレスが前記先頭アドレスと異なるときに、前記アクセス要求アドレスを含むメモリブロックの先頭アドレスを前記アクセス開始アドレスに設定すること
を特徴とする付記1ないし付記3のいずれか1項記載のメモリコントローラ。
(付記5)
前記リードデータ並び替え部は、
前記半導体メモリからのリードデータを保持するリードバッファ回路と、
前記半導体メモリからのリードデータまたは前記リードバッファ回路に保持されたリードデータを選択的に出力するリード並べ替えセレクタと
を備えていることを特徴とする付記4記載のメモリコントローラ。
(付記6)
前記リードバッファ回路は、前記アクセス要求アドレスを含むメモリブロックの前記先頭アドレスから前記アクセス要求アドレスの1つ前までに対応する前記半導体メモリからのリードデータを順次に保持し、
前記リード並べ替えセレクタは、前記アクセス要求アドレスから、前記アクセス要求アドレスを含むメモリブロックの先頭アドレスの1つ前までに対応する前記半導体メモリからのリードデータを順次に選択した後、前記リードバッファ回路に保持されているリードデータを順次に選択すること
を特徴とする付記5記載のメモリコントローラ。
(付記7)
前記並び替え信号が活性化されたときに、前記アクセス要求アドレスに対応して外部ライトバスから順次に供給されるライトデータを、前記アクセス開始アドレスに対応するライトデータを先頭にして並び替えるライトデータ並び替え部と、
並び替えられたライトデータを前記半導体メモリに出力するメモリ出力部と
備えていること
を特徴とする付記1ないし付記6のいずれか1項記載のメモリコントローラ。
(付記8)
前記並べ替え判定部は、ライトデータを前記半導体メモリに早く書き込む高速モード中に、前記並び替え信号を非活性化すること
を特徴とする付記7記載のメモリコントローラ。
(付記9)
前記並び替え信号が活性化されたときに前記ライトデータ並び替え部からのライトデータを選択し、前記並び替え信号が非活性化されたときに前記外部ライトバスからのライトデータを選択するライトセレクタを備えていること
を特徴とする付記7または付記8記載のメモリコントローラ。
(付記10)
前記アドレス変換部は、複数の前記メモリブロックが連続してライトアクセスされ、前記アクセス要求アドレスが前記先頭アドレスと異なるときに、前記アクセス要求アドレスを含むメモリブロックの次のメモリブロックの先頭アドレスを前記アクセス開始アドレスに設定すること
を特徴とする付記7ないし付記9のいずれか1項記載のメモリコントローラ。
(付記11)
前記ライトデータ並び替え部は、
前記外部ライトバスからのライトデータを保持可能なライトバッファ回路と、
前記外部ライトバスからのライトデータまたは前記ライトバッファ回路に保持されたライトデータを選択的に出力するライト並べ替えセレクタと
を備えていることを特徴とする付記10記載のメモリコントローラ。
(付記12)
前記ライトバッファ回路は、前記アクセス要求アドレスから、前記アクセス要求アドレスを含むメモリブロックの最終アドレスまでに対応するライトデータを順次に保持し、
前記ライト並べ替えセレクタは、前記アクセス要求アドレスを含むメモリブロックの次のメモリブロックの先頭アドレスから、前記アクセス要求アドレスの1つ前までに対応するライトデータを順次に選択した後、前記ライトバッファ回路に保持されているライトデータを順次に選択すること
を特徴とする付記11記載のメモリコントローラ。
(付記13)
前記並べ替え判定部は、前記半導体メモリのデータ端子のバス幅およびバースト長から前記メモリブロックの先頭アドレスを求め、前記アクセス要求アドレスが求めた先頭アドレスと異なるときに、前記並び替え信号を活性化すること
を特徴とする付記1ないし付記12のいずれか1項記載のメモリコントローラ。
(付記14)
付記1ないし付記13のいずれか1項記載のメモリコントローラと、
前記メモリコントローラを介して前記半導体メモリにアクセスするマスタコントローラと
を備えていることを特徴とするシステム。
(付記15)
半導体メモリのアクセス単位である少なくとも1つのメモリブロックをラップアクセスするためのアクセス要求アドレスが、前記メモリブロックの先頭アドレスと異なるときに、前記メモリブロックの先頭アドレスをアクセス開始アドレスに設定し、
前記アクセス開始アドレスに応じて前記半導体メモリから順次に読み出されるリードデータを、前記アクセス要求アドレスに対応するリードデータを先頭にして並び替え、
並び替えたリードデータを外部リードバスに出力すること
を特徴とする半導体メモリのアクセス制御方法。
(付記16)
複数の前記メモリブロックが連続してリードアクセスされ、前記アクセス要求アドレスが前記先頭アドレスと異なるときに、前記アクセス要求アドレスを含むメモリブロックの先頭アドレスを前記アクセス開始アドレスに設定すること
を特徴とする付記15記載の半導体メモリのアクセス制御方法。
(付記17)
前記アクセス要求アドレスに対応して順次に受けるライトデータを、前記アクセス開始アドレスに対応するライトデータを先頭にして並び替え、
並び替えたデータを前記半導体メモリに出力すること
を特徴とする付記15または付記16記載の半導体メモリのアクセス制御方法。
(付記18)
複数の前記メモリブロックが連続してライトアクセスされ、前記アクセス要求アドレスが前記先頭アドレスと異なるときに、前記アクセス要求アドレスを含むメモリブロックの次のメモリブロックの先頭アドレスを前記アクセス開始アドレスに設定すること
を特徴とする付記17記載の半導体メモリのアクセス制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。