JP4737223B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4737223B2
JP4737223B2 JP2008110086A JP2008110086A JP4737223B2 JP 4737223 B2 JP4737223 B2 JP 4737223B2 JP 2008110086 A JP2008110086 A JP 2008110086A JP 2008110086 A JP2008110086 A JP 2008110086A JP 4737223 B2 JP4737223 B2 JP 4737223B2
Authority
JP
Japan
Prior art keywords
logical
block
data
area
flash memory
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.)
Expired - Fee Related
Application number
JP2008110086A
Other languages
English (en)
Other versions
JP2009259145A (ja
Inventor
典和 岡固
克雄 晒科
俊 古川
武志 鴨野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2008110086A priority Critical patent/JP4737223B2/ja
Publication of JP2009259145A publication Critical patent/JP2009259145A/ja
Application granted granted Critical
Publication of JP4737223B2 publication Critical patent/JP4737223B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
コンピュータ等の情報処理装置(ホストシステム)では、各種のファイルデータを保存するためにフラッシュメモリを記憶媒体として用いたCF(Compact Flash)カード、SSD(Solid State Device)等の情報記憶装置(フラッシュメモリシステム)が使われることが多くなっている。このようなフラッシュメモリシステムでは、ホストシステムから与えられる書き込み指示に基づいて、アクセス指示と共に与えられるデータがフラッシュメモリに保存される。
フラッシュメモリシステムに保存されるファイルデータは、通常、FAT(File Allocation Table)ファイルシステム・NTファイルシステム等のファイルシステムで管理されている。従って、フラッシュメモリシステムには、ファイルデータだけでなく、ファイルデータを管理するための情報も保存される。例えば、FATファイルシステムの場合には、ルートディレクトリを含む情報や、ファイルが使用するクラスタの番号の情報が保存される。NTファイルシステムの場合にも、ファイル名やインデックスを含む情報が保存される。
また、FATファイルシステム・NTファイルシステム等で管理されるファイルデータは、所定のクラスタサイズのデータに分割され、分割されたデータがフラッシュメモリに保存される。このクラスタサイズは、フラッシュメモリシステムの記憶容量が大きくなるにつれて512バイト・1kバイト・2kバイト・4kバイトというように段階的に大きくなっていく。従って、ホストシステムから与えられる書き込み指示に基づいて書き込まれるデータがファイルデータの場合、このクラスタ単位でデータの書き込みが指示される。つまり、書き込まれるデータがファイルデータの場合は、このクラスタサイズよりも小さい単位で、データの書き込みが指示されることがない。一方、書き込まれるデータがファイルデータを管理するための情報の場合は、このクラスタサイズよりも小さい単位(例えばセクタ単位)で、データの書き込みが指示されることがある。
記憶媒体として一般的に使用されているNAND型フラッシュメモリは、ページ(物理ページ)単位でデータが書き込まれる。このNAND型フラッシュメモリでは、記憶容量が大きくなるにつれて、物理ページの記憶容量が大きくなっている。従って、物理ページの記憶容量よりも小さい単位でのデータの書き込みや書き換えは、フラッシュメモリシステムのアクセス速度を低下させる要因になる。この問題を解決するために、特許文献1では、小さい容量でデータの書き込みが行われる領域が、ブロックサイズ(物理ブロックの記憶容量)の小さいフラッシュメモリに、つまり、ページサイズ(物理ページの記憶容量)の小さいフラッシュメモリに割り当てられるようにしている。
この小さい容量でデータの書き込みが行われる領域(以下、「小容量アクセス領域」と言う)としては、例えば、FATファイルシステムやNTファイルシステムにおけるファイルデータを管理するための情報が保存される領域が挙げられる。FATファイルシステムであれば、ファイル名やルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるFAT領域が、小容量アクセス領域に該当する。NTファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるMFT(Master File Table)領域(管理レコードに割り当てられた領域)が、小容量アクセス領域に該当する。
特開2005−92677号公報
ホストシステムに電気的に接続されるフラッシュメモリシステムは、ホストシステムから与えられる指示に基づいてフラッシュメモリシステム内のフラッシュメモリにアクセスする。このホストシステムから与えられる指示には、書き込みや読み出しを指示するコマンドとアクセス対象の領域を指定する論理アドレスが含まれている。フラッシュメモリシステムは、ホストシステムから与えられる論理アドレスと、フラッシュメモリ内の記憶領域に割り当てられている物理アドレスとの対応関係を管理し、この対応関係に基づいて、ホストシステムから与えられるデータをフラッシュメモリに書き込んだり、フラッシュメモリに記憶されているデータをフラッシュメモリから読み出したりする。
このようなアクセス処理において、ホストシステムから与えられる論理アドレスが、上述のディレクトリ領域、FAT領域及びMFT領域等の小容量アクセス領域に割り当てられた論理アドレスであるか否かを、フラッシュメモリシステム側で判断することはできない。つまり、これらの領域は、ホストシステム側で特定の論理アドレスに割り当てられるため、通常、フラッシュメモリシステム側ではこれらの領域が割り当てられている論理アドレスを把握することができない。
従って、特許文献1のように小さい容量でデータの書き込みが行われる領域が、フラッシュメモリシステム側でブロックサイズ(物理ブロックの記憶容量)の小さいフラッシュメモリに割り当てられるようにするためには、小さい容量でデータの書き込みが行われる領域に割り当てられる論理アドレスの範囲が予め決められている必要がある。このような論理アドレスの範囲が予め決められていれば、ホストシステムから与えられる論理アドレスに基づいて、小さい容量でデータの書き込みが行われる領域がブロックサイズ(物理ブロックの記憶容量)の小さいフラッシュメモリ内の記憶領域に割り当てるようにすることができる。また、特許文献1のような記憶領域の割り当てが可能であっても、小さい容量でデータの書き込みが行われる領域のために、ブロックサイズ(物理ブロックの記憶容量)の小さいフラッシュメモリを別途用意するのはコスト的に好ましくない。
そこで、本発明は、ホストシステムからの指示に基づいて動作するフラッシュメモリシステムにおいて、小さい容量でのデータの書き込みが指示されたときのアクセス速度の低下を抑えることができる記憶領域の管理技術を提供することを目的とする。
本発明の第一の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備える。前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当てる。前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込む。前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する。
好適な実施形態では、前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除する。前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する物理ブロックに記憶されているデータを、前記いずれかの前記論理ブロックに対応する物理ブロックに転送する。
本発明の第二の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備える。前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当てる。前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込む。前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する。
好適な実施形態では、前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除する。前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する前記所定容量の記憶領域に記憶されているデータを、前記いずれかの前記論理ブロックに対応する前記所定容量の記憶領域に転送する。
本発明の第三の側面に従うメモリコントローラは、上記第一及び第二の側面や上記実施形態のうちのいずれかのメモリコントローラと、前記メモリコントローラによってアクセスされるフラッシュメモリとを備える。
本発明の第四の側面に従う方法は、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに割り当てられた物理ブロックにデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
を含む。前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当てる。前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込む。前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する。
本発明の第五の側面に従う方法は、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を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型フラッシュメモリであり、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択された各メモリセル群の中のメモリセルとレジスタとの間で、レジスタからメモリセルへのデータの書き込み又はメモリセルからレジスタへのデータの読み出しが行われる。
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個の物理ページに保存できる容量であることが好ましい。
次に、本実施形態の特徴の一つである論理ブロックの分割について説明する。ホストシステム4がフラッシュメモリシステム1に対してデータの書き込みを指示するときには、ホストシステム4から書き込みを指示する外部コマンドと書き込み先の領域を指示するアドレス情報が与えられる。このアドレス情報には、書き込み先の領域のセクタ数を示す情報が含まれている。ここで、書き込むデータがファイルデータであれば、クラスタ単位でデータの書き込みが行われるため、書き込み先の領域のセクタ数はクラスタのサイズ(セクタ数)より小さくなることがない。一方、書き込むデータがファイルデータを管理するための情報であれば、書き込み先の領域のセクタ数はクラスタのサイズ(セクタ数)より小さくなることがある。
従って、特定範囲のLBAに対応した領域に対して、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示されるような場合には、その領域がファイルデータを管理するための情報の保存先に割り当てられている可能性が高い。例えば、ホストシステム4が、FATファイルシステムを採用している場合には、ファイル名やファイルのルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるFAT領域が割り当てられているLBAの範囲が、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示される可能性が高い。また、NTファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるMFT(Master File Table)領域(管理レコードに割り当てられた領域)が、クラスタのサイズ(セクタ数)より小さい単位での書き込みが指示される可能性が高い。
そこで、本実施形態では、ホストシステム4から与えられるアドレス情報に含まれる書き込み先の領域のセクタ数に基づいて、ディレクトリ領域、FAT領域又はMFT(Master File Table)領域等のファイルデータを管理するための情報が保存される領域(以下、「ファイル管理領域」と言う)が含まれる論理ブロックの特定が行われる。更に、このようにして特定された論理ブロックに含まれる領域が、複数個の領域に分割される。この分割された各領域(以下、「論理サブブロック」と言う)には、それぞれフラッシュメモリ2内の記憶領域が割り当てられる。1個の論理ブロックを何個の論理サブブロックに分割するかは適宜設定することができる。
図3に示した例では、LBN#2の論理ブロックがファイル管理領域が含まれる論理ブロックとして特定され、この論理ブロックが4個の論理サブブロック(LBN#2−0〜#2−3の論理サブブロック)に分割される。つまり、LBA#512〜#767の論理セクタ領域が含まれるLBN#2の論理ブロックは、LBA#512〜#575の論理セクタ領域が含まれる枝番号0の論理サブブロック(LBN#2−0の論理サブブロック)と、LBA#576〜#639の論理セクタ領域が含まれる枝番号1の論理サブブロック(LBN#2−1の論理サブブロック)と、LBA#640〜#703の論理セクタ領域が含まれる枝番号2の論理サブブロック(LBN#2−2の論理サブブロック)と、LBA#704〜#767の論理セクタ領域が含まれる枝番号3の論理サブブロック(LBN#2−3の論理サブブロック)とに分割される。
LBN#2−0〜#2−3の各論理サブブロックには、分割前の論理ブロックと同様に1個の物理ブロックが割り当てられる。図3に示した例では、LBN#2−0の論理サブブロックにPBA#11の物理ブロックが割り当てられ、LBN#2−1の論理サブブロックにPBA#14の物理ブロックが割り当てられ、LBN#2−2の論理サブブロックにPBA#12の物理ブロックが割り当てられ、LBN#2−3の論理サブブロックにPBA#17の物理ブロックが割り当てられている。
本実施の形態では、1個の論理ブロックに含まれる領域の容量と1個の物理ブロックに含まれる記憶領域の容量が等しくなるように論理ブロックに含まれる領域の容量が設定されているので、1個の論理サブブロックに含まれる領域の容量は、1個の物理ブロックに含まれる記憶領域の容量の4分の1になる。つまり、1個の物理ページのユーザー領域の容量が2kバイトで、1個の物理ブロックに64個の物理ページが含まれるNAND型フラッシュメモリを使用されているので、論理ブロックに含まれる領域の容量は256セクタ(128kバイト)に設定されている。そして、論理サブブロックに含まれる領域の容量は64セクタ(32kバイト)になる。
論理ブロックが複数個の論理サブブロックに分割された場合、論理サブブロックに含まれる領域の容量が、その論理サブブロックに割り当てられるフラッシュメモリ2内の記憶領域よりも小さくなるので、その論理サブブロックに割り当てられる記憶領域内で、その論理サブブロックに対応する書き換えデータを書き込むために使用できる領域が増加する。また、論理サブブロックに含まれる領域の容量が減少するため、論理サブブロックにフラッシュメモリ2内の記憶領域を新たに割り当てたとき等に行われるデータ転送(以前に割り当てられていた記憶領域から新たに割り当てられた記憶領域へのデータ転送)のデータ容量も減少する。従って、論理ブロックが複数個の論理サブブロックに分割されることにより、その論理ブロックに含まれる領域(各論理サブブロックに含まれる領域)に対応するデータの書き換え効率が向上する。
以下、本実施の形態におけるメモリコントローラ3の動作について説明する。
まず、メモリコントローラ3が、ファイル管理領域が含まれる論理ブロックを特定する動作について説明する。
メモリコントローラ3のホストインターフェースブロック7は、ホストシステム4からアクセス可能な各種のレジスタ(以下、「ホストインターフェースレジスタ」と言う)を備えている。ホストシステム4からメモリコントローラ3に与えられるアクセス指示は、このホストインターフェースレジスタに書き込まれる。ホストシステム4がメモリコントローラ3に対してデータの書き込みを指示する場合には、「データの書き込みを指示する外部コマンド」、「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」がホストインターフェースレジスタに書き込まれる。
本実施の形態では、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に基づいて、書き込むデータがファイルデータであるか、又はファイルデータを管理するための情報であるかが判別される。この判別を行うため、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に対して閾値(以下、「セクタ数設定値」と言う)が設けられる。そして、「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」がセクタ数設定値以上の場合には、書き込むデータがファイルデータであると判断され、セクタ数設定値より小さい場合には、書き込むデータがファイルデータを管理するための情報であると判断される。
尚、既に説明したように、書き込むデータがファイルデータあれば、クラスタ単位でデータの書き込みが行われるため、セクタ数設定値はクラスタのセクタ数に合わせて設定されることが好ましい。但し、セクタ数設定値がクラスタのセクタ数よりも小さくても構わない。例えば、クラスタのセクタ数が8セクタの場合に、セクタ数設定値が“4”であっても構わない。
次に、ファイル管理領域が含まれる論理ブロックを特定するために使用されるテーブル(以下、「小容量書き込み管理テーブル」と言う)について図4を参照して説明する。図4に示した小容量書き込み管理テーブルには、各論理ブロックが分割されているか否かを示す分割フラグとセクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数(以下、「小容量書き込み指示回数」と言う)が書き込まれる。小容量書き込み管理テーブルに書き込まれる分割フラグと小容量書き込み指示回数は、各LBNに関連付けられている。分割フラグの“0”は論理ブロックが分割されていない状態を示し、分割フラグの“1”は論理ブロックが分割されている状態を示している。この小容量書き込み管理テーブルは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の論理ブロックが複数個の論理サブブロックに分割される。また、論理ブロックが分割されたときには、その論理ブロックのLBNに関連付けられている分割フラグが“0”から“1”に書き換えられる。例えば、書き込み回数設定値が“128”に設定されている場合に、LBN#2に関連付けられている小容量書き込み指示回数が“128”に達したときには、LBN#2の論理ブロックが複数個の論理サブブロックに分割される。また、LBN#2に関連付けられている分割フラグが“0”から“1”に書き換えられる(図4(b)参照)。
ファイル管理領域に割り当てられたLBAの範囲が、ホストシステム4側で変更された場合について説明する。このような変更が行われた場合、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含んでいた論理ブロックが、そのLBAの範囲に対応する論理セクタ領域を含まない論理ブロックになってしまうことがある。つまり、ファイル管理領域に割り当てられたLBAの範囲が変更された場合には、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域が属する論理ブロックが変わってしまうことがある。このような場合、論理サブブロックに割り当てられている物理ブロック対して、クラスタのサイズ(セクタ数)より小さい単位でのデータの書き込みが行われなくなる。一方、分割されていない論理ブロックに割り当てられている物理ブロック対して、クラスタのサイズ(セクタ数)より小さい単位でのデータの書き込みが行われるようになる。
ファイル管理領域に割り当てられたLBAの範囲が変更されたことにより、そのLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックについては、複数個の論理サブブロックに分割されたまま放置されていることは好ましくない。例えば、ファイル管理領域に割り当てられたLBAの範囲が、#512〜#767の範囲から#768〜#1023の範囲に変更された場合、LBN#2の論理ブロックが複数個の論理サブブロックに分割されたまま放置されていることは好ましくない。
このような問題に対処するためには、メモリコントローラ3は、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの分割を解除する必要がある。論理ブロックの分割が解除された場合、複数個の論理サブブロック内の領域は結合され、元の論理ブロックに戻され、1個の論理ブロックとして取り扱われるようになる。従って、各論理サブブロックに対応する物理ブロックに記憶されている有効なデータは、分割を解除する際に、それらの論理サブブロックが結合された元の論理ブロックに割り当てられた物理ブロックに転送される。例えば、LBN#2の論理ブロックの分割が解除された場合には、LBN#2−0〜#2−3の各論理サブブロックは、論理サブブロック単位で取り扱われなくなり、分割前のLBN#2の論理ブロックとして取り扱われるようになる。従って、LBN#2−0〜#2−3の各論理サブブロックに対応する物理ブロックに記憶されている有効なデータは、分割を解除する際にLBN#2の論理ブロックに割り当てられた物理ブロックに転送される。
次に、図4に示したような小容量書き込み管理テーブルを用いて、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの分割を解除する場合について説明する。この例では、所定期間毎(例えば、ホストシステムからデータの書き込み指示を所定回数与えられる毎)に、小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“0”に戻されるようにする(図4(c)参照)。この際、分割フラグはそのままの値が維持される。従って、複数個の論理サブブロックに分割されている論理ブロック(論理ブロック#2)については、その論理ブロックのLBNに関連付けられている分割フラグは“1”のままであるが、小容量書き込み指示回数だけが“0”に戻される。この小容量書き込み指示回数が“0”に戻される直前に、対応する分割フラグが“1”のLBNについて(つまり、複数個の論理サブブロックに分割されている論理ブロックのLBNについて)、そのLBNに関連付けられている小容量書き込み指示回数が“0”であるか否かが確認される。そして、そのLBNに関連付けられている小容量書き込み指示回数が“0”である場合、そのLBNの論理ブロックの分割が解除される。つまり、複数個の論理サブブロックに分割された論理ブロック内の領域に対して、セクタ数設定値より小さいセクタ数のデータの書き込みが所定期間中に指示されなかった場合、その論理ブロックに、ファイル管理領域に割り当てられたLBAの範囲に対応する論理セクタ領域が含まれなくなってしまったと判断される。
尚、いずれかの論理ブロック又は論理サブブロックが割り当てられている物理ブロック内の冗長領域には、その物理ブロックに対応する論理ブロックに関する分割フラグ及び小容量書き込み指示回数が書き込まれることが好ましい。ここで、本実施の形態を説明するために必要な範囲で、この冗長領域及びこの冗長領域に書き込まれる情報について説明する。物理ブロックに含まれる各物理ページは、通常、ホストシステムから与えられるデータが書き込まれるユーザー領域とその他のデータが書き込まれる冗長領域に分けて使用される。ユーザー領域に記憶されるデータは、通常、セクタ単位で誤り訂正符号(ECC:Error Correcting Code)が生成され、その誤り訂正符号は冗長領域に書き込まれる。従って、図5に示したように冗長領域20は、物理ブロック又は物理ページに共通の情報が書き込まれる共通冗長領域21とユーザー領域のセクタ単位の領域にそれぞれ割り当てられている分割冗長領域22に分けて使用される。上記の分割フラグは物理ブロック内の先頭物理ページの共通冗長領域21又は各物理ページの共通冗長領域21に書き込まれることが好ましい。また、論理サブブロックに割り当てられている物理ブロックの場合には、その物理ブロックに対応する論理ブロックを示す論理アドレス情報(例えば、LBN)と共に、その物理ブロックに対応する論理サブブロックを示す枝番号が共通冗長領域21に書き込まれることが好ましい。小容量書き込み指示回数については、各物理ページの共通冗長領域21又は分割冗長領域22に書き込まれることが好ましい。
次に、本実施の形態におけるメモリコントローラ3の動作を、図6のフローチャートを参照して説明する。
ステップ1(S1):
メモリコントローラ3は、ホストシステムからアクセス指示を与えられえたときに、そのアクセス指示が、書き込みの指示であるか否かを判断する。つまり、ホストシステムから与えられた外部コマンドが書き込みコマンドであるか否かを判断する。ホストシステムから与えられた外部コマンドが書き込みコマンドである場合(S1:Yes)は、ステップ2(S2)に進む。
ステップ2(S2):
メモリコントローラ3は、セクタ数設定値kより小さいセクタ数のデータの書き込みが指示されたか否かを判断する。つまり、ホストシステムから書き込みコマンドと共に与えられる「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満であるか否かを判断する。「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」の値がk未満である場合(S2:Yes)は、ステップ3(S3)に進む。
ステップ3(S3):
メモリコントローラ3は、ホストシステムからの書き込みの指示で指定された、データの書き込み先の領域が属する論理ブロックを特定する。つまり、メモリコントローラ3は、ホストシステムから書き込みコマンドと共に与えられる「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」に基づいて、データの書き込み先の領域に対応するLBAの範囲を求める。そして、このLBAの範囲の論理セクタ領域が含まれる論理ブロックを特定する。
ステップ4(S4):
メモリコントローラ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)に進む。
ステップ6(S6):
メモリコントローラ3は、ステップ3(S3)で特定された論理ブロックを複数個の論理サブブロックに分割する。つまり、メモリコントローラ3は、論理ブロック内の領域を複数個の論理サブブロックとして取り扱うため、各論理サブブロックに対してフラッシュメモリ2内の物理ブロックを新たに割り当てる。ステップ3(S3)で特定された論理ブロックに対応する物理ブロックに記憶されているデータは、そのデータが対応する論理ブロックに応じて各論理サブブロックに対して新たに割り当てられた物理ブロックに転送される。つまり、論理ブロックに対応する物理ブロックに記憶されているデータに対応するLBAが枝番号#0の論理サブブロックに属する場合、そのデータは、枝番号#0の論理サブブロックに対して新たに割り当てられた物理ブロックに転送される。これらの処理が終了した後に、メモリコントローラ3は、分割された論理ブロックのLBNに関連付けられている分割フラグを“0”から“1”に変更する。尚、ステップ6(S6)の処理を実行する前に、既にステップ3(S3)で特定された論理ブロックが複数個の論理サブブロックに分割されていた場合はステップ6(S6)の処理は実行されない。
尚、セクタ数設定値kの値、書き込み回数設定値nの値、論理ブロックに含まれる領域の容量、各論理ブロックに割り当てる物理ブロックの個数、及び論理ブロックの分割数(1個の論理ブロックを何個の論理サブブロックに分割するか)等は適宜設定することができる。また、上述のように、所定期間毎(例えば、ホストシステム4からデータの書き込み指示を所定回数与えられる毎)に小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“0”に戻されるようにしたい場合には、ホストシステム4からデータの書き込み指示される毎にカウントアップされるカウンタを設け、そのカウント値が所定の値に達したときに小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“0”に戻されるようにすればよい。
以上、本発明の実施の形態を説明したが、これは本発明を説明するための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、上述の実施の形態では、小容量書き込み管理テーブルを用いて小容量書き込み指示回数(セクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数)を管理していたが、他の方法でこの小容量書き込み指示回数が管理されてもよい。例えば、メモリコントローラ3は、各物理ブロックに対してデータの書き込みを行う毎に、その物理ブロックの冗長領域に最新の小容量書き込み指示回数を書き込むようにすれば、物理ブロックの冗長領域に書き込まれている小容量書き込み指示回数に基づいて、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックを特定することができる。
また、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される毎に、その指示に対応する「先頭データの書き込みを指示するLBA」及び「データを書き込む領域のセクタ数(書き込むデータの容量に対応するセクタ数)」のデータを累積的に記録してき、このデータが所定回数分蓄えられたときに、このデータを集計し、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックを特定するようにしてもよい。
また、実施の形態では、小容量アクセス領域(セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域)が、ディレクトリ領域、FAT領域又はMFT(Master File Table)領域等のファイル管理領域であるものとして説明したが、小容量アクセス領域がファイル管理領域でなくても本発明を適用することができる。
本発明の実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。 ホストシステム側のアドレス空間とフラッシュメモリ内のアドレス空間との対応関係を説明するための図である。 論理ブロック又は論理サブブロックと物理ブロックとの対応関係を説明するための図である。 小容量書き込み管理テーブルを説明するための図である。 冗長領域に書き込まれる情報を説明するための図である。 本発明の実施の形態によるメモリコントローラの動作を説明するためのフローチャートである。
符号の説明
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ

Claims (7)

  1. ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
    前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
    前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と、
    前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
    前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
    を備え、
    前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当て、
    前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込み、
    前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する、
    ことを特徴とするメモリコントローラ。
  2. 前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除し、
    前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する物理ブロックに記憶されているデータを、前記いずれかの前記論理ブロックに対応する物理ブロックに転送する、
    ことを特徴とする請求項1に記載のメモリコントローラ。
  3. ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
    前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当て手段と、
    前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込み手段と、
    前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
    前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
    を備え、
    前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当て、
    前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込み、
    前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する、
    ことを特徴とするメモリコントローラ。
  4. 前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除し、
    前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する前記所定容量の記憶領域に記憶されているデータを、前記いずれかの前記論理ブロックに対応する前記所定容量の記憶領域に転送する、
    ことを特徴とする請求項3に記載のメモリコントローラ。
  5. 請求項1乃至4のうちのいずれか1項に記載のメモリコントローラと、
    前記メモリコントローラによってアクセスされるフラッシュメモリと
    を備えるフラッシュメモリシステム。
  6. ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
    前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
    前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
    前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに割り当てられた物理ブロックにデータを書き込むデータ書き込みステップと、
    前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
    前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
    を含み、
    前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当て、
    前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込み、
    前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する、
    ことを特徴とするフラッシュメモリの制御方法。
  7. ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
    前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
    前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当てステップと、
    前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込みステップと、
    前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を1個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
    前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
    を含み、
    前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当て、
    前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込み、
    前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する、
    ことを特徴とするフラッシュメモリの制御方法。
JP2008110086A 2008-04-21 2008-04-21 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Expired - Fee Related JP4737223B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008110086A JP4737223B2 (ja) 2008-04-21 2008-04-21 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008110086A JP4737223B2 (ja) 2008-04-21 2008-04-21 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2009259145A JP2009259145A (ja) 2009-11-05
JP4737223B2 true JP4737223B2 (ja) 2011-07-27

Family

ID=41386465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008110086A Expired - Fee Related JP4737223B2 (ja) 2008-04-21 2008-04-21 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4737223B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301616B2 (en) 2006-07-14 2012-10-30 Yahoo! Inc. Search equalizer
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
KR101997572B1 (ko) 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
WO2019113821A1 (en) 2017-12-13 2019-06-20 Micron Technology, Inc. Variable width superblock addressing
TWI687811B (zh) * 2018-05-14 2020-03-11 慧榮科技股份有限公司 資料儲存裝置及系統資訊的編程方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
JP2005092677A (ja) * 2003-09-19 2005-04-07 Matsushita Electric Ind Co Ltd メモリ装置
JP4665539B2 (ja) * 2005-01-31 2011-04-06 ソニー株式会社 メモリ制御装置、メモリ制御方法、プログラム
US8051268B2 (en) * 2005-07-29 2011-11-01 Panasonic Corporation Memory controller, nonvolatile storage device, nonvolatile storage system, and nonvolatile memory address management method
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치

Also Published As

Publication number Publication date
JP2009259145A (ja) 2009-11-05

Similar Documents

Publication Publication Date Title
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US8312203B2 (en) Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10061710B2 (en) Storage device
JP4632180B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5480913B2 (ja) 記憶装置、およびメモリコントローラ
JP5813589B2 (ja) メモリシステムおよびその制御方法
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TWI423022B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
JP4702387B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4743174B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4840415B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582232B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4720891B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4687720B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4636046B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009301491A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110418

R150 Certificate of patent or registration of utility model

Ref document number: 4737223

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees