(57)【特許請求の範囲】
【請求項１】
記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、
前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、
前記メモリコントローラは、
前記ブロックごとに、該ブロックの劣化度及びリード頻度を管理し、該管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行し、
前記リフレッシュの実行に際しては、
前記リフレッシュを実行するまでの期間内に、前記ブロックごとに該ブロックをリードしてブロック内で生じた障害ビット数の発生状況を取得するベリファイを実行し、該ベリファイを実行して取得した障害ビット数に基づいて、ベリファイ対象ブロックの新たな劣化度を決定し、該決定した新たな劣化度に基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな信頼性維持期間を取得し、該取得した新たな信頼性維持期間に基づいて、該ベリファイ対象ブロックに対して前記リフレッシュを実行し、
前記新たな劣化度の決定に際しては、
前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせにより障害ビット数閾値が一意に定まる障害ビット数閾値表又は前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間を変数として代入することにより前記障害ビット数閾値が一意に定まる数式に基づいて、前記ベリファイ対象ブロックの障害ビット数閾値を取得し、該取得した障害ビット数閾値と前記ベリファイを実行して取得した障害ビット数とに基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな劣化度を決定するか否かを判断する
ことを特徴とする半導体記憶装置。
【請求項２】
前記メモリコントローラは、
前記ブロックごとに該ブロックの劣化度及びリード頻度を管理するためのデータ保持期間管理情報を備えて構成され、前記データ保持期間管理情報に基づいて、前記信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記リフレッシュを実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記メモリコントローラは、
前記ブロックの劣化度及びリード頻度の組み合わせにより前記信頼性維持期間が一意に定まる信頼性維持期間表又は前記ブロックの劣化度及びリード頻度を変数として代入することにより前記信頼性維持期間が一意に定まる数式を備えて構成され、前記信頼性維持期間表又は前記数式に基づいて、前記信頼性維持期間を取得する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記メモリコントローラは、
前記ブロックごとに前記リフレッシュを実行する日時を管理するためのリフレッシュ管理情報を備えて構成され、前記リフレッシュ管理情報に基づいて、前記リフレッシュを実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項５】
前記メモリコントローラは、
前記フラッシュメモリにデータを書き込むライト処理において、ライト後のライト対象ブロックの劣化度及びリード頻度に基づいて、該ライト対象ブロックに記憶されたデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、該ライト対象ブロックに対して前記リフレッシュを実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項６】
前記メモリコントローラは、
前記フラッシュメモリからデータを読み込むリード処理において、リード後のリード対象ブロックの劣化度及びリード頻度に基づいて、該リード対象ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、該リード対象ブロックに対して前記リフレッシュを実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項７】
前記メモリコントローラは、
前記リフレッシュを実行するリフレッシュ処理において、上位装置からのアクセス要求があった場合には該アクセス要求に対する処理を優先し、前記リフレッシュの実行を一時的に停止する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項８】
前記メモリコントローラは、
前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせごとに障害ビット数分布を示す障害ビット数分布指標又は分布関数の母数を備えて構成され、前記障害ビット数分布指標又は前記母数と前記ベリファイを実行して取得した障害ビット数とに基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな劣化度を決定する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項９】
前記メモリコントローラは、
前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせごとに障害ビット数分布を示す障害ビット数分布指標を備えて構成され、前記障害ビット数分布指標と前記ベリファイを実行して取得した障害ビット数とを比較して最も類似する障害ビット数分布指標の劣化度を前記ベリファイ対象ブロックの新たな劣化度として決定する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項１０】
前記メモリコントローラは、
前記ブロックにデータが記憶された後の経過時間及び前記信頼性維持期間に基づいて算出されるブロックの信頼性ランクごとに前記ブロックを管理し、前記信頼性ランクごとに許容する許容ブロック数を超過したブロックに対して前記リフレッシュを実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項１１】
記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置の制御方法において、
前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、
前記メモリコントローラが、
前記複数のブロックごとに該ブロックの劣化度及びリード頻度を管理する第１のステップと、
前記管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得する第２のステップと、
前記取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する第３のステップとを備え、
前記リフレッシュの実行に際しては、
前記リフレッシュを実行するまでの期間内に、前記ブロックごとに該ブロックをリードしてブロック内で生じた障害ビット数の発生状況を取得するベリファイを実行し、該ベリファイを実行して取得した障害ビット数に基づいて、ベリファイ対象ブロックの新たな劣化度を決定し、該決定した新たな劣化度に基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな信頼性維持期間を取得し、該取得した新たな信頼性維持期間に基づいて、該ベリファイ対象ブロックに対して前記リフレッシュを実行するし、
前記新たな劣化度の決定に際しては、
前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせにより障害ビット数閾値が一意に定まる障害ビット数閾値表又は前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間を変数として代入することにより前記障害ビット数閾値が一意に定まる数式に基づいて、前記ベリファイ対象ブロックの障害ビット数閾値を取得し、該取得した障害ビット数閾値と前記ベリファイを実行して取得した障害ビット数とに基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな劣化度を決定するか否かを判断する
ことを特徴とする半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置及び半導体記憶装置の制御方法に関し、特に電気的に書換え可能な不揮発性メモリの一種であるフラッシュメモリを記憶媒体とする半導体記憶装置及びその制御方法に適用して好適なるものである。
【背景技術】
【０００２】
フラッシュメモリは、データ記憶後の経過時間に応じてその記憶されたデータが徐々に変化する特性（リテンション特性）を持ち、また複数回のデータの読出し（リード）によってそのリードされたデータが徐々に変化する特性（リードディスターブ特性）を持つ。このためフラッシュメモリを記憶媒体として備える半導体記憶装置は、一般に、ライト時には複数ビットの訂正能力を持つＥＣＣ(Error Correcting Code)をデータに付加し、これをフラッシュメモリの記憶領域に格納する。これによりリード時にはこのＥＣＣを用いて元データから変化した障害ビットを訂正することができる。このようにして半導体記憶装置は、正確なデータ保持の実現を可能としている。
【０００３】
ここで、半導体記憶装置においてデータ保持期間が長期間に及ぶ場合や、特定領域に対して局所的なリードが複数回行われる場合又はこれらが組み合わさった場合には、ＥＣＣの訂正能力を超えて、障害ビットが発生する場合がある。このとき半導体記憶装置により記憶されているデータの信頼性は低下して維持されないこととなる。従来、こうしたＥＣＣ訂正不能障害に対応し、このＥＣＣ訂正不能障害の発生確率を十分に低く維持するべく、元データから変化した障害ビット数がＥＣＣの訂正可能ビット数を超える前に、フラッシュメモリに既に記憶されているデータを一旦読み出し、読み出したデータの障害ビットをＥＣＣにより訂正した後、訂正したデータを再度フラッシュメモリの他の記憶領域に記憶し直す手法がある。この障害ビットの訂正を目的として既に記憶されているデータを再度記憶し直す動作を「リフレッシュ」と呼ぶ。
【０００４】
ＥＣＣ訂正不能障害を適切に防止するためには、障害ビット数の増加に応じてリフレッシュを実行する必要がある。すなわち障害ビット数が増加してＥＣＣ訂正可能ビット数を超える前にリフレッシュを実行する必要がある。
【０００５】
例えば、リードディスターブに起因する障害ビット数は、特定の記憶領域に対する累積リード回数によって変化するため、リード頻度に応じてリフレッシュを実行することが望ましい。
【０００６】
そこで、特許文献１には、フラッシュメモリからのデータリード時にリード回数をカウントしておき、リード回数が一定数に達した場合に、記憶済みのデータを一旦読み出して障害ビット数を検査し、障害ビット数が予め定められた規定数以上の場合には、リフレッシュを実行する技術が開示されている。
【０００７】
また、リテンション特性に起因する障害ビット数は、データ記憶後の経過時間によって変化するため、データ記憶後の経過時間に応じてリフレッシュを実行することが望ましい。
【０００８】
そこで、特許文献２には、フラッシュメモリにデータを記憶した後、データ記憶後の経過時間をカウントし、経過時間が予め定められた期間を超過した場合にリフレッシュを実行する技術が開示されている。
【０００９】
また、障害ビット数は、記憶領域の劣化度によっても変化する傾向にあり、例えば劣化度の高い記憶領域は劣化度の低い記憶領域と比べて、リード頻度が少なくデータ記憶後の経過時間が短期間であっても増加する傾向にある。
【００１０】
そこで、特許文献３には、フラッシュメモリにおける記憶領域の劣化度を考慮して、将来の障害ビット数を予測するとともに、将来的に信頼性維持が不可能であると判断した場合、すなわち将来的に障害ビット数がＥＣＣ訂正可能ビット数を超過すると判断した場合には、記憶済みのデータを他の記憶領域に書き写し、元の記憶領域を一定期間不使用とすることで、データ保持特性を回復させる技術が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許出願公開第２００４−０２５７８８８号明細書
【特許文献２】米国特許第７３２５０９０号公報
【特許文献３】米国特許出願公開第２０１０−０１６５６８９号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ここで、フラッシュメモリの劣化度は、各記憶領域の累積消去回数等に依存するものであり、累積消去回数にはバラつきがあることからも各記憶領域で一様にならないことは明らかである。また仮に、消去回数を平準化する技術（ウェアレベリング）を適切に実行した場合であっても、フラッシュメモリの製造工程において生じる品質差、微小な環境温度差又はデータ等の各種要因により、フラッシュメモリの全記憶領域で障害ビットの増加傾向を均一化することは困難である。このことから、高い信頼性を維持してデータを記憶しておくことが可能な期間（以下、これを「信頼性維持期間」と呼ぶ）は、フラッシュメモリの記憶領域ごとに異なるということが言える。
【００１３】
従って、フラッシュメモリにデータを記憶してからリフレッシュを実行するまでの期間（以下、これを「リフレッシュ期間」と呼ぶ）を記憶領域ごとの劣化度によらずに一律に定めてしまうと、リフレッシュ期間内に信頼性を維持することができないと判断した劣化度の高い記憶領域にはデータを記憶することができなくなる。半導体記憶装置は一般に、一定量の予備領域を備えて構成され、データを記憶することができないと判断した場合にはこの予備領域を記憶領域の代替えとすることが可能であるが、予備領域が枯渇した場合には装置寿命が尽きたものと判断してこれ以上データを記憶することができなくなる。よって装置寿命を延長するためには、劣化度の高い記憶領域のリフレッシュ期間を短縮して頻繁にリフレッシュを実行する必要がある。
【００１４】
一方、劣化度の高い記憶領域の信頼性を維持するために、リフレッシュ期間をこの劣化度の高い記憶領域に合わせて一律に短期間に定めた場合、劣化度が低く長期間データ保持が可能な記憶領域についても頻繁にリフレッシュを実行することとなる。過剰なリフレッシュは、記憶領域の劣化を進展させる原因となるだけでなく、リフレッシュによる内部リソース（バス帯域、プロセッサ又はDMA等）の占有により、上位装置からの要求に対する処理性能が低下する原因となり好ましくない。
【００１５】
上記の課題を解消するためには、フラッシュメモリの記憶領域ごとの個々の劣化度、データ記憶後の経過時間及びリード頻度に基づいて、最適なリフレッシュ期間を定めるとともに、ここで定めたリフレッシュ期間に従ってリフレッシュを実行することが望ましい。このように必要最低限のリフレッシュを実行することで、半導体記憶装置に記憶されたデータの信頼性を維持しつつ、装置の長寿命化を実現することが可能となる。
【００１６】
しかし、特許文献１に記載の技術では、リード頻度に基づいてリフレッシュを実行するだけであり、劣化度及び経過時間に基づいてリフレッシュを実行することはできない。また記憶領域ごとにリード頻度をカウントしてリフレッシュを実行することはできない。
【００１７】
また、特許文献２に記載の技術では、経過時間に基づいてリフレッシュを実行するだけであり、劣化度及びリード頻度に基づいてリフレッシュを実行することはできない。また記憶領域ごとに経過時間をカウントしてリフレッシュを実行することはできない。
【００１８】
また、特許文献３に記載の技術は、将来的に信頼性を維持することができないと判断した時点で即座にデータを他の記憶領域に書き写すというものであり、信頼性を維持することができないと判断してから数日間は高い信頼性を維持してデータを記憶しておくことが可能であるにも関わらずリフレッシュを実行することとなる。よって、不要なリフレッシュによりデータの劣化が進展し、半導体記憶装置の性能も低下することになる。また記憶領域ごとの劣化度、経過時間及びリード頻度に基づいて、リフレッシュを実行することはできない。
【００１９】
従って、フラッシュメモリの記憶領域ごとの劣化度、経過時間及びリード頻度に基づいて、記憶領域ごとに信頼性維持期間を算出し、算出した信頼性維持期間を用いて、記憶領域ごとに計画的にリフレッシュを実行できれば、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置の長寿命化を図れるものと考えられる。
【００２０】
本発明は以上の点を考慮してなされたもので、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置を長寿命化させ得る半導体記憶装置及びその制御方法を提案しようとするものである。
【課題を解決するための手段】
【００２１】
かかる課題を解決するために本発明においては、記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、前記メモリコントローラは、前記ブロックごとに該ブロックの劣化度及びリード頻度を管理し、該管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行することを特徴とする。
【００２２】
また、本発明においては、記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置の制御方法において、前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、前記メモリコントローラが、前記複数のブロックごとに該ブロックの劣化度及びリード頻度を管理する第１のステップと、前記メモリコントローラが、前記管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得する第２のステップと、前記メモリコントローラが、前記取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する第３のステップと、を備えることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置の長寿命化を図ることができる。
【図面の簡単な説明】
【００２４】
【図１】半導体記憶装置の概略構成図である。
【図２】フラッシュメモリの内部構成図である。
【図３】ブロックの内部構成図である。
【図４】ページの内部構成図である。
【図５】第１の実施の形態におけるデータ保持期間管理情報の概念図である。
【図６】第１の実施の形態における信頼性維持期間表の概念図である。
【図７】第１の実施の形態におけるリフレッシュ管理情報の概念図である。
【図８】第１の実施の形態におけるライト処理のフローチャートである。
【図９】第１の実施の形態におけるリード処理のフローチャートである。
【図１０】第１の実施の形態におけるリフレッシュ処理のフローチャートである。
【図１１】第２の実施の形態におけるベリファイ管理情報の概念図である。
【図１２】第２の実施の形態における障害ビット閾値表の概念図である。
【図１３】第２の実施の形態におけるライト処理のフローチャートである。
【図１４】第２の実施の形態におけるリード処理のフローチャートである。
【図１５】第２の実施の形態におけるベリファイ制御処理のフローチャートである。
【図１６】第２の実施の形態におけるベリファイ処理のフローチャートである。
【図１７】第２の実施の形態における障害ビット数分布の概念図である。
【図１８】第２の実施の形態における管理画面の構成図である。
【図１９】第３の実施の形態における信頼性ランク管理情報の概念図である。
【図２０】第３の実施の形態におけるライト処理のフローチャートである。
【図２１】第３の実施の形態におけるリード処理のフローチャートである。
【図２２】第３の実施の形態におけるリフレッシュ処理のフローチャートである。
【図２３】第４の実施の形態におけるベリファイ処理のフローチャートである。
【図２４】第５の実施の形態におけるベリファイ処理のフローチャートである。
【発明を実施するための形態】
【００２５】
以下図面について、本発明の一実施の形態を詳述する。
【００２６】
（１）第１の実施の形態
（１−１）半導体記憶装置の構成
図１は、全体として本実施の形態による半導体記憶装置１００Ａの概略構成を示す。この半導体記憶装置１００Ａは、上位装置１０１及び管理装置１０２と通信可能に接続されている。
【００２７】
半導体記憶装置１００Ａは、フラッシュメモリコントローラ１１０及び複数のフラッシュメモリ１２０〜１２８（例えば３２個）を備え、フラッシュメモリコントローラ１１０は、ディスクインターフェース１１１、ネットワークインターフェース１１２、ＲＡＭ（Random Access Memory）１１３、スイッチ１１４、プロセッサ１１５Ａ、データバッファ１１６及びフラッシュメモリインターフェース１１７を備えて構成される。
【００２８】
ディスクインターフェース１１１は、ストレージ装置又はサーバー等の上位装置１０１に接続され、スイッチ１１４を介してフラッシュメモリコントローラ１１０の各部に接続されている。ディスクインターフェース１１１は、上位装置１０１からのリード／ライト要求、要求対象の論理的な格納位置を指定するＬＢＡ（Logical Block Address）及びライト要求時におけるライトデータを受信する。またディスクインターフェース１１１は、半導体記憶装置１００Ａの制御用コマンドを受信した場合、受信したコマンドに基づいて、半導体記憶装置１００Ａの動作状況、利用状況及び現在の設定値等を上位装置に通知する。
【００２９】
ネットワークインターフェース１１２は、管理装置１０２からの各種情報を受信し、又は管理情報１０２に各種情報を送信する。
【００３０】
ＲＡＭ１１３は、具体的にはＤＲＡＭ（Dynamic RAM）等の揮発性メモリから構成され、このＲＡＭ１１３にはフラッシュメモリコントローラ１１０の動作を制御するための各種プログラム、フラッシュメモリ１２０〜１２８の管理情報及び各ＤＭＡで用いられる転送制御情報を含んだ転送リスト等が格納される。なおＲＡＭ１１３は、データを格納するデータバッファ１１６の機能の一部又は全部を含むとしてもよい。
【００３１】
スイッチ１１４は、フラッシュメモリコントローラ１１０内のディスクインターフェース１１１、ネットワークインターフェース１１２、ＲＡＭ１１３、プロセッサ１１５Ａ、データバッファ１１６及びフラッシュメモリインターフェース１１７を接続し、各部間のデータをアドレス又はＩＤによってルーティングして転送する。
【００３２】
プロセッサ１１５Ａは、スイッチ１１４を介してフラッシュメモリコントローラ１１０の各部と接続し、ＲＡＭ１１３に記憶された各種プログラム及び管理情報に基づいて、フラッシュメモリコントローラ１１０全体を統括的に制御する。またプロセッサ１１５Ａは、定期的な情報取得と割り込み受信機能によって、フラッシュメモリコントローラ１１０全体を監視する。
【００３３】
データバッファ１１６は、フラッシュメモリコントローラ１１０においてデータ転送が処理途中の一時的なデータを格納する。
【００３４】
フラッシュメモリインターフェース１１７は、複数のバス（例えば１６本）を介して複数のフラッシュメモリ１２０〜１２８に接続されている。各バスには複数（例えば２個）のフラッシュメモリが接続されており、フラッシュメモリインターフェース１１７はＣＥ（Chip Enable）信号を用いて同一バスに接続された複数のフラッシュメモリを独立して制御する。またフラッシュメモリインターフェース１１７は、プロセッサ１１５Ａからのリード／ライト要求に応じて動作する。このときフラッシュメモリインターフェース１１７は、要求対象を物理アドレス（ＰＢＡ：Physical Block Address）により受信する。フラッシュメモリインターフェース１１７は、ＰＢＡにより、フラッシュメモリ１２０〜１２８、ブロック及びページを算出し、要求対象のフラッシュメモリに対して、ブロック及びページを指定したリード／ライト要求を行う。
【００３５】
またフラッシュメモリインターフェース１１７は、リード時にはフラッシュメモリ１２０〜１２８から記憶済みのデータをリードしてリードしたデータをデータバッファ１１６に転送する。またライト時にはライトデータをデータバッファ１１６からリードしてリードしたデータをフラッシュメモリ１２０〜１２８にライトする。
【００３６】
またフラッシュメモリインターフェース１１７は、ＥＣＣ生成回路、ＥＣＣによるデータ損失検出回路及びＥＣＣ訂正回路を備えて構成され、ライト時には、ＥＣＣ生成回路によりデータに対してＥＣＣを付加してライトする。またリード時には、ＥＣＣによるデータ損失検出回路によりフラッシュメモリ１２０〜１２８からのリードデータを検査する。またデータ損失が検出された際には、ＥＣＣ訂正回路によりデータ訂正を行い、訂正ビット数をＲＡＭ１１３に格納する。
【００３７】
上位装置１０１は、例えば業務システムの中核をなすコンピュータ、ファイルサーバー又は多数の半導体記憶装置が接続されるストレージ装置が相当する。上位装置１０１は、図示しないプロセッサ、メモリ、ネットワークインターフェース及びローカル入出力デバイス等のハードウェア資源を備えて構成され、またデバイスドライバ、オペレーティングシステム（ＯＳ）及びアプリケーションプログラム等のソフトウェア資源を備えて構成される。上位装置１０１は、プロセッサの制御の下、各種プログラムを実行することで、半導体記憶装置１００Ａとの通信及びデータのリード／ライト要求を行う。また上位装置１０１は、プロセッサの制御の下、管理用プログラムを実行することで、半導体記憶装置１００Ａの使用状況及び動作状況等の管理情報を取得する。また上位装置１０１は、半導体記憶装置１００Ａの管理単位、半導体記憶装置１００Ａの制御方法及び要求データの信頼性を指定又は変更することができる。
【００３８】
管理装置１０２は、図示しないプロセッサ、メモリ、ネットワークインターフェース及びローカル入出力デバイス等のハードウェア資源と、図示しない管理プログラム等のソフトウェア資源を備えたコンピュータである。管理装置１０２は、プログラムによってストレージ装置からの情報を取得し、例えば後述の図１８に示すような管理画面を表示する。システム管理者は、管理装置１０２に表示された管理画面を用いて、半導体記憶装置１００Ａの監視及び運用における制御を行う。なお管理装置１０２は上述の上位装置１０１と同じ装置であってもよいし、異なる管理専用の装置であってもよい。
【００３９】
なお上述のディスクインターフェース１１１、ネットワークインターフェース１１２、ＲＡＭ１１３、スイッチ１１４、プロセッサ１１５Ａ、データバッファ１１６及びフラッシュメモリインターフェース１１７は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）による１つの半導体素子内に構成されていてもよいし、複数の個別専用ＩＣ（Integrated Circuit）を相互に接続することにより構成されていてもよい。
【００４０】
（１−２）データ構成
図２は、フラッシュメモリ１２０の内部構成を示す。フラッシュメモリ１２０は、レジスタ２０１及び複数（例えば４０９６個）のブロック２０２〜２０６から構成される。なお他のフラッシュメモリ１２１〜１２８もフラッシュメモリ１２０と同様の構成である。
【００４１】
レジスタ２０１は、ページサイズ（例えば４ＫＢ）以上の記憶容量を持つレジスタであり、ブロック２０２〜２０６は、データの記憶領域である。フラッシュメモリ１２０は、ブロック単位でのみデータの消去が可能である。
【００４２】
フラッシュメモリ１２０は、フラッシュメモリインターフェース１１７からのリード／ライト要求の指示に従って動作し、ライト時には、まずフラッシュメモリインターフェース１１７からライトコマンド、要求対象のブロック及びページ番号を受信し、次いでフラッシュメモリインターフェース１１７から転送されるライトデータをレジスタ２０１に格納する。その後フラッシュメモリ１２０は、レジスタ２０１に格納したデータを指定されたページにライトする。またリード時には、フラッシュメモリ１２０は、まずフラッシュメモリインターフェース１１７からリードコマンド、要求対象のブロック及びページ番号を受信し、次いで指定されたページに格納されているデータをリードしてレジスタ２０１に格納する。その後フラッシュメモリ１２０は、レジスタ２０１に格納したデータをフラッシュメモリインターフェース１１７に転送する。
【００４３】
図３は、ブロック２０２の内部構成を示す。ブロック２０２は、複数（例えば１２８個）のページ３０１〜３０７から構成される。なお他のブロック２０３〜２０６もブロック２０２と同様の構成である。
【００４４】
ページ３０１〜３０７は、データの最小記憶領域である。フラッシュメモリ１２０は、このページ単位でデータのリード／ライトを行う。ページ３０１〜３０７にデータを書き込む順序は予め規定されており、フラッシュメモリ１２０は、３０１、３０２、３０３、…、３０７の順にデータをライトする。また記憶済みのページに上書きすることは禁止されており、そのページが属するブロックに記憶されているデータを全て消去した後でなければ、再度そのページにデータを記憶することはできない。このため本願発明が適用される半導体記憶装置１００Ａは、上位装置１０１が指定する論理的なアドレス（ＬＢＡ）と半導体記憶装置１００Ａ内部における物理的な記憶位置を指定するアドレス(ＰＢＡ)とを別の体系によって管理し、ＬＢＡとＰＢＡとを対応付けたテーブル情報を管理する。フラッシュメモリ１２０は、このテーブル情報により、上位装置１０１から同一ＬＢＡのデータについて更新ライト要求を受信した場合であっても、更新前にＬＢＡに対応付けていたＰＢＡを別のページを示す新たなＰＢＡに変換し、変換したＰＢＡにより指定される記憶領域にライトする処理を行っている。上記のアドレス変換処理により、フラッシュメモリ１２０は、上位装置１０１に対して実際の物理的な記憶領域の変更を隠蔽することができる。
【００４５】
図４は、ページ３０１の内部構成を示す。ページ３０１は、複数（例えば８個）のデータ及びＥＣＣから構成される。なお他のページ３０２〜３０７もページ３０１と同様の構成である。
【００４６】
データ４０１、４０３及び４０５は、一定のビット数（例えば４ＫＢ）から構成され、ＥＣＣ４０２、４０４及び４０６は、保障するデータに隣接してそれぞれ記憶される。またＥＣＣ４０２は、データ４０１に隣接して記憶されることにより、データと合わせて１つのＥＣＣ／ＣＷ（ECC/Code Word）を構成する。図４の場合、例えばＥＣＣ４０２は、データ４０１（「Data1」）と合わせて１つのＥＣＣ／ＣＷを構成している。このＥＣＣ／ＣＷ１つ当たりの障害ビット数がＥＣＣ訂正可能ビット数を超過した際に、データ損失障害が生じることとなる。なお図４のページ３０１は、ページ内に８個のＥＣＣ／ＣＷを構成しているが必ずしもこれに限らず、ページサイズやＥＣＣの強度（訂正可能ビット数）に合わせて任意の数のＥＣＣ／ＣＷを構成するとしてもよい。
【００４７】
（１−３）各種管理情報の構成
図５は、半導体記憶装置１００ＡのＲＡＭ１１３に記憶された管理情報のうち、データ保持期間管理情報５００を示す。データ保持期間管理情報５００は、ブロックごとにデータ保持期間を管理し、ブロックごとにリフレッシュを実行するために用いられる情報であり、ブロック番号欄５０１、データ記憶日時欄５０２、リード回数欄５０３、消去回数欄５０４、劣化度欄５０５、１日当たりの平均リード回数欄５０６及び信頼性維持期間欄５０７から構成される。
【００４８】
ブロック番号欄５０１には、半導体記憶装置１００Ａが管理する全ブロックのブロック番号が格納される。なお図１に示すように、半導体記憶装置１００Ａに搭載されたフラッシュメモリが複数存在する場合には、フラッシュメモリの番号とそのフラッシュメモリ内のブロック番号とが合わせて格納される。すなわちブロック番号欄５０１には、半導体記憶装置１００Ａに搭載された全フラッシュメモリの全ブロックの中から対象ブロックが一意に特定される値が格納される。
【００４９】
なお図５では、ブロック番号欄５０１に対象ブロックを一意に特定する値を格納する例を示したが、同一の使用条件で用いる複数ブロックをまとめて１つのブロックグループとし、これを特定するための値がブロック番号欄５０１に格納されるとしてもよい。ただし、このように複数のブロックをグループで管理するとした場合、リードディスターブによる障害ビットの増加はリードが生じたページを含むブロック内に限定されるため、リードディスターブを考慮したブロックグループのデータの信頼性予測精度は低下する。
【００５０】
データ記憶日時欄５０２には、ブロックにデータを記憶した日時（日付）が格納される。現在日時は半導体記憶装置１００Ａにより常時管理されており、ブロックの先頭ページにデータがライトされた記憶日時がデータ記憶日時欄５０２に格納される。
【００５１】
またリード回数欄５０３には、ブロックからデータをリードした累積リード回数が格納される。リード回数は、半導体記憶装置１００Ａによりデータがリードされる度に累積的にカウントされ、累積的にカウントされたカウント値がリード回数欄５０３に格納される。
【００５２】
さらに消去回数欄５０４には、ブロックからデータを消去した累積消去回数が格納される。消去回数は、半導体記憶装置１００Ａによりデータが消去される度に累積的にカウントされ、累積的にカウントされたカウント値が消去回数欄５０４に格納される。
【００５３】
劣化度欄５０５には、ブロックの劣化度を示す値が格納される。劣化度は、例えば単に上述の消去回数であってもよいし、後述の第２の実施の形態で述べるように障害ビット数分布に基づいて算出される値としてもよい。
【００５４】
また１日当たりの平均リード回数欄５０６には、１日当たりの平均リード回数、すなわちリード頻度が格納される。１日当たりの平均リード回数は、プロセッサ１１５Ａにより算出される値であり、まずデータ記憶日時欄５０２からデータ記憶日時が取得され、現在日時から取得されたデータ記憶日時を差し引いてデータ記憶後の経過時間が取得される。そしてリード回数欄５０３から累積リード回数が取得され、取得された累積リード回数を経過時間で割って算出された値が１日当たりのリード回数とされる。なおここでは１日単位でリード頻度を管理する例について示したがこれに限らず、例えば１時間単位や１週間単位でリード頻度を管理するとしてもよく、いかなる単位であっても特定の記憶領域からのリード頻度を示す値であればよい。
【００５５】
さらに信頼性維持期間欄５０７には、ブロックにデータが記憶された後、そのデータの信頼性を維持して記憶しておくことが可能であると予測される予測期間が格納される。ここに格納される値は、後述の信頼性維持期間表６００（図６参照）に基づいて取得される。
【００５６】
従って図５の場合、例えばブロック番号が「１」のブロックは、データが記憶された日時は「２０１０／０８／２０」であり、現在までにこのブロックからデータがリードされた回数は「５０００回」であり、また現在までにこのブロックからデータが消去された消去回数は「１９８３回」であることが示されている。またこのブロックの劣化度は「３５００」であり、１日当たりの平均リード回数は「０回」（１０００回未満）であり、このブロックに記憶されたデータの信頼性維持期間は「８０日」であることが示されている。
【００５７】
図６は、半導体記憶装置１００ＡのＲＡＭ１１３に記憶された管理情報のうち、信頼性維持期間表６００を示す。信頼性維持期間表６００は、劣化度及び１日当たりの平均リード回数に基づいて一意の信頼性維持期間を決定するために用いられる。なお決定した信頼性維持期間は、上述のデータ保持期間管理情報５００（図５参照）の信頼性維持期間欄５０７に格納される。
【００５８】
信頼性維持期間表６００は、劣化度欄６０１、１日当たりの平均リード回数欄６０２及び信頼性維持期間欄６０３から構成される。
【００５９】
劣化度欄６０１には、ブロックの劣化度を示す値が格納され、１日当たりの平均リード回数欄６０２には、１日当たりの平均リード回数が格納される。また信頼性維持期間欄６０３には、半導体記憶装置１００Ａに搭載するフラッシュメモリの種別や特性に応じて予め定められた信頼性維持期間が格納される。信頼性維持期間表６００によれば、劣化度欄６０１から１つの劣化度を特定し、かつ、１日当たりの平均リード回数欄６０２から１つのリード回数を特定することにより、信頼性維持期間欄６０３から一意の信頼性維持期間を特定することができる。
【００６０】
従って図６の場合、例えば劣化度が「２０００」であり、１日当たりの平均リード回数が「１０００回」（０〜１０００回未満）であるブロックは、これら劣化度及びリード回数の交わる値が「５０日」であるから、信頼性維持期間は「５０日」であることが示されている。
【００６１】
ここで、信頼性維持期間欄６０３に格納される信頼性維持期間は、採用するフラッシュメモリの種別や各特性に応じて変化するため、事前に記憶媒体として採用するフラッシュメモリのリテンション特性及びリードディスターブ特性を測定しておき、測定結果である障害ビット数の増加傾向を反映させたものが用いられる。例えば、２０ビット（bit）のＥＣＣ訂正能力を持つ半導体記憶装置１００Ａにおいて、平均障害ビット数が５ビットを信頼性基準における許容限界ビット数とした場合、事前のフラッシュメモリテストにて劣化度及び１日当たりの平均リード回数の条件ごとに、ブロックにて測定された平均障害ビット数が５ビットまで増加する期間が計測され、計測された期間が信頼性維持期間として用いられる。
【００６２】
このように、信頼性維持期間欄６０３に格納される信頼性維持期間は、データに対して要求する信頼性に応じて自由に決定することができ、信頼性維持期間欄６０３の値を適宜変更することで、半導体記憶装置１００Ａによるデータ保持の信頼性を自由に変更することができる。なお本実施の形態では、半導体記憶装置１００Ａの稼働前に、装置に搭載する予定のフラッシュメモリのリテンション特性及びリードディスターブ特性を予め測定しておき、その測定結果に基づいて信頼性維持期間欄６０３の値を決定するとしたがこれに限らず、半導体記憶装置１００Ａの動作中に取得した障害ビット数に基づいて、信頼性維持期間欄６０３の値を逐次更新するとしてもよい。例えば半導体記憶装置１００Ａの許容限界ビット数が平均５ビットであり、信頼性維持期間中のリードにて平均５ビットの障害ビット数が検出された場合、事前に決定した信頼性維持期間欄６０３の値が示す障害ビット数の増加傾向よりもデータ保持特性の悪い記憶領域が存在するため、信頼性を向上させるべく信頼性維持期間欄６０３の値を減らして信頼性維持期間を短縮するように更新するとしてもよい。
【００６３】
また、半導体記憶装置１００Ａに搭載するフラッシュメモリの記憶領域の一部に、信頼性維持期間算出用の指標領域を作成しておき、その値に基づいて信頼性維持期間表６００の値を決定するとしてもよい。例えば半導体記憶装置１００Ａの初期動作時に、フラッシュメモリごとに一部のブロックに対して所定回数のライトと消去を実行し、あえて劣化させた障害ビット指標ブロック群を作成しておく。そして経過時間ごとに、障害ビット指標ブロック群より障害ビットを測定し、障害ビットの増加傾向から信頼性維持期間欄６０３の値をフラッシュメモリごとに決定する。このようにフラッシュメモリごとの障害ビット指標ブロック群から取得した障害ビットの増加傾向を参照することより信頼性維持期間欄６０３の値を決定することで、フラッシュメモリごとの品質差に対応する事が可能となる。
【００６４】
また、本実施の形態では、信頼性維持期間欄６０３には事前のテスト又は動作中のテストによって得られる値が格納されるとしたが必ずしもこれに限らず、数式によって算出される値が格納されるとしてもよい。例えば事前のフラッシュメモリテストにて測定したブロックの劣化度及び１日当たりの平均リード回数の条件ごとの測定値に基づいて、劣化度及び１日当たりの平均リード回数を変数とした二変数の関数を用意し、この関数を用いて信頼性維持期間を算出し、算出した値を格納するとしてもよい。
【００６５】
また、図６の１日当たりの平均リード回数欄６０２は、各項目の分割単位として１０００回、１００００回、２００００回としたがこれに限らず、半導体記憶装置１００Ａにおいて信頼性維持期間を高精度に取得する必要があれば、各項目の分割単位をより細分化してもよい。また劣化度における各項目の分割単位も同様に、より細分化してもよい。信頼性維持期間表６００の精度は、半導体記憶装置１００Ａに要求される信頼性、記憶媒体として採用するフラッシュメモリの製造プロセス、ＳＬＣ（Single Level Cell）、ＭＬＣ（Multi Level Cell）及びＴＬＣ（Triple Level Cell）といった条件により変更することができる。
【００６６】
なお、図６の信頼性維持期間表６００を参照して信頼性維持期間が取得される際、対象ブロックの１日当たりの平均リード回数が参照されるが、実際の１日当たりの平均リード回数が図６の１日当たりの平均リード回数の各値と完全に一致する必要はなく、図６の１日当たりの平均リード回数の分割単位の各値に合わせて四捨五入して参照すればよい。
【００６７】
図７は、半導体記憶装置１００ＡのＲＡＭ１１３に記憶された管理情報のうち、リフレッシュ管理情報７００を示す。リフレッシュ管理情報７００は、リフレッシュ実施予定日を管理するために用いられ、リフレッシュ日時欄７０１、リフレッシュ対象ブロック数欄７０２及びリフレッシュ対象ブロック番号欄７０３から構成される。
【００６８】
リフレッシュ日時欄７０１には、将来リフレッシュを実行する予定の日時が格納され、リフレッシュ対象ブロック数欄７０２には、リフレッシュを実行するリフレッシュ対象ブロックのブロック数が格納され、リフレッシュ対象ブロック番号欄７０３には、リフレッシュを実行するリフレッシュ対象ブロックのブロック番号が格納される。
【００６９】
従って図７の場合、例えば将来「２０１０／０９／１１」にリフレッシュを実行する予定であり、この日時にリフレッシュを実行するリフレッシュ対象ブロックのブロック数は「４１２４１」個であり、リフレッシュ対象ブロックのブロック番号は「３２４４９」、「８７４２」、「２」、…であることが示されている。
【００７０】
（１−４）各種処理の処理手順
図８は、半導体記憶装置１００Ａのプロセッサ１１５Ａにより実行されるライト処理の処理手順を示す。プロセッサ１１５Ａは、上位装置１０１からデータ及びライト先ＬＢＡを含むライト要求を受信すると、この図８に示すライト処理を開始する。
【００７１】
そしてプロセッサ１１５Ａは、このライト処理を開始すると、まず上位装置１０１からのライト要求が新規ライト又は追記ライトの何れであるかを判断する（Ｓ１）。ここでいう新規ライトとは、データが消去されている状態のブロックに対してデータを新規に記憶することをいい、一般に、先頭ページから順番にデータをライトする処理をいう。一方追記ライトとは、既にデータが記憶されている状態のページを持つブロックに対して途中のページからデータを追加して記憶することをいう。
【００７２】
プロセッサ１１５Ａは、ステップＳ１において上位装置１０１からのライト要求が新規ライトであると判断すると、ライト対象ブロックを取得する（Ｓ２）。より詳細には、プロセッサ１１５Ａは半導体記憶装置１００Ａが管理する未書込みブロックの登録リスト（以下、これを「未書込みブロックプール」と呼ぶ）から任意のブロックをライト対象ブロックとして取得する。またこの時、プロセッサ１１５Ａはライト要求に含まれるライト先ＬＢＡとステップＳ２で取得したライト対象ブロックのＰＢＡとを対応付ける。その後プロセッサ１１５Ａは、対応付けたＰＢＡにより指定されるページに対してデータをライトすることになる。
【００７３】
プロセッサ１１５Ａは、ステップＳ２で取得したライト対象ブロックの先頭ページに対し、上位装置１０１からのデータをライトする（Ｓ３）。その後プロセッサ１１５Ａは、上位装置１０１にライト完了報告を通知する。
【００７４】
次いでプロセッサ１１５Ａは、ＲＡＭ１１３に格納されているデータ保持期間管理情報５００を参照して、データをライトしたブロックの劣化度を取得する（Ｓ４）。
【００７５】
そしてプロセッサ１１５Ａは、ＲＡＭ１１３に格納されている信頼性維持期間表６００を参照して、１日当たりの平均リード回数を０回としたときに、ステップＳ４で取得した劣化度に基づいて一意に定まる信頼性維持期間を取得する（Ｓ５）。なおライト直後のブロックの１日当たりの平均リード回数は０回であることから、ここではステップＳ４で取得した劣化度と平均リード回数０回とに基づいて、信頼性維持期間を取得することができる。
【００７６】
次いでプロセッサ１１５Ａは、ＲＡＭ１１３に格納されているデータ保持期間管理情報５００のデータ記憶日時欄５０２、１日当たりの平均リード回数欄５０６及び信頼性維持期間欄５０７のそれぞれに、ステップＳ２で取得したライト対象ブロックに対応するデータ記憶日時、１日当たりの平均リード回数及び信頼性維持期間を格納する（Ｓ６）。なおその他の欄（５０３〜５０５）には、この新規ライト処理前の状態の値が既に格納されている。
【００７７】
次いでプロセッサ１１５Ａは、ステップＳ５で取得した信頼性維持期間を現在日時に加えて、これをリフレッシュ実施予定日として算出する（Ｓ７）。そしてプロセッサ１１５Ａは、算出したリフレッシュ実施予定日と同一の日時をリフレッシュ管理情報７００のリフレッシュ日時欄７０１から抽出し、抽出した日時に対応するリフレッシュ対象ブロック数欄７０２のブロック数を１個分加算する。またプロセッサ１１５Ａは、抽出した日時に対応するリフレッシュ対象ブロック番号欄７０３に、ステップＳ２で取得したライト対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュ対象ブロック数欄７０２からブロック数を１個分減算するとともに、リフレッシュ対象ブロック番号欄７０３からライト対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ａは、リフレッシュ管理情報７００を更新して（Ｓ７）、ライト処理を終了する。
【００７８】
これに対してプロセッサ１１５Ａは、ステップＳ２において上位装置１０１からのライト要求が追記ライトであると判断すると、追記対象ブロックの該当ページにライト要求に含まれるデータをライトする（Ｓ８）。その後プロセッサ１１５Ａは、上位装置１０１にライト完了報告を通知して、ライト処理を終了する。
【００７９】
図９は、半導体記憶装置１００Ａのプロセッサ１１５Ａにより実行されるリード処理の処理手順を示す。プロセッサ１１５Ａは、上位装置１０１からリード先ＬＢＡを含むリード要求を受信すると、この図９に示すリード処理を開始する。
【００８０】
まずプロセッサ１１５Ａは、上位装置１０１からのリード要求に含まれるリード先ＬＢＡをＰＢＡに変換し、変換したＰＢＡにより指定されるリード対象ページからデータをリードする。そしてプロセッサ１１５Ａは、リードしたデータを上位装置１０１に転送する（Ｓ１１）。
【００８１】
次いでプロセッサ１１５Ａは、データ保持期間管理情報５００のリード回数欄５０３からリード対象ブロックのリード回数を取得し、取得した値にリード回数を加算した後、加算したリード回数をリード回数欄５０３に格納してデータ保持期間管理情報５００を更新する（Ｓ１２）。
【００８２】
次いでプロセッサ１１５Ａは、データ保持管理情報５００のデータ記憶日時欄５０２からリード対象ブロックのデータ記憶日時を取得し、取得したデータ記憶日時と現在日時との差からデータ記憶後の経過時間を算出する（Ｓ１３）。
【００８３】
次いでプロセッサ１１５Ａは、ステップＳ１２で更新したリード回数をステップＳ１３で算出した経過時間で割って、１日当たりの平均リード回数を新たに算出する（Ｓ１４）。
【００８４】
次いでプロセッサ１１５Ａは、データ保持期間管理情報５００の１日当たりの平均リード回数欄５０６からリード対象ブロックの１日当たりの平均リード回数を取得し、取得した１日当たりの平均リード回数と、ステップＳ１４で新たに算出した１日当たりの平均リード回数との差の絶対値を変化量として算出する（Ｓ１５）。
【００８５】
そしてプロセッサ１１５Ａは、ステップＳ１５で算出した変化量が予め定められた閾値以上であるか否かを判断する（Ｓ１６）。なおここで用いる閾値は、信頼性維持期間表６００（図６参照）の１日当たりの平均リード回数欄６０２の区分単位に基づいて定まる値とする。例えば図６の場合、１日当たりの平均リード回数欄６０２の区分単位は１００００回単位であるから、閾値は「１００００」となる。
【００８６】
プロセッサ１１５Ａは、この判断で肯定結果を得ると、信頼性維持期間を取得するために用いた１日当たりの平均リード回数が大きく変化したものと判断してステップＳ１７に移行する。
【００８７】
すなわちプロセッサ１１５Ａは、信頼性維持期間表６００を参照して、ステップＳ１４で新たに算出した１日当たりの平均リード回数及び劣化度を用いて新たな信頼性維持期間を取得する。そしてプロセッサ１１５Ａは、取得した新たな信頼性維持期間及びステップＳ１４で新たに算出した１日当たりの平均リード回数をデータ保持期間管理情報５００のリード対象ブロックに対応する信頼性維持期間欄５０７及び１日当たりの平均リード回数欄５０６にそれぞれ格納して、データ保持期間管理情報５００を更新する（Ｓ１７）。
【００８８】
次いでプロセッサ１１５Ａは、ステップＳ１７で取得した新たな信頼性維持期間を現在日時に加算して、これをリフレッシュ実施予定日として算出する（Ｓ１８）。そしてプロセッサ１１５Ａは、算出したリフレッシュ実施予定日と同一日時をリフレッシュ管理情報７００のリフレッシュ日時欄７０１から抽出し、抽出した日時に対応するリフレッシュ対象ブロック数欄７０２に格納されるブロック数を１個分加算するとともに、リフレッシュ対象ブロック番号欄７０３にリード対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュ対象ブロック数欄７０２からブロック数を１個分減算するとともに、リフレッシュ対象ブロック番号欄７０３からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ａは、リフレッシュ管理情報７００を更新して（Ｓ１８）、リード処理を終了する。
【００８９】
これに対してプロセッサ１１５Ａは、ステップＳ１６で否定結果を得ると、現在の信頼性維持期間に大きな変化は生じていないと判断し、リフレッシュ管理情報７００を更新することなく、リード処理を終了する。
【００９０】
一方、図１０は、半導体記憶装置１００Ａのプロセッサ１１５Ａにより実行されるリフレッシュ処理の処理手順を示す。プロセッサ１１５Ａは、上位装置１０１からのアクセス要求とリフレッシュ処理とが競合して装置性能が低下することを防止するため、上位装置１０１からのアクセス要求がないタイミングで定期的にこの図１０に示すリフレッシュ処理を開始する。
【００９１】
プロセッサ１１５Ａは、このリフレッシュ処理を開始すると、まずリフレッシュ管理情報７００のリフレッシュ日時欄７０１から現在日時と同一日時を抽出し、抽出した日時に対応するリフレッシュ対象ブロック数をリフレッシュ対象ブロック数欄７０２から取得する（Ｓ２１）。
【００９２】
次いでプロセッサ１１５Ａは、ステップＳ２１で取得したリフレッシュ対象ブロック数が０であるか否かを判断する（Ｓ２２）。
【００９３】
プロセッサ１１５Ａは、この判断で肯定結果を得ると、現在日時においてリフレッシュを実行する必要はないものと判断して、リフレッシュ処理を終了する。
【００９４】
これに対してプロセッサ１１５Ａは、ステップＳ２２で否定結果を得ると、リフレッシュ管理情報７００のリフレッシュ対象ブロック番号欄７０３から現在日時に対応するリフレッシュ対象ブロック番号を１つ取得する（Ｓ２３）。
【００９５】
次いでプロセッサ１１５Ａは、リフレッシュを実行する場合にリフレッシュ対象ブロックに格納されているデータを他のブロックに書き写す処理を行うが、そのときのコピー先としてリフレッシュ先ブロックを未書込みブロックプールから取得する（Ｓ２４）。
【００９６】
次いでプロセッサ１１５Ａは、リフレッシュ対象ブロックの全ページのうち、上位装置１０１のＬＢＡと対応付がなされている全ての有効ページのデータを取得する（Ｓ２５）。より詳細には、プロセッサ１１５Ａはフラッシュメモリインターフェース１１７に搭載されたＥＣＣ機能によりリフレッシュ対象ブロックのデータについて障害ビットを修正し、障害ビット数が０となったリフレッシュ対象ブロックのデータをデータバッファ１１６に読み出す。
【００９７】
続いてプロセッサ１１５Ａは、ステップＳ２５で取得したリフレッシュ対象ブロックのデータをステップＳ２４で取得したリフレッシュ先ブロックにライトする（Ｓ２６）。なおこのときのライト処理は上述のライト処理（Ｓ１〜Ｓ７参照）と同様である。すなわちプロセッサ１１５Ａは、リフレッシュ先ブロックをリフレッシュ対象ブロックとしてライト処理を行い、このリフレッシュ先ブロックをデータ保持期間管理情報５００及びリフレッシュ管理情報７００に反映させて、これらの管理情報を更新する。
【００９８】
さらにプロセッサ１１５Ａは、上位装置１０１のＬＢＡをリフレッシュ先ブロックに対応付ける（Ｓ２７）。この対応付けにより、上位装置１０１はリフレッシュ実行後でもリフレッシュ実行前と同一のＬＢＡでリフレッシュ先ブロックのデータにアクセスすることができる。
【００９９】
次いでプロセッサ１１５Ａは、ステップＳ２３で取得したリフレッシュ対象ブロックのデータを消去して、このデータを消去したリフレッシュ対象ブロックを未書込みブロックプールに登録する（Ｓ２８）。またプロセッサ１１５Ａは、リフレッシュ管理情報７００のリフレッシュ日時欄７０１から現在日時を抽出し、抽出した現在日時に対応するリフレッシュ対象ブロック数欄７０２からリフレッシュ対象ブロック数を１個分減算する。また抽出した現在日時に対応するリフレッシュ対象ブロック番号欄７０３からリフレッシュ対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ａは、リフレッシュ管理情報７００を更新する（Ｓ２８）。
【０１００】
プロセッサ１１５Ａは、上位装置１０１からのアクセス要求があるか否かを判断し（Ｓ２９）、この判断で肯定結果を得ると、上位装置１０１からのアクセス要求を優先して、リフレッシュ処理を一時終了する。
【０１０１】
これに対してプロセッサ１１５Ａは、ステップＳ２９の判断で否定結果を得ると、ステップＳ２２に移行して、リフレッシュの実行が必要な他のブロックについてリフレッシュ処理を継続する。
【０１０２】
（１−５）第１の実施の形態の効果
以上のように、本実施の形態によれば、データ保持期間管理情報５００、信頼性維持期間表６００及びリフレッシュ管理情報７００により、ブロックごとに適宜リフレッシュ処理を実行することができ、不要なリフレッシュを抑制することができる。またリフレッシュの実行に際しては上位装置１０１からのアクセス要求を優先するため、リフレッシュの実行による装置性能の低下を防止することができる。
【０１０３】
（２）第２の実施の形態
（２−１）半導体記憶装置の構成
図１において、１００Ｂは全体として第２の実施の形態による半導体記憶装置１００Ｂを示す。この半導体記憶装置１００Ｂは、信頼性維持期間の妥当性を検査する点を除いて第１の実施の形態による半導体記憶装置１００Ａと同様に構成されている。より詳細には、第２の実施の形態では、ブロック内の全ページの障害ビット数を実際に読み出して測定し、測定結果に基づいて信頼性維持期間の妥当性を検査する。以下、このブロックに対する障害ビットの悉皆測定を「ベリファイ」と呼ぶ。信頼性維持期間内においてブロックごとにベリファイを実行することにより、予測される障害ビット数の増加傾向と異なるブロックを検知することができ、障害ビット数の増加が予測より急峻であっても、ＥＣＣ訂正不能障害となる前にリフレッシュを実行することができる。
【０１０４】
（２−２）各種管理情報の構成
図１１は、半導体記憶装置１００ＢのＲＡＭ１１３に記憶された管理情報のうち、ベリファイ管理情報８００を示す。ベリファイ管理情報８００は、ベリファイ実施予定日を管理するために用いられ、ベリファイ日時欄８０１、ベリファイ対象ブロック数欄８０２及びベリファイ対象ブロック番号欄８０３から構成される。
【０１０５】
ベリファイ日時欄８０１には、将来ベリファイを実行する予定の日時が格納され、ベリファイブロック数欄８０２には、ベリファイを実行する対象ブロックのブロック数が格納される。またベリファイ対象ブロック番号欄８０３には、ベリファイを実行する対象ブロックのブロック番号が格納される。
【０１０６】
従って図１１の場合、例えば将来「２０１０／０８／２１」にベリファイを実行する予定であり、この日時にベリファイを実行する対象ブロックのブロック数は「２１２４１」個であり、ブロック番号は「３２４４９」、「８７４２」、「２」、…であることが示されている。
【０１０７】
ここで、上述の図１１に示したベリファイ管理情報８００を用いてベリファイを実行する場合以外にも、リード時に取得した障害ビット数が予め定めておいた予測障害ビット数（閾値）よりも特異に多い場合には、このリード対象のブロックを「特異ブロック」として判定し、判定した特異ブロックに対してベリファイを実行するとしてもよい。特異ブロックの判定の際に用いる閾値は、ブロックの使用条件のうち、劣化度、１日当たりの平均リード回数及びデータ記憶後の経過時間の３つに基づいて定めるものとする。例えば劣化度の高いブロックに対しては、劣化度の低いブロックと比較して障害ビット数が多いことからも明らかなように、閾値を高く定める。また１日当たりの平均リード回数の少ないブロックに対しては、１日当たりの平均リード回数の多いブロックと比較して障害ビット数が少ないことから、閾値を低く定める。またデータ記憶後の経過時間が長いブロックに対しては、経過時間が短いブロックと比較して障害ビット数が多いことから、閾値を高く定める。このようにブロックに対する３つの条件を組み合わせてブロックの使用条件ごとに閾値を定める場合、後述の障害ビット数閾値表（図１２参照）が用いられる。
【０１０８】
図１２は、半導体記憶装置１００ＢのＲＡＭ１１３に記憶された管理情報のうち、障害ビット数閾値表９００を示す。障害ビット数閾値表９００は、上述の特異ブロックを判定する際に用いる閾値を決定するために用いられる。
【０１０９】
障害ビット数閾値表９００は、劣化度欄９０１、１日当たりの平均リード回数欄９０２、経過時間欄９０３及び閾値欄９０４から構成される３次元表である。
【０１１０】
劣化度欄９０１には、ブロックの劣化度を示す値が格納され、１日当たりの平均リード回数欄９０２には、１日当たりの平均リード回数が格納される。また経過時間欄９０３には、ブロックにデータを記憶してから現在までの経過時間が格納され、閾値欄９０４には、特異ブロックの判定の際に用いる閾値（障害ビット数）が格納される。
【０１１１】
従って図１２の場合、例えば劣化度が「２０００」であり、１日当たりの平均リード回数が「１０００回」であり、経過時間が「０日」であるブロックに対する閾値は、「７ｂｉｔ」であることが示されている。なおブロックの劣化度、１日当たりの平均リード回数及び経過時間が図１２に示した障害ビット数閾値表９００の各項目と完全に一致しない場合には、障害ビット数閾値表９００の各項目に一致するように四捨五入や近傍値を算出することで、ブロックに対する閾値を取得することができる。
【０１１２】
ここで、閾値欄９０４に格納される閾値は、採用するフラッシュメモリの種別や各特性に応じて変化するため、事前に記憶媒体として採用するフラッシュメモリのリテンション特性及びリードディスターブ特性を測定しておき、測定結果である障害ビット数の増加傾向を反映させたものが用いられる。例えば、平均障害ビット数から１０ビット多く障害ビットが生じたブロックを特異ブロックの判断基準とする場合、平均障害ビット数が３ビットとなるブロックの使用条件（劣化度、１日当たりの平均リード回数及びデータ記憶後の経過時間）において１３ビットが特異ブロックの判断閾値として用いられる。
【０１１３】
また事前のフラッシュメモリテストにより、劣化度、１日当たりの平均リード回数及びデータ記憶後の経過時間の個々の条件ごとに、障害ビット数が生じる確率分布を測定しておき、その確率分布を閾値欄９０４に格納する閾値に用いるとしてもよい。
【０１１４】
なお閾値欄９０４の各値は、装置に対して要求する信頼性維持期間の精度に基づいて決定され、特異ブロックの判定に用いる閾値を変更することで半導体記憶装置１００Ｂによるデータ保持の信頼性の精度を向上することができる。また本実施の形態では、閾値欄９０４には閾値が格納され、特異ブロックの判定の際に用いる閾値はこの閾値欄９０４から取得されるとしたが必ずしもこれに限らず、数式によって算出される値が特異ブロックの判定の際に用いられるとしてもよい。例えば事前のフラッシュメモリテストの測定において、劣化度、１日平均当たりの平均リード回数及びデータ記憶後の経過時間を組み合わせた条件ごとに生じた障害ビット数を測定し、その測定値に基づいて各条件変数とした三変数の関数を作成してＲＡＭ１１３に格納しておくとしてもよい。そして特異ブロックの判定時には、対象ブロックの劣化度、１日平均当たりの平均リード回数及びデータ記憶後の経過日時を事前に作成した関数に代入して閾値を算出するとしてもよい。
【０１１５】
また図１２の１日当たりの平均リード回数欄９０２の各項目の分割単位として１０００回、１００００回、２００００回としたがこれに限らず、半導体記憶装置１００Ｂにおいて特異ブロックの判定精度を高める場合、１日当たりの平均リード回数の各項目の分割単位をより細分化した障害ビット数閾値表９００を作成すればよい。また劣化度における各項目の分割単位も同様に、より細分化してもよい。障害ビット数閾値表９００の精度は、半導体記憶装置１００Ｂに要求される信頼性、記憶媒体として採用するフラッシュメモリの製造プロセスやＳＬＣ（Single Level Cell）、ＭＬＣ（Multi Level Cell）、ＴＬＣ（Triple Level Cell）といった条件により変更することができる。
【０１１６】
（２−３）各種処理の処理手順
図１３は、半導体記憶装置１００Ｂのプロセッサ１１５Ｂにより実行されるライト処理の処理手順を示す。プロセッサ１１５Ｂは、上位装置１０１からデータ及びライト先ＬＢＡを含むライト要求を受信すると、この図１３に示すライト処理を開始する。
【０１１７】
ステップＳ３１〜Ｓ３７及びＳ３９における処理は、図８のステップＳ１〜Ｓ８における処理と同様であるため、ここでの説明は省略する。
【０１１８】
プロセッサ１１５Ｂは、ステップＳ３８において、ステップＳ３５で取得した信頼性維持期間の半分の期間を現在日時に加算し、これをベリファイ実施予定日として算出する（Ｓ３８）。そしてプロセッサ１１５Ｂは、算出したベリファイ実施予定日と同一の日時をベリファイ管理情報８００のベリファイ日時欄８０１から抽出し、抽出した日時に対応するベリファイ対象ブロック数欄８０２のブロック数を１個分加算する。またプロセッサ１１５Ｂは、抽出した日時に対応するベリファイ対象ブロック番号欄８０３に、ステップＳ３２で取得したライト対象ブロックのブロック番号を格納する。また同時に、これまで予定していたベリファイ実施予定日に対応するベリファイ対象ブロック数欄８０２からブロック数を１個分減算するとともに、ベリファイ対象ブロック番号欄８０３からライト対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ａは、ベリファイ管理情報８００を更新して（Ｓ３８）、ライト処理を終了する。
【０１１９】
なおここでは信頼性維持期間の半分の期間を現在日時に加えてベリファイ実施予定日を算出するとしたがこれに限らず、ベリファイ実施予定日は信頼性維持期間内であればよい。例えば信頼性維持期間から３日減らした日数を現在日時に加え、これをベリファイ実施予定日としてもよい。この場合、リフレッシュ実施予定日の３日前に、ベリファイが実行されることになる。
【０１２０】
一方、図１４は、半導体記憶装置１００Ａのプロセッサ１１５Ｂにより実行されるリード処理の処理手順を示す。プロセッサ１１５Ｂは、上位装置１０１からリード先ＬＢＡを含むリード要求を受信すると、この図１４に示すリード処理を開始する。
【０１２１】
ステップＳ４１及びＳ４３〜Ｓ４９における処理は、図９のステップＳ１１〜Ｓ１８における処理と同様であるため、ここでの説明は省略する。
【０１２２】
プロセッサ１１５Ｂは、ステップＳ４２において、ステップＳ４１でリードした際に取得したリード対象ページの障害ビット数が図１２の障害ビット数閾値表９００から取得した閾値以下であるか否かを判断する（Ｓ４２）。図１２の障害ビット数閾値表９００から閾値を取得する処理として、まずプロセッサ１１５Ｂは、データ保持期間管理情報５００からリード対象ブロックのデータ記憶後の経過時間、リード回数及び劣化度を取得し、次いで取得したリード回数をデータ記憶後の経過時間で割って、１日当たりのリード平均リード回数を算出する。そしてプロセッサ１１５Ｂは、障害ビット閾値表９００から劣化度、１日当たりの平均リード回数及びデータ記憶後の経過時間のそれぞれに該当する障害ビット数を閾値として取得する。
【０１２３】
プロセッサ１１５Ｂは、この判断で否定結果を得ると、このリード対象ページを含むブロックを障害ビット数が多い特異ブロックであると判断し、この特異ブロックに対して障害ビットの発生状況を検査するためにベリファイを実行する。なおこの特異ブロックについては、信頼性維持期間の算出及びリフレッシュ実施予定日の算出は行われない。
【０１２４】
これに対してプロセッサ１１５Ｂは、ステップＳ４２の判断で肯定結果を得ると、ステップＳ４３に移行して、上述の図９で説明したリード処理を行う。
【０１２５】
このようにベリファイは、ベリファイ管理情報８００により定められた日時に計画的に行われる場合とステップＳ４２で特異ブロックを検出した場合の何れの場合にも行われる。
【０１２６】
一方、プロセッサ１１５Ｂは、ステップＳ５０において、ステップＳ４８で取得した新たな信頼性維持期間の半分の期間を現在日時に加算して、これをベリファイ実施予定日として算出する（Ｓ５０）。そしてプロセッサ１１５Ｂは、算出したベリファイ実施予定日と同一日時をベリファイ管理情報８００のベリファイ日時欄８０１から抽出し、抽出した日時に対応するベリファイ対象ブロック数欄８０２に格納されるブロック数を１個分加算するとともに、ベリファイ対象ブロック番号欄８０３にリード対象ブロックのブロック番号を格納する。また同時に、これまで予定していたベリファイ実施予定日に対応するベリファイブロック数欄８０２からリード対象ブロック数を１個分減算するとともに、ベリファイ対象ブロック番号欄８０３からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ｂは、ベリファイ管理情報８００を更新して（Ｓ５０）、リード処理を終了する。
【０１２７】
他方、図１５は、半導体記憶装置１００Ｂのプロセッサ１１５Ｂにより実行されるベリファイ制御処理の処理手順を示す。プロセッサ１１５Ｂは、ベリファイの実行と上位装置１０１からのアクセス要求とが競合して装置性能が低下することを防止するため、上位装置１０１からのアクセス要求がないタイミングで定期的にこのベリファイ制御処理を開始する。
【０１２８】
そしてプロセッサ１１５Ｂは、まずベリファイ管理情報８００のベリファイ日時欄８０１から現在日時と同一日時を抽出し、抽出した日時に対応するベリファイ対象ブロック数欄８０２からベリファイ対象ブロック数を取得する（Ｓ５１）。
【０１２９】
次いでプロセッサ１１５Ｂは、上述のステップＳ５１で取得したベリファイ対象ブロック数が０であるか否か判断する（Ｓ５２）。
【０１３０】
プロセッサ１１５Ｂは、この判断で肯定結果を得ると、ベリファイの実行が必要なブロックはないものと判断して、このベリファイ制御処理を終了する。
【０１３１】
これに対してプロセッサ１１５Ｂは、ステップＳ５２の判断で否定結果を得ると、ベリファイ管理情報８００のベリファイ対象ブロック番号欄８０３からベリファイ対象ブロックのブロック番号を１つ取得する（Ｓ５３）。
【０１３２】
そしてプロセッサ１１５Ｂは、ステップＳ５３で取得したブロック番号のブロックに対してベリファイを実行する（Ｓ５４）。ベリファイ処理についての詳細は後述する（図１６参照）。
【０１３３】
次いでプロセッサ１１５Ｂは、上位装置１０１からのアクセス要求があるか否かを判断し（Ｓ５５）、この判断で肯定結果を得ると、上位装置１０１からのアクセス要求を優先して、ベリファイ制御処理を一時終了する。
【０１３４】
これに対してプロセッサ１１５Ｂは、ステップＳ５５の判断で否定結果を得ると、ステップＳ５２に移行して、ベリファイの実行が必要な他のブロックについてベリファイ制御処理を継続する。なお上位装置１０１からのアクセス要求が連続し、ベリファイ管理情報８００に格納されたブロックに対して所定の日時以内にベリファイを実行することができないと判断した場合には、上位装置１０１からのアクセス要求を停止してベリファイ制御処理を優先するとしてもよい。
【０１３５】
図１６は、半導体記憶装置１００Ｂのプロセッサ１１５Ｂにより実行されるベリファイ処理の処理手順を示す。プロセッサ１１５Ｂは、特異ブロックを検出した場合（図１４：Ｓ４２参照）又はベリファイ制御処理においてベリファイを実行するタイミングであると判断した場合（図１５；Ｓ５４参照）、このベリファイ処理を開始する。
【０１３６】
まずプロセッサ１１５Ｂは、ベリファイ対象ブロック内の全ページをリードして各ページのＥＣＣ／ＣＷごとの障害ビット数を取得するとともに、取得した障害ビット数からブロック内における障害ビット数分布及び最大障害ビット数を取得する（Ｓ６１）。なおプロセッサ１１５Ｂは、フラッシュメモリインターフェース１１７により障害ビット数を取得するものとし、取得した障害ビット数はＲＡＭ１１３に格納されるものとする。
【０１３７】
次いでプロセッサ１１５Ｂは、ステップＳ６１で取得した最大障害ビット数が予め定められた閾値以下であるか否かを判断する（Ｓ６２）。ここでの閾値は、半導体記憶装置１００Ｂ内で許容される最大障害ビット数である。
【０１３８】
プロセッサ１１５Ｂは、この判断で否定結果を得ると、このベリファイ対象ブロックは障害ビット数が多く記憶領域として使用することができないものと判断し、すぐにリフレッシュを実行するとともにその後使用することができない「使用不可ブロック」として管理する。
【０１３９】
これに対してプロセッサ１１５Ｂは、ステップＳ６２の判断で肯定結果を得ると、このベリファイ対象ブロックは障害ビット数が少なく記憶領域として継続して使用することができ、すぐにリフレッシュを実行する必要がないものと判断して、最適な劣化度を決定するために後述のステップＳ６３に移行する。
【０１４０】
プロセッサ１１５Ｂは、ステップＳ６１で取得した障害ビット数分布に基づいて劣化度を決定し、決定した劣化度をデータ保持期間管理情報５００（図５参照）の劣化度欄５０５に格納して、このデータ保持期間管理情報５００を更新する（Ｓ６３）。なおこの障害ビット数分布に基づいて劣化度を決定する方法については後述する（図１７参照）。
【０１４１】
次いでプロセッサ１１５Ｂは、ステップＳ６３で決定した新たな劣化度がステップＳ６３で更新する前のデータ保持期間管理情報５００に格納されていた劣化度と同一であるか否かを判断する（Ｓ６４）。
【０１４２】
プロセッサ１１５Ｂは、この判断で肯定結果を得ると、ベリファイ処理を終了する。これに対してプロセッサ１１５Ｂは、この判断で否定結果を得ると、新たな劣化度に基づいてリフレッシュ実施予定日を算出するために、ステップＳ６５に移行する。
【０１４３】
プロセッサ１１５Ｂは、データ保持期間管理情報５００のデータ記憶日時欄５０２及び１日当たりの平均リード回数欄５０６からデータ記憶日時及び１日当たりの平均リード回数を取得する（Ｓ６５）。
【０１４４】
次いでプロセッサ１１５Ｂは、ステップＳ６５で取得したデータ記憶日時を現在日時から差し引いて、ベリファイ対象ブロックのデータ記憶後の経過時間を算出する（Ｓ６６）。
【０１４５】
次いでプロセッサ１１５Ｂは、信頼性維持期間表６００（図６参照）を参照して、ステップＳ６３で決定した新たな劣化度及びステップＳ６５で取得した１日当たりの平均リード回数を用いて新たな信頼性維持期間を取得し、取得した新たな信頼性維持期間をデータ保持期間管理情報５００の信頼性維持期間欄５０７に格納して、データ保持期間管理情報５００を更新する（Ｓ６７）。
【０１４６】
次いでプロセッサ１１５Ｂは、ステップＳ６５で取得したデータ記憶日時にステップＳ６７で取得した信頼性維持期間を加算して、これをリフレッシュ実施予定日として算出する（Ｓ６８）。そしてプロセッサ１１５Ｂは、算出したリフレッシュ実施予定日と同一日時をリフレッシュ管理情報７００のリフレッシュ日時欄７０１から抽出し、抽出した日時に対応するリフレッシュブロック数欄７０２に格納されているブロック数を１個分加算するとともに、リフレッシュ対象ブロック番号欄７０３にベリファイ対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュブロック数欄７０２からブロック数を１個分減算するとともに、リフレッシュ対象ブロック番号欄７０３からベリファイ対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ｂは、リフレッシュ管理情報７００を更新した後（Ｓ６８）、ベリファイ処理を終了する。
【０１４７】
（２−４）障害ビット数分布及び障害ビット数分布指標の構成
図１７は、半導体記憶装置１００ＢのＲＡＭ１１３に格納された障害ビット数分布１０００と障害ビット数分布指標１００１及び１００２とを示す。障害ビット数分布１０００と障害ビット数分布指標１００１及び１００２とは、上述のベリファイ処理（図１６参照）において劣化度を算出するために用いられる。障害ビット数分布１０００は、上述のベリファイ処理のステップＳ６１で取得されるものであり、また障害ビット数分布指標１００１及び１００２は、予めＲＡＭ１１３に格納されているものであって、事前のフラッシュメモリテストにて劣化度、１日当たりの平均リード回数及びデータ記憶後の経過時間の条件ごとに障害ビット数分布を測定した結果に基づいて作成されたものである。
【０１４８】
障害ビット数分布１０００は、データ記憶後の経過時間が「２０日」であり、１日当たりの平均リード回数が「１０００回」であるベリファイ対象ブロックの障害ビット数分布を示している。障害ビット数分布１０００は、障害ビット数欄１０００Ａ及びＥＣＣ／ＣＷ欄１０００Ｂから構成され、障害ビット数欄１０００Ａには、障害ビットの数が０から一定数まで順次格納され、ＥＣＣ／ＣＷ欄１０００Ｂには、障害ビット数欄１０００Ａに格納された障害ビット数に対応するＥＣＣ／ＣＷの個数が格納される。
【０１４９】
従って図１７の場合、例えばベリファイ対象ブロック内に、障害ビットが生じていないＥＣＣ／ＣＷは「５００個」あり、また障害ビットが「１個」だけ生じているＥＣＣ／ＣＷは「２３０個」あり、また障害ビットが「２個」生じているＥＣＣ／ＣＷは「１２２個」存在することを示している。
【０１５０】
また障害ビット数分布指標１００１は、劣化度が「１０００」であり、データ記憶後の経過時間が「２０日」であり、１日当たりの平均リード回数が「１０００回」であるブロックの障害ビット数分布を示している。障害ビット数分布指標１００１は、上述の障害ビット数分布１０００と同様、障害ビット数欄１００１Ａ及びＥＣＣ／ＣＷ欄１００１Ｂから構成され、それぞれ障害ビット数及び対応するＥＣＣ／ＣＷの個数が格納される。
【０１５１】
従って図１７の場合、例えば劣化度が「１０００」のブロック内に、障害ビットが生じていないＥＣＣ／ＣＷは「７００個」あり、また障害ビットが「１個」だけ生じているＥＣＣ／ＣＷは「２３０個」あり、また障害ビットが「２個」生じているＥＣＣ／ＣＷは「１２２個」存在することを示している。
【０１５２】
また障害ビット数分布指標１００２は、劣化度が「２０００」であり、データ記憶後の経過時間が「２０日」であり、１日当たりの平均リード回数が「１０００回」であるブロックの障害ビット数分布を示している。障害ビット数分布指標１００２は、上述の障害ビット数分布指標１００１と劣化度が異なる他は同様に構成されている。
【０１５３】
従って図１７の場合、例えば劣化度が「２０００」のブロック内に、障害ビットが生じていないＥＣＣ／ＣＷは「５２０個」あり、また障害ビットが「１個」だけ生じているＥＣＣ／ＣＷは「２４０個」あり、また障害ビットが「２個」生じているＥＣＣ／ＣＷは「８５個」存在することを示している。
【０１５４】
ここで、プロセッサ１１５Ｂは障害ビット数分布１０００の劣化度を決定するために、データ記憶後の経過時間及び１日当たりの平均リード回数が障害ビット数分布１０００と同一である障害ビット数分布指標１００１及び１００２を用いてそれぞれを比較する。
【０１５５】
比較の方法としては、例えば障害ビット数分布１０００と各障害ビット数分布指標（ここでは１００１及び１００２）とのＥＣＣ／ＣＷ数の差の絶対値を障害ビット数ごとにそれぞれ算出し、すべての障害ビット数におけるＥＣＣ／ＣＷ数の差の絶対値を足し合わせて合計値を算出する。そして合計値が最小となる障害ビット数分布指標を障害ビット数分布１０００と最も類似した障害ビット数分布指標として決定し、この決定した障害ビット数分布指標の劣化度をベリファイ対象ブロックの新たな劣化度として定める。
【０１５６】
具体的には、障害ビット数分布１０００と障害ビット数分布指標１００１との比較では、障害ビット数が「０個」におけるＥＣＣ／ＣＷ数はそれぞれ「５００個」と「７００個」であるから、ＥＣＣ／ＣＷ数の差の絶対値は「２００個」となる。また障害ビット数が「１個」におけるＥＣＣ／ＣＷ数はそれぞれ「２３０個」で同一であるから、ＥＣＣ／ＣＷ数の差の絶対値は「０個」となる。このようにして、すべての障害ビット数におけるＥＣＣ／ＣＷ数の差の絶対値を算出してこれらの合計値を算出する。
【０１５７】
一方で障害ビット数分布１０００と障害ビット数分布指標１００２との比較についても同様に行い、すべての障害ビット数におけるＥＣＣ／ＣＷ数の差の絶対値を算出してこれらの合計を算出する。
【０１５８】
そして算出した２つのＥＣＣ／ＣＷ数の差の絶対値の合計が最小となる方の障害ビット数分布指標の劣化度を新たな劣化度として定める。なおここでは２つの障害ビット数分布指標を用いて新たな劣化度を定めているがこれに限らず、管理する劣化度の精度に応じて複数の劣化度に対応する障害ビット数分布指標を用いて新たな劣化度を定めることとしてもよい。
【０１５９】
また新たな劣化度を決定する他の方法として、例えば障害ビット数分布１０００のＥＣＣ／ＣＷ欄１０００Ｂに格納されているすべてのＥＣＣ／ＣＷ数の合計値、すなわちベリファイ対象ブロック内で生じたすべての障害ビット数の合計値と、障害ビット数分布指標１００１及び１００２のＥＣＣ／ＣＷ欄１００１Ｂ及び１００２Ｂに格納されているすべてのＥＣＣ／ＣＷ数の合計値とを比較して、ＥＣＣ／ＣＷ欄１０００Ｂ内のすべてのＥＣＣ／ＣＷ数の合計値に最も近い合計値を算出した障害ビット数分布指標の劣化度を新たな劣化度として定めることとしてもよい。
【０１６０】
また障害ビット数分布指標１００１及び１００２を分布関数の母数（パラメータ）にてＲＡＭ１１３に格納し、上記比較に用いてもよい。より詳細には、劣化度、データ記憶後の経過時間及び１日当たりの平均リード回数ごとの各障害ビット数分布指標に、障害ビット数分布を表す二項分布の平均ビット障害率やポアソン分布のＥＣＣ／ＣＷ当たりの平均障害ビット数といった母数を用いる。この各母数を代入した分布関数の値を、先の障害ビット数分布指標と同様に障害ビット数分布１０００と比較することで、劣化度を定めることとしてもよい。なお本実施の形態では、ベリファイ処理時に劣化度を決定する場合について述べたがリフレッシュ処理時にも同様の劣化度判定を行い、次ライト時の信頼性維持期間の予測精度向上を図るとしてもよい。具体的には、図１０のステップＳ２５におけるリード時に図１６のべリファイ処理を合わせて行うことで、リフレッシュ時にも劣化度を変更することができる。
【０１６１】
（２−５）画面構成
図１８は、管理装置１０２に表示される管理画面１１００の構成例を示す。なお管理画面１１００は、プロセッサ１１５Ｂの制御により半導体記憶装置１００Ｂに表示されるとしてもよい。システム管理者は、この管理画面１１００を用いて、信頼性維持期間表６００（図６参照）や障害ビット数閾値表９００（図１２参照）に格納される各値を半導体記憶装置１００Ｂに対して要求する信頼性に応じて設定することができる。
【０１６２】
管理画面１１００は、システム管理者が操作する項目として信頼性モード選択領域１１０１、許容障害ビット数領域１１０２、最長リフレッシュ周期領域１１０３及び許容劣化度領域１１０４を備えて構成され、また半導体記憶装置１００Ｂのステータスを表示する項目として平均劣化度領域１１０５、平均リフレッシュ周期領域１１０６、平均ベリファイ周期領域１１０７、使用不可ブロック数領域１１０８を備えて構成される。また管理画面１１００は、システム管理者に何らかのメッセージを通知するためのメッセージウィンドウ１１０９を備える。
【０１６３】
信頼性選択モード領域１１０１は、半導体記憶装置１００Ｂの信頼性をシステム管理者が設定するための領域であり、複数（ここでは３つ）のラジオボタンのうちの１つを選択するための領域である。選択可能な信頼性の種類には、「コンシューマモード」、「エンタープライズモード」及び「カスタムモード」がある。
【０１６４】
「コンシューマモード」は、例えば１sector per in 10^14［ｂｉｔｓ］等の信頼性を基準に動作するモードであり、「エンタープライズモード」は、例えば１sector per in 10^16［ｂｉｔs］等の信頼性を基準動作するモードであって、「コンシューマモード」よりも高い信頼性を維持して動作するモードである。半導体記憶装置１００Ｂは、これらのモードにより設定した信頼性に基づいて、信頼性維持期間表６００（図６参照）の各信頼性維持期間や障害ビット数閾値表９００（図１２参照）の各閾値、及び図１６のステップＳ６２で用いる使用不可ブロックを判定するための閾値を変化させることができる。例えば「エンタープライズモード」が選択された場合、「コンシューマモード」よりも信頼性維持期間表６００の各値は小さくなり、リフレッシュ期間は短縮されることになる。また同様に「エンタープライズモード」が選択された場合、「コンシューマモード」よりも障害ビット数閾値表９００の値は小さくなり、より少ない障害ビット数でも、使用不可ブロックとして判定されることになる。
【０１６５】
なお半導体記憶装置１００Ｂは、「コンシューマモード」及び「エンタープライズモード」の２つのモードにおけるそれぞれの信頼性維持期間表６００及び障害ビット数閾値表９００をＲＡＭ１１３に格納しており、モードの変更によって参照する表を変えることにより、上述の信頼性基準を変更する機能を実現する。
【０１６６】
また「カスタムモード」は、上述の「コンシューマモード」や「エンタープライズモード」のように信頼性基準を変更するのではなく、システム管理者がマニュアルで許容障害ビット数領域１１０２、最長リフレッシュ周期領域１１０３及び許容劣化度領域１１０４の各領域において任意の値を入力するためのモードである。
【０１６７】
また障害ビット数領域１１０２は、ＥＣＣ／ＣＷにおいて許容する障害ビット数をシステム管理者が入力するための領域であり、ここで入力された障害ビット数を超過したＥＣＣ／ＣＷを含むブロックについては、プロセッサ１１５Ｂにより使用不可と判断される。
【０１６８】
また最長リフレッシュ周期領域１１０３は、リフレッシュ周期の上限をシステム管理者が入力するための領域であり、ここで入力されたリフレッシュ周期を超過したブロックについては強制的にリフレッシュが実行されることになる。より詳細には、図８のステップＳ７、図９のステップＳ１８、図１３のステップＳ３７、図１４のステップＳ４９及び図１６のステップＳ６８におけるリフレッシュ実施予定日の算出処理において、算出したリフレッシュ実施予定日が最長リフレッシュ周期領域１１０３に入力された値を超過している場合、最長リフレッシュ周期がリフレッシュ期間としてリフレッシュ管理情報７００に格納されることになる。
【０１６９】
また許容劣化度領域１１０４は、記憶領域として用いるフラッシュメモリ内領域の劣化度の上限をシステム管理者が入力するための領域であり、ここで入力された劣化度を超過したブロックについては、プロセッサ１１５Ｂにより使用不可と判断される。このようにシステム管理者は、管理画面１１００において任意の値を入力することにより、半導体記憶装置１００Ｂのデータ保持の信頼性を柔軟に変更することができる。
【０１７０】
次いで平均劣化度領域１１０５は、半導体記憶装置１００Ｂ内に搭載されている全てのフラッシュメモリ内の全てのブロックの劣化度の平均を表示するための領域である。システム管理者は、ここで表示される平均を参照することにより、半導体記憶装置１００Ｂの寿命（残りの使用可能期間、残りの書き換え可能容量及び劣化度等）を把握することができる。
【０１７１】
また平均リフレッシュ周期領域１１０６は、半導体記憶装置１００Ｂにより実行されている各ブロックのリフレッシュ周期の平均値を表示するための領域である。システム管理者は、ここで表示される平均値を参照することにより、リフレッシュによる装置性能の低下の影響を把握することができる。
【０１７２】
また平均ベリファイ周期領域１１０７は、半導体記憶装置１００Ｂにより実行されている各ブロックのベリファイ周期の平均値を表示するための領域である。システム管理者は、ここで表示される平均値を参照することにより、ベリファイによる装置性能の低下の影響を把握することができる。
【０１７３】
また使用不可ブロック数領域１１０８は、半導体記憶装置１００Ｂに搭載されている全フラッシュメモリ内の全ブロックについて、図１６のステップＳ６２で使用不可ブロックと判断されたブロックの個数を表示するための領域である。システム管理者は、ここで表示される使用不可ブロック数を参照することにより、半導体記憶装置１００Ｂの寿命を把握することができる。
【０１７４】
（２−６）第２の実施の形態の効果
以上のように、本実施の形態によれば、ベリファイ処理（図１６参照）により、劣化度の変更が必要であると判断した場合には障害ビット数分布に基づいて新たな劣化度を算出し、算出した新たな劣化度に基づいて新たなリフレッシュ実施予定日を算出することができる。よって予測障害ビット数よりも特異に障害ビット数が増加した特異ブロックについてはリフレッシュ期間を短縮してＥＣＣ訂正不能障害を防止することができ、データの信頼性を高く維持することが可能となる。また逆に予測障害ビット数よりも特異に障害ビット数が少ないブロックについてはリフレッシュ期間を延長して不要なリフレッシュ処理を防止することができ、装置性能の低下を抑制することができる。更に劣化度を変更することにより、次のライト時までの信頼性維持期間の予測精度を向上させることができる。
【０１７５】
またベリファイ処理（図１６参照）により、ブロックに対する消去回数を劣化度とせずにベリファイによる障害ビット数分布に基づいて劣化度を算出するため、消去回数が多くともデータ保持特性が良いブロックについてはリフレッシュ期間を延長してデータ保持特性を有効活用することができる。一方消去回数が少ないにも関わらずデータ保持特性が良くないブロックについてはリフレッシュ期間を短縮してデータの信頼性を向上することができる。
【０１７６】
（３）第３の実施の形態
（３−１）半導体記憶装置の構成
図１において、１００Ｃは全体として第３の実施の形態による半導体記憶装置１００Ｃを示している。この半導体記憶装置１００Ｃは、特定のタイミングにリフレッシュが集中して実行されることを防止して上位装置１０１に対する応答性能の低下を防止する点及び半導体記憶装置１００Ｃに記憶されるデータの信頼性を時間的に一定に維持する点を除いて第１の実施の形態による半導体記憶装置１００Ａと同様に構成されている。
【０１７７】
ここで、上述の第１の実施の形態ではリフレッシュ管理情報７００によりリフレッシュを実行することが必要なリフレッシュ対象ブロックを取得し、取得したリフレッシュ対象ブロックに対して信頼性維持期間内にリフレッシュを実行することとしている。しかしこうした方法でリフレッシュを実行すると、特定の日時にリフレッシュの実行が集中する場合がある。
【０１７８】
そしてリフレッシュの実行が集中した場合、半導体記憶装置１００Ｃは、データの信頼性を維持するために上位装置１０１への応答を停止してリフレッシュを優先して実行することとなるが、このとき装置性能は不安定になる。
【０１７９】
また信頼性維持期間内であってもリフレッシュの実行が必要なブロックが集中した場合、データ消失の危険性が相対的に高まったブロックが偏在することとなり、半導体記憶装置１００Ｃ全体の信頼性は時間的に増減し、信頼性の低い時期が発生することになる。
【０１８０】
そこで本実施の形態では、上述のリフレッシュにおける課題を緩和するものであり、上位装置１０１への応答性能を安定させるとともに、半導体記憶装置１００Ｃ全体の信頼性を時間的に一定に維持することを実現するものである。
【０１８１】
（３−２）信頼性ランク管理情報の構成
第３の実施の形態において用いるデータ保持期間管理情報及び信頼性維持期間表は、第１の実施の形態において用いるデータ保持期間管理情報５００及び信頼性維持期間表６００の構成と同様であるためここでの説明は省略する。また第３の実施の形態では、リフレッシュ管理情報７００を用いず、後述の信頼性ランク管理情報１２００（図１９参照）を用いてリフレッシュを実行する。
【０１８２】
図１９は、半導体記憶装置１００ＣのＲＡＭ１１３に記憶された管理情報のうち、信頼性ランク管理情報１２００を示す。信頼性ランク管理情報１２００は、信頼性ランクごとにブロックを管理するために用いられ、信頼性ランク欄１２０１、許容ブロック数欄１２０２、存在ブロック数欄１２０３及びブロック番号欄１２０４から構成される。
【０１８３】
そして信頼性ランク欄１２０１には、半導体記憶装置１００Ｃに存在するブロックの相対的な信頼性の度合いを示す値（信頼性の範囲）が格納される。信頼性は、ブロックにデータが記憶された後の経過時間を信頼性維持期間で割って得られた値とする。例えばデータ記憶後の経過時間が「２１日」であり、信頼性維持期間が「３０日」であるブロックの信頼性は、信頼性維持期間全体のうちの７０％の日数が既に経過したものであるから、「７０％」となる。そしてこのブロックは、図１９の場合、信頼性ランク「６０％〜８９％」に該当することになる。
【０１８４】
なおこの信頼性ランクは、フラッシュメモリのリテンション特性に基づいて定めたものであり、異なる使用条件下のブロックをデータの信頼性という観点から分類するためのものである。例えば信頼性維持期間が３０日であって、データ記憶後の経過時間が１５日のブロックと、信頼性維持期間が２０日であって、データ記憶後の経過時間が１０日のブロックとは使用条件が異なるものの、何れも信頼性は５０％であるから、リフレッシュを実行するタイミングについては同等に管理される。
【０１８５】
そして許容ブロック数欄１２０２には、信頼性ランク欄１２０１により区分される信頼性ランクごとに、半導体記憶装置１００Ｃ内で存在を許容する許容ブロックの数が格納される。なおこの信頼性ランクごとの許容ブロック数は、装置性能の安定性や信頼性の時間的増減を考慮して、システム管理者の任意の値が格納される。
【０１８６】
また存在ブロック数欄１２０３には、信頼性ランク欄１２０１により区分される信頼性ランクごとに、半導体記憶装置１００Ｃ内で存在する存在ブロックの数が格納される。またブロック番号欄１２０４には、信頼性ランク欄１２０１により区分される信頼性ランクごとに、その信頼性ランクに存在する存在ブロックの番号が格納される。
【０１８７】
従って図１９の場合、例えば信頼性ランクが「６０％〜８９％」のブロックは、半導体記憶装置１００Ｃ内に「１４７４５個（２０％）」まで存在することが認められており、実際には「１８４３２個（２５％）」が存在していることが示されている。またこの信頼性ランクに存在する１８４３２個の存在ブロックの番号は、「３８７５４」、「２４４４」、「６８２２１」、・・・であることが示されている。また「６０％〜８９％」の信頼性ランクにおいては、上述のように存在ブロック数が許容ブロック数を超えているため、両者の差である「３６８７個」のブロックがリフレッシュの実行対象となる。
【０１８８】
なお図１９の信頼性ランク管理情報１２００では、信頼性ランク欄１２０１において信頼性ランクを５段階に区分しているが必ずしもこれに限られない。また信頼性ランクの算出方法として、データ記憶後の経過時間を信頼性維持期間で割って算出するとしたがこれに限らず、信頼性維持期間を一定値として単にデータ記憶後の経過時間を信頼性ランクとしてもよい。
【０１８９】
また各条件（劣化度及び１日当たりの平均リード回数）における経過時間ごとの障害ビット数分布を事前に測定しておき、その分布を用いて各条件と経過時間ごとの信頼性ランクを決定するとしてもよい。例えば障害ビット数が５ビットを超える確率で信頼性ランクを分類するとした場合、劣化度が「１０００」で１日当たりの平均リード回数が「１０００回」のブロックにおいてデータ記憶後「１０日」が経過したとき、障害ビット数が５ビットとなる確率が事前のフラッシュメモリテストで１０％であれば、信頼性ランクを「５％〜２９％」として管理するような信頼性ランクを用いるとしてもよい。
【０１９０】
（３−３）各種処理の処理手順
図２０は、半導体記憶装置１００Ｃのプロセッサ１１５Ｃにより実行されるライト処理の処理手順を示す。プロセッサ１１５Ｃは、上位装置１０１からデータ及びライト先ＬＢＡを含むライト要求を受信すると、この図２０に示すライト処理を開始する。
【０１９１】
ステップＳ７１〜Ｓ７６及びＳ７８における処理は、図８のステップＳ１〜Ｓ６及びＳ８の処理と同様であるため、ここでの説明は省略する。
【０１９２】
プロセッサ１１５Ｃは、ステップＳ７７において、データ記憶後の経過時間（新規ライト処理のため、値は０）をステップＳ７５で取得した信頼性維持期間で割って、これを信頼性ランクとして算出する（Ｓ７７）。そしてプロセッサ１１５Ｃは、この信頼性ランクに対応する存在ブロック数欄１２０３（図１９参照）に格納されるブロック数を１個分加算するとともに、ブロック番号欄１２０４にライト対象ブロックの番号を格納して信頼性ランク管理情報１２００を更新して（Ｓ７７）、ライト処理を終了する。
【０１９３】
図２１は、半導体記憶装置１００Ｃのプロセッサ１１５Ｃにより実行されるリード処理の処理手順を示す。プロセッサ１１５Ｃは、上位装置１０１からリード先ＬＢＡを含むリード要求を受信すると、この図２１に示すリード処理を開始する。
【０１９４】
ステップＳ８１〜Ｓ８７における処理は、図９のステップＳ１１〜１７の処理と同様であるため、ここでの説明は省略する。
【０１９５】
プロセッサ１１５Ｃは、ステップＳ８８において、ステップＳ８３で算出したデータ記憶後の経過時間をステップＳ８７で取得した信頼性維持期間で割って、これを信頼性ランクとして算出する（Ｓ８８）。そしてプロセッサ１１５Ｃは、算出した信頼性ランクと同一の信頼性ランクを信頼性管理情報１２００の信頼性ランク欄１２０１から抽出し、抽出した信頼性ランクに対応する存在ブロック数欄１２０３に格納されているブロック数を１個分加算するとともに、ブロック番号欄１２０４にリード対象ブロックのブロック番号を格納する。また同時に、これまでの信頼性ランクに対応する存在ブロック数欄１２０３からブロック数を１個分減算するとともに、ブロック番号欄１２０４からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ｃは、信頼性ランク管理情報１２００を更新した後（Ｓ８８）、リード処理を終了する。
【０１９６】
なお各ブロックの信頼性ランクは毎日変化するため、上述のリード処理において信頼性ランク管理情報１２００を更新する処理とは別に、信頼性ランク管理情報１２００を定期的又は不定期に更新するとしてもよい。例えばプロセッサ１１５Ｃは、１日に最低でも１度全ブロックについて、データ保持期間管理情報５００のデータ記憶日時欄５０２からデータ記憶日時を取得して現在日時との差からデータ記憶後の経過時間を算出し、一方で信頼性維持期間欄５０７から信頼性維持期間を取得し、経過時間を信頼性維持期間で割って信頼性ランクを算出する。そしてプロセッサ１１５Ｃは、この全ブロックについて算出した信頼性ランクに基づいて信頼性ランク管理情報１２００を更新するとしてもよい。
【０１９７】
図２２は、半導体記憶装置１００Ｃのプロセッサ１１５Ｃにより実行されるリフレッシュ処理の処理手順を示す。プロセッサ１１５Ｃは、上位装置１０１からのアクセス要求とリフレッシュ処理とが競合して装置性能が低下することを防止するため、上位装置１０１からのアクセス要求がないタイミングで定期的にこのリフレッシュ処理を開始する。
【０１９８】
まずプロセッサ１１５Ｃは、信頼性ランク管理情報１２００の許容ブロック数欄１２０２及び存在ブロック数欄１２０３から各信頼性ランクの許容ブロック数及び存在ブロック数を取得する（Ｓ９１）。
【０１９９】
次いでプロセッサ１１５Ｃは、ステップＳ９１で取得した許容ブロック数よりも存在ブロック数の方が多い信頼性ランクがあるか否かを判断する（Ｓ９２）。
【０２００】
プロセッサ１１５Ｃは、この判断で否定結果を得ると、現在日時においてリフレッシュを実行する必要はないものと判断して、リフレッシュ処理を終了する。
【０２０１】
これに対してプロセッサ１１５Ｃは、ステップＳ９２で肯定結果を得ると、許容ブロック数を超過している信頼性ランクのブロックをリフレッシュ対象ブロックとして判定し、リフレッシュ対象ブロックのブロック番号を無作為に１つ取得する（Ｓ９３）。
【０２０２】
次いでプロセッサ１１５Ｃは、ステップＳ９４〜Ｓ９７における処理により、ステップＳ９３で取得したブロック番号のブロックに対してリフレッシュを実行する（Ｓ９４〜Ｓ９７）。なおステップＳ９４〜Ｓ９７における処理は、図１０のステップＳ２４〜Ｓ２７の処理と同様であるため、ここでの説明は省略する。
【０２０３】
プロセッサ１１５Ｃは、ステップＳ９３で取得したリフレッシュ対象ブロックのデータを消去して、このリフレッシュ対象ブロックを未書込みブロックプールに格納する（Ｓ９８）。そしてプロセッサ１１５Ｃは、信頼性ランク管理情報１２００において、信頼性ランク「０％〜４％」に対応する存在ブロック欄１２０３のブロック数を１個分加算し、ブロック番号欄１２０４にリフレッシュ実行後のリフレッシュ対象ブロックのブロック番号を格納する。また同時に、プロセッサ１１５Ｃは、信頼性ランク欄１２０１からリフレッシュ実行前のリフレッシュ対象ブロックの信頼性ランクを取得し、取得した信頼性ランクに対応する存在ブロック数欄１２０３のブロック数を１個分減算する。また取得した信頼性ランクに対応するブロック番号欄１２０４からリフレッシュ対象ブロックのブロック番号を削除する。このようにしてプロセッサ１１５Ｃは、信頼性ランク管理情報１２００を更新する（Ｓ９８）。
【０２０４】
そしてプロセッサ１１５Ｃは、上位装置１０１からのアクセス要求があるか否かを判断し（Ｓ９９）、この判断で肯定結果を得ると、上位装置１０１からのアクセス要求を優先して、リフレッシュ処理を一時終了する。
【０２０５】
これに対してプロセッサ１１５Ｃは、ステップＳ９９の判断で否定結果を得ると、ステップＳ９２に移行して、リフレッシュの実行が必要な他のブロックについてリフレッシュ処理を継続する。
【０２０６】
（３−４）第３の実施の形態の効果
以上のように、本実施の形態によれば、相対的に信頼性の悪化したブロックが時間的に偏在しないように平準化する制御を行うことにより、半導体記憶装置１００Ｃ全体の信頼性を時間的に一定に維持することができる。また信頼性ランク管理情報１２００（図１９参照）について、信頼性ランクの値が大きく（信頼性が低く）なるに従い、許容ブロック数が小さくなるように設定すれば、リフレッシュは段階的に実行されることになるため、特定の期間に集中してリフレッシュが実行されることを防止することができ、上位装置１０１への応答性能の低下を軽減することができる。
【０２０７】
（４）第４の実施の形態
（４−１）半導体記憶装置の構成
図１において、１００Ｄは全体として第３の実施の形態による半導体記憶装置１００Ｄを示している。この半導体記憶装置１００Ｄは、搭載するフラッシュメモリの全ブロックに対してベリファイを実行し、その過程で取得した障害ビット数に基づいてブロックごとにリフレッシュ期間を決定する点を除いて第１の実施の形態による半導体記憶装置１００Ａと同様に構成されている。
【０２０８】
なおこの半導体記憶装置１００Ｄは、第１〜３の実施の形態で用いた劣化度、データ記憶後の経過時間及び１日当たりの平均リード回数といったブロックごとの使用条件を管理情報として管理しない点を除いて第１の実施の形態による半導体記憶装置１００Ａと同様に構成されている。
【０２０９】
またこの半導体記憶装置１００Ｄは、ライト処理において、上位装置１０１からのデータをフラッシュメモリに記憶するという一般的な処理を行い、またリード処理についても同様に、フラッシュメモリからデータをリードして、上位装置１０１に転送するという一般的な処理を行う。従ってここでは、これらの処理についての説明は省略する。
【０２１０】
この半導体記憶装置１００Ｄは、ライト処理及びリード処理とは独立して、搭載するフラッシュメモリの全ブロックに対して定期的にベリファイを実行する。より詳細には、半導体記憶装置１００Ｄは例えば５日間のうち、最低でも１度は障害ビット数の発生状況を確認するためのリードを実行し、そのリード時に取得した障害ビット数の最大値の閾値に基づいて、リフレッシュ周期を決定する。
【０２１１】
（４−２）ベリファイ処理
図２３は、半導体記憶装置１００Ｄのプロセッサ１１５Ｄにより実行されるベリファイ処理の処理手順を示す。プロセッサ１１５Ｄは、半導体記憶装置１００Ｄの動作中（起動中）において定期的又は不定期に、この図２３に示すベリファイ処理を開始する。
【０２１２】
なおプロセッサ１１５Ｄは、半導体記憶装置１００Ｄが搭載するフラッシュメモリの全記憶領域に対して実行可能な速度でこのベリファイ処理を実行する。例えば半導体記憶装置１００Ｄが２万個のフラッシュメモリを搭載している場合であって、５日以内に最低でも１度はこのベリファイ処理を実行するとした場合、プロセッサ１１５Ｄは、１日当たり４千個のブロックに対してこのベリファイ処理を確実に実行する。なおこのベリファイ処理と上位装置１０１からのアクセス要求とが競合する場合、プロセッサ１１５Ｄはベリファイ処理を優先して実行する。
【０２１３】
まずプロセッサ１１５Ｄは、ベリファイ対象ブロック内の全ページをリードするとともに、リードした各ページのＥＣＣ／ＣＷごとの障害ビット数をＲＡＭ１１３に格納し、ＲＡＭ１１３に格納したＥＣＣ／ＣＷごとの障害ビット数のうち、最大障害ビット数を取得する（Ｓ１０１）。
【０２１４】
次いでプロセッサ１１５Ｄは、ステップＳ１０１で取得したベリファイ対象ブロック内で生じた最大障害ビット数が閾値よりも小さいか否かを判断する（Ｓ１０２）。なおここで用いる閾値は、ＥＣＣ訂正可能ビット数よりも小さい値を用いることとし、半導体記憶装置１００Ｄに要求される信頼性に応じて変更することとする。一般に、閾値を小さくすれば高い信頼性を確保することができ、閾値を大きくすれば信頼性は低下するもののリフレッシュ頻度を抑制することができる。
【０２１５】
プロセッサ１１５Ｄは、上述のステップＳ１０２の判断で否定結果を得ると、リフレッシュが必要であると判断してリフレッシュを実行する。
【０２１６】
これに対してプロセッサ１１５Ｄは、この判断で肯定結果を得ると、現時点でのリフレッシュは不要であると判断してステップＳ１０３に移行する。このように上位装置１０１への応答とは独立して定期的にベリファイを実行してリフレッシュの要否を判断することにより、ブロックの劣化度やリード頻度に応じてブロックごとに個別にリフレッシュを実行することができる。
【０２１７】
プロセッサ１１５Ｄは、ベリファイ対象ブロックのブロック番号に１を加算して、次にベリファイを実行するブロックのブロック番号を取得する（Ｓ１０３）。
【０２１８】
次いでプロセッサ１１５Ｄは、ステップＳ１０３で取得したブロック番号が半導体記憶装置１００Ｄに搭載される全フラッシュメモリの最終ブロック番号以下であるか否かを判断する（Ｓ１０４）。
【０２１９】
プロセッサ１１５Ｄは、この判断で肯定結果を得ると、ステップＳ１０１に移行して、ステップＳ１０３で取得したブロック番号のブロックをベリファイ対象ブロックとしてベリファイを実行する。
【０２２０】
これに対してプロセッサ１１５Ｄは、ステップＳ１０４の判断で否定結果を得ると、半導体記憶装置１００Ｄが搭載する全フラッシュメモリのブロックに対して少なくとも１度はベリファイを実行したものと判断し、先頭ブロックからベリファイを再度実行するため、ステップＳ１０３で１加算したブロック番号を０に戻して（Ｓ１０５）、ステップＳ１０１に移行する。プロセッサ１１５Ｄは、以上の処理を定期的に繰り返す。
【０２２１】
（４−３）第４の実施の形態の効果
以上のように、本実施の形態によれば、半導体記憶装置１００Ｄの動作中（起動中）に図２３のベリファイ処理を繰り返し実行することにより、最大障害ビット数が一定値まで増加したブロックについては順次リフレッシュを実行することができる。
【０２２２】
（５）第５の実施の形態
（５−１）半導体記憶装置の構成
図１において、１００Ｅは全体として第５の実施の形態による半導体記憶装置１００Ｅを示している。この半導体記憶装置１００Ｅは、搭載するフラッシュメモリの全ブロックに対してベリファイを実行する点で第４の実施の形態と同様であり、ベリファイの実行に際しては障害ビット数の分布を取得し、取得した障害ビット数の分布に基づいてブロックごとのリフレッシュ期間を決定する点を除いて第４の実施の形態による半導体記憶装置１００Ｄと同様に構成されている。
【０２２３】
（５−２）ベリファイ処理
図２４は、半導体記憶装置１００Ｅのプロセッサ１１５Ｅにより実行されるベリファイ処理の処理手順を示す。プロセッサ１１５Ｅは、半導体記憶装置１００Ｅの動作中（起動中）において定期的又は不定期に、この図２４に示すベリファイ処理を開始する。
【０２２４】
なおプロセッサ１１５Ｅは、半導体記憶装置１００Ｅが搭載するフラッシュメモリの全記憶領域に対して実行可能な速度でこのベリファイ処理を実行する。この点については、第４の実施の形態と同様である。
【０２２５】
まずプロセッサ１１５Ｅは、ベリファイ対象ブロック内の全ページをリードするとともに、リードした各ページのＥＣＣ／ＣＷごとの障害ビット数をＲＡＭ１１３に格納し、ＲＡＭ１１３に格納したＥＣＣ／ＣＷごとの障害ビット数に基づいて、ベリファイ対象ブロック内の障害ビット数分布を取得する（Ｓ１１１）。
【０２２６】
次いでプロセッサ１１５Ｅは、ステップＳ１１１で取得した障害ビット数分布とリフレッシュ要否判定用に予め用意した障害ビット数分布（以下、これを「リフレッシュ指標」と呼ぶ）との差を算出する（Ｓ１１２）。
【０２２７】
ここで、リフレッシュ指標とは、上述のようにリフレッシュ要否判定用に予め用意した障害ビット数分布であって、例えばブロック内の障害ビット数が０個のＥＣＣ／ＣＷ数は１２０個、障害ビット数が１個のＥＣＣ／ＣＷ数は２００個、…というように、ブロック内の障害ビット数とＥＣＣ／ＣＷの個数とを対応付けた障害ビット数分布である。上述のステップＳ１１１で取得した障害ビット数分布がこのリフレッシュ指標に類似している場合、具体的にはステップＳ１１１で取得した障害ビット数分布とリフレッシュ指標との差の絶対値が小さい場合、信頼性を維持することができないものとしてリフレッシュが必要と判断されることになる。なおここでの絶対値の算出方法については、図１７の劣化度を決定する際の処理と同様であり、ベリファイ対象ブロックの障害ビット数分布１０００と障害ビット数分布指標１００１及び１００２とを比較する処理と同様である。
【０２２８】
プロセッサ１１５Ｅは、ステップＳ１１２で算出した障害ビット数分布とリフレッシュ指標との差が予め定められた閾値よりも小さいか否かを判断する（Ｓ１１３）。
【０２２９】
プロセッサ１１５Ｅは、この判断で肯定結果を得ると、ベリファイ対象ブロック内の障害ビットはリフレッシュ指標に類似した分布で発生しているものと判断し、このベリファイ対象ブロックに対してリフレッシュを実行する。
【０２３０】
これに対してプロセッサ１１５Ｅは、ステップＳ１１３の判断で否定結果を得ると、ベリファイ対象ブロック内の障害ビットはリフレッシュ指標と異なる分布で発生しているものと判断し、このベリファイ対象ブロックについては現時点でのリフレッシュは不要であると判断する。そしてプロセッサ１１５Ｅは、次のブロックをベリファイ対象ブロックとするべく、ステップＳ１１４に移行する。
【０２３１】
ステップＳ１１４〜Ｓ１１６における処理は、図２３のステップＳ１０３〜Ｓ１０５と同様であるため、ここでの説明は省略する。プロセッサ１１５Ｅは、以上の処理を定期的に繰り返す。
【０２３２】
（５−３）第５の実施の形態の効果
以上のように、本実施の形態によれば、半導体記憶装置１００Ｅの動作中（起動中）に図２４のベリファイ処理を繰り返し実行することにより、リフレッシュ指標に類似する障害ビット数分布のブロックについては順次リフレッシュを実行することができる。
【産業上の利用可能性】
【０２３３】
本発明は、フラッシュメモリを記憶媒体として搭載した種々の構成の半導体記憶装置に広く適用することができる。
【符号の説明】
【０２３４】
１００Ａ〜１００Ｅ……半導体記憶装置、１１０……フラッシュメモリコントローラ、１１５……プロセッサ、１１７……フラッシュメモリインターフェース、１２０〜１２８……フラッシュメモリ、２０１……ブロック、３０１……ページ、４０２……ＥＣＣ付加コード、５００……データ保持期間管理情報、６００……信頼性維持期間表、７００……リフレッシュ管理情報、８００……ベリファイ管理情報、９００……障害ビット数閾値表、１０００……障害ビット数分布、１００１〜１００２……障害ビット数分布指標、１１００……管理画面、１２００……信頼ランク管理情報
【図１】
0005629391.tif 000002
【図２】
0005629391.tif 000003
【図３】
0005629391.tif 000004
【図４】
0005629391.tif 000005
【図５】
0005629391.tif 000006
【図６】
0005629391.tif 000007
【図７】
0005629391.tif 000008
【図８】
0005629391.tif 000009
【図９】
0005629391.tif 000010
【図１０】
0005629391.tif 000011
【図１１】
0005629391.tif 000012
【図１２】
0005629391.tif 000013
【図１３】
0005629391.tif 000014
【図１４】
0005629391.tif 000015
【図１５】
0005629391.tif 000016
【図１６】
0005629391.tif 000017
【図１７】
0005629391.tif 000018
【図１８】
0005629391.tif 000019
【図１９】
0005629391.tif 000020
【図２０】
0005629391.tif 000021
【図２１】
0005629391.tif 000022
【図２２】
0005629391.tif 000023
【図２３】
0005629391.tif 000024
【図２４】
0005629391.tif 000025