(57)【要約】【課題】初期アクセスレイテンシによるデータ処理速度の低下を低減するとともに無駄なメモリアクセスの発生しない情報処理システムを提供する。【解決手段】情報処理システムは、連続する複数回のデータ読み出し命令を出力する際に転送状態信号を合わせて出力し、ある１つのデータ読み出し命令に対して少なくとも１つのデータ読み出し命令が後続することを転送状態信号により示すマスタモジュールと、上記ある１つのデータ読み出し命令と転送状態信号とをマスタモジュールから受信すると、転送状態信号に応答して、上記ある１つのデータ読み出し命令に後続する少なくとも１つのデータ読み出し命令に対応するデータをメモリから読み出して保持するとともに、上記ある１つのデータ読み出し命令に対応するデータをマスタモジュールに供給するメモリコントローラを含むことを特徴とする。【選択図】図１
2010277180.tif 000002
【特許請求の範囲】
【請求項１】
連続する複数回のデータ読み出し命令を出力する際に転送状態信号を合わせて出力し、ある１つのデータ読み出し命令に対して少なくとも１つのデータ読み出し命令が後続することを前記転送状態信号により示すマスタモジュールと、
前記ある１つのデータ読み出し命令と前記転送状態信号とを前記マスタモジュールから受信すると、前記転送状態信号に応答して、前記ある１つのデータ読み出し命令に後続する少なくとも１つのデータ読み出し命令に対応するデータをメモリから読み出して保持するとともに、前記ある１つのデータ読み出し命令に対応するデータを前記マスタモジュールに供給するメモリコントローラと
を含むことを特徴とする情報処理システム。
【請求項２】
前記マスタモジュールは、最後でないデータ読み出し命令に対しては１つのデータ読み出し命令が後続することを示す前記転送状態信号の第１の状態を対応させ、最後のデータ読み出し命令に対しては０個のデータ読み出し命令が後続することを示す前記転送状態信号の第２の状態を対応させ、
前記メモリコントローラは、前記最後でないデータ読み出し命令と前記第１の状態の前記転送状態信号とを前記マスタモジュールから受信すると、前記最後でないデータ読み出し命令の次のデータ読み出し命令に対応するデータをメモリから読み出し保持するとともに、前記最後でないデータ読み出し命令に対応するデータを前記マスタモジュールに供給する
ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記メモリコントローラは、前記マスタモジュールから受信した前記最後でないデータ読み出し命令が最初のデータ読み出し命令である場合には、前記最初のデータ読み出し命令に対応するデータを前記メモリから読み出して前記マスタモジュールに供給するとともに、次のデータ読み出し命令に対応するデータを前記メモリから読み出して内部バッファに保持することを特徴とする請求項２記載の情報処理システム。
【請求項４】
前記メモリコントローラは、前記最後のデータ読み出し命令と前記第２の状態の前記転送状態信号とを前記マスタモジュールから受信すると、新たに前記メモリからのデータ読み出し動作を実行することなく、既に前記メモリから読み出して保持してある前記最後のデータ読み出し命令に対応するデータを前記マスタモジュールに供給することを特徴とする請求項２又は３記載の情報処理システム。
【請求項５】
前記メモリコントローラは、前記マスタモジュールから要求された転送アドレス、転送長、及び転送サイズに基づいて、次のデータ読み出し命令の読み出しアドレスを計算することを特徴とする請求項２乃至４の何れか一項記載の情報処理システム。
【請求項６】
前記転送状態信号は、前記ある１つのデータ読み出し命令に対して少なくとも幾つのデータ読み出し命令が後続するかの数を示す信号であり、前記メモリコントローラは、前記ある１つのデータ読み出し命令と前記転送状態信号とを前記マスタモジュールから受信すると、前記ある１つのデータ読み出し命令に後続するデータ読み出し命令に対応する先読みデータとして、前記転送状態信号が示す個数のデータ読み出し命令に対応するデータをメモリから読み出して保持するとともに、前記ある１つのデータ読み出し命令に対応するデータを前記マスタモジュールに供給することを特徴とする請求項１記載の情報処理システム。
【請求項７】
前記メモリコントローラは、前記マスタモジュールから受信した前記ある１つのデータ読み出し命令が最初のデータ読み出し命令である場合には、前記最初のデータ読み出し命令に対応するデータを前記メモリから読み出して前記マスタモジュールに供給するとともに、前記ある１つのデータ読み出し命令に後続する前記転送状態信号に応じた個数のデータ読み出し命令に対応するデータをメモリから読み出して内部バッファに保持することを特徴とする請求項５記載の情報処理システム。
【請求項８】
前記メモリコントローラは設定レジスタを含み、前記設定レジスタが第１の状態に設定されている場合には１つのデータ読み出し命令を受信すると後続するデータ読み出し命令に対応するデータ読み出し動作を前記転送状態信号に応じて実行し、前記設定レジスタが第２の状態に設定されている場合には１つのデータ読み出し命令を受信すると後続するデータ読み出し命令に対応するデータ読み出し動作を前記転送状態信号に関わらず実行しないことを特徴とする請求項１乃至６の何れか一項記載の情報処理システム。
【請求項９】
ａ）マスタモジュールから連続する複数回のデータ読み出し命令を出力し、
ｂ）ある１つのデータ読み出し命令に対して少なくとも１つのデータ読み出し命令が後続することを示す転送状態信号を生成し、
ｃ）前記ある１つのデータ読み出し命令と前記転送状態信号とに応じて、既にメモリから読み出されてバッファに格納されている前記ある１つのデータ読み出し命令に対応するデータを前記バッファから前記マスタモジュールに供給し、
ｄ）前記ある１つのデータ読み出し命令と前記転送状態信号とに応じて、前記ある１つのデータ読み出し命令に後続する少なくとも１つのデータ読み出し命令に対応するデータをメモリから読み出して前記バッファに格納する
各段階を含むことを特徴とするデータ転送方法。
【請求項１０】
前記段階ｂ）は、最後でないデータ読み出し命令に対しては１つのデータ読み出し命令が後続することを示す前記転送状態信号の第１の状態を対応させるとともに、最後のデータ読み出し命令に対しては０個のデータ読み出し命令が後続することを示す前記転送状態信号の第２の状態を対応させ、
前記段階ｃ）は、前記最後でないデータ読み出し命令と前記第１の状態の前記転送状態信号とに応じて、既に前記メモリから読み出されて前記バッファに格納されている前記最後でないデータ読み出し命令に対応するデータを前記バッファから前記マスタモジュールに供給し、
前記段階ｄ）は、前記最後でないデータ読み出し命令と前記第１の状態の前記転送状態信号とに応じて、前記最後でないデータ読み出し命令の次のデータ読み出し命令に対応するデータを前記メモリから読み出して前記バッファに格納する
ことを特徴とする請求項８記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ転送方式に関し、詳しくは連続して複数のデータを転送するバースト転送方式に関する。
【背景技術】
【０００２】
システムＬＳＩ（Large Scale Integration）には、ＬＳＩ全体を制御するＣＰＵ及びＬＳＩ外部のメモリにアクセスするメモリコントローラに加え、システムの用途に応じた機能モジュールが内蔵される。例えば画像処理・データ処理用ＬＳＩにおいては、画像処理用のグラフィック・プロセッサ、データ処理用のＤＳＰ（Digital Signal Processor）、メモリ間のデータ転送用のＤＭＡＣ（Direct Memory Access Controller）等が内蔵される。これらの各ユニットは、バスに対するアクセスを要求し実行するマスタモジュールとして動作する。マスタモジュールが外部のメモリに対してデータ転送要求を発行すると、メモリコントローラが、そのデータ転送命令に応じてチップ外部のメモリに対するコマンドを制御する。複数のマスタモジュールが同時にデータ転送要求を発行した場合には、調停回路により、優先的にデータ処理を行う必要のある命令に対して必要な帯域を確保する。このようなシステムＬＳＩにおいては、その処理性能が、メモリコントローラのデータ転送処理速度に大きく依存することになる。
【０００３】
システムLSIのオンチップ・バス（内部バス）でのデータ転送命令は、ある特定のインターフェース・プロトコルに従って実行される。汎用的なプロトコルとしてはＡＲＭ社のＡＭＢＡが広く用いられており、またＯＣＰ−ＩＰ（Open Core Protocol International Partnership）のＯＣＰも広く知られている。
【０００４】
汎用的なインターフェース・プロトコルでは、一回のバースト転送における最大転送長が定められている。例えば、ＡＭＢＡのＡＸＩ（Advanced eXtensible Interface）やＡＨＢ（Advanced High-Performance Bus）では最大転送長は１６となっている。マスタモジュールが比較的データ量の多い転送を実行したい場合は、最大転送長のバースト転送を複数回実行することになる。
【０００５】
マスタモジュールとしてＣＰＵがメモリに対するリード要求を発行する場合を考える。例えばメモリのバースト長を４に設定してあるとする。まずＣＰＵがアドレスＡ００を指定するとともに転送長が４のバースト転送命令を発行する。これに応じて、メモリコントローラは、外部メモリに対してアドレスＡ００を指定するとともに読み出しコマンドを発行する。読み出しコマンドからＣＡＳレイテンシの数サイクルが経過した後、メモリのアドレスＡ００から４つのデータが連続して読み出され、メモリコントローラにより受信される。メモリコントローラは、受信した４つの読み出しデータを内部バスを介してＣＰＵに供給する。ＣＰＵによるバースト転送命令発行から最初のデータ受信までの遅れを初期アクセスレイテンシと呼ぶ。この初期アクセスレイテンシは、外部メモリのＣＡＳレイテンシ、ＬＳＩと外部メモリとの接続におけるボード上の配線遅延、ＬＳＩ内部のＣＰＵとメモリコントローラ間での遅れ等により定まる。
【０００６】
データ転送対象のデータ量が４よりも大きい場合、ＣＰＵは引き続きデータ転送命令を発効することになる。即ち、ＣＰＵが次のアドレスＡ０４を指定するとともに転送長が４のバースト転送命令を発行する。これに応じて、メモリコントローラは、外部メモリに対してアドレスＡ０４を指定するとともに読み出しコマンドを発行する。読み出しコマンドからＣＡＳアクセスレイテンシの数サイクルが経過した後、メモリのアドレスＡ０４から４つのデータが連続して読み出され、メモリコントローラにより受信される。メモリコントローラは、受信した４つの読み出しデータを内部バスを介してＣＰＵに供給する。以下同様にして、所望のデータ量の転送が完了するまで、４つのデータのバースト読み出しが繰り返されることになる。
【０００７】
このように、バースト転送を複数回実行して所望のデータ量のデータ転送を行なう際には、バースト転送を１回実行する度に、上記の初期アクセスレイテンシ分のサイクルだけ待ち時間が発生することになる。高速なデータ転送処理が要求されるシステムでは、初期アクセスレイテンシがバースト転送毎に毎回発生することは好ましくない。
【０００８】
初期アクセスレイテンシによるデータ処理能力の低下を軽減するために、マスタモジュールからのデータ転送命令におけるアドレスをメモリコントローラ内部で計算し、メモリデータの先読みを実行する手法がある（例えば特許文献１）。しかし、この場合常にメモリデータを先読みするために、データ転送終了時には既に先読みしたデータを破棄する必要があり、無駄なメモリアクセスが発生してしまう。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２３２１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上を鑑みると、初期アクセスレイテンシによるデータ処理速度の低下を低減するとともに無駄なメモリアクセスの発生しない情報処理システムが望まれる。
【課題を解決するための手段】
【００１１】
情報処理システムは、連続する複数回のデータ読み出し命令を出力する際に転送状態信号を合わせて出力し、ある１つのデータ読み出し命令に対して少なくとも１つのデータ読み出し命令が後続することを前記転送状態信号により示すマスタモジュールと、前記ある１つのデータ読み出し命令と前記転送状態信号とを前記マスタモジュールから受信すると、前記転送状態信号に応答して、前記ある１つのデータ読み出し命令に後続する少なくとも１つのデータ読み出し命令に対応するデータをメモリから読み出して保持するとともに、前記ある１つのデータ読み出し命令に対応するデータを前記マスタモジュールに供給するメモリコントローラを含むことを特徴とする。
【００１２】
データ転送方法は、ａ）マスタモジュールから連続する複数回のデータ読み出し命令を出力し、ｂ）ある１つのデータ読み出し命令に対して少なくとも１つのデータ読み出し命令が後続することを示す転送状態信号を生成し、ｃ）前記ある１つのデータ読み出し命令と前記転送状態信号とに応じて、既にメモリから読み出されてバッファに格納されている前記ある１つのデータ読み出し命令に対応するデータを前記バッファから前記マスタモジュールに供給し、ｄ）前記ある１つのデータ読み出し命令と前記転送状態信号とに応じて、前記ある１つのデータ読み出し命令に後続する少なくとも１つのデータ読み出し命令に対応するデータをメモリから読み出して前記バッファに格納する各段階を含むことを特徴とする。
【発明の効果】
【００１３】
開示のバースト転送方法は、一連のバースト転送を実行する際に、最初のバースト転送に対しては初期アクセスレイテンシが発生するが、２回目以降のバースト転送に対しては初期アクセスレイテンシが発生しない。また最後のバースト転送に対しては、後続するバースト転送が存在しないことが分かるので、メモリコントローラはデータの先読みを実行しない。これにより、無駄なメモリアクセスを避けることができる。
【図面の簡単な説明】
【００１４】
【図１】システムＬＳＩ及びメモリを含むシステムの構成の一例を示す図である。
【図２】ＣＰＵ及びメモリコントローラの動作の一例を示す図である。
【図３】ＣＰＵ側での転送状態信号生成処理を示すフローチャートである。
【図４】ＣＰＵの転送状態信号生成回路及び関連する回路の構成の一例を示す図である。
【図５】メモリコントローラの構成の一例を示す図である。
【図６】システムＬＳＩ及びメモリを含むシステムの構成の変形例を示す図である。
【図７】ＣＰＵ及びメモリコントローラの動作の一例を示す図である。
【図８】ＣＰＵ側での転送状態信号生成処理を示すフローチャートである。
【図９】ＣＰＵの転送状態信号生成回路及び関連する回路の構成の一例を示す図である。
【図１０】転送状態信号生成回路の構成の一例を示す図である。
【図１１】ＣＰＵの転送状態信号生成回路に関連する部分の構成の変形例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１６】
図１は、システムＬＳＩ及びメモリを含むシステムの構成の一例を示す図である。図１において、情報処理システムであるシステムＬＳＩ１０がメモリ２０に接続されている。システムＬＳＩ１０は、読み出し命令或いは書き込み命令とアクセスアドレスとをメモリ２０に供給し、指定したアドレスに対する読み出し動作或いは書き込み動作を実行する。メモリ２０は例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）であってよく、連続してデータを読み出せるバースト転送が可能なメモリであってよい。例えばＳＤＲＡＭの場合、メモリ２０のバースト長は、モードレジスタ設定コマンドにより所望の長さに予め設定しておくことができる。
【００１７】
システムＬＳＩ１０は、マスタモジュールとして機能するＣＰＵ１１、メモリ２０へのアクセスを制御するメモリコントローラ１２、及びＣＰＵ１１とメモリコントローラ１２との間を接続するバス回路１３を含む。バス回路１３でのデータ転送命令は、例えばＡＲＭ社のＡＭＢＡ等のインターフェース・プロトコルに従って実行される。なお本実施例では、マスタモジュールの例としてＣＰＵを用いて説明するが、マスタモジュールはＣＰＵに限られるものではない。
【００１８】
ＣＰＵ１１は、転送状態信号生成回路２１を含む。転送状態信号生成回路２１は、ＣＰＵ１１が連続して複数回のバースト転送命令を発行する際に、転送状態信号ＳＴをバースト転送命令に合わせて出力する。この転送状態信号ＳＴは、ある１つのデータ転送命令に対して少なくとも１つのデータ転送命令が後続することを示す信号であってよい。図１に示す例では、転送状態信号ＳＴは、複数回のバースト転送のうちの最後でないデータ転送命令に対しては、１つのデータ転送命令が後続することを示す第１の信号状態（例えば値１）でよい。また複数回のバースト転送のうちの最後のデータ転送命令に対しては、０個のデータ転送命令が後続することを示す第２の信号状態（例えば値０）でよい。生成された転送状態信号ＳＴは、データ転送のＩ／Ｆプロトコル（インターフェース・プロトコル）における制御信号と供に、バス回路１３を経由でメモリコントローラ１２に供給される。
【００１９】
メモリコントローラ１２は、転送長＆転送アドレス制御回路２２と先読みデータ保存用バッファ２３とを含む。メモリコントローラ１２は、１つのデータ転送命令と転送状態信号ＳＴとを受信すると、転送状態信号ＳＴに応じて、受信したデータ転送命令に後続する少なくとも１つのデータ転送命令に対応するデータをメモリ２０から先読みする。先読みしたデータは、先読みデータ保存用バッファ２３に格納・保持される。また受信したデータ転送命令に後続するデータ転送命令に対応するデータをアクセスするために、転送長＆転送アドレス制御回路２２が用いられる。
【００２０】
図１の例では、前述のように、転送状態信号ＳＴは１又は０を示す。第１の信号状態（例えば値１）である転送状態信号ＳＴを受信すると、メモリコントローラ１２は、一緒に受信したデータ転送命令が最後のデータ転送命令ではなく、後続するデータ転送命令が１つは存在することを知る。この場合、メモリコントローラ１２は、受信した最後でないデータ転送命令の次の１つのデータ転送命令に対応するデータをメモリ２０から読み出す。読み出したデータは、先読みデータ保存用バッファ２３に格納・保持される。また第２の信号状態（例えば値０）である転送状態信号ＳＴを受信すると、メモリコントローラ１２は、一緒に受信したデータ転送命令が最後のデータ転送命令であり、後続するデータ転送命令が存在しないことを知る。この場合には、メモリコントローラ１２は、新たにメモリ２０からのデータ読み出し動作を実行することはない。従って、無駄なメモリアクセスは発生しない。
【００２１】
メモリコントローラ１２は更に、受信したデータ転送命令に対応するデータをＣＰＵ１１に供給する。受信したデータ転送命令に対応するデータが既にメモリ２０から読み出されて先読みデータ保存用バッファ２３に格納されていれば、この格納データをＣＰＵ１１に供給すればよい。また受信したデータ転送命令が一番最初のデータ転送命令である場合には、先読みデータ保存用バッファ２３に対応データが格納されていないので、最初のデータ転送命令に対応するデータをメモリ２０から読み出して、直接にＣＰＵ１１に供給すればよい。
【００２２】
図２は、ＣＰＵ１１及びメモリコントローラ１２の動作の一例を示す図である。（ａ）及び（ｆ）に示すクロック信号ＣＬＫに同期して、ＣＰＵ１１とメモリコントローラ１２との間のデータ転送、及びメモリコントローラ１２とメモリ２０との間のデータ転送が実行される。図面の見やすさを考慮して同一のクロック信号ＣＬＫを（ａ）と（ｆ）とに２つ示してある。ＣＰＵ１１は、（ｂ）に示すアドレス信号ＡＤＤによりアクセスアドレスを指定し、（ｃ）に示すコントロール信号ＣＮＴＬによりデータ転送を要求する。またＣＰＵ１１は、（ｄ）に示す転送状態信号をデータ転送命令に合わせて送信する。（ｅ）は、ＣＰＵ１１がメモリコントローラ１２から受信するデータを示す。メモリコントローラ１２は、（ｇ）に示すコマンド信号ＣＭＤにより読み出しコマンド或いは書き込みコマンドを指定し、（ｈ）に示すアドレス信号ＡＤＤによりアクセスアドレスを指定する。（ｉ）は、メモリコントローラ１２がメモリ２０から受信する読み出しデータＤＱを示す。
【００２３】
最初に、ＣＰＵ１１からアドレスＡ００に対する転送長４のバースト転送要求が発行される。このバースト転送要求に合わせてＣＰＵ１１から出力される転送状態信号ＳＴは、少なくとも１つの後続するバースト転送要求が存在することを示す値ＨＩＧＨに設定されている。なお図２の例では、転送状態信号ＳＴはバースト転送要求と同一のサイクルに同一の長さだけ出力されているが、１つの転送状態信号ＳＴと１つのバースト転送要求との対応付けができればよく、必ずしも同一のタイミングである必要はない。このＨＩＧＨ状態の転送状態信号ＳＴにより、メモリコントローラ１２は、現在の転送要求であるアドレスＡ００のバースト転送の後にアドレスＡ０４のバースト転送が実行されることを予め知ることができる。なお、次回のバースト転送要求がアドレスＡ０４に対するものであることは、バースト長が４であり、今回のバースト転送要求の対象アドレスがアドレスＡ００であることから計算できる。
【００２４】
現在のアドレスＡ００に対するバースト転送要求が最初のバースト転送要求であるので、メモリコントローラ１２の先読みデータ保存用バッファ２３には、アドレスＡ００に対するバースト転送要求に対応するデータは格納されていない。従って、メモリコントローラ１２は、アドレスＡ００を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ００を開始アドレスとする４つのデータＤ００乃至Ｄ０３を読み出す。例えば１つのデータサイズが３２ビット幅（４バイト）であれば、４バイトのデータを４つ読み出すことになる。メモリコントローラ１２は更に、アドレスＡ０４を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０４を開始アドレスとする４つのデータＤ０４乃至Ｄ０７を先読みデータとして読み出す。メモリ２０はバースト長４に設定されているので、読み出し命令を２回発行して、４つのデータ読み出しを２回行なうことになる。仮に読み出し命令毎にバースト長を可変に設定できるのであれば、８つのデータＤ００乃至Ｄ０７をバースト長８の１回の読み出し命令で読み出せばよい。なお図２では、図示の簡略化のために、読み出し命令ＲＥＡＤとアドレス指定でデータ読み出し動作が実行されるように示してある。実際には、メモリ２０が例えばＳＤＲＡＭであれば、アクティブコマンドＡＣＴとともにローアドレスを指定し、読み出しコマンドＲＥＡＤとともにコラムアドレスを指定することにより、読み出し動作が行なわれる。
【００２５】
メモリコントローラ１２は、今回のアドレスＡ００に対するバースト転送要求に対応するデータＤ００乃至Ｄ０３を直ちにＣＰＵ１１に転送する。この場合、メモリ２０でのＣＡＳレイテンシの３サイクルとメモリコントローラ１２での遅れとが足し合わされ、５サイクルの初期アクセスレイテンシが発生している。またメモリコントローラ１２は、次回のアドレスＡ０４に対するバースト転送要求に対応するデータＤ０４乃至Ｄ０７を先読みデータ保存用バッファ２３に格納・保持する。
【００２６】
ＣＰＵ１１は、最初のアドレスＡ００に対するバースト転送要求に対応するデータＤ００乃至Ｄ０３を受け取ってから、所定の内部処理を実行した後に、次のアドレスＡ０４に対するバースト転送要求を発行する。このバースト転送要求に合わせてＣＰＵ１１から出力される転送状態信号ＳＴは、少なくとも１つの後続するバースト転送要求が存在することを示す値ＨＩＧＨに設定されている。現在のアドレスＡ０４に対するバースト転送要求は最初のバースト転送要求ではないので、メモリコントローラ１２の先読みデータ保存用バッファ２３には、アドレスＡ０４に対するバースト転送要求に対応するデータが既に格納されている。従って、メモリコントローラ１２は、今回のアドレスＡ０４に対するバースト転送要求に対応するデータＤ０４乃至Ｄ０７を直ちに先読みデータ保存用バッファ２３からＣＰＵ１１に転送する。この場合、ＣＰＵ１１がデータを受け取るための初期アクセスレイテンシは発生しない。またメモリコントローラ１２は、次のアドレスＡ０８を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０８を開始アドレスとする４つのデータＤ０８乃至Ｄ０ｂを読み出す。メモリコントローラ１２は、次回のアドレスＡ０８に対するバースト転送要求に対応するデータＤ０８乃至Ｄ０ｂを先読みデータ保存用バッファ２３に格納・保持する。
【００２７】
ＣＰＵ１１は、２番目のアドレスＡ０４に対するバースト転送要求に対応するデータＤ０４乃至Ｄ０７を受け取ってから、所定の内部処理を実行した後に、次のアドレスＡ０８に対するバースト転送要求を発行する。このバースト転送要求に合わせてＣＰＵ１１から出力される転送状態信号ＳＴは、少なくとも１つの後続するバースト転送要求が存在することを示す値ＨＩＧＨに設定されている。現在のアドレスＡ０８に対するバースト転送要求は最初のバースト転送要求ではないので、メモリコントローラ１２の先読みデータ保存用バッファ２３には、アドレスＡ０８に対するバースト転送要求に対応するデータが既に格納されている。従って、メモリコントローラ１２は、今回のアドレスＡ０８に対するバースト転送要求に対応するデータＤ０８乃至Ｄ０ｂを直ちに先読みデータ保存用バッファ２３からＣＰＵ１１に転送する。この場合、ＣＰＵ１１がデータを受け取るための初期アクセスレイテンシは発生しない。またメモリコントローラ１２は、次のアドレスＡ０ｃを指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０ｃを開始アドレスとする４つのデータＤ０ｃ乃至Ｄ０ｆを読み出す。メモリコントローラ１２は、次回のアドレスＡ０ｃに対するバースト転送要求に対応するデータＤ０ｃ乃至Ｄ０ｆを先読みデータ保存用バッファ２３に格納・保持する。
【００２８】
ＣＰＵ１１は、３番目のアドレスＡ０８に対するバースト転送要求に対応するデータＤ０８乃至Ｄ０ｂを受け取ってから、所定の内部処理を実行した後に、最後のアドレスＡ０ｃに対するバースト転送要求を発行する。このバースト転送要求に合わせてＣＰＵ１１から出力される転送状態信号ＳＴは、０個の後続するバースト転送要求が存在することを示す値ＬＯＷに設定されている。現在のアドレスＡ０ｃに対するバースト転送要求は最初のバースト転送要求ではないので、メモリコントローラ１２の先読みデータ保存用バッファ２３には、アドレスＡ０ｃに対するバースト転送要求に対応するデータが既に格納されている。従って、メモリコントローラ１２は、今回のアドレスＡ０ｃに対するバースト転送要求に対応するデータＤ０ｃ乃至Ｄ０ｆを直ちに先読みデータ保存用バッファ２３からＣＰＵ１１に転送する。この場合、ＣＰＵ１１がデータを受け取るための初期アクセスレイテンシは発生しない。またＬＯＷ状態の転送状態信号ＳＴにより、メモリコントローラ１２は、現在の転送要求であるアドレスＡ０ｃのバースト転送の後にはバースト転送が実行されないことを予め知ることができる。従ってこの場合、メモリコントローラ１２は、メモリ２０に対するデータ読み出し動作を実行しない。
【００２９】
このようにして、ＣＰＵ１１が一連のバースト転送（図２の例では４つのバースト転送）を実行する際に、最初のバースト転送に対しては初期アクセスレイテンシが発生するが、２回目以降のバースト転送に対しては初期アクセスレイテンシが発生しない。これは、転送状態信号ＳＴにより、少なくとも１つの後続するバースト転送が存在することを示すことで、メモリコントローラ１２によるデータの先読みを実行できるからである。また最後のバースト転送に対しては、転送状態信号ＳＴにより、後続するバースト転送が存在しないことを示すことで、メモリコントローラ１２はデータの先読みを実行しない。これにより、無駄なメモリアクセスを避けることができる。
【００３０】
図３は、ＣＰＵ１１側での転送状態信号生成処理を示すフローチャートである。ステップＳ１で、ＣＰＵ１１は、一連のバースト転送の全転送数、転送サイズ、及び転送長を設定する。ここで全転送数は、一連のバースト転送で転送するデータの総量である。転送サイズは、１サイクルで転送される１つのデータのサイズであり、例えば３２ビット幅であったり８ビット幅であったりしてよい。転送長は、１回のバースト転送で転送されるデータの個数（即ちバースト長）であり、図２の例の場合は４個（例えばＤ０乃至Ｄ３）となる。
【００３１】
ステップＳ２で、ＣＰＵ１１の転送状態信号生成回路２１が、「残転送数（最初は全転送数）−転送サイズ×転送長」として、残転送数を計算する。この残転送数は、転送すべき残りのデータの総量である。また「転送サイズ×転送長」は、１回のバースト転送で転送されるデータ量である。ステップＳ３で、ＣＰＵ１１の転送状態信号生成回路２１が、残転送数が０以上であるか否かを判断する。残転送数が０以上である場合は、ステップＳ２に戻り、ステップＳ２とＳ３の処理を繰り返す。この残転送数が０以上である状態が続く間は、転送状態信号生成回路２１は、転送状態信号アサート可能な状態を維持する。この転送状態信号アサート可能な状態において、ＣＰＵ１１がバースト転送要求を発行すると、それに同期して転送状態信号がアサートされる。なおここで言う転送状態信号アサートとは、後続する転送要求の存在することを示す値に転送状態信号が設定されることである。ステップＳ３で残転送数が０となると、転送状態信号生成回路２１は転送状態信号アサート可能な状態を終了する。
【００３２】
図４は、ＣＰＵ１１の転送状態信号生成回路２１及び関連する回路の構成の一例を示す図である。ＣＰＵ１１に設けられた転送状態信号生成回路２１と、それに関連する転送制御回路２４及びバスマスタＩ／Ｆ制御回路２５が示される。転送状態信号生成回路２１は、乗算器３１、減算器３２、セレクタ３３、残転送数レジスタ３４、転送数レジスタ３５、転送サイズレジスタ３６、及び転送長レジスタ３７を含む。バスマスタＩ／Ｆ制御回路２５は、ＡＮＤ回路３８及びフリップフロップ３９を含む。
【００３３】
ＣＰＵ１１が、一連のバースト転送の全転送数、転送サイズ、及び転送長を、転送数レジスタ３５、転送サイズレジスタ３６、及び転送長レジスタ３７にそれぞれ設定する。乗算器３１は、転送サイズレジスタ３６及び転送長レジスタ３７のそれぞれの格納データに基づいて「転送サイズ×転送長」を計算する。「転送サイズ×転送長」の計算値は減算器３２に供給される。セレクタ３３は、転送制御回路２４から最初のバースト転送検出信号を受け取る。転送制御回路２４は、一連のバースト転送を制御する回路であり、一連のバースト転送のうちの最初のバースト転送を実行する時に、上記の最初のバースト転送検出信号をアサート状態にする。セレクタ３３は、最初のバースト転送検出信号がアサート状態であると、転送数レジスタ３５の出力を選択して減算器３２に供給する。減算器３２は、最初のバースト転送の場合、「全転送数−転送サイズ×転送長」として残転送数を計算する。計算した残転送数は、残転送数レジスタ３４に格納される。また減算器３２は、計算した残転送数が０以上であれば、少なくとも１つの後続するバースト転送が存在することを示す状態（例えばＨＩＧＨ）に、転送状態信号を設定する。
【００３４】
減算器３２の生成する転送状態信号はバスマスタＩ／Ｆ制御回路２５に供給される。減算器３２の生成する転送状態信号は、バスコマンド有効タイミングにおいてＡＮＤ回路３８を介してフリップフロップ３９に供給され、クロックに同期してフリップフロップ３９に格納される。フリップフロップ３９の出力が、バス回路１３に出力される転送状態信号となる。
【００３５】
転送制御回路２４は、一連のバースト転送のうちの最初のバースト転送を実行する時以外は、上記の最初のバースト転送検出信号をネゲート状態にする。セレクタ３３は、最初のバースト転送検出信号がネゲート状態であると、残転送数レジスタ３４の出力を選択して減算器３２に供給する。減算器３２は、「残転送数−転送サイズ×転送長」として残転送数の更新値を計算する。計算した更新後の残転送数は、残転送数レジスタ３４に格納される。また減算器３２は、計算した残転送数が０以上であれば、少なくとも１つの後続するバースト転送が存在することを示す状態（例えばＨＩＧＨ）に、転送状態信号を設定する。この転送状態信号生成回路２１における残転送数の更新動作及び転送状態信号の設定動作は、１つのバースト転送命令毎に１回実行される。残転送数が０となると、減算器３２は、後続するバースト転送が存在しないことを示す状態（例えばＬＯＷ）に、転送状態信号を設定する。
【００３６】
図５は、メモリコントローラ１２の構成の一例を示す図である。メモリコントローラ１２は、コントローラ部４１、次転送バーストＦＩＦＯ制御回路４２、ＦＩＦＯ４３、フリップフロップ４４、セレクタ４５及び４６、及びメモリ制御設定レジスタ４７を含む。コントローラ部４１は、メモリアドレス生成回路５１及びメモリアクセスコマンド生成回路５２を含む。メモリアドレス生成回路５１は、次転送アドレス制御回路５３を含む。メモリアクセスコマンド生成回路５２は次転送コマンド制御回路５４を含む。なお図５においてメモリコントローラ１２の一部として示されるＦＩＦＯ４３は、説明の都合上、図１では先読みデータ保存用バッファ２３として示されている。
【００３７】
メモリ制御設定レジスタ４７には、ＣＰＵ１１が実行するプログラムの指示に基づいて、データ先読み動作を有効とするか無効とするかを設定する。メモリ制御設定レジスタ４７が先読み有効状態に設定されている場合には、１つのデータ転送命令を受信すると後続するデータ転送命令に対応するデータ読み出し動作を転送状態信号ＳＴに応じて実行する。メモリ制御設定レジスタ４７が先読み無効状態に設定されている場合には、１つのデータ転送命令を受信すると後続するデータ転送命令に対応するデータ読み出し動作を転送状態信号ＳＴに関わらず実行しない。
【００３８】
具体的には、メモリ制御設定レジスタ４７が先読み有効状態に設定されている場合には、メモリアドレス生成回路５１とメモリアクセスコマンド生成回路５２とにおいて、次転送アドレス制御回路５３と次転送コマンド制御回路５４とが活性化される。次転送アドレス制御回路５３は、今回のデータ転送要求のアドレスにデータ転送長を加算することにより、後続するデータ転送要求に対応するデータ先読みの対象となるアドレスを算出し、このアドレスをメモリ２０に供給する。次転送コマンド制御回路５４は、最初のデータ転送要求に応じてデータ転送長の２倍の量のデータを読み出すように、読み出しコマンドを発行する。また次転送コマンド制御回路５４は更に、２回目以降のデータ転送要求に応じてデータ転送長に等しい量のデータを読み出すように読み出しコマンドを発行し、最後のデータ転送要求に対してはデータ読み出しコマンドを発行しない。次転送アドレス制御回路５３の動作内容と次転送コマンド制御回路５４の動作内容とは、転送状態信号ＳＴに応じて制御される。メモリ制御設定レジスタ４７が先読み無効状態に設定されている場合には、メモリアドレス生成回路５１とメモリアクセスコマンド生成回路５２とにおいて、次転送アドレス制御回路５３と次転送コマンド制御回路５４とが非活性化される。この場合、メモリアドレス生成回路５１及びメモリアクセスコマンド生成回路５２は、転送状態信号ＳＴの値に関わらず、受信したデータ転送要求に対応するデータ読み出しを実行するように動作する。
【００３９】
次転送バーストＦＩＦＯ制御回路４２は、セレクタ４５及び４６を制御することにより、ＦＩＦＯ４３又はフリップフロップ４４の何れかを適宜選択して、メモリ２０とＣＰＵ１１との間のデータ転送に用いる。ＦＩＦＯ４３は、例えば転送データ長が４の場合、４段のＦＩＦＯ（４つのデータを格納可能なＦＩＦＯ）であればよい。一連のバースト転送要求のうちの最初のバースト転送要求に対応してメモリ２０から読み出したデータについては、フリップフロップ４４に格納し、直ちにフリップフロップ４４の格納データをＣＰＵ１１に供給してよい。最後のバースト転送要求以外のバースト転送要求に対応してメモリ２０から読み出したデータについては、ＦＩＦＯ４３に格納すればよい。即ち例えばメモリ２０から４つのデータＤ０４乃至Ｄ０７を読み出すと、これらデータＤ０４乃至Ｄ０７を順次ＦＩＦＯ４３に格納していけばよい。次回のバースト転送要求が与えられると、これらデータＤ０４乃至Ｄ０７を順次ＦＩＦＯ４３からＣＰＵ１１にバス回路１３を介して供給するとともに、次の先読みデータＤ０８乃至Ｄ０ｂを順次ＦＩＦＯ４３に格納していけばよい。一連のバースト転送要求のうちの最後のバースト転送要求が与えられると、ＦＩＦＯ４３に格納されている４つのデータを順次読み出して、ＣＰＵ１１にバス回路１３を介して供給すればよい。
【００４０】
図６は、システムＬＳＩ及びメモリを含むシステムの構成の変形例を示す図である。図６において、図１と同一の構成要素は同一の番号で参照し、その説明は省略する。図６において、情報処理システムであるシステムＬＳＩ１０Ａがメモリ２０Ａに接続されている。システムＬＳＩ１０Ａは、マスタモジュールとして機能するＣＰＵ１１Ａ、メモリ２０へのアクセスを制御するメモリコントローラ１２Ａ、及びＣＰＵ１１Ａとメモリコントローラ１２Ａとの間を接続するバス回路１３を含む。
【００４１】
ＣＰＵ１１Ａは、転送状態信号生成回路２１Ａを含む。転送状態信号生成回路２１Ａは、ＣＰＵ１１Ａが連続して複数回のバースト転送命令を発行する際に、転送状態信号ＳＴＭをバースト転送命令に合わせて出力する。この転送状態信号ＳＴＭは、多ビットの信号であり、ある１つのデータ転送命令に対して少なくとも幾つのデータ転送命令が後続するかを示す。例えば、ある１つのデータ転送命令に対して３つのデータ転送命令が後続する場合、転送状態信号ＳＴＭは３を示してよい。この転送状態信号ＳＴＭは、ある１つのデータ転送命令に対して少なくともｎ個のデータ転送命令が後続することを示した後は、後続するｎ個のデータ転送命令に対してはネゲート状態（全ビット０）となってもよい。生成された転送状態信号ＳＴＭは、データ転送のＩ／Ｆプロトコル（インターフェース・プロトコル）における制御信号と供に、バス回路１３を経由でメモリコントローラ１２Ａに供給される。
【００４２】
メモリコントローラ１２Ａは、転送長＆転送アドレス制御回路２２Ａと多段の先読みデータ保存用バッファ２３Ａとを含む。メモリコントローラ１２Ａは、１つのデータ転送命令と転送状態信号ＳＴＭとを受信すると、このデータ転送命令に後続するデータ転送命令に対応する先読みデータとして、転送状態信号ＳＴＭが示す個数のデータ転送命令に対応するデータをメモリ２０から先読みする。先読みしたデータは、先読みデータ保存用バッファ２３Ａに格納・保持される。この際、受信したデータ転送命令に後続するデータ転送命令に対応するデータをアクセスするために、転送長＆転送アドレス制御回路２２Ａが用いられる。
【００４３】
例えば値３を示す転送状態信号ＳＴＭを受信すると、メモリコントローラ１２Ａは、一緒に受信したデータ転送命令が最後のデータ転送命令ではなく、後続するデータ転送命令が少なくとも３つ存在することを知る。この場合、メモリコントローラ１２Ａは、受信したデータ転送命令の次の３つのデータ転送命令に対応するデータをメモリ２０から読み出す。この際、３つのデータ転送命令に対応するデータの全てを連続的にメモリ２０から読み出す必要はなく、適宜タイミングを見計らって読み出せばよい。読み出したデータは、先読みデータ保存用バッファ２３Ａに格納・保持される。一旦値３を示す転送状態信号ＳＴＭを出力した後は、その後の２つのデータ転送命令に対して、転送状態信号ＳＴＭは０を示してよい。これにより、メモリコントローラ１２Ａが、同一のアドレスからの先読みを重複して実行するのを避けることができる。３つめのデータ転送命令に対する転送状態信号ＳＴＭは、再び、当該データ転送命令に少なくとも幾つのデータ転送命令が後続するのかを示す数となってよい。例えば転送状態信号ＳＴＭが２ビットの場合、最大で３しか示すことができない。一連のバースト転送命令の数が３以上の場合には、上記のような処理を繰り返せばよい。
【００４４】
なお転送状態信号ＳＴＭは、常に、後続するデータ転送要求の数を表現可能な最大値の限度で示すような信号であってもよい。即ち例えば、一旦値３を示す転送状態信号ＳＴＭを出力した後、その後の３つのデータ転送命令の各々に対して更に少なくとも３つのデータ転送命令が後続するならば、転送状態信号ＳＴＭを３を示す状態に維持してもよい。また、例えば３つ目のデータ転送命令が最後のデータ転送命令であるならば、これら３つのデータ転送命令に対して転送状態信号ＳＴＭが順次２，１，０と減少していってよい。但しこの場合、メモリコントローラ１２Ａ側で、同一のアドレスからの読み出しを重複して実行しないように制御する必要がある。
【００４５】
図１の構成の場合と同様に、最後のデータ転送命令を受信した場合、メモリコントローラ１２Ａはメモリ２０からのデータ読み出し動作を実行しない。また受信したデータ転送命令に対応するデータが既にメモリ２０から読み出されて先読みデータ保存用バッファ２３Ａに格納されていれば、この格納データをＣＰＵ１１Ａに供給する。また受信したデータ転送命令が一番最初のデータ転送命令である場合には、先読みデータ保存用バッファ２３Ａに対応データが格納されていないので、最初のデータ転送命令に対応するデータをメモリ２０から読み出して、直接にＣＰＵ１１Ａに供給してよい。
【００４６】
図７は、ＣＰＵ１１Ａ及びメモリコントローラ１２Ａの動作の一例を示す図である。最初に、ＣＰＵ１１ＡからアドレスＡ００に対する転送長４のバースト転送要求が発行される。このバースト転送要求に合わせてＣＰＵ１１Ａから出力される２ビットの転送状態信号ＳＴＭは、少なくとも３つの後続するバースト転送要求が存在することを示す値０ｘ３に設定されている。なお図７の例では、転送状態信号ＳＴＭはバースト転送要求と同一のサイクルに同一の長さだけ出力されているが、１つの転送状態信号ＳＴＭと１つのバースト転送要求との対応付けができればよく、必ずしも同一のタイミングである必要はない。この値３の転送状態信号ＳＴＭにより、メモリコントローラ１２Ａは、現在の転送要求であるアドレスＡ００のバースト転送の後に少なくとも３つのバースト転送が実行されることを予め知ることができる。
【００４７】
現在のアドレスＡ００に対するバースト転送要求が最初のバースト転送要求であるので、メモリコントローラ１２Ａの先読みデータ保存用バッファ２３Ａには、アドレスＡ００に対するバースト転送要求に対応するデータは格納されていない。従って、メモリコントローラ１２Ａは、アドレスＡ００を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ００を開始アドレスとする４つのデータＤ００乃至Ｄ０３を読み出す。また値３の転送状態信号ＳＴＭに従って、メモリコントローラ１２Ａは、更に３回のバースト読み出しを実行する。即ち、メモリコントローラ１２Ａは更に、アドレスＡ０４を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０４を開始アドレスとする４つのデータＤ０４乃至Ｄ０７を先読みデータとして読み出す。メモリコントローラ１２Ａは更に、アドレスＡ０８を指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０８を開始アドレスとする４つのデータＤ０８乃至Ｄ０ｂを先読みデータとして読み出す。メモリコントローラ１２Ａは更に、アドレスＡ０ｃを指定しながら読み出し命令ＲＥＡＤを発行することにより、メモリ２０からアドレスＡ０ｃを開始アドレスとする４つのデータＤ０ｃ乃至Ｄ０ｆを先読みデータとして読み出す。
【００４８】
メモリコントローラ１２Ａは、今回のアドレスＡ００に対するバースト転送要求に対応するデータＤ００乃至Ｄ０３を直ちにＣＰＵ１１Ａに転送する。この場合、メモリ２０でのＣＡＳレイテンシの３サイクルとメモリコントローラ１２での遅れとが足し合わされ、５サイクルの初期アクセスレイテンシが発生している。またメモリコントローラ１２Ａは、後続する３つのバースト転送要求に対応するデータＤ０４乃至Ｄ０ｆを先読みデータ保存用バッファ２３Ａに格納・保持する。
【００４９】
ＣＰＵ１１Ａは、最初のアドレスＡ００に対するバースト転送要求に対応するデータＤ００乃至Ｄ０３を受け取ってから、所定の内部処理を実行した後に、次のアドレスＡ０４に対するバースト転送要求を発行する。このバースト転送要求に合わせてＣＰＵ１１Ａから出力される転送状態信号ＳＴＭは、ネゲート状態（値０）に設定されている。メモリコントローラ１２Ａは、今回のアドレスＡ０４に対するバースト転送要求に対応するデータＤ０５乃至Ｄ０７を直ちに先読みデータ保存用バッファ２３ＡからＣＰＵ１１Ａに転送する。この場合、ＣＰＵ１１Ａがデータを受け取るための初期アクセスレイテンシは発生しない。以降、同様に、３番目のアドレスＡ０８に対するバースト転送要求及び最後のアドレスＡ０ｃに対するバースト転送要求に応じて、データＤ０８乃至Ｄ０ｂ及びデータＤ０ｃ乃至Ｄ０ｆがメモリコントローラ１２ＡからＣＰＵ１１Ａに供給される。何れの場合も、ＣＰＵ１１Ａがデータを受け取るための初期アクセスレイテンシは発生しない。
【００５０】
図８は、ＣＰＵ１１Ａ側での転送状態信号生成処理を示すフローチャートである。ステップＳ１で、ＣＰＵ１１Ａは、一連のバースト転送の全転送数、転送サイズ、及び転送長を設定する。ステップＳ２で、ＣＰＵ１１Ａの転送状態信号生成回路２１Ａが、「残転送数（最初は全転送数）−転送サイズ×転送長」として、残転送数を計算する。ステップＳ３で、ＣＰＵ１１Ａの転送状態信号生成回路２１Ａが、残転送数が０以上であるか否かを判断する。残転送数が０以上である場合は、ステップＳ４で、バースト転送回数を１増加する。なおこのバースト転送回数は初期値がゼロに設定されている。その後、処理はステップＳ２に戻り、ステップＳ２とＳ３の処理を繰り返す。ステップＳ３で残転送数が０となると、転送状態信号生成回路２１Ａはバースト転送回数を示す信号を転送状態信号として出力し、処理を終了する。
【００５１】
図９は、ＣＰＵ１１Ａの転送状態信号生成回路２１Ａ及び関連する回路の構成の一例を示す図である。図９において、図４と同一の構成要素は同一の番号で参照し、その説明は省略する。図９に示す転送状態信号生成回路２１Ａでは、図４に示す転送状態信号生成回路２１に加え、加算器６１が設けられている。図４の構成の場合と同様に、減算器３２が、「残転送数−転送サイズ×転送長」として残転送数の更新値を計算していく。残転送数を更新する毎に、計算した残転送数が０以上であれば、加算器６１に内蔵するフリップフロップＦＦの格納値を１増加させる。従って、残転送数が０となると、加算器６１に内蔵するフリップフロップＦＦには、実行するバースト転送回数が格納されることになる。
【００５２】
加算器６１の出力する転送状態信号はバスマスタＩ／Ｆ制御回路２５に供給される。加算器６１の出力する転送状態信号は、バスコマンド有効タイミングにおいてＡＮＤ回路３８を介してフリップフロップ３９に供給され、クロックに同期してフリップフロップ３９に格納される。フリップフロップ３９の出力が、バス回路１３に出力される転送状態信号ＳＴＭとなる。なお図８及び図９に示す例では、転送状態信号ＳＴＭのビット数が、全バースト転送回数を表現可能である場合の例である。
【００５３】
図１０は、転送状態信号生成回路２１Ａの構成の一例を示す図である。図１０において、図５と同一の構成要素は同一の番号で参照し、その説明は省略する。図１０の転送状態信号生成回路２１Ａは、図５の転送状態信号生成回路２１と比較して、ＦＩＦＯ４３の代りに複数のＦＩＦＯセット４３Ａが設けられている点が異なる。なお図１０において転送状態信号生成回路２１Ａの一部として示されるＦＩＦＯセット４３Ａは、説明の都合上、図１では先読みデータ保存用バッファ２３Ａとして示されている。
【００５４】
次転送バーストＦＩＦＯ制御回路４２が、セレクタ４５及び４６を制御することにより、ＦＩＦＯセット４３Ａ又はフリップフロップ４４の何れかを適宜選択して、メモリ２０とＣＰＵ１１Ａとの間のデータ転送に用いる。ＦＩＦＯセット４３Ａに設けるＦＩＦＯの数は、先読みするデータセットの数だけ設ければよい。例えば転送状態信号ＳＴＭが２ビットで最大３つまでの後続するデータ転送要求の存在を示すことができる場合、３つのＦＩＦＯをＦＩＦＯセット４３Ａに設ければよい。一連のバースト転送要求のうちの最初のバースト転送要求に対応してメモリ２０から読み出したデータについては、フリップフロップ４４に格納し、直ちにフリップフロップ４４の格納データをＣＰＵ１１Ａに供給してよい。例えば図７の例で、データＤ０乃至Ｄ３はフリップフロップ４４を介してＣＰＵ１１Ａに供給してよい。またデータＤ０４乃至Ｄ０７、Ｄ０８乃至Ｄ０ｂ、及びＤ０ｃ乃至Ｄ０ｆをメモリ２０から読み出すと、これらデータをＦＩＦＯセット４３Ａのうちの３つのＦＩＦＯに順次格納していけばよい。次回のバースト転送要求が与えられると、最初にデータＤ０４乃至Ｄ０７を順次ＦＩＦＯからＣＰＵ１１Ａにバス回路１３を介して供給すればよい。次のバースト転送要求に応答して、データＤ０８乃至Ｄ０ｂを順次ＦＩＦＯからＣＰＵ１１Ａにバス回路１３を介して供給すればよい。更に次のバースト転送要求に応答して、データＤ０ｃ乃至Ｄ０ｆを順次ＦＩＦＯからＣＰＵ１１Ａにバス回路１３を介して供給すればよい。
【００５５】
図１１は、ＣＰＵの転送状態信号生成回路２１に関連する部分の構成の変形例を示す図である。図１１において、図４と同一の構成要素は同一の番号で参照し、その説明は省略する。図１１のＣＰＵ１１Ｂは、図４のＣＰＵ１１と比較して、転送状態設定ビットレジスタ２６が設けられている点が異なる。またそれに対応して、バスマスタＩ／Ｆ制御回路２５Ｂにおいて、ＡＮＤ回路３８Ｂが３入力のＡＮＤ回路となっている。転送状態設定ビットレジスタ２６には、ＣＰＵ１１Ｂが実行するプログラムの指示に基づいて、転送状態信号を有効とするか無効とするかを設定する。転送状態設定ビットレジスタ２６が転送状態信号有効状態に設定されている場合には、転送状態設定ビットレジスタ２６からＡＮＤ回路３８ＢにＨＩＧＨが供給され、図４の構成と同一の動作を実行する。転送状態設定ビットレジスタ２６が転送状態信号無効状態に設定されている場合には、転送状態設定ビットレジスタ２６からＡＮＤ回路３８ＢにＬＯＷが供給され、ＡＮＤ回路３８Ｂの出力はＬＯＷ固定となる。この場合、ＣＰＵ１１Ｂから出力される転送状態信号ＳＴはネゲート状態（ＬＯＷ）に固定される。従って、上記実施例で説明したデータ先読み動作が実行されることはない。例えばシステムのデバッグ時はリアルタイムでの転送データの解析を必要とするため、データ先読みするのは好ましくない場合がある。そのような場合には、ソフトウェアで転送状態信号を活性化させないことにより、システムデバッグを適切に実行することが可能となる。
【００５６】
なお上記各実施例の説明において、メモリ２０はバースト機能を備えたＳＤＲＡＭ等を想定したが、メモリ２０にバースト転送機能が設けられていることは必須要件ではない。例えば、メモリ２０がページモードで動作するＤＲＡＭ等であってもよい。或いは、バースト転送やページモード等の連続高速読み出し機能を備えておらずメモリ２０からメモリコントローラへの読み出しを逐次実行するような構成であっても、データ先読みの機能は有用である。即ち、次回のデータ転送命令のデータを先読みしてバッファ格納しておいて、該当するデータ転送命令が来たときに先読みしておいたデータをメモリコントローラ内部のバッファからマスタモジュールに供給することで、レイテンシの発生を避けることができる。
【００５７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００５８】
１０  システムＬＳＩ
１１  ＣＰＵ
１２  メモリコントローラ
２０  メモリ
２１  転送状態信号生成回路
２２  転送長＆転送アドレス制御回路
２３  先読みデータ保存用バッファ
【図１】
2010277180.tif 000003
【図２】
2010277180.tif 000004
【図３】
2010277180.tif 000005
【図４】
2010277180.tif 000006
【図５】
2010277180.tif 000007
【図６】
2010277180.tif 000008
【図７】
2010277180.tif 000009
【図８】
2010277180.tif 000010
【図９】
2010277180.tif 000011
【図１０】
2010277180.tif 000012
【図１１】
2010277180.tif 000013