(57)【要約】【課題】ＮＡＮＤフラッシュメモリに対するパトロール処理を、高速かつ効率的に実行できるメモリシステムを実現することが求められる。【解決手段】本実施形態のメモリシステムは、不揮発性のフラッシュメモリと、コントローラ回路とを有する。前記フラッシュメモリは、複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する。前記コントローラ回路は、前記複数の物理ブロックに対して前記ページ単位でのデータの読み出し及び書き込みを制御する。前記コントローラ回路は、前記複数の物理ブロックのそれぞれから、所定数のページ毎に、当該所定数のページに記憶されたデータを順次リードする第１処理を実行し、前記所定数のページからリードしたデータの記憶状態を検査する第２処理を実行する。【選択図】図１
2019057340.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する、不揮発性のフラッシュメモリと、
前記複数の物理ブロックに対して前記ページ単位でのデータの読み出し及び書き込みを制御するコントローラ回路と、を具備し、
前記コントローラ回路は、
前記複数の物理ブロックのそれぞれから、所定数のページ毎に、当該所定数のページに記憶されたデータを順次リードする第１処理を実行し、
前記所定数のページからリードしたデータの記憶状態を検査する第２処理を実行する、
メモリシステム。
【請求項２】
前記コントローラ回路は、
前記フラッシュメモリに含まれる全物理ブロックに対して前記第１処理及び前記第２処理を繰り返し実行する、請求項１に記載のメモリシステム。
【請求項３】
前記フラッシュメモリは、
複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有し、
前記コントローラ回路は、
前記フラッシュメモリに対して、前記ページ単位でのデータの読み出し及び書き込みを制御する場合に、複数のチャネルを介して同時並列に前記複数の物理ブロックのそれぞれからデータをリードできる、請求項１に記載のメモリシステム。
【請求項４】
前記フラッシュメモリは、
全物理ブロックの中で物理的配置の異なる複数の物理ブロックを１組の物理ブロック組として、複数の物理ブロック組から構成される論理ブロックを含み、
前記コントローラ回路は、
複数の前記論理ブロックを、前記各物理ブロックのページ方向と論理ブロックのアドレス方向の行列構成とした場合に、同一ページ単位で、前記第１処理及び前記第２処理を前記アドレス方向に実行する、請求項１に記載のメモリシステム。
【請求項５】
前記コントローラ回路と前記フラッシュメモリとの間のインターフェースとして、並列にデータを伝送する複数のチャネルを含み、
前記フラッシュメモリは、前記複数のチャネルのそれぞれに対応する前記複数の論理ブロックを含み、
前記コントローラ回路は、
前記複数のチャネルに対応する複数の物理ブロックに対して、前記同一ページ単位での前記第１処理及び前記第２処理を前記アドレス方向に実行する際に、前記複数のチャネルを介して同時並列に実行できる、請求項４に記載のメモリシステム。
【請求項６】
前記コントローラ回路は、
前記第２処理の結果に基づいてリフレッシュ処理の予約を実行し、
全物理ブロックに対する前記第２処理が終了した後に前記リフレッシュ処理を実行する、請求項１に記載のメモリシステム。
【請求項７】
前記コントローラ回路は、
ホストからのコマンドに応じて前記フラッシュメモリに対するデータの読み出し又は書き込みを行うコマンド処理を実行し、
前記第１処理及び前記第２処理を、前記コマンド処理を実行しない期間に連続的又は間欠的に実行する、請求項１に記載のメモリシステム。
【請求項８】
複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する、不揮発性のフラッシュメモリと、前記複数の物理ブロックに対して前記ページ単位でのデータの読み出し及び書き込みを制御するコントローラ回路とを有するメモリシステムに適用する、メモリ制御方法であって、
前記コントローラ回路を使用して、
前記複数の物理ブロックのそれぞれから、所定数のページ毎に、当該所定数のページに記憶されたデータを順次リードする第１処理を実行すること、
前記所定数のページからリードしたデータの記憶状態を検査する第２処理を実行すること、
を有する、メモリ制御方法。
【請求項９】
前記フラッシュメモリに含まれる全物理ブロックに対して前記第１処理及び前記第２処理を繰り返し実行すること、
を有する、請求項８に記載のメモリ制御方法。
【請求項１０】
前記フラッシュメモリは、
複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有し、
前記第１処理を実行することは、
前記フラッシュメモリに対して、前記ページ単位でのデータの読み出し及び書き込みを制御する場合に、複数のチャネルを介して同時並列に前記複数の物理ブロックのそれぞれからデータをリードする、請求項８に記載のメモリ制御方法。
【請求項１１】
前記フラッシュメモリは、
全物理ブロックの中で物理的配置の異なる複数の物理ブロックを１組の物理ブロック組として、複数の物理ブロック組から構成される論理ブロックを含み、
前記第１処理及び前記第２処理を実行することは、
複数の前記論理ブロックを、前記各物理ブロックのページ方向と論理ブロックのアドレス方向の行列構成とした場合に、同一ページ単位で前記アドレス方向に実行する、請求項８に記載のメモリ制御方法。
【請求項１２】
前記メモリシステムは、前記コントローラ回路と前記フラッシュメモリとの間のインターフェースとして、並列にデータを伝送する複数のチャネルを含み、
前記フラッシュメモリは、前記複数のチャネルのそれぞれに対応する前記複数の論理ブロックを含み、
前記第１処理及び前記第２処理を実行することは、
前記複数のチャネルに対応する複数の物理ブロックに対して、前記同一ページ単位で前記アドレス方向に実行する際に、前記複数のチャネルを介して同時並列に実行する、請求項１１に記載のメモリ制御方法。
【請求項１３】
前記第２処理の結果に基づいてリフレッシュ処理の予約を実行することを有し、
全物理ブロックに対する前記第２処理が終了した後に前記リフレッシュ処理を実行する、
請求項８に記載のメモリ制御方法。
【請求項１４】
ホストからのコマンドに応じて前記フラッシュメモリに対するデータの読み出し又は書き込みを行うコマンド処理を実行することを有し、
前記第１処理及び前記第２処理を、前記コマンド処理を実行しない期間に連続的又は間欠的に実行する、請求項８に記載のメモリ制御方法。
【請求項１５】
複数のブロックを有し、前記複数のブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する、不揮発性のフラッシュメモリと、
前記複数のブロックのそれぞれに対して、各ブロックの記憶領域に記憶されたデータの状態を検査する処理を、順次前記ページ単位で実行するコントローラ回路と、
を具備する、メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年、大容量のストレージとして、３次元構造のＮＡＮＤフラッシュメモリを搭載したソリッドステート・ドライブ（solid-state drive、以下ＳＳＤと表記）と呼ばれるメモリシステムが使用されている。ＳＳＤにおいて、ＮＡＮＤフラッシュメモリに記憶されたデータが、時間の経過に伴って、又は周辺領域に対するデータのリード／ライトによって、
劣化する現象が起こり得る。そこでＳＳＤでは、ＮＡＮＤフラッシュメモリに記憶されたデータを読み出して、読み出したデータの記憶状態を検査（ベリファイ）するパトロール（Patrol）処理を周期的に実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９４６５５３７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＳＳＤは、このパトロール処理を、ＮＡＮＤフラッシュメモリに含まれる全ての記憶領域に対して実行するため、終了するまでに相当の時間を要する。そこで、ＮＡＮＤフラッシュメモリに対するパトロール処理を、高速かつ効率的に実行できるメモリシステムを実現することが求められる。
【課題を解決するための手段】
【０００５】
本実施形態のメモリシステムは、不揮発性のフラッシュメモリと、コントローラ回路とを有する。前記フラッシュメモリは、複数の物理ブロックを有し、前記複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する。前記コントローラ回路は、前記複数の物理ブロックに対して前記ページ単位でのデータの読み出し及び書き込みを制御する。前記コントローラ回路は、前記複数の物理ブロックのそれぞれから、所定数のページ毎に、当該所定数のページに記憶されたデータを順次リードする第１処理を実行し、前記所定数のページからリードしたデータの記憶状態を検査する第２処理を実行する。
【図面の簡単な説明】
【０００６】
【図１】実施形態に関するメモリシステムの構成を示すブロック図。
【図２】実施形態に関する物理ブロックの構成を説明するための図。
【図３】実施形態に関するクラスタの構成を説明するための図。
【図４】実施形態に関するページの構成を説明するための図。
【図５】実施形態に関する物理ブロック組の構成を説明するための図。
【図６】実施形態に関する論理ブロックの構成を説明するための図。
【図７】実施形態に関するパトロール処理を説明するための図。
【図８】実施形態に関するパトロール処理の手順を説明するためのフローチャート。
【図９】実施形態の変形例に関するパトロール処理の手順を説明するためのフローチャート。
【発明を実施するための形態】
【０００７】
以下図面を参照して、実施形態を説明する。
［メモリシステムの構成］
図１は、本実施形態のメモリシステムとして、ソリッドステート・ドライブ（solid-state drive: ＳＳＤ）１の構成を示すブロック図である。図１に示すように、ＳＳＤ１は、例えばコンピュータであるホスト２から転送されたデータをＮＡＮＤフラッシュメモリに記憶し、かつ、ＮＡＮＤフラッシュメモリから読み出したデータをホスト２に転送する。
【０００８】
ＳＳＤ１は、コントローラ１０と、ＤＲＡＭ（Dynamic Random Access Memory）１１と、ＮＡＮＤフラッシュメモリ（NAND-type flash memory）１２とを有する。ＤＲＡＭ１１は、ＮＡＮＤフラッシュメモリ１２に対する書き込みデータや読み出しデータ等のデータを一時的に格納するバッファメモリである。なお、バッファメモリとしては、ＤＲＡＭでなくＳＲＡＭでも良く、また例えばＭＲＡＭ（magnetoresistive random access memory）などの不揮発性メモリでも良い。
【０００９】
コントローラ１０は、ホストインターフェース１３と、プロセッサ１４と、ＮＡＮＤコントローラ１５とを有する回路として構成される。ホストインターフェース１３は、ＳＳＤ１とホスト２との間で、データ、コマンド、及びアドレスの転送を制御する。プロセッサ１４は、メインコントローラを構成し、ＤＲＡＭ１１やＮＡＮＤコントローラ１５の制御、本実施形態に関するパトロール処理、リフレッシュ（refresh）処理、ガベージ・コレクション（garbage collection）処理等を実行する。
【００１０】
パトロール処理とは、後述するように、ＮＡＮＤフラッシュメモリ１２からデータを読み出すリード処理と、リードしたデータを検査（ベリファイ:verify）する検査処理と、を含む。リフレッシュ処理は、物理ブロック内の有効データを別の物理ブロックに書き換える処理である。ガベージ・コレクション処理とは、コンパクション（compaction）処理とも呼ばれる処理であり、書き込み可能なフリー物理ブロックを確保するためのデータの再配置処理である。
【００１１】
ここで、パトロール処理に含まれるリード処理（以下、パトロールリード処理と表記する場合がある）のリード動作は、ホスト２からのコマンドとは関係しない、ＳＳＤ１の自発的なデータの読み出し動作である。なお、リフレッシュ処理及びガベージ・コレクション処理に含まれるリード動作も同様に、ＳＳＤ１の自発的なデータの読み出し動作である。
【００１２】
コントローラ１０は、ＮＡＮＤコントローラ１５とＮＡＮＤフラッシュメモリ１２との間で、並列にデータを伝送するインターフェースとして、複数のチャネル（CH0〜CH17）８０を含む。ＮＡＮＤコントローラ１５は、例えば、１８個のチャネル（CH0〜CH17）８０を経由し、ＮＡＮＤフラッシュメモリ１２に対して並列にデータを伝送できる。即ち、ＮＡＮＤコントローラ１５は、後述する各物理ブロックに対してデータを同時並列に読み出し、または書き込むことができる。ＮＡＮＤコントローラ１５は、プロセッサ１４の制御に基づいて、ホスト２に対するデータの読み出し処理及び書き込み処理以外に、前記のパトロール処理、リフレッシュ処理、またはガベージ・コレクション処理に伴うデータの読み出し処理及び書き込み処理を実行する。
【００１３】
ＮＡＮＤフラッシュメモリ１２は、不揮発性メモリ（nonvolatile memory）であり、複数のメモリチップを有する。後述するように、各メモリチップはそれぞれ、複数の物理ブロックから構成されている。物理ブロックは、ＮＡＮＤフラッシュメモリ１２内で独立して消去可能な最小の記憶領域単位である。物理ブロックは、複数の物理ページから構成される。物理ページは、ＮＡＮＤフラッシュメモリ１２に対するデータのリード及びライト（プログラム）の最小単位である。
［ＮＡＮＤフラッシュメモリの構成］
以下、図２から図６を参照して、ＮＡＮＤフラッシュメモリ１２の構成を説明する。図２に示すように、１個のメモリチップ（1chip）２０は、複数の物理ブロック２１を含んで構成されている。１個の物理ブロック２１は、前述したように、独立して消去可能な最小の記憶領域単位である。なお、以下の図で説明する物理的又は論理的な構成において、各々の数は一例であり、これらの値に限定されるものではない。
【００１４】
１個のメモリチップ２０は、例えば２９５６ブロックの物理ブロック(便宜的にBlock(0)〜Block(2955)を設定)を含む。また、後述する論理ブロックの構成に関係して、プレーン（Plane0）の１個の物理ブロック２１と、プレーン（Plane1）の１個の物理ブロック２１の論理的組み合わせを、１物理ブロック組（Block Group）として定義する。１個のメモリチップ２０は、例えば１４７８組（便宜的にBlock Group(0)〜Block Group(1477)を設定）の物理ブロック組を含む。
【００１５】
図２に示すように、１個の物理ブロック２１は、例えば、７６８個のページ（便宜的にPage(0)〜Page(767)を設定）３０を含む。ここで、図３に示すように、１ページ３０は、例えば４個のクラスタ（cluster #0〜#3）２３を含む。この場合、１個の物理ブロック２１は、７６８ページ×４クラスタ＝３０７２クラスタを含むので、３０７２個のクラスタに相当する記憶容量を有する。
【００１６】
図４は、１個のクラスタ２３の構成を示す図である。図４に示すように、１個のクラスタ２３は、例えば、ＬＣＡ（logical cluster address）を含む管理情報、８個のセクタ（sector#0〜#7）２５、及びＥＣＣ（error correcting code）２６を含む。クラスタ２３は、ＬＣＡ（logical cluster address）により指定される。ＥＣＣ２６として、例えばＢＣＨ符号が使用される。
【００１７】
セクタ２５は、ホスト２からの最小のデータアクセス単位であり、例えば、５１２バイト、５２０バイト、または５２８バイトのサイズである。ＮＡＮＤコントローラ１５は、１個のメモリチップ２０から、物理的にはページ単位でデータを読み出すが、論理的にはクラスタ２３又はセクタ２５の単位でのデータの読み出しが可能である。
【００１８】
図２に戻って、プレーン（Plane0）の１個の物理ブロック２１と、プレーン（Plane1）の１個の物理ブロック２１の論理的な組み合わせを、１物理ブロック組（Block Group）４０として定義する。具体的には、図５に示すように、例えば、Plane0の１個の物理ブロック(Block(0))２１と、Plane1の１個の物理ブロック（Block(1478)）２１は、Block Group(0)の物理ブロック組４０を構成する。物理ブロック組４０は論理的な組み合わせであり、の物理ブロック（Block(0)）２１と、物理ブロック(Block(1478))２１は、物理的に分離されて配置される。なお、１物理ブロック組４０は、「１個の物理ブロック×２プレーン」であり、３０７２クラスタ×２プレーン＝６１４４クラスタを含むので、６１４４個のクラスタに相当する記憶容量を有する。
【００１９】
図６は、１個の論理ブロック５０の構成を示す図である。１個の論理ブロック５０は、複数のチャネル（CH0-CH17）８０と、複数（ここでは２個）のバンク（BANK-0,BANK-1）６０と、に亘って、複数の物理ブロック組４０がグループ化されている構成である。なお、１バンクで複数の物理ブロック組４０を構成する場合もある。ここで、各物理ブロック組４０は、それぞれが７６８個のページ（Page(0)〜Page(767)）を含むプレーン（Plane0）、（Plane1）の各物理ブロックの論理的な組み合わせを含む。また、ＮＡＮＤコントローラ１５は、例えば、メモリチップ２０を選択するチップセレクト信号ＣＳを使用して２個のバンク（BANK-0,BANK-1）６０を切り替える。
【００２０】
前述したように、１個の論理ブロック５０を構成する各物理ブロック組４０に含まれる各物理ブロック２１は、それぞれ、例えば、７６８ページ（Page(0)〜Page(767)）３０を含んで構成される。従って、論理ブロック５０は、１個の物理ブロック組（３０７２クラスタ）×１８チャネル×２バンク＝２２１１８４クラスタを含むので、２２１１８４クラスタに相当する記憶容量を有する。
【００２１】
ＮＡＮＤコントローラ１５は、後述するパトロール処理において、図６に示す論理ブロック５０に対して、各チャネル（CH0-CH17）８０から同時並列に、バンク（BANK-0）６０の物理ブロック組４０の各物理ブロックからページ単位のデータ（例えば、Page(0)のデータ）を読み出すことができる。同様に、チャネル（CH0-CH17）８０から同時並列に、バンク（BANK-1）６０の物理ブロック組４０の各物理ブロックからページ単位のデータ（例えば、Page(0)のデータ）を読み出すことができる。なお、ＮＡＮＤコントローラ１５は、設定されるコマンドに応じて、プレーン単位で、又は複数のプレーン（Plane0,Plane1）同時に、データを読み出すアクセスも可能である。
［パトロール処理］
次に、図７及び図８を参照して、本実施形態のパトロール処理を説明する。図７は、論理ブロック５０のうち、チャネル（CH0-CH17）８０の１チャネル（例えばCH0）に接続される全ての論理ブロック要素７０を示す図である。図８は、当該パトロール処理の手順を説明するためのフローチャートである。
【００２２】
図７に示すように、各論理ブロック要素７０は、メディアブロックアドレス（Media Block Address: ＭＢＡ）により指定される。ここでは、ＭＢＡは、複数のアドレス（MBA-0〜MBA-LAST）から構成される。アドレス（MBA-LAST）は、ＭＢＡの最終アドレスを意味する。ここで、１チャネル（CH0）分の論理ブロック要素７０（例えばアドレス(MBA-0）)は、「１個の物理ブロック組×２バンク＝４物理ブロック」から、例えば、４個の物理ブロックを含む。
【００２３】
コントローラ１０は、ホスト２からのコマンドに応じて、ＮＡＮＤコントローラ１５を制御して、ＮＡＮＤフラッシュメモリ１２に対するデータのリード動作又はライト動作を全チャネル８０並列に実行する。ライト動作は、ＮＡＮＤフラッシュメモリ１２のメモリセルへのプログラムを含む。
【００２４】
ここで、ＮＡＮＤフラッシュメモリ１２は、記憶されたデータが、時間の経過に伴って、又は周辺領域に対するデータのリード／ライトによって、劣化する現象が起こり得ることが確認されている。そこで、コントローラ１０は、定期的にＮＡＮＤフラッシュメモリ１２に対してパトロール処理を実行して、記憶されたデータの記憶状態（品質）を検査する。
【００２５】
本実施形態では、パトロール処理は、ＮＡＮＤフラッシュメモリ１２の全物理ブロックからデータをページ単位で読み出す処理、及び検査（ベリファイ）する処理を含む。これらの処理を包括してパトロールリード処理と表記する場合がある。パトロールリード処理は、エラーレートの検査ではなく、リードしたデータが正しくリードできたか否か、訂正失敗しなかったか等のチェックでもよい。また、パトロールリード処理は、ＥＣＣを伴うリードリトライ（強度や特性の上昇、又は閾値の変更等の処理を含む）を制限しても良い。
【００２６】
コントローラ１０は、パトロール処理の検査結果に基づいて、当該物理ブロック内のエラーレート又はエラー数が許容範囲を超える場合には、リフレッシュ処理の予約に移行する。当該リフレッシュ処理は、物理ブロック内のページ単位の有効データを別の物理ブロックに書き換える処理である。リフレッシュ処理は、ガベージ・コレクション処理とは異なり、複数のブロックの有効データを集めることなく、１個のブロックの有効データを別の１個の物理ブロックに書き換える動作を実行する。コントローラ１０は、予約されたページ単位のリフレッシュ処理を、全物理ブロックのパトロールリード処理の終了後に一括して実行する。
【００２７】
本実施形態では、コントローラ１０は、ホスト２からのコマンドに応じたリード動作又はライト動作を優先的に実行し、それらの実行期間を除き、定期的にＮＡＮＤフラッシュメモリ１２の全物理ブロック（Block(0)〜Block(2955)）に対してパトロール処理を実行する。具体的には、図７に示すように、コントローラ１０は、チャネル８０毎の全ＭＢＡ（MBA-0〜MBA-LAST）に含まれる物理ブロック組４０に対して、ページ単位でデータをリードしてベリファイするパトロールリード処理を、ページ３０の方向よりもＭＢＡの方向を優先的に実行する（処理方向１００を参照）。ここで、１チャネル（CH0）分の論理ブロック要素７０（例えばアドレス(MBA-0）)は、２バンク（BANK-0,BANK-1）で４個の物理ブロックを含む。
【００２８】
図８を参照して、当該パトロール処理の手順を説明する。図８に示すように、コントローラ１０は、初期設定として、論理ブロック要素７０のＭＢＡを最初のアドレス（MBA-0）に設定し、かつ、ページ番号をPage(0)-(767)のうち最初のPage（0）に設定する（Ｓ１）。コントローラ１０は、MBA-0の各物理ブロックのPage(0)から、ページ単位でパトロール処理を実行する（Ｓ２）。
【００２９】
ここで、前述したように、図７は、１チャネル（例えばCH0）分のMBA-0〜MBA-LASTの論理ブロック要素７０を示している。実際には、ＮＡＮＤコントローラ１５は、全チャネル（CH0〜CH17）に対して同時並列に、バンク（Bank-0）６０の物理ブロック組４０の物理ブロック（ここではBlock(0)）のPage(0)からページ単位のデータ（４クラスタ）をリードしてベリファイする。同様にして、ＮＡＮＤコントローラ１５は、バンク（Bank-0）６０の物理ブロック組４０の物理ブロック（ここではBlock(1478)）のPage(0)からページ単位のデータ（４クラスタ）をリードしてベリファイする。バンク（Bank-0）６０の物理ブロック組４０に含まれる物理ブロック（Block(0)）と物理ブロック（Block(1478)）とは、物理的には分離された配置関係にある（図２を参照）。
【００３０】
ここで、コントローラ１０は、全チャネル８０の各チャネル（CH0〜CH17）に接続された各論理ブロック要素７０に対してチャネル（CH0〜CH17）毎にパトロール処理を実行する。コントローラ１０は、Page(0)において、論理ブロック要素７０のＭＢＡを１インクリメントして、次のアドレス（MBA-1）に設定して（Ｓ３）、前述のようなパトロール処理を実行する（Ｓ２）。コントローラ１０は、Page(0)において、論理ブロック要素７０の最終アドレス（MBA-LAST）の各物理ブロックに対してパトロール処理が終了するまで継続する（Ｓ４のＮＯ）。コントローラ１０は、Page(0)に関するパトロール処理が終了すると（Ｓ４のＹＥＳ）、現在のページ番号を１インクリメントする（Ｓ５）。具体的には、コントローラ１０は、ページ番号（Page(0)-(767)）からページ番号（Page(0)）を１インクリメントした次のページ番号（Page(1)）を設定する（Ｓ５）。
【００３１】
同様にして、コントローラ１０は、全チャネル８０の各チャネル（CH0〜CH17）に接続された各論理ブロック要素７０に対してチャネル（CH0〜CH17）毎にパトロール処理を実行する。コントローラ１０は、Page(1)において、論理ブロック要素７０のＭＢＡを１インクリメントして、次のアドレス（MBA-1）に設定して（Ｓ３）、前述のようなパトロール処理を実行する（Ｓ２）。コントローラ１０は、Page(1)において、最初のアドレス（MBA-0）から最終アドレス（MBA-LAST）までの各論理ブロック要素７０の各物理ブロックに対してパトロール処理が終了するまで継続する（Ｓ４のＮＯ）。コントローラ１０は、Page(1)に関するパトロール処理が終了すると（Ｓ４のＹＥＳ）、現在のページ番号を１インクリメントする（Ｓ５）。具体的には、コントローラ１０は、ページ番号（Page(0)-(767)）からページ番号（Page(1)）を１インクリメントした次のページ番号（Page(2)）を設定する（Ｓ５）。コントローラ１０は、以上の処理を繰り替えし、最後のページ番号（Page(767)）において、最終アドレス（MBA-LAST）の各論理ブロック要素７０の各物理ブロックに対してパトロール処理が終了すると、全物理ブロックに対するパトロール処理を終了する（Ｓ６のＹＥＳ）。
【００３２】
以上のようして本実施形態によれば、設定されるページ番号（Page(0)-(767)）において、全チャネル(CH0〜CH17)８０に対して同時並列に、各物理ブロックからページ単位のパトロール処理を、ページ（Page(0)-(767)）３０の方向よりもＭＢＡの方向を優先して実行する。即ち、まずＭＢＡの方向に実行した後にページ３０の方向に実行することを繰り返す（図７の処理方向１００を参照）。即ち、本実施形態では、論理ブロック要素７０に含まれる各物理ブロックの全ページ（Page(0)-(767)）のうち、１ページのみに対してパトロール処理を実行した後、次の論理ブロック要素７０に順次移行し、それぞれの１ページのみに対してパトロール処理を実行する。これを、全論理ブロック要素７０の各物理ブロックの全ページに対してパトロール処理が終了するまで継続する。
【００３３】
従って、各論理ブロック要素に含まれる各物理ブロック内のページ方向を優先してパトロール処理を実行する従来の方法と比較して、本実施形態の方法は、全論理ブロック要素に亘って、各物理ブロックに対するパトロール処理を高速かつ効率的に行うことが可能である。具体的には、従来の方法では、論理ブロック要素に含まれる物理ブロック毎の全ページに対して順にパトロール処理を実行するため、例えば物理的な欠陥を有する物理ブロックを含む論理ブロック要素に対するパトロール処理が終了するまで相当の時間を要することがあった。これに対して、本実施形態の方法は、各物理ブロックの同一ページに対して優先的にパトロール処理を実行することにより、全論理ブロック要素に亘るパトロール処理を短時間で終了できる。
【００３４】
以下、本実施形態の作用効果を具体的に説明する。
【００３５】
便宜的に、図７に示す論理ブロック要素（MBA-0）７０のPage(0)において、バンク（BANK-0）６０の物理ブロック組４０（Plane0,Plane1）に注目した場合に、Plane0の物理ブロック（Block(0)）と、Plane1の物理ブロック（Block（1478））とは、物理的には分離された配置関係にある。従って、各物理ブロックは相互に品質相関が低い。
【００３６】
即ち、従来の方法では、各物理ブロック内のページ番号の方向を優先してパトロール処理を実行するため、同一物理ブロック内で品質相関が高い各領域に対しても、本来不要なパトロール処理を実行することになる。これに対して、本実施形態は、相互に品質相関が低い各物理ブロックの方向に対するパトロール処理を優先的に実行するため、品質相関が高い各領域に対するパトロール処理を省略することが可能となるため、結果としてパトロール処理の高速化及び効率化を図ることができる。
【００３７】
要するに、本実施形態によれば、定期的に実行するパトロール処理の高速化及び効率化を図ることができる。
【００３８】
なお、本実施形態は、図７に示すように、パトロール処理を、ＭＢＡの方向に、全ページ番号分を連続的に実行する場合について説明したが、ホスト２からのコマンドに応じて実行するユーザデータのリード動作又はライト動作が優先される。従って、パトロール処理は、全ページ番号分を連続的に実行されず、例えば、ページ番号毎又は物理ブロック毎の間欠的な実行となることがある。
［変形例］
図９は、本実施形態の変形例に関するパトロール処理の手順を説明するためのフローチャートである。
【００３９】
図８に示したパトロール処理は、初期設定として、ページ番号をPage(0)に設定し（Ｓ１）、順次、ページ番号を次のページ番号に変更する（Ｓ５）、手順であった。これに対して、本変形例は、ページ番号（Page(0)-(767)）の設定順序を順不同とする手順である。
【００４０】
図９に示すように、コントローラ１０は、初期設定として、論理ブロック要素７０のＭＢＡを最初のアドレス（MBA-0）に設定する（Ｓ１０）。次に、コントローラ１０は、ページ番号をPage(0)-(767)から最初の任意のPage(N)を選択する（Ｓ１１）。ここで、任意のPage(N)はPage(0)でも良い。コントローラ１０は、MBA-0の各物理ブロックのPage(N)（ここではPage(0)）から、ページ単位でパトロール処理を実行する（Ｓ１２）。
【００４１】
ここで、前述したように、コントローラ１０は、全チャネル８０の各チャネル（CH0〜CH17）に接続された各論理ブロック要素７０に対してチャネル（CH0〜CH17）毎にパトロール処理を実行する。コントローラ１０は、Page(0)において、論理ブロック要素７０のＭＢＡを１インクリメントして、次のアドレス（MBA-1）に設定して（Ｓ１３）、前述のようなパトロール処理を実行する（Ｓ１２）。コントローラ１０は、Page(0)において、論理ブロック要素７０の最終アドレス（MBA-LAST）の各物理ブロックに対してパトロール処理が終了するまで継続する（Ｓ１４のＮＯ）。
【００４２】
コントローラ１０は、Page(0)に関するパトロール処理が終了すると（Ｓ１４のＹＥＳ）、全物理ブロックに対してパトロール処理を終了したか否かを判定する（Ｓ１５）。パトロール処理が終了していない場合（Ｓ１５のＮＯ）、コントローラ１０は、ページ番号（Page(1)-(767)）から次のページ番号（例えば、（Page(767)）を選択する（Ｓ１１）。ここで、次のページ番号は、同一の物理ブロック内で、最も品質相関が低いと判定した領域に対応するページ番号を、順不動に選択してもよい。具体的には、例えば、前のページ番号がPage(0)であれば、同一物理ブロック内で最も品質相関が低い領域に対応するページ番号として、Page(767)を選択する。
【００４３】
同様にして、コントローラ１０は、Page（767）において、論理ブロック要素７０の最終アドレス（MBA-LAST）の各物理ブロックに対してパトロール処理が終了するまで継続する（Ｓ１４のＮＯ）。コントローラ１０は、最後に選択したページ番号（例えば、Page(1)）において、論理ブロック要素７０の最終アドレス（MBA-LAST）の各物理ブロックに対してパトロール処理が終了すると、全物理ブロックに対するパトロール処理を終了する（Ｓ１５のＹＥＳ）。
【００４４】
以上のような本変形例においても、本実施形態と同様に、定期的に実行するパトロール処理の高速化及び効率化を図ることができるため、必要な時間内に補正処理を確実に実行できる。
【００４５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４６】
１…ＳＳＤ、２…ホスト、１０…コントローラ、１１…ＤＲＡＭ、
１２…ＮＡＮＤフラッシュメモリ、１３…ホストインターフェース、
１４…プロセッサ、１５…ＮＡＮＤコントローラ、
ＣＨ０〜ＣＨ１７…チャネル。
【図１】
2019057340.tif 000003
【図２】
2019057340.tif 000004
【図３】
2019057340.tif 000005
【図４】
2019057340.tif 000006
【図５】
2019057340.tif 000007
【図６】
2019057340.tif 000008
【図７】
2019057340.tif 000009
【図８】
2019057340.tif 000010
【図９】
2019057340.tif 000011