(57)【要約】【課題】  書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶装置におけるデータのエラー検知用の情報に起因した記憶密度低下を抑制する。【解決手段】  生成部２は、記憶部にデータを書き込む場合に、書き込みデータにおける分割データ毎にエラー検知情報を生成する。当該情報は、分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、書き込みデータを構成する複数の分割データのエラー検知情報に基づいてビットエラーの発生位置を検知できる情報である。検知・訂正部３は、エラー検知情報を利用することにより、分割データにビットエラーが発生しているか否かを判断できる。検知・訂正部３は、ビットエラーの発生が検知された分割データを含むデータにおける複数のエラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正できる。【選択図】      図１
2017156940.tif 000002
【特許請求の範囲】
【請求項１】
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部に前記データを書き込む場合に、その書き込み対象のデータである書き込みデータにおける前記分割データ毎に関連付けられ当該分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、前記書き込みデータを構成する複数の前記分割データに関連付けられている前記情報に基づいてビットエラーの発生位置を検知できるエラー検知情報を生成する生成部と、
前記記憶部から前記分割データを読み出す場合に、読み出し対象の前記分割データに関連付けられている前記エラー検知情報を利用することにより、当該分割データにビットエラーが発生しているか否かを判断し、ビットエラーが発生していることを検知した場合には、当該ビットエラーの発生が検知された前記分割データを含む前記データに関連付けられている複数の前記エラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正する検知・訂正部と
を備えるエラー検知装置。
【請求項２】
前記エラー検知情報は、ＥＣＣ（Error Correcting Code）手法に基づいて生成される符号である請求項１に記載のエラー検知装置。
【請求項３】
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部と、
請求項１又は請求項２に記載のエラー検知装置と
を備える記憶装置。
【請求項４】
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部に前記データを書き込む場合に、その書き込み対象のデータである書き込みデータにおける前記分割データ毎に関連付けられ当該分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、前記書き込みデータを構成する複数の前記分割データに関連付けられている前記情報に基づいてビットエラーの発生位置を検知できるエラー検知情報を生成し、
前記記憶部から前記分割データを読み出す場合に、読み出し対象の前記分割データに関連付けられている前記エラー検知情報を利用することにより、当該分割データにビットエラーが発生しているか否かを判断し、
ビットエラーが発生していることを検知した場合には、当該ビットエラーの発生が検知された前記分割データを含む前記データに関連付けられている複数の前記エラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正する
エラー訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に書き込まれているデータのエラーを検知する技術に関する。
【背景技術】
【０００２】
記憶装置（半導体メモリやハードディスク装置など）に書き込まれている“０”と“１”により構成されるデータには、ビットエラー（ビット反転、ビット化け）が発生してしまうという問題が有る。ビットエラーとは、正しくは“０”であるところが、“１”で記憶され、反対に、正しくは“１”であるところが、“０”で記憶されているという現象である。
【０００３】
そのようなビットエラーを検知する手法や、検知したビットエラーを訂正する手法は様々に提案されている。例えば、その一つとして、ＥＣＣ（Error Check and Correction）符号を利用する手法がある。
【０００４】
なお、特許文献１には、ＥＣＣ符号を利用したビットエラー検知を複数の処理装置で分担して行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２６０１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＥＣＣ符号を利用する手法によって、例えば、６４ビットのデータにおける１ビットエラーを検知し、かつ、その１ビットエラーを訂正しようとする場合には、記憶装置に書き込む際に、その６４ビットのデータに７ビットのＥＣＣ符号を付加する必要がある。すなわち、６４ビットデータの１ビットエラーは６４通り有る。また、その６４ビットデータに付加されるＥＣＣ符号にもビットエラーが発生する虞があり、このＥＣＣ符号のビットエラーは７通りある。さらに、６４ビットデータにもＥＣＣ符号にもビットエラーが発生しない場合が有る。これらを区別して検知しようとすると、７ビットのＥＣＣ符号が必要である。
【０００７】
ところで、データを書き込む場合には、６４ビット単位で書き込み、データを読み出す場合には、その半分の３２ビット単位で読み出すという如く、データの書き込みサイズと読み出しサイズが異なる記憶装置（記憶回路）がある。このような場合には、読み出しサイズ単位のデータにＥＣＣ符号が付加される。具体的には、記憶装置に書き込まれている６４ビットデータにおける前半の３２ビットデータと後半の３２ビットデータが別々に読み出し可能である場合には、３２ビットデータ毎に６ビットのＥＣＣ符号が付加される。つまり、６４ビットデータに１２ビットのＥＣＣ符号が付加される。
【０００８】
このように、記憶装置へのデータの書き込みサイズが同じでも、データの読み出しサイズが小さくなると、書き込みサイズのデータに付加されるＥＣＣ符号のビット数が増加する。つまり、記憶装置における書き込みサイズの１つのデータが使用する占有記憶領域の大きさが増加し、これにより、記憶装置の記憶密度の向上を妨げるという問題が生じる。
【０００９】
本発明は上記課題を解決するために考え出された。すなわち、本発明の主な目的は、書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶装置に格納されるデータのエラー検知用の情報に起因した記憶密度低下を抑制する技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明のエラー検知装置における一様相は、
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部に前記データを書き込む場合に、その書き込み対象のデータである書き込みデータにおける前記分割データ毎に関連付けられ当該分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、前記書き込みデータを構成する複数の前記分割データに関連付けられている前記情報に基づいてビットエラーの発生位置を検知できるエラー検知情報を生成する生成部と、
前記記憶部から前記分割データを読み出す場合に、読み出し対象の前記分割データに関連付けられている前記エラー検知情報を利用することにより、当該分割データにビットエラーが発生しているか否かを判断し、ビットエラーが発生していることを検知した場合には、当該ビットエラーの発生が検知された前記分割データを含む前記データに関連付けられている複数の前記エラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正する検知・訂正部と
を備える。
【００１１】
また、本発明の記憶装置における一様相は、
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部と、
上記したようなエラー検知装置と
を備える。
【００１２】
さらに、本発明のエラー検知方法における一様相は、
書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部に前記データを書き込む場合に、その書き込み対象のデータである書き込みデータにおける前記分割データ毎に関連付けられ当該分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、前記書き込みデータを構成する複数の前記分割データに関連付けられている前記情報に基づいてビットエラーの発生位置を検知できるエラー検知情報を生成し、
前記記憶部から前記分割データを読み出す場合に、読み出し対象の前記分割データに関連付けられている前記エラー検知情報を利用することにより、当該分割データにビットエラーが発生しているか否かを判断し、
ビットエラーが発生していることを検知した場合には、当該ビットエラーの発生が検知された前記分割データを含む前記データに関連付けられている複数の前記エラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正する。
【発明の効果】
【００１３】
本発明によれば、書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶装置に格納されるデータのエラー検知用の情報に起因した記憶密度低下を抑制できる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る第１実施形態のエラー検知装置の構成を簡略化して表すブロック図である。
【図２】第１実施形態のエラー検知装置を備えた記憶装置の構成を簡略化して表すブロック図である。
【図３】本発明に係る第２実施形態のエラー検知装置を備えた記憶装置の構成を簡略化して表すブロック図である。
【図４】第２実施形態における書き込み部の回路構成例を表す回路図である。
【図５】第２実施形態における読み出し部の回路構成例を表す回路図である。
【図６】第２実施形態における記憶部の回路構成例を表す回路図である。
【図７】第２実施形態における検知・訂正部の回路構成例を表す回路図である。
【図８】第２実施形態における検知・訂正部がエラー位置を検知する際に利用するデータの一部を表す図である。
【図９】図８に続くデータを表す図である。
【図１０】さらに、図９に続くデータを表す図である。
【図１１】さらに、図１０に続くデータを表す図である。
【図１２】さらに、図１１に続くデータを表す図である。
【図１３】さらに、図１２に続くデータを表す図である。
【図１４】エラー位置を検知する別のデータの一例を表す図である。
【図１５】図１４に続くデータを表す図である。
【図１６】さらに、図１５に続くデータを表す図である。
【図１７】エラー位置を検知するさらに別のデータの一例を表す図である。
【図１８】図１７に続くデータを表す図である。
【図１９】さらに、図１８に続くデータを表す図である。
【図２０】さらに、図１９に続くデータを表す図である。
【図２１】さらに、図２０に続くデータを表す図である。
【図２２】さらに、図２１に続くデータを表す図である。
【図２３】さらに、図２２に続くデータを表す図である。
【図２４】さらに、図２３に続くデータを表す図である。
【図２５】さらに、図２４に続くデータを表す図である。
【図２６】さらに、図２６に続くデータを表す図である。
【発明を実施するための形態】
【００１５】
以下に、本発明に係る実施形態を図面を参照しつつ説明する。
【００１６】
＜第１実施形態＞
図１は、本発明に係る第１実施形態のエラー検知装置の構成を簡略化して表すブロック図である。第１実施形態のエラー検知装置１は、生成部２と、検知・訂正部３とを備えている。このエラー検知装置１は、書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する記憶部５に接続し、当該記憶部５におけるデータのエラー検知に関わる装置である。生成部２は、記憶部５にデータを書き込む場合に、その書き込み対象のデータである書き込みデータにおける分割データ毎にエラー検知情報を生成する機能を備えている。エラー検知情報は、各分割データに関連付けられる。当該エラー検知情報は、各分割データにおけるビットエラーの有無判断に利用できる情報であって、かつ、同じ書き込みデータを構成する複数の分割データにおけるエラー検知情報に基づいてビットエラーの発生位置を検知できる情報である。
【００１７】
検知・訂正部３は、記憶部５から分割データを読み出す場合に、読み出し対象の分割データに関連付けられているエラー検知情報を利用することにより、当該分割データにビットエラーが発生しているか否かを判断する機能を備えている。また、検知・訂正部３は、ビットエラーが発生していることを検知した場合には、当該ビットエラーの発生が検知された分割データを含む書き込みデータに関連付けられている複数のエラー検知情報を取得する。そして、検知・訂正部３は、それらエラー検知情報を利用することによりビットエラーの位置を検知し当該ビットエラーを訂正する機能を備えている。
【００１８】
第１実施形態のエラー検知装置１は、書き込みデータにおける読み出しサイズの各分割データに関連付けるエラー検知情報として、当該分割データにビットエラーが発生しているか否かを判断できる情報を生成する。そのエラー検知情報は、エラーの発生を検知するだけでなくエラー位置までをも検知できる情報に比べれば、情報サイズ（データ容量）が小さい。このため、エラー検知装置１は、記憶部５に格納されるデータのエラー検知用の情報に起因した記憶密度低下を抑制できる。
【００１９】
図２は、第１実施形態のエラー検知装置１を備えた記憶装置８の構成を簡略化して表すブロック図である。この記憶装置８は、エラー検知装置１と、記憶部５とを備えている。記憶部５は、書き込みサイズよりも小さい読み出しサイズの複数の分割データにより構成されるデータを記憶する機能を備えている。エラー検知装置１は、前述した第１実施形態のエラー検知装置１の構成を備えている。
【００２０】
この記憶装置８は、第１実施形態のエラー検知装置１を備えていることにより、記憶部５に格納されるデータのエラー検知用の情報に起因した記憶密度低下を抑制できるという効果を得ることができる。
【００２１】
＜第２実施形態＞
図３は、本発明に係る第２実施形態のエラー検知装置を備えた記憶装置の構成を簡略化して表すブロック図である。第２実施形態における記憶装置２０は、読み書き制御部１９に接続し、当該読み書き制御部１９の指示に応じてデータを読み書きする。
【００２２】
第２実施形態における記憶装置２０は、書き込み部２２と、読み出し部２３と、記憶部２４と、生成部２５と、検知・訂正部２６とを備えている。なお、生成部２５と検知・訂正部２６は、エラー検知装置２８を構成している。
【００２３】
記憶装置２０を構成するそれら構成部２２〜２６は、次のような機能を備えている。すなわち、書き込み部２２は、読み書き制御部１９に接続されており、読み書き制御部１９から出力された次のような情報を受け取る。その読み書き制御部１９から受け取る情報とは、データの書き込みを要求する書き込み要求と、書き込み対象のデータ（以下、書き込みデータとも記す）と、その書き込みデータを書き込む記憶部２４の記憶位置を表す書き込みアドレスである。なお、この第２実施形態では、書き込みデータは、前半部分（以下、前半データとも記す）と後半部分（以下、後半データとも記す）に分けられた状態で記憶部２４に記憶される。このため、書き込みアドレスは、前半データ用の書き込みアドレスと、後半データ用の書き込みアドレスとを含んでいる。
【００２４】
書き込み部２２は、読み書き制御部１９から書き込み要求を受け取った場合には、その書き込み要求を記憶部２４に出力し、また、書き込み要求と共に受け取った書き込みアドレスも記憶部２４に出力する機能を備えている。さらに、書き込み部２２は、書き込み要求と共に受け取った書き込みデータを生成部２５に出力する機能を備えている。
【００２５】
さらにまた、書き込み部２２は、検知・訂正部２６に接続されており、検知・訂正部２６から、記憶部２４に記憶されているデータを訂正することを要求する訂正要求を受け取る。さらに、書き込み部２２は、検知・訂正部２６から、訂正要求と共に、訂正対象のデータ（以下、訂正データとも記す）およびその訂正データを書き込む記憶部２４の記憶位置を表す訂正アドレスを受け取る。書き込み部２２は、検知・訂正部２６から、訂正要求を受け取った場合には、その訂正要求を記憶部２４に出力する機能を備えている。また、書き込み部２２は、その訂正要求と共に受け取った訂正データを生成部２５に出力し、また、訂正アドレスを記憶部２４に出力する機能を備えている。
【００２６】
さらにまた、書き込み部２２は、検知・訂正部２６から、訂正要求を受け取った場合には、その訂正要求を保留要求として読み書き制御部１９に出力する機能を備えている。その保留要求とは、検知・訂正部２６から発行された訂正要求に応じた記憶部２４と生成部２５の処理が終了するまで読み書き制御部１９から記憶装置２０への指示を保留することを要求する情報である。
【００２７】
図４は、書き込み部２２の一回路構成例を表す回路図である。図４に表される書き込み部２２の回路は、論理和（ＯＲ）回路３２と、選択回路３３とを備えている。図４に表される回路では、論理和回路３２の入力部の一つには、読み書き制御部１９から出力される書き込み要求が入力し、論理和回路３２の別の入力部には、検知・訂正部２６から出力される訂正要求が入力する。論理和回路３２の出力部は、記憶部２４に接続されている。論理和回路３２は、読み書き制御部１９から書き込み要求を受け取った場合には、記憶部２４に向けて、その書き込み要求を出力する。また、論理和回路３２は、検知・訂正部２６から訂正要求を受け取った場合には、記憶部２４に向けてその訂正要求を出力する。
【００２８】
選択回路３３の入力部の一つには、読み書き制御部１９から、書き込みデータおよび書き込みアドレスが入力する。選択回路３３の別の入力部には、検知・訂正部２６から、訂正データおよびその訂正アドレスが入力する。また、選択回路３３の制御入力部には、検知・訂正部２６から、制御信号として訂正要求が入力する。さらにまた、選択回路３３の出力部は、記憶部２４および生成部２５に接続されている。
【００２９】
選択回路３３は、検知・訂正部２６から訂正要求が入力していない場合に読み書き制御部１９から書き込みデータおよび書き込みアドレスが出力された場合には、その書き込みデータを生成部２６に、また、書き込みアドレスを記憶部２４に、それぞれ、出力する。一方、検知・訂正部２６から選択回路３３に訂正要求が入力している場合には、選択回路３３は、検知・訂正部２６から訂正要求と共に出力された訂正データを生成部２５に、また、訂正アドレスを記憶部２４に、それぞれ、出力する。
【００３０】
また、この書き込み部２２は、検知・訂正部２６から出力された訂正要求を保留要求として読み書き制御部１９に向けて出力する。
【００３１】
生成部２５は、書き込み部２２に接続されており、書き込み部２２から書き込みデータあるいは訂正データを受け取った場合には、その書き込みデータあるいは訂正データのエラーを検知する符号（エラー検知符号とも記す）を生成する機能を備えている。この第２実施形態では、書き込みデータは、前記の如く、前半データと後半データに分けられた状態で記憶部２４に記憶される。このため、生成部２５は、前半データ用のエラー検知符号と、後半データ用のエラー検知符号とを生成するが、それら前半データ用と後半データ用の各エラー検知符号の生成には書き込みデータの全てを利用する。
【００３２】
生成部２５による符号の生成手法の具体例を以下に述べる。ここでは、書き込み対象のデータは、６４ビットのデータとする。この場合には、生成部２５は、前半データ（３２ビット）に対応する４ビットの前半データ用のエラー検知符号と、後半データ（３２ビット）に対応する４ビットの後半データ用のエラー検知符号との合計８ビットのエラー検知符号を生成する。ここでは、その８ビットのエラー検知符号を構成するｉ番目の位（ビット）の数値をＰ[ｉ]（なお、ｉ＝０，１，２，・・・７）と表すこととする。また、６４ビットの書き込みデータを構成するｊ番目の位（ビット）の数値をＤ［ｊ］（なお、ｊ＝０，１，２，・・・６３）と表すこととする。
【００３３】
生成部２５は、Ｐ[０]〜Ｐ[７]をそれぞれ算出する際に、書き込みデータを構成する全てのＤ［ｊ］の中から予め与えられている選択規則に基づいて選択されたＤ［ｊ］を利用する。その選択されるＤ［ｊ］は次のような条件を満たすように選択される。つまり、Ｐ[０]＾Ｐ[１]＾Ｐ[２]＾Ｐ[３]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、書き込みデータにおける前半データの各ビット（つまり、Ｄ[０]〜Ｄ[３１]）が奇数項含まれるようにする。かつ、その演算の計算項として、書き込みデータにおける後半データの各ビット（つまり、Ｄ[３２]〜Ｄ[６３]）が偶数項含まれるようにする。また、Ｐ[４]＾Ｐ[５]＾Ｐ[６]＾Ｐ[７]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、書き込みデータにおける前半データの各ビット（つまり、Ｄ[０]〜Ｄ[３１]）が偶数項含まれるようにする。かつ、その演算の計算項として、書き込みデータにおける後半データの各ビット（つまり、Ｄ[３２]〜Ｄ[６３]）が奇数項含まれるようにする。
【００３４】
さらに、ここで、実際のデータを構成する各ビットの数値を利用して、各Ｐ[０]〜Ｐ[７]を算出する計算式の計算を行った場合に、その計算により得られる算出値を各Ｑ[０]〜Ｑ[７]とする。Ｐ[０]＾Ｑ[０]、Ｐ[１]＾Ｑ[１]というように、エラー検知符号における各ビットＰ[ｉ]と、それに対応する算出値Ｑ[ｉ]（なお、ｉ＝０，１，２，・・・７）との排他的論理和によりビットパターンが得られる。この得られるビットパターンによって、記憶部２４に記憶されている１ビットエラーのエラー位置を特定できるように各Ｐ[０]〜Ｐ[７]を算出する計算式で利用するＤ［ｊ］が選択される。
【００３５】
より具体的には、生成部２５は、次のように選択されたＤ［ｊ］に基づいた各Ｐ[０]〜Ｐ[７]の計算式（生成式）に従ってエラー検知符号を生成する。
【００３６】
2017156940.tif 000003
【００３７】
2017156940.tif 000004
【００３８】
2017156940.tif 000005
【００３９】
2017156940.tif 000006
【００４０】
2017156940.tif 000007
【００４１】
2017156940.tif 000008
【００４２】
2017156940.tif 000009
【００４３】
2017156940.tif 000010
【００４４】
読み出し部２３は、読み書き制御部１９に接続されており、読み書き制御部１９から次のような情報を受け取る機能を備えている。その読み書き制御部１９から受け取る情報とは、データの読み出しを要求する読み出し要求、および、読み出し対象のデータ（以下、読み出しデータとも記す）が記憶されている記憶部２４の記憶位置を表す読み出しアドレスである。なお、この第２実施形態では、前記の如く、書き込みデータは、前半データと後半データとに分けられた状態で記憶部２４に記憶される。このことにより、読み出しアドレスには、前半データの記憶位置を表す前半読み出しアドレスと、後半データの記憶位置を表す後半読み出しアドレスとの種類が有る。以下の説明では、前半読み出しアドレスと、後半読み出しアドレスとを区別して記す場合と、それらをまとめて単に読み出しアドレスと記す場合とが有る。また、読み出し要求にも、前半読み出し要求と、後半読み出し要求との種類が有るが、以下の説明では、前半読み出し要求と、後半読み出し要求とを区別して記す場合と、それらをまとめて単に読み出し要求と記す場合とが有る。
【００４５】
さらに、読み出し部２３は、検知・訂正部２６に接続されており、当該検知・訂正部２６から、記憶部２４に記憶されているデータに訂正が必要であることを表す訂正要求、および、訂正データが記憶されている記憶部２４の記憶位置を表す訂正アドレスを受け取る。なお、この第２実施形態では、検知・訂正部２６から出力される訂正要求には、前述したような前半データに訂正が必要であることを表す前半訂正要求と、後半データに訂正が必要であることを表す後半訂正要求との種類が有る。以下の説明では、前半訂正要求と、後半訂正要求とを分けて記す場合と、それらをまとめて単に訂正要求として記す場合とが有る。また、訂正アドレスにも、前半訂正アドレスと、後半訂正アドレスとの種類があるが、それらを分けて記す場合と、まとめた単に訂正アドレスと記す場合とが有る。
【００４６】
さらに、読み出し部２３は、訂正要求を受け取っていない状態で読み書き制御部１９から読み出し要求を受け取った場合には、その読み出し要求を記憶部２４に向けて出力する機能を備えている。さらに、この場合には、読み出し部２３は、読み出しアドレスも記憶部２４に向けて出力する機能を備えている。
【００４７】
さらにまた、読み出し部２３は、訂正要求を受け取った場合には、その訂正要求を保留要求として読み書き制御部１９に向けて出力する機能を備えている。その保留要求を受け取った読み書き制御部１９は、動作を保留する。また、読み出し部２３は、訂正要求を受け取った場合には、訂正アドレスを記憶部２４に向けて出力する機能を備えている。
【００４８】
図５は、読み出し部２３の一回路構成例を表す回路図である。図５に表される読み出し部２３の回路は、論理積（ＡＮＤ）回路３５と、選択回路３６とを備えている。図５に表される回路では、論理積回路３５の入力部の一つには、読み書き制御部１９から出力される読み出し要求が入力し、論理積回路３５の別の入力部である反転入力部には、検知・訂正部２６から出力される訂正要求が入力する。論理積回路３５の出力部は、記憶部２４に接続されている。論理積回路３５は、検知・訂正部２６から訂正要求を受け取っていない状態で読み書き部１９から読み出し要求を受け取った場合には、その読み出し要求をそのまま記憶部２４に向けて出力する。一方、論理積回路３５は、検知・訂正部２６から訂正要求を受け取った場合には、情報の出力は無く、その訂正要求は読み出し部２３から保留要求として読み書き制御部１９に向けて出力される。また、訂正要求は、読み出し部２３から記憶部２４にも出力される。
【００４９】
選択回路３６の入力部の一つには、読み書き制御部１９から、読み出しアドレスが入力する。選択回路３６の別の入力部には、検知・訂正部２６から、訂正アドレスが入力する。また、選択回路３６の制御入力部には、検知・訂正部２６から制御信号として訂正要求が入力する。さらにまた、選択回路３６の出力部は、記憶部２４に接続されている。
【００５０】
選択回路３６は、検知・訂正部２６から制御入力部に訂正要求が入力していない場合には、読み書き制御部１９から出力された読み出しアドレスを記憶部２４に向けて出力する。一方、選択回路３６は、検知・訂正部２６から訂正要求が入力している場合には、検知・訂正部２６から出力された訂正アドレスを記憶部２４に向けて出力する。
【００５１】
記憶部２４は、書きこみ部２２から書き込み要求を受け取った場合に、書き込み部２２から供給される書き込みアドレスに基づいて、書き込みデータと、生成部２５から受け取ったエラー検知符号とを関連付けられた状態で記憶する機能を備えている。
【００５２】
また、記憶部２４は、読み出し部２３から読み出し要求および読み出しアドレスを受け取った場合に、その読み出しアドレスに基づいて、読み出しデータを読み出して検知・訂正部２６に出力する機能を備えている。
【００５３】
さらに、記憶部２４は、検知・訂正部２６から出力された訂正要求と訂正アドレスを読み出し部２３を介して受け取り、訂正アドレスに基づいて訂正データを読み出し、当該読み出した訂正データを検知・訂正部２６に出力する機能を備えている。
【００５４】
図６は、記憶部２４の一回路構成例を表す回路図である。この図６に表される記憶部２４は、前半記憶部３８と、後半記憶部３９と、論理和（ＯＲ）回路４０，４１と、選択回路４２，４３と、分配回路４４とを備えている。
【００５５】
この回路例では、書き込み部２２から記憶部２４に加えられた前半書き込み要求は、書き込み許可として前半記憶部３８に供給される。また、書き込み部２２から記憶部２４に加えられた後半書き込み要求は、書き込み許可として後半記憶部３９に供給される。さらに、書き込み部２２から記憶部２４に加えられた書き込みアドレスは、前半記憶部３８および後半記憶部３９に供給される。
【００５６】
分配回路４４には、書き込みデータが書き込み部２２から加えられる。また、分配回路４４には、生成部２５から、書き込みデータに関するエラー検知符号が加えられる。分配回路４４は、書き込みデータを前半データと後半データに分け、また、エラー検知符号を前半データ用のエラー検知符号と後半データ用のエラー検知符号に分ける。そして、分配回路４４は、前半データと前半データ用のエラー検知符号を前半記憶部３８に向けて出力し、また、後半データと後半データ用のエラー検知符号を後半記憶部３９に向けて出力する。
【００５７】
前半記憶部３８は、書き込み部２２から書き込み許可を受け取っている状態で前半データと前半データ用のエラー検知符号を受け取った場合に、書き込み部２２からの書き込みアドレスに基づいて、それら前半データとエラー検知符号を関連付けた状態で記憶する。また、後半記憶部３９は、論理和回路４１から読み出し許可を受け取っている状態で後半データと後半データ用のエラー検知符号を受け取った場合に、書き込み部２２からの書き込みアドレスに基づいて、それら後半データとエラー検知符号を関連付けた状態で記憶する。
【００５８】
この回路例では、記憶部２４は、読み出し部２３に接続されており、読み出し部２３から出力された読み出し要求と、訂正要求と、読み出しアドレスと、訂正アドレスとを受け取り、当該受け取った要求やアドレスを検知・訂正部２６に出力する。
【００５９】
論理和回路４０は、読み出し部２３から出力される前半読み出し要求と、前半訂正要求と、後半訂正要求との何れかが加えられた場合には、読み出し許可を前半記憶部３８に向けて出力する。また、論理和回路４１は、読み出し部２３から出力される後半読み出し要求と、前半訂正要求と、後半訂正要求との何れかが加えられた場合には、読み出し許可を後半記憶部３９に向けて出力する。
【００６０】
選択回路４２には、前半読み出しアドレスと、後半読み出しアドレスとがそれぞれ読み出し部２３から加えられる。また、選択回路４２には、制御信号として、後半訂正要求が読み出し部２３から加えられる。選択回路４２は、制御信号である後半訂正要求が加えられている場合には前半読み出しアドレスおよび後半読み出しアドレスを前半記憶部３８に向けて出力する。また、選択回路４２は、後半訂正要求が加えられていない場合には前半読み出しアドレスを前半記憶部３８に向けて出力する。
【００６１】
選択回路４３には、前半読み出しアドレスと、後半読み出しアドレスとがそれぞれ読み出し部２３から加えられる。また、選択回路４３には、制御信号として、前半訂正要求が読み出し部２３から加えられる。選択回路４３は、制御信号である前半訂正要求が加えられている場合には、前半読み出しアドレスおよび後半読み出しアドレスを後半記憶部３９に向けて出力する。また、選択回路４３は、後半訂正要求が加えられていない場合には、後半読み出しアドレスを後半記憶部３９に向けて出力する。
【００６２】
論理和回路４０から読み出し許可を受け取っている状態で前半読み出しアドレスを受け取った前半記憶部３８は、前半読み出しアドレスに基づいて前半データを前半データ用のエラー検知符号と共に読み出し、読み出したデータを検知・訂正部２６に出力する。また、論理和回路４１から読み出し許可を受け取っている状態で後半読み出しアドレスを受け取った後半記憶部３９は、後半読み出しアドレスに基づいて後半データを後半データ用のエラー検知符号と共に読み出し、読み出したデータを検知・訂正部２６に出力する。
【００６３】
検知・訂正部２６は、記憶部２４から、読み出しデータと、読み出し情報とを受け取った場合には、読み出しデータにおけるビットエラーを検知する機能と、ビットエラーを検知した場合には当該ビットエラーを訂正する機能とを備えている。さらにまた、検知・訂正部２６は、前半データにも後半データにもエラーが有る場合には、リトライ要求を読み書き制御部１９に向けて通知する機能を備えている。読み書き制御部１９は、
図７は、検知・訂正部２６を構成する一回路構成例を表す回路図である。この図７に表される検知・訂正部２６の回路は、検知回路５０，５１と、訂正回路５２と、論理積回路５３，５４，５５，５６と、論理和回路５７，５８と、分配回路６０と、選択回路６１，６２と、論理和回路６３とを備えている。
【００６４】
検知回路５０は、記憶部２４に接続されており、当該検知回路５０には、記憶部２４から、前半読み出し要求と、前半データおよび前半データ用のエラー検知符号とが入力する。検知回路５０は、前半読み出し要求を受け取り、かつ、前半データおよび前半データ用のエラー検知符号を受け取った場合には、前半データにエラーが有るか否かを判断する。具体的には、例えば、検知回路５０は、受け取った前半データ（３２ビット：Ｄ[０]〜Ｄ[３１]）と、前半データ用のエラー検知符号（４ビット：Ｐ[０]〜Ｐ[３]）との排他的論理和を算出する。そして、検知回路５０は、算出値が“１”である場合には、読み出された前半データにエラーが有ることを表す情報を出力する。この情報は、前半訂正要求として読み出し部２３に向けて出力され、また、論理積回路５３，５４，５５に供給される。さらに、検知回路５０は、算出値が“０”である場合には、読み出された前半データにエラーが無いことを表す情報を出力する。
【００６５】
検知回路５１には、記憶部２４から、後半読み出し要求と、後半データおよび後半データ用のエラー検知符号とが入力する。検知回路５１は、後半読み出し要求を受け取り、かつ、後半データおよび後半データ用のエラー検知符号を受け取った場合には、後半データにエラーが有るか否かを判断する。具体的には、例えば、検知回路５１は、受け取った後半データ（３２ビット：Ｄ[３２]〜Ｄ[６３]）と、後半データ用のエラー検知符号（４ビット：Ｐ[４]〜Ｐ[７]）との排他的論理和を算出する。そして、検知回路５１は、算出値が“１”である場合には、読み出された後半データにエラーが有ることを表す情報を出力する。この情報は、論理積回路５３，５４，５６に供給される。さらに、検知回路５１は、算出値が“０”である場合には、読み出された後半データにエラーが無いことを表す情報を出力する。
【００６６】
論理積回路５３には、検知回路５０，５１から出力された各情報が入力する。当該論理積回路５３は、検知回路５０，５１の検知動作によって前半データと後半データの両方にエラーがあることが検知された場合には、再度データの読み出しを要求するリトライ要求を読み書き制御部１９に向けて出力する。読み書き制御部１９は、保留要求が解除された後に、リトライ要求とリトライアドレスを読み出し要求と読み出しアドレスとして読み出し部２３に出力する。
【００６７】
また、論理積回路５４には、検知回路５０，５１から出力された各情報が入力する。論理積回路５４は、検知回路５０，５１の検知動作によって、前半データにエラーが無く、かつ、後半データにエラーが有ることが検知された場合には、後半訂正要求を読み出し部２３に向けて出力する。
【００６８】
さらに、論理積回路５５には、検知回路５０から出力された情報と、前半読み出し要求とが入力する。論理積回路５５は、検知回路５０の検知動作によって、前半データにエラーが無いことが検知された場合には、前半読み出し要求を前半読み出し有効通知として論理和回路５７を通して出力する。
【００６９】
さらに、論理積回路５６には、検知回路５１から出力された情報と、後半読み出し要求とが入力する。論理積回路５６は、検知回路５１の検知動作によって、後半データにエラーが無いことが検知された場合には、後半読み出し要求を後半読み出し有効通知として論理和回路５８を通して出力する。
【００７０】
訂正回路５２には、記憶部２４から出力された前半データと前半データ用のエラー検知符号が加えられる。また、訂正回路５２には、記憶部２４から出力された後半データと後半データ用のエラー検知符号が加えられる。つまり、前述した検知回路５０，５１の検知動作によって前半データあるいは後半データにエラーが検知された場合には、訂正要求が読み出し部２３を介して記憶部２４に出力される。この場合には、記憶部２４によって、前半データおよび後半データとエラー検知符号が読み出され、これらは訂正回路５２に加えられる。訂正回路５２は、前半データと後半データとエラー検知符号を受け取ると、エラー検知符号を算出する際に利用する前述した計算式（生成式）と、読み出されたデータと、エラー検知符号とを利用して、エラーの発生ビット位置を検知する機能を備えている。すなわち、訂正回路５２は、計算式（生成式）に、読み出されたデータの各ビットを代入することにより得られる算出値Ｑ[０]〜Ｑ[7]と、読み出されたエラー検知符号Ｐ[０]〜Ｐ[7]との排他的論理和を算出し、これにより、算出値Ｅ[０]〜Ｅ[7]を得る。そして、訂正回路５２は、それら算出値Ｅ[０]〜Ｅ[7]によるビットパターンと、予め与えられている図８〜図１３に表されるエラー位置検知データとを照合し、エラーが発生しているビット位置を検知する。さらに、訂正回路５２は、検知したエラーのビット位置の数値を反転し、訂正後のデータ（訂正データ）を書き込み部２２に出力する。書き込み部２２は、訂正要求と訂正アドレスを受け取っている状態で訂正データを受け取ることにより、当該訂正データを訂正アドレスに基づいた記憶位置に書き込む。つまり、書き込み部２２は、記憶部２４のデータを訂正する。
【００７１】
分配回路６０は、訂正後のデータを前半データと後半データに分け、前半データを選択回路６１に出力し、後半データを選択回路６２に出力する。
【００７２】
選択回路６１には、読み出し部２３により読み出された前半データが加えられ、また、訂正回路５２により訂正された前半データが分配回路６０を通して加えられる。また、選択回路６１には、記憶部２４から訂正要求が制御信号として加えられる。選択回路６１は、訂正要求が加えられている場合には、訂正された前半データを読み出しデータとして出力し、訂正要求が加えられていない場合には、読み出し部２３により読み出されたままの前半データを出力する。
【００７３】
選択回路６２には、読み出し部２３により読み出された後半データが加えられ、また、訂正回路５２により訂正された後半データが分配回路６０を通して加えられる。また、選択回路６１には、記憶部２４から訂正要求が制御信号として加えられる。選択回路６１は、訂正要求が加えられている場合には、訂正された後半データを読み出しデータとして出力し、訂正要求が加えられていない場合には、読み出し部２３により読み出されたままの後半データを出力する。
【００７４】
論理和回路６３は、記憶部２４から前半訂正要求あるいは後半訂正要求が加えられると、訂正要求（訂正書き込み要求）として書き込み部２３に出力する。
【００７５】
このように、検知・訂正部２６は、読み出し部２３により読み出されたデータのエラー検知を行い、エラーが無かった読み出しデータはそのまま読み出し部２３を通して読み書き制御部１９に向けて出力する。また、検知・訂正部２６は、読み出しデータのエラー検知により１ビットエラーを検知した場合には、その１ビットエラーを訂正し、訂正後の読み出しデータを読み出し部２３を通して読み書き制御部１９に向けて出力する。さらに、検知・訂正部２６は、記憶部２４に記憶されている誤りデータを訂正する。
【００７６】
この第２実施形態のエラー検知装置２８およびそれを備えた記憶装置２０は、上記のように構成されている。この第２実施形態の記憶装置２０は、前半データあるいは後半データを読み出す際に、まず、読み出し対象の前半データあるいは後半データに関連付けられているエラー検知符号を利用して、前半データあるいは後半データに１ビットエラーが有るか否かを判断する。そして、記憶装置２０は、前半データあるいは後半データにエラーが有ると判断した場合には、前半データと後半データのうちの一方のエラー検知符号だけでなく、両方のエラー検知符号を利用してエラーが発生しているビット位置を検知する。そして、記憶装置２０は、検知したビット位置のビットを訂正することにより、読み出しデータを訂正し、訂正後の読み出しデータを出力する。
【００７７】
記憶装置２０がそのように構成されていることにより、前半データと後半データに、それぞれ、関連付けられるエラー検知符号は、前半データあるいは後半データにおけるエラーの有無を判断できる符号であればよい。このため、エラーの有無だけでなくエラーの発生位置の検知をも可能にする符号に比べて、この第２実施形態における前半データ用のエラー検知符号と後半データ用のエラー検知符号は、ビット数を少なくすることができる。
【００７８】
これにより、第２実施形態の記憶装置２０は、データの書き込みサイズと読み出しサイズが異なる場合におけるエラー検知用の符号に起因した記憶密度低下を抑制できるという効果を得ることができる。
【００７９】
＜その他の実施形態＞
なお、この発明は第１と第２の実施形態に限定されず、様々な実施の態様を採り得る。例えば、第２実施形態では、書き込みデータのサイズが６４ビットである具体例を示したが、本発明は、書き込みデータが他のサイズである記憶装置あるいはエラー検知装置にも適用することができる。
【００８０】
例えば、書き込みデータのサイズが３２ビットである場合には、前半データ（１６ビット）と、後半データ（１６ビット）には、４ビットのエラー検知符号がそれぞれ関連付けられる。それらエラー検知符号Ｐ[０]〜Ｐ[７]は、例えば、次のような計算式（生成式）により算出される。
【００８１】
2017156940.tif 000011
【００８２】
2017156940.tif 000012
【００８３】
2017156940.tif 000013
【００８４】
2017156940.tif 000014
【００８５】
2017156940.tif 000015
【００８６】
2017156940.tif 000016
【００８７】
2017156940.tif 000017
【００８８】
2017156940.tif 000018
【００８９】
上述したような符号Ｐ[０]〜Ｐ[７]の計算式を構成するＤ［ｊ］（なお、ｊ＝０，１，２，・・・３１）は次のような条件を満たす。すなわち、Ｐ[０]＾Ｐ[１]＾Ｐ[２]＾Ｐ[３]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、前半データの各ビット（つまり、Ｄ[０]〜Ｄ[１５]）が奇数項含まれるようにする。かつ、その演算の計算項として、後半データの各ビット（つまり、Ｄ[１６]〜Ｄ[３１]）が偶数項含まれるようにする。また、Ｐ[４]＾Ｐ[５]＾Ｐ[６]＾Ｐ[７]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、前半データの各ビット（つまり、Ｄ[０]〜Ｄ[１５]）が偶数項含まれるようにする。かつ、その演算の計算項として、後半データの各ビット（つまり、Ｄ[１６]〜Ｄ[３１]）が奇数項含まれるようにする。
【００９０】
さらに、ここで、実際のデータを構成する各ビットの数値を利用して、各Ｐ[０]〜Ｐ[７]を算出する計算式の計算を行った場合に、その計算により得られる算出値を各Ｑ[０]〜Ｑ[７]とする。Ｐ[０]＾Ｑ[０]、Ｐ[１]＾Ｑ[１]というように、エラー検知符号における各ビットＰ[ｉ]と、それに対応する算出値Ｑ[ｉ]（なお、ｉ＝０，１，２，・・・７）との排他的論理和によりビットパターンが得られる。この得られるビットパターンによって、記憶部２４に記憶されている１ビットエラーのエラー位置を特定できるように各Ｐ[０]〜Ｐ[７]を算出する計算式で利用するＤ［ｊ］が選択される。このような場合には、第２実施形態で述べたと同様に、算出値Ｑ［０］〜Ｑ［７］とエラー検知符号Ｐ［０］〜Ｐ［７］との排他的論理和である算出値Ｅ［０］〜Ｅ［７］と、図１４〜図１６に表されるエラー位置検知データとに基づいて、エラー位置が検知される。
【００９１】
このように、記憶装置２０は、書き込みデータのサイズが、６４ビットではなく、３２ビットである場合にも、第２実施形態と同様の構成を備えることにより、前半データと後半データのそれぞれに付与されるエラー検知符号のビット数を抑制できる。すなわち、エラー検知とエラー位置検知との両方を可能にするエラー検知符号を前半データと後半データのそれぞれに関連付ける場合には、前半データと後半データのそれぞれに５ビットのエラー検知符号を関連付ける必要がある。これに対し、第２実施形態では、上記の如く、前半データと後半データのそれぞれに付与されるエラー検知符号は４ビットであればよい。このように、第２実施形態の記憶装置２０の構成は、エラー検知符号のビット数を抑制できる。
【００９２】
また、本発明は、書き込みサイズが１２８ビットであるエラー検知装置および記憶装置にも適用できる。この場合には、前半データ（６４ビット）と後半データ（６４ビット）に関連付けられるエラー検知符号はそれぞれ５ビットであり、エラー検知符号Ｐ[０]〜Ｐ[９]は次のような計算式（生成式）により算出される。なお、この計算式においては、Ｐ[０]＾Ｐ[１]＾Ｐ[２]＾Ｐ[３]＾Ｐ[４]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、前半データの各ビット（つまり、Ｄ[０]〜Ｄ[６３]）が奇数項含まれるようにする。かつ、その演算の計算項として、後半データの各ビット（つまり、Ｄ[６４]〜Ｄ[１２７]）が偶数項含まれるようにする。また、Ｐ[５]＾Ｐ[６]＾Ｐ[７]＾Ｐ[８]＾Ｐ[９]（なお、記号“＾”は排他的論理和を表す演算記号である）の論理演算を考えた場合に、この演算の計算項として、前半データの各ビット（つまり、Ｄ[０]〜Ｄ[６３]）が偶数項含まれるようにする。かつ、その演算の計算項として、後半データの各ビット（つまり、Ｄ[６４]〜Ｄ[１２７]）が奇数項含まれるようにする。このような場合には、第２実施形態で述べたと同様に、算出値Ｑ［０］〜Ｑ［９］とエラー検知符号Ｐ［０］〜Ｐ［９］との排他的論理和である算出値Ｅ［０］〜Ｅ［９］と、図１７〜図２６に表されるエラー位置検知データとに基づいて、エラー位置が検知される。
【００９３】
2017156940.tif 000019
【００９４】
2017156940.tif 000020
【００９５】
2017156940.tif 000021
【００９６】
2017156940.tif 000022
【００９７】
2017156940.tif 000023
【００９８】
2017156940.tif 000024
【００９９】
2017156940.tif 000025
【０１００】
2017156940.tif 000026
【０１０１】
2017156940.tif 000027
【０１０２】
2017156940.tif 000028
【０１０３】
さらに、第２実施形態では、１ビットエラーの位置を検知する手法が説明されている。これに代えて、検知・訂正部２６は、２ビットエラーを検知してもよい。この場合には、例えば、検知・訂正部２６は、エラー訂正のために前半データと後半データの両データおよびエラー検知符号を記憶部２４から取得した際に算出するＥ[０]〜Ｅ[７]によるビットパターンにより２ビットエラーを検知できる。すなわち、Ｅ[０]とＥ[２]とＥ[３]とＥ[４]とＥ[５]とＥ[６]とＥ[７]のうちの少なくとも１つが“１”であり、かつ、Ｅ[０]＾Ｅ[２]＾Ｅ[３]＾Ｅ[４]＾Ｅ[５]＾Ｅ[６]＾Ｅ[７]（Ｅ[０]〜Ｅ[７]の排他的論理和）が“０”であれば、２ビットエラーがあると検知できる。
【符号の説明】
【０１０４】
１，２８  エラー検知装置
２，２５  生成部
３，２６  検知・訂正部
５，２４  記憶部
８，２０  記憶装置
【図１】
2017156940.tif 000029
【図２】
2017156940.tif 000030
【図３】
2017156940.tif 000031
【図４】
2017156940.tif 000032
【図５】
2017156940.tif 000033
【図６】
2017156940.tif 000034
【図７】
2017156940.tif 000035
【図８】
2017156940.tif 000036
【図９】
2017156940.tif 000037
【図１０】
2017156940.tif 000038
【図１１】
2017156940.tif 000039
【図１２】
2017156940.tif 000040
【図１３】
2017156940.tif 000041
【図１４】
2017156940.tif 000042
【図１５】
2017156940.tif 000043
【図１６】
2017156940.tif 000044
【図１７】
2017156940.tif 000045
【図１８】
2017156940.tif 000046
【図１９】
2017156940.tif 000047
【図２０】
2017156940.tif 000048
【図２１】
2017156940.tif 000049
【図２２】
2017156940.tif 000050
【図２３】
2017156940.tif 000051
【図２４】
2017156940.tif 000052
【図２５】
2017156940.tif 000053
【図２６】
2017156940.tif 000054