(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024141243
(43)【公開日】2024-10-10
(54)【発明の名称】復号化装置、メモリ装置、通信装置、プログラム及び復号化方法
(51)【国際特許分類】
H03M 13/29 20060101AFI20241003BHJP
G06F 11/10 20060101ALI20241003BHJP
【FI】
H03M13/29
G06F11/10 648
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023052774
(22)【出願日】2023-03-29
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100088672
【弁理士】
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【弁理士】
【氏名又は名称】有田 貴弘
(74)【代理人】
【識別番号】100156177
【弁理士】
【氏名又は名称】池見 智治
(72)【発明者】
【氏名】藤江 智仁
(72)【発明者】
【氏名】松山 直樹
(72)【発明者】
【氏名】丸毛 靖久
【テーマコード(参考)】
5J065
【Fターム(参考)】
5J065AB01
5J065AC03
5J065AD07
5J065AD11
5J065AE06
5J065AF03
(57)【要約】
【課題】複数のデータを復元するために必要なデータ量を低減することが可能な技術を提供する。
【解決手段】復号化部は、第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って第1データを復元する第1復号化処理を実行する。復号化部は、第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、情報ビットまたは第1復号化処理で復元された第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って第2データを復元する第2復号化処理を実行する。情報ビットは、第1データ、または第2データよりも第1データに類似する中間データである。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って前記第1データを復元する第1復号化処理と、
前記第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、前記情報ビットまたは前記第1復号化処理で復元された前記第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って前記第2データを復元する第2復号化処理と
を実行する復号化部を備え、
前記情報ビットは、前記第1データ、または前記第2データよりも前記第1データに類似する中間データである、復号化装置。
【請求項2】
請求項1に記載の復号化装置であって、
前記情報ビットは前記第1データであり、
前記復号化部は、前記第1データに類似する第3データに対する第3誤り訂正符号化で得られる第3符号ビットと、復元される前の元の前記第1データまたは前記第1復号化処理で復元された前記第1データとを含む第3の符号ビット含有データに対して第3誤り訂正復号化を行って前記第3データを復元する第3復号化処理を実行する、復号化装置。
【請求項3】
請求項1に記載の復号化装置であって、
前記情報ビットは前記第1データであり、
前記復号化部は、前記第2データに類似する第3データに対する第3誤り訂正符号化で得られる第3符号ビットと、前記第2復号化処理で復元された前記第2データとを含む第3の符号ビット含有データに対して第3誤り訂正復号化を行って前記第3データを復元する第3復号化処理を実行する、復号化装置。
【請求項4】
請求項1から請求項3のいずれか一つに記載の復号化装置であって、
前記第1誤り訂正符号化の方式と前記第2誤り訂正符号化の方式とは互いに同じである、復号化装置。
【請求項5】
請求項1から請求項3のいずれか一つに記載の復号化装置であって、
前記第1誤り訂正符号化の方式と前記第2誤り訂正符号化の方式とは互いに異なる、復号化装置。
【請求項6】
請求項1から請求項3のいずれか一つに記載の復号化装置であって、
前記復号化部は、前記情報ビットでの第1予測誤りを含む前記第1データである第1の予測誤り含有第1データに対する第4誤り訂正符号化で得られる第4符号ビットと前記情報ビットとを含む第4の符号ビット含有データに対して第4誤り訂正復号化を行って前記第1の予測誤り含有第1データを復元し、復元した前記第1の予測誤り含有第1データと、前記第1予測誤りを示す第1予測誤りデータとに基づいて、前記第1予測誤りを含まない前記第1データを復元する第4復号化処理を実行する、復号化装置。
【請求項7】
請求項6に記載の復号化装置であって、
前記復号化部は、前記情報ビットでの第2予測誤りを含む前記第1データである第2の予測誤り含有第1データに対する第5誤り訂正符号化で得られる第5符号ビットと前記情報ビットとを含む第5の符号ビット含有データに対して第5誤り訂正復号化を行って前記第2の予測誤り含有第1データを復元し、復元した前記第2の予測誤り含有第1データと、前記第2予測誤りを示す第2予測誤りデータとに基づいて、前記第2予測誤りを含まない前記第1データを復元する第5復号化処理を実行する、復号化装置。
【請求項8】
請求項6に記載の復号化装置であって、
前記情報ビット、前記第1符号ビット及び前記第4符号ビットは、不揮発性メモリに記憶されており、
前記復号化部は、
前記第1復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第1符号ビットを含む前記第1の符号ビット含有データに対して前記第1誤り訂正復号化を行い、
前記第4復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第4符号ビットを含む前記第4の符号ビット含有データに対して前記第4誤り訂正復号化を行い、
前記不揮発性メモリからの前記情報ビットの読み出し回数または前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間に基づいて、前記第1復号化処理及び前記第4復号化処理のどちらを実行するかを決定する、復号化装置。
【請求項9】
請求項7に記載の復号化装置であって、
前記情報ビット、前記第1符号ビット、前記第4符号ビット及び前記第5符号ビットは、不揮発性メモリに記憶されており、
前記復号化部は、
前記第1復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第1符号ビットを含む前記第1の符号ビット含有データに対して前記第1誤り訂正復号化を行い、
前記第4復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第4符号ビットを含む前記第4の符号ビット含有データに対して前記第4誤り訂正復号化を行い、
前記第5復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第5符号ビットを含む前記第5の符号ビット含有データに対して前記第5誤り訂正復号化を行い、
前記不揮発性メモリからの前記情報ビットの読み出し回数及び前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間の少なくとも一方に基づいて、前記第1復号化処理、前記第4復号化処理及び前記第5復号化処理のいずれを実行するかを決定する、復号化装置。
【請求項10】
請求項6に記載の復号化装置であって、
前記復号化部は、前記第1復号化処理において前記第1データの復元に失敗した場合、前記第4復号化処理を実行する、復号化装置。
【請求項11】
請求項6に記載の復号化装置であって、
前記復号化部は、前記第4復号化処理で復元された前記第1データと前記第2符号ビットとを含む第6の符号ビット含有データに対して第6誤り訂正復号化を行って前記第2データを復元する第6復号化処理を実行する、復号化装置。
【請求項12】
請求項1から請求項3のいずれか一つに記載の復号化装置であって、
前記復号化部は、前記情報ビットでの第3予測誤りを含む前記第2データである第1の予測誤り含有第2データに対する第6誤り訂正符号化で得られる第6符号ビットと前記情報ビットとを含む第6の符号ビット含有データに対して第6誤り訂正復号化を行って前記第1の予測誤り含有第2データを復元し、復元した前記第1の予測誤り含有第2データと、前記第3予測誤りを示す第3予測誤りデータとに基づいて、前記第3予測誤りを含まない前記第2データを復元する第6復号化処理を実行する、復号化装置。
【請求項13】
請求項12に記載の復号化装置であって、
前記復号化部は、前記情報ビットでの第4予測誤りを含む前記第2データである第2の予測誤り含有第2データに対する第7誤り訂正符号化で得られる第7符号ビットと前記情報ビットとを含む第7の符号ビット含有データに対して第7誤り訂正復号化を行って前記第2の予測誤り含有第2データを復元し、復元した前記第2の予測誤り含有第2データと、前記第4予測誤りを示す第4予測誤りデータとに基づいて、前記第4予測誤りを含まない前記第2データを復元する第7復号化処理を実行する、復号化装置。
【請求項14】
請求項12に記載の復号化装置であって、
前記情報ビット、前記第2符号ビット及び前記第6符号ビットは、不揮発性メモリに記憶されており、
前記復号化部は、
前記第2復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第2符号ビットを含む前記第2の符号ビット含有データに対して前記第2誤り訂正復号化を行い、
前記第6復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第6符号ビットを含む前記第6の符号ビット含有データに対して前記第6誤り訂正復号化を行い、
前記不揮発性メモリからの前記情報ビットの読み出し回数または前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間に基づいて、前記第2復号化処理及び前記第6復号化処理のどちらを実行するかを決定する、復号化装置。
【請求項15】
請求項13に記載の復号化装置であって、
前記情報ビット、前記第2符号ビット、前記第6符号ビット及び前記第7符号ビットは、不揮発性メモリに記憶されており、
前記復号化部は、
前記第2復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第2符号ビットを含む前記第2の符号ビット含有データに対して前記第2誤り訂正復号化を行い、
前記第6復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第6符号ビットを含む前記第6の符号ビット含有データに対して前記第6誤り訂正復号化を行い、
前記第7復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第7符号ビットを含む前記第7の符号ビット含有データに対して前記第7誤り訂正復号化を行い、
前記不揮発性メモリからの前記情報ビットの読み出し回数及び前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間の少なくとも一方に基づいて、前記第2復号化処理、前記第6復号化処理及び前記第7復号化処理のいずれを実行するかを決定する、復号化装置。
【請求項16】
請求項12に記載の復号化装置であって、
前記復号化部は、前記第2復号化処理において前記第2データの復元に失敗した場合、前記第6復号化処理を実行する、復号化装置。
【請求項17】
請求項1から請求項3のいずれか一つに記載の復号化装置と、
前記復号化装置が実行する前記第1復号化処理及び前記第2復号化処理で使用される前記情報ビット、前記第1符号ビット及び前記第2符号ビットを記憶する不揮発性メモリと
を備え、
前記復号化装置は、前記不揮発性メモリから読み出された前記情報ビット、前記第1符号ビット及び前記第2符号ビットを使用して前記第1復号化処理及び前記第2復号化処理を実行する、メモリ装置。
【請求項18】
請求項1から請求項3のいずれか一つに記載の復号化装置と、
前記復号化装置が実行する前記第1復号化処理及び前記第2復号化処理で使用される前記情報ビット、前記第1符号ビット及び前記第2符号ビットを受信する通信部と
を備え、
前記復号化装置は、前記通信部が受信した前記情報ビット、前記第1符号ビット及び前記第2符号ビットを使用して前記第1復号化処理及び前記第2復号化処理を実行する、通信装置。
【請求項19】
コンピュータ装置を、請求項1から請求項3のいずれか一つに記載の復号化装置として機能させるためのプログラム。
【請求項20】
装置での復号化方法であって、
第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って前記第1データを復元する第1復号化処理と、
前記第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、前記情報ビットまたは前記第1復号化処理で復元された前記第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って前記第2データを復元する第2復号化処理と
を実行し、
前記情報ビットは、前記第1データ、または前記第2データよりも前記第1データに類似する中間データである、復号化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データを復元する技術に関する。
【背景技術】
【0002】
特許文献1及び2には、データの符号化あるいは復号化に関する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2016-99838号公報
【特許文献2】特開2015-142381号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
データを復元する技術については改善の余地がある。
【0005】
そこで、本開示は上述の点に鑑みて成されたものであり、複数のデータを復元するために必要なデータ量を低減することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
復号化装置の一態様は復号化部を備える。復号化部は、第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って第1データを復元する第1復号化処理を実行する。復号化部は、第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、情報ビットまたは第1復号化処理で復元された第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って第2データを復元する第2復号化処理を実行する。情報ビットは、第1データ、または第2データよりも第1データに類似する中間データである。
【0007】
また、メモリ装置の一態様は、上記の復号化装置と、復号化装置が実行する第1復号化処理及び第2復号化処理で使用される情報ビット、第1符号ビット及び第2符号ビットを記憶する不揮発性メモリとを備える。復号化装置は、不揮発性メモリから読み出された情報ビット、第1符号ビット及び第2符号ビットを使用して第1復号化処理及び第2復号化処理を実行する。
【0008】
また、通信装置の一態様は、上記の復号化装置と、復号化装置が実行する第1復号化処理及び第2復号化処理で使用される情報ビット、第1符号ビット及び第2符号ビットを受信する通信部とを備える。復号化装置は、通信部が受信した情報ビット、第1符号ビット及び第2符号ビットを使用して第1復号化処理及び第2復号化処理を実行する。
【0009】
また、プログラムの一態様は、コンピュータ装置を、上記の復号化装置として機能させるためのものである。
【0010】
また、復号化方法の一態様は装置での復号化方法である。復号化方法では、第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って第1データを復元する第1復号化処理が実行される。復号化方法では、第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、情報ビットまたは第1復号化処理で復元された第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って第2データを復元する第2復号化処理が実行される。情報ビットは、第1データ、または第2データよりも第1データに類似する中間データである。
【発明の効果】
【0011】
第1データ及び第2データを復元するために必要なデータ量を低減することができる。
【図面の簡単な説明】
【0012】
【
図1】データ処理システムの一例を示す概略図である。
【
図5】符号ビット含有データの一例を示す概略図である。
【
図9】複数のデータの関係の一例を示す概略図である。
【
図10】複数のデータの関係の一例を示す概略図である。
【
図11】復号化部の動作の一例を示す概略図である。
【
図13】復号化部の動作の一例を示す概略図である。
【
図15】復号化部の動作の一例を示す概略図である。
【
図17】復号化部の動作の一例を示す概略図である。
【
図18】符号化部の動作の一例を示す概略図である。
【
図19】復号化部の動作の一例を示す概略図である。
【
図21】符号化部の動作の一例を示す概略図である。
【
図22】符号化部の動作の一例を示す概略図である。
【
図23】復号化部の動作の一例を示す概略図である。
【
図24】復号化部の動作の一例を示す概略図である。
【
図27】符号化部の動作の一例を示す概略図である。
【
図28】復号化部の動作の一例を示す概略図である。
【
図30】符号化部の動作の一例を示す概略図である。
【
図31】復号化部の動作の一例を示す概略図である。
【
図33】符号化部の動作の一例を示す概略図である。
【
図34】復号化部の動作の一例を示す概略図である。
【
図35】符号化部の動作の一例を示す概略図である。
【
図36】復号化部の動作の一例を示す概略図である。
【
図37】データ処理システムの一例を示す概略図である。
【
図38】データ処理システムの一例を示す概略図である。
【
図39】データ処理システムの一例を示す概略図である。
【
図40】データ処理システムの一例を示す概略図である。
【
図41】データ処理システムの一例を示す概略図である。
【発明を実施するための形態】
【0013】
<データ処理システムの一例の概要>
図1はデータ処理システム1の構成の一例を示す図である。
図1に示されるように、データ処理システム1は、例えば、ホスト装置2及びメモリ装置3を備える。ホスト装置2は、メモリ装置3を制御する上位装置である。メモリ装置3は、例えば不揮発性メモリ装置である。メモリ装置3は、例えば不揮発性メモリ31を有する。メモリ装置3は、1つの半導体チップで構成されてもよいし、複数の半導体チップで構成されてもよい。メモリ装置3は半導体メモリ装置ともいえる。
【0014】
ホスト装置2は、データ処理システム1全体の動作を統括的に管理する。ホスト装置2は、データ処理システム1の本体装置であるといえる。ホスト装置2は、例えば、メモリ装置3とネットワークを介さずに直接的に通信することが可能である。
【0015】
ホスト装置2は、メモリ装置3からデータを読み出したり、メモリ装置3にデータを書き込んだりすることが可能である。例えば、ホスト装置2がメモリ装置3に対してデータの読み出しを指示すると、メモリ装置3は、不揮発性メモリ31内のデータを読み出してホスト装置2に出力する。ホスト装置2は、メモリ装置3からのデータを使用した処理を行う。例えば、ホスト装置2は、メモリ装置3から読み出したデータを加工して外部に出力してもよいし、他の処理を行ってもよい。ホスト装置2がデータの書き込みをメモリ装置3に指示すると、メモリ装置3は、ホスト装置2からのデータを不揮発性メモリ31内に書き込む。本開示でのデータは、少なくとも1ビットから成るデジタルデータである。
【0016】
<ホスト装置の構成例>
ホスト装置2は、例えば、制御部20、記憶部21及びインタフェース23を備える。ホスト装置2は例えばコンピュータ装置である。
【0017】
インタフェース23は、メモリ装置3が備える後述のインタフェース33と直接的に通信することが可能である。インタフェース23は例えばインタフェース回路ともいえる。また、インタフェース23は、例えば通信部あるいは通信回路ともいえる。インタフェース23は、メモリ装置3のインタフェース33と有線通信を行ってもよいし、無線通信を行ってもよい。また、インタフェース23は、インタフェース33とシリアル通信を行ってもよいし、パラレル通信を行ってもよい。メモリ装置3と通信するホスト装置2は、通信装置2であるといえる。
【0018】
制御部20は、ホスト装置2の他の構成要素を制御することによって、ホスト装置2の動作を統括的に管理することが可能である。制御部20は、例えば制御回路ともいえる。制御部20は、例えば少なくとも一つのプロセッサを備える。少なくとも一つのプロセッサには、例えば、CPU(Central Processing Unit)が含まれる。
【0019】
制御部20は、インタフェース23を通じてメモリ装置3に対して書き込み指示及び読み出し指示を行うことができる。制御部20は、メモリ装置3に書き込むデータを生成し、生成したデータをインタフェース23に送信させることができる。制御部20は、読み出し指示を受けたメモリ装置3が出力するデータをインタフェース23を通して取得することができる。制御部20は、インタフェース23がメモリ装置3から受信したデータを用いた処理を行う。
【0020】
記憶部21は、ROM(Read Only Memory)及びRAM(Random Access Memory)などの、制御部20のCPUが読み取り可能な非一時的な記録媒体を含んでもよい。記憶部21には、例えば、ホスト装置2を制御するためのプログラム21a等が記憶されている。制御部20の各種機能は、例えば、制御部20のCPUが記憶部21内のプログラム21aを実行することによって実現される。
【0021】
なお、ホスト装置2の構成は上記の例に限られない。例えば、制御部20は、複数のCPUを備えてもよい。また制御部20は、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。また、制御部20のすべての機能あるいは制御部20の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、記憶部21は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。
【0022】
また、ホスト装置2は、液晶ディスプレイ等の表示部を備えてもよい。この場合、ホスト装置2は、メモリ装置3から読み出したデータを表示部に表示させてもよい。また、ホスト装置2は、ユーザ入力を受け付ける入力部を備えてもよい。入力部は、例えば、マウス及びキーボードを備えてもよいし、ユーザのタッチ操作を検出するタッチセンサを備えてもよいし、ユーザの音声入力を受け付けるマイクを備えてもよい。
【0023】
<メモリ装置の構成例>
メモリ装置3は、例えば、制御部30、不揮発性メモリ31、揮発性メモリ32及びインタフェース33を備える。
【0024】
インタフェース33は、ホスト装置2のインタフェース23と通信することが可能である。インタフェース33は例えばインタフェース回路ともいえる。また、インタフェース33は、例えば通信部あるいは通信回路ともいえる。ホスト装置2と通信するメモリ装置3は通信装置3であるといえる。
【0025】
制御部30は、メモリ装置3の他の構成要素を制御することによって、メモリ装置3の動作を統括的に管理することが可能である。制御部30は、例えば制御回路ともいえる。制御部30は、例えば少なくとも一つのプロセッサを備える。少なくとも一つのプロセッサには、例えばCPUが含まれる。
【0026】
不揮発性メモリ31は、例えばフラッシュメモリである。不揮発性メモリ31は、例えばNANDフラッシュメモリである。不揮発性メモリ31には、例えば、メモリ装置3を制御するためのプログラム31a等が記憶されている。制御部30の各種機能は、例えば、制御部30のCPUが不揮発性メモリ31のプログラム31aを実行することによって実現される。
【0027】
揮発性メモリ32は例えばRAMである。揮発性メモリ32は、例えば、制御部30がデータ処理する際のワークメモリ等として機能する。
【0028】
制御部30は、ホスト装置2からインタフェース33を通じて読み出し指示を受け取ると、不揮発性メモリ31からデータを読み出す。そして、制御部30は、読み出したデータをインタフェース33に送信させる。また、制御部30は、ホスト装置2からインタフェース33を通じて書き込み指示とデータを受け取ると、受け取ったデータを不揮発性メモリ31に書き込む。なお、制御部30は、自身で生成したデータを不揮発性メモリ31に書き込んでもよい。
【0029】
メモリ装置3の構成は上記の例に限られない。例えば、制御部30は、複数のCPUを備えてもよいし、少なくとも一つのDSPを備えてもよい。また、制御部30のすべての機能あるいは制御部30の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、制御部30は、不揮発性メモリ31及び揮発性メモリ32以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。
【0030】
<メモリ装置でのデータの復号化について>
NANDフラッシュメモリ等の不揮発性メモリの特性として、リテンション(データリテンションともいう)及びリードディスターブが知られている。リテンションとは、時間の経過によってメモリセルに格納された電子が抜けて、記憶データのビットの値が“0”から“1”に変化してデータ誤りが発生する現象である。不揮発性メモリにデータが記憶されてからの経過時間(言い換えればデータ保持時間)が長くなると、当該データでの誤りビット数が多くなる傾向にある。記憶データのビットの値が“0”であるとはメモリセルに電荷が入っている状態であり、記憶データのビットの値が“1”であるとはメモリセルに電荷が入っていない状態である。
【0031】
一方で、リードディスターブとは、不揮発性メモリに対するデータ読み出しによって生じる、記憶データのビットの値が“1”から“0”に変化してデータ誤りが発生する現象である。不揮発性メモリからのデータの読み出し回数が多くなると、当該データでの誤りビット数が多くなる傾向にある。
【0032】
本例では、不揮発性メモリ31は、誤り訂正符号化されたデータを記憶する。制御部30は、不揮発性メモリ31から読み出したデータに対して誤り訂正復号化を行って、元のデータ(言い換えれば正しいデータ)を復元する。制御部30は、復元したデータをインタフェース33に送信させる。これにより、リテンション及びリードディスターブによって不揮発性メモリ31が記憶するデータに誤りが発生したとしても、制御部30は、正しいデータ(言い換えれば元のデータ)を取得することができる。
【0033】
制御部30は、不揮発性メモリ31から読み出されたデータに対して誤り訂正復号化を行う復号化部300を備える。制御部30は、復号化部300を備える復号化装置であるといえる。復号化部300は、例えば、制御部30のCPUが不揮発性メモリ31内のプログラム31aを実行することによって実現される機能ブロックである。なお、復号化部300のすべての機能あるいは復号化部300の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。
【0034】
<第1の例>
図2は不揮発性メモリ31に記憶されているデータ10を示す概略図である。データ10は、例えば、複数ビットから成るデータ100Aと、符号ビット110Aと、符号ビット110Bとを含む。データ100A、符号ビット110A及び符号ビット110Bは互いに対応付けられて不揮発性メモリ31に記憶されている。符号ビット110A及び符号ビット110Bは、例えば、データ100Aに付加されていると見てもよい。不揮発性メモリ31には、データ10と同様の複数のデータが記憶されてもよい。
【0035】
符号ビット110Aは、データ100Aを情報ビットとする誤り訂正符号化で得られる符号ビットである。つまり、符号ビット110Aは、データ100Aに対する誤り訂正符号化で得られる符号ビットである。情報ビットとしてのデータ100Aと、それに対応する符号ビット110Aとから成るデータは、データ100Aに対する誤り訂正符号化によって得られる誤り訂正符号化データであるといえる。誤り訂正符号化データは単に誤り訂正符号とも呼ばれる。
【0036】
一方で、符号ビット110Bは、データ100Aに類似するデータ100B(後述の
図3参照)を情報ビットとする誤り訂正符号化で得られる符号ビットである。つまり、符号ビット110Bは、データ100Bに対する誤り訂正符号化で得られる符号ビットである。情報ビットとしてのデータ100Bと、それに対応する符号ビット110Bとから成るデータは、データ100Bに対する誤り訂正符号化によって得られる誤り訂正符号化データ(言い換えれば誤り訂正符号)といえる。データ100Bのビット数は、例えばデータ100Aのビット数と同じである。
【0037】
図3に示されるように、データ100A及びデータ100Bは、符号化部50で誤り訂正符号化が行われる。符号化部50は、例えば、データ処理システム1の外部に位置する外部装置に設けられている。符号化部50は、データ100Aに対して誤り訂正符号化を行うことによって符号ビット110Aを生成する。また、符号化部50は、データ100Bに対して誤り訂正符号化を行うことによって符号ビット110Bを生成する。不揮発性メモリ31には、外部装置の符号化部50で生成された符号ビット110A及び符号ビット110Bを含むデータ10が記憶される。
【0038】
符号化部50は、CPU等のプロセッサがプログラムを実行することによって形成される機能ブロックであってもよい。また、符号化部50のすべての機能あるいは符号化部50の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。
【0039】
データ100A及びデータ100Bに対する誤り訂正符号化の方式(言い換えれば、符号ビット110A及び符号ビット110Bの生成で使用される誤り訂正符号化の方式)は、例えば、BCH符号を生成する方式(BCH符号化方式ともいう)であってもよい。また、データ100A及びデータ100Bに対する誤り訂正符号化の方式は、LDPC( Low Density Parity Check)符号を生成する方式であってもよい。
【0040】
また、データ100Aに対する誤り訂正符号化の方式(言い換えれば、符号ビット110Aの生成で使用される誤り訂正符号化の方式)と、データ100Bに対する誤り訂正符号化の方式(言い換えれば、符号ビット110Bの生成で使用される誤り訂正符号化の方式)とは、互いに同じであってもよいし、互いに異なってもよい。
【0041】
例えば、データ100Aに対する誤り訂正符号化の方式がBCH符号化方式である場合を考える。この場合、データ100Aのデータ量が2048バイトであって、符号ビット110Aのデータ量が244バイトであるとき、符号ビット110Aを用いた誤り訂正能力は例えば126ビットとなる。
【0042】
復号化部300は、
図4に示されるように、不揮発性メモリ31から読み出されたデータ10に含まれるデータ100A及び符号ビット110Aを含む符号ビット含有データ120Aに対して誤り訂正復号化を行って、データ100Aを復元する。これにより、リテンション等によって不揮発性メモリ31に記憶されているデータ100Aに誤りが発生している場合であっても、復号化部300は、元の正しいデータ100Aを取得することができる。符号ビット含有データ120Aは、データ100Aに対して誤り訂正符号化を行って得られる誤り訂正符号化データ(言い換えれば誤り訂正符号)であるといえる。
【0043】
符号110Aを用いた誤り訂正についての誤り訂正能力、つまり誤り訂正可能ビット数(訂正可能ビット数ともいう)をMaとする。復号化部300は、符号ビット含有データ120Aにおいて誤りが発生しているビットの数が訂正可能ビット数Ma以下の場合、符号ビット含有データ120Aに対して誤り訂正復号化を行うことによって、データ100Aを復元することができる。例えば、Ma=126の場合、復号化部300は、符号ビット含有データ120Aにおいて誤りが発生しているビットの数が126ビット以下の場合、データ100Aを復元することができる。
【0044】
以後、不揮発性メモリ31から読み出されたデータ及び符号ビットを、それぞれ、読み出しデータ及び読み出し符号と呼ぶことがある。
【0045】
また、
図4に示されるように、復号化部300は、不揮発性メモリ31から読み出されたデータ10に含まれるデータ100A及び符号ビット110Bを含む符号ビット含有データ120Bに対して誤り訂正復号化を行って、データ100Aに類似するデータ100Bを復元する。本例では、不揮発性メモリ31は、データ100Aを記憶するものの、データ100Bを記憶しない。
【0046】
ここで、2つのデータの間で同じビット位置のビットを比較した場合に値が異なるビットの数を相違ビット数と呼ぶ。そして、正しいデータ100Aと正しいデータ100Bとの間の相違ビット数を第1相違ビット数L1と呼ぶ。第1相違ビット数L1は、正しいデータ100Aと正しいデータ100Bとの間で同じビット位置のビットを比較した場合に値が異なるビットの数を意味する。例えば、正しいデータ100Aと正しいデータ100Bとの間で同じビット位置の値を比較した場合に、1ビット目、50ビット目、100ビット目、200ビット目及び300ビット目の値が異なる場合、第1相違ビット数L1は“5”となる。また、符号110Bを用いた誤り訂正についての誤り訂正能力、つまり誤り訂正可能ビット数をMbとする。訂正可能ビット数Mbは、符号110Aを用いた誤り訂正の訂正可能ビット数Maと同じであってもよいし、異なっていてもよい。
【0047】
第1相違ビット数L1は、例えば、訂正可能ビット数Mb以下である。第1相違ビット数L1は、訂正可能ビット数Mbと同じであってもよいし、訂正可能ビット数Mbの4分の3以下であってもよいし、訂正可能ビット数Mbの3分の2以下であってもよい。また、第1相違ビット数L1は、訂正可能ビット数Mbの半分以下であってもよいし、訂正可能ビット数Mbの3分の1以下であってもよいし、訂正可能ビット数Mbの4分の1以下であってもよい。
【0048】
また、2つのデータの間で同じビット位置のビットを比較した場合にビットの値が異なるビット位置を相違ビット位置と呼ぶ。また、データ100A及びデータ100Bの間での相違ビット位置を第1相違ビット位置と呼ぶ。第1相違ビット位置は、データ100A及びデータ100Bの間で同じビット位置のビットを比較した場合にビットの値が異なるビット位置を意味する。また、データ100Aにおいて、すべての第1相違ビット位置のビットから成る部分データを第1相違部分データと呼ぶことがある。例えば、第1相違ビット位置が、1ビット目、50ビット目、100ビット目、200ビット目及び300ビット目である場合、データ100Aでは、1ビット目、50ビット目、100ビット目、200ビット目及び300ビット目のビットから成る部分データが、第1相違部分データとなる。
【0049】
また、符号ビット含有データ120Bにおいて、読み出しデータ100Aでの第1相違部分データ121B以外の部分データと、読み出し符号ビット110Bとをまとめて、第1残部分データ122Bと呼ぶことがある。符号ビット含有データ120Bは、
図5に示されるように、第1相違部分データ121Bと、それ以外の第1残部分データ122Bとで構成される。以後、単にデータ100Bといえば、正しいデータ100Bを意味する。
【0050】
正しいデータ100Aは、第1相違ビット数L1と同じ数のビット数だけ誤りが発生したデータ100Bであると見ることができる。例えば、第1相違ビット数L1が30ビットである場合、正しいデータ100Aは、30ビットの誤りが発生しているデータ100Bであると見ることができる。読み出しデータ100Aに誤りが発生していない場合、読み出しデータ100Aは、第1相違ビット数L1と同じ数のビット数だけ誤りが発生したデータ100Bであると見ることができる。したがって、読み出しデータ100A及び読み出し符号ビット110Bを含む符号ビット含有データ120Bは、データ100Bに対して誤り訂正符号化を行って得られる誤り訂正符号化データであると見ることができる。よって、本例のように、符号ビット110Bを用いた誤り訂正の訂正可能ビット数Mbが第1相違ビット数L1以上であれば、復号化部300は、符号ビット含有データ120Bに対して誤り訂正復号化を行うことによって、データ100Bを復元することが可能となる。
【0051】
以後、データにおいて誤りが発生しているビットの数を、当該データの誤りビット数と呼ぶことがある。また、訂正可能ビット数Mbから第1相違ビット数L1を差し引いて得られる値を第1差分値N1と呼ぶ。第1相違ビット数L1が訂正可能ビット数Mbと同じであれば、N1=0となる。また、符号ビット含有データ120Bの第1相違部分データ121Bにおいて誤りが発生しているビットの数を第1相違部分誤りビット数X1と呼ぶ。第1相違部分誤りビット数X1は第1相違ビット数L1以下となる。また、符号ビット含有データ120Bの第1残部分データ122Bにおいて誤りが発生しているビットの数を、第1残部分誤りビット数Y1と呼ぶ。
【0052】
復号化部300は、第1残部分誤りビット数Y1が、第1差分値N1に対して第1相違部分誤りビット数X1を足し合わせて得られる値以下である場合、符号ビット含有データ120Bに対して誤り訂正復号化を行うことによってデータ100Bを復元することができる。つまり、以下の式(1)を満たす場合、復号化部300は、符号ビット含有データ120Bに対して誤り訂正復号化を行うことによってデータ100Bを復元することができる。
【0053】
【0054】
例えば、第1相違ビット数L1=30ビットであり、訂正可能ビット数Mb=126ビットである場合を考える。この場合、N1=96ビットとなる。符号ビット含有データ120Bの第1相違部分データ121Bに誤りが発生していない場合(つまりX1=0の場合)、符号ビット含有データ120Bの第1残部分データ122Bの誤りビット数が96ビット以下であれば(つまりY1≦96であれば)、復号化部300はデータ100Bを復元することができる。つまり、X1=0の場合、データ100Bを復元するために第1残部分データ122Bについて許容される誤りビット数は96ビットとなる。
【0055】
一方で、読み出しデータ100Aの第1相違部分データ121Bのあるビット位置のビットに誤りが発生すると、読み出しデータ100Aでの当該あるビット位置のビットの値は、データ100Bでの当該ある位置のビットの値と一致することになる。つまり、第1相違部分データ121Bの当該あるビット位置のビットの値は、データ100Bでの当該あるビット位置のビットの値と相違していないことになる。例えば、読み出しデータ100Aの第1相違部分データ121Bにおいて10ビットの誤りが発生している場合(つまりX1=10の場合)、読み出しデータ100Aは、30ビットの誤りが発生しているデータ100Bではなく、20ビット(=30ビット-10ビット)の誤りが発生しているデータ100Bと見ることができる。よって、第1相違部分データ121BにX1ビットの誤りが発生している場合、データ100Bを復元するために第1残部分データ122Bについて許容される誤りビット数は、第1相違部分データ121Bに誤りが発生していない場合と比較して、X1ビット分増加することになる。例えば、N1=96ビット、X1=10ビットの場合、第1残部分データ122Bの誤りビット数が106(=96+10)ビット以下であれば、復号化部300はデータ100Bを復元することができる。よって、上記(1)を満たす場合に、復号化部300は符号ビット含有データ120Bからデータ100Bを復元することができる。
【0056】
このように、本例では、符号ビット含有データ120Bの第1残部分データ122Bの誤りビット数が少なくとも第1差分値N1以下であれば、復号化部300は、符号ビット含有データ120Bからデータ100Bを復元することができる。
【0057】
なお、第1相違ビット数L1と訂正可能ビット数Mbとが一致して第1差分値N1=0である場合であっても、読み出しデータ100Aの第1相違部分データ121BにX1ビットの誤りが発生しているときには、復号化部300は、読み出しデータ100Aの第1残部分データ122Bの誤りビット数がX1ビット以下であれば、データ100Bを復元することができる。
【0058】
以上のように、本例では、復号化部300は、データ100A、符号ビット110A及び符号ビット110Bに基づいて、データ100Aとデータ100Bの両方を復元することができる。よって、復号化部300でのデータ100A及びデータ100Bの復元には、データ100Bが不要となる。よって、データ100A及びデータ100Bの復元に必要なデータ量を低減することができる。
【0059】
また、制御部30は不揮発性メモリ31からデータ100Bを読み出す必要がないことから、不揮発性メモリ31に対するアクセス頻度を低減することができる。
【0060】
本例では、データ100A及びデータ100Bのうちデータ100Aだけを含むデータ10から、データ100Aとデータ100Bの両方を復元することができることから、データ10は、データ100A及びデータ100Bが圧縮された圧縮データであるとみることもできる。よって、不揮発性メモリ31がデータ100A及びデータ100Bの両方を記憶する場合と比較して、不揮発性メモリ31の記憶領域の利用効率を向上させることができる。
【0061】
復号化部300は、
図6に示されるように、復元したデータ100A(復元データ100Aともいう)と読み出し符号ビット110Bを含む符号ビット含有データ120BBに対して誤り訂正復号化を行ってデータ100Bを復元してもよい。この場合、復元データ100Aには誤りが含まれていないことから、訂正可能ビット数Mbが第1相違ビット数L1と同じであったとしても、復号化部300はデータ100Bを確実に復元することができる。
【0062】
上記の例では、データ10において、2つの符号ビットがデータ100Aに付加されているが、3つ以上の符号ビットがデータ100Aに付加されてもよい。
【0063】
図7は、データ100Aに対して4つの符号ビット110A,110B,110C,110Dが付加されたデータ10(データ10aともいう)の一例を示す概略図である。
【0064】
符号ビット110Cは、データ100Aに類似するデータ100Cを情報ビットとする誤り訂正符号化で得られる符号ビットである。上述の符号化部50は、データ100Cに対して誤り訂正符号化を行って符号ビット110Cを生成する。符号ビット110Dは、データ100Aに類似するデータ100Dを情報ビットとする誤り訂正符号化で得られる符号ビットである。符号化部50は、データ100Dに対して誤り訂正符号化を行って符号ビット110Dを生成する。
【0065】
データ100A、データ100B、データ100C及びデータ100Dのビット数は、例えば、互いに同じである。データ100A、データ100B、データ100C及びデータ100Dのうち、少なくとも2つのデータに対する誤り訂正符号化の方式が互いに同じであってもよいし、互いに異なっていてもよい。
【0066】
符号ビット110Cを用いた誤り訂正の訂正可能ビット数は、正しいデータ100Aと正しいデータ100Cとの間の相違ビット数以上となっている。同様に、符号ビット110Dを用いた誤り訂正の訂正可能ビット数は、正しいデータ100Aと正しいデータ100Dとの間の相違ビット数以上となっている。符号ビット110Cを用いた誤り訂正の訂正可能ビット数、符号ビット110Dを用いた誤り訂正の訂正可能ビット数、訂正可能ビット数Ma及び訂正可能ビット数Mbの少なくとも2つの訂正可能ビット数は、互いに同じであってもよいし、互いに異なっていてもよい。
【0067】
復号化部300は、上述の
図4に示されるように、不揮発性メモリ31から読み出されたデータ10aに含まれるデータ100A及び符号ビット110Aを含む符号ビット含有データ120Aに対して誤り訂正復号化を行って、データ100Aを復元する。また、復号化部300は、不揮発性メモリ31から読み出されたデータ10aに含まれるデータ100A及び符号ビット110Bを含む符号ビット含有データ120Bに対して誤り訂正復号化を行って、データ100Bを復元する。あるいは、復号化部300は、上記の
図6に示されるように、復元データ100Aと読み出し符号ビット110Bを含む符号ビット含有データ120BBに対して誤り訂正復号化を行って、データ100Bを復元する。
【0068】
また、復号化部300は、
図8に示されるように、不揮発性メモリ31から読み出されたデータ10aに含まれるデータ100A及び符号ビット110Cを含む符号ビット含有データ120Cに対して誤り訂正復号化を行って、データ100Cを復元する。また、復号化部300は、不揮発性メモリ31から読み出されたデータ10aに含まれるデータ100A及び符号ビット110Dを含む符号ビット含有データ120Dに対して誤り訂正復号化を行って、データ100Dを復元する。
【0069】
図7及び8の例では、
図9に示されるように、データ100B、データ100C及びデータ100Dのそれぞれがデータ100Aに類似している。
図10に示されるように、データ100Bはデータ100Aに類似し、データ100Cはデータ100Bに類似し、データ100Dはデータ100Cに類似してもよい。
図11は、この場合の復号化部300の動作の一例を示す概略図である。
【0070】
図10及び11の例では、符号ビット110Cを用いた誤り訂正の訂正可能ビット数は、正しいデータ100Bと正しいデータ100Cとの間の相違ビット数以上となっている。また、符号ビット110Dを用いた誤り訂正の訂正可能ビット数は、正しいデータ100Cと正しいデータ100Dとの間の相違ビット数以上となっている。
【0071】
図11に示されるように、復号化部300は、上記の
図6の例と同様に、復元データ100Aと読み出し符号ビット110Bを含む符号ビット含有データ120BBに対して誤り訂正復号化を行って、データ100Bを復元する。また、復号化部300は、復元したデータ100B(復元データ100Bともいう)と読み出し符号ビット110Cを含む符号ビット含有データ120CCに対して誤り訂正復号化を行ってデータ100Cを復元する。そして、復号化部300は、復元したデータ100C(復元データ100Cともいう)と読み出し符号ビット110Dを含む符号ビット含有データ120DDに対して誤り訂正復号化を行ってデータ100Dを復元する。
【0072】
図10及び11の例では、データ100C、データ100B及びデータ100Dは、データ100Aに類似している必要は必ずしもないことから、データ100A、データ100B、データ100C及びデータ100Dの選択の自由度が向上する。
【0073】
<第2の例>
図12は不揮発性メモリ31に記憶されているデータ11を示す概略図である。データ11は、例えば、データ100Mと、上述の符号ビット110A及び符号ビット110Bとを含む。データ100Mは、データ100Bよりもデータ100Aに類似するデータである。データ100Mは、例えば、データ100Aとデータ100Bとの中間の中間データ100Mであるといえる。
【0074】
データ100M、データ100A及びデータ100Bのビット数は、例えば互いに同じである。データ100M、符号ビット110A及び符号ビット110Bは互いに対応付けられて不揮発性メモリ31に記憶されている。符号ビット110A及び符号ビット110Bは、例えば、データ100Mに付加されていると見てもよい。不揮発性メモリ31には、データ11と同様の複数のデータが記憶されてもよい。また、不揮発性メモリ31にデータ11が記憶される場合、上述のデータ10は不揮発性メモリ31に記憶されてもよいし、記憶されなくてもよい。
【0075】
ここで、正しいデータ100Aと正しいデータ100Mとの間の相違ビット数を第2相違ビット数L2とする。第2相違ビット数L2は、正しいデータ100Aと正しいデータ100Mとの間で同じビット位置のビットを比較した場合に値が異なるビットの数を意味する。
【0076】
データ100Aとデータ100Mとの間の第2相違ビット数L2は、データ100Aとデータ100Bとの間の第1相違ビット数L1よりも小さい。第2相違ビット数L2は、例えば、第1相違ビット数L1の半分であってもよいし、第1相違ビット数L1の4分の3以下であってもよいし、第1相違ビット数L1の3分の2以下であってもよい。また、第2相違ビット数L2は、第1相違ビット数L1の3分の1以下であってもよいし、第1相違ビット数L1の4分の1以下であってもよい。
【0077】
また、正しいデータ100Mと正しいデータ100Bとの間の相違ビット数を第3相違ビット数L3とする。第3相違ビット数L3=(L1-L2)となる。第3相違ビット数L3は、第2相違ビット数L2と同じであってもよいし、異なっていてもよい。例えば、第2相違ビット数L2が第1相違ビット数L1の半分であれば、第3相違ビット数L3は第2相違ビット数L2と同じとなる。
【0078】
第2相違ビット数L2は、符号ビット110Aを用いた誤り訂正の訂正可能ビット数Ma以下である。また、第3相違ビット数L3は、符号ビット110Bを用いた誤り訂正の訂正可能ビット数Mb以下である。
【0079】
復号化部300は、不揮発性メモリ31から読み出されたデータ11に基づいて、データ100A及びデータ100Bを復元する。
図13に示されるように、復号化部300は、不揮発性メモリ31から読み出されたデータ100M及び符号ビット110Aを含む符号ビット含有データ130Aに対して誤り訂正復号化を行って、データ100Aを復元する。また、
図13に示されるように、復号化部300は、読み出されたデータ100M及び符号ビット110Bを含む符号ビット含有データ130Bに対して誤り訂正復号化を行ってデータ100Bを復元する。本例では、不揮発性メモリ31は、データ100Mを記憶するものの、データ100A及びデータ100Bを記憶しない。
【0080】
ここで、正しいデータ100Mは、第2相違ビット数L2と同じ数のビット数だけ誤りが発生したデータ100Aであると見ることができる。例えば、第2相違ビット数L2が15ビットである場合、正しいデータ100Mは、15ビットの誤りが発生しているデータ100Aであると見ることができる。読み出しデータ100Mに誤りが発生していない場合、読み出しデータ100Mは、第2相違ビット数L2と同じ数のビット数だけ誤りが発生したデータ100Aであると見ることができる。したがって、読み出しデータ100M及び読み出し符号ビット110Aを含む符号ビット含有データ130Aは、データ100Aに対して誤り訂正符号化を行って得られる誤り訂正符号化データであると見ることができる。よって、本例のように、符号ビット110Aを用いた誤り訂正の訂正可能ビット数Maが第2相違ビット数L2以上であれば、復号化部300は、符号ビット含有データ130Aに対して誤り訂正復号化を行うことによって、データ100Aを復元することが可能となる。
【0081】
同様に、正しいデータ100Mは、第3相違ビット数L3と同じ数のビット数だけ誤りが発生したデータ100Bであると見ることができる。読み出しデータ100Mに誤りが発生していない場合、読み出しデータ100Mは、第3相違ビット数L3と同じ数のビット数だけ誤りが発生したデータ100Bであると見ることができる。よって、本例のように、符号ビット110Bを用いた誤り訂正の訂正可能ビット数Mbが第3相違ビット数L3以上であれば、復号化部300は、符号ビット含有データ130Bに対して誤り訂正復号化を行うことによって、データ100Bを復元することが可能となる。
【0082】
データ100M及びデータ100Aの間での相違ビット位置を第2相違ビット位置と呼ぶ。また、データ100Mにおいて、すべての第2相違ビット位置のビットから成る部分データを第2相違部分データと呼ぶことがある。また、符号ビット含有データ130Aにおいて、読み出しデータ100Mでの第2相違部分データ以外の部分データと、読み出し符号ビット110Aとをまとめて、第2残部分データと呼ぶ。符号ビット含有データ130Aは、第2相違部分データと、それ以外の第2残部分データとで構成される。
【0083】
また、訂正可能ビット数Maから第2相違ビット数L2を差し引いて得られた値を第2差分値N2と呼ぶ。また、符号ビット含有データ130Aの第2相違部分データにおいて誤りが発生しているビットの数を第2相違部分誤りビット数X2と呼ぶ。第2相違部分誤りビット数X2は第2相違ビット数L2以下となる。また、符号ビット含有データ130Aの第2残部分データにおいて誤りが発生しているビットの数を、第2残部分誤りビット数Y2と呼ぶ。
【0084】
図4の例のように、符号ビット含有データ120Bに対して誤り訂正復号化が行われる場合の上記の説明からも理解できるように、復号化部300は、第2残部分誤りビット数Y2が、第2差分値N2に対して第2相違部分誤りビット数X2を足し合わせて得られる値以下である場合、符号ビット含有データ130Aに対して誤り訂正復号化を行うことによってデータ100Aを復元することができる。つまり、以下の式(2)を満たす場合、復号化部300は、符号ビット含有データ130Aに対して誤り訂正復号化を行うことによってデータ100Aを復元することができる。
【0085】
【0086】
例えば、第2相違ビット数L2=15ビットであり、訂正可能ビット数Ma=126ビットである場合を考える。この場合、N2=111ビットとなる。符号ビット含有データ130Aにおいて第2相違部分データに誤りが発生していない場合(つまりX2=0の場合)、符号ビット含有データ130Aの第2残部分データの誤りビット数が111ビット以下であれば(つまりY2≦111であれば)、復号化部300はデータ100Aを復元することができる。つまり、X2=0の場合、データ100Bを復元するために第2残部分データについて許容される誤りビット数は111ビットとなる。
【0087】
一方で、読み出しデータ100Mの第2相違部分データにおいてX2ビットの誤りが発生している場合、読み出しデータ100Mは、L2ビットの誤りが発生しているデータ100Aではなく、(L2-X2)ビットの誤りが発生しているデータ100Aと見ることができる。よって、第2相違部分データにX2ビットの誤りが発生している場合、データ100Aを復元するために第2残部分データについて許容される誤りビット数は、第2相違部分データに誤りが発生していない場合と比較して、X2ビット分増加することになる。例えば、N2=111ビット、X2=10ビットの場合、第2残部分データの誤りビット数が121(=111+10)ビット以下であれば、復号化部300はデータ100Aを復元することができる。
【0088】
このように、符号ビット含有データ130Aの第2残部分データの誤りビット数(つまりY2)が少なくとも第2差分値N2以下であれば、復号化部300は、符号ビット含有データ130Aからデータ100Aを復元することができる。
【0089】
次に符号ビット含有データ130Bからのデータ100Bの復元について説明する。データ100M及びデータ100Bの間での相違ビット位置を第3相違ビット位置と呼ぶ。また、データ100Mにおいて、すべての第3相違ビット位置のビットから成る部分データを第3相違部分データと呼ぶことがある。また、符号ビット含有データ130Bにおいて、読み出しデータ100Mでの第3相違部分データ以外の部分データと、読み出し符号ビット110Bとをまとめて、第3残部分データと呼ぶことがある。符号ビット含有データ130Bは、第3相違部分データと、それ以外の第3残部分データとで構成される。
【0090】
また、訂正可能ビット数Mbから第3相違ビット数L3を差し引いて得られる値を第3差分値N3と呼ぶ。また、符号ビット含有データ130Bの第3相違部分データにおいて誤りが発生しているビットの数を第3相違部分誤りビット数X3と呼ぶ。また、符号ビット含有データ130Bの第3残部分データにおいて誤りが発生しているビットの数を、第3残部分誤りビット数Y3と呼ぶ。
【0091】
復号化部300は、以下の式(3)を満たす場合、復号化部300は、符号ビット含有データ130Bに対して誤り訂正復号化を行うことによってデータ100Bを復元することができる。
【0092】
【0093】
例えば、L3=15ビットであり、Mb=126ビットである場合を考える。この場合、N3=111ビットとなる。符号ビット含有データ130Bにおいて第3相違部分データに誤りが発生していない場合(つまりX3=0の場合)、符号ビット含有データ130Bの第3残部分データの誤りビット数が111ビット以下であれば(つまりY3≦111であれば)、復号化部300はデータ100Bを復元することができる。つまり、X3=0の場合、データ100Bを復元するために第3残部分データについて許容される誤りビット数は111ビットとなる。
【0094】
一方で、読み出しデータ100Mの第3相違部分データにおいてX3ビットの誤りが発生している場合、読み出しデータ100Mは、L3ビットの誤りが発生しているデータ100Bではなく、(L3-X3)ビットの誤りが発生しているデータ100Bと見ることができる。よって、第3相違部分データにX3ビットの誤りが発生している場合、データ100Bを復元するために第3残部分データについて許容される誤りビット数は、第3相違部分データに誤りが発生していない場合と比較して、X3ビット分増加することになる。例えば、N3=111ビット、X3=5ビットの場合、第3残部分データの誤りビット数が116(=111+5)ビット以下であれば、復号化部300はデータ100Bを復元することができる。
【0095】
このように、符号ビット含有データ130Bの第3残部分データの誤りビット数が少なくとも第3差分値N3以下であれば、復号化部300は、符号ビット含有データ130Bからデータ100Bを復元することができる。
【0096】
ここで、例えば、
図13の例のようにデータ100Mが使用されてデータ100Bが復元される場合と、
図4の例のようにデータ100Aが使用されてデータ100Bが復元される場合とで、訂正可能ビット数Maが同じであり、X1=X3=0である場合を考える。この場合、式(1)と式(3)とを比較しても理解できるように、データ100Bを復元するために、
図13に示される符号ビット含有データ130Bの第3残部分データについて許容される誤りビット数は、データ100Bを復元するために、
図4に示される符号ビット含有データ120Bの第1残部分データについて許容される誤りビット数よりも、(L1-L3)だけ大きくなる。例えば、L1=30ビット、L3=15ビットの場合、データ100Bを復元するために第3残部分データについて許容される誤りビット数は、データ100Bを復元するために第1残部分データについて許容される誤りビット数よりも15ビット分だけ大きくなる。よって、データ100Bの復元にデータ100Aが用いられる場合よりも、データ100Bの復元にデータ100Mが用いられる場合の方が、データ100Bを復元しやすくなる。
【0097】
なお、上述の
図7と同様に、データ11においても、データ100Mに対して3つ以上の符号ビットが付加されてもよい。例えば、
図14に示されるように、データ100Mに対して、符号ビット110A、符号ビット110B、符号ビット110C及び符号ビット110Dが付加されてもよい。この場合、復号化部300は、読み出しデータ100Mと読み出し符号ビット110Cを含む符号ビット含有データに対して誤り復号化を行ってデータ100Cを復元する。また、復号化部300は、読み出しデータ100Mと読み出し符号ビット110Dを含む符号ビット含有データに対して誤り復号化を行ってデータ100Dを復元する。
【0098】
また、上述の
図10のように、データ100Cがデータ100Bに類似し、データ100Dがデータ100Cに類似する場合には、
図15に示されるように、復号化部300は、復元データ100Aと読み出し符号ビット110Bとを含む符号ビット含有データ120BBに対して誤り訂正復号化を行ってデータ100Bを復元し、復元データ100Bと読み出し符号ビット110Cとを含む符号ビット含有データ120CCに対して誤り訂正復号化を行ってデータ100Cを復元し、復元データ100Cと読み出し符号ビット110Dとを含む符号ビット含有データ120DDに対して誤り訂正復号化を行ってデータ100Dを復元してもよい。
【0099】
<第3の例>
図16は不揮発性メモリ31に記憶されているデータ12を示す概略図である。データ12は、例えば、データ100Aと、上述の符号ビット110Aと、符号ビット111Aa1とを含む。データ100A、符号ビット110A及び符号ビット111Aa1は、例えば、互いに対応付けられて不揮発性メモリ31に記憶されている。符号ビット110A及び符号ビット111Aa1は、例えば、データ100Aに付加されていると見てもよい。不揮発性メモリ31には、データ12と同様の複数のデータが記憶されてもよい。また、不揮発性メモリ31にデータ12が記憶される場合、上述のデータ10及びデータ11の少なくとも一方は不揮発性メモリ31に記憶されてもよいし、記憶されなくてもよい。
【0100】
符号ビット111Aa1は、データ100Aでの予測誤りを含むデータ100A(予測誤り含有データ100Aa1ともいう)に対する誤り訂正符号化で得られる符号ビットである。符号化部50は、データ100Aでの予測誤りを示す予測誤りデータ200Aa1と正しいデータ100Aとに基づいて予測誤り含有データ100Aa1を生成する。そして、符号化部50は、生成した予測誤り含有データ100Aa1に対して誤り訂正符号化を行って符号ビット111Aa1を生成する。予測誤りデータ200Aa1は、例えば、データ100Aでの所定数Pのビットの予測誤りを示すデータである。Pは1以上の整数である。正しいデータ100A、予測誤りデータ200Aa1及び予測誤り含有データ100Aa1のビット数は、例えば互いに同じである。以後,所定数Pを予測ビット数Pと呼ぶことがある。
【0101】
図17は、正しいデータ100A、予測誤りデータ200Aa1及び予測誤り含有データ100Aa1の一例を示す概略図である。予測誤りデータ200Aa1は、例えば、データ100Aにおいて誤りが発生すると予測される所定数Pのビットのビット位置を示すデータである。ここで、あるデータにおいて誤りが発生すると予測されるビットのビット位置を予測誤りビット位置と呼ぶ。予測誤りデータ200Aa1では、例えば、データ100Aについての所定数Pの予測誤りビット位置のそれぞれについて、当該予測誤りビット位置と同じビット位置のビットの値が“1”となっている。所定数Pは、例えば、データ100Aのビット数よりも小さい。
【0102】
符号化部50は、
図18に示されるように、例えば、正しいデータ100Aと予測誤りデータ200Aa1との排他的論理和を演算し、その演算結果を予測誤り含有データ100Aa1とする。そして、符号化部50は、予測誤り含有データ100Aa1に対して誤り訂正符号化を行って符号ビット111Aa1を生成する。予測誤り含有データ100Aa1に対する誤り訂正符号化の方式(言い換えれば、符号ビット110Aa1の生成で使用される誤り訂正符号化の方式)は、データ100Aに対する誤り訂正符号化の方式(言い換えれば、符号ビット110Aの生成で使用される誤り訂正符号化の方式)と同じであってもよいし、異なっていてもよい。
【0103】
予測誤り含有データ100Aa1では、各予測誤りビット位置のビットの値が、正しいデータ100Aと比べて反転している。
図17に示される予測誤り含有データ100Aa1では、所定数Pの予測誤りビット位置のそれぞれのビットに下線が示されている。
【0104】
不揮発性メモリ31は、データ12を記憶し、予測誤り含有データ100Aa1を記憶していない。復号化部300は、不揮発性メモリ31から読み出されたデータ12に基づいてデータ100Aを復元する。
【0105】
復号化部300は、上記と同様に、読み出しデータ100A及び読み出し符号ビット110Aを含む符号ビット含有データ120Aに対して誤り訂正復号化を行ってデータ100Aを復元する。以後、符号ビット含有データ120Aに対して誤り訂正復号化を行う処理を、符号ビット110Aを用いた復号化処理と呼ぶことがある。
【0106】
また、復号化部300は、不揮発性メモリ31から読み出されたデータ100A及び符号ビット111Aa1を含む符号ビット含有データ140Aa1と予測誤りデータ200Aa1とに基づいて、予測誤りを含まない元のデータ100A(つまり正しいデータ100A)を復元する。具体的には、復号化部300は、
図19に示されるように、読み出しデータ100A及び読み出し符号ビット111Aa1を含む符号ビット含有データ140Aa1に対して誤り訂正復号化を行って、予測誤り含有データ100Aa1を復元する。そして、復号化部300は、復元した予測誤り含有データ100Aa1(復元予測誤り含有データ100Aa1ともいう)と予測誤りデータ200Aa1との排他的論理和を演算し、その演算結果を、復元された元のデータ100Aとする。復号化部300が使用する予測誤りデータ200Aa1は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図19に示される処理を、符号ビット111Aa1を用いた復号化処理と呼ぶことがある。また、符号ビット111Aa1のように、予測誤りを含むデータ100Aに対する誤り訂正符号化で得られる符号ビットを、データ100Aを復元するための誤り予測に基づく符号ビットと呼ぶことがある。
【0107】
ここで、読み出しデータ100Aにおいて、予測誤りデータ200Aa1が示すP個の予測誤りビット位置のビットから成るデータを予測対象部分データと呼ぶ。また、符号ビット含有データ140Aa1において、読み出しデータ100Aでの予測対象部分データ以外のデータと、読み出し符号ビット111Aa1とをまとめて、予測対象外部分データと呼ぶ。符号ビット含有データ140Aa1は、予測対象部分データと予測対象外部分データとで構成される。
【0108】
また、予測誤りデータ200Aa1が示すP個の予測誤りビット位置のうち、読み出しデータ100Aにおいて実際に誤りが発生しているビット位置の数を予測成功ビット数Qと呼ぶ。予測成功ビット数Qは、読み出しデータ100Aにおいて誤り予測が成功したビットの数を示している。また、予測誤りデータ200Aa1が示すP個の予測誤りビット位置のうち、読み出しデータ100Aにおいて実際には誤りが発生していないビット位置の数を予測失敗ビット数Rと呼ぶ。予測失敗ビット数Rは、読み出しデータ100Aにおいて誤り予測が失敗したビットの数を示している。
【0109】
また、符号ビット111Aa1を用いた誤り訂正の訂正可能ビット数をMaa1とする。また、訂正可能ビット数Maa1から予測失敗ビット数Rを差し引いて得られる値を差分値Sと呼ぶ。また、符号ビット含有データ140Aの予測対象外部分データにおいて誤りが発生しているビットの数を予測対象外部分誤りビット数Tと呼ぶ。
【0110】
復号化部300は、予測対象外部分誤りビット数Tが差分値S以下である場合、符号ビット含有データ140Aa1に対して誤り訂正復号化することによって予測誤り含有データ100Aa1を復元することができる。つまり、以下の式(4)を満たす場合、復号化部300は、符号ビット含有データ140Aa1に対して誤り訂正復号化することによって予測誤り含有データ100Aa1を復元することができる。
【0111】
【0112】
上述の
図19に示されるように、復号化部300は、復元した予測誤り含有データ100Aa1から元のデータ100Aを復元することができることから、式(4)を満たす場合、復号化部300は、元のデータ100Aを復元することができるといえる。
【0113】
例えば、予測失敗ビット数R=10ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、差分値S=116ビットなる。したがって、符号ビット含有データ140Aの予測対象外部分データにおいて誤りが発生しているビットの数(つまり予測対象外部分誤りビット数T)が116ビット以下であれば、復号化部300は、予測誤りを含まない元のデータ100Aを復元することができる。
【0114】
復号化部300での
図19に示される処理を、読み出しデータ100A及び読み出し符号ビット111Aa1を含む符号ビット含有データ140Aa1に対して誤り訂正を行って元のデータ100Aを復元する処理と見ると、復号化部300の実質的な誤り訂正能力は、予測成功ビット数Qに対して差分値Sを足し合わせて得られるビット数であると見ることができる。ただし、予測成功ビット数Qに対して差分値Sを足し合わせて得られるビット数が0以上であっても、予測対象外部分誤りビット数Tが差分値Sを超える場合には、復号化部300は、符号ビット含有データ140Aから元のデータ100Aを復元できない。
【0115】
例えば、予測ビット数P=200ビット、予測成功ビット数Q=200ビット、予測失敗ビット数R=0ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、データ100Aについての誤り予測の予測精度は100%といえる。差分値Sは126ビットとなることから、復号化部300の誤り訂正能力は326ビットとなり、符号ビット111Aa1を用いた誤り訂正の訂正可能ビット数Maa1を超えることになる。そして、予測対象外部分誤りビット数Tが126ビット以下であれば、復号化部300は符号ビット含有データ140Aa1から元のデータ100Aを復元することができる。
【0116】
他の例として、予測ビット数P=200ビット、予測成功ビット数Q=160ビット、予測失敗ビット数R=40ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、データ100Aについての誤り予測の予測精度は80%といえる。差分値Sは86ビットとなることから、復号化部300の誤り訂正能力は246ビットとなり、訂正可能ビット数Maa1を超えることになる。そして、予測対象外部分誤りビット数Tが86ビット以下であれば、復号化部300は符号ビット含有データ140Aa1から元のデータ100Aを復元することができる。
【0117】
他の例として、予測ビット数P=200ビット、予測成功ビット数Q=80ビット、予測失敗ビット数R=120ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、データ100Aについての誤り予測の予測精度は40%といえる。差分値Sは6ビットとなることから、復号化部300の誤り訂正能力は86ビットとなり、訂正可能ビット数Maa1未満となる。そして、予測対象外部分誤りビット数Tが6ビット以下であれば、復号化部300は符号ビット含有データ140Aa1から元のデータ100Aを復元することができる。
【0118】
他の例として、予測ビット数P=200ビット、予測成功ビット数Q=74ビット、予測失敗ビット数R=126ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、データ100Aについての誤り予測の予測精度は37%といえる。差分値Sは0ビットとなることから、予測対象外部分データに誤りが発生していなければ、復号化部300は符号ビット含有データ140Aa1から元のデータ100Aを復元することができる。
【0119】
他の例として、予測ビット数P=200ビット、予測成功ビット数Q=40ビット、予測失敗ビット数R=160ビット、訂正可能ビット数Maa1=126ビットである場合を考える。この場合、データ100Aについての誤り予測の予測精度は20%といえる。差分値Sは-34ビットとなり、マイナスとなることから、復号化部300は符号ビット含有データ140Aa1から元のデータ100Aを復元することはできない。
【0120】
データ100Aについての誤り予測は、例えば、データ100Aを記憶する不揮発性メモリ31の性能に基づいて行われる。つまり、予測誤りデータ200Aa1が示すP個の予測誤りビット位置は、例えば、データ100Aを記憶する不揮発性メモリ31の性能に基づいて決定される。
【0121】
例えば、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va1である場合にデータ100Aに発生する誤りを実機あるいはシミュレーションで複数回確認し、その複数回の確認結果から、P個の予測誤りビット位置が決定されてもよい。この場合、P個の予測誤りビット位置は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va1である場合のデータ100Aでの予測誤りビット位置となる。データ100Aについてのこのような誤り予測の方法を、読み出し回数に基づく予測方法と呼ぶことがある。
【0122】
また、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa1となったときにデータ100Aに発生する誤りを実機あるいはシミュレーションで複数回確認し、その複数回の確認結果から、P個の予測誤りビット位置が決定されてもよい。この場合、P個の予測誤りビット位置は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa1である場合のデータ100Aでの予測誤りビット位置となる。データ100Aについてのこのような誤り予測の方法を、経過時間に基づく予測方法と呼ぶことがある。
【0123】
復号化部300は、不揮発性メモリ31から読み出されたデータ12に基づいて、例えば、符号ビット110Aを用いた復号化処理(
図4参照)と、符号ビット111Aa1を用いた復号化処理(
図19参照)とを、並列的にあるいは順番に実行する。符号ビット110Aを用いた復号化処理と符号ビット111Aa1を用いた復号化処理の少なくとも一方で元のデータ100Aが復元された場合、復元されたデータ100Aは例えばホスト装置2に送信される。
【0124】
また、復号化部300は、まず、符号ビット110Aを用いた復号化処理を実行し、符号ビット110Aを用いた復号化処理においてデータ100Aの復元に失敗した場合に、符号ビット111Aa1を用いた復号化処理を実行してもよい。
【0125】
また、データ100Aについての誤り予測が、読み出し回数に基づく予測方法が使用されて行われる場合には、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数に基づいて、符号ビット110Aを用いた復号化処理と符号ビット111Aa1を用いた復号化処理のいずれを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va1未満の場合、符号ビット110Aを用いた復号化処理を実行し、当該読み出し回数が所定回数Va1以上の場合、符号ビット111Aa1を用いた復号化処理を実行してもよい。
【0126】
また、データ100Aについての誤り予測が、経過時間に基づく予測方法が使用されて行われる場合には、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間に基づいて、符号ビット110Aを用いた復号化処理と符号ビット111Aa1を用いた復号化処理のいずれを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれての経過時間が所定時間Wa1未満の場合、符号ビット110Aを用いた復号化処理を実行し、当該経過時間が所定時間Wa1以上の場合、符号ビット111Aa1を用いた復号化処理を実行してもよい。この場合、メモリ装置3には、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間を計測するタイマが設けられる。復号化部300は、当該タイマから、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間を取得する。
【0127】
このように、本例では、データ100Aでの予測誤りを含む予測誤り含有データ100Aa1に対する誤り訂正符号化で得られる符号ビット111Aa1とデータ100Aとを含む符号ビット含有データ140Aa1に基づいて、元のデータ100Aが復元される。これにより、符号ビット111Aa1を用いた誤り訂正の訂正可能ビット数(例えば126ビット)よりも大きいビット数の誤りが符号ビット含有データ140Aa1に発生したとしても、復号化部300はデータ100Aを復元することが可能となる。
【0128】
上記の例では、データ100Aに対して、データ100Aを復元するための誤り予測に基づく符号ビットが1つ付加されているが、当該符号ビットが複数付加されてもよい。
図20は、データ100Aを復元するための誤り予測に基づく符号ビット111Aa1,110Aa2,111Aa3がデータ100Aに対して付加されたデータ12(データ12aともいう)を示す概略図である。
【0129】
符号ビット111Aa2は、予測誤り含有データ100Aa1が含む予測誤りとは異なる、データ100Aでの予測誤りを含むデータ100A(予測誤り含有データ100Aa2ともいう)に対する誤り訂正符号化で得られる符号ビットである。以後、予測誤り含有データ100Aa1が含む予測誤りを第1予測誤りと呼ぶことがある。また、予測誤り含有データ100Aa2が含む予測誤りを第2予測誤りと呼ぶことがある。
【0130】
符号ビット111Aa3は、第1予測誤り及び第2予測誤りとは異なる、データ100Aでの第3予測誤りを含むデータ100A(予測誤り含有データ100Aa3ともいう)に対する誤り訂正符号化で得られる符号ビットである。
【0131】
符号化部50は、データ100Aでの第2予測誤りを示す予測誤りデータ200Aa2と正しいデータ100Aとに基づいて予測誤り含有データ100Aa2を生成する。予測誤りデータ200Aa2では、予測誤りデータ200Aa1と同様に、第2予測誤りでの各予測誤りビット位置のそれぞれについて、当該予測誤りビット位置と同じビット位置のビットの値が“1”となっている。符号化部50は、
図21に示されるように、例えば、正しいデータ100Aと予測誤りデータ200Aa2との排他的論理和を演算し、その演算結果を予測誤り含有データ100Aa2とする。そして、符号化部50は、予測誤り含有データ100Aa2に対して誤り訂正符号化を行って符号ビット111Aa2を生成する。予測誤り含有データ100Aa2に対する誤り訂正符号化の方式は、データ100Aに対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。また、予測誤り含有データ100Aa2に対する誤り訂正符号化の方式は、予測誤り含有データ100Aa1に対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。
【0132】
また、符号化部50は、データ100Aでの第3予測誤りを示す予測誤りデータ200Aa3と正しいデータ100Aとに基づいて予測誤り含有データ100Aa3を生成する。予測誤りデータ200Aa3では、予測誤りデータ200Aa1と同様に、第3予測誤りでの各予測誤りビット位置のそれぞれについて、当該予測誤りビット位置と同じビット位置のビットの値が“1”となっている。符号化部50は、
図22に示されるように、例えば、正しいデータ100Aと予測誤りデータ200Aa3との排他的論理和を演算し、その演算結果を予測誤り含有データ100Aa3とする。そして、符号化部50は、予測誤り含有データ100Aa3に対して誤り訂正符号化を行って符号ビット111Aa3を生成する。予測誤り含有データ100Aa3に対する誤り訂正符号化の方式は、データ100Aに対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。また、予測誤り含有データ100Aa3に対する誤り訂正符号化の方式は、予測誤り含有データ100Aa1に対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。また、予測誤り含有データ100Aa3に対する誤り訂正符号化の方式は、予測誤り含有データ100Aa2に対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。
【0133】
第1誤り予測、第2誤り予測及び第3誤り予測は互いに異なっていることから、予測誤りデータ200Aa1、予測誤りデータ200Aa2及び予測誤りデータ200Aa3は互いに異なっている。また、予測誤り含有データ100Aa1、予測誤り含有データ100Aa2及び予測誤り含有データ100Aa3は互いに異なっている。
【0134】
復号化部300は、不揮発性メモリ31から読み出されたデータ100A及び符号ビット111Aa2を含む符号ビット含有データ140Aa2と予測誤りデータ200Aa2とに基づいて、予測誤りを含まない元のデータ100Aを復元する。具体的には、復号化部300は、
図23に示されるように、符号ビット含有データ140Aa2に対して誤り訂正復号化を行って、予測誤り含有データ100Aa2を復元する。そして、復号化部300は、復元した予測誤り含有データ100Aa2(復元予測誤り含有データ100Aa2ともいう)と予測誤りデータ200Aa2との排他的論理和を演算し、その演算結果を、復元された元のデータ100Aとする。復号化部300が使用する予測誤りデータ200Aa2は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図23に示される処理を、符号ビット111Aa2を用いた復号化処理と呼ぶことがある。
【0135】
また、復号化部300は、不揮発性メモリ31から読み出されたデータ100A及び符号ビット111Aa3を含む符号ビット含有データ140Aa3と予測誤りデータ200Aa3とに基づいて、予測誤りを含まない元のデータ100Aを復元する。具体的には、復号化部300は、
図24に示されるように、符号ビット含有データ140Aa3に対して誤り訂正復号化を行って、予測誤り含有データ100Aa3を復元する。そして、復号化部300は、復元した予測誤り含有データ100Aa3(復元予測誤り含有データ100Aa3ともいう)と予測誤りデータ200Aa3との排他的論理和を演算し、その演算結果を、復元された元のデータ100Aとする。復号化部300が使用する予測誤りデータ200Aa3は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図24に示される処理を、符号ビット111Aa3を用いた復号化処理と呼ぶことがある。
【0136】
予測誤りデータ200Aa2が示す複数の予測誤りビット位置は、例えば、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va2である場合のデータ100Aでの予測誤りビット位置であってもよい。所定回数Va2は、例えば、予測誤りデータ200Aa1に関する所定回数Va1よりも大きい。
【0137】
また、予測誤りデータ200Aa2が示す複数の予測誤りビット位置は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa2である場合のデータ100Aでの予測誤りビット位置であってもよい。所定時間Wa2は、例えば、予測誤りデータ200Aa1に関する所定時間Wa1よりも大きい。
【0138】
予測誤りデータ200Aa3が示す複数の予測誤りビット位置は、例えば、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va3である場合のデータ100Aでの予測誤りビット位置であってもよい。所定回数Va3は、例えば、所定回数Va1及び所定回数Va2よりも大きい。
【0139】
また、予測誤りデータ200Aa2が示す複数の予測誤りビット位置は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa3である場合のデータ100Aでの予測誤りビット位置であってもよい。所定時間Wa3は、例えば、所定時間Wa1及び所定時間Wa2よりも大きい。
【0140】
復号化部300は、例えば、不揮発性メモリ31から読み出されたデータ12aに基づいて、符号ビット110Aを用いた復号化処理と、符号ビット111Aa1を用いた復号化処理と、符号ビット111Aa2を用いた復号化処理と、符号ビット111Aa3を用いた復号化処理とを、並列的または順番に実行してもよい。
【0141】
また、第1予測誤り、第2予測誤り及び第3予測誤りのそれぞれが、読み出し回数に基づく予測方法に基づく予測誤りである場合、あるいは、経過時間に基づく予測方法に基づく予測誤りである場合、復号化部300は、まず、符号ビット110Aを用いた復号化処理を実行し、符号ビット110Aを用いた復号化処理においてデータ100Aの復元に失敗した場合に、符号ビット111Aa1を用いた復号化処理を実行してもよい。そして、復号化部300は、符号ビット111Aa1を用いた復号化処理においてデータ100Aの復元に失敗した場合に、符号ビット111Aa2を用いた復号化処理を実行してもよい。そして、復号化部300は、符号ビット111Aa2を用いた復号化処理においてデータ100Aの復元に失敗した場合に、符号ビット111Aa3を用いた復号化処理を実行してもよい。
【0142】
また、第1予測誤り、第2予測誤り及び第3予測誤りのそれぞれが、読み出し回数に基づく予測方法に基づく予測誤りである場合、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数に基づいて、符号ビット110Aを用いた復号化処理、符号ビット111Aa1を用いた復号化処理、符号ビット111Aa2を用いた復号化処理及び符号ビット111Aa3を用いた復号化処理のいずれを実行するかを決定してもよい。例えば、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va1未満の場合、符号ビット110Aを用いた復号化処理を実行し、当該読み出し回数が所定回数Va1以上所定回数Va2未満の場合、符号ビット111Aa1を用いた復号化処理を実行する。そして、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Va2以上所定回数Va3未満の場合、符号ビット110Aa2を用いた復号化処理を実行し、当該読み出し回数が所定回数Va3以上の場合、符号ビット111Aa3を用いた復号化処理を実行する。以後、単に読み出し回数といえば、不揮発性メモリ31からのデータ100Aの読み出し回数を意味する。
【0143】
また、第1予測誤り、第2予測誤り及び第3予測誤りのそれぞれが、経過時間に基づく予測方法に基づく予測誤りである場合、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間に基づいて、符号ビット110Aを用いた復号化処理、符号ビット111Aa1を用いた復号化処理、符号ビット111Aa2を用いた復号化処理及び符号ビット111Aa3を用いた復号化処理のいずれを実行するかを決定してもよい。例えば、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa1未満の場合、符号ビット110Aを用いた復号化処理を実行し、当該経過時間が所定時間Wa1以上所定時間Wa2未満の場合、符号ビット111Aa1を用いた復号化処理を実行する。そして、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wa2以上所定時間Wa3未満の場合、符号ビット110Aa2を用いた復号化処理を実行し、当該経過時間が所定時間Wa3以上の場合、符号ビット111Aa3を用いた復号化処理を実行する。以後、単に経過時間といえば、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間を意味する。
【0144】
第1予測誤り、第2予測誤り及び第3予測誤りには、読み出し回数に基づく予測方法に基づく予測誤りと、経過時間に基づく予測方法に基づく予測誤りとが含まれてもよい。例えば、第1予測誤りが読み出し回数に基づく予測方法に基づく予測誤りであって、第2予測誤り及び第3予測誤りが経過時間に基づく予測方法に基づく予測誤りである場合を考える。この場合、復号化部300は、例えば、読み出し回数が所定回数Va1未満であり、かつ経過時間が所定時間Wa2未満である場合、符号ビット110Aを用いた復号化処理を実行する。また、復号化部300は、読み出し回数が所定回数Va1以上であり、かつ経過時間が所定時間Wa2未満である場合、符号ビット111Aa1を用いた復号化処理を実行する。また、復号化部300は、経過時間が所定時間Wa2以上所定時間Wa3未満である場合、符号ビット111Aa2を用いた復号化処理を実行する。そして、復号化部300は、経過時間が所定時間Wa3以上である場合、符号ビット111Aa3を用いた復号化処理を実行する。
【0145】
データ12において、データ100Aに対して上述の符号ビット110Bが付加されてもよい。
図25は、データ100Aに対して符号ビット110Bが付加されているデータ12(データ12bともいう)の一例を示す概略図である。不揮発性メモリ31にデータ12bが記憶される場合、復号化部300は、例えば、上述のように、読み出しデータ100Aと読み出し符号ビット110Bを含む符号ビット含有データ120Bに対して誤り訂正復号化を行ってデータ100Bを復元する。なお、
図20に示されるデータ12aにおいて、データ100Aに対して符号ビット110Bが付加されてもよい。
【0146】
また、データ12において、データ100Aでの予測誤りを含むデータ100B(予測誤り含有データ100Bb1ともいう)に対する誤り訂正符号化で得られる符号ビット111Bb1がデータ100Aに付加されてもよい。
図26は、符号ビット111Bb1がデータ100Aに付加されたデータ12(データ12cともいう)の一例を示す概略図である。
【0147】
符号化部50は、データ100Aでの予測誤りを示す予測誤りデータ200Ab1と正しいデータ100Bとに基づいて、当該予測誤りを含むデータ100Bである予測誤り含有データ100Bb1を生成する。予測誤りデータ200Ab1が示す予測誤りは、予測誤りデータ200Aa1が示す予測誤りと同じであってもよいし、異なっていてもよい。予測誤りデータ200Ab1では、予測誤りデータ200Aa1と同様に、各予測誤りビット位置について、当該予測誤りビット位置と同じビット位置のビットの値が“1”となっている。予測誤りデータ200Ab1が示す予測誤りが、予測誤りデータ200Aa1が示す予測誤りと同じであれば、予測誤りデータ200Ab1は予測誤りデータ200Aa1と同じデータとなる。一方で、予測誤りデータ200Ab1が示す予測誤りが、予測誤りデータ200Aa1が示す予測誤りと異なれば、予測誤りデータ200Ab1は予測誤りデータ200Aa1と異なるデータとなる。予測誤り含有データ100Bb1は、データ100Aについて予測された誤りがデータ100Bにおいて仮に発生した場合の当該データ100Bであるといえる。
【0148】
符号化部50は、
図27に示されるように、例えば、正しいデータ100Bと予測誤りデータ200Ab1との排他的論理和を演算し、その演算結果を予測誤り含有データ100Bb1とする。そして、符号化部50は、予測誤り含有データ100Bb1に対して誤り訂正符号化を行って符号ビット111Bb1を生成する。予測誤り含有データ100Bb1に対する誤り訂正符号化の方式は、データ100Aに対する誤り訂正符号化の方式と同じであってもよいし、異なってもよい。また、予測誤り含有データ100Bb1に対する誤り訂正符号化の方式は、予測誤り含有データ100Aa1に対する誤り訂正符号化の方式と同じであってもよいし、異なってもよい。また、予測誤り含有データ100Bb1に対する誤り訂正符号化の方式は、データ100Bに対する誤り訂正符号化の方式と同じであってもよいし、異なってもよい。
【0149】
復号化部300は、不揮発性メモリ31から読み出されたデータ100A及び符号ビット111Bb1を含む符号ビット含有データ140Bb1と予測誤りデータ200Ab1とに基づいて、予測誤りを含まない正しいデータ100Bを復元する。具体的には、復号化部300は、
図28に示されるように、符号ビット含有データ140Bb1に対して誤り訂正復号化を行って、予測誤り含有データ100Bb1を復元する。そして、復号化部300は、復元した予測誤り含有データ100Bb1と予測誤りデータ200Ab1との排他的論理和を演算し、その演算結果を、復元されたデータ100Bとする。復号化部300が使用する予測誤りデータ200Ab1は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図28に示される処理を、符号ビット111Bb1を用いた復号化処理と呼ぶことがある。また、符号ビット111Bb1のように、予測誤りを含むデータ100Bに対する誤り訂正符号化で得られる符号ビットを、データ100Bを復元するための誤り予測に基づく符号ビットと呼ぶことがある。
【0150】
予測誤りデータ200Ab1が示す複数の予測誤りビット位置は、例えば、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Vb1である場合のデータ100Aでの予測誤りビット位置であってもよい。所定回数Vb1は、所定回数Va1と同じであってもよいし、異なっていてもよい。
【0151】
また、予測誤りデータ200Ab1が示す複数の予測誤りビット位置は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wb1である場合のデータ100Aでの予測誤りビット位置であってもよい。所定時間Wb1は、所定時間Wa1と同じであってもよいし、異なっていてもよい。
【0152】
復号化部300は、符号ビット110Bを用いた復号化処理(
図4参照)と、符号ビット111Bb1を用いた復号化処理(
図28参照)とを並列的にあるいは順番に実行してもよい。
【0153】
また、復号化部300は、まず、符号ビット110Bを用いた復号化処理を実行し、符号ビット110Bを用いた復号化処理においてデータ100Bの復元に失敗した場合に、符号ビット111Bb1を用いた復号化処理を実行してもよい。
【0154】
また、予測誤りデータ200Ab1が示す予測誤りが、読み出し回数に基づく予測方法に基づく予測誤りである場合には、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数に基づいて、符号ビット110Bを用いた復号化処理と符号ビット111Bb1を用いた復号化処理のどちらを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Vb1未満の場合、符号ビット110Bを用いた復号化処理を実行し、当該読み出し回数が所定回数Vb1以上の場合、符号ビット111Bb1を用いた復号化処理を実行してもよい。
【0155】
また、予測誤りデータ200Ab1が示す予測誤りが、経過時間に基づく予測方法が使用されて予測された誤りである場合には、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間に基づいて、符号ビット110Bを用いた復号化処理と符号ビット111Bb1を用いた復号化処理のどちらを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれての経過時間が所定時間Wb1未満の場合、符号ビット110Bを用いた復号化処理を実行し、当該経過時間が所定時間Wb1以上の場合、符号ビット111Bb1を用いた復号化処理を実行してもよい。
【0156】
このように、本例では、データ100Aでの予測誤りを含むデータ100Bである予測誤り含有データ100Bb1に対する誤り訂正符号化で得られる符号ビット111Bb1とデータ100Aとを含む符号ビット含有データ140Bb1に基づいて、正しいデータ100Bが復元される。よって、符号ビット含有データ140Aa1に基づいてデータ100Aが復元される場合と同様に、符号ビット111Bb1を用いた誤り訂正の訂正可能ビット数(例えば126ビット)よりも大きいビット数の誤りが符号ビット含有データ140Bb1に発生したとしても、復号化部300はデータ100Bを復元することが可能となる。
【0157】
なお、復号化部300は、符号ビット111Aa1を用いた復号化処理を実行する場合、上述の
図6と同様に、符号ビット111Aa1を用いた復号化処理で復元されたデータ100Aと符号ビット110Bとを含む符号ビット含有データに対して誤り訂正復号化を行って、データ100Bを復元してもよい。この場合、復号化部300は、符号ビット111Bb1を用いた復号化処理を実行しなくてもよい。復号化部300が、符号ビット111Bb1を用いた復号化処理を実行しない場合には、符号ビット111Bb1が不要となる。
【0158】
また、データ12cには、データ100Aを復元するための誤り予測に基づく符号ビット111Aa1が含まれなくてもよい。また、データ100Aに対して、データ100Bを復元するための誤り予測に基づく符号ビットが複数付加されてもよい。
図29は、データ100Bを復元するための誤り予測に基づく符号ビット11Bb1及び11Bb2がデータ100Aに対して付加されているデータ12(データ12dともいう)を示す概略図である。
【0159】
符号化部50は、データ100Aでの予測誤りを示す予測誤りデータ200Ab2と正しいデータ100Bとに基づいて、当該予測誤りを含むデータ100Bである予測誤り含有データ100Bb2を生成する。予測誤りデータ200Ab2が示す予測誤りは、予測誤りデータ200Ab1が示す予測誤りと同じであってもよいし、異なっていてもよい。予測誤りデータ200Ab2では、予測誤りデータ200Aa1と同様に、各予測誤りビット位置について、当該予測誤りビット位置と同じビット位置のビットの値が“1”となっている。
【0160】
符号化部50は、
図30に示されるように、例えば、正しいデータ100Bと予測誤りデータ200Ab2との排他的論理和を演算し、その演算結果を予測誤り含有データ100Bb2とする。そして、符号化部50は、予測誤り含有データ100Bb2に対して誤り訂正符号化を行って符号ビット111Bb2を生成する。予測誤り含有データ100Bb2に対する誤り訂正符号化の方式は、予測誤り含有データ100Bb1に対する誤り訂正符号化の方式と同じであってもよいし、異なっていてもよい。
【0161】
復号化部300は、不揮発性メモリ31から読み出されたデータ100A及び符号ビット111Bb2を含む符号ビット含有データ140Bb2と予測誤りデータ200Ab2とに基づいて、予測誤りを含まない正しいデータ100Bを復元する。具体的には、復号化部300は、
図31に示されるように、読み出しデータ100A及び読み出し符号ビット111Bb2を含む符号ビット含有データ140Bb2に対して誤り訂正復号化を行って、予測誤り含有データ100Bb2を復元する。そして、復号化部300は、復元した予測誤り含有データ100Bb2と予測誤りデータ200Ab2との排他的論理和を演算し、その演算結果を、復元されたデータ100Bとする。復号化部300が使用する予測誤りデータ200Ab2は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図31に示される処理を、符号ビット111Bb2を用いた復号化処理と呼ぶことがある。
【0162】
予測誤りデータ200Ab2が示す複数の予測誤りビット位置は、例えば、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Vb2である場合のデータ100Aでの予測誤りビット位置であってもよい。所定回数Vb2は、例えば所定回数Vb1よりも大きい。
【0163】
また、予測誤りデータ200Ab2が示す複数の予測誤りビット位置は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wb2である場合のデータ100Aでの予測誤りビット位置であってもよい。所定時間Wb2は、例えば所定時間Wb1よりも大きい。
【0164】
復号化部300は、符号ビット110Bを用いた復号化処理と、符号ビット111Bb1を用いた復号化処理と、符号ビット111Bb2を用いた復号化処理とを、並列的にあるいは順番に実行してもよい。
【0165】
また、予測誤りデータ200Ab1が示す予測誤り及び予測誤りデータ200Ab2が示す予測誤りのそれぞれが、読み出し回数に基づく予測方法に基づく予測誤りである場合、あるいは、経過時間に基づく予測方法に基づく予測誤りである場合、復号化部300は、まず、符号ビット110Bを用いた復号化処理を実行し、符号ビット110Bを用いた復号化処理においてデータ100Bの復元に失敗した場合に、符号ビット111Ab1を用いた復号化処理を実行してもよい。そして、復号化部300は、符号ビット110Ab1を用いた復号化処理においてデータ100Bの復元に失敗した場合に、符号ビット110Ab2を用いた復号化処理を実行してもよい。
【0166】
また、復号化部300は、読み出し回数及び経過時間の少なくとも一方に基づいて、符号ビット110Bを用いた復号化処理、符号ビット111Bb1を用いた復号化処理及び符号ビット111Bb2を用いた復号化処理のいずれを実行するか決定してもよい。
【0167】
例えば、予測誤りデータ200Ab1が示す予測誤り及び予測誤りデータ200Ab2が示す予測誤りのそれぞれが、読み出し回数に基づく予測方法に基づく予測誤りである場合を考える。この場合、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数に基づいて、符号ビット110Bを用いた復号化処理、符号ビット111Bb1を用いた復号化処理及び符号ビット111Bb2を用いた復号化処理のいずれを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Vb1未満の場合、符号ビット110Bを用いた復号化処理を実行し、当該読み出し回数が所定回数Vb1以上所定回数Vb2未満の場合、符号ビット111Bb1を用いた復号化処理を実行する。そして、復号化部300は、不揮発性メモリ31からのデータ100Aの読み出し回数が所定回数Vb2以上の場合、符号ビット110Bb2を用いた復号化処理を実行する。
【0168】
他の例として、予測誤りデータ200Ab1が示す予測誤り及び予測誤りデータ200Ab2が示す予測誤りのそれぞれが、経過時間に基づく予測方法に基づく予測誤りである場合を考える。この場合、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間に基づいて、符号ビット110Bを用いた復号化処理、符号ビット111Bb1を用いた復号化処理及び符号ビット111Bb2を用いた復号化処理のいずれを実行するか決定してもよい。例えば、復号化部300は、不揮発性メモリ31にデータ100Aが書き込まれてからの経過時間が所定時間Wb1未満の場合、符号ビット110Bを用いた復号化処理を実行し、当該経過時間が所定時間Wb1以上所定時間Wb2未満の場合、符号ビット111Bb1を用いた復号化処理を実行する。そして、復号化部300は、経過時間が所定時間Wb2以上の場合、符号ビット110Bb2を用いた復号化処理を実行する。
【0169】
他の例として、予測誤りデータ200Ab1が示す予測誤りが読み出し回数に基づく予測方法に基づく予測誤りであって、予測誤りデータ200Ab2が示す予測誤りが経過時間に基づく予測方法に基づく予測誤りである場合を考える。この場合、復号化部300は、例えば、読み出し回数が所定回数Vb1未満であり、かつ経過時間が所定時間Wb1未満である場合、符号ビット110Bを用いた復号化処理を実行する。また、復号化部300は、読み出し回数が所定回数Vb1以上であり、かつ経過時間が所定時間Wb1未満である場合、符号ビット111Bb1を用いた復号化処理を実行する。そして、復号化部300は、経過時間が所定時間Wb2以上である場合、符号ビット111Bb2を用いた復号化処理を実行する。
【0170】
なお、予測誤りデータ200Ab1が示す予測誤りが経過時間に基づく予測方法に基づく予測誤りであって、予測誤りデータ200Ab2が示す予測誤りが読み出し回数に基づく予測方法に基づく予測誤りであってもよい。
【0171】
また、復号化部300は、符号ビット111Aa2を用いた復号化処理を実行する場合、当該復号化処理で復元されたデータ100Aと符号ビット110Bとを含む符号ビット含有データに対して誤り訂正復号化を行って、データ100Bを復元してもよい。この場合、復号化部300は、符号ビット111Bb2を用いた復号化処理を実行しなくてもよい。復号化部300が、符号ビット111Bb2を用いた復号化処理を実行しない場合には、符号ビット111Bb2が不要となる。また、データ12dには、符号ビット111Aa1及び111Aa2が含まれなくてもよい。
【0172】
データ100Aとデータ100Bの中間の上述のデータ100Mに対して、符号ビット111Aa1と同様のデータ100Aを復元するための誤り予測に基づく符号ビットが付加されてもよい。また、データ100Mに対して、符号ビット111Bb1と同様のデータBを復元するための誤り予測に基づく符号ビットが付加されてもよい。
【0173】
図32は、不揮発性メモリ31に記憶されるデータ13を示す概略図である。データ13では、データ100Mに対して、上述の符号ビット110A及び110Bと、データ100Aを復元するための誤り予測に基づく符号ビット111Am1と、データ100Bを復元するための誤り予測に基づく符号ビット111Bm1とが付加されている。
【0174】
符号ビット111Am1は、データ100Mでの予測誤りを含むデータ100Aに対する誤り訂正符号化で得られる符号ビットである。符号化部50は、データ100Mでの予測誤りを示す予測誤りデータ200Ma1と、正しいデータ100Aとに基づいて、当該予測誤りを含むデータ100A(予測誤り含有データ100Am1ともいう)を生成する。予測誤りデータ200Ma1では、例えば、データ100Mについての各予測誤りビット位置と同じビット位置の値が“1”となっている。符号化部50は、
図33に示されるように、正しいデータ100Aと予測誤りデータ200Ma1との排他的論理和を演算し、その演算結果を予測誤り含有データ100Am1とする。そして、符号化部50は、予測誤り含有データ100Am1に対して誤り訂正符号化を行って符号ビット111Am1を生成する。予測誤り含有データ200Am1は、データ100Mについて予測された誤りがデータ100Aにおいて仮に発生した場合の当該データ100Aであるといえる。
【0175】
復号化部300は、
図34に示されるように、例えば、読み出しデータ100M及び読み出し符号ビット111Am1を含む符号ビット含有データ150Am1に対して誤り訂正復号化を行って、予測誤り含有データ100Am1を復元する。そして、復号化部300は、復元した予測誤り含有データ100Am1と予測誤りデータ200Ma1との排他的論理和を演算し、その演算結果を、復元された元のデータ100Aとする。復号化部300が使用する予測誤りデータ200Ma1は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図34に示される処理を、符号ビット111Am1を用いた復号化処理と呼ぶことがある。また、上記の
図13に示されるように、データ100M及び符号ビット110Aを含む符号ビット含有データ130Aに対して誤り訂正復号化を行う処理を、符号110Aを用いた第2復号化処理と呼ぶ。
【0176】
符号ビット111Bm1は、データ100Mでの予測誤りを含むデータ100Bに対する誤り訂正符号化で得られる符号ビットである。符号化部50は、データ100Mでの予測誤りを示す予測誤りデータ200Mb1と、正しいデータ100Bとに基づいて、当該予測誤りを含むデータ100B(予測誤り含有データ100Bm1ともいう)を生成する。予測誤りデータ200Mb1では、例えば、データ100Mについての各予測誤りビット位置と同じビット位置の値が“1”となっている。符号化部50は、
図35に示されるように、正しいデータ100Bと予測誤りデータ200Mb1との排他的論理和を演算し、その演算結果を予測誤り含有データ100Bm1とする。そして、符号化部50は、予測誤り含有データ100Bm1に対して誤り訂正符号化を行って符号ビット111Bm1を生成する。予測誤りデータ200Mb1が示す予測誤りは、予測誤りデータ200Ma1が示す予測誤りと同じであってもよいし、異なっていてもよい。予測誤り含有データ200Bm1は、データ100Mについて予測された誤りがデータ100Bにおいて仮に発生した場合の当該データ100Bであるといえる。
【0177】
復号化部300は、
図36に示されるように、例えば、読み出しデータ100M及び読み出し符号ビット111Bm1を含む符号ビット含有データ150Bm1に対して誤り訂正復号化を行って、予測誤り含有データ100Bm1を復元する。そして、復号化部300は、復元した予測誤り含有データ100Bm1と予測誤りデータ200Mb1との排他的論理和を演算し、その演算結果を、復元された元のデータ100Bとする。復号化部300が使用する予測誤りデータ200Mb1は、不揮発性メモリ31に記憶されているデータではなく、制御部30が生成するデータである。以後、
図36に示される処理を、符号ビット111Bm1を用いた復号処理と呼ぶことがある。また、上記の
図13に示されるように、データ100M及び符号ビット110Bを含む符号ビット含有データ130Bに対して誤り訂正復号化を行う処理を、符号110Bを用いた第2復号化処理と呼ぶ。
【0178】
予測誤りデータ200Ma1及び予測誤りデータ200Mb1が示す予測誤りは、上述の予測誤りデータ200Aa1等と同様に、不揮発性メモリ31からのデータ100Mの読み出し回数に基づく予測誤りであってもよいし、不揮発性メモリ31にデータ100Mが書き込まれてからの経過時間に基づく予測誤りであってもよい。
【0179】
復号化部300が、符号ビット110Aを用いた第2復号化処理と符号ビット111Am1を用いた復号化処理とをどのように実行するかについては、符号ビット110Aを用いた復号化処理と符号ビット111Aa1を用いた復号化処理との実行について説明した上記の内容と同様である。また、復号化部300が、符号ビット110Bを用いた第2復号化処理と符号ビット111Bm1を用いた復号化処理とをどのように実行するかについては、符号ビット110Bを用いた復号化処理と符号ビット111Bb1を用いた復号化処理と実行について説明した上記の内容と同様である。
【0180】
なお、データ13は、符号ビット111Am1を含まなくてもよい。また、データ13は、符号ビット111Bm1を含まなくてもよい。
【0181】
また、
図20及び
図29と同様に、データ100Mに対して、データ100Mを用いてデータ100Aを復元するための誤り予測に基づく符号ビットが複数付加されてもよい。この場合の符号化部50及び復号化部300の動作は、
図20及び
図29の例と同様である。また、
図29と同様に、データ100Mに対して、データ100Mを用いてデータ100Bを復元するための誤り予測に基づく符号ビットが複数付加されてもよい。この場合の符号化部50及び復号化部300の動作は、
図29の例と同様である。
【0182】
このように、データ100Mでの予測誤りを含むデータ100Aである予測誤り含有データ100Am1に対する誤り訂正符号化で得られる符号ビット111Am1とデータ100Mとを含む符号ビット含有データ150Am1に基づいてデータ100Aが復元される場合、符号ビット111Am1を用いた誤り訂正の訂正可能ビット数よりも大きいビット数の誤りが符号ビット含有データ150Am1に発生する場合であっても、元のデータ100Aを復元することが可能となる。
【0183】
同様に、データ100Mでの予測誤りを含むデータ100Bである予測誤り含有データ100Bm1に対する誤り訂正符号化で得られる符号ビット111Bm1とデータ100Mとを含む符号ビット含有データ150Bm1に基づいてデータ100Bが復元される場合、符号ビット111Bm1を用いた誤り訂正の訂正可能ビット数よりも大きいビット数の誤りが符号ビット含有データ150Bm1に発生する場合であっても、元のデータ100Bを復元することが可能となる。
【0184】
メモリ装置3の制御部30は、復号化部300で復元されたデータ100A及びデータBに基づいて、疑似乱数生成器に入力するシードを生成してもよい。例えば、制御部30は、復元されたデータ100Aと復元されたデータBとの排他的論理和を演算し、その演算結果を、疑似乱数生成器に入力するシードとして使用してもよい。この場合、シード生成回路が不要となる。
【0185】
上記の例では、符号化部50は、外部装置に設けられているが、メモリ装置3に設けられてもよい。
図37は、この場合のデータ処理システム1の構成の一例を示す概略図である。
図37の例では、メモリ装置3の制御部30が符号化部50を備えている。符号化部50は、例えば、制御部30のCPUが不揮発性メモリ31内のプログラム31aを実行することによって形成される機能ブロックであってもよい。
【0186】
図37の例では、符号化部50は、制御部30で生成された、データ100A等の複数の情報ビットに基づいて、あるいはホスト装置から送信される複数の情報ビットに基づいて、符号ビット110A等の、誤り訂正を行うための複数の符号ビットを生成する。制御部30は、符号化部50で生成された複数の符号ビットと情報ビットとを含むデータ10等を不揮発性メモリ31に書き込む。
【0187】
また、符号化部50は、ホスト装置2に設けられてもよい。
図38は、この場合のデータ処理システム1の構成の一例を示す概略図である。
図38の例では、ホスト装置2の制御部20が符号化部50を備えている。符号化部50は、例えば、制御部20のCPUが記憶部21内のプログラム21aを実行することによって形成される機能ブロックであってもよい。
【0188】
図38の例では、ホスト装置2の符号化部50は、例えば、制御部20で生成された、データ100A等の複数の情報ビットに基づいて、符号ビット110A等の、誤り訂正を行うための複数の符号ビットを生成する。制御部20は、符号化部50で生成された複数の符号ビットと情報ビットとを含むデータ10等をインタフェース23に送信させる。メモリ装置3では、復号化部300が、ホスト装置2からのデータ10等に基づいて、データ100A等の複数の情報ビットを復元する。
図38の例の場合、復号化部300は、不揮発性メモリ31に記憶されている、データ10等と同様のデータを読み出して、読み出したデータに基づいて、上記と同様に、複数の情報ビットを復元してもよい。
【0189】
図38の例では、ホスト装置2とメモリ装置3との間の通信路において、ホスト装置2からメモリ装置3に送信されるデータに誤りが発生したとしても、メモリ装置3の復号化部300は、ホスト装置2からのデータに対して誤り訂正を行って、複数の情報ビットを復元することができる。
【0190】
また、
図38の例では、メモリ装置3は、データ100Bを含まないデータ10等に基づいてデータ100Bを復元することできることから、ホスト装置2からデータ100Bを受信する必要がなくなる。よって、メモリ装置3とホスト装置2との間のデータ転送量を削減することができる。
【0191】
また、
図38の例では、制御部30は、例えば、復元されたデータ100A及びデータ100Bに基づいて認証データを生成してもよい。そして、制御部30は、生成した認証データを、予め記憶する期待値と照合することで、ホスト装置2から送信されるデータ100A及びデータ100Bの改ざんを検知してもよい。制御部30は、復元されたデータ100Aと復元されたデータ100Bとの排他的論理和の演算結果を認証データとしてもよい。あるいは、認証データを生成する回路が、復元されたデータ100Aと復元されたデータ100Bとの排他的論理和の演算結果に基づいて認証データを生成してもよい。
【0192】
データ100A等の複数の情報ビットを復元する復号化部は、メモリ装置3ではなくホスト装置2に設けられてもよい。
図39は、この場合のデータ処理システム1の構成の一例を示す概略図である。
図39の例では、ホスト装置2の制御部20が、復号化部300と同様の復号化部200を備えている。制御部20は、復号化部200を備える復号化装置であるといえる。復号化部200は、例えば、制御部20のCPUが記憶部21内のプログラム21aを実行することによって形成される機能ブロックであってもよい。
【0193】
図39の例では、メモリ装置3の制御部30は、不揮発性メモリ31から上述のデータ10等を読み出し、読み出したデータ10等をインタフェース33に送信させる。ホスト装置2では、インタフェース23がインタフェース33から受信したデータ10等を制御部20に出力する。制御部20では、復号化部200が、復号化部300と同様に動作して、データ10等に基づいてデータ100A等の複数の情報ビットを復元する。
【0194】
図39の例では、ホスト装置2とメモリ装置3との間の通信路において、メモリ装置3からホスト装置2に送信されるデータに誤りが発生したとしても、ホスト装置2の復号化部200は、メモリ装置3からのデータに対して誤り訂正を行って、複数の情報ビットを復元することができる。
【0195】
また、
図39の例では、ホスト装置2は、データ100Bを含まないデータ10等に基づいてデータ100Bを復元することできることから、メモリ装置3からデータ100Bを受信する必要がなくなる。よって、ホスト装置2とメモリ装置3との間のデータ転送量を削減することができる。
【0196】
ホスト装置2の制御部20は、復号化部200で復元されたデータ100A及びデータBに基づいて、疑似乱数生成器に入力するシードを生成してもよい。例えば、制御部20は、復元されたデータ100Aと復元されたデータBとの排他的論理和を演算し、その演算結果を、疑似乱数生成器に入力するシードとして使用してもよい。この場合、シード生成回路が不要となる。
【0197】
また、制御部20は、例えば、復元されたデータ100A及びデータ100Bに基づいて認証データを生成してもよい。そして、制御部20は、生成した認証データを、予め記憶する期待値と照合することで、データ100A及びデータ100Bの改ざんを検知してもよい。制御部20は、復元されたデータ100Aと復元されたデータ100Bとの排他的論理和の演算結果を認証データとしてもよい。あるいは、認証データを生成する回路が、復元されたデータ100Aと復元されたデータ100Bとの排他的論理和の演算結果に基づいて認証データを生成してもよい。
【0198】
メモリ装置3は復号化部300及び符号化部50を有し、ホスト装置2は復号化部200と、符号化部50と同様の符号化部210とを有してもよい。
図40はこの場合のデータ処理システム1の一例を示す概略図である。
図40の例では、ホスト装置2の制御部20が、符号化部50と同様の符号化部210を備えている。符号化部210は、例えば、制御部20のCPUが記憶部21内のプログラム21aを実行することによって形成される機能ブロックであってもよい。
【0199】
図40の例では、符号化部210は、例えば、制御部20が生成した、データ100A等と同様の複数の情報ビットに基づいて、符号ビット110A等と同様の、誤り訂正を行うための複数の符号ビットを生成する。制御部20は、符号化部210で生成された複数の符号ビットと情報ビットとを含むデータをインタフェースに送信させる。メモリ装置3では、復号化部300が、ホスト装置2が送信する、データ10等と同様のデータに基づいて複数の情報ビットを復元する。
【0200】
また
図40の例では、メモリ装置3の符号化部50が、制御部30で生成された、データ100A等の複数の情報ビットに基づいて、符号ビット110A等の、誤り訂正を行うための複数の符号ビットを生成する。制御部30は、符号化部50で生成された複数の符号ビットと情報ビットとを含むデータ10等をインタフェース33に送信させる。ホスト装置2では、復号化部200が、メモリ装置3からのデータに基づいて、データ100A等の複数の情報ビットを復元する。
【0201】
なお、
図40の例の場合であっても、復号化部300は、不揮発性メモリ31に記憶されている、データ10等と同様のデータを読み出して、読み出したデータに基づいて、上記と同様に、複数の情報ビットを復元してもよい。
【0202】
ホスト装置2とメモリ装置3とは、
図41に示されるように、ネットワーク5を通じて互いに通信可能であってもよい。ネットワーク5には、LAN(Local Area Network)及びインターネットの少なくとも一方が含まれてもよい。
【0203】
上記のデータ100A、データ100B及びデータ100Mは、どのようなデータであってもよい。例えば、データ100A、データ100B及びデータ100Mは、画像データであってもよいし、音声データであってもよい。また、データ100A、データ100B及びデータ100Mは、温度データ、湿度データ及び気圧データ等の環境データであってもよい。また、データ100A、データ100B及びデータ100Mは、物体の姿勢、動作、位置あるいは加速度を示す物体データであってもよい。また、データ100A、データ100B及びデータ100Mは、電気の使用量、ガスの使用量及び水道の使用量等を示すデータであってもよい。
【0204】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0205】
以上のように、データ処理システム、メモリ装置及びホスト装置は詳細に説明されたが、上記の説明は、全ての局面において例示であって、本開示がそれに限定されるものではない。また、上述した各種の例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の例が、本開示の範囲から外れることなく想定され得るものと解される。
【0206】
本開示には以下の態様が含まれる。
【0207】
第1の態様に係る復号化装置は、第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って前記第1データを復元する第1復号化処理と、前記第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、前記情報ビットまたは前記第1復号化処理で復元された前記第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って前記第2データを復元する第2復号化処理とを実行する復号化部を備え、前記情報ビットは、前記第1データ、または前記第2データよりも前記第1データに類似する中間データである。
【0208】
第2の態様に係る復号化装置は、第1の態様に係る復号化装置であって、前記情報ビットは前記第1データであり、前記復号化部は、前記第1データに類似する第3データに対する第3誤り訂正符号化で得られる第3符号ビットと、復元される前の元の前記第1データまたは前記第1復号化処理で復元された前記第1データとを含む第3の符号ビット含有データに対して第3誤り訂正復号化を行って前記第3データを復元する第3復号化処理を実行する。
【0209】
第3の態様に係る復号化装置は、第1の態様に係る復号化装置であって、前記情報ビットは前記第1データであり、前記復号化部は、前記第2データに類似する第3データに対する第3誤り訂正符号化で得られる第3符号ビットと、前記第2復号化処理で復元された前記第2データとを含む第3の符号ビット含有データに対して第3誤り訂正復号化を行って前記第3データを復元する第3復号化処理を実行する。
【0210】
第4の態様に係る復号化装置は、第1の態様から第3の態様のいずれか一つに係る復号化装置であって、前記第1誤り訂正符号化の方式と前記第2誤り訂正符号化の方式とは互いに同じである。
【0211】
第5の態様に係る復号化装置は、第1の態様から第3の態様のいずれか一つに係る復号化装置であって、前記第1誤り訂正符号化の方式と前記第2誤り訂正符号化の方式とは互いに異なる。
【0212】
第6の態様に係る復号化装置は、第1の態様から第5の態様のいずれか一つに係る復号化装置であって、前記復号化部は、前記情報ビットでの第1予測誤りを含む前記第1データである第1の予測誤り含有第1データに対する第4誤り訂正符号化で得られる第4符号ビットと前記情報ビットとを含む第4の符号ビット含有データに対して第4誤り訂正復号化を行って前記第1の予測誤り含有第1データを復元し、復元した前記第1の予測誤り含有第1データと、前記第1予測誤りを示す第1予測誤りデータとに基づいて、前記第1予測誤りを含まない前記第1データを復元する第4復号化処理を実行する。
【0213】
第7の態様に係る復号化装置は、第6の態様に係る復号化装置であって、前記復号化部は、前記情報ビットでの第2予測誤りを含む前記第1データである第2の予測誤り含有第1データに対する第5誤り訂正符号化で得られる第5符号ビットと前記情報ビットとを含む第5の符号ビット含有データに対して第5誤り訂正復号化を行って前記第2の予測誤り含有第1データを復元し、復元した前記第2の予測誤り含有第1データと、前記第2予測誤りを示す第2予測誤りデータとに基づいて、前記第2予測誤りを含まない前記第1データを復元する第5復号化処理を実行する。
【0214】
第8の態様に係る復号化装置は、第6の態様に係る復号化装置であって、前記情報ビット、前記第1符号ビット及び前記第4符号ビットは、不揮発性メモリに記憶されており、前記復号化部は、前記第1復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第1符号ビットを含む前記第1の符号ビット含有データに対して前記第1誤り訂正復号化を行い、前記第4復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第4符号ビットを含む前記第4の符号ビット含有データに対して前記第4誤り訂正復号化を行い、前記不揮発性メモリからの前記情報ビットの読み出し回数または前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間に基づいて、前記第1復号化処理及び前記第4復号化処理のどちらを実行するかを決定する。
【0215】
第9の態様に係る復号化装置は、第7の態様に係る復号化装置であって、前記情報ビット、前記第1符号ビット、前記第4符号ビット及び前記第5符号ビットは、不揮発性メモリに記憶されており、前記復号化部は、前記第1復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第1符号ビットを含む前記第1の符号ビット含有データに対して前記第1誤り訂正復号化を行い、前記第4復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第4符号ビットを含む前記第4の符号ビット含有データに対して前記第4誤り訂正復号化を行い、前記第5復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第5符号ビットを含む前記第5の符号ビット含有データに対して前記第5誤り訂正復号化を行い、前記不揮発性メモリからの前記情報ビットの読み出し回数及び前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間の少なくとも一方に基づいて、前記第1復号化処理、前記第4復号化処理及び前記第5復号化処理のいずれを実行するかを決定する。
【0216】
第10の態様に係る復号化装置は、第6の態様または第7の態様に係る復号化装置であって、前記復号化部は、前記第1復号化処理において前記第1データの復元に失敗した場合、前記第4復号化処理を実行する。
【0217】
第11の態様に係る復号化装置は、第6の態様から第10の態様のいずれか一つに係る復号化装置であって、前記復号化部は、前記第4復号化処理で復元された前記第1データと前記第2符号ビットとを含む第6の符号ビット含有データに対して第6誤り訂正復号化を行って前記第2データを復元する第6復号化処理を実行する。
【0218】
第12の態様に係る復号化装置は、第1の態様から第10の態様のいずれか一つに係る復号化装置であって、前記復号化部は、前記情報ビットでの第3予測誤りを含む前記第2データである第1の予測誤り含有第2データに対する第6誤り訂正符号化で得られる第6符号ビットと前記情報ビットとを含む第6の符号ビット含有データに対して第6誤り訂正復号化を行って前記第1の予測誤り含有第2データを復元し、復元した前記第1の予測誤り含有第2データと、前記第3予測誤りを示す第3予測誤りデータとに基づいて、前記第3予測誤りを含まない前記第2データを復元する第6復号化処理を実行する。
【0219】
第13の態様に係る復号化装置は、第12の態様に係る復号化装置であって、前記復号化部は、前記情報ビットでの第4予測誤りを含む前記第2データである第2の予測誤り含有第2データに対する第7誤り訂正符号化で得られる第7符号ビットと前記情報ビットとを含む第7の符号ビット含有データに対して第7誤り訂正復号化を行って前記第2の予測誤り含有第2データを復元し、復元した前記第2の予測誤り含有第2データと、前記第4予測誤りを示す第4予測誤りデータとに基づいて、前記第4予測誤りを含まない前記第2データを復元する第7復号化処理を実行する。
【0220】
第14の態様に係る復号化装置は、第12の態様に係る復号化装置であって、前記情報ビット、前記第2符号ビット及び前記第6符号ビットは、不揮発性メモリに記憶されており、前記復号化部は、前記第2復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第2符号ビットを含む前記第2の符号ビット含有データに対して前記第2誤り訂正復号化を行い、前記第6復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第6符号ビットを含む前記第6の符号ビット含有データに対して前記第6誤り訂正復号化を行い、前記不揮発性メモリからの前記情報ビットの読み出し回数または前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間に基づいて、前記第2復号化処理及び前記第6復号化処理のどちらを実行するかを決定する。
【0221】
第15の態様に係る復号化装置は、第13の態様に係る復号化装置であって、前記情報ビット、前記第2符号ビット、前記第6符号ビット及び前記第7符号ビットは、不揮発性メモリに記憶されており、前記復号化部は、前記第2復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第2符号ビットを含む前記第2の符号ビット含有データに対して前記第2誤り訂正復号化を行い、前記第6復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第6符号ビットを含む前記第6の符号ビット含有データに対して前記第6誤り訂正復号化を行い、前記第7復号化処理において、前記不揮発性メモリから読み出された前記情報ビット及び前記第7符号ビットを含む前記第7の符号ビット含有データに対して前記第7誤り訂正復号化を行い、前記不揮発性メモリからの前記情報ビットの読み出し回数及び前記不揮発性メモリに前記情報ビットが書き込まれてからの経過時間の少なくとも一方に基づいて、前記第2復号化処理、前記第6復号化処理及び前記第7復号化処理のいずれを実行するかを決定する。
【0222】
第16の態様に係る復号化装置は、第12の態様または第13の態様に係る復号化装置であって、前記復号化部は、前記第2復号化処理において前記第2データの復元に失敗した場合、前記第6復号化処理を実行する。
【0223】
第17の態様に係るメモリ装置は、第1の態様から第16の態様のいずれか一つに係る復号化装置と、前記復号化装置が実行する前記第1復号化処理及び前記第2復号化処理で使用される前記情報ビット、前記第1符号ビット及び前記第2符号ビットを記憶する不揮発性メモリとを備え、前記復号化装置は、前記不揮発性メモリから読み出された前記情報ビット、前記第1符号ビット及び前記第2符号ビットを使用して前記第1復号化処理及び前記第2復号化処理を実行する。
【0224】
第18の態様に係る通信装置は、第1の態様から第16の態様のいずれか一つに係る復号化装置と、前記復号化装置が実行する前記第1復号化処理及び前記第2復号化処理で使用される前記情報ビット、前記第1符号ビット及び前記第2符号ビットを受信する通信部とを備え、前記復号化装置は、前記通信部が受信した前記情報ビット、前記第1符号ビット及び前記第2符号ビットを使用して前記第1復号化処理及び前記第2復号化処理を実行する。
【0225】
第19の態様に係るプログラムは、コンピュータ装置を、第1の態様から第16の態様のいずれか一つに係る復号化装置として機能させるためのプログラムである。
【0226】
第20の態様に係る復号化方法は、装置での復号化方法であって、第1データに対する第1誤り訂正符号化で得られる第1符号ビットと情報ビットとを含む第1の符号ビット含有データに対して第1誤り訂正復号化を行って前記第1データを復元する第1復号化処理と、前記第1データに類似する第2データに対する第2誤り訂正符号化で得られる第2符号ビットと、前記情報ビットまたは前記第1復号化処理で復元された前記第1データとを含む第2の符号ビット含有データに対して第2誤り訂正復号化を行って前記第2データを復元する第2復号化処理とを実行し、前記情報ビットは、前記第1データ、または前記第2データよりも前記第1データに類似する中間データである。
【符号の説明】
【0227】
2 ホスト装置(通信装置)
3 メモリ装置(通信装置)
20,30 制御部(復号化装置)
21a,31a プログラム
23,33 インタフェース(通信部)
31 不揮発性メモリ
100A,100B データ
100M データ(中間データ)
100Aa1,100Aa2,100Aa3,100Am1,100Bb1,100Bb2,100Bm1 予測誤り含有データ
110A,111Aa1,111Aa2,111Aa3,111Am1,110B,111Bb1,111Bb2,111Bm1,110C,110D 符号ビット
120A,120B,120BB,120C,120CC,120D,120DD,130A,130B,140Aa1,140Aa2,140Aa3,140Bb1,140Bb2,150Am1,150Bm1 符号ビット含有データ
200,300 復号化部
200Aa1,200Aa2,200Aa3,200Ab1,200Ab2,200Ma1,200Mb1 予測誤りデータ