(57)【要約】【課題】広い領域に対するＴＲＩＭ要求を高速処理する。【解決手段】実施形態のメモリシステムは、メモリ２０と、管理テーブルを保持するＲＡＭ１０と、トリム指定される論理アドレスが割り当て済みの場合は物理アドレスとの対応を解消して未割り当てへ更新するトリム処理部３３を備える。実施形態のメモリシステムは、割り当て済みから未割り当てへと更新された論理アドレスの第１差分情報をメモリに書き込む第１時間と管理テーブル初期化と割り当て済みのままの論理アドレスの第２差分情報をメモリに書き込む第２時間を計算する計算部３１と、第１時間と第２時間の何れが長いか判断する比較部３２と、第１時間が短い場合は第１差分情報をＲＡＭに書き込み、第２時間が短い場合は第２差分情報をＲＡＭに書き込む差分情報生成部３４と、所定の条件が成立した場合にＲＡＭに書き込まれた第１または第２差分情報をメモリに退避させる差分情報退避部３５を備える。【選択図】図１
2013200688.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
ホストが指定する論理アドレスと前記不揮発性半導体メモリ上の物理アドレスとの対応関係を示す管理テーブルの少なくとも一部を保持可能なランダムアクセスメモリと、
ホストから通知されるトリム要求を受信し、前記管理テーブル上において、前記トリム要求により指定される論理アドレス範囲に含まれる論理アドレスが、物理アドレスの割り当てられた割り当て済み状態である場合は、物理アドレスとの対応関係を解消することで当該論理アドレスを未割り当て状態へと更新するトリム要求処理部と、
前記トリム要求を実行した際の管理テーブル更新状況を、前記トリム要求に従い割り当て済み状態から未割り当て状態へと更新された論理アドレスに関する情報によって示す第１差分情報を前記不揮発性半導体メモリに書き込むために必要な第１の時間と、前記トリム要求を実行した際の管理テーブル更新状況を、前記管理テーブルの初期化に関する情報および前記トリム要求実行後の管理テーブル上において割り当て済み状態のまま残る論理アドレスに関する情報によって示す第２差分情報を前記不揮発性半導体メモリに書き込むために必要な第２の時間と、を計算する処理時間計算部と、
前記第１の時間と前記第２の時間とを比較し、何れの時間が長いか判断する処理時間比較部と、
前記第１の時間が前記第２の時間より短い場合は、前記第１差分情報を生成して前記ランダムアクセスメモリに書き込み、前記第２の時間が前記第１の時間より短い場合は、前記第２差分情報を生成して前記ランダムアクセスメモリに書き込む差分情報生成部と、
所定の条件が成立した場合に、前記ランダムアクセスメモリに書き込まれた前記第１差分情報または前記第２差分情報を、前記不揮発性半導体メモリに退避させる差分情報退避部と、
を具備する
ことを特徴とするメモリシステム。
【請求項２】
前記処理時間計算部は、前記第１差分情報のデータ量である第１データ量と、前記第２差分情報のデータ量である第２データ量とに基づいて、前記第１の時間と前記第２の時間とを計算する
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記処理時間計算部は、前記第１差分情報が示す割り当て済み状態から未割り当て状態へと更新された論理アドレスの個数である第１の個数と、前記第２差分情報が示す前記トリム要求実行後の管理テーブル上において割り当て済み状態のまま残る論理アドレスの個数である第２の個数とに基づいて、前記第１の時間と前記第２の時間とを計算する
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記不揮発性メモリに退避された前記第１差分情報または前記第２差分情報が所定のデータ量を超えた場合に、前記ランダムアクセスメモリ上の前記管理テーブルを前記不揮発性半導体メモリに退避させる管理情報退避部を更に具備する
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のメモリシステム。
【請求項５】
前記メモリシステムの再起動時に、前記不揮発性半導体メモリに書き込まれている前記第１差分情報または前記第２差分情報と、前記管理テーブルとに基づいて、前記ランダムアクセスメモリ上に前記管理テーブルを復元する管理情報復元部を更に具備する
ことを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記管理テーブルは、複数の管理テーブルに分割して構成される
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載のメモリシステム。
【請求項７】
前記トリム要求は、セクタ単位の論理アドレスによってホストから通知される
ことを特徴とする請求項１乃至請求項６のいずれか１項に記載のメモリシステム。
【請求項８】
不揮発性半導体メモリと、ホストが指定する論理アドレスと前記不揮発性半導体メモリ上の物理アドレスとの対応関係を示す管理テーブルの少なくとも一部を保持可能なランダムアクセスメモリとを備えたメモリシステムの制御方法であって、
ホストから通知されるトリム要求を受信し、前記管理テーブル上において、前記トリム要求により指定される論理アドレス範囲に含まれる論理アドレスが、物理アドレスの割り当てられた割り当て済み状態である場合は、物理アドレスとの対応関係を解消することで当該論理アドレスを未割り当て状態へと更新し、
前記トリム要求を実行した際の管理テーブル更新状況を、前記トリム要求に従い割り当て済み状態から未割り当て状態へと更新された論理アドレスに関する情報によって示す第１差分情報を前記不揮発性半導体メモリに書き込むために必要な第１の時間を計算し、
前記トリム要求を実行した際の管理テーブル更新状況を、前記管理テーブルの初期化に関する情報および前記トリム要求実行後の管理テーブル上において割り当て済み状態のまま残る論理アドレスに関する情報によって示す第２差分情報を前記不揮発性半導体メモリに書き込むために必要な第２の時間を計算し、
前記第１の時間と前記第２の時間とを比較することで何れの時間が長いか判断し、
前記第１の時間が前記第２の時間より短い場合は、前記第１差分情報を生成して前記ランダムアクセスメモリに書き込み、
前記第２の時間が前記第１の時間より短い場合は、前記第２差分情報を生成して前記ランダムアクセスメモリに書き込み、
所定の条件が成立した場合に、前記ランダムアクセスメモリに書き込まれた前記第１差分情報または前記第２差分情報を、前記不揮発性メモリに退避させる、
ことを特徴とするメモリシステムの制御方法。
【請求項９】
前記第１差分情報のデータ量である第１データ量と、前記第２差分情報のデータ量である第２データ量とに基づいて、前記第１の時間と前記第２の時間とを計算する
ことを特徴とする請求項８に記載のメモリシステムの制御方法。
【請求項１０】
前記第１差分情報が示す割り当て済み状態から未割り当て状態へと更新された論理アドレスの個数である第１の個数と、前記第２差分情報が示す前記トリム要求実行後の管理テーブル上において割り当て済み状態のまま残る論理アドレスの個数である第２の個数とに基づいて、前記第１の時間と前記第２の時間とを計算する
ことを特徴とする請求項８に記載のメモリシステムの制御方法。
【請求項１１】
前記不揮発性メモリに退避された前記第１差分情報または前記第２差分情報が所定のデータ量を超えた場合に、前記ランダムアクセスメモリ上の前記管理テーブルを前記不揮発性半導体メモリに退避させる
ことを特徴とする請求項８乃至請求項１０のいずれか１項に記載のメモリシステムの制御方法。
【請求項１２】
前記メモリシステムの再起動時に、前記不揮発性半導体メモリに書き込まれている前記第１差分情報または前記第２差分情報と、前記管理テーブルとに基づいて、前記ランダムアクセスメモリ上に前記管理テーブルを復元する
ことを特徴とする請求項１１に記載のメモリシステムの制御方法。
【請求項１３】
前記管理テーブルは、複数の管理テーブルに分割して構成される
ことを特徴とする請求項８乃至請求項１２のいずれか１項に記載のメモリシステムの制御方法。
【請求項１４】
前記トリム要求は、セクタ単位の論理アドレスによってホストから通知される
ことを特徴とする請求項８乃至請求項１３のいずれか１項に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびその制御方法に関する。
【背景技術】
【０００２】
ＳＳＤなどの不揮発性半導体記憶装置では、ホストからセクタ単位の論理アドレスを受信することでデータが読み書きされる。ホストから書き込まれたデータは、セクタ以上のサイズを有するページ、ブロック等の所定の管理単位で不揮発性半導体メモリに書き込まれる。不揮発性半導体記憶装置は、ホストが指定する論理アドレスに対応するデータが、不揮発性半導体メモリ上のどの物理アドレスに格納されているかを管理テーブルに保持している。
【０００３】
管理テーブルは、所定の管理単位にアラインされた論理アドレスと、当該論理アドレスに対応する物理アドレスとを管理する。ある論理アドレス範囲に属する全てのセクタについて一つもデータが書き込まれていない場合、当該論理アドレスは「未割り当て」になっている。未割り当ての論理アドレスに属するセクタに対しホストからデータが書き込まれると、該当するセクタを含む論理アドレスは「割り当て済み」になり、実際のデータが存在する物理アドレスが保存される。
【０００４】
不揮発性半導体記憶装置は、データの断片化を解消する目的などで不揮発性半導体メモリ上のデータを移動することがある。このデータ移動は、不揮発性半導体メモリ上の全ての有効データを対象として実行される。しかしながら、ホストから不要になった論理アドレス範囲の通知を受けて、「割り当て済み」の論理アドレスを「未割り当て」に戻して解放することで、不要なデータの移動を削減することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１２８９９８号公報
【特許文献２】米国特許出願公開第２０１１／７８３６３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の一つの実施形態は、広い論理アドレス範囲に対するＴＲＩＭ（トリム）要求を高速に処理できるメモリシステムおよびその制御方法を提供する。
【課題を解決するための手段】
【０００７】
本発明の一つの実施形態のメモリシステムは、不揮発性半導体メモリと、ホストが指定する論理アドレスと前記不揮発性半導体メモリ上の物理アドレスとの対応関係を示す管理テーブルの少なくとも一部を保持可能なランダムアクセスメモリと、ホストから通知されるトリム要求を受信し、前記管理テーブル上において、前記トリム要求により指定される論理アドレス範囲に含まれる論理アドレスが、物理アドレスの割り当てられた割り当て済み状態である場合は、物理アドレスとの対応関係を解消することで当該論理アドレスを未割り当て状態へと更新するトリム要求処理部と、を備える。実施形態のメモリシステムは、前記トリム要求を実行した際の管理テーブル更新状況を、前記トリム要求に従い割り当て済み状態から未割り当て状態へと更新された論理アドレスに関する情報によって示す第１差分情報を前記不揮発性半導体メモリに書き込むために必要な第１の時間と、前記トリム要求を実行した際の管理テーブル更新状況を、前記管理テーブルの初期化に関する情報および前記トリム要求実行後の管理テーブル上において割り当て済み状態のまま残る論理アドレスに関する情報によって示す第２差分情報を前記不揮発性半導体メモリに書き込むために必要な第２の時間と、を計算する処理時間計算部と、前記第１の時間と前記第２の時間とを比較し、何れの時間が長いか判断する処理時間比較部と、前記第１の時間が前記第２の時間より短い場合は、前記第１差分情報を生成して前記ランダムアクセスメモリに書き込み、前記第２の時間が前記第１の時間より短い場合は、前記第２差分情報を生成して前記ランダムアクセスメモリに書き込む差分情報生成部と、所定の条件が成立した場合に、前記ランダムアクセスメモリに書き込まれた前記第１差分情報または前記第２差分情報を、前記不揮発性半導体メモリに退避させる差分情報退避部と、を更に備える。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態にかかるＳＳＤのシステム構成例を示すブロック図である。
【図２】図２は、実施形態にかかる管理テーブルと管理テーブルが示す論理アドレスと物理アドレスとの対応関係の様子を表す図である。
【図３】図３は、実施形態にかかるＳＳＤにおいてＴＲＩＭ（トリム）コマンドを受け取ったときの処理を示すフローチャートである。
【図４】図４は、実施形態にかかるＴＲＩＭ要求前の管理テーブルとＴＲＩＭ要求に対応する差分情報を示す図である。
【図５】図５は、実施形態にかかるＴＲＩＭ要求前の管理テーブルとＴＲＩＭ要求に対応する差分情報を示す別の図である。
【図６】図６は、実施形態にかかる再起動時にＲＡＭ上に管理テーブルを復元する手順を示したフローチャートである。
【図７】図７は、実施形態にかかる再起動時にＲＡＭ上に管理テーブルを復元する手順を示した別のフローチャートである。
【図８】図８は、実施形態にかかるＴＲＩＭ要求前の複数の管理テーブルとＴＲＩＭ要求に対応する差分情報を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１０】
（実施形態）
図１は、実施形態にかかる半導体記憶装置としてのＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１のシステム構成例を示すブロック図である。ＳＳＤ１は、ＲＡＭ１０（ランダムアクセスメモリ）、不揮発性半導体メモリであるＮＡＮＤフラッシュメモリ２０、およびコントローラ３０を備える。ＲＡＭ１０は管理情報記憶領域１１、差分情報記憶領域１２を備える。ＮＡＮＤフラッシュメモリ２０は管理情報記憶領域２１、差分情報記憶領域２２を備える。コントローラ３０は、処理時間計算部３１、処理時間比較部３２、トリム要求処理部３３、差分情報生成部３４、差分情報退避部３５、管理情報退避部３６、および管理情報復元部３７を備える。
【００１１】
ＮＡＮＤフラッシュメモリ２０は、複数のブロックを備えている。個々のブロックはデータ消去単位である。また、個々のブロックは複数のページを備えている。個々のページはデータ書き込みまたはデータ読出し単位である。ブロックサイズは例えば５１２キロバイトであり、ページサイズは例えば４キロバイトである。個々のページは複数のメモリセルから構成されている。個々のメモリセルは１ビットまたは２ビット以上を不揮発に記憶することが可能である。
【００１２】
ＳＳＤ１では、ホスト２からＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）を指定したセクタ単位でデータが読み書きされる。ここで、１セクタは例えば５１２バイトである。ホスト２から書き込まれたデータは、セクタ以上のサイズを持つ所定のデータ管理単位でＮＡＮＤフラッシュメモリ２０に書き込まれる。ＳＳＤ１内部のデータ管理単位は任意であるが、例えばページ単位、ブロック単位などが採用される。当然ながら、セクタよりも大きくページよりも小さい管理単位、ページよりも大きくブロックよりも小さい管理単位を採用してもよい。
【００１３】
ＳＳＤ１は、所定のデータ管理単位にアラインされた各論理アドレスが、ＮＡＮＤフラッシュメモリ２０上のどの物理アドレスに格納されているかを示す管理テーブルを管理情報記憶領域１１および管理情報記憶領域２１に保持している。管理テーブルは論理アドレスと物理アドレスとの対応表である。物理アドレスは論理アドレスと同様に、所定の管理単位でアラインされている。管理テーブルが更新されるときの新旧管理テーブルの差分情報（ログ）が差分情報記憶領域１２および差分情報記憶領域２２に保持される。
【００１４】
ＲＡＭ１０の管理情報記憶領域１１上の管理テーブルは常に最新の状態に更新されており、差分情報記憶領域１２にも常に最新の差分情報（ログ）が記憶される。差分情報記憶領域１２の差分情報（ログ）は所定のタイミングでＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２に書き込まれる。差分情報記憶領域２２に書き込まれた差分情報（ログ）が所定のデータ量を超えると、管理情報退避部３６は、管理情報記憶領域１１上の最新の管理テーブルをＮＡＮＤフラッシュメモリ２０の管理情報記憶領域２１に書き込む。電源オフ後の再起動時などには、管理情報復元部３７は、差分情報記憶領域２２に書き込まれた差分情報（ログ）と、当該差分情報（ログ）を反映していない管理情報記憶領域２１上の古い管理テーブルとに基づいて、最新の管理テーブルをＲＡＭ１０の管理情報記憶領域１１上に作成する。
【００１５】
上述したようにホスト２から書き込まれたデータは所定のデータ管理単位でＮＡＮＤフラッシュメモリ２０に書き込まれる。もし、ホスト２から書き込まれたデータがデータ管理単位にアラインされていない場合、即ちデータ管理単位以下である場合には、ＮＡＮＤフラッシュメモリ２０上に書かれているデータとホスト２から書き込まれたデータとをマージし、管理単位のデータを作成した上でＮＡＮＤフラッシュメモリ２０に書き込む。ホスト２から書き込まれたデータがＮＡＮＤフラッシュメモリ２０上のどこに書き込まれるかは動的に変化する。即ち、同じＬＢＡに書き込まれたデータがＮＡＮＤフラッシュメモリ２０上のどの物理アドレスに書き込まれるかは固定していない。
【００１６】
図２は、管理テーブルと管理テーブルが示す論理アドレスと物理アドレスとの対応関係を表す図である。ある論理アドレスについて、ホスト２から一つもデータが書き込まれていないとき、管理テーブルの当該論理アドレスに対応する物理アドレスの欄は「未割り当て」となっている。論理アドレス内のセクタのうちの１つのセクタにでもデータが書き込まれると、当該論理アドレスは「割り当て済み」となりＮＡＮＤフラッシュメモリ２上の物理アドレスが管理情報記憶領域１１および管理情報記憶領域２１の管理テーブルに記録される。ＳＳＤ１は、データの断片化を解消する目的などで、「割り当て済み」となっている論理アドレスのデータを移動することがある。ホスト２から不要になった領域の通知を受け取り、使っていない論理アドレスを「未割り当て」にすることで、不要なデータの移動を削減することができる。
【００１７】
ホスト２とＳＳＤ１の間でデータをやりとりするための規格であるＡＴＡ規格のコマンドにおいて、ＴＲＩＭ（トリム）という属性が定義されている。これにより、ホスト２は不要になった論理アドレス範囲をセクタ単位でＳＳＤ１に通知することができる。詳細はＡＴＡコマンドの規格(http://www.t13.org/Documents/UploadedDocuments/docs2009/d2015r1a-ATAATAPI_Command_Set_-_2_ACS-2.pdf)を参照することとし、ここでは説明しない。このようなコマンドを、以降ＴＲＩＭコマンドと呼称する。本実施形態は、ＡＴＡ規格のＴＲＩＭコマンドだけでなく、ＡＴＡ以外の規格であっても同様の仕様を持つコマンドであれば適用できる。
【００１８】
コントローラ３０は、ＴＲＩＭ（トリム）コマンドを受け取ったときに図３のフローチャートに従ってＴＲＩＭ（トリム）要求処理部３３が処理を行う。まず、処理時間計算部３１が、ＴＲＩＭコマンドによりどの論理アドレスが「未割り当て」に変更されるのかを調べ、そのために必要な管理テーブルの変更処理にかかる時間ｔ１を計算する（ステップＳ１１）。具体的には、ｔ１とは、ＴＲＩＭ（トリム）コマンドにより新たに「未割り当て」となる論理アドレスが記載された差分情報記憶領域１２上のログをＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２に書き込むのにかかる時間である。この時間ｔ１は、実時間（秒など）である必要はなく、処理時間に比例する値であればよい。即ち、このとき差分情報記憶領域２２に書き込まれるログのデータ量と考えてよい。従って、新たに解放されて「未割り当て」となる論理アドレスの数にほぼ比例する量と考えてもよい。差分情報記憶領域２２に書き込まれるログのデータ量は新たに解放されて「未割り当て」となる論理アドレスの数にほぼ比例すると考えられるからである。
【００１９】
さらに、処理時間計算部３１は、ＴＲＩＭコマンドによりどの論理アドレスが「未割り当て」に変更されずに「割り当て済み」のまま残るかを調べ、管理テーブルを初期化することを示すログ、即ち、新しい管理テーブルを作成するログと、「割り当て済み」として残る論理アドレスの情報のログとを差分情報記憶領域２２に書き込む場合の処理にかかる時間ｔ２を計算する（ステップＳ１２）。この時間ｔ２は、実時間（秒など）である必要はなく、処理時間に比例する値であればよい。即ち、このとき差分情報記憶領域２２に書き込まれるログのデータ量と考えてよい。従って、解放されずに「割り当て済み」として残る論理アドレスの数にほぼ比例する量と考えてもよい。差分情報記憶領域２２に書き込まれるログのデータ量は解放されずに「割り当て済み」として残る論理アドレスの数にほぼ比例すると考えられるからである。実際には、差分情報記憶領域２２に書き込まれるログのデータ量には上述したように「新しい管理テーブルを作成」というログの分も含まれる。ｔ２もｔ１と同様、処理時間、データ量、論理アドレス数、いずれであってもよいが、ｔ１とｔ２の単位は同じものにする必要がある。
【００２０】
ステップＳ１２の後、処理時間比較部３２は、上述したｔ１とｔ２を同一の単位のもとで比較する（ステップＳ１３）。
【００２１】
ステップＳ１３でｔ１＜ｔ２である場合（ステップＳ１３：Ｙｅｓ）は、ＴＲＩＭ（トリム）要求処理部３３は、管理情報記憶領域１１が保持している管理テーブルにおいて、ＴＲＩＭコマンドで通知された論理アドレス範囲に含まれる論理アドレスを「未割り当て」に変更して（ステップＳ１４）解放する。具体的には、例えば、図４に示したＴＲＩＭ要求前の管理テーブルにおいて、ＴＲＩＭ要求があった論理アドレス「１」、「２」、「５」に対応する物理アドレスの欄に「未割り当て」を書き込む（ステップＳ１４）。さらに、差分情報生成部３４は、このＴＲＩＭ要求により管理テーブルを書き換えるための差分情報（ログ）として「論理アドレス１を未割り当てに変更」、「論理アドレス２を未割り当てに変更」、および「論理アドレス５を未割り当てに変更」（以上、第１差分情報）を差分情報記憶領域１２に書き込む（ステップＳ１６）。
【００２２】
ステップＳ１３でｔ１≧ｔ２となる場合（ステップＳ１３：Ｎｏ）は、ＴＲＩＭ（トリム）要求処理部３３は、管理情報記憶領域１１が保持している管理テーブルにおいて、ＴＲＩＭコマンドで通知された論理アドレス範囲に含まれる論理アドレスを「未割り当て」に変更して（ステップＳ１５）解放する。ｔ１とｔ２の大小関係に拘わらずＴＲＩＭ要求による管理テーブルの更新内容、即ち、更新後の管理テーブルの内容は同じである。従って、ステップＳ１５はステップＳ１４と同じ内容である。ｔ１とｔ２の大小関係に拘わらずステップＳ１４およびＳ１５で実行されるＲＡＭ１０上の管理テーブルの更新は同じ作業となる。
【００２３】
従って、ステップＳ１４およびＳ１５は、ＴＲＩＭ要求後のステップＳ１１の前に行われてもよいし、ステップＳ１３の直前に行われてもよく、図３で示した場合に限定されない。具体的には、例えば、図５に示したＴＲＩＭ要求前の管理テーブルにおいて、ＴＲＩＭ要求があった論理アドレス「２」〜「１０」に対応する物理アドレスの欄にステップＳ１４と同様に「未割り当て」を書き込む（ステップＳ１５）。ただし、ｔ１≧ｔ２であるので、この場合は図５に示すように広い論理アドレス領域に対してＴＲＩＭ要求がされている。
【００２４】
ステップＳ１５の後、差分情報生成部３４は、このＴＲＩＭ要求により管理テーブルを書き換えるための差分情報（ログ）として図５に示す「新しい管理テーブルを作成」、「論理アドレス０に物理アドレス０を割り当て」、および「論理アドレス１に物理アドレス１を割り当て」（以上、第２差分情報）を差分情報記憶領域１２に書き込む（ステップＳ１７）。「新しい管理テーブルを作成」することで全ての論理アドレスに対応する物理アドレスに初期値として「未割り当て」が書き込まれるので、ＴＲＩＭ要求があった論理アドレス「２」〜「１０」に対応する物理アドレスの欄を「未割り当て」とすることはこれにより実現できる。しかし、ＴＲＩＭ要求によって解放されずに「割り当て済み」として残る論理アドレスについては、既に割り当てられている物理アドレスを新しい管理テーブルに新たに書き込む必要がある。このログの内容が、「論理アドレス０に物理アドレス０を割り当て」および「論理アドレス１に物理アドレス１を割り当て」である。即ち、図５に示したように広い論理アドレス範囲を解放する場合には、管理テーブルの更新処理を少ない差分情報（ログ）で表現することができる。
【００２５】
ステップＳ１６およびＳ１７の後、差分情報退避部は、所定のタイミングで差分情報記憶領域１２の差分情報（ログ）をＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２に書き込む（ステップＳ１８）。所定のタイミングとは、例えば、ホスト２からスタンバイコマンドあるいはフラッシュキャッシュコマンドがＳＳＤ１に対して発行された場合、または差分情報記憶領域１２に書き込まれたログのデータ量が一定量溜まった場合などである。ＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２にログを書き込むとき、従来は常に新たに解放されて「未割り当て」となる論理アドレスの数に依存した時間ｔ１だけ時間がかかっていた。しかし、本実施形態によれば、例えば図５に示したように広い論理アドレス領域に対してＴＲＩＭ要求がされている場合は、「新しい管理テーブルを作成」して、ＴＲＩＭ要求によって解放されずに「割り当て済み」として残る論理アドレスにのみ既に割り当てられている物理アドレスを新たに書き込むだけでよい。これによりｔ１≧ｔ２の場合は、ｔ２の時間でＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２へのログの書き込みが完了することになり、ログの書き込み時間の短縮化が図れる。
【００２６】
なお、ＴＲＩＭ要求の後に、解放されずに「割り当て済み」として残る論理アドレスは、管理テーブルに記載された論理アドレスの中からＴＲＩＭ要求された論理アドレスを除き、さらにその残りの論理アドレスの中から既に「未割り当て」となっている論理アドレスを除いた論理アドレスである。従って、ＴＲＩＭ要求された論理アドレスの数にほぼ比例すると考えられる時間ｔ１を計算すれば、時間ｔ２がどの程度の値以下であるかを見積もることが可能である。従って、図３のステップＳ１２を省いて、ステップＳ１３においてｔ１を予め定めた所定値と比較し、ｔ１が所定値より小さい場合はステップＳ１４、Ｓ１６に進み、ｔ１が所定値以上の場合はステップＳ１５、Ｓ１７に進むようにしてもよい。これによりステップＳ１２の時間ｔ２の計算を省いてさらなる効率化が図れる。
【００２７】
また、ステップＳ１３では処理時間計算部３１が計算した時間ｔ１とｔ２の比較を行ったが、処理時間計算部３１のかわりに処理量計算部を設けてもよい。処理量計算部は、ホストから通知されるＴＲＩＭ（トリム）要求により管理テーブルにおいて対応する物理アドレスを有さない未割り当て状態にされる論理アドレスについての情報である第１差分情報のデータ量である第１データ量と、管理テーブル上の論理アドレスを全て未割り当て状態にする情報およびＴＲＩＭ（トリム）要求の後も管理テーブルにおいて対応する物理アドレスを有した割り当て済み状態のままである論理アドレスについての情報である第２差分情報のデータ量である第２データ量を算出してもよい。この場合、ステップＳ１３において第２データ量が第１データ量より小さい場合に第２差分情報を、その他の場合に第１差分情報を差分情報記憶領域１２に書き込む（ステップＳ１７）。また、処理量計算部は、ホストから通知されるＴＲＩＭ（トリム）要求により管理テーブルにおいて対応する物理アドレスを有さない未割り当て状態にされる論理アドレスの個数である第１の個数を計算し、ＴＲＩＭ（トリム）要求の後も管理テーブルにおいて対応する物理アドレスを有した割り当て済み状態のままである論理アドレスの個数である第２の個数を計算してもよい。この場合、ステップＳ１３において第２の個数が第１の個数より小さい場合に上記第２差分情報を、その他の場合に上記第１差分情報を差分情報記憶領域１２に書き込む（ステップＳ１７）。
【００２８】
電源オフ後の再起動時などには、ステップＳ１８で差分情報記憶領域２２に書き込まれたログおよび当該ログを反映していない管理情報記憶領域２１上の古い管理テーブルを用いて最新の管理テーブルがＲＡＭ１０上の管理情報記憶領域１１上に復元される。この手順を図６および図７のフローチャートを用いて以下に説明する。
【００２９】
まず、図３でステップＳ１４、Ｓ１６をへてステップＳ１８にて図４に示す差分情報がログとして差分情報記憶領域２２に書き込まれた場合は、図６のフローチャートに従ってＲＡＭ１０上の管理テーブルが構成される。まず、ＮＡＮＤフラッシュメモリ２０の管理情報記憶領域２１から上記ログが反映されていない管理テーブルがＲＡＭ１０上の管理情報記憶領域１１に読み出される（ステップＳ２１）。次に、ＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２からログを読み出す（ステップＳ２２）。当該ログの内容に従って、管理情報記憶領域１１の管理テーブルにおいて「論理アドレス１を未割り当てに変更」し（ステップＳ２３）、管理情報記憶領域１１の管理テーブルにおいて「論理アドレス２を未割り当てに変更」し（ステップＳ２４）、管理情報記憶領域１１の管理テーブルにおいて「論理アドレス５を未割り当てに変更」する（ステップＳ２５）。これによりログを反映した最新の管理テーブルをＲＡＭ１０上に復元することができる。
【００３０】
一方、図３でステップＳ１５、Ｓ１７をへてステップＳ１８にて図５に示す差分情報がログとして差分情報記憶領域２２に書き込まれた場合は、図７のフローチャートに従ってＲＡＭ１０上の管理テーブルが構成される。まず、ＮＡＮＤフラッシュメモリ２０の管理情報記憶領域２１から上記ログが反映されていない管理テーブルがＲＡＭ１０上の管理情報記憶領域１１に読み出される（ステップＳ３１）。次に、ＮＡＮＤフラッシュメモリ２０の差分情報記憶領域２２からログを読み出す（ステップＳ３２）。当該ログの内容に従って、管理情報記憶領域１１の「管理テーブルを初期化」（新しい管理テーブルを作成）し（ステップＳ３３）、管理情報記憶領域１１の管理テーブルにおいて「論理アドレス０に物理アドレス０を割り当て」（ステップＳ３４）、管理情報記憶領域１１の管理テーブルにおいて「論理アドレス１に物理アドレス１を割り当て」る（ステップＳ３５）。これによりログを反映した最新の管理テーブルをＲＡＭ１０上に復元することができる。
【００３１】
また、上記においては管理テーブルが１つであるとして説明したが、管理テーブルが複数の部分に分割されて管理されていても構わない。例えば、ＴＲＩＭ要求により広い論理アドレス領域を解放する場合を説明した図５に対して、図８に示すように管理テーブルが、管理テーブル（１）〜（４）の４つに分割されて管理されていてもよい。このとき、ＴＲＩＭ要求によって、管理テーブル（１）の論理アドレス２〜９、および管理テーブル（２）〜（４）の全領域という広い論理アドレス範囲が解放され、図３のステップＳ１３でｔ１≧ｔ２となる場合（ステップＳ１３：Ｎｏ）は、本実施形態によればステップＳ１７において「新しい管理テーブル（１）を作成」、「新しい管理テーブル（２）を作成」、「新しい管理テーブル（３）を作成」、「新しい管理テーブル（４）を作成」、「論理アドレス０に物理アドレス０を割り当て」、および「論理アドレス１に物理アドレス１を割り当て」を差分情報記憶領域１２に書き込めばよい。この書き込み時間ｔ２は、従来のように図８の管理テーブル（１）〜（４）の論理アドレス２〜３９に対応する物理アドレスの欄にそれぞれ「未割り当て」を書き込むというログを差分情報記憶領域１２に書き込むのにかかる時間ｔ１に比べれば大幅な時間短縮となっている。
【００３２】
さらに、上記においては、処理時間計算部３１および処理時間比較部３２はコントローラ３０に含まれるとして説明したが、これらはコントローラ３０の外部のＳＳＤ１内に備えられていても構わない。
【００３３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３４】
１  ＳＳＤ、２  ホスト、１０  ＲＡＭ、２０  ＮＡＮＤフラッシュメモリ、３０  コントローラ。
【図１】
2013200688.tif 000003
【図２】
2013200688.tif 000004
【図３】
2013200688.tif 000005
【図４】
2013200688.tif 000006
【図５】
2013200688.tif 000007
【図６】
2013200688.tif 000008
【図７】
2013200688.tif 000009
【図８】
2013200688.tif 000010