(57)【要約】【課題】他のデータに対するアクセスにより生じるエラーから特定のデータを保護できるプログラム、情報処理システム、情報処理装置、および情報処理方法を提供する。【解決手段】例示的な実施の形態は、コンピュータで実行される、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第１のデータの書込要求に応答して、第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第１のデータを使用領域のみに書き込む書込ステップとを実行させる。【選択図】図６
2013077209.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実行される、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムであって、前記プログラムは、前記コンピュータに、
第１のデータを記憶するための第１の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第１のデータの書込要求に応答して、前記第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第１のデータを前記使用領域のみに書き込む書込ステップとを実行させる、プログラム。
【請求項２】
前記割当ステップにおいて、前記第１の領域を単一のデータとして扱うための情報を前記半導体記憶手段に書き込む、請求項１に記載のプログラム。
【請求項３】
前記割当ステップにおいて、前記第１の領域を単一のファイルとして扱うためのファイル管理情報を前記半導体記憶手段に書き込む、請求項２に記載のプログラム。
【請求項４】
前記割当ステップにおいて、前記第１の領域に含まれる前記使用領域と前記保護領域とを区別するための領域管理情報を前記半導体記憶手段に書き込む、請求項２または３に記載のプログラム。
【請求項５】
前記半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第２の領域を含み、
前記領域管理情報は、前記第２の領域に記憶される、請求項４に記載のプログラム。
【請求項６】
前記領域管理情報は、前記保護領域に記憶される、請求項４に記載のプログラム。
【請求項７】
前記領域管理情報は、前記第１のデータとは異なる第２のデータを記憶するための第３の領域の境界から前記使用領域までのサイズを示すオフセット値を含む、請求項４〜６のいずれか１項に記載のプログラム。
【請求項８】
前記領域管理情報は、前記第１の領域のうち前記使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む、請求項４〜６のいずれか１項に記載のプログラム。
【請求項９】
前記割当ステップにおいて、前記半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、前記保護領域のサイズを決定する、請求項１〜８のいずれか１項に記載のプログラム。
【請求項１０】
前記保護領域のサイズは、前記半導体記憶手段における消去単位のブロックに関連付けて決定される、請求項９に記載のプログラム。
【請求項１１】
少なくとも前記消去単位のブロックのサイズの前記保護領域が割り当てられる、請求項１０に記載のプログラム。
【請求項１２】
前記保護領域は、前記使用領域から前記ブロックの境界に対応する境界までを含むように割り当てられる、請求項１０または１１に記載のプログラム。
【請求項１３】
前記割当ステップにおいて、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する、請求項９〜１２のいずれか１項に記載のプログラム。
【請求項１４】
前記割当ステップにおいて、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する、請求項９〜１２のいずれか１項に記載のプログラム。
【請求項１５】
前記書込ステップにおいて、単一のファイルとして扱われる前記第１の領域に対して、複数のファイルを書き込む、請求項１〜１４のいずれか１項に記載のプログラム。
に記載のプログラム。
【請求項１６】
前記複数のファイルは、前記単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される、請求項１５に記載のプログラム。
【請求項１７】
前記プログラムは、さらに前記コンピュータに、
前記半導体記憶手段の記憶領域内において前記第１のデータが記憶された第１の領域を特定する領域特定ステップと、
前記特定された第１の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、
前記評価ステップにおいて正当ではないと評価されると、前記保護領域を再割り当てする再割り当てステップとを実行させる、請求項９〜１６のいずれか１項に記載のプログラム。
【請求項１８】
少なくとも１つの演算処理部と前記演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムであって、
第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を備え、前記半導体記憶手段は、１つのメモリセルに複数ビットを記憶するように構成されており、さらに
前記第１のデータの書込要求に応答して、前記第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第１のデータを前記使用領域のみに書き込むための書込手段を備える、情報処理システム。
【請求項１９】
１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置であって、
第１のデータを記憶するための第１の領域を前記半導体記憶手段の記憶領域内に割り当てるための割当手段と、
前記第１のデータの書込要求に応答して、前記第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第１のデータを前記使用領域のみに書き込むための書込手段とを備える、情報処理装置。
【請求項２０】
コンピュータで実行される、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法であって、
第１のデータを記憶するための第１の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第１のデータの書込要求に応答して、前記第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第１のデータを前記使用領域のみに書き込む書込ステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラム、情報処理システム、情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
近年、半導体記憶手段（例えば、フラッシュメモリ）における記憶容量の増大や低コスト化などに伴って、半導体記憶手段の適用範囲が広がっている。典型的には、半導体記憶手段は、さまざまな装置に内蔵された状態で利用され、あるいは、着脱可能な形態で利用される。
【０００３】
このような半導体記憶手段では、記憶容量の増大や低コスト化の観点から、１つの記憶素子（メモリセル）に複数のビットを記憶させる技術が開発されている。１つのメモリセルが１ビットのデータを保持する従来の半導体記憶手段がＳＬＣ（Single Level Cell）型と称されるのに対して、１つのメモリセルが複数ビットのデータを保持するという意味でＭＬＣ（Multi Level Cell）型と称される。ＭＬＣ型の半導体記憶手段では、１つのメモリに複数ビットのデータを保持できるため、ＳＬＣ型に比較して、同一のメモリセル数で比較した場合に、より大容量化することができる。
【０００４】
特開２００５−３２４３１号公報（特許文献１）には、このようなＭＬＣ型の半導体記憶手段の構成や制御動作などについて開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３２４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したようなＭＬＣ型の半導体記憶手段において、データの書き込みおよび読み出しを行なう場合には、アクセス対象のデータが記憶されたメモリセルにアクセスすることになるときに、アクセス対象のメモリセルには、対象のデータ以外のデータが記憶されている場合もある。すなわち、同一のメモリセルに２種類のデータ（のそれぞれ一部）が記憶される可能性がある。
【０００７】
このような状況下において、あるデータに係るアクセス時に対象のメモリセル自身、あるいは、対象のメモリセルを管理する部分で何らかのエラーが生じると、アクセス対象のデータ以外のデータへも影響がおよぶ可能性がある。
【０００８】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できるプログラム、情報処理システム、情報処理装置、および情報処理方法を提供する。
【課題を解決するための手段】
【０００９】
第１の例示的な実施の形態は、コンピュータで実行される、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第１のデータの書込要求に応答して、第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第１のデータを使用領域のみに書き込む書込ステップとを実行させる。
【００１０】
この実施の形態によれば、第１のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第１のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第１のデータを保護できる。
【００１１】
第２の例示的な実施の形態に従えば、第１の例示的な実施の形態において、割当ステップでは、第１の領域を単一のデータとして扱うための情報を半導体記憶手段に書き込む。
【００１２】
この実施の形態によれば、第１の領域が単一のデータとして扱われるので、使用領域に隣接して保護領域が割り当てられているという構成を維持できる。
【００１３】
第３の例示的な実施の形態に従えば、第２の例示的な実施の形態において、割当ステップでは、第１の領域を単一のファイルとして扱うためのファイル管理情報を半導体記憶手段に書き込む。
【００１４】
この実施の形態によれば、第１の領域を割り当てたコンピュータだけではなく、他のコンピュータであっても、第１の領域を単一のファイルとして扱うことになるので、使用領域に隣接して割り当てられている保護領域が削除されるような事態を回避できる。
【００１５】
第４の例示的な実施の形態に従えば、第２または第３の例示的な実施の形態において、割当ステップは、第１の領域に含まれる使用領域と保護領域とを区別するための領域管理情報を半導体記憶手段に書き込む。
【００１６】
この実施の形態によれば、第１の領域が単一のデータとして扱われる一方で、第１のデータが記憶されている使用領域を容易に特定できる。
【００１７】
第５の例示的な実施の形態に従えば、第３または第４の例示的な実施の形態において、半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第２の領域を含み、領域管理情報は、第２の領域に記憶される。
【００１８】
この実施の形態によれば、半導体記憶手段の記憶領域に記憶される他のファイルと同様の管理情報を用いて、第１の領域を管理することができる。
【００１９】
第６の例示的な実施の形態に従えば、第３または第４の例示的な実施の形態において、領域管理情報は、保護領域に記憶される。
【００２０】
この実施の形態によれば、基本的にはデータの記憶には使用されない保護領域を有効に活用することができる。
【００２１】
第７の例示的な実施の形態に従えば、第４〜第６のいずれかの例示的な実施の形態において、領域管理情報は、第１のデータとは異なる第２のデータを記憶するための第３の領域の境界から使用領域までのサイズを示すオフセット値を含む。
【００２２】
この実施の形態によれば、オフセット値を用いるので、使用領域と保護領域とを区別するための処理が容易化できる。
【００２３】
第８の例示的な実施の形態に従えば、第４〜第６のいずれかの例示的な実施の形態において、領域管理情報は、第１の領域のうち使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む。
【００２４】
この実施の形態によれば、オフセット値等の値を別途記憶することなく使用領域と保護領域とを区別することができる。また、使用領域と保護領域とを区別するための算出式を秘匿化しておけば、他のコンピュータなどがアクセスした場合であっても、使用領域に記憶されるデータに対するセキュリティ性を高めることができる。
【００２５】
第９の例示的な実施の形態に従えば、第１〜第８のいずれかの例示的な実施の形態において、割当ステップでは、半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、保護領域のサイズを決定する。
【００２６】
この実施の形態によれば、半導体記憶手段の構造的な特性に関連付けて、保護領域のサイズを決定することで、使用領域に記憶される第１のデータを確実に保護できる。
【００２７】
第１０の例示的な実施の形態に従えば、第９の例示的な実施の形態において、保護領域のサイズは、半導体記憶手段における消去単位のブロックに関連付けて決定される。
【００２８】
この実施の形態によれば、複数のメモリセルに対してデータ破損の可能性がある消去単位のブロックに関連付けて保護領域を割り当てることで、使用領域に記憶される第１のデータを確実に保護できる。
【００２９】
第１１の例示的な実施の形態に従えば、第１０の例示的な実施の形態において、少なくとも消去単位のブロックのサイズの保護領域が割り当てられる。
【００３０】
この実施の形態によれば、第１のデータが記憶される領域がいずれの位置に配置されたとしても、１つの消去単位のブロックに第１のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第１のデータを確実に保護できる。
【００３１】
第１２の例示的な実施の形態に従えば、第１０または第１１の例示的な実施の形態において、保護領域は、使用領域からブロックの境界に対応する境界までを含むように割り当てられる。
【００３２】
この実施の形態によれば、あるブロックに第１のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第１のデータを確実に保護できる。
【００３３】
第１３の例示的な実施の形態に従えば、第９〜第１２のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する。
【００３４】
この実施の形態によれば、半導体記憶手段の特性値の相違によってブロックのサイズは異なるが、このようなブロックサイズの相違があっても、保護領域を適切なサイズに設定できる。
【００３５】
第１４の例示的な実施の形態に従えば、第９〜第１２のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する。
【００３６】
この実施の形態によれば、第１のデータを書き込む半導体記憶手段に応じて、保護領域を適切なサイズに設定できる。
【００３７】
第１５の例示的な実施の形態に従えば、第１〜第１４のいずれかの例示的な実施の形態において、書込ステップでは、単一のファイルとして扱われる第１の領域に対して、複数のファイルを書き込む。
【００３８】
この実施の形態によれば、共通の使用領域に対して、複数のファイルを書き込めるので、半導体記憶手段の記憶容量の利用効率を高めることができる。
【００３９】
第１６の例示的な実施の形態に従えば、第１５の例示的な実施の形態において、複数のファイルは、単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される。
【００４０】
この実施の形態によれば、例えば、汎用的なファイルシステムと、特定の機種またはアプリケーションのみが利用できる特殊なファイルシステムとを実装することができるので、データをその用途に応じて記憶することができる。
【００４１】
第１７の例示的な実施の形態に従えば、第９〜第１６のいずれかの例示的な実施の形態において、プログラムは、さらにコンピュータに、半導体記憶手段の記憶領域内において第１のデータが記憶された第１の領域を特定する領域特定ステップと、特定された第１の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、評価ステップにおいて正当ではないと評価されると、保護領域を再割り当てする再割り当てステップとを実行させる。
【００４２】
この実施の形態によれば、第１のデータが他の半導体記憶手段へ書き込まれた場合であっても、当該書き込まれた半導体記憶手段において適正な保護領域が設定できる。
【００４３】
第１８の例示的な実施の形態は、少なくとも１つの演算処理部と演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムを提供する。情報処理システムは、第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を含む。半導体記憶手段は、１つのメモリセルに複数ビットを記憶するように構成されている。情報処理システムは、第１のデータの書込要求に応答して、第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第１のデータを使用領域のみに書き込むための書込手段を含む。
【００４４】
この実施の形態によれば、第１のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第１のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第１のデータを保護できる。
【００４５】
第１９の例示的な実施の形態は、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置を提供する。情報処理装置は、第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てるための割当手段と、第１のデータの書込要求に応答して、第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第１のデータを使用領域のみに書き込むための書込手段とを含む。
【００４６】
この実施の形態によれば、第１のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第１のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第１のデータを保護できる。
【００４７】
第２０の例示的な実施の形態は、コンピュータで実行される、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法を提供する。情報処理方法は、第１のデータを記憶するための第１の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第１のデータの書込要求に応答して、第１の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第１のデータを使用領域のみに書き込む書込ステップとを含む。
【００４８】
この実施の形態によれば、第１のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第１のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第１のデータを保護できる。
【発明の効果】
【００４９】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できる。
【図面の簡単な説明】
【００５０】
【図１】実施の形態に従うメモリマネージメント機能を搭載した情報処理装置の構成を示すブロック図である。
【図２】図１に示す可搬型メモリデバイスの回路構成の一例を示す図である。
【図３】ＳＬＣ型およびＭＬＣ型の相違を説明するための図である。
【図４】ＭＬＣ型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。
【図５】データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【図６】本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。
【図７】使用領域および保護領域を含む領域の配置例を示す図である。
【図８】フラッシュメモリのファイルシステムの構成を示す模式図である。
【図９】本実施の形態において割り当てられる領域のより詳細なデータ配置を示す模式図である。
【図１０】本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【図１１】本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【００５１】
実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００５２】
＜Ａ．概要＞
実施の形態に従うメモリマネージメント機能は、例えば、相対的に重要なデータなどを記憶する際に、その隣接した領域へのデータの書き込みによって、当該重要なデータが破損してしまうことを防止する。具体的には、本来的にデータを記憶する使用領域を割り当てるとともに、その使用領域に隣接して、他のデータの記憶を禁止する保護領域を設定する。
【００５３】
＜Ｂ．装置構成＞
図１は、実施の形態に従うメモリマネージメント機能を搭載した情報処理装置１の構成を示すブロック図である。図１を参照して、情報処理装置１は、プロセッサ１００と、ＲＡＭ（Random Access Memory）１０２と、ＰＲＯＭ（Programmable Read-Only Memory）１０４と、入力部１０６と、表示部１０８と、通信インターフェイス１１０と、メモリインターフェイス１１２と、補助記憶装置１２０とを含む。
【００５４】
プロセッサ１００は、情報処理装置１の全体制御を司る演算処理部であり、ＣＰＵ（Central Processing Unit）やＦＰＧＡ（Field Programmable Gate Array）などで構成される。ＲＡＭ１０２は、プロセッサ１００において実行されるプログラムのワーキングメモリなどとして機能する。ＲＡＭ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリで構成される。ＰＲＯＭ１０４は、データを不揮発的に記憶する半導体記憶手段である。ＰＲＯＭ１０４は、典型的には、フラッシュメモリなどの不揮発性メモリで構成される。このＰＲＯＭ１０４の詳細については、後述する。
【００５５】
入力部１０６は、ユーザ操作を受付け、その操作内容をプロセッサ１００へ出力する。表示部１０８は、プロセッサ１００によって処理された結果や画像データなどをユーザへ提示する。表示部１０８は、典型的には、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electro Luminescence：電界発光）ディスプレイなどからなる。
【００５６】
通信インターフェイス１１０は、有線または無線などによって、他の装置との間でデータを交換する機能を提供する。通信インターフェイス１１０は、典型的には、イーサネット（登録商標）コントローラや無線ＬＡＮコントローラなどからなる。
【００５７】
メモリインターフェイス１１２は、可搬型メモリデバイス２と着脱可能に構成され、可搬型メモリデバイス２に対してデータの書き込みおよび読み出しを行なう。このような可搬型メモリデバイス２としては、ＳＤ（Secure Digital）メモリカードやＣＦ（Compact Flash）メモリカードといった各種の半導体記憶手段を用いることができる。この可搬型メモリデバイス２の詳細についても、ＰＲＯＭ１０４と同様に後述する。
【００５８】
補助記憶装置１２０は、プロセッサ１００などによって実行されるプログラムや、画像データなどを不揮発的に記憶する。補助記憶装置１２０は、典型的には、磁気的にデータを記憶するハードディスク、フラッシュメモリ、メモリカードなどからなる。補助記憶装置１２０についても、着脱可能に構成してもよいし、複数のデバイスを組み合わせて実装してもよい。
【００５９】
補助記憶装置１２０は、一例として、基本システム１２２と、メモリマネージャ１２４と、アプリケーション１２６とを記憶する。基本システム１２２は、情報処理装置１を構成する各ハードウェアを利用して各種アプリケーションを実行するための環境を提供する。メモリマネージャ１２４は、本実施の形態に従うメモリマネージメント機能を実現するための主たるプログラムである。すなわち、メモリマネージャ１２４は、１つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムの少なくとも一部である。アプリケーション１２６は、プロセッサ１００が基本システム１２２を実行することで提供される環境上において動作するプログラムであり、ゲーム、ビジネスアプリケーション、ブラウザアプリケーションなどでありうる。
【００６０】
なお、情報処理装置１には、カメラなどの撮像手段を搭載していてもよい。このような撮像手段を搭載することで、情報処理装置１自体で画像データを生成することもできる。
【００６１】
＜Ｃ．半導体記憶手段＞
本実施の形態に従うメモリマネージメント機能の前提となる半導体記憶手段について説明する。
【００６２】
［ｃ１：概要］
本実施の形態に従うメモリマネージメント機能は、フラッシュメモリなどの不揮発的にデータを記憶する半導体記憶手段に向けられている。より具体的には、１つのメモリセルに複数ビットを記憶可能な（いわゆる、ＭＬＣ（Multi Level Cell）型の）半導体記憶手段に向けられている。すなわち、本実施の形態に従うメモリマネージメント機能は、ＭＬＣ型の半導体記憶手段に対するデータの書き込みおよび読み出しを管理する。
【００６３】
このようなＭＬＣ型の半導体記憶手段としては、現時点では、ＭＬＣ型のフラッシュメモリが一般的である。このようなＭＬＣ型のフラッシュメモリにはＮＡＮＤ型やＮＯＲ型といった構造上の相違があるが、いずれの構造であっても、本実施の形態に従うメモリマネージメント機能を適用できる。さらに、本実施の形態に従うメモリマネージメント機能は、フラッシュメモリに加えて、セキュリティ機能などの複数機能を１チップ化したカスタムマスクＲＯＭ（ｘｔｒａＲＯＭ）などにも適用可能である。
【００６４】
［ｃ２：回路構成］
図２は、図１に示す可搬型メモリデバイス２の回路構成の一例を示す図である。図２には、可搬型メモリデバイス２を実現する典型例として、ＮＡＮＤ型フラッシュメモリを示す。
【００６５】
図２を参照して、可搬型メモリデバイス２は、データ入力回路２１と、アドレスデコーダ２２と、データ出力回路２３と、複数のメモリアレイ２０とを含む。メモリアレイ２０の各々には、行デコーダ２４および書出／読出回路２５が関連付けられている。
【００６６】
データ入力回路２１は、外部から入力されたデータ（Ｄｉｎ）を書き込み先のメモリセルに対応する書込／読出回路２５へ出力するとともに、書き込み先のメモリセルのアドレスをアドレスデコーダ２２へ出力する。アドレスデコーダ２２は、データ入力回路２１によって指定されたアドレスに対応する行デコーダ２４に対して駆動指令を与える。
【００６７】
メモリアレイ２０の各々は、複数のメモリセルＭ０，Ｍ１，…，Ｍｍが直列接続されたセルストリング（列）を複数含む。各セルストリングの両端には、ゲートトランジスタＧ０およびＧ１が接続されている。また、各セルストリングを構成するメモリセルＭ０，Ｍ１，…，Ｍｍのゲートには、ワード線ＷＬ０，ＷＬ１，…，ＷＬｍがそれぞれ接続される。
【００６８】
行デコーダ２４は、アドレスデコーダ２２からの駆動指令に従ってワード線ＷＬを駆動する。駆動されたワード線ＷＬに対応するメモリセルは活性化される。また、行デコーダ２４は、アクセス先のメモリセルに応じて、ゲート線ＧＬ０およびＧＬ１を駆動する。ゲート線ＧＬ０の駆動により、セルストリングの一端が書込／読出回路２５と電気的に接続される。また、ゲート線ＧＬ１の駆動により、セルストリングの他端がソース電位（Source）と電気的に接続される。
【００６９】
書込／読出回路２５は、上述のような行デコーダの動作により選択されたメモリセルと電気的に接続される。データの書き込み動作において、書込／読出回路２５は、選択されたメモリセルのフローティングゲートにデータに対応する電荷を注入する。この電荷注入によるデータが書き込まれる（プログラムされる）。
【００７０】
一方、データの読出動作において、書込／読出回路２５は、選択されたメモリセルが保持する電荷に応じて生じる電圧をしきい値電圧と比較することで、いずれの値がプログラムされているのかを読出す。書込／読出回路２５は、読出したデータ（Ｄｏｕｔ）をデータ出力回路２３へ出力する。
【００７１】
データ出力回路２３は、書込／読出回路２５によって読出されたデータを外部へ出力する。ＮＡＮＤ型のフラッシュメモリにおいては、構造上、所定のデータ量（典型的には、４ｋバイト）の単位で書き込みが行なわれる。そのため、書込／読出回路２５には、ページバッファを設けてもよい。なお、ＮＯＲ型のフラッシュメモリにおいては、ビット単位でのデータアクセスが可能である。
【００７２】
フラッシュメモリの消去動作としては、メモリセルが形成されているウェル層（Ｐ−ｗｅｌｌ）に所定電位を印加することで、各メモリセルのフローティングゲートに注入されている電荷が引き抜かれる。このウェル層は、複数のメモリセルに対して共通に形成されているため、消去時には、共通のウェル層上にある複数のメモリセルに対して一括で行われることになる。このような消去動作の単位となるメモリセル数を、以下「消去ブロック」または「ブロック」と称する。
【００７３】
［ｃ３：ＳＬＣとＭＬＣ］
上述したように、フラッシュメモリでは、フローティングゲートに電荷を注入し、当該電荷の注入により生じる電圧を予め定められたしきい値電圧と比較することで、各メモリセルに記憶されている値を読出す。
【００７４】
図３は、ＳＬＣ型およびＭＬＣ型の相違を説明するための図である。図３（ａ）には、ＳＬＣ型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示し、図３（ｂ）には、ＭＬＣ型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示す。
【００７５】
図３（ａ）に示すように、ＳＬＣ型では、メモリセルで発生する電圧Ｖと１つのしきい値Ｖｔｈとを比較し、しきい値Ｖｔｈより大きいかあるいは小さいかによって、「１」および「０」のいずれがプログラムされているかが判断される。
【００７６】
また、図３（ｂ）に示すようにＭＬＣ型では、メモリセルで発生する電圧Ｖと比較されるしきい値を３種類（Ｖｔｈ１，Ｖｔｈ２，Ｖｔｈ３）用意し、メモリセルで発生する電圧Ｖがいずれのしきい電圧の間に存在するかによって、「１１」、「１０」、「０１」、「１１」のいずれがプログラムされているかが判断される。なお、より多くのしきい値を設定し、より多くのビットを記憶するようにしてもよい。
【００７７】
このような方法によって、１つのメモリセルに対して、複数のビットを記憶できる。
［ｃ４：アドレス割り当て］
上述したように、ＭＬＣ型のフラッシュメモリでは、各メモリセルが複数のビットを記憶するので、セルアドレスとホスト側が管理するアドレスとは一致しない。
【００７８】
図４は、ＭＬＣ型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。図４には、１つのセルが２ビット分のデータを記憶する例を示す。ＭＬＣ型フラッシュメモリにおいて導線を共有するセルの単位を「物理構造におけるページ」と称する。説明の便宜上、図４には、物理構造におけるページの各々に８個のセルが含まれる例を示すが、これに限られるものではない。
【００７９】
上述したように、共通のウェル層に形成された複数のセルが「ブロック」と称される。本実施の形態における「消去ブロック」は、このＭＬＣ型フラッシュメモリの物理構造におけるブロックと一致するように設定および管理される。すなわち、後述するように、ＭＬＣ型フラッシュメモリにアクセスするホスト側（メモリコントローラ）は、ＭＬＣ型フラッシュメモリの物理構造に対応するブロックの単位で、データを消去する。
【００８０】
一方、ＭＬＣ型フラッシュメモリにアクセスするホスト側（メモリコントローラ）から見ると、論理的なアドレスとしてページアドレスが提供される。このホスト側が管理するページを上述の「物理構造におけるページ」とは区別するために、「論理構造におけるページ」と称する。説明の便宜上、図４には、論理構造におけるページの各々に８個のセルが含まれる例を示すが、これに限られるものではない。
【００８１】
１つのセルに記憶されるビット数に応じて、物理構造におけるページと、論理構造におけるページとが対応付けられる。図４に示す例では、１つのセルが２ビット分のデータを記憶するので、物理構造における１つのページに対して、論理構造におけるページが２つ割り当てられる。すなわち、物理構造における１つのページに対して、論理構造におけるページのうち２つのがペアとなって対応付けられる。このペアとなる論理構造におけるページ間では、連続したアドレスが割り当てられているとは限らない。
【００８２】
但し、ブロックの単位で見た場合には、論理構造における連続する一連のページは、共通のウェル層に形成されたブロックに対応することになる。
【００８３】
［ｃ５：データ破損］
図４に示すデータ構造において、単一のデータが複数の消去ブロックにまたがって記憶される場合がある。すなわち、論理構造におけるページが連続していたとしても、書き込み先が異なるブロックに属している場合がある。フラッシュメモリでは、共通のウェル層の上に形成されている複数のメモリセルに対して、一括で電圧が印加されることにある。そのため、データをフラッシュメモリへ書き込む際に、システム電源の遮断や活線状態での抜き出し操作などによって書き込み動作が中断されると、書き込み先の消去ブロック全体にエラーが生じうる。そのため、当該エラーが生じた消去ブロックに記憶された他のデータも破損する場合がある。
【００８４】
図５は、データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【００８５】
図５を参照して、例えば、ファイル１が「ブロックｍ」および「ブロックｍ＋１」にまたがって記憶されているとする。この状態において、「ブロックｍ」を含む領域にファイル２を書き込む場合を考える。このファイル２を書き込んでいる最中に「ブロックｍ」において何らかのエラーが発生したとする。この場合、「ブロックｍ」を構成するメモリセルに記憶されていたデータが破損し、アクセス対象のファイル２だけではなく、ファイル１についてもアクセスできなくなる。より具体的には、ファイル１の「ブロックｍ」に含まれる部分は、実際に破損する可能性があるが、「ブロックｍ＋１」に含まれる部分は、ファイル２へのアクセスによっては破損する可能性はない。このような状態であっても、ファイル全体としてのアクセスは不可能になる。
【００８６】
すなわち、あるファイルが複数の消去ブロックにまたがって記憶された場合には、一方の消去ブロックでエラーが生じることによって、他方の消去ブロックに対応する領域に記憶されているデータを含めて、ファイルとしてはアクセスすることができなくなる。
【００８７】
具体的な例を挙げると、画像ファイルが先に記憶されているフラッシュメモリに、別の画像ファイルを書き込もうとした際にエラーが発生し、それに伴って、先に記憶されている画像ファイルもアクセスできなくなる可能がある。
【００８８】
このように、ＭＬＣ型のフラッシュメモリでは、あるファイルに対するアクセス（書き込み）を行なった際に、当該アクセス先のファイルとは関係のないファイル（書き込み先のファイルと同じブロックに記憶されているデータを含むファイル）が破損する可能性がある。
【００８９】
そこで、本実施の形態に従うメモリマネージメント機能では、物理メモリ空間において隣接する領域に対する書き込み動作によって、隣接する位置に記憶されていたデータが破損し、当該破損したデータを含むファイルへのアクセスができなくなることを防止する。
【００９０】
＜Ｄ．メモリマネージメント機能＞
以下、本実施の形態に従うメモリマネージメント機能の詳細について説明する。
【００９１】
［ｄ１：基本コンセプト］
上述したような、単一のデータ（ファイル）が複数の消去ブロックにまたがって記憶されてしまう事態を回避するために、本実施の形態においては、本来的にデータを記憶する領域の一方または両方にデータを記憶しない領域を追加する。
【００９２】
図６は、本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。図６には、データ１をフラッシュメモリへ記憶する場合の例を示す。
【００９３】
図６を参照して、本実施の形態においては、論理メモリ空間において、記憶したい「データ１」に隣接して、データの記憶には使用しない未使用領域を付加する。すなわち、本実施の形態に従うメモリマネージメント機能は、データ１を記憶するための領域２００をフラッシュメモリの記憶領域内（論理メモリ空間）に割り当てる。このとき、割り当てられた領域２００は、１ファイルとして扱われることが好ましい。この１ファイルとして扱うための方法については、後述する。メモリマネージメント機能は、データ１の書込要求に応答して、割り当てられた領域の境界から所定のサイズを未使用領域（保護領域）２０４とし、残りの領域を使用領域２０２とする。そして、メモリマネージメント機能は、データ１を使用領域のみに書き込む。このように、本実施の形態においては、隣接する領域へのデータ書き込みにより生じるエラーからデータ１を保護するために、データ１を記憶する領域の片側または両側に保護領域（バッファ領域）を設ける。隣接する領域にデータが書き込まれ、それによって生じたエラーによる影響を受けないように、保護領域のサイズを設定することで、データ１の予期しない破損を防止することができる。このような適切なサイズの保護領域を設定することで、他のデータの書き込み時に生じるエラーの影響を回避できる。
【００９４】
［ｄ２：保護領域のサイズ］
本実施の形態においては、データ記憶に使用される使用領域２０２が割り当てられるとともに、その片側または両側に保護領域２０４が割り当てられる。この保護領域のサイズについて説明する。
【００９５】
上述したように、複数の消去ブロックにまたがってデータが記憶された場合に、隣接するデータのアクセスによって生じるエラーの影響を受けるので、フラッシュメモリにおける同じ影響を受ける複数のメモリセルからなるブロックのサイズに関連付けて、保護領域２０４のサイズを決定することが好ましい。より具体的には、消去ブロックのサイズに関連付けて保護領域２０４のサイズを決定することが好ましい。すなわち、保護領域２０４のサイズは、フラッシュメモリにおける消去単位のブロックに関連付けて決定される。
【００９６】
より具体的には、ホスト側からフラッシュメモリにデータを書き込む場合、割り当てられた領域２００のすべてを使用するのではなく、領域２００の先頭から最初のブロック境界までの領域、および、領域２００の終端から最後のブロック境界までの領域を、いわば「捨て領域」として、データの書き込みには使用しない。すなわち、保護領域２０４は、使用領域２０２から消去ブロックの境界に対応する境界までを含むように割り当てられる。
【００９７】
消去ブロックの境界に対応する論理メモリ空間におけるアドレスが既知であれば、１または複数の消去ブロックのすべてを単一のデータ（ファイル）に割り当てればよい。しかしながら、一般的には、図６に示すような物理メモリ空間と論理メモリ空間との対応関係は、明らかではなく、かつ、取得することが困難な場合が多い。
【００９８】
そこで、一つの実現例としては、保護領域２０４としては、１つの消去ブロックのサイズ以上を確保すればよい。すなわち、実施の形態に従うメモリマネージメント機能は、少なくとも消去単位のブロックのサイズを有する保護領域２０４を割り当てる。このように、１つの消去ブロック以上のサイズを有する保護領域２０４を使用領域２０２の両側に配置しておくことで、領域２００がいずれの位置に記憶されたとしても、使用領域２０２に記憶されるデータを保護できる。
【００９９】
図７は、使用領域２０２および保護領域２０４を含む領域２００の配置例を示す図である。図７に示す保護領域２０４の各々のサイズは、消去ブロックと同じである。図７（ａ）は、領域２００の終端と消去ブロックの境界とが一致している状態を示す。図７（ｂ）は、領域２００の先頭と消去ブロックの境界とが一致している状態を示す。図７（ｃ）は、領域２００の先頭および終端のいずれも消去ブロックの境界とは一致していない状態を示す。
【０１００】
図７（ａ）〜図７（ｃ）に示すように、保護領域２０４のサイズを消去ブロックのサイズと同じにすることで、領域２００がいずれの位置に割り当てられたとしても、使用領域２０２に対応する消去ブロックに他のデータが書き込まれることを回避できる。すなわち、同一の消去ブロックが使用領域２０２および他のデータで共有的に使用されることはない。そのため、物理メモリ空間と論理メモリ空間との対応関係が不明であっても、隣接する領域へのデータ書き込みによって生じるエラーから、使用領域２０２に記憶されるデータを保護できる。
【０１０１】
なお、消去ブロックの単位は、フラッシュメモリの構造、全体容量、プロセスなどに依存して変化する。そのため、保護領域２０４のサイズを消去ブロックに関連付けて決定する場合には、消去ブロックのサイズについて、推定または取得する必要がある。
【０１０２】
（１）  実装例その１
第１の実装例としては、市販されているフラッシュメモリの間で、消去ブロックのサイズの最大値（５１２ｋバイトや２Ｍバイト）を予め調べておき、保護領域２０４のサイズをその最大値とする方法が考えられる。このような方法を採用することで、いずれの種類のフラッシュメモリが使用された場合であっても、少なくとも１つの消去ブロックに相当する保護領域２０４を確保できるので、使用領域２０２に記憶されるデータを保護できる。
【０１０３】
（２）  実装例その２
第２の実装例としては、対象のフラッシュメモリから識別情報を取得し、当該取得した識別情報から消去ブロックのサイズを推定してもよい。より具体的には、ＳＤメモリカードなどは、それに用いられているフラッシュメモリに関する各種情報（製造者番号、製造番号、機種情報、容量など）を記憶しており、当該情報はホストによってアクセス可能になっている。そこで、対象のフラッシュメモリに関するこのような情報を取得するとともに、予めフラッシュメモリの機種別に消去ブロックのサイズを（例えば、テーブルとして）取得しておき、互いに参照することで、アクセス先のフラッシュメモリに応じた適切なサイズの保護領域２０４を設定できる。
【０１０４】
このように、アクセス対象のフラッシュメモリの識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象のフラッシュメモリにおける消去ブロックのサイズを取得してもよい。このように取得された消去ブロックのサイズに基づいて、保護領域２０４のサイズが決定される。
【０１０５】
（３）  実装例その３
第３の実装例としては、対象のフラッシュメモリから消去ブロックサイズを直接的に取得してもよい。フラッシュメモリを含むカスタムマスクＲＯＭなどにアクセスする場合などには、このようなカスタムマスクＲＯＭに内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に応答するようにしてもよい。このような構成を採用することで、ホストがカスタムマスクＲＯＭにアクセスすることで、内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に取得でき、それによって、消去ブロックのサイズを決定できる。このように、アクセス対象のフラッシュメモリにアクセスすることで、当該フラッシュメモリについての消去ブロックのサイズを取得してもよい。
【０１０６】
（４）  その他
上述したようなカスタムマスクＲＯＭでは、物理メモリ空間と論理メモリ空間との対応関係を予め取得しておくこともできる。このような場合には、図６に示すような保護領域２０４を両側に配置する必要はない。すなわち、使用領域２０２の先頭を消去ブロックの境界に一致させて割り当て、使用領域２０２の終端から次の消去ブロックの境界までを保護領域２０４として割り当てることもできる。このような割り当てができる場合には、「捨て領域」である保護領域２０４のサイズを小さくでき、フラッシュメモリの記憶領域を有効に利用できる。
【０１０７】
［ｄ３：単一ファイル］
図１に示す可搬型メモリデバイス２などに対しては、本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置１だけではなく、他の情報処理装置でもアクセス可能である。そのため、本実施の形態に従うメモリマネージメント機能に従う領域２００についても、汎用的なファイルシステムに従って割り当てられることが好ましい。そこで、本実施の形態に従うメモリマネージメント機能においては、使用領域２０２および保護領域２０４を含む領域２００が単一のデータとして扱われるようにする。すなわち、領域２００が割り当てられたフラッシュメモリに他の情報処理装置がアクセスした場合であっても、領域２００に対してコピーなどの操作ができるようにする。より具体的には、本実施の形態に従うメモリマネージメント機能は、領域２００を単一のデータとして扱うための情報をフラッシュメモリに書き込む。
【０１０８】
一例として、現行のＳＤメモリカードでは、ファイルシステムとしてＦＡＴファイルシステムが採用されている。このＦＡＴファイルシステムでは、先頭クラスタ（ＭＢＲ：Master Boot Record）に連結リストが格納されており、この連結リストには、記憶されているファイルおよび／またはディレクトリの情報（先頭クラスタ番号および使用クラスタ）が定義される。
【０１０９】
図８は、フラッシュメモリのファイルシステムの構成を示す模式図である。一例として、図８には、ファイルＡおよびファイルＢが記憶されている例を示す。ＦＡＴシステムに従うと、ＭＢＲに加えて、連結リストが記憶される。この連結リストには、フラッシュメモリに記憶されているファイルＡおよびファイルＢのそれぞれの先頭クラスタ番号が記述される。クラスタとは、ＦＡＴシステムにおいて管理される記憶領域の単位サイズである。
【０１１０】
本実施の形態においては、領域２００が割り当てられている記憶領域の先頭クラスタ番号および領域２００が使用しているクラスタの情報が連結リストに書き込まれる。このように連結リストを記述することで、使用領域２０２と保護領域２０４とを含む領域２００の全体が１ファイルとして取り扱われるようにする。すなわち、本実施の形態に従うメモリマネージメント機能は、領域２００を単一のファイルとして扱うための管理情報（ファイル管理情報）をフラッシュメモリに書き込む。このように、領域２００内に書き込まれる複数のファイルは、単一のファイルを操作するファイルシステムとは別のファイルシステムにおいてファイルとして管理される。
【０１１１】
他の情報処理装置が図８に示すＭＢＲの連結リストを参照した場合には、フラッシュメモリには、ファイルＡおよびファイルＢが記憶されていると認識することになる。そのため、本実施の形態に従うメモリマネージメント機能を搭載していない情報処理装置であっても、ファイルＢ（領域２００）のコピーなどは可能となる。但し、本実施の形態に従うメモリマネージメント機能を搭載していなければ、後述するように、基本的には、領域２００に含まれる使用領域２０２と保護領域２０４とを区別することはできない。そのため、使用領域２０２に記憶されるデータに対するセキュリティを保つこともできる。
【０１１２】
また、ファイル管理情報は、汎用的なファイルシステム（ＦＡＴファイルシステム）に従って作成されるので、他の情報処理装置でも利用することができる。これによって、他の情報処理装置は、単一のファイル（領域２００）を認識することができ、この単一のファイルについて読み出しやコピーなどを行なうことができる。
【０１１３】
［ｄ４：使用領域と保護領域との区別］
次に、領域２００に含まれる使用領域２０２と保護領域２０４とを区別するための構成について説明する。
【０１１４】
本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置は、領域２００に含まれる特定の管理情報（領域管理情報）に基づいて、領域２００の使用領域２０２と保護領域２０４とを区別する。すなわち、本実施の形態において、フラッシュメモリに領域２００を割り当てる際には、領域２００に含まれる使用領域２０２と保護領域２０４とを区別するための領域管理情報についてもフラッシュメモリに書き込まれる。
【０１１５】
一例として、使用領域２０２と保護領域２０４とを区別するための領域管理情報２１０は、領域２００の予め定められた位置に格納される。
【０１１６】
図９は、本実施の形態において割り当てられる領域２００のより詳細なデータ配置を示す模式図である。図９には、領域管理情報２１０が領域２００の先頭部分および終端部分に配置されている例を示す。領域２００の位置は予め取得されているので、領域管理情報２１０の位置は容易に特定できる。なお、領域管理情報２１０は、領域２００の先頭部分および終端部分の一方のみに配置してもよいが、隣接する領域へのアクセスによってエラーが生じて領域管理情報２１０の内容が失われると、使用領域２０２の位置を特定することが難しくなるので、両側に領域管理情報２１０を配置することで、冗長性を高める。また、単一のファイルとして取り扱われる領域２００の中に領域管理情報２１０を埋め込むことで、他のフラッシュメモリへコピーされた場合であっても、本実施の形態に従う機能は維持される。
【０１１７】
あるいは、フラッシュメモリの先頭クラスタ（ＭＢＲ）の連結リストとともに、領域管理情報２１０を記憶してもよい。ＭＢＲに領域管理情報２１０を含ませることで、１つのフラッシュメモリ内に複数の領域２００が割り当てられた場合であっても、管理を容易に行なうことができる。すなわち、領域管理情報２１０は、フラッシュメモリの記憶領域に記憶されるファイルを管理するための領域である先頭クラスタ（ＭＢＲ）に記憶されてもよい。
【０１１８】
この領域管理情報２１０に格納される情報としては、以下のように実装してもよい。
（１）  実装例その１
第１の実装例としては、領域２００の先頭から使用領域２０２の先頭（開始位置）までのオフセット量、および、領域２００の終端から使用領域２０２の終端（終了位置）までのオフセット量を記述する方法である。言い換えれば、それぞれのオフセット量は、それぞれの保護領域２０４のサイズを意味する。領域２００の先頭および終端のアドレスは既知であるので、これらのオフセットの情報によって、使用領域２０２の位置を特定できる。
【０１１９】
このように、領域管理情報２１０は、使用領域２０２に記憶されるデータとは異なる別のデータを記憶するための隣接する領域から使用領域２０２までのサイズを示すオフセット値を含む。これにより、領域２００に含まれる使用領域２０２の位置を容易に特定できる。
【０１２０】
（２）  実装例その２
第２の実装例としては、領域管理情報２１０に領域２００のうち使用領域２０２の開始位置を所定の算出式に従って算出するためのパラメータを含ませる方法である。このようなパラメータとしては、保護領域２０４を算出するための値や単位クラスタ数などが含まれる。このようなパラメータに従って、秘匿化された関数に従って演算処理を行なうことで、上述したようなオフセット量を算出することができる。この算出されたオフセット量によって、領域２００に含まれる使用領域２０２と保護領域２０４とを区別できる。
【０１２１】
このような算出式を用いて使用領域２０２の位置を特定する方法を採用することで、使用領域２０２に記憶されているデータに対する秘匿性を高めることができる。
【０１２２】
（３）  実装例その３
上述のファイル管理情報と領域管理情報２１０とを一体化した管理情報としてもよい。この場合、上述したいずれかの領域に２つの管理情報が記憶されてもよい。
【０１２３】
［ｄ５：複数ファイルを任意に記憶］
上述したように、本実施の形態に従うメモリマネージメント機能では、使用領域２０２の片側または両側に、データの記憶には利用されない保護領域２０４を設けるので、記憶領域の利用効率が低下する。そのため、フラッシュメモリの記憶領域内に多数の領域２００を割り当てると、必要なデータを記憶するための領域を十分に確保できない可能性もある。
【０１２４】
そこで、ある実装例としては、使用領域２０２に複数のデータを順次書き込むようにしてもよい。すなわち、単一のファイルとして扱われる使用領域２０２に対して、複数のファイルを書き込むようにしてもよい。
【０１２５】
再度図９を参照して、予め所定の記憶容量を有する使用領域２０２を割り当てておき、この使用領域２０２に対して、複数のファイル（データファイル１，データファイル２，…）を適宜書き込むようにしてもよい。このとき、使用領域２０２にどのようなファイルが記憶されているのかを識別する必要があるので、これらのファイルを識別するための情報を併せて記憶する。
【０１２６】
より具体的には、図９に示すようなリスト情報２１２を使用領域２０２に記憶するようにしてもよい。このリスト情報２１２は、使用領域２０２に記憶されるファイルの開始位置および終了位置（または、ファイル間の境界位置）およびそれぞれのファイルの情報（ファイル名や属性情報）を含む。このリスト情報２１２を参照することで、使用領域２０２に適宜記憶される各ファイルを独立に扱うことができる。
【０１２７】
［ｄ６：再設定］
上述したように、本実施の形態においては、使用領域２０２および保護領域２０４を含む領域２００の全体が１つのファイルとして扱われるので、あるフラッシュメモリに割り当てられた領域２００（ファイル）が他のフラッシュメモリにコピーされる場合もある。あるいは、領域２００（ファイル）がファイルバックアップによって、ハードディスクなどに一旦記憶された後、当該フラッシュメモリに再度書き込まれる場合もある。
【０１２８】
このような場合、論理メモリ空間においていずれの位置に領域２００が書き込まれるのかは不定であるので、物理メモリ空間における消去ブロックの境界との関係が当初割り当てられた際の関係とはずれてしまう。また、領域２００が書き込まれた先のフラッシュメモリにおける消去ブロックのサイズが元のフラッシュメモリのものとは異なる場合もある。
【０１２９】
上述したように、保護領域２０４を、市販されているフラッシュメモリにおける消去ブロックの最大サイズとしておくことで、いずれの位置に領域２００が書き込まれたとしても、使用領域２０２に記憶されているデータを保護できる。
【０１３０】
一方で、物理メモリ空間と論理メモリ空間との対応関係が既知である場合や、フラッシュメモリの消去ブロックのサイズを取得できる場合などには、新たな記憶先の条件下において保護領域２０４のサイズなどを最適化してもよい。すなわち、何らかのフラッシュメモリに記憶された領域２００に対して、その位置およびサイズなどを評価し、その評価結果に基づいて、領域２００の保護領域２０４を再割り当てしてもよい。
【０１３１】
より具体的には、フラッシュメモリの記憶領域において保護すべきデータ記憶された領域２００を特定し、特定された領域２００に割り当てられている使用領域２０２および保護領域２０４を、当該フラッシュメモリについてのブロック（消去ブロック）と関連付けて正当性を評価する。そして、正当ではないと評価されると、保護領域２０４を再割り当てする。この正当性の評価では、消去ブロックのサイズや物理メモリ空間と論理メモリ空間との対応関係に基づいて、使用領域２０２に対応するいずれかの消去ブロックに対して、他のデータが記憶される可能性があるか否かが判断される。
【０１３２】
＜Ｅ．機能ブロック＞
次に、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックについて説明する。図１０は、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【０１３３】
図１０を参照して、プロセッサ１００では、アプリケーション１２６と、ファイルシステム１２４２および１２４４と、ＦＡＴファイルシステム１２２２と、ドライバ１２２４とが連携して実行される。ファイルシステム１２４２および１２４４は、メモリマネージャ１２４よって提供される機能である。より具体的には、ファイルシステム１２４２は、通常のフラッシュメモリへのデータの書込／読出を行なうためのアプリケーション１２６とのインターフェイスである。また、ファイルシステム１２４４は、隣接する領域へのデータ書き込みによって生じるエラーから保護される領域へのデータの書込／読出を行なうためのアプリケーション１２６とのインターフェイスである。
【０１３４】
アプリケーション１２６は、取り扱うデータの種類やユーザ操作などに応じて、ファイルシステム１２４２およびファイルシステム１２４４のいずれかとデータを遣り取りする。例えば、アプリケーション１２６は、各種設定値や暗号化用の情報といった、相対的に重要なデータについては、ファイルシステム１２４４を介して、領域２００の使用領域２０２へ書き込む。これに対して、アプリケーション１２６は、相対的に重要性の低いデータについては、ファイルシステム１２４４を介して、使用領域２０２に書き込む。
【０１３５】
ファイルシステム１２４２および１２４４は、いずれもＦＡＴファイルシステム１２２２との間でデータを遣り取りすることで、アプリケーション１２６からの要求された動作（データの書き込みおよび読み出し）を実現する。ファイルシステム１２４４は、ＦＡＴファイルシステム１２２２に対して、上述した領域管理情報２１０およびリスト情報２１２の作成・更新についての指示も与える。
【０１３６】
ＦＡＴファイルシステム１２２２およびドライバ１２２４は、基本システム１２２によって提供される。ＦＡＴファイルシステム１２２２は、所定の規則に従って、ドライバ１２２４に対して指示を与えることで、フラッシュメモリに対してデータの書き込みおよび読み出しを行なう。ドライバ１２２４は、メモリインターフェイス１１２（図１）と連携して、対象のフラッシュメモリに対して、データの書き込みおよび読み出しを指示する。
【０１３７】
＜Ｆ．処理手順＞
次に、本実施の形態に従うメモリマネージメント機能に係る処理手順について説明する。図１１は、本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。図１１に示す各ステップは、図１に示すプロセッサ１００が、基本システム１２２、メモリマネージャ１２４、およびアプリケーション１２６を実行することで実現される。
【０１３８】
図１１を参照して、まず、プロセッサ１００は、相対的に重要なデータを記憶するための領域２００をフラッシュメモリの記憶領域内に割り当てることが必要であるか否かを判断する（ステップＳ１００）。具体的には、情報処理装置１にフラッシュメモリが装着された後、装着されたフラッシュメモリ内に領域２００が存在しない場合には、領域２００の割り当てが必要であると判断される。あるいは、フラッシュメモリが初期化（フォーマット）された後には、領域２００の割り当てが必要であると判断される。領域２００をフラッシュメモリの記憶領域内に割り当てることが必要ではないと判断された場合（ステップＳ１００においてＮＯの場合）には、ステップＳ１００の処理が繰り返される。
【０１３９】
領域２００をフラッシュメモリの記憶領域内に割り当てることが必要であると判断された場合（ステップＳ１００においてＹＥＳの場合）には、プロセッサ１００は、使用領域２０２のサイズを決定する（ステップＳ１０２）。この使用領域２０２のサイズは、アプリケーション１２６側から要求される場合もあるし、書き込むべきデータ量などに応じて決定される場合もある。
【０１４０】
続いて、プロセッサ１００は、保護領域２０４のサイズを決定する（ステップＳ１０４）。プロセッサ１００は、書き込み対象のフラッシュメモリにおける消去ブロックのサイズを取得または推定することで、保護領域２０４のサイズを決定する。上述したように、この保護領域２０４のサイズを決定する方法としては、種々の実装形態が考えられる。
【０１４１】
さらに、プロセッサ１００は、使用領域２０２および保護領域２０４を含む領域２００をフラッシュメモリの記憶領域内に割り当てる（ステップＳ１０６）。このフラッシュメモリ内への領域２００の割り当ては、先頭クラスタ（ＭＢＲ）の連結リスト（図８参照）の内容を更新することで実現される。また、プロセッサ１００は、領域２００に含まれる使用領域２０２と保護領域２０４とを区別するための領域管理情報２１０を保護領域２０４または先頭クラスタ（ＭＢＲ）へ書き込む。
【０１４２】
以上の処理によって、フラッシュメモリの記憶領域内への領域２００の割り当てが完了する。
【０１４３】
続いて、プロセッサ１００は、領域２００に含まれる保護領域２０４の評価が必要であるか否かを判断する（ステップＳ１１０）。上述したように、他のフラッシュメモリから領域２００がコピーされた場合や、ハードディスクにバックアップされた領域２００が書き戻されたような場合に、領域２００に含まれる保護領域２０４の評価が必要であると判断される。なお、領域２００に含まれる保護領域２０４の評価が必要ではないと判断された場合（ステップＳ１１０においてＮＯの場合）には、ステップＳ１１２〜Ｓ１１６の処理がスキップされる。
【０１４４】
領域２００に含まれる保護領域２０４の評価が必要であると判断された場合（ステップＳ１１０においてＹＥＳの場合）には、プロセッサ１００は、フラッシュメモリの記憶領域内において領域２００を特定する（ステップＳ１１２）。続いて、プロセッサ１００は、特定された領域２００に割り当てられている使用領域２０２および保護領域２０４を、そのフラッシュメモリについての消去ブロックと関連付けて正当性を評価する。すなわち、プロセッサ１００は、特定された領域２００に割り当てられている使用領域２０２および保護領域２０４が正当であるか否かを判断する（ステップＳ１１４）。上述したように、プロセッサ１００は、各種の方法で対象のフラッシュメモリの消去ブロックについての情報を取得し、この取得した情報に基づいて、保護領域２０４のサイズおよび／または位置などが適切であるか否かを判断する。
【０１４５】
使用領域２０２および保護領域２０４が正当であると判断された場合（ステップＳ１１４においてＹＥＳの場合）には、ステップＳ１１６の処理はスキップされ、使用領域２０２および保護領域２０４に対する変更はなされない。
【０１４６】
これに対して、使用領域２０２および保護領域２０４が正当ではないと判断された場合（ステップＳ１１４においてＮＯの場合）には、プロセッサ１００は、保護領域２０４を再割り当てする（ステップＳ１１６）。典型的には、保護領域２０４のサイズをより大きくする。
【０１４７】
以上の処理によって、領域２００がいずれかのフラッシュメモリへコピーされた場合であっても、使用領域２０２に記憶されているデータを保護できる。
【０１４８】
続いて、プロセッサ１００は、フラッシュメモリへのデータの書き込みが要求されたか否かを判断する（ステップＳ１２０）。フラッシュメモリへのデータの書き込みが要求されていない場合（ステップＳ１２０においてＮＯの場合）には、処理はステップＳ１３０へ進む。
【０１４９】
フラッシュメモリへのデータの書き込みが要求された場合（ステップＳ１２０においてＹＥＳの場合）には、プロセッサ１００は、通常のデータの書き込みが要求されたか否かを判断する（ステップＳ１２２）。通常のデータの書き込みが要求された場合（ステップＳ１２２においてＹＥＳの場合）には、プロセッサ１００は、通常の手順に従って、要求されたデータをフラッシュメモリの領域２００以外の記憶領域に書き込む（ステップＳ１２４）。そして、処理はステップＳ１３０へ進む。
【０１５０】
一方、通常のデータの書き込みが要求されていない場合（ステップＳ１２２においてＮＯの場合）、すなわち、領域２００の使用領域２０２へのデータ書き込みが要求された場合には、プロセッサ１００は、要求されたデータを、フラッシュメモリに割り当てられた領域２００の使用領域２０２に書き込む（ステップＳ１２６）。また、プロセッサ１００は、使用領域２０２に書き込んだデータを特定するための情報をリスト情報２１２に追記する（ステップＳ１２８）。そして、処理はステップＳ１３０へ進む。
【０１５１】
続いて、プロセッサ１００は、フラッシュメモリからのデータの読み出しが要求されたか否かを判断する（ステップＳ１３０）。フラッシュメモリからのデータの読み出しが要求されていない場合（ステップＳ１３０においてＮＯの場合）には、ステップＳ１１０以下の処理が繰り返される。
【０１５２】
フラッシュメモリからのデータの読み出しが要求された場合（ステップＳ１３０においてＹＥＳの場合）には、プロセッサ１００は、通常のデータの読み出しが要求されたか否かを判断する（ステップＳ１３２）。通常のデータの読み出しが要求された場合（ステップＳ１３２においてＹＥＳの場合）には、プロセッサ１００は、通常の手順に従って、要求されたデータをフラッシュメモリの領域２００以外の記憶領域から読み出し（ステップＳ１３４）。そして、ステップＳ１１０以下の処理が繰り返される。
【０１５３】
一方、通常のデータの読み出しが要求されていない場合（ステップＳ１３２においてＮＯの場合）、すなわち、領域２００の使用領域２０２からのデータ読み出しが要求された場合には、プロセッサ１００は、リスト情報２１２を参照して、読み出しが要求されたデータが記憶されている位置を特定する（ステップＳ１３６）。続いて、プロセッサ１００は、特定した位置に基づいて、領域２００の使用領域２０２から要求されたデータを読み出す（ステップＳ１３８）。そして、ステップＳ１１０以下の処理が繰り返される。
【０１５４】
＜Ｇ．その他の形態＞
実施の形態に従うメモリマネージメント機能を実現するためのプログラム単体が提供さてもよい。このようなプログラムは、ネットワークを通じて配信されてもよいし、ＣＤ−ＲＯＭやＤＶＤなど記録媒体を通じて提供されてもよい。実施の形態に従うメモリマネージメント機能は、それぞれの機能を提供するための命令を含むプログラムが格納された記録媒体と、当該記録媒体に格納されたプログラムを読み出して実行可能な少なくとも１つの演算処理部（プロセッサ）とを組み合わせた、情報処理システムとして具現化されてもよい。
【０１５５】
別の実施の形態に従えば、メモリマネージメント機能に必要な機能の一部を複数の処理主体によって実行してもよい。典型的には、いわゆるクラウドシステムのような、本実施の形態に従うメモリマネージメント機能に必要な一連の処理が複数の処理主体に分散して実現されてもよい。
【０１５６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１５７】
１  情報処理装置、２  可搬型メモリデバイス、２０  メモリアレイ、２１  データ入力回路、２２  アドレスデコーダ、２３  データ出力回路、２４  行デコーダ、２５  書出／読出回路、１００  プロセッサ、１０２  ＲＡＭ、１０４  ＲＯＭ、１０６  入力部、１０８  表示部、１１０  通信インターフェイス、１１２  メモリインターフェイス、１２０  補助記憶装置、１２２  基本システム、１２４  メモリマネージャ、１２６  アプリケーション、２００  領域、２０２  使用領域、２０４  保護領域、２１０  領域管理情報、２１２  リスト情報、１２２２  ＦＡＴファイルシステム、１２４２，１２４４  ファイルシステム、１２２４  ドライバ、Ｇ０，Ｇ１  ゲートトランジスタ、ＧＬ０，ＧＬ１  ゲート線、Ｍ０，Ｍ１，…，Ｍｍ  メモリセル、ＷＬ０，ＷＬ１，…，ＷＬｍ  ワード線。
【図１】
2013077209.tif 000003
【図２】
2013077209.tif 000004
【図３】
2013077209.tif 000005
【図４】
2013077209.tif 000006
【図５】
2013077209.tif 000007
【図６】
2013077209.tif 000008
【図７】
2013077209.tif 000009
【図８】
2013077209.tif 000010
【図９】
2013077209.tif 000011
【図１０】
2013077209.tif 000012
【図１１】
2013077209.tif 000013