JP2008217208A - 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 - Google Patents
記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 Download PDFInfo
- Publication number
- JP2008217208A JP2008217208A JP2007051304A JP2007051304A JP2008217208A JP 2008217208 A JP2008217208 A JP 2008217208A JP 2007051304 A JP2007051304 A JP 2007051304A JP 2007051304 A JP2007051304 A JP 2007051304A JP 2008217208 A JP2008217208 A JP 2008217208A
- Authority
- JP
- Japan
- Prior art keywords
- flash memory
- memory device
- file
- page address
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】高速にページをスワップアウトでき、少ないメモリ容量で多くのアプリケーションを的確に使用することができる記憶装置およびコンピュータシステム、並びに記憶装置の管理方法を提供する。
【解決手段】コンピュータシステム10は、ファイルをフラッシュメモリデバイス17の仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、フラッシュメモリデバイス17の物理ページアドレスを発生させる機能と、物理ページアドレスに従ってフラッシュメモリデバイス17にファイルを格納するとともに、この論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む。
【選択図】図5
【解決手段】コンピュータシステム10は、ファイルをフラッシュメモリデバイス17の仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、フラッシュメモリデバイス17の物理ページアドレスを発生させる機能と、物理ページアドレスに従ってフラッシュメモリデバイス17にファイルを格納するとともに、この論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む。
【選択図】図5
Description
本発明は、フラッシュメモリデバイスを含む記憶装置およびコンピュータシステム、並びに記憶装置の管理方法に係り、特に、仮想メモリを使用し、二次記憶としてフラッシュメモリデバイスを使用する技術に関するものである。
近年、コンピュータシステムは巨大なアプリケーションを複数起動するケースが増えており、それに伴って益々多くのシステムメモリ、特にDRAMやSRAMに代表されるRAM(ランダムアクセスメモリ)を必要とするようになっている。
特に、近年は携帯電話等のモバイルコンピュータにおいても同様の傾向が見られ、それに対応して、RAMを有効利用するための効率的なメモリ管理が要求されている。
特に、近年は携帯電話等のモバイルコンピュータにおいても同様の傾向が見られ、それに対応して、RAMを有効利用するための効率的なメモリ管理が要求されている。
その代表的な管理手法にOS(オペレーティングシステム)による仮想メモリ管理が挙げられる。
図1はOSによる仮想メモリ管理の概要を示す図である。
図1はOSによる仮想メモリ管理の概要を示す図である。
図1の例においては、2つのアプリケーションAP1、AP2が互いに独立した各々4GBの仮想メモリ空間VM1、VM2を使用している。
それらのメモリ空間VM1、VM2は複数のページに分割されており、必要応じて実際には256MBのRAM上の物理メモリ空間RMに動的にマッピングされる。これらのマッピング情報はRAM内に構成されたページテーブルPTに格納されている。
それらのメモリ空間VM1、VM2は複数のページに分割されており、必要応じて実際には256MBのRAM上の物理メモリ空間RMに動的にマッピングされる。これらのマッピング情報はRAM内に構成されたページテーブルPTに格納されている。
このようなマッピングはOSによって管理されるが、近年はCPUもその一部機能をサポートしており、たとえばページテーブルの一部をCPU内部にキャッシュし、CPU内で高速にアドレス変換する機能等を備えている。
このような管理を使用すれば、各アプリケーションは他のアプリケーションの存在を気にすること無く自由にメモリ空間を使用でき、かつ特定のアプリケーションが暴走して他のアプリケーションのデータを破壊する等の問題も防止できる。
しかし、このような管理を実施した場合、多くのアプリケーションが起動すると、仮想メモリ空間上は余裕があるのに、RAM上の物理メモリ空間が満杯になってしまうケースがしばしば発生する。
このような場合には、仮想メモリ空間上で物理メモリ空間を使用しつつも使用頻度が少ないページが選択され、そのスワップアウトが実施される。ページのスワップアウトはそのようなページのデータを、まずHDD等の二次記憶装置に退避させ、その後対応する物理メモリ上の対応ページを破棄して空き領域を確保する作業である。
このような場合には、仮想メモリ空間上で物理メモリ空間を使用しつつも使用頻度が少ないページが選択され、そのスワップアウトが実施される。ページのスワップアウトはそのようなページのデータを、まずHDD等の二次記憶装置に退避させ、その後対応する物理メモリ上の対応ページを破棄して空き領域を確保する作業である。
ところで、携帯電話における二次記憶装置には、通常消費電力が小さく実装にも有利なフラッシュメモリデバイスが使用される。また、近年はノートパソコンの二次記憶装置としてもフラッシュメモリデバイスが使用される傾向がある。
そのようなケースでは、ページのスワップアウトはフラッシュメモリデバイスに対して実施されることになる。具体的にはその記憶領域中にページスワップ用の特定領域を確保し、そこにページのスワップアウトを実施する。
ISSCC2002予稿集のp106、セッション6.4
そのようなケースでは、ページのスワップアウトはフラッシュメモリデバイスに対して実施されることになる。具体的にはその記憶領域中にページスワップ用の特定領域を確保し、そこにページのスワップアウトを実施する。
ISSCC2002予稿集のp106、セッション6.4
しかし、上述のようなページスワップの用途に対して、フラッシュメモリは必ずしも適したデバイスでは無い。
図2は、代表的なフラッシュメモリであるNAND型フラッシュメモリの簡単な構成例示す図である。
フラッシュメモリ1において、たとえば、同一ワード線に接続されたセル群2は一括書き込み、および読み出しの単位であり、ページと称される。ここでは前述の仮想メモリ管理に使用されるページと区別してページセグメントと呼ぶ。さらに複数ページセグメントで構成されたセルアレイ3は一括消去の単位であり、ブロックと称される。フラッシュメモリ1全体は複数のブロックにより構成されている。
フラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数m秒もの時間がかかる。
これらは高並列処理によってある程度はカバーされている。たとえば非特許文献1(ISSCC2002予稿集のp106、セッション6.4)には1GbのNAND型フラッシュメモリが掲載されており、ページセグメントのサイズを約2kバイト、消去ブロックサイズを約128kBとしている。
このように128kバイトのセル群を並列消去し、さらに2kバイトごとの並列プログラムを行っていくことによって、10MB/sのプログラム転送速度を実現している。
このように128kバイトのセル群を並列消去し、さらに2kバイトごとの並列プログラムを行っていくことによって、10MB/sのプログラム転送速度を実現している。
しかし、消去ブロック内の小領域を部分的に書き換え用とした場合、そのパフォーマンスは極端に悪化する。
図3は、たとえば消去ブロック内の1ページセグメントのみを書き換える際の通常の手順を示す図である。
現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
図3において、4はアドレス変換テーブルを示しており、論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
たとえば、ホストまたはアプリケーションが“0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“0x6B”に変換され、フラッシュメモリ1の消去ブロック5にアクセスが実施される。
たとえば、ホストまたはアプリケーションが“0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“0x6B”に変換され、フラッシュメモリ1の消去ブロック5にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
1.予め予備の消去済みブロック7を用意しておく。その物理アドレスは”0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス”0x6B”が取得され、ブロック5内のページセグメント6にアクセスがなされたとする。このとき、フラッシュメモリの書き換え対象ブロック5から、別途設けられたページバッファ9を介して、予備ブロック7にデータを順次コピーしていく。
3.更新対象となるページセグメント6のコピー時には、ページバッファ9上で所望の箇所を更新してコピーを行い、コピー先ページセグメント8にそれが反映される。
4.有効なページセグメントのデータのコピーが全て完了したら、アドレス変換テーブル4上で、ブロック5と予備ブロック7のアドレスを張り替える。
5.最後に元ブロック5の消去を実施する。
1.予め予備の消去済みブロック7を用意しておく。その物理アドレスは”0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス”0x6B”が取得され、ブロック5内のページセグメント6にアクセスがなされたとする。このとき、フラッシュメモリの書き換え対象ブロック5から、別途設けられたページバッファ9を介して、予備ブロック7にデータを順次コピーしていく。
3.更新対象となるページセグメント6のコピー時には、ページバッファ9上で所望の箇所を更新してコピーを行い、コピー先ページセグメント8にそれが反映される。
4.有効なページセグメントのデータのコピーが全て完了したら、アドレス変換テーブル4上で、ブロック5と予備ブロック7のアドレスを張り替える。
5.最後に元ブロック5の消去を実施する。
このような手順によって、以降論理ブロックアドレス“0x55”に対しては、物理ブロックアドレス“0xAA”に対応する消去ブロック、すなわち7がアクセスされるようになり、全体との整合性が保たれる。
しかしこの場合、1ページセグメントを更新するために、ブロック5のデータ全体を予備ブロック7に退避させる作業が必要であり、そのためにブロック5内の全データのページバッファ9への読み出しと、予備ブロック7への書き込みが必要になる。従って現実の転送性能は著しく低いものになってしまう。
しかしこの場合、1ページセグメントを更新するために、ブロック5のデータ全体を予備ブロック7に退避させる作業が必要であり、そのためにブロック5内の全データのページバッファ9への読み出しと、予備ブロック7への書き込みが必要になる。従って現実の転送性能は著しく低いものになってしまう。
さらに、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にNAND型フラッシュには、ブロック内の各ページセグメントの書き込み順序に制約がつくようになった。
すなわち、各ページセグメントの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページセグメントに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、ブロック全体を消去しない限りそこにデータを書き込むことはできない。
すなわち、各ページセグメントの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページセグメントに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、ブロック全体を消去しない限りそこにデータを書き込むことはできない。
ところで、通常仮想メモリのスワップ単位である1ページは、4kバイト程度である。このようなフラッシュメモリにスワップアウトされたページファイルを格納していくと、暫くすれば無効なページファイルが蓄積し、論理アドレス上、図4のような虫食い状態になる。
ここで無効なページファイルとは、次のようなものである。スワップアウトされたページファイルが再度アプリケーションで使用される場合、それらはフラッシュメモリからRAM内に読み出されるが、それがRAM内で更新されると、もはやフラッシュメモリに格納された旧ページファイルは不要となって破棄される。
しかし、フラッシュメモリの消去ブロックを部分的に消去することはできないので、それらのページファイルは無効なデータとしてフラッシュメモリ上に残される。
しかし、フラッシュメモリの消去ブロックを部分的に消去することはできないので、それらのページファイルは無効なデータとしてフラッシュメモリ上に残される。
一旦確保した論理アドレス領域が使い尽くされれば、それ以降ストレージ内は図4のような状態が普通になる。そのとき新規にスワップアウトされたページファイルの書き込みは、無効データを上書きする形で実施されるしか無い。
したがって、スワップアウトが実施される都度に図2の冗長な作業を繰り返すことになり、フラッシュメモリへの書き込みパフォーマンスは著しく悪化してしまう。
したがって、スワップアウトが実施される都度に図2の冗長な作業を繰り返すことになり、フラッシュメモリへの書き込みパフォーマンスは著しく悪化してしまう。
本発明は、高速にページをスワップアウトでき、少ないメモリ容量で多くのアプリケーションを的確に使用することができる記憶装置およびコンピュータシステム、並びに記憶装置の管理方法を提供することにある。
本発明の第1の観点のコンピュータシステムは、フラッシュメモリデバイスと、アプリケーションが使用するメモリ空間を一定サイズに分割し、その一部内容をファイルにして、上記フラッシュメモリデバイスに格納するスワップアウト手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、上記スワップアウト手段は、上記ファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む。
本発明の第2の観点のコンピュータシステムは、上記フラッシュメモリデバイスと、上記フラッシュメモリデバイスにファイルを格納する格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、上記格納手段は、任意のファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の任意の場所に仮想的に格納する機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
本発明の第3の観点の記憶装置は、主記憶媒体としてのフラッシュメモリデバイスと、第2メモリと、有し、ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、上記ファイル格納手段は、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録する機能と、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
本発明の第4の観点の記憶装置は、主記憶媒体としてのフラッシュメモリデバイスと、第2メモリと、有し、ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、上記フラッシュメモリデバイスは、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、上記ファイル格納手段は、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録する機能と、ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む。
本発明の第5の観点は、主記憶媒体としてのフラッシュメモリデバイスと、第2メモリと、有する記憶装置の管理方法であって、上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含むように形成するステップと、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録するステップと、格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップとを有する。
本発明の第6の観点は、主記憶媒体としてのフラッシュメモリデバイスと、第2メモリと、有する記憶装置の管理方法であって、上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含むように形成するステップと、ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録するステップと、ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップとを有する。
本発明を採用すれば、パソコンや携帯電話において仮想メモリを活用し、RAMを効率良く使用しつつ、フラッシュメモリを用いた安価な二次記憶に高速にページをスワップアウトでき、少ないRAM容量で多くのアプリケーションを快適に使用することができる。また、その際フラッシュメモリデバイスは一般ファイルの格納にも使用でき、それについても快適で効率の良いアクセスが可能である。
以下、本発明の実施形態を図面に関連付けて説明する。
図5は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステム10は、ホスト処理装置であるCPU11、RAMからなるシステムメモリ(以下、RAMTという)12、システムバス13、ブリッジ回路14、ページバッファ15、符号化および復号化回路16、およびNAND型フラッシュメモリ17を主構成要素として有している。
システムメモリ12は、下位アドレス領域18、中間領域19、および上位アドレス領域を含む。
システムメモリ12は、下位アドレス領域18、中間領域19、および上位アドレス領域を含む。
本コンピュータシステム10において、CPU11は32ビットのシステムバス13を介してシステムメモリであるRAM12と接続されている。さらに、システムバス13にはブリッジ回路14を介してNAND型フラッシュメモリデバイス17が接続されている。
ページバッファ15はアクセスされたページ領域を一時記憶するバッファであり、符号化および復号化回路16はエラー訂正用に設けられた回路であり、両者はブリッジ回路(14)に内蔵されている。
ページバッファ15はアクセスされたページ領域を一時記憶するバッファであり、符号化および復号化回路16はエラー訂正用に設けられた回路であり、両者はブリッジ回路(14)に内蔵されている。
ブリッジ回路14はCPU11から各種コマンドを受け取り、フラッシュメモリデバイス17とCPU11またはシステムメモリ12との間のデータのやり取りを、ページバッファ15を用いて媒介する。
また、ブリッジ回路14に内蔵された符号化および復号化回路16は、ページバッファ15のデータを符号化してフラッシュメモリデバイス17の所定ページに転送し、あるいはフラッシュメモリデバイス17から読み出されたデータを復号化してページバッファ15に転送する。
ブリッジ回路14が受け取るコマンドは、たとえばフラッシュメモリデバイス17の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
また、ブリッジ回路14に内蔵された符号化および復号化回路16は、ページバッファ15のデータを符号化してフラッシュメモリデバイス17の所定ページに転送し、あるいはフラッシュメモリデバイス17から読み出されたデータを復号化してページバッファ15に転送する。
ブリッジ回路14が受け取るコマンドは、たとえばフラッシュメモリデバイス17の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ12内には、下位アドレス領域18にOSと、仮想メモリのマッピングを管理するためのページテーブルが常駐している。また、中間領域19にはフラッシュメモリデバイス17を管理するためのドライバと、この管理用の各種テーブル、ポインタ類が常駐している。さらに、上位アドレス領域20には、上記ページテーブルに従って各アプリケーションの仮想メモリ領域からマッピングされたページが格納されている。
図6は、図5のコンピュータシステムのメモリ管理手順を示す図である。
図6において、20はRAM12の物理メモリ領域(空間)を、21は仮想メモリ領域を、22は仮想(論理)アドレス空間を、23は物理アドレス空間を、24はページテーブルを、25はページセグメント変換テーブルを、26は格納データを、27はRAM上の対応領域を、28〜30はメモリ領域、31はアドレス領域を、32は消去ブロックをそれぞれ示している。
以下に、コンピュータシステム10のメモリ管理手順を図6に関連付けて説明する。
図6において、20はRAM12の物理メモリ領域(空間)を、21は仮想メモリ領域を、22は仮想(論理)アドレス空間を、23は物理アドレス空間を、24はページテーブルを、25はページセグメント変換テーブルを、26は格納データを、27はRAM上の対応領域を、28〜30はメモリ領域、31はアドレス領域を、32は消去ブロックをそれぞれ示している。
以下に、コンピュータシステム10のメモリ管理手順を図6に関連付けて説明する。
OSはページテーブル24を用いて、アプリケーションの仮想メモリ領域21のイメージを、RAM12の物理メモリ領域(空間)20に4kBのページ単位でマッピングする。しかし、メモリ領域20に空き余裕がなくなると、使用頻度の少ないページ、たとえばデータ26をファイルにしてフラッシュメモリデバイス17に格納し、RAM12内の対応領域27を破棄して空きを作る。
なお、データ26がRAM12上で更新されていなければ、フラッシュメモリデバイス17への格納は省略できる。
ここでOSが扱うフラッシュメモリデバイス17のアドレスは仮想的な論理アドレスであり、そのページセグメントの仮想アドレス空間22において、スワップアウトするファイル格納用に、限定された1GBのアドレス領域31が確保されている。
なお、フラッシュメモリデバイスの各ページセグメントは、たとえば4kバイトのサイズを有し、スワップアウトされるページ1枚が格納される。上記アドレス領域は約250k個のページセグメントに対応する。
なお、データ26がRAM12上で更新されていなければ、フラッシュメモリデバイス17への格納は省略できる。
ここでOSが扱うフラッシュメモリデバイス17のアドレスは仮想的な論理アドレスであり、そのページセグメントの仮想アドレス空間22において、スワップアウトするファイル格納用に、限定された1GBのアドレス領域31が確保されている。
なお、フラッシュメモリデバイスの各ページセグメントは、たとえば4kバイトのサイズを有し、スワップアウトされるページ1枚が格納される。上記アドレス領域は約250k個のページセグメントに対応する。
OSはその中から、既に格納ファイルが破棄されたページセグメントを探査し、その中の1つ、たとえば領域28にページファイルを仮想的に格納する。こうしてRAM12内に常駐するドライバには格納先の論理アドレスが渡される。
一方ドライバは、上記論理アドレスの格納範囲とは独立に、フラッシュメモリデバイス17内で消去済みの空きブロックを検索し、その先頭ページセグメントから、下詰のアドレスで各ページファイルを格納するように、ページセグメントの物理アドレスを発生させる。こうして選択された消去ブロック32内の最下位アドレスの空きページセグメント29にページファイルは格納され、しかる後に上記論理アドレスと物理アドレスとの対応が、ページセグメント変換テーブル25に記載される。
一方ドライバは、上記論理アドレスの格納範囲とは独立に、フラッシュメモリデバイス17内で消去済みの空きブロックを検索し、その先頭ページセグメントから、下詰のアドレスで各ページファイルを格納するように、ページセグメントの物理アドレスを発生させる。こうして選択された消去ブロック32内の最下位アドレスの空きページセグメント29にページファイルは格納され、しかる後に上記論理アドレスと物理アドレスとの対応が、ページセグメント変換テーブル25に記載される。
ところでOSは、ユーザーデータを含む一般ファイルの格納にもフラッシュメモリデバイス17を使用することができる。それらは上記スワップアウト用の論理アドレス領域31除く、たとえば“0x00000”〜“0xBFFFF”の領域内の一部に格納される。
この場合もスワップアウトしたページファイルと同様に、書き込み時には格納先の物理アドレスを発生させ、同じページセグメント変換テーブル25を使って論理アドレスと物理アドレスとの対応を記載すれば良く、両者は統合的に管理することができる。また、両者を格納するページセグメントの物理アドレスは、論理アドレスで設定された格納範囲とは独立して設定できる。
したがって、両者はページセグメント単位、或いはブロック単位で互いに混在させてフラッシュメモリデバイス内に保存することが可能である。たとえば領域29の次のページセグメント30にユーザーデータを格納しても良い。
この場合もスワップアウトしたページファイルと同様に、書き込み時には格納先の物理アドレスを発生させ、同じページセグメント変換テーブル25を使って論理アドレスと物理アドレスとの対応を記載すれば良く、両者は統合的に管理することができる。また、両者を格納するページセグメントの物理アドレスは、論理アドレスで設定された格納範囲とは独立して設定できる。
したがって、両者はページセグメント単位、或いはブロック単位で互いに混在させてフラッシュメモリデバイス内に保存することが可能である。たとえば領域29の次のページセグメント30にユーザーデータを格納しても良い。
次に、図7に関連付けて、フラッシュメモリデバイスへのページファイルの書き込みについて、より詳しく説明する。
ページセグメント変換テーブル25は上記ページセグメント変換テーブルであり、ページセグメント単位でアドレス変換を実施する。また、検索テーブル41は各ブロックが消去された空きブロックか否かをフラグで示している。ライトポインタ42にはファイル格納先のページセグメントの物理アドレスが格納されている。物理アドレスは消去ブロックのブロックアドレスと、ブロック内のページセグメントオフセットよりなる。
なお、ここでは1ページセグメントにページファイル1単位が格納されるとする。格納先のページセグメントの論理アドレス(LPA)は“0xC0002”とする。
なお、ここでは1ページセグメントにページファイル1単位が格納されるとする。格納先のページセグメントの論理アドレス(LPA)は“0xC0002”とする。
ステップS71:
図5のページバッファ15に、スワップアウトしたページファイルが転送される。
図5のページバッファ15に、スワップアウトしたページファイルが転送される。
ステップST2:
上記ページファイルのフラッシュメモリデバイス17への書き込み先として、RAM領域19に常駐した検索テーブル41およびライトポインタ42から、適当なセグメントの物理アドレスPPAが選択される。
以下のその手順の詳細を説明する。
上記ページファイルのフラッシュメモリデバイス17への書き込み先として、RAM領域19に常駐した検索テーブル41およびライトポインタ42から、適当なセグメントの物理アドレスPPAが選択される。
以下のその手順の詳細を説明する。
物理アドレスは、上位16ビットの物理ブロックアドレス部(Physical Block Address :PBA)と下位8ビットのページセグメントのオフセット部よりなるとする。このとき、各消去ブロックは256ページ(28)より構成される。検索テーブル41には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
ライトポインタ42は、まずその物理ブロックアドレス部のインクリメントに従って、検索テーブル41のアドレス上を下位から上位に向けて消去済みブロックを検索しつつ巡回する。一旦対象ブロックが検出されれば、検索テーブル41の所定の“Used Flag”に“1”が立ち、まずその先頭ページが書き込み先として選択される。
さらにここからはページセグメントオフセット部のインクリメントに従って、書き込み先のページセグメントが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用ブロックの検索を進める。このようにしてライトポインタ42はフラッシュメモリデバイス17の物理アドレス上を循環する。
ライトポインタ42の値は現在“0x00AA_02”であり、ページファイルの書き込み先として、それをインクリメントした物理アドレス”0x00AA_03”が選択される。
ライトポインタ42は、まずその物理ブロックアドレス部のインクリメントに従って、検索テーブル41のアドレス上を下位から上位に向けて消去済みブロックを検索しつつ巡回する。一旦対象ブロックが検出されれば、検索テーブル41の所定の“Used Flag”に“1”が立ち、まずその先頭ページが書き込み先として選択される。
さらにここからはページセグメントオフセット部のインクリメントに従って、書き込み先のページセグメントが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用ブロックの検索を進める。このようにしてライトポインタ42はフラッシュメモリデバイス17の物理アドレス上を循環する。
ライトポインタ42の値は現在“0x00AA_02”であり、ページファイルの書き込み先として、それをインクリメントした物理アドレス”0x00AA_03”が選択される。
ステップST3:
上記物理ページセグメントアドレスをもって、フラッシュメモリデバイス17がアクセスされ、ページバッファ15内のページファイルがフラッシュメモリデバイス17に一括書き込みされる。
書き込みが完了すると、ページセグメント変換テーブル25が更新され、論理アドレスLPA“0xC0002”に対応する物理アドレスPPAは“0x00AA_03”に更新される。
また、これに伴って旧物理ページアドレス“0x0060_B0”に相当するページ領域は無効となる。
上記物理ページセグメントアドレスをもって、フラッシュメモリデバイス17がアクセスされ、ページバッファ15内のページファイルがフラッシュメモリデバイス17に一括書き込みされる。
書き込みが完了すると、ページセグメント変換テーブル25が更新され、論理アドレスLPA“0xC0002”に対応する物理アドレスPPAは“0x00AA_03”に更新される。
また、これに伴って旧物理ページアドレス“0x0060_B0”に相当するページ領域は無効となる。
なお、上記データの読み出しはページセグメントの論理アドレスLPA“0xC0002”をインデックスとしてページセグメント変換テーブル25を参照することで、物理アドレス“0x00AA_03”を取得し、フラッシュメモリデバイス17にアクセスを行う。これによって所望のページファイルをページバッファ15に読み出す。
この例のようにフラッシュメモリに書き込みを実施すれば、スワップアウトされたページファイルは論理アドレス上は限られたページセグメント範囲に書き込みを実施しているにも関わらず、実際にはフラッシュメモリデバイスの全域にわたって書き込まれる。
すなわち、フラッシュメモリデバイス17内に空きがある限りは、各スワップファイルの格納は常に1ページセグメントのみの書き込みでよく、作業は直ちに完了する。
すなわち、フラッシュメモリデバイス17内に空きがある限りは、各スワップファイルの格納は常に1ページセグメントのみの書き込みでよく、作業は直ちに完了する。
ただし、その中の有効データは、ページセグメントテーブル上の論理アドレス範囲43のフィールドに物理アドレスを記載されたページセグメント内のものだけである。
一方、無効なデータについては、ページセグメント変換テーブル25を逆参照することで、それを判別することが可能である。無効なデータが蓄積した消去ブロックは、有効なデータのみを他のブロックの空きページセグメントに下詰で移動し、それを消去することで再び使用が可能になる。この際、ページセグメント変換テーブル25もそれに合わせて更新する。
これらの作業は、たとえばシステムの待機時やアイドル時に実施すればよい。このような手順を経れば、僅かな予備ブロックを用意するだけで、論理アドレスとストレージの蓄積容量との整合を完全に保つことが可能である。
一方、無効なデータについては、ページセグメント変換テーブル25を逆参照することで、それを判別することが可能である。無効なデータが蓄積した消去ブロックは、有効なデータのみを他のブロックの空きページセグメントに下詰で移動し、それを消去することで再び使用が可能になる。この際、ページセグメント変換テーブル25もそれに合わせて更新する。
これらの作業は、たとえばシステムの待機時やアイドル時に実施すればよい。このような手順を経れば、僅かな予備ブロックを用意するだけで、論理アドレスとストレージの蓄積容量との整合を完全に保つことが可能である。
なお、1ページセグメントに2単位以上のページファイルが格納されている場合には、書き込みを実施する前に一旦ページセグメントのデータをページバッファ15に読み出し、必要なページファイルに相当する部分のみをページバッファ上で上書きしてから、ステップST2、ステップST3の処理を実行すれば良い。
一方、ページファイルの格納に複数セグメントを要する場合には、ペーファイルを分割し、ステップST1〜ST3の処理を分割数分繰り返してそれらを格納する。
また、上記例では仮想メモリ上の1ページごとを個々のページファイルとしたが、連続した複数ページをまとめて一つのファイルにし、フラッシュメモリデバイス17に格納しても良い。
一方、ページファイルの格納に複数セグメントを要する場合には、ペーファイルを分割し、ステップST1〜ST3の処理を分割数分繰り返してそれらを格納する。
また、上記例では仮想メモリ上の1ページごとを個々のページファイルとしたが、連続した複数ページをまとめて一つのファイルにし、フラッシュメモリデバイス17に格納しても良い。
また、フラッシュメモリデバイス17は複数のフラッシュメモリチップを並列化して構成しても良く、たとえば2チップを並列化すれば、ページセグメントのサイズと消去ブロックのサイズはそれぞれ2倍になる。
その場合、同じ時間で2倍のデータをアクセスできるので、転送容量も2倍に近くに向上する。
その場合、同じ時間で2倍のデータをアクセスできるので、転送容量も2倍に近くに向上する。
ところで、スワップアウトされたページファイルは、基本的に現在起動しているアプリケーションのワークエリアが中心であり、その書き換え頻度は一般ファイルに比較して非常に高い。これらが同一ブロック内で一般ファイルと共存した場合、ページファイルは直ぐに書き換えられて無効化するのに対し、一般ファイルは有効なままブロック内に留まりつづける。
その結果、このような無効化ファイルを消去したい場合、所属ブロックを消去する前に一般ファイルを他ブロックに移動させる処理が必要となり、作業上のオーバーヘッドになる。
したがって、スワップアウトされたページファイル同士を同じ消去ブロックに集めた方が効率的であり、ページセグメント単位ではなく、消去ブロック単位で一般ファイルと混在させるのが望ましい。
その結果、このような無効化ファイルを消去したい場合、所属ブロックを消去する前に一般ファイルを他ブロックに移動させる処理が必要となり、作業上のオーバーヘッドになる。
したがって、スワップアウトされたページファイル同士を同じ消去ブロックに集めた方が効率的であり、ページセグメント単位ではなく、消去ブロック単位で一般ファイルと混在させるのが望ましい。
そのような問題を考慮したフラッシュメモリデバイスへのページファイルおよび一般ファイルの書き込みについて、第2の実施形態として図8に示す。
ページセグメント変換テーブル25bおよび検索テーブル41bの構成、およびアクセス手順は、上記した第1の実施形態と同様である。ただし、論理アドレス領域43bへのアクセスであるページファイルの書き込みでは、システムはライトポインタ42bを使用して書き込み先を検索する。
すなわち、そのインクリメントに沿って検索テーブル41bで消去済みブロックを検索し、その最下位アドレスのページセグメントから順に書き込み先を選択する。
すなわち、そのインクリメントに沿って検索テーブル41bで消去済みブロックを検索し、その最下位アドレスのページセグメントから順に書き込み先を選択する。
一方、論理アドレス領域43b以外へのアクセスである一般ファイルの書き込みでは、システムはライトポインタ44bを使用して書き込み先を検索する。
たとえば、図中の論理アドレスLPA“0x00001”への書き込みは一般ファイルの書き込みであり、書き込み先はライトポインタ44bによって選択される。
一方、論理アドレス“0xC0002”への書き込みはスワップアウトされたページファイルの書き込みであり、書き込み先はライトポインタ42bによって選択される。片側のライトポインタが空きブロックを一旦確保すると、検索テーブル41bの対応個所にはフラグが立つので、他方のライトポインタは同じブロックを選択できない。すなわち両ライトポインタは各々個別に消去ブロックを確保し、そこに書き込みを実施する。
これにより一般ファイルとページファイルは、両ライトポインタが循環する同じ物理アドレス領域を使用しながらも、常に異なるブロックに書き込みが実施される。
したがって、両ファイルはフラッシュメモリデバイス上の同一領域内に、消去ブロック単位で順不同で混在することになる。
たとえば、図中の論理アドレスLPA“0x00001”への書き込みは一般ファイルの書き込みであり、書き込み先はライトポインタ44bによって選択される。
一方、論理アドレス“0xC0002”への書き込みはスワップアウトされたページファイルの書き込みであり、書き込み先はライトポインタ42bによって選択される。片側のライトポインタが空きブロックを一旦確保すると、検索テーブル41bの対応個所にはフラグが立つので、他方のライトポインタは同じブロックを選択できない。すなわち両ライトポインタは各々個別に消去ブロックを確保し、そこに書き込みを実施する。
これにより一般ファイルとページファイルは、両ライトポインタが循環する同じ物理アドレス領域を使用しながらも、常に異なるブロックに書き込みが実施される。
したがって、両ファイルはフラッシュメモリデバイス上の同一領域内に、消去ブロック単位で順不同で混在することになる。
図9は、このようにして実施されたページセグメントの論理アドレスから物理アドレスへのマッピングの例を示す図である。
論理アドレス空間22cは、一般ファイルの格納領域45cと、スワップアウトされたページファイルの格納領域43cに区分けされ、各々が独立したライトポインタに従って物理アドレス空間23cにマッピングされる。
このとき、マッピングはページセグメント単位で実施されるので、論理アドレス上の順番とは無関係に、柔軟なマッピングが実施される。
その一方で、消去ブロック46c,48cには一般ファイルが、消去ブロック47c,49cにはページファイルが集められている。すなわち一般ファイルとページファイルは各々独立して格納先ブロックが確保され、かつそれらのブロックは同一の物理アドレス領域内に、互いに混在する形で確保される。
このとき、マッピングはページセグメント単位で実施されるので、論理アドレス上の順番とは無関係に、柔軟なマッピングが実施される。
その一方で、消去ブロック46c,48cには一般ファイルが、消去ブロック47c,49cにはページファイルが集められている。すなわち一般ファイルとページファイルは各々独立して格納先ブロックが確保され、かつそれらのブロックは同一の物理アドレス領域内に、互いに混在する形で確保される。
なお、このようなライトポインタの使い分けは、スワップアウトされたページファイルと一般ファイルに対して行うだけでなく、必要があれば他の目的にも応用が可能である。より汎用的には、論理アドレス範囲に従って個別のライトポインタを設定する機能を設けておけば、各々のライトポインタが独立して異なる格納先ブロックを確保することになる。このような特性を活かして、複数のライトポインタをさまざまな目的に使い分けることが可能である。
ところで、たとえば図5において上述のようなフラッシュメモリデバイス17への格納を管理するドライバそのものをフラッシュメモリデバイス17に保存し、起動時にそこからRAM領域19読み出して使用する場合には、アドレス変換は使用できない。
このようなファイルを格納するため、論理アドレスの領域の既定の一部は論理アドレスと物理アドレスを一致させ、アドレス変換なしでアクセス可能にしても良い。
たとえば、このようなシステム起動に必要なファイルはシステム領域として論理アドレスおよび物理アドレスの既定の下位領域に格納場所を予め用意しておき、そこへのアクセスには上述のようなアドレス変換は実施しない。
一方、通常のファイルやページファイルはそれ以外の上位アドレス領域を使用し、その間では上述のマッピングを実施して、両者を同一デバイス内に共存させることができる。
このようなファイルを格納するため、論理アドレスの領域の既定の一部は論理アドレスと物理アドレスを一致させ、アドレス変換なしでアクセス可能にしても良い。
たとえば、このようなシステム起動に必要なファイルはシステム領域として論理アドレスおよび物理アドレスの既定の下位領域に格納場所を予め用意しておき、そこへのアクセスには上述のようなアドレス変換は実施しない。
一方、通常のファイルやページファイルはそれ以外の上位アドレス領域を使用し、その間では上述のマッピングを実施して、両者を同一デバイス内に共存させることができる。
ところで第1および第2の実施形態では、コンピュータシステムとして、仮想メモリ管理と、そのスワップファイルをフラッシュメモリデバイスに格納する際の管理を、ホスト側で統合するケースについて記載した。
一方、同様の機能の一部を記憶装置の側にもたせつつ、そのような記憶装置を汎用的に使用できれば便利である。
すなわち、記憶装置とホストとで役割を分担し、ホスト側はアプリケーションの仮想メモリ管理を、記憶装置側はフラッシュメモリデバイスへのファイル格納の管理を実施する。このような例を第3の実施形態として、図10のシステム構成図に関連付けて以下に説明する。
一方、同様の機能の一部を記憶装置の側にもたせつつ、そのような記憶装置を汎用的に使用できれば便利である。
すなわち、記憶装置とホストとで役割を分担し、ホスト側はアプリケーションの仮想メモリ管理を、記憶装置側はフラッシュメモリデバイスへのファイル格納の管理を実施する。このような例を第3の実施形態として、図10のシステム構成図に関連付けて以下に説明する。
図10は、ホスト側はアプリケーションの仮想メモリ管理を、記憶装置側はフラッシュメモリデバイスへのファイル格納の管理を実施するコンピュータシステムの構成例を示す図である。
図10のコンピュータシステム10dにおいて、CPU11dは32ビットのシステムバス13dを介してシステムメモリであるRAM12dと接続されている。さらに、システムバス13dにはブリッジ回路14dおよびそれに接続されたATA等のインターフェース回路50dを介して、ファイル記憶装置51cが接続されている。
RAM12dの下位アドレス領域18dに常駐するOSは、各アプリケーションの仮想メモリを管理し、そのイメージを4kBのページごとにRAM12dの領域20d内にマッピングする。
しかし領域20dに空き余裕がなくなると、使用頻度の少ないページをファイルにして、ファイル記憶装置51dの特定のアドレス領域内に格納し、RAM内の対応領域を破棄して空きを作る。
RAM12dの下位アドレス領域18dに常駐するOSは、各アプリケーションの仮想メモリを管理し、そのイメージを4kBのページごとにRAM12dの領域20d内にマッピングする。
しかし領域20dに空き余裕がなくなると、使用頻度の少ないページをファイルにして、ファイル記憶装置51dの特定のアドレス領域内に格納し、RAM内の対応領域を破棄して空きを作る。
ファイル記憶装置51dの内部バス56dには、転送制御回路55dを介して主記憶メディアであるNAND型フラッシュメモリデバイス17dが接続されている。
制御回路55dは内蔵したページバッファ15dとフラッシュメモリデバイス17dとの間のデータ転送を制御し、必要に応じて符号化および復号化回路16dを用いて符号化、復号化によるエラー補正を施す。
フラッシュメモリデバイス17dは、ページバッファ15dを介して記憶装置の内部バス56dとの間でデータを入出力する。
制御回路55dは内蔵したページバッファ15dとフラッシュメモリデバイス17dとの間のデータ転送を制御し、必要に応じて符号化および復号化回路16dを用いて符号化、復号化によるエラー補正を施す。
フラッシュメモリデバイス17dは、ページバッファ15dを介して記憶装置の内部バス56dとの間でデータを入出力する。
さらに内部バス56dにはインターフェース回路52d、および制御回路53dが接続されている。インターフェース回路52dはATAやPCIエクスプレス等の規格に従ってホスト側のインターフェース回路50dとの間で、データやコマンドの送受を行う。
制御回路53dは、記憶装置管理用のCPUを内蔵し、記憶装置の内部においてページバッファ15dとインターフェース回路52dの間のデータの送受を管理する。
ここに内蔵されたRAM54dには、制御プログラムやページセグメントの変換テーブル、検索テーブル、ライトポインタ等が構築されている。
制御回路53dは、記憶装置管理用のCPUを内蔵し、記憶装置の内部においてページバッファ15dとインターフェース回路52dの間のデータの送受を管理する。
ここに内蔵されたRAM54dには、制御プログラムやページセグメントの変換テーブル、検索テーブル、ライトポインタ等が構築されている。
制御回路53dによるファイル記憶装置内のメモリ管理手順は図8において説明した第2の実施形態と同様である。
すなわち、制御回路53dはRAM54dに格納されたページセグメント変換テーブル25b、検索テーブル41b、およびライトポインタ42b,44bを用いて、ホストから入力されたセクタアドレスをページセグメントの論理アドレスLPAに対応させ、さらに該論理アドレスとフラッシュメモリデバイス17dの物理アドレスPPAとの対応を管理する。
すなわち、制御回路53dはRAM54dに格納されたページセグメント変換テーブル25b、検索テーブル41b、およびライトポインタ42b,44bを用いて、ホストから入力されたセクタアドレスをページセグメントの論理アドレスLPAに対応させ、さらに該論理アドレスとフラッシュメモリデバイス17dの物理アドレスPPAとの対応を管理する。
本第3の実施形態と第2の実施形態との主たる相違は、第2の実施形態では上記管理をホスト側のドライバが実行し、各テーブル等がシステムRAM内に構築されているのに対し、本第3の実施形態では同等の管理が記憶装置51dの内部で行われており、管理テーブル等もその中に構築されていることである。
ところで、このようなファイル記憶装置は、複数ライトポインタ42b、44bの使いわけに関してホスト側の要求に整合させる必要がある。これを記憶装置側で汎用的に実現するには以下の2通りの手法が挙げられる。
まず、第一の手法としては、ホストからの入力アドレスに対応するストレージの論理アドレス範囲に従って、独立したライトポインタが割り振られるようにしておくことである。
そのような設定は、たとえば記憶装置をホストが初めて使用する際、ホストからのフォーマットコマンドに応じて行われるようにすれば良い。論理アドレス上の区間分けやライトポインタ数は自由に設定することが可能である。
この場合、一旦設定が完了すれば、それ以降は論理アドレスに従って、装置側で自動的にライトポインタが割り振られ、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
そのような設定は、たとえば記憶装置をホストが初めて使用する際、ホストからのフォーマットコマンドに応じて行われるようにすれば良い。論理アドレス上の区間分けやライトポインタ数は自由に設定することが可能である。
この場合、一旦設定が完了すれば、それ以降は論理アドレスに従って、装置側で自動的にライトポインタが割り振られ、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
あるいは、第二の手法としては、ホストがデータを入力する際に、ライトポインタを指定するような属性を付加できるようにしても良い。
具体的には、専用コマンドによってライトポインタ属性を与えると、その属性に従って設定されたライトポインタを用いて、その後のデータ書き込みが実施される。この場合適時専用コマンドを発することにより、複数のライトポインタを切り替えながらデータ格納が可能になり、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
具体的には、専用コマンドによってライトポインタ属性を与えると、その属性に従って設定されたライトポインタを用いて、その後のデータ書き込みが実施される。この場合適時専用コマンドを発することにより、複数のライトポインタを切り替えながらデータ格納が可能になり、ライトポインタごとに各々独立した消去ブロックが格納先として確保される。
ファイル記憶装置にこのような複数ライトポインタの切り替え機能を設けることにより、スワップアウトされたページファイルと一般ファイルの使い分けが、柔軟に効率よく行えるようになる。
すなわち、各ライトポインタは同じフラッシュメモリデバイスの領域内に、各ファイルに対応する格納ブロックを、混在して確保していく。
すなわち、各ライトポインタは同じフラッシュメモリデバイスの領域内に、各ファイルに対応する格納ブロックを、混在して確保していく。
また、ファイル記憶装置におけるこのような機能は、それ以外の一般的用途においても有効である。たとえばファイルシステムの管理領域は、ファイルと同じストレージメディア内に保存されるが、非常に書き換え頻度が高い。またデータベース等でファイルの整理や検索に使用されるメタデータも同様である。
このようなデータに各々個別のライトポインタを設定できれば、フラッシュメモリデバイスを効率良く使用することが可能になる。FATファイルシステムのFAT領域等、このようなデータは論理アドレス上の格納位置を指定できるケースも多いので、この場合論理アドレス範囲に従ってライトポインタを割り振れば、容易に対応することができる。
このようなデータに各々個別のライトポインタを設定できれば、フラッシュメモリデバイスを効率良く使用することが可能になる。FATファイルシステムのFAT領域等、このようなデータは論理アドレス上の格納位置を指定できるケースも多いので、この場合論理アドレス範囲に従ってライトポインタを割り振れば、容易に対応することができる。
10,10d・・・コンピュータシステム、11,11d・・・CPU、12,12d・・・システムメモリ(RAM)、13,13d・・・システムバス、14,14d・・・ブリッジ回路、15,15d・・・ページバッファ、16,16d・・・符号化および復号化回路、17,17d・・・NAND型フラッシュメモリ,50d・・・インターフェース回路、51d・・・ファイル記憶装置、52d・・・インターフェース回路、53d・・・制御回路、54d・・・RAM、55d・・・転送制御回路、56d・・・内部バス。
Claims (8)
- フラッシュメモリデバイスと、
アプリケーションが使用するメモリ空間を一定サイズに分割し、その一部内容をファイルにして、上記フラッシュメモリデバイスに格納するスワップアウト手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、
上記スワップアウト手段は、
上記ファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の特定アドレス範囲内に仮想的に格納する機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、を含む
コンピュータシステム。 - 上記フラッシュメモリデバイスにおいては、
上記スワップアウト用特定アドレス範囲を除く論理ページアドレス領域の少なくとも一部がユーザーデータを含む一般ファイルの保存に使用され、
当該ファイルも同一のルックアップテーブルによりアドレス変換が管理され、スワップアウトした上記ファイルと混在して上記フラッシュメモリデバイス上に格納される
請求項1記載のコンピュータシステム。 - 上記スワップアウトしたファイルと一般ファイルは、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上に混在的に確保される
請求項2記載のコンピュータシステム。 - 上記フラッシュメモリデバイスと、
上記フラッシュメモリデバイスにファイルを格納する格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、
上記格納手段は、
任意のファイルを上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレス上の任意の場所に仮想的に格納する機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと物理ページアドレスとの対応をルックアップテーブルに記録する機能と、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
コンピュータシステム。 - 主記憶媒体としてのフラッシュメモリデバイスと、
第2メモリと、有し、
ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、
上記ファイル格納手段は、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録する機能と、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
記憶装置。 - 主記憶媒体としてのフラッシュメモリデバイスと、
第2メモリと、有し、
ホストからファイルが書き込まれる際の、上記フラッシュメモリデバイスへのファイル格納手段と、を有し、
上記フラッシュメモリデバイスは、
一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含み、
上記ファイル格納手段は、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させる機能と、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させる機能と、
当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録する機能と
ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保する機能と、を含む
記憶装置。 - 主記憶媒体としてのフラッシュメモリデバイスと、
第2メモリと、有する記憶装置の管理方法であって、
上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含むように形成するステップと、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、
上記物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録するステップと、
格納先の論理ページアドレス区域に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップと
を有する記憶装置の管理方法。 - 主記憶媒体としてのフラッシュメモリデバイスと、
第2メモリと、有する記憶装置の管理方法であって、
上記フラッシュメモリデバイスを、一括消去単位である複数の消去ブロックを含み、当該消去ブロックは書き込み/読み出し単位である複数のページ領域を含むように形成するステップと、
ホストからの入力アドレスに対応する上記フラッシュメモリデバイスの仮想的なページアドレスたる論理ページアドレスを発生させるステップと、
上記ファイルが常に消去ブロックの下詰の未使用ページに書き込みがなされるように、上記フラッシュメモリデバイスの物理ページアドレスを発生させるステップと、
当該物理ページアドレスに従って上記フラッシュメモリデバイスに上記ファイルを格納するとともに、当該論理ページアドレスと、当該物理ページアドレスとの対応を、上記第2メモリ内に形成されたルックアップテーブルに記録するステップと、
ホストからの専用コマンドによって付与される属性に従って、各々独立した格納先消去ブロックを、上記フラッシュメモリデバイス上の同一領域内に混在して確保するステップと
を有する記憶装置の管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007051304A JP2008217208A (ja) | 2007-03-01 | 2007-03-01 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007051304A JP2008217208A (ja) | 2007-03-01 | 2007-03-01 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008217208A true JP2008217208A (ja) | 2008-09-18 |
Family
ID=39837205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007051304A Pending JP2008217208A (ja) | 2007-03-01 | 2007-03-01 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008217208A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011068109A1 (ja) * | 2009-12-03 | 2011-06-09 | 株式会社日立製作所 | 記憶装置、およびメモリコントローラ |
JP2014522023A (ja) * | 2011-07-01 | 2014-08-28 | アップル インコーポレイテッド | メモリタイプ間でデータを移動させるための技術 |
US9934100B2 (en) | 2014-03-11 | 2018-04-03 | Samsung Electronics Co., Ltd. | Method of controlling memory swap operation and data processing system using same |
JP2019148907A (ja) * | 2018-02-26 | 2019-09-05 | 大日本印刷株式会社 | 電子情報記憶媒体、icカード、電子情報記憶媒体による情報処理方法及びos |
-
2007
- 2007-03-01 JP JP2007051304A patent/JP2008217208A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011068109A1 (ja) * | 2009-12-03 | 2011-06-09 | 株式会社日立製作所 | 記憶装置、およびメモリコントローラ |
GB2488480A (en) * | 2009-12-03 | 2012-08-29 | Hitachi Ltd | Storage device and memory controller |
JP5480913B2 (ja) * | 2009-12-03 | 2014-04-23 | 株式会社日立製作所 | 記憶装置、およびメモリコントローラ |
US8949515B2 (en) | 2009-12-03 | 2015-02-03 | Hitachi, Ltd. | Storage device and memory controller |
GB2488480B (en) * | 2009-12-03 | 2017-07-19 | Hitachi Ltd | Storage device and memory controller |
JP2014522023A (ja) * | 2011-07-01 | 2014-08-28 | アップル インコーポレイテッド | メモリタイプ間でデータを移動させるための技術 |
US9195581B2 (en) | 2011-07-01 | 2015-11-24 | Apple Inc. | Techniques for moving data between memory types |
US9934100B2 (en) | 2014-03-11 | 2018-04-03 | Samsung Electronics Co., Ltd. | Method of controlling memory swap operation and data processing system using same |
JP2019148907A (ja) * | 2018-02-26 | 2019-09-05 | 大日本印刷株式会社 | 電子情報記憶媒体、icカード、電子情報記憶媒体による情報処理方法及びos |
JP7043886B2 (ja) | 2018-02-26 | 2022-03-30 | 大日本印刷株式会社 | 電子情報記憶媒体、icカード、電子情報記憶媒体による情報処理方法及びos |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
US10067684B2 (en) | File access method and apparatus, and storage device | |
US11748256B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109240938B (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
US10481837B2 (en) | Data storage device and method for operating data storage device with efficient trimming operations | |
US11861197B2 (en) | Memory system and information processing system | |
KR100823171B1 (ko) | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 | |
CN107818052B (zh) | 内存访问方法及装置 | |
US20120151127A1 (en) | Method of storing data in a storing device including a volatile memory device | |
US20060179263A1 (en) | Flash memory device and associated data merge method | |
JP2013137770A (ja) | Lbaビットマップの使用 | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
JP2008192154A (ja) | メモリマッピング方法およびメモリマッピングシステム | |
US11669264B2 (en) | Method for improving trim command response time | |
US8185687B2 (en) | Semiconductor storage device and method of controlling semiconductor storage device | |
US11126573B1 (en) | Systems and methods for managing variable size load units | |
JP2015507798A (ja) | メモリ・モジュールにおいてデータ・エンティティを消去するための方法 | |
US20230401149A1 (en) | Memory system and information processing system | |
WO2017000821A1 (zh) | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 | |
JP2008217208A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
US9329994B2 (en) | Memory system | |
JP2021007059A (ja) | メモリシステム | |
WO2020039927A1 (ja) | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム | |
US10572382B2 (en) | Method of operating data storage device and method of operating data processing system including the same | |
JP7204020B2 (ja) | 制御方法 |