(57)【特許請求の範囲】
【請求項１】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、ｎ−１個のＸＯＲゲートを有し、
第１のＸＯＲゲートには前記書き込みデータの１ビット目と２ビット目とが与えられ、
第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎ−１を満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋ＋１ビット目が与えられ、
出力の１ビット目として０を出力し、２ビット目として前記書き込みデータの１ビット目と同じ値を出力し、３ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｋ＋２ビット目として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項２】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、ｎ個のＸＯＲゲートを有し、
第１のＸＯＲゲートには前記書き込みデータの１ビット目と１とが与えられ、
第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎを満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋビット目が与えられ、
出力の１ビット目として１を出力し、２ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｋ＋１ビット目として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項３】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、ＮＯＴゲートとｎ−１個のＸＯＲゲートを有し、
前記ＮＯＴゲートには前記書き込みデータの１ビット目が与えられ、
第１のＸＯＲゲートには前記ＮＯＴゲートの出力値と前記書き込みデータの２ビット目とが与えられ、
第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎ−１を満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋ＋１ビット目が与えられ、
出力の１ビット目として１を出力し、２ビット目として前記ＮＯＴゲートの出力値を出力し、３ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｋ＋２ビット目として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項４】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、２ｍ−２個（ｍは２ｍ＝ｎを満たす整数）のＸＯＲゲートを有し、
第１のＸＯＲゲートには前記書き込みデータのｍビット目とｍ−１ビット目が与えられ、
第ｊのＸＯＲゲート（ｊは２≦ｊ≦ｍ−１を満たす整数）には第ｊ−１のＸＯＲゲートの出力値と前記書き込みデータのｍ−ｊビット目が与えられ、
第ｍのＸＯＲゲートには前記書き込みデータのｍ＋１ビット目とｍ＋２ビット目が与えられ、
第ｋのＸＯＲゲート（ｋはｍ＋１≦ｋ≦２ｍ−２を満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋ＋２ビット目が与えられ、
出力のｍ−ｊビット目として前記第ｊのＸＯＲゲートの出力値を出力し、ｍ−１ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｍビット目として前記書き込みデータのｍビット目と同じ値を出力し、ｍ＋１ビット目として０を出力し、ｍ＋２ビット目として前記書き込みデータのｍ＋１ビット目と同じ値を出力し、ｍ＋３ビット目として前記第ｍのＸＯＲゲートの出力値を出力し、ｋ＋３ビット目の出力として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項５】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、２ｍ個（ｍは２ｍ＝ｎを満たす整数）のＸＯＲゲートを有し、
第１のＸＯＲゲートには前記書き込みデータのｍビット目と１とが与えられ、
第ｊのＸＯＲゲート（ｊは２≦ｊ≦ｍを満たす整数）には第ｊ−１のＸＯＲゲートの出力値と前記書き込みデータのｍ−ｊ＋１ビット目が与えられ、
第ｍ＋１のＸＯＲゲートには前記書き込みデータのｍ＋１ビット目と１とが与えられ、
第ｋのＸＯＲゲート（ｋはｍ＋２≦ｋ≦２ｍを満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋビット目が与えられ、
出力のｍ−ｊ＋１ビット目として前記第ｊのＸＯＲゲートの出力値を出力し、ｍビット目として前記第１のＸＯＲゲートの出力値を出力し、ｍ＋１ビット目として１を出力し、ｍ＋２ビット目として前記第ｍ＋１のＸＯＲゲートの出力値を出力し、ｋ＋１ビット目の出力として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項６】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化符号回路は、２ｍ−２個（ｍは２ｍ＝ｎを満たす整数）のＸＯＲゲート及び２個のＮＯＴゲートを有し、
第１のＮＯＴゲートには前記書き込みデータのｍビット目が与えられ、
第２のＮＯＴゲートには前記書き込みデータのｍ＋１ビット目が与えられ、
第１のＸＯＲゲートには前記書き込みデータのｍ−１ビット目と前記第１のＮＯＴゲートの出力値とが与えられ、
第ｊのＸＯＲゲート（ｊは２≦ｊ≦ｍ−１を満たす整数）には第ｊ−１のＸＯＲゲートの出力値と前記書き込みデータのｍ−ｊビット目が与えられ、
第ｍのＸＯＲゲートには前記書き込みデータのｍ＋２ビット目と前記第２のＮＯＴゲートの出力値とが与えられ、
第ｋのＸＯＲゲート（ｋはｍ＋１≦ｋ≦２ｍ−２を満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋ＋２ビット目が与えられ、
出力のｍ−ｊビット目として前記第ｊのＸＯＲゲートの出力値を出力し、ｍ−１ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｍビット目として前記第１のＮＯＴゲートの出力値を出力し、ｍ＋１ビット目として１を出力し、ｍ＋２ビット目として前記第２のＮＯＴゲートの出力値を出力し、ｍ＋３ビット目として前記第ｍのＸＯＲゲートの出力値を出力し、ｋ＋３ビット目の出力として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【請求項７】
書き込みデータの冗長化符号処理を行う冗長化符号回路と、
前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、
前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、
前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、
前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、
前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、
を備え、
前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、
前記冗長化復号回路は、ｎ個のＸＯＲゲートを有し、
第ｋのＸＯＲゲート（ｋは１≦ｋ≦ｎを満たす整数）には前記メモリから読み出されるデータのｋビット目とｋ＋１ビット目が与えられ、
出力のｋビット目として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とするメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス装置に関するものである。
【背景技術】
【０００２】
高集積度のメモリチップには、個々のメモリセル（１ビットの記憶素子）の製造時の加工精度のばらつきによって、所望の動作を行わない不良メモリセルが混在する。
【０００３】
製造ばらつき対策として、例えば、実際に必要な容量よりも多くのメモリセルを予め作っておき、余裕分のメモリセルで不良メモリセルを代替することで歩留まりを向上させるということが行われている。また、誤り訂正符号（ＥＣＣ）を使って不良メモリセルのビットを救済する方式も用いられる。
【０００４】
また、ＲＯＭやＰＲＯＭのような読み出し専用メモリでは、ビット・シーケンスを記憶するメモリ・コンポーネントと追加メモリ・コンポーネントとを設け、０又は１のいずれか一方しか記憶できない不良メモリセルに対して、その不良メモリセルが記憶できない値を記憶させる場合、ビット・シーケンス内の各データ・ビットの値を反転して記憶させ、追加メモリ・コンポーネントにデータを反転させたことを示す値を記憶させる方式が提案されている（例えば特許文献１参照）。データ読み出し時は、追加メモリ・コンポーネントの値を参照し、データ記憶時に反転させたことが示されている場合は、読み出したデータを反転して使用する。
【０００５】
ＭＲＡＭやＲｅＲＡＭのように、異なる２つの抵抗値を持つことのできるメモリセルを用いる電気的に書き替え可能なメモリでは、メモリセルを低抵抗状態か高抵抗状態のいずれかにすることで、一方を論理値０に、もう一方を論理値１に対応させてデータを記憶する。データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいかで論理値０か１（又は１か０）かを判断する。
【０００６】
このようなメモリにおいて、製造時のばらつきが大きいと、低抵抗時でも高抵抗時でも抵抗値が閾値よりも小さいメモリセルや、逆に低抵抗時でも高抵抗時でも抵抗値が閾値よりも大きいメモリセルが存在しうる。このようなメモリセルは、０を書き込んでも１を書き込んでも、常に０又は１のいずれかが読み出されることになる。
【０００７】
ＭＲＡＭ等の製造時のばらつき対策として、自己参照読み出しと呼ばれる技術が用いられている。この技術は、メモリセルからデータを読み出した後、その値が０なのか１なのかを判断するために、同じメモリセルに１（又は０）を書き込み、そのメモリセルを再度読み出した値を最初に読み出した値と比較することで、最初に読み出した値が０か１かを決定し、メモリセルにはその値を再び書き込んでおくというものである。
【０００８】
自己参照読み出しを用いることで、メモリセル毎に抵抗値のばらつきがあっても、０と１を正しく読み書きすることができる。しかし、メモリからデータを読み出すために、メモリセルに対して２回の読み出しと２回の書き込みが必要になり、アクセス時間が大きくなるという問題があった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−３１９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明はランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できるメモリアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様によるメモリアクセス装置は、書き込みデータの冗長化符号処理を行う冗長化符号回路と、前記冗長化符号回路により冗長化符号処理されたデータが与えられ、前記冗長化符号処理されたデータの各ビットの値を反転するインバータ回路と、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータが与えられ、選択信号に基づいていずれか一方を選択するセレクタと、前記セレクタで選択されたデータが記憶されているメモリから読み出されるデータと、前記冗長化符号処理されたデータ及び前記インバータ回路により反転されたデータのいずれか一方とを比較し、比較結果を示す比較結果信号を出力する比較器と、前記メモリの書き込み制御を行うと共に、前記比較結果信号が与えられ、前記比較結果信号に示される前記比較結果に基づいて前記選択信号を生成し出力する書き込み制御回路と、前記メモリから読み出されるデータを冗長化復号処理して出力する冗長化復号回路と、を備える。前記書き込みデータをｎビット（ｎは１以上の整数）とすると、冗長化符号処理されたデータ及び前記メモリから読み出されるデータはｎ＋１ビットとなり、前記冗長化復号処理されたデータはｎビットとなり、前記冗長化符号回路は、ｎ−１個のＸＯＲゲートを有し、第１のＸＯＲゲートには前記書き込みデータの１ビット目と２ビット目とが与えられ、第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎ−１を満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込みデータのｋ＋１ビット目が与えられ、出力の１ビット目として０を出力し、２ビット目として前記書き込みデータの１ビット目と同じ値を出力し、３ビット目として前記第１のＸＯＲゲートの出力値を出力し、ｋ＋２ビット目として前記第ｋのＸＯＲゲートの出力値を出力することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ランダムアクセス可能な不揮発性メモリにおける不良メモリセルを救済し、かつアクセス時間を低減できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１４】
図１に本発明の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、冗長化符号回路１、冗長化復号回路２、インバータ３、セレクタ４、比較器５、書き込み制御回路６、及びメモリ７を備える。
【００１５】
冗長化符号回路１はｎビット（ｎは１以上の整数）のデータＤｉｎが与えられ、冗長化符号処理を行い、ｎ＋１ビットのデータＲＤｉｎに変換して出力する。冗長化符号処理については後述する。インバータ３は冗長化符号回路１の出力が与えられ、各ビットの値を反転して出力する。
【００１６】
セレクタ４は、冗長化符号回路１の出力及びインバータ３の出力が与えられ、選択信号Ｓｅｌに基づいていずれか一方を選択してメモリ７へ出力する。
【００１７】
メモリ７はランダムアクセス可能な不揮発性メモリであり、書き込み又は読み出しを行うメモリの番地を指定する複数ビットのアドレス信号Ａｄｄｒと、書き込みのタイミングを指示する書き込み信号ＭＷｒｉｔｅが与えられる。セレクタ４から出力されたデータＭＤｉｎが、アドレス信号Ａｄｄｒで指定された番地に書き込み信号ＭＷｒｉｔｅに基づくタイミングで書き込まれる。
【００１８】
比較器５は、メモリ７から読み出されたｎ＋１ビットのデータＲＤｏｕｔと、冗長化符号回路１の出力ＲＤｉｎとを比較し、比較結果を示す比較結果信号Ｍａｔｃｈを書き込み制御回路６へ出力する。書き込み制御回路６は比較結果信号Ｍａｔｃｈの値に基づいて、選択信号Ｓｅｌを出力する。また、書き込み制御回路６は書き込み信号ＭＷｒｉｔｅを出力する。
【００１９】
冗長化復号回路２はメモリ７から読み出されたｎ＋１ビットのデータＲＤｏｕｔが与えられ、冗長化復号処理を行い、ｎビットのデータＤｏｕｔに変換して出力する。
【００２０】
ｎ＝８を例として、冗長化符号処理及び冗長化復号処理について説明する。図２に示すように、冗長化符号回路１は８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７が与えられ、冗長化符号処理を行い、９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を出力する。
【００２１】
冗長化符号処理は図３に示すような論理式で表すことができ、冗長化符号回路１は図４に示すようなＸＯＲ素子１１〜１８を有する論理回路で構成することができる。出力するデータのビットｘ０として０が出力される。ＸＯＲ素子１１には０とビットｄ０が与えられ、その出力がビットｘ１となる。
【００２２】
ＸＯＲ素子１２にはＸＯＲ素子１１の出力とビットｄ１とが与えられ、その出力がビットｘ２となる。以下同様に、ＸＯＲ素子ｋ（１３≦ｋ≦１８）にはＸＯＲ素子ｋ−１の出力とビットｄｋ−１１とが与えられ、その出力がビットｘｋ−１０となる。
【００２３】
図５に示すように、冗長化復号回路２はメモリ７から読み出された９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８が与えられ、冗長化復号処理を行い、８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７を出力する。
【００２４】
冗長化復号処理は図６に示すような論理式で表すことができ、冗長化符号回路２は図７に示すようなＸＯＲ素子２１〜２８を有する論理回路で構成することができる。ＸＯＲ素子２１にはビットｘ０とｘ１とが与えられ、その出力がビットｄ０となる。
【００２５】
以下同様に、ＸＯＲ素子ｊ（２２≦ｊ≦２８）にはビットｘｊ−２１とｘｊ−２０とが与えられ、その出力がビットｄｊ−２１となる。
【００２６】
図３、図６に示す論理式から分かるように、８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に対して冗長化符号処理を行って得られる９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を冗長化復号処理すると、元の８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に戻すことが出来る。
【００２７】
また、９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８の各ビットの否定をとって（各ビットを反転して）から冗長化復号処理しても、元の８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に戻すことが出来る。
【００２８】
例えば８ビットのデータが０１１０００１１であったとする。この値を図４に示す冗長化符号回路に与えると、９ビットのデータ００１００００１０が出力される。この００１００００１０を図７に示す冗長化復号回路に与えると、その出力は０１１０００１１となり、元のデータに戻る。
【００２９】
また、９ビットのデータ００１００００１０の各ビットの否定をとった１１０１１１１０１を図７に示す冗長化復号回路に与えても、その出力は０１１０００１１となり、元のデータに戻る。
【００３０】
冗長化符号処理後の９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を記憶するメモリセルのうち、いずれか１つが常に０（又は１）しか読み出せない不良メモリセルであったとしても、その不良メモリセルに記憶させるビットの値が０（又は１）の場合はｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を書き込み、不良メモリセルに記憶させるビットの値が１（又は０）の場合はｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８の各ビットの否定をとったものを書き込むようにすることで、不良メモリセルに記憶させる値と不良メモリセルから読み出せる値とを一致させることができる。
【００３１】
メモリから読み出されるデータがｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８、又はｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８の各ビットの否定をとったもののいずれであっても、冗長化復号処理により同一のデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に戻すことができるため、正しいデータの読み出しが可能となる。
【００３２】
例えば、冗長化符号処理後の９ビットのデータ００１００００１０を記憶するメモリセルのうち、左から３ビット目のメモリセルが０しか読み出せない不良メモリセルであった場合、メモリ７には各ビットの否定をとった１１０１１１１０１を書き込んでおけば、冗長化復号処理により、正しいデータを読み出すことができる。
【００３３】
本発明の実施形態によるメモリシステムは、マイクロプロセッサ等のハードウェアに接続して、データの書き込みや読み出しを行う。このようなメモリシステムを用いたデータ書き込み方法を図８に示すフローチャートを用いて説明する。
【００３４】
ここでは、マイクロプロセッサがメモリシステムにデータを書き込む場合を例に説明するが、マイクロプロセッサ以外のハードウェアがデータを書き込む場合も同様である。マイクロプロセッサはメモリシステムにデータを書き込むために、書き込みたいアドレスをメモリシステムのアドレス信号Ａｄｄｒに出力し、書き込みたいデータをメモリシステムのデータ信号Ｄｉｎに出力する。そして、マイクロプロセッサはメモリシステムの書き込み信号Ｗｒｉｔｅに対する出力を論理値０から１に変化させることで、メモリシステムの書き込み処理を開始させる。
【００３５】
（ステップＳ１００）マイクロプロセッサから、アドレス信号Ａｄｄｒにより、メモリ７へデータの書き込み先となるアドレスＡが与えられる。また、マイクロプロセッサから、冗長化符号回路１へｎビットのデータＤｉｎが与えられる。
【００３６】
（ステップＳ１０１）冗長化符号回路１により冗長化符号処理が行われ、ｎ＋１ビットのデータＲＤｉｎが出力される。
【００３７】
（ステップＳ１０２）セレクタ４がデータＲＤｉｎを選択するように、書き込み制御回路６から選択信号Ｓｅｌが出力される。さらに、書き込み制御回路６がメモリ７への書き込み信号ＭＷｒｉｔｅを論理値０から１へ変化させてメモリ７へ書き込みを指示することで、メモリ７のアドレスＡにデータＲＤｉｎが書き込まれる。
【００３８】
（ステップＳ１０３）メモリ７のアドレスＡからデータＲＤｏｕｔを読み出す。
【００３９】
（ステップＳ１０４）比較器５においてデータＲＤｉｎとデータＲＤｏｕｔが比較され、比較結果を示す比較結果信号Ｍａｔｃｈが出力される。書き込み制御回路６は、比較結果信号Ｍａｔｃｈが真、すなわちデータＲＤｉｎとデータＲＤｏｕｔが一致、の場合は、データがメモリ７へ正しく書き込めていると判定し、書き込み動作を終了する。
【００４０】
比較結果信号Ｍａｔｃｈが偽、すなわちデータＲＤｉｎとデータＲＤｏｕｔが不一致、の場合は、ステップＳ１０５へ進む。
【００４１】
（ステップＳ１０５）セレクタ４がインバータ３の出力、すなわちデータＲＤｉｎの各ビットの否定をとった値“〜ＲＤｉｎ”、を選択するように、書き込み制御回路６から選択信号Ｓｅｌが出力される。さらに、書き込み制御回路６がメモリ７への書き込み信号ＭＷｒｉｔｅを論理値０から１に変化させてメモリ７へ書き込みを指示することで、メモリ７のアドレスＡにデータ“〜ＲＤｉｎ”が書き込まれる。
【００４２】
ステップＳ１０４で比較結果が一致している場合のタイミングチャートは図９に示すようなものとなり、比較結果が不一致である場合のタイミングチャートは図１０に示すようなものとなる。
【００４３】
ステップＳ１０４で比較結果信号Ｍａｔｃｈが真の場合に、データがメモリ７へ正しく書き込めていると判断した場合、書き込み動作を終了せずに、データＲＤｉｎを再度書き込むように実施することも可能である。
【００４４】
また、比較器５はメモリ７から読み出されたデータＲＤｏｕｔと冗長化復号回路１の出力ＲＤｉｎとを比較するのではなく、メモリ７から読み出されたデータＲＤｏｕｔとインバータ３の出力〜ＲＤｉｎとを比較するようにしてもよい。この場合、ステップＳ１０２ではインバータ３の出力からＲＤｉｎがメモリ７に書き込まれる。そしてステップＳ１０４でデータ〜ＲＤｉｎとデータＲＤｏｕｔが比較され、不一致の場合はステップＳ１０５でデータＲＤｉｎがメモリ７に書き込まれる。
【００４５】
次に、データ読み出し方法を図１１に示すフローチャートを用いて説明する。マイクロプロセッサはメモリシステムからデータを読み出すために、読み出したいアドレスをメモリシステムのアドレス信号Ａｄｄｒに出力することで、メモリシステムの読み出し処理を開始させる。
【００４６】
（ステップＳ２００）マイクロプロセッサから、アドレス信号ＡｄｄｒによりアドレスＡが与えられる。
【００４７】
（ステップＳ２０１）メモリ７のアドレスＡからｎ＋１ビットのデータＲＤｏｕｔが読み出される。
【００４８】
（ステップＳ２０２）データＲＤｏｕｔが冗長化復号回路２に与えられる。
【００４９】
（ステップＳ２０３）冗長化復号処理が行われ、ｎビットのデータＤｏｕｔがメモリ７のアドレスＡのデータとして出力される。
【００５０】
冗長化符号処理、冗長化復号処理を用いることで、メモリ７のｎ＋１ビット分のメモリセル中に１ビットの不良メモリセルが存在していても、データの読み書きを正しく行うことができる。ここで、ｎの値は、メモリ７内に不良メモリセルが多いときは小さな値に設定し、不良メモリセルが少ない場合は大きな値に設定することができる。
【００５１】
上述のようなメモリアクセス方法により、通常のＥＣＣよりも高い効率で不良メモリセルを救済することができる。例えば、本実施形態によるメモリアクセス方法ではｎ＝８とした場合、８ビットのデータに対して冗長化符号処理を行い９ビットとすることで、９ビット分のメモリセルのうち、１ビットの不良メモリセルを救済できる。つまり、８ビットのデータに１ビットの冗長ビットを付加することで１ビットの不良メモリセルを救済できる。
【００５２】
一方、データビットと冗長ビットの比率が上述の例と等しい、６４ビットのデータに８ビットの冗長ビットを付加する１誤り訂正２誤り検出符号（SECDED:Single Error Correction Double Error Detection）を用いる場合は、７２ビットのメモリセルのうち、１ビットの不良メモリセルしか救済することができない。
【００５３】
本実施形態ではメモリへの書き込み時に、メモリ７への最大２回の書き込みと１回の読み出しが必要となるため、書き込みが１回で済む自己参照読み出しと比較して、書き込みの速度は低下する。
【００５４】
しかし、本実施形態ではメモリからの読み出し時に１回の読み出しだけで済むのに対し、自己参照読み出しは２回の読み出し及び２回の書き込みが必要になるので、読み出し速度を高速化できる。
【００５５】
一般に、メモリの書き込みは読み出しよりも頻度が少なく、読み出しが高速である方が、メモリへの総アクセス時間を低減し、メモリを効率良く使用することができる。
【００５６】
このように、本実施形態によるメモリシステムにより、電気的に書き替え可能なメモリの不良メモリセルを高効率に救済し、かつメモリへのアクセス時間を低減してメモリを効率良く使用することができる。
【００５７】
上記実施形態では、メモリ７の読み書きのデータ幅と、冗長化符号処理して記憶する単位が同じであったが、異なっていてもよい。例えば、読み書きのデータ幅が１６ビットで、冗長化処理の単位が８ビットの場合は、図１２に示すように、１６ビットのデータを上位８ビットと下位８ビットに分割し、２つの冗長化処理ブロック１０ａ、１０ｂに与える。ブロック毎に冗長化符号回路１ａ、１ｂで冗長化符号処理を行い、メモリ７に書き込む。
【００５８】
そしてメモリ７に書き込んだデータと、メモリ７から読み出したデータとを比較器５ａ、５ｂで比較し、いずれのブロックにおいても一致していれば書き込み動作を終了する。いずれか一方のブロックで不一致の場合、不一致となったブロックはインバータ３の出力をセレクタ４で選択して出力し、メモリ７に書き込む。また、一致していた方のブロックは同じ値を再度メモリ７に書き込むようにする。
【００５９】
このように、メモリ７の読み書きのデータ幅と、冗長化処理の単位が異なる場合は、冗長化処理ブロックを複数設けることで、上記実施形態と同様の効果を得ることができる。
【００６０】
上記実施形態における冗長化符号回路は図４に示すような構成に限定されない。例えば、図４に示す構成から冗長な論理素子であるＸＯＲ素子１１を省き、図１３に示すような構成にしてもよい。
【００６１】
また、冗長化符号回路では、図１４に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図１５（ａ）、（ｂ）に示すような構成の論理回路で実現可能である。
【００６２】
また、図１６に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図１７（ａ）、（ｂ）に示すような構成の論理回路で実現可能である。また、図１８に示すような論理式で表される冗長化符号処理を行ってもよい。このような処理を行う冗長化符号回路は図１９（ａ）、（ｂ）に示すような構成の論理回路で実現可能である。
【００６３】
図１７や図１９に示す冗長化符号回路は、図１３や図１５に示す冗長化符号回路と比較して、ＸＯＲ素子の段数が少ないため、高速に動作することができる。
【００６４】
冗長化符号処理を行ったｎ＋１ビットのデータのうち０又は１に固定する１ビットは１ビット目〜ｎ＋１ビット目のいずれでもよい。０又は１に固定するビットは、ｎ＋１ビットの中でより中央のビットである程、冗長化符号回路における論路素子の段数が少なくなり、高速動作が可能となる。
【００６５】
上述した実施の形態は一例であって限定的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態によるメモリシステムの概略構成図である。
【図２】冗長化符号回路の処理の一例を示す図である。
【図３】冗長化符号処理の一例を示す論理式である。
【図４】冗長化符号回路の一例を示す回路図である。
【図５】冗長化復号回路の処理の一例を示す図である。
【図６】冗長化復号処理の一例を示す論理式である。
【図７】冗長化復号回路の一例を示す回路図である。
【図８】同実施形態によるデータ書き込み方法のフローチャートである。
【図９】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図１０】同実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図１１】同実施形態によるデータ読み出し方法のフローチャートである。
【図１２】変形例によるメモリシステムの概略構成図である。
【図１３】変形例による冗長化符号回路の回路図である。
【図１４】変形例による冗長化符号処理を示す論理式である。
【図１５】変形例による冗長化符号回路の回路図である。
【図１６】変形例による冗長化符号処理を示す論理式である。
【図１７】変形例による冗長化符号回路の回路図である。
【図１８】変形例による冗長化符号処理を示す論理式である。
【図１９】変形例による冗長化符号回路の回路図である。
【符号の説明】
【００６７】
１  冗長化符号回路
２  冗長化復号回路
３  インバータ
４  セレクタ
５  比較器
６  書き込み制御回路
７  メモリ
【図１】
0005492329.tif 000002
【図２】
0005492329.tif 000003
【図３】
0005492329.tif 000004
【図４】
0005492329.tif 000005
【図５】
0005492329.tif 000006
【図６】
0005492329.tif 000007
【図７】
0005492329.tif 000008
【図８】
0005492329.tif 000009
【図９】
0005492329.tif 000010
【図１０】
0005492329.tif 000011
【図１１】
0005492329.tif 000012
【図１２】
0005492329.tif 000013
【図１３】
0005492329.tif 000014
【図１４】
0005492329.tif 000015
【図１５】
0005492329.tif 000016
【図１６】
0005492329.tif 000017
【図１７】
0005492329.tif 000018
【図１８】
0005492329.tif 000019
【図１９】
0005492329.tif 000020