(57)【要約】【課題】  ＰＣＩバスの占有を防止し，ＰＣＩバスシステムのパフォーマンスを高める。【解決手段】  イニシエータとターゲット間の，ＰＣＩバスを介したアクセスを制御するバス制御方法であって，イニシエータのアクセス要求に応じてターゲットが行うリトライ要求を計数し（Ｓ３１６），その計数値が所定数を超えた場合，一旦，強制的にバスサイクルを終了する（Ｓ３２０）ことを特徴とする，バス制御方法が提供される。かかるリトライに上限を設けるという簡易な構成で，特定のイニシエータがローカルバスおよびＰＣＩバスを占有することなく，他のイニシエータへの解放機会を増やし，ＰＣＩバスシステムのパフォーマンスを高めることができる。【選択図】    図４
2005235057.tif 000002
【特許請求の範囲】
【請求項１】
コマンドを出す側の装置であるイニシエータと，コマンドを受ける側の装置であるターゲット間の，ＰＣＩバスを介したアクセスを制御するバス制御方法であって：
前記イニシエータが，前記ターゲットに対してデータのアクセスを要求する，アクセス要求工程と；
前記ターゲットが，
前記アクセスの要求に対して所定時間内にアクセスが可能かどうか判断するアクセス判断工程と；
前記アクセス判断工程によってアクセスが可能と判断された場合，前記イニシエータとデータのアクセスを実行するアクセス工程と；
前記アクセス判断工程によってアクセスが不可能と判断された場合，同バスサイクルでアクセスが不可能だった回数である非アクセス回数を計数する非アクセス計数工程と；
前記非アクセス計数工程の結果，前記非アクセス回数が所定数を超えているかどうかを判断する回数判断工程と；
前記回数判断工程によって前記所定数を超えていると判断された場合，強制的に前記バスサイクルを終了する強制終了工程と；
前記回数判断工程によって前記所定数を超えていないと判断された場合，前記イニシエータに対してリトライを要求するリトライ要求工程と；
前記イニシエータが，前記ターゲットからリトライ要求があった場合，再度アクセスを要求し，前記ターゲットとデータのアクセスを実行した場合，バスサイクルを終了するリトライ判断工程と；
を含むことを特徴とする，バス制御方法。
【請求項２】
前記強制終了工程は，前記イニシエータと擬似的にアクセスすることによって行われることを特徴とする，請求項１に記載のバス制御方法。
【請求項３】
前記イニシエータが，前記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，前記ブロックサイクルのアクセスが正常であったかどうかを判断するブロック判断工程をさらに含み，
前記アクセスが正常でなければ前記ブロックサイクルを再実行することを特徴とする，請求項１に記載のバス制御方法。
【請求項４】
前記強制終了工程は，前記所定数を超えていると判断された場合，さらにフラグを立て，
前記ブロック判断工程は，前記フラグが立っているかどうかによってアクセスの正常を判断することを特徴とする，請求項３に記載のバス制御方法。
【請求項５】
前記ブロックサイクルの再実行は，前記フラグが立っている間繰り返されることを特徴とする，請求項４に記載のバス制御方法。
【請求項６】
前記バス制御方法は，１または２以上のバスサイクルの組により形成されたブロックサイクルのバスサイクル総数が所定数以下である場合に実行されることを特徴とする，請求項１に記載のバス制御方法。
【請求項７】
コマンドを出す側の装置であるイニシエータと，コマンドを受ける側の装置であるターゲット間の，ＰＣＩバスを介したアクセスを制御するバス制御システムであって：
前記イニシエータは，
前記ターゲットに対してデータのアクセスを要求する，アクセス要求手段と；
前記ターゲットからリトライ要求があった場合，再度アクセスを要求し，前記ターゲットとデータのアクセスを実行した場合，バスサイクルを終了するリトライ判断手段と；
を備え，
前記ターゲットは，
前記イニシエータからのアクセスの要求に対して所定時間内にアクセスが可能であれば，前記イニシエータとデータのアクセスを実行するアクセス手段と；
前記イニシエータからのアクセスの要求に対して所定時間内にアクセスが不可能ならば，同バスサイクルでアクセスが不可能だった回数である非アクセス回数を計数する非アクセス計数手段と；
前記非アクセス計数手段において，前記非アクセス回数が所定数を超えたとき，強制的に前記バスサイクルを終了する強制終了手段と；
前記非アクセス計数手段において，前記非アクセス回数が所定数を超えていなければ，前記イニシエータに対してリトライを要求するリトライ要求手段と；
を備えることを特徴とする，バス制御システム。
【請求項８】
前記強制終了手段は，前記イニシエータと擬似的にアクセスすることによって行われることを特徴とする，請求項７に記載のバス制御システム。
【請求項９】
前記イニシエータは，前記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，前記ブロックサイクルのアクセスが正常であったかどうかを判断するブロック判断手段をさらに含み，
前記アクセスが正常でなければ前記ブロックサイクルを再実行することを特徴とする，請求項７に記載のバス制御システム。
【請求項１０】
前記強制終了手段は，前記非アクセス回数が所定数を超えたとき，さらにフラグを立て，
前記ブロック判断手段は，前記フラグが立っているかどうかによってアクセスの正常を判断することを特徴とする，請求項９に記載のバス制御システム。
【請求項１１】
前記ブロックサイクルの再実行は，前記フラグが立っている間繰り返されることを特徴とする，請求項１０に記載のバス制御システム。
【請求項１２】
前記バス制御システムは，１または２以上のバスサイクルの組により形成されたブロックサイクルのバスサイクル総数が所定数以下である場合に実行されることを特徴とする，請求項７に記載のバス制御システム。
【請求項１３】
前記ターゲットは，ハードウェアで実現されることを特徴とする，請求項７に記載のバス制御システム。
【請求項１４】
前記アクセスは，イニシエータによるターゲットからのデータの読み出し，イニシエータからターゲットへのデータの書き込みのいずれかであることを特徴とする，請求項７に記載のバス制御システム。
【請求項１５】
コマンドを受ける側の装置であるターゲットに対して，ＰＣＩバスを介したアクセスを行うイニシエータであって：
前記ターゲットに対してデータのアクセスを要求する，アクセス要求手段と；
前記ターゲットからリトライ要求があった場合，再度アクセスを要求し，前記ターゲットとデータのアクセスを実行した場合，バスサイクルを終了するリトライ判断手段と；
前記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，前記ブロックサイクルのアクセスが正常であったかどうかを判断するブロック判断手段と；
を備え，
前記ブロック判断手段において，アクセスが正常でなければ前記ブロックサイクルを再実行することを特徴とする，イニシエータ。
【請求項１６】
前記ブロック判断手段は，前記ターゲットのフラグが立っているかどうかによってアクセスの正常を判断することを特徴とする，請求項１５に記載のイニシエータ。
【請求項１７】
前記ブロックサイクルの再実行は，前記フラグが立っている間繰り返されることを特徴とする，請求項１６に記載のイニシエータ。
【請求項１８】
コマンドを受ける側の装置であるターゲットに対して，ＰＣＩバスを介したアクセスを行うコンピュータプログラムであって：
コンピュータを，
前記ターゲットに対してデータのアクセスを要求する，アクセス要求手段と；
前記ターゲットからリトライ要求があった場合，再度アクセスを要求し，前記ターゲットとデータのアクセスを実行した場合，バスサイクルを終了するリトライ判断手段と；
前記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，前記ブロックサイクルのアクセスが正常であったかどうかを判断するブロック判断手段と；
して機能させ，
前記アクセス判断手段において，アクセスが正常でなければ前記ブロックサイクルを再実行することを特徴とする，コンピュータプログラム。
【請求項１９】
コマンドを出す側の装置であるイニシエータに対して，ＰＣＩバスを介したアクセスを行うターゲットであって：
前記イニシエータからのアクセスの要求に対して所定時間内にアクセスが可能であれば，前記イニシエータとデータのアクセスを実行するアクセス手段と；
前記イニシエータからのアクセスの要求に対して所定時間内にアクセスが不可能ならば，同バスサイクルでアクセスが不可能だった回数である非アクセス回数を計数する非アクセス計数手段と；
前記非アクセス計数手段において，前記非アクセス回数が所定数を超えたとき，強制的に前記バスサイクルを終了する強制終了手段と；
前記非アクセス計数手段において，前記非アクセス回数が所定数を超えていなければ，前記イニシエータに対してリトライを要求するリトライ要求手段と；
を備えることを特徴とする，ターゲット。
【請求項２０】
前記強制終了手段は，前記イニシエータと擬似的にアクセスすることによって行われることを特徴とする，請求項１９に記載のターゲット。
【請求項２１】
前記強制終了手段は，前記非アクセス回数が所定数を超えたとき，さらにフラグを立てることを特徴とする，請求項１９に記載のターゲット。
【請求項２２】
前記ターゲットは，ハードウェアで実現されることを特徴とする，請求項１９に記載のターゲット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＰＣＩバスを利用した，バス制御方法，バス制御システム，イニシエータ，ターゲットおよびそのコンピュータプログラムに関する。
【背景技術】
【０００２】
ＰＣＩバスは，従来のＣＰＵに依存したバスを改良したバスである。ＣＰＵを含むローカルバスとＰＣＩバスとの間にローカル−ＰＣＩブリッジを介すことによって，ＣＰＵに接続されたローカルバスとＰＣＩバスとを独立して動かすことが可能となる。従って，ＰＣＩバスに複数のＣＰＵが接続された場合においても，各ＣＰＵ同士を調停することによってＰＣＩバスに接続されたターゲットを共有したり，それぞれ別のターゲットを操作したりできる。
【０００３】
このように１つのＰＣＩバスをＣＰＵ等複数のイニシエータが共有する構成では，特定のイニシエータがターゲットに対してデータの読み出しを行うと，その読み出しが終わるまで，即ち読み出しに関するバスサイクルが完了するまでＰＣＩバスが占有される。このとき他のイニシエータはＰＣＩバスを利用することができない。この占有時間は，ターゲットのデータ処理能力に依存し，イニシエータ側で読み出しタイミングを縮めることもできない。
【０００４】
上記のようにＰＣＩバスがロックされた状態において，ターゲットはイニシエータに対してリトライを要求し，イニシエータはそのリトライ要求を受けてターゲットから再度データを読み出すといった処理を行っている。しかし，このリトライを繰り返すバスサイクルの間，ローカルバスやＰＣＩバスが占有され，ローカルバスに接続されたＣＰＵは他の処理を行うことができなかった。
【０００５】
このように，ターゲットによるリトライ要求を利用し，ＰＣＩバスと独立してターゲット内のデータをＦＩＦＯに記憶し，その時点でイニシエータにデータを読み出させ，かつ，リトライを繰り返している間に別途設けられた通信用デバイスによって書き込み要求を受け付ける技術が知られている（例えば，特許文献１）。
【０００６】
また，上記のようなＰＣＩバスのデータ読み出し処理において，リトライ要求と共にデータが準備できるまでの時間である準備時間を送信し，その準備時間が経過するまでＰＣＩバスを一旦解放する技術も知られている（例えば，技術文献２）。
【０００７】
しかし，かかる方法においてもＣＰＵとローカル−ＰＣＩブリッジ間のローカルバスの占有を回避することはできない。
【０００８】
【特許文献１】特開平１０−０４０２１５号公報
【特許文献２】特開平１０−２９３７４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は，従来のＰＣＩバスにおけるデータアクセスが有する上記問題点に鑑みてなされたものであり，本発明の目的は，簡易な構成で，特定のイニシエータがローカルバスおよびＰＣＩバスを占有することなく，他のイニシエータへの解放機会を増やし，ＰＣＩバスシステムのパフォーマンスを高めることが可能な，新規かつ改良されたバス制御方法，バス制御システム，イニシエータ，ターゲットおよびそのコンピュータプログラムを提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために，本発明のある観点によれば，コマンドを出す側の装置であるイニシエータと，コマンドを受ける側の装置であるターゲット間の，ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを介したアクセスを制御するバス制御方法であって：上記イニシエータが，上記ターゲットに対してデータのアクセスを要求する，アクセス要求工程と；上記ターゲットが，上記アクセスの要求に対して所定時間内にアクセスが可能かどうか判断するアクセス判断工程と；上記アクセス判断工程によってアクセスが可能と判断された場合，上記イニシエータとデータのアクセスを実行するアクセス工程と；上記アクセス判断工程によってアクセスが不可能と判断された場合，同バスサイクルでアクセスが不可能だった回数である非アクセス回数を計数する非アクセス計数工程と；上記非アクセス計数工程の結果，上記非アクセス回数が所定数を超えているかどうかを判断する回数判断工程と；上記回数判断工程によって上記所定数を超えていると判断された場合，強制的に上記バスサイクルを終了する強制終了工程と；上記回数判断工程によって上記所定数を超えていないと判断された場合，上記イニシエータに対してリトライを要求するリトライ要求工程と；上記イニシエータが，上記ターゲットからリトライ要求があった場合，再度アクセスを要求し，上記ターゲットとデータのアクセスを実行した場合，バスサイクルを終了するリトライ判断工程とを含むことを特徴とする，バス制御方法が提供される。
【００１１】
ここで，イニシエータ（マスタ）とは,アドレス線をドライブして，データ転送の相手を指定し，メモリの読み出し等のバスコマンドを送ることのできるデバイスをいう。また，ターゲットとはイニシエータからアドレスとバスコマンドを受け取り，バスコマンドに対応した処理を行うデバイスであり，イニシエータ機能を持たないものをいう。また，イニシエータ同士でデータの転送を行うときは，バスの占有権を要求してデータ転送を開始する方がイニシエータ，その相手方がターゲットとなる。1つのデータ転送に関わっているイニシエータとターゲットをまとめて，エージェントと呼ぶこともある。
【００１２】
また，上記アクセスは，イニシエータによるターゲットからのデータの読み出し，イニシエータからターゲットへのデータの書き込みのいずれかであるとしても良く，コンフィギュレーションメモリに対する読み出しまたは書き込みであるとしても良い。上記バスサイクルとは，アクセスが一通り終了するサイクルであり，データの読み出しを例に挙げると，イニシエータが読み出し要求を行ってから，実際にデータを取得するまでの期間を言う。
【００１３】
上記所定数は，非アクセス回数の上限であり，例えば，１０，２０，３０回といった整数で表される。この所定数は，ＰＣＩバスやＰＣＩバスに接続された各デバイスの処理能力に従って決定され，予めハードウェアまたはソフトフェアに書き込まれている。例えば，リアルタイムＯＳにおける割り込みルーチンが３ｕｓｅｃ程度を要する場合，この時間と同等またはその倍程度の時間以内になるように所定数を設定する。また，上記は回数ではなく時間によって非アクセス回数を制限するとしても良い。この場合，上記非アクセス計数工程の代わりに非アクセス時間を計測する工程を実施する。
【００１４】
本発明は，ターゲットの処理能力によって遅延する無意味な時間を有効に活用するため，例えば，データの読み出しにおいてリトライが繰り返されるバスサイクル中に特別な処理を施すのではなく，一旦バスサイクルを強制的に終了させ，ＰＣＩバスの解放機会を増やすことを目的とし，バスサイクルの強制終了によるデータの不完全性を事後的に補うという考え方に基づいている。
【００１５】
上記強制終了工程は，上記イニシエータと擬似的にアクセスすることによって行われるとしても良い。擬似的にアクセスするとは，例えば，データの読み出しの場合，ターゲットから擬似的にデータを送信，即ちＦＦＦＦＦＦＦＦｈ等のダミーデータを送信することをいう。
【００１６】
かかるダミーデータの送信は，プログラマブルデバイス等によりハードウェアで構成することができる。上記所定のリトライ回数を超えた場合，本来イニシエータが必要とするデータを待つことなく所定のデータを送信することによって，イニシエータは意味のないデータを得ることができ，擬似的にバスサイクルが閉じられる。
【００１７】
上記イニシエータが，上記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，上記ブロックサイクルのアクセスが正常であったかどうかを判断するブロック判断工程をさらに含み，上記アクセスが正常でなければ上記ブロックサイクルを再実行するとしても良い。
【００１８】
上記に示した正常ではない状態とは，ブロックサイクルの各バスサイクルにおいて，上述したバスサイクルの強制終了が少なくとも１回発生していることを言い，このような場合，アクセスしたデータのブロック中に強制終了工程によるダミーデータが少なくとも１つ入っている。ここでブロックとは，各バスサイクルにより読み出されるデータの列をいう。
【００１９】
かかる構成により，バスサイクルの強制終了によるデータの不完全性を事後的に補うことができる。即ち，上記ブロックサイクルのアクセスが正常でない場合は，かかるアクセスによるブロックを無視し，再度，ブロックサイクルを行うことによって完全なブロックを得ることができる。
【００２０】
上記の構成は，バスサイクルの強制終了をおこなったデータをあえて特定せず，ブロック単位でアクセスし直すことを特徴としている。これは，バスサイクルの強制終了を行ったデータの位置を参照する構成は非常に複雑であり，そのためデータ復旧の処理が追いつかない等の問題があるからである。これに対して本発明では，ブロック中のダミーデータがどれであるか，または幾つあるかに拘わらず，ブロック全体を再度読み込むこととしている。
【００２１】
上記強制終了工程は，上記所定数を超えていると判断された場合，さらにフラグを立て，上記ブロック判断工程は，上記フラグが立っているかどうかによってアクセスの正常を判断するとしても良い。上記フラグとは，ターゲットのアクセス状態を示す信号を言う。また，このような状態を示す信号としては，上記フラグに限られず，リトライ回数を超えていることを一時的に記録しイニシエータが事後的に参照することができる構成であれば適応することができる。
【００２２】
リトライ回数を超えた場合，そのバスサイクルは強制終了され，アクセスされたデータは無効になる。この時，無効になったデータのアドレスをハードウェア的にスタックすることも可能である。しかし，１つのブロックの中で複数のデータが無効になった場合，無効になったデータのアドレスが次に無効になったデータのアドレスによって上書きされる可能性がある。従って，少なくとも１つ無効になったデータが含まれるブロックは信頼性が無いことになる。本発明では，１つでも無効になったデータが存在するブロックは無視し，無効になったデータが存在しない，即ちフラグが１つも立っていないブロックのみを正規のブロックとする。よって，無効になったデータのアドレスをスタックする必要はなく，フラグのみの構成によって上記ブロック判断工程が行われる。
【００２３】
また，上記ブロックサイクルの再実行は，上記フラグが立っている間繰り返されるとしても良い。かかる構成により，フラグが立たない，即ち，無効になるデータが無いときのブロックを取得することができる。
【００２４】
ターゲットがデータを準備するまでの時間は，ターゲットのデータ処理能力に依存するので，ＰＣＩバスの処理には影響されない。従って，上述のブロックサイクルを繰り返す構成によっても，ダミーデータの入っていない正規のブロックを取得できる時間は従来と同じになる。従来と比較した相違点は，従来バスサイクルがロックされることにより解放されなかったローカルバスやＰＣＩバスを短い間隔で解放し，このようなバスを有効に活用できることである。また，かかるブロックサイクルを繰り返す途中にローカルバスやＰＣＩバスに割り込み処理が発生したとしても，ターゲットのデータ準備時間には影響しないので，正規のブロックを取得できる時間が遅くなることはない。
【００２５】
上記バス制御方法は，１または２以上のバスサイクルの組により形成されたブロックサイクルのバスサイクル総数が所定数以下である場合に実行されるとしても良い。
【００２６】
上記バスサイクルの総数が多い場合，その分，一回のブロックサイクルが長時間を要することになり，ブロックサイクルを何回も繰り返す構成が却って障害になる。従って，バスサイクル総数が，例えば１６以下といった場合にのみ，本バス制御方法を適用する。これによって，短いブロックサイクル時間が何回も繰り返されることになる。
【００２７】
上記課題を解決するために，本発明の別の観点によれば，上述したバス制御方法を実現するバス制御システム，上記バス制御システムで利用されるイニシエータおよびターゲット，また，イニシエータとして機能するコンピュータプログラムが提供される。
【００２８】
また，上記イニシエータとターゲットは，１つのデバイスとして統合することも可能である。
【発明の効果】
【００２９】
以上説明したように本発明によれば，リトライに上限を設けるという簡易な構成で，特定のイニシエータがローカルバスおよびＰＣＩバスを占有することなく，他のイニシエータへの解放機会を増やし，ＰＣＩバスシステムのパフォーマンスを高めることが可能となる。
【発明を実施するための最良の形態】
【００３０】
以下に添付図面を参照しながら，本発明の好適な実施の形態について詳細に説明する。なお，本明細書及び図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００３１】
（第１の実施形態：ＰＣＩバスシステム）
ＰＣＩバスは，従来のＩＳＡバス等とは違いＣＰＵと独立して動作することが可能なバスである。従って，ＰＣＩバスには複数のイニシエータやターゲットを接続することができ，１つのＰＣＩバスを重複して使用することが可能である。
【００３２】
ＰＣＩバスの特徴としては，一部を除いた全ての信号線がＰＣＩバスクロックに同期して動作し，また，ＩＳＡバスなどの汎用バスにおいて使用されていたメモリ空間とＩ／Ｏ空間，読み出しと書き込みといった相違する制御線がなく，このような信号の区別をバスコマンドと呼ばれる４本の信号線で行っている。また，プラグ＆プレイに対応しているのも特徴の１つである。
【００３３】
図１は，ＰＣＩバスシステムの構成を示すブロック図である。上記ＰＣＩバスシステムは，ＣＰＵ１１０と，メモリ１１２と，メモリコントローラ１１４と，ローカルバス１１６と，ローカル−ＰＣＩブリッジ１２０と，ＰＣＩバス１２２と，ＰＣＩデバイス１２４と，ＰＣＩ−拡張ブリッジ１３０と，拡張バス１３２と，拡張デバイス１３４とを含んで構成される。
【００３４】
上記ＣＰＵ１１０は，ローカルバス１１６に接続された各デバイスを制御する中央処理装置である。例えば，ローカルバス１１６とメモリコントローラ１１４を介してメモリ１１２にデータを書き込む。上記メモリ１１２は，主にＣＰＵ１１０で扱われるプログラムやスタックデータを記憶する。上記メモリコントローラ１１４は，メモリ１１２へのデータの読み出しおよび書き込みを制御する。このメモリコントローラ１１４によりローカル−ＰＣＩブリッジ１２０からのメモリ１１２へのアクセスを受け付けることができ，例えばＰＣＩバス１２２側からメモリ１１２を参照することも可能となる。上記ローカルバス１１６は，例えば１００ＭＨｚの内部クロックに同期してローカルバス１１６に接続された各デバイスのデータの転送を行う。
【００３５】
上記ローカル−ＰＣＩブリッジ１２０は，ローカルバス１１６とＰＣＩバス１２２とを中継し，アービタ機能も有する。このローカル−ＰＣＩブリッジ１２０により，ローカルバス１１６とＰＣＩバス１２２が独立して動作することができる。上記ＰＣＩバス１２２は，ＰＣＩバス１２２に接続された各デバイス１２４やブリッジ１２０，１３０をＰＣＩバス規格によって相互に接続する。
【００３６】
上記ＰＣＩ−拡張ブリッジ１３０は，ＰＣＩバス１２２と拡張バス１３２とを中継する。上記拡張バス１３２は，拡張バス１３２に接続された拡張デバイス１３４を相互に接続する。
【００３７】
ＰＣＩバスシステムでは，ＰＣＩバス１２２を利用してアドレス線をドライブし，データ転送の相手にメモリの読み出しやＩ／Ｏの書き込みのバスコマンドを送るマスタデバイスをイニシエータと呼び，データの読出し，書き込み要求を受けるデバイスをターゲットと呼ぶ。図１では，ＣＰＵ１１０，ローカル−ＰＣＩブリッジ１２０，ＰＣＩデバイス１２４，ＰＣＩ−拡張ブリッジ１３０等はイニシエータとして動作することができ，ＰＣＩデバイス１２４，ＰＣＩ−拡張ブリッジ１３０，拡張デバイス１３４はターゲットとして動作することができる。
【００３８】
さらに，ＰＣＩバスシステムでは調停方式が採用されており，特定の時間においては特定のデバイスのみイニシエータとして動作していることになる。また，イニシエータは，調停デバイスとしてのアービタ（通常，ローカル−ＰＣＩブリッジ１２０が兼ねる。）に対して，ＰＣＩバス１２２の使用要求を出し，アービタから使用許可を得ることによって，ＰＣＩバス１２２を利用することができる。
【００３９】
上述したようにローカルバス１１６は，１００ＭＨｚのクロックに同期してデータ転送が行われ，他方，ＰＣＩバス１２２や拡張バス１３２は，それぞれ３３ＭＨｚおよび３３ＭＨｚ以下のクロックに同期してデータ転送が行われている。このようなバス間のクロックの違いや，単純にターゲットとしてのＰＣＩデバイス１２４の処理能力によってアクセスにかかる時間に差が生じてくる。例えば，ＣＰＵ１１０がＰＣＩバス１２２に接続されている低速のＰＣＩデバイス１２４からデータの読み出しを行った場合，ＣＰＵ１１０は，ＰＣＩデバイス１２４がデータを準備するまで間他の処理を行うことができず，かかるＣＰＵ１１０とＰＣＩデバイス１２４とにＰＣＩバスが占有され，他のデバイスはＰＣＩバスを利用することができない。
【００４０】
（第２の実施形態：リトライ要求）
上記のようなＰＣＩバスのロックを回避するため，ターゲットはイニシエータに対してリトライを要求し，一旦読み出し処理を停止する。イニシエータは，そのリトライ要求を受けてターゲットから再度データを読み出すといった処理を行う。このようなリトライ要求を以下で詳細に説明する。
【００４１】
先ず，イニシエータは，ローカル−ＰＣＩブリッジに設けられたアービタに対して１ビットのＲＥＱ＃をアサート（アクティブ）し，ＰＣＩバスの使用権を要求する。アービタは，ＲＥＱ＃をアサートされると１ビットのＧＮＴ＃をアサートし，イニシエータにＰＣＩバスの使用許可を与える。ＰＣＩバスの使用権を得たイニシエータは，ターゲットに対してデータの読み出しを行う。
【００４２】
図２は，ＰＣＩバス上でのデータの読み出しを示したタイミングチャートである。ここでは，ＣＬＫ，ＦＲＡＭＥ＃，ＩＲＤＹ＃，ＡＤ［３１：０］，Ｃ／ＢＥ［３：０］＃，ＤＥＶＳＥＬ＃，ＴＲＤＹ＃，ＳＴＯＰ＃の信号によって動作が示される。
【００４３】
上記ＣＬＫは，ＰＣＩバスの動作の基準となるクロック信号であり，リセットと割り込み信号以外の全ての信号は，このＣＬＫを基準に動作する。上記ＦＲＡＭＥ＃は，イニシエータがバスサイクルを開始する時にアサートする信号である。上記ＩＲＤＹ＃は，イニシエータがデータ転送可能状態にあるときアサートする信号である。上記ＡＤ［３１：０］は，アドレス／データバスであり，時分割で３２ｂｉｔの信号線が利用される。かかる信号線には，アドレスフェーズでアドレスが，データフェーズでデータが出力される。上記Ｃ／ＢＥ［３：０］＃は，ＡＤ［３１：０］同様時分割で４ｂｉｔの信号線が利用され，アドレスフェーズでバスコマンドがデータフェーズでバイトイネーブルが出力される。上記ＤＥＶＳＥＬ＃は，アクセスを受けたターゲットがイニシエータに対してアサートする信号であり，バスサイクルが終了するまでアサートし続ける。上記ＴＲＤＹ＃は，ターゲットがデータ転送可能状態にあるときアサートする信号であり，上記ＩＲＤＹ＃とＴＲＤＹ＃の両方がアサートされているときにデータの転送が行われる。上記ＳＴＯＰ＃はターゲットがイニシエータに対してバスサイクルを中断するときにアサートする信号であり，ＤＥＶＳＥＬ＃やＴＲＤＹ＃のディアサートと組み合わせていくつかの中断方法を実行できる。
【００４４】
イニシエータは，ターゲットを示すアドレスをＡＤ［３１：０］として送出する（Ｓ２１０）。ここで，ＡＤ［３１：０］は時分割多重化された信号であり，フェーズによってアドレスとデータが切り替えられる。また，同時にバスコマンド（例えば，メモリリード：“ＬＨＨＬ”）をＣ／ＢＥ［３：０］＃に出力し（Ｓ２１２），ＦＲＡＭＥ＃をアサートする（Ｓ２１４）。
【００４５】
ターゲットは，アドレスフェーズを認識し，アドレスとバスコマンドを取り込み，アドレスデコードを開始する。イニシエータは，ＦＲＡＭＥ＃をディアサートして，ＡＤ［３１：０］のドライブを切り離す（Ｓ２１６）。また，読み出すデータのバイト数をバイトイネーブルとしてＣ／ＢＥ［３：０］＃に出力し（Ｓ２２０），イニシエータの準備ができたことを示すためＩＲＤＹ＃をアサートする（Ｓ２２２）。
【００４６】
続いて，ターゲットは，ＤＥＶＳＥＬ＃をアクティブにし（Ｓ２３０），ターゲットがイニシエータからの転送要求に応答することを指示する。ここで，ターゲットがアドレスフェーズから３クロック以内にＤＥＶＳＥＬ＃応答を返せなかった場合は，ターゲットはイニシエータに認識してもらえずエラーとなる。従って，ターゲットがデータを所定期間内に準備できるか否かに拘わらず，ＤＥＶＳＥＬ＃を出力してバスサイクルに応答しなければならない。
【００４７】
ターゲットは，所定期間内にデータを準備できない場合，ＤＥＶＳＥＬ＃と共にＳＴＯＰ＃をアサートして（Ｓ２３２），イニシエータに対しバスサイクルの中断，即ちリトライを要求する。リトライ要求の際における処理を定めた規格として，ディレイドトランズアクションと呼ばれる処理方法がある。この規格によれば，イニシエータのバスサイクルに応答するのに時間がかかると判断したターゲットは，リトライを要求し，その後，準備ができた段階でイニシエータからリトライを受けた時に応答し，転送を成立させることが規定されている。
【００４８】
図３は，図２から所定の時間が経過した，ＰＣＩバス上でのデータの読み出しを示したタイミングチャートである。図２において既に説明した読み出しフェーズ（Ｓ２１０，Ｓ２１２，Ｓ２１４，Ｓ２１６，Ｓ２１８，Ｓ２２０，Ｓ２２２，Ｓ２３０）は，図３においても実質的に機能が同じなので重複説明を省略する。
【００４９】
図３の状態は，図２の状態と違い，ターゲットは所定時間の経過によりデータを出力する準備が整っている。従ってＤＥＶＳＥＬ＃のアサート（Ｓ２３０）後，データを出力し（Ｓ２３４），同時にＴＲＤＹ＃をアサートして（Ｓ２３６）イニシエータにデータ転送を行う。このようにイニシエータはＩＲＤＹ＃によって，ターゲットはＴＲＤＹ＃によってデータ転送のタイミングを決定できる。
【００５０】
しかし，ディレイドトランズアクションの処理を行っても，イニシエータは，次のリトライのタイミングが分からないため，一定時間が経過する度毎にターゲットに対してアクセスを繰り返す。従って，イニシエータのアクセスおよびターゲットのリトライ要求が，ＰＣＩバス上で何度も繰り返される結果が生じ，バスサイクルが浪費される。
【００５１】
（第３の実施形態：バス制御方法）
図４は，バス制御方法の流れを示したフローチャート図である。ここでは，かかるフローチャートを基に１バスサイクルにおけるバス制御方法を具体的に説明する。このバスサイクルとは，アクセスが一通り終了するサイクルであり，データの読み出しの場合，イニシエータが読み出し要求を行ってから実際にデータを取得するまでの期間を示す。
【００５２】
先ず，イニシエータは，ターゲットに対してデータのアクセスを要求する（Ｓ３１０）。
ターゲットは，このアクセスの要求に対して，当該ターゲットが所定時間内にアクセスが可能かどうか判断し（Ｓ３１２），アクセスが可能と判断された場合，イニシエータとデータのアクセスを実行する（Ｓ３１４）。
【００５３】
また，アクセス判断工程（Ｓ３１２）によってアクセスが不可能と判断された場合，先ず，同バスサイクルでアクセスが不可能だった回数である非アクセス回数が計数され（Ｓ３１６），非アクセス回数が所定数を超えているかどうかが判断される（Ｓ３１８）。ここで所定数を超えていると判断された場合，強制的に上記バスサイクルを終了し（Ｓ３２０），所定数を超えていないと判断された場合，上記イニシエータに対してリトライを要求する（Ｓ３２２）。
【００５４】
上記強制終了工程（Ｓ３２０）で強制的にバスサイクルを終了するために，ここでは，上記イニシエータと擬似的なアクセスであるダミーアクセスが行われる。例えば，イニシエータがターゲットのデータを読み出す場合，ターゲットから擬似的にデータを送信，即ちＦＦＦＦＦＦＦＦｈ等のダミーデータを送信する。このようなダミーデータの送信により，イニシエータは無意味なデータを得ることができ，擬似的にバスサイクルが閉じられる。
【００５５】
また，イニシエータがターゲットにデータを書き込む場合，ターゲットが擬似的にデータを受信，即ち本来データが転送されるべきところ以外のダミーメモリに格納される。このようなダミーメモリへの格納により，擬似的にバスサイクルが閉じられる。
【００５６】
上述したターゲットの工程が終了すると，イニシエータは，ターゲットからリトライ要求があったかどうか確認し（Ｓ３２４），リトライ要求があった場合，再度アクセスを要求する（Ｓ３２６）。また，ターゲットとデータのアクセスを実行した場合は，バスサイクルを終了する。ここでアクセスとは，イニシエータによるターゲットからのデータの読み出し，イニシエータからターゲットへのデータの書き込みのいずれかであるとしても良く，コンフィギュレーションメモリに対する読み出しまたは書き込みであるとしても良い。また，本実施形態では，通常のアクセスであるアクセス工程（Ｓ３１４）およびダミーアクセスを行う強制終了工程（Ｓ３２０）によるアクセスも含まれる。
【００５７】
上記のバス制御方法を実施することにより，一旦バスサイクルを強制的に終了させＰＣＩバスの解放機会を増やすことができる。従って，ターゲットの処理能力によってＰＣＩバスが占有される無意味な時間を有効に活用することが可能となる。このようなバスサイクルの強制終了によるデータの不完全性は，事後的に補う。この事後的に補う構成は第４の実施形態において詳細に述べる。
【００５８】
また，非アクセス計数工程Ｓ３１６等のシーケンスは，図４に示した流れに限られず，リトライ要求（Ｓ３２２）を所定回数で制限し，その後ダミーアクセス（Ｓ３２０）を行う構成であればあらゆる方法をとることが可能である。
【００５９】
次に，上記のバス制御方法と従来のバス制御方法との対比をイニシエータとターゲットとのやり取りに着目して説明する。ここでは，イニシエータがターゲットのデータを読み出す場合を挙げる。
【００６０】
図５は，従来のバス制御方法の流れを示した説明図である。先ず，イニシエータはターゲットに対して読み出し要求を行う（Ｓ３５０）。ターゲットはかかる読み出し要求に答えるべくデータを準備するが，処理能力の制約等によりデータを直ぐに出力できない場合がある。このような場合，上述したように，ＰＣＩバス信号のＳＴＯＰ＃等をアサートして（Ｓ３５２），イニシエータにリトライを要求する（Ｓ３５４）。イニシエータは，ＲＥＱ＃を一度ディアサートし，２クロック以上の時間をおいて再読み出し要求を行う（Ｓ３５６）。
【００６１】
このリトライ要求（Ｓ３５４）と再読み出し（Ｓ３５６）とはターゲットでデータが準備されるまで繰り返され，データが出力可能な状態になると（Ｓ３５８），ターゲットからイニシエータに当該データが転送される（Ｓ３６０）。その後，イニシエータは，受信したデータの処理を行う（Ｓ３６２）。
【００６２】
この場合，イニシエータからターゲットに最初のデータ読み出し要求があってから（Ｓ３５０），実際にデータがイニシエータに転送される（Ｓ３６０）までローカルバスおよびＰＣＩバスが占有されることになり，バスの帯域が無駄に消費される。上記リトライの本来の目的は，ＰＣＩバスの解放にあるが，ＰＣＩバスが解放されたからといってＣＰＵのロックが開放されるわけではない。
【００６３】
例えば，図１を参照し，イニシエータとしてのＣＰＵ１１０がターゲットとしてのＰＣＩデバイス１２４からデータを読み出す場合を想定する。両者を中継しているローカル−ＰＣＩブリッジ１２０は，ＰＣＩデバイス１２４からのリトライ要求によって，ＣＰＵ１１０とのローカルバス１１６を開放しないままデータを待ち続ける。従ってローカルバス１１６はリトライ状態の間ロックされ続け，結果としてＣＰＵ１１０は停止した状態になる。このときＣＰＵ１１０は，割り込みも受け付けなくなり，割り込み禁止時間が延長される。
【００６４】
図６は，本実施形態におけるバス制御方法の流れを示した説明図である。先ず，イニシエータはターゲットに対して読み出し要求を行う（Ｓ４００）。ターゲットはかかる読み出し要求に答えるべくデータを準備するが，上述したように処理能力の制約等によりデータを直ぐに出力できない場合がある。
【００６５】
上記の場合，この読み出しができないシーケンスを通る回数（非アクセス回数）を計数する。例えば，本工程は最初の読み出し要求に対するものなので，計数値は１となる。本実施形態では容易な理解のため非アクセス回数の上限値を３回としている。上記計数値１は上限値３以上ではないので，ターゲットはＰＣＩバス信号のＳＴＯＰ＃等をアサートし（Ｓ４０２），イニシエータに対してリトライを要求する（Ｓ４０４）。ここで非アクセス回数の上限値を３回としているが，かかる数値に限定されるわけではなく，整数であればもっと大きな値をとることもできる。
【００６６】
次に，ターゲットからリトライ要求を受けたイニシエータは，ターゲットに対してデータの再読み出しを行う（Ｓ４０６）。このリトライ要求（Ｓ４０４）と再読み出し（Ｓ４０６）とは数回繰り返される。しかし，ターゲットは，非アクセス回数が上限値３以上になると，上記リトライ要求（Ｓ４０４）を行わず（Ｓ４０８），任意のデータをダミーデータとして転送する（Ｓ４１０）。このＳ４０８の工程では，リトライ回数が制限されたことを示すフラグを立てるとしても良い。
【００６７】
イニシエータは，上記ダミーデータを受けて，一旦バスサイクルを終了する（Ｓ４１２）。この間にイニシエータ，例えばＣＰＵはローカルバスおよびＰＣＩバスを利用して別の処理を行うことができ，かつ，他のＰＣＩデバイスがＰＣＩバスを使用することができる。イニシエータは，一定時間経過毎に上記のバスサイクルを行い，ターゲットがデータを準備できると（Ｓ４１４），データを取得する（Ｓ４１６）。その後，イニシエータは，受信したデータの処理を行う（Ｓ４１８）。
【００６８】
上記のバスの開放に関して，例えば，図１を参照し，イニシエータとしてのＣＰＵ１１０がターゲットとしてのＰＣＩデバイス１２４からデータを読み出す場合を想定する。ローカル−ＰＣＩブリッジ１２０は，ＰＣＩデバイス１２４からのリトライ要求によって，ＣＰＵ１１０とのローカルバス１１６を一定期間開放しない。しかし，リトライが所定の回数を超えるとＣＰＵ１１０にダミーデータが転送され，上記リトライ状態によるバスの占有は解かれる。このときローカルバス１１６およびＰＣＩバス１２２の両バスが開放される。従って，ＣＰＵ１１０は，割り込み等の処理を受け付けられる状態になる。
【００６９】
（第４の実施形態：バス制御方法）
図７は，バス制御方法の流れを示したフローチャート図である。ここでは，かかるフローチャートを基に，１ブロックサイクルにおけるバス制御方法を具体的に説明する。ここでブロックサイクルとは，第３の実施形態で示したバスサイクルを束ねたものであり，ブロックとは，イニシエータによりアクセスが行われるデータの集合をいう。本実施形態においては，上記ブロックとして，４回のバスサイクルによって読み出す，または書き込むことが可能な４つの連続したデータを挙げる。
【００７０】
先ず，イニシエータは，ターゲットに対してデータのアクセスを要求し，ターゲットは最終的にデータもしくはダミーデータをアクセスする（Ｓ４３０）。このような動作をデータの数分，即ち４回繰り返す（Ｓ４３０，Ｓ４３２，Ｓ４３４，Ｓ４３６）。ここに示した各々のバスサイクルで，第３の実施形態において説明したバス制御方法がとられている。このバスサイクルが行われる各ターゲットには各々フラグが用意され，非アクセス回数が上限値を超えた場合，各々のサイクルにおいてこのフラグがセットされる。図７においては，バスサイクル２（Ｓ４３２）およびバスサイクル３（Ｓ４３４）で上記の上限値を超え，フラグが立った状態になっている。
【００７１】
続いて，イニシエータは，ブロックサイクルのアクセスが正常であったかどうか，即ち各ターゲットにフラグが立っているかどうかを判断する（Ｓ４３８）。ここで，フラグが立っている（ここでは１で表される。）ときは，アクセスが正常でない場合があったと判断され，ブロックサイクルが再実行される。
【００７２】
上記のフラグが立った状態は，ブロックサイクルの各バスサイクルにおいて，バスサイクルの強制終了が少なくとも１回発生していることを示している。このような場合，アクセスしたデータの中に強制終了工程によるダミーデータが少なくとも１つ入っていて，イニシエータはブロックとして利用することができない。
【００７３】
このようにブロックサイクルのアクセスが正常でない場合は，かかるアクセスによるブロックを無視し，再度，ブロックサイクルを行うことによって完全なブロックを得る。
【００７４】
また，図７の例では，リトライ回数を超えた時点で，ダミーデータをイニシエータに転送すると同時に，無効になったデータのアドレス，例えばバスサイクル２（Ｓ４３２）のターゲットをハードウェア的にスタックすることも可能である。しかし，仮にバスサイクル２（Ｓ４３２）のターゲットのアドレスをスタックしたとしても，次のバスサイクル３（Ｓ４３４）で同様のスタックが発生し，最初のデータアドレスが次に無効になったデータアドレスによって上書きされる。従って，少なくとも１つ無効になったデータが含まれるブロックは信頼性が無いことになる。また，このような問題を回避できたとしても，スタックされたアドレスを読み込む処理は上記ブロックサイクルより遅いため有効ではない。
【００７５】
本実施形態では，１つでも無効になったデータが存在するブロックは無視し，無効になったデータが存在しない，即ちフラグが立っていないブロックのみを正規のブロックとする。従って，無効になったデータのアドレスをスタックする必要はなく，フラグのみの構成によって上記ブロック判断工程が行われる。
【００７６】
また，図７に示したようにターゲット毎にフラグを準備する構成を取るとしても良いが，ブロックサイクルに対応した全てのターゲットで１つのフラグを準備するとしても良い。この場合，非アクセス回数が上限値を超えたとき，即ち，無効となったアクセスが発生したときに当該フラグをセットする。このフラグはフリップフロップ機能を有し，１度セットされるとリセットされるまでフラグの状態を維持する。従って，フラグが立っているということは，少なくとも１つ無効となったデータが存在するということになる。このフラグは，イニシエータによって参照された後にリセットされる。
【００７７】
以下に，上記のバス制御方法と従来のバス制御方法との対比をローカルバスおよびＰＣＩバスの占有時間の観点から説明する。ここでは，イニシエータがターゲットのデータを読み出す場合を想定し，４回のバスサイクルから構成されるブロックサイクルを挙げている。
【００７８】
図８は，従来のバス制御方法の流れを示した説明図である。先ず，イニシエータはターゲットに対して第１データの読み出し要求を行う（Ｓ４５０）。ターゲットはかかる読み出し要求に対して第１データを転送する（Ｓ４５２）。このようなバスサイクル（Ｓ４５４）が４回繰り返される。このバスサイクル内では，ローカルバスおよびＰＣＩバスが占有され，ＣＰＵは他の割り込みを受け付けない。この第１データのバスサイクルが終了するとローカルバスおよびＰＣＩバスは開放される（Ｓ４５６）。イニシエータは次のデータの読み出し準備ができるとまた読み出しのバスサイクルに入る（Ｓ４５８）。
【００７９】
イニシエータが第３データを読み出そうと試みたとき，対応するターゲットの処理能力によって，ターゲットのイニシエータに対するリトライ要求と，そのリトライ要求に応じてイニシエータがターゲットに再読み出しを行うリトライ状態（Ｓ４６０）が生じる。この間は，ローカルバスおよびＰＣＩバスが占有され，ＣＰＵは他の割り込みを受け付けることができない。このようなリトライ状態（Ｓ４６０）によって無意味な時間によるパフォーマンスの低下が起こる。やがてイニシエータは，第３データのバスサイクルを終了し，第４データを読み出すと（Ｓ４６２）当該ブロックサイクルを終了する。
【００８０】
図９は，本実施形態におけるバス制御方法の流れを示した説明図である。先ず，イニシエータはターゲットに対して第１データの読み出しバスサイクルを実行する（Ｓ４７０）。このバスサイクル内では，ローカルバスおよびＰＣＩバスが占有され，ＣＰＵは他の割り込みを受け付けない。この第１データのバスサイクルが終了するとローカルバスおよびＰＣＩバスは開放される（Ｓ４７２）。イニシエータは次のデータの読み出し準備ができるとまた読み出しのバスサイクルに入る（Ｓ４７４）。
【００８１】
イニシエータが第３データを読み出そうと試みたとき，対応するターゲットはデータの準備ができずリトライを要求する。従来は，ターゲット内でデータが準備されるまでこのリトライ要求が続いていたが，本実施形態によると，リトライ要求は所定回数で打ち切られイニシエータにはダミーデータが転送される。このとき第３データのバスサイクルではリトライ要求を打ち切ったことを示すフラグがセットされている。
【００８２】
同様に第４データのバスサイクル（Ｓ４８０）を終了すると，イニシエータはブロック判断工程（Ｓ４８２）を実施する。詳細には，イニシエータが，第１〜４のデータを取得するブロックサイクル（Ｓ４８４）が完了した後に，ブロックサイクル（Ｓ４８４）のアクセスが正常であったかどうか，即ち少なくとも１つのバスサイクルにおいてフラグが立っているかどうかを判断する。本実施形態においては，第３データの読み出しにおいてフラグがセットされているので，かかるブロックサイクルにより取得したブロックは無視される。
【００８３】
このようなブロックサイクルはフラグが立っている間繰り返される（Ｓ４８６）。ターゲットが第３データの準備が完了すると，第３データ読み出しバスサイクル（Ｓ４８８）でフラグがリセットされ，ブロックサイクルにはフラグが立っているターゲットが存在しなくなる。従って，ブロック判断工程（Ｓ４９０）でブロックサイクルが正常であったことが確認され，かかるブロックが正規のデータとして格納される。
【００８４】
このようなバス制御方法をとったとしても，ターゲットがデータを準備できる時間は，ターゲットのデータ処理能力に依存するので，ＰＣＩバスの処理に影響されない。従って，上述のブロックサイクルを繰り返す構成によっても，エラーのない正規のブロックを取得できる時間は，従来となんら変わらない。従来と比較した相違点は，従来バスサイクルがロックされることにより解放されなかったＰＣＩバスを短い間隔で解放し，他のデバイスがその開放時間を利用することが可能となり，ＰＣＩバスを有効に利用できることである。
【００８５】
このようなバス制御方法は，ブロックサイクルのバスサイクル総数が所定数以下である場合に有効である。上記バスサイクルの総数が多い場合，その分，一回のブロックサイクルが長時間を要することになり，ブロックサイクルを何回も繰り返す構成が却って障害になる。従って，バスサイクル総数が，例えば１６以下といった場合にのみ，本バス制御方法を適用するとしても良い。
【００８６】
（第５の実施形態：バス制御システム）
図１０は，バス制御システムの概略を示すブロック図である。上記バス制御システムは，イニシエータ５１０と，ターゲット５１２と，両デバイスを中継するＰＣＩバス５１４とを含んで構成される。
【００８７】
上記イニシエータ５１０は，アクセス要求手段５２０と，リトライ判断手段５２２と，ブロック判断手段５２４とを含み，上記ターゲット５１２は，アクセス手段５３０と，非アクセス計数手段５３２と，強制終了手段５３４と，リトライ要求手段５３６とを含んでいる。
【００８８】
上記アクセス要求手段５２０は，ターゲット５１２に対してデータのアクセス，例えば，データの読み出しやデータの書き込みを要求する。
【００８９】
上記リトライ判断手段５２２は，ターゲット５１２からＰＣＩバス５１４を介してリトライ要求があった場合，ターゲット５１２に対して再度アクセスを要求し，ターゲット５１２とデータのアクセスが実行されている場合，当該バスサイクルを終了する。
【００９０】
上記ブロック判断手段５２４は，上記バスサイクルを含む１または２以上のバスサイクルの組により形成されたブロックサイクルが完了した後に，ブロックサイクルのアクセスが正常であったかどうか即ち，ターゲット５１２にフラグが立っているかどうかを判断する。ブロックサイクルの再実行は，フラグが立っている間繰り返される。
【００９１】
上記アクセス手段５３０は，イニシエータ５１０からのアクセスの要求に対して所定時間内にアクセスが可能であれば，イニシエータ５１０とデータのアクセスを実行する。
【００９２】
上記非アクセス計数手段５３２は，イニシエータ５１０からのアクセスの要求に対して所定時間内にアクセスが不可能ならば，同バスサイクルでアクセスが不可能だった回数である非アクセス回数を計数する。
【００９３】
上記強制終了手段５３４は，非アクセス計数手段５３２において，非アクセス回数が所定数を超えたとき，強制的にバスサイクルを終了する。強制終了手段５３４は，イニシエータ５１０と擬似的にアクセスすることによって行われるとしても良く，上記非アクセス回数が所定数を超えたとき，さらにフラグを立てるとしても良い。
【００９４】
上記リトライ要求手段５３６は，非アクセス計数手段５３２において，非アクセス回数が所定数を超えていなければ，イニシエータ５１０に対してリトライを要求する。
【００９５】
上記バス制御システムにおいて，コンピュータをしてイニシエータ５１０として機能させるコンピュータプログラムも提供される。また，ターゲット５１２は，ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｅｄ  ＩＣ）等によりハードウェアで実現されるとしても良い。
【００９６】
（第６の実施形態：ＰＣＩバスシステムへの実装）
次に，上記のバス制御システムを実際に組み込んだ場合について説明する。本実施形態ではＰＣＩバスにＬｉｎｕｘをベースとしたシステムと，μＩＴＲＯＮをベースとしたシステムとが接続されている。
【００９７】
図１１は，本実施形態におけるＰＣＩバスシステムの概略を示したブロック図である。上記ＰＣＩバスシステムは，ＰＣＩバス６１０と，ＰＣＩ−ＰＣＩブリッジ６１２と，Ｌｉｎｕｘ領域６１４と，μＩＴＲＯＮ領域６１６とを含んで構成される。上記Ｌｉｎｕｘ領域６１４は，Ｌｉｎｕｘ（Ｕｎｉｘ（登録商標）系のＯＳ）をベースとして動作するローカル領域であり，主にネットワークに関する処理を行う。上記μＩＴＲＯＮ領域６１６は，μＩＴＲＯＮ（Ｍｉｃｒｏ  Ｉｎｄｕｓｔｒｉａｌ  ＴＲＯＮ：機器組み込み用のリアルタイムおよびマルチタスクＯＳ）をベースとして動作するローカル領域であり，主にＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）に関する，例えば映像のフレーム単位の処理を行う。
【００９８】
上記Ｌｉｎｕｘ領域６１４と，μＩＴＲＯＮ領域６１６とは，互いに連携を取りながらＰＣＩ−ＰＣＩブリッジ６１２の制御を行い，上位であるＬｉｎｕｘ領域６１４のプロセスと，下位であるμＩＴＲＯＮ領域６１６のユーザによるタスクとのインタフェースを提供する。
【００９９】
上記ＰＣＩ−ＰＣＩブリッジ６１２は，システム上にある複数のＰＣＩバス６１０同士を結合するためのＰＣＩデバイスである。単一のＰＣＩバス６１０を使用した場合，サポートできるＰＣＩデバイスの数は電気的に制限されるので，ＰＣＩ−ＰＣＩブリッジ６１２を使用して多くのＰＣＩバスを加え，ＰＣＩバスシステムが扱うことのできるＰＣＩデバイスを増やす。これは，高いパフォーマンスを要求されるサーバの場合特に重要である。上述のＬｉｎｕｘでは，ＰＣＩ−ＰＣＩブリッジ６１２を完全にサポートしている。
【０１００】
また，ＰＣＩ−ＰＣＩブリッジ６１２は，アドレス変換機能やＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）キューも内蔵しており，後述するメイルボックスのメッセージパッシングに利用される。
【０１０１】
上記Ｌｉｎｕｘ領域６１４は，ローカル−ＰＣＩブリッジ６２０と，Ｌｉｎｕｘローカルバス６２２と，ＣＰＵ６２４と，ＥＥＰＲＯＭ６２６と，ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）６２８とを含んで構成される。
【０１０２】
上記ローカル−ＰＣＩブリッジ６２０は，Ｌｉｎｕｘローカルバス６２２とＰＣＩバス６１０とを中継する。このローカル−ＰＣＩブリッジ６２０により，Ｌｉｎｕｘローカルバス６２２とＰＣＩバス６１０が独立して動作することが可能となる。
【０１０３】
上記ＣＰＵ６２４は，Ｌｉｎｕｘローカルバス６２２を介してＬｉｎｕｘ領域６１４の各デバイスを制御する。例えば，フラッシュメモリとしてのＥＥＰＲＯＭ６２６のプログラムを読み出し，かかるプログラムを遂行し，ＳＤＲＡＭ６２８にデータを書き込む等の処理を行う。上記ＥＥＰＲＯＭ６２６およびＳＤＲＡＭ６２８は，メモリコントローラも含んで構成される。
【０１０４】
上記μＩＴＲＯＮ領域６１６は，ローカル−ＰＣＩブリッジ６３０と，μＩＴＲＯＮローカルバス６３２と，ＣＰＵ６３４と，ＥＥＰＲＯＭ６３６と，ＳＤＲＡＭ６３８とを含んで構成される。
【０１０５】
上記ローカル−ＰＣＩブリッジ６３０は，μＩＴＲＯＮローカルバス６３２とＰＣＩバス６１０とを中継する。このローカル−ＰＣＩブリッジ６３０により，μＩＴＲＯＮローカルバス６３２とＰＣＩバス６１０が独立して動作することが可能となる。
【０１０６】
上記ＣＰＵ６３４は，上記Ｌｉｎｕｘ領域６１４同様，μＩＴＲＯＮローカルバス６３２を介してμＩＴＲＯＮ領域６１６の各デバイスを制御する。例えば，フラッシュメモリとしてのＥＥＰＲＯＭ６３６のプログラムを読み出し，かかるプログラムを遂行し，ＳＤＲＡＭ６３８にデータを書き込む等の処理を行う。上記ＥＥＰＲＯＭ６３６およびＳＤＲＡＭ６３８は，メモリコントローラも含んで構成される。
【０１０７】
上記Ｌｉｎｕｘ領域６１４と，μＩＴＲＯＮ領域６１６とのデータ通信は，一部を除いて各領域に設けられたＳＤＲＡＭを利用して行う。ここでは，データ通信の単位をメイルボックスと呼び，このメイルボックスを送受信することでお互いのデータを交換する。
【０１０８】
上記メイルボックスは，例えば１６以下のバスサイクルによって読み出されるブロックである。これは，本実施形態に上述したバス制御方法を適用するためである。
【０１０９】
このメイルボックスの送受信は，特別な動作を伴う。即ち，メイルボックスを送信する場合，先ず自身の領域のＳＤＲＡＭにメイルボックスを書き込み，そのメイルボックスを相手のＣＰＵから読み出してもらうという方式を採用している。以下に，かかる読み出しの手順を簡単に説明する。
【０１１０】
図１２は，Ｌｉｎｕｘ領域６１４からμＩＴＲＯＮ領域６１６にメイルボックスを送信する手順を示したブロック図である。図１１のＰＣＩバスシステムにおいて既に述べた構成に関しては，実質的に機能が同一なので重複説明を省略する。
【０１１１】
Ｌｉｎｕｘ領域６１４からμＩＴＲＯＮ領域６１６にメイルボックスを送信する場合，先ず，Ｌｉｎｕｘ領域６１４のＣＰＵ６２４は，かかるメイルボックスを同じＬｉｎｕｘ領域６１４にあるＳＤＲＡＭ６２８に準備する（１）。次に，このメイルボックスのＳＤＲＡＭ６２８におけるアドレスを含んだメイルボックス情報を，ＰＣＩブリッジ６１０を経由してＰＣＩ−ＰＣＩブリッジ６１２のＦＩＦＯ６５０に送信する（２）。μＩＴＲＯＮ領域６１６のＣＰＵ６３４は，ＦＩＦＯ６５０からの割り込みによって，Ｌｉｎｕｘ領域６１４がメイルボックスの送信を要求していることを知り（３），ＰＣＩバス６１０を介してＳＤＲＡＭ６２８から当該メイルボックスを読み出す（４）。
【０１１２】
図１３は，μＩＴＲＯＮ領域６１６からＬｉｎｕｘ領域６１４にメイルボックスを送信する手順を示したブロック図である。
【０１１３】
この場合も上述した図１２の場合と同様に，先ず，μＩＴＲＯＮ領域６１６のＣＰＵ６３４は，かかるメイルボックスを同じμＩＴＲＯＮ領域６１６にあるＳＤＲＡＭ６３８に準備する（１）。次に，このメイルボックスのＳＤＲＡＭ６３８におけるアドレスを含んだメイルボックス情報を，ＰＣＩブリッジ６１０を経由してＰＣＩ−ＰＣＩブリッジ６１２のＦＩＦＯ６５２に送信する（２）。Ｌｉｎｕｘ領域６１４のＣＰＵ６２４は，ＦＩＦＯ６５２からの割り込みによって，μＩＴＲＯＮ領域６１６がメイルボックスの送信を要求していることを知り（３），ＰＣＩバス６１０を介してＳＤＲＡＭ６３８から当該メイルボックスを読み出す（４）。
【０１１４】
このように各々の領域のＣＰＵは，自身のＳＤＲＡＭを利用して他の領域にデータを転送することができ，かつ他の領域のＳＤＲＡＭから自由にデータを参照することができる。本実施形態は，ＰＣＩバス６１０を介したアクセスとして，読み出しのみを行うことを特徴としている。例えば，ＰＣＩバスを介して他のデバイスに書き込みを行った場合，その書き込みがいつ反映されるか不定であるが，上記の構成によると，自身のメモリに書き込んだデータは早期に確定され，そのデータを確実に送信することができる。上記に示したような他の領域のＳＤＲＡＭから読み出されるデータとしては，他のＣＰＵが管理している，アワーズメータ，ドライブステータス，協調コマンドに関する情報等がある。
【０１１５】
また，上記のＰＣＩバスシステムでは，μＩＴＲＯＮ領域６１６のＣＰＵ６３４が何らかの原因により動作しなくなった場合でも，ローカル−ＰＣＩブリッジ６３０からＳＤＲＡＭ６３８にアクセスすることができる。即ち，Ｌｉｎｕｘ領域６１４のＣＰＵ６２４からμＩＴＲＯＮ領域６１６のＳＤＲＡＭ６３８のデータを読み出すことが可能であり，当該ＰＣＩバスシステムが全てダウンしてしまうことはない。また，Ｌｉｎｕｘ領域６１４のＣＰＵ６２４がＳＤＲＡＭ６３８のデータを利用してμＩＴＲＯＮ領域６１６のＣＰＵ６３４をデバッグすることも可能となる。当該ＰＣＩバスシステムは，読み出しのみにより各領域間のデータ通信を行っているので，ＣＰＵ６３４の動作不能により間違ったデータが書き込まれる心配もない。
【０１１６】
さらに，上記のようにＰＣＩバス６１０に第１〜５の実施形態で述べたバス制御方法を適用することによって，ＰＣＩバスを介してデータの読み出しを確実に行うことができ，かつ，ローカルバスやＰＣＩバスを有効利用することが可能になる。本実施形態のメイルボックスは少ないバスサイクルからなるブロックで形成されているため，ブロックサイクルを何回も繰り返す構成が障害になることがない。またデータの数が多いブロックは，別途ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を利用して送受信されるとしても良い。
【０１１７】
以上，添付図面を参照しながら本発明の好適な実施形態について説明したが，本発明は係る例に限定されないことは言うまでもない。当業者であれば，特許請求の範囲に記載された範疇内において，各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１１８】
例えば，上述の実施形態ではＣＰＵやＳＤＲＡＭといった具体的なデバイスを挙げて説明しているが，イニシエータやターゲットとして機能するデバイスであれば，置き換えて考えることもできる。また，上記バス制御方法の具体的な実施形態としてフローチャートを挙げているが，同目的を達成するため当業者が容易に考えつく範囲の変更は可能である。
【０１１９】
また，上記では，非アクセス回数を計数しているが，リトライ回数を計数する構成としてもよく，非アクセスまたはリトライを含むバスサイクルの経過時間を計数し，一定時間でバスサイクルを強制的に終了する構成をとることも可能である。
【産業上の利用可能性】
【０１２０】
本発明は，ＰＣＩバスを利用した，バス制御方法，バス制御システム，イニシエータ，ターゲットおよびそのコンピュータプログラムに適用可能である。
【図面の簡単な説明】
【０１２１】
【図１】ＰＣＩバスシステムの構成を示すブロック図である。
【図２】ＰＣＩバス上でのデータの読み出しを示したタイミングチャートである。
【図３】ＰＣＩバス上でのデータの読み出しを示したタイミングチャートである。
【図４】バス制御方法の流れを示したフローチャート図である。
【図５】従来のバス制御方法の流れを示した説明図である。
【図６】バス制御方法の流れを示した説明図である。
【図７】バス制御方法の流れを示したフローチャート図である。
【図８】従来のバス制御方法の流れを示した説明図である。
【図９】バス制御方法の流れを示した説明図である。
【図１０】バス制御システムの概略を示すブロック図である。
【図１１】ＰＣＩバスシステムの概略を示したブロック図である。
【図１２】Ｌｉｎｕｘ領域からμＩＴＲＯＮ領域にメイルボックスを送信する手順を示したブロック図である。
【図１３】μＩＴＲＯＮ領域からＬｉｎｕｘ領域にメイルボックスを送信する手順を示したブロック図である。
【符号の説明】
【０１２２】
Ｓ３１０  アクセス要求工程
Ｓ３１２  アクセス判断工程
Ｓ３１４  アクセス工程
Ｓ３１６  非アクセス計数工程
Ｓ３１８  回数判断工程
Ｓ３２０  強制終了工程
Ｓ３２２  リトライ要求工程
Ｓ３２４，Ｓ３２６  リトライ判断工程
Ｓ４３８  ブロック判断工程
５１０  イニシエータ
５１２  ターゲット
５２０  アクセス要求手段
５２２  リトライ判断手段
５２４  ブロック判断手段
５３０  アクセス手段
５３２  非アクセス計数手段
５３４  強制終了手段
５３６  リトライ要求手段
【図１】
2005235057.tif 000003
【図２】
2005235057.tif 000004
【図３】
2005235057.tif 000005
【図４】
2005235057.tif 000006
【図５】
2005235057.tif 000007
【図６】
2005235057.tif 000008
【図７】
2005235057.tif 000009
【図８】
2005235057.tif 000010
【図９】
2005235057.tif 000011
【図１０】
2005235057.tif 000012
【図１１】
2005235057.tif 000013
【図１２】
2005235057.tif 000014
【図１３】
2005235057.tif 000015