(57)【特許請求の範囲】
【請求項１】
アクセス要求からデータ転送までの時間を示すレイテンシが互いに異なる複数のメモリデバイスを含む記憶装置に記憶されたデータの一部を保持するデータ保持部と、
前記複数のメモリデバイスのレイテンシの比と前記複数のメモリデバイスに対するアクセス頻度の比との前記複数のメモリデバイス毎の積と、前記複数のメモリデバイスから転送されて前記データ保持部に保持されたデータの量を示すデータ量の比とを比較し、前記積と前記データ量の比との比較結果に基づいて、前記データ保持部からのデータの追い出しを制御する制御部と
を有することを特徴とするキャッシュメモリ。
【請求項２】
請求項１に記載のキャッシュメモリにおいて、
前記制御部は、
前記記憶装置へのアクセスを前記複数のメモリデバイス毎にカウントする複数のカウンタと、
前記データ量の比を示す第１情報を保持する第１レジスタ部と、
前記複数のメモリデバイスのレイテンシの比を示す第２情報を保持する第２レジスタ部とを有する
ことを特徴とするキャッシュメモリ。
【請求項３】
請求項１または請求項２に記載のキャッシュメモリにおいて、
前記データ保持部に記憶されたデータの転送元のメモリデバイスの種別を示す種別情報を保持する情報保持部をさらに有し、
前記制御部は、前記比較結果と、前記情報保持部に保持された前記種別情報とに基づいて、前記データ保持部からのデータの追い出しを制御する
ことを特徴とするキャッシュメモリ。
【請求項４】
請求項３に記載のキャッシュメモリにおいて、
前記制御部は、前記データ保持部から追い出すデータのメモリデバイスの種別を前記比較結果に基づいて決定し、前記データ保持部から追い出すデータの候補のうち、決定した種別のメモリデバイスから転送されたデータを検索対象にして、前記検索対象のデータのうち、使用されていない時間が最も長いデータを前記データ保持部から追い出す
ことを特徴とするキャッシュメモリ。
【請求項５】
請求項１ないし請求項４のいずれか１項に記載のキャッシュメモリにおいて、
前記複数のメモリデバイスのいずれかがレイテンシが変化する第１メモリデバイスである場合に、前記第１メモリデバイスのレイテンシを計測するレイテンシ計測部をさらに有し、
前記制御部は、前記レイテンシ計測部で計測したレイテンシの平均値を用いて、前記複数のメモリデバイスのレイテンシの比を算出する
ことを特徴とするキャッシュメモリ。
【請求項６】
アクセス要求からデータ転送までの時間を示すレイテンシが互いに異なる複数のメモリデバイスを含む記憶装置に記憶されたデータの一部をデータ保持部に格納するキャッシュメモリの制御方法において、
前記キャッシュメモリが有する制御部は、前記複数のメモリデバイスのレイテンシの比と前記複数のメモリデバイスに対するアクセス頻度の比との前記複数のメモリデバイス毎の積と、前記複数のメモリデバイスから転送されて前記データ保持部に保持されたデータの量を示すデータ量の比とを比較し、
前記制御部は、前記積と前記データ量の比との比較結果に基づいて、前記データ保持部からのデータの追い出しを制御する
ことを特徴とするキャッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリおよびキャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の演算処理装置は、主記憶装置に比べて高速にアクセス可能なキャッシュメモリを有する。キャッシュメモリは、演算処理部であるＣＰＵコア等のプロセッサコアと主記憶装置との間に配置され、主記憶装置に記憶されたデータの一部を記憶する。
【０００３】
キャッシュメモリは、プロセッサコアからのアクセス要求で指定されたデータを記憶している場合（キャッシュヒット）、記憶しているデータをプロセッサコアに転送する。また、キャッシュメモリは、アクセス要求で指定されたデータを記憶していない場合（キャッシュミス）、主記憶装置からデータを取得し、取得したデータをプロセッサコアに転送し、主記憶装置から取得したデータを記憶する。これにより、アクセス要求で指定されたデータは、キャッシュメモリに登録される。
【０００４】
なお、キャッシュメモリは、主記憶装置から取得したデータを登録する空き領域がない場合、キャッシュメモリに記憶したデータのいずれかを追い出して空き領域を生成する。キャッシュメモリから追い出すデータを選択する手法として、ＬＲＵ（Least Recently Used）方式が知られている。ＬＲＵ方式では、キャッシュメモリは、使用されていない時間が最も長いデータを、追い出すデータとして選択する。
【０００５】
なお、主記憶装置のアクセス時間がデータの主記憶装置内での格納先によって異なるシステムでは、ＬＲＵ方式とは別の選択方式により、キャッシュメモリから追い出すデータを選択する手法が提案されている（例えば、特許文献１、２参照）。この種の選択方式では、キャッシュメモリに記憶したデータのうち、主記憶装置のアクセス時間が短いデータを、キャッシュメモリから追い出すデータとして優先して選択する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１８７５４０号公報
【特許文献２】特開平７−１５２６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、ＤＲＡＭ（Dynamic Random Access Memory）とＮＶＲＡＭ（Non-Volatile Random Access Memory）とを含む主記憶装置の研究が行われている。ＮＶＲＡＭは、例えば、ＰＣＭ（Phase Change Memory）、ＲｅＲＡＭ（Resistive RAM）、ＭＲＡＭ（Magnetoresistive RAM）等である。ＬＲＵ方式等の従来の手法は、アクセス時間が互いに異なる複数のメモリデバイス（例えば、ＤＲＡＭとＮＶＲＡＭ）を含む主記憶装置を想定していない。このため、複数のメモリデバイス（例えば、ＤＲＡＭとＮＶＲＡＭ）を含む主記憶装置に接続されたキャッシュメモリに、ＬＲＵ方式等の従来の手法を適用した場合、キャッシュメモリから追い出すデータが適切に選択されない場合がある。キャッシュメモリから追い出すデータが適切に選択されない場合、例えば、主記憶装置に記憶されたデータに対するアクセス時間の平均は、追い出すデータを適切に選択した場合に比べて増加する。
【０００８】
また、主記憶装置のアクセス時間が短いデータを、キャッシュメモリから追い出すデータとして優先して選択する方式では、アクセス時間が他のメモリデバイスより短いメモリデバイスにアクセスが集中した場合、キャッシュミスの頻度が増加する場合がある。この場合、主記憶装置に記憶されたデータに対するアクセス時間の平均は、追い出すデータを適切に選択した場合に比べて増加する。
【０００９】
１つの側面では、本件開示のキャッシュメモリおよびキャッシュメモリの制御方法は、主記憶装置に記憶されたデータに対するアクセス時間を低減することを目的とする。
【課題を解決するための手段】
【００１０】
一観点によれば、キャッシュメモリは、アクセス要求からデータ転送までの時間を示すレイテンシが互いに異なる複数のメモリデバイスを含む記憶装置に記憶されたデータの一部を保持するデータ保持部と、複数のメモリデバイスのレイテンシの比と複数のメモリデバイスに対するアクセス頻度の比との複数のメモリデバイス毎の積と、複数のメモリデバイスから転送されてデータ保持部に保持されたデータの量を示すデータ量の比とを比較し、積とデータ量の比との比較結果に基づいて、データ保持部からのデータの追い出しを制御する制御部とを有する。
【００１１】
別の観点によれば、アクセス要求からデータ転送までの時間を示すレイテンシが互いに異なる複数のメモリデバイスを含む記憶装置に記憶されたデータの一部をデータ保持部に格納するキャッシュメモリの制御方法では、キャッシュメモリが有する制御部は、複数のメモリデバイスのレイテンシの比と複数のメモリデバイスに対するアクセス頻度の比との複数のメモリデバイス毎の積と、複数のメモリデバイスから転送されてデータ保持部に保持されたデータの量を示すデータ量の比とを比較し、積とデータ量の比との比較結果に基づいて、データ保持部からのデータの追い出しを制御する。
【発明の効果】
【００１２】
本件開示のキャッシュメモリおよびキャッシュメモリの制御方法は、主記憶装置に記憶されたデータに対するアクセス時間を低減できる。
【図面の簡単な説明】
【００１３】
【図１】キャッシュメモリおよびキャッシュメモリの制御方法の一実施形態を示す図である。
【図２】キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。
【図３】図２に示したキャッシュメモリの動作の一例を示す図である。
【図４】図３に示したキャッシュ追い出し処理の一例を示す図である。
【図５】図４に示したキャッシュ追い出し処理を適用した場合とＬＲＵ方式を適用した場合との比較例を示す図である。
【図６】キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。
【図７】図６に示したキャッシュメモリの動作の一例を示す図である。
【図８】キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。
【図９】図８に示したキャッシュメモリの動作の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、実施形態について、図面を用いて説明する。
【００１５】
図１は、キャッシュメモリおよびキャッシュメモリの制御方法の一実施形態を示す。なお、キャッシュメモリ１０の構成は、図１に示す例に限定されない。図１に示すキャッシュメモリ１０は、演算処理部であるＣＰＵコア等のプロセッサコア２０と記憶装置２００との間に配置される。例えば、キャッシュメモリ１０およびプロセッサコア２０は、ＣＰＵ等の演算処理装置１００に搭載される。なお、例えば、キャッシュメモリが階層構造を有する場合、キャッシュメモリ１０は、演算処理装置１００の外部に配置されてもよい。記憶装置２００は、アクセス要求からデータ転送までの時間を示すレイテンシが互いに異なる複数のメモリデバイス２１０（２１０Ａ、２１０Ｂ）を有する。例えば、メモリデバイス２１０Ａは、ＤＲＡＭであり、メモリデバイス２１０Ｂは、レイテンシがＤＲＡＭより大きいＮＶＲＡＭである。
【００１６】
例えば、キャッシュメモリ１０は、記憶装置２００に記憶されたデータＤＡＴＡ（ＤＡＴＡａ、ＤＡＴＡｂ）の一部を記憶する。データＤＡＴＡａは、記憶装置２００内のメモリデバイス２１０Ａに記憶されるデータＤＡＴＡを示し、データＤＡＴＡｂは、記憶装置２００内のメモリデバイス２１０Ｂに記憶されるデータＤＡＴＡを示す。また、データＤＡＴＡの記憶装置２００での格納先を示すアドレスＡＤＲのうち、アドレスＡＤＲａは、メモリデバイス２１０Ａに割り当てられたアドレスＡＤＲを示し、アドレスＡＤＲｂは、メモリデバイス２１０Ｂに割り当てられたアドレスＡＤＲを示す。
【００１７】
キャッシュメモリ１０は、複数のメモリデバイス２１０に記憶されたデータＤＡＴＡ（ＤＡＴＡａ、ＤＡＴＡｂ）の一部を保持するデータ保持部１２と、制御部１４とを有する。例えば、キャッシュメモリ１０は、プロセッサコア２０からアクセス要求を受けた場合、アクセス要求で指定されたアドレスＡＤＲに対応するデータＤＡＴＡ（以下、要求データＤＡＴＡとも称する）がデータ保持部１２に保持されているか否かを判定する。
【００１８】
要求データＤＡＴＡがデータ保持部１２に保持されている場合、キャッシュメモリ１０は、データ保持部１２に保持されているデータＤＡＴＡをプロセッサコア２０に転送する。要求データＤＡＴＡがデータ保持部１２に保持されていない場合、キャッシュメモリ１０は、記憶装置２００から要求データＤＡＴＡを取得し、取得した要求データＤＡＴＡをプロセッサコア２０に転送する。また、キャッシュメモリ１０は、記憶装置２００から取得した要求データＤＡＴＡをデータ保持部１２に格納する。これにより、アクセス要求で指定されたアドレスＡＤＲに対応する要求データＤＡＴＡは、キャッシュメモリ１０に登録される。
【００１９】
なお、キャッシュメモリ１０は、記憶装置２００から取得した要求データＤＡＴＡを登録する空き領域がない場合、データ保持部１２に保持されたデータＤＡＴＡのいずれかをキャッシュメモリ１０から追い出し、空き領域を生成する。キャッシュメモリ１０から追い出すデータＤＡＴＡを選択する処理は、制御部１４により実行される。以下、キャッシュメモリ１０から追い出すデータＤＡＴＡ、すなわち、データ保持部１２から追い出すデータＤＡＴＡは、追い出しデータＤＡＴＡとも称される。
【００２０】
制御部１４は、複数のメモリデバイス２１０Ａ、２１０Ｂのレイテンシの比と複数のメモリデバイス２１０Ａ、２１０Ｂに対するアクセス頻度の比との複数のメモリデバイス２１０Ａ、２１０Ｂ毎の積を算出する。以下、複数のメモリデバイス２１０Ａ、２１０Ｂのレイテンシの比は、レイテンシ比とも称され、複数のメモリデバイス２１０Ａ、２１０Ｂに対するアクセス頻度の比は、アクセス比とも称される。
【００２１】
例えば、メモリデバイス２１０Ａのレイテンシが１０ナノ秒（ｎｓ）で、メモリデバイス２１０Ｂのレイテンシが５０ｎｓである場合、メモリデバイス２１０Ａとメモリデバイス２１０Ｂとのレイテンシ比は、１：５である。また、アドレスＡＤＲａに対するアクセス要求の発生頻度がアドレスＡＤＲｂに対するアクセス要求の発生頻度の２倍である場合、メモリデバイス２１０Ａとメモリデバイス２１０Ｂとのアクセス比は、２：１である。この場合、メモリデバイス２１０Ａ、２１０Ｂとのレイテンシ比とメモリデバイス２１０Ａ、２１０Ｂのアクセス比との積は、２：５（＝（１×２）：（５×１））である。
【００２２】
ここで、レイテンシ比の算出に使用される各メモリデバイス２１０のレイテンシは、例えば、データＤＡＴＡの読み出し時のレイテンシとデータＤＡＴＡの書き込み時のレイテンシとの平均でもよい。あるいは、レイテンシ比の算出に使用される各メモリデバイス２１０のレイテンシは、読み出し時のレイテンシのみでもよいし、書き込み時のレイテンシのみでもよい。なお、データＤＡＴＡの読み出し時のレイテンシは、例えば、メモリデバイス２１０が読み出し要求を受けてから最初のデータを出力するまでの時間でもよいし、最後のデータを出力するまでの時間でもよい。また、データＤＡＴＡの書き込み時のレイテンシは、例えば、メモリデバイス２１０が書き込み要求を受けてから最初のデータを書き込むまでの時間でよいし、最後のデータの書き込みが完了するまでの時間でもよい。
【００２３】
また、制御部１４は、複数のメモリデバイス２１０Ａ、２１０Ｂから転送されてデータ保持部１２に保持されたデータＤＡＴＡの量を示すデータ量の比（以下、キャッシュ比とも称する）を算出する。なお、キャッシュ比は、データ保持部１２に保持されたデータＤＡＴＡをメモリデバイス２１０Ａ、２１０Ｂ毎に分けた場合の複数のメモリデバイス２１０Ａ、２１０Ｂのデータ量の比である。例えば、データ保持部１２に保持されたデータＤＡＴＡのうち、３０％がアドレスＡＤＲａに対応するデータＤＡＴＡａで、７０％がアドレスＡＤＲｂに対応するデータＤＡＴＡｂである場合、メモリデバイス２１０Ａ、２１０Ｂのキャッシュ比は、３：７である。制御部１４は、レイテンシ比とアクセス比との積と、キャッシュ比とを比較する。
【００２４】
そして、制御部１４は、キャッシュ比がレイテンシ比とアクセス比との積に近づくように、追い出しデータＤＡＴＡを選択する。例えば、メモリデバイス２１０Ａ、２１０Ｂのキャッシュ比が３：７で、メモリデバイス２１０Ａ、２１０Ｂのレイテンシ比とアクセス比との積が２：５である場合、制御部１４は、データＤＡＴＡａを追い出しデータＤＡＴＡとして選択する。このように、制御部１４は、レイテンシ比とアクセス比との積とキャッシュ比との比較結果に基づいて、データ保持部１２からのデータＤＡＴＡの追い出しを制御する。
【００２５】
ここで、例えば、ＬＲＵ方式では、使用されていない時間が最も長いデータＤＡＴＡがデータ保持部１２から追い出されるため、メモリデバイス２１０Ａ、２１０Ｂのレイテンシに拘わらず、キャッシュ比はアクセス比に近づく。すなわち、ＬＲＵ方式では、追い出しデータＤＡＴＡを選択する際に、メモリデバイス２１０Ａ、２１０Ｂのレイテンシは考慮されない。このため、ＬＲＵ方式では、メモリデバイス２１０Ａよりレイテンシの大きいメモリデバイス２１０Ｂにアクセスする頻度が増加するおそれがある。この場合、記憶装置２００に割り当てられたアドレスＡＤＲで指定されるデータＤＡＴＡに対するアクセス時間の平均（以下、平均ペナルティとも称する）は、増加する。
【００２６】
また、記憶装置２００へのアクセス時間が短いデータＤＡＴＡを、追い出しデータＤＡＴＡとして優先して選択する方式では、メモリデバイス２１０Ａ、２１０Ｂのアクセス比は考慮されない。このため、メモリデバイス２１０Ａよりレイテンシの大きいメモリデバイス２１０Ｂに記憶されたデータＤＡＴＡｂがアクセス頻度に対して過剰にデータ保持部１２に残る場合がある。したがって、メモリデバイス２１０Ａに割り当てられたアドレスＡＤＲａに対するアクセスが集中した場合、キャッシュミスの頻度が増加し、キャッシュメモリ１０の平均ペナルティが増加するおそれがある。
【００２７】
これに対し、制御部１４は、メモリデバイス２１０Ａ、２１０Ｂのレイテンシをメモリデバイス２１０Ａ、２１０Ｂのアクセス頻度で重み付けした情報（レイテンシ比とアクセス比との積）とキャッシュ比とに基づいて、追い出しデータＤＡＴＡを選択する。これにより、キャッシュメモリ１０は、例えば、データＤＡＴＡａ、ＤＡＴＡｂの一方がアクセス頻度に対して過剰にデータ保持部１２に残ることを抑制できる。すなわち、データ保持部１２から追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリ１０は、平均ペナルティの増加を抑制できる。
【００２８】
以上、図１に示す実施形態では、制御部１４は、メモリデバイス２１０Ａ、２１０Ｂのレイテンシ比とアクセス比との積とメモリデバイス２１０Ａ、２１０Ｂのキャッシュ比との比較結果に基づいて、キャッシュメモリ１０から追い出すデータＤＡＴＡを選択する。これにより、キャッシュメモリ１０から追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリ１０の平均ペナルティを低減することができる。すなわち、記憶装置２００に記憶されたデータＤＡＴＡに対するアクセス時間を低減することができる。
【００２９】
図２は、キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。なお、キャッシュメモリＣＭＥＭの構成は、図２に示す例に限定されない。図１で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図２以降では、カウンタ（ＣＴａ、ＣＴｂ、ＵＤＣａ、ＵＤＣｂ等）のカウント値には、カウンタと同じ符号を使用する。
【００３０】
図２に示すキャッシュメモリＣＭＥＭは、ＣＰＵコア等のプロセッサコアＰＣＯＲと主記憶装置ＭＭＥＭとの間に配置され、メモリ制御部ＭＣＬを介して主記憶装置ＭＭＥＭにアクセスする。なお、メモリ制御部ＭＣＬは、キャッシュメモリＣＭＥＭと主記憶装置ＭＭＥＭとの間のデータ転送等を実行する。
【００３１】
キャッシュメモリＣＭＥＭ、プロセッサコアＰＣＯＲおよびメモリ制御部ＭＣＬは、ＣＰＵ等の演算処理装置ＰＵに搭載される。なお、例えば、キャッシュメモリが階層構造を有する場合、キャッシュメモリＣＭＥＭは、演算処理装置ＰＵの外部に配置されてもよい。主記憶装置ＭＭＥＭは、レイテンシが互いに異なる複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭを有する。例えば、メモリデバイスＤＲＡＭは、ＤＲＡＭであり、メモリデバイスＮＶＲＡＭは、レイテンシがＤＲＡＭより大きいＮＶＲＡＭである。以下、メモリデバイスＤＲＡＭ、ＮＶＲＡＭは、それぞれＤＲＡＭ、ＮＶＲＡＭとも称される。
【００３２】
キャッシュメモリＣＭＥＭは、複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭのいずれかに記憶されたデータＤＡＴＡの一部を保持するデータ保持部ＤＭＥＭと、追い出し制御部ＲＣＬと、キャッシュ制御部ＣＣＬとを有する。
【００３３】
データ保持部ＤＭＥＭは、キャッシュテーブルＣＴＢＬを有する。データ保持部ＤＭＥＭに保持されるデータＤＡＴＡは、例えば、キャッシュテーブルＣＴＢＬにより、キャッシュメモリＣＭＥＭのキャッシュライン単位で管理される。
【００３４】
例えば、キャッシュテーブルＣＴＢＬは、アドレスＡＤＲの一部分のビット群に対応するタグＴＡＧ、データＤＡＴＡ、ＬＲＵビット、フラグＦＬＧ等の要素を有する。タグＴＡＧおよびデータＤＡＴＡの一例として図２に示した０ｘ００、０ｘＸＸＸＸ等の”０ｘ”は、１６進数であることを示す。
【００３５】
ＬＲＵビットは、数字が小さくなるほど、古いデータＤＡＴＡ（使用されていない時間が最も長いデータＤＡＴＡ）を示す。フラグＦＬＧは、データ保持部ＤＭＥＭに保持されたデータＤＡＴＡの返却先（すなわち、転送元）のメモリデバイスＤＲＡＭ、ＮＶＲＡＭを示す種別情報の一例である。また、データ保持部ＤＭＥＭのうち、フラグＦＬＧを保持する領域は、種別情報を保持する情報保持部の一例である。
【００３６】
例えば、”０”に設定されたフラグＦＬＧに対応するデータＤＡＴＡ（図２に示す例では、タグ０ｘ００のデータ０ｘＸＸＸＸおよびタグ０ｘＦＦのデータ０ｘＹＹＹＹ）は、アドレスＡＤＲａに対応するデータＤＡＴＡであり、ＤＲＡＭに返却される。また、”１”に設定されたフラグＦＬＧに対応するデータＤＡＴＡ（図２に示す例では、タグ０ｘＦＥのデータ０ｘＺＺＺＺ）は、アドレスＡＤＲｂに対応するデータＤＡＴＡであり、ＮＶＲＡＭに返却される。キャッシュテーブルＣＴＢＬ内の情報は、キャッシュ制御部ＣＣＬの制御により更新される。
【００３７】
キャッシュ制御部ＣＣＬは、プロセッサコアＰＣＯＲからアクセス要求を受けた場合、アクセス要求で指定されたアドレスＡＤＲ（以下、要求アドレスＡＤＲとも称する）に対応する要求データＤＡＴＡがデータ保持部ＤＭＥＭに保持されているか否かを判定する。
【００３８】
要求データＤＡＴＡがデータ保持部ＤＭＥＭに保持されている場合、キャッシュ制御部ＣＣＬは、データ保持部ＤＭＥＭに保持されているデータＤＡＴＡをプロセッサコアＰＣＯＲに転送する。要求データＤＡＴＡがデータ保持部ＤＭＥＭに保持されていない場合、キャッシュ制御部ＣＣＬは、主記憶装置ＭＭＥＭから要求データＤＡＴＡをメモリ制御部ＭＣＬを介して取得し、取得した要求データＤＡＴＡをプロセッサコアＰＣＯＲに転送する。また、キャッシュ制御部ＣＣＬは、主記憶装置ＭＭＥＭから取得した要求データＤＡＴＡをデータ保持部ＤＭＥＭに格納する。例えば、キャッシュ制御部ＣＣＬは、主記憶装置ＭＭＥＭから取得した要求データＤＡＴＡをキャッシュテーブルＣＴＢＬに登録し、キャッシュテーブルＣＴＢＬを更新する。これにより、アクセス要求で指定されたアドレスＡＤＲに対応する要求データＤＡＴＡは、キャッシュメモリＣＭＥＭのキャッシュテーブルＣＴＢＬに登録される。
【００３９】
なお、キャッシュ制御部ＣＣＬは、主記憶装置ＭＭＥＭから取得した要求データＤＡＴＡを登録する空き領域がない場合、データ保持部ＤＭＥＭに保持されたデータＤＡＴＡのいずれかをキャッシュメモリＣＭＥＭから追い出す。例えば、キャッシュ制御部ＣＣＬは、主記憶装置ＭＭＥＭから取得した要求データＤＡＴＡを登録する空き領域がない場合、追い出し制御部ＲＣＬにより選択されたデータＤＡＴＡを、キャッシュメモリＣＭＥＭから追い出す。すなわち、キャッシュ制御部ＣＣＬおよび追い出し制御部ＲＣＬは、データ保持部ＤＭＥＭからのデータＤＡＴＡの追い出しを制御する制御部の一例である。
【００４０】
例えば、追い出し制御部ＲＣＬは、主記憶装置ＭＭＥＭへのアクセスを複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭ毎にカウントする複数のカウンタＣＴ（ＣＴａ、ＣＴｂ）と、レジスタ部ＬＲＥＧ、ＣＲＥＧとを有する。例えば、カウンタＣＴａは、追い出し制御部ＲＣＬに転送された要求アドレスＡＤＲがアドレスＡＤＲａを示す場合、カウントアップして、ＤＲＡＭへのアクセスをカウントする。また、カウンタＣＴｂは、要求アドレスＡＤＲがアドレスＡＤＲｂを示す場合、カウントアップして、ＮＶＲＡＭへのアクセスをカウントする。カウンタＣＴは、定期的にリセットされる。
【００４１】
レジスタ部ＣＲＥＧは、複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭから転送されてデータ保持部ＤＭＥＭに保持されたデータＤＡＴＡの量を示すデータ量の比（キャッシュ比）を示す第１情報を保持する第１レジスタ部の一例である。例えば、レジスタ部ＣＲＥＧは、アップダウンカウンタＵＤＣ（ＵＤＣａ、ＵＤＣｂ）を有する。
【００４２】
アップダウンカウンタＵＤＣａは、ＤＲＡＭからキャッシュメモリＣＭＥＭに転送されたデータＤＡＴＡ（以下、ＤＲＡＭのデータＤＡＴＡとも称する）を保持しているキャッシュラインの数をカウントする。また、アップダウンカウンタＵＤＣｂは、ＮＶＲＡＭからキャッシュメモリＣＭＥＭに転送されたデータＤＡＴＡ（以下、ＮＶＲＡＭのデータとも称する）を保持しているキャッシュラインの数をカウントする。そして、レジスタ部ＣＲＥＧは、各アップダウンカウンタＵＤＣのカウント値ＵＤＣａ、ＵＤＣｂ（すなわち、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比）を保持する。各アップダウンカウンタＵＤＣは、例えば、キャッシュメモリＣＭＥＭのキャッシュラインの数がアップダウンカウンタＵＤＣでカウント可能な数より大きい場合、定期的にリセットされる。
【００４３】
レジスタ部ＬＲＥＧは、複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭのレイテンシの比を示す第２情報を保持する第２レジスタ部の一例である。図２に示す例では、レジスタ部ＬＲＥＧは、ＤＲＡＭ、ＮＶＲＡＭの仕様等により予め決められたそれぞれのレイテンシの値（すなわち、ＤＲＡＭ、ＮＶＲＡＭのレイテンシ比）を保持する。例えば、ＤＲＡＭ、ＮＶＲＡＭのそれぞれのレイテンシは、ファームウェア等からパラメータとして追い出し制御部ＲＣＬに与えられる。
【００４４】
追い出し制御部ＲＣＬは、例えば、複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭのレイテンシ比と複数のメモリデバイスＤＲＡＭ、ＮＶＲＡＭのアクセス比との積を、レジスタ部ＬＲＥＧおよびカウンタＣＴａ、ＣＴｂを用いて算出する。そして、追い出し制御部ＲＣＬは、レイテンシ比とアクセス比との積とキャッシュ比とを比較し、比較結果に基づいて、追い出しデータＤＡＴＡを選択する。
【００４５】
ここで、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶは、式（１）で表される。
ＬＡＶ＝（Ａａ×ＬＴａ×Ｍａ＋Ａｂ×ＬＴｂ×Ｍｂ）／（Ａａ＋Ａｂ）  ・・・（１）
式（１）のＡａ、Ａｂは、ＤＲＡＭ、ＮＶＲＡＭのアクセスの割合をそれぞれ示し、ＬＴａ、ＬＴｂは、ＤＲＡＭ、ＮＶＲＡＭのレイテンシをそれぞれ示す。また、式（１）のＭａは、ＤＲＡＭに割り当てられたアドレスＡＤＲａに対するアクセスのキャッシュミス率を示し、Ｍｂは、ＮＶＲＡＭに割り当てられたアドレスＡＤＲｂに対するアクセスのキャッシュミス率を示す。
【００４６】
キャッシュミス率Ｍａ、Ｍｂがわかれば、式（１）を用いて、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶを最適化することができるが、キャッシュミス率Ｍａ、Ｍｂがどのように変化するかは、ＣＰＵ使用率等のワークロードに依存するため、容易に求まらない。このため、キャッシュメモリＣＭＥＭは、キャッシュミス率Ｍａ、Ｍｂを用いずに、データＤＡＴＡの追い出しを制御する。例えば、キャッシュメモリＣＭＥＭは、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比がＤＲＡＭ、ＮＶＲＡＭのレイテンシ比とアクセス比との積に近づくように、データＤＡＴＡの追い出しを制御する。これにより、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶを低減することができる。
【００４７】
例えば、ＤＲＡＭ、ＮＶＲＡＭのレイテンシがそれぞれ１０ｎｓ、５０ｎｓ（ＬＴＡ＝１０ｎｓ、ＬＴｂ＝５０ｎｓ）の場合、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶは、以下に示すようになる。なお、ＤＲＡＭ、ＮＶＲＡＭのアクセスの割合は、それぞれ２／３、１／３（ＡＰａ＝２／３、ＡＰｂ＝１／３）とする。
【００４８】
キャッシュメモリＣＭＥＭでは、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比は、ＤＲＡＭ、ＮＶＲＡＭのレイテンシ比（１：５）とアクセス比（２：１）との積（２：５）に近づく。例えば、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比が”２：５”になり、ＤＲＡＭ、ＮＶＲＡＭのキャッシュミス率Ｍａ、Ｍｂがそれぞれ１５％、５％になった場合、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶは、式（１）より、約１．８ｎｓである。
【００４９】
これに対し、ＬＲＵ方式では、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比は、ＤＲＡＭ、ＮＶＲＡＭのアクセス比（２：１）に近づく。例えば、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比が”２：１”になり、ＤＲＡＭ、ＮＶＲＡＭのキャッシュミス率Ｍａ、Ｍｂの両方が１０％になった場合、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶは、式（１）より、約２．３ｎｓである。
【００５０】
また、ＮＶＲＡＭに比べてレイテンシが小さいＤＲＡＭのデータＤＡＴＡを優先して追い出す方式では、ＮＶＲＡＭのデータＤＡＴＡがアクセス頻度に対して過剰にデータ保持部ＤＭＥＭに残る場合がある。例えば、ＤＲＡＭ、ＮＶＲＡＭのキャッシュ比が”１：９”になり、ＤＲＡＭ、ＮＶＲＡＭのキャッシュミス率Ｍａ、Ｍｂがそれぞれ３０％、２％になった場合、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶは、式（１）より、約２．３ｎｓである。
【００５１】
このように、キャッシュメモリＣＭＥＭは、ＬＲＵ方式等に比べて、主記憶装置ＭＭＥＭのレイテンシの平均ＬＡＶを小さくできる。
【００５２】
図３は、図２に示したキャッシュメモリＣＭＥＭの動作の一例を示す図である。
【００５３】
ステップＳ１００では、追い出し制御部ＲＣＬは、プロセッサコアＰＣＯＲから受けたアドレスＡＤＲ（要求アドレスＡＤＲ）に基づいて、アクセス先（アクセス対象のデータＤＡＴＡの格納先）がＤＲＡＭか否かを判定する。例えば、追い出し制御部ＲＣＬは、要求アドレスＡＤＲがＤＲＡＭに割り当てられたアドレスＡＤＲａを示す場合、アクセス先がＤＲＡＭであると判定する。また、追い出し制御部ＲＣＬは、要求アドレスＡＤＲがＮＶＲＡＭに割り当てられたアドレスＡＤＲｂを示す場合、アクセス先がＮＶＲＡＭであると判定する。
【００５４】
アクセス先がＤＲＡＭである場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ１２０に移る。一方、アクセス先がＤＲＡＭでない場合（すなわち、アクセス先がＮＶＲＡＭである場合）、キャッシュメモリＣＭＥＭの動作は、ステップＳ１４０に移る。
【００５５】
ステップＳ１２０では、追い出し制御部ＲＣＬは、カウンタＣＴａのカウント値ＣＴａをインクリメントする（ＣＴａ＝ＣＴａ＋１）。ステップＳ１２０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ１６０に移る。
【００５６】
ステップＳ１４０では、追い出し制御部ＲＣＬは、カウンタＣＴｂのカウント値ＣＴｂをインクリメントする（ＣＴｂ＝ＣＴｂ＋１）。ステップＳ１４０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ１６０に移る。
【００５７】
ステップＳ１６０では、キャッシュ制御部ＣＣＬは、プロセッサコアＰＣＯＲから受けたアドレスＡＤＲ（要求アドレスＡＤＲ）に基づいて、キャッシュメモリＣＭＥＭがキャッシュヒットしたか否かを判定する。例えば、キャッシュ制御部ＣＣＬは、要求アドレスＡＤＲで指定されるデータＤＡＴＡがキャッシュテーブルＣＴＢＬに登録されている場合、キャッシュメモリＣＭＥＭがキャッシュヒットしたと判定する。
【００５８】
キャッシュメモリＣＭＥＭがキャッシュヒットした場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２８０に移る。一方、キャッシュメモリＣＭＥＭがキャッシュヒットしない場合（すなわち、キャッシュミスした場合）、キャッシュメモリＣＭＥＭの動作は、ステップＳ１８０に移る。
【００５９】
ステップＳ１８０では、キャッシュ制御部ＣＣＬは、要求アドレスＡＤＲで指定されるデータＤＡＴＡを登録する空き領域が有るか否かを判定する。空き領域が有る場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２２０に移る。一方、空き領域が無い場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２００に移る。
【００６０】
ステップＳ２００では、キャッシュメモリＣＭＥＭは、キャッシュ追い出し処理を実行する。これにより、空き領域が生成される。なお、キャッシュ追い出し処理の詳細は、図４で説明する。ステップＳ２００の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２２０に移る。
【００６１】
ステップＳ２２０では、キャッシュ制御部ＣＣＬは、要求アドレスＡＤＲで指定されたデータＤＡＴＡを主記憶装置ＭＭＥＭから取得し、主記憶装置ＭＭＥＭから取得したデータＤＡＴＡをデータ保持部ＤＭＥＭの空き領域に格納する。ステップＳ２２０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２４０に移る。
【００６２】
ステップＳ２４０では、キャッシュ制御部ＣＣＬは、データ保持部ＤＭＥＭに格納したデータＤＡＴＡ（要求アドレスＡＤＲで指定されたデータＤＡＴＡ）に関する情報をキャッシュテーブルＣＴＢＬに登録し、キャッシュテーブルＣＴＢＬを更新する。これにより、要求アドレスＡＤＲで指定されたデータＤＡＴＡは、キャッシュテーブルＣＴＢＬに登録される。ステップＳ２４０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２６０に移る。
【００６３】
ステップＳ２６０では、追い出し制御部ＲＣＬは、キャッシュ比を更新する。例えば、追い出し制御部ＲＣＬは、要求アドレスＡＤＲで指定されたデータＤＡＴＡ（ステップＳ２２０の処理で主記憶装置ＭＭＥＭから取得したデータＤＡＴＡ）に対応するアップダウンカウンタＵＤＣのカウント値をインリメントする。
【００６４】
なお、ステップＳ２００のキャッシュ追い出し処理が実行された場合、追い出し制御部ＲＣＬは、データ保持部ＤＭＥＭから追い出されたデータＤＡＴＡに対応するアップダウンカウンタＵＤＣのカウント値をデクリメントする。例えば、ステップＳ２００のキャッシュ追い出し処理によりＤＲＡＭのデータＤＡＴＡがデータ保持部ＤＭＥＭから追い出された場合、追い出し制御部ＲＣＬは、レジスタ部ＣＲＥＧ内のアップダウンカウンタＵＤＣａのカウント値ＵＤＣａをデクリメントする。また、ステップＳ２００のキャッシュ追い出し処理によりＮＶＲＡＭのデータＤＡＴＡがデータ保持部ＤＭＥＭから追い出された場合、追い出し制御部ＲＣＬは、レジスタ部ＣＲＥＧ内のアップダウンカウンタＵＤＣｂのカウント値ＵＤＣｂをデクリメントする。
【００６５】
ステップＳ２６０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２８０に移る。
【００６６】
ステップＳ２８０では、キャッシュ制御部ＣＣＬは、キャッシュテーブルＣＴＢＬのＬＲＵビットを更新する。ステップＳ２８０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ３００に移る。
【００６７】
ステップＳ３００では、キャッシュ制御部ＣＣＬは、アクセス要求が読み出し要求の場合、主記憶装置ＭＭＥＭから取得したデータＤＡＴＡをプロセッサコアＰＣＯＲに転送する。あるいは、キャッシュ制御部ＣＣＬは、アクセス要求が書き込み要求の場合、書き込みデータＤＡＴＡをデータ保持部ＤＭＥＭに書き込み、キャッシュテーブルＣＴＢＬを更新する。
【００６８】
なお、キャッシュメモリＣＭＥＭの動作は、図３に示す例に限定されない。例えば、キャッシュメモリＣＭＥＭは、ステップＳ２２０の処理を実行する前に、ステップＳ２６０の処理（キャッシュ比の更新）を実行してもよい。
【００６９】
図４は、図３に示したキャッシュ追い出し処理（ステップＳ２００の処理）の一例を示す図である。図４では、キャッシュメモリＣＭＥＭがｎウェイ（ｎは２以上の整数）のセットアソシアティブ方式である場合を例にして、キャッシュ追い出し処理を説明する。ｎウェイのセットアソシアティブ方式では、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのいずれかに保持されたデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出すことにより、空き領域を生成する。なお、インデックスは、アドレスＡＤＲの一部分のビット群に対応する。
【００７０】
ステップＳ２０１では、追い出し制御部ＲＣＬは、レジスタ部ＬＲＥＧ、カウンタＣＴＡ、ＣＴｂを参照して、レイテンシ比とアクセス比とのメモリデバイス（ＤＲＡＭ、ＮＶＲＡＭ）毎の積を算出する。例えば、レジスタ部ＬＲＥＧに保持された情報が”Ｄａ：Ｄｂ”を示す場合、ＤＲＡＭとＮＶＲＡＭとのレイテンシ比は、”Ｄａ：Ｄｂ”である。また、カウンタＣＴａのカウント値ＣＴａとカウンタＣＴｂのカウント値ＣＴｂとの比が”Ａａ：Ａｂ”である場合、ＤＲＡＭとＮＶＲＡＭとのアクセス比は、”Ａａ：Ａｂ”である。
【００７１】
この場合、ＤＲＡＭとＮＶＲＡＭとのレイテンシ比とＤＲＡＭとＮＶＲＡＭとのアクセス比とのメモリデバイス（ＤＲＡＭ、ＮＶＲＡＭ）毎の積は、（Ａａ×Ｄａ）：（Ａｂ×Ｄｂ）である。ステップＳ２０１の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０２に移る。
【００７２】
ステップＳ２０２では、追い出し制御部ＲＣＬは、レイテンシ比とアクセス比との積がキャッシュ比より大きいか否かを判定する。例えば、レジスタ部ＣＲＥＧ内のアップダウンカウンタＵＤＣａのカウント値ＵＤＣａとアップダウンカウンタＵＤＣｂのカウント値ＵＤＣｂとの比が”Ｃａ：Ｃｂ”である場合、ＤＲＡＭとＮＶＲＡＭとのキャッシュ比は、”Ｃａ：Ｃｂ”である。この場合、追い出し制御部ＲＣＬは、レイテンシ比とアクセス比との積における比の値”（Ａａ×Ｄａ）／（Ａｂ×Ｄｂ）”がキャッシュ比における比の値”Ｃａ／Ｃｂ”より大きいか否かを判定する。
【００７３】
レイテンシ比とアクセス比との積がキャッシュ比より大きい場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０３に移る。一方、レイテンシ比とアクセス比との積がキャッシュ比以下の場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０５に移る。
【００７４】
ステップＳ２０３では、追い出し制御部ＲＣＬは、データ保持部ＤＭＥＭから追い出すデータＤＡＴＡの候補（以下、追い出し候補とも称する）に、ＤＲＡＭのデータＤＡＴＡが存在するか否かを判定する。例えば、追い出し制御部ＲＣＬは、キャッシュテーブルＣＴＢＬを参照し、要求アドレスＡＤＲで指定されるインデックスに対応するフラグＦＬＧの中から、ＤＲＡＭを示すフラグＦＬＧ（例えば、”０”に設定されたフラグＦＬＧ）を検索する。
【００７５】
ＤＲＡＭを示すフラグＦＬＧが検出された場合、ＤＡＲＭのデータＤＡＴＡは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのいずれかに保持されている。すなわち、ＤＲＡＭを示すフラグＦＬＧが検出された場合、追い出し候補にＤＲＡＭのデータＤＡＴＡが存在する。追い出し候補にＤＲＡＭのデータＤＡＴＡが存在する場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０４に移る。
【００７６】
一方、ＤＲＡＭを示すフラグＦＬＧが検出されない場合、ＤＡＲＭのデータＤＡＴＡは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのいずれにも保持されていない。すなわち、ＤＲＡＭを示すフラグＦＬＧが検出されない場合、追い出し候補にＤＲＡＭのデータＤＡＴＡは存在しない。追い出し候補にＤＲＡＭのデータＤＡＴＡが存在しない場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０６に移る。
【００７７】
ステップＳ２０４では、キャッシュメモリＣＭＥＭは、追い出し候補のＤＲＡＭのデータＤＡＴＡのうち、ＬＲＵが最も低い（最も古い）データＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。
【００７８】
例えば、追い出し制御部ＲＣＬは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのうち、キャッシュテーブルＣＴＢＬのフラグＦＬＧがＤＲＡＭを示すキャッシュラインを検索対象にする。そして、追い出し制御部ＲＣＬは、検索対象のキャッシュラインのうち、キャッシュテーブルＣＴＢＬのＬＲＵビットの数字が最も小さいキャッシュラインを選択する。これにより、追い出しデータＤＡＴＡを保持しているキャッシュラインが選択される。また、追い出し制御部ＲＣＬは、選択したキャッシュラインを示す情報（例えば、ｎウェイのうちのどのウェイのキャッシュラインかを示す情報）をキャッシュ制御部ＣＣＬに通知する。
【００７９】
キャッシュ制御部ＣＣＬは、追い出し制御部ＲＣＬにより選択されたキャッシュラインに保持されているデータＤＡＴＡ（ＤＲＡＭのデータＤＡＴＡ）を、データ保持部ＤＭＥＭから追い出す。なお、例えば、追い出しデータＤＡＴＡがストア動作等により更新されたダーティな状態である場合、キャッシュ制御部ＣＣＬは、追い出しデータＤＡＴＡを主記憶装置ＭＭＥＭ内のＤＲＡＭに書き戻す。追い出しデータＤＡＴＡがダーティでない場合（クリーンなデータＤＡＴＡである場合）、キャッシュ制御部ＣＣＬは、追い出しデータＤＡＴＡを破棄する。
【００８０】
データ保持部ＤＭＥＭからデータＤＡＴＡが追い出されることにより、データ保持部ＤＭＥＭに空き領域が生成され、キャッシュ追い出し処理が終了する。ステップＳ２０４の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、図３に示したステップＳ２２０に移る。
【００８１】
ステップＳ２０５では、追い出し制御部ＲＣＬは、追い出し候補に、ＮＶＲＡＭのデータＤＡＴＡが存在するか否かを判定する。例えば、追い出し制御部ＲＣＬは、キャッシュテーブルＣＴＢＬを参照し、要求アドレスＡＤＲで指定されるインデックスに対応するフラグＦＬＧの中から、ＮＶＲＡＭを示すフラグＦＬＧ（例えば、”１”に設定されたフラグＦＬＧ）を検索する。
【００８２】
ＮＶＲＡＭを示すフラグＦＬＧが検出された場合、ＮＶＡＲＭのデータＤＡＴＡは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのいずれかに保持されている。すなわち、ＮＶＲＡＭを示すフラグＦＬＧが検出された場合、追い出し候補にＮＶＲＡＭのデータＤＡＴＡが存在する。追い出し候補にＮＶＲＡＭのデータＤＡＴＡが存在する場合、キャッシュメモリＣＭＥＭの動作は、ステップＳ２０６に移る。
【００８３】
一方、ＮＶＲＡＭを示すフラグＦＬＧが検出されない場合、ＮＶＡＲＭのデータＤＡＴＡは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのいずれにも保持されていない。すなわち、ＤＲＡＭを示すフラグＦＬＧが検出されない場合、追い出し候補にＮＶＲＡＭのデータＤＡＴＡは存在しない。追い出し候補にＮＶＲＡＭのデータＤＡＴＡが存在しない場合、キャッシュメモリＣＭＥＭは、ステップＳ２０４の処理を実行し、キャッシュ追い出し処理を終了する。
【００８４】
ステップＳ２０６では、キャッシュメモリＣＭＥＭは、追い出し候補のＮＶＲＡＭのデータＤＡＴＡのうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。
【００８５】
例えば、追い出し制御部ＲＣＬは、要求アドレスＡＤＲで指定されるインデックスに対応するｎ個のキャッシュラインのうち、キャッシュテーブルＣＴＢＬのフラグＦＬＧがＮＶＲＡＭを示すキャッシュラインを検索対象にする。そして、追い出し制御部ＲＣＬは、検索対象のキャッシュラインのうち、キャッシュテーブルＣＴＢＬのＬＲＵビットの数字が最も小さいキャッシュラインを選択し、選択したキャッシュラインを示す情報をキャッシュ制御部ＣＣＬに通知する。これにより、追い出しデータＤＡＴＡを保持しているキャッシュラインが選択される。
【００８６】
キャッシュ制御部ＣＣＬは、追い出し制御部ＲＣＬにより選択されたキャッシュラインに保持されているデータＤＡＴＡ（ＮＶＲＡＭのデータＤＡＴＡ）を、データ保持部ＤＭＥＭから追い出す。なお、例えば、追い出しデータＤＡＴＡがダーティな状態である場合、キャッシュ制御部ＣＣＬは、追い出しデータＤＡＴＡを主記憶装置ＭＭＥＭ内のＮＶＲＡＭに書き戻す。追い出しデータＤＡＴＡがダーティでない場合（クリーンなデータＤＡＴＡである場合）、キャッシュ制御部ＣＣＬは、追い出しデータＤＡＴＡを破棄する。
【００８７】
データ保持部ＤＭＥＭからデータＤＡＴＡが追い出されることにより、データ保持部ＤＭＥＭに空き領域が生成され、キャッシュ追い出し処理が終了する。ステップＳ２０６の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、図３に示したステップＳ２２０に移る。
【００８８】
このように、キャッシュメモリＣＭＥＭは、キャッシュ比がレイテンシ比とアクセス比との積に近づくように、データ保持部ＤＭＥＭからのデータＤＡＴＡの追い出しを制御する。これにより、例えば、ＤＲＡＭのデータＤＡＴＡおよびＮＶＲＡＭのデータＤＡＴＡの一方がアクセス頻度に対して過剰にデータ保持部ＤＭＥＭに残ることを抑制できる。すなわち、データ保持部ＤＭＥＭから追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリＣＭＥＭは、平均ペナルティの増加を抑制できる。
【００８９】
なお、キャッシュ追い出し処理は、図４に示す例に限定されない。例えば、追い出し制御部ＲＣＬは、ステップＳ２０１の処理を実行する前に、追い出し候補にＤＲＡＭのデータＤＡＴＡとＮＶＲＡＭのデータＤＡＴＡとの両方が存在するか否かを判定してもよい。追い出し候補にＤＲＡＭのデータＤＡＴＡとＮＶＲＡＭのデータＤＡＴＡとの両方が存在する場合、キャッシュメモリＣＭＥＭは、図４に示す動作からステップＳ２０３、Ｓ２０５を省いた処理を実行する。なお、追い出し候補にＤＲＡＭのデータＤＡＴＡとＮＶＲＡＭのデータＤＡＴＡの一方のみが存在する場合、キャッシュメモリＣＭＥＭは、追い出し候補のデータＤＡＴＡのうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。
【００９０】
図５は、図４に示したキャッシュ追い出し処理を適用した場合とＬＲＵ方式を適用した場合との比較例を示す。すなわち、図５は、図２に示したキャッシュメモリＣＭＥＭを用いた場合と、ＬＲＵ方式のキャッシュメモリを用いた場合との比較例を示す。図５の縦軸は、ＰＡＲＳＥＣ（Princeton Application Repository for Shared-Memory Computers）ベンチマークの実行時間（単位は、秒）を示す。
【００９１】
図４に示したキャッシュ追い出し処理を適用した場合、実行時間は、約１．９６７秒であり、ＬＲＵ方式を適用した場合、実行時間は、約２．１８５秒である。図４に示したキャッシュ追い出し処理を適用することにより、ＬＲＵ方式に比べて、実行時間は約１１％短縮される。
【００９２】
また、キャッシュメモリＣＭＥＭでは、ＮＶＲＡＭに割り当てられたアドレスＡＤＲｂに対するアクセスのキャッシュミス率は、約０．５％である（図示せず）。ＬＲＵ方式では、ＮＶＲＡＭに割り当てられたアドレスＡＤＲｂに対するアクセスのキャッシュミス率は、約１％である（図示せず）。このように、ＮＶＲＡＭに割り当てられたアドレスＡＤＲｂに対するアクセスのキャッシュミス率は、約１％から約０．５％に改善される。ＮＶＲＡＭは、例えば、書き込みのコストがＤＲＡＭに比べて高い、書き込み回数に制限がある等のデメリットを有する。このため、ＮＶＲＡＭに割り当てられたアドレスＡＤＲｂに対するアクセスのキャッシュミス率を低減させることは、メリットとなる。
【００９３】
以上、図２から図５に示す実施形態においても、図１に示した実施形態と同様の効果を得ることができる。例えば、キャッシュメモリＣＭＥＭは、ＤＲＡＭ、ＮＶＲＡＭのレイテンシ比とアクセス比との積とＤＲＡＭ、ＮＶＲＡＭのキャッシュ比との比較結果に基づいて、キャッシュメモリＣＭＥＭから追い出すデータＤＡＴＡを選択する。これにより、キャッシュメモリＣＭＥＭから追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリＣＭＥＭの平均ペナルティを低減することができる。すなわち、主記憶装置ＭＥＭに記憶されたデータＤＡＴＡに対するアクセス時間を低減することができる。
【００９４】
図６は、キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。図１から図５で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
【００９５】
図６に示すキャッシュメモリＣＭＥＭ２は、ＣＰＵコア等のプロセッサコアＰＣＯＲと主記憶装置ＭＭＥＭ２との間に配置され、メモリ制御部ＭＣＬを介して主記憶装置ＭＭＥＭ２にアクセスする。なお、メモリ制御部ＭＣＬは、キャッシュメモリＣＭＥＭ２と主記憶装置ＭＭＥＭ２との間のデータ転送等を実行する。
【００９６】
キャッシュメモリＣＭＥＭ２、プロセッサコアＰＣＯＲおよびメモリ制御部ＭＣＬは、ＣＰＵ等の演算処理装置ＰＵ２に搭載される。なお、例えば、キャッシュメモリが階層構造を有する場合、キャッシュメモリＣＭＥＭ２は、演算処理装置ＰＵ２の外部に配置されてもよい。主記憶装置ＭＭＥＭ２は、レイテンシが互いに異なる複数のメモリデバイスＤＲＡＭ、ＣＮＶＲＡＭを有する。例えば、メモリデバイスＤＲＡＭは、ＤＲＡＭである。メモリデバイスＣＮＶＲＡＭは、レイテンシがＤＲＡＭより大きいＮＶＲＡＭと、ＮＶＲＡＭに接続されたキャッシュメモリＣＭとを有する。このため、メモリデバイスＣＮＶＲＡＭのレイテンシは、キャッシュメモリＣＭがキャッシュヒットする場合とキャッシュミスする場合とで異なる。すなわち、メモリデバイスＣＮＶＲＡＭは、レイテンシが変化する第１メモリデバイスの一例である。
【００９７】
キャッシュメモリＣＭＥＭ２は、複数のメモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのいずれかに記憶されたデータＤＡＴＡの一部を保持するデータ保持部ＤＭＥＭと、追い出し制御部ＲＣＬ２と、キャッシュ制御部ＣＣＬと、レイテンシ計測部ＭＥＡＳとを有する。データ保持部ＤＭＥＭおよびキャッシュ制御部ＣＣＬは、図２に示したデータ保持部ＤＭＥＭおよびキャッシュ制御部ＣＣＬと同一または同様である。
【００９８】
レイテンシ計測部ＭＥＡＳは、メモリデバイスＣＮＶＲＡＭのレイテンシを計測する。例えば、レイテンシ計測部ＭＥＡＳは、アクセス要求が演算処理装置ＰＵ２から主記憶装置ＭＭＥＭ２に発行されてからデータ転送までの時間（主記憶装置ＭＭＥＭ２へのアクセス時間）をレイテンシとして計測する。そして、レイテンシ計測部ＭＥＡＳは、計測したレイテンシを追い出し制御部ＲＣＬ２に通知する。
【００９９】
追い出し制御部ＲＣＬ２は、レイテンシ計測部ＭＥＡＳで計測したレイテンシの平均値を用いて、複数のメモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのレイテンシの比を算出する。例えば、追い出し制御部ＲＣＬ２は、複数のカウンタＣＴ（ＣＴａ、ＣＴｂ）と、レジスタ部ＬＲＥＧ２、ＣＲＥＧとを有する。追い出し制御部ＲＣＬ２は、図２に示したレジスタ部ＬＲＥＧの代わりにレジスタ部ＬＲＥＧ２を有することを除いて、図２に示した追い出し制御部ＲＣＬと同一または同様である。カウンタＣＴａ、ＣＴｂおよびレジスタ部ＣＲＥＧは、図２に示したカウンタＣＴａ、ＣＴｂおよびレジスタ部ＣＲＥＧと同一または同様である。
【０１００】
レジスタ部ＬＲＥＧ２は、レイテンシ計測部ＭＥＡＳによるレイテンシの計測回数をカウントするカウンタＣＴＰと、レイテンシ計測部ＭＥＡＳで計測されたレイテンシの総和（累積値）を保持するレジスタＴＲＥＧとを有する。例えば、レジスタ部ＬＲＥＧ２は、レジスタＴＲＥＧに保持されたレイテンシの累積値をカウンタＣＴＰのカウント値ＣＴＰで除算することにより、メモリデバイスＣＮＶＲＡＭのレイテンシの平均値を算出する。
【０１０１】
そして、レジスタ部ＬＲＥＧ２は、メモリデバイスＤＲＡＭの仕様等により予め決められたレイテンシの値と、メモリデバイスＣＮＶＲＡＭのレイテンシの平均値とを保持する。これにより、メモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのレイテンシ比がレジスタ部ＬＲＥＧ２に保持される。カウンタＣＴＰおよびレジスタＴＲＥＧは、定期的にリセットされる。
【０１０２】
なお、キャッシュメモリＣＭＥＭ２の構成は、図６に示す例に限定されない。例えば、カウンタＣＴＰおよびレジスタＴＲＥＧは、レジスタ部ＬＲＥＧ２の外部に設けられてもよい。あるいは、レジスタ部ＬＲＥＧ２は、レイテンシ計測部ＭＥＡＳで計測されたレイテンシをリングバッファ等に記録し、リングバッファ等に記録したレイテンシの平均を算出してもよい。
【０１０３】
図７は、図６に示したキャッシュメモリＣＭＥＭ２の動作の一例を示す。図７に示す動作は、図３に示した動作にステップＳ２３０の処理が追加されていることを除いて、図３に示した動作と同一または同様である。図３で説明した処理（ステップＳ２３０以外の処理）については、詳細な説明を省略する。キャッシュメモリＣＭＥＭ２は、ステップＳ２２０の処理を実行した後に、ステップＳ２３０の処理を実行する。
【０１０４】
ステップＳ２３０では、レイテンシ計測部ＭＥＡＳは、メモリデバイスＣＮＶＲＡＭのレイテンシを計測する。そして、追い出し制御部ＲＣＬ２は、図６で説明したように、レジスタ部ＬＲＥＧ２に保持されているメモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのレイテンシ比を更新する。なお、メモリデバイスＣＮＶＲＡＭのレイテンシの計測は、例えば、ステップＳ２２０の処理の実行時（メモリデバイスＣＮＶＲＡＭにアクセス要求を発行したとき）に開始される。
【０１０５】
ステップＳ２３０の処理が実行された後、キャッシュメモリＣＭＥＭの動作は、ステップＳ２４０に移る。なお、アクセス対象がメモリデバイスＣＮＶＲＡＭ（レイテンシが変化するメモリデバイス）でない場合、ステップＳ２３０の処理は、実行されない。この場合、ステップＳ２２０の処理が実行された後、ステップＳ２３０の処理がスキップされ、ステップＳ２４０の処理が実行される。
【０１０６】
なお、キャッシュメモリＣＭＥＭの動作は、図７に示す例に限定されない。例えば、キャッシュメモリＣＭＥＭは、ステップＳ２２０の処理を実行する前に、ステップＳ２６０の処理（キャッシュ比の更新）を実行してもよい。
【０１０７】
以上、図６から図７に示す実施形態においても、図２から図５に示した実施形態と同様の効果を得ることができる。例えば、キャッシュメモリＣＭＥＭ２は、メモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのレイテンシ比とアクセス比との積とメモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのキャッシュ比とを比較する。そして、キャッシュメモリＣＭＥＭ２は、比較結果に基づいて、キャッシュメモリＣＭＥＭ２から追い出すデータＤＡＴＡを選択する。これにより、キャッシュメモリＣＭＥＭ２から追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリＣＭＥＭ２の平均ペナルティを低減することができる。すなわち、主記憶装置ＭＥＭ２に記憶されたデータＤＡＴＡに対するアクセス時間を低減することができる。
【０１０８】
さらに、キャッシュメモリＣＭＥＭ２は、メモリデバイスＣＮＶＲＡＭのレイテンシを計測して、メモリデバイスＤＲＡＭ、ＣＮＶＲＡＭのレイテンシ比を随時更新する。これにより、キャッシュメモリＣＭＥＭ２は、レイテンシが変化するメモリデバイスＣＮＶＲＡＭを含む主記憶装置ＭＭＥＭ２で使用される場合でも、キャッシュメモリＣＭＥＭ２から追い出すデータＤＡＴＡを適切に選択することができる。
【０１０９】
図８は、キャッシュメモリおよびキャッシュメモリの制御方法の別の実施形態を示す図である。図１から図７で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
【０１１０】
図８に示すキャッシュメモリＣＭＥＭ３は、ＣＰＵコア等のプロセッサコアＰＣＯＲと主記憶装置ＭＭＥＭ３との間に配置され、メモリ制御部ＭＣＬを介して主記憶装置ＭＭＥＭ３にアクセスする。なお、メモリ制御部ＭＣＬは、キャッシュメモリＣＭＥＭ３と主記憶装置ＭＭＥＭ３との間のデータ転送等を実行する。
【０１１１】
キャッシュメモリＣＭＥＭ３、プロセッサコアＰＣＯＲおよびメモリ制御部ＭＣＬは、ＣＰＵ等の演算処理装置ＰＵ３に搭載される。なお、例えば、キャッシュメモリが階層構造を有する場合、キャッシュメモリＣＭＥＭ３は、演算処理装置ＰＵ３の外部に配置されてもよい。主記憶装置ＭＭＥＭ３は、レイテンシが互いに異なる複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃを有する。アドレスＡＤＲａ、ＡＤＲｂ、ＡＤＲｃは、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃに割り当てられたそれぞれのアドレスＡＤＲを示す。
【０１１２】
キャッシュメモリＣＭＥＭ３は、複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのいずれかに記憶されたデータＤＡＴＡの一部を保持するデータ保持部ＤＭＥＭと、追い出し制御部ＲＣＬ３と、キャッシュ制御部ＣＣＬとを有する。データ保持部ＤＭＥＭおよびキャッシュ制御部ＣＣＬは、図２に示したデータ保持部ＤＭＥＭおよびキャッシュ制御部ＣＣＬと同一または同様である。
【０１１３】
追い出し制御部ＲＣＬ３は、例えば、主記憶装置ＭＭＥＭ３へのアクセスを複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃ毎にカウントする複数のカウンタＣＴ（ＣＴａ、ＣＴｂ、ＣＴｃ）と、レジスタ部ＬＲＥＧ３、ＣＲＥＧ２とを有する。例えば、カウンタＣＴｃは、追い出し制御部ＲＣＬ３に転送された要求アドレスＡＤＲがアドレスＡＤＲｃを示す場合、カウントアップして、メモリデバイスＭＤＥＶｃへのアクセスをカウントする。カウンタＣＴは、定期的にリセットされる。
【０１１４】
レジスタ部ＣＲＥＧ２は、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのキャッシュ比を示す情報を保持する。例えば、レジスタ部ＣＲＥＧ２は、アップダウンカウンタＵＤＣ（ＵＤＣａ、ＵＤＣｂ、ＵＤＣｃ）を有する。
【０１１５】
アップダウンカウンタＵＤＣａは、メモリデバイスＭＤＥＶａからキャッシュメモリＣＭＥＭ３に転送されたデータＤＡＴＡ（以下、メモリデバイスＭＤＥＶａのデータＤＡＴＡとも称する）を保持しているキャッシュラインの数をカウントする。アップダウンカウンタＵＤＣｂは、メモリデバイスＭＤＥＶｂからキャッシュメモリＣＭＥＭ３に転送されたデータＤＡＴＡ（以下、メモリデバイスＭＤＥＶｂのデータＤＡＴＡとも称する）を保持しているキャッシュラインの数をカウントする。アップダウンカウンタＵＤＣｃは、メモリデバイスＭＤＥＶｃからキャッシュメモリＣＭＥＭ３に転送されたデータＤＡＴＡ（以下、メモリデバイスＭＤＥＶｃのデータＤＡＴＡとも称する）を保持しているキャッシュラインの数をカウントする。そして、レジスタ部ＣＲＥＧ２は、各アップダウンカウンタＵＤＣのカウント値ＵＤＣａ、ＵＤＣｂ、ＵＤＣｃ（すなわち、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのキャッシュ比）を保持する。各アップダウンカウンタＵＤＣは、例えば、キャッシュメモリＣＭＥＭ３のキャッシュラインの数がアップダウンカウンタＵＤＣでカウント可能な数より大きい場合、定期的にリセットされる。
【０１１６】
レジスタ部ＬＲＥＧ３は、複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのレイテンシ比を示す情報を保持する。例えば、レジスタ部ＬＲＥＧ３は、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃの仕様等により予め決められたそれぞれのレイテンシの値（すなわち、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのレイテンシ比）を保持する。例えば、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのそれぞれのレイテンシは、ファームウェア等からパラメータとして追い出し制御部ＲＣＬ３に与えられる。
【０１１７】
追い出し制御部ＲＣＬ３は、例えば、複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのレイテンシ比と複数のメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのアクセス比との積を、レジスタ部ＬＲＥＧ２およびカウンタＣＴを用いて算出する。そして、追い出し制御部ＲＣＬ３は、レイテンシ比とアクセス比との積とキャッシュ比とを比較し、比較結果に基づいて、追い出しデータＤＡＴＡを選択する。
【０１１８】
なお、キャッシュメモリＣＭＥＭ３の構成は、図８に示す例に限定されない。例えば、キャッシュメモリＣＭＥＭ３は、図６に示したレイテンシ計測部ＭＥＡＳ、カウンタＣＴＰおよびレジスタＴＲＥＧを有してもよい。
【０１１９】
図９は、図８に示したキャッシュメモリＣＭＥＭ３の動作の一例を示す。なお、キャッシュ追い出し処理（図３に示したステップＳ２００の処理）以外のキャッシュメモリＣＭＥＭ３の動作は、図３に示した動作で説明される。したがって、図９は、キャッシュ追い出し処理の一例を示す。なお、図９に示す動作は、メモリデバイスＭＤＥＶａのデータＤＡＴＡ、メモリデバイスＭＤＥＶｂのデータＤＡＴＡ、メモリデバイスＭＤＥＶｃのデータＤＡＴＡが追い出し候補に存在する場合のキャッシュ追い出し処理の一例である。
【０１２０】
ステップＳ２１０の処理は、図３に示したステップＳ１８０の処理において空き領域が無いと判定された場合に、実行される。
【０１２１】
ステップＳ２１０では、追い出し制御部ＲＣＬは、レイテンシ比（Ｄａ：Ｄｂ：Ｄｃ）とアクセス比（Ａａ：Ａｂ：Ａｃ）とのメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃ毎の積を正規化する。
【０１２２】
レイテンシ比の各項の値Ｄａ、Ｄｂ、Ｄｃは、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのレイテンシにそれぞれ対応する。また、アクセス比の各項の値Ａａ、Ａｂ、Ａｃは、カウンタＣＴａ、ＣＴｂ、ＣＴｃのカウント値ＣＴａ、ＣＴｂ、ＣＴｃにそれぞれ対応する。
【０１２３】
レイテンシ比（Ｄａ：Ｄｂ：Ｄｃ）とアクセス比（Ａａ：Ａｂ：Ａｃ）との積を正規化した場合の各項の値Ｔａ、Ｔｂ、Ｔｃは、式（２）から式（４）でそれぞれ表される。
Ｔａ＝（Ａａ×Ｄａ）／（Ａａ×Ｄａ＋Ａｂ×Ｄｂ＋Ａｃ×Ｄｃ）  ・・・（２）
Ｔｂ＝（Ａｂ×Ｄｂ）／（Ａａ×Ｄａ＋Ａｂ×Ｄｂ＋Ａｃ×Ｄｃ）  ・・・（３）
Ｔｃ＝（Ａｃ×Ｄｃ）／（Ａａ×Ｄａ＋Ａｂ×Ｄｂ＋Ａｃ×Ｄｃ）  ・・・（４）
ステップＳ２１０の処理が実行された後、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１１に移る。
【０１２４】
ステップＳ２１１では、追い出し制御部ＲＣＬは、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのキャッシュ比（Ｃａ：Ｃｂ：Ｃｃ）を正規化する。
【０１２５】
キャッシュ比の各項の値Ｃａ、Ｃｂ、Ｃｃのうち、値Ｃａは、メモリデバイスＭＤＥＶａのデータＤＡＴＡを保持しているキャッシュラインの数に対応し、値Ｃｂは、メモリデバイスＭＤＥＶｂのデータＤＡＴＡを保持しているキャッシュラインの数に対応する。そして、値Ｃｃは、メモリデバイスＭＤＥＶｃのデータＤＡＴＡを保持しているキャッシュラインの数に対応する。
【０１２６】
キャッシュ比（Ｃａ：Ｃｂ：Ｃｃ）を正規化した場合の各項の値ＮＣａ、ＮＣｂ、ＮＣｃは、式（５）から式（７）でそれぞれ表される。
ＮＣａ＝Ｃａ／（Ｃａ＋Ｃｂ＋Ｃｃ）  ・・・（５）
ＮＣｂ＝Ｃｂ／（Ｃａ＋Ｃｂ＋Ｃｃ）  ・・・（６）
ＮＣｃ＝Ｃｃ／（Ｃａ＋Ｃｂ＋Ｃｃ）  ・・・（７）
ステップＳ２１１の処理が実行された後、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１２に移る。
【０１２７】
ステップＳ２１２では、追い出し制御部ＲＣＬは、各値ＮＣを各値Ｔで除算して得られる複数の除算値（ＮＣａ／Ｔａ、ＮＣｂ／Ｔｂ、ＮＣｃ／Ｔｃ）の最大値が値ＮＣａを値Ｔａで除算した値（ＮＣａ／Ｔａ）か否かを判定する。
【０１２８】
値ＮＣａを値Ｔａで除算した値（ＮＣａ／Ｔａ）が最大値である場合、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１４に移る。一方、値ＮＣａを値Ｔａで除算した値（ＮＣａ／Ｔａ）が最大値でない場合、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１３に移る。
【０１２９】
ステップＳ２１３では、複数の除算値（ＮＣａ／Ｔａ、ＮＣｂ／Ｔｂ、ＮＣｃ／Ｔｃ）の最大値が値ＮＣｂを値Ｔｂで除算した値（ＮＣｂ／Ｔｂ）か否かを判定する。値ＮＣｂを値Ｔｂで除算した値（ＮＣｂ／Ｔｂ）が最大値である場合、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１５に移る。一方、値ＮＣｂを値Ｔｂで除算した値（ＮＣｂ／Ｔｂ）が最大値でない場合、キャッシュメモリＣＭＥＭ３の動作は、ステップＳ２１６に移る。
【０１３０】
ステップＳ２１４では、キャッシュメモリＣＭＥＭ３は、追い出し候補のメモリデバイスＭＤＥＶａのデータＤＡＴＡのうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。データ保持部ＤＭＥＭからデータＤＡＴＡが追い出されることにより、データ保持部ＤＭＥＭに空き領域が生成され、キャッシュ追い出し処理が終了する。ステップＳ２１４の処理が実行された後、キャッシュメモリＣＭＥＭ３の動作は、図３に示したステップＳ２２０に移る。
【０１３１】
ステップＳ２１５では、キャッシュメモリＣＭＥＭ３は、追い出し候補のメモリデバイスＭＤＥＶｂのデータＤＡＴＡのうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。データ保持部ＤＭＥＭからデータＤＡＴＡが追い出されることにより、データ保持部ＤＭＥＭに空き領域が生成され、キャッシュ追い出し処理が終了する。ステップＳ２１５の処理が実行された後、キャッシュメモリＣＭＥＭ３の動作は、図３に示したステップＳ２２０に移る。
【０１３２】
ステップＳ２１６では、キャッシュメモリＣＭＥＭ３は、追い出し候補のメモリデバイスＭＤＥＶｃのデータＤＡＴＡのうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。データ保持部ＤＭＥＭからデータＤＡＴＡが追い出されることにより、データ保持部ＤＭＥＭに空き領域が生成され、キャッシュ追い出し処理が終了する。ステップＳ２１６の処理が実行された後、キャッシュメモリＣＭＥＭ３の動作は、図３に示したステップＳ２２０に移る。
【０１３３】
このように、キャッシュメモリＣＭＥＭ３は、各値ＮＣを各値Ｔで除算して得られる複数の除算値（ＮＣａ／Ｔａ、ＮＣｂ／Ｔｂ、ＮＣｃ／Ｔｃ）のうちの最大値に対応するメモリデバイスＭＤＥＶのデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。これにより、例えば、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのそれぞれから転送されたデータＤＡＴＡがアクセス頻度に対して過剰にデータ保持部ＤＭＥＭに残ることを抑制できる。すなわち、データ保持部ＤＭＥＭから追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリＣＭＥＭ３は、平均ペナルティの増加を抑制できる。
【０１３４】
なお、キャッシュ追い出し処理は、図９に示す例に限定されない。例えば、キャッシュメモリＣＭＥＭ３は、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのうちの１つから転送されたデータＤＡＴＡのみが追い出し候補に存在する場合、追い出し候補のうち、ＬＲＵが最も低いデータＤＡＴＡを追い出す。
【０１３５】
また、キャッシュメモリＣＭＥＭ３は、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのうちの２つから転送されたデータＤＡＴＡのみが追い出し候補に存在する場合、２つのメモリデバイスＭＤＥＶに対応する除算値（ＮＣ／Ｔ）を比較する。そして、キャッシュメモリＣＭＥＭ３は、２つのメモリデバイスＭＤＥＶに対応する除算値（ＮＣ／Ｔ）のうち、大きい方の除算値に対応するメモリデバイスＭＤＥＶのデータＤＡＴＡを追い出す。
【０１３６】
あるいは、キャッシュメモリＣＭＥＭ３は、主記憶装置ＭＭＥＭ３内のメモリデバイスＭＤＥＶの数が４つ以上の場合、複数のメモリデバイスＭＤＥＶにそれぞれ対応する複数の除算値（ＮＣ／Ｔ）のうち、最大値に対応するメモリデバイスＭＤＥＶを選択する。そして、キャッシュメモリＣＭＥＭ３は、選択したメモリデバイスＭＤＥＶのデータＤＡＴＡ（かつ、追い出し候補）のうち、ＬＲＵが最も低いデータＤＡＴＡをデータ保持部ＤＭＥＭから追い出す。
【０１３７】
以上、図８から図９に示す実施形態においても、図２から図５に示した実施形態と同様の効果を得ることができる。例えば、キャッシュメモリＣＭＥＭ３は、メモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのレイテンシ比とアクセス比との積とメモリデバイスＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃのキャッシュ比とを比較する。そして、キャッシュメモリＣＭＥＭ３は、比較結果に基づいて、キャッシュメモリＣＭＥＭ３から追い出すデータＤＡＴＡを選択する。これにより、キャッシュメモリＣＭＥＭ３から追い出すデータＤＡＴＡを適切に選択することができる。この結果、キャッシュメモリＣＭＥＭ３の平均ペナルティを低減することができる。すなわち、主記憶装置ＭＥＭ３に記憶されたデータＤＡＴＡに対するアクセス時間を低減することができる。
【０１３８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１３９】
１０‥キャッシュメモリ；１２‥データ保持部；１４‥制御部；２０‥プロセッサコア；１００‥演算処理装置；２００‥記憶装置；２１０、２１０Ａ、２１０Ｂ‥メモリデバイス；ＣＲＥＧ、ＣＲＥＧ２、ＬＲＥＧ、ＬＲＥＧ２、ＬＲＥＧ３‥レジスタ部；ＣＮＶＲＡＭ、ＤＲＡＭ、ＭＤＥＶａ、ＭＤＥＶｂ、ＭＤＥＶｃ、ＮＶＲＡＭ‥メモリデバイス；ＣＴａ、ＣＴｂ、ＣＴｃ、ＣＴＰ‥カウンタ；ＣＴＢＬ‥キャッシュテーブル；ＤＭＥＭ‥データ保持部；ＭＣＬ‥メモリ制御部；ＭＭＥＭ、ＭＭＥＭ２、ＭＭＥＭ３‥主記憶装置；ＰＣＯＲ‥プロセッサコア；ＰＵ、ＰＵ２、ＰＵ３‥演算処理装置；ＲＣＬ、ＲＣＬ２、ＲＣＬ３‥追い出し制御；ＴＲＥＧ‥レジスタ；ＵＤＣａ、ＵＤＣｂ‥アップダウンカウンタ；
【図１】
0006485320.tif 000002
【図２】
0006485320.tif 000003
【図３】
0006485320.tif 000004
【図４】
0006485320.tif 000005
【図５】
0006485320.tif 000006
【図６】
0006485320.tif 000007
【図７】
0006485320.tif 000008
【図８】
0006485320.tif 000009
【図９】
0006485320.tif 000010