(57)【要約】【課題】システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用する。【解決手段】  マスタ別転送長調査部７１は、データ転送処理部７５を制御し、転送長初期値６１が供給された場合、供給された転送長初期値６１を所定のレジスタにセットする。イニシエータよりメモリリード要求を取得すると、マスタ別転送長調査部７１は、マスタ判別部７２を制御してその要求を発行したマスタを判別させる。マスタ別転送長調査部７１は、さらに、データ転送処理部７５を制御し、メモリリード要求に対してリトライを返すとともに、ローカルメモリより転送長初期値分のデータを読み出し、それをキャッシュメモリ２２に蓄積させる。そして、データ蓄積完了後にメモリリード要求を取得すると、転送長計測部７３は、転送長計測処理を実行する。本発明は、例えば、PCIバスシステムに適用できる。【選択図】図３
2005242414.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスが接続されたシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置において、
前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第１の転送処理を実行する転送手段と、
前記転送手段により実行される前記第１の転送処理において、前記マスタデバイスが１回のアクセスにより取得する前記データ量である第２のデータ量を計測する計測手段と、
前記計測手段により計測された前記第２のデータ量に基づいて、前記メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定手段と、
前記設定手段により設定された前記第３のデータ量を記憶する記憶手段とを備え、
前記転送手段は、前記記憶手段により前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記メモリデバイスより、前記記憶手段により記憶された前記第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の転送処理を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記第１のデータ量は、前記計測手段により計測される最大の前記第２のデータ量よりも大きい
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記設定手段は、前記第３のデータ量が前記第２のデータ量と近似するように、前記第３のデータ量を設定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記マスタデバイスを制御してメモリリード要求を発行させる第１の制御手段と、
前記第１の制御手段により制御されて発行される前記メモリリード要求に対して、前記転送手段を制御して前記第１の転送処理を実行させ、前記計測手段を制御して前記第２のデータ量を計測させ、前記設定手段を制御して前記第３のデータ量を設定させ、前記記憶手段を制御して前記第３のデータ量を記憶させる第２の制御手段と
をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記第１の制御手段は、前記マスタデバイスを制御して前記メモリリード要求を複数回発行させ、
前記第２の制御手段は、前記転送手段を制御して、前記第１の制御手段により制御されて発行された複数の前記メモリリード要求のそれぞれに対して前記第１の転送処理を実行させ、前記計測手段を制御して、前記転送手段により複数回実行された前記第１の転送処理のそれぞれについて前記第２のデータ量を計測させ、前記設定手段を制御して、前記計測手段による複数回の計測により得られた複数の前記第２のデータ量に基づいて前記第３のデータ量を設定させ、前記記憶手段を制御して、前記設定手段により設定された前記第３のデータ量を記憶させる
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記設定手段は、前記計測手段による複数回の計測により得られた複数の前記第２のデータ量の平均値、最大値、または最小値を前記第３のデータ量として設定する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記第１の制御手段は、複数の前記マスタデバイスのそれぞれを制御し、前記マスタデバイス毎に前記メモリリード要求を発行させ、
前記第２の制御手段は、前記転送手段、前記計測手段、前記設定手段、および前記記憶手段を制御して、前記マスタデバイス毎に前記第３のデータ量を設定させて記憶させる
ことを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記第１の制御手段は、複数の機能を有するマスタデバイスのそれぞれを制御し、前記マスタデバイスの機能毎に前記メモリリード要求を発行させ、
前記第２の制御手段は、前記転送手段、前記計測手段、前記設定手段、および前記記憶手段を制御して、前記マスタデバイスの機能毎に前記第３のデータ量を設定させて記憶させる
ことを特徴とする請求項４に記載の情報処理装置。
【請求項９】
前記マスタデバイスの前記データ転送の相手のデバイスである複数のターゲットデバイスの中から、前記第２の制御手段が前記第３のデータ量を設定させて記憶させるように制御するターゲットデバイスを特定するターゲットデバイス特定手段をさらに備える
ことを特徴とする請求項４に記載の情報処理装置。
【請求項１０】
前記転送手段により実行される前記第１の転送処理または前記第２の転送処理において要求を発行したマスタデバイスを判別するマスタデバイス判別手段をさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記転送手段により実行される前記第２の転送処理においてディスコネクト処理の発生を監視するディスコネクト監視手段をさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
複数のデバイスが接続されたシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置の情報処理方法であって、
前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第１の転送処理を実行する第１の転送ステップと、
前記第１の転送ステップの処理により実行される前記第１の転送処理において、前記マスタデバイスが１回のアクセスにより取得する前記データ量である第２のデータ量を計測する計測ステップと、
前記計測ステップの処理により計測された前記第２のデータ量に基づいて、前記メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、
前記設定ステップの処理により設定された前記第３のデータ量を記憶するように制御する記憶制御ステップと、
前記記憶制御ステップの処理により制御されて前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記メモリデバイスより、前記記憶制御ステップの処理により制御されて記憶された前記第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の転送処理を実行する第２の転送ステップと
を含むことを特徴とする情報処理方法。
【請求項１３】
複数のデバイスが接続されたシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う処理を、コンピュータに行わせるプログラムにおいて、
前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第１の転送処理を実行する第１の転送ステップと、
前記第１の転送ステップの処理により実行される前記第１の転送処理において、前記マスタデバイスが１回のアクセスにより取得する前記データ量である第２のデータ量を計測する計測ステップと、
前記計測ステップの処理により計測された前記第２のデータ量に基づいて、前記メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、
前記設定ステップの処理により設定された前記第３のデータ量を記憶する様に制御する記憶制御ステップと、
前記記憶制御ステップの処理により前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記メモリデバイスより、前記記憶制御ステップの処理により制御されて記憶された前記第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の転送処理を実行する第２の転送ステップと
を含むことを特徴とするプログラム。
【請求項１４】
複数のデバイスが接続された複数のシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置において、
２つのシステムバスに接続され、前記２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、前記マスタデバイスの前記データ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、前記マスタデバイスに前記データを転送する第１の中継処理を実行する中継手段と、
前記中継手段により実行される前記第１の中継処理において、前記マスタデバイスが１回のアクセスにより前記キャッシュメモリより取得するデータ量である第２のデータ量を計測する計測手段と、
前記計測手段により計測された前記第２のデータ量に基づいて、前記ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定手段と、
前記設定手段により設定された前記第３のデータ量を記憶する記憶手段とを備え、
前記中継手段は、前記記憶手段により前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記ターゲットデバイスより、前記記憶手段により記憶された前記第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の中継処理を実行する
ことを特徴とする情報処理装置。
【請求項１５】
複数のデバイスが接続された複数のシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置の情報処理方法であって、
２つのシステムバスを接続する処理を行い、前記２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、前記マスタデバイスの前記データ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、キャッシュメモリを制御して保持させた後、前記マスタデバイスに前記データを転送する第１の中継処理を実行する中継ステップと、
前記中継ステップの処理により実行される前記第１の中継処理において、前記マスタデバイスが１回のアクセスにより前記キャッシュメモリより取得するデータ量である第２のデータ量を計測する計測ステップと、
前記計測ステップの処理により制御されて計測された前記第２のデータ量に基づいて、前記ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、
前記設定ステップの処理により設定された前記第３のデータ量を記憶する様に制御する記憶制御ステップと、
前記記憶制御ステップの処理により制御されて前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記ターゲットデバイスより、前記記憶制御ステップの処理により制御されて記憶された前記第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の中継処理を実行する第２の中継ステップと
を含むことを特徴とする情報処理方法。
【請求項１６】
複数のデバイスが接続された複数のシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う処理を、コンピュータに行わせるプログラムにおいて、
２つのシステムバスを接続する処理を行い、前記２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、前記データ転送を制御して前記データ転送を行うデバイスであるマスタデバイスの要求に基づいて、前記マスタデバイスの前記データ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、キャッシュメモリを制御して保持させた後、前記マスタデバイスに前記データを転送する第１の中継処理を実行する中継ステップと、
前記中継ステップの処理により実行される前記第１の中継処理において、前記マスタデバイスが１回のアクセスにより前記キャッシュメモリより取得するデータ量である第２のデータ量を計測する計測ステップと、
前記計測ステップの処理により制御されて計測された前記第２のデータ量に基づいて、前記ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、
前記設定ステップの処理により設定された前記第３のデータ量を記憶する様に制御する記憶制御ステップと、
前記記憶制御ステップの処理により制御されて前記第３のデータ量が記憶された後において、前記マスタデバイスの要求に基づいて、前記ターゲットデバイスより、前記記憶制御ステップの処理により制御されて記憶された前記第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、前記データを、前記システムバスを介して前記マスタデバイスに転送する第２の中継処理を実行する第２の中継ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、例えば、不要なデータ転送を抑制することによりバスのトラフィックを軽減させる等して、システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用することができるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、例えばパーソナルコンピュータ等の情報処理装置において、装置内の各デバイスを接続するシステムバスとして、ISAバス（Industry Standard Architecture bus）やPCIバス（Peripheral Components Interconnect bus）等が用いられている。
【０００３】
PCIバスは、PCI SIG(PCI Special Interest Group)により策定されたバス規格であり、長い間業界標準だったISAバスに替わる標準規格として急速に普及している。最初のPCI規格においては、バス幅(１回の転送で送れるデータ量)が32ビット、動作周波数(１秒あたりの転送回数)が33MHz（メガヘルツ）であり、最大データ転送速度は133MB/s（メガバイトパーセカンド）であった。最新のPCI規格においては、バス幅が64ビット、動作周波数が66MHzで、最大データ転送速度が533MB/sの高速な仕様も規定されている。
【０００４】
このPCIバスを用いたPCIバスシステムにおいては、PCIバスに複数のPCIデバイスが接続されており、PCIバスを介して互いに通信を行い、データの転送等を行う。PCIバスシステムの場合、データ転送（PCIデータ転送）を行うPCIデバイスの一方がPCIデータ転送を制御する。このPCIデバイスをマスタと称する。またPCIデータ転送において、マスタの通信相手となるPCIデバイスをターゲット称する。ターゲットは、マスタに制御されて、マスタと通信を行い、データ転送を行う。
【０００５】
これらのPCIデバイスは、PCIバスコントローラにより制御され、マスタからの要求に基づいてバスの使用権が割り当てられる。バスの使用権を得たマスタは、ターゲットを制御してデータ転送等を行う。例えば、マスタがターゲットのローカルバスに接続されたローカルメモリよりデータを取得したい場合、マスタは、PCIバスを介してターゲットに対してリード要求を行うとともに、目的のデータが記録されたアドレスをターゲットに通知する。
【０００６】
リード要求を取得したターゲットは、同時に取得したアドレスに従い、ローカルメモリにアクセスし、要求されたデータを取得する。ただし、一般的に、システムバスであるPCIバスと、ローカルバスとでは動作周波数等も異なり、転送速度が異なる。また、ローカルメモリがターゲットにデータの読み出しを要求されてから、そのデータを出力するまでの時間であるローカルメモリの応答時間も場合により常に一定であるとは限らない。さらに、ローカルバスにも他のローカルデバイス等が接続されており、それらの間でも通信が行われるので、ローカルバスのトラフィックが変化し、その転送速度が一定であるとは限らない。
【０００７】
そこで、ターゲットは、ローカルメモリより読み出したデータを、一旦、キャッシュメモリ等に蓄積し、要求されたデータが全てキャッシュメモリに蓄積され、すぐにPCIバスを介してマスタに供給できる準備が整うまで、PCIバスを介したデータ転送は行わずに待機する。その間、ターゲットは、マスタに対してリトライを返し、マスタに、PCIバスを他のデバイスに開放させる。
【０００８】
マスタは、リトライを検出すると、一旦はPCIバスを他のデバイスに解放するが、実際には、マスタのデータ転送の効率化を考慮し、すぐにまたPCIバスの使用権を確保してしまう。バスの使用権を確保すると、マスタは、再度メモリリード要求をターゲットに供給する。ターゲットは、データ転送の準備が整っている場合、データ転送を開始する。データ転送の準備が整っていない場合、ターゲットは、再度リトライをマスタに返す。
【０００９】
このように、各PCIデバイスが行うPCIデータ転送は、そのデータ転送処理において、場合によって待機時間が生じることもあるリアルタイム性（即時性）が保障されないデータ転送である。
【００１０】
ところで、この待機時間について、例えば、マスタが１度のアクセス（１回のコマンド発行）により複数ワードのデータを転送させる方法（バースト転送）もある。このようなバースト転送を用いることにより、マスタは、コマンド発行によるバスのトラフィックを軽減させ、PCIバスシステムの利用効率を高めることができる。なお、ワードは、メモリの読み出し単位であり、１ワードは、例えば、２バイトである。
【００１１】
また、マスタの待機時間に関する情報を予め用意したターゲットを用いることにより、リトライによるトランザクションを削減する方法もある（例えば、特許文献１参照）。この場合、ターゲットの所定のレジスタに、予めレイテンシ情報、すなわち、ターゲットが要求を受けてからデータ転送の準備が整うまでの時間に関する情報を保持させておき、マスタからのアクセス要求に応答して、マスタにその情報を供給するようにする。マスタは、その情報を取得すると、そのターゲットに対してPCIデータ転送を要求する場合、リトライを検出後、そのターゲットより供給されたレイテンシ情報により指定された時間待機してから転送要求を行う。すなわち、この場合、ターゲットの準備が整うまでイニシエータは、要求の繰返しを行わない。
【００１２】
【特許文献１】特開平１０−２９３７４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、例えば映像機器や放送局用サーバ等におけるバスシステムの場合、映像データや音声データ等の大容量のデータを頻繁に転送させる必要がある。また、このような映像機器においては、例えば外部より取り込んだ映像データ等を記録媒体に記録したり、記録媒体に記録されている映像データ等を再生し、モニタに表示したり、外部に出力したりする処理が主に行われる。従って、バスシステムにおける各データ転送は、即時性を必要とするものが多く、バスのトラフィックが増大した場合、待機時間が長くなりすぎ、記録処理や再生処理等が破綻してしまう恐れがある。従って、このような映像機器や放送局用サーバ等におけるバスシステムの場合、データ転送にリアルタイム性が要求される。
【００１４】
ところが、このような映像機器や放送局用サーバ等のシステムバスとして、上述したような汎用のPCIバスを用いる場合、それらの製造コストを低減させることができるが、PCIデータ転送においては、リアルタイム性（即時性）が保障されない。そこで、なるべくトラフィックを軽減させ、バスを有効活用させ、待機時間等を削減することが重要になる。
【００１５】
そこで、上述した特許文献１のように、マスタのレイテンシ時間を調整し、リトライ処理を軽減させる方法が提案されているが、マスタがデータを要求するターゲットのローカルメモリが接続されたローカルバスのトラフィックについては考慮されていない。
【００１６】
従来のPCIバスシステムにおいては、例えば上述したように、マスタがターゲットにローカルバスを介して接続されたローカルメモリよりデータを読み出す場合、ターゲットは、マスタに要求されたデータをキャッシュメモリに蓄積する。このとき、上述したように、マスタがバースト転送を用いてデータを要求する場合もあるので、ターゲットは、不要な処理が発生しないように、マスタが必要とする量のデータをキャッシュメモリに蓄積してからマスタに供給するようにする。
【００１７】
しかしながら、マスタが一度に要求するデータ量（ワード数）は、各マスタによって異なる。ターゲットは、どのマスタがどの程度のデータ量を連続で読み出すかがわからないので、不要な処理が発生しないように、大量のデータ（例えば、２３ワード）をローカルメモリより読み出し、キャッシュに蓄積する。
【００１８】
また、マスタがシングルワード用のリードコマンド（シングルリード）を発行しながら複数ワードのデータを連続読み出しする（バースト転送を行う）場合もあり、ターゲットは、不要な処理が発生しないように、常に大量のデータをローカルメモリより読み出し、キャッシュに蓄積しなければならない。
【００１９】
従って、例えば、マスタによってはシングルリードしか実行できないのに、そのマスタにデータを要求されたターゲットは、ローカルメモリより不要なデータを含む大量のデータを読み出し、キャッシュに蓄積してしまい、不要にローカルバスのトラフィックを増大させてしまう恐れがあった。ローカルバスには、通常、ローカルメモリ以外のローカルデバイスも接続されており、それらのローカルデバイスも互いにデータ転送を行い、ローカルバスを利用する。
【００２０】
そのようなローカルバスであっても、上述したように、例えば映像機器や放送局用サーバ等においては、リアルタイム性（即時性）が要求されるデータ転送が行われることが多く、上述したように、マスタよりリード要求を取得したターゲットが、不要にローカルバスを占有することにより、記録処理や再生処理が破綻してしまう恐れがあるという課題があった。
【００２１】
また、ターゲットが不要なデータをキャッシュメモリに蓄積することにより、ターゲットがデータ転送の準備を整える時間が不要に長くなってしまい、マスタの待機時間が増大してしまうという課題もあった。
【００２２】
これに対して、ターゲットがローカルメモリより１度に読み出すデータ量を削減し、ローカルバスの占有率や、データ転送の準備に必要な時間を低減させる方法も考えられるが、その場合、マスタが、ターゲットが用意したデータ量より多くのデータ量を連続して読み出すとき、ディスコネクトが発生し、データ転送処理の時間が不要に長くなり、転送効率が低下してしまう恐れがあった。
【００２３】
本発明は、このような状況に鑑みてなされたものであり、システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用することができるようにするものである。
【課題を解決するための手段】
【００２４】
本発明の第１の情報処理装置は、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する転送手段と、転送手段により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量を計測する計測手段と、計測手段により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定手段と、設定手段により設定された第３のデータ量を記憶する記憶手段とを備え、転送手段は、記憶手段により第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶手段により記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行することを特徴とする。
【００２５】
前記第１のデータ量は、計測手段により計測される最大の第２のデータ量よりも大きいようにすることができる。
【００２６】
前記設定手段は、第３のデータ量が第２のデータ量と近似するように、第３のデータ量を設定するようにすることができる。
【００２７】
前記マスタデバイスを制御してメモリリード要求を発行させる第１の制御手段と、第１の制御手段により制御されて発行されるメモリリード要求に対して、転送手段を制御して第１の転送処理を実行させ、計測手段を制御して第２のデータ量を計測させ、設定手段を制御して第３のデータ量を設定させ、記憶手段を制御して第３のデータ量を記憶させる第２の制御手段とをさらに備えるようにすることができる。
【００２８】
前記第１の制御手段は、マスタデバイスを制御してメモリリード要求を複数回発行させ、第２の制御手段は、転送手段を制御して、第１の制御手段により制御されて発行された複数のメモリリード要求のそれぞれに対して第１の転送処理を実行させ、計測手段を制御して、転送手段により複数回実行された第１の転送処理のそれぞれについて第２のデータ量を計測させ、設定手段を制御して、計測手段による複数回の計測により得られた複数の第２のデータ量に基づいて第３のデータ量を設定させ、記憶手段を制御して、設定手段により設定された第３のデータ量を記憶させるようにすることができる。
【００２９】
前記設定手段は、計測手段による複数回の計測により得られた複数の第２のデータ量の平均値、最大値、または最小値を第３のデータ量として設定するようにすることができる。
【００３０】
前記第１の制御手段は、複数のマスタデバイスのそれぞれを制御し、マスタデバイス毎にメモリリード要求を発行させ、第２の制御手段は、転送手段、計測手段、設定手段、および記憶手段を制御して、マスタデバイス毎に第３のデータ量を設定させて記憶させるようにすることができる。
【００３１】
前記第１の制御手段は、複数の機能を有するマスタデバイスのそれぞれを制御し、マスタデバイスの機能毎にメモリリード要求を発行させ、第２の制御手段は、転送手段、計測手段、設定手段、および記憶手段を制御して、マスタデバイスの機能毎に第３のデータ量を設定させて記憶させるようにすることができる。
【００３２】
前記マスタデバイスのデータ転送の相手のデバイスである複数のターゲットデバイスの中から、第２の制御手段が第３のデータ量を設定させて記憶させるように制御するターゲットデバイスを特定するターゲットデバイス特定手段をさらに備えるようにすることができる。
【００３３】
前記転送手段により実行される第１の転送処理または第２の転送処理において要求を発行したマスタデバイスを判別するマスタデバイス判別手段をさらに備えるようにすることができる。
【００３４】
前記転送手段により実行される第２の転送処理においてディスコネクト処理の発生を監視するディスコネクト監視手段をさらに備えるようにすることができる。
【００３５】
本発明の第１の情報処理方法は、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する第１の転送ステップと、第１の転送ステップの処理により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量を計測する計測ステップと、計測ステップの処理により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量を記憶するように制御する記憶制御ステップと、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行する第２の転送ステップとを含むことを特徴とする。
【００３６】
本発明の第１のプログラムは、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する第１の転送ステップと、第１の転送ステップの処理により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量を計測する計測ステップと、計測ステップの処理により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量を記憶するように制御する記憶制御ステップと、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行する第２の転送ステップとをコンピュータに実行させる。
【００３７】
本発明の第２の情報処理装置は、２つのシステムバスに接続され、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、内蔵するキャッシュメモリに保持した後、マスタデバイスにデータを転送する第１の中継処理を実行する中継手段と、中継手段により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量を計測する計測手段と、計測手段により計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定手段と、設定手段により設定された第３のデータ量を記憶する記憶手段とを備え、中継手段は、記憶手段により第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶手段により記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行することを特徴とする。
【００３８】
本発明の第２の情報処理方法は、２つのシステムバスを接続する処理を行い、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、キャッシュメモリを制御して保持させた後、マスタデバイスにデータを転送する第１の中継処理を実行する中継ステップと、中継ステップの処理により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量を計測する計測ステップと、計測ステップの処理により制御されて計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量を記憶する様に制御する記憶制御ステップと、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行する第２の中継ステップとを含むことを特徴とする。
【００３９】
本発明の第２のプログラムは、２つのシステムバスを接続する処理を行い、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータを取得し、キャッシュメモリを制御して保持させた後、マスタデバイスにデータを転送する第１の中継処理を実行する中継ステップと、中継ステップの処理により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量を計測する計測ステップと、計測ステップの処理により制御されて計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量を記憶する様に制御する記憶制御ステップと、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行する第２の中継ステップとをコンピュータに実行させる。
【００４０】
本発明の第１の情報処理装置および方法、並びに第１のプログラムにおいては、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、所定のメモリデバイスより予め定められた所定のデータ量である第１のデータ量のデータが取得され、内蔵するキャッシュメモリに保持された後、データが、システムバスを介してマスタデバイスに転送される第１の転送処理が実行され、第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量が計測され、計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量が設定され、設定された第３のデータ量が記憶され、第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、第３のデータ量分のデータが取得され、内蔵するキャッシュメモリに保持された後、データが、システムバスを介してマスタデバイスに転送される第２の転送処理が実行される。
【００４１】
本発明の第２の情報処理装置および方法、並びに第２のプログラムにおいては、２つのシステムバスに接続され、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスの要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイスより予め定められた所定のデータ量である第１のデータ量のデータが取得され、内蔵するキャッシュメモリに保持された後、マスタデバイスにデータが転送される第１の中継処理が実行され、第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量が計測され、計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量が設定され、設定された第３のデータ量が記憶され、第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶された第３のデータ量分のデータが取得され、内蔵するキャッシュメモリに保持された後、データが、システムバスを介してマスタデバイスに転送される第２の中継処理が実行される。
【発明の効果】
【００４２】
本発明によれば、データ転送を制御することができる。特に、例えば、不要なデータ転送を抑制することによりバスのトラフィックを軽減させる等して、システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用することができる。
【発明を実施するための最良の形態】
【００４３】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４４】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定したりするものではない。
【００４５】
本発明においては、複数のデバイス（例えば、図１のPCIデバイス１１−１乃至１１−Ｎ）が接続されたシステムバス（例えば、図１のPCIバス１０）を有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送（例えば、図１のPCIデータ転送１２）を行う情報処理装置（例えば、図１の画像処理装置１）が提供される。この情報処理装置では、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１のイニシエータ１３）の要求に基づいて、所定のメモリデバイス（例えば、図１のローカルメモリ２１）より予め定められた所定のデータ量である第１のデータ量のデータ（例えば、図２の転送長初期値６１）を取得し、内蔵するキャッシュメモリ（例えば、図１のキャッシュメモリ２２）に保持した後、データ（例えば、図３の転送データ９１）を、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する転送手段（例えば、図３のデータ転送処理部７５）と、転送手段により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量（例えば、図３の転送長計測部７３により計測される転送長）を計測する計測手段（例えば、図１０のステップＳ６３の処理を実行する図３の転送長計測部７３）と、計測手段により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量（例えば、図３の最適転送長８２）を設定する設定手段（例えば、図１０のステップＳ６７の処理を実行する図３の転送長計測部７３）と、設定手段により設定された第３のデータ量を記憶する記憶手段（例えば、図１のキャッシュメモリ２２）とを備え、転送手段は、記憶手段により第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶手段により記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行する（例えば、図１４のデータ転送処理）。
【００４６】
前記マスタデバイスを制御してメモリリード要求を発行させる第１の制御手段（例えば、図２のマスタ別転送長調査制御部５６）と、第１の制御手段により制御されて発行されるメモリリード要求に対して、転送手段を制御して第１の転送処理を実行させ、計測手段を制御して第２のデータ量を計測させ、設定手段を制御して第３のデータ量を設定させ、記憶手段を制御して第３のデータ量を記憶させる第２の制御手段（例えば、図３のマスタ別転送長調査部７１）とをさらに備えるようにすることができる。
【００４７】
前記第１の制御手段は、マスタデバイスを制御してメモリリード要求を複数回発行させ（例えば、図７のステップＳ２２）、第２の制御手段は、転送手段を制御して、第１の制御手段により制御されて発行された複数のメモリリード要求のそれぞれに対して第１の転送処理を実行させ、計測手段を制御して、転送手段により複数回実行された第１の転送処理のそれぞれについて第２のデータ量を計測させ、設定手段を制御して、計測手段による複数回の計測により得られた複数の第２のデータ量に基づいて第３のデータ量を設定させ、記憶手段を制御して、設定手段により設定された第３のデータ量を記憶させるようにすることができる。
【００４８】
前記設定手段は、計測手段による複数回の計測により得られた複数の第２のデータ量の平均値、最大値、または最小値を第３のデータ量として設定する（例えば、図１０のステップＳ６７）ようにすることができる。
【００４９】
前記マスタデバイスのデータ転送の相手のデバイスである複数のターゲットデバイス（例えば、図１のターゲット１４）の中から、第２の制御手段が第３のデータ量を設定させて記憶させるように制御するターゲットデバイスを特定するターゲットデバイス特定手段（例えば、図２の調査対象ターゲット特定部５３）をさらに備えるようにすることができる。
【００５０】
前記転送手段により実行される第１の転送処理または第２の転送処理において要求を発行したマスタデバイスを判別するマスタデバイス判別手段（例えば、図３のマスタ判別部７５）をさらに備えるようにすることができる。
【００５１】
前記転送手段により実行される第２の転送処理においてディスコネクト処理の発生を監視するディスコネクト監視手段（例えば、図２１のディスコネクト監視部４０１）をさらに備えるようにすることができる。
【００５２】
本発明においては、複数のデバイス（例えば、図１のPCIデバイス１１−１乃至１１−Ｎ）が接続されたシステムバス（例えば、図１のPCIバス１０）を有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送（例えば、図１のPCIデータ転送１２）を行う情報処理装置（例えば、図１の画像処理装置１）の情報処理方法が提供される。この情報処理方法においては、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１のイニシエータ１３）の要求に基づいて、所定のメモリデバイス（例えば、図１のローカルメモリ２１）より予め定められた所定のデータ量である第１のデータ量のデータ（例えば、図２の転送長初期値６１）を取得し、内蔵するキャッシュメモリ（例えば、図１のキャッシュメモリ２２）に保持した後、データ（例えば、図３の転送データ９１）を、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する第１の転送ステップ（例えば、図１０のステップＳ６２およびステップＳ６５）と、第１の転送ステップの処理により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量（例えば、図３の転送長計測部７３により計測される転送長）を計測する計測ステップ（例えば、図１０のステップＳ６３）と、計測ステップの処理により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量（例えば、図３の最適転送長８２）を設定する設定ステップ（例えば、図１０のステップＳ６７）と、設定ステップの処理により設定された第３のデータ量を記憶するように制御する記憶制御ステップ（例えば、図１０のステップＳ６９）と、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行する第２の転送ステップ（例えば、図１４のデータ転送処理）とを含む。
【００５３】
本発明においては、複数のデバイスが接続されたシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う処理を、コンピュータ（例えば、図４の画像処理装置１００）に行わせるプログラムが提供される。このプログラムは、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１のイニシエータ１３）の要求に基づいて、所定のメモリデバイス（例えば、図１のローカルメモリ２１）より予め定められた所定のデータ量である第１のデータ量のデータ（例えば、図２の転送長初期値６１）を取得し、内蔵するキャッシュメモリ（例えば、図１のキャッシュメモリ２２）に保持した後、データ（例えば、図３の転送データ９１）を、システムバスを介してマスタデバイスに転送する第１の転送処理を実行する第１の転送ステップ（例えば、図１０のステップＳ６２およびステップＳ６５）と、第１の転送ステップの処理により実行される第１の転送処理において、マスタデバイスが１回のアクセスにより取得するデータ量である第２のデータ量（例えば、図３の転送長計測部７３により計測される転送長）を計測する計測ステップ（例えば、図１０のステップＳ６３）と、計測ステップの処理により計測された第２のデータ量に基づいて、メモリデバイスより読み出すデータ量である第３のデータ量（例えば、図３の最適転送長８２）を設定する設定ステップ（例えば、図１０のステップＳ６７）と、設定ステップの処理により設定された第３のデータ量を記憶するように制御する記憶制御ステップ（例えば、図１０のステップＳ６９）と、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、メモリデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の転送処理を実行する第２の転送ステップ（例えば、図１４のデータ転送処理）とを含む。
【００５４】
本発明においては、複数のデバイス（例えば、図１６のPCIデバイス１１−１乃至１１−Ｎ、並びに、PCIデバイス２１１−１乃至２１１−Ｋ）が接続された複数のシステムバス（例えば、図１のPCIバス１０およびPCIバス２１０）を有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置（例えば、図１６の画像処理装置２００）が提供される。この情報処理装置では、２つのシステムバスに接続され、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１６のイニシエータ１３）の要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイス（例えば、図１６のターゲット２１４）より予め定められた所定のデータ量である第１のデータ量（例えば、図２の転送長初期値６１）のデータを取得し、内蔵するキャッシュメモリ（例えば、図１６のキャッシュメモリ２０２）に保持した後、マスタデバイスにデータを転送する第１の中継処理を実行する中継手段（例えば、図１６のPCI-PCIブリッジ２０１）と、中継手段により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量（例えば、図１７の転送長計測部７３により計測される転送長）を計測する計測手段（例えば、図１０のステップＳ６３の処理を実行する図３の転送長計測部７３）と、計測手段により計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量（例えば、図１７の最適転送長８２）を設定する設定手段（例えば、図１０のステップＳ６７の処理を実行する図１７の転送長計測部７３）と、設定手段により設定された第３のデータ量を記憶する記憶手段（例えば、図１７の最適転送長８２）とを備え、中継手段は、記憶手段により第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶手段により記憶された第３のデータ量分のデータを取得し、内蔵するキャッシュメモリに保持した後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行する（例えば、図１４のデータ転送処理）。
【００５５】
本発明においては、複数のデバイス（例えば、図１６のPCIデバイス１１−１乃至１１−Ｎ、並びに、PCIデバイス２１１−１乃至２１１−Ｋ）が接続された複数のシステムバス（例えば、図１のPCIバス１０およびPCIバス２１０）を有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う情報処理装置（例えば、図１６の画像処理装置２００）の情報処理方法が提供される。この情報処理方法においては、２つのシステムバスを接続する処理を行い、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１６のイニシエータ１３）の要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイス（例えば、図１６のターゲット１３）より予め定められた所定のデータ量である第１のデータ量（例えば、図２の転送長初期値６１）のデータを取得し、キャッシュメモリ（例えば、図１６のキャッシュメモリ２０２）を制御して保持させた後、マスタデバイスにデータを転送する第１の中継処理を実行する中継ステップ（例えば、図２０のステップＳ１２６）と、中継ステップの処理により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量（例えば、図１６の転送長計測部７３により計測される転送長）を計測する計測ステップ（例えば、図１０のステップＳ６３）と、計測ステップの処理により制御されて計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量（例えば、図１７の最適転送長８２）を記憶する様に制御する記憶制御ステップ（例えば、図１０のステップＳ６９）と、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行する第２の中継ステップ（例えば、図１４のデータ転送処理）とを含む。
【００５６】
本発明においては、複数のデバイスが接続された複数のシステムバスを有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送を行う処理を、コンピュータ（例えば、図４の画像処理装置１００）に行わせるプログラムが提供される。このプログラムは、２つのシステムバスを接続する処理を行い、２つのシステムバスの互いに異なるシステムバスに接続されたデバイス間におけるデータ転送において、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図１６のイニシエータ１３）の要求に基づいて、マスタデバイスのデータ転送の相手となるターゲットデバイス（例えば、図１６のターゲット１３）より予め定められた所定のデータ量である第１のデータ量（例えば、図２の転送長初期値６１）のデータを取得し、キャッシュメモリ（例えば、図１６のキャッシュメモリ２０２）を制御して保持させた後、マスタデバイスにデータを転送する第１の中継処理を実行する中継ステップ（例えば、図２０のステップＳ１２６）と、中継ステップの処理により実行される第１の中継処理において、マスタデバイスが１回のアクセスによりキャッシュメモリより取得するデータ量である第２のデータ量（例えば、図１６の転送長計測部７３により計測される転送長）を計測する計測ステップ（例えば、図１０のステップＳ６３）と、計測ステップの処理により制御されて計測された第２のデータ量に基づいて、ターゲットデバイスより読み出すデータ量である第３のデータ量を設定する設定ステップと、設定ステップの処理により設定された第３のデータ量（例えば、図１７の最適転送長８２）を記憶する様に制御する記憶制御ステップ（例えば、図１０のステップＳ６９）と、記憶制御ステップの処理により制御されて第３のデータ量が記憶された後において、マスタデバイスの要求に基づいて、ターゲットデバイスより、記憶制御ステップの処理により制御されて記憶された第３のデータ量分のデータを取得し、キャッシュメモリを制御して保持させた後、データを、システムバスを介してマスタデバイスに転送する第２の中継処理を実行する第２の中継ステップ（例えば、図１４のデータ転送処理）とを含む。
【００５７】
以下に、本発明の実施の形態について図面を参照して説明する。
【００５８】
図１は、本発明を適用した画像処理装置の主な構成例を表している。
【００５９】
図１に示される画像処理装置１は、例えば、映像データの記録再生装置等の映像機器であり、システムバスとしてPCIバス（Peripheral Components Interconnect bus）１０が適用されている。
【００６０】
PCIバス１０は、例えば、バス幅(１回の転送で送れるデータ量)が32ビット、動作周波数(１秒あたりの転送回数)が33MHz（メガヘルツ）、最大データ転送速度が133MB/s（メガバイトパーセカンド）のバスである。
【００６１】
PCIバス１０には、PCIデバイス１１−１乃至PCIデバイス１１−Ｎが接続されている。なお、以下において、PCIデバイス１１−１乃至PCIデバイス１１−Ｎの各PCIデバイスを区別して説明する必要のない場合は、PCIデバイス１１と称する。また、図１においてPCIデバイス１１は、PCIバス１０に両矢印により接続されているが、実際には、複数の信号線、電源、およびグランド等により接続される。PCIデバイス１１としては、PCIバス１０を介してデータ転送が相互に可能な様々なデバイスが適用される。例えば、SCSI（Small Computer System Interface）インタフェース、IDE（Integrated Drive Electronics）インタフェース、およびフレキシブルディスクドライブ等の大容量記憶装置コントローラ、イーサネット（登録商標）インタフェースやATM（Asynchronous Transfer Mode）インタフェース等のネットワークコントローラ、ビデオコントローラやオーディオコントローラ等のマルチメディアコントローラ、SDRAM（Synchronous Dynamic Random Access Memory）やフラッシュメモリ等のメモリコントローラ、ISA（Industry Standard Architecture）ブリッジ、PCI-PCIブリッジ、PCMCIA（Personal Computer Memory Card International Association）ブリッジ等の各種ブリッジ、キーボードやマウス等の入力インタフェース、CPU等のプロセッサ、並びに、IEEE（Institute of Electrical and Electronic Engineers）1394やUSB（Universal Serial Bus）等のシリアルバスのコントローラ等が含まれる。もちろん、これ以外のデバイスもPCIデバイス１１としてPCIバス１０に接続されるようにしてもよい。
【００６２】
以下において、PCIバス１０を介して行われるデータ転送（PCIデータ転送）を制御するPCIデバイスをマスタと称し、マスタの通信相手となるPCIデバイスをターゲットと称する。また、このようにマスタとして動作可能なPCIデバイス１１をマスタデバイスと称し、ターゲットとしてのみ動作するデバイスをターゲットデバイスと称する。
【００６３】
また、１つのPCIデータ転送において、マスタとして動作するPCIデバイス１１は1つしか存在せず、このときのマスタをイニシエータと称する。すなわち、１つのPCIデータ転送において、イニシエータはマスタとしてデータ転送を制御し、他のターゲットと通信を行い、データの授受などを行う。なお、マスタデバイスはターゲットとして動作し、他のマスタデバイスとPCIデータ転送を行う場合がある。このときのPCIデータ転送におけるイニシエータは他のマスタデバイスとなる。
【００６４】
図１において、イニシエータ１３は、PCIデバイス１１の１つであり、同じくPCIデバイスの１つであるターゲット１４にアクセスしPCIデータ転送１２を行う。すなわち、イニシエータ１３は、ターゲット１４に対するPCIデータ転送１２を制御する。以下において、イニシエータ１３およびターゲット１４によるPCIデータ転送１２について説明するが、PCIデータ転送１２は、特定のPCIデバイス間におけるデータ転送を示すものではなく、PCIバス１１０のPCIバスシステムにおける全てのデータ転送に対して適応可能である。すなわち、イニシエータ１３は、PCIデバイス１１に含まれる任意のマスタデバイスのことを示し、ターゲット１４は、イニシエータ１３とPCIデータ転送を行う全てのPCIデバイス１１のことを示す。
【００６５】
ターゲット１４は、PCIバス１０に接続されるとともに、ローカルバス２０を介してローカルメモリ２１に接続されており、ローカルメモリ２１のデータの入出力を制御するデバイスである。ターゲット１４は、内部にキャッシュメモリ２２を有している。このキャッシュメモリ２２は、データ転送等に用いられ、例えば、PCIバス１０とローカルバス２０のデータ転送速度の違いを吸収させるため等に用いられる。例えば、イニシエータ１３がPCIデータ転送１２により、ターゲット１４に対してローカルメモリ２１のデータのリード要求を行うと、ターゲット１４は、まず、ローカルバス２０を介してローカルメモリ２１にアクセスし、要求されたデータを読み出し、それをキャッシュメモリ２２に保持させる。ターゲット１４は、後述するように、イニシエータ１３が１度のアクセスにより取得するデータ量（ワード数）の情報を予め計測しており、その情報に基づいて、イニシエータ１３が１度のアクセスにより取得するデータ量（ワード数）のデータをローカルメモリ２１より取得し、それをキャッシュメモリ２２に保持させる。
【００６６】
以下において、イニシエータ１３が１度のアクセスにより取得するデータ量（ワード数）のことを、イニシエータ１３に対する転送長と称する。なお、ワードは、メモリの読み出し単位であり、１ワードは、例えば、２バイトである。ターゲット１４は、転送させるデータ（イニシエータ１３に対する転送長分の転送用データ）をキャッシュメモリ２２に保持させ、データ転送の準備が整うと、ターゲット１４は、それを、PCIバス１０を介してイニシエータ１３に供給する。
【００６７】
PCIバス１０には、また、PCIバス１０とホストバス３０を接続するブリッジであるホストPCIブリッジ１５も接続されている。ホストPCIブリッジ１５は、PCIバス１０とホストバス３０とのブリッジとして動作するだけでなく、ホストバス３０を介して接続されるCPU（Central Processing Unit）３１の制御に基づいて、PCIバス１０を制御するPCIバスコントローラとしても動作する。
【００６８】
さらに、PCIバス１０には、アービタ１６も接続される。アービタ１６は、PCIバス１０の使用権の調停処理（アービトレーション）を実行する。すなわち、アービタ１６は、各マスタデバイスからの要求（リクエスト）を受け付け、同時に２つ以上のマスタデバイスからバス要求を受け付けた場合には、どのマスタデバイスにPCIバス１０の使用権を与えるかを選択し、選択したマスタデバイスに対して、PCIバス１０の使用権を与え、許可したことを通知する（グラント）。
【００６９】
また、上述したターゲット１４およびローカルメモリ２１が接続されるローカルバス２０は、メインシステムバスとなるPCIバス１０に対してローカルなバスであり、画像処理装置１の一部のデバイスを互いに接続するバスである。ローカルバス２０には、ターゲット１４およびローカルメモリ２１の他に、ローカルデバイス２３−１乃至ローカルデバイス２３−Ｍが接続されている。すなわち、ローカルバス２０においては、ターゲット１４およびローカルメモリ２１もローカルデバイスの１つであり、ターゲット１４およびローカルメモリ２１、並びに、ローカルデバイス２３−１乃至ローカルデバイス２３−Ｍの各デバイス間において、PCIバス１０の場合と同様に、データ転送が行われる。
【００７０】
ホストバス３０には、画像処理装置１全体を制御するCPU３１の他にメインメモリ３２も接続されている。CPU３１は、ホストバス３０を介してメインメモリ３２にアクセスし、メインメモリ３２にロードされたプログラムに従って各種の処理を実行し、画像処理装置１の各部の動作を制御する。メインメモリ３２にはまた、CPU３１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００７１】
CPU３１には、さらに、CPU３１が実行するプログラムやデータが予め記憶されたROM（Read Only Memory）４１、書き換え可能なフラッシュメモリ等により構成され、CPU３１が実行するプログラムやデータが記憶される記憶部４２、および、CPU３１に制御されるなどして、装着されたリムーバブルメディア４４に記憶されているプログラムやデータを読み出し、CPU３１に供給するドライブ４３が接続されている。さらに、キーボード等の入力デバイスやモニタ等の出力デバイス（いずれも図示せず）のように上述した以外のデバイスがCPU３１に接続されるようにしてももちろんよい。
【００７２】
以上のような構成の画像処理装置１において、例えば、電源投入時等のようにPCIバス１０がリセットされるとき、CPU３１は、PCIバス１０のリセット処理を行うが、その際、PCIデータ転送１２について、イニシエータ１３とターゲット１４を制御し、イニシエータ１３に対する転送長を調査させる。具体的には、CPU３１は、イニシエータ１３を制御し、ターゲット１４に対してメモリリード要求（例えば、ローカルメモリ２１のデータの読み出し要求）を発行させる。また、CPU３１は、そのメモリリード要求に対する処理を行うターゲット１４に対して、イニシエータ１３が１回のメモリリード要求において取得するデータの転送長を計測させる。
【００７３】
このようなCPU３１の制御に基づいて、イニシエータ１３は、ターゲット１４に対してメモリリード要求を発行し、ターゲット１４は、そのリード要求に対する処理を行う。このときターゲット１４は、転送長として十分に多いデータ量のデータをローカルメモリ２１より読み出し、キャッシュメモリ２２に蓄積する。ターゲット１４が十分なデータ量のデータをキャッシュメモリ２２に蓄積すると、イニシエータ１３は、ターゲット１４よりそのデータの取得を開始する。ターゲット１４は、その取得量（ワード数）を計測する。
【００７４】
イニシエータ１３の取得量を計測したターゲット１４は、その取得量をイニシエータ１３に対する転送長として保持し、調査処理を終了する。そして、PCIバス１０において、通常のデータ転送が開始され、ターゲット１４がそのイニシエータ１３よりメモリリード要求を発行されると、ターゲット１４は、その保持したイニシエータ１３に対する転送長分のデータをローカルメモリ２１より読み出す。
【００７５】
このように各部が動作することにより、画像処理装置１は、PCIデータ転送によるローカルメモリのトラフィックの増大を抑制するとともに、PCIデータ転送において不要なトランザクションの発生や転送効率の低下等を抑制することができ、PCIバス１０やローカルバス２０を有効に活用することができる。
【００７６】
図２は、図１のCPU３１の内部の詳細な構成例を示すブロック図である。なお、図２において、CPU３１は、後述するターゲット１４によるイニシエータ１３に対する転送長の設定に関する処理部についてのみ示されている。
【００７７】
CPU３１は、リセット処理部５１、PCIコンフィギュレーション処理部５２、調査対象ターゲット特定部５３、転送長初期値供給部５４、転送長初期値記憶部５５、マスタ別転送長調査制御部５６、およびインタフェース処理部５７を有している。
【００７８】
リセット処理部５１は、PCIコンフィギュレーション処理部５２乃至マスタ別転送長調査制御部５６を制御して、リセット時におけるPCIバス１０の初期化に関する処理を行う。
【００７９】
PCIコンフィギュレーション処理部５２は、リセット処理部５１に制御されて、ホストPCIブリッジ１５を介して各PCIデバイス１１にアクセスし、各PCIデバイス１１に対して、メモリアドレス、I/Oアドレス、割り込みレベル、およびDMA（Direct Memory Access transfer）チャネル等のシステムリソースの割り当て、ドライバのロード／アンロード、および各種パラメータの設定等を行うコンフィギュレーション処理を行う。
【００８０】
調査対象ターゲット特定部５３は、リセット処理部５１に制御されて、マスタデバイスに対する転送長の設定処理について、PCIコンフィギュレーション処理部５２によるコンフィギュレーション処理結果に基づいて、処理を行うデバイス（ターゲットデバイス）を特定する。調査対象ターゲット特定部５３は、各PCIデバイス１１について転送長の設定が可能であるか否かを判定し、調査処理を実行させるターゲットを特定する。
【００８１】
転送長初期値供給部５４は、リセット処理部５１に制御されて、転送長初期値記憶部５５に記憶されている転送長初期値６１を読み出し、それを、転送長の設定処理を行うターゲットデバイス（調査対象ターゲット特定部５３により特定されたターゲットデバイス）に、インタフェース処理部５７を介して供給する。なお、転送長初期値６１は、ターゲット１４におけるイニシエータ１３に対する転送長の初期値であり、予め定められた所定の値である。この転送長初期値６１には、後述する転送長の調査処理においてディスコネクト等の不要な処理が発生しないように、イニシエータ１３に対する転送長として予想されるデータ量（ワード数）と比較して十分に大きい値、すなわち、計測される最大のイニシエータ１３に対する転送長よりも大きくなるように設定される。
【００８２】
マスタ別転送長調査制御部５６は、リセット処理部５１に制御されて、各ターゲット１４が調査処理を行うことができるように、各マスタデバイスに対して、調査処理を行うターゲット１４に対するリード要求を発行させる。また、マスタ別転送長調査制御部５６は、リセット処理部５１に制御されて、各ターゲット１４に対してマスタ別転送長調査処理を実行させる。
【００８３】
インタフェース処理部５７は、PCIコンフィギュレーション処理部５２、調査対象ターゲット特定部５３、転送長初期値供給部５４、並びにマスタ別転送長調査制御部５６等の、ホストバス３０に対するインタフェース処理を実行する。インタフェース処理部５７は、上述したこれらの各部が発行したコマンドやデータを、ホストバス３０を介して、ホストPCIブリッジ１５に供給したり、ホストPCIブリッジ１５より供給されたコマンドやデータをCPU３１内の各部に供給したりする。
【００８４】
図３は、図１のターゲット１４の、内部の詳細な構成例を示すブロック図である。
【００８５】
図３において、ターゲット１４は、上述したキャッシュメモリ２２の他に、マスタ別転送長調査部７１、マスタ判別部７２、転送長計測部７３、マスタ別転送長記憶部７４、並びにデータ転送処理部７５を有している。
【００８６】
マスタ別転送長調査部７１は、CPU３１のマスタ別転送長調査制御部５６に制御され、マスタ判別部７２、転送長計測部７３、または、データ転送処理部７５を制御し、イニシエータ１３（ターゲット１４とデータ転送を行う全てのマスタデバイス）に対する最適な転送長を調査し、マスタデバイス毎に設定する処理を行う。
【００８７】
上述したように、各マスタデバイスがターゲット１４に対してメモリリード要求を発行する場合、ターゲット１４は、この要求に対して、各マスタデバイスが１回のアクセスで取得するデータ量（ワード数）である転送長分のデータを、キャッシュメモリ２２に一時的に蓄積させるが、各マスタデバイスの転送長は互いに異なることがあり、ターゲット１４がキャッシュメモリ２２に蓄積させたデータ量（ワード数）、すなわち、ターゲット１４が想定していたマスタデバイスの転送長が、実際のマスタデバイスの転送長より大きい場合（すなわち、ターゲット１４が、不要なデータをキャッシュメモリ２２に蓄積させる場合）、ローカルバス２０のトラフィックが不要に増加してしまう。逆に、ターゲット１４が想定していたマスタデバイスの転送長が、実際のマスタデバイスの転送長より小さい場合（すなわち、ターゲット１４がキャッシュメモリ２２に蓄積させたデータ量がデータ転送処理に対して不足している場合）、不要なトランザクションが発生し、ローカルバス２０のトラフィックが不要に増加してしまう。
【００８８】
そこで、マスタ別転送長調査部７１は、例えば、PCIバス１０のリセット時等において、CPU３１のマスタ別転送長調査制御部５６に制御されて、実際のデータ転送前に、予め、各マスタデバイスに対する最適な転送長を調査する。最適な転送長とは、上述したような不要なトラフィックの増加や不要なトランザクションの増加を最も抑制する転送長のことである。すなわち、最適な転送長とは、通常のデータ転送処理においてマスタデバイスが１回のアクセス（要求）により取得するデータ量（ワード数）に近似する（等しい場合を含む）ように設定されるデータ量のことである。
【００８９】
マスタ判別部７２は、後述するようにPCIバス１０やアービタ１６に接続されており、各信号の値に基づいて、リード要求を発行したマスタデバイス（イニシエータ１３）を判別する処理を実行する。すなわち、マスタ判別部７２は、転送長計測時においては、転送長を計測する対象となるマスタデバイス（イニシエータ１３）を特定する。
【００９０】
転送長計測部７３は、マスタデバイスからのメモリリード処理に対する処理としてデータ転送処理部７５が行う、マスタデバイスの１回のアクセスに対するデータの連続転送ワード数を計測し、そのマスタデバイスに対する最適な転送長（最適転送長）を求める。
【００９１】
マスタ別最適転送長記憶部７４は、転送長計測部７３により計測された各マスタデバイスに対する最適転送長８２を、それぞれが対応するレジスタに格納し、記憶している。例えば、図３の場合、マスタ別最適転送長記憶部７４には、マスタＡ用最適転送長レジスタ８１−１、マスタＢ用最適転送長レジスタ８１−２、および、マスタＣ用最適転送長レジスタ８１−３等が設けられており、各レジスタには、各レジスタが対応するマスタの最適転送長８２が格納されている。
【００９２】
データ転送処理部７５は、PCIバス１０のバスコマンド／バイトイネーブル（C/BE[3:0]＃）、デバイスセレクション（DEVSEL＃）、ターゲットレディ（TRDY＃）、およびストップ（STOP＃）等を含む各種の信号バスに接続され、イニシエータ１３（すなわち、他のPCIデバイス１１であるマスタデバイス）とPCIデータ転送処理１２の制御を行う。また、データ転送処理部７５は、ローカルバス２０にも接続されており、ローカルメモリ２１やローカルデバイス２３−１乃至２３−Ｍとローカルバス２０を介したデータ転送の制御も行う。
【００９３】
データ転送処理部７５は、例えば、イニシエータ１３からのメモリリード要求を受け付けたり、その要求に基づいて、バス２０を介してローカルメモリ２１にアクセスしたり、リード要求されたアドレスよりデータを読み出してキャッシュメモリ２２に保持させるように制御したり、キャッシュメモリ２２を制御して、保持させたデータを１ワードずつPCIバス２２に出力させたりする。
【００９４】
このとき、データ転送処理部７５は、マスタ判別部７２の判別処理に基づいて、マスタ別最適転送長記憶部７４よりイニシエータ１３に対応する最適転送長８２をレジスタより読み出し、その情報に基づいて、ローカルメモリ２１より読み出すデータ量（ワード数）を制御する。
【００９５】
また、データ転送処理部７５は、マスタ別転送長調査部７１に制御されて、イニシエータ１３に対する転送長調査時におけるデータ転送処理も行う。このとき、データ転送処理部７５は、CPU３１より供給された転送長初期値分のデータをローカルメモリ２１より読み出し、キャッシュメモリ２２に保持させる。また、このデータ転送において、データ転送処理部７５により制御されてキャッシュメモリ２２がPCIバス２０に出力するワード数は転送長計測部７３に監視される。
【００９６】
キャッシュメモリ２２は、PCIバス２０のアドレス／データバス（AD[31:0]）等の信号バスに接続されており、データ転送処理部７５に制御され、保持している転送データ９１をPCIバス２０（アドレス／データバス（AD[31:0]））に出力する。出力された転送データ９１は、PCIバス２０を介してイニシエータ１３に供給される。
【００９７】
次に、上述したマスタ判別部７２のPCIバス２０との接続について説明する。図４は、マスタ判別部７２とアービタ１６の接続関係を示す図である。
【００９８】
マスタ判別部７２は、図４に示されるように、PCIデバイス１１であるＬ個のマスタデバイス１０１−１乃至１０１−Ｌがアサートおよびディアサートするリクエスト（REQ＃）の状態と、アービタ１６がアサートおよびディアサートするグラント（GNT＃）の状態を監視する。
【００９９】
PCIバス１０は、あるタイミングにおいては、１つのマスタデバイスにより、その使用権が占有される。すなわち、PCIバス１０においては、同時に複数のマスタデバイスがデータ転送の制御を行うことはない。このバスの使用権は、アービタ１６により管理されており、上述したように、各マスタデバイスからの要求に基づいて、アービタ１６がいずれか１つに割り当てる。
【０１００】
例えば、図４に示されるように、Ｌ個のマスタデバイス１０１−１乃至１０１−Ｌ（以下、区別する必要の無い場合、マスタデバイス１０１と称する）はそれぞれ、バスの使用権を要求する信号線であるリクエスト（REQ＃）１１１−１乃至１１１−Ｌ（以下、区別する必要の無い場合、リクエスト（REQ＃）１１１と称する）によってアービタ１６に接続されている。各マスタデバイスは、このリクエスト（REQ＃）１１１をアサートすることにより、アービタ１６に対してPCIバス１０の使用権を要求する。
【０１０１】
また、各マスタデバイス１０１は、それぞれ、アービタ１６がバスの使用権を割り当てたことを通知するための信号線であるグラント（GNT＃）１１２−１乃至１１２−Ｌ（以下、区別する必要の無い場合、グラント（GNT＃）１１２と称する）によってもアービタ１６に接続されている。アービタ１６は、リクエスト（REQ＃）１１１をアサートさせたマスタデバイス１０１の中から１つを選択し、そのマスタデバイス１０１にたいしてグラント（GNT＃）１１２をアサートさせて、PCIバス１０の使用権を割り当てたことを通知する。
【０１０２】
マスタ判別部７２は、図４に示されるように、これらのリクエスト（REQ＃）１１１のそれぞれと、リクエスト（REQ＃）１２１−１乃至１２１−Ｌ（以下、区別する必要の無い場合、リクエスト（REQ＃）１２１と称する）により、接続されており、各リクエスト（REQ＃）１１１の状態を把握することにより、どのマスタデバイス１０１がPCIバス１０の使用権を要求したのかを特定する。
【０１０３】
また、マスタ判別部７２は、図４に示されるように、グラント（GNT＃）１１２のそれぞれとも、グラント（GNT＃）１２２−１乃至１２２−Ｌ（以下、区別する必要の無い場合、グラント（GNT＃）１２２と称する）により接続されており、アービタ１６がどのマスタデバイス１０１にバスの使用権を割り当てたのかを特定する。
【０１０４】
このように、マスタ判別部７２は、これらの信号を監視することにより、現在行われているPCIデータ転送を行っているマスタデバイス１０１を判別することができる。
【０１０５】
ただし、正確には、アービタ１６は、PCIバス１０の使用権を与えたマスタデバイス１０１がコマンド発行等の処理を行い、その処理が終了した時点（トランザクションの途中で）で変更可能である。従って、タイミングによっては、実際に処理を行っているマスタデバイス１０１と、リクエスト（REQ＃）１２１およびグラント（GNT＃）１２２より判別したマスタデバイス１０１とが異なってしまうことも考えられる。
【０１０６】
そこで、マスタ判別部７２は、図５に示されるように、PCIバス１０のフレーム（FRAME＃）１３１、およびイニシエータレディ（IRDY＃）１３２の状態も監視し、それらの信号値にも基づいて、どのマスタデバイスがイニシエータ１３であるかを判別する。
【０１０７】
フレーム（FRAME＃）１３１は、イニシエータがトランザクションを開始する際にアサートする信号であり、バースト転送中はアサートされつづけ、最後のデータ転送の直前にディアサートされる。イニシエータレディ（IRDY＃）１３２は、イニシエータがデータ転送可能状態にあるときにアサートする信号である。すなわち、イニシエータがデータ転送する際は、必ず、このイニシエータレディ（IRDY＃）１３２はアサートされている。
【０１０８】
従って、フレーム（FRAME＃）１３１またはイニシエータレディ（IRDY＃）１３２のいずれか一方がアサートされている間は、トランザクションが終了しておらず、バスの使用権は他のマスタデバイスに移行していないことを示す。ターゲット１４のマスタ判別部７２は、これらの信号の状態からこのように判断することにより、バスの使用権を有するマスタデバイス１０１（イニシエータ１３）を判別する。
【０１０９】
図５において、PCIバス１０のフレーム（FRAME＃）１３１には、信号線１３１−１乃至１３１−Ｌのように、各マスタデバイス１０１−１乃至１０１−Ｌが接続されている。また、PCIバス１０のイニシエータレディ（IRDY＃）１３２にも、信号線１３２−１乃至１３２−Ｌのように、各マスタデバイス１０１−１乃至１０１−Ｌが接続されている。
【０１１０】
各マスタデバイス１０１は、これらの信号線を介して、PCIバス１０のフレーム（FRAME＃）１３１、およびイニシエータレディ（IRDY＃）１３２をアサートしたりディアサートしたりする。ターゲット１４のマスタ判別部７２は、信号線１４１を介してフレーム（FRAME＃）１３１と接続され、信号線１４２を介してイニシエータレディ（IRDY＃）１３２に接続されており、これらの信号線を介して、PCIバス１０のフレーム（FRAME＃）１３１、およびイニシエータレディ（IRDY＃）１３２の状態を取得する。
【０１１１】
次に、このような画像処理装置１における処理の流れについて説明する。
【０１１２】
例えば、電源投入時等のように、PCIバス１０（およびPCIデバイス１１）がリセットされる場合、CPU３１のリセット処理部５１は、リセット処理を開始する。
【０１１３】
最初に、ステップＳ１において、CPU３１のPCIコンフィギュレーション処理部５２は、リセット処理部５１に制御されて、コンフィギュレーション処理を実行し、PCIバス１０およびPCIデバイス１１を初期化し、各種の設定や割り当てを行う。具体的には、PCIコンフィギュレーション処理部５２は、PCIバス１０を介して、各PCIデバイス１１のコンフィギュレーションレジスタからベンダID、デバイスID、およびクラスコード等の、PCIデバイス１１１に関する情報を取得する。そして、PCIコンフィギュレーション処理部５２は、それらのIDやコードに基づいて各PCIデバイス１１を識別し、各デバイスに対して、メモリアドレス、I/Oアドレス、割り込みレベル、およびDMAチャネル等のシステムリソースの割り当て、ドライバのロード／アンロード、および各種パラメータの設定等を行う。
【０１１４】
以上のようなコンフィギュレーション処理を行うと、CPU３１のPCIコンフィギュレーション処理部５２は、リセット処理部５１に制御されて、ステップＳ１のコンフィギュレーション処理を終了しステップＳ２に処理を進める。
【０１１５】
ステップＳ２において、調査対象ターゲット特定部５３は、リセット処理部５１に制御されて、マスタデバイスの最適な転送長を計測するターゲット（調査対象ターゲット）を特定する。ステップＳ２の処理が終了すると、調査対象ターゲット特定部５３は、ステップＳ３に処理を進める。
【０１１６】
ステップＳ３において、CPU１４１の転送長初期値供給部５４は、リセット処理部５１に制御されて、転送長初期値記憶部５５に予め記憶されている転送長初期値６１を読み出し、インタフェース処理部５７を介して、調査対象ターゲット特定部５３が特定したターゲットにそれを供給する。転送長初期値を供給すると、転送長初期値供給部５４は、リセット処理部５１に制御されて、処理をステップＳ４に進める。
【０１１７】
ステップＳ４において、CPU３１のマスタ別転送長調査制御部５６は、リセット処理部５１に制御されて、マスタ別転送長調査制御処理を実行し、マスタ別転送長調査処理を制御する。マスタ別転送長調査制御処理の詳細については、図７のフローチャートを参照して後述する。
【０１１８】
ステップＳ４の処理を終了したマスタ別転送長調査制御処理を終了したマスタ別転送長調査制御部５６は、リセット処理部５１に制御されて、リセット処理を終了する。
【０１１９】
次に、図６のステップＳ４において実行されるマスタ別転送長調査制御処理の詳細について図７のフローチャートを参照して説明する。
【０１２０】
最初に、ステップＳ２１において、マスタ別転送長調査制御部５６は、変数ｉの値を「１」に設定する。
【０１２１】
ステップＳ２２において、マスタ別転送長調査制御部５６は、各マスタデバイス（イニシエータ１３）に、ｉ番目の調査対象ターゲットに対するメモリリード処理を所定の回数実行させる。すなわち、各マスタデバイスは、この制御により、今回の調査対象であるターゲットに対して、順番にメモリリード要求を所定の回数ずつ発行する。また、このとき、ターゲット１４においては、マスタ別転送長調査処理が実行されている。従って、このようにマスタデバイスを制御してメモリリードアクセスさせることにより、調査対象ターゲットは、そのターゲットと通信可能な全てのマスタデバイスの転送長を、所定の回数ずつ計測することができる。
【０１２２】
ステップＳ２２の処理を終了したマスタ別転送長調査制御処理部５６は、ステップＳ２３に処理を進め、変数ｉをインクリメントし、ステップＳ２４において、全ての調査対象ターゲット（調査対象ターゲット特定部５３により特定されたターゲット全て）に対して、処理したか否かを判定する。未処理のターゲットが存在すると判定した場合、マスタ別転送長調査制御処理部５６は、処理をステップＳ２２に戻し、それ以降の処理を繰り返す。
【０１２３】
ステップＳ２４において、全ての調査対象ターゲットに対して処理をしたと判定した場合、マスタ別転送長調査制御処理部５６は、マスタ別転送長調査制御処理を終了し、図６のステップＳ４に処理を戻す。
【０１２４】
以上のようにして、マスタ別転送長調査制御理部５６は、全ての調査対象ターゲットに対して、上述した処理を行い、各マスタデバイスに対する転送長を計測させる。
【０１２５】
次に、ターゲット１４において実行されるマスタ別転送長調査処理を図８のフローチャートを参照して説明する。
【０１２６】
マスタ別転送長調査部７１は、ステップＳ４１において、データ転送処理部７５を制御し、転送長初期値６１が供給されたか否かを判定する。転送長初期値６１が供給されたと判定した場合、マスタ別転送長調査部７１は、処理をステップＳ４２に進め、供給された転送長初期値６１を所定のレジスタ（図示せず）にセットする。
【０１２７】
転送長初期値６１をレジスタにセットすると、マスタ別転送長調査部７１は、処理をステップＳ４３に進める。また、ステップＳ４１において、転送長初期値６１が供給されていないと判定した場合、マスタ別転送長調査部７１は、ステップＳ４２の処理を省略し、ステップＳ４３に処理を進める。
【０１２８】
ステップＳ４３において、マスタ別転送長調査部７１は、データ転送処理部７５を制御して、イニシエータ１３よりメモリリード要求を取得したか否かを判定する。メモリリード要求を取得したと判定した場合、マスタ別転送長調査部７１は、ステップＳ４４に処理を進める。ステップＳ４４において、マスタ判別部７２は、マスタ別転送長調査部７１に制御されて、このときの各信号の状態を取得し、メモリリード要求を発行したマスタを判別し、ステップＳ４５に処理を進める。
【０１２９】
ステップＳ４５において、データ転送処理部７５は、メモリリード要求に対してリトライを返すとともに、ローカルメモリ２１にアクセスし、ローカルメモリ２１より転送長初期値分のデータを読み出し、それをキャッシュメモリ２２に蓄積させる。
【０１３０】
図９は、データ転送処理部７５がリトライ処理を返す際の、各信号における状態遷移の様子の例を示す図である。
【０１３１】
リトライ処理を返す場合、データ転送処理部７５は、デバイスセレクション（DEVSEL＃）をアサートしたまま、ストップ（STOP＃）をアサートする。ストップ（STOP＃）のアサートを確認すると、イニシエータ１３は、フレーム（FRAME＃）をディアサートし、さらに、リクエスト（REQ＃）もディアサートし、PCIバス１０を一旦解放する。データ転送処理部７５は、フレーム（FRAME＃）がディアサートされたことを確認すると、ストップ（STOP＃）およびデバイスセレクション（DEVSEL＃）をディアサートする。また、これに伴い、イニシエータ１３は、イニシエータレディ（IRDY＃）もディアサートする。
【０１３２】
なお、リトライが返されると、イニシエータ１３は、上述したようにPCIバス１０を一旦解放した後、同じ内容のメモリリード要求を再度発行する。ターゲット１４は、データ転送の準備が整うまで、メモリリード要求に対してリトライを返す。すなわち、ターゲット１４がデータ転送の準備が整うまで以上のような処理が繰り返される。
【０１３３】
ステップＳ４５の処理を終了するとデータ転送処理部７５は、処理をステップＳ４６に進め、データ蓄積完了後にメモリリード要求を取得したか否かを判定し、取得したと判定した場合、ステップＳ４７に処理を進める。ステップＳ４７において、転送長計測部７３は、転送長計測処理を実行する。転送長計測処理の詳細については、図１０のフローチャートを参照して説明する。
【０１３４】
転送長計測処理を終了すると、マスタ別転送長調査部７１は、処理をステップＳ４８に進める。また、ステップＳ４３において、メモリリード要求を取得していないと判定した場合、データ転送処理部７５は、処理をステップＳ４８に進める。さらに、ステップＳ４６において、データ蓄積完了後にメモリリード要求を取得していないと判定した場合、データ転送処理部７５は、ステップＳ４８に処理を進める。
【０１３５】
ステップＳ４８において、マスタ別転送長調査部７１は、マスタ別転送長調査処理を終了するか否かを判定し、終了しないと判定したばあい、処理をステップＳ４１に戻し、それ以降の処理を繰り返す。また、マスタ別転送長調査処理を終了すると判定した場合、マスタ別転送長調査部７１は、マスタ別転送長調査処理を終了する。
【０１３６】
次に、図１０のフローチャートを参照して、転送長計測処理を説明する。
【０１３７】
転送長計測部７３は、ステップＳ６１において、内蔵する転送長カウンタ（図示せず）の値を初期化し、ステップＳ６２に処理を進める。ステップＳ６２において、データ転送処理部７５は、キャッシュメモリ２２に蓄積した転送データ９１の最初の１ワード分をPCIバス１０に出力させる。
【０１３８】
ステップＳ６３において、転送長計測部７３は、キャッシュメモリ２２より出力されたワード数を計測するために、転送長カウンタを１回インクリメントする。ステップＳ６４において、データ転送処理部７５は、マスタ（イニシエータ１３）よりデータ転送終了が通知されたか否かを判定する。
【０１３９】
メモリリードサイクル（メモリリード要求によるトランザクション）においては、図１１に示されるように、イニシエータ１３は、最後のデータ（データ３）を取得する（クロック９の）直前にフレーム（FRAME＃）をディアサートし、次のデータでトランザクションを終了することを示す。すなわち、イニシエータ１３は、フレーム（FRAME＃）をディアサートした状態でデータを取得すると、イニシエータレディ（IRDY＃）をディアサートし、バスを解放する。また、ターゲット１４（データ転送処理部７５）は、このフレーム（FRAME＃）がディアサートされた場合、データの供給を次のワードで中止する。
【０１４０】
すなわち、図１０のステップＳ６４において、データ転送処理部７５は、フレーム（FRAME＃）の状態を監視し、ディアサートされることにより、データ転送終了が通知されたか否かを判定する。フレーム（FRAME＃）がディアサートされておらず、データ転送終了が通知されていないと判定した場合、データ転送処理部７５は、処理をステップＳ６５に進め、キャッシュメモリ２２の転送データ９１の次の１ワード分をPCIバス１０に出力させる。ステップＳ６５の処理を終了した、データ転送処理部７５は、処理をステップＳ６３に戻し、それ以降の処理を繰り返す。
【０１４１】
また、ステップＳ６４において、フレーム（FRAME＃）がディアサートされ、データ転送終了が通知されたと判定した場合、データ転送処理部７５は、ステップＳ６６に処理を進め、キャッシュメモリ２２を制御してデータの出力を停止させる。データの出力が停止すると、転送長計測部７３は、ステップＳ６７において、転送長カウンタの値に基づいて、最適転送長を求める。例えば、複数回データ転送処理が行われ、複数回転送長が計測された場合、転送長計測部７３は、それらの計測結果である転送長の平均値を最適転送長とする。なお、転送長計測部７３は、最適転送長として、例えば、計測された転送長群の最大値や最小値等、平均値以外の値を最適転送長とするようにしてもよい。
【０１４２】
最適転送長を算出した転送長計測部７３は、処理をステップＳ６８に進め、転送長計測処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ６１に戻し、それ以降の処理を繰り返す。
【０１４３】
また、ステップＳ６８において、転送長計測処理を終了すると判定した場合、転送長計測部７３は、処理をステップ６９に進め、ステップＳ６７において求めた最適転送長を、今回データ転送を行ったイニシエータ１３に対応する最適転送長レジスタにセット（格納）し、転送長計測処理を終了し、処理を図８のステップＳ４７に戻す。
【０１４４】
以上のように転送長計測処理を行うことにより、転送長計測部７３は、イニシエータ１３に対する転送長を求めることができる。
【０１４５】
次に、以上の転送長計測処理において行われるデータ転送をどのマスタデバイスが行っているかを判断するために実行されるマスタ判別処理について図１２のフローチャートを参照して説明する。なお、図１０のステップＳ６９において、求められた最適転送長をレジスタにセットする際に、転送長計測部７３は、このマスタ判別処理の処理結果を利用し、どのマスタデバイスに対応するレジスタにセットするかを判断する。
【０１４６】
マスタ判別部７２は、ステップＳ８１において、各マスタデバイスに対するグラント（GNT＃）のいずれかがアサートされたか否かを判定し、アサートされたと判定するまで待機する。このとき、PCIバス１０は、どのマスタデバイスもPCIバス１０の使用権を獲得していない（すなわちデータ転送が行われていない）アイドル状態である。グラント（GNT＃）のいずれかがアサートされたと判定した場合、マスタ判別部７２は、処理をステップＳ８２に進める。
【０１４７】
ステップＳ８２において、マスタ判別部７２は、グラント（GNT＃）がアサートされたマスタを特定マスタに設定する。また、このとき、グラントがアサートされたマスタデバイスは、フレームFRAME＃をアサートする。これによりPCIバス１０にはトランザクションが発生し、データ転送に関する処理が開始される。
【０１４８】
ステップＳ８２の処理を終了するとマスタ判別部７２は、ステップＳ８３に処理を進め、グラント（GNT＃）がアサートされたマスタが変更されたか否かを判定し、変更されたと判定した場合、ステップＳ８４に処理を進め、トランザクションが終了し、バスアイドル状態が発生したか否かを判定し、バスアイドル状態が発生したと判定するまで待機する。
【０１４９】
PCIバス１０は、ドライバの切り替え等のために、前のトランザクションの終了と、次のトランザクションの開始の間に、少なくとも１クロックの待機状態（バスアイドル状態）の区間（例えば、図１３のクロック２、クロック５、クロック９、およびクロック１１）が必要である。図１３においては、マスタａとマスタｂとの間で、バスの使用権が切り替えられる様子が示されている。
【０１５０】
そこで、マスタ判別部７２は、アービタ１６がトランザクション中にグラント（GNT＃）をアサートするデバイスを変更しても（アービタ１６が次にバスの使用権を与えるマスタデバイスを、イニシエータ１３以外のマスタデバイスの中から選択しても）、すぐにイニシエータ１３となるマスタデバイスが変更されたと判断せずに、トランザクションが終了するまで待機する。
【０１５１】
そして、ステプＳ８４において、バスアイドル状態が発生したと判定した場合、マスタ判別部７２は、トランザクションが終了したと判定し、処理をステップＳ８５に進め、特定マスタを、現在グラント（GNT＃）がアサートされているマスタに変更する。
【０１５２】
ステップＳ８５の処理を終了したマスタ判別部７２は、ステップＳ８６に処理を進める。また、ステップＳ８３においてグラントがアサートされたマスタが変更されていないと判定した場合、マスタ判別部７２は、ステップＳ８４およびステップＳ８５の処理を省略し、ステップＳ８６に処理を進める。
【０１５３】
ステップＳ８６において、マスタ判別部７２は、グラント（GNT＃）がディアサートされたか否かを判定し、グラント（GNT＃）がディアサートされたと判定した場合、処理をステップＳ８７に進め、バスアイドル状態が発生したか否かを判定し、バスアイドル状態が発生したと判定するまで待機する。
【０１５４】
トランザクション中にグラント（GNT＃）がディアサートされ、アービタ１６がバスの使用権をどのデバイスにも割り当てないとした場合も、マスタ判別部７２は、上述した切り替えの場合と同様に、バスアイドルが発生するまで（トランザクションが終了するまで）待機する。
【０１５５】
ステップＳ８７において、バスアイドル状態が発生し、トランザクションが終了したと判定した場合、マスタ判別部７２は、ステップＳ８８に処理を進め特定マスタの設定を空にする。
【０１５６】
ステップＳ８９に処理を進めると、マスタ判別部７２は、マスタ判別処理を終了するか否かを判定し、終了しないと判定した場合、マスタ判別部７２は、処理をステップＳ８１に戻し、それ以降の処理を繰り返す。またステップＳ８９において、マスタ判別処理を終了すると判定したマスタ判別部７２は、マスタ判別処理を終了する。
【０１５７】
また、ステップＳ８６において、グラントがディアサートされなかったと判定した場合、マスタ判別部７２は、ステップＳ９０に処理を進め、マスタ判別処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ８３に戻し、それ以降の処理を繰り返す。また、ステップＳ９０において、マスタ判別処理を終了すると判定した場合、マスタ判別部７２は、マスタ判別処理を終了する。
【０１５８】
以上のようにして、マスタ判別部７２は、イニシエータ１３となるマスタデバイスを特定する。これにより、転送長計測部７３は、計測した最適転送長をマスタデバイス毎に管理する（マスタ別最適転送長記憶部７４に記憶させる）ことができる。
【０１５９】
このようにマスタデバイス毎の最適転送長を準備すると、各PCIデバイス１１は、通常のPCIデータ転送処理を開始する。その際、ターゲットとなったPCIデバイス（すなわち、ターゲット１４）は、１回のメモリリード要求に対して、上述したように準備したイニシエータ１３の最適転送長分のデータをローカルメモリ２１より読み出し、キャッシュメモリ２２に保持する。
【０１６０】
次に、以上のように準備されたマスタデバイス毎の最適転送長を用いたデータ転送処理について図１４のフローチャートを参照して説明する。
【０１６１】
最初に、ステップＳ１０１において、データ転送処理部７５は、メモリリード要求を取得したか否かを判定し、取得したと判定した場合、ステップＳ１０２に処理を進める。ステップＳ１０２において、マスタ判別部７２は、データ転送処理部７５に制御され、上述した転送長計測時の場合と同様に、各信号に基づいてメモリリード要求を発行したマスタを判別する（イニシエータ１３として動作しているマスタデバイスを特定する）。
【０１６２】
ステップＳ１０３において、データ転送処理部７５は、メモリリード要求に対してリトライを返すとともに、マスタ判別部７２が判別したマスタ用の最適転送長をマスタ別最適転送長記憶部７４より取得し、ローカルメモリ２１よりその最適転送長分のデータを読み出してキャッシュメモリ２２に蓄積させる。なおイニシエータ１３より同じ内容のメモリリード要求を繰り返し発行された場合、データ転送処理部７５は、データが蓄積するまで、各要求に対してリトライを返す。
【０１６３】
そして、データ蓄積が完了すると、データ転送処理部７５はステップＳ１０４に処理を進め、データ蓄積完了後にメモリリード要求を取得したか否かを判定し、取得したと判定するまで待機する。取得したと判定した場合、データ転送処理部７５は、ステップＳ１０５に処理を進め、キャッシュメモリ２２を制御して、キャッシュメモリ２２に蓄積したデータをPCIバス１０に出力させ、マスタ（イニシエータ１３）に転送する。
【０１６４】
データを転送させたデータ転送処理部７５は、処理をステップＳ１０６に進める。また、ステップＳ１０１において、マスタデバイスよりメモリリード要求を取得していないと判定した場合、データ転送処理部１０１は、ステップＳ１０２乃至ステップＳ１０５の処理を省略し、ステップＳ１０６に処理を進める。
【０１６５】
ステップＳ１０６において、データ転送処理部７５は、データ転送処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ１０１に戻し、それ以降の処理を繰り返す。また、ステップＳ１０６において、データ転送処理を終了すると判定した場合、データ転送処理部７５は、データ転送処理を終了する。
【０１６６】
以上のようにして、データ転送処理部７５は、マスタ別最適転送長記憶部７４に保持されている、イニシエータ１３に対応する最適転送長を取得し、それを用いてデータ転送を行う。このように転送処理を行うことにより、ターゲット１４は、どのマスタデバイスに対しても、必要最低限のデータを準備することができる。
【０１６７】
図１５は、ターゲット１４によるデータ転送の転送長がマスタ毎に異なる場合について説明する図である。
【０１６８】
図１５において、ターゲット１４は、マスタデバイスであるマスタＡ１５１からのメモリリード要求に対しては、マスタ別最適転送長記憶部７４に記憶されているマスタＡ用最適転送長１６１分のデータであるマスタＡ用転送データ１７１をローカルメモリ２１より取得し、マスタデバイスであるマスタＢ１５２からのメモリリード要求に対しては、マスタ別最適転送長記憶部７４に記憶されているマスタＢ用最適転送長１６２分のデータであるマスタＢ用転送データ１７２をローカルメモリ２１より取得し、マスタデバイスであるマスタＣ１５３からのメモリリード要求に対しては、マスタ別最適転送長記憶部７４に記憶されているマスタＣ用最適転送長１６３分のデータであるマスタＣ用転送データ１７３をローカルメモリ２１より取得する。
【０１６９】
このように、ターゲット１４は、各マスタデバイスに対して最適な転送長のデータを準備するので、マスタの待機時間を増大させることなく、不要なローカルバス２０の占有を抑制し、PCIバス１０またはローカルバス２０の各デバイスがそのバスをより有効に活用することができる。
【０１７０】
なお、以上においては、イニシエータ１３およびターゲット１４が、ホストPCIコントローラ１５と同じPCIバス１０に接続される場合について説明したが、イニシエータ１３またはターゲット１４のいずれか一方、または両方が、例えば、PCI−PCIブリッジを介してPCIバス１０に接続される他のPCIバスのPCIデバイスであってももちろんよい。
【０１７１】
図１６は、本発明を適用した画像処理装置の他の構成例を示す図である。
【０１７２】
図１６に示されるように、画像処理装置２００は、画像処理装置１の構成と同様の構成を有しており、さらに、そのPCIバス１０にはPCI-PCIブリッジ２０１を介してPCIバス２１０が接続されている。
【０１７３】
PCI-PCIブリッジ２０１は、PCIバス１０とPCIバス２１０とを接続し、互いのバスのデバイス間によるデータ転送の中継処理を行うデバイス（ブリッジデバイス）である。
【０１７４】
PCIバス２１０は、PCIバス１０と同様のバスであり、PCIデバイス２１１−１乃至２１１−Ｋ（以下、区別する必要が無い場合は、PCIデバイス２１１と称する）のＫ個のPCIデバイス２１１が接続されている。また、PCIバス２１０には、PCIバス２１０用のアービタ２１６も接続されている。
【０１７５】
PCI−PCIブリッジ２０１は、PCIバス１０およびPCIバス２１０の両方のPCIデバイスとして動作する。例えば、PCIバス１０のイニシエータ１３がPCIバス２１０のターゲット２１４に対して、メモリリード要求を行う場合、イニシエータ１０は、PCI-PCIブリッジ２０１に対してメモリリード要求を行う。すなわち、PCI-PCIブリッジ２０１は、このとき、PCIバス１０においてターゲットとして動作する。
【０１７６】
そして、PCI−PCIブリッジ２０１は、メモリリード要求を受け取ると、次に、PCIバス２１０においてイニシエータとして動作し、イニシエータ１３の代わりに、ターゲット２１４に対してメモリリード要求を行う。ターゲット２１４は、この要求に応じて、ローカルバス２２０を介してローカルメモリ２２１より要求されたデータを読み出し、キャッシュメモリ２２２に保持させ、データ転送の準備を行う。そして、データ転送の準備が完了すると、ターゲット２１４は、その用意したデータをPCI-PCIブリッジに供給する。
【０１７７】
PCIバス２１０において、PCI−PCIブリッジ２０１は、PCIバス２１０に対してイニシエータのように動作し、そのデータを取得するとともに、PCIバス１０に対してターゲットのように動作し、取得したデータを内蔵するキャッシュメモリ２０２に保持し、イニシエータ１３に対するデータ転送の準備を行う。そして、データの保持が完了すると、PCI−PCIブリッジ２０１は、そのデータをPCIバス１０に出力し、イニシエータ１３に供給する。
【０１７８】
つまり、PCIバス２１０をPCI−PCIブリッジ２０１のローカルバスと考えると、PCI−PCIブリッジ２０１は、図１のターゲット１４と同様の構成になる。従って、PCI−PCIブリッジ２０１は、このようなデータ転送において、図１のターゲット１４の場合と基本的に同様に動作する。そして、CPU３１は、PCI−PCIブリッジ２０１とターゲット２１４に対して上述したような制御処理を行う。この場合、PCI−PCIブリッジ２０１は、PCIバス２１０に対してイニシエータとして動作するので、ターゲット２１４は、PCI−PCIブリッジ２０１に対する最適転送長の計測処理も行う。
【０１７９】
なお、以上においては、PCIバス１０側にイニシエータが存在し、PCIバス２１０側にターゲットが存在する場合について説明したが、画像処理装置２００は、逆にPCIバス１０側にターゲットが存在し、PCIバス２１０側にイニシエータが存在するようなデータ転送を行うこともできる。
【０１８０】
その場合、PCI−PCIブリッジ２０１は、PCIバス２１０に対してターゲットとして動作し、PCIバス１０側に対してイニシエータとして動作する。すなわち、PCI−PCIブリッジ２０１は、上述したように、PCIバス１０に対して図１のターゲット１４と同様に動作するが、逆に、PCIバス２１０に対して図１のターゲット１４と同様に動作することもできる。
【０１８１】
図１７は、PCI−PCIブリッジ２０１の内部の構成例を示すブロック図である。上述したように、PCI−PCIブリッジ２０１は、PCIバス１０に対して基本的に同様の構成であるが、マスタ判別部として、PCIバス１０用の第１PCIバス用マスタ判別部２７２−１と、PCIバス２１０用の第２PCIバス用マスタ判別部２７２−２の２つのマスタ判別部を有している。また、それらのマスタ判別部の動作を切り替えるために切り替え部２７１が新たに設けられている。切り替え部２７１は、PCI−PCIブリッジ２０１がPCIバス１０またはPCIバス２１０のどちらの側とデータ転送を行うかによって第１PCIバス用マスタ判別部２７２−１と第２PCIバス用マスタ判別部２７２−２のいずれか一方を動作させる。さらに、データ転送処理部７５およびキャッシュメモリ２２は、上述したPCIバス１０側と同様に、PCIバス２１０に接続されている。
【０１８２】
図１８に示されるように、第１PCIバス用マスタ判別部２７２−１と第２PCIバス用マスタ判別部２７２−２は、それぞれ、上述した図３のマスタ判別部７２の場合と同様に、アービタ１６またはアービタ２１６と接続されており、それぞれのPCIバスのマスタデバイスがアサートするリクエスト（REQ＃）の状態と、それぞれのアービタがアサートするグラント（GNT＃）の状態を監視する。
【０１８３】
具体的には、第１PCIバス用マスタ判別部２７２−１は、マスタデバイス１０１−１乃至１０１−Ｌとアービタ１６が接続される信号バスであるリクエスト（REQ＃）１１１−１乃至１１１−Ｌのそれぞれと、信号バスであるリクエスト（REQ＃）１２１−１乃至１２１−Ｌにより、接続されており、同様に、第２PCIバス用マスタ判別部２７２−２は、マスタデバイス３０１−１乃至３０１−Ｌとアービタ２１６が接続される信号バスであるリクエスト（REQ＃）３１１−１乃至３１１−Ｌのそれぞれと、信号バスであるリクエスト（REQ＃）３２１−１乃至３２１−Ｌにより、接続されている。
【０１８４】
また、図１９に示されるように、第１PCIバス用マスタ判別部２７２−１と第２PCIバス用マスタ判別部２７２−２は、それぞれ、上述した図３のマスタ判別部７２の場合と同様に、フレーム（FRAME＃）１３１または３３１、並びに、イニシエータレディ（IRDY＃）１３２および３３２と接続されており、それぞれのPCIバスのマスタデバイスがアサートするフレーム（FRAME＃）の状態と、イニシエータレディ（IRDY＃）の状態を監視する。
【０１８５】
具体的には、第１PCIバス用マスタ判別部２７２−１は、第１PCIバス１０の信号バスであるフレーム（FRAME＃）１３１およびイニシエータレディ（IRDY＃）１３２と、信号線１４１または１４２により接続されており、同様に、第２PCIバス用マスタ判別部２７２−２は、第２PCIバス２１０の信号バスであるフレーム（FRAME＃）３３１およびイニシエータレディ（IRDY＃）３３２と、信号線３４１または３４２により接続されている。
【０１８６】
このようなPCI−PCIブリッジ２０１を有する画像処理装置２００において、各部の処理は基本的に図１の画像処理装置１と同様に動作するのでその説明は省略する。図２０のフローチャートを参照して、PCI−PCIブリッジ２０１によるマスタ別転送長調査処理について説明する。この場合も、基本的に図８のフローチャートを参照して説明した、図１のターゲット１４によるマスタ別転送長調査処理と同様に行われる。
【０１８７】
すなわち、図２０においてステップＳ１２１乃至ステップＳ１２３は、図８のステップＳ４１乃至ステップＳ４３にそれぞれ対応し、ステップＳ１２５乃至ステップＳ１２９の処理は、図８のステップＳ４４乃至ステップＳ４８にそれぞれ対応し、同様に実行される。
【０１８８】
すなわち、PCI−PCIブリッジ２０１のデータ転送処理部７５が、図２０のステップＳ１２３においてメモリリード要求を取得すると、処理をステップＳ１２４に進める。このとき切り替え部２７１は、ステップＳ１２４において、メモリリード要求を発行した側を特定し、その側のPCIバス用マスタ判別部が動作するように切り替え処理を行い、処理をステップＳ１２５に進める。
【０１８９】
すなわち、動作するように制御された方のマスタ判別部がステップＳ１２５の処理を実行する。
【０１９０】
以上のように、切り替え処理を行うことにより、PCI−PCIブリッジ２０１は、上述したターゲット１４のように動作し、PCIバス１０およびPCIバス２１０の両方のバスのトラフィックの増加を抑制させることができる。
【０１９１】
すなわち、複数のPCIバスを有する画像処理装置２００は、不要なローカルバスの占有を抑制するだけでなく、各PCIバスの不要な占有を抑制し、さらに、各PCIバスにおけるデータ転送の転送効率の低下を抑制することもできる。従って、画像処理装置２００は、複数のシステムバスを有する場合であっても、各システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用するようにすることができる。
【０１９２】
なお、以上においては、画像処理装置２００が２つのPCIバスと、１つのPCI-PCIブリッジを有する場合について説明したが、これに限らず、例えば、画像処理装置が３つ以上のPCIバスを有するようにし、各PCIバスがPCI-PCIブリッジを介して互いに接続されるようにしてももちろんよい。すなわち、イニシエータとターゲットが複数のPCI-PCIブリッジを介してデータ転送を行うようにしてもよい。
【０１９３】
また、以上においては、転送長の調査をPCIバスのリセット時に行うように説明したが、これに限らず、例えば、通常のデータ転送においても、各ターゲットが、イニシエータに対して監視処理を行い、不都合が生じた場合、最適転送長の値の再調整を行うようにしてもよい。
【０１９４】
図２１は、図１のターゲット１４の内部の構成の、他の例を示すブロック図である。
【０１９５】
図２１において、ターゲット１４は、図３に示される構成の他に、ディスコネクト監視部４０１を有している。
【０１９６】
ディスコネクト監視部４０１は、マスタ判別部７２およびデータ転送処理部７５を監視しながら、データ転送処理部７５によるデータ転送においてディスコネクト処理の発生を監視する。そして、ディスコネクト処理が発生した場合、転送長計測部７３およびデータ転送処理部７５を制御して、最適転送長の再設定処理を行う。
【０１９７】
図２２のフローチャートを参照して、ディスコネクト監視部４０１が実行するディスコネクト監視処理を説明する。
【０１９８】
ステップＳ１４１において、ディスコネクト監視部４０１は、メモリリード要求を受け付けたか否かを判定し、受け付けたと判定した場合、ステップＳ１４２に処理を進め、ディスコネクトの発生を監視する。そして、ディスコネクト監視部４０１は、ステップＳ１４３においてディスコネクトが発生したか否かを判定し、ディスコネクトが発生したと判定した場合、ステップＳ１４４において、マスタ判別部７２を制御し、メモリリード要求を発行したマスタを判別し、ステップＳ１４５において、判別したマスタに対してリード要求を発行させるように要求し、転送長計測部７３およびデータ転送処理部７５を制御して、判別したマスタに対する転送長調査処理を実行する。転送長調査処理の詳細については、図２３のフローチャートを参照して説明する。
【０１９９】
判別したマスタに対する転送長調査処理が終了するとディスコネクト監視部４０１は、処理をステップＳ１４６に進める。また、ステップＳ１４１においてメモリリード要求を受け付けていないと判定した場合、ディスコネクト監視部４０１は、ステップＳ１４２乃至ステップＳ１４５の処理を省略し、ステップＳ１４６に処理を進める。さらに、ディスコネクト監視部４０１は、ステップＳ１４３においてディスコネクトが発生していないと判定した場合、ステップＳ１４４およびステップＳ１４５の処理を省略し、ステップＳ１４６に処理を進める。
【０２００】
ステップＳ１４６においてディスコネクト監視部４０１は、ディスコネクト監視処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ１４１に戻し、それ以降の処理を繰り返す。また、ステップＳ１４６において、ディスコネクト監視処理を終了すると判定した場合、ディスコネクト監視部４０１は、ディスコネクト監視処理を終了する。
【０２０１】
次に、図２３のフローチャートを参照して、図２２のステップＳ１４５において実行される転送長調査処理の詳細を説明する。なお、この処理は、基本的に、図８のフローチャートを参照して説明したマスタ別転送長調査処理と同様の処理が実行される。
【０２０２】
ただし、転送長初期値は、リセット時の処理において既にセットされているので、図８のステップＳ４１およびステップＳ４２に対応する処理は省略される。
【０２０３】
ステップＳ１６１において、データ転送処理部７５は、転送長を計測するマスタよりメモリリード要求を取得したか否かを判定する。この処理は図８のステップＳ４３に対応する。ステップＳ１６１において、メモリリード要求を取得したと判定した場合、データ転送処理部７５は、ステップＳ１６２に処理を進め、メモリリード要求に対してリトライを返すとともに、ローカルメモリ２１よりデータを転送長初期値分読み出し、キャッシュメモリ２２に蓄積する。この処理は、図８のステップＳ４５に対応する。なお、図２３の転送長調査処理においては、転送長を計測するマスタを予め特定してあるので、図８のステップＳ４４に対応する処理は省略される。
【０２０４】
ステップＳ１６２の処理を終了すると、データ転送処理部７５は、ステップＳ１６３に処理を進め、データ蓄積完了後、メモリリード要求を受け付けたか否かを判定し、受け付けたと判定した場合、ステップＳ１６４に処理を進める。ステップＳ１６４において、転送長計測部７３は、図１０を参照して説明したような転送長計測処理を実行する。そして、転送長計測処理を終了すると転送長計測部７３は、処理をステップＳ１６５に進める。
【０２０５】
また、ステップＳ１６１において、メモリリード要求を取得していないと判定した場合、または、ステップＳ１６３において、データ蓄積完了後、メモリリード要求を受け付けていないと判定した場合、データ転送処理部７５は、ステップＳ１６５に処理を進める。
【０２０６】
ステップＳ１６５において、データ転送処理部７５は、転送長調査処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ１６１に戻し、それ以降の処理を繰り返し、終了すると判定した場合、転送長調査処理を終了し、図２２のステップＳ１４５に処理を戻す。
【０２０７】
以上のように通常のデータ転送においてディスコネクトの発生を監視し、ディスコネクトが発生した場合、転送長の再設定を行うことにより、ターゲット１４は、イニシエータ１３に対して常に最適な転送長を得ることができる。このようにすることにより、画像処理装置１は、最適転送長が時間と共に変化するような場合においても、各システムバスまたはローカルバスの各デバイスがそのバスをより有効に活用するようにすることができる。
【０２０８】
なお、上述したように、イニシエータ１３およびターゲット１４は、PCIバス１０に接続された任意のPCIデバイス１１（複数のPCIバスが存在する場合はそれらの全てのバスに接続された任意のPCIデバイス）であり、それらによるPCIデータ転送１２は、任意のPCIデバイス１１間のデータ転送に適用することができる。
【０２０９】
また、以上においては、PCIバス１１０を用いたバスシステムについて説明したが、システムバスとしては、これ以外のバスであってももちろんよい。また、そのようなバスであれば、イニシエータとターゲットが、それぞれ、ブリッジで互いに接続された、互いに異なる種類のバスに接続されているようにしてもよい。
【０２１０】
さらに、イニシエータ１３が複数のデバイスとしての機能を有している場合（多機能デバイスである場合）、ターゲット１４は、イニシエータ１３の機能ごとに最適転送長を設定するようにしてもよいし、同じイニシエータ１３に対する１つの最適転送長を、１つのPCIデバイス１１内で共有するようにしてもよい。逆にターゲット１４が複数のデバイスとしての機能を有している場合、ターゲット１４は、機能毎に、イニシエータ１３に対する最適転送長を計測してもよいし、１つの機能についてのみ計測し、その結果得られた最適転送長を、そのターゲットの全ての機能で共有するようにしてももちろんよい。
【０２１１】
なお、以上においては、PCIバス１０がリセットされると、各ターゲットにおいて、各マスタデバイスに対する最適転送長の計測処理が行われるように説明したが、これに限らず、例えば、ターゲットデバイスの一部または全部が、リセット前に使用されていた各マスタデバイスに対する最適転送長を不揮発性のメモリ等に保持し、リセット後に設定処理を省略してその保持していた最適転送長を流用するようにしてももちろんよい。このようにすることにより、各ターゲットデバイスは、上述したような設定処理や計測処理を省略することができるので、リセット処理の負荷を軽減させることができる。
【０２１２】
また、以上においては、映像機器である画像処理装置について説明したが、上述したようなバスシステムを有する装置であれば何でもよく、例えば、パーソナルコンピュータやサーバ等の情報処理装置であってもよいし、PDAや携帯電話器等のモバイル機器であってもよいし、テレビジョン受信装置やハードディスクレコーダ等の家庭電化製品であってももちろんよい。
【０２１３】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、CPU３１が、ドライブ４３を介してリムーバブルメディア４４より読み出した、各ターゲットデバイスが上述した処理を実行するのに必要なプログラムやデータを、PCIバス１０を介して、各マスタデバイス（PCIデバイス１１の一部）に供給し、インストールするようにしてもよい。
【０２１４】
そのとき、各マスタデバイスが、そのように供給されたプログラムやデータを取得すると、それらを内蔵する不揮発性のメモリ等の記憶部に記憶し、必要に応じてそれらのプログラムを実行し、上述した処理を実行するようにしてもよい。
【０２１５】
このようにすることにより、例えば、上述した処理に対応していない既存のマスタデバイスも、PCIバス１０に接続することにより、CPU３１が必要なプログラムやデータをインストールすることができる。従って、画像処理装置１は、どのようなPCIデバイス１１が接続されてもPCIバス１０を有効に活用させることができる。
【０２１６】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０２１７】
この記録媒体は、例えば、図１に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア４４により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM４１や、記憶部４２に含まれるフラッシュメモリなどで構成される。
【０２１８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２１９】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２２０】
【図１】本発明を適用した画像処理装置の構成例を示すブロック図である。
【図２】図１のCPUの詳細な構成例を示すブロック図である。
【図３】図１のターゲットの詳細な構成例を示すブロック図である。
【図４】図３のマスタ判別部の接続例を示す図である。
【図５】図３のマスタ判別部の接続例を示す図である。
【図６】リセット処理の例を説明するフローチャートである。
【図７】マスタ別転送長調査制御処理の例を説明するフローチャートである。
【図８】マスタ別転送長調査処理の例を説明するフローチャートである。
【図９】リトライにおける信号の状態遷移の例を説明する図である。
【図１０】転送長計測処理の例を説明するフローチャートである。
【図１１】メモリリードサイクルにおける信号の状態遷移の例を説明する図である。
【図１２】マスタ判別処理の例を説明するフローチャートである。
【図１３】アービトレーションの様子の例を説明する図である。
【図１４】データ転送処理の例を説明するフローチャートである。
【図１５】メモリリード要求に対するデータ転送の様子を説明する図である。
【図１６】本発明を適用した画像処理装置の他の構成例を示すブロック図である。
【図１７】図１６のPCI-PCIブリッジの詳細な構成例を示すブロック図である。
【図１８】図１７のマスタ判別部の接続例を示す図である。
【図１９】図１７のマスタ判別部の接続例を示す図である。
【図２０】マスタ別転送長調査処理の例を説明するフローチャートである。
【図２１】図１のターゲットの詳細な他の構成例を示すブロック図である。
【図２２】ディスコネクト監視処理の例を説明するフローチャートである。
【図２３】転送長調査処理の例を説明するフローチャートである。
【符号の説明】
【０２２１】
１  画像処理装置，  １０  PCIバス  １１  PCIデバイス，  １２  PCIデータ転送，  １３  イニシエータ，  １４  ターゲット，  １５  ホストPCIブリッジ，  １６  アービタ，  ２０  ローカルバス，  ２１  ローカルメモリ，  ２２  キャッシュメモリ，  ３１  CPU，  ３２  メインメモリ，  ４１  ROM，  ４２  記憶部，  ４３  ドライブ，  ４４  リムーバブルメディア，  ５１  リセット処理部，  ５２  PCIコンフィギュレーション処理部，  ５３  調査対象ターゲット特定部，  ５４  転送長初期値供給部，  ５５  転送長初期値記憶部，  ５６  マスタ別転送長調査制御部，  ５７  インタフェース処理部，  ６１  転送長初期値，  ７１  マスタ別転送長調査部，  ７２  マスタ判別部，  ７３  転送長計測部，  ７４  マスタ別最適転送長記憶部，  ７５  データ転送処理部，  ８２  最適転送長，  ９１  転送データ，  ２００  画像処理装置，  ２０１  PCI-PCIブリッジ，  ２０２  キャッシュメモリ，  ２１０  PCIバス，  ２１１−１乃至２１１−Ｋ  PCIデバイス，  ２１４  ターゲット，  ２１６  アービタ，  ２２０  ローカルバス，  ２２１  ローカルメモリ，  ２２２  キャッシュメモリ，  ２７１  切り替え部，  ２７２−１  第１PCIバス用マスタ判別部，  ２７２−２  第２PCIバス用マスタ判別部，  ４０１  ディスコネクト監視部，
【図１】
2005242414.tif 000003
【図２】
2005242414.tif 000004
【図３】
2005242414.tif 000005
【図４】
2005242414.tif 000006
【図５】
2005242414.tif 000007
【図６】
2005242414.tif 000008
【図７】
2005242414.tif 000009
【図８】
2005242414.tif 000010
【図９】
2005242414.tif 000011
【図１０】
2005242414.tif 000012
【図１１】
2005242414.tif 000013
【図１２】
2005242414.tif 000014
【図１３】
2005242414.tif 000015
【図１４】
2005242414.tif 000016
【図１５】
2005242414.tif 000017
【図１６】
2005242414.tif 000018
【図１７】
2005242414.tif 000019
【図１８】
2005242414.tif 000020
【図１９】
2005242414.tif 000021
【図２０】
2005242414.tif 000022
【図２１】
2005242414.tif 000023
【図２２】
2005242414.tif 000024
【図２３】
2005242414.tif 000025