(57)【要約】【課題】  不揮発性半導体記憶装置の信頼性を、より向上させる技術が望まれている。【解決手段】  閾値レベルの相違によって少なくとも４つのデータ状態が定義され、複数のデータ状態の各々に、複数ビットで構成される値が割り当てられるメモルセルがメモリ部に複数配置される。コントローラが、メモリセルの各々が記憶する複数ビットのうち、少なくとも１つのビットを、「正常」及び「異常」のいずれかの状態を表すエラー訂正ビットとし、他のビットを、データを記憶するためのデータビットとする。複数のデータ状態を、閾値レベルの大きさの順番に並べたとき、連続する４つのデータ状態のうち、閾値レベルが最小及び最大のデータ状態のエラー訂正ビットに「正常」を割り当て、閾値レベルが中間の２つのデータ状態のエラー訂正ビットに「異常」を割り当てる。周期的にメモリセルのエラー訂正ビットのデータを読み出し、読み出された値が「異常」である場合には、当該メモリセルのエラー訂正ビットを「正常」に再設定する。【選択図】  図１
2013041634.tif 000002
【特許請求の範囲】
【請求項１】
閾値レベルの相違によって少なくとも４つのデータ状態が定義され、複数のデータ状態の各々に、複数ビットで構成される値を割り当てて多値記憶を行うメモルセルが複数配置されるメモリ部と、
前記メモリ部の書込読出制御を行うコントローラと
を有し、
前記コントローラは、
前記メモリセルの各々が記憶する複数ビットのうち、少なくとも１つのビットを、「正常」及び「異常」のいずれかの状態を表すエラー訂正ビットとし、他のビットを、データを記憶するためのデータビットとし、
前記複数のデータ状態を、閾値レベルの大きさの順番に並べたとき、連続する４つのデータ状態のうち、閾値レベルが最小及び最大のデータ状態のエラー訂正ビットに「正常」を割り当て、閾値レベルが中間の２つのデータ状態のエラー訂正ビットに「異常」を割り当て、
周期的に前記メモリセルのエラー訂正ビットのデータを読み出し、読み出された値が「正常」であるか「異常」であるかを判定し、「異常」であると判定された場合には、当該メモリセルの当該エラー訂正ビットを「正常」に再設定する不揮発性半導体記憶装置。
【請求項２】
前記メモリ部は、読み出しの単位となるメモリセル群を複数含み、該メモリセル群の各々は、複数のメモリセルを含み、メモリセル群の各々に少なくとも２つのページアドレスが割り当てられており、１つの第１ページアドレスは、前記データビットを指定し、他の１つの第２ページアドレスは、前記エラー訂正ビットを指定するＮＡＮＤ型フラッシュメモリであり、
前記コントローラは、
検査対象のメモリセル群の前記第２ページアドレスのデータを読み出し、
読み出された第２ページアドレスのメモリセルのうち少なくとも１つのメモリセルの値が「異常」であると判定された場合には、前記検査対象のメモリセル群の第１ページアドレスのデータを読み出し、
データを書き込むための新たなメモリセル群を取得し、
新たに取得されたメモリセル群の第１ページアドレスに、前記検査対象のメモリセル群の第１ページアドレスのデータを書き込み、
新たに取得されたメモリセル群の第２ページアドレスの全メモリセルの値を「正常」に設定する請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
さらに、
外部から与えられる論理アドレスと、メモリセル群に割り当てられた前記第１ページアドレスとを対応付けるアドレステーブルを有し、
データ書き込み時に、前記コントローラは、
データを書き込む論理アドレスに対応する第１ページアドレスを、前記アドレステーブルから取得し、
取得された第１ページアドレスにデータを書き込み、
取得された第１ページアドレスで指定されるメモリセル群に割り当てられた第２ページアドレスのメモリセルを「正常」に設定する請求項２に記載の不揮発性半導体記憶装置。
【請求項４】
データ読み出し時に、前記コントローラは、
データを読み出す論理アドレスに対応する第１ページアドレスを、前記アドレステーブルから取得し、
取得された第１ページアドレスからデータを読み出す請求項３に記載の不揮発性半導体記憶装置。
【請求項５】
前記メモリセルの各々はフローティングゲート型トランジスタを含み、フローティングゲートに蓄積される電荷量に応じて、当該メモリセルのデータ状態が決定される請求項１乃至４のいずれか１項に記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１メモリセルで多値記憶を行う不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリには、その特性上、リードディスターブ、プログラムディスターブ、データリテンション等によってビットエラーが発生する。ＮＯＲ型フラッシュメモリでは、ＮＡＮＤ型フラッシュメモリに比べてビットエラーは生じにくいが、皆無ではない。一般的に、ビットエラーの訂正を行うため、エラー訂正コード（ＥＣＣ）が採用される。
【０００３】
不揮発性半導体記憶装置の微細化や多値化が進むと、ビットエラーが発生しやすくなり、信頼性が低下してしまう。信頼性の低下を回避するために、ＥＣＣによるエラー訂正ビット数を増加させなければならない。エラー訂正ビット数が多くなると、ＥＣＣ回路の拡大、ＥＣＣの符号化及び復号化に要する待ち時間の増加等の問題が生じる。
【０００４】
多値記憶を行う不揮発性半導体記憶装置の信頼性低下を回避するために、種々の方式が提案されている。例えば、後天的不良数が閾値を超えたら、１セル当りの記憶ビット数を削減する方法が提案されている。また、１ビットデータを２ビットデータに変換して書き込みを行い、読み出し時には、２ビットデータを１ビットデータに逆変換する方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１２３３３０号公報
【特許文献２】特開２０００−２９８９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
不揮発性半導体記憶装置の信頼性を、より向上させる技術が望まれている。
【課題を解決するための手段】
【０００７】
以下に説明する実施例では、
閾値レベルの相違によって少なくとも４つのデータ状態が定義され、複数のデータ状態の各々に、複数ビットで構成される値を割り当てて多値記憶を行うメモルセルが複数配置されるメモリ部と、
前記メモリ部の書込読出制御を行うコントローラと
を有し、
前記コントローラは、
前記メモリセルの各々が記憶する複数ビットのうち、少なくとも１つのビットを、「正常」及び「異常」のいずれかの状態を表すエラー訂正ビットとし、他のビットを、データを記憶するためのデータビットとし、
前記複数のデータ状態を、閾値レベルの大きさの順番に並べたとき、連続する４つのデータ状態のうち、閾値レベルが最小及び最大のデータ状態のエラー訂正ビットに「正常」を割り当て、閾値レベルが中間の２つのデータ状態のエラー訂正ビットに「異常」を割り当て、
周期的に前記メモリセルのエラー訂正ビットのデータを読み出し、読み出された値が「正常」であるか「異常」であるかを判定し、「異常」であると判定された場合には、当該メモリセルの当該エラー訂正ビットを「正常」に再設定する不揮発性半導体記憶装置が提供される。
【発明の効果】
【０００８】
エラー訂正ビットが「異常」であると判定されると、データビットにおいてビットエラーが発生する前に、エラー訂正ビットが「正常」に再設定される。これにより、データビットにおけるビットエラーの発生を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】図１Ａ〜図１Ｄは、それぞれメモリセルを構成するフローティングゲート型ＦＥＴのデータ状態を示す概略図である。
【図２】図２は、実施例１による閾値が最大の状態のメモリセルの閾値の時間変動を示すグラフである。
【図３】図３は、実施例１による閾値が最小の状態のメモリセルの閾値の時間変動を示すグラフである。
【図４】図４は、実施例２による不揮発性半導体記憶装置のブロック図である。
【図５】図５は、実施例２による不揮発性半導体記憶装置のメモリ部の等価回路図である。
【図６】図６Ａは、実施例２による不揮発性半導体記憶装置のアドレステーブルの内容を示す図表であり、図６Ｂは、論理アドレス、第１ページアドレス、第２ページアドレスの対応関係の一例を示す図表である。
【図７】図７は、実施例２による不揮発性半導体記憶装置の書込み方法を示すシーケンス図である。
【図８】図８は、実施例２による不揮発性半導体記憶装置の読出し方法を示すシーケンス図である。
【図９】図９は、実施例２による不揮発性半導体記憶装置のリフレッシュ動作を示すシーケンス図である。
【図１０】図１０は、実施例３による不揮発性半導体記憶装置のブロック図及び等価回路図である。
【発明を実施するための形態】
【００１０】
［実施例１］
図１Ａ〜図１Ｄを参照して、実施例１による不揮発性半導体記憶装置について説明する。実施例１による不揮発性半導体記憶装置のメモリセルは、フローティングゲート型ＦＥＴを含む。以下、１つのメモリセルが４値のデータを記憶する例について説明する。
【００１１】
図１Ａに示すように、半導体基板２０の上に、ゲート絶縁膜２３、フローティングゲート２４、中間絶縁膜２５、コントロールゲート２６がこの順番に積層されている。この積層構造の両側の基板表層部に、ソース２１及びドレイン２２が形成されている。フローティングゲート型ＦＥＴがオンとなる閾値電圧（以下、「閾値」と称する。）は、フローティングゲート２４に蓄積される電荷量に依存する。図１Ａに示す不揮発性半導体記憶装置では、蓄積電荷量（または閾値レベル）の異なる４つの状態を、それぞれ４値のデータのいずれかの値に対応付けることにより、４値記憶を行うことができる。
【００１２】
図１Ａは、フローティングゲート２３に電荷が蓄積されていない状態（消去状態）を示す。図１Ｂ、図１Ｃ、図１Ｄは、それぞれフローティングゲート２３に蓄積された電荷量が少ない状態、中間の状態、及び多い状態を示す。以下、図１Ａ、図１Ｂ、図１Ｃ、及び図１Ｄの状態を、それぞれデータ状態Ａ、データ状態Ｂ、データ状態Ｃ、及びデータ状態Ｄということとする。
【００１３】
データ状態Ａの閾値レベルが最も低く、データ状態Ｄの閾値レベルが最も高い。例えば、データ状態Ａの閾値は、第１レベル（第１レベルの大きさをＶａとする。）よりも低い。データ状態Ｂの閾値は、第１レベルＶａと、それよりも高い第２レベル（第２レベルの大きさをＶｂとする。）との間である。データ状態Ｃの閾値は、第２レベルＶｂと、それよりも高い第３レベル（第３レベルの大きさをＶｃとする）との間である。データ状態Ｄの閾値は、第３レベルＶｃよりも高い。
【００１４】
実施例１による不揮発性半導体記憶装置では、データ状態Ａ、Ｂ、Ｃ、Ｄに、それぞれ２ビットのデータ「１／１」、「０／１」、「０／０」、「１／０」を割り当てる。２ビットのデータ「ｂ１／ｂ０」のうちビットｂ０をデータビットとして用い、ビットｂ１をエラー訂正ビットとして用いる。すなわち、４つのデータ状態のうち、閾値レベルが最小及び最大のデータ状態Ａ及びＤのエラー訂正ビットｂ１に「１」を割り当て、閾値レベルが中間の２つのデータ状態Ｂ及びＣのエラー訂正ビットｂ１に「０」を割り当てる。
【００１５】
通常のＥＣＣによるエラー訂正ビットは、データビットにエラーが発生したことを検出し、データビットを正常の値に再設定するために用いられる。これに対し、実施例１における「エラー訂正ビット」は、データビットにエラーが発生する前に、メモリトランジスタの状態を、エラーが発生し難い状態に再設定するために用いられる。
【００１６】
データ書込み時には、エラー訂正ビットｂ１に常に「１」を書き込む。このため、ビットエラーが生じていないとき、すなわち正常時には、エラー訂正ビットｂ１は「１」に設定されている。エラー訂正ビットｂ１が「１」の状態を「正常」状態といい、エラー訂正ビットｂ１が「０」の状態を「異常」状態ということとする。エラー訂正ビットｂ１は、「正常」及び「異常」の２値のうちいずれかの値をとる。
【００１７】
図１Ａ〜図１Ｄでは、データ状態Ａ及びＤのエラー訂正ビットｂ１に「１」を割り当て、データ状態Ｂ及びＣのエラー訂正ビットｂ１に「０」を割り当てたが、その逆に、データ状態Ａ及びＤのエラー訂正ビットｂ１に「０」を割り当て、データ状態Ｂ及びＣのエラー訂正ビットｂ１に「１」を割り当ててもよい。この場合には、エラー訂正ビットｂ１が「０」の状態が「正常」状態に対応し、エラー訂正ビットｂ１が「１」の状態が「異常」状態に対応する。
【００１８】
データ状態Ｄのメモリセルにおいては、データリテンションにより、フローティングゲート２４内の電荷が基板等にリークし、閾値が低下する。閾値が、データ状態ＣとＤとを区別する第３レベルＶｃ以下になると、データ状態がＤからＣに遷移してしまう。
【００１９】
逆に、データ状態Ａのメモリセルにおいては、リードディスターブ及びプログラムディスターブによって、フローティングゲート２４内に予期せぬ電荷が注入される。これにより、フローティングゲート型ＦＥＴの閾値が上昇する。閾値が、データ状態ＡとＢとを区別する第１レベルＶａ以上になると、データ状態がＡからＢに遷移してしまう。
【００２０】
実施例１による不揮発性半導体記憶装置では、メモリセルと共にパッケージングされたコントローラが、定期的にエラー訂正ビットｂ１の値を読み出す。読み出された値が「０（異常）」である場合には、そのエラー訂正ビットｂ１の値を「１（正常）」に再設定（本明細書において、この再設定処理を「リフレッシュ」ということとする。）する。これにより、読み出されたメモリセルがデータ状態Ｂである場合には、データ状態Ａに戻され、読み出されたメモリセルがデータ状態Ｃである場合には、データ状態Ｄに戻される。すなわち、異常状態が、当該異常状態のデータビットｂ０の値を変化させることなく、正常状態に戻される。
【００２１】
図２に、データ状態Ｄのメモリセルの閾値（電荷蓄積量に依存）の時間変動の一例を示す。横軸は経過時間を表し、縦軸は閾値レベルを表す。閾値が第１レベルＶａよりも低い領域が、データ状態Ａ、すなわちｂ１／ｂ０＝「１（正常）／１」に対応する。閾値が第１レベルＶａよりも高く、かつ第２レベルＶｂより低い領域が、データ状態Ｂ、すなわちｂ１／ｂ０＝「０（異常）／１」に対応する。閾値が第２レベルＶｂよりも高く、かつ第３レベルＶｃより低い領域が、データ状態Ｃ、すなわちｂ１／ｂ０＝値「０（異常）／０」に対応する。閾値が第３レベルＶｃよりも高い領域が、データ状態Ｄ、すなわちｂ１／ｂ０＝「１（正常）／０」に対応する。
【００２２】
初期状態では、データ状態Ｄのメモリセルの閾値はＶｄに設定される。メモリセルの閾値は、データリテンションによって、時間の経過とともに低下する。時刻ｔ１において、メモリセルの閾値が第３レベルＶｃまで低下する。時刻ｔ１以降は、メモリセルの閾値が第３レベルＶｃを下回るため、メモリセルがデータ状態Ｃになる。時刻ｔｒ１において、リフレッシュ処理が起動されると、メモリセルのエラー訂正ビットｂ１の値が、「０（異常）」から「１（正常）」に再設定される。このとき、データビットｂ０は書き換わらない。これにより、メモリセルの値がｂ１／ｂ０＝「１（正常）／０」に再設定され、閾値が初期値Ｖｄに戻る。その後、周期Ｔｉで定期的にリフレッシュ処理が実行されることにより、メモリセルの閾値が初期値Ｖｄに再設定される。これにより、データビットｂ０のビットエラーの発生を防止することができる。
【００２３】
一方、時刻ｔｒ１でリフレッシュ処理を行うことなく、時刻ｔ２に至ると、メモリセルの閾値が第２レベルＶｂまで低下する。時刻ｔ２を過ぎると、メモリセルの閾値が第２レベルＶｂを下回り、メモリセルがデータ状態Ｂ、すなわち記憶されている値がｂ１／ｂ０＝「０（異常）／１」になってしまう。この状態でリフレッシュ処理を実行すると、メモリセルの値が、ｂ１／ｂ０＝「１（正常）／１」に再設定される。このように、データビットｂ０の値が書き換えられてしまう。データビットｂ０のビットエラー発生を防止するために、データ状態Ｄのメモリセルの閾値が、初期値Ｖｄから第２レベルＶｂまで低下する時間よりも、リフレッシュ周期Ｔｉを短くすることが好ましい。
【００２４】
記憶されている値ｂ１／ｂ０＝「０（異常）／１」のメモリセルのリフレッシュは、本来、記憶されている値がｂ１／ｂ０＝「１（正常）／１」のメモリセルのエラー訂正ビットｂ１が０（異常）になったときに、メモリセルの値を元の値に戻すために行われる。ところが、図２において、時刻ｔ２以降にリフレッシュを行うと、メモリセルの値が、元の値に戻らず、データビットｂ０にエラーが発生してしまう。
【００２５】
図３に、データ状態Ａのメモリセルの閾値の時間変動の一例を示す。図３の横軸は経過時間を表し、縦軸は閾値レベルを表す。データ状態Ａのメモリセルの閾値は、初期値Ｖｏに設定されている。リードディスターブまたはプログラムディスターブが発生する度に、メモリセルの閾値が上昇する。閾値の上昇が繰り返され、時刻ｔ２において、閾値が第１レベルＶａに達する。時刻ｔ２以降は、メモリセルがデータ状態Ｂ、すなわちメモリセルの値がｂ１／ｂ０＝「０（異常）／１」になる。
【００２６】
時刻ｔｒ１においてリフレッシュ処理が実行されると、メモリセルのエラー訂正ビットｂ１が「０（異常）」から「１（正常）」に再設定される。これにより、メモリセルの閾値が、初期値Ｖｏに戻る。メモリセルの閾値が第２レベルＶｂを超える前にリフレッシュ処理を実行することにより、データビットｂ０のビットエラー発生を防止することができる。
【００２７】
上記実施例１では、１つのメモリセルが４値記憶、すなわち２ビットのデータの記憶を行う場合を示した。上記実施例１は、４値以外の多値記憶、すなわち、３ビット、４ビット等の記憶を行う不揮発性半導体記憶装置にも適用可能である。例えば、図１Ａ〜図１Ｄに示したように、複数のデータ状態を閾値レベルの順番に配列したとき、連続する４つのデータ状態Ａ〜Ｄのうち、閾値レベルが最小及び最大のデータ状態Ａ、Ｄのエラー訂正ビットに「正常」を割り当て、両者の間の２つのデータ状態Ｂ、Ｃのエラー訂正ビットに「異常」を割り当てる。
【００２８】
これにより、データ状態の閾値が変動して異常状態になったとき、そのデータ状態を、最も近い正常なデータ状態に戻すことができる。
【００２９】
また、上記実施例１では、フローティングゲート型ＦＥＴでメモリセルを構成したが、何らかの外乱によって閾値が変動する特性を持つ素子でメモリセルを構成してもよい。例えば、ＳＯＮＯＳ型ＦＥＴでメモリセルを構成してもよいし、相変化メモリ（ＰＲＡＭ）でメモリセルを構成してもよい。
【００３０】
上記実施例１による不揮発性反相対記憶装置は、記憶容量の点では、シングルレベルセル（ＳＬＣ）と変わりはない。ところが、従来のＳＬＣでは、データビットの１／０判定を１つの判定閾値で行う。このため、メモリセルの閾値が変動して、この判定閾値に近接しても、その状態を検出することができない。このまま放置すると、ビットエラーが発生してしまう。
【００３１】
実施例１においては、修復不可能な閾値変動が生じる前に、閾値を初期の値まで戻すことができる。このため、ビットエラーの発生を未然に防止することができる。
【００３２】
［実施例２］
図４に、実施例２によるＮＡＮＤ型フラッシュメモリを用いたソリッドステートドライブ（ＳＳＤ）のブロック図を示す。
【００３３】
ＳＳＤ３０は、メモリ部３１、入出力インタフェース３２、ＳＳＤコントローラ３３、及びアドレステーブル３４を含む。メモリ部３１は、ＮＡＮＤ型フラッシュメモリで構成される。ＳＳＤ３０は、入出力インタフェース３２を介して、ホストコンピュータ３５に接続される。ホストコンピュータ３５から、論理アドレスを指定して、データ書込みまたはデータ読出しコマンドがＳＳＤ３０に送信される。アドレステーブル３４に、論理アドレスと、ページアドレス（物理アドレス）との対応関係が記憶されている。
【００３４】
ＳＳＤコントローラ３３は、ホストコンピュータ３５からのコマンドに基づいて、アドレステーブル３４を参照し、論理アドレスからページアドレスを取得する。ＳＳＤコントローラ３３は、取得されたページアドレスに基づいて、メモリ部３１にアクセスする。
【００３５】
図５に、ＮＡＮＤ型フラッシュメモリで構成されたメモリ部３１の等価回路図を示す。図５の列方向に配置された複数のメモリセル４１が直列接続されて、ＮＡＮＤセルユニット４０を構成する。メモリセル４１の各々は、図１Ａ〜図１Ｄに示したフローティングゲート型ＦＥＴで構成される。また、図５の例では、複数のＮＡＮＤセルユニット４０が、行方向に配列している。これにより、メモリセル４１が行列状に配置される。
【００３６】
メモリセル４１の各行に対応して、ワード線ＷＬが配置されている。メモリセル４１のコントロールゲートが、対応する行のワード線ＷＬに接続される。ＮＡＮＤセルユニット４０に対応して、ビット線ＢＬが配置される。ＮＡＮＤセルユニット４０の一端が、第１選択トランジスタ４２を介して、対応するビット線ＢＬに接続される。複数の第１選択トランジスタ４２のゲートが、１本の第１選択ゲート線ＳＧ１に接続される。複数のＮＡＮＤセルユニット４０の他端が、第２選択トランジスタ４３を介して、１本のソース線ＳＬに接続される。複数の第２選択トランジスタ４３のゲートは、１本の第２選択ゲート線ＳＧ２に接続される。
【００３７】
行デコーダ５０によって、複数のワード線ＷＬから１本のワード線ＷＬが選択される。また、各ビット線ＢＬがページバッファ５１に接続されている。選択されたワード線に接続されたメモリセル４１から読み出されたデータが、ビット線ＢＬを介してページバッファ５１に一時的に記憶される。
【００３８】
同一のワード線ＷＬに接続された１行分のメモリセル４１（メモリセル群４５）に、２つのページアドレス（物理アドレス）が割り当てられる。例えば、図５において、第１行目のメモリセルセル群４５にはページアドレスＰＡ１及びＰＡ１＋１が割り当てられ、第ｉ行目のメモリセル群４５にはページアドレスＰＡ１＋２（ｉ−１）及びＰＡ１＋２ｉ−１が割り当てられる。
【００３９】
図５では、１つのメモリセル群４５に、連続する２つのページアドレスを割り当てたが、１つのメモリセル群４５に割り当てられる２つのページアドレスは、必ずしも連続する必要はない。
【００４０】
図６Ａに、アドレステーブル３４（図４）に格納される論理アドレスとページアドレスとの対応関係の一例を示す。通常は、複数（例えば８個）の論理アドレスをまとめて、論理アドレスとページアドレスとの対応関係がアドレステーブル３４に記憶される。従来は、論理アドレスとページアドレスとの対応は１対１であったが、実施例２においては、論理アドレスとページアドレスとが１対２の対応関係を有する。例えば、図６Ａの例では、論理アドレスＬＡ１〜ＬＡ１＋７が、ページアドレスＰＡ１〜ＰＡ１＋１５に対応付けられる。
【００４１】
図６Ｂに、論理アドレスＬＡ１〜ＬＡ１＋７と、ページアドレスＰＡ１〜ＰＡ１＋１５との詳細な対応関係を示す。実施例２では、１つの論理アドレスに、第１ページアドレス及び第２ページアドレスの２つのページアドレスが対応付けられる。１つの論理アドレスに対応付けられた第１ページアドレス及び第２ページアドレスは、同一のメモリセル群４５に割り当てられたものである。例えば、論理アドレスＬＡ１に、第１ページアドレスＰＡ１＋１及び第２ページアドレスＰＡ１が対応付けられる。第１ページアドレス及び第２ページアドレスは、それぞれメモリセル４１のデータビットｂ０及びエラー訂正ビットｂ１（図１Ａ〜図１Ｄ）を指定する。
【００４２】
図７を参照して、データ書込み方法について説明する。ホストコンピュータ３５からＳＳＤコントローラ３３に、書込み論理アドレスとして、ＬＡ１〜ＬＡ１＋７を指定し、書込みデータとしてデータＤを指定する書込みコマンドが送信される（ＸＡ１）。ＳＳＤコントローラ３３は、アドレステーブル３４を参照し（ＸＡ２）、書き込み可能なページアドレスを取得する（ＸＡ３）。論理アドレスＬＡ１〜ＬＡ１＋７を、新しく取得されたページアドレスＰＡ１〜ＰＡ１＋１５に対応付ける。論理アドレスＬＡ１〜ＬＡ１＋７に対応付けられていた旧ページアドレスは開放する。
【００４３】
ＳＳＤコントローラ３３は、メモリ部３１のページアドレスＰＡ１〜ＰＡ１＋１５のうち、第１ページアドレス、すなわちＰＡ１＋２ｉ＋１（ｉは、０〜７の整数）で指定されるメモリセル群４５に、ホストコンピュータ３５から書込み指令されたデータＤを書き込む（ＸＡ４）。さらに、ＳＳＤコントローラ３３は、ページアドレスＰＡ１〜ＰＡ１＋１５のうち、第２ページアドレス、すなわちＰＡ１＋２ｉ（ｉは、０〜７の整数）で指定されるメモリセル群４５に、「１（正常）」を書き込む（ＸＡ５）。データＤが書き込まれるメモリセル群４５と、「１（正常）」が書き込まれるメモリセル群４５とは、同一のメモリセル群である。ＳＳＤコントローラ３３は、メモリ部３１から書込み完了の応答（ＸＡ６）を受信すると、ホストコンピュータ３５に、書込み完了の応答信号を送信する（ＸＡ７）。
【００４４】
書込み完了時点で、各メモリセル４１は、図１Ａに示したデータ状態Ａまたは図１Ｄに示したデータ状態Ｄに設定される。
【００４５】
図８を参照して、データ読出し方法について説明する。ホストコンピュータ３５からＳＳＤコントローラ３３に、読出し論理アドレスとして、ＬＡ１〜ＬＡ１＋７を指定する読出しコマンドが送信される（ＸＢ１）。ＳＳＤコントローラ３３は、アドレステーブル３４を参照し（ＸＢ２）、論理アドレスＬＡ１〜ＬＡ１＋７に対応するページアドレスＰＡ１〜ＰＡ１＋１５を取得する（ＸＢ３）。
【００４６】
ＳＳＤコントローラ３３は、メモリ部３１のページアドレスＰＡ１〜ＰＡ１＋１５のうち、第１ページアドレス、すなわちＰＡ１＋２ｉ＋１（ｉは、０〜７の整数）のメモリセル群４５にアクセスし（ＸＢ４）、データＤを読み出す（ＸＢ５）。ＳＳＤコントローラ３３は、ホストコンピュータ３５に、読み出されたデータＤを含む応答信号を送信する（ＸＢ６）。
【００４７】
データ読出し時には、ページアドレスＰＡ１〜ＰＡ１＋１５のうち、第２ページアドレスへのアクセスは行われない。また、ＥＣＣに基づくエラー訂正も行われない。このため、高速な読出しを行うことができる。
【００４８】
図９を参照して、リフレッシュ動作について説明する。リフレッシュ動作は、ホストコンピュータ３５（図４）からの指令を受けることなく、ＳＳＤコントローラ３３が自律的に行う。例えば、一定の周期で、定期的にリフレッシュ動作が実行される。
【００４９】
リフレッシュ動作が起動されると、ＳＳＤコントローラ３３は、アドレステーブル３４を参照して（ＸＣ１）、有効データが記憶されているページアドレスを取得する（ＸＣ２）。ここでは、ページアドレスＰＡ１〜ＰＡ１＋１５が、アドレステーブル３４から取得された場合について説明する。ＳＳＤコントローラ３３は、取得されたページアドレスＰＡ１〜ＰＡ１＋１５のうち、第２ページアドレス、すなわちＰＡ１＋２ｉ（ｉは０〜７の整数）にアクセスし（ＸＣ３）、メモリ部３１からデータを読み出す（ＸＣ４）。メモリ部３１からＳＳＤコントローラ３３に読み出されたデータＣが正常か否かの判定を行う（ＸＣ５）。データＣのすべてのビット、すなわち、読出し対象のメモリセル群４５（図５）に属するすべてのメモリセル４１の各々から読み出されたビットの値が「１（正常）」であれば正常と判定され、少なくとも１つのビットが「０（異常）」であれば、異常と判定される。
【００５０】
判定結果が正常でれば、ＳＳＤコントローラ３３は、リフレッシュ動作の終了判定を行う（ＸＣ１４）。判定結果が異常であれば、ＳＳＤコントローラ３３は、メモリ部３１のページアドレスＰＡ１〜ＰＡ１＋１５のうち第１ページアドレスにアクセスし（ＸＣ６）、データを読み出す（ＸＣ７）。読み出されたデータを、データＤとする。ここで、データＤは、読出し対象のメモリセル群４５（図５）に属するすべてのメモリセル４１の各々から読み出されたビットを含む。
【００５１】
ＳＳＤコントローラ３３は、アドレステーブル３４にアクセスし（ＸＣ８）、新たに書込みを行うことができる新しいページアドレスを取得する（ＸＣ９）。取得された新しいページアドレスをＰＡ２〜ＰＡ２＋１５とする。これに伴い、旧ページアドレスＰＡ１〜ＰＡ１＋１５を開放する。新しいページアドレスＰＡ２〜ＰＡ２＋１５のうち、第１ページアドレス、すなわちページアドレスＰＡ２＋２ｉ＋１（ｉは０〜７の整数）にデータＤを書き込む（ＸＣ１０）。ＳＳＤコントローラ３３がメモリ部３１から書き込み完了のメッセージを受信すると（ＸＣ１１）、新しいページアドレスＰＡ２〜ＰＡ２＋１５のうち、第２ページアドレス、すなわちページアドレスＰＡ２＋２ｉ（ｉは０〜７の整数）に、「１（正常）」を書き込む（ＸＣ１２）。
【００５２】
ＳＳＤコントローラ３３は、メモリ部３１から書き込み完了メッセージを受信すると（ＸＣ１３）、リフレッシュ動作の終了判定を行う（ＸＣ１４）。有効データが記憶されているすべてのページアドレスについて、上述の処理が終了すると、今周期のリフレッシュ動作を終了する。リフレッシュ処理が終了していないページアドレスが存在する場合には、すべての有効なページアドレスについてリフレッシュ処理が終了するまで、上記リフレッシュ処理を繰り返す。
【００５３】
これにより、有効データが記憶されているページアドレスのメモリセル４１が、データ状態Ａ（図１Ａ）またはデータ状態Ｄ（図１Ｄ）の状態に設定される。すなわち、リフレッシュ動作時にデータ状態Ｂ（図１Ｂ）またはデータ状態Ｃ（図１Ｃ）の状態のメモリセル４１が検出された場合に、それらのメモリセルが、データ状態Ａまたはデータ状態Ｄに再設定される。これにより、データビットｂ０のビットエラー発生を未然に防止することができる。
【００５４】
さらに、本実施例では、ＥＣＣ回路を準備する必要がないため、チップ面積の増大、及びＥＣＣ復号化及び符号化による遅延時間の増大を抑制することができる。なお、実施例２において、ＥＣＣによるエラー訂正を併用してもよい。この場合、実施例２による方法である程度高い信頼性が確保されるため、ＥＣＣの冗長度を小さくすることができる。
【００５５】
［実施例３］
図１０に、実施例３による不揮発性半導体記憶装置の概略ブロック図を示す。以下の説明では、実施例２との相違点に着目して説明を行い、同一の構成については説明を省略する。
【００５６】
実施例２では、メモリ部にＮＡＮＤ型フラッシュメモリを用いたが、実施例３では、メモリ部３１にＮＯＲ型フラッシュメモリが用いられる。実施例３においても、実施例２の場合と同様に、入出力インタフェース３２、コントローラ３３、及びアドレステーブル３４が準備される。
【００５７】
メモリ部３１は、行デコーダ６１、入出力バッファ６３、読出書込回路６４、及び行列状に配置されたメモリセル６５を含む。メモリセル６５の各々は、図１Ａ〜図１Ｄに示したフローティングゲート型ＦＥＴで構成される。例えば、１行分のメモリセルからなるメモリセル群６６に、２つの物理アドレスが割り当てられる。アドレステーブル３４は、１つの論理アドレスに対して、１つのメモリセル群６６に割り当てられた２つの物理アドレスを対応付ける。２つの物理アドレスのうち、一方の第１物理アドレスは、図１Ａ〜図１Ｄのデータビットｂ０を指定し、他方の第２物理アドレスは、図１Ａ〜図１Ｄのエラー訂正ビットｂ１を指定する。
【００５８】
以下、実施例３の不揮発性半導体記憶装置の書込み動作について説明する。ＳＳＤコントローラ３３が、書込み指令のあった論理アドレスに対応する第１及び第２物理アドレスを取得する。ＳＳＤコントローラ３３は、取得された第１及び第２物理アドレスが指定するメモリセル群６６内のメモリセル６５を消去状態にする。その後、ＳＳＤコントローラ３３は、第１物理アドレスに、書き込むべきデータを書き込み、第２物理アドレスの全エラー訂正ビットに「正常」を設定する。
【００５９】
次に、読出し動作について説明する。ＳＳＤコントローラ３３が、読出し指令のあった論理アドレスに対応する第１物理アドレスを取得する。ＳＳＤコントローラ３３は、第１物理アドレスが指定するメモリセル群６６内のメモリセル６５からデータを読み出す。読み出されたデータを、ＳＳＤコントローラ３３が、ホストコンピュータ３５に送信する。
【００６０】
次に、リフレッシュ動作について説明する。コントローラ３３は、定期的に、各メモリセル群６６の第２物理アドレスで指定されるエラー訂正ビットｂ１のデータを読み出す。あるメモリセル群６６から読み出されたエラー訂正ビットｂ１の少なくとも１つが「異常」であれば、ＳＳＤコントローラ３３は、当該メモリセル群６６の第１物理アドレスのデータを読出し、ＳＳＤコントローラ３３内の一時記憶領域に記憶する。
【００６１】
その後、ＳＳＤコントローラ３３は、当該メモリセル群６６内のメモリセル６５を消去状態にする。その後、ＳＳＤコントローラ３３は、第１物理アドレスに、一時記憶領域に記憶されているデータを書き込み、第２物理アドレスの全エラー訂正ビットに、「正常」を設定する。
【００６２】
ＮＯＲ型フラッシュメモリで構成されたメモリ部３１では、メモリセル１行ごとに消去することが可能である。従って、リフレッシュ動作時に異常状態のメモリセルが検出された場合に、新たに物理アドレスを取得することなく、異常状態のメモリセルが検出された物理アドレスのデータを書き換えればよい。
【００６３】
実施例３においても、データビットのビットエラー発生を未然に防止することができる。
【００６４】
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組み合わせ等が可能なことは当業者に自明であろう。
【符号の説明】
【００６５】
２０  半導体基板
２１  ソース
２２  ドレイン
２３  ゲート絶縁膜
２４  フローティングゲート
２５  中間絶縁膜
２６  コントロールゲート
３０  ソリッドステートデバイス（ＳＳＤ）
３１  メモリ部
３２  入出力インタフェース
３３  ＳＳＤコントローラ
３４  アドレステーブル
３５  ホストコンピュータ
４０  ＮＡＮＤセルユニット
４１  メモリセル
４２  第１選択トランジスタ
４３  第２選択トランジスタ
４５  メモリセル群
５０  行デコーダ
５１  ページバッファ
６１  行デコーダ
６３  入出力バッファ
６４  読出書込回路
６５  メモリセル
６６  メモリセル群
Ａ、Ｂ、Ｃ、Ｄ  データ状態
ＷＬ  ワード線
ＢＬ  ビット線
ＳＬ  ソース線
ＳＧ１  第１セレクトゲート線
ＳＧ２  第２セレクトゲート線
ｂ０  データビット
ｂ１  エラー訂正ビット
【図１】
2013041634.tif 000003
【図２】
2013041634.tif 000004
【図３】
2013041634.tif 000005
【図４】
2013041634.tif 000006
【図５】
2013041634.tif 000007
【図６】
2013041634.tif 000008
【図７】
2013041634.tif 000009
【図８】
2013041634.tif 000010
【図９】
2013041634.tif 000011
【図１０】
2013041634.tif 000012