(57)【要約】【課題】ＰＣＩバス上の無駄なサイクルを削減し、ＰＣＩバスの連続したデータのリード転送性能を向上させる。【解決手段】ＰＭ＿ブロック１０１がリトライ応答をすると、ＭＭ＿ブロック１０２は、メモリ２００からデータを読み出し、更に、次のデータを読み出す。再度ＰＣＩリード要求があると、データ転送装置１００はデータを転送する。データを転送するとＤＢ＿ブロック１０４に空きができるため、ＭＭ＿ブロック１０２は、自動的に次のデータをメモリ２００から読み出し、ＤＢ＿ブロック１０４に格納する。そして、続くデータのＰＣＩリード要求を受信すると、データ転送装置１００は、そのＰＣＩリード要求に対する要求データがＤＢ＿ブロック１０４に存在するか否かを判別する。すでにデータが存在する場合、そのデータを転送する。データ転送装置１００は、ＤＭ＿ブロック１０３でメモリから読み出したデータのメモリにおけるアドレスを管理する。【選択図】図１
2008112324.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩバスにおける連続したデータを転送するデータ転送方法であって、
ＰＣＩリード要求コマンドに応じて、要求されたデータを記憶手段から読み出してバッファメモリに格納するステップと、
前記バッファメモリに格納したデータの前記記憶手段におけるアドレスを記憶するステップとを含み、
前記アドレスにもとづいてＰＣＩマスタデバイスに転送するデータを制御する
ことを特徴とするデータ転送方法。
【請求項２】
ＰＣＩリード要求コマンドを入力した際に、記憶したアドレスにもとづいて前記ＰＣＩリード要求コマンドに対応するデータが前記バッファメモリに格納されているか否かを判定するステップを含み、
前記ＰＣＩリード要求コマンドに対応するデータが前記バッファメモリに格納されていると判定した場合、前記バッファメモリに格納されたデータをＰＣＩマスタデバイスに転送する
請求項１記載のデータ転送方法。
【請求項３】
バッファメモリに格納されているデータが有効か否かを判定するステップを含み、
バッファメモリに格納されているデータが無効であると判定された場合に、要求されたデータを記憶手段から読み出してバッファメモリに格納するステップを実行する
請求項１または請求項２記載のデータ転送装置。
【請求項４】
バッファメモリに格納されたデータがＰＣＩマスタデバイスに転送されたときに、バッファメモリに格納されているデータを無効にする
請求項３記載のデータ転送方法。
【請求項５】
ＰＣＩリード要求コマンドがあると、あらかじめ決められている量のデータを記憶手段から読み出してバッファメモリに格納し、
前記記憶手段に格納されていないデータを要求するＰＣＩリード要求コマンドを入力するまで、前記記憶手段からの次のデータの読み出しを実行しない
請求項１から請求項４のうちのいずれか１項に記載のデータ転送方法。
【請求項６】
ＰＣＩバスにおける連続したデータの転送を実行するデータ転送装置であって、
ＰＣＩマスタデバイスからのＰＣＩリード要求コマンドにしたがってＰＣＩバスを制御する制御手段と、
前記ＰＣＩ要求コマンドに応じて要求されたデータを記憶手段から読み出し、バッファメモリに格納するデータ読み出し手段と、
前記データ読み出し手段によって前記バッファメモリに格納されたデータの前記記憶手段におけるアドレスを記憶する管理情報記憶手段とを備え、
前記制御手段は、前記アドレスにもとづいて転送するデータを制御する
ことを特徴とするデータ転送装置。
【請求項７】
制御手段は、ＰＣＩマスタデバイスからＰＣＩリード要求コマンドを入力した場合、情報管理手段が記憶したアドレスにもとづいて前記ＰＣＩリード要求コマンドに対応するデータが前記バッファメモリに格納されているか否かを判定し、
前記ＰＣＩリード要求コマンドに対応するデータが前記バッファメモリに格納されていると判定した場合、前記バッファメモリに格納されたデータを前記ＰＣＩマスタデバイスに転送する
請求項６記載のデータ転送装置。
【請求項８】
管理情報記憶手段は、バッファメモリに格納されているデータが有効か否かを示す有効情報を記憶し、
前記データ読み出し手段は、前記有効情報が無効を示している場合に、データを記憶手段から読み出す
請求項６または請求項７記載のデータ転送装置。
【請求項９】
制御手段は、バッファメモリに格納されているデータが前記ＰＣＩマスタデバイスに転送されたときに、有効情報を無効を示す状態にする
請求項８記載のデータ転送装置。
【請求項１０】
制御手段は、ＰＣＩマスタデバイスからのＰＣＩリード要求コマンドで、バッファメモリに格納されているデータの記憶手段におけるアドレスとは異なるアドレスのデータを要求されたときに、有効情報を無効を示す状態にする
請求項８記載のデータ転送装置。
【請求項１１】
データ読み出し手段は、ＰＣＩマスタデバイスからＰＣＩリード要求コマンドがあると、あらかじめ決められている量のデータを記憶手段から読み出してバッファメモリに格納し、
前記データ読み出し手段は、前記記憶手段に格納されていないデータを要求するＰＣＩリード要求コマンドを入力するまで、前記記憶手段からの次のデータの読み出しを実行しない
請求項６から請求項１０のうちのいずれか１項に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩバスを介してデータを転送するデータ転送方法およびデータ転送装置に関する。
【背景技術】
【０００２】
パーソナルコンピュータ等にはＰＣＩ（Peripheral Component Interconnect ）バスが設置されている。近年のデジタル技術の発展に伴って処理されるデータの量が大きくなり、その処理速度を向上させる技術の必要性が大きくなってきている。そこで、ＰＣＩバス上でデータ転送速度を向上させる様々な技術が提案されている（例えば、特許文献１参照。）。
【０００３】
特許文献１には、バス全体にわたるレイテンシをできる限り小さくしてデータ転送速度を向上させるデータ制御装置が記載されている。特許文献１に記載されているデータ転送制御装置は、アクセス頻度の高いアドレスの情報をプリセットアドレスとして保持し、そのデータを周期的に読み出す。その結果、データ転送装置は、データ転送速度をある程度向上させることができる。
【０００４】
【特許文献１】特開２００４−０５４５２７号公報（段落００３７−００４１、図３、図４）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＰＣＩバスのリード転送において、ＰＣＩマスタがメモリーリードライン（Memory Read Line）などのＰＣＩバスコマンドを用いてプリフェッチ・リードを実行し、転送性能を上げようとするような制御が行われることがある。その際、ＰＣＩマスタおよびＰＣＩスレーブのデータバッファの大きさの違いから、ＰＣＩバス上に無駄なサイクル（例えば、リトライサイクルやウェイトサイクル）が実行される。図８は、マスタデバイスおよびスレーブ（ターゲット）デバイスによるデータ転送方法の処理を簡略化して示すシーケンス図である。なお、ここでは、マスタデバイス（以下、ＰＣＩマスタという。）が３２バイトのデータを読み出そうとしている場合について説明する。また、スレーブデバイス（以下、ＰＣＩスレーブという。）が有するバッファメモリのサイズ（バッファサイズ）は１６バイトであるとする。また、ＰＣＩマスタが有するバッファメモリのサイズは８バイトであるとする。
【０００６】
ＰＣＩスレーブがデータを読み出すメモリのデータをＰＣＩマスタが必要とする場合に、ＰＣＩマスタは、ＰＣＩスレーブに対してリード要求（ＰＣＩリード１）を出力する（ステップＳ８０１）。
【０００７】
ＰＣＩスレーブは、メモリからデータを読み出す処理（メモリ読み出し１）を実行する（ステップＳ８０２）。ＰＣＩスレーブはすぐにメモリからデータを読み出すことができない。したがって、ＰＣＩマスタにすぐにデータを出力できない。そこで、ＰＣＩスレーブは、リトライ応答（リトライ応答１）をする（ステップＳ８０３）。
【０００８】
ＰＣＩスレーブは、メモリからデータを読み出し（読み出しデータ１）、更に、次のデータの読み出し処理（メモリ読み出し２プリフェッチ）を実行する（ステップＳ８０４）。ＰＣＩスレーブがメモリから読み出してくるデータ量は、ＰＣＩスレーブが有するバッファサイズ（この例では１６バイト）に依存する。なお、ＰＣＩスレーブは複数のバッファを有することもあるが、図８に示す例では、ＰＣＩスレーブが有しているバッファは１つであるとする。
【０００９】
ＰＣＩマスタは、数サイクル後に再度ＰＣＩリード要求コマンド（ＰＣＩリード１再要求）をＰＣＩスレーブに出力する（ステップＳ８０５）。ＰＣＩスレーブがメモリからのデータの読み出しを完了した後（すなわち、データ転送の準備ができた後）にＰＣＩリード再要求があれば、ＰＣＩスレーブは、ＰＣＩマスタにデータを転送（データ転送１）する（ステップＳ８０６）。ＰＣＩマスタは、自身が持っているバッファサイズ分のデータを受け取るとデータ転送を終了する。
【００１０】
ＰＣＩマスタは、続くデータを要求するためにＰＣＩリード要求コマンド（ＰＣＩリード２）を出力する（ステップＳ８０７）。そして、ステップＳ８０１〜８０６と同様の処理が実行される。
【００１１】
例えば、図８に示されている例では、ＰＣＩマスタは、ＰＣＩリード要求コマンド（ＰＣＩリード１）を出力した後、８バイトのデータしか受けとらない。通常のＰＣＩスレーブは、バッファメモリに格納したデータのメモリにおけるアドレスを管理していないため、ＰＣＩリード要求２を新たな要求として受け付ける。よって、ＰＣＩスレーブは、バッファメモリに残っている８バイトと同じデータを再度読み出す（ステップＳ８０８）。したがって、ＰＣＩスレーブが３２バイトのデータを転送するためには、ステップＳ８０１〜８０６と同様の処理が４回実行されなければならない。
【００１２】
図９は、ＰＣＩスレーブの動作を簡略化して示すフローチャートである。図９（ａ）に示されている例では、ＰＣＩスレーブは、ＰＣＩマスタからメモリに格納されているデータの読み出し指示を入力すると（ステップＳ９０１）、ウェイトサイクルを挿入する（ステップＳ９０２）。そして、メモリからのデータの読み出しが完了すると、ＰＣＩスレーブは、ＰＣＩマスタにデータを転送する（ステップＳ９０３）。
【００１３】
また、図９（ｂ）に示されている例では、ＰＣＩスレーブは、ＰＣＩマスタからメモリに格納されているデータの読み出し指示を入力すると（ステップＳ９０１）、ＰＣＩリトライ応答をする（ステップＳ９０４）。そして、メモリからのデータの読み出しが完了した後にＰＣＩリード再要求を入力すると（ステップＳ９０５）、ＰＣＩスレーブは、ＰＣＩマスタにデータを転送する（ステップＳ９０３）。この例は、図８に示されている例に対応する。
【００１４】
以上のことから、図８および図９（ｂ）に示されたデータ転送方法では、次のような問題点があることがわかる。
（１）ＰＣＩマスタが１つのＰＣＩリード要求コマンドを完了するためには、２度のＰＣＩリード要求コマンド（例えば、図８に示されている例ではステップＳ８０１とステップＳ８０５）を毎回行う必要がある。すなわち、ＰＣＩマスタにデータを転送する際に、毎回リトライ応答が実行される。
（２）ＰＣＩスレーブは、同じデータを２度読み出している（例えば、図８に示されている例ではステップＳ８０４とステップＳ８０８）。
【００１５】
上記の（１）および（２）における問題は、ＰＣＩによるデータ転送において、その開始アドレスおよびデータ量がＰＣＩマスタに依存していることに起因する。その結果、ＰＣＩバス上に無駄なサイクル（例えば、リトライサイクルやウェイトサイクル）が実行されてしまう。
【００１６】
そこで、本発明は、ＰＣＩバスにおける無駄なサイクルの発生を低減させて、ＰＣＩバスの連続したデータのリード転送性能を向上させることができるデータ転送方法およびデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明によるデータ転送方法は、ＰＣＩバスにおける連続したデータを転送するデータ転送方法であって、ＰＣＩリード要求コマンドに応じて、要求されたデータを記憶手段から読み出してバッファメモリに格納するステップと、バッファメモリに格納したデータの記憶手段におけるアドレスを記憶するステップとを含み、アドレスにもとづいてＰＣＩマスタデバイスに転送するデータを制御することを特徴とする。
【００１８】
本発明によるデータ転送方法は、ＰＣＩリード要求コマンドを入力した際に、記憶したアドレスにもとづいてＰＣＩリード要求コマンドに対応するデータがバッファメモリに格納されているか否かを判定するステップを含み、ＰＣＩリード要求コマンドに対応するデータがバッファメモリに格納されていると判定した場合、バッファメモリに格納されたデータをＰＣＩマスタデバイスに転送することが好ましい。
【００１９】
本発明によるデータ転送方法は、バッファメモリに格納されているデータが有効か否かを判定するステップを含み、バッファメモリに格納されているデータが無効であると判定された場合に、要求されたデータを記憶手段から読み出してバッファメモリに格納するステップを実行することが好ましい。
【００２０】
また、本発明によるデータ転送方法は、バッファメモリに格納されたデータがＰＣＩマスタデバイスに転送されたときに、バッファメモリに格納されているデータを無効にするように構成されていてもよい。
【００２１】
また、本発明によるデータ転送方法は、ＰＣＩリード要求コマンドがあると、あらかじめ決められている量のデータを記憶手段から読み出してバッファメモリに格納し、記憶手段に格納されていないデータを要求するＰＣＩリード要求コマンドを入力するまで、記憶手段からの次のデータの読み出しを実行しないように構成されていてもよい。
【００２２】
本発明によるデータ転送装置は、ＰＣＩバスにおける連続したデータの転送を実行するデータ転送装置であって、ＰＣＩマスタデバイスからのＰＣＩリード要求コマンドにしたがってＰＣＩバスを制御する制御手段と、ＰＣＩ要求コマンドに応じて要求されたデータを記憶手段から読み出し、バッファメモリに格納するデータ読み出し手段と、データ読み出し手段によってバッファメモリに格納されたデータの記憶手段におけるアドレスを記憶する管理情報記憶手段とを備え、制御手段は、アドレスにもとづいて転送するデータを制御することを特徴とする。
【００２３】
本発明によるデータ転送装置における制御手段は、ＰＣＩマスタデバイスからＰＣＩリード要求コマンドを入力した場合、情報管理手段が記憶したアドレスにもとづいてＰＣＩリード要求コマンドに対応するデータがバッファメモリに格納されているか否かを判定し、ＰＣＩリード要求コマンドに対応するデータがバッファメモリに格納されていると判定した場合、バッファメモリに格納されたデータをＰＣＩマスタデバイスに転送することが好ましい。
【００２４】
本発明によるデータ転送装置における管理情報記憶手段は、バッファメモリに格納されているデータが有効か否かを示す有効情報を記憶し、データ読み出し手段は、有効情報が無効を示している場合に、データを記憶手段から読み出すように構成されていることが好ましい。
【００２５】
本発明によるデータ転送装置における制御手段は、バッファメモリに格納されているデータがＰＣＩマスタデバイスに転送されたときに、有効情報を無効を示す状態にするように構成されていてもよい。また、制御手段は、ＰＣＩマスタデバイスからのＰＣＩリード要求コマンドで、バッファメモリに格納されているデータの記憶手段におけるアドレスとは異なるアドレスのデータを要求されたときに、有効情報を無効を示す状態にするように構成されていてもよい。
【００２６】
また、本発明によるデータ転送装置におけるデータ読み出し手段は、ＰＣＩマスタデバイスからＰＣＩリード要求コマンドがあると、あらかじめ決められている量のデータを記憶手段から読み出してバッファメモリに格納し、当該データ読み出し手段は、記憶手段に格納されていないデータを要求するＰＣＩリード要求コマンドを入力するまで、記憶手段からの次のデータの読み出しを実行しないように構成されていてもよい。
【００２７】
本発明による好ましい態様のデータ転送装置は、データをメモリから読み出すブロック（例えばＭＭ＿ブロック１０２）と、メモリから読み出されたデータのメモリにおけるアドレスとデータの有効／無効とを管理するブロック（例えばＤＭ＿ブロック１０３）と、ＤＭ＿ブロック１０３から得た情報によりＰＣＩバスを制御するブロック（例えばＰＭ＿ブロック１０１）とを有することを特徴とする。そのように構成されることによって、ＰＣＩバス上の無駄なサイクルを減らすことができ、ＰＣＩバスの連続したデータのリード転送性能を向上させることができる。
【発明の効果】
【００２８】
本発明によれば、ＰＣＩバス上の無駄なサイクルを削減し、ＰＣＩバスにおける連続したデータの転送速度を向上させることができる。
【発明を実施するための最良の形態】
【００２９】
実施の形態１．
以下、本発明の実施の形態を図面を参照して説明する。図１は、本発明によるデータ転送装置を含むデータ転送システムの一構成例を示すシステム構成図である。データ転送装置１００は、ＰＭ＿ブロック（ＰＣＩ管理ブロック）１０１と、ＭＭ＿ブロック（メモリ管理ブロック）１０２と、ＤＭ＿ブロック（データ管理ブロック）１０３と、ＤＢ＿ブロック（バッファメモリ）１０４とを含む。ＰＭ＿ブロック１０１およびＤＢ＿ブロック１０４はＰＣＩバス３００に接続されている。また、ＭＭ＿ブロック１０２は、メモリ２００にアクセス可能である。
【００３０】
ＰＭ＿ブロック１０１は、ＤＭ＿ブロック１０３からの情報に従ってＰＣＩバスを制御する機能を有する。具体的には、ＰＭ＿ブロック１０１は、ＰＣＩバス３００を介してＰＣＩマスタからＰＣＩリード要求コマンドを入力したり、ＰＣＩリトライ応答等の処理を実行する。例えば、ＰＭ＿ブロック１０１は、ディレイドトランザクションに則ってＰＣＩバスを制御する。ＰＭ＿ブロック１０１は、ＰＣＩリード要求コマンドを入力すると、ＭＭ＿ブロック１０２に対してメモリ２００からデータを読み出すことを要求する。すなわち、ＰＭ＿ブロック１０１は、入力したＰＣＩコマンドにしたがってＭＭ＿ブロック１０２にメモリアクセスを行わせるとともに、ＤＢ＿ブロック１０４に格納されているデータをＰＣＩバスに送出する制御手段に相当する。
【００３１】
ＭＭ＿ブロック１０２は、ＰＭ＿ブロック１０１からの要求およびＤＭ＿ブロック１０３からの情報に従ってメモリアクセスを制御する。具体的には、ＭＭ＿ブロック１０２は、ＰＭ＿ブロック１０１がＰＣＩリード要求コマンドを入力したことにもとづいてメモリ２００からデータを読み出すことを要求した場合に、メモリ２００からデータを読み出す。メモリ２００から読み出されたデータは、ＤＢ＿ブロック１０４に格納される。ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に格納されたデータのメモリ２００におけるアドレスを、管理情報記憶手段としてのＤＭ＿ブロック（データ管理ブロック）１０３に記憶させる管理手段である。
【００３２】
ＰＭ＿ブロック１０１およびＭＭ＿ブロック１０２は、例えば、制御機能および管理機能を実現するハードウェア回路（論理回路）で実現されている。
【００３３】
ＤＭ＿ブロック１０３は、メモリ２００から読み出されたデータのメモリ２００におけるアドレスやデータの有効／無効に関する情報（以下、有効情報という。）等を記憶する。有効情報とは、ＰＣＩマスタに転送できるデータがＤＢ＿ブロック１０４に存在しているか否かを示す情報である。すなわち、ＤＢ＿ブロック１０４に空き領域があるか否かを示す情報である。有効情報が「有効」を示している場合には、ＰＣＩマスタに転送できるデータがＤＢ＿ブロック１０４に存在していることを示し、有効情報が「無効」を示している場合には、ＰＣＩマスタに転送できるデータがＤＢ＿ブロック１０４に存在していないことを示す。換言すれば、ＤＢ＿ブロック１０４に空き領域が存在していることを示す。なお、ＤＢ＿ブロック１０４に空き領域があるか否かを特定しうるような情報であれば、有効情報として、どのような情報を用いてもよい。後述する図２に示されている例では、ＰＣＩマスタにデータが転送されることにより、有効情報が無効を示す状態にされる。なお、有効情報が無効を示す状態であるということは、ＤＢ＿ブロック１０４の領域に新たなデータを上書きしてもよいということを示す。
【００３４】
ＤＢ＿ブロック１０４は、ＦＩＦＯ機能を有していてもよいし、単なるバッファであってもよい。本実施の形態では、ＤＭ＿ブロック１０３は、８バイトの第１バッファメモリと８バイトの第２バッファメモリとを含むとする。有効情報として、第１バッファメモリに対応する第１有効情報と、第２バッファメモリに対応する第２有効情報とがある。
【００３５】
次に、本実施の形態のデータ転送装置１００の動作を説明する。図２は、データ転送装置１００を含むデータ転送システムの処理を説明するためのシーケンス図である。なお、図２では、図８に示されたデータ転送方法と同一の動作に対して、図８における符号と同一の符号が付されている。マスタデバイス（以下、ＰＣＩマスタという。）が３２バイトのデータを読み出そうとしている場合について説明する。ＰＣＩマスタにおけるバッファサイズは８バイトであって、ＰＣＩマスタは８バイトずつＰＣＩスレーブからデータを入力するとする。
【００３６】
データ転送装置１００がデータを読み出すメモリ２００のデータをＰＣＩマスタが必要とする場合に、ＰＣＩマスタは、データ転送装置１００に対してリード要求コマンド（ＰＣＩリード１）を出力する（ステップＳ８０１）。ＰＭ＿ブロック１０１は、ＰＣＩリード要求コマンドを入力する。
【００３７】
ＭＭ＿ブロック１０２は、メモリ２００からデータを読み出す処理（メモリ読み出し１）を実行する（ステップＳ８０２）。ＭＭ＿ブロック１０２は、メモリ２００からすぐにデータを読み出すことができない。すなわち、ＰＣＩマスタにすぐにデータを出力できない。そこで、ＰＭ＿ブロック１０１は、リトライ応答（リトライ応答１）をする（ステップＳ８０３）。なお、ＭＭ＿ブロック１０２は、有効情報が無効を示している状態であるときにメモリ２００からデータを読み出すが、初期状態では、有効情報は無効を示している状態である。
【００３８】
ＭＭ＿ブロック１０２は、メモリ２００からデータ（例えば、８バイトのデータ）を読み出し（読み出しデータ１）、更に、次のデータ（例えば、８バイトのデータ）の読み出し処理（メモリ読み出し２プリフェッチ）を実行する（ステップＳ８０４）。読み出されたデータはＤＢ＿ブロック１０４に格納される。本実施の形態では、ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に空き領域が存在しなくなるまで、メモリ２００からデータ読み出す。よって、この例では、第１バッファメモリと第２バッファメモリとの双方にデータが格納される。また、ＭＭ＿ブロック１０２は、ＤＭ＿ブロック１０３に記憶されている第１有効情報を有効を示す状態にするとともに、第２有効情報を有効を示す状態にする。
【００３９】
ＤＭ＿ブロック１０３は、読み出されたデータのメモリ２００におけるアドレスを記憶する。例えば、第１バッファメモリの先頭に格納されたデータのメモリ２００におけるアドレスを記憶し、第２バッファメモリの先頭に格納されたデータのメモリ２００におけるアドレスを記憶する。なお、この実施の形態では、ＤＭ＿ブロック１０３に記憶されるアドレスに関する情報は、先頭に格納されたデータのアドレスのみであるが、そのように制御することは一例であって、例えば、先頭に格納されたデータのアドレスに加えて、バッファメモリに何バイトの有効なデータが格納されているのかを示す情報が記憶されるようにしてもよい。
【００４０】
ＰＣＩマスタは、数サイクル後に再度ＰＣＩリード要求コマンド（ＰＣＩリード１再要求）をＰＭ＿ブロック１０１に出力する（ステップＳ８０５）。ＭＭ＿ブロック１０２がメモリ２００からのデータの読み出しを完了した（すなわち、データ転送の準備ができた）後にＰＣＩリード再要求があれば、ＤＢ＿ブロック１０４からＰＣＩマスタにデータが転送される。図２に示されている例では、ＭＭ＿ブロック１０２によるメモリ２００からのデータ読み出しが完了しているため、データ転送装置１００は、データ転送応答（データ転送１）をする（ステップＳ８０６）。
【００４１】
ＰＣＩマスタは、自身が持っているバッファサイズ分のデータを受け取ると、データ転送装置１００からのデータ転送を終了させる。すなわち、ＰＣＩマスタは、ＰＣＩバスのプロトコルにしたがってトランザクションを終了する。
【００４２】
データを転送するとＤＢ＿ブロック１０４に空きができるため、ＭＭ＿ブロック１０２は、自動的に次のデータ（読み出しデータ３）をメモリ２００から読み出す（ステップＳ１０１）。ＭＭ＿ブロック１０２は、既に読み出されたデータのアドレスの次のアドレスからデータを読み出す。すなわち、ＭＭ＿ブロック１０２は、次のデータ（読み出しデータ３）をメモリ２００から読み出す。なお、ＭＭ＿ブロック１０２は、メモリ２００から読み出されたデータがそのバッファメモリに格納されると、バッファメモリに格納されたデータを有効と見なす。すなわち、有効情報を有効を示す状態にする。また、ＰＭ＿ブロック１０１は、ＰＣＩマスタにデータが転送されたときに、バッファメモリに格納されていたデータを無効と見なす。すなわち、そのデータが格納されていたバッファメモリに対応する有効情報を無効を示す状態にする。
【００４３】
ＰＣＩマスタは、データ転送装置１００からデータを受け取ると、続くデータのＰＣＩリード要求コマンド（ＰＣＩリード２）をデータ転送装置１００に出力する（ステップＳ８０７）。ＰＣＩリード要求コマンドを入力すると、ＰＭ＿ブロック１０１は、そのＰＣＩリード要求コマンド（ＰＣＩリード２）に対する要求データ（ＰＣＩリード要求コマンドで転送要求されたアドレスのデータ）が既にＤＢ＿ブロック１０４に存在しているか否か判定する。具体的には、ＰＭ＿ブロック１０１は、ＤＭ＿ブロック１０３が有するアドレスおよび有効情報によって、要求データがＤＢ＿ブロック１０４に存在しているか否か判定する。図２における例では既に要求データが読み出されているため（読み出しデータ２）、ＰＭ＿ブロック１０１は、データ転送応答（データ転送２）をする（ステップＳ１０２）。
【００４４】
データ転送装置１００は、ＤＭ＿ブロック１０３に記憶されている、メモリ２００から読み出されたデータのアドレス情報を管理しているため、２回目のＰＣＩリード要求コマンド（ＰＣＩリード２）を新たなＰＣＩリード要求コマンドとみなすことはない。例えば図２に示されている例では、メモリ２００から読み出されたデータのメモリ２００におけるアドレスがＤＭ＿ブロック１０３に記憶されているため、ＭＭ＿ブロック１０２は、ＰＣＩマスタにリトライ応答することなくデータを転送できる。
【００４５】
したがって、図８に示されたデータ転送方法のように、同じデータを２回読み出すことはない。その結果、データ転送装置１００は、連続したデータのリード転送性能を向上させることができる。
【００４６】
次に、ＰＭ＿ブロック１０１の動作を説明する。図３は、ＰＭ＿ブロック１０１の動作を示すフローチャートである。ＰＣＩマスタからＰＣＩリード要求コマンドを入力すると、ＰＭ＿ブロック１０１は、要求データがＤＢ＿ブロック１０４に格納されているか否か判定する。具体的には、ＰＭ＿ブロック１０１は、ＤＭ＿ブロック１０３が記憶している情報（アドレスおよび有効情報）にもとづいて判定する（ステップＳ３０１）。なお、ＰＭ＿ブロック１０１は、ＤＢ＿ブロック１０４に格納されているデータが有効である場合に、ＰＣＩマスタからのＰＣＩリード要求コマンドでＤＭ＿ブロック１０３が記憶しているアドレスとは異なるアドレスのデータが要求された場合には、有効情報を無効を示す状態に変更し、ステップＳ３０４に移行する。
【００４７】
ＤＢ＿ブロック１０４に要求データが格納されていると判定した場合（ステップＳ３０１：ＹＥＳ）、ＰＭ＿ブロック１０１は、要求データがＤＢ＿ブロック１０４からＰＣＩマスタに転送されるように制御する（ステップＳ３０２）。そして、ＤＢ＿ブロック１０４に格納されているデータが無効化される。すなわち、ＰＭ＿ブロック１０１は、転送したデータに対応した、ＤＭ＿ブロック１０３が記憶している有効情報を無効を示す状態にする（ステップＳ３０３）。以後、ＭＭ＿ブロック１０２は、無効の状態を示す有効情報に対応したＤＢ＿ブロック１０４の領域に、メモリ２００から読み出されたデータを格納することができる。
【００４８】
ＤＢ＿ブロック１０４に要求データが格納されていないと判定した場合（有効情報が無効の状態であった場合、またはＤＭ＿ブロック１０３が記憶しているアドレスとは異なるアドレスのデータが要求され有効情報が無効を示す状態に変更された場合）には（ステップＳ３０１：ＮＯ）、ＰＭ＿ブロック１０１は、ＰＣＩマスタに対してＰＣＩリトライ応答をする（ステップＳ３０４）。そして、ＰＭ＿ブロック１０１は、メモリ２００からデータを読み出す要求をＭＭ＿ブロック１０２に出す（ステップＳ３０５）。
【００４９】
次に、ＭＭ＿ブロック１０２の動作を説明する。図４は、ＭＭ＿ブロック１０２の動作を示すフローチャートである。ＭＭ＿ブロック１０２は、ＰＭ＿ブロック１０１からＰＣＩリード要求コマンドを入力すると、メモリ２００からのデータの読み出しを実行する。
【００５０】
まず、ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に空きがあるか否か判定する（ステップＳ４０１）。例えば、ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に記憶されているデータに対応した有効情報が無効を示す状態であるか否かを判定することによって、ＤＢ＿ブロック１０４に空きがあるか否か判定する。無効を示す有効情報がＤＭ＿ブロック１０３に存在する場合、ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に空きがあると判定する。
【００５１】
ＤＢ＿ブロック１０４に空きがある場合（ステップＳ４０１：ＹＥＳ）、ＭＭ＿ブロック１０２は、メモリ２００からのデータの読み出しを実行する（ステップＳ４０２）。
【００５２】
以上のように、データ転送装置１００は、ＤＭ＿ブロック１０３に記憶されている情報にもとづいてメモリ２００から読み出したデータのメモリ２００におけるアドレスを管理しているため、２回目のＰＣＩリード要求コマンド（例えば、図２におけるＰＣＩリード２）を新たなＰＣＩリード要求コマンドとみなすことはない。したがって、データ転送装置１００は、無駄なリトライ応答（例えば、図８に示されたデータ転送方法におけるリトライ応答２）を実行することなく、ＰＣＩマスタにデータを転送できる。
【００５３】
上述したように、本実施の形態のデータ転送装置１００は、ＰＣＩマスタが連続したデータの読み出しを数回のトランザクションに分けて実行した際に、無駄なＰＣＩサイクルを減らすことができる。その結果、データの転送性能が向上する。
【００５４】
また、データ転送装置１００は、メモリ２００への無駄なアクセス（例えば、図８におけるステップＳ８０８におけるメモリ読み出し２）を減らすことができるため、メモリ２００を共有する他のリソースの性能を向上させることができる。
【００５５】
なお、本実施の形態では、ＰＭ＿ブロック１０１は、プリフェッチバッファ単位で、すなわち第１バッファメモリと第２バッファメモリとのそれぞれに対応して、有効情報を管理しているが、すなわち、バッファメモリ単位で有効情報を管理（有効を示す状態から無効を示す状態に、または無効を示す状態から有効を示す状態に変化させる）しているが、そのような管理の仕方は一例である。他の任意の単位、例えば１バイトや４バイト単位や複数バッファメモリ単位（例えば２バッファメモリ単位）で管理してもよい。
【００５６】
実施の形態２．
次に、第２の実施の形態を図面を参照して説明する。図５は、第２の実施の形態のデータ転送装置を含むデータ転送システムにおける処理を説明するためのシーケンス図である。データ転送装置１００は、ＰＣＩマスタからの一度のＰＣＩリード要求コマンドに対して、あらかじめ決められた量のデータをメモリ２００から読み出す。なお、図５では、図８に示されたデータ転送方法における処理と同一の処理に対して、図８における符号と同一の符号が付されている。
【００５７】
データ転送システムでは、第１の実施の形態と同様に、ステップＳ８０１〜８０６における処理が実行される。そして、データ転送装置１００は、第１の実施の形態とは異なり、有効情報が無効を示す状態であっても、データを転送した後（すなわち、ステップＳ８０６における処理の後）のメモリ読み出しプリフェッチ（図２におけるステップＳ１０１の処理）を実行しない。そして、データ転送装置１００は、ＰＣＩマスタからＰＣＩリード要求コマンド（ＰＣＩリード２）を入力すると（ステップＳ８０７）、ＤＭ＿ブロック１０３に格納されているデータをＰＣＩマスタに転送する（ステップＳ２０１）。
【００５８】
ＰＭ＿ブロック１０１は、ＤＭ＿ブロック１０３に格納されているすべてのデータがＰＣＩマスタに転送されたときに、ＤＭ＿ブロック１０３に記憶されている有効情報を無効の状態にする。
【００５９】
ＰＣＩマスタは、データ転送装置１００からデータを受け取ると、続くデータを要求するためにＰＣＩリード要求コマンド（ＰＣＩリード３）をデータ転送装置１００に出力する（ステップＳ２０２）。ＰＭ＿ブロック１０１がＰＣＩリード要求コマンドを入力したことに応じてメモリ２００からデータを読み出すことを要求すると、ＭＭ＿ブロック１０２は、その要求に対する要求データが既にＤＢ＿ブロック１０４に存在しているか否か判定する。
【００６０】
ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に格納されているデータに対応した有効情報が有効を示している状態であるか否か判定することによって、ＤＢ＿ブロック１０４に要求データが格納されているか否か判定する。有効を示す状態の有効情報がＤＭ＿ブロック１０３に存在する場合、ＭＭ＿ブロック１０２は、ＤＢ＿ブロック１０４に要求データが格納されていると判定する。
【００６１】
図５における例では要求されたデータが読み出されていないため、無効を示す状態の有効情報が存在し、ＭＭ＿ブロック１０２は、メモリ２００からデータを読み出す処理（メモリ読み出し３）を実行する（ステップＳ２０３）。
【００６２】
なお、ＭＭ＿ブロック１０２は、要求されたデータをすぐにメモリ２００から読み出すことができない。すなわち、ＰＭ＿ブロック１０１は、ＰＣＩマスタにすぐにデータを出力できないため、リトライ応答（リトライ応答３）をする（ステップＳ２０４）。そして、ＭＭ＿ブロック１０２は、メモリ２００からデータを読み出し（読み出しデータ３）、更に、次のデータの読み出し処理（メモリ読み出し４プリフェッチ）を実行する（ステップＳ２０５）。
【００６３】
以上のように、ＭＭ＿ブロック１０２は、一度のＰＣＩリード要求コマンドに対して、あらかじめ決められた量のデータをメモリ２００から読み出す。この例では、第１バッファメモリのサイズと第２バッファメモリのサイズとの和である１６バイトのデータをメモリ２００から読み出す。
【００６４】
次に、ＭＭ＿ブロック１０２の動作を説明する。図６は、ＭＭ＿ブロック１０２の動作を示すフローチャートである。ＰＭ＿ブロック１０１がＰＣＩリード要求コマンドを入力したことに応じてメモリ２００からデータを読み出すことを要求した場合に、ＭＭ＿ブロック１０２は、メモリ２００から決められた量のデータを読み出す処理を実行する。
【００６５】
すなわち、ＭＭ＿ブロック１０２は、決められた量のデータをメモリ２００から読み出すまで（ステップＳ６０１）。データをメモリ２００から読み出す処理（ステップＳ６０２）を繰り返す。読み出されたデータは、ＤＢ＿ブロック１０４に格納される。
【００６６】
次に、ＰＭ＿ブロック１０１の動作を説明する。図７は、ＰＭ＿ブロック１０１の動作を示すフローチャートである。なお、図７では、図３に示された第１の実施の形態のＰＭ＿ブロック１０１の動作と同一の動作に対して、図３における符号と同一の符号が付されている。
【００６７】
ＰＣＩマスタからＰＣＩリード要求コマンドを入力すると、ＰＭ＿ブロック１０１は、要求データがＤＢ＿ブロック１０４に格納されているか否か判定する（ステップＳ３０１）。具体的には、ＰＭ＿ブロック１０１は、ＤＭ＿ブロック１０３が有する情報（アドレスおよび有効情報）にもとづいて判定する。
【００６８】
ＤＢ＿ブロック１０４に要求データが格納されていると判定した場合には（ステップＳ３０１：ＹＥＳ）、ＰＭ＿ブロック１０１は、要求データがＤＢ＿ブロック１０４からＰＣＩマスタに転送されるように制御する（ステップＳ３０２）。
【００６９】
ＤＢ＿ブロック１０４に要求データが格納されていないと判定した場合（ステップＳ３０１：ＮＯ）、ＰＭ＿ブロック１０１は、ＰＣＩマスタに対してＰＣＩリトライ応答をする（ステップＳ３０４）。そして、ＰＭ＿ブロック１０１は、メモリ２００からデータを読み出す要求をＭＭ＿ブロック１０２に出す（ステップＳ３０５）。
【００７０】
以上のように、本実施の形態のデータ転送装置１００は、ＰＣＩマスタからの一度のＰＣＩリード要求コマンドに対して、あらかじめ決められた量のデータをメモリ２００から読み出す。そして、ＤＢ＿ブロック１０４に格納されていないデータを要求するＰＣＩリード要求コマンドを入力するまで、メモリ２００からの次のデータの読み出しを実行しない。また、第１の実施の形態の場合と同様に、ＰＣＩリード要求コマンドを入力したときに、出力できるデータがＤＢ＿ブロック１０４に格納されている場合には、そのデータを直ちにＰＣＩマスタに出力する。この実施の形態は、ＰＣＩマスタが、あるアドレスブロック（アドレスが連続する複数領域）のデータを入力し、入力したデータにもとづいて処理を行い、処理の結果に応じて他のアドレスブロックのデータを入力し、入力したデータにもとづいて処理を行うような制御を繰り返し実行するような場合に有意義である。
【００７１】
なお、本実施の形態では、ＤＭ＿ブロック１０３に格納されているすべてのデータがＰＣＩマスタに転送されたときに有効情報が無効の状態に変更されたが、データがＰＣＩマスタに転送されても有効情報を無効の状態に変更せず、ＰＣＩマスタからのＰＣＩリード要求コマンドでＤＭ＿ブロック１０３が記憶しているアドレスとは異なるアドレスのデータが要求された場合に有効情報を無効を示す状態に変更するようにしてもよい。また、任意の単位、例えば１バイトや４バイト単位または１つのバッファメモリ単位や複数のバッファメモリ単位で管理してもよい。
【００７２】
実施の形態３．
図１に示されているデータ転送装置１００のブロックを多重化して、データの転送性能を向上させるようにしてもよい。
【００７３】
ブロックが多重化される場合には、データ転送装置１００は、例えば、複数のＤＭ＿ブロック１０３を有するように構成される。そのように構成される場合には、データ転送装置１００は、メモリ２００から並列にデータを読み出すことができ、データの転送性能をさらに向上することができる。
【産業上の利用可能性】
【００７４】
本発明は、ＰＣＩバスを備えた装置やシステムに適用される。
【図面の簡単な説明】
【００７５】
【図１】データ転送装置を含むデータ転送システムの一構成例を示すシステム構成図である。
【図２】データ転送システムの処理を説明するためのシーケンス図である。
【図３】ＰＭ＿ブロック１０１の動作を示すフローチャートである。
【図４】ＭＭ＿ブロック１０２の動作を示すフローチャートである。
【図５】第２の実施の形態におけるデータ転送装置１００を含むデータ転送システムの処理を説明するためのシーケンス図である。
【図６】第２の実施の形態のＭＭ＿ブロック１０２の動作を示すフローチャートである。
【図７】第２の実施の形態のＰＭ＿ブロック１０１の動作を示すフローチャートである。
【図８】マスタデバイスおよびスレーブデバイスによるデータ転送方法の処理を簡略化して示すシーケンス図である。
【図９】図８に示された例におけるＰＣＩスレーブの動作を簡略化して示すフローチャートである。
【符号の説明】
【００７６】
１００  データ転送装置
１０１  ＰＭ＿ブロック
１０２  ＭＭ＿ブロック
１０３  ＤＭ＿ブロック
１０４  ＤＢ＿ブロック
２００  メモリ
３００  ＰＣＩバス
【図１】
2008112324.tif 000003
【図２】
2008112324.tif 000004
【図３】
2008112324.tif 000005
【図４】
2008112324.tif 000006
【図５】
2008112324.tif 000007
【図６】
2008112324.tif 000008
【図７】
2008112324.tif 000009
【図８】
2008112324.tif 000010
【図９】
2008112324.tif 000011