(57)【要約】【課題】不揮発性メモリにおける管理テーブルの読み出し／書き込みを、短時間で行なうことができるメモリシステムを提供すること。【解決手段】実施形態のメモリシステムは、データの管理情報を記憶する不揮発性メモリと、前記管理情報を一時的に保持しておく記憶部と、コントローラと、圧縮／伸張処理部と、を備えている。また、前記コントローラは、ホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新する。また、前記圧縮／伸張処理部は、第１の条件を満たした場合に前記管理情報を圧縮し、第２の条件を満たした場合に圧縮された前記管理情報を伸張する。そして、前記コントローラは、圧縮された管理情報を所定のタイミングで前記不揮発性メモリに記憶させる。【選択図】図１
2013196115.tif 000002
【特許請求の範囲】
【請求項１】
データの管理情報を記憶する不揮発性メモリと、
前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、
前記不揮発性メモリに記憶された管理情報を第１のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第２のタイミングで前記不揮発性メモリに記憶させ、かつホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なうコントローラと、
第１の条件を満たした場合に前記管理情報を圧縮するとともに、第２の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮／伸張処理部と、
を備え、
前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させ、
前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮／伸張処理部は、
前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、シーケンシャルに連続しているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第１の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮し、
かつ圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加するとともに、圧縮するアドレスに対しては、圧縮したことを示すデータを前記第１の連続回数データに付加することによって、前記連続しているアドレスを前記新たなデータに置き換え、
かつ前記記憶部内の管理情報を前記不揮発性メモリに記憶させる際に前記管理情報を圧縮するとともに、前記不揮発性メモリ内の管理情報を前記記憶部に取り込む際に前記管理情報を伸張することを特徴とするメモリシステム。
【請求項２】
データの管理情報を記憶する不揮発性メモリと、
前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、
前記不揮発性メモリに記憶された管理情報を第１のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第２のタイミングで前記不揮発性メモリに記憶させ、かつホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なうコントローラと、
第１の条件を満たした場合に前記管理情報を圧縮するとともに、第２の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮／伸張処理部と、
を備え、
前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させることを特徴とするメモリシステム。
【請求項３】
前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮／伸張処理部は、前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、シーケンシャルに連続しているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第１の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮することを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記圧縮／伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮するアドレスに対しては、圧縮したことを示すデータを前記第１の連続回数データに付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項３に記載のメモリシステム。
【請求項５】
前記圧縮／伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮する物理アドレスに対しては、前記第１の連続回数データを前記連続しているアドレスの先頭アドレスに付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項３に記載のメモリシステム。
【請求項６】
前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮／伸張処理部は、前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、同じ値が連続して格納されているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第２の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮することを特徴とする請求項２に記載のメモリシステム。
【請求項７】
前記圧縮／伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮する物理アドレスに対しては、余っているアドレスを利用して、前記連続しているアドレスの先頭アドレスに前記第２の連続回数データを付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記圧縮／伸張処理部は、
前記記憶部内の管理情報を前記不揮発性メモリに記憶させる際に前記管理情報を圧縮するとともに、前記不揮発性メモリ内の管理情報を前記記憶部に取り込む際に前記管理情報を伸張することを特徴とする請求項２乃至７に記載のメモリシステム。
【請求項９】
前記圧縮／伸張処理部は、
圧縮した管理情報を前記記憶部に記憶させるとともに、前記管理情報の読み出しが必要な場合に前記記憶部内で前記管理情報を伸張し、前記管理情報の読み出しが不要になると前記記憶部内で前記管理情報を圧縮することを特徴とする請求項２乃至７に記載のメモリシステム。
【請求項１０】
前記管理情報は、前記不揮発性メモリ内での第１のデータ記憶単位と、前記第１のデータ記憶単位内に含まれる有効な第２のデータ記憶単位の数である有効記憶単位数と、の対応関係を前記第１のデータ記憶単位毎に保持する記憶単位数管理テーブルであり、
前記圧縮／伸張処理部は、
前記有効記憶単位数が０である有効記憶単位数を、前記有効記憶単位数が０であることを示す１ビットまたは２ビットのデータに置き換え、
前記有効記憶単位数が０以外である有効記憶単位数に対し、前記有効記憶単位数が０以外であることを示す１ビットまたは２ビットのデータを付加することにより、前記有効記憶単位数を圧縮することを特徴とする請求項２に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性半導体記憶装置であるＮＡＮＤフラッシュメモリの大容量化が進行し、このＮＡＮＤフラッシュメモリを搭載したメモリシステムとしてのＳＳＤ（Solid  State  Drive）が注目されている。
【０００３】
従来、ＳＳＤでは、揮発性メモリ上の管理テーブルをそのままを不揮発性メモリであるＮＡＮＤフラッシュメモリへ記憶させていた。しかしながら、管理テーブルのサイズが大きい場合、ＮＡＮＤフラッシュメモリへの書き込みとＮＡＮＤフラッシュメモリからの読み込みに長時間を要する。このため、揮発性メモリと不揮発性メモリとの間の管理テーブルの読み出し／書き込みを、短時間で行なうことが望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４５３３９６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、不揮発性メモリにおける管理テーブルの読み出し／書き込みを、短時間で行なうことができるメモリシステムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリシステムが提供される。メモリシステムは、データの管理情報を記憶する不揮発性メモリと、前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、を備えている。また、前記メモリシステムは、前記不揮発性メモリに記憶された管理情報を第１のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第２のタイミングで前記不揮発性メモリに記憶させるコントローラを備えている。前記コントローラは、ホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なう。また、メモリシステムは、第１の条件を満たした場合に前記管理情報を圧縮するとともに、第２の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮／伸張処理部を備えている。そして、前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させる。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態に係るメモリシステムのデータ圧縮処理の概念を説明するための説明図である。
【図２】図２は、第１の実施形態に係るＳＳＤの構成例を示すブロック図である。
【図３】図３は、論理クラスタと物理クラスタの対応関係を示す図である。
【図４】図４は、論物変換テーブルの第１の圧縮処理例を説明するための図である。
【図５】図５は、論物変換テーブルの第１の圧縮処理手順を示すフローチャートである。
【図６】図６は、論物変換テーブルの第２の圧縮処理例を説明するための図である。
【図７】図７は、論物変換テーブルの第２の圧縮処理手順を示すフローチャートである。
【図８】図８は、論物変換テーブルの第３の圧縮処理例を説明するための図である。
【図９】図９は、ブロックと有効クラスタの関係を説明するための図である。
【図１０】図１０は、クラスタ管理テーブルの第１の圧縮処理を説明するための図である。
【図１１】図１１は、クラスタ管理テーブルの第１の圧縮処理手順を示すフローチャートである。
【図１２】図１２は、クラスタ管理テーブルの第２の圧縮処理を説明するための図である。
【図１３】図１３は、第３の実施形態に係るＳＳＤの構成例を示すブロック図である。
【図１４】図１４は、論物変換テーブルの圧縮／伸張処理手順を示すフローチャートである。
【図１５】図１５は、ＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。
【図１６】図１６は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
まず、本実施形態に係るメモリシステムのデータ圧縮／伸張処理の概念について説明する。本実施形態では、メモリシステムとしてのＳＳＤ（Solid  State  Drive）が、管理テーブル（後述の論物変換テーブル２０Ｘ）を圧縮した後、ＮＡＮＤフラッシュメモリに記憶させる。
【００１０】
図１は、第１の実施形態に係るメモリシステムのデータ圧縮処理の概念を説明するための説明図である。メモリシステム（後述のＳＳＤ１）は、ＲＡＭ（Random  Access  Memory）４と、不揮発性メモリであるＮＡＮＤフラッシュメモリ６と、を備えている。また、本実施形態のＳＳＤ１は、ＲＡＭ４内の論物変換テーブル２０Ｘを圧縮してからＮＡＮＤフラッシュメモリ６に書き込むとともに、ＮＡＮＤフラッシュメモリ６内の論物変換テーブル２０Ｘを伸張してからＲＡＭ４内に書き込む機能（後述する管理データ圧縮／伸張部５Ａ）を備えている。
【００１１】
論物変換テーブル２０Ｘは、ホスト装置で指定された論理アドレス（ＬＢＡ）Ｌ０〜Ｌｎ（ｎは自然数）とＮＡＮＤフラッシュメモリ６内のデータの格納位置を指定する物理アドレスＰ０〜Ｐｎとの対応関係を示すものである。図１の論物変換テーブル２０Ｘでは、論理アドレスＬ０が物理アドレスＰ０に対応し、論理アドレスＬ１が物理アドレスＰ１に対応している。また、論理アドレスＬｎ（ｎは０以上の整数）が物理アドレスＰｎに対応している。
【００１２】
ＳＳＤ１では、ＲＡＭ４上で論物変換テーブル２０Ｘの管理を行なっている。管理データ圧縮／伸張部５Ａは、ＲＡＭ４内の論物変換テーブル２０ＸをＮＡＮＤフラッシュメモリ６に記憶させる際に、論物変換テーブル２０Ｘの圧縮処理を行なう。そして、管理データ圧縮／伸張部５Ａは、圧縮した論物変換テーブル２０ＸをＮＡＮＤフラッシュメモリ６に記憶させる。
【００１３】
具体的には、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ｘ内のＸ番目の（Ｘは０〜（ｎ−１））物理アドレスと（Ｘ＋１）番目の物理アドレスとの差分を算出する。例えば、論物変換テーブル２０Ｘ内の先頭の物理アドレスＰ０と２番目の物理アドレスＰ１との差分として、差分Ｄ１が算出される。また、２番目の物理アドレスＰ１と３番目の物理アドレスＰ２との差分として、差分Ｄ２が算出され、３番目の物理アドレスＰ２と４番目の物理アドレスＰ３との差分として、差分Ｄ３が算出される。同様に、（ｎ−１）番目の物理アドレスＰ（ｎ−１）とｎ番目の物理アドレスＰｎとの差分として、差分Ｄｎが算出される。
【００１４】
管理データ圧縮／伸張部５Ａは、先頭の物理アドレスＰ０に対しては、圧縮処理は行わない。この場合、管理データ圧縮／伸張部５Ａは、論理アドレスＬ０と、圧縮処理を行わなかったことを示す情報「０」と、物理アドレスＰ０と、を対応付けしたデータ１０１を生成する。
【００１５】
また、管理データ圧縮／伸張部５Ａは、１つ前の物理アドレスとの差分が「１」である物理アドレスに対して圧縮処理を行う。具体的には、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ｘ内から、１つ前の物理アドレスとの差分が「１」である物理アドレスを抽出する。そして、ＳＳＤ１は、論物変換テーブル２０Ｘ内で、「１」が何回続くかを算出する。例えば、物理アドレスＰ０〜Ｐｎがシーケンシャルに連続したデータである場合、差分Ｄ１〜Ｄｎは、全て「１」となる。この場合、ＳＳＤ１は、「１」がｎ回続くと判断する。換言すると、ＳＳＤ１は、シーケンシャルに連続しているアドレスの連続回数として「ｎ」を算出する。そして、管理データ圧縮／伸張部５Ａは、論理アドレスＬ１と、圧縮処理を行ったことを示す情報「１」と、「ｎ」を示す情報と、を対応付けしたデータ１０２を生成する。この後、管理データ圧縮／伸張部５Ａは、データ１０１，１０２を、ＮＡＮＤフラッシュメモリ６内に記憶させる。
【００１６】
また、管理データ圧縮／伸張部５Ａは、ＮＡＮＤフラッシュメモリ６からデータ１０１，１０２を読み出してＲＡＭ４に展開する場合、データ１０１，１０２を伸張処理してからＲＡＭ４に展開する。このとき、管理データ圧縮／伸張部５Ａは、圧縮処理と逆の手順によってデータ１０１，１０２を伸張処理する。
【００１７】
なお、管理データ圧縮／伸張部５Ａは、１つ前の物理アドレスとの差分が「１」でない物理アドレスに対して圧縮処理を行なわない。この場合、管理データ圧縮／伸張部５Ａは、論理アドレスと、圧縮処理を行なっていないことを示す情報「０」と、物理アドレスと、を対応付けしたデータを生成する。また、管理データ圧縮／伸張部５Ａは、差分「１」の連続回数が２未満の場合は、物理アドレスの圧縮処理を行わない。
【００１８】
このように、ＳＳＤ１は、圧縮処理によって論物変換テーブル２０Ｘ内のデータサイズを小さくしてからＮＡＮＤフラッシュメモリ６へ書き込むことにより、ＮＡＮＤフラッシュメモリ６への書き込み時間と読み出し時間を短縮する。
【００１９】
図２は、第１の実施形態に係るＳＳＤの構成例を示すブロック図である。半導体記憶装置としてのＳＳＤ１は、管理情報記憶部８を含むＲＡＭ４と、実際にデータを記憶するＮＡＮＤフラッシュメモリ６と、管理データ圧縮／伸張部５Ａと、コントローラ７と、を備えている。
【００２０】
ＲＡＭ４は、ホスト装置１０、コントローラ７、管理データ圧縮／伸張部５Ａに接続されている。管理データ圧縮／伸張部５Ａは、ＲＡＭ４、ＮＡＮＤフラッシュメモリ６、コントローラ７に接続されている。また、ＮＡＮＤフラッシュメモリ６は、管理データ圧縮／伸張部５Ａ、コントローラ７に接続されている。そして、コントローラ７は、ホスト装置１０、ＲＡＭ４、管理データ圧縮／伸張部５Ａ、ＮＡＮＤフラッシュメモリ６に接続されている。
【００２１】
ＲＡＭ４は、例えばＳＲＡＭ、ＤＲＡＭ、ＦｅＲＡＭなどのメモリである。ＲＡＭ４は、ホスト装置１０から送られてくるデータを一時的に記憶するとともに、記憶したデータを管理データ圧縮／伸張部５Ａを介してＮＡＮＤフラッシュメモリ６に送る。また、ＲＡＭ４は、ホスト装置１０から読み出し要求のあったデータがＮＡＮＤフラッシュメモリ６から読み出されると、読み出したデータを一時的に記憶しておく。ＮＡＮＤフラッシュメモリ６から読み出されてＲＡＭ４に一時的に記憶されたデータは、ホスト装置１０に送られる。
【００２２】
また、管理情報記憶部８は、論理アドレスで指定されるデータがＮＡＮＤフラッシュメモリ６のどこの物理に書き込まれているかという対応関係を示す論物変換テーブル２０Ｘを記憶する。論物変換テーブル２０Ｘは、ホスト装置１０から与えられる論理アドレスとＮＡＮＤフラッシュメモリ６の物理アドレス（記憶位置）との対応関係を示す変換テーブルである。論物変換テーブル２０Ｘは、ＳＳＤ１の起動時等の所定タイミングで、ＮＡＮＤフラッシュメモリ６からＲＡＭ４に展開される。そして、ＮＡＮＤフラッシュメモリ６内のデータ書き込みやデータ消去等に伴い論理アドレスと物理アドレスとの対応関係が更新された場合、ＲＡＭ４に展開された論物変換テーブル２０Ｘが更新される。
【００２３】
なお、論物変換テーブル２０ＸがＮＡＮＤフラッシュメモリ６内に書き込まれるタイミングは、例えば、ＳＳＤ１が正常電源源断される前（ＳＴＡＮＢＹ）、データの不揮発化を行う際（ＦＬＵＳＨコマンド実行時）、論物変換テーブル２０ＸがＲＡＭ４内に収まらなくなった場合などである。本実施形態では、論物変換テーブル２０ＸをＮＡＮＤフラッシュメモリ６に記憶させる直前に、所定の圧縮方式を用いてＲＡＭ４内でデータサイズを圧縮し、その後、ＮＡＮＤフラッシュメモリ６に記憶させる。
【００２４】
管理データ圧縮／伸張部５Ａは、ＲＡＭ４内の論物変換テーブル２０Ｘを圧縮処理するとともに、圧縮した論物変換テーブル２０ＸをＮＡＮＤフラッシュメモリ６に記憶させる。また、管理データ圧縮／伸張部５Ａは、ＮＡＮＤフラッシュメモリ６内の論物変換テーブル２０Ｘを伸張処理するとともに、伸張した論物変換テーブル２０ＸをＲＡＭ４内に展開させる。
【００２５】
コントローラ７は、ＲＡＭ４、ＮＡＮＤフラッシュメモリ６、管理データ圧縮／伸張部５Ａを制御する。コントローラ７は、ＲＡＭ４内の論物変換テーブル２０Ｘを用いて、ＮＡＮＤフラッシュメモリ６内へのデータの書き込み、ＮＡＮＤフラッシュメモリ６内からのデータの読み出しを行なう。
【００２６】
具体的には、コントローラ７は、ＮＡＮＤフラッシュメモリ６が記憶している論物変換テーブル２０Ｘを、所定のタイミング（起動時など）でＲＡＭ４に取込むとともに、ＲＡＭ４内の論物変換テーブル２０Ｘを所定のタイミングでＮＡＮＤフラッシュメモリ６に記憶させる。また、コントローラ７は、ホスト装置１０とＮＡＮＤフラッシュメモリ６との間でＲＡＭ４を介してデータ転送を行う。また、コントローラ７は、データ転送の際に、論物変換テーブル２０ＸをＲＡＭ４およびＮＡＮＤフラッシュメモリ６で更新しながら論物変換テーブル２０Ｘに基づいてＲＡＭ４およびＮＡＮＤフラッシュメモリ６でのデータ管理を行なう。
【００２７】
例えば、ＮＡＮＤフラッシュメモリ６内にデータを書き込む場合、コントローラ７は、論理アドレスをＮＡＮＤフラッシュメモリ６内の記憶位置である物理アドレスに変換する。そして、コントローラ７は、変換した物理アドレスを含むライトコマンドをＮＡＮＤフラッシュメモリ６に送る。
【００２８】
ＳＳＤ１は、図示しないインタフェースを介して、ホスト装置１０からの読み書き指示を受ける。ホスト装置１０とＳＳＤ１との間のインタフェースは、例えば、ＳＡＴＡ（Serial  ATA）規格に準拠するが、これに限定されるものではない。管理データ圧縮／伸張部５Ａは、ハードウェアとして実装してもよいし、コントローラ７が実行するファームウェアモジュールとして実装してもよい。
【００２９】
ＮＡＮＤフラッシュメモリ６は、複数の不揮発性メモリセルが行列上に配置されたメモリセルアレイ及び当該メモリセルアレイに対する書き込み、読み出し、消去動作を制御するための周辺回路を含んでいる。メモリセルアレイは、データ消去の最小単位であるブロックを複数配列して構成されている。各々のブロックは、データ書込み及び読み出しの最小単位であるページを複数配列して構成されている。各々のメモリセルは、１ビットを記憶するように構成されていてもよいし、２ビット以上を記憶するように構成されていてもよい。ＮＡＮＤフラッシュメモリ６では、ブロック内の同一ページに対する再書き込みは、一度当該ページを含むブロック全体を消去した後でなければ許可されない。
【００３０】
ホスト装置１０からＳＳＤ１に書き込まれたデータは、所定の管理単位でＮＡＮＤフラッシュメモリ６に記憶される。論理アドレス空間上の連続したアドレスを論物変換（論理アドレスと物理アドレスとの変換）の単位として、当該連続したアドレスをまとめてＮＡＮＤフラッシュメモリ６上の物理的な領域に割り当てる。管理単位内においては、論理アドレスが連続する複数のセクタが順に配置されている。管理単位の大きさは任意であるが、例えば、ＮＡＮＤフラッシュメモリ６のページサイズやブロックサイズ、あるいはホスト装置１０が採用するファイルシステムのクラスタサイズ等に一致させることができる。なお、クラスタサイズは、セクタサイズ以上である。
【００３１】
ホスト装置１０から書き込まれた更新データが管理単位にアラインされていない場合には、ＮＡＮＤフラッシュメモリ６上の管理単位の大きさの領域に既に記憶されているデータと、管理単位の大きさに満たない新たに書き込まれた更新データがＲＡＭ４上でマージされ、管理単位のデータが作成されたうえでＮＡＮＤフラッシュメモリ６の空き領域に書き込まれる（リードモディファイライト）。ホスト装置１０から書き込まれたデータがＮＡＮＤフラッシュメモリ６上のどこに書き込まれるかは動的に変化するものであり、その対応関係が論物変換テーブル２０Ｘによって管理される。論理アドレスとしては、例えば、論理容量に対してセクタ単位で０から通し番号が付されたＬＢＡ（Logical  Block  Address）が採用される。
【００３２】
ここで、管理単位でアラインされたＬＢＡとＮＡＮＤフラッシュメモリ上において管理単位に割り振られているデータ領域との対応関係について説明する。ホスト装置１０が書き込み要求で指定する論理アドレスはセクタ単位であるが、ＳＳＤ１内部では論理アドレスは管理単位の大きさ（例えば、クラスタサイズ）でアラインされる。そして、管理単位内の連続するＬＢＡに対応するセクタが、ＮＡＮＤフラッシュメモリ６の管理単位の領域にまとめて記憶される。例えば、管理単位の大きさがクラスタサイズに等しい場合、クラスタサイズでアラインされたＬＢＡに対応する複数のセクタが、ＮＡＮＤフラッシュメモリ６のクラスタサイズ分の領域に書き込まれる。
【００３３】
ＳＳＤ１では、論理クラスタの論理アドレスと、物理クラスタの物理アドレスとの対応関係を、論物変換テーブル２０Ｘを用いて管理している。図３は、論理クラスタと物理クラスタの対応関係を示す図である。
【００３４】
論理クラスタの並びが、ホスト装置１０から見えるセクタの並びであり、論理クラスタに対応するデータが、ＮＡＮＤフラッシュメモリ６内に物理クラスタとして記憶される。換言すると、論理クラスタ単位でホスト装置１０から書き込まれたデータがＮＡＮＤフラッシュメモリ６内の物理クラスタに割り当てられる。このとき、物理クラスタは、論理クラスタと同じ並びになるとは限らない。このため、論物変換テーブル２０Ｘでは、論理アドレスと物理アドレスとの対応関係（対応表）が格納されている。換言すると、論物変換テーブル２０Ｘでは、何れの論理クラスタが、ＮＡＮＤフラッシュメモリ６内の何れの物理クラスタに書き込まれているかが、格納されている。
【００３５】
例えば、図１で説明した論物変換テーブル２０Ｘでは、ホスト装置１０が指定する論理アドレスを論理クラスタ単位でアラインした値と、ＮＡＮＤフラッシュメモリ６の物理アドレスを物理クラスタ単位でアラインした値と、が対応付けされている。したがって、論物変換テーブル２０Ｘでは、論理アドレスとして論理クラスタ番号が登録され、物理アドレスとして物理クラスタ番号が登録されている。なお、論物変換テーブル２０Ｘにおいて、論理アドレスは登録されていなくてもよい。この場合、例えば、物理アドレスのメモリアドレスが論理アドレスとなる。
【００３６】
ホスト装置１０からＳＳＤ１に書き込みが要求されるデータは連続しているデータであることが多い。特にホスト装置１０とＳＳＤ１とを用いて構成されるシステムがＰＣ（Personal  Computer）系である場合、ホスト装置１０からは、文書ファイル、画像データ、動画データといった連続したデータの固まり（シーケンシャルライト）が書き込み単位として要求される。このとき、ＳＳＤ１は、書き込まれるデータが、論理クラスタ単位でＮＡＮＤフラッシュメモリ６の何れの物理クラスタに書き込まれているかを、論物変換テーブル２０Ｘに記憶させる。そして、所定のタイミングで、論物変換テーブル２０ＸがＮＡＮＤフラッシュメモリ６内に記憶される。このとき、本実施形態では、論物変換テーブル２０Ｘが圧縮処理される。
【００３７】
（論物変換テーブルの第１の圧縮処理）
図４は、論物変換テーブルの第１の圧縮処理例を説明するための図である。また、図５は、論物変換テーブルの第１の圧縮処理手順を示すフローチャートである。図４では、論物変換テーブル２０Ｘの一例である論物変換テーブル２０Ａの圧縮処理例を示している。なお、図４に示している論物変換テーブル２０Ａでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
【００３８】
ＳＳＤ１では、動作中、必要に応じて論物変換テーブル２０Ａを編集する。また、ＳＳＤ１のコントローラ７は、動作中、論物変換テーブル２０ＡのＮＡＮＤフラッシュメモリ６への更新が必要か否かを監視している（ステップＳ１０）。論物変換テーブル２０Ａの更新が必要なタイミングでなければ（ステップＳ１０、Ｎｏ）、コントローラ７は、更新有無の監視を継続する。一方、論物変換テーブル２０Ａの更新が必要なタイミングになると（ステップＳ１０、Ｙｅｓ）、コントローラ７は、管理データ圧縮／伸張部５Ａに論物変換テーブル２０Ａの圧縮処理を指示する。
【００３９】
管理データ圧縮／伸張部５Ａは、書き込まれるデータが連続しているデータであることを利用して、論物変換テーブル２０Ａを論理的に圧縮する。例えば、論物変換テーブル２０Ａでは、論理アドレスが、０、１、２、３・・・３１である。また、論物変換テーブル２０Ａでは、各論理アドレスに対応する物理アドレスが、１００＿００００、１００＿０００１、１００＿００１０、１００＿００１１、・・・１０１＿１１１１のように、連続している。
【００４０】
この場合において、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ａ内のＸ番目の物理アドレス（上段側アドレス）と（Ｘ＋１）番目の物理アドレス（下段側アドレス）との差分を、Ｘ＝０〜３０の全てに対して算出する。換言すると、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ａ内の各物理アドレス間に対し、上段側の物理アドレスと下段側の物理アドレスの差分を算出する（ステップＳ２０）。
【００４１】
そして、管理データ圧縮／伸張部５Ａは、各差分のうち値が「１」である差分を抽出するとともに、この「１」が連続して何回続くかを算出する。換言すると、差分「１」の連続回数が算出される（ステップＳ３０）。なお、「１」が連続した後、一度途切れて再び「１」が続くような場合には、「１」の連続群毎に「１」の連続回数が算出される。
【００４２】
例えば、図４に示す論物変換テーブル２０Ａの場合、論物変換テーブル２０Ａ内の先頭の物理アドレス「１００＿００００」と２番目の物理アドレス「１００＿０００１」との差分として、「０００＿０００１」が算出される。また、２番目の物理アドレス「１００＿０００１」と３番目の物理アドレス「１００＿００１０」との差分として、「０００＿０００１」が算出され、３番目の物理アドレス「１００＿００１０」と４番目の物理アドレス「１００＿００１１」との差分として、「０００＿０００１」が算出される。同様に、３１番目の物理アドレス「１０１＿１１１０」（図示せず）と３２番目の物理アドレス「１０１＿１１１１」との差分として、差分「０００＿０００１」が算出される。
【００４３】
そして、管理データ圧縮／伸張部５Ａは、差分「１」に対応する差分「０００＿０００１」の連続回数を算出する。換言すると、管理データ圧縮／伸張部５Ａは、上段側の物理アドレスとその下段側の物理アドレスとの間で引き算を行ない、その結果を、「１」の連続した長さで表現する。ここでは、差分「０００＿０００１」の連続回数として３１回が算出される。なお、先頭の物理アドレス「１００＿００００」に対応する差分は算出できないので、管理データ圧縮／伸張部５Ａは、先頭の物理アドレスに対する差分算出は行なわない。
【００４４】
管理データ圧縮／伸張部５Ａは、先頭の物理アドレス「１００＿００００」に対しては、圧縮していないことを示す「０」を最上位ビットに付加する。これにより、管理データ圧縮／伸張部５Ａは、物理アドレス「１００＿００００」をデータ「０１００＿００００」に変換する。換言すると、差分が「１」でなかった物理アドレスに、圧縮していないことを示すデータが付加される（ステップＳ４０）。そして、管理データ圧縮／伸張部５Ａは、論理アドレスの「０」と、変換後のデータ「０１００＿００００」と、を対応付けする。
【００４５】
また、管理データ圧縮／伸張部５Ａは、差分「０００＿０００１」の連続回数である「３１」を示す「００１＿１１１１」に対し、圧縮したことを示す「１」を最上位ビットに付加する。これにより、管理データ圧縮／伸張部５Ａは、「００１＿１１１１」を「１００１＿１１１１」に変換する。換言すると、管理データ圧縮／伸張部５Ａは、連続回数を示すデータに対し、圧縮したことを示すデータを付加する（ステップＳ５０）。そして、管理データ圧縮／伸張部５Ａは、論理アドレスの「１」と、変換後のデータ「１００１＿１１１１」と、を対応付けする。
【００４６】
この後、管理データ圧縮／伸張部５Ａは、論理アドレスと変換後のデータとを対応付けしたデータ（圧縮後の論物変換テーブル２０Ａ）をＮＡＮＤフラッシュメモリ６に書き込む（ステップＳ６０）。これにより、ＮＡＮＤフラッシュメモリ６は、論理アドレスの「０」と変換後のデータ「０１００＿００００」とが対応付けされたデータと、論理アドレスの「１」と連続回数を示すデータ「１００１＿１１１１」とが対応付けされたデータと、を記憶する。
【００４７】
なお、図４では、論物変換テーブル２０Ａの各物理アドレスを、７ビットで示した場合について説明したが、論物変換テーブル２０Ａの各物理アドレスを、８ビット以上で示してもよい。この場合であっても、各物理アドレスの最上位側の空いているビットを利用して、圧縮したか否かを示す情報の格納に用いる。
【００４８】
圧縮された論物変換テーブル２０ＡをＮＡＮＤフラッシュメモリ６から読み出す場合、管理データ圧縮／伸張部５Ａは、圧縮された論物変換テーブル２０Ａの伸張処理を行う。例えば、図４に示した圧縮データ「０１００＿００００」、「１００１＿１１１１」を伸張する場合、管理データ圧縮／伸張部５Ａは、８ビットずつデータを読み出す。
【００４９】
最初にデータ「０１００＿００００」が読み出される。管理データ圧縮／伸張部５Ａは、読み出したデータの最初の１ビットを読み出す。ここでは、「０１００＿００００」の最初の１ビットは、「０」であるので、管理データ圧縮／伸張部５Ａは、このデータは圧縮されていないと判断する。そして、残りの７ビットのデータ「１００＿００００」をそのまま、物理アドレスとしてＲＡＭ４内の管理情報記憶部８に展開する。
【００５０】
さらに、管理データ圧縮／伸張部５Ａは、次の８ビットを読み出す。ここでは、「１００１＿１１１１」が読み出される。「１００１＿１１１１」の最初の１ビットは、「１」であるので、管理データ圧縮／伸張部５Ａは、このデータは圧縮されていると判断する。そして、管理データ圧縮／伸張部５Ａは、残りの７ビットのデータを読み出す。残りの７ビットは、「００１＿１１１１」であり、十進数で３１を示している。このため、管理データ圧縮／伸張部５Ａは、圧縮されていなかった最初のデータ「１００＿００００」を、「０００＿０００１」ずつ、３１回増加させる。これにより、図４に示した論物変換テーブル２０Ａと同じデータがＲＡＭ４内の管理情報記憶部８に展開される。
【００５１】
（論物変換テーブルの第２の圧縮処理）
図６は、論物変換テーブルの第２の圧縮処理例を説明するための図である。また、図７は、論物変換テーブルの第２の圧縮処理手順を示すフローチャートである。なお、第２の圧縮処理のうち、第１の圧縮処理と同様の処理については、その説明を省略する。第２の圧縮処理のステップＳ１１０〜１３０までは、第１の圧縮処理のステップＳ１０〜３０までと、同じ処理手順である。また、図６では、論物変換テーブル２０Ｘの一例である論物変換テーブル２０Ｂの圧縮処理例を示している。なお、図６に示している論物変換テーブル２０Ｂでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
【００５２】
なお、論物変換テーブル２０Ｂでは、８ビットを用いて各物理アドレスを示しているが、最上位の１ビット以上を用いることなく、下位ビット側のビットで各物理アドレスを示しておく。ここでは、最上位の４ビットを残しておき、下位ビット側の８ビットで各物理アドレスを示す場合について説明する。
【００５３】
この場合において、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ｂ内のＸ番目の物理アドレス（上段側アドレス）と（Ｘ＋１）番目の物理アドレス（下段側アドレス）との差分を、Ｘ＝０〜５の全てに対して算出する。そして、管理データ圧縮／伸張部５Ａは、各差分のうち値が「１」である差分を抽出するとともに、この「１」が連続して何回続くかを算出する。換言すると、差分「１」の連続回数が算出された後（ステップＳ１３０）、管理データ圧縮／伸張部５Ａは、連続する差分「１」の先頭アドレスに、差分「１」の連続回数を示すデータを付加する（ステップＳ１４０）。なお、「１」が連続した後、一度途切れて再び「１」が続くような場合には、「１」の連続群毎に「１」の連続回数が算出される。
【００５４】
例えば、図６に示す論物変換テーブル２０Ｂの場合、論物変換テーブル２０Ｂ内の各物理アドレス「０１００」〜「０１１０」のそれぞれに対し、上段側アドレスとの差分「０００１」が算出される。そして、管理データ圧縮／伸張部５Ａは、差分「０００１」の連続回数を算出する。ここでは、差分「０００１」の連続回数として４回が算出される。管理データ圧縮／伸張部５Ａは、差分「０００１」の先頭となっている物理アドレス「０１００」に、差分「０００１」の連続回数を示すデータを付加する。具体的には、物理アドレス「０１００」よりも上位の４ビットを用いて連続回数４回を示す「００１１」を表す。換言すると、物理アドレス「０１００」の上位ビット側に連続回数４回を示す「００１１」を付加し、これにより、データ「００１１＿０１００」を生成する。
【００５５】
先頭の物理アドレス「００１０」に対応する差分は算出できないので、管理データ圧縮／伸張部５Ａは、先頭の物理アドレスに対する差分算出は行なわない。この場合、物理アドレス「００１０」よりも上位の４ビットを「００００」とする。これにより、論理アドレス０に対応する物理アドレスは、「００００＿００１０」となる。
【００５６】
また、論理アドレス５に対応する物理アドレス「００００＿１０００」は、上段側アドレスとの差分が「０００１」ではないので、物理アドレス「１０００」よりも上位の４ビットを「００００」とする。これにより、論理アドレス５に対応する物理アドレスは、「００００＿１０００」となる。同様に、論理アドレス６に対応する物理アドレス「００００＿１１１０」は、上段側アドレスとの差分が「０００１」ではないので、物理アドレス「１１１０」よりも上位の４ビットを「００００」とする。これにより、論理アドレス６に対応する物理アドレスは、「００００＿１１１０」となる。このように、管理データ圧縮／伸張部５Ａは、差分が「１」でなかった物理アドレスに、圧縮していないことを示すデータを付加する（ステップＳ１５０）。
【００５７】
そして、管理データ圧縮／伸張部５Ａは、論理アドレスと、変換後のデータと、を対応付けする。具体的は、管理データ圧縮／伸張部５Ａは、論理アドレスの「０」と、変換後のデータ「００００＿００１０」と、を対応付けする。また、管理データ圧縮／伸張部５Ａは、論理アドレスの「１」と、変換後のデータ「００１１＿０１００」と、を対応付けする。また、管理データ圧縮／伸張部５Ａは、論理アドレスの「５」と、変換後のデータ「００００＿１０１０」と、を対応付けし、論理アドレスの「６」と、変換後のデータ「００００＿１１１０」と、を対応付けする。
【００５８】
空いているビットを利用して、最上位ビットとして示すことができる数値は、例えば、空いているビットが４ビットの場合０〜１５までである。このため、差分「１」の連続数が１５以上の場合、物理アドレスが、１５ずつの物理アドレスに区切られる。例えば、論理アドレス「１」〜「３０」まで差分「１」が連続する場合、論理アドレス「１」〜「１５」までの物理アドレスが１つの物理アドレス群とされ、論理アドレス「１６」〜「３０」までの物理アドレスが１つの物理アドレス群とされる。このように、管理データ圧縮／伸張部５Ａは、最上位ビットで示すことができる数値（ここでは４ビットなので１５まで）を用いて、上段側アドレスとの差分の「１」が連続している物理アドレスに区切りを入れる。
【００５９】
この後、管理データ圧縮／伸張部５Ａは、論理アドレスと変換後のデータとを対応付けしたデータ（圧縮後の論物変換テーブル２０Ｂ）をＮＡＮＤフラッシュメモリ６に書き込む（ステップＳ１６０）。これにより、ＮＡＮＤフラッシュメモリ６は、論理アドレスと変換後のデータとが対応付けされたデータを記憶する。
【００６０】
圧縮された論物変換テーブル２０ＢをＮＡＮＤフラッシュメモリ６から読み出す場合、管理データ圧縮／伸張部５Ａは、圧縮された論物変換テーブル２０Ｂの伸張処理を行う。例えば、図６に示した圧縮データ「００００＿００１０」、「００１１＿０１００」、「００００＿１０１０」、「００００＿１１１０」を伸張する場合、管理データ圧縮／伸張部５Ａは、８ビットずつデータを読み出す。
【００６１】
例えば、最初にデータ「００００＿００１０」が読み出される。管理データ圧縮／伸張部５Ａは、読み出したデータの最初の４ビットを読み出す。ここでの最初の４ビットは、「００００」であるので、管理データ圧縮／伸張部５Ａは、このデータは圧縮されていないと判断する。そして、残りの４ビットのデータ「００１０」をそのまま、物理アドレスとしてＲＡＭ４内の管理情報記憶部８に展開する。
【００６２】
また、管理データ圧縮／伸張部５Ａは、次の８ビットを読み出す。ここでは、「００１１＿０１００」が読み出される。「００１１＿０１００」の最初の４ビットは、「００１１」であるので、管理データ圧縮／伸張部５Ａは、このデータは圧縮されていると判断するとともに、差分「０」が４回連続すると判断する。そして、管理データ圧縮／伸張部５Ａは、「０１００」を、「０００１」ずつ、３回増加させる。同様に、物理アドレスとして「１０１０」、「１１１０」が伸張される。これにより、図６に示した論物変換テーブル２０Ｂと同じデータがＲＡＭ４内の管理情報記憶部８に展開される。
【００６３】
このように、第１および第２の圧縮処理では、物理アドレスを、差分「１」の連続回数で変換することにより、物理アドレスのデータ圧縮が可能となる。これにより、論物変換テーブル２０Ａ，２０Ｂのデータ圧縮が可能となる。このように、ＲＡＭ４内の管理情報記憶部８で論物変換テーブル２０Ａ，２０Ｂのデータサイズを小さくすることで、ＮＡＮＤフラッシュメモリ６への書き込み時間と、ＮＡＮＤフラッシュメモリ６からの読み出し時間を短縮することが可能となる。また、論物変換テーブル２０Ａ，２０Ｂのデータサイズが小さくなるので、ＮＡＮＤフラッシュメモリ６のメモリサイズを少なくすることができる。
【００６４】
なお、図６では、論物変換テーブル２０Ｂの各物理アドレスに対し、最上位の４ビットが空いている場合について説明したが、各物理アドレスの最上位の３ビット以下または５ビット以上が空いている場合でも同様に、３ビット以下または５ビット以上を利用する。
【００６５】
なお、本実施形態では、差分「１」の連続回数を示すことによって論物変換テーブル２０Ａ，２０Ｂの圧縮を行なったが、差分「０」の連続回数を示すことによって論物変換テーブル２０Ａ，２０Ｂの圧縮を行なってもよい。差分「０」は、同じデータが連続する場合に現れる。例えば、物理アドレス内には、未書き込みのデータを示す無効値が入っている場合がある。そして、未書き込みのデータは、物理アドレス内で連続していることが多い。
【００６６】
（論物変換テーブルの第３の圧縮処理）
図８は、論物変換テーブルの第３の圧縮処理例を説明するための図である。図８では、論物変換テーブル２０Ｘの一例である論物変換テーブル２０Ｃの圧縮処理例を示している。なお、図８に示している論物変換テーブル２０Ｃでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。また、第３の圧縮処理は、第１の圧縮処理と同様の処理手順なので、ここでは第３の圧縮処理手順の説明を省略する。
【００６７】
例えば、論物変換テーブル２０Ｃでは、論理アドレスが、０、１、２、３・・・３１である。また、論物変換テーブル２０Ｃでは、各論理アドレスに対応する物理アドレスの多くは、「１１１＿１１１１」であり、論物変換テーブル２０Ｃ内で連続している。「１１１＿１１１１」は、例えば、無効データなどである。
【００６８】
この場合において、管理データ圧縮／伸張部５Ａは、論物変換テーブル２０Ｃ内のＸ番目の物理アドレス（上段側アドレス）と（Ｘ＋１）番目の物理アドレス（下段側アドレス）との差分を、Ｘ＝０〜３０の全てに対して算出する。そして、管理データ圧縮／伸張部５Ａは、各差分のうち値が「０」である差分を抽出するとともに、この「０」が連続して何回続くかを算出する。なお、「０」が連続した後、一度途切れて再び「０」が続くような場合には、「０」の連続群毎に「０」の連続回数が算出される。
【００６９】
例えば、図８に示す論物変換テーブル２０Ｃの場合、論物変換テーブル２０Ｃ内の先頭の物理アドレス「１１１＿１１１１」と２番目の物理アドレス「１１１＿１１１１」との差分として、「０００＿００００」が算出される。同様に、２番目〜８番目までの物理アドレスのそれぞれに対し、差分「０００＿００００」が算出される。
【００７０】
この後、管理データ圧縮／伸張部５Ａは、差分「０」に対応する差分「０００＿００００」の連続回数を算出する。換言すると、管理データ圧縮／伸張部５Ａは、上段側の物理アドレスとその下段側の物理アドレスとの間で引き算を行ない、その結果を、「０」の連続した長さで表現する。ここでは、差分「０００＿００００」の連続回数として７回が算出される。なお、先頭の物理アドレス「１１１＿１１１１」に対応する差分は算出できないので、管理データ圧縮／伸張部５Ａは、先頭の物理アドレスに対する差分算出は行なわない。
【００７１】
この後、論物変換テーブル２０Ａの場合と同様の処理によって、物理アドレスを圧縮する。すなわち、管理データ圧縮／伸張部５Ａは、先頭の物理アドレス「１１１＿１１１１」に対しては、圧縮していないことを示す「０」を最上位ビットに付加する。これにより、管理データ圧縮／伸張部５Ａは、物理アドレス「１１１＿１１１１」をデータ「０１１１＿１１１１」に変換する。そして、管理データ圧縮／伸張部５Ａは、論理アドレスの「０」と、変換後のデータ「０１１１＿１１１１」と、を対応付けする。
【００７２】
また、管理データ圧縮／伸張部５Ａは、差分「０００＿００００」の連続回数である「７」を示す「０００＿０１１１」に対し、圧縮したことを示す「１」を最上位ビットに付加する。これにより、管理データ圧縮／伸張部５Ａは、「０００＿０１１１」を「１０００＿０１１１」に変換する。そして、管理データ圧縮／伸張部５Ａは、論理アドレスの「１」と、変換後のデータ「１０００＿０１１１」と、を対応付けする。
【００７３】
この後、管理データ圧縮／伸張部５Ａは、論理アドレスと変換後のデータとを対応付けしたデータ（圧縮後の論物変換テーブル２０Ｃ）をＮＡＮＤフラッシュメモリ６に書き込む。これにより、ＮＡＮＤフラッシュメモリ６は、論理アドレスと変換後のデータとが対応付けされたデータを記憶する。
【００７４】
このように、第３の圧縮処理では、物理アドレスを、差分「０」の連続回数を用いたデータに変換することにより、物理アドレスのデータ圧縮が可能となる。これにより、論物変換テーブル２０Ｃのデータ圧縮が可能となる。
【００７５】
なお、図８では、論物変換テーブル２０Ｃの各物理アドレスを、７ビットで示した場合について説明したが、論物変換テーブル２０Ｃの各物理アドレスを、８ビット以上で示してもよい。この場合であっても、各物理アドレスの最上位側の空いているビットを利用して、圧縮したか否かを示す情報の格納に用いる。このように、ＳＳＤ１は、圧縮するサイズを可変にすることができる。
【００７６】
ところで、論物変換テーブルを管理する方法として、例えば、トラックとクラスタの２段階で論物変換テーブルを管理する方法がある。この方法では、論物変換テーブルの管理単位が細かいほど、論物変換テーブルのサイズが大きくなる。そのため、管理単位の異なる２つの論物変換テーブル（トラック：大、クラスタ：小）を用意し、クラスタの数が増えてきたらデフラグすることによって連続するクラスタを集め、トラックとして管理する。これにより、トラックのサイズ分クラスタが連続していれば、トラックとして管理できるようになる。この方法では、ばらばらに配置されているクラスタをデフラグしてトラックとして管理するには、トラックサイズ分のクラスタを連続して配置しなおす必要がある。
【００７７】
これに対し、本実施形態のＳＳＤ１は、連続したクラスタがあれば、圧縮して論物変換テーブル２０Ｘのサイズを減らすことを可能としている。そのため、一度にトラックサイズ分のクラスタを集めている余裕がない場合であっても、少しずつクラスタを集めてきて少しずつ論物変換テーブル２０ＸＣのサイズを減らすことが可能なる。このように、ＳＳＤ１は、段階的にデフラグすることが可能となる。したがって、ＳＳＤ１は、論物変換テーブル２０Ｘを細かい単位で圧縮することが可能となる。
【００７８】
なお、本実施形態では、論理クラスタから物理クラスタへの変換に用いる論物変換テーブル２０Ｘを圧縮する場合について説明したが、物理クラスタから論理クラスタへの変換に用いる論物変換テーブルを圧縮してもよい。また、物理アドレスに限らず論理アドレスを圧縮してもよい。論理クラスタから物理クラスタへの変換に用いる論物変換テーブル２０Ｘは、正引きの論物変換テーブル２０Ｘであり、物理クラスタから論理クラスタへの変換に用いる論物変換テーブルは、逆引きの論物変換テーブル２０Ｘである。正引きの論物変換テーブル２０Ｘは、論理アドレス（ＬＢＡ）からＮＡＮＤフラッシュメモリ６上の記憶位置を検索するためのテーブルである。これに対し、逆引きの論物変換テーブルは、ＮＡＮＤフラッシュメモリ６上の記憶位置から論理アドレス（ＬＢＡ）を検索するためのテーブルである。また、管理データ圧縮／伸張部５は、圧縮したデータをさらに圧縮してもよい。
【００７９】
ＳＳＤ１では、更新前後の管理テーブルの差分をログという形でＮＡＮＤフラッシュメモリ６へ記憶させている。ＮＡＮＤフラッシュメモリ６にログを書き込む場合も、ログを圧縮することにより、ＮＡＮＤフラッシュメモリ６へのログの書き込み時間とＮＡＮＤフラッシュメモリ６からのログの読み出し時間を短くすることが可能となる。
【００８０】
また、デフラグ時に圧縮しやすくなるように、隣り合うＬＣＡを隣り合う物理クラスタに移動させてもよい。これにより、デフラグ時の圧縮を容易に行なうことが可能となる。
【００８１】
このように第１の実施形態によれば、物理アドレスを、差分「１」や「０」の連続回数で変換しているので、物理アドレスのデータ圧縮が可能となる。したがって、不揮発性メモリにおける管理テーブル（論物変換テーブル２０Ａ〜２０Ｃ）の読み出し／書き込みを、短時間で行なうことが可能となる。
【００８２】
また、ＮＡＮＤフラッシュメモリ６へのデータ書き込み量が減るので、ＳＳＤ１の寿命を延ばすことが可能となる。また、圧縮方式が単純なので、管理データ圧縮／伸張部５ＡのＨＷ化が容易である。
【００８３】
（第２の実施形態）
つぎに、図９〜図１２を用いてこの発明の第２の実施形態について説明する。第２の実施形態では、各ブロック内の有効クラスタ数を管理するクラスタ管理テーブルの圧縮処理を行う。
【００８４】
図９は、ブロックと有効クラスタの関係を説明するための図である。本実施形態では、ＮＡＮＤフラッシュメモリ６内のブロックが、ブロックＢ０〜Ｂ９９までの１００ブロックである場合について説明する。
【００８５】
各ブロックＢ０〜Ｂ９９は、それぞれ複数のクラスタで構成されている。そして、各ブロックＢ０〜Ｂ９９内のクラスタには、有効なクラスタや無効なクラスタが含まれている。このうち、有効なクラスタは、データの読み出しが可能なクラスタであり、無効クラスタは、クラスタ内のデータが他の場所に書き込まれ、参照されることがなくなったクラスタである。
【００８６】
ＳＳＤ１では、ブロックＢ０〜Ｂ９９から、有効クラスタを取り出して、新しいブロックに書き直す処理（コンパクション）が行なわれる。このコンパクションの際などに、クラスタ管理テーブルが参照される。
【００８７】
図９では、ブロックＢ０，Ｂ１，Ｂ９９内の有効クラスタが０である場合を示しているまた、ブロックＢ２内に有効クラスタが３つあり、ブロックＢ３内に有効クラスタが２つある場合を示している。クラスタ管理テーブル３０では、有効クラスタ数が、例えば１５ビットで示され、さらに１５ビットの１つ上位ビットが空いている。
【００８８】
（クラスタ管理テーブルの第１の圧縮処理）
図１０は、クラスタ管理テーブルの第１の圧縮処理を説明するための図である。また、図１１は、クラスタ管理テーブルの第１の圧縮処理手順を示すフローチャートである。図１０では、図９に示したブロックＢ０〜Ｂ９９に対するクラスタ管理テーブル３０を示している。クラスタ管理テーブル３０では、ブロック番号と、有効クラスタ数と、がブロック毎に対応付けされている。例えば、ブロックＢ０は、ブロック番号が「０」であり、有効クラスタ数が「０」である。また、ブロックＢ１は、ブロック番号が「１」であり、有効クラスタ数が「０」である。また、ブロックＢ２は、ブロック番号が「２」であり、有効クラスタ数が「３」である。また、ブロックＢ３は、ブロック番号が「３」であり、有効クラスタ数が「２」である。
【００８９】
ＳＳＤ１のコントローラ７は、動作中、クラスタ管理テーブル３０の更新が必要か否かを監視している（ステップＳ２１０）。クラスタ管理テーブル３０の更新が必要なタイミングでなければ（ステップＳ２１０、Ｎｏ）、コントローラ７は、クラスタ管理テーブル３０の監視を継続する。一方、クラスタ管理テーブル３０の更新が必要なタイミングになると（ステップＳ２１０、Ｙｅｓ）、コントローラ７は、管理データ圧縮／伸張部５Ａにクラスタ管理テーブル３０の圧縮処理を指示する。クラスタ管理テーブル３０の更新タイミングは、例えば、ブロックＢ０〜Ｂ９９内の有効クラスタ数に変化があった場合などである。
【００９０】
管理データ圧縮／伸張部５Ａは、各ブロックの有効クラスタ数が「０」であるか否かを判断する（ステップＳ２２０）。例えば、クラスタ管理テーブル３０の場合、ブロック番号０のブロックＢ０、ブロック番号１のブロックＢ１、ブロック番号９９のブロックＢ９９は、有効クラスタ数が「０」である。有効クラスタ数が「０」である場合（ステップＳ２２０、Ｙｅｓ）、管理データ圧縮／伸張部５Ａは、「０」を１ビットで表す。換言すると、管理データ圧縮／伸張部５Ａは、有効クラスタ数を１ビットのデータに変換する（ステップＳ２３０）。
【００９１】
一方、有効クラスタ数が「０」でない場合（ステップＳ２２０、Ｎｏ）、管理データ圧縮／伸張部５Ａは、有効クラスタ数を１５ビットのまま表す。そして、管理データ圧縮／伸張部５Ａは、有効クラスタ数を示す１５ビットの上位ビット側に、圧縮していないことを示すデータとして「１」を示す１ビットを付加する（ステップＳ２４０）。この後、管理データ圧縮／伸張部５Ａは、圧縮後のクラスタ管理テーブル３０をＮＡＮＤフラッシュメモリ６に書き込む（ステップＳ２５０）。
【００９２】
圧縮されたクラスタ管理テーブル３０をＮＡＮＤフラッシュメモリ６から読み出す場合、管理データ圧縮／伸張部５Ａは、圧縮されたクラスタ管理テーブル３０の伸張処理を行う。例えば、図１０に示した圧縮データ「０」、「０」、「１・・・＿００００＿０１１１」、「１・・・＿００００＿０１１０」・・・「０」を伸張する場合、管理データ圧縮／伸張部５Ａは、「１」が出てくるまで順番にデータを読み出す。管理データ圧縮／伸張部５Ａは、「０」のデータに対しては、「０」を１５ビットのデータに変換してＲＡＭ４内の管理情報記憶部８に展開する。
【００９３】
一方、管理データ圧縮／伸張部５Ａは、「１」のデータを検出した場合、この「１」に続く８ビットのデータを、管理情報記憶部８に展開する。例えば、「１・・・＿００００＿０１１１」の場合、最初のビットが「１」であるので、これ以降の１５ビットが有効クラスタ数を示すデータであると判断される。同様に、「１・・・＿００００＿０１１０」の場合、最初のビットが「１」であるので、これ以降の１５ビットが有効クラスタ数を示すデータであると判断される。管理データ圧縮／伸張部５Ａは、１６ビットで表されているデータを１５ビットに変換して管理情報記憶部８に展開する。これにより、図１０に示したクラスタ管理テーブル３０と同じデータが管理情報記憶部８に展開される。
【００９４】
このように、本実施形態では、ＲＡＭ４内で発生頻度の高いデータを符号化し圧縮を行っている。有効クラスタ数には偏りがあり、０であるか、ブロックの有効クラスタ数の上限になっている場合が多い。ＳＳＤ１では、この傾向を利用して効果的に圧縮を行う。
【００９５】
（クラスタ管理テーブルの第２の圧縮処理）
つぎに、クラスタ管理テーブルの第２の圧縮処理について説明する。クラスタ管理テーブルの第２の圧縮処理では、有効クラスタ数が「０」である場合と、有効クラスタ数が上限値（満杯）である場合を、物理アドレスの圧縮対象とする。
【００９６】
図１２は、クラスタ管理テーブルの２１の圧縮処理を説明するための図である。クラスタ管理テーブル３１では、例えば、ブロックＢ０は、ブロック番号が「０」であり、有効クラスタ数が「０」である。また、ブロックＢ１は、ブロック番号が「１」であり、有効クラスタ数が「上限値Ｕ」である。また、ブロックＢ２は、ブロック番号が「２」であり、有効クラスタ数が「上限値Ｕ」である。また、ブロックＢ３は、ブロック番号が「３」であり、有効クラスタ数が「２」である。
【００９７】
管理データ圧縮／伸張部５Ａは、各ブロックの有効クラスタ数が「０」であるか否かを判断する。ここでは、ブロック番号０のブロックＢ０、ブロック番号９９のブロックＢ９９は、有効クラスタ数が「０」である。有効クラスタ数が「０」である場合、管理データ圧縮／伸張部５Ａは、１ビットを用いて「０」と表す。
【００９８】
また、管理データ圧縮／伸張部５Ａは、各ブロックの有効クラスタ数が「上限値Ｕ」であるか否かを判断する。ここでは、ブロック番号１のブロックＢ１、ブロック番号２のブロックＢ２は、有効クラスタ数が「上限値Ｕ」である。有効クラスタ数が「上限値Ｕ」である場合、管理データ圧縮／伸張部５Ａは、２ビットを用いて「１０」と表す。換言すると、管理データ圧縮／伸張部５Ａは、有効クラスタ数を２ビットのデータに変換する。
【００９９】
そして、有効クラスタ数が「０」でも「上限値Ｕ」でもない場合、管理データ圧縮／伸張部５Ａは、有効クラスタ数を１５ビットのまま表す。そして、管理データ圧縮／伸張部５Ａは、有効クラスタ数を示す１５ビットの上位ビット側に、圧縮していないことを示すデータとして「１１」を示すビットを付加する。
【０１００】
なお、本実施形態では、１５ビットで物理アドレスを表したが、物理アドレスを表すビット数は１５ビットに限らない。例えば、１４ビット以下で物理アドレスを表してもよいし、１５ビット以上で物理アドレスを表してもよい。
【０１０１】
また、本実施形態では、ブロック毎にクラスタ数を管理する場合について説明したが、データの管理単位は、何れのサイズであってもよい。例えば、ブロック毎のバッドクラスタ数を管理する管理テーブルを圧縮してもよいし、ページ毎のバッドセクタ数を管理する管理テーブルを圧縮してもよい。このように、管理データ圧縮／伸張部５Ａは、ＮＡＮＤフラッシュメモリ６内での第１のデータ記憶単位と、第１のデータ記憶単位内に含まれる有効な第２のデータ記憶単位の数である有効記憶単位数と、の対応関係を第１のデータ記憶単位毎に保持する管理テーブルを圧縮してもよい。
【０１０２】
このように第２の実施形態によれば、有効クラスタ数が「０」の場合に、有効クラスタ数を１ビットのデータで示しているので、クラスタ管理テーブル３０のデータ圧縮が可能となる。したがって、不揮発性メモリにおける管理テーブル（クラスタ管理テーブル３０）の読み出し／書き込みを、短時間で行なうことが可能となる。
【０１０３】
（第３の実施形態）
つぎに、図１３および図１４を用いてこの発明の第３の実施形態について説明する。第３の実施形態では、圧縮した論物変換テーブル２０ＸをＲＡＭ４内で記憶しておき、必要に応じて圧縮した論物変換テーブル２０ＸをＮＡＮＤフラッシュメモリ６内に書き込む。また、論物変換テーブル２０Ｘを用いる際には、ＲＡＭ４内で論物変換テーブル２０Ｘを伸張する。
【０１０４】
図１３は、第３の実施形態に係るＳＳＤの構成例を示すブロック図である。図１３の各構成要素のうち図２に示す第１の実施形態のＳＳＤ１と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【０１０５】
半導体記憶装置としてのＳＳＤ２は、管理情報記憶部８を含むＲＡＭ４と、実際にデータを記憶するＮＡＮＤフラッシュメモリ６と、管理データ圧縮／伸張部５Ｂと、コントローラ７と、を備えている。
【０１０６】
ＳＳＤ２のＲＡＭ４は、ホスト装置１０、コントローラ７、ＮＡＮＤフラッシュメモリ６、管理データ圧縮／伸張部５Ｂに接続されている。管理データ圧縮／伸張部５Ｂは、ＲＡＭ４、コントローラ７に接続されている。また、ＮＡＮＤフラッシュメモリ６は、ＲＡＭ４、コントローラ７に接続されている。そして、コントローラ７は、ホスト装置１０、ＲＡＭ４、ＮＡＮＤフラッシュメモリ６、管理データ圧縮／伸張部５Ｂに接続されている。
【０１０７】
ＳＳＤ２は、種々の管理テーブルを全てＲＡＭ４に展開せず、管理テーブルの中で必要な一部分をＮＡＮＤフラッシュメモリ６から読み出す。そして、ＳＳＤ２は、管理テーブルの一部分をＲＡＭ４内で編集した後、所定のタイミングでＮＡＮＤフラッシュメモリ６へ書き込む。換言すると、ＳＳＤ２では、ＲＡＭ４をキャッシュとして用いている。
【０１０８】
管理データ圧縮／伸張部５Ｂは、コントローラ７から伸張指示があった場合に、ＲＡＭ４内の論物変換テーブル２０Ｘを伸張し、ＲＡＭ４に戻す。また、管理データ圧縮／伸張部５Ｂは、コントローラ７から圧縮指示があった場合に、ＲＡＭ４内の論物変換テーブル２０Ｘを圧縮し、ＲＡＭ４に戻す。
【０１０９】
コントローラ７は、論物変換テーブル２０Ｘの読み出しが必要になると、管理データ圧縮／伸張部５Ｂに論物変換テーブル２０Ｘの伸張指示を送る。また、コントローラ７は、論物変換テーブル２０Ｘの読み出しが不要になると、管理データ圧縮／伸張部５Ｂに論物変換テーブル２０Ｘの圧縮指示を送る。
【０１１０】
これにより、ＲＡＭ４内では、論物変換テーブル２０Ｘの読み出しが必要な場合に、ＲＡＭ４内で論物変換テーブル２０Ｘが伸張され、論物変換テーブル２０Ｘの読み出しが不要になるとＲＡＭ４内で論物変換テーブル２０Ｘが圧縮される。論物変換テーブル２０Ｘの圧縮処理や伸張処理は、第１の実施形態で説明した圧縮処理や伸張処理と同様の処理である。
【０１１１】
ＳＳＤ２では、ＳＳＤ１と同様のタイミングで論物変換テーブル２０ＸがＮＡＮＤフラッシュメモリ６内に書き込まれる。このとき、ＲＡＭ４内で圧縮された状態の論物変換テーブル２０Ｘが、そのままＮＡＮＤフラッシュメモリ６内に書き込まれる。
【０１１２】
図１４は、論物変換テーブルの圧縮／伸張処理手順を示すフローチャートである。ＳＳＤ２のコントローラ７は、動作中、論物変換テーブル２０Ｘの読み出しが必要か否かを監視している（ステップＳ３１０）。論物変換テーブル２０Ｘの読み出しが不要であれば（ステップＳ３１０、Ｎｏ）、コントローラ７は、読み出し有無の監視を継続する。一方、論物変換テーブル２０Ｘの読み出しが必要になると（ステップＳ３１０、Ｙｅｓ）、コントローラ７は、管理データ圧縮／伸張部５Ｂに論物変換テーブル２０Ｘの伸張処理を指示する。
【０１１３】
これにより、管理データ圧縮／伸張部５Ｂは、ＲＡＭ４内から論物変換テーブル２０Ｘを伸張してＲＡＭ４内に記憶させる（ステップＳ３２０）。この後、必要に応じてＲＡＭ４内の論物変換テーブル２０Ｘが編集される（ステップＳ３３０）。論物変換テーブル２０Ｘの編集が終わると、コントローラ７は、管理データ圧縮／伸張部５Ｂに論物変換テーブル２０Ｘの圧縮処理を指示する。これにより、管理データ圧縮／伸張部５Ｂは、ＲＡＭ４内の論物変換テーブル２０Ｘを圧縮してＲＡＭ４に記憶させる（ステップＳ３４０）。
【０１１４】
また、ＳＳＤ２のコントローラ７は、論物変換テーブル２０ＸのＮＡＮＤフラッシュメモリ６への更新が必要か否かを監視している（ステップＳ３５０）。論物変換テーブル２０Ｘの更新が必要なタイミングでなければ（ステップＳ３５０、Ｎｏ）、コントローラ７は、更新有無の監視を継続する。一方、論物変換テーブル２０Ｘの更新が必要なタイミングになると（ステップＳ３５０、Ｙｅｓ）、コントローラ７は、ＲＡＭ４内の圧縮された論物変換テーブル２０Ｘを、ＮＡＮＤフラッシュメモリ６に書き込む（ステップＳ３６０）。この後、圧縮された論物変換テーブル２０Ｘが必要に応じてＲＡＭ４内に読み出され、圧縮された論物変換テーブル２０Ｘが必要に応じて伸張、編集され、所定のタイミングで圧縮される。
【０１１５】
本実施形態のＳＳＤ２は、キャッシュとしてのＲＡＭ４に論物変換テーブル２０Ｘを読み込んだ後も、圧縮したまま論物変換テーブル２０Ｘを利用する。これにより、少ないキャッシュメモリ容量でも多くの管理テーブルを保持できることとなる。したがって、圧縮しない場合と比較して、ＮＡＮＤフラッシュメモリ６への保存量、復元量に対して、多くの管理テーブルをＲＡＭ４内に展開することができる。
【０１１６】
なお、ＳＳＤ２は、圧縮したクラスタ管理テーブル３０，３１などの他の管理テーブルをＲＡＭ４内で記憶しておき、必要に応じて圧縮したクラスタ管理テーブル３０，３１をＮＡＮＤフラッシュメモリ６内に書き込んでもよい。この場合も、クラスタ管理テーブル３０，３１を用いる際には、ＲＡＭ４内でクラスタ管理テーブル３０，３１が伸張される。クラスタ管理テーブル３０，３１の圧縮処理や伸張処理は、第２の実施形態で説明した圧縮処理や伸張処理と同様の処理である。
【０１１７】
図１５は、ＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。パーソナルコンピュータ１２００は、ＳＳＤ１またはＳＳＤ２と、本体１２０１と、表示ユニット１２０２と、を備えている。なお、ここでは、パーソナルコンピュータ１２００がＳＳＤ２を備えている場合について説明する。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４と、を備えている。
【０１１８】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及びＳＳＤ２等が収容されている。
【０１１９】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１２０】
ＳＳＤ２は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１２１】
図１６は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ２、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１２２】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ２から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１２３】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１２４】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１２５】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１２６】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１２７】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ２を、ＡＴＡインタフェースを介して制御する。
【０１２８】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ２へのアクセスを行う。ＡＴＡインタフェース（Ｉ／Ｆ）を介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がＳＳＤ２に入力される。
【０１２９】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１３０】
パーソナルコンピュータ１２００は、ＳＳＤ２に電源供給を行い、また、ＳＳＤ２に停止要求（Standby要求）を発行する。仮にパーソナルコンピュータ１２００からＳＳＤ２への電源供給が不正に断たれた場合であっても、書き込みエラーの発生を未然に防ぐことができる。
【０１３１】
このように、第３の実施形態によれば、ＲＡＭ４が圧縮したままの管理テーブルを記憶しておき、管理テーブルの読み出しが必要になった際に、ＲＡＭ４内で管理テーブルが伸張されるので、ＲＡＭ４内の記憶領域を効率良く利用することが可能となる。したがって、多くの管理テーブルをＲＡＭ４上に置くことができる。
【０１３２】
このように第１〜第３の実施形態によれば、不揮発性メモリにおける管理テーブルの読み出し／書き込みを、短時間で行なうことが可能となる。
【０１３３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３４】
１，２…ＳＳＤ、４…ＲＡＭ、２０Ａ〜２０Ｃ，２０Ｘ…論物変換テーブル、５Ａ，５Ｂ…管理データ圧縮／伸張部、６…ＮＡＮＤフラッシュメモリ、７…コントローラ、８…管理情報記憶部、１０…ホスト装置、…論物変換テーブル、３０，３１…クラスタ管理テーブル、１２００…パーソナルコンピュータ。
【図１】
2013196115.tif 000003
【図２】
2013196115.tif 000004
【図３】
2013196115.tif 000005
【図４】
2013196115.tif 000006
【図５】
2013196115.tif 000007
【図６】
2013196115.tif 000008
【図７】
2013196115.tif 000009
【図８】
2013196115.tif 000010
【図９】
2013196115.tif 000011
【図１０】
2013196115.tif 000012
【図１１】
2013196115.tif 000013
【図１２】
2013196115.tif 000014
【図１３】
2013196115.tif 000015
【図１４】
2013196115.tif 000016
【図１５】
2013196115.tif 000017
【図１６】
2013196115.tif 000018