(57)【特許請求の範囲】
【請求項１】
データを記憶するためのキャッシュメモリにおけるエラーを認識する方法であって，キャッシュメモリに格納されているデータへのアクセスが前記データに対応づけられているアドレスによって行われる，前記方法において，
格納されているデータに対応づけられたアドレスについて，少なくとも１つの第１のシグネチャビットからなる，少なくとも１つの第１のチェックシグネチャが生成されて，同様にキャッシュメモリに格納され、
前記データと付属の第１のチェックシグネチャのグループに，前記キャッシュメモリ内のそれぞれ第１のラインインデックスが対応づけられて，前記キャッシュメモリにつけられている第２のラインインデックスと比較され，その場合に前記第１のラインインデックスがラインデコーディングによって前記キャッシュメモリから検索されることを特徴とする，キャッシュメモリにおけるエラーを認識する方法。
【請求項２】
前記第１のチェックシグネチャの検査が，前記キャッシュメモリへの各読取りアクセスの際に行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のチェックシグネチャの少なくとも１つの，格納されている第１のシグネチャビットが，前記キャッシュメモリに付与されているアドレスから形成される，第２のチェックシグネチャの第２のシグネチャビットと比較されることを特徴とする請求項１に記載の方法。
【請求項４】
前記第１のチェックシグネチャの少なくとも１つの，格納されている第１のシグネチャビットが，前記キャッシュメモリに付与されたアドレスとともに引き渡される第２のチェックシグネチャの第２のシグネチャビットと比較されることを特徴とする請求項１に記載の方法。
【請求項５】
有効性ビットが，前記キャッシュメモリ内に少なくとも二重に格納されることを特徴とする請求項１に記載の方法。
【請求項６】
有効性ビットがシングルで格納されて，ｎ−ｏｕｔ  ｏｆ−ｍテストを用いて検査され，その場合にｍ，ｎは自然数であって，ｍ＞２かつｍ＞ｎ＞ｍ／２であることを特徴とする請求項５に記載の方法。
【請求項７】
有効性ビットが，１−ｏｕｔ  ｏｆ−ｋコードの形式でビットコンビネーションとしてｋ倍格納され，その場合に比較によって２ｋビットコンビネーションから１つのビットコンビネーションが有効であると認識されて，その場合にｋが自然数に相当することを特徴とする請求項５に記載の方法。
【請求項８】
前記データが，インストラクションのみからなることを特徴とする請求項１に記載の方法。
【請求項９】
それぞれの比較結果に従って，エラー信号が発生されることを特徴とする請求項３，４，５，６又は７に記載の方法。
【請求項１０】
前記エラー信号が，キャッシュ−ミス−信号として処理されることを特徴とする請求項９に記載の方法。
【請求項１１】
それぞれの比較結果に従って，少なくとも１つのエラーが認識され，エラーが認識された場合にはデータが改めて前記キャッシュメモリにロードされることを特徴とする請求項２から８のいずれか１項に記載の方法。
【請求項１２】
データを記憶するためのキャッシュメモリにおけるエラーを認識する装置であって，キャッシュメモリに格納されているデータへのアクセスが，前記データに対応づけられたアドレスによって行われる，前記装置において，
格納されているデータに対応づけられたアドレスについて，少なくとも１つの第１のシグネチャビットからなる少なくとも１つの第１のチェックシグネチャを形成して，同様にキャッシュメモリに格納する手段が設けられ、
前記データと付属の第１のチェックシグネチャのグループに，前記キャッシュメモリ内のそれぞれ第１のラインインデックスが対応づけられて，前記キャッシュメモリにつけられている第２のラインインデックスと比較され，その場合に前記第１のラインインデックスがラインデコーディングによって前記キャッシュメモリから検索されることを特徴とするキャッシュメモリにおけるエラーを認識する装置。
【請求項１３】
エラーを認識する装置を有するキャッシュメモリであって，キャッシュメモリに格納されているデータへのアクセスが，前記データに対応づけられたアドレスによって行われる，前記キャッシュメモリにおいて，
格納されているデータに対応づけられたアドレスについて，少なくとも１つの第１のシグネチャビットからなる少なくとも１つのチェックシグネチャが生成されて，この第１のチェックシグネチャがキャッシュメモリに格納され、
前記データと付属の第１のチェックシグネチャのグループに，前記キャッシュメモリ内のそれぞれ第１のラインインデックスが対応づけられて，前記キャッシュメモリにつけられている第２のラインインデックスと比較され，その場合に前記第１のラインインデックスがラインデコーディングによって前記キャッシュメモリから検索されることを特徴とするキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，独立請求項に記載のキャッシュメモリのためのエラーを認識する方法と装置，および該当するキャッシュメモリに関する。
【背景技術】
【０００２】
今日のプロセッサのクロック周波数は，一般的に，特に外部のメモリにアクセスすることのできる周波数よりも，ずっと高い。この周波数差を補償するために，キャッシュメモリが使用される。その場合にこの種の高速のバッファメモリと該当するメインメモリとの協働によって，アクセスタイムを著しく減少させることができる。エラー許容（ｆａｉｌｕｒｅ  ｔｏｌｅｒｎａｔ）する計算機においては，今日では，キャッシュメモリにおいてデータをエラー認識する，あるいはエラー補正するコード（ＥＣＣ  Ｅｒｒｏｒ  Ｃｏｄｅ  ｃｏｒｒｅｃｔｉｏｎ）を介して保護することが，一般的である。しかし，キャッシュメモリのロジック内にエラーが発生した場合には，このデータ保護ではもはや十分ではない。特にキャッシュメモリのロジックの，ますます小さくなる構造によって，このデータ保護は，特に一過性のエラーに対して，ますます弱くなっている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従って本発明の課題は，データ保護の他に，他のエラー可能性も排除し，それによって従来技術が成し遂げることができるよりも，もっと安全なキャッシュメモリを提供することである。
【発明の利点】
【０００４】
本発明は，キャッシュメモリのためのエラー認識する方法と装置およびデータを記憶するための該当するキャッシュメモリを示しており，その場合にキャッシュメモリに格納されているデータへのアクセスは，このデータに対応づけられたアドレスによって行われ，かつ好ましくは格納されているデータに対応づけられたアドレスについて，少なくとも１つの第１のシグネチャビットからなる少なくとも１つの第１のシグネチャが発生されて，同様にキャッシュメモリに格納される。
【０００５】
それによって，キャッシュデータの公知の保護の他に，エラー認識および／またはエラー補正によってキャッシュロジックを保護することも可能であるので，読取りアクセスの際にすべてのエラーを認識することのできる，キャッシュメモリを実装することができる。というのは，キャッシュメモリへの各読取りアクセスの際に第１のチェックシグネチャの検査を効果的に実施することができるからである。
【０００６】
好ましくは，第１のチェックシグネチャの少なくとも１つの格納されている第１のシグネチャビットが，キャッシュメモリに付与されたアドレスから形成され，あるいはアドレスと共にすでに一緒に伝送されている（たとえばＣＰＵを有する計算ユニットから），第１のチェックシグネチャの第２のシグネチャビットと比較される。
【０００７】
付加的にキャッシュメモリの有効性ビット内，従ってバリッドビット内のエラーを認識するために，有効性ビットが少なくとも二重に格納される。好ましくは，有効性ビットはｍ倍格納され，かつｎ−ｏｕｔ  ｏｆ−ｍテストを用いて検査され，その場合にｍとｎは自然数であり，その場合にｍは２よりも大きく，かつｎはｍ／２よりも大きい。それによって少なくともワンエラー許容性を得ることができる。
【０００８】
その場合に有効性ビットは，１−ｏｕｔ  ｏｆ−ｋコードの形式で，ｋ倍格納することもでき，その場合にｋは自然数に相当し，それによって好ましい方法で，マルチエラーを認識することができる。というのはその場合に１−ｏｕｔ  ｏｆ−ｋコードに従って２ｋのビットコンビネーションから１つのみが有効になるからである。
【０００９】
特にインストラクションキャッシュ，従ってデータとしてインストラクション，すなわち指令のみが格納されるキャッシュメモリにおいて，本発明を使用することが効果的である。この場合にはほぼ読取りエラーのみが考慮されるので，その場合には本発明に基づく方法と本発明に基づく装置および該当するキャッシュメモリは，保護ないしエラー認識とエラー補正をほぼ完全にカバーすることができる。
【００１０】
好ましくは，データのセットないしグループが付属の該当する第１のチェックシグネチャと一緒に第１のラインインデックスの元でキャッシュメモリに格納され，その場合にこの第１のラインインデックスはラインデコーディングによってキャッシュメモリから検索されて，つけられている第２のラインインデックスと一致について比較される。
【００１１】
チェックシグネチャまたは有効性ビットあるいはラインデコーディングによって検索されたラインインデックスのそれぞれの比較に従って，それに応じてエラー信号が発生される。このエラー信号は，１つには，普遍的に発生させること，従ってエラーが認識された場合，および一致が認識された場合に異なるように発生させることができ，あるいはエラーが認識された場合にだけこの種のエラー信号が発生される。
【００１２】
好ましくはこのエラー信号は，エラーが認識された場合には，キャッシュミス信号として処理され，その結果として，この種のエラーのあるデータないしアドレスは使用されず，補正され，あるいは置換される。
【００１３】
エラーが認識された場合に，好ましくはデータないしインストラクションが新たにバックグラウンドメモリからキャッシュメモリへロードされる場合には，それによって可用性の高いエラー許容するシステムを得ることができ，そのシステムはさらに，安価なエラー認識機構を特徴としている。
【００１４】
他の利点および好ましい形態は，明細書および請求項の特徴から明らかにされる。
【００１５】
以下，図面に示す図を用いて本発明を詳細に説明する。
【発明を実施するための最良の形態】
【００１６】
図１は，フォアグラウンドメモリまたはキャッシュメモリＣＳとメインメモリまたはバックグラウンドメモリＨＳを示している。さらに，たとえば中央演算ユニットに相当する，アクセスジェネレータＺＧが示されている。データを要請し，または変化させるユニット，従ってアクセスジェネレータＺＧとバックグラウンドメモリＨＳとの間に，制御，いわゆるキャッシュコントローラＣＣが接続されており，そのキャッシュコントローラはデータをキャッシュメモリＣＳ内に格納して，以降のアクセスのために蓄える。アクセスジェネレータとキャッシュコントローラは，アドレス線ＡＤＲ１，データ線Ｄ１および書込み／読取り線Ｒ／Ｗを介して互いに接続されている。同様にキャッシュコントローラＣＣは，キャッシュメモリＣＳとアドレス線ＡＤＲ２，データ線Ｄ２および書込み／読取り線Ｒ／Ｗを介して接続されている。この種の接続は，アドレス線ＡＤＲ３，データ線Ｄ３および書込み／読取り線Ｒ／Ｗによって，キャッシュコントローラＣＣとメインメモリＨＳとの間にも存在する。
【００１７】
一方の伝送方向のみが必要とされる場合，たとえば命令における作業メモリ，つまり命令のみが格納されているキャッシュメモリから，命令を読み出すだけの場合には，Ｒ／Ｗ線，従ってアクセスジェネレータＺＧとキャッシュコントローラＣＣの間およびキャッシュコントローラＣＣとバックグラウンドメモリＨＳの間の書込み／読取り線は，省かれる。もちろん，キャッシュコントローラはフォアグラウンドメモリまたはキャッシュメモリＣＳ上で常に書込みかつ読取りができなければならないので，キャッシュコントローラＣＣとキャッシュメモリＣＳの間のＲ／Ｗ線は，命令キャッシュの場合でも維持される。
【００１８】
従ってアクセス要求は，アドレスと，書込みアクセスの場合には新しいデータからなり，アクセスの種類が純粋な指示キャッシュではない場合，つまり読取りまたは書込みの場合に，Ｒ／Ｗリード−ライト−線を介して伝送する。アクセスジェネレータＺＧは，この種の要求や意図をキャッシュコントローラＣＣへ送信し，キャッシュコントローラはそれを，特にキャッシュメモリＣＳおよび／またはバックグラウンドメモリＨＳへの適切な要求によって，操作する。アクセスジェネレータが，中央演算ユニットＣＰＵである場合，あるいはそれがＣＰＵに含まれている場合には，アクセスアドレスは一般にメモリアドレスレジスタＳＡＲ内に，そして書き込むべきデータは書込みレジスタＳＲ内にあって，それに対して読み取られたデータは，一般に読取りレジスタＬＲに記録される。
【００１９】
本発明に基づき，以下で詳述する比較を実施するために，比較器コンポーネントＶＫが設けられている。ラインインデックスを検索するために，ラインデコーダＺＤが設けられており，かつ本発明に基く比較のためにアドレス情報を検索するためにアドレスブロックＡＤＲが設けられている。それぞれ適用に応じて，異なる数の比較器を比較器コンポーネントＶＫ内に設けることができる。同様に，ブロックＶＫ，ＺＤおよびＡＤＲの使用も固定的ではなく，それぞれ適用に応じて変化することができる。特にこれらのブロックは，好ましくは任意の構成において，キャッシュコントローラＣＣに対して外部に位置づけられ，接続されてもよい。
【００２０】
図２は，キャッシュメモリにおいてエラー認識するための，本発明に基づく方法を示している。このキャッシュメモリを使用するための基本前提は，エラー認識コードまたはエラー補正コード，つまりシグネチャによるアドレスの保護である。最も簡単な場合においては，このシグネチャは，シグネチャビット，たとえばパリティビットのみからなる。他方で，保護は，それに応じたビット数によってより確実なエラー認識を可能にするために，ベルガーコードまたはボーズラインコードなどのような，より複雑なＥＤコード（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ）によって，あるいはまた，たとえばハミングコードのような，より複雑なＥＣＣコード（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）によっても，実現することもできる。しかしまた，コードジェネレータとして，たとえばジェネレータテーブル（固定配線またはソフトウェア）を使用して，アドレスの枠内でビットの所定の入力パターンに任意の長さの所望のコードパターンを対応づけることもできる。
【００２１】
図２には，キャッシュメモリ１００が，象徴的に表示されている。そこでは，領域が１０３，１０４，１０５，１０６，１０７，１０８および１１０に区分されている。領域１０５と１０７，そして１１０等において，各データがキャッシュメモリに格納され，キャッシュに格納されているメモリ内のエラーを認識するために，ＥＣＣシグネチャによって補完される。アドレスシグネチャＡ−ＥＣＣは，ここでは領域１０６，１０８および１１０以降に格納されて，アドレスに従って該当するデータに対応づけられる。例においては，アドレス１１１はブロック１１２からなり，そのブロック１１２は，該当するデータブロックが実際にどの開始アドレスに属しているかを示す，タグ（Ｔａｇ）または識別子を有している。というのは，図２に示すように，データ１０５と１０７のように，バックグラウンドメモリの複数の領域が，１行ないし１セットに示されているからである。この例では，ブロック１０２によれば，１セットまたは１ラインには，タグ０からタグ７までの８つのタグが含まれている。ブロック１１３は，ラインインデックスを有しており，そのラインインデックスによって，ここではブロック１０１に示すライン０からライン７の，ライン選択が行われる。さらに，ブロック１１４とブロック１１５は選択的に備えられ，これらのブロックは，１ラインまたは１タグの内部でのワード選択またはビット選択に用いられる。フィールド１１４と１１５は，個々のデータフィールドの使用されるワード幅に著しく依存しており，必ず備えられるものではない。フィールド１１６は，アドレス１１１の，従ってフィールド１１２から１１５のチェックシグネチャを有している。
【００２２】
キャッシュメモリ内には，２種類の基本的なエラーがある。１つは，キャッシュメモリに格納されているデータ内のエラーであって，他方は，キャッシュロジック，特にキャッシュコントローラ内のエラーである。キャッシュメモリ内にあるデータは，常にメインメモリまたはバックグラウンドメモリ内，あるいは特に不揮発性メモリ内の，他の箇所にさらに格納されている。２つのメモリ内，つまりキャッシュメモリとバックグラウンドメモリ内のデータが一貫していることが保証される場合には，キャッシュメモリ内のデータのエラーは，認識されるだけでよく，補正される必要はない。この認識は，図２に示すように，ＥＤコードまたはＥＣＣコードによるデータの保護によって行うことができる。たとえばデータキャッシュにおいて，データが一貫していない場合には，図２に示すように，ＥＣＣコードを使用することができる。
【００２３】
キャッシュロジック内のエラーを認識するために，キャッシュメモリ内のデータワードへ読取りアクセスする際に，直接対応づけられているキャッシュにおいて，まずラインが選択される。つまり，ラインインデックスによって，該当するキャッシュメモリラインが選択される。次に，このライン内で，このライン内のタグフィールド１１２がブロック１０２と参照符号Ｖ４に示すように合っているか，が調べられる。Ｖ４においては，タグフィールドがＶ４に基づくタグフィールド比較ＶＴａｇを介してブロック１０２に基づくタグと比較され，一致する場合にはキャッシュヒットが生じる。そうである場合，すなわちキャッシュヒットの場合には，有効なバリッドビットＶにおいて該当するワードがラインから読み出される。キャッシュロジックのこの領域内のエラーは，ライン選択，タグメモリ１０２およびタグフィールドのための比較器内において発生する可能性がある。これらのエラーは，キャッシュメモリ内の誤ったラインまたは誤ったデータがアクセスされることにおいて，作用する。
【００２４】
有効性ビット，つまりバリッドビット内のエラーを認識するために，これは少なくとも二重にされなければならず，従ってたとえばフィールド１０３内または他のフィールドに二重に格納される。ｎ−ｏｕｔ  ｏｆ−ｍコード，従ってｎ−ｏｕｔ  ｏｆ−ｍテストも効果的であるので，カップリングエラーによって同じ方向（ｗａｙ）の複数のビットが反転する場合に，常にまだ認識を行うことができ，その場合にｎとｍは自然数であり，その場合にｍ＞２であってｎ＞ｍ／２である。それによって少なくとも１つのワンエラー許容を保証することができる。
【００２５】
その場合に有効性ビットは，１−ｏｕｔ  ｏｆ−ｋコードの形式で，ｋ倍で格納することもでき，その場合にｋは自然数に相当し，それによって好ましくはビットが反転する場合にマルチエラーを認識することもできる。というのは，１−ｏｕｔ  ｏｆ−ｋコードによれば，２ｋのビットコンビネーションから１つのビットコンビネーションのみが有効であり，従って比較によって有効な組合わせからの任意の偏差を認識することができる。
【００２６】
その場合にバリッドビットまたは有効性ビットは，キャッシュメモリセル内にそもそも有効なデータが存在するか，を表す。というのは，タグフィールドもデータブロックも常にビットパターンを有しているからである。しかしデータは，最初は，バックグラウンド内のアドレス内にある値には相当しない。ここでも，ブロックの部分について個別フラグを設けることができる。部分１０４内には，いわゆる変更されたフラグあるいはダーティフラグないしビットパターンＤが設けられており，それが，データブロックの内容がまだバックグラウンドメモリと一致しているか，あるいは読み取られて，次に変更されたが，まだ書き戻されていないか，を表す。
【００２７】
すなわち，部分１０６や１０８など，従ってＡ−ＥＣＣに基づくチェックシグネチャが，該当するチェックパターン，従ってブロック１１６に示すチェックシグネチャと，矢印Ｖ−ＥＣＣとＶ２に従って比較され，その後，結果がＶ３に示すように，チェックされた正しい有効ビットによってチェックされて，その場合に一致した場合には「有効なデータ」という説明が得られる。
【００２８】
ライン選択は，本発明によれば，ラインデコーダまたはラインデコーディングと考えられる。エラーは，ここでは，比較Ｖ１を介して示されるように，選択されたラインを逆デコーディングし，得られたアドレスを選択されたラインインデックスと比較することによって認識される。
【００２９】
普及しているキャッシュメモリ内に設けられているコンパレータ，ここではＶ１からＶ４で象徴的に図示されている比較器は，図１に示す比較コンポーネントＶＫ内にまとめて収容することができる。それぞれのアドレス−ＥＣＣの形成は，図１に示すブロックＡＤＲ内で行われ，ラインデコーディングはブロックＺＤ内で行われる。それぞれのアドレスＥＣＣの形成は，計算ユニットのＣＰＵ内，従って特にＺＧ内で行うことができる。
【００３０】
タグフィールドと場合によっては発生するエラーを検査する場合に，特別な実施形態の比較がビット単位で行われる。その場合に，エラーケースにおいては，シングルエラーから出発することができる。このシングルエラーは，その後，該当するデータと共に格納されているアドレスＡ−ＥＣＣのエラー認識コードによって認識される。従ってその場合にキャッシュメモリ内のすべてのエラー，過渡的なエラーも，認識することができる。これは，上述したシングルエラーケースについては，アドレス保護のために１チェックビットだけ，特にパリティビットだけが使用される場合でも，当てはまる。ワード選択内のエラーは，同様に，一緒に記憶されるアドレスのチェックシグネチャの比較によって認識される。
【００３１】
本発明に基づく方法，装置および該当するキャッシュメモリは，キャッシュメモリへ書き込む場合の所定のエラーを選択するためにも，使用することができる。キャッシュメモリに書き込む場合にキャッシュコントローラＣＣのエラーによってアドレッシングエラーが発生した場合には，誤ったラインアドレス，従って誤ったラインインデックスを，同様にラインデコーダによって認識することができる。タグフィールドが歪曲された場合には，エラーは，データを再び読み出す場合に，データと共に記憶されているエラー認識コードによって認識される。同様に，アドレスコーディングビット内のエラーも，読み出しの際に認識される。
【００３２】
純粋なインストラクションキャッシュ，従ってデータとして指令のみが格納されているキャッシュメモリにおいては，ほぼ読取りエラーのみを考慮すればよいので，その場合にはエラーは読み出す際にエラー認識によって即座に認識される。
【００３３】
エラーが認識された場合に，データやインストラクションをバックグラウンドメモリからキャッシュメモリへ新たにロードして，それによって可用性の高いエラー許容するシステムを得ることができ，そのシステムはさらに安価なエラー認識機構を特徴としている。その場合にこのようにバックグラウンドメモリから繰返しロードすることは，２つのファクター，特に一方では，エラーないしそれぞれのエラー認識，他方ではエラーが生じたデータ部分ないしインストラクション部分に関係するようにすることができる。すなわち，最も簡単な場合においては，エラーが発生した場合に，データ（従ってデータおよび／またはインストラクション）はそっくりバックグラウンドメモリからキャッシュメモリへロードされる。上述したエラー認識機構に応じて所定のエラーに従って，最後にロードされたデータ構成部分の一部のみを新たにロードすることができる（たとえばそれぞれエラーが重大になるほど，それだけデータ割合が大きくなる）。その場合にこれら２つのファクターに従って任意の段階付けと関係が可能である。
【００３４】
従って本発明に基づく方法と装置およびキャッシュメモリに従って，安価な方法でデータ内のエラーに対しても，キャッシュロジック内のエラーに対しても保護されている，より安全で可用性の高いキャッシュメモリを提供することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明に基づくキャッシュメモリシステムの例を示している。
【図２】キャッシュメモリおよび本発明に従って行われる，エラー認識のための比較を示している。
【図１】
0004773343.tif 000002
【図２】
0004773343.tif 000003