(57)【要約】【課題】ブロックのエラーコードを生成する。【解決手段】エラーコード生成装置は、複数のデータビットと複数のアドレスビットを有するブロックを生成するブロック生成回路と、そのブロックと複数のマスク行を有するマスクアレイを受け付け、エラーコード生成アルゴリズムを適用して、そのブロックについてのエラーコードを生成するエラーコード生成回路とを備える。エラーコードは、それぞれブロックとマスクアレイの対応するマスク行により決定される複数のチェックビットを有する。各マスク行は、それぞれがブロックの対応するビットに関連する複数のマスクビットを有する。少なくとも１つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、エラーコード生成回路によって生成されたエラーコードがデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、そのマスクビット値が制約されている。【選択図】図７
2017215958.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、
前記ブロックと複数のマスク行を含むマスクアレイを受け付け、エラーコード生成アルゴリズムを適用して、前記ブロックと前記マスクアレイの対応するマスク行によりそれぞれ決定される複数のチェックビットを含むエラーコードを前記ブロックについて生成するエラーコード生成回路と、
を具備する装置であって、
各マスク行は、それぞれが前記ブロックの対応するビットに関連する複数のマスクビットを含み、少なくとも１つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、前記エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するようそのマスクビット値が制約されている、装置。
【請求項２】
前記少なくとも１つのマスク行の各マスク行は、対応するチェックビットの生成用に前記ブロックのいずれのアドレスビットも選択されないようにマスクビット値が配置されている、請求項１に記載の装置。
【請求項３】
前記少なくとも１つのマスク行を形成するマスク行の数が、前記装置が使用するエラーコードスキームによって、かつ、前記ブロックにおける複数のデータビットが偶数か奇数かによって決まる、請求項１又は２に記載の装置。
【請求項４】
前記少なくとも１つのマスク行を形成するマスク行数Ｎ０は、以下の式：
Ｎ０＝１＋Ｃ＋［［（（１＋Ｃ）％２）！＝（Ｄｔ％２）］＆（Ｃ！＝０）］
（式中、Ｃはエラーコードスキームによって訂正可能なビット数であり、Ｄｔは前記複数のデータビットにおけるデータビット数であり、％はモジュロ演算子を示す）により与えられる、請求項３に記載の装置。
【請求項５】
前記少なくとも１つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるようそのマスクビット値が配置されている、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記少なくとも１つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう配置されている、請求項５に記載の装置。
【請求項７】
前記少なくとも１つのマスク行が複数のマスク行を含む場合、前記複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の各データビットが前記複数のマスク行の１つにより選択されるよう配置されている、請求項６に記載の装置。
【請求項８】
前記エラーコード生成アルゴリズムは、前記ブロック及び対応するマスク行から第１チェックビットを生成する主要プロセスと、該第１チェックビットを反転させて第２チェックビットを生成するよう選択的に適用される付加プロセスとを含み、
前記エラーコード生成回路によって生成された前記エラーコードは、前記少なくとも１つのマスク行を形成するいずれかのマスク行を使って生成された前記第２チェックビットと、残りのマスク行のそれぞれを使って生成された前記第１チェックビットとを含む、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
前記主要プロセスは、マスク行を使って前記ブロックを形成するビットのサブセットを選択することと、その選択されたビットのサブセットに対してＸＯＲリダクション演算を行なって関連する第１チェックビットを生成することとを含む、請求項８に記載の装置。
【請求項１０】
前記付加プロセスは、ＸＯＲ演算を行なって前記第１チェックビットの値を反転することを含む、請求項９に記載の装置。
【請求項１１】
記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路であって、
前記書き込みデータと前記特定のメモリアドレスから前記エラーコードを生成する請求項１〜１０のいずれか一項に記載の装置を具備し、
前記ブロックの複数のデータビットが前記書き込みデータから形成され、前記ブロックの複数のアドレスビットが前記特定のメモリアドレスから形成される、書き込み保護回路。
【請求項１２】
記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行う読み取り保護回路であって、
前記読み取りデータと前記特定のメモリアドレスから前記エラーコードを生成する請求項１〜１０のいずれか一項に記載の装置と、
生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、前記生成されたエラーコードを前記読み取りデータに関連して前記記憶装置に格納されたエラーコードと比較するチェック回路と、
を具備し、
前記ブロックの複数のデータビットが前記読み取りデータから形成され、前記ブロックの複数のアドレスビットが特定のメモリアドレスから形成される、読み取り保護回路。
【請求項１３】
マスクアレイを用いて生成されるエラーコードの各チェックビットに対して１つのマスク行が設けられるようにマスクアレイのマスク行数を決定することと、
複数のデータビット及び複数のアドレスビットを含むブロックであって、エラーコードが生成されるブロックのビット数に応じて各マスク行のマスクビット数を決定することと、
マスク行の少なくとも１つについて、処理回路において、ブロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、マスク行のマスクビット値を制約するマスクビット生成プロセスを実行することと、
を具備する、コンピュータにより実施されるマスクアレイ生成方法。
【請求項１４】
前記少なくとも１つのマスク行以外の残りの全てのマスク行について、前記マスクビット生成プロセスでは、デフォルトマスク生成ルールを採用してマスクビット値を決定する、請求項１３に記載のコンピュータにより実施される方法。
【請求項１５】
前記デフォルトマスク生成ルールには、列ベースのハミングルールが含まれる、請求項１４に記載のコンピュータにより実施される方法。
【請求項１６】
前記少なくとも１つのマスク行の各マスク行について、前記マスクビット生成プロセスでは、対応するチェックビットの生成用にブロックのいずれのアドレスビットも選択されないようにマスクビット値を決定する、請求項１３〜１５のいずれか一項に記載のコンピュータにより実施される方法。
【請求項１７】
使用するエラーコードスキームによって、かつ、前記ブロックにおける複数のデータビットが偶数か奇数かによって前記少なくとも１つのマスク行を形成するマスク行の数を決定することをさらに具備する、請求項１３〜１６のいずれか一項に記載のコンピュータにより実施される方法。
【請求項１８】
前記少なくとも１つのマスク行を形成するマスク行数Ｎ０は以下の式：
Ｎ０＝１＋Ｃ＋［［（（１＋Ｃ）％２）！＝（Ｄｔ％２）］＆（Ｃ！＝０）］
（式中、Ｃはエラーコードスキームによって訂正可能なビット数であり、Ｄｔは上記複数のデータビットにおけるデータビット数であり、％はモジュロ演算子を示す）により与えられる、請求項１７に記載のコンピュータにより実施される方法。
【請求項１９】
前記少なくとも１つのマスク行の各マスク行について、前記マスクビット生成プロセスでは、対応するチェックビットの生成用に前記ブロック内の奇数個のデータビットが選択されるようマスクビット値を決定する、請求項１３〜１８のいずれか一項に記載のコンピュータにより実施される方法。
【請求項２０】
前記少なくとも１つのマスク行が複数のマスク行を含む場合、前記マスクビット生成プロセスは、対応するチェックビットの生成用に前記ブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう前記複数のマスク行のマスクビット値を決定する、請求項１９に記載のコンピュータにより実施される方法。
【請求項２１】
前記少なくとも１つのマスク行が複数のマスク行を含む場合、前記マスクビット生成プロセスは、対応するチェックビットの生成用にブロック内の各データビットが前記複数のマスク行の１つにより選択されるよう前記複数のマスク行のマスクビット値を決定する、請求項２０に記載のコンピュータにより実施される方法。
【請求項２２】
請求項１３〜２１のいずれか一項に記載のコンピュータにより実施される方法によって生成されるマスクアレイを含む記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、後のエラー検出及び／又はエラー訂正を可能にするよう、メモリに関連データと共に格納可能なエラーコードを生成するための機構に関するものである。例えば、そのようなエラーコードは、関連データが、例えばソフトエラーやハードエラーに起因して破損してしまった状態を検出するのに利用することができる。
【背景技術】
【０００２】
使用されるエラーコードスキームによっては、そのようなエラーコードでは、ある一定ビット数のエラーしか検出せず、その訂正は行われない場合がある。また、ある一定ビット数のエラーは検出されるが、ビット数を低減させたエラーの訂正も可能となる場合もある。一般的に、エラーコードがエラー検出だけを可能にするものなのか、エラー訂正も可能にするものなのかにかかわらず、それらのエラーコードは、エラー訂正コード（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）と称される。
【０００３】
現代のデータ処理システムでは、検出及び／又は訂正が必要なエラーの種類に関して幾つかの要件が存在する場合がある。例えば、メモリに格納されるデータ値を考えると（ここでは、そのようなデータ値を１個のデータ(Ｄａｔｕｍ)とも称する）、そのデータに関連して格納を行うために生成されるエラーコードは、データ中のエラーの検出及び／又は訂正を可能にするために必要なだけではない場合がある。例えば、読取り操作時に得られたメモリ出力が全て０又は全て１に固定されてしまう状態を検出するのにエラーコードを利用することが望ましい場合もある。
【０００４】
しかしながら、また、メモリアドレス復号化処理における故障を検出しようとするのにエラーコードを利用することが望ましい場合もあり、それによって、メモリから返ってくるコンテンツが正しいインテグリティ（ｉｎｔｅｇｒｉｔｙ）を有するものの、間違ったアドレスへのアクセスが行われることになる。このようなメモリアドレス復号化保護を行うため、メモリに格納されたエラーコードを生成する際にはデータとアドレスの両方を使うことができる。そして、メモリからのデータ読み出し時には、読み出したアドレスとデータを利用して、そのデータに関連してメモリから読み出されたエラーコードと照合可能な別のエラーコードを生成する。
【０００５】
このような方法によって、メモリアドレス復号化における故障を検出するための有効な機構を提供することができるが、コード生成の際にアドレスとデータを併用すること、かつ、アドレスがデータに対して任意の値を有し得ることに起因して、メモリ出力が全て０又は全て１に固定される状態を検出する能力が損なわれてしまう。
【０００６】
従って、複数のデータビット及び複数のアドレスビットを含むブロック（ここではチャンクとも称する）についてエラーコードを生成するために改良された機構を提供することが望ましいであろうと考えられる。それにより、メモリの出力の０縮退故障や１縮退故障の検出も可能にしつつ、メモリアドレス復号化における故障を検出することが可能となる。
【発明の概要】
【０００７】
第１の構成例としては、複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、そのブロックと複数のマスク行を含むマスクアレイを受け付け、エラーコード生成アルゴリズムを適用して、それぞれ上記ブロックと上記マスクアレイの対応するマスク行により決定される複数のチェックビットを含むエラーコードをそのブロックについて生成するエラーコード生成回路とを備える装置であって、各マスク行は、それぞれがブロックの対応するビットに関連する複数のマスクビットを含み、少なくとも１つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、そのマスクビット値が制約されていることを特徴とする装置が提供される。
【０００８】
他の構成例としては、記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路が提供される。この書き込み保護回路は、書き込みデータと特定のメモリアドレスからエラーコードを生成する上記第１の構成例のような装置を備え、ブロックの複数のデータビットが書き込みデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。
【０００９】
別の構成例としては、記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行う読み取り保護回路が提供される。この読み取り保護回路は、読み取りデータと特定のメモリアドレスからエラーコードを生成する上記第１の構成例のような装置を備え、ブロックの複数のデータビットが読み取りデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。さらに、読み取り保護回路は、生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、生成されたエラーコードを読み取りデータに関連して記憶装置に格納されたエラーコードと比較するチェック回路を備える。
【００１０】
また別の構成例としては、マスクアレイを用いて生成されるエラーコードの各チェックビットに対して１つのマスク行が設けられるようにマスクアレイのマスク行数を決定することと、複数のデータビット及び複数のアドレスビットを含むブロックであって、エラーコードが生成されるブロックのビット数に応じて各マスク行のマスクビット数を決定することと、マスク行の少なくとも１つについて、処理回路において、ブロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、マスク行のマスクビット値を制約するマスクビット生成プロセスを実行することとを有する、コンピュータにより実施されるマスクアレイ生成方法が提供される。
【００１１】
さらなる構成例としては、上記構成例のコンピュータにより実施される方法によって生成されるマスクアレイを含む記憶媒体が提供される。
【００１２】
本技術を、添付図面に示されるその実施例を参照して、ほんの一例としてさらに説明する。
【図面の簡単な説明】
【００１３】
【図１】既知のスキームにより生成されたＥＣＣマスクアレイを示す図である。
【図２】一実施例に係るＥＣＣマスクアレイの生成方法を示すフロー図である。
【図３】一実施例の技術により生成されたＥＣＣマスクアレイを示す図である。
【図４】エラーコードを生成するため、一実施例に係るＥＣＣ生成回路により実行されるＥＣＣ計算アルゴリズムを示すフロー図である。
【図５Ａ】実施例の技術により生成し得るマスクアレイのさらなる例を示す図である。
【図５Ｂ】実施例の技術により生成し得るマスクアレイのさらなる例を示す図である。
【図６】使用可能なさまざまなエラーコードスキームのタイプについて、実施例の特定の行生成ルールの対象となるべきマスクアレイ内の最低行数を示す表である。
【図７】一実施例に係るＥＣＣ生成回路を示すブロック図である。
【図８】一実施例に係る書き込み保護回路と読み取り保護回路の両方を概略的に示すブロック図である。
【図９】実施例のマスク生成技術を実施するのに利用可能なタイプの汎用コンピュータを概略的に示す図である。
【発明を実施するための形態】
【００１４】
添付図面を参照して実施例を考察する前に、実施例について以下に説明する。
【００１５】
一実施例では、複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、そのブロックについてのエラーコードを生成するエラーコード生成回路とを備える装置が提供される。特に、エラーコード生成回路は、複数のマスク行を含むマスクアレイにアクセスでき、マスクアレイとブロックの両方を用いて、エラーコード生成アルゴリズムを適用して、そのブロックについてのエラーコードを生成する。このエラーコードは、それぞれブロックとマスクアレイの対応するマスク行により決定される複数のチェックビットを含む。
【００１６】
各マスク行は、それぞれがブロックの対応するビットに関連する複数のマスクビットを含む。少なくとも１つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、そのマスクビット値が制約されている。
【００１７】
上述の技術によれば、エラーコードは、データビットとアドレスビットの両方を含むブロックについて生成することにより、メモリアドレス復号化における故障を検出可能にするために用いることができる。しかしながら、また、上述の方法により少なくとも１つのマスク行のマスクビット値を制約することで、関連するエラーコードのデータビットとチェックビットが全て同じ値とならないようにすることが可能となり、それにより、０縮退故障（ｓｔｕｃｋ  ａｔ  ｚｅｒｏ  ｆａｕｌｔ）及び１縮退故障（ｓｔｕｃｋ  ａｔ  ｏｎｅ  ｆａｕｌｔ）が確実に検出可能になる。特に、上記機構によれば、データビットが全て０の場合は、エラーコード生成の際に用いられるアドレスビットの値に関係なく、全て０のエラーコードは生成されない。同様に、データビットが全て１の場合は、全て１のエラーコードは生成されない。その結果、メモリからの読み出し操作時に、読み出したデータビット及び関連するエラーコードのチェックビットが全て１若しくは全て０である場合、これは１縮退故障や０縮退故障のエラーが発生したことを意味する。
【００１８】
全てのデータビットが同じ値を有する場合に、生成されたエラーコードがアドレスビットに関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、少なくとも１つのマスク行のマスクビット値を制約する方法には数多くの方法がある。これは、一実施例では、対応するチェックビットの生成用にブロックのいずれのアドレスビットも選択されないようにマスクビット値が配置された少なくとも１つのマスク行の各マスク行によって実現される。従って、そのようなマスク行では、アドレスビット値は、対応するチェックビットの生成時に使用されないようにマスクアウトされる。反対に、少なくともいくつかのアドレスビットは、上述の制約の対象外であるその他のマスク行では使用されてもよい。
【００１９】
一実施例では、上記少なくとも１つのマスク行を形成するマスク行の数が、装置が使用するエラーコードスキームによって、かつ、上記ブロックにおける複数のデータビットが偶数か奇数かによって決まる。通常、エラーコードスキームにより訂正可能なデータビットの数が多いほど、上述の制約の対象となる必要があるマスク行の数が多くなる。さらに、上記実施例では、特定のエラーコードスキームについて、ブロック内のデータビットの個数が偶数であるか奇数であるかによって、上述の制約の対象である一組のマスク行にはさらに１つのマスク行が含まれなければならないことがある。
【００２０】
上述の技術はさまざまなエラーコードスキームに適用可能であるが、一実施例で採用されるエラーコードスキームは、ハミングコードに基づくものである。このハミングコードを採用する場合、上記少なくとも１つのマスク行を形成するマスク行の数は、特定のハミングコードのハミング距離によって、並びに、ブロックにおける複数のデータビットが偶数か奇数かによって決まる。当業者であれば理解するように、ハミング距離は、ある有効な符号語から他の有効な符号語へと進むのに最低限必要なビット変化の数を示す。ハミング距離は、エラーコードスキームによって訂正可能なビット数を増やすと増大する。
【００２１】
一実施例では、上記少なくとも１つのマスク行を形成するマスク行数Ｎ０は以下の式：
Ｎ０＝１＋Ｃ＋［［（（１＋Ｃ）％２）！＝（Ｄｔ％２）］＆（Ｃ！＝０）］
（式中、Ｃはエラーコードスキームによって訂正可能なビット数であり、Ｄｔは上記複数のデータビットにおけるデータビット数であり、％はモジュロ演算子を示す）により与えられる。
【００２２】
一実施例では、上記少なくとも１つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるよう、そのマスクビット値が配置されている。この要件は、データビットが全て同じ値である場合に、生成されたチェックビットがそれらのデータビットとは異なる値を有するようにするために、エラーコード生成アルゴリズムと併用されてもよい。
【００２３】
さらに、一実施例では、上記少なくとも１つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう配置されている。
【００２４】
さらにまた、一実施例では、上記少なくとも１つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の各データビットがその複数のマスク行の１つにより選択されるよう配置されている。
【００２５】
一実施例では、エラーコードスキームがエラー検出だけでなく、少なくとも１つのエラーの訂正を可能にする場合は常に複数のマスク行が存在する。図２を参照してさらに詳細に後述するように、上述の複数のマスク行に対する制約は、０縮退故障や１縮退故障のエラーが間違ってシングルビットの訂正可能なエラーと判断されないようにする。
【００２６】
一実施例では、エラーコード生成回路が使用するエラーコード生成アルゴリズムは、上記のマスクアレイの形状を考慮に入れるように構成されている。特に、一実施例では、エラーコード生成アルゴリズムは、ブロック及び対応するマスク行から第１チェックビットを生成する主要プロセスと、第１チェックビットを反転させて第２チェックビットを生成するよう選択的に適用される付加プロセスとを含む。そして、エラーコード生成回路によって生成されたエラーコードは、上記少なくとも１つのマスク行を形成するいずれかのマスク行を使って生成された第２チェックビットと、残りのマスク行のそれぞれを使って生成された第１チェックビットとを有する。従って、このような方法により、上述のマスクビット値の制約の対象となったいずれかのマスク行に関連するチェックビットを生成する場合に、チェックビットの値をエラーコード内で使用する前に、その最終的なフリッピング（ｆｌｉｐｐｉｎｇ）が行われる。
【００２７】
特に、前述のように、上記少なくとも１つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるようそのマスクビット値が配置されている。このことは、奇数個のデータビットが使用されるようにすることにより、また、アドレスビットはそのようなマスク行についてチェックビットを生成する際には使用されないことを考慮すると、一実施例では、それらのデータビットが全て同じ値である場合に、主要プロセスによって生成された最初のチェックビットもそれらのデータビットと同じ値となり、その後、付加プロセスによって、そのチェックビットがエラーコードで使用される前に反転されるように利用可能である。これにより、エラーコードについて、少なくともその最後に生成されたチェックビットがデータビットとは異なる値を有することが確実となる。従って、データが全て０の場合に、少なくとも１つのチェックビットが０ではなく、同様に、データが全て１の場合に、少なくとも１つのチェックビットが０であることが保証される。
【００２８】
上記主要プロセスは、さまざまな形態をとることができるが、一実施例では、マスク行を使ってブロックを形成するビットのサブセットを選択することと、その後、その選択されたビットのサブセットに対してＸＯＲリダクション演算（ＸＯＲ  ｒｅｄｕｃｅ  ｏｐｅｒａｔｉｏｎ）を行なって関連する第１チェックビットを生成することとを含む。さらに、一実施例では、上記付加プロセスは、ＸＯＲ演算を行なって第１チェックビットの値を反転することを含む。
【００２９】
上記の装置は、さまざまな状況において利用可能である。例えば、一実施例では、記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路が設けられている。この書き込み保護回路は、書き込みデータと特定のメモリアドレスからエラーコードを生成するために、上記の装置を含むよう配置されてもよい。このような実施例では、ブロックの複数のデータビットが書き込みデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。一実施例では、書き込みデータの全てのビットとメモリアドレスの全てのビットがブロック構築の際に用いられる。
【００３０】
別の例では、上記の装置を、記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行うのに用いられる読み取り保護回路で利用可能である。この読み取り保護回路には、読み取りデータと特定のメモリアドレスからエラーコードを生成するために上記装置が含まれる。ブロックの複数のデータビットが読み取りデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。さらに、読み取り保護回路は、生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、生成されたエラーコードを読み取りデータに関連して記憶装置に格納されたエラーコードと比較するチェック回路を含む。
【００３１】
別の実施例では、マスクアレイを用いて生成されるエラーコードの各チェックビットに対して１つのマスク行が設けられるようにマスクアレイのマスク行数を決定することと、エラーコードが生成されるブロックのビット数に応じて各マスク行のマスクビット数を決定することとを含む、コンピュータにより実施されるマスクアレイ生成方法が提供される。上記ブロックは、複数のデータビット及び複数のアドレスビットを含む。上記方法は、マスク行の少なくとも１つについて、処理回路において、ブロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも１つのチェックビットを有するよう、マスク行のマスクビット値を制約するマスクビット生成プロセスを実行することを含む。
【００３２】
一実施例では、上記少なくとも１つのマスク行以外の残りの全てのマスク行について、マスクビット生成プロセスでは、デフォルトマスク生成ルールを採用してマスクビット値を決定する。従って、前述の制約はマスクアレイのいくつかのマスク行についてマスクビット値を決定する際に用いられるが、マスクアレイの残りの全ての部分についてのマスクビット値はデフォルトルールを用いて完成される。マスクアレイのマスクビット値を算出する方法については、前述の特定の制約の対象外であるマスクアレイの残りの部分を追加するためのデフォルトマスク生成ルールとして利用可能な周知の技術が数多くある。一例では、このデフォルトマスク生成ルールには、列ベースのハミングルールが含まれる。
【００３３】
次に、図面を参照して、特定の実施例について説明する。
【００３４】
図１は、ハミング距離が３である、二重エラー検出（ＤＥＤ: Ｄｏｕｂｌｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ）エラーコードスキームの既知の技術により生成し得るＥＣＣマスクアレイ１０を示す表である。この例では、アドレスが４つのビットからなり、データが８つのビットからなるものとし、データビットとアドレスビットは、その後エラーコード生成アルゴリズムへの入力として使用されるブロック（ここではチャンクとも称する）を形成するために連結されているものとする。よって、保護されるべきチャンクには１２ビット存在するということを踏まえて、ハミング距離が３であるＤＥＤスキームを使用した場合、エラーコードを形成するには５つのチェックビットＣ０〜Ｃ４が必要となる。図１に示すように、マスクアレイの各マスク行は、それらのチェックビットの１つと関連付けられている。
【００３５】
１つのエラーコード生成技術によれば、生成される各チェックビットについて、マスクの論理１値に関連するデータビットとアドレスビットを選択し、マスクの論理０値に関連するデータビットとアドレスビットを破棄するように、関連するマスク行がマスクとして用いられている（代替実施例では、マスクの論理１値や論理０値の意味が逆になる場合があることが理解されよう）。そして、マスク行の値に基づいて選択されたデータビットとアドレスビットに対して、チェックビット値を生成するためにＸＯＲリダクション演算が行われる。
【００３６】
上記方法によりチェックコードが生成されると、そのチェックコードは、データビット（データビットはここでは１個のデータとも呼ばれる）に関連してメモリに格納されてもよい。データを後にメモリから読み出す場合、まずは、元のチェックコードの生成に用いられたのと同じマスクアレイを用いて、読み出されたデータとメモリに示されたアドレスからチェックコードを再生成することによりチェックを行う。次に、この生成されたチェックコードは、例えば、ＸＯＲ演算を行うことにより、メモリから読み出された元のチェックコードとの比較が行われる。２つのチェックコードが互いに異なる場合、これはエラーの発生を意味する。
【００３７】
前述したように、上記エラーコードは、データがメモリから読み出された場合のデータのエラー検出及び／又は訂正だけでなく、メモリから返ってくるコンテンツが正しいインテグリティを有するものの、間違ったアドレスへのアクセスが行われるアドレス復号化における故障の検出にも利用可能である。これは、アドレスビットがエラーコード生成機構に組み込まれることにより可能である。また、メモリの全出力が０又は１に固定されてしまう状態を検出可能であることも望ましく、これは、以下に例として説明するように、同様にアドレス復号化におけるエラーの検出にＥＣＣスキームを用いる場合に問題となり得る。特に、アドレスビットに応じて、データビットが全て０の場合に、図１のマスクアレイを用いて、全て０のチェックコードを適正に生成することが可能である。同様に、データビットが全て１の場合に、全て１のチェックコードを生成してもよい。このような状況では、メモリから読み出されたコンテンツは全て０又は全て１であると当然見込まれるため、０縮退故障や１縮退故障の検出は不可能である。例えば、アドレスが４’ｂ１１１１（すなわち、全て１）であり、データが８’ｂ００００＿００００（すなわち、全て０）である状況を考える。図１のマスクアレイを使用した場合、上記のアドレスとデータの組み合わせについて生成されたチェックコードは、５’ｂ０００００（データが全て０であるにもかかわらず）である。従って、図１のマスクアレイを使用した場合、データとチェックコードをメモリから読み取る際に０縮退故障を検出することは不可能である。
【００３８】
この問題を表す１つの方法として、マスクアレイのいくつかの行に、基本的には０を１にフリップするのに利用可能なＸＮＯＲ機能を選択的に組み込むことが考えられる。しかしながら、アドレスビットを用いてアドレスデコーダの保護をサポートする場合、アドレスは（データが任意の値である場合）任意の値をとることができ、アドレスとデータのいくつかの組み合わせは、ＸＮＯＲ機能性（又はいくつかの行のＸＯＲ）を打ち消すことができることが分かっている。この場合も同様に、全て０のチェックコードが生じることになる。
【００３９】
残りの図面を参照して説明する実施例は、アドレス復号化の故障検出と０縮退故障や１縮退故障の検出とに同時に対応するためにＥＣＣスキームを利用できるように上記問題を軽減することを目的とする。
【００４０】
図２は、マスクアレイを生成するために、一実施例に従って実施されるＥＣＣマスク生成方法を示すフロー図である。
【００４１】
ステップ５０では、マスクアレイの所要のサイズが決められる。図１について前述したように、マスクアレイのサイズは、（データビットとアドレスビットからなる）チャンクサイズと使用されるＥＣＣスキーム、ひいては適用可能なハミング距離によって決まることが理解されよう。特に、チャンクサイズは、マスクアレイの列数に影響を与え、ハミング距離と共に、ＥＣＣコードに必要なチェックビット数、ひいてはマスクアレイに必要なマスク行数を定める。
【００４２】
ステップ５０に続いて、ステップ５５では、特別行生成ルール（以下にさらに詳細に説明する）の対象となるマスク行数を決定する。この特別行生成ルールの対象となる必要があるマスク行数は、マスクアレイが使用されるＥＣＣスキームと、データに含まれるビットが偶数か奇数かによって決まる。特に、一実施例では、マスク行数は以下の式：
Ｎ０＝１＋Ｃ＋［［（（１＋Ｃ）％２）！＝（Ｄｔ％２）］＆（Ｃ！＝０）］
（式中、Ｃはエラーコードスキームによって訂正可能なビット数であり、Ｄｔは上記複数のデータビットにおけるデータビット数であり、％はモジュロ演算子を示す）により与えられる。
【００４３】
上記式から明らかなように、エラーコードスキームがビット数エラーの検出にしか対応しておらず、そのようなエラーに対するいかなる訂正にも対応していない場合に、変数「Ｃ」は０に等しくなる。その結果、特別行生成ルールの対象となるマスク行数が、エラー検出のみに対応する例のものであることが上記式によって示される。しかしながら、エラー訂正に対応している場合、少なくとも２つのマスク行が特別行生成ルールの対象となる必要がある。さらに、データに含まれるビットが偶数か奇数かによっては、さらなる行が必要となることもある。例えば、エラーコードスキームによって１つのビットが訂正可能である場合、特別行生成ルールの対象となるべきマスク行数が、データビット数が偶数である場合に２、若しくは、データビット数が偶数である場合に３となることが上記式によって示される。
【００４４】
さらに、訂正可能なビット数が２の時、データビット数が奇数である場合に特別行生成ルールの対象となるべきマスク行は３つとなり、そうでなければルールの対象となるべきマスク行は４つとなることが同様の式によって示される。
【００４５】
ステップ５５で行われた決定処理に続き、特別行生成ルールの対象となるべきマスク行のそれぞれについて、ステップ６０において、チャンクのアドレスビットに関連するその各マスク行のビットを、それらのアドレスビットがＥＣＣコードの対応するチェックビットに影響を与えないようにする値に設定する。マスク行の論理１値によって対応するデータビットやアドレスビットが選択され、論理０値によって対応するデータビットやアドレスビットがマスクされる前述の例によれば、この要件は、アドレスビットに関連する全てのマスク行ビットを論理０値に設定することにより満たすことができることが理解されよう。これにより、アドレスビット値に関係なく、ステップ５５で決定されたどのマスク行についてもそれらのアドレスビットが選択されることはなく、よって、それらのアドレスビットが関連するチェックビットの値に影響を与えることがない。それにより、アドレスビットが、全て０のデータが全て０のチェックコードを生じさせる(同様に、全て１のデータが全て１のチェックコードを生じさせる)ことがないように講じられる対策の妨げになる可能性を防ぐ。
【００４６】
ステップ６５では、特別行生成ルールの対象となるべきマスク行のそれぞれについて、データに関連するマスク行のビットの値が、そのマスク行の使用時に奇数のデータビットが選択されるよう配置される。この要件は、使用するＥＣＣ計算アルゴリズムに関連してさらに詳細に後述するように、データビットが全て０である場合に１のチェックビットが生成される、若しくは、データビットが全て１である場合に０のチェックビットが生成されるようにＥＣＣ計算アルゴリズムと併用することができる。
【００４７】
エラーコードスキームによって、エラー検出時に少なくとも１つのビットの訂正が可能となる場合、前述したように、特別行生成ルールの対象であるマスク行が複数存在する。このような場合、エラー訂正スキームが誤って０縮退故障や１縮退故障を訂正しようとしないようにさらなる対策を講じる必要がある。０縮退故障の問題を考えると、データがたった１つのビットを論理１値に、その他全てのビットを論理０値に有する場合、全て０のエラーコードが生成されないようにする必要がある。これは、上記例において、後にメモリから読み取られたデータやＥＣＣコードが全て０である場合に、０縮退故障ではなく、シングルビットの訂正可能なエラーとして検出されることがあるからである。このようなことが発生しないよう、一実施例では、特別行生成ルールの対象である複数のマスク行にさらなる制約が加えられ、たった１つのデータビットが０ではない場合には全て０のチェックコードが生成できないようになる。同様に、同じ制約によって、たった１つのデータビットが０の場合に全て１のチェックコードが生成できないようになる。
【００４８】
特に、ステップ６５で特定したように、複数のマスク行が上記行生成ルールの対象である場合、データビットを選択させるマスクビットは、その複数のマスク行を補完するものとなる。これにより、ブロック内の異なるデータビットがそれら複数のマスク行のそれぞれによって選択され、対応するチェックビットの生成に使用される。データがたった１つのビットを１にその他全てのビットを０に設定した前述の場合を例に考えると、１に設定されたたった１つのビットは、その複数のマスク行のうちの１つにしか選択されず、その他に選択されることはない。これにより、それら複数のマスク行が同じチェックビットを生成することはなく、よって、エラーコードには１に設定された少なくとも１つのビットが含まれることになる。その結果、その後メモリに書き込まれるデータとエラーコードの組み合わせが、少なくとも２つの論理１値を含むことになる。それにより、データとエラーコードがメモリから読み取る際に全て０である場合は、確実に０縮退故障と判断することができる。
【００４９】
さらに、複数のマスク行が上記行生成ルールの対象である場合、データの全てのデータビットがその複数のマスク行によって特定される選択マスクビットに覆われることにもなる。従って、ブロックの各データビットは、複数のマスク行のうちの１つによって選択され、対応するチェックビットの生成に使用される。これにより、上述の特定されたルールでマスクビット値が制約された複数のマスク行の組み合わせが全てのデータビットを考慮に入れることになる。
【００５０】
ステップ６５に続いて、ステップ７０では、マスクアレイの残りのマスクビットの算出が行われる。これらの残りのマスクビットは、上記技術によって制約されないので、既存のマスク生成ルールにより設定することができる。従って、例えば、列ベースのハミングルールを利用してこれらマスクアレイの残りのビットを完成させてもよい。
【００５１】
図３は、図１で説明したチャンクと同一のチャンクについて、図２の技術により生成し得るＥＣＣマスクアレイ１００を示す。従って、ここでも同様に、チャンクには８つのデータビットと４つのアドレスビットが含まれており、ＤＥＤエラーコードスキームが使用されるものとする。よって、要件は、チェックコードの５つのチェックビットに関するものとなる。この例では、マスクアレイ１００の第１マスク行１０５が図２で説明した特別行生成ルールの対象となる。特に、エラーコードスキームはエラー検出にしか対応しておらず、エラー訂正には対応していないので、それらのルールの対象となる必要があるのはたった１つのマスク行だけとなる。図３からも分かるように、マスク行１０５については、アドレスビットに関連する全てのマスクビットが値を０に設定されているので、アドレスビットは、チェックビットＣ０の生成に対して何も影響を与えない。また、図３に示すように、マスク行１０５は、データから奇数個のビットが選択されるようマスクビットが設定されることにより、ステップ６５の要件が満たされる。ＥＣＣ計算アルゴリズムを説明する際に図４を参照してさらに詳細に説明するように、ＥＣＣ計算アルゴリズムによって選択的に行われる計算によって、ＥＣＣマスクに追加列１１０が効果的に付加される。この列には、上記特別行生成ルールの対象である各マスク行については論理１値が含まれ、その他全てのマスク行については論理０値が含まれる。
【００５２】
図４は、一実施例に係るＥＣＣ生成器のＥＣＣ計算回路内で実行し得るＥＣＣ計算アルゴリズムを示すフロー図である。ＥＣＣ計算アルゴリズムの式を図４の上部に示す。この式からも明らかなように、各チェックビットに関して、対応するマスク行を用いてデータビットとアドレスビットのサブセットを選択し、その後、それらをＸＯＲリダクション演算にかける。そして、その結果得られた値について、処理中のチェックビット（ひいてはマスク行）に依存する論理１値によりさらにＸＯＲリダクション演算が選択的に行われる。これについて、図４のフロー図を参照してさらに説明する。
【００５３】
ステップ１５０でパラメータｉを０に設定した後、ステップ１５５で、マスク行ｉによりデータビットとアドレスビットを選択し、その後それらをチェックビットの生成に使用する。従って、前述の例によれば、論理１値に設定された全てのマスク行ビットについて、対応するデータビット又はアドレスビットが選択され、チェックビット生成プロセスに使用される。
【００５４】
その後、ステップ１６０では、チェックビット値を生成するために、選択されたデータビットとアドレスビットに対してＸＯＲリダクション演算が行われる。しかしながら、そのチェックビットをそのままチェックコード内で使用するかどうか、又は、最終チェックビットの生成の前にそのチェックビットをさらに操作するかどうかを決める前に別のチェックを行う。特に、ステップ１６５では、マスク行ｉが特別な行の１つ、つまり、図２のステップ６０とステップ６５で説明した行生成ルールの対象となった行の１つであるかどうかを判定する。そうである場合、ステップ１７０に進み、ステップ１６０でのチェックビット出力と論理１値により最終的なＸＯＲリダクション演算を行う。これにより、ステップ１６０で得られたチェックビット出力の値がフリップされることが理解されよう。そして、その結果得られたチェックビットがステップ１７５でバッファリングされる、若しくは、対象のマスク行が特別な行の１つではない場合、ステップ１６０で得られたチェックビット出力がそのままバッファリングされる。
【００５５】
その後、ステップ１８０で、パラメータｉが最大値未満であるかどうかを判定し、そうである場合はパラメータｉをインクリメントしてステップ１５５に戻る。しかしながら、ステップ１８０で、全てのマスク行について処理が行われたと判定されると、よって、パラメータｉがｉ＿ｍａｘに等しい場合、ステップ１９０に進み、全てのチェックビットをＥＣＣコードとして出力する。図４の処理は繰り返し処理として示されているが、代替実施例では、チェックビットはそれぞれ並行して生成可能であることが理解されよう。
【００５６】
図３に戻り、図４のステップ１６５とステップ１７０を実行することにより、ステップ１６０で生成されたチェックビットのフリッピングを行うために、マスク行１０５に対して論理１値を用いてさらにＸＯＲ演算を行う一方、その他全てのマスク行により生成されるチェックビットに対してはフリッピングを行わないようにすることで、図３のマスクアレイに追加列１１０が効果的に付加されることが分かる。一実施例では、論理０値によるＸＯＲ演算を実施すること、ひいては状態を変化させないことにより、その他のマスク行により生成されたチェックビットがフリップしないようにすることができる。また、図４に示すフローのように、最終的なＸＯＲ演算を完全に回避することができる。
【００５７】
図３のマスクアレイを使用した場合の図４のＥＣＣ計算アルゴリズムの適用を考えると、以下のような特性が見て取れる。まず、データの全てのデータビットが０である場合を考える。マスクアレイの第１行目１０５を見ると、論理０値がアドレスのＸＯＲリダクション演算の結果として出力されることになる（アドレスのマスクが０であるので、出力はアドレス入力に関係なく０である）。また、第１マスク行１０５は、データのＸＯＲリダクションに論理０値を出力させる（データ入力が全て０であるので、ＸＯＲリダクションはマスクに関係なく０を出力する）。
【００５８】
ステップ１７０を実行することにより得られた論理１値の最終ＸＯＲにより１のチェックビットが与えられ、チェックビットの少なくとも１つが０ではなくなる。これにより、データが全て０の場合には全て０のチェックコードが有効なチェックコードではないため、０縮退故障を確実に検出することが可能となる。従って、メモリから読み出されたデータやチェックコードが全て０の場合、これは０縮退故障の発生を意味する。
【００５９】
２つ目のシナリオとして、全てのデータ入力が論理１値である場合を考える。この場合も同様に、マスク行１０５内の論理０値が全てのアドレスビットに対応するため、アドレスのＸＯＲリダクションによって論理０値が得られる。第１行目１０５は、データのＸＯＲリダクションに論理１値を出力する（１が奇数個ある場合は最終的に１のリダクションとなるため）。その結果、ステップ１７０で行われた最終ＸＯＲ演算により、０のチェックビットを生成するために論理１値がフリップされ、得られたチェックコードの少なくとも１つのチェックビットが０となる。これにより、メモリから読み出されるデータや関連するエラーコードが全て１である場合、これは１縮退故障の発生を意味するため（全て１のエラーコードは、全て１のデータについての有効なエラーコードではない）、１縮退故障を確実に検出することが可能となる。
【００６０】
図５Ａは、ハミング距離が４である単一エラー訂正・二重エラー検出（ＳＥＣＤＥＤ）スキームについて、図２のマスク生成方法により生成し得るＥＣＣマスクを示す図である。この場合も同様に、チャンクが前述のものと同様であり、８つのデータビットと４つのアドレスビットが含まれる。このチャンクサイズと４のハミング距離に基づき、エラーコードには６つのチェックビットが必要であるので、マスクアレイには図５Ａに示すように６つの行が含まれる。図２で説明したプロセスにより、２つのマスク行２０５、２１０が上記特別行生成ルールの対象となる必要があると判断される。これらのマスク行はアレイ内の最初の２行として示されているが、どの２つのマスク行が選択されるかは問題ではないことが理解されよう。図５Ａに示すように、各マスク行２０５、２１０は、アドレスビットに関連するマスクビットが０に設定される。そのため、チェックビットＣ０、Ｃ１の値はアドレスビットに影響されない。また、各マスク行２０５，２１０は、奇数のデータビットが選択されるよう、データビットに対応する位置で奇数のマスク行ビットが１に設定される。また、１に設定されたマスクビットはマスク行２０５，２１０で補完的なものであるので、チェックビットＣ０又はチェックビットＣ１いずれかの計算でしか特定のデータビットは使用されない。さらに、２つのマスク行２０５、２１０を組み合わせることにより、全てのデータビットを選択してチェックビットＣ０又はチェックビットＣ１いずれかの生成に使用されることが分かる。従って、これら２つのマスク行２０５、２１０は、図２のステップ６０及びステップ６５で説明したルールに準拠するものである。
【００６１】
図４のプロセスを行う場合、ステップ１６５及びステップ１７０により、マスク行２０５、２１０に関連する論理１値と、残りのマスク行についての論理０値を含む、図５Ａの符号２１５で示す形態の有効な追加列が提供される。
【００６２】
データビット数が偶数であるため、図２のステップ５５で上記特別行生成ルールの対象となるべきマスク行数を決定するために使用される前述の式から、それらのルールの対象となる必要があるマスク行は２つだけであることが分かる。しかしながら、データビット数が奇数であれば、上記特別行生成ルールの対象として３つ目のマスク行が必要となることになる。
【００６３】
図５Ｂは、エラーコードスキームが二重エラー訂正・三重エラー検出（ＤＥＣＴＥＤ: Ｄｏｕｂｌｅ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｔｒｉｐｌｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ）スキームである、よって、ハミング距離が６であるものとして、前述の図２の技術により生成し得るＥＣＣマスクアレイの別の例を示す図である。この例では、チャンクが４つのアドレスビットと９つのデータビットからなるものとする。このチャンクサイズとハミング距離が６であることを考慮すると、図５Ｂに示すように、チェックコードには９つのチェックビットが必要となる。図２のステップ５５で説明した式により、３つのマスク行が図２のステップ６０及びステップ６５の行生成ルールの対象となる必要があると判断される。データビット数が偶数であれば、そのルールの対象として４つ目のマスク行が必要となることになる。
【００６４】
図５Ｂに示すように、マスクアレイ２５０について、上記特別行生成ルールの対象となる３つのマスク行は、マスク行２５５、２６０、２６５である。図５Ｂからも明らかなように、そのマスク行はそれぞれ、アドレスビットに対応するビット位置でマスクビットが０に設定されている。また、各マスク行は、奇数のデータビットを選択させ、それぞれ他の行とは異なるデータビットを選択する。さらに、３つのマスク行２５５、２６０、２６５全体で、各データビットが一度は選択される。これにより、図２のステップ６０及びステップ６５のルールが満たされることが分かる。列２７０は、図４のステップ１６５及びステップ１７０を行なった結果得られる有効な追加列であり、特定のマスク行２５５、２６０、２６５に対応する行位置にはそれぞれ論理１値を有し、その他全てのマスク行に対応する位置には論理０値を有する。
【００６５】
図６は、図２のマスク生成方法を採用した際に、さまざまなエラーコードスキームについて、ハミング距離と、アドレス位置に０を有する最低限必要な行数を示す表である。図２のステップ５５で説明した式からも分かるように、１つ以上のビット訂正に対応する任意のスキームについて、データに含まれるビット数が偶数であるか奇数であるかによって、実際に行数を１増加させなければならない場合がある。さらに、図６は、４つのエラーコードスキームしか示していないが、上記技術はその他のエラーコードスキームにも適用可能であって、いずれの場合にも図２のステップ５５で説明した式により必要な行数を決定することが理解されよう。
【００６６】
図７は、上記マスクアレイを用いてＥＣＣコードを生成するのに利用する一実施例に係るＥＣＣ生成回路を示すブロック図である。特に、データビットにアドレスビットを追加することによってチャンクを生成するチャンク生成器３０５にデータビットとアドレスビットが入力される。そして、ＥＣＣ計算回路３１０がそのチャンクを受け取り、記憶装置３１５に格納されたマスクアレイにもアクセスできる。その後、ＥＣＣ計算回路３１０は、経路３２０を介して出力されるＥＣＣコードビットを生成するため、図４で説明したプロセスを実行する。上記説明から、ＥＣＣ計算回路により、データが全て０の場合に少なくとも１つのチェックビットが論理１値に設定され、データが全て１の場合に少なくとも１つのチェックビットが論理０値に設定されるＥＣＣコードが生成されることが理解されよう。さらに、エラーコードスキームによってエラーの一定数のビット訂正が可能となる場合に、上記特別行生成ルールの対象となる複数のマスク行を使用することで、ＥＣＣ計算回路は、データと共に格納されるよう生成されたエラーコードを０縮退故障や１縮退故障を（間違って訂正可能なエラーと判断するのではなく）確実に検出するのに十分なものとする。
【００６７】
図８は、メモリ３７５に対応して使用可能な書き込み保護回路３５０と読み取り保護回路３８０を両方示す図である。書き込みデータをメモリ３７５に書き込む場合、書き込みアドレスと書き込みデータを書き込み保護回路３５０内のＥＣＣ生成器３５５に供給する。ＥＣＣ生成器３５５は、図７で説明したＥＣＣ生成器３００の構成をとってもよい。従って、ＥＣＣ生成器は、上記技術により生成された記憶装置３６５内のマスクアレイにアクセスすることができる。ＥＣＣ生成器３５５は付加回路３６０に転送されるＥＣＣコードを生成し、付加回路３６０は書き込みデータにこのＥＣＣコードを追加する。そして、書き込みデータとＥＣＣコードはいずれも経路３７０を介して出力され、メモリ３７５内の書き込みデータに対応する特定の書き込みアドレスに格納される。
【００６８】
その後、読み取りアドレスが特定されることで、経路３７７を介して上記データと関連するＥＣＣコードがメモリから読み出されると、読み取りアドレスでメモリから読み出されたデータは、特定された読み取りアドレスと共に、ＥＣＣ生成器３８５へと転送される。このＥＣＣ生成器３８５も図７で説明したＥＣＣ生成器３００の構成をとり、記憶装置３６５内のマスクアレイにアクセスすることができる。よって、マスクアレイ、読み取りアドレス、読み取りデータを用いてＥＣＣコードを生成し、算出したＥＣＣコードがメモリアドレスから読み出されたＥＣＣコードと一致するかを判定可能なチェック回路３８７に生成したＥＣＣコードを転送する。このチェック回路３８７は、チェックを行った結果シンドローム情報を生成し、メモリから読み出されたデータと共にエラー検出／訂正回路３９０に送る。このシンドローム情報は、ＥＣＣ生成器３８５によって生成されたＥＣＣコードがメモリから読み出されたＥＣＣコードと一致するかどうかを示し、一致しない場合は、エラーの種類に関する追加情報も提供することができる。そして、回路３９０はこの情報を用いて読み取り保護回路３８０からの適切な出力を判定することができる。
【００６９】
例えば、上記２つのＥＣＣコードが一致する、すなわち、エラーがないと判断すると、読み取りデータが出力される。同様に、シンドローム情報によって訂正可能なエラーがあると見なされると、回路３９０はそのデータを訂正し、訂正したデータを出力する。また、シンドローム情報によって訂正不可能なデータ故障があると見なされると、回路３９０はその出力としてデータ故障の存在を特定する。同様に、シンドローム情報によってデータではなくアドレスに故障が存在すると見なされてもよく、その場合、アドレス復号化における故障エラーを回路３９０から出力することができる。最後に、メモリから読み出されたデータが全て０（又は全て１）であって、メモリから読み出されたＥＣＣが全て０（又は全て１）である場合、これは０縮退故障や１縮退故障が存在することを意味し、これも回路３９０から出力することができる。また、アドレス復号化におけるエラーや０縮退故障／１縮退故障エラーは、その他の訂正不可能なエラーとはっきりと分けて特定されないこともあり、その代わりに、回路３９０から出力される訂正不可能なエラーの兆候だけを示す場合がある。
【００７０】
図９は、上記技術を実施する、特に、マスクアレイを生成して複数のデータビット及び複数のアドレスビットを含むブロックについてエラーコードを生成するのに利用可能なタイプの汎用コンピュータ４００を概略的に示す図である。この汎用コンピュータ４００は、中央処理装置４０２と、ランダムアクセスメモリ４０４と、読み出し専用メモリ４０６と、ネットワークインターフェースカード４０８と、ハードディスクドライブ４１０と、ディスプレイドライバ４１２と、モニタ４１４と、キーボード４１８及びマウス４２０を含むユーザ入出力回路４１６とを備え、これらが全て共通バス４２２を介して接続されている。動作時は、中央処理装置４０２が、ランダムアクセスメモリ４０４、読み出し専用メモリ４０６、ハードディスクドライブ４１０のいずれか１つ以上に格納可能な、若しくは、ネットワークインターフェースカード４０８を介して動的にダウンロード可能なコンピュータプログラム命令を実行する。行われた処理の結果は、ディスプレイドライバ４１２とモニタ４１４によってユーザに表示される。この汎用コンピュータ４００の動作を制御するためのユーザ入力は、キーボード４１８やマウス４２０からユーザ入出力回路４１６を介して受け取られる。上記コンピュータプログラムは、さまざまなコンピュータ言語で書き込み可能であることが理解されよう。また、このコンピュータプログラムは、記録媒体によって格納・配布されてもよいし、汎用コンピュータ４００に同時にダウンロードされてもよい。汎用コンピュータ４００は、適切なコンピュータプログラムの制御の下で動作を行う場合、上記マスクアレイ生成技術を実施可能であり、上記技術を実施するための装置を形成するものと見なされる。この汎用コンピュータの構造は多岐にわたり、図９に示すものはほんの一例にすぎない。
【００７１】
上記技術によって、メモリに格納されたデータのデータビットエラーの検出及び／又は訂正だけでなく、メモリの出力の０縮退故障や１縮退故障の検出にも対応しつつ、アドレス復号化エラーの特定も可能にするマスクアレイの生成が可能となることが上記実施例から理解されよう。これは、そのチェックビット数が保護されるチャンクのサイズ及び使用するエラーコードスキームの種類によって決まるエラーコードを提供しつつ、メモリサイズに関して領域を複雑化させる要因となり得る冗長ビットをさらに追加する必要なく達成される。
【００７２】
本出願において、「〜するよう構成される」という表現は、装置の要素が規定の動作を実行可能な構成を有していることを指すのに用いられる。これに関して、「構成」とは、ハードウェアやソフトウェアを相互接続する配置や方法を指す。例えば、装置は、規定の動作を行う専用ハードウェアを有していてもよく、また、プロセッサやその他の処理装置は、その機能を実装するようプログラミングされていてもよい。「〜するよう構成される」とは、装置の要素が規定の動作を行うためにいかなる変更も必要としないことを意味するものではない。
【００７３】
以上、添付図面を参照して本発明の具体例を詳細に説明したが、本発明はこれらの明確な実施例に限定されるものではなく、当業者には、添付の請求項に記載の本発明の範囲及び精神から逸脱することなくそれらにさまざまな変更、追加、改良を行うことが可能なことを理解すべきである。例えば、本発明の要旨を逸脱しない範囲で独立請求項の特徴と従属請求項の特徴とのさまざまな組み合わせが可能である。
【図１】
2017215958.tif 000003
【図２】
2017215958.tif 000004
【図３】
2017215958.tif 000005
【図４】
2017215958.tif 000006
【図５Ａ】
2017215958.tif 000007
【図５Ｂ】
2017215958.tif 000008
【図６】
2017215958.tif 000009
【図７】
2017215958.tif 000010
【図８】
2017215958.tif 000011
【図９】
2017215958.tif 000012
【外国語明細書】
2017215958000001.pdf