以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
図1は、本発明に係るバスシステム1の構成を示すブロック図である。図1のバスシステム1は、リクエスタ2,3,4と、共有資源としてのメモリ5と、バスアービトレーション装置(以下、アービトレーション装置と称する)6と、共有バス7とを備えている。なお、共有資源としてメモリ以外のものが実装されていてもよい。
リクエスタ2,3,4は、共有バス7との間のインタフェースとして、それぞれ共有バスインタフェース信号12,13,14を入出力する。同様に、メモリ5は、共有バス7との間のインタフェースとして、共有バスインタフェース信号15を入出力する。これらの信号により、リクエスタ2,3,4は、共有バス7を介してメモリ5にアクセスすることができる。
アービトレーション装置6は、リクエスタ2,3,4との間のインタフェースとして、それぞれアービトレーションインタフェース信号22,23,24を入出力し、リクエスタ2,3,4による共有バス7を介したメモリ5へのアクセス要求を調停(アービトレーション)する。
アービトレーション装置6は、リクエスタ2,3,4からのアクセス要求が競合した場合の調停に用いる優先順序を、複数持つ。本実施形態では、アービトレーション装置6は、例えば以下の3つの優先順序を持つこととする。優先順序1はリクエスタ2、リクエスタ3、リクエスタ4の順に優先順位が高く、優先順序2はリクエスタ4、リクエスタ2、リクエスタ3の順に優先順位が高く、優先順序3はリクエスタ3、リクエスタ4、リクエスタ2の順に優先順位が高くなっている。
各時間においてどの優先順序が適用されるかは、システムにおいて各リクエスタが必要とする回数のデータ転送を満たすよう、あらかじめ決定される。なお、どの時間にどの優先順序を適用するかは固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、1つの優先順序が適用される期間の長さについても、レジスタ設定又はプログラムにより変更可能としてもよい。
リクエスタ2は、リクエスタ2の内部の状態を調停に反映させるために、内部状態信号32をアービトレーション装置6に出力する。内部状態信号32は、リクエスタ2のアクセス要求の優先順位を上昇させるべきであることを通知する第1の状態、通常の優先順位を維持させるべきであることを通知する第2の状態、又は、優先順位を低下させるべきであることを通知する第3の状態のいずれかを示す。
図2は、図1のリクエスタ2の構成を示すブロック図である。図2のリクエスタ2は、CPUコア201と、命令キャッシュ202と、データキャッシュ203と、バスインタフェース部204と、キャッシュヒット率観測部205と、割り込み制御部206と、内部状態信号生成部207とを備える。命令キャッシュ202及びデータキャッシュ203は、必要な容量のキャッシュメモリをそれぞれ有する。
CPUコア201は、図1のメモリ5から供給された命令を実行する。CPUコア201は、命令キャッシュ202及びデータキャッシュ203との間のインタフェースとして、CPUコアインタフェース信号210、211を入出力する。
命令キャッシュ202は、メモリ5に格納されている命令のコピーを保持し、データキャッシュ203は、メモリ5に格納されているデータのコピーを保持し、命令キャッシュ202及びデータキャッシュ203は、CPUコア201からの書き込みデータをそれぞれ保持する。命令キャッシュ202はキャッシュアクセス情報信号221を、データキャッシュ203はキャッシュアクセス情報信号231を、それぞれキャッシュヒット率観測部205に出力する。また、バスインタフェース部204との間のインタフェースとして、命令キャッシュ202はキャッシュインタフェース信号220を、データキャッシュ203はキャッシュインタフェース信号230を、それぞれ入出力する。
バスインタフェース部204は、図1の共有バス7を介してメモリ5へのアクセスを行う。バスインタフェース部204は、共有バス7との間のインタフェースとして共有バスインタフェース信号12を入出力し、アービトレーション装置6との間のインタフェースとしてアービトレーションインタフェース信号22を入出力する。
キャッシュヒット率観測部205は、キャッシュアクセス情報信号221及びキャッシュアクセス情報信号231に基づいて、所定の期間における命令キャッシュ202及びデータキャッシュ203のキャッシュヒット率をそれぞれ算出する。キャッシュヒット率観測部205は、内部状態信号生成部207に対し、命令キャッシュ202のヒット率をキャッシュヒット率情報信号250を出力することにより通知し、データキャッシュ203のヒット率をキャッシュヒット率情報信号251を出力することにより通知する。なお、ヒット率を算出する期間は、レジスタ設定又はプログラムにより変更可能としてもよい。
割り込み制御部206は、リクエスタ2で発生した、もしくはリクエスタ2に対して発生した割り込みの制御を行う。割り込み制御部206は、CPUコア201との間のインタフェースとして、割り込みインタフェース信号212を入出力する。また、所定の期間、割り込み通知信号260を出力することにより、割り込みの発生を内部状態信号生成部207に通知する。なお、全ての割り込みを、割り込み通知信号260によって通知する必要はなく、割り込みの種類、レジスタ設定、又はプログラムによりディスエーブル可能として、通知しない割り込みがあってもよい。また、通知される期間についても、レジスタ設定又はプログラムにより変更可能としてもよい。
内部状態生成部207は、キャッシュヒット率情報信号250、251、及び割り込み通知信号260に基づいて、内部状態信号32を生成し、アービトレーション装置6に出力する。
図3は、本発明の第1の実施形態に係る図1のアービトレーション装置6による調停の処理の流れを示すフローチャートである。
初期状態はステップ6001であり、システムが起動されたらステップ6002に遷移する。
ステップ6002では、アービトレーション装置6による調停に用いられる優先順序が優先順序1であるか否かが判定される。優先順序1であればステップ6005に、そうでなければステップ6003に遷移する。
ステップ6003では、調停に用いられる優先順序が優先順序2であるか否かが判定される。優先順序2であればステップ6006に、そうでなければステップ6004に遷移する。
ステップ6004では、調停に用いられる優先順序は自動的に優先順序3と判定し、ステップ6008に遷移する。
ステップ6005では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、そうであった場合は調停に用いられる優先順序を変更するためにステップ6012へ、そうでない場合はステップ6011へ遷移する。
ステップ6006では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、そうであった場合は調停に用いられる優先順序を変更するためステップ6013へ、そうでない場合はステップ6007へ遷移する。
ステップ6007では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、そうであった場合はステップ6009へ、そうでない場合はステップ6012へ遷移する。
ステップ6008では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、そうであった場合はステップ6010へ、そうでない場合はステップ6013へ遷移する。
ステップ6009では、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6012に遷移する。そうでない場合は調停に用いられる優先順序を変更するためステップ6011に遷移する。なお、この期間及び基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ6010でも同様に、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6013に遷移する。そうでない場合は調停に用いられる優先順序を変更するためステップ6012に遷移する。
ステップ6011では、優先順序1において最も優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6020に、そうでない場合はステップ6014に遷移する。
ステップ6012では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6022に、そうでない場合はステップ6015に遷移する。
ステップ6013では、優先順序3において最も優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6021に、そうでない場合はステップ6016に遷移する。
ステップ6014では、優先順序1において2番目に優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6021に、そうでない場合はステップ6017に遷移する。
ステップ6015では、優先順序2において2番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6020に、そうでない場合はステップ6018に遷移する。
ステップ6016では、優先順序3において2番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6022に、そうでない場合はステップ6019に遷移する。
ステップ6017では、優先順序1において3番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6022に、そうでない場合はステップ6023に遷移する。
ステップ6018では、優先順序2において3番目に優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6021に、そうでない場合はステップ6023に遷移する。
ステップ6019では、優先順序3において3番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6020に、そうでない場合はステップ6023に遷移する。
ステップ6020では、リクエスタ2の要求に許可を行い、リクエスタ2はメモリ5にアクセスする。アクセスが終了したらステップ6023に遷移する。
ステップ6021では、リクエスタ3の要求に許可を行い、リクエスタ3はメモリ5にアクセスする。アクセスが終了したらステップ6023に遷移する。
ステップ6022では、リクエスタ4の要求に許可を行い、リクエスタ4はメモリ5にアクセスする。アクセスが終了したらステップ6023に遷移する。
ステップ6023では、次のアクセス許可ができるまで待機し、アクセス可能になったらステップ6002に遷移する。
図4は、本発明の第1の実施形態に係る図2の内部状態信号生成部207における内部状態信号32を生成する処理の流れを示すフローチャートである。
初期状態はステップ2001であり、システムが起動されたらステップ2002に遷移する。
ステップ2002では、割り込み通知信号260により割り込みの発生が通知されているか否かを判定する。通知されている場合はステップ2009に、通知されていない場合はステップ2003に遷移する。
ステップ2003では、キャッシュヒット率情報信号250によって通知される命令キャッシュのヒット率が命令キャッシュの所定の第1の基準値を下回るか否かを判定する。下回る場合はステップ2009に、そうでない場合はステップ2004に遷移する。
ステップ2004では、キャッシュヒット率情報信号251によって通知されるデータキャッシュのヒット率がデータキャッシュの所定の第1の基準値を下回るか否かを判定する。下回る場合はステップ2009に、そうでない場合はステップ2005に遷移する。
なお、命令キャッシュの第1の基準値及びデータキャッシュの第1の基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、命令キャッシュの第1の基準値とデータキャッシュの第1の基準値とを同じ値としなくてもよい。
ステップ2005では、キャッシュヒット率情報信号250によって通知される命令キャッシュのヒット率が、命令キャッシュの所定の第2の基準値を上回るか否かを判定する。上回る場合はステップ2006に、そうでない場合はステップ2008に遷移する。命令キャッシュの第2の基準値は、命令キャッシュの第1の基準値よりも高い値とする。
ステップ2006では、キャッシュヒット率情報信号251によって通知されるデータキャッシュのヒット率がデータキャッシュの所定の第2の基準値を上回るか否かを判定する。上回る場合はステップ2007に、そうでない場合はステップ2008に遷移する。データキャッシュの第2の基準値は、データキャッシュの第1の基準値よりも高い値とする。
なお、命令キャッシュの第2の基準値及びデータキャッシュの第2の基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、命令キャッシュの第2の基準値とデータキャッシュの第2の基準値とを同じ値としなくてもよい。
ステップ2007では、内部状態信号32を優先順位の低下を指示する第3の状態とする。処理が終了すると、ステップ2010に遷移する。
ステップ2008では、内部状態信号32を通常の優先順位の維持を指示する第2の状態とする。処理が終了すると、ステップ2010に遷移する。
ステップ2009では、内部状態信号32を優先順位の上昇を指示する第1の状態とする。処理が終了すると、ステップ2010に遷移する。
ステップ2010では、次のサイクルまで待機し、次のサイクルとなったらステップ2002に遷移する。
なお、本実施形態ではリクエスタが3つの場合を例に示したが、リクエスタの数や、調停における具体的な優先順位はこの例の通りでなくてもよい。
また、本実施形態に係るバスシステム1は、単一のシステムLSI上で実現されてもよいし、複数のLSIの組み合わせであってもよい。
(第2の実施形態)
図5は、本発明の第2の実施形態に係る図1のアービトレーション装置6における調停の処理の流れを示すフローチャートである。本実施形態においては、第1の実施形態とは、アービトレーション装置6による調停の制御が異なる。
本実施形態に係るアービトレーション装置6は、リクエスタ2,3,4からのアクセス要求が競合した場合の調停に用いる優先順序について、以下の3つを持つ。優先順序1はリクエスタ2、リクエスタ3(リクエスタ4の要求は受け付けない)の順に優先順位が高く、優先順序2はリクエスタ4、リクエスタ2(リクエスタ3の要求は受け付けない)の順に優先順位が高く、優先順序3はリクエスタ3、リクエスタ4(リクエスタ2の要求は受け付けない)の順に優先順位が高くなっている。
初期状態はステップ6101であり、システムが起動されたらステップ6102に遷移する。
ステップ6102では、本実施形態に係るアービトレーション装置6による調停に用いられる優先順序が優先順序1であるか否かが判定される。優先順序1であればステップ6105に、そうでなければステップ6103に遷移する。
ステップ6103では、調停に用いられる優先順序が優先順序2であるか否かが判定される。優先順序2であればステップ6106に、そうでなければステップ6104に遷移する。
ステップ6104では、調停に用いられる優先順序は自動的に優先順序3と判定し、ステップ6108に遷移する。
ステップ6105では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、そうであった場合は調停に用いられる優先順序を変更するためにステップ6116へ、そうでない場合はステップ6111へ遷移する。
ステップ6106では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、そうであった場合はリクエスタ2の優先順位を低下させるためにステップ6114へ、そうでない場合はステップ6107へ遷移する。
ステップ6107では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、そうであった場合はステップ6109へ、そうでない場合はステップ6112へ遷移する。
ステップ6108では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、そうであった場合はステップ6110へ、そうでない場合はステップ6116へ遷移する。
ステップ6109では、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6112に遷移する。そうでない場合はリクエスタ2の優先順位を上昇させるためにステップ6113に遷移する。なお、この期間及び基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ6110でも同様に、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6116に遷移する。そうでない場合はリクエスタ2の優先順位を上昇させるためにステップ6115に遷移する。
ステップ6111では、優先順序1において最も優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6123に、そうでない場合はステップ6117に遷移する。
ステップ6112では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6125に、そうでない場合はステップ6118に遷移する。
ステップ6113では、優先順位が上昇されたリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6123に、そうでない場合はステップ6119に遷移する。
ステップ6114では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6125に、そうでない場合はステップ6120に遷移する。
ステップ6115では、優先順序3において最も優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6124に、そうでない場合はステップ6121に遷移する。
ステップ6116では、優先順序3において最も優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6124に、そうでない場合はステップ6122に遷移する。
ステップ6117では、優先順序1において2番目に優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6124に、そうでない場合はステップ6126に遷移する。
ステップ6118では、優先順序2において2番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6123に、そうでない場合はステップ6126に遷移する。
ステップ6119では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6125に、そうでない場合はステップ6126に遷移する。
ステップ6120では、優先順序2において、リクエスタ2の優先順位を低下させたためにアクセス要求を受け付けることになったリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合はステップ6124に、そうでない場合はステップ6126に遷移する。
ステップ6121では、優先順位が上昇されたリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6123に、そうでない場合はステップ6126に遷移する。
ステップ6122では、優先順序3において2番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6125に、そうでない場合はステップ6126に遷移する。
ステップ6126では、次のアクセス許可ができるまで待機し、アクセス可能になったらステップ6102に遷移する。
なお、本実施形態ではリクエスタが3つの場合を例に示したが、リクエスタの数や、調停における具体的な優先順位はこの例の通りでなくてもよい。
(第3の実施形態)
図6は、本発明の第3の実施形態に係る図1のアービトレーション装置6における調停の処理の流れを示すフローチャートである。本実施形態においては、第1の実施形態とは、アービトレーション装置6による調停の制御が異なる。
アービトレーション装置6は、リクエスタからのアクセス要求を保持するためのキューを有しており、リクエスタから要求が行われると、このキューに要求が格納される。複数のリクエスタによるアクセス要求が同一サイクル内に競合した場合は、所定の優先順序に基づいて調停が行われ、調停により決定された要求から順にキューに格納される。キューに格納された要求は、基本的には過去に格納されたものから順に、それぞれが対応するリクエスタにメモリ5へのアクセスが許可される。
本実施形態に係るアービトレーション装置6が持つ、リクエスタ2,3,4からのアクセス要求が競合した場合の調停に用いる優先順序は、リクエスタ4、リクエスタ2、リクエスタ3の順に優先順位が高くなっている。
初期状態はステップ6201であり、システムが起動されたらステップ6202に遷移する。
ステップ6202では、本実施形態に係るアービトレーション装置6が持つ優先順序において、最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合ステップ6207に、そうでない場合ステップ6203に遷移する。
ステップ6203では、本実施形態に係るアービトレーション装置6が持つ優先順序において、2番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合ステップ6205に、そうでない場合ステップ6204に遷移する。
ステップ6204では、本実施形態に係るアービトレーション装置6が持つ優先順序において、3番目に優先度の高いリクエスタであるリクエスタ3からの要求が行われているかを判定する。リクエスタ3から要求があった場合ステップ6210に、そうでない場合ステップ6211に遷移する。
ステップ6205では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、そうであった場合ステップ6206へ、そうでない場合はステップ6208へ遷移する。
ステップ6206では、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はステップ6208に遷移する。そうでない場合はステップ6209に遷移する。なお、この期間及び基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ6207では、リクエスタ4からの要求をキューの最後尾に格納し、ステップ6211に遷移する。
ステップ6208では、リクエスタ2からの要求をキューの最後尾に格納し、ステップ6211に遷移する。
ステップ6209では、リクエスタ2からの要求をキューの最後尾に格納し、その後、キューに格納されているリクエスタ2からの要求全てを所定のシフト幅だけ前方にシフトして、キューに格納されている要求の間の順序を変更する。シフトした後、ステップ6211に遷移する。なお、このシフト幅については、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ6210では、リクエスタ3からの要求をキューの最後尾に格納し、ステップ6211に遷移する。
ステップ6211では、メモリ5へのアクセスが行われているかが判定される。行われていればステップ6213へ、そうでなければステップ6212へ遷移する。
ステップ6212では、キューの先頭にいる要求に該当するリクエスタに、メモリ5へのアクセスの許可を行う。その後ステップ6213に遷移する。
ステップ6213では、次のサイクルになったかを判定する。次のサイクルであればステップ6202へ遷移し、そうでなければステップ6213で待機する。
なお、本実施形態ではリクエスタが3つの場合を例に示したが、リクエスタの数や、調停における具体的な優先順位はこの例の通りでなくてもよい。
(第4の実施形態)
図7は、本発明の第4の実施形態に係る図2の内部状態信号生成部207における内部状態信号32を生成する処理の流れを示すフローチャートである。本実施形態においては、第1の実施形態とは、内部状態信号生成部207における内部状態信号32を生成する処理が異なる。内部状態信号32は、第1の実施形態と同様に、リクエスタ2のアクセス要求の優先順位を上昇させるべきであることを通知する第1の状態、通常の優先順位を維持させるべきであることを通知する第2の状態、又は、優先順位を低下させるべきであることを通知する第3の状態のいずれかを示す。
初期状態はステップ2101であり、システムが起動されたらステップ2102に遷移する。
ステップ2102では、図2の割り込み通知信号260により割り込みの発生が通知されているか否かを判定する。通知されている場合はステップ2110に、通知されていない場合はステップ2103に遷移する。
ステップ2103では、図2のキャッシュヒット率情報信号250、251によって通知されるキャッシュヒット率を、サンプリングする時間であるか否かが判定される。サンプリングする時間であればステップ2104に、そうでなければステップ2111に遷移する。なお、このサンプリングを行う時間の間隔は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ2104では、キャッシュヒット率情報信号250によって通知される命令キャッシュのヒット率が、前回サンプリングした命令キャッシュのヒット率より、命令キャッシュの所定の第3の基準値以上に下回るか否かを判定する。下回る場合はステップ2110に、そうでない場合はステップ2105に遷移する。
ステップ2105では、キャッシュヒット率情報信号251によって通知されるデータキャッシュのヒット率が、前回サンプリングしたデータキャッシュのヒット率より、データキャッシュの所定の第3の基準値以上に下回るか否かを判定する。下回る場合はステップ2110に、そうでない場合はステップ2106に遷移する。
なお、命令キャッシュの第3の基準値及びデータキャッシュの第3の基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、命令キャッシュの第3の基準値とデータキャッシュの第3の基準値とを同じ値としなくてもよい。
ステップ2106では、キャッシュヒット率情報信号250によって通知される命令キャッシュのヒット率が、前回サンプリングした命令キャッシュのヒット率より、命令キャッシュの所定の第4の基準値以上に上回るか否かを判定する。上回る場合はステップ2107に、そうでない場合はステップ2109に遷移する。命令キャッシュの第4の基準値は、命令キャッシュの第3の基準値よりも高い値とする。
ステップ2107では、キャッシュヒット率情報信号251によって通知されるデータキャッシュのヒット率が、前回サンプリングしたデータキャッシュのヒット率より、データキャッシュの所定の第4の基準値以上に上回るか否かを判定する。上回る場合はステップ2108に、そうでない場合はステップ2109に遷移する。データキャッシュの第4の基準値は、データキャッシュの第3の基準値よりも高い値とする。
なお、命令キャッシュの第4の基準値及びデータキャッシュの第4の基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、命令キャッシュの第4の基準値とデータキャッシュの第4の基準値とを同じ値としなくてもよい。
ステップ2108では、内部状態信号32を優先順位の低下を指示する第3の状態とする。処理が終了すると、ステップ2111に遷移する。
ステップ2109では、内部状態信号32を通常の優先順位の維持を指示する第2の状態とする。処理が終了すると、ステップ2111に遷移する。
ステップ2110では、内部状態信号32を優先順位の上昇を指示する第1の状態とする。処理が終了すると、ステップ2111に遷移する。
ステップ2111では、次のサイクルまで待機し、次のサイクルとなったらステップ2102に遷移する。
(第5の実施形態)
図8は、本発明の第5の実施形態に係るバスシステム9の構成を示すブロック図である。図8のバスシステム9は、図1のバスシステム1において、リクエスタ3に代えてリクエスタ8を備える。
リクエスタ8は、リクエスタ2と同様の構成であり、リクエスタ8の内部の状態を調停に反映させるために、内部状態信号33をアービトレーション装置6に出力する。内部状態信号33は、リクエスタ8のアクセス要求の優先順位を上昇させるべきであることを通知する第1の状態、通常の優先順位を維持させるべきであることを通知する第2の状態、又は、優先順位を低下させるべきであることを通知する第3の状態のいずれかを示す。
本実施形態では、アービトレーション装置6は、例えば以下の3つの優先順序を持つこととする。優先順序1はリクエスタ2、リクエスタ8、リクエスタ4の順に優先順位が高く、優先順序2はリクエスタ4、リクエスタ2、リクエスタ8の順に優先順位が高く、優先順序3はリクエスタ8、リクエスタ4、リクエスタ2の順に優先順位が高くなっている。
各時間においてどの優先順序が適用されるかは、システムにおいて各リクエスタが必要とする回数のデータ転送を満たすよう、あらかじめ決定される。
図9は、本発明の第5の実施形態に係る図8のアービトレーション装置6における調停の処理の流れを示すフローチャートである。
初期状態はステップ6301であり、システムが起動されたらステップ6302に遷移する。
ステップ6302では、本実施形態に係るアービトレーション装置6による調停に用いられる優先順序が優先順序1であるか否かが判定される。優先順序1であればステップ6305に、そうでなければステップ6303に遷移する。
ステップ6303では、調停に用いられる優先順序が優先順序2であるか否かが判定される。優先順序2であればステップ6306に、そうでなければステップ6304に遷移する。
ステップ6304では、調停に用いられる優先順序は自動的に優先順序3と判定し、ステップ6308に遷移する。
ステップ6305では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6312へ、そうでない場合はステップ6311へ遷移する。
ステップ6306では、内部状態信号32が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6315へ、そうでない場合はステップ6307へ遷移する。
ステップ6307では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6309へ、そうでない場合はステップ6313へ遷移する。
ステップ6308では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6310へ、そうでない場合はステップ6317へ遷移する。
ステップ6309では、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6313に遷移する。そうでない場合は調停に用いられる優先順序を変更するためステップ6314に遷移する。なお、この期間及び基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。
ステップ6310でも同様に、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ2の優先順位を上げずにステップ6317に遷移する。そうでない場合は調停に用いられる優先順序を変更するためステップ6316に遷移する。
ステップ6311では、内部状態信号33が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6336へ、そうでない場合はステップ6320へ遷移する。
ステップ6312では、内部状態信号33が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6337へ、そうでない場合はステップ6334へ遷移する。
ステップ6313では、内部状態信号33が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6318へ、そうでない場合はステップ6337へ遷移する。
ステップ6314では、内部状態信号33が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6319へ、そうでない場合はステップ6336へ遷移する。
ステップ6315では、内部状態信号33が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6337へ、そうでない場合はステップ6321へ遷移する。
ステップ6316では、内部状態信号33が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合はステップ6335へ、そうでない場合はステップ6334へ遷移する。
ステップ6317では、内部状態信号33が優先順位の低下を指示する第3の状態であるかが判定され、第3の状態であった場合は、リクエスタ8の優先順位を低下させるためにステップ6338へ、そうでない場合はステップ6339へ遷移する。
ステップ6318では、リクエスタ8のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ8に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合は、この期間ではリクエスタ8の優先順位を上げずにステップ6337に遷移する。そうでない場合は、リクエスタ2,8の優先順位を上昇させるためにステップ6338に遷移する。なお、この期間及び基準値は、固定の設定とする必要はなく、レジスタ設定又はプログラムにより変更可能としてもよい。また、リクエスタ8に対する期間及び基準値は、リクエスタ2に対するものと異なってもよい。
ステップ6319でも同様に、リクエスタ8のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ8に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はこの期間ではリクエスタ8の優先順位を上げずにステップ6336に遷移する。そうでない場合はリクエスタ2,8の優先順位を上昇させるためにステップ6335に遷移する。
ステップ6320では、内部状態信号33が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6322へ、そうでない場合はステップ6335へ遷移する。
ステップ6321では、内部状態信号33が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6323へ、そうでない場合はステップ6338へ遷移する。
ステップ6322では、リクエスタ8のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ8に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合は、この期間ではリクエスタ8の優先順位を上げずにステップ6335に遷移する。そうでない場合は、リクエスタ8の優先順位を上昇させるためにステップ6324に遷移する。
ステップ6323では、リクエスタ8のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ8に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合はステップ6338に遷移する。そうでない場合は、リクエスタ8の優先順位を上昇させるためにステップ6339に遷移する。
ステップ6324では、内部状態信号32が優先順位の上昇を指示する第1の状態であるかが判定され、第1の状態であった場合はステップ6325へ、そうでない場合はステップ6334へ遷移する。
ステップ6325では、リクエスタ2のアクセスが他のリクエスタが必要とするアクセスを妨げないようにするため、リクエスタ2に許可されたアクセス回数が、所定の期間内に所定の基準値を上回ったかを判定する。上回る場合は、この期間ではリクエスタ2の優先順位を上げずにステップ6334に遷移する。そうでない場合は、リクエスタ2の優先順位を上昇させるためにステップ6335に遷移する。
ステップ6334では、優先順位が上昇されたリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6340に遷移する。
ステップ6335では、優先順序1において最も優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6341に遷移する。
ステップ6336では、優先順位が上昇されたリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6342に遷移する。
ステップ6337では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6343に遷移する。
ステップ6338では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6344に遷移する。
ステップ6339では、優先順序3において最も優先度の高いリクエスタであるリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6345に遷移する。
ステップ6340では、優先順序1において最も優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6346に遷移する。
ステップ6341では、優先順序1において2番目に優先度の高いリクエスタであるリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6347に遷移する。
ステップ6342では、優先順序2において最も優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6348に遷移する。
ステップ6343では、優先順序2において2番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6349に遷移する。
ステップ6344では、優先順序3において最も優先度の高いリクエスタであるリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6350に遷移する。
ステップ6345では、優先順序3において2番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6351に遷移する。
ステップ6346では、優先順序1において3番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6355に遷移する。
ステップ6347では、優先順序1において3番目に優先度の高いリクエスタであるリクエスタ4からの要求が行われているかを判定する。リクエスタ4から要求があった場合はステップ6354に、そうでない場合はステップ6355に遷移する。
ステップ6348では、優先順序2において3番目に優先度の高いリクエスタであるリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6355に遷移する。
ステップ6349では、優先順序2において3番目に優先度の高いリクエスタであるリクエスタ8からの要求が行われているかを判定する。リクエスタ8から要求があった場合はステップ6353に、そうでない場合はステップ6355に遷移する。
ステップ6350では、優先順序3において3番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6355に遷移する。
ステップ6351では、優先順序3において3番目に優先度の高いリクエスタであるリクエスタ2からの要求が行われているかを判定する。リクエスタ2から要求があった場合はステップ6352に、そうでない場合はステップ6355に遷移する。
ステップ6352では、リクエスタ2の要求に許可を行い、リクエスタ2はメモリ5にアクセスする。アクセスが終了したらステップ6355に遷移する。
ステップ6353では、リクエスタ8の要求に許可を行い、リクエスタ8はメモリ5にアクセスする。アクセスが終了したらステップ6355に遷移する。
ステップ6354では、リクエスタ3の要求に許可を行い、リクエスタ3はメモリ5にアクセスする。アクセスが終了したらステップ6355に遷移する。
ステップ6355では、次のアクセス許可ができるまで待機し、アクセス可能になったらステップ6302に遷移する。
なお、本実施形態ではリクエスタが3つの場合を例に示したが、リクエスタの数や、調停における具体的な優先順位はこの例の通りでなくてもよい。