(57)【要約】 【課題】アクセス性能を低下させずに、大容量化と低消費電力化を図る。【解決手段】メモリシステムは、揮発性メモリを有する第１キャッシュメモリと、揮発性メモリよりもアクセス速度が低速な不揮発性メモリを有する第２キャッシュメモリと、第２キャッシュメモリを第１キャッシュメモリよりも下位階層のキャッシュメモリとして使用する第１モードと、第１キャッシュメモリおよび第２キャッシュメモリを同一階層の別個のキャッシュメモリとして使用する第２モードとの切替を行う再構成コントローラと、を備える。【選択図】図１
2016170729.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリを有する第１キャッシュメモリと、
前記揮発性メモリよりもアクセス速度が低速な不揮発性メモリを有する第２キャッシュメモリと、
前記第２キャッシュメモリを前記第１キャッシュメモリよりも下位階層のキャッシュメモリとして使用する第１モードと、前記第１キャッシュメモリおよび前記第２キャッシュメモリを同一階層の別個のキャッシュメモリとして使用する第２モードとの切替を行う再構成コントローラと、を備えるメモリシステム。
【請求項２】
前記第１モードまたは前記第２モードの切替情報を格納する切替情報格納部を備える請求項１に記載のメモリシステム。
【請求項３】
読み出し時に誤り訂正処理を必要としない揮発性メモリを有する第１キャッシュメモリと、
前記揮発性メモリよりもアクセス速度が低速で、かつ読み出し時に誤り訂正処理を必要とする不揮発性メモリを有する第２キャッシュメモリと、
前記第２キャッシュメモリを前記第１キャッシュメモリよりも下位階層のキャッシュメモリとして使用する第１モードと、前記第１キャッシュメモリおよび前記第２キャッシュメモリを同一階層の別個のキャッシュメモリとして使用する第２モードとの切替を行う再構成コントローラと、
前記第２キャッシュメモリから読み出したデータの誤り訂正処理を行う誤り訂正部と、を備えるメモリシステム。
【請求項４】
前記第１モード時には前記第１キャッシュメモリへのアクセスを行い、前記第２モード時には前記第１キャッシュメモリへのアクセスを停止する第１コントローラと、
前記第１モード時には前記第２キャッシュメモリへのアクセスを行い、前記第２モード時には前記第１および第２キャッシュメモリへのアクセスを行う第２コントローラと、を備える請求項１乃至３のいずれかに記載のメモリシステム。
【請求項５】
前記第２コントローラは、前記第２モード時には、前記第１キャッシュメモリにアクセスするデータ量の単位よりも多い単位で前記第２キャッシュメモリにアクセスする請求項４に記載のメモリシステム。
【請求項６】
前記第２コントローラは、前記第２モード時には、前記第１キャッシュメモリにワード単位でアクセスし、かつ前記第２キャッシュメモリにキャッシュライン単位でアクセスする請求項５に記載のメモリシステム。
【請求項７】
前記第２コントローラは、前記第２モード時には、前記第１キャッシュメモリに格納したデータのすべてを前記第２キャッシュメモリにも格納する請求項４乃至６のいずれか１項に記載のメモリシステム。
【請求項８】
前記第２コントローラは、前記第２モード時には、前記第１キャッシュメモリおよび前記第２キャッシュメモリに排他的にデータを格納する請求項４乃至６のいずれか１項に記載のメモリシステム。
【請求項９】
前記第２コントローラは、前記第２モード時には、プロセッサが最初にアクセスする頻度が高いワードデータを前記第１キャッシュメモリに格納する請求項４乃至８のいずれか１項に記載のメモリシステム。
【請求項１０】
前記第１コントローラは、前記第１モード時には、キャッシュライン単位で前記第１キャッシュメモリにアクセスし、
前記第２コントローラは、前記第１モード時には、キャッシュライン単位で前記第２キャッシュメモリにアクセスする請求項４乃至９のいずれかに記載のメモリシステム。
【請求項１１】
前記再構成コントローラは、前記第１モードまたは前記第２モードの切替情報を前記第１コントローラおよび前記第２コントローラに通知する請求項４乃至１０のいずれか１項に記載のメモリシステム。
【請求項１２】
前記第１キャッシュメモリは、
前記揮発性メモリを有する第１キャッシュデータ部と、
前記揮発性メモリを有し前記第１キャッシュデータ部に格納したデータに対応するアドレス情報を格納する第１タグ部と、を有し、
前記第２キャッシュメモリは、
前記不揮発性メモリを有する第２キャッシュデータ部と、
前記揮発性メモリを有し前記第２キャッシュデータ部に格納したデータに対応するアドレス情報を格納する第２タグ部と、を有する請求項１乃至１１のいずれかに記載のメモリシステム。
【請求項１３】
前記再構成コントローラは、少なくとも前記第１キャッシュメモリへのアクセス頻度と、前記第２キャッシュメモリへのアクセス頻度と、に基づいて、前記第１モードと前記第２モードとの切替を行う請求項１乃至１２のいずれか１項に記載のメモリシステム。
【請求項１４】
前記揮発性メモリはＳＲＡＭ（Static Random Access Memory）であり、
前記不揮発性メモリはＭＲＡＭ（Magnetoresistive Random Access Memory）である請求項１乃至１３のいずれか１項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
メモリウォール問題と称されるように、メモリアクセスに要する時間と消費電力が演算コアの性能向上を阻害する大きな要因となっている。
【０００３】
このため、メインメモリよりも高速なキャッシュメモリを大容量化する方策などが取られている。従来のキャッシュメモリは、メインメモリとして用いられるＤＲＡＭ（Dynamic Random Access Memory）よりも高速なＳＲＡＭ（Static RAM）を用いることが多かったが、ＳＲＡＭはＤＲＡＭほどは高集積化ができず、価格も高いため、キャッシュメモリを大容量化すると、回路面積の増大や価格の上昇という問題を引き起こす。
【０００４】
ＳＲＡＭ以外の次世代メモリを用いることも検討されており、例えば、ＤＲＡＭよりも高速なＭＲＡＭ（Magnetoresistive RAM）をキャッシュメモリとして利用する検討もなされている。ＭＲＡＭは、高集積化が比較的容易な不揮発性メモリであり、低リーク電力であるため省電力化も可能であるが、特に書き込み時の速度がＳＲＡＭよりも遅いため、アクセス速度の観点ではＳＲＡＭよりも劣っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１９８１２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、アクセス性能を低下させずに、大容量化と低消費電力化を図ることが可能なメモリシステムを提供するものである。
【課題を解決するための手段】
【０００７】
本実施形態では、揮発性メモリを有する第１キャッシュメモリと、
前記揮発性メモリよりもアクセス速度が低速な不揮発性メモリを有する第２キャッシュメモリと、
前記第２キャッシュメモリを前記第１キャッシュメモリよりも下位階層のキャッシュメモリとして使用する第１モードと、前記第１キャッシュメモリおよび前記第２キャッシュメモリを同一階層の別個のキャッシュメモリとして使用する第２モードとの切替を行う再構成コントローラと、を備えるメモリシステムが提供される。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図。
【図２】再構成可能なキャッシュメモリ５の内部構成の一例を示すブロック図。
【図３】再構成可能なキャッシュメモリ５を第２モードから第１モードに再構成した場合のブロック図。
【図４】再構成可能なキャッシュメモリ５を第１モードから第２モードに再構成した場合のブロック図。
【図５】ハイブリッドメモリのデータ構成の第１例を示す図。
【図６】ハイブリッドメモリのデータ構成の第２例を示す図。
【図７】再構成コントローラの処理手順の一例を示すフローチャート。
【図８】Inclusiveポリシを説明する図。
【図９】Exclusiveポリシを説明する図。
【図１０】図５のハイブリッドメモリのアクセス頻度ワード数可変方式を説明する図。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、メモリシステム内の特徴的な構成および動作を中心に説明するが、メモリシステムには以下の説明で省略した構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれるものである。
【００１０】
図１は一実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、演算コア３と、メモリシステム１とを備えている。メモリシステム１は、Ｌ１キャッシュ４と、再構成可能なキャッシュメモリ５とを備えている。メモリシステム１には、最下層のメモリであるメインメモリ６が接続されている。メモリシステム１の中にメインメモリ６を含めてもよいが、本明細書では、メモリシステム１の外部にメインメモリ６が設けられる例を説明する。
【００１１】
演算コア３は、複数のコア部を有するマルチコア構成でもよいし、シングルコア構成でもよい。演算コア３はＬ１キャッシュ４に接続されている。演算コア３は、演算に利用するデータや命令の読み出し、および演算結果のデータの格納をＬ１キャッシュ４に対して行う。
【００１２】
Ｌ１キャッシュ４は、最上層のキャッシュメモリであり、高速のアクセス性能が要求されるため、例えばＳＲＡＭで構成されている。
【００１３】
再構成可能なキャッシュメモリ５は、Ｌ１キャッシュ４よりも下位階層のキャッシュメモリである。図１の例では、演算コア３が要求したデータがＬ１キャッシュ４内に格納されていない場合に、再構成可能なキャッシュメモリ５へのアクセスが行われる。再構成可能とは、キャッシュメモリの構造を複数通りに切り替えることができることを意味する。後述するように、再構成可能なキャッシュメモリ５は、複数のキャッシュメモリを有し、これら複数のキャッシュメモリを別階層のキャッシュメモリとして使用するモード（第１モード）と、同一階層でアクセス速度が相違する別個のキャッシュメモリとして使用するモード（第２モード）とに切替可能である。
【００１４】
なお、本明細書では、再構成可能なキャッシュメモリ５が２つのキャッシュメモリで構成されている例を説明するが、再構成可能なキャッシュメモリ５内に含まれるキャッシュメモリの数は２以上であればよく、その数は任意である。例えば、再構成可能なキャッシュメモリ５内に３つのキャッシュメモリが含まれる場合、第１モードでは、これら３つのキャッシュメモリを別階層のキャッシュメモリとして利用し、第２モードでは、これら３つのキャッシュメモリを同一階層でアクセス速度がそれぞれ相違する別個のキャッシュメモリとして利用する。本明細書では、説明の簡略化のために、再構成可能なキャッシュメモリ５の中に２つのキャッシュメモリがあり、第１モードまたは第２モードに切替可能である例を説明する。
【００１５】
メインメモリ６は、例えばＤＲＡＭで構成されている。演算コア３が要求したデータがＬ１キャッシュ４に格納されていない場合、このデータが再構成可能なキャッシュメモリ５に格納されているか否かが検索され、再構成可能なキャッシュメモリ５にも格納されていなければ、メインメモリ６へのアクセスが行われる。
【００１６】
図２は再構成可能なキャッシュメモリ５の内部構成の一例を示すブロック図である。図２に示す再構成可能なキャッシュメモリ５は、Ｌ２データアレイ（第１キャッシュメモリ、第１キャッシュデータ部）１１と、第１Ｌ２タグアレイ（第１タグ部）１２と、Ｌ２コントローラ（第１コントローラ）１３と、Ｌ３データアレイ（第２キャッシュメモリ、第２キャッシュデータ部）１４と、第２Ｌ２タグアレイ（第２タグ部）１５と、Ｌ３タグアレイ１６と、Ｌ３コントローラ（第２コントローラ）１７と、再構成コントローラ１８と、構成情報レジスタ（切替情報格納部）１９と、誤り訂正回路（誤り訂正部）２０と、を有する。
【００１７】
ここで、再構成可能なキャッシュメモリ５は、必ずしもＬ２階層とＬ３階層のキャッシュメモリを対象としたものとは限らない。例えば、Ｌ１キャッシュ４とＬ２キャッシュまでは既存のキャッシュメモリと同様の階層化メモリとし、Ｌ３キャッシュとＬ４キャッシュを再構成可能なキャッシュメモリ５に置換してもよい。以下では、説明の簡略化のために、再構成可能なキャッシュメモリ５が図２のような構成である例を説明する。
【００１８】
Ｌ２データアレイ１１は、演算コア３から要求のあったデータを格納する揮発性メモリであり、第１Ｌ２タグアレイ１２は、第１モード時にＬ２データアレイ１１内のデータのアドレス情報を格納する揮発性メモリである。より具体的な一例では、Ｌ２データアレイ１１と第１Ｌ２タグアレイ１２はいずれも、ＳＲＡＭで構成されている。
【００１９】
Ｌ２コントローラ１３は、後述するように、再構成コントローラ１８が切り替えたモードに応じて、Ｌ２データアレイ１１へのアクセスを制御する。より具体的には、Ｌ２コントローラ１３は、第１モード時には、Ｌ２データアレイ１１をＬ１キャッシュ４の下位階層のＬ２キャッシュメモリとみなしてアクセスを行う。この場合、Ｌ２コントローラ１３は、キャッシュライン単位でＬ２データアレイ１１にアクセスする。一方、Ｌ２コントローラ１３は、第２モード時には、Ｌ２データアレイ１１へのアクセスを停止する。このように、第２モード時では、Ｌ２コントローラ１３と第１Ｌ２タグアレイ１２は使用しなくてもよい。
【００２０】
Ｌ３データアレイ１４は、演算コア３から要求のあったデータを格納する不揮発性メモリである。第２Ｌ２タグアレイ１５は、後述する第１モードでは使用せず、第２モード時にＬ２データアレイ１１内のデータのアドレス情報を格納する揮発性メモリである。L3タグアレイ１６は、Ｌ３データアレイ１４内のデータのアドレス情報を格納する揮発性メモリである。より具体的な一例では、Ｌ３データアレイ１４はＭＲＡＭで構成され、第２Ｌ２タグアレイ１５とＬ３タグアレイ１６はＳＲＡＭで構成されている。Ｌ３タグアレイ１６をＳＲＡＭにする理由は、演算コア３から要求のあったデータがＬ３データアレイ１４内に格納されているか否かのヒット／ミス判定をできるだけ迅速に行う必要があるためである。また、Ｌ３タグアレイ１６はＬ３データアレイ１４に比べてメモリ容量が小さいため、ＳＲＡＭを用いたとしても、回路面積の増大やコストアップが問題になることはない。なお、場合によっては、Ｌ３タグアレイ１６をＭＲＡＭ等の不揮発性メモリで構成してもよい。
【００２１】
Ｌ３データアレイ１４とＬ３タグアレイ１６は、第１モード時には、Ｌ３キャッシュメモリとして機能する。また、第２モード時には、Ｌ２データアレイ１１とＬ３データアレイ１４は、同一階層でアクセス速度が互いに相違するハイブリッドメモリとして機能する。
【００２２】
誤り訂正回路２０は、Ｌ３データアレイ１４から読み出したデータに対して誤り訂正処理を行い、誤り訂正されたデータをＬ３コントローラ１７に供給する。誤り訂正回路２０が必要になる理由は、Ｌ３データアレイ１４としてＭＲＡＭを用いた場合、ＳＲＡＭと比較して、ビットエラーの発生頻度が高いためである。演算コア３が要求したデータをＬ３データアレイ１４から読み出した場合は、誤り訂正回路２０で誤り訂正を行った後のデータが、演算コア３や、Ｌ１キャッシュ４およびＬ２データアレイ１１に供給されるため、ＭＲＡＭから読み出したデータであっても、データの信頼性が低下することはない。
【００２３】
再構成コントローラ１８は、Ｌ２データアレイ１１をＬ１キャッシュ４の下位階層のキャッシュメモリとして使用する第１モードと、Ｌ２データアレイ１１および第３データアレイを同一階層でアクセス速度が互いに相違する別個のキャッシュメモリとして使用する第２モードとの切替を行う。
【００２４】
再構成コントローラ１８は、後述するように、Ｌ２データアレイ１１とＬ３データアレイ１４のアクセス頻度情報に基づいて、第１モードと第２モードとの切替を行う。再構成コントローラ１８は、切り替えるモードの情報を構成情報レジスタ１９に格納する。この構成情報レジスタ１９は、再構成コントローラ１８の内部に設けてもよい。
【００２５】
Ｌ２コントローラ１３の内部には、不図示のＬ２データレジスタが設けられている。同様に、Ｌ３コントローラ１７の内部には、不図示のＬ３データレジスタが設けられている。再構成コントローラ１８は、構成情報レジスタ１９に設定されたモード情報を、Ｌ２コントローラ１３およびＬ３コントローラ１７に通知し、Ｌ２コントローラ１３はＬ２データレジスタにモード情報を格納し、Ｌ３コントローラ１７はＬ３データレジスタにモード情報を格納する。図２の構成情報レジスタ１９、Ｌ２データレジスタおよびＬ３データレジスタの構成は一例である。例えば、構成情報レジスタ１９のみを保持し、Ｌ２コントローラおよびＬ３コントローラが構成情報レジスタ１９を参照する形態であってもよい。
【００２６】
Ｌ２コントローラ１３は、Ｌ２データレジスタ内のモード情報に基づいて、第１モードか第２モードかを判別し、Ｌ２データアレイ１１へのアクセスを制御する。同様に、Ｌ３コントローラ１７は、Ｌ３データレジスタ内のモード情報に基づいて、第１モードか第２モードかを判別し、Ｌ２データアレイ１１とＬ３データアレイ１４とに対するアクセスを制御する。
【００２７】
（モード遷移）
図３は再構成可能なキャッシュメモリ５を第２モードから第１モードに再構成した場合のブロック図である。図３の破線部分は、第１モードでは使用されないことを示している。
【００２８】
再構成コントローラ１８は、Ｌ２データアレイ１１とＬ３データアレイ１４のアクセス頻度により、第２モードから第１モードへの再構成を決定すると、構成情報レジスタ１９に、第１モードのモード情報（例えば１）を書き込むとともに、このモード情報をＬ２コントローラ１３とＬ３コントローラ１７に通知する。この通知を受けて、Ｌ２コントローラ１３はＬ２データレジスタに第１モードのモード情報（例えば１）を書き込む。同様に、Ｌ３コントローラ１７はＬ３データレジスタに同様のモード情報を書き込む。
【００２９】
第２モードから第１モードに切り替えた場合、今までＬ２データアレイ１１に格納されていたデータは無効となる。よって、Ｌ２コントローラ１３は、Ｌ２データアレイ１１の初期化処理を行う。この初期化処理では、例えば、Ｌ２データアレイ１１にのみ存在する情報(書き込みが行われたデータ)を下位階層に書き戻すライトバック処理や、第１Ｌ２タグアレイ１２内の全メモリ領域にも０を書き込む処理を行うことが考えられる。すなわち、Ｌ２コントローラ１３は、Ｌ２データアレイ１１と第１Ｌ２タグアレイ１２の全メモリ領域を０にする処理を行う。
【００３０】
なお、Ｌ３データアレイ１４に格納されていたデータは、そのままにしておく。Ｌ３データアレイ１４内のデータをそのまま保持することで、第２モードから第１モードに切り替えた直後であっても、演算コア３から要求のあったデータをＬ３データアレイ１４から取得できる。
【００３１】
第１モードでは、Ｌ２データアレイ１１とＬ３データアレイ１４は、それぞれ別階層のメモリ（Ｌ２キャッシュメモリとＬ３キャッシュメモリ）として用いられる。より詳細には、Ｌ２データアレイ１１は、演算コア３が要求したデータがＬ１キャッシュ４内に存在しない場合、すなわちＬ１キャッシュ４でキャッシュミスが生じた場合にアクセスされる。Ｌ２コントローラ１３は、Ｌ１キャッシュ４を介して演算コア３からの読み出し要求を受け取ると、その読み出し要求のあったアドレスが第１Ｌ２タグアレイ１２内のアドレス情報にヒットするか否かを調べて、ヒットすれば、Ｌ２データアレイ１１へのアクセスを行う。Ｌ２コントローラ１３は、Ｌ２データアレイ１１から読み出したデータを、Ｌ１キャッシュ４に転送するとともに、演算コア３にも転送する。
【００３２】
Ｌ３データアレイ１４は、演算コア３が要求したデータがＬ１キャッシュ４にもＬ２データアレイ１１にも存在しない場合にアクセスされる。Ｌ３コントローラ１７は、Ｌ２コントローラ１３を介して演算コア３からの読み出し要求を受け取ると、その読み出し要求のあったアドレスがＬ３タグアレイ１６内のアドレス情報にヒットするか否かを調べて、ヒットすれば、Ｌ３データアレイ１４へのアクセスを行う。Ｌ３コントローラ１７は、Ｌ３データアレイ１４から読み出したデータを、Ｌ１キャッシュ４およびＬ２キャッシュ１１に転送すると共に、演算コア３にも転送する。
【００３３】
このように、第１モードでは、Ｌ１キャッシュ４、Ｌ２データアレイ１１（Ｌ２キャッシュメモリ）およびＬ３データアレイ１４（Ｌ３キャッシュメモリ）は階層化キャッシュメモリとして機能し、例えば、Ｌ１キャッシュ４に格納される全データがＬ２データアレイ１１に格納され、Ｌ２データアレイ１１に格納される全データがＬ３データアレイ１４に格納され、Ｌ３データアレイ１４に格納される全データがメインメモリ６に格納される。
【００３４】
一般的に、Ｌ２データアレイ１１は、Ｌ１キャッシュ４以上のメモリ容量を必要とする。また、Ｌ３データアレイ１４は、Ｌ２データアレイ１１以上のメモリ容量を必要とする。Ｌ１キャッシュ４、およびＬ２データアレイ１１に読み書きされるデータ量のアクセス単位は同じ（例えば、６４バイトのキャッシュライン単位）でもよいし、異なっていてもよい。例えば、Ｌ１キャッシュ４とＬ２データアレイ１１は６４バイトのキャッシュライン単位でアクセスし、Ｌ３データアレイ１４は１２８バイトのキャッシュライン単位でアクセスしてもよい。いずれにしても、第１モードでは、Ｌ２データアレイ１１とＬ３データアレイ１４は、キャッシュライン単位でアクセスされる。
【００３５】
図４は再構成可能なキャッシュメモリ５を第１モードから第２モードに再構成した場合のブロック図である。図４の破線部分は、第２モードでは使用されないことを示している。
再構成コントローラ１８は、第１モードから第２モードへの再構成を決定すると、構成情報レジスタ１９に第２モードのモード情報（例えば０）を書き込むとともに、このモード情報をＬ２コントローラ１３とＬ３コントローラ１７に通知する。この通知を受けて、Ｌ２コントローラ１３はＬ２データレジスタに第２モードのモード情報（例えば０）を書き込む。同様に、Ｌ３コントローラ１７はＬ３データレジスタに同様のモード情報を書き込む。
【００３６】
第１モードから第２モードに切り替えた場合、今までＬ２データアレイ１１に格納されていたデータは無効となる。よって、Ｌ２コントローラ１３は、Ｌ２データアレイ１１と第１Ｌ２タグアレイ１２の初期化処理を行う。
【００３７】
ただし、Ｌ３データアレイ１４に格納されていたデータは、そのままにしておく。よって、第１モードから第２モードに切り替えた直後は、演算コア３からの読み出し要求に応じて、Ｌ２データアレイ１１から高速にデータを読み出すことはできないが、Ｌ３データアレイ１４内には演算コア３から要求のあったデータが格納されている。演算コア３から要求されたデータがＬ３データアレイ１４に格納されていれば、メインメモリ６にアクセスするよりも高速の読み出しを行うことができる。このように、Ｌ３データアレイ１４内の情報を初期化しないことで、第１モードから第２モードに再構成した際のメモリアクセス性能の低下を抑制できる。
【００３８】
第２モードでは、Ｌ２データアレイ１１とＬ３データアレイ１４は、擬似的に同一階層のメモリとして用いられる。後述するように、キャッシュライン中のアクセス頻度の高いワードデータをＬ２データアレイ１１に格納しておけば、アクセス頻度の高いデータをより高速にアクセスすることができる。
【００３９】
なお、再構成コントローラ１８が第１モードまたは第２モードの切替をＬ２コントローラ１３とＬ３コントローラ１７に通知するタイミングはどのようなタイミングでも構わない。例えば、再構成コントローラ１８が構成情報レジスタ１９を書き換えるタイミングに合わせて通知を行ってもよいし、あるいは、構成情報レジスタ１９を書き換えた後に演算コア３からのアクセス要求をＬ２コントローラ１３とＬ３コントローラ１７に送信するタイミングに合わせて、モード情報の切替を通知してもよい。
【００４０】
（ハイブリッドメモリのデータ構成）
Ｌ３コントローラ１７は、第２モードでは、Ｌ２データアレイ１１とＬ３データアレイ１４を同一階層のキャッシュメモリ、すなわちハイブリットメモリとして利用する。図５はハイブリッドメモリのデータ構成の第１例を示す図である。図５のハイブリッドメモリは、３つのメモリ領域ｍ１，ｍ２，ｍ３を有する。メモリ領域ｍ１は、Ｌ３タグアレイ１６によるタグ領域である。メモリ領域ｍ２は、Ｌ２データアレイ１１によるワードデータ格納領域である。メモリ領域ｍ３は、Ｌ３データアレイ１４によるキャッシュラインデータ格納領域である。
【００４１】
メモリ領域ｍ１，ｍ２は、ＳＲＡＭ等の高速の揮発性メモリで構成されており、高速アクセスが可能である。メモリ領域ｍ３は、ＭＲＡＭ等の不揮発性メモリで構成されており、メモリ領域ｍ１，ｍ２よりはアクセス速度が遅いものの、メモリ容量がより大きい。
【００４２】
図５のハイブリッドメモリは、複数のウェイｗａｙ０〜ｗａｙ７に分けられており、各ウェイにはキャッシュライン単位でアクセスが行われる。なお、ウェイの数は８つに限定されない。また、データアレイを複数のウェイに分けることは必須ではない。
【００４３】
メモリ領域ｍ２に対応するＬ２データアレイ１１には、メモリ領域ｍ３に対応するＬ３データアレイ１４よりも高速アクセスが可能であるため、Ｌ３データアレイ１４内の各キャッシュライン中のうち、演算コアから最初に参照される頻繁が高いワードデータ、すなわちクリティカルワードをメモリ領域ｍ２に格納するのが望ましい。図５では、各ウェイごとに、２ワードずつのクリティカルワードを格納可能なメモリ領域ｍ２を設ける例を示しているが、メモリ領域ｍ２のメモリ容量については特に制限はない。
【００４４】
図５のようなハイブリッドメモリを設けることで、ＭＲＡＭ等の不揮発性メモリの欠点である低アクセス速度と高消費電力による性能低下を抑制することができる。例えば、各キャッシュライン中で最初にアクセスされる頻度の高いワードデータをメモリ領域ｍ２に格納することで、平均的なアクセス速度を向上でき、消費電力も抑制できる。
【００４５】
図６はハイブリッドメモリのデータ構成の第２例を示す図である。図６のハイブリッドメモリは、図５のメモリ領域ｍ１〜ｍ３に加えて、メモリ領域ｍ４を有する。メモリ領域ｍ４は、メモリ領域ｍ２のワードデータのアドレス情報を格納するタグ領域である。メモリ領域ｍ４には、図２の第２Ｌ２タグアレイ１５が用いられる。
【００４６】
１ワードデータが８バイトで、１キャッシュラインが６４バイトであるとすると１キャッシュライン中に８ワードが格納される。
【００４７】
メモリ領域ｍ４にアドレス情報を格納する場合、１キャッシュライン中のどのワードデータがメモリ領域ｍ２に格納されたかを識別するためには、最低３ビットが必要となる。したがって、メモリ領域ｍ４は、最低でもＬ２データアレイ１１に格納されるワードデータの数×３ビット分のメモリ容量を必要とする。メモリ領域ｍ４にラインの先頭ワードから何ワード目かを格納する場合、８個のワードのうち何番目かを表現するのに１ワードにつき３ビットが必要となる。メモリ領域ｍ４にビットベクタを保持する場合、８個のワードそれぞれに１ビットを対応させ、８ビットが必要となる。例えば、ラインの先頭ワードを１ビット目に対応させ、ラインの先頭から２番目のワードを２ビット目に対応させればよい。例えば、Ｌ２データアレイ１１に格納されているワードと対応するビットを１とし、格納されていないワードに対応するビットを０とすればよい。
【００４８】
（再構成のポリシ）
再構成コントローラ１８が再構成を行うポリシの一つとして、よりメモリレイテンシを小さくすることが可能なキャッシュ構成を選択することが考えられる。再構成可能な各キャッシュ構成におけるＬ２データアレイ１１へのヒット回数がわかれば、以下の（１）式と（２）式から、各キャッシュ構成のオーバーヘッドを算出することができる。
【００４９】
Overhead1＝LatencySRAM×HitCountSRAM＋LatencyMRAM×HitCountMRAM    …（１）
Overhead2＝LatencySRAM×HitCountSRAM＋LatencyMRAM×(HitCountMRAM−HitCountSRAM)
…（２）
【００５０】
（１）式と（２）式では、Ｌ２データアレイ１１がＳＲＡＭで、Ｌ３データアレイ１４がＭＲＡＭの例を示している。Overhead1は第１モードでのオーバーヘッド、Overhead2は第２モードでのオーバーヘッドである。ここで、オーバーヘッドとは、Ｌ２データアレイ１１とＬ３データアレイ１４にアクセスするのに要する演算コア３の処理負荷である。また、LatencySRAMはＬ２データアレイ１１のレイテンシすなわちアクセス速度、LatencyMRAMはＬ３データアレイ１４のレイテンシ、HitCountSRAMはＬ２データアレイ１１のアクセス回数、HitCountMRAMはＬ３データアレイ１４のアクセス回数である。
【００５１】
（１）式に示すように、第１モードでのオーバーヘッドは、Ｌ２データアレイ１１のレイテンシにそのアクセス回数を乗じた値と、Ｌ３データアレイ１４のレイテンシにそのアクセス回数を乗じた値との和になる。
【００５２】
また、（２）式に示すように、第２モードでのオーバーヘッドは、Ｌ２データアレイ１１のレイテンシにそのアクセス回数を乗じた値と、Ｌ３データアレイ１４のレイテンシにそのアクセス回数を乗じた値との和になる。第２モードにおけるＬ３データアレイ１４のアクセス回数は、アクセス総回数からＬ２データアレイ１１のアクセス回数を引いた値になる。
【００５３】
再構成コントローラ１８は、（１）式と（２）式により求めた各キャッシュ構成のオーバーヘッドに基づいて、オーバーヘッドが最小のモードを選択する。より具体的には、再構成コントローラ１８は、例えば図７に示すフローチャートに基づいて、第１モードまたは第２モードを選択する。このように、アクセス回数というアクセス頻度情報をベースとしたモード選択の制御を行うことができる。本実施形態では、レイテンシ情報も用いることで比較的正確なオーバヘッドを算出したが、よりシンプルな情報を用いた制御を行ってもよい。例えば、第１モードの単位時間当たりのL３データアレイ１４のアクセス回数が閾値を超えたら第２モードを選択し、第２モードのＬ３データアレイ１４へのアクセス回数が閾値を下回ったら第１モードを選択するといった形態であってもよい。
【００５４】
まず、再構成コントローラ１８は、Ｌ２データアレイ１１のレイテンシLatencySRAMおよびアクセス回数HitCountSRAMと、Ｌ３データアレイ１４のレイテンシLatencyMRAMおよびアクセス回数HitCountMRAMとを取得する（ステップＳ１）。LatencySRAMとLatencyMRAMは、例えば、ＳＲＡＭやＭＲＡＭの設計仕様で定まるレイテンシの値を適用すればよい。HitCountSRAMとHitCountMRAMは、例えばＬ２コントローラ１３とＬ３コントローラ１７に不図示のカウンタをそれぞれ設けて計測したヒット回数を適用すればよい。より具体的には、（１）式のOverhead1を求める際のHitCountSRAMはＬ２コントローラ１３のカウンタで計測し、HitCountMRAMはＬ３コントローラ１７のカウンタで計測すればよい。また、（２）式のOverhead2を求める際のHitCountSRAMとHitCountMRAMは、ともにＬ３コントローラ１７のカウンタで計測すればよい。
【００５５】
次に、再構成コントローラ１８は、ステップＳ１で取得したレイテンシLatencySRAM、LatencyMRAMとアクセス回数HitCountSRAM、HitCountMRAMとを用いて、（１）式と（２）式にて、第１モードでのオーバーヘッドOverhead1と第２モードでのオーバーヘッドOverhead2を演算する（ステップＳ２）。
【００５６】
次に、再構成コントローラ１８は、オーバーヘッドOverhead1、Overhead2を比較し（ステップＳ３）、いずれか小さい方を選択して、選択したオーバーヘッドに対応するモードを選択する（ステップＳ３）。そして、再構成コントローラ１８は、選択したモードの識別情報（モード情報）を構成情報レジスタ１９に書き込む（ステップＳ４）。
【００５７】
なお、図７の処理は、一つのモードを選択中に、定期的あるいは不定期に行ってもよい。例えば、あるモードを選択中に、再構成可能な各キャッシュ構成についてのプロファイルを取得して、各キャッシュ構成についてのオーバーヘッドを計算して、オーバーヘッドが最小の構成に動的に切り替えるようにしてもよい。
【００５８】
第１モードおよび第２モードそれぞれでプロファイルを取得し、適切なモードを選択する方式は、プロファイル取得時間がオーバーヘッドとなるおそれがある。そこで、選択しているキャッシュ構成は通常のプロファイルを取得し、選択しているキャッシュ構成以外のキャッシュ構成のプロファイルをシミュレーションにより求めてもよい。
【００５９】
例えば、第２モードを選択している最中に、無効化されている第１Ｌ２タグアレイ１２を用いて第１モードでＬ２データアレイ１１にアクセスしたアクセス回数をシミュレーションで求めてもよい。この場合、第２モードでのＬ３データアレイ１４へのアクセス回数から、シミュレーションにより求められたＬ２データアレイ１１へのアクセス回数を減算することにより、第１モードでのＬ２データアレイ１１へのアクセス回数も求めることが出来る。また、第１モードを選択している際に、無効化されている第２Ｌ２タグアレイ１５を用いて、第２モードでＬ２データアレイ１１にアクセスする回数をシミュレーションで求めてもよい。第１モードでは、Ｌ２データアレイ１１でキャッシュヒットした場合、L３コントローラ１７へアクセスする必要は無い。しかし、前述のシミュレーションのため、Ｌ２データアレイ１１にヒットした場合でも、アクセスデータのアドレス情報をＬ３コントローラ１７に送付し、第２モードでのＬ２データアレイ１１へのアクセス回数とＬ３データアレイ１４へのアクセス回数をシミュレーションしてもよい。
【００６０】
（InclusiveとExclusive）
第２モード時にハイブリッドメモリを構成するＬ２データアレイ１１にワードデータを格納し、Ｌ３データアレイ１４にラインデータを格納する際のポリシとして、InclusiveポリシとExclusiveポリシの２つが考えられる。Inclusiveポリシでは、Ｌ２データアレイ１１に格納するワードデータをＬ３データアレイ１４にも重複して格納する。Exclusiveポリシでは、Ｌ２データアレイ１１に格納するワードデータは、Ｌ３データアレイ１４には重複して格納しない。
【００６１】
図８はInclusiveポリシ（第１ポリシ）を説明する図である。図８は、図５と同じデータ構成のハイブリッドメモリを用いた例を示している。なお、後述する図９と図１０でも、図５と同じデータ構成のハイブリッドメモリを用いている。Inclusiveポリシでは、Ｌ３データアレイ１４にキャッシュライン単位で格納されるキャッシュラインデータ中の一部のワードデータがＬ２データアレイ１１のメモリ領域ｍ２に重複して格納される。Ｌ３コントローラ１７は、アクセスしたいワードデータが、Ｌ３タグアレイ１６内のタグ情報により、メモリ領域ｍ２に格納されていることがわかると、Ｌ３データアレイ１４にアクセスするのと並行して、メモリ領域ｍ２内のワードデータにアクセスする。
【００６２】
図８では、メモリ領域ｍ４を省略しているが、図５と同様にメモリ領域ｍ４を設けて、メモリ領域ｍ２に格納する各ワードデータの識別情報を格納してもよい。なお、後述する図９と図１０でもメモリ領域ｍ４を省略しているが、メモリ領域ｍ４を設けてもよい。
【００６３】
図９はExclusiveポリシ（第２ポリシ）を説明する図である。Exclusiveポリシでは、Ｌ３データアレイ１４にキャッシュライン単位で格納されるキャッシュラインデータ中の一部のワードデータをＬ２データアレイ１１のメモリ領域ｍ２に格納した後は、このワードデータをＬ３データアレイ１４から削除して、Ｌ３データアレイ１４とＬ２データアレイ１１で排他的にデータを格納する。これにより、Ｌ３データアレイ１４内のメモリ領域を有効活用することができる。
【００６４】
図６のInclusiveポリシでも、図８のExclusiveポリシでも、Ｌ３データアレイ１４が複数のウェイに分かれている場合は、各ウェイごとに等しい数のワードデータをＬ２データアレイ１１のメモリ領域ｍ２に格納する方式を採用してもよい。これに対して、アクセス頻度に応じて、各ウェイに優先度を持たせて、優先度の高い順に、より多くのワードデータをＬ２データアレイ１１のメモリ領域ｍ２に格納する方式（以下、アクセス頻度ワード数可変方式）を採用してもよい。
【００６５】
（アクセス頻度ワード数可変方式）
図１０は図５のハイブリッドメモリのアクセス頻度ワード数可変方式を説明する図である。Ｌ３コントローラ１７は、アクセスの時間局所性を、ＬＲＵ（Least Recently Used）ポジションとして管理している。このＬＲＵポジションを利用することで、Ｌ３データアレイ１４内の各ウェイごとに、メモリ領域ｍ２に格納するワードデータの数を可変にしてもよい。図１０の例では、ウェイ０とウェイ１ではそれぞれ４ワードデータを、ウェイ２では２ワードデータを、ウェイ６とウェイ７ではそれぞれ１ワードデータをＬ２データアレイ１１内のメモリ領域ｍ２に格納している。
【００６６】
図１０のアクセス頻度ワード数可変方式では、以下の２つを考慮に入れて各ウェイに優先度をつけている。
【００６７】
１．演算コア３が実行する一般的な時間局所性が存在するプログラムでは、ウェイ１はウェイ７より参照される可能性が高い。
【００６８】
２．重要なワードデータすなわちクリティカルワードの特定には予測を用いるため、場合によっては予測ミスが発生する。したがって、多数のワードを保持できるほど、予測精度の向上が見込める。
【００６９】
図１０は、上記２．による効果を効果的に得るため、１．の性質を利用した構成となっている。上記１，２を考慮に入れて、図１０では、番号の若いウェイほど、より多くのワードデータをＬ２データアレイ１１のメモリ領域ｍ２に格納している。
【００７０】
なお、クリティカルワードの特定方法としては、例えば、以下の第１方法〜第３方法の３通りが考えられる。
【００７１】
第１方法は、アドレス順である。キャッシュライン内の先頭側のアドレスほど、演算コア３によって最初に参照されやすい。そこで、第１方法では、Ｌ３データアレイ１４の各ウェイごとに、キャッシュラインの先頭側のワードデータをＬ２データアレイ１１のメモリ領域ｍ２に格納する。この第１方法は、メモリ領域ｍ２に格納すべきワードデータの決定が容易であり、Ｌ３コントローラ１７は、各キャッシュラインの先頭アドレスから所定ワード分のワードデータを順にメモリ領域ｍ２に格納すればよい。第１方法を用いる場合、図４のように、クリティカルワードを動的に決定する必要が無いため、Ｌ２データアレイ１１のメモリ領域ｍ３は保持しなくてもよい。
【００７２】
第２方法は、前回参照したワードデータを優先することである。Ｌ３コントローラ１７は、Ｌ３データアレイ１４に格納されたワードデータの時間的局所性を利用して、直近にアクセスされたワードデータから順にメモリ領域ｍ２に格納する。これを実現するには、例えば、メモリ領域M2に格納するワードをLRU方式で決定してもよい。
【００７３】
第３方法は、参照回数の多いワードデータを優先することである。数多く参照されたワードデータほど、参照されやすい性質を利用する。Ｌ３コントローラ１７は、ワードデータごとに参照回数を計測し、参照回数の多いワードデータから順にメモリ領域ｍ２に格納する。
【００７４】
Ｌ３コントローラ１７に対する読み出し要求には様々なものがあるが、代表的なものとしてラインデータを一意に特定可能なラインアドレスによる要求と、ワードデータを一意に特定可能なワードアドレスによる要求がある。例えば、ワードアドレスによるアクセスであれば第１方法・第２方法・第３方法のどれかを用いればよいし、ラインアドレスによるアクセスであれば第１方法を用いればよい。
【００７５】
なお、本実施形態での読み出し・書き込み要求者はＬ１キャッシュ４である。Ｌ３コントローラ１７は、読み出されたデータを順次読み出し要求者であるＬ１キャッシュ４に転送する。Ｌ１キャッシュ４はＬ２キャッシュから送られてきたデータに演算コア３が読み出し要求を出したデータが含まれていれば、当該データを演算コア３に送付する。例えば、第２モードにおいて、Ｌ２データアレイ１１に格納されていたクリティカルワードが演算コア３が読み出し要求を出したデータであれば、先に到着したこのデータを演算コアに送付する。その後、Ｌ３データアレイ１４から読み出されたデータが到着すると、このデータをＬ１キャッシュ４に格納する。
【００７６】
（ハイブリッドメモリからの読み出し手順）
次に、第２モード選択時のハイブリッドメモリからの読み出し手順を説明する。Ｌ２キャッシュ７のタグアクセスとデータアクセスの手順には、一般に以下の２通りがある。一つは、タグアクセスとデータアクセスを並行して行う並行アクセス方式である。もう一つは、タグアクセスとデータアクセスを逐次的に行う逐次アクセス方式である。
【００７７】
本実施形態では、これら２つのアクセス方式に加えて、Ｌ２データアレイ１１のメモリ領域ｍ２へのアクセスとＬ３データアレイ１４へのアクセスとを並行して行うか、逐次的に行うかの選択肢がある。よって、例えばこれらの組合せとして、本実施形態の読み出し手順には、以下の３つの方式が存在する。
【００７８】
１．第２Ｌ２タグアレイ１５のメモリ領域ｍ４と、Ｌ２データアレイ１１のメモリ領域ｍ２と、Ｌ３データアレイ１４ｍ３と、Ｌ３タグアレイ１６のメモリ領域ｍ１に並行してアクセスする方式。
【００７９】
２．Ｌ３タグアレイ１６のメモリ領域ｍ１と第２Ｌ２タグアレイ１５のメモリ領域ｍ４にアクセスし、次にＬ２データアレイ１１のメモリ領域ｍ２にアクセスし、次にＬ３データアレイ１４のメモリ領域ｍ３にアクセスする方式。この方式では、まず、Ｌ３タグアレイ１６のメモリ領域ｍ１と第２Ｌ２タグアレイ１５のメモリ領域ｍ４にアクセスする。その結果、Ｌ２データアレイ１１のメモリ領域ｍ２にワードデータが存在することがわかると、次にメモリ領域ｍ２にアクセスすると共に、Ｌ３データアレイ１４のメモリ領域ｍ３にアクセスする。高速に読み出し可能なＬ２データアレイ１１のデータを先行して読み出し元に転送し、その後、Ｌ３データアレイ１４のデータを転送する。一方、メモリ領域ｍ２にワードデータが存在せず、Ｌ３データアレイ１４のメモリ領域ｍ３に存在することがわかると、Ｌ３データアレイ１４にアクセスする。
【００８０】
３．Ｌ３タグアレイ１６のメモリ領域ｍ１、第２Ｌ２タグアレイ１５のメモリ領域ｍ４およびＬ２データアレイ１１のメモリ領域ｍ１に並行してアクセスする方式。この方式では、メモリ領域ｍ１，ｍ４のタグとメモリ領域ｍ２のワードデータに並行してアクセスし、ワードデータが存在すれば読み出して転送する。その後、Ｌ３データアレイ１４のメモリ領域ｍ３にアクセスし、ラインデータを転送する。メモリ領域ｍ２にワードデータが存在しない場合は、メモリ領域ｍ１のタグによりＬ３データアレイ１４に対象データが存在することがわかれば、Ｌ３データアレイ１４にアクセスする。
【００８１】
上記の読み出し手順では、Ｌ２データアレイ１１にワードデータが存在した場合でも、Ｌ３データアレイ１４にアクセスを行いラインデータを読み出す例を示したが必ずしもこのような制御を行わなくてもよい。例えば、読み出し元がワードデータのみ要求していれば、Ｌ３データアレイ１４へのアクセスは行わなくてもよい。
【００８２】
（ハイブリッドメモリへの書込み手順）
次に、本実施形態によるハイブリッドメモリへの書き込み手順を説明する。
書き込み元がライン単位での書き込み要求を行い、Ｌ３データアレイ１４にヒットした場合は以下のような手順で書き込みを行う。まず、Ｌ３データアレイ１４に書き込みを行う。同時に、必要に応じてＬ２データアレイ１１のメモリ領域ｍ２を参照し、Ｌ２データアレイ１１に格納されているワードデータに対して書き込みを行う。
書き込み元がワード単位での書き込み要求を行う場合、もしくは、ライン単位の書き込み要求であってもキャッシュコントローラがライン中の書き換えられているワードを特定する場合は、以下のような方式も選択可能である。このような場合に、第２Ｌ２タグアレイ１５のメモリ領域ｍ４内のタグにキャッシュヒットした場合の書き込み方式として、以下の２つの方式が存在する。
【００８３】
１．書き込むべきアドレスのワードデータがＬ２データアレイ１１のメモリ領域ｍ２に存在する場合に、メモリ領域ｍ２のワードデータを上書きし、かつＬ３データアレイ１４のメモリ領域ｍ３にも書き込む方式。
【００８４】
２．書き込むべきアドレスのワードデータがＬ２データアレイ１１のメモリ領域ｍ２に存在する場合に、メモリ領域ｍ２のワードデータを上書きするが、Ｌ３データアレイ１４のメモリ領域ｍ３には書き込まない方式。
【００８５】
上記２の方式の場合、Ｌ３データアレイ１４には最新のワードデータを書き込んでいないため、下位階層のキャッシュメモリやメインメモリ６に古いワードデータを書き戻してしまわないように、メモリ領域ｍ２内の各ワードデータごとにダーティフラグを用意する必要がある。ダーティフラグは例えばメモリ領域ｍ２に格納される。また、下位階層のキャッシュメモリやメインメモリ６にライトバックする際には、メモリ領域ｍ２内のダーティな各ワードデータとＬ３データアレイ１４内のキャッシュラインデータとをマージする必要がある。したがって、ライトバック時には、ダーティフラグに基づいて、メモリ領域ｍ２内に書き戻すべきワードデータがあるか否かをチェックする必要がある。
【００８６】
（ハイブリッドメモリのＬＲＵリプレースメント）
次に、ハイブリットメモリのＬＲＵリプレースメントの手順について説明する。ＬＲＵポジションに基づいて、Ｌ３データアレイ１４からＬ２データアレイ１１のメモリ領域ｍ２にワードデータをコピーまたは移動する場合、Ｌ３データアレイ１４の各ウェイごとに、コピーまたは移動するワードデータの数が同じであれば、Ｌ３タグアレイ１６のメモリ領域ｍ１のタグ情報を更新するだけで、ＬＲＵリプレースメントを行える。一般的には、各エントリに対応付けられるＬＲＵ順序記憶領域を書き換えるのみでよい。例えば、図４の構成であれば、それぞれのエントリに対応付けられているＷａｙ０やＷａｙ８といった情報を書き換えるのみでよい。
【００８７】
一方、図１０の構成のように、各ウェイごとに、コピーまたは移動するワードデータの数が異なる場合、一般的なキャッシュメモリの制御に加えて、以下の手順が必要となる。
【００８８】
１．Ｌ３データアレイ１４のコピーまたは移動するワードデータの数が少ないウェイから、コピーまたは移動するワードデータの数が多いウェイにデータを移動する場合、新たにコピーまたは移動可能な数分のワードデータをＬ３データアレイ１４からＬ２データアレイ１１のメモリ領域ｍ２にコピーまたは移動する。
【００８９】
２．Ｌ３データアレイ１４のコピーまたは移動するワードデータの数が多いウェイから、コピーまたは移動するワードデータの数が少ないウェイにデータを移動する場合、いままでコピーまたは移動していた複数のワードデータのうち、優先度の高いワードデータのみをＬ２データアレイ１１のメモリ領域ｍ２にコピーまたは移動する。
【００９０】
なお、ＬＲＵポジションの入替ごとにＬ２データアレイ１１のメモリ領域ｍ２の全体を書き換えるのは非効率である。そこで、メモリ領域ｍ２に格納するワードデータの数の差分のみについて、ワードデータを更新してもよい。例えば、データＡが保持されているウェイ１には２ワードデータが、データＢが保持されているウェイ８には１ワードデータが、それぞれＬ２データアレイ１１のメモリ領域ｍ２に確保されている場合に、ウェイ１とウェイ８でＬＲＵポジションを入れ替える場合は、以下の手順で行えばよい。
【００９１】
まず、一般のキャッシュメモリと同様にタグ情報を更新し、データＡに対応するメモリ領域ｍ２の１ワードデータ分の領域を、データＢの１ワードデータ分の領域として再割り当てする。次に、データＢに新たに割り当てられた１ワードデータ分の領域に、データＢの１ワードデータを書き込む。
【００９２】
このように、本実施形態では、揮発性メモリで構成されたＬ２データアレイ１１と不揮発性メモリで構成されたＬ３データアレイ１４とを階層化キャッシュメモリとして使用する第１モードと、同一階層でアクセス速度が相違するハイブリッドメモリとして使用する第２モードとを、切替可能にしたため、モード切替を適切に行うことで、アクセス性能を低下させずに低消費電力化を図ることができる。すなわち、モード切替を行う再構成コントローラ１８は、Ｌ２データアレイ１１およびＬ３データアレイ１４のアクセス頻度に基づいて、各モードでのオーバーヘッドを比較し、オーバーヘッドが小さいモードを選択するため、アクセス速度の向上と消費電力の低減とを両立させることができる。これにより、不揮発性メモリとしてＭＲＡＭのようなアクセス速度がＳＲＡＭよりも低速で、ビットエラー率も高いものを用いても、アクセス性能およびデータの信頼性の低下を抑制することが出来る。特に、Ｌ２データアレイ１１としてＳＲＡＭを用いて、Ｌ３データアレイ１４としてＭＲＡＭを用いれば、本来はＬ３データアレイ１４に格納されるべきキャッシュラインデータのうち、アクセス頻度の高いデータや、演算コアの実行速度に影響を与えるワードデータをプログラムの特徴にあわせてＳＲＡＭに格納することができ、メモリ容量の大容量化とアクセス性能の向上を図ることができる。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１  メモリシステム、２  プロセッサシステム、３  演算コア、４  Ｌ１キャッシュ、５  再構成可能なキャッシュメモリ、６  メインメモリ、１１  Ｌ２データアレイ、１２  第１Ｌ２タグアレイ、１３  Ｌ２コントローラ、１４  Ｌ３データアレイ、１５  第２Ｌ２タグアレイ、１６  Ｌ３タグアレイ、１７  Ｌ３コントローラ、１８  再構成コントローラ、１９  構成情報レジスタ、２０  誤り訂正回路
【図１】
2016170729.tif 000003
【図２】
2016170729.tif 000004
【図３】
2016170729.tif 000005
【図４】
2016170729.tif 000006
【図５】
2016170729.tif 000007
【図６】
2016170729.tif 000008
【図７】
2016170729.tif 000009
【図８】
2016170729.tif 000010
【図９】
2016170729.tif 000011
【図１０】
2016170729.tif 000012