(57)【要約】【課題】特性の異なる２以上のメモリを効率よく使い分けて、処理効率が低下しないようにする。【解決手段】キャッシュメモリシステムは、特性の異なる２以上のメモリを含む階層化メモリ群と、プロセッサのアクセス要求に含まれる仮想アドレスから物理アドレスへのアドレス変換情報を格納するとともに、プロセッサからアクセス要求のあった各データについてのアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納するアクセス情報記憶部と、プロセッサからアクセス要求のあった各データについてのアクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方の情報に基づき、特定のメモリを階層化メモリ群の中から選択してアクセス制御を行うコントローラと、を備える。【選択図】図１
2015184794.tif 000002
【特許請求の範囲】
【請求項１】
特性の異なる２以上のメモリを含む階層化メモリ群と、
プロセッサのアクセス要求に含まれる仮想アドレスから物理アドレスへのアドレス変換情報を格納するとともに、前記プロセッサからアクセス要求のあった各データについてのアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納するアクセス情報記憶部と、
前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方の情報に基づき、特定のメモリを前記階層化メモリ群の中から選択してアクセス制御を行うコントローラと、を備えるキャッシュメモリシステム。
【請求項２】
前記アクセス情報記憶部は、トランスレーション・ルックアサイド・バッファである請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記トランスレーション・ルックアサイド・バッファに格納された前記アドレス変換情報を格納するとともに、前記プロセッサからアクセス要求のあった各データについてのアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納するページテーブルを備える請求項２に記載のキャッシュメモリシステム。
【請求項４】
前記階層化メモリ群は、アクセス速度が異なる２以上のメモリを含み、
前記コントローラは、前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方に基づいて、アクセス速度が異なる前記２以上のメモリのうちいずれかを選択してアクセス制御を行う請求項１乃至３のいずれかに記載のキャッシュメモリシステム。
【請求項５】
前記階層化メモリ群は、消費電力が異なる２以上のメモリを含み、
前記コントローラは、前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方に基づいて、消費電力が異なる前記２以上のメモリのうちいずれかを選択してアクセス制御を行う請求項１乃至３のいずれかに記載のキャッシュメモリシステム。
【請求項６】
前記階層化メモリ群は、階層化されたｋ次（ｋ＝１からｎまでのすべての整数、ｎは１以上の整数）のキャッシュメモリおよび主記憶メモリを含み、
前記ｋ次のキャッシュメモリと前記主記憶メモリとでは、特性が互いに異なっており、
前記コントローラは、前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方に基づいて、前記ｋ次のキャッシュメモリまたは前記主記憶メモリを選択してアクセス制御を行う請求項１乃至５のいずれかに記載のキャッシュメモリシステム。
【請求項７】
前記アクセス情報記憶部は、前記階層化メモリ群に含まれるキャッシュメモリへのアクセス単位であるキャッシュラインよりもデータ量の多いページ単位でアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納する請求項１乃至６のいずれかに記載のキャッシュメモリシステム。
【請求項８】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、書込み頻度に関する情報である請求項１乃至７のいずれかに記載のキャッシュメモリシステム。
【請求項９】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、各データごとに、当該データの書込み回数と読出し回数との差分が所定の閾値以上か否かを示す情報である請求項１乃至８のいずれかに記載のキャッシュメモリシステム。
【請求項１０】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、キャッシュヒット/ミスに関する情報である請求項１乃至７のいずれかに記載のキャッシュメモリシステム。
【請求項１１】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、各データごとに、当該データのキャッシュミスとキャッシュヒットとの差分が所定の閾値以上か否かを示す情報である請求項１０に記載のキャッシュメモリシステム。
【請求項１２】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、前記階層化メモリ群に属するすべてのメモリのアクセス頻度に関する情報である請求項１乃至１１のいずれかに記載のキャッシュメモリシステム。
【請求項１３】
前記アクセス情報記憶部内のアクセス頻度に関する情報は、前記階層化メモリ群に属する特定のメモリのアクセス頻度に関する情報であり、
前記コントローラは、前記アクセス情報記憶部内のアクセス頻度に関する情報に基づいて、前記特定のメモリにアクセスするか、あるいは主記憶メモリにアクセスするかを選択する請求項１乃至１１のいずれかに記載のキャッシュメモリシステム。
【請求項１４】
前記アクセス情報記憶部内のアクセス制限に関する情報は、読出し専用、書込み専用、および読み書き可能の少なくとも一つを含む情報である請求項１乃至１３のいずれかに記載のキャッシュメモリシステム。
【請求項１５】
前記アクセス情報記憶部内のアクセス制限に関する情報は、下位メモリへの書き戻しをまだおこなっていないことを示すダーティ情報を含む請求項１乃至１４のいずれかに記載のキャッシュメモリシステム。
【請求項１６】
プロセッサと、
特性の異なる２以上のメモリを含む階層化メモリ群と、
プロセッサのアクセス要求に含まれる仮想アドレスから物理アドレスへのアドレス変換情報を格納するとともに、前記プロセッサからアクセス要求のあった各データについてのアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納するアクセス情報記憶部と、
前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方の情報に基づき、特定のメモリを前記階層化メモリ群の中から選択してアクセス制御を行うコントローラと、を備えるプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリシステムおよびプロセッサシステムに関する。
【背景技術】
【０００２】
メモリウォール問題と称されるように、メモリアクセスはプロセッサコアの性能と消費電力のボトルネックとなっている。この課題を緩和するため、キャッシュメモリの大容量化が進んでいる。
【０００３】
既存のキャッシュメモリは、ＳＲＡＭ（Static Random Access Memory）で構成するのが一般的であるが、ＳＲＡＭは高速であるが、待機電力が大きく、メモリセルの面積も大きいため、メモリ容量を増やすのは容易ではない。
【０００４】
このような背景から、待機電力が小さくて、微細化も容易なＭＲＡＭ（Magnetoresistive Random Access Memory）をキャッシュメモリに採用する提案がなされている。
【０００５】
しかしながら、通常のＭＲＡＭは、読出し速度に対して書込み速度が遅く、消費電力も大きいという問題がある。ＭＲＡＭをキャッシュメモリとして用いる場合、書込み頻度の高いデータをＭＲＡＭに格納したとすると、プロセッサシステム全体の処理効率が低下するおそれがある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】A Novel Architecture of the 3D Stacked MRAM L2 Cache for CMPs(HPCA, 2008)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、特性の異なる２以上のメモリを効率よく使い分けて、処理効率が低下しないようにしたキャッシュメモリシステムおよびプロセッサシステムを提供することである。
【課題を解決するための手段】
【０００８】
本実施形態によれば、特性の異なる２以上のメモリを含む階層化メモリ群と、
プロセッサのアクセス要求に含まれる仮想アドレスから物理アドレスへのアドレス変換情報を格納するとともに、前記プロセッサからアクセス要求のあった各データについてのアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方を格納するアクセス情報記憶部と、
前記プロセッサからアクセス要求のあった各データについての前記アクセス情報記憶部内のアクセス頻度に関する情報とアクセス制限に関する情報との少なくとも一方の情報に基づき、特定のメモリを前記階層化メモリ群の中から選択してアクセス制御を行うコントローラと、を備えるキャッシュメモリシステムが提供される。
【図面の簡単な説明】
【０００９】
【図１】一実施形態によるプロセッサシステム１の概略構成を示すブロック図。
【図２】第１の実施形態における各キャッシュメモリ６，７およびメインメモリ１０のアクセス優先度を示す図。
【図３】ＴＬＢ４の内部構造の一例を示す図。
【図４】特定の階層のメモリのみについてのアクセス頻度情報２０を取得するプロセッサシステム１のブロック図。
【図５】同一階層ハイブリッドキャッシュの一例を示す図。
【図６】同一階層ハイブリッドキャッシュにおける書き込み手順の一例を示すフローチャート。
【図７】他階層ハイブリッドキャッシュの一例を示す図。
【図８】他階層ハイブリッドキャッシュにおける書き込み手順の一例を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、キャッシュメモリシステムおよびプロセッサシステム内の特徴的な構成および動作を中心に説明するが、キャッシュメモリシステムおよびプロセッサシステムには以下の説明で省略した構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれるものである。
【００１１】
図１は一実施形態によるプロセッサシステム１の概略構成を示すブロック図である。図１のプロセッサシステム１は、プロセッサ（ＣＰＵ：Central Processing Unit）２と、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）３と、トランスレーション・ルックアサイド・バッファ（ＴＬＢ：Translation Lookaside Buffer）４と、ページテーブル（ＰＴ)５と、１次キャッシュメモリ（Ｌ１キャッシュ）６と、２次キャッシュメモリ（Ｌ２キャッシュ７）７と、を備えている。
【００１２】
Ｌ１およびＬ２キャッシュ６，７には、メインメモリ１０に格納されたデータ、またはメインメモリ１０に格納されるべきデータの少なくとも一部が格納される。これらキャッシュ６，７は、その内部に保持するデータを一意に識別可能なアドレス情報を保持するタグ部を有する。タグ部の実装形態には、専用のメモリ領域を保持するものや、データを保持するメモリ領域の一部に保持するものなど様々な実装形態があり、本実施形態ではそれら全てと組み合わせ可能である。
【００１３】
図１では、Ｌ２キャッシュ７までの２階層のキャッシュメモリを設ける例を示しているが、Ｌ２キャッシュ７よりも高次のキャッシュメモリを設けてもよい。すなわち、本実施形態では、特性の異なる２以上のメモリが異なる階層に備えられているか、特性の異なる２つ以上のメモリが同一階層に備えられていることが前提条件となる。ここで、特性とは、例えばアクセス速度である。この他、特性は、消費電力でもよいし、容量でもよいし、それ以外のメモリを区別する種々の特性でもよい。
【００１４】
以下では、簡略化のため、Ｌ２キャッシュ７までの２階層のキャッシュ構造を有する例を説明する。
【００１５】
メインメモリ１０以外の、プロセッサ２、ＭＭＵ３、Ｌ１キャッシュ６およびＬ２キャッシュ７は、例えば一つのチップに集積される。例えば、プロセッサ２、ＭＭＵ３、Ｌ１キャッシュ６およびが１つのチップに集積され、Ｌ２キャッシュ７は別のチップに集積され、これらがチップ同士の積層構造に基づき、金属配線によって直接接合されているシステムであってもよい。本実施形態では、ＭＭＵ３、Ｌ１およびＬ２キャッシュ６，７をキャッシュメモリシステムと呼ぶ。なお、後述するメインメモリ１０、ＴＬＢ４、ページテーブル５もキャッシュメモリシステムに含まれても良いが、含まれなくても良い。
【００１６】
Ｌ１およびＬ２キャッシュ６，７は、メインメモリ１０よりも高速アクセスが可能な半導体メモリで構成されている。それぞれのキャッシュへのデータ配置ポリシには様々なバリエーションが考えられる。例えば、Inclusion方式がある。この場合、Ｌ２キャッシュ７には、Ｌ１キャッシュ６に格納されたデータのすべてが格納される。
【００１７】
その他、例えば、Exclusion方式がある。この方式では、例えばＬ１キャッシュ６とＬ２キャッシュ７に同じデータは配置されない。また、例えば、Inclusion方式とExclusion方式のハイブリッド方式がある。この方式では、例えばＬ１キャッシュ６とＬ２キャッシュ７で重複して保持されるデータもあるし、排他的に保持されるデータもある。
【００１８】
これらの方式は、２つのキャッシュ６，７間のデータ配置ポリシであり、複数階層のキャッシュ構成では様々な組み合わせが考えられる。例えば、全ての階層でInclusion方式であってもよい。例えば、Ｌ１キャッシュ６とＬ２キャッシュ７はExclusive方式で、Ｌ２キャッシュ７とメインメモリ１０はInclusion方式であってもよい。本実施形態に示される方式は、これら上記に記した様々なデータ配置ポリシと組み合わせることが可能である。
【００１９】
キャッシュの更新方式にも様々な方式が存在するが、本実施形態はそれら全てと組み合わせ可能である。例えば、キャッシュ書き込みヒット時の書き込み方式がライトスルーであってもよいし、ライトバックであってもよい。また、キャッシュ書き込みミス時の書き込み方式がライトアロケートであってもよいし、ノーライトアロケートであってもよい。
【００２０】
Ｌ２キャッシュ７のメモリ容量はＬ１キャッシュ６のメモリ容量以上である。このように、高次のキャッシュメモリほどメモリ容量が大きくなる。従って、高次のキャッシュメモリには集積度が高く、容量に比例する傾向にあるリーク電力が少ないメモリを用いることが望ましい。このようなメモリとして、例えば、ＭＲＡＭ（Magnetoresistive Random Access Memory）等の不揮発メモリが考えられる。また、例えば、低リーク電力プロセスを用いたＳＲＡＭやＤＲＡＭであってもよい。
【００２１】
ページテーブル５は、OSが管理する仮想アドレス空間と物理アドレス空間のマッピングを格納するテーブルである。一般的に、仮想アドレスがインデックスとして用いられ、仮想アドレス毎に対応する物理アドレス等を格納する領域をもつ。ページテーブル５内の1つの仮想アドレスに対応する領域をページエントリとよぶ。ページテーブル５は、一般的には、メインメモリ１０の主記憶空間上に配置される。
【００２２】
ＴＬＢ４はページテーブル５内の一部のページエントリをキャッシングするメモリ領域である。一般的にハードウェアで実装され、ソフトウェアで実装されるページテーブル５より高速にアクセス可能である。
【００２３】
ＭＭＵ３はＴＬＢ４とページテーブル５を管理し、プロセッサ２が発行した仮想アドレスを物理アドレスに変換するアドレス変換機能(仮想記憶管理)、メモリ保護機能、キャッシュ制御機能、バス調停機能、等の機能を提供する。Ｌ１キャッシュ６等の上位階層キャッシュは仮想アドレスでアクセスされることもあるが、一般的に、Ｌ２キャッシュ７以下の下位階層のメモリはＭＭＵ３によって変換された物理アドレスでアクセスされる。ＭＭＵ３は、メインメモリ１０へのデータ配置とデータ追い出しの際に、仮想アドレスと物理アドレスとの変換テーブルを更新する。なお、ＭＭＵ３は全てをハードウェアで実装したり、全てをソフトウェアで実装したり、それらのハイブリッドで実装する等、様々な実装形態が存在する。本実施形態に示される方式は、これら全ての実装形態と組み合わせ可能である。
【００２４】
図１では、ＭＭＵ３とは別個にＴＬＢ４を設けているが、通常はＭＭＵ３の内部にＴＬＢ４が設けられる。本実施形態では、便宜上、ＭＭＵ３とＴＬＢ４を別個に取り扱うが、ＴＬＢ４がＭＭＵ３に内蔵される場合も含むものとする。
【００２５】
メインメモリ１０は、Ｌ１およびＬ２キャッシュ６，７よりもメモリ容量が大きいことから、プロセッサ２等が実装されるチップとは別個の１以上のチップで構成されることが多い。メインメモリ１０を構成するメモリセルは、例えばＤＲＡＭ（Dynamic RAM）セルである。なお、ＴＳＶ（Through Silicon Via）等の技術を用いて、プロセッサ２等と一つのチップに混載してもよい。
【００２６】
図２は第１の実施形態における各キャッシュメモリ６，７およびメインメモリ１０のアクセス優先度を示す図である。図示のように、プロセッサ２が発行した仮想アドレスに対応する物理アドレスは、まず最優先にＬ１キャッシュ６に送られる。この物理アドレスに対応するデータ（以下、対象データ）がＬ１キャッシュ６にある場合は、プロセッサ２はそのデータにアクセスすることになる。Ｌ１キャッシュ６のメモリ容量は、例えば数１０ｋバイト程度である。
【００２７】
対象データがＬ１キャッシュ６にない場合は、対応する物理アドレスはＬ２キャッシュ７に送られる。Ｌ２キャッシュ７に対象データがある場合は、プロセッサ２はそのデータにアクセスすることになる。Ｌ２キャッシュ７のメモリ容量は、例えば数１００ｋバイト〜数Ｍバイト程度である。
【００２８】
対象データがＬ２キャッシュ７にない場合は、対応する物理アドレスはメインメモリ１０に送られる。本実施形態では、メインメモリ１０には、Ｌ２キャッシュ７に格納されている全データが格納されているものとする。本実施形態は、上述したキャッシュ間データ配置ポリシに限定されるものではない。メインメモリ１０には、ＭＭＵ３で管理されるページ単位のデータが格納される。一般的に、ＭＭＵ３で管理されるページ単位のデータはメインメモリ１０と補助記憶装置に配置されるが、本実施形態では簡易化のため全てのデータがメインメモリ１０に配置されているものとする。本実施形態では、メインメモリ１０に対象データがある場合は、プロセッサ２はそのデータにアクセスすることになる。メインメモリ１０のメモリ容量は、例えば数Ｇバイト程度である。
【００２９】
このように、Ｌ１およびＬ２キャッシュ６，７は階層化されており、次数の大きい（下位階層の）キャッシュメモリほどメモリ容量は大きい。本実施形態では、簡単化のため、次数の大きいキャッシュメモリには、次数の小さい（上位階層の）キャッシュメモリに格納されている全データが格納されるものとしている。
【００３０】
図３はＴＬＢ４の内部構造の一例を示す図である。ＴＬＢ４は、ページ単位で各種情報を管理する。ここで、ページとは、例えば４ｋバイトのデータである。
【００３１】
図３は１ページ分のページエントリ情報１１の一例を示している。図３のページエントリ情報１１は、アドレス変換情報１２と、ダーティビット１３と、アクセスビット１４と、ページ・キャッシュ・ディセーブルビット１５と、ページ・ライトスルービット１６と、ユーザ・スーパーバイザビット１７と、リードライトビット（リードライト情報）１８と、プレゼントビット１９とを有し、これ以外に、アクセス頻度情報２０を有する。
【００３２】
図３に示したページエントリ情報１１内の各種情報の配置順序は一例であり、図示したものに限定されるものではない。なお、本実施形態を既存のプロセッサ２に適用する場合、すなわち既存のページテーブル５にアクセス頻度情報２０を追加する場合には、既存のページエントリ情報１１の空き領域にアクセス頻度情報２０を格納する方式と、既存のページエントリ情報１１のビット幅を拡張する方式とが考えられ、いずれの方式を採用してもよい。
【００３３】
更に、アクセス頻度情報２０を含むページエントリ情報１１は、ＴＬＢ４のみに設けられる場合と、ページテーブル５のみに設けられる場合と、ＴＬＢ４とページテーブル５両方に設けられる場合とが考えられる。これら３つの選択肢のいずれを採用する場合も、上述した既存のページエントリ情報１１にアクセス頻度情報２０を追加する方式と既存のページエントリ情報１１のビット幅を拡張する方式とのいずれかと組み合わせ可能である。本実施形態では、アクセス頻度情報２０を格納するＴＬＢ４とページテーブル５を総称してアクセス情報記憶部と呼ぶ。
【００３４】
アクセス頻度情報２０をＴＬＢ４とページテーブル５の両方に設ける場合、ページテーブル５も図３と同様の内部構造のページエントリ情報１１を有するのが望ましい。ＴＬＢ４には、プロセッサ２が最近発行した仮想アドレスに関するアドレス変換情報が格納されるのに対して、ページテーブル５には、メインメモリ１０の全体に関するアドレス変換情報が格納されるため、プロセッサ２が発行した仮想アドレスについてのページエントリ情報１１がＴＬＢ４内に存在しない場合でも、ページテーブル５を参照することで、該当するページエントリ情報１１内に格納されたアクセス頻度情報２０を取得できる。また、ＴＬＢ４内の少なくとも一部のページエントリ情報１１を追い出す（フラッシュする）ときは、フラッシュすべきページエントリ情報１１と対応するアクセス頻度情報２０とをページテーブル５に書き戻すのが望ましい。これにより、ＴＬＢ４に格納しきれなかったページエントリ情報１１と対応するアクセス頻度情報２０をページテーブル５に格納できる。
【００３５】
本実施形態では、一例として、ＴＬＢ４とページテーブル５の両方が、図３に示すページエントリ情報１１を保持し、ページエントリ情報１１の中にアクセス頻度情報２０が含まれる方式を採用する例を説明する。また、既存のページエントリにはアクセス頻度情報２０を追加する空き領域が十分にあるものと仮定する。
【００３６】
図３に示すページエントリ情報１１内のアドレス変換情報１２は、プロセッサ２が発行した仮想アドレスを物理アドレスに変換するための情報である。例えば、論理アドレスに対応する物理アドレスや、階層化されたページテーブル５へのポインタがこれにあたる。ダーティビット１３は、このページに書き込みを行ったときに１に設定される。アクセスビット１４は、このページにアクセスすると１に設定される。ページ・キャッシュ・ディセーブルビット１５は、このページへのキャッシングを禁止するときに１に設定される。ページ・ライトスルービット１６は、ライトスルーするときに０に設定され、ライトバックするときに１に設定される。なお、ライトスルーとは、キャッシュメモリとメインメモリ１０の両方にデータを書き込むことを指し、ライトバックとは、キャッシュメモリに先にデータを書き込み、その後にメインメモリ１０に書き戻すことを指す。ユーザ・スーパーバイザビット１７は、該当ページをユーザモードで使用するか、スーパーバイザモードで使用するかを設定するものである。リードライト情報に対応するリードライトビット１８は、書き込みを許可されている場合に１に設定され、それ以外は０に設定される。プレゼントビット１９は、このページがメインメモリ１０に存在するときに１に設定される。これらの情報は、市場に存在するCPUにおいても様々な形態があるように、上記の例に用いた実施形態のみに限定されるものではない。
【００３７】
アクセス頻度情報２０とは、単位時間当たりのメモリアクセス情報である。例えば、単位時間当たりのアクセス回数や、単位時間当たりのミス回数がある。より具体的には、例えば、単位時間あたりに、読み込みと書き込みのどちらが多いかという情報（Ｗ／Ｒ情報）や、キャッシュヒットとキャッシュミス(ヒット/ミス情報)のどちらが多いかという情報があげられる。なお、前述の書き込みとは、ＣＰＵ２によるデータの更新を指す。キャッシュの格納データの入れ替え(リプレースメント)による書き込みを含んでもよい。なお、本実施形態では、簡単化のため、書き込みとはＣＰＵ２によるデータの更新を指すものする。
【００３８】
アクセス頻度情報２０の具体的なデータ形式は特に問わないが、例えばＷ／Ｒ情報としては、プロセッサ２がアクセスしたアドレスをページ単位でカウントする飽和カウンタを設けて、アクセスが書込みであれば飽和カウンタをカウントアップし、アクセスが読出しであればカウントダウンすればよい。この場合のアクセス頻度情報２０は、飽和カウンタのカウント値である。このカウント値が大きければ、書込み頻度が高いデータであることがわかる。飽和カウンタは、例えば、ＭＭＵ３に設ければよい。ＭＭＵ３は、飽和カウンタのカウント値により、書き込み頻度が高いデータか否かを迅速に判断できる。
【００３９】
同様に、例えばキャッシュヒット/ミス情報としては、キャッシュヒット・ミスをカウントする飽和カウンタを設けて、アクセスがキャッシュミスであれば、飽和カウンタをカウントアップし、アクセスがヒットであればカウントダウンすればよい。このカウント値が大きければ、キャッシュミス頻度が高いデータであることが分かる。さらに、飽和カウンタに加え、例えば、キャッシュアクセス回数を保持しておけば、全アクセスに対するキャッシュミス頻度の全アクセスにおける割合の情報をえることができる。
【００４０】
なお、これらの情報を保持する単位は、上記で示したページ単位以外にも様々な形態が考えられる。例えば、ページ内に保持するライン毎にデータを保持してもよい。例えば、ページサイズが４Ｋバイトでラインサイズが６４バイトの場合には、ページ内に６４個のラインが存在するため、ＴＬＢやページテーブルの各エントリ毎にライン毎の情報を保持する６４個の領域を設けてもよい。また、ページ単位で情報を保持する形態と、ライン単位で情報を保持する形態との中間の形態として、例えば、ライン単位の情報をハッシュ化してページ単位で保持する形態でもよいし、少なくともページ単位よりは小さい複数のラインをまとめて1つの情報を保持してもよい。本実施形態では、簡単化のためページ単位で情報を保持する形態を示す。
【００４１】
ＴＬＢ４やページテーブル５内のページエントリ情報１１のうち、アクセス頻度情報２０以外の情報は、本明細書ではアクセス制限情報と呼ぶ。これに対して、アクセス頻度情報２０は、プロセッサ２のアクセス要求またはキャッシュメモリへのアクセス情報に応じてＭＭＵ３が生成する情報である。
【００４２】
本実施形態の特徴の一つは、ＭＭＵ３が、ページエントリ情報１１内のアクセス制限情報とアクセス頻度情報２０の少なくとも一方に基づいて、複数階層のメモリの中から、アクセスすべきメモリを選択することである。すなわち、ＭＭＵ３は、アクセス制限情報とアクセス頻度情報２０とに基づいて、アクセスすべきメモリの選択        に利用する情報の提供元として機能する。
【００４３】
端的な例としては、ダーティビットやリードライトビット等のアクセス制限情報と、アクセス頻度情報２０とに基づいて、書込み頻度の高いデータか否かを判別し、書込み頻度の高いデータの場合には、書込み速度の速いメモリまたは書き込み時の消費電力の少ないメモリに書き込むことが考えられる。
【００４４】
より具体的には、Ｌ２キャッシュ７のデータキャッシュ部をＭＲＡＭとＳＲＡＭを用いて構成する場合に、書込み速度はＭＲＡＭよりもＳＲＡＭの方が速いため、書込み頻度の高いデータについてはＭＲＡＭに書かずにＳＲＡＭに書き込むようにする。これにより、プロセッサ２の書込み効率の向上が図れる。
【００４５】
ＴＬＢ４やページテーブル５内のページエントリ情報１１に含まれるアクセス頻度情報２０は、すべての階層のメモリ（Ｌ１キャッシュ６、Ｌ２キャッシュ７およびメインメモリ１０）についてのアクセス頻度情報２０であってもよいし、特定の階層のメモリ（例えばＬ２キャッシュ７）のみについてのアクセス頻度情報２０であってもよい。
【００４６】
すべての階層のメモリについてのアクセス頻度情報２０を取得する場合は、図１のブロック図に示すように、プロセッサ２が発行するすべてのアクセス要求をＭＭＵ３で取得して、ＭＭＵ３内で、上述した飽和カウンタ等を用いてページ単位でアクセス頻度情報２０を更新すればよい。
【００４７】
一方、特定の階層のメモリのみについてのアクセス頻度情報２０を取得する場合は、プロセッサシステム１のブロック構成は例えば図４のようなものになる。図４の場合、アクセス頻度情報２０を取得する対象であるＬ２キャッシュ７からＭＭＵ３に、書込みおよび読出しを行ったアドレス情報を通知する。この情報を受けて、ＭＭＵ３内の飽和カウンタで計数動作を行って、アドレス頻度情報を更新すればよい。
【００４８】
上述したように、本実施形態では、ダーティビットやリードライトビットからなるアクセス制限情報とアクセス頻度情報２０とに基づいて、アクセスすべきメモリを選択しているが、選択対象であるメモリは、同一階層に並列的に特性の異なる複数のメモリを配置する場合（以下、この場合を同一階層ハイブリッドキャッシュと呼ぶ）と、異なるキャッシュ階層に特性の異なる複数のメモリを配置する場合（以下、この場合を他階層ハイブリッドキャッシュと呼ぶ）とがある。
【００４９】
(同一階層ハイブリッドキャッシュ)
図５は同一階層ハイブリッドキャッシュの一例を示す図である。図５のキャッシュメモリは、例えばＬ２キャッシュ７である。図５のＬ２キャッシュ７は、アドレス情報を格納するタグ部２１と、データを格納するデータキャッシュ部２２と、キャッシュコントローラ２３とを有し、データキャッシュ部２２は、ＭＲＡＭからなる第１メモリ部２４と、ＳＲＡＭからなる第２メモリ部２５とを有する。第１メモリ部２４は、書込み速度が第２メモリ部２５より遅いものの、セル面積を小さくできるため、第１メモリ部２４の方が第２メモリ部２５よりもメモリ容量が大きい。
【００５０】
ＭＭＵ３は、アクセス制限情報やアクセス頻度情報２０に基づいて、第１メモリ部２４と第２メモリ部２５のどちらにアクセスすべきかを選択し、その選択情報をＬ１キャッシュ６を介して、Ｌ２キャッシュ７のキャッシュコントローラ２３に通知する。これを受けて、キャッシュコントローラ２３は、ＭＭＵ３からの情報に従って第１メモリ部２４または第２メモリ部２５にアクセスする。より具体的には、書込み頻度が高いデータについては、ＳＲＡＭからなる第２メモリ部２５に格納し、ＭＲＡＭからなる第１メモリ部２４への書込み回数をできるだけ少なくする。また、書込み頻度が少ないデータ等は、メモリ容量の大きい第１メモリ部２４に格納する。これらの制御をメモリアクセス制御と呼ぶ。
【００５１】
なお、ＭＭＵ３からの情報には様々な形態が考えられる。例えば、書き込みが多いか、読み出しが多いかを表現する例えば１ビットのフラグでも良い。例えば、ＭＭＵ３に設けたアクセス制限情報やアクセス頻度情報２０をそのままＬ２キャッシュ７に送付してもよい。また、例えば、ＭＭＵ３がアクセス制限情報やアクセス頻度情報２０からＳＲＡＭにアクセスすべきかＭＲＡＭにアクセスすべきかを判断し、その情報をＬ２キャッシュ７に送付してもよい。つまり、ＭＭＵ３に存在するアクセス制限情報やアクセス頻度情報２０により、ＳＲＡＭにアクセスすべきか、ＭＲＡＭにアクセスすべきかを判断するのはＭＭＵ３であってもよいし、キャッシュコントローラ２３であってもよい。
【００５２】
同一階層ハイブリッドキャッシュにおいて、アクセス制限情報とアクセス頻度情報２０の利用形態には様々なものが考えられる。
【００５３】
まず、アクセス制限情報やアクセス頻度情報２０として、Ｒ／Ｗ情報を保持する場合の例を示す。例えば、リードライトビットで書き込み属性がセットされていればＳＲＡＭに書き込み、セットされていなければＭＲＡＭに書き込めばよい。例えば、リードライトビットで書き込み属性がセットされており、かつ、ダーティビットがセットされていればＳＲＡＭに書き込み、それ以外のデータをＭＲＡＭに書き込めばよい。例えば、アクセス頻度情報２０に書き込みがあると＋１し、読み出しを行うと−１する飽和カウンタを用いる場合、飽和カウンタが５以上のデータをＳＲＡＭに書き込み、それ以外のデータをＭＲＡＭに書き込めばよい。例えば、リードライトビットで書き込み属性がセットされており、かつ、アクセス頻度情報２０の飽和カウンタが５以上であればＳＲＡＭに書き込み、それ以外をＭＲＡＭに書き込めばよい。
【００５４】
次に、アクセス制限情報やアクセス頻度情報２０として、キャッシュヒット／ミス情報を保持する場合の例を示す。例えば、キャッシュミスであれば＋１し、キャッシュヒットであれば−１する飽和カウンタを用いる場合、飽和カウンタが３以上のデータをＳＲＡＭに書き込み、それ以外のデータをＭＲＡＭに書き込めばよい。
【００５５】
なお、上記の飽和カウンタの値は一例を示したに過ぎない。閾値となる飽和カウンタの値は１でもよいし１０でもよい。また、実行中に閾値となる値を動的に変化させてもよい。
【００５６】
本実施形態では、アクセス頻度情報２０に基づいた書き込み先選択を行う場合、書き込むべきメモリがプログラムの実行状況により変化する可能性がある。したがって、書き込みの際には、データの一貫性を保つための制御が必要である。キャッシュコントローラ２３は書き込み先メモリ以外のメモリにデータが存在するかどうかをチェックし、存在する場合はデータ一貫性を保つための処理を行う必要がある。例えば、図６のように、書き込み先以外のメモリにデータが存在する場合、そのデータを無効化すると共に、書き込み先メモリにデータを書き込む方法がある。
【００５７】
図６は同一階層ハイブリッドキャッシュにおける書き込み手順の一例を示すフローチャートである。なお、図６の書き込み手順は、Ｌ２キャッシュ７のキャッシュコントローラ２３が全ての情報を取得している場合の例を示す。図６のフローチャートは、Ｌ１キャッシュ６からの書き込み要求に応じてＬ２キャッシュ７のキャッシュコントローラ２３がデータキャッシュ部２２にデータ書き込みを行う場合の処理手順を示している。
【００５８】
まず、アクセス要求のあったアドレスがキャッシュヒットしたか否かを判定する（ステップＳ１）。キャッシュヒットしたと判定された場合は、第１メモリ部２４であるＳＲＡＭにキャッシュヒットしたか否かを判定する（ステップＳ２）。
【００５９】
ＳＲＡＭにキャッシュヒットしたと判定された場合は、ＳＲＡＭにデータを書き込むべきか否かを判定する（ステップＳ３）。ＳＲＡＭにデータを書き込むべきと判定された場合はＳＲＡＭ内の対応するデータを上書きする（ステップＳ４）。ＳＲＡＭにデータを書き込むべきでないと判定された場合はＳＲＡＭ内の対応するデータを無効化し、Ｌ１キャッシュ６からアクセス要求のあったデータを第１メモリ部２４であるＭＲＡＭに書き込む（ステップＳ５）。
【００６０】
ステップＳ２でＳＲＡＭにキャッシュヒットしなかったと判定された場合は、第１メモリ部２４であるＭＲＡＭにデータを書き込むべきか否かを判定する（ステップＳ６）。ＭＲＡＭにデータを書き込むべきと判定された場合はＭＲＡＭ内の対応するデータを上書きする（ステップＳ７）。ＭＲＡＭにデータを書き込むべきでないと判定された場合はＭＲＡＭ内の対応するデータを無効化し、Ｌ１キャッシュ６からアクセス要求のあったデータを第２メモリ部２５であるＳＲＡＭに書き込む（ステップＳ８）。
【００６１】
ステップＳ１でキャッシュヒットしなかったと判定された場合は、第２メモリ部２５であるＳＲＡＭにデータを書き込むべきか否かを判定する（ステップＳ９）。ＳＲＡＭにデータを書き込むべきと判定された場合はＳＲＡＭにデータを書き込み（ステップＳ１０）、ＳＲＡＭにデータを書き込むべきでないと判定された場合はＭＲＡＭにデータを書き込む（ステップＳ１１）。
【００６２】
なお、Ｌ２キャッシュ７の代わりに、あるいはＬ２キャッシュ７とともに、Ｌ１キャッシュ６についても、図５と同様に特性の異なる複数のメモリ部を配置してもよい。
【００６３】
（他階層ハイブリッドキャッシュ）
図７は他階層ハイブリッドキャッシュの一例を示すブロック図である。図７は、Ｌ１キャッシュ６をＳＲＡＭで構成し、Ｌ２キャッシュ７をＭＲＡＭで構成し、メインメモリ１０をＤＲＡＭで構成する例を示している。
【００６４】
図７の場合、ＭＭＵ３が書込み頻度が高いと判断したデータ(高優先度データ)については、できるだけＬ１キャッシュ６に格納し、ＭＲＡＭからなるＬ２キャッシュ７への書込み回数を削減する。Ｌ１キャッシュ６にできるだけ格納する方法として、例えば、ＬＲＵ（Least Recently Used）情報を利用する方法がある。例えば、高優先度データのみＭＲＵ（Most Recently Used）データとして番号の小さいウェイに配置できるようにし、その他のデータにアクセスがあってもＭＲＵデータとしては扱わず、高優先度データのウェイよりも番号が小さいウェイには配置できないようにするといった方法がある。
【００６５】
あるいは、書込み頻度が高くて再利用性が低い（以後の読み出し可能性が低い）データを、積極的にＤＲＡＭからなるメインメモリ１０に格納し、ＭＲＡＭからなるＬ２キャッシュ７への書込み回数を削減してもよい（バイパス制御）。また、書き込み頻度が低くても、再利用性が低いデータについて同様の制御を行ってもよい。
【００６６】
なお、ＭＭＵ３からの情報には様々な形態が考えられる。例えば、キャッシュミスが多いか、キャッシュヒットが多いかを表現する例えば１ビットのフラグでも良い。例えば、ＭＭＵ３に設けたアクセス制限情報やアクセス頻度情報２０をそのままＬ２キャッシュ７に送付してもよい。また、例えば、バイパス制御を行うか、バイパス制御を行わないかといった情報であってもよい。つまり、ＭＭＵ３に存在するアクセス制限情報やアクセス頻度情報２０により、バイパス制御を行うか、バイパス制御を行わないかを判断するのはＭＭＵ３であってもよいし、キャッシュコントローラ２３であってもよい。
【００６７】
他階層ハイブリッドキャッシュにおいて、アクセス制限情報とアクセス頻度情報２０の利用形態には様々なものが考えられる。
【００６８】
まず、アクセス制限情報やアクセス頻度情報２０として、Ｒ／Ｗ情報を保持する場合の例を示す。例えば、リードライトビットで書き込み属性がセットされていればバイパス制御を行い、セットされていなければＬ２キャッシュに書き込めばよい。例えば、リードライトビットで書き込み属性がセットされており、かつ、ダーティビットがセットされていればバイパス制御を行い、それ以外のデータをＬ２キャッシュに書き込めばよい。例えば、アクセス頻度情報２０に書き込みがあると＋１し、読み出しを行うと−１する飽和カウンタを用いる場合、飽和カウンタが５以上のデータでバイパス制御を行い、それ以外のデータをＬ２キャッシュに書き込めばよい。例えば、リードライトビットで書き込み属性がセットされており、かつ、アクセス頻度情報２０の飽和カウンタが５以上であればバイパス制御を行い、それ以外をＬ２キャッシュに書き込めばよい。
【００６９】
次に、アクセス頻度情報２０として、キャッシュヒット／ミス情報を保持する場合の例を示す。例えば、キャッシュミスであれば＋１し、キャッシュヒットであれば−１する飽和カウンタを用いる場合、飽和カウンタが３以上のデータでバイパス制御を行い、それ以外のデータをＬ２キャッシュに書き込めばよい。
【００７０】
なお、上記の飽和カウンタの値は一例を示したに過ぎない。閾値となる飽和カウンタの値は１でもよいし１０でもよい。また、実行中に閾値となる値を動的に変化させてもよい。
【００７１】
本実施形態では、アクセス頻度情報２０に基づいたバイパス制御を行う場合、バイパス制御の判断がプログラムの実行状況により変化する可能性がある。したがって、バイパス制御の際には、データの一貫性を保つための制御が必要である。キャッシュコントローラ２３はバイパス制御を行うキャッシュ（Ｌ２キャッシュ７）にデータが存在するかどうかをチェックし、存在する場合はデータ一貫性を保つための処理を行う必要がある。例えば、図８のように、キャッシュにデータが存在する場合、そのデータを無効化すると共に、バイパス制御を行う方法がある。
【００７２】
図８は他階層ハイブリッドキャッシュにおける書き込み手順の一例を示すフローチャートである。なお、図８の書き込み手順は、Ｌ２キャッシュ７のキャッシュコントローラ２３が全ての情報を取得している場合の例を示す。図８のフローチャートは、Ｌ１キャッシュ６からのアクセス要求に応じてＬ２キャッシュ７のキャッシュコントローラ２３がデータキャッシュ部２２にデータ書き込みを行う場合の処理手順を示している。
【００７３】
まず、アクセス要求のあったアドレスがキャッシュヒットしたか否かを判定する（ステップＳ２１）。キャッシュヒットしたと判定された場合は、バイパス制御を行うか否かを判定する（ステップＳ２２）。バイパス制御を行う場合は、Ｌ２キャッシュ内のデータを無効化し（ステップＳ２３）、メインメモリ１０にアクセス要求を送付する（ステップＳ２４）。ステップＳ２２でバイパス制御を行わないと判定されると、データキャッシュ部２２へのデータ書き込みを行う（ステップＳ２５）。ステップＳ２１でキャッシュヒットしなかったと判定されると、バイパス制御を行うか否かを判定する(ステップＳ２６)。バイパス制御を行う場合は、メインメモリ１０にアクセス要求を送付する（ステップＳ２７）。ステップＳ２６でバイパス制御を行わないと判定されると、データキャッシュ部２２へのデータ書き込みを行う(ステップＳ２５)。
【００７４】
同一階層ハイブリッドキャッシュおよび他階層ハイブリッドキャッシュの場合において、ＭＭＵ３からキャッシュコントローラ２３へと送付される情報の転送方式にも様々なものが考えられる。例えば、ＭＭＵ３から送付されるアドレス情報と共にＬ１キャッシュ６を経由してＬ２キャッシュ７へと送付されてもよい。例えば、アドレス情報とは別に、キャッシュ制御に関する情報をＭＭＵ３からＬ２キャッシュ７へと送付してもよい。
【００７５】
キャッシュ制御に関する情報をＭＭＵ３からＬ２キャッシュ７へと送付する場合に、ＭＭＵ３の情報を制御に利用するための制御手順には様々なものが考えられる。例えば、Ｌ１キャッシュ６がライトバックキャッシュであり、Ｌ１キャッシュ６からＬ２キャッシュ７へのデータ追い出しに伴うライトバックを行う場合を考える。
【００７６】
この場合、例えば以下のような手順が考えられる。例えば、Ｌ１キャッシュ６はデータアドレスとデータをＬ２キャッシュ７に送付すると共に、対象データに関する情報をＬ２キャッシュ７に送付するようＭＭＵ３にリクエストを送る。ＭＭＵ３はリクエストを受け取るとＬ２キャッシュ７に該当する情報を送付する。Ｌ２キャッシュ７は、Ｌ１キャッシュ６からの情報とＭＭＵ３からの情報を受け取り、メモリアクセス制御やバイパス制御を行う。
【００７７】
また、例えば、対象データに関する情報をＬ１キャッシュ６に送付するようＭＭＵ３にリクエストを送る。Ｌ１キャッシュ６はＭＭＵ３からの情報を受け取り、データアドレス・データとともに受け取った情報をＬ２に送付してもよい。Ｌ２キャッシュ７はこれらの情報をもとに、メモリアクセス制御やバイパス制御を行う。
【００７８】
また、例えば、Ｌ１キャッシュ６からデータアドレス・データを受け取ったＬ２キャッシュ７がＭＭＵ３へ情報のリクエストを送る。Ｌ２キャッシュ７はＭＭＵ３からの情報を受け取ったうえで、これらの情報をもとにメモリアクセス制御やバイパス制御を行う。
【００７９】
（アクセス制限情報とアクセス頻度情報２０の保持方法の変形例）
上述した実施形態では、簡略化のため、ＴＬＢ４が１階層のページエントリ・キャッシュである方式を示した。しかしながら、ＴＬＢ４が複数階層からなる場合においても本実施形態を適用可能である。この場合において、最も単純な構成は、全ての階層がアクセス制限情報やアクセス頻度情報２０を保持することである。一方で、一部の階層にのみアクセス制限情報とアクセス頻度情報２０を設ける方式も考えられる。例えば、最も下位階層のＴＬＢ４にのみアクセス制限情報とアクセス頻度情報２０を設ける方式がある。このような方式を用いることで、ＴＬＢ４へのアクセスを物理的に異なるメモリに分散し、ＴＬＢ４のアクセスの衝突による遅延を軽減することが出来る。この効果が得られる典型的な例としては、ＣＰＵ２からのメモリアクセスによるＴＬＢ４の参照と、Ｌ２キャッシュ７内のアクセス制限情報とアクセス頻度情報２０の更新のためのＴＬＢ４の参照とが同タイミングに発生した場合に、前者の参照は上位階層のＴＬＢ４でその要求に応え、後者の参照は下位階層のＴＬＢ４でその要求に応えることで、アクセス衝突を回避することが考えられる。
【００８０】
（アクセス制限情報とアクセス頻度情報２０の形式の変形例）
上述した実施形態では、アクセス制限情報とアクセス頻度情報２０をページ単位で所持する例を説明したが、キャッシュライン単位でアクセス制限情報とアクセス頻度情報２０を所持してもよい。例えば、１ページが４キロバイトで、１ラインが６４バイトの場合は、ページエントリに６４個のアクセス制限情報とアクセス頻度情報を保持することになる。
【００８１】
このように、本実施形態では、ＴＬＢ４やページテーブル５にアクセス制限情報とアクセス頻度情報２０の少なくとも一方を格納するため、これらの情報に基づいて、アクセスすべき最適なメモリを選択できる。これにより、例えば、書込み頻度の高いデータについては書き込み速度が高速なメモリや書き込み時の消費電力の少ないメモリに書き込むことができ、プロセッサ２の処理効率を向上できるとともに、消費電力を削減することも可能となる。したがって、高集積化が容易であるものの、書込み速度が遅くて書き込み時の消費電力も多いＭＲＡＭをキャッシュメモリに用いたとしても、プロセッサ２の処理効率を低下させずに済む。
【００８２】
上述した各実施形態では、特性の異なる複数のメモリの例として、ＳＲＡＭ、ＭＲＡＭおよびＤＲＡＭを用いる例を説明したが、メモリの種類はこれらに限定されない。例えば、他の不揮発性メモリ（例えば、ＲｅＲＡＭ（Resistance RAM）メモリセル、ＰＲＡＭ（Phase Change RAM）、ＦＲＡＭ（Ferroelectric RAM、登録商標）、ＮＡＮＤフラッシュメモリセルなどを用いてもよい。
【００８３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８４】
１  プロセッサシステム、２  プロセッサ、３  メモリ管理ユニット（ＭＭＵ）、４  トランスレーション・ルックアサイド・バッファ（ＴＬＢ）、５  ページテーブル（ＰＴ）、６  Ｌ１キャッシュ、７  Ｌ２キャッシュ、２０  アクセス頻度情報、２１  タグ部、２２  データキャッシュ部、２３  キャッシュコントローラ、２４  第１メモリ部、２５  第２メモリ部
【図１】
2015184794.tif 000003
【図２】
2015184794.tif 000004
【図３】
2015184794.tif 000005
【図４】
2015184794.tif 000006
【図５】
2015184794.tif 000007
【図６】
2015184794.tif 000008
【図７】
2015184794.tif 000009
【図８】
2015184794.tif 000010