(57)【要約】【課題】メモリデバイスの消費電力を減らす方法およびシステムを提供する。【解決手段】本願発明の一実施形態では、メモリデバイスは、Ｎウェイセットアソシエイティブレベル１（Ｌ１）キャッシュメモリである。論理回路がデータキャッシュメモリと結合され、ロード命令または保存命令に応じて、ＮウェイセットアソシエイティブＬ１キャッシュメモリのＮウェイの一部のみへのアクセスを促す。本願発明の一実施形態では、ロードリクエストまたは保存リクエストのそれぞれに応じた、ＮウェイセットアソシエイティブＬ１キャッシュメモリへのアクセスのウェイの数を減らすことにより、ＮウェイセットアソシエイティブＬ１キャッシュメモリの電力要件を減らす。本願発明の一実施形態では、キャッシュメモリへのアクセスにＮウェイセットアソシエイティブＬ１キャッシュメモリのデータアレイのみが必要であると予測される場合には、フィルバッファへのアクセスは、無効にされるか、ディスエーブルされる。【選択図】図１
2013529816.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイを有するデータキャッシュメモリと、
前記データキャッシュメモリと結合され、ロード命令または保存命令に応じて、前記データキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促す論理回路と
を備える、装置。
【請求項２】
前記論理回路が前記データキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促すとは、前記データキャッシュメモリの仮想アドレスのアドレスビットに少なくとも部分的に基づいて、前記データキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促すことである、請求項１に記載の装置。
【請求項３】
前記データキャッシュメモリは、データアレイを有し、
前記論理回路はさらに、前記データアレイの連続したキャッシュメモリヒットの数がしきい値を超えるかどうか決定する、請求項１に記載の装置。
【請求項４】
前記データキャッシュメモリは、前記複数のウェイを含むタグアレイを有し、
前記論理回路はさらに、前記データアレイの前記連続したキャッシュメモリヒットの数が前記しきい値を超えたとの決定に応じて、前記タグアレイの前記複数のウェイの一部のみへのアクセスを促す、請求項３に記載の装置。
【請求項５】
１以上のフィルバッファをさらに備え、
前記論理回路はさらに、前記データアレイの前記連続したキャッシュメモリヒットの数が前記しきい値を超えたとの決定に応じて、前記１以上のフィルバッファと関連付けられた論理回路をディスエーブルする、請求項３に記載の装置。
【請求項６】
前記論理回路はさらに、
前記データアレイのキャッシュメモリミスがあるかどうかを決定し、
前記データアレイのキャッシュメモリミスがあるとの決定に応じて前記１以上のフィルバッファに関連付けられた前記論理回路をイネーブルする、請求項５に記載の装置。
【請求項７】
前記論理回路はさらに、
前記ロード命令または前記保存命令に関連付けられた仮想アドレスが、他の仮想アドレスにマッピングされた物理アドレスのインデックスとなるかどうかを決定し、
前記ロード命令または前記保存命令に関連付けられた前記仮想アドレスが、前記他の仮想アドレスにマッピングされた前記物理アドレスのインデックスとなるとの決定に応じて、前記データキャッシュメモリの前記複数のウェイの全てのウェイへのアクセスを促す、請求項４に記載の装置。
【請求項８】
レベル１（Ｌ１）ノンブロッキングキャッシュメモリと、
前記Ｌ１ノンブロッキングキャッシュメモリに結合された論理回路と
を備え、
前記論理回路が、
前記Ｌ１ノンブロッキングキャッシュメモリのキャッシュメモリヒットの連続したクロックの数がしきい値を超えるかどうかを決定し、
前記Ｌ１ノンブロッキングキャッシュメモリの前記キャッシュメモリヒットの連続したクロックの数が前記しきい値を超えたとの決定に応じて、複数のフィルバッファへのアクセスを無効にする、装置。
【請求項９】
前記論理回路はさらに、
前記Ｌ１ノンブロッキングキャッシュメモリのキャッシュメモリミスがあるかどうかを決定し、
前記Ｌ１ノンブロッキングキャッシュメモリのキャッシュメモリミスがあるとの決定に応じて前記複数のフィルバッファへの前記アクセスを有効にする、請求項８に記載の装置。
【請求項１０】
前記Ｌ１ノンブロッキングキャッシュメモリは、Ｎウェイデータアレイを有するＮウェイセットアソシエイティブキャッシュメモリであり、
前記Ｎウェイデータアレイが、２以上のグループに分割され、
前記論理回路はさらに、
前記Ｎウェイセットアソシエイティブキャッシュメモリにアクセスすることを要求するロードリクエストまたは保存リクエストを受信し、
前記受信したロードリクエストまたは保存リクエストに応じて前記Ｎウェイデータアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とする、請求項８に記載の装置。
【請求項１１】
前記論理回路が前記Ｎウェイデータアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とするとは、前記Ｌ１ノンブロッキングキャッシュメモリの仮想アドレスのアドレスビットに少なくとも部分的に基づいて前記Ｎウェイデータアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とすることである、請求項１０に記載の装置。
【請求項１２】
前記Ｎウェイデータアレイの各グループは、イネーブル信号を有し、
前記論理回路が前記Ｎウェイデータアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とするとは、前記Ｎウェイデータアレイの各グループの各イネーブル信号に少なくとも部分的に基づいて前記Ｎウェイデータアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とすることである、請求項１０に記載の装置。
【請求項１３】
前記ＮウェイセットアソシエイティブキャッシュメモリはさらにＮウェイタグアレイを有し、
前記Ｎウェイタグアレイが前記２以上のグループに分割され、
前記論理回路はさらに、
前記Ｌ１ノンブロッキングキャッシュメモリの前記キャッシュメモリヒットの連続したクロックの数が前記しきい値を超えたとの決定に応じて、前記受信されたロードリクエストおよび保存リクエストに応じて、前記Ｎウェイタグアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とする、請求項１０に記載の装置。
【請求項１４】
アウトオブオーダープロセッサである、請求項８に記載の装置。
【請求項１５】
複数のウェイを有するセットアソシエイティブキャッシュメモリにアクセスすることを要求するロード命令または保存命令を受信する段階と、
前記受信されたロード命令または保存命令に応じて前記セットアソシエイティブキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促す段階と
を備える、方法。
【請求項１６】
前記セットアソシエイティブキャッシュメモリのキャッシュメモリヒットの連続したクロックの数がしきい値を超えるかどうかを決定する段階をさらに備える、請求項１５に記載の方法。
【請求項１７】
前記セットアソシエイティブキャッシュメモリの前記キャッシュメモリヒットの連続したクロックの数が前記しきい値を超えたとの決定に応じて、複数のフィルバッファへのアクセスを無効にする段階をさらに備える、請求項１６に記載の方法。
【請求項１８】
前記セットアソシエイティブキャッシュメモリのキャッシュメモリミスがあるかどうかを決定する段階と、
前記セットアソシエイティブキャッシュメモリのキャッシュメモリミスがあるとの決定に応じて、前記複数のフィルバッファへの前記アクセスを有効にする段階をさらに備える、請求項１７に記載の方法。
【請求項１９】
前記セットアソシエイティブキャッシュメモリは、前記複数のウェイを含むデータアレイを有し、
前記データアレイは、２以上のグループに分割され、
前記セットアソシエイティブキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促す段階は、前記データアレイの前記２以上のグループのうち１グループのみへのアクセスを可能とする段階を有する、請求項１５に記載の方法。
【請求項２０】
前記セットアソシエイティブキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促す段階は、前記セットアソシエイティブキャッシュメモリの仮想アドレスのアドレスビットに少なくとも部分的に基づいて前記セットアソシエイティブキャッシュメモリの前記複数のウェイの一部のみへのアクセスを促す段階を有する、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明はメモリデバイスに関する。より詳細には、本願発明はメモリデバイスの消費電力を減らす方法およびシステムに関するが、これらに限定される訳ではない。
【背景技術】
【０００２】
キャッシュメモリなどのメモリデバイスを用いた場合、主記憶装置内の直前に用いられたデータのコピーをキャッシュメモリのキャッシュライン内に保存することにより、プロセッサによる命令の実行の高速化が可能となる。プログラムがアクセスする際に、そのプログラムが要求する命令またはデータがキャッシュメモリのキャッシュライン内に保存されていれば、アクセスレイテンシを短くすることが出来る。
【０００３】
キャッシュメモリミスイベントが発生した際にプロセッサが機能停止状態となることを避けるべく、ノンブロッキングキャッシュメモリをアウトオブオーダーマイクロアーキテクチャで用いる。フィルバッファなどの専用ハードウェアを用いた場合、キャッシュメモリミスイベントが発生した際であっても、後に発行されたロードリクエストまたは保存リクエストに対応することが可能となる。フィルバッファは、どのような状態であってもキャッシュラインのコピーを保持出来、ロードリクエストまたは保存リクエストの実行の間、データキャッシュがアクセスされているときにいつでもアクセスすることが出来る。主記憶装置のメモリラインは、フィルバッファか、またはデータキャッシュのいずれかに存在し得るが、それらの両方に同時に存在することは出来ない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
レベル１キャッシュメモリは、プロセッサによって頻繁にアクセスされ、またそのサイズとセットアソシエイティブ構成は、プロセッサの性能に影響を及ぼす。例えば、レベル１キャッシュメモリは、３２キロバイトのサイズおよび８ウェイセットアソシエイティブ構成を有し得、１キャッシュメモリラインあたり６４バイトのデータを記憶できる。ロードリクエストに対応するべくレベル１キャッシュメモリにアクセスするには、キャッシュメモリのセットの８ウェイ全てを読み取り、必要なデータを得るウェイを決定しなければならない。
【図面の簡単な説明】
【０００５】
本願発明の実施形態の特徴および利点は、主題に関する下記の詳細な説明によって明らかとなる。
【図１】図１は、本願発明の一実施形態に係る処理ユニットのブロック図を示す。
【図２】図２は、本願発明の一実施形態に係るメモリ実行ユニットおよびレベル１データキャッシュメモリのブロック図を示す。
【図３】図３は、本願発明の一実施形態に係る、仮想アドレスの物理アドレスへのマッピングを示す。
【図４】図４は、本願発明の一実施形態に係る、エイリアシングイベントの処理のフローチャートを示す。
【図５】図５は、本願発明の一実施形態に係る、キャッシュメモリの消費電力を減らす方法のフローチャートを示す。
【図６】図６は、本願発明の一実施形態に係る、本明細書に開示される方法を実施するシステムを示す。
【発明を実施するための形態】
【０００６】
添付の図面を参照し、本明細書に説明される本願発明の実施形態を例示するが、本願発明はこれら実施形態に限定されるものではない。説明を簡潔および明確にするべく、図中に示す要素は、縮尺通りに描かれているとは限らない。例えば、明確に示すべく、いくつかの要素の寸法は他の要素と比し、大きく描かれていることもある。さらに、適切であると考えられる場合には、対応する、または類似する要素を示す際に、異なる図面間で、同じ参照符号を繰り返して用いる。本明細書で本願発明の「一実施形態」または「実施形態」について言及するが、その実施形態に関連して説明される特定の特徴、構造または特色が、本願発明の少なくとも一実施形態に含まれることを意味する。よって、本明細書のいくつかの箇所において「一実施形態において」と言うことがあるが、それらすべてが同一の実施形態を指すものとは限らない。
【０００７】
本願発明の実施形態は、メモリデバイスの消費電力を減らす方法およびシステムを提供する。本願発明の一実施形態では、メモリデバイスは、Ｎウェイセットアソシエイティブレベル１（Ｌ１）キャッシュメモリである。ここで、Ｎは１以上の整数である。論理回路がデータキャッシュメモリと結合され、ロード命令または保存命令に応じて、ＮウェイセットアソシエイティブＬ１キャッシュメモリのＮウェイの一部のみへのアクセスを促す。本願発明の一実施形態では、ロードリクエストまたは保存リクエストのそれぞれに応じて、ＮウェイセットアソシエイティブＬ１キャッシュメモリにアクセスするウェイの数を減らすことにより、ＮウェイセットアソシエイティブＬ１キャッシュメモリの必要電力を減らす。
【０００８】
例えば、本願発明の一実施形態では、メモリデバイスは、８ウェイセットアソシエイティブＬ１キャッシュメモリであり、４つのアクセスウェイを有するアレイをそれぞれ含む、２つのグループ（アレイグループ）へと分割される。ロード命令または保存命令が受信されると、２つのアレイグループのうち１グループのみ、つまり８ウェイセットアソシエイティブＬ１キャッシュメモリの８ウェイのうちの４ウェイのみがアクセスされる。本願発明の一実施形態では、２つのアレイグループのいずれを選択するかは、８ウェイセットアソシエイティブＬ１キャッシュメモリの仮想アドレスのアドレスビットに基づいて決定される。
【０００９】
本願発明の一実施形態では、ＮウェイセットアソシエイティブＬ１キャッシュメモリは、プロセッサ上でアウトオブオーダー命令を実行することを可能とする１以上のフィルバッファを有する。つまり、ＮウェイセットアソシエイティブＬ１キャッシュメモリは、ノンブロッキングキャッシュメモリである。本願発明の一実施形態では、キャッシュメモリへのアクセスにＮウェイセットアソシエイティブＬ１キャッシュメモリのデータアレイのみが必要であると予測される場合には、フィルバッファへのアクセスは、無効にされるか、ディスエーブルされる。本願発明の一実施形態では、フィルバッファに関連付けられた論理回路が無効にされるので、ＮウェイセットアソシエイティブＬ１キャッシュメモリの消費電力が減る。メモリデバイスは、キャッシュメモリ、キャッシュデータアレイ、キャッシュタグアレイなどを含むが、これらに限定されない。
【００１０】
図１は、本願発明の一実施形態に係る処理ユニット１０５のブロック図１００を示す。本願発明の一実施形態では、処理ユニット１０５は、命令フェッチ／発行ユニット１１０、バスコントローラ１２０、実行ユニット１３０およびＬ１データキャッシュメモリ１４０を有する。
【００１１】
処理ユニット１０５のバスコントローラ１２０は、システムインタフェース１５０と結合され、主記憶装置、レベル２キャッシュメモリ、チップセットなどを含むがこれらに限定されない他のコンポーネントに接続される。命令フェッチ／発行ユニット１１０は、システムインタフェース１５０を介しバスコントローラ１２０を通じて、または他の任意の外部バスを通じて、外部メモリまたは主記憶装置から命令をフェッチする。フェッチされた命令は、命令キャッシュメモリ１１５に保存される。本願発明の一実施形態では、バスコントローラ１２０は、処理ユニット１０５内でのキャッシュのコヒーレンシー転送を管理する。
【００１２】
実行ユニット１３０は、命令フェッチ／発行ユニット１１０がフェッチした命令を受信および実行し、加算、減算、論理積、整数乗算、メモリ動作などを含むがこれらに限定されない算術および論理演算を行う。本願発明の一実施形態では、実行ユニット１３０は、処理ユニット１０５内でのロード動作および保存動作を含むがこれらに限定されないメモリアクセス動作を実行する、メモリ実行ユニット１３５を有する。メモリ実行ユニット１３５は、スケジューラからロード命令および保存命令を受信し、ロード動作および保存動作を実行し、メモリアクセス動作を完了する。
【００１３】
本願発明の一実施形態では、メモリ実行ユニット１３５は、Ｌ１データキャッシュメモリ１４０に結合される。Ｌ１データキャッシュメモリ１４０は、Ｌ１データアレイ１４２、Ｌ１タグアレイ１４４およびフィルバッファ１４６を有する。Ｌ１データキャッシュメモリ１４０は、トランスレーションルックアサイドバッファ（ＴＬＢ）などの他のコンポーネントを有する。これら他のコンポーネントは、説明を明確にするべく図１には示さない。本願発明の一実施形態では、Ｌ１データキャッシュメモリ１４０は、フィルバッファ１４６のアクセスを制御し、メモリアクセス動作をＬ１データアレイ１４２およびＬ１タグアレイ１４４のキャッシュウェイの一部のみに制限する論理回路を有する。
【００１４】
図２は、本願発明の一実施形態に係るメモリ実行ユニット１３５およびＬ１データキャッシュメモリ１４０のブロック図２００を示す。説明を明確にすべく、図１を参照し、図２について説明する。本願発明の一実施形態では、Ｌ１データキャッシュメモリ１４０は、８ウェイセットアソシエイティブＬ１キャッシュメモリである。本願発明の一実施形態では、Ｌ１データキャッシュメモリ１４０のＬ１データアレイ１４２およびＬ１タグアレイ１４４は、２つの部分またはグループへと分けられる。Ｌ１データアレイ１４２は、４ウェイＬ１データアレイ［３‐０］２２０と４ウェイＬ１データアレイ［７‐４］２２５とに分割される。
【００１５】
Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４は、それぞれ、４ウェイＬ１データアレイ［３‐０］２２０および４ウェイＬ１データアレイ［７‐４］２２５のアクセスまたは有効状態を制御する。例えば、本願発明の一実施形態では、４ウェイＬ１データアレイ［３‐０］２２０のみのアクセスが可能であるか、要求されている場合、Ｌ１ウェイ３−０読取イネーブル信号２０２がアサートされ、４ウェイＬ１データアレイ［３‐０］２２０をイネーブルし、Ｌ１ウェイ７−４読取イネーブル信号２０４をデアサートし、４ウェイＬ１データアレイ［７‐４］２２５をディスエーブルする。
【００１６】
ｓｅｔ＿ｓｅｌｅｃｔ信号２０６は、４ウェイＬ１データアレイ［３‐０］２２０および４ウェイＬ１データアレイ［７‐４］２２５と結合され、所望される、または求められるアクセス先のセットを選択する。例えば、本願発明の一実施形態では、Ｌ１データキャッシュメモリ１４０は、３２キロバイト、６４セットのキャッシュメモリであり、各セットは、８ウェイのキャッシュアクセスを有する。ロード命令または保存命令を行うべく、ｓｅｔ＿ｓｅｌｅｃｔ信号２０６を用いて所望されるセットが選択され、８ウェイマルチプレクサ（ＭＵＸ）２６０が、読取データ２６２として所望されるセットのいずれかのウェイを選択する。
【００１７】
８ウェイマルチプレクサ２６０の制御信号は、ウェイヒットベクトル［７‐０］２７０によって生成される。本願発明の一実施形態では、ウェイヒットベクトル［７‐０］２７０は、読取データ２６２として、Ｌ１データキャッシュメモリ１４０の８ウェイのいずれを選択するかを表す８ビットを有する。本願発明の一実施形態では、ウェイヒットベクトル［７‐０］２７０は、Ｌ１タグアレイ１４４、Ｌ１タグコンパレータ２４０およびＡＮＤゲートブロック２５０から生成される。Ｌ１タグアレイ１４４は、４ウェイＬ１タグアレイ［３‐０］２３０と４ウェイＬ１タグアレイ［７‐４］２３５とに分割される。
【００１８】
ｓｅｔ＿ｓｅｌｅｃｔ信号２０６は４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５に結合され、所望される、または求められるアクセス先のセットを選択する。４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５は、それぞれ、Ｌ１タグコンパレータ２４０の４ウェイＬ１タグコンパレータ［３‐０］２４２および４ウェイＬ１タグコンパレータ［７‐４］２４４に結合される。Ｌ１タグコンパレータ２４０は、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５のうち選択されたセットのウェイのタグアドレスと、ロード命令または保存命令の物理アドレス２４６とを比較する。一致するアドレスが見つかった場合、Ｌ１タグコンパレータ２４０の各タグコンパレータは、ＡＮＤゲートブロック２５０に対して論理１信号を生成する。一致するアドレスが見つからなかった場合、Ｌ１タグコンパレータ２４０の各タグコンパレータは、ＡＮＤゲートブロック２５０に対して論理０信号を生成する。
【００１９】
４ウェイＬ１タグコンパレータ［３‐０］２４２は、各ウェイ３‐０に対し信号を生成し、各信号は、ＡＮＤゲートブロック２５０の各ＡＮＤゲートに結合される。同様に、４ウェイＬ１タグコンパレータ［７‐４］２４４は、各ウェイ７−４に対し信号を生成し、各信号は、ＡＮＤゲートブロック２５０の各ＡＮＤゲートに結合される。４ウェイＬ１タグコンパレータ［３‐０］２４２に結合された各ＡＮＤゲートは、ＯＲゲート２１０の出力と結合される。ＯＲゲート２１０の出力は、フィルバッファブロック信号２０８およびＬ１ウェイ３−０読取イネーブル信号２０２によって駆動される。同様に、４ウェイＬ１タグコンパレータ［７‐４］２４４と結合された各ＡＮＤゲートは、ＯＲゲート２１２の出力と結合される。ＯＲゲート２１２の出力は、フィルバッファブロック信号２０８およびＬ１ウェイ７−４読取イネーブル信号２０４によって駆動される。
【００２０】
フィルバッファブロック信号２０８は、Ｌ１タグアレイ１４４の制御をＬ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４によって決定するかどうか選択する。ＯＲゲート２１０、２１２の出力は、それぞれ、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５と結合され、それらの動作をイネーブルするかディスエーブルする。例えば、本願発明の一実施形態では、フィルバッファブロック信号２０８がアサートされるか、論理１に設定されると、ＯＲゲート２１０、２１２の出力がアサート（論理１）され、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５の両方をイネーブルする。
【００２１】
フィルバッファブロック信号２０８が論理１に設定されると、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４は、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５の動作に影響を及ぼさない。この理由は、ＯＲゲート２１０、２１２の出力が、フィルバッファブロック信号２０８によって論理１に設定されているからである。同様に、ＡＮＤゲートブロック２５０のＡＮＤゲートは、フィルバッファブロック信号２０８が論理１に設定されているとき、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４の影響を受けない。
【００２２】
フィルバッファブロック信号２０８がデアサートされるか、論理０に設定されているとき、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５の制御は、それぞれ、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４によって決定される。この理由は、フィルバッファブロック信号２０８が論理０に設定されているとき、ＯＲゲート２１０、２１２の出力は、４ウェイＬ１タグアレイ［３‐０］２３０および４ウェイＬ１タグアレイ［７‐４］２３５の状態のみに依存するからである。
【００２３】
例えば、本願発明の一実施形態では、ウェイ３‐０がイネーブルされ、ウェイ７‐４がディスエーブルされるとき、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４は、それぞれ、論理１および論理０に設定される。４ウェイＬ１データアレイ［３‐０］２２０は、Ｌ１ウェイ３−０読取イネーブル信号２０２によって有効にされる。Ｌ１ウェイ３−０読取イネーブル信号２０２は、ＯＲゲート２１０の出力を論理１に設定し、４ウェイＬ１タグアレイ［３‐０］２３０がイネーブルされる。４ウェイＬ１タグコンパレータ［３‐０］２４２に結合されたＡＮＤゲートは、ＯＲゲート２１０の出力が論理１に設定されているので、イネーブルされる。
【００２４】
Ｌ１ウェイ７−４読取イネーブル信号２０４が論理０に設定されると、４ウェイＬ１データアレイ［７‐４］２２５がディスエーブルされる。Ｌ１ウェイ７−４読取イネーブル信号２０４およびフィルバッファブロック信号２０８の両方が論理０に設定されると、ＯＲゲート２１２の出力は論理０に設定される。ＯＲゲート２１２の出力が論理０に設定されるので、４ウェイＬ１タグアレイ［７‐４］２３５がディスエーブルされ、４ウェイＬ１タグコンパレータ［７‐４］２４４に結合されたＡＮＤゲートがディスエーブルされる。
【００２５】
ウェイヒットベクトル［７‐０］２７０は、ＯＲゲート［３‐０］２８０とＯＲゲート［７‐４］２８２とに結合される。ＯＲゲート［３‐０］２８０の４つの入力は、ウェイヒットベクトル［７‐０］２７０のウェイ３−０に結合される。同様に、ＯＲゲート［７‐４］２８２の４つの入力は、ウェイヒットベクトル［７‐０］２７０のウェイ７‐４に結合される。ＡＮＤゲート２９０は、ＯＲゲート［３‐０］２８０の出力とＬ１ウェイ３−０読取イネーブル信号２０２とに結合される。ＡＮＤゲート２９２は、ＯＲゲート［７‐４］２８２の出力とＬ１ウェイ７−４読取イネーブル信号２０４とに結合される。ＡＮＤゲート２９０、２９２の出力の両方がＯＲゲート２９４と結合され、Ｌ１キャッシュヒット／ミス信号２９６を生成する。Ｌ１キャッシュヒット／ミス信号２９６は、Ｌ１データキャッシュメモリ１４０のキャッシュメモリヒットまたはキャッシュメモリミスがあったかどうかを示す。
【００２６】
本願発明の一実施形態では、Ｌ１データキャッシュメモリ１４０のＬ１データアレイ１４２およびＬ１タグアレイ１４４は、キャッシュアクセスのウェイを減らして消費電力を減らしつつも、処理ユニット１０５の性能を維持する。図２におけるＬ１データキャッシュメモリ１４０の図示は、Ｌ１データキャッシュメモリ１４０の構成を限定するものではない。本願発明の他の実施形態では、本願発明によって得られる効果に影響を与えることなく、データおよびタグアレイの異なる構造および構成を用いる。
【００２７】
例えば、本願発明の他の実施形態では、各データアレイおよびタグアレイを２つ以上に分割し、別個の制御信号を生成することにより、当該データアレイまたはグループアレイのどの分割部分またはグループをロード動作または保存動作に用いるかを選択する。当業者であれば、Ｌ１データキャッシュメモリ１４０の異なる構成をサポートすべく論理回路をいかに修正すべきかを容易に理解されるはずなので、本明細書では説明を省略する。
【００２８】
図３は、本願発明の一実施形態に係る、仮想アドレス３１０の物理アドレス３３０へのマッピング３００を示す。本願発明の一実施形態では、仮想的な、または線形のアドレス３１０は、ページオフセット３１２および仮想ページ番号３１４を有する。ページオフセット３１２は仮想アドレス３１０の最初の１２のアドレスビット［１１：０］より構成されており、仮想アドレス３１０が物理アドレス３３０に変換されるとき、変換されない。
【００２９】
本願発明の一実施形態では、仮想アドレス３１０の６アドレスビット［１１：６］をセットアドレスとして用いる。６アドレスビットによって、６４のセットを選択することが出来る。本願発明の一実施形態では、仮想アドレス３１０のアドレスビット［１１：６］に基づいてｓｅｔ＿ｓｅｌｅｃｔ信号２０６が生成される。本願発明の一実施形態では、仮想ページ番号３１４を変換論理回路３２０によって変換し、物理ページ番号３３４を得る。変換論理回路３２０は、ＴＬＢ内のルックアップテーブルを含むが、これに限定されるわけではない。本願発明の一実施形態では、仮想アドレス３１０のアドレスビット［１２］に基づいて、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４が生成される。例えば、本願発明の一実施形態では、アドレスビット［１２］がアサートされたとき、Ｌ１ウェイ３−０読取イネーブル信号２０２がアサートされ、かつ、Ｌ１ウェイ７−４読取イネーブル信号２０４がデアサートされる。アドレスビット［１２］がデアサートされたとき、Ｌ１ウェイ３−０読取イネーブル信号２０２がデアサートされ、かつ、Ｌ１ウェイ７−４読取イネーブル信号２０４がアサートされる。
【００３０】
アドレスビット［１２］はキャッシュメモリのアクセスの前に設定され、Ｌ１データキャッシュメモリ１４０のどの４ウェイにアクセスするかを決定する。当業者であれば、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４を生成する他の方法を、本願発明によって得られる効果に影響を与えることなく用いることが可能であることを容易に理解されるはずなので、それらの他の方法の説明は本明細書では省略する。本願発明の一実施形態では、仮想アドレス３１０の他のビットを用いて、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４を生成する。本願発明の他の実施形態では、他のレジスタの他のビットを用いて、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４を生成する。本願発明の他の実施形態では、仮想アドレス３１０および物理アドレス３３０は、３２ビット以上を有する。
【００３１】
図４は、本願発明の一実施形態に係る、エイリアシングイベントの処理のフローチャート４００を示す。仮想的にインデックスが付けられたキャッシュメモリでは、キャッシュメモリの位置を特定するビット数は、ページサイズよりも大きく、１以上のビットがエイリアスされ得る。例えば、本願発明の一実施形態では、エイリアスされたビットの値に基づいて、キャッシュメモリの２つの異なる位置で同一の物理ページが参照される。よって、Ｌ１データキャッシュメモリ１４０の２つの異なるキャッシュメモリラインが、同じ物理メモリの異なるバージョンのデータを保持することもあり得る。
【００３２】
フローチャート４００は、本願発明の一実施形態に係る、エイリアシングイベントの処理の方法を示す。工程４１０において、保存リクエストまたはロードリクエストが受信される。工程４２０で、Ｌ１データキャッシュメモリ１４０に保存リクエストまたはロードリクエストの真ヒットイベントがあるかどうか確認する。本願発明の一実施形態では、保存リクエストまたはロードリクエストのメモリロケーションが、Ｌ１データキャッシュメモリ１４０の選択された４ウェイのうち１ウェイにキャッシュされる場合、真ヒットイベントが発生する。
【００３３】
例えば、本願発明の一実施形態では、処理ユニット１０５が仮想アドレスＸで保存リクエストを受信する。メモリ実行ユニット１３５が仮想アドレスＸのアドレスビット［１２］を確認し、Ｌ１データキャッシュメモリ１４０のウェイ３‐０にアクセスするか、ウェイ７‐４にアクセスするかを決定する。アドレスビット［１２］がウェイ３‐０を選択したとすると、４ウェイＬ１タグアレイ［３‐０］２４２のタグアレイの１つの仮想アドレスＸに合致する場合、Ｌ１タグコンパレータ［３‐０］２４２がＬ１ヒット信号、つまり真ヒットを生成する。
【００３４】
工程４２０に真ヒットイベントがあった場合、フロー４００は終了する。工程４２０に真ヒットイベントがなかった場合、フロー４００の工程４３０に進み、Ｌ１データキャッシュメモリ１４０の保存リクエストまたはロードリクエストに真ミスイベントがあるかどうか確認する。本願発明の一実施形態では、保存リクエストまたはロードリクエストのメモリロケーションがＬ１データキャッシュメモリ１４０の８ウェイ全てにキャッシュされない場合、真ミスイベントが発生する。
【００３５】
例えば、本願発明の一実施形態では、処理ユニット１０５が仮想アドレスＹでロードリクエストを受信する。メモリ実行ユニット１３５は、仮想アドレスＹのアドレスビット［１２］を確認し、Ｌ１データキャッシュメモリ１４０のウェイ３−０にアクセスするか、ウェイ７−４にアクセスするかを決定する。Ｌ１タグコンパレータ２４０は、４ウェイＬ１タグアレイ［３‐０］２４２または４ウェイＬ１タグアレイ［７‐４］２４４のどちらかのタグアレイのいずれも仮想アドレスＹに合致しない場合、Ｌ１ミス信号、つまり真ミスを生成する。
【００３６】
工程４３０に真ミスイベントがあった場合、フロー４００は終了する。工程４３０に真ミスイベントがなかった場合、フロー４００の工程４４０に進み、Ｌ１データキャッシュメモリ１４０の保存リクエストまたはロードリクエストに偽ヒットイベントがあるかどうか確認する。本願発明の一実施形態では、Ｌ１タグコンパレータ２４０がヒットを生成するが、アドレスビット［１２］がデータアレイの誤ったグループを選択した場合、偽ヒットイベントが発生する。
【００３７】
例えば、本願発明の一実施形態では、処理ユニット１０５が仮想アドレスＺでロードリクエストを受信する。メモリ実行ユニット１３５は、仮想アドレスＺのアドレスビット［１２］を確認し、Ｌ１データキャッシュメモリ１４０のウェイ３−０にアクセスするか、ウェイ７−４にアクセスするかを決定する。アドレスビット［１２］がウェイ３‐０を選択したとすると、４ウェイＬ１データアレイ［３‐０］２２０が選択される。しかし、エイリアシングによって、Ｌ１タグコンパレータ２４０がロードリクエストの物理アドレスを比較するとき、ヒット信号つまり偽ヒットが、４ウェイＬ１タグコンパレータ［３‐０］２４２ではなく４ウェイＬ１タグコンパレータ［７‐４］２４４によって生成される。
【００３８】
工程４４０で偽ヒットイベントがない場合、フロー４００は終了する。工程４４０で偽ヒットイベントがあった場合、フロー４００の工程４５０に進み、保存リクエストまたはロードリクエストを繰り返し、Ｌ１データアレイ１４２の全てのウェイをイネーブルするか有効にし、フロー４００は終了する。
【００３９】
図５は、本願発明の一実施形態に係る、キャッシュメモリの消費電力を減らす方法のフローチャート５００を示す。説明を明確にするべく、図２を参照して、図５について説明する。
【００４０】
フロー５００の工程５１０において、Ｌ１データキャッシュメモリ１４０の連続したキャッシュメモリヒットの数を決定する。本願発明の一実施形態では、処理ユニット１０５は、連続したキャッシュメモリヒットの数を予測する論理回路を有する。本願発明の他の実施形態では、工程５１０において、Ｌ１データキャッシュメモリ１４０のキャッシュメモリヒットの連続したクロックの数を決定する。
【００４１】
フロー５００の工程５２０において、ヒットの数、またはヒットのクロックサイクルの数がしきい値を超えているかどうか確認する。本願発明の一実施形態では、しきい値は、Ｌ１データキャッシュメモリ１４０のキャッシュヒットの１２８のクロックに設定する。超えていなければ、フロー５００の工程５１０に戻る。超えていれば、本願発明の一実施形態では、フロー５００の工程５３０に進み、フィルバッファ１４６に関連付けられた論理回路を無効にする。本願発明の他の実施形態では、工程５３０において、フィルバッファ１４６へのアクセスを制限する。本願発明の一実施形態では、フィルバッファ１４６に関連付けられた論理回路が無効にされると、フィルバッファ１４６に関連付けられた論理回路の入力クロックは停止されるか、ディスエーブルされる。
【００４２】
本願発明の一実施形態では、フィルバッファ１４６およびＬ１データキャッシュメモリ１４０は、同じキャッシュラインを同時に保持または保存しない。つまり、フィルバッファ１４６およびＬ１データキャッシュメモリ１４０のいずれかが、１つのロード動作または保存動作に応じてアクセスされる。処理ユニット１０５の論理回路が、全てのロード動作および保存動作がＬ１データキャッシュメモリ１４０でヒットする、または見つかる期間があると予測した場合、必要なキャッシュラインがＬ１データキャッシュメモリ１４０にあるので、フィルバッファルックアップは必要ではない。工程５３０において、フィルバッファ１４６の無効状態を検出し、フィルバッファに関連付けられた論理回路を無効にする。フィルバッファ１４６に関連付けられた論理回路が無効にされていると、各メモリアクセス上の処理ユニット１０５が消費する電力は減るか、または最小となる。
【００４３】
フロー５００の工程５４０において、Ｌ１タグアレイ１４４のアクセスウェイの数を減らす。例えば、本願発明の一実施形態では、Ｌ１タグアレイ１４４の８ウェイのうち４つのウェイのみがロード動作または保存動作においてアクセスされる。本願発明の一実施形態では、工程５４０において、フィルバッファブロック信号２０８をデアサートし、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４によるＬ１タグアレイ１４４の有効状態を制御する。フロー５００の工程５５０において、キャッシュミスがあるかどうか確認する。キャッシュミスがない場合、フロー５００の工程５５０に戻る。
【００４４】
キャッシュミスがある場合、フロー５００の工程５６０に進み、フィルバッファ１４６に関連付けられた論理回路を有効にする。工程５６０において、フィルバッファ１４６に関連付けられた論路回路が無効にされた後、Ｌ１データキャッシュメモリ１４０の最初のキャッシュメモリミスを検出する。最初のミスによってフィルバッファ１４６に関連付けられた論理回路を有効することに不利益が生じることもあるが、Ｌ１データキャッシュメモリ１４０のキャッシュヒットの長いシーケンスの後に、フィルバッファ１４６がブロックされているので、処理ユニット１０５の性能への影響は、最小限で済む。工程５７０において、Ｌ１タグアレイ１４４の全てのウェイへのアクセスがイネーブルされ、フロー５００は終了する。本願発明の一実施形態では、Ｌ１ウェイ３−０読取イネーブル信号２０２およびＬ１ウェイ７−４読取イネーブル信号２０４がＬ１タグアレイ１４４の有効状態を制御することを防ぐべく、フィルバッファブロック信号２０８がアサートされ、Ｌ１タグアレイ１４４の全てのウェイが、ロード動作または保存動作毎に確認される。
【００４５】
図６は、本願発明の一実施形態に係る、本明細書に開示される方法を実施するシステム６００を示す。システム６００は、デスクトップコンピュータ、ラップトップコンピュータ、ネットブック、ノートパソコン、携帯端末（ＰＤＡ）、サーバ、ワークステーション、携帯電話、モバイルコンピュータデバイス、インターネッアプライアンスまたは他の形態のコンピュータデバイスを含むが、これらに限定されない。他の実施形態では、本明細書に開示される方法を実施するのに用いられるシステム６００は、システムオンチップ（ＳＯＣ）のシステムである。
【００４６】
プロセッサ６１０は、システム６００の命令を実行するプロセッシングコア６１２を有する。プロセッシングコア６１２は、命令をフェッチするプリフェッチ論理回路、命令を復号化する復号化論理回路、命令を実行する実行論理回路などを含むが、これらに限定されない。プロセッサ６１０は、システム６００の命令および／またはデータをキャッシュするキャッシュメモリ６１６有する。本願発明の他の実施形態では、キャッシュメモリ６１６は、レベル１、レベル２およびレベル３キャッシュメモリ、またはプロセッサ６１０内の他の構成のキャッシュメモリを含むが、これらに限定されない。
【００４７】
メモリコントロールハブ（ＭＣＨ）６１４は、プロセッサ６１０によるメモリ６３０へのアクセス、およびメモリ６３０との通信を可能にする機能を実行する。メモリ６３０は、揮発性メモリ６３２および／または不揮発性メモリ６３４を含む。揮発性メモリ６３２は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ＲＡＭＢＵＳダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）、および／または他の形態のランダムアクセスメモリデバイスを含むが、これらに限定されない。不揮発性メモリ６３４は、ＮＡＮＤ型フラッシュメモリ、相変化メモリ、（ＰＣＭ）、読取専用メモリ（ＲＯＭ）、電気的に消去可能なプログラム可能読取専用メモリ（ＥＥＰＲＯＭ）、または他の形態の不揮発性メモリデバイスを含むが、これらに限定されない。
【００４８】
メモリ６３０は、プロセッサ６１０に実行される情報および命令を保存する。メモリ６３０は、プロセッサ６１０が命令を実行する間に、一時的変数または他の中間情報も保存する。チップセット６２０は、ポイントツーポイント（ＰｔＰ）インタフェース６１７、６２２を介し、プロセッサ６１０と接続する。チップセット６２０は、プロセッサ６１０が、システム６００内の他のモジュールと接続することを可能にする。本願発明の一実施形態では、インタフェース６１７、６２２は、Ｉｎｔｅｌ（登録商標）  ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）などのＰｔＰ通信プロトコルに準拠して動作する。チップセット６２０は、液晶表示装置（ＬＣＤ）、ブラウン管（ＣＲＴ）表示装置、または他の形態の視覚表示装置を含むがこれらに限定されない、表示装置６４０と接続する。
【００４９】
さらにチップセット６２０は、各種のモジュール６７４、６６０、６６２、６６４、６６６と相互接続する、１以上のバス６５０、６５５と接続する。バス速度または通信プロトコルが一致しない場合、バス６５０、６５５は、バスブリッジ６７２を介して互いに接続されてもよい。チップセット６２０は、不揮発性メモリ６６０、大容量記憶装置６６２、キーボード／マウス６６４およびネットワークインタフェース６６６と結合しており、また結合先はこれらに限定されない。大容量記憶装置６６２は、半導体ドライブ、ハードディスクドライブ、ユニバーサルシリアルバスフラッシュメモリドライブ、または他の形態のコンピュータデータ記憶媒体を含むが、これらに限定されない。ネットワークインタフェース６６６は任意の形態の周知のネットワークインタフェース標準を用いて実装される。それらネットワークインタフェース標準には、イーサネット（登録商標）インタフェース、ユニバーサルシリアルバス（ＵＳＢ）インタフェース、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）Ｅｘｐｒｅｓｓインタフェース、ワイヤレスインタフェース、および／または他の適した形態のインタフェースが含まれるが、これらに限定されない。ワイヤレスインタフェースは、ＩＥＥＥ８０２．１１標準およびその関連した標準、Ｈｏｍｅ  Ｐｌｕｇ  ＡＶ（ＨＰＡＶ）、Ｕｌｔｒａ  Ｗｉｄｅ  Ｂａｎｄ（ＵＷＢ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷｉＭａｘ、または他の形態の無線通信プロトコルに準拠して動作するが、これらに限定されない。
【００５０】
図６のモジュールは、システム６００内の独立したブロックとして示されているが、これらのブロックのうちいくつかによって実行される機能は、１つの半導体回路内で統合されていてもよく、若しくは、２以上の独立した集積回路を用いて実行されてもよい。例えば、キャッシュメモリ６１６は、プロセッサ６１０内の独立したブロックとして示されているが、キャッシュメモリ６１６は、それぞれ、プロセッサコア６１２に組み込まれていてもよい。本願発明の他の実施形態では、システム６００は、１以上のプロセッサ／プロセッシングコアを含む。
【００５１】
本明細書で開示される方法は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって実行することが出来る。開示される主題の実施形態の例を説明したが、当業者であれば、開示される主題を実行する多くの他の方法を代替的に用いることが可能であることを容易に理解するであろう。上記の説明では、開示される主題の様々な態様が説明された。説明を目的とし、主題が完全に理解されるように、特定の数字、システムおよび構成を明記した。しかし、本開示を読んだ当業者には、これらの詳細事項を用いることなく主題を実施することが可能であることが明白であろう。他の例においては、開示される主題を曖昧にすることがないよう、周知の特徴、コンポーネントまたはモジュールについては省略して、単純化して、組み合わせて、または分割して説明した。
【００５２】
本明細書で「実行することが出来る」とは、装置、システム、プロトコルなどが、デバイスまたはシステムに電力が供給されていないときに、所望される機能を提供すべく動作できる、または動作できるように構成されていることを意味する。開示される主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせによって実行することが出来る。また開示される主題の様々な実施形態は、命令、機能、手順、データ構造、論理回路、アプリケーションプログラム、設計表現、または設計のシミュレーション、エミュレーションおよび製作のフォーマットなどのプログラムコードを参照すること、若しくはプログラムコードに関連させることによって説明されてもよい。これらのプログラムコードが機械によってアクセスされると、当該機械は、タスクを実行し、抽象データ型または低水準言語のハードウェアのコンテクストを定義づけ、または結果をもたらす。
【００５３】
図中に示した技術は、汎用のコンピュータまたはコンピュータデバイスなどの１以上のコンピュータデバイス上に保存され、これらのコンピュータデバイス上で実行されるコードおよびデータを用いて実施することが出来る。そのようなコンピュータデバイスは、コードおよびデータの保存および（内部で、若しくは、他のコンピュータデバイスとのネットワーク上での）通信を、機械可読記憶媒体（例えば、磁気ディスク、光学ディスク、ランダムアクセスメモリメモリ、読取専用メモリ、フラッシュメモリデバイス、相変化メモリ）および機械可読通信媒体（例えば、搬送波、赤外線信号、デジタル信号などの電気、光、音響、または他の形態の伝搬信号）などの機械可読媒体を用いて行う。
【００５４】
例示的な実施形態を参照し、開示される主題を説明してきたが、これらの説明は、主題を限定するものとして解釈されることを意図されていない。例示的な実施形態の様々な変形例、および主題の他の実施形態は、当業者にとって明白であり、かつ、開示される主題の態様に含まれる。
【図１】
2013529816.tif 000003
【図２】
2013529816.tif 000004
【図３】
2013529816.tif 000005
【図４】
2013529816.tif 000006
【図５】
2013529816.tif 000007
【図６】
2013529816.tif 000008
【国際調査報告】
2013529816.tif 000009
2013529816.tif 000010