1個以上の、ページ単位で読み書きを行う不揮発性メモリのページへのアクセスを制御するページ管理方法であって、アクセス元が指定する論理ページアドレスをもとに、前記論理ページアドレスに対応するデータが不揮発性メモリ上で物理的に配置されている物理ページアドレスを求めるために使用する、論理ページアドレス順に整列された論理-物理ページアドレス変換テーブルを揮発性メモリ上に配置し、アクセス元からデータの書き込みを要求される度に前記データの書き込み先物理ページアドレスを特定するステップと、前記論理-物理ページアドレス変換テーブルの中から前記データの書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置を特定するステップと、前記論理-物理ページアドレス変換テーブルの中の前記特定された物理ページアドレスの記録位置に前記書き込み先物理ページアドレスを記録することで前記論理-物理ページアドレス変換テーブルを更新するステップと、前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとを組み合わせて前記揮発性メモリ上に追記するステップと、書き込み先物理ページに前記データと前記書き込み先論理ページアドレスとを書き込むステップとを実行し、一定周期ごとに、前記揮発性メモリ上の前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとの組み合わせの全てから構成される論理ページアドレス割り当て履歴を前記不揮発性メモリに保存するステップと、その後前記揮発性メモリ上の前記論理ページアドレス割り当て履歴を消去するステップと、前記論理-物理ページアドレス変換テーブル内の1つの領域を前記不揮発性メモリに保存するステップと、次の周期内にデータを書き込む前記不揮発性メモリ内の領域を確保するステップと、前記確保された不揮発性メモリ領域へのポインタ情報を前記不揮発性メモリに保存するステップとを繰り返し、前記周期は、前記論理ページアドレス割り当て履歴が消去されてから前記書き込み先論理ページアドレスと前記書き込み先物理ページアドレスとの組み合わせで埋まるまでを1周期とし、前記書き込み先物理ページアドレスは、1つ前の周期で前記不揮発性メモリに保存されたポインタ情報が指す領域の範囲内から特定されることを特徴とするページ管理方法。請求項1に記載のページ管理方法において、初期化時に、前記不揮発性メモリに保存されている前記論理-物理ページアドレス変換テーブル内の各領域のそれぞれ最新バージョンを、前記揮発性メモリ上の保存元領域に読み出すステップを実行し、前記論理-物理ページアドレス変換テーブル内の各領域を読み出す順番は、前記不揮発性メモリ上への保存のタイミングが古いほど先であり、前記論理-物理ページアドレス変換テーブル内の1領域を読み出し完了する度に、前記読み出し完了した前記論理-物理ページアドレス変換テーブル内の1領域より1周期後に前記不揮発性メモリに保存された前記論理ページアドレス割り当て履歴を読み出すステップと、前記揮発性メモリ上の前記論理-物理ページアドレス変換テーブル用領域の中から、読み出した前記論理ページアドレス割り当て履歴中に含まれる前記書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置全てを、読み出した前記論理ページアドレス割り当て履歴中に含まれる前記書き込み先物理ページアドレスで上書きするステップとを実行することで、前記揮発性メモリ上に読み出し済の前記論理-物理ページアドレス変換テーブル内の各領域を前記周期の1周期分新しい状態に戻し、読み出し対象の前記論理-物理ページアドレス変換テーブル内の全ての領域の読み出しを完了すると、前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された前記不揮発性メモリ領域へのポインタ情報が指す1つ以上の物理ページから前記書き込み先論理ページアドレスを読み出すステップと、前記揮発性メモリ上の前記論理-物理ページアドレス変換テーブル用領域の中から、前記物理ページから読み出した前記書き込み先論理ページアドレスに対応する物理ページアドレスの記録位置全てを、前記ポインタ情報が指す物理ページアドレスで上書きするステップとを実行することで、前回の電源断直前の前記論理-物理ページアドレス変換テーブルの復元を完了することを特徴とするページ管理方法。請求項1又は2のページ管理方法が、ソフトウェアで制御される形態で実装された集積回路。請求項3に記載の集積回路を制御するソフトウェア。しかし、前述した従来技術では、WSLが空から一杯になるまでにデータが書き込まれた論理アドレスの範囲が広くなるほど、不揮発性メモリ上でASBへの書き込み、又はASBのSATへの再構築の範囲が広くなり、最悪の場合SATの更新範囲が全範囲に亘る恐れがある。したがって、WSLが一杯になったときのデータ書き込み性能は、それまでにデータが書き込まれた論理アドレスの範囲に大きく影響される。前記課題を解決するための手段の概要は以下の通りである。すなわち、本発明に係るページ管理方法は、論理ページアドレス順に整列された、不揮発性メモリ全領域分の論理-物理ページアドレス変換テーブルを揮発性メモリ上に備え、後述の論理ページアドレス割り当て履歴が消去されてから埋まるまでの一定周期ごとに、それまでにデータが書き込まれた論理アドレスの範囲に関係なく、前記論理-物理ページアドレス変換テーブル内の1つの領域を前記不揮発性メモリに保存する。初期化時は、前記論理-物理ページアドレス変換テーブル内の各領域を、保存のタイミングが古い順から、前記不揮発性メモリから前記揮発性メモリ上の保存元領域に順次読み出して論理-物理ページアドレス変換テーブルを復元する。前記各領域は、それぞれ最新のバージョンを読み出し対象とする。ここで、前述の通り前記論理-物理ページアドレス変換テーブルの全領域を電源断の瞬間に一度に保存するのではなく、部分的に周期的なタイミングで保存しているので、前記揮発性メモリ上に読み出された前記論理-物理ページアドレス変換テーブルを前回の電源断の時点の状態にまで戻すための手段が必要になる。そのための手段は2つである。第1に、前記論理-物理ページアドレス変換テーブル内の1つの領域を保存するのと同じタイミングで、前回の保存完了以降にデータを書き込んだ書き込み先論理ページアドレスと書き込み先物理ページアドレスとの組み合わせの全てから構成される論理ページアドレス割り当て履歴を前記不揮発性メモリに保存する。前記論理-物理ページアドレス変換テーブル内の各領域を前記揮発性メモリ上に読み出す度に、それが前記不揮発性メモリに保存されたタイミングより1周期後に前記不揮発性メモリに保存された前記論理ページアドレス割り当て履歴を参照し、そこに記録された前記書き込み先論理ページアドレスに対応する前記書き込み先物理ページアドレスで、前記論理-物理ページアドレス変換テーブルの読み出し先領域を上書きする。このように、前記論理-物理ページアドレス変換テーブル内の各領域の読み出しサイクルと、前記論理ページアドレス割り当て履歴の反映のサイクルとを交互に繰り返すことで、前記揮発性メモリ上の前記論理-物理ページアドレス変換テーブルを、前回の電源断前に前記論理-物理ページアドレス変換テーブル内の領域が最後に不揮発性メモリに保存された時点の状態にまで戻すことができる。前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された、前記論理-物理ページアドレス変換テーブル内の領域を前記揮発性メモリに読み出した後は、前述のような論理ページアドレス割り当て履歴の反映ができないので、前記揮発性メモリ上の前記論理-物理ページアドレス変換テーブルを前回の電源断直前の状態にまで戻すための第2の手段が必要になる。具体的には、データ書き込み先の物理ページに対し、そのデータの書き込み先論理ページアドレスを書き込み内容に含める。前記物理ページへのポインタ情報は、前回の前記論理-物理ページアドレス変換テーブル内の領域を前記不揮発性メモリに保存するのと同じタイミングで不揮発性メモリに保存する。前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された、前記論理-物理ページアドレス変換テーブル内の領域を揮発性メモリに読み出した後は、前回の電源断前の最後のタイミングで前記不揮発性メモリに保存された前記ポインタ情報を参照し、前記ポインタ情報が指す物理ページアドレスで前記論理-物理ページアドレス変換テーブルの読み出し先領域を上書きする。上書き位置は、前記ポインタ情報が指す物理ページに記録された前記書き込み先論理ページアドレスを参照して特定する。これまでに説明した手段により、初期化時に、前記論理-物理ページアドレス変換テーブルを前回の電源断直前の状態にまで復元することができる。本発明によれば、論理-物理ページアドレス変換テーブルを、特定の周期で、複数の領域に分けて、かつ初期化時に前回の電源断直前の状態に復元できる方式で不揮発性メモリに保存するので、安定した性能でデータの書き込みができる。以下に、本発明に係るページ管理方法の実施形態を図面に基づいて詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。《第1の実施形態》本発明の第1の実施形態の構成を図1に示す。本発明に係るページ管理方法は、集積回路101と、揮発性メモリ103上のソフトウェア141とにより実行される。集積回路101は、CPUCentralProcessingUnit111、バスコントローラ112、ホストI/Finterface113、揮発性メモリ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行目~yN-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は、yNの値が最大値に達したかすなわち、論理-物理ページアドレス変換テーブル143の最終行まで不揮発性メモリ104に保存完了したか判定しステップS513、達した場合はステップS513でYesに分岐yの値を0で初期化するステップS514。これにより、次にホスト機器102から次のデータ書き込みが要求されたとき、ステップS509で論理-物理ページアドレス変換テーブル143の保存対象領域が先頭に戻る。yNの値が最大値に達していない場合ステップ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行目からN1×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の処理の途中経過及び結果の一例を時系列で表すと、図9a~図9iの通りになる。図9a~図9iは、図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。