(57)【要約】【課題】  安価な構成で、かつ消費電力を低減できるキャッシュメモリ装置及びその制御方法を提供すること。【解決手段】  本発明にかかるキャッシュメモリ装置は、タグとタグ用フラグとを記憶するタグ格納部１３０と、キャッシュデータとキャッシュデータ用フラグとを記憶するデータ格納部１４０と、インデックスに対応したタグ及びタグ用フラグをタグ格納部１３０から読み出し、読み出したタグ及びタグ用フラグを判定するアドレス制御部１１０と、この判定に応じて、タグに対応するキャッシュデータ及びキャッシュデータ用フラグをデータ格納部１４０から読み出し、読み出したキャッシュデータ用フラグを判定し、この判定に応じて、読み出したキャッシュデータもしくは外部メモリから取得する外部データをデータ処理ユニットに出力するデータ制御部１２０と、を備えるものである。【選択図】  図１
2006318080.tif 000002
【特許請求の範囲】
【請求項１】
データ処理ユニットから入力される入力アドレスに基づいて、キャッシュデータもしくは外部メモリの外部データを出力するキャッシュメモリ装置であって、
前記入力アドレスに含まれるタグと前記タグの有効／無効を示すタグ用フラグとをそれぞれ複数記憶し、ＤＲＡＭで構成されたタグ記憶部と、
前記キャッシュデータと前記キャッシュデータの有効／無効を示すキャッシュデータ用フラグとをそれぞれ複数記憶し、ＤＲＡＭで構成されたキャッシュデータ記憶部と、
前記入力アドレスに含まれるインデックスに対応した前記タグ及び前記タグ用フラグを前記タグ記憶部から読み出すタグ読み出し部と、
前記読み出したタグ及びタグ用フラグを判定するタグ判定部と、
前記タグ判定部の判定に応じて、前記タグに対応する前記キャッシュデータ及び前記キャッシュデータ用フラグを前記キャッシュデータ記憶部から読み出すキャッシュデータ読み出し部と、
前記読み出したキャッシュデータ用フラグを判定するキャッシュデータ判定部と、
前記キャッシュデータ判定部の判定に応じて、前記読み出したキャッシュデータもしくは前記外部メモリから取得する外部データを前記データ処理ユニットに出力するキャッシュデータ出力部と、
を備えるキャッシュメモリ装置。
【請求項２】
前記タグ記憶部と前記キャッシュデータ記憶部とは、それぞれ異なるメモリセルアレイで構成されている、
請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記タグ読み出し部は、前記タグ記憶部から前記タグ及び前記タグ用フラグを一度に読み出す、
請求項１又は２に記載のキャッシュメモリ装置。
【請求項４】
前記キャッシュデータ読み出し部は、前記キャッシュデータ記憶部から前記キャッシュデータ及び前記キャッシュデータ用フラグを一度に読み出す、
請求項１乃至３のいずれか一つに記載のキャッシュメモリ装置。
【請求項５】
前記キャッシュデータ出力部は、前記外部メモリの外部データを出力する場合、前記キャッシュデータ記憶部のキャッシュデータに前記外部データを書き込むとともに、前記キャッシュデータ用フラグを有効に設定する、
請求項１乃至４のいずれか一つに記載のキャッシュメモリ装置。
【請求項６】
前記キャッシュデータ読み出し部は、前記タグ判定部が前記タグ用フラグを有効と判定した場合、前記キャッシュデータ及び前記キャッシュデータ用フラグを読み出しを行い、
前記キャッシュデータ出力部は、前記タグ判定部が前記タグ用フラグを無効と判定した場合、前記外部メモリの外部データを出力する、
請求項１乃至５のいずれか一つに記載のキャッシュメモリ装置。
【請求項７】
前記キャッシュデータ出力部は、前記キャッシュデータ判定部が前記キャッシュデータ用フラグを有効と判定した場合、前記読み出したキャッシュデータ出力し、前記キャッシュデータ判定部が前記キャッシュデータ用フラグを無効と判定した場合、前記外部メモリの外部データを出力する、
請求項１乃至６のいずれか一つに記載のキャッシュメモリ装置。
【請求項８】
前記タグ記憶部において、前記タグ用フラグを記憶するメモリセルのリフレッシュ時間は、前記タグを記憶するメモリセルのリフレッシュ時間よりも短い、
請求項１乃至７のいずれか一つに記載のキャッシュメモリ装置。
【請求項９】
前記キャッシュデータ記憶部において、前記キャッシュデータ用フラグを記憶するメモリセルのリフレッシュ時間は、前記キャッシュデータを記憶するメモリセルのリフレッシュ時間よりも短い、
請求項１乃至９のいずれか一つに記載のキャッシュメモリ装置。
【請求項１０】
データ処理ユニットから入力される入力アドレスに基づいて、キャッシュデータもしくは外部メモリの外部データを出力するキャッシュメモリ装置の制御方法であって、
ＤＲＡＭで構成されたタグ記憶部に、前記入力アドレスに含まれるタグと前記タグの有効／無効を示すタグ用フラグとをそれぞれ複数記憶し、
ＤＲＡＭで構成されたキャッシュデータ記憶部に、前記キャッシュデータと前記キャッシュデータの有効／無効を示すキャッシュデータ用フラグとをそれぞれ複数記憶し、
前記入力アドレスに含まれるインデックスに対応した前記タグ及び前記タグ用フラグを前記タグ記憶部から読み出し、
前記読み出したタグ及びタグ用フラグを判定し、
前記タグ及びタグ用フラグの判定に応じて、前記タグに対応する前記キャッシュデータ及び前記キャッシュデータ用フラグを前記キャッシュデータ記憶部から読み出し、
前記読み出したキャッシュデータ用フラグを判定し、
前記キャッシュデータ用フラグの判定に応じて、前記読み出したキャッシュデータもしくは前記外部メモリから取得する外部データを前記データ処理ユニットに出力する、
キャッシュメモリ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置及びその制御方法に関し、特に、ＣＰＵ等のデータ処理ユニットのメモリアクセス時間を短縮するためのキャッシュメモリ装置及びその制御方法に関する。
【背景技術】
【０００２】
従来から、ＣＰＵ等のメインメモリに対するメモリアクセス時間を短縮するためにキャッシュメモリが広く利用されている。キャッシュメモリには、ＣＰＵが必要とする可能性が高いデータが、キャッシュデータとしてメインメモリからコピーされて記憶されており、このキャッシュデータを用いることでメインメモリへのアクセス回数を抑え、メモリアクセスの高速化を図っている。
【０００３】
ＣＰＵからアクセスしようとしたメインメモリのアドレスに記憶されているデータがキャッシュメモリに存在するときはヒットと呼ばれ、キャッシュメモリのデータがＣＰＵに与えられる。また、ＣＰＵがアクセスしようとしたアドレスに記憶されているデータがキャッシュメモリに存在しないときは、ミスヒットと呼ばれ、メインメモリのデータがＣＰＵに与えられると同時に、そのデータがキャッシュメモリに格納される。
【０００４】
キャッシュメモリは一般に、複数のタグとそれぞれのタグに対応したデータとを保持するキャッシュテーブルを備えており、入力アドレスに含まれるタグがキャッシュテーブルに格納されたタグと比較される。タグが一致した際には、一致したタグに対応したデータがキャッシュテーブルから選択され、ＣＰＵ等に供給される。
【０００５】
また、このキャッシュメモリには、一般的に高速性を重視し、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）が使用されている。一方、コスト低減や大容量化を図るため、キャッシュメモリにＳＲＡＭではなくＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）を用いたキャッシュメモリ装置が知られている（例えば、特許文献１参照）。
【０００６】
一般に、ＳＲＡＭの１つのセルは、４個もしくは６個のトランジスタで構成され、ＤＲＡＭの１つのセルは、１個のトランジスタと１個のキャパシタで構成されるため、ＤＲＡＭの方が、ビット当たりのコストが低く、小さいサイズで構成することができる。また、ＤＲＡＭは、キャパシタの放電によってセルの状態が失われるため、セルの記憶状態を保持するには、周期的にリフレッシュし、キャパシタに電荷を充電する必要がある。
【０００７】
図６は、ＤＲＡＭを用いた従来のキャッシュメモリ装置のメモリセルアレイとデータ構造を示している。図６（ａ）は、ＣＰＵからキャッシュメモリ装置へ入力される入力アドレス、図６（ｂ）は、ＣＰＵとキャッシュメモリ装置との間で入出力される入出力データ、図６（ｃ）は、キャッシュメモリ装置のメモリセルアレイと格納されるデータ構造を示している。
【０００８】
図６（ａ）に示すように、入力アドレスには、インデックス、タグ、及びオフセットが含まれている。図６（ｂ）に示すように、入出力データには、入出力するデータが含まれている。図６（ｃ）に示すように、従来のキャッシュメモリ装置では、１つのＤＲＡＭメモリセルアレイ６００に、キャッシュテーブル６１０が格納される。
【０００９】
キャッシュテーブル６１０は、複数のタグとこれらのタグに対応するデータが格納される。キャッシュテーブル６１０は、各キャッシュライン（行）６１１ごとに、読み出しや書き込みのアクセスが行われる。各キャッシュライン６１１にはインデックスが付され、入力アドレスのインデックスに対応するキャッシュライン６１１がアクセス対象となる。各キャッシュライン６１１には、タグと、タグに対応するデータと、そのデータの有効／無効（活性／非活性）を示すための活性化ビット（Ｖａｌｉｄ  ｂｉｔ：Ｖ）が設けられている。活性化ビット「１」は、そのキャッシュライン６１１のデータが有効（活性）であることを示し、活性化ビット「０」は、そのキャッシュライン６１１のデータが無効（非活性）であることを示す。キャッシュライン６１１のデータは、複数のオフセットに分割されており、メインメモリのデータが入力アドレスのオフセットに対応する位置に格納される。
【００１０】
例えば、従来のキャッシュメモリ装置は、ＣＰＵからアクセスがあると、入力アドレスをデコードし、入力アドレスのインデックスに対応するキャッシュライン６１１の全体を、メモリセルアレイ６００から読み出す。そして、読み出したキャッシュライン６１１のタグと、入力アドレスのタグとが一致するか判定する。タグ一致した場合には、さらに、活性化ビットが有効かどうか判定する。活性化ビットが「１」の場合には、読み出したキャッシュライン６１１から、入力アドレスのオフセットに対応するデータを取得しＣＰＵへ出力する。
【００１１】
また、読み出したキャッシュライン６１１のタグと、入力アドレスのタグとが不一致の場合や、活性化ビットが「０」（無効）の場合には、メインメモリにアクセスし、メインメモリから読み出したデータをＣＰＵへ出力する。このとき、キャッシュライン６１１に、タグ、メインメモリのデータ、及び活性化ビット「１」を書き込む。
【００１２】
このように、ＣＰＵからアクセスがあるたびに、メモリセルアレイ６００の該当するキャッシュライン６１１には、読み出しや書き込みのアクセスが行われる。したがって、キャッシュライン６１１にアクセスすることによって、キャッシュライン６１１のメモリセルに電荷が充電されてリフレッシュされたことになり、各メモリセルの状態が保持される。
【００１３】
すなわち、ＤＲＡＭの特性表で規定されたリフレッシュ時間内にＣＰＵからアクセスがあれば、キャッシュライン６１１のデータや活性化ビットはメモリセルに維持され、このリフレッシュ時間内にＣＰＵからアクセスがなければ、キャッシュライン６１１のデータや活性化ビットはメモリセルから自動的に消滅する。
【００１４】
すなわち、従来のキャッシュメモリ装置では、ＤＲＡＭを使用することで、ＤＲＡＭの定期的にリフレッシュが必要という特性を利用し、効率よくキャッシュ動作を実現している。
【特許文献１】特開平６−３３７８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、従来のキャッシュメモリ装置では、ＣＰＵからのアクセスをＤＲＡＭのリフレッシュに利用するために、ＣＰＵからのアクセスのたびにデータまでを含むキャッシュライン全体を読み出している。したがって、タグがヒットせず、データにアクセス不要な場合でも、常に、データも読み出すため、消費電力が大きいという問題があった。例えば、入出力データのサイズを６４ビットとし、オフセットを３ビットとすると、キャッシュラインのデータの最大サイズは６４×８＝５１２ビットとなり、５１２ビット読み出すための電力を無駄に消費することになってしまう。
【課題を解決するための手段】
【００１６】
本発明にかかるキャッシュメモリ装置は、データ処理ユニットから入力される入力アドレスに基づいて、キャッシュデータもしくは外部メモリの外部データを出力するキャッシュメモリ装置であって、前記入力アドレスに含まれるタグと前記タグの有効／無効を示すタグ用フラグとをそれぞれ複数記憶し、ＤＲＡＭで構成されたタグ記憶部と、前記キャッシュデータと前記キャッシュデータの有効／無効を示すキャッシュデータ用フラグとをそれぞれ複数記憶し、ＤＲＡＭで構成されたキャッシュデータ記憶部と、前記入力アドレスに含まれるインデックスに対応した前記タグ及び前記タグ用フラグを前記タグ記憶部から読み出すタグ読み出し部と、前記読み出したタグ及びタグ用フラグを判定するタグ判定部と、前記タグ判定部の判定に応じて、前記タグに対応する前記キャッシュデータ及び前記キャッシュデータ用フラグを前記キャッシュデータ記憶部から読み出すキャッシュデータ読み出し部と、前記読み出したキャッシュデータ用フラグを判定するキャッシュデータ判定部と、前記キャッシュデータ判定部の判定に応じて、前記読み出したキャッシュデータもしくは前記外部メモリから取得する外部データを前記データ処理ユニットに出力するキャッシュデータ出力部と、を備えるものである。
【００１７】
本発明にかかるキャッシュメモリ装置によれば、データ処理ユニットからのアクセス時、キャッシュデータ記憶部にはアクセスせずにタグ記憶部のみアクセスするようになるため、消費電力を低減することができる。また、タグ用フラグとは別にキャッシュデータ用フラグを設けることで、タグ記憶部とキャッシュデータ記憶部との状態が不一致となった場合でも、正確にデータの内容を保障することができる。
【００１８】
本発明にかかるキャッシュメモリ装置の制御方法は、データ処理ユニットから入力される入力アドレスに基づいて、キャッシュデータもしくは外部メモリの外部データを出力するキャッシュメモリ装置の制御方法であって、ＤＲＡＭで構成されたタグ記憶部に、前記入力アドレスに含まれるタグと前記タグの有効／無効を示すタグ用フラグとをそれぞれ複数記憶し、ＤＲＡＭで構成されたキャッシュデータ記憶部に、前記キャッシュデータと前記キャッシュデータの有効／無効を示すキャッシュデータ用フラグとをそれぞれ複数記憶し、前記入力アドレスに含まれるインデックスに対応した前記タグ及び前記タグ用フラグを前記タグ記憶部から読み出し、前記読み出したタグ及びタグ用フラグを判定し、前記タグ及びタグ用フラグの判定に応じて、前記タグに対応する前記キャッシュデータ及び前記キャッシュデータ用フラグを前記キャッシュデータ記憶部から読み出し、前記読み出したキャッシュデータ用フラグを判定し、前記キャッシュデータ用フラグの判定に応じて、前記読み出したキャッシュデータもしくは前記外部メモリから取得する外部データを前記データ処理ユニットに出力するものである。
【００１９】
本発明にかかるキャッシュメモリ装置の制御方法によれば、データ処理ユニットからのアクセス時、キャッシュデータ記憶部にはアクセスせずにタグ記憶部のみアクセスするようになるため、消費電力を低減することができる。また、タグ用フラグとは別にキャッシュデータ用フラグを設けることで、タグ記憶部とキャッシュデータ記憶部との状態が不一致となった場合でも、正確にデータの内容を保障することができる。
【発明の効果】
【００２０】
本発明によれば、安価な構成で、かつ消費電力を低減できるキャッシュメモリ装置及びその制御方法を提供することができる。
【発明を実施するための最良の形態】
【００２１】
発明の実施の形態１．
まず、本発明の実施の形態１にかかるキャッシュメモリ装置について説明する。本実施形態にかかるキャッシュメモリ装置は、第１のメモリセルアレイにタグとタグの有効性を示すフラグを格納し、第２のメモリセルアレイにデータとデータの有効性を示すフラグを格納することを特徴としている。
【００２２】
ここで、図１を用いて、本実施形態にかかるキャッシュメモリ装置の構成について説明する。このキャッシュメモリ装置１は、ＣＰＵ（データ処理ユニット）２とメインメモリ（外部メモリ）３の間に設けられており、ＣＰＵ２から入力される入力アドレスに基づいて、キャッシュメモリ装置１内のデータ（キャッシュデータ）もしくはメインメモリ３のデータ（外部データ）を出力する。例えば、キャッシュメモリ装置１は、ＣＰＵ２からアクセスがあると、キャッシュメモリに該当するデータが存在する（ヒットした）場合、キャッシュメモリ装置１の内部に記憶したデータをＣＰＵ２へ出力し、キャッシュメモリに該当するデータが存在しない（ミスヒットした）場合、メインメモリ３のデータを取得しＣＰＵ２へ転送する。また、キャッシュメモリ装置１とメインメモリ３の間はバスを介して接続されている。図において、キャッシュメモリ装置１とＣＰＵ２は、直接接続されているが、内部バスなどを介して接続することもできる。
【００２３】
図に示されるように、キャッシュメモリ装置１は、アドレス制御部１１０、データ制御部１２０、タグ格納部１３０、データ格納部１４０を備えている。
【００２４】
アドレス制御部１１０は、ＣＰＵ２から入力される入力アドレスを解析し、入力アドレスのインデックスにしたがって、タグ格納部１３０からタグと活性化ビットを読み出すタグ読み出し部であるとともに、読み出したタグの判定や活性化ビットの判定を行う判定部である。また、アドレス制御部１１０は、タグ格納部１３０のタグと活性化ビットの更新や、入力アドレスのインデックスとオフセットのデータ制御部１２０への出力を行う。例えば、アドレス制御部１１０は、デコーダや比較器などにより構成することができる。
【００２５】
データ制御部１２０は、アドレス制御部１１０のタグや活性化ビットの判定に応じて、与えられるインデックスとオフセットにしたがって、データ格納部１４０のデータと活性化ビットを読み出す読み出し部であるとともに、読み出した活性化ビットを判定する判定部である。データ制御部１２０は、読み出した活性化ビットの判定に応じて、読み出したデータもしくはメインメモリ３から取得するデータをＣＰＵ２へ出力する出力部でもある。また、データ制御部１２０は、メインメモリ３データを出力する場合、データ格納部１４０のデータと活性化ビットを更新する、例えば、データ制御部１２０は、デコーダや比較器などにより構成することができる。
【００２６】
タグ格納部１３０は、タグとタグの有効／無効（活性／非活性）を示す活性化ビット（タグ用フラグ）を格納する。タグ格納部１３０のタグ領域１３１に、ＣＰＵ２からの入力アドレスに含まれるタグが格納され、タグ格納部１３０のフラグ領域１３２に、タグの活性化ビットが格納される。タグ格納部１３０は、後述するように、ＤＲＡＭメモリセルアレイから構成される。
【００２７】
データ格納部１４０は、データ（キャッシュデータ）とデータの有効／無効（活性／非活性）を示す活性化ビット（キャッシュデータ用フラグ）を格納する。データ格納部１４０のデータ領域１４１に、メインメモリ３から取得したデータが格納され、データ格納部１４０のフラグ領域１４２に、データの活性化ビットが格納される。データ格納部１４０は、後述するようにＤＲＡＭメモリセルアレイから構成される。
【００２８】
図２は、本実施形態にかかるキャッシュメモリ装置のメモリセルアレイとデータ構造を示している。図２（ａ）は、ＣＰＵ２からキャッシュメモリ装置１へ入力される入力アドレス、図２（ｂ）は、ＣＰＵ２とキャッシュメモリ装置１との間で入出力される入出力データ、図２（ｃ）は、キャッシュメモリ装置１のメモリセルアレイと格納されるデータ構造を示している。
【００２９】
図２（ａ）に示すように、ＣＰＵ２から入力される入力アドレスには、インデックス、タグ、及びオフセットが含まれている。例えば、入力アドレスのサイズは、３２ビットであり、インデックスは１７ビット、タグは１２ビット、オフセットは３ビットである。図２（ｂ）に示すように、入出力データには、入出力するデータが含まれている。例えば、入出力データのサイズは、６４ビットである。
【００３０】
図２（ｃ）に示すように、キャッシュメモリ装置１には、ＤＲＡＭメモリセルアレイ２１０と２２０が設けられている。ＤＲＡＭメモリセルアレイ２１０は、タグ格納部１３０を構成するメモリであり、ＤＲＡＭメモリセルアレイ２２０は、データ格納部１４０を構成するメモリである。タグ格納部１３０とデータ格納部１４０とをＤＲＡＭで構成することにより、記憶状態を保持するためにはリフレッシュ時間内にリフレッシュ（アクセス）が必要というＤＲＡＭの特性を利用して、効率よくキャッシュメモリを実現することができる。例えば、ＤＲＡＭメモリセルアレイ２１０とＤＲＡＭメモリセルアレイ２２０のリフレッシュ時間は、ほぼ同じである。
【００３１】
ＤＲＡＭメモリセルアレイ２１０には、タグ領域１３１とフラグ領域１３２が含まれ、タグ領域１３１とフラグ領域１３２にタグテーブル２１１が格納される。例えば、フラグ領域１３２のリフレッシュ時間は、タグ領域１３１のリフレッシュ時間とほぼ同じであるが、フラグ領域１３２のリフレッシュ時間をより短くしてもよい。フラグ領域１３２のリフレッシュ時間をより短くすることで、タグよりも活性化ビットが早く消滅するため、より確実にタグの有効性を保障することができる。例えば、フラグ領域１３２を構成するメモリセルのキャパシタの容量をタグ領域１３１を構成するメモリセルのキャパシタよりも小さくすることで、リフレッシュ時間を短くすることができる。
【００３２】
タグテーブル２１１は、各タグライン（行）２１２ごとに、読み出しや書き込みのアクセスが行われる。各タグライン２１２にはインデックスが付され、入力アドレスのインデックスに対応するタグライン２１２がアクセス対象となる。各タグライン２１２には、タグと、そのタグの有効／無効を示す活性化ビット（Ｖａｌｉｄ  ｂｉｔ：Ｖ）が設けられている。活性化ビット「１」は、そのタグライン２１２のタグが有効（活性）であることを示し、活性化ビット「０」は、そのタグライン２１２のデータが無効（非活性）であることを示す。
【００３３】
また、本実施形態のキャッシュメモリ装置１は、キャッシュ方式として、Ｎウェイセットアソシアティブマッピング方式をとっている。１つのインデックスに対し１つのタグのみが対応するダイレクトマッピング方式に対して、Ｎウェイセットアソシアティブマッピング方式は、１つのインデックスに対しＮ個のタグを対応付けられるため、よりキャッシュのヒット率を向上することができる。キャッシュメモリ装置１では、Ｎウェイセットアソシアティブマッピング方式のウェイの数分のタグテーブル２１１が設けられる。２ウェイの場合、タグテーブル２１１は、２つ設けられる（２１１ａ，２１１ｂ）。例えば、ウェイ１用のテーブルがタグテーブル２１１ａであり、ウェイ２用のテーブルがタグテーブル２１１ｂである。
【００３４】
ＤＲＡＭメモリセルアレイ２２０には、データ領域１４１とフラグ領域１４２が含まれ、データ領域１４１とフラグ領域１４２にデータテーブル２２１が格納される。ＤＲＡＭメモリセルアレイ２２０と同様に、フラグ領域１４２のリフレッシュ時間は、データ領域１４１のリフレッシュ時間とほぼ同じであるが、より確実にタグの有効性を保障するため、フラグ領域１４２のリフレッシュ時間をより短くしてもよい。
【００３５】
データテーブル２２１は、各データライン（行）２２２ごとに、読み出しや書き込みのアクセスが行われる。各データライン２２２にはインデックスが付され、入力アドレスのインデックスに対応するデータライン２２２がアクセス対象となる。各データライン２２２には、データと、そのデータの有効／無効を示す活性化ビット（Ｖａｌｉｄ  ｂｉｔ：Ｖ）が設けられている。タグテーブル２１１と同様に、活性化ビット「１」は、そのデータライン２２２のデータが有効（活性）であることを示し、活性化ビット「０」は、そのデータライン２２２のデータが無効（非活性）であることを示す。データライン２２２のデータは、複数のオフセットに分割されており、メインメモリのデータが入力アドレスのオフセットに対応する位置に格納される。また、データテーブル２２１は、タグテーブルに対応して設けられるため、タグテーブル２１１と同様にウェイの数分設けられる。（２２１ａ，２２１ｂ）。
【００３６】
次に、図３のフローチャートを用いて、本実施形態にかかるキャッシュメモリ装置の動作について説明する。図３は、キャッシュメモリ装置１において、ＣＰＵ２からアクセスがあったときの動作を示している。
【００３７】
まず、ＣＰＵ２から入力アドレスがキャッシュメモリ装置１へ入力されると、アドレス制御部１１０は、この入力アドレスを解析する（Ｓ３０１）。例えば、アドレス制御部１１０は、入力された入力アドレスについて、インデックス、タグ、オフセットのそれぞれをデコードし解析する。
【００３８】
次いで、アドレス制御部１１０は、タグラインを読み出すためのタグテーブル（ウェイ）を選択する（Ｓ３０２）。例えば、アドレス制御部１１０は、複数あるタグテーブル２１１の中から１つのタグテーブルを選択する。選択する順番は任意であるが、例えば、先頭のタグテーブル２１１ａを選択する。
【００３９】
次いで、アドレス制御部１１０は、インデックスに対応するタグラインを読み出す（Ｓ３０３）。例えば、アドレス制御部１１０は、Ｓ３０２で選択したタグテーブル２１１の中から、Ｓ３０１の解析で得た入力アドレスのインデックスに対応するタグライン２１２を読み出す。このとき、アドレス制御部１１０は、タグライン２１２の全体、すなわち、タグと活性化ビットとを一度に読み出す。
【００４０】
次いで、アドレス制御部１１０は、タグラインのタグが有効かどうか判定する（Ｓ３０４）。例えば、アドレス制御部１１０は、Ｓ３０３で読み出したタグライン２１２に含まれる活性化ビットが「１」かどうか判定し、活性化ビットが「１」であればタグは有効、活性化ビットが「０」であればタグは無効とする。
【００４１】
Ｓ３０４において、タグが有効であると判定された場合、アドレス制御部１１０は、タグラインのタグが入力アドレスのタグと一致するかどうか判定する（Ｓ３０５）。例えば、アドレス制御部１１０は、Ｓ３０３で読み出したタグラインに含まれるタグと、Ｓ３０１の解析で得た入力アドレスのタグとを比較し、一致するかどうか判定する。
【００４２】
Ｓ３０５において、タグが一致すると判定された場合、データ制御部１２０は、インデックスに対応するデータラインを読み出す（Ｓ３０６）。例えば、データ制御部１２０は、アドレス制御部１１０から入力アドレスのインデックス、オフセット、ウェイの番号をアドレス制御部１１０から取得し、このウェイのデータテーブル２２１の中から、このインデックスに対応するデータライン２２２を読み出す。このとき、データ制御部１２０は、データライン２２２の全体、すなわち、全オフセットのデータと活性化ビットとを一度に読み出す。尚、データ制御部１２０は、入力アドレスのオフセットに対応するデータと活性化ビットのみ読み出してもよい。
【００４３】
次いで、データ制御部１２０は、データラインのデータが有効かどうか判定する（Ｓ３０７）。データ制御部１２０は、Ｓ３０６で読み出したデータライン２２２に含まれる活性化ビットが「１」かどうか判定し、活性化ビットが「１」であればタグは有効、活性化ビットが「０」であればタグは無効とする。
【００４４】
Ｓ３０７において、データが有効であると判定された場合、キャッシュがヒットしたことになり、データ制御部１２０は、このデータをＣＰＵ２へ出力する（Ｓ３０８）。例えば、データ制御部１２０は、Ｓ３０６で読み出したデータライン２２２に含まれる、入力アドレスのオフセットに対応するデータをＣＰＵ２へ出力する。キャッシュがヒットした場合は、ここで処理が終了し、ＣＰＵ２からのアクセス待ちとなる。
【００４５】
一方、Ｓ３０４において、タグが有効ではないと判定された場合、もしくは、Ｓ３０５において、タグが一致しないと判定された場合、アドレス制御部１１０は、全てのテーブル（ウェイ）が選択済みかどうか判定する（Ｓ３０９）。例えば、アドレス制御部１１０は、複数あるタグテーブル２１１の全てが選択され、活性化ビットやタグが判定されたかどうか、すなわち、全てのタグテーブル（ウェイ）でミスヒットとなったかどうか判定する。
【００４６】
Ｓ３０９において、まだ全てのテーブルが選択されていないと判定された場合、アドレス制御部１１０は、Ｓ３０２で他のタグテーブル（ウェイ）を選択し、さらにＳ３０２以降の処理を繰り返す。
【００４７】
また、Ｓ３０７において、データが有効ではないと判定された場合や、Ｓ３０９において、すでに全てのテーブルが選択されたと判定された場合、キャッシュがミスヒットしたことになり、ミスヒット処理を行う（Ｓ３１０、Ｓ３１１）。まず、データ制御部１２０は、メインメモリ３からデータを取得する（Ｓ３１０）。例えば、アドレス制御部１１０もしくはデータ制御部１２０は、入力アドレスをメインメモリ３へ転送し、メインメモリ３から入力アドレスのデータを読み出す。
【００４８】
次いで、アドレス制御部１１０は、タグラインに書き込みを行い、データ制御部１２０は、データラインに書き込みを行う（Ｓ３１１）。例えば、アドレス制御部１１０は、タグテーブル（ウェイ）を選択し、入力アドレスのインデックスに対応するタグライン２１２へ、入力アドレスに含まれるタグを書き込むとともに、活性化ビットに「１」を書き込む。このとき、アドレス制御部１１０は、タグライン２１２へ、タグと活性化ビットを一度に書き込む。データ制御部１２０は、書き込まれたタグテーブルと同じウェイのデータテーブルを選択し、入力のインデックスに対応するデータライン２２２へ、入力アドレスのオフセットに対応する位置に、Ｓ３１０で読み出したデータを書き込むとともに、活性化ビットに「１」を書き込む。このとき、データ制御部１２０は、データライン２２２へデータと活性化ビットを一度に書き込む。
【００４９】
さらに、データ制御部１２０は、データをＣＰＵ２へ出力する（Ｓ３０８）。例えば、データ制御部１２０は、Ｓ３１０でメインメモリから読み出したデータを、ＣＰＵ２へ出力する。尚、ミスヒットの場合、Ｓ３１１の書き込みより前や、Ｓ３１１と同時に、ＣＰＵ２への出力を行ってもよい。ＣＰＵ２へのデータ出力は、できるだけ早い方が、よりＣＰＵ２のメモリアクセス時間を短縮することができる。
【００５０】
ここで、図４及び図５を用いて、本実施形態にかかるキャッシュメモリ装置の動作の具体例について説明する。
【００５１】
図４は、ウェイ１のタグテーブル２１１ａとデータテーブル２２１ａにデータが格納された後、ＤＲＡＭのリフレッシュ時間経過した場合の例である。図４（ａ）は、この例で、ＣＰＵ２からキャッシュメモリ装置１に入力される入力アドレスである。ここでは、インデックス「０００２」、タグ「０００５」、オフセット「１」である。
【００５２】
図４（ｂ）に示すように、初期状態では、タグテーブル２１１、データテーブル２２１の値は、全て「０」にリセットされている。図４（ｂ）の状態で図４（ａ）の入力アドレスが入力されると、まず、アドレス制御部１１０は、入力アドレスを解析した後、ウェイ１のタグテーブル２１１ａを選択し、タグテーブル２１１ａからインデックス「０００２」のタグラインを読み出す。初期状態では、このタグラインの活性化ビットは「０」（無効）であり、ウェイ２についても同様のため、ミスヒットとなり、データ制御部１２０によって、メインメモリ３からデータ（例えば「０１１１」）が読み出される。そして、アドレス制御部１１０は、タグテーブル２１１ａのインデックス「０００２」のタグラインへ、タグ「０００５」と活性化ビット「１」を書き込み、データ制御部１２０は、データテーブル２２１ａのインデックス「０００２」のデータラインへ、オフセット１にデータ「０１１１」と活性化ビット「１」を書き込む。そうすると、図４（ｃ）に示す状態となる。
【００５３】
図４（ｃ）の状態で、ＤＲＡＭのリフレッシュ時間内に同じ入力アドレスでＣＰＵ２からアクセスがあると、アドレス制御部１１０は、ウェイ１のタグテーブル２１１ａからインデックス「０００２」のタグラインを読み出す。このタグライン活性化ビットは「１」（有効）であり、タグラインのタグ「０００５」が入力アドレスのタグ「０００５」と一致するため、データ制御部１２０は、ウェイ１のデータテーブル２２１ａからデータラインを読み出す。このデータラインの活性化ビットは「１」（有効）のため、キャッシュヒットとなり、データ制御部１２０は、データラインのオフセット「１」のデータ「０１１１」をＣＰＵ２へ出力する。
【００５４】
その後、ＤＲＡＭのリフレッシュ時間経過しても、ＣＰＵ２からのアクセスがない場合、メモリセルのキャパシタが放電されてしまうため、図４（ｄ）に示すように、タグラインとデータライン、すなわち、タグ、タグの活性化ビット、データ、データの活性化ビットの全てが、自動的に全てクリアされ「０」となる。
【００５５】
図５は、ウェイ１のタグテーブル２１１ａ、データテーブル２２１ａとウェイ２のタグテーブル２１１ｂ、データテーブル２２１ｂにデータが格納され、ＤＲＡＭのリフレッシュ時間経過した場合の例である。図５（ａ）は、この例で、ＣＰＵ２からキャッシュメモリ装置１に入力される入力アドレスである。ここでは、インデックス「０００２」、タグ「０００６」、オフセット「１」である。
【００５６】
例えば、すでに図５（ｂ）に示すように、図４（ｃ）と同様にしてウェイ１のタグテーブル２１１ａとデータテーブル２２１ａが設定されているとする。図５（ｂ）の状態で図５（ａ）の入力アドレスが入力されると、アドレス制御部１１０は、ウェイ１のタグテーブル２１１ａを選択し、タグテーブル２１１ａからインデックス「０００２」のタグラインを読み出す。このタグライン活性化ビットは「１」（有効）であるが、タグラインのタグ「０００５」が入力アドレスのタグ「０００６」と一致しないため、アドレス制御部１１０は、ウェイ２のタグテーブル２１１ｂを選択し、タグテーブル２１１ｂからインデックス「０００２」のタグラインを読み出す。このタグラインの活性化ビットは「０」（無効）であるため、ミスヒットとなり、データ制御部１２０によって、メインメモリ３からデータ（例えば「０１１０」）が読み出される。そして、アドレス制御部１１０は、タグテーブル２１１ｂのインデックス「０００２」のタグラインへ、タグ「０００６」と活性化ビット「１」を書き込み、データ制御部１２０は、データテーブル２２１ｂのインデックス「０００２」のデータラインへ、オフセット１にデータ「０１１０」と活性化ビット「１」を書き込む。そうすると、図５（ｃ）に示す状態となる。
【００５７】
図５（ｃ）の状態で、ＤＲＡＭのリフレッシュ時間内に同じ入力アドレスでＣＰＵ２からアクセスがあると、アドレス制御部１１０は、ウェイ１のタグテーブル２１１ａからインデックス「０００２」のタグラインを読み出し、活性化ビットとタグを判定した後、ウェイ２のタグテーブル２１１ｂからインデックス「０００２」のタグラインを読み出す。このタグライン活性化ビットは「１」（有効）であり、タグラインのタグ「０００６」が入力アドレスのタグ「０００６」と一致するため、データ制御部１２０は、ウェイ２のデータテーブル２２１ｂからデータラインを読み出し、活性化ビットは「１」のため、キャッシュヒットとなり、データ制御部１２０は、データラインのオフセット「１」のデータ「０１１０」をＣＰＵ２へ出力する。すなわち、この場合には、ウェイ１のタグテーブル２１１ａはアクセスされリフレッシュされるが、ウェイ１のデータテーブル２２１ａはアクセスされずリフレッシュされない。
【００５８】
その後、ウェイ１のデータテーブル２２１ａにデータが書き込まれてからＤＲＡＭのリフレッシュ時間経過しても、ＣＰＵからのアクセスがない場合、図５（ｃ）に示すように、ウェイ１のデータテーブル２２１ａのデータライン、すなわち、データとデータの活性化ビットが自動的にクリアされる。すなわち、この場合に、タグテーブルは有効、データテーブルは無効となり、タグテーブルとデータテーブルとで状態が不一致となる。このとき、例えば、図４（ａ）のような入力アドレスが入力された場合、ウェイ１のタグテーブル２１１ａで活性化ビットが有効でタグが一致したとしても、データテーブル２２１ａの活性化ビットが「０」のためデータが無効と判断され、メインメモリ３からデータが読み出されることになる。
【００５９】
以上説明したように、本実施形態のキャッシュメモリ装置では、タグとデータを格納するメモリセルアレイを分けることで、ＣＰＵからのアクセスの際、最低限必要なタグと活性化ビットを含むタグラインのみにアクセスするようになり、消費電力を低減することができる。例えば、入出力データのサイズを６４ビット、オフセットを３ビットの場合、最大５１２ビット（＝６４×８）読み出すための電力を低減することができる。ウェイが複数ある場合には、さらにウェイの数だけ、消費電力を低減することができるため、より効果が大きい。
【００６０】
また、タグの有効性を示すフラグに加えて、データの有効性を示すフラグを新たに設けることにより、図５のように、タグテーブルとデータテーブルの状態が不一致となった場合でも、データの有効性を正確に把握でき、データの内容を確実に保障することができる。
【００６１】
その他の発明の実施の形態．
上述の例では、タグテーブルとデータテーブルとでメモリセルアレイを分けたが、これに限らず、同じメモリセルアレイにタグテーブルとデータテーブルを格納し、アクセスの際に、タグとデータを別々にアクセスしてもよい。
【００６２】
また、上述の例では、Ｎウェイセットアソシアティブマッピング方式のキャッシュメモリとして説明したが、これに限らず、その他のマッピング方式のキャッシュメモリであってもよい。１つのタグに対し複数のタグが対応付けられた方式であれば、上記の例をそのまま適用することができる。その他、ダイレクトマッピング方式のキャッシュメモリに適用してもよい。この場合には、１つのインデックスに対し１つのタグが対応するため、タグテーブルとデータテーブルは一つずつとなる。よって、図５のような状態不一致が発生しないため、ダイレクトマッピング方式の場合は、データテーブルの活性化ビットを設けなくてもよい。
【００６３】
このほか、本発明の要旨を逸脱しない範囲で種々の変形、実施が可能である。
【図面の簡単な説明】
【００６４】
【図１】本発明にかかるキャッシュメモリ装置の構成を示すブロック図である。
【図２】本発明にかかるキャッシュメモリ装置のメモリセルとデータ構造を示す図である。
【図３】本発明にかかるキャッシュメモリ装置の動作を示すフローチャートである。
【図４】本発明にかかるキャッシュメモリ装置の動作を説明するための説明図である。
【図５】本発明にかかるキャッシュメモリ装置の動作を説明するための説明図である。
【図６】従来のキャッシュメモリ装置のメモリセルとデータ構造を示す図である。
【符号の説明】
【００６５】
１  キャッシュメモリ装置
２  ＣＰＵ
３  メインメモリ
１１０  アドレス制御部
１２０  データ制御部
１３０  タグ格納部
１３１  タグ領域
１３２  フラグ領域
１４０  データ格納部
１４１  データ領域
１４２  フラグ領域
２１０，２２０  ＤＲＡＭメモリセルアレイ
２１１  タグテーブル
２１２  タグライン
２２１  データテーブル
２２２  データライン
【図１】
2006318080.tif 000003
【図２】
2006318080.tif 000004
【図３】
2006318080.tif 000005
【図４】
2006318080.tif 000006
【図５】
2006318080.tif 000007
【図６】
2006318080.tif 000008