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

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

Info

Publication number
JP2010250534A
JP2010250534A JP2009098879A JP2009098879A JP2010250534A JP 2010250534 A JP2010250534 A JP 2010250534A JP 2009098879 A JP2009098879 A JP 2009098879A JP 2009098879 A JP2009098879 A JP 2009098879A JP 2010250534 A JP2010250534 A JP 2010250534A
Authority
JP
Japan
Prior art keywords
block
empty
specifying
logical
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.)
Granted
Application number
JP2009098879A
Other languages
English (en)
Other versions
JP4952742B2 (ja
Inventor
Naoki Mukoda
直樹 向田
Shunichi Hanabusa
俊一 花房
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 JP2009098879A priority Critical patent/JP4952742B2/ja
Publication of JP2010250534A publication Critical patent/JP2010250534A/ja
Application granted granted Critical
Publication of JP4952742B2 publication Critical patent/JP4952742B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ユーザがウェアー・レベリング(WL)制御方式の設定を行う必要がなく、フラッシュメモリを構成する複数個の物理ブロック(PB)において消去回数の偏りが大きくなったときにだけ、書き換え頻度が低いデータが格納されているPBを含めたWL制御が行われるようにする。
【解決手段】ホストシステムから指示されたLBA範囲に対応する論理ブロック(LB)に割り当てられているPBのうちで最も先にLBに割り当てられたPBである最先PBの消去回数と、有効なデータが格納されていないPBである空きPBのうちで消去回数が最小の空きPBの消去回数とが比較される。この比較において、空きPBの消去回数が最先PBの消去回数よりも所定回数以上多い場合は、最先PBに格納されているデータが別のPBに転送される。このデータ転送では、消去回数が最大の空きPBが転送先のPBとして割り当てられる。
【選択図】図3

Description

本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
例えば、特許文献1に開示されているように、フラッシュメモリを用いたメモリシステムでは、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数に偏りが生じないようにウェアー・レベリング(Wear-leveling)制御が行われている。このウェアー・レベリング制御には、大きくは2つの方式がある。
1つは、書き換えが行われないデータが記憶されている物理ブロックを放置しておき、それ以外の物理ブロックの消去回数又は書き換え回数が平均化されるように制御するウェアー・レベリング制御(ダイナミック・ウェアー・レベリング(Dynamic-wear-leveling)制御方式又はパッシブ・ウェアー・レベリング(Passive-wear-leveling)制御方式と
呼ばれている制御方式であり、以下、ダイナミック・ウェアー・レベリングと言う)である。もう一つは、書き換えが行われないデータが記憶されている物理ブロックを含めて、全ての物理ブロックの消去回数又は書き換え回数が平均化されるように制御するウェアー・レベリング制御(スタティック・ウェアー・レベリング(Static-wear-leveling)制御方式又はアクティブ・ウェアー・レベリング(Active-wear-leveling)制御方式と呼ばれている制御方式であり、以下、スタティック・ウェアー・レベリングと言う)である。
ここで、書き換えが行わないデータが記憶されている物理ブロックが少ない場合は、ダイナミック・ウェアー・レベリング制御方式が適している。しかし、書き換えが行われないデータが記憶されている物理ブロックが多い場合は、スタティック・ウェアー・レベリング制御方式が適している。従って、特許文献1には、メモリシステムに記憶されるデータの書き換え頻度に応じて(つまり、書き換えが行われないデータが記憶されている物理ブロックが多いか少ないかに応じて)、ダイナミック・ウェアー・レベリング制御方式、スタティック・ウェアー・レベリング制御方式又はこれらを組み合わせたウェアー・レベリング制御方式のうちのいずれかのウェアー・レベリング制御を行うことが記載されている。
特開2007−133683号公報
上述した特許文献1では、ウェアー・レベリング制御方式の選択や条件設定を、ユーザが行うようになっている。しかしながら、メモリシステムに記憶されるデータの書き換え頻度に応じて、適切なウェアー・レベリング制御方式を選択することは、必ずしも容易でない。
そして、ウェアー・レベリング制御方式の選択が適切でなかった場合、スタティック・ウェアー・レベリング制御方式を選択しなかったために消去回数が極端に少ない物理ブロックがウェアー・レベリング制御の対象にならずに放置されることや、スタティック・ウェアー・レベリング制御方式を選択したために物理ブロック間で不必要なデータ転送が行われることがある。
そこで、本発明は、ユーザがウェアー・レベリング制御方式の設定を行う必要がなく、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数の偏りが大きくなったときにだけ、書き換え頻度が低いデータが格納されている物理ブロックを含めたウェアー・レベリング制御が行われるようにしたメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することを目的とする。
本発明の第1の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理手段と、
所定の前記論理ブロックに割り当てられている物理ブロックを特定する物理ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記所定の前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第1の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第1の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる。
本発明の第2の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理手段と、
所定の前記論理ブロックに割り当てられている前記仮想ブロックを特定する仮想ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記所定の前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第1の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第1の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる。
本発明の第3の側面に従うメモリコントローラでは、前記第1又は第2の側面において、前記所定の前記論理ブロックを特定するための情報が、ホストシステムから与えられる情報に基づいて設定される。
本発明の第4の側面に従うフラッシュメモリシステムは、前記第1乃至第3の側面うちのいずれかの側面に従うメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備える。
本発明の第5の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
所定の前記論理ブロックに割り当てられている物理ブロックを特定する物理ブロック特定ステップと、
前記所定の前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第1の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第1の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる。
本発明の第6の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
所定の前記論理ブロックに割り当てられている前記仮想ブロックを特定する仮想ブロック特定ステップと、
前記所定の前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第1の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第1の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる。
本発明の第7の側面に従う方法では、前記第5又は第6の側面において、ホストシステムから与えられる情報に基づいて前記所定の前記論理ブロックが設定される。
本発明によれば、ホストシステム側の論理アドレスが割り当てられている複数セクタの領域に対応する論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックである最先ブロックの消去回数と、有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小の空きブロックの消去回数とが比較される。この比較において、空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多い場合は、最先ブロックに格納されているデータが別の物理ブロックに転送される。このデータ転送では、消去回数が最大の空きブロックが転送先の物理ブロックとして割り当てられる。このような処理が行われることにより、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数の偏りが大きくなったときに、その偏りが抑制される。
更に、本発明によれば、論理ブロック単位で、それぞれの論理ブロックに対応するデータが記憶されている物理ブロックを上記処理の対象とするか否かを適宜設定することができる。従って、ホストシステムから与えられるデータに、上記処理の対象としたいデータと上記処理の対象としたくないデータが含まれている場合には、上記処理の対象としたいデータだけを上記処理の対象として設定することができる。
本発明の実施の形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。 論理ブロックと物理ブロックの対応関係を示す図である。 使用ブロック管理を示す説明図である。 空きブロック管理を示す説明図である。 使用ブロック管理及び空きブロック管理に用いられるテーブルの構成を示す説明図である。
図1は、本実施の形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。
図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(Error Correcting Code)ブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を介してフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を介してホストシステム4に供給される。
ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、アクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭セクタのLBA(Logical Block Address)(後述)が書き込まれる。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータを一時的に格納する作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成されている。ワークエリア8には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が格納される。
バッファ9は、フラッシュメモリ2から読み出したデータを、ホストシステム4が受け取り可能な状態となるまで保持する。また、バッファ9は、フラッシュメモリ2に書き込むデータを、フラッシュメモリ2が書き込み可能な状態となるまで保持する。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error Correcting Code)を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、メモリコントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、ROM12から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインターフェースブロック10に処理を実行させる。
フラッシュメモリ2は、NAND型フラッシュメモリからなる。NAND型フラッシュメモリは、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。物理ブロックは、複数のページ(物理ページ)で構成される。例えば、1個の物理ページは、所定サイズ(例えば2048バイト)のユーザ領域と、所定サイズ(例えば64バイト)の冗長領域とで構成され、1個の物理ブロックが、所定個数(例えば64個)の物理ページで構成されている。ユーザ領域は、ホストシステム4から与えられるデータを記憶するための領域であり、通常、512バイト単位の記憶領域(以下、「論理セクタ領域」と言う)に分割して管理されている。冗長領域は、誤り訂正符号(ECC:Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するため
の領域である。
論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグである。尚、初期不良の物理ブロックについては、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。
本実施の形態の書き込み処理では、ホストシステム4によって、コマンドレジスタR1に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタR2に、書き込むデータのセクタ数が書き込まれ、LBAレジスタR3には、書き込みを開始する先頭データに対応するLBAが書き込まれる。セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム4から与えられるデータが書き込まれる。
セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて判別される論理アクセス領域が複数個の論理ブロックに跨っている場合は、論理アクセス領域が属する論理ブロック毎に領域を分割してデータの書き込み処理が行われる。例えば、論理アクセス領域が2個の論理ブロック(第1の論理ブロックと第2の論理ブロック)に跨っている場合は、第1の論理ブロックに対応する物理ブロックに対する書き込み処理と、第2の論理ブロックに対応する物理ブロックに対する書き込み処理とが行われる。第1の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第1の論理ブロックに対応する物理ブロックに書き込まれる。第2の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第2の論理ブロックに対応する物理ブロックに書き込まれる。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、「論理セクタ領域」と言う)に付けた通し番号であるLBA(Logical Block Address)で管理されている。又、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、1個又は複数個の物理ブロックが割り当てられる。
この論理ブロックと物理ブロックの対応関係は、ゾーン単位で管理されることが多い。具体的には、複数個の論理ブロックで1個の論理ゾーンが構成され、この論理ゾーン単位で論理ブロックと物理ブロックの対応関係を示すアドレス変換テーブルの作成処理や更新処理が行われる。
このアドレス変換テーブルの作成処理や更新処理は、通常、ワークエリア8上で行われる。アドレス変換テーブルは、一般に、起動時又はアクセス時に、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成されるが、フラッシュメモリ2に格納しておき、必要なときにフラッシュメモリ2から読み出すようにしてもよい。こうすることより、各物理ブロックの冗長領域から論理アドレス情報を読み出してアドレス変換テーブルを作成する場合に比べて、短時間で、アドレス変換テーブルを得ることができる。
また、アドレス変換テーブルをフラッシュメモリ2に格納する場合は、突然の電源遮断に対応するため、常に最新のアドレス変換テーブルがフラッシュメモリ2に格納されているようにすることが好ましい。つまり、論理ブロックと物理ブロックとの対応関係が変化する毎に(つまりワークエリア8上でアドレス変換テーブルが更新される毎に)、最新のアドレス変換テーブルがフラッシュメモリ2に保存されることが好ましい。このアドレス変換テーブルの格納処理も、作成処理や更新処理と同様に論理ゾーン単位で行われる。
図2を参照して、論理ブロックと物理ブロックの対応関係の一例を説明する。
図2に示した例では、LBA#0−#2047999からなる2048000個の論理セクタ領域が、フラッシュメモリ2を構成する8192個の物理ブロックからなる記憶領域に割り当てられている。
それぞれの物理ブロックは、複数個の論理セクタ領域で構成された論理ブロックに割り当てられる。以下、この論理ブロックに付けられた通し番号を「論理ブロック番号(LBN)」と言う。この例では、セクタ単位の論理アドレスであるLBAが連続する256個の論理セクタ領域をまとめたものを論理ブロックとしている。つまり、LBA#0−#255の256個の論理セクタ領域によりLBN#0の論理ブロックが構成され、LBA#256−#511の256個の論理セクタ領域によりLBN#1の論理ブロックが構成されている。このように、LBA#0−#2047999の2048000個の論理セクタ領域によりLBN#0−#7999の8000個の論理ブロックが構成されている。
更に、この論理ブロックを複数個まとめたものを論理ゾーンとしている。以下、この論理ゾーンに付けられた通し番号を「論理ゾーン番号(LZN)」と言う。この例では、LBN#0−#7999の8000個の論理ブロックが、LZN#0−#7の8個の論理ゾーンに対して1000個ずつ割り当てられている。つまり、LBN#0−#999の論理ブロックがLZN#0の論理ゾーンに、LBN#1000−#1999の論理ブロックがLZN#1の論理ゾーンに、LBN#2000−#2999の論理ブロックがLZN#2の論理ゾーンに、以下、同様に、LBN#7000−#7999の論理ブロックがLZN#7の論理ゾーンに割り当てられている。
フラッシュメモリ2を構成する8192個の物理ブロックには、固有の物理ブロックアドレス(PBA)が付されている。フラッシュメモリ2を構成する物理ブロックには、出荷時からデータの書き込みや消去を正常に行うができない不良ブロックである先天性の不良ブロックと、書き込みや消去を繰返すことにより不良ブロックになった後天性の不良ブロックとがある。フラッシュメモリ2を構成する物理ブロックに含まれる後天性の不良ブロックの個数は、一般に、メーカにより規定されている保証消去回数を超えると顕著に増加する。
また、一般的に使用されているNAND型フラッシュメモリには、SLC(single level cell)タイプのメモリセルで構成されているものと、MLC(multi level cell)タイプのメモリセルで構成されているものとがある。MLCタイプのメモリセルで構成されたフラッシュメモリは、一般に、SLCタイプのメモリセルで構成されたフラッシュメモリに比べデータ保持期間が短く、そのデータ保持期間は、所定の消去回数を超えると顕著に短くなる。従って、MLCタイプのメモリセルで構成されたフラッシュメモリでは、保証消去回数に達していない物理ブロックであっても、所定の消去回数を超えると、その物理ブロックに格納されているデータの信頼性が低下する。
それぞれの論理ブロックに対応するデータは、その論理ブロックに割り当てられた物理ブロックに格納される。この論理ブロックと物理ブロックとの対応関係は、上述したアドレス変換テーブルによって管理されている。論理ブロックに割り当てる物理ブロックは、有効なデータが格納されていない物理ブロックを特定するためのテーブルである空きブロックテーブルを用いて特定される。
フラッシュメモリに格納されているデータを更新するときには、旧データが格納されている物理ブロックと同じ論理ブロックに有効なデータが格納されていない別の物理ブロックを新たに割り当て、その別の物理ブロックに新データが格納される。そして、全ての旧データが新データで置き換えられたとき、旧データが格納されている物理ブロックは、有効なデータが格納されていない物理ブロックになる。
つまり、いずれかの論理ブロックに対応するデータが格納されている物理ブロック内の全てのデータが別の物理ブロックに格納されているデータにより置き換えられたとき、その物理ブロックは有効なデータが格納されていない物理ブロックになる。尚、このような有効なデータが格納されていない物理ブロックの消去処理は、別の物理ブロックに格納されているデータにより全ての有効なデータが置き換えられたときに行っても(つまり、物理ブロックが、有効なデータが格納されていない物理ブロックになったときに行われても)、又は、その物理ブロックが論理ブロックに割り当てられる直前に行われてもよい。
フラッシュメモリに格納されているデータは、通常、更新される毎に格納先の物理ブロックが遷移していく。この格納先の物理ブロックの遷移は、更新頻度が高いデータに関しては多くなり、更新頻度が低いデータに関しては少なくなる。従って、格納されたデータの更新頻度の差異により、それぞれの物理ブロックの消去回数に偏りが生じる。この消去回数の偏りが過度に進行すると、消去回数が多い一部の物理ブロックが、他の物理ブロックよりも早く不良ブロックになったり、他の物理ブロックよりも早くデータ保持期間が著しく短くなったりして好ましいない。
このような問題を回避するため、本発明の一実施形態に係るメモリコントローラ3は、有効なデータが格納されていない物理ブロックのうちで消去回数が最小の物理ブロックの消去回数が、更新頻度が低いデータが格納されている物理ブロックの消去回数よりも所定回数以上多くなったときに、更新頻度が低いデータが格納されている物理ブロックに格納されているデータを別の物理ブロックに転送する。このデータ転送では、有効なデータが格納されていない物理ブロックのうちで消去回数が最大の物理ブロックが転送先になる。次に、この処理を、図3及び図4を参照して説明する。
本実施の形態では、有効データが格納されている物理ブロックを対象とした優先順位管理と、有効データが格納されていない物理ブロックを対象とした優先順位管理が行われている。以下、有効データが格納されている物理ブロックを対象とした優先順位管理を「使用ブロック管理」と言い、有効データが格納されていない物理ブロックを対象とした優先順位管理を「空きブロック管理」と言う。
使用ブロック管理における優先順位管理を、図3を参照して説明する。この使用ブロック管理では、論理ブロックに割り当てられている物理ブロック、つまり、いずれかの論理ブロックと対応関係にある物理ブロックを対象にした優先順位管理が行われている。この優先順位管理では、論理ブロックに対して物理ブロックが新たに割り当てられたときに、新たに割り当てられた物理ブロックの優先順位が最上位になる優先順位の管理が行われている。従って、論理ブロックに対して先に割り当てられた物理ブロックの方が、優先順位が下位になる。そして、優先順位が最下位の物理ブロックは、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。メモリコントローラ3は、このような優先順位の管理を行うことにより、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックを特定することができる。
図3に示した例では、PBN#36の物理ブロックの優先順位が最上位になっており、PBN#857の物理ブロックの優先順位が最下位になっている。従って、PBN#36の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も後に論理ブロックに割り当てられた物理ブロックに対応し、PBN#857の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。ここで、PBN#523の物理ブロックが論理ブロックに新たに割り当てられた場合、PBN#523の物理ブロックの優先順位が最上位になり、PBN#36の物理ブロックの優先順位は2番目になる。また、PBN#234の物理ブロックが有効なデータが格納されていない物理ブロックになった場合、又はPBN#234の物理ブロックに格納されているデータが消去された場合、PBN#234の物理ブロックがこの優先順位管理の対象から外される。つまり、PBN#995の物理ブロック、PBN#234の物理ブロック、PBN#645の物理ブロックという順番であった優先順位が、PBN#995の物理ブロック、PBN#645の物理ブロックという順番になる。
空きブロック管理における優先順位管理を、図4を参照して説明する。この空きブロック管理では、論理ブロックに対して割り当てることが可能な物理ブロックを対象にした優先順位管理が行われている。ここで、論理ブロックに対して割り当てることが可能な物理ブロックとは、不良ブロックではない物理ブロックであって、記憶データが消去されている物理ブロック又は有効なデータが格納されていない物理ブロックであることを意味する。尚、有効なデータが格納されていない物理ブロックについては、論理ブロックに割り当てられる前に記憶データが消去される。以下、論理ブロックに対して割り当てることが可能な物理ブロックを「空きブロック」と言う。つまり、「空きブロック」には、有効なデータが格納されていない物理ブロックであって、記憶データが消去されていない物理ブロックも含まれる。
この空きブロックを対象にした優先順位管理では、消去回数の少ない空きブロックの優先順位が高くなり、消去回数の多い空きブロックの優先順位が低くなるように優先順位が管理されている。つまり、消去回数の少ない方から多い方に向かって優先順位が下がっていくように優先順位が管理されている。従って、優先順位が最上位の空きブロックは、空きブロックのうちで消去回数が一番少ない空きブロックに対応し、優先順位が最下位の空きブロックは、空きブロックのうちで消去回数が一番多い空きブロックに対応する。
図4に示した例では、PBN#753の物理ブロックの優先順位が最上位になっており、PBN#38の物理ブロックの優先順位が最下位になっている。従って、PBN#753の物理ブロックは空きブロックのうちで消去回数が最も少ない物理ブロックであり、PBN#38の物理ブロックは空きブロックのうちで消去回数が最も多い物理ブロックである。ここで、優先順位が最上位の空きブロックであるPBN#753の物理ブロックの消去回数は1178回であり、優先順位が2番目の空きブロックであるPBN#228の物理ブロックの消去回数は1193回であり、以下、優先順位が下がるにつれて消去回数が増加していく。そして、優先順位が最下位の空きブロックであるPBN#38の物理ブロックの消去回数は2536回になっている。
論理ブロックに対して割り当てられていた物理ブロックが空きブロックになった場合、その物理ブロックは、使用ブロック管理の対象から外され、空きブロック管理の対象に追加される。例えば、PBN#234の物理ブロックが空きブロックになったときは、PBN#234の物理ブロックが空きブロック管理の対象に追加される。PBN#234の物理ブロックの消去回数は1223回なので、PBN#234の物理ブロックの優先順位は、消去回数が1205回であるPBN#431の物理ブロックと消去回数が1253回であるPBN#712の物理ブロックの間に設定される。つまり、PBN#431の物理ブロック、PBN#712の物理ブロックという順番であった優先順位が、PBN#431の物理ブロック、PBN#234の物理ブロック、PBN#712の物理ブロックという順番になる。
次に、ホストシステム4からのアクセスに応答して、メモリコントローラ3が実行する処理について説明する。ホストシステム4から与えられるデータがフラッシュメモリ2に書き込まれる場合、メモリコントローラ3は、セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域を判別し、更に、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム4から与えられるデータを書き込むことが可能か否かを判断する。その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックが無い場合、又は、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム4から与えられるデータを書き込むための空き領域が無い場合、メモリコントローラ3は、その論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定する。
この物理ブロックを決定するため、メモリコントローラ3は、空きブロックのうちで消去回数が最も少ない物理ブロックと論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックとを特定する。つまり、メモリコントローラ3は、空きブロック管理における優先順位が最上位の物理ブロック(空きブロック)と使用ブロック管理における優先順位が最下位の物理ブロックと特定する。以下、空きブロック管理における優先順位が最上位の空きブロックを「最上位空きブロック」と言い、空きブロック管理における優先順位が最下位の空きブロックを「最下位空きブロック」と言い、使用ブロック管理における優先順位が最下位の物理ブロックを「最先ブロック」と言う。
メモリコントローラ3は、特定された最上位空きブロックの消去回数と最先ブロックの消去回数とを比較し、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多いか否かを判断する。この所定回数は、フラッシュメモリの仕様等に応じて適宜設定される。
この比較に基づいて否定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多くない場合、論理アクセス領域が含まれる論理ブロックに最上位空きブロックである物理ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム4から与えられるデータが格納される。
この比較に基づいて肯定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多い場合、メモリコントローラ3は、最下位空きブロックを特定し、その最下位空きブロックに、最先ブロックに格納されているデータを転送する。このデータ転送の終了後に、転送元の最先ブロックに格納されているデータが消去され(この際、転送元の最先ブロックの消去回数が1回増加する)、論理アクセス領域が含まれる論理ブロックに転送元の最先ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム4から与えられるデータが格納される。尚、このデータ転送の転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックと対応する物理ブロックになる。つまり、転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックに新たに割り当てられる。
最先ブロックに格納されているデータは書き換え頻度が低い場合が多いため、このデータ転送が行われることにより、転送先の最下位空きブロックであった物理ブロックの消去回数の増加が抑制される。一方、転送元の最先ブロックであった物理ブロックには書き換え頻度が高いデータが格納される確率が高くなる。従って、このデータ転送が行われることにより、フラッシュメモリを構成する複数個の物理ブロックにおける消去回数の偏りが抑制される。
次に、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックが決定されるまでの処理を図3及び図4を参照して具体的に説明する。以下の説明では、上述の所定回数が1000回であるものとして説明する。
メモリコントローラ3は、空きブロックのうちで消去回数が最も少ない物理ブロックである最上位空きブロックとしてPBA#753の物理ブロックを特定し、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックである最先ブロックとしてPBA#857の物理ブロックを特定する。ここで、PBA#753の物理ブロックの消去回数は1178回で、PBA#857の物理ブロックの消去回数は75回なので、最上位空きブロックと最先ブロックの消去回数の比較では、1178回と75回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも1000回以上多いという肯定的な判断がなされる。
メモリコントローラ3は、最上位空きブロックと最先ブロックの消去回数の比較に基づいて肯定的な判断した後、その判断に基づいて空きブロックのうちで消去回数が最も多い物理ブロックである最下位空きブロックとしてPBA#38の物理ブロックを特定する。そして、特定された最下位空きブロックであるPBA#38の物理ブロックには、最先ブロックであるPBA#857の物理ブロックに格納されているデータが転送される。このデータ転送の終了後に、PBA#857の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。つまり、PBA#857の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックとして決定される。
尚、PBA#857の物理ブロックが論理ブロックに割り当てられることにより、使用ブロック管理における優先順位が最上位の物理ブロックはPBA#857の物理ブロックになり、使用ブロック管理における優先順位が最下位の物理ブロックはPBA#901の物理ブロックになる。従って、メモリコントローラ3が、次に論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定するときには、最上位空きブロックとしてPBA#753の物理ブロックを特定し、最先ブロックとしてPBA#901の物理ブロックを特定する。最上位空きブロックと最先ブロックの消去回数の比較では、PBA#753の物理ブロックの消去回数である1178回とPBA#901の物理ブロックの消去回数である105回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも1000回以上多いという肯定的な判断がなされる。このため、PBA#901の物理ブロックに記憶されているデータが最下位空きブロック(PBA#532の物理ブロック)に転送された後、PBA#901の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。
また、最先ブロックから最下位空きブロックへのデータ転送が行われた場合、転送先の最下位空きブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。例えば、最先ブロックであるPBA#857の物理ブロックから最下位空きブロックであるPBA#38の物理ブロックへのデータ転送が行われた場合、PBA#38の物理ブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。論理ブロックに物理ブロックが新たに割り当てられ、その物理ブロックにデータが格納されたことにより、その物理ブロックと同じ論理ブロックに割り当てられている別の物理ブロックが空きブロックになった場合、その別の物理ブロックは使用ブロック管理の対象から外され空きブロック管理の対象に追加される。
フラッシュメモリ2に格納されているデータの更新処理では、通常、更新される毎に格納先の物理ブロックが遷移していく。従って、書き換え頻度が高いデータが格納された物理ブロックは、使用ブロック管理の対象から空きブロック管理の対象に移行する傾向が強くなり、書き換え頻度が低いデータが格納された物理ブロックは、使用ブロック管理の対象として留まる傾向が強くなる。本実施形態では、このような傾向を考慮して、使用ブロック管理における優先順位が最下位の物理ブロックに格納されているデータが、書き換え頻度が低いデータとみなされる。また、消去回数の少ない物理ブロックが空きブロックになった場合、その空きブロックは論理ブロックに割り当てられる確率が高くなるので、消去回数の少ない物理ブロックに書き換え頻度が低いデータが格納される確率を低くすれば、消去回数の少ない物理ブロックの消去回数は増加する傾向が強くなる。従って、書き換え頻度が低いとみなされたデータが、消去回数の少ない物理ブロックに格納されることを避けるために、上述のデータ転送(最先ブロックから最下位空きブロックへのデータ転送)が行われる。
次に、フラッシュメモリ2を構成する物理ブロックの消去回数の管理並びに使用ブロック管理及び空きブロック管理における優先順位管理の方法を、図5に示した例を参照して説明する。図5に示したテーブルには、PBAの順番で各物理ブロックの優先順位リンク番号と消去回数が記載されている。2つ優先順位リンク番号は、その物理ブロックより優先順位が1つ上の物理ブロックのPBAと、その物理ブロックより優先順位が1つ下の物理ブロックのPBAに対応している。従って、論理ブロックに割り当てられている物理ブロックについては、使用ブロック管理における優先順位が、その物理ブロックよりも1つ上の物理ブロックのPBAと1つ下の物理ブロックのPBAとが、優先順位リンク番号として書き込まれる。空きブロックになった物理ブロックについては、空きブロック管理における優先順位が、その物理ブロックよりも1つ上の物理ブロックのPBAと1つ下の物理ブロックのPBAとが、優先順位リンク番号として書き込まれる。尚、優先順位が最上位の物理ブロックについては、その物理ブロックより優先順位が1つ上の物理ブロックのPBAが書き込まれておらず、優先順位が最下位の物理ブロックについては、その物理ブロックより優先順位が1つ下の物理ブロックのPBAが書き込まれていない。
このテーブルを参照することにより、例えば、PBA#0の物理ブロックの場合、その物理ブロックより優先順位が1つ上の物理ブロックはPBA#118であり、その物理ブロックより優先順位が1つ下の物理ブロックはPBA#572であることが分かる。
このテーブルには、使用ブロック管理及び空きブロック管理における優先順位が最上位の物理ブロックと最下位の物理ブロックのPBAも記載されており、優先順位が最上位の物理ブロック又は最下位の物理ブロックが変わったときは変更される。
使用ブロック管理における優先順位管理の場合、論理ブロックに新たに物理ブロックが割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すPBAが変更される。また、優先順位が最下位の物理ブロックである最先ブロックに記憶されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すPBAが変更される。
空きブロック管理における優先順位管理の場合、優先順位が最上位の物理ブロックである最上位空きブロックよりも消去回数が少ない物理ブロックが空きブロックになったときや、最上位空きブロックが論理ブロックに割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すPBAが変更される。また、優先順位が最下位の物理ブロックである最下位空きブロックよりも消去回数が多い物理ブロックが空きブロックになったときや、最先ブロックに格納されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すPBAが変更される。
例えば、PBA#753の物理ブロックが論理ブロックに新たに割り当てられた場合、使用ブロック管理における優先順位が最上位の物理ブロックを示すPBAが、#36から#753に変更される。また、PBAが#36の物理ブロックの優先順位リンク番号として、優先順位が1つ上の物理ブロックを示すPBAである#753が記載される。PBAが#753の物理ブロックの優先順位リンク番号として、優先順位が1つ下の物理ブロックを示すPBAである#36が記載される。このように優先順位リンク番号が記載されることにより、PBAが#753の物理ブロックが使用ブロック管理の対象になる。
最上位空きブロックであったPBA#753の物理ブロックが論理ブロックに新たに割り当てられた場合、PBA#753の物理ブロックが空きブロック管理の対象から外される。このため、空きブロック管理における優先順位が最上位の物理ブロックを示すPBAが変更される。最上位空きブロックであったPBA#753の物理ブロックの優先順位リンク番号として記載されていた優先順位が1つ下の物理ブロックを示すPBAが#228であった場合、空きブロック管理における優先順位が最上位の物理ブロックを示すPBAが#753から#228に変更される。そして、PBA#228の物理ブロックの優先順位リンク番号として記載されている優先順位が1つ上の物理ブロックを示すPBA(#753)は消去される。また、このテーブルに記載されている消去回数は、それぞれの物理ブロックが空きブロック管理の対象に追加される毎に、追加された物理ブロックの消去回数が1ずつ増やされる。
尚、上述した実施の形態では、論理ブロックに割り当てられた全ての物理ブロックを対象に使用ブロック管理が行われたが、使用ブロック管理の対象となる物理ブロックが特定の論理ブロックに割り当てられた物理ブロックに限定されるようにしてもよい。例えば、使用ブロック管理の対象となる物理ブロックは、それぞれの物理ブロックに割り当てられている論理ブロックの論理ブロック番号(LBN)の範囲により限定されるようにしてもよい。
また、この使用ブロック管理の対象は、ホストシステム4からの指示により行われるようにしてもよい。例えば、使用ブロック管理の対象とするLBAの範囲(以下、対象LBA範囲と言う)、又は対象としないLBAの範囲(以下、対象外LBA範囲と言う)が、ホストシステム4から与えられるようにしてもよい。
このような使用ブロック管理の対象の設定が行われた場合、その設定に関する情報は、フラッシュメモリ2に格納され、起動時にメモリコントローラ3により読み出され保持されることが好ましい。例えば、メモリコントローラ3は、メモリコントローラ3が有する記憶領域(例えば、ワークメモリ8、或いはマイクロプロセッサ6内のレジスタ)に、ホストシステム4から指示された対象LBA範囲又は対象外LBA範囲を表すに関する情報を保持する。そして、メモリコントローラ3は、その情報を基に、使用ブロック管理の対象となる論理ブロック(以下、対象論理ブロックと言う)を特定し、対象論理ブロックに割り当てられた物理ブロックだけを対象に使用ブロック管理を行い、使用ブロック管理の対象とならない論理ブロック(以下、対象外論理ブロックと言う)に割り当てられた物理ブロックは使用ブロック管理の対象としない。具体的には、対象論理ブロックに割り当てられた物理ブロックに関する情報(例えば、優先順位リンク番号)だけが使用ブロック管理に用いられるテーブルに記述され、対象外論理ブロックに割り当てられた物理ブロックに関する情報はこのテーブルにされないようにしてもよい。
このようにすれば、対象論理ブロックに割り当てられた物理ブロックだけが、使用ブロック管理における優先順位が最下位の物理ブロックである最先ブロックとして特定され、対象外論理ブロックに割り当てられた物理ブロックは、最先ブロックとして特定されない。従って、対象論理ブロックに割り当てられた物理ブロックだけが、最先ブロックから空きブロックへのデータ転送(以下、複写転送と言う)における転送元の物理ブロックになり、対象外論理ブロックに割り当てられた物理ブロックは、この複写転送における転送元の物理ブロックにならない。
そして、ホストシステム4は、対象外LBA範囲を指示することにより、物理ブロック間でのデータ転送の対象となることが好ましくないデータを、複写転送の対象外とすることができる。つまり、この対象外LBA範囲の指示により、物理ブロック間でのデータ転送の対象となることが好ましくないデータが記憶されている物理ブロックが、複写転送における転送元の物理ブロックにならないように設定される。
ホストシステム4から対象LBA範囲が指示される場合、そのLBAの範囲に含まれる論理ブロックは使用ブロック管理の対象となるが、そのLBAの範囲に含まれない論理ブロックは使用ブロック管理の対象とならない。ホストシステム4から対象外LBA範囲が指示される場合、そのLBAの範囲に含まれる論理ブロックは使用ブロック管理の対象とならないが、そのLBAの範囲に含まれない論理ブロックは使用ブロック管理の対象となる。尚、一部が対象LBA範囲に含まれ、その他の部分が対象外LBA範囲に含まれる論理ブロックを使用ブロック管理の対象とするか否かは適宜設定することができる。つまり、対象LBA範囲と対象外LBA範囲の両方を含んだLBA範囲に対応する論理ブロックを使用ブロック管理の対象とするか否かは適宜設定することができる。例えば、論理ブロックに対応するLBA範囲のうち対象LBA範囲と対象外LBA範囲のどちらの比率が多いかに応じて、その論理ブロックが使用ブロック管理の対象とするか否かがメモリコントローラ3によって自動で決定されても良い。具体的には、例えば、対象LBA範囲が対象外LBA範囲よりも多い論理ブロックは、使用ブロック管理の対象とされ、対象外LBA範囲が対象LBA範囲よりも多い論理ブロックは、使用ブロック管理の対象とされない。
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、上述の実施の形態では、物理ブロック単位で使用ブロック管理及び空きブロッ管理を行っていたが、論理ブロックに対して複数個の物理ブロックで構成された仮想ブロックを割り当てる場合には、これらの管理を仮想ブロック単位で行うようにしてもよい。つまり、それぞれの仮想ブロックを構成する物理ブロックが初期設定等により決められている場合には、同じ仮想ブロックに属する物理ブロックの消去回数は同じなる。また、論理ブロックへの割り当てとデータの消去が仮想ブロック単位で行われるため、使用ブロック管理及び空きブロッ管理も仮想ブロック単位で行うことができる。使用ブロック管理及び空きブロック管理を仮想ブロック単位で行う場合には、仮想ブロック単位で上述の優先順位を管理(つまり、優先順位リンク番号を仮想ブロックに付けた通し番号で管理)すればよい。
尚、使用ブロック管理及び空きブロッ管理の方法については、最上位空きブロック、最下位空きブロック及び最先ブロックを特定することができれば、上述の方法以外の方法であってもよい。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ

Claims (7)

  1. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理手段と、
    有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定手段と、
    前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定手段と、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理手段と、
    所定の前記論理ブロックに割り当てられている物理ブロックを特定する物理ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記所定の前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定手段と、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
    前記第1の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
    前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
    前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第1の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
    前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる
    メモリコントローラ。
  2. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
    それぞれの前記仮想ブロックの消去回数を管理する消去回数管理手段と、
    有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定手段と、
    前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定手段と、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理手段と、
    所定の前記論理ブロックに割り当てられている前記仮想ブロックを特定する仮想ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記所定の前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定手段と、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
    前記第1の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
    前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
    前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第1の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
    前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる
    メモリコントローラ。
  3. 前記所定の前記論理ブロックを特定するための情報が、ホストシステムから与えられる情報に基づいて設定される請求項1又は2に記載のメモリコントローラ。
  4. 請求項1乃至3のうちのいずれか1項に記載のメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備えるフラッシュメモリシステム。
  5. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
    有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定ステップと、
    前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定ステップと、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
    所定の前記論理ブロックに割り当てられている物理ブロックを特定する物理ブロック特定ステップと、
    前記所定の前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定ステップと、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
    前記第1の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
    前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
    前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第1の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
    前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる
    フラッシュメモリの制御方法。
  6. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
    それぞれの前記仮想ブロックの消去回数を管理する消去回数管理ステップと、
    有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第1の空きブロック特定ステップと、
    前記空きブロックのうちで消去回数が最大のものを特定する第2の空きブロック特定ステップと、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
    所定の前記論理ブロックに割り当てられている前記仮想ブロックを特定する仮想ブロック特定ステップと、
    前記所定の前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定ステップと、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
    前記第1の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
    前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第2の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
    前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第1の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
    前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる
    フラッシュメモリの制御方法。
  7. ホストシステムから与えられる情報に基づいて前記所定の前記論理ブロックが設定される請求項5又は6に記載のフラッシュメモリの制御方法。
JP2009098879A 2009-04-15 2009-04-15 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Active JP4952742B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2010250534A true JP2010250534A (ja) 2010-11-04
JP4952742B2 JP4952742B2 (ja) 2012-06-13

Family

ID=43312791

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4952742B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221338A (ja) * 2011-04-12 2012-11-12 Hitachi Ltd 半導体装置、不揮発性メモリ装置の制御方法
US9612773B2 (en) 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH1091535A (ja) * 1996-09-17 1998-04-10 Sanyo Electric Co Ltd 半導体メモリ装置
JP2002358233A (ja) * 2001-05-31 2002-12-13 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2008123314A (ja) * 2006-11-14 2008-05-29 Nec Electronics Corp 半導体記憶装置への情報記録方法及び情報記録システム
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2009003784A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
JP2010515179A (ja) * 2007-01-17 2010-05-06 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのブロック管理方法
JP2010182268A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH1091535A (ja) * 1996-09-17 1998-04-10 Sanyo Electric Co Ltd 半導体メモリ装置
JP2002358233A (ja) * 2001-05-31 2002-12-13 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2008123314A (ja) * 2006-11-14 2008-05-29 Nec Electronics Corp 半導体記憶装置への情報記録方法及び情報記録システム
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2010515179A (ja) * 2007-01-17 2010-05-06 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのブロック管理方法
JP2009003784A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
JP2010182268A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221338A (ja) * 2011-04-12 2012-11-12 Hitachi Ltd 半導体装置、不揮発性メモリ装置の制御方法
US8984209B2 (en) 2011-04-12 2015-03-17 Hitachi, Ltd. Semiconductor device and method of controlling non-volatile memory device
US9069662B2 (en) 2011-04-12 2015-06-30 Hitachi, Ltd. Semiconductor device and method of controlling non-volatile memory device
US9286212B2 (en) 2011-04-12 2016-03-15 Hitachi, Ltd. Semiconductor device and method of controlling non-volatile memory device
US9612773B2 (en) 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof

Also Published As

Publication number Publication date
JP4952742B2 (ja) 2012-06-13

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
US8214579B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010097333A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009245163A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952740B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5858081B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4821845B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8200890B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP4821844B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010086106A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2015191295A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120126

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: 20120214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120227

R150 Certificate of patent or registration of utility model

Ref document number: 4952742

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: 20150323

Year of fee payment: 3