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

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

Info

Publication number
JP2010182266A
JP2010182266A JP2009027740A JP2009027740A JP2010182266A JP 2010182266 A JP2010182266 A JP 2010182266A JP 2009027740 A JP2009027740 A JP 2009027740A JP 2009027740 A JP2009027740 A JP 2009027740A JP 2010182266 A JP2010182266 A JP 2010182266A
Authority
JP
Japan
Prior art keywords
block
earliest
group
physical
logical
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
JP2009027740A
Other languages
English (en)
Other versions
JP4666080B2 (ja
Inventor
Naoki Mukoda
直樹 向田
Takeshi Kamono
武志 鴨野
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 JP2009027740A priority Critical patent/JP4666080B2/ja
Priority to US12/701,789 priority patent/US8200891B2/en
Publication of JP2010182266A publication Critical patent/JP2010182266A/ja
Application granted granted Critical
Publication of JP4666080B2 publication Critical patent/JP4666080B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】フラッシュメモリ(FM)を構成する複数個の物理ブロック(PB)における極端な消去回数(EC)の偏りと、FM全体としてのECの増加を抑制する。
【解決手段】PBのECの閾値を基に定義されたPBのグループ(GP)毎に、空きPBの検索用のテーブルAと、最も先に論理ブロック(LB)に割り当てられたPB(最先PB)の検索用のテーブルBがある。メモリコントローラは、PBをアクセス対象のLBに割り当てるときに、ECの少ないPBが属する側のGP(下位側GP)に対応するテーブルAの方を優先的に用いて空きPBの検索し、検出された空きPBが属するGPよりも下位側GPに属するPBが存在するときには、その空きPBが属するGPよりも下位側GPに属する最先PBをその下位側GPに対応するテーブルBを用いて検索し、検出された最先PB内のデータを上記検出された空きPBに転送し、その最先PBをアクセス対象のLBに割り当てる。
【選択図】図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又は複数の閾値を基に定義された前記仮想ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索手段と、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備え、
前記アクセス指示に応答して前記ブロック管理手段により前記仮想ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索手段は消去回数の少ない前記仮想ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方を優先的に用いて前記空きブロックの検索を行い、
前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在しないときに、前記ブロック管理手段は前記空きブロック検索手段により検出された前記空きブロックを前記論理ブロックに割り当て、
前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在するときに、前記最先ブロック検索手段は前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックを検索し、前記データ転送手段は前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送し、前記ブロック管理手段は前記最先ブロック検索手段により検出された前記最先ブロックを前記論理ブロックに割り当てる。
本発明の第3の観点に従うフラッシュメモリシステムは、上記第1又は第2の観点に従うメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備える。
本発明の第4の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
有効なデータが格納されていない物理ブロックである空きブロックを検索するための空きブロックテーブルを、物理ブロックの消去回数について設けられた1又は複数の閾値を基に定義された物理ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索ステップと、
前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備え、
前記アクセス指示に応答して前記ブロック管理ステップにより物理ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索ステップでは消去回数の少ない物理ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方が優先的に用いられる前記空きブロックの検索が行われ、
前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在しないときに、前記ブロック管理ステップでは前記空きブロック検索ステップにより検出された前記空きブロックが前記論理ブロックに割り当てられ、
前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在するときに、前記最先ブロック検索ステップでは前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックが検索され、前記データ転送ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータが前記空きブロック検索ステップにより検出された前記空きブロックに転送され、前記ブロック管理ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックが前記論理ブロックに割り当てられる。
本発明の第5の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
前記仮想ブロック単位で消去回数を管理する消去回数管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
有効なデータが格納されていない前記仮想ブロックである空きブロックを検索するための空きブロックテーブルを、前記仮想ブロックの消去回数について設けられた1又は複数の閾値を基に定義された前記仮想ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索ステップと、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備え、
前記アクセス指示に応答して前記ブロック管理ステップにより前記仮想ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索ステップでは消去回数の少ない前記仮想ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方が優先的に用いられる前記空きブロックの検索が行われ、
前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在しないときに、前記ブロック管理ステップでは前記空きブロック検索ステップにより検出された前記空きブロックが前記論理ブロックに割り当てられ、
前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在する場合、前記最先ブロック検索ステップでは前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックが検索され、前記データ転送ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータが前記空きブロック検索ステップにより検出された前記空きブロックに転送され、前記ブロック管理ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックが前記論理ブロックに割り当てられる。
本発明によれば、物理ブロックの消去回数について1又は複数の閾値が設けられ、消去回数がその閾値を越えた物理ブロックの消去回数が抑制されるような制御が行われる。その結果、フラッシュメモリを構成する複数個の物理ブロックにおける極端な消去回数の偏りが抑制されると共に、フラッシュメモリ全体としての消去回数の増加も抑制される。
本発明の実施の形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。 論理ブロックと物理ブロックの対応関係を示す図である。 最先ブロックテーブルにおける優先順位管理を示す説明図である。 最先ブロックテーブルへの登録に関する説明図である。 空きブロックテーブルの構成を示す説明図である。 空きブロックテーブルへの登録に関する説明図である。 物理ブロックの消去回数の管理と先後管理のための優先順位管理に用いられるテーブルの説明図である。
図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レジスタR
3に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム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は、消去回数に閾値を設け、消去回数がその閾値に達した物理ブロックの消去回数の増加が抑制されるような制御を行っている。次に、この制御方法について説明する。
本実施の形態では、消去回数に2つの閾値が設けられ、この閾値に基づいて、フラッシュメモリ2を構成する複数個の物理ブロックが3個のグループに分割される。尚、設定される閾値の数は、適宜に設定される。例えば、3つの閾値により4個のグループに分割されるようにしても、4つの閾値により5個のグループに分割されるようにしても良い(つまり、フラッシュメモリ2を構成する複数個の物理ブロックは、N個の閾値があれば(N+1)個のグループに分割される)。また、閾値の値(閾値となる消去回数)は、フラッシュメモリの特性に応じて適宜設定される。
本実施の形態では、第1の閾値mが、第2の閾値nより1000小さい値に設定され、第2の閾値nが、データ保持期間の減少が顕著になる消去回数と一致するように設定されている。例えば、消去回数が5000回を超えるとデータ保持期間の減少が顕著になるフラッシュメモリの場合には、第1の閾値mが4000に、第2の閾値nが5000に設定される。メモリコントローラ3は、この2つの閾値に基づいて、フラッシュメモリ2を構成する複数個の物理ブロックを3個のグループに分割する。つまり、フラッシュメモリ2を構成する複数個の物理ブロックは、消去回数がm回未満の物理ブロックが属する第1のグループと、消去回数がm回以上n回未満の物理ブロックが属する第2のグループと、消去回数がn回以上の物理ブロックが属する第3のグループとに分割される。
本実施の形態では、メモリコントローラ3により、それぞれの物理ブロックを論理ブロックに割り当てた順番の先後が管理される。以下、この管理を「先後管理」と言う。
次に、この先後管理を図3及び図4を参照して説明する。この先後管理は、グループ毎に行われており、第1のグループに属する物理ブロックの先後管理は、図3(a)に示した第1の最先ブロックテーブルに基づいて行なわれ、第2のグループに属する物理ブロックの先後管理は、図3(b)に示した第2の最先ブロックテーブルに基づいて行なわれ、第3のグループに属する物理ブロックの先後管理は、図3(c)に示した第3の最先ブロックテーブルに基づいて行なわれる。
この先後管理では、次のような優先順位の管理、すなわち、論理ブロックに対して物理ブロックが新たに割り当てられたときに、新たに割り当てられたその物理ブロックの優先順位が最上位になる優先順位の管理が行われている。従って、論理ブロックに対して先に割り当てられた物理ブロックの方が、優先順位が下位になる。そして、優先順位が最下位の物理ブロックは、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。メモリコントローラ3は、このような優先順位の管理を行うことにより、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックを特定することができる。
また、この先後管理はグループ毎に行われているため、第1のグループに属する物理ブロックの先後管理における優先順位が最下位の物理ブロックは、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。同様に、第2のグループに属する物理ブロックの先後管理における優先順位が最下位の物理ブロックは、第2のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応し、第3のグループに属する物理ブロックの先後管理における優先順位が最下位の物理ブロックは、第3のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。
例えば、図3(a)に示した第1の最先ブロックテーブルでは、論理ブロックに割り当てられている物理ブロックのうちで、第1のグループに属する物理ブロックの優先順位が管理されている。この第1の最先ブロックテーブルでは、PBN#36の物理ブロックの優先順位が最上位になっており、PBN#857の物理ブロックの優先順位が最下位になっている。従って、PBN#857の物理ブロックが、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。ここで、第1のグループに属するPBN#523の物理ブロックが論理ブロックに新たに割り当てられた場合、PBN#523の物理ブロックの優先順位が最上位になり、PBN#36の物理ブロックの優先順位は2番目になる。また、PBN#234の物理ブロックが無効ブロックになった場合、又はPBN#234の物理ブロックに格納されているデータが消去された場合、PBN#234の物理ブロックが優先順位の管理対象から外される。つまり、PBN#995の物理ブロック、PBN#234の物理ブロック、PBN#645の物理ブロックという順番であった優先順位が、PBN#995の物理ブロック、PBN#645の物理ブロックという順番になる。
また、図3(b)に示した第2の最先ブロックテーブルでは、論理ブロックに割り当てられている物理ブロックのうちで、第2のグループに属する物理ブロックの優先順位が管理されている。この第2の最先ブロックテーブルでは、PBN#936の物理ブロックの優先順位が最上位になっており、PBN#975の物理ブロックの優先順位が最下位になっている。従って、PBN#957の物理ブロックが、第2のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。図3(c)に示した第3の最先ブロックテーブルでは、論理ブロックに割り当てられている物理ブロックのうちで、第3のグループに属する物理ブロックの優先順位が管理されている。この第3の最先ブロックテーブルでは、PBN#977の物理ブロックの優先順位が最上位になっており、PBN#1111の物理ブロックの優先順位が最下位になっている。尚、第2の最先ブロックテーブル及び第3の最先ブロックテーブルの更新も第1の最先ブロックテーブルの更新と同様に行なわれる。つまり、論理ブロックに対して新たに割り当てられた物理ブロックの優先順位が最上位になり、有効なデータが格納されていない物理ブロックになった場合は、優先順位の管理対象から外される。
本実施の形態では、先後管理がグループ毎に行われているため、メモリコントローラ3は、論理ブロックに対して新たに割り当てられた物理ブロックの消去回数に基づいて、その物理ブロックの登録先となる最先ブロックテーブルを決定する。つまり、図4に示したように、メモリコントローラ3は、論理ブロックに対して新たに割り当てられた物理ブロックの消去回数がm回未満の場合、その物理ブロックを第1のグループに対応する第1の最先ブロックテーブルに登録し、その物理ブロックの消去回数がm回以上n回未満の場合、その物理ブロックを第2のグループに対応する第2の最先ブロックテーブルに登録し、その物理ブロックの消去回数がn回以上の場合、その物理ブロックを第3のグループに対応する第3の最先ブロックテーブルに登録する。
本実施の形態では、論理ブロックに対して割り当てる物理ブロック(つまり、有効なデータが格納されていない物理ブロック)を検索するための空きブロックテーブルもグループ毎に管理されている。この空きブロックテーブルの管理を、図5及び図6を参照して説明する。
図5(a)に示した第1の空きブロックテーブル、図5(b)に示した第2の空きブロックテーブル及び図5(c)に示した第3の空きブロックテーブルは、テーブル上のそれぞれのビットがいずれかの物理ブロックに対応しており、それぞれのビットの論理値が、論理ブロックに対して割り当てることが可能な物理ブロックであるか否かを示している。ここで、論理ブロックに対して割り当てることが可能な物理ブロックとは、不良ブロックではない物理ブロックであって、記憶データが消去されている物理ブロック又は有効なデータが格納されていない物理ブロック(無効ブロック)であることを意味する。以下、不良ブロックではない物理ブロックであって、記憶データが消去されている物理ブロック又は有効なデータが格納されていない物理ブロック(無効ブロック)を「空きブロック」と総称する(つまり、記憶データが消去されていない無効ブロックを含めて「空きブロック」と言う)。
本実施の形態では、空きブロックに該当する物理ブロックの論理値を“1”とし、空きブロックに該当しない物理ブロックの論理値を“0”としている。また、第1乃至3の空きブロックテーブルにおいて、一番上の8ビットは下位ビット側から順番に(右側のビットから順番に)PBA#0−#7の物理ブロックに対応し、上から2番目の8ビットは下位ビット側から順番に(右側のビットから順番に)PBA#8−#15の物理ブロックに対応し、上から3番目の8ビットは下位ビット側から順番に(右側のビットから順番に)PBA#16−#24の物理ブロックに対応しており、以下同様に、それぞれビットに対してPBAの順番で物理ブロックが対応している。従って、図5(a)に示した第1の空きブロックテーブルの例では、PBA#8の物理ブロック及びPBA#15の物理ブロック等が空きブロックに該当し、図5(b)に示した第2の空きブロックテーブルの例では、PBA#0の物理ブロック等が空きブロックに該当する。
また、空きブロックとなった物理ブロックに対応するビットの論理値が“1”に変更されるときには、第1乃至3の空きブロックテーブルのうちのいずれか1つのテーブル上のビットの論理値だけが“1”に変更される。この変更されるビットが属するテーブルについては、空きブロックとなった物理ブロックの消去回数に基づいて選択される。つまり、図6に示したように、メモリコントローラ3は、空きブロックとなった物理ブロックの消去回数がm回未満の場合、第1のグループに対応する第1の空きブロックテーブルが選択され、その物理ブロックの消去回数がm回以上n回未満の場合、第2のグループに対応する第2の空きブロックテーブルが選択され、その物理ブロックの消去回数がn回以上の場合、第3のグループに対応する第3の空きブロックテーブルが選択される。
第1乃至3の空きブロックテーブルを用いた空きブロックの検索は、通常、ホストシステム4から与えられるデータの書き込み先として指定された論理ブロックに物理ブロックが割り当てられていないとき、又は、その論理ブロックに割り当てられている物理ブロックにホストシステム4から与えられるデータを書き込むための空き領域が無いときに行われる。そして、空きブロックの検索で検出された空きブロックは、ホストシステム4から与えられるデータの書き込み先として指定された論理ブロックに割り当てられ、ホストシステム4から与えられるデータが格納される。
本実施の形態では、消去回数が少ない下位側のグループから消去回数が多い上位側のグループに向かって、第1のグループ、第2のグループ、第3のグループという順番でグループ分けされている。そして、空きブロックを検索するときには、下位側のグループに対応するテーブルが優先的に使用される。つまり、第1のグループに対応する第1の空きブロックテーブルを使用した空きブロックの検索で空きブロックが検出されなかったときに、第2のグループに対応する第2の空きブロックテーブルを使用した空きブロックの検索が行われ、更に、第2のグループに対応する第2の空きブロックテーブルを使用した空きブロックの検索で空きブロックが検出されなかったときに、第3のグループに対応する第3の空きブロックテーブルを使用した空きブロックの検索が行われる。このようにすることにより、空きブロックのうち下位側のグループに属する物理ブロックが優先的に論理ブロック割り当てられる。その結果、上位側のグループに属する物理ブロックの消去回数の増加が抑制される。
しかし、このように下位側のグループに対応するテーブルが優先的に使用されるようにしただけでは、上位側のグループに属する物理ブロックの消去回数の増加が適切に抑制されない場合がある。例えば、下位側のグループに属する物理ブロックに書き換え頻度の低いデータが格納されてしまった場合、上位側のグループに属する物理ブロックの消去回数の増加が適切に抑制されない。このような場合、書き換え頻度の低いデータを上位側のグループに属する物理ブロックに格納されるようにすれば、上位側のグループに属する物理ブロックの消去回数の増加が適切に抑制される。従って、本実施の形態では、空きブロックの検索により空きブロックが検出されたときに、その空きブロックが属するグループよりも下位のグループに属する物理ブロックが存在する場合には、その下位のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに格納されているデータが、空きブロックの検索により検出された空きブロックに転送される。このデータ転送後に、その転送元の物理ブロックが、空きブロックの検索により検出された空きブロックの代替になる。つまり、その転送元の物理ブロックが、ホストシステム4から与えられるデータの書き込み先として指定された論理ブロックに割り当てられ、ホストシステム4から与えられるデータが格納される。このようなデータ転送が行われることより、上位側のグループに属する物理ブロックに書き換え頻度の低いデータが格納され、上位側のグループに属する物理ブロックの消去回数の増加が効果的に抑制される。
本実施の形態では、下位側のグループから上位側のグループに向かって、第1のグループ、第2のグループ、第3のグループという順番でグループ分けされている。従って、第2のグループに対応する第2の空きブロックテーブル又は第3のグループに対応する第3の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出された場合に、その空きブロックが属するグループよりも下位のグループに属する物理ブロックが存在することがある。つまり、第2の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出された場合、第1のグループに属する物理ブロックが、その空きブロックが属するグループよりも下位のグループに属する物理ブロックに該当し、第3の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出された場合、第1のグループ及び第2のグループに属する物理ブロックが、その空きブロックが属するグループよりも下位のグループに属する物理ブロックに該当する。
例えば、第2の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出された場合、第1の最先ブロックテーブルを使用した検索(つまり、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックの検索)が行われる。そして、この第1の最先ブロックテーブルを使用した検索により検出された物理ブロック(つまり、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロック)に格納されているデータが、第2の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロック(つまり、第2のグループに属する空きブロック)に転送される。このデータ転送の終了後、転送元の物理ブロック(第1の最先ブロックテーブルを使用した検索により検出された物理ブロック)が論理ブロックに割り当てられ、その転送元の物理ブロックにホストシステム4から与えられるデータが格納される。尚、第1の最先ブロックテーブルに登録されている物理ブロックが存在しない場合には、このデータ転送は行われず、第2の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロックがそのまま使用される。つまり、第2の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロック(つまり、第2のグループに属する空きブロック)が論理ブロックに割り当てられ、その空きブロックにホストシステム4から与えられるデータが格納される。
また、第3の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出された場合、まず第1の最先ブロックテーブルを使用した検索(つまり、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックの検索)が行われる。そして、この第1の最先ブロックテーブルを使用した検索により検出された物理ブロック(つまり、第1のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロック)に格納されているデータが、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロック(つまり、第3のグループに属する空きブロック)に転送される。このデータ転送の終了後、転送元の物理ブロック(第1の最先ブロックテーブルを使用した検索により検出された物理ブロック)が論理ブロックに割り当てられ、その転送元の物理ブロックにホストシステム4から与えられるデータが格納される。尚、第1の最先ブロックテーブルに登録されている物理ブロックが存在しない場合には、第2の最先ブロックテーブルを使用した検索(つまり、第2のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックの検索)が行われる。そして、この第2の最先ブロックテーブルを使用した検索により検出された物理ブロック(つまり、第2のグループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロック)に格納されているデータが、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロック(つまり、第3のグループに属する空きブロック)に転送される。このデータ転送の終了後、転送元の物理ブロック(第2の最先ブロックテーブルを使用した検索により検出された物理ブロック)が論理ブロックに割り当てられ、その転送元の物理ブロックにホストシステム4から与えられるデータが格納される。尚、第2の最先ブロックテーブルにも登録されている物理ブロックが存在しない場合には、このデータ転送は行われず、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロックがそのまま使用される。つまり、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロック(つまり、第3のグループに属する空きブロック)が論理ブロックに割り当てられ、その空きブロックにホストシステム4から与えられるデータが格納される。
次に、フラッシュメモリ2を構成する物理ブロックの消去回数の管理と先後管理のための優先順位管理の方法を、図7に示した例を参照して説明する。図7に示したテーブルには、PBAの順番で、各物理ブロックの優先順位リンク番号と消去回数が記載されている。このテーブルには、その物理ブロックより優先順位が1つ上の物理ブロックのPBAと、その物理ブロックより優先順位が1つ下の物理ブロックのPBAが、優先順位リンク番号として書き込まれる。従って、論理ブロックに割り当てられていない物理ブロックについては、優先順位リンク番号が消去される。また、優先順位が最上位の物理ブロックについては、その物理ブロックより優先順位が1つ上の物理ブロックのPBAが書き込まれておらず、優先順位が最下位の物理ブロックについては、その物理ブロックより優先順位が1つ下の物理ブロックのPBAが書き込まれていない。
このテーブルを参照することにより、例えば、PBA#0の物理ブロックの場合、その物理ブロックより優先順位が1つ上の物理ブロックはPBA#118であり、その物理ブロックより優先順位が1つ下の物理ブロックはPBA#572であることが分かる。
このテーブルには、各グループの優先順位が最上位の物理ブロックと最下位の物理ブロックのPBAも記載されている。従って、論理ブロックに新たに物理ブロックが割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、優先順位が最上位の物理ブロックを示すPBAの記載が変更される。また、優先順位が最下位の物理ブロックが有効なデータが格納されていない物理ブロックになったときや、優先順位が最下位の物理ブロックに格納されている全てのデータが別のブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、優先順位が最下位の物理ブロックを示すPBAの記載が変更される。
例えば、第1のグループに属するPBA#523の物理ブロックが、論理ブロックに新たに割り当てられた場合、第1のグループに属する優先順位が最上位の物理ブロックを示すPBAが、#36から#523に変更される。また、PBAが#36の物理ブロックの優先順位リンク番号として、優先順位が1つ上の物理ブロックを示すPBAである#523が記載される。PBAが#523の物理ブロックの優先順位リンク番号として、優先順位が1つ下の物理ブロックを示すPBAである#36が記載される。
各物理ブロックの消去回数は、各物理ブロックに格納されているデータが消去される毎に更新される。例えば、PBAが#0の物理ブロックに格納されているデータが消去された場合には、テーブルに記載されている消去回数が1000から1001に変更され、テーブルに記載されている優先順位リンク番号は消去される。また、PBA#118の物理ブロックより優先順位が1つ下の物理ブロックは、PBA#572の物理ブロックになるので、PBA#118の物理ブロックとPBA#572の物理ブロックの優先順位リンク番号が更新される。つまり、PBA#118の物理ブロックの優先順位リンク番号については、優先順位が1つ下の物理ブロックを示すPBAが#0から#572に変更される。また、PBA#572の物理ブロックの優先順位リンク番号については、優先順位が1つ上の物理ブロックを示すPBAが#0から#118に変更される。
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、上述の実施の形態では、物理ブロック単位で物理ブロックの消去回数の管理、先後管理及び空きブロックテーブルの管理を行っていたが、論理ブロックに対して複数個の物理ブロックで構成された仮想ブロックを割り当てる場合には、これらの管理を仮想ブロック単位で行うようにしてもよい。つまり、それぞれの仮想ブロックを構成する物理ブロックが初期設定等により決められている場合には、同じ仮想ブロックに属する物理ブロックの消去回数は同じなる。また、論理ブロックへの割り当てとデータの消去が仮想ブロック単位で行われるため、先後管理及び空きブロックテーブルの管理も仮想ブロック単位で行うことができる。先後管理を仮想ブロック単位で行う場合には、仮想ブロック単位で上述の優先順位を管理(つまり、優先順位リンク番号を仮想ブロックに付けた通し番号で管理)すればよい。空きブロックテーブルの管理を仮想ブロック単位で行う場合には、テーブル上の各ビットに仮想ブロックを割り当てる(つまり、1つのビットに1個の仮想ブロックを割り当てる)ようにすればよい。
また、第3の空きブロックテーブルを使用した空きブロックの検索により空きブロックが検出されたときに、第1の最先ブロックテーブル及び第2の最先ブロックテーブルのいずれのテーブルにも登録されている物理ブロックが存在しない場合には、第3の最先ブロックテーブルを使用した検索(つまり、第3グループに属する物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックの検索)が行われるようにしてもよい。そして、第3の最先ブロックテーブルを使用した検索により検出された物理ブロックの消去回数が、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロックの消去回数よりも所定回数以上少ない場合には、第3の最先ブロックテーブルを使用した検索により検出された物理ブロックに格納されているデータが、第3の空きブロックテーブルを使用した空きブロックの検索により検出された空きブロックに転送されるようにしてもよい。このようにすることにより、第3グループに属する物理ブロック間で消去回数の差が大きくなることが抑制される。
尚、物理ブロックの消去回数の管理、先後管理及び空きブロックテーブルの管理の方法については、上述の方法以外の方法であってもよい。例えば、先後管理は、最も先に論理ブロックに割り当てられた物理ブロックを特定することができれば、上述の優先順位による管理を用いなくてよい。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ

Claims (5)

  1. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理手段と、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理手段と、
    有効なデータが格納されていない物理ブロックである空きブロックを検索するための空きブロックテーブルを、物理ブロックの消去回数について設けられた1又は複数の閾値を基に定義された物理ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索手段と、
    前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索手段と、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
    前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備え、
    前記アクセス指示に応答して前記ブロック管理手段により物理ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索手段は消去回数の少ない物理ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方を優先的に用いて前記空きブロックの検索を行い、
    前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在しないときに、前記ブロック管理手段は前記空きブロック検索手段により検出された前記空きブロックを前記論理ブロックに割り当て、
    前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在するときに、前記最先ブロック検索手段は前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックを検索し、前記データ転送手段は前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送し、前記ブロック管理手段は前記最先ブロック検索手段により検出された前記最先ブロックを前記論理ブロックに割り当てる、
    メモリコントローラ。
  2. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
    前記仮想ブロック単位で消去回数を管理する消去回数管理手段と、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理手段と、
    有効なデータが格納されていない前記仮想ブロックである空きブロックを検索するための空きブロックテーブルを、前記仮想ブロックの消去回数について設けられた1又は複数の閾値を基に定義された前記仮想ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索手段と、
    前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索手段と、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
    前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備え、
    前記アクセス指示に応答して前記ブロック管理手段により前記仮想ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索手段は消去回数の少ない前記仮想ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方を優先的に用いて前記空きブロックの検索を行い、
    前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在しないときに、前記ブロック管理手段は前記空きブロック検索手段により検出された前記空きブロックを前記論理ブロックに割り当て、
    前記空きブロック検索手段により検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在するときに、前記最先ブロック検索手段は前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックを検索し、前記データ転送手段は前記最先ブロック検索手段により検出された前記最先ブロックに格納されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送し、前記ブロック管理手段は前記最先ブロック検索手段により検出された前記最先ブロックを前記論理ブロックに割り当てる、
    メモリコントローラ。
  3. 請求項1又は2に記載のメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリを備えるフラッシュメモリシステム。
  4. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
    有効なデータが格納されていない物理ブロックである空きブロックを検索するための空きブロックテーブルを、物理ブロックの消去回数について設けられた1又は複数の閾値を基に定義された物理ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索ステップと、
    前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索ステップと、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
    前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備え、
    前記アクセス指示に応答して前記ブロック管理ステップにより物理ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索ステップでは消去回数の少ない物理ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方が優先的に用いられる前記空きブロックの検索が行われ、
    前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在しないときに、前記ブロック管理ステップでは前記空きブロック検索ステップにより検出された前記空きブロックが前記論理ブロックに割り当てられ、
    前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する物理ブロックが存在するときに、前記最先ブロック検索ステップでは前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックが検索され、前記データ転送ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータが前記空きブロック検索ステップにより検出された前記空きブロックに転送され、前記ブロック管理ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックが前記論理ブロックに割り当てられるフラッシュメモリの制御方法。
  5. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
    前記仮想ブロック単位で消去回数を管理する消去回数管理ステップと、
    前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
    有効なデータが格納されていない前記仮想ブロックである空きブロックを検索するための空きブロックテーブルを、前記仮想ブロックの消去回数について設けられた1又は複数の閾値を基に定義された前記仮想ブロックのグループ毎に有し、それぞれの前記空きブロックテーブルを用いてそれぞれの前記グループに属する前記空きブロックを検索する空きブロック検索ステップと、
    前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを検索するための最先ブロックテーブルを前記グループ毎に有し、それぞれの前記最先ブロックテーブルを用いてそれぞれの前記グループに属する前記最先ブロックを検索する最先ブロック検索ステップと、
    前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
    前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備え、
    前記アクセス指示に応答して前記ブロック管理ステップにより前記仮想ブロックが前記論理ブロックに割り当てられるときに、前記空きブロック検索ステップでは消去回数の少ない前記仮想ブロックが属する側の前記グループである下位側の前記グループに対応する前記空きブロックテーブルの方が優先的に用いられる前記空きブロックの検索が行われ、
    前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在しないときに、前記ブロック管理ステップでは前記空きブロック検索ステップにより検出された前記空きブロックが前記論理ブロックに割り当てられ、
    前記空きブロック検索ステップにより検出された前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記仮想ブロックが存在する場合、前記最先ブロック検索ステップでは前記空きブロックが属する前記グループよりも下位側の前記グループに属する前記最先ブロックが検索され、前記データ転送ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックに格納されているデータが前記空きブロック検索ステップにより検出された前記空きブロックに転送され、前記ブロック管理ステップでは前記最先ブロック検索ステップにより検出された前記最先ブロックが前記論理ブロックに割り当てられるフラッシュメモリの制御方法。
JP2009027740A 2009-02-09 2009-02-09 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Active JP4666080B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009027740A JP4666080B2 (ja) 2009-02-09 2009-02-09 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US12/701,789 US8200891B2 (en) 2009-02-09 2010-02-08 Memory controller, memory system with memory controller, and method of controlling flash memory

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2010182266A true JP2010182266A (ja) 2010-08-19
JP4666080B2 JP4666080B2 (ja) 2011-04-06

Family

ID=42541320

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US8200891B2 (ja)
JP (1) JP4666080B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2014134998A (ja) * 2013-01-11 2014-07-24 Mitsubishi Electric Corp データ記録装置、及びデータ記録方法
JP2016507830A (ja) * 2013-02-22 2016-03-10 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. メモリ回収方法および装置
JP2018142237A (ja) * 2017-02-28 2018-09-13 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2018142236A (ja) * 2017-02-28 2018-09-13 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP2020205077A (ja) * 2020-08-31 2020-12-24 キオクシア株式会社 メモリシステムおよび制御方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
JP4987997B2 (ja) * 2010-02-26 2012-08-01 株式会社東芝 メモリシステム
JP5093294B2 (ja) * 2010-05-14 2012-12-12 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN102591793B (zh) * 2012-02-13 2014-12-03 山东华芯半导体有限公司 辅助上位机检索页映射单元块中空闲块的装置
US9201786B2 (en) 2012-12-21 2015-12-01 Kabushiki Kaisha Toshiba Memory controller and memory system
US10643700B2 (en) * 2015-10-29 2020-05-05 Micron Technology, Inc. Apparatuses and methods for adjusting write parameters based on a write count

Citations (4)

* 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 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP2002358233A (ja) * 2001-05-31 2002-12-13 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006504195A (ja) * 2002-10-28 2006-02-02 サンディスク コーポレイション 不揮発性記憶システムにおける摩耗一様化
JP2008146254A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
JP2007133683A (ja) * 2005-11-10 2007-05-31 Sony Corp メモリシステム
US8060718B2 (en) * 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US20080140918A1 (en) * 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
CN100538662C (zh) * 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
TWI389125B (zh) * 2008-07-18 2013-03-11 A Data Technology Co Ltd 記憶體儲存裝置及其控制方法
US8001318B1 (en) * 2008-10-28 2011-08-16 Netapp, Inc. Wear leveling for low-wear areas of low-latency random read memory
TWI375887B (en) * 2008-10-31 2012-11-01 A Data Technology Co Ltd Flash memory device with wear-leveling mechanism and controlling method thereof

Patent Citations (4)

* 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 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP2002358233A (ja) * 2001-05-31 2002-12-13 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006504195A (ja) * 2002-10-28 2006-02-02 サンディスク コーポレイション 不揮発性記憶システムにおける摩耗一様化
JP2008146254A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2014134998A (ja) * 2013-01-11 2014-07-24 Mitsubishi Electric Corp データ記録装置、及びデータ記録方法
JP2016507830A (ja) * 2013-02-22 2016-03-10 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. メモリ回収方法および装置
JP2018142237A (ja) * 2017-02-28 2018-09-13 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2018142236A (ja) * 2017-02-28 2018-09-13 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP2020205077A (ja) * 2020-08-31 2020-12-24 キオクシア株式会社 メモリシステムおよび制御方法
JP7132291B2 (ja) 2020-08-31 2022-09-06 キオクシア株式会社 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
US20100205356A1 (en) 2010-08-12
US8200891B2 (en) 2012-06-12
JP4666080B2 (ja) 2011-04-06

Similar Documents

Publication Publication Date Title
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8214579B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
US8219742B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5858081B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4821845B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952740B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582232B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4720891B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4821844B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010092200A (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: 20101214

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

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

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4666080

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150