(57)【特許請求の範囲】
【請求項１】
命令キャッシュタグの検索に用いるｎ（ｎは自然数）ビットのキャッシュインデックスに対し、前記キャッシュインデックスの各ビットに各々対応するｎ段のマルチプレクサ群によって前記キャッシュインデックスが示すエントリを選択するレジスタファイルを備え、
前記ｎ段のマルチプレクサ群のうち、前記キャッシュインデックスのうち最下位からｍビット目（ｍはｎ以下の自然数）の値を制御信号として用いるｍ段目のマルチプレクサ群は、２の（ｍ−１）乗個のマルチプレクス回路を有し、前記制御信号に応じてｍ段目のマルチプレクサ群に含まれる全てのマルチプレクス回路を切り替えることを特徴とするキャッシュ装置。
【請求項２】
前回に登録したキャッシュラインアドレスと次に登録するキャッシュラインアドレスとが連続する場合に、前回の登録時と同一ＷＡＹを選択するＷＡＹ選択部をさらに備えたことを特徴とする請求項１に記載のキャッシュ装置。
【請求項３】
前記前回に登録したキャッシュラインアドレスがアドレスの最大値である場合および／または前記次に登録するキャッシュラインアドレスがアドレスの最小値である場合に、前記ＷＡＹ選択部は、前回登録時と異なるＷＡＹを選択することを特徴とする請求項２に記載のキャッシュ装置。
【請求項４】
前記前回に登録したキャッシュラインアドレスがアドレスおよび／または前記次に登録するキャッシュラインアドレスが所定のアドレスである場合に、前記ＷＡＹ選択部は、前回登録時と異なるＷＡＹを選択することを特徴とする請求項２に記載のキャッシュ装置。
【請求項５】
命令を保持する命令キャッシュ装置と
前記命令を処理する命令処理部を備え、
命令キャッシュタグの検索に用いるｎ（ｎは自然数）ビットのキャッシュインデックスに対し、前記キャッシュインデックスの各ビットに各々対応するｎ段のマルチプレクサ群によって前記キャッシュインデックスが示すエントリを選択するレジスタファイルを備え、
前記ｎ段のマルチプレクサ群のうち、前記キャッシュインデックスのうち最下位からｍビット目（ｍはｎ以下の自然数）の値を制御信号として用いるｍ段目のマルチプレクサ群は、２の（ｍ−１）乗個のマルチプレクス回路を有し、前記制御信号に応じてｍ段目のマルチプレクサ群に含まれる全てのマルチプレクス回路を切り替えることを特徴とする演算処理装置。
【請求項６】
演算処理装置と、前記演算処理装置に命令を供給する記憶装置を有する情報処理装置において、
前記演算処理装置は、
前記命令を保持する命令キャッシュ装置と
前記命令を処理する命令処理部を備え、
前記命令キャッシュ装置は、
命令キャッシュタグの検索に用いるｎ（ｎは自然数）ビットのキャッシュインデックスに対し、前記キャッシュインデックスの各ビットに各々対応するｎ段のマルチプレクサ群によって前記キャッシュインデックスが示すエントリを選択するレジスタファイルを備え、
前記ｎ段のマルチプレクサ群のうち、前記キャッシュインデックスのうち最下位からｍビット目（ｍはｎ以下の自然数）の値を制御信号として用いるｍ段目のマルチプレクサ群は、２の（ｍ−１）乗個のマルチプレクス回路を有し、前記制御信号に応じてｍ段目のマルチプレクサ群に含まれる全てのマルチプレクス回路を切り替えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ装置、演算処理装置及び情報処理装置に関する。
【背景技術】
【０００２】
従来、演算処理装置、いわゆるプロセッサでは、主記憶装置に比して高速なキャッシュメモリを設けて処理の高速化を行なってきた。キャッシュメモリは、命令を保持する命令キャッシュメモリとオペランドを保持するオペランドキャッシュメモリをそれぞれ専用のキャッシュメモリとして備えることがある。
【０００３】
命令キャッシュおよびオペランドキャッシュの検索に用いるキャッシュタグ（ＴＡＧ）は、従来、記憶素子にトランジスタを用いたＲＡＭ（Random Access Memory）であるＳＲＡＭ（Static Random Access Memory）を使用していた。
【０００４】
このキャッシュタグの消費電力を低減するため、様々な技術が知られている。一例として、前回のキャッシュメモリ参照アドレスに連続するアドレスに対してキャッシュメモリを参照するとき、同一キャッシュラインに収まっていればアドレスアレイに対する動作を抑止することで消費電力を抑える技術が知られている。また、他の例としてキャッシュメモリを構成するＴＡＧメモリとＤＡＴＡメモリの記憶素子にトランジスタで構成したＳＲＡＭセルを使用することで、消費電力の低減を図る技術が知られている。なお、他の例として、キャッシュデータメモリにＤＲＡＭを適用する技術も知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１８４７５２号公報
【特許文献２】特開平７−１３４７０１号公報
【特許文献３】特開平７−２００４０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のＴＡＧメモリを参照するときには、前回と同じＴＡＧメモリのアドレスを参照するときであっても、ＴＡＧメモリの記憶素子から値を取り直ししていた。ＴＡＧメモリはＳＲＡＭで構成されていたため、ＳＲＡＭの記憶素子を参照して読み出しをおこなう度に電力を消費していた。ダイナミック回路で構成されたアドレスデコーダやダイナミック回路を使用した読み出しパスでは前回と同じアドレスから同じ値を読み出す場合であっても、ダイナミック回路を使用するが故のプリチャージの電力を消費するためである。
【０００７】
しかしながら、少なくとも同じアドレスから同じ値を読み出す場合には電力を消費することは望ましくない。また、異なるアドレスであっても同じ値を読み出す場合には電力消費を低減させることが求められる。また、異なるアドレスから異なる値を読み出す場合であっても、類似した値を読み出す場合は電力消費を低減させることが好ましい。
【０００８】
しかしながら、キャッシュタグのメモリにＳＲＡＭを使用する従来の技術では、同一の値や類似の値であっても読み出し時の電力消費が大きいという問題点が有った。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、命令キャッシュタグの消費電力を低減するキャッシュ装置、演算処理装置及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するキャッシュ装置、演算処理装置及び情報処理装置は、レジスタファイルによってエントリを選択する。レジスタファイルは、命令キャッシュタグの検索に用いるｎ（ｎは自然数）ビットのキャッシュインデックスの各ビットに各々対応するｎ段のマルチプレクサ群によってキャッシュインデックスが示すエントリを選択する。ｎ段のマルチプレクサ群のうち、キャッシュインデックスのうち最下位からｍビット目（ｍはｎ以下の自然数）の値を制御信号として用いるｍ段目のマルチプレクサ群は、２の（ｍ−１）乗個のマルチプレクス回路を有する。ｍ段目のマルチプレクサ群に含まれる全てのマルチプレクス回路は、ｍビット目に対応する制御信号によって切り替えられる。
【発明の効果】
【００１１】
本願の開示するキャッシュ装置、演算処理装置及び情報処理装置は、命令キャッシュタグの消費電力を低減するという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１にかかる命令キャッシュタグの説明図である。
【図２】図２は、図１に示した命令キャッシュ装置を用いた演算処理装置の構成図である。
【図３】図３は、命令処理装置と命令キャッシュ装置の構成についての説明図である。
【図４】図４は、マルチプレクサの構成図である。
【図５】図５は、図４に示した構成に対応する論理回路図である。
【図６−１】図６−１は、制御信号が１である場合のマルチプレクサの説明図である。
【図６−２】図６−２は、制御信号が０である場合のマルチプレクサの説明図である。
【図７−１】図７−１は、制御信号が１である場合の論理回路の説明図である。
【図７−２】図７−２は、制御信号が０である場合の論理回路の説明図である。
【図８】図８は、制御アドレスの昇順に配置した場合のアドレスの２進数表記の説明図である。
【図９】図９は、制御アドレスのビットに合わせて配置した場合のアドレスの２進数表記の説明図である。
【図１０】図１０は、制御アドレスの昇順にエントリを配置し、制御アドレス０を選択した状態の説明図である。
【図１１】図１１は、図１０に示した状態から、選択先を制御アドレス１に切り替えた場合の説明図である。
【図１２】図１２は、実施例にかかる配置で制御アドレス０を選択した状態の説明図である。
【図１３】図１３は、図１２に示した状態から、選択先を制御アドレス１に切り替えた場合の説明図である。
【図１４】図１４は、実施例２にかかる命令キャッシュ装置の説明図である。
【図１５】図１５は、命令キャッシュ装置４０を用いた場合の連続する命令の登録についての説明図である。
【図１６】図１６は、実施例３にかかる命令キャッシュ装置の説明図である。
【図１７】図１７は、サーバの構成を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するキャッシュ装置、演算処理装置及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
図１は、本実施例１にかかる命令キャッシュタグの説明図である。本実施例１にかかる命令キャッシュ装置は、連続したアドレスを繰り返し参照するという命令キャッシュメモリ参照の特徴を生かすため、命令キャッシュタグのメモリの物理的構成要素としてＳＲＡＭの替わりにレジスタファイルを有する。
【００１５】
命令キャッシュタグメモリ参照のためのレジスタファイルへのアドレス割り付けは、連続するアドレス参照で、レジスタファイル内のマルチプレクス回路の中で選択対象を切り替えるマルチプレクス回路の割合が少なくなるように配置する。このための配置は、連続する命令アドレス参照において、タグメモリ参照に関わるビットについて、変化の割合の大小によって接続するマルチプレクサをいずれの段に接続するかを定める。具体的には、最も変化の割合の小さいビットに相当するタグメモリ参照アドレスの最上位ビットを、マルチプレクサ回路の最初の段に接続し、最も変化の割合の大きいビットに相当するタグメモリ参照アドレスの最下位ビットを、マルチプレクサ回路の最後の段に接続する。
【００１６】
レジスタファイルについては、高速動作可能で特に省電力対策を施していない一般的なレジスタファイルを用いることができる。このようなレジスタファイルは、データ選択にトランスファーゲートを用いたマルチプレクサを用いる。ここでは、命令キャッシュタグにレジスタファイルを使用するので、マルチプレクサの選択信号として命令アドレスの一部を用いる。キャッシュラインサイズが１２８バイト、キャッシュ容量３２キロバイト、キャッシュウェイ数が２であれば、命令アドレスビット＜６３：０＞の内、アドレスビット＜１３：７＞がキャッシュインデックスに該当し、これをレジスタファイルの選択アドレスに入力する。
【００１７】
図１に示した例では、命令アドレスのうち、キャッシュインデックスとして用いるアドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして各ビットをマルチプレクサの切り替え制御に用いている。
【００１８】
命令アドレスビット＜６３：１３＞は、ＴＬＢによって仮想アドレスから物理アドレスに変換されて、命令キャッシュタグ３３に登録されるキャッシュエントリであり、命令アドレスの、例えばここでは、物理アドレスビット＜４０：１３＞の各ビットについてレジスタファイルを設ける。図１では、命令アドレスビット＜４０＞のレジスタファイルについて詳細を示し、他のビットについては説明を省略する。
【００１９】
図１に示したエントリ０は、キャッシュインデックス部分、すなわち命令アドレスのうち＜１３：７＞の７ビットの値が「０００００００」である場合の命令アドレスビット＜４０＞の値を保持する。エントリ１は、キャッシュインデックス部分、すなわち命令アドレスのうち＜１３：７＞の７ビットの値が「００００００１」である場合の命令アドレスビット＜４０＞の値を保持する。同様に、エントリ１２７は、キャッシュインデックス部分、すなわち命令アドレスのうち＜１３：７＞の７ビットの値が「１１１１１１１」である場合の命令アドレスビット＜４０＞の値を保持する。
【００２０】
このように、エントリ０〜１２７は、キャッシュインデックス部分、すなわち命令アドレスのうち＜１３：７＞の値「０００００００」〜「１１１１１１１」のそれぞれの場合についてレジスタファイルに対応する命令アドレスビットの値を保持する。
【００２１】
レジスタファイルは、エントリ０〜１２７のうちいずれか一つを選択し、選択したエントリの値を出力する。このため、マルチプレクサは７段の構成となっている。ここでは、出力側に最も近いマルチプレクサ群ｍｐ０を１段目とし、エントリ側に最も近いマルチプレクサ群ｍｐ６を７段目とする。
【００２２】
７段目のマルチプレクサ群ｍｐ６は、６４個のマルチプレクサｍｐ６＿１〜６＿６４を有する。マルチプレクサｍｐ６＿１〜６＿６４は、２つのエントリのうちの一方を選択し、選択したエントリが保持する値を出力する。従って、マルチプレクサ群ｍｐ６からは６４の出力が得られる。
【００２３】
６段目のマルチプレクサ群ｍｐ５は、３２個のマルチプレクサｍｐ５＿１〜５＿３２を有する。マルチプレクサｍｐ５＿１〜５＿３２の各々は、マルチプレクサ群ｍｐ６の６４の出力のうち２つを入力され、入力の一方を選択して入力と同一の値を出力する。従って、マルチプレクサ群ｍｐ５からは３２の出力が得られる。
【００２４】
５段目のマルチプレクサ群ｍｐ４は、１６個のマルチプレクサｍｐ４＿１〜４＿１６を有する。マルチプレクサｍｐ４＿１〜４＿１６の各々は、マルチプレクサ群ｍｐ５の３２の出力のうち２つを入力され、入力の一方を選択して入力と同一の値を出力する。従って、マルチプレクサ群ｍｐ４からは１６の出力が得られる。
【００２５】
４段目のマルチプレクサ群ｍｐ３は、８個のマルチプレクサｍｐ３＿１〜３＿８を有する。マルチプレクサｍｐ３＿１〜３＿８の各々は、マルチプレクサ群ｍｐ４の１６の出力のうち２つを入力され、入力の一方を選択して入力と同一の値を出力する。従って、マルチプレクサ群ｍｐ３からは８の出力が得られる。
【００２６】
３段目のマルチプレクサ群ｍｐ２は、４個のマルチプレクサｍｐ２＿１〜２＿４を有する。マルチプレクサｍｐ２＿１〜２＿４の各々は、マルチプレクサ群ｍｐ３の８の出力のうち２つを入力され、入力の一方を選択して入力と同一の値を出力する。従って、マルチプレクサ群ｍｐ２からは４の出力が得られる。
【００２７】
２段目のマルチプレクサ群ｍｐ１は、２個のマルチプレクサｍｐ１＿１，１＿２を有する。マルチプレクサｍｐ１＿１は、マルチプレクサ群ｍｐ２のマルチプレクサ２＿１の出力とマルチプレクサ２＿２の出力のうち、いずれかを選択して同一の値を出力する。マルチプレクサｍｐ１＿２は、マルチプレクサ群ｍｐ２のマルチプレクサ２＿３の出力とマルチプレクサ２＿４の出力のうち、いずれかを選択して同一の値を出力する。
【００２８】
１段目のマルチプレクサ群ｍｐ０は、１個のマルチプレクサｍｐ０＿１を有する。マルチプレクサｍｐ０＿１は、マルチプレクサ群ｍｐ１のマルチプレクサ１＿１の出力とマルチプレクサ１＿１の出力のうち、いずれかを選択して同一の値を出力する。この出力がレジスタファイルの出力となる。
【００２９】
このように、マルチプレクサ群ｍｐ０〜６によって、エントリ０〜１２７のいずれかを選択し、その値を出力することができる。
【００３０】
マルチプレクサ群ｍｐ０が有するマルチプレクサｍｐ０＿１の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位ビットである＜７＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜０＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ０が有するマルチプレクサｍｐ０＿１を切り替える。
【００３１】
マルチプレクサ群ｍｐ１が有するマルチプレクサｍｐ１＿１〜１＿２の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から２ビット目である＜８＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜１＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ１が有するマルチプレクサｍｐ１＿１〜１＿２を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ１が有するマルチプレクサｍｐ１＿１〜１＿２が全て切り替えられる。
【００３２】
マルチプレクサ群ｍｐ２が有するマルチプレクサｍｐ２＿１〜２＿４の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から３ビット目である＜９＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜２＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ２が有するマルチプレクサｍｐ２＿１〜２＿４を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ２が有するマルチプレクサｍｐ２＿１〜２＿４が全て切り替えられる。
【００３３】
マルチプレクサ群ｍｐ３が有するマルチプレクサｍｐ３＿１〜３＿８の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から４ビット目である＜１０＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜３＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ３が有するマルチプレクサｍｐ３＿１〜３＿８を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ３が有するマルチプレクサｍｐ３＿１〜３＿８が全て切り替えられる。
【００３４】
マルチプレクサ群ｍｐ４が有するマルチプレクサｍｐ４＿１〜４＿１６の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から５ビット目である＜１１＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜４＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ４が有するマルチプレクサｍｐ４＿１〜４＿１６を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ４が有するマルチプレクサｍｐ４＿１〜４＿１６が全て切り替えられる。
【００３５】
マルチプレクサ群ｍｐ５が有するマルチプレクサｍｐ５＿１〜５＿３２の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から６ビット目である＜１２＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜５＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ５が有するマルチプレクサｍｐ５＿１〜５＿３２を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ５が有するマルチプレクサｍｐ５＿１〜５＿３２が全て切り替えられる。
【００３６】
マルチプレクサ群ｍｐ６が有するマルチプレクサｍｐ６＿１〜６＿６４の切り替えは、キャッシュインデックスとして用いる命令アドレスビット＜１３：７＞の最下位から７ビット目である＜１３＞を用いる。命令アドレスビット＜１３：７＞を＜６：０＞の制御用アドレスビットとして読み替えると、ビット＜６＞に対応する。このビットの値が０か１かによって、マルチプレクサ群ｍｐ６が有するマルチプレクサｍｐ６＿１〜６＿６４を切り替える。ビットの値が変化した場合には、マルチプレクサ群ｍｐ６が有するマルチプレクサｍｐ６＿１〜６＿６４が全て切り替えられる。
【００３７】
命令アドレスは、通常のプログラムでは命令デコード幅分ずつ、例えば３２バイトずつ加算され、命令分岐があったときは元のアドレスの近傍アドレスへと切り替わる。したがって、命令キャッシュタグの参照に用いるインデックスアドレスの上位ビット、すなわち＜１３＞側のビットの切り替わり頻度は、下位ビット、すなわち＜７＞側のビットと比べて低い。
【００３８】
一方、レジスタファイルは、エントリを選択する７段目に使用する選択信号の値が切り替わったとき、７段目の選択論理がすべて一斉に動作するため電力消費が大きい。対して、１段目に使用する選択信号が切り替わったときは、１段目の選択論理１個のみが動作するので電力消費が小さい。
【００３９】
そこで、切り替わる頻度の小さい命令アドレスの上位ビットをレジスタファイルのエントリ選択側の段の制御に割り当て、頻繁に切り替わる命令アドレスの下位ビットをレジスタファイルの出力側の段の制御に割り当てる。こうすることで、命令キャッシュタグの検索に必要な電力の消費を抑えることができる。
【００４０】
命令アドレスがキャッシュライン内の１２８バイトに収まっている間は、キャッシュインデックスが変化しないため、レジスタファイルに入力するアドレスは変化せず、電力を消費しない。キャッシュラインを超えてレジスタファイルに入力するアドレスが変化する場合であっても、レジスタファイル内のマルチプレクサで変化する被選択信号が最小限に抑えられるため、消費電力を抑えることが出来る。
【００４１】
例えば、図１に示した例で、エントリ０を選択する場合、制御用のアドレス＜６：０＞を「０００００００」とすることで、マルチプレクサｍｐ６＿１，ｍｐ５＿１，ｍｐ４＿１，ｍｐ３＿１，ｍｐ２＿１，ｍｐ１＿１，ｍｐ０＿１の経路が成立する。この状態から、ｍｐ０＿１のみを切り替えることで、マルチプレクサｍｐ６＿３３，ｍｐ５＿１７，ｍｐ４＿９，ｍｐ３＿５，ｍｐ２＿３，ｍｐ１＿２，ｍｐ０＿１の経路が成立し、エントリ１を選択することができる。そして、制御用のアドレス＜６：０＞を「１１１１１１１」とすることで、マルチプレクサｍｐ６＿６４，ｍｐ５＿３２，ｍｐ４＿１６，ｍｐ３＿８，ｍｐ２＿４，ｍｐ１＿２，ｍｐ０＿１の経路が成立する。
【００４２】
図２は、図１に示した命令キャッシュ装置を用いた演算処理装置の構成図である。なお、図２は、演算処理装置であるＣＰＵ（Central Processing Unit）を構成する構成要素の一部を抽出して例示するものにすぎない。したがって、図２は、本実施例１に係る演算処理装置を構成する全ての構成要素を示すものではなく、また、本実施例１に係る演算処理装置が、図２に例示する全ての構成要素を備えなくともよい。
【００４３】
図２に示したように、演算処理装置１は、その内部に演算器１１、命令処理装置１２、命令キャッシュ装置１３、データキャッシュ装置１４、二次キャッシュ装置１５を有する。
【００４４】
演算処理装置は、コンピュータが備える記憶装置に記憶されている命令に従って演算を行い、演算結果に従って情報を処理する。ここで、「命令」とは、コンピュータを利用する利用者によってキーボードなどから入力されるコマンドや、開発者によってプログラミングされたプログラムの１行としてのコマンドなどのことを意味するものではない。このようなコマンドが、コンピュータにおいて、まず、コンピュータが理解することが可能な機械語に翻訳され、次に、コンピュータが認識することが可能な２進数に再構成され、続いて、ＣＰＵ１が処理可能な最小単位に分割されると、ＣＰＵ１が処理可能な命令となる。
【００４５】
命令処理装置１２は、演算処理装置が実行する処理の流れの制御を行なう。具体的には、命令処理装置１２は、処理すべき命令を主記憶装置１６から読み込み、解釈し、解釈結果を演算器１１に送信する。演算器１１は、演算を行う処理部である。具体的には、演算器１１は、命令の対象となるデータを主記憶装置１６から読み込み、命令処理装置１２によって解釈された命令に従って演算し、演算結果を命令処理装置１２に送信する。
【００４６】
命令処理装置１２や演算器１１が命令やデータを読み込む記憶装置には、メインメモリとキャッシュメモリがある。キャッシュメモリには、１次（Level１）キャッシュ（以下、Ｌ１キャッシュ）や２次（Level２）キャッシュ（以下、Ｌ２キャッシュ）などがある。通常、これらのキャッシュメモリは、演算処理装置内部に階層構造で備えられる。図２に例示するＣＰＵ１においては、Ｌ１キャッシュとして、命令専用のＬ１キャッシュである命令キャッシュ装置１３と、データ専用のＬ１キャッシュであるデータキャッシュ装置１４とが備えられている。また、Ｌ２キャッシュとして、二次キャッシュ装置１５が備えられている。主記憶１６は、演算処理装置を構成する構成要素ではないが、記憶装置の一つとして演算処理装置の外部に備えられている。
【００４７】
命令キャッシュ装置１３およびデータキャッシュ装置１４は、演算処理装置と同じクロックで動作することが可能であり、命令処理装置１２や演算器１１からの要求に対して、高速に応答することが可能である。しかしながら、命令キャッシュ装置１３およびデータキャッシュ装置１４の容量は、総計で３２Ｋ〜１２８ＫＢ程度のものが多く、多くの情報を記憶することができない。このため、二次キャッシュ装置１５が、命令キャッシュ装置１３およびデータキャッシュ装置１４に記憶することができない情報のうち、利用頻度の高い情報を記憶することになる。なお、二次キャッシュ装置１５に記憶することができない情報については、主記憶装置１６に記憶される。
【００４８】
命令処理装置１２や演算器１１が処理を開始する時点では、命令やデータは、主記憶１６上に存在しており、命令キャッシュ装置１３やデータキャッシュ装置１４、あるいは二次キャッシュ装置１５には何も記憶されていない。命令処理装置１２や演算器１１が命令やデータを主記憶装置１６から読み出す際に、命令やデータが命令キャッシュ装置１３やデータキャッシュ装置１４、あるいは二次キャッシュ装置１５にロードされる。命令処理装置１２や演算器１１は、これ以降、低速な主記憶装置１６ではなく、高速な命令キャッシュ装置１３やデータキャッシュ装置１４、あるいは二次キャッシュ装置１５から命令やデータを読み出す。
【００４９】
言い換えると、命令処理装置１２や演算器１１が読み出そうとする命令やデータは、必ずしも、命令キャッシュ装置１３やデータキャッシュ装置１４に記憶されているとは限らない。このため、命令キャッシュタグやデータキャッシュタグが、命令処理装置１２や演算器１１に利用されることになる。すなわち、命令キャッシュ装置１３やデータキャッシュ装置１４に命令やデータがロードされるのと同時に、命令キャッシュタグやデータキャッシュタグには、これらの命令やデータが主記憶装置１６のどのアドレスに記憶されているかを示す数値がセットされている。したがって、命令処理装置１２や演算器１１は、命令やデータを読み出す際に、まず、命令キャッシュタグやデータキャッシュタグに対して問い合わせ、読み出そうとする命令やデータが、命令キャッシュ装置１３やデータキャッシュ装置１４に記憶されているか否かを確認する。
【００５０】
図３は、命令処理装置と命令キャッシュ装置の構成についての説明図である。命令処理装置１２は、命令スタック２１、命令実行部２２、分岐アドレスレジスタ２３、選択部２４、プログラムカウンタ２５、アドレス加算部２６を有する。命令キャッシュ装置１３は、命令フェッチレジスタ３１、命令キャッシュＴＬＢ（Translation Look-aside Buffer）３２、命令キャッシュタグ３３、命令キャッシュデータ３４、を有する。また、命令キャッシュ装置１３は、一致検出部３５、タグマッチ判定部３６、選択部３７、ＬＲＵ（Least Recently Used）、登録位置レジスタ３９を有する。
【００５１】
命令処理装置１２は、命令スタック２１に格納した命令を命令実行部２２に実行させる。命令実行部２２による処理の結果、分岐が発生した場合には分岐先のアドレスを分岐アドレスレジスタ２３が保持する。また、命令実行部２２の処理結果は、選択部２４に選択信号として使用される。
【００５２】
選択部２４は、プログラムカウンタ２５に保持されたアドレスと分岐アドレスレジスタ２３に保持されたアドレスのいずれかを命令実行部２２からの制御信号に基づいて選択し、命令キャッシュ装置１３の命令フェッチレジスタ３１に出力する。
【００５３】
命令フェッチレジスタ３１は、命令処理装置１２から入力されたアドレスを命令キャッシュＴＬＢ３２、命令キャッシュタグ３３、命令キャッシュデータ３４に入力する。加えて、命令フェッチレジスタ３１は、命令処理装置１２から入力されたアドレスを、命令処理装置１２のアドレス加算部２６に入力する。アドレス加算部２６は、入力されたアドレスに所定の値、例えば３２バイトを加算して、プログラムカウンタ２５の値を書き換える。
【００５４】
命令キャッシュタグ３３は、命令アドレスのうち、キャッシュインデックス部分をキーとし、キャッシインデックス以外のアドレスビットをエントリとして保持する。命令キャッシュタグ３３は、ＷＡＹ０，ＷＡＹ１を有する２ＷＡＹセットアソシアティブ（2 way set associative）である。すなわち、命令キャッシュタグ３３は、１つのキャッシュインデックスについて２つのエントリを保持することができる。
【００５５】
命令キャッシュタグ３３は、命令フェッチレジスタ３１から入力された命令アドレスのキャッシュインデックス部分をキーにエントリを検索し、ＷＡＹ０，ＷＡＹ１のそれぞれについて出力を行なう。
【００５６】
一致検出部３５は、命令キャッシュＴＬＢ３２から入力された命令アドレスと、命令キャッシュタグ３３から入力されたＷＡＹ０，ＷＡＹ１のエントリとを比較する。命令キャッシュＴＬＢ３２から出力される命令アドレスは、命令フェッチレジスタ３１の仮想アドレスを物理アドレスに変換して出力したものである。
【００５７】
タグマッチ判定部３６は、命令キャッシュＴＬＢ３２から入力された命令アドレスと、命令キャッシュタグ３３から入力されたＷＡＹ０，ＷＡＹ１のエントリのいずれが一致した場合には、一致したＷＡＹを選択部３７に通知する。なお命令キャッシュＴＬＢ３２から入力された命令アドレスが命令キャッシュタグ３３から入力されたＷＡＹ０，ＷＡＹ１のエントリのいずれとも一致しない場合はキャッシュミスとなる。
【００５８】
命令キャッシュデータ３４は、命令アドレスのうち、キャッシュインデックス部分をキーとし、命令アドレスのデータをエントリとして保持する。命令キャッシュタグ３３は、ＷＡＹ０，ＷＡＹ１を有する２ＷＡＹセットアソシアティブである。すなわち、命令キャッシュタグ３３は、１つのキャッシュインデックスについて２つのエントリを保持することができる。
【００５９】
命令キャッシュデータ３４は、命令フェッチレジスタ３１から入力された命令アドレスのキャッシュインデックス部分をキーにエントリを検索し、ＷＡＹ０，ＷＡＹ１のそれぞれについて出力を行なう。
【００６０】
選択部３７は、タグマッチ判定部３６からＷＡＹを通知された場合は、命令キャッシュデータ３４の出力のうち、通知されたＷＡＹの出力を選択し、命令スタック２１に入力する。
【００６１】
登録位置レジスタ３９は、セットアソシアティブにおける登録アドレスとＷＡＹを制御するレジスタである。登録位置レジスタ３９は、ＬＲＵ３８を参照し、キャッシュを登録する場合に使用するＷＡＹを指定する。具体的には、登録位置レジスタ３９は、命令アドレスに対応するＷＡＹのうち、前回登録されてからの時間が最も大きいＷＡＹを登録先をとして指定する。
【００６２】
つぎに、マルチプレクサの構成について説明する。図４は、マルチプレクサの構成図である。マルチプレクサｍｐ０＿１，ｍｐ１＿１，１＿２，ｍｐ２＿１〜２＿４，ｍｐ３＿１〜３＿８，ｍｐ４＿１〜４＿１６，ｍｐ５＿１〜５＿３２，６＿１〜６＿６４は、図４に示した構成を有する。
【００６３】
具体的には、マルチプレクサは、２つのトランファスゲートＴＧ１，２を有する。トランスゲートＴＧ１には第１の入力Ｄ１、トランスファゲートＴＧ２には第２の入力Ｄ２が与えられる。制御信号Ａは、トランスファゲートＴＧ１，２に対して信号の通過可否を制御する。具体的には、トランスファゲートの一端に制御信号Ａを直接入力し、他端に制御信号Ａを反転して入力する。また、トランスファゲートＴＧ１，２に対する接続を逆にすることで、トランスファゲートＴＧ１，２のいずれか一方が選択されて出力Ｘが得られることとなる。
【００６４】
図５は、図４に示した構成に対応する論理回路図である。図５に示した論理回路では、アンド回路（論理積回路）ＡＮＤ１には入力Ｄ１と制御信号Ａが入力されている。また、アンド回路ＡＮＤ２には入力Ｄ２と制御信号Ａを反転した信号が入力されている。オア回路（論理和回路）ＯＲがアンド回路ＡＮＤ１，２の出力のＯＲを取ることで、入力Ｄ１，Ｄ２のいずれかが出力Ｘとして得られる。
【００６５】
図６−１は、制御信号が１である場合のマルチプレクサの説明図である。また、図６−２は、制御信号が０である場合のマルチプレクサの説明図である。図６−１に示したように、制御信号Ａが１である場合、トランスファゲートＴＧ１は入力Ｄ１を通過させず、トランスファゲートＴＧ２が入力Ｄ２を通過させる。この結果、出力Ｘは入力Ｄ２と同じ値となる。ここでは、入力Ｄ２の値が１であるので、出力Ｘも１となっている。
【００６６】
図６−２に示したように、制御信号Ａが０である場合、トランスファゲートＴＧ１が入力Ｄ１を通過させ、トランスファゲートＤ２は入力Ｄ２を通過させない。この結果、出力Ｘは入力Ｄ１と同じ値となる。ここでは、入力Ｄ２の値が１であるので、出力Ｘも１となっている。
【００６７】
図７−１は、制御信号が１である場合の論理回路の説明図である。また、図７−２は、制御信号が０である場合の論理回路の説明図である。図７−１に示したように、制御信号Ａが１である場合、アンド回路ＡＮＤ１が０を出力し、アンド回路ＡＮＤ２が１を出力する。この結果、出力Ｘは入力Ｄ２と同じ値となる。ここでは、入力Ｄ２の値が１であるので、出力Ｘも１となっている。
【００６８】
図７−２に示したように、制御信号Ａが０である場合、アンド回路ＡＮＤ１が１を出力し、アンド回路ＡＮＤ２が０を出力する。この結果、出力Ｘは入力Ｄ１と同じ値となる。ここでは、入力Ｄ２の値が１であるので、出力Ｘも１となっている。
【００６９】
つぎに、レジスタファイルにおけるエントリの配置について説明する。ここでは、説明を簡明にするため、キャッシュインデックスが４ビットである場合を例に説明を行なう。キャッシュインデックスが４ビットであれば、キャッシュ可能なエントリは１６個である。１６個のエントリに制御アドレス０〜１５を対応させる。
【００７０】
図８は、制御アドレスの昇順に配置した場合のアドレスの２進数表記の説明図である。既に述べたように、本実施例にかかる命令キャッシュ装置では、マルチプレクサ群を制御アドレスのビットに合わせて配置する。図９は、制御アドレスのビットに合わせて配置した場合のアドレスの２進数表記の説明図である。
【００７１】
図１０〜１３を参照し、制御アドレスの昇順にエントリを配置した構成と本実施例の構成とで消費電力を比較する。図１０は、制御アドレスの昇順にエントリを配置し、制御アドレス０を選択した状態の説明図である。ここでは、一例として各制御アドレスのエントリの値を次の通りとする。
制御アドレス０のエントリ値＝０
制御アドレス１のエントリ値＝１
制御アドレス２のエントリ値＝０
制御アドレス３のエントリ値＝１
制御アドレス４のエントリ値＝１
制御アドレス５のエントリ値＝０
制御アドレス６のエントリ値＝１
制御アドレス７のエントリ値＝１
制御アドレス８のエントリ値＝１
制御アドレス９のエントリ値＝０
制御アドレス１０のエントリ値＝１
制御アドレス１１のエントリ値＝０
制御アドレス１２のエントリ値＝０
制御アドレス１３のエントリ値＝１
制御アドレス１４のエントリ値＝０
制御アドレス１５のエントリ値＝１
【００７２】
図１０に示した状態は、制御アドレス０を選択している。この場合、マルチプレクサ群ｍｐ０〜ｍｐ３に含まれる全てのマルチプレクサは上側の入力を選択した状態となる。図１０では、値０の信号線を細線の矢印、値１の信号線を太線の矢印で示している。
【００７３】
具体的には、マルチプレクサｍｐ３＿１は、制御アドレス０のエントリを選択して値０を出力している。マルチプレクサｍｐ２＿１は、マルチプレクサｍｐ３＿１を選択して値０を出力している。マルチプレクサｍｐ１＿１は、マルチプレクサｍｐ２＿１を選択して値０を出力している。マルチプレクサｍｐ０＿１は、マルチプレクサｍｐ１＿１を選択して値０を出力している。
【００７４】
図１１は、図１０に示した状態から、選択先を制御アドレス１に切り替えた場合の説明図である。制御アドレスの昇順でエントリを配置している場合、マルチプレクサ群ｍｐ３を切り替えることで制御アドレス１を選択することとなる。従って、マルチプレクサ群ｍｐ３に含まれるマルチプレクサｍｐ３＿１〜ｍｐ３＿８の全てが切り替わり、各マルチプレクサで電力が消費される。
【００７５】
加えて、出力値が変化する信号線でも電力が消費される。図１１に示した例では、マルチプレクサｍｐ３＿４，３＿５以外の全てのマルチプレクサの出力で値が変化し、電力の消費が発生する。
【００７６】
図１２は、本実施例にかかる配置で制御アドレス０を選択した状態の説明図である。各制御アドレスのエントリの値は、図１０と同一である。図１２に示した状態は、制御アドレス０を選択している。この場合、制御アドレスの二進数表記は「００００」であり、マルチプレクサ群ｍｐ０〜ｍｐ３に含まれる全てのマルチプレクサは上側の入力を選択した状態となる。図１２では、値０の信号線を細線の矢印、値１の信号線を太線の矢印で示している。
【００７７】
具体的には、マルチプレクサｍｐ３＿１は、制御アドレス０のエントリを選択して値０を出力している。マルチプレクサｍｐ２＿１は、マルチプレクサｍｐ３＿１を選択して値０を出力している。マルチプレクサｍｐ１＿１は、マルチプレクサｍｐ２＿１を選択して値０を出力している。マルチプレクサｍｐ０＿１は、マルチプレクサｍｐ１＿１を選択して値０を出力している。
【００７８】
図１３は、図１２に示した状態から、選択先を制御アドレス１に切り替えた場合の説明図である。本実施例に係る配置では、マルチプレクサ群ｍｐ０を切り替えることで制御アドレス１を選択することとなる。従って、マルチプレクサ群ｍｐ０に含まれるマルチプレクサｍｐ０＿１のみが切り替わり、他のマルチプレクサでは電力が消費されない。加えて、出力値が変化する信号線もマルチプレクサｍｐ０＿１のみであり、他のマルチプレクサの出力で値が変化することはない。
【００７９】
以上説明してきたように、本実施例１にかかるキャッシュ装置および演算処理装置は、連続したアドレスを繰り返し参照するという命令キャッシュメモリ参照の特徴を利用し、命令キャッシュタグのメモリの物理的構成要素としてレジスタファイルを用いる。レジスタファイルは、命令キャッシュタグの検索に用いるｎ（ｎは自然数）ビットのキャッシュインデックスの各ビットに対応するｎ段のマルチプレクサ群によってエントリを選択する。そして、ｎ段のマルチプレクサ群のうち、キャッシュインデックスのうち最下位からｍビット目を制御信号として用いるｍ段目のマルチプレクサ群は、２の（ｍ−１）乗個のマルチプレクス回路を有する。ｍ段目のマルチプレクサ群に含まれる全てのマルチプレクス回路は、ｍビット目の制御信号に応じて一斉に切り替えられる。
【００８０】
このため、命令キャッシュタグの消費電力を低減するキャッシュ装置および演算処理装置を得ることができる。開示の技術は、オペランドキャッシュと独立した命令キャッシュを備えるプロセッサのキャッシュメモリの命令キャッシュタグにおいて利用することができる。また、オペランドキャッシュ、共有キャッシュ、ローカルメモリ等においても、参照アドレスの連続性、参照データの同一性が認められるアプリケーションにおいて利用することができる。
【実施例２】
【００８１】
実施例１では、アドレスの連続性を利用して消費電力を抑制する構成について説明した。しかし、連続するアドレスが異なるキャッシュＷＡＹに割り当てられた場合、実施例１のようにレジスタファイルで構成したタグメモリであっても、タグメモリを参照するアドレスに応じて、読み出されるデータが変化する。このため、消費電力を低減する効果はタグメモリに登録されているアドレスの類似性に頼ることとなる。
【００８２】
命令キャッシュは容量が小さく、参照されるアドレスに類似性は高いため、それだけでも十分な省電力効果は得られるが、さらなる省電力効果を得るために、連続したアドレスは同一ＷＡＹに登録するように制御することが好ましい。連続するアドレスを同一キャッシュＷＡＹに割り当てるために、本実施例２に開示する構成では、前回キャッシュに登録したキャッシュＷＡＹと前回登録したアドレスの次のキャッシュラインアドレスを登録するレジスタを用意する。そして、次にキャッシュミスしたアドレスが先に登録したレジスタに一致したときには、連続したアドレスの登録だと判断し、レジスタに登録されているキャッシュＷＡＹへと登録する。かかる構成によって連続したアドレスのデータを同一のキャッシュＷＡＹに登録するように制御することができる。
【００８３】
しかし、連続するアドレスは同一ＷＡＹに登録され続け、複数ＷＡＹを持つキャッシュＷＡＹの中で、使用されずに無駄になるＷＡＹがでることは避けることが好ましい。キャッシュタグを検索する命令アドレスは、命令の実行に伴い昇順に変化する。キャッシュタグ参照に使用するアドレスは命令アドレスの一部分が使用されるため、キャッシュタグを検索する最大アドレス（オール１）に達した後は最小アドレス（オール０）に戻る。その後、再び昇順にキャッシュＴＡＧを検索するアドレスを変化させていく。
【００８４】
そこで、最小アドレス（オール０）にアドレスを登録するときは、上述した前回キャッシュに登録したキャッシュＷＡＹと前回登録したアドレスの次のキャッシュラインアドレスを登録するレジスタを参照して、連続したアドレスの登録だと判断した場合には、前回キャッシュに登録したキャッシュＷＡＹと異なるキャッシュＷＡＹへと、新たなキャッシュラインを登録することにより、連続したアドレスで複数ＷＡＹを使用できるように制御する。
【００８５】
また、命令キャッシュに登録されるアドレスは連続性が高く、かつ、局所性が高いため、どのキャッシュインデックスからタグを検索しても、連続するキャッシュラインから出力されるタグの中身の値は同じ値である場合が多い。そこで、既に述べたように、連続するキャッシュラインを同一ＷＡＹに登録することでレジスタファイルを読み出すときに読み出される値は、どのアドレスから読み出しても同じ値が読み出される確率が高くなる。
【００８６】
被選択データの値が替わらないレジスタファイル内の各段の選択回路では、選択信号の値が切り替わってもほとんど電力を消費しない。したがって、キャッシュタグとして使用するレジスタファイルを読み出すアドレスが変化したときであっても、電力消費を抑えることが可能となる。
【００８７】
図１４は、本実施例２にかかる命令キャッシュ装置の説明図である。図１４に示した命令キャッシュ装置４０は、図３に示した命令キャッシュ装置１３に加え、アドレス加算部４１、アドレス判定部４２、次登録位置レジスタ４３、一致判定部４４、選択部４５および次登録ＷＡＹレジスタ４６を有する。その他の構成及び動作については図３と同一であるので、同一の構成要素には同一の符号を付して説明を省略する。
【００８８】
アドレス加算部４１は、登録位置アドレスレジスタ３９が保持するアドレス、すなわち前回キャッシュに登録したアドレスに１を加えてアドレス判定部４２に送る。また、アドレス加算部４１は、登録位置アドレスレジスタ３９が保持するＷＡＹ、すなわち前回キャッシュを登録したＷＡＹをそのままアドレス判定部４２に送る。
【００８９】
アドレス判定部４２は、アドレス加算部４１から取得したアドレスがオール０であるかを判定する。判定の結果、アドレスがオール０であれば、アドレス加算部４１から取得したＷＡＹを変更する。アドレスがオール０以外であれば、アドレス加算部４１から取得したＷＡＹをそのまま維持する。アドレス判定部４２は、アドレス加算部４１から取得したアドレスと、変更もしくは維持したＷＡＹを次登録位置レジスタ４３に格納する。
【００９０】
一致検出部４４は、命令キャッシュＴＬＢ３２が出力した命令アドレスと次登録位置レジスタ４３が保持するアドレスが一致するかを判定する。ここでアドレスが一致することは命令キャッシュＴＬＢ３２が出力した命令アドレスが前回の命令アドレスと連続していることを意味する。一致検出部４４は、判定結果を選択部４５の制御信号として入力する。
【００９１】
選択部４５は、一致検出部４４の出力をもとに、次登録位置レジスタ４３とＬＲＵ３８のいずれかの出力を選択し、次登録ＷＡＹレジスタ４６に出力する。すなわち、次登録ＷＡＹレジスタ４６は、命令アドレスが連続するものであれば、次登録位置レジスタ４３にしたがって次に登録すべきＷＡＹを決定し、命令アドレスが非連続であればＬＲＵ３８に従って次に登録すべきＷＡＹを決定することとなる。次登録レジスタ４６の出力は、登録位置レジスタ３９によって用いられる。
【００９２】
図１５は、命令キャッシュ装置４０を用いた場合の連続する命令の登録についての説明図である。図１５に示した例では、連続する命令アドレスが入力され続けた場合、アドレスの最小値であるアドレス０からアドレスの最大値であるアドレス１２７までＷＡＹ０を継続して選択する。そして、最終アドレスであるアドレス１２７にキャッシュを登録した後は、ＷＡＹ１のアドレス０からキャッシュの登録を行なうこととなる。
【００９３】
以上説明してきたように、本実施例２にかかるキャッシュ装置は、前回キャッシュに登録したキャッシュＷＡＹと前回登録したアドレスの次のキャッシュラインアドレスを登録するレジスタを有する。そして次にキャッシュミスしたアドレスが先に登録したレジスタに一致したときには、レジスタに登録されているキャッシュＷＡＹへと登録することで、連続したアドレスのデータを同一のキャッシュＷＡＹに集める。このため、連続するキャッシュラインを同一ＷＡＹに登録し、キャッシュ装置の消費電力をさらに抑えることができる。
【００９４】
また、次のキャッシュラインアドレスがアドレスの最小値となった場合には、使用するＷＡＹを切り替えることで、複数のＷＡＹを有効利用しつつ消費電力を低減することができる。
【実施例３】
【００９５】
実施例２では、次のキャッシュラインアドレスがアドレスの最小値となった場合にＷＡＹを切り替える構成を説明したが、最小アドレスにアドレスを登録するとき以外にも、連続アドレスでキャッシュタグに登録するＷＡＹを切り替えても良い。
【００９６】
本実施例３に開示する構成では、キャッシュヒット検索対象のアドレスをキャッシュインデックス一周分の値だけデクリメントする。そして、これに一致するキャッシュＷＡＹがキャッシュタグから取り出されているとき、キャッシュタグに登録するキャッシュＷＡＹとして、デクリメントアドレスと一致したキャッシュＷＡＹ以外を選択することで、連続アドレスでのキャッシュＴＡＧへの登録ＷＡＹの切り替えを実現する。
【００９７】
このとき、デクリメントしたアドレスと一致したキャッシュＷＡＹが、前回キャッシュに登録したキャッシュＷＡＹと一致しているか否かを、判断条件に追加してもよい。
【００９８】
図１６は、本実施例３にかかる命令キャッシュ装置の説明図である。図１４に示した命令キャッシュ装置５０は、図３に示した命令キャッシュ装置１３の構成に加え、アドレス減算部５１、一致検出部５２、選択部５３および次登録ＷＡＹレジスタ５４を有する。その他の構成及び動作については図３と同一であるので、同一の構成要素には同一の符号を付して説明を省略する。
【００９９】
アドレス減算部５１は、命令キャッシュＴＬＢ３２が出力した命令アドレスをキャッシュインデックス一周分、例えば１６ｋＢ減算して出力する。一致検出部５２は、キャッシュミスが発生した場合に、命令キャッシュタグ３３に登録されていたアドレスをキャッシュＷＡＹ分取り出してアドレス現残部５１が出力したデクリメントアドレスと比較する。一致検出部５２は、比較結果を選択部５３に制御信号として出力する。
【０１００】
選択部５３は、一致検出部５２の検出結果に基づいて選択を行なう。すなわち、デクリメントアドレスと一致したキャッシュＷＡＹが存在する場合、一致したキャッシュＷＡＹ以外を選択することで、連続アドレスでのキャッシュＴＡＧへの登録ＷＡＹの切り替えを実現する。また、デクリメントアドレスと一致したキャッシュＷＡＹが存在しなければ、登録位置レジスタ３９に保持されているキャッシュＷＡＹを選択する。連続アドレスでなければ、ＬＲＵ３８に基づいてＷＡＹ選択を行なう。選択部５３によって選択されたＷＡＹは、次登録ＷＡＹレジスタ５４に格納される。
【０１０１】
以上説明してきたように、本実施例３にかかるキャッシュ装置は、実施例２と同様に、連続したアドレスのデータを同一のキャッシュＷＡＹに集めて連続するキャッシュラインを同一ＷＡＹに登録し、キャッシュ装置の消費電力をさらに抑えることができる。
【実施例４】
【０１０２】
実施例１〜３で開示したキャッシュ装置および演算処理装置（プロセッサ）が組み込まれたサーバの構成を図１７に示す。図１７は、サーバの構成を示す図である。図１７に示すように、サーバは、バックプレーン１００に複数のクロスバスイッチとしてＸＢ１０１、ＸＢ１０２などを有し、クロスバスイッチそれぞれにシステムボードとしてＳＢ１１０〜ＳＢ１１３と入出力システムボード（ＩＯＳＢ）１５０とを有する。なお、クロスバスイッチ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
【０１０３】
バックプレーン１００は、複数のコネクタ等を相互接続するバスを形成する回路基板である。ＸＢ１０１、ＸＢ１０２は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
【０１０４】
また、ＸＢ１０１に接続されるＳＢ１１０、ＳＢ１１１、ＳＢ１１２、ＳＢ１１３は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではＳＢ１１０についてのみ説明する。ＳＢ１１０は、システムコントローラ（System  Controller：SC）１１０ａと、４台のＣＰＵと、メモリアクセスコントローラ（Memory  Access  Controller：MAC）と、ＤＩＭＭ（Dual  Inline  Memory  Module）とを有する。
【０１０５】
ＳＣは、ＳＢ１１０に搭載されるＣＰＵ１１０ｂ〜１１０ｅとＭＡＣ１１０ｆ、ＭＡＣ１１０ｇとの間におけるデータ転送などの処理を制御し、ＳＢ１１０全体を制御する。ＣＰＵ１１０ｂ〜１１０ｅそれぞれは、ＳＣを介して他の電子機器と接続され、実施例１〜３で開示したキャッシュの制御を実現するプロセッサである。ＭＡＣ１１０ｆは、ＤＩＭＭ１１０ｈとＳＣとの間に接続され、ＤＩＭＭ１１０ｈへのアクセスを制御する。ＭＡＣ１１０ｇは、ＤＩＭＭ１１０ｉとＳＣとの間に接続され、ＤＩＭＭ１１０ｉへのアクセスを制御する。ＤＩＭＭ１１０ｈは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。ＤＩＭＭ１１０ｉは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。
【０１０６】
ＩＯＳＢ１５０は、ＸＢ１０１を介してＳＢ１１０〜ＳＢ１１３それぞれと接続されるとともに、ＳＣＳＩ（Small  Computer  System  Interface）、ＦＣ（Fibre  Channel）、イーサネット（登録商標）などを介して入出力デバイスと接続される。ＩＯＳＢ１５０は、入出力デバイスとＸＢ１０１との間におけるデータ転送などの処理を制御する。なお、ＳＢ１１０に搭載されるＣＰＵ、ＭＡＣ、ＤＩＭＭなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
【符号の説明】
【０１０７】
１１  演算器
１２  命令処理装置
１３，４０，５０  命令キャッシュ装置
１４  データキャッシュ装置
１５  二次キャッシュ装置
１６  主記憶装置
２１  命令スタック
２２  命令実行部
２３  分岐アドレスレジスタ
２４  選択部
２５  プログラムカウンタ
２６  アドレス加算部
３１  命令フェッチレジスタ
３２  命令キャッシュＴＬＢ
３３  命令キャッシュタグ
３４  命令キャッシュデータ
３５  一致検出部
３６  タグマッチ判定部
３７  選択部
３８  ＬＲＵ
３９  登録位置レジスタ
４１  アドレス加算部
４２  アドレス判定部
４３  次登録位置レジスタ
４４  一致検出部
４５  選択部
４６，５４  次登録ＷＡＹレジスタ
５１  アドレス減算部
５２  一致検出部
５３  選択部
ｍｐ０〜ｍｐ６  マルチプレクサ群
ｍｐ０＿１，ｍｐ１＿１，１＿２，ｍｐ２＿１〜２＿４，ｍｐ３＿１〜３＿８，ｍｐ４＿１〜４＿１６，ｍｐ５＿１〜５＿３２，６＿１〜６＿６４  マルチプレクサ
１００  バックプレーン
１０１，１０２  ＸＢ
１１０  システムボード
１１０ａ  ＳＣ
１１０ｂ〜ｅ  ＣＰＵ
１１０ｆ，ｇ  ＭＡＣ
１１０ｈ，ｉ  ＤＩＭＭ
１５０  ＩＯＳＢ
【図１】
0005428851.tif 000002
【図２】
0005428851.tif 000003
【図３】
0005428851.tif 000004
【図４】
0005428851.tif 000005
【図５】
0005428851.tif 000006
【図６−１】
0005428851.tif 000007
【図６−２】
0005428851.tif 000008
【図７−１】
0005428851.tif 000009
【図７−２】
0005428851.tif 000010
【図８】
0005428851.tif 000011
【図９】
0005428851.tif 000012
【図１０】
0005428851.tif 000013
【図１１】
0005428851.tif 000014
【図１２】
0005428851.tif 000015
【図１３】
0005428851.tif 000016
【図１４】
0005428851.tif 000017
【図１５】
0005428851.tif 000018
【図１６】
0005428851.tif 000019
【図１７】
0005428851.tif 000020