(57)【要約】アドレスに対応する複数のタグを複数のエントリに、パリティビットおよび該パリティビットを反転させた反転ビットを記憶するタグ部（１２ａ）と、複数のエントリに対応させて複数のデータを複数のエントリに記憶するデータ部（１２ｂ）と、検索用アドレスとタグ部（１２ａ）の各エントリとを比較する比較器（２００〜２０３１）と、比較結果で複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、マルチヒットの発生原因を判定する判定部（１１２）とを備えている。
2005010760.tif 000002
【特許請求の範囲】
【請求項１】
アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させるタグ記憶手段と、
検索用アドレスと各エントリのタグとを比較する比較手段と、
前記比較手段で複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、前記マルチヒットの発生原因を判定する判定手段と、
を備えたことを特徴とするＣＡＭ装置。
【請求項２】
前記タグの一部にマスクをかけ、マスク部分を前記比較手段の比較対象から除外するマスク手段と、前記マスク部分をオール０またはオール１とするマスク部分変更手段と、を備えたことを特徴とする請求の範囲第１項に記載のＣＡＭ装置。
【請求項３】
前記マスク手段は、前記データ記憶手段に記憶されているデータに含まれるマスク制御データに基づいて、マスクをかけるとともに、前記マスク制御データの誤りをチェックすることを特徴とする請求の範囲第２項に記載のＣＡＭ装置。
【請求項４】
アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させるタグ記憶工程と、
検索用アドレスと各エントリのタグとを比較する比較工程と、
前記比較工程で複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、前記マルチヒットの発生原因を判定する判定工程と、
を含むことを特徴とするＣＡＭ制御方法。
【請求項５】
前記タグの一部にマスクをかけ、マスク部分を前記比較手段の比較対象から除外するマスク工程と、前記マスク部分をオール０またはオール１とするマスク部分変更工程と、を含むことを特徴とする請求の範囲第４項に記載のＣＡＭ制御方法。
【請求項６】
前記マスク工程では、前記データ記憶手段に記憶されているデータに含まれるマスク制御データに基づいて、マスクをかけるとともに、前記マスク制御データの誤りをチェックすることを特徴とする請求の範囲第５項に記載のＣＡＭ制御方法。
【発明の詳細な説明】
【技術分野】  本発明は、半導体メモリの一つであるＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓａｂｌｅ  Ｍｅｍｏｒｙ：内容参照可能メモリ）の制御を行うためのＣＡＭ装置およびＣＡＭ制御方法に関するものであり、特に、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができるＣＡＭ装置およびＣＡＭ制御方法に関するものである。
【背景技術】  第１７図は、従来のキャッシュメモリ装置１１の適用例の構成を示すブロック図である。この図に示したキャッシュメモリ装置１１は、ＣＰＵ１０とメインメモリ１３との間の速度差を埋めるための記憶装置であり、例えば、ＣＡＭ装置である。ここで、ＣＡＭは、メモリ領域に記憶されているデータの位置をアドレスで示すのではなく、内容で示すメモリである。
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０は、キャッシュメモリ装置１１またはメインメモリ１３にアクセスすることで、データのリード／ライトを行う。
メインメモリ１３は、大容量であってかつアクセス時間がキャッシュメモリ装置１１に比して遅いという特性を備えている。このメインメモリ１３には、第１８図に示したように、ＣＰＵ１０で用いられるデータの全てが記憶されている。
すなわち、同図において、メインメモリ１３には、６４ビット構成の各アドレス＜６３：０＞（０ビット〜６３ビット）に対応付けて、６４ビット構成の各データ＜６３：０＞が記憶されている。
第１７図に戻り、キャッシュメモリ装置１１は、アクセス時間がメインメモリ１３に比して短いという特性を備えている。
さらに、記憶容量の面から見れば、メインメモリ１３の記憶容量は、キャッシュメモリ装置１１の記憶容量よりも大きい。
第１９図は、第１７図に示したキャッシュメモリ装置１１の構成を示す図である。同図において、タグ部１２ａには、メインメモリ１３に記憶されているアドレス＜６３：０＞（第１８図参照）がＴＡＧ＜６３：０＞（タグ）として最大３２個まで記憶される。
一方、データ部１２ｂには、タグ部１２ａに記憶されているＴＡＧ＜６３：０＞（タグ）に対応するＤＡＴＡ＜６３：０＞（データ）が最大３２個まで記憶される。
具体的には、タグ部１２ａは、記憶場所としてのエントリ０〜３１を有している。これらのエントリ０〜３１には、メインメモリ１３に記憶されているアドレス＜６３：０＞（第１８図参照）が、ＴＡＧ＜６３：０＞（タグ）としてそれぞれ記憶される。
一方、データ部１２ｂも、タグ部１２ａと同様にして、記憶場所としてのエントリ０〜３１を有している。タグ部１２ａのエントリ０〜３１と、データ部１２ｂのエントリ０〜３１とは、対をなすようにそれぞれ対応している。
データ部１２ｂのエントリ０〜３１には、メインメモリ１３に記憶されているデータ＜６３：０＞（第１８図参照）が、ＤＡＴＡ＜６３：０＞（データ）としてそれぞれ記憶される。
比較器２００〜２０３１は、タグ部１２ａのエントリ０〜３１に対応して設けられており、ＣＰＵ１０（第１７図参照）から出力される６４ビット構成のＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）と、エントリ０〜３１にそれぞれ記憶されたＴＡＧ＜６３：０＞（タグ）とを比較し、一致した場合、ＴＡＧ＿ＨＩＴ（タグヒット）を出力する。
ここで、比較器２００〜２０３１においては、正常動作で、いずれか一つの比較器から一つのＴＡＧ＿ＨＩＴ（タグヒット）が出力される。
しかしながら、タグ部１２ａの複数のエントリに同一のＴＡＧ＜６３：０＞（タグ）が記憶されている場合には、複数の比較器からＴＡＧ＿ＨＩＴ（タグヒット）が出力され、マルチヒットエラーとされる。このマルチヒットエラーが発生した場合、比較器２００〜２０３１からは、ＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が出力される。
セレクタ３０は、データ部１２ｂのエントリ０〜３１にそれぞれ記憶されたＤＡＴＡ＜６３：０＞（データ）のうち、ＴＡＧ＿ＨＩＴ（タグヒット）に対応するエントリに記憶されたＤＡＴＡ＜６３：０＞（データ）を選択し、出力する。
セレクタ３０から出力されたＤＡＴＡ＜６３：０＞（データ）は、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）に対応する検索結果であり、ＣＰＵ１０に入力される。
ここで、第１９図においては、タグ部１２ａのエントリ０〜３１にそれぞれ記憶されたＴＡＧ＜６３：０＞（タグ）について、ビット反転等によるエラーをチェックする必要がある。
第２０図は、上記チェック機能として、パリティチェック機能を有するキャッシュメモリ装置４０の構成を示す図である。この図において、第１９図の各部に対応する部分に同一の符号を付ける。
第２０図においては、セレクタ４１およびパリティチェック部４２が新たに設けられている。セレクタ４１は、タグ部１２ａのエントリ０〜３１にそれぞれ記憶されたＴＡＧ＜６３：０＞（タグ）のうち、ＴＡＧ＿ＨＩＴ（タグヒット）に対応するエントリに記憶されたＴＡＧ＜６３：０＞（タグ）を選択し、出力する。
パリティチェックとは、パリティビットを使って、データに誤り（ビット反転等）があるか否かをチェックすることをいう。パリティチェックにおいては、チェック対象の元データに、１の数が偶数になるように、パリティビット（０または１）が予め付加される。
また、パリティチェックにおいては、１の数が偶数である場合、エラー無しと判定され、１の数が奇数である場合、ビット反転等によるパリティエラーが発生したと判定される。
例えば、元データが「００１０１０００」という８ビット構成である場合には、１の数が偶数であるため、０のパリティビットが付加され、「００１０１０００」＋「０」という９ビット構成とされる。
ここで、ビット反転等により、「００１０１０００」＋「０」が「１０１０１０００」＋「０」とされた場合には、１の数が奇数（＝３）とされ、パリティエラーが発生していると判定される。
また、元データが「００１０１１００」という８ビット構成である場合には、１の数が奇数であるため、１のパリティビットが付加され、「００１０１１００」＋「１」という９ビット構成とされる。
ここで、ビット反転等により、「００１０１１００」＋「１」が「１０１０１１００」＋「１」とされた場合には、１の数が奇数（＝５）とされ、パリティエラーが発生していると判定される。
ここで、第２０図に示したキャッシュメモリ装置４０において、タグ部１２ａのエントリ０〜３１には、ＴＡＧ＜６３：０＞（タグ）およびＴＡＧ＿Ｐ＜７：０＞（パリティビット）が記憶されている。
パリティチェック部４２は、セレクタ４１で選択されたＴＡＧ＜６３：０＞（タグ）についてパリティチェックを実行し、パリティチェックエラーが発生している場合、ＴＡＧ＿ＰＥ（パリティチェックエラー）を出力する。ＴＡＧ＿ＰＥ（パリティチェックエラー）が出力された場合、セレクタ３０で選択されたＤＡＴＡ＜６３：０＞（データ）は、無効とされる。
しかしながら、第２０図に示したキャッシュメモリ装置４０においては、ＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が発生した場合、マルチヒットの原因（以下の第１の原因、第２の原因）を一意に特定することができないという問題がある。
すなわち、マルチヒットの第１の原因としては、単純にタグ部１２ａの複数のエントリに同一のＴＡＧ＜６３：０＞（タグ）が記憶されて、ＭＵＬＴＩ＿ＨＩＴ（マルチヒット）となった場合が挙げられる。
また、第２の原因としては、タグ部１２ａの複数のエントリに別々のＴＡＧ＜６３：０＞（タグ）が記憶されていたが、ビット反転等のエラーにより、両ＴＡＧ＜６３：０＞（タグ）が同一のＴＡＧ＜６３：０＞（タグ）とされ、ＭＵＬＴＩ＿ＨＩＴ（マルチヒット）となった場合が挙げられる。
そこで、従来では、上述した問題点を解決すべく、第２１図に示したキャッシュメモリ装置５０のように、タグ部１２ａのエントリ０〜３１にそれぞれ対応させてパリティチェック部５１０〜５１３１を設けて、エントリ毎にパリティチェックを実行している。
しかしながら、キャッシュメモリ装置５０においては、６４ビットのパリティチェックを３２エントリ分行うためのパリティチェック部５１０〜５１３１について、回路規模が大きく、構成が複雑になるという問題がある。
【特許文献１】特開平８−９５８５６号公報
本発明は、上記に鑑みてなされたもので、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができるＣＡＭ装置およびＣＡＭ制御方法を提供することを目的としている。
【発明の開示】
上記目的を達成するために、本発明は、アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させるタグ記憶手段と、検索用アドレスと各エントリのタグとを比較する比較手段と、前記比較手段で複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、前記マルチヒットの発生原因を判定する判定手段と、を備えたことを特徴とする。
また、本発明は、アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させるタグ記憶工程と、検索用アドレスと各エントリのタグとを比較する比較工程と、前記比較工程で複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、前記マルチヒットの発生原因を判定する判定工程と、を含むことを特徴とする。
かかる発明によれば、アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させ、検索用アドレスと各エントリのタグとを比較し、複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、マルチヒットの発生原因を判定することとしたので、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができるという効果を奏する。
【図面の簡単な説明】  第１図は、実施の形態１の構成を示すブロック図であり、第２図は、第１図に示したキャッシュメモリ装置１０１の構成を示す図であり、第３図は、同実施の形態１におけるＴＡＧ＜６３：０＞（タグ）のフォーマットを示す図であり、第４図は、同実施の形態１の動作例１を説明する図であり、第５図は、同実施の形態１の動作例２を説明する図であり、第６図は、実施の形態１の動作例３を説明する図であり、第７図は、実施の形態２の構成を示すブロック図であり、第８図は、第７図に示したキャッシュメモリ装置２０１の構成を示す図であり、第９図は、第８図に示した比較器２１００の構成を示す図であり、第１０図は、マスク制御ビットとマスクビットとの対応関係を表す図であり、第１１図は、第８図に示したマスクオールゼロ部２２００の構成を示す図であり、第１２図は、第１１図に示したＴＡＧ＜６３：０＞の構成を示す図であり、第１３図は、実施の形態１の問題点を説明する図であり、第１４図は、実施の形態２の動作例１を説明する図であり、第１５図は、実施の形態２の動作例２を説明する図であり、第１６図は、実施の形態２の変形例の構成を示す図であり、第１７図は、従来のキャッシュメモリ装置１１の適用例の構成を示すブロック図であり、第１８図は、第１７図に示したメインメモリ１３を示す図であり、第１９図は、従来のキャッシュメモリ装置１１の構成を示すブロック図であり、第２０図は、従来のキャッシュメモリ装置４０の構成を示す図であり、第２１図は、従来のキャッシュメモリ装置５０の構成を示す図である。
【発明を実施するための最良の形態】  以下、図面を参照して本発明にかかる実施の形態１および２について詳細に説明する。
（実施の形態１）
第１図は、本発明にかかる実施の形態１の構成を示すブロック図である。この図において、第１７図の各部に対応する部分には同一の符号を付け、その説明を省略する。第１図においては、第１７図に示したキャッシュメモリ装置１１に代えて、キャッシュメモリ装置１０１が設けられている。
キャッシュメモリ装置１０１は、例えば、ＣＡＭ装置であり、キャッシュアクセス機能の他に、マルチヒットが発生した場合の原因を一意に特定する機能等を備えている。
第２図は、第１図に示したキャッシュメモリ装置１０１の構成を示す図である。この図において、第２１図に対応する部分には同一の符号を付け、その説明を省略する。
同図においては、第２１図に示したパリティチェック部５１０〜５１３１に代えて、アンド回路１１００〜１１０３１、オア回路１１１および判定部１１２が設けられている。
ここで、実施の形態１においては、第３図に示したフォーマットのＴＡＧ＜６３：０＞（タグ）がタグ部１２ａ（第２図参照）のエントリ０〜３１に記憶されている。
第３図に示したＴＡＧ＜６３：０＞（タグ）においては、ＴＡＧ＜６３：５６＞、ＴＡＧ＜５５：４８＞、ＴＡＧ＜４７：４０＞、ＴＡＧ＜３９：３２＞、ＴＡＧ＜３１：２４＞、ＴＡＧ＜２３：１６＞、ＴＡＧ＜１５：８＞およびＴＡＧ＜７：０＞という８ビット単位で区切られ、各８ビット単位にパリティビットＰＢおよび反転ビットＲＢが付加されている。
例えば、ＴＡＧ＜６３：５６＞においては、５６ビット目〜６３ビット目という８ビットに対して、上述したパリティチェックにおけるパリティビットＰＢと、パリティビットＰＢを反転させた反転ビットＲＢが付加されている。他のＴＡＧも同様である。
例えば、第４図に示したエントリ０（タグ部１２ａ）には、ＴＡＧ＜６３：５６＞としての「００００００１０」と、該ＴＡＧ＜６３：５６＞に対応するパリティビットＰＢの「１」と、パリティビットＰＢ（「１」）を反転させた反転ビットＲＢの「０」とが記憶されている。
また、エントリ１（タグ部１２ａ）にも、ＴＡＧ＜６３：５６＞としての「００００００１０」と、該ＴＡＧ＜６３：５６＞に対応するパリティビットＰＢの「１」と、パリティビットＰＢ（「１」）を反転させた反転ビットＲＢの「０」とが記憶されている。
第２図に戻り、アンド回路１１００〜１１０３１は、タグ部１２ａのエントリ０〜３１に対応して設けられており、比較器２００〜２０３１からのＴＡＧ＿ＨＩＴ（タグヒット）と、エントリ０〜３１に記憶されたＴＡＧ＜６３：０＞（第３図参照）とのアンドをとる回路である。
オア回路１１１は、アンド回路１１００〜１１０３１の各出力のオアをとる回路である。判定部１１２は、オア回路１１１の出力に基づいて、ＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が発生した場合の原因を判定する。この判定部１１２の動作の詳細については、後述する。
上記構成において、ＣＰＵ１０（第１図参照）から第２図に示した比較器２００〜２０３１にＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）が入力されると、比較器２００〜２０３１のそれぞれは、タグ部１２ａのエントリ０〜３１に記憶されている各ＴＡＧ＜６３：０＞（第３図参照）と比較する。
この場合、第４図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞が、共に、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）と一致しているとすると、比較器２００および比較器２０１からは、ＴＡＧ＿ＨＩＴ（タグヒット）およびＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が出力される。
これにより、アンド回路１１００およびアンド回路１１０１からは、実施の形態１の動作例１として、第４図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞がそれぞれ出力される。
ここで、ＴＡＧ＜６３：５６＞、ＰＢ、ＲＢに着目すると、エントリ０に対応するアンド回路１１００からは、「００００００１０−１０」がオア回路１１１に出力される。
一方、エントリ１に対応するアンド回路１１０１からも、「００００００１０−１０」がオア回路１１１に出力される。オア回路１１１では、「００００００１０−１０」（エントリ０）と「００００００１０−１０」（エントリ１）とのオアがとられ、「００００００１０−１０」が判定部１１２へ出力される。
判定部１１２は、「００００００１０−１０」についてパリティチェックを行う。この場合、判定部１１２は、「００００００１０−１＊」（＊は、反転ビットＲＢ）において、１が偶数でパリティチェック結果が正常、反転ビットＲＢ（＝０）も正常（パリティビットＰＢ（＝１）の反転）であるため、マルチヒット発生の原因を、同一のＴＡＧ＜６３：０＞が複数のエントリに重複記憶されているからである、と判定する。
また、実施の形態１の動作例２として、第５図に示したように、エントリ０（タグ部１２ａ）に「０００００１１０−０１」、エントリ１（タグ部１２ａ）に「００００００１０−１０」が記憶されているものとする。
ここで、エラーにより、エントリ１のＴＡＧ＜５８＞が「０」から「１」に反転したものとする。
この状態で、ＣＰＵ１０（第１図参照）から第２図に示した比較器２００〜２０３１にＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）が入力されると、比較器２００〜２０３１のそれぞれは、タグ部１２ａのエントリ０〜３１に記憶されている各ＴＡＧ＜６３：０＞（第３図参照）と比較する。
この場合、第５図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞が、共に、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）と一致しているとすると、比較器２００および比較器２０１からは、ＴＡＧ＿ＨＩＴ（タグヒット）およびＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が出力される。
これにより、アンド回路１１００およびアンド回路１１０１からは、第５図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞がそれぞれ出力される。
ここで、ＴＡＧ＜６３：５６＞、ＰＢ、ＲＢに着目すると、エントリ０に対応するアンド回路１１００からは、「０００００１１０−０１」がオア回路１１１に出力される。
一方、エントリ１に対応するアンド回路１１０１からは、「０００００１１０−１０」がオア回路１１１に出力される。オア回路１１１では、「０００００１１０−０１」（エントリ０）と「０００００１１０−１０」（エントリ１）とのオアがとられ、「０００００１１０−１１」が判定部１１２へ出力される。
判定部１１２は、「０００００１１０−１１」についてパリティチェックを行う。この場合、判定部１１２は、「０００００１１０−１＊」（＊は、反転ビットＲＢ）において、１が奇数でパリティビットＰＢが異常、反転ビットＲＢ（＝１）も異常（パリティビットＰＢ（＝１）の反転ではない）であるため、マルチヒット発生の原因をパリティエラーと判定する。
また、実施の形態１の動作例３として、第６図に示したように、エントリ０（タグ部１２ａ）に「０００００１１０−０１」、エントリ１（タグ部１２ａ）に「００００００１０−１０」が記憶されているものとする。
ここで、エラーにより、エントリ０のＴＡＧ＜５８＞が「１」から「０」に反転したものとする。
この状態で、ＣＰＵ１０（第１図参照）から第２図に示した比較器２００〜２０３１にＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）が入力されると、比較器２００〜２０３１のそれぞれは、タグ部１２ａのエントリ０〜３１に記憶されている各ＴＡＧ＜６３：０＞（第３図参照）と比較する。
この場合、第６図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞が、共に、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）と一致しているとすると、比較器２００および比較器２０１からは、ＴＡＧ＿ＨＩＴ（タグヒット）およびＭＵＬＴＩ＿ＨＩＴ（マルチヒット）が出力される。
これにより、アンド回路１１００およびアンド回路１１０１からは、第６図に示したエントリ０および１に記憶されたＴＡＧ＜６３：０＞がそれぞれ出力される。
ここで、ＴＡＧ＜６３：５６＞、ＰＢ、ＲＢに着目すると、エントリ０に対応するアンド回路１１００からは、「００００００１０−０１」がオア回路１１１に出力される。
一方、エントリ１に対応するアンド回路１１０１からは、「００００００１０−１０」がオア回路１１１に出力される。オア回路１１１では、「００００００１０−０１」（エントリ０）と「００００００１０−１０」（エントリ１）とのオアがとられ、「００００００１０−１１」が判定部１１２へ出力される。
判定部１１２は、「００００００１０−１１」についてパリティチェックを行う。この場合、判定部１１２は、「００００００１０−１＊」（＊は、反転ビットＲＢ）においては、１が偶数でパリティビットＰＢが正常であるが、反転ビットＲＢ（＝１）が異常（パリティビットＰＢ（＝１）の反転ではない）であるため、マルチヒット発生の原因をパリティエラーと判定する。
以上説明したように、実施の形態１によれば、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができる。
（実施の形態２）
さて、前述した実施の形態１においては、タグ部１２ａのエントリ０〜３１から出力されるＴＡＧ＜６３：０＞の一部のビットにマスクをかける構成にもマルチヒット発生の原因を特定する機能を持たせることが可能である。以下では、この構成例を実施の形態２として説明する。
第７図は、本発明にかかる実施の形態２の構成を示すブロック図である。この図において、第１図の各部に対応する部分には同一の符号を付け、その説明を省略する。第７図においては、第１図に示したキャッシュメモリ装置１０１に代えて、キャッシュメモリ装置２０１が設けられている。
キャッシュメモリ装置２０１は、例えば、ＣＡＭ装置であり、キャッシュメモリ装置１０１（第１図参照）と同様の機能を備え、ＴＡＧ＜６３：０＞（タグ）の一部にマスクがかけられる場合にも、マルチヒットエラーの発生原因を一意に特定する機能を備えている。
第８図は、第７図に示したキャッシュメモリ装置２０１の構成を示す図である。この図において、第２図の各部に対応する部分には同一の符号を付ける。
第８図においては、第２図に示した比較器２００〜２０３１に代えて、比較器２１００〜２１０３１が設けられているとともに、マスクオールゼロ部２２００〜２２０３１が新たに設けられている。
比較器２１００〜２１０３１は、タグ部１２ａのエントリ０〜３１に対応して設けられており、ＣＰＵ１０（第１７図参照）から出力される６４ビット構成のＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）と、エントリ０〜３１にそれぞれ記憶されたＴＡＧ＜６３：０＞（タグ）とを比較し、一致した場合、ＴＡＧ＿ＨＩＴ（タグヒット）を出力する。
但し、比較器２１００〜２１０３１は、ＴＡＧ＜６３：０＞（タグ）のうち、予め指定された範囲のビットにマスクをかけたものと、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）とを比較する機能を備えている。
第９図は、第８図に示した比較器２１００の構成を示す図である。同図において、タグ部１２ａ（第８図参照）のエントリ０には、ＴＡＧ＜６３：０＞が記憶されている。
このＴＡＧ＜６３：０＞は、ＴＡＧ＜６３：２２＞、ＴＡＧ＜２１：１９＞、ＴＡＧ＜１８：１６＞、ＴＡＧ＜１５：１３＞、ＴＡＧ＜１２：０＞という単位で区切られ、各単位に、実施の形態１と同様にして、パリティビットＰＢおよび反転ビットＲＢが付加されている。なお、タグ部１２ａのエントリ１〜３１にも、エントリ０と同様のフォーマットで、ＴＡＧ＜６３：０＞が記憶されている。
また、データ部１２ｂのエントリ０には、ＤＡＴＡ＜６３：０＞が記憶されている。このＤＡＴＡ＜６３：０＞には、有効ビットＶ、マスク制御ビットＳＩＺＥ、マスク制御ビットＧが含まれている。
有効ビットＶは、ＤＡＴＡ＜６３：０＞（データ）の有効性（１：有効、０：無効）を表すビットである。マスク制御ビットＳＩＺＥおよびマスク制御ビットＧは、第１０図に示したように、ＴＡＧ＜６３：０＞にマスクをかける場合に、マスクビット（マスクされるビット）の範囲を指定するためのビットである。
同図に示したように、マスク制御ビットＧが１の場合には、ＴＡＧ＜６３：０＞（第９図参照）のうち、ＴＡＧ＜１２：０＞がマスクされる。
マスク制御ビットＳＩＺＥが１１の場合には、ＴＡＧ＜６３：０＞（第９図参照）のうち、ＴＡＧ＜２１：１３＞がマスクされる。マスク制御ビットＳＩＺＥが１０の場合には、ＴＡＧ＜６３：０＞（第９図参照）のうち、ＴＡＧ＜１８：１３＞がマスクされる。
また、マスク制御ビットＳＩＺＥが０１の場合には、ＴＡＧ＜６３：０＞（第９図参照）のうち、ＴＡＧ＜１５：１３＞がマスクされる。
第９図に戻り、比較器２１１、２１２、２１３、２１４および２１５は、ＴＡＧ＜１２：０＞、ＴＡＧ＜１５：１３＞、ＴＡＧ＜１８：１６＞、ＴＡＧ＜２１：１９＞およびＴＡＧ＜６３：２２＞と、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）の＜１２：０＞、＜１５：１３＞、＜１８：１６＞、＜２１：１９＞および＜６３：２２＞とをそれぞれ比較する。
オア回路２１６は、比較器２１１の出力結果（ＴＡＧ＜１２：０＞）と、マスク制御ビットＧ（第１０図参照）とのオアをとる。オア回路２１７は、比較器２１２の出力結果（ＴＡＧ＜１５：１３＞）と、マスク範囲設定回路２２０の出力とのオアをとる。
オア回路２１８は、比較器２１３の出力結果（ＴＡＧ＜１８：１６＞）と、マスク範囲設定回路２２０の出力とのオアをとる。オア回路２１９は、比較器２１４の出力結果（ＴＡＧ＜２１：１９＞）と、マスク範囲設定回路２２０の出力とのオアをとる。
アンド回路２２１は、オア回路２１６〜２１９の出力および有効ビットＶのアンドをとり、オール１である場合、ＴＡＧ＿ＨＩＴ（タグヒット）を出力する。
なお、第８図に示した他の比較器２１０１〜２１０３１も、比較器２１００と同様の構成とされている。
第８図に戻り、マスクオールゼロ部２２００〜２２０３１は、タグ部１２ａのエントリ０〜３１に対応して設けられており、比較器２１００〜２１０３１でマスクがかけられたビットをオールゼロにする機能を備えている。
第１１図は、第８図に示したマスクオールゼロ部２２００の構成を示すブロック図である。同図において、第９図の各部に対応する部分には同一の符号を付ける。
アンド回路２２１は、ＴＡＧ＜１２：０＞と、マスク制御ビットＧ（第１０図参照）がノット回路２２８で反転されたものとのアンドをとる。
アンド回路２２２は、ＴＡＧ＜１５：１３＞と、オア回路２２６の出力がノット回路２２９で反転されたものとのアンドをとる。
アンド回路２２３は、ＴＡＧ＜１８：１６＞と、オア回路２２７の出力がノット回路２３０で反転されたものとのアンドをとる。
アンド回路２２４は、ＴＡＧ＜２１：１９＞と、マスク範囲設定回路２２５の出力がノット回路２３１で反転されたものとのアンドをとる。マスクオールゼロ部２２００からは、入力のＴＡＧ＜６３：０＞のうちマスクされたビットがオールゼロとされたＴＡＧ＜６３：０＞が出力される。
第１２図は、第９図および第１１図に示したＴＡＧ＜６３：０＞の構成を示す図である。タグ部１２ａの各エントリには、同図に示したフォーマットのＴＡＧ＜６３：０＞および各パリティビットＰＢおよび反転ビットＲＢが記憶されている。
以下では、ＴＡＧ＜６３：０＞のうち、ＴＡＧ＜２１：１９＞、ＴＡＧ＜１８：１６＞およびＴＡＧ＜１５：１３＞、パリティビットＰＢ、反転ビットＲＢに着目して説明する。
ここで、第１３図に示したように、タグ部１２ａのエントリ０においては、ＴＡＧ＜２１：１３＞、ＰＢ、ＲＢに、「００１−１０」、「０１０−１０」、「０００−０１」が格納されており、マスク制御ビットＳＩＺＥ＝０１により、比較器２１０１で網掛けのビット（ＴＡＧ＜１５：１３＞、ＰＢ、ＲＢ）がマスクされたものとする。マスクビットは、ＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）との比較対象から外される。
また、タグ部１２ａのエントリ１においては、ＴＡＧ＜２１：１３＞、ＰＢ、ＲＢに、「００１−１０」、「１００−１０」、「０００−０１」が格納されており、マスク制御ビットＳＩＺＥ＝１０により、比較器２１０１で網掛けのビット（ＴＡＧ＜１８：１６＞、ＰＢ、ＲＢ、ＴＡＧ＜１５：１３＞、ＰＢ、ＲＢ）がマスクされたものとする。
ここで、「００１０１０１１」からなるＡＣＣＳ＿ＡＤＲＳ＜２１：１３＞を含むＡＣＣＳ＿ＡＤＲＳ＜６３：０＞（検索アドレス）が、第８図に示した比較器２１００〜２１０３１に入力されると、第１３図に示したエントリ０およびエントリ１のＴＡＧ＜６３：０＞（パリティビットＰＢ、反転ビットＲＢを含む）がＴＡＧ＿ＨＩＴ（タグヒット）とされる。すなわち、マルチヒットとされる。
ここで、実施の形態１の場合には、第１３図に示したように、両者のオアが採られる。しかしながら、ＴＡＧ＜１８：１６＞のパリティビットＰＢが異常であるため、見かけ上パリティエラーと誤判定されてしまう。これを回避するために、実施の形態２では、第１４図および第１５図に示したように、ＴＡＧ＜６３：０＞のうち、マスクがかけられたビットをオール０にすることにより、上記誤判定を防止している。
第１４図の場合には、エントリ０のＴＡＧ＜１５：１３＞（網掛け部分のマスクビット、ＰＢ、ＲＢも含む）がマスクオールゼロ部２２００でオールゼロとされる。一方、エントリ１のＴＡＧ＜１８：１６＞およびＴＡＧ＜１５：１３＞（網掛け部分のマスクビット、ＰＢ、ＲＢも含む）も、マスクオールゼロ部２２０１によりオールゼロとされる。
つぎに、両者のオアが採られ、判定部１１２では、ＴＡＧ＜２１：１９＞およびＴＡＧ＜１８：１６＞について、パリティビットＰＢが正常、反転ビットＲＢが正常であるため、マスクにより同一のＴＡＧ＜６３：０＞が重複して存在したことが、マルチヒットの原因と判定される。
なお、ＰＢ＝ＲＢ＝０の場合には、マスク制御が行われたことを表しており、当該ブロック（この場合、ＴＡＧ＜１５：１３＞）にエラーが無いと判定される。
一方、第１５図に示したように、エラーによりビットが反転した場合には、パリティエラーがマルチヒットの原因と判定される。すなわち、同図においては、エントリ０のＴＡＧ＜１８：１６＞のうちＴＡＧ＜１８＞がエラーにより０から１に反転したものとする。
そして、エントリ０のＴＡＧ＜１５：１３＞（網掛け部分のマスクビット，ＰＢ、ＲＢも含む）は、マスクオールゼロ部２２００でオールゼロとされる。一方、エントリ１のＴＡＧ＜１８：１６＞およびＴＡＧ＜１５：１３＞（網掛け部分のマスクビット、ＰＢ、ＲＢも含む）も、マスクオールゼロ部２２０１によりオールゼロとされる。
つぎに、両者のオアが採られ、判定部１１２では、ＴＡＧ＜１８：１６＞についてパリティビットＰＢが異常、反転ビットＲＢが正常であるため、パリティエラーがマルチヒットの原因と判定される。なお、ＰＢ＝ＲＢ＝０の場合には、マスク制御が行われたことを表しており、当該ブロック（この場合、ＴＡＧ＜１５：１３＞）にエラーが無いと判定される。
以上説明したように、実施の形態２によれば、ビットにマスクをかける場合であっても、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができる。
なお、実施の形態２においては、第８図に示したマスクオールゼロ部２２００〜２２０３１を、タグ部１２ａにＴＡＧ＜６３：０＞を格納する直前に接続し、タグ部１２ａに格納されるＴＡＧ自体をゼロにしてもよい。
また、実施の形態２においては、第８図に示したマスクオールゼロ部２２００〜２２０３１に代えて、３２個のマスクオールワン部（図示略）を設けて、マスクビットをオール１にして、アンド回路１１００〜１１０３１の直前で反転回路により反転させても、同様の効果を奏する。
また、実施の形態２においては、第１６図に示したように、データ部１２ｂのエントリ０〜３１のそれぞれに記憶されたＤＡＴＡ＜６３：０＞のマスク制御ビット（ＳＩＺＥ＜１：０＞、Ｇ）や有効ビットＶ等について、排他的論理和回路３００〜３０３によりパリティチェックを行い、信頼性を高める構成としてもよい。同図において、Ｐはパリティビットを表す。ＰＥはパリティエラーを表す。
以上本発明にかかる実施の形態１および２について図面を参照して詳述してきたが、具体的な構成例はこれら実施の形態１および２に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
以上説明したように、本発明によれば、アドレスに対応する複数のタグと、各タグのパリティビットと、該パリティビットを反転させた反転ビットとを複数のエントリに記憶させ、検索用アドレスと各エントリのタグとを比較し、複数一致であるマルチヒットが発生した場合、当該複数のエントリの記憶内容のオアをとり、オア後のパリティビットおよび反転ビットに基づいて、マルチヒットの発生原因を判定することとしたので、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができるという効果を奏する。
また、本発明によれば、タグの一部にマスクをかけ、マスク部分を比較対象から除外し、マスク部分をオール０またはオール１とすることとしたので、ビットにマスクをかける場合であっても、小規模かつ簡易な構成でマルチヒット発生の原因を一意に特定することができるという効果を奏する。
また、本発明によれば、データに含まれるマスク制御データに基づいて、マスクをかけるとともに、マスク制御データの誤りをチェックすることとしたので、信頼性を高めることができるという効果を奏する。
【産業上の利用可能性】  以上のように、本発明にかかるＣＡＭ装置およびＣＡＭ制御方法は、ＣＡＭにおけるマルチヒットの発生原因の判定に対して有用である。
【図１】
2005010760.tif 000003
【図２】
2005010760.tif 000004
【図３】
2005010760.tif 000005
【図４】
2005010760.tif 000006
【図５】
2005010760.tif 000007
【図６】
2005010760.tif 000008
【図７】
2005010760.tif 000009
【図８】
2005010760.tif 000010
【図９】
2005010760.tif 000011
【図１０】
2005010760.tif 000012
【図１１】
2005010760.tif 000013
【図１２】
2005010760.tif 000014
【図１３】
2005010760.tif 000015
【図１４】
2005010760.tif 000016
【図１５】
2005010760.tif 000017
【図１６】
2005010760.tif 000018
【図１７】
2005010760.tif 000019
【図１８】
2005010760.tif 000020
【図１９】
2005010760.tif 000021
【図２０】
2005010760.tif 000022
【図２１】
2005010760.tif 000023
【国際調査報告】
2005010760.tif 000024
2005010760.tif 000025