メモリコントローラ、及びデータ記録装置
【課題】管理テーブルを不揮発性メモリに保存する時の応答遅延時間を縮減し、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元する機能を備えるメモリコントローラを提供する。
【解決手段】不揮発性メモリ1011は、管理テーブル格納ブロックと、データ書き込みのために割り当てたスクラッチブロックと、データを保持するデータブロックと、データを消去した消去済みブロックを持つ。メモリ1012は、データの格納場所を管理する論理・物理アドレス変換テーブル10120と、ブロック履歴管理テーブル10125を持つ。管理テーブル格納ブロックは、論理・物理アドレス変換テーブル10120とブロック履歴管理テーブル10125を保存する管理テーブルページを持つ。メモリコントローラ1010は、論理・物理アドレス変換テーブル10120の一部を不揮発性メモリ1011の管理テーブル格納ブロックに保存する。
【解決手段】不揮発性メモリ1011は、管理テーブル格納ブロックと、データ書き込みのために割り当てたスクラッチブロックと、データを保持するデータブロックと、データを消去した消去済みブロックを持つ。メモリ1012は、データの格納場所を管理する論理・物理アドレス変換テーブル10120と、ブロック履歴管理テーブル10125を持つ。管理テーブル格納ブロックは、論理・物理アドレス変換テーブル10120とブロック履歴管理テーブル10125を保存する管理テーブルページを持つ。メモリコントローラ1010は、論理・物理アドレス変換テーブル10120の一部を不揮発性メモリ1011の管理テーブル格納ブロックに保存する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ記録装置内の不揮発性メモリを制御するメモリコントローラと、このメモリコントローラを備えるデータ記録装置に関する。
【背景技術】
【0002】
情報機器の補助記憶装置として、一般に磁気ディスク記憶装置が用いられている。磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【0003】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリEEPROM(Electrically Erasable Programmable Read only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【0004】
フラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、以下の4点に挙げるような使用上の制限がある。第1に、書き込み単位(一般的にページと呼ばれる)と消去単位(一般にブロックと呼ばれる)が決まっており、消去単位は書き込み単位よりも大きいことである。第2に、データを上書きする際には一度データを消去し、再度書き込みを行う必要があることである。第3に、複数のページで構成される1つのブロックにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。第4に、各ブロックには消去回数に制限があることである。
【0005】
また、不揮発性メモリの読み出し及び書き込み速度を改善するための技術は進展しないにも関わらず、メモリの記録容量は、微細化技術の進展に伴い、倍増する傾向を維持し続けている。最新の不揮発性メモリを使用したデータ記録装置を設計する場合には、データ記録装置に設定した論理記録容量の倍増に伴い、メモリを管理するための管理テーブルの容量も倍増してしまう。
【0006】
上述したフラッシュメモリの特性を考慮し、データ消去に伴うページデータのコピー量を低減させるために、所定の書き込み単位でデータ構造を管理するというメモリ制御方法を用いると、管理テーブルの容量が増大する。
【0007】
管理テーブルは、アクセス速度に優れた揮発性メモリに保持することが一般的であるが、突然に電源が遮断されてしまった場合には失われてしまう。このため、管理テーブルを復元させる様々な方法が提案されてきた。特に、論理・物理アドレス変換テーブルを復元するための方法が、数多く提案されてきた。論理・物理アドレス変換テーブルとは、データ記録装置が接続されるホスト計算機が指定する論理アドレスを、データが実際に格納されている物理アドレスに変換する際に使用するテーブルである。
【0008】
最も簡便な方法は、電源補助装置をデータ記録装置に搭載し、電源遮断時に、不揮発性メモリに管理テーブルを書き込むことである。しかし、電源補助装置の容量は進展しないにも関わらず、不揮発性メモリの物理記録容量が倍増し、データ記録装置の論理記録容量が倍増している。このため、論理記憶容量の拡張性を維持したまま管理テーブルを保護する方法が望まれる。
【0009】
特許文献1と特許文献2には、データページに付与したヘッダ情報を用いて、全データページのヘッダ情報を走査することで、電源補助装置を搭載せずに上記の管理テーブルを復元する方法が開示されている。特許文献1及び特許文献2に記載の復元方法は、格納されたデータの新旧を判定する方法を示したものとして、特許文献3で開示されている識別情報を応用した方法に立脚している。
【0010】
しかし、不揮発性メモリに対するヘッダ情報の読み出し速度が容易には改善されないため、管理テーブルを復元する時間が延びてしまい、電源入力後、短時間でホスト計算機によるデータアクセスを開始できないというという課題がある。
【0011】
特許文献4、特許文献5、及び特許文献6には、この課題に対して、不揮発性メモリに定期的に管理テーブルを保存し、保存した後に発生した管理テーブルの更新差分を復元する方法が開示されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特許第4079506号公報
【特許文献2】特開2003−167795号公報
【特許文献3】特許第3070539号公報
【特許文献4】米国特許第7516267号
【特許文献5】特表2008−511913号公報
【特許文献6】米国特許第7721040号
【発明の概要】
【発明が解決しようとする課題】
【0013】
特許文献4、5、6に開示された方法を適用したメモリ制御方法は、電源補助装置を必要とせず、短時間で管理テーブルを復元することができる。その一方で、管理テーブルを不揮発性メモリに保存する頻度を低減させるために、大量のデータ消去済みのブロックを確保しておく必要がある。そのため、論理記録容量が変わらないのにも関わらず、有効なデータを保持するブロックの数が減少してしまい、1ブロックに含まれる有効データページの数が増加してしまう。結果として、特許文献1に記載されているメモリ制御方法を適用することで得られるはずである、データ消去に伴い発生するページデータ数を抑制する効果が失われてしまうという課題がある。
【0014】
さらに、特許文献4、5、6に開示された方法では、一度にすべての管理テーブルを一括して不揮発性メモリに保存することを要求している。不揮発性メモリの書き込み速度が改善せず、管理テーブルの容量が倍増することを鑑みれば、管理テーブルを不揮発性メモリに保存する時間が倍増してしまうことは自明である。実際、論理記録容量が倍増するに従って、ホスト計算機がデータ記録装置に対してデータアクセスをする際の応答遅延時間が倍増してしまうという課題がある。
【0015】
本発明の目的は、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減し、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持しながら、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元する機能を備えるメモリコントローラを提供することである。
【課題を解決するための手段】
【0016】
本発明によるメモリコントローラは、次のような特徴を備える。
【0017】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラである。前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有する。前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有する。前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有する。前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含む。前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存する。
【発明の効果】
【0018】
本発明によるメモリコントローラは、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減することと、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持することが可能であり、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施例によるデータ記録装置のハードウェア構成例を示す図である。
【図2】不揮発性メモリの構成を示す図である。
【図3A】ブロックヘッダページに格納するデータの構成を示す図である。
【図3B】データページに格納するデータの構成を示す図である。
【図3C】管理テーブルページに格納するデータの構成を示す図である。
【図4A】論理・物理アドレス変換テーブルのデータ構造の例を示す図である。
【図4B】スクラッチブロック管理テーブルのデータ構造の例を示す図である。
【図4C】データブロック管理テーブルのデータ構造の例を示す図である。
【図4D】消去済みブロック管理テーブルのデータ構造の例を示す図である。
【図4E】物理ブロック管理テーブルのデータ構造の例を示す図である。
【図4F】ブロック履歴管理テーブルのデータ構造の例を示す図である。
【図5A】データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【図5B】書き込み可能なページを特定する処理のフローチャートを示す図である。
【図5C】各種管理テーブルを更新する処理のフローチャートを示す図である。
【図5D】各種管理テーブルを保存する処理のフローチャートを示す図である。
【図6】ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【図7A】管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。
【図7B】各種管理テーブルを復元する処理のフローチャートを示す図である。
【図7C】消去済みブロック管理テーブルを復元する処理のフローチャートを示す図である。
【図8A】ホスト計算機から不揮発性メモリ上のデータへのリードアクセス方法を説明する図である。
【図8B】ホスト計算機から不揮発性メモリへのデータのライトアクセス方法を説明する図である。
【発明を実施するための形態】
【0020】
本発明によるメモリコントローラは、スクラッチブロック(データを書き込むことができるページを含むブロック)として割り当てたか、データ消去を行ったブロックの履歴を逐次記録する。これにより、管理テーブルを保存する時点で消去済みのブロックを不揮発性メモリに大量に保持する必要がなく、適当に選択した管理テーブルの一部だけを保存することが可能となる。従って、不揮発性メモリに保存した管理テーブルからの更新差分となるデータだけを追跡することができる。この結果、データ消去を実行する際に必要となる有効なページデータのコピー量を抑制することができ、データ書き換え速度の高速化、及び総書き換え容量の低下を防ぐことによる長寿命化が図れる。
【0021】
また、追跡記録するブロックの数を任意に設定できるため、管理テーブルの保存周期を十分に長く設定することができる。このため、データ書き換え速度の高速性を維持することができる。
【0022】
また、本発明によれば、適当に選択した管理テーブルの一部だけを不揮発性メモリに保存すればよい。このため、論理記録容量を倍増させても、管理テーブルを一括して保存することによる応答遅延時間を任意に縮減することができる。
【0023】
さらに、本発明によれば、データ記録装置の電源遮断後に、不揮発性メモリに保存した管理テーブルを含む情報を用いて、最新の管理テーブルを復元することができる。
【0024】
以下、図面を用いて本発明によるメモリコントローラ及びデータ記録装置の実施例を説明する。
【0025】
図1は、本実施例によるデータ記録装置のハードウェア構成例を示す図である。データ記録装置101は、本実施例によるメモリコントローラ1010、1つまたは複数の不揮発性メモリ1011、及びメモリ1012を備え、データパス102を介して、外部システムであるホスト計算機100と接続される。
【0026】
本明細書に記載の不揮発性メモリとは、以下の特徴を有するものである。すなわち、ある所定の書き込み単位とこの書き込み単位よりも大きいデータ消去単位を持ち、データを書き換えるためには事前にデータ消去処理を必要とする。
【0027】
メモリ1012は、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125を格納する。メモリ1012は、アクセス速度の観点から、揮発性RAMを用いてよい。また、起動時に上記のテーブル10120〜10125の一部または全部を復元するために必要な処理を省くために、不揮発性メモリを用いてもよい。
【0028】
以下の説明では、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125のことを、「管理テーブル」とも称する。
【0029】
図2は、不揮発性メモリ1011の構成を示す図である。不揮発性メモリ1011は、1つ以上のブロック200と呼ばれるデータ消去単位から構成される。物理ブロックは、最小の書き込み単位で構成され、ページと称する。不揮発性メモリ1011を構成するブロック群は、管理テーブル格納ブロック群2000、スクラッチブロック群2001、データブロック群2002、及び消去済みブロック群2003のいずれか1つに分類される。
【0030】
管理テーブル格納ブロック群2000は、管理テーブル10120〜10125の一部または全部を格納する。スクラッチブロック群2001は、メモリコントローラにより指示される書き込みデータを格納するページを提供する。データブロック群2002は、書き込まれたデータを保持する。消去済みブロック群2003は、ブロック消去を済ませたブロックである。
【0031】
管理テーブル格納ブロック群2000の各ブロックは、ブロックヘッダページ2010、及びその他の複数のページから構成される。その他の複数のページには、管理テーブル10120〜10125のデータの一部を格納することができ、このデータを格納したページを管理テーブルページ2011と称する。
【0032】
スクラッチブロック群2001の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機100が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページ2012と称する。特に、データを書き込むことができるページを含むブロックを、スクラッチブロックと称する。
【0033】
データブロック群2002の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機100が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページと称する。
【0034】
消去済みブロック群2003の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、データを書き込み可能なページが含まれる。特に、データページと管理テーブルページのいずれも含まないブロックを、消去済みブロックと称する。
【0035】
管理テーブル格納ブロック群2000、スクラッチブロック群2001、データブロック群2002、及び消去済みブロック群2003の各ブロックは、データが格納されていないページである空きページ2013を有することができる。
【0036】
不揮発性メモリ1011を構成するブロックの総数は一定であるが、各ブロックが上記のブロック群2000〜2003いずれか1つに排他的に分類される限り、個々のブロックが属する群が動的に変更されてもよい。
【0037】
さらに、管理テーブルの真値を格納するページを特定できるように管理する方法を用いれば、管理テーブル格納ブロック群2000とスクラッチブロック群2001を区別する必要はない。本実施例では、管理テーブルページ2011に格納するデータの特性と、データページ2012に格納するデータの特性の違いを明確にするために、あえてこの2つの群を分割している。
【0038】
図3Aは、ブロックヘッダページ2010に格納するデータの構成を示す図である。ブロックヘッダページ2010は、少なくともブロック消去回数3000を含む。空き領域3001には、少なくともブロックの状態を意味する情報が格納されていてよい。すなわち、空き領域3001は、書き込み及びデータ消去を正常に実行できないことを意味するフラグ、及びエラーが発生した回数を含んでもよい。
【0039】
図3Bは、データページ2012に格納するデータの構成を示す図である。データページ2012は、少なくとも、データ3010、ページデータ属性3011、論理アドレス3012、及び書き込みデータ番号3013を含む。論理アドレス3012は、格納したデータ3010をホスト計算機100が区別するために付与したアドレスである。書き込みデータ番号3013は、同一の論理アドレス3012に対応する複数のデータ3010を区別することを可能にするための番号である。なお、便宜上、ページデータ属性3011、論理アドレス3012、書き込みデータ番号3013を合わせて、データページヘッダ情報3014と称する。データページヘッダ情報3014は、データ3010を一意に特徴付けるための情報である。
【0040】
図3Cは、管理テーブルページ2011に格納するデータの構成を示す図である。管理テーブルページ2011は、少なくとも、データ(管理テーブル値)3020、ページデータ属性3021、管理テーブルアドレス3022、及び管理テーブル書き込み番号3023を含む。管理テーブルアドレス3022は、データ(管理テーブル値)3020に格納している管理テーブルを区別するために付与したアドレスである。管理テーブル書き込み番号3023は、同一の管理テーブルアドレス3022に対応する複数のデータ(管理テーブル値)3020を区別することを可能にするための番号である。なお、便宜上、ページデータ属性3021、管理テーブルアドレス3022、管理テーブル書き込み番号3023を合わせて、管理テーブルページヘッダ情報3024と称する。管理テーブルページヘッダ情報3024は、データ(管理テーブル値)3020を一意に特徴付けるための情報である。
【0041】
図4A〜図4Fは、不揮発性メモリ1011に格納するデータ構造を一意に決定するために用いる管理テーブルの構成例を示す図である。すべての管理テーブルを構成するデータ要素には、互いに重複がないように、管理アドレス番号を設定する。管理アドレス番号の一例として、メモリ1012に格納するアドレスを設定してもよい。また、管理テーブルを所定の書き込み単位で分割した要素ごとに、互いに重複しない適当な番号を設定してもよい。
【0042】
図4Aは、論理・物理アドレス変換テーブル10120のデータ構造の例を示す図である。論理・物理アドレス変換テーブル10120は、管理アドレス番号、論理グループ番号4002、論理アドレス4000、及び物理アドレス4001を含む。物理アドレス4001は、ホスト計算機100が指定した論理アドレス4000に対応するデータを格納し、物理ブロック番号及び物理ページ番号を用いて一意に指定される。論理・物理アドレス変換テーブル10120は、物理アドレス4001を管理するものである。また、論理アドレス4000を一定量に分割した論理アドレス空間の1つ1つを、論理グループと称する。論理グループ番号4002は、論理グループを示す番号である。
【0043】
一例として、論理グループの数LG、及び論理グループを構成する論理アドレスの数Lは、次の条件を満たす限り、任意に指定することができる。すなわち、LGとLの積と所定の書き込み単位を掛けた値が、データ記録装置101に対してホスト計算機100が与えた論理記録容量を超える最小の値で与えられることである。
【0044】
図4Bは、スクラッチブロック管理テーブル10121のデータ構造の例を示す図である。スクラッチブロック管理テーブル10121は、管理アドレス番号、論理グループ番号4013、スクラッチブロック番号4010、フラグ4012、及び物理ブロック番号4011を含む。フラグ4012は、物理ブロック番号4011の利用状態を示す。論理グループ番号4013は、論理グループを示す番号である。スクラッチブロック管理テーブル10121は、論理グループごとに割り当てられる1つまたは複数のスクラッチブロックの管理情報を示している。個々のスクラッチブロックは、スクラッチブロック番号4010で一意に指定され、物理ブロック番号4011及びフラグ4012で特徴付けられる。
【0045】
図4Cは、データブロック管理テーブル10122のデータ構造の例を示す図である。データブロック管理テーブル10122は、管理アドレス番号、論理グループ番号4023、データブロック番号4020、フラグ4021、及び物理ブロック番号4022を含む。フラグ4021は、物理ブロック番号4022の利用状態を示す。論理グループ番号4023は、論理グループを示す番号である。データブロック管理テーブル10122は、論理グループごとに割り当てられる1つまたは複数のデータブロックの管理情報を示している。個々のデータブロックは、データブロック番号4020で一意に指定され、物理ブロック番号4022及びフラグ4021で特徴付けられる。
【0046】
図4Dは、消去済みブロック管理テーブル10123のデータ構造の例を示す図である。消去済みブロック管理テーブル10123は、管理アドレス番号、消去済みブロック番号4030、フラグ4031、及び物理ブロック番号4032を含む。フラグ4031は、物理ブロック番号4032の利用状態を示す。消去済みブロック管理テーブル10123は、データ消去を済ませたブロック群を登録したものである。個々の消去済みブロックは、消去済みブロック番号4030で一意に指定され、物理ブロック番号4032及びフラグ4031で特徴付けられる。
【0047】
図4Eは、物理ブロック管理テーブル10124のデータ構造の例を示す図である。物理ブロック管理テーブル10124は、ブロックの属性である管理アドレス番号、物理ブロック番号4040、消去回数4041、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を含む。有効データページフラグ4043は、有効データページの位置を示す。書き込み可能ページ番号4044は、物理ブロック番号4040で一意に指定されたブロックに書き込みを行えるページの位置を示す。物理ブロック管理テーブル10124は、ブロックの属性を管理するので、物理ブロックの利用状態を管理するために用いられる。個々の物理ブロックは、物理ブロック番号4040で一意に指定され、消去回数4041、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044で特徴付けられる。
【0048】
図4Fは、ブロック履歴管理テーブル10125のデータ構造の例を示す図である。ブロック履歴管理テーブル10125は、2つのテーブルから構成される。1つのテーブルには、管理アドレス番号、登録履歴番号4050、論理グループ番号4051、有効フラグ4052、割り当て・消去フラグ4053、及び物理ブロック番号4054が含まれる。もう1つのテーブルには、管理アドレス番号、論理グループ番号、及び割り当てブロック数4055が含まれる。有効フラグ4052は、利用状態を示し、割り当て・消去フラグ4053は、スクラッチブロックへの割り当てを行った場合とブロック消去を実行した場合とを区別する。割り当てブロック数4055は、論理グループごとに割り当てたスクラッチブロックの数を示す。ブロック履歴管理テーブル10125は、データ消去を済ませたブロック、及びスクラッチブロックとして割り当てたブロックを登録するものである。個々のブロックは、登録履歴番号4050で一意に指定され、ブロックの所属する論理グループ番号4051、有効フラグ4052、割り当て・消去フラグ4053、及びブロック番号4054で特徴付けられる。
【0049】
ここで、ホスト計算機100から不揮発性メモリ1011への、データのリードアクセス方法とライトアクセス方法について、簡単に説明する。
【0050】
図8Aは、ホスト計算機100から不揮発性メモリ1011上のデータへのリードアクセス方法を説明する図である。
【0051】
ホスト計算機100から不揮発性メモリ1011へリードアクセス要求があると、ホスト計算機100から見た論理アドレスは、メモリコントローラ1010により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル10120を用いて、論理アドレス4000と物理アドレス4001との対応により、行われる。図8Aの例では、論理アドレスはLG*L−3であり、物理ブロック番号Blyと物理ページ番号Plxを持つ物理アドレスに変換されている。
【0052】
不揮発性メモリ1011上では、データブロックのうち、物理ブロック番号がBlyのブロックにアクセスし、物理ページ番号がPlxのデータページのデータを読み込む。
【0053】
図8Bは、ホスト計算機100から不揮発性メモリ1011へのデータのライトアクセス方法を説明する図である。
【0054】
ホスト計算機100から不揮発性メモリ1011へライトアクセス要求があると、ホスト計算機100から見た論理アドレスは、メモリコントローラ1010により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル10120を用いて、論理アドレス4000と物理アドレス4001との対応により、行われる。図8Bの例では、論理アドレスはLG*L−3であり、物理ブロック番号Blzと物理ページ番号Pltを持つ物理アドレスに変換されている。なお、物理ブロック番号と物理ページ番号は、図8Aに示した値であるBlyとPlxから、BlzとPltにそれぞれ更新されている。
【0055】
不揮発性メモリ1011上では、物理ブロック番号がBlzのスクラッチブロックにアクセスし、物理ページ番号がPltのページ(空きページ)にデータを書き込む。データが書き込まれると、物理ページ番号がPltのページは、空きページから有効なデータページに変わる。
【0056】
図5A〜図5Dは、データ書き込み時の管理テーブルの更新処理過程を示す図である。特に、復元対象とする各種管理テーブルの更新方法、及び各種管理テーブルを復元する際に用いるブロック履歴管理テーブルの構築方法を示している。
【0057】
図5Aは、データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【0058】
ステップ5000では、ホスト計算機100が発行した書き込み論理アドレス及びデータを、メモリコントローラ1010が受信する。以下のステップで、書き込み可能なページを特定することに伴う管理テーブルの参照・更新処理を実行する。
【0059】
ステップ501では、書き込み可能なページを特定する。図5Bは、ステップ501で行う、書き込み可能なページを特定する処理のフローチャートを示す図である。以下では、ステップ501の処理の詳細を、図5Bを用いて説明する。
【0060】
ステップ5010で、スクラッチブロックの有無を確認する。すなわち、該当する論理グループにスクラッチブロックが割り当てられているかどうかを調べる。割り当てられたスクラッチブロックがある場合は、ステップ5013に進む。
【0061】
割り当てられたスクラッチブロックがない場合には、ステップ5011で、消去済みブロックの中から1つのブロックを選択し、スクラッチブロックに割り当てる。そして、スクラッチブロック管理テーブル10121、及び消去済みブロック管理テーブル10123を更新する。
【0062】
ステップ5012にて、ブロック履歴管理テーブル10125を更新する。すなわち、ブロック履歴管理テーブル10125に、有効フラグ4052として、物理ブロック番号4054が有効であることを示す値(例えば1)を設定し、割り当て・消去フラグ4053として、割り当てブロックであることを示す値(例えば0)を設定する。そして、割り当てた物理ブロック番号4054と、割り当て先となる論理グループ番号4051と、登録履歴番号4050も、ブロック履歴管理テーブル10125に記録する。登録履歴番号4050は、書き込みを行う過程で重複のない番号であればよい。簡便さのために、1ずつ増加する自然数を順に割り当ててもよい。さらに、該当する論理グループに対応する割り当てブロック数4055の値を、1だけ増加させる。
【0063】
ステップ5013では、スクラッチブロックとして割り当てたブロック番号を参照する。すなわち、スクラッチブロック管理テーブル10121より、書き込み先となる物理ブロック番号4011を特定する。
【0064】
ステップ5014では、特定した物理ブロック番号4011を用いて物理ブロック管理テーブル10124を参照し、物理ブロックの書き込み可能ページ番号4044を取得する。これにより、該当する物理ブロックの書き込み可能なページを特定することができる。
【0065】
以上で、ステップ501の処理の説明を終了する。図5Aに戻って、ステップ501の次の処理であるステップ5001から説明を続ける。
【0066】
ステップ5001では、ステップ501の結果得られたページにデータを書き込む。このページのデータ構造は図3Bに示しているが、データフィールド3010に、ステップ5000で受信したデータを設定する。そして、ホスト計算機100から受信したデータを格納していることを示すページデータ属性3011、ステップ5000にてホスト計算機100が指定した論理アドレス3012、及び同一の論理アドレス3012に対応するデータを区別するために一意に順序付けられた書き込みデータ番号3013も、ページに書き込む。
【0067】
ステップ502では、ステップ5001でのページへの書き込み後に、各種管理テーブルを更新する。図5Cは、ステップ502で行う、各種管理テーブルを更新する処理のフローチャートを示す図である。以下では、ステップ502の処理の詳細を、図5Cを用いて説明する。
【0068】
ステップ5020で、書き込みを行ったスクラッチブロック内に空きページが残っていることを確認する。
【0069】
空きページがある場合には、ステップ5023に遷移し、該当するスクラッチブロックの物理ブロック管理テーブル10124内の、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を更新する。
【0070】
空きページがない場合には、ステップ5021に遷移し、該当するスクラッチブロックをデータブロック管理テーブル10122に登録する。さらに、スクラッチブロック管理テーブル10121において、該当ブロックのフラグ4012を無効であることを示す値に設定し、このブロックを削除する。
【0071】
ステップ5023またはステップ5021から引き続き、ステップ5022に遷移し、更新元データページを無効にし、更新先データページを有効にすることで、論理・物理アドレス変換テーブル10120と物理ブロック管理テーブル10124を更新する。
【0072】
ステップ5022では、論理・物理アドレス変換テーブル10120において、ライトアクセス対象とした論理アドレス4000に対応する更新元データページの物理アドレス4001を参照し、この物理アドレス4001に対応する物理ブロック管理テーブル10124の情報を更新する。つまり、有効データページ数4042を1だけ減算し、更新元データページに対応するページ位置を示す有効データページフラグ4043を無効であることを示す値に更新する。併せて、論理・物理アドレス変換テーブル10120において、ライトアクセス対象とした論理アドレス4000に対応する更新元データページの物理アドレス4001を、ステップ5013及び5014(図5B参照)にて特定した書き込み先の物理アドレスに書き換える。
【0073】
以上で、ステップ502の処理の説明を終了する。図5Aに戻って、ステップ502の次の処理であるステップ5002から説明を続ける。
【0074】
ステップ5002では、ホスト計算機100に書き込みが終了したことを報告する。
【0075】
最後に、ステップ503で、必要に応じて各種管理テーブルを不揮発性メモリ1011に書き込んで保存する。図5Dは、ステップ503で行う、各種管理テーブルを保存する処理のフローチャートを示す図である。以下では、ステップ503の処理の詳細を、図5Dを用いて説明する。
【0076】
ステップ5030で、データを書き込む過程で、ブロック履歴管理テーブル10125を更新したこと(図5Bのステップ5012を実行したこと)を確認する。書き込み先のスクラッチブロックが割り当てられている場合には、ブロック履歴管理テーブル10125が更新されてなく、ステップ503を終了する。
【0077】
ブロック履歴管理テーブル10125が更新された場合には、ステップ5031で、ブロック履歴管理テーブル10125を不揮発性メモリ1011に書き込む。図3Cに示した管理テーブルページ2011のデータフィールド3020に、更新した部分を含むブロック履歴管理テーブル10125の少なくとも一部を設定し、物理ブロック管理テーブル10124を参照して管理テーブル格納ブロック群2000に含まれるブロックで空きページを含むブロックを任意に1つ選択し、書き込み可能ページ番号4044で指定される空きページに管理テーブルページを書き込む。この際、管理テーブルの値をデータフィールド3020に格納していることを示すページデータ属性3021、データフィールド3020に格納した管理テーブルの領域を一意に指定する管理テーブルアドレス3022、及び同一の管理テーブルアドレス3022を区別するために一意に順序付けられた管理テーブル書き込み番号3023と共に書き込む。
【0078】
ステップ5032では、物理ブロック管理テーブル10124の更新箇所である、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を更新する。
【0079】
ステップ5033では、ブロック履歴管理テーブル10125内の割り当てブロック数4055の総和が、予め定めた上限値に到達したかどうかを確認する。この上限値は、一例として、データ記録装置101の起動後に、各種管理テーブルを復元するために設定された時間を考慮して決定してもよい。
【0080】
なお、割り当てブロック数4055の総和が予め定めた上限値に到達した場合には、各種管理テーブルを不揮発性メモリ1011に書き込んで保存するので、「割り当てブロック数の総和が予め定めた上限値に到達する」ことを「保存条件」と呼ぶ。
【0081】
この割り当てブロック数4055は、データ書き込み時に到達するステップ5011(図5B参照)において、該当する論理グループに属するスクラッチブロックを割り当てた時に更新される値である。各論理グループへのデータ書き込み頻度が高い論理グループは、スクラッチブロックが割り当てられる頻度が高く、割り当てブロック数4055が上限値に到達する頻度が高くなる。すなわち、管理テーブルの更新頻度が高くなる。
【0082】
一方、データ書き込み頻度が低い論理グループは、スクラッチブロックが割り当てられる頻度が低く、割り当てブロック数4055が上限値に到達する頻度が低くなる。すなわち、管理テーブルの更新頻度が低くなる。
【0083】
従って、割り当てブロック数4055により、管理テーブルの更新頻度がわかる。
【0084】
このように「保存条件」を設定することにより、データ書き込みに伴い発生する管理テーブルのうち、更新頻度が高い一部分だけを選択的に不揮発性メモリに保存することができるようになる。このような保存方法を用いると、更新されない管理テーブルを保存せずに済むため、管理テーブルを不揮発性メモリ1011に書き込むことに伴う、ホスト計算機100から見た応答時間の増大を防ぐことができる。
【0085】
なお、管理テーブルのうち、更新頻度が高い一部分だけを選択する方法としては、一例として、更新頻度の基準値を予め定めておき、管理テーブルの更新頻度がこの基準値より大きいものを選択することができる。
【0086】
割り当てブロック数4055の総和が、予め定めた上限値に到達していない場合には、ステップ503を終了する。予め定めた上限値に到達した場合には、ステップ50340に遷移する。
【0087】
ステップ50340では、保存対象とする管理テーブルを選択する。具体的には、割り当てブロック数4055が多い論理グループ番号を、1つまたは複数選択する。
【0088】
ステップ50341にて、選択した管理テーブルを不揮発性メモリ1011に書き込む。具体的には、選択した論理グループ番号に属する論理・物理アドレス変換テーブル10120の一部と、選択した論理グループ番号に属するデータブロック管理テーブル10122の一部と、物理ブロック管理テーブル10124のうち、保存対象とするデータブロック管理テーブル10122に登録された物理ブロックの情報を、管理テーブルページ2011の構成に従って、管理テーブル格納ブロック群2000内の空きページに書き込む。
【0089】
ステップ50342にて、管理テーブルページ2011を書き込んだ物理ブロックに対応する物理ブロック管理テーブル10124を更新する。
【0090】
ステップ5035では、ブロック履歴管理テーブル10125を更新する。具体的には、ブロック履歴管理テーブル10125から、保存対象として選択した論理グループ番号4051を有するブロックに対応する有効フラグ4052を、無効であることを示す値(例えば0)に設定する。併せて、選択した論理グループ番号4051に対応する割り当てブロック数4055を0にクリアする。
【0091】
さて、ある論理グループに対応する割り当てブロック数4055が多いことは、当該論理グループに多くのスクラッチブロックが割り当てられ、高い頻度でデータ更新が発生したことを意味する。よって、選択的に割り当てブロック数4055が多い論理グループに対応する管理テーブルを保存することで、データ更新頻度が低い管理テーブルを保存する頻度を低減させることができる。
【0092】
ステップ5036では、消去済みブロック管理テーブル10123を保存するための既定の条件を満たしていることを確認する。既定の条件を満たしていない場合には、ステップ503を終了する。既定の条件を満たしている場合には、ステップ5037に遷移する。
【0093】
既定の条件とは、ブロック履歴管理テーブル10125に登録したブロックの登録履歴番号4050の最大値(Aと表記する)が、前回に消去済みブロック管理テーブル10123を保存した時に使用した最大値(Cと表記する)と比較して、十分に大きな値であることである。十分に大きな値であるかどうかの判定方法としては、一例として、判定のための基準値を予め定めておき、最大値Aがこの基準値より大きくなれば十分に大きな値に達したとみなすことができる。ブロック履歴管理テーブル10125に登録した情報は登録履歴番号4050により一意に順序付けされるので、消去済みブロック管理テーブル10123の保存頻度を自由に制御できることは自明である。一例として、簡便さのために、登録履歴番号4050の最大値Aを閾値として設定し、これが予め定めた一定値Bの倍数となることを既定の条件としてもよい。
【0094】
特に、ブロック履歴管理テーブル10125に登録されたブロックの登録履歴番号4050が、前回に消去済みブロック管理テーブル10123を保存した際に使用した最大値Cを上回るブロックが、前回に保存した後に消去済みブロック管理テーブル10123に登録されたブロックか、またはスクラッチブロックとして割り当てられて消去済みブロック管理テーブル10123から削除されたブロックである。
【0095】
ステップ5037では、消去済みブロック管理テーブル10123の少なくとも一部を、不揮発性メモリ1011に保存する。具体的には、消去済みブロック管理テーブル10123の少なくとも一部をデータフィールド3020(図3C参照)に設定する。そして、物理ブロック管理テーブル10124を参照して、管理テーブル格納ブロック群2000に含まれるブロックで空きページを含むブロックを任意に1つ選択し、書き込み可能ページ番号4044で指定される空きページに管理テーブルページ2011(図2参照)を書き込む。
【0096】
ステップ5038にて、ブロック履歴管理テーブル10125を更新する。具体的には、ブロック履歴管理テーブル10125において、有効フラグ4052が無効であることを示す値(例えば0)であり、かつ、登録履歴番号4050がステップ5036で既定の条件に用いた値Aを下回るものを削除する。そして、保存対象として選択した論理グループ番号4051に対応する割り当てブロック数4055を再計算する。
【0097】
ステップ50390では、ステップ5031と同様に、ブロック履歴管理テーブル10125を不揮発性メモリ1011に書き込む。
【0098】
ステップ50391では、ステップ5032と同様に、物理ブロック管理テーブル10124を更新する。
【0099】
以上で、ステップ503の処理の説明を終了する。図5A〜図5Dに示したステップを経て、データ書き込み時の処理が終了する。
【0100】
図6は、ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【0101】
ステップ600にて、ホスト計算機100から書き込み論理アドレスとデータを受信し、書き込み要求を受け付ける。
【0102】
ステップ601で、ブロック消去処理を実行することを確認する。消去済みブロック管理テーブル10123に登録された有効なブロックの数(消去済みブロックの残数)が、予め定めた下限値より大きい場合は、ステップ602以後の処理を行わず、そのまま書き込み処理を継続するために、図5Aで示した処理に遷移する。消去済みブロックの残数が予め定めた既定値以下である場合、ステップ602に遷移する。
【0103】
ステップ602では、データブロックの中から消去対象のブロックを選択する。選択方法の一例としては、有効な登録データブロックの中から、有効データページ数4042が少ないものを選択すればよい。選択方法としては、一例として、選択するための基準値を予め定めておき、有効データページ数4042がこの基準値より小さいものを選択することができる。
【0104】
ステップ603では、選択したデータブロックに格納されている有効データページ数が0となるまで、ステップ604を再帰的に実行する。
【0105】
ステップ604では、選択したデータブロックに格納されている有効データページを、スクラッチブロックにコピーする。ステップ604の実行後、ステップ603に戻り、物理ブロック管理テーブル10124上の有効データページ数4042を参照し、有効データページ数4042が0であることを確認した時点で、ステップ605に遷移する。
【0106】
ステップ605では、選択したブロックに対してブロック消去コマンドを発行し、選択したブロックを消去する。引き続いて、例えば当該ブロックの先頭ページに、ブロックヘッダページ2010に示した構成(図3A参照)でブロック消去回数3000を記録する。
【0107】
ステップ606にて、データブロック管理テーブル10122、物理ブロック管理テーブル10124、及び消去済みブロック管理テーブル10123を更新する。具体的には、データブロック管理テーブル10122から、ブロック消去を実行した物理ブロック番号4022に対応するフラグ4021を、無効であることを示す値(例えば0)に設定する。さらに、物理ブロック管理テーブル10124において、ブロック消去した物理ブロック番号4040に対応する情報である消去回数4041を増加させ、有効データページ数4042を0に設定し、有効データページフラグ4043を0に設定し、書き込み可能ページ番号4044を1に設定する。さらに、消去済みブロック管理テーブル10123において、ブロック消去を済ませたブロックの番号を消去済みブロック番号4030に登録する。
【0108】
ステップ607では、ブロック履歴管理テーブル10125を更新する。ブロック消去を済ませた物理ブロック番号4054を、所属していた論理グループ番号4051と共に、ブロック履歴管理テーブル10125に登録する。このとき、有効フラグ4052に1を設定し、割り当て・消去フラグ4053には、消去済みブロックであることを示す値(一例として1)を設定する。登録履歴番号4050は、複数のブロック番号の間で重複がない値であればよく、例えば一意に増加する自然数を順次割り当ててもよい。
【0109】
ステップ608では、各種管理テーブルを保存する。保存には、図5Aに示したデータ書き込み時のフローチャートにおけるステップ503と同じ処理を行う。詳細には、図5Dに示した各種管理テーブルを保存する処理のフローチャートに示した処理を行う。
【0110】
図5A〜図5Dと図6を用いて、データ記録装置に対する書き込み処理の過程で行う、各種管理テーブルの構築、更新方法を示した。
【0111】
図7A〜図7Cは、管理テーブルの復元処理のフローチャートを示す図である。
【0112】
図7Aは、管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。図7Aには、電源をデータ記録装置101に入力した後、各種管理テーブルを復元し、ホスト計算機100がデータ記録装置101に対して書き込みを再開できる状態に到達するまでの過程を示している。
【0113】
ステップ700では、管理テーブル格納ブロック群2000に保存した論理・物理アドレス変換テーブル10120、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125を、不揮発性メモリ1011から読み出し、メモリ1012に記録する。
【0114】
これらの管理テーブルは、電源が遮断された時点で保存されている管理テーブルのうち、最新の管理テーブルである。すなわち、図5A〜図5D及び図6のフローチャートにおいて、管理テーブルページ2011の構成(図3C参照)に従って、管理テーブルアドレス3022と管理テーブル書き込み番号3023と共に所定の書き込み単位で記録した管理テーブルのうち、管理テーブル書き込み番号3023が最新のデータである管理テーブルである。
【0115】
電源が遮断された時点での最新の管理テーブルを読み出す方法の例として、管理テーブルアドレス3022と管理テーブル書き込み番号3023を用いて、最新の管理テーブルデータ3020を取得する方法がある。他にも、メモリ1012に加えて不揮発性メモリをデータ記録装置101に搭載し、最新の管理テーブルの格納位置を示すポインタ値をこの不揮発性メモリに格納する方法がある。いずれの方法であっても、電源が遮断される前に不揮発性メモリ1011に最後に保存された管理テーブル群を、管理テーブル格納ブロック群2000からメモリ1012に読み出すことができればよい。
【0116】
ステップ701では、論理グループを1つ選択し、ステップ700で取得した最新のブロック履歴管理テーブル10125を用いて、選択した論理グループごとに、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、及び物理ブロック管理テーブル10124を復元する。
【0117】
図7Bは、ステップ701で行う、これらの管理テーブルを復元する処理のフローチャートを示す図である。
【0118】
ステップ70100では、ステップ701で選択した論理グループを含むブロックが、ブロック履歴管理テーブル10125に登録されているかどうかを判定する。すなわち、選択した論理グループの番号をブロック履歴管理テーブル10125の論理グループ番号4051に有するブロックがあるかどうかを判定する。選択した論理グループがブロック履歴管理テーブル10125に登録されていない場合には、ステップ70111に遷移し、登録されている場合には、ステップ70101に遷移する。
【0119】
ステップ70111では、選択した論理グループに属する管理テーブルの復元処理を終了し、復元対象とする次の論理グループを選択する。
【0120】
ステップ70101では、ブロック履歴管理テーブル10125において、登録履歴番号4050が古い順に、有効フラグ4052が、有効であることを示す値(例えば1)であるブロックを1つ選択する。
【0121】
ステップ70102では、割り当て・消去フラグ4053を用いて、選択したブロックがスクラッチブロックに割り当てられているか判定する。このブロック(選択した割り当てブロック)には、ステップ700で読み出した管理テーブルを不揮発性メモリ1011に保存した時点より後の、データ書き込みを伴う更新データが格納されている。割り当て・消去フラグ4053により、選択したブロックがスクラッチブロックとして割り当てられている場合(割り当てブロックである場合)は、ステップ70103に遷移する。選択したブロックがスクラッチブロックに割り当てられていない場合は、割り当て・消去フラグ4053が消去済みブロックであることを示している場合であり、ステップ70112に遷移する。
【0122】
ステップ70112とステップ70113は、選択したブロックが消去済みブロックである場合である。ステップ70112では、データブロック管理テーブル10122から選択したブロックを削除する。ステップ70113では、選択したブロックに対応する物理ブロック管理テーブル10124を更新し、ステップ70101に戻る。特に、消去回数4041を1だけ増加させる。
【0123】
ステップ70103〜ステップ70110は、選択したブロックが割り当てブロックである場合である。
【0124】
ステップ70103では、選択したブロックのデータページ2012のデータページヘッダ情報3014を取得するためのページ番号を選択する。
【0125】
ステップ70104では、ステップ70103で選択したページ番号に対応するデータページ2012において、データページヘッダ情報3014が記録されていることを確認する。データページヘッダ情報3014が記録されていない場合は、ステップ70114に遷移し、記録されている場合は、ステップ70105に遷移する。
【0126】
ステップ70114において、選択したブロックは、スクラッチブロックとして割り当てられた有効なブロックであるため、スクラッチブロック管理テーブル10121に登録する。
【0127】
ステップ70105では、データページヘッダ情報3014を取得し、データページヘッダ情報3014から論理アドレス3012と書き込みデータ番号3013を取得する。
【0128】
ステップ70107では、取得した論理アドレス3012を用いて、論理アドレス3012に対応する物理アドレス、すなわち、ステップ70103でデータページヘッダ情報3014の読み込みを行った物理アドレスを、論理・物理アドレス変換テーブル10120に登録する。
【0129】
ステップ70108では、物理ブロック管理テーブル10124を更新する。
【0130】
なお、特許文献3では、書き込みデータ番号3013を用いて、論理・物理アドレス変換テーブル10120に登録されている物理アドレス4001の新旧を判定する方法が示されているが、本実施例では、この手続きを必要としない。なぜならば、図7Aのステップ700で保存した論理・物理アドレス変換テーブル10120の状態から更新があった場合には、ブロック履歴管理テーブル10125にスクラッチブロックが登録された順でデータが書き込まれるため、ステップ70101において、ブロック履歴管理テーブル10125の登録履歴番号4050の順で有効な割り当てブロックを読み出すことで、更新順序を決定することが可能であるからである。
【0131】
ステップ70109では、データページヘッダ情報3014を取得したページが、ブロックの最終ページであるかを判定する。ブロックの最終ページでない場合は、ステップ70103に遷移する。ブロックの最終ページである場合は、ステップ70110に遷移する。
【0132】
ステップ70110では、当該ブロックは、データブロックであるため、データブロック管理テーブル10122に登録する。
【0133】
図7Bに示した処理を全論理グループに対して実行することで、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、及び物理ブロック管理テーブル10124を復元することができる。
【0134】
以上、図7Aのステップ701での処理を説明した。図7Aでは、ステップ701に引き続き、ステップ702に遷移する。
【0135】
ステップ702では、消去済みブロック管理テーブル10123を復元する。
【0136】
図7Cは、ステップ702で行う、消去済みブロック管理テーブル10123を復元する処理のフローチャートを示す図である。
【0137】
ステップ800では、ステップ701に引き続き、ブロック履歴管理テーブル10125に登録された登録履歴番号4050のうち、最大値を取得する。
【0138】
ステップ801では、復元対象とするブロックの登録履歴番号4050の範囲を設定する。この範囲は、図7Aのステップ700で消去済みブロック管理テーブル10123を読み出した時点から後に、消去済みブロックに登録されたかスクラッチブロックに割り当てられたブロックの登録履歴番号の範囲である。すなわち、登録履歴番号4050の最大値と、図5Dのステップ5036で用いた既定の条件(消去済みブロック管理テーブル10123を不揮発性メモリ1011に保存するための条件)とを用いて、ステップ5036で示した登録履歴番号4050の最大値C+1から、復元対象とするブロックの登録履歴番号4050の最大値を設定する。
【0139】
ステップ802では、ブロック履歴管理テーブル10125から、登録履歴番号4050がステップ801で設定した範囲にある登録ブロックを1つ選択する。ブロック履歴管理テーブル10125に登録されたブロックのうち、この範囲にあるブロックを、登録履歴番号順に1つずつ読み出す。
【0140】
ステップ803では、読み出したブロックが、スクラッチブロックに割り当てられたブロック(割り当てブロック)か、ブロック履歴管理テーブル10125の割り当て・消去フラグ4053を用いて判定する。割り当てブロックの場合は、ステップ806に遷移し、割り当てブロックでない場合は、ステップ804に遷移する。
【0141】
ステップ806では、読み出したブロックが割り当てブロックであるので、読み出したブロックを、ステップ700で読み出した消去済みブロック管理テーブル10123から削除する。この後、ステップ802に戻る。
【0142】
ステップ804では、読み出したブロックが割り当てブロックでない場合である。この場合、読み出したブロックは消去済みブロックであるので、消去済みブロック管理テーブル10123に登録する。具体的には、消去済みブロック管理テーブル10123で、フラグ4031が無効である物理ブロック番号4032に登録し、フラグ4031を有効にする。
【0143】
ステップ805では、ステップ801で設定した範囲に、ブロック履歴管理テーブル10125に登録しているブロックが残っているか確認する。ブロックが残っている場合は、ステップ802に戻る。ステップ801で設定した範囲にブロックがなくなった時点で、消去済みブロック管理テーブル10123の復元が終了する。
【0144】
以上、図7Aのステップ702での処理を説明した。
【0145】
図7Bと図7Cに示す方法で管理テーブルの復元処理を終えたら、図7Aのステップ703に遷移する。この時点で、ホスト計算機100からのデータ読み出し・書き換え要求を受け付けることができるようになる。
【符号の説明】
【0146】
100…ホスト計算機、101…データ記録装置、102…データパス、200…ブロック、1010…メモリコントローラ、1011…不揮発性メモリ、1012…メモリ、2000…管理テーブル格納ブロック群、2001…スクラッチブロック群、2002…データブロック群、2003…消去済みブロック群、2010…ブロックヘッダページ、2011…管理テーブルページ、2012…データページ、2013…空きページ、3000…ブロック消去回数、3001…空き領域、3010…データ、3011…ページデータ属性、3012…論理アドレス、3013…書き込みデータ番号、3014…データページヘッダ情報、3020…データ、3021…ページデータ属性、3022…管理テーブルアドレス、3023…管理テーブル書き込み番号、3024…管理テーブルページヘッダ情報、4000…論理アドレス、4001…物理アドレス、4002…論理グループ番号、4010…スクラッチブロック番号、4011…物理ブロック番号、4012…フラグ、4013…論理グループ番号、4020…データブロック番号、4021…フラグ、4022…物理ブロック番号、4023…論理グループ番号、4030…消去済みブロック番号、4031…フラグ、4032…物理ブロック番号、4040…物理ブロック番号、4041…消去回数、4042…有効データページ数、4043…有効データページフラグ、4044…書き込み可能ページ番号、4050…登録履歴番号、4051…論理グループ番号、4052…有効フラグ、4053…割り当て・消去フラグ、4054…物理ブロック番号、4055…割り当てブロック数、10120…論理・物理アドレス変換テーブル、10121…スクラッチブロック管理テーブル、10122…データブロック管理テーブル、10123…消去済みブロック管理テーブル、10124…物理ブロック管理テーブル、10125…ブロック履歴管理テーブル。
【技術分野】
【0001】
本発明は、データ記録装置内の不揮発性メモリを制御するメモリコントローラと、このメモリコントローラを備えるデータ記録装置に関する。
【背景技術】
【0002】
情報機器の補助記憶装置として、一般に磁気ディスク記憶装置が用いられている。磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【0003】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリEEPROM(Electrically Erasable Programmable Read only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【0004】
フラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、以下の4点に挙げるような使用上の制限がある。第1に、書き込み単位(一般的にページと呼ばれる)と消去単位(一般にブロックと呼ばれる)が決まっており、消去単位は書き込み単位よりも大きいことである。第2に、データを上書きする際には一度データを消去し、再度書き込みを行う必要があることである。第3に、複数のページで構成される1つのブロックにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。第4に、各ブロックには消去回数に制限があることである。
【0005】
また、不揮発性メモリの読み出し及び書き込み速度を改善するための技術は進展しないにも関わらず、メモリの記録容量は、微細化技術の進展に伴い、倍増する傾向を維持し続けている。最新の不揮発性メモリを使用したデータ記録装置を設計する場合には、データ記録装置に設定した論理記録容量の倍増に伴い、メモリを管理するための管理テーブルの容量も倍増してしまう。
【0006】
上述したフラッシュメモリの特性を考慮し、データ消去に伴うページデータのコピー量を低減させるために、所定の書き込み単位でデータ構造を管理するというメモリ制御方法を用いると、管理テーブルの容量が増大する。
【0007】
管理テーブルは、アクセス速度に優れた揮発性メモリに保持することが一般的であるが、突然に電源が遮断されてしまった場合には失われてしまう。このため、管理テーブルを復元させる様々な方法が提案されてきた。特に、論理・物理アドレス変換テーブルを復元するための方法が、数多く提案されてきた。論理・物理アドレス変換テーブルとは、データ記録装置が接続されるホスト計算機が指定する論理アドレスを、データが実際に格納されている物理アドレスに変換する際に使用するテーブルである。
【0008】
最も簡便な方法は、電源補助装置をデータ記録装置に搭載し、電源遮断時に、不揮発性メモリに管理テーブルを書き込むことである。しかし、電源補助装置の容量は進展しないにも関わらず、不揮発性メモリの物理記録容量が倍増し、データ記録装置の論理記録容量が倍増している。このため、論理記憶容量の拡張性を維持したまま管理テーブルを保護する方法が望まれる。
【0009】
特許文献1と特許文献2には、データページに付与したヘッダ情報を用いて、全データページのヘッダ情報を走査することで、電源補助装置を搭載せずに上記の管理テーブルを復元する方法が開示されている。特許文献1及び特許文献2に記載の復元方法は、格納されたデータの新旧を判定する方法を示したものとして、特許文献3で開示されている識別情報を応用した方法に立脚している。
【0010】
しかし、不揮発性メモリに対するヘッダ情報の読み出し速度が容易には改善されないため、管理テーブルを復元する時間が延びてしまい、電源入力後、短時間でホスト計算機によるデータアクセスを開始できないというという課題がある。
【0011】
特許文献4、特許文献5、及び特許文献6には、この課題に対して、不揮発性メモリに定期的に管理テーブルを保存し、保存した後に発生した管理テーブルの更新差分を復元する方法が開示されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特許第4079506号公報
【特許文献2】特開2003−167795号公報
【特許文献3】特許第3070539号公報
【特許文献4】米国特許第7516267号
【特許文献5】特表2008−511913号公報
【特許文献6】米国特許第7721040号
【発明の概要】
【発明が解決しようとする課題】
【0013】
特許文献4、5、6に開示された方法を適用したメモリ制御方法は、電源補助装置を必要とせず、短時間で管理テーブルを復元することができる。その一方で、管理テーブルを不揮発性メモリに保存する頻度を低減させるために、大量のデータ消去済みのブロックを確保しておく必要がある。そのため、論理記録容量が変わらないのにも関わらず、有効なデータを保持するブロックの数が減少してしまい、1ブロックに含まれる有効データページの数が増加してしまう。結果として、特許文献1に記載されているメモリ制御方法を適用することで得られるはずである、データ消去に伴い発生するページデータ数を抑制する効果が失われてしまうという課題がある。
【0014】
さらに、特許文献4、5、6に開示された方法では、一度にすべての管理テーブルを一括して不揮発性メモリに保存することを要求している。不揮発性メモリの書き込み速度が改善せず、管理テーブルの容量が倍増することを鑑みれば、管理テーブルを不揮発性メモリに保存する時間が倍増してしまうことは自明である。実際、論理記録容量が倍増するに従って、ホスト計算機がデータ記録装置に対してデータアクセスをする際の応答遅延時間が倍増してしまうという課題がある。
【0015】
本発明の目的は、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減し、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持しながら、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元する機能を備えるメモリコントローラを提供することである。
【課題を解決するための手段】
【0016】
本発明によるメモリコントローラは、次のような特徴を備える。
【0017】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラである。前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有する。前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有する。前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有する。前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含む。前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存する。
【発明の効果】
【0018】
本発明によるメモリコントローラは、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減することと、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持することが可能であり、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施例によるデータ記録装置のハードウェア構成例を示す図である。
【図2】不揮発性メモリの構成を示す図である。
【図3A】ブロックヘッダページに格納するデータの構成を示す図である。
【図3B】データページに格納するデータの構成を示す図である。
【図3C】管理テーブルページに格納するデータの構成を示す図である。
【図4A】論理・物理アドレス変換テーブルのデータ構造の例を示す図である。
【図4B】スクラッチブロック管理テーブルのデータ構造の例を示す図である。
【図4C】データブロック管理テーブルのデータ構造の例を示す図である。
【図4D】消去済みブロック管理テーブルのデータ構造の例を示す図である。
【図4E】物理ブロック管理テーブルのデータ構造の例を示す図である。
【図4F】ブロック履歴管理テーブルのデータ構造の例を示す図である。
【図5A】データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【図5B】書き込み可能なページを特定する処理のフローチャートを示す図である。
【図5C】各種管理テーブルを更新する処理のフローチャートを示す図である。
【図5D】各種管理テーブルを保存する処理のフローチャートを示す図である。
【図6】ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【図7A】管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。
【図7B】各種管理テーブルを復元する処理のフローチャートを示す図である。
【図7C】消去済みブロック管理テーブルを復元する処理のフローチャートを示す図である。
【図8A】ホスト計算機から不揮発性メモリ上のデータへのリードアクセス方法を説明する図である。
【図8B】ホスト計算機から不揮発性メモリへのデータのライトアクセス方法を説明する図である。
【発明を実施するための形態】
【0020】
本発明によるメモリコントローラは、スクラッチブロック(データを書き込むことができるページを含むブロック)として割り当てたか、データ消去を行ったブロックの履歴を逐次記録する。これにより、管理テーブルを保存する時点で消去済みのブロックを不揮発性メモリに大量に保持する必要がなく、適当に選択した管理テーブルの一部だけを保存することが可能となる。従って、不揮発性メモリに保存した管理テーブルからの更新差分となるデータだけを追跡することができる。この結果、データ消去を実行する際に必要となる有効なページデータのコピー量を抑制することができ、データ書き換え速度の高速化、及び総書き換え容量の低下を防ぐことによる長寿命化が図れる。
【0021】
また、追跡記録するブロックの数を任意に設定できるため、管理テーブルの保存周期を十分に長く設定することができる。このため、データ書き換え速度の高速性を維持することができる。
【0022】
また、本発明によれば、適当に選択した管理テーブルの一部だけを不揮発性メモリに保存すればよい。このため、論理記録容量を倍増させても、管理テーブルを一括して保存することによる応答遅延時間を任意に縮減することができる。
【0023】
さらに、本発明によれば、データ記録装置の電源遮断後に、不揮発性メモリに保存した管理テーブルを含む情報を用いて、最新の管理テーブルを復元することができる。
【0024】
以下、図面を用いて本発明によるメモリコントローラ及びデータ記録装置の実施例を説明する。
【0025】
図1は、本実施例によるデータ記録装置のハードウェア構成例を示す図である。データ記録装置101は、本実施例によるメモリコントローラ1010、1つまたは複数の不揮発性メモリ1011、及びメモリ1012を備え、データパス102を介して、外部システムであるホスト計算機100と接続される。
【0026】
本明細書に記載の不揮発性メモリとは、以下の特徴を有するものである。すなわち、ある所定の書き込み単位とこの書き込み単位よりも大きいデータ消去単位を持ち、データを書き換えるためには事前にデータ消去処理を必要とする。
【0027】
メモリ1012は、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125を格納する。メモリ1012は、アクセス速度の観点から、揮発性RAMを用いてよい。また、起動時に上記のテーブル10120〜10125の一部または全部を復元するために必要な処理を省くために、不揮発性メモリを用いてもよい。
【0028】
以下の説明では、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125のことを、「管理テーブル」とも称する。
【0029】
図2は、不揮発性メモリ1011の構成を示す図である。不揮発性メモリ1011は、1つ以上のブロック200と呼ばれるデータ消去単位から構成される。物理ブロックは、最小の書き込み単位で構成され、ページと称する。不揮発性メモリ1011を構成するブロック群は、管理テーブル格納ブロック群2000、スクラッチブロック群2001、データブロック群2002、及び消去済みブロック群2003のいずれか1つに分類される。
【0030】
管理テーブル格納ブロック群2000は、管理テーブル10120〜10125の一部または全部を格納する。スクラッチブロック群2001は、メモリコントローラにより指示される書き込みデータを格納するページを提供する。データブロック群2002は、書き込まれたデータを保持する。消去済みブロック群2003は、ブロック消去を済ませたブロックである。
【0031】
管理テーブル格納ブロック群2000の各ブロックは、ブロックヘッダページ2010、及びその他の複数のページから構成される。その他の複数のページには、管理テーブル10120〜10125のデータの一部を格納することができ、このデータを格納したページを管理テーブルページ2011と称する。
【0032】
スクラッチブロック群2001の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機100が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページ2012と称する。特に、データを書き込むことができるページを含むブロックを、スクラッチブロックと称する。
【0033】
データブロック群2002の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機100が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページと称する。
【0034】
消去済みブロック群2003の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、データを書き込み可能なページが含まれる。特に、データページと管理テーブルページのいずれも含まないブロックを、消去済みブロックと称する。
【0035】
管理テーブル格納ブロック群2000、スクラッチブロック群2001、データブロック群2002、及び消去済みブロック群2003の各ブロックは、データが格納されていないページである空きページ2013を有することができる。
【0036】
不揮発性メモリ1011を構成するブロックの総数は一定であるが、各ブロックが上記のブロック群2000〜2003いずれか1つに排他的に分類される限り、個々のブロックが属する群が動的に変更されてもよい。
【0037】
さらに、管理テーブルの真値を格納するページを特定できるように管理する方法を用いれば、管理テーブル格納ブロック群2000とスクラッチブロック群2001を区別する必要はない。本実施例では、管理テーブルページ2011に格納するデータの特性と、データページ2012に格納するデータの特性の違いを明確にするために、あえてこの2つの群を分割している。
【0038】
図3Aは、ブロックヘッダページ2010に格納するデータの構成を示す図である。ブロックヘッダページ2010は、少なくともブロック消去回数3000を含む。空き領域3001には、少なくともブロックの状態を意味する情報が格納されていてよい。すなわち、空き領域3001は、書き込み及びデータ消去を正常に実行できないことを意味するフラグ、及びエラーが発生した回数を含んでもよい。
【0039】
図3Bは、データページ2012に格納するデータの構成を示す図である。データページ2012は、少なくとも、データ3010、ページデータ属性3011、論理アドレス3012、及び書き込みデータ番号3013を含む。論理アドレス3012は、格納したデータ3010をホスト計算機100が区別するために付与したアドレスである。書き込みデータ番号3013は、同一の論理アドレス3012に対応する複数のデータ3010を区別することを可能にするための番号である。なお、便宜上、ページデータ属性3011、論理アドレス3012、書き込みデータ番号3013を合わせて、データページヘッダ情報3014と称する。データページヘッダ情報3014は、データ3010を一意に特徴付けるための情報である。
【0040】
図3Cは、管理テーブルページ2011に格納するデータの構成を示す図である。管理テーブルページ2011は、少なくとも、データ(管理テーブル値)3020、ページデータ属性3021、管理テーブルアドレス3022、及び管理テーブル書き込み番号3023を含む。管理テーブルアドレス3022は、データ(管理テーブル値)3020に格納している管理テーブルを区別するために付与したアドレスである。管理テーブル書き込み番号3023は、同一の管理テーブルアドレス3022に対応する複数のデータ(管理テーブル値)3020を区別することを可能にするための番号である。なお、便宜上、ページデータ属性3021、管理テーブルアドレス3022、管理テーブル書き込み番号3023を合わせて、管理テーブルページヘッダ情報3024と称する。管理テーブルページヘッダ情報3024は、データ(管理テーブル値)3020を一意に特徴付けるための情報である。
【0041】
図4A〜図4Fは、不揮発性メモリ1011に格納するデータ構造を一意に決定するために用いる管理テーブルの構成例を示す図である。すべての管理テーブルを構成するデータ要素には、互いに重複がないように、管理アドレス番号を設定する。管理アドレス番号の一例として、メモリ1012に格納するアドレスを設定してもよい。また、管理テーブルを所定の書き込み単位で分割した要素ごとに、互いに重複しない適当な番号を設定してもよい。
【0042】
図4Aは、論理・物理アドレス変換テーブル10120のデータ構造の例を示す図である。論理・物理アドレス変換テーブル10120は、管理アドレス番号、論理グループ番号4002、論理アドレス4000、及び物理アドレス4001を含む。物理アドレス4001は、ホスト計算機100が指定した論理アドレス4000に対応するデータを格納し、物理ブロック番号及び物理ページ番号を用いて一意に指定される。論理・物理アドレス変換テーブル10120は、物理アドレス4001を管理するものである。また、論理アドレス4000を一定量に分割した論理アドレス空間の1つ1つを、論理グループと称する。論理グループ番号4002は、論理グループを示す番号である。
【0043】
一例として、論理グループの数LG、及び論理グループを構成する論理アドレスの数Lは、次の条件を満たす限り、任意に指定することができる。すなわち、LGとLの積と所定の書き込み単位を掛けた値が、データ記録装置101に対してホスト計算機100が与えた論理記録容量を超える最小の値で与えられることである。
【0044】
図4Bは、スクラッチブロック管理テーブル10121のデータ構造の例を示す図である。スクラッチブロック管理テーブル10121は、管理アドレス番号、論理グループ番号4013、スクラッチブロック番号4010、フラグ4012、及び物理ブロック番号4011を含む。フラグ4012は、物理ブロック番号4011の利用状態を示す。論理グループ番号4013は、論理グループを示す番号である。スクラッチブロック管理テーブル10121は、論理グループごとに割り当てられる1つまたは複数のスクラッチブロックの管理情報を示している。個々のスクラッチブロックは、スクラッチブロック番号4010で一意に指定され、物理ブロック番号4011及びフラグ4012で特徴付けられる。
【0045】
図4Cは、データブロック管理テーブル10122のデータ構造の例を示す図である。データブロック管理テーブル10122は、管理アドレス番号、論理グループ番号4023、データブロック番号4020、フラグ4021、及び物理ブロック番号4022を含む。フラグ4021は、物理ブロック番号4022の利用状態を示す。論理グループ番号4023は、論理グループを示す番号である。データブロック管理テーブル10122は、論理グループごとに割り当てられる1つまたは複数のデータブロックの管理情報を示している。個々のデータブロックは、データブロック番号4020で一意に指定され、物理ブロック番号4022及びフラグ4021で特徴付けられる。
【0046】
図4Dは、消去済みブロック管理テーブル10123のデータ構造の例を示す図である。消去済みブロック管理テーブル10123は、管理アドレス番号、消去済みブロック番号4030、フラグ4031、及び物理ブロック番号4032を含む。フラグ4031は、物理ブロック番号4032の利用状態を示す。消去済みブロック管理テーブル10123は、データ消去を済ませたブロック群を登録したものである。個々の消去済みブロックは、消去済みブロック番号4030で一意に指定され、物理ブロック番号4032及びフラグ4031で特徴付けられる。
【0047】
図4Eは、物理ブロック管理テーブル10124のデータ構造の例を示す図である。物理ブロック管理テーブル10124は、ブロックの属性である管理アドレス番号、物理ブロック番号4040、消去回数4041、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を含む。有効データページフラグ4043は、有効データページの位置を示す。書き込み可能ページ番号4044は、物理ブロック番号4040で一意に指定されたブロックに書き込みを行えるページの位置を示す。物理ブロック管理テーブル10124は、ブロックの属性を管理するので、物理ブロックの利用状態を管理するために用いられる。個々の物理ブロックは、物理ブロック番号4040で一意に指定され、消去回数4041、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044で特徴付けられる。
【0048】
図4Fは、ブロック履歴管理テーブル10125のデータ構造の例を示す図である。ブロック履歴管理テーブル10125は、2つのテーブルから構成される。1つのテーブルには、管理アドレス番号、登録履歴番号4050、論理グループ番号4051、有効フラグ4052、割り当て・消去フラグ4053、及び物理ブロック番号4054が含まれる。もう1つのテーブルには、管理アドレス番号、論理グループ番号、及び割り当てブロック数4055が含まれる。有効フラグ4052は、利用状態を示し、割り当て・消去フラグ4053は、スクラッチブロックへの割り当てを行った場合とブロック消去を実行した場合とを区別する。割り当てブロック数4055は、論理グループごとに割り当てたスクラッチブロックの数を示す。ブロック履歴管理テーブル10125は、データ消去を済ませたブロック、及びスクラッチブロックとして割り当てたブロックを登録するものである。個々のブロックは、登録履歴番号4050で一意に指定され、ブロックの所属する論理グループ番号4051、有効フラグ4052、割り当て・消去フラグ4053、及びブロック番号4054で特徴付けられる。
【0049】
ここで、ホスト計算機100から不揮発性メモリ1011への、データのリードアクセス方法とライトアクセス方法について、簡単に説明する。
【0050】
図8Aは、ホスト計算機100から不揮発性メモリ1011上のデータへのリードアクセス方法を説明する図である。
【0051】
ホスト計算機100から不揮発性メモリ1011へリードアクセス要求があると、ホスト計算機100から見た論理アドレスは、メモリコントローラ1010により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル10120を用いて、論理アドレス4000と物理アドレス4001との対応により、行われる。図8Aの例では、論理アドレスはLG*L−3であり、物理ブロック番号Blyと物理ページ番号Plxを持つ物理アドレスに変換されている。
【0052】
不揮発性メモリ1011上では、データブロックのうち、物理ブロック番号がBlyのブロックにアクセスし、物理ページ番号がPlxのデータページのデータを読み込む。
【0053】
図8Bは、ホスト計算機100から不揮発性メモリ1011へのデータのライトアクセス方法を説明する図である。
【0054】
ホスト計算機100から不揮発性メモリ1011へライトアクセス要求があると、ホスト計算機100から見た論理アドレスは、メモリコントローラ1010により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル10120を用いて、論理アドレス4000と物理アドレス4001との対応により、行われる。図8Bの例では、論理アドレスはLG*L−3であり、物理ブロック番号Blzと物理ページ番号Pltを持つ物理アドレスに変換されている。なお、物理ブロック番号と物理ページ番号は、図8Aに示した値であるBlyとPlxから、BlzとPltにそれぞれ更新されている。
【0055】
不揮発性メモリ1011上では、物理ブロック番号がBlzのスクラッチブロックにアクセスし、物理ページ番号がPltのページ(空きページ)にデータを書き込む。データが書き込まれると、物理ページ番号がPltのページは、空きページから有効なデータページに変わる。
【0056】
図5A〜図5Dは、データ書き込み時の管理テーブルの更新処理過程を示す図である。特に、復元対象とする各種管理テーブルの更新方法、及び各種管理テーブルを復元する際に用いるブロック履歴管理テーブルの構築方法を示している。
【0057】
図5Aは、データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【0058】
ステップ5000では、ホスト計算機100が発行した書き込み論理アドレス及びデータを、メモリコントローラ1010が受信する。以下のステップで、書き込み可能なページを特定することに伴う管理テーブルの参照・更新処理を実行する。
【0059】
ステップ501では、書き込み可能なページを特定する。図5Bは、ステップ501で行う、書き込み可能なページを特定する処理のフローチャートを示す図である。以下では、ステップ501の処理の詳細を、図5Bを用いて説明する。
【0060】
ステップ5010で、スクラッチブロックの有無を確認する。すなわち、該当する論理グループにスクラッチブロックが割り当てられているかどうかを調べる。割り当てられたスクラッチブロックがある場合は、ステップ5013に進む。
【0061】
割り当てられたスクラッチブロックがない場合には、ステップ5011で、消去済みブロックの中から1つのブロックを選択し、スクラッチブロックに割り当てる。そして、スクラッチブロック管理テーブル10121、及び消去済みブロック管理テーブル10123を更新する。
【0062】
ステップ5012にて、ブロック履歴管理テーブル10125を更新する。すなわち、ブロック履歴管理テーブル10125に、有効フラグ4052として、物理ブロック番号4054が有効であることを示す値(例えば1)を設定し、割り当て・消去フラグ4053として、割り当てブロックであることを示す値(例えば0)を設定する。そして、割り当てた物理ブロック番号4054と、割り当て先となる論理グループ番号4051と、登録履歴番号4050も、ブロック履歴管理テーブル10125に記録する。登録履歴番号4050は、書き込みを行う過程で重複のない番号であればよい。簡便さのために、1ずつ増加する自然数を順に割り当ててもよい。さらに、該当する論理グループに対応する割り当てブロック数4055の値を、1だけ増加させる。
【0063】
ステップ5013では、スクラッチブロックとして割り当てたブロック番号を参照する。すなわち、スクラッチブロック管理テーブル10121より、書き込み先となる物理ブロック番号4011を特定する。
【0064】
ステップ5014では、特定した物理ブロック番号4011を用いて物理ブロック管理テーブル10124を参照し、物理ブロックの書き込み可能ページ番号4044を取得する。これにより、該当する物理ブロックの書き込み可能なページを特定することができる。
【0065】
以上で、ステップ501の処理の説明を終了する。図5Aに戻って、ステップ501の次の処理であるステップ5001から説明を続ける。
【0066】
ステップ5001では、ステップ501の結果得られたページにデータを書き込む。このページのデータ構造は図3Bに示しているが、データフィールド3010に、ステップ5000で受信したデータを設定する。そして、ホスト計算機100から受信したデータを格納していることを示すページデータ属性3011、ステップ5000にてホスト計算機100が指定した論理アドレス3012、及び同一の論理アドレス3012に対応するデータを区別するために一意に順序付けられた書き込みデータ番号3013も、ページに書き込む。
【0067】
ステップ502では、ステップ5001でのページへの書き込み後に、各種管理テーブルを更新する。図5Cは、ステップ502で行う、各種管理テーブルを更新する処理のフローチャートを示す図である。以下では、ステップ502の処理の詳細を、図5Cを用いて説明する。
【0068】
ステップ5020で、書き込みを行ったスクラッチブロック内に空きページが残っていることを確認する。
【0069】
空きページがある場合には、ステップ5023に遷移し、該当するスクラッチブロックの物理ブロック管理テーブル10124内の、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を更新する。
【0070】
空きページがない場合には、ステップ5021に遷移し、該当するスクラッチブロックをデータブロック管理テーブル10122に登録する。さらに、スクラッチブロック管理テーブル10121において、該当ブロックのフラグ4012を無効であることを示す値に設定し、このブロックを削除する。
【0071】
ステップ5023またはステップ5021から引き続き、ステップ5022に遷移し、更新元データページを無効にし、更新先データページを有効にすることで、論理・物理アドレス変換テーブル10120と物理ブロック管理テーブル10124を更新する。
【0072】
ステップ5022では、論理・物理アドレス変換テーブル10120において、ライトアクセス対象とした論理アドレス4000に対応する更新元データページの物理アドレス4001を参照し、この物理アドレス4001に対応する物理ブロック管理テーブル10124の情報を更新する。つまり、有効データページ数4042を1だけ減算し、更新元データページに対応するページ位置を示す有効データページフラグ4043を無効であることを示す値に更新する。併せて、論理・物理アドレス変換テーブル10120において、ライトアクセス対象とした論理アドレス4000に対応する更新元データページの物理アドレス4001を、ステップ5013及び5014(図5B参照)にて特定した書き込み先の物理アドレスに書き換える。
【0073】
以上で、ステップ502の処理の説明を終了する。図5Aに戻って、ステップ502の次の処理であるステップ5002から説明を続ける。
【0074】
ステップ5002では、ホスト計算機100に書き込みが終了したことを報告する。
【0075】
最後に、ステップ503で、必要に応じて各種管理テーブルを不揮発性メモリ1011に書き込んで保存する。図5Dは、ステップ503で行う、各種管理テーブルを保存する処理のフローチャートを示す図である。以下では、ステップ503の処理の詳細を、図5Dを用いて説明する。
【0076】
ステップ5030で、データを書き込む過程で、ブロック履歴管理テーブル10125を更新したこと(図5Bのステップ5012を実行したこと)を確認する。書き込み先のスクラッチブロックが割り当てられている場合には、ブロック履歴管理テーブル10125が更新されてなく、ステップ503を終了する。
【0077】
ブロック履歴管理テーブル10125が更新された場合には、ステップ5031で、ブロック履歴管理テーブル10125を不揮発性メモリ1011に書き込む。図3Cに示した管理テーブルページ2011のデータフィールド3020に、更新した部分を含むブロック履歴管理テーブル10125の少なくとも一部を設定し、物理ブロック管理テーブル10124を参照して管理テーブル格納ブロック群2000に含まれるブロックで空きページを含むブロックを任意に1つ選択し、書き込み可能ページ番号4044で指定される空きページに管理テーブルページを書き込む。この際、管理テーブルの値をデータフィールド3020に格納していることを示すページデータ属性3021、データフィールド3020に格納した管理テーブルの領域を一意に指定する管理テーブルアドレス3022、及び同一の管理テーブルアドレス3022を区別するために一意に順序付けられた管理テーブル書き込み番号3023と共に書き込む。
【0078】
ステップ5032では、物理ブロック管理テーブル10124の更新箇所である、有効データページ数4042、有効データページフラグ4043、及び書き込み可能ページ番号4044を更新する。
【0079】
ステップ5033では、ブロック履歴管理テーブル10125内の割り当てブロック数4055の総和が、予め定めた上限値に到達したかどうかを確認する。この上限値は、一例として、データ記録装置101の起動後に、各種管理テーブルを復元するために設定された時間を考慮して決定してもよい。
【0080】
なお、割り当てブロック数4055の総和が予め定めた上限値に到達した場合には、各種管理テーブルを不揮発性メモリ1011に書き込んで保存するので、「割り当てブロック数の総和が予め定めた上限値に到達する」ことを「保存条件」と呼ぶ。
【0081】
この割り当てブロック数4055は、データ書き込み時に到達するステップ5011(図5B参照)において、該当する論理グループに属するスクラッチブロックを割り当てた時に更新される値である。各論理グループへのデータ書き込み頻度が高い論理グループは、スクラッチブロックが割り当てられる頻度が高く、割り当てブロック数4055が上限値に到達する頻度が高くなる。すなわち、管理テーブルの更新頻度が高くなる。
【0082】
一方、データ書き込み頻度が低い論理グループは、スクラッチブロックが割り当てられる頻度が低く、割り当てブロック数4055が上限値に到達する頻度が低くなる。すなわち、管理テーブルの更新頻度が低くなる。
【0083】
従って、割り当てブロック数4055により、管理テーブルの更新頻度がわかる。
【0084】
このように「保存条件」を設定することにより、データ書き込みに伴い発生する管理テーブルのうち、更新頻度が高い一部分だけを選択的に不揮発性メモリに保存することができるようになる。このような保存方法を用いると、更新されない管理テーブルを保存せずに済むため、管理テーブルを不揮発性メモリ1011に書き込むことに伴う、ホスト計算機100から見た応答時間の増大を防ぐことができる。
【0085】
なお、管理テーブルのうち、更新頻度が高い一部分だけを選択する方法としては、一例として、更新頻度の基準値を予め定めておき、管理テーブルの更新頻度がこの基準値より大きいものを選択することができる。
【0086】
割り当てブロック数4055の総和が、予め定めた上限値に到達していない場合には、ステップ503を終了する。予め定めた上限値に到達した場合には、ステップ50340に遷移する。
【0087】
ステップ50340では、保存対象とする管理テーブルを選択する。具体的には、割り当てブロック数4055が多い論理グループ番号を、1つまたは複数選択する。
【0088】
ステップ50341にて、選択した管理テーブルを不揮発性メモリ1011に書き込む。具体的には、選択した論理グループ番号に属する論理・物理アドレス変換テーブル10120の一部と、選択した論理グループ番号に属するデータブロック管理テーブル10122の一部と、物理ブロック管理テーブル10124のうち、保存対象とするデータブロック管理テーブル10122に登録された物理ブロックの情報を、管理テーブルページ2011の構成に従って、管理テーブル格納ブロック群2000内の空きページに書き込む。
【0089】
ステップ50342にて、管理テーブルページ2011を書き込んだ物理ブロックに対応する物理ブロック管理テーブル10124を更新する。
【0090】
ステップ5035では、ブロック履歴管理テーブル10125を更新する。具体的には、ブロック履歴管理テーブル10125から、保存対象として選択した論理グループ番号4051を有するブロックに対応する有効フラグ4052を、無効であることを示す値(例えば0)に設定する。併せて、選択した論理グループ番号4051に対応する割り当てブロック数4055を0にクリアする。
【0091】
さて、ある論理グループに対応する割り当てブロック数4055が多いことは、当該論理グループに多くのスクラッチブロックが割り当てられ、高い頻度でデータ更新が発生したことを意味する。よって、選択的に割り当てブロック数4055が多い論理グループに対応する管理テーブルを保存することで、データ更新頻度が低い管理テーブルを保存する頻度を低減させることができる。
【0092】
ステップ5036では、消去済みブロック管理テーブル10123を保存するための既定の条件を満たしていることを確認する。既定の条件を満たしていない場合には、ステップ503を終了する。既定の条件を満たしている場合には、ステップ5037に遷移する。
【0093】
既定の条件とは、ブロック履歴管理テーブル10125に登録したブロックの登録履歴番号4050の最大値(Aと表記する)が、前回に消去済みブロック管理テーブル10123を保存した時に使用した最大値(Cと表記する)と比較して、十分に大きな値であることである。十分に大きな値であるかどうかの判定方法としては、一例として、判定のための基準値を予め定めておき、最大値Aがこの基準値より大きくなれば十分に大きな値に達したとみなすことができる。ブロック履歴管理テーブル10125に登録した情報は登録履歴番号4050により一意に順序付けされるので、消去済みブロック管理テーブル10123の保存頻度を自由に制御できることは自明である。一例として、簡便さのために、登録履歴番号4050の最大値Aを閾値として設定し、これが予め定めた一定値Bの倍数となることを既定の条件としてもよい。
【0094】
特に、ブロック履歴管理テーブル10125に登録されたブロックの登録履歴番号4050が、前回に消去済みブロック管理テーブル10123を保存した際に使用した最大値Cを上回るブロックが、前回に保存した後に消去済みブロック管理テーブル10123に登録されたブロックか、またはスクラッチブロックとして割り当てられて消去済みブロック管理テーブル10123から削除されたブロックである。
【0095】
ステップ5037では、消去済みブロック管理テーブル10123の少なくとも一部を、不揮発性メモリ1011に保存する。具体的には、消去済みブロック管理テーブル10123の少なくとも一部をデータフィールド3020(図3C参照)に設定する。そして、物理ブロック管理テーブル10124を参照して、管理テーブル格納ブロック群2000に含まれるブロックで空きページを含むブロックを任意に1つ選択し、書き込み可能ページ番号4044で指定される空きページに管理テーブルページ2011(図2参照)を書き込む。
【0096】
ステップ5038にて、ブロック履歴管理テーブル10125を更新する。具体的には、ブロック履歴管理テーブル10125において、有効フラグ4052が無効であることを示す値(例えば0)であり、かつ、登録履歴番号4050がステップ5036で既定の条件に用いた値Aを下回るものを削除する。そして、保存対象として選択した論理グループ番号4051に対応する割り当てブロック数4055を再計算する。
【0097】
ステップ50390では、ステップ5031と同様に、ブロック履歴管理テーブル10125を不揮発性メモリ1011に書き込む。
【0098】
ステップ50391では、ステップ5032と同様に、物理ブロック管理テーブル10124を更新する。
【0099】
以上で、ステップ503の処理の説明を終了する。図5A〜図5Dに示したステップを経て、データ書き込み時の処理が終了する。
【0100】
図6は、ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【0101】
ステップ600にて、ホスト計算機100から書き込み論理アドレスとデータを受信し、書き込み要求を受け付ける。
【0102】
ステップ601で、ブロック消去処理を実行することを確認する。消去済みブロック管理テーブル10123に登録された有効なブロックの数(消去済みブロックの残数)が、予め定めた下限値より大きい場合は、ステップ602以後の処理を行わず、そのまま書き込み処理を継続するために、図5Aで示した処理に遷移する。消去済みブロックの残数が予め定めた既定値以下である場合、ステップ602に遷移する。
【0103】
ステップ602では、データブロックの中から消去対象のブロックを選択する。選択方法の一例としては、有効な登録データブロックの中から、有効データページ数4042が少ないものを選択すればよい。選択方法としては、一例として、選択するための基準値を予め定めておき、有効データページ数4042がこの基準値より小さいものを選択することができる。
【0104】
ステップ603では、選択したデータブロックに格納されている有効データページ数が0となるまで、ステップ604を再帰的に実行する。
【0105】
ステップ604では、選択したデータブロックに格納されている有効データページを、スクラッチブロックにコピーする。ステップ604の実行後、ステップ603に戻り、物理ブロック管理テーブル10124上の有効データページ数4042を参照し、有効データページ数4042が0であることを確認した時点で、ステップ605に遷移する。
【0106】
ステップ605では、選択したブロックに対してブロック消去コマンドを発行し、選択したブロックを消去する。引き続いて、例えば当該ブロックの先頭ページに、ブロックヘッダページ2010に示した構成(図3A参照)でブロック消去回数3000を記録する。
【0107】
ステップ606にて、データブロック管理テーブル10122、物理ブロック管理テーブル10124、及び消去済みブロック管理テーブル10123を更新する。具体的には、データブロック管理テーブル10122から、ブロック消去を実行した物理ブロック番号4022に対応するフラグ4021を、無効であることを示す値(例えば0)に設定する。さらに、物理ブロック管理テーブル10124において、ブロック消去した物理ブロック番号4040に対応する情報である消去回数4041を増加させ、有効データページ数4042を0に設定し、有効データページフラグ4043を0に設定し、書き込み可能ページ番号4044を1に設定する。さらに、消去済みブロック管理テーブル10123において、ブロック消去を済ませたブロックの番号を消去済みブロック番号4030に登録する。
【0108】
ステップ607では、ブロック履歴管理テーブル10125を更新する。ブロック消去を済ませた物理ブロック番号4054を、所属していた論理グループ番号4051と共に、ブロック履歴管理テーブル10125に登録する。このとき、有効フラグ4052に1を設定し、割り当て・消去フラグ4053には、消去済みブロックであることを示す値(一例として1)を設定する。登録履歴番号4050は、複数のブロック番号の間で重複がない値であればよく、例えば一意に増加する自然数を順次割り当ててもよい。
【0109】
ステップ608では、各種管理テーブルを保存する。保存には、図5Aに示したデータ書き込み時のフローチャートにおけるステップ503と同じ処理を行う。詳細には、図5Dに示した各種管理テーブルを保存する処理のフローチャートに示した処理を行う。
【0110】
図5A〜図5Dと図6を用いて、データ記録装置に対する書き込み処理の過程で行う、各種管理テーブルの構築、更新方法を示した。
【0111】
図7A〜図7Cは、管理テーブルの復元処理のフローチャートを示す図である。
【0112】
図7Aは、管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。図7Aには、電源をデータ記録装置101に入力した後、各種管理テーブルを復元し、ホスト計算機100がデータ記録装置101に対して書き込みを再開できる状態に到達するまでの過程を示している。
【0113】
ステップ700では、管理テーブル格納ブロック群2000に保存した論理・物理アドレス変換テーブル10120、データブロック管理テーブル10122、消去済みブロック管理テーブル10123、物理ブロック管理テーブル10124、及びブロック履歴管理テーブル10125を、不揮発性メモリ1011から読み出し、メモリ1012に記録する。
【0114】
これらの管理テーブルは、電源が遮断された時点で保存されている管理テーブルのうち、最新の管理テーブルである。すなわち、図5A〜図5D及び図6のフローチャートにおいて、管理テーブルページ2011の構成(図3C参照)に従って、管理テーブルアドレス3022と管理テーブル書き込み番号3023と共に所定の書き込み単位で記録した管理テーブルのうち、管理テーブル書き込み番号3023が最新のデータである管理テーブルである。
【0115】
電源が遮断された時点での最新の管理テーブルを読み出す方法の例として、管理テーブルアドレス3022と管理テーブル書き込み番号3023を用いて、最新の管理テーブルデータ3020を取得する方法がある。他にも、メモリ1012に加えて不揮発性メモリをデータ記録装置101に搭載し、最新の管理テーブルの格納位置を示すポインタ値をこの不揮発性メモリに格納する方法がある。いずれの方法であっても、電源が遮断される前に不揮発性メモリ1011に最後に保存された管理テーブル群を、管理テーブル格納ブロック群2000からメモリ1012に読み出すことができればよい。
【0116】
ステップ701では、論理グループを1つ選択し、ステップ700で取得した最新のブロック履歴管理テーブル10125を用いて、選択した論理グループごとに、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、及び物理ブロック管理テーブル10124を復元する。
【0117】
図7Bは、ステップ701で行う、これらの管理テーブルを復元する処理のフローチャートを示す図である。
【0118】
ステップ70100では、ステップ701で選択した論理グループを含むブロックが、ブロック履歴管理テーブル10125に登録されているかどうかを判定する。すなわち、選択した論理グループの番号をブロック履歴管理テーブル10125の論理グループ番号4051に有するブロックがあるかどうかを判定する。選択した論理グループがブロック履歴管理テーブル10125に登録されていない場合には、ステップ70111に遷移し、登録されている場合には、ステップ70101に遷移する。
【0119】
ステップ70111では、選択した論理グループに属する管理テーブルの復元処理を終了し、復元対象とする次の論理グループを選択する。
【0120】
ステップ70101では、ブロック履歴管理テーブル10125において、登録履歴番号4050が古い順に、有効フラグ4052が、有効であることを示す値(例えば1)であるブロックを1つ選択する。
【0121】
ステップ70102では、割り当て・消去フラグ4053を用いて、選択したブロックがスクラッチブロックに割り当てられているか判定する。このブロック(選択した割り当てブロック)には、ステップ700で読み出した管理テーブルを不揮発性メモリ1011に保存した時点より後の、データ書き込みを伴う更新データが格納されている。割り当て・消去フラグ4053により、選択したブロックがスクラッチブロックとして割り当てられている場合(割り当てブロックである場合)は、ステップ70103に遷移する。選択したブロックがスクラッチブロックに割り当てられていない場合は、割り当て・消去フラグ4053が消去済みブロックであることを示している場合であり、ステップ70112に遷移する。
【0122】
ステップ70112とステップ70113は、選択したブロックが消去済みブロックである場合である。ステップ70112では、データブロック管理テーブル10122から選択したブロックを削除する。ステップ70113では、選択したブロックに対応する物理ブロック管理テーブル10124を更新し、ステップ70101に戻る。特に、消去回数4041を1だけ増加させる。
【0123】
ステップ70103〜ステップ70110は、選択したブロックが割り当てブロックである場合である。
【0124】
ステップ70103では、選択したブロックのデータページ2012のデータページヘッダ情報3014を取得するためのページ番号を選択する。
【0125】
ステップ70104では、ステップ70103で選択したページ番号に対応するデータページ2012において、データページヘッダ情報3014が記録されていることを確認する。データページヘッダ情報3014が記録されていない場合は、ステップ70114に遷移し、記録されている場合は、ステップ70105に遷移する。
【0126】
ステップ70114において、選択したブロックは、スクラッチブロックとして割り当てられた有効なブロックであるため、スクラッチブロック管理テーブル10121に登録する。
【0127】
ステップ70105では、データページヘッダ情報3014を取得し、データページヘッダ情報3014から論理アドレス3012と書き込みデータ番号3013を取得する。
【0128】
ステップ70107では、取得した論理アドレス3012を用いて、論理アドレス3012に対応する物理アドレス、すなわち、ステップ70103でデータページヘッダ情報3014の読み込みを行った物理アドレスを、論理・物理アドレス変換テーブル10120に登録する。
【0129】
ステップ70108では、物理ブロック管理テーブル10124を更新する。
【0130】
なお、特許文献3では、書き込みデータ番号3013を用いて、論理・物理アドレス変換テーブル10120に登録されている物理アドレス4001の新旧を判定する方法が示されているが、本実施例では、この手続きを必要としない。なぜならば、図7Aのステップ700で保存した論理・物理アドレス変換テーブル10120の状態から更新があった場合には、ブロック履歴管理テーブル10125にスクラッチブロックが登録された順でデータが書き込まれるため、ステップ70101において、ブロック履歴管理テーブル10125の登録履歴番号4050の順で有効な割り当てブロックを読み出すことで、更新順序を決定することが可能であるからである。
【0131】
ステップ70109では、データページヘッダ情報3014を取得したページが、ブロックの最終ページであるかを判定する。ブロックの最終ページでない場合は、ステップ70103に遷移する。ブロックの最終ページである場合は、ステップ70110に遷移する。
【0132】
ステップ70110では、当該ブロックは、データブロックであるため、データブロック管理テーブル10122に登録する。
【0133】
図7Bに示した処理を全論理グループに対して実行することで、論理・物理アドレス変換テーブル10120、スクラッチブロック管理テーブル10121、データブロック管理テーブル10122、及び物理ブロック管理テーブル10124を復元することができる。
【0134】
以上、図7Aのステップ701での処理を説明した。図7Aでは、ステップ701に引き続き、ステップ702に遷移する。
【0135】
ステップ702では、消去済みブロック管理テーブル10123を復元する。
【0136】
図7Cは、ステップ702で行う、消去済みブロック管理テーブル10123を復元する処理のフローチャートを示す図である。
【0137】
ステップ800では、ステップ701に引き続き、ブロック履歴管理テーブル10125に登録された登録履歴番号4050のうち、最大値を取得する。
【0138】
ステップ801では、復元対象とするブロックの登録履歴番号4050の範囲を設定する。この範囲は、図7Aのステップ700で消去済みブロック管理テーブル10123を読み出した時点から後に、消去済みブロックに登録されたかスクラッチブロックに割り当てられたブロックの登録履歴番号の範囲である。すなわち、登録履歴番号4050の最大値と、図5Dのステップ5036で用いた既定の条件(消去済みブロック管理テーブル10123を不揮発性メモリ1011に保存するための条件)とを用いて、ステップ5036で示した登録履歴番号4050の最大値C+1から、復元対象とするブロックの登録履歴番号4050の最大値を設定する。
【0139】
ステップ802では、ブロック履歴管理テーブル10125から、登録履歴番号4050がステップ801で設定した範囲にある登録ブロックを1つ選択する。ブロック履歴管理テーブル10125に登録されたブロックのうち、この範囲にあるブロックを、登録履歴番号順に1つずつ読み出す。
【0140】
ステップ803では、読み出したブロックが、スクラッチブロックに割り当てられたブロック(割り当てブロック)か、ブロック履歴管理テーブル10125の割り当て・消去フラグ4053を用いて判定する。割り当てブロックの場合は、ステップ806に遷移し、割り当てブロックでない場合は、ステップ804に遷移する。
【0141】
ステップ806では、読み出したブロックが割り当てブロックであるので、読み出したブロックを、ステップ700で読み出した消去済みブロック管理テーブル10123から削除する。この後、ステップ802に戻る。
【0142】
ステップ804では、読み出したブロックが割り当てブロックでない場合である。この場合、読み出したブロックは消去済みブロックであるので、消去済みブロック管理テーブル10123に登録する。具体的には、消去済みブロック管理テーブル10123で、フラグ4031が無効である物理ブロック番号4032に登録し、フラグ4031を有効にする。
【0143】
ステップ805では、ステップ801で設定した範囲に、ブロック履歴管理テーブル10125に登録しているブロックが残っているか確認する。ブロックが残っている場合は、ステップ802に戻る。ステップ801で設定した範囲にブロックがなくなった時点で、消去済みブロック管理テーブル10123の復元が終了する。
【0144】
以上、図7Aのステップ702での処理を説明した。
【0145】
図7Bと図7Cに示す方法で管理テーブルの復元処理を終えたら、図7Aのステップ703に遷移する。この時点で、ホスト計算機100からのデータ読み出し・書き換え要求を受け付けることができるようになる。
【符号の説明】
【0146】
100…ホスト計算機、101…データ記録装置、102…データパス、200…ブロック、1010…メモリコントローラ、1011…不揮発性メモリ、1012…メモリ、2000…管理テーブル格納ブロック群、2001…スクラッチブロック群、2002…データブロック群、2003…消去済みブロック群、2010…ブロックヘッダページ、2011…管理テーブルページ、2012…データページ、2013…空きページ、3000…ブロック消去回数、3001…空き領域、3010…データ、3011…ページデータ属性、3012…論理アドレス、3013…書き込みデータ番号、3014…データページヘッダ情報、3020…データ、3021…ページデータ属性、3022…管理テーブルアドレス、3023…管理テーブル書き込み番号、3024…管理テーブルページヘッダ情報、4000…論理アドレス、4001…物理アドレス、4002…論理グループ番号、4010…スクラッチブロック番号、4011…物理ブロック番号、4012…フラグ、4013…論理グループ番号、4020…データブロック番号、4021…フラグ、4022…物理ブロック番号、4023…論理グループ番号、4030…消去済みブロック番号、4031…フラグ、4032…物理ブロック番号、4040…物理ブロック番号、4041…消去回数、4042…有効データページ数、4043…有効データページフラグ、4044…書き込み可能ページ番号、4050…登録履歴番号、4051…論理グループ番号、4052…有効フラグ、4053…割り当て・消去フラグ、4054…物理ブロック番号、4055…割り当てブロック数、10120…論理・物理アドレス変換テーブル、10121…スクラッチブロック管理テーブル、10122…データブロック管理テーブル、10123…消去済みブロック管理テーブル、10124…物理ブロック管理テーブル、10125…ブロック履歴管理テーブル。
【特許請求の範囲】
【請求項1】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラであって、
前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含み、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存することを特徴とするメモリコントローラ。
【請求項2】
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項1記載のメモリコントローラ。
【請求項3】
前記論理・物理アドレス変換テーブルの一部は、前記論理・物理アドレス変換テーブルの更新頻度に基づいて選択して保存する請求項1記載のメモリコントローラ。
【請求項4】
前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに前記論理・物理アドレス変換テーブルを復元する請求項1記載のメモリコントローラ。
【請求項5】
請求項1記載のメモリコントローラであって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するメモリコントローラ。
【請求項6】
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項5記載のメモリコントローラ。
【請求項7】
前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部は、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項5記載のメモリコントローラ。
【請求項8】
前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記論理・物理アドレス変換テーブル、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項5記載のメモリコントローラ。
【請求項9】
所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持つ不揮発性メモリと、データの読み出し及び書き込みができ前記不揮発性メモリとは別に設けられたメモリと、外部システムからの命令により前記不揮発性メモリ及び前記メモリへの読み出し及び書き込み処理を行うメモリコントローラとを備えるデータ記録装置において、
前記不揮発性メモリは、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルを有し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含み、
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存することを特徴とするデータ記録装置。
【請求項10】
前記メモリコントローラは、前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項9記載のデータ記録装置。
【請求項11】
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記論理・物理アドレス変換テーブルの更新頻度に基づいて選択して保存する請求項9記載のデータ記録装置。
【請求項12】
前記メモリコントローラは、前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに前記論理・物理アドレス変換テーブルを復元する請求項9記載のデータ記録装置。
【請求項13】
請求項9記載のデータ記録装置であって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するデータ記録装置。
【請求項14】
前記メモリコントローラは、前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項13記載のデータ記録装置。
【請求項15】
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項13記載のデータ記録装置。
【請求項16】
前記メモリコントローラは、前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記論理・物理アドレス変換テーブル、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項13記載のメモリコントローラ。
【請求項1】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラであって、
前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含み、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存することを特徴とするメモリコントローラ。
【請求項2】
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項1記載のメモリコントローラ。
【請求項3】
前記論理・物理アドレス変換テーブルの一部は、前記論理・物理アドレス変換テーブルの更新頻度に基づいて選択して保存する請求項1記載のメモリコントローラ。
【請求項4】
前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに前記論理・物理アドレス変換テーブルを復元する請求項1記載のメモリコントローラ。
【請求項5】
請求項1記載のメモリコントローラであって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するメモリコントローラ。
【請求項6】
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項5記載のメモリコントローラ。
【請求項7】
前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部は、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項5記載のメモリコントローラ。
【請求項8】
前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記論理・物理アドレス変換テーブル、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項5記載のメモリコントローラ。
【請求項9】
所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持つ不揮発性メモリと、データの読み出し及び書き込みができ前記不揮発性メモリとは別に設けられたメモリと、外部システムからの命令により前記不揮発性メモリ及び前記メモリへの読み出し及び書き込み処理を行うメモリコントローラとを備えるデータ記録装置において、
前記不揮発性メモリは、1つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた1つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する1つ以上のブロックからなるデータブロックと、データ消去を実行した1つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルを有し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含み、
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存することを特徴とするデータ記録装置。
【請求項10】
前記メモリコントローラは、前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項9記載のデータ記録装置。
【請求項11】
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記論理・物理アドレス変換テーブルの更新頻度に基づいて選択して保存する請求項9記載のデータ記録装置。
【請求項12】
前記メモリコントローラは、前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに前記論理・物理アドレス変換テーブルを復元する請求項9記載のデータ記録装置。
【請求項13】
請求項9記載のデータ記録装置であって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するデータ記録装置。
【請求項14】
前記メモリコントローラは、前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックを記録する請求項13記載のデータ記録装置。
【請求項15】
前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項13記載のデータ記録装置。
【請求項16】
前記メモリコントローラは、前記管理テーブル格納ブロックに保存した前記論理・物理アドレス変換テーブルと前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記論理・物理アドレス変換テーブル、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項13記載のメモリコントローラ。
【図1】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図5A】
【図5B】
【図5C】
【図5D】
【図6】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図5A】
【図5B】
【図5C】
【図5D】
【図6】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【公開番号】特開2012−128545(P2012−128545A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−277692(P2010−277692)
【出願日】平成22年12月14日(2010.12.14)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願日】平成22年12月14日(2010.12.14)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]