(57)【要約】【課題】高速にページをスワップアウトでき、少ないメモリ容量で多くのアプリケーションを的確に使用することができる記憶装置およびコンピュータシステム、並びに記憶装置の管理方法を提供する。【解決手段】コンピュータシステム１０は、ファイルをフラッシュメモリデバイス１７の仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、フラッシュメモリデバイス１７の物理ページアドレスを発生させる機能と、物理ページアドレスに従ってフラッシュメモリデバイス１７にファイルを格納するとともに、この論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む。【選択図】図５
2008217208.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリデバイスと、
アプリケーションが使用するメモリ空間を一定サイズに分割し、その一部内容をファイルにして、上記フラッシュメモリデバイスに格納するスワップアウト手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、
上記スワップアウト手段は、
上記ファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む
コンピュータシステム。
【請求項２】
上記フラッシュメモリデバイスにおいては、
上記スワップアウト用特定アドレス範囲を除く論理ページアドレス領域の少なくとも一部がユーザーデータを含む一般ファイルの保存に使用され、
当該ファイルも同一のルックアップテーブルによりアドレス変換が管理され、スワップアウトした上記ファイルと混在して上記フラッシュメモリデバイス上に格納される
請求項１記載のコンピュータシステム。
【請求項３】
上記スワップアウトしたファイルと一般ファイルは、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上に混在的に確保される
請求項２記載のコンピュータシステム。
【請求項４】
上記フラッシュメモリデバイスと、
上記フラッシュメモリデバイスにファイルを格納する格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、
上記格納手段は、
任意のファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の任意の場所に仮想的に格納する機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
コンピュータシステム。
【請求項５】
主記憶媒体としてのフラッシュメモリデバイスと、
第２メモリと、有し、
ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、
上記ファイル格納手段は、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録する機能と、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
記憶装置。
【請求項６】
主記憶媒体としてのフラッシュメモリデバイスと、
第２メモリと、有し、
ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、
上記ファイル格納手段は、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録する機能と
ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
記憶装置。
【請求項７】
主記憶媒体としてのフラッシュメモリデバイスと、
第２メモリと、有する記憶装置の管理方法であって、
上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含むように形成するステップと、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録するステップと、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップと
を有する記憶装置の管理方法。
【請求項８】
主記憶媒体としてのフラッシュメモリデバイスと、
第２メモリと、有する記憶装置の管理方法であって、
上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含むように形成するステップと、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、
当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録するステップと、
ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップと
を有する記憶装置の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリデバイスを含む記憶装置およびコンピュータシステム、並びに記憶装置の管理方法に係り、特に、仮想メモリを使用し、二次記憶としてフラッシュメモリデバイスを使用する技術に関するものである。
【背景技術】
【０００２】
近年、コンピュータシステムは巨大なアプリケーションを複数起動するケースが増えており、それに伴って益々多くのシステムメモリ、特にＤＲＡＭやＳＲＡＭに代表されるＲＡＭ（ランダムアクセスメモリ）を必要とするようになっている。
特に、近年は携帯電話等のモバイルコンピュータにおいても同様の傾向が見られ、それに対応して、ＲＡＭを有効利用するための効率的なメモリ管理が要求されている。
【０００３】
その代表的な管理手法にＯＳ（オペレーティングシステム）による仮想メモリ管理が挙げられる。
図１はＯＳによる仮想メモリ管理の概要を示す図である。
【０００４】
図１の例においては、２つのアプリケーションＡＰ１、ＡＰ２が互いに独立した各々４ＧＢの仮想メモリ空間ＶＭ１、ＶＭ２を使用している。
それらのメモリ空間ＶＭ１、ＶＭ２は複数のページに分割されており、必要応じて実際には２５６ＭＢのＲＡＭ上の物理メモリ空間ＲＭに動的にマッピングされる。これらのマッピング情報はＲＡＭ内に構成されたページテーブルＰＴに格納されている。
【０００５】
このようなマッピングはＯＳによって管理されるが、近年はＣＰＵもその一部機能をサポートしており、たとえばページテーブルの一部をＣＰＵ内部にキャッシュし、ＣＰＵ内で高速にアドレス変換する機能等を備えている。
【０００６】
このような管理を使用すれば、各アプリケーションは他のアプリケーションの存在を気にすること無く自由にメモリ空間を使用でき、かつ特定のアプリケーションが暴走して他のアプリケーションのデータを破壊する等の問題も防止できる。
【０００７】
しかし、このような管理を実施した場合、多くのアプリケーションが起動すると、仮想メモリ空間上は余裕があるのに、ＲＡＭ上の物理メモリ空間が満杯になってしまうケースがしばしば発生する。
このような場合には、仮想メモリ空間上で物理メモリ空間を使用しつつも使用頻度が少ないページが選択され、そのスワップアウトが実施される。ページのスワップアウトはそのようなページのデータを、まずＨＤＤ等の二次記憶装置に退避させ、その後対応する物理メモリ上の対応ページを破棄して空き領域を確保する作業である。
【０００８】
ところで、携帯電話における二次記憶装置には、通常消費電力が小さく実装にも有利なフラッシュメモリデバイスが使用される。また、近年はノートパソコンの二次記憶装置としてもフラッシュメモリデバイスが使用される傾向がある。
そのようなケースでは、ページのスワップアウトはフラッシュメモリデバイスに対して実施されることになる。具体的にはその記憶領域中にページスワップ用の特定領域を確保し、そこにページのスワップアウトを実施する。
【非特許文献１】ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、上述のようなページスワップの用途に対して、フラッシュメモリは必ずしも適したデバイスでは無い。
【００１０】
図２は、代表的なフラッシュメモリであるＮＡＮＤ型フラッシュメモリの簡単な構成例示す図である。
【００１１】
フラッシュメモリ１において、たとえば、同一ワード線に接続されたセル群２は一括書き込み、および読み出しの単位であり、ページと称される。ここでは前述の仮想メモリ管理に使用されるページと区別してページセグメントと呼ぶ。さらに複数ページセグメントで構成されたセルアレイ３は一括消去の単位であり、ブロックと称される。フラッシュメモリ１全体は複数のブロックにより構成されている。
【００１２】
フラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ｍ秒もの時間がかかる。
【００１３】
これらは高並列処理によってある程度はカバーされている。たとえば非特許文献１（ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４）には１ＧｂのＮＡＮＤ型フラッシュメモリが掲載されており、ページセグメントのサイズを約２ｋバイト、消去ブロックサイズを約１２８ｋＢとしている。
このように１２８ｋバイトのセル群を並列消去し、さらに２ｋバイトごとの並列プログラムを行っていくことによって、１０ＭＢ／ｓのプログラム転送速度を実現している。
【００１４】
しかし、消去ブロック内の小領域を部分的に書き換え用とした場合、そのパフォーマンスは極端に悪化する。
【００１５】
図３は、たとえば消去ブロック内の１ページセグメントのみを書き換える際の通常の手順を示す図である。
現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
【００１６】
図３において、４はアドレス変換テーブルを示しており、論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  ＝ＬＢＡ）をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス（Ｐｈｉｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  ＝ＰＢＡ）を取得することができる。
たとえば、ホストまたはアプリケーションが“０ｘ５５”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“０ｘ６Ｂ”に変換され、フラッシュメモリ１の消去ブロック５にアクセスが実施される。
【００１７】
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
１．予め予備の消去済みブロック７を用意しておく。その物理アドレスは”０ｘＡＡ”とする。
２．論理ブロックアドレス“０ｘ５５”が指定され、対応する物理ブロックアドレス”０ｘ６Ｂ”が取得され、ブロック５内のページセグメント６にアクセスがなされたとする。このとき、フラッシュメモリの書き換え対象ブロック５から、別途設けられたページバッファ９を介して、予備ブロック７にデータを順次コピーしていく。
３．更新対象となるページセグメント６のコピー時には、ページバッファ９上で所望の箇所を更新してコピーを行い、コピー先ページセグメント８にそれが反映される。
４．有効なページセグメントのデータのコピーが全て完了したら、アドレス変換テーブル４上で、ブロック５と予備ブロック７のアドレスを張り替える。
５．最後に元ブロック５の消去を実施する。
【００１８】
このような手順によって、以降論理ブロックアドレス“０ｘ５５”に対しては、物理ブロックアドレス“０ｘＡＡ”に対応する消去ブロック、すなわち７がアクセスされるようになり、全体との整合性が保たれる。
しかしこの場合、１ページセグメントを更新するために、ブロック５のデータ全体を予備ブロック７に退避させる作業が必要であり、そのためにブロック５内の全データのページバッファ９への読み出しと、予備ブロック７への書き込みが必要になる。従って現実の転送性能は著しく低いものになってしまう。
【００１９】
さらに、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にＮＡＮＤ型フラッシュには、ブロック内の各ページセグメントの書き込み順序に制約がつくようになった。
すなわち、各ページセグメントの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページセグメントに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、ブロック全体を消去しない限りそこにデータを書き込むことはできない。
【００２０】
ところで、通常仮想メモリのスワップ単位である１ページは、４ｋバイト程度である。このようなフラッシュメモリにスワップアウトされたページファイルを格納していくと、暫くすれば無効なページファイルが蓄積し、論理アドレス上、図４のような虫食い状態になる。
【００２１】
ここで無効なページファイルとは、次のようなものである。スワップアウトされたページファイルが再度アプリケーションで使用される場合、それらはフラッシュメモリからＲＡＭ内に読み出されるが、それがＲＡＭ内で更新されると、もはやフラッシュメモリに格納された旧ページファイルは不要となって破棄される。
しかし、フラッシュメモリの消去ブロックを部分的に消去することはできないので、それらのページファイルは無効なデータとしてフラッシュメモリ上に残される。
【００２２】
一旦確保した論理アドレス領域が使い尽くされれば、それ以降ストレージ内は図４のような状態が普通になる。そのとき新規にスワップアウトされたページファイルの書き込みは、無効データを上書きする形で実施されるしか無い。
したがって、スワップアウトが実施される都度に図２の冗長な作業を繰り返すことになり、フラッシュメモリへの書き込みパフォーマンスは著しく悪化してしまう。
【００２３】
本発明は、高速にページをスワップアウトでき、少ないメモリ容量で多くのアプリケーションを的確に使用することができる記憶装置およびコンピュータシステム、並びに記憶装置の管理方法を提供することにある。
【課題を解決するための手段】
【００２４】
本発明の第１の観点のコンピュータシステムは、フラッシュメモリデバイスと、アプリケーションが使用するメモリ空間を一定サイズに分割し、その一部内容をファイルにして、上記フラッシュメモリデバイスに格納するスワップアウト手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、上記スワップアウト手段は、上記ファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む。
【００２５】
本発明の第２の観点のコンピュータシステムは、上記フラッシュメモリデバイスと、上記フラッシュメモリデバイスにファイルを格納する格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、上記格納手段は、任意のファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の任意の場所に仮想的に格納する機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
【００２６】
本発明の第３の観点の記憶装置は、主記憶媒体としてのフラッシュメモリデバイスと、第２メモリと、有し、ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、上記ファイル格納手段は、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録する機能と、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
【００２７】
本発明の第４の観点の記憶装置は、主記憶媒体としてのフラッシュメモリデバイスと、第２メモリと、有し、ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含み、上記ファイル格納手段は、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録する機能と、ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
【００２８】
本発明の第５の観点は、主記憶媒体としてのフラッシュメモリデバイスと、第２メモリと、有する記憶装置の管理方法であって、上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含むように形成するステップと、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録するステップと、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップとを有する。
【００２９】
本発明の第６の観点は、主記憶媒体としてのフラッシュメモリデバイスと、第２メモリと、有する記憶装置の管理方法であって、上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み／読み出し単位である複数のページ領域を含むように形成するステップと、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第２メモリ内に形成されたルックアップテーブルに記録するステップと、ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップとを有する。
【発明の効果】
【００３０】
本発明を採用すれば、パソコンや携帯電話において仮想メモリを活用し、ＲＡＭを効率良く使用しつつ、フラッシュメモリを用いた安価な二次記憶に高速にページをスワップアウトでき、少ないＲＡＭ容量で多くのアプリケーションを快適に使用することができる。また、その際フラッシュメモリデバイスは一般ファイルの格納にも使用でき、それについても快適で効率の良いアクセスが可能である。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施形態を図面に関連付けて説明する。
【００３２】
図５は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【００３３】
本コンピュータシステム１０は、ホスト処理装置であるＣＰＵ１１、ＲＡＭからなるシステムメモリ（以下、ＲＡＭＴという）１２、システムバス１３、ブリッジ回路１４、ページバッファ１５、符号化および復号化回路１６、およびＮＡＮＤ型フラッシュメモリ１７を主構成要素として有している。
システムメモリ１２は、下位アドレス領域１８、中間領域１９、および上位アドレス領域を含む。
【００３４】
本コンピュータシステム１０において、ＣＰＵ１１は３２ビットのシステムバス１３を介してシステムメモリであるＲＡＭ１２と接続されている。さらに、システムバス１３にはブリッジ回路１４を介してＮＡＮＤ型フラッシュメモリデバイス１７が接続されている。
ページバッファ１５はアクセスされたページ領域を一時記憶するバッファであり、符号化および復号化回路１６はエラー訂正用に設けられた回路であり、両者はブリッジ回路（１４）に内蔵されている。
【００３５】
ブリッジ回路１４はＣＰＵ１１から各種コマンドを受け取り、フラッシュメモリデバイス１７とＣＰＵ１１またはシステムメモリ１２との間のデータのやり取りを、ページバッファ１５を用いて媒介する。
また、ブリッジ回路１４に内蔵された符号化および復号化回路１６は、ページバッファ１５のデータを符号化してフラッシュメモリデバイス１７の所定ページに転送し、あるいはフラッシュメモリデバイス１７から読み出されたデータを復号化してページバッファ１５に転送する。
ブリッジ回路１４が受け取るコマンドは、たとえばフラッシュメモリデバイス１７の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
【００３６】
一方、システムメモリ１２内には、下位アドレス領域１８にＯＳと、仮想メモリのマッピングを管理するためのページテーブルが常駐している。また、中間領域１９にはフラッシュメモリデバイス１７を管理するためのドライバと、この管理用の各種テーブル、ポインタ類が常駐している。さらに、上位アドレス領域２０には、上記ページテーブルに従って各アプリケーションの仮想メモリ領域からマッピングされたページが格納されている。
【００３７】
図６は、図５のコンピュータシステムのメモリ管理手順を示す図である。
図６において、２０はＲＡＭ１２の物理メモリ領域（空間）を、２１は仮想メモリ領域を、２２は仮想（論理）アドレス空間を、２３は物理アドレス空間を、２４はページテーブルを、２５はページセグメント変換テーブルを、２６は格納データを、２７はＲＡＭ上の対応領域を、２８〜３０はメモリ領域、３１はアドレス領域を、３２は消去ブロックをそれぞれ示している。
以下に、コンピュータシステム１０のメモリ管理手順を図６に関連付けて説明する。
【００３８】
ＯＳはページテーブル２４を用いて、アプリケーションの仮想メモリ領域２１のイメージを、ＲＡＭ１２の物理メモリ領域（空間）２０に４ｋＢのページ単位でマッピングする。しかし、メモリ領域２０に空き余裕がなくなると、使用頻度の少ないページ、たとえばデータ２６をファイルにしてフラッシュメモリデバイス１７に格納し、ＲＡＭ１２内の対応領域２７を破棄して空きを作る。
なお、データ２６がＲＡＭ１２上で更新されていなければ、フラッシュメモリデバイス１７への格納は省略できる。
ここでＯＳが扱うフラッシュメモリデバイス１７のアドレスは仮想的な論理アドレスであり、そのページセグメントの仮想アドレス空間２２において、スワップアウトするファイル格納用に、限定された１ＧＢのアドレス領域３１が確保されている。
なお、フラッシュメモリデバイスの各ページセグメントは、たとえば４ｋバイトのサイズを有し、スワップアウトされるページ１枚が格納される。上記アドレス領域は約２５０ｋ個のページセグメントに対応する。
【００３９】
ＯＳはその中から、既に格納ファイルが破棄されたページセグメントを探査し、その中の１つ、たとえば領域２８にページファイルを仮想的に格納する。こうしてＲＡＭ１２内に常駐するドライバには格納先の論理アドレスが渡される。
一方ドライバは、上記論理アドレスの格納範囲とは独立に、フラッシュメモリデバイス１７内で消去済みの空きブロックを検索し、その先頭ページセグメントから、下詰のアドレスで各ページファイルを格納するように、ページセグメントの物理アドレスを発生させる。こうして選択された消去ブロック３２内の最下位アドレスの空きページセグメント２９にページファイルは格納され、しかる後に上記論理アドレスと物理アドレスとの対応が、ページセグメント変換テーブル２５に記載される。
【００４０】
ところでＯＳは、ユーザーデータを含む一般ファイルの格納にもフラッシュメモリデバイス１７を使用することができる。それらは上記スワップアウト用の論理アドレス領域３１除く、たとえば“０ｘ０００００”〜“０ｘＢＦＦＦＦ”の領域内の一部に格納される。
この場合もスワップアウトしたページファイルと同様に、書き込み時には格納先の物理アドレスを発生させ、同じページセグメント変換テーブル２５を使って論理アドレスと物理アドレスとの対応を記載すれば良く、両者は統合的に管理することができる。また、両者を格納するページセグメントの物理アドレスは、論理アドレスで設定された格納範囲とは独立して設定できる。
したがって、両者はページセグメント単位、或いはブロック単位で互いに混在させてフラッシュメモリデバイス内に保存することが可能である。たとえば領域２９の次のページセグメント３０にユーザーデータを格納しても良い。
【００４１】
次に、図７に関連付けて、フラッシュメモリデバイスへのページファイルの書き込みについて、より詳しく説明する。
【００４２】
ページセグメント変換テーブル２５は上記ページセグメント変換テーブルであり、ページセグメント単位でアドレス変換を実施する。また、検索テーブル４１は各ブロックが消去された空きブロックか否かをフラグで示している。ライトポインタ４２にはファイル格納先のページセグメントの物理アドレスが格納されている。物理アドレスは消去ブロックのブロックアドレスと、ブロック内のページセグメントオフセットよりなる。
なお、ここでは１ページセグメントにページファイル１単位が格納されるとする。格納先のページセグメントの論理アドレス（ＬＰＡ）は“０ｘＣ０００２”とする。
【００４３】
ステップＳ７１：
図５のページバッファ１５に、スワップアウトしたページファイルが転送される。
【００４４】
ステップＳＴ２：
上記ページファイルのフラッシュメモリデバイス１７への書き込み先として、ＲＡＭ領域１９に常駐した検索テーブル４１およびライトポインタ４２から、適当なセグメントの物理アドレスＰＰＡが選択される。
以下のその手順の詳細を説明する。
【００４５】
物理アドレスは、上位１６ビットの物理ブロックアドレス部（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  ：ＰＢＡ）と下位８ビットのページセグメントのオフセット部よりなるとする。このとき、各消去ブロックは２５６ページ（２８）より構成される。検索テーブル４１には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Ｕｓｅｄ  Ｆｌａｇ”でマークされている。
ライトポインタ４２は、まずその物理ブロックアドレス部のインクリメントに従って、検索テーブル４１のアドレス上を下位から上位に向けて消去済みブロックを検索しつつ巡回する。一旦対象ブロックが検出されれば、検索テーブル４１の所定の“Ｕｓｅｄ  Ｆｌａｇ”に“１”が立ち、まずその先頭ページが書き込み先として選択される。
さらにここからはページセグメントオフセット部のインクリメントに従って、書き込み先のページセグメントが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用ブロックの検索を進める。このようにしてライトポインタ４２はフラッシュメモリデバイス１７の物理アドレス上を循環する。
ライトポインタ４２の値は現在“０ｘ００ＡＡ＿０２”であり、ページファイルの書き込み先として、それをインクリメントした物理アドレス”０ｘ００ＡＡ＿０３”が選択される。
【００４６】
ステップＳＴ３：
上記物理ページセグメントアドレスをもって、フラッシュメモリデバイス１７がアクセスされ、ページバッファ１５内のページファイルがフラッシュメモリデバイス１７に一括書き込みされる。
書き込みが完了すると、ページセグメント変換テーブル２５が更新され、論理アドレスＬＰＡ“０ｘＣ０００２”に対応する物理アドレスＰＰＡは“０ｘ００ＡＡ＿０３”に更新される。
また、これに伴って旧物理ページアドレス“０ｘ００６０＿Ｂ０”に相当するページ領域は無効となる。
【００４７】
なお、上記データの読み出しはページセグメントの論理アドレスＬＰＡ“０ｘＣ０００２”をインデックスとしてページセグメント変換テーブル２５を参照することで、物理アドレス“０ｘ００ＡＡ＿０３”を取得し、フラッシュメモリデバイス１７にアクセスを行う。これによって所望のページファイルをページバッファ１５に読み出す。
【００４８】
この例のようにフラッシュメモリに書き込みを実施すれば、スワップアウトされたページファイルは論理アドレス上は限られたページセグメント範囲に書き込みを実施しているにも関わらず、実際にはフラッシュメモリデバイスの全域にわたって書き込まれる。
すなわち、フラッシュメモリデバイス１７内に空きがある限りは、各スワップファイルの格納は常に１ページセグメントのみの書き込みでよく、作業は直ちに完了する。
【００４９】
ただし、その中の有効データは、ページセグメントテーブル上の論理アドレス範囲４３のフィールドに物理アドレスを記載されたページセグメント内のものだけである。
一方、無効なデータについては、ページセグメント変換テーブル２５を逆参照することで、それを判別することが可能である。無効なデータが蓄積した消去ブロックは、有効なデータのみを他のブロックの空きページセグメントに下詰で移動し、それを消去することで再び使用が可能になる。この際、ページセグメント変換テーブル２５もそれに合わせて更新する。
これらの作業は、たとえばシステムの待機時やアイドル時に実施すればよい。このような手順を経れば、僅かな予備ブロックを用意するだけで、論理アドレスとストレージの蓄積容量との整合を完全に保つことが可能である。
【００５０】
なお、１ページセグメントに２単位以上のページファイルが格納されている場合には、書き込みを実施する前に一旦ページセグメントのデータをページバッファ１５に読み出し、必要なページファイルに相当する部分のみをページバッファ上で上書きしてから、ステップＳＴ２、ステップＳＴ３の処理を実行すれば良い。
一方、ページファイルの格納に複数セグメントを要する場合には、ペーファイルを分割し、ステップＳＴ１〜ＳＴ３の処理を分割数分繰り返してそれらを格納する。
また、上記例では仮想メモリ上の１ページごとを個々のページファイルとしたが、連続した複数ページをまとめて一つのファイルにし、フラッシュメモリデバイス１７に格納しても良い。
【００５１】
また、フラッシュメモリデバイス１７は複数のフラッシュメモリチップを並列化して構成しても良く、たとえば２チップを並列化すれば、ページセグメントのサイズと消去ブロックのサイズはそれぞれ２倍になる。
その場合、同じ時間で２倍のデータをアクセスできるので、転送容量も２倍に近くに向上する。
【００５２】
ところで、スワップアウトされたページファイルは、基本的に現在起動しているアプリケーションのワークエリアが中心であり、その書き換え頻度は一般ファイルに比較して非常に高い。これらが同一ブロック内で一般ファイルと共存した場合、ページファイルは直ぐに書き換えられて無効化するのに対し、一般ファイルは有効なままブロック内に留まりつづける。
その結果、このような無効化ファイルを消去したい場合、所属ブロックを消去する前に一般ファイルを他ブロックに移動させる処理が必要となり、作業上のオーバーヘッドになる。
したがって、スワップアウトされたページファイル同士を同じ消去ブロックに集めた方が効率的であり、ページセグメント単位ではなく、消去ブロック単位で一般ファイルと混在させるのが望ましい。
【００５３】
そのような問題を考慮したフラッシュメモリデバイスへのページファイルおよび一般ファイルの書き込みについて、第２の実施形態として図８に示す。
【００５４】
ページセグメント変換テーブル２５ｂおよび検索テーブル４１ｂの構成、およびアクセス手順は、上記した第１の実施形態と同様である。ただし、論理アドレス領域４３ｂへのアクセスであるページファイルの書き込みでは、システムはライトポインタ４２ｂを使用して書き込み先を検索する。
すなわち、そのインクリメントに沿って検索テーブル４１ｂで消去済みブロックを検索し、その最下位アドレスのページセグメントから順に書き込み先を選択する。
【００５５】
一方、論理アドレス領域４３ｂ以外へのアクセスである一般ファイルの書き込みでは、システムはライトポインタ４４ｂを使用して書き込み先を検索する。
たとえば、図中の論理アドレスＬＰＡ“０ｘ００００１”への書き込みは一般ファイルの書き込みであり、書き込み先はライトポインタ４４ｂによって選択される。
一方、論理アドレス“０ｘＣ０００２”への書き込みはスワップアウトされたページファイルの書き込みであり、書き込み先はライトポインタ４２ｂによって選択される。片側のライトポインタが空きブロックを一旦確保すると、検索テーブル４１ｂの対応個所にはフラグが立つので、他方のライトポインタは同じブロックを選択できない。すなわち両ライトポインタは各々個別に消去ブロックを確保し、そこに書き込みを実施する。
これにより一般ファイルとページファイルは、両ライトポインタが循環する同じ物理アドレス領域を使用しながらも、常に異なるブロックに書き込みが実施される。
したがって、両ファイルはフラッシュメモリデバイス上の同一領域内に、消去ブロック単位で順不同で混在することになる。
【００５６】
図９は、このようにして実施されたページセグメントの論理アドレスから物理アドレスへのマッピングの例を示す図である。
【００５７】
論理アドレス空間２２ｃは、一般ファイルの格納領域４５ｃと、スワップアウトされたページファイルの格納領域４３ｃに区分けされ、各々が独立したライトポインタに従って物理アドレス空間２３ｃにマッピングされる。
このとき、マッピングはページセグメント単位で実施されるので、論理アドレス上の順番とは無関係に、柔軟なマッピングが実施される。
その一方で、消去ブロック４６ｃ，４８ｃには一般ファイルが、消去ブロック４７ｃ，４９ｃにはページファイルが集められている。すなわち一般ファイルとページファイルは各々独立して格納先ブロックが確保され、かつそれらのブロックは同一の物理アドレス領域内に、互いに混在する形で確保される。
【００５８】
なお、このようなライトポインタの使い分けは、スワップアウトされたページファイルと一般ファイルに対して行うだけでなく、必要があれば他の目的にも応用が可能である。より汎用的には、論理アドレス範囲に従って個別のライトポインタを設定する機能を設けておけば、各々のライトポインタが独立して異なる格納先ブロックを確保することになる。このような特性を活かして、複数のライトポインタをさまざまな目的に使い分けることが可能である。
【００５９】
ところで、たとえば図５において上述のようなフラッシュメモリデバイス１７への格納を管理するドライバそのものをフラッシュメモリデバイス１７に保存し、起動時にそこからＲＡＭ領域１９読み出して使用する場合には、アドレス変換は使用できない。
このようなファイルを格納するため、論理アドレスの領域の既定の一部は論理アドレスと物理アドレスを一致させ、アドレス変換なしでアクセス可能にしても良い。
たとえば、このようなシステム起動に必要なファイルはシステム領域として論理アドレスおよび物理アドレスの既定の下位領域に格納場所を予め用意しておき、そこへのアクセスには上述のようなアドレス変換は実施しない。
一方、通常のファイルやページファイルはそれ以外の上位アドレス領域を使用し、その間では上述のマッピングを実施して、両者を同一デバイス内に共存させることができる。
【００６０】
ところで第１および第２の実施形態では、コンピュータシステムとして、仮想メモリ管理と、そのスワップファイルをフラッシュメモリデバイスに格納する際の管理を、ホスト側で統合するケースについて記載した。
一方、同様の機能の一部を記憶装置の側にもたせつつ、そのような記憶装置を汎用的に使用できれば便利である。
すなわち、記憶装置とホストとで役割を分担し、ホスト側はアプリケーションの仮想メモリ管理を、記憶装置側はフラッシュメモリデバイスへのファイル格納の管理を実施する。このような例を第３の実施形態として、図１０のシステム構成図に関連付けて以下に説明する。
【００６１】
図１０は、ホスト側はアプリケーションの仮想メモリ管理を、記憶装置側はフラッシュメモリデバイスへのファイル格納の管理を実施するコンピュータシステムの構成例を示す図である。
【００６２】
図１０のコンピュータシステム１０ｄにおいて、ＣＰＵ１１ｄは３２ビットのシステムバス１３ｄを介してシステムメモリであるＲＡＭ１２ｄと接続されている。さらに、システムバス１３ｄにはブリッジ回路１４ｄおよびそれに接続されたＡＴＡ等のインターフェース回路５０ｄを介して、ファイル記憶装置５１ｃが接続されている。
ＲＡＭ１２ｄの下位アドレス領域１８ｄに常駐するＯＳは、各アプリケーションの仮想メモリを管理し、そのイメージを４ｋＢのページごとにＲＡＭ１２ｄの領域２０ｄ内にマッピングする。
しかし領域２０ｄに空き余裕がなくなると、使用頻度の少ないページをファイルにして、ファイル記憶装置５１ｄの特定のアドレス領域内に格納し、ＲＡＭ内の対応領域を破棄して空きを作る。
【００６３】
ファイル記憶装置５１ｄの内部バス５６ｄには、転送制御回路５５ｄを介して主記憶メディアであるＮＡＮＤ型フラッシュメモリデバイス１７ｄが接続されている。
制御回路５５ｄは内蔵したページバッファ１５ｄとフラッシュメモリデバイス１７ｄとの間のデータ転送を制御し、必要に応じて符号化および復号化回路１６ｄを用いて符号化、復号化によるエラー補正を施す。
フラッシュメモリデバイス１７ｄは、ページバッファ１５ｄを介して記憶装置の内部バス５６ｄとの間でデータを入出力する。
【００６４】
さらに内部バス５６ｄにはインターフェース回路５２ｄ、および制御回路５３ｄが接続されている。インターフェース回路５２ｄはＡＴＡやＰＣＩエクスプレス等の規格に従ってホスト側のインターフェース回路５０ｄとの間で、データやコマンドの送受を行う。
制御回路５３ｄは、記憶装置管理用のＣＰＵを内蔵し、記憶装置の内部においてページバッファ１５ｄとインターフェース回路５２ｄの間のデータの送受を管理する。
ここに内蔵されたＲＡＭ５４ｄには、制御プログラムやページセグメントの変換テーブル、検索テーブル、ライトポインタ等が構築されている。
【００６５】
制御回路５３ｄによるファイル記憶装置内のメモリ管理手順は図８において説明した第２の実施形態と同様である。
すなわち、制御回路５３ｄはＲＡＭ５４ｄに格納されたページセグメント変換テーブル２５ｂ、検索テーブル４１ｂ、およびライトポインタ４２ｂ，４４ｂを用いて、ホストから入力されたセクタアドレスをページセグメントの論理アドレスＬＰＡに対応させ、さらに該論理アドレスとフラッシュメモリデバイス１７ｄの物理アドレスＰＰＡとの対応を管理する。
【００６６】
本第３の実施形態と第２の実施形態との主たる相違は、第２の実施形態では上記管理をホスト側のドライバが実行し、各テーブル等がシステムＲＡＭ内に構築されているのに対し、本第３の実施形態では同等の管理が記憶装置５１ｄの内部で行われており、管理テーブル等もその中に構築されていることである。
【００６７】
ところで、このようなファイル記憶装置は、複数ライトポインタ４２ｂ、４４ｂの使いわけに関してホスト側の要求に整合させる必要がある。これを記憶装置側で汎用的に実現するには以下の２通りの手法が挙げられる。
【００６８】
まず、第一の手法としては、ホストからの入力アドレスに対応するストレージの論理アドレス範囲に従って、独立したライトポインタが割り振られるようにしておくことである。
そのような設定は、たとえば記憶装置をホストが初めて使用する際、ホストからのフォーマットコマンドに応じて行われるようにすれば良い。論理アドレス上の区間分けやライトポインタ数は自由に設定することが可能である。
この場合、一旦設定が完了すれば、それ以降は論理アドレスに従って、装置側で自動的にライトポインタが割り振られ、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
【００６９】
あるいは、第二の手法としては、ホストがデータを入力する際に、ライトポインタを指定するような属性を付加できるようにしても良い。
具体的には、専用コマンドによってライトポインタ属性を与えると、その属性に従って設定されたライトポインタを用いて、その後のデータ書き込みが実施される。この場合適時専用コマンドを発することにより、複数のライトポインタを切り替えながらデータ格納が可能になり、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
【００７０】
ファイル記憶装置にこのような複数ライトポインタの切り替え機能を設けることにより、スワップアウトされたページファイルと一般ファイルの使い分けが、柔軟に効率よく行えるようになる。
すなわち、各ライトポインタは同じフラッシュメモリデバイスの領域内に、各ファイルに対応する格納ブロックを、混在して確保していく。
【００７１】
また、ファイル記憶装置におけるこのような機能は、それ以外の一般的用途においても有効である。たとえばファイルシステムの管理領域は、ファイルと同じストレージメディア内に保存されるが、非常に書き換え頻度が高い。またデータベース等でファイルの整理や検索に使用されるメタデータも同様である。
このようなデータに各々個別のライトポインタを設定できれば、フラッシュメモリデバイスを効率良く使用することが可能になる。ＦＡＴファイルシステムのＦＡＴ領域等、このようなデータは論理アドレス上の格納位置を指定できるケースも多いので、この場合論理アドレス範囲に従ってライトポインタを割り振れば、容易に対応することができる。
【図面の簡単な説明】
【００７２】
【図１】ＯＳによる仮想メモリ管理の概要を示す図である。
【図２】代表的なフラッシュメモリであるＮＡＮＤ型フラッシュメモリの簡単な構成例示す図である。
【図３】消去ブロック内の１ページセグメントのみを書き換える際の通常の手順を示す図である。
【図４】フラッシュメモリのスワップファイルの格納領域の状態を示す図である。
【図５】本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【図６】第１の実施形態におけるメモリ管理手順を示す図である。
【図７】第１の実施形態におけるフラッシュメモリの管理方法を説明するための図である。
【図８】第２の実施形態におけるフラッシュメモリの管理方法を説明するための図である。
【図９】第２の実施形態におけるページセグメントのマッピング処理を説明するための図である。
【図１０】アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
【符号の説明】
【００７３】
１０，１０ｄ・・・コンピュータシステム、１１，１１ｄ・・・ＣＰＵ、１２，１２ｄ・・・システムメモリ（ＲＡＭ）、１３，１３ｄ・・・システムバス、１４，１４ｄ・・・ブリッジ回路、１５，１５ｄ・・・ページバッファ、１６，１６ｄ・・・符号化および復号化回路、１７，１７ｄ・・・ＮＡＮＤ型フラッシュメモリ，５０ｄ・・・インターフェース回路、５１ｄ・・・ファイル記憶装置、５２ｄ・・・インターフェース回路、５３ｄ・・・制御回路、５４ｄ・・・ＲＡＭ、５５ｄ・・・転送制御回路、５６ｄ・・・内部バス。
【図１】
2008217208.tif 000003
【図２】
2008217208.tif 000004
【図３】
2008217208.tif 000005
【図４】
2008217208.tif 000006
【図５】
2008217208.tif 000007
【図６】
2008217208.tif 000008
【図７】
2008217208.tif 000009
【図８】
2008217208.tif 000010
【図９】
2008217208.tif 000011
【図１０】
2008217208.tif 000012