説明

キャッシュ記憶装置

【課題】キャッシュのウェイを制限するかどうかをH/W側で判断することにより、S/W作成の負荷を軽減するキャッシュ記憶装置を提供する。
【解決手段】キャッシュ記憶装置100は、ウェイ制限開始アドレスレジスタ19とウェイ制限終了アドレスレジスタ20とからなるアドレス範囲格納部110と、ウェイ制限判定部21、置換ウェイ制御部17等を備えている。アドレス範囲格納部110は、所定のアドレスの範囲を示すアドレス範囲情報を格納する。ウェイ制限判定部21は、キャッシュ対象のキャッシュ対象データを格納するときに、キャッシュ対象データの持つアドレスがアドレス範囲格納部110のアドレス範囲情報の示す範囲内かどうかを判定する。置換ウェイ制御部17は、アドレス範囲に含まれると判定された場合には、ウェイ0、1のうち、最も過去に置換されたウェイを前記キャッシュ対象データを格納するウェイとして選択する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、キャッシュ記憶装置に関する。
【背景技術】
【0002】
従来、コンピュータシステムは、プロセッサの処理速度と比較してメモリアクセス速度が遅いため、メモリアクセスが性能に影響を及ぼす。特に近年ではプロセッサの高性能化によりプロセッサの処理速度とメモリアクセスとの差が大きくなっており、メモリアクセスによる影響は大きなものになっている。メモリアクセスの時間を短縮する手法として、メモリから取得したデータを一時的に記憶しておくキャッシュがある。プログラムには一度アクセスしたデータに近い時間に再びアクセスする局所性があることから、キャッシュにメモリ内のデータを保持しておくことで、メモリにアクセスする時間が省けるためプログラムを高速に実行することができる。
【0003】
一方、周期的に同じ処理を繰り返すシステムでは、前回実行した際に使用した命令やデータがキャッシュ内に残っていると、次に実行した際にはメモリにアクセスしなくてもデータを取得できるため、高速に処理を実行することができる。しかし、実際は、次に処理を実行するまでに他の処理のキャッシュミスによってキャッシュからデータが追い出されてしまうことが多い。
【0004】
処理によって実行される時間間隔が異なる場合、各処理でアクセスされる命令やデータの局所性が異なる。実行間隔が短い処理でアクセスされるデータの時間的局所性は高く、たまにしか実行されない処理でアクセスされるデータの時間的局所性は低い。実行間隔が短い処理のデータが、その他の処理によってキャッシュから追い出されてしまうと、処理を実行する度に同じデータを何度もメモリから読み出すことになり、実行時間が長くなる。このように、時間的局所性の高いデータがキャッシュから追い出されることは、メモリアクセスを頻発させることになり、効率が悪くなる。
【0005】
このような課題を解決するため、特許文献1のようなキャッシュが開示されている。特許文献1では、モード信号が入力されるとキャッシュを置き換えることができるウェイを制限することで、時間的局所性のあるデータが時間的局所性のないデータによってキャッシュから追い出されることを減少させている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−195304号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1ではウェイを制限するデータをプリフェッチ命令で取得する、あるいはプログラム中にウェイを制限することを明示するなど、キャッシュを意識したプログラムを作成する必要があり、S/W(Software)作成時の負荷が高くなる。
【0008】
本発明は、キャッシュのウェイを制限するかどうかをH/W(Hardware)側で判断することにより、S/W作成の負荷を軽減するキャッシュ記憶装置の提供を目的とする。
【課題を解決するための手段】
【0009】
この発明のキャッシュ記憶装置は、
複数のウェイを使用することにより、アドレスを持つデータを前記複数のウェイのいずれかのウェイにキャッシュするセットアソシアティブ方式のキャッシュ記憶装置において、
所定のアドレスの範囲を示すアドレス範囲情報を格納するアドレス範囲格納部と、
キャッシュ対象のキャッシュ対象データを格納するときに、前記キャッシュ対象データの持つアドレスが前記アドレス範囲格納部に格納されたアドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定するアドレス範囲判定部と、
前記アドレス範囲判定部によって前記アドレスが前記アドレスの範囲に含まれると判定された場合は、前記複数のウェイの全部よりも少ない数のウェイであって、あらかじめ指定されている少なくとも一つの指定ウェイの中から、前記アドレス範囲に属すると判定されたアドレスを持つ前記キャッシュ対象データを格納するウェイを選択するウェイ選択部と
を備えたことを特徴とする。
【発明の効果】
【0010】
この発明のキャッシュ記憶装置により、S/W作成の負荷を軽減するキャッシュ記憶装置を提供できる
【図面の簡単な説明】
【0011】
【図1】実施の形態1のキャッシュ記憶装置100の構成図。
【図2】実施の形態1のウェイ制限判定部21の構成図。
【図3】実施の形態1の置換ウェイ制御部17の構成図。
【図4】実施の形態1のキャッシュ記憶装置100の動作のフローチャート。
【図5】図4の続きのフローチャート。
【図6】実施の形態2のキャッシュ記憶装置200の構成図。
【図7】実施の形態2のプリフェッチ制御部45の構成図。
【図8】実施の形態2のキャッシュ記憶装置200の動作フローチャート。
【図9】図8の続きのフローチャート。
【図10】実施の形態2のキャッシュ記憶装置200のライト動作のフローチャート。
【発明を実施するための形態】
【0012】
実施の形態1.
図1〜図5を用いて実施の形態1のキャッシュ記憶装置100を説明する。以下に説明する実施の形態1のキャッシュ記憶装置100、実施の形態2のキャッシュ記憶装置200は、いずれもセットアソシアティブ方式のキャッシュ装置である。実施の形態1、2のキャッシュは例として4ウェイのセットアソシアティブであり、ウェイを制限する場合は、way0またはway1のいずれかにデータを格納する。
【0013】
キャッシュ記憶装置100は、ウェイを制限するかどうかをH/W(キャッシュ記憶装置側)で自動的に判断して制御する。キャッシュ記憶装置100では、置換するウェイを制限するデータの範囲(アドレスの範囲)をあらかじめ指定しておく。そして、指定されたアドレス範囲のデータへのCPU(Central Processing Unit)によるアクセスに対してはH/Wで自動的にウェイを制限することができる。これによって、S/Wはウェイを制限したいデータのメモリ配置のみを考慮すればよく、S/W作成上の負荷が小さくなる。
【0014】
図1は、キャッシュ記憶装置100の構成図である。キャッシュ記憶装置100は、ウェイ制限開始アドレスレジスタ19とウェイ制限終了アドレスレジスタ20とからなるアドレス範囲格納部110と、ウェイ制限判定部21(アドレス範囲判定部)と、置換ウェイ制御部17(ウェイ選択部)等を備えている。各構成要素の機能は後述する。
【0015】
アドレスバッファ1は、CPUからのアドレス信号2より要求されたアドレスを格納する。アドレスバッファ1のアドレスはタグアドレス3、インデックスアドレス4、オフセットアドレス5の3つに分解することができる。
【0016】
(1)有効ビット/タグバッファ6〜9は、それぞれway0〜way3の有効ビットとタグアドレスを格納し、データバッファ10〜13はそれぞれway0〜way3のデータを格納する。
(2)ヒット/ミス判定部14は、アクセス要求のあったデータがキャッシュに格納されているかどうかを判定し、結果をヒット信号15に出力すると共に、ヒット時のウェイをヒットウェイ信号16に出力する。
(3)置換ウェイ制御部17は、キャッシュヒット時はヒットしたウェイを、キャッシュミス時は置換するウェイをウェイ選択信号18に出力する。
(4)ウェイ制限開始アドレスレジスタ19は、ウェイ制限を行う範囲の最初のアドレスを格納し、ウェイ制限終了アドレスレジスタ20は、ウェイ制限を行う範囲の最後のアドレスを格納する。最初のアドレスと最後のアドレスとは、ウェイ制限の対象のアドレス範囲を示すアドレス範囲情報である。
(5)ウェイ制限判定部21は、アクセス要求のあったアドレスがウェイ制限開始アドレスレジスタ19とウェイ制限終了アドレスレジスタ20で指定した範囲内に含まれるかどうかを判定し、結果をウェイ制限信号22に出力する。
(6)セレクタ23、24は、それぞれウェイ選択信号18をもとに指定されたウェイのタグまたはデータを出力する。
(7)CPUからのR/W信号25は、リード要求かライト要求かを区別する信号であり、CPUからのデータ信号26は、CPUからのR/W信号25がライトであった場合に、書き込まれるデータを表す。
(8)キャッシュへのデータ信号27は、メモリ(メインメモリあるいは主記憶装置ともよばれる)から読み込まれたデータである。
(9)セレクタ28は、CPUからのR/W信号25に応じて、CPUからのデータ信号26かキャッシュへのデータ信号27を出力する。
(10)スリーステートバッファ29、30は、ウェイ選択信号18から出力されたウェイがway0であれば、入力されたデータを出力し、それぞれ有効ビット/タグバッファ6、データバッファ10に書き込む。
(11)スリーステートバッファ31〜36も同様に、ウェイ選択信号18の値によって選択された場合のみ入力されたデータを出力してバッファに書き込む。
(12)アドレスデコード部37は、インデックスアドレス4とキャッシュミス時に置換するデータのタグから置換するデータのアドレスを作成する。
(13)WRITEバッファ38は、セレクタ24から出力されたキャッシュミスによる置換の際にメモリに書き込むデータと、アドレスデコード部37にて生成されたアドレスを格納する。
(14)メモリアクセス制御部39は、キャッシュミス時にはメモリからデータを取得し、データを置換する際には追い出されるデータをメモリに書き込むなどのメモリへのリードライト制御を行うための、キャッシュからのR/W信号40を出力する。
(15)セレクタ41は、キャッシュからのR/W信号40をもとに、キャッシュミス時にメモリから取得するデータのアドレスもしくはメモリに書き込むデータのアドレスを出力する。キャッシュからのアドレス信号42は、キャッシュからメモリへアクセスするアドレス、キャッシュからのデータ信号43はデータをメモリへ書き込むデータを表す。
(16)CPUへのデータ信号44は、データバッファ10〜13のうち、セレクタ24から出力されたデータをCPUに渡す。
【0017】
図4、図5は、リード時のキャッシュ記憶装置100のフローチャートである。これらを参照して説明する。リード時の動作は以下の通りである。
【0018】
まず、CPUからのアドレス信号2から入力されたアドレスがアドレスバッファ1に格納される(S11)。次にway0〜way3の各有効ビット/タグバッファ6〜9は、インデックスアドレス4に対応するタグアドレスを出力し(S12)、ヒット/ミス判定部14は有効ビット/タグバッファ6〜9の出力の中にタグアドレス3と一致するものがあるかを判定し、キャッシュにデータがヒットするかを調べる(S13,S14)。
【0019】
(キャッシュヒット時)
キャッシュヒット時はヒット/ミス判定部14がヒット信号15を有効にし、ヒットウェイ信号16にデータが格納されているウェイを出力する(S15)。置換ウェイ制御部17はヒットウェイ信号16で指定したウェイをウェイ選択信号18に出力する(S16)。セレクタ24はデータバッファ10〜13に格納されているインデックスアドレス4に対応するデータの中のから、ウェイ選択信号18で指定したウェイのデータをCPUへのデータ信号44に出力して(S17)、データをCPUに返す。
【0020】
(キャッシュミス時)
キャッシュミス時は、ヒット/ミス判定部14がヒット信号15を無効にする(S21)。
【0021】
ウェイ制限判定部21は、アクセス要求のあったアドレス1がウェイ制限開始アドレスレジスタ19とウェイ制限終了アドレスレジスタ20で指定した範囲内であるかを判定する(S22)。アドレス1がウェイ制限開始アドレスレジスタ19とウェイ制限終了アドレスレジスタ20との範囲内のときは、ウェイ制限判定部21は、ウェイ制限信号22を有効にし(S23)、範囲外のときはウェイ制限信号22を無効にする(S24)。
【0022】
置換ウェイ制御部17は、アクセス要求のあったデータ(キャッシュ対象データ)をキャッシュに格納するウェイを選択し、ウェイ選択信号18に出力する。置換ウェイ制御部17は、ウェイ制限信号22が無効の場合は、way0〜way3の中で最も昔にアクセスされたウェイを選択し、ウェイ制限信号22が有効の場合は、way0〜way1(指定ウェイ)の中でアクセスが古いほう(所定の選択基準)のウェイを選択する(S25)。また、置換する際に追い出されるデータをメモリに書き戻す。
【0023】
アドレスデコード部37は、セレクタ23から出力された追い出されるデータのタグアドレスとインデックスアドレス4からメモリに書き戻すデータのアドレスを作成し、WRITEバッファ38に格納する(S26)。WRITEバッファ38はアドレスデコード部37が出力したアドレスと、セレクタ24から出力されたデータを格納する(S27)。WRITEバッファ38にキャッシュから追い出されるデータとアドレスを格納した後、メモリアクセス制御部39は、リード信号をキャッシュからのR/W信号40に出力する(S28)。セレクタ41はアドレス1をキャッシュからのアドレス信号42に出力し、メモリからデータを取得する(S29)。取得したデータはキャッシュへのデータ信号27に出力され、セレクタ28を経由してスリーステートバッファ30、32、34、36に入力される(S30)。ウェイ選択信号18で指定したウェイのスリーステートバッファのみが入力されたデータを出力するため(S31)、データバッファ10〜13のうち、該当するバッファにデータが格納される。データバッファにデータが格納されると同時にタグアドレス3も有効ビット/タグバッファ6〜9のうち、ウェイ選択信号18で指定されたウェイに書き込まれる(S32)。
【0024】
以上のようにしてデータがキャッシュに格納される。その後、データバッファに格納されたデータがセレクタ24を経由してCPUへのデータ信号44を通してCPUへ送られる。 最後に、キャッシュから追い出されたデータをメモリに書き込むため、メモリアクセス制御部39はキャッシュからのR/W信号40にライト信号を出力する。その後、WRITEバッファ38に格納してあるデータをキャッシュからのデータ信号43に出力し、アドレスをセレクタ41に出力する。セレクタ41はキャッシュからのR/W信号40がライト信号であることから、WRITEバッファ38から出力されたアドレスをアドレス信号42に出力し、メモリにデータを書き込む。
【0025】
以上がリード時の動作である。
【0026】
ライトは、アドレス1のデータがキャッシュにあるかどうかをヒット/ミス判定部14で判定するまでの動作はリード時と同じである。キャッシュヒット時は、セレクタ28はCPUからのデータ信号26を出力し、データバッファ10〜13のうち、ウェイ選択信号18で指定した該当するデータバッファにデータを書き込む。キャッシュミス時は、リード時と同様に、置換ウェイ制御部17がデータを置換するウェイをウェイ選択信号18に出力し、WRITEバッファ38に置換するウェイのデータと、アドレスデコード部37でデコードしたアドレスを格納する。
【0027】
本実施の形態1では、ライト時にデータがキャッシュになかった場合、一度データをキャッシュに格納するようにしたが、キャッシュに格納せずに、直接メモリに書き込むようにしてもよい。
【0028】
図2はウェイ制限判定部21の構成例である。ウェイ制限判定部21は2つの比較器101、102と1つのAND回路103から構成される。
【0029】
アドレス1が入力されると、比較器101がアドレス1の値とウェイ制限開始アドレスレジスタ19の値を比較する。アドレス1の値がウェイ制限開始アドレス以上であれば、比較器1は‘1’を出力する。同時に、比較器102がアドレス1の値とウェイ制限終了アドレスレジスタ20の値を比較し、アドレス1の値がウェイ制限開始アドレス以下であれば、‘1’を出力する。これら2つの比較結果信号をAND回路103にてANDした結果をウェイ制限信号22に出力する。
【0030】
以上のようにして、アクセス要求のあったアドレス1がウェイを制限するかどうかを判定する。
【0031】
なお、本実施の形態1では、ウェイを制限するアドレス範囲(アドレス範囲情報の一例)を開始アドレスと終了アドレスとを用いて判定したが一例である。例えば、「開始アドレスと開始アドレスからのサイズ」(アドレス範囲情報の別の例)とで判定するように構成してもよい。
【0032】
図3は置換ウェイ制御部17の構成図である。本実施の形態1では、制限されたデータはway0またはway1に格納し、それ以外のデータはway0〜way3に格納されるようにしている。0〜1ウェイ参照履歴201はウェイ制限信号22によって格納できるウェイが制限された際に格納可能なウェイ(way0、way1)の更新・参照履歴を記憶し、入力されたインデックスアドレス4に対して置換するウェイを出力する手段であり、0〜3ウェイ参照履歴202は全てのウェイ(way0〜way3)の更新・参照履歴を記憶し、入力されたインデックスアドレス4に対して置換するウェイを出力する手段である。セレクタ203、204はそれぞれウェイ制限信号22、ヒット信号15の値に応じて入力されたデータのいずれかを出力する。
【0033】
置換ウェイ制御部17の動作を説明する。
【0034】
(1)まず、0〜1ウェイ参照履歴201、0〜3ウェイ参照履歴202が、インデックスアドレス3に対応したウェイの中からデータを置換するウェイをそれぞれ出力し、セレクタ203に入力する。
置換するウェイはLRU(Least Recently Used)にて決定する。LRUは最後に参照されたのが最も古いウェイを選択するアルゴリズムである。
(2)セレクタ203はウェイ制限信号22が有効の場合は、0〜1ウェイ参照履歴201から出力されたウェイを出力し、ウェイ制限信号22が無効の場合は、0〜3ウェイ参照履歴202から出力されたウェイを出力する。
(3)セレクタ204はヒット信号15が有効の場合は、ヒットウェイ信号16をウェイ選択信号18に出力し、ヒット信号15が無効の場合は、セレクタ203の出力ウェイをウェイ選択信号18に出力する。こうすることで、ウェイ選択信号18にはキャッシュにヒットした場合は、データが格納されているウェイが出力され、キャッシュにミスした場合はデータを格納する(置換する)ウェイがウェイ選択信号18に出力される。同時に、ウェイ選択信号18のデータは0〜1ウェイ参照履歴201と0〜3ウェイ参照履歴202に入力され、ウェイの参照履歴を更新する。
【0035】
以上が実施の形態1の構成と動作である。本構成では、ウェイ制限開始アドレスレジスタ19、ウェイ制限終了アドレスレジスタ20で指定した範囲内のデータは、way0、way1にしか格納されない。そのため、アクセス頻度の低いデータをアドレスの範囲に指定することで、アクセス頻度の高いデータがキャッシュから追い出される可能性が少なくなる。そのため、キャッシュミスが削減し、メモリアクセス時間を省くことができ、高速に処理を実行することができる。
【0036】
実施の形態1では、置換ウェイを決定するアルゴリズムとしてLRUを用いたが、LRU以外のアルゴリズムを用いてもよい。実施の形態1では、参照、もしくは置換したウェイの情報を入力するため、ウェイ選択信号18を各ウェイ参照履歴201、202に入力しているが、置換方法を例えばFIFO(First In、First Out)にする場合は、キャッシュミスが発生し、ヒット信号15から無効が入力された時のみ、ウェイ選択信号18が各ウェイ参照履歴201、202に入力されるようにすることで、データが置換されたときのみウェイ参照履歴201、202を更新できるため、FIFOを実現することができる。
【0037】
また、ウェイを制限したときに格納できるウェイの数はいくつでもよい。一般にnウェイセットアソシアティブ方式のキャッシュにおいて特定の範囲のデータをi個のウェイにのみ格納するようにした場合は、置換ウェイ制御部17は0〜(i−1)ウェイ参照履歴と0〜(n−1)ウェイ参照履歴を持つ。
【0038】
なお、図4のステップ25では、アドレス範囲内(ウェイ制限信号22が有効)であればway0、way1のうちいずれかが選択され、アドレス範囲外(ウェイ制限信号22が無効)であればway0〜way3のうちいずれかのwayが選択された。これは一例であり、置換ウェイ制御部17(ウェイ選択部)は、ウェイ制限判定部21によってアドレス範囲に含まれないと判定された場合は、複数のウェイのうちの指定ウェイ以外のウェイの中からデータ(キャッシュ対象データ)を書き込むウェイを選択するようにしてもよい。すなわち、アドレス範囲内の場合に格納するwayとアドレス範囲外の場合に格納するwayとで重複するwayがないようにしてもよい。例えば、特定の範囲のデータ(所定のアドレス範囲のデータ)に対しては0〜(i−1)wayのi個のウェイに格納し、それ以外のデータ(アドレスが前記所定のアドレス範囲に含まれないデータ)はi〜(n−1)wayに格納するが、この場合、0〜(n−1)ウェイ参照履歴の代わりに、i〜(n−1)ウェイ参照履歴を持つことによって格納するウェイを分けることができる。この場合、データを異なるウェイに格納するため、アクセス頻度の高いデータがアクセス頻度の低いデータによって追い出されることがなくなる。
【0039】
実施の形態2.
図6は、実施の形態2におけるキャッシュ記憶装置200の構成図である。キャッシュ記憶装置200は、実施の形態1のキャッシュ記憶装置100に、さらにプリフェッチ制御部45が備わった構成である。このため、キャッシュ記憶装置100と同一のものに対しては同一の番号を振り、説明は省略する。図8、図9は、リード時におけるキャッシュ記憶装置200の動作のフローチャートであり、図10はライト時におけるキャッシュ記憶装置200の動作フローチャートである。これらを参照して説明する。
【0040】
実施の形態2のプリフェッチ制御部45は、キャッシュからのアドレス信号42を経由してリード要求のあったデータがプリフェッチ制御部45にある場合は、メモリへデータを取得せず、プリフェッチ制御部45に格納しているデータをキャッシュへのデータ信号27に出力し、その後、ヒットしたデータ(リード要求のあったデータ)の次の2ブロック分のデータをメモリから取得する。要求のあったデータがプリフェッチ制御部45にない場合は、メモリからデータを取得してキャッシュにデータを返した後、データがある場合と同様に、その要求されたデータの次の2ブロック分のデータをメモリから取得し、プリフェッチ制御部45に格納する。
【0041】
プリフェッチ制御部45の構成を図7に示す。本実施の形態2では2つのプリフェッチバッファ301、302(データ記憶部)を持つ。
(1)プリフェッチバッファ301、302にはそれぞれ、有効なデータが入っているかを示す有効ビット部、データのアドレス部、データ部が存在する。
(2)プリフェッチバッファ301、302のデータ部はキャッシュが保持するデータの2倍のサイズ(2ブロック分)のデータを格納する。
出力する際は、要求されたアドレスを含む1ブロック分のデータを出力する。
(3)アドレスレジスタ303は、キャッシュからのアドレス信号42から入力されたアドレスを格納する。
(4)比較器304、305はアドレスレジスタ303にあるアドレスのデータが各プリフェッチバッファ301、302に格納されているかどうかを比較し、一致していれば1を出力する。
(5)スリーステートバッファ306、307はそれぞれ比較器304、305の比較結果が1の場合に、対応するプリフェッチバッファ301、302のデータを出力する。
(6)プリフェッチバッファ更新情報308はプリフェッチバッファ301、302が更新された時刻を記憶しておき、最も昔に更新されたバッファの選択信号を出力する。
(7)無効エントリ情報309はプリフェッチバッファ301、302の有効ビットから、エントリが無効になっているプリフェッチバッファを1つ選択し、その選択信号を出力する。
(8)バッファ選択信号生成部310はプリフェッチバッファ更新情報308のバッファ選択信号、無効エントリ情報309のバッファ選択信号、比較器304、305の中で1を出力したバッファの選択信号のいずれかを選択する。
(9)デマルチプレクサ311はメモリからのデータ信号47を経由してメモリ取得したデータをバッファ選択信号生成部310で出力した選択信号に対応するプリフェッチバッファに出力する。
(10)アドレス加算器312はアドレスレジスタ303のアドレスに一定の値を加算し、プリフェッチする次のブロックのアドレスを出力する。
(11)OR回路313は、比較器304、305の結果のORを出力するもので、いずれかのプリフェッチバッファに指定したアドレスのデータがあれば1を出力し、なければ0を出力する。
(12)AND回路314は、キャッシュからのR/W信号40とOR回路313のANDを出力する。
(13)セレクタ315は、選択信号に1が入力されれば、アドレス加算器312の出力を、選択信号に0が入力されればアドレスレジスタ303の値を出力する。
(14)デマルチプレクサ316はセレクタ315が出力したアドレスをバッファ選択信号生成部310で指定したプリフェッチバッファのアドレスに出力する。
(15)エントリ無効化部317は、ライトするデータがプリフェッチバッファ301、302に存在すれば、該当するエントリを無効にする。
【0042】
図8、図9を参照してプリフェッチ制御部45の動作について説明する。
【0043】
キャッシュ(キャッシュ記憶装置200のうちプリフェッチ制御部45を除く部分を意味する。すなわちキャッシュ記憶装置100相当である。以下、同じ)からリード要求が発生した場合は、キャッシュからのアドレス信号42のアドレスがアドレスレジスタ303に格納される(S61)。プリフェッチバッファ301、302の各アドレス部とアドレスレジスタ303の値をそれぞれ比較器304、305で比較し(S62)、プリフェッチバッファ301、302にデータがあるかを調べる(S63)。
【0044】
プリフェッチバッファ301またはプリフェッチバッファ302にデータがある場合、該当するプリフェッチバッファの比較器が1を出力するため、データがスリーステートバッファ306、307のいずれかよりキャッシュへのデータ信号27に出力される(S64)。また、比較器304、305のいずれかの出力が1になることにより、OR回路313は1を出力する。また、キャッシュからのR/W信号40も1が入力されていることから、AND回路314は1を出力するため(S65)、セレクタ315はアドレス加算器312の加算結果を出力する(S66)。よってメモリへのアドレス信号46に加算されたアドレスが出力され、リード要求のあったアドレスの次の2ブロック分のデータがメモリから読み出される。
【0045】
また、バッファ選択信号生成部310は、アドレスレジスタ303のデータが格納されているプリフェッチバッファの選択信号を出力する(S67)。メモリからのデータ信号47より取得されたデータは、デマルチプレクサ311を経由してプリフェッチバッファ301、302のうち、アドレスレジスタ303のデータが格納されていたプリフェッチバッファのデータ部に格納される(S68)。同時にセレクタ315から出力されたアドレスも、デマルチプレクサ316を経由して同じプリフェッチバッファのアドレス部に格納される(S69)。プリフェッチバッファにデータが書き込まれると、プリフェッチバッファ更新情報308と無効エントリ情報309が情報を更新する(S70)。
【0046】
一方、データがプリフェッチバッファ301、302に存在しなかった場合は、OR回路313の出力が0になるため、AND回路314の出力が0になり(S71)、セレクタ315はアドレスレジスタ303のアドレスをメモリへのアドレス信号46に出力し、メモリからデータを取得する(S72)。プリフェッチバッファ更新情報308は、プリフェッチバッファ301、302の中で昔に更新されたほうのバッファの選択信号を出力し(S73)、無効エントリ情報309は、無効エントリのバッファがあれば、その内の1つの選択信号を出力する(S74)。バッファ選択信号生成部310は、無効エントリ情報309から出力があれば、無効エントリ情報の出力を、なければプリフェッチバッファ更新情報308の出力を出力する(S75)。メモリからのデータ信号47から入力されたデータは、セレクタ315から出力されたアドレスと共にデマルチプレクサ311、316を経由してバッファ選択信号生成部310で指定したプリフェッチバッファに書き込まれる(S76)。そして、プリフェッチバッファ更新情報308と無効エントリ情報309は情報を更新する(S77)。プリフェッチバッファにデータが書き込まれると、プリフェッチバッファ内にデータ書き込まれたバッファの比較器の出力が1になるので、スリーステートバッファ306〜307を経由してデータがキャッシュへのデータ信号27に出力され、キャッシュにデータが返される(S78)。
【0047】
以上のように、キャッシュからリード要求があった場合は、プリフェッチバッファ301、302にデータが存在するかどうかを調べ、データがあればプリフェッチバッファ内のデータをキャッシュに返す。データがなければメモリからデータを取得し、プリフェッチバッファに入れた後、キャッシュに返す。
【0048】
図10を参照してライト要求の場合の動作を説明する。ライト要求が発生した場合の動作は以下のようになる。
【0049】
キャッシュからのアドレス信号42のアドレスをアドレスレジスタ303に格納する(S81)。ライトの場合は、キャッシュからのR/W信号40に0が入力されるため、AND回路314の出力は常に0になる(S82)。よって、セレクタ315はアドレスレジスタ303の値を出力するため(S83)、キャッシュからのデータ信号43に入力されたデータは、メモリへのデータ信号48を経由して、メモリに書き込まれる(S84)。また、キャッシュからのアドレス信号42のアドレスのデータがプリフェッチバッファにあった場合は、エントリ無効化部317が該当するプリフェッチバッファのデータを無効にし、無効エントリ情報309は情報を更新する(S85)。
【0050】
以上が実施の形態2の動作である。実施の形態2では、指定されたアドレスの範囲のデータが格納できるウェイを制限することに加え、プリフェッチ制御部45によってメモリからあらかじめ次のブロックのデータを読み出しておく。実施の形態1では指定されたアドレスの範囲のデータは格納できるウェイが制限されるため、利用できるキャッシュの容量が小さくなる。このため、指定されたアドレスの範囲のデータに対するキャッシュミスが多く発生し、CPUがデータを取得する(平均)時間が長くなる可能性がある。一方、プログラムには短い時間で何度もアクセスされる時間的局所性の他に、アクセスされたアドレスの近くのアドレスのデータにアクセスされる空間的局所性がある。あらかじめ、リード要求のあったアドレスの次のブロックのデータをプリフェッチバッファ内に格納しておくことで、連続領域に対するアクセスがあった場合に、メモリへのアクセスすることがないため、キャッシュに高速にデータを返すことができる。
【0051】
なお、実施の形態2では、ライト要求のあったデータがプリフェッチバッファに存在していた場合はデータを無効化するようにしたが、プリフェッチバッファを無効化せずに、書き込むデータに更新してもよい。キャッシュが格納できるデータの2倍のデータを一度にメモリから読み込んでキャッシュに格納するようにしたが、2ブロック以上のデータを読み込んでプリフェッチバッファに格納してもよい。また、1ブロックのメモリ読み出しを複数回行ってもよい。
【0052】
以上の実施の形態では、セットアソシアティブ方式のキャッシュ記憶装置において、以下の(a)、(b)、(c)の手段を備えたキャッシュ記憶装置を説明した。
(a)キャッシュに格納するウェイを制限するアドレスの範囲を格納する手段と、
(b)キャッシュに格納するデータのアドレスが前記アドレス範囲格納手段に格納しているアドレスの範囲に含まれるかを判定するウェイ制限判定手段と、
(c)前記ウェイ制限判定手段により、ウェイを制限するデータと判定された場合はあらかじめ指定したウェイの中から置換するウェイを選択する置換ウェイ制御手段。
【0053】
以上の実施の形態では、次のキャッシュ記憶装置を説明した。
前記置換ウェイ制御手段は、前記ウェイ制限判定手段にて前記アドレス範囲格納手段にて格納したアドレスの範囲内のデータと判定された場合はあらかじめ指定したウェイの中から置換するウェイを選択し、判定されなかった場合は前記のあらかじめ指定したウェイ以外のウェイの中から置換するウェイを選択するキャッシュ記憶装置。
【0054】
以上の実施の形態では、
以下の(d)の手段を備えるキャッシュ記憶装置を説明した。
(d)メモリへのアクセスに対してプリフェッチを行い、キャッシュメモリに記憶するプリフェッチ制御手段。
【0055】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記アドレス範囲格納手段にて格納したアドレスの範囲をもとにプリフェッチを行うキャッシュ装置記憶装置を説明した。
【0056】
以上の実施の形態では、
以下の(e)、(f)の手段を備えるキャッシュ記憶装置を説明した。
(e)メモリへのアクセスに対してプリフェッチを行うプリフェッチ制御手段と、
(f)前記(e)プリフェッチ制御手段にてプリフェッチしたデータを記憶するプリフェッチデータ記憶手段。
【0057】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータをキャッシュメモリに格納せずに出力するキャッシュ記憶装置を説明した。
【0058】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータを出力すると同時にキャッシュメモリに格納するキャッシュ装置を説明した。
【0059】
以上の実施の形態では、
前記プリフェッチ制御手段は、前記プリフェッチデータ記憶手段に記憶されているデータに対するアクセス要求があった場合は、要求のあったデータを出力すると同時にキャッシュメモリに格納し、その後さらにプリフェッチを行って前記プリフェッチデータ記憶手段に格納するキャッシュ記憶装置を説明した。
【符号の説明】
【0060】
1 アドレスバッファ、2 アドレス信号、3 タグ、4 インデックスアドレス、5 オフセット、6〜9 有効ビット/タグバッファ、10〜13 データバッファ、14 ヒット/ミス判定部、15 ヒット信号、16 ヒットウェイ信号、17 置換ウェイ制御部、18 ウェイ選択信号、19 ウェイ制限開始アドレスレジスタ、20 終了アドレスレジスタ、21 ウェイ制限判定部、22 ウェイ制限信号、23,24 セレクタ、25 CPUからのR/W信号、26 データ信号、27 データ信号、28 セレクタ、29〜36 スリーステートバッファ、37 アドレスデコード部、38 WRITEバッファ、39 メモリアクセス制御部、40 R/W信号、41 セレクタ、42 アドレス信号、43 データ信号、44 CPUへのデータ信号、45 プリフェッチ制御部、46 アドレス信号、47 データ信号、48 データ信号、100,200 キャッシュ記憶装置、301,302 プリフェッチバッファ。

【特許請求の範囲】
【請求項1】
複数のウェイを使用することにより、アドレスを持つデータを前記複数のウェイのいずれかのウェイにキャッシュするセットアソシアティブ方式のキャッシュ記憶装置において、
所定のアドレスの範囲を示すアドレス範囲情報を格納するアドレス範囲格納部と、
キャッシュ対象のキャッシュ対象データを格納するときに、前記キャッシュ対象データの持つアドレスが前記アドレス範囲格納部に格納されたアドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定するアドレス範囲判定部と、
前記アドレス範囲判定部によって前記アドレスが前記アドレスの範囲に含まれると判定された場合は、前記複数のウェイの全部よりも少ない数のウェイであって、あらかじめ指定されている少なくとも一つの指定ウェイの中から、前記アドレス範囲に属すると判定されたアドレスを持つ前記キャッシュ対象データを格納するウェイを選択するウェイ選択部と
を備えたことを特徴とするキャッシュ記憶装置。
【請求項2】
前記ウェイ選択部は、
前記アドレス範囲判定部によって前記アドレスが前記アドレス範囲情報の示す前記アドレスの範囲に含まれないと判定された場合は、前記複数のウェイのうちの前記指定ウェイ以外のウェイの中から、前記アドレスの範囲に含まれないと判定された前記アドレスを持つ前記キャッシュ対象データを書き込むウェイを選択することを特徴とする請求項1に記載のキャッシュ記憶装置。
【請求項3】
前記キャッシュ記憶装置は、さらに、
データを記憶するデータ記憶部を有すると共にキャッシュミスが生じた場合に前記データ記憶部に前記キャッシュミスのデータと同じデータが記憶されているかを判定し、記憶されていると判定した場合には前記データを前記キャッシュ対象データとして出力するプリフェッチ制御部を備え、
前記アドレス範囲判定部は、
前記プリフェッチ制御部により前記キャッシュ対象データとして出力された前記データを格納するときに、前記データの持つアドレスが前記アドレス範囲情報の示す前記アドレスの範囲に含まれるかどうかを判定することを特徴とする請求項1または2のいずれかに記載のキャッシュ記憶装置。
【請求項4】
前記プリフェッチ制御部は、
前記データ記憶部に記憶されている前記データに対するリード要求があった場合は、リード要求のあった前記データをCPU(Central Processing Unit)に直接出力することを特徴とする請求項3記載のキャッシュ記憶装置。
【請求項5】
前記プリフェッチ制御部は、
前記データ記憶部に記憶されている前記データを前記キャッシュ対象データとして出力するときには、メインメモリから所定のアドレス範囲のデータを取得し、取得した前記データを前記データ記憶部に格納することを特徴とする請求項3または4のいずれかに記載のキャッシュ記憶装置。
【請求項6】
前記プリフェッチ制御部は、
キャッシュミスが生じた場合に前記データ記憶部に前記キャッシュミスのデータと同じデータが記憶されているかを判定し、記憶されていないと判定した場合には、前記キャッシュミスのデータを含む所定のアドレスの範囲のデータをメインメモリから取得し、取得した前記データを前記データ記憶部に格納することを特徴とする請求項3〜5のいずれかに記載のキャッシュ記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate