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

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

Info

Publication number
JP2010250413A
JP2010250413A JP2009096802A JP2009096802A JP2010250413A JP 2010250413 A JP2010250413 A JP 2010250413A JP 2009096802 A JP2009096802 A JP 2009096802A JP 2009096802 A JP2009096802 A JP 2009096802A JP 2010250413 A JP2010250413 A JP 2010250413A
Authority
JP
Japan
Prior art keywords
block
physical
logical
physical block
information
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
JP2009096802A
Other languages
English (en)
Other versions
JP4952740B2 (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 JP2009096802A priority Critical patent/JP4952740B2/ja
Publication of JP2010250413A publication Critical patent/JP2010250413A/ja
Application granted granted Critical
Publication of JP4952740B2 publication Critical patent/JP4952740B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】殆ど書き換えが行われないデータが記憶されている物理ブロック(PB)が存在するときだけ、そのPBを含めたウェアー・レベリング制御が行われるようにする。
【解決手段】メモリコントローラ(CTL)は、PBに対する新たな論理ブロック(LB)の割り当てに基づいてカウンタのカウント値(CV)を更新し、そのカウント値を基に決定されるカウント情報(CI)を、新たなLBが割り当てられたPBに書き込む。また、CTLは、ホストシステムからLBAの指示を受ける。CTLは、CVと、指示されたLBAに基づき特定されるLBが割り当てられているPB内のCIとを基に、その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の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
前記カウント値に基づいて決定されるカウント情報を、新たに前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて判断する判断手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第2の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
前記カウント値に基づいて決定されるカウント情報を、新たに前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記カウント値と前記処理対象ブロックに書き込まれている前記カウント情報に基づいて判断する判断手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第3の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
前記テーブル保存ブロック管理手段により新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第4の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
前記テーブル保存ブロック管理手段により新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第5の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存手段と、
前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理手段と、
前記管理情報ブロック管理手段により新たな前記管理情報ブロックの割り当てが行われたときに、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第6の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存手段と、
前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理手段と、
前記管理情報ブロック管理手段により新たな前記管理情報ブロックの割り当てが行われたときに、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第7の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウント手段と
前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第8の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウント手段と
前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第9の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックを検索する手段であって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索手段と、
前記空きブロック検索手段で検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当て手段と、
前記空きブロック検索手段における所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第10の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記フラッシュメモリ内の消去状態の前記物理ブロックを検索する手段であって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索手段と、
前記空きブロック検索手段で検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当て手段と、
前記空きブロック検索手段における所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備える。
本発明の第11の側面に従うメモリコントローラでは、前記第1乃至第10の側面に従ういずれかにおいて、前記所定の前記論理ブロックを特定するための情報が、ホストシステムから与えられる情報に基づいて設定される。
本発明の第12の側面に従うフラッシュメモリシステムは、前記第1乃至第11のいずれかの側面に従うメモリコントローラと、前記メモリコントローラにより制御されるフラッシュメモリとを備える。
本発明の第13の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込みステップと、
前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウントステップと、
前記カウント値に基づいて決定されるカウント情報を、新たな前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記カウント値と前記処理対象ブロックに書き込まれている前記カウント情報に基づいて判断する判断ステップと、
前記判断ステップで肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備える。
本発明の第14の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当てステップと、
前記論理ブロック割り当てステップにより設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理ステップと、
前記アドレス変換テーブル管理ステップにより前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存ステップと、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理ステップと、
前記テーブル保存ブロック管理ステップにより新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定ステップと、
前記版数情報決定ステップにより決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込みステップと、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備える。
本発明の第15の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当てステップと、
前記論理ブロック割り当てステップにより設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理ステップと、
前記アドレス変換テーブル管理ステップにより前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存ステップと、
前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理ステップと、
前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存ステップと、
前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理ステップと、
前記管理情報ブロック管理ステップにより新たな前記管理情報ブロックの割り当てが行われたとき、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定ステップと、
前記版数情報決定ステップにより決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込みステップと、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備える。
本発明の第16の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消
去回数管理ステップと、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウントステップと
前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理ステップと、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込みステップと、
前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備える。
本発明の第17の側面に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記フラッシュメモリ内の消去状態の前記物理ブロックを検索するステップであって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索ステップと、
前記空きブロック検索ステップで検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当てステップと、
前記空きブロック検索ステップにおける所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理ステップと、
前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込みステップと、
所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備える。
本発明の第18の側面に従う方法では、前記第13乃至第17の側面のいずれかにおいて、ホストシステムから与えられる情報に基づいて前記所定の前記論理ブロックが設定される。
本発明によれば、論理ブロック単位で、それぞれの論理ブロックに対応するデータが記憶されている物理ブロックをウェアー・レベリング制御の対象とするか否かを適宜設定することができる。従って、ホストシステムから与えられるデータに、ウェアー・レベリング制御の対象としたいデータとウェアー・レベリング制御の対象としたくないデータが含まれている場合には、ウェアー・レベリング制御の対象としたいデータだけをウェアー・レベリング制御の対象として設定することができる。
本発明の一実施形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。 論理ブロックと物理ブロックの対応関係を示す図である。 物理ブロックに対して新たに論理ブロックが割り当てられた場合に行われる処理の説明図である。 書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合に行われるウェアー・レベリング制御の説明図である。 本発明の一実施形態で行われる処理の流れを示すフローチャートである。 テーブル管理情報及びアドレス変換テーブルとそれらの保存の仕方とを示す。 図7Aは、書替マークの変更規則を示す。図7Bは、物理ブロックに対して新たに論理ブロックが割り当てられた場合に行われる処理の説明図である。 書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合に行われるデータ転送処理の説明図である。 本発明の一実施形態で行われる処理の流れを示すフローチャートである。 図10Aは、書替マークが記憶されている物理ブロックと変更カウント値が記憶されている物理ブロックとが混在するフラッシュメモリを示す。図10Bは、書替マークが更新される第1の例に関する処理の流れを示す。 図11Aは、書替マークが記憶されている物理ブロックと切替カウント値が記憶されている物理ブロックとが混在するフラッシュメモリを示す。図11Bは、書替マークが更新される第2の例に関する処理の流れを示す。 図12Aは、書替マークが更新される第3の例に関する処理の流れを示す。図12Bは、書替マークが更新される第4の例に関する処理の流れを示す。
以下、本発明の幾つかの実施の形態を、図面を参照しながら詳細に説明する。
図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から与えられるデータを記憶するための領域であり、所定個数(例えば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個の論理ゾーンが構成され、複数個の物理ブロックで1個の物理ゾーンが構成され、論理ゾーンが物理ゾーンに対応付けられて管理されることが多い。
しかし、その場合、特定の論理ゾーンにアクセスが集中した場合、アクセスが集中した論理ゾーンに対応する物理ゾーンに含まれる物理ブロックの書き換え回数が、他の物理ゾーンに含まれる物理ブロックの書き換え回数よりも多くなってしまい好ましくない。
この問題を解決する方法としては、論理ブロックに付した通し番号である論理ブロック番号(LBN)が連続する論理ブロックを各論理ゾーンに振り分ける方法がある。
但し、特定の論理ブロックにアクセスが集中した場合(アクセスが集中する範囲が複数個の論理ブロックに跨っていない場合)には、その論理ブロックが含まれる論理ゾーンに対応する物理ゾーンに含まれる物理ブロックの書き換え回数が、他の物理ゾーンに含まれる物理ブロックの書き換え回数よりも多くなってしまう。このような場合は、各論理ゾーンに含まれる論理ブロックに対応させることができる物理ブロックを、制限しない方が好ましい。つまり、物理ゾーンを構成せずに、各論理ゾーンに含まれる論理ブロックをいずれの物理ブロックにも対応させることができるようにすることが好ましい。
また、論理ブロックと物理ブロックとの対応関係は、通常、論理ブロックと物理ブロックとの対応関係を記述したテーブルであるアドレス変換テーブルによって管理される。論理ブロックと物理ブロックの対応関係が変化したときには、ワークエリア(SRAM)8上で、アドレス変換テーブルの更新処理が行われる。アドレス変換テーブルは、一般に、起動時又はアクセス時に、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成されるが、フラッシュメモリ2に保存しておき、フラッシュメモリ2から読み出すこともできる。これにより、各物理ブロックの冗長領域から論理アドレス情報を読み出してアドレス変換テーブルを作成することに比べて、短時間で、アドレス変換テーブルを得ることができる。特に、上述のように物理ゾーンを構成せずに、各論理ゾーンに含まれる論理ブロックをいずれの物理ブロックにも対応させることができるようにする場合には、アドレス変換テーブルをフラッシュメモリ2に保存しておく方が好ましい。
また、アドレス変換テーブルをフラッシュメモリ2に保存する場合は、突然の電源遮断に対応するため、常に最新のアドレス変換テーブルがフラッシュメモリ2に保存されているようにすることが好ましい。つまり、論理ブロックと物理ブロックとの対応関係が変化する毎に(つまりワークエリア8上でアドレス変換テーブルが更新される都度に)、最新のアドレス変換テーブルをフラッシュメモリ2に保存するようにすることが好ましい。このアドレス変換テーブルをフラッシュメモリ2に保存するためにかかる時間を考慮すれば、論理ゾーン単位でアドレス変換テーブルを保存(管理)し、各論理ゾーンに含まれる論理ブロックの数を少なくする方が好ましい。
そこで、本実施形態では、図2に示すように、論理ゾーンは形成されるが、物理ゾーンは形成されない。そして、どの論理ゾーンであるかに関わらず、各論理ゾーンに対して、全範囲の物理ブロックが割り当てられている。従って、どの論理ブロックがどの物理ブロックに割り当てられても良い。
図2を参照して、論理ブロックと物理ブロックの対応関係を説明する。
本実施形態では、図2に示すように、LBA#0−#2047999からなる2048000個の論理セクタ領域が、8192個の物理ブロックからなるフラッシュメモリ2側の記憶領域に割り当てられている。
図2では、アドレス(LBA)が連続する256個の論理セクタ領域をまとめたものを論理ブロックとし、この論理ブロックに、前述したLBNが付されている。例えば、LBA#0−#255の256個の論理セクタ領域は、LBN#0の論理ブロックに属し、LBA#256−#511の256個の論理セクタ領域は、LBN#1の論理ブロックに属している。このように、LBA#0−#2047999の2048000個の論理セクタ領域は、LBN#0−#7999の8000個の論理ブロックのいずれかに属している。
更に、この論理ブロックを複数個まとめたものが論理ゾーンとされ、この論理ゾーンに、前述したLZNが付されている。図2では、LBNが連続する論理ブロックが異なる論理ゾーンに属するように、各論理ブロックが、LZN#0−#7の8個の論理ゾーンに対して順次振り分けられている。例えば、LBN#0の論理ブロックはLZN#0の論理ゾーンに、LBN#1の論理ブロックはLZN#1の論理ゾーンに、LBN#2の論理ブロックはLZN#2の論理ゾーンにという順番で、LZN#7の論理ゾーンまで、論理ブロックが振り分けられていく。以下、同様に、LBN#8の論理ブロックがLZN#0の論理ゾーンに、LBN#9の論理ブロックがLZN#1の論理ゾーンに、LBN#10の論理ブロックがLZN#2の論理ゾーンに振り分けられていく。このような振り分けが行われることにより、書き換え頻度の高い論理アクセス領域に対応する論理ブロックが特定の論理ゾーンに集中する確率を低くすることができる。従って、特定の論理ゾーンに対応したテーブル保存ブロックの変更頻度が、他の論理ゾーンに対応したテーブル保存ブロックの変更頻度よりも、著しく高くなってしまうことを抑制することができる。
フラッシュメモリ2は、例えば8192個の物理ブロックで構成されている。8192個の物理ブロックには、固有の物理ブロックアドレス(PBA)が付されている。フラッシュメモリ2には、出荷時から不良である先天性の不良物理ブロックが存在することがある。更に、フラッシュメモリ2には、出荷時に良品の物理ブロックであっても、使用開始後に劣化して不良ブロックになる物理ブロック(後天性の不良ブロック)が存在することもある。
さて、NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作は物理ブロック単位で行われる。データ消去動作は、論理アクセス領域が属する論理ブロック(以下、「書込み先論理ブロック」と言う)に対応した物理ブロックに記憶されているデータ又はそのデータに対応する最新データが別の物理ブロックに書き込まれ、その物理ブロックに記憶されているデータが全て別の物理ブロックに書き込まれたデータで置き換えられたときに行われる。すなわち、書込み先論理ブロックに対応した物理ブロックに記憶されているデータが、全て別の物理ブロックに書き込まれたデータで置き換えられた場合には、その物理ブロックに記憶されているデータが消去され、前述したアドレス変換テーブル(論理ブロックと物理ブロックとの対応関係を記述したテーブル)に記述されている論理ブロックと物理ブロックとの対応関係が更新される。また、書込み先論理ブロックを新たに割り当てる空きの物理ブロック(論理ブロックが未割当ての物理ブロック)を検索するときには、例えば、フラッシュメモリ2内の先頭の物理ブロックから末尾の物理ブロックへと順次に空きの物理ブロックの検索が行われる。そして、検出された空きの物理ブロックに、書込み先論理ブロックが割り当てられる。
以上のように、物理ブロックに記憶されているデータの書き換えが行われる場合には、その物理ブロックとは別の物理ブロック(空きの物理ブロック)に、その物理ブロックと対応する論理ブロックが新たに割り当てられることになる。また、書込み先論理ブロックに対応する物理ブロックがない場合にも、空きの物理ブロックに論理ブロックが新たに割り当てられることになる。
本実施の形態では、メモリコントローラ3に、物理ブロックに対して新たに論理ブロックを割り当てる毎にカウント値をカウントアップするカウンタ機能が設けられている。具体的には、例えば、マイクロプロセッサ6が、カウンタの役割を果たし、物理ブロックに対して新たに論理ブロックを割り当てる毎に、カウント値をカウントアップする。カウント値は、メモリコントローラ3内の記憶領域、例えばワークエリア6(SRAM等の揮発性メモリ)に記憶され、ワークエリア6に記憶されているカウント値がカウントアップされる。ワークエリア6に記憶されているカウント値は、適時に(例えば、所定回数カウント値が更新される都度に)、フラッシュメモリ2に複写される(書き込まれる)。メモリコントローラ3の電源が遮断された場合、ワークエリア6に記憶されているカウント値は消去されるが、メモリコントローラ3の電源が投入された場合に、フラッシュメモリ2に記憶されているカウント値がワークエリア6に読み出され、以後、その読み出されたカウント値が、カウントアップされる。なお、カウント値は、カウントアップに限らず、カウントダウンなど他の規則に従って更新されても良い。また、カウント値の更新が行われるタイミングは、本実施の形態では、物理ブロックに対して新たに論理ブロックを割り当てる毎であるが、それに限らず、他のタイミング、例えば、物理ブロックの記憶データの消去が行われるタイミングであっても良い。また、メモリコントローラ3が、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetic Random Access Memory)等の不揮発性RAMからなる記憶領域を有し、この記憶領域にカウント値を保持するようにしてもよい。このような不揮発性RAMにカウント値が保持されるようにした場合、不揮発性RAM上でカウント値を更新することができ、カウント値をフラッシュメモリ2に複写する必要がなくなる。
物理ブロックに対して新たに論理ブロックが割り当てられた場合、新たに論理ブロックが割り当てられた物理ブロックの冗長領域に、その新たに割り当てられた論理ブロックを示す論理アドレス情報と、カウントアップ前のカウント値(カウントアップ後のカウント値でも良い)に基づくカウント情報とが書き込まれる。具体的には、例えば、図3に示すように、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105に、論理アドレス情報として、割り当てられた論理ブロックを示すLBNが書き込まれ、カウント情報として、カウントアップ前の4バイトのカウント値の上位3バイトの部分が書き込まれる。
より具体的に言えば、図3に示す例によれば、(3A)に示すように、カウント値(16進数表示)が、“00 00 3F FAh”の場合において、空きの物理ブロックとして検出されたPBA#7の物理ブロックに、LBN#40の論理ブロックが新たに割り当てられると、そのPBA#7の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN“#40”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 3Fh”が書き込まれる。そして、カウント値(16進数表示)が、“00 00 3F FAh”から“00 00 3F FBh”にカウントアップされる。
次に、例えば、(3B)に示すように、空きの物理ブロックとして検出されたPBA#12の物理ブロックに、LBN#41の論理ブロックが新たに割り当てられると、そのPBA#12の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN“#41”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 3Fh”が書き込まれる。そして、カウント値が、“00 00 3F FBh”から“00 00 3F FCh”にカウントアップされる。
以後も、同様にして、新たに論理ブロックが物理ブロックに割り当てられる毎に、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105に、その割り当てられた論理ブロックのLBNと、カウントアップ前のカウント値の上位3バイトであるカウント情報とが書き込まれ、カウント値がカウントアップされる。例えば、(3C)に示すように、PBA#18の物理ブロックにLBN#42の論理ブロックが割り当てられた場合、PBA#18の物理ブロックの冗長領域105に、LBN“#42”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FCh”から“00 00 3F FDh”にカウントアップされる。その次に、(3D)に示すように、PBA#22の物理ブロックにLBN#43の論理ブロックが割り当てられた場合、PBA#22の物理ブロックの冗長領域105に、LBN“#43”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FDh”から“00 00 3F FEh”にカウントアップされる。その次に、(3E)に示すように、PBA#27の物理ブロックにLBN#44の論理ブロックが割り当てられた場合、PBA#27の物理ブロックの冗長領域105に、LBN“#44”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FEh”から“00 00 3F FFh”にカウントアップされる。その次に、(3F)に示すように、PBA#31の物理ブロックの物理ブロックにLBN#45の論理ブロックが割り当てられた場合、PBA#31の物理ブロックの冗長領域105に、LBN“#45”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FFh”から“00 00 40 00h”にカウントアップされる。
尚、新たに論理ブロックが割り当てられる物理ブロックを検索するための空きブロック検索は、物理ゾーン内の物理ブロック又はホストシステムの記憶領域として用いられる全ての物理ブロックを対象にして行われる。物理ゾーン内の物理ブロックを対象とした検索の場合、物理ゾーン内の先頭の物理ブロックから末尾の物理ブロックに向かって、順次、空きブロックの検索が行われる。ホストシステムの記憶領域として用いられる全ての物理ブロックを対象とした検索の場合、それら全ての物理ブロックについて先頭の物理ブロックから末尾の物理ブロックに向かって、順次、空きブロックの検索が行われる。このように、検索対象の範囲に含まれる物理ブロックについて、先頭の物理ブロックから末尾の物理ブロックに向かう順番の空きブロックの検索が繰り返し行われることにより、殆ど書き換えが行われないデータ(書き換え頻度が低いデータ)が記憶されている物理ブロックがなければ、検索対象の範囲に含まれる物理ブロックの書き換え回数は、ほぼ均等になることが期待される。
以上の説明によれば、データの書き換え(又は書き込み)を行う過程で、例えば、物理ブロックに対して8192個の論理ブロックの割り当てが新たに行われると、カウント値は、0(16進数表示:00 00 00 00h)から8192(16進数表示:00 00 20 00h)までカウントアップされる。また、各物理ブロックに対して新たな論理ブロックが割り当てられたときに、各物理ブロックの冗長領域105に、カウント値の上位3バイトがカウント情報として書き込まれる。従って、各物理ブロックの冗長領域105には、“00 00 00h”から“00 00 1Fh”までのいずれかの値がカウント情報として書き込まれている。
その後、更に8192個の論理ブロックの割り当てが新たに行われた場合、カウント値は、8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までカウントアップされる。この期間に、新たな論理ブロックが割り当てられた物理ブロックの冗長領域105には、“00 00 20h”から“00 00 3Fh”までのいずれかの値がカウント情報として書き込まれている。
ここで、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックについては、カウント値が8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までカウントアップされる期間に、新たな論理ブロックが割り当てられていないことが分かる。なぜなら、その期間に新たな論理ブロックが割り当てられた物理ブロックの冗長領域105には、カウント情報として“00 00 20”から“00 00 3F”までのいずれかの値がカウント情報として書き込まれ、“00 00 1Fh”以下の値のカウント情報が書き込まれることは無いためである。また、物理ブロックの総数を、1024個と仮定した場合(図2の例では、8192個であるが、ここでは以降の説明を分かり易くするために、物理ブロックの総数を1024個とする)、この期間中に少なくとも8回(8192÷1024)新たな論理ブロックが割り当てられた物理ブロックが存在することになる。
本実施の形態では、例えば、カウント値が16384(16進数表示:00 00 40 00h)にカウントアップされたときに、書き換え頻度の低いデータが記憶されている物理ブロックとして、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックの検索が行われる(例えば、先頭の物理ブロックから末尾の物理ブロックにかけて順次にそのような物理ブロックが検索される)。そして、そのような物理ブロックが検出された場合に、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。具体的には、その検出された物理ブロック(以下、「転送元の物理ブロック」と言う)に記憶されているデータの転送先となる物理ブロック(以下、「転送先の物理ブロック」と言う)を探す空きブロック検索が行われる。この検索で検出された空きブロック(転送先の物理ブロック)に対して、転送元の物理ブロックに割り当てられている論理ブロックが新たに割り当てられ、この転送先の物理ブロックに、転送元の物理ブロックに記憶されているデータが転送(複写)される。そして、この転送先の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN(転送元の物理ブロックに割り当てられている論理ブロックのLBN)と、カウントアップ前のカウント値の上位3バイトであるカウント情報とが書き込まれる。その後、転送元の物理ブロックに記憶されているデータと、その物理ブロックの冗長領域105に記憶されているLBN及びカウント情報等の付加データとが消去される。つまり、転送元の物理ブロックのユーザ領域に記憶されているデータと冗長領域に記憶されている付加データが一括して消去される。また、物理ブロックに対して新たに論理ブロックが割り当てられたため、カウント値がカウントアップされる。以下、図4を参照して具体的に説明する。
カウント値が16384(16進数表示:00 00 40 00h)にカウントアップされた場合に、“00 00 1Fh”以下の値を表すカウント情報が記憶されている物理ブロックの検索が行われる。この検索により、まず、“00 00 1Ah”を記憶しているPBA#6の物理ブロックが検出される。この場合、そのPBA#6の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#34の物理ブロックに複写され、且つ、そのPBA#34の物理ブロックの冗長領域105に、PBA#6の物理ブロックに割り当てられていた論理ブロックのLBN“#6”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4D)参照)。その後、PBA#6の物理ブロックに記憶されているデータと、そのPBA#6の物理ブロックの冗長領域105に記憶されているLBN“#6”及びカウント情報“00 00 1Ah”等の付加データとが消去される((4A)参照)。また、カウント値が、“00 00 40 00h”から“00 00 40 01h”にカウントアップされる。
次に、“00 00 10h”を記憶しているPBA#15の物理ブロックが検出される。この場合、そのPBA#15の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#35の物理ブロックに複写され、且つ、そのPBA#35の物理ブロックの冗長領域105に、PBA#15の物理ブロックに割り当てられていた論理ブロックのLBN“#15”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4E)参照)。その後、PBA#15の物理ブロックに記憶されているデータと、そのPBA#15の物理ブロックの冗長領域105に記憶されているLBN“#15”及びカウント情報“00 00 10h”等の付加データとが消去される((4B)参照)。また、カウント値が、“00 00 40 01h”から“00 00 40 02h”にカウントアップされる。
次に、“00 00 0Fh”を記憶しているPBA#16の物理ブロックが検出される。この場合、そのPBA#16の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#36の物理ブロックに複写され、且つ、そのPBA#36の物理ブロックの冗長領域105に、PBA#16の物理ブロックに割り当てられていた論理ブロックのLBN“#16”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4F)参照)。その後、PBA#16の物理ブロックに記憶されているデータと、そのPBA#16の物理ブロックの冗長領域105に記憶されているLBN“#16”及びカウント情報“00 00 0Fh”等の付加データとが消去される((4C)参照)。また、カウント値が、“00 00 40 02h”から“00 00 40 03h”にカウントアップされる。
以上により、カウント値が8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までの期間に新たな論理ブロックが割り当てられていない物理ブロック、つまり、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックが、書き込み頻度の低い物理ブロックとみなされて、その物理ブロックを含めたウェアー・レベリング制御が行われことになる。言い換えれば、現在のカウント値における上位3バイト(つまりカウント情報に相当する部分)である“00 00 40”との差が所定値以上であるカウント情報(“00 00 1Fh”以下の値を示すカウント情報)が記憶されている物理ブロックが、書き込み頻度の低い物理ブロックとみなされる。尚、この書き込み頻度の低い物理ブロックの検索処理と、この検索処理で検出された物理ブロックに記憶されているデータを別の物理ブロックに複写するデータ転送処理は、必ずしもカウント値が16384(16進数表示:00 00 40 00h)に達した直後に開始する必要はなく、カウント値が16384(16進数表示:00 00 40 00h)に達した後のアイドル時間(例えばホストシステム4からのアクセスが無い期間)に行われてもよい。また、これらの処理の実行中にホストシステム4からのアクセスがあったときは、一旦、処理が中止され、その後、再度アイドル時間が発生したときに処理が再開されてもよい。
この後、更にカウント値が16384(16進数表示:00 00 40 00h)から24576(16進数表示:00 00 60 00h)までカウントアップされたときには、“00 00 3Fh”以下の値がカウント情報として書き込まれている物理ブロックの検索が行われる。そのような物理ブロックが検出された場合には、その物理ブロックに記憶されているデータが別の物理ブロックに複写(転送)される。
このように、書き換えが頻繁に行われていない物理ブロックの検索は、物理ブロックの総数(例えば1024)に所定数(例えば、8)を乗じて得られた個数分(例えば8192個分)の新たな論理ブロックの割り当てが行われる毎に実行されることが好ましい。つまり、物理ブロックの総数をn(nは1以上の整数)、所定数k(kは1以上の整数)とした場合、カウント値がn×k増加する毎に、書き換えが頻繁に行われていない物理ブロックの検索が行われる。この検索では、カウント値がn×k増加する期間に新たな物理ブロックが割り当てられなかった物理ブロックの検索が行われ、この検索で検出された物理ブロックが書き換え頻度の低いデータが記憶されている物理ブロックとみなされる。そして、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。
尚、書き換え頻度の低いデータが記憶されている物理ブロックとみなされた物理ブロックは、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)された後に記憶データが消去され、空きの物理ブロックとされる。空きとされた物理ブロックは、それまでの書き換え回数が少ない可能性があるが、空きブロックになったことにより、この後の書き換え回数が多くなる可能性が高くなる。逆に、データの複写先となった物理ブロックは、それまでの書き換え回数が多い可能性があるが、書き換え頻度の低いデータが複写されたことにより、この後の書き換え回数が少なくなる可能性が高くなる。このような原理により、フラッシュメモリ2における複数の物理ブロックの書き換え回数が均等化されることが期待できる。
なお、フラッシュメモリ内の物理ブロックの総数は、フラッシュメモリ2に書き込まれているID情報(フラッシュメモリ2の構成に関する情報)に基づいて求めることができる。具体的には、例えば、ID情報には、フラッシュメモリ2全体の記憶容量を示す情報と、ブロックサイズ(1個の物理ブロックの記憶容量)を示す情報とが含まれており、それ故、フラッシュメモリ2全体の記憶容量とブロックサイズとから物理ブロックの総数を計算することができる。また、カウント情報は、カウント値の全てのビットであっても一部のビットであってもよいが、所定の期間(カウント値が所定値分増加するまでの期間)書き換えられていない物理ブロックを判別できる情報でなければならない。この判別ができる範囲でカウント値の一部のビットがカウント情報とされるときは、冗長領域の記憶容量と、冗長領域に書き込まれるカウント情報以外の情報の容量とを考慮してカウント情報のビット数が決定されても良い。
以下、本実施の形態で行われる処理の流れの概要を、図5を参照して説明する。
本実施の形態に係るウェアー・レベリング制御を行う場合には、まず、初期設定が行われる(ステップ101)。具体的には、例えば、メモリコントローラ3が、ID情報をフラッシュメモリ2から読出し、そのID情報から把握されるフラッシュメモリ2全体の記憶容量とブロックサイズとを基に、物理ブロックの総数nを算出する。更に、算出されたnと上記所定数kに基づいてカウント値がn×k増加する毎に、上記検索処理と上記データ転送処理を実行することが決定される。また、カウンタのカウント値が0に設定される。なお、所定数kは、予め決められていても良いし、物理ブロックの総数nに基づいて決定されても良い。また、カウント値の上位何バイトをカウント情報として用いるかは、予め決められていても良いし、物理ブロックの総数nに基づいて決定されても良い。ここでは、カウント値の上位3バイトがカウント情報として用いられる。
初期設定の後、メモリコントローラ3は、ホストシステム4から書込みコマンドを受信した場合、その書込みコマンドで指定された論理アクセス領域が属する論理ブロックに対応させる物理ブロックを新たに設定する必要があるかどうかを判断する(ステップ102)。その必要がある場合は(ステップ102でYES)、メモリコントローラ3によって、空きブロックの検索が行われ、検出された空きブロックに書込みコマンドで指定された論理アクセス領域が属する論理ブロックが割り当てられる(ステップ103)。具体的には、検出された空きブロック(物理ブロック)の冗長領域105に、書込みコマンドで指定された論理アクセス領域が属する論理ブロックのLBNと、カウンタのカウント値の上位3バイトであるカウント情報とが書き込まれ、その後、カウンタのカウント値がカウントアップされる。
ステップ103でカウントアップされたカウンタのカウント値が、(n×k)の倍数であるか否かが判定される(ステップ104)。(n×k)の倍数とは、前述の例(n=1024、k=8)で言えば、8192、16384、24576、…である。
カウントアップ後のカウント値が(n×k)の倍数であるとの判定結果であれば(ステップ104でYES)、書き換え頻度の低いデータが記憶されている物理ブロックの検索処理が行われ、書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合には、検出された物理ブロックに記憶されているデータを別の物理ブロックに複写するデータ転送処理が行われる(ステップ105)。具体的には、カウンタのカウント値が(n×k)の倍数に達したときに、カウント値が(n×k)増加した期間内に論理ブロックが新たに割り当てられていない物理ブロックが検索される。つまり、カウンタのカウント値が(n×k)の倍数に達したときに、そのカウント値から(n×k)の値を引いた値よりも小さい値に対応するカウント情報が書き込まれている物理ブロックの検索が行われる。そして、これに該当する物理ブロックが検出された場合には、検出された物理ブロックの記憶されているデータが別の物理ブロックに転送された後、検出された物理ブロックの記憶データが消去される。
ステップ105では、書き換え頻度の低いデータが記憶されている物理ブロックが検出されなければ、データ転送処理は行われないが、書き換え頻度の低いデータが記憶されている物理ブロックが検出されば、データ転送処理が行われる。つまり、書き換え頻度の低いデータが記憶されている物理ブロックが存在するときだけ、その物理ブロックに記憶されている書き換え頻度の低いデータを別の物理ブロックに複写するデータ転送処理が行われる。
以上が、本実施形態についての説明である。
本実施形態によれば、メモリコントローラ3に、物理ブロックに対して新たに論理ブロックが割り当てられる毎にカウント値をカウントアップするカウンタ機能が設けられる。そして、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105には、カウンタ機能によって管理されているカウント値に基づくカウント情報が書き込まれる。そして、物理ブロックの冗長領域105にカウント情報が書き込まれた後に、カウント値がカウントアップされる。
更に、所定のタイミングで(前述の例では、カウント値がn×k増加する毎に)、書き換え頻度が低いデータが記憶されている物理ブロックの検索が行われる。この検索処理では、カウンタ機能によって管理されているカウント値のカウント情報を示す部分(つまり上位3バイト)の値との差が所定値以上である値を示すカウント情報が記憶されている物理ブロックが、書き換え頻度が低いデータが記憶されている物理ブロックとみなされ、それに該当する物理ブロックの検索が行われる。そして、そのような物理ブロックが検出された場合にのみ、検出された物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。つまり、本実施形態によれば、書き換え頻度が低いデータが記憶されている物理ブロックが存在するときだけ、その物理ブロックを含めたウェアー・レベリング制御が行われる。
また、本実施形態によれば、どんな場合に書き換え頻度が低いデータが記憶されている物理ブロックを検索するかという条件の設定は、フラッシュメモリ2から読み出されたID情報に基づき算出された物理ブロック総数nに基づいて自動的に行われるため、ユーザによる条件設定は不要である。
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については、説明を省略或いは簡略する。
本実施形態では、アドレス変換テーブルが、図6に示すように、論理ゾーン毎に用意される。各アドレス変換テーブルは、対応する論理ゾーンを構成する各論理ブロックについてのみ、どの論理ブロックがどの物理ブロックに対応しているかを管理する。図6では、参照符号103−0は、論理ゾーンに付した通し番号である論理ゾーン番号(LZN)が#0である論理ゾーンに対応したアドレス変換テーブルであり、参照符号103−1は、LZNが#1である論理ゾーンに対応したアドレス変換テーブルである。各アドレス変換テーブル(103−0及び103−1)には、対応する論理ゾーンを構成する各論理ブロックについてのみ、論理ブロックのLBNと、その論理ブロックが割り当てられている物理ブロックの物理ブロックアドレス(PBA)とが記録される。このため、それぞれのアドレス変換テーブル(論理ゾーン毎のアドレス変換テーブル)のサイズは、全ての論理ブロックを一つのアドレス変換テーブルで管理する場合に比べて小さい。論理ゾーン毎のアドレス変換テーブルは、異なる物理ブロックに保存される。言い換えれば、二以上の論理ゾーンに対応する二以上のアドレス変換テーブルが、同時に同一の物理ブロックに保存されることはない。例えば、LZN#0の論理ゾーンに対応したアドレス変換テーブル103−0は、PBA#5の物理ブロックに保存され、LZN#1の論理ゾーンに対応したアドレス変換テーブル103−1は、PBA#1076の物理ブロックに保存される。以下、アドレス変換テーブルの保存先の物理ブロックを、「テーブル保存ブロック」と言う。アドレス変換テーブルは、ワークエリア8上で更新される都度に、図6に示すように、テーブル保存ブロックである物理ブロック内の領域(一以上の空きの物理ページ又は物理ページ内の空き領域)に保存される。例えば、論理ゾーン毎のアドレス変換テーブルを、1つの物理ページに保存できるサイズに設定し、アドレス変換テーブルが更新される毎に先頭の物理ページから順番にアドレス変換テーブルを保存していった場合、テーブル保存ブロックには64個のアドレス変換テーブルを保存することができる。このテーブル保存ブロックに64個のアドレス変換テーブルが保存され、アドレス変換テーブルを保存可能な空きの領域が存在しない場合には、別の物理ブロックがテーブル保存ブロックとして割り当てられる。図6に示すように、LZN#1の論理ゾーンに対応したアドレス変換テーブルのテーブル保存ブロックであるPBA#1076の物理ブロックの最後尾の物理ページ#63までアドレス変換テーブル103−1が保存されている場合、PBA#1076の物理ブロック内にはアドレス変換テーブルを保存するための空きの領域が存在しない。従って、この後に、アドレス変換テーブル103−1が更新されたならば、アドレス変換テーブル103−1のテーブル保存ブロックとして、別の物理ブロック(空きの物理ブロック)が割り当てられ、その別の物理ブロックに、更新後のアドレス変換テーブル103−1が保存される。以下、このような、テーブル保存ブロックとして別の物理ブロックが割り当てられる処理を、「テーブル保存ブロックの変更」と言う。
また、本実施形態では、メモリコントローラ3が、どの論理ゾーンに対応したアドレス変換テーブルがどの物理ブロックに保存されているかを示す情報(以下、「テーブル管理情報」と言う)を管理している。図6に示した例では、テーブル管理情報101に、各論理ゾーンのLZNと、そのLZNの論理ゾーンに対応したアドレス変換テーブルのテーブル保存ブロックのPBAとの対応関係が判別できる情報が含まれている。このテーブル管理情報101を参照することにより、例えば、LZN#0の論理ゾーンに対応したアドレス変換テーブル103−0のテーブル保存ブロックが、PBA#5の物理ブロックであることや、LZN#1の論理ゾーンに対応したアドレス変換テーブル103−1のテーブル保存ブロックが、PBA#1076の物理ブロックであることがわかる。テーブル管理情報101は、予め設定されている2個以上のテーブル管理情報用の物理ブロック(以下、「管理情報ブロック候補」と言う)のうちのいずれかの物理ブロックに保存される。この例では、PBA#0とPBA#1の物理ブロック(つまり2個の物理ブロック)が、管理情報ブロック候補として設定されている。従って、テーブル管理情報は、PBA#0又はPBA#1のいずれかの物理ブロックに保存される。以下、この管理情報ブロック候補(PBA#0とPBA#1の物理ブロック)から選択された、テーブル管理情報の保存先の物理ブロックを、「管理情報ブロック」と言う。テーブル管理情報101は、いずれかの論理ゾーンに対応したアドレス変換テーブルのテーブル保存ブロックが変更されたときに、ワークエリア8上で更新される。テーブル管理情報101は、ワークエリア8上で更新される都度に、管理情報ブロックである物理ブロック(例えばPBA#0の物理ブロック)内の空き領域(一以上の空きの物理ページ又は物理ページ内の空き領域)に保存される。その物理ブロックに、テーブル管理情報を保存可能な空き領域が存在しない場合には、2個の管理情報ブロック候補のうちの別の物理ブロック(例えばPBA#1の物理ブロック)が、管理情報ブロックとして割り当てられる。つまり、予め定められた2個の物理ブロックが、交互に、管理情報ブロックとして使用される。以下、この処理を、「管理情報ブロックの切替え」と言う。
本実施の形態では、論理ブロックが新たに物理ブロックに割り当てられたときに、その物理ブロックの冗長領域に、その新たに割り当てられた論理ブロックを示す論理アドレス情報に加えて、書替マークが書き込まれる。本実施形態で言う「書替マーク」とは、論理ブロックが新たに物理ブロックに割り当てられることに関連した処理の結果が所定の条件に合致したときに更新される版数情報である。「論理ブロックが新たに物理ブロックに割り当てられることに関連した処理」と「所定の条件」については、後に幾つかの例を詳細に説明する。
書替マークは、所定の順序で循環する少なくとも3種類の情報である。つまり、この書替マークは、所定の順序で更新され(遷移し)、最終の書替マークになった後は、最初の書替マークに更新される(戻る)。例えば、図7Aに示すように、所定の条件に合致する毎に、メモリコントローラ3によって、書替マークが、第1の書替マーク“55”、第2の書替マーク“5A”、第3の書替マーク“A5”、第4の書替マーク“AA”という順番で更新され、第4の書替マーク“AA”の次は、第1の書替マークに更新される。
以下、図7Aを参照して説明した規則で書替マークが更新されることを例に採り、図7B及び図8を参照して、本実施形態で行われる処理を説明する。その際、書替マークが第1の書替マーク“55”であった期間を、「第1の期間」と言い、書替マークが第2の書替マーク“5A”であった期間を「第2の期間」、と言い、書替マークが第3の書替マーク“A5”であった期間を「第3の期間」と言い、書替マークが第4の書替マーク“AA”であった期間を「第4の期間」と言う。書替マークが循環するので、期間も循環する。
第1の書替マーク“55”が書き込まれている物理ブロックは、第1の期間に論理ブロックが新たに割り当てられた物理ブロックであり、第2の書替マーク“5A”が書き込まれている物理ブロックは、第2の期間に論理ブロックが新たに割り当てられた物理ブロックであり、第3の書替マーク“A5”が書き込まれている物理ブロックは、第3の期間に論理ブロックが新たに割り当てられた物理ブロックであり、第4の書替マーク“AA”が書き込まれている物理ブロックは、第4の期間に論理ブロックが新たに割り当てられた物理ブロックである。
具体的には、例えば、図7Bにおいて、(4A)に示すように、空きの物理ブロックとして検出されたPBA#12の物理ブロックに、LBN#41の論理ブロックが新たに割り当てられたとき、そのときは第1の期間内であるため、そのPBA#12の物理ブロックの冗長領域105には、新たに割り当てられた論理ブロックのLBN“#41”と、第1の書替マーク“55h”が書き込まれる。
次に、(4B)に示すように、空きの物理ブロックとして検出されたPBA#18の物理ブロックに、LBN#42の論理ブロックが新たに割り当てられたとき、そのときも第1の期間内であるため、そのPBA#18の物理ブロックの冗長領域105には、新たに割り当てられた論理ブロックのLBN“#42”と、第1の書替マーク“55h”が書き込まれる。
その後、(4C)及び(4D)に示すように、新たに論理ブロックが物理ブロックに割り当てられるが、いずれのときも、第1の期間内であるため、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105には、新たに割り当てられた論理ブロックのLBNと、第1の書替マーク“55h”が書き込まれる。
ここで、(4D)のとき、すなわち、新たにLBA#44の論理ブロックがPBA#27物理ブロックに割り当てられたとき、その割り当てに関連した処理の結果が所定の条件に合致したとする。この場合、書替マークが、第1の書替マーク“55”から第2の書替マーク“5A”に更新される。この時点で、第1の期間が終了し、第2の期間が開始する。
従って、その後、例えば(4E)に示すように、空きの物理ブロックとして検出されたPBA#31の物理ブロックに、LBN#45の論理ブロックが新たに割り当てられたとき、そのときは第2の期間内であるので、そのPBA#31の物理ブロックの冗長領域105には、新たに割り当てられた論理ブロックのLBN“#45”と、第2の書替マーク“5Ah”が書き込まれる。
以上のように、どの期間内で、新たに論理ブロックが物理ブロックに割り当てられたかによって、物理ブロックの冗長領域に書き込まれる書替マークが異なる。
尚、新たに論理ブロックが割り当てられる物理ブロックを検索するための空きブロック検索は、ホストシステム4の記憶領域として用いられる全ての物理ブロックを対象にして行われる。その際、それら全ての物理ブロックについて先頭の物理ブロックから末尾の物理ブロックに向かって、順次、空きブロックの検索が行われる。このように、検索対象の範囲に含まれる物理ブロックについて、先頭の物理ブロックから末尾の物理ブロックに向かう順番の空きブロックの検索が繰り返し行われることにより、殆ど書き換えが行われないデータ(書き換え頻度が低いデータ)が記憶されている物理ブロックがなければ、検索対象の範囲に含まれる物理ブロックの書き換え回数は、ほぼ均等になることが期待される。
さて、メモリコントローラ3は、所定のタイミングで(例えば、書替マークを更新したときに)、少なくとも1期間より長く書き替え(記憶されているデータを一旦消去した後の書込み)が行われていない物理ブロック、言い換えれば、現在割り当てられている論理ブロックの割り当てが行われてから少なくとも1期間よりも長い期間の経過した物理ブロックが検索される。
例えば、1期間より長く書き替えが行われていない物理ブロックが検索される。この場合、現在の期間よりも2期間以上前の期間に対応する書替マークが記憶されている物理ブロックが検索される。図8に示すように、現在の書替マークが第2の書替マーク“5Ah”であれば、現在は第2の期間である。故に、第4の書替マーク“AAh”又は第3の書替マーク“A5”が記憶されている物理ブロックは、この第2の期間より1期間前である第1の期間において、データの書き替えが行われていない物理ブロックである。従って、現在の書替マークが第2の書替マーク“5Ah”であれば、第1の書替マーク“55”よりも順番が前である第4の書替マーク“AAh”又は第3の書替マーク“A5”が記憶されている物理ブロックが検索される。つまり、図8の例で言えば、1期間より長く書き替えが行われていない物理ブロックとして、PBA#6、#15及び#16の物理ブロックが検出される。
本実施形態では、1期間より長く書き換えが行われていない物理ブロックが、書き換え頻度の低いデータが記憶されている物理ブロックとみなされる。このような物理ブロックが検出されたときには、メモリコントローラ3は、空きブロック検索を行って別の物理ブロック(空きブロック)を検出し、書き換え頻度の低いデータが記憶されているとみなされた物理ブロックに記憶されているデータを、その別の物理ブロックに転送(複写)する。更に、メモリコントローラ3は、その別の物理ブロックに、現在の書替マークを書込む。具体的には、例えば、図8の(5A)、(5B)及び(5C)に示すように、検出されたPBA#6、#15及び#16の物理ブロックに記憶されているデータが、空きブロック検索により検出されたPBA#32、#33及び#34の物理ブロックにそれぞれ転送(複写)される。また、冗長領域105には、論理アドレス情報としてLBN#6、#15及び#16が書き込まれ、書替マークとして現在の書替マークである第2の書替マーク“5Ah”が、PBA#32、#33及び#34が書き込まれる。
この転送処理が終了した後に、転送元の物理ブロックに記憶されているデータ消去される。具体的には、PBA#6、#15及び#16の物理ブロックに記憶されているデータを消去することを指示する内部コマンドが、メモリコントローラ3からフラッシュメモリ2に順次与えられ、この内部コマンドに応答してフラッシュメモリ2は、PBA#6、#15及び#16の物理ブロックに記憶されているデータを消去する。
尚、書き換え頻度の低いデータが記憶されている物理ブロックとみなす基準、つまり、何期間より長く書き換えが行われていない物理ブロックを書き換え頻度の低いデータが記憶されている物理ブロックとみなすかは、書替マークが一巡するまでの期間の数(及び/又は、一期間の長さ)などを考慮して、適宜設定することができる。
また、書替マークが一巡するまでの期間の数が少ない場合には、書替マークを更新したときに、変更後の書替マークと同じ書替マークを、一巡前の期間で書き込んだ物理ブロックが残っていることのないように注意する必要がある。具体的には、メモリコントローラ3は、1期間より長く書き換えが行われていない物理ブロックを検索する処理や、検出された物理ブロックに記憶されているデータを別の物理ブロックに転送(複写)する処理を、次に書替マークの更新が行われるときまでに全て終了させる必要がある。メモリコントローラ3は、この管理を確実に行うために、1期間より長く書き換えが行われていない物理ブロックが無くなるまでは、書き換え頻度の低いデータが記憶されている物理ブロックに記憶されているデータの転送処理を優先し、ホストシステム4からのコマンドを受け付けないようにしてもよい。
また、現在の書替マークは、例えば、メモリコントローラ3内の記憶領域、例えばワークエリア8(SRAM等の揮発性メモリ)に記憶される。ワークエリア8に記憶されている書替マークは、適時に、フラッシュメモリ2に複写される(書き込まれる)。電源が遮断されると、ワークエリア8に記憶されている書替マークは消去されるが、電源が投入されたときに、フラッシュメモリ2に記憶されている書替マークがワークエリア8に読み出され、以後、その書替マークが、現在の書替マークとして用いられる。メモリコントローラ3内に、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetic Random Access Memory)等の不揮発性RAMからなる記憶領域を設け、この記憶領域に書替マークを保持するようにしてもよい。このような不揮発性RAMに書替マークを保持するようにした場合、不揮発性RAM上で書替マークを管理することができ、書替マークをフラッシュメモリ2に複写する必要がなくなる。
また、書き換え頻度の低いデータが記憶されている物理ブロックとみなされた物理ブロックは、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)された後に記憶データが消去され、空きの物理ブロックとされる。空きとされた物理ブロックは、それまでの書き換え回数が少ない可能性があるが、空きブロックになったことにより、この後の書き換え回数が多くなる可能性が高くなる。逆に、データの複写先となった物理ブロックは、それまでの書き換え回数が多い可能性があるが、書き換え頻度の低いデータが複写されたことにより、この後の書き換え回数が少なくなる可能性が高くなる。このような原理により、フラッシュメモリ2における複数の物理ブロックの書き換え回数が均等化されることが期待できる。
以下、本実施の形態で行われる処理の流れの概要を、図9を参照して説明する。
まず、初期設定が行われる(ステップ1101)。例えば、メモリコントローラ3が、現在の書替マークを設定する。
初期設定の後、ホストシステム4から書込みコマンドを受信した場合、メモリコントローラ3は、その書込みコマンドで指定された論理アクセス領域が属する論理ブロックに対応させる物理ブロックを新たに設定する必要があるかどうかを判断する(ステップ1102)。その必要がある場合は(ステップ1102でYES)、空きブロックの検索が行われ、検出された空きブロックに、書込みコマンドで指定された論理アクセス領域が属する論理ブロックが割り当てられる(ステップ1103)。具体的には、検出された空きブロック(物理ブロック)の冗長領域105に、書込みコマンドで指定された論理アクセス領域が属する論理ブロックのLBNと、現在の書替マークとが書き込まれる。論理ブロックが新たに物理ブロックに割り当てられることに関連した処理も、このステップ1103において実行される。その処理の結果が、所定の条件に合致していれば、書替マークが更新され、所定の条件に合致していなければ、書替マークの変更は行われない。
メモリコントローラ3は、ステップ1103において書替マークを更新したか否かを判断し(ステップ1104)、更新した場合(ステップ1104でYES)、書き換え頻度の低いデータが記憶されている物理ブロックの検索処理を行う。書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合には、メモリコントローラ3は、検出された物理ブロックに記憶されているデータを別の物理ブロックに複写するデータ転送処理を行う(ステップ1105)。具体的には、1期間より長く書き換えが行われていない物理ブロックが検索され、そのような物理ブロックが検出された場合には、検出された物理ブロックの記憶されているデータが別の物理ブロックに転送される。この転送が終了した後、検出された物理ブロックに記憶されているデータが消去される。
以上の説明によれば、論理ブロックが新たに物理ブロックに割り当てられたときに、その物理ブロックに、書替マークが書き込まれる。書替マークは、論理ブロックが新たに物理ブロックに割り当てられたことに関連した処理の結果が所定の条件に合致したときに更新される版数情報である。更新後の書替マークよりも順番が2つ以上前の書替マークが記憶されている物理ブロックが、書き換え頻度の低いデータが記憶されている物理ブロックとみなされる。そして、そのような書き換え頻度の低いデータが記憶されている物理ブロックが存在するときだけ、その物理ブロックを含めたウェアー・レベリング制御が行われる。
さて、上述したように、書替マークは、論理ブロックが新たに物理ブロックに割り当てられることに関連した処理の結果が所定の条件に合致したときに更新される版数情報である。論理ブロックが新たに物理ブロックに割り当てられることに関連した処理や、所定の条件としては、以下の第1の例乃至第4の例のうちのいずれかの例を採用することができる。以下、それぞれの例について、詳細に説明する。
<第1の例>。
第1の例では、「論理ブロックが新たに物理ブロックに割り当てられることに関連した処理」とは、アドレス変換テーブルの保存先の物理ブロック(テーブル保存ブロック)の変更回数を表すカウント値(以下、「変更カウント値」と言う)がカウントアップ(又はカウントダウン)されることであり、「所定の条件」とは、変更カウント値が所定の値になることである。
変更カウント値は、テーブル保存ブロックが変更される都度に、カウントアップ(又はカウントダウン)される。カウントアップ後(又はカウントダウン後)の変更カウント値は、テーブル保存ブロックに書き込まれる。これにより、テーブル保存ブロックに記憶されている変更カウント値から、テーブル保存ブロックの変更が何回行われたかを把握することができる。なお、前述したように、テーブル保存ブロックには、書替マークではなく変更カウント値が書き込まれるため、図10Aに示すように、フラッシュメモリ2には、ホストシステムから与えられたデータが記憶されている物理ブロック(以下、「データ保存ブロック」と言う)と、アドレス変換テーブルが記憶されているテーブル保存ブロック(PBA#5やPBA#14の物理ブロック)が混在することになる。尚、書替マークと変更カウント値が重複することがないように設定すれば、書替マークが書き込まれているか、又は変更カウント値が書き込まれているかにより、その物理ブロックがデータ保存ブロックであるか、又はテーブル保存ブロックであるかを判別することができる。また、データ保存ブロックについては、論理アドレス情報の代わりに、データ保存ブロックであることを示す情報(どの論理ゾーンのアドレス変換テーブルが保存されているかを示す情報)が書き込まれてもよい。
この第1の例では、テーブル保存ブロックの変更が何回行われたときに書替マークを更新するかが予め決められている。つまり、変更カウント値についての所定の値が予め設定されている。テーブル保存ブロックが変更された場合に、変更カウント値がカウントアップ(又はカウントダウン)され、カウントアップ(又はカウントダウン)後の変更カウント値が、所定の値になったならば、書替マークが更新される。例えば、所定の値を15(0Fh)とした場合、新たに割り当てたテーブル保存ブロックに変更カウント値として15(0Fh)を書き込んだ際に、書替マークを更新する。また、本実施の形態の場合には、変更カウント値を15(0Fh)の次に0(00h)に戻すようにすれば、書替マークと変更カウント値が重複することがない。
尚、どの論理ゾーンのアドレス変換テーブルが記憶されているテーブル保存ブロックの変更カウント値に基づいて書替マークを更新するかは適宜設定することができる。また、現在の書替マークは、テーブル保存ブロックに保存されてもよい。
以下、この第1の例に関する処理の流れを説明する。
メモリコントローラ3は、例えば、図9のS103において、図10Bに示す処理を実行する。すなわち、メモリコントローラ3は、新たに論理ブロックを物理ブロックに割り当てたことによりアドレス変更テーブルを更新した場合、テーブル保存ブロックである物理ブロックに、更新後のアドレス変換テーブルを記憶することが可能な空き物理ページが残っているか否かを判断する(S1111)。
残っていないとの判断結果であれば(S1111:YES)、メモリコントローラ3は、S1112を実行する。すなわち、メモリコントローラ3は、空きブロック検索により別の物理ブロック(空きブロック)を検索し、検出された別の物理ブロックを新たなテーブル保存ブロックとする(つまりテーブル保存ブロックを変更する)。また、メモリコントローラ3は、変更前のテーブル保存ブロックであった物理ブロックに記憶されている変更カウント値をその物理ブロックから読出し、その変更カウント値をカウントアップ(又はカウントダウン)する。そして、メモリコントローラ3は、変更後のテーブル保存ブロックである上記別の物理ブロック(空きブロック)に、カウントアップ後(又はカウントダウン後)の変更カウント値と、更新後のアドレス変換テーブルとを書き込む。さらに、メモリコントローラ3は、テーブル管理情報101(図6参照)における、そのアドレス変換テーブルに対応する論理ゾーンのLZNに対応したPBAを、変更後のテーブル保存ブロックのPBAに更新する。
その後、メモリコントローラ3は、カウントアップ(又はカウントダウン)後の変更カウント値が所定の値であるか否かを判断する(S1113)。変更カウント値が所定の値であれば(S1113:YES)、メモリコントローラ3は、書替マークを更新する(S1114)。
以上が、第1の例についての説明である。尚、現在の書替マークは、フラッシュメモリ2又は不揮発性RAMに保存しておくことが好ましい。
<第2の例>。
第2の例では、「論理ブロックが新たに物理ブロックに割り当てられることに関連した処理」とは、テーブル管理情報の保存先の物理ブロック(管理情報ブロック)の切替回数を表すカウント値(以下、「切替カウント値」と言う)がカウントアップ(又はカウントダウン)されることであり、「所定の条件」は、切替カウント値が所定の値になることである。
切替カウント値は、管理情報ブロックが変更される都度に、カウントアップ(又はカウントダウン)される。切替カウント値は、管理情報ブロックに書き込まれる。これにより、管理情報ブロックに記憶されている切替カウント値から、管理情報ブロックの切替えが何回行われたかを把握することができる。
管理情報ブロックは、管理情報ブロック候補の中から選択される。図11Aに示した例では、PBA#0とPBA#1の物理ブロックが管理情報ブロック候補としている。従って、PBA#0又はPBA#1の物理ブロックが管理情報ブロックとして使用される。この管理情報ブロックに、現在の書替マークが書き込まれてもよい。
尚、この例では、PBA#0又はPBA#1の物理ブロックが、テーブル保存ブロック又はデータ保存ブロックに割り当てられることはない。また、テーブル保存ブロックに変更カウント値を書き込む必要はない。
この第2の例では、管理情報ブロックの切替が何回行われたときに書替マークを更新するかが予め決められている。つまり、切替カウント値についての所定の値が予め設定されている。管理情報ブロックが切替えられた場合に、切替カウント値がカウントアップ(又はカウントダウン)され、カウントアップ(又はカウントダウン)後の切替カウント値が、所定の値になったならば、書替マークが更新される。所定の値は、1個でも良いし、複数個(例えば或る自然数の倍数)であっても良い。
以下、この第2の例に関する処理の流れを説明する。
メモリコントローラ3は、例えば、図9のS1103において、図11Bに示す処理を実行する。すなわち、メモリコントローラ3は、テーブル保存ブロックの変更に伴ってテーブル管理情報を更新した場合、管理情報ブロックである物理ブロックに、更新後のテーブル管理情報を記憶することが可能な空き物理ページが残っているか否かを判断する(S1121)。
残っていないとの判断結果であれば(S1121:YES)、メモリコントローラ3は、S1122を実行する。すなわち、メモリコントローラ3は、前述した2個の管理情報ブロック候補のうちの他方の物理ブロックを新たな管理情報ブロックとする(つまり管理情報ブロックを切替る)。また、メモリコントローラ3は、切替前の管理情報ブロックであった物理ブロックに記憶されている切替カウント値をその物理ブロックから読出し、その切替カウント値をカウントアップ(又はカウントダウン)する。そして、メモリコントローラ3は、切替後の管理情報ブロックである上記他方の物理ブロックに、カウントアップ後(又はカウントダウン後)の切替カウント値と、更新後のテーブル管理情報とを書き込む。
その後、メモリコントローラ3は、カウントアップ(又はカウントダウン)後の切替カウント値が所定の値であるか否かを判断する(S1123)。切替カウント値が所定の値であれば(S1123:YES)、メモリコントローラ3は、書替マークを更新する(S1124)。
以上が、第2の例についての説明である。尚、現在の書替マークは、フラッシュメモリ2又は不揮発性RAMに保存されることが好ましい。
<第3の例>。
第3の例では、「論理ブロックが新たに物理ブロックに割り当てられることに関連した処理」とは、先頭の物理ブロックから末尾の物理ブロックに向かう順番で行われる空きブロックの検索であり、「所定の条件」は、空きブロックの検索が一巡したことである。空きブロック検索が一巡するとは、先頭の物理ブロックから開始した空きブロックの検索が末尾の物理ブロックまでいって先頭の物理ブロックに戻ったことである。
メモリコントローラ3は、例えば、図9のS1103において、図12Aに示す処理を実行する。すなわち、メモリコントローラ3は、空きブロックの検索が一巡したならば(S1131:YES)、書替マークを更新する(S1132)。
尚、現在の書替マークは、フラッシュメモリ2又は不揮発性RAMに保存しておくことが好ましい。又、空きブロックの検索における検索開始ブロック(次回の検索を開始する物理ブロック)も、フラッシュメモリ2又は不揮発性RAMに保存しておくことが好ましい。また、この第3の例では、空きブロックの検索が一巡したことを、所定の条件としているが、一巡に限らず、二回以上の所定回数巡回したことが、所定の条件であっても良い。この場合、ワークメモリ(SRAM)8上で、空きブロックの検索の巡回回数を表すカウント値が、空きブロックの検索が一巡する毎に、更新される。この巡回回数も、フラッシュメモリ2又は不揮発性RAMに保存されることが好ましい。
<第4の例>。
第4の例では、「論理ブロックが新たに物理ブロックに割り当てられることに関連した処理」とは、物理ブロックに対して論理ブロックを新たに割り当てた回数を表すカウント値(以下、「割当カウント値」と言う)がカウントアップ(又はカウントダウン)されることであり、「所定の条件」は、割当カウント値が所定の値になることである。
割当カウント値は、物理ブロックに対して論理ブロックを新たに割り当てられる都度に、カウントアップ(又はカウントダウン)される。従って、割当カウント値から、物理ブロックに対して新たに論理ブロックが何回割り当てられたかを把握することができる。
この第4の例では、論理ブロックが新たに物理ブロックに何回割り当てられたときに書替マークを更新するかが予め決められている。つまり、割当カウント値についての所定の値が予め設定されている。所定の値は、1個でも良いし、複数個(例えば或る自然数の倍数)であっても良い。
メモリコントローラ3は、例えば、図9のS1103において、図12Bに示す処理を実行する。すなわち、メモリコントローラ3は、論理ブロックが新たに物理ブロックに割り当てられた場合に、例えばワークメモリ(SRAM)8上で、割当カウント値をカウントアップ(又はカウントダウン)する(S1141)。そして、メモリコントローラ3は、カウントアップ(又はカウントダウン)後の割当カウント値が、所定の値になったか否かを判断する(S1142)。割当カウント値が所定の値であれば(S1142:YES)、メモリコントローラ3は、書替マークを更新する(S1143)。
以上が、第4の例についての説明である。尚、現在の書替マーク及び割当カウント値は、フラッシュメモリ2又は不揮発性RAMに保存しておくことが好ましい。また、割当カウント値は、新たに論理ブロックが割り当てられた物理ブロックに書き込まれても良い。
以上、上述した本発明の幾つかの実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
例えば、第一の実施形態において、書き換え頻度が低いデータが記憶されている物理ブロックを検索するタイミングは、カウント値がn×k増加する毎でなくてもよく、例えば、物理ブロックを検索するタイミングを設定するためのテーブルを設け、そのテーブルに基づいて書き換え頻度が低いデータが記憶されている物理ブロックを検索するタイミングを決定してもよい。このテーブルの例としては、物理ブロックの個数とその個数に対応する検索のタイミング(例えば、物理ブロックの個数が512個の場合はカウント値が4096増加する毎)を記述したテーブルが挙げられる。
また、例えば、第二の実施形態において、メモリコントローラ3は、第1の例乃至第4の例のうちのいずれかを選択し、選択した例に基づいて書替マークを更新しても良い。具体的には、例えば、メモリコントローラ3は、第1の例に基づく条件で書替マークを更新する第1のモードと、第2の例に基づく条件で書替マークを更新する第2のモードと、第3の例に基づく条件で書替マークを更新する第3のモードと、第4の例に基づく条件で書替マークを更新する第4のモードとを有しており、ホストシステム4からの指示又は発生したイベントの結果に従って、第1乃至第4のモードからいずれかのモードを選択し、選択したモードに従って、書替マークを更新するようにしても良い。
尚、上述した実施の形態で行われるウェアー・レベリング制御(以下、本ウェアー・レベリング制御と言う)の対象となる物理ブロックは、フラッシュメモリ2を構成する全ての物理ブロックではなく、記憶されているデータのLBAの範囲により限定されてもよい。つまり、本ウェアー・レベリング制御の対象となる物理ブロックは、それぞれの物理ブロックに割り当てられている論理ブロックの論理ブロック番号(LBN)の範囲により限定されてもよい。
また、本ウェアー・レベリング制御の対象とするLBAの範囲(以下、対象LBA範囲と言う)、又は対象としないLBAの範囲(以下、対象外LBA範囲と言う)は、ホストシステム4からの指示により設定されるようにしてもよい。
このような設定が行われた場合、その設定に関する情報する情報は、フラッシュメモリ2に格納され、起動時にメモリコントローラ3により読み出され保持されることが好ましい。例えば、メモリコントローラ3は、メモリコントローラ3が有する記憶領域(例えば、ワークメモリ8、或いはマイクロプロセッサ6内のレジスタ)に、ホストシステム4から指示された対象LBA範囲又は対象外LBA範囲を表す情報を保持する。そして、メモリコントローラ3は、その情報を基に、本ウェアー・レベリング制御の対象となる論理ブロック(以下、対象論理ブロックと言う)を特定し、対象論理ブロックが割り当てられている物理ブロックだけを本ウェアー・レベリング制御の対象とし、本ウェアー・レベリング制御の対象とならない論理ブロック(以下、対象外論理ブロックと言う)が割り当てられている物理ブロックを本ウェアー・レベリング制御の対象としない。つまり、カウント情報又は書替マーク(版数情報)に基づいて書き換え頻度の低いデータが記憶されている物理ブロックを検出する処理では、対象論理ブロックが割り当てられている物理ブロックだけが、その処理の対象になる。一方、対象外論理ブロックが割り当てられている物理ブロックについては、カウント情報又は書替マーク(版数情報)に基づいて書き換え頻度の低いデータが記憶されていると判断されるような物理ブロックであっても、書き換え頻度の低いデータが記憶されている物理ブロックとして検出されない。
ホストシステム4から対象LBA範囲が指示される場合、そのLBAの範囲に含まれる論理ブロックは本ウェアー・レベリング制御の対象となるが、そのLBAの範囲に含まれない論理ブロックは本ウェアー・レベリング制御の対象とならない。ホストシステム4から対象外LBA範囲が指示される場合、そのLBAの範囲に含まれる論理ブロックは本ウェアー・レベリング制御の対象とならないが、そのLBAの範囲に含まれない論理ブロックは本ウェアー・レベリング制御の対象となる。尚、一部が対象LBA範囲に含まれその他の部分が対象外LBA範囲に含まれる論理ブロックを本ウェアー・レベリング制御の対象とするか否かは適宜設定することができる。つまり、対象LBA範囲と対象外LBA範囲の両方を含んだLBA範囲に対応する論理ブロックが本ウェアー・レベリング制御の対象とするか否かは適宜設定することができる。例えば、論理ブロックに対応するLBA範囲のうち対象LBA範囲と対象外LBA範囲のどちらの比率が多いかに応じて、その論理ブロックが本ウェアー・レベリング制御の対象とするか否かがメモリコントローラ3によって自動で決定されても良い。具体的には、例えば、対象LBA範囲が対象外LBA範囲よりも多い論理ブロックは、本ウェアー・レベリング制御の対象とされ、対象外LBA範囲が対象LBA範囲よりも多い論理ブロックは、本ウェアー・レベリング制御の対象とされない。
また、上述した実施の形態で行われるウェアー・レベリング制御は、カウント情報又は書替えマークに基づいて書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合に、その物理ブロックに記憶されているデータを別の物理ブロックに転送するウェアー・レベリング制御について説明した。このウェアー・レベリング制御において、書き換え頻度の低いデータが記憶されている物理ブロックが検出されたときに、その物理ブロックの消去回数に基づいて、その物理ブロックに記憶されているデータを別の物理ブロックに転送するか否かが更に判断されてもよい。つまり、メモリコントローラ3は、カウント情報又は書替えマークに基づいて書き換え頻度の低いデータが記憶されている物理ブロックを検出した場合であっても、その物理ブロックの消去回数に基づいて、その物理ブロックに記憶されているデータを別の物理ブロックに転送しないと最終的に判断するようにしてもよい。
このような2次的な判断(以下、「転送元判断」という。)を追加する理由としては、カウント情報又は書替えマークに基づいて書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合であって、その物理ブロックに記憶されているデータを別の物理ブロックに転送することが好ましくない場合があるからである。例えば、書き換え頻度の低いデータが記憶されている物理ブロックであっても、その物理ブロックの消去回数が多いときには、その物理ブロックに記憶されているデータを別の物理ブロックに転送しない方が好ましい場合がある。このような好ましくないデータの転送が行われることを回避するには、その物理ブロックの消去回数を基準消去回数と比較し、その物理ブロックの消去回数が基準消去回数以上である場合には、その物理ブロックに記憶されているデータを別の物理ブロックに転送しないと判断するような転送元判断を追加することが好ましい。
このような転送元判断(すなわち、転送元の物理ブロックの消去回数に基づいた判断)を追加する場合には、メモリコントローラ3が、それぞれの物理ブロックの消去回数を管理するための消去回数テーブルを作成し、その消去回数テーブルをフラッシュメモリ又は別途設けた不揮発性メモリに保存しておく必要がある。従って、このような物理ブロックの消去回数に基づいた2次的な判断を追加する場合には、メモリコントローラ3内のマイクロプロセッサが、ROM12に記憶されているプログラムに基づいて前述したような消去回数テーブルの作成及び保存を制御するようにする。
基準消去回数としては、一定の値であっても、変化する値であってもよい。例えば、フラッシュメモリメーカが保証している消去回数の所定割合、例えば90%を基準消去回数としてもよい。つまり、フラッシュメモリメーカが保証している消去回数が5000回で、所定割合が90%であれば、基準消去回数は4500回になる。また、平均消去回数や消去回数が最大の物理ブロックの消去回数(以下、「最大消去回数」と言う。)を管理するようにして、この平均消去回数又は最大消去回数に基づいて基準消去回数が設定されてもよい。例えば、平均消去回数を基準消去回数とした場合には、メモリコントローラ3は、書き換え頻度の低いデータが記憶されている物理ブロックの消去回数が、平均消去回数より小さい場合にだけ、その物理ブロックに記憶されているデータを別の物理ブロックに転送するように制御することができる。又、最大消去回数の所定割合、例えば90%の消去回数を基準消去回数とした場合には、メモリコントローラ3は、書き換え頻度の低いデータが記憶されている物理ブロックの消去回数が、最大消去回数の90%の消去回数より小さい場合にだけ、その物理ブロックに記憶されているデータを別の物理ブロックに転送するように制御することができる。
このような、転送元の物理ブロックの消去回数に基づいた転送元判断を追加することにより、より的確なウェアー・レベリング制御を行うことができる。
上記の転送元判断は、転送元の物理ブロック(書き換え頻度の低いデータが記憶されている物理ブロック)の消去回数に基づいた判断であるが、上記の転送元判断に代えて又は加えて、転送先の物理ブロックの消去回数に基づいた2次的な判断(以下、「転送先判断」という。)が追加されてもよい。つまり、転送先の物理ブロックの消去回数が基準消去回数と比較され、その物理ブロックの消去回数が基準消去回数以下である場合には、その物理ブロックに転送元の物理ブロックに記憶されているデータを転送しないと判断するような転送先判断が追加されてもよい。転送先判断での基準消去回数は、転送元判断での基準消去回数と同様の観点で設定されて良い。また、転送先判断での基準消去回数と転送元判断での基準消去回数は同じであっても異なっていても良い。尚、転送先の物理ブロックの消去回数が基準消去回数以下である場合は、消去回数が基準消去回数以上の物理ブロックを検出する空きブロック検索を行うことが好ましい。但し、消去回数が基準消去回数以上の物理ブロックを検出するまで空きブロック検索を継続した場合、検索時間が長くなることがあるため、所定条件の下で消去回数が基準消去回数以上の物理ブロックが検出されなかった場合は、空きブロック検索を中止してデータを転送しないと判断することが好ましい。空きブロック検索を中止する所定条件としては、所定時間内に消去回数が基準消去回数以上の物理ブロックが検出されなかったとき、又は所定個数の空きブロックを検出してそれらの中に消去回数が基準消去回数以上の物理ブロックなかったとき等が挙げられる。
次に、転送元の物理ブロックの消去回数が転送先の物理ブロックの消去回数より多いときの処理について説明する。この処理については、フラッシュメモリの仕様を考慮する必要がある。一般的に使用されているNAND型フラッシュメモリには、SLC(single level cell)タイプのメモリセルで構成されているものと、MLC(multi level cell)タイプのメモリセルで構成されているものとがある。MLCタイプのメモリセルで構成されたフラッシュメモリのデータ保持期間が短いため、長期間保存されていたデータについてはリフレッシュする必要がある。従って、データのリフレッシュを重視する場合には、転送元の物理ブロックの消去回数が転送先の物理ブロックの消去回数より多い場合であっても、データ転送を行うようにし、フラッシュメモリの寿命を重視する場合には、転送元の物理ブロックの消去回数が転送先の物理ブロックの消去回数より多い場合は、データ転送を行わないようにすればよい。
尚、複数個の物理ブロックを仮想的に結合した仮想ブロックを構成し、仮想ブロック単位で論理ブロックとの対応関係を管理する場合には、仮想ブロックを1個の物理ブロックとみなし、仮想ブロック単位で消去回数を管理し、仮想ブロック単位で空きブロック検索を行うことが好ましい。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ

Claims (18)

  1. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
    前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
    前記カウント値に基づいて決定されるカウント情報を、新たに前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて判断する判断手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  2. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
    前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
    前記カウント値に基づいて決定されるカウント情報を、新たに前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記カウント値と前記処理対象ブロックに書き込まれている前記カウント情報に基づいて判断する判断手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  3. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
    前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
    前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
    前記テーブル保存ブロック管理手段により新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
    前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  4. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
    前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
    前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
    前記テーブル保存ブロック管理手段により新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
    前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  5. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
    前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
    前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
    前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存手段と、
    前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理手段と、
    前記管理情報ブロック管理手段により新たな前記管理情報ブロックの割り当てが行われたときに、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
    前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  6. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当て手段と、
    前記論理ブロック割り当て手段により設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理手段と、
    前記アドレス変換テーブル管理手段により前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存手段と、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理手段と、
    前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存手段と、
    前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理手段と、
    前記管理情報ブロック管理手段により新たな前記管理情報ブロックの割り当てが行われたときに、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定手段と、
    前記版数情報決定手段により決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  7. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウント手段と
    前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  8. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウント手段と
    前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  9. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックを検索する手段であって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索手段と、
    前記空きブロック検索手段で検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当て手段と、
    前記空きブロック検索手段における所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックを対象に、前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記物理ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  10. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理手段と、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記フラッシュメモリ内の消去状態の前記物理ブロックを検索する手段であって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索手段と、
    前記空きブロック検索手段で検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当て手段と、
    前記空きブロック検索手段における所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理手段と、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込み手段と、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定手段と、
    前記所定の前記論理ブロックを特定するための情報を保持する情報保持手段と、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断手段と、
    前記判断手段により肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索手段により検出された前記空きブロックに転送するデータ転送手段とを備えるメモリコントローラ。
  11. 前記所定の前記論理ブロックを特定するための情報が、ホストシステムから与えられる情報に基づいて設定される請求項1乃至10のうちのいずれか1項に記載のメモリコントローラ。
  12. 請求項1乃至11のうちのいずれか1項に記載のメモリコントローラと、
    前記メモリコントローラにより制御されるフラッシュメモリと、
    を備えるフラッシュメモリシステム。
  13. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
    前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込みステップと、
    前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウントステップと、
    前記カウント値に基づいて決定されるカウント情報を、新たな前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記カウント値と前記処理対象ブロックに書き込まれている前記カウント情報に基づいて判断する判断ステップと、
    前記判断ステップで肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備えるフラッシュメモリの制御方法。
  14. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当てステップと、
    前記論理ブロック割り当てステップにより設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理ステップと、
    前記アドレス変換テーブル管理ステップにより前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存ステップと、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理ステップと、
    前記テーブル保存ブロック管理ステップにより新たな前記テーブル保存ブロックの割り当てが行われたときに、空き領域が無くなった前記テーブル保存ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記テーブル保存ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定ステップと、
    前記版数情報決定ステップにより決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込みステップと、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
    前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備えるフラッシュメモリの制御方法。
  15. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックを前記物理ブロックに割り当てる論理ブロック割り当てステップと、
    前記論理ブロック割り当てステップにより設定された前記論理ブロックと前記物理ブロックとの対応関係を示すアドレス変換テーブルを管理するアドレス変換テーブル管理ステップと、
    前記アドレス変換テーブル管理ステップにより前記アドレス変換テーブルの少なくとも一部の前記論理ブロックと前記物理ブロックとの対応関係が変更されたときに、前記アドレス変換テーブルの保存先の前記物理ブロックであるテーブル保存ブロックに、前記アドレス変換テーブルを保存するアドレス変換テーブル保存ステップと、
    前記テーブル保存ブロックに、前記アドレス変換テーブルを保存するための空き領域が無くなったとき、別の前記物理ブロックを前記テーブル保存ブロックとして新たに割り当てるテーブル保存ブロック管理ステップと、
    前記テーブル保存ブロックとして割り当てられている前記物理ブロックが変わったときに、前記テーブル保存ブロックとして割り当てられている前記物理ブロックを示す管理情報を、前記管理情報の保存先の前記物理ブロックである管理情報ブロックに保存する管理情報保存ステップと、
    前記管理情報ブロックに、前記管理情報を保存するための空き領域が無くなったとき、別の前記物理ブロックを前記管理情報ブロックとして新たに割り当てる管理情報ブロック管理ステップと、
    前記管理情報ブロック管理ステップにより新たな前記管理情報ブロックの割り当てが行われたとき、空き領域が無くなった前記管理情報ブロックに記憶されているカウント値と一致するカウント値である直前のカウント値を更新し、更新後のカウント値である最新のカウント値を、新たに前記管理情報ブロックとして割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
    前記最新のカウント値に基づいて、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報を決定する版数情報決定ステップと、
    前記版数情報決定ステップにより決定された前記版数情報を、前記論理ブロックが新たに割り当てられた前記物理ブロックに書き込む版数情報書き込みステップと、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
    前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備えるフラッシュメモリの制御方法。
  16. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
    前記物理ブロックに対して前記論理ブロックが新たに割り当てられる毎にカウント値を更新するカウントステップと
    前記カウント値が所定の値に達したときに、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理ステップと、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込みステップと、
    前記フラッシュメモリ内の消去状態の前記物理ブロックである空きブロックを検索する空きブロック検索ステップと、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
    前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備えるフラッシュメモリの制御方法。
  17. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリを構成するそれぞれの前記物理ブロックの消去回数を管理する消去回数管理ステップと、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
    前記フラッシュメモリ内の消去状態の前記物理ブロックを検索するステップであって、前記フラッシュメモリ内の前記物理ブロックが消去状態であるか否かを所定の順番で判断していく空きブロック検索ステップと、
    前記空きブロック検索ステップで検出された消去状態の前記物理ブロックに対して前記論理ブロックを割り当てる論理ブロック割り当てステップと、
    前記空きブロック検索ステップにおける所定の順番の検索が所定回数巡回する毎に、前記論理ブロックを割り当てた物理ブロックに書き込む版数情報を更新する版数情報管理ステップと、
    前記論理ブロックが新たに割り当てられた前記物理ブロックに、前記版数情報を書き込む版数情報書き込みステップと、
    所定の前記論理ブロックが割り当てられている前記物理ブロックである処理対象ブロックを特定する処理対象ブロック特定ステップと、
    前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するか否かを、前記処理対象ブロックに書き込まれている前記版数情報に基づいて判断する判断ステップと、
    前記判断ステップにより肯定的な判断がなされたときに、前記肯定的な判断の対象の前記処理対象ブロックに記憶されているデータを前記空きブロック検索ステップにより検出された前記空きブロックに転送するデータ転送ステップとを備えるフラッシュメモリの制御方法。
  18. ホストシステムから与えられる情報に基づいて前記所定の前記論理ブロックが設定される請求項13乃至17のうちのいずれか1項に記載のフラッシュメモリの制御方法。
JP2009096802A 2009-04-13 2009-04-13 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Active JP4952740B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2010250413A true JP2010250413A (ja) 2010-11-04
JP4952740B2 JP4952740B2 (ja) 2012-06-13

Family

ID=43312698

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4952740B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法
JP2014056408A (ja) * 2012-09-12 2014-03-27 Toshiba Corp メモリシステム、コンピュータシステム、およびメモリ管理方法
EP2740037A2 (en) * 2011-08-03 2014-06-11 Micron Technology, Inc. Wear leveling for a memory device
JP2014220021A (ja) * 2013-04-30 2014-11-20 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2020086748A (ja) * 2018-11-21 2020-06-04 Tdk株式会社 メモリコントローラ、及びメモリシステム
US20220188222A1 (en) * 2020-12-15 2022-06-16 Kabushiki Kaisha Toshiba Electronic apparatus, method, and storage medium

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06131891A (ja) * 1992-10-14 1994-05-13 Toshiba Corp 半導体ファイル装置
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH1040176A (ja) * 1996-07-25 1998-02-13 Canon Inc 電子機器におけるメモリ管理システム,メモリ管理方法およびコンピュータで読み出し可能なメモリ管理プログラムを格納した記憶媒体
JP2000020252A (ja) * 1998-06-29 2000-01-21 Hitachi Ltd 不揮発性半導体メモリを用いた記憶装置
JP2004079140A (ja) * 2002-08-22 2004-03-11 Casio Comput Co Ltd データ記録制御装置及びプログラム
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2005222550A (ja) * 2004-02-06 2005-08-18 Samsung Electronics Co Ltd フラッシュメモリのリマッピング方法
JP2007164318A (ja) * 2005-12-12 2007-06-28 Renesas Technology Corp 記憶装置
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2009086738A (ja) * 2007-09-27 2009-04-23 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009110314A (ja) * 2007-10-30 2009-05-21 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010515179A (ja) * 2007-01-17 2010-05-06 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのブロック管理方法
JP2010146515A (ja) * 2008-12-22 2010-07-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06131891A (ja) * 1992-10-14 1994-05-13 Toshiba Corp 半導体ファイル装置
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH1040176A (ja) * 1996-07-25 1998-02-13 Canon Inc 電子機器におけるメモリ管理システム,メモリ管理方法およびコンピュータで読み出し可能なメモリ管理プログラムを格納した記憶媒体
JP2000020252A (ja) * 1998-06-29 2000-01-21 Hitachi Ltd 不揮発性半導体メモリを用いた記憶装置
JP2004079140A (ja) * 2002-08-22 2004-03-11 Casio Comput Co Ltd データ記録制御装置及びプログラム
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2005222550A (ja) * 2004-02-06 2005-08-18 Samsung Electronics Co Ltd フラッシュメモリのリマッピング方法
JP2007164318A (ja) * 2005-12-12 2007-06-28 Renesas Technology Corp 記憶装置
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2010515179A (ja) * 2007-01-17 2010-05-06 メモライト メモリテック (シェンチェン) カンパニー リミテッド フラッシュメモリのブロック管理方法
JP2009086738A (ja) * 2007-09-27 2009-04-23 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009110314A (ja) * 2007-10-30 2009-05-21 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010146515A (ja) * 2008-12-22 2010-07-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法
EP2740037A2 (en) * 2011-08-03 2014-06-11 Micron Technology, Inc. Wear leveling for a memory device
JP2014524609A (ja) * 2011-08-03 2014-09-22 マイクロン テクノロジー, インク. メモリデバイスのためのウェアレベリング
EP2740037A4 (en) * 2011-08-03 2015-04-15 Micron Technology Inc LEVELING OF WEAR FOR MEMORY DEVICE
US9104547B2 (en) 2011-08-03 2015-08-11 Micron Technology, Inc. Wear leveling for a memory device
JP2014056408A (ja) * 2012-09-12 2014-03-27 Toshiba Corp メモリシステム、コンピュータシステム、およびメモリ管理方法
JP2014220021A (ja) * 2013-04-30 2014-11-20 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2020086748A (ja) * 2018-11-21 2020-06-04 Tdk株式会社 メモリコントローラ、及びメモリシステム
US11256432B2 (en) 2018-11-21 2022-02-22 Tdk Corporation Memory controller and memory system
US20220188222A1 (en) * 2020-12-15 2022-06-16 Kabushiki Kaisha Toshiba Electronic apparatus, method, and storage medium
US12032478B2 (en) * 2020-12-15 2024-07-09 Kabushiki Kaisha Toshiba Electronic apparatus for time series data management, and method and storage medium

Also Published As

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

Similar Documents

Publication Publication Date Title
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8239615B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP4952740B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010097333A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821845B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5858081B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4821844B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8200890B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2007323159A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
US9465730B2 (en) Flash memory device
JP2021068129A (ja) メモリコントローラ及びフラッシュメモリシステム
JP2013200726A (ja) 半導体記憶装置
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP2008112335A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009301491A (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 Request for written amendment filed

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

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