(57)【特許請求の範囲】
【請求項１】
演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、
複数のウェイを含むキャッシュメモリと、
前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、
前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、
前記演算処理部から出力される前記メモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記メモリアクセス要求に基づく前記キャッシュメモリへのアクセスを抑止するアクセス制御部を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、前記キャッシュメモリのキャッシュミス時に、前記下位の記憶装置から読み出すデータの格納先のウェイを、前記使用情報レジスタが保持する使用情報により使用が決定されたウェイの中から選択する置換ウェイ選択部を有し、
前記アクセス制御部は、前記置換ウェイ選択部が選択したウェイが保持するデータのいずれかを前記下位の記憶装置から読み出すデータに置換することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、使用するウェイの数を示すウェイ数情報を前記演算処理部から受信し、受信したウェイ数情報に基づいて前記使用情報を生成し、生成した使用情報を前記使用情報レジスタに格納する使用情報生成部を有することを特徴とする請求項１または請求項２記載の演算処理装置。
【請求項４】
前記パージ制御部は、前記使用情報レジスタに格納された使用情報の書き換えにより使用が停止されるウェイがない場合、前記パージ処理の実行を省略することを特徴とする請求項１ないし請求項３のいずれか１項記載の演算処理装置。
【請求項５】
前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有することを特徴とする請求項１ないし請求項４のいずれか１項記載の演算処理装置。
【請求項６】
前記電力制御部は、前記パージ処理中、前記使用情報レジスタが保持する使用情報に拘わりなく、前記複数のウェイを動作させることを特徴とする請求項５記載の演算処理装置。
【請求項７】
前記複数のウェイは、クロックに同期してそれぞれ動作し、
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの前記クロックの供給を停止することを特徴とする請求項５または請求項６記載の演算処理装置。
【請求項８】
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの電源の供給を停止することを特徴とする請求項５ないし請求項７のいずれか１項記載の演算処理装置。
【請求項９】
演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力される前記メモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記メモリアクセス要求に基づく前記キャッシュメモリへのアクセスを抑止するアクセス制御部を有する演算処理装置の制御方法において、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、前記演算処理装置が、
前記システムコールの引数が前記使用情報レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用情報レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納することを特徴とする演算処理装置の制御方法。
【請求項１０】
演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力される前記メモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記メモリアクセス要求に基づく前記キャッシュメモリへのアクセスを抑止するアクセス制御部を有する演算処理装置の制御プログラムにおいて、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、
前記システムコールの引数が前記使用情報レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用情報レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納する処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムに関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の演算処理装置は、主記憶装置が記憶する情報の一部を保持するキャッシュメモリを設けることで、データ処理の高速化を図っている。演算処理装置が実行する命令を記憶するキャッシュメモリは、命令キャッシュとも称され、演算処理装置が処理するデータを記憶するキャッシュメモリは、データキャッシュとも称される。
【０００３】
複数のウェイを有するセットアソシアティブ方式の命令キャッシュにおいて、ウェイのいずれかを使用してダイレクトマップ方式として動作させることで、複数のウェイを動作する場合に比べて消費電力を削減する手法が提案されている（例えば、特許文献１参照）。また、セットアソシアティブ方式の命令キャッシュにおいて、専用命令の実行に基づいて、予め決められたウェイの動作を停止することで、全てのウェイを動作させる場合に比べて消費電力を削減する手法が提案されている（例えば、特許文献２参照）。なお、命令キャッシュに保持される命令は、書き換えられないため、命令キャッシュが保持する命令と主記憶装置が保持する命令とのコヒーレンシ（一貫性）は維持される。
【０００４】
さらに、プログラムによる指示に基づいて、複数のウェイの所定数をオンチップメモリの用途に切り替えることで、プログラムの特性に応じてキャッシュメモリを有効に使用する手法が提案されている（例えば、特許文献３参照）。オンチップメモリとして使用するウェイが保持するデータは、オンチップメモリに切り替えられる前に主記憶装置に書き戻される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１３１９４５号公報
【特許文献２】特開２０００−２９８６１８号公報
【特許文献３】特開２００８−３１０４６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャッシュメモリ上でデータが書き換えられた場合、キャッシュメモリが保持するデータと主記憶装置が保持するデータとのコヒーレンシは維持されなくなる。セットアソシアティブ方式のキャッシュメモリにおいて、消費電力を削減するために複数のウェイの所定数の動作を停止する場合、動作を停止するウェイに保持されたデータは削除される。削除されるデータのうちキャッシュメモリ上で書き換えられたデータは、コヒーレンシを維持するために主記憶装置に書き戻される。しかしながら、キャッシュメモリ上で書き換えられたデータが主記憶装置に書き戻される前に、削除したデータに対するメモリアクセス要求が発生した場合、書き戻される前の古いデータが主記憶装置からキャッシュメモリに転送されるおそれがある。
【０００７】
１つの側面では、本件開示の演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムは、使用しないウェイの動作を停止して演算処理装置の消費電力を削減する場合に、コヒーレンシを維持することを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、演算処理装置は、演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、複数のウェイを含むキャッシュメモリと、複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、演算処理部が実行する命令による使用情報レジスタ内の使用情報の書き換えに基づいて、複数のウェイのうち使用を停止する停止ウェイに保持されたデータをキャッシュメモリから削除する処理と、削除するデータのうちキャッシュメモリ上で書き換えられたデータをキャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、演算処理部から出力される前記メモリアクセス要求に基づいてキャッシュメモリにアクセスするとともに、パージ処理中に前記メモリアクセス要求に基づくキャッシュメモリへのアクセスを抑止するアクセス制御部を有する。
【０００９】
別の観点によれば、演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、複数のウェイを含むキャッシュメモリと、複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、演算処理部が実行する命令による使用情報レジスタ内の使用情報の書き換えに基づいて、複数のウェイのうち使用を停止する停止ウェイに保持されたデータをキャッシュメモリから削除する処理と、削除するデータのうちキャッシュメモリ上で書き換えられたデータをキャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、演算処理部から出力される前記メモリアクセス要求に基づいてキャッシュメモリにアクセスするとともに、パージ処理中に前記メモリアクセス要求に基づくキャッシュメモリへのアクセスを抑止するアクセス制御部を有する演算処理装置の制御方法において、プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、演算処理装置が、システムコールの引数が使用情報レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、引数が使用情報レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタに格納する。
【００１０】
さらなる別の観点によれば、演算命令を実行するとともにメモリアクセス命令に基づいてメモリアクセス要求を出力する演算処理部と、複数のウェイを含むキャッシュメモリと、複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、演算処理部が実行する命令による使用情報レジスタ内の使用情報の書き換えに基づいて、複数のウェイのうち使用を停止する停止ウェイに保持されたデータをキャッシュメモリから削除する処理と、削除するデータのうちキャッシュメモリ上で書き換えられたデータをキャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、演算処理部から出力される前記メモリアクセス要求に基づいてキャッシュメモリにアクセスするとともに、パージ処理中に前記メモリアクセス要求に基づくキャッシュメモリへのアクセスを抑止するアクセス制御部を有する演算処理装置の制御プログラムにおいて、プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、システムコールの引数が使用情報レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、引数が使用情報レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタに格納する処理を演算処理装置に実行させる。
【発明の効果】
【００１１】
本件開示の演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムは、使用しないウェイの動作を停止して演算処理装置の消費電力を削減する場合に、コヒーレンシを維持することができる。
【図面の簡単な説明】
【００１２】
【図１】演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの一実施形態を示す図である。
【図２】演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す図である。
【図３】図２に示すキャッシュメモリの要部の一例を示す図である。
【図４】図２に示すキャッシュメモリの他の要部の一例を示す図である。
【図５】図２に示すウェイマスクレジスタの一例を示す図である。
【図６】図２に示す電力制御部の一例を示す図である。
【図７】図２に示すウェイマスクレジスタの値を、プロセスを生成するシステムコールに基づいて変更する処理の一例を示す図である。
【図８】図２に示す演算処理装置において、システムコールによりプロセスが生成される場合の処理の一例を示す図である。
【図９】図２に示す演算処理装置がプロセスを切り替える場合のコンテキストの処理の一例を示す図である。
【図１０】図２に示す演算処理装置の動作の一例を示す図である。
【図１１】図２に示すパージ制御部の動作の一例を示す図である。
【図１２】図２に示す置換ウェイ選択部の動作の一例を示す図である。
【図１３】演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す図である。
【図１４】図１３に示すキャッシュメモリの要部の一例を示す図である。
【図１５】図１４に示す電力制御部の一例を示す図である。
【図１６】図１３に示す演算処理装置の動作の一例を示す図である。
【図１７】演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す図である。
【図１８】演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す図である。
【図１９】図１８に示すパージ制御部の一例を示す図である。
【図２０】図１９に示すパージ制御部が実行するパージ処理の一例を示す図である。
【図２１】図１８に示す演算処理装置の動作の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施形態を説明する。
【００１４】
図１は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの一実施形態を示す。図１に示す演算処理装置１は、ＣＰＵ等のプロセッサであり、プロセッサコア２、使用情報レジスタ３、パージ制御部４、アクセス制御部５、電力制御部６およびキャッシュメモリ７を有する。
【００１５】
プロセッサコア２は、演算命令を実行するとともに、ロード命令またはストア命令等のメモリアクセス命令に基づいて、アクセス制御部５にメモリアクセス要求を出力する演算処理部の一例である。また、プロセッサコア２は、使用情報レジスタ３に格納された使用情報を書き替える命令（例えば、ストア命令）を実行する。使用情報レジスタ３は、キャッシュメモリ７が有する複数のウェイＷＡＹ（ＷＡＹ０−ＷＡＹ１）の各々を使用するか否かを示す使用情報を保持する。
【００１６】
例えば、演算処理装置１は、プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、プロセスを生成する。演算処理装置１は、システムコールの引数が、使用情報レジスタ３に格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキスト（演算処理装置１の状態）としてコンテキスト領域に保持する。また、演算処理装置１は、システムコールの引数が、使用情報レジスタ３に格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして、コンテキストを記憶するコンテキスト領域に保持する。コンテキスト領域は、主記憶装置８等に割り当てられる。そして、演算処理装置１は、システムコールに基づいて、コンテキスト領域にコンテキストとして保持した使用情報を使用情報レジスタ３に設定する。
【００１７】
例えば、デフォルトの使用情報は、全てのウェイＷＡＹ０−ＷＡＹ１の使用を示す。システムコールに基いて使用情報をコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタ３に設定する処理は、ＯＳ（Operating System）等のプログラムにより実行される。すなわち、システムコールに基いて、使用情報をコンテキストとして保持し、コンテキストとして保持した使用情報を使用情報レジスタ３に設定する処理は、演算処理装置１の制御方法および演算処理装置１の制御プログラムにより実現される。
【００１８】
システムコールの引数が使用情報を含まない場合、デフォルトの使用情報をプロセスのコンテキストとして保持することで、例えば、全てのウェイＷＡＹを使用しないといった誤った使用情報が使用情報レジスタ３に設定されることを抑止することができる。これにより、キャッシュメモリ７にデータが保持されない設定になることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
【００１９】
パージ制御部４は、プロセッサコア２が実行する命令により書き換えられた使用情報レジスタ３内の使用情報に基づいて、使用を停止するウェイＷＡＹを判定する。そして、パージ制御部４は、使用を停止するウェイＷＡＹが保持するデータをキャッシュメモリ７から削除する処理と、削除するデータを主記憶装置８に書き戻す処理とを含むパージ処理を実行する。データの主記憶装置８への書き戻しは、削除したデータがキャッシュメモリ７上で書き換えられている場合に実行される。主記憶装置８は、キャッシュメモリ７より下位の記憶装置の一例である。パージ制御部４は、パージ処理の実行中、パージ情報をアクセス制御部５および電力制御部６に出力する。なお、パージ制御部４は、アクセス制御部５を介してパージ処理を実行してもよい。
【００２０】
アクセス制御部５は、プロセッサコア２からのメモリアクセス要求に基づいて、キャッシュメモリ７にアクセスし、アクセス対象のデータをキャッシュメモリ７が保持していない場合（キャッシュミス）、主記憶装置８にアクセスする。ここで、アクセス制御部５は、使用情報レジスタ３に格納された使用情報に基づいて、使用されるウェイＷＡＹにアクセスし、使用が停止されたウェイＷＡＹにはアクセスしない。また、アクセス制御部５は、パージ情報の受信中（すなわち、パージ処理中）、プロセッサコア２からのメモリアクセス要求に基づくキャッシュメモリ７のアクセスを抑止する。
【００２１】
図１に示す演算処理装置１では、データを削除するウェイＷＡＹに含まれていたデータが主記憶装置８に書き戻されるまで、新規のメモリアクセス要求に基づくキャッシュメモリ７のアクセスは抑止される。これにより、新規のメモリアクセス要求（キャッシュミス）により、主記憶装置８から古いデータが読み出されることを抑止することができる。すなわち、パージ処理中に、メモリアクセス要求に基づくキャッシュメモリ７のアクセスを保留することで、キャッシュメモリ７上で書き換えられたダーティなデータに対応する古いデータが主記憶装置８からキャッシュメモリ７に転送されることを抑止することができる。これにより、キャッシュメモリ７と主記憶装置８との間のコヒーレンシを維持することができ、演算処理装置１が誤動作することを抑止することができる。
【００２２】
これに対して、パージ処理中にキャッシュメモリ７のアクセスを抑止しない場合、キャッシュメモリ７と主記憶装置８との間のコヒーレンシが維持されなくなる。例えば、データを削除するウェイＷＡＹ１に含まれていたダーティなデータのアドレスに対する新規の読み出しアクセス要求が発行された場合、キャッシュミスとなる。キャッシュミスにより、新規の読み出しアクセス要求に基づいて主記憶装置８から読み出された古いデータは、キャッシュメモリ７の有効なウェイＷＡＹ０に格納され、コヒーレンシが維持されなくなる。
【００２３】
電力制御部６は、パージ情報に基づいて、パージ処理が実行中であるか否かを判定する。また、電力制御部６は、使用情報レジスタ３に保持された使用情報に基づいて使用を停止するウェイＷＡＹを判定し、パージ制御部４によるパージ処理の完了後、使用の停止を判定したウェイＷＡＹの動作を停止する。使用しないウェイＷＡＹの動作を停止することで、演算処理装置１の消費電力を、使用しないウェイＷＡＹの動作を停止しない場合に比べて削減することができる。
【００２４】
例えば、キャッシュメモリ７は、クロックに同期して動作する。電力制御部６は、使用を停止するウェイＷＡＹへのクロックの供給を停止することでウェイＷＡＹの動作を停止し、あるいは、使用を停止するウェイＷＡＹへの電源の供給を停止することでウェイＷＡＹの動作を停止する。さらに、電力制御部６は、使用を停止するウェイＷＡＹへのクロックの供給と電源の供給との両方を停止してもよい。
【００２５】
キャッシュメモリ７は、例えば、データキャッシュであり、演算処理装置１に接続される主記憶装置８が記憶するデータの一部を記憶する複数のウェイＷＡＹ（ＷＡＹ０、ＷＡＹ１）を有する。各ウェイＷＡＹは、主記憶装置８から読み出されるデータをそれぞれ保持する複数の記憶領域を有する。なお、ウェイＷＡＹの数は、３以上でもよい。また、キャッシュメモリ７は、プロセッサコア２が処理するデータと、プロセッサコア２が実行する命令（命令コード）の両方を記憶してもよい。また、命令コードがキャッシュメモリ７上で書き換えられる可能性がある場合、キャッシュメモリ７は、命令コードを記憶してもよい。
【００２６】
以上、図１に示す実施形態では、使用しないウェイＷＡＹの動作を停止して演算処理装置１の消費電力を削減する場合に、キャッシュメモリ７と主記憶装置８との間のコヒーレンシを維持することができる。また、システムコールの引数が使用情報レジスタ３に格納する使用情報を含まない場合、デフォルトの使用情報をプロセスのコンテキストとして保持することで、誤った設定がコンテキストとして保持されることを抑止することができる。この結果、生成されるプロセスの処理効率が低下することを抑止することができる。
【００２７】
図２は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図２に示す演算処理装置１００は、ＣＰＵ等のプロセッサであり、プロセッサコア２００およびキャッシュメモリ部３００を有する。演算処理装置１００は、主記憶装置４００とともに情報処理装置に搭載される。なお、主記憶装置４００は、メモリ制御装置を介して演算処理装置１００に接続されてもよい。主記憶装置４００は、キャッシュメモリ５００より下位の記憶装置の一例である。
【００２８】
キャッシュメモリ部３００は、キャッシュメモリ５００と、キャッシュメモリ５００の動作を制御するキャッシュ制御部６００とを有する。キャッシュメモリ５００は、プロセッサコア２００が処理するデータを記憶してもよく、プロセッサコア２００が処理するデータと、プロセッサコア２００が実行する命令（命令コード）の両方を記憶してもよい。また、命令コードがキャッシュメモリ５００上で書き換えられる可能性がある場合、キャッシュメモリ５００は、命令コードを記憶してもよい。
【００２９】
キャッシュメモリ５００は、クロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）にそれぞれ同期して動作するウェイＷＡＹ（ＷＡＹ０−ＷＡＹ７）を有する。また、キャッシュメモリ５００は、プロセッサコア２００から出力されるアドレスの中位のビット群により示されるインデックスアドレスＩＤＸＡＤにより識別される複数のエントリを有する。図３に示すように、各エントリは、ウェイＷＡＹ（ＷＡＹ０−ＷＡＹ７）毎にタグ領域ＴＡＧ（ＴＡＧ０−ＴＡＧ７）とデータ領域ＤＡＴＡ（ＤＡＴＡ０−ＤＡＴＡ７）とを有する。なお、キャッシュメモリ５００が有するウェイＷＡＹの数は２以上であればよい。
【００３０】
キャッシュ制御部６００は、リクエストバッファ１２、調停部１４、アクセス制御部１６、ウェイマスクレジスタ１８、パージ制御部２０および電力制御部２２を有する。
【００３１】
リクエストバッファ１２は、プロセッサコア２００から出力されるメモリアクセス要求ＭＡＲＱまたはウェイマスクレジスタ１８のセット要求ＳＥＴＲＱを順次保持し、保持した要求ＭＡＲＱ、ＳＥＴＲＱを調停部１４に出力する。なお、演算処理装置１００は、複数のプロセッサコア２００を有してもよく、この場合、キャッシュ制御部６００は、複数のプロセッサコア２００毎にリクエストバッファを有する。また、キャッシュ制御部６００は、演算処理装置１００の外部から供給されるメモリアクセス要求を保持するリクエストバッファを有してもよい。
【００３２】
調停部１４は、リクエストバッファ１２から受信するメモリアクセス要求ＭＡＲＱおよびセット要求ＳＥＴＲＱと、パージ制御部２０から受信する削除要求ＤＥＬＲＱとを調停する。調停部１４は、調停により選択したメモリアクセス要求ＭＡＲＱ、セット要求ＳＥＴＲＱまたは削除要求ＤＥＬＲＱのいずれかをアクセス制御部１６に出力する。例えば、セット要求ＳＥＴＲＱは、プロセッサコア２００がウェイマスクレジスタ１８にビット値を書き込むストア命令を実行することで生成される。
【００３３】
調停部１４は、パージ制御部２０からリクエスト抑止信号ＲＱＨＬＤを受信している間、リクエストバッファ１２から受信するメモリアクセス要求ＭＡＲＱの調停を停止し、メモリアクセス要求ＭＡＲＱのアクセス制御部１６への出力を抑止する。すなわち、リクエスト抑止信号ＲＱＨＬＤが出力されている間、メモリアクセス要求ＭＡＲＱに伴うキャッシュメモリ５００のアクセスは抑止される。
【００３４】
また、調停部１４は、リクエスト抑止信号ＲＱＨＬＤを受信している間にパージ制御部２０から受信する削除要求ＤＥＬＲＱをアクセス制御部１６に出力する。削除要求ＤＥＬＲＱは、キャッシュメモリ５００の所定数のウェイＷＡＹの使用を停止する場合に、使用を停止するウェイＷＡＹが保持するデータを削除するために生成される。ウェイＷＡＹから削除したデータが、キャッシュメモリ５００上で書き換えられた場合、削除したデータは、主記憶装置４００に書き戻される。なお、調停部１４は、アクセス制御部１６内に配置されてもよい。すなわち、アクセス制御部１６が、調停部１４の機能を有してもよい。
【００３５】
アクセス制御部１６は、置換ウェイ選択部２４を有する。アクセス制御部１６は、調停部１４から受信するメモリアクセス要求ＭＡＲＱに含まれるアドレスをインデックスアドレスＩＤＸＡＤおよびタグアドレスＴＡＧＡＤとしてキャッシュメモリ５００に出力する。タグアドレスＴＡＧＡＤは、プロセッサコア２００から出力されるアドレスの上位のビット群により示され、インデックスアドレスＩＤＸＡＤで示されるエントリにおけるタグ領域ＴＡＧ（図３）に格納される。
【００３６】
アクセス制御部１６は、キャッシュメモリ５００からヒット信号ＨＩＴを受信した場合、メモリアクセス要求ＭＡＲＱに含まれるアドレスに対応するデータをキャッシュメモリ５００が記憶していると判定する（キャッシュヒット）。データを読み出すメモリアクセス要求ＭＡＲＱがキャッシュヒットと判定された場合、キャッシュメモリ５００から読み出されたデータＤＴは、プロセッサコア２００に出力される。データを書き込むメモリアクセス要求ＭＡＲＱがキャッシュヒットと判定された場合、アクセス制御部１６は、キャッシュヒットと判定されたウェイＷＡＹのデータ領域ＤＡＴＡ（図３）にデータを書き込む。また、アクセス制御部１６は、データ領域ＤＡＴＡに書き込んだデータが主記憶装置４００に記憶された元のデータと異なることを示す情報を、キャッシュヒットしたウェイＷＡＹのタグ領域ＴＡＧに書き込む。
【００３７】
一方、アクセス制御部１６は、ヒット信号ＨＩＴを受信しない場合、メモリアクセス要求ＭＡＲＱに含まれるアドレスに対応するデータをキャッシュメモリ５００が記憶していないと判定する（キャッシュミス）。キャッシュミスが判定された場合、アクセス制御部１６は、メモリアクセス要求ＭＡＲＱに対応するメモリアクセス要求ＡＲＱ（読み出し要求）を主記憶装置４００に出力する。また、アクセス制御部１６は、置換ウェイ選択部２４を用いて、インデックスアドレスＩＤＸＡＤで示されるエントリ内のウェイＷＡＹ（データ領域ＤＡＴＡ）のうち、主記憶装置４００から読み出されるデータと置換するデータを保持するウェイＷＡＹを決定する。
【００３８】
アクセス制御部１６は、置換するデータを保持するデータ領域ＤＡＴＡに対応するタグ領域ＴＡＧに保持されたタグデータＴＡＧＤＴを読み出し、タグデータＴＡＧＤＴに基づいて、置換するデータがキャッシュメモリ５００上で書き換えられたか否かを判定する。アクセス制御部１６は、置換するデータがキャッシュメモリ５００上で書き換えられた場合、置換するデータ（すなわち、追い出すデータ）を主記憶装置４００に書き戻すメモリアクセス要求ＡＲＱ（書き込み要求）を主記憶装置４００に出力する。そして、アクセス制御部１６は、追い出すデータに対応するタグ領域ＴＡＧに、データ領域ＤＡＴＡが無効であることを示すタグデータＴＡＧＤＴを書き込む。
【００３９】
アクセス制御部１６は、メモリアクセス要求ＡＲＱ（読み出し要求）に基づいて主記憶装置４００から読み出されたデータＭＤＴを、データを追い出したデータ領域ＤＡＴＡに書き込む。また、アクセス制御部１６は、データを書き込んだデータ領域ＤＡＴＡに対応するタグ領域ＴＡＧに、データが有効であることを示す情報と、データがキャッシュメモリ５００上で書き換えられていないことを示す情報とを書き込む。
【００４０】
メモリアクセス要求ＭＡＲＱが書き込み要求の場合、アクセス制御部１６は、調停部１４から受信した書き込みデータをデータＭＤＴにマージした後、マージしたデータＭＤＴを、データを追い出したデータ領域ＤＡＴＡに書き込む。メモリアクセス要求ＭＡＲＱが読み出し要求の場合、キャッシュメモリ５００は、データＭＤＴのうち、メモリアクセス要求ＭＡＲＱで要求されたデータをプロセッサコア２００に出力する。なお、データＭＤＴを読み書きするウェイＷＡＹは、アクセス制御部１６が生成するウェイ選択信号ＷＳＥＬにより選択される。
【００４１】
一方、アクセス制御部１６は、調停部１４から削除要求ＤＥＬＲＱを受信した場合、削除要求ＤＥＬＲＱに含まれるウェイＷＡＹの番号とインデックスアドレスＩＤＸＡＤとにより示されるデータ領域ＤＡＴＡに記憶されたデータを削除する処理を実行する。データの削除は、タグ領域ＴＡＧに無効を示す情報を書き込むことで実行される。また、タグ領域ＴＡＧに記憶された情報に基づいて、削除するデータがキャッシュメモリ５００上で書き換えられたことが判明した場合、アクセス制御部１６は、メモリアクセス要求ＡＲＱ（書き込み要求）を主記憶装置４００に出力し、削除するデータを主記憶装置４００に書き戻す。
【００４２】
さらに、アクセス制御部１６は、調停部１４からセット要求ＳＥＴＲＱを受信した場合、マスクセット信号ＭＳＫＳＥＴを生成し、セット要求ＳＥＴＲＱに含まれるビット値Ｄ０−Ｄ７をマスクセット信号ＭＳＫＳＥＴに同期して出力する。これにより、ウェイマスクレジスタ１８が書き換えられ、ウェイマスクレジスタ１８は、ビット値Ｄ０−Ｄ７をマスクビットＭＳＫ０−ＭＳＫ７として保持する。なお、ウェイマスクレジスタ１８のマスクビットＭＳＫ０−ＭＳＫ７は、アクセス制御部１６を介することなく、セット要求ＳＥＴＲＱを受信する調停部１４または他の制御部により書き換えられてもよい。
【００４３】
置換ウェイ選択部２４は、ウェイマスクレジスタ１８に保持されたマスクビットＭＳＫ０−ＭＳＫ７の値に基づいて、使用中のウェイＷＡＹと使用を停止しているウェイＷＡＹとを判別する。そして、置換ウェイ選択部２４は、使用中のウェイＷＡＹの中からキャッシュミス時にデータを置換するウェイＷＡＹを決定する。置換可能な複数のウェイＷＡＹがある場合、置換ウェイ選択部２４は、参照されていない時間が最も長いデータを置換の対象にするＬＲＵ（Least Recently Used）手法等に基づいてデータを置換するウェイＷＡＹを決定する。
【００４４】
ＬＲＵを判定するためのＬＲＵ情報は、エントリ毎にタグ領域ＴＡＧ（図３）内に保持される。各エントリにおいてタグ領域ＴＡＧ内に保持されるＬＲＵ情報は、使用中のウェイＷＡＹの各エントリのデータ領域ＤＡＴＡのそれぞれが参照されていない時間を示す情報を含む。これにより、マスクビットＭＳＫ０−ＭＳＫ７の値に対応して使用されないウェイＷＡＹが存在する場合にも、ＬＲＵ手法に基づいて、データを置換するウェイＷＡＹを決定することができる。この結果、使用が停止されたウェイＷＡＹがデータの置換対象となることを抑止することができ、演算処理装置１００の誤動作を抑止することができる。なお、ＬＲＵを判定するためのＬＲＵ情報は、キャッシュメモリ５００とは異なる記憶領域であって、置換ウェイ選択部２４により参照可能な記憶領域に保持されてもよい。置換ウェイ選択部２４の動作の例は、図１２に示される。なお、置換ウェイ選択部２４は、アクセス制御部１６の外部に配置されてもよい。
【００４５】
ウェイマスクレジスタ１８は、マスクセット信号ＭＳＫＳＥＴに基づいて、マスクセット信号ＭＳＫＳＥＴとともに受信するビット値Ｄ０−Ｄ７を、マスクビットＭＳＫ０−ＭＳＫ７として保持する。例えば、ウェイマスクレジスタ１８は、カーネルモードにおいてアクセスされるメモリ空間に割り当てられる。マスクビットＭＳＫ０−ＭＳＫ７は、キャッシュメモリ５００のウェイＷＡＹ０−ＷＡＹ７にそれぞれ対応しており、”１”は、使用するウェイＷＡＹを示し、”０”は、使用を停止するウェイＷＡＹを示す。図２に示す例は、ウェイＷＡＹ６−ＷＡＹ７が使用され、ウェイＷＡＹ０−ＷＡＹ５の使用が停止される状態を示す。
【００４６】
ウェイマスクレジスタ１８は、保持したマスクビットＭＳＫ０−ＭＳＫ７をパージ制御部２０、電力制御部２２および置換ウェイ選択部２４に出力する。また、ウェイマスクレジスタ１８は、マスクビットＭＳＫ０−ＭＳＫ７の少なくもいずれかの論理値が反転したことを検出した場合、変更信号ＲＥＧＳＥＴをパージ制御部２０に出力する。ウェイマスクレジスタ１８の例は、図５に示される。ウェイマスクレジスタ１８は、使用情報レジスタの一例であり、マスクビットＭＳＫ０−ＭＳＫ７の値は、各ウェイＷＡＹ０−ＷＡＹ７を使用するか否かを示す使用情報の一例である。
【００４７】
パージ制御部２０は、変更信号ＲＥＧＳＥＴを受信した場合、ウェイマスクレジスタ１８が保持するマスクビットＭＳＫ０−ＭＳＫ７の値に基づいて、リクエスト抑止信号ＲＱＨＬＤ、削除要求ＤＥＬＲＱおよびパージ信号ＰＵＲＧを出力する。パージ制御部２０の動作の例は、図１０および図１１で説明する。なお、パージ制御部２０は、リクエスト抑止信号ＲＱＨＬＤの代わりに、パージ信号ＰＵＲＧを調停部１４に出力してもよい。リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧは、使用を停止するウェイＷＡＹが保持するデータを削除して主記憶装置４００に書き戻すパージ処理の実行中を示すパージ情報の一例である。
【００４８】
電力制御部２２は、マスクビットＭＳＫ０−ＭＳＫ７とパージ制御部２０からのパージ信号ＰＵＲＧとに基づいて、キャッシュメモリ５００に供給されるクロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）の生成と停止とを制御する。クロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７は、キャッシュメモリ５００のウェイＷＡＹ０−ＷＡＹ７（図３）のそれぞれに供給される。電力制御部２２の例は、図６に示される。なお、電力制御部２２は、キャッシュ制御部６００またはキャッシュメモリ部３００の外部に配置されてもよい。
【００４９】
図３は、図２に示すキャッシュメモリ５００の要部の一例を示す。図３は、主に、キャッシュヒットおよびキャッシュミスの判定と、キャッシュヒット時のデータ領域ＤＡＴＡからのデータの読み出しに関係する要素を示す。
【００５０】
キャッシュメモリ５００は、８ウェイのセットアソシアティブ方式を採用しており、複数のウェイＷＡＹ（この例では、８個のＷＡＹ０−ＷＡＹ７）を含むＲＡＭ（Random Access Memory）を有する。各ウェイＷＡＹは、タグ領域ＴＡＧ（ＴＡＧ０−ＴＡＧ７）と、データ領域ＤＡＴＡ（ＤＡＴＡ０−ＤＡＴＡ７）とを有する。例えば、各ウェイＷＡＹは、プロセッサコア２００から出力されるアドレスの中位の８ビット［１３：６］を抜き出したインデックスアドレスＩＤＸＡＤに基づいて識別される２５６個のエントリを有する。以下の説明では、ウェイＷＡＹ０−ＷＡＹ７において共通のインデックスアドレスＩＤＸＡＤにより選択されるエントリは、セットとも称される。
【００５１】
各ウェイＷＡＹは、対応するクロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）に同期して動作し、クロックＲＡＭＣＬＫが停止された場合、動作を停止する。すなわち、各ウェイＷＡＹは、互いに独立にクロックＲＡＭＣＬＫを受信し、互いに独立に動作する。
【００５２】
各エントリにおけるデータ領域ＤＡＴＡは、６４バイトのデータＤＴを保持する。６４バイトのデータＤＴは、主記憶装置４００に読み書きされるデータのアクセス単位であり、各データ領域ＤＡＴＡは、キャッシュブロックまたはキャッシュラインとも称される。各エントリのタグ領域ＴＡＧは、データ領域ＤＡＴＡに保持されたデータの主記憶装置４００上でのアドレスの一部（所定数の上位ビット）であるタグアドレスＴＡＧＡＤと、データ領域ＤＡＴＡに保持されたデータの状態を示す制御情報とを保持する。例えば、制御情報は、データ領域ＤＡＴＡに記憶しているデータが有効か無効かを示す情報と、データ領域ＤＡＴＡに記憶しているデータが主記憶装置４００から転送された後に書き換えられたか否かを示す情報とを含む。
【００５３】
キャッシュメモリ５００は、各ウェイＷＡＹに対応するアドレス比較器ＡＣＭＰ、オア回路ＯＲおよびセレクタＳＥＬを有する。アドレス比較器ＡＣＭＰは、メモリアクセス要求ＭＡＲＱに含まれるアドレスの上位ビットであるタグアドレスＴＡＧＡＤと、インデックスアドレスＩＤＸＡＤに基づいてタグ領域ＴＡＧから読み出されるタグアドレスとを比較する。アドレス比較器ＡＣＭＰは、タグアドレスの比較結果をオア回路ＯＲとセレクタＳＥＬに出力する。
【００５４】
オア回路ＯＲは、アドレス比較器ＡＣＭＰから出力される比較結果のいずれかがタグアドレスの一致を示す場合、ヒット信号ＨＩＴを生成してアクセス制御部１６およびセレクタＳＥＬに出力する。セレクタＳＥＬは、ヒット信号ＨＩＴを受信した場合、タグアドレスの一致を示す情報を出力するアドレス比較器ＡＣＭＰに対応するウェイＷＡＹのデータ領域ＤＡＴＡから出力されるデータを選択し、データＤＴとして出力する。セレクタＳＥＬが選択したデータＤＴは、プロセッサコア２００に出力される。なお、キャッシュミス時に主記憶装置４００（図２）から読み出されるデータＭＤＴのうち、メモリアクセス要求で要求されたデータも、データＤＴとしてプロセッサコア２００に出力される。
【００５５】
図４は、図２に示すキャッシュメモリ５００の他の要部の一例を示す。説明を分かりやすくするため、ＲＡＭおよびクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７は、図３と重複させている。図４は、主に、タグ領域ＴＡＧのアクセスと、キャッシュミス時のデータ領域ＤＡＴＡから主記憶装置４００へのデータの書き戻しと、キャッシュミス時のデータ領域ＤＡＴＡへのデータの書き込みとに関係する要素を示す。
【００５６】
アクセス制御部１６は、タグ領域ＴＡＧにアクセスする場合、インデックスアドレスＩＤＸＡＤをキャッシュメモリ５００に出力し、タグデータＴＡＧＤＴの読み出しまたは書き込みを実行する。図４では、全てのタグ領域ＴＡＧに対してタグデータＴＡＧＤＴが並列に入出力されるが、アクセスするタグ領域ＴＡＧをチップセレクト信号等で指定して、タグ領域ＴＡＧ毎にタグデータＴＡＧＤＴを入出力してもよい。
【００５７】
アクセス制御部１６は、データを主記憶装置４００に書き戻す場合、インデックスアドレスＩＤＸＡＤと、書き戻すデータを保持するデータ領域ＤＡＴＡを含むウェイＷＡＹを選択するウェイ選択信号ＷＳＥＬとをキャッシュメモリ５００に出力する。キャッシュメモリ５００のＲＡＭは、各ウェイＷＡＹのデータ領域ＤＡＴＡにおいてインデックスアドレスＩＤＸＡＤにより選択されるエントリに保持されたデータを出力する。キャッシュメモリ５００のデータセレクタＤＴＳＥＬは、ウェイ選択信号ＷＳＥＬが示すウェイＷＡＹのデータ領域ＤＡＴＡから出力されたデータを選択し、選択したデータをデータＭＤＴとして主記憶装置４００に出力する。
【００５８】
なお、アクセス制御部１６は、キャッシュミス時に、どのウェイＷＡＹに保持されたデータを追い出すかを、置換ウェイ選択部２４を利用して、タグ領域ＴＡＧに保持されたＬＲＵ情報に基づいて判定する。データを追い出すウェイＷＡＹは、”１”に設定されたマスクビットＭＳＫに対応するウェイＷＡＹのタグ領域ＴＡＧに保持されたＬＲＵ情報に基づいて判定される。アクセス制御部１６は、データを追い出したデータ領域ＤＡＴＡに対応するタグ領域ＴＡＧに、データ領域ＤＡＴＡに保持されたデータが無効であることを示す情報を書き込む。
【００５９】
また、アクセス制御部１６は、データ領域ＤＡＴＡから追い出したデータを主記憶装置４００に書き戻すか否かを、例えば、タグ領域ＴＡＧに保持されたモディファイビットに基づいて判定する。モディファイビットが、データ領域ＤＡＴＡに保持されたデータが書き替えられたことを示す場合、書き戻しが実行される。モディファイビットが、データ領域ＤＡＴＡに保持されたデータが書き替えられていないことを示す場合（すなわち、主記憶装置４００に記憶されたデータと同じ）、書き戻しは実行されない。
【００６０】
アクセス制御部１６は、主記憶装置４００から読み出されるデータＭＤＴをＲＡＭに書き込む場合、インデックスアドレスＩＤＸＡＤと、データを書き込むウェイＷＡＹを示すウェイ選択信号ＷＳＥＬとをキャッシュメモリ５００に出力する。データセレクタＤＴＳＥＬは、主記憶装置４００から読み出されるデータＭＤＴを、ウェイ選択信号ＷＳＥＬが示すウェイＷＡＹのデータ領域ＤＡＴＡに出力する。ＲＡＭは、インデックスアドレスＩＤＸＡＤにより選択されるセットにおいてウェイ選択信号ＷＳＥＬが示すウェイＷＡＹのデータ領域ＤＡＴＡに、データセレクタＤＴＳＥＬから出力されるデータを書き込む。そして、キャッシュメモリ５００から主記憶装置４００へのデータの書き戻しと、主記憶装置４００からキャッシュメモリ５００へのデータの書き込みとにより、キャッシュメモリ５００に保持されたデータの置換処理が実行される。
【００６１】
図５は、図２に示すウェイマスクレジスタ１８の一例を示す。ウェイマスクレジスタ１８は、レジスタ部１８ａ、パルス生成部１８ｂおよび信号生成部１８ｃを有する。レジスタ部１８ａは、図２に示すアクセス制御部１６からのマスクセット信号ＭＳＫＳＥＴに同期してデータＤ０−Ｄ７をマスクビットＭＳＫ０−ＭＳＫ７と保持する複数の記憶部を有する。また、レジスタ１８ａは、保持したマスクビットＭＳＫ０−ＭＳＫ７をマスクビット信号ＭＳＫ０−ＭＳＫ７として出力する。
【００６２】
パルス生成部１８ｂは、マスクビット信号ＭＳＫ０−ＭＳＫ７のそれぞれに対応して、直列に接続された一対のインバータＩＶ、フリップフロップＦＦおよび排他的論理和ゲートＥＯＲを有する。各排他的論理和ゲートＥＯＲは、各マスクビット信号ＭＳＫ０−ＭＳＫ７と、各マスクビット信号ＭＳＫ０−ＭＳＫ７をフリップフロップＦＦで１クロックサイクル遅らせた信号とを受信し、受信した２つの信号の論理が互いに異なる期間にハイレベルを出力する。すなわち、パルス生成部１８ｂは、各マスクビットＭＳＫ０−ＭＳＫ７の論理が反転した場合に、ハイレベルのパルス信号を生成する。信号生成部１８ｃは、複数のオアゲートを有し、パルス生成部１８ｂの排他的論理和ゲートの少なくともいずれかがパルス信号を出力した場合に、ハイレベルのパルスを有する変更信号ＲＥＧＳＥＴを出力する。なお、パルス生成部１８ｂおよび信号生成部１８ｃは、ウェイマスクレジスタ１８の外部に設けられてもよい。
【００６３】
図６は、図２に示す電力制御部２２の一例を示す。電力制御部２２は、マスクビットＭＳＫ（ＭＳＫ０−ＭＳＫ７）にそれぞれ対応するオア回路ＯＲ１およびアンド回路ＡＮＤ１を有する。各オア回路ＯＲ１は、マスクビットＭＳＫの値が”１”の場合、またはパージ信号ＰＵＲＧがハイレベルの場合に、ハイレベルのクロックイネーブル信号ＣＫＥＮ（ＣＫＥＮ０−ＣＫＥＮ７）を出力する。アンド回路ＡＮＤ１は、クロックイネーブル信号ＣＫＥＮがハイレベルの期間、クロックＣＬＫに同期してクロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）を出力する。これにより、電力制御部２２は、各マスクビットＭＳＫ０−ＭＳＫ７が”１”である場合、またはパージ信号ＰＵＲＧがハイレベルの場合に、クロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７をそれぞれ生成する。パージ信号ＰＵＲＧは、図１０で説明するように、使用を停止するウェイＷＡＹのデータ領域ＤＡＴＡに保持されたデータを削除するパージ処理の実行中にハイレベルに設定される。
【００６４】
図７は、図２に示すウェイマスクレジスタ１８の値を、プロセスを生成するシステムコールに基づいて変更する処理の一例を示す。図７に示す処理は、演算処理装置１００が実行するプログラムにより実行される。図７に示す”％”は、情報処理装置のモニタに表示されるコマンドプロンプトを示す。図７において、符号”０ｘ”は１６進数を示し、符号”０ｂ”は２進数を示す。
【００６５】
まず、演算処理装置１００を含む情報処理装置を使用するユーザにより、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドが情報処理装置に入力される。ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第１引数”０ｘｃ０”のビット値は、ウェイＷＡＹ０−ＷＡＹ７の使用または未使用を示し、ウェイマスクレジスタ１８に格納される値を示す。１６進数で”ｃ０”が指定された場合、ウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０は”１１００００００”に設定され、ウェイＷＡＹ７−ＷＡＹ６は使用され、ウェイＷＡＹ５−ＷＡＹ０は使用されない。ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第２引数”ｕｓｅｒ＿ｐｒｏｇｒａｍ”は、演算処理装置１００が実行するアプリケーションプログラムの名称を示す。
【００６６】
ユーザモードにおいて、例えば、マンマシンインタフェース等を含むシステムの制御プログラムを実行中の演算処理装置１００は、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの入力に基づいて、ウェイマスクレジスタ１８の値を変更するためのシステムコールを発行する。システムコールの発行により、演算処理装置１００の実行モードはユーザモードからカーネルモードに変更される。
【００６７】
そして、制御プログラムは、システムコールのハンドラにジャンプし、ハンドラによりウェイマスクレジスタ１８の値が書き替えられる。例えば、ウェイマスクレジスタ１８は、アドレス空間のアドレス０ｘ１０に割り当てられており、ハンドラは、ストア命令（ＳＴ  ０ｂ１１００００００，０ｘ１０）を実行することで、ウェイマスクレジスタ１８の値を書き換える。ウェイマスクレジスタ１８に格納された値は、コンテキスト（演算処理装置１００の状態）として保持され、ＯＳにより管理される。
【００６８】
ウェイマスクレジスタ１８に格納された値をコンテキストして保持することで、プロセス（アプリケーションプログラム）が切り替わる場合にも、切り替えられたプロセスに合わせて、ウェイマスクレジスタ１８に正しい値を保持させることができる。この結果、プロセスが切り替わる場合にも、アプリケーションプログラム毎に、最適な容量のキャッシュメモリ５００を使用することができる。プロセスが生成される場合のコンテキストの処理は、図８で説明され、プロセスが切り替えられる場合のコンテキストの処理は、図９で説明される。
【００６９】
なお、演算処理装置１００が複数のプロセッサコア２００を有し、各プロセッサ２００がアプリケーションプログラムに対応するプロセスをそれぞれ実行する場合にも、コンテキストスイッチにより、ウェイマスクレジスタ１８の値を切り替えることができる。この結果、いわゆるマルチコアタイプの演算処理装置１００においても、アプリケーションプログラム毎に、最適な容量のキャッシュメモリを使用することができる。
【００７０】
ハンドラによるストア命令の実行が完了すると、制御は、ハンドラからシステムコールの発行元の制御プログラムにリターンされる。そして、制御プログラムは、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第２引数で指定されたｕｓｅｒ＿ｐｒｏｇｒａｍ（アプリケーションプログラム）を起動する。なお、使用するウェイＷＡＹの数は、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドにより指定されるため、アプリケーションプログラム中に、ウェイＷＡＹの数を変更する命令を追加することなく、最適な容量のキャッシュメモリを使用することができる。すなわち、アプリケーションプログラムを変更することなく、最適な容量のキャッシュメモリ５００を使用することができる。
【００７１】
例えば、ｕｓｅｒ＿ｐｒｏｇｒａｍは、科学技術計算等のＨＰＣ（High Performance Computing）分野で使用され、事前のチューニングにより、所望の処理性能を維持できるキャッシュメモリの最適な容量が分かっている。このように、キャッシュメモリの最適な容量が既知のアプリケーションを実行することにより、アプリケーションの性能を落とさずに、最小限の数のウェイＷＡＹを用いて処理を実行することができる。この結果、アプリケーションの性能を落とすことなく、コヒーレンシを維持して、演算処理装置１００の消費電力の削減に寄与することができる。
【００７２】
図８は、図２に示す演算処理装置１００において、システムコールによりプロセスが生成される場合の処理の一例を示す。図８に示す処理は、システムコールの発行に基づいて、演算処理装置１００が実行するＯＳ等の制御プログラムにより実行される。すなわち、図８は、演算処理装置１００の制御方法および演算処理装置１００の制御プログラムの一例を示す。
【００７３】
まず、ステップＳ１において、演算処理装置１００は、ウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０の設定が、システムコールに使用される引数で指示されたか否かを判定する。すなわち、演算処理装置１００は、システムコールがｓｅｔ＿ｕｓｅ＿ｗａｙコマンドに基づいて発行されたか否かを判定する。マスクビットＭＳＫ７−ＭＳＫ０の設定が引数で指示された場合、処理はステップＳ２に移行され、マスクビットＭＳＫ７−ＭＳＫ０の設定が引数で指示されない場合、処理はステップＳ３に移行される。
【００７４】
ステップＳ２において、演算処理装置１００は、生成するプロセスのコンテキストにおけるマスクビットＭＳＫ７−ＭＳＫ０に、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの引数で指示された値を設定し、処理をステップＳ４に移行する。一方、ステップＳ３において、演算処理装置１００は、生成するプロセスのコンテキストにおけるマスクビットＭＳＫ７−ＭＳＫ０に、デフォルト値（例えば、オール１）を設定し、処理をステップＳ４に移行する。オール１のデフォルト値は、図３に示すキャッシュメモリ５００の全てのウェイＷＡＹ７−ＷＡＹ０が使用されることを示す。
【００７５】
ステップＳ４において、演算処理装置１００は、コンテキストとして保持しているマスクビットＭＳＫ７−ＭＳＫ０をウェイマスクレジスタ１８に設定し、コンテキストとして保持している他のレジスタ値等を、それぞれに対応するレジスタ等に設定する。次に、ステップＳ５において、演算処理装置１００は、新たなプロセスを生成する。すなわち、演算処理装置１００が実行するプロセスが切り替えられる。
【００７６】
マスクビットＭＳＫ７−ＭＳＫ０の設定が引数で指示されない場合、ステップＳ３により、ウェイＷＡＹ７−ＷＡＹ０を使用するデフォルト値がコンテキストとして保持される。これにより、図１に示す実施形態と同様に、全てのウェイＷＡＹを使用しないといった誤った使用情報が使用情報レジスタ３に設定されることを抑止することができ、キャッシュメモリ５００にデータが保持されない設定になることを抑止することができる。この結果、生成されるプロセスの処理効率が低下することを抑止することができる。
【００７７】
図９は、図２に示す演算処理装置１００がプロセスを切り替える場合のコンテキストの処理の一例を示す。図９に示す処理は、演算処理装置１００が実行するＯＳ等のプログラムにより実行される。すなわち、図９は、演算処理装置１００の制御方法および演算処理装置１００の制御プログラムにより実現される。
【００７８】
まず、ステップＳ６において、演算処理装置１００は、プロセスの切り替えが発生したか否かを判定し、プロセスの切り替えが発生した場合、処理をステップＳ７に移行し、プロセスの切り替えが発生しない場合、処理を終了する。
【００７９】
ステップＳ７において、演算処理装置１００は、現在のプロセスのウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０の値を含む演算処理装置１００の状態を、コンテキストとして待避する。次に、ステップＳ８において、演算処理装置１００は、切り替え後のプロセスのコンテキストとして保持しているウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０を含む情報を復帰する。すなわち、ウェイマスクレジスタ１８を含む演算処理装置１００の状態は、切り替え後のプロセスに対応して変更される。そして、ステップＳ９において、演算処理装置１００は、プロセスを切り替えて、処理を終了する。なお、プロセスの切り替えにより使用が停止されるウェイＷＡＹは、図１０で説明するように、データの削除処理および主記憶装置４００への書き戻し処理を含むパージ処理が実行される。
【００８０】
図９に示すように、マスクビットＭＳＫ７−ＭＳＫ０の値は、コンテキストとしてプロセス毎に保持されるため、プロセスが切り替えられた場合にも、切り替えられたプロセスのそれぞれに適した容量のキャッシュメモリ５００を使用することができる。これにより、実行されるプロセス毎に、演算処理装置１００の消費電力を最小限にして、コヒーレンシを維持することができる。
【００８１】
図１０は、図２に示す演算処理装置１００の動作の一例を示す。図１０の初期状態において、ウェイマスクレジスタ１８は、”０ｘｆｆ”のマスクビットＭＳＫ［７：０］を保持している（図１０（ａ））。電力制御部２２は、オール１のマスクビットＭＳＫに基づいて、全てのクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７を生成し、キャッシュメモリ５００の全てのウェイＷＡＹ０−ＷＡＹ７が動作する（図１０（ｂ））。パージ状態ＰＵＲＧＳＴは、パージ制御部２０の内部状態を示し、”０”がパージ制御部２０の非動作状態を示し、”１”がパージ制御部２０の動作状態（パージ処理の実行中）を示す。
【００８２】
ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドが情報処理装置に入力され、図７で説明したように、ウェイマスクレジスタ１８が保持するマスクビットＭＳＫ［７：０］の値は、”０ｘｃ０”に変更される（図１０（ｃ））。ウェイマスクレジスタ１８は、マスクビットＭＳＫの変更に基づいて変更信号ＲＥＧＳＥＴを出力する（図１０（ｄ））。パージ制御部２０は、変更信号ＲＥＧＳＥＴに基づいて、パージ状態ＰＵＲＧＳＴを”１”に設定し、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをハイレベルに設定する（図１０（ｅ）、（ｆ））。
【００８３】
電力制御部２２は、ハイレベルのパージ信号ＰＵＲＧに基づいて、全てのクロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ７をハイレベルＨに設定し、全てのクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７を生成する（図１０（ｇ）、（ｈ））。すなわち、パージ処理の実行する期間に、マスクビットＭＳＫの値に拘わりなく、全てのウェイＷＡＹが動作する。これにより、使用を停止するウェイＷＡＹのタグ領域ＴＡＧおよびデータ領域ＤＡＴＡにアクセスすることができ、データの削除および主記憶装置４００への書き戻しを実行することができる。なお、図１０では、初期状態からクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７の出力されているため、クロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ７のレベルは変化しない。
【００８４】
調停部１４は、ハイレベルのリクエスト抑止信号ＲＱＨＬＤに基づいて、リクエストバッファ１２から受信するメモリアクセス要求ＭＡＲＱのアクセス制御部１６への出力を停止する。パージ制御部２０は、”０”のマスクビットＭＳＫ０−ＭＳＫ５に対応して使用が停止されるウェイＷＡＹ０−ＷＡＹ５に保持されたデータを削除するため、削除要求ＤＥＬＲＱを順次出力する（図１０（ｉ））。この例では、パージ制御部２０は、６つのウェイＷＡＹ０−ＷＡＹ５のデータ領域ＤＡＴＡにおける２５６個のエントリに保持されたデータを削除するために、１５３６個の削除要求ＤＥＬＲＱを生成する。各削除要求ＤＥＬＲＱは、インデックスアドレスＩＤＸＡＤおよびウェイＷＡＹの番号を示す情報を含む。
【００８５】
削除要求ＤＥＬＲＱを受信した調停部１４は、削除要求ＤＥＬＲＱをアクセス制御部１６に出力する。アクセス制御部１６は、削除要求ＤＥＬＲＱで指定されるデータ領域ＤＡＴＡおよびタグ領域ＴＡＧからデータおよび制御情報を読み出し、制御情報を読み出したタグ領域ＴＡＧに、データが無効であることを示す制御情報を書き込む。また、アクセス制御部１６は、タグ領域ＴＡＧから読み出した制御情報が、データ領域ＤＡＴＡに保持されたデータが書き換えられたことを示す場合、データ領域ＤＡＴＡから読み出したデータを主記憶装置４００に書き戻す処理を実行する。すなわち、アクセス制御部１６は、使用しないウェイＷＡＹに保持されたデータを削除し、主記憶装置４００に書き戻すパージ処理を実行する。
【００８６】
パージ制御部２０は、所定数の削除要求ＤＥＬＲＱを出力した後、パージ状態ＰＵＲＧＳＴを”０”に設定し、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをロウレベルに設定する（図１０（ｊ）、（ｋ））。電力制御部２２は、パージ信号ＰＵＲＧのロウレベルへの変化に基づいて、”０”のマスクビットＭＳＫ０−ＭＳＫ５に対応するクロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ５をロウレベルに固定する（図１０（ｌ））。これにより、電力制御部２２は、クロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ５の生成を停止する（図１０（ｍ））。クロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ５の停止により、ウェイＷＡＹ０−ＷＡＹ５は動作を停止し、スタンバイ状態になる。このため、ウェイＷＡＹ０−ＷＡＹ５にクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ５を供給する場合に比べて、キャッシュメモリ５００の消費電力は削減される。
【００８７】
この後、演算処理装置１００は、キャッシュメモリ５００の２つのウェイＷＡＹ６−ＷＡＹ７を使用して、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドで指定されたアプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１を実行する。なお、アプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１は、２つのウェイＷＡＹ６−ＷＡＹ７を使用することで、性能を低下させることなく実行可能であることが、予め実行された評価により判明している。換言すれば、８つのウェイＷＡＹ０−ＷＡＹ７を使用してアプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１を実行しても、２つのウェイＷＡＹ６−ＷＡＹ７を使用する場合に比べて性能は向上しない。性能を低下させない最小限の数のウェイＷＡＹを使用してアプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１を実行することで、キャッシュメモリ５００が消費する電力を、８つのウェイＷＡＹ０−ＷＡＹ７を使用する場合に比べて削減することができる。
【００８８】
アプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１の実行が終了した後、次のアプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ２を実行するために、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドが情報処理装置に入力される（図１０（ｎ））。アプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１用のｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの入力に基づいて実行された処理と同一または同様の処理については、詳細な説明は省略する。
【００８９】
ウェイマスクレジスタ１８が保持するマスクビットＭＳＫ［７：０］の値は、”０ｘｆ０”に変更される（図１０（ｏ））。マスクビットＭＳＫ［７：０］の”０ｘｆ０”は、ウェイＷＡＹ０−ＷＡＹ３の使用が停止され、ウェイＷＡＹ４−ＷＡＹ７が使用されることを示す。
【００９０】
パージ制御部２０は、ウェイマスクレジスタ１８が出力する変更信号ＲＥＧＳＥＴに基づいて、パージ状態ＰＵＲＧＳＴを”１”に設定し、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをハイレベルに設定する（図１０（ｐ）、（ｑ））。電力制御部２２は、ハイレベルのパージ信号ＰＵＲＧに基づいて、全てのクロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ７をハイレベルＨに設定し、全てのクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７を生成する（図１０（ｒ）、（ｓ））。
【００９１】
パージ制御部２０は、”０”のマスクビットＭＳＫ０−ＭＳＫ３に対応して使用が停止されるウェイＷＡＹ０−ＷＡＹ３に保持されたデータを追い出すため、１０２４個の削除要求ＤＥＬＲＱを順次出力する（図１０（ｔ））。調停部１４は、パージ制御部２０から受信した削除要求ＤＥＬＲＱをアクセス制御部１６に出力する。削除要求ＤＥＬＲＱで指定されるデータ領域ＤＡＴＡは、前回のパージ処理により無効化されており、データ領域ＤＡＴＡに対応するタグ領域ＴＡＧは、データが無効であることを示す情報が保持されている。このため、アクセス制御部１６は、データ領域ＤＡＴＡおよびタグ領域ＴＡＧにアクセスするが、タグ領域ＴＡＧに保持された情報を書き替えず、データの追い出し処理は実行しない。
【００９２】
パージ制御部２０は、所定数の削除要求ＤＥＬＲＱを出力した後、パージ状態ＰＵＲＧＳＴを”０”に設定し、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをロウレベルに設定する（図１０（ｕ）、（ｖ））。電力制御部２２は、パージ信号ＰＵＲＧのロウレベルへの変化に基づいて、”０”のマスクビットＭＳＫ０−ＭＳＫ３に対応するクロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ３をロウレベルに固定する（図１０（ｗ））。これにより、電力制御部２２は、クロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ３の生成を停止する（図１０（ｘ））。
【００９３】
この後、演算処理装置１００は、キャッシュメモリ５００の４つのウェイＷＡＹ４−ＷＡＹ７を使用して、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドで指定されたアプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ２を実行する。なお、アプリケーションプログラムｕｓｅｒ＿ｐｒｏｇｒａｍ２は、４つのウェイＷＡＹ４−ＷＡＹ７を使用することで、性能を低下させることなく実行可能であることが、予め実行された評価により判明している。したがって、プログラムｕｓｅｒ＿ｐｒｏｇｒａｍ１の実行と同様に、キャッシュメモリ５００が消費する電力を、８つのウェイＷＡＹ０−ＷＡＹ７を使用する場合に比べて削減することができる。
【００９４】
図１１は、図２に示すパージ制御部２０の動作の一例を示す。まず、ステップＳ１００において、パージ制御部２０は、変更信号ＲＥＧＳＥＴがハイレベルＨに設定された場合、動作をステップＳ１０２に移行し、変更信号ＲＥＧＳＥＴがロウレベルに維持されている間、ステップＳ１００の判定を繰り返す。
【００９５】
ステップＳ１０２において、パージ制御部２０は、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをハイレベルＨに設定し、動作をステップＳ１０４に移行する。ステップＳ１０４において、パージ制御部２０は、カウンタ値ｉ、ｊを”０”に設定し、動作をステップＳ１０６に移行する。ステップＳ１０６において、パージ制御部２０は、マスクビットＭＳＫｉが”０”の場合、動作をステップＳ１０８に移行し、マスクビットＭＳＫｉが”０”でない場合（すなわち、”１”）、動作をステップＳ１１４に移行する。
【００９６】
ステップＳ１０８において、パージ制御部２０は、ウェイＷＡＹｉにおいて、インデックスアドレスＩＤＸＡＤが”ｊ”のデータを削除する削除要求ＤＥＬＲＱを出力する。次に、ステップＳ１１０において、パージ制御部２０は、カウンタ値ｊを”１”増加させ、動作をステップＳ１１２に移行する。ステップＳ１１２において、パージ制御部２０は、カウンタ値ｊがインデックスアドレスＩＤＸＡＤの最大値ＩＤＸＡＤｍａｘより大きい場合、処理をステップＳ１１４に移行する。また、パージ制御部２０は、カウンタ値ｊが最大値ＩＤＸＡＤｍａｘ以下の場合、削除要求ＤＥＬＲＱを出力する動作を繰り返すために、処理をステップＳ１０８に戻す。そして、動作を停止するウェイＷＡＹ内の各エントリに保持されたデータの削除が順次実行される。なお、キャッシュメモリ５００が、インデックスアドレスＩＤＸＡＤで識別される２５６個のエントリを有する場合（ＩＤＸＡＤ＝０から２５５）、最大値ＩＤＸＡＤｍａｘは、”２５５”である。
【００９７】
一方、ステップＳ１１４において、パージ制御部２０は、カウンタ値ｉを”１”増加させ、動作をステップＳ１１６に移行する。ステップＳ１１６において、パージ制御部２０は、カウンタ値ｉがウェイＷＡＹの番号の最大値ＷＡＹｍａｘ（例えば、”７”）より大きい場合、処理をステップＳ１１８に移行する。また、パージ制御部２０は、カウンタ値ｉが最大値ＷＡＹｍａｘ以下の場合、次のウェイＷＡＹのデータのパージ処理を実行するために、処理をステップＳ１０６に戻す。ステップＳ１１８において、パージ制御部２０は、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをロウレベルＬに設定し、パージ処理の動作を終了する。
【００９８】
図１２は、図２に示す置換ウェイ選択部２４の動作の一例を示す。置換ウェイ選択部２４は、アクセス制御部１６によりキャッシュミスが判定されたことに基づいて、動作を開始する。
【００９９】
まず、ステップＳ２００において、置換ウェイ選択部２４は、アクセス制御部１６からキャッシュミスしたインデックスアドレスＩＤＸＡＤを受信する。次に、ステップＳ２０２において、置換ウェイ選択部２４は、インデックスアドレスＩＤＸＡＤで示されるタグ領域ＴＡＧ０−ＴＡＧ７からタグデータＴＡＧＤＴを読み出す。次に、ステップＳ２０４において、置換ウェイ選択部２４は、ＬＲＵ手法を用いて、”１”のマスクビットＭＳＫに対応するウェイＷＡＹのデータ領域ＤＡＴＡに保持されたデータのうち、参照されていない時間が最も長いデータを置換の対象に決定する。置換ウェイ選択部２４は、置換の対象に決定したデータを保持するウェイＷＡＹの番号をアクセス制御部１６に通知し、データを置換するウェイＷＡＹを選択する動作を終了する。
【０１００】
以上、図２から図１２に示す実施形態においても、図１に示す実施形態と同様の効果を得ることができる。すなわち、使用しないウェイＷＡＹの動作を停止して演算処理装置１００の消費電力を削減する場合に、キャッシュメモリ５００と主記憶装置４００との間のコヒーレンシを維持することができる。また、演算処理装置１００は、システムコールの引数がウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０の書き換える情報を含まない場合、デフォルトのマスクビットＭＳＫ７−ＭＳＫ０の値をプロセスのコンテキストとして保持する。これにより、誤った設定がコンテキストとして保持されることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
【０１０１】
さらに、図２から図１２に示す実施形態では、マスクビットＭＳＫに応じて使用されないウェイＷＡＹが存在する場合にも、置換ウェイ選択部２４により、ＬＲＵ手法に基づいて、データを置換するウェイＷＡＹを決定することができる。これにより、使用が停止されたウェイＷＡＹがデータの置換対象となることを抑止することができ、演算処理装置１００の誤動作を抑止することができる。
【０１０２】
マスクビットＭＳＫの値に拘わりなく、全てのウェイＷＡＹを動作させることで、使用を停止するウェイＷＡＹのタグ領域ＴＡＧおよびデータ領域ＤＡＴＡにアクセスすることができ、データの削除および主記憶装置４００への書き戻しを実行することができる。使用しないウェイＷＡＹに供給されるクロックＲＡＭＣＬＫの停止により、ウェイＷＡＹの動作を停止することで、他の手法によりウェイＷＡＹの動作を停止する場合に比べて、キャッシュメモリ５００の消費電力を簡易な機構で削減することができる。
【０１０３】
また、ウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０を書き換える命令をアプリケーションプログラムに埋め込むことなく、使用するウェイＷＡＹを変更することができる。換言すれば、アプリケーションプログラムを変更せずに、使用するウェイＷＡＹを変更することができる。
【０１０４】
図１３は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図１３に示す演算処理装置１００Ａは、図２に示すキャッシュメモリ５００および電力制御部２２の代わりにキャッシュメモリ５００Ａおよび電力制御部２２Ａを有する。演算処理装置１００Ａのその他の構成は、図２に示す演算処理装置１００と同様である。
【０１０５】
電力制御部２２Ａは、マスクビットＭＳＫ０−ＭＳＫ７の値とパージ信号ＰＵＲＧとに基づいて、クロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）および電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）を出力する機能を有する。電力制御部２２Ａの例は、図１５に示される。
【０１０６】
図１４は、図１３に示すキャッシュメモリ５００Ａの要部の一例を示す。キャッシュメモリ５００Ａは、図３および図４に示すキャッシュメモリ５００に、ウェイＷＡＹ（ＷＡＹ０−ＷＡＹ７）に接続される電源スイッチＰＴ（ＰＴ０−ＰＴ７）を追加している。キャッシュメモリ５００Ａのその他の構成は、電源スイッチＰＴに電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）が供給されることを除き、図３および図４に示すキャッシュメモリ５００と同様である。なお、各ウェイＷＡＹ０−ＷＡＹ７は、電気的に互いに分離しており、例えば、ウェイＷＡＹ０に供給された電源電圧ＶＤＤは、ウェイＷＡＹ０内のみで使用される。
【０１０７】
各電源スイッチＰＴは、電源線ＶＤＤと各ウェイＷＡＹの電源端子との間に配置されたｐチャネルＭＯＳ（Metal Oxide Semiconductor）トランジスタを含む。ｐチャネルＭＯＳトランジスタは、ゲートでロウレベルの電源制御信号ＰＷＲを受信している間、電源電圧ＶＤＤをウェイＷＡＹに供給し、ゲートでハイレベルの電源制御信号ＰＷＲを受信している間、電源電圧ＶＤＤのウェイＷＡＹへの供給を停止する。すなわち、キャッシュメモリ５００Ａは、電源電圧ＶＤＤを動的に停止するパワーゲーティング手法を採用している。ウェイＷＡＹへの電源電圧ＶＤＤの供給を停止することで、ウェイＷＡＹの電源線ＶＤＤと接地線との間に流れるリーク電流を抑止できるため、クロックＲＡＭＣＬＫを停止する場合に比べて、消費電力をさらに削減することができる。
【０１０８】
図１５は、図１４に示す電力制御部２２Ａの一例を示す。図６に示す電力制御部２２と同一または同様の要素については、詳細な説明は省略する。電力制御部２２Ａは、図６に示す電力制御部２２に電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）を生成する論理を追加している。各電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）は、例えば、クロックイネーブル信号ＣＫＥＮ（ＣＫＥＮ０−ＣＫＥＮ７）の論理を反転することで生成される。この場合、クロックＲＡＭＣＬＫの出力が停止される期間と、電源制御信号ＰＷＲがハイレベルに設定され、ウェイＷＡＹへの電源電圧ＶＤＤの供給が停止される期間とは、互いに重複する。
【０１０９】
なお、電力制御部２２Ａは、クロックＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）を出力せずに、電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）のみを出力してもよい。この場合にも、クロックＲＡＭＣＬＫを停止する場合と同様に、消費電力を削減することができる。
【０１１０】
図１６は、図１３に示す演算処理装置１００Ａの動作の一例を示す。図１０と同一または同様の動作については、詳細な説明は省略する。図１６に示す動作は、電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）の波形を図１０に対して追加したことを除き、図１０と同じである。
【０１１１】
パージ処理の実行中、電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ７）は、ロウレベルＬに設定され、全てのウェイＷＡＹ０−ＷＡＹ７に電源電圧ＶＤＤが供給される（図１６（ａ）、（ｂ））。一方、パージ処理の完了後、使用を停止するウェイＷＡＹに対応する電源制御信号ＰＷＲ（ＰＷＲ０−ＰＷＲ５またはＰＷＲ０−ＰＷＲ３）は、ハイレベルに設定され、使用を停止するウェイＷＡＹへの電源電圧ＶＤＤの供給が停止される（図１６（ｃ）、（ｄ））。
【０１１２】
以上、図１３から図１６に示す実施形態においても、図１から図１２に示す実施形態と同様の効果を得ることができる。すなわち、使用しないウェイＷＡＹの動作を停止して演算処理装置１００の消費電力を削減する場合に、キャッシュメモリ５００と主記憶装置４００との間のコヒーレンシを維持することができる。また、置換ウェイ選択部２４により、使用が停止されたウェイＷＡＹがデータの置換対象となることを抑止することができ、演算処理装置１００の誤動作を抑止することができる。パージ期間に、マスクビットＭＳＫの値に拘わりなく、全てのウェイＷＡＹを動作させることができ、データの削除および主記憶装置４００への書き戻しを実行することができる。アプリケーションプログラムを変更せずに、使用するウェイＷＡＹを変更することができる。また、演算処理装置１００は、システムコールの引数がウェイマスクレジスタ１８のマスクビットＭＳＫ７−ＭＳＫ０の書き換える情報を含まない場合、デフォルトのマスクビットＭＳＫ７−ＭＳＫ０の値をプロセスのコンテキストとして保持する。これにより、誤った設定がコンテキストとして保持されることを抑止することができ、生成されるプロセスの処理効率が低下することを抑止することができる。
【０１１３】
さらに、図１３から図１６に示す実施形態では、使用を停止するウェイＷＡＹへの電源電圧ＶＤＤの供給を停止することで、図２から図１２に示す実施形態に比べて、演算処理装置１００Ａの消費電力をさらに削減することができる。
【０１１４】
図１７は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図２に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図１７に示す演算処理装置１００Ｂは、図２に示す演算処理装置１００にエンコーダ２６Ｂを追加している。演算処理装置１００Ｂのその他の構成は、図２に示す演算処理装置１００と同様である。
【０１１５】
アクセス制御部１６は、プロセッサコア２００からのセット要求ＳＥＴＲＱに含まれるデータＮＷＡＹ（使用するウェイＷＡＹの数を示す情報）とともに、ウェイマスクレジスタ１８の情報を書き替えるマスクセット信号ＭＳＫＳＥＴを出力する。すなわち、この実施形態では、図１０に示すｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第１引数は、マスクビットＭＳＫ７−ＭＳＫ０の値（”０ｘｃ０”、”０ｘｆ０”等）の代わりに、データＮＷＡＹ（”２”、”４”等）が指定される。データＮＷＡＹは、使用するウェイＷＡＹの数を示すウェイ数情報の一例である。
【０１１６】
エンコーダ２６Ｂは、使用するウェイＷＡＹの数を示すデータＮＷＡＹをリクエストバッファ１２、調停部１４およびアクセス制御部１６を介してプロセッサコア２００から受信する。また、エンコーダ２６Ｂは、受信したデータＮＷＡＹに基づいて、マスクビットＭＳＫ７−ＭＳＫ０の値に対応するデータＤ７−Ｄ０を生成し、生成したデータＤ７−Ｄ０をウェイマスクレジスタ１８に出力する。データＤ７−Ｄ０は、マスクセット信号ＭＳＫＳＥＴに同期して、マスクビットＭＳＫ７−ＭＳＫ０としてウェイマスクレジスタ１８に格納される。
【０１１７】
例えば、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第１引数が”２”の場合、エンコーダ２６Ｂは、ビット値”１１００００００”を示すデータＤ７−Ｄ０をウェイマスクレジスタ１８に出力する。ｓｅｔ＿ｕｓｅ＿ｗａｙコマンドの第１引数が”４”の場合、エンコーダ２６Ｂは、ビット値”１１１１００００”を示すデータＤ７−Ｄ０をウェイマスクレジスタ１８に出力する。第１引数の値に応じてハイレベルに設定されるビット位置（すなわち、使用を停止するウェイＷＡＹの位置）は、上述の例に限定されず、ビット値”００１１００００”でもよく、ビット値”００１１１１００”でもよい。
【０１１８】
なお、エンコーダ２６Ｂは、ウェイマスクレジスタ１８内に設けられてもよい。この場合、ウェイマスクレジスタ１８は、ウェイＷＡＹの数を示すデータＮＷＡＹに基づいて、変更信号ＲＥＧＳＥＴおよびマスクビットＭＳＫ０−ＭＳＫ７を生成してもよい。エンコーダ２６Ｂは、プロセッサコア２００から受信したデータＮＷＡＹに基づいて、ＭＳＫ０−ＭＳＫ７に対応するデータＤ０−Ｄ７を生成し、生成したデータＤ０−Ｄ７をウェイマスクレジスタ１８に格納する使用情報生成部の一例である。
【０１１９】
以上、図１７に示す実施形態においても、図１３から図１６に示す実施形態で説明したように、図１から図１２に示す実施形態と同様の効果を得ることができる。さらに、図１７に示す実施形態では、使用するウェイＷＡＹの数を示すデータＮＷＡＹを受信する場合にも、エンコーダ２６Ｂにより、ウェイマスクレジスタ１８にマスクビットＭＳＫ０?ＭＳＫ７を設定することができる。なお、図１７に示すエンコーダ２６Ｂは、図１３に示す演算処理装置１００Ａおよび図１８に示す演算処理装置１００Ｃに追加されてもよい。
【０１２０】
図１８は、演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムの別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図１８に示す演算処理装置１００Ｃは、図２に示すウェイマスクレジスタ１８およびパージ制御部２０の代わりにウェイマスクレジスタ１８Ｃおよびパージ制御部２０Ｃを有する。演算処理装置１００Ｃのその他の構成は、図２に示す演算処理装置１００と同様である。
【０１２１】
ウェイマスクレジスタ１８Ｃは、マスクビットＭＳＫ０−ＭＳＫ７の少なくもいずれかの論理値が反転した場合に変更信号ＲＥＧＳＥＴを出力する機能を、図２に示すウェイマスクレジスタ１８から削除している。マスクビットＭＳＫ０−ＭＳＫ７の少なくもいずれかの論理値の反転は、パージ制御部２０Ｃにより検出される。
【０１２２】
パージ制御部２０Ｃは、論理が”１”から”０”に変化したマスクビットＭＳＫ０−ＭＳＫ７を検出する機能と、論理が”０”から”１”に変化したマスクビットＭＳＫ０−ＭＳＫ７を検出する機能とを有する。また、パージ制御部２０Ｃは、マスクビットＭＳＫ０−ＭＳＫ７の少なくともいずれかの論理の変化に基づいて、リクエスト抑止信号ＲＱＨＬＤ、削除要求ＤＥＬＲＱおよびパージ信号ＰＵＲＧを出力する機能を有する。パージ制御部２０Ｃの例は、図１９に示される。
【０１２３】
図１９は、図１８に示すパージ制御部２０Ｃの一例を示す。パージ制御部２０Ｃは、論理が”１”から”０”に変化したマスクビットＭＳＫ０−ＭＳＫ７を検出する検出部ＦＤＥＴと、論理が”０”から”１”に変化したマスクビットＭＳＫ０−ＭＳＫ７を検出する検出部ＲＤＥＴとを有する。また、パージ制御部２０Ｃは、検出部ＦＤＥＴ、ＲＤＥＴによる検出結果に基づいて、リクエスト抑止信号ＲＱＨＬＤ、削除要求ＤＥＬＲＱおよびパージ信号ＰＵＲＧを生成する信号生成部ＳＧＥＮを有する。
【０１２４】
検出部ＦＤＥＴは、マスクビット信号ＭＳＫ０−ＭＳＫ７のそれぞれに対応して、インバータＩＶ、フリップフロップＦＦおよびノアゲートＮＯＲを有する。各ノアゲートＮＯＲは、各マスクビット信号ＭＳＫ０−ＭＳＫ７と、各マスクビット信号ＭＳＫ０−ＭＳＫ７を反転した論理をフリップフロップＦＦで１クロックサイクル遅らせた信号とを受信する。そして、各ノアゲートＮＯＲは、受信した２つの信号の論理が互いにロウレベルの期間にハイレベルの検出パルス信号Ｆ（Ｆ０−Ｆ７）を出力する。すなわち、ノアゲートＮＯＲは、各マスクビットＭＳＫの値と、各マスクビットＭＳＫの値を反転した値とを受信し、マスクビットＭＳＫの論理の”１”から”０”への変化に基づいてハイレベルの検出パルス信号Ｆ（Ｆ０−Ｆ７）を生成する。
【０１２５】
検出部ＲＤＥＴは、マスクビット信号ＭＳＫ０−ＭＳＫ７のそれぞれに対応して、インバータＩＶ、フリップフロップＦＦおよびアンドゲートＡＮＤを有する。各アンドゲートＡＮＤは、各マスクビット信号ＭＳＫ０−ＭＳＫ７と、各マスクビット信号ＭＳＫ０−ＭＳＫ７を反転した論理をフリップフロップＦＦで１クロックサイクル遅らせた信号とを受信する。そして、各アンドゲートＡＮＤは、受信した２つの信号の論理が互いにハイレベルの期間にハイレベルの検出パルス信号Ｒ（Ｒ０−Ｒ７）を出力する。すなわち、アンドゲートＡＮＤは、各マスクビットＭＳＫの値と、各マスクビットＭＳＫの値を反転した値とを受信し、マスクビットＭＳＫの論理の”０”から”１”への変化に基づいてハイレベルの検出パルス信号Ｒ（Ｒ０−Ｒ７）を生成する。なお、マスクビットＭＳＫの論理の”０”から”１”への変化は、各マスクビットＭＳＫの値を示す信号と、各マスクビットＭＳＫの値を遅延させた信号とを受信する排他的論理和回路を用いて検出されてもよい。
【０１２６】
信号生成部ＳＧＥＮは、検出パルス信号Ｆ０−Ｆ７の少なくともいずれか、または検出パルス信号Ｒ０−Ｒ７の少なくともいずれかを受信した場合、リクエスト抑止信号ＲＱＨＬＤおよび削除要求ＤＥＬＲＱをハイレベルに設定する。また、信号生成部ＳＧＥＮは、各検出パルス信号Ｆの受信に基づいて所定数の削除要求ＤＥＬＲＱを出力し、削除要求ＤＥＬＲＱの出力後にリクエスト抑止信号ＲＱＨＬＤおよび削除要求ＤＥＬＲＱをロウレベルに戻す。各検出パルス信号Ｆの受信に基づいて出力される削除要求ＤＥＬＲＱの数は、各ウェイＷＡＹのデータ領域ＤＡＴＡのエントリの数（例えば、２５６回）に等しい。また、信号生成部ＳＧＥＮは、検出パルス信号Ｆ０−Ｆ７を受けることなく、検出パルス信号Ｒ０−Ｒ７の少なくともいずれかを受信した場合、ハイレベルに設定したリクエスト抑止信号ＲＱＨＬＤおよび削除要求ＤＥＬＲＱを直ちにロウレベルに戻す。
【０１２７】
ウェイＷＡＹのデータ領域ＤＡＴＡに保持されたデータを削除するパージ処理は、使用を停止するウェイＷＡＹで実行されればよく、使用を開始するウェイＷＡＹ、および使用中のウェイＷＡＹでは省略することができる。これは、使用を停止中のウェイＷＡＹのデータ領域ＤＡＴＡは、データを保持しておらず、各データ領域ＤＡＴＡに対応するタグ領域ＴＡＧは、データ領域ＤＡＴＡが無効であることを示すタグデータＴＡＧＤＴを保持しているためである。このため、パージ制御部２０Ｃは、使用を停止するウェイＷＡＹのみでパージ処理を実行する。
【０１２８】
図２０は、図１９に示すパージ制御部２０Ｃが実行するパージ処理の一例を示す。図２０において、網掛けで示すウェイＷＡＹは使用される使用ウェイを示し、白抜きで示すウェイＷＡＹは使用が停止される停止ウェイを示す。初期状態では、ウェイマスクレジスタ１８の各マスクビットＭＳＫ［７：０］は”１”を保持しており、ウェイＷＡＹ０−ＷＡＹ７は、使用ウェイに設定されている（図２０（ａ））。
【０１２９】
ｓｅｔ＿ｕｓｅ＿ｗａｙコマンド”ｓｅｔ＿ｕｓｅ＿ｗａｙ  ０ｘｃ０  ｕｓｅｒ＿ｐｒｏｇｒａｍ１”の入力に基づいて、ウェイマスクレジスタ１８のマスクビットＭＳＫ［７：０］は、”１１００００００”に変更される（図２０（ｂ））。マスクビットＭＳＫ［５：０］の論理１から論理０への変化に基づいて、パージ制御部２０Ｃの検出部ＦＤＥＴは、ハイレベルの検出パルス信号Ｆ０−Ｆ５を生成する（図２０（ｃ））。検出パルス信号Ｆ６−Ｆ７および検出パルス信号Ｒ０−Ｒ７は、ロウレベルＬに維持される（図２０（ｄ）、（ｅ））。パージ制御部２０Ｃの信号生成部ＳＧＥＮは、検出パルス信号Ｆ０−Ｆ５に基づいて、ウェイＷＡＹ０−ＷＡＹ５に対する削除要求ＤＥＬＲＱを順次出力し、アクセス制御部１６にウェイＷＡＹ０−ＷＡＹ５のパージ処理を実行させる（図２０（ｆ））。そして、ウェイＷＡＹ０−ＷＡＹ５は停止ウェイに設定される。
【０１３０】
次に、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンド”ｓｅｔ＿ｕｓｅ＿ｗａｙ  ０ｘｆ０  ｕｓｅｒ＿ｐｒｏｇｒａｍ２”の入力に基づいて、ウェイマスクレジスタ１８のマスクビットＭＳＫ［７：０］は、”１１１１００００”に変更される（図２０（ｇ））。マスクビットＭＳＫ［５：４］の論理０から論理１への変化に基づいて、パージ制御部２０Ｃの検出部ＲＤＥＴは、ハイレベルの検出パルス信号Ｒ４−Ｒ５を生成する（図２０（ｈ））。検出パルス信号Ｆ０−Ｆ７および検出パルス信号Ｒ６−Ｒ７、Ｒ０−Ｒ３は、ロウレベルＬに維持される（図２０（ｉ）、（ｊ））。
【０１３１】
マスクビットＭＳＫが論理０から論理１に変化した場合、データ領域ＤＡＴＡが無効であるウェイＷＡＹが停止ウェイから使用ウェイに設定されるだけのため、パージ処理を省略することができる。このため、パージ制御部２０Ｃの信号生成部ＳＧＥＮは、マスクビットＭＳＫが論理１から論理０に変化することなく、論理０から論理１に変化した場合、削除要求ＤＥＬＲＱを生成しない。これにより、パージ処理の実行は省略される。なお、図２１に示すように、パージ処理が実行されない場合にも、信号生成部ＳＧＥＮは、検出パルス信号Ｒ４−Ｒ５に基づいて、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧを一時的にハイレベルに設定する。そして、ウェイＷＡＹ４−ＷＡＹ５は使用ウェイに設定される。
【０１３２】
次に、ｓｅｔ＿ｕｓｅ＿ｗａｙコマンド”ｓｅｔ＿ｕｓｅ＿ｗａｙ  ０ｘｃ０  ｕｓｅｒ＿ｐｒｏｇｒａｍ３”の入力に基づいて、ウェイマスクレジスタ１８のマスクビットＭＳＫ［７：０］は、”１１００００００”に変更される（図２０（ｋ））。マスクビットＭＳＫ［５：４］の論理１から論理０への変化に基づいて、パージ制御部２０Ｃの検出部ＦＤＥＴは、ハイレベルの検出パルス信号Ｆ４−Ｆ５を生成する（図２０（ｌ））。検出パルス信号Ｆ６−Ｆ７、Ｆ０−Ｆ３および検出パルス信号Ｒ０−Ｒ７は、ロウレベルＬに維持される（図２０（ｍ）、（ｎ））。
【０１３３】
パージ制御部２０Ｃの信号生成部ＳＧＥＮは、検出パルス信号Ｆ４−Ｆ５に基づいて、ウェイＷＡＹ４−ＷＡＹ５に対する削除要求ＤＥＬＲＱを順次出力し、アクセス制御部１６にウェイＷＡＹ３−ＷＡＹ５のパージ処理を実行させる（図２０（ｏ））。そして、ウェイＷＡＹ４−ＷＡＹ５は停止ウェイに設定される。
【０１３４】
一方、パージ制御部２０Ｃの信号生成部ＳＧＥＮは、検出パルス信号Ｆ０−Ｆ４を受けないウェイＷＡＹ０−ＷＡＹ３に対する削除要求ＤＥＬＲＱを出力しない。マスクビットＭＳＫが論理０に維持される場合、データ領域ＤＡＴＡが無効であるウェイＷＡＹは停止ウェイに維持されるため、パージ処理を省略することができる。このため、パージ制御部２０Ｃの信号生成部ＳＧＥＮは、マスクビットＭＳＫ［７：０］のいずれかが論理１から論理０に変化する場合にも、マスクビットＭＳＫが論理０に維持されるウェイＷＡＹに対する削除要求ＤＥＬＲＱを生成しない。
【０１３５】
パージ制御部２０Ｃは、パージ処理が省略できるウェイＷＡＹに対する削除要求ＤＥＬＲＱの出力を抑止することで、削除要求ＤＥＬＲＱの出力を抑止しない場合に比べて、パージ処理に掛かる時間を短縮することができる。これにより、無駄なパージ処理により演算処理装置１００Ｃの処理効率が低下することを抑止することができる。
【０１３６】
図２１は、図１８に示す演算処理装置１００Ｃの動作の一例を示す。図１０と同一または同様の動作については、詳細な説明は省略する。図１６において、２回目のｓｅｔ＿ｕｓｅ＿ｗａｙコマンド”ｓｅｔ＿ｕｓｅ＿ｗａｙ  ０ｘｆ０  ｕｓｅｒ＿ｐｒｏｇｒａｍ２”が入力されるまでの動作は、図１０と同様である。なお、図２１では、図１０に示すクロックイネーブル信号ＣＫＥＮ０−ＣＫＥＮ７およびクロックＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７の波形を省略し、検出パルス信号Ｆ０−Ｆ７、Ｒ０−Ｒ７の波形を記載している。
【０１３７】
信号生成部ＳＧＥＮは、検出パルス信号Ｆ０−Ｆ７のいずれかを受信した場合、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧをハイレベルに設定し、使用を停止するウェイＷＡＹに対する削除要求ＤＥＬＲＱを順次生成する（図２１（ａ）、（ｂ）、（ｃ））。
【０１３８】
一方、図２０で説明したように、論理１から論理０に変化するマスクビットＭＳＫが存在せず、マスクビットＭＳＫのいずれかが論理０から論理１に変化する場合、パージ処理を省略することができる。このため、パージ制御部２０Ｃの信号生成部ＳＧＥＮは、マスクビットＭＳＫのいずれかが論理０から論理１のみに変化する場合、削除要求ＤＥＬＲＱを生成しない（図２１（ｄ））。これにより、使用を停止させるウェイＷＡＹが存在しない場合、パージ処理を省略することができる（図２１（ｇ））。信号生成部ＳＧＥＮは、論理０から論理１に変化したマスクビットＭＳＫに対応する検出パルス信号Ｒ４−Ｒ５に基づいて、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧを一時的にハイレベルに設定する（図２１（ｅ）、（ｆ））。なお、図１９に示す信号生成部ＳＧＥＮは、検出パルス信号Ｒ０−Ｒ７のいずれかを受信した場合、リクエスト抑止信号ＲＱＨＬＤおよびパージ信号ＰＵＲＧのハイレベルへの設定を省略してもよい。この場合、図１９に示す検出部ＲＤＥＴは省略することができ、パージ制御部２０Ｃの内部状態であるパージ状態ＰＵＲＧＳＴは、ハイレベルに変化することなく、ロウレベルに維持される。
【０１３９】
以上、図１８から図２１に示す実施形態においても、図１３から図１６に示す実施形態で説明したように、図１から図１２に示す実施形態と同様の効果を得ることができる。さらに、図１８から図２１に示す実施形態では、使用を停止させるウェイＷＡＹが存在しない場合、削除要求ＤＥＬＲＱの出力を抑止することで、削除要求ＤＥＬＲＱの出力を抑止しない場合に比べて、パージ処理に掛かる時間を短縮することができる。これにより、無駄なパージ処理により演算処理装置１００Ｃの処理効率が低下することを抑止することができる。
【０１４０】
なお、ウェイマスクレジスタ１８Ｃおよびパージ制御部２０Ｃは、図１３または図１７に示すウェイマスクレジスタ１８およびパージ制御部２０の代わりに配置されてもよい。
【０１４１】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
命令を実行する演算処理部と、
複数のウェイを含むキャッシュメモリと、
前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、
前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、
前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、
前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有することを特徴とする演算処理装置。
（付記２）
前記演算処理装置はさらに、前記キャッシュメモリのキャッシュミス時に、前記下位の記憶装置から読み出すデータの格納先のウェイを、前記使用情報レジスタが保持する使用情報により使用が決定されたウェイの中から選択する置換ウェイ選択部を有し、
前記アクセス制御部は、前記置換ウェイ選択部が選択したウェイが保持するデータのいずれかを前記下位の記憶装置から読み出すデータに置換することを特徴とする付記１記載の演算処理装置。
（付記３）
前記電力制御部は、前記パージ処理中、前記使用情報レジスタが保持する使用情報に拘わりなく、前記複数のウェイを動作させることを特徴とする付記１または付記２記載の演算処理装置。
（付記４）
前記演算処理装置はさらに、使用するウェイの数を示すウェイ数情報を前記演算処理部から受信し、受信したウェイ数情報に基づいて前記使用情報を生成し、生成した使用情報を前記使用情報レジスタに格納する使用情報生成部を有することを特徴とする付記１ないし付記３のいずれか１項記載の演算処理装置。
（付記５）
前記パージ制御部は、前記使用情報レジスタに格納された使用情報の書き換えにより使用が停止されるウェイがない場合、前記パージ処理の実行を省略することを特徴とする付記１ないし付記４のいずれか１項記載の演算処理装置。
（付記６）
前記複数のウェイは、クロックに同期してそれぞれ動作し、
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの前記クロックの供給を停止することを特徴とする付記１ないし付記５のいずれか１項記載の演算処理装置。
（付記７）
前記電力制御部は、前記パージ処理の完了後、使用を停止するウェイへの電源の供給を停止することを特徴とする付記１ないし付記６のいずれか１項記載の演算処理装置。
（付記８）
前記パージ制御部は、前記使用情報レジスタが保持する使用情報の書き替えに基づいて、使用を停止するウェイが保持するデータを削除する削除要求と、前記パージ処理中を示すパージ情報とを前記アクセス制御部に出力し、
前記アクセス制御部は、前記メモリアクセス要求および前記削除要求に基づいて、前記キャッシュメモリにアクセスするとともに、前記パージ情報が出力されている期間に前記メモリアクセス要求に基づく前記キャッシュメモリのアクセスを抑止することを特徴とする付記１ないし付記７のいずれか１項記載の演算処理装置。
（付記９）
前記使用情報レジスタは、ビット値が第１の論理の場合にウェイの使用を示し、ビット値が前記第１の論理と異なる第２の論理の場合にウェイの使用の停止を示す複数のビットを前記複数のウェイにそれぞれ対応して有し、
前記演算処理装置はさらに、前記使用情報レジスタのビット値のいずれかの反転を検出した場合に、前記使用情報レジスタ内の使用情報が書き換えられたことを前記パージ制御部に通知する検出部を有することを特徴とする付記１ないし付記８のいずれか１項記載の演算処理装置。
（付記１０）
命令を実行する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有する演算処理装置の制御方法において、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、前記演算処理装置が、
前記システムコールの引数が前記使用レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納することを特徴とする演算処理装置の制御方法。
（付記１１）
実行中のプロセスを他のプロセスに切り替える場合、前記演算処理装置が、
前記実行中のプロセスに対応して前記使用情報レジスタが保持する使用情報をコンテキストとして退避し、
前記他のプロセスに対応してコンテキストとして保持した使用情報を前記使用情報レジスタに復帰することを特徴とする付記１０記載の演算処理装置の制御方法。
（付記１２）
命令を実行する演算処理部と、複数のウェイを含むキャッシュメモリと、前記複数のウェイの各々を使用するかを示す使用情報が格納される使用情報レジスタと、前記演算処理部が実行する命令による前記使用情報レジスタ内の使用情報の書き換えに基づいて、前記複数のウェイのうち使用を停止する停止ウェイに保持されたデータを前記キャッシュメモリから削除する処理と、削除するデータのうち前記キャッシュメモリ上で書き換えられたデータを前記キャッシュメモリより下位の記憶装置に書き戻す処理とを含むパージ処理を実行するパージ制御部と、前記演算処理部から出力されるメモリアクセス要求に基づいて前記キャッシュメモリにアクセスするとともに、前記パージ処理中に前記キャッシュメモリへのアクセスを抑止するアクセス制御部と、前記パージ処理の完了後、前記使用情報レジスタが保持する使用情報に基づいて、前記停止ウェイの動作を停止する電力制御部を有する演算処理装置の制御プログラムにおいて、
プログラムの実行単位であるプロセスを生成するシステムコールに基づいて、
前記システムコールの引数が前記使用レジスタに格納する使用情報を含む場合、引数が含む使用情報を、生成するプロセスのコンテキストとして保持し、
前記引数が前記使用レジスタに格納する使用情報を含まない場合、デフォルトの使用情報を、生成するプロセスのコンテキストとして保持し、
コンテキストとして保持した使用情報を前記使用情報レジスタに格納する処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御プログラム。
（付記１３）
実行中のプロセスを他のプロセスに切り替える場合、
前記実行中のプロセスに対応して前記使用情報レジスタが保持する使用情報をコンテキストとして退避し、
前記他のプロセスに対応してコンテキストとして保持した使用情報を前記使用情報レジスタに格納する処理を前記演算処理装置に実行させることを特徴とする付記１２記載の演算処理装置の制御プログラム。
【０１４２】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１４３】
１…演算処理装置；２…プロセッサコア；３…使用情報レジスタ；４…パージ制御部；５…アクセス制御部；６…電力制御部；７…キャッシュメモリ；８…主記憶装置；１２…リクエストバッファ；１４…調停部；１６…アクセス制御部；１８、１８Ｃ…ウェイマスクレジスタ；１８ａ…レジスタ部；１８ｂ…パルス生成部；１８ｃ…信号生成部；２０、２０Ｃ…パージ制御部；２２、２２Ａ…電力制御部；２４…置換ウェイ選択部；２６Ｂ…エンコーダ；１００、１００Ａ、１００Ｂ、１００Ｃ…演算処理装置；２００…プロセッサコア；３００…キャッシュメモリ部；５００、５００Ａ…キャッシュメモリ；６００…キャッシュ制御部；ＡＣＭＰ…アドレス比較器；ＡＲＱ…メモリアクセス要求；ＣＫＥＮ（ＣＫＥＮ０−ＣＫＥＮ７）…クロックイネーブル信号；ＣＬＫ…クロック；ＤＡＴＡ（ＤＡＴＡ０−ＤＡＴＡ７）…データ領域；ＤＥＬＲＱ…削除要求；ＤＴＳＥＬ…データＤＴデータセレクタ；Ｆ（Ｆ０−Ｆ７）…検出パルス信号；ＦＤＥＴ…検出部；ＨＩＴ…ヒット信号；ＩＤＸＡＤ…インデックスアドレス；ＭＡＲＱ…メモリアクセス要求；ＭＤＴ…データ；ＭＳＫＳＥＴ…マスクセット信号；ＭＳＫ０−ＭＳＫ７…マスクビット；ＰＴ（ＰＴ０−ＰＴ７）…電源スイッチ；ＰＵＲＧ…パージ信号；ＰＷＲ（ＰＷＲ０−ＰＷＲ７）…電源制御信号；Ｒ（Ｒ０−Ｒ７）…検出パルス信号；ＲＡＭＣＬＫ（ＲＡＭＣＬＫ０−ＲＡＭＣＬＫ７）…クロック；ＲＤＥＴ…検出部；ＲＥＧＳＥＴ…変更信号；ＲＱＨＬＤ…リクエスト抑止信号；ＳＥＬ…セレクタ；ＳＥＴＲＱ…セット要求；ＳＧＥＮ…信号生成部；ＴＡＧ（ＴＡＧ０−ＴＡＧ７）…タグ領域；ＴＡＧＡＤ…タグアドレス；ＴＡＧＤＴ…タグデータ；ＷＡＹ（ＷＡＹ０−ＷＡＹ７）…ウェイ；ＷＳＥＬ…ウェイ選択信号
【図１】
0006477352.tif 000002
【図２】
0006477352.tif 000003
【図３】
0006477352.tif 000004
【図４】
0006477352.tif 000005
【図５】
0006477352.tif 000006
【図６】
0006477352.tif 000007
【図７】
0006477352.tif 000008
【図８】
0006477352.tif 000009
【図９】
0006477352.tif 000010
【図１０】
0006477352.tif 000011
【図１１】
0006477352.tif 000012
【図１２】
0006477352.tif 000013
【図１３】
0006477352.tif 000014
【図１４】
0006477352.tif 000015
【図１５】
0006477352.tif 000016
【図１６】
0006477352.tif 000017
【図１７】
0006477352.tif 000018
【図１８】
0006477352.tif 000019
【図１９】
0006477352.tif 000020
【図２０】
0006477352.tif 000021
【図２１】
0006477352.tif 000022