JP2009301491A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP2009301491A JP2009301491A JP2008158120A JP2008158120A JP2009301491A JP 2009301491 A JP2009301491 A JP 2009301491A JP 2008158120 A JP2008158120 A JP 2008158120A JP 2008158120 A JP2008158120 A JP 2008158120A JP 2009301491 A JP2009301491 A JP 2009301491A
- Authority
- JP
- Japan
- Prior art keywords
- logical
- block
- data
- logical block
- physical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 230000000452 restraining effect Effects 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 111
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Abstract
【課題】論理ページと物理ページの対応関係の管理に係る負担の増加を抑えつつ、データ書き換えの効率を向上させる記憶領域の管理技術を提供する。
【解決手段】各論理ブロックに対して、論理ページと物理ページの対応関係を固定した記憶領域の管理、又論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用される。論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用さている論理ブロック内の領域に対して、所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定回数以上指示されたときに、その論理ブロックに対する記憶領域の管理が、論理ページと物理ページの対応関係を固定しない記憶領域の管理に変更される。
【選択図】図3
【解決手段】各論理ブロックに対して、論理ページと物理ページの対応関係を固定した記憶領域の管理、又論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用される。論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用さている論理ブロック内の領域に対して、所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定回数以上指示されたときに、その論理ブロックに対する記憶領域の管理が、論理ページと物理ページの対応関係を固定しない記憶領域の管理に変更される。
【選択図】図3
Description
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
コンピュータ等の情報処理装置(ホストシステム)では、各種のファイルデータを保存するためにフラッシュメモリを記憶媒体として用いたCF(Compact Flash)カード、SSD(Solid State Drive)等の情報記憶装置(フラッシュメモリシステム)が使われることが多くなっている。このようなフラッシュメモリシステムでは、ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリに対するアクセスが行われる。また、ホストシステムから与えられるアクセス指示では、セクタ(512バイト)単位の領域に付けられたアドレスでアクセス対象の領域が指示される。
このようなフラッシュメモリシステムの記憶媒体として一般的に使用されているNAND型フラッシュメモリでは、ページ(物理ページ)単位でデータの書き込みが行われ、複数の物理ページを含む物理ブロック単位で記憶データの消去が行われる。
NAND型フラッシュメモリを用いたフラッシュメモリシステムでは、ホストシステム側で管理されているアドレスが付けられたセクタ単位の領域を1個又は複数個集めた論理ページを物理ページに割り当てている。この論理ページと物理ページの対応関係の管理が煩雑になることを回避するため、複数個の論理ページを集めた論理ブロックを形成し、ブロック単位で論理ブロックと物理ブロックの対応関係を管理している。尚、論理ブロックに含まれる論理ページと、その論理ブロックと対応する物理ブロックに含まれる物理ページの対応関係については、固定されている場合と固定されていない場合がある。
論理ブロックに含まれる論理ページと、その論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係が固定された記憶領域の管理方式(以下、「ページ対応関係固定方式」と言う)は、例えば、特許文献1に記載されている。このページ対応関係固定方式では、ホストシステムからのアクセス指示に従ってデータを書き込むときに、そのアクセス指示により指定された書き込み先の論理ページを含んだ論理ブロックに対応する物理ブロック内に、データが書き込まれていない物理ページがあっても、上記書き込み先の論理ページに対応する物理ページにデータが書き込まれていれば、上記書き込み先の論理ページを含んだ論理ブロックに別の物理ブロックが新たに割り当てられ、その物理ブロックにデータが書き込まれる。従って、ページ対応関係固定方式では、ホストシステムから与えられる新たなデータをフラッシュメモリに書き込むときに、フラッシュメモリに記憶されているデータが別の物理ブロックに転送される頻度が高くなる。
論理ブロックに含まれる論理ページと、その論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係が固定されていない記憶領域の管理方式(以下、「ページ対応関係可変方式」と言う)は、例えば、特許文献2に記載されている。このページ対応関係可変方式では、ホストシステムから与えられる各論理ページに対応するデータが、物理ブロック内のデータが書き込まれていない先頭の物理ページから順番に書き込まれていく。従って、ページ対応関係可変方式では、上記のようなデータ転送の頻度は低くなるが、論理ページと物理ページの対応関係を管理する必要が生じる。
フラッシュメモリシステムに保存されるファイルデータは、通常、FAT(File Allocation Table)ファイルシステム・NTファイルシステム等のファイルシステムで管理されている。従って、フラッシュメモリシステムには、ファイルデータだけでなく、ファイルデータを管理するための情報も保存される。例えば、FATファイルシステムの場合には、ルートディレクトリを含む情報や、ファイルが使用するクラスタの番号の情報が保存される。NTファイルシステムの場合にも、ファイル名やインデックスを含む情報が保存される。
また、FATファイルシステム・NTファイルシステム等で管理されるファイルデータは、所定のクラスタサイズのデータに分割され、分割されたデータがフラッシュメモリに保存される。このクラスタサイズは、フラッシュメモリシステムの記憶容量が大きくなるにつれて512バイト・1kバイト・2kバイト・4kバイトというように段階的に大きくなっていく。そして、ホストシステムから与えられる書き込み指示に基づいて書き込まれるデータがファイルデータの場合、このクラスタ単位でデータの書き込みが指示される。つまり、書き込まれるデータがファイルデータの場合は、このクラスタサイズよりも小さい単位で、データの書き込みが指示されることがない。一方、書き込まれるデータがファイルデータを管理するための情報の場合は、このクラスタサイズよりも小さい単位(例えばセクタ単位)で、データの書き込みが指示されることがある。
この小さい容量でデータの書き込みが指示される領域(以下、「小容量アクセス領域」と言う)としては、例えば、FATファイルシステムやNTファイルシステムにおけるファイルデータを管理するための情報が保存される領域が挙げられる。FATファイルシステムであれば、ファイル名やルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるFAT領域が、小容量アクセス領域に該当する。NTファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるMFT(Master File Table)領域(管理レコードに割り当てられた領域)が、小容量アクセス領域に該当する。
このようなファイルデータを管理するための情報は書き換えられる頻度が高いため、小容量アクセス領域に対応するデータは書き換え頻度が高い場合が多い。従って、小容量アクセス領域が属する論理ブロックについては、論理ブロックに含まれる論理ページと、その論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係が固定されていない方が好ましい。つまり、小容量アクセス領域が属する論理ブロックについては、ページ対応関係可変方式で論理ページと物理ページの対応関係が管理されることが好ましい。
ホストシステムに電気的に接続されるフラッシュメモリシステムは、ホストシステムから与えられるアクセス指示に基づいてフラッシュメモリシステム内のフラッシュメモリにアクセスする。このホストシステムから与えられるアクセス指示には、書き込みや読み出しを指示するコマンドと、アクセス対象の領域を指定する論理アドレスとが含まれている。フラッシュメモリシステムは、ホストシステムから与えられる論理アドレスと、フラッシュメモリ内の記憶領域に割り当てられている物理アドレスとの対応関係を管理し、この対応関係に基づいて、ホストシステムから与えられるデータをフラッシュメモリに書き込んだり、フラッシュメモリに記憶されているデータをフラッシュメモリから読み出したりする。
このようなアクセス処理において、ホストシステムから与えられる論理アドレスが、上述のディレクトリ領域、FAT領域及びMFT領域等の小容量アクセス領域に割り当てられた論理アドレスであるか否かを、フラッシュメモリシステム側で判断することはできない。
つまり、フラッシュメモリシステム側では、小容量アクセス領域が属する論理ブロックを判別することができない。従って、ページ対応関係可変方式による論理ページと物理ページの対応関係の管理が、小容量アクセス領域が属する論理ブロックだけに適用されるようにすることもできない。また、ページ対応関係可変方式による論理ページと物理ページの対応関係の管理が、全ての論理ブロックに適用されるようにした場合、データ書き換えの効率は向上するが、論理ページと物理ページの対応関係の管理に係る負担が大きくなる。
そこで、本発明は、論理ページと物理ページの対応関係の管理に係る負担の増加を抑えつつ、データ書き換えの効率を向上させることのできる記憶領域の管理技術を提供することを目的とする。
本発明の第一の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と
を備え、
前記論理ブロック種別判断手段が、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込み手段は、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とする。
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と
を備え、
前記論理ブロック種別判断手段が、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込み手段は、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とする。
好適な実施形態では、前記メモリコントローラが、前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写手段を更に備える。前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記論理ブロック種別判断手段は、前記いずれかの前記論理ブロックを第1の論理ブロックと判断し、前記データ複写手段は、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写す。
本発明の第二の側面に従うフラッシュメモリシステムは、前記第一の側面又は前記好適な実施形態に従うメモリコントローラと、前記メモリコントローラによってアクセスされるフラッシュメモリとを備える。
本発明の第三の側面に従う方法は、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断ステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込みステップと
を有し、
前記書き込み方式判断ステップでは、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込みステップでは、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とする。
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断ステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込みステップと
を有し、
前記書き込み方式判断ステップでは、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込みステップでは、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とする。
好適な実施形態では、前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写ステップが更に備えられる。前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記書き込み方式判断ステップにより、前記いずれかの前記論理ブロックが第1の論理ブロックと判断され、前記データ複写ステップにより、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データが、別の物理ブロックに前記論理アドレスの順番で書き写される。
ホストシステムからの指示に基づいて動作するフラッシュメモリシステムにおいて、本発明にかかる記憶領域の管理を適用すれば、論理ページと物理ページの対応関係の管理に係る負担の増加を抑えつつ、データ書き換えの効率を向上させることができる。また、この記憶領域の管理では、論理ページと物理ページの対応関係が固定された領域の管理が適用される領域と、論理ページと物理ページの対応関係が固定されていない領域の管理が適用される領域とが予め設定されている必要がない。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1の構成を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。メモリコントローラ3とフラッシュメモリ2は、内部バス14を介して接続されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
図1に示したように、メモリコントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(Error Correcting Code)ブロック11と、ROM(Read Only Memory)12とから構成される。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、コマンド等の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
SRAM(Static Random Access Memory)8は、揮発性の記憶素子であり、その記憶領域にはフラッシュメモリ2の制御に必要な情報が一時的に保持される。例えば、アドレス変換テーブルや空きブロック検索テーブル等が保持される。ここで、アドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を示したテーブルであり、空きブロック検索テーブルは、消去状態の物理ブロック(又は、有効なデータが保存されていない物理ブロック)を検索するためのテーブルである。
ROM12は、不揮発性の記憶素子であり、メモリコントローラ3が動作するために必要なファームウェアが保存される。
バッファ9は、ホストシステム4から与えられたデータやフラッシュメモリ2から読み出されたデータを一時的に保持する。例えば、フラッシュメモリ2に書き込まれるデータは、フラッシュメモリ2が書き込み可能な状態になるまでバッファ9に保持される。また、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態になるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、フラッシュメモリ2に対する各種の処理を実行する。この処理では、フラッシュメモリインターフェースブロック10とフラッシュメモリ2との間で、データ、アドレス情報、ステータス情報、コマンド等の授受が、内部バス14を介して行なわれる。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error Correcting Code)を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
マイクロプロセッサ6は、ROM12から読み込んだプログラムコードに従って、メモリコントローラ3の全体の動作を制御する。
以上の機能ブロックで構成されたメモリコントローラ3は、ホストシステム4から与えられるアクセス指示に従って動作する。このアクセス指示には、書き込み、読み出し又は消去等の動作を指示するコマンド(以下、ホストシステム4から与えられるコマンドを「外部コマンド」と言う)が含まれている。更に、書き込み又は読み出しを指示する外部コマンドがホストシステム4から与えられるときには、この外部コマンドと共に、アクセス対象の領域を指示するアドレス情報がホストシステム4から与えられる。このアドレス情報には、アクセス対象の領域の先頭アドレスと容量(セクタ数)を示す情報が含まれている。
メモリコントローラ3は、ホストシステム4から与えられるアクセス指示に基づいて、フラッシュメモリ2に、書き込み、読み出し又は消去等の動作を指示するコマンド(以下、メモリコントローラ3がフラッシュメモリ2に与えられるコマンドを「内部コマンド」と言う)を与える。メモリコントローラ3がフラッシュメモリ2に書き込み又は読み出しを指示する内部コマンドを与えるときには、その内部コマンドと共にフラッシュメモリ2内の記憶領域を指示する物理アドレスがフラッシュメモリ2に与えられる。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルから構成されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択された各メモリセル群の中のメモリセルとレジスタとの間で、レジスタからメモリセルへのデータの書き込み又はメモリセルからレジスタへのデータの読み出しが行われる。
NAND型フラッシュメモリでは、データの読み出し及び書き込みはページ(物理ページ)単位で行われ、データの消去はブロック(物理ブロック)単位で行われる。物理ブロックは、複数の物理ページで構成される。例えば、1個の物理ページは、2048バイトの記憶領域であるユーザー領域と、64バイトの記憶領域である冗長領域とで構成され、1個の物理ブロックは、64個の物理ページで構成されている。冗長領域は、誤り訂正符号(ECC:Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データが記憶される領域である。尚、論理アドレス情報は、その物理ブロックと対応する論理ブロックを示す情報である。ブロックステータス(フラグ)は、その物理ブロックの良否を示す情報である。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、論理セクタ領域と言う)に付けられた通し番号であるLBA(Logical Block Address)で管理されている。メモリコントローラ3は、複数個の論理セクタ領域からなる領域を論理ブロックとして取り扱い、この論理ブロックに対して、1個又は複数個の物理ブロックを割り当てる。この論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルで管理されている。このアドレス変換テーブルでは、論理ブロックに付けられた論理ブロック番号(LBN)に対して物理ブロックに付けられた物理ブロックアドレス(PBA)を関連付けることにより論理ブロックと物理ブロックの対応関係を管理している。
本実施形態では、図2に示したようにLBAが連続する256個の論理セクタ領域をまとめたものを論理ブロックとし、この論理ブロックに論理ブロック番号(LBN)が付けられている。例えば、LBA#0〜#255の256個の論理セクタ領域は、LBN#0の論理ブロックに属し、LBA#256〜#511の256個の論理セクタ領域はLBN#1の論理ブロックに属している。このように、LBA#0〜#2047999の2048000個の論理セクタ領域は、LBN#0〜#7999の8000個の論理ブロックのいずれかに属している。
更に、アドレス変換テーブルを管理するための便宜として、メモリコントローラ3は、複数個の論理ブロックをまとめたものを論理グループとして取り扱い、この論理グループ単位でアドレス変換テーブルを管理している。以下、論理グループに付けられた通し番号を論理グループ番号(LGN)と言う。また、図2に示した例では、LBNが連続する論理ブロックが、異なる論理グループに順次振り分けられるようにして論理グループが形成されている。ここでは、LBN#0の論理ブロックはLGN#0の論理グループに、LBN#1の論理ブロックはLGN#1の論理グループに、LBN#2の論理ブロックはLGN#2の論理グループにという順番でLGN#0〜#7の各論理グループにLBN#0〜#7999の8000個の論理ブロックが1000個ずつ振り分けられている。各論理グループに含まれる論理ブロックの個数は、適宜設定することができるが、アドレス変換テーブルが保存されるフラッシュメモリ2の物理ページの記憶容量を考慮して設定することが好ましい。つまり、各論理グループに対応するアドレス変換テーブルは、1個の物理ページに保存できる容量であることが好ましい。
次に、本実施形態の特徴の一つである論理ページと物理ページの対応関係の管理について説明する。本実施形態では図3(a)に示したように4個の論理セクタ領域で論理ページを形成している。従って、256個の論理セクタ領域が含まれる論理ブロック内には#0〜#63の論理ページ番号(LPN)が付けられた64個の論理ページが形成される。この論理ページを何個の論理セクタ領域で形成するか、つまり、論理ページの容量を何セクタにするかは、物理ページの記憶容量等を考慮して適宜設定することができる。
図3(a)に示したように論理ブロックに含まれる265個の論理セクタ領域に対して、LBNの順番で#0〜#256のセクタ番号(SN)を付けた場合、SN#0〜#3の論理セクタ領域はLPN#0の論理ページに属し、SN#4〜#7の論理セクタ領域はLPN#1の論理ページに属し、以下同様にして、SN#252〜#255の論理セクタ領域はLPN#63の論理ページに属する。
本実施形態では、64個の論理ページを含む論理ブロックを64個の物理ページで構成された物理ブロックに割り当てている。従って、論理ブロック内のそれぞれの論理ページに対応するデータは、その論理ブロックに割り当てられた物理ブロック内のいずれかの物理ページに書き込まれる。メモリコントローラ3は、この論理ページと物理ページの対応関係を固定するか否かを論理ブロック単位で管理している。
図3(b)は論理ページと物理ページの対応関係が固定されている場合を示し、図3(c)は論理ページと物理ページの対応関係が固定されていない場合を示している。図3(b)及び図3(c)では、物理ブロックを構成する64個の物理ページに、#0〜#63の物理番号(PPN)が付けられている。論理ページと物理ページの対応関係が固定されている場合は、図3(b)に示したようにLPN#0の論理ページがPPN#0の物理ページに対応し、LPN#1の論理ページがPPN#1の物理ページに対応し、以下同様にしてLPN#63の論理ページがPPN#63の物理ページに対応している。従って、論理ページと物理ページの対応関係が固定されている場合、例えば、LPN#0の論理ページに対応するデータはPPN#0の物理ページにだけ書き込まれ、他の物理ページに書き込まれない。一方、論理ページと物理ページの対応関係が固定されていない場合は、論理ページと物理ページの対応関係を自由に変更することができる。例えば、図3(c)は論理ページと物理ページの対応関係が固定されていない場合の論理ページと物理ページの対応関係の1例であり、LPN#4の論理ページがPPN#0の物理ページに対応し、LPN#6の論理ページがPPN#1の物理ページに対応し、LPN#0の論理ページがPPN#2の物理ページに対応している。この対応関係では、PPN#0の物理ページにLPN#4の論理ページに対応するデータが書き込まれるが、PPN#0の物理ページに書き込まれるデータは、LPN#0〜#63のいずれの論理ページに対応するデータであってもよい。
論理ページと物理ページの対応関係を固定した記憶領域の管理を適用する論理ブロック(以下、「第1の領域管理ブロック」と言う)と、論理ページと物理ページの対応関係を固定しない記憶領域の管理を適用する論理ブロック(以下、「第2の領域管理ブロック」と言う)についてはメモリコントローラ3によって決定される。次に、この決定方法について説明する。
ホストシステム4がフラッシュメモリシステム1に対してデータの書き込みを指示するときには、フラッシュメモリシステム1には、ホストシステム4から、書き込みを指示する外部コマンドと書き込み先の領域を指示するアドレス情報とが与えられる。このアドレス情報には、書き込み先の領域のセクタ数を示す情報が含まれている。ここで、書き込むデータがファイルデータであれば、クラスタ単位でデータの書き込みが行われるため、書き込み先の領域のセクタ数はクラスタのサイズ(セクタ数)より小さくなることがない。一方、書き込むデータがファイルデータを管理するための情報であれば、書き込み先の領域のセクタ数はクラスタのサイズ(セクタ数)より小さくなることがある。
従って、特定範囲のLBAに対応した領域に対して、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示されるような場合には、その領域がファイルデータを管理するための情報の保存先に割り当てられている可能性が高い。例えば、ホストシステム4が、FATファイルシステムを採用している場合には、ファイル名やファイルのルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるFAT領域が割り当てられているLBAの範囲が、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示される可能性が高い。また、NTファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるMFT(Master File Table)領域(管理レコードに割り当てられた領域)が、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示される可能性が高い。
従って、メモリコントローラ3は、ホストシステム4から与えられるアドレス情報に含まれる書き込み先の領域のセクタ数に基づいて、ディレクトリ領域、FAT領域又はMFT(Master File Table)領域等のファイルデータを管理するための情報が保存される領域(以下、「ファイル管理領域」と言う)が含まれる論理ブロックの特定を行っている。更に、メモリコントローラ3は、ファイル管理領域が含まれる論理ブロックとして特定された論理ブロックだけに、論理ページと物理ページの対応関係を固定しない記憶領域の管理を適用する。つまり、ファイル管理領域が含まれる論理ブロックとして特定された論理ブロックだけが、第1の領域管理ブロックから第2の領域管理ブロックという設定に変更され、ファイル管理領域が含まれる論理ブロックとして特定されなかった論理ブロックは、第1の領域管理ブロックとして設定されている。
従って、ファイル管理領域が含まれる論理ブロックとして特定された論理ブロックについては、書き換え効率が向上するが、論理ページと物理ページの対応関係を管理する必要が生じる。次に、ファイル管理領域が含まれる論理ブロックとして特定された論理ブロック、つまり、第2の領域管理ブロックとして設定された論理ブロックにおける論理ページと物理ページの対応関係を管理について説明する。
メモリコントローラ3は、例えば、第2の領域管理ブロックとして設定された論理ブロックに割り当てられた物理ブロックの冗長領域に論理ページと物理ページの対応関係を示す情報(以下、「ページ管理情報」と言う)を書き込むことにより、第2の領域管理ブロックとして設定された論理ブロックにおける論理ページと物理ページの対応関係を管理する。メモリコントローラ3は、このページ管理情報を読み出し、読み出したページ管理情報に基づいて論理ページと物理ページの対応関係を判断する。
第2の領域管理ブロックとして設定された論理ブロックに割り当てられた物理ブロック内の物理ページにデータが書き込まれたときに、このデータに対応する論理ページのLPNが冗長領域に書き込まれるようにした場合、冗長領域に書き込まれているLPNに基づいて論理ページと物理ページの対応関係が判断される。
第2の領域管理ブロックとして設定された論理ブロックに割り当てられた物理ブロック内の物理ページにデータが書き込まれたときに、末尾のデータが書き込まれた物理ページの次のページ(ユーザー領域)に、LPN#0〜#63のそれぞれ論理ページに対応する物理ページを示すテーブル(以下、「ページ管理テーブル」と言う)が書き込まれるようにしてもよい。この場合、メモリコントローラ3は、最新のページ管理テーブルを読み出すことにより、全ての論理ページについて、論理ページと物理ページの対応関係を把握することができる。
尚、第2の領域管理ブロックとして設定された論理ブロックについては、2個の物理ブロックを割り当てられるようにすることが好ましい。つまり、第2の領域管理ブロックとして設定された論理ブロックについては、第1の領域管理ブロックとして設定されている論理ブロックよりも多い個数の物理ブロックを割り当てられるようにすることが好ましい。このようにすれば、それぞれ論理ページに対して割り当てることができる物理ページが増加するため、データの書き換え効率が更に向上する。また、ページ管理テーブルがユーザー領域に書き込まれる場合には、ページ管理テーブルの書き込み先として使用される物理ページが十分に確保される。
以下、本実施の形態におけるメモリコントローラ3の動作について説明する。
まず、メモリコントローラ3が、ファイル管理領域が含まれる論理ブロックを特定する動作について説明する。
メモリコントローラ3のホストインターフェースブロック7は、ホストシステム4からアクセス可能な各種のレジスタ(以下、「ホストインターフェースレジスタ」と言う)を備えている。ホストシステム4からメモリコントローラ3に与えられるアクセス指示は、このホストインターフェースレジスタに書き込まれる。ホストシステム4がメモリコントローラ3に対してデータの書き込みを指示する場合には、「データの書き込みを指示する外部コマンド」、「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」がホストインターフェースレジスタに書き込まれる。
本実施の形態では、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に基づいて、書き込むデータがファイルデータであるか、又はファイルデータを管理するための情報であるかが判別される。この判別を行うため、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に対して閾値(以下、「セクタ数設定値」と言う)を設定される。メモリコントローラ3は、「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」がセクタ数設定値以上の場合には、書き込むデータがファイルデータであると判断し、セクタ数設定値より小さい場合には、書き込むデータがファイルデータを管理するための情報であると判断する。
尚、既に説明したように、書き込むデータがファイルデータあれば、クラスタ単位でデータの書き込みが行われるため、セクタ数設定値はクラスタのセクタ数に合わせて設定されることが好ましい。但し、セクタ数設定値がクラスタのセクタ数よりも小さくても構わない。例えば、クラスタのセクタ数が8セクタの場合に、セクタ数設定値が“4”であっても構わない。
次に、ファイル管理領域が含まれる論理ブロックを特定するために使用されるテーブル(以下、「小容量書き込み管理テーブル」と言う)について図4を参照して説明する。図4に示した小容量書き込み管理テーブルには、それぞれの論理ブロックが第1の領域管理ブロックとして設定されているか又は第2の領域管理ブロックとして設定されているかを示す書き込み設定フラグと、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数(以下、「小容量書き込み指示回数」と言う)とが書き込まれる。小容量書き込み管理テーブルに書き込まれる書き込み設定フラグと小容量書き込み指示回数は、各LBNに関連付けられている。書き込み設定フラグの“0”は、その論理ブロックが第1の領域管理ブロックとして設定されていることを示し、書き込み設定フラグの“1”は、その論理ブロックが第2の領域管理ブロックとして設定されていることを示している。この小容量書き込み管理テーブルは、SRAM8上で更新され、フラッシュメモリ2に保存される。この小容量書き込み管理テーブルがフラッシュメモリ2に保存されていないときには、書き込み設定フラグが“0”に設定され小容量書き込み指示回数が“0”に設定された小容量書き込み管理テーブル(図4(a)参照)が、SRAM8上に作成され、作成された小容量書き込み管理テーブルは、フラッシュメモリ2に保存される。
ホストシステム4から書き込みを指示するアクセス指示が与えられたとき、つまり、ホストインターフェースレジスタに「データの書き込みを指示する外部コマンド」が書き込まれたとき、メモリコントローラ3は、その外部コマンドと共にホストインターフェースレジスタに書き込まれた「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」がセクタ数設定値より小さいか否かを判断する。セクタ数設定値より小さいと判断した場合、メモリコントローラ3は、更に、その外部コマンドに対応するデータの書き込み先の領域が属する論理ブロックを特定する。つまり、この処理では、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックが特定される。例えば、セクタ数設定値が“4”の場合に、ホストインターフェースレジスタにデータの書き込みを指示する外部コマンドと共に、先頭データの書き込みを指示するLBAとして“512”が、データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)として“1”が書き込まれたときは、LBN#2の論理ブロックがセクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックとして特定される。
小容量書き込み管理テーブルは、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックが特定されたときに更新される。この更新処理では、小容量書き込み管理テーブル上の、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックのLBNに関連付けられている小容量書き込み指示回数が1回増やされる。例えば、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックがLBN#2の論理ブロックである場合に、小容量書き込み管理テーブル上のLBN#2に関連付けられている小容量書き込み指示回数が“10”であったとすれば、その小容量書き込み指示回数が“11”に書き換えられる。
本実施の形態では、小容量書き込み管理テーブル上の小容量書き込み指示回数に対しても閾値(以下、「書き込み回数設定値」と言う)が設けられている。そして、小容量書き込み管理テーブル上のいずれかの小容量書き込み指示回数が書き込み回数設定値以上になったときには、その小容量書き込み指示回数に関連付けられているLBNの論理ブロックの設定が、第1の領域管理ブロックから第2の領域管理ブロックに変更される。また、その論理ブロックのLBNに関連付けられている書き込み設定フラグが“0”から“1”に書き換えられる。例えば、書き込み回数設定値が“128”に設定されている場合に、LBN#2に関連付けられている小容量書き込み指示回数が“128”に達したときには、LBN#2の論理ブロックの設定が第1の領域管理ブロックから第2の領域管理ブロックに変更される。また、LBN#2に関連付けられている書き込み設定フラグが“0”から“1”に書き換えられる(図4(b)参照)。
次に、ファイル管理領域に割り当てられたLBAの範囲が、ホストシステム4側で変更された場合について説明する。このような変更が行われた場合、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含んでいた論理ブロックが、そのLBAの範囲に対応する論理セクタ領域を含まない論理ブロックになってしまうことがある。つまり、ファイル管理領域に割り当てられたLBAの範囲が変更された場合には、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域が属する論理ブロックが変わってしまうことがある。このような場合、第2の領域管理ブロックに設定されている論理ブロックに対応する物理ブロック対して、クラスタのサイズ(セクタ数)より小さい単位でのデータの書き込みが行われなくなる。一方、第1の領域管理ブロックに設定されている論理ブロックに対応する物理ブロック対して、クラスタのサイズ(セクタ数)より小さい単位でのデータの書き込みが行われるようになる。
ファイル管理領域に割り当てられたLBAの範囲が変更されたことにより、そのLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックについては、第1の領域管理ブロックから第2の領域管理ブロックに設定が変更される必要がある。例えば、ファイル管理領域に割り当てられたLBAの範囲が、#512〜#767の範囲から#768〜#1023の範囲に変更された場合、LBN#2の論理ブロックの設定が第2の領域管理ブロックから第1の領域管理ブロックに変更される必要がある。
従って、メモリコントローラ3は、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの設定を、第2の領域管理ブロックから第1の領域管理ブロックに変更する。そして、メモリコントローラ3は、論理ブロックの設定を第2の領域管理ブロックから第1の領域管理ブロックに変更した場合は、その論理ブロックに対応する物理ブロックに記憶されているデータを、別の物理ブロック内の物理ページにLPNの順番で再度書き込む(コピーする)。つまり、論理ページと物理ページの対応関係が固定されている場合のLPNとPPNの対応関係(図3(b)参照)を満たすように、その論理ブロックに対応するデータが別の物理ブロックに再度書き込まれる。なお、その別の物理ブロック(コピー先の物理ブロック)は、その論理ブロックに対応していた物理ブロック(コピー元の物理ブロック)に代えて、その論理ブロックに割り当てられる。
次に、図4に示したような小容量書き込み管理テーブルを用いて、メモリコントローラ3が、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの設定を第2の領域管理ブロックから第1の領域管理ブロックに変更する動作について説明する。この例では、メモリコントローラ3が、所定期間毎(例えば、ホストシステムからデータの書き込み指示を所定回数与えられる毎)に、小容量書き込み管理テーブル上の全ての小容量書き込み指示回数を“0”に戻すリセット処理を実行する(図4(c)参照)。このリセット処理を実行する際に、それぞれLBNに関連付けられている小容量書き込み指示回数は、所定期間中にセクタ数設定値より小さいセクタ数のデータの書き込みが指示され回数に対応するため、リセット処理を実行する際に小容量書き込み指示回数が“0”であった場合は、所定期間中にセクタ数設定値より小さいセクタ数のデータの書き込みが指示されていなかったことになる。
メモリコントローラ3は、このリセット処理を実行する際に、書き込み設定フラグが“1”に設定されているLBNに関連付けられている小容量書き込み指示回数を参照し、小容量書き込み指示回数が“0”であった場合は、そのLBNの書き込み設定フラグを“0”に変更する。メモリコントローラ3がこのように動作することにより、第2の領域管理ブロックに設定されているいずれかの論理ブロックについて、所定期間中にセクタ数設定値より小さいセクタ数のデータの書き込みが指示されなかったときに、その論理ブロックの設定が、第2の領域管理ブロックから第1の領域管理ブロックに変更される。
尚、リセット処理を実行する際に、書き込み設定フラグが“1”に設定されているLBNに関連付けられている小容量書き込み指示回数が、予め定められていた回数より少なかった場合に、そのLBNの書き込み設定フラグが“0”に変更されるようにしてもよい。このようにした場合には、第2の領域管理ブロックに設定されているいずれかの論理ブロックについて、所定期間中にセクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数が所定回数より少なかったときに、その論理ブロックの設定が、第2の領域管理ブロックから第1の領域管理ブロックに変更される。論理ブロックの設定が第2の領域管理ブロックから第1の領域管理ブロックに変更されたときには、その論理ブロックに対応するデータが、論理ページと物理ページの対応関係が固定されている場合のLPNとPPNの対応関係を順番で(本実施の形態では、LPNの順番で)、その論理ブロックに割り当てられた物理ブロックに書き込まれる。
尚、いずれかの論理ブロックが割り当てられている物理ブロック内の冗長領域には、その物理ブロックに対応する論理ブロックに関する書き込み設定フラグ及び小容量書き込み指示回数が書き込まれることが好ましい。ここで、本実施の形態を説明するために必要な範囲で、この冗長領域及びこの冗長領域に書き込まれる情報について説明する。物理ブロックに含まれる各物理ページは、通常、ホストシステムから与えられるデータが書き込まれるユーザー領域とその他のデータが書き込まれる冗長領域に分けて使用される。ユーザー領域に記憶されるデータは、通常、セクタ単位で誤り訂正符号(ECC:Error Correcting Code)が生成され、その誤り訂正符号は冗長領域に書き込まれる。従って、図5に示したように冗長領域20は、物理ブロック全体に関する情報又は各物理ページに関する情報が書き込まれる共通冗長領域21と、ユーザー領域のセクタ単位の領域にそれぞれ割り当てられている分割冗長領域22に分けて使用される。上記の書き込み設定フラグは物理ブロック内の先頭物理ページの共通冗長領域21又は各物理ページの共通冗長領域21に書き込まれることが好ましい。小容量書き込み指示回数については、各物理ページの共通冗長領域21又は分割冗長領域22に書き込まれることが好ましい。
次に、本実施の形態におけるメモリコントローラ3の動作を、図6のフローチャートを参照して説明する。
ステップ1(S1):
メモリコントローラ3は、ホストシステムからアクセス指示を与えられえたときに、そのアクセス指示が、書き込みの指示であるか否かを判断する。つまり、ホストシステムから与えられた外部コマンドが書き込みコマンドであるか否かを判断する。ホストシステムから与えられた外部コマンドが書き込みコマンドである場合(S1:Yes)は、ステップ2(S2)に進む。
メモリコントローラ3は、ホストシステムからアクセス指示を与えられえたときに、そのアクセス指示が、書き込みの指示であるか否かを判断する。つまり、ホストシステムから与えられた外部コマンドが書き込みコマンドであるか否かを判断する。ホストシステムから与えられた外部コマンドが書き込みコマンドである場合(S1:Yes)は、ステップ2(S2)に進む。
ステップ2(S2):
メモリコントローラ3は、セクタ数設定値kより小さいセクタ数のデータの書き込みが指示されたか否かを判断する。つまり、ホストシステムから書き込みコマンドと共に与えられる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満であるか否かを判断する。「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満である場合(S2:Yes)は、ステップ3(S3)に進む。
メモリコントローラ3は、セクタ数設定値kより小さいセクタ数のデータの書き込みが指示されたか否かを判断する。つまり、ホストシステムから書き込みコマンドと共に与えられる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満であるか否かを判断する。「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満である場合(S2:Yes)は、ステップ3(S3)に進む。
ステップ3(S3):
メモリコントローラ3は、ホストシステムからの書き込みの指示で指定された、データの書き込み先の領域が属する論理ブロックを特定する。つまり、メモリコントローラ3は、ホストシステムから書き込みコマンドと共に与えられる「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に基づいて、データの書き込み先の領域に対応するLBAの範囲を求める。そして、このLBAの範囲の論理セクタ領域が含まれる論理ブロックを特定する。
メモリコントローラ3は、ホストシステムからの書き込みの指示で指定された、データの書き込み先の領域が属する論理ブロックを特定する。つまり、メモリコントローラ3は、ホストシステムから書き込みコマンドと共に与えられる「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に基づいて、データの書き込み先の領域に対応するLBAの範囲を求める。そして、このLBAの範囲の論理セクタ領域が含まれる論理ブロックを特定する。
ステップ4(S4):
メモリコントローラ3は、小容量書き込み管理テーブルを更新する。つまり、メモリコントローラ3は、ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値を1増加させる。
メモリコントローラ3は、小容量書き込み管理テーブルを更新する。つまり、メモリコントローラ3は、ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値を1増加させる。
ステップ5(S5):
メモリコントローラ3は、ステップ3(S3)で特定された論理ブロック内の領域に対するセクタ数設定値k(kは自然数)より小さいセクタ数のデータの書き込み指示回数が、書き込み回数設定値n(nは自然数)に達したか否かを判断する。つまり、メモリコントローラ3は、ステップ4(S4)で小容量書き込み管理テーブルを更新したことにより、ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値がnに達したか否かを判断する。ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値がnに達している場合(S5:Yes)は、ステップ6(S6)に進む。
メモリコントローラ3は、ステップ3(S3)で特定された論理ブロック内の領域に対するセクタ数設定値k(kは自然数)より小さいセクタ数のデータの書き込み指示回数が、書き込み回数設定値n(nは自然数)に達したか否かを判断する。つまり、メモリコントローラ3は、ステップ4(S4)で小容量書き込み管理テーブルを更新したことにより、ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値がnに達したか否かを判断する。ステップ3(S3)で特定された論理ブロックのLBNに関連付けられている小容量書き込み指示回数の値がnに達している場合(S5:Yes)は、ステップ6(S6)に進む。
ステップ6(S6):
メモリコントローラ3は、ステップ3(S3)で特定された論理ブロックに対応する書き込み設定フラグが“0”から“1”に変更される。つまり、ステップ3(S3)で特定された論理ブロックの設定が、第1の領域管理ブロックから第2の領域管理ブロックに変更される。
メモリコントローラ3は、ステップ3(S3)で特定された論理ブロックに対応する書き込み設定フラグが“0”から“1”に変更される。つまり、ステップ3(S3)で特定された論理ブロックの設定が、第1の領域管理ブロックから第2の領域管理ブロックに変更される。
以上が、本実施の形態におけるメモリコントローラ3の動作の説明である。
尚、図6には格別示していないが、S2:Noであれば、データの書き込み先の領域を含んだ論理ブロックは、第1の領域管理ブロックとして設定されている論理ブロックであるため、書込み対象のデータが、LPNに依存しない順番で、その論理ブロックに対応した物理ブロックに書き込まれる。また、S5:Noの場合、S3で特定された論理ブロックが、第1の領域管理ブロックとして設定されている論理ブロックであれば、書込み対象のデータが、LPNに依存しない順番で、その論理ブロックに対応した物理ブロックに書き込まれ、一方、S3で特定された論理ブロックが、第2の領域管理ブロックとして設定されている論理ブロックであれば、書込み対象のデータが、LPNの順番で、その論理ブロックに対応した物理ブロックに書き込まれる。
また、セクタ数設定値kの値、書き込み回数設定値nの値、論理ブロックに含まれる領域の容量及び各論理ブロックに割り当てる物理ブロックの個数等は適宜設定することができる。また、上述のように、所定期間毎(例えば、ホストシステム4からデータの書き込み指示を所定回数与えられる毎)に小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“0”に戻されるようにしたい場合には、ホストシステム4からデータの書き込み指示される毎にカウントアップされるカウンタを設け、そのカウント値が所定の値に達したときに小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“0”に戻されるようにすればよい。
以上、本発明の実施の形態を説明したが、これは本発明を説明するための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、上述の実施の形態では、小容量書き込み管理テーブルを用いて小容量書き込み指示回数(セクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数)を管理していたが、他の方法でこの小容量書き込み指示回数が管理されてもよい。例えば、メモリコントローラ3は、各物理ブロックに対してデータの書き込みを行う毎に、その物理ブロックの冗長領域に最新の小容量書き込み指示回数を書き込むようにすれば、物理ブロックの冗長領域に書き込まれている小容量書き込み指示回数に基づいて、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックが特定される。
また、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される毎に、その指示に対応する「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」のデータを累積的に記録してき、このデータが所定回数分蓄えられたときに、このデータを集計し、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックが特定されるようにしてもよい。
また、実施の形態では、小容量アクセス領域(セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域)が、ディレクトリ領域、FAT領域又はMFT(Master File Table)領域等のファイル管理領域であるものとして説明したが、小容量領域がファイル管理領域でなくても本発明を適用することができる。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ
Claims (5)
- ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と
を備え、
前記論理ブロック種別判断手段が、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込み手段は、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とするメモリコントローラ。 - 前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写手段を更に備え
前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記論理ブロック種別判断手段は、前記いずれかの前記論理ブロックを第1の論理ブロックと判断し、前記データ複写手段は、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写す
ことを特徴とする請求項1に記載のメモリコントローラ。 - 請求項1又は2に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリと
を備えるフラッシュメモリシステム。 - ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断ステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込みステップと
を有し、
前記書き込み方式判断ステップでは、前記回数が所定回数未満の前記論理ブロックを第1の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第2の論理ブロックと判断し、
前記データ書き込みステップでは、前記第1の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第2の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とするフラッシュメモリの制御方法。 - 前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写ステップを更に備え
前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記書き込み方式判断ステップにより、前記いずれかの前記論理ブロックが第1の論理ブロックと判断され、前記データ複写ステップにより、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データが、別の物理ブロックに前記論理アドレスの順番で書き写される
ことを特徴とする請求項4に記載のフラッシュメモリの制御方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008158120A JP2009301491A (ja) | 2008-06-17 | 2008-06-17 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008158120A JP2009301491A (ja) | 2008-06-17 | 2008-06-17 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009301491A true JP2009301491A (ja) | 2009-12-24 |
Family
ID=41548292
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008158120A Pending JP2009301491A (ja) | 2008-06-17 | 2008-06-17 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2009301491A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2014147768A1 (ja) * | 2013-03-19 | 2014-09-25 | 富士通株式会社 | 制御装置、制御プログラム、および制御方法 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006221627A (ja) * | 2005-02-07 | 2006-08-24 | Samsung Electronics Co Ltd | 複数のマッピング技法を採用した適応型フラッシュメモリ制御装置及びそれを含むフラッシュメモリシステム |
-
2008
- 2008-06-17 JP JP2008158120A patent/JP2009301491A/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006221627A (ja) * | 2005-02-07 | 2006-08-24 | Samsung Electronics Co Ltd | 複数のマッピング技法を採用した適応型フラッシュメモリ制御装置及びそれを含むフラッシュメモリシステム |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2014147768A1 (ja) * | 2013-03-19 | 2014-09-25 | 富士通株式会社 | 制御装置、制御プログラム、および制御方法 |
| JPWO2014147768A1 (ja) * | 2013-03-19 | 2017-02-16 | 富士通株式会社 | 制御装置、制御プログラム、および制御方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP5087347B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
| JP5480913B2 (ja) | 記憶装置、およびメモリコントローラ | |
| JP4666080B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| US20100011154A1 (en) | Data accessing method for flash memory and storage system and controller using the same | |
| JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2018160189A (ja) | メモリシステム | |
| JP4743174B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4737223B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4488048B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2021068129A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
| JP4697146B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4840415B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2005115562A (ja) | フラッシュrom制御装置 | |
| JP4513786B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
| JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
| JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
| JP4636005B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP2009301491A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4636046B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4952741B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110530 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110607 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110727 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110913 |