(57)【要約】      （修正有）【課題】アクセス効率を向上させ、かつ消費電力も低減可能なキャッシュメモリおよびプロセッサシステムを提供する。【解決手段】キャッシュメモリは、キャッシュライン単位でアクセス可能な第１キャッシュメモリ部１３と、第１キャッシュメモリ部と同一のキャッシュ階層に位置し、ワード単位でアクセス可能な第２キャッシュメモリ部１４と、を備える。【選択図】図２
2015179320.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュライン単位でアクセス可能な第１キャッシュメモリ部と、
前記第１キャッシュメモリ部と同一のキャッシュ階層に位置し、ワード単位でアクセス可能な第２キャッシュメモリ部と、を備えることを特徴とするキャッシュメモリ。
【請求項２】
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ部よりも、低アクセス電力およびアクセス速度が高速の少なくとも一方である請求項１に記載のキャッシュメモリ。
【請求項３】
前記第２キャッシュメモリ部に格納されるデータは、前記第１キャッシュメモリ部にも格納されている請求項１または２に記載のキャッシュメモリ。
【請求項４】
前記第２キャッシュメモリ部に格納されるデータと、前記第１キャッシュメモリ部に格納されるデータとは、互いに排他的である請求項１または２に記載のキャッシュメモリ。
【請求項５】
前記第１キャッシュメモリ部は、それぞれがキャッシュライン単位でアクセス可能な複数のウェイを有し、
前記複数のウェイは、２以上のアクセス優先度に応じて分けられており、
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ部の各ウェイごとに、対応するアクセス優先度に応じた数のワードデータを格納する請求項１または２に記載のキャッシュメモリ。
【請求項６】
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ内のアクセス頻度の高いウェイほど、当該ウェイ内のより多くのワードデータを格納する請求項５に記載のキャッシュメモリ。
【請求項７】
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ部の各キャッシュラインの中で、先頭側アドレスに対応する少なくとも１つのワードデータを格納する請求項１乃至４のいずれかに記載のキャッシュメモリ。
【請求項８】
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ部に格納されたラインデータのうち、プロセッサが最初にアクセスする頻度が高いワードデータから順に格納する請求項１乃至４のいずれかに記載のキャッシュメモリ。
【請求項９】
前記第２キャッシュメモリ部は、前記第１キャッシュメモリ部に格納されたデータのうち、プロセッサによるアクセス回数の多いワードデータからアクセス回数順に格納する請求項１乃至４のいずれかに記載のキャッシュメモリ。
【請求項１０】
前記第１キャッシュメモリ部に格納されるデータのアドレス情報が記憶されるタグ部を備え、
前記第２キャッシュメモリ部はの各エントリは、タグ部の各エントリと１対１の対応関係にある請求項１乃至９のいずれかに記載のキャッシュメモリ。
【請求項１１】
前記タグ部は、前記第２キャッシュメモリ部に格納された各ワードデータを識別する識別情報を格納する記憶領域を有する請求項１０に記載のキャッシュメモリ。
【請求項１２】
前記第１キャッシュメモリ部および前記第２キャッシュメモリ部へのアクセスを制御するキャッシュコントローラを備え、
前記キャッシュコントローラは、最初に前記タグ部および前記第２キャッシュメモリ部内のワードデータに並行してアクセスし、前記タグ部へのアクセスの結果、キャッシュヒットであれば前記第１キャッシュメモリ部にアクセスする請求項１０または１１に記載のキャッシュメモリ。
【請求項１３】
前記第１キャッシュメモリ部および前記第２キャッシュメモリ部へのアクセスを制御するキャッシュコントローラを備え、
前記キャッシュコントローラは、前記タグ部にアクセスを行い、そのアクセス情報に基づいて、前記第２キャッシュメモリ部内のワードデータおよび前記第１キャッシュメモリ部内のラインデータに同時アクセスを行うか、前記第１キャッシュメモリ部内のラインデータのみにアクセスを行うか、どちらにもアクセスしないかを判定する請求項１０または１１に記載のキャッシュメモリ。
【請求項１４】
前記第１キャッシュメモリ部および前記第２キャッシュメモリ部へのアクセスを制御するキャッシュコントローラを備え、
前記キャッシュコントローラは、前記タグ部、前記第１キャッシュメモリ部内のワードデータおよび前記第２キャッシュメモリ部に並行してアクセスする請求項１０または１１に記載のキャッシュメモリ。
【請求項１５】
前記第１キャッシュメモリ部および前記第２キャッシュメモリ部へのアクセスを制御するキャッシュコントローラを備え、
前記キャッシュコントローラは、データ書き込み時に前記タグ部にヒットした場合には、前記第１キャッシュメモリ部および前記第２キャッシュメモリ部の双方に当該データを書き込む請求項１０または１１に記載のキャッシュメモリ。
【請求項１６】
前記第１キャッシュメモリ部および前記第２キャッシュメモリ部へのアクセスを制御するキャッシュコントローラを備え、
前記キャッシュコントローラは、データ書き込み時に前記タグ部にヒットした場合には、ヒットした旧データが前記第２キャッシュメモリ部に格納されていれば、新データを前記第１キャッシュメモリ部には書き込まずに前記第２キャッシュメモリ部内の旧データを新データに上書きするとともに、下位階層のキャッシュメモリに書き戻す必要があることを示すダーティ情報をワードデータ単位で前記タグ部に格納する請求項１０または１１に記載のキャッシュメモリ。
【請求項１７】
プロセッサと、
階層化されたｋ次（ｋ＝１からｎまでのすべての整数、ｎは１以上の整数）のキャッシュメモリと、を備え、
前記ｋ次のキャッシュメモリのうち少なくとも１階層のキャッシュメモリは、
キャッシュライン単位でアクセス可能な第１キャッシュメモリ部と、
前記第１キャッシュメモリ部と同一のキャッシュ階層に位置し、ワード単位でアクセス可能な第２キャッシュメモリ部と、を備えることを特徴とするプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリおよびプロセッサシステムに関する。
【背景技術】
【０００２】
メモリウォール問題と称されるように、メモリアクセスはプロセッサコアの性能と消費電力のボトルネックとなっている。このメモリウォール問題への対策として、キャッシュメモリは大容量化する傾向にあり、それに伴ってキャッシュメモリのリーク電流の増加が問題となっている。
【０００３】
大容量キャッシュメモリの候補として注目されているＭＲＡＭは不揮発性であり、現状のキャッシュメモリで用いられているＳＲＡＭよりリーク電流が圧倒的に小さいという特徴がある。
【０００４】
しかしながら、ＭＲＡＭは、アクセス速度や消費電力の点では、ＳＲＡＭよりも優れているとはいえない。このため、プロセッサが実行するプログラムによっては、アクセス速度や消費電力のマイナス面が顕著に表れる場合もありうる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】A Novel Architecture of the 3D Stacked MRAM L2 Cache for CMPs(HPCA, 2008)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、アクセス効率を向上させ、かつ消費電力も低減可能なキャッシュメモリおよびプロセッサシステムを提供することである。
【課題を解決するための手段】
【０００７】
本実施形態によれば、キャッシュライン単位でアクセス可能な第１キャッシュメモリ部と、
前記第１キャッシュメモリ部と同一のキャッシュ階層に位置し、ワード単位でアクセス可能な第２キャッシュメモリ部と、を備えることを特徴とするキャッシュメモリが提供される。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるキャッシュメモリ１を内蔵したプロセッサシステム２の概略構成を示すブロック図。
【図２】図１のキャッシュメモリ１の内部をより具体化したブロック図。
【図３】本実施形態によるメモリの階層構造を示す図。
【図４】本実施形態によるＬ２キャッシュ７の構造を説明する図。
【図５】第２キャッシュメモリ部１４のデータ構造の詳細例を示す図。
【図６】Inclusiveポリシ（第１ポリシ）を説明する図。
【図７】Exclusiveポリシ（第２ポリシ）を説明する図。
【図８】アクセス頻度ワード数可変方式を説明する図。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、キャッシュメモリおよびプロセッサシステムの特徴的な構成および動作を中心に説明するが、キャッシュメモリおよびプロセッサシステムには以下の説明で記述しない構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれうるものである。
【００１０】
図１は一実施形態によるキャッシュメモリ１を内蔵したプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、キャッシュメモリ１と、プロセッサコア３と、ＭＭＵ５とを備えている。キャッシュメモリ１は、階層構造になっており、例えばＬ１キャッシュ（L1 Cache）６とＬ２キャッシュ（L2 Cache）７を有する。図２は図１のキャッシュメモリ１の内部をより具体化したブロック図である。
【００１１】
プロセッサコア３は、例えばマルチコア構成になっており、複数の演算器１１を有する。各演算器１１にはＬ１キャッシュ５が接続されている。Ｌ１キャッシュ６は、高速性が要求されるため、例えばＳＲＡＭ（Static Random Access Memory）で構成されている。なお、プロセッサコア３は、シングルコア構成であってもよい。この場合、Ｌ１キャッシュ６は一つだけ設けられる。
【００１２】
ＭＭＵ５は、プロセッサコア３が発行した仮想アドレスを物理アドレスに変換して、メインメモリ８およびキャッシュメモリ１にアクセスする。ＭＭＵ５は、キャッシュメモリ１に新たに格納したデータのアドレスと、キャッシュメモリ１から追い出したデータのアドレスとを取得して、仮想アドレスと物理アドレスとの変換テーブルを更新する。ＭＭＵ５は通常、各演算器１１ごとに設けられる。また、ＭＭＵ５は省略することも可能である。
【００１３】
キャッシュメモリ１は、メインメモリ８に記憶されたデータまたは記憶されるべきデータの少なくとも一部を記憶するものであり、Ｌ１キャッシュ６とＬ２以降の高次のキャッシュメモリとを含んでいる。本実施形態では、簡略化のため、キャッシュメモリ１がＬ１キャッシュ６とＬ２キャッシュ６を有する例を説明する。
【００１４】
Ｌ２キャッシュ６は、第１キャッシュメモリ部１３と、第２キャッシュメモリ部１４と、キャッシュコントローラ１５と、誤り訂正部１６とを有する。
【００１５】
第１キャッシュメモリ部１３は、キャッシュライン単位でアクセス可能なメモリであり、主にキャッシュラインデータを格納するために用いられる。第１キャッシュメモリ部１３は、例えばＭＲＡＭ（Magnetoresistive RAM）等の不揮発性メモリである。
【００１６】
第２キャッシュメモリ部１４は、少なくとも一部がワード単位でアクセス可能なメモリであり、主に第１キャッシュメモリ部１３に格納されるキャッシュラインデータのタグ情報と、キャッシュラインデータの一部であるクリティカルデータとを格納するために用いられる。クリティカルデータとは、演算器が演算で利用する何れかのデータ単位である。例えば、ワードデータがこれにあたる。ワードデータとは、例えば、３２ビット演算器では３２ビットであり、６４ビット演算器では６４ビットである。第２キャッシュメモリ部１４は、例えばＳＲＡＭ等の揮発メモリである。
【００１７】
第１キャッシュメモリ部１３は必ずしもＭＲＡＭに限定されるものではなく、また、第２キャッシュメモリ部１４は必ずしもＳＲＡＭに限定されるものではないが、第２キャッシュメモリ部１４は、第１キャッシュメモリ部１３よりも、低アクセス電力であるという特徴とアクセス速度が高速という特徴との少なくとも一方を有する。
【００１８】
第１キャッシュメモリ部１３がＭＲＡＭであれば、第２キャッシュメモリ部１４はＤＲＡＭやでもよい。また、第１キャッシュメモリ部１３と第２キャッシュメモリ部１４のメモリの組合せは、ＲｅＲＡＭ（Resistance RAM）とSRAMでもよいし、ＲｅＲＡＭとＭＲＡＭでもよいし、ＰＲＡＭ（Phase change RAM）とＳＲＡＭでもよいし、ＰＲＡＭ（Phase Change RAM）とＭＲＡＭでもよい。
【００１９】
キャッシュコントローラ１５は、第１キャッシュメモリ部１３と第２キャッシュメモリ部１４へのアクセスを制御する。誤り訂正部１６は、第１キャッシュメモリ１３の誤り訂正を行う。誤り訂正部１６は、第１キャッシュメモリ部１３にキャッシュライン単位で格納されるデータの誤り訂正を行うための冗長ビットを生成しそれを格納する。また、キャッシュコントローラ１５は、その管理のメモリやロジック回路の電源制御を行う機能を有してもよい。例えば、第２キャッシュメモリ部１４の電源電圧を下げたり、電源電圧の供給を停止したりする機能を有してもよい。
【００２０】
図３は本実施形態によるメモリの階層構造を示す図である。図示のように、最上位の階層にはＬ１キャッシュ６が位置し、次の階層にはＬ２キャッシュ７が位置し、最下位の階層にはメインメモリ８が位置する。プロセッサコア（ＣＰＵ）１１（図２における演算器１１）が任意のアドレスを発行すると、まずＬ１キャッシュ６へのアクセスが行われ、Ｌ１キャッシュ６にヒットしない場合は、次にＬ２キャッシュ７へのアクセスが行われ、Ｌ２キャッシュ７にヒットしない場合は、メインメモリ８へのアクセスが行われる。上述したように、Ｌ３キャッシュ以降の高次のキャッシュメモリ１を設けてもよいが、本実施形態では、キャッシュメモリ１がＬ１キャッシュ６とＬ２キャッシュ７の２階層である例を説明する。
【００２１】
Ｌ１キャッシュ６は例えば数１０ｋバイトのメモリ容量を持ち、Ｌ２キャッシュ７は例えば数１００ｋバイト〜数Ｍバイトのメモリ容量を持ち、メインメモリ８は例えば数Ｇバイトのメモリ容量を持っている。Ｌ１キャッシュ６とＬ２キャッシュ７は通常はキャッシュライン単位でデータを格納し、メインメモリ８はページ単位でデータを格納する。キャッシュラインは例えば６４バイトであり、１ページは例えば４ｋバイトである。なお、キャッシュラインやページのバイト数は任意である。
【００２２】
Ｌ１キャッシュ６に格納されるデータは通常Ｌ２キャッシュ７にも格納され、Ｌ２キャッシュ７に格納されるデータは通常メインメモリ８にも格納される。なお、Ｌ１キャッシュ６とＬ２キャッシュ７へのデータ配置ポリシには様々なバリエーションが考えられる。例えば、Inclusion方式がある。この場合、Ｌ２キャッシュ７には、Ｌ１キャッシュ６に格納されたデータのすべてが格納される。
【００２３】
その他、例えば、Exclusion方式がある。この方式では、例えばＬ１キャッシュ６とＬ２キャッシュ７に同じデータは配置されない。また、例えば、Inclusion方式とExclusion方式のハイブリッド方式がある。この方式では、例えばＬ１キャッシュ６とＬ２キャッシュ７で重複して保持されるデータもあるし、排他的に保持されるデータもある。
【００２４】
これらの方式は、Ｌ１およびＬ２キャッシュ６，７間のデータ配置ポリシであり、複数階層のキャッシュ構成では様々な組み合わせが考えられる。例えば、全ての階層でInclusion方式であってもよい。例えば、Ｌ１キャッシュ６とＬ２キャッシュ７はExclusive方式で、Ｌ２キャッシュ７とメインメモリ１０はInclusion方式であってもよい。本実施形態に示される方式は、これら上記に記した様々なデータ配置ポリシと組み合わせることが可能である。
【００２５】
本実施形態は、後述するように、通常はキャッシュライン単位でデータを格納するＬ２キャッシュ７に対して、ワード単位でもデータを格納できるようにしている。また、ワード単位でＬ２キャッシュ７にデータを格納する際には、高速アクセスが可能な第２キャッシュメモリ部１４にデータを格納するようにしている。
【００２６】
なお、本実施形態では、キャッシュライン単位でアクセス可能な第１キャッシュメモリ部１３と、第１キャッシュメモリ部１３と同一のキャッシュ階層に位置し、ワード単位でアクセス可能な第２キャッシュメモリ部１４と、を備えるＬ２キャッシュ７の例を示している。しかしながら、本実施形態はこれに限定されるものではない。例えば、Ｌ１キャッシュ６またはＬ３キャッシュ以降の高次のキャッシュメモリがこれらのキャッシュメモリ部１３，１４を備えていてもよい。
【００２７】
図４は本実施形態によるＬ２キャッシュ７の構造を説明する図である。図４に示すように、ＭＲＡＭからなる第１キャッシュメモリ部１３は、主にデータアレイとして用いられる。図４のデータアレイは、複数のウェイｗａｙ０〜ｗａｙ７に分けられており、各ウェイにはキャッシュライン単位でアクセスが行われる。なお、ウェイの数は８つに限定されない。また、データアレイを複数のウェイに分けることは必須ではない。
【００２８】
第２キャッシュメモリ部１４は、タグアレイとして用いられるメモリ領域ｍ１以外に、データアレイの一部として用いられるメモリ領域ｍ２を有する。メモリ領域ｍ１には、データアレイに格納されるキャッシュラインデータに対応するアドレス情報すなわちタグ情報が格納される。メモリ領域ｍ２には、第１キャッシュメモリ部１３に格納されているキャッシュラインの一部のデータ（以下、クリティカルデータ）が格納される。本実施形態では、簡単化のため、クリティカルデータはワードデータ(クリティカルワード)であるものとする。図４の例では、各ウェイごとに、２つのワードデータを格納可能なメモリ領域ｍ２を設けているが、メモリ領域ｍ２に格納するクリティカルデータの数は任意である。
【００２９】
このように、第１キャッシュメモリ部１３よりもアクセス速度が高速の第２キャッシュメモリ部１４に第１キャッシュメモリ部１３に格納されているラインの一部を格納する理由は、ＭＲＡＭの欠点である低アクセス速度と高アクセス電力による演算効率の低下を緩和するためである。演算効率とは、例えば、性能あたりの消費電力をさす。より具体的には、例えば、キャッシュラインの中で最初にアクセスされる頻度の高いワードデータを第２キャッシュメモリ部１４に格納することで、平均的なアクセス速度を向上させることができる。また、ワード単位という細かい単位でデータアクセスを行うことで、必要なデータのみにアクセスを行うことができ、無駄なデータアクセスを行わなくて済むことから、消費電力の削減が図れる。
【００３０】
図５は第２キャッシュメモリ部１４のデータ構造の詳細例を示す図である。図示のように、第２キャッシュメモリ部１４は、タグアレイとして用いられるメモリ領域ｍ１と、データアレイの一部として用いられるメモリ領域ｍ２と、メモリ領域ｍ２に格納した各ワードデータを識別するタグ情報を格納するメモリ領域ｍ３とを有する。メモリ領域ｍ３に格納されるタグ情報は、単独もしくはメモリ領域ｍ３とメモリ領域ｍ１に格納されるタグ情報により、格納されているワードを一意に特定できればよい。
【００３１】
１ワードデータが８バイトで、１キャッシュラインが６４バイトであるとすると１キャッシュライン中に８ワードが格納される。メモリ領域ｍ３にアドレス情報を格納する場合、１キャッシュライン中のどのワードデータがメモリ領域ｍ２に格納されたかを識別するためには、最低３ビットが必要となる。したがって、メモリ領域ｍ３は、最低でも第２キャッシュメモリ部１４に格納されるワードデータの数×３ビット分のメモリ容量を必要とする。
【００３２】
メモリ領域ｍ３にキャッシュラインの先頭ワードから何ワード目かを格納する場合、８個のワードのうち何番目かを表現するため、１ワードにつき３ビットが必要となる。
【００３３】
メモリ領域ｍ３にビットベクタを保持する場合、８個のワードそれぞれに１ビットを対応させ、８ビットが必要となる。例えば、キャッシュラインの先頭ワードを１ビット目に対応させ、キャッシュラインの先頭から２番目のワードを２ビット目に対応させればよい。例えば、第２キャッシュメモリ部１４に格納されているワードと対応するビットを１とし、格納されていないワードに対応するビットを０とすればよい。
【００３４】
第２キャッシュメモリ部１４にワードデータを格納する際のポリシとして以下の２つが考えられる。Inclusiveポリシは、第２キャッシュメモリ部１４に格納するワードデータは、第１キャッシュメモリ部１３にも重複して格納することである。Exclusiveポリシは、第２キャッシュメモリ部１４に格納するワードデータは、第１キャッシュメモリ１には重複して格納しないことである。
【００３５】
図６はInclusiveポリシ（第１ポリシ）を説明する図である。Inclusiveポリシでは、第１キャッシュメモリ部１３にキャッシュライン単位で格納されるキャッシュラインデータの一部のワードデータが第２キャッシュメモリ部１４のメモリ領域ｍ２に重複して格納される。キャッシュコントローラ１５は、アクセスしたいワードデータが、Ｌ２キャッシュ７のタグ情報により、メモリ領域ｍ２に格納されていることがわかると、第１キャッシュメモリ部１３にアクセスするのと並行して、メモリ領域ｍ２内のワードデータにアクセスする。
【００３６】
図６では、メモリ領域ｍ３を省略しているが、図５と同様にメモリ領域ｍ３を設けて、メモリ領域ｍ２に格納する各ワードデータの識別情報を格納してもよい。なお、後述する図７と図８でもメモリ領域ｍ３を省略しているが、メモリ領域ｍ３を設けてもよい。
【００３７】
図７はExclusiveポリシ（第２ポリシ）を説明する図である。Exclusiveポリシでは、第１キャッシュメモリ部１３にキャッシュライン単位で格納されるキャッシュラインデータ中の一部のワードデータを第２キャッシュメモリ部１４のメモリ領域ｍ２に格納した後は、このワードデータを第１キャッシュメモリ部１３から削除して、第１キャッシュメモリ部１３と第２キャッシュメモリ部１４で排他的にデータを格納する。これにより、第１キャッシュメモリ部１３内のメモリ領域を有効活用することができる。
【００３８】
図６のInclusiveポリシでも、図７のExclusiveポリシでも、第１キャッシュメモリ部１３が複数のウェイに分かれている場合は、各ウェイごとに等しい数のワードデータを第２キャッシュメモリ部１４のメモリ領域ｍ２に格納する方式を採用してもよい。これに対して、アクセス頻度に応じて、各ウェイに優先度を持たせて、優先度の高い順に、より多くのワードデータを第２キャッシュメモリ部１４のメモリ領域ｍ２に格納する方式（以下、アクセス頻度ワード数可変方式）を採用してもよい。
【００３９】
図８はアクセス頻度ワード数可変方式を説明する図である。キャッシュコントローラ１５は、アクセスの時間局所性を、ＬＲＵ（Least Recently Used）ポジションとして管理している。このＬＲＵポジションを利用することで、第１キャッシュメモリ部１３内の各ウェイごとに、第２キャッシュメモリ１のメモリ領域ｍ２に格納するワードデータの数を可変にしてもよい。図８の例では、ウェイ０とウェイ１ではそれぞれ４ワードデータを、ウェイ２では２ワードデータを、ウェイ６とウェイ７ではそれぞれ１ワードデータを第２キャッシュメモリ部１４内のメモリ領域ｍ２に格納している。
【００４０】
図８のアクセス頻度ワード数可変方式では、以下の２つを考慮に入れて各ウェイに優先度をつけている。
【００４１】
１）プロセッサコアが実行する一般的な時間局所性が存在するプログラムでは、ウェイ１はウェイ７より参照される可能性が高い。
【００４２】
２）重要なワードデータすなわちクリティカルワードの特定には予測を用いるため、場合によっては予測ミスが発生する。したがって、多数のワードを保持できるほど、予測精度の向上が見込める。
【００４３】
図８は、上記２）による効果を効果的に得るため、１）の性質を利用した構成となっている。上記１，２を考慮に入れて、図８では、番号の若いウェイほど、より多くのワードデータを第２キャッシュメモリ部１４のメモリ領域ｍ２に格納している。
【００４４】
なお、クリティカルワードの特定方法としては、例えば、以下の第１方法〜第３方法の３通りが考えられる。
【００４５】
第１方法は、アドレス順である。キャッシュライン内の先頭側のアドレスほど、プロセッサコアによって最初に参照されやすい。そこで、第１方法では、第１キャッシュメモリ部１３の各ウェイごとに、キャッシュラインの先頭側のワードデータを第２キャッシュメモリ部１４のメモリ領域ｍ２に格納する。この第１方法は、メモリ領域ｍ２に格納すべきワードデータの決定が容易であり、キャッシュコントローラ１５は、各キャッシュラインの先頭アドレスから所定ワード分のワードデータを順にメモリ領域ｍ２に格納すればよい。第１方法を用いる場合、図４のように、クリティカルワードを動的に決定する必要が無いため、第２キャッシュメモリ部１４のメモリ領域ｍ３は保持しなくてもよい。
【００４６】
第２方法は、前回参照したワードデータを優先することである。キャッシュコントローラ１５は、第１キャッシュメモリ部１３に格納されたワードデータの時間的局所性を利用して、直近にアクセスされたワードデータから順にメモリ領域ｍ２に格納する。
【００４７】
第３方法は、参照回数の多いワードデータを優先することである。数多く参照されたワードデータほど、参照されやすい性質を利用する。キャッシュコントローラ１５は、ワードデータごとに参照回数を計測し、参照回数の多いワードデータから順にメモリ領域ｍ２に格納する。  キャッシュコントローラ１５に対する読み出し要求には様々なものがあるが、代表的なものとしてラインデータを一意に特定可能なラインアドレスによる要求と、ワードデータを一意に特定可能なワードアドレスによる要求がある。例えば、ワードアドレスによるアクセスであれば第１方法・第２方法・第３方法のどれかを用いればよいし、ラインアドレスによるアクセスであれば第１方法を用いればよい。
【００４８】
なお、本実施形態での読み出し・書き込み要求者はL1キャッシュ６である。L2キャッシュ７のキャッシュコントローラ１５は、読み出されたデータを順次読み出し要求者であるL1キャッシュ６に転送する。L1キャッシュはL2キャッシュから送られてきたデータに演算器１１が読み出し要求を出したデータが含まれていれば、当該データを演算器１１に送付する。
【００４９】
次に、本実施形態によるＬ２キャッシュ７からの読み出し手順を説明する。Ｌ２キャッシュ７のタグアクセスとデータアクセスの手順には、一般に以下の２通りがある。一つは、タグアクセスとデータアクセスを並行して行う並行アクセス方式である。もう一つは、タグアクセスとデータアクセスを逐次的に行う逐次アクセス方式である。
【００５０】
本実施形態では、これら２つのアクセス方式に加えて、第２キャッシュメモリ部１４のメモリ領域ｍ２へのアクセスと第１キャッシュメモリ部１３へのアクセスとを並行して行うか、逐次的に行うかの選択肢がある。よって、例えばこれらの組合せとして、本実施形態の読み出し手順には、以下の３つの方式が存在する。
【００５１】
１）第２キャッシュメモリ部１４のメモリ領域ｍ１，ｍ３のタグと、第２キャッシュメモリ部１４のメモリ領域ｍ２と、第１キャッシュメモリ部１３とに並行してアクセスする方式。
【００５２】
２）第２キャッシュメモリ部１４のメモリ領域ｍ１，ｍ３にアクセスし、次にメモリ領域ｍ２にアクセスし、次に第１キャッシュメモリ部１３にアクセスする方式。この方式では、まず、第２キャッシュメモリ部１４のメモリ領域ｍ１，ｍ３のタグにアクセスする。その結果、メモリ領域ｍ２にワードデータが存在することがわかると、次にメモリ領域ｍ２にアクセスすると共に、第１キャッシュメモリ部１３にアクセスする。高速に読み出し可能な第２キャッシュメモリ部１４のデータを先行して読み出し元に転送し、その後、第１キャッシュメモリ部１３のデータを転送する。一方、メモリ領域ｍ２にワードデータが存在せず、第１キャッシュメモリ部１３に存在することがわかると、第１キャッシュメモリ部１３にアクセスする。
【００５３】
３）第２キャッシュメモリ部１４のメモリ領域ｍ１〜ｍ３に並行してアクセスする方式。この方式では、メモリ領域ｍ１，ｍ３のタグとメモリ領域ｍ２のワードデータに並行してアクセスし、ワードデータが存在すれば読み出して転送する。その後、第１キャッシュメモリ部１３にアクセスし、ラインデータを転送する。メモリ領域ｍ２にワードデータが存在しない場合は、メモリ領域ｍ１のタグにより第１キャッシュメモリ部１３に対象データが存在することがわかれば、第１キャッシュメモリ部１３にアクセスする。
【００５４】
上記の読み出し手順では、第２キャッシュメモリ部１４にワードデータが存在した場合でも、第１キャッシュメモリ部１３にアクセスを行いラインデータを読み出す例を示したが必ずしもこのような制御を行わなくてもよい。例えば、読み出し元がワードデータのみ要求していれば、第１キャッシュメモリ部１３へのアクセスは行わなくてもよい。
【００５５】
次に、本実施形態によるＬ２キャッシュ７への書き込み手順を説明する。書き込み元がライン単位での書き込み要求を行い、第１キャッシュメモリ部１３にヒットした場合は以下のような手順で書き込みを行う。まず、第１キャッシュメモリ部１３に書き込みを行う。同時に、必要に応じて第２キャッシュメモリ部１４のメモリ領域ｍ３を参照し、第２キャッシュメモリ部１４に格納されているワードデータに対して書き込みを行う。
【００５６】
書き込み元がワード単位での書き込み要求を行う場合、もしくは、ライン単位の書き込み要求であってもキャッシュコントローラがライン中の書き換えられているワードを特定する場合は、以下のような方式も選択可能である。このような場合に、第２キャッシュメモリ部１４のメモリ領域ｍ１，ｍ３のタグによりキャッシュヒットした場合の書き込み方式として、以下の２つの方式が存在する。
【００５７】
１）書き込むべきアドレスのワードデータが第２キャッシュメモリ部１４のメモリ領域ｍ２に存在する場合に、メモリ領域ｍ２のワードデータを上書きし、かつ第１キャッシュメモリ部１３にも書き込む方式。
【００５８】
２）書き込むべきアドレスのワードデータが第２キャッシュメモリ部１４のメモリ領域ｍ２に存在する場合に、メモリ領域ｍ２のワードデータを上書きするが、第１キャッシュメモリ部１３には書き込まない方式。
【００５９】
上記２）の方式の場合、第１キャッシュメモリ部１３には最新のワードデータを書き込んでいないため、下位階層のキャッシュメモリ１やメインメモリ８に古いワードデータを書き戻してしまわないように、メモリ領域ｍ２内の各ワードデータごとにダーティフラグを用意する必要がある。ダーティフラグは例えばメモリ領域ｍ２に格納される。また、下位階層のキャッシュメモリ１やメインメモリ８にライトバックする際には、メモリ領域ｍ２内のダーティな各ワードデータと第１キャッシュメモリ部１３内のキャッシュラインデータとをマージする必要がある。したがって、ライトバック時には、ダーティフラグに基づいて、メモリ領域ｍ２内に書き戻すべきワードデータがあるか否かをチェックする必要がある。
【００６０】
次に、ＬＲＵリプレースメントの手順について説明する。ＬＲＵポジションに基づいて、第１キャッシュメモリ部１３から第２キャッシュメモリ部１４のメモリ領域ｍ２にワードデータをコピーまたは移動する場合、第１キャッシュメモリ部１３の各ウェイごとに、コピーまたは移動するワードデータの数が同じであれば、第１キャッシュメモリ部１３のメモリ領域ｍ１，ｍ３のタグ情報を更新するだけで、ＬＲＵリプレースメントを行える。一般的には、各エントリに対応付けられるＬＲＵ順序記憶領域を書き換えるのみでよい。例えば、図４の構成であれば、それぞれのエントリに対応付けられているＷａｙ０やＷａｙ８といった情報を書き換えるのみでよい。
【００６１】
一方、図８の構成のように、各ウェイごとに、コピーまたは移動するワードデータの数が異なる場合、一般的なキャッシュメモリ１の制御に加えて、以下の手順が必要となる。
【００６２】
１）第１キャッシュメモリ部１３のコピーまたは移動するワードデータの数が少ないウェイから、コピーまたは移動するワードデータの数が多いウェイにデータを移動する場合、新たにコピーまたは移動可能な数分のワードデータを第１キャッシュメモリ部１３または第２キャッシュメモリ部１４から第２キャッシュメモリ部１４のメモリ領域ｍ２にコピーまたは移動する。
【００６３】
２）第１キャッシュメモリ部１３のコピーまたは移動するワードデータの数が多いウェイから、コピーまたは移動するワードデータの数が少ないウェイにデータを移動する場合、いままでコピーまたは移動していた複数のワードデータのうち、優先度の高いワードデータのみを第２キャッシュメモリ部１４のメモリ領域ｍ２にコピーまたは移動する。
【００６４】
なお、ＬＲＵポジションの入替ごとに第２キャッシュメモリ部１４のメモリ領域ｍ２の全体を書き換えるのは非効率である。そこで、メモリ領域ｍ２に格納するワードデータの数の差分のみについて、ワードデータを更新してもよい。例えば、データＡが保持されているウェイ１には２ワードデータが、データＢが保持されているウェイ８には１ワードデータが、それぞれ第２キャッシュメモリ部１４のメモリ領域ｍ２に確保されている場合に、ウェイ１とウェイ８でＬＲＵポジションを入れ替える場合は、以下の手順で行えばよい。
【００６５】
まず、一般のキャッシュメモリ１と同様にタグ情報を更新し、データＡに対応するメモリ領域ｍ２の１ワードデータ分の領域を、データＢの１ワードデータ分の領域として再割り当てする。次に、データＢに新たに割り当てられた１ワードデータ分の領域に、データＢの１ワードデータを書き込む。
【００６６】
このように、本実施形態では、キャッシュライン単位でデータを格納する第１キャッシュメモリ部１３とは別個に、ワード単位でデータを格納する第２キャッシュメモリ部１４を設けるため、例えばライン中で最初にアクセスされる頻度の高いワードデータを第２キャッシュメモリ部１４に格納することで、キャッシュメモリ１の平均的なアクセス速度を向上できるとともに、ワード単位でデータにアクセスできることから、アクセス効率を向上でき、消費電力の削減が図れる。
【００６７】
（本実施形態における電源遮断方式）
上記の実施形態では、キャッシュメモリ１へのアクセス時（アクティブ時）の高速化・低電力化について述べた。一方で、キャッシュメモリ１へのアクセスが少ないとき（スタンバイ時）、リーク電力削減のため、電源電圧の低下や電源遮断を行ってもよい。電源電圧の低下や電源遮断が行われている状態をスタンバイ状態とし、それ以外の状態をアクティブ状態とする。本実施形態での電源遮断は、アクティブ時の実施形態に示した制御ポリシによって異なる。以下では、図５の構成において、１）第１キャッシュメモリ部１３と第２キャッシュメモリ部１４がInclusiveポリシである、２）第２キャッシュメモリ部１４にDirtyなデータが存在する制御方式を例とし、キャッシュコントローラ１５が第１キャッシュメモリ部１３および第２キャッシュメモリ部１４のメモリ領域ｍ２の電源遮断を行う手順を述べる。
【００６８】
なお、図５には示されていないが、第２キャッシュメモリ部１４のメモリ領域ｍ２の各エントリに例えば１ビットのデータ有効フラグが備えられているものとする。データ有効フラグとは、当該エントリに対応する第２キャッシュメモリ部１４のメモリ領域ｍ２データが演算に利用可能なデータ（有効データ）であるか、演算に利用できないデータ（無効データ）であるかを格納するフラグである。例えば、このフラグが１である場合に有効データであり、０である場合に無効データである。このフラグの保持形態には様々なものが考えられる。例えば、第２キャッシュメモリ部１４のメモリ領域ｍ２のワードデータ毎にデータ有効フラグを保持してもよいし、第２キャッシュメモリ部１４で１つのデータ有効フラグを保持してもよい。
【００６９】
（手順１）第２キャッシュメモリ部１４のDirtyなデータを、第１キャッシュメモリ部１３へとコピーし、Dirtyフラグをリセットする。
（手順２）第２キャッシュメモリ部１４のデータ有効フラグを全て０にセットする。
（手順３）第２キャッシュメモリ部１４のメモリ領域ｍ２の電源を遮断する。
（手順４）第１キャッシュメモリ部１３の電源を遮断する。
【００７０】
これらの手順は、必ずしも連続して行われなくてもよい。例えば手順３までを行いスタンバイ状態にあるとき、手順４は行わずにアクティブ状態へと遷移してもよい。スタンバイ状態からアクティブ状態への遷移の際、必要に応じて第２キャッシュメモリ部１４のメモリ領域ｍ３を参照したうえで、第１キャッシュメモリ部１３から第２キャッシュメモリ部１４へとワードデータのデータコピーを行ってもよいし、第１キャッシュメモリ部１３へのアクセス時に順次、第２キャッシュメモリ部１４へとワードデータのコピーを行ってもよい。
【００７１】
例えば、第１キャッシュメモリ部１３にＭＲＡＭを用い、第２キャッシュメモリ部１４にＳＲＡＭを用いる場合、リーク電力の支配的な要因はＳＲＡＭである。本実施形態において手順３までを行うことで、キャッシュ全体のリーク電力を大幅に削減することが出来る。また、手順３や手順４を終えた状態でもラインデータは第１キャッシュメモリ部１３に格納されているため、アクティブ状態復帰時のキャッシュメモリ内のデータ消失による性能低下を抑制することが出来る。つまり、本実施形態により、データ損失による性能低下を抑制しつつ、大幅なリーク電力削減効果が得られる。
【００７２】
（本実施形態における誤り訂正方式）
例えば、第１キャッシュメモリ部１３としてＭＲＡＭを用いる場合、ＳＲＡＭのみで構成されるキャッシュメモリと比較し、ビットエラーの発生頻度が高いという問題がある。これに対処するため、例えば、図２のように誤り訂正コントローラ部１６を用意し、第１キャッシュメモリ部１３の誤り訂正を行う。しかしながら、誤り訂正はデータ読み出し後に逐次的に行われるため、第１キャッシュメモリ部１３のレイテンシの増加を引き起こす。
【００７３】
本実施形態では、演算器１１が最初に利用する頻度の高いクリティカルワードを、第２キャッシュメモリ部１４のＳＲＡＭに格納する。一般的に、ＳＲＡＭは誤り訂正が必要ないため、第２キャッシュメモリ１４の読み出しおよび誤り訂正に先行して読み出し元へとワードデータを転送することが可能となる。演算器１１は、直近で必要であるデータが先行して転送されたワードデータであれば、第１キャッシュメモリ部１３のラインデータを待つことなく、計算を行うことが出来る。従って、本実施形態により、誤り訂正オーバヘッドによる性能低下の抑制という効果も得られる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１  キャッシュメモリ、２  プロセッサシステム、３  プロセッサコア、５  ＭＭＵ、６  Ｌ１キャッシュ、７  Ｌ２キャッシュ、８  メインメモリ、１１  演算器、１３  第１キャッシュメモリ部、１４  第２キャッシュメモリ部、１５  キャッシュコントローラ、１６  誤り訂正コントローラ、１７  電源制御回路
【図１】
2015179320.tif 000003
【図２】
2015179320.tif 000004
【図４】
2015179320.tif 000005
【図５】
2015179320.tif 000006
【図６】
2015179320.tif 000007
【図７】
2015179320.tif 000008
【図８】
2015179320.tif 000009
【図３】
2015179320.tif 000010