(57)【要約】【課題】未使用のエントリーから更新エントリーを自動的に選択でき、時間的効率のよいキャッシュメモリーシステムを提供する。【解決手段】キャッシュメモリー８と、プロセッサー３０と、ヒット判定回路５と、インターバルタイマー３と、制御レジスター４とから構成される。フルアソシエイティブ方式若しくはそれに準ずる構成を有する、アドレスキャッシュ若しくはデータキャッシュによる、キャッシュメモリーの内容を新たな情報に更新する際に、タイマーを使用した世代管理によって、キャッシュメモリーを構成する各エントリーの使用履歴を把握して、未使用のエントリーを選択する。また、タイマーの周期を自動的に調節する。【選択図】      図２
2004272772.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に格納された情報の一部を取り込んで格納する情報格納部と
前記情報格納部に格納された情報の一定期間における使用状況を格納する参照ビット格納部
とをそれぞれ備えるエントリーを複数有することを特徴とするキャッシュメモリー。
【請求項２】
前記参照ビット格納部のそれぞれは、
前記情報格納部に対応した参照ビットの一定期間の使用状況を格納する使用状況記憶部と、
前記使用状況記憶部内に格納された情報を受信する参照ビット判定回路と、
前記参照ビット判定回路において選択される選択参照ビットを格納する選択参照ビット格納部
とを備えることを特徴とする請求項１記載のキャッシュメモリー。
【請求項３】
前記使用状況記憶部は、第１の参照ビットを格納する第１の参照ビット格納部と第２の参照ビットを格納する第２の参照ビット格納部とを備え、それぞれ過去及び現在の一定期間のエントリーの使用状況を記憶し、他の一定期間ではそれぞれ現在及び過去の一定期間のエントリーの使用状況を記憶することを特徴とする請求項２記載のキャッシュメモリー。
【請求項４】
主記憶装置に格納された情報の一部を取り込んで格納する情報格納部と、前記情報格納部に格納された情報の一定期間における使用状況を格納する参照ビット格納部とをそれぞれ備えるエントリーを複数有するキャッシュメモリーと、
前記情報格納部に接続され、ヒット信号を前記参照ビット格納部に対して発生するヒット判定回路
とを備えることを特徴とするキャッシュメモリーシステム。
【請求項５】
前記参照ビット格納部に接続されたインターバルタイマーを更に備えることを特徴とする請求項４記載のキャッシュメモリーシステム。
【請求項６】
前記参照ビット格納部のそれぞれは、
前記情報格納部に対応した参照ビットの一定期間の使用状況を格納する使用状況記憶部と、
前記使用状況記憶部内に格納された情報を受信する参照ビット判定回路と、
前記参照ビット判定回路において選択される選択参照ビットを格納する選択参照ビット格納部と、
前記参照ビット格納部に接続された参照ビット判定制御レジスターとを更に備えることを特徴とする請求項４又は５に記載のキャッシュメモリーシステム。
【請求項７】
前記インターバルタイマーに接続された制御レジスター
を更に備えることを特徴とする請求項５又は６に記載のキャッシュメモリーシステム。
【請求項８】
前記ヒット判定回路は、前記情報格納部からのキャッシュアドレス情報とプロセッサーからのプロセッサーキャッシュアクセスアドレス情報とを比較してヒット信号を前記参照ビット格納部に対して発生することを特徴とする請求項４乃至７のいずれか１項に記載のキャッシュメモリーシステム。
【請求項９】
前記インターバルタイマーは
前記制御レジスターから制御信号を受信して、前記参照ビット格納部を構成する使用状況記憶部と参照ビット判定回路に対して、世代交代信号を発生することを特徴とする請求項５乃至７のいずれか１項に記載のキャッシュメモリーシステム。
【請求項１０】
前記参照ビット判定回路は、前記参照ビット判定制御レジスターから判定制御信号を受信して、前記エントリー毎に過去と現在のヒット状況に基づいて最終的な選択参照ビットを生成することを特徴とする請求項６又は７に記載のキャッシュメモリーシステム。
【請求項１１】
前記複数のエントリーのそれぞれの参照ビット格納部の出力信号を入力するセレクターと、
前記セレクターから前記複数のエントリーに対応した出力信号をそれぞれ入力し、選ばれたエントリーの位置番号を出力するプライオリティエンコーダーと、
前記セレクターからの複数の出力信号を分岐して入力し、未使用エントリー存在信号を出力するＮＡＮＤゲートと、
エントリーシャッフル信号を受信して前記セレクターに対してエントリーセレクター制御信号を送信するエントリーシャッフルカウンターとを更に備え、
前記複数のエントリー、前記セレクター、前記プライオリティエンコーダー、前記ＮＡＮＤゲート、前記エントリーシャッフルカウンターとによりセグメントを構成したことを特徴とする請求項４乃至１０のいずれか１項に記載のキャッシュメモリーシステム。
【請求項１２】
前記セグメントの複数個と、
前記複数個のセグメントのそれぞれに付随する未使用エントリー存在信号をそれぞれ格納する未使用エントリー存在信号格納部と、
前記未使用エントリー存在信号格納部から前記未使用エントリー存在信号を入力するセレクターと、
前記セレクターからの前記複数個のセグメントにそれぞれ対応した出力信号を入力し、選ばれたセグメントの位置番号を出力するプライオリティエンコーダーと、
前記未使用エントリー存在信号を分岐して入力し、未ヒットエントリー存在信号を出力するＯＲゲートと、
セグメントシャッフル信号を受信して前記セレクターに対してセグメントセレクター制御信号を送信するセグメントシャッフルカウンター
とを更に備えることを特徴とする請求項１１に記載のキャッシュメモリーシステム。
【請求項１３】
前記複数の参照ビット格納部に接続された未使用エントリー判定部と、
前記未使用エントリー判定部に接続されたヒット上限数レジスター若しくは未ヒットエントリー存在信号発生部と、
前記未使用エントリー判定部に接続されたヒット下限数レジスターと、
前記未使用エントリー判定部に接続され、カウントクロック制御信号を受信するカウントクロック生成部と、
前記カウントクロック生成部に接続された状況レジスター
とを更に備えることを特徴とする請求項４乃至１２のいずれか１項に記載のキャッシュメモリーシステム。
【請求項１４】
複数のエントリーを単位として１個のセグメントを構成し、該セグメントを複数個備えたキャッシュメモリーにおいて、
それぞれのエントリーに付随する参照ビットを参照ビット格納部から処理回路に入力して、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階と、
前記複数のエントリーをローテートして、前記選ばれたエントリーの位置番号及び前記未使用エントリー存在信号を出力する段階を繰り返し、エントリーシャッフルする段階
とを備えることを特徴とするキャッシュメモリーの更新方法。
【請求項１５】
前記エントリーシャッフルする段階に加え、
それぞれのセグメントに付随する未使用エントリー存在信号を未使用エントリー存在信号格納部から処理回路に入力して、選ばれたセグメントの位置番号及び未ヒットエントリー存在信号を出力する段階と、
前記複数個のセグメントをローテートして、前記選ばれたセグメントの位置番号及び前記未ヒットエントリー存在信号を出力する段階を繰り返し、セグメントシャッフルする段階
とを備えることを特徴とする請求項１４に記載のキャッシュメモリーの更新方法。
【請求項１６】
参照ビットを格納する参照ビット格納部に対してインターバルタイマーより世代交代信号を入力する手順と、
ヒットエントリー数がヒット上限数レジスターに設定された上限ヒット数を超えるかどうかを判定する手順と、
前記上限ヒット数を超えないならば、ヒットエントリー数がヒット下限数レジスターに設定された下限ヒット数を下回るかどうかを判定する手順と、
前記上限ヒット数を超えるか場合は、インターバルタイマーの周期を短くする手順と、
前記下限数ヒット数を下回る場合は、インターバルタイマーの周期を長くする手順
とを備えることを特徴とするキャッシュメモリーシステムの更新方法。
【請求項１７】
キャッシュメモリーを構成する参照ビット格納部に接続された未使用エントリー判定部及びインターバルタイマーと、前記未使用エントリー判定部に接続されたヒット上限数レジスター及びヒット下限数レジスターとを備えるキャッシュメモリーシステムにおいて、
前記参照ビット格納部に対して前記インターバルタイマーより世代交代信号を入力する命令と、
ヒットエントリー数が前記ヒット上限数レジスターに設定された上限ヒット数を超えるかどうかを判定する命令と、
前記上限ヒット数を超えないならば、ヒットエントリー数が前記ヒット下限数レジスターに設定された下限ヒット数を下回るかどうかを判定する命令と、
前記上限ヒット数を超える場合は、前記インターバルタイマーの周期を短くする命令と、
前記下限ヒット数を下回る場合は、前記インターバルタイマーの周期を長くする命令
とを実行させるキャッシュメモリーシステムの更新プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はキャッシュメモリーシステムに関し、特にキャッシュメモリーシステムの更新方法及び更新プログラムに関する。
【０００２】
【従来の技術】
現在マイクロプロセッサー等で使われているアドレス変換用情報やデータを格納したキャッシュメモリーは、主記憶装置（メインメモリー）に格納された情報の一部である複数の情報を格納するように構成されている。一般的にアドレス変換用情報はアドレスキャッシュやＴＬＢ［Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ］と呼ばれる。データを格納したキャッシュメモリーはデータキャッシュと呼ばれる。ここで、１組の情報を格納するための記憶領域の単位を「エントリー」と呼ぶことにする。キャッシュメモリー自体に、コンピュータシステムを構成するＣＰＵの処理において必要とされる全情報はすべて入りきらない。そこで、必ず主記憶装置から新たな情報を取り込んで更新する作業が必要となる。
【０００３】
ＴＬＢやデータキャッシュ等のアドレス変換情報をキャッシュメモリー自体へ格納する方法、及びそれらを利用する方法は現在様々である。特に、フルアソシエイティブ（Ｆｕｌｌｙ  Ａｓｓｏｃｉａｔｉｖｅ）という構成を有するキャッシュメモリーの場合、回路の設計が複雑になるのを防ぐため、エントリーをランダムに選択する手法を採用している。
【０００４】
しかしながら、キャッシュメモリー中の各エントリー情報には、利用頻度から見て、その利用頻度が低いために更新されても良いと思われるエントリーもある。一方、利用頻度が高く更新対象としては不適当なエントリーもある。エントリーをランダムに選択する手法では、この利用頻度が高いエントリーも更新してしまう可能性がある。
【０００５】
その結果、更新されてしまったエントリーの情報をまた登録しなおさなければならないことになり、エントリー情報の再登録という作業が加わる結果、時間効率が悪く、パフォーマンスの低下が発生する。
【０００６】
【特許文献１】
特開平１０−２７１３３号公報
【０００７】
【発明が解決しようとする課題】
フルアソシエイティブ形式のキャッシュメモリーの場合、その更新エントリーを選択する際には、回路設計の煩雑さを回避するために、ランダムにエントリーを選択する手法が用いられるため、使用頻度が高いエントリーが更新されてしまう可能性がある。
【０００８】
本発明の目的は、未使用のエントリーから更新エントリーを自動的に選択することができ無駄が生じにくく時間効率のよい、またソフトウェア側がタイマーの周期の設定を頻繁にやり直す必要は無く、タイマーの周期設定を自動的に調節することもできる、キャッシュメモリーシステム、キャッシュメモリー及びその更新方法、キャッシュメモリーシステムの更新方法及び更新プログラムを提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の特徴は、（イ）主記憶装置に格納された情報の一部を取り込んで格納する情報格納部と（ロ）情報格納部に格納された情報の一定期間における使用状況を格納する参照ビット格納部とをそれぞれ備える（ハ）エントリーを複数有することを特徴とするキャッシュメモリーであることを要旨とする。
【００１０】
本発明の第２の特徴は、（イ）主記憶装置に格納された情報の一部を取り込んで格納する情報格納部と（ロ）情報格納部に格納された情報の一定期間における使用状況を格納する参照ビット格納部とをそれぞれ備える（ハ）エントリーを複数有するキャッシュメモリーと、（ニ）情報格納部に接続され、ヒット信号を参照ビット格納部に対して発生するヒット判定回路とを備えることを特徴とするキャッシュメモリーシステムであることを要旨とする。
【００１１】
本発明の第３の特徴は、（イ）複数のエントリーを単位として１個のセグメントを構成し、セグメントを複数個備えたキャッシュメモリーにおいて、（ロ）それぞれのエントリーに付随する参照ビットを参照ビット格納部から処理回路に入力して、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階と、（ハ）複数のエントリーをローテートして、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階を繰り返し、エントリーシャッフルする段階とを備えることを特徴とするキャッシュメモリーの更新方法であることを要旨とする。
【００１２】
本発明の第４の特徴は、（イ）参照ビットを格納する参照ビット格納部に対してインターバルタイマーより世代交代信号を入力する手順と、（ロ）ヒットエントリー数がヒット上限数レジスターに設定された上限ヒット数を超えるかどうかを判定する手順と、（ハ）上限ヒット数を超えないならば、ヒットエントリー数がヒット下限数レジスターに設定された下限ヒット数を下回るかどうかを判定する手順と、（ニ）上限ヒット数を超えるか場合は、インターバルタイマーの周期を短くする手順と、（ホ）下限数ヒット数を下回る場合は、インターバルタイマーの周期を長くする手順とを備えることを特徴とするキャッシュメモリーシステムの更新方法であることを要旨とする。
【００１３】
本発明の第５の特徴は、（イ）キャッシュメモリーを構成する参照ビット格納部に接続された未使用エントリー判定部及びインターバルタイマーと、（ロ）未使用エントリー判定部に接続されたヒット上限数レジスター及びヒット下限数レジスターとを備えるキャッシュメモリーシステムにおいて、（ハ）参照ビット格納部に対してインターバルタイマーより世代交代信号を入力する命令と、（ニ）ヒットエントリー数がヒット上限数レジスターに設定された上限ヒット数を超えるかどうかを判定する命令と、（ホ）上限ヒット数を超えないならば、ヒットエントリー数がヒット下限数レジスターに設定された下限ヒット数を下回るかどうかを判定する命令と、（ヘ）上限ヒット数を超える場合は、インターバルタイマーの周期を短くする命令と、（ト）下限ヒット数を下回る場合は、インターバルタイマーの周期を長くする命令とを実行させるキャッシュメモリーシステムの更新プログラムであることを要旨とする。
【００１４】
【発明の実施の形態】
次に、図面を参照して、本発明の第１及び第２の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す第１及び第２の実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想は、構成要素の構造、配置等を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１５】
本発明の実施の形態において、「キャッシュメモリーシステム」５０とは、図１に示すように、キャッシュメモリー８をその構成要素の一部に備えるシステムをいう。即ち、キャッシュメモリーシステム５０は、例えば、キャッシュメモリー８とその周辺回路からなる半導体集積回路或いはプロセッサー３０を構成要素として含み、或いはまた、ディジタルシグナルプロセッサー、カスタムＬＳＩ、タイマーＬＳＩ等がキャッシュメモリーシステム５０に含まれる。キャッシュメモリー８に対しては、外部の主記憶装置であるメインメモリー６０から、情報が供給される。
【００１６】
本発明の実施の形態において、「キャッシュメモリーシステム」はフルアソシエイティブ方式若しくはそれに準ずる構成を有する、アドレスキャッシュ若しくはデータキャッシュによる、キャッシュメモリーを内蔵若しくは外付けしている。そして、このキャッシュメモリーシステムは、キャッシュメモリーの内容を新たな情報に更新する際に、タイマーを使用した世代管理によって、キャッシュメモリーを構成する各エントリーの使用履歴を把握して、未使用のエントリーを選択する機能を有する。
【００１７】
或いはまた、上記機能を効率よく行うために、本発明の「キャッシュメモリーシステム」は、各エントリーの使用履歴を利用、判断してタイマーの周期を自動的に調節する機能を有する。
【００１８】
（第１の実施の形態）
本発明の第１の実施の形態に係るキャッシュメモリーシステム５０は、図２に示すように、キャッシュメモリー８とヒット判定回路５と制御レジスター４とインターバルタイマー３と参照ビットＲを格納する参照ビット格納部３１とプロセッサー３０からなる。キャッシュメモリー８は、図２に示すように、エントリー０からエントリーｎ−１までのｎ個のエントリーにそれぞれ対応する情報格納部１とそれぞれの情報格納部１に付随したｎ個の参照ビットＲを格納する参照ビット格納部３１からなる。即ち、キャッシュメモリー８は後述する図９或いは図１４に示すように、複数のセグメントから構成され、各セグメントは複数のエントリーから構成される。各エントリーには情報格納部１と参照ビット格納部３１が含まれる。参照ビット格納部３１は、使用状況記憶部２と、参照ビット判定回路６と、選択参照ビットＲＳを格納する選択参照ビット格納部３２とから構成される。使用状況記憶部２には、第１の参照ビットＲＡを格納する第１の参照ビット格納部３７及び第２の参照ビットＲＢを格納する第２の参照ビット格納部３８が含まれている。ヒット判定回路５は、キャッシュメモリー８の各エントリー０，エントリー１，エントリー２，・・・，エントリーｎ−２，エントリーｎ−１の情報格納部１から発生するキャッシュアドレス情報ＣＡとプロセッサー３０から発生するプロセッサーキャッシュアクセスアドレス情報ＰＡとを比較し、ヒット信号ＨＴを参照ビット格納部３１に対して発生する。制御レジスター４から発生された制御情報ＣＩはインターバルタイマー３に入力される。インターバルタイマー３は使用状況記憶部２内の第１の参照ビット格納部３７，第２の参照ビット格納部３８及び参照ビット判定回路６に対して世代交代信号ＩＳを供給する。尚、図２においては、図１０乃至図１７において後述するプライオリティエンコーダー１０Ａ，１０Ｂ、処理回路１２Ａ，１２Ｂ等の構成要素は記載を省略している。
【００１９】
まずフルアソシエイティブ方式のｎ個のエントリー数を有するキャッシュメモリー８について説明する。「フルアソシエイティブ」とは、どのエントリーにも制限無く情報を書き込むことができる、或いは又、情報を格納することができるものである。即ち、アドレス情報に含まれる一部の情報を使用して、何らかの規則に従って更新するエントリーを選択してエントリーに情報を書き込むという手法は採用しないものである。一方、フルアソシエイティブ方式、非フルアソシエイティブ方式などの構成とは関係なく、一般的に、プロセッサーに内蔵されるキャッシュメモリーのメモリー容量は小さいため、格納したい、または格納しなければならない情報量に比べて、キャッシュメモリーのメモリー容量は少ない。近年プロセッサーの動作周波数が飛躍的に高速化したことによって、プロセッサーの外部に接続される大容量のメモリーとプロセッサー間のデータの送受にかかるタイミングロスが問題となっている。しかしながら、キャッシュメモリーは、その高速動作により、発生したタイミングロスを埋めるという重要な役割を果たしている。
【００２０】
一方において、キャッシュメモリー自体は、メモリー容量に限界があり、格納したいだけの容量を持たないために、しばしばキャッシュメモリー自体の内容を更新しなければならない。内容を更新するために、キャッシュメモリーの構成によっては様々なアルゴリズム方式を用いて更新するエントリーを選択する。
【００２１】
一般的に、非フルアソシエイティブ方式、例えば、Ｎウェイセットアソシエイティブのキャッシュメモリーでは、エントリーを多数持っていたとしても、更新しても良いかどうかを判断する場合にはエントリー数を絞って判断している。非フルアソシエイティブ方式に比べて、フルアソシエイティブ方式の場合には、全エントリー、もしくは多数のエントリーを対象に調べる必要がある。
【００２２】
しかしながら、この場合に非フルアソシエイティブ方式で採用されているアルゴリズムを利用すると（例えばＬＲＵ：  Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ等）回路自体が非常に複雑かつ膨大になり、その結果プロセッサーの動作速度向上に悪影響を与えることになる。そのため、フルアソシエイティブ方式のキャッシュメモリーでは、ランダムに更新するエントリーを選択するという手法がとられていた。
【００２３】
しかしながら、このランダムに更新するエントリーを選択する方法では、使用頻度が高く、これからも利用する予定のエントリーも更新してしまう可能性がある。これからも利用する予定のエントリーも更新してしまうとパフォーマンスの低下を招く。
【００２４】
参照ビット格納部３１は、過去一定期間の使用状況、即ち、ヒット状況を格納するレジスターである。単純なものでは、２ビットで構成される現在・過去一定期間の使用状況｛使用あり（ヒット）／なし（ミス）｝を格納するレジスターである。現在・過去一定期間の変換実行回数を格納する使用状況記憶部２内のレジスターから参照ビット判定回路６を経て生成される情報である選択参照ビットＲＳは選択参照ビット格納部３２に格納される。
【００２５】
ここでは、一定期間の使用状況を調べるために、専用のタイマーを使用する。まず、タイマーを利用して一定期間内の各エントリーの使用履歴情報を格納した参照ビットＲと呼ばれる情報を使用して、利用されていないエントリーの候補を絞り、更新可能なエントリーをランダムに選択する手法についてその実施例を説明する。
【００２６】
参照ビット格納部３１に格納される参照ビットＲは、キャッシュメモリー８の各エントリー０，エントリー１，・・・，エントリーｎ−２，エントリーｎ−１に存在し、各エントリー０，エントリー１，・・・，エントリーｎ−２，エントリーｎ−１がある時間までに参照され、使用されたかどうかの状況を指し示す情報である。実際に、使用されたかどうかを決めるのは選択参照ビットＲＳを生成する参照ビット判定回路６である。
【００２７】
各エントリーにおいて、本来格納すべき情報を格納する記憶領域（記憶素子）が情報格納部１である。アドレス変換に使われるＴＬＢであれば、プロセッサー３０（図２）から生成される仮想アドレスと比較されるべきアドレス情報と、アドレス情報の置換に使われる「置換用アドレス情報」が情報格納部１に格納される。データキャッシュであれば、プロセッサー３０（図２）から、ＴＬＢを経て、生成される物理アドレスと比較されるべきアドレス情報と、キャッシュメモリー８内に一時的に保持されるデータ本体が情報格納部１に格納される。生成される物理アドレスと比較されるべきアドレス情報とは、そもそもメモリー上にデータが格納されていた時のメモリーのアドレス値に等しい。
【００２８】
キャッシュメモリー８の各エントリー０，エントリー１，エントリー２，・・・，エントリーｎ−２，エントリーｎ−１に格納された情報が、実際に使用されたかどうかを記憶しておくレジスターが使用状況記憶部２であり、メモリーの一種である。
【００２９】
選択参照ビット格納部３２に格納される選択参照ビットＲＳは、実際にはキャッシュメモリー８の各エントリー０，エントリー１，エントリー２，・・・，エントリーｎ−２，エントリーｎ−１に、２ビット以上で構成される使用状況記憶部２の内部状態値の情報に基づいて、参照ビット判定回路６を経由して決定される値である。使用状況記憶部２に格納される内部状態値のアルゴリズムは、前述した通り、過去・現在一定期間のエントリーの使用状況｛使用あり（ヒット）／なし（ミス）｝を記憶する例や、一定期間の使用回数を値飽和型カウンターに記憶していくという例がある。ここでは過去・現在一定期間のエントリー使用のあるなしを記憶する例に基づいて、図３を参照して説明する。
【００３０】
インターバルタイマー３は制御レジスター４の設定値に従って、任意の時間を計測し、世代交代信号ＩＳを出力するカウンターを中心にした回路である。即ち、一定期間の間隔で使用状況を管理できるように、専用のタイマー（時間計測装置）を用いるが、この専用のタイマーを「インターバルタイマー３」と呼んでいる。このインターバルタイマー３は、設定値を記憶するメモリーの一種である専用の制御レジスター４の設定値によって、インターバルタイマー３の周期ＴＩの設定等の動作内容が制御される。制御レジスター４は、インターバルタイマー３の周期等の動作をソフトウェア側から制御できるようにするレジスターであり、メモリーの一種である。ヒット判定回路５は、プロセッサー３０からキャッシュメモリー８にアクセスする時に供給されるプロセッサーキャッシュアクセスアドレス情報ＰＡと、キャッシュメモリー８中の各エントリーの情報格納部１に格納されているキャッシュアドレス情報ＣＡを比較し、一致したエントリーがあるかどうかを判別する機能を持った回路である。一致したエントリーがあった場合には、そのエントリーの番号を元にヒット信号ＨＴを生成して、該当するエントリーの使用状況記憶部２において、第１の参照ビット格納部３７，第２の参照ビット格納部３８にそれぞれ格納される第１の参照ビットＲＡ，第２の参照ビットＲＢの内部状態を“１”にセットするようにする。過去・現在一定期間のエントリー使用の使用状況｛使用あり（ヒット）／なし（ミス）｝を記憶する例として、まず各エントリーに、参照ビット格納部３１内に格納される参照ビットＲの状態値を生成するための第１の参照ビット格納部３７と第２の参照ビット格納部３８を使用状況記憶部２内に持たせることとしている。
【００３１】
第１の参照ビット格納部３７，第２の参照ビット格納部３８においてそれぞれ格納される第１の参照ビットＲＡ、第２の参照ビットＲＢの内部状態値は、インターバルタイマー３から発生される世代交代信号ＩＳによって世代管理が行なわれる。「世代管理」とは、第１の参照ビット格納部３７，第２の参照ビット格納部３８においてそれぞれ格納される第１の参照ビットＲＡ，第２の参照ビットＲＢに対し、「過去の参照ビット」と「現在の参照ビット」という世代定義を行うものである。
【００３２】
第１の参照ビット格納部３７，第２の参照ビット格納部３８においてそれぞれ格納される第１の参照ビットＲＡ、第２の参照ビットＲＢはそれぞれある瞬間において、「過去」（一定期間）と「現在」といった名前付けが行われ、「過去」と定義されれば、“過去一定期間におけるキャッシュメモリーエントリーヒットの有無”、を記録保持し、「現在」と定義されれば、“定義されてから一定期間、キャッシュメモリーエントリーヒットの有無”、を記録する記憶素子（レジスター）として働く。
【００３３】
第１の参照ビット格納部３７，第２の参照ビット格納部３８においてそれぞれ格納される第１の参照ビットＲＡ、第２の参照ビットＲＢに対する「過去の参照ビットＯＬＲ」と「現在の参照ビットＣＲＲ」といった定義付けは、図２及び図２に示すように、インターバルタイマー３によって出力される世代交代信号ＩＳを元に、一定期間で切り替わる。つまり、ある一定期間では第１の参照ビット格納部３７に格納される第１の参照ビットＲＡの内部状態値が「過去の参照ビットＯＬＲ」として、第２の参照ビット格納部３８に格納される第２の参照ビットＲＢの内部状態が「現在の参照ビットＣＲＲ」として定義されるとすれば、次の一定期間では第１の参照ビットＲＡの内部状態値は「現在の参照ビットＣＲＲ」として、第２の参照ビットＲＢの内部状態は「過去の参照ビットＯＬＲ」として定義し直される。実際は、このような作業を繰り返す。
【００３４】
第１の参照ビットＲＡ／第２の参照ビットＲＢ制御アルゴリズム
第１の参照ビットＲＡ／第２の参照ビットＲＢの制御アルゴリズムについて図２と図３を参照して説明する。図３はインターバルタイマー３から発生される世代交代信号ＩＳによる第１の参照ビット格納部３７に格納される第１の参照ビットＲＡの内部状態値と第２の参照ビット格納部３８に格納される第２の参照ビットＲＢの内部状態値の移り変わりを模式的に示している。前提として初期状態では、第１の参照ビットＲＡが「現在の参照ビット」であることを意味するＣＲＲとして表示され、第２の参照ビットＲＢは「過去の参照ビット」であることを意味するＯＬＲと表示される。これらの呼び名は、図２の世代交代信号ＩＳをトリガー信号として入れ替わる。つまり、世代交代信号ＩＳが入力される毎に、第１の参照ビットＲＡの内部状態値が現在の参照ビットＣＲＲから過去の参照ビットＯＬＲへ、そして次に世代交代信号ＩＳが来る時に、過去の参照ビットＯＬＲから現在の参照ビットＣＲＲへというようにステータスが変化すると考えればよい。
【００３５】
これとは逆に、図３に示すように、第２の参照ビットＲＢの内部状態値は過去の参照ビットＯＬＲから現在の参照ビットＣＲＲへ、そして次に世代交代信号ＩＳが来る時に、現在の参照ビットＣＲＲから過去の参照ビットＯＬＲへと変化する。図３において、世代交代信号ＩＳはインターバルタイマー３の周期ＴＩごとに発生する。参照ビット格納部３１に格納される各参照ビットＲは、キャッシュメモリー８の該当するエントリーがヒット（参照されキャッシュメモリー８の中身が使用される状態）したかどうかの情報を記録するフラグである。図２に示すように、キャッシュメモリー８へのアクセスがあり、ヒット判定回路５が、キャッシュメモリー８中の各エントリーの変換情報格納部（アドレス）１から提供されるキャッシュアドレス情報ＣＡと、キャッシュアクセスの際にプロセッサー３０から提供されるプロセッサーキャッシュアクセスアドレス情報（アドレス値）ＰＡとの比較をして、キャッシュメモリー８の「とあるエントリー」にヒットしたと判定した場合には、ヒット判定回路５は、ヒット信号ＨＴを出力し、ヒットしたエントリーの参照ビット格納部３１に格納される参照ビットＲには、“１”がセットされる。但し、その場合に“１”がセットされるのは必ず「現在の参照ビットＣＲＲ」と定義された側であることにする。この状態において「過去の参照ビットＯＬＲ」と定義された側は、一世代前の期間のヒット情報を保持している。過去の参照ビットＯＬＲの状態になっている参照ビットＲが、現在の参照ビットＣＲＲの状態に変化するとそれと同時に、その内容をリセットし“０”にするものとする。現在の参照ビットＣＲＲの状態であった参照ビットＲが、過去の参照ビットＯＬＲの状態に変化した時には何の変化もないが、記録されているヒット情報を保持し続ける。
【００３６】
図４は、選択参照ビット格納部３２に格納される選択参照ビットＲＳを生成する元になる第１の参照ビットＲＡと第２の参照ビットＲＢの状態の変化と、その内容の変化を時間軸に沿って示している。前述のように、第１の参照ビットＲＡ及び第２の参照ビットＲＢはそれぞれ使用状況記憶部２内の第１の参照ビット格納部３７及び第２の参照ビット格納部３８に保持される情報である。図３ではリセットタイミングＴＲの直後から、２回エントリーにヒットした例を示している。即ち、図４中において、エントリーヒットＨｉｔ１，Ｈｉｔ２によって示されるように、２回のヒット信号によって第１の参照ビットＲＡ及び第２の参照ビットＲＢの内部状態がどのように変化するかを表している。リセットタイミングＴＲの直後では、第１の参照ビットＲＡの内部状態値が現在の参照ビットＣＲＲ、第２の参照ビットＲＢの内部状態が過去の参照ビットＯＬＲとなり、各第１の参照ビットＲＡと第２の参照ビットＲＢの内部状態値は“０”に初期化される。その状態でまず一回目のエントリーヒットＨｉｔ１を迎えると、図４中のＡで示されるように、現在の参照ビットＣＲＲである第１の参照ビットＲＡの内部状態値は“０”の状態から“１”の状態にセットされる。第２の参照ビットＲＢの内部状態は、そのままリセット時の状態値である“０”の状態を保持する。インターバルタイマー３の周期ＴＩが終わり次の世代交代信号ＩＳを受けると、第１の参照ビットＲＡの内部状態値は現在の参照ビットＣＲＲの状態から過去の参照ビットＯＬＲの状態に変化し、第２の参照ビットＲＢの内部状態値は過去の参照ビットＯＬＲの状態から現在の参照ビットＣＲＲの状態に変化する。第１の参照ビット格納部３７内に格納される第１の参照ビットＲＡには“ヒットしたという情報”である、“１”の状態が記録されたまま、次に現在の参照ビットＣＲＲになるまで状態を変えない。
【００３７】
第２の参照ビット格納部３８内に格納される第２の参照ビットＲＢの内部状態値は、過去の参照ビットＯＬＲから現在の参照ビットＣＲＲに状態が変化するので、この変化の瞬間に“０”の状態にリセットされる。しかしながら、図４中Ｂで示されるように、前世代の値も“０”の状態であるから次のヒット信号を受けるまで“０”の状態を変えることはない。
【００３８】
エントリーヒットＨｉｔ２を迎えると、今度は、第２の参照ビット格納部３８内に格納される第２の参照ビットＲＢの内部状態は、現在の参照ビットＣＲＲになっているので、図４のＣで示されるように、第２の参照ビットＲＢの内部状態値は“０”から“１”にセットされる。
【００３９】
この例では、仮に第１の参照ビット格納部３７に格納される第１の参照ビットＲＡの内部状態値もしくは第２の参照ビット格納部３８に格納される第２の参照ビットＲＢの内部状態値が、現在の参照ビットＣＲＲの状態であり、複数回ヒットがあっても“１”の状態は“１”の状態のままを保持し続ける。ヒットした回数（頻度）の情報が必要であれば、過去・現在一定期間のエントリー使用の使用状況｛使用あり（ヒット）／なし（ミス）｝を記憶する第１の参照ビットＲＡ／第２の参照ビットＲＢを用いる方式ではなくて、前述の値飽和型カウンターを採用することになる。
【００４０】
次の世代交代信号ＩＳを迎えると、図４中のＤで示されるように、過去の参照ビットＯＬＲであった第１の参照ビットＲＡの内部状態値が現在の参照ビットＣＲＲへと変化するため、その変化の時点で第１の参照ビット格納部３７に格納される第１の参照ビットＲＡの内部状態値が“１”から“０”にクリアされる。
【００４１】
図５は本発明の第１の実施の形態に係るキャッシュメモリーシステム５０を構成する参照ビット判定回路６，ヒット判定回路５，使用状況記憶部２，インターバルタイマー３，参照ビット判定制御レジスター７，選択参照ビットＲＳを格納する選択参照ビット格納部３２のみを示す。点線で囲まれた部分が図２に示した参照ビット格納部３１に対応している。
【００４２】
選択参照ビット格納部３２に格納される選択参照ビットＲＳを出力する使用状況記憶部２の構成は様々なものが考えられる。例えば、図５では、２ビット構成レジスター３４、４ビット構成レジスター３５及び２ビットカウンター９の構成が含まれる。２ビット構成レジスター３４には第１の参照ビット格納部３７及び第２の参照ビット格納部３８が含まれており、４ビット構成レジスター３５には第１の参照ビット格納部３７、第２の参照ビット格納部３８、第３の参照ビット格納部３９及び第４の参照ビット格納部４０が含まれている。また２ビットカウンター９には２ビット構成のカウンターが含まれる。参照ビット判定制御レジスター７は、その使用状況記憶部２の情報にフィルタリングをかけ、どういう条件のもとで選択参照ビット格納部３２に格納される選択参照ビットＲＳの内部状態値が“１”になるか、または“０”になるかを決める判定アルゴリズムの選択や設定を、ソフトウェアによって行うためのレジスターである。使用状況記憶部２を２ビット構成レジスター３４と４ビット構成レジスター３５によって構成した実施例を図５に、また２ビット構成レジスター３４と２ビットカウンター９によって構成した実施例を図６に、更に又、４ビット構成レジスター３５と２ビットカウンター９によって構成した実施例を図７に示す。図６乃至図８において、他の部分の構成は図５と共通である。尚、上述の２ビット構成レジスター３４もしくは２ビットカウンター９の代わりに、ｎを自然数として、ｎビット構成レジスターもしくはｎビットカウンターを用いてもよいことはもちろんである。この場合、ｎビット構成レジスターにはｎ個の参照ビット格納部が含まれ、或いはまた、ｎビットカウンターにはｎビット構成のカウンターが含まれることはもちろんである。過去の履歴を判断するためには少なくとも２ビット以上必要であるため、２ビット構成レジスター３４について、図５には開示している。また、図６乃至図８においても、点線で囲まれた部分が図２に示した参照ビット格納部３１に対応している。
【００４３】
参照ビット判定機能とエントリーランダム指定機能
第１の参照ビット格納部３７及び第２の参照ビット格納部３８にそれぞれ格納される第１の参照ビットＲＡ及び第２の参照ビットＲＢの情報を利用して、エントリーがある世代において参照されたかどうかを示す、選択参照ビットＲＳの生成方法・判定機能について説明する。更に、選択参照ビットＲＳの内部状態値をもとに、どのようにランダムに、更新しても良いエントリーを選択するかという方法について説明する。
【００４４】
図２に示す通り、キャッシュメモリー８の各エントリー０，エントリー１，エントリー２，…，エントリーｎ−２，エントリーｎ−１の参照ビット格納部３１において、使用状況記憶部２内の第１の参照ビット格納部３７及び第２の参照ビット格納部３８にそれぞれ存在する第１の参照ビットＲＡ及び第２の参照ビットＲＢは、インターバルタイマー３から生成・出力される世代交代信号ＩＳを受信して、その内部状態が制御されている。また参照ビット判定回路６に対してもインターバルタイマー３から世代交代信号ＩＳが入力される。参照ビット判定回路６の中では正確に、第１の参照ビットＲＡ及び第２の参照ビットＲＢの内部状態値を把握でき、どちらが現在の参照ビットＣＲＲか、過去の参照ビットＯＬＲかを認識できるようになっている。
【００４５】
参照ビット判定回路６では、各エントリー０，エントリー１，エントリー２，…，エントリーｎ−２，エントリーｎ−１ごとに「過去の参照ビットＯＬＲ」と「現在の参照ビットＣＲＲ」におけるヒット状況を反映して、最終的な選択参照ビットＲＳの情報の値を生成するようになっている。より詳細には、図５乃至図８に示すように、参照ビット判定制御レジスター７から参照ビット判定回路６に送信される判定制御信号ＤＣＳによって参照ビット生成アルゴリズムを選択できるようになっている。
【００４６】
例えば、過去の参照ビットＯＬＲと現在の参照ビットＣＲＲの内、現在の参照ビットＣＲＲ（現世代）に相当する情報のみで、選択参照ビットＲＳの内部状態値を決定する。或いはまた、過去の参照ビットＯＬＲ（前世代）と現在の参照ビットＣＲＲ（現世代）の値の論理和（ＯＲ）によって、二世代のエントリーヒットＨｉｔ１，Ｈｉｔ２の情報を加味して選択参照ビットＲＳの内部状態値を決定する。もちろんこの参照ビット判定回路６に対しては、第１の参照ビット格納部３７と第２の参照ビット格納部３８からなる２ビット構成レジスター３４からの信号を入力する場合のみならず、４ビット構成レジスター３５からの信号を入力することもでき、更にｎビットカウンターからの信号を入力してもよい。過去のヒット状況をより詳しく調べて選択参照ビットＲＳの情報の判定をすることもできる。また、前述した通り、値飽和型カウンターを用いて、エントリーがヒットした回数を記録し、その値の大小から選択参照ビットＲＳの状態の値を決定することもできる。どの方法を選ぶかは、回路の動作周波数が大きな要因になる。
【００４７】
以上のようにして生成され、選択参照ビット格納部３２に格納される選択参照ビットＲＳの内部状態値に基づいて、参照ビット格納部３１に格納される参照ビットＲの内部状態値が“０”であるエントリーを選択する。内部状態値が“０”であるエントリーの数が１個である可能性は低いため、複数個存在する参照ビットＲの内、内部状態値が“０”の状態のエントリーから、ランダムにエントリーを選択する手法を示す。
【００４８】
まず例としてキャッシュメモリー８のエントリー数を６４エントリーとした場合で説明する。図９において、点線で囲まれた部分がキャッシュメモリー８に相当している。これらを例えば、図９に示すように、８分割する。即ち、セグメント０  はエントリー００，  エントリー０１，  エントリー０２，  エントリー０３，  エントリー０４，  エントリー０５，  エントリー０６，  エントリー０７を含む。セグメント１  はエントリー０８，  エントリー０９，  エントリー１０，  エントリー１１，  エントリー  １２，  エントリー１３，  エントリー１４，  エントリー１５を含む。同様にして、セグメント６  はエントリー４８，  エントリー４９，  エントリー５０，  エントリー５１，  エントリー５２，  エントリー５３，  エントリー５４，  エントリー５５を含む。セグメント７  はエントリー５６，  エントリー５７，  エントリー５８，  エントリー５９，  エントリー６０，  エントリー６１，  エントリー６２，  エントリー６３を含む。分割したそれぞれを１セグメントとする。このように、１セグメントが８エントリー分を含むように分割した結果、各セグメントには８個の参照ビット格納部３１が存在し、８個の参照ビット格納部３１に対応して、８本の参照ビットＲの内部状態値を表す信号が存在することになる。尚、図９においては、６４エントリーの例を示したが、３２，４８，１２８，２５６等のエントリー数であってもよい。また、セグメントの分割方法も８エントリーに限らず他のエントリー数であってもよい。
【００４９】
［エントリーシャッフル］
本発明の第１の実施の形態に係るキャッシュメモリーシステム５０において、キャッシュメモリー８のエントリーシャッフルを実現するための構成は、図１０に示すように、ｉ個のエントリーと、ｉ個のエントリーのそれぞれに付随するｉ個の参照ビットＲをそれぞれ格納する参照ビット格納部３１と、ｉ個の参照ビット格納部３１の出力信号を入力する８  ｔｏ  ８  セレクター１３Ａと、８  ｔｏ  ８  セレクター１３Ａからのｉ個の出力信号を入力し、選ばれたエントリーの位置番号ＥＰＮを出力するプライオリティエンコーダー１０Ａと、８  ｔｏ  ８  セレクター１３Ａからのｉ個の出力信号を分岐して入力し、未使用エントリー存在信号ＥＸＳを出力するＮＡＮＤゲート１５と、エントリーシャッフル信号ＥＳＨを受信して８  ｔｏ  ８  セレクター１３Ａに対してエントリーセレクター制御信号ＥＳＣを送信するエントリーシャッフルカウンター１４とから構成されるセグメントを備える。図１０において、８  ｔｏ  ８  セレクター１３Ａと、プライオリティエンコーダー１０Ａと、ＮＡＮＤゲート１５とを含む点線で囲まれた部分が処理回路１２Ａに対応している。
【００５０】
セグメント内のハードウェア構成は、図１０に示すように、ＬＳＢ側からＭＳＢ側までのエントリー位置番号ＥＰに対応して配置されたエントリー０，エントリー１，エントリー２，エントリー３，エントリー４，エントリー５，エントリー６，エントリー７と、８個のエントリーにそれぞれ含まれる参照ビットＲを格納する参照ビット格納部３１と、８  ｔｏ  ８セレクター１３Ａと、エントリーシャッフルカウンター１４と、プライオリティエンコーダー１０Ａと、ＮＡＮＤゲート１５とから構成される。各セグメントには、図１０に示すように、８個のエントリーが存在するものとして説明する。各エントリーの参照ビット格納部３１に格納された参照ビットＲの内部状態値は、８  ｔｏ  ８セレクター１３Ａに入力される。この８  ｔｏ  ８セレクター１３Ａは、セグメント内のエントリーシャッフル用として使用される。即ち、エントリーシャッフルは、セグメント内のエントリーが最終的に更新対象として選択され、該当するエントリーが更新された後に実行される。８  ｔｏ  ８セレクター１３Ａは入力が８本、出力が８本あり、入力と出力が一対一に対応するように接続したセレクターである。８  ｔｏ  ８セレクター１３Ａは、専用のエントリーシャッフルカウンター１４から供給される、エントリーセレクター制御信号ＥＳＣによって制御される。エントリーシャッフルカウンター１４は、機能的には減算カウンターであり、前述したエントリーシャッフルが実行される時に、エントリーシャッフル信号ＥＳＨを受けて出力状態値を変更する。
【００５１】
具体例を挙げると、このエントリーシャッフルカウンター１４の出力状態値は３ビットの信号で構成され、この３ビットの信号による８通りの組み合わせに従って、８  ｔｏ  ８セレクター１３Ａを切り替える。エントリーシャッフルカウンター１４の出力状態値は、例えば、エントリー０が存在している位置と同じ値を示すものとする。つまりエントリー０がエントリー位置番号ＥＰ＝０に存在する場合には、エントリーシャッフルカウンター１４の出力状態値は０、エントリー０がエントリー位置番号ＥＰ＝６にいる場合には、エントリーシャッフルカウンター１４の出力状態値は６とする。そしてエントリーシャッフルカウンター１４の状態値が決まれば、その他のエントリーの接続も決まるものとする。
【００５２】
８  ｔｏ  ８セレクター１３Ａを通過した各エントリーの参照ビットＲの内部状態値を表す信号は、分岐されて、図１０に示すように、それぞれＮＡＮＤゲート１５と、プライオリティエンコーダー１０Ａに送られる。ＮＡＮＤゲート１５は、セグメント内にヒットしていないエントリーがあったかどうかを示す、未使用エントリー存在信号ＥＸＳを生成するための回路である。参照ビット格納部３１に格納される参照ビットＲの内部状態値の内、少なくとも１個が“０”であった場合には、未使用エントリー存在信号ＥＸＳの情報は  “１”になり、ヒットしていないエントリーがあったことを示す。プライオリティエンコーダー１０Ａは、８本ある参照ビットＲの内部状態値の中で、参照ビットＲの内部状態値が“０”になっているエントリーを選び、その中でＭＳＢ側に近い位置に存在する、選ばれたエントリーの位置番号ＥＰＮとして出力する回路である。選ばれたエントリーの位置番号ＥＰＮは、エントリーそのものの番号ではなく、エントリーが置かれている位置を示す。以上のような構成と仕組みを持つセグメントをまとめ、次はセグメント８個全体で説明をする。
【００５３】
図１０に示すように、各セグメントでは、各エントリーの参照ビット格納部３１に格納される参照ビットＲの内部状態値を反映しつつ、セグメント毎に常に置換対象となりうる未ヒットのエントリー位置を示す、選ばれたエントリーの位置番号ＥＰＮを出力し、かつセグメント中に未ヒットのエントリーがあるのかどうかを示す未使用エントリー存在信号ＥＸＳを出力する。
【００５４】
セグメント０における処理の概要は以下の通りである。即ち、図１１に示すように、エントリー０，エントリー１，エントリー２，エントリー３，エントリー４，エントリー５，エントリー６，エントリー７の各番号はエントリー番号ＥＮを示し、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）とＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）との間のエントリー位置番号ＥＰに対応している。各エントリーには参照ビット格納部３１に格納される参照ビットＲが存在し、参照ビットＲからの出力が処理回路１２Ａに入力される。処理回路１２Ａはプライオリティエンコーダー１０ＡとＥＸＳ処理部１１から構成される。プライオリティエンコーダー１０Ａの３ビット出力が選ばれたエントリーの位置番号ＥＰＮを示し、ＥＸＳ処理部１１の出力が未使用エントリー存在信号ＥＸＳを示す。
【００５５】
図１１に示すように、各エントリーの参照ビット格納部３１に格納された８ビットからなる参照ビットＲの内部状態値を表す信号を、プライオリティエンコーダー１０Ａを通し、参照ビットＲの内部状態値が“０”になっていてかつ最も左端に近い（ＭＳＢ側と呼ぶ。）選ばれたエントリーの位置番号ＥＰＮをエンコードする。この場合の選ばれたエントリーの位置番号ＥＰＮとは、エントリーがセグメント内に置かれている位置を示す情報（番号）のことでエントリー自体の番号ではない。
【００５６】
また、セグメント０において、参照ビットＲの内部状態値が“０”であったエントリーが存在することを示す信号も出力する。即ち、未使用エントリー存在信号ＥＸＳで表される信号である。未使用エントリー存在信号ＥＸＳは、参照ビット格納部３１に格納された全ての参照ビットＲの内部状態値の信号情報をＮＡＮＤゲート１５（図１０）に入力した結果の出力である。
【００５７】
例えば、図１１のセグメント０の処理を示す概要図において、エントリー［７：０］の参照ビットＲの内部状態値が、上位側から“１１０１１０１１”ｂ（バイナリー）であったとすると、左ＭＳＢ側から見て「エントリー５」と「エントリー２」が“０”になっていることを示すので、この２つのエントリーがヒットしていないという理由から更新対象になる。以上から、プライオリティエンコーダー１０Ａの出力である選ばれたエントリーの位置番号ＥＰＮは“５”である“１０１”になる。エントリー５（ちょうど位置情報とエントリー自体の番号が同じになっている。）が更新対象候補として、セグメント０から提示されることになる。ここで、未使用エントリー存在信号ＥＸＳの信号情報は“１”になる。
【００５８】
他のセグメントも考えなければならないが、ここではこのセグメント０に注目して説明を続ける。もしこのセグメント０に属しているエントリーが、最終的に更新用のエントリーとして選ばれた場合には、図１２に示すように、エントリーの位置番号が一番小さいＬＳＢ側（エントリー位置番号ＥＰ＝０）のエントリー（この例ではエントリー０）が、一番大きいＭＳＢ側（エントリー位置番号ＥＰ＝７）のエントリー（この例ではエントリー７）にローテート（移動）される。その結果、図１３に示すように、エントリー０がＭＳＢ側に移動し、順次エントリー７，エントリー６，エントリー５，エントリー４，エントリー３，エントリー２，エントリー１とシフトして、ＬＳＢ側にエントリー１が配置される。このように、ＬＳＢ側のエントリー０からＭＳＢ側のエントリー７へローテートする理由は、基本的にエントリーの選択にプライオリティエンコーダー１０Ａを使っているため、更新されるエントリーがエントリー位置番号ＥＰの大きい方に偏ってしまうのを防ぐためである。このような理由から、ＬＳＢ側をＭＳＢ側にローテートしているわけである。図１２及び図１３によって更新対象セグメント内エントリーシャッフルが実行される様子が説明された。尚、図１１乃至図１３の説明においては、ＭＳＢ側に注目してＬＳＢ側からＭＳＢ側にローテートする例について開示されているが、反対にＬＳＢ側に注目してＭＳＢ側からＬＳＢ側にローテートしてもよいことはもちろんである。またＥＸＳ処理部１１をＭＳＢ側ではなく、ＬＳＢ側に設定し、ＬＳＢ側において未使用エントリー存在信号ＥＸＳを発生してもよい。
【００５９】
本発明のキャッシュメモリー８のエントリーシャッフルの特徴は、
（ａ）複数のエントリーを単位として１個のセグメントを構成し、該セグメントを複数個備えたキャッシュメモリーにおいて、（ｂ）それぞれのエントリーに付随する参照ビットを参照ビット格納部から処理回路に入力して、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階と、（ｃ）複数のエントリーをローテートして、選ばれたエントリーの位置番号及び前記未使用エントリー存在信号を出力する段階を繰り返し、エントリーシャッフルする段階とを備える。
【００６０】
［セグメントシャッフル］
本発明の第１の実施の形態に係るキャッシュメモリーシステム５０において、キャッシュメモリー８のセグメントシャッフルを実現するための構成は、図１４に示すように、ｊ個のセグメントと、ｊ個のセグメントのそれぞれに付随するｊ個の未使用エントリー存在信号ＥＸＳをそれぞれ格納する未使用エントリー存在信号（ＥＸＳ）格納部３３と、ｊ個の未使用エントリー存在信号ＥＸＳを入力する８  ｔｏ  ８  セレクター１３Ｂと、８  ｔｏ  ８セレクター１３Ｂからのｊ個の出力信号を入力し、選ばれたセグメントの位置番号ＳＰＮを出力するプライオリティエンコーダー１０Ｂと、ｊ個の未使用エントリー存在信号ＥＸＳを分岐して入力し、未ヒットエントリー存在信号Ｖを出力するＯＲゲート１７と、セグメントシャッフル信号ＳＳＨを受信して８  ｔｏ  ８セレクター１３Ｂに対してセグメントセレクター制御信号ＳＳＣを送信するセグメントシャッフルカウンター１６とを備える。図１４において、８  ｔｏ  ８  セレクター１３Ｂと、プライオリティエンコーダー１０Ｂと、ＯＲゲート１７とを含む点線で囲まれた部分が処理回路１２Ｂに対応している。
【００６１】
次に、図１５乃至図１７を用いて、セグメントシャッフルについて説明する。残りの７個のセグメントとのセグメントシャッフルにおける関係については、エントリーシャッフルの場合と同様に、これもまた処理回路１２Ｂ及び処理回路１２Ｂ内に含まれるプライオリティエンコーダー１０Ｂとローテート機能を使って処理をする。
【００６２】
エントリーシャッフルにおいてはそれぞれのエントリーに付随する参照ビットＲを格納する参照ビット格納部３１であったところが、セグメントシャッフルにおいては、各セグメントから出力される未使用エントリー存在信号ＥＸＳを格納する未使用エントリー存在信号（ＥＸＳ）格納部３３になる。つまり、今度は各セグメントの未使用エントリー存在信号ＥＸＳを処理回路１２Ｂ内のプライオリティエンコーダー１０Ｂに入力して、更新可能なエントリーを含んでいるセグメントを選択しようという試みである。ここで選択されたセグメントが置かれている、選ばれたセグメントの位置番号ＳＰＮの情報に基づいて、更新対象のエントリーを含むセグメントを選択して、最終的に更新しても良いエントリーを選択していくという手法を採用する。図１５中の未ヒットエントリー存在信号Ｖは、すべてのエントリー中で少なくとも１個のエントリーは更新しても良いエントリーがあったということを示す信号である。ここで、未ヒットエントリー存在信号Ｖが有効な信号を示していなければ、ヒットしていない（未使用の）エントリーは存在していないことを示すので、本当にランダムに更新するエントリーを選択する。
【００６３】
更新するエントリーを含むセグメントが選択されると、セグメント内エントリーシャッフルと同様に、今回はセグメント同士のローテート処理を行う。理由はセグメントにおける説明と同様である。即ち、図１６に示すように、セグメント位置番号ＳＰが、一番小さいＬＳＢ側（セグメント位置番号ＳＰ＝０）のセグメント（この例ではセグメント０）が、一番大きいＭＳＢ側（セグメント位置番号ＳＰ＝７）のセグメント（この例ではセグメント７）にローテート（移動）される。その結果、図１７に示すように、セグメント０がＭＳＢ側に移動し、順次セグメント７，  セグメント６，  セグメント５，  セグメント４，  セグメント３，  セグメント２，  セグメント１とシフトして、ＬＳＢ側にセグメント１が配置される。このように、ＬＳＢ側セグメント０からＭＳＢ側のセグメント７へローテートする理由は、基本的にセグメントの選択に処理回路１２Ｂ内のプライオリティエンコーダー１０Ｂ（図１４参照）を使っているため、更新されるセグメントがセグメント番号ＳＮの大きい方に偏ってしまうのを防ぐためである。このような理由から、ＬＳＢ側（位置番号が最も小さなセグメント）をＭＳＢ側（位置番号が最も大きなセグメント）にローテートしているわけである。図１６及び図１７によってセグメントシャッフルが実行される様子が説明された。このように、２段階にわけてシャッフルをし、次の更新作業に備える。尚、図１５乃至図１７の説明においては、ＭＳＢ側に注目してＬＳＢ側からＭＳＢ側にローテートする例について開示されているが、反対にＬＳＢ側に注目してＭＳＢ側からＬＳＢ側にローテートしてもよいことはもちろんである。またその場合、ＬＳＢ側おいて未ヒットエントリー存在信号Ｖを発生してもよい。
【００６４】
本発明のキャッシュメモリー８のセグメントシャッフル方法は、（ａ）複数のエントリーを単位として１個のセグメントを構成し、セグメントを複数個備えたキャッシュメモリーにおいて、（ｂ）それぞれのエントリーに付随する参照ビットを参照ビット格納部から処理回路に入力して、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階と、（ｃ）複数のエントリーをローテートして、選ばれたエントリーの位置番号及び未使用エントリー存在信号を出力する段階を繰り返し、エントリーシャッフルする段階と、
エントリーシャッフルする段階に加え、（ｄ）それぞれのセグメントに付随する未使用エントリー存在信号を未使用エントリー存在信号格納部から処理回路に入力して、選ばれたセグメントの位置番号及び未ヒットエントリー存在信号を出力する段階と、（ｅ）複数個のセグメントをローテートして、選ばれたセグメントの位置番号及び未ヒットエントリー存在信号を出力する段階を繰り返し、セグメントシャッフルする段階とを備える。
【００６５】
図１４はこれらセグメントをまとめた図になっている。即ち、本発明の第１の実施形態に係る、キャッシュメモリーシステムを構成する全体ハードウェアは、図１４に示すように、全体としてみると、８個のセグメントと、８  ｔｏ  ８セレクター１３Ｂと、プライオリティエンコーダー１０Ｂと、ＯＲゲート１７とセグメントシャッフルカウンター１６とから構成される。各セグメントには、未使用エントリー存在信号（ＥＸＳ）格納部３３及び選ばれたエントリーの位置番号（ＥＰＮ）格納部４１が存在する。各セグメントの未使用エントリー存在信号（ＥＸＳ）格納部３３に格納された未使用エントリー存在信号ＥＸＳは、８  ｔｏ  ８セレクター１３Ｂに入力される。８  ｔｏ  ８セレクター１３Ｂは、セグメント自体のシャッフル用として使用される。即ち、セグメントシャッフルは、セグメントに含まれているエントリーが最終的に更新対象として選択され、該当するエントリーが更新された後に実行される。８  ｔｏ  ８セレクター１３Ｂは、図１０中に示された８  ｔｏ  ８セレクター１３Ａと同様に入力が８本、出力が８本あり、入力と出力が一対一に対応するように接続したセレクターである。８  ｔｏ  ８セレクター１３Ｂは、図１４に示すように、専用のセグメントシャッフルカウンター１６から供給される、セグメントセレクター制御信号ＳＳＣによって制御される。このセグメントシャッフルカウンター１６は、図１０のエントリーシャッフルカウンター１４とは別のカウンターであるが、機能としては同様の減算カウンターである。前述したセグメントシャッフルが実行されるときに、セグメントシャッフル信号ＳＳＨを受けて出力状態値を変更する。
【００６６】
具体例を挙げると、このセグメントシャッフルカウンター１６の出力状態値は３ビットの信号で構成される。この３ビットの信号による８通りの組み合わせに従って、８  ｔｏ  ８セレクター１３Ｂを切り替えることができる。この点は、図１０におけるエントリーシャッフルカウンター１４及び８  ｔｏ  ８セレクター１３Ａにおける説明と同様である。セグメントシャッフルカウンター１６の出力状態値は、例えばセグメント０が存在している位置と同じ値を示すものとする。即ち、セグメント０が、セグメント位置番号ＳＰ＝０にいる場合には、セグメントシャッフルカウンター１６の出力状態値は０、そしてセグメント０が、セグメント位置番号ＳＰ＝６の位置にいる場合には、セグメントシャッフルカウンター１６の出力状態値は６とする。そしてセグメントシャッフルカウンター１６の出力状態値が決まれば、その他のセグメントの接続も決まるものとする。未使用エントリー存在信号（ＥＸＳ）格納部３３に格納されたそれぞれの未使用エントリー存在信号ＥＸＳは、図１４に示すように、分岐されて、一方はＯＲゲート１７に送られ、他方は８  ｔｏ  ８セレクター１３Ｂに送られる。
【００６７】
８  ｔｏ  ８セレクター１３Ｂを通過した各セグメントの未使用エントリー存在信号ＥＸＳは、プライオリティエンコーダー１０Ｂに送られる。未ヒットエントリー存在信号Ｖは、少なくとも１つのセグメント内にはヒットしていないエントリーがあったということを示す。ＯＲゲート１７は、未ヒットエントリー存在信号Ｖを生成するための回路であり、各セグメントの中の未使用エントリー存在信号（ＥＸＳ）格納部３３に格納された未使用エントリー存在信号ＥＸＳの内、少なくとも１つが“１”であった場合に、未ヒットエントリー存在信号Ｖの情報は“１”になり、ヒットしていないエントリーがあったことを示す。
【００６８】
プライオリティエンコーダー１０Ｂは、８個のセグメントの未使用エントリー存在信号格納部３３に格納された各々の未使用エントリー存在信号ＥＸＳの内部状態値の中で、未使用エントリー存在信号（ＥＸＳ）の信号状態値が“１”になっているセグメントを選び、その中で図１５乃至１７において説明したように、ＭＳＢ側に近い位置に存在するセグメント位置番号ＳＰを選ばれたセグメントの位置番号ＳＰＮとして出力する回路である。セグメント位置番号ＳＰはセグメントそのものの番号ではなく、セグメントが置かれている位置の番号に相当する。
【００６９】
以上の結果得られるのは、全エントリーの中で未ヒットのエントリーがあったかどうかという情報に相当する未ヒットエントリー存在信号Ｖに関する情報と、未ヒットのエントリーを含むセグメントの内の選ばれた１つのセグメント情報としての選ばれたセグメントの位置番号ＳＰＮの情報である。
【００７０】
また、同時に各セグメントからは、図１４に示すように、選ばれたエントリーの位置番号（ＥＰＮ）格納部４１において、未ヒットエントリーの内の選ばれた１つのエントリー情報として、選ばれたエントリーの位置番号ＥＰＮの情報が得られる。従って、エントリーの更新要求があった場合には、ただちに上記の情報に基づいて、未ヒットのエントリーを選び出すことができる。
【００７１】
ただし、選ばれたセグメントの位置番号ＳＰＮと選ばれたエントリーの位置番号ＥＰＮはエントリーそのものの番号を示していないので、次に示す方法によって、エントリー番号ＥＮを求めることができる。ここで、エントリー番号ＥＮを導き出す構成は、一例として、図１８に示すように、減算回路２４，２５を使用する。
【００７２】
まず更新するエントリーを含むセグメントを導き出す方法は以下に示す通りである。即ち、図１８を参照して、「セグメントシャッフルカウンター１６の値」をＳＳＣＮＴ，「選ばれたセグメントの位置番号ＳＰＮの値」をＳＰＮとして、減算回路２４を動作させる。即ち、
2004272772.tif 000003
で表される。この結果は、本例では３ビットの値として生成される。仮に結果をＵＳＥＬとする。
【００７３】
次にセグメント内の更新対象エントリーの番号を導き出す方法は以下に示す通りである。即ち、図１８を参照して、「エントリーシャッフルカウンター１４の値」をＥＳＣＮＴ，「選ばれたエントリーの位置番号ＥＰＮの値」をＥＰＮとして、減算回路２５を動作させる。
【００７４】
2004272772.tif 000004
で表される。この結果も３ビットの値として生成される。仮に結果をＬＳＥＬとする。
【００７５】
以上によって、選ばれる更新対象エントリーの番号は、ＵＳＥＬとＬＳＥＬの計６ビットによって指定することができる。ここで、ＵＳＥＬが上位側、ＬＳＥＬが下位側である。以上のようにして、エントリー番号ＥＮを導き出すことができる。
【００７６】
シャッフル信号の生成方法は以下の通りである。即ち、セグメントシャッフル信号ＳＳＨは、実際にあるエントリーの更新が行なわれた直後に生成される。エントリー更新とシャッフル実行の関係を時間軸で説明すると、図１９に示すように、処理の流れＩＦの矢印に対して更新要求ＲＤ、更新再開ＲＲ、更新終了ＲＥ、シャッフル実行ＳＨＥの順番となる。
【００７７】
セグメントシャッフル信号ＳＳＨの供給に関しては、セグメントシャッフルが実行されるたびに、セグメントシャッフルカウンター１６に対して発行される。エントリーシャッフルカウンター１４に対しては、更新対象となったエントリーを含むセグメントのエントリーシャッフルカウンター１４に対して、発行される。この方法は、シャッフル信号ＳＳＨをＵＳＥＬの値で選択されたセグメントに対してのみ供給するというものである。例えば、セグメントへのシャッフル信号供給は、図２０に示すように、デマルチプレクサ１８に対してセグメントシャッフル信号ＳＳＨとＵＳＥＬ［２：０］を入力することによって行われる。即ち、デマルチプレクサ１８に対してセグメントシャッフル信号ＳＳＨとＵＳＥＬ［２：０］を入力すると、シャッフル信号（セグメント  ０）ＳＳＨ０，シャッフル信号（セグメント  １）ＳＳＨ１，・・・，シャッフル信号（セグメント  ７）ＳＳＨ７を発生する。具体的には、ＵＳＥＬ［２：０］＝“０”の時、セグメントシャッフル信号ＳＳＨは、セグメント０にのみ供給され、ＵＳＥＬ［２：０］＝“１”の時には、セグメント１にのみ供給される。以下同様にして、ＵＳＥＬ［２：０］＝“７”の時には、セグメント７にのみ供給される。
【００７８】
フルアソシエイティブ方式のキャッシュメモリーの場合、その更新エントリーを選択する際には、回路設計の煩雑さを回避するために、ランダムにエントリーを選択する手法が用いられるため、使用頻度が高いエントリーが更新されてしまう可能性があるのに対して、本発明のキャッシュメモリー及びキャッシュメモリー更新方法によれば、未使用のエントリーから、更新エントリーを自動的に選択することができるようになるので、無駄が生じにくく時間効率がよい。
【００７９】
また本発明のキャッシュメモリーシステムによれば、キャッシュメモリーの更新において、ランダムにエントリーを選択する必要が無いため、使用頻度が高いエントリーを更新する可能性は低く、未使用のエントリーから更新エントリーを自動的に選択することができるようになるので、効率のよいキャッシュメモリーシステムを提供することができる。
【００８０】
（第２の実施の形態）
本発明の第１の実施形態に係るキャッシュメモリーシステムにおいて説明した通り、更新用エントリー検索において、未ヒットエントリー存在信号Ｖが有効な信号を示していない場合、即ち、ヒットしていない（未使用）エントリーが存在しなかった場合には、本当にランダムに更新するエントリーを選択する。ソフトウェアの動作環境に対してハードウェアが提供するキャッシュメモリー８のエントリー数が物理的に少なすぎるという理由で、ヒットしていないエントリーが存在しなかったという場合には、ランダムに更新するエントリーを選択することになる。インターバルタイマー３の周期ＴＩが長すぎるということが原因で、ヒットしていないエントリーが存在しなかったという場合には、インターバルタイマー３の周期ＴＩを短く設定することで対策が可能である。しかしながら、以上の動作をソフトウェアですべて管理する場合には、取り扱うデータ量は膨大なものなる。
【００８１】
本発明の第２の実施の形態に係るキャッシュメモリーシステム５１は、更新用エントリー検索をハードウェアで自動的に行うものである。本発明の第２の実施の形態に係るキャッシュメモリーシステム５１は、キャッシュメモリー８とインターバルタイマー３によるカウント制御機構を備える。全体構成は、図２１に示すように、エントリー０，エントリー１，…，エントリーｎ−２，エントリーｎ−１からなる複数のエントリーと複数のエントリーのそれぞれに対応する複数の情報格納部１と複数の情報格納部１に付随する参照ビットＲを格納する複数の参照ビット格納部３１とからなるキャッシュメモリー８と、未使用エントリー判定部２３と、カウントクロック生成部２１と、状況レジスター２２と、制御レジスター４と、インターバルタイマー３と、ヒット下限数レジスター１９と、ヒット上限数レジスター２０とから構成される。図２１に示すように、ヒット上限数レジスター２０の代わりに未ヒットエントリー存在信号（Ｖ）発生部３６を使用することも可能である。
【００８２】
図１及び図２に示した本発明の第１の実施の形態に係るキャッシュメモリーシステム５０と同様に、インターバルタイマー３は、制御レジスター４で設定した制御情報ＣＩに従って、インターバルタイマー３の周期ＴＩで、世代交代信号ＩＳを参照ビット格納部３１に対して出力する。この世代交代信号ＩＳは、図２に示した第１の実施の形態と同様に、参照ビット格納部３１を構成するレジスター情報の世代管理を行うために使用される。インターバルタイマー３が動作するために必要なクロックＣＬＫは、図２１中のカウントクロック生成部２１から供給される。カウントクロック生成部２１は、基本的にプロセッサーに供給されるメインのクロックを任意に分周した周期で、インターバルタイマー３の動作用のクロックＣＬＫを生成する。カウントクロック生成部２１が出力するクロックＣＬＫの周期は、実際には未使用エントリー判定部２３が出力するカウントクロック制御信号ＣＣＣによって制御される。カウントクロック制御信号ＣＣＣによって、元々ハードウェアで定義されたインターバルタイマー３の動作用クロックＣＬＫの周期を、長くしたり短くしたりと調整することができるようになっている。
【００８３】
未使用エントリー判定部２３は、図２１に示すように、ヒット上限数レジスター２０からのヒット上限数信号ＨＵＮ若しくは未ヒットエントリー存在信号発生部３６からの未ヒットエントリー存在信号Ｖを受信する。或いはまた、ヒット下限数レジスター１９からのヒット下限数信号ＨＬＮも受信し、カウントクロック制御信号ＣＣＣをカウントクロック生成部２１に対して送信する。また、状況レジスター２２は、カウントクロック生成部２１が出力しているクロックＣＬＫのクロック周波数情報ＣＦＩを格納する記憶素子である。
【００８４】
未使用エントリー判定部２３から生成されるカウントクロック制御信号ＣＣＣの周波数若しくは周期は以下のようにして決定される。即ち、参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているエントリー数の合計値から、ある一定の閾値を越えたか下回ったりしたかを判定して、ある閾値（上限ヒット数）を越えた場合にはカウントクロック制御信号ＣＣＣの周波数を上げ（周期を短くし）、ある閾値（ヒット下限数）を下回った場合にはカウントクロック制御信号ＣＣＣの周波数を下げる（周期を長くする）。
【００８５】
具体例を示すのであれば、未ヒットエントリー存在信号発生部３６からの未ヒットエントリー存在信号Ｖが“０”であった場合には未使用のエントリーが無かったということで、インターバルタイマー３の周期ＴＩを短くする。即ち、カウントクロック生成部２１によって生成されるクロックＣＬＫの周期を短くする。また別の方法としては、参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているヒットエントリー数が非常に多く、ある閾値（図１３でいうヒット上限数レジスター２０に設定された値としてのヒット上限数）を上回った時にも同様に、カウントクロック生成部２１によって生成されるクロックＣＬＫの周期を短くする。参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているヒットエントリー数が、ヒット上限数レジスター２０に設定された値としてのヒット上限数を上回った時には、図２１に示すように、ヒット上限数レジスター２０からヒット上限数信号ＨＵＮが未使用エントリー判定部２３に対して送信される。
【００８６】
逆に、参照ビット格納部３１に格納された参照ビットＲの内部状態値が“０”になっているミスヒットエントリー数が非常に多い場合、つまり参照ビットＲの内部状態値が“１”になっているヒットエントリー数が非常に少なく、ある閾値（図２１でいうヒット下限数レジスター１９に設定された値としてのヒット下限数）を下回った時には、インターバルタイマー３の周期ＴＩを長くして、長期間かけてエントリーの使用状況を監視するようにする。参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているヒットエントリー数がヒット下限数レジスター１９に設定された値としてのヒット下限数を下回った時には、図２１に示すように、ヒット下限数レジスター１９からヒット下限数信号ＨＬＮが未使用エントリー判定部２３に対して送信される。
【００８７】
本発明の第２の実施の形態に係るキャッシュメモリーにおいて、未使用エントリー判定部２３の判定アルゴリズムに基づくフローチャートは、図２２に示すように、ステップＳ１からステップＳ５により構成される。
【００８８】
（ａ）  ステップＳ１において、インターバルタイマー３から参照ビット格納部３１に対して世代交代信号ＩＳを入力する。
【００８９】
（ｂ）  次にステップＳ２に進み、ステップＳ２において、参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているヒットエントリー数が、ヒット上限数レジスター２０に設定された値としてのヒット上限数を超えるかどうかを判断する。
【００９０】
（ｃ）  ステップＳ２の結果、ＹＥＳであるならば、ステップＳ５において、カウントクロック制御信号ＣＣＣの周波数を上げ、インターバルタイマー３の周期ＴＩを短くし、その後ステップＳ１に戻る。
【００９１】
（ｄ）  ステップＳ２の結果、ＮＯであるならば、ステップＳ３において、参照ビット格納部３１に格納された参照ビットＲの内部状態値が“１”になっているヒットエントリー数がヒット下限数レジスター１９に設定された値としてのヒット下限数を下回るかどうかを判断する。
【００９２】
（ｅ）  ステップＳ３の結果、ＹＥＳであるならば、ステップＳ４に進み、カウントクロック制御信号ＣＣＣの周波数を下げ、インターバルタイマー３の周期ＴＩを長くし、その後ステップＳ１に戻る。
【００９３】
（ｆ）  ステップＳ３の結果、ＮＯであるならば、ステップＳ１に戻る。
【００９４】
このようにインターバルタイマー３の周期ＴＩを、エントリーの使用数（ヒット数）に応じて自動的に制御することで、本発明の第２の実施の形態に係るキャッシュメモリーシステム５１において、未使用エントリーのランダム選択機能が破綻しないように効率良く行うことができ、かつアプリケーションによるキャッシュの更新頻度が時間的に変動する場合でも柔軟にかつ自動的に対応することができる。
【００９５】
また本発明のキャッシュメモリーシステム５１によれば、ソフトウェア側がインターバルタイマー３の周期ＴＩの設定を、頻繁にやり直す必要は無く、本アルゴリズム実現のために使用するインターバルタイマー３の周期ＴＩの設定を、自動的に調節することができる。
【００９６】
（その他の実施の形態）
上記のように、本発明は第１及び第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００９７】
本発明の実施の形態にかかるキャッシュメモリーシステムは、一般のＬＳＩや半導体集積回路に適用することができることはもちろんである。フルアソシエイティブ方式のキャッシュメモリーを使用するものであれば、画像・音声処理用ディジタルシグナルプロセッサー（ＤＳＰ）或いはカスタムＬＳＩに適用することもできる。したがって、フルアソシエイティブ方式のキャッシュメモリーを使用するものであれば、ＣＰＵ、タイマーＬＳＩのみならず、一般的な半導体集積回路等においても適用することができる。
【００９８】
本発明の実施の形態において説明したフローチャートはプログラムの実行においてもそのまま適用できることはもちろんである。更にまた、このようなプログラムを記録した媒体として、例えば、ＲＯＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ等によって、提供できることも明らかである。
【００９９】
【発明の効果】
本発明のキャッシュメモリーシステム、キャッシュメモリー及びその更新方法、キャッシュメモリーシステムの更新方法及び更新プログラムによれば、キャッシュメモリーの更新において、ランダムにエントリーを選択する必要が無いため、使用頻度が高いエントリーを更新する可能性は低く、未使用のエントリーから更新エントリーを自動的に選択することができる。
【０１００】
また本発明のキャッシュメモリーシステム、キャッシュメモリー及びその更新方法、キャッシュメモリーシステムの更新方法及び更新プログラムによれば、ソフトウェア側がタイマーの周期の設定を、自動的に調節することができ、時間効率がよい。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るキャッシュメモリーシステムの模式的ブロック構成図であって、キャッシュメモリーシステムとメインメモリーの接続関係を示す全体ブロック構成図。
【図２】本発明の第１の実施形態に係るキャッシュメモリーシステムの構成図であって、キャッシュメモリーとインターバルタイマーの接続関係を含む全体ブロック構成図。
【図３】インターバルタイマーからの世代交代信号ＩＳ及びインターバルタイマーの周期ＴＩによる、第１の参照ビットＲＡと第２の参照ビットＲＢの内部状態値の移り変わりを示す模式図。
【図４】エントリーヒットＨｉｔ１，Ｈｉｔ２によって、２回エントリーにヒットした例において、第１の参照ビットＲＡと第２の参照ビットＲＢの内部状態値の変化と動作を示す模式図。
【図５】本発明の第１の実施の形態に係るキャッシュメモリーシステムを構成する、参照ビット判定回路とその周辺回路のブロック構成図であって、使用状況記憶部に２ビット構成レジスター、４ビット構成レジスター及び２ビットカウンターを有する実施例。
【図６】使用状況記憶部に２ビット構成レジスターと４ビット構成レジスターを有する別の実施例。
【図７】使用状況記憶部に２ビット構成レジスターと２ビットカウンターを有する別の実施例。
【図８】使用状況記憶部に４ビット構成レジスターと２ビットカウンターを有する別の実施例。
【図９】キャッシュメモリーのエントリー数を６４エントリーとした場合において、８分割して１セグメントを８エントリー分にて構成する分割方法の模式図。
【図１０】本発明の第１の実施の形態に係るキャッシュメモリーシステムにおいて、キャッシュメモリーを構成するセグメント内のハードウェアの模式的構成図。
【図１１】セグメント０における処理概要図であって、更新対象セグメント内エントリーシャッフルにおいて、ローテート前の状態を説明する模式図。
【図１２】更新対象セグメント内エントリーシャッフルにおいて、ローテート状態を説明する模式図。
【図１３】更新対象セグメント内エントリーシャッフルにおいて、ローテート後の状態を説明する模式図。
【図１４】本発明の第１の実施の形態に係る、キャッシュメモリーを構成するセグメント８個分の全体ハードウェアの模式的構成図。
【図１５】セグメント全体処理を説明する模式的構成図であって、ローテート前の状態を説明する模式図。
【図１６】セグメント全体処理において、ローテート状態を説明する模式図。
【図１７】セグメント全体処理において、ローテート後の状態を説明する模式図。
【図１８】エントリー番号ＥＮを求めるための構成を説明する模式図。
【図１９】エントリー更新とシャッフル実行において、処理の流れを時間軸上で説明する模式図。
【図２０】セグメントへのシャッフル信号供給を説明する模式的ブロック構成図。
【図２１】本発明の第２の実施の形態に係るキャッシュメモリーシステムの模式的構成図であって、キャッシュメモリーとインターバルタイマーのカウント制御機構を備える全体ブロック構成図。
【図２２】本発明の第２の実施の形態に係るキャッシュメモリーシステムを構成する、未使用エントリー判定部において、判定アルゴリズムに基づくフローチャート図。
【符号の説明】
１…情報格納部
２…使用状況記憶部
３…インターバルタイマー
４…制御レジスター
５…ヒット判定回路
６…参照ビット判定回路
７…参照ビット判定制御レジスター
８…キャッシュメモリー
９…２ビットカウンター
１０Ａ，１０Ｂ…プライオリティエンコーダー
１１…ＥＸＳ処理部
１２Ａ，１２Ｂ…処理回路
１３Ａ，１３Ｂ…８  ｔｏ  ８  セレクター
１４…エントリーシャッフルカウンター
１５…ＮＡＮＤゲート
１６…セグメントシャッフルカウンター
１７…ＯＲゲート
１８…デマルチプレクサ
１９…ヒット下限数レジスター
２０…ヒット上限数レジスター
２１…カウントクロック生成部
２２…状況レジスター
２３…未使用エントリー判定部
２４，２５…減算回路
３０…プロセッサー
３１…参照ビット格納部
３２…選択参照ビット格納部
３３…未使用エントリー存在信号（ＥＸＳ）格納部
３４…２ビット構成レジスター
３５…４ビット構成レジスター
３６…未ヒットエントリー存在信号発生部
３７…第１の参照ビット格納部
３８…第２の参照ビット格納部
３９…第３の参照ビット格納部
４０…第４の参照ビット格納部
４１…選ばれたエントリーの位置番号（ＥＰＮ）格納部
５０，５１…キャッシュメモリーシステム
６０…メインメモリー（主記憶装置）
Ｒ，ＲＡ，ＲＢ，ＲＣ，ＲＤ…参照ビット
ＲＳ…選択参照ビット
ＰＡ…プロセッサーキャッシュアクセスアドレス情報
ＣＡ…キャッシュアドレス情報
ＣＩ…制御情報
ＨＴ…ヒット信号
Ｈｉｔ１，Ｈｉｔ２…エントリーヒット
ＩＳ…世代交代信号（トリガ信号）
ＣＲＲ…現在の参照ビット
ＯＬＲ…過去の参照ビット
ＤＣＳ…判定制御信号
ＴＩ…インターバルタイマー３の周期
ＥＮ…エントリー番号
ＥＰ…エントリー位置番号
ＥＸＳ…未使用エントリー存在信号
ＥＰＮ…選ばれたエントリーの位置番号
ＳＰ…セグメント位置番号
ＳＮ…セグメント番号
ＳＰＮ…選ばれたセグメントの位置番号
Ｖ…未ヒットエントリー存在信号
ＥＳＣ…エントリーセレクター制御信号
ＥＳＨ…エントリーシャッフル信号
ＳＳＣ…セグメントセレクター制御信号
ＳＳＨ…セグメントシャッフル信号
ＩＦ…処理の流れ
ＲＤ…更新要求
ＲＲ…更新再開
ＲＥ…更新終了
ＳＨＥ…シャッフル実行
ＳＳＨ０，ＳＳＨ１，ＳＳＨ２，ＳＳＨ３，・・・，ＳＳＨ７…シャッフル信号
ＣＣＣ…カウントクロック制御信号
ＣＬＫ…クロック
ＣＦＩ…クロック周波数情報
Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６…ステップ
ＳＳＣＮＴ…セグメントシャッフルカウンターの値
ＥＳＣＮＴ…エントリーシャッフルカウンターの値
ＨＵＮ…ヒット上限数信号
ＨＬＮ…ヒット下限数信号
【図１】
2004272772.tif 000005
【図２】
2004272772.tif 000006
【図３】
2004272772.tif 000007
【図４】
2004272772.tif 000008
【図５】
2004272772.tif 000009
【図６】
2004272772.tif 000010
【図７】
2004272772.tif 000011
【図８】
2004272772.tif 000012
【図９】
2004272772.tif 000013
【図１０】
2004272772.tif 000014
【図１１】
2004272772.tif 000015
【図１２】
2004272772.tif 000016
【図１３】
2004272772.tif 000017
【図１４】
2004272772.tif 000018
【図１５】
2004272772.tif 000019
【図１６】
2004272772.tif 000020
【図１７】
2004272772.tif 000021
【図１８】
2004272772.tif 000022
【図１９】
2004272772.tif 000023
【図２０】
2004272772.tif 000024
【図２１】
2004272772.tif 000025
【図２２】
2004272772.tif 000026