JP5217570B2 - メモリ装置及びメモリ制御方法 - Google Patents

メモリ装置及びメモリ制御方法 Download PDF

Info

Publication number
JP5217570B2
JP5217570B2 JP2008091750A JP2008091750A JP5217570B2 JP 5217570 B2 JP5217570 B2 JP 5217570B2 JP 2008091750 A JP2008091750 A JP 2008091750A JP 2008091750 A JP2008091750 A JP 2008091750A JP 5217570 B2 JP5217570 B2 JP 5217570B2
Authority
JP
Japan
Prior art keywords
data
adr
bytes
src
byte
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.)
Expired - Fee Related
Application number
JP2008091750A
Other languages
English (en)
Other versions
JP2009245218A (ja
Inventor
栄治 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008091750A priority Critical patent/JP5217570B2/ja
Publication of JP2009245218A publication Critical patent/JP2009245218A/ja
Application granted granted Critical
Publication of JP5217570B2 publication Critical patent/JP5217570B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリ装置に関し、特に、誤り訂正等データの信頼性向上を図る冗長コードを格納するメモリ装置と方法に関する。
関連技術として、例えば特許文献1には、可変長の誤り訂正符号を使用して誤り率の変化に応じて使用可能な冗長を動的に変え、ペイロードと冗長との間での効率的なメモリ割当を可能とするためのシステムと方法が開示されている。すなわち、図8に示すように、ユーザが格納するデータと、誤り訂正符号が別のエリアに保存されており、誤り訂正符号が状況に応じて可変としている。1Dataあたり16バイト(Byte)であり、データ部(201)とECC(Error Checking and Correcting Code、又は Error Corrcting(Correction) Code:誤り訂正符号)部(202)とがそれぞれ別エリアに保存され、ECC部(202)が可変長であることから、ECCに2バイトや4バイトといった訂正能力の高い符号が設定可能とされている。なお、図8に示す例では、ECCは2バイト構成とされる。
特開2003−131954号公報
特許文献1の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下に本発明による関連技術の分析を与える。
図8に示したメモリ構成においては、格納するデータのビット数に対して、必要としているECC(誤り訂正符号)のビット数を多く取ることができるため、高い訂正能力はあるが、以下のような問題点を有している。
第1の問題点は、メモリ制御に用いた場合、データのリード・ライト時や、誤りが発生した時の訂正処理が複雑となり、メモリのアクセス・スピードが遅くなる、ということである。図8の構成は、一般的なメモリのリード・ライト回路の延長線で実現できるものではなく、特殊な回路構成となる。これは、図8に示す構成のメモリ管理においては、データ部と誤り訂正符号(ECCコード)部を、互いに異なるアドレス上に配置していることによる。
データ部(201)の読み出しを行う場合でも、データ部(201)とECC部(202)の両方へのメモリ・アクセスを行う必要があり、これら2つのアドレスは、完全に別のアドレスになっているため、連続して読み出すことができない。このため、それぞれを個々にアクセスすることが必要とされるとともに、アドレスやデータそのものを一時的に保存する回路や、リードしたECCコードのバイト位置を特定することが必要となる。したがって、図8の構成は、一般の回路とは異なる回路構成が必要となり、回路構成も複雑になる。
第2の問題点は、ECCを格納しているメモリ領域が故障した場合、故障の影響範囲が広く、データの復旧に時間がかかり、信頼性の低下を招くことになる、ということである。これは、ECC(202)を、データ部(201)とは別のメモリ領域にまとめて格納しているためである。ECCをまとめて格納するメモリ領域が故障してしまうと、複数のECCを読み出すことができない。例えばECCを格納するメモリ1ワードに、データ部の8ワード分のECCを格納した場合、最悪は、ECCを格納するメモリの1ワード分のメモリ障害で、8ワード分のデータのECCが読み出せないことになる。このように、1つの故障に対する影響範囲が大きい。
また別の関連技術として、例えば図9に示すように1ワード内にデータ部(301)とECC部(302)を保存する構成が、従来より知られている。この構成においては、72ビットの汎用DIMM(Dual Inline Memory Module)等によって構成される安価なDIMMでメモリを構成することができ、多用されている。しかしながら、図9の構成の場合、ECCコードを保存するバイト数が少なく、保存するバイト数には制限があり、一定の信頼性を得ることはできるが、さらに高信頼性を図るメモリには適用できない。
これは、72ビット汎用DIMMを2個並列にした場合などでは(並列144ビット)、1ワードは、16バイト(128ビット)のデータと2バイト(16ビット)のECC(誤り訂正符号)が最大となり、ECCは、2バイトまでしか定義できないためである。
もし、ECCを4バイトとすることが必要となった場合には、72ビット汎用DIMMであれば、4個並列(72×4ビット)に動作させることが必要となり、メモリ制御側のピン数が増大し、コストの上昇を招く。
したがって本発明の目的は、汎用のDIMM製品を利用でき、チップ故障を含めてデータの訂正ができ、高速・高信頼性な装置、方法を提供することにある。
本願で開示される発明は、前記課題を解決するため、概略以下の構成とされる。
本発明の1つの側面によれば、メモリに格納されるデータに対する冗長コードの長さを指定する手段と、データと該データに対応する冗長コードが1ワード内に存在するようにメモリに配置する手段を備えている装置が提供される。
本発明において、前記メモリのデータ格納先のアドレスが予め定められた所定値となると、トレーラ情報を格納する手段を備えた構成としてもよい。
本発明の1つの側面においては、1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の書き込み要求に対して、
1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリに格納するにあたり、
前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
書き込みデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算し、
前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを格納し、
アドレス{ADR_SRC+(r+s−q)}から前記qバイトの冗長コードのうちの(q−s)バイトの冗長コードを格納し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域に格納し、
前記pバイトのデータのうち残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから格納し、データ書き込み先の前記メモリにおいて、前記データに対応する冗長コードと、データの少なくとも一部とが、同一ワード中に配置されるように、書き込みを行う。
本発明においては、1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の読み込み要求に対して、
1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリからデータを読み込み、読み出しデータを応答として返すにあたり、
前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
読み出しデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算し、
前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを読み出し、残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから読み出して合成し、1ワードが、pバイトのデータを復元し、
前記qバイトの冗長コードのうち、アドレス{ADR_SRC+(r+s−q)}からの(q−s)バイトの冗長コードを読み出し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域から読み出し、qバイトのデータを復元し、
前記復元された1ワードがpバイトのデータとqバイトのデータをリードデータとして要求元へ返す。
本発明によれば、メモリに格納されるデータに対する冗長コードの長さを指定し、データと該データに対応する冗長コードが1ワード内に存在するようにメモリに配置するメモリアクセス方法が提供される。
本発明によれば、指定された長さの冗長コードに対して、データと該データに対応する冗長コードを、両者が1ワード内に存在するようにメモリに配置する構成としたことにより、汎用のDIMM製品を利用でき、チップ故障を含めてデータの訂正が行え、高速・高信頼性を実現することができる。
上記した本発明についてさらに詳細に説述すべく添付図面を参照して以下に説明する。本発明においては、指定されたECC(誤り訂正符号)等の冗長コードの長さに応じて、データと該データに対応する冗長コードを、両者が1ワード内に存在するようにメモリに配置する。ECC(誤り訂正符号)等の冗長コードを用いてメモリ訂正を行いデータの信頼性向上を図り、データ保全を目的としているサーバ装置やディスクアレイ装置などの高信頼性が求められるデータ処理装置等に適用可能とされる。さらに、本発明によれば、既製の汎用DIMMが利用できるメモリ制御回路において、チップ故障を含めてデータの訂正ができ、一般的な汎用のDIMMではできなかった8ビット訂正や16ビット訂正の誤り訂正符号を適用する可能とし、高速・高信頼性を実現するものである。以下実施例に即して説明する。
図1は、本発明の一実施例の構成を示す図である。図1を参照すると、本実施例に係るメモリ装置は、リクエスト入力部(1)と、リプライ出力部(2)と、訂正能力設定回路(3)と、アドレス演算回路(4)と、データ分割合成部(5)と、メモリ制御回路(6)と、メモリ(7)と、データ復元回路(8)と、を備えている。
訂正能力設定回路(3)は、メモリ(7)上に定義すべきECC(誤り訂正符号)のバイト数を定義する。訂正能力設定回路(3)は、静的に訂正能力を各回路に通知する。訂正能力は、外部インタフェース(不図示)経由で設定されるか、あるいは、訂正能力設定回路(3)内部において半固定的に設定される。
アドレス演算回路(4)は、メモリ制御回路(6)に入ってくるメモリ(7)へのアクセスアドレスを分析し、アドレス演算を行う。
アドレス演算回路(4)は、訂正能力設定回路(3)から通知されたバイト数に関連したアドレス分を加算し、メモリ制御回路(6)にアドレスを渡す。
データ分割合成回路(5)は、メモリ制御回路(6)に入ってくるメモリ(7)へのデータを分析し、訂正能力設定回路(3)及びアドレス演算回路(4)からの演算結果から得られた情報を基にして、データの分割/構成変更を行う。
データ分割合成回路(5)により、ECC(誤り訂正符号)を含めたメモリ(7)へのデータ処理を行い、後述するように、図3(A)、(B)、(C)に示すような、メモリマッピングでデータを保存する。
メモリ制御回路(6)は、アドレス演算回路(4)から指定されたメモリ空間のデータのメモリ(7)に対するリード・ライト動作を処理する。メモリ制御回路(6)は、DIMMなどのメモリ(7)を制御する。
データ復元回路(8)は、メモリ(7)から読み出したデータを、データ要求元に対して、正常な状態にデータを復元する。データ復元回路(8)は、メモリ(7)上に格納されているデータを、データ要求元の適正なデータに成形し直し、ECC(誤り訂正符号)によるデータの正当性のチェックを行い、ECC(誤り訂正符号)によるデータ復元を行う。
訂正能力設定回路(3)は、ECC(誤り訂正符号)のバイト数を各回路に転送する。例えば、一般的な汎用DIMMを2枚並列に用いた場合、16バイトのデータと2バイトのECCを搭載することができるため、訂正能力設定回路(3)では、ECC(誤り訂正符号)のバイト数として、2バイト以上の値と設定する。なお、誤り訂正設定回路(3)では、ECC(誤り訂正符号)のバイト数を動的に可変することはなく、静的に設定する。
本実施例において、ECCのバイト長を4バイトとした場合、訂正能力設定回路(3)は「4」を、各回路に伝達する。
データ転送元(リクエスト要求元)からメモリへのデータ転送要求(20)がリクエスト入力部(1)に入力された場合について説明する。
アドレス演算回路(4)では、訂正能力設定回路(3)から供給された「4」から「2」を引いた値(「2」は、メモリ(7)を構成する汎用DIMMのECC格納部分の容量である2バイトに対応する)を用いてアクセスするアドレス変換を行う。アドレスの変換は、以下となる。
ADR_PLUS=INT(ADR_SRC/(1ワードのデータ長(18バイト−4))) …(1)
ADR_MEM=ADR_SRC+(ADR_PLUS*(ECCのバイト長−2)) …(2)
ただし、(1)、(2)において、
ADR_SRCは、転送元のアドレス(実際にメモリに書き込もうとした時のアドレス)、
ADR_PLUSは、実際のメモリアドレスに変換するための差分アドレス、
ADR_MEMは、実際のメモリ上のアクセスアドレス、
である。
上式(1)、(2)により、アドレス演算回路(4)は、メモリ(7)にアクセスすべきアドレスADR_MEMを計算する。
データ分割合成回路(5)は、アドレスADR_MEMの下位4ビットの値によって、データをシフトし(例えばデータを上位バイト側にShift)、その後、メモリ(7)に納める1ワードの値で分割を行う。この分割は、最大メモリの1ワードのバイト数−2まで、つまり、16−2=14バイトまで、分割され、1ワードには、必ず分割されたデータと該データのECC(誤り訂正符号)の両方が納められる。つまり、分割されたデータのバイト数(14バイト)と、ECC(誤り訂正符号)のバイト数(4バイト)の和が、必ず、DIMMの1ワード(=16バイト+2バイト)に収まる。
このように、本実施例においては、既製のDIMMのバイト幅(1ワード=16バイト+2バイト)の範囲を超えない状態としているため、安価なメモリが使えることになる。
データ分割合成回路(5)では、ECC(誤り訂正符号)をデータと同じワード位置に配置するため、メモリ制御回路(6)は、メモリ(7)への1回のアクセスで、データとECC(誤り訂正符号)が得られる。
本実施例において、もとのデータは分割されているため、複数のワード位置に対してアクセスが必要であるが、一般的に、DDR2−DIMMやその他のメモリにおいても、連続したアドレスに対しては、1回の処理で、一連の作業(複数アクセス)が可能となるバースト転送がサポートされている。バースト転送の処理により、連続した複数のワードに、データが分割されている場合に、高速なデータ転送が行われる。
以下に本実施例の動作を概説する。データ要求元(リクエスト要求元)からのリクエスト(命令)(20)をリクエスト入力部(1)が受信する。このリクエスト入力部(1)に入るリクエスト(20)は、特に制限されないが、一般的なPCI(Peropheral Component Interconenct)−XバスやPCI−Expressなどの汎用インタフェースが用いられる。
訂正能力設定回路(3)は、ECC(誤り訂正符号)のバイト数を提示する回路であるが、外部インタフェースおよび内部で半固定的に値が格納されており、静的に変化できる値を有する。1ワードが16バイト(データ)+2バイト(ECC)構成のDIMMを用い、ECC(誤り訂正符号)は4バイトとした場合で説明する。この場合、14バイト(データ)+4バイト(ECC)となる。
リクエスト入力部(1)は、メモリアクセス要求されるアドレス(21)とデータ(31)とに分割を行い、アドレス(21)についてはアドレス演算回路(4)に受け渡される。リクエスト要求元の処理イメージは、図3(A)に示すように、16バイト(データ)+4バイト(ECC)である。例えばアドレスをADR_SRC=0020h(ただし、hはヘキサデシマル表現を示す)とする。
アドレス演算回路(4)は、リクエスト入力部(1)からアドレス(21)(ADR_SRC=0020h)を受け取ると、訂正能力設定回路(3)より受けとった、ECC(誤り訂正符号)コードのバイト数=4バイトを基にして、式(1)と式(2)から、アドレスを演算する。
ADR_SRC=0020hより、ADL_PLUS=0020h/(18−4)=32/14=2
ADR_MEM=0020h+(2*(4−2))=0024h
データ分割合成回路(5)は、アドレス演算回路(4)から演算結果(ADR_MEM=0024h)を受けとり、アドレス(ADR_MEM)の下位の4ビット情報(=0100b)に応じてデータを分割/シフト動作をし、目的のデータに合わせる。この場合、元のソースアドレスADR_SRC=0020hからアドレス002Fhまでの計16バイトのデータを、4バイト上位バイト側にシフトする。アドレス0020hのバイトデータはアドレス0024hバイトに移動する。図3(B)に示すように、もとの16バイトのデータは、シフト後、アドレス0024hからアドレス002Dhの10バイト分のデータと、アドレス0030hからアドレス0035hの6バイトのデータに分割される。もとの4バイトのECCのうち2バイトは、アドレス002Ehと002Fhの2バイトに格納され、0020hからの16バイトデータに対応するDIMMの2バイトに格納され、図3(B)のように、E2として格納される。
図3(C)に示すように、もとのデータ幅:16バイト、ECC:4バイトの(D2、E2)は、1ワードのデータ幅:16バイト、ECC:2バイトのDIMM内に、データ幅:14バイト、ECC:4バイトのフォーマット(計18バイト)に変換されて、書き込まれる。図3には、同様にアドレス変換、データ分割された、もとのデータ幅:16バイト、ECC:4バイトの(D0、E0)、(D1、E1)、(D3、E3)・・・のメモリ保存形態が示されている。
図3に示した本実施例のメモリアクセス動作は以下のようになる。1ワードがpバイト幅(図3では、p=16)のデータと該データに関連するqバイト幅(q=4)の冗長コード(ECC)の書き込み要求に対して、1ワードのデータ幅がrバイト(r=16)、sバイト(s=2)のECC領域を備えた構成のメモリに格納するにあたり、前記メモリでの1ワードのデータ幅を(r+s−q)バイト(16+4−2=14)とし、ECC幅をqバイト(4バイト)として扱い、書き込みデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算する。前記pバイト(16バイト)のデータ(D2)のうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを格納する。アドレス{ADR_SRC+(r+s−q)}(0020h+000Eh)からqバイトのECCのうちの(q−s)バイト(2バイト)のECCを格納し、qバイトのECCの残りのsバイトを、sバイトのECC領域に格納する。pバイトのデータのうち残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイト(6バイト)のデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから格納する。このように、データ書き込み先のメモリにおいて、データに対応するECCが、データと同一ワード中に含まれる配置となるように、書き込みを行う。
データ転送要求元のリクエスト(20)がメモリからのデータ読み出しである場合には、メモリ制御回路(6)から読み出されたデータをデータ復元回路(8)が受信する。
データ復元回路(8)は、読み出されたECCのチェックを行い、訂正可能なエラーが発生した場合には、訂正を行い、それと同時に、アドレス演算回路(4)から得られているアドレス演算結果(24)を基にしてデータを復元し、リプライ出力部(2)でリクエスト要求元に対するリプライ(30)を生成する。
図2は、本発明の一実施例におけるライト動作を示すフローチャートである。ECCのバイト数を予め設定しておく(ステップS1)。前述したように、この設定は、動的には変更せず、システムとして存在する時に静的に値を設定しておくものであり、ここでは、ECCのバイト数は4バイトとする。すなわち、本実施例では、ECCのバイト長を動的に可変させることは想定していない。
データ要求元からリクエストを受信すると(ステップS2)、アドレス演算回路(4)は上式(1)、(2)にしたがい、アドレスADR_MEMの演算を行う(ステップS3)。アドレス演算回路(4)でのアドレス演算はデータ部分を1ワード16バイトから、1ワード14バイトに変更する為のアドレス演算であり、要求元のアドレスに対して、差分を求め、加算することで、1ワード14バイトの時のアドレス位置を示す。
例えばリクエスト要求元のアドレス10hへのアクセスが発生した場合では、上式(1)、(2)より、内部のアドレスADR_MEMは12hとなる。すなわち、
ADR_PLUS=10h/14=16/14=1
ADR_MEM=10h+1*(4−2)=12h
また、リクエスト要求元のアドレス0020hへのアクセスが発生した場合では、アドレス演算回路(4)のアドレスADR_MEMは0024hとなる。アドレスADR_MEMとしては、14バイト加算されるごとに、02hずつアドレスが加算されることになる。
データについては、リクエスト要求元のアドレス0020hのアクセスが発生した場合、アドレスとして4バイト分ずれる(シフトする)必要があるため、4バイト分データをシフトさせながら、1ワード14バイトとしてデータを丸め込む(ステップS4)。
また、この時のECCについては、そのまま無加工として、上記の14バイトに付加することにより、1ワード18バイトとしてデータを生成する(ステップS5)。
メモリ(7)への書き込みを行う(ステップS6)。
これにより、アドレスとデータの位置を一致させることが可能となり、一般的なメモリ回路を用いてメモリにデータを書き込むことが可能となる。
図4は、本発明の一実施例のリード動作を説明するフローチャートである。図5は、メモリ読み出し動作のデータ、ECCの形態を説明する図である。図5(A)は、図3(A)と同じくリクエスト要求元の処理イメージである。以下では、リクエスト要求元がアドレス(ADR_SRC)0020hのデータ(D2、E2)の読み出し要求を行ったものとする。
図4において、ECCバイトの幅設定のステップS11、リクエスト受信のステップS12、アドレスの演算のステップS13のは、ライト動作のステップS1〜S3と同じであるため説明は省略する。
リード動作では、ステップS13で演算されたアドレスADR_MEM(0024h)を用いて、図5(B)に示すように、メモリ(7)からデータ(16バイト)D2、ECC(4バイト)E2の読み出しを行う(ステップS14)。
そして、ADR_SRCで示された位置にまでデータをシフトする(ステップS15)。この場合、まず、ADR_MEM=0024hから002Dhまでの10バイトデータを4バイト分、低位側にシフトさせる。
また、1ワード14バイトから16バイトに復元させるために、図5(C)に示すように、次ワードのデータ(0030h〜0035hの6バイトデータ)と合成(concatenate)することで、リクエスト要求元へのリプライデータが生成される(ステップS16)。
リクエスト要求元にデータをリプライする(ステップS17)。
また、上記処理において、ECCの再生成やデータ作り直しは不要であり、回路構成が簡素化される。
図6は、本発明の第2の実施例の構成を示す図である。本実施例においては、図3の構成にトレーラ生成回路(10)が追加されている。アドレス演算回路(4)の演算結果において、トレーラ生成回路(10)を動かし、一定のブロック単位に、セクタ番号や各処理用のフラグ等を埋め込む。
トレーラ生成回路(10)は、アドレス演算結果が一定の値になると動作し、内部に書かれているセクタ番号等を、メモリ(7)上に埋め込む事で、トレーラデータをデータ内部に埋め込む。
図7は、1ワード14バイト、ECCが4バイトのデータ列で格納するような場合を示す。これは、リクエスト要求元からのデータフォーマット(101)に対して、メモリへの書き込み状態(103)を示したものであり、データを、1ワード=14バイトにアライメントし直された場合、トレーラ(TRL)(104)を納めるエリアがある。
トレーラ(TRL)(104)は、D0〜D6のCRC(Cyclic Redundancy Check)演算を行った物を入れる場合や、D0〜D6を1セクタと設定し、セクタ番号を埋め込む事が可能となり、トレーラ(104)としてメモリ(7)に埋め込む。トレーラ(TRL)(104)に、CRCを埋め込むと、1セクタ単位のECCによるチェックおよびCRCによるチェックと、2重のチェックを行うことができ、信頼性の高いメモリ装置を構築することができる。
本実施例の作用効果を説明する。本実施例によれば、ECC(誤り訂正符号)のビット幅を任意に設定できるため、4バイトや8バイトといった、4バイト以上のECCコードを搭載することができ、メモリの訂正能力が向上することにより、高信頼性なメモリ装置を実現することができる。
データ読み出し/書き込みにおいて、データとECC等の誤り訂正符号が同じワード位置に格納されていることにより、前述の効果が期待できる回路でありながら、単純な回路構成で構築可能となり、安価なメモリ装置の提供ができる。
本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
本発明の一実現例の構成を示す図である。 本発明の一実現例におけるメモリのライト動作のフローチャートである。 本発明の一実現例におけるライト動作を説明する図である。 本発明の一実現例におけるメモリのリードのフローチャートである。 本発明の一実現例におけるリード動作を説明する図である。 本発明の他の実現例の構成を示す図である。 本発明の他の実施例におけるメモリの保存形態を説明する図である。 関連技術1におけるメモリの保存形態を説明する図である。 関連技術2におけるメモリの保存形態を説明する図である。
符号の説明
1 リクエスト入力部
2 リプライ出力部
3 訂正能力設定回路
4 アドレス演算回路
5 データ分割合成回路
6 メモリ制御回路
7 メモリ
8 データ復元回路
10 トレーラ生成回路
20 リクエスト要求元からの命令(アドレス及びデータ等)
21 リクエストアドレス
22 訂正能力設定回路からのECCコードのバイト数
23 アドレス演算結果
24 アドレス演算結果
26 ライトデータおよびECCコード
27 リードデータおよびECCコード
28 メモリアクセスアドレスおよびデータ
29 復元されたデータ
30 リクエスト要求元に返却するリプライデータ
31 ライトデータ
101 データフォーマット
102 分割生成処理のライトデータ
103 ECCデータ
104 トレーラ
201 データ部
202 ECC部(ECCコード)
301 データ
302 ECC部(ECCコード)

Claims (7)

  1. メモリに格納されるデータに対する冗長コードの長さを指定する手段と、
    データと該データに対応する冗長コードが1ワード内に存在するようにメモリに配置する手段と、
    を備え、
    1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の書き込み要求に対して、
    1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリに格納するにあたり、
    前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
    書き込みデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算する手段と、
    前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを格納し、
    アドレス{ADR_SRC+(r+s−q)}から前記qバイトの冗長コードのうちの(q−s)バイトの冗長コードを格納し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域に格納し、
    前記pバイトのデータのうち残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから格納する手段と、
    を備え、データ書き込み先の前記メモリにおいて、前記データに対応する冗長コードと、データの少なくとも一部とが、同一ワード中に配置されるように、書き込みを行う、ことを特徴とするメモリ装置。
  2. 前記冗長コードが誤り訂正符号(Error Correction Code)を含む、ことを特徴とする請求項1記載のメモリ装置。
  3. 前記メモリのデータ格納先のアドレスが予め定められた所定値となると、トレーラ情報を格納する手段を備えている、ことを特徴とする請求項1又は2記載のメモリ装置。
  4. 前記トレーラ情報がCRC(Cyclic Redundancy Code)情報、又はセクタ情報を含む、ことを特徴とする請求項3記載のメモリ装置。
  5. 1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の読み込み要求に対して、
    1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリからデータを読み込み、読み出しデータを応答として返すにあたり、
    前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
    読み出しデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算する手段と、
    前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを読み出し、残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから読み出して合成し、1ワードが、pバイトのデータを復元し、
    前記qバイトの冗長コードのうち、アドレス{ADR_SRC+(r+s−q)}からの(q−s)バイトの冗長コードを読み出し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域から読み出し、qバイトのデータを復元する手段と、を備え、
    前記復元された1ワードがpバイトのデータとqバイトのデータをリードデータとして要求元へ返す、請求項1記載のメモリ装置。
  6. 1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の書き込み要求に対して、
    1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリに格納するにあたり、
    前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
    書き込みデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算し、
    前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを格納し、
    アドレス{ADR_SRC+(r+s−q)}から前記qバイトの冗長コードのうちの(q−s)バイトの冗長コードを格納し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域に格納し、
    前記pバイトのデータのうち残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから格納し、
    データ書き込み先の前記メモリにおいて、前記データに対応する冗長コードと、データの少なくとも一部とが、同一ワード中に配置されるように、書き込みを行う、メモリ制御方法。
  7. 1ワードがpバイト幅のデータと該データに関連するqバイト幅の冗長コード(ただし、p、qは予め定められた所定の正整数)の読み込み要求に対して、
    1ワードのデータ幅がrバイト(ただし、rはr<pの正整数)、sバイト(ただし、sはs<qの正整数)の冗長コード領域を備えた構成のメモリからデータを読み込み、読み出しデータを応答として返すにあたり、
    前記メモリでの1ワードのデータ幅を(r+s−q)バイトとし、冗長コード幅をqバイトとして扱い、
    読み出しデータの先頭アドレスADR_SRCを、(r+s−q)で除算した値{ADR_SRC/(r+s−q)}の整数値ADR_PLUSに(q−s)を乗じた値ADR_PLUS×(q−s)をADR_SRCに加算したアドレスADR_MEMを演算し、
    前記pバイトのデータのうち、演算後のアドレスADR_MEMからアドレスADR_SRC+(r+s−q)−1まで[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを読み出し、残りのp−[{ADR_SRC+(r+s−q)}−ADR_MEM]バイトのデータを、ADR_SRC+(r+s−q)+(q−s)=ADR_SRC+r、すなわち、次のワードから読み出して合成し、1ワードが、pバイトのデータを復元し、
    前記qバイトの冗長コードのうち、アドレス{ADR_SRC+(r+s−q)}からの(q−s)バイトの冗長コードを読み出し、前記qバイトの冗長コードの残りのsバイトを、前記sバイトの冗長コード領域から読み出し、qバイトのデータを復元し、
    前記復元された1ワードがpバイトのデータとqバイトのデータをリードデータとして要求元へ返す、請求項記載のメモリ制御方法。
JP2008091750A 2008-03-31 2008-03-31 メモリ装置及びメモリ制御方法 Expired - Fee Related JP5217570B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008091750A JP5217570B2 (ja) 2008-03-31 2008-03-31 メモリ装置及びメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008091750A JP5217570B2 (ja) 2008-03-31 2008-03-31 メモリ装置及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2009245218A JP2009245218A (ja) 2009-10-22
JP5217570B2 true JP5217570B2 (ja) 2013-06-19

Family

ID=41307021

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008091750A Expired - Fee Related JP5217570B2 (ja) 2008-03-31 2008-03-31 メモリ装置及びメモリ制御方法

Country Status (1)

Country Link
JP (1) JP5217570B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012177964A (ja) * 2011-02-25 2012-09-13 Nec Computertechno Ltd メモリシステム及びメモリモジュール制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187248A (ja) * 1992-12-16 1994-07-08 Nec Corp データエラー検出訂正制御回路
JPH10312340A (ja) * 1997-05-12 1998-11-24 Kofu Nippon Denki Kk 半導体記憶装置におけるエラー検出,訂正方式
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
KR101042197B1 (ko) * 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법

Also Published As

Publication number Publication date
JP2009245218A (ja) 2009-10-22

Similar Documents

Publication Publication Date Title
CN107943609B (zh) 存储器模块、存储器控制器和***及其相应操作方法
EP2068245B1 (en) Reliability, availability, and serviceability solutions for memory technology
CN108268340B (zh) 校正存储器中的错误的方法
JP5132687B2 (ja) メモリにおけるキャッシュを利用した誤り検出及び訂正方法及び装置
US8886892B2 (en) Memory module and method employing a multiplexer to replace a memory device
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
JP2008198330A (ja) バイトマスキング動作のための半導体メモリ装置及びパリティデータ生成方法
JP5529751B2 (ja) メモリアレイにおけるエラー訂正
US10761930B2 (en) Memory with error correction function that is compatible with different data length and an error correction method
KR20190012566A (ko) 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법
JP2005202957A (ja) エラー訂正のためのデータの分割
US20130117632A1 (en) Storage control apparatus
US20040225944A1 (en) Systems and methods for processing an error correction code word for storage in memory components
US20210359704A1 (en) Memory-mapped two-dimensional error correction code for multi-bit error tolerance in dram
JP4819843B2 (ja) メモリ装置のためのeccコード生成方法
JP2010079856A (ja) 記憶装置およびメモリ制御方法
JP4956230B2 (ja) メモリコントローラ
JP5217570B2 (ja) メモリ装置及びメモリ制御方法
US7240272B2 (en) Method and system for correcting errors in a memory device
JP5213061B2 (ja) ミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラム
KR20180087494A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200018156A (ko) 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법
US20060282754A1 (en) Device, data sector, method of processing data, and signal-bearing medium embodying program of device
CN108762975B (zh) 一种ecc数据存储方法、***及存储介质
JP2010102640A (ja) メモリコントローラ、コンピュータ、およびメモリミラーリング方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130218

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5217570

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees