(57)【特許請求の範囲】
【請求項１】
ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に前記半導体記憶装置に記憶されているデータを入力して該入力したデータに対して前記所定のエラー訂正符号を用いてエラー訂正すると共に復号して前記ホスト装置に出力するデータ入出力制御装置であって、
前記所定のエラー訂正符号に符号化するデータの長さである実行用データ長および前記所定のエラー訂正符号の長さである実行用符号長を記憶するエラー訂正情報記憶部と、入力されたデータを前記記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを前記実行用符号長の前記所定のエラー訂正符号に符号化して前記半導体記憶装置に出力する符号化部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して前記所定のエラー訂正符号によりエラー訂正すると共に復号して前記ホスト装置に出力する復号部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだｎ個（ｎは、値１以上の整数）のデータに対して前記所定のエラー訂正符号により前記読み込んだデータのうちエラーが生じているデータ数であるエラーデータ数を検出するエラー検出部と、前記検出されたエラーデータ数が予め定められた上限エラー数を超えているときには１個の前記実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さが前記エラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび前記所定のエラー訂正符号の符号長をそれぞれ前記実行用データ長および前記実行用符号長として前記エラー訂正情報記憶部に記憶させる記憶処理部と、を有するデータ訂正入出力回路と、
前記ホスト装置から前記半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の符号化部に入力されて前記データ訂正入出力回路の符号化部から出力されたデータが前記半導体記憶装置に出力されると共に該出力されたデータが前記半導体記憶装置に記憶されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが読み出されて該読み出されたデータが前記データ訂正入出力回路の復号部に入力され該データ訂正入出力回路の復号部から出力されたデータが前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには前記半導体記憶装置に記憶されているデータを読み出して該読み出したデータが前記データ訂正入出力回路のエラー検出部に入力された後に前記半導体記憶装置に記憶されているデータが消去されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御する制御回路と、
を備えるデータ入出力制御装置。
【請求項２】
請求項１記載のデータ入出力制御装置であって、
前記データ訂正入出力回路の記憶処理部は、前記検出されたエラー数が前記上限エラー数を超えているときには前記記憶されている実行用データ長のｍ倍（ｍは２以上の整数）のデータ長を前記実行用データ長として前記エラー訂正情報記憶部に記憶させる処理部である
データ入出力制御装置。
【請求項３】
請求項１または２記載のデータ入出力制御装置であって、
前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路で消費する電力が該データ訂正入出力回路での消費が許容される許容電力以下となる前記実行用符号長の上限として予め定められた上限電力許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記エラー訂正情報記憶部に記憶させる処理部である
データ入出力制御装置。
【請求項４】
請求項１ないし３いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路が単位時間あたりに前記半導体記憶装置から読み出し可能なデータ量である読み出し速度が前記データ訂正入出力回路で許容される許容読み出し速度以下となる前記実行用符号長の上限として予め定められた上限速度許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記エラー訂正情報記憶部に記憶させる処理部である
データ入出力制御装置。
【請求項５】
請求項１ないし４いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路の面積が該データ訂正入出力回路に許容される許容面積以下となる前記実行用符号長の上限として予め定められた上限面積許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記前記エラー訂正情報記憶部に記憶させる処理部である
データ入出力制御装置。
【請求項６】
請求項１ないし５いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記半導体記憶装置は、フローティングゲートへの電子の注入量に応じて複数の電子注入状態を多値記憶として記憶すると共に前記フローティングゲートへの電子の注入量が多いほど劣化が促進される傾向の半導体記憶素子を複数有する装置であり、
前記データ訂正入出力回路は、
前記入力されたデータを第１の長さずつ順次読み込んで該読み込んだ第１の長さのデータのうち前記半導体記憶素子を予め定められた所定の電子注入状態より前記フローティングゲートへの電子の注入量が多い状態にする高電子注入データの数が前記半導体記憶素子を前記所定の高電子注入状態より前記フローティングゲートへの電子の注入量が少ない状態にする低電子注入データの数以下であるときには第２の長さの第１のフラグを付加して前記符号化部に出力し、前記読み込んだ第１の長さのデータのうち前記高電子注入データの数が前記低電子注入データの数を超えているときには前記高電子注入データを前記低電子注入データに変換すると共に前記低電子注入データを前記高電子注入データに変換するデータ変換を施して該データ変換後のデータに前記第２の長さの第２のフラグを付加して前記符号化部に出力し、前記復号部から出力されたデータを前記第１の長さに前記第２の長さを加えた第３の長さずつ順次読み込んで該読み込んだ第３の長さのデータが前記第１のフラグを含んでいるときには前記データから前記第１のフラグを削除したデータを出力すると共に前記読み込んだ第３の長さのデータが前記第２のフラグを含んでいるときには前記第２のフラグを削除した前記第１の長さのデータに対して前記データ変換を施して出力するデータ変換部、
を有する回路であり、
前記制御回路は、前記ホスト装置から前記書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の前記データ変換部を介して前記符号化部に入力され、前記ホスト装置から前記読み出し要求信号が入力されたときには前記データ訂正入出力回路の復号部から出力されたデータが前記データ変換部を介して前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御する回路である
データ入出力制御装置。
【請求項７】
請求項６記載のデータ入出力制御装置であって、
前記半導体記憶素子は、前記フローティングゲートに電子が注入された高電子注入状態と該高電子注入状態より前記フローティングゲートに注入されている電子が少ない低電子注入状態とを二値記憶として記憶する素子であり、
前記高電子注入データは前記半導体記憶素子を前記高電子注入状態にするデータであり、前記低電子注入データは前記半導体記憶素子を前記低電子注入状態にするデータである
データ入出力制御装置。
【請求項８】
請求項１ないし７いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記所定のエラー訂正符号は、ブロック符号または畳込み符号である
データ入出力制御装置。
【請求項９】
請求項１ないし８いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記半導体記憶装置は、前記半導体記憶装置にデータが書き込まれた回数と前記半導体記憶装置に記憶されているデータが消去された回数との和の回数である書き込み消去回数が多くなるほど記憶しているデータにエラーが生じる確率が高くなる傾向の装置である
データ入出力制御装置。
【請求項１０】
請求項９記載のデータ入出力制御装置であって、
前記半導体記憶装置は、ＮＡＮＤ型フラッシュメモリおよびＮＯＲ型フラッシュメモリおよび相変化メモリおよび磁気抵抗メモリおよび強誘電体メモリおよび抵抗変化型メモリのいずれか又はこれらを複数組み合わせた装置である
データ入出力制御装置。
【請求項１１】
請求項１ないし１０いずれか１つの請求項に記載のデータ入出力制御装置であって、
前記半導体記憶装置は、前記データ入出力制御装置が形成された半導体チップと異なる半導体チップに形成された装置である
データ入出力制御装置。
【請求項１２】
不揮発性の半導体記憶装置と、
請求項１ないし８いずれか１つの請求項に記載のデータ入出力制御装置と、
を備える半導体記憶装置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ入出力制御装置および半導体記憶装置システムに関し、特に、ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に半導体記憶装置に記憶されているデータを入力して入力したデータに対して所定のエラー訂正符号を用いてエラー訂正すると共に復号してホスト装置に出力するデータ入出力制御装置およびこうしたデータ入出力制御装置を備える半導体記憶装置システムに関する。
【背景技術】
【０００２】
従来、この種のデータ入出力制御装置としては、ＣＰＵからの要求に応じてフラッシュメモリを制御するものにおいて、入力されたデータをフラッシュメモリに書き込む際には入力されたデータを５１２バイトずつ順次読み込んで５２２バイトのエラー訂正符号に符号化してフラッシュメモリに書き込み、フラッシュメモリからデータを読み出す際にはフラッシュメモリから読み出しデータにエラーが生じているときにはエラー訂正符号を用いてエラーを訂正すると共に読み出しデータを復号して出力するエラー訂正回路が搭載されたものが提案されている（例えば、非特許文献１参照）。この装置では、こうしたエラー訂正回路を搭載することにより、フラッシュメモリに記憶されているデータが何らかの要因で反転するエラーが生じたときには、生じたエラーを訂正できるとしている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Toru Tanzawa, Tomoharu Tanaka, Ken Takeuchi, Riichiro Shirota, Seiichi Aritomo, Hiroshi Watanabe, Gertjan Hemink, Kazuhiro Shimizu, Shinji Sato, Yuji Takeuchi, and Kazunori Ohuchi, 「A Compact On-Chip ECC for Low Cost Flash Memories」, IEEE JOURNAL OF SOLID-STATE CIRCUITS, VOL.32, NO.5, MAY 1997
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のデータ入出力制御装置では、エラー訂正符号の符号長を所定の長さとして、こうした所定の長さのエラー訂正符号を用いてデータのエラー訂正を行うため、訂正可能なビット数に上限があり、フラッシュメモリに記憶されているデータに訂正可能なビット数の上限を超えたエラーが生じると、こうしたエラーを訂正できなくなる。より多くのエラーを訂正する手法としては、より長い符号長のエラー訂正符号を用いる手法も考えられるが、この場合、エラー訂正回路においてデータを符号化したり復号したりするために要する処理時間が増大したり、エラー訂正回路の消費電力が増大してしまう。
【０００５】
本発明のデータ入出力制御装置および半導体記憶装置システムは、半導体記憶装置に記憶されているデータにエラーが生じたときにはより多くのエラーを訂正することを主目的とする。
【課題を解決するための手段】
【０００６】
本発明のデータ入出力制御装置および半導体記憶装置システムは、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明の第１のデータ入出力制御装置は、
ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に前記半導体記憶装置に記憶されているデータを入力して該入力したデータに対して前記所定のエラー訂正符号を用いてエラー訂正すると共に復号して前記ホスト装置に出力するデータ入出力制御装置であって、
前記所定のエラー訂正符号に符号化するデータの長さである実行用データ長および前記所定のエラー訂正符号の長さである実行用符号長を記憶するエラー訂正情報記憶部と、入力されたデータを前記記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを前記実行用符号長の前記所定のエラー訂正符号に符号化して前記半導体記憶装置に出力する符号化部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して前記所定のエラー訂正符号によりエラー訂正すると共に復号して前記ホスト装置に出力する復号部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだｎ個（ｎは、値１以上の整数）のデータに対して前記所定のエラー訂正符号により前記読み込んだデータのうちエラーが生じているデータ数であるエラーデータ数を検出するエラー検出部と、前記検出されたエラーデータ数が予め定められた上限エラー数を超えているときには１個の前記実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さが前記エラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび前記所定のエラー訂正符号の符号長をそれぞれ前記実行用データ長および前記実行用符号長として前記エラー訂正情報記憶部に記憶させる記憶処理部と、を有するデータ訂正入出力回路と、
前記ホスト装置から前記半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の符号化部に入力されて前記データ訂正入出力回路の符号化部から出力されたデータが前記半導体記憶装置に出力されると共に該出力されたデータが前記半導体記憶装置に記憶されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが読み出されて該読み出されたデータが前記データ訂正入出力回路の復号部に入力され該データ訂正入出力回路の復号部から出力されたデータが前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには前記半導体記憶装置に記憶されているデータを読み出して該読み出したデータが前記データ訂正入出力回路のエラー検出部に入力された後に前記半導体記憶装置に記憶されているデータが消去されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御する制御回路と、
を備えることを要旨とする。
【０００８】
この本発明の第１の半導体記憶装置の制御装置では、ホスト装置から半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには、ホスト装置から入力されたデータがデータ訂正入出力回路の符号化部に入力されてデータ訂正入出力回路の符号化部から出力されたデータが半導体記憶装置に出力されると共に該出力されたデータが半導体記憶装置に記憶されるようデータ訂正入出力回路と半導体記憶装置とを制御する。データ訂正入出力回路の符号化部は、入力されたデータを記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを実行用符号長の所定のエラー訂正符号に符号化して半導体記憶装置に出力する。これにより、実行用符号長の所定のエラー訂正符号に符号化されたデータを半導体記憶装置に記憶させることができる。また、ホスト装置から半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには半導体記憶装置に記憶されているデータが読み出されて読み出されたデータがデータ訂正入出力回路の復号エラー検出部に入力されデータ訂正入出力回路の復号部から出力されたデータがホスト装置に出力されるようデータ訂正入出力回路と半導体記憶装置とを制御する。データが入力されたデータ訂正入出力回路の復号部は、入力されたデータを記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して所定のエラー訂正符号によりエラー訂正すると共に復号してホスト装置に出力するから、ホスト装置にエラー訂正されたデータを出力することができる。そして、ホスト装置から半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには半導体記憶装置に記憶されているデータを読み出して読み出したデータがデータ訂正入出力回路のエラー検出部に入力された後に半導体記憶装置に記憶されているデータが消去されるようデータ訂正入出力回路と半導体記憶装置とを制御する。データを入力されたデータ訂正入出力回路のエラー検出部は、入力されたデータを記憶されている実行用符号長ずつ順次読み込んで読み込んだｎ個（ｎは、値１以上の整数）のデータに対して所定のエラー訂正符号により読み込んだデータのうちエラーが生じているデータ数であるエラーデータ数を検出し、データ訂正入出力回路の記憶処理部は、検出されたエラーデータ数が予め定められた上限エラー数を超えているときには１個の実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さがエラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび所定のエラー訂正符号の符号長をそれぞれ実行用データ長および実行用符号長としてエラー訂正情報記憶部に記憶させる。検出されたエラーデータ数が上限エラー数を超えているときには、次に書き込み要求信号が入力されると、データ訂正入出力回路の符号化部は、入力されたデータをより長い実行用データ長ずつ順次読み込んで該読み込んだデータをより長い実行用符号長の所定のエラー訂正符号に符号化して半導体記憶装置に出力し、次に読み出し要求信号が入力されたときには、データ訂正入出力回路の復号部は、より長い実行用符号長の所定のエラー訂正符号でデータをエラー訂正することができる。これにより、より多くのエラーを訂正することができる。なお、「上限エラー数」としては、ｎ個の実行用符号長の所定のエラー訂正符号で訂正可能なエラー数の上限値やこの上限値より若干小さい値を含むものとする。
【０００９】
こうした本発明の第１のデータ入出力制御装置において、前記データ訂正入出力回路の記憶処理部は、前記検出されたエラー数が前記上限エラー数を超えているときには前記記憶されている実行用データ長のｍ倍（ｍは２以上の整数）のデータ長を前記実行用データ長として前記エラー訂正情報記憶部に記憶させる処理部であるものとすることもできる。
【００１０】
本発明の第２のデータ入出力制御装置は、
ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に前記半導体記憶装置に記憶されているデータを入力して該入力したデータに対して前記所定のエラー訂正符号を用いてエラー訂正すると共に復号して前記ホスト装置に出力するデータ入出力制御装置であって、
前記半導体記憶装置にデータが書き込まれた回数と前記半導体記憶装置に記憶されているデータが消去された回数との和の回数である書き込み消去回数を計数する書き込み回数計数回路と、
前記所定のエラー訂正符号に符号化するデータの長さである実行用データ長および前記所定のエラー訂正符号の長さである実行用符号長を記憶するエラー訂正情報記憶部と、入力されたデータを前記記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを前記実行用符号長の前記所定のエラー訂正符号に符号化して前記半導体記憶装置に出力する符号化部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して前記所定のエラー訂正符号によりエラー訂正すると共に復号して前記ホスト装置に出力する復号部と、ｎ個（ｎは、値１以上の整数）の実行用符号長のデータに予め定められた上限エラー数より多いエラーが生じると推定される書き込み消去回数である判定用閾値を前記計数された書き込み消去回数が超えているときには１個の前記実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さが前記エラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび前記所定のエラー訂正符号の符号長をそれぞれ前記実行用データ長および前記実行用符号長として前記エラー訂正情報記憶部に記憶させる記憶処理部と、を有するデータ訂正入出力回路と、
前記ホスト装置から前記半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の符号化部に入力されて前記データ訂正入出力回路の符号化部から出力されたデータが前記半導体記憶装置に出力されると共に該出力されたデータが前記半導体記憶装置に記憶されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが読み出されて該読み出されたデータが前記データ訂正入出力回路の復号部に入力され該データ訂正入出力回路の復号部から出力されたデータが前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが消去されるよう前記半導体記憶装置を制御する制御回路と、
を備えることを要旨とする。
【００１１】
この本発明の第２のデータ入出力制御装置では、ホスト装置から半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには、ホスト装置から入力されたデータがデータ訂正入出力回路の符号化部に入力されてデータ訂正入出力回路の符号化部から出力されたデータが半導体記憶装置に出力されると共に該出力されたデータが半導体記憶装置に記憶されるようデータ訂正入出力回路と半導体記憶装置とを制御する。データ訂正入出力回路の符号化部は、入力されたデータを記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを実行用符号長の所定のエラー訂正符号に符号化して半導体記憶装置に出力する。これにより、実行用符号長の所定のエラー訂正符号に符号化されたデータを半導体記憶装置に記憶させることができる。また、ホスト装置から半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには半導体記憶装置に記憶されているデータが読み出されて読み出されたデータがデータ訂正入出力回路の復号部に入力されデータ訂正入出力回路の復号部から出力されたデータがホスト装置に出力されるようデータ訂正入出力回路と半導体記憶装置とを制御する。データが入力されたデータ訂正入出力回路の復号部は、入力されたデータを記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して所定のエラー訂正符号によりエラー訂正すると共に復号してホスト装置に出力するから、ホスト装置にエラー訂正されたデータを出力することができる。そして、データ訂正入出力回路の記憶処理部は、ｎ個（ｎは、値１以上の整数）の実行用符号長のデータに予め定められた上限エラー数より多いエラーが生じると推定される書き込み消去回数である判定用閾値を計数された書き込み消去回数が超えているときには１個の実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さがエラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび所定のエラー訂正符号の符号長をそれぞれ実行用データ長および実行用符号長としてエラー訂正情報記憶部に記憶させる。これにより、判定用閾値を計数された書き込み消去回数が超えているとき、次に書き込み要求信号が入力されたときには、データ訂正入出力回路の符号化部は、入力されたデータをより長い実行用データ長ずつ順次読み込んで読み込んだデータをより長い実行用符号長の所定のエラー訂正符号に符号化して半導体記憶装置に出力し、次に書き込み要求信号が入力されたときには、データ訂正入出力回路の復号部は、より長い実行用符号長の所定のエラー訂正符号でデータをエラー訂正することができる。これにより、より多くのエラーを訂正することができる。なお、「上限エラー数」としては、ｎ個の実行用符号長の所定のエラー訂正符号で訂正可能なエラー数の上限値やこの上限値より若干小さい値を含むものとする。
【００１２】
こうした本発明の第２のデータ入出力制御装置において、前記データ訂正入出力回路の記憶処理部は、前記計数された書き込み消去回数が前記判定用閾値を超えているときには前記記憶されている実行用データ長のｍ倍（ｍは２以上の整数）のデータ長を前記実行用データ長として前記エラー訂正情報記憶部に記憶させる処理であるものとすることもできる。
【００１３】
こうした本発明の第１または第２のデータ入出力制御装置において、前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路で消費する電力が該データ訂正入出力回路での消費が許容される許容電力以下となる前記実行用符号長の上限として予め定められた上限電力許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記エラー訂正情報記憶部に記憶させる処理部であるものとすることもできる。エラー訂正情報記憶部に記憶している実行用符号長が長いほどデータ訂正入出力回路で消費する電力が長くなる傾向にあるから、上限電力許容符号長よりエラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した実行用データ長および実行用符号長をエラー訂正情報記憶部に記憶させることにより、データ訂正入出力回路で消費する電力を許容電力以下に抑えた状態でエラー訂正することができる。
【００１４】
また、本発明の第１または第２のデータ入出力制御装置において、前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路が単位時間あたりに前記半導体記憶装置から読み出し可能なデータ量である読み出し速度が前記データ訂正入出力回路で許容される許容読み出し速度以下となる前記実行用符号長の上限として予め定められた上限速度許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記エラー訂正情報記憶部に記憶させる処理部であるものとすることもできる。エラー訂正情報記憶部に記憶している実行用符号長が長いほど読み出し速度が遅くなる傾向にあるから、上限速度許容符号長よりエラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した実行用データ長および実行用符号長をエラー訂正情報記憶部に記憶させることにより、データ訂正入出力回路の読み出し速度が許容読み出し速度より遅くなるのを抑えた状態でエラー訂正することができる。
【００１５】
さらに、本発明の第１または第２のデータ入出力制御装置において、前記データ訂正入出力回路の記憶処理部は、前記データ訂正入出力回路の面積が該データ訂正入出力回路に許容される許容面積以下となる前記実行用符号長の上限として予め定められた上限面積許容符号長より前記エラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した前記実行用データ長および前記実行用符号長を前記前記エラー訂正情報記憶部に記憶させる処理部であるものとすることもできる。エラー訂正情報記憶部に記憶している実行用符号長が長いほどデータ訂正入出力回路の面積が大きくなる傾向にあるから、上限面積許容符号長よりエラー訂正情報記憶部に記憶している実行用符号長が短くなるよう設定した実行用データ長および実行用符号長をエラー訂正情報記憶部に記憶させることにより、データ訂正入出力回路の面積を許容面積以下にすることができる。
【００１６】
そして、本発明の第１または第２のデータ入出力制御装置において、前記半導体記憶装置は、フローティングゲートへの電子の注入量に応じて複数の電子注入状態を多値記憶として記憶すると共に前記フローティングゲートへの電子の注入量が多いほど劣化が促進される傾向の半導体記憶素子を複数有する装置であり、前記データ訂正入出力回路は、前記入力されたデータを第１の長さずつ順次読み込んで該読み込んだ第１の長さのデータのうち前記半導体記憶素子を予め定められた所定の電子注入状態より前記フローティングゲートへの電子の注入量が多い状態にする高電子注入データの数が前記半導体記憶素子を前記所定の高電子注入状態より前記フローティングゲートへの電子の注入量が少ない状態にする低電子注入データの数以下であるときには第２の長さの第１のフラグを付加して前記符号化部に出力し、前記読み込んだ第１の長さのデータのうち前記高電子注入データの数が前記低電子注入データの数を超えているときには前記高電子注入データを前記低電子注入データに変換すると共に前記低電子注入データを前記高電子注入データに変換するデータ変換を施して該データ変換後のデータに前記第２の長さの第２のフラグを付加して前記符号化部に出力し、前記復号部から出力されたデータを前記第１の長さに前記第２の長さを加えた第３の長さずつ順次読み込んで該読み込んだ第３の長さのデータが前記第１のフラグを含んでいるときには前記データから前記第１のフラグを削除したデータを出力すると共に前記読み込んだ第３の長さのデータが前記第２のフラグを含んでいるときには前記第２のフラグを削除した前記第１の長さのデータに対して前記データ変換を施して出力するデータ変換部、を有する回路であり、前記制御回路は、前記ホスト装置から前記書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の前記データ変換部を介して前記符号化部に入力され、前記ホスト装置から前記読み出し要求信号が入力されたときには前記データ訂正入出力回路の復号部から出力されたデータが前記データ変換部を介して前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御する回路であるものとすることもできる。こうすれば、半導体記憶装置に記憶させるデータのうち低電子注入データの割合を高電子注入データより高くすることができるから、半導体記憶装置に記憶されているデータにエラーが生じる確率をより低くすることができる。この場合において、前記半導体記憶素子は、前記フローティングゲートに電子が注入された高電子注入状態と該高電子注入状態より前記フローティングゲートに注入されている電子が少ない低電子注入状態とを二値記憶として記憶する素子であり、前記高電子注入データは前記半導体記憶素子を前記高電子注入状態にするデータであり、前記低電子注入データは前記半導体記憶素子を前記低電子注入状態にするデータであるものとすることもできる。こうすれば、半導体素子が高電子注入状態と低電子注入状態とを二値記憶として記憶する素子である場合に、半導体記憶装置に記憶されているデータにエラーが生じる確率をより低くすることができる。
【００１７】
さらに、本発明の第１または第２のデータ入出力制御装置において、前記所定のエラー訂正符号は、ブロック符号または畳込み符号であるものとすることもできる。ここで、「ブロック符号」にはＢＣＨ符号やリード・ソロモン符号などが含まれ、「畳込み符号」にはＬＤＰＣ符号などが含まれる。
【００１８】
また、本発明の第１または第２のデータ入出力制御装置において、前記半導体記憶装置は、前記半導体記憶装置にデータが書き込まれた回数と前記半導体記憶装置に記憶されているデータが消去された回数との和の回数である書き込み消去回数が多くなるほど記憶しているデータにエラーが生じる確率が高くなる傾向の装置であるものとすることもできる。この場合において、前記半導体記憶装置は、ＮＡＮＤ型フラッシュメモリおよびＮＯＲ型フラッシュメモリおよび相変化メモリおよび磁気抵抗メモリおよび強誘電体メモリおよび抵抗変化型メモリのいずれか又はこれらを複数組み合わせた装置であるものとすることもできる。
【００１９】
さらに、本発明の第１または第２のデータ入出力制御装置において、前記半導体記憶装置は、前記データ入出力制御装置が形成された半導体チップと異なる半導体チップに形成された装置であるものとすることもできる。こうすれば、半導体記憶装置がデータ入出力制御装置が形成された半導体チップと異なる半導体チップに形成されていても、より多くのエラーを訂正することができる。
【００２０】
本発明の半導体記憶装置システムは、
不揮発性の半導体記憶装置と、
上述した本発明のいずれかの態様の第１または第２のデータ入出力制御装置、すなわち、基本的には、ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に前記半導体記憶装置に記憶されているデータを入力して該入力したデータに対して前記所定のエラー訂正符号を用いてエラー訂正すると共に復号して前記ホスト装置に出力するデータ入出力制御装置であって、前記所定のエラー訂正符号に符号化するデータの長さである実行用データ長および前記所定のエラー訂正符号の長さである実行用符号長を記憶するエラー訂正情報記憶部と、入力されたデータを前記記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを前記実行用符号長の前記所定のエラー訂正符号に符号化して前記半導体記憶装置に出力する符号化部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して前記所定のエラー訂正符号によりエラー訂正すると共に復号して前記ホスト装置に出力する復号部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだｎ個（ｎは、値１以上の整数）のデータに対して前記所定のエラー訂正符号により前記読み込んだデータのうちエラーが生じているデータ数であるエラーデータ数を検出するエラー検出部と、前記検出されたエラーデータ数が予め定められた上限エラー数を超えているときには１個の前記実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さが前記エラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび前記所定のエラー訂正符号の符号長をそれぞれ前記実行用データ長および前記実行用符号長として前記エラー訂正情報記憶部に記憶させる記憶処理部と、を有するデータ訂正入出力回路と、前記ホスト装置から前記半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の符号化部に入力されて前記データ訂正入出力回路の符号化部から出力されたデータが前記半導体記憶装置に出力されると共に該出力されたデータが前記半導体記憶装置に記憶されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが読み出されて該読み出されたデータが前記データ訂正入出力回路の復号部に入力され該データ訂正入出力回路の復号部から出力されたデータが前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには前記半導体記憶装置に記憶されているデータを読み出して該読み出したデータが前記データ訂正入出力回路のエラー検出部に入力された後に前記半導体記憶装置に記憶されているデータが消去されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御する制御回路と、を備える本発明の第１のデータ入出力制御装置、または、ホスト装置から入力されたデータを所定のエラー訂正符号に符号化して不揮発性の半導体記憶装置に記憶させると共に前記半導体記憶装置に記憶されているデータを入力して該入力したデータに対して前記所定のエラー訂正符号を用いてエラー訂正すると共に復号して前記ホスト装置に出力するデータ入出力制御装置であって、前記半導体記憶装置にデータが書き込まれた回数と前記半導体記憶装置に記憶されているデータが消去された回数との和の回数である書き込み消去回数を計数する書き込み回数計数回路と、前記所定のエラー訂正符号に符号化するデータの長さである実行用データ長および前記所定のエラー訂正符号の長さである実行用符号長を記憶するエラー訂正情報記憶部と、入力されたデータを前記記憶されている実行用データ長ずつ順次読み込んで該読み込んだデータを前記実行用符号長の前記所定のエラー訂正符号に符号化して前記半導体記憶装置に出力する符号化部と、入力されたデータを前記記憶されている実行用符号長ずつ順次読み込んで該読み込んだデータに対して前記所定のエラー訂正符号によりエラー訂正すると共に復号して前記ホスト装置に出力する復号部と、ｎ個（ｎは、値１以上の整数）の実行用符号長のデータに予め定められた上限エラー数より多いエラーが生じると推定される書き込み消去回数である判定用閾値を前記計数された書き込み消去回数が超えているときには１個の前記実行用符号長の所定のエラー訂正符号で訂正および検出可能なエラー数の上限より多いエラーを訂正および検出可能でデータの長さが前記エラー訂正情報記憶部に記憶されている実行用データ長より長くなるデータの長さおよび前記所定のエラー訂正符号の符号長をそれぞれ前記実行用データ長および前記実行用符号長として前記エラー訂正情報記憶部に記憶させる記憶処理部と、を有するデータ訂正入出力回路と、前記ホスト装置から前記半導体記憶装置へのデータの書き込みを要求する書き込み要求信号が入力されたときには前記ホスト装置から入力されたデータが前記データ訂正入出力回路の符号化部に入力されて前記データ訂正入出力回路の符号化部から出力されたデータが前記半導体記憶装置に出力されると共に該出力されたデータが前記半導体記憶装置に記憶されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの読み出し要求する読み出し要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが読み出されて該読み出されたデータが前記データ訂正入出力回路の復号部に入力され該データ訂正入出力回路の復号部から出力されたデータが前記ホスト装置に出力されるよう前記データ訂正入出力回路と前記半導体記憶装置とを制御し、前記ホスト装置から前記半導体記憶装置に記憶されているデータの消去を要求する消去要求信号が入力されたときには前記半導体記憶装置に記憶されているデータが消去されるよう前記半導体記憶装置を制御する制御回路と、を備える本発明の第２のデータ入出力制御装置と、を備えることを要旨とする。
【００２１】
この本発明の半導体記憶装置システムでは、上述したいずれかの態様の本発明のデータ入出力制御装置を備えているから、本発明のデータ入出力制御装置が奏する効果、例えば、より多くのエラーを訂正することができる効果などと同様の効果を奏する。
【００２２】
こうした本発明の半導体記憶装置システムにおいて、前記半導体記憶装置は、前記半導体記憶装置にデータが書き込まれた回数と前記半導体記憶装置に記憶されているデータが消去された回数との和の回数である書き込み消去回数が多くなるほど記憶しているデータにエラーが生じる確率が高くなる傾向の装置であるものとすることもできる。この場合において、前記半導体記憶装置は、ＮＡＮＤ型フラッシュメモリおよびＮＯＲ型フラッシュメモリおよび相変化メモリおよび磁気抵抗メモリおよび強誘電体メモリおよび抵抗変化型メモリのいずれか又はこれらを複数組み合わせた装置であるものとすることもできる。
【００２３】
また、本発明の半導体記憶装置システムにおいて、前記半導体記憶装置と前記データ入出力制御装置とは異なる半導体チップに形成されてなるものとすることもできる。こうすれば、半導体記憶装置とデータ入出力制御装置とが異なる半導体チップに形成されてなるものにおいて、より多くのエラーを訂正することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施例としてのデータ入出力制御装置が搭載されたフラッシュメモリシステム１０の構成の概略を示す構成図である。
【図２】データ反転回路２８から入力されたデータに対してデータ反転回路２８から出力されたデータの一例を示す説明図である。
【図３】エラー訂正回路３０の構成の概略を示す構成図である。
【図４】実行用データ長Ｓｄａｔａが５１２バイト、実行用符号長Ｓｃｏｄｅが（５１Ｋバイト＋１０４ビット）であるときに符号化部３４から出力されるデータの構造を示す説明図である。
【図５】記憶処理部３８の動作の一例を示すフローチャートである。
【図６】フラッシュメモリ１２に記憶されているデータにビットエラーが生じている様子の一例を示す説明図である。
【図７】本発明の第２実施例としてのデータ入出力制御装置が搭載されたフラッシュメモリシステム１１０の構成の概略を示す構成図である。
【図８】データ反転回路１２８から入力されたデータに対してデータ反転回路１２８から出力されたデータの一例を示す説明図である。
【図９】エラー訂正回路１３０の構成の概略を示す構成図である。
【図１０】実行用データ長Ｓｄａｔａが５１２バイト、実行用符号長Ｓｃｏｄｅが（５１Ｋバイト＋１０４ビット）であるときに符号化部１３４から出力されるデータの構造を示す説明図である。
【図１１】記憶処理部１３８の動作の一例を示すフローチャートである。
【図１２】エラー数Ｎｅｒｒｏｒと書き込み消去回数Ｎｗｒとの関係を示す説明図である。
【図１３】フラッシュメモリ１１２に記憶されているデータにビットエラーが生じている様子の一例を示す説明図である。
【発明を実施するための形態】
【００２５】
次に、本発明を実施するための形態を実施例を用いて説明する。
【実施例１】
【００２６】
図１は、本発明の第１実施例としてのデータ入出力制御装置が搭載されたフラッシュメモリシステム１０の構成の概略を示す構成図である。フラッシュメモリシステム１０は、ＮＡＮＤ型フラッシュメモリが形成されたシリコンチップが複数積層されてなるフラッシュメモリ１２と、フラッシュメモリ１２を制御するメモリコントローラ２０と、から構成され、ホスト装置６０（例えば、パーソナルコンピュータなど）と通信可能に接続されており、ホスト装置６０から入力される各種制御信号に応じてホスト装置６０から入力されたデータをフラッシュメモリ１２に記憶したり、フラッシュメモリ１２に記憶しているデータをホスト装置６０に出力したりする。なお、こうしたフラッシュメモリ１２とメモリコントローラ２０とは、互いに異なる半導体チップ上に形成されているものとする。
【００２７】
フラッシュメモリ１２は、フローティングゲートへの電子注入やフローティングゲートからの電子の引き抜きにより閾値電圧が変化するフラッシュメモリセルを複数有するフラッシュメモリセルアレイ（図示せず）を備えるＮＡＮＤ型フラッシュメモリとして構成されており、フラッシュメモリセルアレイの他にロウデコーダ，カラムデコーダ，センスアンプなど（いずれも図示せず）を備える。フラッシュメモリ１２では、ページ単位（実施例では、（５１２バイト＋１０４ビット））でデータを書き込んだりデータを読み出し、複数ページからなるブロック単位（実施例では、６４ページ）で記憶しているデータを消去する。フラッシュメモリセルに記憶されるデータは、実施例では、フローティングゲートに電子が注入された状態が”０”であるものとし、フローティングゲートから電子が引き抜かれて”０”の状態よりフローティングゲートの電子が少なくなっている状態が”１”であるものとする。
【００２８】
メモリコントローラ２０は、トランジスタ等の複数の論理素子からなる論理回路として構成されており、ホスト装置６０からの各種制御信号を出力したりホスト装置６０にデータを入出力するホストインターフェース回路２２と、フラッシュメモリ１２に各種制御信号を出力したりフラッシュメモリ１２にデータを入出力するメモリインターフェース回路２４と、ホストインターフェース回路２２に入力されたデータを一時的に記憶するバッファ回路２６と、バッファ回路２６からデータを読み出して記憶されているデータに含まれる”１”のデータの数に応じてデータを反転または非反転させて非反転フラグまたは変換フラグを付加して出力するデータ反転回路２８と、データ反転回路２８からのデータをＢＣＨ（Bose-Chaudfuri-Hocquenghem）符号により符号化してメモリインターフェース回路２４に出力したりメモリインターフェース回路２４からのデータを復号してデータ反転回路２８に出力するエラー訂正回路３０と、メモリコントローラ２０の全体の動作を制御する制御回路４０と、を備える。
【００２９】
データ反転回路２８は、バッファ回路２６からデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数より多いときには”１”のデータを”０”に反転させると共に”０”のデータを”１”に反転させるビット反転を実行すると共にビット反転後のデータにビット反転が行われたことを示す”１”の反転フラグを付加してエラー訂正回路３０に出力し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数以下であるときにはビット反転を実行せずにビット反転が実行されなかったことを示す”０”の非反転フラグを付加してエラー訂正回路３０に出力する。図２は、データ反転回路２８から入力されたデータに対してデータ反転回路２８からエラー訂正回路３０に出力されたデータの一例を示す説明図である。また、エラー訂正回路３０からのデータに対しては、５ビットずつ読み出して、読み出したデータが反転フラグを含んでいるときには反転フラグを削除すると共に残りの４ビットのデータに対してビット反転を実行してバッファ回路２６に出力し、読み出したデータが非反転フラグを含んでいるときには非反転フラグを削除した４ビットのデータをバッファ回路２６に出力する。こうした動作により、データ反転回路２８からエラー訂正回路３０に出力されるデータにおける”１”のデータの割合をより多くすることができる。こうした動作を行う理由は、以下の通りである。フラッシュメモリセルは、フローティングゲートに電子が注入されると、電子がフラッシュメモリセルのゲート絶縁膜を通過する際のストレスによりゲート絶縁膜が劣化する。したがって、”０”のデータが多くなるほど、フラッシュメモリセルに記憶しているデータにエラーが生じる確率が高くなると考えられる。また、データ保持時においては、フローティングゲートに注入されている電子が流出してエラーが生じることがあるため、”０”のデータが多いほどデータにエラーが生じる確率が高くなると考えられる。したがって、フラッシュメモリセルでは、”１”のデータを記憶させたほうが”０”のデータを記憶させることによりエラーが生じる確率が低くなると考えられるため、データ反転回路２８から出力されるデータにおける”１”のデータの割合をより多くしたのである。こうしたデータ反転回路２８により、フラッシュメモリ１２に記憶しているデータにエラーが生じる確率をより低くすることができる。
【００３０】
図３は、エラー訂正回路３０の構成の概略を示す構成図である。エラー訂正回路３０は、トランジスタ等の複数の論理素子からなる論理回路として構成されており、データの符号化および復号に用いるＢＣＨ符号のサイズである実行用符号長Ｓｃｏｄｅと実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化するデータのサイズである実行用データ長Ｓｄａｔａとを記憶する訂正情報記憶部３２と、データ反転回路２８から入力されたデータを訂正情報記憶部３２に記憶されている実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化して出力する符号化部３４と、フラッシュメモリ１２から入力されたデータをＢＣＨ符号により復号してデータ反転回路２８に出力すると共にフラッシュメモリ１２から入力されたデータのうちエラーが生じているデータの数を検出する復号エラー数検出部３６と、訂正情報記憶部３２に記憶されている実行用符号長Ｓｃｏｄｅと実行用データ長Ｓｄａｔａとを変更する記憶処理部３８と、から構成されている。
【００３１】
符号化部３４は、データ反転回路２８から入力されたデータを訂正情報記憶部３２に記憶されている実行用データ長Ｓｄａｔａずつ読み込んで、読み込んだ実行用データ長ＳｄａｔａのデータをＢＣＨ符号の生成多項式を用いた演算処理により実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化するために付加すべきパリティビットを生成し、読み込んだ実行用データ長Ｓｄａｔａのデータに生成したパリティビットを付加したデータをメモリインターフェース回路２４に出力する。図４は、実行用データ長Ｓｄａｔａが５１２バイト、実行用符号長Ｓｃｏｄｅが（５１２バイト＋１０４ビット）であるときに符号化部３４から出力されるデータの構造を示す説明図である。なお、ＢＣＨ符号の生成多項式を用いてデータの符号化する際の演算処理については、周知であるため、詳細な説明を省略する。
【００３２】
復号エラー数検出部３６は、フラッシュメモリ１２からメモリインターフェース回路２４を介して入力されたデータを訂正情報記憶部３２に記憶されている実行用符号長Ｓｃｏｄｅずつ読み込み、読み込んだ実行用符号長Ｓｃｏｄｅのデータに対してＢＣＨ符号の生成多項式を用いたシンドローム計算処理により、読み込んだデータが符号化したときのデータと異なっているエラー（以下、「ビットエラー」という）が生じているビット位置を検出してエラー訂正を実行し、エラー訂正を実行したデータからパリティビットを削除してデータを復号してデータ反転回路２８に出力する。こうした動作により、フラッシュメモリ１２から入力されたデータに対してエラー訂正を行って復号して出力することができる。また、復号エラー数検出部３６は、読み込んだ実行用符号長Ｓｃｏｄｅのデータに対してＢＣＨ符号の生成多項式を用いてビットエラーが生じているビット位置を検出する際に、ｎ個（ｎは、１以上の整数）の実行用符号長Ｓｃｏｄｅのデータのうちビットエラーが生じているデータのビット数をエラーデータ数Ｎｅｒｒｏｒとして検出する。ここで、エラーデータ数Ｎｅｒｒｏｒを検出する際の実行用符号長Ｓｃｏｄｅの数である値ｎは、実験や解析などにより適宜設定されるものとした。なお、ＢＣＨ符号の生成多項式を用いたシンドローム計算処理によりエラー訂正する際の演算処理については、周知であるため、詳細な説明を省略する。
【００３３】
図５は、記憶処理部３８の動作の一例を示すフローチャートである。記憶処理部３８は、復号エラー数検出部３６により検出されたエラーデータ数Ｎｅｒｒｏｒと訂正情報記憶部３２に記憶されているｎ個の実行用符号長ＳｃｏｄｅのＢＣＨ符号で検出可能なデータのエラー数の上限である上限エラー数Ｎｍａｘとを比較する（ステップＳ１００）。ここで、上限エラー数Ｎｍａｘは、データ長が実行用データＳｄａｔａであり符号長が実行用符号長Ｓｃｏｄｅであるｎ個のＢＣＨ符号で検出可能なエラー数の上限であるものとし、例えば、５１２バイトのデータに１０４ビットのパリティビットを付加した符号長が（５１２バイト＋１０４ビット）のｎ個のＢＣＨ符号では１個のＢＣＨ符号で検出可能なエラー数の上限が８ビットであるため上限エラー数Ｎｍａｘがｎ×８ビット、１Ｋバイトのデータに２１０ビットのパリティビットを付加した符号長が（１Ｋバイト＋２１０ビット）のｎ個のＢＣＨ符号では１個のＢＣＨ符号で検出可能なエラー数の上限が１５ビットであるため上限エラー数Ｎｍａｘがｎ×１５ビットであるものとした。
【００３４】
エラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには（ステップＳ１００）、訂正情報記憶部３２に記憶されている実行用データ長Ｓｄａｔａの２倍のデータ長を実行用データ長Ｓｄａｔａとして記憶させ、実行用データ長Ｓｄａｔａより長く上限エラー数Ｎｍａｘより多くのエラーを検出可能な符号長Ｓｃｒｅｆを実行用符号長Ｓｃｏｄｅとして訂正情報記憶部３２に記憶させ（ステップＳ１１０）、エラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘ以下であるときには（ステップＳ１００）、訂正情報記憶部３２に記憶されている実行用符号長Ｓｃｏｄｅと実行用データ長Ｓｄａｔａを変更せずに、処理を終了する。これにより、エラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには、訂正情報記憶部３２により長い実行用データ長Ｓｄａｔａおよび実行用符号長Ｓｃｏｄｅが記憶されることになる。例えば、ステップＳ１１０の処理が実行される前に訂正情報記憶部３２に実行用データ長Ｓｄａｔａとして５１２バイト，実行用符号長Ｓｃｏｄｅとして（５１２バイト＋１０４ビット）が記憶されている場合には、ステップＳ１１０の処理を実行した後に、訂正情報記憶部３２には実行用データ長Ｓｄａｔａとして１Ｋバイト，実行用符号長Ｓｃｏｄｅとして（１Ｋバイト＋２１０ビット）が記憶されることになる。
【００３５】
制御回路４０には、ホストインターフェース回路２２を介してホスト装置から各種制御信号が入力されると共にフラッシュメモリ１２からメモリインターフェース回路２４を介してフラッシュメモリ１２の状態を示す各種信号が入力され、制御回路４０からはバッファ回路２６やデータ反転回路２８、エラー訂正回路３０，フラッシュメモリ１２を制御するための制御信号が出力されている。
【００３６】
こうして構成された実施例のフラッシュメモリシステム１０では、ホスト装置６０からフラッシュメモリ１２へのデータの書き込みを要求する書き込み要求信号とフラッシュメモリ１２にデータを書き込むアドレスを示すアドレス信号とがホストインターフェース回路２２を介して制御回路４０に入力されると、制御回路４０は、ホスト装置６０からのデータがホストインターフェース回路２２，バッファ回路２６，データ反転回路２８，エラー訂正回路３０を介してメモリインターフェース回路２４からフラッシュメモリ１２に出力されるようホストインターフェース回路２２やバッファ回路２６，データ反転回路２８，エラー訂正回路３０，メモリインターフェース回路２４を制御する。バッファ回路２６からデータが入力されたデータ反転回路２８は、バッファ回路２６からのデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”１”のデータの数が”０”のデータの数に基づいて反転フラグまたは非反転フラグを付加し、５ビットのデータをエラー訂正回路３０の符号化部３４に入力する。データが入力されたエラー訂正回路３０の符号化部３４は、入力されたデータを実行用データ長Ｓｄａｔａずつ順次読み込んで実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化してメモリインターフェース回路２４に出力する。制御回路４０は、このようにエラー訂正回路３０を介してメモリインターフェース回路２４から実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化されたデータがページ単位でフラッシュメモリ１２に記憶されるようフラッシュメモリ１２を制御する。これにより、書き込み要求信号が入力されたときには、実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化されたデータをフラッシュメモリ１２に記憶させることができる。
【００３７】
また、ホスト装置６０からフラッシュメモリ１２に記憶されているデータの読み出しを要求する読み出し要求信号とフラッシュメモリ１２の読み出し先のアドレスを示すアドレス信号とがホストインターフェース回路２２を介して制御回路４０に入力されると、制御回路４０は、フラッシュメモリ１２からページ単位でデータが読み出されるようフラッシュメモリ１２を制御する。そして、制御回路４０は、フラッシュメモリ１２から読み出したデータがメモリインターフェース回路２４，エラー訂正回路３０，データ反転回路２８，バッファ回路２６を介してホストインターフェース回路２２からホスト装置６０に出力されるようホストインターフェース回路２２，バッファ回路２６，データ反転回路２８，エラー訂正回路３０，メモリインターフェース回路２４を制御する。データが入力されたエラー訂正回路３０の復号エラー数検出部３６は、入力されたデータを実行用符号長Ｓｃｏｄｅずつ読み込んでＢＣＨ符号を用いて読み込んだデータのうちビットエラーが生じているデータがあればエラー訂正を実行した後に復号した実行用データ長Ｓｄａｔａのデータをデータ反転回路２８に入力し、読み込んだデータにビットエラーが生じていなければ読み込んだデータを復号した実行用データ長Ｓｄａｔａのデータをデータ反転回路２８に入力する。データが入力されたデータ反転回路２８は、データを５ビットずつ読み込んで、読み込んだデータが反転ビットを含んでいるときにはビット反転を実行して反転ビットを削除した４ビットのデータをバッファ回路２６に出力し、読み込んだデータが非反転ビットを含んでいるときには非反転ビットを削除した４ビットのデータをバッファ回路２６に出力する。これにより、読み出し要求信号が入力されたとき、フラッシュメモリ１２に記憶されていたデータにビットエラーが生じているときには、エラーを訂正した上でホスト装置６０に出力することができ、フラッシュメモリ１２から読み出したデータにビットエラーが発生する確率を低くすることができ、フラッシュメモリシステム１０の信頼性の向上を図ることができる。
【００３８】
ホスト装置６０からフラッシュメモリ１２に記憶されているデータの消去を要求する消去要求信号と消去すべきブロックの情報を示すブロック情報信号とがホストインターフェース回路２２を介して制御回路４０に入力されたときには、制御回路４０は、まずは、消去すべきブロックに対応するフラッシュメモリ１２の領域からデータが読み出されるようフラッシュメモリ１２を制御する。そして、フラッシュメモリ１２から読み出したデータがメモリインターフェース回路２４を介してエラー訂正回路３０の復号エラー数検出部３６に入力されるようエラー訂正回路３０，メモリインターフェース回路２４を制御し、その後、フラッシュメモリ１２の消去すべきブロックに記憶されているデータが消去されるようフラッシュメモリ１２を制御する。データが入力されたエラー訂正回路３０の復号エラー数検出部３６は、入力されたデータを実行用符号長Ｓｃｏｄｅずつ読み込んで読み込んだｎ個の実行用符号長Ｓｃｏｄｅのデータに対してＢＣＨ符号の生成多項式を用いて実行用符号長Ｓｃｏｄｅのデータのうちエラーが生じているデータのビット数であるエラーデータ数Ｎｅｒｒｏｒを検出して記憶処理部３８に出力する。記憶処理部３８では、エラーデータ数Ｎｅｒｒｏｒと上限エラー数Ｎｍａｘとを比較し、エラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには、訂正情報記憶部３２に記憶されている実行用データ長Ｓｄａｔａの２倍のデータ長を実行用データ長Ｓｄａｔａとして記憶させ、実行用データ長Ｓｄａｔａで検出可能なエラー数の上限近傍の値より多くのエラーを検出可能な符号長を実行用符号長Ｓｃｏｄｅとして訂正情報記憶部３２に記憶させる。次に、こうした処理を行う理由について説明する。
【００３９】
図６は、フラッシュメモリ１２に記憶されているデータにビットエラーが生じている様子の一例を示す説明図である。ここでは、説明のため、１個の実行用符号長Ｓｃｏｄｅのデータに対してエラーデータ数Ｎｅｒｒｏｒを検出するものとする。図中、「×」印がビットエラーが生じているデータの位置を示している。ここでは、説明のため、最初にエラー訂正回路３０の訂正情報記憶部３２に実行用データ長Ｓｄａｔａとして５１２バイト，実行用符号長Ｓｃｏｄｅとして（５１２バイト＋１０４ビット）が記憶されており、最初にフラッシュメモリ１２から読み出した実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータに９ビットのビットエラーが生じて、次にフラッシュメモリ１２から読み出した実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータに２ビットのビットエラーが生じているものとする。消去要求信号が入力されると、エラー訂正回路３０の復号エラー数検出部３６に実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータが入力される。このＢＣＨ符号では、８ビットのビットエラーまで訂正可能（上限エラー数Ｎｍａｘが値８）であるが、最初に読み出したデータには９ビットのビットエラーが生じているため、符号長が（５１２バイト＋１０４ビット）のＢＣＨ符号では、エラー訂正回路３０でエラー訂正することができない。実施例のエラー訂正回路３０では、検出されたエラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには、訂正情報記憶部３２に実行用データ長Ｓｄａｔａとして１Ｋバイト，実行用符号長Ｓｃｏｄｅとして（１Ｋバイト＋２１０ビット）を記憶させるから、次に書き込み要求信号が入力されたときには、データのサイズが１Ｋバイト、パリティビットが２１０ビットの（１Ｋバイト＋２１０ビット）の符号長のＢＣＨ符号がフラッシュメモリ１２に記憶され、フラッシュメモリ１２からデータを読み出す際には符号長が（１Ｋバイト＋２１０ビット）のＢＣＨ符号としてデータが読み出される。このとき、図示するように、読み出したデータには１１ビットのビットエラーが生じているが、符号長が（１Ｋバイト＋２１０ビット）のＢＣＨ符号では１５ビットまでのビットエラーを訂正することができるため、こうしたエラーを訂正することができるようになる。このように、検出されたエラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには、訂正情報記憶部３２に記憶されている実行用データ長Ｓｄａｔａと実行用符号長Ｓｃｏｄｅとをより長くすることにより、より多くのエラーを訂正することができる。
【００４０】
以上説明した第１実施例のフラッシュメモリシステム１０によれば、ホスト装置６０から消去要求信号が入力されたときには、フラッシュメモリ１２に記憶されているデータを読み出して読み出したデータがエラー訂正回路３０の復号エラー数検出部３６に入力された後にフラッシュメモリ１２に記憶されているデータが消去されるようメモリインターフェース回路２４とエラー訂正回路３０とフラッシュメモリ１２とを制御する。データを入力されたエラー訂正回路３０の復号エラー数検出部３６は、エラーデータ数Ｎｅｒｒｏｒを検出し、エラー訂正回路３０の記憶処理部３８は、検出されたエラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには上限エラー数Ｎｍａｘより多いエラーを検出可能でデータの長さが訂正情報記憶部３２に記憶されている実行用データ長Ｓｄａｔａより長くなるデータの長さおよびＢＣＨ符号の符号長をそれぞれ実行用データ長Ｓｄａｔａおよび実行用符号長Ｓｃｏｄｅとして訂正情報記憶部３２に記憶させるから、次に書き込み要求信号が入力されたときには、エラー訂正回路３０の符号化部３４は、入力されたデータをより長い実行用データ長Ｓｄａｔａずつ順次読み込んで該読み込んだデータをより長い実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化して出力し、次に読み出し要求信号が入力されたときには、エラー訂正回路３０の復号エラー数検出部３６は、より長い実行用符号長ＳｃｏｄのＢＣＨ符号でデータをエラー訂正することができる。これにより、より多くのエラーを訂正することができる。また、データ反転回路２８は、バッファ回路２６からデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数より多いときには”１”のデータを”０”に反転させると共に”０”のデータを”１”に反転させるビット反転を実行すると共に”１”の反転フラグを付加してエラー訂正回路３０に出力し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数以下であるときにはビット反転を実行せずにビット反転が実行されなかったことを示す”０”の非反転フラグを付加してエラー訂正回路３０に出力する。これにより、フラッシュメモリ１２に記憶しているデータにエラーが生じる確率をより低くすることができる。
【００４１】
第１実施例のフラッシュメモリシステム１０では、メモリコントローラ２０は、フラッシュメモリセルを複数有するフラッシュメモリセルアレイを備えるＮＡＮＤ型フラッシュメモリを制御するものとしたが、メモリコントローラ２０で制御するメモリとしては、ＮＡＮＤ型フラッシュメモリに限定されるものではなく、ＮＯＲ型のフラッシュメモリを制御するものとしてもよい。また、メモリコントローラ２０で制御するメモリとしては、こうしたフラッシュメモリに限定されるものではなく、不揮発性メモリであれば如何なるものでもよく、例えば、材料の結晶構造を変化させることでデータを記憶する相変化メモリや電子のスピンをメモリ素子として利用してデータを記憶する磁気抵抗メモリ、強誘電体のヒステリシス（履歴現象）を利用して正負の自発分極を１と０に対応させてデータを記憶する強誘電体メモリ、電圧の印加による電気抵抗の変化を利用してデータを記憶する抵抗変化型メモリなどの書き込み消去回数により記憶しているデータにエラーが生じる確率が高くなる傾向の不揮発性メモリであるものとしてもよい。
【実施例２】
【００４２】
図７は、本発明の第２実施例としてのデータ入出力制御装置が搭載されたフラッシュメモリシステム１１０の構成の概略を示す構成図である。フラッシュメモリシステム１１０は、ＮＡＮＤ型フラッシュメモリが形成されたシリコンチップが複数積層されてなるフラッシュメモリ１１２と、フラッシュメモリ１１２を制御するメモリコントローラ１２０と、から構成され、ホスト装置１６０（例えば、ＣＰＵ(Centoral Processing Unit）など）から入力される各種制御信号に応じてホスト装置１６０から入力されたデータをフラッシュメモリ１１２に記憶したり、フラッシュメモリ１１２に記憶しているデータをホスト装置１６０に出力したりする。なお、こうしたフラッシュメモリ１１２とメモリコントローラ１２０とは、個別の半導体チップ上に形成されているものとする。
【００４３】
フラッシュメモリ１１２は、フローティングゲートへの電子注入やフローティングゲートからの電子引き抜きにより閾値電圧が変化するフラッシュメモリセルを複数有するフラッシュメモリセルアレイ（図示せず）を備えるＮＡＮＤ型フラッシュメモリとして構成されており、フラッシュメモリセルアレイの他にロウデコーダ，カラムデコーダ，センスアンプなど（いずれも図示せず）を備える。フラッシュメモリ１１２では、ページ単位（実施例では、（５１２バイト＋１０４ビット））でデータを書き込んだりデータを読み出し、複数ページからなるブロック単位（実施例では、６４ページ）で記憶しているデータを消去する。フラッシュメモリセルに記憶されるデータは、実施例では、フローティングゲートに電子が注入された状態が”０”であるものとし、フローティングゲートから電子が引き抜かれた状態が”１”であるものとする。
【００４４】
メモリコントローラ１２０は、トランジスタ等の複数の論理素子からなる論理回路として構成されており、ホスト装置１６０からの各種制御信号を出力したりホスト装置１６０にデータを入出力するホストインターフェース回路１２２と、フラッシュメモリ１１２に各種制御信号を出力したりフラッシュメモリ１１２にデータを入出力するメモリインターフェース回路１２４と、ホストインターフェース回路１２２に入力されたデータを一時的に記憶するバッファ回路１２６と、バッファ回路１２６からデータを読み出して記憶されているデータに含まれる”１”のデータの数に応じてデータを反転または非反転させて非反転フラグまたは変換フラグを付加して出力するデータ反転回路１２８と、フラッシュメモリ１１２にデータを書き込んだ回数を計数する書き込み消去回数計数回路１２９と、データ反転回路１２８からのデータをＢＣＨ（Bose-Chaudfuri-Hocquenghem）符号により符号化してメモリインターフェース回路１２４に出力したりメモリインターフェース回路１２４からのデータを復号してデータ反転回路１２８に出力するエラー訂正回路１３０と、メモリコントローラ１２０の全体の動作を制御する制御回路１４０と、を備える。
【００４５】
データ反転回路１２８は、バッファ回路１２６からデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数より多いときには”１”のデータを”０”に反転させると共に”０”のデータを”１”に反転させるビット反転を実行すると共にビット反転後のデータにビット反転が行われたことを示す”１”の反転フラグを付加してエラー訂正回路１３０に出力し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数以下であるときにはビット反転を実行せずにビット反転が実行されなかったことを示す”０”の非反転フラグを付加してエラー訂正回路１３０に出力する。図８は、データ反転回路１２８から入力されたデータに対してデータ反転回路１２８からエラー訂正回路１３０に出力されたデータの一例を示す説明図である。また、エラー訂正回路１３０からのデータに対しては、５ビットずつ読み出して、読み出したデータが反転フラグを含んでいるときには反転フラグを削除すると共に残りの４ビットのデータに対してビット反転を実行してバッファ回路１２６に出力し、読み出したデータが非反転フラグを含んでいるときには非反転フラグを削除した４ビットのデータをバッファ回路１２６に出力する。こうした動作により、データ反転回路１２８からエラー訂正回路１３０に出力されるデータにおける”１”のデータの割合をより多くすることができる。こうした動作を行う理由は、以下の通りである。フラッシュメモリセルは、フローティングゲートに電子が注入されると、電子がフラッシュメモリセルのゲート絶縁膜を通過する際のストレスによりゲート絶縁膜が劣化する。したがって、”０”のデータが多くなるほど、フラッシュメモリセルに記憶しているデータにエラーが生じる確率が高くなると考えられる。また、データ保持時においては、フローティングゲートに注入されている電子が流出してエラーが生じることがあるため、”０”のデータが多いほどデータにエラーが生じる確率が高くなると考えられる。したがって、フラッシュメモリセルでは、”１”のデータを記憶させたほうが”０”のデータを記憶させることによりエラーが生じる確率が低くなると考えられるため、データ反転回路１２８から出力されるデータにおける”１”のデータの割合をより多くしたのである。こうしたデータ反転回路１２８により、フラッシュメモリ１１２に記憶しているデータにエラーが生じる確率をより低くすることができる。
【００４６】
書き込み消去回数計数回路１２９は、フラッシュメモリ１１２にページ毎にデータが書き込まれる回数とデータが消去された回数との和の回数である書き込み消去回数Ｎｗｒを計数してエラー訂正回路１３０に出力する。ここで、フラッシュメモリ１２のデータが書き込まれたページの情報やデータが消去されたブロックの情報は、制御回路４０から入力されるものとした。
【００４７】
図９は、エラー訂正回路１３０の構成の概略を示す構成図である。エラー訂正回路１３０は、トランジスタ等の複数の論理素子からなる論理回路として構成されており、データの符号化および復号に用いるＢＣＨ符号のサイズである実行用符号長Ｓｃｏｄｅと実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化するデータのサイズである実行用データ長Ｓｄａｔａとを記憶する訂正情報記憶部１３２と、データ反転回路１２８から入力されたデータを訂正情報記憶部１３２に記憶されている実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化して出力する符号化部１３４と、フラッシュメモリ１１２から入力されたデータをＢＣＨ符号により復号してデータ反転回路１２８に出力する復号部１３６と、エラー訂正回路１３０から入力された書き込み回数Ｎｗｒに基づいて訂正情報記憶部１３２に記憶されている実行用符号長Ｓｃｏｄｅと実行用データ長Ｓｄａｔａとを変更する記憶処理部１３８と、から構成されている。
【００４８】
符号化部１３４は、データ反転回路１２８から入力されたデータを訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａずつ読み込んで、読み込んだ実行用データ長ＳｄａｔａのデータをＢＣＨ符号の生成多項式を用いた演算処理により実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化するために付加すべきパリティビットを生成し、読み込んだ実行用データ長Ｓｄａｔａのデータに生成したパリティビットを付加したデータをメモリインターフェース回路１２４に出力する。図１０は、実行用データ長Ｓｄａｔａが５１２バイト、実行用符号長Ｓｃｏｄｅが（５１２バイト＋１０４ビット）であるときに符号化部１３４から出力されるデータの構造を示す説明図である。なお、ＢＣＨ符号の生成多項式を用いてデータの符号化する際の演算処理については、周知であるため、詳細な説明を省略する。
【００４９】
復号部１３６は、フラッシュメモリ１１２からメモリインターフェース回路１２４を介して入力されたデータを訂正情報記憶部１３２に記憶されている実行用符号長Ｓｃｏｄｅずつ読み込み、読み込んだ実行用符号長Ｓｃｏｄｅのデータに対してＢＣＨ符号の生成多項式によるシンドローム計算処理により、読み込んだデータが符号化したときのデータと異なっているエラー（以下、「ビットエラー」という）が生じているビット位置を検出してエラー訂正を実行し、エラー訂正を実行したデータからパリティビットを削除してデータを復号してデータ反転回路１２８に出力する。こうした動作により、フラッシュメモリ１１２から入力されたデータに対してエラー訂正を行って復号して出力することができる。なお、ＢＣＨ符号の生成多項式を用いたシンドローム計算処理によりエラー訂正する際の演算処理については、周知であるため、詳細な説明を省略する。
【００５０】
図１１は、記憶処理部１３８の動作の一例を示すフローチャートである。記憶処理部１３８は、書き込み消去回数計数回路１２９から入力された書き込み消去回数Ｎｗｒと判定用閾値Ｎｒｅｆとを比較する（ステップＳ２００）。判定用閾値Ｎｒｅｆは、フラッシュメモリ１２に記憶されているｎ個（ｎは、１以上の整数）の実行用符号長ＳｃｏｄｅのＢＣＨ符号のデータに生じるビットエラーの数であるエラー数Ｎｅｒｒｏｒと書き込み消去回数Ｎｗｒとの関係を予め実験や解析等などによりマップとして求めておき、訂正情報記憶部１３２に記憶されているｎ個の実行用符号長ＳｃｏｄｅのＢＣＨ符号で検出可能なデータのエラー数の上限である上限エラー数Ｎｍａｘをエラー数Ｎｅｒｒｏｒとし、このエラー数Ｎｅｒｒｏｒに対応する書き込み消去回数Ｎｗｒとして設定されるものとした。図１２は、エラー数Ｎｅｒｒｏｒと書き込み消去回数Ｎｗｒとの関係を示す説明図である。エラー数Ｎｅｒｒｏｒと書き込み消去回数Ｎｗｒとが図示するような関係となるのは、フラッシュメモリ１２では、一般に、フラッシュメモリセルへの書き込み消去回数Ｎｗｒが多いほどフラッシュメモリセルのゲート絶縁膜が劣化するため、フラッシュメモリセルへの書き込み消去回数Ｎｗｒが多いほどエラー数Ｎｅｒｒｏｒが多くなるためである。なお、上限エラー数Ｎｍａｘは、実行用符号長Ｓｃｏｄｅに基づいて定められ、５１２バイトのデータに１０４ビットのパリティビットを付加した符号長が（５１２バイト＋１０４ビット）のｎ個のＢＣＨ符号では１個のＢＣＨ符号で検出可能なエラー数の上限が８ビットであるため上限エラー数Ｎｍａｘがｎ×８ビット、１Ｋバイトのデータに２１０ビットのパリティビットを付加した符号長が（１Ｋバイト＋２１０ビット）のｎ個のＢＣＨ符号では１個のＢＣＨ符号で検出可能なエラー数の上限が１５ビットであるため上限エラー数Ｎｍａｘがｎ×１５ビットであるものとした。
【００５１】
書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えているときには（ステップＳ２００）、訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａの２倍のデータ長を実行用データ長Ｓｄａｔａとして記憶させ、実行用データ長Ｓｄａｔａより長く上限エラー数Ｎｍａｘより多くのエラーを検出可能な符号長Ｓｃｒｅｆを実行用符号長Ｓｃｏｄｅとして訂正情報記憶部１３２に記憶させ（ステップＳ２１０）、書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆ以下であるときには（ステップＳ２００）、訂正情報記憶部１３２に記憶されている実行用符号長Ｓｃｏｄｅと実行用データ長Ｓｄａｔａを変更せずに、処理を終了する。これにより、エラーデータ数Ｎｅｒｒｏｒが上限エラー数Ｎｍａｘを超えているときには、訂正情報記憶部１３２により長い実行用データ長Ｓｄａｔａおよび実行用符号長Ｓｃｏｄｅが記憶されることになる。例えば、ステップＳ２１０の処理が実行される前に訂正情報記憶部１３２に実行用データ長Ｓｄａｔａとして５１２バイト，実行用符号長Ｓｃｏｄｅとして（５１２バイト＋１０４ビット）が記憶されている場合には、ステップＳ２１０の処理を実行した後に、訂正情報記憶部１３２には実行用データ長Ｓｄａｔａとして１Ｋバイト，実行用符号長Ｓｃｏｄｅとして（１Ｋバイト＋２１０ビット）が記憶されることになる。
【００５２】
制御回路１４０には、ホストインターフェース回路１２２を介してホスト装置から各種制御信号が入力されると共にフラッシュメモリ１１２からメモリインターフェース回路１２４を介してフラッシュメモリ１１２の状態を示す各種信号が入力され、制御回路１４０からはフラッシュメモリ１２のデータが書き込まれたページの情報やデータが消去されたブロックの情報やバッファ回路１２６やデータ反転回路１２８、エラー訂正回路１３０，フラッシュメモリ１１２を制御するための制御信号が出力されている。
【００５３】
こうして構成された実施例のフラッシュメモリシステム１１０では、ホスト装置１６０からフラッシュメモリ１１２へのデータの書き込みを要求する書き込み要求信号とフラッシュメモリ１１２にデータを書き込むアドレスを示すアドレス信号とがホストインターフェース回路１２２を介して制御回路１４０に入力されると、制御回路１４０は、ホスト装置１６０からのデータがホストインターフェース回路１２２，バッファ回路１２６，データ反転回路１２８，エラー訂正回路１３０を介してメモリインターフェース回路１２４からフラッシュメモリ１１２に出力されるようホストインターフェース回路１２２やバッファ回路１２６，データ反転回路１２８，エラー訂正回路１３０，メモリインターフェース回路１２４を制御する。バッファ回路１２６からデータが入力されたデータ反転回路１２８は、バッファ回路１２６からのデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”１”のデータの数が”０”のデータの数に基づいて反転フラグまたは非反転フラグを付加し、５ビットのデータをエラー訂正回路１３０の符号化部１３４に入力する。データが入力されたエラー訂正回路１３０の符号化部１３４は、入力されたデータを実行用データ長Ｓｄａｔａずつ順次読み込んで実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化してメモリインターフェース回路１２４に出力する。制御回路１４０は、このようにエラー訂正回路１３０を介してメモリインターフェース回路１２４から実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化されたデータがページ単位でフラッシュメモリ１１２に記憶されるようフラッシュメモリ１１２を制御する。これにより、書き込み要求信号が入力されたときには、実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化されたデータをフラッシュメモリ１１２に記憶させることができる。
【００５４】
また、ホスト装置１６０からフラッシュメモリ１１２に記憶されているデータの読み出しを要求する読み出し要求信号とフラッシュメモリ１１２の読み出し先のアドレスを示すアドレス信号とがホストインターフェース回路１２２を介して制御回路１４０に入力されると、制御回路１４０は、フラッシュメモリ１１２からページ単位でデータが読み出されるようフラッシュメモリ１１２を制御する。そして、制御回路１４０は、フラッシュメモリ１１２から読み出したデータがメモリインターフェース回路１２４，エラー訂正回路１３０，データ反転回路１２８，バッファ回路１２６を介してホストインターフェース回路１２２からホスト装置１６０に出力されるようホストインターフェース回路１２２，バッファ回路１２６，データ反転回路１２８，エラー訂正回路１３０，メモリインターフェース回路１２４を制御する。データが入力されたエラー訂正回路１３０の復号部１３６は、入力されたデータを実行用符号長Ｓｃｏｄｅずつ読み込んでＢＣＨ符号を用いて読み込んだデータのうちビットエラーが生じているデータがあればエラー訂正を実行した後に復号した実行用データ長Ｓｄａｔａのデータをデータ反転回路１２８に入力し、読み込んだデータにビットエラーが生じていなければ読み込んだデータを復号した実行用データ長Ｓｄａｔａのデータをデータ反転回路１２８に入力する。データが入力されたデータ反転回路１２８は、データを５ビットずつ読み込んで、読み込んだデータが反転ビットを含んでいるときにはビット反転を実行して反転ビットを削除した４ビットのデータをバッファ回路１２６に出力し、読み込んだデータが非反転ビットを含んでいるときには非反転ビットを削除した４ビットのデータをバッファ回路１２６に出力する。これにより、読み出し要求信号が入力されたとき、フラッシュメモリ１１２に記憶されていたデータにビットエラーが生じているときには、エラーを訂正した上でホスト装置１６０に出力することができ、フラッシュメモリ１１２から読み出したデータにビットエラーが発生する確率を低くすることができ、フラッシュメモリシステム１１０の信頼性の向上を図ることができる。
【００５５】
さらに、ホスト装置１６０からフラッシュメモリ１１２に記憶されているデータの消去を要求する消去要求信号と消去すべきブロックの情報を示すブロック情報信号とがホストインターフェース回路１２２を介して制御回路１４０に入力されたときには、制御回路１４０は、消去すべきブロックに対応するフラッシュメモリ１１２の領域からデータが読み出されるようフラッシュメモリ１１２を制御する。
【００５６】
こうして構成されたフラッシュメモリシステム１１０において、書き込み消去回数計数回路１２９で計数された書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えると、エラー訂正回路１３０の記憶処理部１３８は、訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａの２倍のデータ長を実行用データ長Ｓｄａｔａとして記憶させ、先に記憶されている実行用データ長Ｓｄａｔａより長く先に記憶されている実行用符号長ＳｃｏｄｅのＢＣＨ符号で検出可能なエラー数の上限近傍の値より多くのエラーを検出可能な符号長を実行用符号長Ｓｃｏｄｅとして訂正情報記憶部１３２に記憶させる。図１３は、フラッシュメモリ１１２に記憶されているデータにビットエラーが生じている様子の一例を示す説明図である。ここでは、説明のため、１個の実行用符号長Ｓｃｏｄｅのデータに対してエラーデータ数Ｎｅｒｒｏｒを検出するものとする。図中、「×」印がビットエラーが生じているデータの位置を示している。ここでは、説明のため、最初にエラー訂正回路１３０の訂正情報記憶部１３２に実行用データ長Ｓｄａｔａとして５１２バイト，実行用符号長Ｓｃｏｄｅとして（５１２バイト＋１０４ビット）が記憶されており、最初にフラッシュメモリ１１２から読み出した実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータに９ビットのビットエラーが生じて、次にフラッシュメモリ１１２から読み出した実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータに２ビットのビットエラーが生じているものとする。読み出し要求信号が入力されたときには、最初に、エラー訂正回路１３０の復号部１３６に実行用符号長Ｓｃｏｄｅ（５１２バイト＋１０４ビット）のデータが入力される。このＢＣＨ符号では、８ビットのビットエラーまで訂正可能（上限エラー数Ｎｍａｘが値８）であるが、最初に読み出したデータには９ビットのビットエラーが生じているため、符号長が（５１２バイト＋１０４ビット）のＢＣＨ符号では、エラー訂正回路１３０でエラー訂正することができない。実施例のエラー訂正回路１３０では、書き込み消去回数計数回路１２９で計数された書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えると、訂正情報記憶部１３２に実行用データ長Ｓｄａｔａとして１Ｋバイト，実行用符号長Ｓｃｏｄｅとして（１Ｋバイト＋２１０ビット）を記憶させるから、次に書き込み要求信号が入力されたときには、データのサイズが１Ｋバイト、パリティビットが２１０ビットの（１Ｋバイト＋２１０ビット）の符号長のＢＣＨ符号がフラッシュメモリ１１２に記憶され、フラッシュメモリ１１２からデータを読み出す際には符号長が（１Ｋバイト＋２１０ビット）のＢＣＨ符号としてデータが読み出される。このとき、図示するように、読み出したデータには１１ビットのビットエラーが生じているが、符号長が（１Ｋバイト＋２１０ビット）のＢＣＨ符号では１５ビットまでのビットエラーを訂正することができるため、こうしたエラーを訂正することができるようになる。このように、書き込み消去回数計数回路１２９で計数された書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えたときには、訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａ���実行用符号長Ｓｃｏｄｅとをより長くすることにより、より多くのエラーを訂正することができる。
【００５７】
以上説明した第２実施例のフラッシュメモリシステム１１０によれば、書き込み消去回数計数回路１２９で計数された書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えたときには、エラー訂正回路１３０の記憶処理部１３８は、上限エラー数Ｎｍａｘより多いエラーを検出可能でデータの長さが訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａより長くなるデータの長さおよびＢＣＨ符号の符号長をそれぞれ実行用データ長Ｓｄａｔａおよび実行用符号長Ｓｃｏｄｅとして訂正情報記憶部１３２に記憶させるから、次に書き込み要求信号が入力されたときには、エラー訂正回路１３０の符号化部１３４は、入力されたデータをより長い実行用データ長Ｓｄａｔａずつ順次読み込んで該読み込んだデータをより長い実行用符号長ＳｃｏｄｅのＢＣＨ符号に符号化して出力し、次に読み出し要求信号が入力されたときには、エラー訂正回路１３０の復号部１３６は、より長い実行用符号長ＳｃｏｄのＢＣＨ符号でデータをエラー訂正することができる。これにより、より多くのエラーを訂正することができる。また、データ反転回路１２８は、バッファ回路１２６からデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数より多いときには”１”のデータを”０”に反転させると共に”０”のデータを”１”に反転させるビット反転を実行すると共に”１”の反転フラグを付加してエラー訂正回路１３０に出力し、読み出した４ビットのデータに含まれる”０”のデータの数が”１”のデータの数以下であるときにはビット反転を実行せずにビット反転が実行されなかったことを示す”０”の非反転フラグを付加してエラー訂正回路１３０に出力する。これにより、フラッシュメモリ１１２に記憶しているデータにエラーが生じる確率をより低くすることができる。
【００５８】
第２実施例のフラッシュメモリシステム１１０では、メモリコントローラ２０は、フラッシュメモリセルを複数有するフラッシュメモリセルアレイを備えるＮＡＮＤ型フラッシュメモリを制御するものとしたが、メモリコントローラ２０で制御するメモリとしては、ＮＡＮＤ型フラッシュメモリに限定されるものではなく、ＮＯＲ型のフラッシュメモリを制御するものとしてもよい。また、メモリコントローラ２０で制御するメモリとしては、こうしたフラッシュメモリに限定されるものではなく、書き込み消去回数により記憶しているデータにエラーが生じる確率が高くなる傾向の不揮発性メモリであれば如何なるものでもよく、例えば、材料の結晶構造を変化させることでデータを記憶する相変化メモリや電子のスピンをメモリ素子として利用してデータを記憶する磁気抵抗メモリ、強誘電体のヒステリシス（履歴現象）を利用して正負の自発分極を１と０に対応させてデータを記憶する強誘電体メモリ、電圧の印加による電気抵抗の変化を利用してデータを記憶する抵抗変化型メモリであるものとしてもよい。
【００５９】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、上限エラー数Ｎｍａｘを、データ長が実行用データＳｄａｔａであり符号長が実行用符号長Ｓｃｏｄｅであるｎ個のＢＣＨ符号で検出可能なエラー数の上限であるものとしたが、こうしたエラー数の上限より若干小さい値であるものとしてもよい。例えば、５１２バイトのデータに１０４ビットのパリティビットを付加した符号長が（５１２バイト＋１０４ビット）のｎ個のＢＣＨ符号では、１個のＢＣＨ符号で検出可能なエラー数の上限が８ビットであるため、上限エラー数Ｎｍａｘをｎ×８ビットより数ビットから１０数ビット小さいものとするのが望ましく、１Ｋバイトのデータに２１０ビットのパリティビットを付加した符号長が（１Ｋバイト＋２１０ビット）のｎ個のＢＣＨ符号では、１個のＢＣＨ符号で検出可能なエラー数の上限が１５ビットであるため、上限エラー数Ｎｍａｘをｎ×１５ビットより数ビットから１０数ビット小さいものとするのが望ましい。
【００６０】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、記憶処理部３８，１３８において訂正情報記憶部３２，１３２に記憶されている実行用データ長Ｓｄａｔａより長くなるデータの長さおよびＢＣＨ符号の符号長をそれぞれ実行用データ長Ｓｄａｔａおよび実行用符号長Ｓｃｏｄｅとして訂正情報記憶部３２，１３２に記憶させる際に、実行用符号長Ｓｃｏｄｅの上限である上限実行用符号長Ｓｃｍａｘ未満となるよう実行用データ長Ｓｄａｔａや実行用符号長Ｓｃｏｄｅを定めて訂正情報記憶部３２，１３２に記憶させるものとしてもよい。この場合、上限実行用符号長Ｓｃｍａｘを、エラー訂正回路３０の消費電力がエラー訂正回路３０に許容される許容電力以下となる実行用符号長Ｓｃｏｄｅやホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路の消費電力がこれらを組み合わせた回路に許容される許容電力以下となる実行用符号長Ｓｃｏｄｅ，メモリコントローラ２０の消費電力がメモリコントローラに許容される許容電力以下となる実行用符号長Ｓｃｏｄｅに設定するものしてもよい。このように設定するのは、実行用符号長Ｓｃｏｄｅが長くなるほどエラー訂正回路３０の消費電力が大きくなるため、エラー訂正回路３０の消費電力やホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路の消費電力，メモリコントローラ２０の消費電力が大きくなる傾向であることに基づく。こうすれば、エラー訂正回路３０やホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路，メモリコントローラ２０の消費電力がそれぞれに許容させる許容電力を超えるのを抑制することができる。また、上限実行用符号長Ｓｃｍａｘを、メモリインターフェース回路２４が単位時間あたりにフラッシュメモリ１２からデータを読み出し可能なデータ量である読み出し速度がメモリインターフェース回路２４に許容される許容読み出し速度以下となる実行用符号長Ｓｃｏｄｅに設定するものとしてもよい。このように設定するのは、実行用符号長Ｓｃｏｄｅが長くなるほどメモリインターフェース回路２４における読み出し速度が遅くなる傾向であることに基づく。こうすれば、フラッシュメモリ１２からのデータの読み出し速度が許容読み出し速度以下となるのを抑制することができる。また、上限実行用符号長Ｓｃｍａｘを、エラー訂正回路３０の面積がエラー訂正回路３０に許容される許容面積以下となる実行用符号長Ｓｃｏｄｅやホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路の面積がこれらを組み合わせた回路に許容される許容面積以下となる実行用符号長Ｓｃｏｄｅ，メモリコントローラ２０の面積がメモリコントローラに許容される許容面積以下となる実行用符号長Ｓｃｏｄｅに設定するものしてもよい。このように設定するのは、実行用符号長Ｓｃｏｄｅが長くなるほどエラー訂正回路３０の面積が大きくなるため、エラー訂正回路３０の面積やホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路の面積，メモリコントローラ２０の面積が大きくなる傾向であることに基づく。こうすれば、エラー訂正回路３０やホストインターフェース回路２２とバッファ回路２６とデータ反転回路２８とエラー訂正回路３０とメモリインターフェース回路２４とを組み合わせた回路，メモリコントローラ２０の面積がそれぞれに許容させる許容面積を超えるのを抑制することができる。さらに、上限実行用符号長Ｓｃｍａｘを、上述した回路の消費電力および読み出し速度，回路の面積のうち複数を考慮して設定するものとしてもよい。
【００６１】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、記憶処理部３８，１３８を書き込み消去回数Ｎｗｒが判定用閾値Ｎｒｅｆを超えているときには訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａの２倍のデータ長を実行用データ長Ｓｄａｔａとして訂正情報記憶部１３２記憶させるものとしたが、実行用データ長Ｓｄａｔａより長いデータ長を実行用データ長Ｓｄａｔａとして訂正情報記憶部１３２に記憶させればよいから、例えば、訂正情報記憶部１３２に記憶されている実行用データ長Ｓｄａｔａのｍ倍（ｍは、３以上の整数）のデータ長を実行用データ長Ｓｄａｔａとして訂正情報記憶部１３２記憶させるものとしてもよい。
【００６２】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、データ反転回路２８，１２８は、バッファ回路２６，１２６からデータを４ビットずつ読み出し、読み出した４ビットのデータに含まれる”１”のデータの数が”０”のデータの数に基づいて１ビットの反転フラグまたは非反転フラグを付加するものとしたが、バッファ回路２６，１２６から読み出すデータや反転フラグ，非反転フラグのサイズ（ビット数）は如何なるものとしてもよく、エラー訂正回路１３０からのデータに対しては、付加した反転フラグ，非反転フラグのサイズを考慮して反転フラグ，非反転フラグを削除したデータをバッファ回路２６，１２６に出力すればよい。
【００６３】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、データを符号化する際にＢＣＨ符号を用いるものとしたが、こうしたエラー訂正を行うための符号としては、ＢＣＨ符号に限定されるものではなく、リード・ソロモン符号などのブロック符号やＬＤＰＣ符号などの畳込み符号を用いるものとしてもよい。
【００６４】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、メモリコントローラ２０は、データ反転回路２８，１２８を備えているものとしたが、メモリコントローラ２０をデータ反転回路２８，１２８を備えていないものとしてバッファ回路２６，１２６とエラー訂正回路３０，１３０との間でデータを入出力するものとしてもよい。
【００６５】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、フラッシュメモリセルは、フローティングゲートに電子が注入された状態を”０”のデータとして記憶し、フローティングゲートから電子が引き抜かれて”０”の状態よりフローティングゲートの電子が少なくなっている状態を”１”のデータとして記憶する二値記憶の素子であるものとしたが、例えば、フローティングゲートへの電子の注入量が４段階に制御され”００”，”０１”，”１０”，”１１”の４値を記憶可能なものなど、二値より多い多値記憶の素子とするものとしてもよい。
【００６６】
第１，第２実施例のフラッシュメモリシステム１０，１１０では、フラッシュメモリ１２，１１２とメモリコントローラ２０，１２０とは個別の半導体チップ上に形成されているものとしたが、同一の半導体チップ上に形成されているものとしてもよい。
【００６７】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
【００６８】
なお、本発明は、平成２１年度独立行政法人科学技術振興機構の戦略的創造研究推進事業の研究課題「ディペンダブル  ワイヤレス  ソリッド・ステート・ドライブ」の成果である。
【産業上の利用可能性】
【００６９】
本発明は、データ入出力制御装置および半導体記憶装置システムの製造産業などに利用可能である。
【符号の説明】
【００７０】
１０，１１０  フラッシュメモリシステム、１２，１１２  フラッシュメモリ、２０，１２０  メモリコントローラ、２２，１２２  ホストインターフェース回路、２４，１２４  メモリインターフェース回路、２６，１２６  バッファ回路、２８，１２８  データ反転回路、３０，１３０  エラー訂正回路、３２，１３２  訂正情報記憶部、３４，１３４  符号化部、３６  復号エラー数検出部、３８，１３８，記憶処理部、４０、１４０  制御回路、６０，１６０  ホスト装置、１２９  書き込み消去回数計数回路、１３６  復号部。
【図１】
0005467270.tif 000002
【図２】
0005467270.tif 000003
【図３】
0005467270.tif 000004
【図４】
0005467270.tif 000005
【図５】
0005467270.tif 000006
【図６】
0005467270.tif 000007
【図７】
0005467270.tif 000008
【図８】
0005467270.tif 000009
【図９】
0005467270.tif 000010
【図１０】
0005467270.tif 000011
【図１１】
0005467270.tif 000012
【図１２】
0005467270.tif 000013
【図１３】
0005467270.tif 000014