(57)【要約】【課題】システムバスの各デバイスがそのシステムバスをより有効に活用する。【解決手段】  初期アウェイ値設定部は、ステップＳ２１において、初期アウェイ値をイニシエータに供給する。アドレスセット処理部は、ステップＳ２２において、イニシエータに対応する各ターゲットのレイテンシ値設定用アクセス先アドレスを供給する。ステップＳ２４において、計測処理実行制御部は、イニシエータにｉ番目のターゲットに対する計測処理の実行を開始させ、ステップＳ２５において完了フラグを監視し、完了フラグがアサートされるとステップＳ２６において変数ｉをインクリメントし、未処理のターゲットが存在する場合、ステップＳ２４に処理を戻してそれ以降の処理を繰り返し、全てのターゲットに対して計測処理を行った場合、処理を終了する。本発明は、例えば、PCIバスシステムに適用できる。【選択図】図９
2005242437.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バスコントローラの性能、またはデバイスの接続状況などによっても変化する可能性がある。従って、このように、ターゲットがどのマスタデバイスに対しても常に同じレイテンシ情報（待機時間の指定）を供給する場合、イニシエータは、待機時間が短すぎ、ターゲットのデータ転送の準備が完了していないのに再度アクセス要求をしてしまったり（すなわち、リトライが発生したり）、待機時間が長すぎ、ターゲットのデータ転送の準備が整っているにも関わらず、不要に待機してしまったりして、データ転送効率が低下してしまう恐れもあった。
【００２０】
本発明は、このような状況に鑑みてなされたものであり、システムバスの各デバイスがそのシステムバスをより有効に活用することができるようにするものである。
【課題を解決するための手段】
【００２１】
本発明の情報処理装置は、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスが、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間を制御し、マスタデバイスの待機時間として設定するマスタデバイス待機時間を計測する計測手段と、計測手段により計測されたマスタデバイス待機時間に対応する値を、マスタデバイスがデータ転送において使用するレイテンシ値として設定するレイテンシ値設定手段とを備えることを特徴とする。
【００２２】
前記計測手段は、待機時間を制御し、マスタデバイス待機時間として、マスタデバイスのデータ転送の相手のデバイスであるターゲットがコマンドを取得してからデータ転送の準備を整えるまでの時間を計測するようにすることができる。
【００２３】
前記計測手段は、待機時間を制御し、マスタデバイスのデータ転送の相手のデバイスであるターゲットがコマンドを取得してからデータ転送の準備を整えるまでの時間よりも長いマスタデバイス待機時間を計測するようにすることができる。
【００２４】
前記計測手段は、待機時間を制御し、マスタデバイス待機時間として、最も短い時間となるように最適化された待機時間である最適待機時間を計測するようにすることができる。
【００２５】
前記計測手段は、待機時間を制御し、待機時間の制御単位上において、最適待機時間を計測するようにすることができる。
【００２６】
前記制御単位は、情報処理装置のシステムクロックに基づいた時間単位であるようにすることができる。
【００２７】
前記計測手段は、待機時間を制御して待機時間の長さを変更しながら、マスタデバイスにデータ転送を繰返し実行させることにより、マスタデバイス待機時間を計測するようにすることができる。
【００２８】
クロックをカウントするカウント手段をさらに備え、計測手段は、カウント手段によるクロックのカウント処理実行中の期間を待機時間とし、カウント手段にカウントさせるクロックの数を変更することによって待機時間の長さを変更しながら、マスタデバイスにデータ転送を繰返し実行させることにより、マスタデバイス待機時間を計測するようにすることができる。
【００２９】
前記計測手段による計測処理においてマスタデバイスが繰返し実行するデータ転送における待機時間の初期値を設定する初期待機時間設定手段をさらに備え、計測手段は、計測処理において、初期待機時間設定手段により設定された初期値を用いて、マスタデバイスに最初のデータ転送を実行させるようにすることができる。
【００３０】
前記計測手段は、計測処理において繰返し実行されるデータ転送において、初期待機時間設定手段により設定される初期値を待機時間の最大値とし、マスタデバイスがデータ転送を繰り返す度に、待機時間が短くなるように待機時間を再設定するようにすることができる。
【００３１】
前記計測手段は、待機時間が短くなるように待機時間を再設定しながら、データ転送に対応するターゲットがマスタデバイスに対して発行した、データ転送の準備が完了していないことを示す応答であるリトライを検出するまで、マスタデバイスにデータ転送を繰り返し実行させるようにすることができる。
【００３２】
前記計測手段は、リトライを検出すると、データ転送の繰り返しを中止して、１回前のデータ転送における待機時間をマスタデバイス待機時間とするようにすることができる。
【００３３】
前記計測手段は、１つのマスタデバイスに対して、ターゲット毎にマスタデバイス待機時間を計測し、レイテンシ値設定手段は、計測手段により計測されたターゲット毎のマスタデバイス待機時間に対応する値を、ターゲット毎のレイテンシ値として設定するようにすることができる。
【００３４】
前記計測手段による計測処理において、マスタデバイスがアクセスするアクセス先アドレスを設定するアドレス設定手段をさらに備え、計測手段は、マスタデバイスが、アドレス設定手段により設定されたアクセス先アドレスに対して、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間を制御し、マスタデバイス待機時間を計測するようにすることができる。
【００３５】
前記アドレス設定手段は、１つのターゲットに対応して、互いに異なる２つのアクセス先アドレスを設定し、計測手段は、マスタデバイスが、アドレス設定手段により設定された２つのアクセス先アドレスに対して交互に実行する２つのデータ転送の両方に基づいて、マスタデバイス待機時間を計測するようにすることができる。
【００３６】
前記システムバスに接続された複数のデバイスの中から、計測手段によりマスタデバイス待機時間を計測するデータ転送を行うマスタデバイスを特定するマスタデバイス特定手段をさらに備え、計測手段はマスタデバイスに特定されたマスタデバイスに対応するマスタデバイス待機時間を計測するようにすることができる。
【００３７】
前記計測手段による計測処理の実行を制御する計測処理実行制御手段をさらに備えるようにすることができる。
【００３８】
前記制御手段は、計測手段がマスタデバイス待機時間を計測するデータ転送を行うデバイスを選択するデバイス選択手段と、計測手段による計測処理の開始を制御する開始制御手段とを備えるようにすることができる。
【００３９】
前記複数のデバイスがシステムバスを介して互いに行うデータ転送において、ターゲットがマスタデバイスに対して発行した、データ転送の準備が完了していないことを示す応答であるリトライを検出することにより、リトライの数を監視するリトライ監視手段をさらに備え、開始制御手段は、リトライ監視手段により、１回のデータ転送において、予め定められた所定の数より多くリトライを検出した場合、計測手段による計測処理を開始させるようにすることができる。
【００４０】
本発明の情報処理方法は、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスが、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間を制御し、マスタデバイスの待機時間として設定するマスタデバイス待機時間を計測する計測ステップと、計測ステップの処理により計測されたマスタデバイス待機時間に対応する値を、マスタデバイスがデータ転送において使用するレイテンシ値として設定するレイテンシ値設定ステップとを含むことを特徴とする。
【００４１】
本発明のプログラムは、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスが、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間を制御し、マスタデバイスの待機時間として設定するマスタデバイス待機時間を計測する計測ステップと、計測ステップの処理により計測されたマスタデバイス待機時間に対応する値を、マスタデバイスがデータ転送において使用するレイテンシ値として設定するレイテンシ値設定ステップとをコンピュータに実行させる。
【００４２】
本発明の情報処理装置および方法、並びにプログラムにおいては、データ転送を制御してデータ転送を行うデバイスであるマスタデバイスが、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間が制御され、マスタデバイス待機時間として設定されるマスタデバイス待機時間が計測され、計測されたマスタデバイス待機時間に対応する値が、マスタデバイスがデータ転送において使用するレイテンシ値として設定される。
【発明の効果】
【００４３】
本発明によれば、データ転送を制御することができる。特に、例えば、アクセス回数を減少させることによりバスのトラフィックを軽減させる等して、システムバスの各デバイスがそのシステムバスをより有効に活用することができる。
【発明を実施するための最良の形態】
【００４４】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４５】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定したりするものではない。
【００４６】
本発明においては、複数のデバイス（例えば、図４のPCIデバイス１１１）が接続されたシステムバス（例えば、図４のPCIバス１１０）を有し、前記複数のデバイスが前記システムバスを介して互いにデータ転送（例えば、図４のPCIデータ転送１１２）を行う情報処理装置（例えば、図４の画像処理装置１００）が提供される。この情報処理装置では、データ転送を制御してデータ転送を行うデバイスであるマスタデバイス（例えば、図４のイニシエータ１１３）が、データ転送の開始を要求するコマンド（例えば、図１４のリード要求３２１−１）を発行後、コマンド（例えば、図１４のリード要求３２１−２）を再発行するまでの待機時間（例えば、図１４の区間３４１）を制御し、マスタデバイスの待機時間として設定するマスタデバイス待機時間（例えば、図１９の区間４１１）を計測する計測手段（例えば、図１１のステップＳ６１乃至ステップＳ７０、並びに図１２のステップＳ８１乃至ステップＳ８９の処理を実行する図１４の計測処理部１３１）と、計測手段により計測されたマスタデバイス待機時間に対応する値を、マスタデバイスがデータ転送において使用するレイテンシ値（例えば、図６のレイテンシ値２８３）として設定するレイテンシ値設定手段（例えば、図１３のステップＳ９２またはステップＳ９５の処理を実行する図１４の計測処理部１３１）とを備える。
【００４７】
前記計測手段は、待機時間を制御し、マスタデバイス待機時間として、マスタデバイスのデータ転送の相手のデバイスであるターゲット（例えば、図４のターゲット１１４）がコマンドを取得してからデータ転送の準備を整えるまでの時間（例えば、図１４の時刻Ｔ１から時刻Ｔ２までの時間）を計測するようにすることができる。
【００４８】
前記計測手段は、待機時間を制御し、マスタデバイスのデータ転送の相手のデバイスであるターゲット（例えば、図４のターゲット１１４）がコマンドを取得してからデータ転送の準備を整えるまでの時間（例えば、図１４の時刻Ｔ１から時刻Ｔ２までの時間）よりも長いマスタデバイス待機時間（例えば、図１９の区間４１１）を計測するようにすることができる。
【００４９】
前記計測手段は、待機時間を制御し、マスタデバイス待機時間として、最も短い時間となるように最適化された待機時間である最適待機時間（例えば、図１９の区間４１１）を計測するようにすることができる。
【００５０】
前記計測手段は、待機時間を制御し、待機時間の制御単位上（例えば、図１７の区間３６１Ａ）において、最適待機時間を計測するようにすることができる。
【００５１】
前記制御単位は、情報処理装置のシステムクロック（例えば、図１５のCLK）に基づいた時間単位であるようにすることができる。
【００５２】
前記計測手段は、待機時間を制御して待機時間の長さを変更しながら（例えば、図１１のステップＳ６９または図１１のステップＳ８８）、マスタデバイスにデータ転送を繰返し実行させる（例えば、図１１のステップＳ６２乃至ステップＳ６８、または、図１２のステップＳ８１乃至ステップＳ８７）ことにより、マスタデバイス待機時間を計測するようにすることができる。
【００５３】
クロックをカウントするカウント手段（例えば、図６のアウェイタイマ２５５）をさらに備え、計測手段は、カウント手段によるクロックのカウント処理実行中の期間を待機時間とし、カウント手段にカウントさせるクロックの数（例えば、図６のアウェイタイマ値２８５）を変更することによって待機時間の長さを変更しながら、マスタデバイスにデータ転送を繰返し実行させることにより、マスタデバイス待機時間を計測するようにすることができる。
【００５４】
前記計測手段による計測処理においてマスタデバイスが繰返し実行するデータ転送における待機時間の初期値（例えば、図６の初期アウェイ値２８４）を設定する初期待機時間設定手段（例えば、図５の初期アウェイ値設定部２０４）をさらに備え、計測手段は、計測処理において、初期待機時間設定手段により設定された初期値を用いて、マスタデバイスに最初のデータ転送を実行させるようにすることができる。
【００５５】
前記計測手段は、計測処理において繰返し実行されるデータ転送において、初期待機時間設定手段により設定される初期値を待機時間の最大値とし、マスタデバイスがデータ転送を繰り返す度に、待機時間が短くなるように待機時間を再設定する（例えば、図１１のステップＳ６９または図１２のステップＳ８８）ようにすることができる。
【００５６】
前記計測手段は、待機時間が短くなるように待機時間を再設定しながら、データ転送に対応するターゲットがマスタデバイスに対して発行した、データ転送の準備が完了していないことを示す応答であるリトライ（例えば、図１４のリトライ３３０−１）を検出するまで、マスタデバイスにデータ転送を繰り返し実行させる（例えば、図１１のステップＳ６７または図１２のステップＳ８６）ようにすることができる。
【００５７】
前記計測手段は、リトライを検出すると、データ転送の繰り返しを中止して、１回前のデータ転送における待機時間をマスタデバイス待機時間とする（例えば、図１３のステップＳ９１）ようにすることができる。
【００５８】
前記計測手段は、１つのマスタデバイスに対して、ターゲット毎にマスタデバイス待機時間を計測し、レイテンシ値設定手段は、計測手段により計測されたターゲット毎のマスタデバイス待機時間に対応する値を、ターゲット毎のレイテンシ値（例えば、図６のターゲット別レジスタ空間２６１−１乃至２６１−３のそれぞれのレイテンシ値レジスタ２７３にセットされたレイテンシ値２８３）として設定するようにすることができる。
【００５９】
前記計測手段による計測処理において、マスタデバイスがアクセスするアクセス先アドレス（例えば、図５のアドレスＡ２２１またはアドレスＢ２２２）を設定するアドレス設定手段（例えば、図５のアドレス設定部２０２）をさらに備え、計測手段は、マスタデバイスが、アドレス設定手段により設定されたアクセス先アドレスに対して、データ転送の開始を要求するコマンドを発行後、コマンドを再発行するまでの待機時間を制御し、マスタデバイス待機時間を計測するようにすることができる。
【００６０】
前記アドレス設定手段は、１つのターゲットに対応して、互いに異なる２つのアクセス先アドレス（例えば、図５のアドレスＡ２２１およびアドレスＢ２２２）を設定し、計測手段は、マスタデバイスが、アドレス設定手段により設定された２つのアクセス先アドレスに対して交互に実行する２つのデータ転送の両方に基づいて、マスタデバイス待機時間を計測するようにすることができる。
【００６１】
前記システムバスに接続された複数のデバイスの中から、計測手段によりマスタデバイス待機時間を計測するデータ転送を行うマスタデバイスを特定するマスタデバイス特定手段（例えば、図５のマスタ特定部２０３）をさらに備え、計測手段はマスタデバイスに特定されたマスタデバイスに対応するマスタデバイス待機時間を計測するようにすることができる。
【００６２】
前記計測手段による計測処理の実行を制御する計測処理実行制御手段（例えば、図５の計測処理実行制御部２０６）をさらに備えるようにすることができる。
【００６３】
前記制御手段は、計測手段がマスタデバイス待機時間を計測するデータ転送を行うデバイスを選択するデバイス選択手段（例えば、図９のステップＳ２６およびステップＳ２７の処理を実行する図５の計測処理実行制御部２０６）と、計測手段による計測処理の開始を制御する開始制御手段（例えば、例えば、図９のステップＳ２４の処理を実行する図５の計測処理実行制御部２０６）とを備えるようにすることができる。
【００６４】
前記複数のデバイスがシステムバスを介して互いに行うデータ転送において、ターゲットがマスタデバイスに対して発行した、データ転送の準備が完了していないことを示す応答であるリトライ（例えば、図１４のリトライ３３０−１）を検出することにより、リトライの数を監視するリトライ監視手段（例えば、図２１のリトライ監視部４２１）をさらに備え、開始制御手段は、リトライ監視手段により、１回のデータ転送において、予め定められた所定の数より多くリトライを検出した場合、計測手段による計測処理を開始させる（例えば、図２２のステップＳ１３５およびステップＳ１３６）ようにすることができる。
【００６５】
本発明においては、複数のデバイス（例えば、図４の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データ転送１１２において、コマンドを出力してからの最適な待機時間を計測する計測処理部１３１を有している。具体的には後述するが、計測処理部１３１は、CPU１４１に制御され、イニシエータ１１３がPCIデータ転送を行う全てのターゲットに対して、待機する時間であるマスタデバイス待機時間として最適な待機時間（最適待機時間）をそれぞれ計測する。イニシエータ１１３は、計測処理部１３１において計測された待機時間を用いてPCIデータ転送１１２を行うことにより、PCIバス１１０の有効利用を実現する。
【００７７】
PCIバス１１０には、また、画像処理装置１００全体を制御するCPU（Central Processing Unit）１４１も接続されている。CPU１４１は、ホストバス１６０を介してメインメモリ１６１にアクセスし、メインメモリ１６１にロードされたプログラムに従って各種の処理を実行し、画像処理装置１００の各部の動作を制御する。メインメモリ１６１にはまた、CPU１４１が各種の処理を実行する上において必要なデータなども適宜記憶される。また、CPU１４１は、内部にホストPCIブリッジ１５１を有しており、CPU１４１とメインメモリ１６１を接続するホストバス１６０と、PCIバス１１０とのブリッジとしても動作する。さらに、CPU１４１は、各マスタデバイスがコマンド出力後に待機するマスタデバイス待機時間として最適な待機時間（最適待機時間）を設定するための処理を制御するレイテンシ値設定制御部１５２を有している。CPU１４１は、レイテンシ値設定制御部１５２を用いて、PCIバス１１０においてデータ転送処理が開始される前に、各マスタデバイスに対して、各ターゲットに対する待機時間（レイテンシ値）を設定させる。
【００７８】
また、図示は省略するが、CPU１４１のホストPCIブリッジ１５１は、PCIバス１１０におけるデータ転送の制御を行うPCIバスコントローラや、データ転送の制御権の割り当てを行うアービタ等も含む。
【００７９】
CPU１４１には、さらに、CPU１４１が実行するプログラムやデータが予め記憶されたROM（Read Only Memory）１７１、書き換え可能なフラッシュメモリ等により構成され、CPU１４１が実行するプログラムやデータが記憶される記憶部１７２、および、CPU１４１に制御されるなどして、装着されたリムーバブルメディア１７４に記憶されているプログラムやデータを読み出し、CPU１４１に供給するドライブ１７３が接続されている。さらに、キーボード等の入力デバイスやモニタ等の出力デバイスのように上述した以外のデバイスがCPU１４１に接続されるようにしてももちろんよい。
【００８０】
図５は、図４のCPU１４１の内部の詳細な構成例を示すブロック図である。なお、図５において、CPU１４１は、イニシエータ１１３のレイテンシ値の設定に関する処理部についてのみ示されている。
【００８１】
CPU１４１は、ホストPCIブリッジ１５１およびレイテンシ値設定制御部１５２の他に、PCIコンフィギュレーション処理部２０１、アドレス設定部２０２、およびマスタ特定部２０３を有している。
【００８２】
PCIコンフィギュレーション処理部２０１は、ホストPCIブリッジ１５１を介して各PCIデバイス１１１にアクセスし、各PCIデバイスに対して、メモリアドレス、I/Oアドレス、割り込みレベル、およびDMA（Direct Memory Access transfer）チャネル等のシステムリソースの割り当て、ドライバのロード／アンロード、および各種パラメータの設定等を行うコンフィギュレーション処理を行う。そして、PCIコンフィギュレーション処理部２０１は、その処理結果をアドレス設定部２０２に供給する。
【００８３】
アドレス設定部２０２は、レイテンシ値設定処理における各ターゲットのアクセス先アドレスを、PCIコンフィギュレーション処理部２０１が割り当てたアドレスに基づいて設定し、それをレイテンシ値設定制御部１５２のレイテンシ値設定用アクセス先アドレス保持部２０７に供給し、保持させる。また、アドレス設定部２０２は、PCIコンフィギュレーション処理部２０１より供給されたコンフィギュレーション処理結果をマスタ特定部２０３に供給する。
【００８４】
マスタ特定部２０３は、PCIコンフィギュレーション処理部２０１によるコンフィギュレーション処理結果に基づいて、PCIバス１１０に接続されたPCIデバイス１１１の中からマスタデバイスを特定する。また、マスタ特定部２０３は、その特定したマスタデバイスに関する情報をレイテンシ値設定制御部１５２の初期アウェイ値設定部２０４に供給する。
【００８５】
レイテンシ値設定制御部１５２は、内部に、初期アウェイ値設定部２０４、アドレスセット処理部２０５、計測処理実行制御部２０６、およびレイテンシ値設定用アクセス先アドレス保持部２０７を有している。
【００８６】
初期アウェイ値設定部２０４は、各マスタデバイスが各ターゲットに対する待機時間を計測する際に利用する、待機時間の初期値である初期アウェイ値を設定する処理部であり、マスタ特定部２０３において特定されたマスタデバイスに対して、ホストPCIブリッジ１５１を介して、予め保持している初期アウェイ値２１１を供給し、設定させる。
【００８７】
アドレスセット処理部２０５は、アドレス設定部２０２により設定され、レイテンシ値設定用アクセス先アドレス保持部２０７に保持されているレイテンシ値設定用アクセス先アドレスを取得し、マスタ特定部２０５により特定されたマスタデバイスに対して、それぞれ対応するターゲットのレイテンシ値設定用アクセス先アドレスを、ホストPCIブリッジ１５１を介して供給する。
【００８８】
計測処理実行制御部２０６は、ホストPCIブリッジ１５１を介して各マスタデバイスにアクセスし、各マスタデバイスが有する計測処理部１３１に対して、ターゲットに対する計測処理を実行させるように制御する。なお、計測処理実行制御部２０６は、内部に計測処理の完了を示す完了フラグ２１２を有しており、マスタデバイス（イニシエータ）の計測処理部１３１が計測処理を終了すると、完了フラグ２１２をオンにセット（アサート）する。計測処理実行制御部２０６は、この完了フラグ２１２の値によりマスタデバイスによる計測処理が終了したか否かを判定する。
【００８９】
レイテンシ値設定用アクセス先アドレス保持部２０７は、図５に示されるように、アドレス設定部２０２により設定された各ターゲットに対するレイテンシ値設定用アクセス先アドレスを、レイテンシ値設定用アクセス先アドレス２１３−１、２１３−２、２１３−３、・・・のように、ターゲット毎に保持し、必要に応じてそれらのアドレスをアドレスセット処理部２０５に供給する。なお、アドレス設定部２０２は、後述するように、各ターゲットに対してレイテンシ値設定用アクセス先アドレスとして２つのアドレス（アドレスＡ２２１およびアドレスＢ２２２）を設定する。レイテンシ値設定用アクセス先アドレス保持部２０７は、それらの２つのアドレス（アドレスＡおよびアドレスＢ）をターゲット毎に保持する。
【００９０】
図６は、図４のイニシエータ１１３の、内部の詳細な構成例を示すブロック図である。なお、図６において、イニシエータ１１３は、PCIデバイス１１１としての通常の処理に関するブロックについては省略されており、レイテンシ値の設定に関する処理部についてのみ示されている。
【００９１】
図６において、イニシエータ１１３は、上述した計測処理部１３１の他に、PCIバス１１０とイニシエータ１１３の内部とのインタフェース処理を行うPCIインタフェース処理部２５１、イニシエータ１１３の各部の動作を制御するデバイス制御部２５２、計測処理部１３１による待機時間の計測処理に用いられる初期アウェイ値をレジスタにセットする初期アウェイ値セット処理部２５３、計測処理部１３１による待機時間の計測処理に用いられるターゲットのレイテンシ値設定用アクセス先アドレスをレジスタにセットするアドレスセット処理部２５４、計測処理部１３１に制御され、待機時間(レイテンシ値)の計測に利用されるタイマであるアウェイタイマ２５５、および各種のレジスタ等の情報を保持するRAM（Random Access Memory）２５６を有している。
【００９２】
PCIデバイス２５１は、PCIバス１１０とのインタフェース処理を行う処理部であり、PCIバス１１０に接続されるとともに、デバイス制御部２５２、初期アウェイ値セット処理部２５３、アドレスセット処理部２５４、および計測処理部１３１等と接続されている。
【００９３】
デバイス制御部２５２は、イニシエータ１１３の各部の動作の制御に関する処理を行う。例えば、デバイス制御部２５２は、RAM２５６にロードされたプログラムやデータに基づいて、初期アウェイ値セット処理部２５３、アドレスセット処理部２５４、アウェイタイマ２５５、RAM２５６、および計測処理部１３１等の各部の動作タイミングや処理手順を制御したり、CPU１４１等より供給されたプログラムやデータをRAM２５６にロードしたり、RAM２５６に保持されているプログラムやデータをアンロードしたりする。
【００９４】
初期アウェイ値セット処理部２５３は、CPU１４１の初期アウェイ値設定部２０４より供給された初期アウェイ値を、PCIインタフェース処理部２５１を介して取得すると、それをRAM２５６に設けられた初期アウェイ値レジスタ２７４に供給し、初期アウェイ値２８４をセットする。
【００９５】
アドレスセット処理部２５４は、CPU１４１のアドレスセット処理部２０５より供給されるレイテンシ値設定用アクセス先アドレス（アドレスＡ２２１およびアドレスＢ２２２）を、PCIインタフェース処理部２５１を介して取得すると、それらをRAM２５６に設けられたターゲット別レジスタ空間にセットする。
【００９６】
アウェイタイマ２５５は、計測処理部１３１に制御され、計測制御部１３１にセットされたアウェイタイマ値分のクロックをカウントし、カウントが終了するとそれを計測制御部１３１に通知する。
【００９７】
RAM２５６には、デバイス制御部２５２やイニシエータ１１３の各部により実行されるプログラムやデータの他に、イニシエータ１１３がデータ転送を行うターゲットに関する情報が格納（セット）されるターゲット別レジスタ空間２６１−１、２６１−２、２６１−３、・・・がターゲットの数だけ設けられている。なお、以下において、各ターゲット別レジスタ空間を区別して説明する必要の無い場合は、ターゲット別レジスタ空間２６１と称する。
【００９８】
ターゲット別レジスタ空間２６１のそれぞれには、各レジスタが対応するターゲットのレイテンシ値設定用アクセス先アドレスであるアドレスＡ２２１が格納（セット）されるレイテンシ値設定用アクセス先アドレスレジスタＡ２７１、各レジスタが対応するターゲットのレイテンシ値設定用アクセス先アドレスであるアドレスＢ２２２が格納（セット）されるレイテンシ値設定用アクセス先アドレスレジスタＢ２７２、並びに、計測処理部１３１による計測処理により設定された、各レジスタが対応するターゲットのレイテンシ値２８３が格納（セット）されるレイテンシ値レジスタ２７３が設けられている。
【００９９】
レイテンシ値設定用アクセス先アドレスレジスタＡ２７１のアドレスＡ２２１、およびレイテンシ値設定用アクセス先アドレスレジスタＢ２７２のアドレスＢ２２２は、PCIバス１１０を介してCPU１４１のアドレスセット処理部２０５より供給され、アドレスセット処理部２５４によりセットされる。また、これらの値は、計測処理部１３１により参照され、レイテンシ値の設定時におけるターゲットのアクセス先アドレスとして計測処理に利用される。
【０１００】
また、RAM２５６には、初期アウェイ値セット処理部２５３により初期アウェイ値２８４がセットされる初期アウェイレジスタ２７４が設けられている。この初期アウェイ値２８４は、計測処理部１３１により参照され、アウェイタイマ２５５がカウントするクロック数の初期値として利用される。すなわち、初期アウェイ値２８４は、計測処理におけるイニシエータ１１３の、コマンド発行後に再度同じアドレスに対する同じコマンドを発行するまでの待機時間の初期値である。
【０１０１】
さらに、RAM２５６には、計測処理部１３１の計測処理において、アウェイタイマがカウントするクロック数を示すアウェイタイマ値２８５を格納（セット）するアウェイタイマ値レジスタ２７５が設けられている。アウェイタイマ値レジスタ２７５にセットされるアウェイタイマ値２８５は、計測処理においてアウェイタイマ２５５がカウントするクロック数であり、その値は、計測処理が進行するに従って更新されていく。なお、アウェイタイマ値２８５の初期値は、初期アウェイ値２８４にセットされる。
【０１０２】
計測処理部１３１は、PCIインタフェース２５１を介してCPU１４１に制御され、初期アウェイ値レジスタ２７４にセットされている初期アウェイ値２８４を参照し、その値をアウェイタイマ値２８５としてアウェイタイマ値レジスタ２７５にセットする。次に、計測処理部１３１は、CPU１４１に制御されて、計測処理を行うターゲットを決定し、そのターゲットのレイテンシ値設定用アクセス先アドレス（アドレスＡ２２１およびアドレスＢ２２２）をレイテンシ値設定用アクセス先アドレスレジスタＡ２７１およびレイテンシ値設定用アクセス先アドレスレジスタＢ２７２より読み出し、そのうち一方のアドレス（例えば、アドレスＡ２２１）に対してコマンドを発行する。コマンド発行後、そのコマンドに対するリトライを検出すると、計測処理部１３１は、アウェイタイマ２５５を制御し、アウェイタイマ値２７５にセットされたアウェイタイマ値２８５のクロック数をカウントさせる。
【０１０３】
アウェイタイマ２５５がカウントを終了し、処理を戻すと、計測処理部１３１は、再度、同じアドレスに対してアクセスし、同じコマンドを発行する。このコマンドによりPCIデータ転送が開始され、正常に完了した場合、計測処理部１３１は、アウェイタイマ値２７５にセットされたアウェイタイマ値２８５を１回分（予め定められた所定のクロック数分）ディクリースする。そして、計測処理部１３１は、次に、他方のアドレス（例えば、アドレスＢ２２２）に対してコマンドを発行する。コマンド発行後、そのコマンドに対するリトライを検出すると、計測処理部１３１は、アウェイタイマ２５５を制御し、アウェイタイマ値２７５にセットされたアウェイタイマ値２８５のクロック数をカウントさせる。
【０１０４】
アウェイタイマ２５５がカウントを終了し、処理を戻すと、計測処理部１３１は、再度、同じアドレスに対してアクセスし、同じコマンドを発行する。このコマンドによりPCIデータ転送が開始され、正常に完了した場合、計測処理部１３１は、アウェイタイマ値２７５にセットされたアウェイタイマ値２８５を１回分（予め定められた所定のクロック数分）ディクリースする。そして、計測処理部１３１は、次に、最初のアドレス（例えば、アドレスＡ２２１）に対してコマンドを発行する。
【０１０５】
以上の処理を繰り返すことにより、計測処理部１３１は、アウェイタイマ値２８５の値を徐々に減らしながら（待機時間を短くしながら）、計測処理を続ける。そして、アウェイタイマ値２８５に対応する待機時間分待機した後のコマンド発行においてもリトライを検出した場合、計測処理部１３１は、計測処理を終了し、１回前のアウェイタイマ値２８５の値（その時点のアウェイタイマ値２８５に１回分のクロック数をインクリメントした値）をレイテンシ値２８３として、そのターゲットに対応するターゲット別レジスタ空間２６１のレイテンシ値レジスタ２７３に格納（セット）する。
【０１０６】
以上のようにしてイニシエータ１１３は、マスタデバイス待機時間として最適な最適待機時間の計測処理を行う。
【０１０７】
なお、以上のようなレイテンシ値の設定は、例えば、電源投入時等におけるPCIバス１１０のリセット後等に行われ、以後の通常のデータ転送処理においては、そのとき設定されたレイテンシ値が適用される。
【０１０８】
図４においてPCIバス１１０のリセットは、CPU１４１に制御されて実行される。例えば、ユーザ等の指示によりPCIバス１１０の初期化処理を行う場合や画像処理装置１００に電源が投入された場合等において、CPU１４１は、リセット処理を開始する。CPU１４１により実行されるリセット処理を図７のフローチャートを参照して説明する。
【０１０９】
最初に、ステップＳ１において、CPU１４１のPCIコンフィギュレーション処理部２０１は、コンフィギュレーション処理を実行し、PCIバス１１０およびPCIデバイス１１１を初期化し、各種の設定や割り当てを行う。具体的には、PCIコンフィギュレーション処理部２０１は、PCIバス１１０を介して、各PCIデバイス１１１のコンフィギュレーションレジスタからベンダID、デバイスID、およびクラスコード等の、PCIデバイス１１１に関する情報を取得する。そして、PCIコンフィギュレーション処理部２０１は、それらのIDやコードに基づいて各PCIデバイス１１１を識別し、各デバイスに対して、メモリアドレス、I/Oアドレス、割り込みレベル、およびDMAチャネル等のシステムリソースの割り当て、ドライバのロード／アンロード、および各種パラメータの設定等を行う。このとき、PCIコンフィギュレーション処理部２０１は、アドレスの割り当てとして、例えば、図８に示されるように、PCIバス１１０に接続された各PCIデバイスのアドレス領域をPCIバスアドレス空間、すなわち、CPUメモリ空間３００に割り当てる。
【０１１０】
図８において、PCIコンフィギュレーション処理部２０１は、CPUメモリ空間３００の内、アドレス00000h乃至0FFFFhのCPUアドレス領域３１０以外のメモリ空間を、ターゲット１用アドレス領域３１１、ターゲット２用アドレス領域３１２、およびターゲット３用アドレス領域３１３のように、64KBずつ各ターゲットに割り当てる。また、PCIコンフィギュレーション処理部２０１は、それぞれのターゲット用アドレス領域において、レジスタ用のアドレス空間と、ローカルメモリ用のアドレス空間とを３２ビットずつ割り当てる。すなわち、例えば、ターゲット１用アドレス領域３１１は、図８に示されるように、10000h乃至17FFFhの３２KBのターゲット１のレジスタ空間３１４と、18000h乃至1FFFFhの３２KBのターゲット１のローカルメモリ空間３１５とにより構成される。他のターゲット用アドレス領域（例えば、ターゲット２用アドレス領域３１２やターゲット３用アドレス領域３１３等）も同様であり、それぞれレジスタ空間とローカルメモリ空間により構成される。
【０１１１】
以上のようなコンフィギュレーション処理を行うと、CPU１４１のPCIコンフィギュレーション処理部２０１は、図７において、ステップＳ１のコンフィギュレーション処理を終了しステップＳ２に処理を進める。
【０１１２】
ステップＳ２において、アドレス設定部２０２は、上述したようにコンフィギュレーション処理により各PCIデバイス１１１に割り当てられたメモリ空間を用いて、各PCIデバイスのレイテンシ値設定用アクセス先アドレスを、アドレスＡおよびアドレスＢの２つずつ設定する。
【０１１３】
後述するように、レイテンシ値設定の際の計測処理において、イニシエータ１１３は、同じターゲット１１４に対して、通常複数回アクセスを繰り返す。これに対して、ターゲット１１４は、キャッシュメモリ１２２にデータが格納されたか否かを判断して、データ転送の準備が整ったか否かを判定する。通常、キャッシュメモリ１２２は、数クロック（例えば６クロック）データを保持した後、それを破棄する。従って、アドレス設定部２０２が１つのターゲット１１４に対して、１つのアドレスのみをレイテンシ値設定用アクセス先アドレスとして設定し、イニシエータ１１３が同じターゲット１１４の同じアドレスに対して連続してアクセスを繰り返すようにすると、そのアクセスの間隔が狭くなると、ターゲット１１４が、キャッシュメモリ１２２が正しいデータに更新されていないのに（古いデータのまま）、データ転送の準備が整ったと判断し、その古いデータ（誤ったデータ）をイニシエータ１１３に転送してしまう恐れがある。
【０１１４】
そこで、キャッシュメモリ１２２の更新サイクルに対して、イニシエータ１１３による同じアドレスへのアクセスの間隔が短くなり過ぎないように、アドレス設定部２０２は、2つのアドレスをレイテンシ値設定用アクセス先アドレスとして設定する。
【０１１５】
例えば、図８の場合、アドレス設定部２０２は、ターゲット１のレイテンシ値設定用アクセス先アドレスとして、ターゲット１用アドレス領域３１１のターゲット１のローカルメモリ空間３１５よりアドレスＡ２２１として18000h番地を設定し、アドレスＢ２２２として1C000h番地を設定する。なお、この２つのアドレス（アドレスＡ２２１およびアドレスＢ２２２）は、各アドレスが互いに異なるデータ転送に対するデータを示すように、ある程度（例えば５１２ワード）互いに離れたアドレスであれば、ターゲット１のローカルメモリ空間３１５のどのアドレスであってもよい。
【０１１６】
アドレス設定部２０２は、ターゲット２やターゲット３等に対してもターゲット１の場合と同様にしてレイテンシ値設定用アクセス先アドレスを設定していき、全てのターゲットに対してレイテンシ値設定用アクセス先アドレスを設定する。全てのターゲットのレイテンシ値設定用アクセス先アドレスを設定すると、アドレス設定部２０２は、ステップＳ３に処理を進める。
【０１１７】
ステップＳ３において、CPU１４１のマスタ特定部２０３は、PCIコンフィギュレーション処理部２０１によるコンフィギュレーション処理結果に基づいて、PCIバス１１０に接続されたPCIデバイス１１１の中から、PCIデータ転送のマスタとなり得るマスタデバイスを特定し、処理をステップＳ４に移行する。CPU１４１のレイテンシ値設定制御部１５２は、ステップＳ４において、このマスタ特定部２０３により特定されたマスタデバイスのそれぞれに対して、レイテンシ値設定処理を行わせるように制御する。各マスタデバイスに対するレイテンシ値設定制御処理については、図８のフローチャートを参照して後述する。
【０１１８】
レイテンシ値設定制御処理を終了したレイテンシ値設定制御部１５２は、リセット処理を終了する。リセット処理が終了すると、PCIバス１１０に接続された各PCIデバイス１１１は、必要に応じてPCIデータ転送１１２の処理を開始する。
【０１１９】
次に、図７のステップＳ４において実行されるレイテンシ値設定制御処理について図９のフローチャートを参照して説明する。図９のフローチャートは、マスタデバイスの内の１つであるイニシエータ１１３に対する処理である。
【０１２０】
レイテンシ値設定制御処理が開始されると、レイテンシ値設定制御部１５２の初期アウェイ値設定部２０４は、ステップＳ２１において、内部に保持している初期アウェイ値２１１を、ホストPCIブリッジ１５１を介してイニシエータ１１３に供給し、この値をレジスタ（初期アウェイ値レジスタ２７４）にセットさせる。初期アウェイ値２１１は、予め定められた値であり、後述するようにアウェイタイマ値２８５（レイテンシ値２８３）の最大値となる。
【０１２１】
初期アウェイ値２１１を供給した初期アウェイ値設定部２０４は、処理をステップＳ２２に進める。ステップＳ２２において、レイテンシ値設定制御部１５２のアドレスセット処理部２０５は、レイテンシ値設定用アクセス先アドレス保持部２０７に保持されているレイテンシ値設定用アクセス先アドレス２１３の中から、イニシエータ１１３に対応する（イニシエータ１１３がデータ転送を行うことが可能な）各ターゲット１１４のレイテンシ値設定用アクセス先アドレスを、ホストPCIブリッジ１５１を介してイニシエータ１１３に供給し、これらの値（アドレスＡ２２１およびアドレスＢ２２２）をレジスタ（レイテンシ値設定用アクセス先アドレスレジスタＡ２７１またはレイテンシ値設定用アクセス先アドレスＢ２７２の内、各アドレスが対応する方のレジスタ）にセットさせる。
【０１２２】
レイテンシ値設定用アクセス先アドレスを供給したアドレス設定部２０５は、ステップＳ２３に処理を進める。ステップＳ２３において、計測処理実行制御部２０６は、処理を行うマスタデバイスを選択するための変数iの値を「０」初期値としてにセットする。なおこのとき計測処理実行制御部２０６は、予め定められた整数の初期値であれば、どのような値であってもよい。
【０１２３】
変数ｉをセットすると、計測処理実行制御部２０６は、ステップＳ２４において、ホストPCIブリッジ１５１を介して、イニシエータ１１３にアクセスし、イニシエータ１１３に対応するターゲット１１４の内、ｉ番目のターゲット１１４に対する計測処理の実行を開始させる。
【０１２４】
計測処理を開始させると計測処理実行制御部２０６は、ステップＳ２５において、完了フラグ２１２を監視し、完了フラグが２１２がアサートされたか否かを判定し、イニシエータ１１３が計測処理を終了して完了フラグ２１２をアサートさせるまで待機する。なお、計測処理の実行を開始させてから予め定められた所定の時間が経過しても完了フラグ２１２がアサートされない場合、計測処理実行制御部２０６は、レイテンシ値設定制御処理を強制終了させるようにしてももちろんよい。
【０１２５】
以上のように待機し、ステップＳ２５において、イニシエータ１１３が完了フラグ２１２をアサートすると、計測処理実行制御部２０６は、ステップＳ２６に処理を進め、変数ｉをインクリメントし、ステップＳ２７において、変数ｉの値がイニシエータ１１３に対応するターゲット１１４の数より大きいか否かを判定する。変数ｉの値がターゲット数より大きくないと判定した場合、すなわち、未処理のターゲットが存在する場合、計測処理実行制御部２０６は、ステップＳ２４に処理を戻し、それ以降の処理を繰り返す。
【０１２６】
すなわち、計測処理実行制御部２０６は、ステップＳ２４乃至ステップＳ２７の処理を繰り返すことにより、イニシエータ１１３が、イニシエータ１１３に対応する全てのターゲットに対して計測処理を行うように制御する。そして、ステップＳ２７において、変数ｉの値がターゲット数より大きいと判定した場合、すなわち、イニシエータ１１３が、イニシエータ１１３に対応する全てのターゲットに対して計測処理を行ったと判定した場合、計測処理実行制御部２０６は、レイテンシ値設定制御処理を終了する。
【０１２７】
以上のようにして、CPU１４１のレイテンシ値設定制御部１５２は、コンフィギュレーション処理の後、レイテンシ値設定制御処理を実行する。なお、レイテンシ値設定制御部１５２は、図９のフローチャートを参照して説明したようなレイテンシ値設定制御処理を各マスタデバイスに対して実行する。すなわち、レイテンシ値設定制御部１５２は、PCIバス１１０に接続された全てのPCIデバイス１１１によるPCIデータ転送に対してレイテンシ値を算出するように制御する。
【０１２８】
このようにすることにより、各マスタデバイスは、どのターゲットに対してもそれぞれ待機時間として最適な最適待機時間（レイテンシ値）を設定することができ、その最適な待機時間を利用することにより、PCIバス１１０の不要なトラフィック（リード要求の繰り返しによるトランザクション）の発生を抑制し、各PCIデバイス１１１がPCIバス１１０を有効に利用することができる。
【０１２９】
次に、以上のようにCPU１４１のレイテンシ値設定制御部１５２に制御されて実行する、イニシエータ１１３によるレイテンシ値の設定に関する処理について説明する。PCIデバイス１１１であるイニシエータ１１３に電源が投入され、コンフィギュレーション処理が行われると、イニシエータ１１３のデバイス制御部２５２は、イニシエータ１１３の各部を制御し、レイテンシ値設定処理を開始する。図１０のフローチャートを参照して、レイテンシ値設定処理を説明する。
【０１３０】
レイテンシ値設定処理が開始されると、初期アウェイ値セット処理部２５３は、ステップＳ４１において、CPU１４１の初期アウェイ値設定部２０４より初期アウェイ値２１１が供給されたか否かを判定する。PCIインタフェース処理部２５１を介して初期アウェイ値２１１が供給されたと判定した場合、初期アウェイ値セット処理部２５３は、ステップＳ４２に処理を進め、供給された初期アウェイ値２１１を初期アウェイ値レジスタ２７４にセットする（初期アウェイ値２８４）。
【０１３１】
初期アウェイ値２１１（初期アウェイ値２８４）をセットした初期アウェイ値セット処理部２５３は、ステップＳ４３に処理を進める。また、ステップＳ４１において、初期アウェイ値２１１が供給されていないと判定した場合、初期アウェイ値セット処理部２５３は、ステップＳ４２の処理を省略し、ステップＳ４３に処理を進める。
【０１３２】
ステップＳ４３において、アドレスセット処理部２５４は、CPU１４１のアドレスセット処理部２０５よりレイテンシ値設定用アクセス先アドレス（アドレスＡ２２１およびアドレスＢ２２２）が供給されたか否かを判定する。レイテンシ値設定用アクセス先アドレスが供給されたと判定した場合、アドレスセット処理部２５４は、処理をステップＳ４４に進め、その供給されたアドレスが対応するターゲットのレジスタ空間２６１にある、レイテンシ値設定用アクセス先アドレスレジスタＡ２７１に、供給されたアドレスＡ２２１をセットし、レイテンシ値設定用アクセス先アドレスレジスタＢ２７２に、供給されたアドレスＢ２２２をセットする。
【０１３３】
アドレスをセットしたアドレスセット処理部２５４は、処理をステップＳ４５に進める。なお、ステップＳ４３において、アドレスセット処理部２０５よりレイテンシ値設定用アクセス先アドレスが供給されていないと判定した場合、アドレスセット処理部２５４は、処理をステップＳ４４の処理を省略し、ステップＳ４５に処理を進める。
【０１３４】
ステップＳ４５において、計測処理部１３１は、CPU１４１の計測処理実行制御部２０６より計測処理の開始が指示されたか否かをか否かを判定する。計測処理の開始が指示されたと判定した場合、計測処理部１３１は、処理をステップＳ４６に進め、計測処理の開始指示とともに指示されたターゲットに対して計測処理を実行する。計測処理の詳細については、図１１乃至図１３のフローチャートを参照して後述する。
【０１３５】
ステップＳ４６の計測処理を終了した計測処理部１３１は、ステップＳ４７に処理を進める。また、ステップＳ４５において、計測処理の開始が指示されていないと判定した場合、計測処理部１３１は、ステップＳ４６の処理を省略し、ステップＳ４７に処理を進める。
【０１３６】
ステップＳ４７において、デバイス制御部２５２は、レイテンシ値設定処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ４１に戻し、それ以降の処理を繰り返す。また、ステップＳ４７において、例えば、全てのレイテンシ値の設定が終了し、通常モードに移行する場合や電源をオフする場合等において、レイテンシ値設定処理を終了すると判定した場合、デバイス制御部２５２は、レイテンシ値設定処理を終了する。
【０１３７】
次に、図１０のステップＳ４６において実行される計測処理の詳細を、図１１乃至図１３のフローチャートを参照して説明する。
【０１３８】
計測処理を開始した計測処理部１３１は、最初に、図１１のステップＳ６１において、初期アウェイ値レジスタ２７４の値である初期アウェイ値２８４を読み出して、それをアウェイタイマ値レジスタ２７５にセットする（アウェイタイマ値２８５）。そして、計測処理部１３１は、ステップＳ６２において、計測処理実行制御部２０６により指定されたターゲット１１４に対応するターゲット別レジスタ空間２６１のレイテンシ値設定用アクセス先アドレスＡ２７１にセットされているアドレスＡ２２１を読み出し、そのターゲットのアドレスＡ２２１に対してリード要求を行う。
【０１３９】
リード要求を行った計測処理部１３１は、ステップＳ６３において、そのリード要求の応答として、データを取得したか否かを判定する。データを取得していないと判定した計測処理部１３１は、ステップＳ６４に処理を進め、リード要求の応答としてリトライを取得したか否かを判定する。リトライもデータも取得していない、すなわち、リード要求の応答を取得していないと判定した場合、計測処理部１３１は、処理をステップＳ６３に戻し、それ以降の処理を繰り返す。
【０１４０】
ステップＳ６４においてリトライ処理を取得したと判定した場合、計測処理部１３１は、アウェイタイマ値レジスタ２７５にセットされたアウェイタイマ値２８５（待機するクロック数）をアウェイタイマ２５５に供給する。アウェイタイマ値２８５を供給されたアウェイタイマ２５５は、ステップＳ６５において、供給されたアウェイタイマ値２８５分のクロックをカウントする。計測処理部１３１は、アウェイタイマ２８５よりカウント終了が通知されるまで待機する。
【０１４１】
アウェイタイマ２５５によるカウントが終了すると、アウェイタイマ２５５は、カウント終了を計測処理部１３１に通知する。カウント終了が通知されると計測処理部１３１は、ステップＳ６６に処理を進め、計測処理実行制御部２０６により指定されたターゲット１１４に対応するターゲット別レジスタ空間２６１のレイテンシ値設定用アクセス先アドレスＡ２７１にセットされているアドレスＡ２２１に対して再度リード要求を行う。
【０１４２】
再度、リード要求を行った計測処理部１３１は、ステップＳ６７において、そのリード要求の応答として、リトライを取得したか否かを判定する。ターゲット１１４よりリトライを取得していないと判定した計測処理部１３１は、ステップＳ６８に処理を進め、リード要求の応答として要求したデータを取得したか否かを判定する。リトライもデータも取得していない、すなわち、リード要求の応答を取得していないと判定した場合、計測処理部１３１は、処理をステップＳ６７に戻し、それ以降の処理を繰り返す。
【０１４３】
ステップＳ６８においてリード要求の応答として要求したデータを取得したと判定した場合、計測処理部１３１は、ステップＳ６９において、アウェイタイマ値レジスタ２７５にセットされているアウェイタイマ値２８５（待機するクロック数）の値を１回分（予め設定されているクロック数分）ディクリースする。アウェイタイマ値２８５をディクリースした計測処理部１３１は、図１２のステップＳ８１に処理を進める。
【０１４４】
図１２のステップＳ８１において、計測処理部１３１は、待機時間の計測を同じアドレスに対して連続して行わないように、今度は、計測処理実行制御部２０６により指定されたターゲット１１４に対応するターゲット別レジスタ空間２６１のレイテンシ値設定用アクセス先アドレスＢ２７２にセットされているアドレスＢ２２２を読み出し、そのターゲットのアドレスＢ２２２に対してリード要求を行う。
【０１４５】
リード要求を行った計測処理部１３１は、アドレスＡ２２１の場合と同様に、ステップＳ８２において、そのリード要求の応答としてデータを取得したか否かを判定し、データを取得していないと判定した場合、ステップＳ８３に処理を進め、リード要求の応答としてリトライを取得したか否かを判定する。リトライもデータも取得していない、すなわち、リード要求の応答を取得していないと判定した場合、計測処理部１３１は、ステップＳ８２に処理を戻し、それ以降の処理を繰り返す。
【０１４６】
ステップＳ８３においてリトライ処理を取得したと判定した場合、計測処理部１３１は、アドレスＡ２２１の場合と同様に、アウェイタイマ値レジスタ２７５にセットされたアウェイタイマ値２８５（待機するクロック数）をアウェイタイマ２５５に供給する。このアウェイタイマ値２８５は、図１１のステップＳ６９においてディクリースされたアウェイタイマ値である。アウェイタイマ２５５は、図１２のステップＳ８４において、供給されたアウェイタイマ値２８５分のクロックをカウントする。計測処理部１３１は、アウェイタイマ２８５よりカウント終了が通知されるまでの間待機する。
【０１４７】
アウェイタイマ２５５によるカウントが終了すると、アウェイタイマ２５５は、カウント終了を計測処理部１３１に通知する。カウント終了が通知されると計測処理部１３１は、ステップＳ８５に処理を進め、計測処理実行制御部２０６により指定されたターゲット１１４に対応するターゲット別レジスタ空間２６１のレイテンシ値設定用アクセス先アドレスＢ２７２にセットされているアドレスＢ２２２に対して再度リード要求を行う。
【０１４８】
再度、リード要求を行った計測処理部１３１は、アドレスＡ２２１の場合と同様に、ステップＳ８６において、そのリード要求の応答としてリトライを取得したか否かを判定し、ターゲット１１４よりリトライを取得していないと判定した場合、ステップＳ８７に処理を進め、リード要求の応答として要求したデータを取得したか否かを判定する。リトライもデータも取得していない、すなわち、リード要求の応答を取得していないと判定した場合、計測処理部１３１は、処理をステップＳ８６に戻し、それ以降の処理を繰り返す。
【０１４９】
ステップＳ８７においてリード要求の応答として要求したデータを取得したと判定した場合、計測処理部１３１は、ステップＳ８８において、アウェイタイマ値レジスタ２７５にセットされているアウェイタイマ値２８５（待機するクロック数）の値を１回分（予め設定されているクロック数分）ディクリースし、図１１のステップＳ６２に処理を戻し、それ以降の処理を繰り返す。
【０１５０】
以上のように、計測処理部１３１は、図１１のステップＳ６２乃至ステップＳ６９、並びに、図１２のステップＳ８１乃至ステップＳ８８の処理を繰り返して、アウェイタイマ値レジスタ２７５に保持されているアウェイタイマ値２８５を減少させることにより、リトライ検出後に待機する時間を減少させていく。
【０１５１】
以上のような処理を繰り返してアウェイタイマ値２８５が減少すると、待機時間が、ターゲットがデータ転送の準備を整えるのに必要な時間より短くなる。その場合、計測処理部１３１は、待機後に再度行ったリード要求に対する応答としてリトライを検出することになる。そのような場合、計測処理部１３１は、リトライを検出した時の処理の、１回前の処理におけるアウェイタイマ値２８５が最適な待機時間（ターゲット１１４がデータ転送の準備を整えるまでの時間よりも長く、かつ、最も短い待機時間）とし、その値をレイテンシ値２８３として、そのターゲットに対応するターゲット別対応レジスタ２６１のレイテンシ値レジスタ２７３に保存する。
【０１５２】
すなわち、図１１のステップＳ６７または図１２のステップＳ８６において、リード要求の応答としてリトライを取得したと判定した場合、計測処理部１３１は、処理を図１３のステップＳ９１に進め、アウェイタイマ値２８５を１回分（１回にディクリースされるクロック数分）インクリメントし、ステップＳ９２において、そのインクリメントされたアウェイタイマ値２８５をレイテンシ値２８３として処理を行ったターゲット用のレイテンシ値レジスタ２７３にセットする。レイテンシ値２８３をセットした計測処理部１３１は、ステップＳ９３に処理を進め、CPU１４１の計測処理実行制御部２０６が有する完了フラグ２１２をアサートし、ステップＳ９４において不要なレジスタの値をリセットする等して終了処理を行い、計測処理を終了する。
【０１５３】
なお、マスタデバイス待機時間として理想的な待機時間は、ターゲット１１４がデータ転送の準備を整えるまでの時間（と同じ長さの時間）である。しかしながら、実際には、マスタデバイス待機時間をターゲット１１４がデータ転送の準備を整えるまでの時間と全く同じ長さの時間に設定することは困難である。また、それらの長さを、各部の同期単位であるシステムクロック上において同一の長さに設定することも可能ではあるが、実際にそこまで細かく調整すると計測処理の負荷や計測処理の処理時間が増大する恐れもある。従って、装置の能力に応じて、実用上可能な処理単位として、複数クロック単位で待機時間を制御するようにし、その制御単位上において、ターゲット１１４がデータ転送の準備を整えるまでの時間よりも長く、かつ、最も短い待機時間を最適な待機時間とするようにするのが望ましい。
【０１５４】
また、図１１のステップＳ６３において、リード要求に対する応答として要求したデータを取得したと判定した場合、すなわち、イニシエータ１１３が発行した最初のリード要求に対してターゲット１１４がすぐに応答した場合、そのターゲット１１４が本当に待機時間を必要としないことも考えられるが、ターゲット１１４のキャッシュメモリ１２２に保持されている古いデータが間違えて転送された可能性も考えられる。
【０１５５】
そこで、計測処理部１３１は、そのような場合、図１１のステップＳ７０に処理を進め、アドレスＢ２２２に対する計測処理においても待機せずにデータを取得したか否かを判定する。計測処理部１３１は、上述したように、アドレスＡ２２１に対するリード要求による計測処理とアドレスＢ２２２に対するリード要求による計測処理とを交互に繰り返すことにより、キャッシュメモリ１２２に残された古いデータによるデータ転送を抑制するように処理を行っている。従って、計測処理部１３１は、このように待機時間無しに１回目のリード要求に対してすぐにデータが返された場合、アドレスＡ２２１に対するリード要求と、アドレスＢ２２２に対するリード要求の両方において、すぐにデータが返されるか否かを確認し、２つのアドレスのいずれに対するリード要求においてもデータが返される場合、そのターゲット１１４が本当に待機時間を必要としないものであると判定する。
【０１５６】
すなわち、計測処理部１３１は、上述したように、ステップＳ７０において、アドレスＢ２２２に対する計測処理においても待機せずにデータを取得したか否かを判定し、アドレスＢ２２２に対する計測処理を行っていない、または、アドレスＢ２２２に対する計測処理においてはリトライが検出されたと判定した場合、処理を図１２のステップＳ８１に進め、アドレスＢ２２２に対するリード要求による計測処理に移行させる。
【０１５７】
図１１のステップＳ７０において、アドレスＢ２２２に対する計測処理においても待機せずにデータを取得した、すなわち、アドレスＡ２２１およびアドレスＢ２２２の両方に対する計測処理において待機せずにデータを取得したと判定した場合、計測処理部１３１は、処理を図１３のステップＳ９５に進め、値「０」をレイテンシ値２８３として、処理を行ったターゲット用のレイテンシ値レジスタ２７３にセットし、ステップＳ９３に処理を進め、CPU１４１の計測処理実行制御部２０６が有する完了フラグ２１２をアサートし、ステップＳ９４において不要なレジスタの値をリセットする等して終了処理を行い、計測処理を終了する。
【０１５８】
なお、以上の処理は、アドレスＢに対するリード要求を行っている場合も同様である。すなわち、計測処理部１３１は、図１２のステップＳ８２において、待機時間を経ていない最初のリード要求に対してデータを取得したと判定すると、図１２のステップＳ８９に処理を進め、アドレスＡ２２１に対する計測処理においても待機せずにデータを取得したか否かを判定し、アドレスＡ２２１に対する計測処理を行っていない、または、アドレスＡ２２１に対する計測処理においてはリトライが検出されたと判定した場合、処理を図１１のステップＳ６２に進め、アドレスＡ２２１に対するリード要求による計測処理に移行させる。
【０１５９】
図１２のステップＳ８９において、アドレスＡ２２１に対する計測処理においても待機せずにデータを取得した、すなわち、アドレスＡ２２１およびアドレスＢ２２２の両方に対する計測処理において待機せずにデータを取得したと判定した場合、計測処理部１３１は、処理を図１３のステップＳ９５に進め、値「０」をレイテンシ値２８３として、処理を行ったターゲット用のレイテンシ値レジスタ２７３にセットし、ステップＳ９３に処理を進め、CPU１４１の計測処理実行制御部２０６が有する完了フラグ２１２をアサートし、ステップＳ９４において不要なレジスタの値をリセットする等して終了処理を行い、計測処理を終了する。
【０１６０】
以上のように計測処理部１３１が計測処理を行うので、イニシエータ１１３は、以降のデータ転送処理（通常のPCIデータ転送処理）において、設定されたレイテンシ値２８３を用いることにより、PCIバス１１０に不要なトラフィック（本来不要なリード要求の繰り返しによるトランザクション）を発生させずに、かつ、イニシエータ１１３自身も、データ転送の効率を低下させずに、データ転送を行うことができる。従って、PCIバス１１０に接続された各PCIデバイス１１１は、より有効に活用することができる。
【０１６１】
次に、以上の計測処理の具体的な例について、図１４乃至図１９の図を参照して説明する。
【０１６２】
図１４に示されるように、PCIバス１１の使用権を与えられたイニシエータ１１３は、まず、ターゲット１１４に対するリード要求３２１−１を発行し、それを、PCIバス１１０を介してターゲット１１４に供給する（矢印３２２−１および矢印３２４−１）。
【０１６３】
図１５は、リードサイクルにおけるPCIバス１１０の主な信号状態の遷移の例を示す図である。なお、図１５において、図中左の信号名に記号「＃」が付加された信号は、負論理であることを示している。リードサイクルの場合、イニシエータ１１３は、図示せぬリクエスト（REQ＃）をアサートしてアービタにバスの使用権を要求する。アービタがこの要求に対してグラント（GNT＃）をアサートすることによりイニシエータ１１３は、PCIバス１１０の使用権を得ることができ、トランザクションを開始することができる。
【０１６４】
このようにして、PCIバス１１０の使用権を獲得したイニシエータ１１３は、図１５に示されるように、まず、クロック（CLK）１のタイミングでフレーム（FRAME＃）とイニシエータレディ（IRDY＃）をサンプルし、いずれもディアサート状態であるので、PCIバス１１０がアイドルステート（解放状態）であり、新規にバスサイクルを開始可能であると判断し、フレーム（FRAME＃）をアサートし、バスサイクルの開始を通知する。
【０１６５】
また、イニシエータ１１３は、このクロック（CLK）１のタイミングで、アドレス/データバス（AD[31:00]）にアドレス（例えば、ターゲット１１４のアクセス先アドレスＡ２２１）を出力し、バスコマンド/バイトイネーブル（C/BE[3:0]＃）にバスコマンドを供給する。この場合、メモリリード要求であるので、イニシエータ１１３は、バスコマンド/バイトイネーブル（C/BE[3:0]＃）の各線に”Ｌ”，”Ｈ”，”Ｈ”，”Ｌ”をドライブする。
【０１６６】
以上のようにして、図１４に示されるように、PCIバス１１０にはトランザクション３２３−１が生じる。矢印２４−１のようにリード要求が供給されるとターゲット１５は、応答処理２５−１を行う。
【０１６７】
図１５において、全てのターゲットデバイス（PCIバス１１０に接続されている全てのPCIデバイス１１１）は、クロック（CLK）２のタイミングでフレーム（FRAME＃）、アドレス/データバス（AD[31:00]）、およびバスコマンド/バイトイネーブル（C/BE[3:0]＃）をラッチし、新しいバスサイクルが開始され、現在がアドレスフェーズであることを把握し、アドレス/データバス（AD[31:00]）の情報をデコードすることにより、自分がアクセス先のターゲットであるか否かを判定する。
【０１６８】
自分がアクセスされるターゲットであると判定したターゲット１１４は、クロック（CLK）２のタイミングで、デバイスセレクション（DEVSEL＃）をアサートし、このバスサイクルに応答することを通知する。このとき、イニシエータ１１３は、アドレス/データバス（AD[31:00]）およびバスコマンド/バイトイネーブル（C/BE[3:0]＃）の状態をデータフェーズに移行する。
【０１６９】
そして、ターゲット１１４は、図１４の矢印３２６−１のように、ローカルバス１２０を介してローカルメモリ１２１にアクセスし、要求されたアドレスのデータを取得してキャッシュメモリ１２２に蓄積させる処理を開始する。このとき、キャッシュメモリ１２２のデータ（キャッシュデータ）は、要求されたデータではない無効データ３２７であり、データ転送の準備が整っていないので、ターゲット１１４は、イニシエータ１１３に対して、このキャッシュデータを供給せずに（ターゲットレディ（TRDY＃）をアサートせずに）、リトライ処理を返す（矢印３２８−１および矢印３２９−１）。イニシエータ１１３は、このように供給されたリトライ３３０−１を検出すると、PCIバス１１０を不要に占有しないように、一旦、PCIバス１１０を解放する。
【０１７０】
図１６は、ターゲット１１４がリトライ処理を返す際の、各信号における状態遷移の様子の例を示す図である。
【０１７１】
リトライ処理を返す場合、ターゲット１１４は、デバイスセレクション（DEVSEL＃）をアサートしたまま、ストップ（STOP＃）をアサートする。ストップ（STOP＃）のアサートを確認すると、イニシエータ１１３は、フレーム（FRAME＃）をディアサートし、さらに、図示せぬリクエスト（REQ＃）もディアサートし、PCIバス１１０を一旦解放する。ターゲット１１４は、フレーム（FRAME＃）がディアサートされたことを確認すると、ストップ（STOP＃）およびデバイスセレクション（DEVSEL＃）をディアサートする。また、これに伴い、イニシエータ１１３は、イニシエータレディ（IRDY＃）もディアサートする。
【０１７２】
図１４に戻り、リトライ処理を検出し、バスを解放したイニシエータ１１３の計測処理部１３１は、アウェイタイマ２５５を用いて、アウェイタイマ値２８５分のクロックをカウントさせ（カウント処理３５１）、アウェイタイマ２５５よりカウント終了が通知されるまで待機する。すなわち、イニシエータ１１３は、図１４に示されるように、時刻Ｔ１から時刻Ｔ３までの区間（区間３４１）において、リード要求を行わずに待機する。
【０１７３】
この間も、ターゲット１１４においては、先のリード要求３２１−１に対するデータ転送処理の準備が続けられ、キャッシュメモリ１２２には、ローカルメモリ１２１より読み出されたデータが蓄積される。そして、時刻Ｔ２において、リード要求３２１−１において要求されたデータのキャッシュメモリ１２２への蓄積処理が完了し、キャッシュメモリ１２２のデータが有効データ３３２になる。
【０１７４】
イニシエータ１１３において、アウェイタイマ２５５がカウント処理３５１を終了し、計測処理部１３１にカウント終了を通知すると、イニシエータ１１３は、再度、バスの使用権を再度確保し、同じアドレス（例えば、アドレスＡ２２１）に対してリード要求３２１−２を発行する（すなわち、同じデータを要求する）。このリード要求３２１−２は、リード要求３２１−１の場合と同様に、PCIバス１１０を介してターゲット１１４に供給される（矢印３２２−２および矢印３２４−２）。これによりPCIバス１１０にはトランザクション３２３−２が生じる。
【０１７５】
ターゲット１１４は、このリード要求３２１−２に対して応答処理３２５−２を行い、矢印３２６−１のようにキャッシュメモリ１２２にアクセスするが、この時点で、キャッシュメモリ１２２に有効データ３３２が蓄積されているので、矢印３３３のように有効データ３３２をイニシエータ１１３に供給させる。有効データ３３２は、矢印３３３および矢印３３５のように、PCIバス１１０を介して（トランザクション３３４）、イニシエータ１１３に供給される。イニシエータ１１３は、このように供給された有効データ３３６を取得する。
【０１７６】
図１５の場合、ターゲット１１４は、リード要求に対してデータ転送の準備が整うと、クロック（CLK）３のタイミングのように、ターゲットレディ（TRDY＃）をアサートし、アドレス/データバス（AD[31:00]）にキャッシュメモリ１２１のデータを出力する。イニシエータ１１３は、このアドレス/データバス（AD[31:00]）の値を読み取ることにより、要求したデータを取得することができる。以上のようにして、データ転送を完了したイニシエータ１１３およびターゲット１１４は、各信号をディアサートし、バスサイクルを終了し、PCIバス１１０を解放する。
【０１７７】
以上が１つのアドレスに対する１回分の処理（図１１のステップＳ６２乃至ステップＳ６８に対応する処理）である。通常のデータ転送時に、このように、イニシエータ１１３がリトライ検出後にアウェイタイマ値２８５分のクロック数をカウントする（待機する）ことにより、このバスサイクルにおいてPCIバス１１０に発生するトランザクションがトランザクション３２３−１、３２３−２、および３３４のみになり、PCIバス１１０は、不要なトラフィックの発生を抑制することができる。また、区間３４１において、イニシエータ１１３がPCIバス１１０を解放するので、他のマスタデバイスがPCIデータ転送処理を行うこともでき、各PCIデバイス１１１は、より有効にPCIバス１１０を利用することができる。
【０１７８】
ただし、図１４に示されるように、イニシエータ１１３は、時刻Ｔ２の時点で、ターゲット１１４のキャッシュメモリ１２２に有効データ３３２が用意されているのに、時刻Ｔ３までリード要求を行っていない。すなわち、イニシエータ１１３は、時刻Ｔ２から時刻Ｔ３までの間、不要に待機していることになる。従って、このアウェイタイマ値２８５では、待機時間が長すぎであり、イニシエータ１１３のデータ転送の効率が低下してしまう恐れがある。
【０１７９】
そこで、イニシエータ１１３の計測処理部１３１は、図１７に示されるように、アウェイタイマ値２８５を１回分（予め定められたクロック数分）ディクリースし（図１１のステップＳ６９）、再度、上述したような処理を行う。すなわち、図１７の場合、基本的にイニシエータ１１３およびターゲット１１４の動作は、図１４乃至図１６を参照して上述した場合と同様であるが、アウェイタイマ２５５によるカウント処理３６１の長さが、図１４のカウント処理３５１の場合と比較して、予め定められたアウェイタイマ値２８５の減算量１回分に相当する区間３６１Ａの分だけ短くなっている。
【０１８０】
すなわち、図１７の場合、イニシエータ１１３は、時刻Ｔ１においてカウント処理３６１を開始し、時刻Ｔ４においてカウント処理３６１が終了すると、矢印３６２のように、リード要求３２１−２を発行する。従って、イニシエータ１１３の、リトライ検出後の待機時間は、時刻Ｔ１から時刻Ｔ４までの区間３７１となる。当然、この区間３７１は、図１４の区間３４１より区間３６１Ａだけ短い。
【０１８１】
なお、この図１７に示されるリード要求は、図１４の場合に要求したアドレス（例えば、アドレスＡ２２１）と、同じターゲットの異なるアドレス（例えば、アドレスＢ２２２）に対する要求である。このアクセス先アドレスは、上述したように予め設定されている。
【０１８２】
図１７の場合、イニシエータ１１３は、図１４の処理より１回分待機時間を短くしてリード要求を行ったが、この場合においても、まだ、時刻Ｔ２から時刻Ｔ４までの間、不要に待機していることになる。そこで、イニシエータ１１３の計測処理部１３１は、同様にして、アウェイタイマ値２８５を減算しながら、図１４および図１７のような処理を繰り返し行う。このとき、イニシエータ１１３は、２つのアクセス先アドレスであるアドレスＡ２２１およびアドレスＢ２２２に対する処理を交互に行う。
【０１８３】
そして、以上の処理の繰り返しにより、アウェイタイマ値２８５が短くなっていき、時刻Ｔ２よりも早くカウントが終了すると、図１８に示されるように、待機後のリード要求に対して、イニシエータ１１３は、またリトライを検出する。
【０１８４】
図１８の場合、図１４のカウント処理３５１より区間３８１Ａだけ短いカウント処理３８１が時刻Ｔ２より前の時刻Ｔ５において終了するので、イニシエータ１１３は、この時刻Ｔ５において、矢印３８２のようにリード要求３２１−２を再度発行する。従って、ターゲット１１４は、応答処理３２５−２を行う時点で、まだ、キャッシュメモリ１２２に有効データ３３１が用意されていない（データ転送の準備が整っていない）ので、矢印３２８−２および矢印３２９−２のようにリトライを返す。
【０１８５】
これにより、イニシエータ１１３は、リトライ処理３３０−２を検出することになる。このように、イニシエータ１１３が待機する区間３９１の時間が時刻Ｔ１から時刻Ｔ２までの時間より短くなると、待機後のリード要求においてもイニシエータ１１３はリトライ処理を検出することになる。このときのアウェイタイマ値２８５をレイテンシ値２８３とすると、不要なトランザクション３２３−２が発生してしまうので、イニシエータ１１３の計測処理部１３１は、アウェイタイマ値２８５を、今までディクリースしていた１回分をインクリメントする。
【０１８６】
すなわち、イニシエータ１１３は、図１９に示されるようにリード要求を行う。図１９の場合、イニシエータ１１３は、リトライ３３３−１を検出後、アウェイタイマ２５５を用いて、図１４のカウント処理３５１より区間４０１Ａだけ短く、かつ、図１８のカウント処理３８１より区間４０１Ｂより長いカウント処理４０１を実行させる。そして、時刻Ｔ６において、カウント処理４０１が終了すると、イニシエータ１１３は、矢印４０２のように、リード要求３２１−２を発行する。すなわち、この場合、イニシエータ１１３は、時刻Ｔ１から時刻Ｔ６までの区間４１１の間待機し、PCIバス１１０を解放する。すなわち、この区間４１１において、他のPCIデバイス１１１がPCIバス１１０を利用することができる。
【０１８７】
従って、イニシエータ１１３は、このようにリード要求を行うことにより、リトライ検出後に、最適な待機時間でリード要求を行うことができる。そこで、イニシエータ１１３の検出処理部１３１は、この１回分インクリメントしたアウェイタイマ値２８５をレイテンシ値２８３としてレイテンシ値レジスタ２７３に格納する。これにより、イニシエータ１１３は、通常のデータ転送処理において、このレイテンシ値２８３を用いて処理を行うことができ、各PCIデバイス１１０は、PCIバス１１０を有効に利用することができる。
【０１８８】
図２０のフローチャートを参照して、通常のメモリリード処理を説明する。
【０１８９】
メモリリード処理を開始した、イニシエータ１１３のデバイス制御部２５２は、ステップＳ１０１において、上述したようにフレーム（FRAME＃）をアサートし、バスサイクルの開始を通知し、ステップＳ１０２において、アドレス/データバス（AD[31:00]）にアドレスを出力するとともに、バスコマンド/バイトイネーブル（C/BE[3:0]＃）にバスコマンドを供給することによってリードコマンドを供給する。リードコマンドを供給したデバイス制御部２５２は、ステップＳ１０３において、アドレス/データバス（AD[31:00]）およびバスコマンド/バイトイネーブル（C/BE[3:0]＃）の状態をデータフェーズに移行することにより、データ取得の準備を行う。
【０１９０】
そして、デバイス制御部２５２は、ステップＳ１０４において、ストップ（STOP＃）を監視し、リトライを検出したか否かを判定する。ストップ（STOP＃）がアサートされ、リトライを検出したと判定した場合、デバイス制御部２５２は、処理をステップＳ１０５に進め、フレーム（FRAME＃）やリクエスト（REQ＃）をディアサートし、PCIバス１１０を解放し、リード要求を行ったターゲット１１４に対応するターゲット別レジスタ空間２６１のレイテンシ値レジスタ２７３よりレイテンシ値２８３を読み出し、アウェイタイマ２５５にその時間をカウントさせ、その間待機する。アウェイタイマ２５５がカウント終了を出力すると、デバイス制御部２５２は、それを検知し、処理をステップＳ１０に戻してそれ以降の処理を繰り返し、再度リードコマンドをターゲット１１４に発行する。
【０１９１】
また、ステップＳ１０４において、リードコマンドに対応するリトライを検出していないと判定した場合、デバイス制御部２５２は、処理をステップＳ１０７に進め、ストップ（STOP＃）がディアサートの状態で、かつ、リードコマンドを出力したターゲットよりアドレス/データバス（AD[31:00]）にデータが出力されたか否かを判定することにより、データの供給準備が整ったか否かを判定する。
【０１９２】
データの供給準備が整った（ストップ（STOP＃）がディアサートの状態で、かつ、リードコマンドを出力したターゲットよりアドレス/データバス（AD[31:00]）にデータが出力された）と判定した場合、デバイス制御部２５２は、処理をステップＳ１０８に進め、アドレス/データバス（AD[31:00]）をラッチし、そのデータを取得し、ステップＳ１０９において終了処理を行った後、メモリリード処理を終了する。
【０１９３】
また、ステップＳ１０７において、ストップ（STOP＃）およびターゲットレディ（TRDY＃）がディアサートの状態でリードコマンドに対する応答を取得していないと判定した場合、デバイス制御部２５２は、処理をステップＳ１１０に進め、リードコマンドに対する応答としてターゲットアボートを検出したか否かを判定する。ターゲットアボートを取得していないと判定した場合、デバイス制御部２５２は、処理をステップＳ１０４に戻し、それ以降の処理を繰り返す。
【０１９４】
ステップＳ１１０において、ストップ（STOP＃）がアサートされ、かつ、ターゲットレディ（TRDY＃）とデバイスセレクション（DEVSEL＃）がディアサートされており、ターゲットアボートを検出したと判定した場合、デバイス制御部２５２は、ステップＳ１１１に処理を進め、アボート処理を実行し、デバイスドライバにエラーを通知する等して、メモリリード処理を終了する。
【０１９５】
以上のように、メモリリード処理を行うことにより、イニシエータ１１３は、図１９に示されるように最適な待機時間を用いてリード要求を繰り返すことができる。このように要求処理を行うことにより、イニシエータ１１３は、データ転送処理において余分なアクセス回数を減少させるので、PCIバス１１０のトラフィックを軽減させる等して、PCIバス１１０をより有効に活用することができる。
【０１９６】
なお、上述したように、イニシエータ１１３およびターゲット１１４は、PCIバス１１０に接続された任意のPCIデバイス１１１であり、それらによるPCIデータ転送１１２は、任意のPCIデバイス１１１間のデータ転送に適用することができる。すなわち、各マスタデバイスは、図１０のフローチャートを参照して上述したレイテンシ値設定処理は、それぞれ、各ターゲットに対して行う。すなわち、レイテンシ値の設定が全て完了した時点で、PCIバス１１０に接続された全てのマスタデバイスは、それぞれ、全てのターゲットに対する最適なレイテンシ値を保持している。従って、PCIバス１１０に接続された全てのPCIデバイス１１１は、最適な待機時間を用いてデータ転送処理を行うことができ、PCIバス１１０をより有効に活用することができる。
【０１９７】
また、PCIデバイス１１１は、PCIバス１１０に接続されており、PCIバス１１０を介して他のPCIデバイス１１１とデータ転送を行うものであればよく、例えば、CPU１４１も含まれる。従って、CPU１４１をイニシエータ１１３またはターゲット１１４とすることも可能である。さらに、イニシエータ１１３またはターゲット１１４として、例えば、PCI-PCIブリッジ等を介してPCIバス１１０に接続された他のPCIバスのPCIデバイス（いずれも図示せず）であってもよい。例えば、イニシエータ１１３とターゲット１１４が互いに異なるPCIバスに接続されている場合、イニシエータ１１３は、その２つのPCIバスを接続するブリッジをターゲットとして動作し、そのブリッジは、イニシエータ１１３に対してターゲットとして動作する。逆に、ブリッジはターゲット１１４に対してイニシエータのように振る舞い、ターゲット１１４は、ブリッジをイニシエータとした上で動作を行う。
【０１９８】
また、以上においては、PCIバス１１０を用いたバスシステムについて説明したが、システムバスとしては、上述したようにターゲットがイニシエータにリトライを返すバスであれば、これ以外のバスであってももちろんよい。また、そのようなバスであれば、イニシエータとターゲットが、それぞれ、ブリッジで互いに接続された、互いに異なる種類のバスに接続されているようにしてもよい。
【０１９９】
さらに、イニシエータ１１３が複数のデバイスとしての機能を有している場合（多機能デバイスである場合）、イニシエータ１１３は、機能ごとにレイテンシ値設定処理を行うようにしてもよいし、同じターゲットに対する１つのレイテンシ値を、１つのPCIデバイス１１１内で共有するようにしてもよい。逆にターゲット１１４が複数のデバイスとしての機能を有している場合、イニシエータ１１３は、各機能毎に、レイテンシ値を計測してもよいし、1つの機能についてのみ計測し、その結果得られたレイテンシ値を、そのターゲットの全ての機能について適用するようにしてももちろんよい。
【０２００】
なお、以上においては、イニシエータ１１３は、メモリリード処理を用いて計測処理を行い、最適なレイテンシ値２８３を決定するように説明したが、これに限らず、メモリライト処理、I/Oリード処理、またはI/Oライト処理等のように他の処理であってももちろんよい。例えば、イニシエータ１１３が、ターゲット１１４の機能に応じて、ターゲット１１４に対して実際に行う処理を選択し、その処理を繰り返す際の待機時間を、上述したように計測し、レイテンシ値２８３を決定するようにしてもよい。
【０２０１】
また、図１１乃至図１３のフローチャートに示されるように、イニシエータ１１３は、２つのアドレス（例えば、アドレスＡ２２１およびアドレスＢ２２２）に対してリード要求を交互に繰り返すように説明したが、このアクセス先アドレスの数は、１つであっても複数であってもよい。ただし、アクセス先アドレスが1つである場合、イニシエータ１１３は、ターゲット１１４のキャッシュメモリ１２２が保持するデータが確実にクリアされるまで待機する必要がある。
【０２０２】
以上においては、全てのPCIデバイス１１１が上述した処理に対応しているように説明したが、これに限らず、PCIデバイス１１１の内、一部のマスタデバイスのみが、図６に示されるような計測処理部１３１を有し、図１０のフローチャートを参照して説明したレイテンシ値設定処理や図１１乃至図１３のフローチャートを参照して説明した計測処理を実行可能であるようにしてもよい。その場合、CPU１４１は、図７（リセット処理）のステップＳ３において、レイテンシ値の設定を行うことができるマスタデバイスを特定し、ステップＳ４において、それらの特定されたマスタデバイスについてのみ制御するようにレイテンシ値設定制御処理を実行する。なお、この場合、マスタ特定部２０３が、各マスタデバイスについて、レイテンシ値の設定可能であるか否かを判定する方法として、例えば、レイテンシ値設定可能なマスタデバイスのコンフィギュレーションレジスタ等にその情報が予め格納されているようにする方法がある。マスタ特定部２０３は、図７のステップＳ３において、コンフィギュレーションレジスタに格納されたその情報を参照することにより、レイテンシ値を設定可能であるか否かを判定する。
【０２０３】
また、以上においては、PCIバス１１０のリセット時にレイテンシ値の設定処理が行われるように説明したが、これ以外にも、例えば、CPU１４１が常にPCIバス１１０の状態を監視し、不要なトランザクション（リトライによるトランザクション）の多発を検知し、その場合、そのPCIデバイスのレイテンシ値を再設定するようにしてもよい。
【０２０４】
その場合のCPU１４１の内部の構成例を図２１に示す。なお、図５の場合と同様の構成のブロックについては同じ符号が付されている。すなわち、CPU１４１は、図５の場合の構成の他に、リトライによるトランザクションを監視するリトライ監視部４２１を有している。
【０２０５】
リトライ監視部４２１は、ホストPCIブリッジ１５１を介して、PCIバス１１０を介して行われる各PCIデータ転送を監視し、リトライによるトランザクションを監視する。そして、リトライの数が予め定められた所定の数より多くなった場合、リトライ監視部４２１は、計測処理実行制御部２０６を制御し、そのPCIデータ転送を行ったイニシエータとターゲットとの計測処理の実行制御を開始させる。
【０２０６】
このようなリトライ監視処理を図２２のフローチャートを参照して説明する。
【０２０７】
リトライ監視処理を開始したリトライ監視処理部４２１は、ステップＳ１３１においてPCIバス１１０を監視し、現在行われているPCIデータ転送を監視する。ステップＳ１３２において、リトライ監視処理部４２１は、リトライを検出したか否かを判定し、リトライを検出した場合、ステップＳ１３３に処理を進め、リトライをカウントするカウンタをカウントアップさせ、そのリトライをカウントする。
【０２０８】
リトライをカウントしたリトライ監視部４２１は、ステップＳ１３４に処理を進める。また、ステップＳ１３２において、リトライを検出していないと判定した場合、リトライ監視部４２１は、ステップＳ１３３の処理を省略し、ステップＳ１３４に処理を進める。
【０２０９】
ステップＳ１３４において、リトライ監視部４２１は、PCIデータ転送が終了したか否かを判定し、終了していないと判定した場合、処理をステップＳ１３１に戻してそれ以降の処理を繰り返し、そのPCIデータ転送に対する監視を続け、リトライを検出する度にそのリトライをカウントする。そして、ステップＳ１３４において、PCIデータ転送が終了したと判定した場合、リトライ監視部４２１は、ステップＳ１３５に処理を進め、カウントしたカウント値（すなわち、監視したPCIデータ転送において検出したリトライの数）が所定の数より大きいか否かを判定する。
【０２１０】
カウント値が所定の数より大きいと判定した場合、リトライ監視部４２１は、処理をステップＳ１３６に進め、計測処理実行制御部２０６を制御し、図９のフローチャートを参照して説明したようなレイテンシ値設定制御処理を実行させ、リトライを多数検出したPCIデータ転送を行っていたイニシエータ１１３にターゲット１１４に対する計測処理の実行を開始させる。ただし、この場合、計測処理実行制御部２０６は、イニシエータ１１３に、少なくとも、監視したPCIデータ転送の通信相手であるターゲット１１４についてレイテンシ値の再設定を行わせればよく、全てのターゲットに対してレイテンシ値設定処理（図１０）を実行させる必要はない。
【０２１１】
ステップＳ１３６の処理を終了したリトライ監視部４２１は、ステップＳ１３７に処理を進める。また、ステップＳ１３５において、リトライ監視部４２１は、カウント値が所定の数より大きくないと判定した場合、ステップＳ１３６の処理を省略し、ステップＳ１３７に処理を進める。
【０２１２】
ステップＳ１３７において、リトライ監視部４２１は、カウント値をリセットし、ステップＳ１３８に処理を進め、リトライ監視処理を終了するか否かを判定し、終了しないと判定した場合、処理をステップＳ１３１に進め、次のPCIデータ転送に対する監視を開始する。また、ステップＳ１３８において、リトライ監視処理を終了すると判定した場合、リトライ監視部４２１は、リトライ監視処理を終了する。
【０２１３】
以上のように、リトライ監視部４２１が通常のPCIデータ転送時に、各PCIデータ転送におけるリトライ数をカウントし、リトライ数が多すぎる場合は、計測処理実行制御部２０６を制御し、イニシエータ１１３にレイテンシ値の再設定を行わせることにより、例えば、通常のPCIデータ転送が行われている期間に、最適なレイテンシ値が変化するような場合においても、イニシエータ１１３は、すぐにレイテンシ値の再設定処理を行い、常に最適なレイテンシ値によりPCIデータ転送を行うことができる。
【０２１４】
なお、以上においては、PCIバス１１０がリセットされると、各マスタデバイスによるレイテンシ値の設定処理が行われるように説明したが、これに限らず、例えば、マスタデバイスの一部または全部が、リセット前に使用されていたレイテンシ値を不揮発性のメモリ等に保持し、リセット後に設定処理を省略してその保持していたレイテンシ値を流用するようにしてももちろんよい。このようにすることにより、各マスタデバイスは、図１０を参照して説明したようなレイテンシ値設定処理を省略することができるので、リセット処理の負荷を軽減させることができる。
【０２１５】
また、図４においては、画像処理装置１００のCPU１４１がホストPCIブリッジ１５１を内蔵するように説明したが、これに限らず、例えば、図２３に示されるように、CPU１４１とホストPCIブリッジ１５１が互いに別体として構成されるようにしてももちろんよい。
【０２１６】
図２３において、ホストPCIバス４３１は、PCIバス１１０とホストバス４４０に接続されており、図４のホストPCIブリッジ１５１と同様の機能を有し、同様の処理を行う。図２３の場合、CPU１４１は、図４の場合と異なりホストPCIブリッジ１５１を有していないが、PCIバス１１０側（PCIデバイス１１１）との通信は、ホストPCIバス４３１を介して行われるので、CPU１４１内部の各部の処理は、図４の場合と実質的に同様の処理により実現することができる。
【０２１７】
また、CPU１４１は、ホストバス４４０を介して、ホストPCIバス４３１の他に、メインメモリ１６１とも接続されている。ホストバス４４０は、図４のホストバス１６０と基本的に同様のバスである。
【０２１８】
図２３においては、図示は省略しているが、PCIバス１１０のアービタやPCIコントローラは、ホストPCIブリッジ４３１に内蔵されている。しかしながら、これらのアービタやPCIコントローラ等がさらに、ホストPCIブリッジ４３１と別体に構成されるようにしてももちろんよい。
【０２１９】
なお、以上においては、レイテンシ値設定処理や計測処理を（CPU１４１の制御により）各マスタデバイスが行うように説明したが、これらの処理をCPU１４１が行うようにしてももちろんよい。その場合、CPU１４１は、リクエスト（REQ＃）やグラント（GNT＃）等のように上述した以外の信号も監視し、現在のバスサイクルを行っているPCIデバイス１１１を特定する必要がある。このように、CPU１４１が、計測処理等も行うことにより、画像処理装置１００は、どのようなPCIデバイス１１１が接続されてもPCIバス１１０を有効に活用させることができる。
【０２２０】
また、図１０のフローチャートを参照して説明したレイテンシ値設定処理や図１１乃至図１３のフローチャートを参照して説明した計測処理において、イニシエータ１１３の計測処理部１３１は、初めにアウェイタイマ値２８５（レイテンシ値２８３）の最大値である初期アウェイ値２１１をアウェイタイマ値２８５の初期値とし、そこから所定の値をディクリースしながら計測に関する処理を繰り返すように説明したが、これ以外にも、例えば、アウェイタイマ値２８５の初期値である初期アウェイ値２１１がアウェイタイマ値２８５（レイテンシ値２８３）の最小値とし、イニシエータ１１３が、その状態から計測に関する処理を繰り返し、その度に、アウェイタイマ値に所定の値分ずつインクリースしていき、待機後にリトライが検出されなくなるまで繰り返すようにしてもよい。
【０２２１】
また、イニシエータ１１３の計測処理部１３１がアウェイタイマ値２８５をディクリース（またはインクリース）する値が可変である（例えば、その値がディクリース（またはインクリース）を行う度に変化する）ようにしてももちろんよい。
【０２２２】
また、以上においては、映像機器である画像処理装置について説明したが、上述したようなバスシステムを有する装置であれば何でもよく、例えば、パーソナルコンピュータやサーバ等の情報処理装置であってもよいし、PDAや携帯電話器等のモバイル機器であってもよいし、テレビジョン受信装置やハードディスクレコーダ等の家庭電化製品であってももちろんよい。
【０２２３】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、CPU１４１が、ドライブ１７３を介してリムーバブルメディア１７４より読み出した、マスタデバイスが図１０のフローチャートを参照して説明したレイテンシ値設定処理や、図１１乃至図１３のフローチャートを参照して説明した計測処理等を実行するのに必要なプログラムやデータを、PCIバス１１０を介して、各マスタデバイス（PCIデバイス１１１の一部）に供給し、インストールするようにしてもよい。
【０２２４】
そのとき、各マスタデバイスが、そのように供給されたプログラムやデータを取得すると、それらを内蔵する不揮発性のメモリ等の記憶部に記憶し、必要に応じてそれらのプログラムを実行し、上述した処理を実行するようにしてもよい。
【０２２５】
このようにすることにより、例えば、上述した処理に対応していない既存のマスタデバイスも、PCIバス１１０に接続することにより、CPU１４１が必要なプログラムやデータをインストールすることができる。従って、画像処理装置１００は、どのようなPCIデバイス１１１が接続されてもPCIバス１１０を有効に活用させることができる。
【０２２６】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０２２７】
この記録媒体は、例えば、図４に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１７４により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM１７１や、記憶部１７２に含まれるフラッシュメモリなどで構成される。
【０２２８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２２９】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２３０】
【図１】従来のPCIバスシステムについて説明するブロック図である。
【図２】従来のPCIデータ転送処理の流れについて説明する模式図である。
【図３】バースト転送について説明する図である。
【図４】本発明を適用した画像処理装置１００の構成例を示すブロック図である。
【図５】図４のCPUの詳細な構成例を示すブロック図である。
【図６】図４のイニシエータの詳細な構成例を示すブロック図である。
【図７】リセット処理の例を説明するフローチャートである。
【図８】ターゲットに割り当てられるメモリ空間の構成例を示す模式図である。
【図９】レイテンシ値設定制御処理の例を説明するフローチャートである。
【図１０】レイテンシ値設定処理の例を説明するフローチャートである。
【図１１】計測処理の例を説明するフローチャートである。
【図１２】計測処理の例を説明する、図１１に続くフローチャートである。
【図１３】計測処理の例を説明する、図１２に続くフローチャートである。
【図１４】１つのアドレスに対する計測処理の流れの例を説明する図である。
【図１５】リードサイクルにおける信号の状態遷移の例を説明する図である。
【図１６】リトライにおける信号の状態遷移の例を説明する図である。
【図１７】１つのアドレスに対する計測処理の流れの他の例を説明する図である。
【図１８】１つのアドレスに対する計測処理の流れの他の例を説明する図である。
【図１９】１つのアドレスに対する計測処理の流れの他の例を説明する図である。
【図２０】メモリリード処理の例を説明するフローチャートである。
【図２１】図４のCPUの詳細な他の構成例を示すブロック図である。
【図２２】リトライ監視処理の例を説明するフローチャートである。
【図２３】本発明を適用した画像処理装置１００の他の構成例を示すブロック図である。
【符号の説明】
【０２３１】
１００  画像処理装置，  １１０  PCIバス  １１１  PCIデバイス，  １１２  PCIデータ転送，  １１３  イニシエータ，  １１４  ターゲット，  １２０  ローカルバス，  １２１  ローカルメモリ，  １２２  キャッシュメモリ，  １３１  計測処理部，  １４１  CPU，  １５１  ホストPCIブリッジ，  １５２  レイテンシ値設定制御部，  １６０  ホストバス，  １６１  メインメモリ，  １７１  ROM，  １７２  記憶部，  １７３  ドライブ，  １７４  リムーバブルメディア，  ２０１  PCIコンフィギュレーション処理部，  ２０２  アドレス設定部，  ２０３  マスタ特定部，  ２０４  初期アウェイ値設定部，  ２０５  アドレスセット処理部，  ２０６  計測処理実行制御部，  ２１１  初期アウェイ値，  ２１２  完了フラグ，  ２１３  レイテンシ値設定用アクセス先アドレス，  ２２１  アドレスＡ，  ２２２  アドレスＢ，  ２５１  PCIインタフェース処理部，  ２５２  デバイス制御部，  ２５３  初期アウェイ値セット処理部，  ２５４  アドレスセット処理部，  ２５５  アウェイタイマ，  ２６１  ターゲット別レジスタ空間，  ２７１  レイテンシ値設定用アクセス先アドレスレジスタＡ，  ２７２  レイテンシ値設定用アクセス先アドレスレジスタＢ，  ２７３  レイテンシ値レジスタ，  ２７４  初期アウェイ値レジスタ，  ２７５  アウェイタイマ値レジスタ，  ２８３  レイテンシ値，  ２８４  初期アウェイ値，  ２８５  アウェイタイマ値，  ４２１  リトライ監視部，  ４３１  ホストPCIブリッジ，  ４４０  ホストバス
【図１】
2005242437.tif 000003
【図２】
2005242437.tif 000004
【図３】
2005242437.tif 000005
【図４】
2005242437.tif 000006
【図５】
2005242437.tif 000007
【図６】
2005242437.tif 000008
【図７】
2005242437.tif 000009
【図８】
2005242437.tif 000010
【図９】
2005242437.tif 000011
【図１０】
2005242437.tif 000012
【図１１】
2005242437.tif 000013
【図１２】
2005242437.tif 000014
【図１３】
2005242437.tif 000015
【図１４】
2005242437.tif 000016
【図１５】
2005242437.tif 000017
【図１６】
2005242437.tif 000018
【図１７】
2005242437.tif 000019
【図１８】
2005242437.tif 000020
【図１９】
2005242437.tif 000021
【図２０】
2005242437.tif 000022
【図２１】
2005242437.tif 000023
【図２２】
2005242437.tif 000024
【図２３】
2005242437.tif 000025