(57)【要約】【課題】調停回路において、複数のリクエストに対する調停の優先度を外部から任意に変更すること。【解決手段】調停回路１は、優先度係数算出部１１、優先度係数比較部１３、受付判定部１５および優先順位判定部１４を備えている。優先度係数算出部１１は、リクエストごとにリクエスト要求元４，５，６，７から設定された優先度Ｐ（ｎ）に基づいて各リクエストの調停優先度係数Ｓ（ｎ）を算出する。優先度係数比較部１３は、優先度係数算出部１１により算出された各リクエストの調停優先度係数Ｓ（ｎ）を比較する。受付判定部１５は、優先度係数比較部１３による比較結果に基づいて各リクエストの受け付けを判定する。優先順位判定部１４は、優先度係数算出部１１により算出された２つ以上のリクエストについて調停優先度係数Ｓ（ｎ）が同じである場合のリクエスト受け付けの優先順位を判定する。【選択図】図１
2008046892.tif 000002
【特許請求の範囲】
【請求項１】
リクエストごとに外部から設定された優先度に基づいて各リクエストの調停優先度係数を算出する優先度係数算出手段と、
前記優先度係数算出手段により算出された各リクエストの調停優先度係数を比較する優先度係数比較手段と、
前記優先度係数比較手段による比較結果に基づいて各リクエストの受け付けを判定する受付判定手段と、
を備えることを特徴とする調停回路。
【請求項２】
前記優先度係数算出手段により算出された２つ以上のリクエストについて調停優先度係数が同じである場合のリクエスト受け付けの優先順位を判定する優先順位判定手段、をさらに備えることを特徴とする請求項１に記載の調停回路。
【請求項３】
リクエスト要求元ごとに、リクエストが受け付けられない回数を計数する非受付回数カウント手段と、
リクエスト要求元ごとに、前記非受付回数カウント手段により計数された非受付回数の計数値と、外部から設定された非受付回数の閾値を比較する非受付回数比較手段と、
をさらに備えることを特徴とする請求項１または２に記載の調停回路。
【請求項４】
前記非受付回数比較手段は、前記非受付回数の計数値が前記非受付回数の閾値に等しくなると、割り込みを発生して外部へ通知することを特徴とする請求項３に記載の調停回路。
【請求項５】
前記非受付回数カウント手段は、前回のリクエストの受け付け判定によりリクエストが受け付けられたリクエスト要求元の非受付回数の計数値をリセットすることを特徴とする請求項３または４に記載の調停回路。
【請求項６】
前記優先度係数算出手段は、各リクエスト要求元のリクエストが受け付けられない回数を考慮して前記調停優先度係数を算出することを特徴とする請求項１〜５のいずれか一つに記載の調停回路。
【請求項７】
前記優先度係数算出手段は、前回のリクエストの受け付け判定時にリクエストが受け付けられたリクエスト要求元の調停優先度係数を、前回のリクエストの受け付け判定までにリクエストが受け付けられない回数を考慮した分をゼロにして算出することを特徴とする請求項１〜６のいずれか一つに記載の調停回路。
【請求項８】
前記優先度係数算出手段は、リクエスト要求元ごとに外部から設定された係数を用いて各リクエスト要求元の調停優先度係数に重み付けを行うことを特徴とする請求項１〜７のいずれか一つに記載の調停回路。
【請求項９】
リクエストごとに外部から設定された優先度に基づいて各リクエストの調停優先度係数を算出する優先度係数算出部と、
前記優先度係数算出部に機能的に接続され、前記優先度係数算出部により算出された各リクエストの調停優先度係数を比較する優先度係数比較部と、
前記優先度係数比較部に機能的に接続され、前記優先度係数比較部による比較結果に基づいて各リクエストの受け付けを判定する受付判定部と、
を備えることを特徴とする調停回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子計算機において複数のリードリクエストやライトリクエストに対する調停を行う調停回路に関する。
【背景技術】
【０００２】
従来、電子計算機において、データ処理を行うブロックやデータを記憶するブロックなどの複数のリクエスト要求元からのリードやライトのリクエストに対して、予め設定されている優先度でリクエストを受け付けたり、バス使用権を付与するように、調停が行われる。調停の優先度は、例えば、各リクエスト要求元のリクエスト受け付け回数ができるだけ均等になるように設定される。
【０００３】
それに対して、バスに接続された複数の装置からのバス獲得要求の回数に応じて調停を行うアービトレーション制御回路が公知である。このアービトレーション制御回路は、複数の装置のそれぞれから出力されるバス獲得要求の回数をカウントするアービトレーションカウンタ手段と、複数の装置のそれぞれに対する優先度を予め設定するための優先度設定レジスタ手段と、バスに接続された装置からバス獲得要求があった場合に、アービトレーションカウンタ手段によってカウントされているカウンタ値と優先度設定レジスタ手段に設定された優先度に基づいて、バス使用権を与える装置を判定する優先度判定手段とを具備する（例えば、特許文献１参照。）。
【０００４】
【特許文献１】特開２０００−２０１１６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、予め設定されている優先度で調停を行う場合、ある期間では、各リクエスト要求元のリクエスト受け付け回数ができるだけ均等になり、別の期間では、特定のリクエスト要求元のリクエスト受け付け回数が多くなるように、優先度を自由に変更することができないという問題点がある。また、上記特許文献１に開示された制御回路では、バス獲得要求の回数に応じた制御が可能であるが、リクエスト要求元が自ら調停の優先度を変更することはできない。
【０００６】
この発明は、上述した従来技術による問題点を解消するため、複数のリクエストに対する調停の優先度を外部から任意に変更することができる調停回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明にかかる調停回路は、優先度係数算出手段、優先度係数比較手段、受付判定手段および優先順位判定手段を備えている。優先度係数算出手段は、リクエストごとに外部（リクエスト要求元）から設定された優先度に基づいて各リクエストの調停優先度係数を算出する。優先度係数比較手段は、優先度係数算出手段により算出された各リクエストの調停優先度係数を比較する。受付判定手段は、優先度係数比較手段による比較結果に基づいて各リクエストの受け付けを判定する。優先順位判定手段は、優先度係数算出手段により算出された２つ以上のリクエストについて調停優先度係数が同じである場合のリクエスト受け付けの優先順位を判定する。
【０００８】
この発明によれば、優先度係数算出手段により、リクエストごとに外部から設定された優先度に基づいて各リクエストの調停優先度係数が算出される。そして、優先度係数比較手段により、各リクエストの調停優先度係数が比較され、その比較結果に基づいて、受付判定手段により、各リクエストの受け付けの可否が判定される。その際、２つ以上のリクエストについて調停優先度係数が同じである場合には、優先順位判定手段により、リクエスト受け付けの優先順位が判定される。
【発明の効果】
【０００９】
本発明にかかる調停回路によれば、複数のリクエストに対する調停の優先度を外部から任意に変更することにより、柔軟な調停を行い、システム全体での処理効率を向上することができる。
【発明を実施するための最良の形態】
【００１０】
以下に添付図面を参照して、この発明にかかる調停回路の好適な実施の形態を詳細に説明する。
【００１１】
（調停回路の構成）
まず、この発明の実施の形態にかかる調停回路の構成について説明する。図１は、この発明の実施の形態にかかる調停回路を備えた装置の要部の構成を示すブロック図である。図１に示すように、調停回路１は、初期値設定レジスタ１０、優先度係数算出部１１、優先度係数レジスタ１２、優先度係数比較部１３、優先順位判定部１４、受付判定部１５、非受付回数カウント部１６、非受付回数レジスタ１７、閾値レジスタ１８および非受付回数比較部１９を備えている。
【００１２】
調停回路１は、ＣＰＵ（中央処理装置）２、データバス３ａおよび複数のリクエスト要求元４，５，６，７に接続されている。説明の便宜上、必要がある場合には、複数のリクエスト要求元を、Ａ、Ｂ、ＣおよびＤとして区別し、それぞれの符号を４、５、６および７とする。各リクエスト要求元Ａ４、リクエスト要求元Ｂ５、リクエスト要求元Ｃ６およびリクエスト要求元Ｄ７は、データバス３ａ，３ｂ，３ｃ，３ｄ，３ｅを介して相互に接続されている。なお、リクエスト要求元の数は、３個以下でもよいし、５個以上でもよい。
【００１３】
初期値設定レジスタ１０は、リクエスト要求元ごとに、ＣＰＵ２からの書き込みによって設定された初期値を記憶する。初期値は、乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）およびリクエスト非受付時のインクリメント値（以下、インクリメント値とする）Ｗ１（ｎ）である。ここで、「（ｎ）」のｎは、リクエスト要求元を識別する０、１、２または３の値であり、それぞれ、リクエスト要求元Ａ４、リクエスト要求元Ｂ５、リクエスト要求元Ｃ６またはリクエスト要求元Ｄ７に対応する。
【００１４】
乗算係数ａ（ｎ）は、リクエスト要求元からのリクエストに対して重み付けを行うための係数であり、例えば、０．５、１、１．５、２などの値である。スコア初期値Ｗ０（ｎ）は、調停回路１がリセットされた直後、またはリクエストが受け付けられた直後のスコア値Ｗ（ｎ）の設定値であり、例えば、０〜６３の整数である。
【００１５】
インクリメント値Ｗ１（ｎ）は、リクエストが受け付けられなかったときにスコア値Ｗ（ｎ）に加算される値であり、例えば、０〜３の整数である。スコア値Ｗ（ｎ）は、次の（１）式で表され、値が大きいほど優先度が高いことを表す。スコア初期値Ｗ０（ｎ）は、例えば、０〜６３の整数であり、６３でフリーズする。
Ｗ（ｎ）＝Ｗ０（ｎ）＋Ｗ１（ｎ）  ・・・（１）
【００１６】
優先度係数算出部１１は、初期値設定レジスタ１０に記憶されている初期値に基づいて、リクエスト要求元ごとに、リクエストに対する調停優先度係数Ｓ（ｎ）を計算する。調停優先度係数Ｓ（ｎ）は、次の（２）式で求められる。
Ｓ（ｎ）＝ａ（ｎ）×Ｐ（ｎ）＋Ｗ（ｎ）  ・・・（２）
【００１７】
ただし、Ｐ（ｎ）は、リクエスト要求元からリクエストとともに通知される優先度であり、例えば、０〜１０の整数である。つまり、リクエスト要求元は、リクエスト信号ＲＥＱ（ｎ）とともに、そのリクエストの優先度Ｐ（ｎ）を優先度係数算出部１１に通知する機能を有する。優先度係数算出部１１は、リクエスト要求元から通知された優先度Ｐ（ｎ）を受け取る機能を有する。
【００１８】
優先度係数レジスタ１２は、リクエスト要求元ごとに、優先度係数算出部１１により算出された調停優先度係数Ｓ（ｎ）を記憶する。優先度係数比較部１３は、複数のリクエスト要求元からのリクエストが競合する場合、優先度係数レジスタ１２に記憶されている各リクエスト要求元の調停優先度係数Ｓ（ｎ）を比較し、最も大きい調停優先度係数Ｓ（ｎ）を選択する。優先度係数比較部１３は、複数のリクエスト要求元について調停優先度係数Ｓ（ｎ）が同じである場合、優先順位判定部１４の判定に基づいて、最優先となる調停優先度係数Ｓ（ｎ）を選択する。
【００１９】
優先順位判定部１４は、予め、すべてのリクエスト要求元について決められた優先順位を記憶している。優先順位判定部１４は、その優先順位に従って、優先度係数比較部１３において調停優先度係数Ｓ（ｎ）が同じであるために優先順位の判定対象とされた複数のリクエスト要求元について、優先順位を判定する。受付判定部１５は、すべてのリクエスト要求元からリクエスト信号ＲＥＱ（ｎ）が供給される。受付判定部１５は、優先度係数比較部１３により選択されたリクエスト要求元からのリクエストを受け付け、そのリクエスト要求元にバス権を付与する。
【００２０】
非受付回数カウント部１６は、リクエスト要求元ごとに、受付判定部１５でリクエストが受け付けられない回数（非受付回数）を計数する。非受付回数レジスタ１７は、リクエスト要求元ごとに、非受付回数カウント部１６により計数された非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）を記憶する。閾値レジスタ１８は、リクエスト要求元ごとに、ＣＰＵ２からの書き込みによって設定された非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）を記憶する。
【００２１】
非受付回数比較部１９は、リクエスト要求元ごとに、非受付回数レジスタ１７に記憶されている非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）と、閾値レジスタ１８に記憶されている非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）を比較する。非受付回数比較部１９は、非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）が非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）に等しくなると、ＣＰＵ２に、割り込みを通知する。
【００２２】
例えば、ＣＰＵ２は、非受付回数比較部１９から割り込みが通知されると、非受付回数レジスタ１７を参照する。そして、ＣＰＵ２は、非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）が、先に閾値レジスタ１８に設定した非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）に等しくなったリクエスト要求元を特定し、そのリクエスト要求元が想定以上に待ち回数の多い状態にあると判断する。ＣＰＵ２は、想定以上に待ち回数の多い状態にあると判断したリクエスト要求元について、乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）およびインクリメント値Ｗ１（ｎ）のうちの１つ以上を大きな値に変更したり、非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）を小さな値に変更する。
【００２３】
（調停処理の手順）
次に、この発明の実施の形態にかかる調停回路による処理手順について説明する。図２は、この発明の実施の形態にかかる調停回路による処理手順を示すフローチャートである。図２に示すように、調停処理が開始されると、まず、ＣＰＵ２が、乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）、インクリメント値Ｗ１（ｎ）および非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）を設定する（ステップＳ１）。乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）およびインクリメント値Ｗ１（ｎ）は、初期値設定レジスタ１０に格納される。非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）は、閾値レジスタ１８に格納される。
【００２４】
次いで、優先度係数算出部１１は、乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）およびインクリメント値Ｗ１（ｎ）、並びにリクエスト要求元より出力された優先度Ｐ（ｎ）に基づいて、調停優先度係数Ｓ（ｎ）を算出し、優先度係数レジスタ１２に格納する（ステップＳ２）。次いで、受付判定部１５は、リクエスト要求元からリクエスト信号ＲＥＱ（ｎ）を受信する（ステップＳ３）。次いで、優先度係数比較部１３は、優先度係数レジスタ１２に格納された調停優先度係数Ｓ（ｎ）の大小判定を実行する（ステップＳ４）。
【００２５】
判定の結果、最大となる調停優先度係数Ｓ（ｎ）が１つのみである場合（ステップＳ５：Ｙｅｓ）には、受付判定部１５は、その最大となる調停優先度係数Ｓ（ｎ）に対応するリクエスト要求元に対して、リクエスト受付を実行し、バス権を付与する（ステップＳ７）。一方、ステップＳ５での判定の結果、最大となる調停優先度係数Ｓ（ｎ）が１つでない場合（ステップＳ５：Ｎｏ）には、同じ値となった調停優先度係数Ｓ（ｎ）について、予め設定されている調停優先度係数Ｓ（ｎ）が同値時の優先順位にしたがって、最優先となる調停優先度係数Ｓ（ｎ）を決定する（ステップＳ６）。そして、受付判定部１５は、その最優先となる調停優先度係数Ｓ（ｎ）に対応するリクエスト要求元に対して、リクエスト受付を実行し、バス権を付与する（ステップＳ７）。
【００２６】
次いで、リクエストが受け付けられたリクエスト要求元に対して、［Ｓ（ｎ）＝Ｗ０（ｎ）］および［Ｗｃｎｔ＿ｒｅｇ（ｎ）＝０］に設定する（ステップＳ８）。また、リクエストが受け付けられなかったリクエスト要求元に対して、［Ｗｃｎｔ＿ｒｅｇ（ｎ）＝Ｗｃｎｔ＿ｒｅｇ（ｎ）＋１］とする（ステップＳ９）。つまり、非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）に１を加算する。
【００２７】
次いで、非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）と非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）を比較する（ステップＳ１０）。その結果、［Ｗｔｈ＿ｒｅｇ（ｎ）＝Ｗｃｎｔ＿ｒｅｇ（ｎ）］となるリクエスト要求元がある場合（ステップＳ１１：Ｙｅｓ）には、ＣＰＵ２に対する割り込みを発生させる（ステップＳ１２）。そして、ステップＳ１１で［Ｗｔｈ＿ｒｅｇ（ｎ）＝Ｗｃｎｔ＿ｒｅｇ（ｎ）］となったリクエスト要求元について、ステップＳ１に戻り、乗算係数ａ（ｎ）、スコア値Ｗ（ｎ）、インクリメント値Ｗ１（ｎ）および非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）のいずれか１つ以上の値を変更する。変更後、ステップＳ２以降の処理を繰り返す。
【００２８】
一方、ステップＳ１１で［Ｗｔｈ＿ｒｅｇ（ｎ）＝Ｗｃｎｔ＿ｒｅｇ（ｎ）］とならなかったリクエスト要求元については（ステップＳ１１：Ｎｏ）、リクエストが受け付けられなかったリクエスト要求元に対応する調停優先度係数Ｓ（ｎ）に対して、スコア値Ｗ（ｎ）を加算する。また、リクエスト要求元より出力された優先度Ｐ（ｎ）に基づいて、調停優先度係数Ｓ（ｎ）を算出し、優先度係数レジスタ１２に格納する（ステップＳ１３）。そして、ステップＳ３へ進み、ステップＳ３以降の処理を繰り返す。ステップＳ１１では、リクエスト要求元ごとに、ステップＳ１１でのＹｅｓまたはＮｏに応じて処理が分岐する。
【００２９】
（調停処理の具体例）
次に、リクエスト要求元がＡ、Ｂ、ＣおよびＤの４つある場合を例にして、具体的な数値を挙げて説明する。まず、システムリセット後、予めＣＰＵ２側から初期値設定レジスタ１０に、リクエスト要求元Ａ４、リクエスト要求元Ｂ５、リクエスト要求元Ｃ６およびリクエスト要求元Ｄ７にそれぞれ対応する乗算係数ａ（ｎ）、スコア初期値Ｗ０（ｎ）およびインクリメント値Ｗ１（ｎ）が設定される。ここでは、一例として、［ａ（０）＝ａ（１）＝ａ（２）＝ａ（３）＝１］、［Ｗ０（０）＝Ｗ０（１）＝２］、［Ｗ０（２）＝Ｗ０（３）＝３］、［Ｗ１（０）＝３］、［Ｗ１（１）＝Ｗ１（２）＝１］および［Ｗ１（３）＝２］とする。また、ＣＰＵ２側から閾値レジスタ１８に、非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）として、［Ｗｔｈ＿ｒｅｇ（０）＝Ｗｔｈ＿ｒｅｇ（１）＝Ｗｔｈ＿ｒｅｇ（２）＝３１］および［Ｗｔｈ＿ｒｅｇ（３）＝２］が設定される。
【００３０】
各値の設定終了後、受付判定部１５は、周期的に、リクエスト要求元Ａ４からのリクエスト信号ＲＥＱ（０）、リクエスト要求元Ｂ５からのリクエスト信号ＲＥＱ（１）、リクエスト要求元Ｃ６からのリクエスト信号ＲＥＱ（２）およびリクエスト要求元Ｄ７からのリクエスト信号ＲＥＱ（３）がＨ（ハイ）レベルになっているか否か、すなわちリクエストがあるか否かを判定する。以下、このリクエストの受け付けを判定するタイミングをリクエスト受付判定サイクルとする。
【００３１】
特に限定しないが、ここでは、初回にすべてのリクエスト要求元からリクエストがあるとする。このときの各リクエスト要求元からの優先度Ｐ（ｎ）は、［Ｐ（０）＝Ｐ（１）＝Ｐ（２）＝Ｐ（３）＝０］であるとする。この場合、初回のリクエスト受付判定サイクルでは、リクエスト要求元Ａ４、リクエスト要求元Ｂ５、リクエスト要求元Ｃ６およびリクエスト要求元Ｄ７のいずれについても、調停優先度係数Ｓ（ｎ）に対するＷ１（ｎ）のインクリメントがないので、優先度係数算出部１１により、［Ｓ（０）＝Ｓ（１）＝２］および［Ｓ（２）＝Ｓ（３）＝３］となる。
【００３２】
次いで、優先度係数比較部１３は、調停優先度係数Ｓ（ｎ）の比較を行う。ここでは、上述したように、Ｓ（２）とＳ（３）が同じであるので、優先度係数比較部１３は、優先順位判定部１４を参照し、Ｓ（２）とＳ（３）のいずれを受け付けるかを判定する。例えば、優先順位判定部１４には、調停優先度係数Ｓ（ｎ）が同じである場合に、Ｓ（３）、Ｓ（２）、Ｓ（１）およびＳ（０）の順番でリクエストの受け付けを行うように予め決められているとする。従って、この例では、受付判定部１５は、Ｓ（３）に対応するリクエスト信号ＲＥＱ（３）を受け付け、このリクエスト信号ＲＥＱ（３）の発信元であるリクエスト要求元Ｄ７にバス権を付与する。
【００３３】
リクエストが受け付けられたリクエスト要求元Ｄ７については、調停優先度係数Ｓ（３）にインクリメント値Ｗ１（３）が加算されないので、調停優先度係数Ｓ（３）は、３のままである。また、リクエスト要求元Ｄ７に対する非受付回数の値Ｗｃｎｔ＿ｒｅｇ（３）は、０となる。一方、リクエストが受け付けられなかったＡ４、Ｂ５およびＣ６の各リクエスト要求元については、調停優先度係数Ｓ（０）、Ｓ（１）およびＳ（２）にそれぞれインクリメント値Ｗ１（０）、Ｗ１（１）およびＷ１（２）が加算されるので、［Ｓ（０）＝５］、［Ｓ（１）＝３］および［Ｓ（２）＝４］となる。また、［Ｗｃｎｔ＿ｒｅｇ（０）＝Ｗｃｎｔ＿ｒｅｇ（１）＝Ｗｃｎｔ＿ｒｅｇ（２）＝１］となる。
【００３４】
次のリクエスト受付判定サイクルでは、すべてのリクエスト要求元からリクエストがあるとする。このときの各リクエスト要求元からの優先度Ｐ（ｎ）は、［Ｐ（０）＝Ｐ（１）＝Ｐ（２）＝Ｐ（３）＝０］であるとする。この場合、Ｓ（０）が最も大きいので、受付判定部１５は、Ｓ（０）に対応するリクエスト信号ＲＥＱ（０）を受け付け、このリクエスト信号ＲＥＱ（０）の発信元であるリクエスト要求元Ａ４にバス権を付与する。
【００３５】
リクエストが受け付けられたリクエスト要求元Ａ４については、これまでに調停優先度係数Ｓ（０）に加算されていたインクリメント値Ｗ１（０）による増分３が０になるので、調停優先度係数Ｓ（０）は、２となる。また、リクエスト要求元Ａ４に対する非受付回数の値Ｗｃｎｔ＿ｒｅｇ（０）は、０となる。一方、リクエストが受け付けられなかったＢ５、Ｃ６およびＤ７の各リクエスト要求元については、調停優先度係数Ｓ（１）、Ｓ（２）およびＳ（３）にそれぞれインクリメント値Ｗ１（１）、Ｗ１（２）およびＷ１（３）が加算されるので、［Ｓ（１）＝４］および［Ｓ（２）＝Ｓ（３）＝５］となる。また、［Ｗｃｎｔ＿ｒｅｇ（１）＝Ｗｃｎｔ＿ｒｅｇ（２）＝２］および［Ｗｃｎｔ＿ｒｅｇ（３）＝１］となる。
【００３６】
このように、初回のリクエスト受付判定サイクルでの優先順位に対して、２回目のリクエスト受付判定サイクルでは、初回のリクエスト受付判定サイクルで選ばれなかったリクエスト要求元に対する優先順位が上がる。従って、複数のリクエスト要求元からのリクエストが競合する場合に、リクエストの受け付け頻度が平準化される。
【００３７】
さらに次のリクエスト受付判定サイクルにおいて、すべてのリクエスト要求元からリクエストがあるとする。その際、リクエスト要求元Ｃ６において、リクエスト要求元の判断で優先順位の高いリクエストが発生したため、優先度Ｐ（２）が１０であるとする。それ以外の各リクエスト要求元からの優先度Ｐ（ｎ）は、［Ｐ（０）＝Ｐ（１）＝Ｐ（３）＝０］であるとする。このときの各リクエスト要求元の調停優先度係数Ｓ（ｎ）は、［Ｓ（０）＝２］、［Ｓ（１）＝４］、［Ｓ（２）＝１５］および［Ｓ（３）＝５］となる。従って、受付判定部１５は、Ｓ（２）に対応するリクエスト信号ＲＥＱ（２）を受け付け、このリクエスト信号ＲＥＱ（２）の発信元であるリクエスト要求元Ｃ６にバス権を付与する。
【００３８】
リクエストが受け付けられたリクエスト要求元Ｃ６については、これまでに調停優先度係数Ｓ（２）に加算されていたインクリメント値Ｗ１（２）による増分２が０になり、かつ［ａ（２）×Ｐ（２）］による増分１０が０になるので、調停優先度係数Ｓ（２）は、３となる。また、リクエスト要求元Ｃ６に対する非受付回数の値Ｗｃｎｔ＿ｒｅｇ（２）は、０となる。一方、リクエストが受け付けられなかったＡ４、Ｂ５およびＤ７の各リクエスト要求元については、調停優先度係数Ｓ（０）、Ｓ（１）およびＳ（３）にそれぞれインクリメント値Ｗ１（０）、Ｗ１（１）およびＷ１（３）が加算されるので、［Ｓ（０）＝Ｓ（１）＝５］および［Ｓ（３）＝７］となる。また、［Ｗｃｎｔ＿ｒｅｇ（０）＝１］、［Ｗｃｎｔ＿ｒｅｇ（１）＝３］および［Ｗｃｎｔ＿ｒｅｇ（３）＝２］となる。
【００３９】
このように、各リクエスト要求元から通知される優先度Ｐ（ｎ）を考慮して調停優先度係数Ｓ（ｎ）を求め、その大小比較によってリクエストの受け付け可否を判定するので、単にリクエストの受け付け頻度が平準化されるだけでなく、リクエストの重みや緊急性を考慮した調停が可能となる。つまり、リクエスト要求元が自ら調停の優先度を任意に変更することが可能となる。
【００４０】
ここまでの例では、非受付回数の値Ｗｃｎｔ＿ｒｅｇ（ｎ）が非受付回数の閾値Ｗｔｈ＿ｒｅｇ（ｎ）に等しくなることはなかったが、例えば、あるリクエスト受付判定サイクルにおいて、［Ｗｃｎｔ＿ｒｅｇ（３）＝Ｗｔｈ＿ｒｅｇ（３）］になるとする。この場合、非受付回数比較部１９は、ＣＰＵ２に割り込みを通知する。ＣＰＵ２は、この割り込みを通知されると、リクエスト要求元Ｄ７の待ち回数が想定以上に多いと判断する。そして、ＣＰＵ２は、必要に応じて、リクエスト要求元Ｄ７のスコア初期値Ｗ０（３）やインクリメント値Ｗ１（３）などをより大きな値に変更することができる。
【００４１】
このように、調停回路１がＣＰＵ２への割り込み通知機能を有し、かつＣＰＵ２が任意のリクエスト要求元に対して設定値を変更する機能を有することによって、特定のリクエスト要求元からのリクエストが受け付けられない回数を想定回数以下に下げることができる。つまり、すべてのリクエスト要求元からのリクエストを、想定する待ち回数以下で受け付けるようにすることができる。以上により、様々な状況に応じて柔軟な調停を実現することができる。
【産業上の利用可能性】
【００４２】
本発明にかかる調停回路は、複数の機能ブロックが共通のバスを使用する場合の調停に適している。
【図面の簡単な説明】
【００４３】
【図１】この発明の実施の形態にかかる調停回路を備えた装置の要部の構成を示すブロック図である。
【図２】この発明の実施の形態にかかる調停回路による処理手順を示すフローチャートである。
【符号の説明】
【００４４】
ａ（ｎ）  乗算係数
Ｐ（ｎ）  優先度
ＲＥＱ（ｎ）  リクエスト信号
Ｓ（ｎ）  調停優先度係数
Ｗｃｎｔ＿ｒｅｇ（ｎ）  非受付回数の値
Ｗｔｈ＿ｒｅｇ（ｎ）  非受付回数の閾値
１  調停回路
４，５，６，７  リクエスト要求元
１１  優先度係数算出部
１３  優先度係数比較部
１４  優先順位判定部
１５  受付判定部
１６  非受付回数カウント部
１９  非受付回数比較部
【図１】
2008046892.tif 000003
【図２】
2008046892.tif 000004