(57)【要約】      （修正有）【課題】不揮発性メモリの空間を均等に使用することができる装置及び方法を提供する。【解決手段】不揮発性メモリの空間を均等に使用することができ、不揮発性メモリにデータを保存するとき、特性が類似するデータを互いに隣接したフリーブロックに保存し得る装置及び方法に関する。  不揮発性メモリを管理する装置は、不揮発性メモリにおいて互いに隣接した位置のフリーブロックが事前指定された基準によりグループ化されるグループの代表情報を含むエントリを前記代表情報が組合されるキー値によって整列し、フリーブロックリストを生成する生成部、記録するデータの特性によりパラメータを決定するパラメータ決定部、及び前記フリーブロックリストを参照し、前記パラメータを満足させるフリーブロックを前記データが記録された領域に割当てるブロック割当部を含む。【選択図】図１
2008112445.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリで互いに隣接した位置のフリーブロックが事前指定された基準にしたがってグループ化されるグループの代表情報を含むエントリを前記代表情報が組合されたキー値にしたがい整列しフリーブロックリストを生成する生成部と、
記録するデータの特性にしたがいパラメータを決定するパラメータ決定部と、
前記フリーブロックリストを参照し、前記パラメータを満足させるフリーブロックを前記データが記録される領域として割当てるブロック割当部を含む不揮発性メモリを管理する装置。
【請求項２】
前記代表情報は、
前記グループに含まれるフリーブロックの総個数、
前記グループに含まれるフリーブロックの代表削除回数及び
前記グループにおいて最前の位置に存在するフリーブロックの番号のうち、少なくとも一つを含む請求項１に記載の不揮発性メモリを管理する装置。
【請求項３】
前記キー値は、
前記代表削除回数及び前記フリーブロック番号の組合せで構成される請求項２に記載の不揮発性メモリを管理する装置。
【請求項４】
前記生成部は
前記互いに隣接した位置のフリーブロックのうちで前記代表削除回数が同一なフリーブロックをグループ化する請求項２に記載の不揮発性メモリを管理する装置。
【請求項５】
前記ブロック割当部は
前記データが頻繁に更新されるデータである場合、前記フリーブロックリストで前記代表削除回数が小さいフリーブロックを前記データが記録される領域として割当て、
前記データが頻繁に更新されるデータでない場合、前記フリーブロックリストで前記代表削除回数が大きいフリーブロックを前記データが記録される領域として割当てる請求項２に記載の不揮発性メモリを管理する装置。
【請求項６】
前記パラメータは、
前記フリーブロックリストで既に割当てられたフリーブロックを除外した残りに対する情報を含むエントリを指示する第１パラメータ（ＣｕｒｒｅｎｔＰｔｒ＿Ｌ，  ＣｕｒｒｅｎｔＰｔｒ＿Ｒ）と、
前記残りのうち最前の位置に存在する第１フリーブロックの位置情報を含む第２パラメータ（ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌ，  ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ）を含む請求項１に記載の不揮発性メモリを管理する装置。
【請求項７】
事前記録されたデータが削除された臨時フリーブロックの情報を含むエントリを前記キー値にしたがい整列する臨時フリーブロック管理部をさらに含む請求項１に記載の不揮発性メモリを管理する装置。
【請求項８】
前記臨時フリーブロックの情報は、
ユーザの命令が入力された場合、前記フリーブロックにより確保されたフリーブロックの個数が不足する場合、前記臨時フリーブロック情報が保存された領域の大きさが事前指定された大きさを超過する場合のうち、いずれか一つの場合において、前記フリーブロックリストにアップデートされる請求項７に記載の不揮発性メモリを管理する装置。
【請求項９】
前記臨時フリーブロックの情報は、
前記不揮発性メモリのログ領域または揮発性メモリに保存される請求項７に記載の不揮発性メモリを管理する装置。
【請求項１０】
前記ブロック割当部は、
前記パラメータが指示する現在エントリに含まれるフリーブロックの個数が前記データの記録のため要請されたフリーブロックの個数より小さい場合、前記現在エントリに含まれるすべてのフリーブロックを前記データが記録される領域として割当て、前記パラメータを更新する過程を前記要請されたフリーブロックの個数が充足されるまで繰り返す請求項１に記載の不揮発性メモリを管理する装置。
【請求項１１】
不揮発性メモリで互いに隣接した位置のフリーブロックが事前指定された基準にしたがってグループ化されるグループの代表情報を含むエントリを前記代表情報が組合されたキー値にしたがい整列し、フリーブロックリストを生成する段階と、
記録するデータの特性にしたがいパラメータを決定する段階と、
前記フリーブロックロストを参照し、前記パラメータを満足させるフリーブロックを前記データが記録される領域として割当てる段階とを含む不揮発性メモリを管理する方法。
【請求項１２】
前記代表情報は、前記グループに含まれるフリーブロックの総個数、前記グループに含まれるフリーブロックの代表削除回数および前記グループで最前の位置に存在するフリーブロックの番号のうち少なくとも一つ含む請求項１１に記載の不揮発性メモリを管理する方法。
【請求項１３】
前記キー値は、
前記代表削除回数及び前記フリーブロックの番号の組合せで構成される請求項１２に記載の不揮発性メモリを管理する方法。
【請求項１４】
前記生成する段階は、
前記互いに隣接した位置のフリーブロックのうちで前記代表削除回数が同一なフリーブロックをグループ化する段階を含む請求項１２に記載の不揮発性メモリを管理する方法。
【請求項１５】
前記割当てる段階は、
前記データが頻繁に更新されるデータである場合、前記フリーブロックリストで前記代表削除回数が小さいフリーブロックを前記データが記録される領域に割当て、
前記データが頻繁に更新されるデータでない場合、前記フリーブロックリストで前記代表削除回数が大きいフリーブロックを前記記録される領域として割当てる段階を含む請求項１２に記載の不揮発性メモリを管理する方法。
【請求項１６】
前記パラメータは、
前記フリーブロックリストで既に割当てられたフリーブロックを除外した残りに対する情報を含むエントリを指示する第１パラメータ（ＣｕｒｒｅｎｔＰｔｒ＿Ｌ，  ＣｕｒｒｅｎｔＰｔｒ＿Ｒ）と、
前記残りのうち最前の位置に存在する第１フリーブロックの位置情報を含む第２パラメータ（ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌ，  ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ）を含む請求項１１に記載の不揮発性メモリを管理する方法。
【請求項１７】
事前記録されたデータが削除された臨時フリーブロックの情報を含むエントリを前記キー値にしたがい整列する段階をさらに含む請求項１１に記載の不揮発性メモリを管理する方法。
【請求項１８】
前記キー値にしたがい整列する段階は、
ユーザの命令が入力された場合、前記フリーブロックリストにより確保されたフリーブロックの個数が不足した場合、前記臨時フリーブロック情報が保存される領域の大きさが事前指定された大きさを超過する場合のうち、いずれか一つの場合において、前記臨時フリーブロック情報を前記フリーブロックリストにアップデートする請求項１７に記載の不揮発性メモリを管理する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリに関するもので、より詳細には不揮発性メモリを効率的に使用することができる装置及び方法に関する。
【背景技術】
【０００２】
一般的に、家電機器、通信機器、セットトップボックス、モバイル機器などの内蔵型システム（Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍ）にはデータを保存し処理するための保存媒体として不揮発性メモリが多く使用されている。
【０００３】
不揮発性メモリのうちで主に使用されるフラッシュメモリは電気的にデータを削除したり、改めて記録し得る不揮発性記憶素子であって、磁気ディスクメモリを基盤とする保存媒体に比べて電力消耗が少なく、かつハードディスクに比べ初期アクセスタイムが速く、大きさが小さいため携帯機器等に適合する。このような不揮発性メモリは大きく、シングルレベルセル（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ、以下ＳＬＣ）不揮発性メモリと、マルチレベルセル（Ｍｅｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ、以下ＭＬＣ）不揮発性メモリに分類することができる。
【０００４】
一般的な不揮発性メモリは多数のページを含む多数のブロックで成されており、各ブロックの大きさは１６ＫＢ、６４ＫＢ、１２８ＫＢ、２５６ＫＢなどで、ブロックに含まれるページの数とページの大きさによって決定される。ここで前記ページは不揮発性メモリにおいて書き込み単位であり、前記ブロックは不揮発性メモリにおいて削除単位である。
【０００５】
不揮発性メモリにデータが記録される過程を察し見れば次の通りである。まず、不揮発性メモリに電源が印加されると、不揮発性メモリの全体ブロックをスキャンする作業が行われ、次にデータが保存されていないブロック、すなわち、フリーブロック（Ｆｒｅｅ  Ｂｌｏｃｋ）に対する情報が構築される。フリーブロックに対する情報が構築されると、フリーブロックは削除回数（Ｅｒａｓｅ  Ｃｏｕｎｔ）が低い順に整列され、追ってフリーブロックに対する割当要請がある場合、整列されたフリーブロックはデータ保存のため順番に割当てられる。
【０００６】
このような不揮発性メモリの特性上データビットがすでに書かれたページに新しいデータビットを改めて書くためには該当ページが含まれたブロック全体を消す作業が先に行われなければならない。
【０００７】
ところで、ブロックの削除回数が一定水準を超えると、ビット（Ｂｉｔ）が特定値に固定された不良ブロック（Ｂａｄ  Ｂｌｏｃｋ）が生成するが、前記不良ブロックは不揮発性メモリの寿命を短縮する最も大きな原因となる。不良ブロックが発生することを防止するためには不揮発性メモリのブロックを均等に使用する必要がある。
【０００８】
しかし、従来技術によれば、特定データを保存するためにフリーブロックを割当てるとき、データの特性を考慮せず、単純にフリーブロックの削除回数にしたがってのみフリーブロックを割当てていたため、不揮発性メモリのブロックを均等に使用するのが難しいという問題があった。例えば頻繁に更新しないデータを保存するために削除回数が低いブロックが使用され、頻繁に更新されるデータを保存するために削除回数が高いブロックが使用される場合が発生し得た。前記のような非効率的なブロックの使用は不良ブロックの発生を促進する結果を招く。
【０００９】
また、従来技術はデータ保存のためフリーブロックを割当てるとき、フリーブロック間の空間的地域性を考慮せず、単純にフリーブロックの削除回数にしたがってのみフリーブロックを割当てるため、データを互いに隣接したフリーブロックに保存するのが容易ではないという問題があった。
【特許文献１】韓国公開特許第２０００−０３９７２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は不揮発性メモリの空間を均等に使用することができる装置及び方法を提供するものである。
【００１１】
本発明による他の目的は不揮発性メモリにデータを保存するとき、特性が類似するデータを互いに隣接したフリーブロックに保存することができる装置及び方法を提供するものである。
【００１２】
しかし、本発明の目的は以上で言及した目的に制限されず、言及されていないまた他の目的は下記の記載から当業者に明確に理解できるものである。
【課題を解決するための手段】
【００１３】
前記目的を達成するため、本発明の実施形態による不揮発性メモリを管理する装置は、不揮発性メモリで互いに隣接した位置のフリーブロックが事前指定された基準にしたがいグループ化されるグループの代表情報を含むエントリを前記代表情報が組合されたキー値にしたがい整列し、フリーブロックリストを生成する生成部、記録したデータの特性にしたがいパラメータを決定するパラメータ決定部、及び前記フリーブロックリストを参照し、前記パラメータを満足させるフリーブロックを前記データが記録される領域に割当てるブロック割当部を含む。
【００１４】
前記目的を達成するため、本発明の実施形態による不揮発性メモリを管理する方法は、不揮発性メモリで互い隣接した位置のフリーブロックが事前指定された基準にしたがってグループ化されたグループの代表情報を含むエントリを前記代表情報が組合されたキー値にしたがい整列し、フリーブロックリストを生成する段階、記録するデータの特性にしたがいパラメータを決定する段階、及び上記フリーブロックリストを参照し前記パラメータを満足させるフリーブロックを前記データが記録された領域に割当てる段階を含む。
【００１５】
その他実施形態の具体的な事項は詳細な説明及び図面に含まれている。本発明の利点及び特徴、そしてそれらを達成する方法は添付された図面と共に詳細に後述されている実施形態を参照すれば明確になるものである。
しかし、本発明は以下で開示される実施形態に限定されるものではなく、互いに他の多様な形態で具現することができ、単に本実施形態は本発明の開示が完全になるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範囲を完全に知らせるために提供されたものであり、本発明は請求項の範囲によってのみ定義される。明細書全体にかけて同一参照符号は同一構成要素を指し示す。
【００１６】
以下、本発明の実施形態による不揮発性メモリを管理する装置及び方法を説明するためのブロック図又はフローチャートに対する図面を参考し、本発明に対して説明する。このときフローチャートの各ブロックとフローチャートの組合せはコンピュータプログラムインストラクションにより実行され得ることを理解し得るものである。
【００１７】
これらコンピュータプログラムインストラクションは汎用コンピュータ、特殊用コンピュータ又はその他プログラム可能なデータプロセッシング装備のプロセッサに搭載され得るものであるため、コンピュータ又はその他プログラム可能なデータプロセッシング装備のプロセッサによって実行されるそのインストラクションがフローチャートブロックで説明される機能を実行する手段を生成するようになる。
【００１８】
これらコンピュータプログラムインストラクションを特定方式で機能を具現するためコンピュータ又はその他プログラム可能なデータプロセッシング装備を備えることができるコンピュータによって利用可能又は読取可能なメモリに保存されることも可能であるため、そのコンピュータによって利用可能又は読取可能なメモリに保存されるインストラクションはフローチャートブロックで説明される機能を実行するインストラクション手段を含む製造品目を生産することも可能である。
【００１９】
コンピュータプログラムインストラクションはコンピュータ又はその他プログラム可能なデータプロセッシング装備上に搭載されることも可能であるため、コンピュータ又はその他プログラム可能なデータプロセッシング装備上で入力の動作段階が実行されるコンピュータで実行されるプロセッシングを生成してコンピュータ又はその他プログラム可能なデータプロセシング装備を実行するインストラクションはフローチャートブロックで説明された機能を実行するための段階を提供することも可能である。
【００２０】
また、各ブロックは特定された論理的機能を実行するために一つ以上の実行可能なインストラクションを含むモジュール、セグメント又はコードの一部を示し得る。またいくつかの代替実行形態ではブロックで言及された機能が順序から外れて発生することも可能であることに注目しなければならない。例えば相次いで図示されている二つのブロックは事実実質的に同時に実行されることも可能であり、またそのブロックがあるときには該当する機能により逆順に実行されることも可能である。
【００２１】
まず、図１ないし図１０を参照し、本発明の実施形態による不揮発性メモリを管理する装置に対して説明することにする。
【００２２】
図１は本発明の実施形態による不揮発性メモリを管理する装置１００を図示した図である。図示されたように不揮発性メモリを管理する装置は不揮発性メモリ２００、生成部１１０、パラメータ決定部１２０、ブロック割当部１３０及び臨時フリーブロック管理部１４０を含む。
【００２３】
本発明の実施形態による不揮発性メモリはＳＬＣ不揮発性メモリ及びＭＬＣ不揮発性メモリを含み得る。以下の説明ではＳＬＣ不揮発性メモリを例として説明するものとする。
【００２４】
図２は本発明の実施形態によるＳＬＣ不揮発性メモリを図示した図である。図示されたようにＳＬＣ不揮発性メモリ２００は、多数のページ２１０・２２０を含む多数のブロック２０１で成っている。前記ページ２１０・２２０はデータの読み取り／書き込み単位として理解することができ、ブロック２０１はデータの削除単位として理解することができる。
【００２５】
前述した不揮発性メモリ２００は図面に図示されていないが、全体的にみて、ログ情報が記録されるログ領域とユーザが記録するデータが保存されるデータ領域を含み得る。
【００２６】
改めて図１を参照すれば、生成部１１０は不揮発性メモリ２００に既に記録されているフリーブロック情報を読み取ったり、不揮発性メモリ２００の全体ブロックをスキャンして、データが記録されていないブロックすなわち、フリーブロックに対する情報を収集する。前記フリーブロックに対する情報としてはフリーブロック番号（Ｆｒｅｅ  Ｂｌｏｃｋ  Ｎｕｍｂｅｒ）、フリーブロックの削除回数（Ｅｒａｓｅ  Ｃｏｕｎｔ、以下「ＥＣＮＴ」という）及び前記フリーブロックの代表削除回数（Ｍｏｄｉｆｉｅｄ  Ｅｒａｓｅ  Ｃｏｕｎｔ、以下「ＭＥＣＮＴ」という）等を例に挙げることができる。
【００２７】
前記フリーブロック番号は不揮発性メモリ２００の全体ブロックのうちで該当フリーブロックが占める物理的位置を示す。例えば、フリーブロック番号が２の場合、前記フリーブロックは不揮発性メモリ２００の全体ブロックのうちで物理的位置が２番目であることを意味する。前記フリーブロックの削除回数は、該当フリーブロックで削除演算が行われた回数を意味する。そして前記フリーブロックの代表削除回数は、フリーブロックの削除回数を代表する指標であって、例えばフリーブロックの削除回数を１０で割ったときの商と定義することができる。
【００２８】
全体ブロックスキャンによってフリーブロックに対する情報が収集されると、生成部１１０は収集された情報をフリーブロックの番号にしたがい整列した後、物理的な位置が互いに隣接するフリーブロックを事前指定された基準にしたがいグループ化しグループを生成する。例えば、生成部１１０は物理的な位置が互いに隣接したフリーブロック中で同一なＭＥＣＮＴを有するフリーブロックを一つのグループとしてグループ化し得る。グループ化方法に関するより具体的な説明のため図３を参照することにする。
【００２９】
図３は不揮発性メモリ２００の各フリーブロックに対する情報がフリーブロック番号にしたがって小さいものから順に整列されている状態を示している。
【００３０】
不揮発性メモリ２００の各フリーブロックに対する情報を整列した結果が図３のような場合、生成部１１０はフリーブロック番号が０、１、２、であるフリーブロック（以下、「フリーブロック０」、「フリーブロック１」、及び「フリーブロック２」という）を第１グループとしてグループ化し得る。なぜならば、フリーブロック０、フリーブロック１及びフリーブロック２は物理的な位置が互いに隣接し、これらのＭＥＣＮＴはすべて「１」で同一であるためである。
【００３１】
一方、フリーブロックの番号が３であるフリーブロック（以下、「フリーブロック３」）と隣接したフリーブロック中にはフリーブロック３のＭＥＣＮＴと同一なＭＥＣＮＴを有するフリーブロックが存在しない。したがって、生成部１１０は、フリーブロック３だけを第２グループとしてグループ化する。
【００３２】
これに比べ、フリーブロックの番号が４、５、６、７であるフリーブロック（以下、「フリーブロック４」、「フリーブロック５」、「フリーブロック６」及び「フリーブロック７」という）は第３グループとしてグループ化され得る。なぜならば、フリーブロック４、フリーブロック５、フリーブロック６およびフリーブロック７は物理的な位置が互いに隣接し、これらのＭＥＣＮＴはすべて「１」で同一であるためである。
【００３３】
グループ化が完了すれば、生成部１１０は、各グループの代表情報を含むエントリをグループ別に生成する。所定グループの代表情報は、前記グループに含まれるフリーブロックのＭＥＣＮＴ、前記グループで一番最初に位置したフリーブロックの番号（Ｓｔａｒｔｉｎｇ  Ｂｌｏｃｋ  Ｎｕｍｂｅｒ、以下「Ｓｂｌｏｃｋ」という）、前記グループに含まれるフリーブロックの総個数（Ｒａｎｇｅ）を含む。各グループに対するエントリは例示した代表情報を含み得る。
【００３４】
図４は本発明の実施形態によるエントリの構成を示している。図４に図示されたように、本発明の実施形態によるエントリは第１領域４１０、第２領域４２０及び第３領域４３０を含み得る。
【００３５】
第１領域４１０はエントリの全体大きさのうち最上位ビットからｎバイト（ｂｙｔｅｓ）で定義され得る。前記第１領域４１０には該当グループに含まれるフリーブロックのＭＥＣＮＴが記録され得る。例えば、図３の第１グループの場合、第１グループに含まれるフリーブロックのＭＥＣＮＴは「１」である。そのため第１グループに対するエントリの第１領域４１０には１が記録され得る。
【００３６】
第２領域４２０は第１領域４１０以後のｍバイトで定義され得る。上記第２領域４２０には当該グループに含まれるフリーブロックのうちで一番最初に位置するフリーブロックの番号が記録され得る。例えば、図３の第１グループに含まれるフリーブロックのうちで一番最初に位置したフリーブロックの番号は０である。したがって、第１グループに対するエントリの第２領域４２０には０が記録され得る。
【００３７】
第３領域４３０は該当グループが含むフリーブロックの総個数が記録される。例えば図３で第１グループは全部で３個のフリーブロックを含む。そのため第１グループに対するエントリの第３領域４３０には「３」が記録され得る。
【００３８】
改めて図１を参照すれば、生成部１１０は前述した構造のエントリを各グループ別に生成した次に、各グループの代表情報が組合されたキー値を基準に各エントリを整列しフリーブロックリストを生成する。ここで前記キー値は、該当グループに含まれるフリーブロックのＭＥＣＮＴと、前記グループで一番最初に位置するフリーブロックの番号の組合せで成し得る。例えば、ｎ＝２、ｍ＝２であるとき、図３で第１グループは、キー値として「６５５３６（０ｘ１００００）」を有し得る。なぜならば、前記第１グループに含まれるフリーブロックのＭＥＣＮＴは１であり、前記第１グループで一番最初に位置するフリーブロックの番号は０であるためである。
【００３９】
また、図３で第２グループは、キー値として「１３１０７５（０ｘ２０００３）」を有しえる。なぜならば前記第２グループに含まれるフリーブロックのＭＥＣＮＴは２であり、前記第２グループで一番最初に位置するフリーブロックの番号は３であるためである。これと同様に図３で第３グループはキー値として「６５５４０（０ｘ１０００４）」を有し得る。なぜならば、前記第３グループに含まれるフリーブロックのＭＥＣＮＴは１であり、前記第３グループの一番最初に位置するフリーブロックの番号は４であるためである。
【００４０】
第１グループ、第２グループ、第３グループのキー値が前記のような場合、各グループに対するエントリを、キー値を基準として小さいものから順に整列するようになれば、図５のようなフリーブロックリストを得ることができる。
【００４１】
図５を参照すれば、第１グループに対するエントリ、第３グループに対するエントリ及び第２グループに対するエントリ順に整列されていることを確認することができる。また、小さいＭＥＣＮＴを有するブロックに対する情報を含むエントリであるほどフリーブロックリスト上で左側に位置し、高いＭＥＣＮＴを有するブロックに対する情報を含むエントリであるほどフリーブロックリスト上で右側に位置することを知ることができる。
【００４２】
また、図５に図示されたフリーブロックリストと図６に図示されたフリーブロックリストを比較したとき、図５に図示されたフリーブロックリストが含まれるエントリの総個数は図６に図示されたフリーブロックリストが含まれるエントリの総個数に比べ、大幅に減少されていることを知ることができる。ここで、図６は各フリーブロックのＥＣＮＴをキー値として構成されたフリーブロックリストを例示したものである。
【００４３】
図５に図示されたようなフリーブロックリストはラム（ＲＡＭ）のように、不揮発性メモリ２００と別途に存在する保存媒体に保存され得、不揮発性メモリ２００のログ領域に保存され得もする。
【００４４】
改めて図１を参照すれば、パラメータ決定部は記録したデータの特性にしたがい、パラメータを決定する。本発明の実施形態で、データの特性は削除の可能性を含み得る。具体的に前記データは一回書かれた以降にも頻繁に更新されるデータとそうでないデータに区分され得る。例えば、ログ情報は頻繁に更新されるデータに該当し、音楽ファイルは頻繁に更新されないデータに該当するとみなすことができる。以下の説明では頻繁に更新されるデータをホットデータ（Ｈｏｔ  Ｄａｔａ）、頻繁に更新されないデータをコールドデータ（Ｃｏｌｄ  Ｄａｔａ）と称する。
【００４５】
また、前記パラメータはＣｕｒｒｅｎｔＰｔｒ＿Ｌ、ＣｕｒｒｅｎｔＰｔｒ＿Ｒ、ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌ、ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ等を含む。前記ＣｕｒｒｅｎｔＰｔｒ＿Ｌ及びＣｕｒｒｅｎｔＰｔｒ＿Ｒはフリーブロックリストで、今後データが記録される領域として割当られ得るフリーブロックに対する情報を含むエントリを指示する。初期のＣｕｒｒｅｎｔＰｔｒ＿Ｌは、フリーブロックリストで最小のキー値を有するエントリを指示し得、初期のＣｕｒｒｅｎｔＰｔｒ＿Ｒは、フリーブロックリストで最大のキー値を有するエントリを指示し得る。
【００４６】
特定エントリが含まれるすべてのフリーブロックが、データが記録される領域に割当てられれば、ＣｕｒｒｅｎｔＰｔｒ＿Ｌの値（又はＣｕｒｒｅｎｔＰｔｒ＿Ｒの値）は前記特定エントリのすぐ横に位置したエントリを指示するようになる。前記ＣｕｒｒｅｎｔＰｔｒ＿Ｌはホットデータが記録されるフリーブロックを検索するために使用されるのに比べＣｕｒｒｅｎｔＰｔｒ＿Ｒはコールドデータが記録されるフリーブロックを検索するために使用される。
【００４７】
そして前記ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌ（又はＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ）は前記ＣｕｒｒｅｎｔＰｔｒ＿Ｌ（又はＣｕｒｒｅｎｔＰｔｒ＿Ｒ）が指示するエントリが含まれるフリーブロックのうちで既に割当てられたフリーブロックを除外した残りのフリーブロックに対する情報を含む。例えば該当エントリで今後データが記録される領域として割当てられ得るブロックの番号や追って割当てられ得るブロックの総個数等を示し得る。
【００４８】
ブロック割当部１３０はフリーブロックリストを参照しパラメータを満足させるフリーブロックをデータが記録された領域として割当てる。フリーブロック割当方法に対するより具体的な説明のため図７Ａないし図９Ａを参照することにする。
【００４９】
図７Ａは本発明の実施形態によるフリーブロックリストとパラメータを例示したもので、図７Ｂは図７Ａに図示されたパラメータの初期値を示したものである。
【００５０】
フリーブロックリストが図７Ａと同じで、パラメータの初期値が図７Ｂと同じ時、コールドデータが記録される５個のフリーブロックを割当てる方法を説明すれば次のとおりである。
【００５１】
記録しようとするデータがコールドデータであるため、ブロック割当部１３０は前記コールドデータが記録された領域であって、ＥＣＮＴが低いフリーブロックよりＥＣＮＴが高いフリーブロックが割当てられ得るようにする。このためブロック割当部１３０はまず、ＣｕｒｒｅｎｔＰｔｒ＿Ｒが指示するエントリを参照する。図７Ｂを参照すればＣｕｒｒｅｎｔＰｔｒ＿Ｒはエントリ７を参照する。
【００５２】
その次に、ブロック割当部１３０はＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒが示す情報を参照し、現在エントリが含まれるフリーブロックの個数と前記コールドデータが記録される領域に割当てられるフリーブロック（以下、「要請されたフリーブロック」という）の個数を比較する。
【００５３】
比較の結果、現在エントリが含まれるフリーブロックの個数が要請されたフリーブロックの個数以上である場合、ブロック割当部１３０はＣｕｒｒｅｎｔＰｔｒ＿Ｒをそのまま維持し、現在エントリが含むフリーブロックのうちで要請された個数分のフリーブロックを割当てる。
【００５４】
具体的に図７ＢでＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒは（７、９５０、１０）であるため、エントリ８はフリーブロック９５０からフリーブロック９５９まで総１０個のフリーブロックを含むことを知ることができる。ところで、要請されたフリーブロックの個数が５個であるため、ブロック割当部１３０はＣｕｒｒｅｎｔＰｔｒ＿Ｒの値をそのまま維持し、エントリ７が含む１０個のフリーブロックのうちでフリーブロックの番号が９５０ないし９５４に該当する５個のフリーブロックをコールドデータが記録される領域として割当てる。
【００５５】
フリーブロック割当てが完了すれば、ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒの値は図８Ｂのように更新される。ブロック割当てにより図８Ｂのように更新されたパラメータは一種のログ情報として分類され、不揮発性メモリ２００のログ領域に記録され得る。また、不揮発性メモリ２００と別途に存在する保存媒体例えば、ＲＡＭに保存され得る。
【００５６】
フリーブロックリストが図８Ａと同じで、パラメータが図８Ｂと同じとき、ホットデータが記録される領域として２３個のフリーブロックを割当てる方法を説明すれば次のとおりである。
【００５７】
記録しようとするデータがホットデータであるため、ブロック割当部１３０は前記ホットデータが記録される領域であってＥＣＮＴが高いフリーブロックよりはＥＣＮＴが低いフリーブロックが割当てられ得るようにする。このためにブロック割当部１３０はまずＣｕｒｒｅｎｔＰｔｒ＿Ｌが指示するエントリを参照する。図８Ｂを参照すれば、ＣｕｒｒｅｎｔＰｔｒ＿Ｌはエントリ１を参照する。
【００５８】
その次にブロック割当部１３０は、ＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌが示す情報を参照し、エントリ１が含まれるフリーブロックの個数と前記ホットデータが記録される領域として割当てられるフリーブロック（以下、「要請されたフリーブロック」という）の個数を比較する。
【００５９】
比較の結果、エントリ１が含まれるフリーブロックの個数が要請されたフリーブロックの個数より少ない場合、ブロック割当部１３０は要請されたフリーブロックの個数が充足されるまでＣｕｒｒｅｎｔＰｔｒ＿Ｌを増加させる。
【００６０】
具体的に図８ＢでＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌの値は（１、１００、１５）であるため、エントリ１はフリーブロック１００からフリーブロック１１４まで総１５個のフリーブロックを、含むことを知ることができる。ところで要請されたフリーブロックの個数が２３個であるため、ブロック割当部１３０は２３個のフリーブロックが充足されるまでＣｕｒｒｅｎｔＰｔｒ＿Ｌを増加させる。その結果ＣｕｒｒｅｎｔＰｔｒ＿Ｌは３となる。
【００６１】
この後、ブロック割当部１３０はエントリ１が含む１５個のフリーブロック（すなわち、フリーブロック１００〜１１４）、エントリ２が含む５個のフリーブロック（すなわち、フリーブロック１５０〜１５４）およびエントリ３が含む２０個のフリーブロックのうちで３個のフリーブロック（すなわち、フリーブロック１５〜１７）をホットデータが記録される領域として割当てる。このとき、各エントリが含むフリーブロックの割当状態を表示すれば図９Ａの通りである。
【００６２】
図９Ａに図示されたように、エントリ３が含む２０個のフリーブロックのうちで３個のフリーブロックだけがホットデータが記録される領域として割当てられたため、また、他のホットデータが記録される領域としてフリーブロックを割当てるときにはエントリ３の残りフリーブロックが優先的に割当てられる。
【００６３】
フリーブロック割当てが完了すればＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌは図９Ｂのように更新される。図９Ｂのように、ブロック割当てによる更新されたパラメータは一種のログ情報として分類され、不揮発性メモリ２００のログ領域に記録され得る。また、不揮発性メモリ２００と別途に存在する保存売買媒体、例えばＲＡＭに保存され得る。
【００６４】
改めて図１を参照すれば、臨時フリーブロック管理部１４０は臨時フリーブロックを管理する。ここで、臨時フリーブロックとは、事前に記録されたデータが削除されたフリーブロックを意味する。臨時フリーブロック管理部１４０は、臨時フリーブロックに対する情報を含むエントリを、キー値を基準として整列し、ＲＡＭまたは臨時フリーブロック内のバッファ１４１に保存する。
【００６５】
このような臨時フリーブロックに対する情報は次のような場合にはフリーブロックリストにアップデートされ得る。例えば、フリーブロックリストで確保されたフリーブロック数が不足した場合、バッファに保存された臨時フリーブロックの数が事前指定された閾値を超える場合、またはユーザの命令が入力された場合、臨時フリーブロックの情報はフリーブロックリストにアップデートされ得る。
【００６６】
以上の説明で不揮発性メモリを管理する装置を構成する構成要素は一種のモジュールとして具現され得る。ここで「モジュール」はソフトウェアまたはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）あるいは注文型半導体（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，  ＡＳＩＣ）のようなハードウェア構成要素を意味し、モジュールはある役割を行う。しかし、モジュールはソフトウェアまたはハードウェアに限定される意味ではない。
【００６７】
モジュールはアドレッシング可能な保存媒体にあるよう構成でき、１つまたはそれ以上のプロセッサを実行させるよう構成することもできる。したがって、一例としてモジュールはソフトウェア構成要素、オブジェクト指向のソフトウェア構成要素、クラス構成要素及びクラス構成要素のような構成要素、プロセス、関数、属性、プロシーザ、サブルーチン、プログラムコードのセグメント、ドライバ、フォームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ及び変数を含む。構成要素とモジュールから提供される機能はより少ない数の構成要素及びモジュールに結合したり追加的な構成要素とモジュールにさらに分離され得る。
【００６８】
次に図１ないし図１１を参照し本発明の実施形態による不揮発性メモリを管理する方法について説明する。ここで、図１１は本発明の実施形態による不揮発性メモリを管理する方法を図示したフローチャートである。
【００６９】
まず、生成部１１０は不揮発性メモリ２００の特定領域に記録されたフリーブロック情報を読み込んだり、不揮発性メモリ２００の全体ブロックをスキャンして、前記不揮発性メモリ２００のフリーブロックに対する情報を含むフリーブロックリストを生成する。具体的に生成部１１０は不揮発性メモリ２００で物理的に互いに隣接した位置のフリーブロックを事前指定された基準にしたがいグループ化し、グループを生成する。その次に、生成部１１０は各グループの代表情報を含むエントリを前記代表情報が組合されたキー値にしたがい整列し、フリーブロックリストを生成する。そしてキー値は前述した代表情報のうちでＭＥＣＮＴと開始フリーブロック番号の組合せであることを理解し得る。
【００７０】
次に、ユーザからデータ記録要請があった場合、ブロック割当部１３０はフリーブロックの総個数が充分であるのか判断する（Ｓ８１０）。
【００７１】
判断の結果、フリーブロックの個数が充分でない場合（Ｓ８１０、いいえ）、ブロック割当部１３０はデータが記録されるフリーブロックを割当てることが不可能なことをユーザに知らせる（Ｓ８２０）。例えばフリーブロックの総個数がデータ記録のために必要なフリーブロックの個数より少ない場合、ブロック割当部１３０は前記作業を行い得る。
【００７２】
判断の結果フリーブロックの個数が充分であれば（Ｓ８１０、はい）、ブロック割当部１３０はフリーブロックリストによって確保されたフリーブロックだけでもフリーブロック割当作業が可能なのか判断する（Ｓ８３０）。言いかえれば、フリーブロックリストによって確保されたフリーブロックの個数がデータ記録のために要請されたフリーブロックの個数より多いのかを判断する。
【００７３】
フリーブロックリストによって確保されたブロックの個数が要請されたフリーブロックの個数に比べ不足ならば（Ｓ８３０、いいえ）、ブロック割当部１３０は臨時フリーブロック管理部１４０のバッファに保存されている臨時フリーブロックに対する情報をフリーブロックリストにアップデートし（Ｓ８４０）、前記アップデートされたフリーブロックリストを参照し、フリーブロック割当作業を行い得る（Ｓ８５０）。
【００７４】
一方、フリーブロックリストによって確保されたフリーブロックの個数が要請されたフリーブロックの個数より多ければ、ブロック割当部１３０は既に生成されたフリーブロックリストを参照し、フリーブロック割当作業を行う（Ｓ８５０）。この段階に対するより詳細な説明は図１２を参照して説明するものとする。
【００７５】
図１２は図１１のＳ８５０の段階をより詳細に図示したフローチャートである。
【００７６】
まず、パラメータ決定部１２０は記録されたデータの特性にしたがい、前記データが記録されるフリーブロックのタイプを決定する（Ｓ９１０）。
【００７７】
例えば記録するデータがホットデータの場合、パラメータ決定部１２０は、ＭＥＣＮＴが高いフリーブロックよりはＭＥＣＮＴが低いフリーブロックにホットデータが記録され得るようにする。
【００７８】
この場合、ブロック割当部１３０は複数個のパラメータ中からＣｕｒｒｅｎｔＰｔｒ＿Ｌ及びＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌを参照する（Ｓ９２０）。もし、記録データがコールドデータの場合、パラメータ決定部１２０はＭＥＣＮＴが低いブロックよりはＭＥＣＮＴが高いフリーブロックに前記コールドデータが記録され得るようにする。この場合、ブロック割当部１３０は複数個のパラメータ中からＣｕｒｒｅｎｔＰｔｒ＿Ｌ及びＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｌを参照する（Ｓ９３０）。
【００７９】
フリーブロック割当てに必要なパラメータが決定されると、ブロック割当部１３０はフリーブロックリストからＣｕｒｒｅｎｔＰｔｒ（ＣｕｒｒｅｎｔＰｔｒ＿ＬまたはＣｕｒｒｅｎｔＰｔｒ＿Ｒ）が指示するエントリ（以下、現在エントリ）が含むフリーブロックの個数が要請されたフリーブロックの個数を充足するのかを判断する（Ｓ９４０）。
【００８０】
判断の結果、現在エントリが含むフリーブロックの個数が要請されたフリーブロックの個数を充足する場合（Ｓ９４０、はい）、ブロック割当部１３０は要請された個数分のフリーブロックをデータが記録される領域として割当てる（Ｓ９５０）。次にブロック割当部１３０はＣｕｒｒｅｎｔＥｎｔｒｙ（ＣｕｒｒｅｎｔＥｎｔｒｙ＿ＬまたはＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ）を更新する（Ｓ９６０）。
【００８１】
判断の結果、現在エントリが含むフリーブロックの個数が要請されたフリーブロックの個数を充足できない場合（Ｓ９４０、いいえ）、ブロック割当部１３０は現在エントリが含むすべてのフリーブロックをデータが記録される領域として割当てる（Ｓ９７０）。
【００８２】
この後、ブロック割当部１３０はＣｕｒｒｅｎｔＰｔｒ（ＣｕｒｒｅｎｔＰｔｒ＿ＬまたはＣｕｒｒｅｎｔＰｔｒ＿Ｒ）とＣｕｒｒｅｎｔＥｎｔｒｙ（ＣｕｒｒｅｎｔＥｎｔｒｙ＿ＬまたはＣｕｒｒｅｎｔＥｎｔｒｙ＿Ｒ）を更新する（Ｓ９８０）。
【００８３】
次に、ブロック割当部１３０は要請されたフリーブロックの個数が充足されるまでＳ９４０、Ｓ９７０及びＳ９８０の段階を繰り返す。
【００８４】
以上で添付された図面を参照し本発明の実施形態を説明したが、本発明が属する技術分野で通常の知識を有する者は本発明がその技術的思想や必須的な特徴を変更せず、他の具体的な形態で実施し得るということを理解し得るものである。そのため以上で記述した実施形態はすべての面で例示的なものであり、限定的でないことを理解しなければならない。
【発明の効果】
【００８５】
前記したような本発明による不揮発性メモリを管理する装置及び方法によれば次のような効果が一つあるいはそれ以上ある。
【００８６】
不揮発性メモリのフリーブロック間の削除回数が互いに異なっていても、物理的位置が互いに隣接したフリーブロックをグループ化し得るため、互いに隣接したフリーブロックに連続的なデータを保存することができ、フリーブロックリストのエントリ個数を縮めることができる。
【００８７】
不揮発性メモリにデータを保存するとき、保存しようとするデータを、特性にしたがって区別して保存するため、不揮発性メモリの全体ブロックを均等に使用することができ、このため不揮発性メモリの寿命が延長させることができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施形態による不揮発性メモリを管理する装置を図示した図である。
【図２】図１の不揮発性メモリをより詳細に図示した図である。
【図３】本発明の実施形態によるフリーブロックの情報を例示した図である。
【図４】本発明の実施形態によるエントリの構成を図示した図である。
【図５】本発明の実施形態によるフリーブロックリストを図示した図であって、図３に例示されたフリーブロックの情報のうち代表削除回数をキー値として構成されたフリーブロックリストを図示した図である。
【図６】図３に例示されたフリーブロックの情報のうち削除回数をキー値として構成されたフリーブロックリストを図示した図である。
【図７Ａ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図７Ｂ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図８Ａ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図８Ｂ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図９Ａ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図９Ｂ】本発明の実施形態によるブロック割当方法を説明するための図である。
【図１０】本発明の実施形態による臨時フリーブロックに対する情報を含むエントリがキー値を基準として整列されている姿を図示した図である。
【図１１】本発明の実施形態による不揮発性メモリ割当方法を図示したフローチャートである。
【図１２】図１１にＳ８５０段階をより詳細に図示したフローチャートである。
【符号の説明】
【００８９】
１００      不揮発性メモリを管理する装置
１１０      生成部
１２０      パラメータ決定部
１３０      ブロック割当部
１４０      臨時フリーブロック管理部
２００    不揮発性メモリ
【図１】
2008112445.tif 000003
【図２】
2008112445.tif 000004
【図３】
2008112445.tif 000005
【図４】
2008112445.tif 000006
【図５】
2008112445.tif 000007
【図６】
2008112445.tif 000008
【図７Ａ】
2008112445.tif 000009
【図７Ｂ】
2008112445.tif 000010
【図８Ａ】
2008112445.tif 000011
【図８Ｂ】
2008112445.tif 000012
【図９Ａ】
2008112445.tif 000013
【図９Ｂ】
2008112445.tif 000014
【図１０】
2008112445.tif 000015
【図１１】
2008112445.tif 000016
【図１２】
2008112445.tif 000017