JP2013016125A - 不揮発性メモリのページ管理方法 - Google Patents

不揮発性メモリのページ管理方法 Download PDF

Info

Publication number
JP2013016125A
JP2013016125A JP2011150233A JP2011150233A JP2013016125A JP 2013016125 A JP2013016125 A JP 2013016125A JP 2011150233 A JP2011150233 A JP 2011150233A JP 2011150233 A JP2011150233 A JP 2011150233A JP 2013016125 A JP2013016125 A JP 2013016125A
Authority
JP
Japan
Prior art keywords
page address
logical
physical page
conversion table
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011150233A
Other languages
English (en)
Other versions
JP5646402B2 (ja
Inventor
Kenichi Haga
顕一 芳賀
Akio Takeuchi
昭夫 竹内
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.)
Panasonic Corp
Original Assignee
Panasonic 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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2011150233A priority Critical patent/JP5646402B2/ja
Publication of JP2013016125A publication Critical patent/JP2013016125A/ja
Application granted granted Critical
Publication of JP5646402B2 publication Critical patent/JP5646402B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】不揮発性メモリの論理−物理アドレス変換テーブルの更新量に影響されずに安定した性能でデータの書き込みができるアドレス変換テーブルの保存及び初期化の方法を提供する。
【解決手段】データ書き込みの度に、論理ページアドレス割り当て履歴144と呼ばれる領域に、物理、論理両方の書き込み先ページアドレスを追記し、一杯になると、論理ページアドレス割り当て履歴144と一緒に、等サイズに分割した論理−物理ページアドレス変換テーブル143の中から1つを、全領域を周回する形で不揮発性メモリに保存する。初期化時は、分割した論理−物理ページアドレス変換テーブル143を保存した順番通りに揮発性メモリに読み出し、読み出しの度に論理ページアドレス割り当て履歴144の内容を反映し、最後に前回の電源断直前に書き込んだデータの物理ページアドレスを反映することで、論理−物理ページアドレス変換テーブル143を復元する。
【選択図】図6

Description

本発明は、不揮発性メモリのページ管理方法に関し、特に不揮発性メモリへのアクセスに用いる論理ページアドレス−物理ページアドレス変換テーブルの保存及び初期化の方法に関するものである。
現在広く普及している不揮発性メモリの1つにNANDフラッシュメモリがあり、SSD(Solid State Drive)、SD(Secure Digital)メモリカード等多様な形態の記憶装置に適用されている。
NANDフラッシュメモリへの読み書きの単位は数百バイトから数kバイトのメモリセルから構成されるページと呼ばれる単位であり、バイト単位での読み書きはできない。一度データを書き込んだページに再びデータを書き込むには、複数ページから構成されるブロックと呼ばれる単位で、再書き込みの前に以前の記憶内容を消去する必要がある。このため、同じページアドレスのデータを上書きしようとすると、該当ページが属するブロックを消去する時間に加え、同ブロック内の上書き対象以外の全てのページのデータを他のメモリ領域に退避する時間、同ブロックを消去する時間、消去したブロックに新しいデータを書き込むとともに退避した全てのページのデータを書き戻す時間がかかり多大な負荷が生じる。また、ブロックを消去できる回数は有限なので、前述の上書き方式ではNANDフラッシュメモリの信頼性に影響する可能性が高くなる。
前述のような負荷や信頼性の問題を回避するために、アドレス変換テーブルが有効とされている。NANDフラッシュメモリへのデータの上書きの際は、元のデータが記憶されたページ以外の空きページに新しいデータを書き込む。そこで、新しいデータが書き込まれたページが元のデータと異なっていても、アクセス元が上書きした最新のデータを一貫したアドレスで読み出せるように、アクセス元が認識するアドレス(以下、論理アドレスと表記)と、そのアドレスに対応する最新のデータがNANDフラッシュメモリ上で物理的に格納されたページのアドレス(以下、物理アドレスと表記)とを対応付けるのがアドレス変換テーブルである。アドレス変換テーブルに関する先行技術文献には、特許文献1がある。
特許文献1のメモリシステムは、SAT(セクタ割り当てテーブル)と呼ばれる、論理アドレス順に並んだ論理−物理ページアドレス変換テーブルを不揮発性メモリ上に備え、直近にアクセスしたSATエントリを含む連続領域がキャッシュメモリに一時記憶される。また、一時記憶領域内に、WSL(ライトセクタリスト)と呼ばれるデータを書き込んだ論理アドレスのリストを設け、WSLが一杯になるとSATを更新し、その後WSLを消去する。そして、SATの更新内容をASB(追加SATブロック)と呼ばれるブロックに書き込み、ASBが一杯になるとSATを再構築してSATブロックに書き戻す。更に、最後のASB書き込み後、初めてデータを書き込む先の情報を制御ブロックに備える。初期化時、制御ブロックが指す物理アドレスから電源断直前にデータを書いた物理アドレスまでの範囲でヘッダに書かれた論理アドレスを取得し、WSLを再構築する。
特表2002−537596号公報
しかし、前述した従来技術では、WSLが空から一杯になるまでにデータが書き込まれた論理アドレスの範囲が広くなるほど、不揮発性メモリ上でASBへの書き込み、又はASBのSATへの再構築の範囲が広くなり、最悪の場合SATの更新範囲が全範囲に亘る恐れがある。
したがって、WSLが一杯になったときのデータ書き込み性能は、それまでにデータが書き込まれた論理アドレスの範囲に大きく影響される。
前記課題を解決するための手段の概要は以下の通りである。すなわち、本発明に係るページ管理方法は、論理ページアドレス順に整列された、不揮発性メモリ全領域分の論理−物理ページアドレス変換テーブルを揮発性メモリ上に備え、後述の論理ページアドレス割り当て履歴が消去されてから埋まるまでの一定周期ごとに、それまでにデータが書き込まれた論理アドレスの範囲に関係なく、前記論理−物理ページアドレス変換テーブル内の1つの領域を前記不揮発性メモリに保存する。
初期化時は、前記論理−物理ページアドレス変換テーブル内の各領域を、保存のタイミングが古い順から、前記不揮発性メモリから前記揮発性メモリ上の保存元領域に順次読み出して論理−物理ページアドレス変換テーブルを復元する。前記各領域は、それぞれ最新のバージョンを読み出し対象とする。ここで、前述の通り前記論理−物理ページアドレス変換テーブルの全領域を電源断の瞬間に一度に保存するのではなく、部分的に周期的なタイミングで保存しているので、前記揮発性メモリ上に読み出された前記論理−物理ページアドレス変換テーブルを前回の電源断の時点の状態にまで戻すための手段が必要になる。
そのための手段は2つである。第1に、前記論理−物理ページアドレス変換テーブル内の1つの領域を保存するのと同じタイミングで、前回の保存完了以降にデータを書き込んだ書き込み先論理ページアドレスと書き込み先物理ページアドレスとの組み合わせの全てから構成される論理ページアドレス割り当て履歴を前記不揮発性メモリに保存する。
前記論理−物理ページアドレス変換テーブル内の各領域を前記揮発性メモリ上に読み出す度に、それが前記不揮発性メモリに保存されたタイミングより1周期後に前記不揮発性メモリに保存された前記論理ページアドレス割り当て履歴を参照し、そこに記録された前記書き込み先論理ページアドレスに対応する前記書き込み先物理ページアドレスで、前記論理−物理ページアドレス変換テーブルの読み出し先領域を上書きする。このように、前記論理−物理ページアドレス変換テーブル内の各領域の読み出しサイクルと、前記論理ページアドレス割り当て履歴の反映のサイクルとを交互に繰り返すことで、前記揮発性メモリ上の前記論理−物理ページアドレス変換テーブルを、前回の電源断前に前記論理−物理ページアドレス変換テーブル内の領域が最後に不揮発性メモリに保存された時点の状態にまで戻すことができる。
前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された、前記論理−物理ページアドレス変換テーブル内の領域を前記揮発性メモリに読み出した後は、前述のような論理ページアドレス割り当て履歴の反映ができないので、前記揮発性メモリ上の前記論理−物理ページアドレス変換テーブルを前回の電源断直前の状態にまで戻すための第2の手段が必要になる。具体的には、データ書き込み先の物理ページに対し、そのデータの書き込み先論理ページアドレスを書き込み内容に含める。前記物理ページへのポインタ情報は、前回の前記論理−物理ページアドレス変換テーブル内の領域を前記不揮発性メモリに保存するのと同じタイミングで不揮発性メモリに保存する。
前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された、前記論理−物理ページアドレス変換テーブル内の領域を揮発性メモリに読み出した後は、前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された前記ポインタ情報を参照し、前記ポインタ情報が指す物理ページアドレスで前記論理−物理ページアドレス変換テーブルの読み出し先領域を上書きする。上書き位置は、前記ポインタ情報が指す物理ページに記録された前記書き込み先論理ページアドレスを参照して特定する。
これまでに説明した手段により、初期化時に、前記論理−物理ページアドレス変換テーブルを前回の電源断直前の状態にまで復元することができる。
本発明によれば、論理−物理ページアドレス変換テーブルを、特定の周期で、複数の領域に分けて、かつ初期化時に前回の電源断直前の状態に復元できる方式で不揮発性メモリに保存するので、安定した性能でデータの書き込みができる。
本発明の実施形態の構成を示す図である。 本発明の実施形態における論理−物理ページアドレス変換テーブルの一例を示す図である。 本発明の実施形態における論理ページアドレス割り当て履歴の一例を示す図である。 本発明の実施形態におけるポインタ情報の一例を示す図である。 本発明の実施形態において、データの書き込み、並びに論理−物理ページアドレス変換テーブルと論理ページアドレス割り当て履歴とポインタ情報との更新及び保存の流れを説明するフローチャートである。 本発明の実施形態におけるデータの書き込み、並びに論理−物理ページアドレス変換テーブルと論理ページアドレス割り当て履歴とポインタ情報との更新及び保存を繰り返した結果を時系列で示す図である。 本発明の実施形態において、初期化時に論理−物理ページアドレス変換テーブルを前回の電源断直前の状態に復元する流れを説明するフローチャートである。 図7に続くフローチャートである。 (a)〜(i)は、本発明の実施形態において、初期化時に論理−物理ページアドレス変換テーブルを前回の電源断直前の状態に復元する流れの途中経過、及び結果を時系列で示す図である。
以下に、本発明に係るページ管理方法の実施形態を図面に基づいて詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
《第1の実施形態》
本発明の第1の実施形態の構成を図1に示す。本発明に係るページ管理方法は、集積回路101と、揮発性メモリ103上のソフトウェア141とにより実行される。
集積回路101は、CPU(Central Processing Unit)111、バスコントローラ112、ホストI/F(interface)113、揮発性メモリI/F114、及び不揮発性メモリI/F115というブロックから構成され、CPU111、ホストI/F113、揮発性メモリI/F114、及び不揮発性メモリI/F115は、バスコントローラ112を中継してアドレスバス121及びデータバス122を介して通信を行う。また、バスコントローラ112は、ホストI/F113、揮発性メモリI/F114、及び不揮発性メモリI/F115の中からアドレスバス121及びデータバス122を介した通信の受信側ブロックを選択するためにチップセレクト信号123を用いる。以下、CPU111、バスコントローラ112、ホストI/F113、揮発性メモリI/F114、及び不揮発性メモリI/F115相互の通信は、バスコントローラ112を中継するものとして説明する。
ホストI/F113は、バス131を介してホスト機器102とデータの送受信を行うブロックであり、CPU111からの制御により、ホスト機器102からの書き込みデータを揮発性メモリ103上のデータ一時格納領域142に転送するか、データ一時格納領域142上の読み出しデータをホスト機器102に転送する。CPU111が前記制御を開始するには、ホストI/F113がホスト機器102から読み出し又は書き込みを要求された際にCPU111に割り込みを通知するのを条件にするのでもよいし、CPU111がホストI/F113に対しポーリングを行い読み出し又は書き込みの要求を検出するのを条件にするのでもよい。揮発性メモリ103との間のデータ転送の仕組みは、揮発性メモリI/F114の説明の中で後述する。
揮発性メモリI/F114は、アドレスバス151及びデータバス152を介して揮発性メモリ103への読み書き、及び揮発性メモリ103上に格納されたソフトウェア141の実行の制御を行うブロックであり、前記制御は、CPU111、ホストI/F113、及び不揮発性メモリI/F115からの読み書き又はソフトウェア実行の要求に応じて行う。以下、CPU111、ホストI/F113、及び不揮発性メモリI/F115による揮発性メモリ103への読み書き、及びCPU111によるソフトウェア141の実行は、揮発性メモリI/F114を経由して行うものとして説明する。
不揮発性メモリI/F115は、バス161を介して1つ以上の不揮発性メモリ104への読み書きを行うブロックであり、CPU111からの制御により読み書きを行う。不揮発性メモリ104から読み出された内容は、揮発性メモリ103上のデータ一時格納領域142、論理−物理ページアドレス変換テーブル143、論理ページアドレス割り当て履歴144のうちいずれかの領域に転送される。不揮発性メモリ104への書き込み対象は、データ一時格納領域142上のデータ、論理−物理ページアドレス変換テーブル143、論理ページアドレス割り当て履歴144のいずれかである。また、不揮発性メモリI/F115は、バス161を使用できる不揮発性メモリ104を選択するためにチップセレクト信号162を使用する。以下、CPU111による不揮発性メモリ104への読み書きは、不揮発性メモリI/F115を経由して行うものとして説明する。
CPU111は、ソフトウェア141を実行することで前述の読み出し又は書き込みに関連する制御を行うとともに、論理−物理ページアドレス変換テーブル143、論理ページアドレス割り当て履歴144、及びポインタ情報145の更新及び作成を行う。
図2は、論理−物理ページアドレス変換テーブル143の一例である。論理ページアドレスが列201に、それに対応するデータが格納された物理ページアドレスが列202にそれぞれ書き込まれている。論理−物理ページアドレス変換テーブル143の総行数は、不揮発性メモリI/F115に接続されている不揮発性メモリ104の個数に、不揮発性メモリ104の1個あたりのページ数を掛けた値に等しい。列201には、取り得る論理ページアドレスの値全てが昇順に書き込まれている。列202には、論理ページアドレスにデータが存在する場合のみ前記データが格納されている物理ページアドレスを書き込み、データが存在しない場合は空白である。
データを読み出す際は、上から数えて読み出し先の論理ページアドレスに等しい行で列202に書き込まれている物理ページアドレスを、読み出すデータの格納先と見なす。例えば、ホスト機器102から、論理ページアドレス0x13CAからのデータの読み出しを要求されたとき、0x13CA行目に書き込まれている0xD82が、データを読み出す物理ページアドレスになる。なお、「0x」は後続する数値が16進数表記であることを意味する(以下、同様)。
データを書き込む際は、上から数えて書き込み先の論理ページアドレスに等しい行で列202に、新しいデータの格納先となる物理ページアドレスを書き込む。例えば、ホスト機器102から、論理ページアドレス0x13C8へのデータの書き込みを要求されたとき、0x13C8行目に書き込まれている0xB087が、別の物理ページアドレスで上書きされる。一方、論理ページアドレス0x13C9へのデータの書き込みを要求されたとき、0x13C9行目の空白箇所に、データの格納先となる物理ページアドレスを書き込む。ここで、列202に書き込む物理ページアドレスはポインタ情報145の中に示されている物理ページアドレスの範囲内から選択するものとする。
なお、論理−物理ページアドレス変換テーブル143は論理ページアドレスと行とを一意に対応付けできるので、揮発性メモリ103の容量を削減するために列201を省略する構成も可能である。
図3は、論理ページアドレス割り当て履歴144の一例である。データが書き込まれている物理ページアドレスが列301に、それに対応する論理ページアドレスが列302にそれぞれ書き込まれている。データの書き込みを行う際は、一番上の空白行311で、列301にデータの格納先となる物理ページアドレスを、列302に論理ページアドレスをそれぞれ書き込む。ここで、検索結果に関係なく、列301に書き込む物理ページアドレスはポインタ情報145の中に示されている物理ページアドレスの範囲内から選択するものとする。
図4は、ポインタ情報145の一例である。前述の通り、データを書き込む際は、ここに示されている物理ページアドレス0x1024〜0x2047の範囲内で書き込み先の物理ページを上から順番に選択する。
図5は、ソフトウェア141がCPU111に行わせる論理−物理ページアドレス変換テーブル143、論理ページアドレス割り当て履歴144、及びポインタ情報145の更新手順である。本手順は、ホスト機器102からのデータ書き込み要求が発生したときに開始する。
最初に、CPU111はポインタ情報145の特定行から、データ書き込み先の物理ページアドレスを取得する(ステップS501)。ここで、ポインタ情報145から物理ページアドレスを取得する行番号として、変数xを定義する。
次に、CPU111はホストI/F113からデータ書き込み先の論理ページアドレスを取得し(ステップS502)、ステップS501で取得したアドレスが指す物理ページにデータを書き込む。ここで、同じ物理ページの余白に、ステップS502で取得した論理ページアドレスも同時に書き込む(ステップS503)。
物理ページへの書き込み後、CPU111は論理−物理ページアドレス変換テーブル143を更新する。具体的には、上から数えてステップS502で取得した論理ページアドレスに相当する行に、ステップS501で取得した物理ページアドレスを書き込む(ステップS504)。
論理−物理ページアドレス変換テーブル143の更新後、CPU111は論理ページアドレス割り当て履歴144のx行目に、ステップS501で取得した物理ページアドレスとステップS502で取得した論理ページアドレスとをそれぞれ追記する(ステップS505)。ここでxの値が(論理ページアドレス割り当て履歴144の総行数−1)でない場合(ステップS506でNoに分岐)、CPU111はxの値を1加算して(ステップS508)、ホスト機器102からの次のデータ書き込み要求を待つ。一方、xの値が(論理ページアドレス割り当て履歴144の総行数−1)である場合(ステップS506でYesに分岐)、以下の処理に移行する。
CPU111は、論理ページアドレス割り当て履歴144の全てを不揮発性メモリ104に保存し、保存完了後に揮発性メモリ103上から消去する(ステップS507)。なお、論理ページアドレス割り当て履歴144を不揮発性メモリ104上で保存する領域の指定方法は、初期化時に同領域のアドレス範囲と保存の順番とを一意に特定できる方法であれば任意の方法でよく、例えば不揮発性メモリ104の中から特定の1個を選び、その中の固定アドレスの物理ページに領域指定情報を書き込んで、前記領域指定情報が指す領域の範囲内で先頭の空白物理ページから順番に論理ページアドレス割り当て履歴144を書き込む方法が考えられる。
次に、CPU111は、論理−物理ページアドレス変換テーブル143を等サイズに分割した中の1つを不揮発性メモリ104に保存する。具体的には、論理−物理ページアドレス変換テーブル143のy行目〜(y+N−1)行目を保存する(ステップS509)。ここでNは定数で、論理−物理ページアドレス変換テーブル143の総行数はNで割り切れるものとする。一方、yは変数で、Nの倍数のいずれかから1引いた値を取り得る。なお、分割した論理−物理ページアドレス変換テーブル143を不揮発性メモリ104上で保存する領域の指定方法は、初期化時に同領域のアドレス範囲と保存の順番とを一意に特定でき、かつ論理ページアドレス割り当て履歴144の保存領域と区別できれば任意の方法でよい。
その後、CPU111は、空き物理ページ、すなわち空白の物理ページ又は論理ページの上書きにより使用されなくなった物理ページを任意の方法で検索し、そのうち空白でないページを消去し(ステップS510)、これらの物理ページアドレスでポインタ情報145を更新するとともに、更新したポインタ情報145を不揮発性メモリ104に保存する(ステップS511)。検索は、論理ページアドレス割り当て履歴144の総行数と同じ個数の空き物理ページが見つかるまで継続する。なお、ポインタ情報145を不揮発性メモリ104上で保存する領域の指定方法は、初期化時に同領域のアドレス範囲と保存の順番とを一意に特定でき、かつ論理ページアドレス割り当て履歴144の保存領域、及び分割した論理−物理ページアドレス変換テーブル143の保存領域と区別できれば任意の方法でよい。
ポインタ情報145の保存が完了すると、CPU111は、xの値を0で初期化する(ステップS512)。これにより、次にホスト機器102から次のデータ書き込みが要求されたとき、ステップS501での物理ページアドレス取得元がポインタ情報145の先頭行に戻るとともに、ステップS505での物理ページアドレス及び論理ページアドレスの追記先が論理ページアドレス割り当て履歴144の先頭行に戻る。
次に、CPU111は、(y+N)の値が最大値に達したか(すなわち、論理−物理ページアドレス変換テーブル143の最終行まで不揮発性メモリ104に保存完了したか)判定し(ステップS513)、達した場合は(ステップS513でYesに分岐)yの値を0で初期化する(ステップS514)。これにより、次にホスト機器102から次のデータ書き込みが要求されたとき、ステップS509で論理−物理ページアドレス変換テーブル143の保存対象領域が先頭に戻る。(y+N)の値が最大値に達していない場合(ステップS513でNoに分岐)、CPU111はyの値にN加算する(ステップS515)。これにより、次にホスト機器102から次のデータ書き込みが要求されたとき、ステップS509で論理−物理ページアドレス変換テーブル143の保存対象領域が、今回のデータ書き込みで保存した領域より1つ後方になる。
以上の処理を完了後、CPU111はホスト機器102からの次のデータ書き込み要求を待つ。
図5の処理を繰り返した結果を時系列で表すと図6の通りになる。ホスト機器102からの要求に従ってポインタ情報145が指す物理ページにデータと論理ページアドレスとを書き込み、論理ページアドレス割り当て履歴144が一杯になると論理ページアドレス割り当て履歴144、分割した論理−物理ページアドレス変換テーブル143、ポインタ情報145を不揮発性メモリ104に保存するサイクルを繰り返している。
このように、論理−物理ページアドレス変換テーブル143を等サイズに分割して、分割された各領域を周期的に巡回して不揮発性メモリ104に保存する構成なので、各サイクルでデータ以外の情報を不揮発性メモリ104に保存する処理負荷が一定になり、したがって安定した性能でデータの書き込みができるようになる。また、あるサイクルで不揮発性メモリ104に保存した、分割された論理−物理ページアドレス変換テーブル143は、その後のデータの書き込みにより揮発性メモリ103上の最新の内容と差分が生じてくるが、論理ページアドレス割り当て履歴144とポインタ情報145とを一緒に保存することにより、初期化時に、揮発性メモリ103上の論理−物理ページアドレス変換テーブル143を、論理ページアドレス割り当て履歴144及びポインタ情報145、並びにポインタ情報145が指す物理ページに書き込まれた論理ページアドレスを用いて前回の電源断直前の状態にまで補正することが可能になる。
なお、図6は論理−物理ページアドレス変換テーブル143を4分割した場合の例であり、分割した先頭の領域を保存して論理ページアドレス割り当て履歴144が一杯になる前に電源断になった場合を表している。ここで、T601からT604までの各符号は時刻であり、第2の実施形態で参照する。
《第2の実施形態》
本発明の第2の実施形態の構成は、第1の実施形態に示した図1の構成をベースにしており、揮発性メモリ103上のソフトウェア141が図7及び図8に示す機能を追加で備えている。
図7及び図8は、ソフトウェア141がCPU111に行わせる、論理−物理ページアドレス変換テーブル143を前回の電源断直前の状態に復元する手順を示す図である。本手順は、電源投入後の初期化処理中に行われる。
図7に示すように、CPU111は最初に、論理−物理ページアドレス変換テーブル143を不揮発性メモリ104に保存する際に分割した個数を変数zに代入する(ステップS701)。後述するように、変数zは、分割された論理−物理ページアドレス変換テーブル143と論理ページアドレス割り当て履歴144とを不揮発性メモリ104から読み出す順番を管理するための変数である。
以下のS702からS714までの各ステップは、変数zの値が1になる(ステップS705でYesに分岐)まで繰り返される。
前記繰り返しの中で、CPU111は最初に、前回の電源断から遡ってz回目に不揮発性メモリ104に保存された、分割された論理−物理ページアドレス変換テーブル143の保存場所を特定する(ステップS702)。特定の方法は任意の方法でよい。例えば、保存時に不揮発性メモリ104の中から特定の1個を選び、その中の固定アドレスの物理ページに領域指定情報を書き込んで、前記領域指定情報が指す領域の範囲内で先頭の空白物理ページから順番に分割された論理−物理ページアドレス変換テーブル143を書き込む方法を用い、かつ分割サイズが物理ページサイズ以下の場合、ステップS702ではまず前記固定アドレスの物理ページから領域指定情報を読み出し、前記領域指定情報が指す領域内で先頭の空白ページを検索してそこからzページ分遡った物理ページアドレスを、所望の分割された論理−物理ページアドレス変換テーブル143の保存場所として特定できる。
次に、CPU111は、ステップS702で保存場所を特定した、分割された論理−物理ページアドレス変換テーブル143を揮発性メモリ103に読み出す際の読み出し先を特定する(ステップS703)。特定の方法は任意の方法でよい。例えば、ステップS702の保存場所特定に上記の方法を用いた場合、前記領域指定情報が指す領域の先頭物理ページからステップS702で特定された保存場所までのページ数を論理−物理ページアドレス変換テーブル143の分割数で割った余りから読み出し先を求めればよい。仮に、論理−物理ページアドレス変換テーブル143の総行数をL行、分割数をM、前記余りをNとした場合、読み出し先は、揮発性メモリ103上の論理−物理ページアドレス変換テーブル143用の領域で(N×(L/M))行目から((N+1)×(L/M)−1)行目までの範囲となる。
更に、CPU111は、分割された論理−物理ページアドレス変換テーブル143を、ステップS702で特定した不揮発性メモリ104上の保存場所から、ステップS703で特定した揮発性メモリ103上の読み出し先に読み出す(ステップS704)。
分割された論理−物理ページアドレス変換テーブル143の読み出しを完了すると、CPU111は、変数zの値が1、すなわちステップS704で読み出した分割された論理−物理ページアドレス変換テーブル143が、前回の電源断前の最後のタイミングで保存されたものか判定し、そうでない場合(ステップS705でNoに分岐。Yesに分岐した場合は後述)は以下の処理に移行する。
変数zの値が1でない場合、CPU111はまず、前回の電源断から遡って(z−1)回目に不揮発性メモリ104に保存された論理ページアドレス割り当て履歴144の保存場所を特定し(ステップS706)、特定された保存場所から論理ページアドレス割り当て履歴144を揮発性メモリ103に読み出す(ステップS707)。ステップS706での保存場所特定の方法は、分割された論理−物理ページアドレス変換テーブル143と同様、任意の方法でよい。
論理ページアドレス割り当て履歴144の読み出しを完了すると、CPU111は、以下のステップS709からS714までを繰り返して、読み出された論理−物理ページアドレス変換テーブル143の復元を行う。最初にCPU111は、読み出した論理ページアドレス割り当て履歴144のi行目に書かれた論理ページアドレスを変数lに代入する(ステップS709)。ここでiは変数で、ステップS708で0に初期化される。すなわち論理ページアドレス割り当て履歴144を読み出すと、最初に0行目を参照することになる。
次に、CPU111は、読み出した論理ページアドレス割り当て履歴144のi行目に書かれた物理ページアドレスを変数pに代入する(ステップS710)。
変数l、pへの代入後、CPU111は、揮発性メモリ103上の論理−物理ページアドレス変換テーブル143用の領域のl行目に、変数pの値を書き込む(ステップS711)。このステップにより、揮発性メモリ103上に読み出し済の分割された論理−物理ページアドレス変換テーブル143の内容を、書き込み1回分だけ新しい状態に戻すことができる。
その後、CPU111は、変数iが最大値、すなわち(論理ページアドレス割り当て履歴144の総行数−1)に達しているか判定し、達していなければ(ステップS712でNoに分岐)変数iの値に1加算し(ステップS714)前記ステップS709に戻り、達していれば(ステップS712でYesに分岐)変数zの値を1減算して(ステップS713)前記ステップS702に戻る。これらの処理は、前記ステップS707で読み出した論理ページアドレス割り当て履歴144の0行目から最終行までに書かれている物理ページアドレスの値を、揮発性メモリ103上の論理−物理ページアドレス変換テーブル143用の領域に順番に書き込むことで、揮発性メモリ103上に読み出し済の分割された論理−物理ページアドレス変換テーブル143の内容を、不揮発性メモリ104への保存周期の1周期分新しい状態に戻して、前回読み出した分割された論理−物理ページアドレス変換テーブル143よりも1周期分、前回の電源断に近いタイミングで不揮発性メモリ104に保存された、分割された論理−物理ページアドレス変換テーブル143の読み出し処理に移行することを意味している。
前回の電源断直前に不揮発性メモリ104に保存された、分割された論理−物理ページアドレス変換テーブル143の読み出し、すなわち変数zの値が1のときの読み出しが完了すると、読み出せる論理ページアドレス割り当て履歴144がこれ以上ないので、以下に説明するS715からS726までの処理に移行し、データ格納先の物理ページアドレスにデータと一緒に書き込まれた論理ページアドレスをもとに論理−物理ページアドレス変換テーブル143を前回の電源断直前の最新の状態にまで復元するとともに論理ページアドレス割り当て履歴144も前回の電源断直前の最新の状態にまで復元する(ステップS705でYesに分岐:図7から図8へ進む)。
そのために、図8に示すように、CPU111は最初に、揮発性メモリ103に読み出された論理ページアドレス割り当て履歴144を消去する(ステップS715)。
また、CPU111は、分割された論理−物理ページアドレス変換テーブル143をステップS704にて揮発性メモリ103上に最後に読み出したときの読み出し先の最終行番号に1加算し、更に論理−物理ページアドレス変換テーブル143全体の総行数で割った余りを変数yに代入する(ステップS716)。ここで、変数yは図5の手順で使用するものと同一であり、これにより、図5のステップS509を次に実行する際、分割された論理−物理ページアドレス変換テーブル143のうち、電源断前に最後に不揮発性メモリ104に保存された領域の1つ後方の領域を保存できるようになり、電源断が発生しても論理−物理ページアドレス変換テーブル143を保存する順番の巡回性が保たれる。
次に、CPU111は、前回の電源断直前に不揮発性メモリ104に保存したポインタ情報145の保存場所を特定し(ステップS717)、特定された保存場所からポインタ情報145を揮発性メモリ103に読み出す(ステップS718)。ステップS717での保存場所特定の方法は、分割された論理−物理ページアドレス変換テーブル143及び論理ページアドレス割り当て履歴144と同様、任意の方法でよい。
ポインタ情報145の読み出しを完了すると、CPU111は、以下のステップS720からS726までを繰り返す。まずCPU111は、読み出したポインタ情報145のj行目に書かれた物理ページアドレスを変数pに代入する(ステップS720)。ここでjは変数で、ステップS719で0に初期化される。すなわちポインタ情報145を読み出すと、最初に0行目を参照することになる。
次に、CPU111は、変数pが指す物理ページを読み出し(ステップS721)、その内容が空白でなければ(ステップS722でNoに分岐。Yesに分岐した場合は後述)そこに書かれた論理ページアドレスを変数lに代入する(ステップS723)。
変数p、lへの代入後、CPU111は、揮発性メモリ103に読み出された論理−物理ページアドレス変換テーブル143用のl行目に、変数pの値を上書きする(ステップS724)とともに、揮発性メモリ103上の論理ページアドレス割り当て履歴144のj行目に変数pと変数lの値を追記する(ステップS725)。これらのステップにより、揮発性メモリ103上に読み出された論理−物理ページアドレス変換テーブル143の内容、及び揮発性メモリ103上の論理ページアドレス割り当て履歴144の内容を、書き込み1回分だけ新しい状態に戻すことができる。
その後、CPU111は、変数jが最大値、すなわち(ポインタ情報145の総行数−1)に達しているか判定し、達していなければ(ステップS726でNoに分岐)変数jの値に1加算し(ステップS729)前記ステップS720に戻り、達していれば(ステップS726でYesに分岐)、論理ページアドレス割り当て履歴144が一杯になっており、論理−物理ページアドレス変換テーブル143、論理ページアドレス割り当て履歴144、及びポインタ情報145の一部又は全部を保存完了する前に電源断が発生したものと見なし、図5のS507〜S515と同様の手順でこれらの保存を開始、又は再開して(ステップS727)変数xに0を代入する(ステップS728)。ここで、変数xは図5の手順で使用するものと同一である。完了すると、CPU111は処理を終了し、データの書き込み及び読み出しを受け付けできる状態になる。
ここで、前述のステップS722でYesに分岐、すなわちステップS721で読み出された物理ページが空白であった場合、CPU111は、論理−物理ページアドレス変換テーブル143、及び論理ページアドレス割り当て履歴144を前回の電源断直前の状態にまで復元できたと見なし、変数xに変数jの値を代入して(ステップS730)処理を終了し、データの書き込み及び読み出しを受け付けできる状態になる。
図7及び図8の処理の途中経過及び結果の一例を時系列で表すと、図9(a)〜図9(i)の通りになる。図9(a)〜図9(i)は、図6に示した電源断の状況から電源を再投入、初期化する流れを表している。
図6に示した内容は、論理−物理ページアドレス変換テーブル143を4分割したうちの一番上の領域を不揮発性メモリ104に保存した後に電源断が発生した状況を表しているので、図7のステップS702及びS703の結果、4分割したうちの2番目の領域を最初に揮発性メモリ103に読み出す。これを含め、以下(a)から(i)までの段階を経て、論理−物理ページアドレス変換テーブル143は前回の電源断直前の状態に復元される。
(a)論理−物理ページアドレス変換テーブル143を揮発性メモリ103に読み出す(4分割したうちの2番目。図7のステップS702〜S704)。
(b)図6の時刻T601からT602までの間に不揮発性メモリ104に保存された、論理ページアドレス割り当て履歴144に書かれた物理ページアドレスで、論理−物理ページアドレス変換テーブル143を上書きし、(a)で読み出した領域を図6の時刻T602時点の状態にまで戻す(図7のステップS706〜S714)。
(c)論理−物理ページアドレス変換テーブル143を揮発性メモリ103に読み出す(4分割したうちの3番目。図7のステップS702〜S704)。
(d)図6の時刻T602からT603までの間に不揮発性メモリ104に保存された、論理ページアドレス割り当て履歴144に書かれた物理ページアドレスで、論理−物理ページアドレス変換テーブル143を上書きし、(a)及び(c)で読み出した領域を図6の時刻T603時点の状態にまで戻す(図7のステップS706〜S714)。
(e)論理−物理ページアドレス変換テーブル143を揮発性メモリ103に読み出す(4分割したうちの4番目。図7のステップS702〜S704)。
(f)図6の時刻T603からT604までの間に不揮発性メモリ104に保存された、論理ページアドレス割り当て履歴144に書かれた物理ページアドレスで、論理−物理ページアドレス変換テーブル143を上書きし、(a)、(c)及び(e)で読み出した領域を図6の時刻T604時点の状態にまで戻す(図7のステップS706〜S714)。
(g)論理−物理ページアドレス変換テーブル143を揮発性メモリ103に読み出す(4分割したうちの1番目。図7のステップS702〜S704)。
(h)図6の時刻T604以降にデータを書き込んだ全ての物理ページアドレスと、これらの物理ページに書き込まれた論理ページアドレスとをもとに、論理−物理ページアドレス変換テーブル143を上書きする(図8のステップS717〜S729)。
(i)復元完了(図8のステップS730)。
本発明はSSD、SDメモリカード等、不揮発性メモリを内蔵する多様な形態の記憶装置に適用でき、大容量化による論理−物理ページアドレス変換テーブルのサイズ増大に影響されずに安定した性能でデータの書き込みができるようになり、したがって大容量化と高速化との両立が容易になる。
101 集積回路
102 ホスト機器
103 揮発性メモリ
104 不揮発性メモリ
111 CPU
112 バスコントローラ
113 ホストI/F
114 揮発性メモリI/F
115 不揮発性メモリI/F
121 アドレスバス
122 データバス
123 チップセレクト信号
131 バス
141 ソフトウェア
142 データ一時格納領域
143 論理−物理ページアドレス変換テーブル
144 論理ページアドレス割り当て履歴
145 ポインタ情報
151 アドレスバス
152 データバス
161 バス
162 チップセレクト信号

Claims (4)

  1. 1個以上の、ページ単位で読み書きを行う不揮発性メモリのページへのアクセスを制御するページ管理方法であって、
    アクセス元が指定する論理ページアドレスをもとに、前記論理ページアドレスに対応するデータが不揮発性メモリ上で物理的に配置されている物理ページアドレスを求めるために使用する、論理ページアドレス順に整列された論理−物理ページアドレス変換テーブルを揮発性メモリ上に配置し、
    アクセス元からデータの書き込みを要求される度に前記データの書き込み先物理ページアドレスを特定するステップと、前記論理−物理ページアドレス変換テーブルの中から前記データの書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置を特定するステップと、前記論理−物理ページアドレス変換テーブルの中の前記特定された物理ページアドレスの記録位置に前記書き込み先物理ページアドレスを記録することで前記論理−物理ページアドレス変換テーブルを更新するステップと、前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとを組み合わせて前記揮発性メモリ上に追記するステップと、書き込み先物理ページに前記データと前記書き込み先論理ページアドレスとを書き込むステップとを実行し、
    一定周期ごとに、前記揮発性メモリ上の前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとの組み合わせの全てから構成される論理ページアドレス割り当て履歴を前記不揮発性メモリに保存するステップと、その後前記揮発性メモリ上の前記論理ページアドレス割り当て履歴を消去するステップと、前記論理−物理ページアドレス変換テーブル内の1つの領域を前記不揮発性メモリに保存するステップと、次の周期内にデータを書き込む前記不揮発性メモリ内の領域を確保するステップと、前記確保された不揮発性メモリ領域へのポインタ情報を前記不揮発性メモリに保存するステップとを繰り返し、
    前記周期は、前記論理ページアドレス割り当て履歴が消去されてから前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとの組み合わせで埋まるまでを1周期とし、
    前記書き込み先物理ページアドレスは、1つ前の周期で前記不揮発性メモリに保存されたポインタ情報が指す領域の範囲内から特定されることを特徴とするページ管理方法。
  2. 請求項1に記載のページ管理方法において、
    初期化時に、前記不揮発性メモリに保存されている前記論理−物理ページアドレス変換テーブル内の各領域のそれぞれ最新バージョンを、前記揮発性メモリ上の保存元領域に読み出すステップを実行し、前記論理−物理ページアドレス変換テーブル内の各領域を読み出す順番は、前記不揮発性メモリ上への保存のタイミングが古いほど先であり、
    前記論理−物理ページアドレス変換テーブル内の1領域を読み出し完了する度に、前記読み出し完了した前記論理−物理ページアドレス変換テーブル内の1領域より1周期後に前記不揮発性メモリに保存された前記論理ページアドレス割り当て履歴を読み出すステップと、前記揮発性メモリ上の前記論理−物理ページアドレス変換テーブル用領域の中から、読み出した前記論理ページアドレス割り当て履歴中に含まれる前記書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置全てを、読み出した前記論理ページアドレス割り当て履歴中に含まれる前記書き込み先物理ページアドレスで上書きするステップとを実行することで、前記揮発性メモリ上に読み出し済の前記論理−物理ページアドレス変換テーブル内の各領域を前記周期の1周期分新しい状態に戻し、
    読み出し対象の前記論理−物理ページアドレス変換テーブル内の全ての領域の読み出しを完了すると、前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された前記不揮発性メモリ領域へのポインタ情報が指す1つ以上の物理ページから前記書き込み先論理ページアドレスを読み出すステップと、前記揮発性メモリ上の前記論理−物理ページアドレス変換テーブル用領域の中から、前記物理ページから読み出した前記書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置全てを、前記ポインタ情報が指す物理ページアドレスで上書きするステップとを実行することで、前回の電源断直前の前記論理−物理ページアドレス変換テーブルの復元を完了することを特徴とするページ管理方法。
  3. 請求項1又は2のページ管理方法が、ソフトウェアで制御される形態で実装された集積回路。
  4. 請求項3に記載の集積回路を制御するソフトウェア。
JP2011150233A 2011-07-06 2011-07-06 不揮発性メモリのページ管理方法 Expired - Fee Related JP5646402B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011150233A JP5646402B2 (ja) 2011-07-06 2011-07-06 不揮発性メモリのページ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011150233A JP5646402B2 (ja) 2011-07-06 2011-07-06 不揮発性メモリのページ管理方法

Publications (2)

Publication Number Publication Date
JP2013016125A true JP2013016125A (ja) 2013-01-24
JP5646402B2 JP5646402B2 (ja) 2014-12-24

Family

ID=47688739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011150233A Expired - Fee Related JP5646402B2 (ja) 2011-07-06 2011-07-06 不揮発性メモリのページ管理方法

Country Status (1)

Country Link
JP (1) JP5646402B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180009695A (ko) * 2016-07-19 2018-01-29 웨스턴 디지털 테크놀로지스, 인코포레이티드 저장 장치들에 대한 매핑 테이블들
JP2020123023A (ja) * 2019-01-29 2020-08-13 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US11481121B2 (en) 2016-09-30 2022-10-25 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015A (en) * 1853-09-13 Improvement in fences
JP2008181204A (ja) * 2007-01-23 2008-08-07 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP2011059866A (ja) * 2009-09-08 2011-03-24 Toshiba Corp コントローラ、及びデータ記憶装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015A (en) * 1853-09-13 Improvement in fences
JP2008181204A (ja) * 2007-01-23 2008-08-07 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP2011059866A (ja) * 2009-09-08 2011-03-24 Toshiba Corp コントローラ、及びデータ記憶装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180009695A (ko) * 2016-07-19 2018-01-29 웨스턴 디지털 테크놀로지스, 인코포레이티드 저장 장치들에 대한 매핑 테이블들
KR102168838B1 (ko) 2016-07-19 2020-10-22 웨스턴 디지털 테크놀로지스, 인코포레이티드 저장 장치들에 대한 매핑 테이블들
US11481121B2 (en) 2016-09-30 2022-10-25 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
JP2020123023A (ja) * 2019-01-29 2020-08-13 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置

Also Published As

Publication number Publication date
JP5646402B2 (ja) 2014-12-24

Similar Documents

Publication Publication Date Title
US10761780B2 (en) Memory system
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
JP4356782B2 (ja) メモリ装置、メモリ制御方法、およびプログラム
US20150052329A1 (en) Memory control device, host computer, information processing system and method of controlling memory control device
JP5570406B2 (ja) メモリコントローラ、及びデータ記録装置
US10235284B2 (en) Memory system
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
JP5646402B2 (ja) 不揮発性メモリのページ管理方法
CN107544912B (zh) 一种日志记录方法、加载方法及其装置
JP4242245B2 (ja) フラッシュrom制御装置
US9798470B2 (en) Memory system for storing and processing translation information
JP2005115562A (ja) フラッシュrom制御装置
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2013196155A (ja) メモリシステム
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
CN107544866B (zh) 一种日志更新方法与装置
CN107544913B (zh) 一种ftl表快速重建方法与装置
JP2006244017A (ja) データコピー方法
CN116185309B (zh) 一种数据处理方法及数据存储设备
US11886335B2 (en) Memory system and controlling method of performing rewrite operation at maximum rewrite speed
US20230089246A1 (en) Memory system
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140219

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140320

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees