(57)【要約】      （修正有）【課題】フラッシュメモリシステム全体の性能を向上できるフラッシュメモリアクセス装置及び方法を提供する。【解決手段】所定のブロックからなるユニット単位に領域分けされたフラッシュメモリと、フラッシュメモリの特定の論理ブロック番号に対して要求される書き込み演算で前記論理ブロックに対する前の書き込み演算がない場合、前記論理ブロックに対応する物理ブロックにデータやメタ情報を書き込み、前の書き込み演算がある場合、前記論理ブロックに対応する前の物理ブロックに書き込まれたフラッシュメモリの状態情報を変更せず、新しい物理ブロックに、前記論理ブロックに指定されたデータやメタ情報を書き込む書き込み演算を行うフラッシュメモリコントローラとを備える。【選択図】図５
2004303238.tif 000002
【特許請求の範囲】
【請求項１】
所定のブロックからなるユニット単位に領域分けされたフラッシュメモリと、
前記フラッシュメモリの特定の論理ブロック番号に対して要求される書き込み演算において、前記論理ブロックに対する前の書き込み演算がない場合、前記論理ブロックに対応する物理ブロックにデータやメタ情報を書き込み、前の書き込み演算がある場合、前記論理ブロックに対応する前の物理ブロックに書き込まれたフラッシュメモリの状態情報を変更せず、新しい物理ブロックに、前記論理ブロックに指定されたデータやメタ情報を書き込む書き込み演算を行うフラッシュメモリコントローラとを備えることを特徴とするフラッシュメモリアクセス装置。
【請求項２】
前記論理ブロックのデータを先に書き込んでから、前記メタ情報を書き込むことを特徴とする請求項１に記載のフラッシュメモリアクセス装置。
【請求項３】
前記論理ブロックのデータやメタ情報を同時に書き込むことを特徴とする請求項１に記載のフラッシュメモリアクセス装置。
【請求項４】
前記メタ情報は、前記論理ブロック番号と、前記物理ブロックに対する状態を有効、削除または無効に表示するフラッシュメモリの状態情報とを含むことを特徴とする請求項１に記載のフラッシュメモリアクセス装置。
【請求項５】
前記フラッシュメモリコントローラは、前記書き込み演算により存在することになる前記論理ブロック番号に対する一つ以上の物理ブロックをスキャニング過程で感知し、感知された物理ブロックのうち、前記論理ブロックに対する有効ブロックを判別し、エラーを修復する修復演算を行うことを特徴とする請求項１に記載のフラッシュメモリアクセス装置。
【請求項６】
前記スキャニング過程は、前記フラッシュメモリを最も最近にアクセスされた下位ブロックを基準に調べて、各物理ブロックの論理ブロック番号を読み出し、前記読み出された論理ブロック番号に対応するブロック割り当てテーブルの論理ブロック番号のフィールドを調べる過程からなることを特徴とする請求項５に記載のフラッシュメモリアクセス装置。
【請求項７】
前記ブロック割り当てテーブルの論理ブロック番号のフィールドを調べる過程は、前記論理ブロック番号のフィールドに記録された状態値が「０」であると、「１」に記録し、前記状態値が「１」であると、前記スキャニング過程で前の物理ブロックにより前記論理ブロック番号が検索されたものと感知することを特徴とする請求項６に記載のフラッシュメモリアクセス装置。
【請求項８】
前記有効ブロックを判別してエラーを修復することは、前記感知された物理ブロックのうち、スキャニング過程で設定される優先順位に基づいて前記論理ブロック番号に対して最も最近にアクセスされた物理ブロックを有効ブロックに決定し、その他の物理ブロックに書き込まれたフラッシュメモリの状態情報を削除に書き込む過程からなることを特徴とする請求項５に記載のフラッシュメモリアクセス装置。
【請求項９】
前記修復演算過程は、前記フラッシュメモリを初期化する過程で行われることを特徴とする請求項５に記載のフラッシュメモリアクセス装置。
【請求項１０】
前記修復演算過程は、前記フラッシュメモリの所定ユニットに書き込まれたデータを新しいユニットに移動するフラッシュメモリの再生過程で行われることを特徴とする請求項５に記載のフラッシュメモリアクセス装置。
【請求項１１】
プロセッサから特定の論理ブロック番号に対する書き込み演算が要求されると、フラッシュメモリにアクセスして、書き込み演算のために現在書き込み可能な物理ブロックを検索するステップと、
前記論理ブロック番号に対する前の書き込み演算がない場合、前記論理ブロックに対応する物理ブロックにデータやメタ情報を書き込み、前の書き込み演算がある場合、前記論理ブロックに対応する前の物理ブロックに書き込まれたフラッシュメモリの状態情報を変更せず、前記論理ブロックに対応する新しい物理ブロックにデータやメタ情報を書き込むステップとを含むことを特徴とするフラッシュメモリアクセス方法。
【請求項１２】
前記データを先に書き込んでから、前記メタ情報を書き込むことを特徴とする請求項１１に記載のフラッシュメモリアクセス方法。
【請求項１３】
前記データやメタ情報を同時に書き込むことを特徴とする請求項１１に記載のフラッシュメモリアクセス方法。
【請求項１４】
前記メタ情報は、前記論理ブロック番号と、前記物理ブロックに対する状態を有効、削除または無効に表示するフラッシュメモリの状態情報とを含むことを特徴とする請求項１１に記載のフラッシュメモリアクセス方法。
【請求項１５】
前記書き込み演算により存在することになる前記論理ブロック番号に対する一つ以上の物理ブロックをスキャニング過程で感知し、感知された物理ブロックのうち、前記論理ブロックに対する有効ブロックを判別して、エラーを修復する修復演算ステップをさらに含むことを特徴とする請求項１１に記載のフラッシュメモリアクセス方法。
【請求項１６】
前記スキャニング過程は、前記フラッシュメモリを最も最近にアクセスされた下位ブロックを基準に調べて各物理ブロックの論理ブロック番号を読み出し、前記読み出された論理ブロック番号に対応するブロック割り当てテーブルの論理ブロック番号のフィールドを調べるステップと、
前記論理ブロック番号のフィールドに記録された状態値が「０」であると、 「１」に記録し、前記状態値が「１」であると、前記スキャニング過程で前の物理ブロックにより前記論理ブロック番号が検索されたと感知するステップとを含むことを特徴とする請求項１５に記載のフラッシュメモリアクセス方法。
【請求項１７】
前記修復演算ステップは、前記フラッシュメモリの所定のユニットに書き込まれたデータを新しいユニットに移動するフラッシュメモリの再生過程で感知される特定の論理ブロック番号についてのデータのうち、最新のデータを判別してエラーを修復するステップをさらに含むことを特徴とする請求項１５に記載のフラッシュメモリアクセス方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリアクセス装置及び方法に関し、より詳しくは、プロセッサからの書き込み演算の要求に従い、フラッシュメモリをアクセスする書き込み演算過程を最小化し、これによる修復演算過程を通してエラーの発生を防止することにより、システムのエラー発生時に、エラーを修復可能とすると共にフラッシュメモリの性能低下を最小限に抑えることができるフラッシュメモリアクセス装置及び方法に関する。
【背景技術】
【０００２】
一般に、フラッシュメモリは、不揮発性であり、プログラム可能なメモリであって、迅速なアクセス速度を有すると共に、電力の消費が少ないため、 移動端末機、ＰＤＡなどの移動デバイス(mobile device)を初めとする組み込み型システム(embedded system)において広く使用されている。
【０００３】
このようなフラッシュメモリは、既存のＲＡＭや不揮発性格納装置、マグネチック装置などと同様に、特定の位置に格納されたデータを任意にアクセスできるが、データを修正または削除する方法においては、既存の格納装置とは異なり、ブロック(block)を基本単位としてアクセスが行われる。
【０００４】
即ち、フラッシュメモリにおいては、読み出し・書き込み演算時に、フラッシュメモリからデータを一度に読み出したり、書き込んだりすることのできるブロック(block)と、多数のブロックからなり、一度の削除演算により削除できるユニット(unit)とでアクセスが行われるが、このようなフラッシュメモリのアクセス特性に従いデータを効率よく管理するための方法として、ブロック(またはセクター)、再写像(re-mapping)手法が一般的に用いられている。
【０００５】
ブロック(または、セクター)、再写像手法は、マッピングテーブルにより、フラッシュメモリに記録される特定のデータに対する物理ブロック番号(Physical Block Number：以下、ＰＢＮと称する)と論理ブロック番号(Logical Block Number：以下、ＬＢＮと称する)間の写像情報を用いて、該当のデータの修正または削除によりＰＢＮが変更されても、同じＬＢＮでデータにアクセスできるようにするものである。
【０００６】
このような既存のブロック再写像手法は、プロセッサから要求される書き込み/削除/修正の演算を行う度ごとに、マッピングテーブルに書き込まれたフラッシュメモリの状態情報を修正しなければならず、これによる反復的な書き込み演算により、フラッシュメモリの性能が低下するという問題点があった。
【０００７】
このような問題点を解決するためのフラッシュメモリ制御方法として、図１には、このフラッシュメモリ制御方法による演算過程を説明するためのフラッシュメモリブロック図を示している。
【０００８】
先ず、先に出願された韓国特許出願第１９９９-００４１８３５号(発明の名称：フラッシュメモリ及びその制御方法)によるもので、図１の下端は、物理ユニットの構造を示している。
【０００９】
各ユニットは、ヘッダ(EUH：Erase Unit Header)とブロック割り当てマップ(Block Allocation Map：以下、ＢＡＭと称する)とを有し、実際のデータが格納されるものであり、ヘッダには、ユニットについての様々なメタ情報が格納されており、ＢＡＭには、特定のユニットに属する各ブロックについての情報(論理ブロック番号、状態など)が書き込まれている。 
【００１０】
このようなフラッシュメモリの特定のＬＢＮ３に対する書き込み演算が要求されると、先ず、ＬＢＮ-to-ＬＵＮテーブルを用いて、与えられたＬＢＮ３に対する論理ユニット番号(Logical Unit Number：以下、ＬＵＮと称する)２を探索し、ＬＵＮ２が決定されると、ＬＵＮ-to-ＰＵＮテーブルを用いて物理ユニット番号(Physical Unit Number：以下、ＰＵＮと称する)を検索する。
【００１１】
これにより、ＰＵＮ１が決定されると、ＰＵＮ１に対応するＢＡＭを用いて現在書き込み可能なＰＢＮを検索し、検索されたＰＢＮ１に書き込み演算が要求されるデータを記録し、ＰＢＮ１に対応するＢＡＭの一番目のフィールドにＬＢＮ３及び状態情報(有効；valid)を書き込む。
【００１２】
このように、書き込まれたＬＢＮ３についてのデータを更新するための演算が要求されると、新しいＰＢＮの割り当てを受けて、更新されるＬＢＮ３のデータを書き込むために、割り当てられたＰＢＮ４にデータを書き込み、ＰＢＮ４に対応するＢＡＭの四番目のフィールドにＬＢＮ３及び状態情報(有効；valid)を書き込む。
【００１３】
さらに、更新されたＬＢＮ３が記録されていた前のＰＢＮ１に書き込まれたデータ及びＰＢＮ１に対応するＢＡＭの一番目のフィールドに記録されたＬＢＮ３を削除し、状態情報(削除：deleted)を書き込む。
【００１４】
このような書き込み及び更新演算過程において、ＰＵＮ１に空きブロックが存在しない場合、フラッシュメモリをより効率よく使用するために、ＰＵＮ１に書き込まれた有効データのみを新しいＰＵＮ２にコピーする。 
【００１５】
また、上記問題点を解決するために、韓国特許出願第２０００-００５９７３１号(発明の名称:フラッシュメモリのための再写像制御方法及びそれによるフラッシュメモリの構造)には、図２Ａに示すように、エラー発生時、それを修復するために、ブロックの状態情報を循環係数(wrap-count)を用いて表示(１１１１：未定状態、１１１０(Ｓ０)、１１００(Ｓ１)、１０００(Ｓ２)：有効な状態、００００：削除)することにより、循環係数の変化順序を利用して、前のデータと新しいデータとを区別し、エラー発生時に、最小限の書き込み演算を行い、システムを復旧できる技術が既に開示されている。 
【００１６】
図２Ｂは、このようなフラッシュメモリ再写像制御方法によるフラッシュメモリ構造を示す図であり、実質的なデータが書き込まれるデータ領域(data)、論理的なセクター(ブロック)番号領域(logical sector number；lsn)、循環係数領域(wrap count；Cnt)、lsnやcntのエラー訂正コード(Ecc_lsn)、及びデータに対するエラー訂正コード(Ecc_data)から構成されている。
【００１７】
図２Ｃは、状態情報を各ブロックに書き込み、エラー発生時、より新しいデータに復旧する過程を示す図である。
【００１８】
例えば、五つ番目のフラッシュメモリブロックの後でエラーが発生すると、有効データが二つ存在し、それぞれラップカウントが１１１０と１１００となるが、１１１０が１１００に順序で優先するため、最新のデータに復旧する方策を取ると、左方のデータが削除される。
【００１９】
このように、従来のフラッシュメモリ制御方法においても、反復的な書き込み演算によるフラッシュメモリのシステム性能の低下を防止するための方法には到っていなかった。
【００２０】
従って、このような書き込み演算の回数を減らすことにより、フラッシュメモリのシステムの性能を向上できるフラッシュメモリアクセス方法が求められている。
【発明の開示】
【発明が解決しようとする課題】
【００２１】
本発明は、上記問題点に鑑みなされたものであり、プロセッサから要求される更新演算過程において、前のＰＢＮに、変更されるフラッシュメモリ状態情報を書き込む書き込み演算過程を省くことにより、書き込み演算過程を最小化することを目的とする。
【００２２】
また、最小化した書き込み演算過程により、フラッシュメモリの初期化過程において特定のＬＢＮのデータが一つ以上存在しても、優先順位に基づいて最新のデータを判別して処理する修復演算過程を提供することを他の目的とする。
【００２３】
また、最小化した書き込み演算過程と、これを考慮した修復演算過程とを通して反復的な書き込み演算によるフラッシュメモリの性能低下を最小化すると共に、エラー発生時にも安定して修復できるようにして、フラッシュメモリシステム全体の性能を向上することをさらに他の目的とする。
【課題を解決するための手段】
【００２４】
上記の目的を達成するために、本発明においては、修復演算過程を考慮した書き込み演算により、プロセッサから要求される更新演算過程において、前のＰＢＮに、変更されるフラッシュメモリ状態情報を書き込む書き込み演算過程を省き、フラッシュメモリの初期化過程において、特定のＬＢＮのデータが一つ以上存在しても、修復演算過程を行って最新のデータを判別して処理している。
【００２５】
修復演算過程を通して最新のデータを判別可能とするために、初期化過程においては、フラッシュメモリの下位ブロックに優先順位を与え、これを基準に各ブロックをスキャニングしながら各ブロックのＬＢＮに対するデータの書き込みがあるか否かをブロック割り当てテーブルの対応のＬＢＮに書き込む。
【００２６】
また、フラッシュメモリの所定のユニットに存在する遊休データ（idle data）を新しいユニットに移動させるメモリ再生過程においても修復演算過程を行って最新のデータを判別し、以前のデータの削除処理を行う。
【００２７】
本発明に係るフラッシュメモリアクセス装置は、所定のブロックからなるユニット単位に領域分けされたフラッシュメモリと、フラッシュメモリの特定の論理ブロック番号に対して要求される書き込み演算において、前記論理ブロックに対する前の書き込み演算がない場合、前記論理ブロックに対応する物理ブロックにデータやメタ情報を書き込み、前の書き込み演算がある場合、前記論理ブロックに対応する前の物理ブロックに書き込まれたフラッシュメモリ状態情報を変更せず、新しい物理ブロックに、前記論理ブロックに指定されたデータやメタ情報を書き込む書き込み演算を行うフラッシュメモリコントローラとを備えることを特徴とする。
【００２８】
本発明に係るフラッシュメモリアクセス方法は、プロセッサから特定の論理ブロック番号に対する書き込み演算が要求されると、フラッシュメモリにアクセスして、書き込み演算のために、現在書き込み可能な物理ブロックを検索するステップと、論理ブロック番号に対する前の書き込み演算がない場合、前記論理ブロックに対応する物理ブロックにデータやメタ情報を書き込み、前の書き込み演算がある場合、前記論理ブロックに前の物理ブロックに書き込まれたフラッシュメモリ状態情報を変更せず、前記論理ブロックに対応する新しい物理ブロックにデータやメタ情報を書き込むステップとを含むことを特徴とする。
【発明の効果】
【００２９】
本発明によると、フラッシュメモリの特定の論理ブロックに対するデータの更新時に要求される書き込み演算の回数を最小化し、フラッシュメモリシステムの性能を最大にすることができる。
【００３０】
また、フラッシュメモリの初期化過程において、特定の論理アドレスのデータに対する優先順位に基づいて、有効データを決定することにより、不意な電源断によるエラー発生時にも、安定して復旧できる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の好ましい実施の形態を、添付図面に基づいて詳しく説明する。
先ず、本発明によるフラッシュメモリの構造及びそれによるフラッシュメモリアクセス装置の構成及び動作について説明する。
【００３２】
図３は、本発明の一実施の形態のフラッシュメモリアクセス装置を示す概略ブロック図である。.
図３に示すように、本発明に係るフラッシュメモリアクセス装置においては、フラッシュメモリ１００と、フラッシュメモリ１００にアクセスして、指定の論理ブロックのデータ及びメタ情報を書き込み可能な物理ブロックに書き込む書き込み及び更新演算(以下、書き込み演算と総称する)に相応する動作制御を行うフラッシュメモリコントローラ３００とから構成され、フラッシュメモリコントローラ３００によりフラッシュメモリ１００に書き込まれたデータを読み出すか、データを書き込むための制御命令を発するシステムのプロセッサ５００と、システム性能を向上するために、フラッシュメモリ１００に格納されている種々の情報(例えば、論理-物理ユニット間のマッピング情報、各論理ブロックについてのアクセス情報、各ユニットの論理-物理ブロック間のマッピング情報)をキャッシュ(cache)するＲＡＭ７００とをさら備えている。
【００３３】
また、フラッシュメモリコントローラ３００は、初期化過程及び有効データを新しいユニットに移動させるメモリ再生過程において、特定のＬＢＮのデータが一つ以上存在すると、スキャニング過程で与えられる優先順位に基づいて、最新のデータを判別し、その他のデータについてのフラッシュメモリ状態情報を削除(Ｄ)処理する修復演算過程を行う。
【００３４】
初期化及びメモリ再生過程は、フラッシュメモリ１００の下位ブロックを基準にして各ブロックに記録されたＬＢＮをスキャニングする過程と、スキャニング過程で得られた各ＬＢＮにデータが存在するか否かについての調査結果の値を表示する「０」または「１」をブロック割り当てテーブル(Block Allocation Table：以下、ＢＡＴと称する)に書き込む過程とを含んでいる。
【００３５】
ＢＡＴは、フラッシュメモリ１００の効率的なアクセスのために、ＲＡＭに格納されており、修復演算過程において、特定のＬＢＮのデータのうち、最新のデータを判別可能とするために、スキャニング過程で得られる各ＬＢＮにデータが書き込まれているか否かを表示するためのテーブルである。 
【００３６】
一例として、フラッシュメモリ１００の物理ブロックをスキャニングし、スキャニングされた物理ブロック１００にデータが存在するか否かをＢＡＴの該当のＬＢＮに書き込むフラッシュメモリ初期化過程において、選択されたブロックのＬＢＮに対応するＢＡＴの該当のＬＢＮフィールドに「１」が書き込まれていると、検索された物理ブロックに書き込まれたデータのＬＢＮが前のスキャニング過程で検索されたＬＢＮ値であり、検索された物理ブロックのデータは、前の物理ブロックに書き込まれたデータよりも優先順位が低いため、検索された物理ブロックのフラッシュメモリ状態情報を削除(Ｄ)に変更する。
【００３７】
フラッシュメモリ１００は、削除単位の多数のユニットから構成され、各ユニットは、多数のブロックに分割され、フラッシュメモリ１００に対する読み出しまたは書き込み演算は、ブロック単位で行われる。
【００３８】
図４は、本発明の一実施の形態のＮＡＮＤ型フラッシュメモリブロック構造を示す図である。
図４に示すように、ＮＡＮＤ型フラッシュメモリ１００のブロックは、主領域(main area)１１０と、補助領域(spare area)１３０とに分けられ、主領域１１０には、データが格納されており、補助領域１３０には、該当のブロックについてのメタ情報が格納されている。
【００３９】
一例として、メタ情報が格納されている補助領域１３０は、論理ブロック番号(ＬＢＮ)、フラッシュメモリ状態情報(有効(valid)、削除(deleted)、無効(invalid))が書き込まれる各分割領域からなり、エラー検出領域コード(Error Correction Code；ECC)の記録される領域をさらに含んでいる。
【００４０】
ＮＯＲ型フラッシュメモリ１００の場合には、ブロックについての状態情報を各ユニットの前部分の一つまたはそれ以上のブロックに格納することができる。
【００４１】
ここで、本発明の一実施の形態のフラッシュメモリアクセス装置は、各モジュールを全てハードウェアで構成するか、一部のモジュールをソフトウェアで構成するか、または、全体モジュールをソフトウェアで構成しても良い。
【００４２】
従って、本発明の一実施の形態のフラッシュメモリアクセス装置がハードウェアまたはソフトウェアで構成されているのは、本発明の技術的思想を外れたものでなく、本発明の技術的思想を逸脱しない範囲内で、ソフトウェア及び/またはハードウェアで構成されることによる他の多くの修正や変更が可能であることは、自明なことであろう。
【００４３】
このように本発明に係るフラッシュメモリ及びフラッシュメモリアクセス装置を用いてフラッシュメモリをアクセスする方法について、添付図面を参照しながら一実施の形態を挙げて詳しく説明する。
【００４４】
本発明によるフラッシュメモリ１００のアクセス過程において、読み出し演算過程は、既存の処理過程と同様であり、これについての詳細は省略する。
【００４５】
従って、先ず、本発明による修復演算過程を考慮した書き込み演算過程を説明し、初期化過程でエラー修復のための書き込み演算を行うエラー修復演算過程を説明する。 
また、フラッシュメモリ１００に書き込まれたデータのうち、有効なデータのみを新しいユニットに移動させる過程でエラー修復のための書き込み演算を行うメモリ再生(reclaim)過程を説明する。
【００４６】
１.書き込み演算過程
書き込み演算過程では、プロセッサ５００からの書き込み演算の要求に従い、指定の論理ブロックについてのデータをフラッシュメモリ１００の特定の物理ブロックに書き込むために、使用可能な物理ブロックを検索し、データ及びそれによるメタ情報を物理ブロックに書き込んでいる。
【００４７】
図５は、本発明の一実施の形態のフラッシュメモリの書き込み演算過程を示す動作フローチャートである。
図５に示すように、先ず、フラッシュメモリコントローラ３００では、書き込みコマンド(write command)と共に論理ブロックのアドレスが入力されると、データの書き込まれる物理ブロックを決定するために、ＬＢＮ-ＬＵＮテーブルにより指定のＬＢＮでＬＵＮを検索し(Ｓ１)、検索されたＬＵＮを用いて論理-物理ユニット間のマッピングテーブル(ＬＵＮ-ＰＵＮテーブル)からＰＵＮを検索する(Ｓ２)。
【００４８】
その後、検索された物理ユニット番号の物理ブロックのうち、現在書き込み可能な物理ブロックが存在するか否かを検索するために、ＢＡＭを調べ(Ｓ３)、検索された物理ユニット番号を構成する物理ブロックのうち、空きブロックが存在するか否かを判別する(Ｓ４)。
【００４９】
判別の結果、空きブロックが存在しないと（Ｓ４で「いいえ」）、該当の物理ユニットに書き込まれたデータのうち、特定の論理ブロックの有効データのみを新しいユニットに移動させるメモリ再生(reclaim)を行った後、ＬＵＮ-ＰＵＮテーブルによりＰＵＮを検索するルーチンに復帰し(Ｓ５)、判別の結果、空きブロックが存在すると（Ｓ４で「はい」）、検索された空きブロックにデータ及びメタ情報を書き込む(Ｓ６)。
【００５０】
データ及びメタ情報は、該当のデータが安定して書き込まれることを保証するために、データをブロックの主領域に書き込み、メタ情報の指定の論理ブロック番号をブロックの補助領域に書き込む。
【００５１】
このような過程を通してデータ及び論理ブロック番号に対する書き込み演算が終了すると、書き込み演算によるフラッシュメモリ１００の状態情報(有効)をブロックの補助領域に書き込む。
【００５２】
もし、ブロック単位の書き込み演算に対する原子性(atomicity)が保証されると、データ及びメタ情報は、同時に書き込むことができる。
【００５３】
２.初期化過程
初期化過程では、プロセッサ５００からの演算動作の要求に従い、フラッシュメモリ１００を効率よくアクセスするために、フラッシュメモリコントローラ３００でフラッシュメモリ１００に書き込まれた写像情報をローディングする。
【００５４】
以下、本発明の一実施の形態による初期化過程は、不意な電源断により行われる初期化過程として定義されるもので、初期化過程で発生する不意な電源断によるエラーを修復するエラー修復過程を示している。
【００５５】
しかし、本発明は、不意な電源断による初期化過程に限定されるものでなく、全てのフラッシュメモリ１００初期化過程に適用することができる。
図６は、本発明の一実施の形態のフラッシュメモリの初期化過程の動作フローチャートである。
【００５６】
図６に示すように、先ず、フラッシュメモリコントローラ３００では、フラッシュメモリ１００のヘッダに書き込まれるフラッシュメモリ全体の情報をローディングした後、フラッシュメモリ１００をスキャニングするために、最も最近にアクセスされたユニットの最も下位の物理ブロックを選択し(Ｓ１１)、選択された物理ブロックを優先順位としてフラッシュメモリ１００を構成する物理ブロックのスキャニングを開始する。
【００５７】
これにより、選択された物理ブロックからＬＢＮを読み出し(Ｓ１２)、読み出されたＬＢＮを用いて、ＢＡＴの該当のＬＢＮフィールドを検索する(Ｓ１３)。
【００５８】
その次、検索されたＬＢＮフィールドに記録された状態値が「１」であるか否かを判別し(Ｓ１４)、判別の結果、状態値が「１」でないと（Ｓ１４で「いいえ」）、ＢＡＴのＬＢＮ状態値に「１」を記録し(Ｓ１５)、選択された物理ブロックが該当のユニットの一番目のブロックであるか否かを判別する(Ｓ１６)。
【００５９】
判別の結果、一番目のブロックでないと（Ｓ１６で「いいえ」）、一つ上位のブロックに移動して選択し(Ｓ１７)、選択されたブロックからＬＢＮ状態値を読み出すルーチンに復帰する。
【００６０】
初期の一番目のブロックに対するスキャニング過程が行われた後、ＢＡＴから検索されたＬＢＮ状態値が「１」であるか否かを判別し（Ｓ１４）、ＬＢＮ状態値が「１」であると（Ｓ１４で「はい」）、該当のブロックのフラッシュメモリ状態情報に削除(delete)を表示する(Ｓ１８)。
【００６１】
このような過程において、スキャニング過程でＢＡＴに対応するＬＢＮの状態値「１」の物理ブロックが検索されると、検索された物理ブロックに書き込まれたＬＢＮのデータは、以前に検索されたブロックのＬＢＮデータよりも優先順位が低いため、状態情報を削除表示して、同じＬＢＮを有する有効データによるエラーを防止する。
【００６２】
３.再生(reclaim)過程
再生過程では、プロセッサから書き込み演算が要求されるデータを書き込むための現在書き込み可能な空きブロックがフラッシュメモリの所定のユニットに存在しない場合、該当のユニットに書き込まれた遊休データのみを新しいユニットにコピーする。
【００６３】
図７は、本発明の一実施の形態のフラッシュメモリの再生過程の動作フローチャートである。
図７に示すように、先ず、フラッシュメモリコントローラ３００では、書き込まれた遊休データの移動が要求されるソースユニットと、遊休データを移動しようとする新しいユニットの移動ユニットとを決定する(Ｓ２１)。
【００６４】
次いで、ソースユニットの最も下位ブロックを選択し(Ｓ２２)、選択されたブロックのＬＢＮを読み出す(Ｓ２３)。
【００６５】
次いで、読み出されたＬＢＮを用いて、ＢＡＴで対応するＬＢＮを検索し、検索されたＬＢＮの状態値が「１」である否かを判別する(Ｓ２４)。
【００６６】
判別の結果、ＬＢＮの状態値が「１」でないと（Ｓ２４で「いいえ」）、ＢＡＴのＬＢＮ状態値を「１」に設定し(Ｓ２５)、ＬＢＮのデータを移動ユニットにコピーする(Ｓ２６)。
【００６７】
判別の結果、以前に対応したＬＢＮのデータが検索されて、ＬＢＮの状態値が「１」と判別されるか（Ｓ２４で「はい」）、ＬＢＮのデータを移動ユニットにコピーすると、現在選択されたブロックがソースユニットの一番目のブロックであるか否かを判別する(Ｓ２７)。
【００６８】
判別の結果、ソースユニットの一番目のブロックでないと、一つ上位のブロックに移動し(Ｓ２８)、該当のブロックを選択し、選択されたブロックのＬＢＮを読み出すルーチンに復帰する。
【００６９】
判別の結果、ソースユニットの一番目のブロックであると（Ｓ２７で「はい」）、ソースユニットの 全てのブロックを削除し(Ｓ２９)、これにより、ＬＵＮ-ＰＵＮ写像情報を変更する(Ｓ３０)。
【００７０】
このようなソースユニットに書き込まれた遊休データを移動ユニットにコピーする過程を通して、ソースユニットに存在する特定の論理ブロックについての多数の遊休データのうち、下位ブロックに存在するデータのみを遊休データとして移動ユニットにコピーすることにより、本発明によるエラー修復過程を行う。
このような本発明によるフラッシュメモリアクセス方法について、添付図面を参照して一実施の形態を挙げてより詳しく説明する。
【００７１】
図８のＡ〜Ｃは、本発明の一実施の形態のフラッシュメモリアクセス 過程を示す図である。
図８Ａに示すように、フラッシュメモリコントローラ３００では、プロセッサ５００から特定のＬＢＮ３に対する書き込み演算が要求されると、データ書き込みが可能なフラッシュメモリ１００の物理ブロックにアクセスするために、先ず、ＬＢＮ-ＬＵＮマッピングテーブルを参照して書き込み演算の要求されるＬＢＮ３が属するＬＵＮを探索する。
【００７２】
ＬＢＮ-ＬＵＮマッピングテーブルによりＬＵＮが決定されると、ＬＵＮ-ＰＵＮマッピングテーブルを参照して、ＬＵＮに対するＰＵＮを決定し、決定されたＰＵＮのＢＡＭからプロセッサ５００により指定されるＬＢＮ３データの書き込み可能な物理ブロックの位置を探索する。
【００７３】
これにより、現在書き込み可能なＰＢＮが検索されると、フラッシュメモリコントローラ３００では、検索されたＰＢＮ１の主領域にはデータを書き込み、補助領域にはプロセッサにより指定されるＬＢＮ３を記録する（１）。
【００７４】
このようなデータ及びＬＢＮ３の書き込み過程が終了すると、プロセッサ５００から要求される書き込み演算が安定して終了し、これにより、該当のブロックにデータが書き込まれた状態であることを表示するように、補助領域のフラッシュメモリ１００の状態情報を有効(Ｖ)と書き込む（２）。
【００７５】
このような書き込み演算が行われる過程において、プロセッサ５００からフラッシュメモリのＰＢＮ１に書き込まれたＬＢＮ３のデータの更新のための書き込み演算が要求されると、図８Ｂに示すように、フラッシュメモリコントローラ３００では、更新されるデータを書き込むために、現在書き込み可能なＰＢＮを検索する。
【００７６】
検索の結果、特定のＰＢＮ４が空きブロックと検索されると、検索されたＰＢＮ４の主領域には更新されるデータを書き込み、補助領域には割り当てられたＬＢＮ３を記録する（１）。
【００７７】
次いで、データ及びＬＢＮ３に対する書き込み演算が終了すると、プロセッサ５００から要求される書き込み演算が安定的に終了し、これにより、ＰＢＮ４にデータが書き込まれた状態であることを表示するように、補助領域のフラッシュメモリ１００の状態情報を有効(Ｖ)と書き込む（２）。
【００７８】
このような書き込み演算が行われるフラッシュメモリ１００で不意な電源断によりシステム作動が停止し、後で電源が印加されると、フラッシュメモリコントローラ３００では、フラッシュメモリの初期化のためのアクセス過程を行う。 
【００７９】
先ず、フラッシュメモリコントローラ３００では、フラッシュメモリ１００で最も最近にアクセスされたブロックにアクセスするために、該当のブロックを含むユニットの最も下位ブロックのＰＢＮ４を選択する。
【００８０】
その次、選択されたＰＢＮ４の補助領域に記録されたＬＢＮ３を読み出し、読み出されたＬＢＮ３を用いてＢＡＴの対応のＬＢＮ３のフィールドに書き込まれた状態値を調べる。
【００８１】
その結果、ＢＡＴに記録されたＬＢＮ３に対する状態値が「１」でないと、ＢＡＴの該当のＬＢＮ３のフィールドに状態値を「１」に表示した後、選択されたＰＢＮ４がユニットの一番目のブロックであるか否かを判別して、一つ上位ブロックに移動しながらユニットの各ブロックに対する状態を調べるスキャニング動作を行う。
【００８２】
このようなスキャニング動作過程において、ＢＡＴに記録されたＬＢＮに対する状態値が「１」であると、前のスキャニング過程で遊休データを有する同じＬＢＮが検索されたとして、スキャニング優先順位に基づいて、現在選択された該当のブロックの補助領域に書き込まれたフラッシュメモリ１００の状態情報に削除(Ｄ)表示を行う。
【００８３】
即ち、図８Ｃに示すように、特定のＬＢＮ３についての更新データの書き込まれたＰＢＮ４が最も最近にアクセスされていると、フラッシュメモリスキャニング過程で四番目のブロックをユニットの下位ブロックに選択してＬＢＮ３を読み出す（１）。
【００８４】
読み出されるＬＢＮ３を用いて、ＢＡＴの対応のＬＢＮ３に記録された状態値を調べるが、ＬＢＮ３が最も最近にアクセスされた下位ブロックであるため、状態値が書き込まれておらず、「０」であり、ＢＡＴの該当のＬＢＮ３のフィールドに状態値を「１」に書き込む（２）。
【００８５】
その後、選択されたブロックがユニットの一番目のブロックであるか否かを判別するが、選択のブロックは、ユニットの下位ブロックであるため、一つ上位のブロックを選択する。
【００８６】
これにより、ＰＢＮ３が選択され（３）、選択されたＰＢＮ３を検索して得られるＬＢＮ５を用いて、ＢＡＴの該当のＬＢＮ５のフィールドに記録された状態値を調べる。
その結果に従い、選択されたＰＢＮ３に書き込まれたデータのＬＢＮ５に対応するＢＡＴのＬＢＮ５のフィールドには、状態値が「１」に記録され（４）、現在選択されたＰＢＮ３が一番目のブロックでないため、一つ上位のブロックのＰＢＮ２が選択される。
【００８７】
次いで、選択されたＰＢＮ２に記録されたＬＢＮ４を読み出し（５）、読み出されたＬＢＮ４に対応するＢＡＴのＬＢＮ４のフィールドに記録された状態値を調べて、状態値を「１」に記録する（６）。
【００８８】
このようなスキャニング過程により、次にＰＢＮ１が選択されると(７)、選択されたＰＢＮ１に記録されたＬＢＮ３を読み出して、ＢＡＴの該当のＬＢＮ３のフィールドに記録された状態値を調べる（８）。
【００８９】
このような過程において、対応のＢＡＴのＬＢＮ３のフィールドに、前のスキャニング過程で書き込まれた情報により状態値が「１」に記録されているため、スキャニングの優先順位に基づいて、前のＬＢＮ３を含むＰＢＮ４は、有効データが書き込まれたブロックに決定され、ＰＢＮ１は、無効ブロックに決定される。
【００９０】
これにより、ＰＢＮ１の補助領域に書き込まれたフラッシュメモリの状態情報は、削除(Ｄ)に変更される（９）。
【００９１】
このようなスキャニング過程を通して、本発明のエラー修復過程を考慮し、書き込み回数を最小化した書き込み演算により、特定の論理ブロックに対して存在する有効データのうち、最新のデータを区別し、エラーを修復することができる。
【００９２】
以上のように、上記実施の形態を参照して詳細に説明され図示されたが、本発明は、これに限定されるものでなく、このような本発明の基本的な技術的思想を逸脱しない範囲内で、当業界の通常の知識を有する者にとっては、他の多くの変更が可能であろう。また、本発明は、添付の特許請求の範囲により解釈されるべきであることは言うまでもない。
【図面の簡単な説明】
【００９３】
【図１】従来のフラッシュメモリ制御方法による演算過程を説明するためのフラッシュメモリブロック図である。
【図２Ａ】従来のフラッシュメモリ再写像制御方法によるラップカウント概念図である。
【図２Ｂ】従来のフラッシュメモリ再写像制御方法によるフラッシュメモリブロックの構造図である。
【図２Ｃ】状態情報を各ブロックに書き込み、エラー発生時に、後のデータに復旧する過程を示すフラッシュメモリのブロック図である。
【図３】本発明の一実施の形態のフラッシュメモリアクセス装置を示すブロック図である。
【図４】本発明の一実施の形態のＮＡＮＤ型フラッシュメモリのブロック構造を示す図である。
【図５】本発明の一実施の形態のフラッシュメモリの書き込み演算過程を示す動作フローチャートである。
【図６】本発明の一実施の形態のフラッシュメモリの初期化過程を示す動作フローチャートである。
【図７】本発明の一実施の形態のフラッシュメモリの再生過程を示す動作フローチャートである。
【図８Ａ】本発明の一実施の形態のフラッシュメモリアクセス過程を示す図である。
【図８Ｂ】本発明の一実施の形態のフラッシュメモリアクセス過程を示す図である。
【図８Ｃ】本発明の一実施の形態のフラッシュメモリアクセス過程を示す図である。
【符号の説明】
【００９４】
１００    フラッシュメモリ
１１０    主領域
１３０    補助領域
３００    フラッシュメモリコントローラ
５００    プロセッサ
７００    ＲＡＭ
【図１】
2004303238.tif 000003
【図２Ａ】
2004303238.tif 000004
【図２Ｂ】
2004303238.tif 000005
【図２Ｃ】
2004303238.tif 000006
【図３】
2004303238.tif 000007
【図４】
2004303238.tif 000008
【図５】
2004303238.tif 000009
【図６】
2004303238.tif 000010
【図７】
2004303238.tif 000011
【図８Ａ】
2004303238.tif 000012
【図８Ｂ】
2004303238.tif 000013
【図８Ｃ】
2004303238.tif 000014