(58)【調査した分野】(Int.Cl.,DB名)
前記メモリアクセス部は、前記監視処理の非実行時において前記第1の誤り検出結果が誤り有りを表す場合には、前記第2の誤り検出結果が誤り無しを表す状態に到るまで繰り返し前記暗号データ、前記第1の符号及び前記第2の符号を読み出す再読出処理を実行し、
前記復号部は、前記再読出処理の実行中は自身の復号動作を停止することを特徴とする請求項1に記載の半導体記憶装置。
前記第1の誤り検出結果が誤り無しを表す場合に、前記読出データを前記メモリコントローラの外部に出力するインタフェース部を含むことを特徴とする請求項2に記載の半導体記憶装置。
前記メモリアクセス部は、前記監視処理の非実行時において前記第1の誤り検出結果が誤り有りを表す場合には、前記第2の誤り検出結果が誤り無しを表す状態に到るまで繰り返し前記暗号データ、前記第1の符号及び前記第2の符号を読み出す再読出処理を実行し、
前記復号部は、前記再読出処理の実行中は自身の復号動作を停止することを特徴とする請求項6に記載のメモリコントローラ。
前記第1の誤り検出結果が誤り無しを表す場合に、前記読出データを前記メモリコントローラの外部に出力するインタフェース部を含むことを特徴とする請求項7に記載のメモリコントローラ。
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、上記のように暗号化したデータをディスクではなく、例えばNAND型フラッシュメモリのような不揮発性半導体メモリに記憶させることも考えられる。
【0007】
NAND型フラッシュメモリでは、外部からの読出アクセスに応じた通常のデータ読出の他に、メモリの記憶領域の劣化度を監視するメモリ監視が行われる。
【0008】
このメモリ監視では、NAND型フラッシュメモリの各ブロックに対してページ単位でデータ(例えば誤り検出用の符号としてCRCコードを含む)の読み出しを行う。この際、格納されているデータが上記のように暗号化されている場合には、この読み出された暗号データを復号することにより暗号を解除した読出データを得る。
【0009】
そして、当該読出データに誤り検出処理を施して得られた誤り検出結果に基づき、その読出データが格納されていた記憶領域の劣化度を求める。従って、不揮発性半導体メモリに暗号データの書き込みを行うと、上記したメモリ監視を行う度に、暗号を解除する復号処理を実施することになるので、電力消費量及び監視に費やされる時間の増大を招くという問題が生じる。
【0010】
そこで、本発明は、メモリの監視に費やされる時間、及び電力消費量を低減させることが可能な半導体記憶装置、メモリコントローラ及びメモリの監視方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る半導体記憶装置は、メモリと、書込指令又は読出指令を受けて前記メモリを制御するメモリコントローラと、を含み、前記メモリコントローラは、前記メモリから読み出されたデータに生じている誤りの数に対応した前記メモリの劣化度を監視する監視処理を断続的に実行する監視部と、前記書込指令を受けた場合には、書込対象となる情報データを暗号化した暗号データ、前記情報データに基づく誤り検出用の第1の符号、及び前記暗号データに基づく誤り検出用の第2の符号を前記メモリに書き込み、前記読出指令を受けた場合又は前記監視処理の実行時には、前記メモリから前記暗号データ、前記第1の符号、及び前記第2の符号を読み出すメモリアクセス部と、前記メモリから読み出された前記暗号データを復号することにより暗号解除された読出データを得る復号部と、前記読出データ、及び前記メモリから読み出された前記第1の符号に誤り検出処理を施すことにより第1の誤り検出結果を得る、或いは前記メモリから読み出された前記暗号データ及び前記第2の符号に誤り検出処理を施すことにより第2の誤り検出結果を得る誤り検出部と、を有し、前記監視部は、前記監視処理の実行時に前記復号部の動作を停止させると共に、前記第2の誤り検出結果に基づき前記劣化度を求める。
【0012】
また、本発明に係るメモリコントローラは、書込指令又は読出指令に応じてメモリを制御するメモリコントローラであって、前記メモリから読み出されたデータに生じている誤りの数に対応した前記メモリの劣化度を監視する監視処理を断続的に実行する監視部と、前記書込指令を受けた場合には、書込対象となる情報データを暗号化した暗号データ、前記情報データに基づく誤り検出用の第1の符号、及び前記暗号データに基づく誤り検出用の第2の符号を前記メモリに書き込み、前記読出指令を受けた場合又は前記監視処理の実行時には、前記メモリから前記暗号データ、前記第1の符号、及び前記第2の符号を読み出すメモリアクセス部と、前記メモリから読み出された前記暗号データを復号することにより暗号解除された読出データを得る復号部と、前記読出データ、及び前記メモリから読み出された前記第1の符号に誤り検出処理を施すことにより第1の誤り検出結果を得る、或いは前記メモリから読み出された前記暗号データ及び前記第2の符号に誤り検出処理を施すことにより第2の誤り検出結果を得る誤り検出部と、を有し、前記監視部は、前記監視処理の実行時に前記復号部の動作を停止させると共に、前記第2の誤り検出結果に基づき前記劣化度を求める。
【0013】
また、本発明に係るメモリの監視方法は、書込対象となる情報データを暗号化した暗号データ、前記情報データに基づく誤り検出用の第1の符号、及び前記暗号データに基づく誤り検出用の第2の符号が格納されているメモリから読み出されたデータに生じている誤りの数に対応した前記メモリの劣化度を監視する監視処理を断続的に実行するメモリの監視方法であって、読出指令を受けた場合又は前記監視処理の実行時に、前記メモリから前記暗号データ、前記第1の符号、及び前記第2の符号を読み出し、前記メモリから読み出された前記暗号データに復号処理を施すことにより暗号解除された読出データを得て、前記読出データ、及び前記メモリから読み出された前記第1の符号に誤り検出処理を施して第1の誤り検出結果を得る、或いは前記メモリから読み出された前記暗号データ及び前記第2の符号に誤り検出処理を施すことにより第2の誤り検出結果を得て、前記監視処理の実行時には前記復号処理を停止させると共に、前記第2の誤り検出結果に基づき前記劣化度を求める。
【発明の効果】
【0014】
本発明は、情報データを暗号化してメモリに書き込むにあたり、当該情報データを暗号化した暗号データと共に、情報データに基づく誤り検出用の第1の符号、及び暗号データに基づく誤り検出用の第2の符号を書き込む。一方、読出指令を受けた場合、又はメモリの劣化度を監視する監視処理の実行時には、メモリから暗号データ、第1及び第2の符号を読み出す。
【0015】
また、メモリから読み出された暗号データに復号処理を施すことにより暗号解除された読出データを得る。そして、読出データ及びメモリから読み出された第1の符号に誤り検出処理を施して第1の誤り検出結果を得る、或いは、メモリから読み出された暗号データ及び第2の符号に誤り検出処理を施すことにより第2の誤り検出結果を得る。この際、メモリの劣化度を監視する監視処理の実行時には、上記した復号処理を停止させると共に、第2の誤り検出結果に基づきメモリの劣化度を求める。
【0016】
よって、本発明によれば、メモリの監視処理時には復号処理によって費やされる電力消費量が実質的にゼロとなるので、半導体記憶装置の電力消費量を低減させることが可能となる。更に、上記した監視処理によれば、復号処理に費やされる時間を待つことなく、メモリから読み出された暗号データ及び第2の符号に誤り検出処理を施すことができるので、監視処理に費やされる時間を短縮することが可能となる。
【発明を実施するための形態】
【0018】
以下、本発明の実施例について、図面を参照しつつ詳細に説明する。
【0019】
図1は、本発明に係る半導体記憶装置100の構成を示すブロック図である。
図1に示すように、半導体記憶装置100は、メモリセルアレイ部10、メモリコントローラ20を有する。
【0020】
メモリセルアレイ部10は、例えばNAND型の複数のメモリセルが配置されたメモリセルアレイと、当該メモリセルアレイにデータ書込用又は読み出し用の各種電圧を印加するドライバと、を含む。当該メモリセルアレイには、複数のメモリセルによってアクセスの最小単位となるページが形成され、複数個のページによってブロックが形成されている。
【0021】
メモリコントローラ20は、インタフェース部21、暗号化部22、パリティ算出部23、バッファ24、復号部25、誤り検出部26、メモリ監視部27及びメモリアクセス部28を含む。
【0022】
インタフェース部21は、ホスト装置(図示せず)から送出された各種コマンド(読出指令、書込指令等)、アドレスAD及び情報データDATを受け付ける。
【0023】
インタフェース部21は、例えば、データの書込を促す書込指令、アドレスAD、及び書込対象となる情報データDATを受けた場合には、当該情報データDATを書込データWRDとして暗号化部22及びパリティ算出部23に供給する。更に、インタフェース部21は、当該アドレスADへの書込データWRDの書き込みを促す書込アクセス信号をメモリアクセス部28に供給する。
【0024】
また、インタフェース部21は、データの読み出しを促す読出指令及びアドレスADを受けた場合には、当該アドレスADに格納されているデータの読み出しを促す読出アクセス信号をメモリアクセス部28に供給する。更に、インタフェース部21は、当該読出アクセス信号に応じて、メモリセルアレイ部10から読み出され、引き続き復号部25にて復号された読出データRDを、情報データDATとして出力する。ただし、この間、誤り検出部26から供給された誤り検出結果信号PCが誤り有りを表す場合には、インタフェース部21は、情報データDATとしての読出データRDの出力を行わない。
【0025】
暗号化部22は、上記した書込データWRDを例えば暗号鍵を用いて暗号化した暗号データEDを生成する。暗号化部22は、暗号データEDを、パリティ算出部23及びバッファ24に供給する。
【0026】
パリティ算出部23は、上記した書込データWRDから誤り検出用符号としてのパリティビットを算出する。パリティ算出部23は、書込データWRDに基づいて算出したパリティビットを、平文パリティビットP1としてバッファ24に供給する。更に、パリティ算出部23は、暗号データEDに平文パリティビットP1を付加したデータブロックから誤り検出用符号としてのパリティビットを算出し、算出したパリティビットを暗号パリティビットP2としてバッファ24に供給する。
【0027】
バッファ24は、上記した暗号データED、平文パリティビットP1及び暗号パリティビットP2を取り込む。そして、バッファ24は、
図2に示すように、暗号データEDに、平文パリティビットP1及び暗号パリティビットP2を付加したデータ形態を有するデータをメモリセルアレイ部10に供給する。
【0028】
また、バッファ24は、メモリセルアレイ部10から読み出されたデータ、つまり
図2に示す形態を有するデータを取り込み、これを読出暗号データREDとして復号部25及び誤り検出部26に供給する。
【0029】
復号部25は、読出暗号データREDに含まれる暗号データEDに暗号を解除する復号処理を施す。復号部25は、当該復号処理によって暗号解除されたデータを、読出データRDとしてインタフェース部21及び誤り検出部26に供給する。尚、復号部25は、メモリ監視部27から監視処理の実行中を表す監視処理実行信号EXが供給されている場合には、自身の復号動作を停止する。
【0030】
すなわち、復号部25は、監視処理の非実行中は復号処理を実行するが、監視処理の実行中は当該復号処理を停止する。
【0031】
誤り検出部26は、読出暗号データREDから平文パリティビットP1及び暗号パリティビットP2を抽出する。誤り検出部26は、監視処理実行信号EXが監視処理の非実行中を表す場合には、読出データRDに対して、以下のようなパリティ検査(平文パリティ検査と称する)を施す。すなわち、誤り検出部26は、読出データRDからパリティビットを算出し、この算出したパリティビットの論理レベルと平文パリティビットP1の論理レベルとが一致するか否かを判定する。ここで、両者が一致すると判定された場合には、誤り検出部26は、平文パリティ検査の結果として、パリティエラー無しを表す検査結果を得る。また、両者が一致していないと判定された場合には、誤り検出部26は、平文パリティ検査の結果としてパリティエラー有り表す検査結果を得る。
【0032】
一方、監視処理実行信号EXが監視処理の実行中を表す場合には、誤り検出部26は、読出暗号データREDに含まれる暗号データEDに平文パリティビットP1を付加したデータブロックに対して、以下のようなパリティ検査(暗号パリティ検査と称する)を施す。すなわち、誤り検出部26は、暗号データEDに平文パリティビットP1を付加したデータブロックからパリティビットを算出し、この算出したパリティビットの論理レベルと暗号パリティビットP2の論理レベルとが一致するか否かを判定する。ここで、両者が一致すると判定された場合には、誤り検出部26は、暗号パリティ検査の結果として、パリティエラー無しを表す検査結果を得る。また、両者が一致していないと判定された場合には、誤り検出部26は、暗号パリティ検査の結果としてパリティエラー有り表す検査結果を得る。
【0033】
誤り検出部26は、上記した平文パリティ検査の結果がパリティエラー有りを表す場合には誤り有り、パリティエラー無しを表す場合には誤り無しを表す誤り検出結果信号PCを生成する。また、誤り検出部26は、上記した暗号パリティ検査の結果がパリティエラー有りを表す場合には誤り有り、パリティエラー無しを表す場合には誤り無しを表す誤り検出結果信号PCを生成する。
【0034】
すなわち、誤り検出部26は、平文パリティ検査の結果、或いは暗号パリティ検査の結果に基づく誤り検出結果信号PCを生成し、これをインタフェース部21、メモリ監視部27及びメモリアクセス部28に供給する。
【0035】
メモリ監視部27は、電源投入直後、或いはホスト装置からのアクセス(読出又は書込)に応じた読出処理及び書込処理が行われていない期間中に、メモリセルアレイ部10の各ブロックの劣化度を監視する監視処理を断続的に実行する。更に、メモリ監視部27は、自身が上記した監視処理の実行中であるのか、或いは非実行中であるのかを表す監視処理実行信号EXを復号部25、誤り検出部26及びメモリアクセス部28に供給する。
【0036】
すなわち、メモリ監視部27は、先ず、メモリセルアレイ部10のブロック毎に、そのブロックに含まれる各ページからデータの読出を促す読出アクセス信号をメモリアクセス部28に供給する。これにより、メモリアクセス部28は、メモリセルアレイ部10から、当該メモリセルアレイ部10に格納されているデータ、つまり
図2に示すデータ形態を有するデータを読み出す。この読み出されたデータは、メモリコントローラ20のバッファ24を介して、読出暗号データREDとして誤り検出部26に供給される。
【0037】
この際、監視処理実行信号EXが監視処理の実行中を表す場合には、誤り検出部26は、読出暗号データREDに含まれる暗号データEDに暗号パリティビットP2を付加した符号ブロックに対して暗号パリティ検査を施す。そして、誤り検出部26は、当該暗号パリティ検査の結果に基づき、誤りの有無を表す誤り検出結果信号PCを生成し、これをメモリ監視部27に供給する。メモリ監視部27は、当該誤り検出結果信号PCにて表される誤り有りの総数をブロック毎に求める。そして、メモリ監視部27は、このブロック毎に求めた誤りの総数を、そのブロックの劣化度として求める。
【0038】
ここで、劣化度が所定閾値より大きいと判定された場合、メモリ監視部27は、該当するブロックを今後、使用不可とし、このブロックに格納されていたデータを他のブロックに書き込ませる制御をメモリセルアレイ部10に施す。また、劣化度合いが所定閾値より小さいと判定された場合、メモリ監視部27は、該当するブロックに格納されていたデータをこのブロックに再書込するという、いわゆるリフレッシュ処理の実行をメモリセルアレイ部10に促す。
【0039】
メモリアクセス部28は、インタフェース部21から書込アクセス信号(書込指令、アドレスを含む)を受けた場合には、当該書込アクセス信号によって示されるアドレスAD及び書込信号をメモリセルアレイ部10に供給する。これにより、書込対象としての情報データDATを暗号化した暗号データED、情報データDATに基づく誤り検出用の平文パリティビットP1、及び暗号データEDに基づく誤り検出用の暗号パリティビットP2が、メモリセルアレイ部10に書き込まれる。
【0040】
また、メモリアクセス部28は、インタフェース部21から読出アクセス信号(読出指令、アドレスを含む)を受けた場合、或いはメモリ監視部27から監視処理の実行中を表す監視処理実行信号EX及び読出アクセス信号を受けた場合には、当該読出アクセス信号にて示されるアドレス及び読出信号をメモリセルアレイ部10に供給する。これにより、メモリセルアレイ部10は、
図2に示すデータ形態を有する暗号データED、平文パリティビットP1、及び暗号パリティビットP2を読み出す。この読み出されたデータ(ED、P1、P2)は読出暗号データREDとして復号部25及び誤り検出部26に供給される。
【0041】
ここで、ホスト装置からの読出アクセスに応じた読出処理の実行中は、誤り検出部26には、監視処理の非実行中を表す監視処理実行信号EXが供給されている。よって、誤り検出部26は、上記した平文パリティ検査を実行し、その結果を表す誤り検出結果信号PCをメモリアクセス部28に供給する。この際、誤り有りを表す誤り検出結果信号PCを受けた場合、メモリアクセス部28は再読出処理(後述する)を実行する。
【0042】
以下に、メモリセルアレイ部10からのデータ読出時に、復号部25及び誤り検出部26において実施される誤り検出処理について説明する。
【0043】
図3は、当該誤り検出処理の手順を示すフローチャートである。
図3において、復号部25及び誤り検出部26は、先ず、監視処理実行信号EXに基づき監視処理の実行中であるか否かを判定する(ステップS11)。
【0044】
ステップS11にて監視処理の実行中ではないと判定された場合、復号部25は、メモリセルアレイ部10から読み出された、
図2に示すデータ形態を有する読出暗号データREDに含まれる暗号データEDに対して暗号を解除する復号を実行する(ステップS12)。ステップS12により、復号部25は、当該復号によって暗号が解除されたデータを読出データRDとして誤り検出部26に供給する。
【0045】
次に、誤り検出部26が、当該読出データRDからパリティビットを算出し、この算出したパリティビットの論理レベルと平文パリティビットP1の論理レベルとが一致するか否かを判定することにより、パリティエラーが有るか否かを表すパリティ検査結果を得る、平文パリティ検査を実行する(ステップS13)。 一方、ステップS11において監視処理の実行中であると判定された場合、復号部25は、自身の動作を停止、つまり暗号データEDに対する復号処理を停止する(ステップS14)。
【0046】
次に、誤り検出部26が、読出暗号データREDに含まれる暗号データEDに平文パリティビットP1を付加したデータブロックからパリティビットを算出し、この算出したパリティビットの論理レベルと暗号パリティビットP2の論理レベルとが一致するか否かを判定する。これにより、誤り検出部26は、パリティエラーが有るか否かを表すパリティ検査結果を得る暗号パリティ検査を実行する(ステップS15)。
【0047】
そして、このステップS15又は上記したステップS13の実行後、誤り検出部26は、上記した平文パリティ検査の結果、或いは暗号パリティ検査の結果に基づき、誤りの有無を表す誤り検出結果信号PCを生成する(ステップS16)。
【0048】
このように、メモリコントローラ20では、情報データを暗号化した暗号データEDに平文パリティビットP1、暗号パリティビットP2を付加したものをメモリセルアレイ部10に書き込む。尚、平文パリティビットP1は、誤り検出用の第1の符号として、暗号化前の平文状態の情報データに基づいて算出されたパリティビットである。また、暗号パリティビットP2は、誤り検出用の第2の符号として、暗号データEDに基づいて算出されたパリティビットである。
【0049】
ここで、メモリコントローラ20は、データ読出時に実施するパリティ検査の方法を、当該データ読出がメモリの監視処理に伴う読出処理であるか否かにより、以下のように切り替えている。
【0050】
すなわち、ホスト装置からの読出指令に応じたデータの読出処理時、つまりメモリ監視部27による監視処理が非実行中である場合には、メモリコントローラ20は、平文パリティ検査を行う。つまり、メモリコントローラ20は、暗号データEDを復号した読出データRDに対して、読出暗号データREDに含まれる平文パリティビットP1を用いたパリティ検査を行う(S13)。
【0051】
一方、監視処理が実行中である場合、つまり監視処理に伴うデータ読出時には、メモリコントローラ20は、暗号パリティ検査を行う。すなわち、メモリコントローラ20は、読出暗号データREDに含まれる暗号データEDに平文パリティビットP1を付加したデータブロックに対して、暗号パリティビットP2を用いたパリティ検査を行う(S15)。
【0052】
このように、暗号パリティ検査では復号部25による復号処理が不要となる。そこで、この際、メモリ監視部27は、自身の監視処理の実行期間に亘り復号部25の動作を停止させ(S14)、暗号パリティ検査の結果に基づく誤りの総数に対応したメモリの劣化度を求める。
【0053】
よって、メモリの監視処理時においては復号部25での電力消費量力が実質的にゼロとなるので、半導体記憶装置100の電力消費量が小さくなる。更に、上記した監視処理では復号処理が終了するのを待つことなく、メモリセルアレイ部10から読み出されたデータ(ED、P1、P2)に対して直ちにパリティ検査を施すことができるので、監視処理に費やされる時間を短縮することが可能となる。
【0054】
ところで、上記実施例では、監視処理でのパリティ検査として暗号パリティ検査を採用しているが、ホスト装置からの読出アクセスに応じて再読出処理が実施された場合にも、同様に暗号パリティ検査を行うようにしても良い。
【0055】
尚、再読出処理は、監視処理の非実行時に、ホスト装置からの読出アクセスに応じてメモリセルアレイ部10から読み出され、且つ復号されたデータ(RD、P1)に対する平文パリティ検査の結果が誤り有りを表す場合に実施される処理である。再読出処理では、パリティ検査の結果が誤り無しを表す状態になるまで、或いは読み出し回数が所定の上限に到るまで、読み出し条件(例えば読出電圧の電圧値)を変更しながら、同一のアドレスからデータを繰り返し読み出す。
【0056】
図4は、メモリアクセス部28が実行する再読出処理のフローを表すフローチャートである。先ず、メモリアクセス部28は、復号部25の動作を停止させる(ステップS21)。
【0057】
次に、メモリアクセス部28は、メモリセルアレイ部10における現時点での読出条件を変更、例えば読出用電圧の電圧値を所定値だけ増加又は低下させる(ステップS22)。次に、メモリアクセス部28は、上記した読出アクセスによって指定されたアドレスと同一のアドレスからデータを読み出す読出制御をメモリセルアレイ部10に施す(ステップS23)。
【0058】
次に、メモリアクセス部28は、誤り検出部26に暗号パリティ検査を実行させる(ステップS24)。
【0059】
次に、メモリアクセス部28は、誤り検出部26から供給された誤り検出結果信号PCが誤り有りを表すか否かを判定する(ステップS25)。
【0060】
ステップS25において、誤り検出結果信号PCが誤り有りを表すと判定された場合、メモリアクセス部28は、再読出の回数が所定の上限に到達したか否かを判定する(ステップS26)。
【0061】
ステップS26において再読出の回数が所定の上限に到達していないと判定された場合、メモリアクセス部28は、ステップS22の実行に戻り、前述したステップS22〜S25の動作を再び実行する。つまり、読出条件を変更(S22)した後、再び、同一のアドレスからデータ(ED、P1、P2)を読み出し(S23)、読み出され暗号データEDに平文パリティビットP1を付加したデータブロックに対して、暗号パリティビットP2を用いたパリティ検査(暗号パリティ検査)を行う(S24)。
【0062】
一方、当該ステップS26において再読出の回数が所定の上限に到達したと判定された場合、或いは上記ステップS25において誤り検出結果信号PCが誤り有りを表していないと判定された場合、メモリアクセス部28は、復号部25の復号動作を再開させる(ステップS27)。
【0063】
このように、
図4に示す再読出処理では、メモリセルアレイ部10から繰り返し読み出されたデータに施すパリティ検査として暗号パリティ検査を採用している。よって、再読出処理の実行期間中は復号部25による復号動作が不要となるので、
図4に示す再読出処理では、この再読出処理の実行中に亘り、復号部25の動作を停止(S21、S27)させている。
【0064】
これにより、再読出処理時において復号部25で消費される電力が実質的にゼロとなるので、半導体記憶装置100の電力消費量が小さくなる。更に、
図4に示す再読出処理では、復号部25での復号処理の終了を待つことなく、メモリセルアレイ部10から読み出されたデータ(ED、P2)に対して直ちにパリティ検査を施すことができるので、再読出処理に費やされる時間を短縮することが可能となる。
【0065】
尚、上記実施例におけるパリティ算出部23では、暗号データEDに平文パリティビットP1を付加したデータブロックから暗号パリティビットP2を算出しているが、暗号データEDから直接算出したパリティビットを暗号パリティビットP2としても良い。この際、暗号パリティ検査では、誤り検出部26は、暗号データEDからパリティビットを算出し、この算出したパリティビットの論理レベルと暗号パリティビットP2の論理レベルとが一致するか否かを判定する。
【0066】
また、上記実施例では、メモリセルアレイ部10から読み出されたデータに対する誤り検出方式としてパリティ検査を採用しているが、他の誤り検出方式、例えばCRC(Cyclic Redundancy Check)を採用しても良い。或いは、当該誤り検出方式として誤り訂正符号を採用しても良い。
【0067】
例えば、誤り検出方式としてCRCを採用した場合、パリティ算出部23に代えて、CRC方式に従った所定の生成多項式によって誤り検出用の少なくとも1ビットの符号を算出するCRC符号算出部を採用する。当該CRC符号算出部は、書込データWRDに基づいて算出した符号を
図2に示すP1、暗号データEDに基づいて算出した符号をP2としてバッファ24に供給する。また、この際、誤り検出部26は、暗号解除された読出データRDに符号P1を付加したビットストリーム、又は暗号データEDに符号P2を付加したビットストリームに対して、CRC符号算出部で用いた生成多項式に従った演算を施す。これにより、誤り検出部26は、誤りビットの有無を表す誤り検出結果信号PCを得る。
【0068】
要するに、半導体記憶装置100としては、書込指令又は読出指令を受けてメモリ(10)を制御するメモリコントローラ(20)として、以下の監視部、メモリアクセス部、復号部、及び誤り検出部を含むものであれば良い。
【0069】
監視部(27)は、メモリ(10)から読み出されたデータに生じている誤りの数に対応したメモリの劣化度を監視する監視処理を断続的に実行する。メモリアクセス部(27)は、書込指令を受けた場合には、書込対象となる情報データ(WRD)を暗号化した暗号データ(ED)、この情報データに基づく誤り検出用の第1の符号(P1)、及び暗号データに基づく誤り検出用の第2の符号(P2)をメモリ(10)に書き込む。また、メモリアクセス部(27)は、読出指令を受けた場合又は監視処理の実行時には、メモリ(10)から暗号データ(ED)、第1の符号(P1)、及び第2の符号(P2)を読み出す。
【0070】
復号部(25)は、メモリ(10)から読み出された暗号データ(ED)を復号することにより暗号解除された読出データ(RD)を得る。
【0071】
誤り検出部(26)は、読出データ(RD)及びメモリ(10)から読み出された第1の符号(P1)に誤り検出処理を施すことにより第1の誤り検出結果を得る。或いは、誤り検出部(26)は、メモリ(10)から読み出された暗号データ(ED)及び第2の符号(P2)に誤り検出処理を施すことにより第2の誤り検出結果を得る。ここで、監視部(27)は、監視処理の実行時には、復号部(25)の動作を停止させると共に上記した第2の誤り検出結果に基づきメモリ(10)の劣化度を求める。