(57)【特許請求の範囲】
【請求項１】
所定のデータ長を単位としてデータの読み書きが可能なメモリアレイと、
前記メモリアレイから前記所定のデータ長を単位とするいずれかのデータを読み出して格納するロウバッファと、
該ロウバッファに記憶された前記いずれかのデータの一部を部分データとして抽出して記憶するキャッシュメモリと、
前記メモリアレイに対するアクセス要求のアクセス対象データが前記キャッシュメモリに記憶されている割合に応じて、前記キャッシュメモリにおいて前記部分データ又は前記部分データが更新されて得られる更新部分データが削除可能とされる削除可能範囲を設定し、前記部分データ又は前記更新部分データを前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能とする際に、前記ロウバッファに前記部分データの抽出元のデータが記憶されていない場合に、前記メモリアレイから前記部分データの抽出元のデータを読み出して前記ロウバッファに記憶させて、前記部分データ又は前記更新部分データを用いて部分的に上書きしてから前記メモリアレイに書き込み、前記ロウバッファに前記部分データの抽出元のデータが記憶されている場合に、前記ロウバッファに記憶されている前記部分データの抽出元のデータについて、前記部分データ又は前記更新部分データを用いて部分的に上書きしてから前記メモリアレイに書き込み、前記ロウバッファに抽出元のデータが記憶されている前記部分データ又は前記更新部分データを優先して前記キャッシュメモリにおいて設定した前記削除可能範囲から削除する処理を行う制御手段と、を備えたことを特徴とする記憶制御システム。
【請求項２】
前記キャッシュメモリに、最後に書き込み又は更新されたタイミングが最も古い第１のデータと、２番目に最も古い第２のデータが記憶されており、前記第１のデータの抽出元のデータ又は前記第２のデータの抽出元のデータのいずれかが前記ロウバッファに記憶されている場合には、前記第１又は第２のデータのうち前記ロウバッファに記憶されている抽出元のデータに対応するほうのデータが前記削除可能とされるデータとして優先的に選択される、
ことを特徴とする請求項１に記載の記憶制御システム。
【請求項３】
所定のデータ長を単位としてデータの読み書きが可能なメモリアレイと、
前記メモリアレイから前記所定のデータ長を単位とするいずれかのデータを読み出して格納するロウバッファと、
該ロウバッファに記憶された前記いずれかのデータの一部を部分データとして抽出して記憶するキャッシュメモリと、
前記メモリアレイに対するアクセス要求のアクセス対象データが前記キャッシュメモリに記憶されている割合に応じて、前記キャッシュメモリにおいて前記部分データ又は前記部分データが更新されて得られる更新部分データが削除可能とされる削除可能範囲を設定する設定手段と、
前記部分データ又は前記更新部分データを前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能とする際に、前記ロウバッファに前記メモリアレイ上のどの記憶アドレスのデータが記憶されるかを予測する制御手段と、
前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能な１つ以上の前記部分データ又は前記更新部分データの各アドレスを前記メモリアレイ上の各アドレスに変換するアドレス変換手段と、
前記変換された各アドレスと前記予測されたデータのアドレスとにより前記所定のデータ長を単位とするアドレス部分の一致を検出し、該一致が検出されたアドレスに対応する前記部分データ又は前記更新部分データを優先して前記キャッシュメモリにおいて設定した前記削除可能範囲から削除させるアドレス比較手段と、
を備えたことを特徴とする置換方式。
【請求項４】
前記メモリアレイから前記ロウバッファに読み出されるべきデータのアクセスリクエストを予め定められた複数リクエスト分一時保持するメモリリクエストキューをさらに備え、
前記制御手段は、前記メモリリクエストキューに一時保持されたリクエストを所定の規則に従って読み出すことにより、該リクエストに対応するデータを前記メモリアレイから前記ロウバッファに読み出し、前記メモリリクエストキューに一時保持されたリクエストのうち前記所定のデータ長を単位とするアドレスが一致するリクエストをまとめてアクセス処理し、前記メモリリクエストキューから次に読み出されるリクエストを判定することにより前記ロウバッファに前記メモリアレイ上のどの記憶アドレスのデータが記憶されるかを予測する、
ことを特徴とする請求項３に記載の置換方式。
【請求項５】
前記アドレス比較手段は、前記一致が検出されたアドレスに対応する前記部分データ又は前記更新部分データを優先して前記キャッシュメモリにおいて設定した前記削除可能範囲から削除し、該部分データ又は更新部分データの前記メモリアレイへの書き戻しのリクエストを前記メモリリクエストキューに格納する、
ことを特徴とする請求項４に記載の置換方式。
【請求項６】
メモリアレイに対して所定のデータ長を単位としてデータの読み書きを行い、
前記メモリアレイから前記所定のデータ長を単位とするいずれかのデータを読み出してロウバッファに格納し、
該ロウバッファに記憶された前記いずれかのデータの一部を部分データとして抽出してキャッシュメモリに記憶し、
前記メモリアレイに対するアクセス要求のアクセス対象データが前記キャッシュメモリに記憶されている割合に応じて、前記キャッシュメモリにおいて前記部分データ又は前記部分データが更新されて得られる更新部分データが削除可能とされる削除可能範囲を設定し、
前記部分データ又は前記更新部分データを前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能とする際に、前記ロウバッファに前記部分データの抽出元のデータが記憶されていない場合に、前記メモリアレイから前記部分データの抽出元のデータを読み出して前記ロウバッファに記憶させて、前記部分データ又は前記更新部分データを用いて部分的に上書きしてから前記メモリアレイに書き込み、
前記ロウバッファに前記部分データの抽出元のデータが記憶されている場合に、前記ロウバッファに記憶されている前記部分データの抽出元のデータについて、前記部分データ又は前記更新部分データを用いて部分的に上書きしてから前記メモリアレイに書き込み、
前記ロウバッファに抽出元のデータが記憶されている前記部分データ又は前記更新部分データを優先して前記キャッシュメモリにおいて設定した前記削除可能範囲から削除する、
ことを特徴とする記憶制御方法。
【請求項７】
メモリアレイに対して所定のデータ長を単位としてデータの読み書きを行い、
前記メモリアレイから前記所定のデータ長を単位とするいずれかのデータを読み出してロウバッファに格納し、
該ロウバッファに記憶された前記いずれかのデータの一部を部分データとして抽出してキャッシュメモリに記憶し、
前記メモリアレイに対するアクセス要求のアクセス対象データが前記キャッシュメモリに記憶されている割合に応じて、前記キャッシュメモリにおいて前記部分データ又は前記部分データが更新されて得られる更新部分データが削除可能とされる削除可能範囲を設定し、
前記部分データ又は前記更新部分データを前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能とする際に、前記ロウバッファに前記メモリアレイ上のどの記憶アドレスのデータが記憶されるかを予測し、
前記キャッシュメモリにおいて設定した前記削除可能範囲から削除可能な前記部分データ又は前記更新部分データの各アドレスを前記メモリアレイ上の各アドレスに変換し、
前記変換された各アドレスと前記予測されたデータのアドレスとにより前記所定のデータ長を単位とするアドレス部分の一致を検出し、該一致が検出されたアドレスに対応する前記部分データ又は前記更新部分データを優先して前記キャッシュメモリにおいて設定した前記削除可能範囲から削除させる、
ことを特徴とするキャッシュメモリの置換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ機能を有する記憶制御システムおよび方法、ならびに置換方式および方法に関する。
【背景技術】
【０００２】
ダイナミックランダムアクセスメモリ（以下、「ＤＲＡＭ」と呼ぶ）にデータを書き込む際には、該当するバンクのロウアドレス（ここでは「ロウアドレスＡ」と呼ぶ）をロウバッファに読み出し、データをカラムアドレスで指定される内容に書き込む。このとき、一度ロウバッファにロウアドレスを格納すると、同一ロウ内では異なるカラムアドレスにアクセス可能となる。一方、同一バンク内で異なるロウアドレス（ここでは「ロウアドレスＢ」と呼ぶ）にアクセスする必要が生じた場合、現在ロウバッファにあるロウアドレスＡを書き戻し、ロウアドレスＢをロウバッファに格納しなければならない。ＤＲＡＭにおけるこのような書戻し動作は、プリチャージと呼ばれる。
【０００３】
メモリコントローラ内にあるリクエストキューにおいて、原則としてリクエストキュー内で最も長い時間待たされているリクエスト（メモリアクセス要求）から順に、各リクエストが優先的に発行される。上記のＤＲＡＭの特性を活かし効率的にアクセスするため、同一のロウアドレスを有する複数のリクエストはまとめて発行されるスケジューリング方式が用いられる。メモリコントローラは、次にどのロウアドレスをロウバッファに格納すべきかを、このアルゴリズムに従って決定する。
【０００４】
ＤＭＡによる連続アドレスの予測や過去のアクセス履歴に基づいてキャッシュからの追い出しを行なう方式あるいは主記憶アクセス数を減らす方式なども提案されている。（特許文献１、特許文献２）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９-２４４９５７号公報
【特許文献２】特開平６-１０３１６９号公報
【特許文献３】特表２００５−５１８６０６号公報
【特許文献４】特開２００５−１７４３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来は、キャッシュメモリの置換方式はＤＲＡＭのロウバッファにどのロウアドレスが格納されるかの考慮が不十分であった。したがって、近い将来ロウバッファに格納されるロウアドレスがＢであったとしても、キャッシュから追い出されるラインはＢ以外のロウアドレスである可能性が高い。このような場合には、ロウアドレスＢを一度プリチャージしたのちに他のロウアドレスをロウバッファに格納することが必要になる。したがって、従来のスケジューリング方式は、キャッシュの追出し制御が、メモリにおけるプリチャージの回数を増加させ、消費電力を増加させる原因となってしまうという問題点を有していた。
【０００７】
そこで、本発明の１つの側面では、プリチャージ数の削減を図ることを目的とする。ひいては、メモリの消費電力を削減することを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、所定のデータ長を単位としてデータの読み書きが可能なメモリアレイと、メモリアレイから所定のデータ長を単位とするいずれかのデータを読み出して格納するロウバッファと、ロウバッファに記憶されたいずれかのデータの一部を部分データとして抽出して記憶するキャッシュメモリと、メモリアレイに対するアクセス要求のアクセス対象データがキャッシュメモリに記憶されている割合に応じて、キャッシュメモリにおいて部分データ又は部分データが更新されて得られる更新部分データが削除可能とされる削除可能範囲を設定し、部分データ又は更新部分データをキャッシュメモリにおいて設定した削除可能範囲から削除可能とする際に、ロウバッファに部分データの抽出元のデータが記憶されていない場合に、メモリアレイから部分データの抽出元のデータを読み出してロウバッファに記憶させて、部分データ又は更新部分データを用いて部分的に上書きしてからメモリアレイに書き込み、ロウバッファに部分データの抽出元のデータが記憶されている場合に、ロウバッファに記憶されている部分データの抽出元のデータについて、部分データ又は更新部分データを用いて部分的に上書きしてからメモリアレイに書き込み、ロウバッファに抽出元のデータが記憶されている部分データ又は更新部分データを優先してキャッシュメモリにおいて設定した削除可能範囲から削除する処理を行う制御手段とを備える。
【発明の効果】
【０００９】
プリチャージ数の削減を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】ＤＲＡＭの構成図である。
【図２】一般的なメモリアクセスコントローラの構成図である。
【図３】メモリアクセス・スケジューリングアルゴリズム：Ｆｉｒｓｔ−Ｃｏｍｅ  Ｆｉｒｓｔ−Ｓｅｒｖｅ（ＦＣＦＳ）の説明図である。
【図４】メモリアクセス・スケジューリングアルゴリズム：Ｆｉｒｓｔ−Ｒｅａｄｙ  Ｆｉｒｓｔ−Ｃｏｍｅ  Ｆｉｒｓｔ−Ｓｅｒｖｅ（ＦＲ−ＦＣＦＳ）の説明図である。
【図５】一般的に考えられるキャッシュライン置換方式の説明図である。
【図６】本実施形態の第１のブロック図である。
【図７】本実施形態のキャッシュライン置換方式の説明図（その１）である。
【図８】本実施形態のキャッシュライン置換方式の説明図（その２）である。
【図９】本実施形態の第２のブロック図である。
【図１０】本実施形態のハードウェア構成図である。
【図１１】キャッシュミスの特性に応じて追い出し対象範囲を決定する方式の説明図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１は、ＤＲＡＭの構成図である。
ＤＲＡＭのメモリアレイ（図中、「Ｍｅｍｏｒｙ  Ａｒｒａｙ」と表記。以下の図でも同様。）１０１には、ロウバッファ（図中、「Ｒｏｗ  Ｂｕｆｆｅｒ」と表記。以下の図でも同様。）１０２が接続される。また、メモリアレイ１０１には、ロウデコーダ（図中、「Ｒｏｗ  Ｄｅｃｏｄｅｒ」と表記。以下の図でも同様。）１０３が接続される。また、ロウバッファ１０２には、カラムデコーダ（図中、「Ｃｏｌｕｍｎ  Ｄｅｃｏｄｅｒ」と表記。以下の図でも同様。）１０４が接続される。ロウバッファ１０２は例えば、１０２４から２０４８バイト程度の記憶容量を有する。
【００１２】
ＤＲＡＭアクセス（図中、「Ａｃｃｅｓｓ」と表記。）の読み出しでは、ロウデコーダ１０３にアクセスして要求ページデータをロウバッファ１０２に格納する。続いて、カラムデコーダ１０４にアクセスして、ロウバッファ１０２内の要求データ（図中、「Ｄａｔａ」と表記。）にアクセスする。このアクセス動作は、ＤＲＡＭアクセスが読出し要求である場合には、ロウバッファ１０２内の要求データを読み出す動作である。一方、ＤＲＡＭアクセスが書込み要求である場合には、ロウバッファ１０２内の要求データに対して、書き込むべきデータを上書きする動作である。
【００１３】
次にＤＲＡＭアクセスの書込みでは、ロウバッファ１０２にアクセスするデータがすでに格納されているデータと同じロウアドレスの場合、ロウバッファ１０２にあるデータにアクセスして要求データがメモリアレイ１０１に書き込まれる。一方、ロウバッファ１０２に格納されているデータアドレス以外のアドレスがアクセスされた場合には、ロウバッファ１０２にあるデータをメモリアレイ１０１に書き戻す動作が実行される。この書戻し動作は、プリチャージと呼ばれる。そして、その書戻し動作の後に、必要なページデータをロウバッファ１０２に格納し、続いてロウバッファ１０２に格納されたデータにアクセスする。
【００１４】
ＤＲＡＭを構成する複数のバンク（図中、「Ｂａｎｋ０」「Ｂａｎｋ１」・・・「ＢａｎｋＮ」等と表記。）のそれぞれごとに、上述の構成が実装される。すなわち、ＤＲＡＭでは、各バンクごとのメモリアレイ１０１に対して、それぞれに対応するロウバッファ１０２、ロウデコーダ１０３、およびカラムデコーダ１０４を介して、並列アクセスが可能である。
【００１５】
図２は、図１のＤＲＡＭ１００にアクセスするためのメモリアクセスコントローラ（図中、「ＭＡＣ（Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）」と表記。以下、「ＭＡＣ」と呼ぶ）２０１の一般的な構成図である。ＭＡＣ２０１は、インターコネクト（図中、「Ｉｎｔｅｒｃｏｎｎｅｃｔ」と表記。）２０７を介して、ＬＬＣ（図中、「Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ」と表記。）２０６に接続される。ＬＬＣ２０６は、プロセッサコア２０５に接続される最終段（最もＤＲＡＭ１００寄り）のキャッシュメモリであり、例えば２５６から５１２バイト程度の記憶容量を有する。ＭＡＣ２０１は、ＰＡ／ＤＡ変換部２０２、メモリリクエストキュー（図中、「ＭＲＱ（Ｍｅｍｏｒｙ  Ｒｅｑｕｅｓｔ  Ｑｕｅ）と表記。以下、「ＭＲＱ」と呼ぶ」、およびスケジューラ２０４（図中、「Ｓｃｈｅｄｕｌｅｒ」と表記。）を備える。ＰＡ／ＤＡ変換部２０２は、ＬＬＣ２０６から発行される物理アドレス（以下、「ＰＡ」と略す場合がある）を、ＤＲＡＭ１００が解釈できるＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）アドレス（以下、「ＤＡ」と略す場合がある）に変換する。ＭＲＱ２０３は、ＰＡ／ＤＡ変換部２０２から順次出力されるアドレスＤＡを予め定められた最大複数アドレス分キューイング（一時保持）する。ＭＲＱ２０３にキューイングされたアドレスＤＡ群は、スケジューラ２０４によって所定の規則で読み出され、その読み出されたアドレスＤＡによって、ＤＲＡＭ１００がアクセスされる。アクセスの方式は、図１で説明した通りである。
【００１６】
図３は、図２のスケジューラ２０４によって実施されるメモリアクセス・スケジューリングアルゴリズムの第１の方式である、Ｆｉｒｓｔ−Ｃｏｍｅ  Ｆｉｒｓｔ−Ｓｅｒｖｅ（以下、「ＦＣＦＳ」と略す）方式の説明図である。いま例えば、図２のＭＲＱ２０３に、図１のロウデコーダ１０３に与えられるべきロウアドレスとして、図３（ａ）に示されるように、図２のＬＬＣ２０６からの到着順に、Ｒ＿Ｅ、Ｒ＿Ａ、Ｒ＿Ｃ、Ｒ＿Ａがキューイングされているとする。この場合、ＦＣＦＳ方式では、スケジューラ２０４は、ロウアドレスの到着順に、ＤＲＡＭ１００にアクセスする。すなわちまず、図３（ｂ）に示されるように、到着が最も早いロウアドレスＲ＿Ｅが取り出され、ＤＲＡＭ１００内のロウデコーダ１０３（図１参照）に与えられる。この結果、ＤＲＡＭ１００内のメモリアレイ１０１からロウバッファ１０２（図１参照）には、ロウアドレスＲ＿Ｅに対応するデータがオープンされ、そのページデータ内の要求アドレスにアクセスされる。その後、ＭＲＱ２０３内の残りのロウアドレス群Ｒ＿Ａ、Ｒ＿Ｃ、Ｒ＿Ａは、図３（ｃ）に示されるように、順次先頭に詰められる。続いて、図３（ｄ）に示されるように、到着が２番目に早いロウアドレスＲ＿Ａが取り出され、ＤＲＡＭ１００内のロウデコーダ１０３に与えられる。この結果、ＤＲＡＭ１００内のメモリアレイ１０１からロウバッファ１０２には、ロウアドレスＲ＿Ａに対応するデータがオープンされ、そのページデータ内の要求アドレスにアクセスされる。その後、ＭＲＱ２０３内の残りのロウアドレス群Ｒ＿Ｃ、Ｒ＿Ａは、図３（ｅ）に示されるように、順次先頭に詰められる。以下、上記と同様の処理が繰り返される。
【００１７】
図４は、図２のスケジューラ２０４によって実施されるメモリアクセス・スケジューリングアルゴリズムの第２の方式である、Ｆｉｒｓｔ−Ｒｅａｄｙ  Ｆｉｒｓｔ−Ｃｏｍｅ  Ｆｉｒｓｔ−Ｓｅｒｖｅ（以下、「ＦＲ−ＦＣＦＳ」と略す）方式の説明図である。いま例えば、図２のＭＲＱ２０３に、図１のロウデコーダ１０３に与えられるべきロウアドレスとして、図３（ａ）と同様に図４（ａ）に示されるように、図２のＬＬＣ２０６からの到着順に、Ｒ＿Ｅ、Ｒ＿Ａ、Ｒ＿Ｃ、Ｒ＿Ａがキューイングされているとする。この場合、ＦＲ−ＦＣＦＳ方式では、スケジューラ２０４は、図３で説明したＦＣＦＳ方式と同様に、ロウアドレスの到着順に、ＤＲＡＭ１００にアクセスする。すなわちまず、図４（ｂ）に示されるように、到着が最も早いロウアドレスＲ＿Ｅが取り出され、ＤＲＡＭ１００内のロウデコーダ１０３に与えられる。この結果、ＤＲＡＭ１００内のメモリアレイ１０１からロウバッファ１０２には、ロウアドレスＲ＿Ｅに対応するページデータがオープンされ、そのページデータ内の要求アドレスにアクセスされる。その後、ＭＲＱ２０３内の残りのロウアドレス群Ｒ＿Ａ、Ｒ＿Ｃ、Ｒ＿Ａは、図４（ｃ）に示されるように、順次先頭に詰められる。続いて、到着が２番目に早いロウアドレスＲ＿Ａが取り出されるが、ここで図４（ｄ）に示されるように、ＭＲＱ２０３内に同一のロウアドレスがある場合には、そのロウアドレスＲ＿Ａが直後にＤＲＡＭ１００に発行される。そして、１番目のロウアドレスＲ＿ＡがＤＲＡＭ１００内のロウデコーダ１０３に発行されることによって、ＤＲＡＭ１００内のメモリアレイ１０１からロウバッファ１０２には、ロウアドレスＲ＿Ａに対応するページデータがオープンされ、そのページデータ内の要求アドレスにアクセスされる。さらに、２番目のロウアドレスＲ＿Ａについては、すでにＲ＿Ａに対応するページデータがロウバッファ１０２にオープンされている。このため、Ｒ＿Ａに対応するページデータが再度メモリアレイ１０１からロウバッファ１０２にオープンされる動作は実行されず、ロウバッファ１０２内の要求アドレスに即座にアクセスされる。その後、ＭＲＱ２０３内の残りのロウアドレスＲ＿Ｃは、図４（ｅ）に示されるように、先頭に詰められる。以下、上記と同様の処理が繰り返される。このように、ＦＲ−ＦＣＦＳ方式では、ＭＲＱ２０３内にある同一のロウアドレスがまとめられてＤＲＡＭ１００に発行されることにより、高速なリード／ライト処理が可能となる。
【００１８】
次に、図２のＬＬＣ２０６でのキャッシュラインの置換処理も含めたＦＲ−ＦＣＦＳ方式によるメモリアクセス・スケジューリング処理について説明する。図５は、一般的に考えられるキャッシュライン置換方式の説明図である。まず、ＬＬＣ２０６におけるキャッシュラインの置換ポリシとしては、一般的に、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）ポリシが採用される。ＬＲＵポリシでは、現在アクセスされているキャッシュブロック上の各キャッシュウェイのうち、最近最も使われなかったキャッシュウェイのキャッシュデータが置換される。ＬＲＵポリシでは、キャッシュメモリ上の各キャッシュウェイが、それぞれのキャッシュデータへのアクセス頻度順にＬＲＵポジションとして管理する。そして、ＬＲＵポジションの最もＬ側の（最も長い時間アクセスがない）キャッシュウェイのキャッシュデータを、ＬＬＣ２０６からＤＲＡＭ１００に追い出す。ＭＡＣ２０１では、ＰＡ／ＤＡ変換部２０２（図２参照）により、追い出された物理アドレスＰＡが、ＤＩＭＭアドレスＤＡに変換され、ＭＲＱ２０３に格納される。図５（ａ）の例では、ここで初めて、追い出された物理アドレスＰＡ4 に対応するキャッシュデータがロウアドレスＲ＿Ｂに対応するデータであることが判明する。ここで、図５（ｂ）に示されるように、ロウバッファ１０２に現在、ロウアドレスＲ＿Ａに対応するページデータがオープンされているとする。このような場合には、これから発行しようとするロウアドレスＲ＿Ｂに対応するページデータは、ロウバッファ１０２上には無いため、両者が不一致となるいわゆるロウバッファミスを引き起こす。この場合、図５（ｂ）に示されるように、ロウバッファ１０２上のロウアドレスＲ＿Ａに対応するページデータをメモリアレイ１０１にプリチャージする。その後に、図５（ｃ）に示されるように、メモリアレイ１０１からロウアドレスＲ＿Ｂに対応するページデータをロウバッファ１０２にオープンする操作が必要になる。
【００１９】
このように、キャッシュラインの置換処理は一般的にはＦＲ−ＦＣＦＳ方式によるメモリアクセス・スケジューリング処理と連携していないため、キャッシュラインの追出し制御がＤＲＡＭ１００におけるプリチャージの回数を増加させ、消費電力を増加させる原因となってしまう。
【００２０】
上述の例では、キャッシュラインの置換ポリシとしてＬＲＵが使用される場合の問題について説明したが、ＬＲＵ以外の置換ポリシが採用された場合にも、その置換処理とメモリアクセス・スケジューリング処理が連携していなければ、同様の問題が引き起こされる。また、上述の例では、ＬＬＣ２０６内では、物理アドレスＰＡを扱い、論理アドレスから物理アドレスへは上位層のキャッシュで変換されているものとするが、これに限定されずに上記と同様の問題が発生し得る。なお、図５中では、物理アドレスＰＡがＬＬＣ２０６から追い出されるように図示しているが，実際にはＰＡが示す位置に格納されているデータが追い出される。
【００２１】
このような問題に対して、本発明の実施形態では、キャッシュラインの置換処理とメモリアクセス・スケジューリング処理における次のような連携制御により、プリチャージの削減を実現する。  図６は、上述の問題点を解決する本実施形態の第１のブロック図である。
【００２２】
第１の記憶手段１０１は、所定のデータ長（例えば１０２４から２０４８バイト程度）を単位としてデータの読み書きが可能な記憶手段である。この第１の記憶手段１０１は、例えばＤＲＡＭのメモリアレイである。
【００２３】
第２の記憶手段１０２は、第１の記憶手段１０１から上述の所定のデータ長を単位とするいずれかのデータを読み出して格納する。この第２の記憶手段１０２は、例えばロウバッファである。
【００２４】
第３の記憶手段１０３は、第２の記憶手段１０２に記憶されたいずれかのデータの一部を部分データとして抽出して記憶する。この第３の記憶手段１０３は、例えばＬＬＣなどのキャッシュメモリである。
【００２５】
制御手段１０４は、以下の動作を実行する。まず、制御手段１０４は、上述の部分データ又は部分データが更新されて得られる更新部分データを第３の記憶手段１０３から削除すなわち追い出し可能とする際に、次のような動作を実行する。ここで、データの削除とは、第３の記憶手段１０３が例えばＬＬＣである場合に、ＬＲＵ制御下で最も長い時間アクセスがないＬＬＣのキャッシュウェイのキャッシュデータを、ＬＬＣから例えばＤＲＡＭである第１の記憶手段１０１に追い出すことをいう。制御手段１０４は、第２の記憶手段１０２に部分データの抽出元のデータが記憶されていない場合に、第１の記憶手段１０１から部分データの抽出元のデータを読み出して第２の記憶手段１０２に記憶させる。そして、制御手段１０４は、第３の記憶手段１０３から削除可能とする部分データ又は更新部分データを用いて第２の記憶手段１０２に記憶させたデータを部分的に上書きしてから、その第２の記憶手段１０２上のデータを第１の記憶手段１０１に書き込む。一方、制御手段１０４は、第２の記憶手段１０２に部分データの抽出元のデータが記憶されている場合に、第３の記憶手段１０３から削除可能とする部分データ又は更新部分データを用いて第２の記憶手段１０２に記憶されているデータを部分的に上書きする。そして、制御手段１０４は、その上書きが行われた第２の記憶手段１０２上のデータを第１の記憶手段１０１に書き込む。
【００２６】
このとき、制御手段１０４は、第２の記憶手段１０２に抽出元のデータが記憶されている部分データ又は更新部分データを優先して第３の記憶手段１０３から削除する処理を行う。より具体的には例えば、次のように動作する。まず、第３の記憶手段１０３に、プロセッサなどにより最後に書き込み又は更新されたタイミングが最も古い第１のデータと、２番目に最も古い第２のデータが記憶されているとする。そして、第１のデータの抽出元のデータ又は第２のデータの抽出元のデータのいずれかが第２の記憶手段１０２に記憶されている場合を考える。この場合、制御手段１０４は、第１又は第２のデータのうち第２の記憶手段１０２に記憶されている抽出元のデータに対応するほうのデータを削除可能なデータとして優先的に選択する。
【００２７】
図６の本実施形態の構成で、例えばロウバッファである第２の記憶手段１０２に記憶されているデータを抽出元とする部分データまたは更新部分データを優先して、例えばキャッシュメモリである第３の記憶手段１０３から削除することができる。これにより、ロウバッファである第２の記憶手段１０２上のデータをいったん例えばメモリアレイである第１の記憶手段１０１に書き戻すことなく、第２の記憶手段１０２上のデータを第３の記憶手段１０３から削除可能とするデータですぐに上書きできる。そして、この上書きが行われた第２の記憶手段１０２上のデータを第１の記憶手段１０１にすぐに書き戻すことができる。このようにして、例えばメモリアレイである第１の記憶手段１０１と例えばロウバッファである第２の記憶手段１０２との間で無駄なデータの授受を削減することが可能となる。これにより、効率的なメモリアクセスが実現され、システムの低消費電力化に貢献することが可能となる。
【００２８】
図７は、本実施形態によるキャッシュライン置換方式の説明図（その１）である。本実施形態では、まず、図２と同様のＬＬＣ２０６におけるＬＲＵポジションの管理において、追い出し対象範囲７０２という監視範囲を定義する。そして、改良されたＭＡＣ７０１内に追加的に実装される制御部内のＰＡ／ＤＡ変換部の機能を用いて、追い出し対象範囲７０２内の物理アドレス群ＰＡ（図７ではＰＡ3 、ＰＡ4 ）から、それらに対応するＤＩＭＭアドレスＤＡ（図７ではロウアドレスＲ＿Ａ、Ｒ＿Ｂ）を判別する。そして、判別されたＤＡを、ロウバッファ１０２と比較する。この結果、図７の例では、ロウバッファ１０２のロウアドレスＲ＿Ａと、ＭＡＣ７０１内で判別された追い出し対象範囲７０２内のロウアドレスＲ＿Ａが一致することが検出される。この検出結果に基づいて、ＬＬＣ２０６の追い出し対象範囲７０２内にある物理アドレスＰＡ3 に対応するキャッシュラインが追い出される。このようにして、一般的なＬＲＵ置換ポリシに従えば最もＬ側の物理アドレスＰＡ4 が追い出されるところを、現在のロウバッファ１０２のロウアドレスＲ＿Ａに対応する物理アドレスＰＡ3 が追い出される。この結果、追い出された物理アドレスＰＡ3 に対応するロウアドレスＲ＿Ａが、Ｒｏｗ Ｄｅｃｏｄｅｒ１０２に入力され、ロウアドレスＲ＿Ａに対応するアドレス線がチャージされている間に、すなわちアドレスがオープンされている間に、プリチャージをせずにＭｅｍｏｒｙ  ａｒｒａｙ１０１にアクセスを行いＲ＿Ａで指定されるデータが格納される。
【００２９】
図８は、本実施形態の更に具体的な制御を説明するためのキャッシュライン置換方式の説明図（その２）である。本実施形態の具体的な処理では、改良されたＭＡＣ７０１において、図４（ａ）〜（ｃ）と同様の手順で、図８（ａ）および（ｂ）に示されるように、ＦＲ−ＦＣＦＳ方式によるメモリアクセス・スケジューリング処理が実行される。この結果、まず図８（ｄ）に示されるように、ＭＲＱ２０３内の先頭のロウアドレスＲ＿Ｅについてロウバッファ１０２への対応するページデータに、アクセスが行われた後、ＭＲＱ２０３内で次にアクセスされるロウアドレスがＲ＿Ａと予測される。この結果、ロウバッファ１０２には、図８（ｅ）に示されるように、ロウアドレスＲ＿Ａに対応するページデータが入力される。この時点で、改良されたＭＡＣ７０１内に追加的に実装される制御部内のＰＡ／ＤＡ変換部の機能を用いて、ＬＬＣ２０６内の追い出し対象範囲７０２内の物理アドレス群ＰＡ3 、ＰＡ4 に対応するロウアドレスＲ＿Ａ、Ｒ＿Ｂが判定される。この結果、ロウアドレスＲ＿Ａが、ＭＲＱ２０３内で次にアクセスが予測されるロウアドレスＲ＿Ａと一致することが検出される。この検出結果に基づいて、ＬＬＣ２０６の追い出し対象範囲７０２内にある物理アドレスＰＡ3 が追い出される。追い出された物理アドレスＰＡ3 は、ＭＡＣ７０１内に元々備わっているＰＡ／ＤＡ変換部２０２（図２参照）によって物理アドレスＰＡ3 からＤＩＭＭアドレスであるロウアドレスＲ＿Ａに変換され、ＭＲＱ２０３にキューイングされる。このようにして、一般的なＬＲＵ置換ポリシに従えば最もＬ側の物理アドレスＰＡ4 が追い出されるところを、現在のロウバッファ１０２のロウアドレスＲ＿Ａに対応する物理アドレスＰＡ3 が追い出される。この結果、図８（ｃ）に示されるように、ＭＲＱ２０３内にキューイングされた３つのロウアドレスＲ＿Ａについて、ＦＲ−ＦＣＦＳ処理によりまとめて、ロウアドレスがオープンの間にロウバッファ１０２に入るデータを順次上書きする。これにより１回プリチャージするだけで３つのロウアドレスＲ＿Ａについて順次アクセスを行うことができる。
【００３０】
図９は、図８の制御処理を実現するための本実施形態の第２のブロック図である。図９において、図２のメモリアクセスコントローラの一般的な構成と同じ処理を行う部分には、同じ番号を付してある。図９の改良されたＭＡＣ７０１が図２のＭＡＣ２０１と異なる部分は、制御部９０１を備える点である。制御部９０１は、アドレス変換部であるＰＡ／ＤＡ変換部９０２とアドレス比較部９０３を備える。制御部９０１はまず、ＭＲＱ２０３から近い将来どのロウバッファ１０２（図１参照）がオープンになるかを予測する。この予測処理は、前述したＦＲ−ＦＣＦＳスケジューリングポリシ（図４参照）に基づいて実行される。次に、制御部９０１内のＰＡ／ＤＡ変換部９０２は、ＬＬＣ２０６のＬＲＵポジションの追い出し対象範囲７０２（図８参照）を監視し、その範囲内にある各物理アドレスＰＡをＤＩＭＭアドレスＤＡに変換する。この場合例えば、追い出し対象範囲７０２内にあるＬＲＵポジションのＬ側の物理アドレスＰＡから順次、ＤＩＭＭアドレスＤＡに変換する。アドレス比較部９０３は、ＰＡ／ＤＡ変換部９０２から変換されたＤＩＭＭアドレスＤＡを一つずつ入力し、入力されたＤＩＭＭアドレスＤＡを、ＭＲＱ２０３上で近い将来オープンされると予測したＤＩＭＭアドレスＤＡと比較する。そして、アドレス比較部９０３は、ＤＩＭＭアドレスＤＡの一致を検出した場合に、ＬＬＣ２０６において、そのＤＩＭＭアドレスＤＡに対応するＬＲＵポジションの物理アドレスのキャッシュデータを無効化する。ＬＲＵポジションの物理アドレスはたとえばダーティービットが立ったものであって更新されたものであり、やがてＤＲＡＭ１００のアドレスに対応データが書き込まれるものである。これにより、ＬＬＣ２０６において、上記一致が検出されたＤＩＭＭアドレスＤＡに対応するＬＲＵポジションの物理アドレスが追い出される。一致が検出されなかった場合には、ＬＬＣ２０６において、通常のＬＲＵポリシに基づく追出し制御が行われる。
【００３１】
図９の実施形態の構成により、ＭＲＱ２０３内にキューイングされており近い将来にＤＲＡＭ１００上でロウバッファ１０２にオープンされる可能性のあるＤＩＭＭアドレスＤＡ（ロウアドレス）に対応するＬＬＣ２０６上の物理アドレスが、優先的に追い出される。これにより、ＬＬＣ２０６から追い出されてＭＡＣ７０１内のＭＲＱ２０３にキューイングされたＤＩＭＭアドレスＤＡが、ＦＲ−ＦＣＦＳ制御により、ＭＲＱ２０３内の近い将来オープンされるＤＩＭＭアドレスＤＡとともに一括してアクセス処理される。このアクセス処理は将来オープンされるＤＩＭＭアドレスＤＡがオープンされたときそのオープンされている間に順次行われる。すなわち、本実施形態では、ロウバッファ１０２がオープンしている間に、オープンしているのと同じＤＩＭＭアドレスＤＡを有するデータがＬＬＣ２０６から追い出されてロウバッファ１０２に上書きされる。この結果、同一のＤＩＭＭアドレスＤＡを有するＬＬＣ２０６から追い出されたデータを含むＭＲＱ２０３上の複数のデータが一括してロウバッファ１０２に対してアクセス処理されることで、ＤＲＡＭ１００でのプリチャージ回数を削減することが可能となる。
【００３２】
図１０は、図９の実施形態の構成を更に具体化したハードウェア構成図である。
図１０において、図２および図９の構成と同じ処理を行う部分には、同じ番号を付してある。図１０では、制御部９０１内のＰＡ／ＤＡ変換部９０２とアドレス比較部９０３のそれぞれの構成を、具体的なハードウェアイメージで示している。まず、ＰＡ／ＤＡ変換部９０２は、ＬＬＣ２０６の追い出し対象範囲７０２（図８参照）内の各ＬＲＵポジションにアクセスしてそれぞれ３２ビットの物理アドレスＰＡを順次入力する。そして、入力された３２ビットのアドレスを、図１０の９０２として示されるように、Ｒａｎｋ、Ｂａｎｋ、Ｒｏｗ、Ｃｏｌｕｍｎ、Ｂｕｒｓｔの５つのアドレス種別に分割する。なお、それぞれ分割されるアドレスのビット割当ては、ＤＲＡＭ１００の仕様に基づいて決定される。そして、ＰＡ／ＤＡ変換部９０２は、上記分割したアドレスのうちＤＩＭＭアドレスＤＡに対応するアドレス部分（例えばＲｏｗアドレス部分）を抽出し、アドレス比較部９０３に出力する。アドレス比較部９０３は、ＭＲＱ２０３のエントリごとに対応した比較器１００１を有する。この比較器１００１は、ＰＡ／ＤＡ変換部９０２から出力されるＤＩＭＭアドレスＤＡと、ＭＲＱ２０３の１つのエントリから入力されたＤＩＭＭアドレスＤＡとが一致するか否かをビット単位で比較する論理回路群である。ここで、ＦＲ−ＦＣＦＳ方式に基づいて近い将来のロウバッファ１０２でのオープンが予測されたＭＲＱ２０３のエントリの出力のみが有効になるように設定することができる。また、比較器１００１は、制御部９０１内で将来オープンされると判定されたＭＲＱ２０３内のエントリに対応する比較器１００１のみがオンされるように構成することができる。なお、将来オープンされると判定されるＭＲＱ２０３内のエントリは、必ずしも一つである必要はなく、オープンされる順に上位複数のエントリの出力が、それぞれに対応する比較器１００１に入力して比較されるように構成することができる。そして、いずれかの比較器１００１で一致が検出された場合に、その一致出力信号によって、その時点においてＬＬＣ２０６上で指示されているＬＲＵポジションの物理アドレスＰＡのデータが無効化されて追い出される。この追い出された物理アドレスＰＡは、既にＭＲＱ２０３内に格納されているため、ＭＲＱ２０３に新たに格納する必要はない。
【００３３】
図１０の構成により、将来ロウバッファ１０２がオープンされる可能性の高いＭＲＱ２０３内のエントリのＤＩＭＭアドレスＤＡと同じＤＩＭＭアドレスＤＡを有するＬＬＣ２０６の追い出し対象範囲６０２内の物理アドレスＰＡを追い出しＰＡ／ＤＡ変換をした後ＭＲＱ２０３に格納できる。これにより、同一のＤＩＭＭアドレスＤＡを有するＬＬＣ２０６から追い出されるデータを含むこれらのデータが一括してロウバッファ１０２に対してアクセス処理される確率が高まる。
【００３４】
この結果、ＤＲＡＭ１００におけるプリチャージ回数を削減でき高速アクセスが可能なキャッシュライン置換処理とメモリアクセス・スケジューリング処理を実現することができる。プリチャージを行うためには、メモリアレイ１０１に電力を供給しなければならない。従って、本実施形態の構成でプリチャージ回数を削減できることにより、ＤＲＡＭ１００の消費電力を抑制することが可能となる。
【００３５】
本実施形態では、ＬＲＵに基づく最も利用されていないデータではなく、近い将来アクセスされる可能性のあるＭ番目データを追い出すことから、キャッシュミス率が上昇する可能性がある（1＜Ｍ≦Ｎ、ただしＮはキャッシュの連想度）。ただし，キャッシュミスが生じた後、ＤＲＡＭ１００へアクセスしても、プリチャージの回数は本実施形態による制御方式を適用する前と比較して最大でも同数であり、ＤＲＡＭ１００の消費電力を削減することが可能となる。
【００３６】
図８の追い出し対象範囲７０２の設定方法について、以下に説明する。
まず、追い出し対象範囲７０２を静的に設定する手法が採用可能である。静的手法では、事前にＬＬＣ２０６のキャッシュウェイ数の１／４または１／２または全てというように、追い出し対象範囲７０２を決定しておき，動作中にこの範囲を変更しない方式である。
【００３７】
追い出し対象範囲７０２を動的に設定する手法も採用可能である。プログラムによっては、追い出し対象範囲７０２を１／２とした場合はキャッシュミスを頻繁に引き起こすが、１／４の場合であればミスを引き起こさないなどの違いがある。そこで，プログラムのキャッシュミスの特性に応じて追い出し対象範囲７０２を決定する。プログラムの振る舞いに応じて実行中に追い出し対象範囲７０２を動的に変更することで、高い消費電力削減効果を得る一方で，キャッシュミス数増加に伴う性能低下を回避することができる。
【００３８】
ここで、追い出し対象範囲７０２によりＤＲＡＭ１００の消費電力削減効果およびキャッシュミス数増加（性能低下）に影響が出る。一般に、追い出し対象範囲７０２が広いと、消費電力削減効果は高いが、キャッシュミス数が増加する可能性が高くなる（性能が低下する可能性が高くなる）。一方、追い出し対象範囲７０２が狭いと、消費電力削減効果は低いが、キャッシュミス数が増加する可能性は低くなる（性能が低下する可能性が低くなる）。
【００３９】
図１１は、キャッシュミスの特性に応じて追い出し対象範囲を決定する方式の説明図である。事前にプログラムを実行して各ＬＲＵポジションのどこでキャッシュヒットしているかを調査する手法が採用できる。たとえば、図１１に示されるように、キャッシュヒット率が２０％以下であれば追い出し対象範囲７０２とするなど，ヒット率の閾値を設定する手法が考えられる。あるいは、プログラム実行前に事前に調査した結果に基づいて追い出し対象範囲を決定する手法が採用できる。このとき，どこまでを追い出し対象範囲とするかはユーザが指定、コンパイラにより実行コード中で指定するなどの方法が考えられる。
【００４０】
さらに、プログラムを実行しユーザが書いた関数などのある程度大きな粒度の単位で各ＬＲＵポジションにおけるキャッシュヒット率を測定し、図１１に示されるような手法を用いて追い出し対象範囲７０２を関数ごとに決定する手法を採用することができる。プログラムを再コンパイルするなどして，実行コードに追い出し対象範囲７０２を指定するレジスタを操作するコードを挿入することも可能である。プログラム実行時は動的に追い出し対象範囲を維持するレジスタをプログラム自身が変更するようにすれば、追い出し対象範囲７０２の動的な切り替えが実現される。
【符号の説明】
【００４１】
１００  ＤＲＡＭ（ダイナミックランダムアクセスメモリ）
１０１  メモリアレイ
１０２  ロウバッファ
１０３  ロウデコーダ
１０４  カラムデコーダ
２０１、７０１  ＭＡＣ（メモリアクセスコントローラ）
２０２、９０２  ＰＡ／ＤＡ変換部
２０３  ＭＲＱ（メモリリクエストキュー）
２０４  スケジューラ
２０５  プロセッサコア
２０６  ＬＬＣ（ラストレベルキャッシュ）
２０７  インターコネクト
７０２  追い出し対象範囲
９０１  制御部
９０３  アドレス比較部
１００１  比較器
【図２】
0005699854.tif 000002
【図３】
0005699854.tif 000003
【図４】
0005699854.tif 000004
【図９】
0005699854.tif 000005
【図１０】
0005699854.tif 000006
【図１１】
0005699854.tif 000007
【図１】
0005699854.tif 000008
【図５】
0005699854.tif 000009
【図６】
0005699854.tif 000010
【図７】
0005699854.tif 000011
【図８】
0005699854.tif 000012