メモリシステム及びメモリアクセス方法
【課題】ランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減する。
【解決手段】書き込みデータの冗長化符号処理を行う冗長化符号回路1と、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路3と、選択信号に基づいて、前記冗長化符号処理されたデータ及び前記各ビットの値が反転されたデータのいずれか一方を選択するセレクタ4と、前記選択されたデータを記憶するメモリ7と、前記メモリから読み出されるデータと、前記選択されたデータとを比較し、比較結果を示す比較結果信号を出力する比較器5と、前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路6と、前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路2と、を備える。
【解決手段】書き込みデータの冗長化符号処理を行う冗長化符号回路1と、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路3と、選択信号に基づいて、前記冗長化符号処理されたデータ及び前記各ビットの値が反転されたデータのいずれか一方を選択するセレクタ4と、前記選択されたデータを記憶するメモリ7と、前記メモリから読み出されるデータと、前記選択されたデータとを比較し、比較結果を示す比較結果信号を出力する比較器5と、前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路6と、前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路2と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステム及びメモリアクセス方法に関するものである。
【背景技術】
【0002】
高集積度のメモリチップには、個々のメモリセル(1ビットの記憶素子)の製造時の加工精度のばらつきによって、所望の動作を行わない不良メモリセルが混在する。
【0003】
製造ばらつき対策として、例えば、実際に必要な容量よりも多くのメモリセルを予め作っておき、余裕分のメモリセルで不良メモリセルを代替することで歩留まりを向上させるということが行われている。また、誤り訂正符号(ECC)を使って不良メモリセルのビットを救済する方式も用いられる。
【0004】
また、ROMやPROMのような読み出し専用メモリでは、ビット・シーケンスを記憶するメモリ・コンポーネントと追加メモリ・コンポーネントとを設け、0又は1のいずれか一方しか記憶できない不良メモリセルに対して、その不良メモリセルが記憶できない値を記憶させる場合、ビット・シーケンス内の各データ・ビットの値を反転して記憶させ、追加メモリ・コンポーネントにデータを反転させたことを示す値を記憶させる方式が提案されている(例えば特許文献1参照)。データ読み出し時は、追加メモリ・コンポーネントの値を参照し、データ記憶時に反転させたことが示されている場合は、読み出したデータを反転して使用する。
【0005】
MRAMやReRAMのように、異なる2つの抵抗値を持つことのできるメモリセルを用いる電気的に書き替え可能なメモリでは、メモリセルを低抵抗状態か高抵抗状態のいずれかにすることで、一方を論理値0に、もう一方を論理値1に対応させてデータを記憶する。データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいかで論理値0か1(又は1か0)かを判断する。
【0006】
このようなメモリにおいて、製造時のばらつきが大きいと、低抵抗時でも高抵抗時でも抵抗値が閾値よりも小さいメモリセルや、逆に低抵抗時でも高抵抗時でも抵抗値が閾値よりも大きいメモリセルが存在しうる。このようなメモリセルは、0を書き込んでも1を書き込んでも、常に0又は1のいずれかが読み出されることになる。
【0007】
MRAM等の製造時のばらつき対策として、自己参照読み出しと呼ばれる技術が用いられている。この技術は、メモリセルからデータを読み出した後、その値が0なのか1なのかを判断するために、同じメモリセルに1(又は0)を書き込み、そのメモリセルを再度読み出した値を最初に読み出した値と比較することで、最初に読み出した値が0か1かを決定し、メモリセルにはその値を再び書き込んでおくというものである。
【0008】
自己参照読み出しを用いることで、メモリセル毎に抵抗値のばらつきがあっても、0と1を正しく読み書きすることができる。しかし、メモリからデータを読み出すために、メモリセルに対して2回の読み出しと2回の書き込みが必要になり、アクセス時間が大きくなるという問題があった。
【特許文献1】特開2004−31904号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明はランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できるメモリシステム及びメモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一態様によるメモリシステムは、書き込みデータの冗長化符号処理を行う冗長化符号回路と、前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、前記セレクタで選択されたデータを記憶するメモリと、前記メモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、を備えるものである。
【0011】
本発明の一態様によるメモリアクセス方法は、書き込みデータを冗長化符号処理し、前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータのいずれか一方をメモリの、アドレス信号により指定されたアドレスに書き込み、前記メモリの前記指定されたアドレスからデータを読み出し、前記メモリへ書き込んだデータと、前記メモリから読み出したデータとを比較し、比較結果が不一致であれば前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータの他方を前記メモリの前記指定されたアドレスに書き込むものである。
【発明の効果】
【0012】
本発明によれば、ランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態を図面に基づいて説明する。
【0014】
図1に本発明の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、冗長化符号回路1、冗長化復号回路2、インバータ3、セレクタ4、比較器5、書き込み制御回路6、及びメモリ7を備える。
【0015】
冗長化符号回路1はnビット(nは1以上の整数)のデータDinが与えられ、冗長化符号処理を行い、n+1ビットのデータRDinに変換して出力する。冗長化符号処理については後述する。インバータ3は冗長化符号回路1の出力が与えられ、各ビットの値を反転して出力する。
【0016】
セレクタ4は、冗長化符号回路1の出力及びインバータ3の出力が与えられ、選択信号Selに基づいていずれか一方を選択してメモリ7へ出力する。
【0017】
メモリ7はランダムアクセス可能な不揮発性メモリであり、書き込み又は読み出しを行うメモリの番地を指定する複数ビットのアドレス信号Addrと、書き込みのタイミングを指示する書き込み信号MWriteが与えられる。セレクタ4から出力されたデータMDinが、アドレス信号Addrで指定された番地に書き込み信号MWriteに基づくタイミングで書き込まれる。
【0018】
比較器5は、メモリ7から読み出されたn+1ビットのデータRDoutと、冗長化符号回路1の出力RDinとを比較し、比較結果を示す比較結果信号Matchを書き込み制御回路6へ出力する。書き込み制御回路6は比較結果信号Matchの値に基づいて、選択信号Selを出力する。また、書き込み制御回路6は書き込み信号MWriteを出力する。
【0019】
冗長化復号回路2はメモリ7から読み出されたn+1ビットのデータRDoutが与えられ、冗長化復号処理を行い、nビットのデータDoutに変換して出力する。
【0020】
n=8を例として、冗長化符号処理及び冗長化復号処理について説明する。図2に示すように、冗長化符号回路1は8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7が与えられ、冗長化符号処理を行い、9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を出力する。
【0021】
冗長化符号処理は図3に示すような論理式で表すことができ、冗長化符号回路1は図4に示すようなXOR素子11〜18を有する論理回路で構成することができる。出力するデータのビットx0として0が出力される。XOR素子11には0とビットd0が与えられ、その出力がビットx1となる。
【0022】
XOR素子12にはXOR素子11の出力とビットd1とが与えられ、その出力がビットx2となる。以下同様に、XOR素子k(13≦k≦18)にはXOR素子k−1の出力とビットdk−11とが与えられ、その出力がビットxk−10となる。
【0023】
図5に示すように、冗長化復号回路2はメモリ7から読み出された9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8が与えられ、冗長化復号処理を行い、8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7を出力する。
【0024】
冗長化復号処理は図6に示すような論理式で表すことができ、冗長化符号回路2は図7に示すようなXOR素子21〜28を有する論理回路で構成することができる。XOR素子21にはビットx0とx1とが与えられ、その出力がビットd0となる。
【0025】
以下同様に、XOR素子j(22≦j≦28)にはビットxj−21とxj−20とが与えられ、その出力がビットdj−21となる。
【0026】
図3、図6に示す論理式から分かるように、8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に対して冗長化符号処理を行って得られる9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を冗長化復号処理すると、元の8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことが出来る。
【0027】
また、9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとって(各ビットを反転して)から冗長化復号処理しても、元の8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことが出来る。
【0028】
例えば8ビットのデータが01100011であったとする。この値を図4に示す冗長化符号回路に与えると、9ビットのデータ001000010が出力される。この001000010を図7に示す冗長化復号回路に与えると、その出力は01100011となり、元のデータに戻る。
【0029】
また、9ビットのデータ001000010の各ビットの否定をとった110111101を図7に示す冗長化復号回路に与えても、その出力は01100011となり、元のデータに戻る。
【0030】
冗長化符号処理後の9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を記憶するメモリセルのうち、いずれか1つが常に0(又は1)しか読み出せない不良メモリセルであったとしても、その不良メモリセルに記憶させるビットの値が0(又は1)の場合はx0、x1、x2、x3、x4、x5、x6、x7、x8を書き込み、不良メモリセルに記憶させるビットの値が1(又は0)の場合はx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとったものを書き込むようにすることで、不良メモリセルに記憶させる値と不良メモリセルから読み出せる値とを一致させることができる。
【0031】
メモリから読み出されるデータがx0、x1、x2、x3、x4、x5、x6、x7、x8、又はx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとったもののいずれであっても、冗長化復号処理により同一のデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことができるため、正しいデータの読み出しが可能となる。
【0032】
例えば、冗長化符号処理後の9ビットのデータ001000010を記憶するメモリセルのうち、左から3ビット目のメモリセルが0しか読み出せない不良メモリセルであった場合、メモリ7には各ビットの否定をとった110111101を書き込んでおけば、冗長化復号処理により、正しいデータを読み出すことができる。
【0033】
本発明の実施形態によるメモリシステムは、マイクロプロセッサ等のハードウェアに接続して、データの書き込みや読み出しを行う。このようなメモリシステムを用いたデータ書き込み方法を図8に示すフローチャートを用いて説明する。
【0034】
ここでは、マイクロプロセッサがメモリシステムにデータを書き込む場合を例に説明するが、マイクロプロセッサ以外のハードウェアがデータを書き込む場合も同様である。マイクロプロセッサはメモリシステムにデータを書き込むために、書き込みたいアドレスをメモリシステムのアドレス信号Addrに出力し、書き込みたいデータをメモリシステムのデータ信号Dinに出力する。そして、マイクロプロセッサはメモリシステムの書き込み信号Writeに対する出力を論理値0から1に変化させることで、メモリシステムの書き込み処理を開始させる。
【0035】
(ステップS100)マイクロプロセッサから、アドレス信号Addrにより、メモリ7へデータの書き込み先となるアドレスAが与えられる。また、マイクロプロセッサから、冗長化符号回路1へnビットのデータDinが与えられる。
【0036】
(ステップS101)冗長化符号回路1により冗長化符号処理が行われ、n+1ビットのデータRDinが出力される。
【0037】
(ステップS102)セレクタ4がデータRDinを選択するように、書き込み制御回路6から選択信号Selが出力される。さらに、書き込み制御回路6がメモリ7への書き込み信号MWriteを論理値0から1へ変化させてメモリ7へ書き込みを指示することで、メモリ7のアドレスAにデータRDinが書き込まれる。
【0038】
(ステップS103)メモリ7のアドレスAからデータRDoutを読み出す。
【0039】
(ステップS104)比較器5においてデータRDinとデータRDoutが比較され、比較結果を示す比較結果信号Matchが出力される。書き込み制御回路6は、比較結果信号Matchが真、すなわちデータRDinとデータRDoutが一致、の場合は、データがメモリ7へ正しく書き込めていると判定し、書き込み動作を終了する。
【0040】
比較結果信号Matchが偽、すなわちデータRDinとデータRDoutが不一致、の場合は、ステップS105へ進む。
【0041】
(ステップS105)セレクタ4がインバータ3の出力、すなわちデータRDinの各ビットの否定をとった値“〜RDin”、を選択するように、書き込み制御回路6から選択信号Selが出力される。さらに、書き込み制御回路6がメモリ7への書き込み信号MWriteを論理値0から1に変化させてメモリ7へ書き込みを指示することで、メモリ7のアドレスAにデータ“〜RDin”が書き込まれる。
【0042】
ステップS104で比較結果が一致している場合のタイミングチャートは図9に示すようなものとなり、比較結果が不一致である場合のタイミングチャートは図10に示すようなものとなる。
【0043】
ステップS104で比較結果信号Matchが真の場合に、データがメモリ7へ正しく書き込めていると判断した場合、書き込み動作を終了せずに、データRDinを再度書き込むように実施することも可能である。
【0044】
また、比較器5はメモリ7から読み出されたデータRDoutと冗長化復号回路1の出力RDinとを比較するのではなく、メモリ7から読み出されたデータRDoutとインバータ3の出力〜RDinとを比較するようにしてもよい。この場合、ステップS102ではインバータ3の出力からRDinがメモリ7に書き込まれる。そしてステップS104でデータ〜RDinとデータRDoutが比較され、不一致の場合はステップS105でデータRDinがメモリ7に書き込まれる。
【0045】
次に、データ読み出し方法を図11に示すフローチャートを用いて説明する。マイクロプロセッサはメモリシステムからデータを読み出すために、読み出したいアドレスをメモリシステムのアドレス信号Addrに出力することで、メモリシステムの読み出し処理を開始させる。
【0046】
(ステップS200)マイクロプロセッサから、アドレス信号AddrによりアドレスAが与えられる。
【0047】
(ステップS201)メモリ7のアドレスAからn+1ビットのデータRDoutが読み出される。
【0048】
(ステップS202)データRDoutが冗長化復号回路2に与えられる。
【0049】
(ステップS203)冗長化復号処理が行われ、nビットのデータDoutがメモリ7のアドレスAのデータとして出力される。
【0050】
冗長化符号処理、冗長化復号処理を用いることで、メモリ7のn+1ビット分のメモリセル中に1ビットの不良メモリセルが存在していても、データの読み書きを正しく行うことができる。ここで、nの値は、メモリ7内に不良メモリセルが多いときは小さな値に設定し、不良メモリセルが少ない場合は大きな値に設定することができる。
【0051】
上述のようなメモリアクセス方法により、通常のECCよりも高い効率で不良メモリセルを救済することができる。例えば、本実施形態によるメモリアクセス方法ではn=8とした場合、8ビットのデータに対して冗長化符号処理を行い9ビットとすることで、9ビット分のメモリセルのうち、1ビットの不良メモリセルを救済できる。つまり、8ビットのデータに1ビットの冗長ビットを付加することで1ビットの不良メモリセルを救済できる。
【0052】
一方、データビットと冗長ビットの比率が上述の例と等しい、64ビットのデータに8ビットの冗長ビットを付加する1誤り訂正2誤り検出符号(SECDED:Single Error Correction Double Error Detection)を用いる場合は、72ビットのメモリセルのうち、1ビットの不良メモリセルしか救済することができない。
【0053】
本実施形態ではメモリへの書き込み時に、メモリ7への最大2回の書き込みと1回の読み出しが必要となるため、書き込みが1回で済む自己参照読み出しと比較して、書き込みの速度は低下する。
【0054】
しかし、本実施形態ではメモリからの読み出し時に1回の読み出しだけで済むのに対し、自己参照読み出しは2回の読み出し及び2回の書き込みが必要になるので、読み出し速度を高速化できる。
【0055】
一般に、メモリの書き込みは読み出しよりも頻度が少なく、読み出しが高速である方が、メモリへの総アクセス時間を低減し、メモリを効率良く使用することができる。
【0056】
このように、本実施形態によるメモリシステムにより、電気的に書き替え可能なメモリの不良メモリセルを高効率に救済し、かつメモリへのアクセス時間を低減してメモリを効率良く使用することができる。
【0057】
上記実施形態では、メモリ7の読み書きのデータ幅と、冗長化符号処理して記憶する単位が同じであったが、異なっていてもよい。例えば、読み書きのデータ幅が16ビットで、冗長化処理の単位が8ビットの場合は、図12に示すように、16ビットのデータを上位8ビットと下位8ビットに分割し、2つの冗長化処理ブロック10a、10bに与える。ブロック毎に冗長化符号回路1a、1bで冗長化符号処理を行い、メモリ7に書き込む。
【0058】
そしてメモリ7に書き込んだデータと、メモリ7から読み出したデータとを比較器5a、5bで比較し、いずれのブロックにおいても一致していれば書き込み動作を終了する。いずれか一方のブロックで不一致の場合、不一致となったブロックはインバータ3の出力をセレクタ4で選択して出力し、メモリ7に書き込む。また、一致していた方のブロックは同じ値を再度メモリ7に書き込むようにする。
【0059】
このように、メモリ7の読み書きのデータ幅と、冗長化処理の単位が異なる場合は、冗長化処理ブロックを複数設けることで、上記実施形態と同様の効果を得ることができる。
【0060】
上記実施形態における冗長化符号回路は図4に示すような構成に限定されない。例えば、図4に示す構成から冗長な論理素子であるXOR素子11を省き、図13に示すような構成にしてもよい。
【0061】
また、冗長化符号回路では、図14に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図15(a)、(b)に示すような構成の論理回路で実現可能である。
【0062】
また、図16に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図17(a)、(b)に示すような構成の論理回路で実現可能である。また、図18に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図19(a)、(b)に示すような構成の論理回路で実現可能である。
【0063】
図17や図19に示す冗長化符号回路は、図13や図15に示す冗長化符号回路と比較して、XOR素子の段数が少ないため、高速に動作することができる。
【0064】
冗長化符号処理を行ったn+1ビットのデータのうち0又は1に固定する1ビットは1ビット目〜n+1ビット目のいずれでもよい。0又は1に固定するビットは、n+1ビットの中でより中央のビットである程、冗長化符号回路における論路素子の段数が少なくなり、高速動作が可能となる。
【0065】
上述した実施の形態は一例であって限定的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0066】
【図1】本発明の実施形態によるメモリシステムの概略構成図である。
【図2】冗長化符号回路の処理の一例を示す図である。
【図3】冗長化符号処理の一例を示す論理式である。
【図4】冗長化符号回路の一例を示す回路図である。
【図5】冗長化復号回路の処理の一例を示す図である。
【図6】冗長化復号処理の一例を示す論理式である。
【図7】冗長化復号回路の一例を示す回路図である。
【図8】同実施形態によるデータ書き込み方法のフローチャートである。
【図9】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図10】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図11】同実施形態によるデータ読み出し方法のフローチャートである。
【図12】変形例によるメモリシステムの概略構成図である。
【図13】変形例による冗長化符号回路の回路図である。
【図14】変形例による冗長化符号処理を示す論理式である。
【図15】変形例による冗長化符号回路の回路図である。
【図16】変形例による冗長化符号処理を示す論理式である。
【図17】変形例による冗長化符号回路の回路図である。
【図18】変形例による冗長化符号処理を示す論理式である。
【図19】変形例による冗長化符号回路の回路図である。
【符号の説明】
【0067】
1 冗長化符号回路
2 冗長化復号回路
3 インバータ
4 セレクタ
5 比較器
6 書き込み制御回路
7 メモリ
【技術分野】
【0001】
本発明は、メモリシステム及びメモリアクセス方法に関するものである。
【背景技術】
【0002】
高集積度のメモリチップには、個々のメモリセル(1ビットの記憶素子)の製造時の加工精度のばらつきによって、所望の動作を行わない不良メモリセルが混在する。
【0003】
製造ばらつき対策として、例えば、実際に必要な容量よりも多くのメモリセルを予め作っておき、余裕分のメモリセルで不良メモリセルを代替することで歩留まりを向上させるということが行われている。また、誤り訂正符号(ECC)を使って不良メモリセルのビットを救済する方式も用いられる。
【0004】
また、ROMやPROMのような読み出し専用メモリでは、ビット・シーケンスを記憶するメモリ・コンポーネントと追加メモリ・コンポーネントとを設け、0又は1のいずれか一方しか記憶できない不良メモリセルに対して、その不良メモリセルが記憶できない値を記憶させる場合、ビット・シーケンス内の各データ・ビットの値を反転して記憶させ、追加メモリ・コンポーネントにデータを反転させたことを示す値を記憶させる方式が提案されている(例えば特許文献1参照)。データ読み出し時は、追加メモリ・コンポーネントの値を参照し、データ記憶時に反転させたことが示されている場合は、読み出したデータを反転して使用する。
【0005】
MRAMやReRAMのように、異なる2つの抵抗値を持つことのできるメモリセルを用いる電気的に書き替え可能なメモリでは、メモリセルを低抵抗状態か高抵抗状態のいずれかにすることで、一方を論理値0に、もう一方を論理値1に対応させてデータを記憶する。データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいかで論理値0か1(又は1か0)かを判断する。
【0006】
このようなメモリにおいて、製造時のばらつきが大きいと、低抵抗時でも高抵抗時でも抵抗値が閾値よりも小さいメモリセルや、逆に低抵抗時でも高抵抗時でも抵抗値が閾値よりも大きいメモリセルが存在しうる。このようなメモリセルは、0を書き込んでも1を書き込んでも、常に0又は1のいずれかが読み出されることになる。
【0007】
MRAM等の製造時のばらつき対策として、自己参照読み出しと呼ばれる技術が用いられている。この技術は、メモリセルからデータを読み出した後、その値が0なのか1なのかを判断するために、同じメモリセルに1(又は0)を書き込み、そのメモリセルを再度読み出した値を最初に読み出した値と比較することで、最初に読み出した値が0か1かを決定し、メモリセルにはその値を再び書き込んでおくというものである。
【0008】
自己参照読み出しを用いることで、メモリセル毎に抵抗値のばらつきがあっても、0と1を正しく読み書きすることができる。しかし、メモリからデータを読み出すために、メモリセルに対して2回の読み出しと2回の書き込みが必要になり、アクセス時間が大きくなるという問題があった。
【特許文献1】特開2004−31904号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明はランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できるメモリシステム及びメモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一態様によるメモリシステムは、書き込みデータの冗長化符号処理を行う冗長化符号回路と、前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、前記セレクタで選択されたデータを記憶するメモリと、前記メモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、を備えるものである。
【0011】
本発明の一態様によるメモリアクセス方法は、書き込みデータを冗長化符号処理し、前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータのいずれか一方をメモリの、アドレス信号により指定されたアドレスに書き込み、前記メモリの前記指定されたアドレスからデータを読み出し、前記メモリへ書き込んだデータと、前記メモリから読み出したデータとを比較し、比較結果が不一致であれば前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータの他方を前記メモリの前記指定されたアドレスに書き込むものである。
【発明の効果】
【0012】
本発明によれば、ランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態を図面に基づいて説明する。
【0014】
図1に本発明の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、冗長化符号回路1、冗長化復号回路2、インバータ3、セレクタ4、比較器5、書き込み制御回路6、及びメモリ7を備える。
【0015】
冗長化符号回路1はnビット(nは1以上の整数)のデータDinが与えられ、冗長化符号処理を行い、n+1ビットのデータRDinに変換して出力する。冗長化符号処理については後述する。インバータ3は冗長化符号回路1の出力が与えられ、各ビットの値を反転して出力する。
【0016】
セレクタ4は、冗長化符号回路1の出力及びインバータ3の出力が与えられ、選択信号Selに基づいていずれか一方を選択してメモリ7へ出力する。
【0017】
メモリ7はランダムアクセス可能な不揮発性メモリであり、書き込み又は読み出しを行うメモリの番地を指定する複数ビットのアドレス信号Addrと、書き込みのタイミングを指示する書き込み信号MWriteが与えられる。セレクタ4から出力されたデータMDinが、アドレス信号Addrで指定された番地に書き込み信号MWriteに基づくタイミングで書き込まれる。
【0018】
比較器5は、メモリ7から読み出されたn+1ビットのデータRDoutと、冗長化符号回路1の出力RDinとを比較し、比較結果を示す比較結果信号Matchを書き込み制御回路6へ出力する。書き込み制御回路6は比較結果信号Matchの値に基づいて、選択信号Selを出力する。また、書き込み制御回路6は書き込み信号MWriteを出力する。
【0019】
冗長化復号回路2はメモリ7から読み出されたn+1ビットのデータRDoutが与えられ、冗長化復号処理を行い、nビットのデータDoutに変換して出力する。
【0020】
n=8を例として、冗長化符号処理及び冗長化復号処理について説明する。図2に示すように、冗長化符号回路1は8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7が与えられ、冗長化符号処理を行い、9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を出力する。
【0021】
冗長化符号処理は図3に示すような論理式で表すことができ、冗長化符号回路1は図4に示すようなXOR素子11〜18を有する論理回路で構成することができる。出力するデータのビットx0として0が出力される。XOR素子11には0とビットd0が与えられ、その出力がビットx1となる。
【0022】
XOR素子12にはXOR素子11の出力とビットd1とが与えられ、その出力がビットx2となる。以下同様に、XOR素子k(13≦k≦18)にはXOR素子k−1の出力とビットdk−11とが与えられ、その出力がビットxk−10となる。
【0023】
図5に示すように、冗長化復号回路2はメモリ7から読み出された9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8が与えられ、冗長化復号処理を行い、8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7を出力する。
【0024】
冗長化復号処理は図6に示すような論理式で表すことができ、冗長化符号回路2は図7に示すようなXOR素子21〜28を有する論理回路で構成することができる。XOR素子21にはビットx0とx1とが与えられ、その出力がビットd0となる。
【0025】
以下同様に、XOR素子j(22≦j≦28)にはビットxj−21とxj−20とが与えられ、その出力がビットdj−21となる。
【0026】
図3、図6に示す論理式から分かるように、8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に対して冗長化符号処理を行って得られる9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を冗長化復号処理すると、元の8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことが出来る。
【0027】
また、9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとって(各ビットを反転して)から冗長化復号処理しても、元の8ビットのデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことが出来る。
【0028】
例えば8ビットのデータが01100011であったとする。この値を図4に示す冗長化符号回路に与えると、9ビットのデータ001000010が出力される。この001000010を図7に示す冗長化復号回路に与えると、その出力は01100011となり、元のデータに戻る。
【0029】
また、9ビットのデータ001000010の各ビットの否定をとった110111101を図7に示す冗長化復号回路に与えても、その出力は01100011となり、元のデータに戻る。
【0030】
冗長化符号処理後の9ビットのデータx0、x1、x2、x3、x4、x5、x6、x7、x8を記憶するメモリセルのうち、いずれか1つが常に0(又は1)しか読み出せない不良メモリセルであったとしても、その不良メモリセルに記憶させるビットの値が0(又は1)の場合はx0、x1、x2、x3、x4、x5、x6、x7、x8を書き込み、不良メモリセルに記憶させるビットの値が1(又は0)の場合はx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとったものを書き込むようにすることで、不良メモリセルに記憶させる値と不良メモリセルから読み出せる値とを一致させることができる。
【0031】
メモリから読み出されるデータがx0、x1、x2、x3、x4、x5、x6、x7、x8、又はx0、x1、x2、x3、x4、x5、x6、x7、x8の各ビットの否定をとったもののいずれであっても、冗長化復号処理により同一のデータd0、d1、d2、d3、d4、d5、d6、d7に戻すことができるため、正しいデータの読み出しが可能となる。
【0032】
例えば、冗長化符号処理後の9ビットのデータ001000010を記憶するメモリセルのうち、左から3ビット目のメモリセルが0しか読み出せない不良メモリセルであった場合、メモリ7には各ビットの否定をとった110111101を書き込んでおけば、冗長化復号処理により、正しいデータを読み出すことができる。
【0033】
本発明の実施形態によるメモリシステムは、マイクロプロセッサ等のハードウェアに接続して、データの書き込みや読み出しを行う。このようなメモリシステムを用いたデータ書き込み方法を図8に示すフローチャートを用いて説明する。
【0034】
ここでは、マイクロプロセッサがメモリシステムにデータを書き込む場合を例に説明するが、マイクロプロセッサ以外のハードウェアがデータを書き込む場合も同様である。マイクロプロセッサはメモリシステムにデータを書き込むために、書き込みたいアドレスをメモリシステムのアドレス信号Addrに出力し、書き込みたいデータをメモリシステムのデータ信号Dinに出力する。そして、マイクロプロセッサはメモリシステムの書き込み信号Writeに対する出力を論理値0から1に変化させることで、メモリシステムの書き込み処理を開始させる。
【0035】
(ステップS100)マイクロプロセッサから、アドレス信号Addrにより、メモリ7へデータの書き込み先となるアドレスAが与えられる。また、マイクロプロセッサから、冗長化符号回路1へnビットのデータDinが与えられる。
【0036】
(ステップS101)冗長化符号回路1により冗長化符号処理が行われ、n+1ビットのデータRDinが出力される。
【0037】
(ステップS102)セレクタ4がデータRDinを選択するように、書き込み制御回路6から選択信号Selが出力される。さらに、書き込み制御回路6がメモリ7への書き込み信号MWriteを論理値0から1へ変化させてメモリ7へ書き込みを指示することで、メモリ7のアドレスAにデータRDinが書き込まれる。
【0038】
(ステップS103)メモリ7のアドレスAからデータRDoutを読み出す。
【0039】
(ステップS104)比較器5においてデータRDinとデータRDoutが比較され、比較結果を示す比較結果信号Matchが出力される。書き込み制御回路6は、比較結果信号Matchが真、すなわちデータRDinとデータRDoutが一致、の場合は、データがメモリ7へ正しく書き込めていると判定し、書き込み動作を終了する。
【0040】
比較結果信号Matchが偽、すなわちデータRDinとデータRDoutが不一致、の場合は、ステップS105へ進む。
【0041】
(ステップS105)セレクタ4がインバータ3の出力、すなわちデータRDinの各ビットの否定をとった値“〜RDin”、を選択するように、書き込み制御回路6から選択信号Selが出力される。さらに、書き込み制御回路6がメモリ7への書き込み信号MWriteを論理値0から1に変化させてメモリ7へ書き込みを指示することで、メモリ7のアドレスAにデータ“〜RDin”が書き込まれる。
【0042】
ステップS104で比較結果が一致している場合のタイミングチャートは図9に示すようなものとなり、比較結果が不一致である場合のタイミングチャートは図10に示すようなものとなる。
【0043】
ステップS104で比較結果信号Matchが真の場合に、データがメモリ7へ正しく書き込めていると判断した場合、書き込み動作を終了せずに、データRDinを再度書き込むように実施することも可能である。
【0044】
また、比較器5はメモリ7から読み出されたデータRDoutと冗長化復号回路1の出力RDinとを比較するのではなく、メモリ7から読み出されたデータRDoutとインバータ3の出力〜RDinとを比較するようにしてもよい。この場合、ステップS102ではインバータ3の出力からRDinがメモリ7に書き込まれる。そしてステップS104でデータ〜RDinとデータRDoutが比較され、不一致の場合はステップS105でデータRDinがメモリ7に書き込まれる。
【0045】
次に、データ読み出し方法を図11に示すフローチャートを用いて説明する。マイクロプロセッサはメモリシステムからデータを読み出すために、読み出したいアドレスをメモリシステムのアドレス信号Addrに出力することで、メモリシステムの読み出し処理を開始させる。
【0046】
(ステップS200)マイクロプロセッサから、アドレス信号AddrによりアドレスAが与えられる。
【0047】
(ステップS201)メモリ7のアドレスAからn+1ビットのデータRDoutが読み出される。
【0048】
(ステップS202)データRDoutが冗長化復号回路2に与えられる。
【0049】
(ステップS203)冗長化復号処理が行われ、nビットのデータDoutがメモリ7のアドレスAのデータとして出力される。
【0050】
冗長化符号処理、冗長化復号処理を用いることで、メモリ7のn+1ビット分のメモリセル中に1ビットの不良メモリセルが存在していても、データの読み書きを正しく行うことができる。ここで、nの値は、メモリ7内に不良メモリセルが多いときは小さな値に設定し、不良メモリセルが少ない場合は大きな値に設定することができる。
【0051】
上述のようなメモリアクセス方法により、通常のECCよりも高い効率で不良メモリセルを救済することができる。例えば、本実施形態によるメモリアクセス方法ではn=8とした場合、8ビットのデータに対して冗長化符号処理を行い9ビットとすることで、9ビット分のメモリセルのうち、1ビットの不良メモリセルを救済できる。つまり、8ビットのデータに1ビットの冗長ビットを付加することで1ビットの不良メモリセルを救済できる。
【0052】
一方、データビットと冗長ビットの比率が上述の例と等しい、64ビットのデータに8ビットの冗長ビットを付加する1誤り訂正2誤り検出符号(SECDED:Single Error Correction Double Error Detection)を用いる場合は、72ビットのメモリセルのうち、1ビットの不良メモリセルしか救済することができない。
【0053】
本実施形態ではメモリへの書き込み時に、メモリ7への最大2回の書き込みと1回の読み出しが必要となるため、書き込みが1回で済む自己参照読み出しと比較して、書き込みの速度は低下する。
【0054】
しかし、本実施形態ではメモリからの読み出し時に1回の読み出しだけで済むのに対し、自己参照読み出しは2回の読み出し及び2回の書き込みが必要になるので、読み出し速度を高速化できる。
【0055】
一般に、メモリの書き込みは読み出しよりも頻度が少なく、読み出しが高速である方が、メモリへの総アクセス時間を低減し、メモリを効率良く使用することができる。
【0056】
このように、本実施形態によるメモリシステムにより、電気的に書き替え可能なメモリの不良メモリセルを高効率に救済し、かつメモリへのアクセス時間を低減してメモリを効率良く使用することができる。
【0057】
上記実施形態では、メモリ7の読み書きのデータ幅と、冗長化符号処理して記憶する単位が同じであったが、異なっていてもよい。例えば、読み書きのデータ幅が16ビットで、冗長化処理の単位が8ビットの場合は、図12に示すように、16ビットのデータを上位8ビットと下位8ビットに分割し、2つの冗長化処理ブロック10a、10bに与える。ブロック毎に冗長化符号回路1a、1bで冗長化符号処理を行い、メモリ7に書き込む。
【0058】
そしてメモリ7に書き込んだデータと、メモリ7から読み出したデータとを比較器5a、5bで比較し、いずれのブロックにおいても一致していれば書き込み動作を終了する。いずれか一方のブロックで不一致の場合、不一致となったブロックはインバータ3の出力をセレクタ4で選択して出力し、メモリ7に書き込む。また、一致していた方のブロックは同じ値を再度メモリ7に書き込むようにする。
【0059】
このように、メモリ7の読み書きのデータ幅と、冗長化処理の単位が異なる場合は、冗長化処理ブロックを複数設けることで、上記実施形態と同様の効果を得ることができる。
【0060】
上記実施形態における冗長化符号回路は図4に示すような構成に限定されない。例えば、図4に示す構成から冗長な論理素子であるXOR素子11を省き、図13に示すような構成にしてもよい。
【0061】
また、冗長化符号回路では、図14に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図15(a)、(b)に示すような構成の論理回路で実現可能である。
【0062】
また、図16に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図17(a)、(b)に示すような構成の論理回路で実現可能である。また、図18に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図19(a)、(b)に示すような構成の論理回路で実現可能である。
【0063】
図17や図19に示す冗長化符号回路は、図13や図15に示す冗長化符号回路と比較して、XOR素子の段数が少ないため、高速に動作することができる。
【0064】
冗長化符号処理を行ったn+1ビットのデータのうち0又は1に固定する1ビットは1ビット目〜n+1ビット目のいずれでもよい。0又は1に固定するビットは、n+1ビットの中でより中央のビットである程、冗長化符号回路における論路素子の段数が少なくなり、高速動作が可能となる。
【0065】
上述した実施の形態は一例であって限定的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0066】
【図1】本発明の実施形態によるメモリシステムの概略構成図である。
【図2】冗長化符号回路の処理の一例を示す図である。
【図3】冗長化符号処理の一例を示す論理式である。
【図4】冗長化符号回路の一例を示す回路図である。
【図5】冗長化復号回路の処理の一例を示す図である。
【図6】冗長化復号処理の一例を示す論理式である。
【図7】冗長化復号回路の一例を示す回路図である。
【図8】同実施形態によるデータ書き込み方法のフローチャートである。
【図9】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図10】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図11】同実施形態によるデータ読み出し方法のフローチャートである。
【図12】変形例によるメモリシステムの概略構成図である。
【図13】変形例による冗長化符号回路の回路図である。
【図14】変形例による冗長化符号処理を示す論理式である。
【図15】変形例による冗長化符号回路の回路図である。
【図16】変形例による冗長化符号処理を示す論理式である。
【図17】変形例による冗長化符号回路の回路図である。
【図18】変形例による冗長化符号処理を示す論理式である。
【図19】変形例による冗長化符号回路の回路図である。
【符号の説明】
【0067】
1 冗長化符号回路
2 冗長化復号回路
3 インバータ
4 セレクタ
5 比較器
6 書き込み制御回路
7 メモリ
【特許請求の範囲】
【請求項1】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータを記憶するメモリと、
前記メモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備えるメモリシステム。
【請求項2】
前記冗長化符号処理されたデータを冗長化復号処理した値と、前記インバータ回路により反転されたデータを冗長化復号処理した値は、共に前記書き込みデータと等しくなることを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記比較器が前記メモリから読み出されるデータと前記冗長化符号処理されたデータとを比較する場合、前記書き込み制御回路は、前記セレクタが前記冗長化符号処理されたデータを選択して出力するように前記選択信号を出力すると共に、前記メモリへの書き込みタイミングを示す書き込み信号を出力し、さらに、前記比較結果が不一致を示す時は前記セレクタが前記インバータ回路により反転されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力し、
前記比較器が前記メモリから読み出されるデータと前記インバータ回路により反転されたデータとを比較する場合、前記書き込み制御回路は、前記セレクタが前記インバータ回路により反転されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力し、さらに、前記比較結果が不一致を示す時は前記セレクタが前記冗長化符号処理されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力することを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記書き込みデータをnビット(nは1以上の整数)とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはn+1ビットとなり、前記冗長化復号処理されたデータはnビットとなることを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記冗長化符号回路は、n−1個のXORゲートを有し、
第1のXORゲートには前記書き込みデータの1ビット目と2ビット目とが与えられ、
第kのXORゲート(kは2≦k≦n−1を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+1ビット目が与えられ、
出力の1ビット目として0を出力し、2ビット目として前記書き込みデータの1ビット目と同じ値を出力し、3ビット目として前記第1のXORゲートの出力値を出力し、k+2ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項6】
前記冗長化符号回路は、n個のXORゲートを有し、
第1のXORゲートには前記書き込みデータの1ビット目と1とが与えられ、
第kのXORゲート(kは2≦k≦nを満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのkビット目が与えられ、
出力の1ビット目として1を出力し、2ビット目として前記第1のXORゲートの出力値を出力し、k+1ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項7】
前記冗長化符号回路は、NOTゲートとn−1個のXORゲートを有し、
前記NOTゲートには前記書き込みデータの1ビット目が与えられ、
第1のXORゲートには前記NOTゲートの出力値と前記書き込みデータの2ビット目とが与えられ、
第kのXORゲート(kは2≦k≦n−1を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+1ビット目が与えられ、
出力の1ビット目として1を出力し、2ビット目として前記NOTゲートの出力値を出力し、3ビット目として前記第1のXORゲートの出力値を出力し、k+2ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項8】
前記冗長化符号回路は、2m−2個(mは2m=nを満たす整数)のXORゲートを有し、
第1のXORゲートには前記書き込みデータのmビット目とm−1ビット目が与えられ、
第jのXORゲート(jは2≦j≦m−1を満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−jビット目が与えられ、
第mのXORゲートには前記書き込みデータのm+1ビット目とm+2ビット目が与えられ、
第kのXORゲート(kはm+1≦k≦2m−2を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+2ビット目が与えられ、
出力のm−jビット目として前記第jのXORゲートの出力値を出力し、m−1ビット目として前記第1のXORゲートの出力値を出力し、mビット目として前記書き込みデータのmビット目と同じ値を出力し、m+1ビット目として0を出力し、m+2ビット目として前記書き込みデータのm+1ビット目と同じ値を出力し、m+3ビット目として前記第mのXORゲートの出力値を出力し、k+3ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項9】
前記冗長化符号回路は、2m個(mは2m=nを満たす整数)のXORゲートを有し、
第1のXORゲートには前記書き込みデータのmビット目と1とが与えられ、
第jのXORゲート(jは2≦j≦mを満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−j+1ビット目が与えられ、
第m+1のXORゲートには前記書き込みデータのm+1ビット目と1とが与えられ、
第kのXORゲート(kはm+2≦k≦2mを満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのkビット目が与えられ、
出力のm−j+1ビット目として前記第jのXORゲートの出力値を出力し、mビット目として前記第1のXORゲートの出力値を出力し、m+1ビット目として1を出力し、m+2ビット目として前記第m+1のXORゲートの出力値を出力し、k+1ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項10】
前記冗長化符号回路は、2m−2個(mは2m=nを満たす整数)のXORゲート及び2個のNOTゲートを有し、
第1のNOTゲートには前記書き込みデータのmビット目が与えられ、
第2のNOTゲートには前記書き込みデータのm+1ビット目が与えられ、
第1のXORゲートには前記書き込みデータのm−1ビット目と前記第1のNOTゲートの出力値とが与えられ、
第jのXORゲート(jは2≦j≦m−1を満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−jビット目が与えられ、
第mのXORゲートには前記書き込みデータのm+2ビット目と前記第2のNOTゲートの出力値とが与えられ、
第kのXORゲート(kはm+1≦k≦2m−2を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+2ビット目が与えられ、
出力のm−jビット目として前記第jのXORゲートの出力値を出力し、m−1ビット目とし前記第1のXORゲートの出力値を出力し、mビット目として前記第1のNOTゲートの出力値を出力し、m+1ビット目として1を出力し、m+2ビット目として前記第2のNOTゲートの出力値を出力し、m+3ビット目として前記第mのXORゲートの出力値を出力し、k+3ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項11】
前記冗長化復号回路は、n個のXORゲートを有し、
第kのXORゲート(kは1≦k≦nを満たす整数)には前記メモリから読み出されるデータのkビット目とk+1ビット目が与えられ、
出力のkビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項12】
書き込みデータを冗長化符号処理し、
前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータのいずれか一方をメモリの、アドレス信号により指定されたアドレスに書き込み、
前記メモリの前記指定されたアドレスからデータを読み出し、
前記メモリへ書き込んだデータと、前記メモリから読み出したデータとを比較し、
比較結果が不一致であれば前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータの他方を前記メモリの前記指定されたアドレスに書き込むメモリアクセス方法。
【請求項13】
前記メモリから読み出したデータを冗長化復号処理して出力することを特徴とする請求項12に記載のメモリアクセス方法。
【請求項14】
前記冗長化符号処理した書き込みデータを前記冗長化復号処理した値と、前記冗長化符号処理した書き込みデータの各ビットを反転したデータを前記冗長化復号処理した値とが、共に前記書き込みデータと等しくなることを特徴とする請求項13に記載のメモリアクセス方法。
【請求項15】
前記書き込みデータをnビット(nは1以上の整数)とすると、冗長化符号処理後のデータ及び前記メモリから読み出すデータはn+1ビットとなり、前記冗長化復号処理後のデータはnビットとなることを特徴とする請求項14に記載のメモリアクセス方法。
【請求項16】
前記冗長化符号処理は、
出力の1ビット目として0を出力し、
出力の2ビット目として前記書き込みデータの1ビット目と同じ値を出力し、
出力のkビット目(kは2≦k≦nを満たす整数)の値と前記書き込みデータのkビット目の値とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項17】
前記冗長化符号処理は、
出力の1ビット目として1を出力し、
出力に2ビット目として前記書き込みデータの1ビット目の否定をとった値を出力し、
出力のkビット目(kは2≦k≦nを満たす整数)の値と前記書き込みデータのkビット目の値とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項18】
前記冗長化符号処理は、
出力のm+1ビット目(mは2m=nを満たす整数)として0を出力し、
出力のmビット目として前記書き込みデータのmビット目と同じ値を出力し、
出力のjビット目(jは2≦j≦mを満たす整数)と前記書き込みデータのj−1ビット目とのXORを演算し、演算結果を出力のj−1ビット目として出力し、
出力のm+2ビット目として前記書き込みデータのm+1ビット目と同じ値を出力し、
出力のkビット目(kはm+2≦k≦2mを満たす整数)と前記書き込みデータのkビット目とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項19】
前記冗長化符号処理は、
出力のm+1ビット目(mは2m=nを満たす整数)として1を出力し、
出力のmビット目として前記書き込みデータのmビット目の否定をとった値を出力し、
出力のjビット目(jは2≦j≦mを満たす整数)と前記書き込みデータのj−1ビット目とのXORを演算し、演算結果を出力のj−1ビット目として出力し、
出力のm+2ビット目として前記書き込みデータのm+1ビット目の否定をとった値を出力し、
出力のkビット目(kはm+2≦k≦2mを満たす整数)と前記書き込みデータのkビット目とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項20】
前記冗長化復号処理は、前記メモリから読み出したn+1ビットのデータのうち、kビット目(kは1≦k≦nを満たす整数)の値とk+1ビット目の値とのXORを演算し、演算結果を出力のkビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項1】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータを記憶するメモリと、
前記メモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備えるメモリシステム。
【請求項2】
前記冗長化符号処理されたデータを冗長化復号処理した値と、前記インバータ回路により反転されたデータを冗長化復号処理した値は、共に前記書き込みデータと等しくなることを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記比較器が前記メモリから読み出されるデータと前記冗長化符号処理されたデータとを比較する場合、前記書き込み制御回路は、前記セレクタが前記冗長化符号処理されたデータを選択して出力するように前記選択信号を出力すると共に、前記メモリへの書き込みタイミングを示す書き込み信号を出力し、さらに、前記比較結果が不一致を示す時は前記セレクタが前記インバータ回路により反転されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力し、
前記比較器が前記メモリから読み出されるデータと前記インバータ回路により反転されたデータとを比較する場合、前記書き込み制御回路は、前記セレクタが前記インバータ回路により反転されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力し、さらに、前記比較結果が不一致を示す時は前記セレクタが前記冗長化符号処理されたデータを選択して出力するように前記選択信号を出力すると共に、前記書き込み信号を出力することを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記書き込みデータをnビット(nは1以上の整数)とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはn+1ビットとなり、前記冗長化復号処理されたデータはnビットとなることを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記冗長化符号回路は、n−1個のXORゲートを有し、
第1のXORゲートには前記書き込みデータの1ビット目と2ビット目とが与えられ、
第kのXORゲート(kは2≦k≦n−1を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+1ビット目が与えられ、
出力の1ビット目として0を出力し、2ビット目として前記書き込みデータの1ビット目と同じ値を出力し、3ビット目として前記第1のXORゲートの出力値を出力し、k+2ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項6】
前記冗長化符号回路は、n個のXORゲートを有し、
第1のXORゲートには前記書き込みデータの1ビット目と1とが与えられ、
第kのXORゲート(kは2≦k≦nを満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのkビット目が与えられ、
出力の1ビット目として1を出力し、2ビット目として前記第1のXORゲートの出力値を出力し、k+1ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項7】
前記冗長化符号回路は、NOTゲートとn−1個のXORゲートを有し、
前記NOTゲートには前記書き込みデータの1ビット目が与えられ、
第1のXORゲートには前記NOTゲートの出力値と前記書き込みデータの2ビット目とが与えられ、
第kのXORゲート(kは2≦k≦n−1を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+1ビット目が与えられ、
出力の1ビット目として1を出力し、2ビット目として前記NOTゲートの出力値を出力し、3ビット目として前記第1のXORゲートの出力値を出力し、k+2ビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項8】
前記冗長化符号回路は、2m−2個(mは2m=nを満たす整数)のXORゲートを有し、
第1のXORゲートには前記書き込みデータのmビット目とm−1ビット目が与えられ、
第jのXORゲート(jは2≦j≦m−1を満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−jビット目が与えられ、
第mのXORゲートには前記書き込みデータのm+1ビット目とm+2ビット目が与えられ、
第kのXORゲート(kはm+1≦k≦2m−2を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+2ビット目が与えられ、
出力のm−jビット目として前記第jのXORゲートの出力値を出力し、m−1ビット目として前記第1のXORゲートの出力値を出力し、mビット目として前記書き込みデータのmビット目と同じ値を出力し、m+1ビット目として0を出力し、m+2ビット目として前記書き込みデータのm+1ビット目と同じ値を出力し、m+3ビット目として前記第mのXORゲートの出力値を出力し、k+3ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項9】
前記冗長化符号回路は、2m個(mは2m=nを満たす整数)のXORゲートを有し、
第1のXORゲートには前記書き込みデータのmビット目と1とが与えられ、
第jのXORゲート(jは2≦j≦mを満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−j+1ビット目が与えられ、
第m+1のXORゲートには前記書き込みデータのm+1ビット目と1とが与えられ、
第kのXORゲート(kはm+2≦k≦2mを満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのkビット目が与えられ、
出力のm−j+1ビット目として前記第jのXORゲートの出力値を出力し、mビット目として前記第1のXORゲートの出力値を出力し、m+1ビット目として1を出力し、m+2ビット目として前記第m+1のXORゲートの出力値を出力し、k+1ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項10】
前記冗長化符号回路は、2m−2個(mは2m=nを満たす整数)のXORゲート及び2個のNOTゲートを有し、
第1のNOTゲートには前記書き込みデータのmビット目が与えられ、
第2のNOTゲートには前記書き込みデータのm+1ビット目が与えられ、
第1のXORゲートには前記書き込みデータのm−1ビット目と前記第1のNOTゲートの出力値とが与えられ、
第jのXORゲート(jは2≦j≦m−1を満たす整数)には第j−1のXORゲートの出力値と前記書き込みデータのm−jビット目が与えられ、
第mのXORゲートには前記書き込みデータのm+2ビット目と前記第2のNOTゲートの出力値とが与えられ、
第kのXORゲート(kはm+1≦k≦2m−2を満たす整数)には第k−1のXORゲートの出力値と前記書き込みデータのk+2ビット目が与えられ、
出力のm−jビット目として前記第jのXORゲートの出力値を出力し、m−1ビット目とし前記第1のXORゲートの出力値を出力し、mビット目として前記第1のNOTゲートの出力値を出力し、m+1ビット目として1を出力し、m+2ビット目として前記第2のNOTゲートの出力値を出力し、m+3ビット目として前記第mのXORゲートの出力値を出力し、k+3ビット目の出力として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項11】
前記冗長化復号回路は、n個のXORゲートを有し、
第kのXORゲート(kは1≦k≦nを満たす整数)には前記メモリから読み出されるデータのkビット目とk+1ビット目が与えられ、
出力のkビット目として前記第kのXORゲートの出力値を出力することを特徴とする請求項4に記載のメモリシステム。
【請求項12】
書き込みデータを冗長化符号処理し、
前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータのいずれか一方をメモリの、アドレス信号により指定されたアドレスに書き込み、
前記メモリの前記指定されたアドレスからデータを読み出し、
前記メモリへ書き込んだデータと、前記メモリから読み出したデータとを比較し、
比較結果が不一致であれば前記冗長化符号処理した書き込みデータ及び前記冗長化符号処理した書き込みデータの各ビットの値を反転したデータの他方を前記メモリの前記指定されたアドレスに書き込むメモリアクセス方法。
【請求項13】
前記メモリから読み出したデータを冗長化復号処理して出力することを特徴とする請求項12に記載のメモリアクセス方法。
【請求項14】
前記冗長化符号処理した書き込みデータを前記冗長化復号処理した値と、前記冗長化符号処理した書き込みデータの各ビットを反転したデータを前記冗長化復号処理した値とが、共に前記書き込みデータと等しくなることを特徴とする請求項13に記載のメモリアクセス方法。
【請求項15】
前記書き込みデータをnビット(nは1以上の整数)とすると、冗長化符号処理後のデータ及び前記メモリから読み出すデータはn+1ビットとなり、前記冗長化復号処理後のデータはnビットとなることを特徴とする請求項14に記載のメモリアクセス方法。
【請求項16】
前記冗長化符号処理は、
出力の1ビット目として0を出力し、
出力の2ビット目として前記書き込みデータの1ビット目と同じ値を出力し、
出力のkビット目(kは2≦k≦nを満たす整数)の値と前記書き込みデータのkビット目の値とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項17】
前記冗長化符号処理は、
出力の1ビット目として1を出力し、
出力に2ビット目として前記書き込みデータの1ビット目の否定をとった値を出力し、
出力のkビット目(kは2≦k≦nを満たす整数)の値と前記書き込みデータのkビット目の値とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項18】
前記冗長化符号処理は、
出力のm+1ビット目(mは2m=nを満たす整数)として0を出力し、
出力のmビット目として前記書き込みデータのmビット目と同じ値を出力し、
出力のjビット目(jは2≦j≦mを満たす整数)と前記書き込みデータのj−1ビット目とのXORを演算し、演算結果を出力のj−1ビット目として出力し、
出力のm+2ビット目として前記書き込みデータのm+1ビット目と同じ値を出力し、
出力のkビット目(kはm+2≦k≦2mを満たす整数)と前記書き込みデータのkビット目とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項19】
前記冗長化符号処理は、
出力のm+1ビット目(mは2m=nを満たす整数)として1を出力し、
出力のmビット目として前記書き込みデータのmビット目の否定をとった値を出力し、
出力のjビット目(jは2≦j≦mを満たす整数)と前記書き込みデータのj−1ビット目とのXORを演算し、演算結果を出力のj−1ビット目として出力し、
出力のm+2ビット目として前記書き込みデータのm+1ビット目の否定をとった値を出力し、
出力のkビット目(kはm+2≦k≦2mを満たす整数)と前記書き込みデータのkビット目とのXORを演算し、演算結果を出力のk+1ビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【請求項20】
前記冗長化復号処理は、前記メモリから読み出したn+1ビットのデータのうち、kビット目(kは1≦k≦nを満たす整数)の値とk+1ビット目の値とのXORを演算し、演算結果を出力のkビット目として出力することを特徴とする請求項15に記載のメモリアクセス方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2010−9101(P2010−9101A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2008−164205(P2008−164205)
【出願日】平成20年6月24日(2008.6.24)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願日】平成20年6月24日(2008.6.24)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]