(57)【要約】【課題】  フラッシュメモリを制御する方法が提供される。【解決手段】  本発明のフラッシュメモリ制御方法によれば、命令が入力されるとき、マージ状態情報が前記フラッシュメモリのマージ状態を示すか否かが判別される。もし前記フラッシュメモリがマージ状態になければ、前記フラッシュメモリにマージ動作が要求されるか否かが判別される。もしマージ動作が要求されなければ、前記入力された命令が処理されるように前記フラッシュメモリが制御される。【選択図】  図５
2006018839.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリに対する命令に応答して漸進的マージ動作の多数のマージ段階のうちの一つを実行することを特徴とするフラッシュメモリの制御方法。
【請求項２】
前記多数のマージ段階のうちの一つを実行することは、
前記フラッシュメモリに対する命令を入力受ける段階と、
前記フラッシュメモリが漸進的マージ動作を実行するか否かを判断する段階と、
前記フラッシュメモリが漸進的マージ動作を実行している場合、漸進的マージ動作の次のマージ段階を実行することを特徴とする請求項１に記載のフラッシュメモリの制御方法。
【請求項３】
前記フラッシュメモリが漸進的マージ動作を実行しないか、または前記入力された命令が読み出し命令であれば、前記入力された命令を実行する段階と、
前記フラッシュメモリが漸進的マージ動作を実行する場合、前記フラッシュメモリに連続書き込みのためのデータを貯蔵する段階と、
前記命令完了をホストプロセッサに伝達する段階とをさらに含むことを特徴とする請求項２に記載のフラッシュメモリの制御方法。
【請求項４】
前記漸進的マージ動作が完了したか否かを判断する段階と、
前記漸進的マージ動作が完了すれば、前記貯蔵されたデータを前記フラッシュメモリに記録する段階とを含むことを特徴とする請求項３に記載のフラッシュメモリの制御方法。
【請求項５】
前記フラッシュメモリが漸進的マージ動作を実行するか否かを判断する段階はマージ状態情報を判断する段階を含み、
前記方法は前記次のマージ段階の実行に応答して前記マージ状態情報をアップデートする段階をさらに含むことを特徴とする請求項２に記載のフラッシュメモリの制御方法。
【請求項６】
漸進的マージ動作が前記入力された命令に要求されるか否かを判断する段階と、
漸進的マージ動作が要求される場合、前記漸進的マージ動作の第１マージ段階を実行する段階とを含むことを特徴とする請求項３に記載のフラッシュメモリの制御方法。
【請求項７】
前記フラッシュメモリが漸進的マージ動作を実行するか否かを判断する段階はマージ状態情報を判断する段階を含み、
前記方法は前記第１マージ段階の実行に応答して前記マージ状態情報をアップデートする段階をさらに含むことを特徴とする請求項６に記載のフラッシュメモリの制御方法。
【請求項８】
前記漸進的マージ動作が完了したか否か判断する段階と、
前記漸進的マージ動作が完了すれば、前記マージ状態情報をリセットする段階とを含むことを特徴とする請求項５に記載のフラッシュメモリの制御方法。
【請求項９】
前記漸進的マージ動作が完了したか否かを判断する段階は有効データのコピーが完了したか否かに従って決められることを特徴とする請求項８に記載のフラッシュメモリの制御方法。
【請求項１０】
前記漸進的マージ動作が完了したか否かを決める段階は前記漸進的マージ動作のすべてのマージ段階が完了したか否かに従って決められることを特徴とする請求項８に記載のフラッシュメモリの制御方法。
【請求項１１】
漸進的マージ動作が前記入力された命令を実行するのに必要であるか否かを決める段階は前記フラッシュメモリの少なくとも一つのメモリブロックに空のページが存在するか否かに基づくことを特徴とする請求項６に記載のフラッシュメモリの制御方法。
【請求項１２】
マージ動作を多数のマージ段階に分け、マージ段階の各々はホストプロセッサのタイムアウトタイム内に完了する段階と、
前記ホストプロセッサからの命令入力に応答して前記マージ段階のうちの一つを実行する段階と、
マージ動作が実行中であるか否かに基礎して前記ホストプロセッサから入力された前記命令を選択的に実行する段階と、
前記ホストプロセッサのタイムアウトタイム内に前記ホストプロセッサに応答を与えるために前記入力された命令が完了したことを前記ホストプロセッサに知らせることを特徴とするフラッシュメモリの制御方法。
【請求項１３】
前記入力された命令を選択的に実行する段階は、
前記入力された命令が読み出し命令の場合に読み出し動作を実行する段階と、
前記入力された命令が書き込み命令であり、マージ動作が実行中の場合に書き込み命令のためにデータを貯蔵する段階とを含むことを特徴とする請求項１２に記載のフラッシュメモリの制御方法。
【請求項１４】
前記マージ動作が完了したか否か判断する段階と、
前記マージ動作が完了した場合にフラッシュメモリに貯蔵されたデータを記録する段階をさらに含むことを特徴とする請求項１３に記載のフラッシュメモリの制御方法。
【請求項１５】
前記マージ段階のうちの一つを実行する段階は
前記入力された命令がマージ動作であるか否かを判断する段階と、
前記入力された命令がマージ動作の場合に前記多数のマージ段階のうちの第１段階を実行する段階とを含むことを特徴とする請求項１２に記載のフラッシュメモリの制御方法。
【請求項１６】
前記マージ段階のうちの一つを実行する段階は
マージ動作がマージ段階情報に基づいて実行中であるか否かを判断する段階と、
前記複数のマージ段階の次のマージ段階を決める段階と、
前記複数のマージ段階のうち前記次のマージ段階を実行する段階と、
前記次のマージ段階が実行されることに従って前記マージ情報をアップデートする段階とをさらに含むことを特徴とする請求項１５に記載のフラッシュメモリの制御方法。
【請求項１７】
フラッシュメモリと、
ホストプロセッサからの命令入力に応答して漸進的マージ動作の複数のマージ段階のうちの一つを実行することを特徴とするインターフェース装置を含むことを特徴とするメモリシステム。
【請求項１８】
前記インターフェース装置はホストプロセッサから命令を受けて、前記メモリシステムが漸進的マージ動作を実行するか否かを判断し、前記メモリシステムが漸進的マージ動作を実行すれば、前記漸進的マージ動作の次の段階を実行することを特徴とする請求項１７に記載のメモリシステム。
【請求項１９】
前記インターフェース装置は前記メモリシステムが漸進的マージ動作を実行しないか、または前記入力された命令が読み出し命令である場合に前記入力された命令を実行し、前記メモリシステムが漸進的マージ動作を実行すれば、前記フラッシュメモリの後続書き込み動作のためにデータをバッファメモリに貯蔵し、前記命令が完了したことを前記ホストに知らせることを特徴とする請求項１８に記載のメモリシステム。
【請求項２０】
前記インターフェース装置は前記漸進的マージ動作が完了したか否かを判断し、前記漸進的マージ動作が完了すれば、前記フラッシュメモリに前記貯蔵されたデータを書き込むことを特徴とする請求項１９に記載のメモリシステム。
【請求項２１】
前記インターフェース装置は動作メモリに貯蔵されたマージ状態情報を判断して前記フラッシュメモリが漸進的マージ動作を実行するか否かを決め、前記次のマージ段階の実行に応答して前記マージ状態情報をアップデートすることを特徴とする請求項１８に記載のメモリシステム。
【請求項２２】
前記インターフェース装置は漸進的マージ動作が前記入力された命令実行に必要であるか否かを判断し、前記漸進的マージ動作が必要な場合に前記漸進的マージ動作の第１段階を実行することを特徴とする請求項１９に記載のメモリシステム。
【請求項２３】
前記インターフェース装置は動作メモリに貯蔵されたマージ状態情報を判断して前記フラッシュメモリが漸進的マージ動作を実行するか否かを決め、前記第１マージ段階の実行に応答して前記マージ状態情報をアップデートすることを特徴とする請求項２２に記載のメモリシステム。
【請求項２４】
前記インターフェース装置は前記漸進的マージ動作が完了したか否かを判断し、前記漸進的マージ動作が完了すれば、前記マージ状態情報をリセットすることを特徴とする請求項２１に記載のメモリシステム。
【請求項２５】
前記インターフェース装置は有効データのコピーが完了したか否かを判断して前記漸進的マージ動作が完了したか否かを決める特徴とする請求項２４に記載のメモリシステム。
【請求項２６】
前記インターフェース装置は前記漸進的マージ動作のすべてのマージ段階が完了したか否かを判断して前記漸進的マージ動作が完了したか否かを決めることを特徴とする請求項２４に記載のメモリシステム。
【請求項２７】
前記インターフェース装置は前記フラッシュメモリの少なくとも一つのメモリブロックに空のページが存在するか否かに基づいて前記入力された命令の実行に漸進的マージ動作が必要であるか否かを決めることを特徴とする請求項２２に記載のメモリシステム。
【請求項２８】
マージ動作を複数のマージ段階に分けるための手段と、
ホストコンピュータからの命令が入力されれば、前記マージ段階のうちの一つを実行するための手段と、
マージ動作が実行中であるか否かに基づいて前記ホストプロセッサから入力された前記命令を選択的に実行するための手段と、
前記ホストプロセッサのタイムアウトタイム内に前記ホストプロセッサに応答を送るために前記入力された命令が完了したことを前記ホストプロセッサに知らせるための手段とを含み、
前記複数のマージ段階の各々は前記ホストプロセッサの前記タイムアウトタイム内に完了することを特徴とするフラッシュメモリ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は貯蔵装置に係わり、さらに具体的にはフラッシュメモリのような不揮発性の消去可能な半導体メモリを含む半導体メモリ装置を効率的に管理する方法及び装置に関する。
【背景技術】
【０００２】
最近の技術開発によれば、事務用デスクトップコンピュータと移動環境用ノートブックコンピュータのような様々な形態のパーソナルコンピュータが開発されて市場に出ている。一般的に、このようなコンピュータシステムはメインメモリと外部貯蔵装置とを含む。外部貯蔵装置が貯蔵容量の低い単位価格の大きいメモリ容量を有することが望ましい。
【０００３】
外部貯蔵装置はディスク貯蔵媒体を利用した従来のハードディスクドライブ（ＨＤＤ）またはプロッピィー(登録商標)ディスクドライブ（ＦＤＤ）であろう。このようなディスク貯蔵装置は一般的に低い価格で大きいメモリ容量を提供するが、磁気ヘッドで多様な動作（例えば、ディスク探索動作）を実行するためによほど纎細な機械的な技術を要求する。したがって、ディスク貯蔵装置は物理的な衝撃によって容易に損傷されやすいので、他の形態のメモリ装置より信頼性が低く見なされる。
【０００４】
過去に、ＤＲＡＭまたはＳＲＡＭのような貯蔵媒体として半導体メモリを使用した外部メモリ装置はディスク貯蔵装置に対する実行可能な代案が提供されていない。たとえ半導体タイプの外部メモリ装置がディスクアクセス時間より速い処理速度を有し、物理的な衝撃に対してさらに影響を受けても、ＤＲＡＭとＳＲＡＭ技術と係わる根本的な短所によって大容量のストレージのためにＳＲＡＭとＤＲＡＭ技術の使用が阻まれてきた。
【０００５】
一般的に、ＳＲＡＭのメモリ容量当たり価格はＳＲＡＭを大容量ストレージ用途として 使用するのには費用効果的に（ｃｏｓｔ−ｅｆｆｅｃｔｉｖｅ）高過ぎる。さらに、ＤＲＡＭ内のデータを保存するために要求される追加的な電力は外部貯蔵装置の運用費用を増加させ、ＤＲＡＭリフレッシュ動作と係わる電力消耗は減少した電力消耗が望ましい移動環境においてＤＲＡＭを具現しにくくする。
【０００６】
一方、フラッシュＥＥＰＲＯＭのようなフラッシュメモリとして実現された外部半導体メモリ装置は任意の環境でディスク貯蔵装置に対する実行可能な代案を提供する。フラッシュメモリ装置は一回以上プログラムされる不揮発性メモリ装置である。さらに、フラッシュメモリ装置は容易に実現されることができる簡単な構造を有する。フラッシュメモリ装置が一般的に少ない電力を消耗し、コンパクトで、軽く、かつ物理的な衝撃により損傷されることが少ないものであるので、フラッシュメモリ装置はフラッシュメモリ装置と関連付けられたトレードオフ（ｔｒａｄｅ−ｏｆｆｓ）にもかかわらず、たびたび移動環境に適する。このようなトレードオフはプログラム動作の以前に消去動作が実行されなければならないという要求条件、消去動作を実行するための高電圧（例えば、１２Ｖまたは２０Ｖ）の要求条件、そして数ＫＢから数百ＫＢの比較的大きいメモリユニットが同時に消去されなければならないという要求条件を含む。
【０００７】
コンピュータシステム（以下、“ホスト”という）は論理的なアドレスを指示することで外部貯蔵装置をアクセスする。論理的なアドレスは物理的な貯蔵位置と比べると、ホストソフトウェア（すなわち、運営システムまたはアプリケーション）が認識する論理的なメモリ空間のうちの任意の位置を参照する。したがって、論理的なアドレスは指定された物理的なメモリ空間をアクセスするために外部貯蔵装置の物理的なメモリ空間に対応する物理的なアドレスに変換される。
【０００８】
一般的に、フラッシュメモリを使用した外部貯蔵装置はアクセス動作の間ホストとの互換性を保障するためにディスクエミュレーションソフトウェア（ｄｉｓｋ ｅｍｕｌａｔｉｏｎ ｓｏｆｔｗａｒｅ）と呼ばれる追加的なソフトウェアを要する。アクセス動作の間ホストと外部フラッシュ貯蔵装置との間の互換性はＦＴＬ（ｆｌａｓｈ ｔｒａｎｓｌａｔｉｏｎ ｌａｙｅｒ）のような従来のファイルシステムを運営することで達成されることができる。すなわち、ホストは外部フラッシュメモリ装置をＨＤＤ／ＳＲＡＭとして認識してＨＤＤ／ＳＲＡＭと同一の方式で外部フラッシュメモリ装置をアクセスする。ＦＴＬは特定ＰＣの運営システムによって使用されるファイルシステムにフラッシュメモリカードを連結し、同一のアドレスに消去なしに一度以上の書き込みを許与しない。
【０００９】
ＦＴＬの機能は論理アドレス−物理アドレスマッピング(mapping)情報管理、不良ブロック管理、予想できない電源遮断に起因したデータ保存管理、磨耗度管理などを含む。ＦＴＬの機能のうちの核心的な機能はマッピング技法に係わることで、例示的なマッピング技法が特許文献１、２、および３に開示されており、この出願の参照として含まれる。
【００１０】
フラッシュメモリがブロック単位でアクセスされる場合に、フラッシュメモリは複数のブロックに分割される。分割されたブロックに順次に割り当てられた番号は物理ブロック番号と呼ばれ、ユーザーが思う分割されたブロックの仮想番号は論理ブロック番号と呼ばれる。論理ブロック番号と物理ブロック番号との間のマッピングを提供する方法では、ブロックマッピング技法、セクタマッピング技法、およびログマッピング技法を含む。マッピング技法を利用したＦＴＬでは論理的に連続されたアドレスを有するデータが物理的には互いに相異なっている位置に記録されることがあり得る。フラッシュメモリは書き込み（またはプログラム）単位より消去単位がさらに大きくて一定の限界に至れば、任意の空のブロックを利用して物理的に互いに相異なっている位置に分散している連続されたデータを同一のアドレス空間に集める作業を要し、このような過程をマージ動作という。
【００１１】
上述のブロックマッピング技法、セクタマッピング技法、およびログマッピング技法を利用したマージ動作が以下詳細に説明される。マージ動作を説明する前に、フラッシュメモリが複数個のメモリブロックに分割されており、各メモリブロックは複数個のページ（またはセクタ）で構成されると仮定する。記号“ＰＢＮ”は物理ブロック番号を示し、、記号“ＰＰＮ”は物理ページ番号を示し、記号“ＬＰＮ”は論理ページ番号を示す。
【００１２】
ブロックマッピング技法
ブロックマッピング技法によるマージ動作が図１Ａ及び図１Ｂを参照して以下説明される。ブロックマッピング技法によれば、任意のメモリブロックにデータを貯蔵する場合、メモリブロックのページに順次にデータが貯蔵される。物理ブロック番号が‘２'であるメモリブロック（例えば、ＰＢＮ２）のｉ番目のページＰＰＮｉにデータをアップデートする／再書き込む場合、まず、アップデートが要請された物理ページ番号が‘ｉ’であるページＰＰＮｉを除いた残りのページに貯蔵されたデータが空のメモリブロック（例えば、ＰＢＮ３）の対応するページに各々伝送される／コピーされる。その次に、メモリブロックＰＢＮ２のページＰＰＮｉに貯蔵されるデータはメモリブロックＰＢＮ３のｉ番目のページにアップデートされる／再書き込まれる。以後、メモリブロックＰＢＮ２は消去されて空のメモリブロック（ｆｒｅｅ ｍｅｍｏｒｙ ｂｌｏｃｋ）になる。図１Ｂに示したように、マージ動作が実行された後セクタマッピングテーブルがアップデートされる。すなわち、論理メモリブロックＬＢＮ０に対応する物理メモリブロックが“ＰＢＮ２”から“ＰＢＮ３”に変更される。ブロックマッピング技法によれば、前に説明されたマージ動作はデータが貯蔵されたページに他のデータがアップデートされるごとに実行されなければならない。
【００１３】
セクタ（またはページ）マッピング技法
セクタマッピング技法によるマージ動作が図２Ａ及び図２Ｂを参照して以下説明される。セクタ（またはページ）マッピング技法によれば、メモリブロックのページに順次にデータが書かれる。ここで、ページはセクタと同一の大きさを有するが、一つのページが複数のセクタで構成されることができることはこの分野の通常の知識を習得した者などに自明である。例えば、論理ページＬＰＮ０のデータは物理ページＰＰＮ０に貯蔵され、論理ページＬＰＮ１のデータは物理ページＰＰＮ１に貯蔵され、論理ページＬＰＮ２のデータは物理ページＰＰＮ２に貯蔵される。論理ページ（例えば、ＬＰＮ１）にデータをアップデートしようとする場合、論理ページＬＰＮ１のデータは物理ページＰＰＮ３に貯蔵され、物理ページＰＰＮ１は無効データが貯蔵されたとして処理される（図２Ａで“Ｘ”として表記する）。また、論理ページ（例えば、ＬＰＮ０）にデータをアップデートしようとする場合、論理ページＬＰＮ０のデータは物理ページＰＰＮ４に貯蔵され、物理ページＰＰＮ０は無効データが貯蔵されたとして処理される（図２Ａで “Ｘ”として表記する）。もしすべてのページに対して書き込み動作が実行されれば、すなわち、メモリブロックＰＢＮ０に空のページ(free page)が存在しない場合、メモリブロックＰＢＮ０に書き込み動作が要求されるとき、マージ動作が実行される。図２Ａに示したように、メモリブロックＰＢＮ０の有効データだけすなわち、物理ページＰＰＮ２−ＰＰＮ５が空のメモリブロックＰＢＮ１の対応するページＰＰＮ１０−ＰＰＮ１３にコピーされ、書き込み動作が要求された論理ページＬＰＮ０のデータがメモリブロックＰＢＮ１の物理ページＰＰＮ１４に貯蔵される。この際、メモリブロックＰＢＮ１の物理ページＰＰＮ０は無効データが貯蔵されたとして処理される（図２Ａで“Ｘ”として表記する）。次に、メモリブロックＰＢＮ０は消去される。変更されるマッピングテーブルはＦＴＬによって管理され、図２Ｂに示したように変更される。
【００１４】
ログマッピング技法
ログマッピング技法を利用したマージ動作が図３Ａ乃至図３Ｄを参照して以下詳細に説明される。ログマッピング技法によれば、図３Ａに示したように、メモリブロックはデータ領域、ログ領域、およびメタ領域に区分され、このようなマッピング情報のテーブルはＦＴＬによって管理される。ログマッピング技法によれば、ログ領域のメモリブロックはデータ領域のメモリブロックのうちの一部のメモリブロックに各々指定される。例えば、フラッシュメモリが９個のメモリブロックＰＢＮ０−ＰＢＮ８を含むと仮定すれば、メモリブロックが使用されない状態で、メモリブロックＰＢＮ０−ＰＢＮ４はデータ領域として、メモリブロックＰＢＮ５−ＰＢＮ７はログ領域として、そしてメモリブロックＰＢＮ８はメタ領域として各々定義されることができる。この際、ログ領域のメモリブロックＰＢＮ５、ＰＢＮ６はデータ領域のメモリブロックＰＢＮ０、ＰＢＮ２に各々指定され、ログ領域のメモリブロックＰＢＮ７は空のメモリブロックに指定される。上述のマッピング情報テーブル（ブロックマッピングテーブル、ログブロックマッピングテーブル、およびログマッピングテーブル）が図３Ｂに示されている。各メモリブロックは複数個のページ（または複数個のセクタ）で構成される。
【００１５】
メモリブロックＰＢＮ０にデータを書き込もうとする場合、データはメモリブロックＰＢＮ０に直接書き込まれるのではなく、メモリブロックＰＢＮ０に対応するログ領域のメモリブロックＰＢＮ５に貯蔵される。例えば、論理ページＬＰＮ２に対応するデータをメモリブロック ＰＢＮ０に書き込もうとする場合、ログ領域のメモリブロックＰＢＮ５の物理ページＰＢＮ０にデータが書き込まれる。同様に、論理ページＬＰＮ０に対応するデータをメモリブロックＰＢＮ０に書き込もうとする場合、ログ領域のメモリブロックＰＢＮ５の物理ページＰＢＮ１にデータが書き込まれる。メモリブロックＰＢＮ１にデータを書き込もうとする場合、メモリブロックＰＢＮ１に対応するログ領域のメモリブロックが指定されていないので、下記のようにマージ動作が実行される。まず、空のメモリブロックがログ領域（またはデータ領域）に存在するか否かが判別される。ログ領域に空のメモリブロックがある場合、図３Ｂに示したように、ログ領域のメモリブロックＰＢＮ５、ＰＢＮ６のうちのいずれか一つのメモリブロック（例えば、ＰＢＮ５）に貯蔵された有効データが空のメモリブロックＰＢＮ７にコピーされる／移動される。そして、メモリブロックＰＢＮ５に対応するデータ領域のメモリブロックＰＢＮ０に貯蔵された有効データがメモリブロックＰＢＮ７にコピー／移動される。このようなコピー過程が図３Ｂに示している。メモリブロックＰＢＮ０、ＰＢＮ５が消去された後、図３Ｃに示されているように、ログ領域のメモリブロックＰＢＮ５が空のメモリブロックに指定され、データ領域のメモリブロックＰＢＮ０がログ領域のメモリブロックに指定され、メモリブロックＰＢＮ７がデータ領域のメモリブロックに指定される。最後に、メモリブロックＰＢＮ１に書き込もうとするデータがログ領域のメモリブロックＰＢＮ０に書き込まれる。上述のマージ動作が実行される前後のマッピングテーブル（ブロックマッピングテーブル、ログブロックマッピングテーブル、ログマッピングテーブル）が図３Ｄに示されている。
【００１６】
上述のように、ログマッピング技法によるマージ動作を管理するためには三つのテーブルすなわち、ブロックマッピングテーブル、ログブロックマッピングテーブル、およびログマッピングテーブルが要求される。各テーブルのマッピング情報はＦＴＬによって管理され、メタ領域ＰＢＮ８に貯蔵される。
【００１７】
マージ動作の前後に変更されたマッピング情報の管理はＦＴＬのマッピング方針(mapping policy)に従う。上述のマージ動作はＦＴＬの必要によって自動に実行されることで、ホストはマージ動作が実行されているか否かを認識しない。そのような理由によって、ホストはフラッシュメモリを含んだ外部貯蔵装置に命令（例えば、読み出し、書き込みまたは消去命令）が出力され、一定時間が経過した後にも外部貯蔵装置から応答がないとき、外部貯蔵装置を初期化させる。上述の動作がホストタイムアウトと呼ばれる。タイムアウトを誘発する原因のうちの一つが上述のマージ動作である。メモリブロックサイズ（またはページサイズ）が大きくなるに従ってマージ動作を実行するのに必要な時間はさらに長くなるであろう。これはタイムアウトがもっと頻繁に誘発されることができることを意味する。すなわち、マージ動作が実行されているにもかかわらず、外部貯蔵装置が初期化されるので、外部貯蔵装置の信頼性を保障するのが難しい。
【００１８】
したがって、根本的にホストタイムアウトを回避することができる新しいマージスキームが切実に要求されている。
【特許文献１】米国特許第５，４０４，４８５号明細書
【特許文献２】米国特許第５，９３７，４２５号明細書
【特許文献３】米国特許第６，３８１，１７６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明の目的はホストタイムアウトを回避することができるマージスキーム及びこれを利用したメモリシステムを提供することにある。
【課題を解決するための手段】
【００２０】
上述の諸般の目的を達成するための本発明の特徴によれば、フラッシュメモリを制御する方法が提供され、この方法は命令が入力されるとき、マージ状態情報が前記フラッシュメモリのマージ状態を示すか否かを判別する段階と、もし前記フラッシュメモリがマージ状態になければ、前記フラッシュメモリにマージ動作が要求されるか否かを判別する段階と、もしマージ動作が要求されなければ、前記入力された命令が処理されるように前記フラッシュメモリを制御する段階とを含む。
【００２１】
この実施形態において、前記フラッシュメモリのマージ動作は少なくとも二つの処理過程を含む。
【００２２】
この実施形態において、前記フラッシュメモリにマージ動作が要求されるとき、前記マージ動作の一番目の処理過程を実行する段階をさらに含み、前記マージ状態情報は前記マージ動作の次の処理過程を示すように変更される。
【００２３】
この実施形態において、前記マージ状態情報が前記フラッシュメモリのマージ状態を示すとき、前記マージ動作の何番目の処理過程が実行されなければならないかを判別する段階をさらに含む。
【００２４】
この実施形態において、前記判別された処理過程が実行された後、前記マージ状態情報が次の処理過程を示すように変更される。
【００２５】
この実施形態において、前記判別された処理過程が実行された後、前記マージ動作が完了したか否かを判別する段階をさらに含む。
【００２６】
この実施形態において、前記マージ動作が完了しなければ、前記入力された命令が処理される。
【００２７】
この実施形態において、前記マージ動作が完了すれば、前記マージ状態情報を初期化させる段階をさらに含む。
【００２８】
この実施形態において、前記マージ状態情報を初期化させた後、前記入力された命令が処理される。
【００２９】
この実施形態において、前記マージ動作が完了したか否かは有効なデータのコピーが完了したか否かによって判別される。
【００３０】
この実施形態において、前記マージ動作が完了したが否かは前記マージ動作の処理過程が全部実行されたか否かによって判別される。
【００３１】
この実施形態において、前記マージ動作が要求されるか否かは前記フラッシュメモリのメモリブロックのうちのいずれか一つに空のページが存在するか否かによって判別される。
【００３２】
この実施形態において、前記入力された命令が書き込み命令であるとき、前記マージ動作が実行される間、前記書き込み命令とともに伝送されるデータは一時的にバッファメモリに貯蔵される。
【００３３】
この実施形態において、前記バッファメモリに貯蔵されたデータは前記マージ動作が完了する命令入力サイクルで前記フラッシュメモリに貯蔵される。
【００３４】
本発明の他の特徴によれば、メモリシステムはホストと、フラッシュメモリと、前記フラッシュメモリのマージ状態情報を貯蔵するように構成されたインターフェース装置とを含む。前記インターフェース装置は前記ホストから命令が伝送されるとき、前記マージ状態情報によって漸進的(incremental)マージ動作を実行するか否かを判別する。
【００３５】
この実施形態において、前記インターフェース装置は前記フラッシュメモリがマージ状態にないとき、前記フラッシュメモリにマージ動作が要求されるか否かを判別する。
【００３６】
この実施形態において、前記マージ動作が要求されないとき、前記インターフェース装置は前記入力された命令が処理されるように前記フラッシュメモリを制御する。
【００３７】
この実施形態において、前記フラッシュメモリのマージ動作は少なくとも二つの処理過程を含む。
【００３８】
この実施形態において、前記フラッシュメモリにマージ動作が要求されるとき、前記インターフェース装置は前記マージ動作の一番目の処理過程を実行し、前記マージ動作の次の処理過程を示すように前記マージ状態情報が変更される。
【００３９】
この実施形態において、前記マージ状態情報が前記フラッシュメモリのマージ状態を示すとき、前記インターフェース装置は前記マージ状態情報に従って前記マージ動作の何番目の処理過程が実行されなければならないか否かを判別する。
【００４０】
この実施形態において、前記インターフェース装置は前記判別された処理過程が実行された後、次の処理過程を示すように前記マージ状態情報を変更する。
【００４１】
この実施形態において、前記判別された処理過程が実行された後、前記インターフェース装置は前記マージ動作が完了したか否かを判別する。
【００４２】
この実施形態において、前記マージ動作が完了しなければ、前記インターフェース装置は前記入力された命令が処理されるように前記フラッシュメモリを制御する。
【００４３】
この実施形態において、前記マージ動作が完了すれば、前記インターフェース装置は前記マージ状態情報を初期化させる。
【００４４】
この実施形態において、前記マージ状態情報を初期化させた後、前記インターフェース装置は前記入力された命令が処理されるように前記フラッシュメモリを制御する。
【００４５】
この実施形態において、前記マージ動作が完了したか否かは有効なデータのコピーが完了したか否かによって判別される。
【００４６】
この実施形態において、前記マージ動作が完了したか否かは前記マージ動作の処理過程が全部実行されたか否かによって判別される。
【００４７】
この実施形態において、前記マージ動作が要求されるか否かは前記フラッシュメモリのメモリブロックのうちのいずれか一つに空のページが存在するか否かによって判別される。
【００４８】
この実施形態において、前記インターフェース装置はバッファメモリを含み、前記入力された命令が書き込み命令であるとき、前記マージ動作が実行される間、前記書き込み命令とともに伝送されるデータは一時的にバッファメモリに貯蔵される。
【００４９】
この実施形態において、前記バッファメモリに貯蔵されたデータは前記マージ動作が完了する命令入力サイクルで前記フラッシュメモリに貯蔵される。
【発明の効果】
【００５０】
命令が入力されるごとにマージ動作を漸進的に／部分的に実行することでホストタイムアウトを回避することが可能である。
【発明を実施するための最良の形態】
【００５１】
本発明の例示的な実施形態が参照図に基づいて以下詳細に説明される。本発明の新規なマージ方法によれば、ホストから命令が入力されるごとにマージ動作が実行されなければならないか否かが判別され、判別結果に従ってマージ動作が分散して漸進的に処理される。すなわち、マージ動作は入力された命令の処理サイクル内で一度に処理されるのではなく、以後に入力される命令の処理サイクル内で各々部分的に処理される。すなわち、入力された命令を処理して残った余分の時間の間マージ動作が部分的に実行される。これは以後詳細に説明される。したがって、マージ動作に必要な時間がホストタイムアウト時間を超過しても、マージ動作を漸進的に／部分的に実行することでホストタイムアウトを回避することが可能である。
【００５２】
図４は本発明によるメモリシステムを概略的に示すブロック図である。図４を参照すれば、本発明によるメモリシステム１０００はホスト１００と外部貯蔵装置２００とを含む。外部貯蔵装置２００はインターフェース装置３００とフラッシュメモリ４００で構成される。インターフェース装置３００はホスト１００からフラッシュメモリ４００に対するアクセスが要請されるとき、フラッシュメモリ４００を制御する。例えば、インターフェース装置３００はフラッシュメモリ４００の読み出し／書き込み／消去動作を制御する。それだけではなく、インターフェース装置３００はホスト１００がフラッシュメモリ４００をＳＲＡＭ／ＨＤＤのように読み出し／書き込み／消去動作が自由に実行される媒体として使用されるようにフラッシュメモリ４００のマッピング情報を管理する。
【００５３】
インターフェース装置３００はホストインターフェース３１０、中央処理装置(ＣＰＵ)３２０、ワークメモリ３３０、バッファメモリ３４０、およびフラッシュコントローラ３５０を含む。ホストインターフェース３１０は外部貯蔵装置２００とホスト１００との間のインターフェース機能を提供し、中央処理装置３２０は外部貯蔵装置２００の全般的な動作を制御する。ワークメモリ３３０はＦＴＬ機能を実行するのに必要なソフトウェアを貯蔵するのに使用される。ワークメモリ３３０はまたフラッシュメモリ４００のマッピング情報を貯蔵するのに使用される。フラッシュメモリ４００のマッピング情報はフラッシュメモリ４００に任意の領域（例えば、メタ領域）に貯蔵され、パワーアップ時、ワークメモリ３３０に自動的にロードされる。また、ＦＴＬ機能を実行するのに必要なソフトウェアはフラッシュメモリ４００の任意の領域（例えば、ブートコード領域）に貯蔵され、パワーアップ時ワークメモリ３３０に自動的にロードされる。
【００５４】
さらに、ワークメモリ３３０には漸進的マージ状態を示すマージ状態情報が貯蔵される。中央処理装置３２０は所定命令（例えば、読み出し／書き込み／消去命令）がホスト１００から伝送されるごとにワークメモリ３３０のマージ状態情報を参照して以後説明される漸進的マージスキームを制御する。バッファメモリ３４０はフラッシュメモリ４００にデータを貯蔵しようとする場合、またはフラッシュメモリ４００からデータを読み出す場合、一時的にデータを貯蔵するのに使用される。バッファメモリ３４０は、例えば、フラッシュメモリ４００のページサイズに対応する貯蔵容量を有する。ワークメモリ３２０とバッファメモリ３３０は各々揮発性メモリ（例えば、ＳＲＡＭ）に実現されることができる。フラッシュコントローラ３５０は中央処理装置３２０の制御下でフラッシュメモリ４００のアクセス動作（例えば、読み出し／書き込み／消去動作）を制御するように実現される。
【００５５】
ワークメモリ３３０及びバッファメモリ３４０が同一の機能を実行するように一つのメモリ（例えば、ＳＲＡＭ）に実現されることができることはこの分野の通常の知識を習得した者などに自明である。
【００５６】
フラッシュメモリ４００は複数個のメモリブロックで構成されたメモリセルアレイを含み、各メモリブロックは複数のページで構成される。一つのページは一つのセクタに対応するか、複数のセクタに対応する。メモリセルアレイのメモリブロックは、上述のように、データ領域、ログ領域、およびメタ領域に区分される。また、メモリセルアレイには、一般的に、ブートコードそして／またはＦＴＬを貯蔵するためのメモリブロックがさらに提供される。データフラッシュメモリ４００のアレイ構造が以上の説明に限らないことは自明である。すなわち、ＦＴＬのマッピング技法に従ってメモリセルアレイの構造が多様に実現されることができることはこの分野の通常の知識を習得した者などに自明である。
【００５７】
図５は本発明による漸進的マージ方法を説明するためのフローチャートである。図１乃至図３に説明されたように、マージ動作は多様なマッピング技法（例えば、ブロックマッピング技法、セクタマッピング技法、ログマッピング技法など）を利用して実行される。どんなマッピング技法が外部貯蔵装置に適用されても本発明のマージ方法が適用されることができる。ログマッピング技法が適用されるメモリシステムを基礎にして本発明の漸進的マージ方法が以下詳細に説明される。ログマッピング技法を利用した一般的なマージ方法は図３Ａ乃至図３Ｄに説明され、全般的なマージ動作は同一に実行される。本発明と従来技術の差異は任意のサイクル内でマージ動作が完了するか否かにある。これは以下より具体的に説明されるであろう。
【００５８】
段階Ｓ１００では読み出し、消去、および書き込み命令のうちのいずれか一つの命令がホスト１００から外部貯蔵装置２００に伝送される。命令が入力されれば、ワークメモリ３３０に貯蔵されたマージ状態情報に従って外部貯蔵装置２００が漸進的マージ状態にあるか否かが中央処理装置３２０によって判別される(Ｓ１１０)。もし漸進的マージ状態ではなければ、手続きは次の段階Ｓ１２０に進行する。Ｓ１２０段階ではログ領域のメモリブロックに対するマージ動作が実行されなければならないか否かが判別される。マージ動作を実行しなければならないか否かはログ領域のメモリブロックに空のページが存在するか否かに従って決められることができる。空のページがメモリブロック内に存在するか否かはマッピングテーブルを利用して決められることができる。空のページの数は多様に変更されることができる。例えば、一つの空のページだけがメモリブロックに存在するとき、マージ動作が実行されることができる。本発明の漸進的マージスキームが適用されるメモリシステム及びフラッシュメモリ容量に従って空のページの数が多様に変更されることができる。
【００５９】
もしマージ動作が実行される必要がなければ、入力された命令に対する動作が実行される(Ｓ１３０)。入力された命令が正常に処理された後、外部貯蔵装置２００はホスト１００に入力命令に対応する動作が終わったことを知らせる。この分野の通常の知識を習得した者などによく理解されることができるところのように、入力された命令に対応する動作が決められた時間（例えば、タイムアウト時間）内に正常に実行されれば、ホストタイムアウトは発生しない。もし入力された命令に対応する動作が決められた時間（例えば、タイムアウト時間）内に正常に実行されなければ、ホストタイムアウトが誘発され、外部貯蔵装置２００は初期化される。
【００６０】
Ｓ１２０段階でメモリブロック野に対するマージ動作が実行されなければならないと判別される場合、手続きはＳ１５０_１段階に進行する。Ｓ１５０_１段階では漸進的マージ動作の一番目の処理過程が実行される。マージ動作は、上述のように、多数の処理過程を通じて実行される。例えば、ログマッピング技法によるマージ方法は大きく空のメモリブロックを準備する段階と、ログ領域のメモリブロックに貯蔵された有効データを空のメモリブロックにコピーする段階と、データ領域のメモリブロックに貯蔵された有効データを空のメモリブロックにコピーする段階と、マッピング情報を更新する段階と、などを含む。有効データを空のメモリブロックにコピーする段階はフラッシュメモリのページサイズに従って、再び２段階またはそれより多くの段階に区分されることができる。
【００６１】
この実施形態において、一番目の処理段階は空のメモリブロックを準備する段階とログ領域のメモリブロックに貯蔵された有効データを空のメモリブロックにコピーする段階とを含み、二番目の処理段階はデータ領域のメモリブロックに貯蔵された有効データを空のメモリブロックにコピーする段階とマッピング情報を更新する段階とを含む。マージ動作に必要な時間が有効データを空のメモリブロックにコピーするのに大部分かかるという点を考慮すると、メモリブロックのサイズ（または容量）が増加することに従って有効データをコピーするのに必要な時間が増加する。このような場合、漸進的マージ動作の処理段階が増加する。本発明の漸進的マージ動作が２回の処理過程を通じて実行されることもでき、それより多くの処理過程を通じて実行されることもできることはこの分野の通常の知識を習得した者などに自明である。
【００６２】
マージ動作の一番目の処理過程が実行された後、マージ状態情報は次の処理段階を示すように更新される。漸進的マージ動作の一番目の処理過程が実行された後、マージ動作が完了したか否かが判別される(Ｓ１６０)。例えば、決められた処理段階Ｓ１５０_１−Ｓ１５０＿ｎが全部実行されるとき、マージ動作が完了したと判別されることができる。もしマージ動作が完了しなかったら、手続きはＳ１３０段階に進行する。マージ動作が完了した場合、ワークメモリ３２０に貯蔵されたマージ状態情報値は漸進的マージ状態から解除された(release)ことを示すように初期化される(Ｓ１７０)。以後、入力された命令がＳ１３０段階で正常に処理された後、外部貯蔵装置２００はホスト１００に入力命令に対応する動作が終わったことを知らせる。
【００６３】
その次に、任意の命令が再びホスト１００から外部貯蔵装置２００に伝送されれば(Ｓ１００)、ワークメモリ３３０に貯蔵されたマージ状態情報に従って外部貯蔵装置２００が漸進的マージ状態にあるか否かが中央処理装置３２０によって判別される(Ｓ１１０)。以前の命令の入力に従って一番目の処理過程が実行されたので、手続きはＳ１４０段階に進行してマージ動作の次の処理過程が実行される。二番目の処理過程が完了した後、マージ状態情報は次の処理段階を示すように更新される。その次に、手続きはマージ動作が完了したか否かが判別されるＳ１６０段階に進行する。マージ動作が完了しなかった場合、手続きはＳ１３０段階に進行する。マージ動作が完了した場合、ワークメモリ３２０に貯蔵されたマージ状態情報値は漸進的マージ状態から解除されたことを示すように初期化される(Ｓ１７０)。以後、入力された命令がＳ１３０段階で正常に処理された後、外部貯蔵装置２００はホスト１００に入力命令に対応する動作が終わったことを知らせる。上述の過程は漸進的マージ動作が完了するまで繰り返して実行される。
【００６４】
一旦、外部貯蔵装置２００が漸進的マージ状態に進入すれば、外部貯蔵装置２００は決められた処理段階のうちの一部処理段階を通じてマージ動作が完了したにもかかわらず、決められた処理段階が全部実行されるまでマージ状態にとどまっているようになる。これに反して、マージ動作が完了したか否かを空のメモリブロックに有効データが全部コピーされたか否かを基準にして判別する場合、決められた処理段階のうちの一部処理段階を通じてマージ動作が完了したとき、外部貯蔵装置２００は漸進的マージ状態から解除されてくるようになる。また、漸進的マージ動作が２回の処理段階を通じて完了すると仮定すれば、マージ動作が完了したか否かはマージ状態情報を利用して判別されることができる。言及された判別方法の以外にも予想されることができるすべての判別方法が本発明に適用されることができることはこの分野の通常の知識を習得した者などに自明である。
【００６５】
入力された命令が書き込み、読み出しまたは消去命令の場合、Ｓ１３０段階では入力された命令に対応する書き込み／読み出し／消去動作が実行される。これに反して、入力された命令が書き込み命令の場合、Ｓ１３０段階では入力された命令に対応する書き込み動作が実行されないように漸進的マージ動作が実現されることができる。このような場合、書き込み命令とともに入力されたデータは一時的にバッファメモリ３４０に貯蔵される。次の書き込み命令が入力されれば、漸進的マージ動作の次の過程が実行される。この際、書き込み命令と入力されたデータは一時的にバッファメモリ３４０に貯蔵される。このような動作はバッファメモリ３４０が全部満たされるまで２回またはその以上繰り返して実行されることができる。漸進的マージ動作が完了した後、バッファメモリ３４０に貯蔵されたデータはフラッシュメモリ４００に貯蔵される。
【００６６】
本発明による回路の構成及び動作を上述の説明及び図に従って示したが、これは例をあげて説明したことに過ぎず、本発明の技術的マッピング及び範囲を逸脱しない範囲内で多様な変化及び変更が可能であることはもちろんである。
【図面の簡単な説明】
【００６７】
【図１Ａ】一般的なマージ方法を説明するための図である。
【図１Ｂ】一般的なマージ方法を説明するための図である。
【図２Ａ】一般的なマージ方法を説明するための図である。
【図２Ｂ】一般的なマージ方法を説明するための図である。
【図３Ａ】一般的なマージ方法を説明するための図である。
【図３Ｂ】一般的なマージ方法を説明するための図である。
【図３Ｃ】一般的なマージ方法を説明するための図である。
【図３Ｄ】一般的なマージ方法を説明するための図である。
【図４】本発明によるメモリシステムを概略的に示すブロック図である。
【図５】本発明による漸進的マージ方法を説明するためのフローチャートである。
【符号の説明】
【００６８】
１００    ホスト   
２００    外部貯蔵装置
３００    インターフェース装置   
４００    フラッシュメモリ
３１０    ホストインターフェース
３２０    中央処理装置
３３０    ワークメモリ
３４０    バッファメモリ
３５０    フラッシュコントローラ
【図１Ａ】
2006018839.tif 000003
【図１Ｂ】
2006018839.tif 000004
【図２Ａ】
2006018839.tif 000005
【図２Ｂ】
2006018839.tif 000006
【図３Ａ】
2006018839.tif 000007
【図３Ｂ】
2006018839.tif 000008
【図３Ｃ】
2006018839.tif 000009
【図３Ｄ】
2006018839.tif 000010
【図４】
2006018839.tif 000011
【図５】
2006018839.tif 000012