(57)【要約】【課題】メモリアクセスの時間局所性と空間局所性の最適化を図る。【解決手段】メモリシステムは、第１粒度のデータを格納する第１メモリよりメモリ容量が小さくて、第２粒度のデータを格納する第２メモリと、第１メモリに格納されたデータの中から第２粒度以上の第３粒度のデータを読み出す制御部と、制御部にて読み出された第３粒度のデータから第２粒度のデータを抽出して、第２メモリに格納するデータ抽出部と、を備える。【選択図】図１
2018032256.tif 000002
【特許請求の範囲】
【請求項１】
第１粒度のデータを格納する第１メモリよりメモリ容量が小さくて、第２粒度のデータを格納する第２メモリと、
前記第１メモリに格納されたデータの中から前記第２粒度以上の第３粒度のデータを読み出す制御部と、
前記制御部にて読み出された前記第３粒度のデータから前記第２粒度のデータを抽出して、前記第２メモリに格納するデータ抽出部と、を備える、メモリシステム。
【請求項２】
前記第２メモリよりメモリ容量が小さくて、前記第３粒度のデータを格納する第３メモリを備え、
前記データ抽出部は、前記第３メモリに格納されたデータの少なくとも一部を、前記第２粒度で前記第２メモリに格納する、請求項１に記載のメモリシステム。
【請求項３】
第１粒度のデータを格納する第１メモリよりメモリ容量が小さくて、第２粒度のデータを格納する第２メモリと、
前記第２粒度以上の第３粒度のデータを格納する第３メモリと、
前記第１メモリに格納されたデータの中から前記第３粒度のデータを読み出し前記第３メモリに格納する制御部と、
前記第３メモリに格納されるデータのうち、アクセスのあったデータを前記第２粒度で前記第２メモリに格納するデータ抽出部と、を備える、メモリシステム。
【請求項４】
前記第３メモリに格納された前記第３粒度のデータを特定するアドレス情報と、各データのアクセス状況を示すアクセス情報と、を格納する第１タグメモリを備え、
前記データ抽出部は、前記第１タグメモリ内の前記アクセス情報に基づいて、前記第３メモリに格納されたデータの少なくとも一部を前記第２粒度で前記第２メモリに格納する、請求項２または３に記載のメモリシステム。
【請求項５】
前記第２メモリに格納された前記第２粒度のデータを特定するアドレス情報と、前記第２メモリに格納された前記第２粒度のデータを書き換えたか否かを示すダーティ情報と、を格納する第２タグメモリを備え、
前記第１タグメモリは、前記第３メモリに格納された前記第３粒度のデータを書き換えたか否かを示すダーティ情報を格納し、
前記制御部は、プロセッサから読出要求を受けると、前記読出要求のあったアドレスが前記第１タグメモリおよび前記第２タグメモリの双方にヒットした場合には、前記第２タグメモリ内のダーティ情報と前記第１タグメモリ内のダーティ情報とに基づいて、前記読出要求のあったデータを前記第２メモリまたは前記第３メモリから読み出す、請求項４に記載のメモリシステム。
【請求項６】
前記第２メモリに格納された前記第２粒度のデータを特定するアドレス情報と、前記第２メモリに格納された前記第２粒度のデータを書き換えたか否かを示すダーティ情報と、を格納する第２タグメモリを備え、
前記データ抽出部は、前記ダーティ情報に基づいて、前記第３メモリに格納されたデータの少なくとも一部を前記第２粒度で前記第２メモリに格納する、請求項２または３に記載のメモリシステム。
【請求項７】
前記データ抽出部は、前記第３メモリに格納された前記第３粒度のデータの少なくとも一部を消去するタイミングに合わせて、前記第３メモリに格納されたデータの少なくとも一部を前記第２粒度で前記第２メモリに格納する、請求項２乃至６のいずれか一項に記載のメモリシステム。
【請求項８】
前記制御部は、プロセッサから読出要求を受けると、前記読出要求のあったアドレスが前記第２メモリおよび前記第３メモリにヒットしなければ、前記第１メモリからデータを読み出す、請求項１乃至７のいずれか一項に記載のメモリシステム。
【請求項９】
前記制御部は、プロセッサから読出要求のあったアドレスが前記第２メモリおよび前記第３メモリにヒットしなかったときに、前記第３メモリに格納されているデータの入替処理を行う、請求項１乃至８のいずれか一項に記載のメモリシステム。
【請求項１０】
プロセッサから読出要求のあったアドレスが前記第２メモリおよび前記第３メモリにヒットしなかったときに、前記第２メモリに格納され前記第２メモリから消去対象の有効データを格納する第４メモリを備え、
前記制御部は、前記第４メモリに格納されたデータを、所定のタイミングで、前記第３メモリに格納する、請求項９に記載のメモリシステム。
【請求項１１】
前記制御部は、プロセッサから読出要求のあったアドレスが前記第２メモリおよび前記第３メモリにヒットしなかったときに、前記第２メモリから前記第４メモリにデータを格納することで得られた前記第２メモリの空き領域に、前記第３メモリから一部のデータを転送し、このデータの転送により得られた前記第３メモリの空き領域に前記第１メモリからのデータを格納する、請求項９または１０に記載のメモリシステム。
【請求項１２】
プロセッサから読出要求のあったアドレスが前記第２メモリおよび前記第３メモリにヒットしなかったときに、前記第２メモリに格納され前記第２メモリから消去対象の有効データを格納する第４メモリを備え、
前記第１タグメモリは、前記第４メモリ内のデータに対応するアドレスが前記第１タグメモリにヒットしなかったときに、このデータを前記第３メモリに書き戻したことを示すライトバックフラグ情報を格納し、
前記制御部は、前記ライトバックフラグ情報に基づいて、前記第４メモリから前記第３メモリに書き戻したデータを前記第１メモリに格納する、請求項４または５に記載のメモリシステム。
【請求項１３】
前記制御部は、プロセッサから書込み要求を受けると、前記書込み要求のあったアドレスが前記第３メモリにヒットすれば、前記第３メモリに前記書込み要求のあったデータを書込み、前記第３メモリにヒットしなければ、前記第２メモリに前記データを書き込む、請求項１乃至１２のいずれか一項に記載のメモリシステム。
【請求項１４】
前記第２粒度は、前記第１粒度より小さい、請求項１乃至１３のいずれか一項に記載のメモリシステム。
【請求項１５】
前記第１メモリは、ＤＲＡＭ（Dynamic Random Access Memory）であり、
前記第２メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）である、請求項１乃至１４のいずれか一項に記載のメモリシステム。
【請求項１６】
前記第３メモリは、ＭＲＡＭまたはＳＲＡＭ（Static Random Access Memory）である、請求項１乃至１５のいずれか一項に記載のメモリシステム。
【請求項１７】
前記第１メモリ、前記第２メモリおよび前記第３メモリは、同一階層のメモリである、請求項１乃至１６のいずれか一項に記載のメモリシステム。
【請求項１８】
前記第１メモリ、前記第２メモリおよび前記第３メモリは、メインメモリよりもアクセス優先度の高いキャッシュメモリである、請求項１乃至１７のいずれか一項に記載のメモリシステム。
【請求項１９】
前記第１メモリは、メモリモジュールのメモリアレイであり、
前記第３メモリは、前記メモリアレイのワード線を単位としてアクセスされる複数のメモリセルに対して読み書きされるデータを格納するローバッファである、請求項１乃至１８のいずれか一項に記載のメモリシステム。
【請求項２０】
プロセッサと、
第１粒度のデータを格納する第１メモリよりメモリ容量が小さくて、第２粒度のデータを格納する第２メモリと、
前記第１メモリに格納されたデータの中から前記第２粒度以上の第３粒度のデータを読み出す制御部と、
前記制御部にて読み出された前記第３粒度のデータから前記第２粒度のデータを抽出して、前記第２メモリに格納するデータ抽出部と、を備える、プロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびプロセッサシステムに関する。
【背景技術】
【０００２】
ビックデータ処理等の普及に伴い、メモリアクセスの高速化と低消費電力化に対する要求が高まっている。メモリアクセスは、キャッシュメモリの構成により速度が大きく変化する。アクセス要求のあったアドレスは、再度アクセスされる可能性が高いという時間局所性と呼ばれる性質がある。また、アクセス要求のあったアドレスの近傍のアドレスがアクセスされる可能性が高いという空間局所性と呼ばれる性質がある。時間局所性と空間局所性は、トレードオフの関係にあり、時間局所性を重視すると、空間局所性を担保できなくなったり、空間局所性を重視すると、時間局所性を担保できなくなるおそれがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許公報８９３０６４７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、メモリアクセスの時間局所性と空間局所性の最適化を図ったメモリシステムおよびプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００５】
本実施形態によれば、第１粒度のデータを格納する第１メモリよりメモリ容量が小さくて、第２粒度のデータを格納する第２メモリと、
前記第１メモリに格納されたデータの中から前記第２粒度以上の第３粒度のデータを読み出す制御部と、
前記制御部にて読み出された前記第３粒度のデータから前記第２粒度のデータを抽出して、前記第２メモリに格納する制御を行うデータ抽出部と、を備える、メモリシステムが提供される。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図２】メモリモジュールの内部構成の一例を示すブロック図。
【図３】メインメモリの内部構成の一例を示すブロック図。
【図４】キャッシュメモリの１つのセットのタグ情報を示す図。
【図５】第３粒度タグメモリのデータ構成を示す図。
【図６】ライトバッファのデータ構成を示す図。
【図７】書込み要求時の第２メモリコントローラの処理動作を示すフローチャート。
【図８Ａ】読出要求時の第２メモリコントローラの読出処理を示すフローチャート。
【図８Ｂ】図８Ａに続くフローチャート。
【図９】図８ＢのステップＳ２７の入替処理の詳細なフローチャート。
【図１０】ライトバッファからメモリモジュールへのライトバック処理のフローチャート。
【図１１】第２の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図１２】Ｌ４キャッシュの内部構成の一例を示すブロック図。
【図１３】第２粒度タグメモリのデータ構成の一例を示す図。
【図１４】第３粒度タグメモリのデータ構成の一例を示す図。
【図１５】Ｌ４キャッシュに対する書込み処理のフローチャート。
【図１６Ａ】Ｌ４キャッシュの読出処理とＬ４キャッシュにミスしたときのデータフェッチ処理とを示すフローチャート。
【図１６Ｂ】図１６Ａに続くフローチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら、本発明の実施形態を説明する。
【０００８】
（第１の実施形態）
図１は第１の実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、プロセッサ３と、メインメモリ４とを備えている。メインメモリ４は、メモリシステム１の少なくとも一部を構成している。
【０００９】
プロセッサ３の内部には、第１メモリコントローラ５が設けられている。この他、プロセッサ３の内部には、複数のプロセッサコアやキャッシュメモリなどが設けられているが、図１では省略している。第１メモリコントローラ５は、メインメモリ４内の第２メモリコントローラ６を制御する。より具体的には、第１メモリコントローラ５は、メインメモリ４に対するアクセス要求に従って第２メモリコントローラ６を制御する。
【００１０】
メインメモリ４は、上述した第２メモリコントローラ６の他に、第２メモリ７と、メモリモジュール８とを有する。第２メモリ７は、例えばＭＲＡＭ（Magnetoresistive Random Access Memory）等の不揮発メモリである。
【００１１】
メモリモジュール８は、メモリ容量を可変できるように着脱可能とされていてもよい。メモリモジュール８は、第１メモリ９と第３メモリ１０とを有する。第１メモリ９は、例えばＤＲＡＭ（Dynamic Random Access Memory）である。第３メモリ１０は、例えばＳＲＡＭ（Static Random Access Memory）である。
【００１２】
第１メモリ９は、第１粒度のデータを格納する。第２メモリ７は、例えば第１メモリ９よりもメモリ容量が小さくて、第２粒度のデータを格納する。第３メモリ１０は、例えば第２メモリ７よりもメモリ容量が小さくて、第３粒度のデータを格納する。
【００１３】
ここで、「粒度」とは、キャッシュにおいてはラインサイズであり、一般的なメインメモリ（ＤＲＡＭ）のページサイズである。例えば、第１メモリ９にアクセスする際の第１粒度は、第２メモリ７にアクセスする際の第２粒度よりも大きい。この場合、第１粒度のページサイズは第２粒度のラインサイズより大きい。また、例えば、第２メモリ７のラインサイズである第２粒度は、第３メモリ１０のページサイズである第３粒度よりも小さい。この場合、第２メモリ７のラインサイズは、第３メモリ１０のページサイズよりも小さくなる。第１粒度と第３粒度の大小関係は、任意である。以下では、一例として、第１粒度と第３粒度が等しい例を説明する。
【００１４】
具体的な一例として、メモリモジュール８は、汎用的なＤＤＲ（Drouble-Data-Rate）ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）のように、数ｋバイトのページサイズでデータを格納するのに対して、第２メモリ７は数１０バイトの単位でデータを格納する。以下では、メモリモジュール８のページサイズを１ｋバイトとし、第２メモリ７のデータサイズを６４バイトとする。
【００１５】
第１メモリ９、第２メモリ７および第３メモリ１０のアクセス速度は任意であるが、典型的には、第１メモリ９は第２メモリ７と第３メモリ１０よりもアクセス速度が遅い。第２メモリ７と第３メモリ１０のアクセス速度は異なっていても同一でも構わない。
【００１６】
図２はメモリモジュール８の内部構成の一例を示すブロック図である。図２のメモリモジュール８は、複数のバンクを有し、各バンクごとに、メモリアレイ１１とローバッファ１２とを有する。メモリアレイ１１は、上述した第１メモリ９であり、例えばＤＲＡＭで構成されている。ローバッファ１２は、上述した第３メモリ１０であり、例えばＳＲＡＭやレジスタなどのメモリアレイ１１よりも高速のメモリである。ローバッファ１２は、上述したように、第３粒度のデータを格納する。ローバッファ１２は、メモリアレイ１１に格納されたデータのうち一部のデータを格納する。例えば、ローバッファ１２は、対応するバンクのメモリアレイ１１に直近にアクセスされたデータを格納する。メモリモジュール８は、ページ単位でアクセスされるため、ローバッファ１２は、ページサイズ以上のメモリ容量を有する。すなわち、ローバッファ１２は、メモリアレイ１１のワード線を単位としてアクセスされる複数のメモリセルに対して読み書きされるデータを格納する。
【００１７】
図３はメインメモリ４の内部構成の一例を示すブロック図である。図３に示すように、第２メモリコントローラ６は、第２粒度タグメモリ（第２タグメモリ）２１と、第３粒度タグメモリ（第１タグメモリ）２２と、データ抽出部２３と、メモリアクセスコントローラ（制御部）２４と、ライトバッファ（第４メモリ）２５とを有する。
【００１８】
第２粒度タグメモリ２１は、第２メモリ７のデータを特定するアドレス情報などを格納する。図４は第２粒度タグメモリ２１のデータ構成を示す図である。図４に示すように、第２粒度タグメモリ２１は、第２粒度のアドレス情報２１ａと、有効フラグ情報２１ｂと、ＬＲＵ（Lease Recently Used）管理情報２１ｃと、ダーティフラグ情報２１ｄとを対応づけて各エントリごとに格納している。アドレス情報は、例えば６４バイトのデータを識別可能なアドレスのビット数を有する。
【００１９】
第２粒度タグメモリ２１と第２メモリ７は、例えば、セットアソシアティブのキャッシュメモリとして機能する。例えば、ライトバック方式の書き込みデータ管理を行う。第２粒度タグメモリ２１は、キャッシュリプレイスメントをＬＲＵポリシで管理する。図４は、４ウェイのセットアソシアティブのキャッシュメモリの１つのセットのタグ情報を例示している。
【００２０】
第２粒度タグメモリ２１内のＬＲＵ管理情報２１ｃは、入れ替えるデータを決定するために、優先度情報を格納する。例えば、４ウェイであれば、０〜３の数字を格納する。例えば、直近にアクセスがあったデータから順に小さい数字を割り当てる。第２メモリ７内のデータを入れ替えるときは、数値が３のデータを入れ替える。
【００２１】
第２粒度タグメモリ２１内の有効フラグ情報２１ｂは、アドレス情報に対応するデータが第２メモリ７に格納されているか否かを示すフラグ情報である。有効フラグ情報２１ｂは、例えば、データが格納されている場合は１にセットされ、格納されていない場合は０にリセットされる。第２メモリ７に所望のデータが格納されているか否かは、第２粒度タグメモリ２１内のアドレス情報２１ａと有効フラグ情報２１ｂを参照することで判定できる。すなわち、第２粒度タグメモリ２１内に、所望のデータのアドレス情報が格納され、かつ対応する有効フラグ情報が１にセットされていれば、そのデータが第２メモリ７に格納されていると判断できる。ダーティフラグ情報２１ｄは、第２粒度タグメモリ２１内のアドレス情報に対応するデータを第１メモリ９に書き戻したか否かを示すフラグ情報である。例えば、書き換えられていない場合は０にセットされ、書き換えられた場合は１にセットされる。
【００２２】
第３粒度タグメモリ２２は、第３メモリ１０のデータを特定するアドレス情報などを格納する。図５は第３粒度タグメモリ２２のデータ構成を示す図である。図５に示すように、第３粒度タグメモリ２２は、第３粒度のアドレス情報２２ａと、有効フラグ情報２２ｂと、アクセスフラグ情報２２ｃと、ダーティフラグ情報２２ｄと、ライトバックフラグ情報２２ｅとを対応づけて各バンクごとに格納している。
【００２３】
第３粒度のアドレス情報２２ａは、例えば１ｋバイトのデータを識別可能なアドレス情報である。有効フラグ情報２２ｂは、アドレス情報に対応するデータが第３メモリ１０に格納されているか否かを示すフラグ情報である。有効フラグ情報２２ｂは、例えば、データが格納されている場合は１にセットされ、格納されていない場合は０にリセットされる。
【００２４】
アクセスフラグ情報２２ｃは、対応するデータにアクセスがあったか否かを示すフラグ情報である。アクセスフラグ情報２２ｃは、例えば、第２粒度ごとに第２メモリ７内のデータにアクセスがあったか否かを記憶する。第１メモリ９のデータ粒度が１ｋバイトで、第２メモリ７のデータ粒度が６４バイトの場合、第３粒度タグメモリ２２には１６エントリ分のアクセスフラグ情報が保持される。例えば、第１メモリ９の１データごとに１ビットのアクセスフラグ情報を設ける場合、第３粒度タグメモリ２２の１エントリごとに１６ビットのアクセスフラグ情報が設けられる。
【００２５】
ダーティフラグ情報２２ｄは、対応するデータが書き換えられたか否かを示すフラグ情報である。例えば、ダーティフラグ情報２２ｄは、第２メモリ７内の第２粒度のデータごとに設けられる。例えば、第１メモリ９の第１粒度が１ｋバイトで、第２メモリ７の第２粒度が６４バイトの場合、１６エントリ分のダーティフラグ情報２２ｄが保持される。例えば、第１メモリ９内の１データごとに１ビットが設けられる場合、第３粒度タグメモリ２２の１エントリ毎に１６ビットのダーティフラグ情報２２ｄが設けられる。
【００２６】
ライトバックフラグ情報２２ｅは、対応する第３メモリ１０のデータを第１メモリ９に書き戻したか否かを示すフラグ情報である。ライトバッファ２５とは、プロセッサ３から読出要求があり、新たなデータを第２メモリ７に格納する際に、第２メモリ７内の消去するべきデータが書き換えられており（ダーティフラグが１にセットされており）、まだ第３メモリ１０に書き戻していないときに、そのデータを一時的に格納するメモリである。
【００２７】
メモリアクセスコントローラ２４は、第２メモリ７とメモリモジュール８に対するアクセスを制御する。すなわち、メモリアクセスコントローラ２４は、第２メモリコントローラ６が行う制御処理のうち、データ抽出部２３が行う抽出処理以外の制御処理を行う。より具体的には、メモリアクセスコントローラ２４は、第１メモリ９に格納されたデータの中から、第２粒度以上の第３粒度のデータを読み出す。データ抽出部２３は、メモリアクセスコントローラ２４にて読み出された第３粒度のデータから第２粒度のデータを抽出して、第２メモリ７に格納する。
【００２８】
図６はライトバッファ２５のデータ構成を示す図である。図６に示すように、ライトバッファ２５は、メモリモジュール８内の第３メモリ１０への書き戻しが必要か否かを示す有効フラグ情報２５ａと、第２粒度のアドレス情報２５ｂと、第２粒度のデータ領域２５ｃとを対応づけて各エントリごとに格納している。ライトバッファ２５は、例えば、ＦＩＦＯ（First-In-First-Out）のキューである。例えば、有効フラグ情報２５ａが１であれば、メモリモジュール８への書き戻しが必要なデータであることを示し、有効フラグ情報２５ａが０であれば、無効なデータであることを示す。
【００２９】
図７はプロセッサ３から書込み要求があった場合の第２メモリコントローラ６の処理動作を示すフローチャートである。なお、書込み処理は、図７に示したフローチャートに限定されない。第２メモリコントローラ６は、例えば６４バイトのバースト書込み要求を第１メモリコントローラ５から受け取ると（ステップＳ１）、書き込むべきメモリモジュール８のバンクを特定する（ステップＳ２）。次に、書込み要求のあったアドレスが、特定したバンクに対応する第３粒度タグメモリ２２にヒットしたか否かを判定する（ステップＳ３）。
【００３０】
第３粒度タグメモリ２２にヒットした場合には、書込み要求のあったデータを第３メモリ１０に書き込むととともに（ステップＳ４）、第３粒度タグメモリ２２内のアクセスフラグ情報２２ｃとダーティフラグ情報２２ｄとを更新する（ステップＳ５）。
【００３１】
一方、ステップＳ３で、第３粒度タグメモリ２２にヒットしなかったと判定された場合には、第２メモリ７にデータを書き込むとともに（ステップＳ６）、第２粒度タグメモリ２１内のＬＲＵ管理情報２１ｃとダーティフラグ情報２１ｄとを更新する（ステップＳ７）。
【００３２】
このように、プロセッサ３から書込み要求があったときに、第３粒度タグメモリ２２にヒットした場合は、第３メモリ１０にデータを書込み、ヒットしなかった場合は、第２メモリ７にデータを書き込む。第３メモリ１０にデータを書き込む際には、第３粒度タグメモリ２２内のアクセスフラグ情報２２ｃとダーティフラグ情報２２ｄを更新する。第２メモリ７にデータを書き込む際には、第２粒度タグメモリ２１内のＬＲＵ管理情報２１ｃとダーティフラグ情報２１ｄを更新する。
【００３３】
図８Ａおよび図８Ｂはプロセッサ３から読出要求があった場合の第２メモリコントローラ６の読出処理を示すフローチャートである。読出処理は、書込みポリシによって異なる。図８Ａおよび図８Ｂは、図７の書込みポリシを採用した場合の読出処理を示している。なお、読出処理は、図８Ａおよび図８Ｂに示したフローチャートに限定されない。また、図３の構成ではライトバッファ２５からのデータ読み出しも必要になることがあるが、簡単化のため、本例では省略する。
【００３４】
まず、第２メモリコントローラ６が例えば６４バイトのバースト読出要求を第１メモリコントローラ５から受け取ったとすると（ステップＳ１１）、読み出すべきバンクを特定する（ステップＳ１２）。
【００３５】
次に、読出要求のあったアドレスが、特定したバンクに対応する第２粒度タグメモリ２１と第３粒度タグメモリ２２の双方にヒットしたか否かを判定する（ステップＳ１３）。第２粒度タグメモリ２１と第３粒度タグメモリ２２の双方にヒットしたと判定されると、第３粒度タグメモリ２２内のダーティフラグ情報がセットされているか否か、すなわち該当するアドレスに対応するデータをまだ第１メモリ９に書き戻していないか否かを判定する（ステップＳ１４）。
【００３６】
ダーティフラグ情報がセットされていると判定されると、メモリモジュール８に読出コマンドを発行し（ステップＳ１５）、メモリモジュール８内の第３メモリ１０からデータを読み出して（ステップＳ１６）、読み出したデータを第１メモリコントローラ５に送付する（ステップＳ１７）。
【００３７】
ステップＳ１４で第３粒度タグメモリ２２内のダーティフラグ情報２２ｄがセットされていないと判定されると、第２粒度タグメモリ２１内のダーティフラグ情報２１ｄがセットされているか否かを判定する（ステップＳ１８）。第２粒度タグメモリ２１内のダーティフラグ情報２１ｄがセットされていると判定されると、読出要求のあったアドレスに対応するデータを第２メモリ７から読み出して（ステップＳ１９）、読み出したデータを第１メモリコントローラ５に送付する（ステップＳ１７）。
【００３８】
ステップＳ１８で、第２粒度タグメモリ２１内のダーティフラグ情報２１ｄがセットされていないと判定されると、メモリモジュール８に読出しコマンドを発行する（ステップＳ１９）。そして、読出要求のあったアドレスに対応するデータを第３メモリ１０から読み出して（ステップＳ２０）、読み出したデータを第１メモリコントローラ５に送付する（ステップＳ１６）。
【００３９】
ステップＳ１３の判定が否定された場合は、読出要求のあったアドレスが第３粒度タグメモリ２２にヒットしたか否かを判定する（ステップＳ２２）。ヒットした場合には、メモリモジュール８に読出しコマンドを発行する（ステップＳ２０）。そして、読出要求のあったアドレスに対応するデータを第３メモリ１０から読み出して（ステップＳ２１）、読み出したデータを第１メモリコントローラ５に送付するとともに（ステップＳ１７）、第３粒度タグメモリ２２内のアクセスフラグ情報２２ｃを更新する（ステップＳ２３）。
【００４０】
ステップＳ２２でヒットしなかったと判定されると、読出要求のあったアドレスが第２粒度タグメモリ２１にヒットしたか否かを判定する（ステップＳ２４）。ヒットした場合は、読出要求のあったアドレスに対応するデータを第２メモリ７から読み出して（ステップＳ２５）、読み出したデータを第１メモリコントローラ５に送付する（ステップＳ１７）。
【００４１】
ステップＳ２４でヒットしなかったと判定されると、メモリモジュール８へのデータフェッチ処理を行う。まず、第３粒度タグメモリ２２に無効なデータが存在するか否かを判定する（ステップＳ２６）。無効なデータが存在すれば、アクティベーションコマンドを発行して第１メモリ９からデータを読み出して第３メモリ１０に格納する処理（ステップＳ２７）と、第３粒度タグメモリ２２内のアドレス情報の更新（ステップＳ２８）と、第３粒度タグメモリ２２内の有効フラグ情報の更新（ステップＳ２９）とを並列的に行う。ステップＳ２７〜Ｓ２９の処理が終わると、メモリモジュール８に読出しコマンドを発行し（ステップＳ３０）、第３メモリ１０からデータを読み出す（ステップＳ３１）。
【００４２】
ステップＳ２５で無効なデータが存在しないと判定されると、第３メモリ１０に格納されたデータの入替処理を行う（ステップＳ３２）。ステップＳ３２の入替処理の詳細は後述する。入替処理が終わると、メモリモジュール８に読出コマンドを発行して（ステップＳ３０）、メモリモジュール８内の第３メモリ１０から読み出したデータを第１メモリコントローラ５に送付する（ステップＳ３１）、第３粒度タグメモリ２２内のアクセスフラグ情報を更新する（ステップＳ３３）。
【００４３】
図９は図８ＢのステップＳ２７の入替処理の詳細なフローチャートである。まず、第３粒度タグメモリ２２内のアクセスフラグ情報を参照し（ステップＳ４９）、アクセスフラグ情報がセットされているデータを読み出す（ステップＳ５０）。次に、以下の第１処理〜第３処理の計３つの処理を並列的に行う。
【００４４】
第１処理では、第２メモリ７から消去するべきデータを読み出して、このデータに対応するダーティフラグ情報と有効フラグ情報がセットされているか否かを判定する（ステップＳ４２）。これらフラグ情報がセットされている場合は、消去するべきデータをライトバッファ２５に格納した後に、消去する（ステップＳ４３）。その後、ステップＳ５０で読み出した第３メモリ１０内のデータを第２メモリ７に格納するとともに（ステップＳ４４）、第２粒度タグメモリ２１を更新する（ステップＳ４５）。このステップＳ４４の処理により、直近にアクセスのあった第２粒度のデータが、第３メモリ１０から第２メモリ７に転送される。
【００４５】
なお、ステップＳ４４にて第２メモリ７に格納するべきデータが既に第２メモリ７に格納されている場合は、そのデータは第２メモリ７に再度格納する必要はない。また、格納するべきデータが既に第２メモリ７に格納されていたとしても、第３メモリ１０から第２メモリ７に転送するデータがダーティなデータであれば、そのデータは第２メモリ７に上書きしてもよい。
【００４６】
第２処理は、第３粒度タグメモリ２２の更新である。まず、第３粒度タグメモリ２２内の該当するタグ情報を無効化する（ステップＳ４６）。無効化するのは、第３メモリ１０から第２メモリ７に転送したデータが格納されていた第３メモリ１０内の空き領域である。次に、この空き領域に格納するデータのアドレス情報を第３粒度タグメモリ２２に格納するとともに（ステップＳ４７）、第３粒度タグメモリ２２内の有効フラグ情報を更新する（ステップＳ４８）。
【００４７】
第３処理では、メモリモジュール８にプリチャージコマンドを発行し（ステップＳ４９）、プリチャージが終了した後、アクティベーションコマンドを発行する（ステップＳ５０）。これにより、第１メモリ９から新たなデータが読み出されて、第３メモリ１０の上述した空き領域に格納される。
【００４８】
図１０はライトバッファ２５からメモリモジュール８へのライトバック処理のフローチャートである。このライトバック処理は、任意のタイミングで行ってよい。例えば、ライトバッファ２５の全エントリの有効フラグ情報がセットされたタイミングで行ってもよい。あるいは、クロックサイクルに同期した所定間隔ごとに行ってもよい。あるいは、第２メモリコントローラ６がプロセッサ３からのアクセス要求を処理していないタイミングで行ってもよい。以下では、ライトバッファ２５内に１つ以上の有効フラグ情報２５ａがセットされたエントリが存在する場合のライトバック処理を説明する。
【００４９】
まず、ライトバッファ２５内に有効なデータが存在するか否かを判定する（ステップＳ５１）。ここでは、図６に示すライトバッファ２５内の有効フラグ情報２５ａがセットされているか否かを判定する。そして、有効フラグ情報２５ａがセットされているエントリが存在すれば、そのエントリのデータを選択し（ステップＳ５２）、選択したデータが存在するメモリモジュール８のバンクを特定する（ステップＳ５３）。
【００５０】
次に、特定したバンクに対応する第３粒度タグメモリ２２を参照し、ヒットしたか否かを判定する（ステップＳ５４）。第３粒度タグメモリ２２にヒットすれば、メモリモジュール８に書込みコマンドを発行するとともに（ステップＳ５５）、ライトバッファ２５の有効フラグ情報２５ａをリセットする（ステップＳ５６）。これにより、ライトバッファ２５内のデータは、第３メモリ１０に書き込まれる。
【００５１】
ステップＳ５４でヒットしなかったと判定されると、図９の処理手順にて第３メモリ１０の入替処理を行うとともに（ステップＳ５７）、入替を行ったデータに対応する第３粒度タグメモリ２２のライトバックフラグ情報２２ｅをセットする（ステップＳ５８）。次に、メモリモジュール８に書込みコマンドを発行するとともに（ステップＳ５５）、ライトバッファ２５の有効フラグ情報２５ａをリセットする（ステップＳ５６）。これにより、第３メモリ１０から追い出したデータの格納先にライトバッファ２５内のデータが格納されるとともに、第３粒度タグメモリ２２のライトバックフラグ情報２２ｅがセットされる。
【００５２】
以上の処理は、ライトバッファ２５内の有効フラグ情報２５ａがセットされている全エントリについて行われる。ライトバッファ２５内の有効フラグ情報２５ａがセットされているエントリが存在しなくなれば、第３粒度タグメモリ２２を参照し、ライトバックフラグ情報２２ｅがセットされているバンクにプリチャージコマンドを発行するとともに、対応する第３粒度タグメモリ２２を無効化する（ステップＳ５９）。これにより、ライトバックフラグ情報２２ｅがセットされているデータが第１メモリ９に書き戻される。
【００５３】
このように、第１の実施形態では、メインメモリ４内に第１〜第３メモリ１０を設けて、第１メモリ９に第１粒度で格納されたデータの少なくとも一部を第３メモリ１０に第３粒度で格納し、第３メモリ１０に格納された第３粒度のデータの少なくとも一部を、第３粒度以下の第２粒度で第２メモリ７に格納する。これにより、空間局所性をもつデータへのアクセスを第３メモリ１０で高速にアクセスできる。同時に、時間局所性をもつデータを細かい粒度で第２メモリ７に格納することができ、時間局所性を持つデータへのアクセスを第二メモリで高速化できる。空間局所性をもつデータと時間局所性を持つデータの両方への高速アクセスが期待でき、メインメモリ４に対するアクセスを高速化できる。
【００５４】
（第２の実施形態）
図１１は第２の実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１１のプロセッサシステム２は、プロセッサコア３１と、メモリシステム１とを備えている。メモリシステム１は、１次キャッシュメモリ（以下、Ｌ１キャッシュ）３２と、２次キャッシュメモリ（以下、Ｌ２キャッシュ）３３と、３次キャッシュメモリ（以下、Ｌ３キャッシュ）３４と、４次キャッシュメモリ（以下、Ｌ４キャッシュ）３５と、メモリアクセスコントローラ２４とを有する。図１１のメモリシステム１にはメインメモリ４が接続されているが、メモリシステム１の内部にメインメモリ４を設けてもよい。
【００５５】
Ｌ１キャッシュ３２はプロセッサコア３１とＬ２キャッシュ３３に接続されている。Ｌ２キャッシュ３３はＬ１キャッシュ３２とＬ３キャッシュ３４に接続されている。Ｌ３キャッシュ３４はＬ２キャッシュ３３とＬ４キャッシュ３５に接続されている。メモリアクセスコントローラ２４は、Ｌ４キャッシュ３５に接続されている。
【００５６】
Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５には、メインメモリ４に格納されたデータ、またはメインメモリ４に格納されるべきデータの少なくとも一部が格納される。Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５は、その内部に保持するデータを識別可能なアドレス情報を保持するタグ部を有する。タグ部は、専用のメモリ領域で構成してもよい。あるいは、タグ部は、データを保持するメモリ領域の一部で構成してもよい。このように、Ｌ１キャッシュ３２〜Ｌ２キャッシュ３３の内部構成は任意である。
【００５７】
図１１は、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５の４階層のキャッシュメモリを有する例を示すが、キャッシュメモリの階層数は任意である。
【００５８】
図１１において、メインメモリ４以外のプロセッサコア３１とＬ１キャッシュ３２〜Ｌ４キャッシュ３５は、一つのチップ上に集積されてもよいし、複数のチップに分けて実装してもよい。複数のチップに分けて実装する場合、各チップを金属配線にて直接接合してもよい。
【００５９】
図１１のメモリシステム１は、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５以外に、メインメモリ４を有する。メインメモリ４は、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５と同じチップあるいは基板上に実装してもよいし、別のチップあるいは基板上に実装してもよい。また、プロセッサコア３１とＬ１キャッシュ３２をワンチップに集積し、Ｌ２キャッシュ３３〜Ｌ４キャッシュ３５を別のワンチップに集積してもよい。このように、メモリシステム１内のＬ１キャッシュ３２〜Ｌ４キャッシュ３５とメインメモリ４の実装形態は任意である。
【００６０】
Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５は、メインメモリ４よりも高速アクセスが可能な半導体メモリで構成されている。それぞれのキャッシュへのデータ配置ポリシには様々なバリエーションが考えられる。例えば、Inclusion方式がある。Inclusion方式では、Ｌ２キャッシュ３３には、Ｌ１キャッシュ３２に格納されたデータのすべてが格納される。同様に、Ｌ３キャッシュ３４にはＬ２キャッシュ３３に格納されたデータのすべてが格納され、Ｌ４キャッシュ３５にはＬ３キャッシュ３４に格納されたデータのすべてが格納される。
【００６１】
その他、例えば、Exclusion方式がある。この方式では、例えばＬ１キャッシュ３２とＬ２キャッシュ３３に同じデータは配置されない。また、例えば、Inclusion方式とExclusion方式のハイブリッド方式も考えられる。この方式では、例えばＬ１キャッシュ３２とＬ２キャッシュ３３で重複して保持されるデータもあるし、排他的に保持されるデータもある。
【００６２】
これらの方式は、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５間のデータ配置ポリシであり、複数階層のキャッシュ構成では様々な組み合わせが考えられる。例えば、全ての階層でInclusion方式であってもよい。例えば、Ｌ１キャッシュ３２とＬ２キャッシュ３３はExclusive方式で、Ｌ４キャッシュ３５とメインメモリ４はInclusion方式であってもよい。本実施形態に示される方式は、これら上記に記した様々なデータ配置ポリシと組み合わせることが可能である。
【００６３】
キャッシュの更新方式にも様々な方式が存在するが、本実施形態はそれら全てと組み合わせ可能である。例えば、キャッシュ書き込みヒット時の書き込み方式がライトスルーであってもよいし、ライトバックであってもよい。また、キャッシュ書き込みミス時の書き込み方式がライトアロケートであってもよいし、ノーライトアロケートであってもよい。
【００６４】
Ｌ４キャッシュ３５のメモリ容量はＬ３キャッシュ３４のメモリ容量以上である。このように、高次のキャッシュメモリほどメモリ容量が大きくなる。従って、高次のキャッシュメモリには集積度が高く、容量に比例する傾向にあるリーク電力が少ないメモリを用いることが望ましい。このようなメモリとして、例えば、ＭＲＡＭ（Magnetoresistive Random Access Memory）等の不揮発メモリが考えられる。また、例えば、低リーク電力プロセスを用いたＳＲＡＭやＤＲＡＭであってもよい。
【００６５】
メインメモリ４は、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５よりもメモリ容量が大きいことから、プロセッサコア３１等が実装されるチップとは別個の１以上のチップで構成されることが多い。メインメモリ４を構成するメモリセルは、例えばＤＲＡＭ（Dynamic RAM）セルである。なお、ＴＳＶ（Through Silicon Via）等の技術を用いて、プロセッサコア３１等と一つのチップに混載してもよい。
【００６６】
プロセッサコア３１が発行した仮想アドレスに対応する物理アドレスは、まず最優先にＬ１キャッシュ３２に送られる。この物理アドレスに対応するデータ（以下、対象データ）がＬ１キャッシュ３２にある場合は、プロセッサコア３１はそのデータにアクセスすることになる。Ｌ１キャッシュ３２のメモリ容量は、例えば数１０ｋバイト程度である。
【００６７】
対象データがＬ１キャッシュ３２にない場合は、対応する物理アドレスはＬ２キャッシュ３３に送られる。Ｌ２キャッシュ３３に対象データがある場合は、プロセッサコア３１はそのデータにアクセスすることになる。Ｌ２キャッシュ３３のメモリ容量は、例えば数１００ｋバイト〜数Ｍバイト程度である。同様に、対象データがＬ２キャッシュ３２にない場合は、Ｌ３キャッシュ３３にアクセスされ、Ｌ３キャッシュ３３にもない場合は、Ｌ４キャッシュ３４にアクセスされる。
【００６８】
対象データがＬ４キャッシュ３５にない場合は、対応する物理アドレスはメインメモリ４に送られる。本実施形態では、メインメモリ４には、Ｌ４キャッシュ３５に格納されている全データが格納されているものとする。本実施形態は、上述したキャッシュ間データ配置ポリシに限定されるものではない。メインメモリ４には、ページ単位のデータが格納される。一般的に、ページ単位のデータはメインメモリ４と補助記憶装置に配置されるが、本実施形態では簡易化のため全てのデータがメインメモリ４に配置されているものとする。本実施形態では、メインメモリ４に対象データがある場合は、プロセッサコア３１はそのデータにアクセスすることになる。メインメモリ４のメモリ容量は、例えば数Ｇバイト程度である。
【００６９】
このように、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５は階層化されており、次数の大きい（下位階層の）キャッシュメモリほどメモリ容量は大きい。
【００７０】
以下では、簡略化のため、Ｌ１キャッシュ３２〜Ｌ４キャッシュ３５のタグアレイがＬＲＵ（Least Recently Used）アルゴリズムで管理されるものとして説明する。ただし、本実施形態は、ＬＲＵ以外の様々なデータ優先度管理アルゴリズムと組み合わせることが可能である。例えば、ＮＲＵ（Not Recently Used）やランダムリプレイスアルゴリズムと組み合わせてもよい。また、以下の説明では、簡略化のため、タグアレイをフルアソシアティブキャッシュとして示している。ただし、本実施形態は、種々のキャッシュ方式に適用可能であり、例えば、セットアソシアティブでもよいし、ダイレクトマップでもよい。
【００７１】
図１１のプロセッサシステム２は、プロセッサコア３１と４階層のキャッシュを備えている。図１１のプロセッサシステム２は、例えばＤＤＲのようなインタフェースで、メインメモリ４と接続されている。メインメモリ４のデータ粒度は、例えば１ｋバイトである。メインメモリ４は、不図示のローバッファを有し、ローバッファは、少なくともメインメモリ４のデータ粒度分のメモリ容量を有する。メインメモリ４は、例えばＤＲＡＭで構成される。Ｌ１キャッシュ３２〜Ｌ３キャッシュ３４のデータ粒度は、例えば６４バイトである。
【００７２】
図１２はＬ４キャッシュ３５の内部構成の一例を示すブロック図である。図１２に示すように、Ｌ４キャッシュ３５は、第２メモリ７と、第３メモリ１０と、キャッシュコントローラ３６とを有する。
【００７３】
第２メモリ７は、第３メモリ１０よりメモリ容量が大きい。第２メモリ７は、第２粒度でデータの読み書きを行う。第３メモリ１０は、第２粒度より大きい第３粒度でデータの読み書きを行う。例えば、第２粒度は６４バイト、第３粒度は１ｋバイトである。第２メモリ７は例えばＭＲＡＭで構成され、第３メモリ１０は例えばＳＲＡＭで構成されている。
【００７４】
キャッシュコントローラ３６は、第２粒度タグメモリ２１と、第３粒度タグメモリ２２と、データ抽出部２３とを有する。第２粒度タグメモリ２１は、第２メモリ７に格納するデータを識別可能な情報を格納する。第３粒度タグメモリ２２は、第３メモリ１０に格納するデータを識別可能な情報を格納する。データ抽出部２３は、第３メモリ１０内のデータを読み出して、第２粒度で第２メモリ７に書き込む。
【００７５】
図１３は第２粒度タグメモリ２１のデータ構成の一例を示す図である。図１３の第２粒度タグメモリ２１は、図４と同様に、第２粒度のアドレス情報２１ａと、有効フラグ情報２１ｂと、ＬＲＵ（Lease Recently Used）管理情報２１ｃと、ダーティフラグ情報２１ｄとを対応づけて各エントリごとに格納している。
【００７６】
図１４は第３粒度タグメモリ２２のデータ構成の一例を示す図である。図１４の第３粒度タグメモリ２２は、第３粒度のアドレス情報２２ａと、有効フラグ情報２２ｂと、アクセスフラグ情報２２ｃと、ダーティフラグ情報２２ｄとを対応づけて各エントリごとに格納している。
【００７７】
図１５はＬ４キャッシュ３５に対する書込み処理のフローチャートである。Ｌ４キャッシュ３５に対する書込みは、例えば、Ｌ３キャッシュ３４内のデータのうち、ダーティフラグ情報がセットされているデータを書き戻す処理であり、Ｌ３キャッシュ３４からＬ４キャッシュ３５に対して６４バイトのデータの書込み要求が送付される。
【００７８】
Ｌ４キャッシュ３５に対する書込み要求があると（ステップＳ６１）、キャッシュコントローラ３６は、第３粒度タグメモリ２２にアクセスし、第３粒度タグメモリ２２にヒットしたか否かを判定する（ステップＳ６２）。第３粒度タグメモリ２２にヒットした場合には、書込み要求のあったデータを第３メモリ１０に書き込むととともに（ステップＳ６３）、第３粒度タグメモリ２２内のアクセスフラグ情報２２ｃとダーティフラグ情報２２ｄとを更新する（ステップＳ６４）。
【００７９】
一方、ステップＳ６２で、第３粒度タグメモリ２２にヒットしなかったと判定された場合には、第２メモリ７の該当アドレスのデータを書き込むとともに（ステップＳ６５）、第２粒度タグメモリ２１内のＬＲＵ管理情報２１ｃとダーティフラグ情報２１ｄとを更新する（ステップＳ６６）。
【００８０】
なお、Ｌ４キャッシュ３５への書込み処理は、図１５とは異なる処理手順を採用してもよい。例えば、第２メモリ７と第３メモリ１０の両方にデータの書込みを行ってもよい。
【００８１】
図１６Ａおよび図１６Ｂは、Ｌ４キャッシュ３５の読出処理とＬ４キャッシュ３５にミスしたときのデータフェッチ処理とを示すフローチャートである。Ｌ４キャッシュ３５に対する読出しは、例えばＬ３キャッシュ３４のキャッシュミスに伴って行われ、Ｌ３キャッシュ３４からＬ４キャッシュ３５に対して６４バイトのデータの読出要求が送付される。
【００８２】
なお、読出し処理は、書込みポリシによって異なる。以下では、図１４の書込みポリシを採用した場合の読出し処理について説明するが、読出し処理は、下記に説明するものに限定されない。
【００８３】
Ｌ４キャッシュ３５に読出し要求があると（ステップＳ７１）、キャッシュコントローラ３６は第２粒度タグメモリ２１と第３粒度タグメモリ２２の双方にヒットしたか否かを判定する（ステップＳ７２）。双方にヒットした場合には、第３粒度タグメモリ２２のダーティフラグ情報がセットされているか否かを判定する（ステップＳ７３）。第３粒度タグメモリ２２のダーティフラグ情報２２ｄがセットされている場合には、第３メモリ１０から読出し要求のあったデータを読み出す（ステップＳ７４）。読み出したデータは、Ｌ３キャッシュ３４に送付される（ステップＳ７５）。
【００８４】
第３粒度タグメモリ２２のダーティフラグ情報２２ｄがセットされていない場合には、第２粒度タグメモリ２１のダーティフラグ情報２１ｄがセットされているか否かを判定する（ステップＳ７６）。第２粒度タグメモリ２１のダーティフラグ情報２１ｄがセットされている場合には、第２メモリ７から読出し要求のあったデータを読み出して（ステップＳ７７）、Ｌ３キャッシュ３４に送付する（ステップＳ７５）。第２粒度タグメモリ２１のダーティフラグ情報２１ｄがセットされていない場合には、第３メモリ１０から読出し要求のあったデータを読み出して（ステップＳ７８）、Ｌ３キャッシュ３４に送付する（ステップＳ７５）。
【００８５】
このように、第２粒度タグメモリ２１と第３粒度タグメモリ２２の双方にヒットした場合は、第２粒度タグメモリ２１と第３粒度タグメモリ２２のダーティフラグ情報２１ｄ、２２ｄに基づいて、第２メモリ７または第３メモリ１０から、読出し要求のあったデータが読み出される。
【００８６】
ステップＳ７２でヒットしなかったと判定されると、読出し要求のあったアドレスが第３粒度タグメモリ２２にヒットしたか否かを判定する（ステップＳ７９）。ヒットしたと判定された場合は、第３メモリ１０から読出し要求のあったデータを読み出すとともに（ステップＳ７８）、第３粒度タグメモリ２２を更新する（ステップＳ８０）。ここでは、第３メモリ１０から読み出したデータに対応するアクセスフラグをセットする。
【００８７】
ステップＳ７９でヒットしなかったと判定されると、第２粒度タグメモリ２１にヒットしたか否かを判定する（ステップＳ８１）。第２粒度タグメモリ２１にヒットしたと判定されると、第２メモリ７から読出し要求のあったデータを読み出して（ステップＳ８２）、Ｌ３キャッシュ３４に送付する（ステップＳ７５）。
【００８８】
ステップＳ８１でヒットしなかったと判定されると、Ｌ４キャッシュ３５へのデータフェッチ処理を行う。まず、第３粒度タグメモリ２２に無効なデータが存在するか否かを判定する（ステップＳ８３）。無効なデータが存在すれば、第１メモリ９から第３粒度のデータを読み出して（ステップＳ８４）、読み出したデータを第３メモリ１０内の無効なデータと入れ替える（ステップＳ８５）。また、読み出したデータのうち６４バイトのデータを、Ｌ３キャッシュ３４に送付する（ステップＳ７５）。
【００８９】
ステップＳ８３で無効なデータが存在しないと判定されると、第３メモリ１０の無効化処理と、それに伴う第３メモリ１０から第２メモリ７へのデータ転送処理とを行う。まず、第３粒度タグメモリ２２にアクセスし、無効化を行うデータのアクセスフラグ情報２２ｃを参照する（ステップＳ８６）。データ抽出部２３は、第３メモリ１０から、アクセスフラグ情報２２ｃがセットされている第２粒度のデータを抽出し（ステップＳ８７）、第２メモリ７に格納する（ステップＳ８８）。また、第３粒度タグメモリ２２の無効化を行う（ステップＳ８９）。次にに、キャッシュコントローラ３６は、第１メモリ９からデータを読み出して、読み出したデータをＬ３キャッシュ３４に送付するとともに、第３メモリ１０にそのデータを格納し、このデータに対応する第３粒度タグメモリ２２のアクセスフラグ情報２２ｃをセットする。
【００９０】
第２メモリ７に格納するべきデータが既に第２メモリ７内に存在する場合には、そのデータの格納処理は行わなくてもよい。第２メモリ７に格納するべきデータが既に第２メモリ７内に存在したとしても、第３メモリ１０から第２メモリ７に転送するデータがダーティなデータであれば、そのデータを第２メモリ７に上書きしてもよい。
【００９１】
このように、第２の実施形態では、Ｌ４キャッシュ３５内に第２メモリ７および第３メモリ１０を設けて、第１メモリ９に第１粒度で格納されたデータの少なくとも一部を第３メモリ１０に第３粒度で格納し、第３メモリ１０に格納された第３粒度のデータの少なくとも一部を、第３粒度以下の第２粒度で第２メモリ７に格納する。これにより、空間局所性をもつデータへのアクセスを第３メモリ１０で高速化できる。同時に、時間局所性をもつデータを細かい粒度で第２メモリ７に格納することができ、時間局所性を持つデータへのアクセスを第２メモリ７で高速化できる。Ｌ４キャッシュ３５において、空間局所性をもつデータと時間局所性を持つデータの両方へのアクセスが期待でき、Ｌ４キャッシュ３５のヒット率を向上できる。Ｌ４キャッシュ３５のヒット率向上により、メモリアクセスを高速化できる。
【００９２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９３】
１  メモリシステム、２  プロセッサシステム、３  プロセッサ、４  メインメモリ、５  第１メモリコントローラ、６  第２メモリコントローラ、７  第２メモリ、８  メモリモジュール、９  第１メモリ、１０  第３メモリ、１１  メモリアレイ、１２  ローバッファ、２１  第２粒度タグメモリ、２２  第３粒度タグメモリ、２３  データ抽出部、２４  メモリアクセスコントローラ、２５  ライトバッファ、３１  プロセッサコア、３２  Ｌ１キャッシュ、３３  Ｌ２キャッシュ、３４  Ｌ３キャッシュ、３５  Ｌ４キャッシュ、３６  キャッシュコントローラ
【図１】
2018032256.tif 000003
【図２】
2018032256.tif 000004
【図３】
2018032256.tif 000005
【図４】
2018032256.tif 000006
【図５】
2018032256.tif 000007
【図６】
2018032256.tif 000008
【図７】
2018032256.tif 000009
【図８Ａ】
2018032256.tif 000010
【図８Ｂ】
2018032256.tif 000011
【図９】
2018032256.tif 000012
【図１０】
2018032256.tif 000013
【図１１】
2018032256.tif 000014
【図１２】
2018032256.tif 000015
【図１３】
2018032256.tif 000016
【図１４】
2018032256.tif 000017
【図１５】
2018032256.tif 000018
【図１６Ａ】
2018032256.tif 000019
【図１６Ｂ】
2018032256.tif 000020