以下、図面を用いて実施形態を説明する。
図1は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの一実施形態を示す。図1に示す演算処理装置1は、CPU等のプロセッサであり、プロセッサコア2、使用情報レジスタ3、パージ制御部4、アクセス制御部5、電力制御部6およびキャッシュメモリ7を有する。
プロセッサコア2は、演算命令を実行するとともに、ロード命令またはストア命令等のメモリアクセス命令に基づいて、アクセス制御部5にメモリアクセス要求を出力する演算処理部の一例である。また、プロセッサコア2は、使用情報レジスタ3に格納された使用情報を書き替える命令(例えば、ストア命令)を実行する。使用情報レジスタ3は、キャッシュメモリ7が有する複数のウェイWAY(WAY0−WAY1)の各々を使用するか否かを示す使用情報を保持する。
例えば、演算処理装置1は、プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、プロセスを生成する。演算処理装置1は、システムコールの引数が、使用情報レジスタ3に格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキスト(演算処理装置1の状態)としてコンテキスト領域に保持する。また、演算処理装置1は、システムコールの引数が、使用情報レジスタ3に格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして、コンテキストを記憶するコンテキスト領域に保持する。コンテキスト領域は、主記憶装置8等に割り当てられる。そして、演算処理装置1は、システムコールに基づいて、コンテキスト領域にコンテキストとして保持した使用情報を使用情報レジスタ3に設定する。
例えば、デフォルトの使用情報は、全てのウェイWAY0−WAY1の使用を示す。システムコールに基いて使用情報をコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタ3に設定する処理は、OS(Operating System)等のプログラムにより実行される。すなわち、システムコールに基いて、使用情報をコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタ3に設定する処理は、演算処理装置1の制御方法および演算処理装置1の制御プログラムにより実現される。
システムコールの引数が使用情報を含まない場合、デフォルトの使用情報をプロセスのコンテキストとして保持することで、例えば、全てのウェイWAYを使用しないといった誤った使用情報が使用情報レジスタ3に設定されることを抑止することができる。これにより、キャッシュメモリ7にデータが保持されない設定になることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
パージ制御部4は、プロセッサコア2が実行する命令により書き換えられた使用情報レジスタ3内の使用情報に基づいて、使用を停止するウェイWAYを判定する。そして、パージ制御部4は、使用を停止するウェイWAYが保持するデータをキャッシュメモリ7から削除する処理と、削除するデータを主記憶装置8に書き戻す処理とを含むパージ処理を実行する。データの主記憶装置8への書き戻しは、削除したデータがキャッシュメモリ7上で書き換えられている場合に実行される。主記憶装置8は、キャッシュメモリ7より下位の記憶装置の一例である。パージ制御部4は、パージ処理の実行中、パージ情報をアクセス制御部5および電力制御部6に出力する。なお、パージ制御部4は、アクセス制御部5を介してパージ処理を実行してもよい。
アクセス制御部5は、プロセッサコア2からのメモリアクセス要求に基づいて、キャッシュメモリ7にアクセスし、アクセス対象のデータをキャッシュメモリ7が保持していない場合(キャッシュミス)、主記憶装置8にアクセスする。ここで、アクセス制御部5は、使用情報レジスタ3に格納された使用情報に基づいて、使用されるウェイWAYにアクセスし、使用が停止されたウェイWAYにはアクセスしない。また、アクセス制御部5は、パージ情報の受信中(すなわち、パージ処理中)、プロセッサコア2からのメモリアクセス要求に基づくキャッシュメモリ7のアクセスを抑止する。
図1に示す演算処理装置1では、データを削除するウェイWAYに含まれていたデータが主記憶装置8に書き戻されるまで、新規のメモリアクセス要求に基づくキャッシュメモリ7のアクセスは抑止される。これにより、新規のメモリアクセス要求(キャッシュミス)により、主記憶装置8から古いデータが読み出されることを抑止することができる。すなわち、パージ処理中に、メモリアクセス要求に基づくキャッシュメモリ7のアクセスを保留することで、キャッシュメモリ7上で書き換えられたダーティなデータに対応する古いデータが主記憶装置8からキャッシュメモリ7に転送されることを抑止することができる。これにより、キャッシュメモリ7と主記憶装置8との間のコヒーレンシを維持することができ、演算処理装置1が誤動作することを抑止することができる。
これに対して、パージ処理中にキャッシュメモリ7のアクセスを抑止しない場合、キャッシュメモリ7と主記憶装置8との間のコヒーレンシが維持されなくなる。例えば、データを削除するウェイWAY1に含まれていたダーティなデータのアドレスに対する新規の読み出しアクセス要求が発行された場合、キャッシュミスとなる。キャッシュミスにより、新規の読み出しアクセス要求に基づいて主記憶装置8から読み出された古いデータは、キャッシュメモリ7の有効なウェイWAY0に格納され、コヒーレンシが維持されなくなる。
電力制御部6は、パージ情報に基づいて、パージ処理が実行中であるか否かを判定する。また、電力制御部6は、使用情報レジスタ3に保持された使用情報に基づいて使用を停止するウェイWAYを判定し、パージ制御部4によるパージ処理の完了後、使用の停止を判定したウェイWAYの動作を停止する。使用しないウェイWAYの動作を停止することで、演算処理装置1の消費電力を、使用しないウェイWAYの動作を停止しない場合に比べて削減することができる。
例えば、キャッシュメモリ7は、クロックに同期して動作する。電力制御部6は、使用を停止するウェイWAYへのクロックの供給を停止することでウェイWAYの動作を停止し、あるいは、使用を停止するウェイWAYへの電源の供給を停止することでウェイWAYの動作を停止する。さらに、電力制御部6は、使用を停止するウェイWAYへのクロックの供給と電源の供給との両方を停止してもよい。
キャッシュメモリ7は、例えば、データキャッシュであり、演算処理装置1に接続される主記憶装置8が記憶するデータの一部を記憶する複数のウェイWAY(WAY0、WAY1)を有する。各ウェイWAYは、主記憶装置8から読み出されるデータをそれぞれ保持する複数の記憶領域を有する。なお、ウェイWAYの数は、3以上でもよい。また、キャッシュメモリ7は、プロセッサコア2が処理するデータと、プロセッサコア2が実行する命令(命令コード)の両方を記憶してもよい。また、命令コードがキャッシュメモリ7上で書き換えられる可能性がある場合、キャッシュメモリ7は、命令コードを記憶してもよい。
以上、図1に示す実施形態では、使用しないウェイWAYの動作を停止して演算処理装置1の消費電力を削減する場合に、キャッシュメモリ7と主記憶装置8との間のコヒーレンシを維持することができる。また、システムコールの引数が使用情報レジスタ3に格納する使用情報を含まない場合、デフォルトの使用情報をプロセスのコンテキストとして保持することで、誤った設定がコンテキストとして保持されることを抑止することができる。この結果、生成されるプロセスの処理効率が低下することを抑止することができる。
図2は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図2に示す演算処理装置100は、CPU等のプロセッサであり、プロセッサコア200およびキャッシュメモリ部300を有する。演算処理装置100は、主記憶装置400とともに情報処理装置に搭載される。なお、主記憶装置400は、メモリ制御装置を介して演算処理装置100に接続されてもよい。主記憶装置400は、キャッシュメモリ500より下位の記憶装置の一例である。
キャッシュメモリ部300は、キャッシュメモリ500と、キャッシュメモリ500の動作を制御するキャッシュ制御部600とを有する。キャッシュメモリ500は、プロセッサコア200が処理するデータを記憶してもよく、プロセッサコア200が処理するデータと、プロセッサコア200が実行する命令(命令コード)の両方を記憶してもよい。また、命令コードがキャッシュメモリ500上で書き換えられる可能性がある場合、キャッシュメモリ500は、命令コードを記憶してもよい。
キャッシュメモリ500は、クロックRAMCLK(RAMCLK0−RAMCLK7)にそれぞれ同期して動作するウェイWAY(WAY0−WAY7)を有する。また、キャッシュメモリ500は、プロセッサコア200から出力されるアドレスの中位のビット群により示されるインデックスアドレスIDXADにより識別される複数のエントリを有する。図3に示すように、各エントリは、ウェイWAY(WAY0−WAY7)毎にタグ領域TAG(TAG0−TAG7)とデータ領域DATA(DATA0−DATA7)とを有する。なお、キャッシュメモリ500が有するウェイWAYの数は2以上であればよい。
キャッシュ制御部600は、リクエストバッファ12、調停部14、アクセス制御部16、ウェイマスクレジスタ18、パージ制御部20および電力制御部22を有する。
リクエストバッファ12は、プロセッサコア200から出力されるメモリアクセス要求MARQまたはウェイマスクレジスタ18のセット要求SETRQを順次保持し、保持した要求MARQ、SETRQを調停部14に出力する。なお、演算処理装置100は、複数のプロセッサコア200を有してもよく、この場合、キャッシュ制御部600は、複数のプロセッサコア200毎にリクエストバッファを有する。また、キャッシュ制御部600は、演算処理装置100の外部から供給されるメモリアクセス要求を保持するリクエストバッファを有してもよい。
調停部14は、リクエストバッファ12から受信するメモリアクセス要求MARQおよびセット要求SETRQと、パージ制御部20から受信する削除要求DELRQとを調停する。調停部14は、調停により選択したメモリアクセス要求MARQ、セット要求SETRQまたは削除要求DELRQのいずれかをアクセス制御部16に出力する。例えば、セット要求SETRQは、プロセッサコア200がウェイマスクレジスタ18にビット値を書き込むストア命令を実行することで生成される。
調停部14は、パージ制御部20からリクエスト抑止信号RQHLDを受信している間、リクエストバッファ12から受信するメモリアクセス要求MARQの調停を停止し、メモリアクセス要求MARQのアクセス制御部16への出力を抑止する。すなわち、リクエスト抑止信号RQHLDが出力されている間、メモリアクセス要求MARQに伴うキャッシュメモリ500のアクセスは抑止される。
また、調停部14は、リクエスト抑止信号RQHLDを受信している間にパージ制御部20から受信する削除要求DELRQをアクセス制御部16に出力する。削除要求DELRQは、キャッシュメモリ500の所定数のウェイWAYの使用を停止する場合に、使用を停止するウェイWAYが保持するデータを削除するために生成される。ウェイWAYから削除したデータが、キャッシュメモリ500上で書き換えられた場合、削除したデータは、主記憶装置400に書き戻される。なお、調停部14は、アクセス制御部16内に配置されてもよい。すなわち、アクセス制御部16が、調停部14の機能を有してもよい。
アクセス制御部16は、置換ウェイ選択部24を有する。アクセス制御部16は、調停部14から受信するメモリアクセス要求MARQに含まれるアドレスをインデックスアドレスIDXADおよびタグアドレスTAGADとしてキャッシュメモリ500に出力する。タグアドレスTAGADは、プロセッサコア200から出力されるアドレスの上位のビット群により示され、インデックスアドレスIDXADで示されるエントリにおけるタグ領域TAG(図3)に格納される。
アクセス制御部16は、キャッシュメモリ500からヒット信号HITを受信した場合、メモリアクセス要求MARQに含まれるアドレスに対応するデータをキャッシュメモリ500が記憶していると判定する(キャッシュヒット)。データを読み出すメモリアクセス要求MARQがキャッシュヒットと判定された場合、キャッシュメモリ500から読み出されたデータDTは、プロセッサコア200に出力される。データを書き込むメモリアクセス要求MARQがキャッシュヒットと判定された場合、アクセス制御部16は、キャッシュヒットと判定されたウェイWAYのデータ領域DATA(図3)にデータを書き込む。また、アクセス制御部16は、データ領域DATAに書き込んだデータが主記憶装置400に記憶された元のデータと異なることを示す情報を、キャッシュヒットしたウェイWAYのタグ領域TAGに書き込む。
一方、アクセス制御部16は、ヒット信号HITを受信しない場合、メモリアクセス要求MARQに含まれるアドレスに対応するデータをキャッシュメモリ500が記憶していないと判定する(キャッシュミス)。キャッシュミスが判定された場合、アクセス制御部16は、メモリアクセス要求MARQに対応するメモリアクセス要求ARQ(読み出し要求)を主記憶装置400に出力する。また、アクセス制御部16は、置換ウェイ選択部24を用いて、インデックスアドレスIDXADで示されるエントリ内のウェイWAY(データ領域DATA)のうち、主記憶装置400から読み出されるデータと置換するデータを保持するウェイWAYを決定する。
アクセス制御部16は、置換するデータを保持するデータ領域DATAに対応するタグ領域TAGに保持されたタグデータTAGDTを読み出し、タグデータTAGDTに基づいて、置換するデータがキャッシュメモリ500上で書き換えられたか否かを判定する。アクセス制御部16は、置換するデータがキャッシュメモリ500上で書き換えられた場合、置換するデータ(すなわち、追い出すデータ)を主記憶装置400に書き戻すメモリアクセス要求ARQ(書き込み要求)を主記憶装置400に出力する。そして、アクセス制御部16は、追い出すデータに対応するタグ領域TAGに、データ領域DATAが無効であることを示すタグデータTAGDTを書き込む。
アクセス制御部16は、メモリアクセス要求ARQ(読み出し要求)に基づいて主記憶装置400から読み出されたデータMDTを、データを追い出したデータ領域DATAに書き込む。また、アクセス制御部16は、データを書き込んだデータ領域DATAに対応するタグ領域TAGに、データが有効であることを示す情報と、データがキャッシュメモリ500上で書き換えられていないことを示す情報とを書き込む。
メモリアクセス要求MARQが書き込み要求の場合、アクセス制御部16は、調停部14から受信した書き込みデータをデータMDTにマージした後、マージしたデータMDTを、データを追い出したデータ領域DATAに書き込む。メモリアクセス要求MARQが読み出し要求の場合、キャッシュメモリ500は、データMDTのうち、メモリアクセス要求MARQで要求されたデータをプロセッサコア200に出力する。なお、データMDTを読み書きするウェイWAYは、アクセス制御部16が生成するウェイ選択信号WSELにより選択される。
一方、アクセス制御部16は、調停部14から削除要求DELRQを受信した場合、削除要求DELRQに含まれるウェイWAYの番号とインデックスアドレスIDXADとにより示されるデータ領域DATAに記憶されたデータを削除する処理を実行する。データの削除は、タグ領域TAGに無効を示す情報を書き込むことで実行される。また、タグ領域TAGに記憶された情報に基づいて、削除するデータがキャッシュメモリ500上で書き換えられたことが判明した場合、アクセス制御部16は、メモリアクセス要求ARQ(書き込み要求)を主記憶装置400に出力し、削除するデータを主記憶装置400に書き戻す。
さらに、アクセス制御部16は、調停部14からセット要求SETRQを受信した場合、マスクセット信号MSKSETを生成し、セット要求SETRQに含まれるビット値D0−D7をマスクセット信号MSKSETに同期して出力する。これにより、ウェイマスクレジスタ18が書き換えられ、ウェイマスクレジスタ18は、ビット値D0−D7をマスクビットMSK0−MSK7として保持する。なお、ウェイマスクレジスタ18のマスクビットMSK0−MSK7は、アクセス制御部16を介することなく、セット要求SETRQを受信する調停部14または他の制御部により書き換えられてもよい。
置換ウェイ選択部24は、ウェイマスクレジスタ18に保持されたマスクビットMSK0−MSK7の値に基づいて、使用中のウェイWAYと使用を停止しているウェイWAYとを判別する。そして、置換ウェイ選択部24は、使用中のウェイWAYの中からキャッシュミス時にデータを置換するウェイWAYを決定する。置換可能な複数のウェイWAYがある場合、置換ウェイ選択部24は、参照されていない時間が最も長いデータを置換の対象にするLRU(Least Recently Used)手法等に基づいてデータを置換するウェイWAYを決定する。
LRUを判定するためのLRU情報は、エントリ毎にタグ領域TAG(図3)内に保持される。各エントリにおいてタグ領域TAG内に保持されるLRU情報は、使用中のウェイWAYの各エントリのデータ領域DATAのそれぞれが参照されていない時間を示す情報を含む。これにより、マスクビットMSK0−MSK7の値に対応して使用されないウェイWAYが存在する場合にも、LRU手法に基づいて、データを置換するウェイWAYを決定することができる。この結果、使用が停止されたウェイWAYがデータの置換対象となることを抑止することができ、演算処理装置100の誤動作を抑止することができる。なお、LRUを判定するためのLRU情報は、キャッシュメモリ500とは異なる記憶領域であって、置換ウェイ選択部24により参照可能な記憶領域に保持されてもよい。置換ウェイ選択部24の動作の例は、図12に示される。なお、置換ウェイ選択部24は、アクセス制御部16の外部に配置されてもよい。
ウェイマスクレジスタ18は、マスクセット信号MSKSETに基づいて、マスクセット信号MSKSETとともに受信するビット値D0−D7を、マスクビットMSK0−MSK7として保持する。例えば、ウェイマスクレジスタ18は、カーネルモードにおいてアクセスされるメモリ空間に割り当てられる。マスクビットMSK0−MSK7は、キャッシュメモリ500のウェイWAY0−WAY7にそれぞれ対応しており、”1”は、使用するウェイWAYを示し、”0”は、使用を停止するウェイWAYを示す。図2に示す例は、ウェイWAY6−WAY7が使用され、ウェイWAY0−WAY5の使用が停止される状態を示す。
ウェイマスクレジスタ18は、保持したマスクビットMSK0−MSK7をパージ制御部20、電力制御部22および置換ウェイ選択部24に出力する。また、ウェイマスクレジスタ18は、マスクビットMSK0−MSK7の少なくもいずれかの論理値が反転したことを検出した場合、変更信号REGSETをパージ制御部20に出力する。ウェイマスクレジスタ18の例は、図5に示される。ウェイマスクレジスタ18は、使用情報レジスタの一例であり、マスクビットMSK0−MSK7の値は、各ウェイWAY0−WAY7を使用するか否かを示す使用情報の一例である。
パージ制御部20は、変更信号REGSETを受信した場合、ウェイマスクレジスタ18が保持するマスクビットMSK0−MSK7の値に基づいて、リクエスト抑止信号RQHLD、削除要求DELRQおよびパージ信号PURGを出力する。パージ制御部20の動作の例は、図10および図11で説明する。なお、パージ制御部20は、リクエスト抑止信号RQHLDの代わりに、パージ信号PURGを調停部14に出力してもよい。リクエスト抑止信号RQHLDおよびパージ信号PURGは、使用を停止するウェイWAYが保持するデータを削除して主記憶装置400に書き戻すパージ処理の実行中を示すパージ情報の一例である。
電力制御部22は、マスクビットMSK0−MSK7とパージ制御部20からのパージ信号PURGとに基づいて、キャッシュメモリ500に供給されるクロックRAMCLK(RAMCLK0−RAMCLK7)の生成と停止とを制御する。クロックRAMCLK0−RAMCLK7は、キャッシュメモリ500のウェイWAY0−WAY7(図3)のそれぞれに供給される。電力制御部22の例は、図6に示される。なお、電力制御部22は、キャッシュ制御部600またはキャッシュメモリ部300の外部に配置されてもよい。
図3は、図2に示すキャッシュメモリ500の要部の一例を示す。図3は、主に、キャッシュヒットおよびキャッシュミスの判定と、キャッシュヒット時のデータ領域DATAからのデータの読み出しに関係する要素を示す。
キャッシュメモリ500は、8ウェイのセットアソシアティブ方式を採用しており、複数のウェイWAY(この例では、8個のWAY0−WAY7)を含むRAM(Random Access Memory)を有する。各ウェイWAYは、タグ領域TAG(TAG0−TAG7)と、データ領域DATA(DATA0−DATA7)とを有する。例えば、各ウェイWAYは、プロセッサコア200から出力されるアドレスの中位の8ビット[13:6]を抜き出したインデックスアドレスIDXADに基づいて識別される256個のエントリを有する。以下の説明では、ウェイWAY0−WAY7において共通のインデックスアドレスIDXADにより選択されるエントリは、セットとも称される。
各ウェイWAYは、対応するクロックRAMCLK(RAMCLK0−RAMCLK7)に同期して動作し、クロックRAMCLKが停止された場合、動作を停止する。すなわち、各ウェイWAYは、互いに独立にクロックRAMCLKを受信し、互いに独立に動作する。
各エントリにおけるデータ領域DATAは、64バイトのデータDTを保持する。64バイトのデータDTは、主記憶装置400に読み書きされるデータのアクセス単位であり、各データ領域DATAは、キャッシュブロックまたはキャッシュラインとも称される。各エントリのタグ領域TAGは、データ領域DATAに保持されたデータの主記憶装置400上でのアドレスの一部(所定数の上位ビット)であるタグアドレスTAGADと、データ領域DATAに保持されたデータの状態を示す制御情報とを保持する。例えば、制御情報は、データ領域DATAに記憶しているデータが有効か無効かを示す情報と、データ領域DATAに記憶しているデータが主記憶装置400から転送された後に書き換えられたか否かを示す情報とを含む。
キャッシュメモリ500は、各ウェイWAYに対応するアドレス比較器ACMP、オア回路ORおよびセレクタSELを有する。アドレス比較器ACMPは、メモリアクセス要求MARQに含まれるアドレスの上位ビットであるタグアドレスTAGADと、インデックスアドレスIDXADに基づいてタグ領域TAGから読み出されるタグアドレスとを比較する。アドレス比較器ACMPは、タグアドレスの比較結果をオア回路ORとセレクタSELに出力する。
オア回路ORは、アドレス比較器ACMPから出力される比較結果のいずれかがタグアドレスの一致を示す場合、ヒット信号HITを生成してアクセス制御部16およびセレクタSELに出力する。セレクタSELは、ヒット信号HITを受信した場合、タグアドレスの一致を示す情報を出力するアドレス比較器ACMPに対応するウェイWAYのデータ領域DATAから出力されるデータを選択し、データDTとして出力する。セレクタSELが選択したデータDTは、プロセッサコア200に出力される。なお、キャッシュミス時に主記憶装置400(図2)から読み出されるデータMDTのうち、メモリアクセス要求で要求されたデータも、データDTとしてプロセッサコア200に出力される。
図4は、図2に示すキャッシュメモリ500の他の要部の一例を示す。説明を分かりやすくするため、RAMおよびクロックRAMCLK0−RAMCLK7は、図3と重複させている。図4は、主に、タグ領域TAGのアクセスと、キャッシュミス時のデータ領域DATAから主記憶装置400へのデータの書き戻しと、キャッシュミス時のデータ領域DATAへのデータの書き込みとに関係する要素を示す。
アクセス制御部16は、タグ領域TAGにアクセスする場合、インデックスアドレスIDXADをキャッシュメモリ500に出力し、タグデータTAGDTの読み出しまたは書き込みを実行する。図4では、全てのタグ領域TAGに対してタグデータTAGDTが並列に入出力されるが、アクセスするタグ領域TAGをチップセレクト信号等で指定して、タグ領域TAG毎にタグデータTAGDTを入出力してもよい。
アクセス制御部16は、データを主記憶装置400に書き戻す場合、インデックスアドレスIDXADと、書き戻すデータを保持するデータ領域DATAを含むウェイWAYを選択するウェイ選択信号WSELとをキャッシュメモリ500に出力する。キャッシュメモリ500のRAMは、各ウェイWAYのデータ領域DATAにおいてインデックスアドレスIDXADにより選択されるエントリに保持されたデータを出力する。キャッシュメモリ500のデータセレクタDTSELは、ウェイ選択信号WSELが示すウェイWAYのデータ領域DATAから出力されたデータを選択し、選択したデータをデータMDTとして主記憶装置400に出力する。
なお、アクセス制御部16は、キャッシュミス時に、どのウェイWAYに保持されたデータを追い出すかを、置換ウェイ選択部24を利用して、タグ領域TAGに保持されたLRU情報に基づいて判定する。データを追い出すウェイWAYは、”1”に設定されたマスクビットMSKに対応するウェイWAYのタグ領域TAGに保持されたLRU情報に基づいて判定される。アクセス制御部16は、データを追い出したデータ領域DATAに対応するタグ領域TAGに、データ領域DATAに保持されたデータが無効であることを示す情報を書き込む。
また、アクセス制御部16は、データ領域DATAから追い出したデータを主記憶装置400に書き戻すか否かを、例えば、タグ領域TAGに保持されたモディファイビットに基づいて判定する。モディファイビットが、データ領域DATAに保持されたデータが書き替えられたことを示す場合、書き戻しが実行される。モディファイビットが、データ領域DATAに保持されたデータが書き替えられていないことを示す場合(すなわち、主記憶装置400に記憶されたデータと同じ)、書き戻しは実行されない。
アクセス制御部16は、主記憶装置400から読み出されるデータMDTをRAMに書き込む場合、インデックスアドレスIDXADと、データを書き込むウェイWAYを示すウェイ選択信号WSELとをキャッシュメモリ500に出力する。データセレクタDTSELは、主記憶装置400から読み出されるデータMDTを、ウェイ選択信号WSELが示すウェイWAYのデータ領域DATAに出力する。RAMは、インデックスアドレスIDXADにより選択されるセットにおいてウェイ選択信号WSELが示すウェイWAYのデータ領域DATAに、データセレクタDTSELから出力されるデータを書き込む。そして、キャッシュメモリ500から主記憶装置400へのデータの書き戻しと、主記憶装置400からキャッシュメモリ500へのデータの書き込みとにより、キャッシュメモリ500に保持されたデータの置換処理が実行される。
図5は、図2に示すウェイマスクレジスタ18の一例を示す。ウェイマスクレジスタ18は、レジスタ部18a、パルス生成部18bおよび信号生成部18cを有する。レジスタ部18aは、図2に示すアクセス制御部16からのマスクセット信号MSKSETに同期してデータD0−D7をマスクビットMSK0−MSK7と保持する複数の記憶部を有する。また、レジスタ18aは、保持したマスクビットMSK0−MSK7をマスクビット信号MSK0−MSK7として出力する。
パルス生成部18bは、マスクビット信号MSK0−MSK7のそれぞれに対応して、直列に接続された一対のインバータIV、フリップフロップFFおよび排他的論理和ゲートEORを有する。各排他的論理和ゲートEORは、各マスクビット信号MSK0−MSK7と、各マスクビット信号MSK0−MSK7をフリップフロップFFで1クロックサイクル遅らせた信号とを受信し、受信した2つの信号の論理が互いに異なる期間にハイレベルを出力する。すなわち、パルス生成部18bは、各マスクビットMSK0−MSK7の論理が反転した場合に、ハイレベルのパルス信号を生成する。信号生成部18cは、複数のオアゲートを有し、パルス生成部18bの排他的論理和ゲートの少なくともいずれかがパルス信号を出力した場合に、ハイレベルのパルスを有する変更信号REGSETを出力する。なお、パルス生成部18bおよび信号生成部18cは、ウェイマスクレジスタ18の外部に設けられてもよい。
図6は、図2に示す電力制御部22の一例を示す。電力制御部22は、マスクビットMSK(MSK0−MSK7)にそれぞれ対応するオア回路OR1およびアンド回路AND1を有する。各オア回路OR1は、マスクビットMSKの値が”1”の場合、またはパージ信号PURGがハイレベルの場合に、ハイレベルのクロックイネーブル信号CKEN(CKEN0−CKEN7)を出力する。アンド回路AND1は、クロックイネーブル信号CKENがハイレベルの期間、クロックCLKに同期してクロックRAMCLK(RAMCLK0−RAMCLK7)を出力する。これにより、電力制御部22は、各マスクビットMSK0−MSK7が”1”である場合、またはパージ信号PURGがハイレベルの場合に、クロックRAMCLK0−RAMCLK7をそれぞれ生成する。パージ信号PURGは、図10で説明するように、使用を停止するウェイWAYのデータ領域DATAに保持されたデータを削除するパージ処理の実行中にハイレベルに設定される。
図7は、図2に示すウェイマスクレジスタ18の値を、プロセスを生成するシステムコールに基づいて変更する処理の一例を示す。図7に示す処理は、演算処理装置100が実行するプログラムにより実行される。図7に示す”%”は、情報処理装置のモニタに表示されるコマンドプロンプトを示す。図7において、符号”0x”は16進数を示し、符号”0b”は2進数を示す。
まず、演算処理装置100を含む情報処理装置を使用するユーザにより、set_use_wayコマンドが情報処理装置に入力される。set_use_wayコマンドの第1引数”0xc0”のビット値は、ウェイWAY0−WAY7の使用または未使用を示し、ウェイマスクレジスタ18に格納される値を示す。16進数で”c0”が指定された場合、ウェイマスクレジスタ18のマスクビットMSK7−MSK0は”11000000”に設定され、ウェイWAY7−WAY6は使用され、ウェイWAY5−WAY0は使用されない。set_use_wayコマンドの第2引数”user_program”は、演算処理装置100が実行するアプリケーションプログラムの名称を示す。
ユーザモードにおいて、例えば、マンマシンインタフェース等を含むシステムの制御プログラムを実行中の演算処理装置100は、set_use_wayコマンドの入力に基づいて、ウェイマスクレジスタ18の値を変更するためのシステムコールを発行する。システムコールの発行により、演算処理装置100の実行モードはユーザモードからカーネルモードに変更される。
そして、制御プログラムは、システムコールのハンドラにジャンプし、ハンドラによりウェイマスクレジスタ18の値が書き替えられる。例えば、ウェイマスクレジスタ18は、アドレス空間のアドレス0x10に割り当てられており、ハンドラは、ストア命令(ST 0b11000000,0x10)を実行することで、ウェイマスクレジスタ18の値を書き換える。ウェイマスクレジスタ18に格納された値は、コンテキスト(演算処理装置100の状態)として保持され、OSにより管理される。
ウェイマスクレジスタ18に格納された値をコンテキストして保持することで、プロセス(アプリケーションプログラム)が切り替わる場合にも、切り替えられたプロセスに合わせて、ウェイマスクレジスタ18に正しい値を保持させることができる。この結果、プロセスが切り替わる場合にも、アプリケーションプログラム毎に、最適な容量のキャッシュメモリ500を使用することができる。プロセスが生成される場合のコンテキストの処理は、図8で説明され、プロセスが切り替えられる場合のコンテキストの処理は、図9で説明される。
なお、演算処理装置100が複数のプロセッサコア200を有し、各プロセッサ200がアプリケーションプログラムに対応するプロセスをそれぞれ実行する場合にも、コンテキストスイッチにより、ウェイマスクレジスタ18の値を切り替えることができる。この結果、いわゆるマルチコアタイプの演算処理装置100においても、アプリケーションプログラム毎に、最適な容量のキャッシュメモリを使用することができる。
ハンドラによるストア命令の実行が完了すると、制御は、ハンドラからシステムコールの発行元の制御プログラムにリターンされる。そして、制御プログラムは、set_use_wayコマンドの第2引数で指定されたuser_program(アプリケーションプログラム)を起動する。なお、使用するウェイWAYの数は、set_use_wayコマンドにより指定されるため、アプリケーションプログラム中に、ウェイWAYの数を変更する命令を追加することなく、最適な容量のキャッシュメモリを使用することができる。すなわち、アプリケーションプログラムを変更することなく、最適な容量のキャッシュメモリ500を使用することができる。
例えば、user_programは、科学技術計算等のHPC(High Performance Computing)分野で使用され、事前のチューニングにより、所望の処理性能を維持できるキャッシュメモリの最適な容量が分かっている。このように、キャッシュメモリの最適な容量が既知のアプリケーションを実行することにより、アプリケーションの性能を落とさずに、最小限の数のウェイWAYを用いて処理を実行することができる。この結果、アプリケーションの性能を落とすことなく、コヒーレンシを維持して、演算処理装置100の消費電力の削減に寄与することができる。
図8は、図2に示す演算処理装置100において、システムコールによりプロセスが生成される場合の処理の一例を示す。図8に示す処理は、システムコールの発行に基づいて、演算処理装置100が実行するOS等の制御プログラムにより実行される。すなわち、図8は、演算処理装置100の制御方法および演算処理装置100の制御プログラムの一例を示す。
まず、ステップS1において、演算処理装置100は、ウェイマスクレジスタ18のマスクビットMSK7−MSK0の設定が、システムコールに使用される引数で指示されたか否かを判定する。すなわち、演算処理装置100は、システムコールがset_use_wayコマンドに基づいて発行されたか否かを判定する。マスクビットMSK7−MSK0の設定が引数で指示された場合、処理はステップS2に移行され、マスクビットMSK7−MSK0の設定が引数で指示されない場合、処理はステップS3に移行される。
ステップS2において、演算処理装置100は、生成するプロセスのコンテキストにおけるマスクビットMSK7−MSK0に、set_use_wayコマンドの引数で指示された値を設定し、処理をステップS4に移行する。一方、ステップS3において、演算処理装置100は、生成するプロセスのコンテキストにおけるマスクビットMSK7−MSK0に、デフォルト値(例えば、オール1)を設定し、処理をステップS4に移行する。オール1のデフォルト値は、図3に示すキャッシュメモリ500の全てのウェイWAY7−WAY0が使用されることを示す。
ステップS4において、演算処理装置100は、コンテキストとして保持しているマスクビットMSK7−MSK0をウェイマスクレジスタ18に設定し、コンテキストとして保持している他のレジスタ値等を、それぞれに対応するレジスタ等に設定する。次に、ステップS5において、演算処理装置100は、新たなプロセスを生成する。すなわち、演算処理装置100が実行するプロセスが切り替えられる。
マスクビットMSK7−MSK0の設定が引数で指示されない場合、ステップS3により、ウェイWAY7−WAY0を使用するデフォルト値がコンテキストとして保持される。これにより、図1に示す実施形態と同様に、全てのウェイWAYを使用しないといった誤った使用情報が使用情報レジスタ3に設定されることを抑止することができ、キャッシュメモリ500にデータが保持されない設定になることを抑止することができる。この結果、生成されるプロセスの処理効率が低下することを抑止することができる。
図9は、図2に示す演算処理装置100がプロセスを切り替える場合のコンテキストの処理の一例を示す。図9に示す処理は、演算処理装置100が実行するOS等のプログラムにより実行される。すなわち、図9は、演算処理装置100の制御方法および演算処理装置100の制御プログラムにより実現される。
まず、ステップS6において、演算処理装置100は、プロセスの切り替えが発生したか否かを判定し、プロセスの切り替えが発生した場合、処理をステップS7に移行し、プロセスの切り替えが発生しない場合、処理を終了する。
ステップS7において、演算処理装置100は、現在のプロセスのウェイマスクレジスタ18のマスクビットMSK7−MSK0の値を含む演算処理装置100の状態を、コンテキストとして待避する。次に、ステップS8において、演算処理装置100は、切り替え後のプロセスのコンテキストとして保持しているウェイマスクレジスタ18のマスクビットMSK7−MSK0を含む情報を復帰する。すなわち、ウェイマスクレジスタ18を含む演算処理装置100の状態は、切り替え後のプロセスに対応して変更される。そして、ステップS9において、演算処理装置100は、プロセスを切り替えて、処理を終了する。なお、プロセスの切り替えにより使用が停止されるウェイWAYは、図10で説明するように、データの削除処理および主記憶装置400への書き戻し処理を含むパージ処理が実行される。
図9に示すように、マスクビットMSK7−MSK0の値は、コンテキストとしてプロセス毎に保持されるため、プロセスが切り替えられた場合にも、切り替えられたプロセスのそれぞれに適した容量のキャッシュメモリ500を使用することができる。これにより、実行されるプロセス毎に、演算処理装置100の消費電力を最小限にして、コヒーレンシを維持することができる。
図10は、図2に示す演算処理装置100の動作の一例を示す。図10の初期状態において、ウェイマスクレジスタ18は、”0xff”のマスクビットMSK[7:0]を保持している(図10(a))。電力制御部22は、オール1のマスクビットMSKに基づいて、全てのクロックRAMCLK0−RAMCLK7を生成し、キャッシュメモリ500の全てのウェイWAY0−WAY7が動作する(図10(b))。パージ状態PURGSTは、パージ制御部20の内部状態を示し、”0”がパージ制御部20の非動作状態を示し、”1”がパージ制御部20の動作状態(パージ処理の実行中)を示す。
set_use_wayコマンドが情報処理装置に入力され、図7で説明したように、ウェイマスクレジスタ18が保持するマスクビットMSK[7:0]の値は、”0xc0”に変更される(図10(c))。ウェイマスクレジスタ18は、マスクビットMSKの変更に基づいて変更信号REGSETを出力する(図10(d))。パージ制御部20は、変更信号REGSETに基づいて、パージ状態PURGSTを”1”に設定し、リクエスト抑止信号RQHLDおよびパージ信号PURGをハイレベルに設定する(図10(e)、(f))。
電力制御部22は、ハイレベルのパージ信号PURGに基づいて、全てのクロックイネーブル信号CKEN0−CKEN7をハイレベルHに設定し、全てのクロックRAMCLK0−RAMCLK7を生成する(図10(g)、(h))。すなわち、パージ処理の実行する期間に、マスクビットMSKの値に拘わりなく、全てのウェイWAYが動作する。これにより、使用を停止するウェイWAYのタグ領域TAGおよびデータ領域DATAにアクセスすることができ、データの削除および主記憶装置400への書き戻しを実行することができる。なお、図10では、初期状態からクロックRAMCLK0−RAMCLK7の出力されているため、クロックイネーブル信号CKEN0−CKEN7のレベルは変化しない。
調停部14は、ハイレベルのリクエスト抑止信号RQHLDに基づいて、リクエストバッファ12から受信するメモリアクセス要求MARQのアクセス制御部16への出力を停止する。パージ制御部20は、”0”のマスクビットMSK0−MSK5に対応して使用が停止されるウェイWAY0−WAY5に保持されたデータを削除するため、削除要求DELRQを順次出力する(図10(i))。この例では、パージ制御部20は、6つのウェイWAY0−WAY5のデータ領域DATAにおける256個のエントリに保持されたデータを削除するために、1536個の削除要求DELRQを生成する。各削除要求DELRQは、インデックスアドレスIDXADおよびウェイWAYの番号を示す情報を含む。
削除要求DELRQを受信した調停部14は、削除要求DELRQをアクセス制御部16に出力する。アクセス制御部16は、削除要求DELRQで指定されるデータ領域DATAおよびタグ領域TAGからデータおよび制御情報を読み出し、制御情報を読み出したタグ領域TAGに、データが無効であることを示す制御情報を書き込む。また、アクセス制御部16は、タグ領域TAGから読み出した制御情報が、データ領域DATAに保持されたデータが書き換えられたことを示す場合、データ領域DATAから読み出したデータを主記憶装置400に書き戻す処理を実行する。すなわち、アクセス制御部16は、使用しないウェイWAYに保持されたデータを削除し、主記憶装置400に書き戻すパージ処理を実行する。
パージ制御部20は、所定数の削除要求DELRQを出力した後、パージ状態PURGSTを”0”に設定し、リクエスト抑止信号RQHLDおよびパージ信号PURGをロウレベルに設定する(図10(j)、(k))。電力制御部22は、パージ信号PURGのロウレベルへの変化に基づいて、”0”のマスクビットMSK0−MSK5に対応するクロックイネーブル信号CKEN0−CKEN5をロウレベルに固定する(図10(l))。これにより、電力制御部22は、クロックRAMCLK0−RAMCLK5の生成を停止する(図10(m))。クロックRAMCLK0−RAMCLK5の停止により、ウェイWAY0−WAY5は動作を停止し、スタンバイ状態になる。このため、ウェイWAY0−WAY5にクロックRAMCLK0−RAMCLK5を供給する場合に比べて、キャッシュメモリ500の消費電力は削減される。
この後、演算処理装置100は、キャッシュメモリ500の2つのウェイWAY6−WAY7を使用して、set_use_wayコマンドで指定されたアプリケーションプログラムuser_program1を実行する。なお、アプリケーションプログラムuser_program1は、2つのウェイWAY6−WAY7を使用することで、性能を低下させることなく実行可能であることが、予め実行された評価により判明している。換言すれば、8つのウェイWAY0−WAY7を使用してアプリケーションプログラムuser_program1を実行しても、2つのウェイWAY6−WAY7を使用する場合に比べて性能は向上しない。性能を低下させない最小限の数のウェイWAYを使用してアプリケーションプログラムuser_program1を実行することで、キャッシュメモリ500が消費する電力を、8つのウェイWAY0−WAY7を使用する場合に比べて削減することができる。
アプリケーションプログラムuser_program1の実行が終了した後、次のアプリケーションプログラムuser_program2を実行するために、set_use_wayコマンドが情報処理装置に入力される(図10(n))。アプリケーションプログラムuser_program1用のset_use_wayコマンドの入力に基づいて実行された処理と同一または同様の処理については、詳細な説明は省略する。
ウェイマスクレジスタ18が保持するマスクビットMSK[7:0]の値は、”0xf0”に変更される(図10(o))。マスクビットMSK[7:0]の”0xf0”は、ウェイWAY0−WAY3の使用が停止され、ウェイWAY4−WAY7が使用されることを示す。
パージ制御部20は、ウェイマスクレジスタ18が出力する変更信号REGSETに基づいて、パージ状態PURGSTを”1”に設定し、リクエスト抑止信号RQHLDおよびパージ信号PURGをハイレベルに設定する(図10(p)、(q))。電力制御部22は、ハイレベルのパージ信号PURGに基づいて、全てのクロックイネーブル信号CKEN0−CKEN7をハイレベルHに設定し、全てのクロックRAMCLK0−RAMCLK7を生成する(図10(r)、(s))。
パージ制御部20は、”0”のマスクビットMSK0−MSK3に対応して使用が停止されるウェイWAY0−WAY3に保持されたデータを追い出すため、1024個の削除要求DELRQを順次出力する(図10(t))。調停部14は、パージ制御部20から受信した削除要求DELRQをアクセス制御部16に出力する。削除要求DELRQで指定されるデータ領域DATAは、前回のパージ処理により無効化されており、データ領域DATAに対応するタグ領域TAGは、データが無効であることを示す情報が保持されている。このため、アクセス制御部16は、データ領域DATAおよびタグ領域TAGにアクセスするが、タグ領域TAGに保持された情報を書き替えず、データの追い出し処理は実行しない。
パージ制御部20は、所定数の削除要求DELRQを出力した後、パージ状態PURGSTを”0”に設定し、リクエスト抑止信号RQHLDおよびパージ信号PURGをロウレベルに設定する(図10(u)、(v))。電力制御部22は、パージ信号PURGのロウレベルへの変化に基づいて、”0”のマスクビットMSK0−MSK3に対応するクロックイネーブル信号CKEN0−CKEN3をロウレベルに固定する(図10(w))。これにより、電力制御部22は、クロックRAMCLK0−RAMCLK3の生成を停止する(図10(x))。
この後、演算処理装置100は、キャッシュメモリ500の4つのウェイWAY4−WAY7を使用して、set_use_wayコマンドで指定されたアプリケーションプログラムuser_program2を実行する。なお、アプリケーションプログラムuser_program2は、4つのウェイWAY4−WAY7を使用することで、性能を低下させることなく実行可能であることが、予め実行された評価により判明している。したがって、プログラムuser_program1の実行と同様に、キャッシュメモリ500が消費する電力を、8つのウェイWAY0−WAY7を使用する場合に比べて削減することができる。
図11は、図2に示すパージ制御部20の動作の一例を示す。まず、ステップS100において、パージ制御部20は、変更信号REGSETがハイレベルHに設定された場合、動作をステップS102に移行し、変更信号REGSETがロウレベルに維持されている間、ステップS100の判定を繰り返す。
ステップS102において、パージ制御部20は、リクエスト抑止信号RQHLDおよびパージ信号PURGをハイレベルHに設定し、動作をステップS104に移行する。ステップS104において、パージ制御部20は、カウンタ値i、jを”0”に設定し、動作をステップS106に移行する。ステップS106において、パージ制御部20は、マスクビットMSKiが”0”の場合、動作をステップS108に移行し、マスクビットMSKiが”0”でない場合(すなわち、”1”)、動作をステップS114に移行する。
ステップS108において、パージ制御部20は、ウェイWAYiにおいて、インデックスアドレスIDXADが”j”のデータを削除する削除要求DELRQを出力する。次に、ステップS110において、パージ制御部20は、カウンタ値jを”1”増加させ、動作をステップS112に移行する。ステップS112において、パージ制御部20は、カウンタ値jがインデックスアドレスIDXADの最大値IDXADmaxより大きい場合、処理をステップS114に移行する。また、パージ制御部20は、カウンタ値jが最大値IDXADmax以下の場合、削除要求DELRQを出力する動作を繰り返すために、処理をステップS108に戻す。そして、動作を停止するウェイWAY内の各エントリに保持されたデータの削除が順次実行される。なお、キャッシュメモリ500が、インデックスアドレスIDXADで識別される256個のエントリを有する場合(IDXAD=0から255)、最大値IDXADmaxは、”255”である。
一方、ステップS114において、パージ制御部20は、カウンタ値iを”1”増加させ、動作をステップS116に移行する。ステップS116において、パージ制御部20は、カウンタ値iがウェイWAYの番号の最大値WAYmax(例えば、”7”)より大きい場合、処理をステップS118に移行する。また、パージ制御部20は、カウンタ値iが最大値WAYmax以下の場合、次のウェイWAYのデータのパージ処理を実行するために、処理をステップS106に戻す。ステップS118において、パージ制御部20は、リクエスト抑止信号RQHLDおよびパージ信号PURGをロウレベルLに設定し、パージ処理の動作を終了する。
図12は、図2に示す置換ウェイ選択部24の動作の一例を示す。置換ウェイ選択部24は、アクセス制御部16によりキャッシュミスが判定されたことに基づいて、動作を開始する。
まず、ステップS200において、置換ウェイ選択部24は、アクセス制御部16からキャッシュミスしたインデックスアドレスIDXADを受信する。次に、ステップS202において、置換ウェイ選択部24は、インデックスアドレスIDXADで示されるタグ領域TAG0−TAG7からタグデータTAGDTを読み出す。次に、ステップS204において、置換ウェイ選択部24は、LRU手法を用いて、”1”のマスクビットMSKに対応するウェイWAYのデータ領域DATAに保持されたデータのうち、参照されていない時間が最も長いデータを置換の対象に決定する。置換ウェイ選択部24は、置換の対象に決定したデータを保持するウェイWAYの番号をアクセス制御部16に通知し、データを置換するウェイWAYを選択する動作を終了する。
以上、図2から図12に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、使用しないウェイWAYの動作を停止して演算処理装置100の消費電力を削減する場合に、キャッシュメモリ500と主記憶装置400との間のコヒーレンシを維持することができる。また、演算処理装置100は、システムコールの引数がウェイマスクレジスタ18のマスクビットMSK7−MSK0の書き換える情報を含まない場合、デフォルトのマスクビットMSK7−MSK0の値をプロセスのコンテキストとして保持する。これにより、誤った設定がコンテキストとして保持されることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
さらに、図2から図12に示す実施形態では、マスクビットMSKに応じて使用されないウェイWAYが存在する場合にも、置換ウェイ選択部24により、LRU手法に基づいて、データを置換するウェイWAYを決定することができる。これにより、使用が停止されたウェイWAYがデータの置換対象となることを抑止することができ、演算処理装置100の誤動作を抑止することができる。
マスクビットMSKの値に拘わりなく、全てのウェイWAYを動作させることで、使用を停止するウェイWAYのタグ領域TAGおよびデータ領域DATAにアクセスすることができ、データの削除および主記憶装置400への書き戻しを実行することができる。使用しないウェイWAYに供給されるクロックRAMCLKの停止により、ウェイWAYの動作を停止することで、他の手法によりウェイWAYの動作を停止する場合に比べて、キャッシュメモリ500の消費電力を簡易な機構で削減することができる。
また、ウェイマスクレジスタ18のマスクビットMSK7−MSK0を書き換える命令をアプリケーションプログラムに埋め込むことなく、使用するウェイWAYを変更することができる。換言すれば、アプリケーションプログラムを変更せずに、使用するウェイWAYを変更することができる。
図13は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図13に示す演算処理装置100Aは、図2に示すキャッシュメモリ500および電力制御部22の代わりにキャッシュメモリ500Aおよび電力制御部22Aを有する。演算処理装置100Aのその他の構成は、図2に示す演算処理装置100と同様である。
電力制御部22Aは、マスクビットMSK0−MSK7の値とパージ信号PURGとに基づいて、クロックRAMCLK(RAMCLK0−RAMCLK7)および電源制御信号PWR(PWR0−PWR7)を出力する機能を有する。電力制御部22Aの例は、図15に示される。
図14は、図13に示すキャッシュメモリ500Aの要部の一例を示す。キャッシュメモリ500Aは、図3および図4に示すキャッシュメモリ500に、ウェイWAY(WAY0−WAY7)に接続される電源スイッチPT(PT0−PT7)を追加している。キャッシュメモリ500Aのその他の構成は、電源スイッチPTに電源制御信号PWR(PWR0−PWR7)が供給されることを除き、図3および図4に示すキャッシュメモリ500と同様である。なお、各ウェイWAY0−WAY7は、電気的に互いに分離しており、例えば、ウェイWAY0に供給された電源電圧VDDは、ウェイWAY0内のみで使用される。
各電源スイッチPTは、電源線VDDと各ウェイWAYの電源端子との間に配置されたpチャネルMOS(Metal Oxide Semiconductor)トランジスタを含む。pチャネルMOSトランジスタは、ゲートでロウレベルの電源制御信号PWRを受信している間、電源電圧VDDをウェイWAYに供給し、ゲートでハイレベルの電源制御信号PWRを受信している間、電源電圧VDDのウェイWAYへの供給を停止する。すなわち、キャッシュメモリ500Aは、電源電圧VDDを動的に停止するパワーゲーティング手法を採用している。ウェイWAYへの電源電圧VDDの供給を停止することで、ウェイWAYの電源線VDDと接地線との間に流れるリーク電流を抑止できるため、クロックRAMCLKを停止する場合に比べて、消費電力をさらに削減することができる。
図15は、図14に示す電力制御部22Aの一例を示す。図6に示す電力制御部22と同一または同様の要素については、詳細な説明は省略する。電力制御部22Aは、図6に示す電力制御部22に電源制御信号PWR(PWR0−PWR7)を生成する論理を追加している。各電源制御信号PWR(PWR0−PWR7)は、例えば、クロックイネーブル信号CKEN(CKEN0−CKEN7)の論理を反転することで生成される。この場合、クロックRAMCLKの出力が停止される期間と、電源制御信号PWRがハイレベルに設定され、ウェイWAYへの電源電圧VDDの供給が停止される期間とは、互いに重複する。
なお、電力制御部22Aは、クロックRAMCLK(RAMCLK0−RAMCLK7)を出力せずに、電源制御信号PWR(PWR0−PWR7)のみを出力してもよい。この場合にも、クロックRAMCLKを停止する場合と同様に、消費電力を削減することができる。
図16は、図13に示す演算処理装置100Aの動作の一例を示す。図10と同一または同様の動作については、詳細な説明は省略する。図16に示す動作は、電源制御信号PWR(PWR0−PWR7)の波形を図10に対して追加したことを除き、図10と同じである。
パージ処理の実行中、電源制御信号PWR(PWR0−PWR7)は、ロウレベルLに設定され、全てのウェイWAY0−WAY7に電源電圧VDDが供給される(図16(a)、(b))。一方、パージ処理の完了後、使用を停止するウェイWAYに対応する電源制御信号PWR(PWR0−PWR5またはPWR0−PWR3)は、ハイレベルに設定され、使用を停止するウェイWAYへの電源電圧VDDの供給が停止される(図16(c)、(d))。
以上、図13から図16に示す実施形態においても、図1から図12に示す実施形態と同様の効果を得ることができる。すなわち、使用しないウェイWAYの動作を停止して演算処理装置100の消費電力を削減する場合に、キャッシュメモリ500と主記憶装置400との間のコヒーレンシを維持することができる。また、置換ウェイ選択部24により、使用が停止されたウェイWAYがデータの置換対象となることを抑止することができ、演算処理装置100の誤動作を抑止することができる。パージ期間に、マスクビットMSKの値に拘わりなく、全てのウェイWAYを動作させることができ、データの削除および主記憶装置400への書き戻しを実行することができる。アプリケーションプログラムを変更せずに、使用するウェイWAYを変更することができる。また、演算処理装置100は、システムコールの引数がウェイマスクレジスタ18のマスクビットMSK7−MSK0の書き換える情報を含まない場合、デフォルトのマスクビットMSK7−MSK0の値をプロセスのコンテキストとして保持する。これにより、誤った設定がコンテキストとして保持されることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
さらに、図13から図16に示す実施形態では、使用を停止するウェイWAYへの電源電圧VDDの供給を停止することで、図2から図12に示す実施形態に比べて、演算処理装置100Aの消費電力をさらに削減することができる。
図17は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図2に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図17に示す演算処理装置100Bは、図2に示す演算処理装置100にエンコーダ26Bを追加している。演算処理装置100Bのその他の構成は、図2に示す演算処理装置100と同様である。
アクセス制御部16は、プロセッサコア200からのセット要求SETRQに含まれるデータNWAY(使用するウェイWAYの数を示す情報)とともに、ウェイマスクレジスタ18の情報を書き替えるマスクセット信号MSKSETを出力する。すなわち、この実施形態では、図10に示すset_use_wayコマンドの第1引数は、マスクビットMSK7−MSK0の値(”0xc0”、”0xf0”等)の代わりに、データNWAY(”2”、”4”等)が指定される。データNWAYは、使用するウェイWAYの数を示すウェイ数情報の一例である。
エンコーダ26Bは、使用するウェイWAYの数を示すデータNWAYをリクエストバッファ12、調停部14およびアクセス制御部16を介してプロセッサコア200から受信する。また、エンコーダ26Bは、受信したデータNWAYに基づいて、マスクビットMSK7−MSK0の値に対応するデータD7−D0を生成し、生成したデータD7−D0をウェイマスクレジスタ18に出力する。データD7−D0は、マスクセット信号MSKSETに同期して、マスクビットMSK7−MSK0としてウェイマスクレジスタ18に格納される。
例えば、set_use_wayコマンドの第1引数が”2”の場合、エンコーダ26Bは、ビット値”11000000”を示すデータD7−D0をウェイマスクレジスタ18に出力する。set_use_wayコマンドの第1引数が”4”の場合、エンコーダ26Bは、ビット値”11110000”を示すデータD7−D0をウェイマスクレジスタ18に出力する。第1引数の値に応じてハイレベルに設定されるビット位置(すなわち、使用を停止するウェイWAYの位置)は、上述の例に限定されず、ビット値”00110000”でもよく、ビット値”00111100”でもよい。
なお、エンコーダ26Bは、ウェイマスクレジスタ18内に設けられてもよい。この場合、ウェイマスクレジスタ18は、ウェイWAYの数を示すデータNWAYに基づいて、変更信号REGSETおよびマスクビットMSK0−MSK7を生成してもよい。エンコーダ26Bは、プロセッサコア200から受信したデータNWAYに基づいて、MSK0−MSK7に対応するデータD0−D7を生成し、生成したデータD0−D7をウェイマスクレジスタ18に格納する使用情報生成部の一例である。
以上、図17に示す実施形態においても、図13から図16に示す実施形態で説明したように、図1から図12に示す実施形態と同様の効果を得ることができる。さらに、図17に示す実施形態では、使用するウェイWAYの数を示すデータNWAYを受信する場合にも、エンコーダ26Bにより、ウェイマスクレジスタ18にマスクビットMSK0?MSK7を設定することができる。なお、図17に示すエンコーダ26Bは、図13に示す演算処理装置100Aおよび図18に示す演算処理装置100Cに追加されてもよい。
図18は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図18に示す演算処理装置100Cは、図2に示すウェイマスクレジスタ18およびパージ制御部20の代わりにウェイマスクレジスタ18Cおよびパージ制御部20Cを有する。演算処理装置100Cのその他の構成は、図2に示す演算処理装置100と同様である。
ウェイマスクレジスタ18Cは、マスクビットMSK0−MSK7の少なくもいずれかの論理値が反転した場合に変更信号REGSETを出力する機能を、図2に示すウェイマスクレジスタ18から削除している。マスクビットMSK0−MSK7の少なくもいずれかの論理値の反転は、パージ制御部20Cにより検出される。
パージ制御部20Cは、論理が”1”から”0”に変化したマスクビットMSK0−MSK7を検出する機能と、論理が”0”から”1”に変化したマスクビットMSK0−MSK7を検出する機能とを有する。また、パージ制御部20Cは、マスクビットMSK0−MSK7の少なくともいずれかの論理の変化に基づいて、リクエスト抑止信号RQHLD、削除要求DELRQおよびパージ信号PURGを出力する機能を有する。パージ制御部20Cの例は、図19に示される。
図19は、図18に示すパージ制御部20Cの一例を示す。パージ制御部20Cは、論理が”1”から”0”に変化したマスクビットMSK0−MSK7を検出する検出部FDETと、論理が”0”から”1”に変化したマスクビットMSK0−MSK7を検出する検出部RDETとを有する。また、パージ制御部20Cは、検出部FDET、RDETによる検出結果に基づいて、リクエスト抑止信号RQHLD、削除要求DELRQおよびパージ信号PURGを生成する信号生成部SGENを有する。
検出部FDETは、マスクビット信号MSK0−MSK7のそれぞれに対応して、インバータIV、フリップフロップFFおよびノアゲートNORを有する。各ノアゲートNORは、各マスクビット信号MSK0−MSK7と、各マスクビット信号MSK0−MSK7を反転した論理をフリップフロップFFで1クロックサイクル遅らせた信号とを受信する。そして、各ノアゲートNORは、受信した2つの信号の論理が互いにロウレベルの期間にハイレベルの検出パルス信号F(F0−F7)を出力する。すなわち、ノアゲートNORは、各マスクビットMSKの値と、各マスクビットMSKの値を反転した値とを受信し、マスクビットMSKの論理の”1”から”0”への変化に基づいてハイレベルの検出パルス信号F(F0−F7)を生成する。
検出部RDETは、マスクビット信号MSK0−MSK7のそれぞれに対応して、インバータIV、フリップフロップFFおよびアンドゲートANDを有する。各アンドゲートANDは、各マスクビット信号MSK0−MSK7と、各マスクビット信号MSK0−MSK7を反転した論理をフリップフロップFFで1クロックサイクル遅らせた信号とを受信する。そして、各アンドゲートANDは、受信した2つの信号の論理が互いにハイレベルの期間にハイレベルの検出パルス信号R(R0−R7)を出力する。すなわち、アンドゲートANDは、各マスクビットMSKの値と、各マスクビットMSKの値を反転した値とを受信し、マスクビットMSKの論理の”0”から”1”への変化に基づいてハイレベルの検出パルス信号R(R0−R7)を生成する。なお、マスクビットMSKの論理の”0”から”1”への変化は、各マスクビットMSKの値を示す信号と、各マスクビットMSKの値を遅延させた信号とを受信する排他的論理和回路を用いて検出されてもよい。
信号生成部SGENは、検出パルス信号F0−F7の少なくともいずれか、または検出パルス信号R0−R7の少なくともいずれかを受信した場合、リクエスト抑止信号RQHLDおよび削除要求DELRQをハイレベルに設定する。また、信号生成部SGENは、各検出パルス信号Fの受信に基づいて所定数の削除要求DELRQを出力し、削除要求DELRQの出力後にリクエスト抑止信号RQHLDおよび削除要求DELRQをロウレベルに戻す。各検出パルス信号Fの受信に基づいて出力される削除要求DELRQの数は、各ウェイWAYのデータ領域DATAのエントリの数(例えば、256回)に等しい。また、信号生成部SGENは、検出パルス信号F0−F7を受けることなく、検出パルス信号R0−R7の少なくともいずれかを受信した場合、ハイレベルに設定したリクエスト抑止信号RQHLDおよび削除要求DELRQを直ちにロウレベルに戻す。
ウェイWAYのデータ領域DATAに保持されたデータを削除するパージ処理は、使用を停止するウェイWAYで実行されればよく、使用を開始するウェイWAY、および使用中のウェイWAYでは省略することができる。これは、使用を停止中のウェイWAYのデータ領域DATAは、データを保持しておらず、各データ領域DATAに対応するタグ領域TAGは、データ領域DATAが無効であることを示すタグデータTAGDTを保持しているためである。このため、パージ制御部20Cは、使用を停止するウェイWAYのみでパージ処理を実行する。
図20は、図19に示すパージ制御部20Cが実行するパージ処理の一例を示す。図20において、網掛けで示すウェイWAYは使用される使用ウェイを示し、白抜きで示すウェイWAYは使用が停止される停止ウェイを示す。初期状態では、ウェイマスクレジスタ18の各マスクビットMSK[7:0]は”1”を保持しており、ウェイWAY0−WAY7は、使用ウェイに設定されている(図20(a))。
set_use_wayコマンド”set_use_way 0xc0 user_program1”の入力に基づいて、ウェイマスクレジスタ18のマスクビットMSK[7:0]は、”11000000”に変更される(図20(b))。マスクビットMSK[5:0]の論理1から論理0への変化に基づいて、パージ制御部20Cの検出部FDETは、ハイレベルの検出パルス信号F0−F5を生成する(図20(c))。検出パルス信号F6−F7および検出パルス信号R0−R7は、ロウレベルLに維持される(図20(d)、(e))。パージ制御部20Cの信号生成部SGENは、検出パルス信号F0−F5に基づいて、ウェイWAY0−WAY5に対する削除要求DELRQを順次出力し、アクセス制御部16にウェイWAY0−WAY5のパージ処理を実行させる(図20(f))。そして、ウェイWAY0−WAY5は停止ウェイに設定される。
次に、set_use_wayコマンド”set_use_way 0xf0 user_program2”の入力に基づいて、ウェイマスクレジスタ18のマスクビットMSK[7:0]は、”11110000”に変更される(図20(g))。マスクビットMSK[5:4]の論理0から論理1への変化に基づいて、パージ制御部20Cの検出部RDETは、ハイレベルの検出パルス信号R4−R5を生成する(図20(h))。検出パルス信号F0−F7および検出パルス信号R6−R7、R0−R3は、ロウレベルLに維持される(図20(i)、(j))。
マスクビットMSKが論理0から論理1に変化した場合、データ領域DATAが無効であるウェイWAYが停止ウェイから使用ウェイに設定されるだけのため、パージ処理を省略することができる。このため、パージ制御部20Cの信号生成部SGENは、マスクビットMSKが論理1から論理0に変化することなく、論理0から論理1に変化した場合、削除要求DELRQを生成しない。これにより、パージ処理の実行は省略される。なお、図21に示すように、パージ処理が実行されない場合にも、信号生成部SGENは、検出パルス信号R4−R5に基づいて、リクエスト抑止信号RQHLDおよびパージ信号PURGを一時的にハイレベルに設定する。そして、ウェイWAY4−WAY5は使用ウェイに設定される。
次に、set_use_wayコマンド”set_use_way 0xc0 user_program3”の入力に基づいて、ウェイマスクレジスタ18のマスクビットMSK[7:0]は、”11000000”に変更される(図20(k))。マスクビットMSK[5:4]の論理1から論理0への変化に基づいて、パージ制御部20Cの検出部FDETは、ハイレベルの検出パルス信号F4−F5を生成する(図20(l))。検出パルス信号F6−F7、F0−F3および検出パルス信号R0−R7は、ロウレベルLに維持される(図20(m)、(n))。
パージ制御部20Cの信号生成部SGENは、検出パルス信号F4−F5に基づいて、ウェイWAY4−WAY5に対する削除要求DELRQを順次出力し、アクセス制御部16にウェイWAY3−WAY5のパージ処理を実行させる(図20(o))。そして、ウェイWAY4−WAY5は停止ウェイに設定される。
一方、パージ制御部20Cの信号生成部SGENは、検出パルス信号F0−F4を受けないウェイWAY0−WAY3に対する削除要求DELRQを出力しない。マスクビットMSKが論理0に維持される場合、データ領域DATAが無効であるウェイWAYは停止ウェイに維持されるため、パージ処理を省略することができる。このため、パージ制御部20Cの信号生成部SGENは、マスクビットMSK[7:0]のいずれかが論理1から論理0に変化する場合にも、マスクビットMSKが論理0に維持されるウェイWAYに対する削除要求DELRQを生成しない。
パージ制御部20Cは、パージ処理が省略できるウェイWAYに対する削除要求DELRQの出力を抑止することで、削除要求DELRQの出力を抑止しない場合に比べて、パージ処理に掛かる時間を短縮することができる。これにより、無駄なパージ処理により演算処理装置100Cの処理効率が低下することを抑止することができる。
図21は、図18に示す演算処理装置100Cの動作の一例を示す。図10と同一または同様の動作については、詳細な説明は省略する。図16において、2回目のset_use_wayコマンド”set_use_way 0xf0 user_program2”が入力されるまでの動作は、図10と同様である。なお、図21では、図10に示すクロックイネーブル信号CKEN0−CKEN7およびクロックRAMCLK0−RAMCLK7の波形を省略し、検出パルス信号F0−F7、R0−R7の波形を記載している。
信号生成部SGENは、検出パルス信号F0−F7のいずれかを受信した場合、リクエスト抑止信号RQHLDおよびパージ信号PURGをハイレベルに設定し、使用を停止するウェイWAYに対する削除要求DELRQを順次生成する(図21(a)、(b)、(c))。
一方、図20で説明したように、論理1から論理0に変化するマスクビットMSKが存在せず、マスクビットMSKのいずれかが論理0から論理1に変化する場合、パージ処理を省略することができる。このため、パージ制御部20Cの信号生成部SGENは、マスクビットMSKのいずれかが論理0から論理1のみに変化する場合、削除要求DELRQを生成しない(図21(d))。これにより、使用を停止させるウェイWAYが存在しない場合、パージ処理を省略することができる(図21(g))。信号生成部SGENは、論理0から論理1に変化したマスクビットMSKに対応する検出パルス信号R4−R5に基づいて、リクエスト抑止信号RQHLDおよびパージ信号PURGを一時的にハイレベルに設定する(図21(e)、(f))。なお、図19に示す信号生成部SGENは、検出パルス信号R0−R7のいずれかを受信した場合、リクエスト抑止信号RQHLDおよびパージ信号PURGのハイレベルへの設定を省略してもよい。この場合、図19に示す検出部RDETは省略することができ、パージ制御部20Cの内部状態であるパージ状態PURGSTは、ハイレベルに変化することなく、ロウレベルに維持される。
以上、図18から図21に示す実施形態においても、図13から図16に示す実施形態で説明したように、図1から図12に示す実施形態と同様の効果を得ることができる。さらに、図18から図21に示す実施形態では、使用を停止させるウェイWAYが存在しない場合、削除要求DELRQの出力を抑止することで、削除要求DELRQの出力を抑止しない場合に比べて、パージ処理に掛かる時間を短縮することができる。これにより、無駄なパージ処理により演算処理装置100Cの処理効率が低下することを抑止することができる。
なお、ウェイマスクレジスタ18Cおよびパージ制御部20Cは、図13または図17に示すウェイマスクレジスタ18およびパージ制御部20の代わりに配置されてもよい。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
命令を実行する演算処理部と、
複数のウェイを含むキャッシュメモリと、
前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、
前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、
前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、
前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有することを特徴とする演算処理装置。
(付記2)
前記演算処理装置はさらに、前記キャッシュメモリのキャッシュミス時に、前記下位の記憶装置から読み出すデータの格納先のウェイを、前記使用情報レジスタが保持する使用情報により使用が決定されたウェイの中から選択する置換ウェイ選択部を有し、
前記アクセス制御部は、前記置換ウェイ選択部が選択したウェイが保持するデータのいずれかを前記下位の記憶装置から読み出すデータに置換することを特徴とする付記1記載の演算処理装置。
(付記3)
前記電力制御部は、前記パージ処理中、前記使用情報レジスタが保持する使用情報に拘わりなく、前記複数のウェイを動作させることを特徴とする付記1または付記2記載の演算処理装置。
(付記4)
前記演算処理装置はさらに、使用するウェイの数を示すウェイ数情報を前記演算処理部から受信し、受信したウェイ数情報に基づいて前記使用情報を生成し、生成した使用情報を前記使用情報レジスタに格納する使用情報生成部を有することを特徴とする付記1ないし付記3のいずれか1項記載の演算処理装置。
(付記5)
前記パージ制御部は、前記使用情報レジスタに格納された使用情報の書き換えにより使用が停止されるウェイがない場合、前記パージ処理の実行を省略することを特徴とする付記1ないし付記4のいずれか1項記載の演算処理装置。
(付記6)
前記複数のウェイは、クロックに同期してそれぞれ動作し、
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの前記クロックの供給を停止することを特徴とする付記1ないし付記5のいずれか1項記載の演算処理装置。
(付記7)
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの電源の供給を停止することを特徴とする付記1ないし付記6のいずれか1項記載の演算処理装置。
(付記8)
前記パージ制御部は、前記使用情報レジスタが保持する使用情報の書き替えに基づいて、使用を停止するウェイが保持するデータを削除する削除要求と、前記パージ処理中を示すパージ情報とを前記アクセス制御部に出力し、
前記アクセス制御部は、前記メモリアクセス要求および前記削除要求に基づいて、前記キャッシュメモリにアクセスするとともに、前記パージ情報が出力されている期間に前記メモリアクセス要求に基づく前記キャッシュメモリのアクセスを抑止することを特徴とする付記1ないし付記7のいずれか1項記載の演算処理装置。
(付記9)
前記使用情報レジスタは、ビット値が第1の論理の場合にウェイの使用を示し、ビット値が前記第1の論理と異なる第2の論理の場合にウェイの使用の停止を示す複数のビットを前記複数のウェイにそれぞれ対応して有し、
前記演算処理装置はさらに、前記使用情報レジスタのビット値のいずれかの反転を検出した場合に、前記使用情報レジスタ内の使用情報が書き換えられたことを前記パージ制御部に通知する検出部を有することを特徴とする付記1ないし付記8のいずれか1項記載の演算処理装置。
(付記10)
命令を実行する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有する演算処理装置の制御方法において、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、前記演算処理装置が、
前記システムコールの引数が前記使用レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納することを特徴とする演算処理装置の制御方法。
(付記11)
実行中のプロセスを他のプロセスに切り替える場合、前記演算処理装置が、
前記実行中のプロセスに対応して前記使用情報レジスタが保持する使用情報をコンテキストとして退避し、
前記他のプロセスに対応してコンテキストとして保持した使用情報を前記使用情報レジスタに復帰することを特徴とする付記10記載の演算処理装置の制御方法。
(付記12)
命令を実行する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有する演算処理装置の制御プログラムにおいて、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、
前記システムコールの引数が前記使用レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納する処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御プログラム。
(付記13)
実行中のプロセスを他のプロセスに切り替える場合、
前記実行中のプロセスに対応して前記使用情報レジスタが保持する使用情報をコンテキストとして退避し、
前記他のプロセスに対応してコンテキストとして保持した使用情報を前記使用情報レジスタに格納する処理を前記演算処理装置に実行させることを特徴とする付記12記載の演算処理装置の制御プログラム。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。