(57)【要約】デジタル・データ処理システムにおけるキャッシュ・メモリーへのデータ書込みの際に、その時点で所望のキャッシュ・ストレージ行に記憶されている既存のデータが読み出され、パリティ・チェックを受ける。パリティ・エラーがない場合は読み出されたデータは新しいデータによって変更される。パリティ・エラーが検出された場合は、キャッシュ・ミスが信号で伝えられ、データの読み出された行がそのキャッシュ・メモリーにライトバックされる。キャッシュ・メモリーへのライトバック経路上の障害のあるデータの行の上でエラー訂正コード検査およびエラー訂正が実施される。【選択図】図３
2004514184.tif 000002
【特許請求の範囲】
【請求項１】
データ・サンプル内のエラーを訂正するための方法であって、
データ・サンプルのパリティをチェックし、
パリティ・エラーが検出された場合に、前記データ・サンプルに対しエラー訂正を実行し、
パリティ・エラーが検出されなかった場合に、少なくとも１つの後のデータ処理オペレーションにおいて、訂正をすることなく前記データ・サンプルを使用する、
ことを備えた方法。
【請求項２】
複数バイトのデータ・サンプル内のエラーを訂正するための方法であって、
複数バイトのデータ・サンプルにおける各バイトのパリティをチェックし、
何れかのバイトにおいてパリティ・エラーが検出された場合に、前記全データ・サンプルに対しエラー訂正を実行し、
パリティ・エラーが検出されなかった場合に、少なくとも１つの後のデータ処理オペレーションにおいて、訂正をすることなく前記データ・サンプルを使用する、
ことを備えた方法。
【請求項３】
メモリー内のソフト・エラーを訂正するための方法であって、
メモリー内の所定の位置からデータを読み出し、
前記データのパリティをチェックし、
パリティ・エラーが検出された場合に、前記データに対しエラー訂正を実行すると共に、該訂正されたデータを前記所定のメモリー位置に書き戻す、
ことを備えた方法。
【請求項４】
前記データが複数バイトのデータ・セグメントであり、各バイトの前記パリティがチェックされ、何れかのバイトにおいてパリティ・エラーが検出された場合に、前記全データ・セグメントに対して前記エラー訂正が実行されるものである請求項３に記載の方法。
【請求項５】
メモリー内のソフト・エラーを訂正するための方法であって、
メモリー内にデータを記憶し、
前記メモリー内に前記データのパリティ・ビットを記憶し、
前記メモリー内に前記データのエラー訂正コード・ビットを記憶し、
前記データ、並びにそのパリティ・ビット及びエラー訂正コード・ビットを、前記メモリーから読み出し、
前記データの正当性を判断するために前記パリティ・ビットを使用し、
不正なデータを訂正するために前記エラー訂正コード・ビットを使用する、
ことを備えた方法。
【請求項６】
前記パリティ・ビットが、前記データのパリティをチェックし、更に、パリティ・エラーが検出された場合のエラー信号を生成するために使用され、
パリティ・エラーが検出された場合にのみ、前記データに対するエラー訂正が実行されるものである請求項５に記載の方法。
【請求項７】
メモリーへのデータ書き込みの際に、メモリー内のソフト・エラーを訂正するための方法であって、
メモリー内の所定のストレージ行への書き込みを開始し、
前記所定のストレージ行に現在ある既存データを読み出し、
前記読み出した既存データのパリティをチェックし、
パリティ・エラーが検出されなかった場合に、前記既存データに新たなデータをマージすると共に、該マージしたデータを前記メモリー内の前記所定のストレージ行へ書き込み、
パリティ・エラーが検出された場合に、前記既存データに対しエラー訂正を実行すると共に、該訂正済みデータを前記メモリー内の前記所定のストレージ行へ書き込む、
ことを備えた方法。
【請求項８】
前記所定のストレージ行への前記書き込みの要求が、前記訂正済みの既存データの書き込みが成功した後に再開される請求項７に記載の方法。
【請求項９】
メモリー内のソフト・エラーを訂正するための装置であって、
データを記憶するためのメモリーと、
前記メモリーからデータを読み出すための回路と、
前記読み出したデータのパリティをチェックし、パリティ・エラーが検出された場合にエラー信号を生成するためのパリティ・チェッカーと、
パリティ・エラーのあるデータを訂正するためのエラー・コレクタと、
前記パリティ・エラー信号に応じて、訂正済みデータを生成するために、前記読み出したデータが前記エラー・コレクタに提供されるようにする回路と、
前記メモリーへ前記訂正済みデータを書き戻すための回路と、
を備えた装置。
【請求項１０】
前記メモリーがキャッシュ・メモリーである請求項９に記載の装置。
【請求項１１】
前記パリティ・チェッカーが、排他的論理和回路ツリーである請求項９に記載の装置。
【請求項１２】
前記エラー・コレクタが、前記読み出されたデータ内のエラー・ビットを特定し、そのビットの２進状態を反転するシングル・ビット・エラー・コレクタである請求項９に記載の装置。
【請求項１３】
メモリー内のソフト・エラーを訂正するための装置であって、
データの複数の行を記憶するためのメモリーと、
前記メモリー内にデータの行を書き込むための書き込み回路であって、前記各行が、複数のデータ・バイト、該データ・バイトに対するパリティ・ビット、及び該行全体に対するエラー訂正コード・ビットを備えているものと、
前記メモリーからデータの行を読み出すための読み出し回路と、
前記読み出し回路に接続され、各読み出したバイトのパリティをチェックし、何れかのバイトにおいてパリティ・エラーが検出された場合にエラー信号を生成するパリティ・チェッカーと、
前記読み出したデータの行においてエラー訂正を実行するためのエラー・コレクタと、
パリティ・エラー信号に応じて、これに関連する前記読み出されたデータの行が前記エラー・コレクタに提供されるようにし、訂正されたデータの行を生成し、更に、前記訂正されたデータの行を前記メモリーに書き戻すよう、これを前記書き込み回路へ提供する制御回路と、
を備えた装置。
【請求項１４】
前記メモリーがキャッシュ・メモリーであり、
前記パリティ・チェッカーが、排他的論理和回路ツリーであり、
前記エラー・コレクタが、前記読み出されたデータの行内のエラー・ビットを特定し、そのビットの２進状態を反転するシングル・ビット・エラー・コレクタである、
請求項１３に記載の装置。
【請求項１５】
新しいデータを読み出したデータの行にマージし、該マージしたデータを、前記メモリーに記憶するために前記書き込み回路へ提供するデータ・マージ回路を更に含み、前記制御回路が、パリティ・エラー信号が検出されたときに前記データ・マージ・オペレーションをキャンセルするものである請求項１３に記載の装置。
【請求項１６】
データ・サンプル内のエラーを検出し、訂正する方法であって、
少なくとも１つのデータ・バイト、各データ・バイト毎の少なくとも１つのパリティ・ビット、及び該データ・サンプルに対する少なくとも１つのエラー訂正コード・ビットを含むデータ・サンプルを、コンピュータ・データ・キャッシュから読み出し、
前記データ・サンプルに対して、少なくとも１つのデータ・バイトのパリティをチェックし、
パリティ・エラーが検出された場合に、前記少なくとも１つのエラー訂正コード・ビットを用いて、前記少なくとも１つのデータ・バイトに対してエラー訂正を実行し、訂正された前記少なくとも１つのデータ・バイトを前記キャッシュへ書き戻して、不正な前記少なくとも１つのデータ・バイトを置き換える、
ことを備えた方法。
【請求項１７】
前記データ・サンプル内にパリティ・エラーが検出されなかった場合に、新たなデータを導入し、該修正されたデータ・サンプルを該データ・サンプルが読み出されたキャッシュ上の位置において該キャッシュに書き戻されることにより、前記データ・サンプルが修正されることを許容する、
ことを更に備えた請求項１６に記載の方法。
【請求項１８】
前記データ・サンプル内にパリティ・エラーが検出されなかった場合に、前記データ・サンプルが前記キャッシュから読み出され、少なくとも１つのコンピュータ・オペレーションで使用されることを許容する、
ことを更に備えた請求項１６に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の技術分野】本発明は、デジタル・データにおけるソフト・エラーを訂正するための方法および装置に関し、より詳細には、コンピュータ・メモリー内のソフト・エラーを訂正するために有用である。
【０００２】
【発明の背景】現代の集積回路メモリー・チップ上に記憶されているデータは、ガンマ線、宇宙線、アルファ粒子、および他の環境要因によって生じるいわゆる「ソフト・エラー」を被り易い。ガンマ線のメモリー・チップ通過は、例えば、記憶されているデータ・ビットの２進状態を反転させるに十分な障害を生じる場合がある。これは、チップ構造に永続的な障害を与えるものではなく、また、障害を受けたメモリー・セルは、その後データを記憶する上で完璧に再利用することができることから「ソフト」エラーと呼ばれる。
【０００３】ソフト・エラーは、小型で高速のキャッシュ・メモリー・チップの場合には特に厄介である。ソフト・エラーの有無に関わらず「汚い」キャッシュに記憶の更新が行われる場合、特にデータの変更されていないセグメント内にエラーがある場合、データの保全性は即座に失われる。訂正しないまま放置されると、ソフト・エラーは、致命的なダブルビット・エラーに変化する可能性がある。
【０００４】ソフト・エラーを訂正するためには、様々なエラー訂正方法が提案されてきた。提案された１つの方法は、ソフト・エラー事象の結果変化したビットを検出し、位置付けるために使用することができるエラー訂正コード・ビットの集合を生成し、記憶されているデータの各行に含めるという方法である。データの各行が後でメモリーから読み出される際、エラー訂正コード・ビットを含むすべてのデータ・ビットは１つのグループとして復号され、デコーダ出力は、仮にあるならば、どのデータ・ビットにエラーがあるかを示す。そのデータは、エラー・ビットの２進状態を反転することによって訂正される。
【０００５】残念ながら、このエラー訂正方法は、時間がかかり、システム性能に悪影響を及ぼし、かつ待ち時間を延長するものである。
【０００６】
【発明の概要】本発明は、データ保全性の問題に対する解決策を、待ち時間とデータ処理能力に多大な妥協を強いることなく提供するものである。具体的には、エラー訂正試験は、すべてのデータ・サンプル上またはすべてのデータ・セグメント上で実施されるものではない。これは必要なときだけ実施されるものである。エラー訂正がいつ必要かを判定するために、簡単なパリティ・チェックが使用される。
【０００７】キャッシュ・メモリーに記憶されているデータの場合、例えば、そのキャッシュ・メモリーへのデータ書き込みの際、所望のキャッシュ・ストレージ行上にその時点で記憶されている既存のデータが読み出され、パリティ・チェックが施される。読み出されたデータは、パリティ・エラーがない場合のみ新しいデータによって変更される。パリティ・エラーが検出された場合、キャッシュ・ミスが信号で伝えられ、データの読み出された行がそのキャッシュ・メモリーにライトバックされる。エラー訂正コードの検査およびエラー訂正が、キャッシュ・メモリーへのライトバック経路上のデータの不良行上で実施される。
【０００８】本発明を、別の利点および機能と共によりよく理解するためには、添付の図面と共に以下の説明を参照するものとし、本発明の範囲は添付の特許請求の範囲で指摘するものとする。
【０００９】
【好適な実施形態の説明】図１を参照すると、メモリー内のソフト・エラーを訂正するための装置を含むデジタル・データ処理システムが示されている。当該メモリーは、キャッシュ・メモリー１０で表わされる。このキャッシュ・メモリー１０はデータの複数の行を記憶しており、そのうちの１つの行の構成を図２に示す。図２のデータ・フィールドには、データの複数のバイト、典型的には４または８バイトが含まれる。パリティ・フィールドには、そのデータ・フィールド内の各バイトに対する１つのパリティ・チェック・ビットが含まれる。ＥＣＣ（エラー訂正コード）フィールドは、行全体に対するエラー訂正コード・ビットを含む。これらのＥＣＣビットによって、エラー・ビットのキャッシュ・ストレージ行内における位置を判定することが可能になる。
【００１０】図１に示す装置は、例えば、いわゆる「マイクロプロセッサ」の形式をとるデジタル・データ・プロセッサ１１によって発行された命令信号および制御信号によって操作および制御される。図１の装置は、さらに、キャッシュ１０の中にデータの行を記憶するための書込み回路１２を含み、データのそのような各行は図２に示す構成を有する。このデータは、データ・バス１３から獲得され、データ・マージ回路１４によって書込み回路１２に供給される。読み込み回路１５は、キャッシュ・メモリー１０からデータの行を読み出し、それをデータ・バス１３に供するために提供されている。パリティ・チェッカー１６は、読み出し回路１５の出力に接続されており、各読み出されたバイトのパリティをチェックし、何れかのバイトにパリティ・エラーが検出された場合には、エラー信号を生成する。このパリティ・エラー信号は、試みたキャッシュ・アクセスに失敗したことをプロセッサ１１に示す「キャッシュ・ミス」信号としてプロセッサ１１に供給される。キャッシュ１０における読み出すべきまたは書き込むべき特定記憶行の選択は、プロセッサ１１によってキャッシュ１０に供給されるアドレス信号によって達成される。
【００１１】図１の装置は、パリティ・エラーを有するデータを訂正し、エラーのない訂正されたデータを生成するためのエラー・コレクタ１７をも含む。訂正されるべきデータは、データ・バス１３によって獲得され、訂正されたデータは、キャッシュ１０にライトバックするために書込み回路１２に供給される。ＥＣＣ（エラー訂正コード）ジェネレータ１８は、データの行がキャッシュ１０に書き込まれる時に、記憶されるべきＥＣＣビットを生成するために設けられている。ＥＣＣジェネレータ１８は、書込み回路１２に供給するデータの行を調べ、キャッシュ１０に記憶するための適切なＥＣＣビットを生成する。
【００１２】さらなる、大きなメモリー・ユニットまたはストレージ・ユニット２０も、適切な書込み回路２１および読み込み回路２２によってデータ・バス１３に接続されている。ストレージ・ユニット２０のアクセスは、プロセッサ１１から供給されるアドレス信号によって達成される。
【００１３】図３を参照すると、本発明を実施するための代表的な方法を説明する流れ図が示されている。この方法は、キャッシュ１０に書込みむ際のソフト・エラーを訂正するために使用される。ブロック３０によって示されるように、プロセッサ１１は、キャッシュ・オペレーションへの記憶を開始し、データを書き込むことが望まれる特定キャッシュ行のために適切なアドレスをキャッシュ１０に送信するものである。ブロック３１で表わされる次のステップは、その時点で、プロセッサ１１によってアドレスされる所定の記憶行上に常駐する既存のデータを読み込む。ブロック３２で示すように、パリティ・チェッカー１６は、この既存のデータの各バイトのパリティをチェックし、既存のデータの何れかのバイトに対するパリティ・エラーが検出された場合、パリティ・エラー信号を生成する。
【００１４】ブロック３３で示すように、パリティ・エラーが検出されない場合、記憶されることが望まれる新しい１つまたは複数のバイトは、既存のデータとマージされ、それによって生じたマージされたデータは、既存のデータを獲得したのと同じ行アドレスのキャッシュ１０に書き込まれる。このマージングはデータ・マージ回路１４によって達成され、新しいデータ・バイトと既存のデータ・バイトは、データ・バス１３によってそこに供給される。その新しいバイトは、新しいバイトによって専有されるバイト位置で既存のバイトに取って代わる。その結果生じるマージされたデータは、書込み回路１２によってキャッシュ１０に書き込まれる。書込みが成功裏に完了したことに引き続き、新しいデータの行のためのＥＣＣビットがキャッシュ１０に記憶される。
【００１５】一方、ブロック３４で示すように、パリティ・エラーがデータの読み出された行に関して検出された場合、キャッシュ・ミスがプロセッサ１１に信号で伝えられ、マージされたデータの書込みは発生しない。障害のあるデータの読み出された行は、ブロック３５で示すようにストレージ・ユニット２０に転送され、プロセッサ１１は、キャッシュ１０へのこの障害のある行のライトバックを開始するが、このようなライトバックは、障害のあるデータが獲得された同じキャッシュ行に対するものである。ブロック３６で示すように、このライトバックおいてＥＣＣの検査とエラー訂正が行われる。より具体的には、データの障害のある行はストレージ・ユニット２０から読み出され、エラー・コレクタ１７に供給される。この実施形態では、エラー・コレクタ１７は、シングル・ビットのエラー・コレクタである。したがって、エラー・コレクタ１７は、エラー・ビットのビット位置を判定するためにＥＣＣビットを含むデータの行全体の、ＥＣＣタイプの復号を行う。エラー・コレクタ１７は、次いでエラー・ビットの２進状態を反転し、それによって、エラーのないデータの行を生成する。この訂正されたデータの行は、それの以前のアドレスにあるキャッシュ１０に書き込まれる。このようにしてソフト・エラーは訂正され、プロセッサ１１は、中断されたキャッシュ書込み要求をいつでも再度開始することができるようになる。
【００１６】本発明の利点は、ＥＣＣエラー訂正オペレーションが必要なときだけ実施されるということである。これは、キャッシュに書き込むたびに実施されるのではなく、ソフト・エラーが発見される比較的まれな機会にのみ実施されるものである。したがって、データの保全性は、システム性能とデータ処理能力の速度への影響を最小限にして維持される。その結果、キャッシュ・ストアは、必要に応じて容易にパイプライン処理することができる。
【００１７】本発明が簡易であることは顕著である。より時間の掛かるエラー訂正手続きを実行する必要があるかどうかを判定するために簡単な高速パリティ・チェックが使用される。
【００１８】図４に、データのバイトのパリティをチェックするためのパリティ・チェッカー１６において使用される排他的論理和回路ツリー４０を示す。回路ツリー４０には、排他的論理和回路４１〜４８が含まれており、データ・ビット０〜７はＸＯＲ回路４１〜４４に供給され、パリティ・チェック・ビットＰはＸＯＲ回路４８に供給される。パリティが誤っている場合、出力された行４９でエラー信号が生成される。キャッシュ１０から読み出されたデータの行にある他のバイトに対しても、ツリー４０のような別のＸＯＲ回路ツリーが設けられている。
【００１９】図５は、図１のエラー・コレクタ１７の構成の代表的な形式を示す。図５のエラー・コレクタの実施形態には、異なるデータ・ビットの２進状態を個別に反転するためのマルチプレクサ回路Ｍ０、Ｍ１、．．．ＭＮ集合が含まれる。データのキャッシュ行の各ビットに１つのマルチプレクサ回路がある。これらのデータ・ビットは、Ｄ０、Ｄ１、．．．ＤＮとして識別される。各データ・ビットＤが、そのマルチプレクサの第１の入力に供給される。インバータ回路「Ｉ」は、そのデータ・ビットの反転した複製を、そのマルチプレクサの第２の入力に供給する。切替信号Ｓは、２つの入力のどちらがマルチプレクサのその出力行に渡されることを許可されているかを判定する。データ・ビットにエラーがない場合、反転されていないビットがマルチプレクサの出力に渡される。反対に言えば、データ・ビットにエラーがある場合、反転された複製がマルチプレクサの出力に渡される。このようにして、エラー・データ・ビットの２進状態が反転される。
【００２０】図５のエラー・コレクタには、さらに、エラー・ビットのビット位置を判定するためにＥＣＣビットを含めてデータのキャッシュ行全体のＥＣＣタイプの復号を行うためのデコーダ５０が含まれる。デコーダ５０は、切替信号出力線Ｓ０、Ｓ１、．．．ＳＮの集合を有し、そのような出力線はデータのキャッシュ行の各ビットにある。これらの切替信号出力線は、マルチプレクサ入力の選択を制御するためにマルチプレクサＭ０、Ｍ１、．．．ＭＮのそれぞれに向かう。エラー・Ｄビットがない場合、すべてのマルチプレクサは、反転されていない入力を選択するためにセットされる。一方、エラー・Ｄビットがある場合、そのＤビットに対するマルチプレクサは、反転された入力を選択するためにそのＳ信号によってセットされる。
【００２１】現時点で本発明の好ましい実施形態と見なされるものを記述したが、当業者には、本発明の範囲を逸脱することなく、様々な変更および修正形態が可能であり、したがって、すべてのそのような変更および修正形態は本発明の趣旨および範囲内に含まれることが明らかになろう。
【図面の簡単な説明】
【図１】本発明の代表的実施形態を示すデータ処理システムのブロック図である。
【図２】図１のキャッシュ・メモリー内のデータの行の内容を示す図である。
【図３】本発明の代表的実施形態を実施するための図１に使用されているステップを示す流れ図である。
【図４】図１のパリティ・チェッカーの一実施形態で使用される排他的論理和ツリーの概略回路図である。
【図５】図１のエラー・コレクタ用の代表的な形式を示す概略的回路図である。
【図１】
2004514184.tif 000003
【図２】
2004514184.tif 000004
【図３】
2004514184.tif 000005
【図４】
2004514184.tif 000006
【図５】
2004514184.tif 000007
【国際公開パンフレット】
2004514184.tif 000008
2004514184.tif 000009
2004514184.tif 000010
2004514184.tif 000011
2004514184.tif 000012
2004514184.tif 000013
2004514184.tif 000014
2004514184.tif 000015
2004514184.tif 000016
2004514184.tif 000017
2004514184.tif 000018
2004514184.tif 000019
2004514184.tif 000020
2004514184.tif 000021
2004514184.tif 000022
2004514184.tif 000023
2004514184.tif 000024
2004514184.tif 000025
【国際調査報告】
2004514184.tif 000026
2004514184.tif 000027
2004514184.tif 000028