以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(アービトレーション回路:帯域制限の後に可変優先度方式を用いる例)
2.第2の実施の形態(アービトレーション回路:帯域制限の後に最長経過時間方式を用いる例)
3.第3の実施の形態(アービトレーション回路:帯域制限の後に可変優先度方式および最長経過時間方式を用いる例)
4.第4の実施の形態(アービトレーション回路:リクエスト信号を許可する時機を調整する例)
5.第5の実施の形態(アービトレーション回路:帯域制限の設定においてサイクル期間のみを設定する例)
<1.第1の実施の形態>
[バス制御装置の構成]
図1は、本発明の第1の実施の形態におけるバス制御装置の一構成例を示す全体図である。このバス制御装置は、M(Mは整数)個のマスタ100と、スレーブ200と、バス300と、アービトレーション回路400とを備えている。マスタ100とアービトレーション回路400との間は、信号線500および信号線600により接続されている。
信号線500は、マスタ100からアービトレーション回路400へ調停を要求するための信号線である。信号線600は、アービトレーション回路400からマスタ100へ調停結果を通知するための信号線である。ここで、調停とは、複数のマスタからリクエスト信号を受信したときに、アービトレーション回路400が、いずれかのマスタへグラント信号を送信することである。リクエスト信号とは、マスタ100がバス300の使用を要求する信号である。グラント信号とは、アービトレーション回路400がバス300の使用をマスタに許可する信号である。
マスタ100は、スレーブ200を制御可能なデバイスである。スレーブ200は、マスタ100の制御対象のデバイスである。マスタ100としては、例えば、プロセッサが想定される。また、スレーブ200としては、例えば、メモリが想定される。この場合、プロセッサとメモリとの間でデータ転送が実行される際に、プロセッサは、メモリにアドレス等を発行して制御を行う。バス300は、マスタ100とスレーブ200とがデータを送受信するための共通の経路である。マスタ100は、バス300を介してスレーブ200の制御を行うとき、バス300の使用を求めるリクエスト信号を、信号線500を介してアービトレーション回路400へ送信する。
アービトレーション回路400は、複数のマスタ100からのリクエスト信号に対して、1つのマスタ100を調停するものである。アービトレーション回路400は、複数のマスタ100からリクエスト信号を受信すると、これらのリクエスト信号を、所定のアービトレーションポリシーに基づいて調停する。アービトレーションポリシーの詳細については、図2を参照して後述する。調停の結果、アービトレーション回路400は、1つのマスタに対してバス300の使用を許可するグラント信号を生成し、信号線600を介して、そのマスタへ、そのグラント信号を送信する。アービトレーション回路400から、グラント信号を受信したマスタ100は、バス300を使用してスレーブ200の制御のためのデータ転送を行う。
図2は、本発明の第1の実施の形態が具現化されるアービトレーション回路の一例としてのアービトレーション回路400の一構成例を示すブロック図である。このアービトレーション回路400は、パラメータ設定部410、リクエスト管理部420、帯域制限フィルタ430、および、可変優先度フィルタ440を備える。
パラメータ設定部410は、バス300の使用頻度に基づく転送速度を帯域内に制限する設定値と、バス300の使用における優先度とをマスタごとに設定するものである。このパラメータ設定部410は、帯域設定部411および優先度設定部414を備える。
帯域設定部411は、バス300の使用頻度に基づく転送速度を帯域内に制限する設定値をマスタごとに設定するものである。第1の実施の形態では、帯域設定部411は、サイクル期間レジスタ412およびグラント数レジスタ413を備える。
第1の実施の形態では、マスタごとに、サイクル期間および最大グラント数が設定される。サイクル期間は、リクエスト信号を監視する周期である。最大グラント数は、設定された周期内に送信が許容されるグラント信号の数の最大値である。各マスタのサイクル期間の設定値は、サイクル期間レジスタ412に格納される。また、各マスタの最大グラント数の設定値は、グラント数レジスタ413に格納される。帯域設定部411は、サイクル期間レジスタ412およびグラント数レジスタ413に格納された情報を帯域制限フィルタ430へ送信している。
ここで、アービトレーション回路400は、マスタ100がスレーブ200を制御するアプリケーションの変更などに応じて、サイクル期間レジスタ412およびグラント数レジスタ413に格納された情報を更新することができる。
優先度設定部414は、マスタ100のバスの使用の優先度をマスタごとに設定するものである。本実施の形態では、優先度設定部414は、優先度レジスタ415を備える。優先度レジスタ415には、マスタ間の優先度を示す情報が格納される。優先度設定部414は、可変優先フィルタ440へ優先度レジスタ415に格納された情報を送信している。第1の実施の形態では、バス300へのアクセスの競合を避けるため、複数のマスタに同じ優先度が設定されないものとする。アービトレーション回路400は、マスタ100がスレーブ200を制御するアプリケーションの変更などに応じて、優先度レジスタ415に格納された情報を更新することができる。
リクエスト管理部420は、各マスタからのリクエスト信号を受信し、それらのリクエスト信号の中から許可されていないリクエスト信号を帯域制限フィルタ430に送信するものである。具体的には、リクエスト管理部420は、各マスタからリクエスト信号を受信し、受信したリクエスト信号のうち、許可されていないリクエスト信号の数をマスタごとに計数する。リクエスト管理部420は、許可されていないリクエスト信号が1つ以上あるマスタのリクエスト信号を帯域制限フィルタ430に送信する。そして、リクエスト信号が許可されると、リクエスト管理部420は、許可されていないリクエスト数の値を1つ減少する。
帯域制限フィルタ430は、リクエスト管理部420から通知された各マスタのバスの使用頻度に基づく転送速度が、設定された帯域を越えないように、リクエスト信号をマスタごとに制限するものである。具体的には、帯域制限フィルタ430は、帯域設定部411から、各マスタに設定されたサイクル期間および最大グラント数を示す情報を受信する。そして、帯域制限フィルタ430は、サイクル期間内において、可変優先度フィルタ440から送信されたグラント信号の個数をカウントする。カウントした個数が、そのマスタに設定された最大グラント数を超えていれば、そのサイクル期間内において、そのリクエスト信号をマスクする。これにより、帯域制限フィルタ430は、マスクしなかったリクエスト信号を可変優先度フィルタ440へ出力する。ここで、帯域制限フィルタ430は、設定された帯域を超えない限りリクエスト信号を制限しないため、帯域制限フィルタ430は、複数のマスタからのリクエスト信号を可変優先度フィルタ440へ出力することがある。
可変優先度フィルタ440は、帯域制限フィルタ430によりマスクされなかったリクエスト信号の中から、優先度が最も高いマスタのリクエスト信号を許可するものである。具体的には、可変優先度フィルタ440は、マスタ間に設定された優先度を優先度設定部414から取得しておく。そして、帯域制限フィルタ430からリクエスト信号を受信したとき、それらのリクエスト信号の中から最も高い優先度が設定されたマスタのリクエスト信号を選択する。そして、可変優先度フィルタ440は、バスの使用を許可するグラント信号を生成し、選択したリクエスト信号に対応するマスタへ、そのグラント信号を送信する。可変優先度フィルタ440は、送信したグラント信号をリクエスト管理部420および帯域制限フィルタ430に通知する。
なお、上述の実施の形態の帯域設定部411は、特許請求の範囲に記載の使用頻度設定部の一例である。また、上述の実施の形態のリクエスト管理部420は、特許請求の範囲に記載の使用要求管理部の一例である。また、上述の実施の形態の帯域制限フィルタ430は、特許請求の範囲に記載の帯域制限部の一例である。また、上述の実施の形態の可変優先度フィルタ440は、特許請求の範囲に記載の使用要求許可部の一例である。
図3は、本発明の第1の実施の形態が具現化される使用要求管理部の一例としてのリクエスト管理部420の一構成例を示すブロック図である。リクエスト管理部420は、待機中リクエスト信号送信部421、および、待機中リクエスト数カウンタ群422を備える。
待機中リクエスト数カウンタ群422には、マスタごとに待機中リクエスト数カウンタが設けられる。これらの待機中リクエスト数カウンタは、受信したリクエスト信号のうち、許可されていないリクエスト信号の数を計数するカウンタである。
待機中リクエスト信号送信部421は、受信したリクエスト信号のうち、許可されていないリクエスト信号を帯域制限フィルタ430へ送信するものである。具体的には、待機中リクエスト信号送信部421は、各マスタからリクエスト信号を受信するたびに、待機中リクエスト数カウンタ群422のうち、そのマスタに対応する待機中リクエスト数カウンタにカウント値を1つ増加させる。そして、待機中リクエスト数カウンタ群422内の各マスタの待機中リクエスト数カウンタの値を参照し、その値が1以上のマスタのリクエスト信号を帯域制限フィルタ430へ送信する。
リクエスト信号を帯域制限フィルタ430へ送信した後、待機中リクエスト信号送信部421は、可変優先度フィルタ440から、送信したグラント信号の通知を受ける。待機中リクエスト信号送信部421は、待機中リクエスト数カウンタ群422のうち、通知されたグラント信号に対応するマスタの待機中リクエスト数カウンタに値を1つ減少させる。
図4は、本発明の第1の実施の形態が具現化される帯域制限部の一例としての帯域制限フィルタ430の一構成例を示すブロック図である。帯域制限フィルタ430は、帯域制限部431、サイクルカウンタ群432、および、サイクル内グラント数カウンタ群433を備える。
サイクルカウンタ群432には、マスタごとにサイクルカウンタが設けられる。これらのサイクルカウンタは、サイクル期間における経過時間を計数するカウンタである。サイクル内グラント数カウンタ群433には、マスタごとにサイクル内グラント数カウンタが設けられる。これらのサイクル内グラント数カウンタは、対応するマスタへ送信されたグラント信号の数を、設定されたサイクル内において計数するカウンタである。
帯域制限部431は、まず、サイクルカウンタ群432およびサイクル内グラント数カウンタ群433内の各カウンタを初期化する。また、帯域制限部431は、各マスタのサイクル期間および最大グラント数の設定値を示す情報を帯域設定部411から受信する。
この帯域制限部431は、システムクロックに基づいて動作し、1クロックサイクルごとにサイクルカウンタ群432内の各マスタのサイクルカウンタに値を1つ増加させる。帯域制限部431は、サイクル期間レジスタ412に格納された各マスタのサイクル期間と、グラント数レジスタ413に格納された各マスタの最大グラント数とを参照する。サイクル内グラント数カウンタ群433の中の、いずれかのマスタのサイクル内グラント数カウンタの値が、グラント数レジスタ413における、そのマスタの最大グラント数以上である場合について考える。この場合、帯域制限部431は、そのマスタからのリクエスト信号をマスクする。帯域制限部431は、可変優先度フィルタ440から、送信されたグラント信号の通知を受ける。帯域制限部431は、グラント信号の通知を受けるたびに、サイクル内グラント数カウンタ群433のうち、そのグラント信号が送信されたマスタのサイクル内グラント数カウンタに値を1つ増加させる。そして、サイクルカウンタの値が、そのサイクルカウンタに対応するマスタのサイクル期間を超えたのであれば、帯域制限部431は、サイクルカウンタ群432のうち、そのマスタに対応するサイクルカウンタに値を初期化させる。同時に、帯域制限部431は、サイクル内グラント数カウンタ群433のうち、そのマスタに対応するサイクル内グラント数カウンタに値を初期化させる。
このように、帯域制限部431は、各マスタに設定されたサイクル期間内で、マスタごとにグラント信号の数を計数し、計数した数が設定された数以上であれば、そのリクエスト信号をマスクする。この構成により、帯域制限部431は、バスの使用頻度に基づく転送速度をマスタごとに帯域内に制限することができる。
図5は、各マスタのサイクル期間および最大グラント数の設定例を示す図である。例えば、マスタ「#1」について、サイクル期間「5」、最大グラント数「4」が設定されている。この場合、帯域制限フィルタ430は、5クロックサイクル内において、マスタ「#1」へのグラント信号が4つとなった時点以降のマスタ「#1」からのリクエスト信号をマスクする。
また、マスタ「#2」および「#3」については、サイクル期間「4」、最大グラント数「2」が設定されている。この場合、帯域制限フィルタ430は、4クロックサイクル内において、マスタ「#2」へのグラント信号が2つとなった時点以降のマスタ「#2」からのリクエスト信号をマスクする。また、帯域制限フィルタ430は、4クロックサイクル内において、マスタ「#3」へのグラント信号が2つとなった時点以降のマスタ「#3」からのリクエスト信号をマスクする。
図6は、各マスタの優先度の設定例を示す図である。可変優先度フィルタ440は、優先度の設定値が小さいほど、そのマスタの優先度が高いと判断する。例えば、マスタ「#1」に「0」、マスタ「#2」に「2」、マスタ「#3」に「1」の値が設定されている。ここで、1クロックサイクル内に、マスタ「#1」乃至「#3」の全てからリクエストを受信した場合、可変優先度フィルタ440は、「0」の優先度が設定されたマスタ「#1」を最も優先度が高いと判断し、マスタ「#1」にのみグラント信号を生成する。
[バス制御装置の動作]
次に、本発明の第1の実施の形態におけるアービトレーション回路400の制御手順について図7乃至10を参照して説明する。
図7は、本発明の第1の実施の形態のアービトレーション回路400の制御手順の一例を示すフローチャートである。この制御手順は、アービトレーション回路400に電源が投入されたとき、または、マスタ100がスレーブ200を制御するためのアプリケーションが実行されたときに開始される。
リクエスト管理部420および帯域制限フィルタ430は、それぞれが管理する各カウンタの値を初期化する(ステップS910)。アービトレーション回路400は、1クロックサイクルが経過したか否かを判断する(ステップS920)。1クロックサイクルが経過していなければ(ステップS920:No)、アービトレーション回路400は、ステップS920に戻る。
1クロックサイクルが経過したのであれば(ステップS920:Yes)、リクエスト管理部420は、許可されていないリクエスト信号を送信するためのリクエスト管理処理を実行する(ステップS930)。帯域制限フィルタ430は、マスタごとに転送速度を帯域以下に制限するための帯域制限処理を実行する(ステップS940)。そして、可変優先度フィルタ440は、優先度に基づいてリクエスト信号を選択するための優先度方式リクエスト選択処理を実行する(ステップS970)。ステップS970の後、アービトレーション回路400は、ステップS920に戻る。
図8は、本発明の第1の実施の形態のリクエスト管理処理の一例を示すフローチャートである。待機中リクエスト信号送信部421は、いずれかのマスタからリクエスト信号を受信したか否かを判断する(ステップS931)。いずれかのマスタからリクエスト信号を受信した場合(ステップS931:Yes)について説明する。この場合、待機中リクエスト信号送信部421は、待機中リクエスト数カウンタ群422内のうち、リクエスト信号を送信したマスタの待機中リクエスト数カウンタに値を1つ増加させる(ステップS932)。
待機中リクエスト信号送信部421は、待機中リクエスト数カウンタ群422のうち、待機中リクエスト数カウンタの値が1以上の各マスタのリクエスト信号を帯域制限フィルタ430へ送信する(ステップS933)。
待機中リクエスト信号送信部421は、可変優先度フィルタ440から、グラント信号が通知されたか否かを判断する(ステップS934)。通知されたのであれば(ステップS934:Yes)、待機中リクエスト信号送信部421は、待機中リクエスト数カウンタ群422のうち、通知されたグラント信号に対応するマスタの待機中リクエスト数カウンタに値を1つ減少させる(ステップ935)。ステップS935の後、待機中リクエスト信号送信部421は、リクエスト管理処理を終了する。
図9は、本発明の第1の実施の形態の帯域制限処理の一例を示すフローチャートである。帯域制限部431は、サイクルカウンタ群432内の各マスタに対応するサイクルカウンタに値を1つ増加させる(ステップS941)。帯域制限部431は、グラント数レジスタ413に格納された各マスタの最大グラント数を取得する。帯域制限部431は、サイクル内グラント数カウンタ群433内の各マスタのサイクル内グラント数カウンタの値と、各マスタの最大グラント数の設定値とを比較する。そして、帯域制限部431は、サイクル内グラント数カウンタ群433内のいずれかのマスタのサイクル内グラント数カウンタの値が設定値以上である否かを判断する(ステップS942)。サイクル内グラント数カウンタ群433内のいずれかのマスタのサイクル内グラント数カウンタの値が設定値以上であれば(ステップS942:Yes)、帯域制限部431は、そのマスタのリクエスト信号をマスクする(ステップS943)。
サイクル内グラント数カウンタ群433内の全てのマスタのサイクル内グラント数カウンタの値が設定値未満である場合(ステップS942:No)、またはステップS943の後の処理について説明する。この場合、帯域制限部431は、可変優先度フィルタ440から、グラント信号の通知を受けたか否かを判断する(ステップS944)。グラント信号の通知を受けたのであれば(ステップS944:Yes)、帯域制限部431は、サイクル内グラント数カウンタ群433のうち、グラント信号に対応するマスタのサイクル内グラント数カウンタに値を1つ増加させる(ステップS945)。
グラント信号の通知を受けていない場合(ステップS944:No)、または、ステップS945の後、帯域制限部431は、サイクル期間レジスタ412に格納された各マスタのサイクル期間を取得する。帯域制限部431は、サイクルカウンタ群432内の、いずれかのマスタのサイクルカウンタの値がサイクル期間を越えているか否かを判断する(ステップS946)。
いずれかのマスタのサイクルカウンタの値が、サイクル期間を越えている場合(ステップS946:Yes)について説明する。この場合、帯域制限部431は、サイクルカウンタ群432のうち、設定値を越えているマスタに対応するサイクルカウンタの値を初期化する。また、帯域制限部431は、サイクル内グラント数カウンタ群433のうち、設定値を越えているマスタに対応するサイクル内グラント数カウンタの値を初期化する(ステップS947)。各マスタのサイクルカウンタの値が、設定値を越えていない場合(ステップS946:No)、または、ステップS947の後、帯域制限部431は、1クロックサイクル内の帯域制限処理を終了する。
図10は、本発明の第1の実施の形態の優先度方式リクエスト選択処理の一例を示すフローチャートである。可変優先度フィルタ440は、いずれかのマスタからのリクエスト信号を受信したか否かを判断する(ステップS971)。いずれかのマスタからのリクエスト信号を受信していれば(ステップS971:Yes)、可変優先度フィルタ440は、帯域制限フィルタ430を通過したリクエストの中から、優先度が最も高いマスタのリクエスト信号を選択して許可する(ステップS972)。可変優先度フィルタ440は、グラント信号を生成し、許可されたリクエスト信号に対応するマスタへ、そのグラント信号を送信する(ステップS973)。可変優先度フィルタ440は、送信したグラント信号をリクエスト管理部420および帯域制限フィルタ430へ通知する(ステップS974)。
いずれのマスタからもリクエスト信号を受信していない場合(ステップS971:No)、または、ステップS974の後、可変優先度フィルタ440は優先度方式リクエスト選択処理を終了する。
続いて、本発明の第1の実施の形態におけるアービトレーション回路400の動作結果について図11および図12を参照して説明する。
図11は、本実施の形態のアービトレーション回路400の動作結果の一例を示すタイミングチャートである。この例では、バス制御装置に「#1」、「#2」、および、「#3」の3つのマスタ100を備える構成を想定している。帯域制限フィルタ430に設定された値は、図5に示したマスタ「#1」乃至「#3」の設定値と同様とする。可変優先度フィルタ440に設定された値は、図6に示したマスタ「#1」乃至「#3」の設定値と同様とする。
ここで、アービトレーション回路400において、各フィルタは、各マスタからのリクエスト信号の有無を示す3ビットの信号を送受信するものとする。図中の「3'b」以下の3ビット中の1ビット目が「#1」のマスタのリクエスト信号の有無を示し、その3ビット中の2ビット目および3ビット目が「#2」および「#3」のマスタのリクエスト信号の有無を示す。例えば、「3'b010」の信号は、マスタ「#2」からのみリクエスト信号を受信したことを示している。
ここでは、クロックサイクル「T0」乃至「T5」の期間において、順に、「3'b111」、「3'b110」、「3'b100」、「3'b100」、「3'b100」、および、「3'b000」の信号を受信している。
リクエスト管理部420は、リクエスト信号を受信し、受信したリクエスト信号のうち、許可されていないリクエスト信号を帯域制限フィルタ430へ送信する。例えば、「T0」のクロックにおいて、全てのマスタからリクエスト信号を受信したことを示す「3'b111」を受信している。リクエスト管理部420は、待機中リクエスト数カウンタ群422内の全てのマスタの待機中リクエスト数カウンタに値を1つ増加させる。全てのマスタの待機中リクエスト数カウンタが1以上であるため、リクエスト管理部420は、「3'b111」を帯域制限フィルタ430へ送信する。そして、マスタ「#1」へ送信されたグラント信号の通知を受けると、リクエスト管理部420は、マスタ「#1」の待機中リクエスト数カウンタに値を1つ減少させる。
帯域制限フィルタ430は、マスタごとに各サイクル期間内におけるグラント数が設定値以上であるか否かを判断し、超えるのであれば、そのマスタのリクエスト信号をマスクする。例えば、マスタ「#1」について、図5に示したように、サイクル期間は「5」、最大グラント数は「4」に設定されている。この設定に従って、帯域制限フィルタ430は、5クロックサイクル内において、マスタ「#1」へのグラント信号が4つとなった時点以降のマスタ「#1」からのリクエスト信号をマスクする。
この例では、「T0」乃至「T3」の4クロックサイクルにおいて、可変優先度フィルタ440は、マスタ「#1」から4回グラント信号を送信している。「T4」のクロックにおいて、帯域制限フィルタ430が計数したグラント信号の送信回数は、設定値の「4」以上となる。このため、「T4」のクロックにおいて、帯域制限フィルタ430は、受信した「3'b111」から、マスタ「#1」からのリクエスト信号をマスクして「3'b011」を送信する。
次に、可変優先度フィルタ440は、帯域制限フィルタ430から出力されたリクエスト信号の中から、優先度が最も高いマスタのリクエスト信号を選択する。例えば、クロックサイクル「T0」において可変優先度フィルタ440は、帯域制限フィルタ430から「3'b111」を受信している。すなわち、マスタ「#1」乃至「#3」のいずれからもリクエスト信号が出力されている。ここで、図6に示したように、マスタ「#1」、「#2」、および、「#3」の優先度は、「0」、「2」、および、「1」に設定されており、最も優先度が高いマスタは「#1」である。そこで、可変優先度フィルタ440は、「#1」のマスタのリクエスト信号を選択し、「3'b100」を送信する。
図12は、第1の実施の形態のアービトレーション回路400の動作結果の一例を示すタイミングチャートである。
この例では、マスタの数と、帯域制限および優先度の設定とは、図11を参照して説明した場合と同様とする。また、図中の「M1_A」等における「M」に付随する数字は、マスタの番号であり、「_」の後のアルファベットは、アルファベット順にリクエスト信号を受信したことを意味する。これらのアルファベットはリクエスト信号を受信した数を示すための便宜上のものであり、第1の実施の形態では、個々のリクエスト信号に、それぞれを識別できる識別子を付加する必要はない。
マスタ「#1」からは、「T0」乃至「T4」、「T6」乃至「T9」、「T11」乃至「T14」、および、「T16」乃至「T18」の各期間に計16回リクエスト信号を受信するものとする。マスタ「#2」からは、「T0」、「T1」、「T18」、および、「T19」の各期間にリクエスト信号を計4回受信したものとする。マスタ「#3」からは、「T0」、「T6」、「T7」、および、「T8」の各期間において、リクエスト信号を計4回受信したものとする。
この場合、「T0」乃至「T3」の期間において、アービトレーション回路400は、マスタ「#1」から4回リクエスト信号を受信し、マスタ「#2」からは2回、マスタ「#3」からは1回リクエスト信号を受信している。マスタ「#1」の優先度が最も高いため、この期間内において「#1」のリクエスト信号が帯域フィルタ430および可変優先度フィルタ440を通過する。このため、アービトレーション回路400は、マスタ「#1」に4回グラント信号を送信する。リクエスト管理部420は、待機中リクエスト数カウンタ群422のうち、許可されなかったマスタ「#2」の待機中リクエスト数カウンタに値を2つ増加させる。リクエスト管理部420は、待機中リクエスト数カウンタ群422のうち、許可されなかったマスタ「#3」の待機中リクエスト数カウンタに値を1つ増加させる。
5クロック内にマスタ「#1」のグラント回数が4回となったため、「T4」において、帯域制限フィルタ430は、そのマスタからのリクエスト信号を制限する。この「T4」のクロックにおいて、リクエスト管理部420は、許可されていないマスタ「#2」および「#3」のリクエスト信号を選択して帯域制限フィルタ430へ送信する。そして、マスタ「#2」より優先度の「#3」の方が、優先度が高いため、可変優先度フィルタ440は、マスタ「#3」のリクエスト信号を許可する。リクエスト管理部420は、待機中リクエスト数カウンタ群422のうち、許可されたマスタ「#3」の各待機中リクエスト数カウンタに値を1つ減少させる。
「T5」乃至「T9」の期間においても、最も優先度の高いマスタ「#1」のリクエスト信号が4回許可され、次に優先度の高いマスタ「#3」のリクエスト信号が1回許可される。
優先度が最も低いマスタ「#2」のリクエスト信号は、「T19」までに4回送信されており、いずれも許可されていない。このため、この時点において、待機中リクエスト数カウンタ群422のうち、マスタ「#2」の待機中リクエスト数カウンタの値は「4」である。「T20」の時点で、マスタ「#1」および「#3」のリクエスト信号が全て許可されて、待機中リクエスト数カウンタ群422における、これらのマスタの待機中リクエスト数カウンタの値が「0」となる。リクエスト管理部420は、待機中リクエスト数カウンタ群422のうち、待機中リクエスト数カウンタの値が1つ以上のマスタ「#2」のリクエスト信号のみを帯域制限フィルタ430に送信する。そして、「T20」以降にマスタ「#2」のリクエスト信号が許可される。
図12に例示したように、帯域制限フィルタ430が優先度の高いマスタ「#1」の帯域を制限しているため、5クロックに1回は、優先度の低いマスタ「#3」にもグラント信号が送信される。このように、マスタごとにリクエスト信号を帯域制限することにより、マスタごとに要求されるQoS(Quality of Service)が異なる場合であっても、それらのQoSを満たすことが可能となる。
このように、第1の実施の形態によれば、リクエスト管理部420がリクエスト信号を受信し、受信した中から、許可されていないリクエスト信号を出力する。帯域制限フィルタ430は、マスタによるバスの使用頻度に基づく転送速度が、設定された帯域以下となるように、マスタごとにリクエスト信号を制限する。可変優先度フィルタ440は、制限されなかったリクエスト信号の中から優先度に基づいていずれかのリクエスト信号を許可する。すなわち、この構成によれば、アービトレーション回路400は、バスの使用頻度に基づくデータ転送速度を、マスタごとに帯域以下に制限することができる。また、帯域設定部411が帯域をマスタごとに設定できるため、アービトレーション回路400は、ハードウェアを再設計することなく、その帯域を変更することができる。
なお、第1の実施の形態では、バス制御装置は、スレーブ200を1つ備える構成としているが、複数のスレーブを備える構成としてもよい。
また、本実施の形態では、アービトレーション回路400は、帯域制限フィルタ430を通過したリクエストの中から、優先度方式で、1つのマスタのリクエストを選択する構成としている。しかし、アービトレーション回路400は、帯域制限後に、1つのマスタのリクエストを選択することができるのであれば、優先度方式以外の方式を用いることもできる。例えば、アービトレーション回路400は、図13で後述する、最長経過時間方式や、図18で後述する、最長経過時間方式および優先度方式を組み合わせた方式を用いてもよい。ラウンドロビン方式など、これら以外の方式を用いてもよいのは勿論である。
また、第1の実施の形態では、アービトレーション回路400は、優先度レジスタ415の更新により優先度を可変できる構成としているが、各マスタの優先度を固定値としてもよいのは勿論である。
さらに、第1の実施の形態では、アービトレーション回路400は、グラント信号を監視する周期と、その周期内で許可するグラント数とを設定しておき、これらの設定値に基づいて転送速度を帯域内に制限する構成としている。しかし、マスタごとに転送速度を制限できるのであれば、周期およびグラント数以外の設定値を設定する構成としてもよい。例えば、図29で後述するように、周期内で許可するグラント数を固定値とし、周期のみをマスタごとに設定する構成としてもよい。また、周期を固定値とし、グラント数のみをマスタごとに設定する構成としてもよい。あるいは、帯域そのものをマスタごとに設定する構成としてもよい。
<2.第2の実施の形態>
[バス制御装置の構成]
次に、図13乃至図17を参照して、本発明の第2の実施の形態について説明する。第1の実施の形態のアービトレーション回路は、帯域制限の後に優先度方式でマスタを選択していた。しかし、第2の実施の形態のアービトレーション回路は、帯域制限の後に最長経過時間方式でマスタを選択する点で第1の実施の形態と異なる。
図13は、本発明の第2の実施の形態が具現化されるアービトレーション回路の一例としてのアービトレーション回路401の一構成例を示すブロック図である。このアービトレーション回路401は、パラメータ設定部410の代わりにパラメータ設定部416を備え、可変優先度フィルタ440の代わりにLRGフィルタ450を備える点で、第1の実施の形態のアービトレーション回路400と異なる。パラメータ設定部416は、優先度設定部414を備えない点で第1の実施の形態のパラメータ設定部410と異なる。
LRGフィルタ450は、帯域制限フィルタ430によりマスクされなかったリクエスト信号の中から、最後にLRGフィルタ450がグラント信号を送信してからの経過時間が最も長いマスタのリクエスト信号を選択して許可するものである。このように、複数のリクエスト信号の中から、最後にグラント信号を送信してから最も経過時間が長いマスタのリクエスト信号を許可する方式を最長経過時間(LRG:Least Recently Granted)方式と称する。LRGフィルタ450は、許可したリクエストに対応するマスタにグラント信号を生成し、信号線600を介して、そのマスタへ出力する。
なお、上述の実施の形態のLRGフィルタ450は、特許請求の範囲に記載の使用要求許可部の一例である。
図14は、本発明の第2の実施の形態が具現化される使用要求許可部の一例としてのLRGフィルタ450の一構成例を示すブロック図である。LRGフィルタ450は、LRG方式選択部451および優先度保持部452を備える。
優先度保持部452は、マスタごとに、優先度を示す値を保持するものである。例えば、保持された値が小さいほど、優先度が高いものとする。
LRG方式選択部451は、システムクロックに基づいて動作する。LRG方式選択部451は、まず、優先度保持部452が保持する各優先度を初期化する。初期化においては、同じ優先度が複数のマスタに割り当てられないようにしておく。そして、LRG方式選択部451は、帯域制限フィルタ430によりマスクされなかったリクエスト信号があれば、その中から、優先度が最も高いマスタのリクエスト信号を選択して許可する。LRG方式選択部451は、優先度保持部452が保持する優先度を、許可したリクエスト信号に対応するマスタの優先度が最も低くなるように更新する。LRG方式選択部451は、許可したリクエスト信号に対応するマスタにグラント信号を送信する。LRG方式選択部451は、送信したグラント信号をリクエスト管理部420および帯域制限フィルタ430に通知する。
図15は、本発明の第2の実施の形態におけるLRGフィルタの構成を説明するための図である。この例では、バス制御装置に「M1」、「M2」、および、「M3」の3つのマスタ100を備える構成を想定している。初期化においては、LRGフィルタ450は、優先度が高い順に「M1」、「M2」、「M3」となるように各マスタの優先度を保持しておくものとする。ある時刻において、「M2」および「M3」が帯域制限フィルタ430によりマスクされなかった場合、LRGフィルタ450は、その中から最も優先度が高い「M2」を許可する。そして、「M2」へグラント信号が出力される。LRG方式選択部451は、許可した「M2」の優先度が最も低くなるように優先度保持部452が保持する値を更新する。この結果、優先度保持部452が保持する優先度は、高い順に「M1」、「M3」、「M2」となる。その後、「M3」が帯域制限フィルタ430によりマスクされなかった場合、LRGフィルタ450は、「M3」を許可する。LRG方式選択部451は、そのマスタの優先度が最も低くなるように優先度保持部452が保持する値を更新する。この結果、優先度保持部452が保持する優先度は、高い順に「M1」、「M2」、「M3」となる。このように、LRGフィルタ450は、グラント信号に基づいて優先度を動的に更新する。
[バス制御装置の動作]
次に、本発明の第2の実施の形態におけるアービトレーション回路401の動作について図16および図17を参照して説明する。
図15は、本発明の第2の実施の形態のアービトレーション回路401の制御手順の一例を示すフローチャートである。本実施の形態のアービトレーション回路401の制御手順は、優先度方式リクエスト選択処理(ステップS970)の代わりに、LRG方式選択処理(ステップS990)を実行する点において、第1の実施の形態の制御手順と異なる。
図17は、本発明の第2の実施の形態のLRG方式選択リクエスト処理の一例を示すフローチャートである。LRG方式選択部451は、帯域制限フィルタ430からリクエスト信号を少なくとも1つ受信したか否かを判断する(ステップS991)。
リクエスト信号を受信したのであれば(ステップS991:Yes)、LRG方式選択部451は、受信したリクエスト信号の中から、優先度が最も高いマスタのリクエストを選択して許可する(ステップS992)。LRG方式選択部451は、優先度保持部452のうち、許可したリクエスト信号に対応するマスタの優先度を最も低くする(ステップS993)。LRG方式選択部451は、許可されたリクエストに対応するマスタにグラント信号を送信する(ステップS994)。LRG方式選択部451は、送信したグラント信号をリクエスト管理部420および帯域制限フィルタ430に通知する(ステップS995)。
リクエスト信号を1つも受信していない場合(ステップS991:No)、またはステップS996の後、LRGフィルタ450は、LRG方式選択リクエスト処理を終了する。
続いて、本発明の第2の実施の形態におけるアービトレーション回路401の動作結果について図18を参照して説明する。
図18は、本実施の形態のアービトレーション回路401の動作結果の一例を示すタイミングチャートである。この例では、バスマスタの数と、帯域制限および優先度の設定値とは、第1の実施の形態と同様とする。また、「T0」乃至「T5」の期間において、アービトレーション回路401は、第1の実施の形態と同様のリクエスト信号を受信したものと想定する。すなわち、前述したように、「3'b111」、「3'b110」、「3'b100」、「3'b100」、「3'b100」、および、「3'b000」を受信したものと考える。
リクエスト管理部420は、第1の実施の形態の場合と同様に、リクエスト信号を受信し、受信したリクエスト信号のうち、許可されていないリクエスト信号を帯域制限フィルタ430へ送信する。帯域制限フィルタ430は、マスタごとに各サイクル期間内のグラント数が設定値以上であるか否かを判断し、設定値以上であれば、そのマスタのリクエストをマスクする。
LRGフィルタ450は、帯域制限フィルタ430により制限されなかったリクエスト信号のうち、最後にグラント信号を送信してから最も経過時間の長いマスタのリクエスト信号を選択して許可する。例えば、「T0」より前のクロックでマスタ「#2」、「#1」の順にグラント信号が送信されていたと仮定する。そして、「T0」において、LRGフィルタ450がマスタ「#1」にグラント信号を送信してから、「T1」において、LRGフィルタ450が「3'b111」を受信している。この場合、最後に許可されてから経過時間が最も長いマスタは、「#2」となる。このため、LRGフィルタ450は、「3'b010」の信号を出力する。
このように、本発明の第2の実施の形態によれば、帯域制限後に、最後にグラント信号を送信してから最も経過時間の長いマスタのリクエスト信号をLRGフィルタ450が選択する。この構成によれば、リクエストが選択されない時間が長いマスタにもデータ転送を許可でき、マスタ間の公平性を確保することができる。
なお、本発明の第2の実施の形態では、LRGフィルタ450がマスタごとに優先度を保持しておき、グラント信号に基づいて優先度を動的に変更する構成としている。しかし、例えば、図19に示すように、マスタごとに経過時間を計数するカウンタを設ける構成としてもよい。図19は、本発明の第2の実施の形態におけるLRGフィルタ450の変形例を示すブロック図である。このLRGフィルタ450は、LRG方式選択部453および経過時間カウンタ群454を備える。
経過時間カウンタ群454には、マスタごとに経過時間カウンタが設けられる。経過時間カウンタは、最後に選択されたときからの経過時間を計数するカウンタである。
LRG方式選択部453は、システムクロックに基づいて動作する。LRG方式選択部453は、まず、経過時間カウンタ群454内の各カウンタを初期化する。そして、LRG方式選択部453は、1クロックサイクルが経過するたびに各経過時間カウンタをカウントアップする。LRG方式選択部453は、帯域制限フィルタ430によりマスクされなかったリクエスト信号があれば、その中から、経過時間カウンタの値が最も長いマスタのリクエスト信号を選択して許可する。LRG方式選択部453は、許可したリクエスト信号に対応するマスタの経過時間カウンタを初期化する。LRG方式選択部453は、許可したリクエスト信号に対応するマスタにグラント信号を送信する。LRG方式選択部453は、送信したグラント信号をリクエスト管理部420および帯域制限フィルタ430に通知する。
<3.第3の実施の形態>
[バス制御装置の構成]
次に、図20乃至図23を参照して、本発明の第3の実施の形態について説明する。第1の実施の形態のアービトレーション回路は、帯域制限の後に優先度方式によりマスタを選択していた。しかし、本発明の第3の実施の形態のアービトレーション回路は、帯域制限の後に優先度方式および最長経過時間方式によりマスタを選択する点で第1の実施の形態と異なる。
図20は、本発明の第3の実施の形態が具現化されるアービトレーション回路の一例としてのアービトレーション回路402の一構成例を示すブロック図である。このアービトレーション回路402は、可変優先度フィルタ440の代わりに可変優先度フィルタ445を備え、LRGフィルタ450をさらに備える点において、第1の実施の形態のアービトレーション回路400と異なる。
可変優先度フィルタ445は、帯域制限フィルタ430から受信したリクエスト信号の中から、最も高い優先度が設定されたマスタのリクエスト信号を選択するものである。
ここで、第1の実施の形態では、複数のマスタに同じ優先度が設定されないものとしていたが、第2の実施の形態では、複数のマスタに同じ優先度を設定してもよいものとする。これは、可変優先度フィルタ445を通過したリクエスト信号が複数であっても、LRGフィルタ450が、その中から、いずれかのマスタのリクエスト信号を選択するためである。
また、第1の実施の形態では、可変優先度フィルタ440は、選択したリクエスト信号をリクエスト管理部420および帯域制限フィルタ430に通知していた。しかし、第3の実施の形態の可変優先度フィルタ445は、グラント信号をリクエスト管理部420および帯域制限フィルタ430に通知しない。これは、前段の可変優先度フィルタ440でなく、後段のLRGフィルタ450が、グラント信号をリクエスト管理部420および帯域制限フィルタ430に通知するためである。
なお、上述の実施の形態の可変優先度フィルタ445は、特許請求の範囲に記載の優先度選択部の一例である。上述の実施の形態のLRGフィルタ450は、特許請求の範囲に記載の最長経過時間選択部の一例である。
図21は、本発明の第3の実施の形態における、各マスタの優先度の設定例を示す図である。第1の実施の形態においては、図6で例示したように複数のマスタに同じ優先度を設定できないものとしていたが、第3の実施の形態においては、複数のマスタに同じ優先度を設定できるものとする。例えば、マスタ「#1」、「#2」、および、「#3」には、それぞれ「0」、「1」、および、「1」の優先度が設定されており、マスタ「#2」および「#3」の優先度が同じである。
[バス制御装置の動作]
次に、本発明の第3の実施の形態におけるアービトレーション回路402の制御手順について図22を参照して説明する。
図22は、本発明の第3の実施の形態のアービトレーション回路402の制御手順の一例を示すフローチャートである。アービトレーション回路402の制御手順は、優先度方式リクエスト選択処理(ステップS970)の代わりに、ステップS975およびS990を実行する点において、第1の実施の形態の制御手順と異なる。
ステップS970の後、可変優先度フィルタ445は、帯域制限フィルタ430を通過したリクエスト信号の中から、優先度が最も高いマスタのリクエスト信号を選択する(ステップS975)。ステップS975の後、LRGフィルタ450は、LRG方式リクエスト選択処理を実行する(S990)。このリクエスト方式選択処理は、第2の実施の形態のLRG方式リクエスト選択処理と同様である。
図23は、本発明の第3の実施の形態のアービトレーション回路402の動作結果の一例を示すタイミングチャートである。この例では、バスマスタの数は、第1の実施の形態と同様に3つしかない構成を想定している。帯域制限フィルタ430の設定値は、第1の実施の形態と同様とする。可変優先度フィルタ445の設定値は、図21に例示したように、マスタ「#1」、「#2」、および、「#3」に対して、優先度「0」、「1」、および、「1」であるものとする。
また、「T0」乃至「T5」の期間において、アービトレーション回路402は、第1の実施の形態と同様のリクエスト信号を受信したものと想定する。すなわち、前述したように、「3'b111」、「3'b110」、「3'b100」、「3'b100」、「3'b100」、および、「3'b000」を受信したものと考える。
リクエスト管理部420は、第1の実施の形態の場合と同様に、リクエスト信号を受信し、受信した中から許可されていないリクエスト信号を送信する。帯域制限フィルタ430も、第1の実施の形態と同様に、マスタごとに各サイクル期間内のリクエスト数が設定値を越えるか否かを判断し、設定値を超えるのであれば、そのマスタのリクエスト信号をマスクする。
可変優先度フィルタ445は、帯域制限フィルタ430から出力されたリクエスト信号の中から、優先度が最も高いマスタのリクエスト信号を選択する。但し、前述したように、第3の実施の形態においては、第1の実施の形態と異なり、複数のマスタに同じ優先度を設定することが許容される。このため、可変優先度フィルタ445は複数のリクエスト信号を出力することがある。
例えば、「T4」のクロックにおいて、可変優先度フィルタ445は、帯域制限フィルタから「3'b011」の信号を受信している。マスタ「#2」および「#3」の優先度が同じであるため、可変優先度フィルタ445は、複数のリクエスト信号を示す「3'b011」の信号を出力する。
LRGフィルタ450は、第2の実施の形態と同様に、可変優先度フィルタ445から受信したリクエスト信号のうち、許可されてから最も経過時間の長いマスタのリクエストを選択する。
このように、本発明の第3の実施の形態によれば、帯域制限後に、可変優先度フィルタ445が優先度方式でリクエスト信号を選択し、その後にLRGフィルタ450が最長経過時間方式でリクエスト信号を選択する。この構成によれば、アービトレーション回路402は、予め設定された優先度と、許可されたときからの経過時間とに基づいて選択要求を選択することができる。従って、アービトレーション回路402は、優先度を高く設定したマスタのリクエストを確実に選択できるとともに、マスタ間の公平性を確保することができる。
なお、第3の実施の形態では、アービトレーション回路402は、優先度レジスタ415の更新により、優先度を可変できる構成としている。しかし、各マスタの優先度を固定値としてもよいのは勿論である。
<4.第4の実施の形態>
[バス制御装置の構成]
次に、図24乃至図28を参照して、本発明の第4の実施の形態について説明する。第3の実施の形態では、アービトレーション回路402は、あるクロックサイクルにおいて受信したリクエスト信号を、そのクロックサイクル内に許可していた。しかし、第4の実実施の形態のアービトレーション回路403は、あるクロックサイクルにおいて受信したリクエスト信号を、そのクロックサイクル内でなく、次のクロックサイクルにおいて許可する点で第3の実施の形態と異なる。
図24は、本発明の第4の実施の形態が具現化されるアービトレーション回路の一例としてのアービトレーション回路403の一構成例を示すブロック図である。第3の実施の形態のアービトレーション回路402は、前述したように、各クロックサイクルにおいてリクエスト信号を選択して許可すると、許可していないリクエスト信号の数を1つ減少させる。ここで、リクエスト信号を受信してから、その中のいずれかを許可する処理が完了するのに、ある程度の時間を要する。このため、許可していないリクエスト信号を減らす処理が、リクエスト信号を受信したクロックサイクル内に終了しないことがありうる。その場合、待機中リクエスト数カウンタ群422内の待機中リクエスト数カウンタから、削除すべきリクエスト信号が削除されず、アービトレーション回路402が誤動作する原因となる。そこで、第3の実施の形態においては、アービトレーション回路402が、あるクロックサイクル内に選択したリクエスト信号を、そのクロックサイクルの次のサイクル以降に許可する構成にし、許可したリクエスト信号を確実に削除するようにしている。
具体的には、アービトレーション回路403は、LRGフィルタ450の代わりにLRGフィルタ455を備える点において、第3の実施の形態のアービトレーション回路402と異なる。また、アービトレーション回路403は、可変優先度フィルタ445とLRGフィルタ455との間にスライサ460を備える点においても、第3の実施の形態のアービトレーション回路402と異なる。
LRGフィルタ455は、グラント信号を、リクエスト管理部420および帯域制限フィルタ430のほか、さらにスライサ460にも通知する点において、第3の実施の形態のLRGフィルタ450と異なる。
スライサ460は、あるクロックサイクルにおいて可変優先度フィルタ445により選択されたリクエスト信号の一部または全部を、そのクロックサイクルの次のサイクルにLRGフィルタ455へ出力するものである。詳細には、スライサ460は、前回送信されたグラント信号の通知をLRGフィルタ455から受ける。そして、可変優先度フィルタ445により選択されたリクエスト信号のうち、前回グラント信号が通知されたマスタと異なるマスタのリクエスト信号をLRGフィルタ455へ出力する。前回グラント信号が送信されたマスタからのリクエスト信号を出力しない理由については、図25を参照して後述する。
図25は、スライサ460の一構成例を示すブロック図である。スライサ460は、タイミング調整部461、前回グラント信号保持部462、およびEOR回路463を備える。
タイミング調整部461は、FIFO(First In First Out)方式を使用してリクエスト信号を保持し、LRGフィルタ455がリクエスト信号を出力するタイミングを調整するものである。具体的には、可変優先度フィルタ445からリクエスト信号が選択されると、タイミング調整部461は、前回のクロックサイクルにおいて自身が保持したリクエスト信号を取得する。そして、タイミング調整部461は、今回のクロックサイクルにおいて選択されたリクエスト信号を保持する。
前回グラント信号保持部462は、LRGフィルタ455から通知されたグラント信号を保持するものである。前回グラントリクエスト信号保持部462は、LRGフィルタ455からリクエスト信号を受信するたびに、保持しているグラント信号を受信したグラント信号により更新する。前回グラント信号保持部462は、通知されたグラント信号を、グラント信号が送信されたか否かをマスタごとに示すビット列として保持する。
EOR回路463は、タイミング調整部461が取得したリクエスト信号の中から、前回許可されたリクエスト信号のマスタと異なるマスタのリクエスト信号をLRGフィルタ455へ出力するものである。具体的には、EOR回路463は、各マスタのリクエスト信号の有無を示すビット列をタイミング調整部461から受信する。また、EOR回路463は、前回グラント信号が送信されたか否かをマスタごとに示すビット列を前回グラント信号保持部462から読み出す。EOR回路463は、受信したビット列と読み出したビット列との排他的論理和を求め、求めた排他的論理和をLRGフィルタ455へ出力する。
上述したように、リクエスト管理部420とは別に、タイミング調整部461は、前回選択されたリクエスト信号を保持している。タイミング調整部461に保持されたリクエスト信号の中には、前回許可されたことにより、リクエスト管理部420が削除したリクエスト信号と同一の信号が含まれることがある。このため、前回許可されたリクエスト信号とマスタが同一のリクエスト信号をタイミング調整部461の出力信号から削除しておかないと、リクエスト管理部420により削除されたリクエスト信号が許可される可能性がある。この場合、アービトレーション回路403は、1つのリクエスト信号を2回許可することとなり、アービトレーション回路403に誤動作が生じうる。従って、この誤動作を防ぐ目的に基づき、前回許可されたリクエスト信号とマスタが同一のリクエスト信号をスライサ460が出力しない構成としている。
なお、上述の実施の形態のスライサ460は、特許請求の範囲に記載の調整部の一例である。
[バス制御装置の動作]
次に、本発明の第4の実施の形態におけるアービトレーション回路403の制御手順について図26および図27を参照して説明する。
図26は、本発明の第4の実施の形態のアービトレーション回路403の制御手順の一例を示すフローチャートである。第4の実施の形態の制御手順は、ステップS975の後に、リクエスト信号を許可する時機を調整するためのタイミング調整処理(ステップS980)をさらに実行する点において、第3の実施の形態の制御手順と異なる。
図27は、本発明の第4の実施の形態のタイミング調整処理の一例を示すフローチャートである。タイミング調整部461は、前回保持したリクエスト信号を取得し、今回受信したリクエスト信号を保持する(ステップS981)。
EOR回路463は、LRGフィルタ455により前回送信されたグラント信号を前回グラント信号保持部462から読み出して取得する(ステップS982)。EOR回路463は、今回受信したリクエスト信号のうち、前回グラント信号が送信されたマスタからのリクエスト信号をマスクする(ステップS983)。EOR回路463は、マスクしなかったリクエスト信号をLRGフィルタ455に出力する(ステップS984)。
前回グラント信号保持部462は、LRGフィルタ455から通知されたグラント信号を保持する(ステップS985)。
図28は、本発明の第4の実施の形態のアービトレーション回路403の動作結果の一例を示すタイミングチャートである。この例では、バスマスタの数と、帯域制限フィルタ430および可変優先度フィルタ445の設定値は、第3の実施の形態と同様とする。
また、「T0」乃至「T5」の期間において、アービトレーション回路403は、第1の実施の形態と同様のリクエスト信号を受信したものと想定する。すなわち、前述したように、「3'b111」、「3'b110」、「3'b100」、「3'b100」、「3'b100」、および、「3'b000」を受信したものと考える。
リクエスト管理部420は、第1の実施の形態の場合と同様に、リクエスト信号を受信し、受信した中から許可されていないリクエスト信号を送信する。帯域制限フィルタ430も、第1の実施の形態と同様に、マスタごとに各サイクル期間内のリクエスト数が設定値を越えるか否かを判断し、設定値を超えるのであれば、そのマスタのリクエスト信号をマスクする。
可変優先度フィルタ445は、第3の実施の形態と同様に、帯域制限フィルタ430から出力されたリクエスト信号の中から、優先度が最も高いマスタのリクエスト信号を選択する。
スライサ460は、可変優先度フィルタ445に選択されたリクエスト信号を保持し、選択されたクロックサイクルの次のサイクルに出力する。例えば、「T0」のクロックにおいて、スライサ460は、可変優先度フィルタ445から「3'b100」の信号を受信する。スライサ460は、「T0」の次の「T1」クロックにおいて、その信号を出力する。
また、スライサ460は、前回許可されたリクエスト信号に対応するマスタと異なるマスタからのリクエスト信号のみを出力する。例えば、「T1」のクロックにおいて、LRGフィルタ455により、マスタ「#1」のリクエスト信号が許可されている。そして、「T2」のクロックにおいて、スライサ460は、可変優先度フィルタ445から「3'b100」の信号を受信する。この場合、スライサ460は、前回許可されたマスタ「#1」からのリクエスト信号をマスクし、「3'b000」の信号を出力する。
このように、本発明の第4の実施の形態によれば、アービトレーション回路403は、あるクロックサイクルにおいて選択されたリクエスト信号を、そのクロックサイクルの次のサイクルに許可する。この構成によれば、アービトレーション回路403は、あるクロックサイクル内にリクエスト信号を選択して許可したとき、そのクロックサイクル内に許可したリクエスト信号を削除する必要が無くなる。このため、あるクロックサイクル内に許可されたリクエスト信号が削除されないことを原因とする誤動作を防止することができる。
また、アービトレーション回路403は、前回グラント信号が送信されたマスタからのリクエスト信号を許可しない。この構成によれば、リクエスト管理部420により削除されたリクエスト信号と同一の信号を、LRGフィルタ455が再度許可することを防止することができる。
なお、第4の実施の形態では、アービトレーション回路403は、リクエスト信号が優先度に基づいて選択されたクロックの次のクロックにおいて、そのリクエスト信号を許可する構成としている。ただし、アービトレーション回路403は、リクエスト信号が選択されてから2クロック以上が経過した後、そのリクエスト信号を許可する構成としてもよい。
また、第4の実施の形態では、アービトレーション回路403において可変優先度フィルタ445とLRGフィルタ455との間にスライサ460を設ける構成としている。しかし、リクエスト信号を受信してから、所定時間経過後にリクエスト信号を許可できるのであれば、スライサ460は、どのフィルタの前後に挿入してもよい。例えば、帯域制限フィルタ430と可変優先度フィルタ445との間にスライサ460を設ける構成としてもよい。
<5.第5の実施の形態>
[バス制御装置の構成]
次に、図29乃至図32を参照して、本発明の第5の実施の形態について説明する。第1の実施の形態のアービトレーション回路は、帯域制限において、サイクル期間および最大グラント数を設定していたが、第5の実施の形態のアービトレーション回路は、サイクル期間のみを設定する点で第1の実施の形態と異なる。
図29は、本発明の第5の実施の形態が具現化されるアービトレーション回路の一例としてのアービトレーション回路404の一構成例を示すブロック図である。このアービトレーション回路404は、パラメータ設定部410の代わりにパラメータ設定部417を備え、帯域制限フィルタ430の代わりに帯域制限フィルタ435を備える点で、第1の実施の形態のアービトレーション回路400と異なる。パラメータ設定部417は、帯域設定部411の代わりに帯域設定部416を備える点で第1の実施の形態のパラメータ設定部410と異なる。帯域設定部416は、グラント数レジスタ413を備えない点で第1の実施の形態の帯域設定部411と異なる。
帯域制限フィルタ435は、グラント信号の間隔をマスタごとに計数し、計数した間隔が設定値未満であれば、そのマスタのリクエスト信号をマスクするものである。
図30は、本発明の第3の実施の形態が具現化される帯域制限部の一例としての帯域制限フィルタ435の一構成例を示すブロック図である。帯域制限フィルタ435は、帯域制限部431の代わりに帯域制限部434を備え、サイクル内グラント数カウンタ群433を備えない点で第1の実施の形態の帯域制限フィルタ430と異なる。
帯域制限部434は、グラント信号の間隔が設定値以上となるように、リクエスト信号を制限するものである。具体的には、帯域制限部434は、1クロックサイクルが経過するたびに、サイクルカウンタ群432内の各サイクルカウンタに値を1つ増加させる。そして、サイクルカウンタ群432内の、いずれかのマスタのサイクルカウンタの値が、サイクル期間以下であれば、帯域制限部434は、そのマスタのリクエスト信号をマスクする。また、帯域制限部434は、グラント信号の通知を可変優先度フィルタ440から受ける。帯域制限部434は、サイクルカウンタ群432のうち、通知されたグラント信号に対応するマスタのサイクルカウンタの値を初期化する。
図31は、本発明の第5の実施の形態のリクエスト間隔としてのサイクル期間の設定例を示す図である。グラント間隔は、グラント信号の間に最低限設けるべきクロックサイクルの数により設定される。例えば、マスタ「#1」、「#2」、および、「#3」に、リクエスト間隔として「2」、「1」、および、「0」が設定されている場合を想定する。この場合、あるクロックサイクルにおいて、マスタ「#1」へグラント信号が送信されると、そのクロックから2クロックが経過するまでは、帯域制限フィルタ435は、マスタ「#1」からのリクエスト信号を制限する。また、マスタ「#3」のリクエスト間隔は「0」であるため、帯域制限フィルタ435は、各クロックサイクルにおいて、マスタ「#3」からのリクエスト信号を制限しない。
[バス制御装置の動作]
図32は、本発明の第5の実施の形態の帯域制限処理の一例を示すフローチャートである。帯域制限部434は、サイクルカウンタ群432内の各マスタのサイクルカウンタに値を1つ増加させる(ステップS951)。帯域制限部434は、サイクルカウンタ群432内の、各マスタのサイクルカウンタの値が、いずれも設定値を超えているか否かを判断する(ステップS952)。いずれかのマスタにおいて、サイクルカウンタの値が設定値以下であれば(ステップS952:No)、帯域制限部434は、受信したリクエスト信号のうち、サイクルカウンタの値が設定値以下のマスタのリクエスト信号をマスクする(ステップS953)。
全てのマスタのサイクルカウンタの値が設定値を越えている場合(ステップS952:Yes)、またはステップS953の後、帯域制限部434は、可変優先度フィルタ440からグラント信号の通知を受けたか否かを判断する(ステップS954)。グラント信号の通知を受けたのであれば(ステップS954:Yes)、帯域制限部434は、サイクルカウンタ群432のうち、そのグラント信号に対応するマスタのサイクルカウンタの値を初期化する(ステップS956)。
グラント信号の通知を受けていない場合(ステップS954:No)、または、ステップS954の後、帯域制限部434は、帯域制限処理を終了する。
このように、本発明の第5の実施の形態によれば、帯域制限部434は、サイクル期間を設定しておくことにより、グラント信号の間隔がサイクル期間以上となるように、リクエスト信号を制限する。この構成によれば、帯域制限部434は、サイクル期間の設定のみにより、帯域制限を行うことができる。また、図30に例示したように、サイクル期間および最大グラント数を設定する場合と比較して、帯域制限フィルタに設けるカウンタの数が少なくて済む。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。