(57)【要約】【課題】キャッシュのウェイを制限するかどうかをＨ／Ｗ側で判断することにより、Ｓ／Ｗ作成の負荷を軽減するキャッシュ記憶装置を提供する。【解決手段】キャッシュ記憶装置１００は、ウェイ制限開始アドレスレジスタ１９とウェイ制限終了アドレスレジスタ２０とからなるアドレス範囲格納部１１０と、ウェイ制限判定部２１、置換ウェイ制御部１７等を備えている。アドレス範囲格納部１１０は、所定のアドレスの範囲を示すアドレス範囲情報を格納する。ウェイ制限判定部２１は、キャッシュ対象のキャッシュ対象データを格納するときに、キャッシュ対象データの持つアドレスがアドレス範囲格納部１１０のアドレス範囲情報の示す範囲内かどうかを判定する。置換ウェイ制御部１７は、アドレス範囲に含まれると判定された場合には、ウェイ０、１のうち、最も過去に置換されたウェイを前記キャッシュ対象データを格納するウェイとして選択する。【選択図】図１
2010191754.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイを使用することにより、アドレスを持つデータを前記複数のウェイのいずれかのウェイにキャッシュするセットアソシアティブ方式のキャッシュ記憶装置において、
所定のアドレスの範囲を示すアドレス範囲情報を格納するアドレス範囲格納部と、
キャッシュ対象のキャッシュ対象データを格納するときに、前記キャッシュ対象データの持つアドレスが前記アドレス範囲格納部に格納されたアドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定するアドレス範囲判定部と、
前記アドレス範囲判定部によって前記アドレスが前記アドレスの範囲に含まれると判定された場合は、前記複数のウェイの全部よりも少ない数のウェイであって、あらかじめ指定されている少なくとも一つの指定ウェイの中から、前記アドレス範囲に属すると判定されたアドレスを持つ前記キャッシュ対象データを格納するウェイを選択するウェイ選択部と
を備えたことを特徴とするキャッシュ記憶装置。
【請求項２】
前記ウェイ選択部は、
前記アドレス範囲判定部によって前記アドレスが前記アドレス範囲情報の示す前記アドレスの範囲に含まれないと判定された場合は、前記複数のウェイのうちの前記指定ウェイ以外のウェイの中から、前記アドレスの範囲に含まれないと判定された前記アドレスを持つ前記キャッシュ対象データを書き込むウェイを選択することを特徴とする請求項１に記載のキャッシュ記憶装置。
【請求項３】
前記キャッシュ記憶装置は、さらに、
データを記憶するデータ記憶部を有すると共にキャッシュミスが生じた場合に前記データ記憶部に前記キャッシュミスのデータと同じデータが記憶されているかを判定し、記憶されていると判定した場合には前記データを前記キャッシュ対象データとして出力するプリフェッチ制御部を備え、
前記アドレス範囲判定部は、
前記プリフェッチ制御部により前記キャッシュ対象データとして出力された前記データを格納するときに、前記データの持つアドレスが前記アドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定することを特徴とする請求項１または２のいずれかに記載のキャッシュ記憶装置。
【請求項４】
前記プリフェッチ制御部は、
前記データ記憶部に記憶されている前記データに対するリード要求があった場合は、リード要求のあった前記データをＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に直接出力することを特徴とする請求項３記載のキャッシュ記憶装置。
【請求項５】
前記プリフェッチ制御部は、
前記データ記憶部に記憶されている前記データを前記キャッシュ対象データとして出力するときには、メインメモリから所定のアドレス範囲のデータを取得し、取得した前記データを前記データ記憶部に格納することを特徴とする請求項３または４のいずれかに記載のキャッシュ記憶装置。
【請求項６】
前記プリフェッチ制御部は、
キャッシュミスが生じた場合に前記データ記憶部に前記キャッシュミスのデータと同じデータが記憶されているかを判定し、記憶されていないと判定した場合には、前記キャッシュミスのデータを含む所定のアドレスの範囲のデータをメインメモリから取得し、取得した前記データを前記データ記憶部に格納することを特徴とする請求項３〜５のいずれかに記載のキャッシュ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、キャッシュ記憶装置に関する。
【背景技術】
【０００２】
従来、コンピュータシステムは、プロセッサの処理速度と比較してメモリアクセス速度が遅いため、メモリアクセスが性能に影響を及ぼす。特に近年ではプロセッサの高性能化によりプロセッサの処理速度とメモリアクセスとの差が大きくなっており、メモリアクセスによる影響は大きなものになっている。メモリアクセスの時間を短縮する手法として、メモリから取得したデータを一時的に記憶しておくキャッシュがある。プログラムには一度アクセスしたデータに近い時間に再びアクセスする局所性があることから、キャッシュにメモリ内のデータを保持しておくことで、メモリにアクセスする時間が省けるためプログラムを高速に実行することができる。
【０００３】
一方、周期的に同じ処理を繰り返すシステムでは、前回実行した際に使用した命令やデータがキャッシュ内に残っていると、次に実行した際にはメモリにアクセスしなくてもデータを取得できるため、高速に処理を実行することができる。しかし、実際は、次に処理を実行するまでに他の処理のキャッシュミスによってキャッシュからデータが追い出されてしまうことが多い。
【０００４】
処理によって実行される時間間隔が異なる場合、各処理でアクセスされる命令やデータの局所性が異なる。実行間隔が短い処理でアクセスされるデータの時間的局所性は高く、たまにしか実行されない処理でアクセスされるデータの時間的局所性は低い。実行間隔が短い処理のデータが、その他の処理によってキャッシュから追い出されてしまうと、処理を実行する度に同じデータを何度もメモリから読み出すことになり、実行時間が長くなる。このように、時間的局所性の高いデータがキャッシュから追い出されることは、メモリアクセスを頻発させることになり、効率が悪くなる。
【０００５】
このような課題を解決するため、特許文献１のようなキャッシュが開示されている。特許文献１では、モード信号が入力されるとキャッシュを置き換えることができるウェイを制限することで、時間的局所性のあるデータが時間的局所性のないデータによってキャッシュから追い出されることを減少させている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１９５３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１ではウェイを制限するデータをプリフェッチ命令で取得する、あるいはプログラム中にウェイを制限することを明示するなど、キャッシュを意識したプログラムを作成する必要があり、Ｓ／Ｗ（Ｓｏｆｔｗａｒｅ）作成時の負荷が高くなる。
【０００８】
本発明は、キャッシュのウェイを制限するかどうかをＨ／Ｗ（Ｈａｒｄｗａｒｅ）側で判断することにより、Ｓ／Ｗ作成の負荷を軽減するキャッシュ記憶装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
この発明のキャッシュ記憶装置は、
複数のウェイを使用することにより、アドレスを持つデータを前記複数のウェイのいずれかのウェイにキャッシュするセットアソシアティブ方式のキャッシュ記憶装置において、
所定のアドレスの範囲を示すアドレス範囲情報を格納するアドレス範囲格納部と、
キャッシュ対象のキャッシュ対象データを格納するときに、前記キャッシュ対象データの持つアドレスが前記アドレス範囲格納部に格納されたアドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定するアドレス範囲判定部と、
前記アドレス範囲判定部によって前記アドレスが前記アドレスの範囲に含まれると判定された場合は、前記複数のウェイの全部よりも少ない数のウェイであって、あらかじめ指定されている少なくとも一つの指定ウェイの中から、前記アドレス範囲に属すると判定されたアドレスを持つ前記キャッシュ対象データを格納するウェイを選択するウェイ選択部と
を備えたことを特徴とする。
【発明の効果】
【００１０】
この発明のキャッシュ記憶装置により、Ｓ／Ｗ作成の負荷を軽減するキャッシュ記憶装置を提供できる
【図面の簡単な説明】
【００１１】
【図１】実施の形態１のキャッシュ記憶装置１００の構成図。
【図２】実施の形態１のウェイ制限判定部２１の構成図。
【図３】実施の形態１の置換ウェイ制御部１７の構成図。
【図４】実施の形態１のキャッシュ記憶装置１００の動作のフローチャート。
【図５】図４の続きのフローチャート。
【図６】実施の形態２のキャッシュ記憶装置２００の構成図。
【図７】実施の形態２のプリフェッチ制御部４５の構成図。
【図８】実施の形態２のキャッシュ記憶装置２００の動作フローチャート。
【図９】図８の続きのフローチャート。
【図１０】実施の形態２のキャッシュ記憶装置２００のライト動作のフローチャート。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１〜図５を用いて実施の形態１のキャッシュ記憶装置１００を説明する。以下に説明する実施の形態１のキャッシュ記憶装置１００、実施の形態２のキャッシュ記憶装置２００は、いずれもセットアソシアティブ方式のキャッシュ装置である。実施の形態１、２のキャッシュは例として４ウェイのセットアソシアティブであり、ウェイを制限する場合は、ｗａｙ０またはｗａｙ１のいずれかにデータを格納する。
【００１３】
キャッシュ記憶装置１００は、ウェイを制限するかどうかをＨ／Ｗ（キャッシュ記憶装置側）で自動的に判断して制御する。キャッシュ記憶装置１００では、置換するウェイを制限するデータの範囲（アドレスの範囲）をあらかじめ指定しておく。そして、指定されたアドレス範囲のデータへのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によるアクセスに対してはＨ／Ｗで自動的にウェイを制限することができる。これによって、Ｓ／Ｗはウェイを制限したいデータのメモリ配置のみを考慮すればよく、Ｓ／Ｗ作成上の負荷が小さくなる。
【００１４】
図１は、キャッシュ記憶装置１００の構成図である。キャッシュ記憶装置１００は、ウェイ制限開始アドレスレジスタ１９とウェイ制限終了アドレスレジスタ２０とからなるアドレス範囲格納部１１０と、ウェイ制限判定部２１（アドレス範囲判定部）と、置換ウェイ制御部１７（ウェイ選択部）等を備えている。各構成要素の機能は後述する。
【００１５】
アドレスバッファ１は、ＣＰＵからのアドレス信号２より要求されたアドレスを格納する。アドレスバッファ１のアドレスはタグアドレス３、インデックスアドレス４、オフセットアドレス５の３つに分解することができる。
【００１６】
（１）有効ビット／タグバッファ６〜９は、それぞれｗａｙ０〜ｗａｙ３の有効ビットとタグアドレスを格納し、データバッファ１０〜１３はそれぞれｗａｙ０〜ｗａｙ３のデータを格納する。
（２）ヒット／ミス判定部１４は、アクセス要求のあったデータがキャッシュに格納されているかどうかを判定し、結果をヒット信号１５に出力すると共に、ヒット時のウェイをヒットウェイ信号１６に出力する。
（３）置換ウェイ制御部１７は、キャッシュヒット時はヒットしたウェイを、キャッシュミス時は置換するウェイをウェイ選択信号１８に出力する。
（４）ウェイ制限開始アドレスレジスタ１９は、ウェイ制限を行う範囲の最初のアドレスを格納し、ウェイ制限終了アドレスレジスタ２０は、ウェイ制限を行う範囲の最後のアドレスを格納する。最初のアドレスと最後のアドレスとは、ウェイ制限の対象のアドレス範囲を示すアドレス範囲情報である。
（５）ウェイ制限判定部２１は、アクセス要求のあったアドレスがウェイ制限開始アドレスレジスタ１９とウェイ制限終了アドレスレジスタ２０で指定した範囲内に含まれるかどうかを判定し、結果をウェイ制限信号２２に出力する。
（６）セレクタ２３、２４は、それぞれウェイ選択信号１８をもとに指定されたウェイのタグまたはデータを出力する。
（７）ＣＰＵからのＲ／Ｗ信号２５は、リード要求かライト要求かを区別する信号であり、ＣＰＵからのデータ信号２６は、ＣＰＵからのＲ／Ｗ信号２５がライトであった場合に、書き込まれるデータを表す。
（８）キャッシュへのデータ信号２７は、メモリ（メインメモリあるいは主記憶装置ともよばれる）から読み込まれたデータである。
（９）セレクタ２８は、ＣＰＵからのＲ／Ｗ信号２５に応じて、ＣＰＵからのデータ信号２６かキャッシュへのデータ信号２７を出力する。
（１０）スリーステートバッファ２９、３０は、ウェイ選択信号１８から出力されたウェイがｗａｙ０であれば、入力されたデータを出力し、それぞれ有効ビット／タグバッファ６、データバッファ１０に書き込む。
（１１）スリーステートバッファ３１〜３６も同様に、ウェイ選択信号１８の値によって選択された場合のみ入力されたデータを出力してバッファに書き込む。
（１２）アドレスデコード部３７は、インデックスアドレス４とキャッシュミス時に置換するデータのタグから置換するデータのアドレスを作成する。
（１３）ＷＲＩＴＥバッファ３８は、セレクタ２４から出力されたキャッシュミスによる置換の際にメモリに書き込むデータと、アドレスデコード部３７にて生成されたアドレスを格納する。
（１４）メモリアクセス制御部３９は、キャッシュミス時にはメモリからデータを取得し、データを置換する際には追い出されるデータをメモリに書き込むなどのメモリへのリードライト制御を行うための、キャッシュからのＲ／Ｗ信号４０を出力する。
（１５）セレクタ４１は、キャッシュからのＲ／Ｗ信号４０をもとに、キャッシュミス時にメモリから取得するデータのアドレスもしくはメモリに書き込むデータのアドレスを出力する。キャッシュからのアドレス信号４２は、キャッシュからメモリへアクセスするアドレス、キャッシュからのデータ信号４３はデータをメモリへ書き込むデータを表す。
（１６）ＣＰＵへのデータ信号４４は、データバッファ１０〜１３のうち、セレクタ２４から出力されたデータをＣＰＵに渡す。
【００１７】
図４、図５は、リード時のキャッシュ記憶装置１００のフローチャートである。これらを参照して説明する。リード時の動作は以下の通りである。
【００１８】
まず、ＣＰＵからのアドレス信号２から入力されたアドレスがアドレスバッファ１に格納される（Ｓ１１）。次にｗａｙ０〜ｗａｙ３の各有効ビット／タグバッファ６〜９は、インデックスアドレス４に対応するタグアドレスを出力し（Ｓ１２）、ヒット／ミス判定部１４は有効ビット／タグバッファ６〜９の出力の中にタグアドレス３と一致するものがあるかを判定し、キャッシュにデータがヒットするかを調べる（Ｓ１３，Ｓ１４）。
【００１９】
（キャッシュヒット時）
キャッシュヒット時はヒット／ミス判定部１４がヒット信号１５を有効にし、ヒットウェイ信号１６にデータが格納されているウェイを出力する（Ｓ１５）。置換ウェイ制御部１７はヒットウェイ信号１６で指定したウェイをウェイ選択信号１８に出力する（Ｓ１６）。セレクタ２４はデータバッファ１０〜１３に格納されているインデックスアドレス４に対応するデータの中のから、ウェイ選択信号１８で指定したウェイのデータをＣＰＵへのデータ信号４４に出力して（Ｓ１７）、データをＣＰＵに返す。
【００２０】
（キャッシュミス時）
キャッシュミス時は、ヒット／ミス判定部１４がヒット信号１５を無効にする（Ｓ２１）。
【００２１】
ウェイ制限判定部２１は、アクセス要求のあったアドレス１がウェイ制限開始アドレスレジスタ１９とウェイ制限終了アドレスレジスタ２０で指定した範囲内であるかを判定する（Ｓ２２）。アドレス１がウェイ制限開始アドレスレジスタ１９とウェイ制限終了アドレスレジスタ２０との範囲内のときは、ウェイ制限判定部２１は、ウェイ制限信号２２を有効にし（Ｓ２３）、範囲外のときはウェイ制限信号２２を無効にする（Ｓ２４）。
【００２２】
置換ウェイ制御部１７は、アクセス要求のあったデータ（キャッシュ対象データ）をキャッシュに格納するウェイを選択し、ウェイ選択信号１８に出力する。置換ウェイ制御部１７は、ウェイ制限信号２２が無効の場合は、ｗａｙ０〜ｗａｙ３の中で最も昔にアクセスされたウェイを選択し、ウェイ制限信号２２が有効の場合は、ｗａｙ０〜ｗａｙ１（指定ウェイ）の中でアクセスが古いほう（所定の選択基準）のウェイを選択する（Ｓ２５）。また、置換する際に追い出されるデータをメモリに書き戻す。
【００２３】
アドレスデコード部３７は、セレクタ２３から出力された追い出されるデータのタグアドレスとインデックスアドレス４からメモリに書き戻すデータのアドレスを作成し、ＷＲＩＴＥバッファ３８に格納する（Ｓ２６）。ＷＲＩＴＥバッファ３８はアドレスデコード部３７が出力したアドレスと、セレクタ２４から出力されたデータを格納する（Ｓ２７）。ＷＲＩＴＥバッファ３８にキャッシュから追い出されるデータとアドレスを格納した後、メモリアクセス制御部３９は、リード信号をキャッシュからのＲ／Ｗ信号４０に出力する（Ｓ２８）。セレクタ４１はアドレス１をキャッシュからのアドレス信号４２に出力し、メモリからデータを取得する（Ｓ２９）。取得したデータはキャッシュへのデータ信号２７に出力され、セレクタ２８を経由してスリーステートバッファ３０、３２、３４、３６に入力される（Ｓ３０）。ウェイ選択信号１８で指定したウェイのスリーステートバッファのみが入力されたデータを出力するため（Ｓ３１）、データバッファ１０〜１３のうち、該当するバッファにデータが格納される。データバッファにデータが格納されると同時にタグアドレス３も有効ビット／タグバッファ６〜９のうち、ウェイ選択信号１８で指定されたウェイに書き込まれる（Ｓ３２）。
【００２４】
以上のようにしてデータがキャッシュに格納される。その後、データバッファに格納されたデータがセレクタ２４を経由してＣＰＵへのデータ信号４４を通してＣＰＵへ送られる。  最後に、キャッシュから追い出されたデータをメモリに書き込むため、メモリアクセス制御部３９はキャッシュからのＲ／Ｗ信号４０にライト信号を出力する。その後、ＷＲＩＴＥバッファ３８に格納してあるデータをキャッシュからのデータ信号４３に出力し、アドレスをセレクタ４１に出力する。セレクタ４１はキャッシュからのＲ／Ｗ信号４０がライト信号であることから、ＷＲＩＴＥバッファ３８から出力されたアドレスをアドレス信号４２に出力し、メモリにデータを書き込む。
【００２５】
以上がリード時の動作である。
【００２６】
ライトは、アドレス１のデータがキャッシュにあるかどうかをヒット／ミス判定部１４で判定するまでの動作はリード時と同じである。キャッシュヒット時は、セレクタ２８はＣＰＵからのデータ信号２６を出力し、データバッファ１０〜１３のうち、ウェイ選択信号１８で指定した該当するデータバッファにデータを書き込む。キャッシュミス時は、リード時と同様に、置換ウェイ制御部１７がデータを置換するウェイをウェイ選択信号１８に出力し、ＷＲＩＴＥバッファ３８に置換するウェイのデータと、アドレスデコード部３７でデコードしたアドレスを格納する。
【００２７】
本実施の形態１では、ライト時にデータがキャッシュになかった場合、一度データをキャッシュに格納するようにしたが、キャッシュに格納せずに、直接メモリに書き込むようにしてもよい。
【００２８】
図２はウェイ制限判定部２１の構成例である。ウェイ制限判定部２１は２つの比較器１０１、１０２と１つのＡＮＤ回路１０３から構成される。
【００２９】
アドレス１が入力されると、比較器１０１がアドレス１の値とウェイ制限開始アドレスレジスタ１９の値を比較する。アドレス１の値がウェイ制限開始アドレス以上であれば、比較器１は‘１’を出力する。同時に、比較器１０２がアドレス１の値とウェイ制限終了アドレスレジスタ２０の値を比較し、アドレス１の値がウェイ制限開始アドレス以下であれば、‘１’を出力する。これら２つの比較結果信号をＡＮＤ回路１０３にてＡＮＤした結果をウェイ制限信号２２に出力する。
【００３０】
以上のようにして、アクセス要求のあったアドレス１がウェイを制限するかどうかを判定する。
【００３１】
なお、本実施の形態１では、ウェイを制限するアドレス範囲（アドレス範囲情報の一例）を開始アドレスと終了アドレスとを用いて判定したが一例である。例えば、「開始アドレスと開始アドレスからのサイズ」（アドレス範囲情報の別の例）とで判定するように構成してもよい。
【００３２】
図３は置換ウェイ制御部１７の構成図である。本実施の形態１では、制限されたデータはｗａｙ０またはｗａｙ１に格納し、それ以外のデータはｗａｙ０〜ｗａｙ３に格納されるようにしている。０〜１ウェイ参照履歴２０１はウェイ制限信号２２によって格納できるウェイが制限された際に格納可能なウェイ（ｗａｙ０、ｗａｙ１）の更新・参照履歴を記憶し、入力されたインデックスアドレス４に対して置換するウェイを出力する手段であり、０〜３ウェイ参照履歴２０２は全てのウェイ（ｗａｙ０〜ｗａｙ３）の更新・参照履歴を記憶し、入力されたインデックスアドレス４に対して置換するウェイを出力する手段である。セレクタ２０３、２０４はそれぞれウェイ制限信号２２、ヒット信号１５の値に応じて入力されたデータのいずれかを出力する。
【００３３】
置換ウェイ制御部１７の動作を説明する。
【００３４】
（１）まず、０〜１ウェイ参照履歴２０１、０〜３ウェイ参照履歴２０２が、インデックスアドレス３に対応したウェイの中からデータを置換するウェイをそれぞれ出力し、セレクタ２０３に入力する。
置換するウェイはＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）にて決定する。ＬＲＵは最後に参照されたのが最も古いウェイを選択するアルゴリズムである。
（２）セレクタ２０３はウェイ制限信号２２が有効の場合は、０〜１ウェイ参照履歴２０１から出力されたウェイを出力し、ウェイ制限信号２２が無効の場合は、０〜３ウェイ参照履歴２０２から出力されたウェイを出力する。
（３）セレクタ２０４はヒット信号１５が有効の場合は、ヒットウェイ信号１６をウェイ選択信号１８に出力し、ヒット信号１５が無効の場合は、セレクタ２０３の出力ウェイをウェイ選択信号１８に出力する。こうすることで、ウェイ選択信号１８にはキャッシュにヒットした場合は、データが格納されているウェイが出力され、キャッシュにミスした場合はデータを格納する（置換する）ウェイがウェイ選択信号１８に出力される。同時に、ウェイ選択信号１８のデータは０〜１ウェイ参照履歴２０１と０〜３ウェイ参照履歴２０２に入力され、ウェイの参照履歴を更新する。
【００３５】
以上が実施の形態１の構成と動作である。本構成では、ウェイ制限開始アドレスレジスタ１９、ウェイ制限終了アドレスレジスタ２０で指定した範囲内のデータは、ｗａｙ０、ｗａｙ１にしか格納されない。そのため、アクセス頻度の低いデータをアドレスの範囲に指定することで、アクセス頻度の高いデータがキャッシュから追い出される可能性が少なくなる。そのため、キャッシュミスが削減し、メモリアクセス時間を省くことができ、高速に処理を実行することができる。
【００３６】
実施の形態１では、置換ウェイを決定するアルゴリズムとしてＬＲＵを用いたが、ＬＲＵ以外のアルゴリズムを用いてもよい。実施の形態１では、参照、もしくは置換したウェイの情報を入力するため、ウェイ選択信号１８を各ウェイ参照履歴２０１、２０２に入力しているが、置換方法を例えばＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ、Ｆｉｒｓｔ  Ｏｕｔ）にする場合は、キャッシュミスが発生し、ヒット信号１５から無効が入力された時のみ、ウェイ選択信号１８が各ウェイ参照履歴２０１、２０２に入力されるようにすることで、データが置換されたときのみウェイ参照履歴２０１、２０２を更新できるため、ＦＩＦＯを実現することができる。
【００３７】
また、ウェイを制限したときに格納できるウェイの数はいくつでもよい。一般にｎウェイセットアソシアティブ方式のキャッシュにおいて特定の範囲のデータをｉ個のウェイにのみ格納するようにした場合は、置換ウェイ制御部１７は０〜（ｉ−１）ウェイ参照履歴と０〜（ｎ−１）ウェイ参照履歴を持つ。
【００３８】
なお、図４のステップ２５では、アドレス範囲内（ウェイ制限信号２２が有効）であればｗａｙ０、ｗａｙ１のうちいずれかが選択され、アドレス範囲外（ウェイ制限信号２２が無効）であればｗａｙ０〜ｗａｙ３のうちいずれかのｗａｙが選択された。これは一例であり、置換ウェイ制御部１７（ウェイ選択部）は、ウェイ制限判定部２１によってアドレス範囲に含まれないと判定された場合は、複数のウェイのうちの指定ウェイ以外のウェイの中からデータ（キャッシュ対象データ）を書き込むウェイを選択するようにしてもよい。すなわち、アドレス範囲内の場合に格納するｗａｙとアドレス範囲外の場合に格納するｗａｙとで重複するｗａｙがないようにしてもよい。例えば、特定の範囲のデータ（所定のアドレス範囲のデータ）に対しては０〜（ｉ−１）ｗａｙのｉ個のウェイに格納し、それ以外のデータ（アドレスが前記所定のアドレス範囲に含まれないデータ）はｉ〜（ｎ−１）ｗａｙに格納するが、この場合、０〜（ｎ−１）ウェイ参照履歴の代わりに、ｉ〜（ｎ−１）ウェイ参照履歴を持つことによって格納するウェイを分けることができる。この場合、データを異なるウェイに格納するため、アクセス頻度の高いデータがアクセス頻度の低いデータによって追い出されることがなくなる。
【００３９】
実施の形態２．
図６は、実施の形態２におけるキャッシュ記憶装置２００の構成図である。キャッシュ記憶装置２００は、実施の形態１のキャッシュ記憶装置１００に、さらにプリフェッチ制御部４５が備わった構成である。このため、キャッシュ記憶装置１００と同一のものに対しては同一の番号を振り、説明は省略する。図８、図９は、リード時におけるキャッシュ記憶装置２００の動作のフローチャートであり、図１０はライト時におけるキャッシュ記憶装置２００の動作フローチャートである。これらを参照して説明する。
【００４０】
実施の形態２のプリフェッチ制御部４５は、キャッシュからのアドレス信号４２を経由してリード要求のあったデータがプリフェッチ制御部４５にある場合は、メモリへデータを取得せず、プリフェッチ制御部４５に格納しているデータをキャッシュへのデータ信号２７に出力し、その後、ヒットしたデータ（リード要求のあったデータ）の次の２ブロック分のデータをメモリから取得する。要求のあったデータがプリフェッチ制御部４５にない場合は、メモリからデータを取得してキャッシュにデータを返した後、データがある場合と同様に、その要求されたデータの次の２ブロック分のデータをメモリから取得し、プリフェッチ制御部４５に格納する。
【００４１】
プリフェッチ制御部４５の構成を図７に示す。本実施の形態２では２つのプリフェッチバッファ３０１、３０２（データ記憶部）を持つ。
（１）プリフェッチバッファ３０１、３０２にはそれぞれ、有効なデータが入っているかを示す有効ビット部、データのアドレス部、データ部が存在する。
（２）プリフェッチバッファ３０１、３０２のデータ部はキャッシュが保持するデータの２倍のサイズ（２ブロック分）のデータを格納する。
出力する際は、要求されたアドレスを含む１ブロック分のデータを出力する。
（３）アドレスレジスタ３０３は、キャッシュからのアドレス信号４２から入力されたアドレスを格納する。
（４）比較器３０４、３０５はアドレスレジスタ３０３にあるアドレスのデータが各プリフェッチバッファ３０１、３０２に格納されているかどうかを比較し、一致していれば１を出力する。
（５）スリーステートバッファ３０６、３０７はそれぞれ比較器３０４、３０５の比較結果が１の場合に、対応するプリフェッチバッファ３０１、３０２のデータを出力する。
（６）プリフェッチバッファ更新情報３０８はプリフェッチバッファ３０１、３０２が更新された時刻を記憶しておき、最も昔に更新されたバッファの選択信号を出力する。
（７）無効エントリ情報３０９はプリフェッチバッファ３０１、３０２の有効ビットから、エントリが無効になっているプリフェッチバッファを１つ選択し、その選択信号を出力する。
（８）バッファ選択信号生成部３１０はプリフェッチバッファ更新情報３０８のバッファ選択信号、無効エントリ情報３０９のバッファ選択信号、比較器３０４、３０５の中で１を出力したバッファの選択信号のいずれかを選択する。
（９）デマルチプレクサ３１１はメモリからのデータ信号４７を経由してメモリ取得したデータをバッファ選択信号生成部３１０で出力した選択信号に対応するプリフェッチバッファに出力する。
（１０）アドレス加算器３１２はアドレスレジスタ３０３のアドレスに一定の値を加算し、プリフェッチする次のブロックのアドレスを出力する。
（１１）ＯＲ回路３１３は、比較器３０４、３０５の結果のＯＲを出力するもので、いずれかのプリフェッチバッファに指定したアドレスのデータがあれば１を出力し、なければ０を出力する。
（１２）ＡＮＤ回路３１４は、キャッシュからのＲ／Ｗ信号４０とＯＲ回路３１３のＡＮＤを出力する。
（１３）セレクタ３１５は、選択信号に１が入力されれば、アドレス加算器３１２の出力を、選択信号に０が入力されればアドレスレジスタ３０３の値を出力する。
（１４）デマルチプレクサ３１６はセレクタ３１５が出力したアドレスをバッファ選択信号生成部３１０で指定したプリフェッチバッファのアドレスに出力する。
（１５）エントリ無効化部３１７は、ライトするデータがプリフェッチバッファ３０１、３０２に存在すれば、該当するエントリを無効にする。
【００４２】
図８、図９を参照してプリフェッチ制御部４５の動作について説明する。
【００４３】
キャッシュ（キャッシュ記憶装置２００のうちプリフェッチ制御部４５を除く部分を意味する。すなわちキャッシュ記憶装置１００相当である。以下、同じ）からリード要求が発生した場合は、キャッシュからのアドレス信号４２のアドレスがアドレスレジスタ３０３に格納される（Ｓ６１）。プリフェッチバッファ３０１、３０２の各アドレス部とアドレスレジスタ３０３の値をそれぞれ比較器３０４、３０５で比較し（Ｓ６２）、プリフェッチバッファ３０１、３０２にデータがあるかを調べる（Ｓ６３）。
【００４４】
プリフェッチバッファ３０１またはプリフェッチバッファ３０２にデータがある場合、該当するプリフェッチバッファの比較器が１を出力するため、データがスリーステートバッファ３０６、３０７のいずれかよりキャッシュへのデータ信号２７に出力される（Ｓ６４）。また、比較器３０４、３０５のいずれかの出力が１になることにより、ＯＲ回路３１３は１を出力する。また、キャッシュからのＲ／Ｗ信号４０も１が入力されていることから、ＡＮＤ回路３１４は１を出力するため（Ｓ６５）、セレクタ３１５はアドレス加算器３１２の加算結果を出力する（Ｓ６６）。よってメモリへのアドレス信号４６に加算されたアドレスが出力され、リード要求のあったアドレスの次の２ブロック分のデータがメモリから読み出される。
【００４５】
また、バッファ選択信号生成部３１０は、アドレスレジスタ３０３のデータが格納されているプリフェッチバッファの選択信号を出力する（Ｓ６７）。メモリからのデータ信号４７より取得されたデータは、デマルチプレクサ３１１を経由してプリフェッチバッファ３０１、３０２のうち、アドレスレジスタ３０３のデータが格納されていたプリフェッチバッファのデータ部に格納される（Ｓ６８）。同時にセレクタ３１５から出力されたアドレスも、デマルチプレクサ３１６を経由して同じプリフェッチバッファのアドレス部に格納される（Ｓ６９）。プリフェッチバッファにデータが書き込まれると、プリフェッチバッファ更新情報３０８と無効エントリ情報３０９が情報を更新する（Ｓ７０）。
【００４６】
一方、データがプリフェッチバッファ３０１、３０２に存在しなかった場合は、ＯＲ回路３１３の出力が０になるため、ＡＮＤ回路３１４の出力が０になり（Ｓ７１）、セレクタ３１５はアドレスレジスタ３０３のアドレスをメモリへのアドレス信号４６に出力し、メモリからデータを取得する（Ｓ７２）。プリフェッチバッファ更新情報３０８は、プリフェッチバッファ３０１、３０２の中で昔に更新されたほうのバッファの選択信号を出力し（Ｓ７３）、無効エントリ情報３０９は、無効エントリのバッファがあれば、その内の１つの選択信号を出力する（Ｓ７４）。バッファ選択信号生成部３１０は、無効エントリ情報３０９から出力があれば、無効エントリ情報の出力を、なければプリフェッチバッファ更新情報３０８の出力を出力する（Ｓ７５）。メモリからのデータ信号４７から入力されたデータは、セレクタ３１５から出力されたアドレスと共にデマルチプレクサ３１１、３１６を経由してバッファ選択信号生成部３１０で指定したプリフェッチバッファに書き込まれる（Ｓ７６）。そして、プリフェッチバッファ更新情報３０８と無効エントリ情報３０９は情報を更新する（Ｓ７７）。プリフェッチバッファにデータが書き込まれると、プリフェッチバッファ内にデータ書き込まれたバッファの比較器の出力が１になるので、スリーステートバッファ３０６〜３０７を経由してデータがキャッシュへのデータ信号２７に出力され、キャッシュにデータが返される（Ｓ７８）。
【００４７】
以上のように、キャッシュからリード要求があった場合は、プリフェッチバッファ３０１、３０２にデータが存在するかどうかを調べ、データがあればプリフェッチバッファ内のデータをキャッシュに返す。データがなければメモリからデータを取得し、プリフェッチバッファに入れた後、キャッシュに返す。
【００４８】
図１０を参照してライト要求の場合の動作を説明する。ライト要求が発生した場合の動作は以下のようになる。
【００４９】
キャッシュからのアドレス信号４２のアドレスをアドレスレジスタ３０３に格納する（Ｓ８１）。ライトの場合は、キャッシュからのＲ／Ｗ信号４０に０が入力されるため、ＡＮＤ回路３１４の出力は常に０になる（Ｓ８２）。よって、セレクタ３１５はアドレスレジスタ３０３の値を出力するため（Ｓ８３）、キャッシュからのデータ信号４３に入力されたデータは、メモリへのデータ信号４８を経由して、メモリに書き込まれる（Ｓ８４）。また、キャッシュからのアドレス信号４２のアドレスのデータがプリフェッチバッファにあった場合は、エントリ無効化部３１７が該当するプリフェッチバッファのデータを無効にし、無効エントリ情報３０９は情報を更新する（Ｓ８５）。
【００５０】
以上が実施の形態２の動作である。実施の形態２では、指定されたアドレスの範囲のデータが格納できるウェイを制限することに加え、プリフェッチ制御部４５によってメモリからあらかじめ次のブロックのデータを読み出しておく。実施の形態１では指定されたアドレスの範囲のデータは格納できるウェイが制限されるため、利用できるキャッシュの容量が小さくなる。このため、指定されたアドレスの範囲のデータに対するキャッシュミスが多く発生し、ＣＰＵがデータを取得する（平均）時間が長くなる可能性がある。一方、プログラムには短い時間で何度もアクセスされる時間的局所性の他に、アクセスされたアドレスの近くのアドレスのデータにアクセスされる空間的局所性がある。あらかじめ、リード要求のあったアドレスの次のブロックのデータをプリフェッチバッファ内に格納しておくことで、連続領域に対するアクセスがあった場合に、メモリへのアクセスすることがないため、キャッシュに高速にデータを返すことができる。
【００５１】
なお、実施の形態２では、ライト要求のあったデータがプリフェッチバッファに存在していた場合はデータを無効化するようにしたが、プリフェッチバッファを無効化せずに、書き込むデータに更新してもよい。キャッシュが格納できるデータの２倍のデータを一度にメモリから読み込んでキャッシュに格納するようにしたが、２ブロック以上のデータを読み込んでプリフェッチバッファに格納してもよい。また、１ブロックのメモリ読み出しを複数回行ってもよい。
【００５２】
以上の実施の形態では、セットアソシアティブ方式のキャッシュ記憶装置において、以下の（ａ）、（ｂ）、（ｃ）の手段を備えたキャッシュ記憶装置を説明した。
（ａ）キャッシュに格納するウェイを制限するアドレスの範囲を格納する手段と、
（ｂ）キャッシュに格納するデータのアドレスが前記アドレス範囲格納手段に格納しているアドレスの範囲に含まれるかを判定するウェイ制限判定手段と、
（ｃ）前記ウェイ制限判定手段により、ウェイを制限するデータと判定された場合はあらかじめ指定したウェイの中から置換するウェイを選択する置換ウェイ制御手段。
【００５３】
以上の実施の形態では、次のキャッシュ記憶装置を説明した。
前記置換ウェイ制御手段は、前記ウェイ制限判定手段にて前記アドレス範囲格納手段にて格納したアドレスの範囲内のデータと判定された場合はあらかじめ指定したウェイの中から置換するウェイを選択し、判定されなかった場合は前記のあらかじめ指定したウェイ以外のウェイの中から置換するウェイを選択するキャッシュ記憶装置。
【００５４】
以上の実施の形態では、
以下の（ｄ）の手段を備えるキャッシュ記憶装置を説明した。
（ｄ）メモリへのアクセスに対してプリフェッチを行い、キャッシュメモリに記憶するプリフェッチ制御手段。
【００５５】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記アドレス範囲格納手段にて格納したアドレスの範囲をもとにプリフェッチを行うキャッシュ装置記憶装置を説明した。
【００５６】
以上の実施の形態では、
以下の（ｅ）、（ｆ）の手段を備えるキャッシュ記憶装置を説明した。
（ｅ）メモリへのアクセスに対してプリフェッチを行うプリフェッチ制御手段と、
（ｆ）前記（ｅ）プリフェッチ制御手段にてプリフェッチしたデータを記憶するプリフェッチデータ記憶手段。
【００５７】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータをキャッシュメモリに格納せずに出力するキャッシュ記憶装置を説明した。
【００５８】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータを出力すると同時にキャッシュメモリに格納するキャッシュ装置を説明した。
【００５９】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータを出力すると同時にキャッシュメモリに格納し、その後さらにプリフェッチを行って前記プリフェッチデータ記憶手段に格納するキャッシュ記憶装置を説明した。
【符号の説明】
【００６０】
１  アドレスバッファ、２  アドレス信号、３  タグ、４  インデックスアドレス、５  オフセット、６〜９  有効ビット／タグバッファ、１０〜１３  データバッファ、１４  ヒット／ミス判定部、１５  ヒット信号、１６  ヒットウェイ信号、１７  置換ウェイ制御部、１８  ウェイ選択信号、１９  ウェイ制限開始アドレスレジスタ、２０  終了アドレスレジスタ、２１  ウェイ制限判定部、２２  ウェイ制限信号、２３，２４  セレクタ、２５  ＣＰＵからのＲ／Ｗ信号、２６  データ信号、２７  データ信号、２８  セレクタ、２９〜３６  スリーステートバッファ、３７  アドレスデコード部、３８  ＷＲＩＴＥバッファ、３９  メモリアクセス制御部、４０  Ｒ／Ｗ信号、４１  セレクタ、４２  アドレス信号、４３  データ信号、４４  ＣＰＵへのデータ信号、４５  プリフェッチ制御部、４６  アドレス信号、４７  データ信号、４８  データ信号、１００，２００  キャッシュ記憶装置、３０１，３０２  プリフェッチバッファ。
【図１】
2010191754.tif 000003
【図２】
2010191754.tif 000004
【図３】
2010191754.tif 000005
【図４】
2010191754.tif 000006
【図５】
2010191754.tif 000007
【図６】
2010191754.tif 000008
【図７】
2010191754.tif 000009
【図８】
2010191754.tif 000010
【図９】
2010191754.tif 000011
【図１０】
2010191754.tif 000012