(57)【特許請求の範囲】
【請求項１】
メモリに書き込まれるデータの誤りを検出訂正するための第１符号をデータ毎に生成する符号生成部と、当該符号生成部で生成された前記第１符号を用いて前記メモリから読み出されるデータの誤りを検出訂正する検出訂正部とを備える誤り検出訂正装置において、
前記符号生成部は、前記メモリに書き込むべきデータのビット数が前記メモリのデータ幅分のビット数である場合には、前記メモリに書き込むべきデータを用いて前記第１符号を生成するとともに、前記第１符号が誤りの検出訂正に用いられる符号である旨を示す第１フラグ情報及び該第１フラグ情報のパリティ検査用の検査情報を生成し、前記メモリに書き込むべきデータのビット数が前記メモリのデータ幅分のビット数と異なる場合には、前記第１符号に代えて前記第１符号のダミーとしての第２符号を生成するとともに、該第２符号が誤りの検出訂正に用いられる符号ではない旨を示す第２フラグ情報及び該第２フラグ情報のパリティ検査用の検査情報を生成し
前記検出訂正部は、前記メモリから読み出されるデータのうちパリティが正常な前記第１フラグ情報が生成されているデータについては前記第１フラグ情報とともに生成された第１符号を用いて誤りの検出訂正を行い、前記メモリから読み出されるデータのうちパリティが正常な前記第２フラグ情報が生成されているデータ或いはパリティが異常な第１又は第２フラグ情報が生成されているデータについては誤りの検出訂正を行わない
ことを特徴とする誤り検出訂正装置。
【請求項２】
データを記憶するメモリを備えるメモリ装置において、
前記メモリに記憶されるデータの誤りを検出訂正する請求項１記載の誤り検出訂正装置を備えることを特徴とするメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出訂正装置、及び当該装置を備えるメモリ装置に関する。
【背景技術】
【０００２】
一般的に、メモリ装置は、ＤＲＡＭ（Dynamic Random Access Memory）等のメモリを備えており、データを一時的又は長期的に記憶するために様々な電子機器で用いられる。メモリ装置は、基本的に、メモリに対するデータの読み出し及び書き込みを、メモリのデータ幅分のビット数（例えば、３２ビット）を有するデータを単位として行うが、書き込むべきデータの有効ビット数を指定することで、メモリに記憶されたデータの一部（例えば、３２ビット中の８ビットのみ）を書き換えるパーシャルライトも可能である。
【０００３】
ここで、ＥＣＣ（Error Checking and Correction：誤り検出訂正）機能を備えるメモリ装置は、メモリに記憶させるべき本来のデータに対してＥＣＣのための冗長ビットを生成し、本来のデータに冗長ビットを付加したデータをメモリに記憶している。このようなメモリ装置では、パーシャルライトを行う場合には新たな冗長ビットを生成する必要があることから、リード・モディファイ・ライト動作が行われる。ここで、リード・モディファイ・ライト動作とは、指定したアドレスで特定されるメモリの記憶領域に記憶されているデータを一旦読み出してデータの少なくとも一部を変更し、更新したデータを同記憶領域に書き戻す動作である。
【０００４】
以下の特許文献１には、ＣＰＵ（中央処理装置）がメモリに対してパーシャルライトを行う場合におけるメモリへのアクセス頻度を削減し、ＣＰＵのメモリアクセス時間を削減する技術が開示されている。具体的には、ＣＰＵから出力されたデータを記憶する少なくとも１つのライトバッファを設け、チェックビット生成の対象となるデータ幅よりも小さいデータ幅をもつデータをマルチプレクサにより組み合わせてライトバッファに記憶された複数のデータを１つのデータにしてチェックビット生成を行うことにより、メモリへのアクセス頻度削減等を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２３２７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述したリード・モディファイ・ライト動作は、メモリのデータ幅分のビット数を有するデータを単位として書き込みを行う通常のライト動作に比べて、更新すべきデータを読み出す処理と読み出したデータを変更する処理とを余計に行う必要があるため、動作が開始されてから終了するまでに要する時間が必然的に長くなる。このため、ＥＣＣ機能を備える従来のメモリ装置でリード・モディファイ・ライト動作が頻繁に行われると、データの書き込み動作に時間を要してしまうという問題があった。また、リード・モディファイ・ライト動作を実現するためには専用の回路が必要であるため、メモリ装置の規模が大きくなるという問題があった。
【０００７】
また、メモリ装置は、リード・モディファイ・ライト動作が行われている最中は、ＣＰＵの動作から出力される次のライト命令を受け付けることができない。このため、メモリ装置でリード・モディファイ・ライト動作が行われている最中は、ＣＰＵに対してウェイト信号等を出力してＣＰＵの動作を一時停止させる必要がある。しかしながら、ＣＰＵがこのような一時停止の機能を有していない場合には、ＣＰＵの動作を一時停止させることができないため、ＥＣＣ機能を使用することができないという問題がある。特に、近年ではＳＤＲＡＭ（Synchronous ＤＲＡＭ）等のバースト動作を行うメモリが使用されることが多いため、ＣＰＵの動作を一時的に停止させることができない場合が多い。
【０００８】
本発明は上記事情に鑑みてなされたものであり、パーシャルライトに要する時間の短縮及び規模の低減を実現でき、動作を一時停止させることができないＣＰＵにも適用可能な誤り検出訂正装置、及び当該装置を備えるメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の誤り検出訂正装置は、メモリ（２０）に書き込まれるデータの誤りを検出訂正するための第１符号をデータ毎に生成する符号生成部（３１）と、当該符号生成部で生成された前記第１符号を用いて前記メモリから読み出されるデータの誤りを検出訂正する検出訂正部（３３）とを備える誤り検出訂正装置（３０）において、前記符号生成部は、前記メモリに書き込むべきデータのビット数が前記メモリのデータ幅分のビット数である場合には、前記メモリに書き込むべきデータを用いて前記第１符号を生成するとともに、前記第１符号が誤りの検出訂正に用いられる符号である旨を示す第１フラグ情報及び該第１フラグ情報のパリティ検査用の検査情報を生成し、前記メモリに書き込むべきデータのビット数が前記メモリのデータ幅分のビット数と異なる場合には、前記第１符号に代えて前記第１符号のダミーとしての第２符号を生成するとともに、該第２符号が誤りの検出訂正に用いられる符号ではない旨を示す第２フラグ情報及び該第２フラグ情報のパリティ検査用の検査情報を生成し前記検出訂正部は、前記メモリから読み出されるデータのうちパリティが正常な前記第１フラグ情報が生成されているデータについては前記第１フラグ情報とともに生成された第１符号を用いて誤りの検出訂正を行い、前記メモリから読み出されるデータのうちパリティが正常な前記第２フラグ情報が生成されているデータ或いはパリティが異常な第１又は第２フラグ情報が生成されているデータについては誤りの検出訂正を行わないことを特徴としている。
本発明のメモリ装置は、データを記憶するメモリ（２０）を備えるメモリ装置（１）において、前記メモリに記憶されるデータの誤りを検出訂正する上記の誤り検出訂正装置を備えることを特徴としている。
【発明の効果】
【００１０】
本発明によれば、メモリに書き込むべきデータのビット数がメモリのデータ幅分のビット数である場合にのみ、メモリに書き込むべきデータを用いてデータの誤りを検出訂正するための第１符号の生成を行っており、メモリに書き込むべきデータのビット数がメモリのデータ幅分のビット数とは異なるパーシャルライトのときには、上記の第１符号の生成は行われない。これにより、パーシャルライト時のリード・モディファイ・ライトを省略することができるため、パーシャルライトに要する時間の短縮及び規模の低減を実現でき、動作を一時停止させることができないＣＰＵにも適用可能であるという効果がある。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態による誤り検出訂正装置及びメモリ装置の要部構成を示すブロック図である。
【図２】チェックビット生成回路３１の入出力関係を示す図である。
【図３】チェックビット検査回路３３の入出力関係を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の一実施形態による誤り検出訂正装置及びメモリ装置について詳細に説明する。図１は、本発明の一実施形態による誤り検出訂正装置及びメモリ装置の要部構成を示すブロック図である。図１に示す通り、本実施形態のメモリ装置１は、外部メモリ２０（メモリ）と誤り検出訂正装置としてのＥＣＣ回路３０とを備えており、マイクロプロセッサ１０の制御の下でデータを一時的又は長期的に記憶する。
【００１３】
マイクロプロセッサ１０は、アドレスバス、データバス、及び各種信号線を介してＥＣＣ回路３０に接続されており、ＥＣＣ回路３０との間で各種信号を入出力することによって、外部メモリ２０に対するデータの書き込み制御、及び外部メモリ２０からのデータの読み出し制御を行う。具体的に、マイクロプロセッサ１０は、ＥＣＣ回路３０に対して制御信号Ｃ１、アドレス信号Ａ１、及び有効ビット指定信号Ｂ１を出力し、ＥＣＣ回路３０との間でデータ信号Ｄ１の入出力を行い、ＥＣＣ回路３０から出力されるステータス信号Ｓ１を入力する。
【００１４】
制御信号Ｃ１は、外部メモリ２０に対するデータの書き込み、又は外部メモリ２０からのデータの読み出しを指示する信号である。アドレス信号Ａ１は、外部メモリ２０の記憶領域２０ａのうち、データの書き込みを行うべき領域又はデータの読み出しを行うべき領域を特定する信号である。有効ビット指定信号Ｂ１は、外部メモリ２０に対して書き込みを行うデータの有効ビットを指定する信号である。例えば、外部メモリ２０のデータ幅が３２ビットである場合には、８ビット、１６ビット、２４ビット、又は３２ビットを有効ビットとして指定する。尚、本実施形態では、外部メモリ２０のデータ幅が３２ビットであるとする。ここで、通常のライト動作の場合には外部メモリ２０のデータ幅と同じ３２ビットが指定され、パーシャルライトを行う場合には８ビット、１６ビット、又は２４ビットが指定される。
【００１５】
データ信号Ｄ１は、マイクロプロセッサ１０から出力されて外部メモリ２０に対して書き込まれるべきデータ、又は外部メモリ２０から読み出されてマイクロプロセッサ１０に入力されるデータである。ステータス信号Ｓ１は、外部メモリ２０から読み出されたデータのＥＣＣ回路３０における誤り検出の結果を示す信号である。具体的には、外部メモリ２０から読み出されたデータの誤りの有無、及び誤りの種類を示す信号である。
【００１６】
外部メモリ２０は、例えばＤＲＡＭ等のメモリを備えており、マイクロプロセッサ１０から出力される制御信号Ｃ１、アドレス信号Ａ１、及び有効ビット指定信号Ｂ１が入力されて、マイクロプロセッサ１０からデータ信号Ｄ１として出力されたデータの書き込み、及び記憶しているデータの読み出しを行う。この外部メモリ２０は、データ幅Ｌが３２ビットであり、０〜Ｎ−１（Ｎは２以上の整数）までのアドレスを指定することができる記憶領域２０ａを備える。つまり、外部メモリ２０の記憶容量はＬ×Ｎビットである。
【００１７】
ＥＣＣ回路３０は、チェックビット生成回路３１（符号生成部）、ＥＣＣメモリ３２、及びチェックビット検査回路３３（検出訂正部）を備えており、マイクロプロセッサ１０の制御の下で、外部メモリ２０に書き込まれるデータの誤りの検出訂正を行う。このＥＣＣ回路３０は、１ビットの誤りを訂正し、２ビット以上の誤りを検出するＳＥＣ−ＤＥＤ（Single Error Correction and Double Error Detection）によって誤りの検出及び訂正を行う。
【００１８】
チェックビット生成回路３１は、マイクロプロセッサ１０からの制御信号Ｃ１、有効ビット指定信号Ｂ１、及びデータ信号Ｄ１を入力としており、外部メモリ２０に記憶されるデータの誤り検出訂正に必要な検出訂正用データを生成する。この検出訂正用データは、外部メモリ２０に記憶されるデータの誤り検出訂正に用いられるＰビット（Ｐは、１以上の整数）のチェックビットＣＢと、チェックビットＣＢに付随する２ビットのフラグビットＦＢとからなる。
【００１９】
ここで、上述のＳＥＣ−ＤＥＤではハミングコードを用いてチェックビットＣＢが生成されるのが主流であり、必要となるチェックビットＣＢのビット数は、データのビット数に対して「２」を底とした対数（ｌｏｇ）をとって得られる値に値「２」を加えた値になる。本実施形態では、外部メモリ２０のデータ幅Ｌが３２ビットであるため、チェックビットＣＢのビット数Ｐは「７」となる。尚、原理的に、チェックビットＣＢの誤りもＳＥＣ−ＤＥＤで見つけることができる。
【００２０】
フラグビットＦＢの第１ビット目は、チェックビットＣＢが誤り訂正に用いられるものであるか否か（「ＥＣＣ有効」であるか、「ＥＣＣ無効」であるか）を示しており、第２ビット目は１ビット目の偶数パリティである。フラグビットＦＢは、ＥＣＣ回路３０が備えるＥＣＣメモリ３２に記憶されるため、フラグビットＦＢ自体に誤りが生ずる可能性がある。この誤りを検出するためにフラグビットＦＢの第２ビット目が設けられる。
【００２１】
図２は、チェックビット生成回路３１の入出力関係を示す図である。図２に示す通り、チェックビット生成回路３１は、制御信号Ｃ１によってライト動作（外部メモリ２０に対するデータの書き込み）が指示されている場合に検出訂正用データを生成し、その他の指示がなされている場合（例えば、リード動作（外部メモリ２０からのデータの読み出し）が指定されている場合）には検出訂正用データの生成は行わない。
【００２２】
ここで、制御信号Ｃ１によってライト動作が指示されている場合には、チェックビット生成回路３１が生成する検出訂正用データは有効ビット指定信号Ｂ１に応じて変わる。有効ビット指定信号Ｂ１で「３２ビット」が指定されている場合（通常のライト動作が指定されている場合）には、ＥＣＣ生成多項式を用いて生成したチェックビットＣＢ（第１符号）と、第１ビット目が「ＥＣＣ有効」とされたフラグビットＦＢ（第１フラグ情報）とからなる検出訂正用データが生成される。
【００２３】
これに対し、有効ビット指定信号Ｂ１で「３２ビット」以外のビット数が指定されている場合（パーシャルライトが指定されている場合）には、ダミーのチェックビットＣＢ（第２符号）と、第１ビット目が「ＥＣＣ無効」とされたフラグビットＦＢ（第２フラグ情報）とからなる検出訂正用データを生成する。このように、本実施形態では、通常のライト動作が指定された場合のみ誤り検出訂正のためのチェックビットＣＢが生成され、パーシャルライトが指定された場合にはダミーのチェックビットＣＢが生成されるものの誤り検出訂正のためのチェックビットＣＢは生成されない。
【００２４】
ＥＣＣメモリ３２は、外部メモリ２０と同様にＤＲＡＭ等のメモリを備えており、マイクロプロセッサ１０から出力される制御信号Ｃ１及びアドレス信号Ａ１、並びにチェックビット生成回路３１で生成される検出訂正用データが入力されて、検出訂正用データの記憶、及び記憶している検出訂正用データの読み出しを行う。このＥＣＣメモリ３２は、データ幅が（Ｐ＋２）ビットであり、外部メモリ２０と同様に０〜Ｎ−１までのアドレスを指定することができる記憶領域３２ａを備える。つまり、ＥＣＣメモリ３２の記憶容量は（Ｐ＋２）×Ｎビットであり、外部メモリ２０の記憶領域２０ａのうちのアドレス信号Ａ１で特定される３２ビットの領域と、ＥＣＣメモリ３２の記憶領域３２ａのうちの同アドレス信号Ａ１で特定される（Ｐ＋２）ビットの領域とが１対１に対応している。
【００２５】
チェックビット検査回路３３は、マイクロプロセッサ１０からの制御信号Ｃ１、外部メモリ２０から読み出されたデータ、及びＥＣＣメモリ３２から読み出された検出訂正用データを入力としており、ＥＣＣメモリ３２から読み出された検出訂正用データを用いて外部メモリ２０から読み出されたデータの誤り検出訂正を行う。誤り検出の結果はステータス信号Ｓ１として、外部メモリ２０から読み出されたデータ（誤り訂正がされたデータを含む）はデータ信号Ｄ１としてマイクロプロセッサ１０にそれぞれ出力される。
【００２６】
図３は、チェックビット検査回路３３の入出力関係を示す図である。図３に示す通り、チェックビット検査回路３３は、制御信号Ｃ１によってリード動作が指示されている場合に、必要であれば誤りの訂正を行って外部メモリ２０から読み出されたデータをデータ信号Ｄ１としてマイクロプロセッサ１０に出力し、その他の指示がなされている場合（例えば、ライト動作が指定されている場合）にはマイクロプロセッサ１０に対するデータの出力は行わない。尚、その他の指示がなされている場合には、チェックビット検査回路３３からマイクロプロセッサ１０に対し、「エラー無し」を意味するステータス信号Ｓ１が出力される。
【００２７】
ここで、制御信号Ｃ１によってリード動作が指示されている場合には、チェックビット検査回路３３から出力されるデータ信号Ｄ１及びステータス信号Ｓ１は、ＥＣＣメモリ３２から読み出されたフラグビットＦＢの内容及び誤り検出の結果に応じて変わる。まず、フラグビットＦＢの第２ビット目によるパリティが正常であり、フラグビットＦＢの第１ビット目が「ＥＣＣ有効」とされている場合には、誤り検出結果に応じてデータ信号Ｄ１及びステータス信号Ｓ１が変わる。
【００２８】
誤り検出結果が「エラー無し」であるときには、外部メモリ２０から読み出したデータ（元のデータ）がデータ信号Ｄ１として出力されるとともに、「エラー無し」を意味するステータス信号Ｓ１が出力される。誤り検出結果が「１ビットエラー」であるときには、誤りが訂正されたデータがデータ信号Ｄ１として出力されるとともに、「１ビット誤りの発生」を意味するステータス信号Ｓ１が出力される。誤り検出結果が「２ビットエラー」であるときには、元のデータがデータ信号Ｄ１として出力されるとともに、「２ビット誤りの発生」を意味するステータス信号Ｓ１が出力される。
【００２９】
次に、フラグビットＦＢの第２ビット目によるパリティが正常であり、フラグビットＦＢの第１ビット目が「ＥＣＣ無効」とされている場合には、誤り検出は行われずに元のデータがデータ信号Ｄ１として出力されるとともに、「ＥＣＣ無効」を意味するステータス信号Ｓ１が出力される。これに対し、フラグビットＦＢの第２ビット目によるパリティが異常である場合には、元のデータがデータ信号Ｄ１として出力されるとともに、「フラグビット誤りの発生」を意味するステータス信号Ｓ１が出力される。
【００３０】
次に、上記構成におけるメモリ装置１の動作について説明する。メモリ装置１の動作は、通常のライト動作、パーシャルライト動作、リード動作に大別されるため、以下これらの動作について順に説明する。
【００３１】
〈通常のライト動作〉
動作が開始されると、マイクロプロセッサ１０から、ライト動作を指示する制御信号Ｃ１及び「３２ビット」を指定する有効ビット指定信号Ｂ１が出力されるとともに、外部メモリ２０に書き込むべき３２ビットのデータ信号Ｄ１、及びデータ信号Ｄ１を書き込むべき領域を指示するアドレス信号Ａ１が出力される。これらの信号は外部メモリ２０に入力され、外部メモリ２０の記憶領域２０ａのうちのアドレス信号Ａ１で特定される３２ビットの領域に、３２ビットのデータ信号Ｄ１が書き込まれる。
【００３２】
また、マイクロプロセッサ１０から出力された制御信号Ｃ１、有効ビット指定信号Ｂ１、及びデータ信号Ｄ１はチェックビット生成回路３１にも入力される。ここでは、制御信号Ｃ１がライト動作を指示するものであり、有効ビット指定信号Ｂ１が「３２ビット」を指定するものであるため、チェックビット生成回路３１は、通常のライト動作であると判断する（第１ステップ）。これにより、チェックビット生成回路３１は、図２に示す通り、ＥＣＣ生成多項式を用いて生成されたチェックビットＣＢと、第１ビット目が「ＥＣＣ有効」とされたフラグビットＦＢとからなる（Ｐ＋２）ビット（９ビット）の検出訂正用データを生成する（第２ステップ）。
【００３３】
チェックビット生成回路３１で生成された検出訂正用データはＥＣＣメモリ３２に入力される。ここで、ＥＣＣメモリ３２には、マイクロプロセッサ１０から出力された制御信号Ｃ１及びアドレス信号Ａ１が入力されているため、ＥＣＣメモリ３２の記憶領域３２ａのうちのアドレス信号Ａ１で特定される９ビットの領域に、９ビットの検出訂正用データが書き込まれる。このように、通常のライト動作では従来と同様の動作が行われる。
【００３４】
〈パーシャルライト動作〉
動作が開始されると、マイクロプロセッサ１０から、ライト動作を指示する制御信号Ｃ１及び「８ビット」を指定する有効ビット指定信号Ｂ１が出力されるとともに、外部メモリ２０に書き込むべき８ビットのデータ信号Ｄ１、及びデータ信号Ｄ１を書き込むべき領域を指示するアドレス信号Ａ１が出力される。尚、ここでは、有効ビット指定信号Ｂ１が「８ビット」を指定するものである場合を例に挙げて説明するが、有効ビット指定信号Ｂ１は「１６ビット」又は「２４ビット」を指定するものであっても良い。
【００３５】
マイクロプロセッサ１０から出力されたこれらの信号は外部メモリ２０に入力され、外部メモリ２０の記憶領域２０ａのうちのアドレス信号Ａ１で特定される３２ビットの領域に記憶された３２ビットのデータのうちの８ビット分が、８ビットのデータ信号Ｄ１で書き換えられる。また、マイクロプロセッサ１０から出力された制御信号Ｃ１、有効ビット指定信号Ｂ１、及びデータ信号Ｄ１はチェックビット生成回路３１にも入力される。ここでは、制御信号Ｃ１がライト動作を指示するものであり、有効ビット指定信号Ｂ１がパーシャルライト動作を意味する「８ビット」を指定するものである。このため、ダミーのチェックビットＣＢと、第１ビット目が「ＥＣＣ無効」とされたフラグビットＦＢとからなる（Ｐ＋２）ビット（９ビット）の検出訂正用データがチェックビット生成回路３１から出力される（図２参照）。
【００３６】
チェックビット生成回路３１から出力された検出訂正用データはＥＣＣメモリ３２に入力される。ここで、ＥＣＣメモリ３２には、マイクロプロセッサ１０から出力された制御信号Ｃ１及びアドレス信号Ａ１が入力されているため、ＥＣＣメモリ３２の記憶領域３２ａのうちのアドレス信号Ａ１で特定される９ビットの領域に、９ビットの検出訂正用データが書き込まれる。このように、パーシャルライト動作では、従来行われていたリード・モディファイ・ライト動作及びＥＣＣ生成多項式を用いたチェックビットの作成は行われず、代わりにダミーのチェックビットＣＢの生成が行われる。また、従来は必要であったマイクロプロセッサ１０の動作の一時停止も不要である。
【００３７】
〈リード動作〉
動作が開始されると、マイクロプロセッサ１０から、リード動作を指示する制御信号Ｃ１と、外部メモリ２０の記憶領域２０ａのうちのデータの読み出しを行うべき領域を指示するアドレス信号Ａ１とが出力される。これらの信号は外部メモリ２０及びＥＣＣメモリ３２に入力され、外部メモリ２０及びＥＣＣメモリ３２からはアドレス信号Ａ１で特定される領域に記憶されていたデータ及び検出訂正用データがそれぞれ読み出される。外部メモリ２０及びＥＣＣメモリ３２から読み出されたデータ及び検出訂正用データはチェックビット検査回路３３に入力される。
【００３８】
また、マイクロプロセッサ１０から出力された制御信号Ｃ１はチェックビット検査回路３３にも入力される。ここでは、制御信号Ｃ１がリード動作を指示するものであるため、チェックビット検査回路３３は、ＥＣＣメモリ３２から読み出された検出訂正用データ（フラグビットＦＢ）の内容及び誤り検出の結果に応じた処理を行ってデータ信号Ｄ１及びステータス信号Ｓ１をマイクロプロセッサ１０に出力する（図３参照）。
【００３９】
具体的には、フラグビットＦＢの第２ビット目によるパリティが正常であり、フラグビットＦＢの第１ビット目が「ＥＣＣ有効」とされている場合には、外部メモリ２０から読み出されたデータとＥＣＣメモリ３２から読み出されたチェックビットＣＢとをＥＣＣ生成多項式に当てはめ、これらデータ及びチェックビットの誤りを検出する。そして、誤り検出結果が「エラー無し」であるときには、外部メモリ２０から読み出したデータ（元のデータ）をデータ信号Ｄ１として出力するとともに、「エラー無し」を意味するステータス信号Ｓ１を出力する。
【００４０】
これに対し、誤り検出結果が「１ビットエラー」であるときには、誤りが訂正されたデータをデータ信号Ｄ１として出力するとともに、「１ビット誤りの発生」を意味するステータス信号Ｓ１を出力する。また、誤り検出結果が「２ビットエラー」であるときには、元のデータをデータ信号Ｄ１として出力するとともに、「２ビット誤りの発生」を意味するステータス信号Ｓ１を出力する。
【００４１】
他方、フラグビットＦＢの第２ビット目によるパリティが正常であり、フラグビットＦＢの第１ビット目が「ＥＣＣ無効」とされている場合には、チェックビット検査回路３３は、誤り検出を行わずに元のデータをデータ信号Ｄ１として出力するとともに、「ＥＣＣ無効」を意味するステータス信号Ｓ１を出力する。尚、フラグビットＦＢの第２ビット目によるパリティが異常である場合には、チェックビット検査回路３３は、元のデータをデータ信号Ｄ１として出力するとともに、「フラグビット誤りの発生」を意味するステータス信号Ｓ１を出力する。
【００４２】
以上説明した通り、本実施形態では、通常のライト動作を行う場合（外部メモリ２０に書き込むべきデータのビット数が外部メモリ２０のデータ幅分のビット数である場合）にのみ、外部メモリ２０に書き込むべきデータを用いて誤り検出訂正に用いるチェックビットＣＢを生成している。他方、パーシャルライト動作を行う場合（外部メモリ２０に書き込むべきデータのビット数が外部メモリ２０のデータ幅分のビット数と異なる場合）には、リード・モディファイ・ライトを行わずにダミーのチェックビットＣＢを生成している。このように、本実施形態では、パーシャルライト時のリード・モディファイ・ライトを省略することができるため、パーシャルライトに要する時間の短縮及び規模の低減を実現でき、動作を一時停止させることができないマイクロプロセッサ（ＣＰＵ）にも適用可能である。
【００４３】
ここで、本実施形態では、パーシャルライト時に、誤り検出訂正に用いるチェックビットを生成せず、代わりにダミーのチェックビットを生成している。このため、パーシャルライトを行ったデータに誤りが生じた場合には、誤り検出及び誤り訂正を行うことはできない。しかしながら、通常のライト動作に比べてパーシャルライト動作が行われる頻度は極めて低く、またパーシャルライトを行ったデータの誤りが発生する確率も低いと考えられることから、実用上は問題ないと考えられる。
【００４４】
以上、本発明の一実施形態による誤り検出訂正装置及びメモリ装置について説明したが、本発明は上記実施形態に制限される訳ではなく、本発明の範囲内で自由に変更が可能である。例えば、上記実施形態では、外部メモリ２０のデータ幅が３２ビットである場合を例に挙げて説明したが、これ以外のデータ幅の外部メモリ２０を備える場合にも本発明を適用することができる。尚、チェックビットＣＢのビット数を外部メモリ２０のデータ幅に応じて変更すれば、上記の実施形態と同様にＳＥＣ−ＤＥＤによる誤りの検出及び訂正が可能である。また、ＳＥＣ−ＤＥＤ以外にも、例えば２ビットの誤りを検出し訂正するＤＥＣ（Double Error Correction）を行う装置にも適用可能である。
【符号の説明】
【００４５】
１      メモリ装置
２０    外部メモリ
３０    ＥＣＣ回路
３１    チェックビット生成回路
３３    チェックビット検査回路
【図１】
0005446931.tif 000002
【図２】
0005446931.tif 000003
【図３】
0005446931.tif 000004