(57)【要約】【課題】クリア動作を効率良く行うことができ、回路規模を縮小させることができるキャッシュメモリ及びその制御方法を提供することを目的とする。【解決手段】本発明にかかるキャッシュメモリは、キャッシュデータの有効性の有無を示すバリッドビットを生成するセットアソシエイティブ方式のキャッシュメモリであって、インデックスに対応して、キャッシュデータのアドレスのアドレスタグとキャッシュデータの有効性の有無を示す第一のバリッドビットとをセットのブロックに格納するタグメモリ１と、第一のバリッドビットに対応した第二のバリッドビットを格納するとともに、第二のバリッドビットをリセットするバリッドビットレジスタ２とを備え、バリッドビットが、第一のバリッドビットと第二のバリッドビットとに基づいて生成されるものである。【選択図】　図１
2004046593.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュデータの有効性の有無を示すバリッドビットを生成するセットアソシエイティブ方式のキャッシュメモリであって、
インデックスに対応して、キャッシュデータのアドレスのアドレスタグと当該キャッシュデータの有効性の有無を示すための第一のバリッドビットとをセットのブロックに格納する格納手段と、
前記第一のバリッドビットに対応した第二のバリッドビットを格納するとともに、該第二のバリッドビットをリセットするリセット手段とを備え、
前記バリッドビットが、第一のバリッドビットと第二のバリッドビットとに基づいて生成されるキャッシュメモリ。
【請求項２】
前記バリッドビットは、第一のバリッドビット及び第二のバリッドビットがともに有効を示す場合には有効を示し、且つ第一のバリッドビット又は第二のバリッドビットのいずれかが無効を示す場合には無効を示すことを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記リセット手段が各ウェイに共通であることを特徴とする請求項１記載のキャッシュメモリ。
【請求項４】
前記リセット手段が第二のバリッドビットをリセットした場合には、格納手段に第一のバリッドビットを書き込む書込み手段を介して、前記第一のバリッドビットがクリアされることを特徴とする請求項１記載のキャッシュメモリ。
【請求項５】
前記第一のバリッドビットは書込み手段を介して選択的にクリアされることを特徴とする請求項４記載のキャッシュメモリ。
【請求項６】
キャッシュデータの有効性の有無を示すバリッドビットを生成するセットアソシエイティブ方式のキャッシュメモリのリセットを制御する制御方法であって、インデックスに対応して、キャッシュデータのアドレスのアドレスタグと当該キャッシュデータの有効性の有無を示す第一のバリッドビットとをセットのブロックに格納するステップと、
前記インデックスに対応して第二のバリッドビットを格納するステップと、
前記第二のバリッドビットをリセットするステップと、
前記バリッドビットを、前記第一のバリッドビットと前記第二のバリッドビットに基づいて生成するステップとを備えた制御方法。
【請求項７】
前記バリッドビットは、第一のバリッドビット及び第二のバリッドビットがともに有効を示す場合には有効を示し、且つ第一のバリッドビット又は第二のバリッドビットのいずれかが無効を示す場合には無効を示すことを特徴とする請求項６記載の制御方法。
【請求項８】
第二のバリッドビットをリセットした場合には、アドレスタグ及び第一のバリッドビットを格納するとともに、前記第一のバリッドビットをクリアすることを特徴とする請求項６記載の制御方法。
【請求項９】
前記第一のバリッドビットを選択的にクリアすることを特徴とする請求項８記載の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリ及びその制御方法に関し、特にセットアソシエイティブ方式のキャッシュメモリ及びその制御方法に関する。
【０００２】
【従来の技術】
従来、キャッシュメモリは、特にプロセッサと大容量低速のメインメモリとの間に配置され、頻繁にアクセスされる命令・データ等を格納してシステム全体のアクセスタイムを短縮させている。このようなシステム全体のアクセスタイムを短縮させるキャッシュメモリとして、データのヒット率を向上させるために各ブロックを配置可能な場所が複数存在するセットアソシエイティブ方式が多く用いられている。
【０００３】
このセットアソシエイティブ方式のキャッシュメモリでは、メモリの格納領域を複数のセット毎に分割し、セット毎にデータのアドレスタグをタグメモリに格納する。そして、タグメモリから読み出したアドレスタグとアクセスアドレスとを比較し、比較結果からヒット／ミスヒット信号を生成し、データを格納したデータメモリにアクセスする。
【０００４】
タグメモリの各ブロックには、通常、タグアドレスとともに、そのアドレスに対応するデータメモリの内容が有効か無効かを示すバリッドビット（有効ビット）が格納されている。タグメモリから読み出したタグアドレスとアクセスアドレスとを比較する際、バリッドビットを各セットの全てのウェイ毎に読み出す。そして、その比較結果が一致し、かつバリッドビットが“有効”を示しているウェイが存在した場合に、データメモリへのアクセスが可能となる。
【０００５】
このようなセットアソシエイティブ方式のキャッシュメモリは、一般的にプロセッサの高機能化を行うために広く用いられている。そして、近年においては、セットアソシエイティブ方式のキャッシュメモリのフラッシュを１クロックで行うことが要求されている。
【０００６】
このセットアソシエイティブ方式のキャッシュメモリを１クロックによりフラッシュを行う技術として、特開平２−９０３４７号公報が開示されている。特開平２−９０３４７号公報のセットアソシエイティブ方式のキャッシュメモリでは、タグアドレスとバリッドビットを格納するバリッドビットレジスタとを分離し、バリッドビットを記憶する記憶手段により、１サイクルでのオールクリア動作が行われている。
【０００７】
しかしながら、特開平２−９０３４７号公報のキャッシュメモリにおいてｎウェイｋセット構成のセットアソシエイティブ方式とする場合には、バリッドビットレジスタの数がｎ×２ｋ個となり、キャッシュメモリの回路規模が増加する。そして、キャッシュメモリの回路規模の増加にともない、キャッシュメモリで消費される消費電力が増加する。特に、ウェイ数の増加にともない飛躍的に回路規模が増加し、それにともない消費電力が飛躍的に増加する。
【０００８】
さらに、バリッドビットレジスタの数が多くなると、キャッシュメモリへの書込みやキャッシュメモリからの読込みを行う際、バリッドビットレジスタを選択するための制御回路が複雑となる。そのため、バリッドビットに書き込んだり読み出したりする時間が増大し、キャッシュメモリが低速化するという問題が発生する。
【０００９】
【発明が解決しようとする課題】
このように、従来のキャッシュメモリでは、クリア動作を行うことができたとしても、キャッシュメモリ自体の回路規模が拡大するという問題点があった。
【００１０】
本発明は、このような問題点を解決するためになされたもので、クリア動作を効率良く行うことができ、回路規模を縮小させることができるキャッシュメモリ及びその制御方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明にかかるキャッシュメモリは、キャッシュデータの有効性の有無を示すバリッドビットを生成するセットアソシエイティブ方式のキャッシュメモリであって、インデックスに対応して、キャッシュデータのアドレスのアドレスタグと当該キャッシュデータの有効性の有無を示すための第一のバリッドビットとをセットのブロックに格納する格納手段（例えば、本発明の実施の形態におけるタグメモリ１）と、前記第一のバリッドビットに対応した第二のバリッドビットを格納するとともに、該第二のバリッドビットをリセットするリセット手段（例えば、本発明の実施の形態におけるバリッドビットレジスタ２）とを備え、前記バリッドビットが、第一のバリッドビットと第二のバリッドビットとに基づいて生成されるものである。このような構成により、第一のバリッドビット及び第二のバリッドビットを介して、キャッシュメモリのクリア動作を効率良く行うことができる。
【００１２】
さらに、本発明にかかるキャッシュメモリは、前記バリッドビットは、第一のバリッドビット及び第二のバリッドビットがともに有効を示す場合には有効を示し、且つ第一のバリッドビット又は第二のバリッドビットのいずれかが無効を示す場合には無効を示すものである。これにより、第二のバリッドビットが無効を示すことにより、当該バリッドビットは無効を示すことができ、キャッシュメモリのクリア動作を効率良く行うことができる。
【００１３】
またさらに、本発明にかかるキャッシュメモリでは、前記リセット手段が各ウェイに共通である。これにより、リセット手段の数を低減し、キャッシュメモリの回路規模を縮小することができる。
【００１４】
そして、本発明にかかるキャッシュメモリは、前記リセット手段が第二のバリッドビットをリセットした場合には、第一の格納手段に第一のバリッドビットを書き込む書込み手段（例えば、本発明の実施の形態における論理ゲートＯＲ９１〜９ｎ、１０１〜１０ｎ、バリッドビット信号３２０）を介して、前記第一のバリッドビットがクリアされるものである。これにより、キャッシュメモリの回路規模をより縮小しつつ、第一のバリッドビットのクリア動作を行うことができる。
【００１５】
また、本発明にかかるキャッシュメモリは、前記第一のバリッドビットは書込み手段を介して選択的にクリアされるものである。これにより、部分的に第一のバリッドのクリア動作を簡便に行うことができる。
【００１６】
本発明にかかる制御方法は、キャッシュデータの有効性の有無を示すバリッドビットを生成するセットアソシエイティブ方式のキャッシュメモリのリセットを制御する制御方法であって、インデックスに対応して、キャッシュデータのアドレスのアドレスタグと当該キャッシュデータの有効性の有無を示すための第一のバリッドビットとをセットのブロックに格納するステップと、前記インデックスに対応して第二のバリッドビットを格納するステップと、前記第二のバリッドビットをリセットするステップと、前記バリッドビットを、前記第一のバリッドビットと前記第二のバリッドビットに基づいて生成するステップとを備えたものである。このような方法により、第一のバリッドビット及び第二のバリッドビットを介して、キャッシュメモリのクリア動作を効率良く行うことができる。
【００１７】
さらに、本発明にかかる制御方法では、前記バリッドビットは、第一のバリッドビット及び第二のバリッドビットがともに有効を示す場合には有効を示し、且つ第一のバリッドビット又は第二のバリッドビットのいずれかが無効を示す場合には無効を示すものである。これにより、第二のバリッドビットが無効を示すことにより、当該バリッドビットは無効を示すことができ、キャッシュメモリのクリア動作を効率良く行うことができる。
【００１８】
そして、本発明にかかる制御方法では、第二のバリッドビットをリセットした場合には、アドレスタグ及び第一のバリッドビットを格納するとともに、前記第一のバリッドビットをクリアするものである。これにより、キャッシュメモリの回路規模をより縮小しつつ、第一のバリッドビットのクリア動作を行うことができる。
【００１９】
また、本発明にかかる制御方法では、前記第一のバリッドビットを選択的にクリアするものである。これにより、部分的に第一のバリッドのクリア動作を簡便に行うことができる。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態について図を参照して説明する。
【００２１】
まず本発明の実施の形態に対する一比較例について説明し、次に本発明の実施の形態について説明する。なお、本発明の実施の形態においては、キャッシュメモリを、多ウェイ・セットアソシエイティブ方式のキャッシュメモリとして説明する。また、キャッシュメモリのウェイ数はいくつでも良く、以下では一般の数ｎを用いてｎウェイと記載する。
【００２２】
まず、図４を用いて本発明の実施の形態（以下、本実施形態という）に対する一比較例について説明する。図４は、本実施形態に対する一比較例を示す概略模式図である。図４に示すように、タグメモリ１００１は、タグメモリ１０１１〜１０１ｎから構成される。タグメモリ１０１１〜１０１ｎに対してｋビットのインデックス信号１３００、ｍビットのアドレスタグ信号１３１０が入力される。アドレスタグ信号１３１０がタグメモリ１０１１〜１０１ｎに入力されると、インデックス信号１３００に対応するインデックスのセットにアドレスタグが書き込まれる。
【００２３】
タグメモリ１０１１〜１０１ｎにアドレスタグを書き込む際、書込み信号１３３０が入力される。書込み信号１３３０は、書込み信号１３３１〜１３３ｎに分岐して各タグメモリ１０１１〜１０１ｎに入力される。このとき、書込み信号１３３１〜１３３ｎのうちで有効な論理値（例えば、論理値１）を有する書込み信号が入力されたタグメモリはアクティブな状態となる。そして、アドレス信号１３１０からのアドレスタグが、インデックス信号１３００に対応するセットのブロックに書き込まれる。また、書込み信号１３３１〜１３３ｎのうちで無効な論理値（例えば、論理値０）を示す書込み信号が入力されるタグメモリにはアドレスタグが書き込まれない。
【００２４】
また、図４に示す本実施形態に対する一比較例においては、従来のダイレクトマップ方式やセットアソシエイティブ方式のキャッシュのように、タグメモリ１００１にアドレスタグとともにバリッドビットが格納されることはない。バリッドビットは、アドレスタグとは別個にバリッドビットレジスタ１００２１〜１００２ｎに格納される。
【００２５】
バリッドビットレジスタ１００２１〜１００２ｎのそれぞれは、デコーダ１０３１〜１０３ｎ、バリッドビットメモリ１２ｉｊ（ｉ、ｊ＝１、・・・、ｎ）、エンコーダ１０５１〜１０５ｎから構成される。バリッドビットレジスタ１００２ｉはバリッドビットメモリ１２ｉ１〜１２ｉｊを有する。バリッドビットメモリ１２ｉｊのそれぞれには、１ビットのバリッドビットが書き込まれる。
【００２６】
バリッドビットレジスタ１００２１〜１００２ｎは、ｎビットのバリッドビット信号１３２０が入力され、２ｋ個のインデックスに基づいてタグメモリ１０１１〜１０１ｎの各アドレスタグのバリッドビットが書き込まれる。このとき、バリッドビット信号１３２０は、バリッドビット信号１３２１から１３２ｎに分岐して各バリッドビットレジスタに入力される。また、バリッドビットレジスタ１００２１〜１００２ｎには、ｋビットのインデックス信号１３００が入力される。このインデックス信号１３００に基づいて、バリッドビットはバリッドビットメモリ１２１１〜１２１ｊのいずれかに書き込まれる。
【００２７】
また、タグメモリ１０１１〜１０１ｎと同様に、バリッドビットレジスタ１００２１〜１００２ｎにバリッドビットを書き込む際、書込み信号１３３０が入力される。書込み信号１３３０は、書込み信号１３３１〜１３３ｎに分岐して各デコーダ１０３１〜１０３ｎに入力される。このとき、書込み信号１３３１〜１３３ｎのうちで有効な論理値（例えば、論理値１）を有する書込み信号が入力されたバリッドビットメモリはアクティブな状態となる。
【００２８】
デコーダ１０３１〜１０３ｎにはインデックス信号１３００が入力される。このインデックス信号１３００に基づいてデコーダ１０３１〜１０３ｎはデコードを行う。それとともに、バリッドビットが格納されるバリッドビットメモリに有効な論理値を有する書込み信号が入力される。これにより、書込み信号を入力されたバリッドビットメモリはアクティブとなる。
【００２９】
アクティブとなったバリッドビットメモリには、デコーダ１０３１〜１０３ｎでのデコード結果に基づいて出力信号１４ｉｊのいずれかが選択され、選択された出力信号が入力されたバリッドビットメモリ１２ｉｊにはバリッドビットが格納される。また、書込み信号１３３１〜１３３ｎのうちで無効な論理値（例えば、論理値０）を示す書込み信号が入力されるバリッドビットメモリにはバリッドビットが書き込まれない。
【００３０】
アドレスタグを読み出す際、アドレスタグ１３５１〜１３５ｎは、タグメモリ１０１１〜１０１ｎにインデックス信号１３００が入力されてタグメモリ１０１１〜１０１ｎから読み出される。このとき、アドレスタグ１３５１〜１３５ｎは、インデックス信号１３００に対応するセットのブロックから読み出される。
【００３１】
バリッドビットレジスタ１００２１〜１００２ｎからバリッドビット１３６１〜１３６ｎを読み出す際、バリッドビットメモリ１２ｉ１〜１２ｉｊから信号１５ｉ１〜１５ｉｊがエンコーダ１０５ｉに出力される。エンコーダ１０５ｉにはインデックス信号１３００が入力され、このインデックス信号１３００に基づいて入力される信号１５ｉ１〜１５ｉｊが選択される。
【００３２】
選択された入力信号により、選択された入力信号に対応するバリッドビットメモリからバリッドビットが読み出される。エンコーダ１０５１〜１０５ｎから読み出された出力信号１６０１〜１６０ｎのそれぞれは、ラッチ１１２１〜１１２ｎでラッチされ、クロックに同期するバリッドビット１３６１〜１３６ｎとして出力される。
【００３３】
このように出力されるアドレスタグ１３５１〜１３５ｎとバリッドビット１３６１〜１３６ｎは比較器に送られ、ＣＰＵからのアクセスアドレスとの比較に用いられる。このとき、バリッドビット１３６１〜１３６ｎはデータメモリに格納されるデータの有効性の有無を判断するのに用いられる。バリッドビット１３６１〜１３６ｎが有効を示す（例えば、論理値１を有する）場合にはデータメモリにデータが格納されていることとなる。またバリッドビット１３６１〜１３６ｎが無効を示す（例えば、論理値０を有する）場合にはデータメモリにデータが格納されないこととなる。
【００３４】
バリッドビット１３６１〜１３６ｎが有効を示す場合、アドレスタグ１３５１〜１３５ｎは、ＣＰＵがアクセスしようとするデータのアクセスアドレスと比較される。比較結果により、両者が一致する場合にはヒット信号をＣＰＵに対して送信し、データメモリからデータの読込みが行われる。バリッドビット１３６１〜１３６ｎが無効を示す場合には、ミスニット信号をＣＰＵに対して送信し、メインメモリからキャッシュメモリに対してデータが読み出される。
【００３５】
図４に示す本実施形態に対する一比較例においては、タグメモリ１０１ｉから読み出されるアドレスタグ１３５ｉに対応するデータの有効性を判断する際、バリッドビット１３６ｉが用いられる。すなわち、例えば、比較器において、バリッドビット１３６ｉが有効を示す場合、アドレスタグ１３５ｉがアクセスアドレスとの比較に用いられる。そして、両者が一致する場合、アドレスタグ１３５ｉに対応するデータが読み出される。
【００３６】
また、本実施形態に対する一比較例においては、バリッドビットレジスタ１００２１〜１００２ｎに格納されるバリッドビットをクリアしてリセットを行う際には、各バリッドビットレジスタに対してフラッシュ信号１３４０が入力され、バリッドビットレジスタ毎にリセットが行われる。このとき、バリッドビットメモリに格納されるバリッドビット全てが同時にクリアされる。
【００３７】
このように、本実施形態に対する一比較例では、アドレスタグ１３５１〜１３５ｎのそれぞれとバリッドビット１３６１〜１３６ｎのそれぞれとは一対一に対応し、それぞれの組（アドレスタグ１３５ｉとバリッドビット１３６ｉ）に関して比較が行われる。そのため、図４に示す一比較例においては、ｎウェイ・セットアソシエイティブ方式のキャッシュメモリでは、ｎ個のバリッドビットレジスタが設けられる。そのため、バリッドビット全てを同時にクリアできるといえども、キャッシュメモリの回路規模が拡大する。これにより、キャッシュメモリの消費電力が増加したり、キャッシュメモリが低速化したりする。
【００３８】
次に、本実施形態について説明する。本実施形態について説明するに際して、本実施形態の概要、詳細、動作について順に説明する。
【００３９】
図１を用いて本実施形態の概略について説明する。図１は、本実施形態におけるキャッシュメモリを用いたシステムの一構成例を示す概略模式図である。図１に示すように、このシステムは、ＣＰＵ（中央処理装置）４、タグメモリ１、バリッドビットレジスタ２、データメモリ３を備える。
【００４０】
ＣＰＵ４は、命令部と制御部とを有する一般的な処理装置である。ＣＰＵ４は、データの転送を行ったり、データ転送を制御したりする。
【００４１】
タグメモリ１は、本実施形態におけるキャッシュメモリがｎウェイ・セットアソシエイティブ方式のキャッシュメモリであるため、ｎウェイの格納領域から構成される。タグメモリ１は、データの格納位置を示すアドレスタグを格納する。さらに、タグメモリ１には、当該アドレスに対応するデータの有効か無効かを示すバリッドビット（有効ビット）が格納される。
【００４２】
ここで、バリッドビットは、当該アドレスタグに対応するデータがデータメモリ３に格納されているか否かを示す。また以下では、このタグメモリ１に格納されるバリッドビットを第一バリッドビットとする。
【００４３】
バリッドビットレジスタ２は、タグメモリ１と同様に、当該アドレスに対応するデータの有効性の有無を示すバリッドビットを格納する（以下、バリッドビットレジスタ２に格納されるバリッドビットを第二バリッドビットとする）。バリッドビットレジスタ２は、後述するように、タグメモリ１のｎウェイの各セットに共通に接続される。
【００４４】
また、バリッドビットレジスタ２は、入力された信号をデコードするデコーダを有する。後述するように、このデコーダにアドレスのインデックスが入力されると、インデックスに基づいて所定のバリッドビット信号が選択されて第二バリッドビットとして格納される。
【００４５】
データメモリ３は、ｎウェイ・セットアソシエイティブ方式のキャッシュメモリでは、タグメモリ１のｎウェイに対応してｎ種類の格納領域に分割されている。データメモリ３には、アドレスに従ってデータが格納される。このアドレスは、タグメモリ１に格納されるアドレスタグに対応している。そして、データメモリ３内でデータの格納位置はアドレスに基づいて管理されている。
【００４６】
データメモリ３においてデータが格納されているか否かは、第一バリッドビット及び第二バリッドビットにより管理される。後述するように、第一バリッドビットと第二バリッドビットとから、データの存在つまりデータの有効性の有無を示すバリッドビットが生成される。
【００４７】
図１に示すように、このシステムにおいては、ＣＰＵ４から、タグメモリ１に対してアドレスの上位ｍビットをアドレスタグ信号として出力する。さらに、ＣＰＵ４から、タグメモリ１及びデータメモリ３に対してアドレスの下位ｋビットをインデックス信号として出力する。また、このインデックス信号は、バリッドビットレジスタ２に対しても出力される。
【００４８】
タグメモリ１からＣＰＵ４に対してデータのヒット／ミスヒットを示すヒット／ミスヒット信号が出力される。それに応じて、タグメモリ１からデータメモリ３に対して読出し及び書込みを行うためにアドレスを指定するアドレスタグ信号が出力される。また、ＣＰＵ４とデータメモリ３との間では、データバスを介してデータ転送が行われ、このアドレス信号によりデータの読出しや書込みが行われる。
【００４９】
図２及び図３を用いて、本実施形態におけるキャッシュメモリの詳細について説明する。図２は、タグメモリ１及びバリッドビットレジスタ２を示す模式図である。図３は、キャッシュメモリの動作を示すタイミングチャートである。なお、図２では、ｎウェイ・セットアソシエイティブ方式のキャッシュメモリの本発明に係るタグメモリ１及びバリッドビットレジスタ２のみを示し、本発明とは直接関係しない詳細な構成は省略する。
【００５０】
図２に示すように、タグメモリ１は、１ウェイに対して１個として、１１〜１ｎの計ｎ個のタグメモリ１１〜１ｎから構成されている。また、タグメモリ１１〜１ｎの各ブロックには、アドレスタグとアドレスタグに対応するデータが有効か無効かを示す第一バリッドビットとが格納される。アドレスタグは、データメモリ３に格納された各データのメインメモリ上でのアドレスの一部である。例えば、アドレスの上位ｍビットをアドレスタグとすることができる。
【００５１】
タグメモリ１１〜１ｎに格納されるアドレスタグ及び第一バリッドビットは、インデックスを基にして各ブロックに格納される。インデックスは、データメモリ３に格納された各データのメインメモリ上でのアドレスの一部である。例えば、アドレスの下位ｋビットをインデックスとすることができる。
【００５２】
アドレスタグは、アドレスの上位ｍビットである場合には、ｍビットのアドレスタグ信号３１０としてタグメモリ１１〜１ｎの一つに供給される。インデックスは、アドレスの下位ｋビットである場合には、ｋビットのインデックス信号３００としてタグメモリ１１〜１ｎの一つに供給される。
【００５３】
タグメモリ１１〜１ｎからアドレスタグを読み出すとき、インデックス信号３００がタグメモリ１１〜１ｎの一つに入力される。これにより、アドレスタグ及び第一バリッドビットが格納されたセットが定まり、このセットからアドレスタグが読み出されてｍビットのアドレスタグ３５１〜３５ｎとして出力される。
【００５４】
タグメモリ１１〜１ｎにアドレスタグを書き込むとき、インデックス信号３００がタグメモリ１１〜１ｎの一つに入力される。これにより、アドレスタグ及び第一バリッドビットを書き込むセットが定まる。そして、書込み信号６５１〜６５ｎを入力され、書込み信号６５１〜６５ｎのうち有効を示すタグメモリに対するセットのブロックにアドレスタグ及び第一バリッドビットが格納される。
【００５５】
このようにタグメモリ１１〜１ｎには、ｋビットのインデックスに基づいてｍビットのアドレスタグが各ブロック格納される。そのため、タグメモリ１１〜１ｎの１ウェイには、２ｋ個のブロックにアドレスタグを格納することができ、ｎウェイではｎ×２ｋ個のブロックのアドレスタグを格納することができる。さらに、後述するように、各アドレスタグには１ビットの第一バリッドビットが付加され、アドレスタグは第一バリッドビットとともに格納される。すなわち、アドレスタグは第一バリッドビットをあわせて（ｍ＋１）ビットの状態で格納されている。これにより、タグメモリ１１〜１ｎの各ウェイは、（ｍ＋１）ビット×２ｋワード構成のメモリということになる。
【００５６】
第一バリッドビットは、ｎビットのバリッドビット信号３２０がタグメモリ１１〜１ｎに供給されてタグメモリ１１〜１ｎの各ブロックに格納される。ｎビットのバリッドビット信号３２０は、論理ゲートＡＮＤ１０１〜１０ｎにおいて入力信号６２１〜６２ｎとの論理積をとられて第一バリッドビット６３１〜６３ｎとなる。第一バリッドビット６３１〜６３ｎは、ｍビットのアドレスタグ信号３１０に付加された後、第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎとしてタグメモリ１１〜１ｎのそれぞれに入力される。
【００５７】
図２に示すように、バリッドビットレジスタ２は、主要な構成として、第二バリッドビットを格納するバリッドビットメモリ２１〜２ｊ（ｊ＝２ｋとする）、デコーダ３０、エンコーダ５０から構成される。
【００５８】
バリッドビットメモリ２１〜２ｊには、アドレスタグに対応するデータが有効か無効かを示す第二バリッドビットが格納される。バリッドビットメモリ２１〜２ｊには、各タグメモリ１１〜１ｎの各ウェイに共通なインデックスつまり各セットのインデックスに基づいて第二バリッドビットが格納され、インデックス信号３００に示すインデックスに対応して格納される。また、バリッドビットメモリ２１〜２ｊは、ｎウェイにおける各インデックスに対応するｊセットのそれぞれに対応する。
【００５９】
ｎビットのバリッドビット信号３２０は、論理ゲートＯＲ７０で論理和をとられ、１ビットのバリッドビット信号３２１として出力される。さらに、インデックス信号３００は、デコーダ３０に入力されてデコードされ、そのデコード結果４０１〜４０ｊによって論理ゲートＡＮＤ４１〜４ｊで論理積をとられる。これにより、バリッドビット信号３２１の１ビットは、論理ゲートＡＮＤ４１〜４ｊで選択されたバリッドビットメモリ２１〜２ｊの１つに記憶される。
【００６０】
バリッドビットメモリ２１〜２ｊから出力される出力信号５０１〜５０ｊは、エンコーダ５０に入力され、エンコードされてレジスタ出力信号６００として出力される。このとき、エンコーダ５０にはインデックス信号３００が入力され、インデックス信号３００によって出力信号５０１〜５０ｊの中から選択されたレジスタ出力信号６００として出力される。その後、レジスタ出力信号６００は、メモリからのデータの読み出しと同期をとるためラッチ１２０でラッチされ、第二バリッドビット６７０として出力される。
【００６１】
この第二バリッドビット６７０は、論理ゲートＡＮＤ６１〜６ｎにおいて、タグメモリ１１〜１ｎの各タグメモリから読み出された第一バリッドビット６６１〜６６ｎとの間で論理積をとられる。これにより、各ウェイに関してバリッドビット３６１〜３６ｎが生成される。このとき、第一バリッドビット６６１〜６６ｎは、エンコーダ５０で選択されたレジスタ出力信号６００に対応したインデックスに基づくセットのブロックから出力される。
【００６２】
これらのバリッドビット３６１〜３６ｎとともに、タグメモリ１１〜１ｎから読み出されたアドレスタグ３５１〜３５ｎは、図示しない比較器に送られてアドレス比較に用いられる。また、タグアドレス３５１〜３５ｎも第一バリッドビット６６１〜６６ｎと同様に、エンコーダ５０で選択されたレジスタ出力信号６００に対応したインデックスに基づくセットのブロックから出力される。
【００６３】
アドレス比較では、まずバリッドビット３６１〜３６ｎの中で有効なバリッドビットが選択される。そして、アドレスタグ３５１〜３５ｎの中で有効なバリッドビットを有するアドレスタグと、ＣＰＵがアクセス要求を行っているアクセスアドレスの上位ｍビットとを比較する。比較した結果、両アドレスが一致する場合、データメモリ３にアクセスするヒット判定信号を発生させ、ヒット判定信号をデータメモリ３に送信する。また、両アドレスが一致しない場合には、ミスヒット判定信号を発生させる。
【００６４】
本実施形態におけるバリッドビットレジスタ２は、バリッドビットメモリ２１〜２ｊをリセットするリセット手段を有するレジスタとして構成することができる。バリッドビットメモリ２１〜２ｊをクリアする際、フラッシュ信号３４０をバリッドビットレジスタ２に入力することによりリセットを行うことができる。このとき、フラッシュ信号３４０の１クロックにより、バリッドビットメモリ２１〜２ｊの全バリッドビットを同時にリセットすることが可能である。例えば、フラッシュ信号３４０としてｎビットの０クランプ信号等を入力することにより、１クロックで全ての第二バリッドビットをクリアすることができる。
【００６５】
前述のように、バリッドビット３６１〜３６ｎは、第一のバリッドビット６６１と、第二バリッドビット６７０とから生成される。さらに、バリッドビットレジスタ２がバリッドビットメモリ２１〜２ｊの全バリッドビットを同時にリセットすることにより、フラッシュ後にはバリッドビットレジスタ２から生成される第二バリッドビット６７０は無効を示す（例えば、論理値０を持つ）。そのため、第二バリッドビット６７０が論理ゲートＡＮＤ６１〜６ｎで論理積をとられると、第一バリッドビット６６１〜６６ｎの有効／無効に関わらず、バリッドビット３６１〜３６ｎは無効を示すこととなる。これにより、バリッドビットレジスタ２を１クロックでクリアすると、各ウェイのバリッドビット３６１〜３６ｎをクリアすることができる。また、リセット手段を有するバリッドビットレジスタ２の個数が単数であるため、バリッドビットレジスタ２の個数を従来のｎウェイ・セットアソシエイティブ方式のキャッシュメモリに比べて１／ｎとすることができる。
【００６６】
ここで、このフラッシュ後、バリッドビットレジスタ２の全バリッドビットが同時にクリアされるのに対し、タグメモリ１１〜１ｎ上に格納されているバリッドはクリアされていない。そのため、フラッシュ以後にタグメモリ１にアドレスタグを書き込む際、書込みを行うのに選択されたセットのブロックの第一バリッドビットに無効を示す論理を書き込む。一例として、所定の第一バリッドビットに論理値０を書き込む。
【００６７】
フラッシュ以後の一動作例について説明する。なお、以下ではキャッシュメモリの書込み信号３３０で１をアクティブな状態を示すものとして説明する。図２に示すように、書込み信号３３０は、タグメモリ１１〜１ｎのｎウェイに関して合わせた全ビットつまりｎビットを論理ゲートＮＯＲ８０で論理和をととられた後に反転され、信号６１０として出力する。この信号６１０は、論理ゲートＯＲ９１〜９ｎのそれぞれにおいて、各ウェイへの書込み信号３３１〜３３ｎとレジスタ出力信号６００とから論理和をとられ、出力信号６２１〜６２ｎとして出力される。そして、これらの出力信号６２１〜６２ｎは、論理ゲートＡＮＤ１０１〜１０ｎにおいて、バリッドビット信号３２０との間で論理積をとられ、第一バリッドビット６３１〜６３ｎとして出力される。
【００６８】
バリッドビットレジスタ２のバリッドビットメモリ２１〜２ｊ全てをフラッシュ信号３４０により同時にクリアすると、フラッシュによってバリッドビットレジスタ２からのレジスタ出力信号６００がアクティブでない０となる。さらに、インデックス信号３００に対応するセットにアドレスタグを書き込むため、書込み信号３３１〜３３ｎの全ては０でなく、書込み信号３３１から３３ｎの中に１となるものが存在する。
【００６９】
このようにレジスタ出力信号６００が０であり、且つ書込み信号３３１〜３３ｎの中のどれかが１であるとき、書込み信号３３１〜３３ｎの中で１である書込み信号は、その書込み信号から出力される第一バリッドビット６３１〜６３ｎのいずれかを１としてタグメモリに入力され、第一バリッドビットを１とする。書込み信号３３１〜３３ｎの中で０である書込み信号は、第一バリッドビット６３１〜６３ｎを０としてタグメモリ１１〜１ｎに入力され、バリッドビットが０となる。
【００７０】
タグメモリ１１〜１ｎの各ウェイに対応した書込み信号３３１〜３３ｎは、論理ゲートＯＲ１１１〜１１ｎにおいて、出力信号６２１〜６２ｎの反転信号との間で論理和をとられて書込み信号６５１〜６５ｎとして出力される。出力された書込み信号６５１〜６５ｎは、各セットのブロックにアドレスタグや第一バリッドビットを書き込むことができる場合に有効を示す。そのため、書込み信号６５１〜６５ｎが０の時に書込み信号を有効にする（例えば、書込み信号として１を書き込む）。
【００７１】
このように、バリッドビットレジスタ２がリセット手段を有することにより、バリッドビットメモリ２１〜２ｊに格納される第二バリッドビットの全てを同時に１クロックでクリアすることができる。これにより、各ウェイのバリッドビット３６１〜３６ｎを１クロックでクリアすることが可能となる。
【００７２】
さらに、第二バリットビットの全てを同時にクリアした後、書込み信号３３０によりタグメモリ１にアドレスタグを書き込むとともに所望の第一バリッドビットを０として書き込むことができる。これにより、バリッドビットレジスタ２のフラッシュ後、第二バリッドビット全てをクリアするとともに、アドレスタグを書き込む第一バリッドビット以外の全ての第一バリッドビットを同時にクリアすることができる。
【００７３】
また、書込み信号３３０によりタグメモリ１にアドレスタグを書き込むとともに第一バリッドビットをクリアすることができるため、新たにタグメモリ１のバリッドビットをクリアする手段を設けることなく、第一バリッドビットをクリアすることができる。そのため、図４に示す比較例と比べ、キャッシュメモリの回路規模を縮小することができる。
【００７４】
図２及び図３を用いて、キャッシュメモリからアドレスタグを読み出す動作、キャッシュメモリにアドレスタグを書き込む動作について順に説明する。ここで、図３において、時刻ｔ１をクロック信号が立ち上がる時刻（０から１へと変化する時刻）としている。
【００７５】
図３（ａ）は、キャッシュメモリからアドレスタグを読み出す動作を示すタイミングチャートである。アドレスタグをタグメモリ１１〜１ｎから読み出す際、タグメモリ１１〜１ｎの一つにｋビットのインデックス信号３００が入力される（時刻ｔ２）。この入力されたインデックス信号３００に対応するインデックスをタグメモリ１１〜１ｎ内のアドレスとして、そのタグメモリ１１〜１ｎの各セットのブロックからｍビットのアドレスタグ３５１〜３５ｎが読み出される。このとき、タグメモリ１１〜１ｎの各ブロックからは、アドレスタグ３５１〜３５ｎとともに、１ビットの第一バリッドビット６６１〜６６ｎがクロックに同期して出力される。
【００７６】
バリッドビットレジスタ２では、インデックス信号３００を入力され、エンコーダ５０では１つのレジスタ出力信号６００が選択されてバリッドビットレジスタ２から出力される（時刻ｔ３）。レジスタ出力信号６００は、ラッチ１２０においてラッチされ、クロックに同期する第二バリッドビット６７０として出力される（時刻ｔ４）。このとき、クロックを介して、第二バリッドビット６７０は、タグメモリ１１〜１ｎからの第一バリッドビット６６１〜６６ｎの出力と同期する。その後、この第二バリッドビット６７０は、タグメモリ１１〜１ｎから出力された第一バリッドビット６６１〜６６ｎの各々と、論理ゲートＡＮＤ６１〜６ｎで論理積をとられ、各ウェイからバリッドビット３６１〜３６ｎとして出力される（時刻ｔ５）。
【００７７】
前述のように、アドレスタグ３５１〜３５ｎ及びバリッドビット３６１〜３６ｎは、比較器に送られてアドレス比較に用いられる。
【００７８】
図３（ｂ）は、キャッシュメモリにアドレスタグを書き込む動作を示すタイミングチャートである。アドレスタグをタグメモリ１１〜１ｎに書き込む際、ｎビットの書込み信号３３０が入力される。入力された書込み信号３３０は、タグメモリ１１〜１ｎのうちの書き込むウェイに対応する書込み信号３３１〜３３ｎが選択され、書込み信号３３１〜３３ｎのうちの１ビットがアクティブになる。すなわち、書込み信号３３１〜３３ｎのうちの１ビットが有効な論理値１を有し、それ以外の書込み信号３３１〜３３ｎの全てが無効な論理値０を有する。
【００７９】
バリッドビットレジスタ２のエンコーダ５０にｋビットのインデックス信号３００が入力される（時刻ｔ２）。このインデックス信号３００に基づいて、バリッドビットメモリ２１〜２ｊから出力される出力信号５０１〜５０ｊのうちのひとつが選択されてレジスタ出力信号６００として出力される（時刻ｔ３）。
【００８０】
また、時刻ｔ２において、ｍビットのアドレスタグ信号３１０が、タグメモリ１１〜１ｎへの入力データとして入力される。このｍビットのアドレスタグに第一バリッドビットに該当する１ビットが付加され、第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎとしてタグメモリ１１〜１ｎに入力される。
【００８１】
レジスタ出力信号６００は、論理ゲートＯＲ９１〜９ｎにおいて、書込み信号３３１〜３３ｎとの間で論理和をとられ、出力信号６２１〜６２ｎとして出力される。このとき、出力信号６２１〜６２ｎのうち、書込み信号３３１〜３３ｎでアクティブなものから出力される信号は、有効な論理値１を有し、アクティブでないものから出力されるものは無効な論理値０を有する。
【００８２】
出力信号６２１〜６２ｎは、論理ゲートＡＮＤ１０１〜１０ｎで論理積をとられ、タグメモリ１１〜１ｎに入力される第一バリッドビット６３１〜６３ｎが生成される。このとき、書込み信号３３０で選択されたタグメモリ１１〜１ｎのいずれか一つに対する第一バリッドビットは、有効を示し、論理値１を有する。書込み信号３３０で選択されなかったタグメモリ１１〜１ｎに対する他の第一バリッドビットは無効を示す（例えば、論理値０を有する）ことになる。
【００８３】
タグメモリ１１〜１ｎの各ウェイに対応した書込み信号３３１〜３３ｎは、論理ゲートＯＲ１１１〜１１ｎにおいて、出力信号６２１〜６２ｎの反転信号との間で論理和をとられて書込み信号６５１〜６５ｎとして出力される（時刻ｔ６）。出力された書込み信号６５１〜６５ｎは、各ウェイにアドレスタグやバリッドビットを書き込むことができる場合に有効を示す（例えば、論理値１を有する）。書込み信号６５１〜６５ｎが有効となるウェイが定まることにより、書き込むウェイが選択され、（ｍ＋１）ビットの第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎが書き込まれる。
【００８４】
なお、インデックス信号３００は、タグメモリ１１〜１ｎの一つに入力される。これにより、第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎが書き込まれるセットが定まり、書込み信号３３０が書込み動作を行わせるウェイに対応するセットのブロックに第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎが書き込まれる。
【００８５】
また、選択されたタグメモリにアドレスタグ及び第一バリッドビットを書き込む際、バリッドビットレジスタ２に第二バリッドビットがクロックに同期して書き込まれる。バリッドビットレジスタ２では、ｎビットのインデックス信号３００をデコードした結果ｊ＝２ｋ個のバリッドビットメモリ２１〜２ｊから１つバリッドビットメモリが選択され、選択されたバリッドビットメモリに１ビットのバリッドビット信号３２１がクロックに同期して格納される。
【００８６】
前述のように、バリッドビットレジスタ２のフラッシュにより、第二バリッドビッドのクリアを行うことができる。フラッシュ信号３４０がアクティブになったとき、全バリッドビットレジスタは１クロックでリセットされ、無効を示す論理値０を記憶する。そして、タグメモリ１１〜１ｎに格納される第一バリッドビットは、アドレスを書き込まれるセットを除いてクリアされ、無効を示す論理値０を書き込まれる。この書込みは、第一バリッドビットが付加されたアドレスタグ６４１〜６４ｎがタグメモリ１１〜１ｎに入力され、さらに書込み信号６５１〜６５ｎが入力されて書込みが始まったのに遅れて行われる（時刻ｔ７）。
【００８７】
バリッドビットレジスタ２のフラッシュ以降、タグメモリ１１〜１ｎから出力される第一バリッドビット６６１〜６６ｎが有効を示す論理値１の場合であっても、第二バリッドビット６７０が無効を示す論理値０を記憶していると、バリッドビット３６１〜３５ｎが無効の論理値０となる。すなわち、第一バリッドビットが有効／無効に関わらず、第二バリッドビット６７０が無効を示す場合には、各ウェイのバリッドビット３６１〜３６ｎは無効（論理値０）を示す。
【００８８】
フラッシュ以降、タグメモリ１１〜１ｎへの書込みを行う際、第二バリッドビットの全てが無効（論理値０）であるため、バリッドビットレジスタ２からのレジスタ出力信号６００が０となる。そして、タグメモリ１１〜１ｎに書き込むとき、ｎビットの書込み信号３３０の全ては０ではなく、選択されたウェイでは書込み信号３３１〜３３ｎが有効（論理値１）となる。そのため、論理ゲートＯＲ９１〜９ｎから出力される出力信号６２１〜６２ｎが論理値０となることにより、論理ゲートＡＮＤ１０１〜１０ｎで論理積をとられて出力された第一バリッドビット６３１〜６３ｎは無効を示す（論理値が０となる）。
【００８９】
そして、論理ゲートＯＲ１１１〜１１ｎで論理和をとられて出力されるメモリへの書込み信号６５１〜６５ｎが有効を示す（論理値が１になる）ことにより、クロックに同期して第一バリッドビットに論理値０が書き込まれる。そのため、フラッシュ以降にアドレスタグを書き込む際、バリッドビットレジスタに論理値１が書き込まれていた場合であっても、選択されなかったウェイ（非選択ウェイ）のタグメモリ１上の第一バリッドビットを０に書き換えることができる。これにより、タグメモリ１上の第一バリッドビットをクリアすることができる。
【００９０】
以上のように、本実施形態におけるキャッシュメモリでは、複数のタグメモリ１１〜１ｎに対して、単数のバリッドビットレジスタ２を共通に接続する。そして、アドレスタグの読み出しや書込み、バリッドビット３６１〜３６ｎの生成を行う。このとき、バリッドビット３６１〜３６ｎは、第一バリッドビット６６１〜６６ｎと第二バリッドビット６７０とから生成される。
【００９１】
さらに、バリッドビットレジスタ２がリセット手段を有するため、バリッドビットメモリ２１〜２ｊに格納される第二バリッドビットの全てを同時に１クロックでクリアすることができる。これにより、第一バリッドビット６６１〜６６ｎと第二バリッドビット６７０から生成されるバリッドビット３６１〜３６ｎを全て同時に１クロックで効率良くクリアすることができる。
【００９２】
このようなｎウェイ・セットアソシエイティブ方式のキャッシュメモリでは、従来のｎウェイ・セットアソシエイティブ方式のキャッシュメモリに比べて１／ｎとすることができる。そのため、バリッドビットレジスタ２を一つ設けることにより、キャッシュメモリの回路規模を縮小することができる。
【００９３】
そして、タグメモリ１にアドレスタグを書き込むとともに書込み信号３３０によりタグメモリ１に格納される第一バリッドビットをクリアすることができる。そのため、新たに第一バリッドビットをクリアする手段を設けることなく、第一バリッドビットをクリアすることができる。そのため、キャッシュメモリの回路規模をより一層縮小することができる。
【００９４】
このようにキャッシュメモリの回路規模を縮小させることができるため、消費電力の低減を行うことができる。また、キャッシュ回路の規模を縮小させ、複雑化するのを回避することができるため、キャッシュメモリの高速化を実現することができる。
【００９５】
そして、バリッドビットレジスタ２をフラッシュして第二バリットビットの全てを同時にクリアした後、アドレスタグを書き込む際に第一バリッドビット以外の全てのバリッドビットを同時にクリアすることができる。そのため、バリッドビットを効率良くクリアすることができ、バリッドビットのクリア時における動作時間の短縮が可能となる。また、バリッドビットを効率良くクリアし、クリア動作時間を短縮することができるため、高速に動作を行うキャッシュメモリを得ることができる。
【００９６】
なお、本発明の実施の形態においては、ＣＰＵとメインメモリとの間に設けられるキャッシュメモリについて説明したが、本発明は、メインメモリと補助記憶装置との間に設けられるディスクキャッシュにも適応することができる。ディスクキャッシュに適応する場合であっても、ディスクキャッシュの回路規模の縮小、消費電力の低減、ディスクキャッシュの高速化が可能となる。さらに、キャッシュメモリとディスクキャッシュの双方に用いることにより、コンピュータ全体の消費電力の低減、高速化を実現することができる。
【００９７】
【発明の効果】
本発明によれば、クリア動作を効率良く行うことができ、回路規模を縮小させることができるキャッシュメモリ及びその制御方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるキャッシュメモリを用いたシステムの一構成例を示す概略模式図である。
【図２】本発明の実施の形態におけるキャッシュメモリの要部の一構成例を示す模式図である。
【図３】本発明の実施の形態におけるキャッシュメモリの動作を示すタイミングチャートである。
【図４】本発明の実施の形態におけるキャッシュメモリに対する一比較例を示す模式図である。
【符号の説明】
１　タグメモリ、　２　バリッドビットレジスタ、　３　データメモリ、　４　ＣＰＵ、　３０　デコーダ、　５０　エンコーダ、　１００１　タグメモリ、　１００２１，・・・，１００２ｎ　バリッドビットレジスタ、　１０３１，・・・，１０３ｎ　デコーダ、　１０５１，・・・，１０５ｎ　エンコーダ
【図１】
2004046593.tif 000003
【図２】
2004046593.tif 000004
【図３】
2004046593.tif 000005
【図４】
2004046593.tif 000006