(57)【要約】      （修正有）【課題】アクセス速度の異なる記憶手段を有するストレージデバイスにアクセスする際に、記憶領域が限定されることなく、データをアクセス速度が高速な記憶手段に割り振ることが可能なメモリ管理装置を提供する。【解決手段】ストレージデバイス１００は、コントローラ１０３、ＢＬＣフラッシュメモリ１０４、ＢＬＣフラッシュメモリ１０４よりもアクセス速度が低速なＭＬＣフラッシュメモリ１０５を備える。また、データを書き込む際に指定される論理ページとＢＬＣフラッシュメモリ１０４，ＭＬＣフラッシュメモリ１０５上の物理ページとが対応付けられたページ割り当て情報を格納する。そして、アクセス速度の異なるフラッシュメモリ１０４，１０５のいずれか一方にデータを書き込む場合、指定された論理ページに対応するページ割り当て情報に基づいて、高速なＢＬＣフラッシュメモリ１０４にデータを書き込む。【選択図】図１
2008242503.tif 000002
【特許請求の範囲】
【請求項１】
所定のアクセス速度でのアクセスが可能な第１の記憶手段と、前記所定のアクセス速度より低速なアクセス速度でのアクセスが可能な第２の記憶手段と、前記第１及び前記第２の記憶手段を複数の物理ページで構成されたユニットの単位で管理し、当該物理ページにデータを書き込む制御手段とを備えるメモリ管理装置において、
前記データを書き込む際に指定される論理ページと前記物理ページとが対応付けられたページ割り当て情報を格納する格納手段を備え、
前記制御手段は、前記第１又は前記第２の記憶手段のいずれか一方にデータを書き込む場合、指定された論理ページに対応するページ割り当て情報に基づいて、前記第１の記憶手段に前記データを書き込むことを特徴とするメモリ管理装置。
【請求項２】
前記制御手段は、前記データが前記第１の記憶手段に書き込まれるように、前記ページ割り当て情報におけるアクセス速度の指定を高速にすることを特徴とする請求項１記載のメモリ管理装置。
【請求項３】
前記論理ページへのアクセス頻度を判定するアクセス頻度の判定手段を更に備え、
前記制御手段は、前記アクセス頻度の判定手段によりアクセス頻度が高いと判定された場合、前記データが前記第１の記憶手段に書き込まれるように、前記ページ割り当て情報におけるアクセス速度の指定を高速にすることを特徴とする請求項１又は２記載のメモリ管理装置。
【請求項４】
前記ページ割り当て情報に基づいて前記論理ページが前記物理ページに未割り当てか否かを判別する判別手段と、
前記判別手段により割り当て済みと判別された論理ページの元データが保持されていた物理ページを消去待ちページに変更する変更手段と、
前記消去待ちページの数が閾値を超えたときに、当該物理ページに書き込まれているデータを別の物理ページに移すと共に、前記ユニットの管理情報を変更して消去状態にするガバレッジコレクション処理を実行するガバレッジコレクション処理手段とを更に備えることを特徴とする請求項１乃至３のいずれか１項に記載のメモリ管理装置。
【請求項５】
前記ガバレッジコレクション処理手段は、前記データの書き込みを行う毎に前記ガバレッジコレクション処理を実行することを特徴とする請求項４記載のメモリ管理装置。
【請求項６】
前記ガバレッジコレクション処理手段は、バックグラウンド処理として定期的に前記ガバレッジコレクション処理を実行することを特徴とする請求項４記載のメモリ管理装置。
【請求項７】
前記制御手段は、前記ガバレッジコレクション処理手段により前記物理ページに書き込まれているデータを別の物理ページに移す場合、移動後の物理ページに割り当てられた論理ページのアクセス速度を移動前のアクセス速度に指定にすることを特徴とする請求項４乃至６のいずれか１項に記載のメモリ管理装置。
【請求項８】
前記制御手段は、前記ガバレッジコレクション処理手段により前記物理ページに書き込まれているデータを別の物理ページに移す場合、移動後の物理ページに割り当てられた論理ページのアクセス速度をアクセス頻度に応じて指定することを特徴とする請求項４乃至６のいずれか１項に記載のメモリ管理装置。
【請求項９】
前記制御手段は、前記論理ページに対してアクセス速度が指定された場合は、当該論理ページに対応する書き込みデータを前記移動後の物理ページに書き込むと共に、前記ページ割り当て情報を更新することを特徴とする請求項７又は８記載のメモリ管理装置。
【請求項１０】
所定のアクセス速度でのアクセスが可能な第１の記憶手段と、前記所定のアクセス速度より低速なアクセス速度でのアクセスが可能な第２の記憶手段を複数の物理ページで構成されたユニットの単位で管理する管理工程と、
前記データを書き込む際に指定される論理ページと前記物理ページとが対応付けられたページ割り当て情報を前記第１及び前記第２の記憶手段のいずれか一方に格納する格納工程と、
前記第１又は前記第２の記憶手段のいずれか一方にデータを書き込む場合、指定された論理ページに対応するページ割り当て情報に基づいて、前記第１の記憶手段に前記データを書き込む書込工程とを備えることを特徴とするメモリ管理方法。
【請求項１１】
請求項１０記載のメモリ管理方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【請求項１２】
請求項１乃至９のいずれか１項に記載のメモリ管理装置に接続され、所定のファイルシステムが動作するホストシステムを備えるメモリ管理システムにおいて、
前記ホストシステムは、前記所定のファイルシステムによるフォーマットの際に、当該所定のファイルシステムに用いられる管理領域を第１の記憶手段に指定することを特徴とするメモリ管理システム。
【請求項１３】
請求項１乃至９のいずれか１項に記載のメモリ管理装置に接続され、所定のファイルシステムが動作するホストシステムを備えるメモリ管理システムにおいて、
前記所定のファイルシステムによるファイル及びディレクトリの生成の際に、当該所定のファイルシステムに用いられる管理領域を第１の記憶手段に指定することを特徴とするメモリ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス速度の異なる記憶手段を有するストレージデバイスをブロックデバイスとして使用し、任意のデータをアクセス速度が高速な記憶手段に割り振ることができるメモリ管理装置及び方法、並びにプログラムに関する。
技術に関する。
【背景技術】
【０００２】
従来、デジタルカメラ等のストレージメディアとしてフラッシュメモリが広く利用されている。フラッシュメモリには、１個のメモリセルに２つの値をとる２値型フラッシュメモリと、３つ以上の値をとる多値型フラッシュメモリとがある。多値型フラッシュメモリは、２値型フラッシュメモリと比べて単位セルあたりの記憶容量が増えるために、低コストで大容量化を実現できるという利点がある。一方、多値型フラッシュメモリは、多値化のための制御が複雑になるためにアクセス速度が低速になるという欠点がある。
【０００３】
近年、この多値型フラッシュメモリと２値型フラッシュメモリを組み合わせたハイブリッドタイプのフラッシュメモリが提案されている。ハイブリッドタイプのフラッシュメモリにより、大容量化とアクセス速度の高速化を低コストで実現することができる。
【０００４】
また、２値型及び多値型のフラッシュメモリを混載し、管理データを２値型フラッシュメモリに、ユーザデータを多値型フラッシュメモリにそれぞれ格納する記憶装置が提案されている（例えば、特許文献１参照）。さらに、２値型及び多値型の複数タイプのフラッシュメモリを使用し、使用目的にしたがって各タイプのメモリ領域を区別してアクセスできるデータ記憶システムが提案されている（例えば、特許文献２参照）。
【０００５】
デジタルカメラのストレージメディアとしてフラッシュメモリを使用する場合、ホストシステムはＦＡＴファイルシステムを用いて画像ファイルをフラッシュメモリに格納する。ＦＡＴファイルシステムでは、フラッシュメモリがファイルアロケーションテーブル、ディレクトリエントリ領域、及びデータ領域に分けて使用される。このうち、ファイルアロケーションテーブルとディレクトリエントリ領域は、あらゆるファイルアクセスにおいてアクセスされる領域である。特に、大容量のストレージメディアでは、これら２つの領域へのアクセス頻度が多くなる傾向にあり、これらの領域へのアクセス速度がファイルアクセス速度に大きく影響する。
【０００６】
一方、特定のファイルを高速領域に配置したいという要求がある。例えば、デジタルカメラなどで大量のファイルを管理する場合、どのディレクトリに何番の画像ファイルが格納されているかを管理するためのカタログファイルと呼ばれる管理用のファイルが作成される（例えば、特許文献３参照）。この管理用のファイルは、撮影画像の新規生成及び画像の閲覧のために頻繁に参照又は記録される。さらには、この管理用のファイルには、例えばデジタルカメラの電源起動時に次に生成するファイルの番号を決定するための情報等も格納されているために、電源起動後に最初の撮影が可能かどうかを判別するためには必ずアクセスしなければならない。したがって、撮影及び再生動作の高速化、並びに起動してから撮影可能になるまでの時間を短縮するためには、このような管理用ファイルのデータ領域なども高速領域に配置されることが好ましい。
【特許文献１】特開２００１−３０６３９３号公報
【特許文献２】特開平１１−３１１０２号公報
【特許文献３】特開平９−４４３９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献２記載のデータ記憶システムでは、ホストシステムが、当該ホストシステムから見たアドレスによって高速領域と低速領域を区別してアクセスするというものである。このため、ホストシステムは、書き込むデータを所望のアクセス速度で書き込む場合、データを配置するアドレスが限定されるという問題がある。
【０００８】
また、ＦＡＴファイルシステムを用いる場合、高速領域に配置することが好ましいと思われるファイルアロケーションテーブルやディレクトリエントリ領域は、メディアの容量、フォーマット、ファイルの状況に応じて任意のアドレスに配置される。このため、上述したデータ記憶システムのようにアドレスによって高速領域と低速領域の配置が固定される場合は、ＦＡＴファイルシステムで使用する任意の領域を高速領域に配置することができないという問題がある。
【０００９】
一方、ファイルシステムのクライアントが任意のファイルを高速領域への配置するためには、ＦＡＴファイルシステムが専用のコマンドを用意する必要がある。また、一般的に標準的なＩ／Ｆを使用することが前提であるファイルシステムのＩ／Ｆとしては好ましくないという問題がある。
【００１０】
また、ＦＡＴファイルシステムのＩ／Ｆに任意のファイルを高速領域に配置するコマンドを用意したとしても、ファイルシステムのクライアントが常に高速アクセスしたいファイルを認識できるとは限らない。そのため、高速アクセスしたいファイルを高速領域に配置することが難しいという問題がある。
【００１１】
本発明の目的は、アクセス速度の異なる記憶手段を有するストレージデバイスにアクセスする際に、記憶領域が限定されることなく、データをアクセス速度が高速な記憶手段に割り振ることが可能なメモリ管理装置及び方法並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、請求項１記載のメモリ管理装置は、所定のアクセス速度でのアクセスが可能な第１の記憶手段と、前記所定のアクセス速度より低速なアクセス速度でのアクセスが可能な第２の記憶手段と、前記第１及び前記第２の記憶手段を複数の物理ページで構成されたユニットの単位で管理し、当該物理ページにデータを書き込む制御手段とを備えるメモリ管理装置において、前記データを書き込む際に指定される論理ページと前記物理ページとが対応付けられたページ割り当て情報を格納する格納手段を備え、前記制御手段は、前記第１又は前記第２の記憶手段のいずれか一方にデータを書き込む場合、指定された論理ページに対応するページ割り当て情報に基づいて、前記第１の記憶手段に前記データを書き込むことを特徴とする。
【００１３】
上記目的を達成するために、請求項１０記載のメモリ管理方法は、所定のアクセス速度でのアクセスが可能な第１の記憶手段と、前記所定のアクセス速度より低速なアクセス速度でのアクセスが可能な第２の記憶手段を複数の物理ページで構成されたユニットの単位で管理する管理工程と、前記データを書き込む際に指定される論理ページと前記物理ページとが対応付けられたページ割り当て情報を前記第１及び前記第２の記憶手段のいずれか一方に格納する格納工程と、前記第１又は前記第２の記憶手段のいずれか一方にデータを書き込む場合、指定された論理ページに対応するページ割り当て情報に基づいて、前記第１の記憶手段に前記データを書き込む書込工程とを備えることを特徴とする。
【００１４】
上記目的を達成するために、請求項１２記載のメモリ管理システムは、請求項１乃至９のいずれか１項に記載のメモリ管理装置に接続され、所定のファイルシステムが動作するホストシステムを備えるメモリ管理システムにおいて、前記ホストシステムは、前記所定のファイルシステムによるフォーマットの時に、当該所定のファイルシステムに用いられる管理領域を第１の記憶手段に指定することを特徴とする。
【００１５】
上記目的を達成するために、請求項１３記載のメモリ管理システムは、請求項１乃至９のいずれか１項に記載のメモリ管理装置に接続され、所定のファイルシステムが動作するホストシステムを備えるメモリ管理システムにおいて、前記所定のファイルシステムによるファイル及びディレクトリの生成の際時に、当該所定のファイルシステムに用いられる管理領域を第１の記憶手段に指定することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、アクセス速度の異なる記憶手段を有するストレージデバイスにデータを書き込む場合、データを書き込むアドレスを限定することなく、データを高速アクセスが可能な記憶領域に割り振ることが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１８】
図１は、本発明の第１の実施形態に係るメモリ管理装置を含むメモリ管理システムの構成例を示すブロック図である。
【００１９】
図１において、メモリ管理システムは、例えば、ホストシステム１０１と、ストレージデバイス１００とで構成される。ホストシステム１０１は、不図示のファイルシステム、ブロックデバイスドライバなどが実装されている。
【００２０】
ホストシステム１０１は、例えば、ストレージデバイス１００を内蔵又は装着可能なデジタルカメラ等の機器側のＣＰＵ（Central Processing Unit）である。ストレージデバイス１００は、ホストシステム１０１に対してブロックデバイスとしての機能を提供する。ブロックデバイスは、複数バイトからなるデータブロックを１つの単位としてデータの入出力を行なうストレージメディアであり、例えばフラッシュメモリ等で構成される。
【００２１】
ストレージデバイス１００は、ホストインターフェース（Ｉ／Ｆ）部１０２、コントローラ１０３、ＢＬＣ（Binary Level Cell：２値型）フラッシュメモリ１０４、ＭＬＣ（Multi-Level Cell：多値型）フラッシュメモリ１０５、ＲＡＭ１０６を備える。
【００２２】
ホストＩ／Ｆ１０２は、ホストシステム１０１、コントローラ１０３、及びＲＡＭ１０６に接続されている。ホストＩ／Ｆ１０２は、ストレージデバイス１００とホストシステム１０１との間のバスの制御、ＲＡＭ１０６上に配置されるバッファへのデータの読み書き等の制御を行う。
【００２３】
コントローラ１０３は、ＢＬＣフラッシュメモリ１０４、ＭＬＣフラッシュメモリ１０５、及びＲＡＭ１０６に接続される。コントローラ１０３は、ストレージデバイス１００内のフラッシュメモリ１０４，１０５の制御、後述する論理ページ割り当てテーブルの管理などを行う。
【００２４】
ＭＬＣフラッシュメモリ１０５は、ＢＬＣフラッシュメモリ１０４よりもアクセス速度が低速である。ＲＡＭ１０６は、ホストシステム１０１とのデータの受け渡しのためのバッファとして、また論理ページ割り当てテーブル等を保持するために用いられる。
【００２５】
次に、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５の内部のメモリマップを図２（ａ）及び図２（ｂ）を参照して説明する。
【００２６】
図２は、図１の各フラッシュメモリ内部のメモリマップを示す図であり、（ａ）はＢＬＣフラッシュメモリ１０４、（ｂ）はＭＬＣフラッシュメモリ１０５である。
【００２７】
ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５は、それぞれ複数の消去ブロック（例えば、ページ＃０〜ページ＃Ｍ−１）で構成されるユニットの単位で管理される。ＢＬＣフラッシュメモリ１０４は、ユニット＃０からユニット＃Ｘ−１までのＸ個のユニットがある。ＭＬＣフラッシュメモリ１０５は、ユニット＃Ｘからユニット＃Ｘ＋ＹまでのＹ個のユニットがある。各ユニットの内部は、ユニット構成１５０に示すように、ページ＃０からページ＃Ｍ−１までのＭ個の物理ページ（物理ブロック）に分割されて管理されている。物理ページは、ブロックデバイスとして使用される連続のバイト列データである。通常、５１２バイトの整数倍のバイト数が１ページとして管理される。本実施の形態におけるストレージデバイス１００内には（（Ｘ＋Ｙ）×Ｍ）個の物理ページが存在することになる。
【００２８】
次に、上記各ユニットの属性情報を管理するユニット管理テーブルについて説明する。
【００２９】
図３は、ユニット管理テーブルの詳細を示す図である。
【００３０】
ユニット管理テーブル２００は、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５にあるすべてのユニットを管理するための管理情報であり、ＢＬＣフラッシュメモリ１０４上の所定のユニットに保持されている。
【００３１】
ユニット管理テーブル２００は、不良ユニットビットマップ２２１、消去済みユニットビットマップ２２２を備える。不良ユニットビットマップ２２１は、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５にあるすべてのユニット（ユニット＃０〜ユニット＃Ｘ＋ＹのＸ＋Ｙ個のユニット）のうちの不良ユニットの情報をビット値として保持する。消去済みユニットビットマップ２２２は、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５にあるすべてのユニットのうちの消去済みユニットの情報をビット値として保持する。
【００３２】
また、ユニット管理テーブル２００は、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５にある全てのユニットに対応するユニット管理情報（ユニット＃０管理情報２２３〜ユニット＃Ｘ＋Ｙ管理情報２２６）を保持する。
【００３３】
ユニット管理情報２４０は、ユニット＃０管理情報２２３〜ユニット＃Ｘ＋Ｙ管理情報２２６のうちの１つである。ユニット管理情報２４０は、有効ページ数２４１、空きページ数２４２、消去待ちページ数２４３、次の空きページエントリ２４４、物理ページ割り当てテーブル２４５、及びユニット消去回数２４６で構成される。
【００３４】
有効ページ数２４１は、ユニット内の有効ページ数を表している。空きページ数２４２は、有効ページ数２４１の内、未だ割り当てられていない書き込み可能な空きページの数を表している。消去待ちページ数２４３は、物理ページに一旦データの書き込みが行われ、その後、その物理ページが上書きされたか、別の空きページにデータが移動したために、消去待ち状態になっている物理ページの数を示している。消去待ちページが発生する処理については後述する。次の空きページエントリ２４４は、当該ユニット内で次に割り当てられる空きページのエントリ番号（アドレス）を示している。
【００３５】
物理ページ割り当てテーブル２４５は、当該ユニット上に配置される物理ページがそれぞれ何番の論理ページ（論理ブロック）に割り当てられているかを示すテーブルである。本実施の形態では、ユニットがＭ個のページで構成されるので、この物理ページ割り当てテーブル２４５はＭ個のエントリ（アドレス領域）を有するテーブルとなる。この物理ページ割り当てテーブル２４５のエントリが０ｘＦＦＦＦＦＦＦＦである場合は当該物理ページが空きページであることを示す。また、この物理ページ割り当てテーブル２４５のエントリ番号が０ｘＦＦＦＦＦＦＦ０である場合は当該物理ページが消去待ちページであることを示す。この物理ページ割り当てテーブル２４５のエントリが０ｘ００００００００から０ｘＦＦＦＦＦＦ００までは、当該物理ページが割り当てられている論理ページ番号（論理アドレス）を示す。
【００３６】
ユニット消去回数２４６は、当該ユニットの消去回数を表している。ユニット消去回数は、各ユニットの消去回数が均等になるように、論理ページとユニットの割り当てを管理するために用いられる。
【００３７】
次に、論理ページ割り当てテーブルについて説明する。
【００３８】
図４は、論理ページ割り当てテーブルの詳細を示す図である。
【００３９】
論理ページ割り当てテーブル３００は、ストレージデバイス１００がホストシステム１０１に対して提供するストレージサービスにおいて用いられる論理ページの情報を格納するためのテーブルである。この論理ページ割り当てテーブル３００は、ＢＬＣフラッシュメモリ１０４上の所定のユニットに保持される。ホストシステム１０１は、ストレージデバイス１００にアクセスする際に、論理ページを指定することによって、ＢＬＣフラッシュメモリ１０４及び／又はＭＬＣフラッシュメモリ１０５上の所定の物理ページへのアクセスを行う。
【００４０】
論理ページ割り当てテーブル３００は、ページ＃０割り当て情報エントリ３０１〜ページ＃Ｎ＋１割り当て情報エントリ３０６、・・・で構成され、それぞれが当該ページの割り当て情報エントリである。ページ割り当て情報エントリ３１０は、ページ割り当て情報エントリのビットアサインを示している。
【００４１】
ページ割り当て情報エントリ３１０内のステータス３１１は、論理ページの物理ページへの割り当て状況を示すビット値であり、“１”で割り当て済み状態、“０”で未割り当て状態を示す。未割り当て状態の論理ページは、初期化後、一度もホストシステム１０１から書き込みが行われていない状態の論理ページを示すものである。ホストシステム１０１が未割り当て状態の論理ページに対してデータ読み出しを行った場合は、コントローラ１０３はＲＡＭ１０６上の読み込みページバッファに０ｘＦＦの値でフィルしてホストシステム１０１に対してデータ渡す。
【００４２】
速度指定３１２は、ユーザが指定することが可能な論理ページの指定速度を示すビット値であり、“０”で速度指定無し、“１”で高速指定を示すものである。ユニット速度３１３は、当該論理ページが現在割り当てられている物理ページが存在するユニットの速度を示すビット値であり、“０”で低速ユニット、“１”で高速ユニット、を示すものである。本実施の形態では、低速ユニットはＭＬＣフラッシュメモリ１０５上のユニットを意味し、高速ユニットはＢＬＣフラッシュメモリ１０４上のユニットを意味する。これにより、任意の物理ページを高速又は低速に割り当てるように指定することができる。速度指定３１２は、予めユーザが指定することができる。
【００４３】
ユニット番号３１４は、当該論理ページが現在割り当てられている（対応付けられている）物理ページが存在するユニット番号である。ページオフセット３１５は、当該論理ページが現在割り当てられている物理ページのユニット上のページオフセット番号を示す。アクセス回数３１６は、当該論理ページへのアクセス回数を示す値が格納されている。平均アクセス間隔３１７には、当該ページへのアクセス間隔の平均時間が格納されている。アクセス回数３１６及び平均アクセス間隔３１７は、後述するページアクセス頻度の判定に用いられる。
【００４４】
コントローラ１０３は、ホストシステム１０１から指定された論理ページ番号（論理アドレス）を論理ページ割り当てテーブルの内容に基づいてアドレス変換する。そして、この変換アドレスに対応する物理ページ番号（物理アドレス）を使用して、ＢＬＣフラッシュメモリ１０４、ＭＬＣフラッシュメモリ１０５に対するデータの読み出し、書込み及び消去を行う。
【００４５】
次に、ホストシステム１０１とストレージデバイス１００との間の通信で用いられるコマンドについて説明する。
【００４６】
図５は、ストレージデバイス１００がサポートするコマンドの一覧を示す図である。
【００４７】
ストレージデバイス１００は、ホストシステム１０１からのコマンドとして、「Initialize」、「Page read」、「Page write」、「Set page fast」の４つのコマンドをサポートしている。それぞれのコマンドは０から３個のパラメータを伴って使用される。
【００４８】
「Initialize」コマンドは、コマンド番号０ｘ００で指定されるコマンドである。この「Initialize」コマンドは、図示のようにパラメータ無しで用いられ、ストレージデバイスの全領域を初期状態に設定するために用いられる。
【００４９】
「Page read」コマンドは、コマンド番号０ｘ１０で指定されるコマンドである。この「Page read」コマンドは、指定した論理ページのデータを読み出すために用いられる。「Page read」コマンドは、第一パラメータに読み出し開始位置を指定する開始論理ページ番号が、第二パラメータに読み出しページ数がそれぞれ指定される。ホストシステム１０１は、「Page read」コマンド及びパラメータを送信後、ストレージデバイス１００から所定の読み出しデータを受信する。
【００５０】
「Page write」コマンドは、コマンド番号０ｘ２０で指定されるコマンドである。この「Page write」コマンドは、指定した論理ページのデータを書き込むために用いられる。「Page write」コマンドは、第一パラメータに書き込み開始位置を指定する開始論理ページ番号が、第二パラメータに書き込みページ数がそれぞれ指定される。ホストシステム１０１は、「Page write」コマンド及びパラメータを送信後、ストレージデバイス１００に対して所定の書き込みデータを送信する。
【００５１】
「Page rate」コマンドは、コマンド番号０ｘ４０で指定されるコマンドである。この「Page rate」コマンドは、指定した論理ページのアクセス速度を指定するために用いられる。「Page rate」コマンドは、第一パラメータにアクセス速度を指定する開始論理ページ番号が、第二パラメータにアクセス速度を指定するページ数が、第三パラメータにアクセス速度がそれぞれ指定される。第三パラメータのアクセス速度は“１”が高速、“０”が通常を意味する。
【００５２】
次に、ストレージデバイス１００の初期化処理について説明する。
【００５３】
ストレージデバイス１００は使用される際に、まず初期化処理を行う。通常、初期化処理はストレージデバイスを製造する工場で出荷前に行われるものである。
【００５４】
ホストシステム１０１は、図５に示した「Initialize」コマンドをストレージデバイス１００に対して送信する。ストレージデバイス１００において、コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Initialize」コマンドを受信すると初期化処理を開始する。
【００５５】
図６は、コントローラ１０３により実行されるストレージデバイス１００の初期化処理の詳細を示すフローチャートである。
【００５６】
コントローラ１０３は、ＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５に配置される全ブロック（ユニット）の消去を行う（ステップＳ４０１）。次に、コントローラ１０３は、ユニット管理テーブル２００の初期化処理を行う（ステップＳ４０２）。そして、コントローラ１０３は、論理ページ割り当てテーブル３００の初期化処理を行い（ステップＳ４０３）、本処理を終了する。
【００５７】
図６のステップＳ４０２におけるユニット管理テーブル２００の初期化処理の詳細について図７を用いて説明する。
【００５８】
図７は、図６のステップＳ４０２におけるユニット管理テーブル２００の初期化処理の詳細を示すフローチャートである。
【００５９】
まず、コントローラ１０３は、不良ユニットビットマップ２２１の初期化を行う（ステップＳ４１１）。次に、消去済みユニットビットマップ２２２をすべて“１”にセットしてすべてのユニットを消去済み状態にする（ステップＳ４１２）。
【００６０】
次に、すべてのユニットのユニット管理情報２４０の初期化を、ステップＳ４１４からステップＳ４２０までのステップを繰り返すことにより行う。まず、コントローラ１０３は、有効ページ数２４１の領域にユニットの総ページ数をセットし（ステップＳ４１４）、空きページ数２４２の領域にユニットの総ページ数をセットする（ステップＳ４１５）。
【００６１】
次に、コントローラ１０３は、消去待ちページ数２４３の領域に“０”をセットし（ステップＳ４１６）、次の空きページエントリ２４４の領域に“０”をセットする（ステップＳ４１７）。次に、コントローラ１０３は、物理ページ割り当てテーブル２４５の全エントリに０ｘＦＦＦＦＦＦＦＦをセットし（ステップＳ４１８）、消去回数２４６の領域に１をセットする（ステップＳ４１９）。工場出荷時の始めての消去のであれば１をセットし、それ以後の初期化処理であれば既存の値に１加算した値を格納する。そして、ユニット＃０からユニット＃Ｘ＋Ｙまでのすべてのユニットに対して処理が終了したか否かを判別し（ステップＳ４２０）、すべてのユニットに対して処理が終了したときはリターンする。
【００６２】
次に、図６のステップＳ４０３における論理ページ割り当てテーブルの初期化処理の詳細について図８を用いて説明する。
【００６３】
図８は、図６のステップＳ４０３における論理ページ割り当てテーブル３００の初期化処理の詳細を示すフローチャートである。
【００６４】
すべての論理ページのページ割り当て情報エントリ３１０（例えば、ページ＃０割り当て情報エントリ３０１〜ページ＃２割り当て情報エントリ３０３）の初期化を、ステップＳ４３２からステップＳ４３９までのステップを繰り返すことにより行う。
【００６５】
まず、コントローラ１０３は、ステータス３１１のビット値をゼロ（未割り当て状態）にセットする（ステップＳ４３２）。次に、速度指定３１２のビット値を“０”（指定無し）にセットする（ステップＳ４３３）。次に、ユニット速度３１３のビット値を“０”（低速ユニット）にセットする（ステップＳ４３４）。次に、ユニット番号３１４に０ｘＦＦＦＦをセットする（ステップＳ４３５）。次に、ページオフセット３１５に０ｘＦＦＦＦをセットする（ステップＳ４３６）。次に、アクセス回数３１６の値を“０”にセットする（ステップＳ４３７）。次に、平均アクセス間隔３１７の値を“０”ｓｅｃ（０ｘＦＦＦＦ）にセットする（ステップＳ４３８）。そして、ページ０からのすべてのページに対する処理が終了したか否かを判別し（ステップＳ４３９）、すべての論理ページのページ割り当て情報エントリ３１０に対して処理が行われたときはリターンする。
【００６６】
次に、ホストシステム１０１がストレージデバイス１００からデータの読み出しを行う場合の処理の流れについて説明する。
【００６７】
ホストシステム１０１は、図５に示した「Page read」コマンドをストレージデバイス１００に対して送信する。「Page read」コマンドは、パラメータ「開始論理ページ番号」及び「ページ数」を伴って転送される。
【００６８】
ストレージデバイス１００において、コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Page read」コマンド、「開始論理ページ番号」及び「ページ数」を受信するとデータ読み出し処理を開始する。コントローラ１０３は、「Page read」コマンドと一緒に受信した「開始論理ページ番号」及び「ページ数」のパラメータを基に、データを読み出す論理ページの指定を行う。
【００６９】
図９は、コントローラ１０３により実行されるデータ読み出し処理の詳細を示すフローチャートである。
【００７０】
「Page read」コマンドの「開始論理ページ番号」から「ページ数」で指定された論理ページすべてに対して、ステップＳ６０２からステップＳ６０７までの処理が実行される。
【００７１】
まず、コントローラ１０３は、論理ページ割り当てテーブル３００から当該ページのページ割り当て情報エントリ３１０を取得する（ステップＳ６０２）。次に、取得したページ割り当て情報エントリ３１０のステータス３１１のビット値を判定する（ステップＳ６０３）。ステータス３１１のビット値が“０”であれば当該論理ページは未割り当て状態と判断し、ステップＳ６１０へ移行する。一方、ステータス３１１のビット値が“１”であれば当該論理ページは割り当て済み状態と判断し、ステップＳ６０４へ移行する。
【００７２】
ステップＳ６１０では、ＲＡＭ１０６上に存在する当該論理ページの読み出しのためのページバッファ領域を０ｘＦＦでフィルする。すなわち、割り当てられていない論理ページに対しては、データが書き込まれた実績がないので、フラッシュメモリの消去状態である０ｘＦＦの値をすべてのバイトの値として返すものである。
【００７３】
ステップＳ６０４では、ページ割り当て情報エントリ３１０からユニット番号３１４、ページオフセット３１５の値をそれぞれ取得する（ステップＳ６０４）。次に、取得したユニット番号、ページオフセットの位置に相当する物理ページの場所をＢＬＣフラッシュメモリ１０４若しくはＭＬＣフラッシュメモリ１０５から特定して、特定した物理ページからページデータを読み出す。読み出されたページデータは当該論理ページの読み出しのための読み出しページバッファに格納される（ステップＳ６０５）。読み出しページバッファはＲＡＭ１０６上に確保されている。
【００７４】
次に、論理ページ割り当てテーブル３００上の当該ページデータに対応するページ割り当て情報エントリ３１０のアクセス回数３１６の値を１インクリメントすると共に、平均アクセス間隔３１７の値を更新する（ステップＳ６０６）。そして、ステップＳ６０１からステップＳ６０７までの処理が終了し、指定された論理ページのデータ読み出しがすべて終了するとループを抜ける（ステップＳ６０７でＹＥＳ）。
【００７５】
コントローラ１０３は、ホストＩ／Ｆ１０２に対してレディフラグをセットして（ステップＳ６０８）、本処理を終了する。レディフラグがセットされると、ホストシステム１０１とホストＩ／Ｆ１０２との通信が開始され、指定されたページのデータの転送が行われる。
【００７６】
次に、ホストシステム１０１がストレージデバイス１００に対してデータの書き込みを行う場合の処理の流れについて説明する。
【００７７】
ホストシステム１０１は、図５に示した「Page write」コマンドをストレージデバイス１００に対して送信する。「Page write」コマンドは、パラメータ「開始論理ページ番号」、「ページ数」、及び当該ページの書き込みデータを伴って転送される。
【００７８】
ストレージデバイス１００において、コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Page write」コマンド、「開始論理ページ番号」、及び「ページ数」を受信するとデータ書き込み処理を開始する。ホストＩ／Ｆ１０２は、コマンド、パラメータに続いて送信される当該ページの書き込みデータを受信すると、ＲＡＭ１０６上に存在する当該論理ページの書き込みのためのページバッファ領域に当該書き込みデータを格納する。
【００７９】
図１０は、コントローラ１０３により実行されるデータ書き込み処理の詳細を示すフローチャートである。
【００８０】
「Page write」コマンドの「開始論理ページ番号」から「ページ数」で指定された論理ページすべてに対して、ステップＳ７０２からステップＳ７０４までの処理が実行される。
【００８１】
まず、コントローラ１０３は、当該論理ページの開始論理ページ番号と書き込みデータを引数にしてページ書き込み処理を実行する（ステップＳ７０２）。ページ書き込み処理の詳細については後述する。
【００８２】
ステップＳ７０２のページ書き込み処理が終了すると、論理ページ割り当てテーブル３００上の当該論理ページに対応するページ割り当て情報エントリ３１０のアクセス回数３１６及び平均アクセス間隔３１７の値をそれぞれ更新する。ステップＳ７０２からステップＳ７０４までの処理が終了し、指定された論理ページの書き込みがすべて終了するとループを抜ける（ステップＳ７０４）。
【００８３】
次に、コントローラ１０３は、ホストＩ／Ｆ１０２に対してレディフラグをセットして（ステップＳ７０５）、ホストシステム１０１に対して書き込み処理が終了したことを通知する。次に、ステップＳ７０２のページ書き込み処理において生成されるＧＣキューに登録されているすべてのユニットに対して、ステップＳ７０７からステップＳ７０９までの処理が実行される。
【００８４】
まず、当該ユニットのユニット管理情報２４０を参照して消去待ちページ数２４３の値を取得し、予め設定されている閾値と比較する（ステップＳ７０７）。この結果、消去待ちページ数２４３が閾値よりも小さい場合は（ステップＳ７０７でＮＯ）、後述するガバレッジコレクション処理（ステップＳ７０８）をスキップしてステップＳ７０９へ移行する。一方、消去待ちページ数２４３が閾値よりも大きい場合は（ステップＳ７０７でＹＥＳ）、ガバレッジコレクション処理（ステップＳ７０８）を実行してステップＳ７０９へ移行する。このガバレッジコレクション処理はデータ書き込みを行う毎に実行される。
【００８５】
ステップＳ７０６からステップＳ７０９までの処理が終了し、ＧＣキューに登録されているすべてのユニットに対して処理が終了するとループを抜ける（ステップＳ７０９でＹＥＳ）。
【００８６】
次に、図１０のステップＳ７０２におけるページ書き込み処理の詳細について図１１を用いて説明する。
【００８７】
図１１は、図１０のステップＳ７０２におけるページ書き込み処理の詳細を示すフローチャートである。
【００８８】
まず、コントローラ１０３は、当該論理ページの開始論理ページ番号と書き込みデータを引数にして、論理ページ割り当てテーブル３００から当該論理ページに対応するページ割り当て情報エントリ３１０を取得する（ステップＳ８０１）。次に、取得したページ割り当て情報エントリ３１０の情報を元に、書き込み先ページ速度判定処理を行う（ステップＳ８０２）。この書き込み先ページ速度判定処理の詳細については後述する。
【００８９】
ステップＳ８０２の書き込み先ページ速度判定処理において、高速が決定されていた場合は（ステップＳ８０３でＹＥＳ）、ステップＳ８０４の高速物理ページ割り当て処理へ移行する。一方、書き込み先ページ速度判定処理において低速ページに決定されるか又は指定なしの場合は（ステップＳ８０３でＮＯ）、ステップＳ８１１の低速物理ページ割り当て処理へ移行する。
【００９０】
ステップＳ８０４の高速物理ページ割り当て処理及びステップＳ８１１の低速物理ページ割り当て処理では、それぞれＢＬＣフラッシュメモリ１０４及びＭＬＣフラッシュメモリ１０５からページ書き込みのための物理ページが割り当てられる。ステップＳ８０４及びステップＳ８１１における物理ページ割り当て処理の詳細については後述する。
【００９１】
次に、コントローラ１０３は、ＲＡＭ１０６上の書き込みページバッファにある当該ページの書き込みデータを、アクセス速度が指定された物理ページに書き込む（ステップＳ８０５）。次に、論理ページ割り当てテーブル３００上の当該ページに対応するページ割り当て情報エントリ３１０のユニット番号３１４及びページオフセット３１５の領域に対して、割り当てた物理ページの位置を指す値を書き込み、論理ページ割り当てテーブルを更新する。
【００９２】
次に、コントローラ１０３は、ページ割り当て情報エントリ３１０のステータス３１１のビット値を判定する（ステップＳ８０７）。ステータス３１１のビット値が“０”であれば当該論理ページは未割り当て状態と判断し、ステップＳ８１２へ移行する。ステータス３１１のビット値が“１”であれば当該論理ページは割り当て済み状態と判断し、ステップＳ８０８へ移行する。
【００９３】
ステップＳ８１２では、コントローラ１０３は、論理ページ割り当てテーブル３００上のページ割り当て情報エントリ３１０のステータス３１１のビット値を“１”にセットしてリターンする。ステップＳ８０８では、以前の書き込みデータ（元データ）が保持されていた物理ページについて、当該ユニットのユニット管理情報２４０の物理ページ割り当てテーブル２４５の当該物理ページのエントリを０ｘＦＦＦＦＦＦＦ０にセットする。さらに消去待ちページ数２４３の値を１インクリメント（＋１）して消去待ちに変更する。
【００９４】
次に、コントローラ１０３は、当該ユニットのユニット番号をＧＣキューに追加し、ガバレッジコレクションの対象の候補となるユニットとして保管して（ステップＳ８０９）、リターンする。
【００９５】
次に、図１１のステップＳ８０２における書き込み先ページ速度判定処理の詳細について図１２を用いて説明する。
【００９６】
図１２は、図１１のステップＳ８０２における書き込み先ページ速度判定処理の詳細を示すフローチャートである。
【００９７】
まず、コントローラ１０３は、データの書き込み先となる論理ページに対応するページ割り当て情報エントリ３１０を論理ページ割り当てテーブル３００から取得する（ステップＳ８２１）。
【００９８】
次に、コントローラ１０３は、ページ割り当て情報エントリ３１０上の速度指定３１２のビット値を判定する（ステップＳ８２２）。速度指定３１２のビット値が“１”であれば予め高速指定がなされていると判断し、書き込み先の論理ページを高速に決定して（ステップＳ８２５）、リターンする。一方、速度指定３１２のビット値が“０”であれば予め高速指定がなされていないか又はなんら指定されていないと判断し、ステップＳ８２３に移行する。
【００９９】
ステップＳ８２３では、コントローラ１０３は、ページ割り当て情報エントリ３１０上のアクセス回数３１６の値を判定する。アクセス回数３１６の値が所定値よりも大きい場合は（ステップＳ８２３でＹＥＳ）、ステップＳ８２４に移行する。一方、アクセス回数３１６の値が所定値よりも小さい場合は（ステップＳ８２３でＮＯ）、書き込み先の論理ページを低速に決定して（ステップＳ８２６）、リターンする。
【０１００】
ステップＳ８２４では、コントローラ１０３は、ページ割り当て情報エントリ３１０上の平均アクセス間隔３１７の値を評価する。平均アクセス間隔３１７の値が所定値よりも小さい場合は（ステップＳ８２４でＹＥＳ）、ステップＳ８２５に移行する。一方、平均アクセス間隔３１７の値が所定値よりも大きい場合は（ステップＳ８２４でＮＯ）、ステップＳ８２６に移行する。
【０１０１】
本処理により、図１３に示す条件で物理ページが高速領域に割り当てられることとなる。すなわち、速度指定が高速でなくともアクセス回数が多く且つ平均アクセス間隔が小さい場合、データの書き込み先を高速ページ（ＢＬＣフラッシュメモリ）に決定するので、頻繁にアクセスされるページをアクセス頻度に応じて高速領域に割り振ることができる。
【０１０２】
次に、図１１のステップＳ８０４及びステップＳ８１１における物理ページ割り当て処理の詳細について図１４を用いて説明する。
【０１０３】
図１４は、物理ページ割り当て処理の詳細を示すフローチャートである。
【０１０４】
まず、コントローラ１０３は、ユニット管理テーブル２００上のユニット管理情報２４０に対して検索を行い、空きページのあるユニットを見つける（ステップＳ８４１）。ここで、割り当てたい物理ページが高速ページである場合は、ユニット＃０からユニット＃Ｘ−１までのユニット管理情報２４０を検索対象とする。割り当てたい物理ページが低速ページ（ＭＬＣフラッシュメモリ）である場合は、ユニット＃Ｘからユニット＃Ｘ＋Ｙまでのユニット管理情報２４０を検索対象とする。空きページのあるユニットが見つかったときは、当該ユニットのユニット管理情報２４０上の空きページ数２４２の値から１デクリメント（−１）する（ステップＳ８４２）。
【０１０５】
次に、コントローラ１０３は、当該ユニットのユニット管理情報２４０上の次の空きページエントリ２４４の値を戻り値にセットし（ステップＳ８４３）、次の空きページエントリ２４４の値に１インクリメント（＋１）する（ステップＳ８４４）。そして、当該ユニットの物理ページ割り当てテーブル２４５上の割り当て物理ページに、該当する物理ページのエントリに割り当てる論理ページの番号をセットして（ステップＳ８４５）、リターンする。本処理により、コントローラ１０３は、戻り値として割り当てページエントリを返す。
【０１０６】
次に、図１０のステップＳ７０８におけるガバレッジコレクション処理の詳細について図１５を用いて説明する。
【０１０７】
図１５は、図１０のステップＳ７０８におけるガバレッジコレクション処理の詳細を示すフローチャートである。当該ユニットの物理ページすべてに対して、ステップＳ９０２からステップＳ９０７までの処理が実行される。
【０１０８】
まず、コントローラ１０３は、物理ページ割り当てテーブル２４５からループ毎に順に物理ページのエントリを取得する（ステップＳ９０２）。取得したエントリが０ｘＦＦＦＦＦＦＦＦであるときは、当該ページは空きページであるとみなして（ステップＳ９０３でＹＥＳ）、ステップＳ９０４〜Ｓ９０６をスキップしてループを継続する。一方、取得したエントリが０ｘＦＦＦＦＦＦＦ０であるときは、当該ページは消去待ちページであるとみなして（ステップＳ９０４でＹＥＳ）、ステップＳ９０５，Ｓ９０６をスキップしてループを継続する。
【０１０９】
ステップＳ９０５では、コントローラ１０３は、当該物理ページに書き込まれているページデータをＲＡＭ１０６上の読み出しページバッファに読み出す。次に、読み出したページデータを別の物理ページに移すためにページ書き込み処理を実行する（ステップＳ９０６）。このページ書き込み処理は、上述した図１１に示した処理と同様の処理である。
【０１１０】
なお、読み出したページデータを別の物理ページに移す場合、移動後の物理ページに割り当てられた論理ページのアクセス速度を移動前の速度に指定にするかまたは移動後の物理ページに割り当てられた論理ページのアクセス速度をアクセス頻度に応じて指定する。また、論理ページに対応する書き込みデータを移動後の物理ページに書き込むと共に、論理ページ割り当てテーブル３００を更新する。
【０１１１】
物理ページ割り当てテーブル２４５のすべてのエントリに対して、ステップＳ９０２からステップＳ９０７までの処理が終了するとループを抜ける（ステップＳ９０７でＹＥＳ）。
【０１１２】
ステップＳ９０８では、コントローラ１０３は、すべての物理ページへの処理が終わると当該ユニット上には有効なデータは残っていない状態になるので、ユニット物理消去を行う。ユニット物理消去は、ＢＬＣフラッシュメモリ１０４若しくはＭＬＣフラッシュメモリ１０５の当該消去ブロックを物理的に消去する。次に、ユニット論理消去処理を行う（ステップＳ９０９）。ユニット論理消去処理の詳細については後述する。
【０１１３】
次に、図１５のステップＳ９０９におけるユニット論理消去処理の詳細について図１６を用いて説明する。
【０１１４】
図１６は、図１５のステップＳ９０９におけるユニット論理消去処理の詳細を示すフローチャートである。
【０１１５】
まず、コントローラ１０３は、ユニット管理テーブル２００の消去済みユニットビットマップ２２２上の当該ユニットのビット値を“１”にセットする（ステップＳ９５１）。次に、当該ユニットのユニット管理情報２４０上の有効ページ数２４１にユニットの総ページ数であるＭをセットする（ステップＳ９５２）。次に、当該ユニットのユニット管理情報２４０上の空きページ数２４２にユニットの総ページ数であるＭをセットする（ステップＳ９５３）。
【０１１６】
次に、コントローラ１０３は、当該ユニットのユニット管理情報２４０上の消去待ちページ数２４３に“０”をセットする（ステップＳ９５４）。次に、当該ユニットのユニット管理情報２４０上の次の空きページエントリ２４４に“０”をセットする（ステップＳ９５５）。次に、当該ユニットのユニット管理情報２４０上の物理ページ割り当てテーブル２４５のすべてのエントリに０ｘＦＦＦＦＦＦＦＦＦをセットする。さらに、当該ユニットのユニット管理情報２４０上の消去回数２４６の値を１インクリメント（＋１）する。これにより、当該ユニットのユニット管理情報２４０が消去状態となる。
【０１１７】
次に、ホストシステム１０１からストレージデバイス１００に対して論理ページへのアクセス速度を指定する処理の流れについて説明する。
【０１１８】
ホストシステム１０１は、図５に示した「Page rate」コマンドをストレージデバイス１００に対して送信する。「Page rate」コマンドはパラメータ「開始論理ページ番号」、「ページ数」、及び「アクセス速度」を伴って転送される。ストレージデバイス１００において、コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Page rate」コマンド、「開始論理ページ番号」、「ページ数」、及び「速度」のパラメータを受信すると、論理ページへのアクセス速度の指定処理を開始する。
【０１１９】
図１７は、コントローラ１０３により実行されるページのアクセス速度指定処理の詳細を表したフローチャートである。
【０１２０】
コントローラ１０３は、「Page rate」コマンドと一緒に受信した「開始論理ページ番号」及び「ページ数」のパラメータを基に、アクセス速度を指定する論理ページの指定を行う。指定された論理ページすべてに対して、ステップＳ１００２からステップＳ１００４までの処理が実行される。
【０１２１】
まず、コントローラ１０３は論理ページ割り当てテーブル３００より当該ページのページ割り当て情報エントリ３１０を取得する（ステップＳ１００２）。次に、当該ページのページ割り当て情報エントリ３１０のユニット速度３１３のビット値にパラメータ「アクセス速度」の値をセットする（ステップＳ１００３）。
【０１２２】
ステップＳ１００２からステップＳ１００４までの処理を繰り返すことにより、指定された論理ページの速度指定がすべて終了するとループを抜ける（ステップＳ１００４でＹＥＳ）。次に、コントローラ１０３は、ホストＩ／Ｆ１０２に対してレディフラグをセットする（ステップＳ１００５）。レディフラグがセットされると、ホストシステム１０１とホストＩ／Ｆ１０２の通信が開始され、アクセス速度指定が終了したことをホストシステム１０１に通知する。
【０１２３】
予めアクセス速度が指定されている場合は、本処理により、データ書き込み時に、指定されたアクセス速度が物理ページに割り当てられる。また、アクセス状況に応じて、上書き又はガバレッジコレクション処理が発生して論理ページの割り当てられている物理ページの位置が変更になるときに、速度判定に応じた物理ページに割り当てられる。
【０１２４】
次に、ホストシステム１０１上で動作するファイルシステムがストレージデバイス１００を論理フォーマットするときの処理について説明する。
【０１２５】
図１８は、ホストシステム１０１上で動作するファイルシステムのフォーマット処理を示すフローチャートである。図１９は、ＦＡＴファイルシステムでフォーマットされているブロックデバイスの内部のデータ構造を示す図である。
【０１２６】
ホストシステム１０１は、ＭＢＲ１１０１〜ルートディレクトリエントリ１１０６の配置されるべきセクタの論理ページを「Page rate」コマンドを用いて高速ページに指定する（ステップＳ１２０１〜ステップＳ１２０４）。
【０１２７】
次に、ホストシステム１０１は、ＭＢＲ１１０１〜ルートディレクトリエントリ１１０６の値を「Page write」コマンドを用いて書き換えることによって、ＦＡＴファイルシステムの初期状態にする（ステップＳ１２０５〜ステップＳ１２０８）。そして、ファイルシステムのフォーマット処理を終了する。この「Page write」コマンドが実行されることにより、ステップＳ１２０１〜ステップＳ１２０４において指定された論理ページはすべて高速ページとしてＢＬＣフラッシュメモリ１０４上の物理ページへ配置される。すなわち、フォーマットが実行されると、ファイルシステムで用いられる管理領域のＭＢＲ１１０１〜ルートディレクトリエントリ（ＲｏｏｔＤｉｒ）１１０６といった、頻繁にアクセスされる可能性の高い記憶領域が高速ページに配置されることとなる。
【０１２８】
ＦＡＴファイルシステムにおいて、ファイルやディレクトリを生成する場合には、ルートディレクトリエントリ１１０６又は不図示のサブディレクトリ領域にディレクトリエントリを生成して配置する必要がある。したがって、ルートディレクトリエントリ１１０６以外にも、サブディレクトリを作成してファイルを配置させる場合、論理ページを予め「Page rate」コマンドを用いて高速ページに指定することが可能である。この論理ページは、サブディレクトリ領域として使用するクラスタ位置に相当する。これにより、随時生成されるサブディレクトリ領域も、高速ページに配置することが可能となる。
【０１２９】
このようにして、ルートディレクトリエントリ及びサブディレクトリエントリが高速ページに配置されることによって、ＦＡＴファイルシステムにおけるディレクトリエントリのパースの処理が高速になる。そして、ファイル名の検索や新規生成ファイルの名前重複検査処理が高速になり、ファイルアクセスの相対的な高速化を実現することができる。
【０１３０】
上記第１の実施の形態によれば、アクセス速度の異なる記憶手段（又は記憶領域）を有するストレージデバイスにアクセスする際に、データを書き込む記憶領域が限定されることなく、任意のデータをアクセス速度が高速な記憶手段等に割り振ることが可能となる。また、記憶領域に対するアクセス頻度を記録し、頻繁にアクセスされる記憶領域を高速な記憶領域に割り振ることができ、アクセス頻度の高いデータやファイルのアクセスを効果的に高速化することが可能となる。
【０１３１】
また、データの上書きやガバレッジコレクション処理等によって論理ページ（論理ブロック）と物理ページ（物理ブロック）の割り当てが変更になった場合においても、所望のアクセス速度を有する記憶領域にファイルやデータの配置を維持することが可能となる。
【０１３２】
次に、本発明の第２の実施形態について説明する。
【０１３３】
本発明の第２の実施の形態に係るメモリ管理装置は、その構成（図１〜図５）が上記第１の実施の形態に係るメモリ管理装置と同じであり、第１の実施の形態と同様の部分については、同一の符号を用いてその説明を省略する。以下に、上記第１の実施の形態と異なる点のみを説明する。
【０１３４】
上述した第１の実施形態では、図１０に示すように、ストレージデバイス１００がデータ書き込み処理を行うタイミングでガバレッジコレクション処理を行った。本第２の実施形態では、ガバレッジコレクション処理をデータ書き込み時毎に行わず、バックグラウンド処理として非同期に行うものである。これにより、書き込み時の処理を軽減することが可能となり、相対的に書き込み時の処理時間が短くなる。
【０１３５】
第２の実施形態における、ホストシステム１０１からストレージデバイス１００に対してデータの書き込みを行う場合の処理の流れについて説明する。
【０１３６】
ホストシステム１０１は、図５に示した「Page write」コマンドをストレージデバイス１００に対して送信する。「Page write」コマンドは、パラメータ「開始論理ページ番号」、「ページ数」、及び当該ページの書き込みデータを伴って転送される。
【０１３７】
ストレージデバイス１００において、コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Page write」コマンド、「開始論理ページ番号」、及び「ページ数」を受信するとデータ書き込み処理を開始する。ホストＩ／Ｆ１０２は、コマンド、パラメータに続いて送信される当該ページの書き込みデータを受信すると、ＲＡＭ１０６上に存在する当該論理ページの書き込みのためのページバッファ領域に当該書き込みデータを格納する。
【０１３８】
図２０は、本発明の第２の実施形態におけるストレージデバイス１００のコントローラ１０３により実行されるデータの書き込み処理の詳細を示すフローチャートである。なお、図２０のステップＳ７０２からステップＳ７０５までの処理は、図１０のステップＳ７０２からステップＳ７０５までの処理と同じであるため、その説明を省略する。
【０１３９】
次に、バックグラウンドで実行されるガバレッジコレクション（ＧＣ）処理について説明する。
【０１４０】
図２１は、コントローラ１０３によりバックグラウンドで実行されるガバレッジコレクション処理の詳細を示すフローチャートである。図２１のステップＳ７０７からステップＳ７０９までの処理は、図１０のステップＳ７０７からステップＳ７０９までの処理と同じであるため、その説明を省略する。
【０１４１】
図２１に示すガバレッジコレクション処理は、所定の時間間隔毎に、定期的に行われるものである。なお、このガバレッジコレクション処理は、定期的に実行する代わりに、ストレージデバイス１００へのアクセスが所定回数実施される毎に行ってもよい。
【０１４２】
次に、本発明の第３の実施形態について説明する。
【０１４３】
本発明の第３の実施の形態に係るメモリ管理装置は、その構成（図１〜図５）が上記第１の実施の形態に係るメモリ管理装置と同じであり、第１の実施の形態と同様の部分については、同一の符号を用いてその説明を省略する。以下に、上記第１の実施の形態と異なる点のみを説明する。
【０１４４】
上述した第１の実施形態では、図１７に示すように、ホストシステム１０１が「Page rate」コマンドでページ速度を指定した場合に、当該ページのページ割り当て情報エントリ３１０の速度指定３１２のビット値を変更するのみであった。
【０１４５】
本第３の実施形態では、「Page rate」コマンドでページ速度を指定した場合に、当該ページのページ割り当て情報エントリ３１０の速度指定３１２のビット値を変更する。それと共に、当該ページに既に有効データが書き込まれていたときは、そのデータを指定された高速ページに移動する処理を行う。これにより、「Page rate」コマンドを書き込み済みのページに対して指定した場合においても、指定した高速ページに随時割り当てを変更することが可能となる。
【０１４６】
本第３の実施形態における、ホストシステム１０１からストレージデバイス１００に対して論理ページの速度を指定する処理の流れについて説明する。
【０１４７】
ホストシステム１０１は、図５に示した「Page rate」コマンドをストレージデバイス１００に対して送信する。「Page rate」コマンドは、パラメータ「開始論理ページ番号」、「ページ数」、及び「速度」を伴って転送される。コントローラ１０３は、ホストＩ／Ｆ１０２を介して「Page rate」コマンド、「開始論理ページ番号」、「ページ数」、及び「アクセス速度」のパラメータを受信する。そうすると、論理ページへのアクセス速度の指定処理を開始する。
【０１４８】
図２２は、本発明の第３の実施形態におけるストレージデバイス１００のコントローラ１０３により実行されるページ速度指定処理の詳細を示すフローチャートである。
【０１４９】
コントローラ１０３は、「Page read」コマンドと一緒に受信した「開始論理ページ番号」及び「ページ数」のパラメータを基に、アクセス速度を指定する論理ページの指定を行う。指定された論理ページすべてに対して、ステップＳ１００２，Ｓ１５０１〜Ｓ１５０４，Ｓ１００３，Ｓ１００４のステップが実行される。なお、ステップＳ１５０１〜ステップＳ１５０５を除く処理は、上述した図１７に示した処理と同じであるため、その説明を省略する。
【０１５０】
ステップＳ１５０１では、コントローラ１０３は、当該ページのページ割り当て情報エントリ３１０のステータス３１１のビット値が“０”であれば、当該ページは空きページであるとみなしてステップＳ１００３へ移行する。ステップＳ１５０２では、当該ページのページ割り当て情報エントリ３１０のユニット速度３１３が「Page rate」コマンドで指定された速度と同じであれば、ステップＳ１００３へ移行する。
【０１５１】
ステップＳ１５０３では、当該ページに既に書き込まれてあるページデータをＲＡＭ１０６上のページバッファに読み出す。次に、読み出したページデータを別の物理ページに移すためにページ書き込み処理を実行する（ステップＳ１５０４）。このページ書き込み処理は、図１１に示した処理と同じである。
【０１５２】
上記実施の形態においては、図９のステップ６０６及び図１０のステップ７０３において論理ページ割り当てテーブル３００上のページ割り当て情報エントリ３１０のアクセス回数３１６及び平均アクセス間隔３１７の値の更新を行った。しかしながら、ストレージデバイス１００の用途によっては、データ書き込み処理においてのみ若しくはデータ読み出し処理においてのみ、アクセス回数３１６及び平均アクセス間隔３１７の値の更新を行うようにしてもよい。
【０１５３】
データ書き込み処理においてのみアクセス回数３１６及び平均アクセス間隔３１７の値の更新を行うようにすれば、頻繁に書き込みを行うページについて高速領域に配置されるという効果を奏する。また、データ読み出し処理においてのみアクセス回数３１６及び平均アクセス間隔３１７の値の更新を行うようにすれば、頻繁に読み出しを行うページについて高速領域に配置されるという効果を奏する。
【０１５４】
上記各実施形態においては、ＭＬＣフラッシュメモリ及びＢＬＣフラッシュメモリを用いてストレージデバイスを構成したが、この限りではない。例えば、ＨＤＤを用いて第二のメモリ領域を構成してもよい。
【０１５５】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１５６】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１５７】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１５８】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う場合である。
【０１５９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【０１６０】
【図１】本発明の第１の実施形態に係るメモリ管理装置を含むメモリ管理システムの構成例を示すブロック図である。
【図２】図１の各フラッシュメモリ内部のメモリマップを示す図であり、（ａ）はＢＬＣフラッシュメモリ、（ｂ）はＭＬＣフラッシュメモリである。
【図３】ユニット管理テーブルの詳細を示す図である。
【図４】論理ページ割り当てテーブルの詳細を示す図である。
【図５】ストレージデバイスがサポートするコマンドの一覧を示す図である。
【図６】コントローラにより実行されるストレージデバイスの初期化処理の詳細を示すフローチャートである。
【図７】図６のステップＳ４０２におけるユニット管理テーブルの初期化処理の詳細を示すフローチャートである。
【図８】図６のステップＳ４０３における論理ページ割り当てテーブルの初期化処理の詳細を示すフローチャートである。
【図９】コントローラにより実行されるデータ読み出し処理の詳細を示すフローチャートである。
【図１０】コントローラにより実行されるデータ書き込み処理の詳細を示すフローチャートである。
【図１１】図１０のステップＳ７０２におけるページ書き込み処理の詳細を示すフローチャートである。
【図１２】図１１のステップＳ８０２における書き込み先ページ速度判定処理の詳細を示すフローチャートである。
【図１３】速度指定の条件を示す図である。
【図１４】物理ページ割り当て処理の詳細を示すフローチャートである。
【図１５】図１０のステップＳ７０８におけるガバレッジコレクション処理の詳細を示すフローチャートである。
【図１６】図１５のステップＳ９０９におけるユニット論理消去処理の詳細を示すフローチャートである。
【図１７】コントローラにより実行されるページのアクセス速度指定処理の詳細を表したフローチャートである。
【図１８】ホストシステム１０１上で動作するファイルシステムのフォーマット処理を示すフローチャートである。
【図１９】ＦＡＴファイルシステムでフォーマットされているブロックデバイスの内部のデータ構造を示す図である。
【図２０】本発明の第２の実施形態におけるストレージデバイスのコントローラにより実行されるデータの書き込み処理の詳細を示すフローチャートである。
【図２１】コントローラによりバックグラウンドで実行されるガバレッジコレクション処理の詳細を示すフローチャートである。
【図２２】本発明の第３の実施形態におけるストレージデバイスのコントローラにより実行されるページ速度指定処理の詳細を示すフローチャートである。
【符号の説明】
【０１６１】
１００  ストレージデバイス
１０１  ホストシステム
１０２  ホストＩ／Ｆ
１０３  コントローラ
１０４  ＢＬＣ（Binary Level Cell：２値型）フラッシュメモリ
１０５  ＭＬＣ（Multi-Level Cell：多値型）フラッシュメモリ
１０６  ＲＡＭ
【図１】
2008242503.tif 000003
【図２】
2008242503.tif 000004
【図３】
2008242503.tif 000005
【図４】
2008242503.tif 000006
【図５】
2008242503.tif 000007
【図６】
2008242503.tif 000008
【図７】
2008242503.tif 000009
【図８】
2008242503.tif 000010
【図９】
2008242503.tif 000011
【図１０】
2008242503.tif 000012
【図１１】
2008242503.tif 000013
【図１２】
2008242503.tif 000014
【図１３】
2008242503.tif 000015
【図１４】
2008242503.tif 000016
【図１５】
2008242503.tif 000017
【図１６】
2008242503.tif 000018
【図１７】
2008242503.tif 000019
【図１８】
2008242503.tif 000020
【図１９】
2008242503.tif 000021
【図２０】
2008242503.tif 000022
【図２１】
2008242503.tif 000023
【図２２】
2008242503.tif 000024
【手続補正書】
【提出日】平成20年3月14日(2008.3.14)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
次に、論理ページ割り当てテーブル３００上の当該ページデータに対応するページ割り当て情報エントリ３１０のアクセス回数３１６の値を１インクリメントすると共に、平均アクセス間隔３１７の値を更新する（ステップＳ６０６）。そして、ステップＳ６０２からステップＳ６０７までの処理が終了し、指定された論理ページのデータ読み出しがすべて終了するとループを抜ける（ステップＳ６０７でＹＥＳ）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
ステップＳ７０７からステップＳ７０９までの処理が終了し、ＧＣキューに登録されているすべてのユニットに対して処理が終了するとループを抜ける（ステップＳ７０９でＹＥＳ）。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2008242503.tif 000025