(57)【要約】フラッシュメモリシステムの迅速スリープ解除を可能にし、しかもフラッシュデータ構造の完全性を損なわず、データを損失する危険がないシステムおよび方法。これは、変換テーブルを前記フラッシュ内に記憶するが、変換テーブルを読み取る時には常に検出可能であるように変換テーブルを無効にするための何らかの手段をソフトウェアに追加することにより達成される。可能なインプリメンテーションとしては、すべての項目の合計をある一定の既知の値に等しくするチェックサム値を追加するか、または記憶されたテーブルに妥当性フラグを追加して、該テーブルを随意に無効にすることを可能にすることが挙げられる。さらに、システムをシャットダウンする前に、変換層内の特定機能を呼び出すようにアプリケーションソフトウェアに要求するべきである。本発明は、アプリケーションソフトウェアが正常に終了し、テーブルが記憶された時に、迅速スリープ解除を可能にする。正常に終了しなかった場合、本発明は、通常のスリープ解除手順を命令して、それによりデータの完全性を確保する。
2004519037.tif 000002
【特許請求の範囲】
【請求項１】
常にデータの完全性を維持するようにフラッシュメモリ素子の迅速スリープ解除を可能にするシステムであって、
ｉ．フラッシュメモリ素子にアクセスするためのハードウェア計算装置と、
ｉｉ．前記ハードウェア計算装置のデータを記憶するための不揮発性フラッシュメモリデータ記憶装置であって、データアクセス要求をフラッシュアクセス要求に変換するために必要な情報を変換層に提供するために、前記フラッシュメモリデータ記憶装置内に少なくとも１つの変換テーブルが存在する記憶装置と、
ｉｉｉ．前記フラッシュメモリ素子の内容にアクセスするためのフラッシュ素子の低レベルのソフトウェアアクセスルーチンと、
ｉｖ．前記不揮発性フラッシュメモリ素子の仮想ビューをランダムアクセス記憶装置として提示するための変換層と、
ｖ．ホストコンピュータのオペレーティングシステムと、その他の何らかのソフトウェアプログラムとから成る群から選択されたソフトウェア機構であって、前記ハードウェア計算装置のデータを処理することを可能にするためのソフトウェア機構と、
ｖｉ．前記変換テーブルへのアクセスおよび前記変換テーブルの使用を制御し、前記システムの迅速スリープ解除を可能にするためのソフトウェアと、
を備えるシステム。
【請求項２】
前記ソフトウェアが、チェックサム値を用いて前記変換テーブルの妥当性を制御する、請求項１に記載のシステム。
【請求項３】
前記ソフトウェアが、妥当性フラグを用いて前記変換テーブルの妥当性を制御する、請求項１に記載のシステム。
【請求項４】
フラッシュメモリ素子の迅速スリープ解除を可能にするための方法であって、
ｉ．少なくとも１つの変換テーブルを前記フラッシュメモリ素子内に記憶するステップと、
ｉｉ．前記フラッシュメモリ素子の前記テーブルを無効にするためのソフトウェア手段を追加するステップと、
ｉｉｉ．前記フラッシュメモリ素子の正常なシャットダウンを検証し、迅速スリープ解除を可能にするための機能を変換層に提供するステップと、
を含む方法。
【請求項５】
前記機能が、正常なシステムのシャットダウンの前に、前記変換テーブルの最新のコピーを記憶するための命令をさらに含む、請求項４に記載の方法。
【請求項６】
前記ソフトウェア手段がチェックサム値である、請求項４に記載の方法。
【請求項７】
前記ソフトウェア手段が妥当性フラグである、請求項４に記載の方法。
【請求項８】
データの完全性を確保するように、フラッシュメモリシステムの迅速スリープ解除を可能にするための方法であって、
Ｉ．スリープ解除時：
ｉ．前記フラッシュメモリシステムから変換テーブルを読み取るステップと、
ｉｉ．前記変換テーブルが有効であると判明した場合
ｉｉａ．−前記テーブルを無効にするステップと、
ｉｉｂ．−前記フラッシュメモリシステム全体を走査する必要なく前記テーブルを使用するステップと、
ｉｉｉ．その他
ｉｉｉａ．−前記フラッシュメモリシステムを走査し、更新された変換テーブルを構成するステップと、
ｉｉｉｂ．−ｉｉｂ項のようにテーブルを使用するステップと、
Ｂ．フラッシュメモリシステムがシャットダウンの前に通知された場合、次のスリープ解除時に有効と認識されるように、前記テーブルの更新されたコピーを前記フラッシュメモリシステム内に記憶するステップと、
を含む方法。
【請求項９】
ａ．前記フラッシュメモリシステムを使用するアプリケーションソフトウェアが正常に終了し、更新された変換テーブルを記憶した場合、前記アプリケーションソフトウェアが、次回のスリープ解除で前記テーブルを使用することを可能にするステップと、
ｂ．前記アプリケーションソフトウェアが異常終了した場合、前記アプリケーションソフトウェアが通常のスリープ解除手順を開始するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記テーブルの前記無効化が、スリープ解除後であって、前記フラッシュメモリシステムに最初にアクセスしてフラッシュの内容に変更が加えられる以前の、後のある時点まで遅延される、請求項８に記載の方法。
【請求項１１】
前記テーブルの前記無効化が、スリープ解除後であって、前記フラッシュメモリシステムに最初にアクセスしてフラッシュの内容に変更が加えられる以前の、後のある時点まで遅延される、請求項９に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、フラッシュメモリ素子が、迅速スリープ解除能力を使用することを可能にし、しかもデータの完全性が確保されるシステムおよび方法に関する。これは、フラッシュメモリ素子を使用してソフトウェアドライバまたはファイルシステムを初期化（マウント）する時の時間遅延の潜在的な問題を解決する。
【０００２】
コンピュータのデータ記憶装置にフラッシュメモリ素子を使用するには、従来、ホストコンピュータのオペレーティングシステムと装置の低レベルのアクセスルーチンとの間に存在するあるソフトウェア変換層が必要である。これは、フラッシュ技術には使用上の制約がいくつかあり、単純なランダムアクセス線形方法でフラッシュ技術を利用することが不可能だからである。主な制約は、任意の所望のメモリロケーションにランダムに上書きすることができず、新しい内容をフラッシュメモリロケーション内に配置するには、先ず当該ロケーションを含むブロック全体を消去しなければ（その他の記憶域の内容を保存する必要がある）、新しい内容を書き込むことはできない点である。
【０００３】
変換層は、各データセクタのランダムアクセスによってアドレス指定が可能なアレイの仮想ビューをホストのオペレーティングシステムに提示し、フラッシュ媒体内の実在のロケーションに対するこれら仮想アドレスのマッピングの詳細すべてを隠蔽して管理する。この変換機構は決して平凡なものではなく、Ａｍｉｒ  Ｂａｎの米国特許第５，９３７，４２５号に見られるフラッシュメモリ変換層の一例であり、この特許は本明細書に援用する。この特許は、仮想フラッシュアドレスと物理フラッシュアドレスとの間のマッピング機構を実施する方法を示している。こうしたシステムのもう１つの例は、フラッシュメモリ素子のこうした機能を管理するために必要なソフトウェア管理システムを開示する米国特許第５，４０４，４８５号に詳細に記載されており、この特許は、本明細書に援用する。
【０００４】
変換処理は、ホストコンピュータのデータアクセス要求を実際のフラッシュアクセス要求に変換するために必要な情報をソフトウェアに提供する内部変換テーブルを使用する。これらのテーブルは、フラッシュ素子内に記憶された制御情報に基づいて、システムスリープ解除時（または、ホストのソフトウェアが要求した場合は、スリープ解除時より遅い時点）にソフトウェアによって構成される。こうしたテーブルを構成するのではなく、フラッシュからの生制御データのみを使用することは理論上可能だが、アクセス要求に対する応答時間が遅すぎるため、実際上は使用に適さない。これは、フラッシュ上のデータにアクセスするのは、通常のコンピュータのＲＡＭメモリにアクセスするよりはるかに遅く、またメモリテーブルは、一般に、実行時に必要な動作のタイプにおける効率の点で最適化されるが、フラッシュ記憶制御データはそうではないためである。たとえば、フラッシュ物理装置は、そこにマッピングされる仮想装置の番号を含むことができる。プログラムの実行時、仮想装置番号をその物理的対応物に変換する必要が頻繁にある。フラッシュ記憶制御データしか使用できない場合、指定の仮想装置番号を有する装置を見つけるまですべての装置を走査しなければならず、これは、単純な媒体アクセス基準により、非常に長時間を要する処理である。しかし、システムスリープ解除時に１回フラッシュ素子を走査し、各仮想装置番号を対応する物理装置番号にマッピングするテーブルを構成することにより、こうしたマッピングを非常に効率的に後で行うことができる。
【０００５】
【問題点】
システムのスリープ解除時にフラッシュデータ記憶装置を走査するには、特に大容量装置の場合、長時間を要する。これは、ユーザが直ちにターンオンすることを期待するシステムおよび装置（つまり、携帯電話、ＰＤＡなど）の場合、特に面倒である。テーブルをフラッシュに記憶するという明白な解決法は、コンピュータが実行可能なコードであって、ユーザが変更できないコードのみを記憶するフラッシュ素子などの読取り専用装置の場合に効果がある。しかし、この解決法は、頻繁に変化する可能性があるデータ（ＰＤＡ内のテキストファイルまたはスプレッドシート）を記憶するために使用される装置を使用する場合は成功しないであろう。これは、継続的に装置に書き込み、その内容を変更する場合、変換テーブルの内容も変化するからである。フラッシュ内のテーブルがメモリ内で変化する度にそのコピーを更新することは、生じるオーバヘッドがシステムを著しく遅延させるため実際的ではない。したがって、フラッシュ内に記憶されたテーブルとメモリ内の「正確な」テーブルとの相違が蓄積される。したがって、ユーザが電源を切り、テーブルを更新せずに再び電源を投入する場合、ソフトウェアはフラッシュから不正確な変換テーブルを読み取り、新しいデータを書き込む時にデータの損失が生じる可能性がある。
【０００６】
したがって、フラッシュデータ構造の完全性を損なわず、データ損失の危険がない状態で、フラッシュメモリシステムを迅速にスリープ解除することできるシステムに対する広く認識された必要性があり、こうしたシステムを有することは非常に好都合である。さらに、システム性能を著しく低下させずに、これを行う必要がある。
【０００７】
本発明により、この問題は、変換テーブルをフラッシュ内に記憶するが、何らかの手段をソフトウェアに追加して、変換テーブルを読み取る時は常に検出可能であるように変換テーブルを無効にすることにより解決される。唯一のインプリメンテーションではなく、考えられるインプリメンテーションとしては、すべての項目の値をある一定の既知の値に等しくするチェックサム値を追加するか、または妥当性フラグを記憶テーブルに追加することが挙げられる。さらに、システムをシャットダウンする前に、変換層内の特定機能を呼び出すように、アプリケーションソフトウェアに要求するべきである。
【０００８】
これらの方法では、フラッシュメモリ素子は、システムが正常にシャットダウンした時に迅速なスリープ解除を開始し、システムが異常にシャットダウンした時には通常のスリープ解除に戻ることができる。
【０００９】
【発明の概要】
本発明により、変換テーブルをフラッシュメモリ内に記憶するが、何らかの手段をソフトウェアに追加して、変換テーブルを読み取る時は常に検出可能であるように変換テーブルを無効にするシステムを提供する。このシステムは、以下から構成される：
ｉ．ハードウェア計算装置、
ｉｉ．フラッシュ素子にアクセスするために使用する少なくとも１つの変換テーブルを有する不揮発性フラッシュメモリデータ記憶装置、
ｉｉｉ．フラッシュ素子の低レベルのソフトウェアアクセスルーチン、
ｉｖ．各データセクタのランダムアクセスによってアドレス指定が可能なアレイの仮想ビューを上位ソフトウェアレベルに提示するための変換層、
ｖ．ホストコンピュータのオペレーティングシステム、または変換層の上のその他の何らかのソフトウェア層、
ｖｉ．変換テーブルに対するアクセスおよび変換テーブルの使用を制御するためのソフトウェア。
【００１０】
本発明は、変換テーブルと、コンピュータの記憶装置を迅速にスリープ解除することを可能にするソフトウェアとを含む不揮発性メモリシステムを提供する。本発明は、フラッシュ内に変換テーブルを記憶するためのシステムを具体化するほか、ソフトウェアに何らかの手段を追加して、変換テーブルを読み取る時は常に検出可能であるように変換テーブルを無効にする方法に関する。唯一のインプリメンテーションではなく、考えられるインプリメンテーションとしては、すべての項目の合計をある一定の既知の値に等しくするチェックサム値を追加するか、またはテーブルに妥当性フラグを追加することが挙げられる。データを無効にしたい時には、チェックサム値（もしくは、テーブル内のその他の項目）を変更し、合計が予想値と異なるようにするか、またはチェックサムではなく妥当性フラグを使用する場合、単にフラグの値を変更して無効状態を指示すれば良い。さらに、システムをシャットダウンする前に、変換層内の特定の機能を呼び出すように、アプリケーションソフトウェアに要求する。
【００１１】
本発明の好ましい実施態様により、常にデータの完全性を維持しつつ、メモリ素子の迅速なスリープ解除を可能にするための方法であって、以下のステップを含む方法を提供する：
（ａ）少なくとも１個の変換テーブルをフラッシュメモリ構成要素内に記憶するステップと、
（ｂ）スリープ解除後にテーブルを無効にするためのソフトウェア手段を追加するステップと、
（ｃ）フラッシュメモリ構成要素の正常なシャットダウンを検証するための特定の機能を変換層に提供し、変換テーブルの最新のコピーをフラッシュ素子内に記憶し、迅速なスリープ解除を可能にするステップ。
【００１２】
本発明の好ましい実施態様により、迅速なスリープ解除およびデータの完全性を確保するための方法であって、以下のステップを含む方法を提供する：
ｉ．アプリケーションソフトウェアが正常に終了し、装置が、更新されたテーブルを記憶した場合、次にスリープ解除すると、テーブルを使用して、迅速にターンオンすることができる。
ｉｉ．アプリケーションソフトウェアが異常終了した場合、通常のスリープ解除手順が開始し、データの完全性が確保される。
【００１３】
ソリッドステート記憶システム開発の当業者は、本明細書に記載する発明に相当する方法およびシステムを使用して、その他の実施態様を開発することができると考えるべきである。上記の実施態様は一例であり、いかなる点でも、本明細書に記載する技術をこれらの実施例のみに限定する意図はないと考えるべきである。
【００１４】
本発明について、添付の図面を参照して例としてのみ本明細書で説明する。
【００１５】
【好適な実施態様の詳細な説明】
本発明は、コンピュータのデータ記憶装置に使用されるフラッシュメモリ素子の迅速スリープ解除を可能にするシステムおよび方法である。
【００１６】
特に、本発明は、変換テーブルを読み取る時には常に検出可能であるように変換テーブルを無効にすることによりこうした迅速スリープ解除を可能にすることができる。
【００１７】
本発明によるこうしたシステムの原理および動作は、図面および添付の明細書に関連してより良く理解することができる。
図１は、本発明の基本的な構成要素および動作を好ましい用途について示す。本発明の構成要素は、以下を備える：
ｉ．フラッシュメモリ素子にアクセスするハードウェア計算装置１２；
ｉｉ．ハードウェア計算装置１１のデータを記憶するための不揮発性フラッシュメモリデータ記憶装置であって、上位層のデータアクセス要求をフラッシュアクセス要求に変換するために必要な情報を変換層（ｉｖ項参照）に提供するために、少なくとも１つの変換テーブル１３が存在する装置；
ｉｉｉ．フラッシュ素子の内容にアクセスするためのフラッシュ素子の低レベルのソフトウェアアクセスルーチン１６；
ｉｖ．ランダムアクセス記憶装置の仮想ビューを上位ソフトウェアレベルに提示する変換層１０；
ｖ．ホストコンピュータのオペレーティングシステム、またはデータの処理を可能にするために変換層の上にその他の何らかのソフトウェア層１５を含むソフトウェア機構；
および
ｖｉ．変換テーブルへのアクセスおよび変換テーブルの使用を制御するためのソフトウェア１４。
【００１８】
図１によると、１つの変換テーブルまたは複数の変換テーブル１３がフラッシュメモリ１１内に記憶されることが判明する。また、変換テーブルを読み取る時は常に検出可能であるように変換テーブルを無効にするための何らかの手段をソフトウェア１４に提供する。唯一のインプリメンテーションではなく、考えられるインプリメンテーションは、すべての項目の合計をある一定の既知の値に等しくするか、または妥当性フラグをテーブルに追加することである。データを無効にしたい場合、単にチェックサム値（もしくはテーブル内のその他の項目）を変更し、合計が予想値と異なるようにするか、またはチェックサムではなく妥当性フラグを使用する場合、単にフラグの値を変更して無効状態を指示すれば良い。データを無効にしたい理由は、殆どのスリープ解除時のスリープ解除時間を迅速化するとともに、装置が正しくシャットダウンせず、記憶されたテーブルが最新ではない場合にも、スリープ解除時に不正確なテーブルを使用しないようにすることである。さらに、システムをシャットダウンする前に、変換層１０内の特定の機能を呼び出すように、アプリケーションソフトウェアに要求する。こうして、ソフトウェアは、シャットダウンする前に変換テーブル１３の最新のコピーをフラッシュメモリ１１内に保存することができる。
【００１９】
以下のアルゴリズムは、図２に示すようにインプリメントされる：
Ａ．スリープ解除時２０
変換テーブルをフラッシュメモリ素子から読み取る２１。
変換テーブルが有効であると判明した場合２２
−予期しないシャットダウンに対する保護として、テーブルを無効にする２３。
−テーブルを使用し２４、フラッシュメモリシステム全体を走査する必要がない。
その他（つまり、テーブルが有効ではない）２５
−フラッシュメモリシステムを走査し２６、更新された変換テーブルを構成する２７。
−上記のようにテーブルを使用する２４。
Ｂ．フラッシュメモリシステムのシャットダウンが通知された場合３０、次のスリープ解除時に有効と認識されるように３２、テーブルの現在のコピーまたは最近に更新されたコピーをフラッシュメモリシステム内に記憶する３１。
【００２０】
上記のアルゴリズムの結果は、以下の通りである：
−アプリケーションソフトウェアが正常に終了し、テーブルを記憶した場合、次のスリープ解除でテーブルを使用して、迅速起動／スリープ解除が可能である。
−正常に終了しない場合、スリープ解除時間を改善しなくても、なおデータの完全性が保たれる。
【００２１】
【可能な変形】
テーブルの無効化は、システムのスリープ解除後のある時点であって、なおかつフラッシュの内容に最初に変更が加えられる時以前のある時点まで遅延させることができる。したがって、システムが、フラッシュ内に新しいデータが書き込まれない状態でシャットダウンされた場合、システムが事前に通知なくシャットダウンしたとしても、次回に迅速起動を行うことができるだろう。
【００２２】
本発明について、限られた数の実施態様に関して説明してきたが、本発明の多くの変形、変更およびその他の用途が可能であることが分かるであろう。
【図面の簡単な説明】
【図１】
本発明の構成要素、およびこれら構成要素間の相互作用を示す。
【図２】
システムのスリープ解除からシャットダウンまでのステップを示す。
【図１】
2004519037.tif 000003
【図２】
2004519037.tif 000004
【国際公開パンフレット】
2004519037.tif 000005
2004519037.tif 000006
2004519037.tif 000007
2004519037.tif 000008
2004519037.tif 000009
2004519037.tif 000010
2004519037.tif 000011
2004519037.tif 000012
2004519037.tif 000013
2004519037.tif 000014
2004519037.tif 000015
2004519037.tif 000016
2004519037.tif 000017
2004519037.tif 000018
【国際調査報告】
2004519037.tif 000019