(57)【要約】【課題】  チップ内で記録領域を検査し、リフレッシュの要否を判断すること。【解決手段】  セルを用いてデータを保持する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、前記コントローラは、前記リフレッシュを実行すること。【選択図】図１
2019083082.tif 000002
【特許請求の範囲】
【請求項１】
セルを用いてデータを保持する複数のフラッシュメモリと、
前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、
前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、
前記コントローラは、前記リフレッシュを実行すること
を特徴とするフラッシュメモリモジュール。
【請求項２】
請求項１に記載のフラッシュメモリモジュールにおいて、
前記コントローラは、リフレッシュ要否判定要求コマンドを送信し、
前記フラッシュメモリは、前記リフレッシュ要否判定要求コマンドを受信した場合に、前記リフレッシュの要否を判定すること
を特徴とするフラッシュメモリモジュール。
【請求項３】
請求項１に記載のフラッシュメモリモジュールにおいて、
前記コントローラは、前記リフレッシュの要否判定要求を送信し、
前記フラッシュメモリは、自発的に前記リフレッシュの要否を判定すること
を特徴とするフラッシュメモリモジュール。
【請求項４】
請求項１に記載のフラッシュメモリモジュールにおいて、
前記フラッシュメモリは、前記セルの読み出し電圧値を調査し、前記読み出し電圧値が所定の範囲外の場合に、リフレッシュ要と判定すること
を特徴とするフラッシュメモリモジュール。
【請求項５】
請求項１に記載のフラッシュメモリモジュールと、
複数の前記フラッシュメモリモジュールを制御するストレージコントローラと、
を備えたストレージシステム。
【請求項６】
セルを用いてデータを保持する複数のフラッシュメモリと、
前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、
リフレッシュの実行を制御するリフレッシュ実行部と、
前記セルの電圧に基づいて前記リフレッシュの要否を判定し、リフレッシュ要と判定された場合に、前記リフレッシュ実行部に報告を送信するリフレッシュ要否判定部と、
を備え、
前記リフレッシュ実行部は、前記リフレッシュ要否判定部から前記報告を受信した場合に、前記リフレッシュを行うこと
を特徴とするフラッシュメモリモジュール。
【請求項７】
請求項６に記載のフラッシュメモリモジュールにおいて、
一のリフレッシュ実行部に対して、複数のリフレッシュ要否判定部が設けられていること
を特徴とするフラッシュメモリモジュール。
【請求項８】
請求項７に記載のフラッシュメモリモジュールにおいて、
前記リフレッシュ実行部は、前記コントローラに設けられ、
前記リフレッシュ要否判定部は、前記フラッシュメモリに設けられること
を特徴とするフラッシュメモリモジュール。
【請求項９】
電子を保持する複数のセルと、
前記複数のセルへのデータの入出力を制御するとともに、前記セルの電圧に基づいてリフレッシュの要否を判定するプロセッサと、を同一の半導体チップ上に形成したこと
を特徴とするフラッシュメモリ。
【請求項１０】
請求項９に記載のフラッシュメモリにおいて、
前記プロセッサは、前記リフレッシュを要と判断した場合に、前記フラッシュメモリが接続されるバスを介して、リフレッシュを行うコントローラに報告を行うこと
を特徴とするフラッシュメモリ。
【請求項１１】
データを保持するセルを有する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、を備えたフラッシュメモリモジュールにおけるデータリフレッシュ方法において、
前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、
前記コントローラは、前記リフレッシュを実行すること
を特徴とするデータリフレッシュ方法。
【請求項１２】
データを保持するセルを有する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、を備えたフラッシュメモリモジュールにおけるデータリフレッシュ方法において、
リフレッシュ要否判定部が、前記セルの電圧に基づいてリフレッシュの要否を判定し、リフレッシュ要と判定された場合に、前記リフレッシュ要の報告を送信し、
リフレッシュ実行部が、前記リフレッシュ要の報告を受信し、前記リフレッシュの実行を制御すること
を特徴とするデータリフレッシュ方法。
【請求項１３】
データとして電子を保持する複数のセルを用いてデータを格納するフラッシュメモリにおけるデータリフレッシュ方法において、
前記複数のセルと、前記複数のセルへのデータの入出力を制御するとともに、前記セルの電圧に基づいてリフレッシュの要否を判定するプロセッサと、を同一の半導体チップ上に形成したこと
を特徴とするデータリフレッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリモジュール及びフラッシュメモリに関するものである。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ（以下ＦＭ）を搭載するソリッドステートドライブ（以下ＳＳＤ）等の不揮発性メモリを搭載する記憶モジュール（以下不揮発性メモリ記憶モジュール）は、従来エンタープライズシステムの長期記憶用媒体として用いられてきたハードディスクドライブ（以下ＨＤＤ）よりも高速にデータの書き込み及び読み出しが可能であり、システムの高性能化を意図した、ＨＤＤの置き換えとしての利用が広がっている。こうしたＦＭのエンタープライズシステムへの利用拡大は、微細化と多値化によるＦＭのビットコスト低下に起因している。
【０００３】
ＦＭは電子を格納するセルにより構成されており、このセルに電子が注入されている個数とデータのビット値を対応付けることで値を記録する。この電子の個数が時間経過により増減変化すると対応付けられたビット値が変化し、エラービットとなる。近年、微細化や多値化により、わずかな電子の移動でもビット値が変化するようになったため、ＦＭのエラービットは増加しやすく、高信頼にデータを保持可能な期間は短縮されている。
【０００４】
そこで、エンタープライズシステムに適用されるＳＳＤでは、ＮＶＭＣＴＬ(Non Volatile Memory Controller)がＦＭにデータを記録する際に、エラービットを訂正するＥＣＣ(Error Correction Code)を付与しておき、定期的にデータを読み出してＥＣＣにてデータ中に生じたエラービットを訂正して、訂正データを再度ＦＭに記録する「リフレッシュ」と呼ばれる動作を行いデータの長期保存を行っている。こうした技術として、例えば、特許文献１に開示される技術がある。
【０００５】
リフレッシュは、消去動作を伴う為、実施する度にＦＭを劣化させる。このため、必要不可欠なときにのみ実施する事が望ましい。特許文献２には、記録データ中に発生したエラービットが一定数以上となったときのみに、リフレッシュする技術が開示されており、必要最低限のリフレッシュを実現している。
【０００６】
また、ＦＭから読み出す電圧を最適化し、エラービットを削減する技術があり、こうした技術は、特許文献３に開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２０１１／００６６８９９号明細書
【特許文献２】米国特許出願公開第２０１２／０２７８５３３号明細書
【特許文献３】米国特許第８１５９８８１３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２は、データにＥＣＣを付与してＦＭに格納しておき、記録データ中に生じたエラービット数を測定するために、ＮＶＭＣＴＬがデータをＦＭより取得し、ＥＣＣを用いてエラービット訂正し、エラービット数をカウントする。以降、本資料では、このエラービットを測定する為のリードを検査リードと呼ぶ。近年FMの記憶容量が増大し、一つのＳＳＤの記憶容量も増大している。このため、リフレッシュの要否を決定する為の検査リードのリード量が増加している。
【０００９】
また、近年のＦＭはエラービット数が多く、その訂正にＬＤＰＣ（Low Density Parity Check）と呼ばれる訂正符号を用いている。このＬＤＰＣは、データ訂正のためにエラービット訂正の対象データ以外に、ソフトデータと呼ばれる訂正を補助するデータを用いる事がある。このソフトデータは、エラービット訂正の対象データの１〜２倍のデータ量がある。このため、ＮＶＭＣＴＬは、検査リードにてエラービット数を計量する為に、データとソフトデータをＦＭより取得する必要がある。
【００１０】
上記の理由より、ＮＶＭＣＴＬとＦＭ間のデータ転送路は、多量の検査リード用データが転送されるため、ホストから要求されたリード・ライトのデータ転送と競合し、ホストリクエストに対するリード・ライト応答時時間の増加を招いている。
【００１１】
また、近年のＦＭの記憶容量密度が向上し、不揮発性メモリ記憶モジュール全体の記憶容量も増加しており、従来と同等頻度の検査リードの実施が困難となり、信頼性低下を招いている。
【００１２】
本発明の課題は、チップ内で記録領域を検査し、リフレッシュの要否を判断することにある。
【課題を解決するための手段】
【００１３】
前述の課題を解決するため、本発明は、セルを用いてデータを保持する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、前記コントローラは、前記リフレッシュを実行することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、チップ内で記録領域を検査し、リフレッシュの要否を判断することができる。結果として、ＳＳＤに搭載する複数のFMにその処理を分散させ、コントローラとＦＭ間のデータ転送量を削減できる為、ホストリクエストのリード・ライトにより生じたデータ転送との競合が軽減され、ホストリクエストに対する処理性能を向上できる。
【図面の簡単な説明】
【００１５】
【図１】実施例１におけるシステム構成図である。
【図２】実施例１における他のシステム構成図である。
【図３】実施例１におけるＮＶＭモジュールの構成図である。
【図４】実施例１におけるＦＭの構成図である。
【図５】実施例１における時間経過に伴うＭＬＣセルの閾値低下の概要図であって、（ａ）は、時間経過前の閾値電圧分布を示す図で、（ｂ）は、時間経過後の閾値電圧分布を示す図である。
【図６】実施例１における最適読み出し電圧探索の概要を説明するための図であって、（ａ）は、閾値電圧分布と読み出し電圧との関係を示す図で、（ｂ）は、読み出し電圧の変化と０の個数との関係を示す図である。
【図７】実施例１における最適読み出し電圧の時間的推移を示す特性図である。
【図８】実施例１におけるリフレッシュ要否判定要求コマンドの構成図である。
【図９】実施例１におけるＮＶＭモジュールのリフレッシュ要否検査を説明するためのフローチャートである。
【図１０】実施例１におけるＦＭのリフレッシュ要否判定処理を説明するためのフローチャートである。
【図１１】実施例２におけるＦＭのリフレッシュ要否判定処理を説明するためのフローチャートである。
【発明を実施するための形態】
【実施例１】
【００１６】
次に、本発明の実施形態を図面に基づいて説明する。尚、本発明は、以下に説明する実施形態に限定されるものではない。
【００１７】
（１−１）システム構成
まず本発明が適用されるシステム構成について図１並びに図２を用いて説明する。図１は、本発明が適用されるシステム例の概要について示しており、本発明は、図１を例とするシステムに適用可能なものである。
【００１８】
図１は、本発明が適用されるシステム構成について示している。図１のストレージ（Storage）１００は、ネットワーク、例えば、ＳＡＮ（Storage Area Network）１０１を介して、複数のサーバ（Server）１０２と接続されており、各サーバ（ホスト）１０２からの要求（ホストリクエスト）に応じてストレージ１００は、データをストレージ１００内部の記憶媒体に記録し、またはストレージ１００内部の記録媒体から読み出す。ストレージ１００は、図１に示すように、複数のコントローラ（以下ＣＴＬ）１１７と、複数のエクスパンダー１１４と、複数の不揮発性メモリモジュール（以下ＮＶＭモジュール）１１５とから構成される。
【００１９】
各ＣＴＬ１１７は、プロセサ（Processor）１１２、ＤＲＡＭ（Dynamic Random Access Memory）１１１、フロントエンドインターフェース（ＦＥ ＩＦ）１１６、バックエンドインターフェース（ＢＥ ＩＦ）１１３により構成される。ＣＴＬ１１７は、冗長性を確保するために、ストレージ１００に少なくとも２つ以上が搭載されており、あるＣＴＬ１１７に故障が生じた場合他方のＣＴＬ１１７にて処理が継続可能なように設計されている。
【００２０】
プロセサ１１２は、ストレージ１００の制御を行うコンポーネントであり、フロントエンドインターフェース１１６、ＤＲＡＭ１１１、バックエンドインターフェース１１３と接続されている。プロセサ１１２は、ストレージ１００の制御ソフトウェアが動作しており、ストレージ１００内の各種データ転送を制御する。
【００２１】
フロントエンドインターフェース116は、ストレージ１００とＳＡＮ１０１を接続するためのインターフェースであり、Ethernet（登録商標）やＦＣ（Fibre Channel）等のプロトコルにより、ＳＡＮ１０１を介したリクエストやデータ転送を行う。
【００２２】
ＤＲＡＭ１１１は、ストレージプログラムの格納やデータの一次的な格納を行うコンポーネントであり、ライトキャッシュとして上位装置（例えば、サーバ１０２）から受領したデータを一旦格納する。このとき、上位装置から受領したライトデータを他のＣＴＬ１１７のＤＲＡＭ１１１にもコピーすることで冗長性を確保する。
【００２３】
バックエンドインターフェース１１３は、記憶媒体であるＮＶＭモジュール１１５と接続するためのインターフェースであり、ＳＡＳ（Serial Attached SCSI）やＦＣ等のプロトコルにより各種リクエストの通知やデータ転送を行う。
【００２４】
エクスパンダー１１４は、複数のＮＶＭモジュール１１５を格納しており、バックエンドインターフェース１１３と接続されている。
【００２５】
ＮＶＭモジュール１１５は、記憶モジュール装置として、内部にＦＭ（図示せず）を搭載しており、ストレージ１００のＣＴＬ１１７からの要求に応じてデータをＦＭに記録する、またはデータをＦＭより読み出す記憶媒体である。ストレージ１００は、複数台のＮＶＭモジュール１１５を管理しており、複数台のＮＶＭモジュール１１５に跨るようにデータを冗長化して記録する。この機能により、ＮＶＭモジュール１１５の突発的な故障時にデータの消失に対応する。こうした技術の一例としてＲＡＩＤ（Redundant Array Inexpensive Disk）がある。ＲＡＩＤは、例えば４台のＮＶＭモジュール１１５を一つのグループとして扱い。サーバ１０２から受領したライトデータを３台のＮＶＭモジュール１１５に分割して記録する。このときに３台に記録する３つのデータをＸＯＲ演算しパリティデータを生成する。そしてこのパリティデータを、４台目のＮＶＭモジュール１１５に記録する。こうすることで、４台のＮＶＭモジュール１１５のうち１台が突然故障しても、他の３台のＮＶＭモジュール１１５に記録されたデータから、故障したＮＶＭモジュール１１５に記録されているデータを復元できる。
【００２６】
以上、本発明が適用されるステム構成の一例である。尚、本発明は図１に示すシステム構成に限定されるものではない。本発明はデータをＮＶＭモジュール１１５に格納して長期に保存する他のシステムにも適用可能なものである。例えば、図２に示すようなシステム構成でもよい。図２は、複数のサーバノードにより構成されるシステムである。
【００２７】
図２は、本発明が適用されるノード構成について示している。図２のサーバ２００は、一次記憶領域であるＤＲＡＭ２１１、ソフトウェアに従って様々な処理を実施するプロセサ２１２、各種周辺機器を接続するスイッチ（以下ＳＷ）２１３、二次記憶領域となるＮＶＭモジュール１１５、他のサーバ２００に接続するネットワークインターフェース（Ｉ／Ｆ）２１７により構成される。尚、図２では、プロセサ２１２とＮＶＭモジュール１１５がＳＷ１１３を経由して接続する構成について示すが本発明はこの例に限定されるものではない。プロセサ２１２がＮＶＭモジュール１１５に直接接続するとしてもよい。
【００２８】
ＤＲＡＭ２１１は、プロセサ２１２から短時間でアクセス可能な接続にてプロセサ２１２と接続されており、プロセサ２１２が処理するプログラムや処理対象データを格納する領域である。
【００２９】
プロセサ２１２は、プログラムに従って動作し、対象データを処理する装置である。プロセサ２１２は、内部に複数のプロセサコア（図示せず）を持ち、各プロセサコアは各自独立してまたは協調してプログラムを処理するものである。また、プロセサ２１２は、内部にＤＲＡＭコントローラ（図示せず）を持ち、ＤＲＡＭコントローラは、プロセサ２１２からのリクエストに応じてＤＲＡＭ２１１よりデータを取得、またはＤＲＡＭ２１１にデータを格納する。また、プロセサ２１２は、外部ＩＯインターフェース（図示せず）を持ち、外部ＩＯインターフェースを介してＳＷ２１３に接続し、またＳＷ２１３を経由して二次記憶装置であるＮＶＭモジュール１１５に指示を通知する事が可能である。プロセサ２１２は、各種処理を行う。尚、図２の例では、ネットワークインターフェース２１７は、プロセサ２１２と直接接続している例について記すが、本発明は、この例に限定されるものではない。例えば、ネットワークインターフェース２１７は、ＳＷ２１３を介してプロセサ２１２と接続するとしても良い。
【００３０】
プロセサ２１２では、仮想マシンを生成するハイパーバイザが動作しており、仮想マシン上では各種アプリケーションが動作している。このアプリケーションがデータを永続的に記録するときに、ストレージ機能を有する仮想マシンに仮想的に指示をおこなう。このとき、ストレージ機能を有する仮想マシンを処理するプロセサ２１２は、ＤＲＡＭ２１１に格納されているデータを、ストレージ機能を有する仮想マシンの管理方式に従って、ＮＶＭモジュール１１５に記録する。
【００３１】
ＳＷ２１３は、高速な外部ＩＯバスを仲介する部位であり、例えばPCI−ExpressやInfiniband等の接続規格のパケットをパケットに定められたルーティング方式で転送する。ＳＷ２１３は、ＮＶＭモジュール１１５を複数台接続可能とし、プロセサ２１２と各種デバイス間の情報を通信する。なお、図２には、ＳＷ２１３に対して一台のＮＶＭモジュール１１５を接続した例について示すが、本発明は、この例に限定されるものではない。例えば、ＳＷ２１３に対して２台以上のＮＶＭモジュール１１５を接続してもよく、また各ノードであるサーバ２００内のＳＷ２１３に接続されるＮＶＭモジュール１１５は同一数でなくてもよい。例えば、あるノード内には１台のＮＶＭモジュール１１５がＳＷ２１３を介して接続されており、他のノードには２台のＮＶＭモジュール１１５がＳＷ２１３を介して接続されていてもよい。
【００３２】
ＮＶＭモジュール１１５は、解析対象データを格納する二次記憶装置である。本発明においては、ＮＶＭモジュール１１５は、プロセサ２１２から通知されるライト情報に基づきライト対象データをＤＡＲＭ２１１より取得する。
【００３３】
ネットワークインターフェース２１７は、ノード間を接続するネットワークに接続するためのインターフェースである。図２の例では、ノードとなるサーバ２００は、ネットワーク（Network）２０３として、例えばEthernet（登録商標）を用いて、他ノードとの通信を行うが、本発明はこの例に限定されるものではない。例えばノードとなるサーバ２００は、他のノードとなるサーバ２００とInfinibandを介して通信するとしてもよい。
【００３４】
以上、図２の構成について説明した。本発明は先の図１の構成だけでなく、図２の構成に対しても適用される。
【００３５】
（１−２）ＮＶＭモジュールの構成
次に図３を用いて、本発明が適用されるＮＶＭモジュール１１５の内部構成について説明する。図３は、ＮＶＭモジュール１１５の内部構成を示す図である。
【００３６】
ＮＶＭモジュール１１５は内部に、不揮発性記憶モジュールコントローラ（以下ＮＶＭモジュールコントローラ）３１０と複数(例えば32個)のＦＭ（ＦＭチップ）３２０〜３２８を備える。ＮＶＭモジュールコントローラ３１０は、その内部に組み込みプロセサ（E-Processor）３１５、ＲＡＭ３１３、データバッファ（Data Buffer）３１６、Ｉ／Ｏインターフェース（Interface）３１１、ＦＭインターフェース（Interface）３１７、及びデータ転送を相互に行うスイッチ（Switch）３１４を備えている。
【００３７】
スイッチ３１４は、ＮＶＭモジュールコントローラ３１０内の組み込みプロセサ３１５、ＲＡＭ３１３、データバッファ３１６、Ｉ／Ｏインターフェース３１１、ＦＭインターフェース３１７を接続し、各部位間のデータをアドレスまたはＩＤ（Identification）によってルーティングし転送する。尚、本実施例では、図３に示すように、単一のスイッチ３１４に各ハードウェア及びハードウェア実装論理がスター状に接続された例について記すが、本発明は、この例に限定されるものではない。例えば内部に複数のスイッチを有し、接続が必要な各ハードウェア及びハードウェア実装論理が通信可能なように接続されていればそれで良い。
【００３８】
Ｉ／Ｏインターフェース３１１は、上位装置（例えば、プロセサ１１２）と接続するハードウェア実装論理であり、スイッチ３１４を介してＮＶＭモジュールコントローラ３１０の各部位と接続する。Ｉ／Ｏインターフェース３１１は、上位装置からの各種コマンドを受領し、ＮＶＭモジュールコントローラ３１０内部のＲＡＭ３１３に記録する。また、Ｉ／Ｏインターフェース３１１は、上位装置からのコマンドを受領した際に、ＮＶＭモジュールコントローラ３１０内部の組み込みプロセサ３１５に割り込みを行うか、または組み込みプロセサ３１５がポーリングしているＲＡＭ３１３上の記憶領域に、コマンドを受領したことを通知するデータを記録する。
【００３９】
組み込みプロセサ３１５は、スイッチ３１４を介してＮＶＭモジュールコントローラ３１０の各部位と接続し、ＲＡＭ３１３に記録されたプログラム及び管理情報を基にＮＶＭモジュールコントローラ３１０全体を制御する。また、組み込みプロセサ３１５は、定期的な情報取得、及び割り込み受信機能によって、ＮＶＭモジュールコントローラ３１０全体を監視する。
【００４０】
データバッファ３１６は、ＮＶＭモジュールコントローラ３１０でのデータ転送処理途中の一時的なデータを格納する。
【００４１】
ＦＭインターフェース３１７は、複数バス、例えば16本のバスによってＦＭ３２０からＦＭ３２８と接続する。各バスは、ＦＭ３２０からＦＭ３２８の中の複数（例えば４）のＦＭを接続し、同じくＦＭに接続されるＣＥ（Chip Enable）信号を用い、同一バスに接続された複数ＦＭを独立して制御する。
【００４２】
ＦＭインターフェース３１７は、組み込みプロセサ３１５より指示されるリード／ライト要求に応じて動作する。もし、リード要求であれば、指示されたＦＭから格納データをリードしデータバッファ３１６に転送し、ライト要求であれば格納すべきデータをデータバッファ３１６から呼び出し、格納先のＦＭに転送する。
【００４３】
また、ＦＭインターフェース３１７は、ＥＣＣ生成回路、ＥＣＣによるデータ損失検出回路、ＥＣＣ訂正回路（いずれも図示せず）を有し、データ書き込み時にはデータに対してＥＣＣを付加して書き込む。またデータ呼び出し時にＥＣＣによるデータ損失検出回路によって、ＦＭからの呼び出しデータを検査し、データ損失が検出された際には、ＥＣＣ訂正回路によってデータ訂正を行う。
【００４４】
以上説明した、スイッチ３１４、Ｉ／Ｏインターフェース３１１、組み込みプロセサ３１５、データバッファ３１６、FMインターフェース３１７は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）として、一つの半導体素子内で構成してもよいし、複数の個別専用ＩＣ（Integrated Circuit）を相互に接続した構成であってもよい。
【００４５】
ＲＡＭ３１３は具体的にはＤＲＡＭなどの揮発性メモリが挙げられる。ＲＡＭ３１３は、ＮＶＭモジュール１１５内で用いられるＦＭ３２０からＦＭ３２８の管理情報、各ＤＭＡ（Direct Memory Access）が用いる転送制御情報を含んだ転送リスト等を格納する。尚、ＲＡＭ３１３はデータを格納するデータバッファ３１６の機能の一部または全てを含みデータ格納に用いる構成としてもよい。
【００４６】
ここまで図３を用いて本発明が適用されるＮＶＭモジュール１１５の構成について説明した。
【００４７】
（１−３）ＦＭの内部構造
次に図４を用いてＦＭの内部構造について説明する。本実施例のＦＭ（ＦＭチップ）、例えば、ＦＭ３２０は、内部に少なくともＦＭバスインターフェース（BUS Interface）４０１、マイクロプロセサ（Micro Processor）４０２、データ転送バス４０３、ビットカウンター（Bit Counter）４０４、読み出し電圧コントロール（Read Voltage Control）４０５、ＦＭセルアレイ４０６を有し、一つの半導体チップ（半導体基板）上に形成されている。
【００４８】
ＦＭバスインターフェース４０１は、ＮＶＭモジュール１１５のＮＶＭモジュールコントローラ３１０と接続する為のＦＭインターフェース３１７に接続するインターフェースである。ＦＭ（ＦＭチップ）３２０は、ＦＭバスインターフェース４０１を通じて、ＮＶＭモジュール１１５から各種コマンドを受領し、また、ＦＭセルアレイ４０６からの情報をＮＶＭモジュール１１５に転送する。
【００４９】
マイクロプロセサ４０２は、ＦＭセルアレイ４０６に属する複数のセル（図示せず）を含むＦＭ（ＦＭチップ）を制御するプロセサである。複数のセルに対するデータの入出力を制御するマイクロプロセサ４０２は、ＦＭ内の内部バスを使って各機能部位に指示を送る。本実施例では、マイクロプロセサ４０２は、後述の最適読み出し電圧探索を制御し、リフレッシュの要否を判断することを特徴とする。
【００５０】
データ転送バス４０３は、ＦＭセルアレイ４０６からのデータ読み出しやＦＭセルアレイ４０６へのデータ記録を行う際のデータ転送を行うバスである。
【００５１】
ビットカウンター４０４は、データに含まれるビット値の０または１の個数をカウントする機能ブロックである。本実施例では、後述の最適読み出し電圧探索のために用いることを特徴とする。
【００５２】
読み出し電圧コントロール４０５は、マイクロプロセサ４０２に従って、読み出し電圧を制御する機能ブロックである。ＦＭ３２０は後述のとおり、時間経過伴いエラービットを相対的に減少させる読み出し電圧が変化するため、読み出し電圧を変更する必要がある。読み出し電圧コントロール４０５は、マイクロプロセサ４０２に従って読み出し電圧を変更する。
【００５３】
ＦＭセルアレイ４０６は、Ｙデコード（Decode）４０７、Ｘデコード（Decode）４０８、電圧測定部（Sensing）４０９、データを記録するセル群（図示せず）で構成される。このセル群によりデータの記憶領域を構成する。各セルは、電子の個数に応じた閾値電圧を保持する。ＦＭ３２０の記憶領域は、最小消去単位であるブロック４２０によって、複数のブロック４２０に分割されている。各ブロック４２０は、さらに最小書き込み単位であるページ、例えば、ページ４１０、４１１、４１２に分割されている。ページ４１０、４１１、４１２は、同一にデータの書き込みやデータの読み込みがなされる８KB個や16KB個等のセル群により構成されている。
【００５４】
またページ４１０、４１１、４１２の中には、データとＥＣＣを組み合わせたＥＣＣＣＷ（Error Correction Code Word）を格納している。データは、ＦＭ３２０が保持すべきデータであり、このデータに生じるエラービットを訂正する目的で、マイクロプロセサ４０２は、ＥＣＣを算出し、データに結合してＥＣＣＣＷを作成し、作成したＥＣＣＣＷをＦＭ３２０に記録している。
【００５５】
ＦＭセルアレイ４０６は、マイクロプロセサ４０２からの要求に応じて、ＦＭセルアレイ４０６内の所定のページにデータを記録し、また所定のページからデータを読み出す。本実施例において読み出したデータは、ＦＭバス（図示せず）または、ビットカウンター４０４に転送される。
【００５６】
ＭＬＣ（Multi Level Cell）やＴＬＣ（Triple Level Cell）、ＱＬＣ（Quad Level Cell）といったタイプのＦＭ３２０は、一つのセルに複数のページのbit値を記録する。このため、ブロック４２０を構成するページ（４１０、・・・）は、それぞれ特定のセル群を共有している。本実施例では、ＭＬＣタイプのＦＭ３２０について記述するが、この構成においては、２つのページが、一つのセルを共有している。図４の例では、ページ（ページ０）４１０とページ（ページ１）４１１、ページ（ページＮ−１）４１３とページ（ページＮ）４１４が、それぞれセル群を共有するページである。以降このセル群を共有するページをペアページと呼ぶ。
【００５７】
（１−４）ＦＭにおけるエラービット発生概要
本発明は、ＦＭ３２０に生じるエラービット数がＥＣＣにて訂正可能な範囲に留めておく為、リフレッシュを実施し、データ保持の信頼性を向上させるものである。この技術を説明する前に、ＦＭ３２０におけるエラービット発生の概要について図５を用いて説明する。
【００５８】
図５は、一つのセルに２bitの値（ビット値）を格納するＭＬＣ（Multi Level Cell）の閾値電圧の分布を模式的に示した図である。ＦＭ３２０としてＭＬＣタイプのものを用いる場合、マイクロプロセサ４０２は、２bitの値を一つのセルに格納するために、複数のセルの閾値電圧（閾値電圧範囲）を４つのレベル（Level）１〜４に区分し、各レベルに２bitの値を対応付けて管理している。例えば、Level1 = 11b（「11」ビット）、 Level2 = 01b（「01」ビット）、 Level3 = 00b（「00」ビット）、 Level4 = 10b（「10」ビット）である。図５（ａ）に示すのが、データ記録直後の閾値電圧の分布である。データ記録時に、ＦＭ３２０では、指定されたbit値に対応した閾値電圧となるようにセルに電子を注入するが、電子のセルへの注入は不安定なため、複数のセル群を同一の目標とする閾値電圧となるように電子を注入しても、セル群の閾値電圧は、図５（ａ）に示す各閾値電圧分布５０１〜５０４のようにばらつく。
【００５９】
一般に、各レベルを区分する閾値電圧（各レベル間の境界を示す閾値電圧）５２１、５２２、５２３は、前述のばらつき（セル群の閾値電圧のばらつき）を考慮して設定されており、セル群の閾値電圧がばらついても、目標とする閾値電圧と区分する閾値電圧のマージンで吸収可能な範囲に収まる。
【００６０】
閾値電圧分布５０１は、Level1の目標とした閾値電圧となるように記録したセル群（例えば、「０１」のデータが格納されるページ１、２に属するセル群）の閾値電圧分布である。
【００６１】
閾値電圧分布５０２は、Level2の目標とした閾値電圧となるように記録したセル群（例えば、「００」のデータが格納されるページ３、４に属するセル群）の閾値電圧分布である。
【００６２】
閾値電圧分布５０３は、Level3の目標とした閾値電圧となるように記録したセル群の閾値電圧分布である。
【００６３】
閾値電圧分布５０４は、Level4の目標とした閾値電圧となるように記録したセル群の閾値電圧分布である。
【００６４】
図５（ｂ）に示す閾値電圧の分布は、図５（ａ）に示した閾値電圧分布のセルが、時間経過により変化したことを示している。セルに注入されている電子は、時間経過とともにセルから放出されるため、閾値電圧分布５０４は、時間経過により閾値電圧５２３より低い方向に移動し、閾値電圧分布５１４に遷移する。このとき、閾値電圧分布５１４の一部のセルの閾値電圧は、Level4とLevel3との境界を区分するための閾値電圧５２３を下回っている。このため、仮に、Level4とLevel3との境界を区分するための閾値電圧５２３を読み出し電圧として用いた場合には、Level4に属するセルであっても、データ読み出し時にはLevel3と判断される。
【００６５】
Level4やLevel3等の各閾値電圧のレベルは、前述のとおりbit値に対応付けられているため、記録時の閾値電圧が時間変化により変化すると読み出し時のbit値が変わる。これによってエラービットが発生する。
【００６６】
（１−５）最適読み出し電圧探索処理
図５に示したように時間経過により、セル群の閾値電圧は徐々に移動する。このため、各レベルを区分する閾値電圧をリード時の読み出し電圧として用いてデータをリードした場合、エラービットの個数はデータを記録してからの経過時間に応じて変化する。しかし、エラービット数は、一般的に各閾値電圧分布の重なりが小さいところほど少なくなるため、閾値電圧の移動（変化）に合わせて、読み出し電圧（各レベルを区分する閾値電圧）を適切に変更すると、エラービットを減少させることが可能になる。
【００６７】
例えば、Level3とLevel4との境界を区分するための閾値電圧５２３は、記録直後の閾値電圧分布５０４と閾値電圧分布５０３とを区分するには適切であったが、時間経過後の閾値電圧分布５１３と閾値電圧分布５１４とを区分するには、図５に示す位置より閾値電圧を下降させた電圧を読み出し電圧とした方がエラービットを減少させる事が可能となる。
【００６８】
従って、リード時にセルからデータをリードする際に確実なエラービット訂正を可能とするためには、読み出し電圧の最適化が必要となる。
【００６９】
本実施例のＮＶＭモジュール１１５は、閾値電圧分布の移動（変化）にあわせて、読み出し電圧（各レベルを区分する閾値電圧）を最適化することで、ＦＭ３２０からのデータリードにおけるエラービットを削減し、信頼性を維持している。また、本実施例においては、このエラービットを減少させる最適な読み出し電圧の値を用いて、ＦＭ３２０のマイクロプロセサ４０２がリフレッシュの要否を決定する。
【００７０】
次に、本実施例におけるＦＭが実施する最適読み出し電圧の探索方法について図６を用いて説明する。図６は、ＭＬＣセルにおけるLevel3を目標とした閾値電圧となるように記録したセル群の閾値電圧分布５０３とLevel4を目標とした閾値電圧となるように記録したセル群の閾値電圧分布５０４の境界において、エラービットを削減する読み出し電圧を探索する場合の例について記したものである。
【００７１】
ＦＭ３２０の閾値電圧分布５０３と閾値電圧分布５０４との境界を探索する最適読み出し電圧探索処理において、本実施例のＦＭ３２０は、閾値電圧分布５０３から探索を開始する。なお、本実施例のＦＭ３２０はリード対象ページのビット値を、読み出し電圧より下で閾値電圧がLevel3と判断されれば０、読み出し電圧より上でLevel4と判断されれば１とそれぞれ対応付けている。
【００７２】
最初にＦＭ３２０は、マイクロプロセサ４０２の制御により読み出し電圧コントロール４０５を制御して、探索用読み出し電圧として、例えば、図６（ａ）に示すように、読み出し電圧６０１を用いてセルアレイ４０６内のページ（例えば、ページ４１０）からデータを読み出す。そして、そのデータをビットカウンター４０４に転送し、データ中のビット値０（Level3に属するセルであって、ビット値「00」のデータが記録されたセルのビット値０）の個数（セルの個数）をカウントする。次に、マイクロプロセサ４０２は、読み出し電圧コントロール４０５を制御して、読み出し電圧として、例えば、読み出し電圧６０２を用いて、先と同一のページからデータを読みだし、そのデータをビットカウンター４０４に転送し、データ中のビット値１（Level4に属するセルであって、ビット値「10」のデータが記録されたセルのビット値１）の個数（セルの個数）をカウントする。この処理を、以降、読み出し電圧６０３から読み出し電圧６０７に掛けて順に行う。
【００７３】
そして、となりの読み出し電圧との差分を求める。例えば、読み出し電圧６０１にて読み出したデータに含まれるビット値０の個数（セルの個数）と、読み出し電圧６０２にて読み出したデータに含まれるビット値０の個数（セルの個数）との差を計算する。この処理を読み出し電圧６０１から読み出し電圧６０７に掛けて順に行った例を図６（ｂ）に示す。
【００７４】
図６（ｂ）には、各読み出し電圧の変更内容６２０と、各読み出し電圧の変更により変化した対象ページのデータに含まれる０の個数６２１の変化を示している。２つの閾値電圧分布５０３、５０４を適切に分離する境界では、読み出し電圧を変更したことによる０の個数（セルの個数）が少なくなる。このため、図６（ｂ）に示す値から、マイクロプロセサ４０２は、二つの閾値電圧分布５０３、５０４の適切な境界は、読み出し電圧６０３と読み出し電圧６０４との間にあると認識する。そして、この適切な境界は、一般にエラービットを軽減できる可能性の高い領域であるため、読み出し電圧６０３と読み出し電圧６０４との間の電圧が準最適な読み出し電圧であるので、本実施例のＦＭ３２０は、この準最適な読み出し電圧を「最適読み出し電圧」として記す。この最適読み出し電圧は、各レベルを区分する読み出し電圧毎に設定することができ、各最適読み出し電圧を、それぞれ読み出し時のビット値の判定基準となる判定基準電圧として管理することができる。
【００７５】
この際、マイクロプロセサ４０２は、各セルから各セルの閾値電圧を読み出し、読み出した各セルの閾値電圧と、複数のレベル（Level）１〜４のうち相隣接する二つのレベルの少なくとも一方のレベルに属する電圧であって、最適読み出し電圧（判定基準電圧）の上下に亘って変更される複数の読み出し電圧（探索用読み出し電圧）６０１〜６０７とを順次比較し、読み出した各セルの閾値電圧が、各探索用読み出し電圧より小さい場合のビット値の個数を、各探索用読み出し電圧を変更する毎に算出し、各算出したビット値の個数が最小となる二つの探索用読み出し電圧を選出し、選出した二つの探索用読み出し電圧から新たな探索用読み出し電圧を生成し、生成した新たな探索用読み出し電圧といずれかの判定基準電圧との差が設定値から外れる場合、生成した新たな探索用読み出し電圧で、いずれかの判定基準電圧を変更することができる。
【００７６】
また、マイクロプロセサ４０２は、各セルから各セルの閾値電圧を読み出し、読み出した各セルの閾値電圧と、複数のレベル（Level）１〜４のうち相隣接する二つのレベルの少なくとも一方のレベルに属する電圧であって、各レベルを区分するための最適読み出し電圧（判定基準電圧）の上下に亘って設定された複数の読み出し電圧（探索用読み出し電圧）６０１〜６０７とを順次比較し、読み出した各セルの閾値電圧が、各読み出し電圧６０１〜６０７より小さ場合のセルの個数を読み出し電圧毎に算出し、算出したセルの個数が最小となる読み出し電圧、例えば、読み出し電圧６０４をレベル（Level）3・4間の境界を区分するための最適読み出し電圧（判定基準電圧）することができる。この際、例えば、読み出し電圧６０４と、各セルの閾値電圧を探索する前に設定された最適読み出し電圧（判定基準電圧）との差が設定値から外れる場合、各セルの閾値電圧を探索する前に設定された最適読み出し電圧（判定基準電圧）を、セルの個数が最小となる読み出し電圧６０４に変更することができる。なお、他のレベル間においても、同様の処理を行う。また、マイクロプロセサ４０２は、例えば、閾値電圧分布５０１〜５０４が、閾値電圧分布５１１〜５１４のように変化したことを検出した場合、検出した閾値電圧分布の変化に応じて、最適読み出し電圧（判定基準電圧）を変更することになる。
【００７７】
以上が、本実施例の最適読み出し電圧探索処理である。この処理によって、本実施例のＦＭ３２０は、時間経過により閾値電圧が変化し最適読み出し電圧が変化しても、その値を探索できる。
【００７８】
（１−６）最適読み出し電圧を用いたリフレッシュ要否判定
本実施例は、ＦＭ３２０がＮＶＭモジュールコントローラ３１０からの要求に従って、最適読み出し電圧探索を行い、リフレッシュの要否を判定し、ＮＶＭモジュールコントローラ３１０にその判断結果を通知するものである。この最適読み出し電圧を用いたリフレッシュ要否判定について以下に説明する。
【００７９】
リフレッシュは、リフレッシュ対象とした領域（一般には最小消去単位であるブロック）に格納されたデータ中に生じたエラービットがＥＣＣにより訂正可能な状態の間に、実施する必要がある。従って、リフレッシュ要否判定は、エラービットの個数を用いて判断するのが一般的である。しかし、本実施例では、ＦＭ３２０にＥＣＣ訂正回路を搭載せずにリフレッシュ要否を判断可能とするために最適読み見出し電圧を用いる。
【００８０】
一般にＦＭ３２０のセルに格納された電子は時間経過により流出する為、最適読み出し電圧は、図７に示すように時間経過に対して緩やかに下降する。図７は、本実施例における最適読み出し電圧の時間的推移を示す特性図である。また、図７に示すように閾値電圧の高いセルほど、セルに格納した電子の流出は早い為、レベルL3-L4（Level3-Level4）間の最適な読み出し電圧７０１は、レベルL1-L2（Level1-Level2）間の最適読み出し電圧７０３より短期間で大きく低下する。閾値電圧の高いセル群ほど閾値電圧の低下が早いため、あるレベルを目的として記録したセル群の閾値電圧分布は、閾値電圧が一つ下のレベルのセル群の閾値電圧分布と重なっていき、最適読み出し電圧を用いても削減できないエラービットが生じる。この最適読み出し電圧とエラービット数には相関関係があるため、事前評価にてリフレッシュの実施が必要なエラービット数に到達すると推定される最適読み出し電圧を調査しておき、この値を用いることで、最適読み出し電圧を用いたリフレッシュ要否判断が可能となる。
【００８１】
また、変更可能な読み出し電圧の範囲が制限されたＦＭ３２０を利用する場合において、最適読み出し電圧を用いたリードが出来なくなると、エラービットが急激に増加し始めるため、最適読み出し電圧の制限値（例えば、下限値）に到達する前にリフレッシュを実施する必要がある。この場合、最適読み出し電圧の制限値にマージンを持たせた値をリフレッシュ判断基準として用いることで、最適読み出し電圧の範囲が制限されたＦＭにおいて、十分に信頼性を維持可能なリフレッシュ要否判断が可能となる。
【００８２】
以上で、最適読み出し電圧を用いたリフレッシュ要否判定について説明した。
【００８３】
（１−７）リフレッシュ要否判定要求コマンド
本実施例のＮＶＭモジュール１１５は、ＮＶＭモジュールコントローラ３１０が各ＦＭに記憶領域毎のリフレッシュ要否判定を依頼し、その応答に基づいてリフレッシュを実施する。図８は、このＮＶＭモジュールコントローラ３１０から各ＦＭに転送するリフレッシュ要否判定要求のコマンドを示している。
【００８４】
リフレッシュ要否判定要求コマンド８００は、オペコード（OPCODE）８０１、ブロックアドレス（BLK_ADDRESS）８０２、ページ範囲（PAGE_RANGE）８０３、各レベル間（L1-L2、L2-L3、L3-L4）の最適読み出し電圧の上限（Upper_Limit）８０４、８０６、８０８、各レベル間（L1-L2、L2-L3、L3-L4）の最適読み出し電圧の下限（Lower_Limit）８０５、８０７、８０９の情報を有している。
【００８５】
オペコード８０１は、このコマンドが他のリード要求やライト要求のコマンドと異なり、リフレッシュ要否判定要求であることを通知するためのフィールドである。
【００８６】
ブロックアドレス８０２は、リフレッシュ要否判定の対象とするブロック４２０を通知するフィールドである。本実施例のＮＶＭモジュールコントローラ３１０は、管理する全てのＦＭ（ＦＭ３２０からＦＭ３２８）のブロック４２０に対して定期的にリフレッシュ要否判定処理を実施する。このため、ＮＶＭモジュールコントローラ３１０は、このフィールドを用いてリフレッシュ要判定のブロック４２０を順に変更する。
【００８７】
ページ範囲８０３は、リフレッシュの要否判定として検査するページを指定するフィールドである。極めて高い信頼性が要求される装置であれば、このフィールドには、ブロック４２０の全ページを検査対象として指定する。一方で、こうした全ページの検査には時間がかかるので、ブロック４２０内の一部分を指定する事が望ましい場合もある。この場合、ＮＶＭモジュール１１５は、ブロック４２０内の一部のページのみを用いてブロック４２０全体のリフレッシュ要否を判断する。
【００８８】
各レベル間の最適読み出し電圧の上限８０４、８０６、８０８は、それぞれのレベル間にてリフレッシュが必要と判断される最適読み出し電圧（判定基準電圧）の上限値を指定するフィールドである。本実施例のＦＭ３２０からＦＭ３２８は、ブロックアドレス802にて指定されたブロック４２０内のページ範囲８０３にて指定されたページ毎に最適読み出し電圧探索を行い、ページ毎の最適読み出し電圧を得る。
【００８９】
この各ページの最適読み出し電圧の平均値が各レベル間の最適読み出し電圧の上限８０４、８０６、８０８に指定された値の何れかを上回った場合、各ＦＭは、当該ブロック４２０のリフレッシュが必要と判断し、ＮＶＭモジュールコントローラ３１０に当該ブロック４２０のリフレッシュが必要という値を返送する。この基準により、リードディスターブ等の影響で閾値電圧が増加した場合に、適切なリフレッシュが可能となる。
【００９０】
各レベル間の最適読み出し電圧の下限８０５、８０７、８０９は、それぞれのレベル間にてリフレッシュが必要と判断される最適読み出し電圧（判定基準電圧）の下限値を指定するフィールドである。本実施例のＦＭ３２０からＦＭ３２８は、ブロックアドレス８０２にて指定されたブロック４２０内のページ範囲８０３にて指定されたページ毎に最適読み出し電圧探索を行い、ページ毎の最適読み出し電圧を得る。この各ページの最適読み出し電圧の平均値が各レベル間の最適読み出し電圧の下限８０４、８０６、８０８に指定された値の何れかを下回った場合、各ＦＭは、当該ブロック４２０のリフレッシュが必要と判断し、ＮＶＭモジュールコントローラ３１０に当該ブロック４２０のリフレッシュが必要という値を返送する。この基準により、データ記録後の時間経過の影響で閾値電圧が増加した場合に、適切なリフレッシュが可能となる。
【００９１】
尚、各レベル間の最適読み出し電圧の上限値や下限値について、指定されたページ群におけるページの最適読み出し電圧の平均値を用いる例について記したが、本実施例はその例に限定されるものではない。例えば、検査対象とされたページ群におけるページの一つでも最適読み出し電圧の下限を超過した場合にリフレッシュが必要と判断するとしてもよい。
【００９２】
また本実施例では、ＭＬＣを対象とした例について記述したが、本発明はこの例について限定されるものではない。例えばＴＬＣ、ＱＬＣ等において実施するとしてもよい。この場合、各レベル間の最適読み出し電圧の上限８０４、８０６、８０８、各レベル間の最適読み出し電圧の下限８０５、８０７、８０９の種類数は変化する。ＭＬＣは４つのレベル（Level1〜Level4）を区分するため３種の上限、下限を指定するフィールドを設けたが、ＴＬＣは、８つのレベル（Level1〜Level8）を区分する為７種の上限、下限を指定するフィールドを持つとしてもよい。
【００９３】
また、本実施例では、ＭＬＣの全ての読み出しで電圧について個別に上限、下限を指定するコマンドを用いるが、本発明はこの例に限定されるものではない。例えば、３種類の読み出し電圧が存在するＭＬＣにおいて、レベルL2-L3の１種類の読み出し電圧しかリフレッシュ要否判定に用いないとしてもよい。また、レベルL1-L2,L2-L3,L3-L4の読み出し電圧の合計値を指定するとしてもよい。
【００９４】
また、本実施例では、ページ範囲８０３というフィールドで、ブロック４２０内の一部のページの連続した範囲を指定する例について記すが、本発明はこの例に限定されるものはない。例えば、要否判定対象とすべきページを離散的に格納するリストであってもよい。この場合、リフレッシュ要否判定要求コマンドのフィールドには、離散的なページ番号、例えば「1,4,7,10,13,16,30,33,36」等の要否判定に用いるページ番号が個別に格納される。
【００９５】
また、本実施例では、最適読み出し電圧のみを用いたリフレッシュ要否判定について記すが、本発明はこの例に限定されるものでない。ＦＭ内部にＥＣＣ訂正回路を保有している場合には、ＦＭ内部にてデータを訂正し、エラービット個数を計量し、そのエラービット数を用いてリフレッシュ要否を判断するとしてもよい。この場合、リフレッシュ要否判定要求コマンド８００内には、リフレッシュ基準となるエラービット数をしてするフィールドを含む。
【００９６】
以上、本実施例のＦＭが対応するフレッシュ要否判定要求コマンド８００について説明した。
【００９７】
（１−８）ＮＶＭモジュールのリフレッシュ要否検査
続いて、本実施例におけるＮＶＭモジュール１１５のリフレッシュ要否検査の処理フローについて図９を用いて説明する。本実施例のＮＶＭモジュール１１５は図９に示すリフレッシュ要否検査を定期的に実行する。例えば、最低でも１日１度は実施する。または、上位のストレージ装置からのＩＯ要求がない場合に優先的に実施する。
【００９８】
ＮＶＭモジュール１１５のリフレッシュ要否検査の最初のステップＳ９０１は、ＮＶＭモジュール１１５内の組み込みプロセサ３１５がＮＶＭモジュール１１５内の独自のブロック番号におけるリフレッシュ要否検査対象のブロック番号を０とするステップである。本実施例のＮＶＭモジュール１１５は、内部に複数のＦＭ（ＦＭ３２０からＦＭ３２８）を搭載しており、各ＦＭの各ブロック４２０にＮＶＭモジュール１１５独自のブロック番号を割り当てて管理している。以降このブロック４２０の番号をＮＶＭモジュール内ブロック番号と記す。
【００９９】
ステップＳ９０１より続くステップＳ９０２は、ＮＶＭモジュール１１５内の組み込みプロセサ３１５が、ステップＳ９０１にて取得したＮＶＭモジュール内ブロック番号が示すFMのブロック４２０の管理情報を参照し、ブロック４２０の最終ページが記録された時刻を取得し、その値と現在時刻との差を計算して、ブロック４２０にデータが記録されてからの経過時間を算出し、取得するステップである。尚、本実施例のＮＶＭモジュール１１５は、全てのブロック４２０について、全部のブロック４２０の最終ページを記録した時間を保持しており、データが記録されていない消去済みブロック４２０については、そのことを示すデータが格納されている。
【０１００】
ステップＳ９０２より続くステップＳ９０３は、ステップＳ９０２にて取得されたデータより、ステップＳ９０１にて取得したＮＶＭモジュール内ブロック番号が示すブロック４２０がデータを記録中であるかを判定するステップである。データが記録されていないと判定したときには、ステップＳ９０９に遷移する。一方で、データ記録からの経過時間が正の値を示しており、データが記録されていると判定したときには、リフレッシュ要否判定を行う為にステップＳ９０４に遷移する。
【０１０１】
ステップＳ９０３から続くステップＳ９０４は、ステップＳ９０２にて取得したブロックのデータ記録後の経過時間を用いて、「リフレッシュ要」と判断するための最適読み出し電圧を取得するステップである。本実施例のＮＶＭモジュール１１５は、データを記録してからの経過時間毎に、「リフレッシュ要」と判断するための最適読み出し電圧の上限値及び下限値を変更する。一般に短期間で最適読み出し電圧が大きく変化するブロック４２０は危険であり、時間経過が長い場合には、例え大きく最適読み出し電圧が変化していても、時間経過に対して緩やかに変化していると判断し、より危険性が高まるまでリフレッシュをスキップする。この仕組みにより本実施例のＮＶＭモジュール１１５は、不要なリフレッシュを抑制している。
【０１０２】
尚、本発明はこの例に限定されるものでは無く、データ記録後の経過時間に対して、各ＦＭが「リフレッシュ要」と判断するための最適読み出し電圧の上限値及び下限値を一定としてもよい。
【０１０３】
ステップＳ９０４より続くステップＳ９０５は、ＮＶＭモジュール１１５の組み込みプロセサ３１５が各ＦＭに対して、図８に示したリフレッシュ要否判定要求コマンド８００を作成し、通知するステップである。通知を受けた各ＦＭは、この後、各ＦＭ内におけるリフレッシュ要否判定処理を行う。この詳細については図１０にて後述する。
【０１０４】
ステップＳ９０５より続くステップＳ９０６は、ＮＶＭモジュール１１５の組み込みプロセサ３１５が、リフレッシュ要否判定処理の結果を各ＦＭより取得するステップである。尚、本実施例のＮＶＭモジュール１１５は、ステップＳ９０５を実施した後、リフレッシュ要否判定処理の結果を受領するまで、他の処理を実施していないように記しているが、本発明はこの例に限定されるものではない。例えば、ＮＶＭモジュール１１５は、ステップＳ９０５を行った後、各ＦＭが内部でリフレッシュ要否判定処理を実施している為、結果を受領可能となるまで一定時間があり、この間にリードやライト等のコマンドの処理を実施するとしてもよい。また、一つのＦＭにリフレッシュ要否判定処理を要求した後、異なるＦＭにリフレッシュ要否判定処理を要求するとしてもよい。例えば、ステップＳ９０２からステップＳ９０８までの一連の処理を、搭載するＦＭの個数だけ並列に実行するとしてもよい。このように搭載するＦＭの個数だけ並行に実施することで、リフレッシュ要否検査を短期間で完了可能となる。
【０１０５】
ステップＳ９０６より続くステップＳ９０７は、ステップＳ９０６にて取得したリフレッシュ要否判定要求コマンド８００の結果として、ステップＳ９０１にて取得したＮＶＭモジュール内ブロック番号が示すブロック４２０のリフレッシュ要否判定結果が「リフレッシュ要」であった場合に、リフレッシュを実施するためにステップＳ９０７に遷移する。一方で、ステップＳ９０１にて取得したＮＶＭモジュール内ブロック番号が示すブロック４２０のリフレッシュ要否判定結果が「リフレッシュ要」でなかった場合には、ステップＳ９０９に遷移する。
【０１０６】
ステップＳ９０７より続くステップＳ９０８は、リフレッシュの処理を実施するステップである。本実施例のＮＶＭモジュール１１５におけるリフレッシュは一般的なものである。組み込みプロセサ３１５は、リフレッシュ対象のブロック４２０の有効ページ（ＮＶＭモジュールが上位装置提供する論理領域のデータが格納されているページ）からからデータを読み出し、読み出したデータ中に生じた全てのエラービットを、ＥＣＣを用いて訂正し、訂正後のデータをリフレッシュ対象ブロックとは異なる予備ブロックに記録する。この記録が終了した後、リフレッシュ対象ブロックを消去し、新たな予備ブロックとして管理する。
【０１０７】
ステップＳ９０８、ステップＳ９０３及びステップＳ９０７より続くステップＳ９０９は、組み込みプロセサ３１５が、ＮＶＭモジュール内ブロック番号をインクリメントするステップである。
【０１０８】
ステップＳ９０９より続くステップＳ９１０は、ステップＳ９０９にてインクリメントしたＮＶＭモジュール内ブロック番号が、ＮＶＭモジュール１１５が管理する最終ブロック番号より大きいかを判断するステップである。ステップＳ９０９にて算出したブロック番号が最終ブロック番号より大きい場合、組み込みプロセサ３１５は、ＮＶＭモジュール１１５が管理する全ブロック４２０についてリフレッシュ要否検査を実施したと判断し、終了する。一方で、ステップＳ９０９にて算出したブロック番号が最終ブロック番号より小さい場合、次のブロック４２０に対してリフレッシュ要否検査を実施するためステップＳ９０２に遷移する。
【０１０９】
以上で本実施例におけるＮＶＭモジュール１１５が実施するリフレッシュ要否検査の処理フローについて説明した。
【０１１０】
（１−９）ＦＭのリフレッシュ要否判定処理
続いてＦＭのリフレッシュ要否判定処理について図１０を用いて説明する。図１０に示すＦＭのリフレッシュ要否判定処理は、図９に示したステップＳ９０５においてＮＶＭモジュール１１５の組み込みプロセサ３１５が、図８にて示したリフレッシュ要否判定要求コマンド８００を各ＦＭに通知し、そのコマンドを各ＦＭが受領したときに開始される。
【０１１１】
本実施例の各ＦＭのリフレッシュ要否判定処理の最初ステップであるステップＳ１００１は、各ＦＭ内のマイクロプロセサ４０２が、リフレッシュ要否判定要求コマンド８００を受領してコマンド内のページ範囲８０３のフィールドの格納値を取得し、その値に記録されたページ番号の内、最も小さなページ番号を取得するステップである。
【０１１２】
ステップＳ１００１より続くステップＳ１００２は、マイクロプロセサ４０２の各種制御により、リフレッシュ要否判定要求コマンド８００のブロックアドレス８０２のフィールドに記載されたＦＭ内のブロック番号とステップＳ１００１にて取得したページ番号が示すページに対して前述の最適読み出し電圧探索を行うステップである。このとき、ステップＳ１００１のページ番号示すページの種別、例えば、ＬＳＢ（Least Significant Bit）、ＭＳＢ（Most Significant Bit）等により、取得可能な最適読み出し電圧が異なる。本実施例のＭＬＣタイプのＦＭ、例えば、ＦＭ３２０において、ページ種別がＬＳＢのページは、閾値電圧のLevel2-Level3の境界でのみ値が変わる為、最適読み出し電圧探索の結果、Level2-Level3の最適読み出し電圧のみが取得される。一方で、ページ種別がＭＳＢのページは、閾値電圧のLevel1-Level2とLevel3-Level4の境界で値が変わる為、最適読み出し電圧の結果Level3-Level4の境界における最適読み出し電圧が取得できる。このとき、最適読み出し電圧を取得したマイクロプロセサ４０２は、その値を内部の記憶領域に格納し保持しておく。
【０１１３】
ステップＳ１００２より続くステップＳ１００３では、最適読み出し電圧探索対象ページ番号インクリメントするステップである。本発明はリフレッシュ要否判定要求コマンド８００にリフレッシュ要否探索ページの範囲（判定対象セルが属する探索ページの範囲）を連続ページで指定する例について記すが、仮に、リフレッシュ要否判定要求コマンド８００のリフレッシュ要否探索ページの範囲に離散的なページ番号のリストが格納されている場合は、最適読み出し電圧探索対象ページ番号はインクリメントではなく、リストの次に記載されたページ番号を取得する処理となる。
【０１１４】
ステップＳ１００３より続くステップＳ１００４は、ステップＳ１００３にて取得した最適読み出し電圧探索対象ページ番号が、ＮＶＭモジュールコントローラ３１０より受領したリフレッシュ要否判定要求コマンド内のページ範囲８０３のフィールドの格納値より大きいかを判断するステップである。最適読み出し電圧探索対象ページ番号が、ページ範囲８０３のフィールドの格納値よりも大きい場合ステップＳ１００５に遷移する。一方で、最適読み出し電圧探索対象ページ番号が、ページ範囲８０３のフィールドの格納値以下の場合、最適読み出し探索を行う為にステップＳ１００２に遷移する。
【０１１５】
ステップＳ１００４より遷移するステップＳ１００５は、ページ範囲８０３のフィールドに指定されたページ数だけ繰り返したステップＳ１００２にて取得した最適読み出し電圧の値について、閾値電圧境界毎（Level1-Level2,Level2-Level3,Level3-Lever4）に平均値を算出するステップである。
【０１１６】
ステップＳ１００５より遷移するステップＳ１００６は、ステップＳ１００５にて算出した平均値が、ＮＶＭモジュールコントローラ３１０より受領したリフレッシュ要否判定要求コマンド内の最適読み出し電圧の上限値８０４、８０６、８０８及び下限値８０５、８０７、８０９のフィールドの格納値が示す範囲外にあるかを判定するステップである。本実施例の各ＦＭにおいては、最適読み出し電圧の平均値が一つでも範囲外にある場合、リフレッシュが必要と判断し、ステップＳ１００７に遷移する。一方で、各最適読み出し電圧の平均値の全てが、リフレッシュ要否判定要求コマンド８００で指定された範囲内であるとき、対象ブロック４２０のリフレッシュは不要と判断し、ステップＳ１００８に遷移する。
【０１１７】
ステップＳ１００６より遷移するステップＳ１００７は、各ＦＭがＮＶＭモジュール１１５に、リフレッシュ要否判定要求コマンド８００にて指定されたブロック４２０のリフレッシュが必要であることを通知するステップである。各ＦＭ内のマイクロプロセサ４０２は、ＮＶＭモジュール１１５のＮＶＭモジュールコントローラ３１０にリフレッシュ要否判定要求コマンド８００の応答として、「リフレッシュ要」ということを示す値を返す。
【０１１８】
ステップＳ１００６より遷移するステップＳ１００８は、各ＦＭがＮＶＭモジュール１１５に、リフレッシュ要否判定要求コマンド８００にて指定されたブロック４２０のリフレッシュが不要であることを通知するステップである。各ＦＭ内のマイクロプロセサ４０２は、ＮＶＭモジュール１１５のＮＶＭモジュールコントローラ３１０にリフレッシュ要否判定要求コマンド８００の応答として、「リフレッシュ不要」ということを示す値を返す。
【０１１９】
以上で本実施例におけるリフレッシュ要否判定処理について説明した。本実施例のリフレッシュ要否判定処理はＭＬＣのＦＭを用いた例について記したが、本発明はこの例に限定されるものでない。ＳＬＣ、ＴＬＣ、ＱＬＣ等の如何なるＦＭであってもよい。
【０１２０】
以上述べたとおり、本実施例では、ＮＶＭモジュール１１５は、内部で管理する全ＦＭの記憶領域について、定期的にリフレッシュ要否判定処理を実施する。このリフレッシュ要否判定処理は、ＦＭ内でデータ転送が完結するために、ＮＶＭモジュールコントローラ３１０と各ＦＭを繋ぐ転送経路に負荷を掛けない。このため、ＮＶＭモジュール１１５が高速に実施すべき上位装置からのリード・ライト要求により生じるデータ転送との競合率を軽減でき、ＮＶＭモジュール１１５の性能を安定させ、平均性能的な性能を向上できる。
【０１２１】
また、リフレッシュ要否判定処理はＦＭ単体で完結するため、ＮＶＭモジュール１１５は複数のＦＭに対して同時にリフレッシュ要否判定要求を通知し、リフレッシュ要否判定処理は、搭載するＦＭの個数だけ並列に実行できる。このため、単一のＮＶＭモジュールコントローラ３１０がリフレッシュ要否判定処理を実施するより、高速に実施できる。結果、単一のＮＶＭモジュールコントローラ３１０がリフレッシュ要否を判定するよりも高頻度にリフレッシュ要否判定が実施可能となり、ＮＶＭモジュール１１５の信頼性を向上できる。また、リフレッシュ要否判定を同一頻度とした場合、単一のＮＶＭモジュールコントローラ３１０が管理できるＦＭチップの個数、即ち記憶容量を増加でき、ＮＶＭモジュール１１５の記憶容量密度を向上できる。
【０１２２】
本実施例によれば、リフレッシュ要否の判断をFMチップ内の処理にて完結させることで、ＳＳＤに搭載する複数のＦＭにその処理を分散させ、またＮＶＭモジュールコントローラ３１０とＦＭ間のデータ転送量を削減できる為、ホストリクエストのリード・ライトにより生じたデータ転送との競合が軽減され、ホストリクエストに対する処理性能を向上できる。
【０１２３】
また、リフレッシュ要否の判断を複数のFMにて分散して実施することで、短期間でリフレッシュ要否の判断を完了する事ができ、リフレッシュ要否の判断の実施頻度を向上でき、信頼性を向上できる。さらに、リフレッシュ要否の判断を複数のＦＭにて分散して実施することで、同一時間でより多くの領域に対してリフレッシュ要否の判断が可能となる為、揮発性メモリ記憶モジュールの容量を増加できる。
【実施例２】
【０１２４】
実施例１では、ＮＶＭモジュール内のＮＶＭモジュールコントローラ３１０の組み込みプロセサ３１５が、各ＦＭ（ＦＭチップ）に対してリフレッシュ要否判定を要求してきた。しかし、本発明はこの例に限定されるものではない。例えば、各ＦＭが自発的にリフレッシュ要否を判定し、リフレッシュが必要と判断された際に、ＮＶＭモジュールコントローラ３１０の組み込みプロセサ３１５に割り込み通知するものでもよい。
【０１２５】
実施例２では、ＦＭ（ＦＭチップ）が自発的にその内部領域についてリフレッシュ要否を検査し、ＦＭ（ＦＭチップ）に割り込みで通知するＮＶＭモジュール１１５について説明する。尚、構成については実施例１と同等の為、省略する。
【０１２６】
実施例２のＮＶＭモジュール１１５は、装置起動時に搭載する全てのＦＭ（ＦＭ３２０からＦＭ３２８）に対してリフレッシュ条件設定コマンドを転送する。リフレッシュ条件設定コマンドは、図８に示したリフレッシュ要否判定要求コマンド８００と同等の内容（条件設定コマンドでは、リフレッシュ要否判定対象のブロック４２０を指定するものでは無いため、ブロック番号８０２は含まない）である。
【０１２７】
但し、実施例２のＮＶＭモジュール１１５の組み込みプロセサ３１５は実施例１とは異なり、リフレッシュ要否判定用の条件を装置起動時に１度だけ初期設定として各ＦＭに通知する。因みに実施例１では、データ記録毎の経過時間に応じてリフレッシュ要否判定条件を変更してきたが、実施例２は、リフレッシュ要否判定条件は、データ記録後の経過時間に応じて変更しない。
【０１２８】
実施例２の各ＦＭ（ＦＭチップ）は装置起動時の初期設定としてリフレッシュ要否判定条件を受領する。各ＦＭは、このリフレッシュ要否判定条件を、ＮＶＭモジュール１１５が停止するまで保持しておき、以降、ＮＶＭモジュールコントローラ３１０内の組み込みプロセサ３１５からの指示（リフレッシュ要否判定要求）無しで、自律してＦＭ（ＦＭチップ）内の領域を検査し、リフレッシュ要否判定を行う。
【０１２９】
実施例２の各ＦＭ（ＦＭチップ）は、各ＦＭ（ＦＭチップ）内の複数の記憶領域の中で、データが記録されているブロック４２０を管理しており、データが記録されているブロック４２０の全てを対象となるように逐次対象ブロックを変更しながら、図１１に示すリフレッシュ要否判定処理を組み込みプロセサ３１５の指示無く繰り返し実施する。従って、図１１のフローは、ＮＶＭモジュール１１５を構成する個々のＦＭ（ＦＭチップ）が、個々に実施する。
【０１３０】
図１１は、実施例２の各ＦＭのマイクロプロセサ４０２が実施するリフレッシュ要否判定の制御フローである。
【０１３１】
図１１の最初のステップであるＳ１１０１では、各ＦＭ（ＦＭチップ）がＮＶＭモジュール起動時に組み込みプロセサ３１５より受領して以降保持しているリフレッシュ要否判定条件を参照し、最適読み出し電圧探索対象ページの番号を取得する。
【０１３２】
ステップＳ１１０１より続くステップＳ１１０２からステップＳ１１０５までは、実施例１のステップＳ１００２からステップＳ１００５と同等の処理の為説明は省略する。実施例２では、ＮＶＭモジュール１１５を管理する組み込みプロセサ３１５からの指示無く、各ＦＭ（ＦＭチップ）がリフレッシュ要否判定を行う為、ステップＳ１１０６にて各最適読み出し電圧の平均値の全てが、各ＦＭが保持しているリフレッシュ要否判定条件の上限または下限の範囲内であるとき、組み込みプロセサ３１５には何も通知せずに終了となる。
【０１３３】
一方で、Ｓ１１０６にて各最適読み出し電圧の平均値のいずれかが、各ＦＭが保持しているリフレッシュ要否判定条件の上限または下限の範囲外であるとき、リフレッシュが必要と判断し、ＮＶＭモジュール１１５を管理するＮＶＭモジュールコントローラ３１０の組み込みプロセサ３１５に通知する。この通知は、実施例２の場合、組み込みプロセサ３１５への割り込みとして通知するが、本発明はこの例に限定されるものではない。例えば、組み込みプロセサ３１５が定期的にポーリングする領域に、リフレッシュが必要なブロック番号を記録するとしてもよい。
【０１３４】
以上で、実施例２の説明を終了する。実施例２によれば、ＮＶＭモジュール１１５を管理するＮＶＭモジュールコントローラ３１０の組み込みプロセサ３１５が、複数のＦＭ（ＦＭ３２０からＦＭ３２８）に対してリフレッシュ要否判定コマンド８００を通知する必要がないため、組み込みプロセサ３１５の負荷を実施例１と比べて軽減できる。このためＮＶＭモジュール１１５の性能を向上できる。
【０１３５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、プロセサ４０２とビットカウンター４０４及び読み出し電圧コントロール４０５を一体化することもできる。上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１３６】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に記録して置くことができる。
【０１３７】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１３８】
１００  ストレージ、１０２  サーバ、１１２  プロセサ、１１４  エクスパンダー、１１５  ＮＶＭモジュール、２００  サーバ、２１２  プロセサ、３１０  ＮＶＭモジュールコントローラ、３１５  組み込みプロセサ、３２０〜３２８  ＦＭ、４０２  マイクロプロセサ、４０４  ビットカウンター、４０５  読み出し電圧コントロール、４０６  ＦＭセルアレイ、４１０〜４１４  ページ、４２０  ブロック、８００  リフレッシュ要否判定要求コマンド
【図１】
2019083082.tif 000003
【図２】
2019083082.tif 000004
【図３】
2019083082.tif 000005
【図４】
2019083082.tif 000006
【図５】
2019083082.tif 000007
【図６】
2019083082.tif 000008
【図７】
2019083082.tif 000009
【図８】
2019083082.tif 000010
【図９】
2019083082.tif 000011
【図１０】
2019083082.tif 000012
【図１１】
2019083082.tif 000013