(57)【要約】【課題】  一般の安価なメモリモジュールを使用でき、また、先読みをすることなくバイト単位での書込みを行うことができ、また、メモリモジュールを構成する１つのメモリチップが故障した場合に訂正が可能なメモリの誤り訂正方法及びそれを用いたメモリコントローラを提供することを目的とする。【解決手段】  マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、所定ビット数の書込みデータから所定ビット数の訂正符号を生成し、メモリモジュールの書込みアドレスに所定ビット数の書込みデータを書き込んだのち、書込みアドレスの次のアドレスに所定ビット数の訂正符号を書込み、マスターデバイスから読出しアドレスを供給され、メモリモジュールの読出しアドレスから所定ビット数のデータを読出したのち、読出しアドレスの次のアドレスから所定ビット数の訂正符号を読出し、所定ビット数の読出しデータと所定ビット数の訂正符号から所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給する。【選択図】      図４
2005182613.tif 000002
【特許請求の範囲】
【請求項１】
マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、前記所定ビット数の書込みデータから所定ビット数の訂正符号を生成し、
メモリモジュールの前記書込みアドレスに前記所定ビット数の書込みデータを書き込んだのち、前記書込みアドレスの次のアドレスに前記所定ビット数の訂正符号を書込み、
前記マスターデバイスから読出しアドレスを供給され、前記メモリモジュールの前記読出しアドレスから所定ビット数のデータを読出したのち、前記読出しアドレスの次のアドレスから前記所定ビット数の訂正符号を読出し、
前記所定ビット数の読出しデータと前記所定ビット数の訂正符号から前記所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給し、
誤りが検出された場合に誤り訂正を行った前記所定ビット数の読出しデータと前記所定ビット数の訂正符号を前記メモリモジュールに再び書込む
ことを特徴とするメモリの誤り訂正方法。
【請求項２】
マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、前記所定ビット数の書込みデータから所定ビット数の訂正符号を生成する訂正符号生成手段と、
メモリモジュールの前記書込みアドレスに前記所定ビット数の書込みデータを書き込んだのち、前記書込みアドレスの次のアドレスに前記所定ビット数の訂正符号を書込む時多重書込み手段と、
前記マスターデバイスから読出しアドレスを供給され、前記メモリモジュールの前記読出しアドレスから所定ビット数のデータを読出したのち、前記読出しアドレスの次のアドレスから前記所定ビット数の訂正符号を読出す時分割読出し手段と、
前記所定ビット数の読出しデータと前記所定ビット数の訂正符号から前記所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給する誤り訂正手段と、
誤りが検出された場合に誤り訂正を行った前記所定ビット数の読出しデータと前記所定ビット数の訂正符号を前記メモリモジュールに再び書込む再書込み手段を
有することを特徴とするメモリコントローラ。
【請求項３】
請求項２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを１バイト単位で各２ビットの４つのデータとし、前記１バイト単位で各２ビットの４つのデータから各２ビットの４つの訂正符号を生成して、前記各２ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
【請求項４】
請求項２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを８バイト単位で各１６ビットの４つのデータとし、前記８バイト単位で各１６ビットの４つのデータから各１６ビットの４つの訂正符号を生成して、前記各１６ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
【請求項５】
請求項２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを４バイト単位で各８ビットの４つのデータとし、前記４バイト単位で各８ビットの４つのデータから各８ビットの４つの訂正符号を生成して、前記各８ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの誤り訂正方法及びそれを用いたメモリコントローラに関し、特に、記憶データの誤りを訂正するメモリの誤り訂正方法及びそれを用いたメモリコントローラに関する。
【背景技術】
【０００２】
半導体メモリでは、宇宙線等の影響により僅かな確率であるが記憶データが変化するおそれがあり、このような記憶データの変化を検出し訂正するために誤り訂正機能を設けたメモリ装置がある。
【０００３】
図１は、従来の誤り訂正機能付きメモリ装置の一例のブロック図を示す。同図中、ＣＰＵ等のマスターデバイス１１がメモリへのアクセスを行う際は、メモリコントローラ１２を介してＥＣＣ付きメモリモジュール１３にアクセスする。
【０００４】
メモリコントローラ１２はライト時に、６４ビットのライトデータに８ビットのＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）データを生成し、データバスとは異なるＥＣＣバスを介してＥＣＣデータをライトデータと共にＥＣＣ付きメモリモジュール１３に書込み、リード時に、ＥＣＣ付きメモリモジュール１３からリードデータとＥＣＣデータを読出し、この読出したＥＣＣデータを用いてリードデータの誤り訂正を行う。なお、本明細書ではＥＣＣはパリティを含むものとする。
【０００５】
また、他の誤り訂正機能付きメモリ装置として、例えば特許文献１に記載のものがある。このものは、図２に示すように、メモリを１３０ワードで構成されるセクタ単位に分割し、この１つのセクタの中に１２８ワードのデータとこのデータより算出する２ワードのＥＣＣデータを格納する構成である。
【特許文献１】特開平６−７５８６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＥＣＣ付きメモリモジュール１３はＥＣＣを持たない汎用のメモリモジュールに対して高価である。また、図１のＥＣＣ付きメモリモジュールを用いた装置や図２のメモリ割当て構成においては、１アクセスの最小単位で、誤り訂正できるビット数は１ビットであり、２ビット以上の誤りビットは訂正することができずメモリエラーとなり、最悪の場合システムを停止させるしかないという問題があった。
【０００７】
また、ＣＰＵからメモリに対しバイトアクセス、ワードアクセス、ダブルワードアクセス等の部分アクセスが行われるが、ライト時の部分アクセスに対してはメモリの書込み操作を行う前に読出し操作を行って書込みを行わない領域のデータを一旦保持しておき、次にライトデータと書込みを行わない領域のデータを共にメモリに書込む必要が有り、レスポンスの低下を生じるという問題があった。
【０００８】
本発明は、上記の点に鑑みなされたものであり、一般の安価なメモリモジュールを使用でき、また、先読みをすることなくバイト単位での書込みを行うことができ、また、メモリモジュールを構成する１つのメモリチップが故障した場合に訂正が可能なメモリの誤り訂正方法及びそれを用いたメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１，２に記載の発明は、マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、前記所定ビット数の書込みデータから所定ビット数の訂正符号を生成し、
メモリモジュールの前記書込みアドレスに前記所定ビット数の書込みデータを書き込んだのち、前記書込みアドレスの次のアドレスに前記所定ビット数の訂正符号を書込み、
前記マスターデバイスから読出しアドレスを供給され、前記メモリモジュールの前記読出しアドレスから所定ビット数のデータを読出したのち、前記読出しアドレスの次のアドレスから前記所定ビット数の訂正符号を読出し、
前記所定ビット数の読出しデータと前記所定ビット数の訂正符号から前記所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給し、
誤りが検出された場合に誤り訂正を行った前記所定ビット数の読出しデータと前記所定ビット数の訂正符号を前記メモリモジュールに再び書込むことにより、一般の安価なメモリモジュールを使用できる。
【００１０】
請求項３に記載の発明では、訂正符号生成手段は、前記所定ビット数の書込みデータを１バイト単位で各２ビットの４つのデータとし、前記１バイト単位で各２ビットの４つのデータから各２ビットの４つの訂正符号を生成して、前記各２ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成することにより、先読みをすることなく８ビット単位での書込みを行うことができる。
【００１１】
請求項４に記載の発明では、訂正符号生成手段は、前記所定ビット数の書込みデータを８バイト単位で各１６ビットの４つのデータとし、前記８バイト単位で各１６ビットの４つのデータから各１６ビットの４つの訂正符号を生成して、前記各１６ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成することにより、メモリモジュールが１６ビットデータ幅の４つのメモリチップで構成されている場合に１つのメモリチップが故障しても訂正することができる。
【００１２】
請求項５に記載の発明では、訂正符号生成手段は、前記所定ビット数の書込みデータを４バイト単位で各８ビットの４つのデータとし、前記４バイト単位で各８ビットの４つのデータから各８ビットの４つの訂正符号を生成して、前記各８ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成することにより、先読みをすることなく１６ビット単位での書込みを行うことができ、また、メモリモジュールが８ビットデータ幅の４つのメモリチップで構成されている場合に１つのメモリチップが故障しても訂正することができる。
【発明の効果】
【００１３】
請求項１，２に記載の発明によれば、一般の安価なメモリモジュールを使用できる。
【００１４】
請求項３に記載の発明によれば、先読みをすることなく８ビット単位での書込みを行うことができる。
【００１５】
請求項４に記載の発明によれば、メモリモジュールが１６ビットデータ幅の４つのメモリチップで構成されている場合に１つのメモリチップが故障しても訂正することができる。
【００１６】
請求項５に記載の発明によれば、先読みをすることなく１６ビット単位での書込みを行うことができ、また、メモリモジュールが８ビットデータ幅の４つのメモリチップで構成されている場合に１つのメモリチップが故障しても訂正することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面に基づいて本発明の実施形態について説明する。
【００１８】
図３は、本発明の誤り訂正機能付きメモリ装置の一実施形態のブロック図を示す。同図中、ＣＰＵ等のマスターデバイス２１がメモリへのアクセスを行う際は、メモリコントローラ２２を介して汎用のメモリモジュール２３にアクセスする。メモリモジュール２３は６４ビットを１ワードとしてアクセスされる。
【００１９】
メモリコントローラ２２は、ライト時には、６４ビットのライトデータに６４ビットのＥＣＣデータを生成し、ライトデータをデータバス２４よりメモリモジュール２３に送って書込み、次のタイミングでＥＣＣデータをデータバス２４よりメモリモジュール２３に送って次のアドレスに書き込む。
【００２０】
また、リード時には、メモリモジュール２３からリードデータとＥＣＣデータを時系列で読出し、この読出したＥＣＣデータを用いてリードデータの誤り訂正を行う。
【００２１】
図４は、メモリコントローラ２２の一実施形態のブロック図を示す。同図中、メモリコントローラ２２は、バス制御ブロック４１、書戻しデータアドレス格納バッファ４２、アクセスデータ制御ブロック４３、アクセスデータ制御ブロック４３、装置制御ブロック４４、誤り訂正符号生成ブロック４５、誤り検査訂正ブロック４６、イクスクルーシブオアブロック４７及びメモリ制御ブロック５０から構成されている。
【００２２】
マスターデバイス２１側から取込まれたアドレス及びデータはバス制御ブロック４１でラッチされ、バス制御ブロック４１からアクセスデータ制御ブロック４３に送られる。また、制御信号はバス制御ブロック４１でラッチされて装置制御ブロック４４に送られる。装置制御ブロック４４は、この制御情報を基に各ブロックの制御を行う。
【００２３】
アクセスデータ制御ブロック４３は、バス制御ブロック４１と書戻しデータアドレス格納バッファ４２それぞれから送られるアドレス及びデータの選択を行い、メモリ制御ブロック５０と誤り訂正符号生成ブロック４５へ送る。誤り訂正符号生成ブロック４５は、装置制御ブロック４４からのモード指示に従って訂正符号を生成し保持する。
【００２４】
メモリ制御ブロック５０は、データ時多重部５１とアドレス制御部５２とデータ時分割部５３から構成されており、内部のアドレスやデータと訂正符号の時多重／時分割を行ってメモリモジュール２３とのインタフェースを行う。誤り検査訂正ブロック４６は、メモリ制御ブロック５０から送られるデータ及び訂正符号のチェックを行い、誤り判定と訂正指示信号を生成する。
【００２５】
イクスクルーシブオアブロック４７は、メモリ制御ブロック５０から送られるデータと誤り検査訂正ブロック４６からの訂正指示信号との排他的論理和演算を行ってデータの誤り訂正を行って、バス制御ブロック４１と書戻しデータアドレス格納バッファ４２それぞれに送る。
【００２６】
図５は、メモリコントローラ２２のライトアクセス時のシーケンスを示す。図６は、ライトアクセス時のタイミングチャートを示す。図５において、マスターデバイス２１から送られたアドレス及び１ワード６４ビットのデータをバス制御ブロック４１でラッチしてアクセスデータ制御ブロック４３へ送り、制御信号を装置制御ブロック４４に送る。
【００２７】
装置制御ブロック４４は、アクセスデータ制御ブロック４３にバス制御ブロック４１からのアドレス／データを選択するように指示し、それと共にメモリ制御ブロック５０へのライト指示、バス制御ブロック４１への応答（ＡＣＫ）返送指示を行う。
【００２８】
アクセスデータ制御ブロック４３から送出されたアドレス及びデータはメモリ制御ブロック５０と誤り訂正符号生成ブロック４５で受信され、メモリ制御ブロック５０は、図６（Ｂ）に示すようにメモリモジュール２３をアクティブ化しライト準備を行う。
【００２９】
誤り訂正符号生成ブロック４５は訂正符号を生成してメモリ制御ブロック５０に送る。メモリ制御ブロック５０のデータ時多重部５１は、図６（Ｄ）に示すように、送られたデータと訂正符号を多重してメモリモジュール２３へ送り、アドレス制御部５２で図６（Ｃ）に示すように、データ書込み用のアドレスＮに続いて訂正符号書込み用のアドレスＮ＋１を発生してデータ及び訂正符号の書込みを行う。なお、図６（Ａ）にクロックを示す。
【００３０】
図７は、メモリコントローラ２２のライトアクセス時のシーケンスを示す。図８は、ライトアクセス時のタイミングチャートを示す。図７において、マスターデバイス２１から送られたアドレスはバス制御ブロック４１でラッチしてアクセスデータ制御ブロック４３に送り、制御信号を装置制御ブロック４４に送る。
【００３１】
装置制御ブロック４４は、アクセスデータ制御ブロック４３にバス制御ブロック４１からのアドレスを選択するように指示し、それと共にメモリ制御ブロック５０へのリード指示を行う。
【００３２】
アクセスデータ制御ブロック４３から送られたアドレスは、メモリ制御ブロック５０で受信され、メモリ制御ブロック５０は図８（Ｂ）に示すようにメモリモジュール２３をアクティブ化し、アドレス制御部５２で図８（Ｃ）に示すように、データ読出し用のアドレスＮに続いて訂正符号読出し用のアドレスＮ＋１を発生してデータ及び訂正符号の読出し動作を行う。なお、図８（Ａ）にクロックを示す。
【００３３】
メモリモジュール２３から図８（Ｄ）に示すように読出されたデータ及び訂正符号は、データ時分割部５３にてデータと訂正符号に分離され、誤り検査訂正ブロック４６に送られる。誤り検査訂正ブロック４６ではデータ及び訂正符号を所定演算式にて演算し、誤りが検出された場合は装置制御ブロック４４に通知すると共に、反転指示データを生成してイクスクルーシブオアブロック４７に供給する。イクスクルーシブオアブロック４７では、メモリモジュール２３から読出されたデータと反転指示データの排他的論理和演算を行ってデータの誤り箇所を訂正する。
【００３４】
装置制御ブロック４４は、誤り検査訂正ブロック４６から誤りを検出したとの判定結果を受けると、バス制御ブロック４１にデータ返送指示を送ると共に、書戻しデータアドレス格納バッファ４２に誤りのあったアドレスとデータの格納指示を行う。バス制御ブロック４１は訂正されたデータをマスターデバイス側へ返信する。
【００３５】
書戻しデータアドレス格納バッファ４２は、アドレスとデータが格納されている場合は装置制御ブロック４４へ通知を行い、装置制御ブロック４４は、アクセスデータ制御ブロック４３に対し書戻しデータアドレス格納バッファ４２からのアドレス及びデータを選択するよう指示し、メモリ制御ブロック５０にライト指示を行う。
【００３６】
アクセスデータ制御ブロック４３から送られるアドレス及びデータは、メモリ制御ブロック５０と誤り訂正符号生成ブロック４５で受信され、誤り訂正符号生成ブロック４５は再度訂正符号を生成する。
【００３７】
メモリ制御ブロック５０はアクセスデータ制御ブロック４３から送られたデータと誤り訂正符号生成ブロック４５からの訂正符号をデータ時多重部５１で多重しメモリモジュール２３に送り、アドレス制御部５２で図８（Ｃ）に示すように、データ書込み用のアドレスＮに続いて訂正符号書込み用のアドレスＮ＋１を発生してデータ及び訂正符号の再書込みを行う。
【００３８】
図９は、メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第１実施形態を示す。ここでは、１バイト単位でデータと対応する訂正符号を管理しており、Ｄ１，Ｄ２，Ｄ３，Ｄ４と表わされる各２ビットの４つのデータから、ビット毎に（１）〜（４）式を用いて、Ｅ１，Ｅ２，Ｅ３，Ｅ４と表わされる各２ビットの４つの訂正符号を生成し、Ｅ３，Ｅ１，Ｅ２，Ｅ４の順に格納する。なお、ｘｏｒは排他的論理和演算を表わし、図中では丸付き＋で表示している。
【００３９】
Ｄ１  ｘｏｒ  Ｄ３  ｘｏｒ  Ｄ４  ＝  Ｅ１    …（１）
Ｄ１  ｘｏｒ  Ｄ２  ｘｏｒ  Ｄ４  ＝  Ｅ２    …（２）
Ｄ２  ｘｏｒ  Ｄ３  ｘｏｒ  Ｄ４  ＝  Ｅ３    …（３）
Ｄ１  ｘｏｒ  Ｄ２  ｘｏｒ  Ｄ３  ＝  Ｅ４    …（４）
この実施形態では、データと訂正符号は８ビット単位で管理されるため、ライト時の８ビット単位のバイトアクセス、１６ビット単位のワードアクセス、３２ビット単位のダブルワードアクセスのいずれの場合にも、８ビット単位でメモリをコントロールすることが可能となり、一般的なＥＣＣ付きメモリモジュール２３で部分書込みを行う場合の制御で必要とされた前処理としてのリードアクセスを行う必要がなくなり、部分書込みを高速化することができる。
【００４０】
図１０は、メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第２実施形態を示す。ここでは、８バイト単位でデータと対応する訂正符号を管理しており、Ｄ１［００  １５］，Ｄ２［００  １５］，Ｄ３［００  １５］，Ｄ４［００  １５］と表わされる各１６ビットの４つのデータから、ビット毎に（１）〜（４）式を用いて、Ｅ１［００  １５］，Ｅ２［００  １５］，Ｅ３［００  １５］，Ｅ４［００  １５］と表わされる各１６ビットの４つの訂正符号を生成し、Ｅ３，Ｅ１，Ｅ２，Ｅ４の順に格納する。
【００４１】
この実施形態では、メモリモジュール２３を構成するメモリチップが１６ビットデータ幅で構成されている場合、１個のメモリチップが故障した場合でも他のメモリチップの内容で訂正を行うことが可能となる。
【００４２】
図１１は、メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第３実施形態を示す。ここでは、４バイト単位でデータと対応する訂正符号を管理しており、Ｄ１，Ｄ２，Ｄ３，Ｄ４と表わされる各８ビットの４つのデータから、ビット毎に（１）〜（４）式を用いて、Ｅ１，Ｅ２，Ｅ３，Ｅ４と表わされる各８ビットの４つの訂正符号を生成し、Ｅ３，Ｅ１，Ｅ２，Ｅ４の順に格納する。
【００４３】
この実施形態では、データと訂正符号は３２ビット単位で管理されるため、ライト時のダブルワードアクセスの場合に、３２ビット単位でメモリをコントロールすることが可能となり、前処理としてのリードアクセスを行う必要がなくなり、部分書込みを高速化することができ、また、メモリモジュール２３を構成するメモリチップが８ビットデータ幅で構成されている場合、１個のメモリチップが故障した場合でも他のメモリチップの内容で訂正を行うことが可能となる。
【００４４】
図１２は、図９〜図１１で示した格納方法を自由に選択できるように構成した誤り訂正符号生成ブロック４５の一実施形態のブロック図を示す。同図中、配列変換スイッチ６１にはアクセスデータ制御ブロック４３から６４ビットのデータ［ＤＱ０  ６３］が供給される。また、配列変換スイッチ６１は装置制御ブロック４４からモード１，２，３の何れかを指示する訂正符号配列モード変換制御信号を供給されている。
【００４５】
配列変換スイッチ６１は、この制御信号がモード１を指示する場合には、データ［ＤＱ０  ６３］を図９に示すように１バイト単位で各２ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティ生成回路６２に供給する。また、制御信号がモード２を指示する場合には、データ［ＤＱ０  ６３］を図１０に示すように各１６ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティ生成回路６２に供給し、制御信号がモード３を指示する場合には、データ［ＤＱ０  ６３］を図１１に示すように４バイト単位で各８ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティ生成回路６２に供給する。
【００４６】
パリティ生成回路６２は上記データＤ１，Ｄ２，Ｄ３，Ｄ４からビット毎に（１）〜（４）式を用いて、訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４を生成し、配列変換スイッチ６３に供給する。
【００４７】
配列変換スイッチ６３は、訂正符号配列モード変換制御信号を供給されており、この制御信号がモード１を指示する場合には、図９に示すように１バイト単位で各２ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４をＥ３，Ｅ１，Ｅ２，Ｅ４の順に配列変換して訂正符号データ［ＤＱ０  ６３］を出力する。
【００４８】
また、制御信号がモード２を指示する場合には、図１０に示すように各１６ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４をＥ３，Ｅ１，Ｅ２，Ｅ４の順に配列変換して訂正符号データ［ＤＱ０  ６３］を出力し、制御信号がモード３を指示する場合には、図１１に示すように４バイト単位で各８ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４をＥ３，Ｅ１，Ｅ２，Ｅ４の順に配列変換して訂正符号データ［ＤＱ０  ６３］として出力する。配列変換スイッチ６３の出力する訂正符号データ［ＤＱ０  ６３］はメモリ制御ブロック５０に供給される。
【００４９】
図１３は、図９〜図１１で示した格納方法を自由に選択できるように構成した誤り検査訂正ブロック４６の一実施形態のブロック図を示す。同図中、配列変換スイッチ７１にはメモリ制御ブロック５０から６４ビットのデータ［ＤＱ０  ６３］が供給され、配列変換スイッチ７２にはメモリ制御ブロック５０から６４ビットの訂正符号データ［ＤＱ０  ６３］が供給される。
【００５０】
また、配列変換スイッチ７１，７２は装置制御ブロック４４からモード１，２，３の何れかを指示する訂正符号配列モード変換制御信号を供給されている。
【００５１】
配列変換スイッチ７１は、この制御信号がモード１を指示する場合には、データ［ＤＱ０  ６３］を図９に示すように１バイト単位で各２ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティチェック回路７３に供給する。また、制御信号がモード２を指示する場合には、データ［ＤＱ０  ６３］を図１０に示すように各１６ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティチェック回路７３に供給し、制御信号がモード３を指示する場合には、データ［ＤＱ０  ６３］を図１１に示すように４バイト単位で各８ビットのデータＤ１，Ｄ２，Ｄ３，Ｄ４に配列変換してパリティチェック回路７３に供給する。
【００５２】
配列変換スイッチ７２は、この制御信号がモード１を指示する場合には、訂正符号データ［ＤＱ０  ６３］を１バイト単位で各２ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４に配列変換してパリティチェック回路７３に供給する。また、制御信号がモード２を指示する場合には、データ［ＤＱ０  ６３］を各１６ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４に配列変換してパリティチェック回路７３に供給し、制御信号がモード３を指示する場合には、データ［ＤＱ０  ６３］を図１１に示すように４バイト単位で各８ビットの訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４に配列変換してパリティチェック回路７３に供給する。
【００５３】
パリティチェック回路７３は上記データＤ１，Ｄ２，Ｄ３，Ｄ４と訂正符号Ｅ１，Ｅ２，Ｅ３，Ｅ４からビット毎に（５）〜（８）式を用いて、パリティＰ１，Ｐ２，Ｐ３，Ｐ４を生成し、デコーダ７４に供給する。
【００５４】
Ｄ１  ｘｏｒ  Ｄ３  ｘｏｒ  Ｄ４  ｘｏｒ  Ｅ１  ＝  Ｐ１  …（５）
Ｄ１  ｘｏｒ  Ｄ２  ｘｏｒ  Ｄ４  ｘｏｒ  Ｅ２  ＝  Ｐ２  …（６）
Ｄ２  ｘｏｒ  Ｄ３  ｘｏｒ  Ｄ４  ｘｏｒ  Ｅ３  ＝  Ｐ３  …（７）
Ｄ１  ｘｏｒ  Ｄ２  ｘｏｒ  Ｄ３  ｘｏｒ  Ｅ４  ＝  Ｐ４  …（８）
デコーダ７４は、パリティＰ１，Ｐ２，Ｐ３，Ｐ４を用いてテーブル７５を参照し、誤りがあれば誤りビット箇所を特定する。デコーダ７４は、この誤りビット箇所で値１となり、それ以外のビットが値０となる反転指示データＸＤ１，ＸＤ２，ＸＤ３，ＸＤ４を生成して配列変換スイッチ７６に供給すると共に、誤りが１ビットエラーか２ビットエラーの場合にそのエラー発生状況を装置制御ブロック４４に通知する。
【００５５】
配列変換スイッチ７６は、訂正符号配列モード変換制御信号を供給されており、この制御信号がモード１を指示する場合には、１バイト単位で各２ビットの反転指示データＸＤ１，ＸＤ２，ＸＤ３，ＸＤ４を配列変換して反転指示データ［ＮＧ０  ６３］を出力する。また、制御信号がモード２を指示する場合には、各１６ビットの反転指示データＸＤ１，ＸＤ２，ＸＤ３，ＸＤ４を配列変換して反転指示データ［ＮＧ０  ６３］を出力し、制御信号がモード３を指示する場合には、４バイト単位で各８ビットの反転指示データＸＤ１，ＸＤ２，ＸＤ３，ＸＤ４を配列変換して反転指示データ［ＮＧ０  ６３］を出力する。配列変換スイッチ７６の出力する反転指示データ［ＮＧ０  ６３］はイクスクルーシブオアブロック４７に供給される。
【００５６】
本実施形態では、汎用品であるＥＣＣを持たないメモリモジュール２３を使用できることから、メモリモジュール２３の価格を安くすることが可能となる。また、メモリコントローラ２２とメモリモジュール２３間で訂正符号データ用のバス線が不要であるため、バス配線パターンを減らすことができる。
【００５７】
また、６４ビット幅のデータ［ＤＱ０  ６３］に対し、最大１６ビットまでのビットエラーの誤り訂正が可能となる。また、誤り訂正符号生成ブロック４５、誤り検査訂正ブロック４６それぞれは回路規模が小さいため、パイプライン処理の必要が無く、マスターデバイス２１へのレスポンスが速く、使用されるメモリモジュール２３のメモリチップのデータ幅が１６ビット以下であれば、１つのメモリチップが故障した場合でも他のメモリチップのデータを用いて訂正が可能となる。
【００５８】
なお、誤り訂正符号生成ブロック４５が請求項または付記に記載の訂正符号生成手段に対応し、データ時多重部５１とアドレス制御部５２が時多重書込み手段に対応し、アドレス制御部５２とデータ時分割部５３が時分割読出し手段に対応し、誤り検査訂正ブロック４６とイクスクルーシブオアブロック４７が誤り訂正手段に対応し、書戻しデータアドレス格納バッファ４２とメモリ制御ブロック５０が再書込み手段に対応し、パリティチェック回路７３とデコーダ７４が誤り検出回路に対応する。
（付記１）
マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、前記所定ビット数の書込みデータから所定ビット数の訂正符号を生成し、
メモリモジュールの前記書込みアドレスに前記所定ビット数の書込みデータを書き込んだのち、前記書込みアドレスの次のアドレスに前記所定ビット数の訂正符号を書込み、
前記マスターデバイスから読出しアドレスを供給され、前記メモリモジュールの前記読出しアドレスから所定ビット数のデータを読出したのち、前記読出しアドレスの次のアドレスから前記所定ビット数の訂正符号を読出し、
前記所定ビット数の読出しデータと前記所定ビット数の訂正符号から前記所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給し、
誤りが検出された場合に誤り訂正を行った前記所定ビット数の読出しデータと前記所定ビット数の訂正符号を前記メモリモジュールに再び書込む
ことを特徴とするメモリの誤り訂正方法。
（付記２）
マスターデバイスから書込みアドレスと所定ビット数の書込みデータを供給され、前記所定ビット数の書込みデータから所定ビット数の訂正符号を生成する訂正符号生成手段と、
メモリモジュールの前記書込みアドレスに前記所定ビット数の書込みデータを書き込んだのち、前記書込みアドレスの次のアドレスに前記所定ビット数の訂正符号を書込む時多重書込み手段と、
前記マスターデバイスから読出しアドレスを供給され、前記メモリモジュールの前記読出しアドレスから所定ビット数のデータを読出したのち、前記読出しアドレスの次のアドレスから前記所定ビット数の訂正符号を読出す時分割読出し手段と、
前記所定ビット数の読出しデータと前記所定ビット数の訂正符号から前記所定ビット数の読出しデータの誤り検出及び訂正を行って前記マスターデバイスに供給する誤り訂正手段と、
誤りが検出された場合に誤り訂正を行った前記所定ビット数の読出しデータと前記所定ビット数の訂正符号を前記メモリモジュールに再び書込む再書込み手段を
有することを特徴とするメモリコントローラ。
（付記３）
付記２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを１バイト単位で各２ビットの４つのデータとし、前記１バイト単位で各２ビットの４つのデータから各２ビットの４つの訂正符号を生成して、前記各２ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
（付記４）
付記２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを８バイト単位で各１６ビットの４つのデータとし、前記８バイト単位で各１６ビットの４つのデータから各１６ビットの４つの訂正符号を生成して、前記各１６ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
（付記５）
付記２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、前記所定ビット数の書込みデータを４バイト単位で各８ビットの４つのデータとし、前記４バイト単位で各８ビットの４つのデータから各８ビットの４つの訂正符号を生成して、前記各８ビットの４つの訂正符号を配列変換して所定ビット数の訂正符号を生成する
ことを特徴とするメモリコントローラ。
（付記６）
付記２記載のメモリコントローラにおいて、
前記訂正符号生成手段は、
第１モードでは前記所定ビット数の書込みデータを１バイト単位で各２ビットの４つのデータとし、第２モードでは前記所定ビット数の書込みデータを８バイト単位で各１６ビットの４つのデータとし、第３モードでは前記所定ビット数の書込みデータを４バイト単位で各８ビットの４つのデータとする第１配列変換スイッチと、
前記４つのデータから４つの訂正符号を生成するパリティ生成回路と、
第１モードでは前記各２ビットの４つの訂正符号を配列変換し、第２モードでは前記各１６ビットの４つの訂正符号を配列変換し、第３モードでは前記各８ビットの４つの訂正符号を配列変換する第２配列変換スイッチを
有することを特徴とするメモリコントローラ。
（付記７）
付記６記載のメモリコントローラにおいて、
前記誤り訂正手段は、
第１モードでは前記所定ビット数の読出しデータを１バイト単位で各２ビットの４つのデータとし、第２モードでは前記所定ビット数の読出しデータを８バイト単位で各１６ビットの４つのデータとし、第３モードでは前記所定ビット数の読出しデータを４バイト単位で各８ビットの４つのデータとする第３配列変換スイッチと、
第１モードでは前記所定ビット数の訂正符号を１バイト単位で各２ビットの４つの訂正符号とし、第２モードでは前記所定ビット数の訂正符号を８バイト単位で各１６ビットの４つの訂正符号とし、第３モードでは前記所定ビット数の訂正符号を４バイト単位で各８ビットの４つの訂正符号とする第４配列変換スイッチと、
前記４つのデータと４つの訂正符号から誤り検出を行い、誤り検出結果から誤りビット箇所を反転するための４つの反転指示データを出力する誤り検出回路と、
第１モードでは前記各２ビットの４つの反転指示データを配列変換し、第２モードでは前記各１６ビットの４つの反転指示データを配列変換し、第３モードでは前記各８ビットの４つの反転指示データを配列変換する第５配列変換スイッチと、
前記所定ビット数の読出しデータと配列変換された反転指示データの排他的論理和演算を行って誤り訂正を行うイクスクルーシブオア回路を
有することを特徴とするメモリコントローラ。
【図面の簡単な説明】
【００５９】
【図１】従来の誤り訂正機能付きメモリ装置の一例のブロック図である。
【図２】従来の誤り訂正機能付きメモリ装置のセクタ構成を説明するための図である。
【図３】本発明の誤り訂正機能付きメモリ装置の一実施形態のブロック図である。
【図４】メモリコントローラ２２の一実施形態のブロック図である。
【図５】メモリコントローラ２２のライトアクセス時のシーケンスである。
【図６】ライトアクセス時のタイミングチャートである。
【図７】メモリコントローラ２２のライトアクセス時のシーケンスである。
【図８】ライトアクセス時のタイミングチャートである。
【図９】メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第１実施形態を示す図である。
【図１０】メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第２実施形態を示す図である。
【図１１】メモリモジュール２３におけるデータとそれに対応する訂正符号の格納方法の第３実施形態を示す図である。
【図１２】誤り訂正符号生成ブロック４５の一実施形態のブロック図である。
【図１３】誤り検査訂正ブロック４６の一実施形態のブロック図である。
【符号の説明】
【００６０】
２１  マスターデバイス
２２  メモリコントローラ
２３  メモリモジュール
４１  バス制御ブロック
４２  書戻しデータアドレス格納バッファ
４３  アクセスデータ制御ブロック
４４  装置制御ブロック
４５  誤り訂正符号生成ブロック
４６  誤り検査訂正ブロック
４７  イクスクルーシブオアブロック
５０  メモリ制御ブロック
５１  データ時多重部
５２  アドレス制御部
５３  データ時分割部
６１，６３，７１，７２，７６  配列変換スイッチ
６２  パリティ生成回路
７３  パリティチェック回路
７４  デコーダ
７５  テーブル
【図１】
2005182613.tif 000003
【図２】
2005182613.tif 000004
【図３】
2005182613.tif 000005
【図４】
2005182613.tif 000006
【図５】
2005182613.tif 000007
【図６】
2005182613.tif 000008
【図７】
2005182613.tif 000009
【図８】
2005182613.tif 000010
【図９】
2005182613.tif 000011
【図１０】
2005182613.tif 000012
【図１１】
2005182613.tif 000013
【図１２】
2005182613.tif 000014
【図１３】
2005182613.tif 000015