(57)【要約】【課題】  実行中でないスレッドに関連するデータを置換対象として選択することが可能なキャッシュリプレース装置及びキャッシュリプレース方法を提供する。【解決手段】  複数のウェイまたはセットからなるキャッシュタグテーブル３３ａと、キャッシュタグテーブル３３ａに接続されたスレッド比較器３６ａと、キャッシュタグテーブル３３ａ及びスレッド比較器３６ａに接続されたウェイ決定回路３７ａとを具備する。【選択図】      図１
2005196303.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイまたはセットからなるキャッシュタグテーブルと、
前記キャッシュタグテーブルに接続され、前記キャッシュタグテーブルに格納されたスレッド番号と、実行しようとするスレッドの番号を比較するスレッド比較器と、
前記キャッシュタグテーブル及び前記スレッド比較器に接続され、置換すべきウェイを決定するウェイ決定回路
とを具備することを特徴とするキャッシュリプレース装置。
【請求項２】
前記キャッシュタグテーブルに接続された命令アクセスアドレス格納部と、
前記命令アクセスアドレス格納部に接続されたページフレーム番号比較器
とをさらに具備することを特徴とする請求項１に記載のキャッシュリプレース装置。
【請求項３】
前記ウェイ決定回路が、前記スレッド比較器のウェイｎヒットＯＲゲート（ｎは自然数）からの出力と、前記キャッシュタグテーブルから出力される最長未使用ウェイ番号から、置換すべきウェイ番号を出力することを特徴とする請求項１に記載のキャッシュリプレース装置。
【請求項４】
前記キャッシュタグテーブルに接続されたインデックスセレクタと、
前記インデックスセレクタに接続されたカウンタと、
前記インデックスセレクタに接続されたサイクル取得制御回路と、
前記キャッシュタグテーブル及び前記ウェイ決定回路に接続されたウェイセレクタとをさらに具備し、
前記ウェイ決定回路が、前記スレッド比較器のウェイｎヒットＯＲゲート（ｎは自然数）からの出力と、前記キャッシュタグテーブルから出力される最長未使用ウェイ番号から、置換すべきウェイ番号を出力することを特徴とする請求項１に記載のキャッシュリプレース装置。
【請求項５】
命令によるキャッシュへのアクセスが空いている周期に、カウンタの値によって索引したキャッシュタグテーブルの各ウェイに設定されたスレッドＩＤをスレッド比較器に、そして有効フラグ、置換ウェイ番号及び最長未使用ウェイ番号をウェイセレクタにそれぞれ出力し、
前記スレッド比較器に格納されている終了スレッドＩＤと前記スレッドＩＤが一致しているかの結果を、前記スレッド比較器からウェイ決定回路に出力し、
前記有効フラグの値によって前記置換ウェイ番号及び前記最長未使用ウェイ番号のいずれかを、前記ウェイセレクタから前記ウェイ決定回路に出力し、
前記ウェイ決定回路が、置換すべきウェイ番号を決定し、前記カウンタの値によって索引した前記キャッシュタグテーブルの各ウェイの前記置換ウェイ番号を書き換え、そして前記有効フラグをオンに設定する
ことを特徴とするキャッシュリプレース方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対称型マルチプロセッサ（ＳＭＰ）システムや、同時マルチスレッディング（ＳＭＴ）を用いたマイクロプロセッサにおけるキャッシュ制御に関し、特にセットアソシアティブ方式のキャッシュを用いたときのキャッシュリプレース装置及びキャッシュリプレース方法に係わる。
【背景技術】
【０００２】
アソシアティブ方式のキャッシュは、複数のウェイによって構成されているために、ミスが発生したときはどのウェイを置き換えるかを決定しなければならない。特にセットアソシアティブ方式では、複数のウェイからどれを置き換えるかを選択する必要がある。選択法には、主にランダム法と最長未使用時間（ＬＲＵ）法がある。ランダム法は候補の中から無作為に対象を選択する方法である。一方、ＬＲＵ法は最も長い期間にわたって使用されていなかったウェイを選択する方法である。最近では、このＬＲＵ法またはその近似法を用いて、わずかでもミス率を下げる試みがなされている。（例えば、非特許文献１参照。）。
【非特許文献１】ジョン・Ｌ・ヘネシー、デイビッド・Ａ・パターソン著、成田  光彰訳、「コンピュータの構成と設計（下）」、日経ＢＰ社出版、１９９８年９月２５日、Ｐ４１２−４８３
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＬＲＵ法では、実行を終了したスレッドに関連するデータが必ずしも置換対象に選択されるとは限らない。むしろまだ有効なスレッドによって使用される可能性のあるデータが置換対象となってしまうことがある。
【０００４】
本発明は、実行を終了したスレッドあるいは優先度の低いスレッドに関連するデータを置換対象として選択することが可能なキャッシュリプレース装置及びキャッシュリプレース方法を提供しようとするものである。
【課題を解決するための手段】
【０００５】
本発明の第１の特徴は、複数のウェイからなるキャッシュタグテーブルと、キャッシュタグテーブルに接続され、キャッシュタグテーブルに格納されたスレッド番号と、実行しようとするスレッドの番号を比較するスレッド比較器と、キャッシュタグテーブル及びスレッド比較器に接続され、置換すべきウェイを決定するウェイ決定回路とを具備するキャッシュリプレース装置であることを要旨とする。
【０００６】
更に、本発明の第２の特徴は、命令によるキャッシュへのアクセスが空いている周期に、カウンタの値によって索引したキャッシュタグテーブルの各ウェイに設定されたスレッドＩＤをスレッド比較器に、そして有効フラグ、置換ウェイ番号及び最長未使用ウェイ番号をウェイセレクタにそれぞれ出力し、スレッド比較器に格納されている終了スレッドＩＤとスレッドＩＤが一致しているかの結果を、スレッド比較器からウェイ決定回路に出力し、有効フラグの値によって置換ウェイ番号及び最長未使用ウェイ番号のいずれかを、ウェイセレクタからウェイ決定回路に出力し、ウェイ決定回路が、置換すべきウェイ番号を決定し、カウンタの値によって索引したキャッシュタグテーブルの各ウェイの置換ウェイ番号を書き換え、そして有効フラグをオンに設定するキャッシュリプレース方法であることを要旨とする。
【発明の効果】
【０００７】
本発明によれば、実行を終了したスレッドが使用していたキャッシュを置換対象として選択することが可能となり、キャッシュの使用効率の向上及びヒットミス率の低下が期待できる。
【発明を実施するための最良の形態】
【０００８】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
【０００９】
（第１の実施の形態）
本発明の第１の実施の形態に係るキャッシュリプレース装置３０ａは、図１に例示すように、ウェイ０とウェイ１から構成されるキャッシュタグテーブル３３ａと、キャッシュタグテーブル３３ａに接続されたスレッド比較器３６ａと、キャッシュタグテーブル３３ａ及びスレッド比較器３６ａに接続されたウェイ決定回路３７ａを具備する。またキャッシュリプレース装置３０ａは、キャッシュタグテーブル３３ａに接続されたインデックスセレクタ３２ａと、インデックスセレクタ３２ａに接続された命令アクセスアドレス格納部３１と、インデックスセレクタ３２ａと命令アクセスアドレス格納部３１に接続されたキャッシュミスアドレス格納部３５とを具備する。そしてキャッシュリプレース装置３０ａは、キャッシュタグテーブル３３ａと命令アクセスアドレス格納部３１に接続されたページフレーム番号（ＰＦＮ）比較器３４と、キャッシュタグテーブル３３ａ、キャッシュミスアドレス格納部３５及びＰＦＮ比較器３４に接続されたキャッシュ制御回路３８とをさらに具備する。
【００１０】
スレッド比較器３６ａは、図２に例示すように、第１エントリーユニット３６１、第２エントリーユニット３６２、第３エントリーユニット３６３、第４エントリーユニット３６４、先入れ先出し（ＦＩＦＯ）制御部４００、ウェイ０ヒットＯＲゲート３６６及びウェイ１ヒットＯＲゲート３６５を具備する。第１から第４エントリーユニット３６１、３６２、３６３、３６４の内部には、終了したスレッドのＩＤを記憶する終了スレッド（Ｔｈ）ＩＤメモリ４０３と、キャッシュタグテーブル３３ａの各ウェイに格納されたＴｈＩＤと終了ＴｈＩＤメモリ４０３に格納されたＴｈＩＤを比較する終了Ｔｈ比較器４０１、４０２がある。そして、ウェイ０用の終了Ｔｈ比較器４０１は、ウェイ０ヒットＯＲゲート３６６に、ウェイ１用の終了Ｔｈ比較器４０２は、ウェイ１ヒットＯＲゲート３６５に接続されている。  
キャッシュタグテーブル３３ａは、メモリを使用しているスレッドのスレッドＩＤ（ＴｈＩＤ）、ＰＦＮ及び最長未使用ウェイ番号（ｌｒｕＷａｙ）を記憶し管理するためのメモリテーブルである。インデックスセレクタ３２ａは、スレッド実行時とキャッシュ置換時とで、キャッシュタグテーブル３３ａを索引するためのインデックスを選択しわけるための回路である。
【００１１】
命令アクセスアドレス格納部３１は、実行するスレッドＩＤ（ｃｕｒｒＴｈＩＤ）と、実行フレーム番号（ｃｕｒｒＰＦＮ）と実行インデックス（ｃｕｒｒＩｎｄｅｘ）で構成されたアクセスメモリのアドレスを格納するためのレジスタである。キャッシュミスアドレス格納部３５は、キャッシュミスが発生した時に、命令アクセスアドレス格納部３１に格納されていたデータを、ミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）と、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）として格納し、さらに置換すべきウェイ番号（ＲｅｐＷａｙ）を格納しておくメモリである。
【００１２】
ＰＦＮ比較器３４は、スレッド実行時に、キャッシュミスの有無を判定するために、キャッシュタグテーブル３３ａのＰＦＮと命令アクセスアドレス格納部３１の実行フレーム番号（ｃｕｒｒＰＦＮ）を比較し、その結果をキャッシュ制御回路３８に出力する回路である。ウェイ決定回路３７ａは、キャッシュミス時に、ウェイ決定アルゴリズムに従って置換すべきウェイを決定し、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）を設定する回路である。
【００１３】
キャッシュ制御回路３８は、スレッド実行時やキャッシュ置換時にどのウェイにアクセスするかを制御するための回路である。またＬＲＵに従ってキャッシュタグテーブル３３ａの最長未使用ウェイ番号（ｌｒｕＷａｙ）を設定する。
【００１４】
スレッド比較器３６ａの終了ＴｈＩＤメモリ４０３は、生成スレッドＩＤキューからデタッチされた終了スレッド（Ｔｈ）ＩＤを記憶しておくメモリであり、スレッド比較器３６ａの先入れ先出し（ＦＩＦＯ）制御部４００は、第１エントリーユニット３６１の終了ＴｈＩＤメモリ４０３から第４エントリーユニット３６４の終了ＴｈＩＤメモリ４０３まで、順次移動させて記憶させていくための回路である。
【００１５】
また、スレッド比較器３６ａの終了スレッド（Ｔｈ）比較器４０１、４０２は、終了ＴｈＩＤメモリ４０３に記憶された終了ＴｈＩＤと、キャッシュタグテーブル３３ａの各ウェイに格納されたＴｈＩＤを比較する回路である。スレッド比較器３６ａのウェイ０ヒットＯＲゲート３６６とウェイ１ヒットＯＲゲート３６５は、第１から第４エントリーユニット３６１、３６２、３６３、３６４の終了Ｔｈ比較器４０１、４０２の結果の論理和を求め、最終的に各ウェイに終了したスレッドのデータがあるか否かをウェイ決定回路に出力するための回路である。
【００１６】
（第１の実施の形態に係るキャッシュリプレース方法）
（イ）  処理の実行要求に従ってスレッド生成回路１０で生成されるスレッドＩＤは、順次生成スレッドＩＤキュー２０にアタッチされる。実行順番がきたスレッドＩＤは、生成スレッドＩＤキュー２０からデタッチされ、実行スレッドＩＤ（ｃｕｒｒＴｈＩＤ）として命令アクセスアドレス格納部３１に記憶されると同時に、スレッド比較器３６ａの終了ＴｈＩＤメモリ４０３に格納される。
【００１７】
（ロ）  メモリ管理部（ＭＭＵ）（図示せず）によって、実行スレッドＩＤのスレッドがアクセスするメモリのアドレスとして、実行ページフレーム番号（ｃｕｒｒＰＦＮ）と実行インデックス（ｃｕｒｒＩｎｄｅｘ）が命令アクセスアドレス格納部３１に記憶される。
【００１８】
（ハ）  インデックスセレクタ３２ａによって実行インデックス（ｃｕｒｒＩｎｄｅｘ）が選択され、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いてキャッシュタグテーブル３３ａが索引される。
【００１９】
（ニ）  次に、ＰＦＮ比較器３４によって、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ａのメモリに格納されているＰＦＮと、命令アクセスアドレス格納部３１に格納されている実行ページフレーム番号（ｃｕｒｒＰＦＮ）が読み出され比較される。そして各ウェイについて一致しているか否かがキャッシュ制御回路３８に通知される。もし一致しているウェイがある場合、ＰＦＮ比較器３４はアドレスの一致をキャッシュ制御回路３８に通知し、キャッシュ制御回路３８は一致したウェイのデータを処理に使用させ、一致しなかったウェイ番号を最長未使用ウェイ（ｌｒｕＷａｙ）に設定する。もし一致しているウェイがない場合は、キャッシュ置換処理が実行される。
【００２０】
（第１の実施の形態に係るキャッシュ置換処理）
（ホ）  まず、スレッド比較器３６ａによって、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ａのメモリに格納されているスレッドＩＤ（ＴｈＩＤ）が各ウェイから読み出される。次に第１から第４エントリーユニット３６１、３６２、３６３、３６４で、それぞれの終了ＴｈＩＤメモリ４０３に格納されている終了ＴｈＩＤが、各ウェイから読み出されたＴｈＩＤと各終了Ｔｈ比較器４０１、４０２によって比較される。そして比較結果の論理和がウェイ０ヒットＯＲゲート３６６とウェイ１ヒットＯＲゲート３６５によってウェイ決定回路３７ａに出力される。
【００２１】
（ヘ）  次に、ウェイ決定回路３７ａで、図３に示したアルゴリズムによって、置換すべきウェイが決定され、キャッシュミスアドレス格納部３５に置換すべきウェイ番号（ＲｅｐＷａｙ）として設定される。アルゴリズムについては後に詳述する。
【００２２】
（ト）  また、命令アクセスアドレス格納部３１に格納されていた実行スレッドＩＤ（ｃｕｒｒＴｈＩＤ）、実行ページフレーム番号（ｃｕｒｒＰＦＮ）と索引に用いられた実行インデックス（ｃｕｒｒＩｎｄｅｘ）が、それぞれキャッシュミスアドレス格納部３５のミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）に設定される。
【００２３】
（チ）  キャッシュ制御回路３８外部メモリから、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）をアドレスとしてデータを読み出す。読み出されたデータはキャッシュメモリのデータ部（図示せず）に書き込まれる。
（リ）  続いて、インデックスセレクタ３２ａによってミスインデックス（ｍｉｓｓＩｎｄｅｘ）が選択され、ミスインデックス（ｍｉｓｓＩｎｄｅｘ）を用いてキャッシュタグテーブル３３ａが索引される。
【００２４】
（ヌ）  キャッシュ制御回路３８は、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）を読み出し、その値に従って置換すべきウェイへ、ミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）とミスページフレーム番号（ｍｉｓｓＰＦＮ）を、使用中のスレッドＩＤ（ＴｈＩＤ）とページフレーム番号（ＰＦＮ）として設定させる。これにより、キャッシュの置換が完了する。
【００２５】
（第１の実施の形態に係るアルゴリズム）
Ｓ１００：ウェイ０ヒットＯＲゲート３６６の結果とウェイ１ヒットＯＲゲート３６５の結果を受信し、さらに実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ａのメモリに格納されている最長未使用ウェイ（ｌｒｕＷａｙ）を読み出す。
【００２６】
Ｓ１０１：ウェイ０ヒットＯＲゲート３６６の結果が１か０か判定する。つまり、ウェイ０に格納されているＴｈＩＤが４つの終了ＴｈＩＤのいずれかと一致（ヒット＝１）しているか否か（ミス＝０）を調べる。
【００２７】
Ｓ１０２：Ｓ１０１でヒットしていた場合、ウェイ１ヒットＯＲゲート３６５の結果が１か０か判定する。つまり、ウェイ１に格納されているＴｈＩＤが４つの終了ＴｈＩＤのいずれかと一致（ヒット＝１）しているか否か（ミス＝０）を調べる。
【００２８】
Ｓ１０３：Ｓ１０１でミスしていた場合、ウェイ１ヒットＯＲゲート３６５の結果が１か０か判定する。つまり、ウェイ１に格納されているＴｈＩＤが４つの終了ＴｈＩＤのいずれかと一致（ヒット＝１）しているか否か（ミス＝０）を調べる。
【００２９】
Ｓ１０４：Ｓ１０２でヒットしていた場合、またはＳ１０３でミスしていた場合、ｌｒｕＷａｙの値を判定する。
【００３０】
Ｓ１０５：Ｓ１０２でミスしていた場合、またはＳ１０４でｌｒｕＷａｙ＝０の場合、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）に０を設定する。
【００３１】
Ｓ１０６：Ｓ１０３でヒットしていた場合、またはＳ１０４でｌｒｕＷａｙ＝１の場合、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）に１を設定する。
【００３２】
このアルゴリズムによって、以下の論理が実現されている：
・ウェイ０のＴｈＩＤのみが終了ＴｈＩＤに一致している場合は、置換すべきウェイ番号（ＲｅｐＷａｙ）をウェイ０にする；
・ウェイ１のＴｈＩＤのみが終了ＴｈＩＤに一致している場合は、置換すべきウェイ番号（ＲｅｐＷａｙ）をウェイ１にする；
・両方のウェイのＴｈＩＤが終了ＴｈＩＤに一致しているか、いずれも一致していない場合は、置換すべきウェイ番号（ＲｅｐＷａｙ）を、既にキャッシュタグテーブル３３ａのメモリに設定されているｌｒｕＷａｙの値とする。
【００３３】
第１の実施の形態に係るキャッシュリプレース装置３０ａ及びキャッシュリプレース方法によれば、終了したスレッドが使用していたキャッシュを置換することができ、キャッシュの使用効率があがり、ヒットミス率の低下が期待できる。
【００３４】
（第２の実施の形態）
本発明の第２の実施の形態に係るキャッシュリプレース装置３０ｂは、図４に例示すように、ウェイ０とウェイ１から構成されるキャッシュタグテーブル３３ｂと、キャッシュタグテーブル３３ｂに接続されたスレッド比較器３６ｂと、キャッシュタグテーブル３３ｂ及びスレッド比較器３６ｂに接続されたウェイ決定回路３７ｂを具備する。またキャッシュリプレース装置３０ｂは、キャッシュタグテーブル３３ｂに接続されたインデックスセレクタ３２ｂと、インデックスセレクタ３２ｂに接続された命令アクセスアドレス格納部３１、カウンタ４０及びサイクル取得制御回路４１と、命令アクセスアドレス格納部３１に接続されたキャッシュミスアドレス格納部３５とを具備する。そしてキャッシュリプレース装置３０ｂは、キャッシュタグテーブル３３ｂと命令アクセスアドレス格納部３１に接続されたＰＦＮ比較器３４と、キャッシュタグテーブル３３ｂ、キャッシュミスアドレス格納部３５及びウェイ決定回路３７ｂに接続されたウェイセレクタ３９と、キャッシュタグテーブル３３ｂ、キャッシュミスアドレス格納部３５及びＰＦＮ比較器３４に接続されたキャッシュ制御回路３８とをさらに具備する。
【００３５】
スレッド比較器３６ｂは、図５に例示すように、第１エントリーユニット３６１、第２エントリーユニット３６２、第３エントリーユニット３６３、第４エントリーユニット３６４とこれらに接続した先入れ先出し（ＦＩＦＯ）制御部４００、ウェイ０ヒットＯＲゲート３６６及びウェイ１ヒットＯＲゲート３６５を具備する。また、第１予測エントリーユニット５０１、第２予測エントリーユニット５０２とこれらに接続したスレッド予測回路４０５、ウェイ０ヒットＮＯＲゲート３６８及びウェイ１ヒットＮＯＲゲート３６７をさらに具備する。また、ウェイ０ヒットＯＲゲート３６６とウェイ０ヒットＮＯＲゲート３６８に接続したウェイ０ヒットＡＮＤゲート５０４、及びウェイ１ヒットＯＲゲート３６５とウェイ１ヒットＮＯＲゲート３６７に接続したウェイ１ヒットＡＮＤゲート５０３をさらに具備する。
【００３６】
第１から第４エントリーユニット３６１、３６２、３６３、３６４の内部には、終了したスレッドのＩＤを記憶する終了スレッド（Ｔｈ）ＩＤメモリ４０３と、キャッシュタグテーブル３３ｂの各ウェイに格納されたＴｈＩＤと終了ＴｈＩＤメモリ４０３に格納されたＴｈＩＤを比較する終了Ｔｈ比較器４０１、４０２がある。そして、ウェイ０用の終了Ｔｈ比較器４０１は、ウェイ０ヒットＯＲゲート３６６に、ウェイ１用の終了Ｔｈ比較器４０２は、ウェイ１ヒットＯＲゲート３６５に接続されている。
【００３７】
第１予測エントリーユニット５０１と第２予測エントリーユニット５０２の内部には、スレッド予測回路４０５によって実行されると予測したスレッドのＩＤを記憶する予測スレッド（Ｔｈ）ＩＤメモリ４０４と、キャッシュタグテーブル３３ｂの各ウェイに格納されたＴｈＩＤと予測ＴｈＩＤメモリ４０４に格納されたＴｈＩＤを比較する予測Ｔｈ比較器４０６、４０７がある。そして、ウェイ０用の予測Ｔｈ比較器４０６は、ウェイ０ヒットＮＯＲゲート３６８に、ウェイ１用の予測Ｔｈ比較器４０７は、ウェイ１ヒットＮＯＲゲート３６７に接続されている。
【００３８】
キャッシュタグテーブル３３ｂは、メモリを使用しているスレッドのスレッドＩＤ（ＴｈＩＤ）、ＰＦＮ、最長未使用ウェイ番号（ｌｒｕＷａｙ）、置換ウェイ番号有効フラグ（Ｖ）及び置換ウェイ番号（Ｒｅｐ）を記憶し管理するためのメモリテーブルである。カウンタ４０は、インデックスセレクタ３２ｂに読み出される毎に、キャッシュタグテーブル３３ｂを索引するためのインデックス値をキャッシュタグテーブル３３ｂの最大値まで１ずつ加算する回路である。
【００３９】
サイクル取得制御回路４１は、命令実行サイクルの中から、キャッシュがスレッドの実行によってアクセスされないサイクルを探し出して通知する回路である。インデックスセレクタ３２ｂは、スレッド実行時、置換ウェイ番号設定時及びキャッシュ置換時とで、キャッシュタグテーブル３３ｂを索引するためのインデックスを選択しわけるための回路である。
【００４０】
命令アクセスアドレス格納部３１は、実行するスレッドＩＤ（ｃｕｒｒＴｈＩＤ）と、実行フレーム番号（ｃｕｒｒＰＦＮ）と実行インデックス（ｃｕｒｒＩｎｄｅｘ）で構成されたアクセスメモリのアドレスを格納するためにメモリである。キャッシュミスアドレス格納部３５は、キャッシュミスが発生した時に、命令アクセスアドレス格納部３１に格納されていたデータを、ミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）と、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）として格納し、さらに置換すべきウェイ番号（ＲｅｐＷａｙ）を格納しておくメモリである。ＰＦＮ比較器３４は、スレッド実行時に、キャッシュミスの有無を判定するために、キャッシュタグテーブル３３ｂのＰＦＮと命令アクセスアドレス格納部３１の実行フレーム番号（ｃｕｒｒＰＦＮ）を比較し、その結果をキャッシュ制御回路３８に出力する回路である。
【００４１】
ウェイセレクタ３９は、キャッシュタグテーブル３３ｂの置換ウェイ番号有効フラグ（Ｖ）に従って、最長未使用ウェイ番号（ｌｒｕＷａｙ）と置換ウェイ番号（Ｒｅｐ）のどちらかを選択してウェイ決定回路３７ｂに出力し、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）を設定する回路である。ウェイ決定回路３７ｂは、キャッシュミス時及び置換ウェイ番号設定時に、ウェイ決定アルゴリズムに従って置換すべきウェイを決定し、キャッシュタグテーブル３３ｂの置換ウェイ番号有効フラグ（Ｖ）及び置換ウェイ番号（Ｒｅｐ）を設定する回路である。
【００４２】
キャッシュ制御回路３８は、スレッド実行時やキャッシュ置換時にどのウェイにアクセスするかを制御するための回路である。またＬＲＵ法に従ってキャッシュタグテーブル３３ｂの最長未使用ウェイ番号（ｌｒｕＷａｙ）を設定する。
【００４３】
スレッド比較器３６ｂの終了ＴｈＩＤメモリ４０３は、生成スレッドＩＤキューからデタッチされた終了スレッド（Ｔｈ）ＩＤを記憶しておくメモリであり、スレッド比較器３６ｂの先入れ先出し（ＦＩＦＯ）制御部４００は、第１エントリーユニット３６１の終了ＴｈＩＤメモリ４０３から第４エントリーユニット３６４の終了ＴｈＩＤメモリ４０３まで、順次移動させて記憶させていくための回路である。スレッド予測回路４０５は、今後実行されるスレッドのＴｈＩＤを予測する回路であり、予測ＴｈＩＤメモリ４０４は、そのＴｈＩＤを記憶しておくメモリである。
【００４４】
また、スレッド比較器３６ｂの終了スレッド（Ｔｈ）比較器４０１、４０２は、終了ＴｈＩＤメモリ４０３に記憶された終了ＴｈＩＤと、キャッシュタグテーブル３３ｂの各ウェイに格納されたＴｈＩＤを比較する回路であり、スレッド比較器３６ｂの予測スレッド（Ｔｈ）比較器４０６、４０７は、予測ＴｈＩＤメモリ４０４に記憶された予測ＴｈＩＤと、キャッシュタグテーブル３３ｂの各ウェイに格納されたＴｈＩＤを比較する回路である。スレッド比較器３６ｂのウェイ０ヒットＯＲゲート３６６とウェイ１ヒットＯＲゲート３６５は、第１から第４エントリーユニット３６１、３６２、３６３、３６４の終了スレッド（Ｔｈ）比較器４０１、４０２の結果の論理和を求め、一方、ウェイ０ヒットＮＯＲゲート３６８とウェイ１ヒットＮＯＲゲート３６７は、第１予測エントリーユニット５０１と第２予測エントリーユニット５０２の予測スレッド（Ｔｈ）比較器４０６、４０７の結果の否定的論理和を求める。そしてウェイ０ヒットＡＮＤゲート５０４とウェイ１ヒットＡＮＤゲート５０３は、最終的に各ウェイに終了したスレッドまたは実行されると予測されるスレッドのデータがあるか否かをウェイ決定回路に出力するための回路である。
【００４５】
（第２の実施の形態に係るキャッシュリプレース方法）
（イ）  処理の実行要求に従ってスレッド生成回路１０で生成されるスレッドＩＤは、順次生成スレッドＩＤキュー２０にアタッチされる。実行順番がきたスレッドＩＤは、生成スレッドＩＤキュー２０からデタッチされ、実行スレッドＩＤ（ｃｕｒｒＴｈＩＤ）として命令アクセスアドレス格納部３１に記憶されると同時に、スレッド比較器３６ｂの終了ＴｈＩＤメモリ４０３に格納される。
【００４６】
（ロ）  メモリ管理部（ＭＭＵ）（図示せず）によって、実行スレッドＩＤのスレッドがアクセスするメモリのアドレスとして、実行ページフレーム番号（ｃｕｒｒＰＦＮ）と実行インデックス（ｃｕｒｒＩｎｄｅｘ）が命令アクセスアドレス格納部３１に記憶される。
【００４７】
（ハ）  インデックスセレクタ３２ｂによって実行インデックス（ｃｕｒｒＩｎｄｅｘ）が選択され、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いてキャッシュタグテーブル３３ｂが索引される。
【００４８】
（ニ）  次に、ページフレーム番号（ＰＦＮ）比較器３４によって、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ｂのメモリに格納されているページフレーム番号（ＰＦＮ）と、命令アクセスアドレス格納部３１に格納されている実行ページフレーム番号（ｃｕｒｒＰＦＮ）が読み出され比較される。そして各ウェイについて一致しているか否かがキャッシュ制御回路３８に通知される。もし一致しているウェイがある場合、ＰＦＮ比較器３４は、一致したことをキャッシュ制御回路３８に通知し、キャッシュ制御回路３８は一致したウェイのデータを処理に使用させ、一致しなかったウェイ番号を最長未使用ウェイ（ｌｒｕＷａｙ）に設定する。もし一致しているウェイがない場合は、キャッシュ置換処理が実行される。
【００４９】
（第２の実施の形態に係るキャッシュ置換処理）
（ホ）  キャッシュメモリにアクセスする命令が実行中の場合、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ｂのメモリに格納されている置換ウェイ番号有効フラグ（Ｖ）が１（オン）であり、ページフレーム番号（ＰＦＮ）比較器３４が不一致を検出（キャッシュミス）したならば、ウェイセレクタ３９は置換ウェイ番号（Ｒｅｐ）をキャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）に設定し、（ヲ）にジャンプする。
【００５０】
（へ）  もし置換ウェイ番号有効フラグ（Ｖ）が０（オフ）であり、ページフレーム番号（ＰＦＮ）比較器３４が不一致を検出（キャッシュミス）したならば、最長未使用ウェイ（ｌｒｕＷａｙ）をウェイ決定回路３７ｂに出力し、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）に設定する。そしてスレッド比較器３６ｂによって、実行インデックス（ｃｕｒｒＩｎｄｅｘ）を用いて索引されたキャッシュタグテーブル３３ｂのメモリに格納されているスレッドＩＤ（ＴｈＩＤ）が各ウェイから読み出される。
【００５１】
（ト）  サイクル取得制御回路４１は、キャッシュメモリが使用されていないサイクルを見つけ、インデックスセレクタ３２ｂにカウンタ４０の値をインデックスとして出力させる。そして、スレッド比較器３６ｂによって、そのインデックスを用いて索引されたキャッシュタグテーブル３３ｂのメモリに格納されているスレッドＩＤ（ＴｈＩＤ）が各ウェイから読み出さる。
【００５２】
（チ）  次に、スレッド比較器３６ｂの第１から第４エントリーユニット３６１、３６２、３６３、３６４で、それぞれの終了ＴｈＩＤメモリ４０３に格納されている終了ＴｈＩＤが、各ウェイから読み出されたＴｈＩＤと各終了Ｔｈ比較器４０１、４０２によって比較される。そして比較結果の論理和がウェイ０ヒットＯＲゲート３６６とウェイ１ヒットＯＲゲート３６５によって、それぞれウェイ０ヒットＡＮＤゲート５０４とウェイ１ヒットＡＮＤゲート５０３に出力される。
【００５３】
（リ）一方、第１予測エントリーユニット５０１と第２予測エントリーユニット５０２で、それぞれの予測ＴｈＩＤメモリ４０４に格納されている予測ＴｈＩＤが、各ウェイから読み出されたＴｈＩＤと各予測Ｔｈ比較器４０６、４０７によって比較される。そして比較結果の否定的論理和がウェイ０ヒットＮＯＲゲート３６８とウェイ１ヒットＮＯＲゲート３６７によって、それぞれウェイ０ヒットＡＮＤゲート５０４とウェイ１ヒットＡＮＤゲート５０３に出力される。
【００５４】
（ヌ）ウェイ０ヒットＡＮＤゲート５０４とウェイ１ヒットＡＮＤゲート５０３によって、（チ）と（リ）で入力されたデータの論理積がウェイ決定回路３７ｂに出力される。
【００５５】
（ル）  次に、ウェイ決定回路３７ｂで、図６に示したアルゴリズムによって、置換すべきウェイが決定され、キャッシュタグテーブル３３ｂに置換ウェイ番号（Ｒｅｐ）として設定されると共に、置換ウェイ番号有効フラグ（Ｖ）が１にされる。アルゴリズムについては後に詳述する。
【００５６】
（ヲ）  キャッシュにアクセスする命令が、キャッシュミスを発生した場合、命令アクセスアドレス格納部３１に格納されていた実行スレッドＩＤ（ｃｕｒｒＴｈＩＤ）、実行ページフレーム番号（ｃｕｒｒＰＦＮ）と索引に用いられた実行インデックス（ｃｕｒｒＩｎｄｅｘ）が、それぞれキャッシュミスアドレス格納部３５のミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）に設定される。
【００５７】
（ワ）  キャッシュ制御回路３８外部メモリから、ミスページフレーム番号（ｍｉｓｓＰＦＮ）とミスインデックス（ｍｉｓｓＩｎｄｅｘ）をアドレスとしてデータを読み出す。読み出されたデータはキャッシュメモリのデータ部（図示せず）に書き込まれる。
（カ）  続いて、インデックスセレクタ３２ｂによってミスインデックス（ｍｉｓｓＩｎｄｅｘ）が選択され、ミスインデックス（ｍｉｓｓＩｎｄｅｘ）を用いてキャッシュタグテーブル３３ｂが索引される。
【００５８】
（ヨ）  キャッシュ制御回路３８は、キャッシュミスアドレス格納部３５の置換すべきウェイ番号（ＲｅｐＷａｙ）を読み出し、その値に従って置換すべきウェイへ、ミススレッドＩＤ（ｍｉｓｓＴｈＩＤ）とミスページフレーム番号（ｍｉｓｓＰＦＮ）を、使用中のスレッドＩＤ（ＴｈＩＤ）とページフレーム番号（ＰＦＮ）として設定させる。これにより、キャッシュの置換が完了する。
【００５９】
（第２の実施の形態に係るウェイ決定アルゴリズム）
Ｓ２００：ウェイ０ヒットＡＮＤゲート５０４の結果とウェイ１ヒットＡＮＤゲート５０３の結果を受信し、さらにキャッシュタグテーブル３３ａのメモリに格納されている最長未使用ウェイ（ｌｒｕＷａｙ）を読み出す。
【００６０】
Ｓ２０１：ウェイ０ヒットＡＮＤゲート５０４の結果が１か０か判定する。つまり、ウェイ０に格納されているＴｈＩＤが４つの終了ＴｈＩＤのいずれかと一致しているか否か，そして２つの予測ＴｈＩＤのいずれかと一致しているか否かを調べる。ウェイ０が１つでも終了ＴｈＩＤを含み、予測ＴｈＩＤを全く含んでいない時のみヒット（１）となる。
【００６１】
Ｓ２０２：Ｓ２０１でヒットしていた場合、ウェイ１ヒットＡＮＤゲート５０３の結果が１か０か判定する。ウェイ１が１つでも終了ＴｈＩＤを含み、予測ＴｈＩＤを全く含んでいない時のみヒット（１）となっている。
【００６２】
Ｓ２０３：Ｓ２０１でミスしていた場合、ウェイ１ヒットＡＮＤゲート５０３の結果が１か０か判定する。ウェイ１が１つでも終了ＴｈＩＤを含み、予測ＴｈＩＤを全く含んでいない時のみヒット（１）となっている。
【００６３】
Ｓ２０４：Ｓ２０２でミスしていた場合、置換ウェイ番号（Ｒｅｐ）に０を設定し、置換ウェイ番号有効フラグ（Ｖ）に１を設定する。
【００６４】
Ｓ２０５：Ｓ２０２でヒットしていた場合、またはＳ２０３でミスしていた場合、置換ウェイ番号（Ｒｅｐ）に最長未使用ウェイ（ｌｒｕＷａｙ）を設定し、置換ウェイ番号有効フラグ（Ｖ）に１を設定する。
【００６５】
Ｓ２０６：Ｓ２０３でヒットしていた場合、置換ウェイ番号（Ｒｅｐ）に１を設定し、置換ウェイ番号有効フラグ（Ｖ）に１を設定する。
【００６６】
このアルゴリズムによって、以下の論理が実現されている：
・ウェイ０のＴｈＩＤのみが終了ＴｈＩＤのみに一致している場合は、置換ウェイ番号（Ｒｅｐ）をウェイ０にする；
・ウェイ１のＴｈＩＤのみが終了ＴｈＩＤのみに一致している場合は、置換ウェイ番号（Ｒｅｐ）をウェイ１にする；
・両方のウェイのＴｈＩＤが終了ＴｈＩＤのみに一致しているか、いずれも予測ＴｈＩＤに一致している場合は、置換ウェイ番号（Ｒｅｐ）を、既にキャッシュタグテーブル３３ｂのメモリに設定されているｌｒｕＷａｙの値とする。
【００６７】
第２の実施の形態に係るキャッシュリプレース装置３０ｂ及びキャッシュリプレース方法によれば、終了したスレッドが使用していたキャッシュを置換し、今後実行される予測されるスレッドが使用するキャッシュを置換しないようにすることができるため、キャッシュの使用効率があがり、ヒットミス率の低下が期待できる。
【００６８】
（その他の実施の形態）
第１の実施の形態のキャッシュリプレース装置３０ａのスレッド比較器３６ａと、第２の実施の形態のキャッシュリプレース装置３０ｂのスレッド比較器３６ｂとを置き換えたりすることで、別の実施の形態が可能であり、同様の効果が得られることは言うまでもない。
【００６９】
スレッド比較器３６ａ、３６ｂでは、終了スレッドＩＤとの比較を行ったが、代わりに生成スレッドＩＤキューのスレッドＩＤ（実行中のスレッドＩＤ）と比較して、一致しないものをリプレース対象とすることもできる。
【００７０】
また、実行中のスレッドであっても優先度の低いスレッドをリプレース対象とすることも可能である。さらにセットセットアソシアティブキャッシュだけでなく、フルアソシアティブキャッシュに対しても適用することができる。
【００７１】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００７２】
【図１】本発明の第１の実施の形態に係るキャッシュリプレース装置の構成図である。
【図２】本発明の第１の実施の形態に係るスレッド比較器の構成図である。
【図３】本発明の第１の実施の形態に係るウェイ決定アルゴリズムの図である。
【図４】本発明の第２の実施の形態に係るキャッシュリプレース装置の構成図である。
【図５】本発明の第２の実施の形態に係るスレッド比較器の構成図である。
【図６】本発明の第２の実施の形態に係るウェイ決定アルゴリズムの図である。
【符号の説明】
【００７３】
１０…スレッド生成回路
２０…生成スレッドＩＤキュー
３０ａ…キャッシュリプレース装置
３０ｂ…キャッシュリプレース装置
３１…命令アクセスアドレス格納部
３２ａ…インデックスセレクタ
３２ｂ…インデックスセレクタ
３３ａ…キャッシュタグテーブル
３３ｂ…キャッシュタグテーブル
３４…ページフレーム番号比較器
３５…キャッシュミスアドレス格納部
３６ａ…スレッド比較器
３６ｂ…スレッド比較器
３７ａ…ウェイ決定回路
３７ｂ…ウェイ決定回路
３８…キャッシュ制御回路
３９…ウェイセレクタ
４０…カウンタ
４１…サイクル取得制御回路
３６１…第１エントリーユニット
３６２…第２エントリーユニット
３６３…第３エントリーユニット
３６４…第４エントリーユニット
３６５…ウェイ１ヒットＯＲゲート
３６６…ウェイ０ヒットＯＲゲート
３６７…ウェイ１ヒットＮＯＲゲート
３６８…ウェイ０ヒットＮＯＲゲート
４００…ＦＩＦＯ制御部
４０１…終了Ｔｈ比較器
４０２…終了Ｔｈ比較器
４０３…終了ＴｈＩＤメモリ
４０４…予測ＴｈＩＤメモリ
４０５…スレッド予測回路
４０６…予測Ｔｈ比較器
４０７…予測Ｔｈ比較器
５０１…第１予測エントリーユニット
５０２…第２予測エントリーユニット
５０３…ウェイ１ヒットＡＮＤゲート
５０４…ウェイ０ヒットＡＮＤゲート
【図１】
2005196303.tif 000003
【図２】
2005196303.tif 000004
【図３】
2005196303.tif 000005
【図４】
2005196303.tif 000006
【図５】
2005196303.tif 000007
【図６】
2005196303.tif 000008