特許第6982982号(P6982982)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許6982982複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法
<>
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000002
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000003
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000004
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000005
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000006
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000007
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000008
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000009
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000010
  • 特許6982982-複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6982982
(24)【登録日】2021年11月25日
(45)【発行日】2021年12月17日
(54)【発明の名称】複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20211206BHJP
   H03M 13/03 20060101ALI20211206BHJP
   G06F 12/0895 20160101ALI20211206BHJP
【FI】
   G06F11/10 612
   H03M13/03
   G06F12/0895 100
【請求項の数】21
【外国語出願】
【全頁数】20
(21)【出願番号】特願2017-102013(P2017-102013)
(22)【出願日】2017年5月23日
(65)【公開番号】特開2017-215958(P2017-215958A)
(43)【公開日】2017年12月7日
【審査請求日】2020年2月21日
(31)【優先権主張番号】1609538.2
(32)【優先日】2016年5月31日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】カウザー ヤクブ ジョーハル
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 特開昭55−008617(JP,A)
【文献】 特開2014−072852(JP,A)
【文献】 特開2015−184799(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/08−11/10
12/08
H03M 13/03
(57)【特許請求の範囲】
【請求項1】
複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、
前記ブロックと複数のマスク行を含むマスクアレイを受け付け、エラーコード生成アルゴリズムを適用して前記ブロックに対するエラーコードを生成するように構成されたエラーコード生成回路であって、前記エラーコードは複数のチェックビットを含み、各チェックビットは前記ブロックと前記マスクアレイの対応するマスク行により決定されるエラーコード生成回路と、
を具備する装置であって、
各マスク行は複数のマスクビットを含み、各マスクビットは前記ブロックの対応するビットに関連し、少なくとも1つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、前記エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するように制約されたマスクビット値を有する、装置。
【請求項2】
前記少なくとも1つのマスク行の各マスク行は、対応するチェックビットの生成用に前記ブロックのいずれのアドレスビットも選択されないようにマスクビット値が配置されている、請求項1に記載の装置。
【請求項3】
前記少なくとも1つのマスク行を形成するマスク行の数が、前記装置が使用するエラーコードスキームによって、かつ、前記ブロックにおける複数のデータビットが偶数か奇数かによって決まる、請求項1又は2に記載の装置。
【請求項4】
前記少なくとも1つのマスク行を形成するマスク行数N0は、以下の式:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
(式中、Cはエラーコードスキームによって訂正可能なビット数であり、Dtは前記複数のデータビットにおけるデータビット数であり、%はモジュロ演算子を示す)により与えられる、請求項3に記載の装置。
【請求項5】
前記少なくとも1つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるようそのマスクビット値が配置されている、請求項1〜4のいずれか一項に記載の装置。
【請求項6】
前記少なくとも1つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう配置されている、請求項5に記載の装置。
【請求項7】
前記少なくとも1つのマスク行が複数のマスク行を含む場合、前記複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の各データビットが前記複数のマスク行の1つにより選択されるよう配置されている、請求項6に記載の装置。
【請求項8】
前記エラーコード生成アルゴリズムは、前記ブロック及び対応するマスク行から第1チェックビットを生成する主要プロセスと、該第1チェックビットを反転させて第2チェックビットを生成するよう選択的に適用される付加プロセスとを含み、
前記エラーコード生成回路によって生成された前記エラーコードは、前記少なくとも1つのマスク行を形成するいずれかのマスク行を使って生成された前記第2チェックビットと、残りのマスク行のそれぞれを使って生成された前記第1チェックビットとを含む、請求項1〜7のいずれか一項に記載の装置。
【請求項9】
前記主要プロセスは、マスク行を使って前記ブロックを形成するビットのサブセットを選択することと、その選択されたビットのサブセットに対してXORリダクション演算を行なって関連する第1チェックビットを生成することとを含む、請求項8に記載の装置。
【請求項10】
前記付加プロセスは、XOR演算を行なって前記第1チェックビットの値を反転することを含む、請求項9に記載の装置。
【請求項11】
記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路であって、
前記書き込みデータと前記特定のメモリアドレスから前記エラーコードを生成する請求項1〜10のいずれか一項に記載の装置を具備し、
前記ブロックの複数のデータビットが前記書き込みデータから形成され、前記ブロックの複数のアドレスビットが前記特定のメモリアドレスから形成される、書き込み保護回路。
【請求項12】
記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行う読み取り保護回路であって、
前記読み取りデータと前記特定のメモリアドレスから前記エラーコードを生成する請求項1〜10のいずれか一項に記載の装置と、
生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、前記生成されたエラーコードを前記読み取りデータに関連して前記記憶装置に格納されたエラーコードと比較するチェック回路と、
を具備し、
前記ブロックの複数のデータビットが前記読み取りデータから形成され、前記ブロックの複数のアドレスビットが特定のメモリアドレスから形成される、読み取り保護回路。
【請求項13】
コンピュータにより実施されるマスクアレイの生成方法であって、
マスクアレイを用いて複数のデータビット及び複数のアドレスビットを含むブロックに対して生成されるエラーコードの各チェックビットに対して1つのマスク行が設けられるようにマスクアレイのマスク行数を決定することであって、前記エラーコードは複数のチェックビットを含み、各チェックビットは前記ブロックと前記マスクアレイの対応するマスク行により決定されるようにした、マスク行数を決定することと、
エラーコードが生成されるブロックのビット数に応じて複数のマスクビットを含む各マスク行のマスクビット数を決定することと、
ロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、マスク行の少なくとも1つのマスクビット値を制約するマスクビット生成プロセスを処理回路において実行することと、
を具備する、コンピュータにより実施されるマスクアレイ生成方法。
【請求項14】
前記少なくとも1つのマスク行以外の残りの全てのマスク行について、前記マスクビット生成プロセスでは、デフォルトマスク生成ルールを採用してマスクビット値を決定する、請求項13に記載のコンピュータにより実施される方法。
【請求項15】
前記デフォルトマスク生成ルールには、列ベースのハミングルールが含まれる、請求項14に記載のコンピュータにより実施される方法。
【請求項16】
前記少なくとも1つのマスク行の各マスク行について、前記マスクビット生成プロセスでは、対応するチェックビットの生成用にブロックのいずれのアドレスビットも選択されないようにマスクビット値を決定する、請求項13〜15のいずれか一項に記載のコンピュータにより実施される方法。
【請求項17】
使用するエラーコードスキームによって、かつ、前記ブロックにおける複数のデータビットが偶数か奇数かによって前記少なくとも1つのマスク行を形成するマスク行の数を決定することをさらに具備する、請求項13〜16のいずれか一項に記載のコンピュータにより実施される方法。
【請求項18】
前記少なくとも1つのマスク行を形成するマスク行数N0は以下の式:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
(式中、Cはエラーコードスキームによって訂正可能なビット数であり、Dtは上記複数のデータビットにおけるデータビット数であり、%はモジュロ演算子を示す)により与えられる、請求項17に記載のコンピュータにより実施される方法。
【請求項19】
前記少なくとも1つのマスク行の各マスク行について、前記マスクビット生成プロセスでは、対応するチェックビットの生成用に前記ブロック内の奇数個のデータビットが選択されるようマスクビット値を決定する、請求項13〜18のいずれか一項に記載のコンピュータにより実施される方法。
【請求項20】
前記少なくとも1つのマスク行が複数のマスク行を含む場合、前記マスクビット生成プロセスは、対応するチェックビットの生成用に前記ブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう前記複数のマスク行のマスクビット値を決定する、請求項19に記載のコンピュータにより実施される方法。
【請求項21】
前記少なくとも1つのマスク行が複数のマスク行を含む場合、前記マスクビット生成プロセスは、対応するチェックビットの生成用にブロック内の各データビットが前記複数のマスク行の1つにより選択されるよう前記複数のマスク行のマスクビット値を決定する、請求項20に記載のコンピュータにより実施される方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、後のエラー検出及び/又はエラー訂正を可能にするよう、メモリに関連データと共に格納可能なエラーコードを生成するための機構に関するものである。例えば、そのようなエラーコードは、関連データが、例えばソフトエラーやハードエラーに起因して破損してしまった状態を検出するのに利用することができる。
【背景技術】
【0002】
使用されるエラーコードスキームによっては、そのようなエラーコードでは、ある一定ビット数のエラーしか検出せず、その訂正は行われない場合がある。また、ある一定ビット数のエラーは検出されるが、ビット数を低減させたエラーの訂正も可能となる場合もある。一般的に、エラーコードがエラー検出だけを可能にするものなのか、エラー訂正も可能にするものなのかにかかわらず、それらのエラーコードは、エラー訂正コード(ECC:Error Correction Code)と称される。
【0003】
現代のデータ処理システムでは、検出及び/又は訂正が必要なエラーの種類に関して幾つかの要件が存在する場合がある。例えば、メモリに格納されるデータ値を考えると(ここでは、そのようなデータ値を1個のデータ(Datum)とも称する)、そのデータに関連して格納を行うために生成されるエラーコードは、データ中のエラーの検出及び/又は訂正を可能にするために必要なだけではない場合がある。例えば、読取り操作時に得られたメモリ出力が全て0又は全て1に固定されてしまう状態を検出するのにエラーコードを利用することが望ましい場合もある。
【0004】
しかしながら、また、メモリアドレス復号化処理における故障を検出しようとするのにエラーコードを利用することが望ましい場合もあり、それによって、メモリから返ってくるコンテンツが正しいインテグリティ(integrity)を有するものの、間違ったアドレスへのアクセスが行われることになる。このようなメモリアドレス復号化保護を行うため、メモリに格納されたエラーコードを生成する際にはデータとアドレスの両方を使うことができる。そして、メモリからのデータ読み出し時には、読み出したアドレスとデータを利用して、そのデータに関連してメモリから読み出されたエラーコードと照合可能な別のエラーコードを生成する。
【0005】
このような方法によって、メモリアドレス復号化における故障を検出するための有効な機構を提供することができるが、コード生成の際にアドレスとデータを併用すること、かつ、アドレスがデータに対して任意の値を有し得ることに起因して、メモリ出力が全て0又は全て1に固定される状態を検出する能力が損なわれてしまう。
【0006】
従って、複数のデータビット及び複数のアドレスビットを含むブロック(ここではチャンクとも称する)についてエラーコードを生成するために改良された機構を提供することが望ましいであろうと考えられる。それにより、メモリの出力の0縮退故障や1縮退故障の検出も可能にしつつ、メモリアドレス復号化における故障を検出することが可能となる。
【発明の概要】
【0007】
第1の構成例としては、複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、そのブロックと複数のマスク行を含むマスクアレイを受け付け、エラーコード生成アルゴリズムを適用して、それぞれ上記ブロックと上記マスクアレイの対応するマスク行により決定される複数のチェックビットを含むエラーコードをそのブロックについて生成するエラーコード生成回路とを備える装置であって、各マスク行は、それぞれがブロックの対応するビットに関連する複数のマスクビットを含み、少なくとも1つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、そのマスクビット値が制約されていることを特徴とする装置が提供される。
【0008】
他の構成例としては、記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路が提供される。この書き込み保護回路は、書き込みデータと特定のメモリアドレスからエラーコードを生成する上記第1の構成例のような装置を備え、ブロックの複数のデータビットが書き込みデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。
【0009】
別の構成例としては、記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行う読み取り保護回路が提供される。この読み取り保護回路は、読み取りデータと特定のメモリアドレスからエラーコードを生成する上記第1の構成例のような装置を備え、ブロックの複数のデータビットが読み取りデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。さらに、読み取り保護回路は、生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、生成されたエラーコードを読み取りデータに関連して記憶装置に格納されたエラーコードと比較するチェック回路を備える。
【0010】
また別の構成例としては、マスクアレイを用いて生成されるエラーコードの各チェックビットに対して1つのマスク行が設けられるようにマスクアレイのマスク行数を決定することと、複数のデータビット及び複数のアドレスビットを含むブロックであって、エラーコードが生成されるブロックのビット数に応じて各マスク行のマスクビット数を決定することと、マスク行の少なくとも1つについて、処理回路において、ブロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、マスク行のマスクビット値を制約するマスクビット生成プロセスを実行することとを有する、コンピュータにより実施されるマスクアレイ生成方法が提供される。
【0011】
さらなる構成例としては、上記構成例のコンピュータにより実施される方法によって生成されるマスクアレイを含む記憶媒体が提供される。
【0012】
本技術を、添付図面に示されるその実施例を参照して、ほんの一例としてさらに説明する。
【図面の簡単な説明】
【0013】
図1】既知のスキームにより生成されたECCマスクアレイを示す図である。
図2】一実施例に係るECCマスクアレイの生成方法を示すフロー図である。
図3】一実施例の技術により生成されたECCマスクアレイを示す図である。
図4】エラーコードを生成するため、一実施例に係るECC生成回路により実行されるECC計算アルゴリズムを示すフロー図である。
図5A】実施例の技術により生成し得るマスクアレイのさらなる例を示す図である。
図5B】実施例の技術により生成し得るマスクアレイのさらなる例を示す図である。
図6】使用可能なさまざまなエラーコードスキームのタイプについて、実施例の特定の行生成ルールの対象となるべきマスクアレイ内の最低行数を示す表である。
図7】一実施例に係るECC生成回路を示すブロック図である。
図8】一実施例に係る書き込み保護回路と読み取り保護回路の両方を概略的に示すブロック図である。
図9】実施例のマスク生成技術を実施するのに利用可能なタイプの汎用コンピュータを概略的に示す図である。
【発明を実施するための形態】
【0014】
添付図面を参照して実施例を考察する前に、実施例について以下に説明する。
【0015】
一実施例では、複数のデータビット及び複数のアドレスビットを含むブロックを生成するブロック生成回路と、そのブロックについてのエラーコードを生成するエラーコード生成回路とを備える装置が提供される。特に、エラーコード生成回路は、複数のマスク行を含むマスクアレイにアクセスでき、マスクアレイとブロックの両方を用いて、エラーコード生成アルゴリズムを適用して、そのブロックについてのエラーコードを生成する。このエラーコードは、それぞれブロックとマスクアレイの対応するマスク行により決定される複数のチェックビットを含む。
【0016】
各マスク行は、それぞれがブロックの対応するビットに関連する複数のマスクビットを含む。少なくとも1つのマスク行は、ブロックの全てのデータビットが同じ値を有する場合、エラーコード生成回路によって生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、そのマスクビット値が制約されている。
【0017】
上述の技術によれば、エラーコードは、データビットとアドレスビットの両方を含むブロックについて生成することにより、メモリアドレス復号化における故障を検出可能にするために用いることができる。しかしながら、また、上述の方法により少なくとも1つのマスク行のマスクビット値を制約することで、関連するエラーコードのデータビットとチェックビットが全て同じ値とならないようにすることが可能となり、それにより、0縮退故障(stuck at zero fault)及び1縮退故障(stuck at one fault)が確実に検出可能になる。特に、上記機構によれば、データビットが全て0の場合は、エラーコード生成の際に用いられるアドレスビットの値に関係なく、全て0のエラーコードは生成されない。同様に、データビットが全て1の場合は、全て1のエラーコードは生成されない。その結果、メモリからの読み出し操作時に、読み出したデータビット及び関連するエラーコードのチェックビットが全て1若しくは全て0である場合、これは1縮退故障や0縮退故障のエラーが発生したことを意味する。
【0018】
全てのデータビットが同じ値を有する場合に、生成されたエラーコードがアドレスビットに関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、少なくとも1つのマスク行のマスクビット値を制約する方法には数多くの方法がある。これは、一実施例では、対応するチェックビットの生成用にブロックのいずれのアドレスビットも選択されないようにマスクビット値が配置された少なくとも1つのマスク行の各マスク行によって実現される。従って、そのようなマスク行では、アドレスビット値は、対応するチェックビットの生成時に使用されないようにマスクアウトされる。反対に、少なくともいくつかのアドレスビットは、上述の制約の対象外であるその他のマスク行では使用されてもよい。
【0019】
一実施例では、上記少なくとも1つのマスク行を形成するマスク行の数が、装置が使用するエラーコードスキームによって、かつ、上記ブロックにおける複数のデータビットが偶数か奇数かによって決まる。通常、エラーコードスキームにより訂正可能なデータビットの数が多いほど、上述の制約の対象となる必要があるマスク行の数が多くなる。さらに、上記実施例では、特定のエラーコードスキームについて、ブロック内のデータビットの個数が偶数であるか奇数であるかによって、上述の制約の対象である一組のマスク行にはさらに1つのマスク行が含まれなければならないことがある。
【0020】
上述の技術はさまざまなエラーコードスキームに適用可能であるが、一実施例で採用されるエラーコードスキームは、ハミングコードに基づくものである。このハミングコードを採用する場合、上記少なくとも1つのマスク行を形成するマスク行の数は、特定のハミングコードのハミング距離によって、並びに、ブロックにおける複数のデータビットが偶数か奇数かによって決まる。当業者であれば理解するように、ハミング距離は、ある有効な符号語から他の有効な符号語へと進むのに最低限必要なビット変化の数を示す。ハミング距離は、エラーコードスキームによって訂正可能なビット数を増やすと増大する。
【0021】
一実施例では、上記少なくとも1つのマスク行を形成するマスク行数N0は以下の式:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
(式中、Cはエラーコードスキームによって訂正可能なビット数であり、Dtは上記複数のデータビットにおけるデータビット数であり、%はモジュロ演算子を示す)により与えられる。
【0022】
一実施例では、上記少なくとも1つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるよう、そのマスクビット値が配置されている。この要件は、データビットが全て同じ値である場合に、生成されたチェックビットがそれらのデータビットとは異なる値を有するようにするために、エラーコード生成アルゴリズムと併用されてもよい。
【0023】
さらに、一実施例では、上記少なくとも1つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の異なるデータビットがそれら複数のマスク行のそれぞれにより選択されるよう配置されている。
【0024】
さらにまた、一実施例では、上記少なくとも1つのマスク行が複数のマスク行を含む場合、その複数のマスク行のマスクビット値は、対応するチェックビットの生成用にブロック内の各データビットがその複数のマスク行の1つにより選択されるよう配置されている。
【0025】
一実施例では、エラーコードスキームがエラー検出だけでなく、少なくとも1つのエラーの訂正を可能にする場合は常に複数のマスク行が存在する。図2を参照してさらに詳細に後述するように、上述の複数のマスク行に対する制約は、0縮退故障や1縮退故障のエラーが間違ってシングルビットの訂正可能なエラーと判断されないようにする。
【0026】
一実施例では、エラーコード生成回路が使用するエラーコード生成アルゴリズムは、上記のマスクアレイの形状を考慮に入れるように構成されている。特に、一実施例では、エラーコード生成アルゴリズムは、ブロック及び対応するマスク行から第1チェックビットを生成する主要プロセスと、第1チェックビットを反転させて第2チェックビットを生成するよう選択的に適用される付加プロセスとを含む。そして、エラーコード生成回路によって生成されたエラーコードは、上記少なくとも1つのマスク行を形成するいずれかのマスク行を使って生成された第2チェックビットと、残りのマスク行のそれぞれを使って生成された第1チェックビットとを有する。従って、このような方法により、上述のマスクビット値の制約の対象となったいずれかのマスク行に関連するチェックビットを生成する場合に、チェックビットの値をエラーコード内で使用する前に、その最終的なフリッピング(flipping)が行われる。
【0027】
特に、前述のように、上記少なくとも1つのマスク行の各マスク行は、対応するチェックビットの生成用にブロック内の奇数個のデータビットが選択されるようそのマスクビット値が配置されている。このことは、奇数個のデータビットが使用されるようにすることにより、また、アドレスビットはそのようなマスク行についてチェックビットを生成する際には使用されないことを考慮すると、一実施例では、それらのデータビットが全て同じ値である場合に、主要プロセスによって生成された最初のチェックビットもそれらのデータビットと同じ値となり、その後、付加プロセスによって、そのチェックビットがエラーコードで使用される前に反転されるように利用可能である。これにより、エラーコードについて、少なくともその最後に生成されたチェックビットがデータビットとは異なる値を有することが確実となる。従って、データが全て0の場合に、少なくとも1つのチェックビットが0ではなく、同様に、データが全て1の場合に、少なくとも1つのチェックビットが0であることが保証される。
【0028】
上記主要プロセスは、さまざまな形態をとることができるが、一実施例では、マスク行を使ってブロックを形成するビットのサブセットを選択することと、その後、その選択されたビットのサブセットに対してXORリダクション演算(XOR reduce operation)を行なって関連する第1チェックビットを生成することとを含む。さらに、一実施例では、上記付加プロセスは、XOR演算を行なって第1チェックビットの値を反転することを含む。
【0029】
上記の装置は、さまざまな状況において利用可能である。例えば、一実施例では、記憶装置の特定のメモリアドレスに書き込みデータに関連して格納されるエラーコードを生成する書き込み保護回路が設けられている。この書き込み保護回路は、書き込みデータと特定のメモリアドレスからエラーコードを生成するために、上記の装置を含むよう配置されてもよい。このような実施例では、ブロックの複数のデータビットが書き込みデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。一実施例では、書き込みデータの全てのビットとメモリアドレスの全てのビットがブロック構築の際に用いられる。
【0030】
別の例では、上記の装置を、記憶装置の特定のメモリアドレスから得られる読み取りデータに対してエラーチェックプロセスを行うのに用いられる読み取り保護回路で利用可能である。この読み取り保護回路には、読み取りデータと特定のメモリアドレスからエラーコードを生成するために上記装置が含まれる。ブロックの複数のデータビットが読み取りデータから形成され、ブロックの複数のアドレスビットが特定のメモリアドレスから形成される。さらに、読み取り保護回路は、生成されたエラーコードが格納されたエラーコードとは異なる場合にエラー状態を検出するために、生成されたエラーコードを読み取りデータに関連して記憶装置に格納されたエラーコードと比較するチェック回路を含む。
【0031】
別の実施例では、マスクアレイを用いて生成されるエラーコードの各チェックビットに対して1つのマスク行が設けられるようにマスクアレイのマスク行数を決定することと、エラーコードが生成されるブロックのビット数に応じて各マスク行のマスクビット数を決定することとを含む、コンピュータにより実施されるマスクアレイ生成方法が提供される。上記ブロックは、複数のデータビット及び複数のアドレスビットを含む。上記方法は、マスク行の少なくとも1つについて、処理回路において、ブロックの全てのデータビットが同じ値を有する場合、マスクアレイを用いてそのブロックについて生成されたエラーコードがアドレスビットの値に関係なくデータビットの値とは異なる値を有する少なくとも1つのチェックビットを有するよう、マスク行のマスクビット値を制約するマスクビット生成プロセスを実行することを含む。
【0032】
一実施例では、上記少なくとも1つのマスク行以外の残りの全てのマスク行について、マスクビット生成プロセスでは、デフォルトマスク生成ルールを採用してマスクビット値を決定する。従って、前述の制約はマスクアレイのいくつかのマスク行についてマスクビット値を決定する際に用いられるが、マスクアレイの残りの全ての部分についてのマスクビット値はデフォルトルールを用いて完成される。マスクアレイのマスクビット値を算出する方法については、前述の特定の制約の対象外であるマスクアレイの残りの部分を追加するためのデフォルトマスク生成ルールとして利用可能な周知の技術が数多くある。一例では、このデフォルトマスク生成ルールには、列ベースのハミングルールが含まれる。
【0033】
次に、図面を参照して、特定の実施例について説明する。
【0034】
図1は、ハミング距離が3である、二重エラー検出(DED: Double Error Detection)エラーコードスキームの既知の技術により生成し得るECCマスクアレイ10を示す表である。この例では、アドレスが4つのビットからなり、データが8つのビットからなるものとし、データビットとアドレスビットは、その後エラーコード生成アルゴリズムへの入力として使用されるブロック(ここではチャンクとも称する)を形成するために連結されているものとする。よって、保護されるべきチャンクには12ビット存在するということを踏まえて、ハミング距離が3であるDEDスキームを使用した場合、エラーコードを形成するには5つのチェックビットC0〜C4が必要となる。図1に示すように、マスクアレイの各マスク行は、それらのチェックビットの1つと関連付けられている。
【0035】
1つのエラーコード生成技術によれば、生成される各チェックビットについて、マスクの論理1値に関連するデータビットとアドレスビットを選択し、マスクの論理0値に関連するデータビットとアドレスビットを破棄するように、関連するマスク行がマスクとして用いられている(代替実施例では、マスクの論理1値や論理0値の意味が逆になる場合があることが理解されよう)。そして、マスク行の値に基づいて選択されたデータビットとアドレスビットに対して、チェックビット値を生成するためにXORリダクション演算が行われる。
【0036】
上記方法によりチェックコードが生成されると、そのチェックコードは、データビット(データビットはここでは1個のデータとも呼ばれる)に関連してメモリに格納されてもよい。データを後にメモリから読み出す場合、まずは、元のチェックコードの生成に用いられたのと同じマスクアレイを用いて、読み出されたデータとメモリに示されたアドレスからチェックコードを再生成することによりチェックを行う。次に、この生成されたチェックコードは、例えば、XOR演算を行うことにより、メモリから読み出された元のチェックコードとの比較が行われる。2つのチェックコードが互いに異なる場合、これはエラーの発生を意味する。
【0037】
前述したように、上記エラーコードは、データがメモリから読み出された場合のデータのエラー検出及び/又は訂正だけでなく、メモリから返ってくるコンテンツが正しいインテグリティを有するものの、間違ったアドレスへのアクセスが行われるアドレス復号化における故障の検出にも利用可能である。これは、アドレスビットがエラーコード生成機構に組み込まれることにより可能である。また、メモリの全出力が0又は1に固定されてしまう状態を検出可能であることも望ましく、これは、以下に例として説明するように、同様にアドレス復号化におけるエラーの検出にECCスキームを用いる場合に問題となり得る。特に、アドレスビットに応じて、データビットが全て0の場合に、図1のマスクアレイを用いて、全て0のチェックコードを適正に生成することが可能である。同様に、データビットが全て1の場合に、全て1のチェックコードを生成してもよい。このような状況では、メモリから読み出されたコンテンツは全て0又は全て1であると当然見込まれるため、0縮退故障や1縮退故障の検出は不可能である。例えば、アドレスが4’b1111(すなわち、全て1)であり、データが8’b0000_0000(すなわち、全て0)である状況を考える。図1のマスクアレイを使用した場合、上記のアドレスとデータの組み合わせについて生成されたチェックコードは、5’b00000(データが全て0であるにもかかわらず)である。従って、図1のマスクアレイを使用した場合、データとチェックコードをメモリから読み取る際に0縮退故障を検出することは不可能である。
【0038】
この問題を表す1つの方法として、マスクアレイのいくつかの行に、基本的には0を1にフリップするのに利用可能なXNOR機能を選択的に組み込むことが考えられる。しかしながら、アドレスビットを用いてアドレスデコーダの保護をサポートする場合、アドレスは(データが任意の値である場合)任意の値をとることができ、アドレスとデータのいくつかの組み合わせは、XNOR機能性(又はいくつかの行のXOR)を打ち消すことができることが分かっている。この場合も同様に、全て0のチェックコードが生じることになる。
【0039】
残りの図面を参照して説明する実施例は、アドレス復号化の故障検出と0縮退故障や1縮退故障の検出とに同時に対応するためにECCスキームを利用できるように上記問題を軽減することを目的とする。
【0040】
図2は、マスクアレイを生成するために、一実施例に従って実施されるECCマスク生成方法を示すフロー図である。
【0041】
ステップ50では、マスクアレイの所要のサイズが決められる。図1について前述したように、マスクアレイのサイズは、(データビットとアドレスビットからなる)チャンクサイズと使用されるECCスキーム、ひいては適用可能なハミング距離によって決まることが理解されよう。特に、チャンクサイズは、マスクアレイの列数に影響を与え、ハミング距離と共に、ECCコードに必要なチェックビット数、ひいてはマスクアレイに必要なマスク行数を定める。
【0042】
ステップ50に続いて、ステップ55では、特別行生成ルール(以下にさらに詳細に説明する)の対象となるマスク行数を決定する。この特別行生成ルールの対象となる必要があるマスク行数は、マスクアレイが使用されるECCスキームと、データに含まれるビットが偶数か奇数かによって決まる。特に、一実施例では、マスク行数は以下の式:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
(式中、Cはエラーコードスキームによって訂正可能なビット数であり、Dtは上記複数のデータビットにおけるデータビット数であり、%はモジュロ演算子を示す)により与えられる。
【0043】
上記式から明らかなように、エラーコードスキームがビット数エラーの検出にしか対応しておらず、そのようなエラーに対するいかなる訂正にも対応していない場合に、変数「C」は0に等しくなる。その結果、特別行生成ルールの対象となるマスク行数が、エラー検出のみに対応する例のものであることが上記式によって示される。しかしながら、エラー訂正に対応している場合、少なくとも2つのマスク行が特別行生成ルールの対象となる必要がある。さらに、データに含まれるビットが偶数か奇数かによっては、さらなる行が必要となることもある。例えば、エラーコードスキームによって1つのビットが訂正可能である場合、特別行生成ルールの対象となるべきマスク行数が、データビット数が偶数である場合に2、若しくは、データビット数が偶数である場合に3となることが上記式によって示される。
【0044】
さらに、訂正可能なビット数が2の時、データビット数が奇数である場合に特別行生成ルールの対象となるべきマスク行は3つとなり、そうでなければルールの対象となるべきマスク行は4つとなることが同様の式によって示される。
【0045】
ステップ55で行われた決定処理に続き、特別行生成ルールの対象となるべきマスク行のそれぞれについて、ステップ60において、チャンクのアドレスビットに関連するその各マスク行のビットを、それらのアドレスビットがECCコードの対応するチェックビットに影響を与えないようにする値に設定する。マスク行の論理1値によって対応するデータビットやアドレスビットが選択され、論理0値によって対応するデータビットやアドレスビットがマスクされる前述の例によれば、この要件は、アドレスビットに関連する全てのマスク行ビットを論理0値に設定することにより満たすことができることが理解されよう。これにより、アドレスビット値に関係なく、ステップ55で決定されたどのマスク行についてもそれらのアドレスビットが選択されることはなく、よって、それらのアドレスビットが関連するチェックビットの値に影響を与えることがない。それにより、アドレスビットが、全て0のデータが全て0のチェックコードを生じさせる(同様に、全て1のデータが全て1のチェックコードを生じさせる)ことがないように講じられる対策の妨げになる可能性を防ぐ。
【0046】
ステップ65では、特別行生成ルールの対象となるべきマスク行のそれぞれについて、データに関連するマスク行のビットの値が、そのマスク行の使用時に奇数のデータビットが選択されるよう配置される。この要件は、使用するECC計算アルゴリズムに関連してさらに詳細に後述するように、データビットが全て0である場合に1のチェックビットが生成される、若しくは、データビットが全て1である場合に0のチェックビットが生成されるようにECC計算アルゴリズムと併用することができる。
【0047】
エラーコードスキームによって、エラー検出時に少なくとも1つのビットの訂正が可能となる場合、前述したように、特別行生成ルールの対象であるマスク行が複数存在する。このような場合、エラー訂正スキームが誤って0縮退故障や1縮退故障を訂正しようとしないようにさらなる対策を講じる必要がある。0縮退故障の問題を考えると、データがたった1つのビットを論理1値に、その他全てのビットを論理0値に有する場合、全て0のエラーコードが生成されないようにする必要がある。これは、上記例において、後にメモリから読み取られたデータやECCコードが全て0である場合に、0縮退故障ではなく、シングルビットの訂正可能なエラーとして検出されることがあるからである。このようなことが発生しないよう、一実施例では、特別行生成ルールの対象である複数のマスク行にさらなる制約が加えられ、たった1つのデータビットが0ではない場合には全て0のチェックコードが生成できないようになる。同様に、同じ制約によって、たった1つのデータビットが0の場合に全て1のチェックコードが生成できないようになる。
【0048】
特に、ステップ65で特定したように、複数のマスク行が上記行生成ルールの対象である場合、データビットを選択させるマスクビットは、その複数のマスク行を補完するものとなる。これにより、ブロック内の異なるデータビットがそれら複数のマスク行のそれぞれによって選択され、対応するチェックビットの生成に使用される。データがたった1つのビットを1にその他全てのビットを0に設定した前述の場合を例に考えると、1に設定されたたった1つのビットは、その複数のマスク行のうちの1つにしか選択されず、その他に選択されることはない。これにより、それら複数のマスク行が同じチェックビットを生成することはなく、よって、エラーコードには1に設定された少なくとも1つのビットが含まれることになる。その結果、その後メモリに書き込まれるデータとエラーコードの組み合わせが、少なくとも2つの論理1値を含むことになる。それにより、データとエラーコードがメモリから読み取る際に全て0である場合は、確実に0縮退故障と判断することができる。
【0049】
さらに、複数のマスク行が上記行生成ルールの対象である場合、データの全てのデータビットがその複数のマスク行によって特定される選択マスクビットに覆われることにもなる。従って、ブロックの各データビットは、複数のマスク行のうちの1つによって選択され、対応するチェックビットの生成に使用される。これにより、上述の特定されたルールでマスクビット値が制約された複数のマスク行の組み合わせが全てのデータビットを考慮に入れることになる。
【0050】
ステップ65に続いて、ステップ70では、マスクアレイの残りのマスクビットの算出が行われる。これらの残りのマスクビットは、上記技術によって制約されないので、既存のマスク生成ルールにより設定することができる。従って、例えば、列ベースのハミングルールを利用してこれらマスクアレイの残りのビットを完成させてもよい。
【0051】
図3は、図1で説明したチャンクと同一のチャンクについて、図2の技術により生成し得るECCマスクアレイ100を示す。従って、ここでも同様に、チャンクには8つのデータビットと4つのアドレスビットが含まれており、DEDエラーコードスキームが使用されるものとする。よって、要件は、チェックコードの5つのチェックビットに関するものとなる。この例では、マスクアレイ100の第1マスク行105が図2で説明した特別行生成ルールの対象となる。特に、エラーコードスキームはエラー検出にしか対応しておらず、エラー訂正には対応していないので、それらのルールの対象となる必要があるのはたった1つのマスク行だけとなる。図3からも分かるように、マスク行105については、アドレスビットに関連する全てのマスクビットが値を0に設定されているので、アドレスビットは、チェックビットC0の生成に対して何も影響を与えない。また、図3に示すように、マスク行105は、データから奇数個のビットが選択されるようマスクビットが設定されることにより、ステップ65の要件が満たされる。ECC計算アルゴリズムを説明する際に図4を参照してさらに詳細に説明するように、ECC計算アルゴリズムによって選択的に行われる計算によって、ECCマスクに追加列110が効果的に付加される。この列には、上記特別行生成ルールの対象である各マスク行については論理1値が含まれ、その他全てのマスク行については論理0値が含まれる。
【0052】
図4は、一実施例に係るECC生成器のECC計算回路内で実行し得るECC計算アルゴリズムを示すフロー図である。ECC計算アルゴリズムの式を図4の上部に示す。この式からも明らかなように、各チェックビットに関して、対応するマスク行を用いてデータビットとアドレスビットのサブセットを選択し、その後、それらをXORリダクション演算にかける。そして、その結果得られた値について、処理中のチェックビット(ひいてはマスク行)に依存する論理1値によりさらにXORリダクション演算が選択的に行われる。これについて、図4のフロー図を参照してさらに説明する。
【0053】
ステップ150でパラメータiを0に設定した後、ステップ155で、マスク行iによりデータビットとアドレスビットを選択し、その後それらをチェックビットの生成に使用する。従って、前述の例によれば、論理1値に設定された全てのマスク行ビットについて、対応するデータビット又はアドレスビットが選択され、チェックビット生成プロセスに使用される。
【0054】
その後、ステップ160では、チェックビット値を生成するために、選択されたデータビットとアドレスビットに対してXORリダクション演算が行われる。しかしながら、そのチェックビットをそのままチェックコード内で使用するかどうか、又は、最終チェックビットの生成の前にそのチェックビットをさらに操作するかどうかを決める前に別のチェックを行う。特に、ステップ165では、マスク行iが特別な行の1つ、つまり、図2のステップ60とステップ65で説明した行生成ルールの対象となった行の1つであるかどうかを判定する。そうである場合、ステップ170に進み、ステップ160でのチェックビット出力と論理1値により最終的なXORリダクション演算を行う。これにより、ステップ160で得られたチェックビット出力の値がフリップされることが理解されよう。そして、その結果得られたチェックビットがステップ175でバッファリングされる、若しくは、対象のマスク行が特別な行の1つではない場合、ステップ160で得られたチェックビット出力がそのままバッファリングされる。
【0055】
その後、ステップ180で、パラメータiが最大値未満であるかどうかを判定し、そうである場合はパラメータiをインクリメントしてステップ155に戻る。しかしながら、ステップ180で、全てのマスク行について処理が行われたと判定されると、よって、パラメータiがi_maxに等しい場合、ステップ190に進み、全てのチェックビットをECCコードとして出力する。図4の処理は繰り返し処理として示されているが、代替実施例では、チェックビットはそれぞれ並行して生成可能であることが理解されよう。
【0056】
図3に戻り、図4のステップ165とステップ170を実行することにより、ステップ160で生成されたチェックビットのフリッピングを行うために、マスク行105に対して論理1値を用いてさらにXOR演算を行う一方、その他全てのマスク行により生成されるチェックビットに対してはフリッピングを行わないようにすることで、図3のマスクアレイに追加列110が効果的に付加されることが分かる。一実施例では、論理0値によるXOR演算を実施すること、ひいては状態を変化させないことにより、その他のマスク行により生成されたチェックビットがフリップしないようにすることができる。また、図4に示すフローのように、最終的なXOR演算を完全に回避することができる。
【0057】
図3のマスクアレイを使用した場合の図4のECC計算アルゴリズムの適用を考えると、以下のような特性が見て取れる。まず、データの全てのデータビットが0である場合を考える。マスクアレイの第1行目105を見ると、論理0値がアドレスのXORリダクション演算の結果として出力されることになる(アドレスのマスクが0であるので、出力はアドレス入力に関係なく0である)。また、第1マスク行105は、データのXORリダクションに論理0値を出力させる(データ入力が全て0であるので、XORリダクションはマスクに関係なく0を出力する)。
【0058】
ステップ170を実行することにより得られた論理1値の最終XORにより1のチェックビットが与えられ、チェックビットの少なくとも1つが0ではなくなる。これにより、データが全て0の場合には全て0のチェックコードが有効なチェックコードではないため、0縮退故障を確実に検出することが可能となる。従って、メモリから読み出されたデータやチェックコードが全て0の場合、これは0縮退故障の発生を意味する。
【0059】
2つ目のシナリオとして、全てのデータ入力が論理1値である場合を考える。この場合も同様に、マスク行105内の論理0値が全てのアドレスビットに対応するため、アドレスのXORリダクションによって論理0値が得られる。第1行目105は、データのXORリダクションに論理1値を出力する(1が奇数個ある場合は最終的に1のリダクションとなるため)。その結果、ステップ170で行われた最終XOR演算により、0のチェックビットを生成するために論理1値がフリップされ、得られたチェックコードの少なくとも1つのチェックビットが0となる。これにより、メモリから読み出されるデータや関連するエラーコードが全て1である場合、これは1縮退故障の発生を意味するため(全て1のエラーコードは、全て1のデータについての有効なエラーコードではない)、1縮退故障を確実に検出することが可能となる。
【0060】
図5Aは、ハミング距離が4である単一エラー訂正・二重エラー検出(SECDED)スキームについて、図2のマスク生成方法により生成し得るECCマスクを示す図である。この場合も同様に、チャンクが前述のものと同様であり、8つのデータビットと4つのアドレスビットが含まれる。このチャンクサイズと4のハミング距離に基づき、エラーコードには6つのチェックビットが必要であるので、マスクアレイには図5Aに示すように6つの行が含まれる。図2で説明したプロセスにより、2つのマスク行205、210が上記特別行生成ルールの対象となる必要があると判断される。これらのマスク行はアレイ内の最初の2行として示されているが、どの2つのマスク行が選択されるかは問題ではないことが理解されよう。図5Aに示すように、各マスク行205、210は、アドレスビットに関連するマスクビットが0に設定される。そのため、チェックビットC0、C1の値はアドレスビットに影響されない。また、各マスク行205,210は、奇数のデータビットが選択されるよう、データビットに対応する位置で奇数のマスク行ビットが1に設定される。また、1に設定されたマスクビットはマスク行205,210で補完的なものであるので、チェックビットC0又はチェックビットC1いずれかの計算でしか特定のデータビットは使用されない。さらに、2つのマスク行205、210を組み合わせることにより、全てのデータビットを選択してチェックビットC0又はチェックビットC1いずれかの生成に使用されることが分かる。従って、これら2つのマスク行205、210は、図2のステップ60及びステップ65で説明したルールに準拠するものである。
【0061】
図4のプロセスを行う場合、ステップ165及びステップ170により、マスク行205、210に関連する論理1値と、残りのマスク行についての論理0値を含む、図5Aの符号215で示す形態の有効な追加列が提供される。
【0062】
データビット数が偶数であるため、図2のステップ55で上記特別行生成ルールの対象となるべきマスク行数を決定するために使用される前述の式から、それらのルールの対象となる必要があるマスク行は2つだけであることが分かる。しかしながら、データビット数が奇数であれば、上記特別行生成ルールの対象として3つ目のマスク行が必要となることになる。
【0063】
図5Bは、エラーコードスキームが二重エラー訂正・三重エラー検出(DECTED: Double Error Correction Triple Error Detection)スキームである、よって、ハミング距離が6であるものとして、前述の図2の技術により生成し得るECCマスクアレイの別の例を示す図である。この例では、チャンクが4つのアドレスビットと9つのデータビットからなるものとする。このチャンクサイズとハミング距離が6であることを考慮すると、図5Bに示すように、チェックコードには9つのチェックビットが必要となる。図2のステップ55で説明した式により、3つのマスク行が図2のステップ60及びステップ65の行生成ルールの対象となる必要があると判断される。データビット数が偶数であれば、そのルールの対象として4つ目のマスク行が必要となることになる。
【0064】
図5Bに示すように、マスクアレイ250について、上記特別行生成ルールの対象となる3つのマスク行は、マスク行255、260、265である。図5Bからも明らかなように、そのマスク行はそれぞれ、アドレスビットに対応するビット位置でマスクビットが0に設定されている。また、各マスク行は、奇数のデータビットを選択させ、それぞれ他の行とは異なるデータビットを選択する。さらに、3つのマスク行255、260、265全体で、各データビットが一度は選択される。これにより、図2のステップ60及びステップ65のルールが満たされることが分かる。列270は、図4のステップ165及びステップ170を行なった結果得られる有効な追加列であり、特定のマスク行255、260、265に対応する行位置にはそれぞれ論理1値を有し、その他全てのマスク行に対応する位置には論理0値を有する。
【0065】
図6は、図2のマスク生成方法を採用した際に、さまざまなエラーコードスキームについて、ハミング距離と、アドレス位置に0を有する最低限必要な行数を示す表である。図2のステップ55で説明した式からも分かるように、1つ以上のビット訂正に対応する任意のスキームについて、データに含まれるビット数が偶数であるか奇数であるかによって、実際に行数を1増加させなければならない場合がある。さらに、図6は、4つのエラーコードスキームしか示していないが、上記技術はその他のエラーコードスキームにも適用可能であって、いずれの場合にも図2のステップ55で説明した式により必要な行数を決定することが理解されよう。
【0066】
図7は、上記マスクアレイを用いてECCコードを生成するのに利用する一実施例に係るECC生成回路を示すブロック図である。特に、データビットにアドレスビットを追加することによってチャンクを生成するチャンク生成器305にデータビットとアドレスビットが入力される。そして、ECC計算回路310がそのチャンクを受け取り、記憶装置315に格納されたマスクアレイにもアクセスできる。その後、ECC計算回路310は、経路320を介して出力されるECCコードビットを生成するため、図4で説明したプロセスを実行する。上記説明から、ECC計算回路により、データが全て0の場合に少なくとも1つのチェックビットが論理1値に設定され、データが全て1の場合に少なくとも1つのチェックビットが論理0値に設定されるECCコードが生成されることが理解されよう。さらに、エラーコードスキームによってエラーの一定数のビット訂正が可能となる場合に、上記特別行生成ルールの対象となる複数のマスク行を使用することで、ECC計算回路は、データと共に格納されるよう生成されたエラーコードを0縮退故障や1縮退故障を(間違って訂正可能なエラーと判断するのではなく)確実に検出するのに十分なものとする。
【0067】
図8は、メモリ375に対応して使用可能な書き込み保護回路350と読み取り保護回路380を両方示す図である。書き込みデータをメモリ375に書き込む場合、書き込みアドレスと書き込みデータを書き込み保護回路350内のECC生成器355に供給する。ECC生成器355は、図7で説明したECC生成器300の構成をとってもよい。従って、ECC生成器は、上記技術により生成された記憶装置365内のマスクアレイにアクセスすることができる。ECC生成器355は付加回路360に転送されるECCコードを生成し、付加回路360は書き込みデータにこのECCコードを追加する。そして、書き込みデータとECCコードはいずれも経路370を介して出力され、メモリ375内の書き込みデータに対応する特定の書き込みアドレスに格納される。
【0068】
その後、読み取りアドレスが特定されることで、経路377を介して上記データと関連するECCコードがメモリから読み出されると、読み取りアドレスでメモリから読み出されたデータは、特定された読み取りアドレスと共に、ECC生成器385へと転送される。このECC生成器385も図7で説明したECC生成器300の構成をとり、記憶装置365内のマスクアレイにアクセスすることができる。よって、マスクアレイ、読み取りアドレス、読み取りデータを用いてECCコードを生成し、算出したECCコードがメモリアドレスから読み出されたECCコードと一致するかを判定可能なチェック回路387に生成したECCコードを転送する。このチェック回路387は、チェックを行った結果シンドローム情報を生成し、メモリから読み出されたデータと共にエラー検出/訂正回路390に送る。このシンドローム情報は、ECC生成器385によって生成されたECCコードがメモリから読み出されたECCコードと一致するかどうかを示し、一致しない場合は、エラーの種類に関する追加情報も提供することができる。そして、回路390はこの情報を用いて読み取り保護回路380からの適切な出力を判定することができる。
【0069】
例えば、上記2つのECCコードが一致する、すなわち、エラーがないと判断すると、読み取りデータが出力される。同様に、シンドローム情報によって訂正可能なエラーがあると見なされると、回路390はそのデータを訂正し、訂正したデータを出力する。また、シンドローム情報によって訂正不可能なデータ故障があると見なされると、回路390はその出力としてデータ故障の存在を特定する。同様に、シンドローム情報によってデータではなくアドレスに故障が存在すると見なされてもよく、その場合、アドレス復号化における故障エラーを回路390から出力することができる。最後に、メモリから読み出されたデータが全て0(又は全て1)であって、メモリから読み出されたECCが全て0(又は全て1)である場合、これは0縮退故障や1縮退故障が存在することを意味し、これも回路390から出力することができる。また、アドレス復号化におけるエラーや0縮退故障/1縮退故障エラーは、その他の訂正不可能なエラーとはっきりと分けて特定されないこともあり、その代わりに、回路390から出力される訂正不可能なエラーの兆候だけを示す場合がある。
【0070】
図9は、上記技術を実施する、特に、マスクアレイを生成して複数のデータビット及び複数のアドレスビットを含むブロックについてエラーコードを生成するのに利用可能なタイプの汎用コンピュータ400を概略的に示す図である。この汎用コンピュータ400は、中央処理装置402と、ランダムアクセスメモリ404と、読み出し専用メモリ406と、ネットワークインターフェースカード408と、ハードディスクドライブ410と、ディスプレイドライバ412と、モニタ414と、キーボード418及びマウス420を含むユーザ入出力回路416とを備え、これらが全て共通バス422を介して接続されている。動作時は、中央処理装置402が、ランダムアクセスメモリ404、読み出し専用メモリ406、ハードディスクドライブ410のいずれか1つ以上に格納可能な、若しくは、ネットワークインターフェースカード408を介して動的にダウンロード可能なコンピュータプログラム命令を実行する。行われた処理の結果は、ディスプレイドライバ412とモニタ414によってユーザに表示される。この汎用コンピュータ400の動作を制御するためのユーザ入力は、キーボード418やマウス420からユーザ入出力回路416を介して受け取られる。上記コンピュータプログラムは、さまざまなコンピュータ言語で書き込み可能であることが理解されよう。また、このコンピュータプログラムは、記録媒体によって格納・配布されてもよいし、汎用コンピュータ400に同時にダウンロードされてもよい。汎用コンピュータ400は、適切なコンピュータプログラムの制御の下で動作を行う場合、上記マスクアレイ生成技術を実施可能であり、上記技術を実施するための装置を形成するものと見なされる。この汎用コンピュータの構造は多岐にわたり、図9に示すものはほんの一例にすぎない。
【0071】
上記技術によって、メモリに格納されたデータのデータビットエラーの検出及び/又は訂正だけでなく、メモリの出力の0縮退故障や1縮退故障の検出にも対応しつつ、アドレス復号化エラーの特定も可能にするマスクアレイの生成が可能となることが上記実施例から理解されよう。これは、そのチェックビット数が保護されるチャンクのサイズ及び使用するエラーコードスキームの種類によって決まるエラーコードを提供しつつ、メモリサイズに関して領域を複雑化させる要因となり得る冗長ビットをさらに追加する必要なく達成される。
【0072】
本出願において、「〜するよう構成される」という表現は、装置の要素が規定の動作を実行可能な構成を有していることを指すのに用いられる。これに関して、「構成」とは、ハードウェアやソフトウェアを相互接続する配置や方法を指す。例えば、装置は、規定の動作を行う専用ハードウェアを有していてもよく、また、プロセッサやその他の処理装置は、その機能を実装するようプログラミングされていてもよい。「〜するよう構成される」とは、装置の要素が規定の動作を行うためにいかなる変更も必要としないことを意味するものではない。
【0073】
以上、添付図面を参照して本発明の具体例を詳細に説明したが、本発明はこれらの明確な実施例に限定されるものではなく、当業者には、添付の請求項に記載の本発明の範囲及び精神から逸脱することなくそれらにさまざまな変更、追加、改良を行うことが可能なことを理解すべきである。例えば、本発明の要旨を逸脱しない範囲で独立請求項の特徴と従属請求項の特徴とのさまざまな組み合わせが可能である。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9