(57)【要約】【課題】論物アドレス変換テーブルを分割して管理することで、一時的に保持するための揮発性メモリの容量を抑えつつ、物理ブロックの利用頻度が分割管理によって集中することを防ぐ。【解決手段】フラッシュメモリ１０３と、揮発性メモリであるアドレス管理テーブル１０５とを有し、アドレス管理テーブル１０５には、論物変換テーブル１０６と消去済みテーブル１０７を一時的に記憶する。論物変換テーブル１０６は、フラッシュメモリ１０３を分割して管理する複数の部分論物変換テーブル２０１ａ〜２０１ｄのいずれかが選択的に記憶される。消去済みテーブル１０７は、分割管理せずに、部分論物変換テーブル２０１ａ〜２０１ｄに対応して、物理ブロックのデータの書込み状態を保持する。【選択図】図２
2007280329.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと揮発性メモリとコントローラからなる不揮発性記憶装置であって、
前記コントローラは、前記不揮発性メモリを管理するために、前記不揮発性記憶装置の外部から与えられる論理アドレスを前記不揮発性メモリの物理アドレスに変換する論物変換テーブルと、前記不揮発性メモリの物理ブロック毎にデータの書込み状態の情報を表す消去済みテーブルとを用い、
前記不揮発性メモリは、少なくとも前記論物変換テーブルを複数の部分論物変換テーブルに分割して保存し、
前記揮発性メモリは、前記複数の部分論物変換テーブルの少なくとも一つ以上を保存するとともに、前記消去済みテーブルを保存する、ことを特徴とする不揮発性記憶装置。
【請求項２】
不揮発性メモリと揮発性メモリとコントローラからなる不揮発性記憶装置における管理方法であって、
前記コントローラは、前記不揮発性メモリを管理するために、前記不揮発性記憶装置の外部から与えられる論理アドレスを前記不揮発性メモリの物理アドレスに変換する論物変換テーブルと、前記不揮発性メモリの物理ブロック毎にデータの書込み状態の情報を表す消去済みテーブルとを用い、
前記論物変換テーブルは、前記不揮発性メモリに保存され、
前記論物変換テーブルに登録されている全ての物理アドレスを読み出して、前記読み出した物理アドレスに対応する消去済みテーブルの情報を書込み済み物理ブロックとして消去済みテーブルを作成する、ことを特徴とする不揮発性記憶装置の管理方法。
【請求項３】
前記論物変換テーブルが複数の部分論物変換テーブルに分割されて前記不揮発性メモリに保存されることを特徴とする請求項２に記載の不揮発性記憶装置の管理方法。
【請求項４】
前記論物変換テーブルを基にした前記消去済みテーブルの作成が、前記不揮発性記憶装置の初期化処理中に１回だけ行われることを特徴とした請求項２に記載の不揮発性記憶装置の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを用いてデータの読み書きを行なう不揮発性記憶装置およびその管理方法に関する。
【背景技術】
【０００２】
近年、フラッシュメモリ等の不揮発性メモリを搭載したメモリーカードは、デジタルカメラや携帯電話の記録媒体として、その市場を拡大している。メモリーカードはデジタルカメラの高画素化や、携帯電話での動画記録等の用途へ向けて、更なる大容量化に対するニーズの拡がりを見せている。
【０００３】
そのために、より大容量のメモリーカードを実現するために用いられる大容量の不揮発性メモリを容易にかつ高速に制御する方法が求められている。
【０００４】
より大容量の不揮発性メモリを扱うためには、より大容量のアドレス情報を管理するための揮発性メモリがメモリーカード内に必要となる。
【０００５】
アドレス情報の管理とは、メモリーカード外部のホスト機器が指定するアドレス（以降「論理アドレス」という）と不揮発性メモリのアドレス（以降「物理アドレス」という）との対応関係、即ち論理アドレスを物理アドレスに変換する情報を格納するテーブル（以降「論物変換テーブル」という）による管理であり、また、不揮発性メモリの消去単位あたりの物理アドレス毎に、その物理アドレスが「書込み済み」であるか「消去済み」であるかの情報を格納するテーブル（以降「消去済みテーブル」という）による管理である。
【０００６】
論物変換テーブルも消去済みテーブルも不揮発性メモリの消去単位の数に比例してその容量が決定されるので、より大容量の不揮発性メモリを制御するためには、より大容量のアドレス情報の管理が必要となり、そのために用いる揮発性メモリの容量もより大容量となる。
【０００７】
例えば、消去単位が１６ＫＢの物理ブロックで構成される１２８Ｍｂｉｔ（１６ＭＢ）の不揮発性メモリを考えた場合、物理ブロックの数は１Ｋブロック（＝１６ＭＢ÷１６ＫＢ）あり、論物変換テーブルに必要な容量は１Ｋワード、消去済みテーブルに必要な容量は１Ｋｂｉｔになる。論物変換テーブルの１ワードに２バイトを適用した場合、両テーブル併せて２．１２５ＫＢ（＝１Ｋ×２Ｂ＋１Ｋｂｉｔ）の容量の揮発性メモリで十分である。
【０００８】
しかし同じく消去単位が１６ＫＢの物理ブロックで構成される１Ｇｂｉｔ（１２８ＭＢ）の不揮発性メモリを考えた場合、物理ブロックの数は８Ｋブロック（＝１２８ＭＢ÷１６ＫＢ）あり、論物変換テーブルに必要な容量は８Ｋワード、消去済みテーブルに必要な容量は８Ｋｂｉｔになる。１ワードに２バイトを適用した場合、両テーブル併せて１７ＫＢ（＝８Ｋ×２Ｂ＋８Ｋｂｉｔ）の揮発性メモリが必要になる。
【０００９】
アドレス情報を格納するための揮発性メモリの容量を抑えて容易に大容量の不揮発性記憶装置を実現する方法が特許文献１に示されている。この概要としては、論物変換テーブルと消去済みテーブルとを不揮発性メモリに格納し、揮発性メモリはアドレス情報の一部分だけ格納できる容量にする。そして必要に応じて不揮発性メモリにある論物変換テーブルと消去済みテーブルの必要な部分を揮発性メモリに読み出して使用することで、揮発性メモリの容量を抑えている。
【００１０】
以下に特許文献１で示される技術を用いた不揮発性記憶装置およびその書込み・読出し関する管理方法について、図１、図６を用いて簡単に説明する。
【００１１】
図１は不揮発性記憶装置の構成と、ホスト機器（以下、ホスト）との関係を示すブロック図である。図１において、１０１はホスト、１０２は不揮発性記憶装置、１０３は不揮発性記憶１０２内部において主にデータを記憶するための不揮発性メモリであるフラッシュメモリ、１０４はホスト１０１とのＩ／Ｆを制御するとともにフラッシュメモリ１０３の制御を行うコントローラ、１０５はコントローラ１０４の内部でフラッシュメモリ１０３を管理するための揮発性メモリであるアドレス管理テーブル、１０６はアドレス管理テーブル１０５の中でホスト１０１の指定する論理アドレスに対応するフラッシュメモリ１０３の物理アドレスを情報として格納する論物変換テーブル、１０７はフラッシュメモリ１０３の物理ブロックが消去済みであるかどうかの情報をビット情報として格納する消去済みテーブルである。
【００１２】
図６は、図１のフラッシュメモリ１０３とアドレス管理テーブル１０５におけるデータの相関を示した図である。図６において、図１と同じ物については図１と同じ番号を付している。６０１ａはフラッシュメモリ１０３に格納された消去済みテーブルを４分割した１番目の部分であるユニット１消去済みテーブル、６０１ｂはフラッシュメモリ１０３に格納された消去済みテーブルを４分割した２番目の部分であるユニット２消去済みテーブル、６０１ｃはフラッシュメモリ１０３に格納された消去済みテーブルを４分割した３番目の部分であるユニット３消去済みテーブル、６０１ｄはフラッシュメモリ１０３に格納された消去済みテーブルを４分割した４番目の部分であるユニット４消去済みテーブルであり、ユニット１消去済みテーブル６０１ａとユニット２消去済みテーブル６０１ｂとユニット３消去済みテーブル６０１ｃとユニット４消去済みテーブル６０１ｄとでフラッシュメモリ１０３を管理するための消去済みテーブルを構成している。揮発性メモリで構成されるアドレス管理テーブル１０５の消去済みテーブル１０７には６０１ａ〜６０１ｄのユニットｎ消去済みテーブル（ｎは１〜４）のいずれかひとつの情報が格納される。
【００１３】
６０２ａはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した１番目の部分であるユニット１論物変換テーブル、６０２ｂはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した２番目の部分であるユニット２論物変換テーブル、６０２ｃはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した３番目の部分であるユニット３論物変換テーブル、６０２ｄはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した４番目の部分であるユニット４論物変換テーブルであり、ユニット１論物変換テーブル６０２ａとユニット２論物変換テーブル６０２ｂとユニット３論物変換テーブル６０２ｃとユニット４論物変換テーブル６０２ｄとでフラッシュメモリ１０３を管理するための論物変換テーブルを構成している。揮発性メモリで構成されるアドレス管理テーブル１０５の論物変換テーブル１０６には６０２ａ〜６０２ｄのユニットｎ論物変換テーブル（ｎは１〜４）のいずれかひとつの情報が格納される。
【００１４】
６０３はフラッシュメモリ１０３のなかでホスト１０１が書込み・読み出しするデータを格納するデータ領域である。
【００１５】
フラッシュメモリ１０３の消去単位が１６ＫＢの物理ブロックで構成される１Ｇｂｉｔ（１２８ＭＢ）の時、物理ブロックの数は８Ｋブロック（＝１２８ＭＢ÷１６ＫＢ）あり、論物変換テーブルに必要な容量は２Ｋワード（＝８Ｋワード÷４）、消去済みテーブルに必要な容量は２Ｋｂｉｔ（＝８Ｋｂｉｔ÷４）になる。１ワードに２バイトを適用した場合、両テーブル併せて４．２５ＫＢ（＝２Ｋ×２Ｂ＋２Ｋｂｉｔ）がアドレス変換テーブル１０５に必要な容量である。
【００１６】
以上のように、特許文献１で示される技術を用いることによりコントローラに搭載しなくてはならないアドレス管理テーブルの容量を削減することが出来る。
【特許文献１】特開２００１−１４２７７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかし、従来の不揮発性記憶装置の構成では、消去済みテーブルを分割して管理しているために、空きブロック検索も分割された一つのユニット単位でしか行うことができない。そのために特定のユニットに対して書込みが集中した場合にユニット内でしかウェアレベリング（書き込みの分散化）を行うことが出来ず、信頼性を低下さえるという課題を有していた。また、特定のユニットに対して書込みが集中するというシチュエーションは特別なシチュエーションではなく、一般的な使用方法では不揮発性記憶装置を使用した場合にはＦＡＴ（ファイル・アロケーション・テーブル）と呼ばれるファイル管理テーブルの含まれる特定のユニットに対して書込みが集中する。
【課題を解決するための手段】
【００１８】
上記課題を解決するために、本発明は、不揮発性メモリと揮発性メモリとコントローラからなる不揮発性記憶装置であって、前記コントローラは、前記不揮発性メモリを管理するために、前記不揮発性記憶装置の外部から与えられる論理アドレスを前記不揮発性メモリの物理アドレスに変換する論物変換テーブルと、前記不揮発性メモリの物理ブロック毎にデータの書込み状態の情報を表す消去済みテーブルとを用い、前記不揮発性メモリは、少なくとも前記論物変換テーブルを複数の部分論物変換テーブルに分割して保存し、前記揮発性メモリは、前記複数の部分論物変換テーブルの少なくとも一つ以上を保存するとともに、前記消去済みテーブルを保存する。
【００１９】
また、本発明は、不揮発性メモリと揮発性メモリとコントローラからなる不揮発性記憶装置における管理方法であって、前記コントローラは、前記不揮発性メモリを管理するために、前記不揮発性記憶装置の外部から与えられる論理アドレスを前記不揮発性メモリの物理アドレスに変換する論物変換テーブルと、前記不揮発性メモリの物理ブロック毎にデータの書込み状態の情報を表す消去済みテーブルとを用い、前記論物変換テーブルは、前記不揮発性メモリに保存され、前記論物変換テーブルに登録されている全ての物理アドレスを読み出して、前記読み出した物理アドレスに対応する消去済みテーブルの情報を書込み済み物理ブロックとして消去済みテーブルを作成する。
【発明の効果】
【００２０】
本発明によれば、わずかな揮発性メモリの容量の増加のみで、不揮発性メモリの全領域から空きブロックの検索を行うことができ、複数のユニット分割された論物変換テーブルの特定のユニットに対する書込みが集中した場合にも十分な書込みの分散を行うことが出来、不揮発性メモリの書換え回数の増加や信頼性の向上が期待できる。
【発明を実施するための最良の形態】
【００２１】
以下に、本発明の実施の形態による不揮発性記憶装置およびその書込み・読出しに関する管理方法について説明する。
【００２２】
（実施の形態）
図１は、本発明の実施の形態による不揮発性記憶装置の構成と、ホストホストとの関係を示すブロック図である。不揮発性記憶装置の構成は、背景技術で説明したものと同じである。背景技術で説明したものと異なる箇所は、消去済みテーブル１０７の容量と、その作成方法や管理方法である。
【００２３】
図２は、図１のフラッシュメモリ１０３とアドレス管理テーブル１０５におけるデータの相関を示した図である。図２において、図１と同じ物については図１と同じ番号を付している。２０１ａはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した１番目の部分であるユニット１論物変換テーブル、２０１ｂはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した２番目の部分であるユニット２論物変換テーブル、２０１ｃはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した３番目の部分であるユニット３論物変換テーブル、２０１ｄはフラッシュメモリ１０３に格納された論物変換テーブルを４分割した４番目の部分であるユニット４論物変換テーブルであり、ユニット１論物変換テーブル２０１ａとユニット２論物変換テーブル２０１ｂとユニット３論物変換テーブル２０１ｃとユニット４論物変換テーブル２０１ｄとでフラッシュメモリ１０３を管理するための論物変換テーブルを構成している。
【００２４】
２０２は、フラッシュメモリ１０３のなかでホスト１０１の書込み・読み出しするデータを格納するデータ領域である。
【００２５】
本実施の形態において、論物変換テーブル１０６はフラッシュメモリ１０３の一部分のみをカバーできる容量、ここでは全体の４分の１をカバーできる容量である。しかし、消去済みテーブルはフラッシュメモリ１０３全体をカバーできる容量を備える。
【００２６】
従って、フラッシュメモリ１０３の消去単位が１６ＫＢの物理ブロックで構成される１Ｇｂｉｔ（１２８ＭＢ）の時、物理ブロックの数は８Ｋブロック（＝１２８ＭＢ÷１６ＫＢ）あり、論物変換テーブルに必要な容量は２Ｋワード（＝８Ｋワード÷４）、消去済みテーブルに必要な容量は８Ｋｂｉｔになる。１ワードに２バイトを適用した場合、両テーブル併せて５ＫＢ（＝２Ｋ×２Ｂ＋８Ｋｂｉｔ）がアドレス管理テーブル１０５に必要な容量である。
【００２７】
これは背景技術で説明した４．２５ＫＢに比べると、大きくはあるが、フラッシュメモリ１０３にアドレス管理テーブルを保持しない場合の１７ＫＢに比べると十分に小さい容量である。
【００２８】
図３は消去済みテーブル１０７を作成するためのフローチャートである。このフローは、マルチプロセッサユニット、ＲＯＭ、ＲＡＭ等からなるコントローラ１０４で実行される。消去済みテーブル１０７の作成は、不揮発性記憶装置１０２に電源が投入された後に行なわれる初期化処理において１回だけ実行される。
【００２９】
電源投入後、ステップ３０１でコントローラ１０４は消去済みテーブル１０７の初期化を行う。具体的には消去済みテーブル１０７の全データを、消去済みを意味するデータ”１”で埋める。
【００３０】
次にステップ３０２でコントローラ１０４はユニット０設定を行う。これはコントローラ１０４がこれからアクセスを行うユニットｎ論物変換テーブルの対象ユニットの初期設定である。
【００３１】
次にステップ３０３でコントローラ１０４は対象ユニットの論物変換テーブルの読出しと消去済みテーブルの作成を行う。フラッシュメモリ１０３のユニット０論物変換テーブル２０１ａから論物変換テーブルの部分を読み出す。この読み出しともに、消去済みテーブルの作成を行なう。論物変換テーブルで指定されている物理ブロックアドレスというのは、そこに有効なデータが書かれており、このデータによって消去済みでないということがわかるので、消去済みテーブル１０７の対応するビットを、書込み済みを表す”０”に書き換えることにより、読み出したユニットに対応する消去済みテーブルが作成される。
【００３２】
次にステップ３０４でコントローラ１０４は処理対象のユニットのインクリメントを行う。そしてステップ３０５でユニット判定を行い、処理対象のユニットが有効なユニットであるかどうかを判定する。ユニット３以下であれば有効なユニットであると判定しステップ３０３へと遷移し処理を継続し、ユニット４であれば無効なユニット（処理対象のユニットがない）ということで消去済みテーブル作成処理を終了する。
【００３３】
以上のように、最初に全て消去済みの状態に初期化した消去済みテーブル１０７に対して、フラッシュメモリ１０３に存在する全てのユニットｎ論物変換テーブルを読出して、対応する物理ブロックに対応する、消去済みテーブル１０７の情報を書込み済みにすることによって、フラッシュメモリ１０３の全領域に対応する消去済みテーブル１０７を作成することが出来る。
【００３４】
次に、図４はコントローラ１０４がフラッシュメモリ１０３のデータを読み出すときの処理を示すフローチャートである。
【００３５】
最初にステップ４０１で「テーブル判定」を行う。ここで「テーブル判定」とは、アドレス情報を格納する論物変換テーブル１０６に格納されている情報が、ホスト１０１の指定する論理アドレスに対応するユニットかどうかを判定することである。ホスト１０１の指定する論理アドレスに対応するユニットの情報が格納されている場合にはステップ４０３へ、異なる場合にはステップ４０２に遷移する。
【００３６】
ステップ４０２では「テーブル読出し」を行う。ここで「テーブル読出し」とはホスト１０１の指定する論理アドレスに対応するユニットの論物変換テーブルの部分をフラッシュメモリ１０３の２０１ａ〜ｄのユニットｎ論物変換テーブル（ｎは１〜４）のうちのひとつからアドレス管理テーブル１０５の論物変換テーブル１０６に読み出す。仮にホスト１０１の指定する論理アドレスがユニット２に含まれる場合にはユニット２論物変換テーブル２０１ｂを読み出して論物変換テーブル１０６へ書き込む。
【００３７】
ステップ４０３では「読出し実行」を行う。ここで「読出し実行」とは論物変換テーブル１０６を用いて、ホスト１０１の指定する論理アドレスから対応するフラッシュメモリ１０３の物理ブロックアドレスを得て、その物理ブロックからホスト１０１の指定した論理アドレスに対応するデータを読み出すことである。
【００３８】
以上のようにしてコントローラ１０４はフラッシュメモリ１０３からホスト１０１の指定する論理アドレスのデータを読み出す。
【００３９】
図５は、コントローラ１０４がフラッシュメモリ１０３にデータを書込むときの処理を示すフローチャートである。
【００４０】
最初にステップ５０１で「テーブル判定」を行う。ここでの「テーブル判定」はステップ４０１の「テーブル判定」と同じである。ホスト１０１の指定する論理アドレスに対応するユニットの情報が格納されている場合にはステップ５０３へ、異なる場合にはステップ５０２に遷移する。
【００４１】
ステップ５０２では「テーブル読出し」を行う。ここでの「テーブル読出し」はステップ４０２の「テーブル読出し」と同じである。ここまでの処理で、指定される論理アドレスに対応する論物変換テーブル１０６が準備される。
【００４２】
ステップ５０３では「空きブロック検索」を行う。本実施の形態において消去済みテーブル１０７はフラッシュメモリ１０３の全領域をカバーしているので、フラッシュメモリ１０３の全領域から空きブロックを検索することが可能である。
【００４３】
ステップ５０４では「書込み実行」を行う。ここで「書込み実行」とはステップ５０３で検索した物理ブロックにホスト１０１の指定する論理アドレスのデータを書込む。そして論物変換テーブル１０６のホスト１０１の指定する論理アドレスに対応する情報によって示されるフラッシュメモリ１０３の物理ブロックアドレス、すなわちホストが書き込みを行う論理アドレスに対応する旧データが格納されている物理ブロックを消去する。
【００４４】
ステップ５０５では「テーブル更新」を行う。ここで「テーブル更新」とはステップ５０４での「書込み実行」に伴って必要となるテーブルの更新を行う。消去済みテーブル１０７のステップ５０４で書込みを行った物理ブロックに対応する位置の情報を「消去済み」から「書込み済み」にし、ステップ５０４で消去を行った物理ブロックに対応する位置の情報を「書込み済み」から「消去済み」にする。そして、論物変換テーブル１０６のホスト１０１の指定する論理アドレスに対応する情報を、ステップ５０４で書込みを行ったフラッシュメモリ１０３の物理ブロックアドレスにする。
【００４５】
最後にステップ５０６では「テーブル書込み」を行う。ここで「テーブル書込み」とはステップ５０５で更新した論物変換テーブル１０６の情報を不揮発性メモリであるフラッシュメモリ１０３に書込むことである。仮にユニット２の情報が論物変換テーブル１０６に格納されている場合には、論物変換テーブル１０６の情報をユニット２論物変換テーブル２０１ｂに書込む。
【００４６】
以上のようにしてコントローラ１０４は、フラッシュメモリ１０３にホスト１０１の指定する論理アドレスのデータを書込む。
【産業上の利用可能性】
【００４７】
本発明にかかる不揮発性記憶装置は、物理ブロック数の多くなるより大容量のフラッシュメモリにおいて、少ないテーブル容量であってもフラッシュメモリ全領域からウェアレベリングを行うことができ、信頼性を向上させることができる。本発明は、静止画記録再生装置や動画記録再生装置等のポータブルＡＶ機器、あるいは携帯電話等のポータブル通信機器の記録媒体に適用することができる。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施の形態による不揮発性記憶装置の構成を示すブロック図
【図２】同不揮発性記憶装置における不揮発性メモリと揮発性メモリのデータの対応を示した模式図
【図３】同不揮発性記憶装置の消去済みテーブル作成方法を示したフローチャート
【図４】同不揮発性記憶装置のデータの読出し方法を示したフローチャート
【図５】同不揮発性記憶装置のデータの書込み方法を示したフローチャート
【図６】従来の不揮発性記憶装置における不揮発性メモリと揮発性メモリのデータの対応を示した模式図
【符号の説明】
【００４９】
１０１    ホスト
１０２    不揮発性記憶装置
１０３    フラッシュメモリ
１０４    コントローラ
１０５    アドレス管理テーブル
１０６    論物変換テーブル
１０７    消去済みテーブル
【図１】
2007280329.tif 000003
【図２】
2007280329.tif 000004
【図３】
2007280329.tif 000005
【図４】
2007280329.tif 000006
【図５】
2007280329.tif 000007
【図６】
2007280329.tif 000008