(57)【要約】【課題】集積回路装置のバスアービターを提供する。【解決手段】発明のバスアービターは、多数本のバスマスタに対してバス占有率（又はバス占有回数）を自由にプログラムすることができ、バス占有率に関する値の食い違いを防止する。これのためにバスアービターはバスマスタの各々に対応してバスマスタのバス占有率に関するデータを貯蔵する多数本のプログラムレジスタから構成されたプログラムファイルと、プログラムレジスタの各々に対応してバスマスタに関するデータを実時間に提供する多数の臨時レジスタから構成された臨時ファイルと、バスマスタの中最優先順位のバスマスタを指定するポインタレジスタを有する。【選択図】　図３
2004005677.tif 000002
【特許請求の範囲】
【請求項１】
多数本のバスマスタを有する集積回路装置のバスアービターにおいて、
前記バスマスタに各々に対応して前記バスマスタのバス占有率に関するデータを貯蔵する複数本のプログラムレジスタから構成されたプログラムファイルと、前記プログラムレジスタの各々に対応して前記バスマスタに関するデータを実時間に提供する複数の臨時レジスタから構成された臨時ファイルと、
前記バスマスタの中最優先順位のバスマスタを指定するポインタレジスタとを備えることを特徴とするバスアービター。
【請求項２】
前記バスマスタの各々はバスを通じて前記バスアービターにバス要求信号を提供し、前記バスアービターは前記バスマスタの各々に対して対応するバス許可信号を提供することを特徴とする請求項１に記載のバスアービター。
【請求項３】
前記臨時レジスタの各々に貯蔵されたバス占有率に関するデータが全て消尽された場合前記臨時レジスタのデータは対応するプログラムレジスタの値に復元されることを特徴とする請求項１に記載のバスアービター。
【請求項４】
複数本のバスマスタを有する集積回路装置でのバスアービトレーション方法において、
前記バスマスタの各々に対するバス占有回数をプログラムして貯蔵し、最優先順位バスマスタを指定する段階と、
現在バス要求を行っているバスマスタが前記最優先順位バスマスタならバス占有権を付与し、該当するバス占有回数を１程減らす段階と、
現在バス要求を行っているバスマスタが前記最優先順位バスマスタではなければ前記最優先順位バスマスタのバス占有回数と現在バス要求を行っている前記バスマスタのバス占有回数を各々１程減らす段階とを含むバスアービトレーション方法。
【請求項５】
前記バスマスタの中一つが中央制御装置であり、残りバスマスタに比べて前記中央制御装置のバス要求回数が頻繁であり、前記残りバスマスタが毎回バス要求を行わない場合に、前記中央制御装置に対するバス占有回数を少なくとも全体の半分以上に割り当てる段階が付加的に含まれることを特徴とする請求項４に記載のバスアービトレーション方法。
【請求項６】
複数本のバスマスタを有する集積回路装置でのバスアービトレーション方法において、
前記バスマスタの各々に対するバス占有回数をプログラムして貯蔵し、最優先順位バスマスタを指定した後、
前記バスマスタバス要求バスマスタがあるかを検査する第１段階と、
前記第１段階で前記バス要求バスマスタがなければ初期に設定されたバスマスタにバス占有を承諾する第２段階と、
前記第１段階での前記バス要求バスマスタが存在し、前記バス要求バスマスタが前記最優先順位バスマスタであるかを検査する第３段階と、
第３段階で前記バス要求バスマスタが前記最優先順位バスマスタではなければ、前記バス要求バスマスタにバス占有を承諾し、前記バス要求バスマスタのバス占有回数と前記最優先順位バスマスタのバス占有回数を同時に減ずる第４段階と、
前記第３段階で前記バス要求バスマスタが前記最優先順位バスマスタなら前記最優先順位バスマスタにバス占有を承諾し、前記最優先順位バスマスタのバス占有回数を減ずる第５段階とを備えることを特徴とするバスアービトレーション方法。
【請求項７】
前記初期に設定されたバスマスタが中央制御装置であることを特徴とする請求項６に記載のバスアービトレーション方法。
【請求項８】
前記中央制御装置が前記バスマスタの中で少なくとも半分以上のバス占有率を有したことを特徴とする請求項７に記載のバスアービトレーション方法。
【請求項９】
前記第４段階が前記バス要求バスマスタのバス占有回数に関する現在の値が０であるかを検査する段階を備えることを特徴とする請求項６に記載のバスアービトレーション方法。
【請求項１０】
前記第５段階が前記最優先順位バスマスタのバス占有回数に関する現在の値が０であるかを検査する段階を備えることを特徴とする請求項６に記載のバスアービトレーション方法。
【請求項１１】
前記最優先順位バスマスタのバス占有回数に関する前記現在の値が０であると、前記プログラムされた値に前記現在の値を復元することを特徴とする請求項１０に記載のバスアービトレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は集積回路装置のバスシステムに関するものであり、より詳しくは集積回路装置のバスシステムでバス占有を制御するバスアービター（ａｒｂｉｔｅｒ）に関するものである。
【０００２】
【従来の技術】
情報コンピューティングシステムは多様な機能ブロックの間でデータ及び制御信号のための通信のために安くて簡単なバスシステムを使用する。特に色々な機能ブロックを単一集積したオンチップシステム（ＳＯＣ）（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）では機能ブロックを、バスシステムを用いて互いに連結することが一般的である。
【０００３】
典型的なバスシステムは、図１に示したように、バス１及びバスアービター２と、多数本のバスマスタＢＭ０〜ＢＭｎ−１及びバススレーブＢＳ０〜ＢＳｎ−１から構成される。バスマスタはバス要求（ｂｕｓ　ｒｅｑｕｅｓｔ）後にバスアービター２を通じてバス所有権（ｂｕｓ　ｏｎｗｅｒｓｈｉｐ）を得た後言及するバススレーブにデータを読み取り書き取ることができる。この際、バス１は一回のバス要求に対して一つのバスマスタのみを使用することができる。バススレーブはバス所有権を得ることができず単にバスマスタからの読み取り又は書き取り要求に応答してデータを準備し、バスに伝送する役割を遂行する。バスアービター２はバス要求を発生させた多数本のバスマスタの中でバス優先順位（ｂｕｓ　ｐｒｉｏｒｉｔｙ　ｏｒｄｅｒ）により第一優先順位が高いバスマスタにバス所有権を許可する。
【０００４】
一般的なオンチップシステムでバスマスタとして使用される装置としてはＣＰＵ（ｃｅｎｔｒａｌ　ｐｒｏｃｅｓｓｏｒ　ｕｎｉｔ）、汎用ＤＭＡ制御器（ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ　ｄｉｒｅｃｔ　ｍｅｍｏｒｙ　ａｃｃｅｓｓ　ｃｏｎｔｒｏｌｌｅｒ）、又は専用ＤＭＡ制御器（ｄｅｄｉｃａｔｅｄ　ｄｉｒｅｃｔ　ｍｅｍｏｒｙ　ａｃｃｅｓｓ　ｃｏｎｔｒｏｌｌｅｒ）等がある。バススレーブとして使用された装置としては外部メモリ制御器、又はＵＡＲＴ（ｕｎｉｖｅｒｓａｌ　ａｓｙｎｃｈｒｏｎｏｕｓ　ｒｅｃｅｉｖｅｒ　ａｎｄ　ｔｒａｎｓｍｉｔｔｅｒ）等を例に取ることができる。
【０００５】
ここで、バスアービターのアービトレーション（ａｒｂｉｔｒａｔｉｏｎ）方式はシステムの構成仕様により変わることができる。公定（ｅｑｕｉｔａｂｌｅ）のバスアービトレーションを行わなければシステムの全体的な性能が低下されることができ、優先順位が低いバスマスタが永遠にバス占有を行うことができないバス欠乏（ｂｕｓ　ｓｔａｒｖａｔｉｏｎ）の問題が発生するので、公定のバスアービターの設計は非常に重要である。
【０００６】
ＳＯＣシステムで今まで使用されてきたバスアービトレーション方法は優先順位決定方式とプログラム可能可否により下の表１のように四つに分類される。
【０００７】
【表１】
2004005677.tif 000003
先ず、固定優先順位方式（ａ）は最も簡単なシステムバスアービトレーション方法であって、簡単なハードウェア構成として早い速度が要求されるシステムバスアービターに適合するが、各バスマスタの優先順位を調節することができずバス欠乏の問題を誘発する短所がある。これに比べて、方式（ｃ）は優先順位を調節することができる長所はあるが、やはりバス欠乏の問題を有している。ラウンドロビン方式（ｂ）は方式（ａ）及び（ｃ）の問題点であるバス欠乏を解決する。即ち、方式（ｂ）で、バスマスタの数がｎ本であり、各バスマスタのバス使用要求量が同じ場合に、各バスマスタのバス占有率（ｂｕｓ　ｏｃｃｕｐａｎｃｙ）は１／ｎに収斂する。しかし、方式（ｂ）は多様な機能を遂行するバスマスタとバススレーブとから構成されたオンチップシステムで特定バスマスタのバス占有率を増大させることが不可能な短所がある。
【０００８】
バス占有率を調節することができるラウンドロビン方式（ｄ）は、方式（ｂ）又は方式（ｃ）の短所を補完したことであって、バスマスタを幾本かのグループに分けられてアービトレーションする多段階ラウンドロビン方式である（Ｔｏｍｓｈａｎｌｅｙ＆Ｄｏｎ　Ａｎｄｅｒｓｏｎが提案したＰＣＩ　ｓｙｓｔｅｍａｒｃｈｉｔｅｃｔｕｒｅを見よ：Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ　Ｐｕｂｌｉｓｈｉｎｇ　Ｃｏｍｐａｎｙ、Ｆｏｕｒｔｈ　ｅｄｉｔｉｏｎ）。図２に示したように、優先順位によりバスマスタ、例えば五つのバスマスタＡ，Ｂ，Ｘ，Ｙ及びＺを幾本かのグループ、例えば優先順位が高いグループＨＰＧと優先順位が低いグループＬＰＧに分ける。先順位グループＨＰＧにはバスマスタＡ及びＢが属し、後順位グループＬＰＧにはＸ，Ｙ及びＺが属する。各バスマスタが持続的にバス要求を行うと仮定すると、バス所有権許可の順序はＡ−Ｂ−Ｘ−Ａ−Ｂ−Ｙ−Ａ−Ｂ−Ｚ−Ａ−Ｂ−Ｘ−．．になる。即ち、９回のバス要求があったら、各バスマスタに対するバス占有率はＡ＝１／３，Ｂ＝１／３，Ｘ＝１／９，Ｙ＝１／９，Ｚ＝１／９になる。このようなバスアービトレーション方式は各バスマスタのバス占有率を制限的に調節する。
【０００９】
表１に示したバスアービトレーション方式は主に早い速度を要求するバスシステムとして使用される方式である。データ通信や遠隔通信で使用したアービトレーション方式はバスを使用しようとするバスマスタのバス占有率をより自由にプログラムすることができるようにする。例えば、任意のバスマスタが伝送しようとするデータの伝送率（ｔｒａｎｓｆｅｒ　ｒａｔｅ）を保障するためにそのバスマスタがバスを占有する時間間隔をプログラムすることができる。しかし、このような方法は非常に複雑なアルゴリズムを必要とするので実時間処理を要求するシステムバスアービターに適用することにはそのハードウェア具現が難しいという短所がある。又、データ通信環境でのアービトレーション方式をオンチップシステムのように各バスマスタのバス要求が一クロックサイクル毎にダイナミックに変わるバスシステムに適用することは難しい。
【００１０】
実質的に、色々の機能ブロックが集積されたオンチップシステムを設計することにおいて、システムバスアービターは次のような理由で各バスマスタのバス占有率を調節することができなければならない。
【００１１】
第１に、オンチップシステムではバスマスタの機能が相異なるためバスマスタによるバス占有率要求が異なることができ、特定バスマスタは他のバスマスタよりさらに高いバス占有率を要求することができる。例えば、１００Ｍｂｐｓのデータ伝送を処理するイーサネット（Ｅｔｈｅｒｎｅｔ＝登録商標）機能ブロックと１２０Ｍｂｐｓのデータ伝送率を有するＵＳＢ（ｕｎｉｖｅｒｓａｌ　ｓｅｒｉａｌ　ｂｕｓ）機能ブロックは各々の所望のバス占有率が異なる。第２に、特定バスマスタが他のバスマスタに比べて不公定のバス要求を行うことができる。例えば、多重チャンネルＤＭＡ制御器が内部のチャンネルアービターを通じて一回のバス要求を行うと、他のバスマスタに比べて低いバス占有率を有することができる。又、各バスマスタが一回のバス所有権を許可されて処理するデータ量又はトランザクション（ｔｒａｎｓａｃｔｉｏｎ）データの形態がシングル（ｓｉｎｇｌｅ）にバースト（ｂｕｒｓｔ）に異なる。第３に、実際使用される応用システムの種類に応じて特定バスマスタのバス占有率を増大させるか減少させる必要がある。
【００１２】
【発明が解決しようとする課題】
本発明の目的はバスマスタのバス占有率をプログラムすることができながら多数の機能ブロックを有したオンチップシステム内で実時間で要求されるシステムバスの動作を処理することができるバスアービターを提供することである。
【００１３】
【課題を解決するための手段】
前述した本発明の目的を達成するためのバスアービターは、多数本のバスマスタに対してバス占有率（又はバス占有回数）を自由にプログラムすることができ、バス占有率に関する値の食い違いを防止する。これのためバスアービターはバスマスタの各々に対応してバスマスタのバス占有率に関するデータを貯蔵する多数本のプログラムレジスタから構成されたプログラムファイルと、プログラムレジスタの各々に対応してバスマスタに関するデータを実時間に提供する多数の臨時レジスタから構成された臨時ファイルと、バスマスタの中最優先順位のバスマスタを指定するポインタレジスタとを有する。
【００１４】
バスアービトレーションを行うことにおいては、バスマスタの各々に対するバス占有回数をプログラムして貯蔵し、最優先順位バスマスタを指定した状態で、現在バス要求を行っているバスマスタが最優先順位バスマスタならバス占有権を付与し、該当するバス占有回数を１程減らすか、現在バス要求を行っているバスマスタが最優先順位バスマスタではなければ最優先順位バスマスタのバス占有回数と現在バス要求を行っているバスマスタのバス占有回数とを各々１程減らす。
【００１５】
一方、バスマスタの中一つが中央制御装置であり、残りバスマスタに比べて中央制御装置のバス要求回数が頻繁であり、残りバスマスタが毎回バス要求を行わない場合に、中央制御装置に対するバス占有回数を少なくとも全体の半分以上に割り当てる。
【００１６】
【発明の実施の形態】
以下、本発明によるバスアービターの構成と動作を図３乃至図７を参照して詳細に説明する。本発明のバスアービターは多様な機能ブロックが一つの集積回路チップに内蔵されて構成されたオンチップシステムに適用される。
【００１７】
図３は本発明によるバスアービターの構成とバスマスタとの連結関係を示す。ｎ本のバスマスタＢＭ０〜ＢＭｎ−１はバス要求信号ＨＢＱ０〜ＨＢＱｎ−１をバスアービター１０に各々送り、バス要求信号ＨＢＱ０〜ＨＢＱｎ−１に各々該当するバス許可信号ＨＧ０〜ＨＧｎ−１をバスアービター１０から各々受信する。バスアービター１０は各バスマスタのバス占有率をプログラムすることができるレジスタファイル１１と、バスアービトレーション過程で臨時として使用されるレジスタファイル１３と、現在最優先順位のバスマスタ（以下ＢＭｐｔｒ）を指定するポインタレジスタ１５を有する。プログラムレジスタファイル１１はバスマスタの数に対応するｎ本のプログラムレジスタＰ０〜Ｐｎ−１から構成され、臨時レジスタファイル１３も同様にｎ本のバスマスタに対応するレジスタＴ０〜Ｔｎ−１から構成される。ポインタレジスタ１５が最優先順位になるバスマスタＢＭｐｔｒを指定し、そのバスマスタに該当するプログラムレジスタに貯蔵された値にそのバスマスタに対するバス占有率をプログラムした後なら、バスアービター１０は指定されたバスマスタが最優先順位になるようにバスアービトレーションを行い、臨時レジスタファイル１３の該当するレジスタに貯蔵されたデータを用いて各バスマスタのバス占有率を調節する。プログラムレジスタファイル１１のレジスタＰ０〜Ｐｎ−１にプログラムされた値により、指定されたバスマスタが最優先順位を占める回数（以下バス占有回数）が決定される。例えば、ポイントレジスタ１５の値ＰＴＲが０であり、レジスタＰ０の値が２なら、バスマスタＢＭ０が３回にかけて最優先順位に設定される。これに関して詳細には後述されることである。
【００１８】
ｎ本のバスマスタＢＭ０〜ＢＭｎ−１に対してプログラムレジスタファイル１１がｘビットのプログラムデータを有すると、任意のバスマスタＢＭｉ（ｉは０〜ｎ−１中の一つ）のバス占有率は該当するプログラムレジスタＰｉに０〜２Ｘ−１の値に設定されることができる。プログラムレジスタファイル１１でプログラムされた値により各バスマスタに対するバス占有回数が決定され、これを用いて各バスマスタのバス占有率がバスアービターにより調節される。即ち、任意バスマスタＢＭｉに対するバス占有率Ｂ０Ｒｉは次の通り設定される。
【００１９】
【数１】
2004005677.tif 000004
図４を参照すると、本発明によるバスアービター１０によりバス占有率及び優先順位が調節される過程を理解することができる。説明の便宜のために、図４ではバスマスタが３本（ｎ＝４）であると仮定する。３本のバスマスタ、例えばＢＭ０〜ＢＭ２に対応するプログラムレジスタの値がＰ［０］＝２，Ｐ［１］＝１及びＰ［２］＝０であり、各バスマスタが毎回バス要求を行うと仮定すると、各バスマスタに対する予想バス占有率は前述した式１により、各々ＢＯＲ［０］＝（２＋１）／（３＋２＋１）＝３／６，ＢＯＲ［１］＝（１＋１）／（３＋２＋１）＝３／６，ＢＯＲ［２］＝（０＋１）／（３＋２＋１）＝１／６になる。一方、図４には３本のバスマスタＢＭ０〜ＢＭ２の優先順位変化状態が８段階まで示されている。ポインタレジスタ１５の値ＰＴＲが０→０→０→１→１→２→０→０になることによりバスマスタの最優先順位はＢＭ０→ＢＭ０→ＢＭ０→ＢＭ１→ＢＭ１→ＢＭ２→ＢＭ０→ＢＭ０に変化する。即ち、ポインタレジスタ１５の値ＰＴＲがｉなら、バスマスタの優先順位はＢＭｉ，ＢＭｉ＋１，．．，ＢＭｎ−２，ＢＭｎ−１，ＢＭ０，ＢＭ１，．．，ＢＭｉ−１の順序に設定される。
【００２０】
一方、バスマスタが毎回バス要求を行わない場合には、プログラムレジスタＰ０〜Ｐｎ−１に予めプログラムされた予想バス占有率が食い違ってしまう（実際のバス占有回数と予想されたバス占有回数が異なる）。即ち、現在ポインタレジスタ１５の値ＰＴＲが特定バスマスタ（例えば、ＢＭ０）を指定している状態で該当するプログラムレジスタに記録された値（バス占有回数；例えば、Ｐ［０］＝３）だけバス要求を行わなければ、次優先順位のバスマスタ（例えば、ＢＭ１）のバス占有率が増加する（例えば、ＢＯＲ１＞２／６）
【００２１】
そうした状況を考慮して、本発明では最優先順位に指定されないバスマスタがバスを占有している時にも、そのバスマスタに該当する臨時レジスタの値を減少させてバス占有率の食い違いを防止する。又、最優先順位に指定されたバスマスタＢＭｐｔｒがバス要求を行わないことによりバス占有が成されない時にも、そのバスマスタに該当する臨時レジスタの値を減少させてシステム誤動作時に特定バスマスタに該当する臨時レジスタの値を減少させてシステム誤動作時に特定バスマスタのバス欠乏又は過度なバス占有を防止する。
【００２２】
バス占有率の食い違いを防止する機能と共に、本発明によるバスアービター１０の動作を図５乃至図６を参照してより詳細に説明する。図５は動作流れ図であり、図６は図３に示された信号及びレジスタの状態を示された動作タイミング図であり、図７はバス占有率の食い違いを防止した適用例を示す。図６の動作タイミング図は図４と同様に３本のバスマスタを有する場合を例に取る。
【００２３】
先ず、図５を参照すると、段階Ｓ１でｎ本のバスマスタＢＭ０〜ＢＭｎ−１の中いずれか一つからバス要求があるかを検査する。どんなバス要求もなければ段階Ｓ２に移動して初期に設定されたバスマスタにバス占有を許す。逆に、少なくとも一つのバスマスタ（ＢＭｉ；ＢＭ０〜ＢＭｎ−１の中の一つ）からバス要求があると、段階Ｓ３に移動する。段階Ｓ２で初期に設定されたバスマスタはＣＰＵになる場合が多い。
【００２４】
段階Ｓ３では、最優先に（又は最も先ず）バス要求を行ったバスマスタ（例えば、ＢＭｉ（ｉ＝０〜ｎ−１）にバス占有を許す。その後、段階Ｓ４で、ポインタレジスタ１５で現在のＰＴＲが現在バス占有権を有したバスマスタＢＭｉを指定するかを確認する。即ち、現在のバス要求バスマスタＢＭｉが現在のＰＴＲが指定する最優先順位バスマスタＢＭｐｔｒであるかを確認する。現在のＰＴＲがｉなら（バス要求バスマスタ＝最優先順位バスマスタ）、段階Ｓ７に移動し、そうではなければ（バス要求バスマスタ≠最優先順位バスマスタ）段階Ｓ５を進行する。
【００２５】
段階Ｓ５では、現在ＰＴＲが指定するバスマスタＢＭｐｔｒがバス占有権を有しないこと（又はバス要求を行わないこと）が確認された状態なので、現在のバス要求バスマスタＢＭｉに該当する臨時レジスタＴ［ｉ］の値が０であるかを検査する。ここで、Ｔ［ｉ］はプログラムレジスタＰ［ｉ］から持ってきた値であって、現在のバス要求バスマスタＢＭｉに対してプログラムされた最優先順位回数（例えば、図４でＢＭ１の場合２になること）である。従って、Ｔ［ｉ］が０でなければ、現在のバス要求バスマスタＢＭｉのバス占有回数がまだ残っている意味なので、段階Ｓ６に進行する。Ｔ［ｉ］＝０なら段階Ｓ７に移動する。段階Ｓ６では、現在のバス要求バスマスタＢＭｉが１回のバス占有を行ったのでプログラムされたバス占有回数、即ちＴ［ｉ］で１を減算する。
【００２６】
段階Ｓ７では、現在ＰＴＲが指定するバスマスタが現在のバス要求バスマスタＢＭｉと一致するか（Ｓ４のＹＥＳ）現在のバス要求バスマスタＢＭｉのバス占有回数が全て消尽された場合（Ｓ５のＴＥＳ）なので、ＰＴＲ値をインデックスとする臨時レジスタの値Ｔ［ＰＴＲ］が０であるかを検査する。Ｔ［ＰＴＲ］＝０なら段階Ｓ８に進行し、そうではなければ段階Ｓ９に進行する。
【００２７】
段階Ｓ８では、現在のＰＴＲにより指定された最優先順位バスマスタＢＭｐｔｒのバス占有回数が全て消尽された状態なので、Ｔ［ＰＴＲ］の値をＰ［ＰＴＲ］の値に復元した後、段階Ｓ１０に進行する。段階Ｓ９では、現在のＰＴＲにより指定された最優先順位バスマスタＢＭｐｔｒのバス占有回数がまだ残っている状態なので、Ｔ［ＰＴＲ］の値を１程減少させてそのバス占有回数が終わる時までバス占有が継続されるようにする。一方、段階Ｓ９は現在のバス要求バスマスタが最優先順位バスマスタＢＭｐｔｒであるかないかの間に現在Ｔ［ＰＴＲ］＝０ではなければ必ず遂行されなければならない。なぜならば、現在のバス要求バスマスタが最優先順位バスマスタではない場合には最優先順位バスマスタに対するバス占有率の食い違いを防止するためにＴ［ＰＴＲ］を１程減少させなければならなく、現在のバス要求バスマスタが最優先順位バスマスタである場合には実質的なバス占有が成されたので、当然にＴ［ＰＴＲ］を１程減少させなければならないからである。
【００２８】
段階Ｓ１０では、次優先順位のバスマスタを指定するために、現在のＰＴＲがｎ−１であるかないかを検査する。ＰＴＲ＝ｎ−１、即ち全てのバスマスタに対するバス占有が満了された状態であると、段階Ｓ１１を進行してＰＴＲ値を０としてポインタレジスタ１５をリセットさせた後段階Ｓ１に帰還して新しいバスアービトレーションサイクルを始める。逆に、ＰＴＲがｎ−１ではなければ、まだバス占有が必要なバスマスタが残っていることを意味なので、ＰＴＲの値を１程増加させた後段階Ｓ１に帰還して次順位のバスマスタに対するバスアービトレーションサイクルを遂行する。
【００２９】
図５の流れ図では、現在のＰＴＲ値と現在のバス要求バスマスタとの状態により大別される二つの過程に注目しなければならない。
【００３０】
第１には、現在のＰＴＲが指定する最優先順位のバスマスタＢＭｐｔｒが現在のバス要求バスマスタＢＭｉと一致する場合（即ち、現在指定された最優先順位バスマスタが現在バス要求を行うこと）であって、Ｓ１→Ｓ３→Ｓ４→Ｓ７→Ｓ９より成る過程を通じてＰＴＲが指定する優先順位により各バスマスタに対するバス占有回数程順次的に行われる。図４の場合を例えば、バス占有の順序がＢＭ０→ＢＭ０→ＢＭ０→ＢＭ１→ＢＭ１→ＢＭ２になる。
【００３１】
第２には、現在のＰＴＲが指定する最優先順位のバスマスタＢＭ０が現在のバス要求バスマスタＢＭｉ（ｉ＝１又は２）と異なる場合（即ち、現在指定された最優先順位バスマスタが現在バス要求を行っていないか、現在指定された最優先順位バスマスタではない異なるバスマスタが現在バス要求を行うこと）である。現在のバス要求バスマスタＢＭｉのプログラムされたバス占有回数Ｔ［ｉ］が全て消尽された場合なら、Ｓ１→Ｓ３→Ｓ４→Ｓ５→Ｓ７→Ｓ９より成る。現在バス要求バスマスタＢＭｉのバス占有回数が残っていると、Ｓ５とＳ７との間にＳ６が介在される。ここで、Ｓ６でＴ［ｉ］を１程減少させることは現在バス要求バスマスタＢＭｉが１回のバス占有を行ったからであり、結果的にバス占有率に関連したデータの食い違いを防止するためである。
【００３２】
他の一方に、図６を参照してバスアービター１０の動作に関連された信号とレジスタ値に関して説明すると次の通りである。図６では図４の場合と同様に３本のバスマスタＢＭ０，ＢＭ１及びＢＭ２から構成された場合を例に取る。クロック信号ＨＣＬＫはバス上のデータ及び信号の伝送を同期させる信号として、他の全ての信号はＨＣＬＫの立上りエッジ（ｒｉｓｉｎｇ　ｅｄｇｅ）に応答して動作する。ＣＴ０〜ＣＴ８はクロック信号ＨＣＬＫのクロックサイクルを示す。制御信号ＨＧＥは、バスアービトレーションが可能であるかを知らせる信号としてバス占有権を有したバスマスタが一回に多くのサイクル間バスを、占有する間バスアービトレーションを行うことができないようにする。
【００３３】
先ず、クロックサイクルＣＴ０で、全てのバスマスタはバス要求を行わない状態である。最優先順位バスマスタＢＭｐｔｒを指定するポインタレジスタ１５の値ＰＴＲはＣＴ１からＣＴ４まで０になってＢＭ０を最優先順位バスマスタに指定しており、ＣＴ４とＣＴ５との間ではＢＭ１を、ＣＴ５とＣＴ７との間ではＢＭ２を最優先順位バスマスタに指定する。
【００３４】
クロックサイクルＣＴ１では、ＰＴＲ＝０，Ｔ［０］＝２，Ｔ［１］＝１及びＴ［２］＝０であり、バス要求信号ＨＢＱ０，ＨＢＱ１及びＨＢＱ２が全てハイレベルとして３本のバスマスタが同時にバス要求を行っている状態である。従って、バスアービター１０はハイレベルのバス許可信号ＨＧ０を該当するバスマスタＢＭ０に伝送して現在最優先順位に指定されたＢＭ０にバス占有権を与えると言い、該当するＴ［０］を１程減少させる（Ｔ［０］＝２−１＝１；実際バス占有回数上には３−１＝２になることに有意願うこと）。
【００３５】
クロックサイクルＣＴ２では、Ｔ［０］が１程減少して１になっている。この際には、制御信号ＨＧＥがローレベルとして非活性化状態なのでバス要求信号の状態とは関係なくバスアービトレーションを行わない。
【００３６】
クロックサイクルＣＴ３では、制御信号ＨＧＥがハイレベルとしてバスアービトレーションが可能な状態であるが、ＰＴＲが指定するバスマスタＢＭ０がバス要求を行っていないので（ＨＢＱ０がローレベル）二番目優先順位としてバス要求を行っているバスマスタＢＭ１にバス占有権を与えることにする。この際、ＢＭ０が実際にバス占有を行わなかったのでバス占有に関するデータの食い違いを防止するためにＢＭ０に対する臨時レジスタ値Ｔ［０］は１程減少されて０になることである（Ｔ［０］＝１−１＝０）。
【００３７】
その後、クロックサイクルＣＴ４では、Ｔ［０］＝０であり、ＢＭ１に対するバス許可信号が全てハイレベルであり、ＨＧＥが活性化されている。最優先順位で指定されたＰＴＲ＝０バスマスタＢＭ０がバス要求を行っているためバスマスタＢＭ０にバス占有権を付与する。Ｔ［０］は現在０に成っているためＰ［０］、即ち２に復元しようとする。ここで、現在ＰＴＲが０である状態でバスマスタＢＭ１に対するバス許可信号ＨＧ１がハイレベルなので（即ち、バス占有権を有した状態なので）、Ｔ［１］は１程減少される（Ｔ［１］＝１−０＝０）。又、バスマスタＢＭ０に対する臨時レジスタ値Ｔ［０］が０であるため（即ち、バス占有回数を全て消尽したため）ＰＴＲの値が１程増加させて（ＰＴＲ＝１）ＢＭ１を最優先順位バスマスタに指定する。
【００３８】
クロックサイクルＣＴ５では、ＰＴＲ＝１，Ｔ［０］＝２，Ｔ［１］＝０であり、ＨＧ０がハイレベルであり、全てのバス要求信号がハイレベルになっている。従って、現在バス要求を行うバスマスタの中ＰＴＲにより最優先順位に指定されたバスマスタＢＭ１にバス占有権を与えることにする。ＰＴＲが指定するバスマスタＢＭ１に該当するＴ［１］が現在０であるため、Ｔ［１］は元来のＰ［１］、即ち１に復元される。又、ＢＭ１が決められたバス占有回数を全て消尽したのでＰＴＲの値を１程増加させて（ＰＴＲ＝２）ＢＭ２を最優先順位バスマスタに指定する。
【００３９】
クロックサイクルＣＴ６ではバス制御信号ＨＧＥがローレベルとして非活性化状態なのでバスアービトレーションが成されない。
【００４０】
クロックサイクルＣＴ７では、ＰＴＲ＝２であり、最優先順位バスマスタＢＭ２がバス要求を行っているため（ＨＢＱ２がハイレベル）、ＢＭ２にバス占有権を与えることにする（ＨＧ２がハイレベルになること）。バスマスタＢＭ２に該当する臨時レジスタ値Ｔ［２］が０であるためＰ［２］の値に復元され、ＰＴＲは０になる。
【００４１】
最後に、クロックサイクルＣＴ８では、バス制御信号ＨＧＥが活性化されているが、全てのバスマスタがバス要求を行わない状態である。
【００４２】
クロックサイクルＣＴ８までの過程を経て、バスマスタＢＭ０，ＢＭ１及びＢＭ２は各々３回，２回及び１回のバス占有を行ったことと制御される。ここで、ＢＭ０はクロックサイクルＣＴ３で最優先順位バスマスタに指定されていたことにも関わらずバス要求を行わなかったので実際には２回のバス占有を行ったが、この際のＴ［０］を１程減少させてバス占有に関するレジスタ値の食い違いを防止することを理解することができる。即ち、現在ポインタレジスタの値ＰＴＲが指定するバスマスタに該当する臨時レジスタ値はそれのバスマスタがバス占有権を有するか有しないかに関係なく一回のバスアービトレーション時毎に１程減少され、現在ＰＴＲが指定しなくてもバス占有権を有したバスマスタの臨時レジスタ値も１程減少される。
【００４３】
一方、ＣＰＵのバス占有率が非常に高く、他のバスマスタのバス要求が毎回存在しない場合にバス占有率に関する値の食い違いを防止することにおいては、図７に示されたようにＣＰＵをデフォルト（ｄｅｆａｕｌｔ）バスマスタとし、５０％以上のバス占有率を保障する方法がある。即ち、ＣＰＵに５０％のバス占有率を保障し、他のｎ本のバスマスタ全体に残り５０％のバス占有率を割り当てる。これのために臨時レジスタファイルはＣＰＵを除外したｎ本のバスマスタに記録されたバス占有率調節に使用されて５０％のバス占有率内でバス占有率値の食い違いを防止するための調節機能を遂行する。
【００４４】
【発明の効果】
以上のように、本発明は多数本のバスマスタのバス占有率を自由にプログラムすることができることは勿論バス占有率に関する値の食い違いを防止する効果がある。
【図面の簡単な説明】
【図１】型的なバスシステムの構成図である。
【図２】来の多段階ラウンドロビン形式のバスアービトレーション方式を示した概略図である。
【図３】発明によるバスアービターの構成図である。
【図４】発明によるバス占有に関する状態図である。
【図５】発明によるバスアービトレーションの動作流れ図である。
【図６】発明によるバスアービターの動作タイミング図である。
【図７】発明を用いたバスアービトレーションの適用例を示す概念図である。
【符号の説明】
１０　バスアービター
１１，１３　レジスタファイル
１５　ポインタレジスタ
【図１】
2004005677.tif 000005
【図２】
2004005677.tif 000006
【図３】
2004005677.tif 000007
【図４】
2004005677.tif 000008
【図５】
2004005677.tif 000009
【図６】
2004005677.tif 000010
【図７】
2004005677.tif 000011