(57)【特許請求の範囲】
【請求項１】
レイテンシの異なる複数のメモリデバイスへのリードアクセス又はライトアクセスの種別のコマンドを制御するメモリアクセス制御装置であって、
前記コマンドを発行することで前記複数のメモリデバイスにアクセスするアクセス手段と、
先に発行した第１のコマンドの種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドの種別と該第２のコマンドが発行されるメモリデバイスの情報とを保持する保持手段と、
前記第１のコマンドのコマンド種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドのコマンド種別と該第２のコマンドを発行するメモリデバイスの情報と、に基づいて前記アクセス手段によって前記第２のコマンドを発行するまでのコマンド発行間隔を設定する設定手段と、
前記設定されたコマンド発行間隔に従って前記第２のコマンドの発行タイミングを制御する制御手段と、
を有することを特徴とするメモリアクセス制御装置。
【請求項２】
前記設定手段は、前記第１のコマンド及び第２のコマンドのレイテンシ情報、前記複数のメモリデバイスへの配線遅延の組み合わせに応じて、保持されている複数のコマンド間隔値からコマンド間隔値を選択して前記コマンド発行間隔として設定することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項３】
前記設定手段は、少なくとも前記第１のコマンド、前記第１のコマンド及び前記第２のコマンドのレイテンシ情報、前記複数のメモリデバイスへの配線遅延から、コマンド間隔値を算出し、前記コマンド発行間隔として設定することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項４】
前記制御手段は、第１のコマンドによりアクセスしたメモリデバイスと第２のコマンドによりアクセスするメモリデバイスのレイテンシに応じて、前記アクセス手段により第２のコマンドを発行するタイミングを制御することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項５】
前記制御手段は、第１のコマンドによりアクセスしたメモリデバイスと第２のコマンドによりアクセスするメモリデバイスの配線遅延に応じて、前記アクセス手段により第２のコマンドを発行するタイミングを制御することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項６】
前記複数のメモリデバイスは共通のデータ信号線で接続され、当該共通のデータ信号線に対して前記アクセス手段がコマンドに基づくドライブを制御することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項７】
前記メモリデバイス毎に、前記第１のコマンドがリードアクセスかライトアクセスか、前記第２のコマンドがリードアクセスかライトアクセスか、に応じた、第２のコマンドを発行する間隔を保持する間隔保持手段を更に有することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項８】
リードアクセス又はライトアクセスの種別のコマンドを発行することで複数のメモリデバイスにアクセスするアクセス手段と、先に発行した第１のコマンドの種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドの種別と該第２のコマンドが発行されるメモリデバイスの情報とを保持する保持手段と、を備え、レイテンシの異なる前記複数のメモリデバイスへのアクセスを制御するメモリアクセス制御装置にて実行されるメモリアクセス制御方法であって、
前記第１のコマンドのコマンド種別と当該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドのコマンド種別と該第２のコマンドを発行するメモリデバイスの情報と、に基づいて前記アクセス手段によって前記第２のコマンドを発行するまでのコマンド発行間隔を設定する設定工程と、
前記設定されたコマンド発行間隔に従って前記第２のコマンドの発行タイミングを制御する制御工程と、
を有することを特徴とするメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイテンシの異なる複数のメモリデバイスへのアクセスを制御するメモリアクセス制御技術に関する。
【背景技術】
【０００２】
従来、大規模集積回路（ＬＳＩ）とメモリデバイス間の配線遅延はメモリの１クロックサイクルを超えないよう考慮して基板設計を行っている。しかし、動作周波数が高くなるにつれ、基板設計で配線遅延がメモリの１クロックサイクルを超えないように抑えることは難しく、メモリデバイス毎にアクセスレイテンシが異なる場合が生じている。
【０００３】
そこで、配線遅延を考慮して複数のメモリデバイスとのデータ受け渡しが確実に行えるメモリアクセス制御回路が必要となっている。
【０００４】
図１は、従来例におけるメモリアクセス制御回路の一例を示すブロック図である。図１に示すように、メモリアクセス制御回路１００にはメモリデバイス１９１、１９２が接続され、メモリアクセス制御回路１００はメモリデバイス１９１、１９２へのアクセスを制御する。尚、図１に示す例では、メモリデバイスとしてＤＤＲタイプのメモリデバイスを想定している。
【０００５】
図１において、１０１はチップセレクト信号であり、メモリアクセス制御回路１００がメモリデバイス１９１にアクセスする際にアサートされる。１０２はチップセレクト信号であり、メモリアクセス制御回路１００がメモリデバイス１９２にアクセスする際にアサートされる。
【０００６】
１０３はクロック信号であり、メモリアクセス制御回路１００からメモリデバイス１９１、１９２へ供給される。そして、メモリデバイス１９１、１９２はクロック信号１０３に同期して動作する。１０４はコマンド信号であり、メモリアクセス制御回路１００からメモリデバイス１９１、１９２へ発行される。ここで、メモリデバイス１９１、１９２は対応するチップセレクト信号１０１、１０２がアサートされた際にコマンド信号１０４を受け取り、コマンドの内容に応じた処理を行う。
【０００７】
１０５は双方向のデータストローブ信号である。メモリアクセス制御回路１００、メモリデバイス１９１、１９２はデータ送信に伴い、データストローブ信号１０５をドライブする。１０６は双方向のデータ信号である。書き込み動作時にはメモリアクセス制御回路１００が所定のタイミングでデータ信号１０６をドライブし、読み出し動作時にはメモリデバイス１９１又はメモリデバイス１９２が所定のタイミングでデータ信号１０６をドライブする。
【０００８】
メモリアクセス制御回路１００において、１１０は先行コマンド情報保持回路であり、直前に発行したコマンドの情報を保持する。内部に、直前に発行したコマンドの読み出し又は書き込み方向を保持する先行アクセス方向バッファ１１１を備えている。
【０００９】
１２０はコマンド情報保持回路であり、次に発行するコマンドの情報を保持する。内部に、次に発行するコマンドの読み出し又は書き込み方向を保持するアクセス方向バッファ１２１を備えている。
【００１０】
１３０はコマンド間隔情報保持回路であり、先行コマンド発行から次コマンド発行までの最小コマンド発行間隔の情報を保持する。内部には、コマンド間隔バッファ１３１ａ〜１３１ｄが備えられ、先行コマンドの読み出し又は書き込み方向と次コマンドの読み出し又は書き込み方向の全組み合わせにおける最小コマンド発行間隔が保持される。つまり、図１に示す例では、４組のコマンド間隔が保持される。
【００１１】
１４０はレイテンシ情報保持回路であり、メモリアクセス制御回路１００に接続されるメモリデバイスの設定に応じたメモリデバイスのリードレイテンシ、ライトレイテンシを保持する。
【００１２】
１５０はコマンド発行制御回路であり、メモリデバイス１９１、１９２へのコマンド発行を制御する。コマンド発行間隔選択回路１５１は、上述した先行アクセス方向バッファ１１１とアクセス方向バッファ１２１に応じてコマンド間隔バッファ１３１ａ〜１３１ｄから該当するコマンド間隔を選択する。次に、コマンド発行タイミング制御回路１５２は、コマンド発行間隔選択回路１５１が選択したコマンド間隔だけ次コマンドを発行させるタイミングを遅らせる。
【００１３】
１６０はデータ発行制御回路であり、コマンド発行制御回路１５０がコマンドを発行してからレイテンシ情報保持回路１４０に保持された書き込みレイテンシだけ経過した後、データ信号１０６をドライブする。１７０はデータ受信制御回路であり、メモリデバイス１９１、１９２から読み出されたデータを受信する。
【００１４】
１８０はメモリアクセスインターフェースであり、外部回路からのメモリアクセス要求を受け、コマンド発行制御回路１５０にコマンドを送信し、アクセス方向バッファ１２１に読み出し又は書き込み情報を設定する。
【００１５】
ここで、コマンド間隔バッファ１３１ａ〜１３１ｄに設定されるべきコマンド発行間隔の算出方法について説明する。その算出方法は、以下の（１）〜（４）の通りである。
（１）書き込みコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝データ転送長÷２＋最低データ間隔
（２）書き込みコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイスライトレイテンシ＋データ転送長÷２＋最大アクセスデバイス配線遅延−次アクセスデバイスリードレイテンシ−最小アクセスデバイス配線遅延
（３）読み出しコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝最大アクセスデバイス配線遅延×２＋先行アクセスデバイスリードレイテンシ＋データ転送長÷２＋最低データ間隔−次アクセスデバイスライトレイテンシ
（４）読み出しコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝最大アクセスデバイス配線遅延×２＋データ転送長÷２＋最低データ間隔−最小アクセスデバイス配線遅延×２
上述の算出方法で算出されるコマンド発行間隔を満たさないでコマンドを発行すると、メモリアクセス制御回路１００とメモリデバイス１９１、１９２との間で、データ信号のドライブが衝突する危険性がある。
【００１６】
尚、メモリアクセス制御回路１００とメモリデバイス１９１、１９２との間で読み出し又は書き込みのアクセスは共に４ビート転送を扱うものとする。
【００１７】
また、メモリアクセス制御回路１００とメモリデバイス１９１との間の配線遅延は0.5クロックサイクル、メモリアクセス制御回路１００とメモリデバイス１９２との間の配線遅延は1.5クロックサイクルとする。また、レイテンシ情報保持回路１４０に保持される読み出しレイテンシは３クロックサイクル、書き込みレイテンシは２クロックサイクルとする。
【００１８】
上述のように、アクセス長、配線遅延、レイテンシからメモリアクセス制御回路１００とメモリデバイス１９１、１９２によるデータ信号１０６のドライブが衝突しないように最小コマンド間隔値を算出し、コマンド間隔バッファ１３１ａ〜ｄに設定する。
【００１９】
従来例で「データ転送長÷２」は４ビートのメモリアクセスのみを扱うので２クロックサイクルである。また、「最低データ間隔」は連続するアクセスのデータがデータ信号上で連続しないための間隔で通常、１クロックサイクルである。
【００２０】
図２は、従来例において、上述したコマンド発行間隔算出方法で算出したコマンド発行間隔を示す図である。即ち、コマンド間隔バッファ１３１ａ〜１３１ｄには、図２に示す間隔（クロックサイクル）が設定され、その間隔以上のクロックサイクルを空ける必要がある。
【００２１】
ここで、メモリアクセス制御回路１００がメモリデバイス１９２へ読み出しコマンドを発行後、メモリデバイス１９１へ書き込みコマンドを発行した場合の動作（動作例１）を、図３を用いて説明する。
【００２２】
図３は、従来例におけるコマンド発行時の動作例１を示すタイミングチャートである。図３において、メモリアクセス制御回路１００と記された波形は、メモリアクセス制御回路１００の信号端子をサンプリングした波形である。ここで、CLK、CS0、CS1、CMDはメモリアクセス制御回路１００の出力信号であり、DQS、DQはメモリアクセス制御回路１００の入出力信号である。
【００２３】
また、メモリデバイス１９１、メモリデバイス１９２は、それぞれのメモリデバイスの信号端子をサンプリングした波形である。ここで、CLK_0、CS_0、CMD_0及びCLK_1、CS_1、CMD_1は各メモリデバイスの入力信号であり、DQS_0、DQ_0及びDQS_1、DQ_1は各メモリデバイスの入出力信号である。
【００２４】
まず、メモリアクセスインターフェース１８０によってアクセス方向バッファ１２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔選択回路１５１は、アクセス方向バッファ１２１が設定されると、先行アクセス方向バッファ１１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路１５２に知らせる。
【００２５】
一方、コマンド発行タイミング制御回路１５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路１５０はチップセレクト信号１０２をアサートし、読み出しコマンドを発行する（Ｔ３）。
【００２６】
コマンド発行制御回路１５０はコマンドを発行すると同時に、アクセス方向バッファ１２１の読み出しである情報を先行アクセス方向バッファ１１１に設定する。これと同時に、メモリアクセスインターフェース１８０によってアクセス方向バッファ１２１に次のコマンドが書き込みである旨の情報が設定される。
【００２７】
コマンド発行制御回路１５０が発行した読み出しコマンドは1.5クロックサイクル遅延してメモリデバイス１９２に受信される（Ｂ４）。メモリデバイス１９２は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号１０６をドライブする（Ｂ７）。メモリデバイス１９２がドライブしたデータは1.5クロックサイクル遅延してデータ受信制御回路１７０に受信される（Ｔ１０〜Ｔ１２）。
【００２８】
先行コマンドが読み出しで次のコマンドが書き込みであるので、コマンド発行間隔選択回路１５１はコマンド間隔バッファ１３１ｃを選択する。これにより、コマンド発行可能となるまで、７クロックサイクルであることをコマンド発行タイミング制御回路１５２に知らせる。
【００２９】
コマンド発行タイミング制御回路１５２は、コマンド発行まで７クロックサイクルであるという情報を受け取り、先行コマンドの発行（Ｔ３）を起点に７クロックサイクル後にコマンド発行許可を出す（Ｔ１０）。
【００３０】
これにより、コマンド発行制御回路１５０はチップセレクト信号１０１をアサートして書き込みコマンドを発行する（Ｔ１０）。コマンド発行制御回路１５０はコマンドを発行すると同時に、アクセス方向バッファ１２１の情報を先行アクセス方向バッファ１１１に設定する。
【００３１】
コマンド発行制御回路１５０が発行した書き込みコマンドは0.5クロックサイクル遅延してメモリデバイス１９１に受信される（Ａ１１）。データ発行制御回路１６０はコマンド発行制御回路１５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路１４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号１０６をドライブする（Ｔ１３）。データ発行制御回路１６０が発行したデータは0.5クロックサイクル遅延してメモリデバイス１９１に受信される（Ａ１３〜Ａ１５）。
【００３２】
次に、メモリアクセス制御回路１００がメモリデバイス１９１へ読み出しコマンドを発行後、メモリデバイス１９２へ書き込みコマンドを発行した場合の動作（動作例２）を、図４を用いて説明する。
【００３３】
図４は、従来例におけるコマンド発行時の動作例２を示すタイミングチャートである。尚、図４に示す波形のサンプリングポイントは図３と同様である。
【００３４】
まず、メモリアクセスインターフェース１８０によってアクセス方向バッファ１２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔選択回路１５１は、アクセス方向バッファ１２１が設定されると、先行アクセス方向バッファ１１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路１５２に知らせる。
【００３５】
一方、コマンド発行タイミング制御回路１５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路１５０はチップセレクト信号１０１をアサートし、読み出しコマンドを発行する（Ｔ３）。
【００３６】
コマンド発行制御回路１５０はコマンドを発行すると同時に、アクセス方向バッファ１２１の読み出しである情報を先行アクセス方向バッファ１１１に設定する。これと同時に、メモリアクセスインターフェース１８０によってアクセス方向バッファ１２１に次のコマンドが書き込みである旨の情報が設定される。
【００３７】
コマンド発行制御回路１５０が発行した読み出しコマンドは0.5クロックサイクル遅延してメモリデバイス１９１に受信される（Ａ４）。メモリデバイス１９１は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号１０６をドライブする（Ａ７）。メモリデバイス１９２がドライブしたデータは0.5クロックサイクル遅延してデータ受信制御回路１７０に受信される（Ｔ８〜Ｔ１０）。
【００３８】
先行コマンドが読み出しで次のコマンドが書き込みであるので、コマンド発行間隔選択回路１５１はコマンド間隔バッファ１３１ｃを選択する。これにより、コマンド発行可能となるまで、７クロックサイクルであることをコマンド発行タイミング制御回路１５２に知らせる。
【００３９】
コマンド発行タイミング制御回路１５２は、コマンド発行まで７クロックサイクルであるという情報を受け取り、先行コマンドの発行（Ｔ３）を起点に７クロックサイクル後にコマンド発行許可を出す（Ｔ１０）。
【００４０】
これにより、コマンド発行制御回路１５０はチップセレクト信号１０２をアサートし、書き込みコマンドを発行する（Ｔ１０）。コマンド発行制御回路１５０はコマンドを発行すると同時に、アクセス方向バッファ１２１の情報を先行アクセス方向バッファ１１１に設定する。
【００４１】
コマンド発行制御回路１５０が発行した書き込みコマンドは1.5クロックサイクル遅延してメモリデバイス１９２に受信される（Ｂ１１）。データ発行制御回路１６０はコマンド発行制御回路１５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路１４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号１０６をドライブする（Ｔ１３）。データ発行制御回路１６０が発行したデータは1.5クロックサイクル遅延してメモリデバイス１９２に受信される（Ｂ１３〜Ｂ１５）。
【００４２】
以上、読み出しをしてから書き込みをする場合のみ詳細に動作を説明したが、書き込みをしてから書き込み、書き込みをしてから読み出し、読み出しをしてから読み出しの場合も同様である。即ち、コマンド間隔バッファ１３１ａ〜１３１ｄの情報から該当するものがコマンド発行間隔選択回路１５１によって選択され、選択された情報に応じてコマンド発行タイミング制御回路１５２が発行許可を出す。そして、コマンド発行制御回路１５０がコマンドを発行することで、データ信号１０６のドライブが衝突することなく、データ転送を行う。
【特許文献１】特開2003-173290号公報
【発明の開示】
【発明が解決しようとする課題】
【００４３】
しかしながら、先行コマンドの読み出し／書き込み情報と次コマンドの読み出し／書き込み情報でコマンド発行間隔を制御すると、アクセスレイテンシが最大となるメモリデバイスへのアクセスに合わせてコマンド発行間隔をあける必要がある。
【００４４】
これにより、アクセスレイテンシが小さなメモリデバイスへのアクセスの際にも、必要以上にコマンド発行間隔があくことで、データ信号がドライブされない状態ができてしまう。例えば、上述した従来例によると、図４において、メモリアクセス制御回路１００が発行する書き込みコマンドを更に２クロックサイクル前（Ｔ８）に発行してもデータ信号１０６のドライブが衝突することなくメモリアクセスができる。
【００４５】
従って、本来データ転送が可能なサイクルでも、不要な転送間隔があいてしまうため、メモリバスの使用効率が低下してしまう、という問題が生じていた。
【００４６】
本発明は、メモリバスの使用効率を向上させることを目的とする。
【課題を解決するための手段】
【００４７】
本発明は、レイテンシの異なる複数のメモリデバイスへのリードアクセス又はライトアクセスの種別のコマンドを制御するメモリアクセス制御装置であって、
前記コマンドを発行することで前記複数のメモリデバイスにアクセスするアクセス手段と、
先に発行した第１のコマンドの種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドの種別と該第２のコマンドが発行されるメモリデバイスの情報とを保持する保持手段と、
前記第１のコマンドのコマンド種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドのコマンド種別と該第２のコマンドを発行するメモリデバイスの情報と、に基づいて前記アクセス手段によって前記第２のコマンドを発行するまでのコマンド発行間隔を設定する設定手段と、
前記設定されたコマンド発行間隔に従って前記第２のコマンドの発行タイミングを制御する制御手段と、を有することを特徴とする。
【００４８】
また、本発明は、リードアクセス又はライトアクセスの種別のコマンドを発行することで複数のメモリデバイスにアクセスするアクセス手段と、先に発行した第１のコマンドの種別と該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドの種別と該第２のコマンドが発行されるメモリデバイスの情報とを保持する保持手段と、を備え、レイテンシの異なる前記複数のメモリデバイスへのアクセスを制御するメモリアクセス制御装置にて実行されるメモリアクセス制御方法であって、
前記第１のコマンドのコマンド種別と当該第１のコマンドが発行されたメモリデバイスの情報と、次に発行する第２のコマンドのコマンド種別と該第２のコマンドを発行するメモリデバイスの情報と、に基づいて前記アクセス手段によって前記第２のコマンドを発行するまでのコマンド発行間隔を設定する設定工程と、
前記設定されたコマンド発行間隔に従って前記第２のコマンドの発行タイミングを制御する制御工程と、を有することを特徴とする。
【発明の効果】
【００４９】
本発明によれば、メモリアクセス制御装置がデータ信号をドライブするタイミングと、メモリデバイスがデータ信号をドライブするタイミングが衝突することなく、メモリバスの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００５０】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００５１】
［第１の実施形態］
図５は、第１の実施形態におけるメモリアクセス制御装置の一例を示すブロック図である。図１に示すように、メモリアクセス制御装置５００には２つのメモリデバイス５９１、５９２が接続され、メモリアクセス制御装置５００はメモリデバイス５９１、５９２へのアクセスを制御する。
【００５２】
第１の実施形態でも、メモリデバイスとしてＤＤＲタイプのメモリデバイスを想定している。また、メモリアクセス制御装置５００とメモリデバイス５９１、５９２の間の信号５０１〜５０６は、図１を用いて説明した信号１０１〜１０６と同じであり、その説明は省略する。
【００５３】
メモリアクセス制御装置５００において、５１０は先行コマンド情報保持回路であり、直前に発行したコマンドの情報を保持する。内部に、直前に発行したコマンドの読み出し又は書き込み方向を保持する先行アクセス方向バッファ５１１と直前に発行したコマンドのアクセスしたデバイス情報を保持する先行アクセスデバイスバッファ５１２とを備えている。
【００５４】
５２０はコマンド情報保持回路であり、次に発行するコマンドの情報を保持する。内部に、次に発行するコマンドの読み出し又は書き込み方向を保持するアクセス方向バッファ５２１と次に発行するコマンドのアクセスするデバイス情報を保持するアクセスデバイスバッファ５２２とを備えている。
【００５５】
５３０はコマンド間隔情報保持回路であり、先行コマンド発行から次コマンド発行までの最小コマンド発行間隔の情報を保持する。内部には、コマンド間隔バッファ５３１ａ〜５３１Ｎが備えられ、先行コマンドのアクセスデバイス及び読み出し又は書き込み方向と、次コマンドのアクセスデバイス及び読み出し又は書き込み方向の全組み合わせにおける最小コマンド発行間隔が保持される。図５に示す例では、メモリアクセス制御装置５００には２つのメモリデバイス５９１、５９２が接続されているので、１６組のコマンド間隔が保持される。上述の全組み合わせ数Ｎは、２×（デバイス数）×２×（デバイス数）で求められる。
【００５６】
５４０はレイテンシ情報保持回路であり、メモリアクセス制御装置５００に接続されるメモリデバイスの設定に応じたメモリデバイスのリードレイテンシ、ライトレイテンシを保持する。
【００５７】
５５０はコマンド発行制御回路であり、メモリデバイス５９１、５９２へのコマンド発行を制御する。コマンド発行制御回路５５０は、ＣＰＵ（ＭＰＵ）、ＲＯＭ、周辺回路などで構成されても良い。コマンド発行間隔選択回路５５１は、先行コマンド情報保持回路５１０とコマンド情報保持回路５２０に保持された情報に応じてコマンド間隔バッファ５３１ａ〜５３１Ｎから該当するコマンド間隔を選択する。次に、コマンド発行タイミング制御回路５５２は、コマンド発行間隔選択回路５５１が選択したコマンド間隔だけ次コマンドを発行させるタイミングを遅らせる。
【００５８】
５６０はデータ発行制御回路であり、コマンド発行制御回路５５０がコマンドを発行してからレイテンシ情報保持回路５４０に保持された書き込みレイテンシだけ経過した後、データ信号５０６をドライブする。５７０はデータ受信制御回路であり、メモリデバイス５９１、５９２から読み出されたデータを受信する。
【００５９】
５８０はメモリアクセスインターフェースであり、外部回路からのメモリアクセス要求を受け、コマンド発行制御回路５５０にコマンドを送信し、アクセス方向バッファ５２１に読み出し又は書き込み情報を設定する。
【００６０】
ここで、コマンド間隔バッファ５３１ａ〜５３１Ｎに設定されるべきコマンド発行間隔の算出方法について説明する。その算出方法は、以下の（１）〜（４）の通りである。
（１）書き込みコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝データ転送長÷２＋最低データ間隔
（２）書き込みコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイスライトレイテンシ＋データ転送長÷２＋先行アクセスデバイス配線遅延−次アクセスデバイスリードレイテンシ−次アクセスデバイス配線遅延
（３）読み出しコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイス配線遅延×２＋先行アクセスデバイスリードレイテンシ＋データ転送長÷２＋最低データ間隔−次アクセスデバイスライトレイテンシ
（４）読み出しコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイス配線遅延×２＋データ転送長÷２＋最低データ間隔−次アクセスデバイス配線遅延×２
上記の算出方法で算出されるコマンド発行間隔を満たさないでコマンドを発行すると、メモリアクセス制御装置５００とメモリデバイス５９１、５９２との間で、データ信号のドライブが衝突する危険性がある。
【００６１】
尚、メモリアクセス制御装置５００とメモリデバイス５９１、５９２との間で読み出し又は書き込みアクセスは共に４ビート転送を扱うものとする。
【００６２】
また、メモリアクセス制御装置５００とメモリデバイス５９１との間の配線遅延は0.5クロックサイクル、メモリアクセス制御装置５００とメモリデバイス５９２との間の配線遅延は1.5クロックサイクルとする。また、レイテンシ情報保持回路５４０に保持される読み出しレイテンシは３クロックサイクル、書き込みレイテンシは２クロックサイクルとする。
【００６３】
上述のように、アクセス長、配線遅延、レイテンシからメモリアクセス制御装置５００とメモリデバイス５９１、５９２によるデータ信号５０６のドライブが衝突しないように最小コマンド間隔値を算出し、コマンド間隔バッファ５３１ａ〜Ｎに設定する。
【００６４】
ここで、「データ転送長÷２」は４ビートのメモリアクセスのみを扱うので２クロックサイクルである。また、「最低データ間隔」は連続するアクセスのデータがデータ信号上で連続しないための間隔で通常、１クロックサイクルである。
【００６５】
図６は、第１の実施形態におけるコマンド発行算出方法で算出したコマンド発行間隔を示す図である。即ち、コマンド間隔バッファ５３１ａ〜５３１Ｎ（Ｎ＝１６なので添え字はｐ）には、図６に示す間隔（クロックサイクル）が設定され、その間隔以上のクロックサイクルを空ける必要がある。
【００６６】
ここで、メモリアクセス制御装置５００がメモリデバイス５９２へ読み出しコマンドを発行後、メモリデバイス５９１へ書き込みコマンドを発行する場合の動作（動作例１）を、図７を用いて説明する。
【００６７】
図７は、第１の実施形態におけるコマンド発行時の動作例１を示すタイミングチャートである。尚、メモリアクセス制御装置５００と記された波形は、メモリアクセス制御装置５００の信号端子をサンプリングした波形である。ここで、CLK、CS0、CS1、CMDはメモリアクセス制御装置５００の出力信号であり、DQS、DQはメモリアクセス制御装置５００の入出力信号である。
【００６８】
また、メモリデバイス５９１、メモリデバイス５９２は、それぞれのメモリデバイスの信号端子をサンプリングした波形である。ここで、CLK_0、CS_0、CMD_0及びCLK_1、CS_1、CMD_1は各メモリデバイスの入力信号であり、DQS_0、DQ_0及びDQS_1、DQ_1は各メモリデバイスの入出力信号である。
【００６９】
まず、メモリアクセスインターフェース５８０によってアクセス方向バッファ５２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔選択回路５５１は、アクセス方向バッファ５２１が設定されると、先行アクセス方向バッファ５１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路５５２に知らせる。
【００７０】
一方、コマンド発行タイミング制御回路５５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路５５０はチップセレクト信号５０２をアサートし、読み出しコマンドを発行する（Ｔ３）。
【００７１】
コマンド発行制御回路５５０はコマンドを発行すると同時に、アクセス方向バッファ５２１の読み出しである旨の情報を先行アクセス方向バッファ５１１に設定する。また同時に、メモリアクセスインターフェース５８０によってアクセス方向バッファ５２１に次のコマンドが書き込みである旨の情報が設定される。
【００７２】
コマンド発行制御回路５５０が発行した読み出しコマンドは1.5クロックサイクル遅延してメモリデバイス５９２に受信される（Ｂ４）。メモリデバイス５９２は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号５０６をドライブする（Ｂ７）。メモリデバイス５９２がドライブしたデータは1.5クロックサイクル遅延してデータ受信制御回路５７０に受信される（Ｔ１０〜Ｔ１２）。
【００７３】
先行コマンドが読み出し、先行アクセスデバイスがメモリデバイス５９２、次のコマンドが書き込み、次のアクセスデバイスがメモリデバイス５９１であるので、コマンド発行間隔選択回路５５１はコマンド間隔バッファ５３１ｍを選択する。これにより、コマンド発行可能となるまで、７クロックサイクルであることをコマンド発行タイミング制御回路５５２に知らせる。
【００７４】
一方、コマンド発行タイミング制御回路５５２はコマンド発行まで７クロックサイクルであるという情報を受け取り、７クロックサイクル後にコマンド発行許可を出す。
【００７５】
これにより、コマンド発行制御回路５５０はチップセレクト信号５０１をアサートして書き込みコマンドを発行する（Ｔ１０）。コマンド発行制御回路５５０はコマンドを発行すると同時に、アクセス方向バッファ５２１の情報を先行アクセス方向バッファ５１１に設定する。
【００７６】
コマンド発行制御回路５５０が発行した書き込みコマンドは0.5クロックサイクル遅延してメモリデバイス５９１に受信される（Ａ１１）。データ発行制御回路５６０はコマンド発行制御回路５５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路５４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号５０６をドライブする（Ｔ１３）。データ発行制御回路５６０が発行したデータは0.5クロックサイクル遅延してメモリデバイス５９１に受信される（Ａ１３〜Ａ１５）。
【００７７】
次に、メモリアクセス制御装置５００がメモリデバイス５９１へ読み出しコマンドを発行後、メモリデバイス５９２へ書き込みコマンドを発行した場合の動作（動作例２）を、図８を用いて説明する。
【００７８】
図８は、第１の実施形態におけるコマンド発行時の動作例２を示すタイミングチャートである。尚、図８に示す波形のサンプリングポイントは図７と同様である。
【００７９】
まず、メモリアクセスインターフェース５８０によってアクセス方向バッファ５２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔選択回路５５１は、アクセス方向バッファ５２１が設定されると、先行アクセス方向バッファ５１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路５５２に知らせる。
【００８０】
一方、コマンド発行タイミング制御回路５５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路５５０はチップセレクト信号５０１をアサートし、読み出しコマンドを発行する（Ｔ３）。
【００８１】
コマンド発行制御回路５５０はコマンドを発行すると同時に、アクセス方向バッファ５２１の読み出しである旨の情報を先行アクセス方向バッファ５１１に設定する。また同時に、メモリアクセスインターフェース５８０によってアクセス方向バッファ５２１に次のコマンドが書き込みである旨の情報が設定される。
【００８２】
コマンド発行制御回路５５０が発行した読み出しコマンドは0.5クロックサイクル遅延してメモリデバイス５９１に受信される（Ａ４）。メモリデバイス５９１は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号５０６をドライブする（Ａ７）。メモリデバイス５９２がドライブしたデータは0.5クロックサイクル遅延してデータ受信制御回路５７０に受信される（Ｔ８〜Ｔ１０）。
【００８３】
先行コマンドが読み出し、先行アクセスデバイスがメモリデバイス５９１、次のコマンドが書き込み、次のアクセスデバイスがメモリデバイス５９２であるので、コマンド発行間隔選択回路５５１はコマンド間隔バッファ５３１ｇを選択する。これにより、コマンド発行可能となるまで、５クロックサイクルであることをコマンド発行タイミング制御回路５５２に知らせる。
【００８４】
コマンド発行タイミング制御回路５５２は、コマンド発行まで５クロックサイクルであるという情報を受け取り、５クロックサイクル後にコマンド発行許可を出す。
【００８５】
これにより、コマンド発行制御回路５５０はチップセレクト信号５０２をアサートし、書き込みコマンドを発行する（Ｔ８）。コマンド発行制御回路５５０はコマンドを発行すると同時に、アクセス方向バッファ５２１の情報を先行アクセス方向バッファ５１１に設定する。
【００８６】
コマンド発行制御回路５５０が発行した書き込みコマンドは、1.5クロックサイクル遅延してメモリデバイス５９２に受信される（Ｂ９）。データ発行制御回路５６０はコマンド発行制御回路５５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路５４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号５０６をドライブする（Ｔ１１）。データ発行制御回路５６０が発行したデータは1.5クロックサイクル遅延してメモリデバイス５９２に受信される（Ｂ１１〜Ｂ１３）。
【００８７】
以上、読み出しをしてから書き込みをする場合のみ詳細に動作を説明したが、書き込みをしてから書き込み、書き込みをしてから読み出し、読み出しをしてから読み出しの場合も同様である。即ち、コマンド間隔バッファ５３１ａ〜５３１Ｎの情報から該当するものがコマンド発行間隔選択回路５５１によって選択され、選択された情報に応じてコマンド発行タイミング制御回路５５２が発行許可を出す。そして、コマンド発行制御回路５５０がコマンドを発行することで、データ信号５０６のドライブが衝突することなく、データ信号５０６を最短でドライブすることができる。
【００８８】
第１の実施形態では、配線遅延が異なることに起因してメモリデバイス毎のアクセスレイテンシが異なる場合に対しての動作を説明した。しかし、メモリデバイス毎のレイテンシが異なる場合においても同様にコマンド発行間隔を設定することでデータ信号のドライブが衝突しないでデータ信号を最短でドライブすることができる。
【００８９】
また、第１の実施形態では、２つのメモリデバイスが接続された場合を示しているが、本発明はこれだけに限らず、接続されるデバイスが３デバイス以上の場合においても適用することができる。
【００９０】
第１の実施形態によれば、先行コマンドの読み出し又は書き込み情報と先行コマンドのアクセスデバイス情報と次コマンドの読み出し又は書き込み情報と次コマンドのアクセスデバイス情報に応じて、コマンド発行間隔を調整することが可能となる。そのため、本来データ転送が可能なサイクルに不要な転送間隔があかなくなる。
【００９１】
即ち、メモリアクセス制御回路がデータ信号をドライブするタイミングと、メモリデバイスがデータ信号をドライブするタイミングが衝突することなく、メモリバスの使用効率を向上させることができる。
【００９２】
［第２の実施形態］
次に、図面を参照しながら本発明に係る第２の実施形態を詳細に説明する。第１の実施形態では、最小コマンド間隔値をコマンド間隔バッファ５３１ａ〜Ｎに保持しているが、第２の実施形態では次コマンドを発行する際に算出するものである。
【００９３】
図９は、第２の実施形態におけるメモリアクセス制御装置の一例を示すブロック図である。図９に示すように、メモリアクセス制御装置９００は、メモリデバイス９９１、９９２が接続され、メモリデバイス９９１、９９２へのアクセスを制御する。
【００９４】
第２の実施形態でも、メモリデバイスとしてＤＤＲタイプのメモリデバイスを想定している。また、メモリアクセス制御装置９００とメモリデバイス９９１、９９２の間の信号９０１〜９０６は、図５を用いて説明した信号５０１〜５０６と同じであり、その説明は省略する。
【００９５】
メモリアクセス制御装置９００において、９１０は先行コマンド情報保持回路であり、直前に発行したコマンドの情報を保持する。内部に、直前に発行したコマンドの読み出し又は書き込み方向を保持する先行アクセス方向バッファ９１１と直前に発行したコマンドのアクセスしたデバイス情報を保持する先行アクセスデバイスバッファ９１２とを備えている。
【００９６】
９２０はコマンド情報保持回路であり、次に発行するコマンドの情報を保持する。内部に、次に発行するコマンドの読み出し又は書き込み方向を保持するアクセス方向バッファ９２１と次に発行するコマンドのアクセスするデバイス情報を保持するアクセスデバイスバッファ９２２とを備えている。
【００９７】
９３０は配線遅延情報保持回路であり、全メモリデバイスに対する配線遅延情報を保持する。内部には、配線遅延バッファ９３１ａ〜９３１Ｎが備えられ、メモリアクセス制御装置９００に接続される全てのメモリデバイスに対する配線遅延量が保持される。図９に示す例では、メモリアクセス制御装置９００には２つのメモリデバイス９９１、９９２が接続されているので、配線遅延バッファ９３１ａ、９３１ｂが備えられ、それぞれ２つの配線遅延量が保持される。
【００９８】
９４０はレイテンシ情報保持回路であり、メモリアクセス制御装置９００に接続されるメモリデバイスの設定に応じたメモリデバイスのリードレイテンシ、ライトレイテンシを保持する。９４１は後述するコマンド発行制御回路９５０へ出力されるレイテンシ情報である。
【００９９】
９５０はコマンド発行制御回路であり、メモリデバイス１９１、１９２へのコマンド発行を制御する。コマンド発行制御回路９５０は、ＣＰＵ（ＭＰＵ）、ＲＯＭ、周辺回路などで構成されても良い。コマンド発行間隔算出回路９５１は、先行コマンド情報保持回路９１０、コマンド情報保持回路９２０、配線遅延情報保持回路９３０に保持された情報とレイテンシ情報９４１から次のコマンドが発行可能となるまでのサイクル数を算出する。コマンド発行タイミング制御回路９５２は、コマンド発行間隔算出回路９５１が算出したコマンド間隔だけ次コマンドの発行タイミングを遅らせる。
【０１００】
９６０はデータ発行制御回路であり、コマンド発行制御回路９５０がコマンドを発行してからレイテンシ情報保持回路９４０に保持された書き込みレイテンシだけ経過した後、データ信号９０６をドライブする。９７０はデータ受信制御回路であり、メモリデバイス９９１、９９２から読み出されたデータを受信する。
【０１０１】
９８０はメモリアクセスインターフェースであり、外部回路からのメモリアクセス要求を受け、コマンド発行制御回路９５０にコマンドを送信し、アクセス方向バッファ９２１に読み出し又は書き込み情報を設定する。
【０１０２】
ここで、コマンド発行間隔算出回路９５１によるコマンド発行間隔の算出方法は、以下の（１）〜（４）の通りである。
（１）書き込みコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝データ転送長÷２＋最低データ間隔
（２）書き込みコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイスライトレイテンシ＋データ転送長÷２＋先行アクセスデバイス配線遅延−次アクセスデバイスリードレイテンシ−次アクセスデバイス配線遅延
（３）読み出しコマンドを発行後に、書き込みコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイス配線遅延×２＋先行アクセスデバイスリードレイテンシ＋データ転送長÷２＋最低データ間隔−次アクセスデバイスライトレイテンシ
（４）読み出しコマンドを発行後に、読み出しコマンドを発行する場合
コマンド発行間隔＝先行アクセスデバイス配線遅延×２＋データ転送長÷２＋最低データ間隔−次アクセスデバイス配線遅延×２
上記の算出方法で算出されるコマンド発行間隔を満たさないでコマンドを発行すると、メモリアクセス制御装置９００とメモリデバイス９９１、９９２との間で、データ信号のドライブが衝突する危険性がある。
【０１０３】
尚、メモリアクセス制御装置９００とメモリデバイス９９１、９９２との間で読み出し又は書き込みアクセスは共に４ビート転送を扱うものとする。
【０１０４】
また、メモリアクセス制御装置９００とメモリデバイス９９１との間の配線遅延は0.5クロックサイクル、メモリアクセス制御装置９００とメモリデバイス９９２との間の配線遅延は1.5クロックサイクルとする。また、レイテンシ情報保持回路９４０に保持される読み出しレイテンシは３クロックサイクル、書き込みレイテンシは２クロックサイクルとする。
【０１０５】
配線遅延バッファ９３１ａ〜９３１Ｎ（Ｎはデバイス数）には、メモリデバイス９９１とメモリデバイス９９２の配線遅延が設定される。
【０１０６】
ここで、メモリアクセス制御装置９００がメモリデバイス９９２へ読み出しコマンドを発行後、メモリデバイス９９１へ書き込みコマンドを発行する場合の動作（動作例１）を、第１の実施形態で用いた図７を参照して説明する。
【０１０７】
まず、メモリアクセスインターフェース９８０によってアクセス方向バッファ９２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔算出回路９５１は、アクセス方向バッファ９２１が設定されると、先行アクセス方向バッファ９１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路９５２に知らせる。
【０１０８】
一方、コマンド発行タイミング制御回路９５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路９５０はチップセレクト信号９０２をアサートし、読み出しコマンドを発行する（Ｔ３）。
【０１０９】
コマンド発行制御回路９５０はコマンドを発行すると同時に、アクセス方向バッファ９２１の読み出しである旨の情報を先行アクセス方向バッファ９１１に設定する。また同時に、メモリアクセスインターフェース９８０によってアクセス方向バッファ９２１に次のコマンドが書き込みである旨の情報が設定される。
【０１１０】
コマンド発行制御回路９５０が発行した読み出しコマンドは1.5クロックサイクル遅延してメモリデバイス９９２に受信される（Ｂ４）。メモリデバイス９９２は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号９０６をドライブする（Ｂ７）。メモリデバイス９９２がドライブしたデータは1.5クロックサイクル遅延してデータ受信制御回路９７０に受信される（Ｔ１０〜Ｔ１２）。
【０１１１】
ここで、コマンド発行間隔算出回路９５１は、以下の情報から上述のコマンド発行間隔算出方法にて次のコマンド発行可能となるまで７クロックサイクルであることを算出し、コマンド発行タイミング制御回路９５２に知らせる。
・先行コマンドが読み出しであること
・先行アクセスデバイスがメモリデバイス９９２であること
・次のコマンドが書き込みであること
・次のアクセスデバイスがメモリデバイス９９１であること
・メモリデバイス９９１の配線遅延が0.5クロックサイクルであること
・メモリデバイス９９２の配線遅延が1.5クロックサイクルであること
・メモリデバイスのリードレイテンシが３クロックサイクルであること
・メモリデバイスのライトレイテンシが２クロックサイクルであること
一方、コマンド発行タイミング制御回路９５２はコマンド発行まで７クロックサイクルであるという情報を受け取り、７クロックサイクル後にコマンド発行許可を出す。
【０１１２】
これにより、コマンド発行制御回路９５０はチップセレクト信号９０１をアサートして書き込みコマンドを発行する（Ｔ１０）。コマンド発行制御回路９５０はコマンドを発行すると同時に、アクセス方向バッファ９２１の情報を先行アクセス方向バッファ９１１に設定する。
【０１１３】
コマンド発行制御回路９５０が発行した書き込みコマンドは0.5クロックサイクル遅延してメモリデバイス９９１に受信される（Ａ１１）。データ発行制御回路９６０はコマンド発行制御回路９５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路９４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号９０６をドライブする（Ｔ１３）。データ発行制御回路９６０が発行したデータは0.5クロックサイクル遅延してメモリデバイス９９１に受信される（Ａ１３〜Ａ１５）。
【０１１４】
次に、メモリアクセス制御装置９００がメモリデバイス９９１へ読み出しコマンドを発行後、メモリデバイス９９２へ書き込みコマンドを発行した場合の動作（動作例２）を、第１の実施形態で用いた図８を参照して説明する。
【０１１５】
まず、メモリアクセスインターフェース９８０によってアクセス方向バッファ９２１に次コマンドが読み出しである旨の情報が設定される。コマンド発行間隔算出回路９５１は、アクセス方向バッファ９２１が設定されると、先行アクセス方向バッファ９１１がカラであるので、コマンド発行可能となるまで０クロックサイクルであることをコマンド発行タイミング制御回路９５２に知らせる。
【０１１６】
一方、コマンド発行タイミング制御回路９５２はコマンド発行まで０クロックサイクルであるという情報を受け取り、０クロックサイクル後にコマンド発行許可を出す。これにより、コマンド発行制御回路９５０はチップセレクト信号９０２をアサートし、読み出しコマンドを発行する（Ｔ３）。
【０１１７】
コマンド発行制御回路９５０はコマンドを発行すると同時に、アクセス方向バッファ９２１の読み出しである旨の情報を先行アクセス方向バッファ９１１に設定する。また同時に、メモリアクセスインターフェース９８０によってアクセス方向バッファ９２１に次のコマンドが書き込みである旨の情報が設定される。
【０１１８】
コマンド発行制御回路９５０が発行した読み出しコマンドは0.5クロックサイクル遅延してメモリデバイス９９１に受信される（Ａ４）。メモリデバイス９９１は受信したコマンドが読み出しであるので、読み出しレイテンシ３クロックサイクル経過した後、データ信号９０６をドライブする（Ａ７）。メモリデバイス９９１がドライブしたデータは0.5クロックサイクル遅延してデータ受信制御回路９７０に受信される（Ｔ８〜Ｔ１０）。
【０１１９】
ここで、コマンド発行間隔算出回路９５１は、以下の情報から上述のコマンド発行間隔算出方法にて次のコマンド発行可能となるまで５クロックサイクルであることを算出し、コマンド発行タイミング制御回路９５２に知らせる。
・先行コマンドが読み出しであること
・先行アクセスデバイスがメモリデバイス９９１であること
・次のコマンドが書き込みであること
・次のアクセスデバイスがメモリデバイス９９２であること
・メモリデバイス９９１の配線遅延が0.5クロックサイクルであること
・メモリデバイス９９２の配線遅延が1.5クロックサイクルであること
・メモリデバイスのリードレイテンシが３クロックサイクルであること
・メモリデバイスのライトレイテンシが２クロックサイクルであること
一方、コマンド発行タイミング制御回路９５２はコマンド発行まで５クロックサイクルであるという情報を受け取り、５クロックサイクル後にコマンド発行許可を出す。
【０１２０】
これにより、コマンド発行制御回路９５０はチップセレクト信号９０１をアサートして書き込みコマンドを発行する（Ｔ８）。コマンド発行制御回路９５０はコマンドを発行すると同時に、アクセス方向バッファ９２１の情報を先行アクセス方向バッファ９１１に設定する。
【０１２１】
コマンド発行制御回路９５０が発行した書き込みコマンドは、1.5クロックサイクル遅延してメモリデバイス９９２に受信される（Ｂ９）。データ発行制御回路９６０はコマンド発行制御回路９５０が書き込みコマンドを発行したタイミングからレイテンシ情報保持回路９４０の保持する書き込みレイテンシ２クロックサイクル経過した後、データ信号９０６をドライブする（Ｔ１１）。データ発行制御回路９６０が発行したデータは1.5クロックサイクル遅延してメモリデバイス９９２に受信される（Ｂ１１〜Ｂ１３）。
【０１２２】
以上、読み出しをしてから書き込みをする場合のみ詳細に動作を説明したが、書き込みをしてから書き込み、書き込みをしてから読み出し、読み出しをしてから読み出しの場合も同様である。即ち、コマンド発行間隔算出回路９５１が上述したコマンド発行間隔算出方法により算出したコマンド発行間隔に従って、コマンド発行タイミング制御回路９５２が発行許可を出す。そして、コマンド発行制御回路９５０がコマンドを発行することで、データ信号９０６のドライブが衝突しないでデータ信号９０６を最短でドライブすることができる。
【０１２３】
第２の実施形態では、配線遅延が異なることに起因してメモリデバイス毎のアクセスレイテンシが異なる場合に対しての動作を説明した。しかし、メモリデバイス毎のレイテンシが異なる場合においても同様にコマンド発行間隔を算出することでデータ信号のドライブが衝突しないでデータ信号を最短でドライブすることができる。
【０１２４】
また、第２の実施形態では、２つのメモリデバイスが接続された場合を示しているが、本発明はこれだけに限らず、接続されるデバイスが３デバイス以上の場合においても適用することができる。
【０１２５】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【０１２６】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【０１２７】
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１２８】
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１２９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
【０１３０】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１３１】
【図１】従来例におけるメモリアクセス制御回路の一例を示すブロック図である。
【図２】従来例において、上述したコマンド発行間隔算出方法で算出したコマンド発行間隔を示す図である。
【図３】従来例におけるコマンド発行時の動作例１を示すタイミングチャートである。
【図４】従来例におけるコマンド発行時の動作例２を示すタイミングチャートである。
【図５】第１の実施形態におけるメモリアクセス制御装置の一例を示すブロック図である。
【図６】第１の実施形態におけるコマンド発行算出方法で算出したコマンド発行間隔を示す図である。
【図７】第１の実施形態におけるコマンド発行時の動作例１を示すタイミングチャートである。
【図８】第１の実施形態におけるコマンド発行時の動作例２を示すタイミングチャートである。
【図９】第２の実施形態におけるメモリアクセス制御装置の一例を示すブロック図である。
【符号の説明】
【０１３２】
５００  メモリアクセス制御装置
５１０  先行コマンド情報保持回路
５１１  先行アクセス方向バッファ
５１２  先行アクセスデバイスバッファ
５２０  コマンド情報保持回路
５２１  アクセス方向バッファ
５２２  アクセスデバイスバッファ
５３０  コマンド間隔情報保持回路
５３１  コマンド間隔バッファ
５４０  レイテンシ情報保持回路
５５０  コマンド発行制御回路
５５１  コマンド発行間隔選択回路
５５２  コマンド発行タイミング制御回路
５６０  データ発行制御回路
５７０  データ受信制御回路
５８０  メモリアクセスインターフェース
５９１  メモリデバイス
５９２  メモリデバイス
【図１】
0005188134.tif 000002
【図２】
0005188134.tif 000003
【図３】
0005188134.tif 000004
【図４】
0005188134.tif 000005
【図５】
0005188134.tif 000006
【図６】
0005188134.tif 000007
【図７】
0005188134.tif 000008
【図８】
0005188134.tif 000009
【図９】
0005188134.tif 000010