(58)【調査した分野】(Int.Cl.,DB名)
プロセッサにより複数の命令流のそれぞれに割り当てられた単位時間当たりの実行時間の割当比率に基づいて、各命令流に割り当てるキャッシュメモリの領域を決定する領域決定部を備え、
前記実行時間の割当比率は、前記プロセッサ内の複数のタイムスロットと前記複数の命令流との対応関係に基づく割当情報であり、
前記領域決定部は、
前記実行時間の割当情報に含まれるタイムスロットに基づいて、前記命令流ごとに割当スロット数と割当スロット番号とを算出し、
前記割当スロット数の比率に応じて各命令流に割り当てる前記キャッシュメモリ内のラインを特定し、
前記割当スロット番号に応じて前記ラインのインデックスを決定するキャッシュ制御装置。
前記実行時間の割当比率のうち最も小さい比率が割り当てられた命令流については、当該割当比率に関わらず、前記キャッシュメモリの領域のうち割り当て可能な最小単位の領域を、少なくとも当該命令流に割り当てるキャッシュメモリの領域として決定する
請求項9乃至12のいずれか1項に記載のキャッシュ制御方法。
【発明を実施するための形態】
【0013】
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0014】
<実施の形態1>
図27は、特許文献2にかかるキャッシュ制御装置を含むコンピュータシステムの構成を示すブロック図である。但し、
図27には、コンピュータシステムのうち、キャッシュ制御装置91と、キャッシュメモリ92と、マイクロプロセッサ93と、メインメモリ94と、MMU(Memory Management Unit)95とが代表して記載されている。キャッシュ制御装置91は、マイクロプロセッサ93とキャッシュメモリ92とメインメモリ94とに接続されている。また、キャッシュ制御装置91は、MMU95を介してもメインメモリ94と接続されている。
【0015】
マイクロプロセッサ93は、複数のプログラムをタスクとしてマルチタスク処理を行う。マイクロプロセッサ93は、処理するタスクが切り替わると、タスクID信号線901を介して現在処理されるタスクを識別するタスクIDをキャッシュ制御装置91へ通知する。ここで、タスクIDは、タスクとして処理されるプログラムが格納されているメインメモリアドレスを示す論理アドレスが変換されたものである。例えば、タスクIDは、プログラムのアドレスである。
【0016】
また、マイクロプロセッサ93は、各タスクにおけるキャッシュメモリ92へのアクセス処理において、メモリアクセス信号線902を介してアクセスアドレスをキャッシュ制御装置91へ通知する。ここで、アクセスアドレスは、アクセス要求対象のデータのメインメモリ94内のアドレスを示す論理アドレスである。そして、マイクロプロセッサ93は、データ信号線903を介して、読み出し又は書込み対象のデータをキャッシュ制御装置91との間で送受信する。
【0017】
さらに、マイクロプロセッサ93は、領域指定信号線906を介して領域指定情報をキャッシュ制御装置91へ通知する。ここで、領域指定情報は、複数のタスクのそれぞれについて、各タスクに割り当てるためのキャッシュメモリサイズ等を指定する情報である。
【0018】
キャッシュメモリ92は、メインメモリ94より高速にデータアクセスが可能な記憶媒体であり、例えば、SRAM(Static Random Access Memory)である。MMU95は、キャッシュ制御装置91からメモリアクセス信号線904を介して送られてきた論理アドレスを物理アドレスに変換する。メインメモリ94は、キャッシュメモリ92よりアクセス速度が低速な記憶媒体であり、例えば、DRAM(Dynamic Random Access Memory)である。
【0019】
キャッシュ制御装置91は、キャッシュメモリ92に対するデータアクセスを制御する装置である。キャッシュ制御装置91は、マイクロプロセッサ93から受け付けた領域指定情報に応じて、キャッシュメモリ92のメモリ領域を分割し、タスクごとに対応付けて管理する。そして、キャッシュ制御装置91は、タスクID及びアクセスアドレスに基づいてキャッシュメモリ92へのアクセスを行う。また、キャッシュ制御装置91は、アクセス要求のヒット又はミスの判定結果に応じて、適宜、メモリアクセス信号線904を介してアクセスアドレスをメインメモリ94へ通知し、データ信号線905を介してメインメモリ94との間で、データを送受信する。
【0020】
図28は、特許文献2にかかるキャッシュ制御装置の構成を示すブロック図である。キャッシュ制御装置91は、タスクID入力レジスタ911と、領域管理部912と、アドレス分解部914と、キャッシュ内アドレス生成部915と、hit/miss判定部916と、キャッシュディレクトリ917と、キャッシング部918と、データアクセス部919とを備える。また、領域管理部912は、領域決定部913を含む。ここでは、本実施の形態に関係する領域管理部912及び領域決定部913を中心に説明し、その他の構成については説明を省略する。
【0021】
領域管理部912は、マイクロプロセッサ93から領域指定信号線906を介して送られた領域指定情報に基づいて、キャッシュメモリ92のメモリ領域を分割し、各領域を識別する領域番号とタスクIDとを対応付けて管理する。このとき、領域決定部913は、領域指定情報に基づいて、領域管理テーブルを生成し、保持する。ここで、領域管理テーブルは、領域番号、ベースアドレス及びサイズを組にした表である。
【0022】
このように、特許文献2にかかる技術は、領域指定情報で指定された各タスクに割り当てるためのキャッシュメモリサイズそのものを用いて、領域を割り当てているに過ぎない。また、当該領域指定情報は、予め固定して設定されたものである。つまり、特許文献2では、あるタスクについて他のタスクに比べて優先的にキャッシュメモリの領域を割り当てるために、予め領域指定情報を固定して設定しておく必要がある。
【0023】
ここで、上述したように、リアルタイム制御における並行処理では、各タスクの優先度が動的に変化するため、特許文献2のような固定的なキャッシュメモリの領域設定では、設定変更に対応することは困難である。また、リアルタイム制御では、各タスクについて予め定められた実時間内に特定の処理を完了できる性質が要求される。しかしながら、特許文献3〜5等の関連技術では、優先度の低いタスクへの領域の割り当てが後回しにされてしまう。そのため、優先度が低いタスクについては、キャッシュメモリの領域の割り当てが不十分となり、定められた実時間内に特定の処理を完了できる保証がない。よって、これらの関連技術には、結果的にキャッシュメモリ全体の利用効率が悪くなり得るという問題がある。
【0024】
そこで、本実施の形態1にかかるキャッシュ制御装置は、プロセッサにより複数の命令流のそれぞれに割り当てられた単位時間当たりの実行時間の割当比率に基づいて、各命令流に割り当てるキャッシュメモリの領域を決定する領域決定部を備えるものである。すなわち、リアルタイム処理において各命令流のプロセッサにおける実際の実行時間の割当比率とキャッシュメモリの使用率とを均衡する。これにより、各命令流のリソースの利用率をより正確に設定できる。
【0025】
図1は、本実施の形態1にかかるキャッシュ制御装置を含むコンピュータシステムの構成を示すブロック図である。
図1には、コンピュータシステムのうち、CPU(Central Processing Unit)110と、キャッシュ制御装置120と、キャッシュメモリ130とが代表して記載されている。キャッシュ制御装置120は、CPU110とキャッシュメモリ130とメインメモリ(不図示)とに接続されている。
【0026】
CPU110は、複数のプログラムをタスクとしてマルチタスク処理を行う。CPU110は、メモリアクセス部111と、実行時間割当部112とを備える。メモリアクセス部111は、各タスクにおけるキャッシュメモリへのアクセス処理において、キャッシュ制御装置120に対して、アクセスアドレスd1及び(タスクの)IDd2を通知する。ここで、アクセスアドレスd1は、アクセス要求対象のメインメモリ内のアドレスを示す論理アドレスである。IDd2は、タスクの識別情報である。
【0027】
尚、メモリアクセス部111は、いわばロードストアユニットといえる。また、キャッシュメモリ130は、データキャッシュ又は命令キャッシュのいずれでも構わないものとする。
【0028】
実行時間割当部112は、CPU110において並列処理される複数のタスクのそれぞれについて、CPU110内で実行させるための実行時間を割り当てるものである。つまり、実行時間割当部112は、各タスクにCPU110内のリソースを割り当てる。実行時間割当部112には、例えば、特許文献1のスケジューラを用いることができる。
【0029】
特許文献1にかかるスケジューラは、複数のタイムスロットに対して複数のハードウェアスレッドを柔軟に割り当てるものである。ここで、タイムスロットとは、所定の時間を所定数で均等に分割した時間間隔であるものとする。また、ハードウェアスレッドとは、CPU110に内蔵されるスレッドプログラムカウンタにより出力される命令フェッチアドレスに従って命令メモリから読み出される一連の命令群により構成される命令流を生成する系のことをいう。つまり、1つのハードウェアスレッドにより生成される命令流に含まれる命令は、互いに関連性の高い命令である。また、タスクも複数の関連性の高い命令により構成される命令流といえる。
【0030】
ここで、各タスクは、所定の時間当たりに、割り当てられたタイムスロットの数(割当タイムスロット数)に応じた時間分の実行時間が確保される。また、各タスクは、同一のCPU110つまり同一のクロック周波数のうち、総タイムスロット数分の割当タイムスロット数の比率の周波数で実行されるものといえる。つまり、各タスクは、割当タイムスロット数に応じた処理速度でCPU110により実行されるものといえる。そのため、ここでは、各タスクに割り当てられたタイムスロットの比率が処理速度の比率ともいえる。
【0031】
そして、実行時間割当部112は、キャッシュ制御装置120に対して実行時間の割当比率d3を通知する。実行時間の割当比率d3は、タスク間に割り当てられた実行時間の占有率を示す情報である。例えば、実行時間の割当比率d3は、実行時間割当部112により実行時間の割り当ての都度、算出してもよい。または、実行時間割当部112は、各タスクに割り当てられた実行時間自体を通知し、キャッシュ制御装置120が各実行時間の比率から各タスクについて実行時間の割当比率d3を算出するようにしてもよい。または、領域決定部122が実行時間割当部112から実行時間の割当比率d3を読み出すようにしてもよい。つまり、領域決定部122は、少なくとも実行時間割当部112から実行時間の割当比率d3を取得する。
【0032】
キャッシュ制御装置120は、CPU110からのアクセス要求で指定されたアクセスアドレスd1に対応するデータが、キャッシュメモリ130に格納されているか否かを判定する。そして、キャッシュメモリ130に格納されている場合には、キャッシュ制御装置120は、キャッシュメモリ130から読み出したデータをCPU110へ出力する。一方、キャッシュメモリ130に格納されていない場合には、キャッシュ制御装置120は、メインメモリに対してアクセス要求を行う。
【0033】
キャッシュ制御装置120は、アドレス分割部121、領域決定部122及びヒットミス判定部123を備える。アドレス分割部121は、メモリアクセス部111から受け付けたアクセスアドレスd1を、少なくともタグd4及びラインd5に分割する。尚、アドレス分割部121は、ラインd5をさらに複数の領域に分割しても構わない。また、メモリアクセス部111がアドレス分割部121相当の構成を有しても構わない。その場合、キャッシュ制御装置120は、アドレス分割部121が不要となり、メモリアクセス部111からタグd4及びラインd5を受け付けることとなる。
【0034】
領域決定部122は、実行時間割当部112から通知された実行時間の割当比率d3に基づいて、タスクごとのキャッシュメモリ130の領域の割り当てを決定する。すなわち、実行時間の割当比率の高いタスクには、より多くの領域を割り当て、逆に実行時間の割当比率の低いタスクには、相対的に少ない領域を割り当てる。これにより、各命令流が実際にCPU110で処理される実行時間とキャッシュメモリ130における各命令流に対して割り当てられる領域のバランスを取ることができる。
【0035】
また、領域決定部122は、IDd2及びラインd5に応じて、キャッシュメモリ130へキャッシュアクセスd6を行う。そして、ヒットミス判定部123は、上記アクセスに対するキャッシュメモリ130からの応答としてタグd7を受け付ける。そして、ヒットミス判定部123は、タグd7と、メモリアクセス部111から通知されたアクセスアドレスd1に含まれるタグd4とを比較する。ヒットミス判定部123は、当該比較結果に応じてHit応答又はMissリフィルd8を行う。
【0036】
図2は、本実施の形態1にかかる領域決定部122の構成を示すブロック図である。領域決定部122は、加工部1221と、割当制御部1222と、領域割当情報1223とを備える。加工部1221は、実行時間の割当比率d3を受け付け、実行時間の割当比率d3を加工して、各タスクに割り当てる領域割当情報を生成する。例えば、加工部1221は、実行時間の割当比率d3に基づいて、各タスクに割り当てるキャッシュメモリの領域を特定する。そして、加工部1221は、特定された領域とタスクとを対応付けて領域割当情報を生成する。
【0037】
その後、加工部1221は、領域割当情報1223として記憶領域に格納する。領域割当情報1223は、領域とタスクとが対応付けられた情報である。また、割当制御部1222は、IDd2に応じて領域割当情報1223から特定されるアクセス対象の領域と、ラインd5とに基づいて、キャッシュアクセスd6を行う。このように、本実施の形態1では、実行時間の割当比率d3そのものでなく、領域割当情報という加工済みの情報により以降のキャッシュアクセス時に容易にアクセス対象の領域を特定できる。また、命令流とラインとの対応付けを効率的に行うことができる。
【0038】
図3は、本実施の形態1にかかるキャッシュ制御方法の処理の流れを示すフローチャートである。まず、領域決定部122は、実行時間割当部112から実行時間の割当比率d3を受け付ける(S11)。そして、領域決定部122は、実行時間の割当比率d3に基づいて、キャッシュメモリ130の領域の割り当てを決定する(S12)。
【0039】
図4は、2つのタスクを並行処理する場合における課題及び効果を説明するための図である。
図4では、各タスクに割り当てられたプロセッサの実行時間及びキャッシュメモリの領域の関係を、特許文献2等の関連技術と後述する本実施の形態1との比較を模式的に示したものである。
【0040】
ここで、例えば、リアルタイム制御における並列処理の場合には、上述した特許文献1のようなスケジューラによりタスクAとタスクBとの実行時間の割当比率が動的に変更されることがあり得る。そのため、特許文献2のように固定的にタスクにおけるキャッシュメモリの領域の割当比率を設定すると、実行時間の割当比率が変更した後に領域の割当比率とのバランスがとれなくなるおそれがある。例えば、当初の実行時間の割当比率がタスクAよりもタスクBの方が高く、その後にタスクAよりもタスクBが低くなった場合には、
図4の左のグラフのような状況が起こり得る。
【0041】
尚、関連技術のうち特許文献3〜5のように、単に優先度の設定に応じたキャッシュメモリ領域の割り当てるのであれば、最優先のタスクに対して全ての領域を割り当ててしまい、優先度の低いタスクには領域が割り当てられないおそれがある。しかしながら、リアルタイム制御における並列処理の場合、タスクの優先度が低いとはいえ、最低限の実行時間の確保及び実行終了時間の制約を満たす必要がある。そのため、優先度設定ではリアルタイム制御における並列処理について、タスクAの優先度が高い場合には、タスクBへの領域の割り当ては保証されず、不十分となる可能性がある。
【0042】
一方、本実施の形態1では、
図4の右のグラフのように、タスクAとタスクBとにおける実行時間の割当比率と領域の割当比率とを均衡させることができる。よって、プロセッサにおける実行時間の割り当てが相対的に高いタスクについてはより多くのキャッシュメモリの領域を確保することで、キャッシュヒット率を高くして当該タスクの実行時間を維持できる。また、プロセッサにおける実行時間の割り当てが相対的に低いタスクについてもその比率に応じたキャッシュメモリの領域を確保するため、ある程度のキャッシュヒット率を維持できる。そのため、本実施の形態1では、結果的にキャッシュメモリ全体の利用効率を向上させ、全タスクの処理時間を短縮することができる。
【0043】
尚、
図1では、実行時間割当部112がCPU110の内部に含まれる例を示したが、本実施の形態1はこれに限定されない。つまり、実行時間割当部112は、CPU110の外部でも良く、キャッシュ制御装置120に内蔵されていても構わない。
【0044】
以上のように、本実施の形態1では、実行時間の割当比率に応じて、使用するキャッシュメモリの領域を適応的に設定し、各タスクの処理実行部の使用率とキャッシュの使用率を均衡することができる。これにより、リアルタイム制御システムにおける各タスクのリソースの利用率を関連技術と比べて正確に設定できる。
【0045】
<実施の形態2>
本実施の形態2は、上述した実施の形態1の具体例を示す。本実施の形態2にかかるキャッシュ制御装置は、複数のハードウェアスレッドについてキャッシュメモリの領域を割り当てるものである。特に、キャッシュメモリの領域は、ライン単位でスレッドに割り当てるものとする。ここで、キャッシュメモリのライン数(L)及びプロセッサのスロット数(S)は2のべき乗とする。但し、L>Sの関係が成り立つものとする。
【0046】
図5は、本実施の形態2にかかるキャッシュ制御装置220を含むコンピュータシステムの構成を示すブロック図である。
図5には、リアルタイム制御における並列処理を行うコンピュータシステムのうち、CPU210と、キャッシュ制御装置220と、キャッシュメモリ230とが代表して記載されている。キャッシュ制御装置220は、CPU210とキャッシュメモリ230とメインメモリ(不図示)とに接続されている。ここで、キャッシュメモリ230は、メモリの領域が複数のウェイにより分割され、ウェイ内で複数のラインにより管理されているものとする。但し、キャッシュメモリ230は、バンク分けされていないものとする。
【0047】
CPU210、メモリアクセス部211及びスレッドスケジューラ212は、
図1のCPU110、メモリアクセス部111及び実行時間割当部112の具体例の1つである。CPU210は、複数の命令流として複数のハードウェアスレッド(以下、単に「スレッド」という。)にタイムスロット(以下、単に「スロット」という。)を割り当てて実行するマルチスレッドプロセッサである。
【0048】
メモリアクセス部211は、
図1のIDd2の一例としてスレッドID(HtID)d2aをキャッシュ制御装置220へ通知する。スレッドスケジューラ212は、各スレッドに任意の実行時間を割り当てることが可能である。具体的には、スレッドスケジューラ212は、複数のスレッドに対して、所定数のタイムスロットを割り当てるものである。また、スレッドスケジューラ212は、スレッドに実行時間を割り当てた情報であるスロット割当情報d3aを保持している。ここで、スロット割当情報d3aは、実行時間の割当比率d3の一例であり、CPU210内の複数のタイムスロットと複数のスレッドとの対応関係を示す情報である。ここでは、スロット割当情報d3aは、スロット番号とスレッド番号との対応付けを定義した情報である。そして、スレッドスケジューラ212は、スロット割当情報d3aをキャッシュ制御装置220へ通知する。また、スレッドスケジューラ212は、各スレッドの実行状況や制御プログラムの指示に応じてスロット割当情報d3aを動的に変更するものである。尚、スロット割当情報d3aには、例えば、特許文献1のスケジューラのスロット設定を適用可能である。
【0049】
キャッシュ制御装置220、アドレス分割部221、領域決定部222及びヒットミス判定部223は、
図1のキャッシュ制御装置120、アドレス分割部121、領域決定部122及びヒットミス判定部123の具体例の1つである。アドレス分割部221は、アクセスアドレスd1をメモリアクセス部211から受け付けたアクセスアドレスd1をタグd4と、ラインd5とに分割し、さらにラインd5について上位領域d51及び下位領域d52とに分割する。本実施の形態2にかかる論理アドレスのビット構成例として
図6に示す。
【0050】
領域決定部222は、スロット割当情報d3aに含まれるタイムスロットに基づいて、各スレッドに割り当てるキャッシュメモリの領域を特定する。これにより、タイムスロットという所定の実行期間の単位を用いて実行時間を的確に認識でき、領域の特定も確実に行うことができる。また、シングルコアプロセッサにおけるリアルタイム処理において、各命令流のプロセッサにおける実際の使用率とキャッシュメモリの使用率を均衡し、キャッシュメモリ全体の利用効率を向上させることができる。
【0051】
また、領域決定部222は、スレッドIDd2a、上位領域d51及び下位領域d52に応じて、キャッシュメモリ230へ各種アクセスを行う。また、領域決定部222は、アクセス対象のラインを指定するためのラインアドレスd61をキャッシュメモリ230へ出力する。さらに、領域決定部222は、キャッシュメモリ230内の所定のラインを無効化するためのインバリデート信号d62をキャッシュメモリ230へ出力する。尚、ヒットミス判定部223は、ヒットミス判定部123と同等のもので構わない。
【0052】
図7は、本実施の形態2にかかる領域決定部222を含む構成を示すブロック図である。領域決定部222は、割当スロット数算出部511と、割当スロット番号検出部512と、引数対応付け部513と、割当スロット数531と、Indexテーブル532と、引数生成部54と、オフセット生成部55と、加算部56と、ライトバックインバリデート処理部57とを備える。割当スロット数算出部511は、スレッドスケジューラ212から通知されるスロット割当情報d3aから、スレッドごとの割当スロット数531を算出する。具体的には、割当スロット数算出部511は、スロット割当情報d3aに含まれるタイムスロットをスレッドごとに集計して各スレッドの割当スロット数を算出する。そして、割当スロット数算出部511は、算出された割当スロット数531を領域割当情報の一部として記憶領域に格納する。そのため、割当スロット数531により、スレッドIDd2aから割当スロット数の比率に応じて各スレッドに割り当てるキャッシュメモリ230内のラインを特定できる。このように、実行時間の割り当てを割り当てられたタイムスロット数と解釈することで、実行時間の割当比率を容易に認識することができ、さらに、キャッシュメモリの領域をライン単位とすることで領域の特定も容易となる。
【0053】
また、割当スロット番号検出部512は、スロット割当情報d3aからスレッドごとに割り当てられたスロット番号である割当スロット番号情報520、つまりインデックス値を算出する。そして、引数対応付け部513は、スレッドごとに当該インデックスと引数とを対応付けて、Indexテーブル532として記憶領域に格納する。ここで、Indexテーブル532は、スレッドごとに引数とインデックス値との対応付けを管理するテーブルである。
【0054】
そのため、割当スロット数算出部511、割当スロット番号検出部512及び引数対応付け部513は、加工部2221といえ、割当スロット数531及びIndexテーブル532は、領域割当情報2223ということができる。
【0055】
図8は、本実施の形態2にかかるスロット割当情報d3a、割当スロット数情報531及びIndexテーブル532の例を示す図である。
図8では、スロット数が"16"、スレッド数が"4"、キャッシュメモリ230のウェイ数が"4"、ウェイ当たりライン数が"32"であるものとする。
図8のスロット割当情報d3aでは、タイムスロット番号0〜15についてスレッドID0〜4が割り当てられている場合を示す。また、
図8の割当スロット数531は、スレッドID0〜4について、それぞれ割当スロット数"4"、"3"、"6"、"3"が対応付けられている場合を示す。
【0056】
ここで、引数の最大値を"全スロット数−1"とする。
図8では、引数が"0"〜"15"つまりウェイ当たりのライン数"32"の半分としている。また、インデックス値には、各スレッドに割り当てられたスロット番号が引数"0"から昇順に格納される。
図8では、スレッド1について引数"0"〜"2"にそれぞれインデックス値"4"〜"6"が対応付けて格納され、引数"3"以降にはインデックス値"0"が格納されていることを示す。
【0057】
図7に戻り説明を続ける。また、領域決定部222は、アドレス分割部221から受け付けたスレッドIDd2aに対応する割当スロット数531を特定し、引数生成部54へ出力する。つまり、領域決定部222は、キャッシュメモリ230へのアクセス要求に含まれる命令流の識別情報と、割当スロット数とに基づいて、アクセス対象のキャッシュメモリ230の領域を決定する。これにより、効率的にアクセス対象の領域を特定することができ、アクセス要求を高速化できる。
【0058】
ここで、上位領域d51は、アクセスアドレスd1のラインd5のうちインデックスに相当する。上位領域d51はキャッシュメモリ230内のラインの特定に用いられる。
図7の場合、上位領域d51は4ビットで表現される。下位領域d52は、キャッシュメモリ230のオフセットの生成に用いられる。ここで、下位領域d52のビット幅は、以下の式(1)により算出することができる。
ビット幅 = log
2 ( 全ライン数 / 全スロット数 ) ・・・(1)
そのため、
図7の場合、下位領域d52は1ビットで表現される。
【0059】
引数生成部54は、アドレス分割部221から取得した上位領域d51と、スレッドIDd2aにより特定された割当スロット数531とから、引数を生成し、Indexテーブル532へ出力する。例えば、引数生成部54は、上位領域d51を割当スロット数531で除算し、その余りを引数としてもよい。その後、Indexテーブル532は、スレッドIDd2aと引数生成部54からの引数とから該当するインデックス値を特定し、加算部56へ出力する。
【0060】
オフセット生成部55は、アドレス分割部221から取得した下位領域d52に基づきラインのオフセットを生成する。例えば、ここでは、下位領域d52は1ビットの値つまり"0"又は"1"のためそれぞれ"0"又は"16"へ変換するものとする。そして、加算部56は、オフセット生成部55による生成後のオフセットと、Indexテーブル532から出力されたインデックス値とを加算して、アクセス対象のラインアドレスd61としてキャッシュメモリ230へアクセスする。そのため、引数生成部54、オフセット生成部55及び加算部56は、割当制御部2222といえる。
【0061】
キャッシュメモリ230は、ウェイ選択論理部231と、ウェイw0〜w3とを備える。ここで、本実施の形態2にかかるウェイ選択論理部231は、ウェイw0〜w3の全てを固定的に選択するものとする。また、ウェイ選択論理部231は、ヒットミス判定部223においてヒットミス判定がMissであった場合、つまり、Missリフィル時にヒットミス判定部223から出力される書き込み対象のウェイを選択するウェイ選択信号d81に応じて、ウェイを選択する。ウェイw0〜w3は、それぞれキャッシュメモリ230における記憶領域を4分割したものである。また、各ウェイは、32ラインに分割されている。
【0062】
これにより、キャッシュメモリ230は、全てのウェイw0〜w3から該当するラインアドレスd61のデータを読み出す。このとき、ウェイ選択論理部231は、ウェイw0〜w3の全てが選択されているため、ウェイw0〜w3から読み出されたデータをそれぞれタグd70からd73として、ヒットミス判定部223へ出力する。そして、ヒットミス判定部223は、読み出されたラインに含まれるタグと、アドレス分割部221からのタグd1とを比較してヒットミス判定を行う。
【0063】
図9は、本実施の形態2にかかる領域決定時のキャッシュメモリ230内の1ウェイ当たりのデータの例を示す図である。
図9のウェイは、32ラインに分割されおり、各ラインは、ライングループL0、L1、L2又はL3のいずれかに所属するように管理されている。ここでは、ライングループL0は、ライングループL0x及びL0y、ライングループL1は、ライングループL1x及びL1y、ライングループL2は、ライングループL2x及びL2y、ライングループL3は、ライングループL3x及びL3yとなっている場合を示す。そのため、ライングループL0x、L1x、L2x、L3xは、オフセット"+0"の場合のインデックス値により特定され、ライングループL0y、L1y、L2y、L3yは、オフセット"+16"の場合のインデックス値により特定される。
【0064】
このため、例えば、
図8のIndexテーブル532から特定されるスレッド1については、ライングループL1が対応し、具体的には、ライングループL1xに属するライン"4"〜"6"及びライングループL1yに属するライン"20"〜"22"がャッシュ領域として割り当てられたこととなる。
【0065】
尚、本実施の形態2にかかるスロット割当情報d3aにおけるスレッドの割り当ての例は
図8に限定されない。
図10は、本実施の形態2にかかるスロット割当情報、割当スロット数情報及びIndexテーブルの他の例を示す図である。
図10のスロット割当情報d3aでは、各スロットに対してスレッド番号がランダムに割り当てられている例を示す。
図10では、
図8と同様に、割当スロット数531が、スレッドID0〜4について、それぞれ割当スロット数"4"、"3"、"6"、"3"が対応付けられている。しかし、
図10の割当スロット番号情報520は、各スレッドの割当スロット番号は
図8とは異なるものとなる。同様に、Indexテーブル532の内容も
図8とは異なる。そのため、領域決定時のキャッシュメモリ内の各ラインが属するライングループは、
図11に示すようになる。このように、本実施の形態2により、スロット割当情報d3a内の割り当て状態と、キャッシュメモリ230の各ウェイ内の各ラインのライングループへの割り当て状態とが同期を取ることができる。そのため、スロット割当情報d3aにおいて割り当てられたスレッドを漏らさず、キャッシュメモリ230のいずれかのラインに割り当てることができる。
【0066】
図12は、本実施の形態2にかかる領域分割方法の処理の流れを示すフローチャートである。まず、領域決定部222は、スレッドスケジューラ212から、各スロット毎にスレッドが割り当てられたスロット割当情報d3a(「スロット番号」対「スレッド番号」)を受け付ける(S21)。例えば、スレッドスケジューラ212がスロット割当情報d3aを設定又は更新する度に領域決定部222へ通知してもよい。または、領域決定部222が定期的に、スロット割当情報d3aを読み出しにいってもよい。
【0067】
次に、割当スロット数算出部511は、各スレッド毎に割り当てられた割当スロットの数531(「スレッド番号」対「スロット番号」)を算出する(S22)。例えば、割当スロット数算出部511は、スロット割当情報d3aからスレッドごとに割り当てられているスロット数を集計する。そして、割当スロット数算出部511は、当該集計した値を割当スロット数531として記憶領域に格納する(S23)。
【0068】
また、割当スロット番号検出部512は、スロット割当情報d3aから各スレッド毎に割り当てられた割当スロット番号(「スレッド番号」対「スロット番号」(Index値))を検出する(S24)。例えば、割当スロット番号検出部512は、スロット割当情報d3aからスレッドごとに割り当てられているスロット番号を検出し、検出されたスロット番号をインデックス値とする。そして、引数対応付け部513は、各スレッド毎に検出されたインデックス値と引数とを対応付けてIndexテーブル532として記憶領域に格納する(S25)。
【0069】
図13は、本実施の形態2にかかるアクセス処理方法の処理の流れを示すフローチャートである。まず、領域決定部222は、メモリアクセス部211からキャッシュメモリ230に対するアクセス要求としてアクセスアドレスd1及びスレッドIDd2aを受け付ける(S31)。次に、領域決定部222は、スレッドIDd2aにより割当スロット数531を特定する(S32)。
図8及び
図10の場合、スレッドIDd2aが"1"であれば、割当スロット数531として"3"が特定される。
【0070】
また、アドレス分割部221は、アクセスアドレスd1を分割する(S33)。例えば、アドレス分割部221は、アクセスアドレスd1をタグd4及びラインd5に分割し、ラインd2を上位領域d51及び下位領域d52に分割する。尚、メモリアクセス部211は、予めアクセスアドレスd1をタグd4及びラインd5に分割するか、さらにラインd5を上位領域d51及び下位領域d52に分割した上で、アクセス要求としてキャッシュ制御装置220へ通知しても構わない。
【0071】
そして、引数生成部54は、ステップS32において特定された割当スロット数531と、ステップS33において分割された上位領域d51とから引数を生成する(S34)。
図8では、引数生成部54は、上位領域d51を割当スロット数531の"3"で除算するため、その余りは、"0"、"1"、"2"のいずれかとなる。その後、領域決定部222は、スレッドIDd2aと引数によりIndexテーブル532からインデックス値を取得する(S35)。例えば、引数が"1"の場合、インデックス値は
図8では"5"となり、
図10では"6"となる。
【0072】
また、ステップS34と並行して、オフセット生成部55は、下位領域d52からオフセットを生成する(S36)。例えば、下位領域d52が"1"の場合、オフセットが"16"に変換されるものとする。
【0073】
その後、加算部56は、インデックス値とオフセットからライン番号を算出する(S37)。例えば、
図8ではインデックス値"5"、オフセット"16"の場合、ライン番号"21"が算出される。また、
図10ではインデックス値"6"、オフセット"16"の場合、ライン番号"22"が算出される。そして、領域決定部222は、ライン番号に対応するラインをキャッシュメモリ230から読み出す(S38)。
図8では、領域決定部222は、キャッシュメモリ230内のウェイw0におけるライン"21"を読み出す。これは、ライングループL1に属するため、スレッドIDd2aで指定されたスレッド1に対応する領域から読み出されることとなる。同様に、領域決定部222は、ウェイw1〜w3からもライン"21"を読み出す。尚、
図10では、領域決定部222は、キャッシュメモリ230内のウェイw0〜23におけるライン"22"を読み出す。ここでも、同様に、ライングループL1に属するため、スレッドIDd2aで指定されたスレッド1に対応する領域から読み出されることとなる。
【0074】
続いて、スレッドにおけるスロットの割当比率が変更される場合について説明する。上述したように、スレッドスケジューラ212により各スレッドにおける実行時間の割当比率は動的に変更される。その場合、領域決定部222は、割当スロット数531及びIndexテーブル532を更新すると共に、キャッシュメモリ230に対してライトバックインバリデート処理を行う。
【0075】
すなわち、領域決定部222は、実行時間の割当比率が変更された場合に、当該変更後の実行時間の割当比率に応じて当該変更にかかるスレッドに割り当てるキャッシュメモリの領域を更新する。例えば、あるスレッドにおける実行時間の割当比率が高く変更された場合、スレッドにおけるキャッシュへのアクセス頻度も一般的には増加する。そのため、アクセス頻度の増加に合わせて、当該スレッドにおけるキャッシュメモリの領域の割当量も増加させることで、リソースの使用率とキャッシュメモリの使用率との均衡を維持することができる。よって、継続的にキャッシュメモリの利用効率を高めることができる。
【0076】
さらに、領域決定部222は、前記更新と共に、変更により実行時間の割当比率が減少した命令流に対して既に割り当てられていたキャッシュメモリの領域のうち、当該減少分を無効化する。これにより、新たに割り当てられたキャッシュメモリの領域を、必要になった際に即時に利用することができる。
【0077】
そのため、ライトバックインバリデート処理部57は、Indexテーブル532の更新に応じて、該当のラインを無効化するためのインバリデート信号d62をキャッシュメモリ230へ出力する。言い換えると、ライトバックインバリデート処理部57は、指定されたインデックス値に対応するラインのデータをメインメモリへ書き戻し、かつ、当該ラインを無効化する。このとき、ライトバックインバリデート処理部57は、全ウェイについて横断的に実行する。
【0078】
ここで、スレッドにおけるスロットの割当比率が変更される場合の動作について、
図14、
図15及び
図16を用いて説明する。
図14は、本実施の形態2にかかる割当変更処理の流れを示すフローチャートである。但し、
図12と同等の処理については同じ符号を付している。
図15は、本実施の形態2にかかる割当変更後のスロット割当情報d3a、割当スロット数情報531及びIndexテーブル532の例を示す図である。
図16は、本実施の形態2にかかる割当変更後のキャッシュメモリ内の1ウェイ当たりのデータの例を示す図である。
【0079】
図15では、スロット3に割り当てられていたスレッド0がスレッド1に変更された場合について説明する。このとき、スレッドスケジューラ212は、スロット割当情報d3aを更新する。そして、領域決定部222は、変更後のスロット割当情報d3aを受け付ける(S21)。
【0080】
次に、割当スロット数算出部511は、変更されたスレッドの割当スロット数531を更新する。具体的には、割当スロット数算出部511は、スレッド0の変更後の割当スロット数"3"を算出し、また、スレッド1の変更後の割当スロット数"4"を算出する(S22)。そして、割当スロット数算出部511は、割当スロット数531のうちスレッド0の割当スロット数を"4"から"3"へ、また、スレッド1の割当スロット数を"3"から"4"へ更新する(S23、
図15)。また、割当スロット番号検出部512は、変更後の割当スロット番号を検出する(S24)。具体的には、割当スロット番号検出部512は、変更にかかるスレッド1の割当スロット番号"3"を算出する。
【0081】
併せて、領域決定部222は、割り当てが変更されたスロット及びスレッドを特定する(S41)。ここでは、スロット番号"3"並びにスレッド0及びスレッド1が特定される。続いて、領域決定部222は、変更されたスレッドの変更前のインデックス値をIndexテーブル532から取得する(S42)。具体的には、領域決定部222は、スロット番号"3"が変更前に割り当てられていたスレッド0における引数"3"に対応付けられたインデックス値"3"を取得する。
【0082】
そして、ライトバックインバリデート処理部57は、取得したインデックス値に対応するラインについて、各ウェイをライトバックインバリデートする(S43)。例えば、ウェイw0では、ライン"3"及びライン"19"がライトバックインバリデートされる(
図16)。同様に、ウェイw1〜w3についてもライトバックインバリデートされる。ここで、ライン"3"をライングループL0xb及びライン"19"をライングループL0ybとする。
【0083】
その後、引数対応付け部513は、変更されたスレッドのIndexテーブル532を更新する(S46)。具体的には、引数対応付け部513は、スレッド0の引数"3"のインデックス値を"0"に更新する。また、領域決定部222は、スレッド1の引数"0"〜"3"のインデックス値を"3"〜"6"に更新する。これにより、変更前のライングループL0のうち、ライングループL0xa及びL0xbは引き続きスレッド0に割り当てられ、変更後のライングループL0aとなる。また、ライングループL0xb及びL0ybは今後スレッド1の引数"0"へのアクセスが発生した場合に、変更後のライングループL1bに加えられる。
【0084】
このように、本実施の形態2では、スレッドにおけるスロットの割当比率が動的に変更される場合であっても、処理速度の比率と領域の割当比率との均衡を維持すること、つまり同期することができる。よって、キャッシュメモリ全体の利用効率を向上することができる。
【0085】
<実施の形態3>
実施の形態3では、キャッシュメモリがバンク分けされた場合について、バンク分けされていない上述した実施の形態2と同様に実現可能であることを説明する。
図17は、本実施の形態3にかかる領域決定部222aの構成を示すブロック図である。尚、実施形態3にかかるキャッシュ制御装置を含むコンピュータシステムの構成は、
図5と同等であるため、図示及び説明を省略する。
【0086】
領域決定部222aは、領域決定部222の構成のうちオフセット生成部55がバンク変換部55aに置き換わったものである。バンク変換部55aは、下位領域d22をラインのオフセットに変換する。例えば、ここでは、下位領域d22は1ビットの値つまり"0"又は"1"のためそれぞれ"0"又は"16"へ変換するものとする。つまり、下位領域d52は、バンクの特定に用いられる。本実施の形態3にかかる論理アドレスのビット構成例として
図18に示す。
【0087】
そして、加算部56は、バンク変換部55aによる変換後のオフセットと、Indexテーブル532から出力されたインデックス値とを加算して、アクセス対象のラインとしてキャッシュメモリ230aへアクセスする。これにより、キャッシュメモリ230aは、全てのウェイw0〜w3から該当するラインのデータを読み出す。
【0088】
また、キャッシュメモリ230aは、ウェイw0a〜w3aの4つのウェイを有し、各ウェイは2つのバンクにグループ分けされているものとする。
図19は、本実施の形態3にかかるバンクを用いた場合の領域決定時のキャッシュメモリ内の1ウェイ当たりのデータの例を示す図である。ここでは、バンク数がウェイ当たり"2"、ライン数が"32"つまりライン数がバンク当たり"16"であるものとする。例えば、ウェイw0は、バンクb0及びb1を有し、バンクb0にはライン"0"〜"15"、バンクb1にはライン"16"〜"31"が所属している。ウェイ内のラインをバンクにグループ分けすることで、領域決定部222aは、"0"又は"1"のバンク番号と"0"乃至"15"のライン番号とを指定することで、所望のラインへアクセスすることができる。そのため、指定すべきライン番号がウェイ当たりの全ライン数"32"ではなく、その半分の"16"とすることができ、領域決定部222に比べて領域決定部222aの容量を抑えることができる。
【0089】
例えば、キャッシュメモリ230aのウェイw0では、バンクb0のライン"0"〜"3"とバンクb1のライン"16"〜"19"がライングループL0として、スレッド0のためのキャッシュ領域として割り当てられたこととなる。同様に、スレッド1についてはライングループL1、スレッド2についてはライングループL2及びスレッド3についてはライングループL3がキャッシュ領域として割り当てられたこととなる。
【0090】
図20は、本実施の形態3にかかるバンクを用いた場合の割当変更後のキャッシュメモリ内のデータの例を示す図である。ここでは、
図15と同様に、スロット3に割り当てられていたスレッド0がスレッド1に変更された場合について説明する。このとき、ウェイw0では、バンクb0のライン"3"及びバンクb1のライン"19"がライトバックインバリデートされる。同様に、ウェイw1〜w3についてもライトバックインバリデートされる。ここで、ライン"3"及び"19"をライングループL0bとする。そして、変更前のライングループL0のうち、ライングループL0aは引き続きスレッド0に割り当てられ、ライングループL0bは今後スレッド1の引数"0"へのアクセスが発生した場合に、ライングループL1に加えられる。
【0091】
このように、本実施の形態3についても上述した実施の形態2と同様の効果を奏することができる。
【0092】
<実施の形態4>
本実施の形態4は、上述した実施の形態1の具体例を示す。特に、上述した実施の形態2又は3との違いとして、キャッシュメモリの領域をウェイ単位でスレッドに割り当てるものとする。ここで、キャッシュメモリのウェイ数は、プロセッサのスロット数と等しいものとする。
図21は、本実施の形態4にかかるキャッシュ制御装置320を含むコンピュータシステムの構成を示すブロック図である。尚、
図21のうち、
図5と同等の構成については同一の符号を付し、説明を省略するものとする。領域決定部322は、ラインアドレスd61及びインバリデート信号d62に加え、アクセス対象のウェイを選択させるためのウェイ選択信号d60をキャッシュメモリ230へ出力する。
【0093】
図22は、本実施の形態4にかかる領域決定部322の構成を示すブロック図である。
図24は、本実施の形態4にかかる領域決定時のデータの例を示す図である。また、
図22では、スロット数が"4"、スレッド数が"3"、キャッシュメモリ330のウェイ数が"4"であるものとする。そのため、
図22のスロット割当情報d3bは、4スロットについて3スレッドが割り当てられていることとなる。例えば、
図24に示すようにスロット0〜3について、スレッド"0"、"1"、"1"、"2"が対応付けられており、スロット4以降にはスレッドが割り当てられていないものとする。
【0094】
領域決定部322は、割当ウェイ番号算出部61と、ウェイ設定情報62と、アドレス連接部63と、ライトバックインバリデート処理部64とを備える。割当ウェイ番号算出部61は、スロット割当情報d3bを受け付けて、各スレッド毎に割り当てられた割当ウェイ番号を算出する。例えば、
図24の場合、割当ウェイ番号算出部61は、スロット割当情報d3bからスレッド番号"0"、"1"、"2"を検出する。そして、割当ウェイ番号算出部61は、各スロットをウェイに対応付けて、スロットに割り当てられたスレッド番号を対応するウェイ番号に設定し、ウェイ設定情報62として内部の記憶領域に格納する。つまり、割当ウェイ番号算出部61は、領域としてのウェイの割り当てを決定する。また、領域決定部322は、受け付けたスレッドIDd2aに対応するウェイ番号をウェイ設定情報62から特定し、特定したウェイ番号をウェイ選択信号d60としてウェイ選択論理部331へ出力する。また、アドレス連接部63は、上位領域d51及び下位領域d52を受け付けて、これらを連接してラインアドレスd61としてキャッシュメモリ330へ出力する。本実施の形態4にかかる論理アドレスのビット構成例として
図23に示す。
【0095】
キャッシュメモリ330は、ウェイ選択論理部331と、ウェイw0〜w3とを備える。但し、ウェイw0〜w3は、バンクの有無は問わない。ウェイ選択論理部331は、領域決定部322から通知されたウェイ選択信号d60に基づき読み出し対象のウェイを選択する。
【0096】
ここで、本実施の形態4にかかる領域決定部322は、次のように表現できる。すなわち、領域決定部322は、実行時間の割当情報d3bに含まれる複数のタイムスロットのそれぞれをキャッシュメモリ330内の複数のウェイのいずれかと対応付け、タイムスロットに対応付けられたウェイを、当該タイムスロットに対応付けられたスレッドに割り当てるキャッシュメモリの領域として特定する。これにより、実施の形態2又は3に比べて、領域決定部322の回路規模を抑えることができる。また、実施の形態2又は3に比べて、簡易な方法で領域を割り当てるため、領域の決定処理の負荷を軽減できる。その上で、実施の形態2又は3と同等の効果を奏することができる。
【0097】
続いて、実施の形態4において、スレッドにおけるスロットの割当比率が変更される場合について説明する。
図22のライトバックインバリデート処理部64は、指定されたウェイのデータをメインメモリへ書き戻し、かつ、当該ウェイを無効化する。
【0098】
図25は、本実施の形態4にかかる領域更新時のデータの例を示す図である。
図25では、スロット1に割り当てられていたスレッド1がスレッド0に変更された場合を示す。このとき、スレッドスケジューラ212は、スロット割当情報d3bを更新する。そして、領域決定部322は、変更後のスロット割当情報d3bを受け付ける。また、割当ウェイ番号算出部61は、割り当てが変更されたスロットを特定する。ここでは、スロット番号"1"がスレッド1からスレッド0に変更されたことが特定される。
【0099】
次に、割当ウェイ番号算出部61は、変更されたスロットに対応するウェイ番号に設定されたスレッドIDを更新する。つまり、割当ウェイ番号算出部61は、ウェイ設定情報62を更新する。具体的には、割当ウェイ番号算出部61は、ウェイ番号"1"のスレッド番号を"1"から"0"へ更新する(
図25)。そして、割当ウェイ番号算出部61は、更新されたウェイ番号をライトバックインバリデート処理部64へ通知する。その後、ライトバックインバリデート処理部64は、通知されたウェイ番号についてライトバックインバリデートする。ここでは、ウェイw1が対象となる。
【0100】
このように、本実施の形態4においても、実施の形態2及び3と同様に、スレッドにおけるスロットの割当比率が動的に変更される場合であっても、処理速度の比率と領域の割当比率との均衡を維持すること、つまり同期することができる。よって、キャッシュメモリ全体の利用効率を向上することができる。
【0101】
<実施の形態5>
本実施の形態5は、上述した実施の形態1の具体例を示す。但し、キャッシュ制御装置を利用するプロセッサが複数存在する場合を対象とする。本実施の形態5にかかる領域決定部は、複数の命令流が分散して割り当てられた複数のプロセッサ間の処理速度の比率に基づいて、各命令流に割り当てるキャッシュメモリの領域の割り当てを決定するものである。ここで、処理速度とは、プロセッサにおける単位時間当たりの処理性能を示す指標である。処理速度は、例えば、プロセッサに割り当てられた単位時間当たり実行時間や、プロセッサのクロック周波数等を示す。
【0102】
また、処理速度の比率は、各タスクの重み付け情報と表現しても構わない。また、各プロセッサは周波数が異なる場合があり、各命令流の処理速度は割り当てられたプロセッサにより異なることとなる。つまり、本実施の形態5では、各周波数の比率を処理速度の比率として扱うものである。または、各プロセッサの実行状態に応じて、どのプロセッサにどのくらいキャッシュメモリの領域を割り当てるかを決定するようにしてもよい。
【0103】
本実施の形態5は、マルチコアプロセッサを搭載したコンピュータシステムに対して適用可能である。
図26は、本実施の形態5にかかるキャッシュ制御装置を含むコンピュータシステムの構成を示すブロック図である。
図26には、コンピュータシステムのうち、CPU411、412、・・・41nと、キャッシュ制御装置420と、キャッシュメモリ430と、処理速度情報440とが代表して記載されている。ここで、CPU411〜41nとキャッシュ制御装置420とが同じバスに接続されるものとする。
【0104】
CPU411〜41nは、それぞれ上述したマルチスレッドコアであるか、シングルコアであるかは問わない。また、CPU411〜41nは、それぞれ処理速度情報440が保持されたレジスタに、自己の周波数等の処理速度の情報を通知する。処理速度情報440は、レジスタ自体であるか、複数のプロセッサへの命令流の割り当てを行うスケジューラ等であっても構わない。また、キャッシュメモリ430は、上述したキャッシュメモリ230等と同等のものである。
【0105】
キャッシュ制御装置420は、アドレス分割部421と、領域決定部422と、ヒットミス判定部423とを備える。アドレス分割部421及びヒットミス判定部423は、上述したアドレス分割部221及びヒットミス判定部223と同等のもので実現可能である。領域決定部422は、処理速度情報440から処理速度比率d3cを取得し、処理速度比率d3cに基づいて、各プロセッサに割り当てるキャッシュメモリの領域の割り当てを決定する。領域の割当の仕方は、実施の形態2〜4と同等のものを適用することができる。また、各プロセッサに命令流が割り当てられることにより、リアルタイム制御における並行処理を実現できる。
【0106】
これにより、リアルタイム処理において各命令流のプロセッサにおける実際の使用率とキャッシュメモリの使用率を均衡することができる。そのため、キャッシュメモリ全体の利用効率を向上させることができる。
【0107】
<その他の実施の形態>
上述した実施の形態1〜5にかかるキャッシュ制御装置は、キャッシュメモリを内蔵し、リアルタイム制御を行うデータ処理装置に適用可能である。
【0108】
尚、上述した実施の形態2及び3では、全ライン数が全スロット数の整数倍となる例により説明をした。そのため、割当スロット数が最小値"1"であるスレッドに対しても割当スロット数の比率に応じて確実にラインを割り当てることができる。しかし、キャッシュメモリ230及び230a内のラインは一部が故障する場合があり、その際は当該故障したラインを無効化し、そのラインを領域の割当対象から除外する必要がある。この場合には、使用可能なライン数が全スロット数の整数倍でなくなる可能性がある。また、上述した実施の形態4では、全ウェイ数が全スロット数と一致する例により説明した。この場合についても同様の課題が発生し得る。
【0109】
そこで、領域決定部は、実行時間の割当比率のうち最も小さい比率が割り当てられた命令流については、当該比率に関わらず、キャッシュメモリの領域のうち割り当て可能な最小単位の領域を、少なくとも当該命令流に割り当てるキャッシュメモリの領域として決定するとよい。例えば、あるスレッドの割当スロット数が最小値"1"の場合、キャッシュメモリの領域の最小単位のラインを必ず割り当てるものとする。
【0110】
また、スロット数がウェイ数より多い場合には、実行時間の割当比率に関わらず、1スロットしか割り当てられていないスレッドに対して、ウェイを割り当てるようにすることが考えられる。または、その場合にのみウェイ内のラインを所定数にグループ分けするようにしてもよい。
【0111】
これにより、比率が小さ過ぎて領域の割り当てができない場合であっても最低限の領域を割り当てることで、ある程度のキャッシュヒット率を実現でき、所定時間内の終了時間を確保できる。つまり、プロセッサにおける処理速度の割当比率が最小のスレッドについても最低限一単位の領域を確保するものである。
【0112】
さらに、領域決定部は、キャッシュメモリにおけるラインの故障のチェック機構を設け、キャッシュメモリにおける故障したラインを除いて領域の割り当てを決定することが望ましい。これにより、キャッシュヒット率を向上させることができる。
【0113】
また、上記のことから全ライン数が全スロット数の整数倍に限定されない。また、スレッドに割り当てるキャッシュメモリの領域の最小単位をライン単位としたがこれに限定されない。例えば、複数ラインを領域の最小単位としてもよい。
【0114】
尚、セットアソシアティブ方式のキャッシュにおいては、ウェイ及びインデックスの両方を領域設定の対象としてもよい。例えば、ハードウェアスレッドの優先度設定に従い、使用できるウェイ数を設定してもよい。または、インデックスを分割して割り当てても良い。
【0115】
尚、その他の実施の形態として、複数のタスクを処理するプロセッサと、キャッシュと、タスクに割り当てられた重み付け情報を制御する装置と、タスクの重み付け情報に基づきキャッシュメモリを制御する装置とを備えるマイクロコンピュータがある。
【0116】
尚、本実施の形態1は、一つのキャッシュメモリを複数のスレッドやCPUで共有する場合に適用可能である。
図1では、CPUが1つのいわゆるシングルコアの例を示したが、マルチコアの場合であっても構わない。その場合、各命令流は各コアに割り当てられて実行されることで並列処理となる。そして、領域決定部122は、コアにおける周波数の比率に応じて領域を決定することで実現可能となる。そして、一部のコアだけ動作クロック周波数を変更する場合などにも対応できる。
【0117】
また、実行時間割当部112は、特許文献1のスケジューラを用いる必要はなく、各タスクのプロセッサにおける重み付けを定義するものであっても構わない。そして、タスクの追加や削除等によってその重み付けが動的に変化するものであればよい。
【0118】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。