(57)【要約】【課題】バスアクセスの公平性を確保した調停回路およびデータ処理装置を提供する。【解決手段】調停回路１は、プライオリティチェックブロック２１とラウンドロビンブロック２２とを備えている。プライオリティチェックブロック２１では各プロセッサから与えられるプライオリティ情報をチェックし、優先順位の一番高いプライオリティ情報を出力しているプロセッサ、すなわち優先順位の一番高いプロセッサを見つけ、そのチェック結果ＣＨＫをラウンドロビンブロック２２に向けて出力する。ラウンドロビンブロック２２では、前回の調停動作の結果を保持しており、プライオリティチェック結果ＣＨＫと、前回の結果とから生成したラウンドロビン順位に基づいて、プロセッサ選択信号ＳＥを生成して出力する。【選択図】        図４
2004178056.tif 000002
【特許請求の範囲】
【請求項１】
共有バスによって接続された複数のバスマスタからのバスアクセス要求を調停する調停回路であって、
前記複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受け、前記複数のプライオリティ情報を比較し、最もプライオリティの高いマスタを特定してチェック結果を出力するプライオリティチェックブロックと、
ラウンドロビンブロックと、を備え、
前記ラウンドロビンブロックは、
ラウンドロビン制御により、前記複数のバスマスタのバスアクセス要求に対する優先順位を決定するラウンドロビン制御部と、
前記優先順位に基づいて作成され、少なくとも最優先のマスタのデータについてはマスキング対象としないマスクデータを用いて、前記チェック結果のデータをマスキングしてマスク済みチェック結果として出力するラウンドロビンマスク部と、
マスク済みチェック結果および前記チェック結果に基づいて、バスアクセス要求を受け付けるべきバスマスタを選択する最終選択部と、を有する調停回路。
【請求項２】
前記プライオリティチェックブロックは、
前記複数のプライオリティ情報を２つ１組で受けて、両者のプライオリティの高低をチェックして、その結果を出力プライオリティとして出力する複数の初段チェック回路と、
前記初段チェック回路からそれぞれ出力される複数の出力プライオリティを２つ１組で受けて、両者のプライオリティの高低をチェックする少なくとも１つの次段チェック回路と、を有する、請求項１記載の調停回路。
【請求項３】
前記チェック結果のデータおよび前記マスクデータは、前記複数のバスマスタのそれぞれに所定の１ビットが対応する多ビットデータであり、
前記マスクデータは、
前記最優先のマスタに対応するビットより上位のビットがマスキング対象とされ、
前記ラウンドロビンマスク部は、
前記チェック結果のデータと前記マスクデータとの論理演算を行うことで、前記マスク済みチェック結果を得る、請求項１記載の調停回路。
【請求項４】
前記マスク済みチェック結果および前記チェック結果のデータは、前記マスク済みチェック結果のデータが上位側、前記チェック結果のデータが下位側となる連続データとして前記最終選択部に与えられ、
前記最終選択部は、前記連続データの最上位側からサーチして、一番最初に所定の論理値がセットされたビット位置を見つけ、当該ビット位置に割り付けられたバスマスタを、前記要求を受け付けるべきバスマスタとする、請求項３記載の調停回路。
【請求項５】
共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、
前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、
前記プライオリティ生成回路は、自らが付属するバスマスタのバスアクセスが受け付けられなかった場合には前記プライオリティ情報をランクアップするデータ処理装置。
【請求項６】
前記プライオリティ生成回路は、
出力したプライオリティ情報ではバスアクセスが受け付けられなかった場合、前記出力したプライオリティ情報に対する所定値の加算あるいは減算を行って、新たなプライオリティ情報を設定するプライオリティ向上回路を備える、請求項５記載のデータ処理装置。
【請求項７】
前記プライオリティ生成回路は、
前記所定値の設定を行うプライオリティ変更幅設定レジスタをさらに備える、請求項６記載のデータ処理装置。
【請求項８】
前記プライオリティ生成回路は、前記プライオリティ情報のランクアップに制限を付加する制限回路をさらに備える、請求項６記載のデータ処理装置。
【請求項９】
共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、
前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、
前記プライオリティ生成回路は、バスマスタの動作周波数の変更に際して、複数の動作周波数のそれぞれに対応するプライオリティ情報のうちの１つを出力する、データ処理装置。
【請求項１０】
前記プライオリティ生成回路は、
前記複数の動作周波数のそれぞれに対応するプライオリティ情報が予め設定された複数のプライオリティ設定レジスタを備え、
前記バスマスタの動作周波数の変更に際して、前記複数のプライオリティ設定レジスタの何れかの設定値を選んで、前記プライオリティ情報として出力する、請求項９記載のデータ処理装置。
【請求項１１】
前記プライオリティ生成回路は、
前記バスマスタの動作周波数の変更に際して、基準となるプライオリティ情報に対する所定値の加算あるいは減算を行って、新たなプライオリティ情報を設定する増減処理回路を備える、請求項９記載のデータ処理装置。
【請求項１２】
前記プライオリティ生成回路は、前記新たなプライオリティ情報の最大値および最小値に制限を付加する制限回路をさらに備える、請求項１１記載のデータ処理装置。
【請求項１３】
共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、
前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、
前記プライオリティ生成回路は、バスマスタの状態の変更に際して、複数の状態のそれぞれに対応するプライオリティ情報のうちの１つを出力する、データ処理装置。
【請求項１４】
前記プライオリティ生成回路は、
前記複数の状態のそれぞれに対応するプライオリティ情報が予め設定された複数のプライオリティ設定レジスタを備え、
前記バスマスタの状態の変更に際して、前記複数のプライオリティ設定レジスタの何れかの設定値を選んで、前記プライオリティ情報として出力する、請求項１３記載のデータ処理装置。
【請求項１５】
前記複数の状態は、
前記バスマスタ内の中央演算処理装置が分岐命令を検出し、分岐先の命令フェッチ要求を出している状態、
前記中央演算処理装置の命令キューが空の状態、
前記中央演算処理装置内のストアバッファがフルで次のストアが待っている状態の何れかである、請求項１３記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数のバスマスタが共有バスで接続されたデータ処理装置において、バスアクセス要求を調停する調停回路に関し、特に、複数のプロセッサが共有バスで接続されるマルチプロセッサにおける調停回路に関する。
【０００２】
【従来の技術】
複数のＩ／Ｏモジュールがバスを共有する場合に、各Ｉ／Ｏモジュールからのバスアクセスを調停するために、ラウンドロビン制御と呼称される方式が採用されている。
【０００３】
ラウンドロビン制御は、各Ｉ／Ｏモジュールのバスアクセスの割合を均等にするため、バスアクセスが許可されたＩ／Ｏモジュールに対しては、アクセスの優先度を最も低くする制御方式である。
【０００４】
ラウンドロビン制御を用いた従来技術としては、例えば、特許文献１に、優先度制御とラウンドロビン制御とを組み合わせることで、Ｉ／Ｏモジュールの重要度に対応してアクセスを許可する方式が開示されている。
【０００５】
また、特許文献２においても、優先度制御とラウンドロビン制御とを組み合わせて使用し、プロセッサごとに２種類の優先度を持たせ、２種類の優先度の組み合わせによって、最優先のプロセッサを決める技術が開示されている。
【０００６】
また、特許文献３においては、優先順位が低いモジュールが、バスアクセスを拒否された時間を計測し、予め設定された時間以上バスアクセスができなかった場合には、当該モジュールに優先的にバスアクセスさせる技術が開示されている。
【０００７】
【特許文献１】特開平１０−９１５７７号公報（第３欄〜第１１欄、図１〜図３）
【特許文献２】特開平４−３２８６６５号公報（第４頁〜第６頁、図１〜図３）
【特許文献３】特開平１−１９７８６５号公報（第３頁〜第５頁、図１〜図６）
【０００８】
【発明が解決しようとする課題】
一般的なラウンドロビン制御では、各Ｉ／Ｏモジュールの要求内容にかかわらず、要求があれば順番に受け付けるので、システム動作上の重要な要求も、命令のプリフェッチ（データの事前読み込み）のような無効になるかもしれない要求も区別していなかった。これに対し、特許文献１〜３では、優先度を考慮した制御を併せて行う例が開示されているが、優先度の低いＩ／Ｏモジュールが、全くバスアクセスできない可能性を含んでおり、バスアクセスの公平性を欠くことになる可能性があった。
【０００９】
本発明は上記のような問題点を解消するためになされたもので、バスアクセスの公平性を確保した調停回路およびデータ処理装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明に係る請求項１記載の調停回路は、共有バスによって接続された複数のバスマスタからのバスアクセス要求を調停する調停回路であって、前記複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受け、前記複数のプライオリティ情報を比較し、最もプライオリティの高いマスタを特定してチェック結果を出力するプライオリティチェックブロックと、ラウンドロビンブロックとを備え、前記ラウンドロビンブロックは、ラウンドロビン制御により、前記複数のバスマスタのバスアクセス要求に対する優先順位を決定するラウンドロビン制御部と、前記優先順位に基づいて作成され、少なくとも最優先のマスタのデータについてはマスキング対象としないマスクデータを用いて、前記チェック結果のデータをマスキングしてマスク済みチェック結果として出力するラウンドロビンマスク部と、マスク済みチェック結果および前記チェック結果に基づいて、バスアクセス要求を受け付けるべきバスマスタを選択する最終選択部とを有している。
【００１１】
本発明に係る請求項５記載のデータ処理装置は、共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、前記プライオリティ生成回路は、自らが付属するバスマスタのバスアクセスが受け付けられなかった場合には前記プライオリティ情報をランクアップする。
【００１２】
本発明に係る請求項９記載のデータ処理装置は、共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、前記プライオリティ生成回路は、バスマスタの動作周波数の変更に際して、複数の動作周波数のそれぞれに対応するプライオリティ情報のうちの１つを出力する。
【００１３】
本発明に係る請求項１３記載のデータ処理装置は、共有バスによって接続された複数のバスマスタのそれぞれから出力される複数のプライオリティ情報を受けて、バスアクセス要求を調停する調停回路を備えたデータ処理装置であって、前記複数のバスマスタは、それぞれのプライオリティ情報を生成するプライオリティ生成回路を備え、前記プライオリティ生成回路は、バスマスタの状態の変更に際して、複数の状態のそれぞれに対応するプライオリティ情報のうちの１つを出力する。
【００１４】
【発明の実施の形態】
＜システムの全体構成＞
コンピュータシステムにおいては、バスマスタとなるＣＰＵの他にも、バスマスタを備え、これら複数のバスマスタが共有バスで接続されている。特に最近では、複数のバスマスタとして、複数のプロセッサが共有バスで接続されたマルチプロセッサも開発されている。このように、複数のバスマスタを有するシステムでは、バスアクセス要求を調停する調停回路の機能が重要となる。
【００１５】
まず、本発明に係る調停回路を適用したデータ処理装置の１例について、全体構成を示す図１を用いて説明する。
【００１６】
図１に示すデータ処理装置１００は、バスマスタとしてプロセッサＰ０、Ｐ１、Ｐ２およびＰ３の４つのプロセッサを有し、各プロセッサは１本の共有バスＳＢを介してメモリなどのアクセス対象物（以後、ターゲットと呼称）ＴＧに接続されている。
【００１７】
また、プロセッサＰ０〜Ｐ３からは、それぞれ要求ＲＱ０、ＲＱ１、ＲＱ２およびＲＱ３（この要求を満たすには、バスへのアクセスを必要とするのでバスアクセス要求と呼称する場合もある）が出力され、当該バスアクセス要求ＲＱ０〜ＲＱ３は、調停回路１に与えられる。
【００１８】
ここで、プロセッサＰ０〜Ｐ３からは、プライオリティ情報ＰＲ０、ＰＲ１、ＰＲ２およびＰＲ３も出力され、調停回路１に与えられる。調停回路１では、各プロセッサのバスアクセス要求が輻輳した場合には、ラウンドロビン制御による優先順位と各プロセッサのプライオリティ情報ＰＲ０からＰＲ３による優先順位とを組み合わせて調停動作が実行され、プロセッサ選択信号ＳＥを出力してバスの使用権を何れかのプロセッサに与える。
【００１９】
バスの使用権を得たプロセッサの要求は、ターゲットアクセス要求ＴＡＣとして調停回路１からターゲットＴＧに与えられ、ターゲットで処理された後、処理結果がプロセッサに返される。
【００２０】
この調停回路１に本発明に係る調停回路を適用することで、バスアクセスの公平性を確保することができる。
【００２１】
＜Ａ．実施の形態１＞
本発明に係る実施の形態１として、上述した調停回路１の構成および動作について説明する。
【００２２】
＜Ａ−１．装置構成＞
＜Ａ−１−１．プロセッサの構成＞
まず、図１に示したプロセッサＰ０〜Ｐ３の構成例について、図２を用いて説明する。なお、プロセッサＰ０〜Ｐ３の構成は同一であり、図２においてはプロセッサＰ０を例にとって説明する。
【００２３】
図２に示すように、プロセッサＰ０はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１２、命令キャッシュ１３およびデータキャッシュ１４を備え、命令キャッシュ１２およびデータキャッシュ１４からの要求ＲＱＡおよびＲＱＢは、セレクタ１５でどちらか一方が選択され、要求ＲＱ０として出力される。
【００２４】
また、プライオリティ生成回路１６を備え、バスアクセス要求の出力時にはプライオリティ生成回路１６で生成されたプライオリティ値をプライオリティ情報ＰＲ０として同時に出力する。なお、プライオリティ生成回路１６は、予め定めたソフトウェア等に基づいて、それぞれのプロセッサの優先順位に見合うプライオリティ値を生成する。
【００２５】
なお、図２に示すプロセッサＰ０においては、プライオリティ生成回路１６を１つ有する構成であったが、図３に示すプロセッサＰ０Ｘのように、命令キャッシュ１３およびデータキャッシュ１４のそれぞれにプライオリティ生成回路１６が付属する構成としても良い。
【００２６】
すなわち、命令キャッシュ１３からの要求（例えば命令フェッチ）ＲＱＡとデータキャッシュ１４からの要求（例えばデータアクセス）ＲＱＢに対して、個別にプライオリティ情報ＰＲＡおよびＰＲＢを設定できるように構成しても良い。この場合、セレクタ１５１においては、それぞれの要求を選択する際にプライオリティ情報ＰＲＡおよびＰＲＢを比較し、プライオリティが高い方の要求を選択し、要求ＲＱ０およびプライオリティ情報ＰＲ０として出力する。
【００２７】
＜Ａ−１−２．調停回路の構成＞
次に、図４〜図６を用いて調停回路１の構成について説明する。
図４は、調停回路１の構成を示すブロック図である。図４に示すように調停回路１は、プライオリティチェックブロック２１とラウンドロビンブロック２２とを備えている。
【００２８】
プライオリティチェックブロック２１では各プロセッサから与えられるプライオリティ情報をチェックし、優先順位の一番高いプライオリティ情報を出力しているプロセッサ、すなわち優先順位の一番高いプロセッサを見つけ、そのチェック結果ＣＨＫをラウンドロビンブロック２２に向けて出力する。
【００２９】
ラウンドロビンブロック２２では、前回の調停動作の結果を保持しており、プライオリティチェック結果ＣＨＫと、前回の結果とから生成したラウンドロビン順位に基づいて、プロセッサ選択信号ＳＥを生成して出力する。
【００３０】
＜Ａ−１−２−１．プライオリティチェックブロック＞
次に、図５を用いてプライオリティチェックブロック２１の構成について説明する。
【００３１】
図５に示すようにプライオリティチェックブロック２１は、プライオリティの高低をトーナメント方式で比較することで最終チェック結果を出力する構成を有し、初段チェック回路２１１および２１２と、初段チェック回路２１１および２１２の出力を受けて、さらに比較を行う、最終段チェック回路２１３を備えている。
【００３２】
初段チェック回路２１１は、それぞれ４ビットのプライオリティ情報ＰＲ０およびＰＲ１を受け、プライオリティのチェック結果を、２ビットの選択ビットＳＢ１および４ビットの出力プライオリティＯＰ１として出力し、初段チェック回路２１２は、それぞれ４ビットのプライオリティ情報ＰＲ２およびＰＲ３を受け、比較結果を、２ビットの選択ビットＳＢ２および４ビットの出力プライオリティＯＰ２として出力する。
【００３３】
選択ビットＳＢ１およびＳＢ２、出力プライオリティＯＰ１およびＯＰ２は、次段のチェック回路でもある最終段チェック回路２１３に与えられ、最終段チェック回路２１３において比較し４ビットのプライオリティチェック結果ＣＨＫを出力する。
【００３４】
図５に示すプライオリティチェックブロック２１の回路構成では、プロセッサ数の変動に対して、単純にチェック回路を追加あるいは削減すること対応することができる。例えば、プロセッサ数が２倍の８個になった場合、初段チェック回路を２個増設し、初段チェック回路と最終段チェック回路との間に、初段チェック回路の出力をチェックする新たなチェック回路を設けることで対処できる。
【００３５】
また、この場合、プロセッサ数の２倍増に対して、チェック回路の段数は、新たに加えた１段分が増加になるだけであるので、プライオリティチェックブロックにおける遅延時間がプロセッサ数の増加分に比例して増えるということがない。
【００３６】
プライオリティチェックブロック２１の動作を、さらに具体的に説明する。プロセッサＰ０のプライオリティ情報（数値で表されるので、以下プライオリティ値と呼称する）をプライオリティ（０）、プロセッサＰ１のプライオリティ値をプライオリティ（１）とする。プライオリティ値は、値が小さい方が優先順位は高いものと規定すると、初段チェック回路２１１からの出力は以下の表１に示すようになる。なお、初段チェック回路２１２から出力される、プロセッサＰ２およびＰ３の比較結果も同様である。
【００３７】
【表１】
2004178056.tif 000003
【００３８】
以下、表１の記載に基づいて初段チェック回路２１２の動作について説明する。要求０および要求１とは、それぞれプロセッサＰ０およびＰ１からのバスアクセス要求の有無を１ビットで表したものであり、バスアクセス要求がない場合を０、バスアクセス要求がある場合を１としている。
【００３９】
プライオリティ値比較の項目において、任意とあるのは、何れのプロセッサからもバスアクセス要求がない場合、および何れか一方のプロセッサのみからバスアクセス要求があった場合には、初段チェック回路ではプライオリティ値の比較動作をしてもしなくても良いことを表している。
【００４０】
すなわち、何れのプロセッサからもバスアクセス要求がない場合には、比較することに意味はなく、何れか一方のプロセッサのみからバスアクセス要求があった場合には、バスアクセス要求があったプロセッサを無条件に選択すれば良いからである。
【００４１】
なお、両方のプロセッサからバスアクセス要求があった場合にはプライオリティ値の比較動作が必須であり、それぞれのプライオリティ値を比較する。
【００４２】
ここで、比較結果には３つのパターンがある。すなわち、プライオリティ（０）がプライオリティ（１）より大きい場合、プライオリティ（０）とプライオリティ（１）とが等しい場合、プライオリティ（０）がプライオリティ（１）より小さい場合の３通りである。
【００４３】
そして、プライオリティ値の比較結果に基づいて、２ビットの選択ビットが決定される。
【００４４】
すなわち、どちらか片方のプロセッサのみが要求を出している場合は対応するプロセッサのビットを１とし、他方のプロセッサのビットを０にする。両方のプロセッサが要求を出している場合はプライオリティ値の比較結果によって選択ビットが異なる。
【００４５】
より具体的には、両方のプロセッサがバスアクセス要求を出さない場合は、選択ビットとして「００」を出力する。ここで、表１において「２ｂ００」としているのは、２ビットの信号であることを明示するためである。
【００４６】
プロセッサＰ０のみがバスアクセス要求を出している場合は、選択ビットとして「１０」を出力し、プロセッサＰ１のみがバスアクセス要求を出している場合は、選択ビットとして「０１」を出力する。
【００４７】
また、両方のプロセッサがバスアクセス要求を出し、プライオリティ（０）がプライオリティ（１）より大きい場合は、選択ビットとして「０１」を出力し、プライオリティ（０）とプライオリティ（１）とが等しい場合は、選択ビットとして「１１」を出力し、プライオリティ（０）がプライオリティ（１）より小さい場合は、選択ビットとして「１０」を出力する。
【００４８】
選択ビットと共に、選択されたプロセッサのプライオリティ値が、４ビットの出力プライオリティとして出力されるが、選択ビットが「００」の場合は、出力プライオリティはどのような値でも構わない。また、どちらか片方のプロセッサのみが要求を出している場合は、当該プロセッサのプライオリティ値が出力される。両方のプロセッサが要求を出している場合は、プライオリティ値の比較結果に基づいて、優先順位の高い方、ここではプライオリティ値の小さい方のプロセッサのプライオリティ値が出力されるが、両方のプライオリティ値が等しい場合は、何れかが出力される。
【００４９】
最終段チェック回路２１３は、初段チェック回路２１１および２１２から出力される選択ビットＳＢ１およびＳＢ２を受けて、４つのプロセッサの優先順位の最終比較結果を、プライオリティチェック結果ＣＨＫとして出力する。
【００５０】
ここで、初段チェック回路２１１および２１２から出力される出力プライオリティを、それぞれプライオリティ（０１）および（２３）とし、初段チェック回路２１１および２１２から出力される選択ビットを、それぞれＳｅｌｂ（０１）およびＳｅｌｂ（２３）とすると、最終段チェック回路２１３からの出力は以下の表２に示すようになる。
【００５１】
【表２】
2004178056.tif 000004
【００５２】
以下、表２の記載に基づいて最終段チェック回路２１３の動作について説明する。最終段チェック回路２１３は、初段チェック回路２１１および２１２におけるバスアクセス要求の代わりに、まず、初段チェック回路２１１および２１２から出力される選択ビットを比較する。
【００５３】
そして、選択ビットＳｅｌｂ（０１）およびＳｅｌｂ（２３）が、共に「００」の場合は、プライオリティ値の比較動作は任意であり、最終チェック結果として「００００」を出力する。ここで、表２において「４ｂ００００」としているのは、４ビットの信号であることを明示するためである。
【００５４】
また、選択ビットＳｅｌｂ（０１）およびＳｅｌｂ（２３）の一方のみが「００」である場合もプライオリティ値の比較動作は任意であるが、この場合は、最終チェック結果として選択ビットＳｅｌｂ（０１）およびＳｅｌｂ（２３）の値を、Ｓｅｌｂ（０１）、Ｓｅｌｂ（２３）の順に並べて４ビットの値として出力する。
【００５５】
例えば、選択ビットＳｅｌｂ（０１）のみが「００」である場合は、「２ｂ００，Ｓｅｌｂ（２３）」として出力する。ここで、「２ｂ００，Ｓｅｌｂ（２３）」は上位２ビットが「００」、下位２ビットが「Ｓｅｌｂ（２３）」の値となった４ビットの値であることを示す。
【００５６】
また、選択ビットＳｅｌｂ（０１）およびＳｅｌｂ（２３）の両方が「００」でない場合には比較動作が必須であり、それぞれのプライオリティ値を比較する。
【００５７】
ここで、比較結果には３つのパターンがある。すなわち、プライオリティ（０１）がプライオリティ（２３）より大きい場合、プライオリティ（０１）とプライオリティ（２３）とが等しい場合、プライオリティ（０１）がプライオリティ（２３）より小さい場合の３通りである。
【００５８】
そして、最終チェック結果は、プライオリティ値の比較結果に基づいて、選択ビットＳｅｌｂ（０１）およびＳｅｌｂ（２３）の値を、Ｓｅｌｂ（０１）およびＳｅｌｂ（２３）の順に並べて４ビットの値として出力される。この場合、優先順位の高い方、ここではプライオリティ値の小さい方選択ビットについてはそのまま出力されるが、プライオリティ値の大きい方の選択ビットは、「００」に置き換えられて出力される。
【００５９】
より具体的には、プライオリティ（０１）がプライオリティ（２３）より大きい場合は、最終チェック結果として「２ｂ００，Ｓｅｌｂ（２３）」を出力し、プライオリティ（０１）がプライオリティ（２３）より小さい場合は、最終チェック結果として「Ｓｅｌｂ（０１），２ｂ００）」を出力する。
【００６０】
また、プライオリティ（０１）とプライオリティ（２３）とが等しい場合は、「Ｓｅｌｂ（０１），Ｓｅｌｂ（２３）」のように、両方の選択ビットを出力する。
【００６１】
＜Ａ−１−２−２．ラウンドロビンブロック＞
次に、図６を用いてラウンドロビンブロック２２の構成について説明する。
図６に示すように、ラウンドロビンブロック２２は、ラウンドロビン制御部２２１、ラウンドロビンマスク部２２２、最終選択部２２３を備えている。
【００６２】
ラウンドロビン制御部２２１は、最優先プロセッサ番号生成回路２２１１と、ラウンドロビン順位保持レジスタ２２１２とを備えている。最優先プロセッサ番号生成回路２２１１では、前回の調停動作の結果に基づいて、新たな最優先プロセッサ番号ＰＮを含むラウンドロビン順位ＲＲを生成し、当該ラウンドロビン順位ＲＲをラウンドロビン順位保持レジスタ２２１２に保持する。ラウンドロビン順位保持レジスタ２２１２は、調停動作のタイミングに応じて、最優先プロセッサ番号ＰＮを出力する。
【００６３】
なお、最優先プロセッサ番号生成回路２２１１は、前回の調停動作によってバスアクセスが許可されたプロセッサに対しては、アクセスの優先度を最も低くするように動作する。
【００６４】
ラウンドロビンマスク部２２２は、ラウンドロビン制御部２２１から出力される最優先プロセッサ番号ＰＮを受けて、所定のデータをマスキングするためのマスクデータＭＤを生成するマスク生成回路２２２１と、マスク生成回路２２２１から出力されるマスクデータＭＤと、プライオリティチェックブロック２１から出力されるプライオリティチェック結果ＣＨＫとを受け、ＡＮＤ演算を行って、プライオリティチェック結果をマスクし、４ビットのマスク済みチェック結果ＭＣＨを出力するマスク回路２２２２とを備えている。
【００６５】
ここで、マスクデータＭＤは４ビットのデータであり、その最上位ビットは、プロセッサＰ０に割り付けられ、残る３ビットは、プロセッサＰ１、Ｐ２、Ｐ３の順に割り付けられている。そして、マスクデータＭＤの生成にあたっては、最優先プロセッサの番号に対応したビット位置以下のビットを全て「１」とし、最優先プロセッサ以下のプロセッサのプライオリティデータについてはマスキング対象とせず、最優先プロセッサの番号に対応したビット位置より上位のビットを全て「０」とし、最優先プロセッサより上位のプライオリティデータについてはマスキング対象とするように生成される。
【００６６】
以下の表３に、最優先プロセッサ番号に対応するマスクデータＭＤの一覧を示す。
【００６７】
【表３】
2004178056.tif 000005
【００６８】
表３に示すように、最優先プロセッサがプロセッサＰ０である場合、最上位ビットがプロセッサＰ０に対応するので、最上位ビット以下、全てのビットに「１」が設定され（すなわち全てのプロセッサのプライオリティデータがマスキング対象とされない）、マスクデータＭＤは「１１１１」となる。同様に、最優先プロセッサがプロセッサＰ１である場合は、マスクデータＭＤは「０１１１」（すなわちプロセッサＰ１のプライオリティデータのみがマスキング対象とされる）となり、最優先プロセッサがプロセッサＰ２である場合は、マスクデータＭＤは「００１１」（すなわちプロセッサＰ０およびＰ１のプライオリティデータのみがマスキング対象とされる）に、最優先プロセッサがプロセッサＰ３である場合は、マスクデータＭＤは「０００１」（すなわちプロセッサＰ０〜Ｐ２のプライオリティデータがマスキング対象とされる）になる。
【００６９】
ここで、ラウンドロビン制御部２２１で設定された最優先プロセッサがプロセッサＰ２であり、一方、プライオリティチェックブロック２１で判定された優先度は、プロセッサＰ０およびＰ３が同じプライオリティ値で、共に最優先の場合を仮定すると、マスク回路２２２２では、マスクデータＭＤとして「００１１」を受け、プライオリティチェック結果ＣＨＫとして「１００１」を受ける。
【００７０】
従って、マスク回路２２２２でＡＮＤ演算を行うと、マスク済みチェック結果ＭＣＨは「０００１」となる。
【００７１】
マスク回路２２２２から出力されるマスク済みチェック結果ＭＣＨおよび、プライオリティチェックブロック２１から出力されるプライオリティチェック結果ＣＨＫは、最終選択部２２３に与えられる。
【００７２】
ここで、マスク済みチェック結果ＭＣＨを、最終選択部２２３の上位４ビットとして入力とし、下位４ビットにはプライオリティチェック結果ＣＨＫを入力する。
【００７３】
最終選択部２２３は、例えばプライオリティエンコーダで構成され、入力データを上位からサーチして、一番最初に「１」がセットされた位置を見つけ出し、当該位置から要求を受け付けるべきプロセッサの番号を知得する。
【００７４】
すなわち、４ビットのマスク済みチェック結果ＭＣＨと、４ビットのプライオリティチェック結果とを並べ、最上位ビットをプロセッサＰ０に割り付け、以下、各ビットに、プロセッサＰ１、Ｐ２、Ｐ３を順に割り付け、５ビット目には再びプロセッサＰ０を割り付け、以下、各ビットに、プロセッサＰ１、Ｐ２、Ｐ３を順に割り付けるようにすると、一番最初に「１」がセットされたビット位置に対応する番号のプロセッサが、要求を受け付けるべきプロセッサ、すなわちバスアクセス権を与えるべきプロセッサということになる。
【００７５】
例えば、プロセッサＰ１が最優先で、プライオリティチェック結果ＣＨＫが「０１００」であり、ラウンドロビン順位が、Ｐ２，Ｐ３，Ｐ０，Ｐ１の場合、マスクデータＭＤは「００１１」（プロセッサＰ２に対応する３ビット目以下が全て「１」）となる。そして、マスク回路２２２２により、マスクデータＭＤとプライオリティチェック結果ＣＨＫとのＡＮＤ演算を行うことで、マスク済みチェック結果ＭＣＨとして「００００」を得る。
【００７６】
従って、最終選択部２２３への入力は、００００＿０１００となる（上位４ビットはマスク済みチェック結果、下位４ビットはプライオリティチェック結果ＣＨＫに対応）。
【００７７】
最終選択部２２３でのエンコード結果は、最上位から６ビット目において一番最初に「１」を検知し、プロセッサＰ１が要求を受け付けるべきプロセッサとなる。
【００７８】
調停回路１では要求を受け付けると、ターゲットＴＧへのターゲットアクセス要求ＴＡＣを出力する。また、プロセッサ選択信号ＳＥで選択されたプロセッサは、要求内容を共有バスＳＢに出力する。ターゲットＴＧは、ターゲットアクセス要求ＴＡＣがアサートされているときの共有バスＳＢの通信内容を受けて処理を行い、処理結果を共有バスＳＢを介してプロセッサに送る。
【００７９】
＜Ａ−２．装置動作＞
図７に、以上説明した調停動作をとりまとめてタイミングチャートとして示す。以下、図４〜図６を参照しつつ、幾つかの代表例を用いてタイミングチャートの読み方の一例を示す。
【００８０】
図７において、要求ＲＱ０〜ＲＱ３は、信号パルスが立ち上がった状態で、バスアクセス要求を出していることを示している。また、最高順位プロセッサ番号は、プロセッサＰ０〜Ｐ３のうち、最高順位にあるものの番号を示しており、簡単化のため０〜３の数値で示している。なお、最高順位がプロセッサＰ０である場合、以下プロセッサＰ１、Ｐ２、Ｐ３の順番となり、最高順位がプロセッサＰ３である場合、以下プロセッサＰ０、Ｐ１、Ｐ２の順番となり、いわゆるラウンドロビン制御に従うので、ラウンドロビン順位と呼称する。
【００８１】
また、プライオリティ情報ＰＲ０、ＰＲ１、ＰＲ２およびＰＲ３としてのプライオリティ値は、０〜１５の１６段階の値を採れるが、ここでは１〜４の値を各プロセッサが使用するものとする。
【００８２】
また、受け付けプロセッサ番号は、調停回路１による調停動作の最終結果として、バスアクセス要求を受け付けるべきプロセッサの番号を示しており、簡単化のため０〜３の数値で示している。
【００８３】
図７に示す期間Ｔ１においては、プロセッサＰ０およびＰ２のみがバスアクセス要求を出しており、ラウンドロビン順位は０、１、２、３であり、図６に示すマスク生成回路２２２１が出力するマスクデータは「１１１１」である。
【００８４】
また、プロセッサＰ０のプライオリティ値は２（プライオリティ（０）＝２）であり、プロセッサＰ２のプライオリティ値は４（プライオリティ（２）＝４）である。
【００８５】
このとき、図５に示すプライオリティチェックブロック２１の初段チェック回路２１１におけるプロセッサＰ０とＰ１との比較結果として得られる選択ビットＳｅｌｂ（０１）は「１０」となり、初段チェック回路２１２におけるプロセッサＰ２とＰ３との比較結果として得られる選択ビットＳｅｌｂ（２３）は「１０」となる。
【００８６】
また、初段チェック回路２１１から出力される出力プライオリティは２（プライオリティ（０１）＝２）、初段チェック回路２１２から出力される出力プライオリティは４（プライオリティ（２３）＝４）となる。
【００８７】
従って、最終段チェック回路２１３におけるプライオリティチェック結果は「１０００」、ラウンドロビンマスク部２２２２においてマスクデータ「１１１１」とプライオリティチェック結果「１０００」とのＡＮＤ演算を行うことで、マスク済みチェック結果は「１０００」となる。
【００８８】
そして、図６に示すマスク回路２２２２から出力されるマスク済みチェック結果「１０００」および、プライオリティチェックブロック２１から出力されるプライオリティチェック結果「１０００」は、最終選択部２２３に、それぞれ上位４ビット、下位４ビットの８ビットデータ（１０００＿１０００）として与えられる。
【００８９】
そして、最終選択部２２３でのエンコードの結果、プロセッサＰ０の要求を受けることになる。
【００９０】
また、期間Ｔ２においては、プロセッサＰ０、Ｐ２およびＰ３がバスアクセス要求を出しており、ラウンドロビン順位は、期間Ｔ１においてプロセッサＰ０のバスアクセスが受け付けられたので、図６に示す最優先プロセッサ番号生成回路２２１１では、ラウンドロビン制御に基づいて、ラウンドロビン順位を１、２、３、０とし、マスク生成回路２２２１が出力するマスクデータは「０１１１」となる。
【００９１】
また、プロセッサＰ０のプライオリティ値は４（プライオリティ（０）＝４）、プロセッサＰ２のプライオリティ値は４（プライオリティ（２）＝４）、プロセッサＰ３のプライオリティ値は４（プライオリティ（３）＝４）である。このように、同じプライオリティを有するマスタが複数存在し、その他のマスタはバスアクセス要求出していないような場合は、最もプライオリティの高いマスタが複数存在すると言うことができる。
【００９２】
このとき、プライオリティチェックブロック２１の初段チェック回路２１１におけるプロセッサＰ０とＰ１との比較結果として得られる選択ビットＳｅｌｂ（０１）は「１０」となり、初段チェック回路２１２におけるプロセッサＰ２とＰ３との比較結果として得られる選択ビットＳｅｌｂ（２３）はプロセッサＰ２およびＰ３のプライオリティ値が等しいため、「１１」となる。
【００９３】
また、初段チェック回路２１１から出力される出力プライオリティは４（プライオリティ（０１）＝４）、初段チェック回路２１２から出力される出力プライオリティは４（プライオリティ（２３）＝４）となる。
【００９４】
従って、最終段チェック回路２１３におけるプライオリティチェック結果は「１０１１」、ラウンドロビンマスク部２２２２においてマスクデータ「０１１１」とプライオリティチェック結果「１０１１」とのＡＮＤ演算を行うことで、マスク済みチェック結果は「００１１」となる。
【００９５】
そして、マスク回路２２２２から出力されるマスク済みチェック結果「００１１」および、プライオリティチェックブロック２１から出力されるプライオリティチェック結果「１０１１」は、最終選択部２２３に、それぞれ上位４ビット、下位４ビットの８ビットデータ（００１１＿１０１１）として与えられる。
【００９６】
そして、最終選択部２２３でのエンコードの結果、プロセッサＰ２の要求を受けることになる。
【００９７】
また、期間Ｔ６においては、プロセッサＰ１およびＰ２のみがバスアクセス要求を出しており、ラウンドロビン順位は３、０、１、２であり、図６に示すマスク生成回路２２２１が出力するマスクデータは「０００１」である。
【００９８】
また、プロセッサＰ１のプライオリティ値は４（プライオリティ（１）＝４）であり、プロセッサＰ２のプライオリティ値は４（プライオリティ（２）＝４）である。
【００９９】
このとき、図５に示すプライオリティチェックブロック２１の初段チェック回路２１１におけるプロセッサＰ０とＰ１との比較結果として得られる選択ビットＳｅｌｂ（０１）は「０１」となり、初段チェック回路２１２におけるプロセッサＰ２とＰ３との比較結果として得られる選択ビットＳｅｌｂ（２３）は「１０」となる。
【０１００】
また、初段チェック回路２１１から出力される出力プライオリティは４（プライオリティ（０１）＝４）、初段チェック回路２１２から出力される出力プライオリティは４（プライオリティ（２３）＝４）となる。
【０１０１】
従って、最終段チェック回路２１３におけるプライオリティチェック結果は「０１１０」、ラウンドロビンマスク部２２２２においてマスクデータ「０００１」とプライオリティチェック結果「０１１０」とのＡＮＤ演算を行うことで、マスク済みチェック結果は「００００」となる。
【０１０２】
そして、図６に示すマスク回路２２２２から出力されるマスク済みチェック結果「００００」および、プライオリティチェックブロック２１から出力されるプライオリティチェック結果「０１１０」は、最終選択部２２３に、それぞれ上位４ビット、下位４ビットの８ビットデータ（００００＿０１１０）として与えられる。
【０１０３】
そして、最終選択部２２３でのエンコードの結果、プロセッサＰ１の要求を受けることになる。
【０１０４】
＜Ａ−３．効果＞
以上説明したように、本発明に係る調停回路の実施の形態１においては、プライオリティによる調停とラウンドロビンによる調停を組み合わせることで、優先度の高いバスアクセス要求を有するプロセッサに、優先的にバスアクセス権を与えることができるだけでなく、ラウンドロビン順位に基づいて、少なくとも最優先のプロセッサのデータについてはマスキング対象とされていないマスクデータを用いて、プライオリティ値のチェック結果のデータをマスキングすることで、幾つかのプライオリティ情報が無効になる状態を得ることができ、プライオリティ情報の影響が減殺されて、少ない回路規模でバスアクセスの公平性を確保した調停を行うことができる。
【０１０５】
＜Ｂ．実施の形態２＞
以上説明した実施の形態１においては、図１に示す調停回路１の構成および動作について説明し、バスアクセスの公平性を確保できるという効果を奏する旨を説明したが、本発明に係る実施の形態２として、バスアクセスのさらなる公平性を確保する構成について説明する。
【０１０６】
＜Ｂ−１．装置構成＞
図２において、プロセッサＰ０〜Ｐ３内には、それぞれプライオリティ生成回路１６を備えており、バスアクセス要求の出力時にはプライオリティ生成回路１６で生成されたプライオリティ値をプライオリティ情報として同時に出力することを説明したが、この機能に加えて、バスアクセスが受け付けられなかった場合にはプライオリティ値をランクアップする機能を有するプライオリティ生成回路１６Ａの構成について図８を用いて説明する。
【０１０７】
図８に示すように、プライオリティ生成回路１６Ａは、予め定めたソフトウェアに基づいて、それぞれのプロセッサの優先順位に見合うプライオリティ値を生成するプライオリティ設定レジスタ１６１と、プライオリティ設定レジスタ１６１で生成したプライオリティ値と、後に説明する新たなプライオリティ値とを比較して選択するセレクタ１６２と、セレクタ１６２で選択されたプライオリティ値を一旦保持し、所定のタイミングで外部に出力するプライオリティ出力レジスタ１６３とを備えている。図１に示したプライオリティ生成回路１６は、このプライオリティ設定レジスタ１６１およびプライオリティ出力レジスタ１６３を備えて構成されるが、プライオリティ生成回路１６Ａについては、さらに以下の構成を備えている。
【０１０８】
すなわち、図１に示す調停回路１による調停の結果、出力したプライオリティ値ではバスアクセス権を取得できなかった場合、すなわち、プロセッサの要求が受け付けられなかった場合、当該情報を取得して、現在設定しているプライオリティ値から、所定数、例えば１を減じて、新たなプライオリティ値を設定するプライオリティ向上回路１６５と、プライオリティ向上回路１６５が設定したプライオリティ値に制限をかける制限マスク回路１６４とを備えている。
【０１０９】
そして、制限マスク回路１６４を介して、新たなプライオリティ値がセレクタ１６２に与えられ、セレクタ１６２において、新たなプライオリティ値が選択されて、プライオリティ出力レジスタ１６３に与えられる。なお、プロセッサの要求が受け付けられ、新たに次の要求を出力する場合は、プライオリティ設定レジスタ１６１の値が選択されてプライオリティ出力レジスタ１６３に与えられる。
【０１１０】
また、プライオリティ向上回路１６５には、プライオリティ値の変更幅を設定するプライオリティ変更幅設定レジスタ１６７が付属している。これは、現在設定しているプライオリティ値から減じる数値の大きさを設定するもので、上記においては、その値を１としたが、他の値、例えば２や３に変更する場合に使用する。なお、プライオリティ変更幅設定レジスタ１６７の設定値を０にするとプライオリティのランクアップは行われず、実施の形態１において説明したプライオリティ生成回路１６と同じ動作となる。
【０１１１】
なお、これまでの説明においては、プライオリティ値が小さい方が、プライオリティが高いとしたが、プライオリティ値が大きい方が、プライオリティが高いとする場合には、プライオリティ向上回路１６５では、現在設定しているプライオリティ値に所定数を加算することになり、プライオリティ変更幅設定レジスタ１６７は、当該、加算すべき所定値を設定するものとなる。
【０１１２】
また、制限マスク回路１６４には、制限値設定レジスタ１６６が接続され、制限マスク回路１６４でのマスク値を設定する構成となっている。例えば、プライオリティ向上回路１６５においては、他のプロセッサのバスアクセス要求が受け付けられるたびに、プライオリティ出力レジスタ１６３の値を１ずつ減じるように動作するが、制限マスク回路１６４でのマスク値、すなわち制限値設定レジスタ１６６で設定されたマスク値（この場合、最小マスク値）を超えてデクリメントされた場合には、最小マスク値に変更する構成となっている。
【０１１３】
この制限値設定レジスタ１６６は、図２に示すプロセッサ内のＣＰＵ１１において、このプロセッサがどこまで優先順位を上げることができるかを示す値として設定される。
【０１１４】
例えば、当初のプライオリティ設定レジスタで設定したプライオリティ値が５で、制限値設定レジスタ１６６で設定された最小マスク値が２である場合、要求スタート時にはプライオリティ値は５であるが、バスアクセス要求が受け入れられない状態が続くと、そのたびにプライオリティ値が４、３と減っていく。しかし、最小マスク値が２であるので、プライオリティ値はこれ以上下がらない、換言すればプライオリティはこれ以上向上しないということになる。
【０１１５】
例えば、プロセッサＰ０は最小マスク値を０に、その他のプロセッサは最小マスク値を２に設定しておくと、プロセッサＰ０以外はプライオリティ値が２までしか達しないので、プロセッサＰ０のバスアクセス要求の順位は最優先となる。
【０１１６】
＜Ｂ−２．装置動作＞
図９に、以上説明したプライオリティ値のステップアップを含めて、図１に示す調停回路１による調停動作をとりまとめてタイミングチャートとして示す。
【０１１７】
図９においては、基本的に図７と同じであり、同様の条件、呼称については重複する説明は省略する。また、具体的な調停動作は実施の形態１で説明したものと同じであるので、各チェック結果等の記載は省略している。
【０１１８】
図９に示す期間Ｔ１においては、プロセッサＰ０およびＰ２のみがバスアクセス要求を出しており、ラウンドロビン順位は０、１、２、３である。また、プロセッサＰ０のプライオリティ値は２（プライオリティ（０）＝２）であり、プロセッサＰ２のプライオリティ値は５（プライオリティ（２）＝５）である。
【０１１９】
この場合、調停回路１による調停動作の結果、受け付けプロセッサはプロセッサＰ０となる。
【０１２０】
そして、期間Ｔ２においては、プロセッサＰ０、Ｐ２およびＰ３がバスアクセス要求を出しており、ラウンドロビン順位は１、２、３、０である。また、プロセッサＰ０のプライオリティ値は４（プライオリティ（０）＝４）、プロセッサＰ３のプライオリティ値は４（プライオリティ（３）＝４）であり、前回バスアクセス要求が受け付けられなかったプロセッサＰ２のプライオリティ値は４（プライオリティ（２）＝４）にランクアップしている。
【０１２１】
この場合、調停回路１による調停動作の結果、受け付けプロセッサはプロセッサＰ２となる。
【０１２２】
また、期間Ｔ３においては、プロセッサＰ０、Ｐ１およびＰ３がバスアクセス要求を出しており、ラウンドロビン順位は３、０、１、２である。また、プロセッサＰ１のプライオリティ値は３（プライオリティ（１）＝３）であり、前回バスアクセス要求が受け付けられなかったプロセッサＰ０およびＰ３のプライオリティ値は３（プライオリティ（０）＝３、プライオリティ（３）＝３）にランクアップしている。
【０１２３】
この場合、調停回路１による調停動作の結果、受け付けプロセッサはプロセッサＰ３となる。
【０１２４】
また、期間Ｔ４においては、プロセッサＰ０およびＰ１のみがバスアクセス要求を出しており、ラウンドロビン順位は０、１、２、３である。また、前回バスアクセス要求が受け付けられなかったプロセッサＰ０およびＰ１のプライオリティ値は２（プライオリティ（０）＝２、プライオリティ（１）＝２）にランクアップしている。
【０１２５】
この場合、調停回路１による調停動作の結果、受け付けプロセッサはプロセッサＰ０となる。
【０１２６】
＜Ｂ−３．効果＞
以上説明したように、プロセッサＰ０〜Ｐ３内に含まれるプライオリティ生成回路１６Ａが、バスアクセスが受け付けられなかった場合にはプライオリティ値を段階的にランクアップする機能を有するので、受け付けられなかったプロセッサのプライオリティを上げていくことで、優先順位の低いプロセッサの要求が受け付けられなくなることを防ぎ、より公平な調停動作が可能となって、バスアクセスのさらなる公平性を確保することができる。
【０１２７】
＜Ｂ−４．変形例＞
以上説明した実施の形態２においては、プロセッサＰ０〜Ｐ３内に含まれるプライオリティ生成回路が、バスアクセスが受け付けられなかった場合にプライオリティ値を段階的にランクアップする機能を有する構成について説明したが、プライオリティ値を変化させる構成としては、以下に変形例１〜３として説明する構成を採るようにしても良い。
【０１２８】
＜Ｂ−４−１．変形例１＞
図１０にプライオリティ生成回路１６Ｂの構成を示す。図１０に示すプライオリティ生成回路１６Ｂにおいては、複数のプライオリティ設定レジスタ１６１Ｂと、複数のプライオリティ設定レジスタ１６１Ｂがそれぞれ出力するプライオリティ値から、何れか１つを選択するセレクタ１６２Ｂと、セレクタ１６２Ｂで選択されたプライオリティ値を一旦保持し、所定のタイミングで外部に出力するプライオリティ出力レジスタ１６３とを備えている。
【０１２９】
ここで、複数のプライオリティ設定レジスタ１６１Ｂのそれぞれには、プロセッサの動作周波数を変更した場合に対応するように、異なるプライオリティ値が設定されている。
【０１３０】
すなわち、プロセッサの動作周波数を規定するＣＰＵの動作周波数は、プロセッサに与えられるクロック信号の周波数を変更することで変更が可能であり、例えば、基準クロックの２逓倍、３逓倍、４逓倍、あるいは基準クロックの２分周、３分周、４分周のように段階的に変更することができる。
【０１３１】
従って、予め、種々の動作周波数に応じたプライオリティ値を、複数のプライオリティ設定レジスタ１６１Ｂのそれぞれに設定しておき、プロセッサの動作周波数を変更した場合には、それに応じたプライオリティ値が出力されるように、プロセッサに与えられるクロック信号の周波数に基づいてセレクタ１６２Ｂの選択動作が行われるように構成することで、動作周波数に応じた適切なプライオリティ値を出力することができる。
【０１３２】
例えば、プロセッサの動作周波数を低く設定した場合、プロセッサの動作は遅くなるが、これは当該プロセッサの処理に迅速さを求めず、消費電力を低減することを目的とするような場合に施される措置である。このような場合、当該プロセッサのバスアクセス要求の優先順位はそれほど高い必要はないので、プライオリティ値は大きくて良い。
【０１３３】
逆に、プロセッサの動作周波数を高く設定した場合には、当該プロセッサのバスアクセス要求の優先順位は高い方が望ましいので、プライオリティ値は小さい方が良い。
【０１３４】
プライオリティ生成回路１６Ｂを採用することで、プロセッサの動作周波数に応じて、より適切なプライオリティ値を得ることができる。
【０１３５】
すなわち、動作速度が遅く設定されているプロセッサに高いプライオリティを与えると、高速動作が要求されるプロセッサとの間で意味のない競合が発生し、高速動作が要求されるプロセッサのバスアクセスが阻害される可能性もあるが、上述した構成においてはこのような問題は発生しない。
【０１３６】
＜Ｂ−４−２．変形例２＞
図１１にプライオリティ生成回路１６Ｃの構成を示す。図１１に示すプライオリティ生成回路１６Ｃにおいては、プロセッサの動作周波数の設定値に合わせてプライオリティ値を増減可能な構成を有している。
【０１３７】
すなわち、プライオリティ生成回路１６Ｃにおいては、予め定めたソフトウェアに基づいて、それぞれのプロセッサの優先順位に見合うプライオリティ値を生成するプライオリティ設定レジスタ１６１と、プライオリティ設定レジスタ１６１が出力するプライオリティ値に対して、所定の値を増減してプライオリティ出力値とする増減処理回路１６２１と、増減処理回路１６２１が出力するプライオリティ出力値を一旦保持し、所定のタイミングで外部に出力するプライオリティ出力レジスタ１６３とを備えている。
【０１３８】
増減処理回路１６２１には、プロセッサに与えられるクロック信号の周波数に合わせてプライオリティ値の増減値を設定する増減値生成回路１６２２が付属し、増減処理回路１６２１は増減値生成回路１６２２が設定した増減値の分だけプライオリティ設定レジスタ１６１が出力するプライオリティ値を増減する機能を有している。
【０１３９】
例えば、プロセッサの動作周波数が、予め定めたデフォルト値より速くなるように設定された場合、増減処理回路１６２１では、プライオリティ設定レジスタ１６１が出力するプライオリティ値をデクリメントしてプライオリティを向上させ、逆に、プロセッサの動作周波数が、予め定めたデフォルト値より遅くなるように設定された場合、増減処理回路１６２１では、プライオリティ設定レジスタ１６１が出力するプライオリティ値をインクリメントして、プライオリティを低下させる。増減値生成回路１６２２では、プロセッサの動作周波数がデフォルト値から離れるほど増減幅を大きくすることができる。
【０１４０】
なお、増減値生成回路１６２２には増減幅設定レジスタ１６２０が付属しており、プライオリティ値を増減する増減幅の大きさは増減幅設定レジスタ１６２０に予め設定されている。
【０１４１】
また、増減処理回路１６２１とプライオリティ出力レジスタ１６３との間には、制限マスク回路１６２３が介挿されており、増減処理回路１６２１から出力されるプライオリティ出力値が、制限マスク回路１６２３でのマスク値、すなわち制限値設定レジスタ１６２４で設定されたマスク値（この場合、最小マスク値および最大マスク値）を超えて増減されている場合には、最小マスク値あるいは最大マスク値に変更する構成となっている。
【０１４２】
例えば、クロック周波数が基準クロックを中心に２逓倍、３逓倍、４逓倍に増加する場合と、逆に２分周、３分周、４分周に低減する場合を想定する。この場合、デフォルト値が基準クロックに相当するものとし、このときのプライオリティ設定レジスタ１６１の設定値を４、増減値生成回路１６２２で設定した設定値を２、制限値設定レジスタ１６２４で設定された最小マスク値を０、最大マスク値を１５とすると、プライオリティ生成回路１６Ｃのプライオリティ出力値は、以下の表４のようになる。
【０１４３】
【表４】
2004178056.tif 000006
【０１４４】
表４においては、クロック周波数が基準クロックの２倍、３倍、４倍になった場合、基準値の場合のプライオリティ設定レジスタ１６１の設定値（すなわち４）から、それぞれ２、４、８を減じることになるが、最小マスク値が０であるので、基準クロックの４倍の場合でもプライオリティ出力値は０である。
【０１４５】
また、クロック周波数が基準クロックの２分周、３分周、４分周になった場合、基準値の場合のプライオリティ設定レジスタ１６１の設定値（すなわち４）に、それぞれ２、４、８を加えることになるが、最大マスク値は１５であるので、基準クロックの４分周の場合には、プライオリティ出力値は１２となる。
【０１４６】
なお、増減値生成回路１６２２により、プロセッサの動作周波数が、デフォルト値から離れるほど、増減幅が大きくなっている。
【０１４７】
このように、プロセッサの動作周波数の変化に応じて、プライオリティ値を動的に変化させることで、プロセッサの動作周波数に応じて、より適切なプライオリティ値を得ることができる。
【０１４８】
＜Ｂ−４−３．変形例３＞
図１２にプライオリティ生成回路１６Ｄの構成を示す。図１２に示すプライオリティ生成回路１６Ｄにおいては、複数のプライオリティ設定レジスタ１６１Ｂと、複数のプライオリティ設定レジスタ１６１Ｂがそれぞれ出力するプライオリティ値から、何れか１つを選択するセレクタ１６２Ｃと、セレクタ１６２Ｃで選択されたプライオリティ値を一旦保持し、所定のタイミングで外部に出力するプライオリティ出力レジスタ１６３とを備えている。
【０１４９】
ここで、複数のプライオリティ設定レジスタ１６１Ｂのそれぞれには、ＣＰＵ１１（図２）の状態が変わった場合に対応するように、異なるプライオリティ値が設定されている。
【０１５０】
ここで、対応すべきＣＰＵ１１の状態には、ＣＰＵ１１が分岐命令を検出して分岐先の命令フェッチ要求を出している状態、ＣＰＵの命令キューが空の状態、ＣＰＵ１１のストアバッファがフルで次のストアが待っている状態がある。
【０１５１】
ＣＰＵ１１が分岐先の命令フェッチ要求を出している状態においては、分岐先の命令、すなわち図１に示すターゲットＴＧからの命令をなるべく早く必要とするためプライオリティは高いことが望ましく、命令キューが空の状態においては、ＣＰＵ１１がターゲットＴＧからの次の命令を待っている状態であり、やはりプライオリティは高いことが望ましい。また、ストアバッファがフルで次のストアが待っている状態では、ストアの処理をしないとパイプライン処理が先に進まないのでプライオリティは高いことが望ましい。
【０１５２】
従って、ＣＰＵ１１が上記各状態にある場合を想定して、複数のプライオリティ設定レジスタ１６１Ｂに、各状態に対応するように予めプライオリティ値を設定しておく。そして、ＣＰＵの状態が変化した場合には、変化後の状態に応じたプライオリティ値が出力されるように、セレクタ１６２Ｃには、ＣＰＵ１１の状態に関する情報が与えられるようにセレクタ１６２ＣをＣＰＵ１１に接続し、ＣＰＵ１１の状態に基づいてセレクタ１６２Ｃの選択動作が行われるように構成することで、ＣＰＵ１１の状態に応じた適切なプライオリティ値を出力することができる。
【０１５３】
プライオリティ生成回路１６Ｄを採用することで、ＣＰＵ１１の状態に対応してより適切なプライオリティ値を得ることができる。
【０１５４】
なお、対応すべきＣＰＵ１１の状態には、上述した３状態以外に、ＣＰＵ１１がすぐに使用するデータをリードする状態などもあり、このような場合にもプライオリティは高いことが望ましく、プライオリティ設定レジスタ１６１Ｂにはこの状態に対応したプライオリティ値を設定しておく。
【０１５５】
なお、上記においては、ＣＰＵ１１の状態に応じて、より適切なプライオリティ値を選択する構成を説明したが、プロセッサ内のにキャッシュの状態に合わせてプライオリティ値を設定するようにしても良い。
【０１５６】
例えば、データキャッシュ１４（図２）においてはライトバックという状態がある。ライトバックは、ＣＰＵ１１がキャッシュ１４にデータの書き込みをする際に、データの整合性を保つために、書き換えたキャッシュ１４の内容を常に、メインメモリ（図示せず）にも書き込む動作の１つであり、ＣＰＵ１１はキャッシュにデータ１４を書き込み、次に、キャッシュ１４が、メインメモリにデータを書き込むという２段階の動作を行う。
【０１５７】
ライトバックにおいて、キャッシュ１４が、メインメモリ（すなわち図１に示すターゲットＴＧ）にデータを書き込むのは、バスが空いている時間に行えば良く、プライオリティはそれほど高く設定しなくても良い。しかし、完全なデータの書き込みができず、ライトバックが失敗した場合には、再度のデータの書き込みを至急に行うことが要求される。従って、ライトバックにおける再度のデータの書き込み状態ではプライオリティは高いことが望ましく、プライオリティ設定レジスタ１６１Ｂには、この状態に対応したプライオリティ値を設定しておくことで、再度のデータの書き込みを優先的に行うことができる。
【０１５８】
なお、以上の説明においては、調停回路１による調停動作を前提としたが、調停回路１の代わりに、ラウンドロビン制御のみを行う従来的な調停回路を有するデータ処理装置に上述した、プライオリティ生成回路１６Ａ〜１６Ｄを適用することによってもバスアクセスの公平性を確保することができる。さらにプライオリティ生成回路１６Ａ〜１６Ｄを組み合わせたプライオリティ生成回路を使用することも可能である。
【０１５９】
【発明の効果】
本発明に係る請求項１記載の調停回路によれば、プライオリティチェックブロックとラウンドロビンブロックとを備え、プライオリティによる調停とラウンドロビンによる調停を組み合わせることで、優先度の高いバスアクセス要求を有するバスマスタに、優先的にバスアクセス権を与えることができるだけでなく、ラウンドロビン順位に基づいて、少なくとも最優先のバスマスタのデータについてはマスキング対象とされていないマスクデータを用いて、チェック結果のデータをマスキングしてマスク済みチェック結果とするので、幾つかのプライオリティ情報が無効になる状態を得ることができ、プライオリティ情報の影響が減殺されて、バスアクセスの公平性を確保した調停を行うことができる。
【０１６０】
本発明に係る請求項５記載のデータ処理装置によれば、バスマスタ内のプライオリティ生成回路が、自らが付属するバスマスタのバスアクセスが受け付けられなかった場合にはプライオリティ情報をランクアップするので、受け付けられなかったバスマスタのプライオリティを上げていくことで、優先順位の低いバスマスタの要求が受け付けられなくなることを防ぎ、より公平な調停動作が可能となって、バスアクセスのさらなる公平性を確保することができる。
【０１６１】
本発明に係る請求項９記載のデータ処理装置によれば、プライオリティ生成回路が、バスマスタの動作周波数の変更に際して、複数の動作周波数のそれぞれに対応するプライオリティ情報を出力するので、バスマスタの動作周波数に応じて、より適切なプライオリティ情報を得ることができる。
【０１６２】
本発明に係る請求項１３記載のデータ処理装置によれば、プライオリティ生成回路が、バスマスタの状態の変更に際して、複数の状態のそれぞれに対応するプライオリティ情報を出力するので、バスマスタの状態に対応してより適切なプライオリティ情報を得ることができる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理装置の全体構成を示すブロック図である。
【図２】プロセッサ内の構成を示すブロック図である。
【図３】プロセッサ内の構成を示すブロック図である。
【図４】本発明に係る調停回路の構成を示すブロック図である。
【図５】本発明に係る調停回路内のプライオリティチェックブロックの構成を示す図である。
【図６】本発明に係る調停回路内のラウンドロビンブロックの構成を示す図である。
【図７】本発明に係る調停回路の動作を説明するタイミングチャートである。
【図８】本発明に係るデータ処理装置内のプライオリティ生成回路の構成を示すブロック図である。
【図９】本発明に係るデータ処理装置内のプライオリティ生成回路の動作を説明するタイミングチャートである。
【図１０】本発明に係るデータ処理装置内のプライオリティ生成回路の変形例の構成を示すブロック図である。
【図１１】本発明に係るデータ処理装置内のプライオリティ生成回路の変形例の構成を示すブロック図である。
【図１２】本発明に係るデータ処理装置内のプライオリティ生成回路の変形例の構成を示すブロック図である。
【図１】
2004178056.tif 000007
【図２】
2004178056.tif 000008
【図３】
2004178056.tif 000009
【図４】
2004178056.tif 000010
【図５】
2004178056.tif 000011
【図６】
2004178056.tif 000012
【図７】
2004178056.tif 000013
【図８】
2004178056.tif 000014
【図９】
2004178056.tif 000015
【図１０】
2004178056.tif 000016
【図１１】
2004178056.tif 000017
【図１２】
2004178056.tif 000018