(57)【要約】【課題】デバイスの優先順位を任意に設定することができ、デバイス間のバス使用権の競合が生じた場合に、システムの動作状況に応じた最適な調停を行うことができるバス調停装置及びバス調停方法を提供する。【解決手段】デバイス１〜４の各々に対応する順番レジスタ５２、初期値レジスタ５４及びカウンタレジスタ５６には、カウント値を監視する順番、初期値、及びカウント値が各々保持されている。順番レジスタ５２及び初期値レジスタ５４はプログラマブルであり、カウント値を監視する順番やカウント初期値を、システムの動作状況に応じて適宜書き換えることができる。バス調停回路４２は、デバイス１〜４のカウンタレジスタ５６のカウント値を定期的に監視し、カウント値が所定値（例えば「０」）になったデバイスだけが調停の対象とされる。調停の対象とされたデバイスの優先順位は、順番レジスタ５２で設定された順番に従って決定される。【選択図】図２
2008117292.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続された複数のデバイスのバス使用要求を調停するバス調停装置であって、
設定された初期値を保持する初期値レジスタと、前記初期値レジスタに設定された初期値からカウントを開始し、カウント値の監視が実行される毎にカウント値を更新してカウント値を保持すると共に、カウント値が所定値に到達すると前記調停後にカウント値を設定された初期値にリセットするカウンタレジスタとを各々含み、前記複数のデバイスの各々に対応して設けられた複数のレジスタ群と、
予め設定された監視の順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視する監視手段と、更新されたカウント値が前記所定値と一致するデバイスを調停対象として選択する選択手段と、選択されたデバイスのバス使用要求を確認する確認手段と、複数のデバイスからのバス使用要求が確認された場合に、前記監視の順番に従って各デバイスの優先順位を決定する順位決定手段と、決定された優先順位に基づいて所定のデバイスにバスの使用を許可する許可手段と、を備えたバス調停回路と、
を含むことを特徴とするバス調停装置。
【請求項２】
バスに接続された複数のデバイスのバス使用要求を調停するバス調停装置であって、
設定された初期値を保持する初期値レジスタと、前記初期値レジスタに設定された初期値からカウントを開始し、カウント値の監視が実行される毎にカウント値を更新してカウント値を保持すると共に、カウント値が所定値に到達すると前記調停後にカウント値を設定された初期値にリセットするカウンタレジスタと、カウント値を監視する順番を保持する順番レジスタとを各々含み、前記複数のデバイスの各々に対応して設けられた複数のレジスタ群と、
前記順番レジスタが保持する順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視する監視手段と、更新されたカウント値が前記所定値と一致するデバイスを調停対象として選択する選択手段と、選択されたデバイスのバス使用要求を確認する確認手段と、複数のデバイスからのバス使用要求が確認された場合に、前記順番レジスタが保持する順番に従って各デバイスの優先順位を決定する順位決定手段と、決定された優先順位に基づいて所定のデバイスにバスの使用を許可する許可手段と、を備えたバス調停回路と、
を含むことを特徴とするバス調停装置。
【請求項３】
前記初期値レジスタは、書き換え可能に構成されたことを特徴とする請求項１又は２に記載のバス調停装置。
【請求項４】
前記順番レジスタは、書き換え可能に構成されたことを特徴とする請求項２又は３に記載のバス調停装置。
【請求項５】
前記カウンタレジスタは、初期値レジスタに設定された初期値からカウントダウンを開始し、カウント値の監視が実行される毎にカウントダウンを行ってカウント値を更新し、カウント値が０に到達するとカウント値を設定された初期値にリセットすることを特徴とする請求項１乃至４のいずれか１項に記載のバス調停装置。
【請求項６】
前記監視手段は、予め設定された監視の順番に従って昇順又は降順で前記複数のデバイスの前記カウンタレジスタのカウント値を監視することを特徴とする請求項１乃至５のいずれか１項に記載のバス調停装置。
【請求項７】
バスに接続された複数のデバイスのバス使用要求を調停するバス調停方法であって、
複数のデバイス毎に、初期値レジスタにカウントを開始する初期値を設定すると共に、カウンタレジスタのカウント値を初期値に設定し、
複数のデバイス毎にカウント値を監視する順番を予め設定し、
予め設定された監視の順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視し、
カウント値の監視が実行される毎に、前記複数のデバイスの前記カウンタレジスタのカウント値を各々更新して、前記カウンタレジスタに保持し、
更新されたカウント値が所定値と一致するデバイスを調停対象として選択し、
選択されたデバイスのバス使用要求を確認し、
複数のデバイスからのバス使用要求が確認された場合に、前記監視の順番に従って各デバイスの優先順位を決定し、
決定された優先順位に基づいて所定のデバイスにバスの使用を許可し、
カウント値が前記所定値と一致した前記カウンタレジスタのカウント値を、設定された初期値にリセットする、
ことを特徴とするバス調停方法。
【請求項８】
バスに接続された複数のデバイスのバス使用要求を調停するバス調停方法であって、
複数のデバイス毎に、初期値レジスタにカウントを開始する初期値を設定すると共に、カウンタレジスタのカウント値を初期値に設定し、
複数のデバイス毎に順番レジスタにカウント値を監視する順番を設定し、
前記順番レジスタに設定された順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視し、
カウント値の監視が実行される毎に、前記複数のデバイスの前記カウンタレジスタのカウント値を各々更新して、前記カウンタレジスタに保持し、
更新されたカウント値が所定値と一致するデバイスを調停対象として選択し、
選択されたデバイスのバス使用要求を確認し、
複数のデバイスからのバス使用要求が確認された場合に、前記順番レジスタに設定された順番に従って各デバイスの優先順位を決定し、
決定された優先順位に基づいて所定のデバイスにバスの使用を許可し、
カウント値が前記所定値と一致した前記カウンタレジスタのカウント値を、設定された初期値にリセットする、
ことを特徴とするバス調停方法。
【請求項９】
前記初期値レジスタに設定された初期値を、バスの使用状況に応じて変更することを特徴とする請求項７又は８に記載のバス調停方法。
【請求項１０】
予め設定された監視の順番を、バスの使用状況に応じて変更することを特徴とする請求項７乃至９のいずれか１項に記載のバス調停方法。
【請求項１１】
前記カウンタレジスタは、初期値レジスタに設定された初期値からカウントダウンを開始し、カウント値の監視が実行される毎にカウントダウンを行ってカウント値を更新し、カウント値が０に到達するとカウント値を設定された初期値にリセットすることを特徴とする請求項７乃至１０のいずれか１項に記載のバス調停方法。
【請求項１２】
予め設定された監視の順番に従って昇順又は降順で前記複数のデバイスの前記カウンタレジスタのカウント値を監視することを特徴とする請求項７乃至１１のいずれか１項に記載のバス調停方法。
【請求項１３】
優先度の高いデバイスの初期値を、予め前記所定値に設定することを特徴とする請求項７乃至１２のいずれか１項に記載のバス調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス調停装置及びバス調停方法に係り、特に、複数のデバイスからのバス使用要求を調停するバス調停装置及びバス調停方法に関する。
【背景技術】
【０００２】
バスに接続されたデバイスは、バス使用権を取得して、データ転送を行うバスマスタとなる。１つのバスに複数のデバイスが接続されているシステムでは、デバイス間でバス使用要求の競合が発生する。このような競合が発生した場合に備え、通常のシステムには、複数のデバイスからのバス使用要求を調停（アービトレーション）し、１つのデバイスにバス使用許可を付与するバスアービタが設けられている。
【０００３】
バス使用許可を付与する優先順位は、固定プライオリティ方式やラウンドロビン方式に基づいて決定されるのが一般的である。固定プライオリティ方式は、予め定めた優先順位に従って調停を行う方式である。ラウンドロビン方式は、バス使用権を与えたデバイスの優先順位を、次の調停では最下位にする方式である。
【０００４】
これら従来の調停方式では、競合の発生頻度が高くなると、特定のデバイスがバスを独占してしまい、他のデバイスがバスを使用することができなくなる虞がある。この問題を解決するために、複数のデバイスを機能毎にグループ化し、階層的に調停を行うバスアービトレーション回路が提案されている（特許文献１）。このバスアービトレーション回路では、調停の対象を所定の機能を有するデバイスに絞り込むことにより、競合の頻度を低減している。
【特許文献１】特開平５−３５６６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の発明では、同じグループ内でのデバイスの優先順位は皆等しく、同じグループ内ではバス使用要求の競合を避けることができない。同じグループに属する複数のデバイスからのバス使用要求が競合した場合には、これらのバス使用要求を調停し、優先順位を付けて、バス使用許可を付与する１つのデバイスを決定しなければならない。
【０００６】
また、何れのデバイスを優先すべきかは、システムの動作状況に応じて変化する。複数のデバイスには、それぞれバスの占有時間、優先度、待機時間の最適値があり、またそれぞれの限界値がある。例えば、イーサネット（登録商標）コントローラは、一定時間毎にパケットの確認をする必要がある。また、ＵＳＢコントローラは、一定時間毎に接続先のＵＳＢデバイスと通信する必要がある。個々のデバイスがこの限界値を超えると、システムの動作が不安定となり、最悪の場合はシステムの動作が停止する。
【０００７】
本発明は、上記問題に鑑みなされたものであり、本発明の目的は、デバイスの優先順位を任意に設定することができ、デバイス間のバス使用権の競合が生じた場合に、システムの動作状況に応じた最適な調停を行うことができるバス調停装置及びバス調停方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために請求項１に記載の発明は、バスに接続された複数のデバイスのバス使用要求を調停するバス調停装置であって、設定された初期値を保持する初期値レジスタと、前記初期値レジスタに設定された初期値からカウントを開始し、カウント値の監視が実行される毎にカウント値を更新してカウント値を保持すると共に、カウント値が所定値に到達すると前記調停後にカウント値を設定された初期値にリセットするカウンタレジスタとを各々含み、前記複数のデバイスの各々に対応して設けられた複数のレジスタ群と、予め設定された監視の順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視する監視手段と、更新されたカウント値が前記所定値と一致するデバイスを調停対象として選択する選択手段と、選択されたデバイスのバス使用要求を確認する確認手段と、複数のデバイスからのバス使用要求が確認された場合に、前記監視の順番に従って各デバイスの優先順位を決定する順位決定手段と、決定された優先順位に基づいて所定のデバイスにバスの使用を許可する許可手段と、を備えたバス調停回路と、を含むことを特徴とするバス調停装置。
【０００９】
請求項２に記載の発明は、バスに接続された複数のデバイスのバス使用要求を調停するバス調停装置であって、設定された初期値を保持する初期値レジスタと、前記初期値レジスタに設定された初期値からカウントを開始し、カウント値の監視が実行される毎にカウント値を更新し、カウント値を保持すると共に、カウント値が所定値に到達すると前記調停後にカウント値を設定された初期値にリセットするカウンタレジスタと、カウント値を監視する順番を保持する順番レジスタとを各々含み、前記複数のデバイスの各々に対応して設けられた複数のレジスタ群と、前記順番レジスタが保持する順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視する監視手段と、更新されたカウント値が前記所定値と一致するデバイスを調停対象として選択する選択手段と、選択されたデバイスのバス使用要求を確認する確認手段と、複数のデバイスからのバス使用要求が確認された場合に、前記順番レジスタが保持する順番に従って各デバイスの優先順位を決定する順位決定手段と、決定された優先順位に基づいて所定のデバイスにバスの使用を許可する許可手段と、を備えたバス調停回路と、を含むことを特徴としている。
【００１０】
請求項３に記載の発明は、請求項１又は２に記載の発明において、前記初期値レジスタは、書き換え可能に構成されたことを特徴としている。
【００１１】
請求項４に記載の発明は、請求項２又は３に記載の発明において、前記順番レジスタは、書き換え可能に構成されたことを特徴としている。
【００１２】
請求項５に記載の発明は、請求項１乃至４のいずれか１項に記載の発明において、前記カウンタレジスタは、初期値レジスタに設定された初期値からカウントダウンを開始し、カウント値の監視が実行される毎にカウントダウンを行ってカウント値を更新し、カウント値が０に到達するとカウント値を設定された初期値にリセットすることを特徴としている。
【００１３】
請求項６に記載の発明は、請求項１乃至５のいずれか１項に記載の発明において、前記監視手段は、予め設定された監視の順番に従って昇順又は降順で前記複数のデバイスの前記カウンタレジスタのカウント値を監視することを特徴としている。
【００１４】
請求項７に記載の発明は、バスに接続された複数のデバイスのバス使用要求を調停するバス調停方法であって、複数のデバイス毎に、初期値レジスタにカウントを開始する初期値を設定すると共に、カウンタレジスタのカウント値を初期値に設定し、複数のデバイス毎にカウント値を監視する順番を予め設定し、予め設定された監視の順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視し、カウント値の監視が実行される毎に、前記複数のデバイスの前記カウンタレジスタのカウント値を各々更新して、前記カウンタレジスタに保持し、更新されたカウント値が所定値と一致するデバイスを調停対象として選択し、選択されたデバイスのバス使用要求を確認し、複数のデバイスからのバス使用要求が確認された場合に、前記監視の順番に従って各デバイスの優先順位を決定し、決定された優先順位に基づいて所定のデバイスにバスの使用を許可し、カウント値が前記所定値と一致した前記カウンタレジスタのカウント値を、設定された初期値にリセットする、ことを特徴としている。
【００１５】
請求項８に記載の発明は、バスに接続された複数のデバイスのバス使用要求を調停するバス調停方法であって、複数のデバイス毎に、初期値レジスタにカウントを開始する初期値を設定すると共に、カウンタレジスタのカウント値を初期値に設定し、複数のデバイス毎に順番レジスタにカウント値を監視する順番を設定し、前記順番レジスタに設定された順番に従って前記複数のデバイスの前記カウンタレジスタのカウント値を監視し、カウント値の監視が実行される毎に、前記複数のデバイスの前記カウンタレジスタのカウント値を各々更新して、前記カウンタレジスタに保持し、更新されたカウント値が所定値と一致するデバイスを調停対象として選択し、選択されたデバイスのバス使用要求を確認し、複数のデバイスからのバス使用要求が確認された場合に、前記順番レジスタに設定された順番に従って各デバイスの優先順位を決定し、決定された優先順位に基づいて所定のデバイスにバスの使用を許可し、カウント値が前記所定値と一致した前記カウンタレジスタのカウント値を、設定された初期値にリセットする、ことを特徴としている。
【００１６】
請求項９に記載の発明は、請求項７又は８に記載の発明において、前記初期値レジスタに設定された初期値を、バスの使用状況に応じて変更することを特徴としている。
【００１７】
請求項１０に記載の発明は、請求項７乃至９のいずれか１項に記載の発明において、予め設定された監視の順番を、バスの使用状況に応じて変更することを特徴としている。
【００１８】
請求項１１に記載の発明は、請求項７乃至１０のいずれか１項に記載の発明において、前記カウンタレジスタは、初期値レジスタに設定された初期値からカウントダウンを開始し、カウント値の監視が実行される毎にカウントダウンを行ってカウント値を更新し、カウント値が０に到達するとカウント値を設定された初期値にリセットすることを特徴としている。
【００１９】
請求項１２に記載の発明は、請求項７乃至１１のいずれか１項に記載の発明において、予め設定された監視の順番に従って昇順又は降順で前記複数のデバイスの前記カウンタレジスタのカウント値を監視することを特徴としている。
【００２０】
請求項１３に記載の発明は、請求項７乃至１２のいずれか１項に記載の発明において、優先度の高いデバイスの初期値を、予め前記所定値に設定することを特徴としている。
【発明の効果】
【００２１】
以上説明したように本発明によれば、デバイスの優先順位を任意に設定することができ、デバイス間のバス使用権の競合が生じた場合に、システムの動作状況に応じた最適な調停を行うことができる、という効果がある。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
【００２３】
（第１の実施の形態）
図１は本発明を適用したＰＣＩバスシステムの概略構成を示すブロック図である。このシステムは、ＰＣ互換機の拡張バスの標準として使用されているＰＣＩバス１０を備えている。ＰＣＩバス１０には、複数のデバイス１〜４と、複数のデバイス１〜４からのバス使用要求を調停するバスアービタ１２とが接続されている。ここでは、デバイス１、デバイス２、デバイス３、デバイス４の４個のデバイスが接続されている例について説明する。
【００２４】
また、ＰＣＩバス１０には、ブリッジ１４が接続されている。ブリッジ１４は、ＣＰＵ１６及びメモリ１８が接続されたシステムバス２０に接続されている。即ち、ブリッジ１４は、ＰＣＩバス１０とシステムバス２０との接続制御を行うホスト−ＰＣＩブリッジである。ＣＰＵ１６がＰＣＩバス空間にアクセスすると、ブリッジ１４がそれを認識してＰＣＩバス１０にアクセスする。また、ＰＣＩバス１０側からメモリ空間にアクセスすると、ブリッジ１４がそれを認識してメモリ１８にアクセスする。
【００２５】
ＰＣＩバス１０に接続されたデバイス１〜４の各々は、２本の信号線によりバスアービタ１２と接続されている。デバイス１とバスアービタ１２との間には、デバイス１からバスアービタ１２にバス使用要求信号（ＲＥＱ−１）を入力する信号線２２と、バスアービタ１２からデバイス１にバス使用許可信号（ＧＮＴ−１）を入力する信号線２４とが設けられている。デバイス２とバスアービタ１２との間には、デバイス２からバスアービタ１２にバス使用要求信号（ＲＥＱ−２）を入力する信号線２６と、バスアービタ１２からデバイス２にバス使用許可信号（ＧＮＴ−２）を入力する信号線２８とが設けられている。
【００２６】
同様に、デバイス３とバスアービタ１２との間には、デバイス３からバスアービタ１２にバス使用要求信号（ＲＥＱ−３）を入力する信号線３０と、バスアービタ１２からデバイス３にバス使用許可信号（ＧＮＴ−３）を入力する信号線３２とが設けられている。デバイス４とバスアービタ１２との間には、デバイス４からバスアービタ１２にバス使用要求信号（ＲＥＱ−４）を入力する信号線３４と、バスアービタ１２からデバイス４にバス使用許可信号（ＧＮＴ−４）を入力する信号線３６とが設けられている。
【００２７】
また、ＰＣＩバス１０に接続されたブリッジ１４も、ブリッジ１４からバスアービタ１２にバス使用要求信号（ＲＥＱ−Ｂ）を入力する信号線３８と、バスアービタ１２からブリッジ１４にバス使用許可信号（ＧＮＴ−Ｂ）を入力する信号線４０の２本の信号線により、バスアービタ１２に接続されている。
【００２８】
次に、上記のＰＣＩバスシステムの動作の概略を説明する。ここでは、ＰＣＩバス１０に接続されたデバイス１〜４の各々が、バスアービタ１２にバス使用要求を行う例について説明する。デバイス１は、信号線２２をアクティブな状態にして、バスアービタ１２に対してバス使用要求信号（ＲＥＱ−１）を入力する。即ち、ＲＥＱ−１信号がアサートされる。同様に、デバイス２はバス使用要求信号（ＲＥＱ−２）を、デバイス３はバス使用要求信号（ＲＥＱ−３）を、デバイス４はバス使用要求信号（ＲＥＱ−４）を、バスアービタ１２に入力する。
【００２９】
バスアービタ１２は、デバイス１〜４からバス使用要求信号が入力されたことを認識し、これらのバス使用要求を調停する。即ち、バス使用要求が行われた全部のデバイス１〜４について優先順位を決定し、優先順位が高い順にバス使用許可を付与する。具体的な調停方法については後述するが、例えば、優先順位が、デバイス１＞デバイス２＞デバイス３＞デバイス４の順であると仮定すると、まず、優先順位が最も高いデバイス１にバス使用許可を付与する。バスアービタ１２は、信号線２４をアクティブな状態にして、デバイス１に対してバス使用許可信号（ＧＮＴ−１）を入力する。即ち、ＧＮＴ−１信号がアサートされる。
【００３０】
デバイス１は、バスアービタ１２からバス使用許可信号が入力されたことを検知して、バス使用権を取得したと判断し、トランザクションを開始する。例えば、アクセスの内容が、メモリ１８からのデータの読み出しである場合には、ブリッジ１４がこのトランザクションに応答する。ブリッジ１４はデバイス１からコマンドを受け取ると、システムバス２０を介してメモリ１８からデータを読み出し、読み出したデータをデバイス１に転送する。デバイス１が転送されたデータを受け取って、トランザクションが完了する。
【００３１】
図２は本発明の実施の形態に係るバスアービタの概略構成を示すブロック図である。また、図３はレジスタ群の構成を示すブロック図である。バスアービタ１２は、バス使用要求を調停するバス調停回路４２と、デバイス１〜４の各々に対応して設けられたレジスタ群４４、４６、４８、５０と、を備えている。レジスタ群４４、４６、４８、５０の各々は、カウント値を監視する順番を保持する順番レジスタ５２、設定された初期値を保持する初期値レジスタ５４、及びカウント値の監視が実行される毎にカウントを行い、カウント値を保持するカウンタレジスタ５６を備えている。カウンタレジスタ５６は、初期値レジスタ５４に設定された初期値からカウントを開始し、カウント値が所定値に到達すると、カウント値を設定された初期値にリセットする。
【００３２】
順番レジスタ５２及び初期値レジスタ５４はプログラマブルであり、ＣＰＵ１６からブリッジ１４を介して読み書きすることができる。これにより、順番レジスタ５２及び初期値レジスタ５４に、任意の値を設定することができる。即ち、カウント値を監視する順番やカウント初期値を、システムの動作状況に応じて適宜書き換えることができる。
【００３３】
レジスタ群４４に設けられた順番レジスタ５２、初期値レジスタ５４、及びカウンタレジスタ５６の各々は、バス調停回路４２に接続されており、各レジスタに保持された情報はバス調停回路４２に入力される。レジスタ群４６、４８、５０についても同様に、順番レジスタ５２、初期値レジスタ５４、及びカウンタレジスタ５６の各々はバス調停回路４２に接続されており、各レジスタに保持された情報はバス調停回路４２に入力される。
【００３４】
次に、バス調停回路４２で実行される調停処理について説明する。図４乃至図８は第１の実施の形態に係る調停方式を説明するための概念図である。デバイス１〜４の各々に対応する順番レジスタ５２、初期値レジスタ５４及びカウンタレジスタ５６には、カウント値を監視する順番、初期値、及びカウント値が各々保持されている。本実施の形態では、バス調停回路４２は、デバイス１〜４のカウンタレジスタ５６のカウント値を定期的に監視し、カウント値が所定値（ここでは「０」）になったデバイスだけが調停の対象とされる。調停の対象とされたデバイスの優先順位は、順番レジスタ５２で設定された順番に従って決定される。
【００３５】
まず、図４に初期状態を示す。本実施の形態では、デバイス１→デバイス２→デバイス３→デバイス４の順番でカウント値を監視する。従って、デバイス１〜４の順番レジスタ５２の値は、各々「１、２、３、４」に設定されている。また、デバイス１及び２の初期値レジスタ５４には初期値「１」が設定されると共に、デバイス３及び４の初期値レジスタ５４には初期値「２」が設定されている。
【００３６】
初期状態では、デバイス１〜４のカウンタレジスタ５６の値は、初期値と同様に「１、１、２、２」となる。バス調停回路４２は、デバイス１→デバイス２→デバイス３→デバイス４の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。この状態でカウント値が「０」であるデバイスは無く、調停の対象となるデバイスは存在しない。デバイス１〜４の各カウンタレジスタ５６は、カウント値の監視が実行されるとカウントダウン（１減算）を行い、カウントダウン後のカウント値を保持する。
【００３７】
次に、図５にカウントダウン後の状態を示す。カウントダウンにより、デバイス１〜４のカウンタレジスタ５６の値は「０、０、１、１」となる。バス調停回路４２は、デバイス１→デバイス２→デバイス３→デバイス４の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。今度はデバイス１及び２のカウント値が「０」であるため、デバイス１及び２が調停の対象になる。そこで、バス調停回路４２は、デバイス１及び２からバス使用要求があったか否かを確認する。
【００３８】
バス使用要求を行ったデバイスが１つであれば、そのデバイスにバス使用許可を付与する。一方、２以上のデバイスからバス使用要求があれば、これらのバス使用要求を調停する。ここでは、順番レジスタ５２で設定された順番に従って優先順位が決定される。順番レジスタ５２で設定された順番によれば、デバイス１＞デバイス２の順に優先されるので、まずデバイス１にバス使用許可を付与し、次にデバイス２にバス使用許可を付与する。
【００３９】
次に、図６に第１回の調停後の状態を示す。デバイス１及び２の各カウンタレジスタ５６は、カウント値が「０」になったので、カウント値を設定された初期値にリセットする。この結果、デバイス１〜４のカウンタレジスタ５６の値は「１、１、１、１」となる。バス調停回路４２は、デバイス１→デバイス２→デバイス３→デバイス４の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。カウント値が「０」になったデバイスは無く、調停の対象となるデバイスは存在しない。デバイス１〜４の各カウンタレジスタ５６は、カウント値の監視が実行されるとカウントダウン（１減算）を行い、カウントダウン後のカウント値を保持する。
【００４０】
次に、図７にカウントダウン後の状態を示す。カウントダウンにより、デバイス１〜４のカウンタレジスタ５６の値は「０、０、０、０」となる。バス調停回路４２は、デバイス１→デバイス２→デバイス３→デバイス４の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。今度はデバイス１〜４のカウント値が「０」であるため、デバイス１〜４が調停の対象になる。そこで、バス調停回路４２は、デバイス１〜４からバス使用要求があったか否かを確認する。
【００４１】
バス使用要求を行ったデバイスが１つであれば、そのデバイスにバス使用許可を付与する。一方、２以上のデバイスからバス使用要求があれば、これらのバス使用要求を調停する。ここでは、順番レジスタ５２で設定された順番に従って優先順位が決定される。順番レジスタ５２で設定された順番によれば、デバイス１＞デバイス２＞デバイス３＞デバイス４の順に優先されるので、デバイス１＞デバイス２＞デバイス３＞デバイス４の順にバス使用許可を付与する。
【００４２】
次に、図８に第２回の調停後の状態を示す。デバイス１〜４の各カウンタレジスタ５６は、カウント値が「０」になったので、カウント値を設定された初期値にリセットする。この結果、デバイス１〜４のカウンタレジスタ５６の値は「１、１、２、２」となり、図４に示した初期状態と同じ値になる。従って、監視→調停→監視→調停のサイクルが繰り返し行われる。
【００４３】
上記のサイクルで２回の調停が行われる間に、バス調停回路４２により、図９に示すように、デバイス１→デバイス２→デバイス１→デバイス２→デバイス３→デバイス４の順序で、デバイス１〜４からバス使用要求があったか否かが確認される。上記の２回の調停が行われる間に、デバイス１及びデバイス２は、毎回（ここでは、２回）バス使用要求が確認される。これに対し、デバイス３及びデバイス４は、その半分の頻度（ここでは、２回に１回）でしかバス使用要求が確認されない。
【００４４】
以上説明した通り、初期値レジスタに設定する初期値に応じて、バス使用要求の確認頻度（調停の対象となる頻度）、即ち、デバイスの優先度を変更することが可能である。この例では、設定された初期値が小さい方が、デバイスの優先度が高く、バス使用許可を付与される確率が高い。また、順番レジスタに設定する順番に応じて、デバイスの優先順位を変更することが可能である。
【００４５】
従って、本実施の形態では、初期値レジスタに設定する初期値や順番レジスタに設定する順番を適宜変更することで、システムの動作状況に応じてデバイスの優先順位を任意に設定することができ、デバイス間のバス使用権の競合を回避して、システムを常に安定した状態で動作させることができる。
【００４６】
（第２の実施の形態）
第２の実施の形態に係るバスアービタは、バス調停回路４２で実行される調停処理の方法が異なる以外は、第１の実施の形態に係るバスアービタと同じ構成であるため、同一部分については説明を省略し、相違点のみ説明する。
【００４７】
図１０乃至図１４は第２の実施の形態に係る調停方式を説明するための概念図である。本実施の形態では、第１の実施の形態と同様に、バス調停回路４２は、デバイス１〜４のカウンタレジスタ５６のカウント値を定期的に監視し、カウント値が所定値（ここでは「０」）になったデバイスだけが調停の対象とされる。調停の対象とされたデバイスの優先順位は、順番レジスタ５２で設定された順番に従って決定される。
【００４８】
まず、図１０に初期状態を示す。本実施の形態では、デバイス１→デバイス３→デバイス４→デバイス２の順番でカウント値を監視する。この点が第１の実施の形態との相違点である。従って、デバイス１〜４の順番レジスタ５２の値は、各々「１、４、２、３」に設定されている。また、デバイス１及び２の初期値レジスタ５４には初期値「１」が設定されると共に、デバイス３及び４の初期値レジスタ５４には初期値「２」が設定されている。
【００４９】
初期状態では、デバイス１〜４のカウンタレジスタ５６の値は、初期値と同様に「１、１、２、２」となる。バス調停回路４２は、デバイス１→デバイス３→デバイス４→デバイス２の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。カウント値が「０」であるデバイスは無く、調停の対象となるデバイスは存在しない。デバイス１〜４の各カウンタレジスタ５６は、カウント値の監視が実行されるとカウントダウン（１減算）を行い、カウントダウン後のカウント値を保持する。
【００５０】
次に、図１１にカウントダウン後の状態を示す。カウントダウンにより、デバイス１〜４のカウンタレジスタ５６の値は「０、０、１、１」となる。バス調停回路４２は、デバイス１→デバイス３→デバイス４→デバイス２の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。今度はデバイス１及び２のカウント値が「０」であるため、デバイス１及び２が調停の対象になる。そこで、バス調停回路４２は、デバイス１及び２からバス使用要求があったか否かを確認する。
【００５１】
バス使用要求を行ったデバイスが１つであれば、そのデバイスにバス使用許可を付与する。一方、２以上のデバイスからバス使用要求があれば、これらのバス使用要求を調停する。ここでは、順番レジスタ５２で設定された順番に従って優先順位が決定される。順番レジスタ５２で設定された順番によれば、デバイス１＞デバイス２の順に優先されるので、まずデバイス１にバス使用許可を付与し、次にデバイス２にバス使用許可を付与する。
【００５２】
次に、図１２に第１回の調停後の状態を示す。デバイス１及び２の各カウンタレジスタ５６は、カウント値が「０」になったので、カウント値を設定された初期値にリセットする。この結果、デバイス１〜４のカウンタレジスタ５６の値は「１、１、１、１」となる。バス調停回路４２は、デバイス１→デバイス３→デバイス４→デバイス２の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。カウント値が「０」になったデバイスは無く、調停の対象となるデバイスは存在しない。デバイス１〜４の各カウンタレジスタ５６は、カウント値の監視が実行されるとカウントダウン（１減算）を行い、カウントダウン後のカウント値を保持する。
【００５３】
次に、図１３にカウントダウン後の状態を示す。カウントダウンにより、デバイス１〜４のカウンタレジスタ５６の値は「０、０、０、０」となる。バス調停回路４２は、デバイス１→デバイス３→デバイス４→デバイス２の順番で、デバイス１〜４の各カウンタレジスタ５６のカウント値を監視する。今度はデバイス１〜４のカウント値が「０」であるため、デバイス１〜４が調停の対象になる。そこで、バス調停回路４２は、デバイス１〜４からバス使用要求があったか否かを確認する。
【００５４】
バス使用要求を行ったデバイスが１つであれば、そのデバイスにバス使用許可を付与する。一方、２以上のデバイスからバス使用要求があれば、これらのバス使用要求を調停する。ここでは、順番レジスタ５２で設定された順番に従って優先順位が決定される。順番レジスタ５２で設定された順番によれば、デバイス１＞デバイス３＞デバイス４＞デバイス２の順に優先されるので、デバイス１＞デバイス３＞デバイス４＞デバイス２の順にバス使用許可を付与する。
【００５５】
次に、図１４に第２回の調停後の状態を示す。デバイス１〜４の各カウンタレジスタ５６は、カウント値が「０」になったので、カウント値を設定された初期値にリセットする。この結果、デバイス１〜４のカウンタレジスタ５６の値は「１、１、２、２」となる。図１０に示した初期状態と同じ値になる。従って、監視→調停→監視→調停のサイクルが繰り返し行われる。
【００５６】
上記のサイクルで２回の調停が行われる間に、バス調停回路４２により、図１５に示すように、デバイス１→デバイス２→デバイス１→デバイス３→デバイス４→デバイス２の順序で、デバイス１〜４からバス使用要求があったか否かが確認される。上記の２回の調停が行われる間に、デバイス１及びデバイス２は、毎回（ここでは、２回）バス使用要求が確認される。これに対し、デバイス３及びデバイス４は、その半分の頻度（ここでは、２回に１回）でしかバス使用要求が確認されない。
【００５７】
また、調停の際には、順番レジスタ５２で設定された順番に従って優先順位が決定されるので、デバイス１〜４の順番レジスタ５２の値を第１の実施の形態とは異なる値とすることで、デバイス１〜４のバス使用要求があったか否かが確認される順序が入れ替わる。本実施の形態では、第２回の調停の際には、デバイス１→デバイス３→デバイス４→デバイス２の順序でバス使用要求が確認される。
【００５８】
以上説明した通り、初期値レジスタに設定する初期値に応じて、バス使用要求の確認頻度、即ち、デバイスの優先度を変更することが可能である。また、順番レジスタに設定する順番に応じて、デバイスの優先順位を変更することが可能である。従って、本実施の形態では、初期値レジスタに設定する初期値や順番レジスタに設定する順番を適宜変更することで、システムの動作状況に応じてデバイスの優先順位を任意に設定することができ、デバイス間のバス使用権の競合を回避して、システムを常に安定した状態で動作させることができる。
【００５９】
なお、第１及び第２の実施の形態では、本発明をＰＣＩバスシステムに適用した例について説明したが、バスはＰＣＩバスには限定されない。複数のデバイスがバスを共有するバスシステム全般に適用することができる。拡張バスとしては、ＰＣＩバスの外に、例えば、ＩＳＡバス、ＶＬバス、汎用拡張バス（Ｃバス）、ＰＣＩ Ｅｘｐｒｅｓｓバスが挙げられる。本発明はこれらの何れかのバスを有するバスシステム全般に適用することができる。
【００６０】
また、第１及び第２の実施の形態では、所定値以外の値を初期値として設定する例について説明したが、所定値を初期値として設定することもできる。所定値（例えば「０」）を初期値として設定することで、そのデバイスのカウント値は所定値に維持され、毎回、調停の対象となる。即ち、デバイスの優先度を最も高くすることができる。
【００６１】
また、第１及び第２の実施の形態では、初期値を１以上の値に設定し、初期値からカウントダウンを開始して、カウント値が所定値「０」になったデバイスを調停の対象とする例について説明したが、所定値を１以上の整数（例えば「８」）として、初期値からカウントアップを開始して、カウント値が所定値になったデバイスを調停の対象とすることもできる。この場合には、設定された初期値が大きい（所定値に近い値である）方が、デバイスの優先度が高く、バス使用許可を付与される確率が高い。
【００６２】
また、第１及び第２の実施の形態では、順番レジスタで設定された順番に従って昇順でカウント値を監視する例について説明したが、降順でカウント値を監視してもよい。また、第１及び第２の実施の形態では、カウント値を監視する順番を保持する順番レジスタを設けて監視の順番を設定する例について説明したが、例えば、アービタ内部に固定された順序でデバイスのカウント値を監視する等、順番レジスタを設けずに監視の順番を予め設定することができる。
【図面の簡単な説明】
【００６３】
【図１】本発明を適用したＰＣＩバスシステムの概略構成を示すブロック図である。
【図２】本発明の実施の形態に係るバスアービタの概略構成を示すブロック図である。
【図３】レジスタ群の構成を示すブロック図である。
【図４】第１の実施の形態に係る調停方式を説明するための概念図である。
【図５】第１の実施の形態に係る調停方式を説明するための概念図である。
【図６】第１の実施の形態に係る調停方式を説明するための概念図である。
【図７】第１の実施の形態に係る調停方式を説明するための概念図である。
【図８】第１の実施の形態に係る調停方式を説明するための概念図である。
【図９】第１の実施の形態に係る調停方式でのデバイスの優先順位を示す図である。
【図１０】第２の実施の形態に係る調停方式を説明するための概念図である。
【図１１】第２の実施の形態に係る調停方式を説明するための概念図である。
【図１２】第２の実施の形態に係る調停方式を説明するための概念図である。
【図１３】第２の実施の形態に係る調停方式を説明するための概念図である。
【図１４】第２の実施の形態に係る調停方式を説明するための概念図である。
【図１５】第２の実施の形態に係る調停方式でのデバイスの優先順位を示す図である。
【符号の説明】
【００６４】
１０   ＰＣＩバス
１２   バスアービタ
１４   ブリッジ
１６   ＣＰＵ
１８   メモリ
２０   システムバス
２２   信号線
２４   信号線
２６   信号線
２８   信号線
３０   信号線
３２   信号線
３４   信号線
３６   信号線
３８   信号線
４０   信号線
４２   バス調停回路
４４   レジスタ群
４６   レジスタ群
４８   レジスタ群
５０   レジスタ群
５２   順番レジスタ
５４   初期値レジスタ
５６   カウンタレジスタ
【図１】
2008117292.tif 000003
【図２】
2008117292.tif 000004
【図３】
2008117292.tif 000005
【図４】
2008117292.tif 000006
【図５】
2008117292.tif 000007
【図６】
2008117292.tif 000008
【図７】
2008117292.tif 000009
【図８】
2008117292.tif 000010
【図９】
2008117292.tif 000011
【図１０】
2008117292.tif 000012
【図１１】
2008117292.tif 000013
【図１２】
2008117292.tif 000014
【図１３】
2008117292.tif 000015
【図１４】
2008117292.tif 000016
【図１５】
2008117292.tif 000017