(57)【要約】【課題】性能維持と消費電力削減とのバランスをとったメモリ装置を提供する。【解決手段】メモリ装置は、複数のウェイと、複数のウェイへのアクセス履歴を保持するレジスタと、アクセスリクエストとアクセス履歴とに応じて複数のウェイのうちの１つ又は複数のウェイを選択し、選択したウェイを動作させ且つ選択したウェイ以外のウェイを非動作とするウェイ制御部とを含み、ウェイ制御部は、選択するウェイの数をアクセスリクエストに応じて動的に変化させることを特徴とする。【選択図】図２
2014085890.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイと、
前記複数のウェイへのアクセス履歴を保持するレジスタと、
アクセスリクエストと前記アクセス履歴とに応じて前記複数のウェイのうちの１つ又は複数のウェイを選択し、前記選択したウェイを動作させ且つ前記選択したウェイ以外のウェイを非動作とするウェイ制御部と
を含み、前記ウェイ制御部は、前記選択するウェイの数を前記アクセスリクエストに応じて動的に変化させることを特徴とするメモリ装置。
【請求項２】
前記アクセスリクエストに応じて前記複数のウェイのうちでアクセス先に一致するヒットウェイを特定する一致判定部と、
前記アクセス履歴と前記ヒットウェイとに応じて前記選択するウェイの数を決定するモード決定部と
を更に含むことを特徴とする請求項１記載のメモリ装置。
【請求項３】
前記アクセス履歴は、各ウェイが最後にアクセスされた時刻の順に前記複数のウェイを並べた場合の並び順を示す並び順情報を含み、
前記モード決定部は、前記ヒットウェイが前記並び順において時刻の新しい方から何個目のウェイであるかを特定し、前記特定された個数を前記選択するウェイの数とする
ことを特徴とする請求項２記載のメモリ装置。
【請求項４】
前記１つ又は複数のウェイを選択する動作は、前記ヒットウェイを特定する動作よりも前に実行されることを特徴とする請求項２又は３記載のメモリ装置。
【請求項５】
命令制御部と、
演算器と、
キャッシュメモリと
を含む演算処理装置であって、前記キャッシュメモリは、
複数のウェイと、
前記複数のウェイへのアクセス履歴を保持するレジスタと、
前記命令制御部からのアクセスリクエストと前記アクセス履歴とに応じて前記複数のウェイのうちの１つ又は複数のウェイを選択し、前記選択したウェイを動作させ且つ前記選択したウェイ以外のウェイを非動作とするウェイ制御部と
を含み、前記ウェイ制御部は、前記選択するウェイの数を前記アクセスリクエストに応じて動的に変化させることを特徴とする演算処理装置。
【請求項６】
複数のウェイへの過去のアクセスの履歴をインデックス毎に示したデータから、アクセス対象インデックスに対応するアクセス履歴を取り出し、
前記アクセス履歴に基づいて前記複数のウェイのうちの１つ又は複数のウェイを選択し、
前記選択した１つ又は複数のウェイを動作状態とし且つ前記選択した１つ又は複数のウェイ以外のウェイを非動作とし、
前記動作状態の１つ又は複数のウェイから１つ又は複数のデータをそれぞれ読み出し、
前記アクセス対象インデックスに応じてタグを参照してヒットウェイを特定し、
前記読み出された１つ又は複数のデータのうち１つのデータを前記特定されたヒットウェイに応じて選択し、
前記選択するウェイの数を前記ヒットウェイに応じて変化させる
各段階を含むことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、メモリ装置、演算処理装置、及びキャッシュメモリ制御方法に関する。
【背景技術】
【０００２】
システム全体の電力効率を向上させるためには、システム中で大きな電力を消費するプロセサの消費電力を削減することが重要であり、性能への影響を小さくしつつ電力消費を削減する方法が模索されている。プロセサに内蔵されるキャッシュメモリの記憶素子として使用されるキャッシュＲＡＭ（Cache Random Access Memory）の省電力の方法として、不使用のＲＡＭチップやＲＡＭモジュールへのクロック供給を止める方法や、チップイネーブルをオフにする方法が検討されてきた。例えば、キャッシュにおいて動作の予測されるウェイを特定し、予測されたウェイのみをメモリイネーブル信号により動作させて低消費電力化を図る方法等がある（例えば特許文献１）。
【０００３】
予測されたウェイ以外のウェイを動作させていない場合、予測が外れてしまうと再度のキャッシュ動作が必要になるために、性能が低下してしまう。このような性能低下を可能な限り避けながら消費電力を削減するために、性能維持と消費電力削減とのバランスをとることが好ましい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３２８８３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上を鑑みると、性能維持と消費電力削減とのバランスをとったメモリ装置が望まれる。
【課題を解決するための手段】
【０００６】
メモリ装置は、複数のウェイと、前記複数のウェイへのアクセス履歴を保持するレジスタと、アクセスリクエストと前記アクセス履歴とに応じて前記複数のウェイのうちの１つ又は複数のウェイを選択し、前記選択したウェイを動作させ且つ前記選択したウェイ以外のウェイを非動作とするウェイ制御部とを含み、前記ウェイ制御部は、前記選択するウェイの数を前記アクセスリクエストに応じて動的に変化させることを特徴とする。
【０００７】
キャッシュメモリ制御方法は、複数のウェイへの過去のアクセスの履歴をインデックス毎に示したデータから、アクセス対象インデックスに対応するアクセス履歴を取り出し、前記アクセス履歴に基づいて前記複数のウェイのうちの１つ又は複数のウェイを選択し、前記選択した１つ又は複数のウェイを動作状態とし且つ前記選択した１つ又は複数のウェイ以外のウェイを非動作とし、前記動作状態の１つ又は複数のウェイから１つ又は複数のデータをそれぞれ読み出し、前記アクセス対象インデックスに応じてタグを参照してヒットウェイを特定し、前記読み出された１つ又は複数のデータのうち１つのデータを前記特定されたヒットウェイに応じて選択し、前記選択するウェイの数を前記ヒットウェイに応じて変化させる各段階を含むことを特徴とする。
【発明の効果】
【０００８】
少なくとも１つの実施例によれば、性能維持と消費電力削減とのバランスをとったメモリ装置が提供される。
【図面の簡単な説明】
【０００９】
【図１】演算処理システムの構成の一例を示す図である。
【図２】命令キャッシュの構成の一例を示す図である。
【図３】命令キャッシュのパイプライン動作の一例を示す図である。
【図４】ウェイ予測部の構成の一例を示す図である。
【図５】パワーセーブ部の構成の一例を示す図である。
【図６】モード決定部の構成の一例を示す図である。
【図７】キャッシュＲＡＭの動作制御の一例を示す図である。
【図８】命令キャッシュの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１１】
図１は、演算処理システムの構成の一例を示す図である。図１の演算処理システムは、演算器１０、命令制御部１１、命令キャッシュ１２、データキャッシュ１３、２次キャッシュ１４、及び主記憶装置１５を含む。演算器１０、命令制御部１１、命令キャッシュ１２、データキャッシュ１３、及び２次キャッシュ１４を含む部分が演算処理装置であり、この演算処理装置が主記憶装置１５のデータに基づいて演算処理を行う。図１において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。
【００１２】
命令制御部１１は、命令キャッシュ１２から命令をフェッチするための命令フェッチリクエスト（アセスリクエスト）を命令キャッシュ１２に発行する。命令キャッシュ１２は、命令フェッチリクエストに応答して、リクエストされたアドレスに格納される命令を命令制御部１１に供給する。命令制御部１１は、命令キャッシュ１２からフェッチした命令をデコードし、デコード結果に応じて演算器１０による演算命令の実行を制御する。また命令制御部１１は、ロード命令やストア命令等のアクセスリクエストをデータキャッシュ１３に発行し、１次キャッシュメモリ３２に対するデータのロードやデータのストアを実行する。
【００１３】
命令キャッシュ１２及びデータキャッシュ１３は１次キャッシュメモリである。１次キャッシュメモリと、２次キャッシュ１４と、主記憶装置１５とは、メモリの階層構造を形成している。１次キャッシュメモリである命令キャッシュ１２又はデータキャッシュ１３においてアクセスがヒットしない場合、下位メモリである２次キャッシュメモリ１４へのアクセスが実行される。更に２次キャッシュ１４へのアクセスがヒットしない場合、下位メモリである主記憶装置１５へのアクセスが実行される。このようにして、キャッシュミスの場合には下位メモリにアクセスし、下位メモリに格納されているアクセスの対象であるデータを、キャッシュメモリの該当するキャッシュラインに転送する。この際、該当インデックスの全てのウェイにおいて有効なキャッシュデータが存在する場合には、最も必要性の低いデータ（例えば最後にアクセスされてから最も時間が経過しているデータ）を、アクセス対象のデータで置き換えるリプレースが実行される。
【００１４】
図２は、命令キャッシュ１２の構成の一例を示す図である。以下、命令キャッシュ１２を例に用いてメモリ装置の構成及び動作を説明するが、これは一例に過ぎず、命令キャッシュ１２の代わりにデータキャッシュ１３或いは２次キャッシュ１４が、同様の構成を有し同様の動作を実行するメモリ装置であってよい。
【００１５】
図２に示す命令キャッシュ１２は、ポート２１、セレクタ２２、ＴＬＢ（Translation Lookaside Buffer）部２３、タグ部２４、一致判定部２５、ウェイ予測部２６、予測ヒット判定部２７、パワーセーブ部２８、及びアボート通知部２９を含む。命令キャッシュ１２は更に、キャッシュＲＡＭ３０−１乃至３０−４（ＲＡＭＷＯ乃至ＲＡＭＷ３）、セレクタ３１、及び命令バッファ３２（ＩＢＵＦ）を含む。
【００１６】
命令キャッシュ１２は、複数のキャッシュラインを含み、下位メモリから命令キャッシュ１２への情報のコピーはキャッシュライン単位で実行される。主記憶装置１５のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。命令キャッシュ１２の容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【００１７】
一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュメモリのインデックスとなり、それより上位に位置する残りのビットがキャッシュメモリのタグとなる。タグ部２４が、これらのインデックスに対応するタグを格納している。なお図２に示す命令キャッシュ１２では、ウェイが４つ存在する４ウェイ構成を想定している。従って、各インデックスに対して、４つのウェイに対応する４つのタグが格納される。命令キャッシュ１２は、主記憶装置１５に記憶されたデータの一部を、複数のウェイ毎に設けられた複数のキャッシュラインに保持することになる。
【００１８】
アクセスリクエスト（Ｉ−Ｆｅｔｃｈ−Ｒｅｑｕｅｓｔ）が到来すると、当該アクセスリクエストがポート２１に格納されると共に、セレクタ２２を介して、アクセスリクエスト中のアクセス先を示すアドレスが送出される。このアドレスは、ＴＬＢ部２３、タグ部２４、ウェイ予測部２６、及びキャッシュＲＡＭ３０−１乃至３０−４に供給される。ＴＬＢ部２３は、アクセス先の仮想アドレスを物理アドレスへと変換する。タグ部２４は、アドレス中のインデックス部分を用いて、タグ部２４中の対応するインデックスのタグを出力する。４つのウェイを想定しているので、４つのタグが出力される。
【００１９】
一致判定部２５は、タグ部２４が出力する４つのタグとＴＬＢ部２３が変換した物理アドレスのタグ部分とを比較し、これらのタグのビットパターンが一致するか否かを判断する。一致判定部２５は、一致したタグのウェイ即ちヒットウェイを特定するウェイＩＤを出力する。なおタグ部２４が出力する４つのタグのうちの何れかのタグが一致する場合には、当該アクセスはキャッシュヒットとなる。タグ部２４が出力する何れのタグについても一致しない場合には、当該アクセスはキャッシュミスとなる。このようにして一致判定部２５は、アクセスリクエストに応じて複数のウェイのうちでアクセス先に一致するヒットウェイを特定する。特定されたヒットウェイのウェイＩＤは、一致判定部２５からポート２１に供給されて格納されると共に、ウェイ予測部２６、予測ヒット判定部２７、及びセレクタ３１に供給される。
【００２０】
キャッシュＲＡＭ３０−１乃至３０−４は、それぞれ４つのウェイに対応して設けられる。後述するように、キャッシュＲＡＭ３０−１乃至３０−４のうちで、パワーセーブ部２８により選択される１つ又は複数のキャッシュＲＡＭが動作し、その他のキャッシュＲＡＭは非動作状態となる。即ち、４つのウェイのうちで、選択されたウェイのみが動作状態となる。動作状態にあるキャッシュＲＡＭ３０−１乃至３０−４は、セレクタ２２から供給されるアドレス中のインデックスに対応するデータを出力する。セレクタ３１は、一致判定部２５から供給されるヒットウェイのウェイＩＤに応じて、当該ウェイＩＤに一致するウェイの出力データを選択する。例えば、０番目のウェイがヒットウェイである場合、０番目のキャッシュＲＡＭ３０−１の出力データがセレクタ３１により選択される。選択された出力データは、命令バッファ３２に格納される。なおヒットウェイに対応するキャッシュＲＡＭが非動作状態の場合、後述するようにアボート通知部２９がアボートを命令制御部１１に通知するので、命令制御部１１により命令バッファ３２の格納値が参照されることはない。ヒットウェイに対応するキャッシュＲＡＭが動作状態の場合、後述するようにアボート通知部２９がＳＴＶを命令制御部１１に通知するので、命令制御部１１により命令バッファ３２の格納値が参照される。
【００２１】
このようにして、キャッシュヒットの場合、ヒットしたキャッシュデータが命令制御部１１に供給される。キャッシュミスの場合には、２次キャッシュ１４又は主記憶装置１５に格納されている当該アクセスの対象であるデータを、命令制御部１１の該当するキャッシュラインに転送する。
【００２２】
ウェイ予測部２６は、複数のウェイへのアクセス履歴を保持するレジスタを含む。このアクセス履歴は各インデックス毎にレジスタに格納されている。セレクタ２２から供給されるアクセス先のアドレスのインデックス部分に応じて、ウェイ予測部２６は、当該インデックス（アクセス対象インデックス）に対応するアクセス履歴を出力する。このアクセス履歴は、当該インデックスに対して、各ウェイが最後にアクセスされた時刻の順に複数のウェイ（この例では４つのウェイ）を並べた場合の並び順を示す並び順情報を含む。即ち、当該インデックスに対して４つのウェイＷ０、Ｗ１、Ｗ２、Ｗ３が、時間的に例えばＷ２、Ｗ１、Ｗ０、Ｗ３の順番にアクセスされたならば、この並び順（Ｗ２、Ｗ１、Ｗ０、Ｗ３）を示す情報がアクセス履歴に含まれることになる。言葉を換えて言えば、アクセス履歴をチェックすることにより、４つのウェイが過去にアクセスされた順番を知ることができる。ウェイ予測部２６から出力されたアクセス履歴は、予測ヒット判定部２７とパワーセーブ部２８とに供給される。なおウェイ予測部２６のレジスタが保持するアクセス履歴は、一致判定部２５からのヒットウェイのウェイＩＤに基づいて更新される。
【００２３】
パワーセーブ部２８は、ウェイ予測部２６から供給されるアクセス対象インデックスのアクセス履歴に応じて、複数のウェイ（この例では４つのウェイ）のうちの１つ又は複数のウェイを選択する。具体的には、選択すべき個数Ｎが指定されている状態において、複数のウェイ（この例では４つのウェイ）のうちでアクセスの最も新しい方からアクセスの新しいＮ個分のウェイを選択する。即ち、供給されたアクセス履歴が示す並び順において、アクセスが最新のものから順番にアクセスの新しいＮ個のウェイを選択する。パワーセーブ部２８は、キャッシュＲＡＭ３０−１乃至３０−４にチップイネーブル信号ＷＡＹ［０：３］ＣＥを供給することで、選択したＮ個のウェイを動作させ且つ選択したウェイ以外のウェイを非動作とする。なおこの例ではチップイネーブル信号により各キャッシュＲＡＭ３０−１乃至３０−４の動作及び非動作を制御しているが、例えば各キャッシュＲＡＭへのクロック信号の供給をオン及びオフすることにより各キャッシュＲＡＭの動作及び非動作を制御してもよい。
【００２４】
なおウェイ予測部２６又はパワーセーブ部２８に含まれるモード決定部が、アクセス履歴とヒットウェイとに応じて選択するウェイの個数Ｎを決定する。具体的には、モード決定部は、アクセスリクエストにより定まるヒットウェイが上記並び順（アクセス履歴が示す並び順）において時刻の新しい方から何個目（例えばＭ個目）のウェイであるかを特定し、この特定された個数Ｍを選択するウェイの個数Ｎとしてよい。
【００２５】
このようにしてウェイ予測部２６とパワーセーブ部２８とが、ウェイ予測に基づきウェイの動作及び非動作を制御するウェイ制御部として機能する。即ち、このウェイ制御部は、上述のように、アクセス先のアドレスを含むアクセスリクエストとアクセス履歴とに応じて複数のウェイのうちの１つ又は複数（Ｎ個）のウェイを選択し、選択したウェイを動作させ且つ選択したウェイ以外のウェイを非動作とする。そして、このウェイ制御部に含まれるモード決定部が、選択するウェイの個数Ｎをアクセスリクエスト（より具体的にはアクセスリクエストにより定まるヒットウェイ）に応じて動的に変化させる。
【００２６】
予測ヒット判定部２７は、パワーセーブ部２８からの動作状態キャッシュＲＡＭを特定する情報と一致判定部２５からのヒットウェイのウェイＩＤとに応じて、予測がヒットしたか否かを判定する。後述するように、ウェイ制御部（ウェイ予測部２６及びパワーセーブ部２８）による１つ又は複数のウェイを選択する動作（予測動作）は、一致判定部２５によりヒットウェイを特定する動作よりも時間的に前に実行される。従って、予測に基づいてキャッシュＲＡＭを予め動作状態としてデータを出力させ、一致判定部２５によりヒットウェイが特定されると直ちにセレクタ３１によりヒットウェイのデータを選択することで、高速なキャッシュデータ読み出しを実現できる。予測ヒット判定部２７では、動作状態とされたキャッシュＲＡＭのうちの１つがヒットウェイであれば、予測がヒットしたと判定する。動作状態とされたキャッシュＲＡＭの何れもヒットウェイでないならば、予測がミスしたと判定する。
【００２７】
アボート通知部２９は、予測ヒット判定部２７のヒット判定に基づいて、アボート信号又はＳＴＶ信号を出力する。ヒット判定の場合、アボート通知部２９は、ＳＴＶ信号を出力する。このＳＴＶ信号に応答して、命令制御部１１が命令バッファ３２のデータを参照する。ミス判定の場合、アボート通知部２９は、アボート信号を出力する。このアボート信号により、命令制御部１１は、キャッシュデータが未だ用意できていないことを知ることができる。
【００２８】
アボート通知部２９によりアボートが通知された場合、命令キャッシュ１２は、ポート２１に格納されているアクセスリクエスト及びポート２１に格納されているヒットウェイのウェイＩＤに基づいて、再度キャッシュＲＡＭの読み出し動作を実行する。この場合、ポート２１に格納されているアクセスリクエストのアクセス先アドレスが、セレクタ２２を介して、ＴＬＢ部２３、タグ部２４、ウェイ予測部２６、及びキャッシュＲＡＭ３０−１乃至３０−４に供給される。またポート２１に格納されているヒットウェイのウェイＩＤが、ウェイ予測部２６に供給される。ウェイ予測部２６及びパワーセーブ部２８を含むウェイ制御部は、ヒットウェイのウェイＩＤに対応するキャッシュＲＡＭのみを動作させるように、チップイネーブル信号ＷＡＹ［０：３］ＣＥを生成する。これにより、２回目のキャッシュ読み出し動作では、ヒットウェイの情報を用いて確実にデータを読み出すことができる。
【００２９】
図３は、命令キャッシュのパイプライン動作の一例を示す図である。図３に示すように、キャッシュ読み出し動作は、Ｐ、Ｔ、Ｍ、Ｂ、及びＲの５つのサイクルを含む。サイクルＰにおいて、リクエストアドレスが供給される。初回のキャッシュ読み出し動作（即ちアボート後のキャッシュ読み出し動作ではない初回のキャッシュ読み出し動作）では、ポートからのウェイＩＤは供給されない。
【００３０】
サイクルＴでは、ＴＬＢ部２３によるＴＬＢアドレス変換動作２３Ａ、タグ部２４によるタグ読み出し動作２４Ａ、及びウェイ予測部２６及びパワーセーブ部２８によるウェイ予測動作２６Ａが実行される。なお図３において、各要素３２は、フリップフロップによるデータラッチ動作を示す。
【００３１】
サイクルＭでは、一致判定部２５による一致判定動作２５Ａ、予測ヒット判定部２７による予測ヒット判定動作２７Ａ、及びキャッシュＲＡＭ３０−１乃至３０−４によるデータ読み出し動作３０Ａが実行される。前述のように、ウェイ制御部（ウェイ予測部２６及びパワーセーブ部２８）によるウェイ予測動作２６Ａは、一致判定部２５による一致判定動作２５Ａよりも前のサイクルで実行される。従って、予測に基づいてキャッシュＲＡＭを予め動作状態とすることにより、一致判定部２５による一致判定動作２５Ａと並行して、予測に基づき動作状態とされたキャッシュＲＡＭからのデータ読み出し動作３０Ａを実行することができる。
【００３２】
サイクルＢでは、一致判定動作２５Ａにより特定したヒットウェイのウェイＩＤをポート２１に格納するポート格納処理２１Ａ、セレクタ３１によるヒットウェイのデータ選択処理３１Ａ、及びアボート通知部２９によるアボート通知処理２９Ａが実行される。最後のサイクルＲでは、アボート信号又はＳＴＶ信号の送出、及び、命令バッファ３２へのデータ格納処理３２Ａが実行される。
【００３３】
図４は、ウェイ予測部の構成の一例を示す図である。ウェイ予測部２６は、一時格納レジスタ４１、セレクタ４２−１乃至４２−３、一時格納レジスタ４３、デコーダ４４、アクセス履歴レジスタ４５、セレクタ４６、及びデコーダ４７を含む。
【００３４】
アクセス履歴レジスタ４５は、複数のウェイへのアクセス履歴を保持する。このアクセス履歴は各インデックス毎（１〜Ｎ）に格納されている。アクセス履歴は、インデックス毎に、各ウェイが最後にアクセスされた時刻の順に複数のウェイ（この例では４つのウェイ）を並べたものである。図４においては、４つ並ぶウェイＩＤのうちで、最も左側のウェイＩＤが示すウェイが最後にアクセスされたものであり、最も右側のウェイＩＤが示すウェイが最も過去にアクセスされたものである。
【００３５】
セレクタ２２から供給されるアクセス先のアドレスのインデックス部分をデコーダ４４がデコードし、アクセス対象インデックスのみをイネーブルにするチップイネーブル信号ＣＥ［０：Ｎ］を生成する。これに応じて、アクセス履歴レジスタ４５は、当該インデックス（アクセス対象インデックス）に対応するアクセス履歴を出力する。同様にアクセス先のアドレスのインデックス部分をデコードするデコーダ４７により、アクセス履歴レジスタ４５から出力されたアクセス履歴をセレクタ４６により選択する。セレクタ４６が選択したアクセス履歴は、パワーセーブ部２８に供給されると共に、一時格納レジスタ４１に格納される。
【００３６】
一致判定部２５からヒットウェイのウェイＩＤが供給されると、セレクタ４２−１乃至４２−３により、ヒットウェイ以外のウェイを選択するように４つのウェイＩＤから３つのウェイＩＤを選択する。選択された３つのウェイＩＤとヒットウェイのウェイＩＤとが、一時格納レジスタ４３に格納され、更にアクセス履歴レジスタ４５に書き込まれる。このようにしてアクセス履歴レジスタ４５が保持するアクセス履歴は、一致判定部２５からのヒットウェイのウェイＩＤに基づいて更新される。
【００３７】
図５は、パワーセーブ部の構成の一例を示す図である。パワーセーブ部２８は、一時格納レジスタ５１、デコーダ５２−１乃至５２−４、セレクタ５３−１乃至５３−４、及びセレクタ５４−１乃至５４−４を含む。一時格納レジスタ５１は、ウェイ予測部２６から供給されたアクセス履歴の４つのウェイＩＤを格納する。デコーダ５２−１乃至５２−４は、それぞれ対応するウェイＩＤ（２ビット）をデコードし、４本の出力信号線のうちでウェイＩＤが示す番号に相当する出力信号線をアサートする。残りの３本の出力信号線はネゲート状態となる。即ち、デコーダ５２−１乃至５２−４の各々は、入力ウェイＩＤがｎ番（ｎ＝１〜４）を示す場合、左からｎ番目の出力信号線のみをアサートする。
【００３８】
セレクタ５３−１乃至５３−４の各々は、４つのアクセス時間の順番にそれぞれ対応する４本の入力信号線のうちの１つ又は複数の入力信号線を選択する。具体的には、選択すべき個数Ｎがパワーセーブモード信号ＰＭＯＤＥ［１：０］により指定されている状態において、アクセスの新しい側のＮ本の入力信号線を選択する。なお各セレクタ５３−１乃至５３−４において、入力に接続されている４本の入力信号線は、アクセスの新しい順番に左側から並んでいる。例えばセレクタ５３−１は、キャッシュＲＡＭ３０−１のウェイＷＯに対応し、その４本の入力信号線は、ウェイＷＯのアクセスされた順番を示している。即ち、４つのウェイのうちでウェイＷＯが最後からｋ番目にアクセスされたのであれば、左からｋ番目の入力信号線が１であり、残りの入力信号線は０となっている。パワーセーブモード信号ＰＭＯＤＥ［１：０］がＮ（Ｎ＝１〜４）を示す場合、セレクタ５３−１乃至５３−４の各々は、左からＮ本の入力信号線を選択し、選択された信号線の信号値のＯＲ値を出力する。
【００３９】
セレクタ５４−１乃至５４−４は、アボート後でない初回のキャッシュ読み出し動作においては、それぞれセレクタ５３−１乃至５３−４の出力を選択して出力する。セレクタ５４−１乃至５４−４は、アボート後である２回目のキャッシュ読み出し動作においては、ポート２１からのウェイＩＤを選択して出力する。
【００４０】
パワーセーブ部２８は、キャッシュＲＡＭ３０−１乃至３０−４にチップイネーブル信号Ｗ０−ＣＥ、Ｗ１−ＣＥ、Ｗ２−ＣＥ、及びＷ３−ＣＥ（図２のＷＡＹ［０：３］ＣＥ）のそれぞれを供給する。これにより、選択したＮ個のウェイを動作させ且つ選択したウェイ以外のウェイを非動作とする。
【００４１】
図６は、モード決定部の構成の一例を示す図である。モード決定部は、一時格納レジスタ６１、一致回路６２−１乃至６２−４、一時格納レジスタ６３、及びエンコーダ６４を含む。一時格納レジスタ６１は、ウェイ予測部２６から供給されるアクセス対象インデックスのアクセス履歴である４つのウェイＩＤを格納する。一時格納レジスタ６３は、一致判定部２５から供給されるヒットウェイのウェイＩＤを格納する。一致回路６２−１乃至６２−４の各々は、対応するアクセス履歴のウェイＩＤとヒットウェイのウェイＩＤとを比較して、一致する場合には出力をアサートする。一致回路６２−１乃至６２−４のそれぞれの４つの出力のうち、ヒットウェイに対応する１つの出力のみがアサート状態となる。一時格納レジスタ６１に格納される４つのウェイＩＤは、左から新しいアクセス順に並んでいるので、一致回路６２−１乃至６２−４のアサート出力は、ヒットウェイが最後にアクセスされた順番を示すことになる。即ち、一致回路６２−１乃至６２−４のアサート出力は、アクセスリクエストにより定まるヒットウェイが一時格納レジスタ６１のウェイＩＤの並び順（アクセス履歴が示す並び順）において時刻の新しい方から何個目（例えばＭ個目）のウェイであるかを特定する。エンコーダ６４は、一致回路６２−１乃至６２−４の出力をエンコードすることにより、この特定された個数Ｍを示すパワーセーブモード信号ＰＭＯＤＥ［１：０］を出力する。
【００４２】
図７は、キャッシュＲＡＭの動作制御の一例を示す図である。図７において、制御信号ＣＥは、パワーセーブ部２８が生成するチップイネーブル信号である。この制御信号ＣＥをＲＡＭ７２のチップイネーブル入力に印加して、直接にＲＡＭ７２の動作及び非動作を制御してよい。また或いは、図７に示すように制御信号ＣＥとクロック信号ＣｌｏｃｋとのＡＮＤをとり、ＡＮＤの結果をＲＡＭ７２にクロック信号として供給してよい。即ち、制御信号ＣＥにより、ＲＡＭ７２へのクロック信号の供給及び停止を制御してよい。
【００４３】
図８は、命令キャッシュの動作の一例を示すフローチャートである。ステップＳ１で、ヒストリーを検索する。即ち、ウェイ予測部２６のアクセス履歴レジスタ４５からアクセス対象インデックスのアクセス履歴を抽出する。ステップＳ２で、パワーセーブモード信号に基づいて、上記抽出したアクセス履歴から１つ又は複数のウェイを選択する。選択したウェイ以外のウェイが、省電力の対象となるウェイとなる。ステップＳ３で、キャッシュＲＡＭ３０−１乃至３０−４のチップイネーブル信号ＣＥを制御する。ステップＳ４で、タグ部２４を検索してヒットウェイを特定する。ステップＳ５で、ポート２１にヒットウェイを示すウェイＩＤを記録する。ステップＳ６で、ヒットウェイによりアクセス履歴を更新する。
【００４４】
ステップＳ７で、ウェイ予測が成功したか否かを判定する。即ち、予測ヒット判定部２７により予測がヒットしたか否かを判定する。予測が成功した場合（ステップＳ７でＹｅｓ）、ステップＳ８で、モード決定部により、アクセス履歴においてヒットウェイが新しい方から何番目のウェイであるのかに応じて、パワーセーブモード信号の値を変化させる。ステップＳ９で、命令制御部１１へデータを返す。このときアボート通知部２９からのＳＴＶ信号がアサートされる。
【００４５】
予測が失敗した場合（ステップＳ７でＮｏ）、ステップＳ１０で、リクエストを実行し直す。即ち、ステップＳ１１で、予測が失敗したアクセス処理でのヒットウェイをポート２１から読み出し、ステップＳ３以降の処理を再実行する。
【００４６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００４７】
１０  演算器
１１  命令制御部
１２  命令キャッシュ
１３  データキャッシュ
１４  ２次キャッシュ
１５  主記憶装置
２１  ポート
２２  セレクタ
２３  ＴＬＢ部
２４  タグ部
２５  一致判定部
２６  ウェイ予測部
２７  予測ヒット判定部
２８  パワーセーブ部
２９  アボート通知部
３０−１乃至３０−４  キャッシュＲＡＭ
３１  セレクタ
３２  命令バッファ
【図１】
2014085890.tif 000003
【図２】
2014085890.tif 000004
【図３】
2014085890.tif 000005
【図４】
2014085890.tif 000006
【図５】
2014085890.tif 000007
【図６】
2014085890.tif 000008
【図７】
2014085890.tif 000009
【図８】
2014085890.tif 000010