JP2006323434A - データ処理装置及びそのメモリ訂正方法 - Google Patents
データ処理装置及びそのメモリ訂正方法 Download PDFInfo
- Publication number
- JP2006323434A JP2006323434A JP2005143403A JP2005143403A JP2006323434A JP 2006323434 A JP2006323434 A JP 2006323434A JP 2005143403 A JP2005143403 A JP 2005143403A JP 2005143403 A JP2005143403 A JP 2005143403A JP 2006323434 A JP2006323434 A JP 2006323434A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- parity
- bit
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
- H03M13/2915—Product codes with an error detection code in one dimension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】 低価格でありながら信頼性が高く、かつ、16ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置及びそのメモリ訂正方法を提供する。
【解決手段】 データをメモリ10に書き込むときや該データをメモリ10から読み出すときに1つのワードデータ毎に1つのチェックコードを付加するデータ処理装置において、前記チェックコードとしてパリティデータを用い、メモリ10にデータ3を書き込むときは該データ3のパリティデータをパリティ生成回路5で生成して該データ8にパリティデータ9付加しメモリ10に書き込み、メモリ10からデータを読み出すときは該データ12と該データ12に付随するパリティデータ11とを読み出し該データ12をパリティデータ11でチェック15し、誤りがある時はモディファイ回路18でデータ訂正を行いホスト1に転送する。
【選択図】 図1
【解決手段】 データをメモリ10に書き込むときや該データをメモリ10から読み出すときに1つのワードデータ毎に1つのチェックコードを付加するデータ処理装置において、前記チェックコードとしてパリティデータを用い、メモリ10にデータ3を書き込むときは該データ3のパリティデータをパリティ生成回路5で生成して該データ8にパリティデータ9付加しメモリ10に書き込み、メモリ10からデータを読み出すときは該データ12と該データ12に付随するパリティデータ11とを読み出し該データ12をパリティデータ11でチェック15し、誤りがある時はモディファイ回路18でデータ訂正を行いホスト1に転送する。
【選択図】 図1
Description
本発明は、データ保全を目的としているサーバー装置やディスクアレイ装置など高信頼性が求められるデータ処理装置等に関し、特に、エラーチェックコードを用いてメモリ訂正を行いデータの信頼性向上を図るデータ処理装置及びそのメモリ訂正方法に関する。
図7は、従来のメモリ訂正の説明図であり、ホスト100からメモリモジュール110へのデータ書き込み時のデータ経路、および、リードデータをメモリモジュール110からホスト100に対して転送する時のデータ経路を示す図である。
ホスト100がホストバス102を介してメモリモジュール110へデータ書き込みを実行する場合には、128ビットのライトデータ103に対して16ビットのECCコードをECC生成回路104で生成し、ライトバッファ106やライトバック用セレクタ107を経由したのち、ライトデータ108に対してECCコード109を付加した状態で、最終的にメモリモジュール110に書き込む。
ホスト100からリード要求があった場合には、メモリモジュール110からリードデータ111及び該データ111に付属するリードECCコード112を読み出す。ECCチェック回路113はエラーチェックを行い、エラーを検出した場合には、リードデータ111及びリードECCコード112をシンドローム生成回路114に入れ、訂正場所を示すシンドロームを生成する。そして、生成されたシンドロームによって、モディファイ回路115がリードデータ111のデータ訂正を行うことで、正常にデータを復元する。
この時、信頼性が高いサーバー装置などにおいては、図7のメモリモジュール110に格納されるライトECCコード109は、ライトデータ108が128ビットに対して16ビットであるようなS4EC−D4ED符号がとられており、4ビットを1ブロックとした1ブロック訂正・2ブロックエラー検出の機能を有するものが使われる。上記のコード以外においても、データ幅が少ない64ビットデータである場合などにおいては、8ビットのECCコードをもち、1ビット訂正・2ビットエラー検出を行うSEC−DED符号などがある。
上記の「SEC−DED」は、Single bit Error Correcting−Double bit Error Detectingの略であり、ハミング符号をもとにした1ビット誤り訂正・2ビット誤り検出符号である。また、「S4EC−D4ED」は、リードソロモン符号をもとにしたSbEC−DbED(Single b−bit byte Error Correcting−Double b−bit byte Error Detecting)符号のうち、4ビット(b=4)を1バイトとして訂正可能にする単一バイト誤り訂正・2重バイト誤り検出符号である。
尚、上述した従来技術の様に、チェックコードを用いてメモリデータのチェックを行うものとして、下記特許文献1記載のものがある。
しかしながら、64ビットのデータで8ビットのECCコードを付加できるSEC−DED符号では、1ビット訂正が行えるのみで、4ビットのエラー訂正はできない。4ビットの訂正が可能なS4ED−D4ED符号を64ビットデータに対して使ったとすると、12ビットのECCコードを付加することが必要となり、一般的に普及している72ビットの汎用メモリモジュールでは対応ができない。
また、サーバー装置などにおいては、72ビットの汎用メモリモジュールを2つ並列に使うことが一般的になっているが、この場合には、見かけ上128ビットのデータに対し16ビットのECCコードを付加できる。しかし、使用できる符号はS4ED−D4ED符号なため、4ビット訂正までは可能であるが、8ビット以上の訂正はできない。
128ビットのデータに対して8ビットのエラー訂正を行うには、磁気テープ等でよく使用されているS8EC符号がよく知られているが、こちらでもECCコードは最低24ビットを必要としている為、144ビットでは足らず汎用メモリを使用することができない。
また、S4EC−D4ED符号を使用し、汎用メモリモジュールを2枚並列に使用して4ビットの故障に耐えられる信頼性を準備したとしても、安価に製造されているメモリモジュールでは1つのメモリチップが持つビット幅が8ビットや16ビットである為に、チップ故障時には訂正能力を超える故障となってしまい、装置としての信頼性が落ちてしまう。
これと同時に、4ビット幅のメモリチップを使用したメモリモジュールしか使えないという制限が生じ、メモリチップが沢山載っている高価なメモリモジュールを使う装置、特に、沢山のメモリモジュールを使う装置においては、装置の価格を下げることができないという問題が生じる。
これらの問題を解決する一つの方法として、ブロック訂正の方式を採用し、ECCコードとして1ワードのデータに付随するコードを使わずにデータを特定のブロック単位の大きさにまとめ、そのブロック単位に多ビットのECCコードを使って訂正能力を広げる方法も存在する。
しかし、この場合、チェックコードとしてのECCコードがブロック単位に存在する為、小さいワード単位にデータを読みたい場合にはエラーのチェックができず、必ずブロック単位まではすべて読み込みを行わなければならず、メモリのアクセス効率が落ちてしまうという別の問題が生じる。
このため、安価で汎用的な72ビットのメモリモジュールが使用でき、72ビットのメモリモジュールでは8ビット以上の訂正機能を実現でき、2つ並列に使った144ビットのメモリモジュールでは16ビット以上の訂正機能を有する新規な技術の開発が望まれている。
本発明の目的は、低価格でありながら信頼性が高く、かつ、汎用の16ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置及びそのメモリ訂正方法を提供することにある。
本発明の別の目的は、データを読み込む時においては、必ずメモリの1ワードでエラー検出を可能とし、読込時の効率を高く保ったまま8ビットや16ビットの訂正を実現できる高信頼なデータ処理装置及びそのメモリ訂正方法を提供することにある。
本発明のデータ処理装置及びそのメモリ訂正方法は、データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に1つのワードデータ毎に1つのチェックコードを付加し前記データをチェックするに際し、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とする。
本発明のデータ処理装置及びそのメモリ訂正方法は、一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すCRCチェックコードを付加すると共に、付加した前記CRCチェックコードを1ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする。
本発明のデータ処理装置及びそのメモリ訂正方法は、前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする。
本発明によれば、低価格でありながら信頼性が高く、かつ、汎用の16ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置やメモリ訂正方法を提供することができ、また、データを読み込む時においては、必ずメモリの1ワードでエラー検出を可能とし、読込時の効率を高く保ったまま8ビットや16ビットの訂正を実現できる。
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本発明の一実施形態に係るデータ処理装置の要部構成図であり、ホスト1からメモリモジュール10へのデータ書き込み時のデータ経路、および、リードデータをメモリモジュール10からホスト1に対して転送する時のデータ経路を示す図である。
ホスト1からメモリモジュール10に対してデータ転送を行う場合、ホスト1からホストバス2を介してライトデータ3がデータ転送される。このライトデータ3は、ライトバッファ6及びライトバック用セレクタ7を経由してメモリモジュール10に転送されるが、このとき、本実施形態では、CRC生成回路4及びパリティ生成回路5もライトデータ3を取り込み、以下の処理を行う。
CRC生成回路4は、後述する様に、ライトデータ3がライトバッファ6に格納されるたびにデータバイト数をカウントし、512バイト転送される毎に得られたCRC結果(CRCコード)をライトバッファ6に格納する。パリティ生成回路5は、後述する様に、バイト単位にライトデータ3を区切り、EXOR(イクスクルーシブオア:排他論理和)演算によるパリティデータを生成する。
ホスト1からの要求により、メモリモジュール10のデータをホスト1に対してデータ転送を行う場合には、メモリモジュール10から読み出されたリードデータ12と、リードパリティデータ11とが、データ復元回路13に入力される。
データ復元回路13には、リードデータ12とリードパリティデータ11のパリティチェックを行うパリティチェック回路15と、CRCコードをチェックするCRCチェック回路14の2つのチェック回路が設けられている。
データ復元回路13は、2つのチェック回路15,14のチェック結果からエラーバイトを特定し、どのバイト位置のデータが訂正対象かをエラーバイトテーブル16に書き込み、エラーを検出している間、リードデータ12およびリードパリティデータ11をテンポラリバッファ17に一時的に保管し、エラーバイトテーブル16によって指示されたバイト位置の書き換えをモディファイ回路18が行い、モディファイ回路18によってエラー箇所が書き換えられたリードデータ12及びリードパリティデータ11がリードバッファ19に格納され、その後、リードデータ20としてホスト1に転送される。
図2は、図1のCRC生成回路4の詳細図である。CRC生成回路4は、ライトデータ3を2バイト単位のバイトデータ3−0〜3−7に分割し、それぞれ独立したCRC演算回路4a−0〜4a−7によってCRCコード4b−0〜4b−7を生成する。
このとき、ライトデータ3が512バイト転送したことをカウンタ4c,4dによりカウントし、カウンタが512バイトを示すたびにセレクタ4eがCRC演算結果をライトバッファ6に転送する。
図3は、図1のパリティ生成回路5の詳細図である。パリティ生成回路5では、128ビットのライトデータ3が、16ビット単位に区切ったバイトデータ3−0〜3−7に分割される。この時、バイトデータ3−0〜3−7は、すべてビット単位にEXOR回路5a−0〜5a−6によってEXOR演算され、パリティデータ9が生成される。
図4は、図1のデータ復元回路13内に設けられるCRCチェック回路14,パリティチェック回路15,エラーバイトテーブル16で構成されるエラーバイト特定回路の詳細図である。リードデータ12は2バイト単位のバイトデータ12−0〜12−7に分割され、リードパリティデータ11(12−8)を含めて、それぞれ独立したCRC演算回路14a−0〜14a−7,15aによりCRCデータ14b−0〜14b−7,15bのCRCチェックが行われる。そして、そのチェック結果が、エラーフラグ14c−0〜14c−7,15cとして、512バイトカウンタ14dに従って9ビットのエラーバイトテーブル16に保存される。
図5は、図1のモディファイ回路18の詳細図である。テンポラリバッファ17から読み出されたリードデータ12及びリードパリティ11は、それぞれ2バイト単位のデータ12−0〜12−8に分割され、図2と同じ構造を持つパリティ生成回路18aによって生成パリティデータ18bが生成される。
生成された生成パリティデータ18bと、テンポラリバッファ17から読み出されたパリティデータ11とはEXOR演算回路18cに入力され、EXOR演算回路18cからDIFFコード18dが出力される。
2バイト単位の各データ12−0〜12−8とDIFFコード18dとが夫々EXOR回路18e−0〜18e−8に入力され、各EXOR回路18e−0〜18e−8の出力と2バイト単位のデータ12−0〜12−8とが夫々セレクタ18f−0〜18f−8に入力される。各セレクタ18f−0〜18f−8には、セレクト信号として、エラーバイトテーブル16に書き込まれているバイト位置信号ERR1〜ERR8が印加される。これにより、モディファイ(訂正)されたリードデータ12’とパリティ11’が生成され、リードバッファ19に書き込まれ、これが図1のリードデータ20となる。
次に、上述したデータ処理装置における動作を説明する。ホスト1からメモリモジュール10にデータ転送し、メモリモジュール10にデータを保存する場合には、ホスト1からライトデータ3が512バイト転送されるたびに、8バイトのCRCチェックコードをCRC生成回路4が生成し、ライトデータ3の後にCRCコードを付加する。この動作を図2で説明する。
図2において、ライトデータ3は2バイトのデータ単位に分割され、それぞれのデータ3−0〜3−7の単位に、CRC演算回路4a−0〜4a−7によって、CRCコード4b−0〜4b−7が生成される。この時、CRCコードは、以下の式を2回実行することによって、2バイトのデータを1バイトのCRCコードとして生成する。
尚、Ci+1(x)は生成する新しいCRCコードを意味し、Di(x)は入力するデータ、Ci(x)はデータを入力する時の元のCRCデータである。
Ci+1(7)=Ci(0)+Di(0)
Ci+1(6)=Ci(7)+Di(7)
Ci+1(5)=Ci(6)+Di(6)+Ci(0)+Di(0)
Ci+1(4)=Ci(5)+Di(5)+Ci(0)+Di(0)
Ci+1(3)=Ci(4)+Di(4)+Ci(0)+Di(0)
Ci+1(2)=Ci(3)+Di(3)
Ci+1(1)=Ci(2)+Di(2)
Ci+1(0)=Ci(1)+Di(1)
この演算は、2バイトのデータ3−0〜3−7毎に実行される。
Ci+1(6)=Ci(7)+Di(7)
Ci+1(5)=Ci(6)+Di(6)+Ci(0)+Di(0)
Ci+1(4)=Ci(5)+Di(5)+Ci(0)+Di(0)
Ci+1(3)=Ci(4)+Di(4)+Ci(0)+Di(0)
Ci+1(2)=Ci(3)+Di(3)
Ci+1(1)=Ci(2)+Di(2)
Ci+1(0)=Ci(1)+Di(1)
この演算は、2バイトのデータ3−0〜3−7毎に実行される。
そして、ライトデータ3をライトバッファ6に格納しながら512バイト転送したことをカウンタ4cで検出すると、そのデータの書き込みの後に、ライトバッファ6に対し、CRCコード4b−0〜4b−7を書き込む。これにより、以後のデータ転送時に、CRCコード4b−0〜4b−7によるデータチェックが可能になる。
また、転送するライトデータ3およびCRCデータ4b−0〜4b−7をライトバッファ6に格納するときには、パリティ生成回路5によって、16バイトを1ワードとし、1ワード毎に2バイトのパリティデータが付けられる。これを図3により説明する。
図3において、ライトデータ3は、2バイト単位のデータ3−0〜3−7に分割され、全ての2バイトデータ3−0〜3−7の排他論理をEXOR演算回路5a−0〜5a−6でとる。つまり、生成するパリティデータ9のビット“0”は、データ3−0〜3−7のビット0,16,32,48,64,72,96,112の8ビットのEXOR論理となる。
パリティデータ9のビット“1”は、データ3−0〜3−7のビット1,17,33,49,65,73,97,113の8ビットのEXOR論理となり、パリティデータ9のビット“2”は、データ3−0〜3−7のビット2,18,34,50,66,74,98,114の8ビットのEXOR論理となり、以下同様に、全てのビットがEXOR論理によって生成される。
生成されたパリティデータ9は、データ3とEXOR論理を再度取るとゼロとなるため、データ3の正当性をチェックすることが可能となる。このパリティデータ9は、データ3と共にライトバッファ6を経由してメモリモジュール10に格納され、これでライト動作が完了する。
次に、ホスト1に対してメモリモジュール10から読み出したリードデータ12を転送する動作を説明する。
メモリモジュール10からリードデータ12とそれに対するリードパリティデータ11を読み出すと、これらはモディファイ回路13に転送される。この時、リードデータ12とパリティデータ11とをパリティチェック回路13によってチェックしながらテンポラリバッファ17にセクタの最後のCRCデータが入るまで格納する。
そして、パリティチェック回路13によってエラーが確認されなければ、テンポラリバッファ17に格納されたデータはそのままリードバッファ19を経由してホスト1に転送する。
もし、パリティチェック回路13によってエラーが確認されたならば、演算していたCRCチェック回路14によってエラーバイトの位置を特定する。図4は、リードデータ12とパリティデータ11によって、エラーバイトテーブル16を生成するエラーバイト特定回路である。
リードデータ12とパリティデータ11は、それぞれ2バイトのデータ12−0〜12−7,12−8に区切られ、それぞれのCRC演算回路14a−0〜14a−7,15aによってチェックされる。この時、CRCエラー6−0〜6−8が発生した場合には、エラーバイトテーブル16にエラー箇所を書き込む。なお、この時、エラーバイトテーブル16は9ビットのデータとして存在するが、どれか1ビットしか立てられない構造となり、2ビットのエラーが発生した場合には訂正不能となる。そして、エラーバイトテーブル16が確定した段階で、図5のモディファイ回路18に処理が受け渡される。
図5のモディファイ回路18では、エラーバイトテーブル16が確定した段階で、テンポラリバッファ17からリードデータ12およびパリティデータ11を読み出す。
この時、リードデータ12は、2バイト単位に扱われ、パリティ生成回路18aにおいて生成パリティデータ18bを作成し、転送されるリードパリティデータ11と排他論理をとることでDIFFコード18dが生成される。
DIFFコード18dは、リードパリティデータ11とリードデータ12のパリティ生成関係において、正しいコードに変更する為の訂正コードとなる。このDIFFコード18dは、前述のエラーバイトテーブル16で示された箇所に対してデータ12−0〜12−8にEXOR論理を実行することでデータの訂正を行い、正しい位置に訂正されたデータ12’とパリティ11’が生成されてリードバッファ19に保存される。
リードバッファ19に格納されたデータは、最終的にデータ転送先であるホスト1に転送され、リード動作が終了する。
図6は、エラーバイトテーブルを作成するためのエラーバイト特定回路の別実施形態に係る図である。本実施形態では、図4のCRC演算回路14a−0〜14a−7,15aの代わりにパリティチェック回路14p−0〜14p−7,15pを設けている。本実施形態は、512バイトのセクタデータのチェックにパリティを使っている場合において、パリティチェック回路14p−0〜14p−7,15pによってパリティ14q−0〜14q−7,15qを生成してエラー箇所を特定し、エラー箇所を示すエラーフラグ14r−0〜14r−7,15rをエラーバイトテーブル16に格納する。
以上述べた様に、本発明の実施形態では、例えば64ビットのデータに対しては8ビットのパリティデータを付加し、128ビットに対しては16ビットのパリティデータを付加し、それを1ワードと定義して必ず一緒にメモリモジュールに格納する。また、そのデータと生成されたパリティデータとをメモリに書き込むときには512バイトを1つの書き込み単位(セクタ)として扱い、データの最後にCRCコードを付加する。
そして、そのCRCコードは、1ワードのデータ幅をパリティデータ幅で割った数の分のバイト数を用意し、データが8バイトでパリティデータが1バイトの時にはCRCコードを8バイトのCRCを用意し、16バイトのデータでパリティデータが2バイトの時にも、8バイトのCRCを生成する。
また、メモリモジュールからデータとパリティデータを読み出した時には、その1ワード単位にEXOR演算を行い、演算結果がゼロによってデータが正常であることを確認し、正常では無いことを検出した時には、そのワードを含む1セクタのデータを読み出してCRCチェック結果を得、これにより、故障バイト位置を検出する。
尚、前述の故障バイト位置を検出し、そのバイト位置のデータとパリティデータから、例えばRAIDの技術によって故障したバイトを復元しても良い。
本実施形態によれば、パリティデータは、必ず1ワード中のデータと共に転送されている為にパリティチェック回路で1ワード分のデータの正当性が確認でき、1セクタの大きい単位のデータを読み出さなくてもリードデータのチェックが可能となり、リード時のメモリ効率が高くなる。
また、チェックコードとして用意したビットは、データの訂正能力のビット数と等しくなる為、144ビットのメモリモジュールでは16ビットの訂正が可能となり、72ビットのメモリモジュールでは8ビットの訂正が可能となるメモリ制御回路を構成できる。
これにより、システムの規模に応じて訂正能力を変更する事が可能になると同時に、汎用で安価に売られている72ビットのメモリモジュールを2個並列に使用するシステムにおいては、16ビット訂正能力を保持する高信頼性な装置を構築できる。
また、本実施形態によれば、8ビットや16ビットの訂正能力を構築できる為、今後メモリの集積度が上がって1つのメモリチップのビット幅が8ビットや16ビットになったとしても、信頼性を落とさずに安価な汎用のメモリモジュールを使用することが可能となり、大量にメモリモジュールを使う装置においては、低コストで装置を構成できる。
本発明に係るデータ処理装置等は、低価格でありながら信頼性が高くなるため、サーバー装置やディスクアレイ装置等に適用すると有用である。
1 ホスト
2 ホストバス
3 ライトデータ
4 CRC生成回路
5 パリティ生成回路
6 ライトバッファ
9 ライトパリティデータ
10 メモリモジュール
11 リードパリティデータ
12 リードデータ
13 データ復元回路
14 CRCチェック回路
15 パリティチェック回路
16 エラーバイトテーブル
18 モディファイ回路
19 リードバッファ
2 ホストバス
3 ライトデータ
4 CRC生成回路
5 パリティ生成回路
6 ライトバッファ
9 ライトパリティデータ
10 メモリモジュール
11 リードパリティデータ
12 リードデータ
13 データ復元回路
14 CRCチェック回路
15 パリティチェック回路
16 エラーバイトテーブル
18 モディファイ回路
19 リードバッファ
Claims (6)
- データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に1つのワードデータ毎に1つのチェックコードを付加し前記データをチェックするデータ処理装置において、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とするデータ処理装置。
- 一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すCRCチェックコードを付加すると共に、付加した前記CRCチェックコードを1ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする請求項1に記載のデータ処理装置。
- 前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする請求項1または請求項2に記載のデータ処理装置。
- データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に1つのワードデータ毎に1つのチェックコードを付加し前記データをチェックするデータ処理装置のメモリ訂正方法において、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とするメモリ訂正方法。
- 一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すCRCチェックコードを付加すると共に、付加した前記CRCチェックコードを1ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする請求項4に記載のメモリ訂正方法。
- 前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする請求項4または請求項5に記載のメモリ訂正方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005143403A JP2006323434A (ja) | 2005-05-17 | 2005-05-17 | データ処理装置及びそのメモリ訂正方法 |
US11/432,525 US7665009B2 (en) | 2005-05-17 | 2006-05-12 | Device, data sector, method of processing data, and signal-bearing medium embodying program of device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005143403A JP2006323434A (ja) | 2005-05-17 | 2005-05-17 | データ処理装置及びそのメモリ訂正方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006323434A true JP2006323434A (ja) | 2006-11-30 |
Family
ID=37525472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005143403A Withdrawn JP2006323434A (ja) | 2005-05-17 | 2005-05-17 | データ処理装置及びそのメモリ訂正方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7665009B2 (ja) |
JP (1) | JP2006323434A (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7920433B2 (en) * | 2008-01-09 | 2011-04-05 | Qimonda Ag | Method and apparatus for storage device with a logic unit and method for manufacturing same |
CN104317525B (zh) * | 2014-09-23 | 2017-08-11 | 天津国芯科技有限公司 | 一种随机存储器的扩展方法及装置 |
US10198315B2 (en) * | 2016-02-29 | 2019-02-05 | Sandisk Technologies Llc | Non-volatile memory with corruption recovery |
KR20180061870A (ko) | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 메모리 모듈, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6411979B2 (ja) * | 1979-10-09 | 1989-02-28 | Unisys Corp | |
JPS6050669A (ja) * | 1983-08-29 | 1985-03-20 | Hitachi Ltd | デ−タ復調方式 |
US4949342A (en) * | 1987-04-14 | 1990-08-14 | Matsushita Electric Industrial Co., Ltd. | Code error detecting method |
JPH08138391A (ja) | 1994-11-09 | 1996-05-31 | Hitachi Ltd | フラッシュメモリ制御方式 |
US6367048B1 (en) * | 1998-11-16 | 2002-04-02 | Mcauliffe Richard | Method and apparatus for logically rejecting previously recorded track residue from magnetic media |
US7246303B2 (en) * | 2002-03-25 | 2007-07-17 | Intel Corporation | Error detection and recovery of data in striped channels |
-
2005
- 2005-05-17 JP JP2005143403A patent/JP2006323434A/ja not_active Withdrawn
-
2006
- 2006-05-12 US US11/432,525 patent/US7665009B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7665009B2 (en) | 2010-02-16 |
US20060282754A1 (en) | 2006-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6041430A (en) | Error detection and correction code for data and check code fields | |
JP4071940B2 (ja) | メモリ設計のための共有式誤り訂正 | |
US6044483A (en) | Error propagation operating mode for error correcting code retrofit apparatus | |
US8185800B2 (en) | System for error control coding for memories of different types and associated methods | |
US8171377B2 (en) | System to improve memory reliability and associated methods | |
US20080282128A1 (en) | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance | |
US8181094B2 (en) | System to improve error correction using variable latency and associated methods | |
US8352806B2 (en) | System to improve memory failure management and associated methods | |
JP3272903B2 (ja) | 誤り訂正検出回路と半導体記憶装置 | |
KR20090028507A (ko) | 비휘발성 메모리 에러 보정 시스템 및 방법 | |
KR20140013095A (ko) | 데이터 무결성을 제공하기 위한 방법 및 장치 | |
US8566672B2 (en) | Selective checkbit modification for error correction | |
US9208027B2 (en) | Address error detection | |
US9141473B2 (en) | Parallel memory error detection and correction | |
US8185801B2 (en) | System to improve error code decoding using historical information and associated methods | |
US8464093B1 (en) | Memory array error correction | |
US9189327B2 (en) | Error-correcting code distribution for memory systems | |
US9329926B1 (en) | Overlapping data integrity for semiconductor devices | |
JP2006323434A (ja) | データ処理装置及びそのメモリ訂正方法 | |
US11372720B2 (en) | Systems and methods for encoding metadata | |
US10824504B2 (en) | Common high and low random bit error correction logic | |
US7954034B1 (en) | Method of and system for protecting data during conversion from an ECC protection scheme to a parity protection scheme | |
TW202246979A (zh) | 用於具有內建的錯誤校正和偵測的記憶體的錯誤率 | |
US9400715B1 (en) | System and method for interconnecting storage elements | |
WO2016038673A1 (ja) | 誤り訂正装置、誤り訂正方法、及び誤り訂正システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070423 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091216 |