(57)【要約】【課題】  従来の記憶制御回路は、アドレスに関する多ビットエラーを検出することができないでいた。【解決手段】  アドレスで指定される記憶領域にデータを格納する記憶部を有する記憶制御回路におけるアドレスエラーチェック方法であって、前記アドレスに付与する第１のコードを偶数ビットで符号化し、前記記憶部へ書き込まれるデータに付与する第２のコードを奇数ビットで符号化し、前記第１のコードと前記第２のコードとに基づき、チェックコードを生成して前記記憶部へ書き込まれるデータに対応付けて前記記憶部に格納し、前記記憶部から読み出されるデータと、該読み出されるデータに対応付けられたチェックコードと、読み出しアドレスとに基づき、エラーチェックを行うことにより、アドレスの多ビットエラーを検出する。【選択図】  図２
2006285318.tif 000002
【特許請求の範囲】
【請求項１】
アドレスで指定される記憶領域にデータを格納する記憶部と、
前記記憶部へ書き込まれるデータと書き込み用に指定される前記アドレスから、該記憶部へ書き込まれるデータに対応付けて前記記憶部に格納するチェックコードを生成するチェックコード生成部と、
前記記憶部から読み出されるデータと、該読み出されるデータに対応付けられたチェックコードと、読み出し用に指定される前記アドレスから、エラーチェックを行うチェックコード検査部とを備え、
前記チェックコード生成部と前記チェックコード検査部は、前記アドレスに付与する第１のコードを偶数ビットで符号化し、前記記憶部へ書き込まれるデータに付与する第２のコードを奇数ビットで符号化し、前記第１のコードと前記第２のコードとに基づき、前記書き込まれるデータまたは前記読み出されるデータに対応したチェックコードを、生成または検査することを特徴とする記憶制御回路。
【請求項２】
請求項１において、
前記アドレスは、１または複数のビットずつ区切られて複数のグループに分割され、
前記複数のグループ毎に各グループ内のすべての１ビットまたは複数ビットの故障が識別可能なビットパターンを用いて、前記第１のコードを偶数ビットで符号化することを特徴とする記憶制御回路。
【請求項３】
請求項１又は２において、
前記アドレスに、更に、前記記憶部への前記データの書き込み及び読み出しのために指定されるアドレスが一巡する度に、値が反転するロールビットが付与され、
前記ロールビットを含んだ前記アドレスに付与する前記第１のコードを偶数ビットで符号化することを特徴とする記憶制御回路。
【請求項４】
アドレスで指定される記憶領域にデータを格納する記憶部を有する記憶制御回路におけるアドレスエラーチェック方法であって、
前記アドレスに付与する第１のコードを偶数ビットで符号化し、
前記記憶部へ書き込まれるデータに付与する第２のコードを奇数ビットで符号化し、
前記第１のコードと前記第２のコードとに基づき、チェックコードを生成して前記記憶部へ書き込まれるデータに対応付けて前記記憶部に格納し、
前記記憶部から読み出されるデータと、該読み出されるデータに対応付けられたチェックコードと、読み出しアドレスとに基づき、エラーチェックを行うことを特徴とするアドレスエラーチェック方法。
【請求項５】
請求項４において、
前記アドレスは、１または複数のビットずつ区切られて複数のグループに分割され、
前記複数のグループ毎に各グループ内のすべての１ビット又は複数ビットの故障が識別可能なビットパターンを用いて、前記第１のコードを偶数ビットで符号化することを特徴とするアドレスエラーチェック方法。
【請求項６】
請求項４又は５において、
前記アドレスに、更に、前記記憶部への前記データの書き込みおよび読み出しのために指定されるアドレスが一巡する度に、値が反転するロールビットが付与され、
前記ロールビットを含んだ前記アドレスに付与する前記第１のコードを偶数ビットで符号化することを特徴とするアドレスエラーチェック方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ等の記憶制御回路に関し、特に、アドレスに関する多ビットエラーを検出する記憶制御回路、記憶制御回路におけるエラーチェック方法に関する。
【背景技術】
【０００２】
メモリ等の記憶制御回路におけるデータの入出力は、その記憶制御回路における記憶領域をアドレスにより指定して行われる。例えば、アドレスにより指定される記憶領域に、所望のデータが書き込まれ、アドレスにより指定される記憶領域に格納されたデータが読み出される。
【０００３】
一般的に記憶制御回路においては、さまざまな要因（例えば、信号線に発生するノイズ、信号線を中継するバッファの故障、信号線の断線、電磁波などの影響によるソフトエラー等）により、アドレスやデータの値が反転するエラーや、０又は１の固定値になるエラーが発生することがある。例えば、データ書き込み時にアドレスにエラーが発生すれば、所望のアドレスとは異なる記憶領域にデータが書き込まれ、場合によっては、その記憶制御回路を搭載するPC(Personal Computer)等の情報処理装置の暴走の原因となる。
【０００４】
書き込もうとするデータにエラーが発生しても、やはり、情報処理装置の暴走の原因となる恐れがあり、好ましくない。読み出し時にアドレス又はデータに発生するエラーも、同様に、その記憶制御回路を搭載する情報処理装置に重大な影響を及ぼす可能性がある。
【０００５】
そこで、従来例において、エラーを検出するための技術が提案されている。例えば、特許文献１〜５には、アドレス情報と記憶装置に格納するデータとを用いて、単一ビット誤り訂正・二重ビット誤り検出可能なエラー訂正コード(ECC: Error Correcting Code)を生成することが記載される。
【０００６】
また、図１にも従来技術におけるエラー検出方法が示される。図１は、アドレスパリティとデータに基づきチェックコードを生成し、それをデータと共に、指定されたアドレスに書き込む記憶制御回路の例を示す。
【０００７】
アドレスパリティ用チェックコード生成回路１１は、データを書き込むために指定されるアドレスのパリティビット（図１では例として奇数パリティ）に基づき、アドレス用のコード１０３を生成する。図１には、アドレスパリティ用チェックコード生成回路１１により生成されるビットパターンの例が表されている。ｘ印は、パリティビットが１である場合、ONになるビットである。
【０００８】
データ用チェックコード生成回路１２は、書き込むデータに基づき、データ用のコード１０４を生成する。データ用チェックコード生成回路１２により生成されるビットパターンは図示されていないが、所望のコードが得られるように設計されている。
【０００９】
図１の場合与えられたアドレス１０１（「０１０１０１０１」）のパリティビット（奇数パリティ）が１であることから、アドレス用コード１０３として先頭５ビットがONにされた「１１１１１０００」が生成される。そして、データ用チェックコード生成回路１２により、一例として、「００１０１００１」なるデータ用コード１０４が生成される。両者の排他的論理和（EOR）を取り、チェックコード１０５（「１１０１０００１」）が生成され、データ１０２（「０００００００１」）と共に、アドレス１０１で指定された記憶領域に書き込まれる。
【００１０】
そして、データの読み出し時に、読み出されたデータ１０２と読み出しに用いたアドレス１０１を使用して、書き込み時と同様、チェックコードを生成し、それを読み出されたチェックコード１０５と比較する。両者が一致しない場合、エラーとして検出される。
【特許文献１】特開昭５５−８６１７号公報
【特許文献２】特開昭５３−６２９３６号公報
【特許文献３】特開平８−２３５７９３号公報
【特許文献４】特開平２−２０６８５５号公報
【特許文献５】特開昭５２−２２４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来技術においては、アドレスの多ビットエラーで検出できない場合があるという課題を有していた。例えば、図１に示す従来例では、アドレスの２箇所でビット反転しても（例えば、先頭ビットと２番目のビットが入れ替わった状態でも）、パリティビットは１のままであり、エラーとして検出されない。
【００１２】
そこで、本発明の目的は、アドレスに関する多ビットエラーを検出する記憶制御回路、記憶制御回路におけるエラーチェック方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的は、本発明の第一の側面として、アドレスで指定される記憶領域にデータを格納する記憶部と、前記記憶部へ書き込まれるデータと書き込み用に指定される前記アドレスから、該記憶部へ書き込まれるデータに対応付けて前記記憶部に格納するチェックコードを生成するチェックコード生成部と、前記記憶部から読み出されるデータと、該読み出されるデータに対応付けられたチェックコードと、読み出し用に指定される前記アドレスから、エラーチェックを行うチェックコード検査部とを備え、前記チェックコード生成部と前記チェックコード検査部は、前記アドレスに付与する第１のコードを偶数ビットで符号化し、前記記憶部へ書き込まれるデータに付与する第２のコードを奇数ビットで符号化し、前記第１のコードと前記第２のコードとに基づき、前記書き込まれるデータまたは前記読み出されるデータに対応したチェックコードを、生成または検査することを特徴とする記憶制御回路を提供することにより達成される。
【００１４】
上記発明の側面においてより好ましい実施例によれば、前記アドレスは、１または複数のビットずつ区切られて複数のグループに分割され、前記複数のグループ毎に各グループ内のすべての１ビットまたは複数ビットの故障が識別可能なビットパターンを用いて、前記第１のコードを偶数ビットで符号化する。
【００１５】
上記発明の側面においてより好ましい実施例によれば、前記アドレスに、更に、前記記憶部への前記データの書き込み及び読み出しのために指定されるアドレスが一巡する度に、値が反転するロールビットが付与され、前記ロールビットを含んだ前記アドレスに付与する前記第１のコードを偶数ビットで符号化する。
【００１６】
また、上記目的は、第二の側面として、アドレスで指定される記憶領域にデータを格納する記憶部を有する記憶制御回路におけるアドレスエラーチェック方法であって、前記アドレスに付与する第１のコードを偶数ビットで符号化し、前記記憶部へ書き込まれるデータに付与する第２のコードを奇数ビットで符号化し、前記第１のコードと前記第２のコードとに基づき、チェックコードを生成して前記記憶部へ書き込まれるデータに対応付けて前記記憶部に格納し、前記記憶部から読み出されるデータと、該読み出されるデータに対応付けられたチェックコードと、読み出しアドレスとに基づき、エラーチェックを行うことを特徴とするアドレスエラーチェック方法を提供することにより達成される。
【００１７】
上記発明の側面においてより好ましい実施例によれば、前記アドレスは、１または複数のビットずつ区切られて複数のグループに分割され、前記複数のグループ毎に各グループ内のすべての１ビットまたは複数ビットの故障が識別可能なビットパターンを用いて、前記第１のコードを偶数ビットで符号化する。
【００１８】
上記発明の側面においてより好ましい実施例によれば、前記アドレスに、更に、前記記憶部への前記データの書き込み及び読み出しのために指定されるアドレスが一巡する度に、値が反転するロールビットが付与され、前記ロールビットを含んだ前記アドレスに付与する前記第１のコードを偶数ビットで符号化する。
【発明の効果】
【００１９】
本実施形態のアドレスエラーチェック方法を使用すれば、チェックコードのビット数を増やすことなく、アドレスに関する多ビットエラーを検出することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲はかかる実施の形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００２１】
図２は、本発明の実施形態における記憶制御回路の構成例を示す図である。チェックコード生成回路２１には、データを書き込むために指定されるアドレス２０１（以下、書き込みアドレスと呼ぶ）と、記憶制御回路に格納するデータ２０２（以下、書き込みデータと呼ぶ）とが入力される。
【００２２】
そして、チェックコード生成回路２１は、書き込みアドレス２０１と書き込みデータ２０２とに基づき、書き込みデータ２０２に付与するチェックコードを生成する。チェックコード生成回路２１により生成されるビットパターンについては、図３で後述する。
【００２３】
メモリ２５は、本実施形態の記憶制御回路における記憶部である。メモリ２５には、アドレス（番地）で指定される複数の記憶素子が配置され、その複数の記憶素子が記憶領域を形成している。
【００２４】
ライトレジスタ(WR)２２には、メモリ２５に格納される情報（書き込みデータ２０２とチェックコード２０４）が入力される。ライトレジスタ２２は、このメモリ２５に格納される情報を一時的に格納する。
【００２５】
ライトデコーダ(WDEC)２３には、書き込みアドレス２０１が入力される。ライトデコーダ２３は、書き込みアドレス２０１に対応するメモリ２５内の記憶領域を駆動して、ライトレジスタ２２の情報を、駆動する記憶領域に格納する。
【００２６】
リードデコーダ(RDEC)２４には、読み出しアドレス２０３が入力される。リードデコーダ２４は、読み出しアドレス２０３に対応するメモリ２５内の記憶領域に格納される情報を読み出し、リードレジスタ(RR)２６に格納する。
【００２７】
リードレジスタ２６には、メモリ２５から読み出された情報（読み出しアドレス２０３に対応する書き込みデータ２０２とチェックコード２０４）が入力される。リードレジスタ２６は、このメモリ２５から読み出された情報を一時的に格納する。
【００２８】
チェックコード検査回路２７は、読み出しアドレス２０３とメモリ２５から読み出された情報（読み出しアドレス２０３に対応する書き込みデータ２０２とチェックコード２０４）とが入力される。チェックコード検査回路２７は、読み出しアドレス２０３と読み出しアドレス２０３に対応する書き込みデータ２０２とに基づき、チェックコードを生成し、その生成されたチェックコードと、読み出しアドレス２０３に対応するチェックコード２０４とを比較する。
【００２９】
比較の過程において、チェックコード検査回路２７は、シンドロームビットを生成する。シンドロームビットとは、生成されたチェックコードと、読み出しアドレス２０３に対応するチェックコード２０４との排他的論理和を取ったコードのことである。
【００３０】
チェックコード検査回路２７は、シンドロームビットがすべて０であれば、エラーなしと判定し、読み出しアドレス２０３に対応する書き込みデータ２０２を出力する。チェックコード検査回路２７は、シンドロームビットに１が含まれれば、エラーありと判定し、エラー通知を出力する。チェックコード検査回路２７により生成されるチェックコードは、チェックコード生成回路２１で生成されるものと同じであり、図３で後述する。
【００３１】
本実施形態の記憶制御回路は、チェックコード生成回路２１とチェックコード検査回路２７で生成されるチェックコードのビットパターンに特徴がある。本実施形態の記憶制御回路は、書き込みアドレス２０１に付与するコードを偶数ビットで符号化し、書き込みデータ２０２に付与するコードを奇数ビットで符号化し、両者の排他的論理和(EOR)を取ることにより、チェックコードを生成する。
【００３２】
図３は、チェックコード生成回路２１及びチェックコード検査回路２７により生成されるビットパターンの例を示す図である。図３は、３２ビットの書き込みデータ２０２と９ビットの書き込みアドレス２０１に対し、本実施形態の記憶制御回路が生成するチェックコードの例を示す。
【００３３】
本実施形態の記憶制御回路は、データ部分を３ビットで符号化する。つまり、３２ビットのデータの各ビット位置においてそのビットが１である場合、生成されるチェックコードでONとなるビットの数が３となる。そして、本実施形態の記憶制御回路は、アドレス部分を２ビットで符号化する。
【００３４】
図３Ａは、３２ビットのデータの前半１６ビットに関するビットパターンを示し、図３Ｂは、３２ビットのデータの後半１６ビットに関するビットパターンを示し、図３Ｃは、９ビットのアドレスに関するビットパターンを示す。ｘ印は、（データ又はアドレスの）ビットが１である場合、（生成されるコードにおいて）ONとなるビットを示す。
【００３５】
例えば、３２ビットのデータが、最後から２番目と４番目のビットのみが１であるようなデータ「00000000 00000000 00000000 00001010」の場合、図３Ｂの「D28」が１である場合にONとなるビットからなるコード「00001101」と、「D30」が１である場合にONとなるビットからなるコード「00010101」の２者の排他的論理和を取った「00011000」が、データに対するコード（第２のコード）として生成される。
【００３６】
このデータをアドレス「101010101」に書き込むとき、図３Ｃの「A0」が１である場合にONとなるビットからなるコード「11000000」、同様に、「A2、A4、A6、A8」が１である場合にONとなるビットからなるコード「10010000」「10000100」「10000001」「01010000」の５者の排他的論理和を取った「00000101」がアドレスに対するコード（第１のコード）として生成される。
【００３７】
記憶制御回路は、アドレスに対する第１のコード「00000101」とデータに対する第２のコード「00011000」の排他的論理和を取り、最終的にチェックコードを生成する。この場合、チェックコードは「00011101」である。
【００３８】
また、図３において、データ部のビットパターンは、それぞれ異なる。例えば、データの先頭ビットD00に対するビットパターン「00001110」は、データにおける他のビットDxxに対するビットパターンとはいずれも異なる。同様に、アドレス部のビットパターンもそれぞれ異なる。
【００３９】
こうして、本実施形態の記憶制御回路は、アドレスに付与するコードの体系を、データに付与するコードの体系と変えることにより、アドレスに生じるエラーを検出することができる。本実施形態の記憶制御回路では、アドレスに付与するコードは２ビットで符号化されており、アドレスに生じるエラーが、シンドロームビットにおけるデータの２ビットエラーとして検出される。
【００４０】
なお、本実施形態では、記憶制御回路が、書き込みアドレス２０１に付与するコードを２ビットで符号化し、書き込みデータ２０２に付与するコードを３ビットで符号化するが、符号化に使用するビット数はこれに限定されない。一般的に、書き込みアドレス２０１に付与するコードを２ビット以上の偶数ビットで符号化し、書き込みデータ２０２に付与するコードを３ビット以上の奇数ビットで符号化すれば、本実施形態と同様の効果を得ることができる。
【００４１】
本実施形態では、シンドロームビットのビットパターンが図３Ａまた図３Ｂのビットパターンと同じであれば、該当するデータビットの１ビットエラーであり、該当するデータビットを反転（訂正）すれば正しいデータを得られる。また、シンドロームビットが１ビットのみONであるビットパターンはチェックビットの１ビットエラーであり無視することができるし、シンドロームビットがすべて０であればエラーが無いことになる。そして、シンドロームビットが、これらのいずれでもない場合にデータの２ビットエラーまたはアドレスエラーとして認識する。
【００４２】
データの２ビットエラーを検出するために図３の例に示すように、データの各ビットには３ビット以上の奇数ビットのビットパターンを付与している。このことにより任意の２ビットのデータビットが反転するとシンドロームビットは奇数ビットパターンと奇数ビットパターンの排他的論理和で偶数ビットパターンとなるため、２ビットエラーと認識することができる。アドレスのエラーは、偶数ビットパターンが付与されているため、１ビットまたは複数ビットが反転すると、シンドロームビットは偶数ビットパターンと偶数ビットパターンの排他的論理和で偶数ビットパターンとなるため、２ビットエラーと認識することができる。
【００４３】
図３Ｃのアドレスに対するビットパターン例ではビットＡ０〜Ａ６とビットＡ７〜Ａ８の２グループに分けてビットパターンを付与している。この図３Ｃのビットパターン例ではアドレスグループ内のすべての故障組み合わせ（１〜７ビットの任意の組み合わせ）でも、シンドロームビットは２ビット以上の偶数ビットパターンとなるため、２ビットエラーと認識することができる。ただし、アドレスグループ間にまたがる３ビット以上の故障（例えばアドレスのＡ０，Ａ１，Ａ７ビットが同時に反転する故障）では、シンドロームビットがすべて０となって、エラーを検出できない場合がある。しかし、アドレスグループは同時に故障する可能性の低いビット同士をグループ化するため、シンドロームビットがすべて０となって、エラーを検出できない故障は、ほとんど発生しない。
【００４４】
図４は、読み出しアドレス２０３に対する１ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。読み出しアドレス２０３がリードデコーダ２４に入力される途中に故障箇所３００があり、アドレスに１ビット反転が発生する状態を示す。書き込みは正常に行われ、アドレス「101010101」に、データとチェックコードが格納されている。
【００４５】
そして、書き込まれたデータを読み出すために、読み出しアドレス２０３（「101010101」）が指定される。リードデコーダ２４には、故障箇所３００を経た読み出しアドレス２０３が１ビット反転（ここでは、読み出しアドレスの先頭ビットが反転する）し、故障アドレス３０３（「001010101」）として入力され、対応するアドレスに格納されたデータとチェックコードがリードレジスタ２６を経て、チェックコード検査回路２７に入力される。
【００４６】
一方、読み出しアドレス２０３は、正常にチェックコード検査回路２７に入力される。チェックコード検査回路２７は、読み出されたデータとチェックコードと読み出しアドレス２０３とに基づき、シンドロームビット４０１を生成する。
【００４７】
生成されるシンドロームビット４０１は、故障アドレス３０３（「001010101」）のチェックコード３０４（「11000101」）と読み出しアドレス２０３（「101010101」）のチェックコード３０５（「00000101」）の排他的論理和となる。シンドロームビット４０１は、ここでは、「11000000」であり、アドレスにおける１ビット反転が、データの２ビットエラーとして検出される。
【００４８】
図５は、読み出しアドレス２０３に対する２ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。図５は、図４と異なり、２ビットエラーが発生する点が異なるが、それ以外の点は同じである。
【００４９】
読み出しアドレス２０３がリードデコーダ２４に入力される途中に故障箇所３００があり、アドレスに２ビット反転が発生する状態を示す。書き込みは正常に行われ、アドレス「101010101」に、データとチェックコードが格納されている。
【００５０】
そして、書き込まれたデータを読み出すために、読み出しアドレス２０３（「101010101」）が指定される。リードデコーダ２４には、故障箇所３００を経た読み出しアドレス２０３が、２ビット反転（ここでは、読み出しアドレスの先頭ビットと２番目のビットが反転する）し、故障アドレス３０３（「011010101」）として入力され、対応するアドレスに格納されたデータとチェックコードがリードレジスタ２６を経て、チェックコード検査回路２７に入力される。
【００５１】
一方、読み出しアドレス２０３は、正常にチェックコード検査回路２７に入力される。チェックコード検査回路２７は、読み出されたデータとチェックコードと読み出しアドレス２０３（「101010101」）とに基づき、シンドロームビット４０１を生成する。  生成されるシンドロームビット４０１は、故障アドレス３０３（「011010101」）のチェックコード３０４（「01100101」）と読み出しアドレス２０３（「101010101」）のチェックコード３０５（「00000101」）の排他的論理和となる。シンドロームビット４０１は、ここでは、「01100000」であり、アドレスにおける２ビット反転が、データの２ビットエラーとして検出される。
【００５２】
図６は、読み出しアドレス２０３に対する３ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。図６は、図４と異なり、３ビットエラーが発生する点が異なるが、それ以外の点は同じである。
【００５３】
読み出しアドレス２０３がリードデコーダ２４に入力される途中に故障箇所３００があり、アドレスに３ビット反転が発生する状態を示す。書き込みは正常に行われ、アドレス「101010101」に、データとチェックコードが格納されている。
【００５４】
そして、書き込まれたデータを読み出すために、読み出しアドレス２０３（「101010101」）が指定される。リードデコーダ２４には、故障箇所３００を経た読み出しアドレス２０３が、３ビット反転（ここでは、読み出しアドレスの先頭ビットと２番目、３番目のビットが反転する）し、故障アドレス３０３（「010010101」）として入力され、対応するアドレスに格納されたデータとチェックコードがリードレジスタ２６を経て、チェックコード検査回路２７に入力される。
【００５５】
一方、読み出しアドレス２０３は、正常にチェックコード検査回路２７に入力される。チェックコード検査回路２７は、読み出されたデータとチェックコードと読み出しアドレス２０３（「101010101」）とに基づき、シンドロームビット４０１を生成する。  生成されるシンドロームビット４０１は、故障アドレス３０３（「010010101」）のチェックコード３０４（「11110101」）と読み出しアドレス２０３（「101010101」）のチェックコード３０５（「00000101」）の排他的論理和となる。シンドロームビット４０１は、ここでは、「11110000」であり、アドレスにおける３ビット反転が、データの２ビットエラーとして検出される。こうして、アドレスエラーが、シンドロームビット４０１における偶数ビットエラーとして検出される。
【００５６】
図３に示すチェックコードのビットパターンにおいて、チェックコードの各ビットを行毎に見るとき、各行に含まれるｘ印の数が多いと、それだけ、チェックコード生成回路２１及びチェックコード検査回路２７において、EORゲートが多段に接続されることになり、遅延時間が遅くなる。そこで、各行に含まれるｘ印の数が平均化されるようにして、多段に接続されるEORゲートを減らすようチェックコード生成回路２１及びチェックコード検査回路２７を設計することができる。
【００５７】
図７は、EORゲートの段数を減らすことを目的とするアドレスに関するビットパターンの例である。図３Ｃを、図７で置き換えれば、チェックコードの先頭ビットC0に必要なEORゲートの段数が、図３Ｃと比べて少なくて済むことがわかる。
【００５８】
また、本実施形態においては、チェックコードとして８ビット(C0〜C7)を用いたが、このチェックコードに必要なビット数ｘは、次のような条件を満たしていればよい。それは、ｎ個の物から順列を考慮せず、ｒ個取り出したときの組合せをｎＣｒで表すとき、データに関してはｘＣｄ＞（データのビット数）が成立することである。ここで、ｄは、データを符号化するための３以上の奇数すべてで、（８Ｃ３＝５６）＋（８Ｃ５＝５６）＋（８Ｃ７＝８）＝１２０となり、データのビット数が３２より大きいための条件を満たしていることが分かる。
【００５９】
アドレスに関しては２つの条件が必要であり、一つ目の条件は、ｘＣａ＞（アドレスのビット数）が成立することである。ここで、ａは、アドレスを符号化するための２以上の偶数のすべてで、（８Ｃ２＝２８）＋（８Ｃ４＝７０）＋（８Ｃ６＝２８）＋（８Ｃ８＝１）＝１２７となりアドレスのビット数９より大きいため条件を満たしていることが分かる。アドレスの二つ目の条件はアドレスグループ内のビット数よりチェックコードのビット数が大きければよい。ここでは、アドレスグループはビットA0〜A6と、ビットA7、A8の２つのグループに分かれており、それぞれ７ビットと２ビットずつであり、チェックコードの８ビットの方が大きいため条件を満たしていることが分かる。
【００６０】
続いて、アドレスのグループ化の例を説明する。
【００６１】
図８Ａは、本実施形態におけるメモリの物理的構成を示す図である。４つのcolumn (column 0〜3)に分割され、データとチェックコードを合わせた４０ビットが書き込まれる様子が描かれる。
【００６２】
図８Ｂは、columnを抜き出して説明する図である。各columnは、４０ビットのデータ１組を１２８組(row 0〜127)格納する記憶素子を含む。
【００６３】
図８Ｃは、アドレスにおけるグループ化を説明する図である。図８に示すメモリの場合、９ビットのアドレスのうち、先頭からの７ビットがrowを指定するのに用いられ、残り２ビットがcolumnを指定するのに用いられる。アドレスのグループは、このアドレスのグループは、このrowを指定する７ビットとcolumnを指定する２ビットに分けられる。
【００６４】
以上の説明は、記憶制御回路が、データの読み出し時におけるアドレスのエラーを検出する例として説明してきた。以上の説明からあきらかなように、メモリに書き込まれたチェックコードには、書き込みアドレス情報がコード化されて含まれており、読み出しアドレスと不一致であればアドレスエラーとしていることが分かる。これは、読み出しアドレスのエラー以外に、書き込みアドレスのエラーも検出が可能であることを容易に推測できる。書き込みアドレスが故障して、メモリの間違ったアドレス位置にデータとチェックコードを書き込んだとする。ただし、チェックコードは、正しい書き込みアドレスから生成されたとする。この間違ったアドレス位置に書き込まれたデータとチェックコードを読み出して、チェックコードを検査すると、読み出しアドレスと読み出されたチェックコードに含まれた書き込みアドレス情報が不一致であるので、アドレスエラーを検出できる。
ただし、書き込みアドレスがエラーすると、本来書き込まれるべきアドレス位置には、古いデータとチェックコードが残っていることになる。この古いデータとチェックコードを読み出しても、読み出しアドレスと読み出したチェックコードの書き込みアドレス情報が一致するためにアドレスエラーを検出できない。この、古いデータとチェックコードを読み出したときにエラーを検出するために、メモリへのデータの書き込みのために指定されるアドレスが一巡する度に、値が反転するロールビットを追加する。
【００６５】
図９Ａは、ロールビットを説明する図である。９ビットのアドレスの先頭のアドレスは、「000000000」であり、末尾のrowのアドレスは、「111111111」である。ロールビットは、アドレスが「000000000」から「111111111」まで一巡し、ふたたび「000000000」になる度に反転する。
【００６６】
図９Ｂは、一巡目の書き込みを説明する図である。一巡目の書き込みでは、ロールビットは０として、チェックビットが生成され、データと共に書き込まれる。
【００６７】
図９Ｃは、二巡目の書き込みを説明する図である。そして、書き込みアドレス２０１が先頭アドレスを通過する二順目の書き込みでは、ロールビットが１として、チェックビットが生成され、データと共に書き込まれる。図９Ｃにおいて、アドレス「000000110」に二巡目のデータを書き込もうとして３ビット反転が発生し、アドレス「000010101」に書き込みが行われたとする。
【００６８】
アドレス「000000110」に対応するメモリ２５には、ロールビットが０の時に生成されたチェックコードが残されている。アドレス「000010101」に対応するメモリ２５には、ロールビットが１として生成されたチェックコードが、（周囲はロールビットが０の領域であるにも関わらず）格納される。
【００６９】
次にロールビットに１が指定された状態で、データの読み出しが行われるとする。すると、アドレス「000000110」のデータを読み出して、エラーチェックを行うと、ロールビットが０の時に生成されたチェックコードが残されており、エラーが検出される。
【００７０】
図１０は、ロールビットが付与される場合のアドレスに関するビットパターンの例である。図３Ｃと比較して、追加されたロールビット(AX)が１である場合、すべてのビットがONになるような例である。この場合でもロールビットは偶数ビットで符号化されていることになる。
【００７１】
図１１は、本実施形態の記憶制御回路の変形例を示す図である。変形例は、図２に示すライトデコーダ２３とリードデコーダ２４に分かれた２ポート構成ではなく、ライトデコーダ２３とリードデコーダ２４の機能を合わせたデコーダ(DEC)３０を有する１ポート構成である点が異なる。デコーダ３０には、書き込みアドレスと読み出しアドレスが共にアドレス２００として入力され、それぞれの処理が行われる。
【００７２】
この場合でも、図２に示す構成における本実施形態の記憶制御回路と同じ効果を得ることができる。
【００７３】
こうして、本実施形態の記憶制御回路は、アドレスに付与するコードの体系と、データに付与するコードの体系を変えることにより、アドレスに生じる多ビットエラーであっても検出することができる。本実施形態の記憶制御回路では、アドレスに付与するコードは２ビットで符号化されており、アドレスに生じるエラーが、シンドロームビットにおけるデータの２ビットエラーとして検出される。
【００７４】
また、本実施形態の記憶制御回路は、ロールビットという、仮想のビットをアドレスに付加し、同様に符号化することにより、データの書き込みが行われなかったアドレスのエラーを検出することもできる。
【図面の簡単な説明】
【００７５】
【図１】従来技術におけるエラー検出方法を説明する図である。
【図２】本発明の実施形態における記憶制御回路の構成例を示す図である。
【図３】チェックコード生成回路及びチェックコード検査回路により生成されるビットパターンの例を示す図であり、Ａは、３２ビットのデータの前半１６ビットに関するビットパターンを示し、Ｂは、３２ビットのデータの後半１６ビットに関するビットパターンを示し、Ｃは、９ビットのアドレスに関するビットパターンを示す。
【図４】読み出しアドレスに対する１ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。
【図５】読み出しアドレスに対する２ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。
【図６】読み出しアドレスに対する３ビットエラーが発生する場合におけるエラー検出の様子を説明する図である。
【図７】EORゲートの段数を減らすことを目的とするアドレスに関するビットパターンの例である。
【図８】Ａは、本実施形態におけるメモリの物理的構成を示す図であり、Ｂは、columnを抜き出して説明する図であり、Ｃは、アドレスにおけるグループ化を説明する図である。
【図９】Ａは、ロールビットを説明する図であり、Ｂは、一巡目の書き込みを説明する図であり、Ｃは、二巡目の書き込みを説明する図である。
【図１０】ロールビットが付与される場合のアドレスに関するビットパターンの例である。
【図１１】本実施形態の記憶制御回路の変形例を示す図である。
【符号の説明】
【００７６】
２１  チェックコード生成回路、２２  ライトレジスタ、２３  ライトデコーダ、２４  リードデコーダ、２５  メモリ、２６  リードレジスタ、２７  チェックコード検査回路、３０  デコーダ、２００  アドレス、２０１  書き込みアドレス、２０２  書き込みデータ、２０３  読み出しアドレス、２０４  チェックコード、３００  故障箇所、３０３  故障アドレス、３０４  故障アドレスから生成したチェックコード、３０５  読み出しアドレスから生成したチェックコード、４０１  シンドロームビット
【図１】
2006285318.tif 000003
【図２】
2006285318.tif 000004
【図３】
2006285318.tif 000005
【図４】
2006285318.tif 000006
【図５】
2006285318.tif 000007
【図６】
2006285318.tif 000008
【図７】
2006285318.tif 000009
【図８】
2006285318.tif 000010
【図９】
2006285318.tif 000011
【図１０】
2006285318.tif 000012
【図１１】
2006285318.tif 000013
【手続補正書】
【提出日】平成17年6月9日(2005.6.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
図９Ａは、ロールビットを説明する図である。９ビットのアドレスの先頭のアドレスは、「000000000」であり、末尾のアドレスは、「111111111」である。ロールビットは、アドレスが「000000000」から「111111111」まで一巡し、ふたたび「000000000」になる度に反転する。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2006285318.tif 000014
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2006285318.tif 000015