プログラム、情報処理システム、情報処理装置、および情報処理方法
【課題】他のデータに対するアクセスにより生じるエラーから特定のデータを保護できるプログラム、情報処理システム、情報処理装置、および情報処理方法を提供する。
【解決手段】例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを実行させる。
【解決手段】例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを実行させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラム、情報処理システム、情報処理装置、および情報処理方法に関する。
【背景技術】
【0002】
近年、半導体記憶手段(例えば、フラッシュメモリ)における記憶容量の増大や低コスト化などに伴って、半導体記憶手段の適用範囲が広がっている。典型的には、半導体記憶手段は、さまざまな装置に内蔵された状態で利用され、あるいは、着脱可能な形態で利用される。
【0003】
このような半導体記憶手段では、記憶容量の増大や低コスト化の観点から、1つの記憶素子(メモリセル)に複数のビットを記憶させる技術が開発されている。1つのメモリセルが1ビットのデータを保持する従来の半導体記憶手段がSLC(Single Level Cell)型と称されるのに対して、1つのメモリセルが複数ビットのデータを保持するという意味でMLC(Multi Level Cell)型と称される。MLC型の半導体記憶手段では、1つのメモリに複数ビットのデータを保持できるため、SLC型に比較して、同一のメモリセル数で比較した場合に、より大容量化することができる。
【0004】
特開2005−32431号公報(特許文献1)には、このようなMLC型の半導体記憶手段の構成や制御動作などについて開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−32431号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したようなMLC型の半導体記憶手段において、データの書き込みおよび読み出しを行なう場合には、アクセス対象のデータが記憶されたメモリセルにアクセスすることになるときに、アクセス対象のメモリセルには、対象のデータ以外のデータが記憶されている場合もある。すなわち、同一のメモリセルに2種類のデータ(のそれぞれ一部)が記憶される可能性がある。
【0007】
このような状況下において、あるデータに係るアクセス時に対象のメモリセル自身、あるいは、対象のメモリセルを管理する部分で何らかのエラーが生じると、アクセス対象のデータ以外のデータへも影響がおよぶ可能性がある。
【0008】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できるプログラム、情報処理システム、情報処理装置、および情報処理方法を提供する。
【課題を解決するための手段】
【0009】
第1の例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを実行させる。
【0010】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0011】
第2の例示的な実施の形態に従えば、第1の例示的な実施の形態において、割当ステップでは、第1の領域を単一のデータとして扱うための情報を半導体記憶手段に書き込む。
【0012】
この実施の形態によれば、第1の領域が単一のデータとして扱われるので、使用領域に隣接して保護領域が割り当てられているという構成を維持できる。
【0013】
第3の例示的な実施の形態に従えば、第2の例示的な実施の形態において、割当ステップでは、第1の領域を単一のファイルとして扱うためのファイル管理情報を半導体記憶手段に書き込む。
【0014】
この実施の形態によれば、第1の領域を割り当てたコンピュータだけではなく、他のコンピュータであっても、第1の領域を単一のファイルとして扱うことになるので、使用領域に隣接して割り当てられている保護領域が削除されるような事態を回避できる。
【0015】
第4の例示的な実施の形態に従えば、第2または第3の例示的な実施の形態において、割当ステップは、第1の領域に含まれる使用領域と保護領域とを区別するための領域管理情報を半導体記憶手段に書き込む。
【0016】
この実施の形態によれば、第1の領域が単一のデータとして扱われる一方で、第1のデータが記憶されている使用領域を容易に特定できる。
【0017】
第5の例示的な実施の形態に従えば、第3または第4の例示的な実施の形態において、半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第2の領域を含み、領域管理情報は、第2の領域に記憶される。
【0018】
この実施の形態によれば、半導体記憶手段の記憶領域に記憶される他のファイルと同様の管理情報を用いて、第1の領域を管理することができる。
【0019】
第6の例示的な実施の形態に従えば、第3または第4の例示的な実施の形態において、領域管理情報は、保護領域に記憶される。
【0020】
この実施の形態によれば、基本的にはデータの記憶には使用されない保護領域を有効に活用することができる。
【0021】
第7の例示的な実施の形態に従えば、第4〜第6のいずれかの例示的な実施の形態において、領域管理情報は、第1のデータとは異なる第2のデータを記憶するための第3の領域の境界から使用領域までのサイズを示すオフセット値を含む。
【0022】
この実施の形態によれば、オフセット値を用いるので、使用領域と保護領域とを区別するための処理が容易化できる。
【0023】
第8の例示的な実施の形態に従えば、第4〜第6のいずれかの例示的な実施の形態において、領域管理情報は、第1の領域のうち使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む。
【0024】
この実施の形態によれば、オフセット値等の値を別途記憶することなく使用領域と保護領域とを区別することができる。また、使用領域と保護領域とを区別するための算出式を秘匿化しておけば、他のコンピュータなどがアクセスした場合であっても、使用領域に記憶されるデータに対するセキュリティ性を高めることができる。
【0025】
第9の例示的な実施の形態に従えば、第1〜第8のいずれかの例示的な実施の形態において、割当ステップでは、半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、保護領域のサイズを決定する。
【0026】
この実施の形態によれば、半導体記憶手段の構造的な特性に関連付けて、保護領域のサイズを決定することで、使用領域に記憶される第1のデータを確実に保護できる。
【0027】
第10の例示的な実施の形態に従えば、第9の例示的な実施の形態において、保護領域のサイズは、半導体記憶手段における消去単位のブロックに関連付けて決定される。
【0028】
この実施の形態によれば、複数のメモリセルに対してデータ破損の可能性がある消去単位のブロックに関連付けて保護領域を割り当てることで、使用領域に記憶される第1のデータを確実に保護できる。
【0029】
第11の例示的な実施の形態に従えば、第10の例示的な実施の形態において、少なくとも消去単位のブロックのサイズの保護領域が割り当てられる。
【0030】
この実施の形態によれば、第1のデータが記憶される領域がいずれの位置に配置されたとしても、1つの消去単位のブロックに第1のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第1のデータを確実に保護できる。
【0031】
第12の例示的な実施の形態に従えば、第10または第11の例示的な実施の形態において、保護領域は、使用領域からブロックの境界に対応する境界までを含むように割り当てられる。
【0032】
この実施の形態によれば、あるブロックに第1のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第1のデータを確実に保護できる。
【0033】
第13の例示的な実施の形態に従えば、第9〜第12のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する。
【0034】
この実施の形態によれば、半導体記憶手段の特性値の相違によってブロックのサイズは異なるが、このようなブロックサイズの相違があっても、保護領域を適切なサイズに設定できる。
【0035】
第14の例示的な実施の形態に従えば、第9〜第12のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する。
【0036】
この実施の形態によれば、第1のデータを書き込む半導体記憶手段に応じて、保護領域を適切なサイズに設定できる。
【0037】
第15の例示的な実施の形態に従えば、第1〜第14のいずれかの例示的な実施の形態において、書込ステップでは、単一のファイルとして扱われる第1の領域に対して、複数のファイルを書き込む。
【0038】
この実施の形態によれば、共通の使用領域に対して、複数のファイルを書き込めるので、半導体記憶手段の記憶容量の利用効率を高めることができる。
【0039】
第16の例示的な実施の形態に従えば、第15の例示的な実施の形態において、複数のファイルは、単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される。
【0040】
この実施の形態によれば、例えば、汎用的なファイルシステムと、特定の機種またはアプリケーションのみが利用できる特殊なファイルシステムとを実装することができるので、データをその用途に応じて記憶することができる。
【0041】
第17の例示的な実施の形態に従えば、第9〜第16のいずれかの例示的な実施の形態において、プログラムは、さらにコンピュータに、半導体記憶手段の記憶領域内において第1のデータが記憶された第1の領域を特定する領域特定ステップと、特定された第1の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、評価ステップにおいて正当ではないと評価されると、保護領域を再割り当てする再割り当てステップとを実行させる。
【0042】
この実施の形態によれば、第1のデータが他の半導体記憶手段へ書き込まれた場合であっても、当該書き込まれた半導体記憶手段において適正な保護領域が設定できる。
【0043】
第18の例示的な実施の形態は、少なくとも1つの演算処理部と演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムを提供する。情報処理システムは、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を含む。半導体記憶手段は、1つのメモリセルに複数ビットを記憶するように構成されている。情報処理システムは、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込むための書込手段を含む。
【0044】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0045】
第19の例示的な実施の形態は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置を提供する。情報処理装置は、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てるための割当手段と、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込むための書込手段とを含む。
【0046】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0047】
第20の例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法を提供する。情報処理方法は、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを含む。
【0048】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【発明の効果】
【0049】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できる。
【図面の簡単な説明】
【0050】
【図1】実施の形態に従うメモリマネージメント機能を搭載した情報処理装置の構成を示すブロック図である。
【図2】図1に示す可搬型メモリデバイスの回路構成の一例を示す図である。
【図3】SLC型およびMLC型の相違を説明するための図である。
【図4】MLC型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。
【図5】データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【図6】本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。
【図7】使用領域および保護領域を含む領域の配置例を示す図である。
【図8】フラッシュメモリのファイルシステムの構成を示す模式図である。
【図9】本実施の形態において割り当てられる領域のより詳細なデータ配置を示す模式図である。
【図10】本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【図11】本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【0051】
実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0052】
<A.概要>
実施の形態に従うメモリマネージメント機能は、例えば、相対的に重要なデータなどを記憶する際に、その隣接した領域へのデータの書き込みによって、当該重要なデータが破損してしまうことを防止する。具体的には、本来的にデータを記憶する使用領域を割り当てるとともに、その使用領域に隣接して、他のデータの記憶を禁止する保護領域を設定する。
【0053】
<B.装置構成>
図1は、実施の形態に従うメモリマネージメント機能を搭載した情報処理装置1の構成を示すブロック図である。図1を参照して、情報処理装置1は、プロセッサ100と、RAM(Random Access Memory)102と、PROM(Programmable Read-Only Memory)104と、入力部106と、表示部108と、通信インターフェイス110と、メモリインターフェイス112と、補助記憶装置120とを含む。
【0054】
プロセッサ100は、情報処理装置1の全体制御を司る演算処理部であり、CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)などで構成される。RAM102は、プロセッサ100において実行されるプログラムのワーキングメモリなどとして機能する。RAM102は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性メモリで構成される。PROM104は、データを不揮発的に記憶する半導体記憶手段である。PROM104は、典型的には、フラッシュメモリなどの不揮発性メモリで構成される。このPROM104の詳細については、後述する。
【0055】
入力部106は、ユーザ操作を受付け、その操作内容をプロセッサ100へ出力する。表示部108は、プロセッサ100によって処理された結果や画像データなどをユーザへ提示する。表示部108は、典型的には、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence:電界発光)ディスプレイなどからなる。
【0056】
通信インターフェイス110は、有線または無線などによって、他の装置との間でデータを交換する機能を提供する。通信インターフェイス110は、典型的には、イーサネット(登録商標)コントローラや無線LANコントローラなどからなる。
【0057】
メモリインターフェイス112は、可搬型メモリデバイス2と着脱可能に構成され、可搬型メモリデバイス2に対してデータの書き込みおよび読み出しを行なう。このような可搬型メモリデバイス2としては、SD(Secure Digital)メモリカードやCF(Compact Flash)メモリカードといった各種の半導体記憶手段を用いることができる。この可搬型メモリデバイス2の詳細についても、PROM104と同様に後述する。
【0058】
補助記憶装置120は、プロセッサ100などによって実行されるプログラムや、画像データなどを不揮発的に記憶する。補助記憶装置120は、典型的には、磁気的にデータを記憶するハードディスク、フラッシュメモリ、メモリカードなどからなる。補助記憶装置120についても、着脱可能に構成してもよいし、複数のデバイスを組み合わせて実装してもよい。
【0059】
補助記憶装置120は、一例として、基本システム122と、メモリマネージャ124と、アプリケーション126とを記憶する。基本システム122は、情報処理装置1を構成する各ハードウェアを利用して各種アプリケーションを実行するための環境を提供する。メモリマネージャ124は、本実施の形態に従うメモリマネージメント機能を実現するための主たるプログラムである。すなわち、メモリマネージャ124は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムの少なくとも一部である。アプリケーション126は、プロセッサ100が基本システム122を実行することで提供される環境上において動作するプログラムであり、ゲーム、ビジネスアプリケーション、ブラウザアプリケーションなどでありうる。
【0060】
なお、情報処理装置1には、カメラなどの撮像手段を搭載していてもよい。このような撮像手段を搭載することで、情報処理装置1自体で画像データを生成することもできる。
【0061】
<C.半導体記憶手段>
本実施の形態に従うメモリマネージメント機能の前提となる半導体記憶手段について説明する。
【0062】
[c1:概要]
本実施の形態に従うメモリマネージメント機能は、フラッシュメモリなどの不揮発的にデータを記憶する半導体記憶手段に向けられている。より具体的には、1つのメモリセルに複数ビットを記憶可能な(いわゆる、MLC(Multi Level Cell)型の)半導体記憶手段に向けられている。すなわち、本実施の形態に従うメモリマネージメント機能は、MLC型の半導体記憶手段に対するデータの書き込みおよび読み出しを管理する。
【0063】
このようなMLC型の半導体記憶手段としては、現時点では、MLC型のフラッシュメモリが一般的である。このようなMLC型のフラッシュメモリにはNAND型やNOR型といった構造上の相違があるが、いずれの構造であっても、本実施の形態に従うメモリマネージメント機能を適用できる。さらに、本実施の形態に従うメモリマネージメント機能は、フラッシュメモリに加えて、セキュリティ機能などの複数機能を1チップ化したカスタムマスクROM(xtraROM)などにも適用可能である。
【0064】
[c2:回路構成]
図2は、図1に示す可搬型メモリデバイス2の回路構成の一例を示す図である。図2には、可搬型メモリデバイス2を実現する典型例として、NAND型フラッシュメモリを示す。
【0065】
図2を参照して、可搬型メモリデバイス2は、データ入力回路21と、アドレスデコーダ22と、データ出力回路23と、複数のメモリアレイ20とを含む。メモリアレイ20の各々には、行デコーダ24および書出/読出回路25が関連付けられている。
【0066】
データ入力回路21は、外部から入力されたデータ(Din)を書き込み先のメモリセルに対応する書込/読出回路25へ出力するとともに、書き込み先のメモリセルのアドレスをアドレスデコーダ22へ出力する。アドレスデコーダ22は、データ入力回路21によって指定されたアドレスに対応する行デコーダ24に対して駆動指令を与える。
【0067】
メモリアレイ20の各々は、複数のメモリセルM0,M1,…,Mmが直列接続されたセルストリング(列)を複数含む。各セルストリングの両端には、ゲートトランジスタG0およびG1が接続されている。また、各セルストリングを構成するメモリセルM0,M1,…,Mmのゲートには、ワード線WL0,WL1,…,WLmがそれぞれ接続される。
【0068】
行デコーダ24は、アドレスデコーダ22からの駆動指令に従ってワード線WLを駆動する。駆動されたワード線WLに対応するメモリセルは活性化される。また、行デコーダ24は、アクセス先のメモリセルに応じて、ゲート線GL0およびGL1を駆動する。ゲート線GL0の駆動により、セルストリングの一端が書込/読出回路25と電気的に接続される。また、ゲート線GL1の駆動により、セルストリングの他端がソース電位(Source)と電気的に接続される。
【0069】
書込/読出回路25は、上述のような行デコーダの動作により選択されたメモリセルと電気的に接続される。データの書き込み動作において、書込/読出回路25は、選択されたメモリセルのフローティングゲートにデータに対応する電荷を注入する。この電荷注入によるデータが書き込まれる(プログラムされる)。
【0070】
一方、データの読出動作において、書込/読出回路25は、選択されたメモリセルが保持する電荷に応じて生じる電圧をしきい値電圧と比較することで、いずれの値がプログラムされているのかを読出す。書込/読出回路25は、読出したデータ(Dout)をデータ出力回路23へ出力する。
【0071】
データ出力回路23は、書込/読出回路25によって読出されたデータを外部へ出力する。NAND型のフラッシュメモリにおいては、構造上、所定のデータ量(典型的には、4kバイト)の単位で書き込みが行なわれる。そのため、書込/読出回路25には、ページバッファを設けてもよい。なお、NOR型のフラッシュメモリにおいては、ビット単位でのデータアクセスが可能である。
【0072】
フラッシュメモリの消去動作としては、メモリセルが形成されているウェル層(P−well)に所定電位を印加することで、各メモリセルのフローティングゲートに注入されている電荷が引き抜かれる。このウェル層は、複数のメモリセルに対して共通に形成されているため、消去時には、共通のウェル層上にある複数のメモリセルに対して一括で行われることになる。このような消去動作の単位となるメモリセル数を、以下「消去ブロック」または「ブロック」と称する。
【0073】
[c3:SLCとMLC]
上述したように、フラッシュメモリでは、フローティングゲートに電荷を注入し、当該電荷の注入により生じる電圧を予め定められたしきい値電圧と比較することで、各メモリセルに記憶されている値を読出す。
【0074】
図3は、SLC型およびMLC型の相違を説明するための図である。図3(a)には、SLC型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示し、図3(b)には、MLC型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示す。
【0075】
図3(a)に示すように、SLC型では、メモリセルで発生する電圧Vと1つのしきい値Vthとを比較し、しきい値Vthより大きいかあるいは小さいかによって、「1」および「0」のいずれがプログラムされているかが判断される。
【0076】
また、図3(b)に示すようにMLC型では、メモリセルで発生する電圧Vと比較されるしきい値を3種類(Vth1,Vth2,Vth3)用意し、メモリセルで発生する電圧Vがいずれのしきい電圧の間に存在するかによって、「11」、「10」、「01」、「11」のいずれがプログラムされているかが判断される。なお、より多くのしきい値を設定し、より多くのビットを記憶するようにしてもよい。
【0077】
このような方法によって、1つのメモリセルに対して、複数のビットを記憶できる。
[c4:アドレス割り当て]
上述したように、MLC型のフラッシュメモリでは、各メモリセルが複数のビットを記憶するので、セルアドレスとホスト側が管理するアドレスとは一致しない。
【0078】
図4は、MLC型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。図4には、1つのセルが2ビット分のデータを記憶する例を示す。MLC型フラッシュメモリにおいて導線を共有するセルの単位を「物理構造におけるページ」と称する。説明の便宜上、図4には、物理構造におけるページの各々に8個のセルが含まれる例を示すが、これに限られるものではない。
【0079】
上述したように、共通のウェル層に形成された複数のセルが「ブロック」と称される。本実施の形態における「消去ブロック」は、このMLC型フラッシュメモリの物理構造におけるブロックと一致するように設定および管理される。すなわち、後述するように、MLC型フラッシュメモリにアクセスするホスト側(メモリコントローラ)は、MLC型フラッシュメモリの物理構造に対応するブロックの単位で、データを消去する。
【0080】
一方、MLC型フラッシュメモリにアクセスするホスト側(メモリコントローラ)から見ると、論理的なアドレスとしてページアドレスが提供される。このホスト側が管理するページを上述の「物理構造におけるページ」とは区別するために、「論理構造におけるページ」と称する。説明の便宜上、図4には、論理構造におけるページの各々に8個のセルが含まれる例を示すが、これに限られるものではない。
【0081】
1つのセルに記憶されるビット数に応じて、物理構造におけるページと、論理構造におけるページとが対応付けられる。図4に示す例では、1つのセルが2ビット分のデータを記憶するので、物理構造における1つのページに対して、論理構造におけるページが2つ割り当てられる。すなわち、物理構造における1つのページに対して、論理構造におけるページのうち2つのがペアとなって対応付けられる。このペアとなる論理構造におけるページ間では、連続したアドレスが割り当てられているとは限らない。
【0082】
但し、ブロックの単位で見た場合には、論理構造における連続する一連のページは、共通のウェル層に形成されたブロックに対応することになる。
【0083】
[c5:データ破損]
図4に示すデータ構造において、単一のデータが複数の消去ブロックにまたがって記憶される場合がある。すなわち、論理構造におけるページが連続していたとしても、書き込み先が異なるブロックに属している場合がある。フラッシュメモリでは、共通のウェル層の上に形成されている複数のメモリセルに対して、一括で電圧が印加されることにある。そのため、データをフラッシュメモリへ書き込む際に、システム電源の遮断や活線状態での抜き出し操作などによって書き込み動作が中断されると、書き込み先の消去ブロック全体にエラーが生じうる。そのため、当該エラーが生じた消去ブロックに記憶された他のデータも破損する場合がある。
【0084】
図5は、データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【0085】
図5を参照して、例えば、ファイル1が「ブロックm」および「ブロックm+1」にまたがって記憶されているとする。この状態において、「ブロックm」を含む領域にファイル2を書き込む場合を考える。このファイル2を書き込んでいる最中に「ブロックm」において何らかのエラーが発生したとする。この場合、「ブロックm」を構成するメモリセルに記憶されていたデータが破損し、アクセス対象のファイル2だけではなく、ファイル1についてもアクセスできなくなる。より具体的には、ファイル1の「ブロックm」に含まれる部分は、実際に破損する可能性があるが、「ブロックm+1」に含まれる部分は、ファイル2へのアクセスによっては破損する可能性はない。このような状態であっても、ファイル全体としてのアクセスは不可能になる。
【0086】
すなわち、あるファイルが複数の消去ブロックにまたがって記憶された場合には、一方の消去ブロックでエラーが生じることによって、他方の消去ブロックに対応する領域に記憶されているデータを含めて、ファイルとしてはアクセスすることができなくなる。
【0087】
具体的な例を挙げると、画像ファイルが先に記憶されているフラッシュメモリに、別の画像ファイルを書き込もうとした際にエラーが発生し、それに伴って、先に記憶されている画像ファイルもアクセスできなくなる可能がある。
【0088】
このように、MLC型のフラッシュメモリでは、あるファイルに対するアクセス(書き込み)を行なった際に、当該アクセス先のファイルとは関係のないファイル(書き込み先のファイルと同じブロックに記憶されているデータを含むファイル)が破損する可能性がある。
【0089】
そこで、本実施の形態に従うメモリマネージメント機能では、物理メモリ空間において隣接する領域に対する書き込み動作によって、隣接する位置に記憶されていたデータが破損し、当該破損したデータを含むファイルへのアクセスができなくなることを防止する。
【0090】
<D.メモリマネージメント機能>
以下、本実施の形態に従うメモリマネージメント機能の詳細について説明する。
【0091】
[d1:基本コンセプト]
上述したような、単一のデータ(ファイル)が複数の消去ブロックにまたがって記憶されてしまう事態を回避するために、本実施の形態においては、本来的にデータを記憶する領域の一方または両方にデータを記憶しない領域を追加する。
【0092】
図6は、本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。図6には、データ1をフラッシュメモリへ記憶する場合の例を示す。
【0093】
図6を参照して、本実施の形態においては、論理メモリ空間において、記憶したい「データ1」に隣接して、データの記憶には使用しない未使用領域を付加する。すなわち、本実施の形態に従うメモリマネージメント機能は、データ1を記憶するための領域200をフラッシュメモリの記憶領域内(論理メモリ空間)に割り当てる。このとき、割り当てられた領域200は、1ファイルとして扱われることが好ましい。この1ファイルとして扱うための方法については、後述する。メモリマネージメント機能は、データ1の書込要求に応答して、割り当てられた領域の境界から所定のサイズを未使用領域(保護領域)204とし、残りの領域を使用領域202とする。そして、メモリマネージメント機能は、データ1を使用領域のみに書き込む。このように、本実施の形態においては、隣接する領域へのデータ書き込みにより生じるエラーからデータ1を保護するために、データ1を記憶する領域の片側または両側に保護領域(バッファ領域)を設ける。隣接する領域にデータが書き込まれ、それによって生じたエラーによる影響を受けないように、保護領域のサイズを設定することで、データ1の予期しない破損を防止することができる。このような適切なサイズの保護領域を設定することで、他のデータの書き込み時に生じるエラーの影響を回避できる。
【0094】
[d2:保護領域のサイズ]
本実施の形態においては、データ記憶に使用される使用領域202が割り当てられるとともに、その片側または両側に保護領域204が割り当てられる。この保護領域のサイズについて説明する。
【0095】
上述したように、複数の消去ブロックにまたがってデータが記憶された場合に、隣接するデータのアクセスによって生じるエラーの影響を受けるので、フラッシュメモリにおける同じ影響を受ける複数のメモリセルからなるブロックのサイズに関連付けて、保護領域204のサイズを決定することが好ましい。より具体的には、消去ブロックのサイズに関連付けて保護領域204のサイズを決定することが好ましい。すなわち、保護領域204のサイズは、フラッシュメモリにおける消去単位のブロックに関連付けて決定される。
【0096】
より具体的には、ホスト側からフラッシュメモリにデータを書き込む場合、割り当てられた領域200のすべてを使用するのではなく、領域200の先頭から最初のブロック境界までの領域、および、領域200の終端から最後のブロック境界までの領域を、いわば「捨て領域」として、データの書き込みには使用しない。すなわち、保護領域204は、使用領域202から消去ブロックの境界に対応する境界までを含むように割り当てられる。
【0097】
消去ブロックの境界に対応する論理メモリ空間におけるアドレスが既知であれば、1または複数の消去ブロックのすべてを単一のデータ(ファイル)に割り当てればよい。しかしながら、一般的には、図6に示すような物理メモリ空間と論理メモリ空間との対応関係は、明らかではなく、かつ、取得することが困難な場合が多い。
【0098】
そこで、一つの実現例としては、保護領域204としては、1つの消去ブロックのサイズ以上を確保すればよい。すなわち、実施の形態に従うメモリマネージメント機能は、少なくとも消去単位のブロックのサイズを有する保護領域204を割り当てる。このように、1つの消去ブロック以上のサイズを有する保護領域204を使用領域202の両側に配置しておくことで、領域200がいずれの位置に記憶されたとしても、使用領域202に記憶されるデータを保護できる。
【0099】
図7は、使用領域202および保護領域204を含む領域200の配置例を示す図である。図7に示す保護領域204の各々のサイズは、消去ブロックと同じである。図7(a)は、領域200の終端と消去ブロックの境界とが一致している状態を示す。図7(b)は、領域200の先頭と消去ブロックの境界とが一致している状態を示す。図7(c)は、領域200の先頭および終端のいずれも消去ブロックの境界とは一致していない状態を示す。
【0100】
図7(a)〜図7(c)に示すように、保護領域204のサイズを消去ブロックのサイズと同じにすることで、領域200がいずれの位置に割り当てられたとしても、使用領域202に対応する消去ブロックに他のデータが書き込まれることを回避できる。すなわち、同一の消去ブロックが使用領域202および他のデータで共有的に使用されることはない。そのため、物理メモリ空間と論理メモリ空間との対応関係が不明であっても、隣接する領域へのデータ書き込みによって生じるエラーから、使用領域202に記憶されるデータを保護できる。
【0101】
なお、消去ブロックの単位は、フラッシュメモリの構造、全体容量、プロセスなどに依存して変化する。そのため、保護領域204のサイズを消去ブロックに関連付けて決定する場合には、消去ブロックのサイズについて、推定または取得する必要がある。
【0102】
(1) 実装例その1
第1の実装例としては、市販されているフラッシュメモリの間で、消去ブロックのサイズの最大値(512kバイトや2Mバイト)を予め調べておき、保護領域204のサイズをその最大値とする方法が考えられる。このような方法を採用することで、いずれの種類のフラッシュメモリが使用された場合であっても、少なくとも1つの消去ブロックに相当する保護領域204を確保できるので、使用領域202に記憶されるデータを保護できる。
【0103】
(2) 実装例その2
第2の実装例としては、対象のフラッシュメモリから識別情報を取得し、当該取得した識別情報から消去ブロックのサイズを推定してもよい。より具体的には、SDメモリカードなどは、それに用いられているフラッシュメモリに関する各種情報(製造者番号、製造番号、機種情報、容量など)を記憶しており、当該情報はホストによってアクセス可能になっている。そこで、対象のフラッシュメモリに関するこのような情報を取得するとともに、予めフラッシュメモリの機種別に消去ブロックのサイズを(例えば、テーブルとして)取得しておき、互いに参照することで、アクセス先のフラッシュメモリに応じた適切なサイズの保護領域204を設定できる。
【0104】
このように、アクセス対象のフラッシュメモリの識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象のフラッシュメモリにおける消去ブロックのサイズを取得してもよい。このように取得された消去ブロックのサイズに基づいて、保護領域204のサイズが決定される。
【0105】
(3) 実装例その3
第3の実装例としては、対象のフラッシュメモリから消去ブロックサイズを直接的に取得してもよい。フラッシュメモリを含むカスタムマスクROMなどにアクセスする場合などには、このようなカスタムマスクROMに内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に応答するようにしてもよい。このような構成を採用することで、ホストがカスタムマスクROMにアクセスすることで、内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に取得でき、それによって、消去ブロックのサイズを決定できる。このように、アクセス対象のフラッシュメモリにアクセスすることで、当該フラッシュメモリについての消去ブロックのサイズを取得してもよい。
【0106】
(4) その他
上述したようなカスタムマスクROMでは、物理メモリ空間と論理メモリ空間との対応関係を予め取得しておくこともできる。このような場合には、図6に示すような保護領域204を両側に配置する必要はない。すなわち、使用領域202の先頭を消去ブロックの境界に一致させて割り当て、使用領域202の終端から次の消去ブロックの境界までを保護領域204として割り当てることもできる。このような割り当てができる場合には、「捨て領域」である保護領域204のサイズを小さくでき、フラッシュメモリの記憶領域を有効に利用できる。
【0107】
[d3:単一ファイル]
図1に示す可搬型メモリデバイス2などに対しては、本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置1だけではなく、他の情報処理装置でもアクセス可能である。そのため、本実施の形態に従うメモリマネージメント機能に従う領域200についても、汎用的なファイルシステムに従って割り当てられることが好ましい。そこで、本実施の形態に従うメモリマネージメント機能においては、使用領域202および保護領域204を含む領域200が単一のデータとして扱われるようにする。すなわち、領域200が割り当てられたフラッシュメモリに他の情報処理装置がアクセスした場合であっても、領域200に対してコピーなどの操作ができるようにする。より具体的には、本実施の形態に従うメモリマネージメント機能は、領域200を単一のデータとして扱うための情報をフラッシュメモリに書き込む。
【0108】
一例として、現行のSDメモリカードでは、ファイルシステムとしてFATファイルシステムが採用されている。このFATファイルシステムでは、先頭クラスタ(MBR:Master Boot Record)に連結リストが格納されており、この連結リストには、記憶されているファイルおよび/またはディレクトリの情報(先頭クラスタ番号および使用クラスタ)が定義される。
【0109】
図8は、フラッシュメモリのファイルシステムの構成を示す模式図である。一例として、図8には、ファイルAおよびファイルBが記憶されている例を示す。FATシステムに従うと、MBRに加えて、連結リストが記憶される。この連結リストには、フラッシュメモリに記憶されているファイルAおよびファイルBのそれぞれの先頭クラスタ番号が記述される。クラスタとは、FATシステムにおいて管理される記憶領域の単位サイズである。
【0110】
本実施の形態においては、領域200が割り当てられている記憶領域の先頭クラスタ番号および領域200が使用しているクラスタの情報が連結リストに書き込まれる。このように連結リストを記述することで、使用領域202と保護領域204とを含む領域200の全体が1ファイルとして取り扱われるようにする。すなわち、本実施の形態に従うメモリマネージメント機能は、領域200を単一のファイルとして扱うための管理情報(ファイル管理情報)をフラッシュメモリに書き込む。このように、領域200内に書き込まれる複数のファイルは、単一のファイルを操作するファイルシステムとは別のファイルシステムにおいてファイルとして管理される。
【0111】
他の情報処理装置が図8に示すMBRの連結リストを参照した場合には、フラッシュメモリには、ファイルAおよびファイルBが記憶されていると認識することになる。そのため、本実施の形態に従うメモリマネージメント機能を搭載していない情報処理装置であっても、ファイルB(領域200)のコピーなどは可能となる。但し、本実施の形態に従うメモリマネージメント機能を搭載していなければ、後述するように、基本的には、領域200に含まれる使用領域202と保護領域204とを区別することはできない。そのため、使用領域202に記憶されるデータに対するセキュリティを保つこともできる。
【0112】
また、ファイル管理情報は、汎用的なファイルシステム(FATファイルシステム)に従って作成されるので、他の情報処理装置でも利用することができる。これによって、他の情報処理装置は、単一のファイル(領域200)を認識することができ、この単一のファイルについて読み出しやコピーなどを行なうことができる。
【0113】
[d4:使用領域と保護領域との区別]
次に、領域200に含まれる使用領域202と保護領域204とを区別するための構成について説明する。
【0114】
本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置は、領域200に含まれる特定の管理情報(領域管理情報)に基づいて、領域200の使用領域202と保護領域204とを区別する。すなわち、本実施の形態において、フラッシュメモリに領域200を割り当てる際には、領域200に含まれる使用領域202と保護領域204とを区別するための領域管理情報についてもフラッシュメモリに書き込まれる。
【0115】
一例として、使用領域202と保護領域204とを区別するための領域管理情報210は、領域200の予め定められた位置に格納される。
【0116】
図9は、本実施の形態において割り当てられる領域200のより詳細なデータ配置を示す模式図である。図9には、領域管理情報210が領域200の先頭部分および終端部分に配置されている例を示す。領域200の位置は予め取得されているので、領域管理情報210の位置は容易に特定できる。なお、領域管理情報210は、領域200の先頭部分および終端部分の一方のみに配置してもよいが、隣接する領域へのアクセスによってエラーが生じて領域管理情報210の内容が失われると、使用領域202の位置を特定することが難しくなるので、両側に領域管理情報210を配置することで、冗長性を高める。また、単一のファイルとして取り扱われる領域200の中に領域管理情報210を埋め込むことで、他のフラッシュメモリへコピーされた場合であっても、本実施の形態に従う機能は維持される。
【0117】
あるいは、フラッシュメモリの先頭クラスタ(MBR)の連結リストとともに、領域管理情報210を記憶してもよい。MBRに領域管理情報210を含ませることで、1つのフラッシュメモリ内に複数の領域200が割り当てられた場合であっても、管理を容易に行なうことができる。すなわち、領域管理情報210は、フラッシュメモリの記憶領域に記憶されるファイルを管理するための領域である先頭クラスタ(MBR)に記憶されてもよい。
【0118】
この領域管理情報210に格納される情報としては、以下のように実装してもよい。
(1) 実装例その1
第1の実装例としては、領域200の先頭から使用領域202の先頭(開始位置)までのオフセット量、および、領域200の終端から使用領域202の終端(終了位置)までのオフセット量を記述する方法である。言い換えれば、それぞれのオフセット量は、それぞれの保護領域204のサイズを意味する。領域200の先頭および終端のアドレスは既知であるので、これらのオフセットの情報によって、使用領域202の位置を特定できる。
【0119】
このように、領域管理情報210は、使用領域202に記憶されるデータとは異なる別のデータを記憶するための隣接する領域から使用領域202までのサイズを示すオフセット値を含む。これにより、領域200に含まれる使用領域202の位置を容易に特定できる。
【0120】
(2) 実装例その2
第2の実装例としては、領域管理情報210に領域200のうち使用領域202の開始位置を所定の算出式に従って算出するためのパラメータを含ませる方法である。このようなパラメータとしては、保護領域204を算出するための値や単位クラスタ数などが含まれる。このようなパラメータに従って、秘匿化された関数に従って演算処理を行なうことで、上述したようなオフセット量を算出することができる。この算出されたオフセット量によって、領域200に含まれる使用領域202と保護領域204とを区別できる。
【0121】
このような算出式を用いて使用領域202の位置を特定する方法を採用することで、使用領域202に記憶されているデータに対する秘匿性を高めることができる。
【0122】
(3) 実装例その3
上述のファイル管理情報と領域管理情報210とを一体化した管理情報としてもよい。この場合、上述したいずれかの領域に2つの管理情報が記憶されてもよい。
【0123】
[d5:複数ファイルを任意に記憶]
上述したように、本実施の形態に従うメモリマネージメント機能では、使用領域202の片側または両側に、データの記憶には利用されない保護領域204を設けるので、記憶領域の利用効率が低下する。そのため、フラッシュメモリの記憶領域内に多数の領域200を割り当てると、必要なデータを記憶するための領域を十分に確保できない可能性もある。
【0124】
そこで、ある実装例としては、使用領域202に複数のデータを順次書き込むようにしてもよい。すなわち、単一のファイルとして扱われる使用領域202に対して、複数のファイルを書き込むようにしてもよい。
【0125】
再度図9を参照して、予め所定の記憶容量を有する使用領域202を割り当てておき、この使用領域202に対して、複数のファイル(データファイル1,データファイル2,…)を適宜書き込むようにしてもよい。このとき、使用領域202にどのようなファイルが記憶されているのかを識別する必要があるので、これらのファイルを識別するための情報を併せて記憶する。
【0126】
より具体的には、図9に示すようなリスト情報212を使用領域202に記憶するようにしてもよい。このリスト情報212は、使用領域202に記憶されるファイルの開始位置および終了位置(または、ファイル間の境界位置)およびそれぞれのファイルの情報(ファイル名や属性情報)を含む。このリスト情報212を参照することで、使用領域202に適宜記憶される各ファイルを独立に扱うことができる。
【0127】
[d6:再設定]
上述したように、本実施の形態においては、使用領域202および保護領域204を含む領域200の全体が1つのファイルとして扱われるので、あるフラッシュメモリに割り当てられた領域200(ファイル)が他のフラッシュメモリにコピーされる場合もある。あるいは、領域200(ファイル)がファイルバックアップによって、ハードディスクなどに一旦記憶された後、当該フラッシュメモリに再度書き込まれる場合もある。
【0128】
このような場合、論理メモリ空間においていずれの位置に領域200が書き込まれるのかは不定であるので、物理メモリ空間における消去ブロックの境界との関係が当初割り当てられた際の関係とはずれてしまう。また、領域200が書き込まれた先のフラッシュメモリにおける消去ブロックのサイズが元のフラッシュメモリのものとは異なる場合もある。
【0129】
上述したように、保護領域204を、市販されているフラッシュメモリにおける消去ブロックの最大サイズとしておくことで、いずれの位置に領域200が書き込まれたとしても、使用領域202に記憶されているデータを保護できる。
【0130】
一方で、物理メモリ空間と論理メモリ空間との対応関係が既知である場合や、フラッシュメモリの消去ブロックのサイズを取得できる場合などには、新たな記憶先の条件下において保護領域204のサイズなどを最適化してもよい。すなわち、何らかのフラッシュメモリに記憶された領域200に対して、その位置およびサイズなどを評価し、その評価結果に基づいて、領域200の保護領域204を再割り当てしてもよい。
【0131】
より具体的には、フラッシュメモリの記憶領域において保護すべきデータ記憶された領域200を特定し、特定された領域200に割り当てられている使用領域202および保護領域204を、当該フラッシュメモリについてのブロック(消去ブロック)と関連付けて正当性を評価する。そして、正当ではないと評価されると、保護領域204を再割り当てする。この正当性の評価では、消去ブロックのサイズや物理メモリ空間と論理メモリ空間との対応関係に基づいて、使用領域202に対応するいずれかの消去ブロックに対して、他のデータが記憶される可能性があるか否かが判断される。
【0132】
<E.機能ブロック>
次に、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックについて説明する。図10は、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【0133】
図10を参照して、プロセッサ100では、アプリケーション126と、ファイルシステム1242および1244と、FATファイルシステム1222と、ドライバ1224とが連携して実行される。ファイルシステム1242および1244は、メモリマネージャ124よって提供される機能である。より具体的には、ファイルシステム1242は、通常のフラッシュメモリへのデータの書込/読出を行なうためのアプリケーション126とのインターフェイスである。また、ファイルシステム1244は、隣接する領域へのデータ書き込みによって生じるエラーから保護される領域へのデータの書込/読出を行なうためのアプリケーション126とのインターフェイスである。
【0134】
アプリケーション126は、取り扱うデータの種類やユーザ操作などに応じて、ファイルシステム1242およびファイルシステム1244のいずれかとデータを遣り取りする。例えば、アプリケーション126は、各種設定値や暗号化用の情報といった、相対的に重要なデータについては、ファイルシステム1244を介して、領域200の使用領域202へ書き込む。これに対して、アプリケーション126は、相対的に重要性の低いデータについては、ファイルシステム1244を介して、使用領域202に書き込む。
【0135】
ファイルシステム1242および1244は、いずれもFATファイルシステム1222との間でデータを遣り取りすることで、アプリケーション126からの要求された動作(データの書き込みおよび読み出し)を実現する。ファイルシステム1244は、FATファイルシステム1222に対して、上述した領域管理情報210およびリスト情報212の作成・更新についての指示も与える。
【0136】
FATファイルシステム1222およびドライバ1224は、基本システム122によって提供される。FATファイルシステム1222は、所定の規則に従って、ドライバ1224に対して指示を与えることで、フラッシュメモリに対してデータの書き込みおよび読み出しを行なう。ドライバ1224は、メモリインターフェイス112(図1)と連携して、対象のフラッシュメモリに対して、データの書き込みおよび読み出しを指示する。
【0137】
<F.処理手順>
次に、本実施の形態に従うメモリマネージメント機能に係る処理手順について説明する。図11は、本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。図11に示す各ステップは、図1に示すプロセッサ100が、基本システム122、メモリマネージャ124、およびアプリケーション126を実行することで実現される。
【0138】
図11を参照して、まず、プロセッサ100は、相対的に重要なデータを記憶するための領域200をフラッシュメモリの記憶領域内に割り当てることが必要であるか否かを判断する(ステップS100)。具体的には、情報処理装置1にフラッシュメモリが装着された後、装着されたフラッシュメモリ内に領域200が存在しない場合には、領域200の割り当てが必要であると判断される。あるいは、フラッシュメモリが初期化(フォーマット)された後には、領域200の割り当てが必要であると判断される。領域200をフラッシュメモリの記憶領域内に割り当てることが必要ではないと判断された場合(ステップS100においてNOの場合)には、ステップS100の処理が繰り返される。
【0139】
領域200をフラッシュメモリの記憶領域内に割り当てることが必要であると判断された場合(ステップS100においてYESの場合)には、プロセッサ100は、使用領域202のサイズを決定する(ステップS102)。この使用領域202のサイズは、アプリケーション126側から要求される場合もあるし、書き込むべきデータ量などに応じて決定される場合もある。
【0140】
続いて、プロセッサ100は、保護領域204のサイズを決定する(ステップS104)。プロセッサ100は、書き込み対象のフラッシュメモリにおける消去ブロックのサイズを取得または推定することで、保護領域204のサイズを決定する。上述したように、この保護領域204のサイズを決定する方法としては、種々の実装形態が考えられる。
【0141】
さらに、プロセッサ100は、使用領域202および保護領域204を含む領域200をフラッシュメモリの記憶領域内に割り当てる(ステップS106)。このフラッシュメモリ内への領域200の割り当ては、先頭クラスタ(MBR)の連結リスト(図8参照)の内容を更新することで実現される。また、プロセッサ100は、領域200に含まれる使用領域202と保護領域204とを区別するための領域管理情報210を保護領域204または先頭クラスタ(MBR)へ書き込む。
【0142】
以上の処理によって、フラッシュメモリの記憶領域内への領域200の割り当てが完了する。
【0143】
続いて、プロセッサ100は、領域200に含まれる保護領域204の評価が必要であるか否かを判断する(ステップS110)。上述したように、他のフラッシュメモリから領域200がコピーされた場合や、ハードディスクにバックアップされた領域200が書き戻されたような場合に、領域200に含まれる保護領域204の評価が必要であると判断される。なお、領域200に含まれる保護領域204の評価が必要ではないと判断された場合(ステップS110においてNOの場合)には、ステップS112〜S116の処理がスキップされる。
【0144】
領域200に含まれる保護領域204の評価が必要であると判断された場合(ステップS110においてYESの場合)には、プロセッサ100は、フラッシュメモリの記憶領域内において領域200を特定する(ステップS112)。続いて、プロセッサ100は、特定された領域200に割り当てられている使用領域202および保護領域204を、そのフラッシュメモリについての消去ブロックと関連付けて正当性を評価する。すなわち、プロセッサ100は、特定された領域200に割り当てられている使用領域202および保護領域204が正当であるか否かを判断する(ステップS114)。上述したように、プロセッサ100は、各種の方法で対象のフラッシュメモリの消去ブロックについての情報を取得し、この取得した情報に基づいて、保護領域204のサイズおよび/または位置などが適切であるか否かを判断する。
【0145】
使用領域202および保護領域204が正当であると判断された場合(ステップS114においてYESの場合)には、ステップS116の処理はスキップされ、使用領域202および保護領域204に対する変更はなされない。
【0146】
これに対して、使用領域202および保護領域204が正当ではないと判断された場合(ステップS114においてNOの場合)には、プロセッサ100は、保護領域204を再割り当てする(ステップS116)。典型的には、保護領域204のサイズをより大きくする。
【0147】
以上の処理によって、領域200がいずれかのフラッシュメモリへコピーされた場合であっても、使用領域202に記憶されているデータを保護できる。
【0148】
続いて、プロセッサ100は、フラッシュメモリへのデータの書き込みが要求されたか否かを判断する(ステップS120)。フラッシュメモリへのデータの書き込みが要求されていない場合(ステップS120においてNOの場合)には、処理はステップS130へ進む。
【0149】
フラッシュメモリへのデータの書き込みが要求された場合(ステップS120においてYESの場合)には、プロセッサ100は、通常のデータの書き込みが要求されたか否かを判断する(ステップS122)。通常のデータの書き込みが要求された場合(ステップS122においてYESの場合)には、プロセッサ100は、通常の手順に従って、要求されたデータをフラッシュメモリの領域200以外の記憶領域に書き込む(ステップS124)。そして、処理はステップS130へ進む。
【0150】
一方、通常のデータの書き込みが要求されていない場合(ステップS122においてNOの場合)、すなわち、領域200の使用領域202へのデータ書き込みが要求された場合には、プロセッサ100は、要求されたデータを、フラッシュメモリに割り当てられた領域200の使用領域202に書き込む(ステップS126)。また、プロセッサ100は、使用領域202に書き込んだデータを特定するための情報をリスト情報212に追記する(ステップS128)。そして、処理はステップS130へ進む。
【0151】
続いて、プロセッサ100は、フラッシュメモリからのデータの読み出しが要求されたか否かを判断する(ステップS130)。フラッシュメモリからのデータの読み出しが要求されていない場合(ステップS130においてNOの場合)には、ステップS110以下の処理が繰り返される。
【0152】
フラッシュメモリからのデータの読み出しが要求された場合(ステップS130においてYESの場合)には、プロセッサ100は、通常のデータの読み出しが要求されたか否かを判断する(ステップS132)。通常のデータの読み出しが要求された場合(ステップS132においてYESの場合)には、プロセッサ100は、通常の手順に従って、要求されたデータをフラッシュメモリの領域200以外の記憶領域から読み出し(ステップS134)。そして、ステップS110以下の処理が繰り返される。
【0153】
一方、通常のデータの読み出しが要求されていない場合(ステップS132においてNOの場合)、すなわち、領域200の使用領域202からのデータ読み出しが要求された場合には、プロセッサ100は、リスト情報212を参照して、読み出しが要求されたデータが記憶されている位置を特定する(ステップS136)。続いて、プロセッサ100は、特定した位置に基づいて、領域200の使用領域202から要求されたデータを読み出す(ステップS138)。そして、ステップS110以下の処理が繰り返される。
【0154】
<G.その他の形態>
実施の形態に従うメモリマネージメント機能を実現するためのプログラム単体が提供さてもよい。このようなプログラムは、ネットワークを通じて配信されてもよいし、CD−ROMやDVDなど記録媒体を通じて提供されてもよい。実施の形態に従うメモリマネージメント機能は、それぞれの機能を提供するための命令を含むプログラムが格納された記録媒体と、当該記録媒体に格納されたプログラムを読み出して実行可能な少なくとも1つの演算処理部(プロセッサ)とを組み合わせた、情報処理システムとして具現化されてもよい。
【0155】
別の実施の形態に従えば、メモリマネージメント機能に必要な機能の一部を複数の処理主体によって実行してもよい。典型的には、いわゆるクラウドシステムのような、本実施の形態に従うメモリマネージメント機能に必要な一連の処理が複数の処理主体に分散して実現されてもよい。
【0156】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0157】
1 情報処理装置、2 可搬型メモリデバイス、20 メモリアレイ、21 データ入力回路、22 アドレスデコーダ、23 データ出力回路、24 行デコーダ、25 書出/読出回路、100 プロセッサ、102 RAM、104 ROM、106 入力部、108 表示部、110 通信インターフェイス、112 メモリインターフェイス、120 補助記憶装置、122 基本システム、124 メモリマネージャ、126 アプリケーション、200 領域、202 使用領域、204 保護領域、210 領域管理情報、212 リスト情報、1222 FATファイルシステム、1242,1244 ファイルシステム、1224 ドライバ、G0,G1 ゲートトランジスタ、GL0,GL1 ゲート線、M0,M1,…,Mm メモリセル、WL0,WL1,…,WLm ワード線。
【技術分野】
【0001】
本発明は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラム、情報処理システム、情報処理装置、および情報処理方法に関する。
【背景技術】
【0002】
近年、半導体記憶手段(例えば、フラッシュメモリ)における記憶容量の増大や低コスト化などに伴って、半導体記憶手段の適用範囲が広がっている。典型的には、半導体記憶手段は、さまざまな装置に内蔵された状態で利用され、あるいは、着脱可能な形態で利用される。
【0003】
このような半導体記憶手段では、記憶容量の増大や低コスト化の観点から、1つの記憶素子(メモリセル)に複数のビットを記憶させる技術が開発されている。1つのメモリセルが1ビットのデータを保持する従来の半導体記憶手段がSLC(Single Level Cell)型と称されるのに対して、1つのメモリセルが複数ビットのデータを保持するという意味でMLC(Multi Level Cell)型と称される。MLC型の半導体記憶手段では、1つのメモリに複数ビットのデータを保持できるため、SLC型に比較して、同一のメモリセル数で比較した場合に、より大容量化することができる。
【0004】
特開2005−32431号公報(特許文献1)には、このようなMLC型の半導体記憶手段の構成や制御動作などについて開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−32431号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したようなMLC型の半導体記憶手段において、データの書き込みおよび読み出しを行なう場合には、アクセス対象のデータが記憶されたメモリセルにアクセスすることになるときに、アクセス対象のメモリセルには、対象のデータ以外のデータが記憶されている場合もある。すなわち、同一のメモリセルに2種類のデータ(のそれぞれ一部)が記憶される可能性がある。
【0007】
このような状況下において、あるデータに係るアクセス時に対象のメモリセル自身、あるいは、対象のメモリセルを管理する部分で何らかのエラーが生じると、アクセス対象のデータ以外のデータへも影響がおよぶ可能性がある。
【0008】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できるプログラム、情報処理システム、情報処理装置、および情報処理方法を提供する。
【課題を解決するための手段】
【0009】
第1の例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムを提供する。プログラムは、コンピュータに、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを実行させる。
【0010】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0011】
第2の例示的な実施の形態に従えば、第1の例示的な実施の形態において、割当ステップでは、第1の領域を単一のデータとして扱うための情報を半導体記憶手段に書き込む。
【0012】
この実施の形態によれば、第1の領域が単一のデータとして扱われるので、使用領域に隣接して保護領域が割り当てられているという構成を維持できる。
【0013】
第3の例示的な実施の形態に従えば、第2の例示的な実施の形態において、割当ステップでは、第1の領域を単一のファイルとして扱うためのファイル管理情報を半導体記憶手段に書き込む。
【0014】
この実施の形態によれば、第1の領域を割り当てたコンピュータだけではなく、他のコンピュータであっても、第1の領域を単一のファイルとして扱うことになるので、使用領域に隣接して割り当てられている保護領域が削除されるような事態を回避できる。
【0015】
第4の例示的な実施の形態に従えば、第2または第3の例示的な実施の形態において、割当ステップは、第1の領域に含まれる使用領域と保護領域とを区別するための領域管理情報を半導体記憶手段に書き込む。
【0016】
この実施の形態によれば、第1の領域が単一のデータとして扱われる一方で、第1のデータが記憶されている使用領域を容易に特定できる。
【0017】
第5の例示的な実施の形態に従えば、第3または第4の例示的な実施の形態において、半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第2の領域を含み、領域管理情報は、第2の領域に記憶される。
【0018】
この実施の形態によれば、半導体記憶手段の記憶領域に記憶される他のファイルと同様の管理情報を用いて、第1の領域を管理することができる。
【0019】
第6の例示的な実施の形態に従えば、第3または第4の例示的な実施の形態において、領域管理情報は、保護領域に記憶される。
【0020】
この実施の形態によれば、基本的にはデータの記憶には使用されない保護領域を有効に活用することができる。
【0021】
第7の例示的な実施の形態に従えば、第4〜第6のいずれかの例示的な実施の形態において、領域管理情報は、第1のデータとは異なる第2のデータを記憶するための第3の領域の境界から使用領域までのサイズを示すオフセット値を含む。
【0022】
この実施の形態によれば、オフセット値を用いるので、使用領域と保護領域とを区別するための処理が容易化できる。
【0023】
第8の例示的な実施の形態に従えば、第4〜第6のいずれかの例示的な実施の形態において、領域管理情報は、第1の領域のうち使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む。
【0024】
この実施の形態によれば、オフセット値等の値を別途記憶することなく使用領域と保護領域とを区別することができる。また、使用領域と保護領域とを区別するための算出式を秘匿化しておけば、他のコンピュータなどがアクセスした場合であっても、使用領域に記憶されるデータに対するセキュリティ性を高めることができる。
【0025】
第9の例示的な実施の形態に従えば、第1〜第8のいずれかの例示的な実施の形態において、割当ステップでは、半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、保護領域のサイズを決定する。
【0026】
この実施の形態によれば、半導体記憶手段の構造的な特性に関連付けて、保護領域のサイズを決定することで、使用領域に記憶される第1のデータを確実に保護できる。
【0027】
第10の例示的な実施の形態に従えば、第9の例示的な実施の形態において、保護領域のサイズは、半導体記憶手段における消去単位のブロックに関連付けて決定される。
【0028】
この実施の形態によれば、複数のメモリセルに対してデータ破損の可能性がある消去単位のブロックに関連付けて保護領域を割り当てることで、使用領域に記憶される第1のデータを確実に保護できる。
【0029】
第11の例示的な実施の形態に従えば、第10の例示的な実施の形態において、少なくとも消去単位のブロックのサイズの保護領域が割り当てられる。
【0030】
この実施の形態によれば、第1のデータが記憶される領域がいずれの位置に配置されたとしても、1つの消去単位のブロックに第1のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第1のデータを確実に保護できる。
【0031】
第12の例示的な実施の形態に従えば、第10または第11の例示的な実施の形態において、保護領域は、使用領域からブロックの境界に対応する境界までを含むように割り当てられる。
【0032】
この実施の形態によれば、あるブロックに第1のデータとその他のデータとが記憶されることを防止できる。そのため、使用領域に記憶される第1のデータを確実に保護できる。
【0033】
第13の例示的な実施の形態に従えば、第9〜第12のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する。
【0034】
この実施の形態によれば、半導体記憶手段の特性値の相違によってブロックのサイズは異なるが、このようなブロックサイズの相違があっても、保護領域を適切なサイズに設定できる。
【0035】
第14の例示的な実施の形態に従えば、第9〜第12のいずれかの例示的な実施の形態において、割当ステップでは、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する。
【0036】
この実施の形態によれば、第1のデータを書き込む半導体記憶手段に応じて、保護領域を適切なサイズに設定できる。
【0037】
第15の例示的な実施の形態に従えば、第1〜第14のいずれかの例示的な実施の形態において、書込ステップでは、単一のファイルとして扱われる第1の領域に対して、複数のファイルを書き込む。
【0038】
この実施の形態によれば、共通の使用領域に対して、複数のファイルを書き込めるので、半導体記憶手段の記憶容量の利用効率を高めることができる。
【0039】
第16の例示的な実施の形態に従えば、第15の例示的な実施の形態において、複数のファイルは、単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される。
【0040】
この実施の形態によれば、例えば、汎用的なファイルシステムと、特定の機種またはアプリケーションのみが利用できる特殊なファイルシステムとを実装することができるので、データをその用途に応じて記憶することができる。
【0041】
第17の例示的な実施の形態に従えば、第9〜第16のいずれかの例示的な実施の形態において、プログラムは、さらにコンピュータに、半導体記憶手段の記憶領域内において第1のデータが記憶された第1の領域を特定する領域特定ステップと、特定された第1の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、評価ステップにおいて正当ではないと評価されると、保護領域を再割り当てする再割り当てステップとを実行させる。
【0042】
この実施の形態によれば、第1のデータが他の半導体記憶手段へ書き込まれた場合であっても、当該書き込まれた半導体記憶手段において適正な保護領域が設定できる。
【0043】
第18の例示的な実施の形態は、少なくとも1つの演算処理部と演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムを提供する。情報処理システムは、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を含む。半導体記憶手段は、1つのメモリセルに複数ビットを記憶するように構成されている。情報処理システムは、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込むための書込手段を含む。
【0044】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0045】
第19の例示的な実施の形態は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置を提供する。情報処理装置は、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てるための割当手段と、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込むための書込手段とを含む。
【0046】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【0047】
第20の例示的な実施の形態は、コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法を提供する。情報処理方法は、第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当ステップと、第1のデータの書込要求に応答して、第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、第1のデータを使用領域のみに書き込む書込ステップとを含む。
【0048】
この実施の形態によれば、第1のデータは使用領域のみに書き込まれるとともに、使用領域に隣接する領域には保護領域が割り当てられる。この保護領域によって、第1のデータに隣接する領域に他のデータが書き込まれることを防止できる。これにより、他のデータに対するアクセスにより生じるエラーから第1のデータを保護できる。
【発明の効果】
【0049】
ある実施の形態によれば、他のデータに対するアクセスにより生じるエラーから特定のデータを保護できる。
【図面の簡単な説明】
【0050】
【図1】実施の形態に従うメモリマネージメント機能を搭載した情報処理装置の構成を示すブロック図である。
【図2】図1に示す可搬型メモリデバイスの回路構成の一例を示す図である。
【図3】SLC型およびMLC型の相違を説明するための図である。
【図4】MLC型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。
【図5】データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【図6】本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。
【図7】使用領域および保護領域を含む領域の配置例を示す図である。
【図8】フラッシュメモリのファイルシステムの構成を示す模式図である。
【図9】本実施の形態において割り当てられる領域のより詳細なデータ配置を示す模式図である。
【図10】本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【図11】本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【0051】
実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0052】
<A.概要>
実施の形態に従うメモリマネージメント機能は、例えば、相対的に重要なデータなどを記憶する際に、その隣接した領域へのデータの書き込みによって、当該重要なデータが破損してしまうことを防止する。具体的には、本来的にデータを記憶する使用領域を割り当てるとともに、その使用領域に隣接して、他のデータの記憶を禁止する保護領域を設定する。
【0053】
<B.装置構成>
図1は、実施の形態に従うメモリマネージメント機能を搭載した情報処理装置1の構成を示すブロック図である。図1を参照して、情報処理装置1は、プロセッサ100と、RAM(Random Access Memory)102と、PROM(Programmable Read-Only Memory)104と、入力部106と、表示部108と、通信インターフェイス110と、メモリインターフェイス112と、補助記憶装置120とを含む。
【0054】
プロセッサ100は、情報処理装置1の全体制御を司る演算処理部であり、CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)などで構成される。RAM102は、プロセッサ100において実行されるプログラムのワーキングメモリなどとして機能する。RAM102は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性メモリで構成される。PROM104は、データを不揮発的に記憶する半導体記憶手段である。PROM104は、典型的には、フラッシュメモリなどの不揮発性メモリで構成される。このPROM104の詳細については、後述する。
【0055】
入力部106は、ユーザ操作を受付け、その操作内容をプロセッサ100へ出力する。表示部108は、プロセッサ100によって処理された結果や画像データなどをユーザへ提示する。表示部108は、典型的には、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence:電界発光)ディスプレイなどからなる。
【0056】
通信インターフェイス110は、有線または無線などによって、他の装置との間でデータを交換する機能を提供する。通信インターフェイス110は、典型的には、イーサネット(登録商標)コントローラや無線LANコントローラなどからなる。
【0057】
メモリインターフェイス112は、可搬型メモリデバイス2と着脱可能に構成され、可搬型メモリデバイス2に対してデータの書き込みおよび読み出しを行なう。このような可搬型メモリデバイス2としては、SD(Secure Digital)メモリカードやCF(Compact Flash)メモリカードといった各種の半導体記憶手段を用いることができる。この可搬型メモリデバイス2の詳細についても、PROM104と同様に後述する。
【0058】
補助記憶装置120は、プロセッサ100などによって実行されるプログラムや、画像データなどを不揮発的に記憶する。補助記憶装置120は、典型的には、磁気的にデータを記憶するハードディスク、フラッシュメモリ、メモリカードなどからなる。補助記憶装置120についても、着脱可能に構成してもよいし、複数のデバイスを組み合わせて実装してもよい。
【0059】
補助記憶装置120は、一例として、基本システム122と、メモリマネージャ124と、アプリケーション126とを記憶する。基本システム122は、情報処理装置1を構成する各ハードウェアを利用して各種アプリケーションを実行するための環境を提供する。メモリマネージャ124は、本実施の形態に従うメモリマネージメント機能を実現するための主たるプログラムである。すなわち、メモリマネージャ124は、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムの少なくとも一部である。アプリケーション126は、プロセッサ100が基本システム122を実行することで提供される環境上において動作するプログラムであり、ゲーム、ビジネスアプリケーション、ブラウザアプリケーションなどでありうる。
【0060】
なお、情報処理装置1には、カメラなどの撮像手段を搭載していてもよい。このような撮像手段を搭載することで、情報処理装置1自体で画像データを生成することもできる。
【0061】
<C.半導体記憶手段>
本実施の形態に従うメモリマネージメント機能の前提となる半導体記憶手段について説明する。
【0062】
[c1:概要]
本実施の形態に従うメモリマネージメント機能は、フラッシュメモリなどの不揮発的にデータを記憶する半導体記憶手段に向けられている。より具体的には、1つのメモリセルに複数ビットを記憶可能な(いわゆる、MLC(Multi Level Cell)型の)半導体記憶手段に向けられている。すなわち、本実施の形態に従うメモリマネージメント機能は、MLC型の半導体記憶手段に対するデータの書き込みおよび読み出しを管理する。
【0063】
このようなMLC型の半導体記憶手段としては、現時点では、MLC型のフラッシュメモリが一般的である。このようなMLC型のフラッシュメモリにはNAND型やNOR型といった構造上の相違があるが、いずれの構造であっても、本実施の形態に従うメモリマネージメント機能を適用できる。さらに、本実施の形態に従うメモリマネージメント機能は、フラッシュメモリに加えて、セキュリティ機能などの複数機能を1チップ化したカスタムマスクROM(xtraROM)などにも適用可能である。
【0064】
[c2:回路構成]
図2は、図1に示す可搬型メモリデバイス2の回路構成の一例を示す図である。図2には、可搬型メモリデバイス2を実現する典型例として、NAND型フラッシュメモリを示す。
【0065】
図2を参照して、可搬型メモリデバイス2は、データ入力回路21と、アドレスデコーダ22と、データ出力回路23と、複数のメモリアレイ20とを含む。メモリアレイ20の各々には、行デコーダ24および書出/読出回路25が関連付けられている。
【0066】
データ入力回路21は、外部から入力されたデータ(Din)を書き込み先のメモリセルに対応する書込/読出回路25へ出力するとともに、書き込み先のメモリセルのアドレスをアドレスデコーダ22へ出力する。アドレスデコーダ22は、データ入力回路21によって指定されたアドレスに対応する行デコーダ24に対して駆動指令を与える。
【0067】
メモリアレイ20の各々は、複数のメモリセルM0,M1,…,Mmが直列接続されたセルストリング(列)を複数含む。各セルストリングの両端には、ゲートトランジスタG0およびG1が接続されている。また、各セルストリングを構成するメモリセルM0,M1,…,Mmのゲートには、ワード線WL0,WL1,…,WLmがそれぞれ接続される。
【0068】
行デコーダ24は、アドレスデコーダ22からの駆動指令に従ってワード線WLを駆動する。駆動されたワード線WLに対応するメモリセルは活性化される。また、行デコーダ24は、アクセス先のメモリセルに応じて、ゲート線GL0およびGL1を駆動する。ゲート線GL0の駆動により、セルストリングの一端が書込/読出回路25と電気的に接続される。また、ゲート線GL1の駆動により、セルストリングの他端がソース電位(Source)と電気的に接続される。
【0069】
書込/読出回路25は、上述のような行デコーダの動作により選択されたメモリセルと電気的に接続される。データの書き込み動作において、書込/読出回路25は、選択されたメモリセルのフローティングゲートにデータに対応する電荷を注入する。この電荷注入によるデータが書き込まれる(プログラムされる)。
【0070】
一方、データの読出動作において、書込/読出回路25は、選択されたメモリセルが保持する電荷に応じて生じる電圧をしきい値電圧と比較することで、いずれの値がプログラムされているのかを読出す。書込/読出回路25は、読出したデータ(Dout)をデータ出力回路23へ出力する。
【0071】
データ出力回路23は、書込/読出回路25によって読出されたデータを外部へ出力する。NAND型のフラッシュメモリにおいては、構造上、所定のデータ量(典型的には、4kバイト)の単位で書き込みが行なわれる。そのため、書込/読出回路25には、ページバッファを設けてもよい。なお、NOR型のフラッシュメモリにおいては、ビット単位でのデータアクセスが可能である。
【0072】
フラッシュメモリの消去動作としては、メモリセルが形成されているウェル層(P−well)に所定電位を印加することで、各メモリセルのフローティングゲートに注入されている電荷が引き抜かれる。このウェル層は、複数のメモリセルに対して共通に形成されているため、消去時には、共通のウェル層上にある複数のメモリセルに対して一括で行われることになる。このような消去動作の単位となるメモリセル数を、以下「消去ブロック」または「ブロック」と称する。
【0073】
[c3:SLCとMLC]
上述したように、フラッシュメモリでは、フローティングゲートに電荷を注入し、当該電荷の注入により生じる電圧を予め定められたしきい値電圧と比較することで、各メモリセルに記憶されている値を読出す。
【0074】
図3は、SLC型およびMLC型の相違を説明するための図である。図3(a)には、SLC型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示し、図3(b)には、MLC型のフラッシュメモリのメモリセルにおける、電圧値とプログラムされる値との関係を示す。
【0075】
図3(a)に示すように、SLC型では、メモリセルで発生する電圧Vと1つのしきい値Vthとを比較し、しきい値Vthより大きいかあるいは小さいかによって、「1」および「0」のいずれがプログラムされているかが判断される。
【0076】
また、図3(b)に示すようにMLC型では、メモリセルで発生する電圧Vと比較されるしきい値を3種類(Vth1,Vth2,Vth3)用意し、メモリセルで発生する電圧Vがいずれのしきい電圧の間に存在するかによって、「11」、「10」、「01」、「11」のいずれがプログラムされているかが判断される。なお、より多くのしきい値を設定し、より多くのビットを記憶するようにしてもよい。
【0077】
このような方法によって、1つのメモリセルに対して、複数のビットを記憶できる。
[c4:アドレス割り当て]
上述したように、MLC型のフラッシュメモリでは、各メモリセルが複数のビットを記憶するので、セルアドレスとホスト側が管理するアドレスとは一致しない。
【0078】
図4は、MLC型フラッシュメモリにおけるハードウェア構造とメモリコントローラが管理するアドレス構造との対応関係の一例を示す図である。図4には、1つのセルが2ビット分のデータを記憶する例を示す。MLC型フラッシュメモリにおいて導線を共有するセルの単位を「物理構造におけるページ」と称する。説明の便宜上、図4には、物理構造におけるページの各々に8個のセルが含まれる例を示すが、これに限られるものではない。
【0079】
上述したように、共通のウェル層に形成された複数のセルが「ブロック」と称される。本実施の形態における「消去ブロック」は、このMLC型フラッシュメモリの物理構造におけるブロックと一致するように設定および管理される。すなわち、後述するように、MLC型フラッシュメモリにアクセスするホスト側(メモリコントローラ)は、MLC型フラッシュメモリの物理構造に対応するブロックの単位で、データを消去する。
【0080】
一方、MLC型フラッシュメモリにアクセスするホスト側(メモリコントローラ)から見ると、論理的なアドレスとしてページアドレスが提供される。このホスト側が管理するページを上述の「物理構造におけるページ」とは区別するために、「論理構造におけるページ」と称する。説明の便宜上、図4には、論理構造におけるページの各々に8個のセルが含まれる例を示すが、これに限られるものではない。
【0081】
1つのセルに記憶されるビット数に応じて、物理構造におけるページと、論理構造におけるページとが対応付けられる。図4に示す例では、1つのセルが2ビット分のデータを記憶するので、物理構造における1つのページに対して、論理構造におけるページが2つ割り当てられる。すなわち、物理構造における1つのページに対して、論理構造におけるページのうち2つのがペアとなって対応付けられる。このペアとなる論理構造におけるページ間では、連続したアドレスが割り当てられているとは限らない。
【0082】
但し、ブロックの単位で見た場合には、論理構造における連続する一連のページは、共通のウェル層に形成されたブロックに対応することになる。
【0083】
[c5:データ破損]
図4に示すデータ構造において、単一のデータが複数の消去ブロックにまたがって記憶される場合がある。すなわち、論理構造におけるページが連続していたとしても、書き込み先が異なるブロックに属している場合がある。フラッシュメモリでは、共通のウェル層の上に形成されている複数のメモリセルに対して、一括で電圧が印加されることにある。そのため、データをフラッシュメモリへ書き込む際に、システム電源の遮断や活線状態での抜き出し操作などによって書き込み動作が中断されると、書き込み先の消去ブロック全体にエラーが生じうる。そのため、当該エラーが生じた消去ブロックに記憶された他のデータも破損する場合がある。
【0084】
図5は、データへのアクセスによって物理メモリ空間において隣接して記憶されているデータが破損される現象を説明するための図である。
【0085】
図5を参照して、例えば、ファイル1が「ブロックm」および「ブロックm+1」にまたがって記憶されているとする。この状態において、「ブロックm」を含む領域にファイル2を書き込む場合を考える。このファイル2を書き込んでいる最中に「ブロックm」において何らかのエラーが発生したとする。この場合、「ブロックm」を構成するメモリセルに記憶されていたデータが破損し、アクセス対象のファイル2だけではなく、ファイル1についてもアクセスできなくなる。より具体的には、ファイル1の「ブロックm」に含まれる部分は、実際に破損する可能性があるが、「ブロックm+1」に含まれる部分は、ファイル2へのアクセスによっては破損する可能性はない。このような状態であっても、ファイル全体としてのアクセスは不可能になる。
【0086】
すなわち、あるファイルが複数の消去ブロックにまたがって記憶された場合には、一方の消去ブロックでエラーが生じることによって、他方の消去ブロックに対応する領域に記憶されているデータを含めて、ファイルとしてはアクセスすることができなくなる。
【0087】
具体的な例を挙げると、画像ファイルが先に記憶されているフラッシュメモリに、別の画像ファイルを書き込もうとした際にエラーが発生し、それに伴って、先に記憶されている画像ファイルもアクセスできなくなる可能がある。
【0088】
このように、MLC型のフラッシュメモリでは、あるファイルに対するアクセス(書き込み)を行なった際に、当該アクセス先のファイルとは関係のないファイル(書き込み先のファイルと同じブロックに記憶されているデータを含むファイル)が破損する可能性がある。
【0089】
そこで、本実施の形態に従うメモリマネージメント機能では、物理メモリ空間において隣接する領域に対する書き込み動作によって、隣接する位置に記憶されていたデータが破損し、当該破損したデータを含むファイルへのアクセスができなくなることを防止する。
【0090】
<D.メモリマネージメント機能>
以下、本実施の形態に従うメモリマネージメント機能の詳細について説明する。
【0091】
[d1:基本コンセプト]
上述したような、単一のデータ(ファイル)が複数の消去ブロックにまたがって記憶されてしまう事態を回避するために、本実施の形態においては、本来的にデータを記憶する領域の一方または両方にデータを記憶しない領域を追加する。
【0092】
図6は、本実施の形態に従うメモリマネージメント機能によって割り当てられる記憶領域を説明するための図である。図6には、データ1をフラッシュメモリへ記憶する場合の例を示す。
【0093】
図6を参照して、本実施の形態においては、論理メモリ空間において、記憶したい「データ1」に隣接して、データの記憶には使用しない未使用領域を付加する。すなわち、本実施の形態に従うメモリマネージメント機能は、データ1を記憶するための領域200をフラッシュメモリの記憶領域内(論理メモリ空間)に割り当てる。このとき、割り当てられた領域200は、1ファイルとして扱われることが好ましい。この1ファイルとして扱うための方法については、後述する。メモリマネージメント機能は、データ1の書込要求に応答して、割り当てられた領域の境界から所定のサイズを未使用領域(保護領域)204とし、残りの領域を使用領域202とする。そして、メモリマネージメント機能は、データ1を使用領域のみに書き込む。このように、本実施の形態においては、隣接する領域へのデータ書き込みにより生じるエラーからデータ1を保護するために、データ1を記憶する領域の片側または両側に保護領域(バッファ領域)を設ける。隣接する領域にデータが書き込まれ、それによって生じたエラーによる影響を受けないように、保護領域のサイズを設定することで、データ1の予期しない破損を防止することができる。このような適切なサイズの保護領域を設定することで、他のデータの書き込み時に生じるエラーの影響を回避できる。
【0094】
[d2:保護領域のサイズ]
本実施の形態においては、データ記憶に使用される使用領域202が割り当てられるとともに、その片側または両側に保護領域204が割り当てられる。この保護領域のサイズについて説明する。
【0095】
上述したように、複数の消去ブロックにまたがってデータが記憶された場合に、隣接するデータのアクセスによって生じるエラーの影響を受けるので、フラッシュメモリにおける同じ影響を受ける複数のメモリセルからなるブロックのサイズに関連付けて、保護領域204のサイズを決定することが好ましい。より具体的には、消去ブロックのサイズに関連付けて保護領域204のサイズを決定することが好ましい。すなわち、保護領域204のサイズは、フラッシュメモリにおける消去単位のブロックに関連付けて決定される。
【0096】
より具体的には、ホスト側からフラッシュメモリにデータを書き込む場合、割り当てられた領域200のすべてを使用するのではなく、領域200の先頭から最初のブロック境界までの領域、および、領域200の終端から最後のブロック境界までの領域を、いわば「捨て領域」として、データの書き込みには使用しない。すなわち、保護領域204は、使用領域202から消去ブロックの境界に対応する境界までを含むように割り当てられる。
【0097】
消去ブロックの境界に対応する論理メモリ空間におけるアドレスが既知であれば、1または複数の消去ブロックのすべてを単一のデータ(ファイル)に割り当てればよい。しかしながら、一般的には、図6に示すような物理メモリ空間と論理メモリ空間との対応関係は、明らかではなく、かつ、取得することが困難な場合が多い。
【0098】
そこで、一つの実現例としては、保護領域204としては、1つの消去ブロックのサイズ以上を確保すればよい。すなわち、実施の形態に従うメモリマネージメント機能は、少なくとも消去単位のブロックのサイズを有する保護領域204を割り当てる。このように、1つの消去ブロック以上のサイズを有する保護領域204を使用領域202の両側に配置しておくことで、領域200がいずれの位置に記憶されたとしても、使用領域202に記憶されるデータを保護できる。
【0099】
図7は、使用領域202および保護領域204を含む領域200の配置例を示す図である。図7に示す保護領域204の各々のサイズは、消去ブロックと同じである。図7(a)は、領域200の終端と消去ブロックの境界とが一致している状態を示す。図7(b)は、領域200の先頭と消去ブロックの境界とが一致している状態を示す。図7(c)は、領域200の先頭および終端のいずれも消去ブロックの境界とは一致していない状態を示す。
【0100】
図7(a)〜図7(c)に示すように、保護領域204のサイズを消去ブロックのサイズと同じにすることで、領域200がいずれの位置に割り当てられたとしても、使用領域202に対応する消去ブロックに他のデータが書き込まれることを回避できる。すなわち、同一の消去ブロックが使用領域202および他のデータで共有的に使用されることはない。そのため、物理メモリ空間と論理メモリ空間との対応関係が不明であっても、隣接する領域へのデータ書き込みによって生じるエラーから、使用領域202に記憶されるデータを保護できる。
【0101】
なお、消去ブロックの単位は、フラッシュメモリの構造、全体容量、プロセスなどに依存して変化する。そのため、保護領域204のサイズを消去ブロックに関連付けて決定する場合には、消去ブロックのサイズについて、推定または取得する必要がある。
【0102】
(1) 実装例その1
第1の実装例としては、市販されているフラッシュメモリの間で、消去ブロックのサイズの最大値(512kバイトや2Mバイト)を予め調べておき、保護領域204のサイズをその最大値とする方法が考えられる。このような方法を採用することで、いずれの種類のフラッシュメモリが使用された場合であっても、少なくとも1つの消去ブロックに相当する保護領域204を確保できるので、使用領域202に記憶されるデータを保護できる。
【0103】
(2) 実装例その2
第2の実装例としては、対象のフラッシュメモリから識別情報を取得し、当該取得した識別情報から消去ブロックのサイズを推定してもよい。より具体的には、SDメモリカードなどは、それに用いられているフラッシュメモリに関する各種情報(製造者番号、製造番号、機種情報、容量など)を記憶しており、当該情報はホストによってアクセス可能になっている。そこで、対象のフラッシュメモリに関するこのような情報を取得するとともに、予めフラッシュメモリの機種別に消去ブロックのサイズを(例えば、テーブルとして)取得しておき、互いに参照することで、アクセス先のフラッシュメモリに応じた適切なサイズの保護領域204を設定できる。
【0104】
このように、アクセス対象のフラッシュメモリの識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象のフラッシュメモリにおける消去ブロックのサイズを取得してもよい。このように取得された消去ブロックのサイズに基づいて、保護領域204のサイズが決定される。
【0105】
(3) 実装例その3
第3の実装例としては、対象のフラッシュメモリから消去ブロックサイズを直接的に取得してもよい。フラッシュメモリを含むカスタムマスクROMなどにアクセスする場合などには、このようなカスタムマスクROMに内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に応答するようにしてもよい。このような構成を採用することで、ホストがカスタムマスクROMにアクセスすることで、内蔵されているフラッシュメモリの消去ブロックのサイズを直接的に取得でき、それによって、消去ブロックのサイズを決定できる。このように、アクセス対象のフラッシュメモリにアクセスすることで、当該フラッシュメモリについての消去ブロックのサイズを取得してもよい。
【0106】
(4) その他
上述したようなカスタムマスクROMでは、物理メモリ空間と論理メモリ空間との対応関係を予め取得しておくこともできる。このような場合には、図6に示すような保護領域204を両側に配置する必要はない。すなわち、使用領域202の先頭を消去ブロックの境界に一致させて割り当て、使用領域202の終端から次の消去ブロックの境界までを保護領域204として割り当てることもできる。このような割り当てができる場合には、「捨て領域」である保護領域204のサイズを小さくでき、フラッシュメモリの記憶領域を有効に利用できる。
【0107】
[d3:単一ファイル]
図1に示す可搬型メモリデバイス2などに対しては、本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置1だけではなく、他の情報処理装置でもアクセス可能である。そのため、本実施の形態に従うメモリマネージメント機能に従う領域200についても、汎用的なファイルシステムに従って割り当てられることが好ましい。そこで、本実施の形態に従うメモリマネージメント機能においては、使用領域202および保護領域204を含む領域200が単一のデータとして扱われるようにする。すなわち、領域200が割り当てられたフラッシュメモリに他の情報処理装置がアクセスした場合であっても、領域200に対してコピーなどの操作ができるようにする。より具体的には、本実施の形態に従うメモリマネージメント機能は、領域200を単一のデータとして扱うための情報をフラッシュメモリに書き込む。
【0108】
一例として、現行のSDメモリカードでは、ファイルシステムとしてFATファイルシステムが採用されている。このFATファイルシステムでは、先頭クラスタ(MBR:Master Boot Record)に連結リストが格納されており、この連結リストには、記憶されているファイルおよび/またはディレクトリの情報(先頭クラスタ番号および使用クラスタ)が定義される。
【0109】
図8は、フラッシュメモリのファイルシステムの構成を示す模式図である。一例として、図8には、ファイルAおよびファイルBが記憶されている例を示す。FATシステムに従うと、MBRに加えて、連結リストが記憶される。この連結リストには、フラッシュメモリに記憶されているファイルAおよびファイルBのそれぞれの先頭クラスタ番号が記述される。クラスタとは、FATシステムにおいて管理される記憶領域の単位サイズである。
【0110】
本実施の形態においては、領域200が割り当てられている記憶領域の先頭クラスタ番号および領域200が使用しているクラスタの情報が連結リストに書き込まれる。このように連結リストを記述することで、使用領域202と保護領域204とを含む領域200の全体が1ファイルとして取り扱われるようにする。すなわち、本実施の形態に従うメモリマネージメント機能は、領域200を単一のファイルとして扱うための管理情報(ファイル管理情報)をフラッシュメモリに書き込む。このように、領域200内に書き込まれる複数のファイルは、単一のファイルを操作するファイルシステムとは別のファイルシステムにおいてファイルとして管理される。
【0111】
他の情報処理装置が図8に示すMBRの連結リストを参照した場合には、フラッシュメモリには、ファイルAおよびファイルBが記憶されていると認識することになる。そのため、本実施の形態に従うメモリマネージメント機能を搭載していない情報処理装置であっても、ファイルB(領域200)のコピーなどは可能となる。但し、本実施の形態に従うメモリマネージメント機能を搭載していなければ、後述するように、基本的には、領域200に含まれる使用領域202と保護領域204とを区別することはできない。そのため、使用領域202に記憶されるデータに対するセキュリティを保つこともできる。
【0112】
また、ファイル管理情報は、汎用的なファイルシステム(FATファイルシステム)に従って作成されるので、他の情報処理装置でも利用することができる。これによって、他の情報処理装置は、単一のファイル(領域200)を認識することができ、この単一のファイルについて読み出しやコピーなどを行なうことができる。
【0113】
[d4:使用領域と保護領域との区別]
次に、領域200に含まれる使用領域202と保護領域204とを区別するための構成について説明する。
【0114】
本実施の形態に従うメモリマネージメント機能を搭載する情報処理装置は、領域200に含まれる特定の管理情報(領域管理情報)に基づいて、領域200の使用領域202と保護領域204とを区別する。すなわち、本実施の形態において、フラッシュメモリに領域200を割り当てる際には、領域200に含まれる使用領域202と保護領域204とを区別するための領域管理情報についてもフラッシュメモリに書き込まれる。
【0115】
一例として、使用領域202と保護領域204とを区別するための領域管理情報210は、領域200の予め定められた位置に格納される。
【0116】
図9は、本実施の形態において割り当てられる領域200のより詳細なデータ配置を示す模式図である。図9には、領域管理情報210が領域200の先頭部分および終端部分に配置されている例を示す。領域200の位置は予め取得されているので、領域管理情報210の位置は容易に特定できる。なお、領域管理情報210は、領域200の先頭部分および終端部分の一方のみに配置してもよいが、隣接する領域へのアクセスによってエラーが生じて領域管理情報210の内容が失われると、使用領域202の位置を特定することが難しくなるので、両側に領域管理情報210を配置することで、冗長性を高める。また、単一のファイルとして取り扱われる領域200の中に領域管理情報210を埋め込むことで、他のフラッシュメモリへコピーされた場合であっても、本実施の形態に従う機能は維持される。
【0117】
あるいは、フラッシュメモリの先頭クラスタ(MBR)の連結リストとともに、領域管理情報210を記憶してもよい。MBRに領域管理情報210を含ませることで、1つのフラッシュメモリ内に複数の領域200が割り当てられた場合であっても、管理を容易に行なうことができる。すなわち、領域管理情報210は、フラッシュメモリの記憶領域に記憶されるファイルを管理するための領域である先頭クラスタ(MBR)に記憶されてもよい。
【0118】
この領域管理情報210に格納される情報としては、以下のように実装してもよい。
(1) 実装例その1
第1の実装例としては、領域200の先頭から使用領域202の先頭(開始位置)までのオフセット量、および、領域200の終端から使用領域202の終端(終了位置)までのオフセット量を記述する方法である。言い換えれば、それぞれのオフセット量は、それぞれの保護領域204のサイズを意味する。領域200の先頭および終端のアドレスは既知であるので、これらのオフセットの情報によって、使用領域202の位置を特定できる。
【0119】
このように、領域管理情報210は、使用領域202に記憶されるデータとは異なる別のデータを記憶するための隣接する領域から使用領域202までのサイズを示すオフセット値を含む。これにより、領域200に含まれる使用領域202の位置を容易に特定できる。
【0120】
(2) 実装例その2
第2の実装例としては、領域管理情報210に領域200のうち使用領域202の開始位置を所定の算出式に従って算出するためのパラメータを含ませる方法である。このようなパラメータとしては、保護領域204を算出するための値や単位クラスタ数などが含まれる。このようなパラメータに従って、秘匿化された関数に従って演算処理を行なうことで、上述したようなオフセット量を算出することができる。この算出されたオフセット量によって、領域200に含まれる使用領域202と保護領域204とを区別できる。
【0121】
このような算出式を用いて使用領域202の位置を特定する方法を採用することで、使用領域202に記憶されているデータに対する秘匿性を高めることができる。
【0122】
(3) 実装例その3
上述のファイル管理情報と領域管理情報210とを一体化した管理情報としてもよい。この場合、上述したいずれかの領域に2つの管理情報が記憶されてもよい。
【0123】
[d5:複数ファイルを任意に記憶]
上述したように、本実施の形態に従うメモリマネージメント機能では、使用領域202の片側または両側に、データの記憶には利用されない保護領域204を設けるので、記憶領域の利用効率が低下する。そのため、フラッシュメモリの記憶領域内に多数の領域200を割り当てると、必要なデータを記憶するための領域を十分に確保できない可能性もある。
【0124】
そこで、ある実装例としては、使用領域202に複数のデータを順次書き込むようにしてもよい。すなわち、単一のファイルとして扱われる使用領域202に対して、複数のファイルを書き込むようにしてもよい。
【0125】
再度図9を参照して、予め所定の記憶容量を有する使用領域202を割り当てておき、この使用領域202に対して、複数のファイル(データファイル1,データファイル2,…)を適宜書き込むようにしてもよい。このとき、使用領域202にどのようなファイルが記憶されているのかを識別する必要があるので、これらのファイルを識別するための情報を併せて記憶する。
【0126】
より具体的には、図9に示すようなリスト情報212を使用領域202に記憶するようにしてもよい。このリスト情報212は、使用領域202に記憶されるファイルの開始位置および終了位置(または、ファイル間の境界位置)およびそれぞれのファイルの情報(ファイル名や属性情報)を含む。このリスト情報212を参照することで、使用領域202に適宜記憶される各ファイルを独立に扱うことができる。
【0127】
[d6:再設定]
上述したように、本実施の形態においては、使用領域202および保護領域204を含む領域200の全体が1つのファイルとして扱われるので、あるフラッシュメモリに割り当てられた領域200(ファイル)が他のフラッシュメモリにコピーされる場合もある。あるいは、領域200(ファイル)がファイルバックアップによって、ハードディスクなどに一旦記憶された後、当該フラッシュメモリに再度書き込まれる場合もある。
【0128】
このような場合、論理メモリ空間においていずれの位置に領域200が書き込まれるのかは不定であるので、物理メモリ空間における消去ブロックの境界との関係が当初割り当てられた際の関係とはずれてしまう。また、領域200が書き込まれた先のフラッシュメモリにおける消去ブロックのサイズが元のフラッシュメモリのものとは異なる場合もある。
【0129】
上述したように、保護領域204を、市販されているフラッシュメモリにおける消去ブロックの最大サイズとしておくことで、いずれの位置に領域200が書き込まれたとしても、使用領域202に記憶されているデータを保護できる。
【0130】
一方で、物理メモリ空間と論理メモリ空間との対応関係が既知である場合や、フラッシュメモリの消去ブロックのサイズを取得できる場合などには、新たな記憶先の条件下において保護領域204のサイズなどを最適化してもよい。すなわち、何らかのフラッシュメモリに記憶された領域200に対して、その位置およびサイズなどを評価し、その評価結果に基づいて、領域200の保護領域204を再割り当てしてもよい。
【0131】
より具体的には、フラッシュメモリの記憶領域において保護すべきデータ記憶された領域200を特定し、特定された領域200に割り当てられている使用領域202および保護領域204を、当該フラッシュメモリについてのブロック(消去ブロック)と関連付けて正当性を評価する。そして、正当ではないと評価されると、保護領域204を再割り当てする。この正当性の評価では、消去ブロックのサイズや物理メモリ空間と論理メモリ空間との対応関係に基づいて、使用領域202に対応するいずれかの消去ブロックに対して、他のデータが記憶される可能性があるか否かが判断される。
【0132】
<E.機能ブロック>
次に、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックについて説明する。図10は、本実施の形態に従うメモリマネージメント機能を実現するための機能ブロックを示す模式図である。
【0133】
図10を参照して、プロセッサ100では、アプリケーション126と、ファイルシステム1242および1244と、FATファイルシステム1222と、ドライバ1224とが連携して実行される。ファイルシステム1242および1244は、メモリマネージャ124よって提供される機能である。より具体的には、ファイルシステム1242は、通常のフラッシュメモリへのデータの書込/読出を行なうためのアプリケーション126とのインターフェイスである。また、ファイルシステム1244は、隣接する領域へのデータ書き込みによって生じるエラーから保護される領域へのデータの書込/読出を行なうためのアプリケーション126とのインターフェイスである。
【0134】
アプリケーション126は、取り扱うデータの種類やユーザ操作などに応じて、ファイルシステム1242およびファイルシステム1244のいずれかとデータを遣り取りする。例えば、アプリケーション126は、各種設定値や暗号化用の情報といった、相対的に重要なデータについては、ファイルシステム1244を介して、領域200の使用領域202へ書き込む。これに対して、アプリケーション126は、相対的に重要性の低いデータについては、ファイルシステム1244を介して、使用領域202に書き込む。
【0135】
ファイルシステム1242および1244は、いずれもFATファイルシステム1222との間でデータを遣り取りすることで、アプリケーション126からの要求された動作(データの書き込みおよび読み出し)を実現する。ファイルシステム1244は、FATファイルシステム1222に対して、上述した領域管理情報210およびリスト情報212の作成・更新についての指示も与える。
【0136】
FATファイルシステム1222およびドライバ1224は、基本システム122によって提供される。FATファイルシステム1222は、所定の規則に従って、ドライバ1224に対して指示を与えることで、フラッシュメモリに対してデータの書き込みおよび読み出しを行なう。ドライバ1224は、メモリインターフェイス112(図1)と連携して、対象のフラッシュメモリに対して、データの書き込みおよび読み出しを指示する。
【0137】
<F.処理手順>
次に、本実施の形態に従うメモリマネージメント機能に係る処理手順について説明する。図11は、本実施の形態に従うメモリマネージメント機能に係る処理手順を示すフローチャートである。図11に示す各ステップは、図1に示すプロセッサ100が、基本システム122、メモリマネージャ124、およびアプリケーション126を実行することで実現される。
【0138】
図11を参照して、まず、プロセッサ100は、相対的に重要なデータを記憶するための領域200をフラッシュメモリの記憶領域内に割り当てることが必要であるか否かを判断する(ステップS100)。具体的には、情報処理装置1にフラッシュメモリが装着された後、装着されたフラッシュメモリ内に領域200が存在しない場合には、領域200の割り当てが必要であると判断される。あるいは、フラッシュメモリが初期化(フォーマット)された後には、領域200の割り当てが必要であると判断される。領域200をフラッシュメモリの記憶領域内に割り当てることが必要ではないと判断された場合(ステップS100においてNOの場合)には、ステップS100の処理が繰り返される。
【0139】
領域200をフラッシュメモリの記憶領域内に割り当てることが必要であると判断された場合(ステップS100においてYESの場合)には、プロセッサ100は、使用領域202のサイズを決定する(ステップS102)。この使用領域202のサイズは、アプリケーション126側から要求される場合もあるし、書き込むべきデータ量などに応じて決定される場合もある。
【0140】
続いて、プロセッサ100は、保護領域204のサイズを決定する(ステップS104)。プロセッサ100は、書き込み対象のフラッシュメモリにおける消去ブロックのサイズを取得または推定することで、保護領域204のサイズを決定する。上述したように、この保護領域204のサイズを決定する方法としては、種々の実装形態が考えられる。
【0141】
さらに、プロセッサ100は、使用領域202および保護領域204を含む領域200をフラッシュメモリの記憶領域内に割り当てる(ステップS106)。このフラッシュメモリ内への領域200の割り当ては、先頭クラスタ(MBR)の連結リスト(図8参照)の内容を更新することで実現される。また、プロセッサ100は、領域200に含まれる使用領域202と保護領域204とを区別するための領域管理情報210を保護領域204または先頭クラスタ(MBR)へ書き込む。
【0142】
以上の処理によって、フラッシュメモリの記憶領域内への領域200の割り当てが完了する。
【0143】
続いて、プロセッサ100は、領域200に含まれる保護領域204の評価が必要であるか否かを判断する(ステップS110)。上述したように、他のフラッシュメモリから領域200がコピーされた場合や、ハードディスクにバックアップされた領域200が書き戻されたような場合に、領域200に含まれる保護領域204の評価が必要であると判断される。なお、領域200に含まれる保護領域204の評価が必要ではないと判断された場合(ステップS110においてNOの場合)には、ステップS112〜S116の処理がスキップされる。
【0144】
領域200に含まれる保護領域204の評価が必要であると判断された場合(ステップS110においてYESの場合)には、プロセッサ100は、フラッシュメモリの記憶領域内において領域200を特定する(ステップS112)。続いて、プロセッサ100は、特定された領域200に割り当てられている使用領域202および保護領域204を、そのフラッシュメモリについての消去ブロックと関連付けて正当性を評価する。すなわち、プロセッサ100は、特定された領域200に割り当てられている使用領域202および保護領域204が正当であるか否かを判断する(ステップS114)。上述したように、プロセッサ100は、各種の方法で対象のフラッシュメモリの消去ブロックについての情報を取得し、この取得した情報に基づいて、保護領域204のサイズおよび/または位置などが適切であるか否かを判断する。
【0145】
使用領域202および保護領域204が正当であると判断された場合(ステップS114においてYESの場合)には、ステップS116の処理はスキップされ、使用領域202および保護領域204に対する変更はなされない。
【0146】
これに対して、使用領域202および保護領域204が正当ではないと判断された場合(ステップS114においてNOの場合)には、プロセッサ100は、保護領域204を再割り当てする(ステップS116)。典型的には、保護領域204のサイズをより大きくする。
【0147】
以上の処理によって、領域200がいずれかのフラッシュメモリへコピーされた場合であっても、使用領域202に記憶されているデータを保護できる。
【0148】
続いて、プロセッサ100は、フラッシュメモリへのデータの書き込みが要求されたか否かを判断する(ステップS120)。フラッシュメモリへのデータの書き込みが要求されていない場合(ステップS120においてNOの場合)には、処理はステップS130へ進む。
【0149】
フラッシュメモリへのデータの書き込みが要求された場合(ステップS120においてYESの場合)には、プロセッサ100は、通常のデータの書き込みが要求されたか否かを判断する(ステップS122)。通常のデータの書き込みが要求された場合(ステップS122においてYESの場合)には、プロセッサ100は、通常の手順に従って、要求されたデータをフラッシュメモリの領域200以外の記憶領域に書き込む(ステップS124)。そして、処理はステップS130へ進む。
【0150】
一方、通常のデータの書き込みが要求されていない場合(ステップS122においてNOの場合)、すなわち、領域200の使用領域202へのデータ書き込みが要求された場合には、プロセッサ100は、要求されたデータを、フラッシュメモリに割り当てられた領域200の使用領域202に書き込む(ステップS126)。また、プロセッサ100は、使用領域202に書き込んだデータを特定するための情報をリスト情報212に追記する(ステップS128)。そして、処理はステップS130へ進む。
【0151】
続いて、プロセッサ100は、フラッシュメモリからのデータの読み出しが要求されたか否かを判断する(ステップS130)。フラッシュメモリからのデータの読み出しが要求されていない場合(ステップS130においてNOの場合)には、ステップS110以下の処理が繰り返される。
【0152】
フラッシュメモリからのデータの読み出しが要求された場合(ステップS130においてYESの場合)には、プロセッサ100は、通常のデータの読み出しが要求されたか否かを判断する(ステップS132)。通常のデータの読み出しが要求された場合(ステップS132においてYESの場合)には、プロセッサ100は、通常の手順に従って、要求されたデータをフラッシュメモリの領域200以外の記憶領域から読み出し(ステップS134)。そして、ステップS110以下の処理が繰り返される。
【0153】
一方、通常のデータの読み出しが要求されていない場合(ステップS132においてNOの場合)、すなわち、領域200の使用領域202からのデータ読み出しが要求された場合には、プロセッサ100は、リスト情報212を参照して、読み出しが要求されたデータが記憶されている位置を特定する(ステップS136)。続いて、プロセッサ100は、特定した位置に基づいて、領域200の使用領域202から要求されたデータを読み出す(ステップS138)。そして、ステップS110以下の処理が繰り返される。
【0154】
<G.その他の形態>
実施の形態に従うメモリマネージメント機能を実現するためのプログラム単体が提供さてもよい。このようなプログラムは、ネットワークを通じて配信されてもよいし、CD−ROMやDVDなど記録媒体を通じて提供されてもよい。実施の形態に従うメモリマネージメント機能は、それぞれの機能を提供するための命令を含むプログラムが格納された記録媒体と、当該記録媒体に格納されたプログラムを読み出して実行可能な少なくとも1つの演算処理部(プロセッサ)とを組み合わせた、情報処理システムとして具現化されてもよい。
【0155】
別の実施の形態に従えば、メモリマネージメント機能に必要な機能の一部を複数の処理主体によって実行してもよい。典型的には、いわゆるクラウドシステムのような、本実施の形態に従うメモリマネージメント機能に必要な一連の処理が複数の処理主体に分散して実現されてもよい。
【0156】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0157】
1 情報処理装置、2 可搬型メモリデバイス、20 メモリアレイ、21 データ入力回路、22 アドレスデコーダ、23 データ出力回路、24 行デコーダ、25 書出/読出回路、100 プロセッサ、102 RAM、104 ROM、106 入力部、108 表示部、110 通信インターフェイス、112 メモリインターフェイス、120 補助記憶装置、122 基本システム、124 メモリマネージャ、126 アプリケーション、200 領域、202 使用領域、204 保護領域、210 領域管理情報、212 リスト情報、1222 FATファイルシステム、1242,1244 ファイルシステム、1224 ドライバ、G0,G1 ゲートトランジスタ、GL0,GL1 ゲート線、M0,M1,…,Mm メモリセル、WL0,WL1,…,WLm ワード線。
【特許請求の範囲】
【請求項1】
コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムであって、前記プログラムは、前記コンピュータに、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込む書込ステップとを実行させる、プログラム。
【請求項2】
前記割当ステップにおいて、前記第1の領域を単一のデータとして扱うための情報を前記半導体記憶手段に書き込む、請求項1に記載のプログラム。
【請求項3】
前記割当ステップにおいて、前記第1の領域を単一のファイルとして扱うためのファイル管理情報を前記半導体記憶手段に書き込む、請求項2に記載のプログラム。
【請求項4】
前記割当ステップにおいて、前記第1の領域に含まれる前記使用領域と前記保護領域とを区別するための領域管理情報を前記半導体記憶手段に書き込む、請求項2または3に記載のプログラム。
【請求項5】
前記半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第2の領域を含み、
前記領域管理情報は、前記第2の領域に記憶される、請求項4に記載のプログラム。
【請求項6】
前記領域管理情報は、前記保護領域に記憶される、請求項4に記載のプログラム。
【請求項7】
前記領域管理情報は、前記第1のデータとは異なる第2のデータを記憶するための第3の領域の境界から前記使用領域までのサイズを示すオフセット値を含む、請求項4〜6のいずれか1項に記載のプログラム。
【請求項8】
前記領域管理情報は、前記第1の領域のうち前記使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む、請求項4〜6のいずれか1項に記載のプログラム。
【請求項9】
前記割当ステップにおいて、前記半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、前記保護領域のサイズを決定する、請求項1〜8のいずれか1項に記載のプログラム。
【請求項10】
前記保護領域のサイズは、前記半導体記憶手段における消去単位のブロックに関連付けて決定される、請求項9に記載のプログラム。
【請求項11】
少なくとも前記消去単位のブロックのサイズの前記保護領域が割り当てられる、請求項10に記載のプログラム。
【請求項12】
前記保護領域は、前記使用領域から前記ブロックの境界に対応する境界までを含むように割り当てられる、請求項10または11に記載のプログラム。
【請求項13】
前記割当ステップにおいて、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する、請求項9〜12のいずれか1項に記載のプログラム。
【請求項14】
前記割当ステップにおいて、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する、請求項9〜12のいずれか1項に記載のプログラム。
【請求項15】
前記書込ステップにおいて、単一のファイルとして扱われる前記第1の領域に対して、複数のファイルを書き込む、請求項1〜14のいずれか1項に記載のプログラム。
に記載のプログラム。
【請求項16】
前記複数のファイルは、前記単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される、請求項15に記載のプログラム。
【請求項17】
前記プログラムは、さらに前記コンピュータに、
前記半導体記憶手段の記憶領域内において前記第1のデータが記憶された第1の領域を特定する領域特定ステップと、
前記特定された第1の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、
前記評価ステップにおいて正当ではないと評価されると、前記保護領域を再割り当てする再割り当てステップとを実行させる、請求項9〜16のいずれか1項に記載のプログラム。
【請求項18】
少なくとも1つの演算処理部と前記演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムであって、
第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を備え、前記半導体記憶手段は、1つのメモリセルに複数ビットを記憶するように構成されており、さらに
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込むための書込手段を備える、情報処理システム。
【請求項19】
1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置であって、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てるための割当手段と、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込むための書込手段とを備える、情報処理装置。
【請求項20】
コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法であって、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込む書込ステップとを備える、情報処理方法。
【請求項1】
コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むためのプログラムであって、前記プログラムは、前記コンピュータに、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込む書込ステップとを実行させる、プログラム。
【請求項2】
前記割当ステップにおいて、前記第1の領域を単一のデータとして扱うための情報を前記半導体記憶手段に書き込む、請求項1に記載のプログラム。
【請求項3】
前記割当ステップにおいて、前記第1の領域を単一のファイルとして扱うためのファイル管理情報を前記半導体記憶手段に書き込む、請求項2に記載のプログラム。
【請求項4】
前記割当ステップにおいて、前記第1の領域に含まれる前記使用領域と前記保護領域とを区別するための領域管理情報を前記半導体記憶手段に書き込む、請求項2または3に記載のプログラム。
【請求項5】
前記半導体記憶手段の記憶領域は、当該記憶領域に記憶されるファイルを管理するための第2の領域を含み、
前記領域管理情報は、前記第2の領域に記憶される、請求項4に記載のプログラム。
【請求項6】
前記領域管理情報は、前記保護領域に記憶される、請求項4に記載のプログラム。
【請求項7】
前記領域管理情報は、前記第1のデータとは異なる第2のデータを記憶するための第3の領域の境界から前記使用領域までのサイズを示すオフセット値を含む、請求項4〜6のいずれか1項に記載のプログラム。
【請求項8】
前記領域管理情報は、前記第1の領域のうち前記使用領域の開始位置を所定の算出式に従って算出するためのパラメータを含む、請求項4〜6のいずれか1項に記載のプログラム。
【請求項9】
前記割当ステップにおいて、前記半導体記憶手段における複数のメモリセルからなるブロックのサイズに関連付けて、前記保護領域のサイズを決定する、請求項1〜8のいずれか1項に記載のプログラム。
【請求項10】
前記保護領域のサイズは、前記半導体記憶手段における消去単位のブロックに関連付けて決定される、請求項9に記載のプログラム。
【請求項11】
少なくとも前記消去単位のブロックのサイズの前記保護領域が割り当てられる、請求項10に記載のプログラム。
【請求項12】
前記保護領域は、前記使用領域から前記ブロックの境界に対応する境界までを含むように割り当てられる、請求項10または11に記載のプログラム。
【請求項13】
前記割当ステップにおいて、アクセス対象の半導体記憶手段の識別情報を取得するとともに、識別情報とブロックのサイズとを対応付けたテーブルを参照することで、アクセス対象の半導体記憶手段についてのブロックサイズを取得する、請求項9〜12のいずれか1項に記載のプログラム。
【請求項14】
前記割当ステップにおいて、アクセス対象の半導体記憶手段にアクセスすることで、当該半導体記憶手段についてのブロックのサイズを取得する、請求項9〜12のいずれか1項に記載のプログラム。
【請求項15】
前記書込ステップにおいて、単一のファイルとして扱われる前記第1の領域に対して、複数のファイルを書き込む、請求項1〜14のいずれか1項に記載のプログラム。
に記載のプログラム。
【請求項16】
前記複数のファイルは、前記単一のファイルを操作するファイルシステムと別のファイルシステムにおいてファイルとして管理される、請求項15に記載のプログラム。
【請求項17】
前記プログラムは、さらに前記コンピュータに、
前記半導体記憶手段の記憶領域内において前記第1のデータが記憶された第1の領域を特定する領域特定ステップと、
前記特定された第1の領域に割り当てられている使用領域および保護領域を、当該半導体記憶手段についてのブロックと関連付けて正当性を評価する評価ステップと、
前記評価ステップにおいて正当ではないと評価されると、前記保護領域を再割り当てする再割り当てステップとを実行させる、請求項9〜16のいずれか1項に記載のプログラム。
【請求項18】
少なくとも1つの演算処理部と前記演算処理部で実行されるプログラムを格納した記録媒体とを含む情報処理システムであって、
第1のデータを記憶するための第1の領域を半導体記憶手段の記憶領域内に割り当てる割当手段を備え、前記半導体記憶手段は、1つのメモリセルに複数ビットを記憶するように構成されており、さらに
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込むための書込手段を備える、情報処理システム。
【請求項19】
1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込む機能を搭載した情報処理装置であって、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てるための割当手段と、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込むための書込手段とを備える、情報処理装置。
【請求項20】
コンピュータで実行される、1つのメモリセルに複数ビットを記憶可能な半導体記憶手段に対してデータを書き込むための情報処理方法であって、
第1のデータを記憶するための第1の領域を前記半導体記憶手段の記憶領域内に割り当てる割当ステップと、
前記第1のデータの書込要求に応答して、前記第1の領域の境界から所定のサイズを保護領域とし、残りの領域を使用領域として、前記第1のデータを前記使用領域のみに書き込む書込ステップとを備える、情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−77209(P2013−77209A)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願番号】特願2011−217349(P2011−217349)
【出願日】平成23年9月30日(2011.9.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.COMPACTFLASH
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願日】平成23年9月30日(2011.9.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.COMPACTFLASH
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]