(57)【要約】【課題】不正電源断後の起動処理時間を短縮すること。【解決手段】実施形態のメモリシステムのコントローラ回路は、ホストから半導体メモリへのデータの書き込みを指示する命令を受領したことに応じて、半導体メモリの複数の物理ブロックのうちの第２の物理ブロックにデータを書き込むときは、第１のアドレスと第１の論理番号および第２の論理番号との対応付けを変更して第１の管理情報を更新し、所定の電源遮断手順を経ない電源断である不正電源断後において、不正電源断前に半導体メモリに書き込み途中だった第３の物理ブロックのデータを他の第４の物理ブロックに移動させるときは、データの移動元である第３の物理ブロックに割り当てられた第１の物理ブロック番号に対応する第１の論理番号の対応先をデータの移動先である第４の物理ブロックに割り当てられた第２の物理ブロック番号に変更して第２の管理情報を更新する。【選択図】図１
2019168898.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有する不揮発性の半導体メモリと、
ホストからのデータに割り当てられたアドレスに対応する第１のアドレスと前記第１のアドレスに対応するデータの記憶位置を特定する第１の論理番号および第２の論理番号とが対応付けられた第１の管理情報、および、前記複数の物理ブロックのうちの所定数の第１の物理ブロックに割り当てられた物理ブロック番号と前記第１の論理番号とが対応付けられた第２の管理情報を更新するコントローラ回路と、を備え、
前記コントローラ回路は、
前記ホストから前記半導体メモリへのデータの書き込みを指示する命令を受領したことに応じて、前記半導体メモリの前記複数の物理ブロックのうちの第２の物理ブロックにデータを書き込むときは、前記第１のアドレスと前記第１の論理番号および前記第２の論理番号との対応付けを変更して前記第１の管理情報を更新し、
所定の電源遮断手順を経ない電源断である不正電源断後において、前記不正電源断前に前記半導体メモリに書き込み途中だった第３の物理ブロックのデータを他の第４の物理ブロックに移動させるときは、前記データの移動元である前記第３の物理ブロックに割り当てられた第１の物理ブロック番号に対応する第１の論理番号の対応先を前記データの移動先である前記第４の物理ブロックに割り当てられた第２の物理ブロック番号に変更して前記第２の管理情報を更新する、
メモリシステム。
【請求項２】
複数の物理ブロックを有する不揮発性の半導体メモリと、
ホストからのデータに割り当てられたアドレスに対応する第１のアドレスと前記第１のアドレスに対応するデータの記憶位置を特定する第１の論理番号および第２の論理番号とが対応付けられた第１の管理情報、および、前記複数の物理ブロックのうちの所定数の第１の物理ブロックに割り当てられた物理ブロック番号と前記第１の論理番号とが対応付けられた第２の管理情報を更新するコントローラ回路と、を備え、
前記コントローラ回路は、
前記ホストから前記半導体メモリへのデータの書き込みを指示する命令を受領したことに応じて、前記半導体メモリの前記複数の物理ブロックのうちの第２の物理ブロックにデータを書き込むときは、前記第１のアドレスと前記第１の論理番号および前記第２の論理番号との対応付けを変更して前記第１の管理情報を更新し、
前記ホストからの前記命令とは独立して実行され前記複数の物理ブロックのうちの所定数の第３の物理ブロックに記憶されたデータを前記所定数の他の第４の物理ブロックに書き換えるときは、前記データの移動元である前記第３の物理ブロックに割り当てられた第１の物理ブロック番号に対応する第１の論理番号の対応先を前記データの移動先である前記第４の物理ブロックに割り当てられた第２の物理ブロック番号に変更して前記第２の管理情報を更新する、
メモリシステム。
【請求項３】
前記複数の物理ブロックは、それぞれ複数の論理領域を有し、
前記コントローラ回路は、
前記第３の物理ブロック内における前記データが記憶されている論理領域の配置位置を維持して前記第４の物理ブロックに前記データを移動する、
請求項１または請求項２に記載のメモリシステム。
【請求項４】
前記第２の論理番号は、前記複数の物理ブロックがそれぞれ有する複数の論理領域に対して付与され、
前記コントローラ回路は、
前記第３の物理ブロック内における前記データの論理領域の第２の論理番号を維持して前記第４の物理ブロックに前記データを移動する、
請求項１乃至請求項３のいずれか１項に記載のメモリシステム。
【請求項５】
前記コントローラ回路は、
所定量未満のデータが処理されるときは前記第１の管理情報を更新し、
所定量以上のデータが処理されるときは前記第２の管理情報を更新する、
請求項１乃至請求項４のいずれか１項に記載のメモリシステム。
【請求項６】
前記ホストからの前記命令とは独立して実行される処理では、所定量以上のデータが、前記第３の物理ブロックから前記第４の物理ブロックに書き換えられる、
請求項２に記載のメモリシステム。
【請求項７】
前記ホストからの前記命令とは独立して実行される処理は、所定の電源遮断手順を経ない電源断である不正電源断時にデータの書き込みが行われていた前記第３の物理ブロック内に存在するデータのうち、不正電源断時の書き込み以前から存在していたデータ、及び不正電源断時に既に書き込みが終了していたデータを前記第４の物理ブロックに移動させるクリーンアップ処理である、
請求項２または請求項６に記載のメモリシステム。
【請求項８】
前記ホストからの前記命令とは独立して実行される処理は、自然放電により記憶したデータが失われる前、または、隣接するセルへのリード処理が繰り返されることにより記憶したデータの値が変化する前に、予め、前記第３の物理ブロックに記憶したデータを前記第４の物理ブロックに書き換えるリフレッシュ処理である、
請求項２または請求項６に記載のメモリシステム。
【請求項９】
前記ホストからの前記命令とは独立して実行される処理は、前記第３の物理ブロックが属する消去回数の少ない前記複数の物理ブロックから、消去回数の多い複数の物理ブロックに移し替える場合に、前記第３の物理ブロックに記憶したデータを前記第４の物理ブロックに書き換えるウェアレベリング処理である、
請求項２または請求項６に記載のメモリシステム。
【請求項１０】
複数の物理ブロックを有する不揮発性の半導体メモリを具備し、ホストに接続されるメモリシステムの制御方法であって、
ホストからのデータに割り当てられたアドレスに対応する第１のアドレスと前記第１のアドレスに対応するデータの記憶位置を特定する第１の論理番号および第２の論理番号とが対応付けられ、
前記複数の物理ブロックのうちの所定数の第１の物理ブロックに割り当てられた物理ブロック番号と前記第１の論理番号とが対応付けられているときに、
前記ホストから前記半導体メモリへのデータの書き込みを指示する命令を受領したことに応じて、前記半導体メモリの前記複数の物理ブロックのうちの第２の物理ブロックにデータを書き込むときは、前記第１のアドレスと前記第１の論理番号および前記第２の論理番号との対応付けを、第２のアドレスと前記第１の論理番号および前記第２の論理番号とが対応付けられるように更新し、
前記ホストからの前記命令とは独立して実行され前記複数の物理ブロックのうちの第３の物理ブロックに記憶されたデータを他の第４の物理ブロックに書き換えるときは、前記データの移動元である前記第３の物理ブロックに割り当てられた第１の物理ブロック番号に対応する第１の論理番号の対応先を前記データの移動先である前記第４の物理ブロックに割り当てられた第２の物理ブロック番号に更新する、
メモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム及びメモリシステムの制御方法に関する。
【背景技術】
【０００２】
近年、不揮発性の半導体メモリであるＮＡＮＤ型フラッシュメモリを搭載したメモリシステムの大容量化が進行している。このようなメモリシステムとして、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が注目されている。メモリシステムは、ＮＡＮＤ型フラッシュメモリよりも高速にアクセス可能な半導体メモリを搭載している。
【０００３】
メモリシステムは、不正電源断が生じると、不正電源断後に再び電源が正常に供給されることに伴って起動後の処理を行う。起動後の処理では、不正電源断により、ＮＡＮＤ型フラッシュメモリに書き込めなかったデータに関するデータの書き換えを行うことがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１５７１３９号公報
【特許文献２】特開２０１２−１２８６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの実施形態は、不正電源断後の起動処理時間を短縮することができるメモリシステム及びメモリシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態のメモリシステムは、複数の物理ブロックを有する不揮発性の半導体メモリと、ホストからのデータに割り当てられたアドレスに対応する第１のアドレスと前記第１のアドレスに対応するデータの記憶位置を特定する第１の論理番号および第２の論理番号とが対応付けられた第１の管理情報、および、前記複数の物理ブロックのうちの所定数の第１の物理ブロックに割り当てられた物理ブロック番号と前記第１の論理番号とが対応付けられた第２の管理情報を更新するコントローラ回路と、を備え、前記コントローラ回路は、前記ホストから前記半導体メモリへのデータの書き込みを指示する命令を受領したことに応じて、前記半導体メモリの前記複数の物理ブロックのうちの第２の物理ブロックにデータを書き込むときは、前記第１のアドレスと前記第１の論理番号および前記第２の論理番号との対応付けを変更して前記第１の管理情報を更新し、所定の電源遮断手順を経ない電源断である不正電源断後において、前記不正電源断前に前記半導体メモリに書き込み途中だった第３の物理ブロックのデータを他の第４の物理ブロックに移動させるときは、前記データの移動元である前記第３の物理ブロックに割り当てられた第１の物理ブロック番号に対応する第１の論理番号の対応先を前記データの移動先である前記第４の物理ブロックに割り当てられた第２の物理ブロック番号に変更して前記第２の管理情報を更新する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態にかかるメモリシステムの構成例を示す図である。
【図２】図２は、実施形態にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図３】図３は、実施形態にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図４】図４は、実施形態にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図５】図５は、実施形態にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図６】図６は、実施形態にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図７】図７は、実施形態にかかるメモリシステムの制御動作の手順の一例を示すフローチャートである。
【図８】図８は、比較例にかかるメモリシステムの物理ブロックとブロックグループとの対応関係を説明する図である。
【図９】図９は、実施形態の変形例１にかかるメモリシステムの制御動作の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に、本発明につき図面を参照しつつ詳細に説明する。なお、下記の実施形態により、本発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が容易に想定できるものあるいは実質的に同一のものが含まれる。
【０００９】
図１〜図９を用いて、実施形態のメモリシステム及びメモリシステムの制御処理について説明する。
【００１０】
［メモリシステムの構成例］
図１は、実施形態にかかるメモリシステム１の構成例を示す図である。図１に示すように、メモリシステム１は、ホスト２と所定の規格に基づいた通信インタフェースで接続される。ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバ等である。メモリシステム１は、ホスト２からアクセスコマンドを受け付けることができる。アクセスコマンドは、リード（読み出し）コマンド、ライト（書き込み）コマンド、及びフラッシュコマンド等である。フラッシュコマンドは、遅滞しているデータのライトをＮＡＮＤ型フラッシュメモリ２０に強制的に完遂させるコマンドである。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示す。メモリシステム１は、例えば、ライトコマンドとともに、書き込み対象のデータを受け付ける。また、メモリシステム１は、ホスト２からまたは他の装置から、電源を供給され、この電源により動作する。
【００１１】
メモリシステム１は、メモリコントローラ１０と、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリと称する）２０と、を備えている。メモリコントローラ１０は、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を実行する回路である。なお、メモリシステム１は、ＮＡＮＤメモリ２０の代わりに任意の不揮発性メモリ、例えばＮＯＲ型フラッシュメモリ、を備えることができる。
【００１２】
不揮発性の半導体メモリとしてのＮＡＮＤメモリ２０は、１以上のメモリチップ２１を含む。図１の例では、ＮＡＮＤメモリ２０は４つのメモリチップ２１を含んでいる。各メモリチップ２１は、複数の物理ブロック３０を備える。物理ブロック３０は、例えばデータのイレースが実行され得る最小の記憶領域である。物理ブロック３０は、複数のページを備える。ページは、例えばＮＡＮＤメモリ２０内部でデータのリードまたはデータのプログラムが実行され得る最小の記憶領域である。各物理ブロック３０には、１ページより小さい単位に対して物理アドレスが割り当てられる。この単位をクラスタという。１クラスタのサイズは、ホスト２からの最小のアクセス単位と等しくてもよいし大きくてもよい。１クラスタのサイズが、ホスト２からの最小のアクセス単位よりも大きい場合、１クラスタのサイズは、最小のアクセス単位の２以上の整数倍であればよい。
【００１３】
複数の物理ブロック３０により、１つの論理的な管理単位（ブロックグループ）が構成される。例えば、それぞれが異なるメモリチップ２１に属する複数の物理ブロック３０によって、１つのブロックグループが構成される。ブロックグループを構成する複数の物理ブロック３０に記憶されているデータは、一括してイレースされ得る。
【００１４】
１つのブロックグループに属する複数の物理ブロック３０がそれぞれ備える複数のページ（物理ページ）は、１つの管理単位（ページグループ）を構成する。１つのページグループは、１つのブロックグループに属する複数の物理ブロック３０それぞれの同一のページ番号のページによって構成される。１つのページグループを構成する複数のページには、データのリードまたはデータのプログラムが並列に実行され得る。
【００１５】
コントローラ回路としてのメモリコントローラ１０は、ホスト２から、ＮＡＮＤメモリ２０に対してデータをライトするアクセスコマンドを受理したことに応じて、ＮＡＮＤメモリ２０の或る物理ブロック３０にデータをライトする。物理ブロック３０にデータがライトされたときは、メモリコントローラ１０は、基本的には、後述する第１の対応テーブル４１を更新する。また、メモリコントローラ１０は、不正電源断が発生すると、不正電源断があったことを示すフラグを立てる。不正電源断とは、ホスト２から所定の終了コマンドが発行されることなくメモリシステム１への電源の供給が遮断されてしまうことである。また、メモリコントローラ１０は、不正電源断後において、不正電源断時に書き込み途中だった物理ブロック３０を含むブロックグループ内の複数（あるいは全て）の物理ブロック３０のクリーンアップを、ＮＡＮＤメモリ２０に行わせる。ここで、不正電源断時とは、不正電源断が起こった正にその時のことである。また、不正電源断後とは、不正電源断があった後、最初にメモリシステム１に電源が供給されたときのことである。クリーンアップとは、物理ブロック３０内の有効データを他の物理ブロック３０へ移動させることである。有効データとは、不正電源断時にデータの書き込みが行われていた物理ブロック３０内に存在するデータのうち、不正電源断時の書き込み以前から存在していたデータ、及び不正電源断時に既に書き込みが終了していたデータのことである。不正電源断時に、或る物理ブロック３０に書き込み途中だったデータは損傷している恐れがある。そこで、かかる物理ブロック３０内の他の有効データの保全を図るため、メモリコントローラ１０は、それら他の有効データを別の物理ブロック３０に移動させる。クリーンアップが行われたことに伴って、メモリコントローラ１０は、後述する第２の対応テーブル４２を更新する。
【００１６】
上記機能を実現するため、メモリコントローラ１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ホストインタフェース（ホストＩ／Ｆ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ＮＡＮＤコントローラ１４と、を備える。
【００１７】
ＣＰＵ１１は、ファームウェアプログラムに基づいてメモリコントローラ１０の制御を実行する。ファームウェアプログラムは、例えばＮＡＮＤメモリ２０などの不揮発性の半導体メモリに予め格納されており、起動時にＮＡＮＤメモリ２０から読み出され、ＲＡＭ１３に展開されてＣＰＵ１１によって実行される。
【００１８】
ＣＰＵ１１は、ホスト２からの書き込み対象のデータをＮＡＮＤメモリ２０に書き込む際には、空き領域からそのデータの書き込み先の物理的位置を決定する。物理的位置は、物理アドレスによって表記される。空き領域とは、有効データが記憶されていない領域であり、新たなデータのライトが可能な領域である。ＣＰＵ１１は、当該データの位置を示す論理アドレスに、決定された書き込み先の物理的位置をマッピングする。
【００１９】
ＲＡＭ１３は、一時記憶領域を提供するメモリである。ＲＡＭ１３を構成するメモリの種類は、特定の種類に限定されない。例えば、ＲＡＭ１３は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、またはこれらの組み合わせによって構成される。ＲＡＭ１３には、管理情報１３ａが格納される。
【００２０】
管理情報１３ａは、少なくとも、第１の管理情報としての第１の対応テーブル４１及び第２の管理情報としての第２の対応テーブル４２を含む。第１の対応テーブル４１には、第１のアドレスとしての論理クラスタアドレスが登録されている。論理クラスタアドレスは、ホスト２に提供される論理アドレス空間内においてデータに割り当てられた位置を示す論理アドレスに対応し、第１の論理番号としてのブロックグループ番号および第２の論理番号としての論理クラスタ番号が対応付けられている。ブロックグループ番号および論理クラスタ番号は、それぞれ、メモリシステム１内の論理的な管理単位である。ＮＡＮＤメモリ２０のいずれかの物理ブロック３０にデータがライトされたときは、通常、第１の対応テーブル４１が更新される。第２の対応テーブル４２には、ブロックグループ番号とＮＡＮＤメモリ２０の複数の物理ブロック３０それぞれに割り当てられた物理ブロック番号とが対応付けられて登録されている。不正電源断後のクリーンアップのように、多量のデータ移動が生じたときは、第２の対応テーブルが更新される。第１の対応テーブル４１及び第２の対応テーブル４２を参照することで、メモリコントローラ１０は、ホスト２からアクセスコマンドとともに送信される論理アドレスを、ＮＡＮＤメモリ２０における物理的なデータの記憶位置に対応付けることができる。
【００２１】
ホストインタフェース１２は、メモリコントローラ１０とホスト２との間の通信インタフェースの制御を実行する。ホストインタフェース１２は、ＣＰＵ１１による制御の下で、ホスト２とＲＡＭ１３との間のデータ転送を実行する。
【００２２】
ＮＡＮＤコントローラ１４は、ＣＰＵ１１による制御の下で、ＮＡＮＤメモリ２０とＲＡＭ１３との間のデータ転送を実行する。即ち、ＣＰＵ１１による制御の下で、ホスト２とＮＡＮＤメモリ２０との間のデータ転送は、ＲＡＭ１３を介して実行される。
【００２３】
［第１、第２の対応テーブル］
次に、図２〜図６を用い、ＮＡＮＤメモリ２０の第１の対応テーブル４１及び第２の対応テーブル４２について更に説明する。図２〜図６は、実施形態にかかるメモリシステム１の物理ブロック３０ａ〜３０ｈとブロックグループ３１ｌｇ，３２ｌｇとの対応関係を説明する図である。
【００２４】
図２に示すように、第２の対応テーブル４２は、前述した物理ブロック番号と、前述したブロックグループ番号との対応関係を登録する。図２の例では、物理ブロック番号Ａ〜Ｄの物理ブロック３０ａ〜３０ｄは、ブロックグループ番号＃１のブロックグループ３１ｌｇに対応付けられている。物理ブロック番号Ｅ〜Ｈの物理ブロック３０ｅ〜３０ｈは、ブロックグループ番号＃２のブロックグループ３２ｌｇに対応付けられている。
【００２５】
また、図２においては、各物理ブロック３０内に含まれるクラスタＣのうち、有効データが記憶されているクラスタＣのみ示している。なお、各物理ブロック３０に含まれる全てのクラスタＣには、論理クラスタ番号が付与されている。論理クラスタ番号は、１つのブロックグループ３０ｌｇにおいて、最初の物理ブロック３０の最初のクラスタＣから最後の物理ブロック３０の最後のクラスタＣまで順に番号を振ったものである。このとき、例えば、ブロックグループ３１ｌｇに対応付けられる物理ブロック３０ｂ内の所定位置にあるクラスタＣの論理クラスタ番号は、ブロックグループ３２ｌｇに対応付けられる物理ブロック３０ｅ内の同一の所定位置にあるクラスタＣの論理クラスタ番号と同一にすることが可能である。つまり、物理ブロック３０ｂ内の所定位置のクラスタＣと、他の物理ブロック３０ｅ内の同一の所定位置のクラスタＣとは、物理ブロック番号が異なるが論理クラスタ番号が同一の論理クラスタアドレスを有することができる。
【００２６】
図３に示すように、クラスタ番号順配列３０ｃｌは、１つのブロックグループ３０ｌｇ（ここではブロックグループ３１ｌｇ）に対応付けられた複数の物理ブロック３０（ここでは物理ブロック３０ａ〜３０ｄ）の各クラスタＣを論理クラスタ番号順に並べて展開した様子の一例を示すものである。図３においては、複数のクラスタＣのうち、有効データが記憶されているクラスタＣのみについて、各物理ブロック３０内の位置とクラスタ番号順配列３０ｃｌ内の位置との対応関係を矢印で示している。図３に示すように、クラスタ番号順配列３０ｃｌ内および各物理ブロック３０内において、有効データが記憶されているクラスタＣは纏まらず分散することがある。なお、クラスタ番号順配列３０ｃｌ内には、必ずしも全ての論理クラスタ番号が格納されているとは限らない。論理クラスタ番号が格納されていない論理クラスタアドレスは、未使用か、ホスト２から無効化要求があって削除されたことを表すデータが格納される。
【００２７】
図４は、クラスタ番号順配列３０ｃｌに展開されたクラスタＣと、ブロックグループ３０ｌｇ内におけるクラスタＣｌｇの位置との対応関係を示すものである。図４においては、複数のクラスタＣのうち、有効なデータが記憶されているクラスタＣのみについて、ブロックグループ３０ｌｇ内の位置とクラスタ番号順配列３０ｃｌ内の位置との対応関係を矢印で示している。
【００２８】
第１の対応テーブル４１は、ホスト２から指定される論理アドレスに対応する論理クラスタアドレスと、これに対応するブロックグループ３０ｌｇのブロックグループ番号およびそのブロックグループ３０ｌｇ内における論理クラスタ番号との対応関係を示す。つまり、所定の論理クラスタアドレスは、これに対応するブロックグループ番号と論理クラスタ番号とにより特定される。
【００２９】
ここで、図５に示すように、物理ブロック３０ａに、新たに２つのクラスタＣ分のデータが記憶されたものとする。それに応じて、メモリコントローラ１０は、第１の対応テーブル４１を更新する。つまり、第１の対応テーブル４１に、新たにデータが追加された２つのクラスタＣのブロックグループ番号および論理クラスタ番号が、この新たなデータに対応する論理クラスタアドレスに対応付けられる。
【００３０】
ところで、不正電源断後のクリーンアップでは膨大な量のデータの書き換えが発生する。これに伴って、書き換えられたデータに対応する論理アドレスと、このデータがＮＡＮＤメモリ２０内で記憶された物理的な位置と、の対応関係が変わる。そこで、メモリコントローラ１０は、クリーンアップ時には、第１の対応テーブル４１を更新する代わりに、第２の対応テーブル４２を更新する。その詳細を図６に示す。
【００３１】
図６において、不正電源断時に、ブロックグループ３１ｌｇに含まれる物理ブロック３０ａ〜３０ｄの一部の領域に対してデータの書き込み途中であったとする。メモリコントローラ１０は、不正電源断後のクリーンアップにより、ブロックグループ３１ｌｇ（物理ブロック３０ａ〜３０ｄ）の他の領域の全ての有効データ（書き込みが完了していたデータ及びすでに記憶されていた有効データ）を、例えばフロックグループ３２ｌｇに含まれる物理ブロック３０ｅ〜３０ｈに移動させる。このとき、ＮＡＮＤメモリ２０は、各物理ブロック３０ａ〜３０ｄ内におけるデータの物理位置（物理的なクラスタ位置）を維持したまま、物理ブロック３０ｅ〜３０ｈに全ての有効データを移動させる。これにより、各データは、ブロックグループ番号が異なるが論理クラスタ番号が同一である物理的な位置に移動されることとなる。
【００３２】
これに伴って、メモリコントローラ１０は、ブロックグループ番号と物理ブロック番号との対応関係を変更するよう第２の対応テーブル４２を更新する。つまり、データの移動先である物理ブロック３０ｅ〜３０ｈの対応先を、ブロックグループ３２ｌｇからブロックグループ３１ｌｇに変更する。データの移動元である物理ブロック３０ａ〜３０ｄは、ブロックグループ３１ｌｇから他のブロックグループ３０ｌｇ（例えば、ブロックグループ３２ｌｇ）に変更される。かかる対応付けの変更後には、移動後の各データが記憶されるクラスタＣのブロックグループ番号および論理クラスタ番号は、移動前の各データが記憶されていたクラスタＣのブロックグループ番号および論理クラスタ番号と同一となる。つまり、移動後の各データが記憶されるクラスタＣの論理クラスタアドレスが、移動前の各データが記憶されていたクラスタＣの論理クラスタアドレスと同一となる。
【００３３】
このように、第１の対応テーブル４１を更新せず、第２の対応テーブル４２を更新することで、移動したデータの論理クラスタアドレスを、移動後のデータの物理的な記憶位置に対応付けることができる。換言すれば、第２の対応テーブル４２を更新するだけで、移動したデータの論理クラスタアドレスで、移動後のデータの物理的な記憶位置を特定することができる。
【００３４】
［メモリシステムの動作例］
次に、図７を用い、メモリシステム１における制御動作の例について説明する。図７は、実施形態にかかるメモリシステム１の制御動作の手順の一例を示すフローチャートである。
【００３５】
メモリシステム１における制御動作では、ホスト２から書き込み、またはフラッシュの命令が発行されてＮＡＮＤメモリ２０の物理ブロックのデータを更新するときは、そのデータに割り当てられた論理クラスタアドレスと、そのデータが新たに記憶されたデータ記憶位置（ブロックグループ番号および論理クラスタ番号）との対応を更新する。一方、メモリコントローラ１０のデータ移動要求に応じて、ＮＡＮＤメモリ２０の或る物理ブロックの所定数以上のデータを他の物理ブロックに移動するときは、データの移動元の物理ブロック番号に対応するブロックグループ番号の対応先をデータの移動先の物理ブロック番号に更新する。
【００３６】
すなわち、図７に示すように、Ｓ１０において、メモリシステム１が起動されると、Ｓ２０において、メモリシステム１は、起動処理を行う。起動処理においては、ＮＡＮＤメモリ２０からのファームウェアプログラムの読み出し、ＮＡＮＤメモリ２０に記憶される管理情報のＲＡＭ１３への展開等が行われる。
【００３７】
また、Ｓ３０において、メモリシステム１のメモリコントローラ１０は、今回の起動が、不正電源断後の起動であるか否かを確認する。つまり、メモリコントローラ１０は、不正電源断があったことを示すフラグの有無を確認する。不正電源断後の起動でなかった場合は（Ｎｏ）、処理はＳ５１ｂへ進む。
【００３８】
不正電源断後の起動であった場合は（Ｓ３０のＹｅｓ）、Ｓ４０において、メモリコントローラ１０は、クリーンアップが必要か否かを判定する。クリーンアップが不要であれば（Ｎｏ）、処理はＳ５１ｂへ進む。
【００３９】
不正電源断時に書き込み途中だった物理ブロック３０が存在し、クリーンアップが必要な場合は（Ｓ４０のＹｅｓ）、Ｓ５２ａにおいて、メモリコントローラ１０は、クリーンアップ処理を行う。クリーンアップ処理によりデータ移動がなされた後、つまり、多量のデータ移動がなされた後は、Ｓ６０ａにおいて、メモリコントローラ１０は、第２の対応テーブル４２を更新する。その後、Ｓ５１ｂにおいて、メモリコントローラ１０は、ホスト２からのアクセスコマンドの受信を待機し（Ｎｏ）、アクセスコマンドを受信したら（Ｙｅｓ）、Ｓ５２ｂにおいてＮＡＮＤメモリ２０にデータを更新させ、Ｓ６０ｂにおいて第１の対応テーブル４１を更新する。
【００４０】
以上により、メモリシステム１の制御動作が終了する。
【００４１】
［比較例］
ここで図８を用いて、比較例のメモリシステムによる動作を説明する。比較例のメモリシステムにおいては、不正電源断後のクリーンアップ時において、第２の対応テーブル４２’ではなく、第１の対応テーブル４１’の更新により、論理クラスタアドレスと移動後のデータの物理的な記憶位置との対応を取る。
【００４２】
すなわち、図８に示すように、不正電源断時に書き込み途中であった物理ブロック３０ａ’〜３０ｄ’から物理ブロック３０ｅ’〜３０ｈ’へとデータを移動させたものとする。比較例のメモリコントローラは、このデータの移動に伴って、通常のライト時と同様、第１の対応テーブル４１’を更新する。しかしながら、これにより、膨大な量のデータ移動に伴う膨大な量の第１の対応テーブル４１’の更新が必要となってしまい、起動処理時間が長期化してしまう。
【００４３】
実施形態のメモリシステム１においては、第１の対応テーブル４１ではなく、第２の対応テーブル４２を更新する。これにより、移動したデータが記憶された物理ブロック３０とブロックグループ３０ｌｇとの対応を変更するだけの更新で、移動したデータの物理位置を特定することができる。このとき、移動前後で、論理クラスタアドレスとデータ記憶位置との対応は変更されない。よって、膨大な量のデータを移動させても、ごく簡単な更新作業で済み、起動処理時間を短縮することができる。
【００４４】
［変形例１］
実施形態の構成は、データ保持を図るリフレッシュ時にも適用することができる。
【００４５】
ＮＡＮＤ型フラッシュメモリにおいては、自然放電により記憶したデータが失われること、または、隣接するセルへのリード処理が繰り返されることにより記憶したデータの値が変化することを抑制するため、記憶したデータを異なる物理位置に書き換えるリフレッシュが行われる。リフレッシュ時には、リフレッシュ対象となる物理ブロックから他の物理ブロックへとデータを移動させるため、膨大な量のデータ移動が発生する。
【００４６】
そこで、実施形態の変形例１のメモリコントローラ１０ａは、リフレッシュ時においても、第１の対応テーブル４１ではなく、第２の対応テーブル４２を更新する。
【００４７】
すなわち、実施形態の変形例の第２の対応テーブル４２は、上述の実施形態と同様に、ＮＡＮＤ型フラッシュメモリ２０における複数の物理ブロックそれぞれの物理ブロック番号がブロックグループ番号に対応付けられている。データの保持を図るリフレッシュ時において、リフレッシュ対象のデータをそのデータが記憶されていた物理ブロックから他の物理ブロックに移動させるときは、データの移動元の物理ブロック番号に対応するブロックグループ番号の対応先がデータの移動先の物理ブロック番号に更新される。このときの、実施形態の変形例１にかかるメモリシステムの制御動作の手順の一例を、図９のフローチャートを用いて説明する。
【００４８】
図９に示すように、Ｓ１４０において、実施形態の変形例１のメモリコントローラ１０ａは、前回のプログラムまたはイレースからの経過時間が閾値に至ったか、隣接セルへのリード回数が閾値に至ったか、を含むリフレッシュの実行条件を満たすか否かを判定する。実行条件を満たさない場合（Ｎｏ）、メモリコントローラ１０ａは、Ｓ１５１ｂにおいて、ホスト２からのアクセスコマンドの受信を待機し（Ｎｏ）、アクセスコマンドを受信したら（Ｙｅｓ）、Ｓ１５２ｂにおいてＮＡＮＤメモリ２０にデータ更新させ、Ｓ１６０ｂにおいて第１の対応テーブル４１を更新する。
【００４９】
リフレッシュの実行条件を満たしている場合は（Ｓ１４０のＹｅｓ）、Ｓ１５１ａにおいて、メモリコントローラ１０ａは、所定の物理ブロックに対するリフレッシュを行う。リフレッシュ要求に応じてデータ移動がなされた後、つまり、多量のデータ移動がなされた後は、Ｓ１６０ａにおいて、メモリコントローラ１０ａは、第２の対応テーブル４２を更新する。
【００５０】
これらの動作を、メモリコントローラ１０ａは、Ｓ１７０においてメモリシステムの電源が遮断されるまで繰り返す。
【００５１】
以上により、メモリシステムの制御動作が終了する。
【００５２】
このように、実施形態の変形例１のメモリシステムでは、リフレッシュに伴う多量のデータ移動時に、第１の対応テーブルではなく、第２の対応テーブルの更新を行う。これにより、素早くリフレッシュを完了させることができる。
【００５３】
［変形例２］
実施形態の構成は、書き込み数の均一化を図るウェアレベリング時にも適用することができる。
【００５４】
ウェアレベリングとは、書き込み頻度の低いデータを保持し、消去回数の少ない物理ブロックを保持するブロックグループのデータを、消去回数の多い物理ブロックを保持するブロックグループに移し替えることで、物理ブロック間における書き込み回数の均一化を図る技術である。消去回数の少ない物理ブロックを保持するブロックグループのデータを、消去回数の多い物理ブロックを保持するブロックグループに移し替える際に多量のデータ移動が生じ得る。
【００５５】
このように、実施形態の変形例２のメモリシステムでは、ウェアレベリングに伴う多量のデータ移動時に、第１の対応テーブルではなく、第２の対応テーブルの更新を行う。これにより、素早くウェアレベリングを完了させることができる。
【００５６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５７】
１…メモリシステム、２…ホスト、１０、１０ａ…メモリコントローラ、１１…ＣＰＵ、１２…ホストインタフェース、１３…ＲＡＭ、１３ａ…管理情報、１４…ＮＡＮＤコントローラ、２０…ＮＡＮＤ型フラッシュメモリ、３０…物理ブロック、３０ｌｇ…ブロックグループ、４１…第１の対応テーブル、４２…第２の対応テーブル、Ｃ…クラスタ。
【図１】
2019168898.tif 000003
【図２】
2019168898.tif 000004
【図３】
2019168898.tif 000005
【図４】
2019168898.tif 000006
【図５】
2019168898.tif 000007
【図６】
2019168898.tif 000008
【図７】
2019168898.tif 000009
【図８】
2019168898.tif 000010
【図９】
2019168898.tif 000011