(57)【特許請求の範囲】
【請求項１】
データを記憶する外部記憶装置に接続され、複数のメモリセルを含むメモリセル群をＮ個（Ｎは２以上の整数）含む複数のブロックを含む半導体記憶装置に対するアクセスを制御するコントローラであって、
前記ブロックは複数のページを有し、
前記ページは所定の単位の記憶領域であり、
前記メモリセル群には複数のページが対応付けられており、
前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをＰ個（Ｐは２以上の整数）含み、
前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
前記書き込みステージのそれぞれは、実行する順序が予め定められており、
前記メモリセル群に含まれる第１メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第１メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第１メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第１メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部と、
を備えることを特徴とするコントローラ。
【請求項２】
前記書き込み部が前記第１メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして書き込んだ前記データを記憶する前記外部記憶装置内の記憶領域を、前記書き込みステージの書き込み処理が完了後、解放する転記制御部をさらに備えること、
を特徴とする請求項１に記載のコントローラ。
【請求項３】
前記転記制御部は、前記書き込み部が前記第１メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして書き込んだ前記データを記憶する前記外部記憶装置内の記憶領域を、前記書き込みステージの書き込み処理が完了後、前記書き込みステージの次の前記書き込みステージの書き込み処理に必要なページのデータを読み込む処理が開始される前までに解放すること、
を特徴とする請求項２に記載のコントローラ。
【請求項４】
前記読み込み部は、決定された前記データが記憶されている前記外部記憶装置内の記憶領域が解放されていない場合は、決定された前記データを前記半導体記憶装置から読み込まないこと、
を特徴とする請求項２に記載のコントローラ。
【請求項５】
前記半導体記憶装置に記憶されるデータの論理アドレスと物理アドレスとを対応づけた管理情報を記憶する管理情報記憶部に接続され、
前記第１メモリセル群における最後の書き込みステージの書き込み処理が完了後、前記決定部により決定された前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスを、前記第１メモリセル群内に対応付けられたページでの前記データを書き込んだ位置を表す前記物理アドレスに更新する更新部をさらに備えること、
を特徴とする請求項１〜４のいずれか１つに記載のコントローラ。
【請求項６】
前記更新部は、複数の前記第１メモリセル群における最後の書き込みステージの書き込み処理が完了した後に、複数の前記第１メモリセル群に対応付けられたページに書き込んだ前記データの前記物理アドレスをまとめて更新すること、
を特徴とする請求項５に記載のコントローラ。
【請求項７】
前記更新部は、前記半導体記憶装置に対するアクセス処理と、前記物理アドレスの更新処理とを適宜切り替えながら実行すること、
を特徴とする請求項５に記載のコントローラ。
【請求項８】
前記更新部は、前記第１メモリセル群に対応付けられたページに書き込む前の前記データの前記メモリセル群内に対応付けられたページでの書き込み位置を表す前記物理アドレスと、前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスと、が一致する場合に、前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスを、前記第１メモリセル群内に対応付けられたページでの前記データを書き込んだ位置を表す前記物理アドレスに更新すること、
を特徴とする請求項５〜７のいずれか１つに記載のコントローラ。
【請求項９】
前記論理アドレスに変換可能なアドレス情報である記憶装置アドレスに対するデータの書き込み要求を外部装置から受付けるインタフェース部と、
前記書き込み要求が受付けられた前記データを前記メモリセル群に対応付けられたページに書き込むように前記メモリセル群の書き込みステージの書き込み処理を実施する書き込み制御部と、をさらに備えること、
を特徴とする請求項５〜８のいずれか１つに記載のコントローラ。
【請求項１０】
前記書き込み制御部が前記データを書き込む前記メモリセル群が属するブロックと、前記第１メモリセル群が属するブロックとが異なること、
を特徴とする請求項９に記載のコントローラ。
【請求項１１】
前記書き込み制御部が前記データを書き込む前記メモリセル群が属するブロックと、前記第１メモリセル群が属するブロックとが同一であること、
を特徴とする請求項９に記載のコントローラ。
【請求項１２】
データを記憶する外部記憶装置と、
複数のメモリセルを含むメモリセル群をＮ個（Ｎは２以上の整数）含む複数のブロックを含む半導体記憶装置と、
前記半導体記憶装置に対するアクセスを制御するコントローラと、を備え、
前記ブロックは複数のページを有し、
前記ページは所定の単位の記憶領域であり、
前記メモリセル群には複数のページが対応付けられており、  前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをＰ個（Ｐは２以上の整数）含み、
前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
前記書き込みステージのそれぞれは、実行する順序が予め定められており、
前記コントローラは、
前記メモリセル群に含まれる第１メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第１メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第１メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第１メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部と、
を備えることを特徴とする記憶装置。
【請求項１３】
データを記憶する外部記憶装置に接続され、複数のメモリセルを含むメモリセル群をＮ個（Ｎは２以上の整数）含む複数のブロックを含む半導体記憶装置に対するアクセスを制御するコンピュータで実行されるプログラムであって、
前記ブロックは複数のページを有し、
前記ページは所定の単位の記憶領域であり、
前記メモリセル群には複数のページが対応付けられており、
前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをＰ個（Ｐは２以上の整数）含み、
前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
前記書き込みステージのそれぞれは、実行する順序が予め定められており、
前記コンピュータを、
前記メモリセル群に含まれる第１メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第１メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第１メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第１メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コントローラ、記憶装置およびプログラムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリのような半導体記憶媒体を用いて記憶装置を構成しようとする場合、転記処理（コンパクション処理、ガーベージコレクション処理）が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１６５０６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＡＮＤ型フラッシュメモリのような半導体記憶媒体は、内部のメモリセル群に複数対応付けられているページを単位としてデータを入出力する。そして、このような半導体記憶媒体では、メモリセル群へのデータ書き込み処理が完了するために、複数の書き込みステージを経る必要があったり、各書き込みステージにおいてメモリセル群の書き込み順番が規定されていたり、各書き込みステージにおいて必要なデータの対応付けが規定されていたりする。
【０００５】
このような半導体記憶媒体で転記処理を実現するには、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して読み書き処理を実行しなければならない。
【課題を解決するための手段】
【０００６】
実施形態のコントローラは、複数のメモリセルを含むメモリセル群をＮ個含む複数のブロックを含む半導体記憶装置に対するアクセスを制御する。コントローラは、決定部と、読み込み部と、書き込み部と、を備える。決定部は、メモリセル群に含まれる第１メモリセル群の書き込み処理に必要なページが、所定の順序で実行する場合に初めて必要となる書き込みステージが開始される前までに、第１メモリセル群の書き込み処理に必要なページに転記するデータを決定する。読み込み部は、書き込みステージが開始される前までに、決定されたデータを半導体記憶装置から読み込んで外部記憶装置に記憶する。書き込み部は、第１書き込みステージの実行順序となった場合に、外部記憶装置に記憶されたデータを第１メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして、第１メモリセル群の書き込みステージの書き込み処理を実行する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態の記憶装置のブロック図。
【図２】記憶媒体の構成例を示す図。
【図３】メモリセルに記憶される情報と強弱レベルとの対応を示す図。
【図４】メモリセル群とページとの対応を示す図。
【図５】書き込みステージで書き込みの対象となるページの例を示す図。
【図６】書き込み順序の例を示す図。
【図７】アドレス正引きテーブルの構成例を示す図。
【図８】転記位置情報の構成例を示す図。
【図９】第１の実施形態の書き込み処理のフローチャート。
【図１０】第１の実施形態の読み込み処理のフローチャート。
【図１１】第１の実施形態の転記処理のフローチャート。
【図１２】書き込みステージで書き込みの対象となるページの他の例を示す図。
【図１３】書き込み順序の他の例を示す図。
【図１４】書き込みステージで書き込みの対象となるページの他の例を示す図。
【図１５】第２の実施形態の記憶装置のブロック図。
【図１６】第２の実施形態の転記処理のフローチャート。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、本発明にかかるコントローラ、記憶装置およびプログラムの実施形態を詳細に説明する。なお、以下の各実施形態では、記憶装置としてＳＳＤ（Solid  State  Drive）を例にとり説明するが、これに限定されるものではない。
【０００９】
（第１の実施形態）
第１の実施形態にかかる記憶装置は、任意の転記対象データが初めて必要とされる、任意のメモリセル群の任意の書き込みステージが開始されるまでに、当該転記対象データの転記位置情報を生成し、生成した転記位置情報に従ってデータを転記する。第１の実施形態にかかる記憶装置では、メモリセル群に対するデータの書き込みは、複数回の書き込み処理が実行された時点で完了するものとする。複数回（Ｐ回、Ｐは２以上の整数）の書き込み処理のそれぞれを書き込みステージという。転記位置情報とは、転記元のデータの位置情報と転記先の位置情報とを対応付けた情報である（詳細は後述）。
【００１０】
図１は、第１の実施形態の記憶装置１００の機能構成の概要の一例を示すブロック図である。図１に示すように、記憶装置１００は、コントローラ１１０と、第１アクセス制御部１５１と、第１メモリ１４１と、第２アクセス制御部１５２と、第２メモリ１４２と、第３アクセス制御部１５３と、第３メモリ１４３と、媒体アクセス制御部１３１と、記憶媒体１２１と、ホストインタフェース部１６０と、を有する。
【００１１】
コントローラ１１０は、読み込み制御部１１１と、書き込み制御部１１２と、転記制御部１１３と、決定部１１４と、更新部１１５と、読み込み部１１６と、書き込み部１１７と、を有する。
【００１２】
記憶媒体１２１は、ＮＡＮＤ型フラッシュメモリのような半導体記憶媒体（半導体記憶装置）である。図２は、記憶媒体１２１の構成例を示す図である。図２に示すように、記憶媒体１２１は、複数のブロック２０１を有する。ブロック２０１は、例えば記憶媒体１２１の消去処理の単位のような、データの読み書き処理における単位の１つである。また、図２に示すように、各ブロック２０１は、複数（Ｎ個、Ｎは２以上の整数）のメモリセル群２０２を有する。メモリセル群２０２は、記憶媒体１２１内部のデータ入出力単位である。各メモリセル群２０２は、複数（Ｍ個、Ｍは２以上の整数）のメモリセル２０３を有する。ブロック２０１に含まれるいずれのメモリセル群２０２であるかを識別するために、メモリセル群番号が設定されている。また、メモリセル群２０２に含まれるいずれのメモリセル２０３であるかを識別するために、カラム番号が設定されている。
【００１３】
メモリセル２０３には、多値の情報が記録される。図３は、メモリセル２０３に記憶される情報（ビット列）と強弱レベルとの対応の一例を示す図である。例えば、１セルあたり４ビット（４ビット／セル）の情報が記録される場合、図３に示すように、メモリセル２０３に、１６通りの強弱レベルのうちいずれかの強弱レベルの電荷等が記録される。また、それぞれの強弱レベルには所定の規則に従って４ビットのビット列を対応付ける。図３には、ビット列の対応付けの例が示されている。
【００１４】
メモリセル群２０２には１つ以上のページが対応付けられている。ページは、記憶媒体１２１と外部とのデータの入出力単位である。図４は、メモリセル群２０２とページとの対応の一例を示す図である。例えば、１つのメモリセル群２０２に対し、４つのページが対応付けられている場合は、図４に示すように、各メモリセル群２０２に対して、第１ページ、第２ページ、第３ページ、および、第４ページの４つのページが対応付けられる。また、図４に示すように、ブロック２０１における各ページには、通しのページ番号が付与される。
【００１５】
また、ページのデータは、メモリセル群２０２に記録された強弱レベルに対応付けられたビット列と、所定の規則に従って対応付けられる。例えば、１つのメモリセル群２０２に対し、４つのページが対応付けられている場合は、第１ページ、第２ページ、第３ページ、および、第４ページのデータは、それぞれ、当該メモリセル群２０２に記録された強弱レベルに対応付けられたビット列の上位から１ビット目、２ビット目、３ビット目、および、４ビット目からなるように対応付けられる。図４のメモリセル群番号０のメモリセル群２０２の例では、４つのページのカラム１のビットは、第１ページ、第２ページ、第３ページ、第４ページの順番に、１、１、０、１である。このため、図３に示すようなビット列の対応付けの場合は、メモリセル群番号０のメモリセル群２０２のカラム１のメモリセル２０３には、"１１０１"のビット列に対応する強弱レベル２の強弱レベルが記録される。なお、ページのデータと、メモリセル群２０２に記録された強弱レベルに対応付けられたビット列との、対応付けの規則はこれに限られない。
【００１６】
記憶媒体１２１への書き込み処理（書き込みシーケンス）には、以下の（１）〜（３）の３点の制約が含まれる。
【００１７】
（１）あるメモリセル群２０２に対し、複数の書き込みステージを実行することで、当該メモリセル群２０２への書き込みシーケンスが完了する。例えば、あるメモリセル群２０２への書き込みシーケンスを完了するために必要な書き込みステージ数が３のときは、第１ステージ、第２ステージ、および、第３ステージの書き込みステージを実行することで、当該メモリセル群２０２への書き込みが完了する。書き込みシーケンスを完了するために必要な書き込みステージ数は、記憶媒体１２１のブロック２０１毎に同じでもよいし異なっていてもよい。また、書き込みシーケンスを完了するために必要な書き込みステージ数は、あるブロック２０１のメモリセル群２０２毎に同じでもよいし異なっていてもよい。
【００１８】
（２）各書き込みステージでは、当該メモリセル群２０２に対応付けられている１つ以上のページのうちの０個以上のページを含む、１つ以上のページのデータが各書き込みステージの書き込み処理において必要とされる。図５は、各書き込みステージの書き込み処理に必要となるページ（書き込みの対象となるページ（対象ページ））の例を示す図である。図５では、例えば、メモリセル群番号１のメモリセル群２０２の第１ステージでは、メモリセル群番号１のメモリセル群２０２の第１ページと、メモリセル群番号２のメモリセル群２０２の第１ページとが対象ページとなることが示されている。また、メモリセル群番号２のメモリセル群２０２の第３ステージの書き込みステージでは、メモリセル群番号２のメモリセル群２０２の第３ページと、メモリセル群番号２のメモリセル群２０２の第４ページとが対象ページとなる例を示している。図５に示すように、複数の書き込みステージの対象ページに同じページが含まれていてもよいし、書き込み対象のメモリセル群２０２とは異なるメモリセル群２０２に対応付けられているページが含まれていてもよい。また、各書き込みステージの対象ページは、記憶媒体１２１のブロック２０１毎に同じでもよいし異なっていてもよい。
【００１９】
（３）所定の順序で、あるブロック２０１における、各メモリセル群２０２の各書き込みステージを実行する。図６は、書き込み順序の例を示す図である。図６では、例えば、メモリセル群番号０のメモリセル群２０２の第１ステージを実行した後は、順に、メモリセル群番号１のメモリセル群２０２の第１ステージ、メモリセル群番号０のメモリセル群２０２の第２ステージを実行しなければならないことが示されている。図６に示すように、あるメモリセル群２０２のある書き込みステージと次の書き込みステージの書き込み順番の間に、別のメモリセル群２０２のある書き込みステージが挟まっていてもよい。また、書き込み順序は、記憶媒体１２１のブロック２０１毎に同じでもよいし異なっていてもよい。
【００２０】
図１の説明に戻る。媒体アクセス制御部１３１は、要求元から指示される記憶媒体１２１からの読み込み命令を受け付け、読み込み命令に対応するデータを記憶媒体１２１から読み込み、要求元に返却する。また、媒体アクセス制御部１３１は、要求元から指示される記憶媒体１２１への書き込み命令を受け付け、書き込み命令に対応するデータを記憶媒体１２１に書き込む。
【００２１】
第１メモリ１４１は、管理情報を記憶する管理情報記憶部として機能する。管理情報は、例えばアドレス正引きテーブルを含む。なお、管理情報は、以降の種々の処理を簡単にするために、アドレス正引きテーブルの情報から導出可能な情報を別途含んでいてもよい。また、以降の種々の処理において、処理を簡単にするために、アドレス正引きテーブルの情報から導出可能な情報を用いて種々の処理を実行してもよい。
【００２２】
アドレス正引きテーブルは、記憶装置１００内部のデータの管理単位である論理アドレス情報と、論理アドレスのデータが格納されている記憶媒体１２１の物理的なアドレス情報とを対応付けたテーブルである。図７は、アドレス正引きテーブルの構成例を示す図である。例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、図７に示すように、論理アドレス情報を昇順に並べたものをテーブルのインデックスとする。そして、テーブルの要素として、記憶媒体１２１の物理的なアドレス情報であるブロック番号とページ番号とページ上オフセットとの組を記憶する。論理アドレスのデータのサイズは、例えば、１０２４バイトのように定められているが、これに限られない。
【００２３】
ページ上オフセットは、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズより小さい場合に指定される。例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合、ページ上オフセットとして「０」または「１」を指定することにより、それぞれ、データがページの前半または後半に記憶されていることが表される。ページ上オフセットの指定方法は２値に限られるものではない。例えば、論理アドレスのデータのサイズがページのサイズのｎ分の１（ｎは２以上の整数）の場合に、ｎ値でページ上オフセットを指定するように構成してもよい。
【００２４】
なお、アドレス正引きテーブルの構成は、図７に示される構成に限られない。例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズと同じ場合は、ページ上オフセットは不要である。また、例えば記憶媒体１２１に並列アクセスして速度向上を図るために記憶媒体１２１を複数搭載するような場合は、各記憶媒体１２１から選出したブロック群を束ねた論理ブロックという単位で種々の情報を管理してもよい。また、論理ブロックを構成するブロック２０１の同一ページ番号のページを束ねた論理ページという単位で種々の情報を管理してもよい。この場合、管理情報に、論理ブロック情報から論理ブロックを構成するブロック２０１の情報を導出するための論物変換表（図示せず）をさらに含ませてもよい。この場合、記憶媒体１２１の物理的なアドレス情報として、論理ブロック番号と、論理ページ番号と、論理ページ上オフセットとが含まれてもよい。このように、アドレス正引きテーブルの構成は種々変形可能である。以降は、記憶媒体１２１の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明する。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
【００２５】
第１アクセス制御部１５１は、要求元から指示される第１メモリ１４１からの読み込み命令を受け付け、読み込み命令に対応するデータを第１メモリ１４１から読み込み、要求元に返却する。また、第１アクセス制御部１５１は、要求元から指示される第１メモリ１４１への書き込み命令を受け付け、書き込み命令に対応するデータを第１メモリ１４１に書き込む。
【００２６】
第２メモリ１４２は、転記位置情報を記憶する。転記位置情報は、転記元のデータの位置情報と転記先の位置情報とを対応づけた情報である。図８は、転記位置情報の構成例を示す図である。図８は、転記先のブロック２０１が決定された後、当該ブロック２０１に含まれる各メモリセル群２０２に対する書き込み処理で参照される転記位置情報の例を示している。
【００２７】
メモリセル群番号は、転記先のメモリセル群２０２のメモリセル群番号を表す。対象ページは、当該メモリセル群２０２の各書き込みステージで書き込みの対象となるページを表す。転記元アドレス情報は、対象ページに転記するデータ（転記元データ）を特定する情報である。転記元アドレス情報は、論理アドレス情報と、ブロック番号と、ページ番号と、ページ上オフセットと、を含む。
【００２８】
例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合で、各書き込みステージの対象ページが図５に示されるような場合、図８に示すように、転記先のメモリセル群２０２の各書き込みステージの各対象ページに対して書き込む転記元データとして、２つ分の論理アドレスのデータが対応付けられる。
【００２９】
対応付けられる情報は、転記元データの論理アドレス情報と、物理的なアドレス情報（ブロック番号、ページ番号、ページ上オフセット）である。例えば、図８の場合、対応付けられている２つ分の論理アドレスのデータのうち、１つ目の論理アドレスのデータが対象ページのオフセット０の位置に転記され、２つ目の論理アドレスのデータが対象ページのオフセット１の位置に転記されることになる。オフセットの対応付けはこの例に限られない。なお、重複する情報は１つにまとめることで、転記位置情報のサイズを削減してもよい。なお、図８に示される転記位置情報は、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合の構成例であり、転記位置情報の構成は種々変形可能である。以降は、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合の構成で説明するが、転記位置情報の種々の構成に適宜読みかえることが可能である。
【００３０】
なお、第２メモリ１４２が記憶する情報には、以降の種々の処理を簡単にするために、転記位置情報の情報から導出可能な情報を別途含んでいてもよい。また、以降の種々の処理において、処理を簡単にするために、転記位置情報の情報から導出可能な情報を用いて種々の処理を実行してもよい。
【００３１】
第２アクセス制御部１５２は、要求元から指示される第２メモリ１４２からの読み込み命令を受け付け、読み込み命令に対応するデータを第２メモリ１４２から読み込み、要求元に返却する。また、第２アクセス制御部１５２は、要求元から指示される第２メモリ１４２への書き込み命令を受け付け、書き込み命令に対応するデータを第２メモリ１４２に書き込む。
【００３２】
第３メモリ１４３は、転記データバッファとして機能するメモリ（外部記憶装置）であり、転記するデータ（転記元データ）を一時記憶する。
【００３３】
第３アクセス制御部１５３は、要求元から指示される第３メモリ１４３からの読み込み命令を受け付け、読み込み命令に対応するデータを第３メモリ１４３から読み込み、要求元に返却する。また、第３アクセス制御部１５３は、要求元から指示される第３メモリ１４３への書き込み命令を受け付け、書き込み命令に対応するデータを第３メモリ１４３に書き込む。
【００３４】
ホストインタフェース部１６０は、図示しないホスト装置から、書き込み命令（書き込み要求）および読み込み命令（書き込み要求）を含む各種命令を受け付ける。書き込み命令は、記憶装置アドレス情報および書き込みデータを含む。読み込み命令は、記憶装置アドレス情報を含む。記憶装置アドレス情報は、記憶装置１００がホスト装置に提供するアドレス情報である。例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤでの記憶装置アドレス情報の例としては、ＬＢＡ（Logical  Block  Address）が適用できる。記憶装置アドレスのデータのサイズは、例えば、５１２バイトのように定められているが、これに限られない。
【００３５】
ホストインタフェース部１６０は、受け付けた命令が書き込み命令であったときは、書き込み制御部１１２に書き込み命令を転送する。ホストインタフェース部１６０は、受け付けた命令が読み込み命令であったときは、読み込み制御部１１１に読み込み命令を転送する。
【００３６】
ホストインタフェース部１６０は、読み込み制御部１１１からデータを受信すると、受信したデータをホスト装置に転送する。
【００３７】
書き込み制御部１１２は、ホストインタフェース部１６０から書き込み命令を受信すると、受信した書き込み命令から記憶装置アドレス情報および書き込みデータを抽出する。書き込み制御部１１２は、抽出した書き込みデータを、記憶媒体１２１の所定の物理的なアドレスに書き込むように、媒体アクセス制御部１３１に書き込みを指示する。書き込み制御部１１２は、書き込みデータを書き込む物理的なアドレスを、任意の方法で決定すればよい。
【００３８】
なお、物理的なアドレス情報が示す記憶領域が含まれるブロック２０１、すなわち、ホスト装置からの書き込み先として使用するブロック２０１と、後述する転記先として使用するブロック２０１とは、同一のブロック２０１であっても異なるブロック２０１であってもよい。なお、同一のブロック２０１である場合は、書き込み制御部１１２は、決定する物理的なアドレスが転記先の物理的なアドレスと重複しないように、転記制御部１１３と連携処理する。
【００３９】
書き込み制御部１１２は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。書き込み制御部１１２は、予め定められた記憶装置アドレス情報と論理アドレス情報との対応関係に従い、記憶装置アドレス情報を論理アドレス情報に変換する。例えば、記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレス情報が１０２４バイトごとに割り当てられている場合、書き込み制御部１１２は、記憶装置アドレス情報を２で除算したときの商を求めることにより、記憶装置アドレス情報を論理アドレス情報に変換できる。
【００４０】
書き込み制御部１１２は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、書き込み先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。
【００４１】
読み込み制御部１１１は、ホストインタフェース部１６０から読み込み命令を受信すると、受信した読み込み命令から記憶装置アドレス情報を抽出する。読み込み制御部１１１は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。
【００４２】
読み込み制御部１１１は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を読み込むように、第１アクセス制御部１５１に読み込みを指示し、記憶媒体１２１の物理的なアドレス情報を取得する。
【００４３】
読み込み制御部１１１は、取得した記憶媒体１２１の物理的なアドレスに記録されているデータを読み込むように、媒体アクセス制御部１３１に読み込みを指示し、データを取得する。読み込み制御部１１１は、取得したデータをホストインタフェース部１６０に送信する。
【００４４】
転記制御部１１３と決定部１１４と読み込み部１１６と書き込み部１１７と更新部１１５とが連携して、メモリセル群に含まれる第１メモリセル群の書き込み処理に必要なページが、所定の書き込み順序で実行する場合に初めて必要となる書き込みステージが開始される前までに、第１メモリセル群の書き込み処理に必要なページに転記するデータを決定し、書き込みステージが開始される前までに、決定されたデータを半導体記憶装置から読み込んで外部記憶装置に記憶し、書き込みステージの実行順序となった場合に、外部記憶装置に記憶されたデータを第１メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして、第１メモリセル群の書き込みステージの書き込み処理を実行し、書き込み部が第１メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして書き込んだデータを記憶する外部記憶装置内の記憶領域を、書き込みステージの書き込み処理が完了後、解放し、第１メモリセル群における最後の（Ｐ個目の）書き込みステージの書き込み処理が完了後、決定されたデータの論理アドレスに対応する管理情報の物理アドレスを、第１メモリセル群内に対応付けられたページでのデータを書き込んだ位置を表す物理アドレスに更新する。また、必要に応じて、第１メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして書き込んだデータを記憶する外部記憶装置内の記憶領域を、書き込みステージの書き込み処理が完了後、書き込みステージの次の書き込みステージの書き込み処理に必要なページのデータを読み込む処理が開始される前までに解放する。また、必要に応じて、決定されたデータが記憶されている外部記憶装置内の記憶領域が解放されていない場合は、決定されたデータを半導体記憶装置から読み込まない。また、必要に応じて、複数の第１メモリセル群における最後の（Ｐ個目の）書き込みステージに対するデータの書き込み処理が完了した後に、複数の第１メモリセル群に対応付けられたページに書き込んだデータの物理アドレスをまとめて更新する。また、必要に応じて、半導体記憶装置に対するアクセス処理等の処理と、物理アドレスの更新処理とを適宜切り替えながら実行する。以降、詳細な一例を説明する。
【００４５】
転記制御部１１３は、転記の必要性が生じると、転記処理を制御する。前述したように、各書き込みステージで書き込み対象となる対象ページは１個以上存在する。転記制御部１１３は、所定の順序で各書き込みステージを実行する場合に、あるページが初めて対象ページとなる書き込みステージが開始される前までに、当該対象ページに転記するデータを決定するように、決定部１１４に指示する。
【００４６】
一例として、各書き込みステージでの対象ページが図５に示される場合で、各メモリセル群２０２の各書き込みステージの所定の順序が図６に示される場合について説明する。この場合、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージの対象ページは、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページである。そして、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページの両方が、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
【００４７】
また、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージの対象ページは、メモリセル群番号１のメモリセル群２０２の第１ページとメモリセル群番号２のメモリセル群２０２の第１ページである。このうちメモリセル群番号２のメモリセル群２０２の第１ページが、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
【００４８】
したがって、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージになるまでの間に、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示する。また、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージになるまでの間に、メモリセル群番号２のメモリセル群２０２の第１ページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示する。
【００４９】
ここで、メモリセル群番号１のメモリセル群２０２の第１ページに転記すべきデータ（転記データ）は、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージで必要になる。この転記データは、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージになるまでの間に決定されていることになる。
【００５０】
なお、図５に示す例と異なり、例えば、あるメモリセル群２０２へのある書き込みステージ数の書き込み処理の対象ページに、書き込み対象のメモリセル群２０２とは異なるメモリセル群２０２に対応付けられているページが含まれず、かつ、あるメモリセル群２０２の２番目以降の書き込みステージにおいて書き込み対象になるページがすべて、当該メモリセル群２０２の１番目の書き込みステージで書き込み対象になるページに含まれる場合は、ある転記先のメモリセル群２０２の１番目の書き込みステージになるまでの間に、ある転記先のメモリセル群２０２に対応付けられているページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示することになる。
【００５１】
転記制御部１１３は、転記先のメモリセル群２０２のある書き込みステージに必要なデータ（転記データ）が決定されてから、当該転記先のメモリセル群２０２の当該書き込みステージになるまでの間に、読み込み部１１６に対して当該転記データの読み込みを指示する。なお、転記データの読み込み処理は、１個以上の対象ページのそれぞれのページについて、決定部１１４によって転記データが全て決定されてから読み込むようにしてもよいし、決定部１１４によって転記データの少なくとも一部が決定され次第、適宜読み込むようにしてもよい。
【００５２】
転記データを格納している第３メモリ１４３のバッファ領域がまだ解放されていない場合は、読み込み処理を省略して、当該バッファ領域に既に読み込まれている転記データを今後の処理で利用してもよい。
【００５３】
転記制御部１１３は、転記先のあるメモリセル群２０２のある書き込みステージになったら、書き込み部１１７に、当該メモリセル群２０２への当該書き込みステージの実行を指示する。
【００５４】
転記制御部１１３は、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に、転記先のあるメモリセル群２０２のある書き込みステージの書き込み処理の完了以降に、第３メモリ１４３内の転記データが格納されているバッファ領域を解放する。なお、当該バッファ領域は書き込みステージの完了後に直ちに解放してもよい。すなわち、ある書き込みステージの完了後、当該書き込みステージで使用したバッファ領域を、次の書き込みステージが開始する前までに解放してもよい。この場合、第３メモリ１４３のメモリ使用量を削減できる。また、当該バッファ領域の解放を遅延させてもよい。当該バッファ領域に格納されているデータが以降の書き込みステージでも必要になる場合、当該バッファ領域を、当該書き込みステージまで解放させないことで、読み込み処理のコストを削減できる。
【００５５】
転記制御部１１３は、転記先のメモリセル群２０２に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部１１５に対して、当該メモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページの管理情報の更新が指示される。
【００５６】
なお、管理情報の更新には、後述するように、転記位置情報が必要となる。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部１１３は更新部１１５に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック２０１とする場合、転記制御部１１３が、転記先のブロック２０１への書き込みがすべて完了したタイミングで、当該ブロック２０１に関する管理情報の更新処理を指示してもよい。また、更新部１１５は、管理情報の更新処理のみを連続して実行してもよい。この場合、更新処理の制御を簡易化できる。更新処理を連続して実行する場合、例えば記憶媒体１２１へのアクセスが制限される場合がありうる。このため、更新部１１５が、記憶媒体１２１へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
【００５７】
転記制御部１１３は、ブロック２０１における、各メモリセル群２０２の各書き込みステージの所定の順序に従って、必要に応じて前述の処理群を繰り返し実行する。
【００５８】
決定部１１４は、転記制御部１１３によって指定された転記先のページ（対象ページ）に転記するデータ（転記データ）を決定する。より詳細には、決定部１１４は、第１メモリ１４１から管理情報を読み込むように第１アクセス制御部１５１に読み込みを指示し、管理情報を取得する。決定部１１４は、取得した管理情報から、所定の方法に基づき、転記するデータの論理アドレス情報および物理的なアドレス情報を複数抽出する。決定部１１４が転記するデータを抽出する所定の方法はどのような方法であってもよい。
【００５９】
決定部１１４は、抽出した複数の論理アドレス情報および物理的なアドレス情報から、転記制御部１１３によって指定された転記先のページのサイズになる、論理アドレスのデータの個数分、論理アドレス情報および物理的なアドレス情報を抽出する。例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合は、抽出する論理アドレス情報および物理的なアドレス情報の個数は２になる。
【００６０】
なお、転記先として使用するブロック２０１と、ホスト装置から書き込み要求されたデータの書き込み先として書き込み制御部１１２が使用するブロック２０１とが同一のブロック２０１である場合、転記先のページのサイズになる論理アドレスのデータのうち一部に、ホスト装置から書き込み要求されたデータに対応する論理アドレスのデータが含まれていてもよい。
【００６１】
決定部１１４は、転記位置情報の、転記制御部１１３によって指定された転記先のページ（対象ページ）に対応する情報として、対象ページのサイズになる個数分の論理アドレス情報および物理的なアドレス情報を登録するように、第２アクセス制御部１５２に書き込みを指示する。
【００６２】
読み込み部１１６は、転記制御部１１３によって指定されたメモリセル群２０２のある書き込みステージにおいて必要な１個以上の転記データを読み込む。前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して複数の転記データが対応付けられる。このため、読み込み部１１６は、転記制御部１１３によって指定されたメモリセル群２０２のある書き込みステージの１個以上の対象ページに対応する、１個以上の物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示する。そして、読み込み部１１６は、当該対象ページに対応する情報である１個以上の物理的なアドレス情報を取得する。
【００６３】
以降、読み込み部１１６は、取得した１個以上の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【００６４】
読み込み部１１６は、記憶媒体１２１の取得した物理的なアドレス情報が示す位置に格納されているデータを読み込むように、媒体アクセス制御部１３１に読み込みを指示し、取得した物理的なアドレス情報が示す位置に格納されているデータを取得する。なお、論理アドレスのデータのサイズがページのサイズよりも小さい場合、記憶媒体１２１の入出力単位はページであるので、さらに、記憶媒体１２１から読み込んだページのデータから必要なデータを抽出する処理が実行される。
【００６５】
読み込み部１１６は、取得したデータを、第３メモリ１４３に一時記憶するように、第３アクセス制御部１５３に書き込みを指示する。
【００６６】
書き込み部１１７は、転記制御部１１３によって指定されたメモリセル群２０２の各書き込みステージの書き込み処理を実行する。より詳細には、書き込み部１１７は、現在処理している書き込みステージにおいて必要な１個以上の転記元アドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示し、１個以上の転記元アドレス情報を取得する。
【００６７】
書き込み部１１７は、取得した１個以上の転記元アドレス情報で特定される１個以上のデータを、第３メモリ１４３から読み込むように、第３アクセス制御部１５３に読み込みを指示し、１個以上のデータを取得する。
【００６８】
書き込み部１１７は、取得した１個以上のデータを、現在処理している書き込みステージの対象ページに書き込むデータとして、当該書き込みステージの書き込み処理を実行するように、媒体アクセス制御部１３１に書き込みを指示する。
【００６９】
なお、前述の処理群では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【００７０】
更新部１１５は、転記制御部１１３に指定されたメモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。記憶媒体１２１の説明において前述したように、メモリセル群２０２には１個以上のページが対応付けられている。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して転記するデータが複数対応付けられる。
【００７１】
更新部１１５は、転記制御部１１３に指定されたメモリセル群２０２に対応する１個以上のページについて、当該ページに転記した１個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示し、１個以上の論理アドレス情報および物理的なアドレス情報を取得する。
【００７２】
また、更新部１１５は、取得したページに転記した１個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部１１５は、転記した１個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部１１５は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【００７３】
更新部１１５は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、転記先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。ここでは、記憶媒体１２１の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体１２１の物理的なアドレス情報は、転記制御部１１３に指定されたメモリセル群２０２のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
【００７４】
次に、第１の実施形態の記憶装置の動作について説明する。
【００７５】
まず、ホスト装置からの書き込み命令に応じて、記憶装置１００が行う書き込み処理の手順について、図９を参照して説明する。図９は、第１の実施形態の記憶装置１００で行われる書き込み処理の流れの一例を示すフローチャートである。
【００７６】
ホストインタフェース部１６０は、ホスト装置から書き込み命令を受け付ける（ステップＳ１１）。ホストインタフェース部１６０は、書き込み制御部１１２に書き込み命令を転送する。書き込み制御部１１２は、ホストインタフェース部１６０から書き込み命令を受信すると、受信した書き込み命令から記憶装置アドレス情報および書き込みデータを抽出する。
【００７７】
書き込み制御部１１２は、書き込み要求されたデータを記憶媒体１２１に書き込む（ステップＳ１２）。より詳細には、書き込み制御部１１２は、抽出した書き込みデータを、記憶媒体１２１の所定の物理的なアドレスに書き込むように、媒体アクセス制御部１３１に書き込みを指示する。媒体アクセス制御部１３１は、書き込みデータを、書き込み要求された記憶媒体１２１の所定の物理的なアドレスに書き込む。
【００７８】
なお、書き込みデータの書き込み先であって、所定の物理的なアドレス情報が示す記憶領域が含まれるブロック２０１、すなわち、ホスト装置からの書き込み先として使用するブロック２０１と、後述する転記先として使用するブロック２０１とは、同一のブロック２０１であっても異なるブロック２０１であってもよい。
【００７９】
書き込み制御部１１２は、管理情報を更新する（ステップＳ１３）。より詳細には、書き込み制御部１１２は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。書き込み制御部１１２は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、書き込み先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。第１アクセス制御部１５１は、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、書き込み先の記憶媒体１２１の物理的なアドレス情報に更新（書き込み処理）する。
【００８０】
次に、ホスト装置からの読み込み命令に応じて、記憶装置１００が行う読み込み処理の手順について、図１０を参照して説明する。図１０は、記憶装置１００で行われる読み込み処理の流れの一例を示すフローチャートである。
【００８１】
ホストインタフェース部１６０は、ホスト装置から読み込み命令を受け付ける（ステップＳ２１）。ホストインタフェース部１６０は、読み込み制御部１１１に読み込み命令を転送する。読み込み制御部１１１は、ホストインタフェース部１６０から読み込み命令を受信すると、受信した読み込み命令から記憶装置アドレス情報を抽出する。
【００８２】
読み込み制御部１１１は、読み込み要求されたデータを読み込む（ステップＳ２２）。より詳細には、読み込み制御部１１１は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。読み込み制御部１１１は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を読み込むように、第１アクセス制御部１５１に読み込みを指示する。第１アクセス制御部１５１は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を読み込み、読み込み制御部１１１に返却する。読み込み制御部１１１は、記憶媒体１２１の物理的なアドレス情報を取得する。
【００８３】
読み込み制御部１１１は、取得した記憶媒体１２１の物理的なアドレスに記録されているデータを読み込むように、媒体アクセス制御部１３１に読み込みを指示する。媒体アクセス制御部１３１は、取得した記憶媒体１２１の物理的なアドレスに記録されているデータを読み込み、読み込み制御部１１１に返却する。読み込み制御部１１１は、媒体アクセス制御部１３１からデータを取得する。
【００８４】
読み込み制御部１１１は、読み込んだデータを返却する（ステップＳ２３）。より詳細には、読み込み制御部１１１は、取得したデータを、ホストインタフェース部１６０に送信する。ホストインタフェース部１６０は、読み込み制御部１１１からデータを受信すると、受信したデータをホスト装置に転送する。
【００８５】
次に、記憶装置１００が行う転記処理の手順について、図１１を参照して説明する。図１１は、記憶装置１００で行われる転記処理の流れの一例を示すフローチャートである。なお、転記制御部１１３は、転記の必要性が生じると、図１１に示される転記処理を制御する。転記の必要性が生じたか否かは、例えば、従来の転記処理（コンパクション処理、ガーベージコレクション処理）と同様の方法で判断できる。
【００８６】
最初に、転記するデータが決定される（ステップＳ３１）。前述のように、あるメモリセル群２０２へのある書き込みステージの書き込み処理の対象ページは１個以上存在する。転記制御部１１３は、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に、あるページが初めて対象ページとなる書き込みステージになるまでの間に、当該対象ページに転記するデータの決定を決定部１１４に指示する。
【００８７】
決定部１１４は、転記制御部１１３によって指定された転記先のページに転記するデータを決定する。より詳細には、決定部１１４は、第１メモリ１４１から管理情報を読み込むように第１アクセス制御部１５１に読み込みを指示する。第１アクセス制御部１５１は、第１メモリ１４１から読み込みを指示された管理情報を読み込み、要求元に返却する。決定部１１４は、管理情報を取得する。決定部１１４は、取得した管理情報から、所定の方法に基づき、転記するデータの論理アドレス情報および物理的なアドレス情報を複数抽出する。転記するデータを抽出する所定の方法は問わない。
【００８８】
決定部１１４は、抽出した複数の論理アドレス情報および物理的なアドレス情報から、転記制御部１１３によって指定された転記先のページのサイズになる、論理アドレスのデータの個数分、論理アドレス情報および物理的なアドレス情報を抽出する。例えば、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズの２分の１の場合は、抽出する論理アドレス情報および物理的なアドレス情報の個数は２になる。
【００８９】
なお、転記先として使用するブロック２０１と、ホスト装置から書き込み要求されたデータの書き込み先として書き込み制御部１１２が使用するブロック２０１とが同一のブロック２０１である場合、転記先のページのサイズになる論理アドレスのデータのうち一部に、ホスト装置から書き込み要求されたデータに対応する論理アドレスのデータが含まれていてもよい。
【００９０】
決定部１１４は、転記位置情報の、転記制御部１１３によって指定された転記先のページ（対象ページ）に対応する情報として、対象ページのサイズになる個数分の論理アドレス情報および物理的なアドレス情報を登録するように、第２アクセス制御部１５２に書き込みを指示する。第２アクセス制御部１５２は、指示された情報を第２メモリ１４２が有する転記位置情報に登録（書き込み）する。
【００９１】
一例として、各書き込みステージでの対象ページが図５に示される場合で、各メモリセル群２０２の各書き込みステージの所定の順序が図６に示される場合について説明する。この場合、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージの対象ページは、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページである。そして、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページの両方が、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
【００９２】
また、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージの対象ページは、メモリセル群番号１のメモリセル群２０２の第１ページとメモリセル群番号２のメモリセル群２０２の第１ページである。このうちメモリセル群番号２のメモリセル群２０２の第１ページが、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
【００９３】
したがって、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージになるまでの間に、メモリセル群番号０のメモリセル群２０２の第１ページとメモリセル群番号１のメモリセル群２０２の第１ページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示する。また、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージになるまでの間に、メモリセル群番号２のメモリセル群２０２の第１ページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示する。
【００９４】
ここで、メモリセル群番号１のメモリセル群２０２の第１ページに転記すべきデータ（転記データ）は、書き込み順が２番目であるメモリセル群番号１のメモリセル群２０２の第１ステージで必要になる。この転記データは、書き込み順が１番目であるメモリセル群番号０のメモリセル群２０２の第１ステージになるまでの間に決定されていることになる。
【００９５】
なお、図５に示す例と異なり、例えば、あるメモリセル群２０２へのある書き込みステージ数の書き込み処理の対象ページに、書き込み対象のメモリセル群２０２とは異なるメモリセル群２０２に対応付けられているページが含まれず、かつ、あるメモリセル群２０２の２番目以降の書き込みステージにおいて書き込み対象になるページがすべて、当該メモリセル群２０２の１番目の書き込みステージで書き込み対象になるページに含まれる場合は、ある転記先のメモリセル群２０２の１番目の書き込みステージになるまでの間に、ある転記先のメモリセル群２０２に対応付けられているページに転記すべきデータを決定するように、転記制御部１１３は決定部１１４に指示することになる。
【００９６】
次に、転記するデータが読み込まれる（ステップＳ３２）。より詳細には、転記制御部１１３は、転記先のメモリセル群２０２のある書き込みステージに必要なデータ（転記データ）が決定されてから、当該転記先のメモリセル群２０２の当該書き込みステージになるまでの間に、読み込み部１１６に対して当該転記データの読み込みを指示する。なお、転記データの読み込み処理は、１個以上の対象ページのそれぞれのページについて、決定部１１４によって転記データが全て決定されてから読み込むようにしてもよいし、決定部１１４によって転記データの少なくとも一部が決定され次第、適宜読み込むようにしてもよい。
【００９７】
読み込み部１１６は、転記制御部１１３によって指定されたメモリセル群２０２のある書き込みステージにおいて必要な１個以上の転記データを読み込む。前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して複数の転記データが対応付けられる。このため、読み込み部１１６は、転記制御部１１３によって指定されたメモリセル群２０２のある書き込みステージの１個以上の対象ページに対応する、１個以上の物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示する。
【００９８】
第２アクセス制御部１５２は、転記位置情報を有する第２メモリ１４２から、指定された情報を読み込み、要求元に返却する。読み込み部１１６は、それぞれの対象ページに対応する１個以上の物理的なアドレス情報を取得する。以降、読み込み部１１６は、取得した１個以上の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【００９９】
読み込み部１１６は、記憶媒体１２１の取得した物理的なアドレス情報が示す位置に格納されているデータを読み込むように、媒体アクセス制御部１３１に読み込みを指示する。媒体アクセス制御部１３１は、記憶媒体１２１から読み込みを指示されたデータを読み込み、要求元に返却する。読み込み部１１６は、取得した物理的なアドレス情報が示す位置に格納されているデータを取得する。なお、論理アドレスのデータのサイズがページのサイズよりも小さい場合、記憶媒体１２１の入出力単位はページであるので、さらに、記憶媒体１２１から読み込んだページのデータから必要なデータを抽出する処理が実行される。
【０１００】
読み込み部１１６は、取得したデータを、第３メモリ１４３に一時記憶するように、第３アクセス制御部１５３に書き込みを指示する。第３アクセス制御部１５３は、指示されたデータを第３メモリ１４３に書き込む。
【０１０１】
なお、転記データを格納している第３メモリ１４３のバッファ領域がまだ解放されていない場合は、読み込み処理を省略して、当該バッファ領域に既に読み込まれている転記データを今後の処理で利用してもよい。
【０１０２】
次に、転記するデータが記憶媒体１２１に書き込まれる（ステップＳ３３）。より詳細には、転記制御部１１３は、転記先のあるメモリセル群２０２のある書き込みステージになったら、書き込み部１１７に、当該メモリセル群２０２への当該書き込みステージの実行を書き込み部１１７に対して指示する。
【０１０３】
書き込み部１１７は、転記制御部１１３によって指定されたメモリセル群２０２の各書き込みステージの書き込み処理を実行する。より詳細には、書き込み部１１７は、現在処理している書き込みステージにおいて必要な１個以上の転記元アドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示する。第２アクセス制御部１５２は、転記位置情報を有する第２メモリ１４２から、読み込みを指示された情報を読み込み、要求元に返却する。書き込み部１１７は、１個以上の転記元アドレス情報を取得する。
【０１０４】
書き込み部１１７は、取得した１個以上の転記元アドレス情報で特定される１個以上のデータを、第３メモリ１４３から読み込むように、第３アクセス制御部１５３に読み込みを指示する。第３アクセス制御部１５３は、読み込みが指示されたデータを第３メモリ１４３から読み込み、要求元に返却する。書き込み部１１７は、１個以上のデータを取得する。
【０１０５】
書き込み部１１７は、取得した１個以上のデータを、現在処理している書き込みステージの対象ページに書き込むデータとして、当該書き込みステージの書き込み処理を実行するように、媒体アクセス制御部１３１に書き込みを指示する。
【０１０６】
媒体アクセス制御部１３１は、現在処理している書き込みステージの対象ページに書き込むデータとして、書き込みを指示されたデータを用いて、現在処理している書き込みステージの書き込み処理を実行する。
【０１０７】
なお、前述の処理群では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【０１０８】
転記制御部１１３は、転記先のブロック２０１における、各メモリセル群２０２の各書き込みステージを所定の順序で実行する場合に、転記先のあるメモリセル群２０２のある書き込みステージの書き込み処理の完了以降に、第３メモリ１４３内の転記データが格納されているバッファ領域を解放する。なお、当該バッファ領域は書き込みステージの完了後に直ちに解放してもよい。この場合、第３メモリ１４３のメモリ使用量を削減できる。また、当該バッファ領域の解放を遅延させてもよい。当該バッファ領域に格納されているデータが以降の書き込みステージでも必要になる場合、当該バッファ領域を、当該書き込みステージまで解放させないことで、読み込み処理のコストを削減できる。
【０１０９】
次に、管理情報が更新される（ステップＳ３４）。より詳細には、転記制御部１１３は、転記先のメモリセル群２０２に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部１１５に対して、当該メモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページの管理情報の更新が指示される。
【０１１０】
なお、管理情報の更新には、後述するように、転記位置情報が必要となる。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部１１３は更新部１１５に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック２０１とする場合、転記制御部１１３が、転記先のブロック２０１への書き込みがすべて完了したタイミングで、当該ブロック２０１に関する管理情報の更新処理を指示してもよい。また、更新部１１５は、管理情報の更新処理のみを連続して実行してもよい。更新部１１５が、記憶媒体１２１へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
【０１１１】
更新部１１５は、転記制御部１１３に指定されたメモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。記憶媒体１２１の説明において前述したように、メモリセル群２０２には１個以上のページが対応付けられている。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して転記するデータが複数対応付けられる。
【０１１２】
更新部１１５は、転記制御部１１３に指定されたメモリセル群２０２に対応する１個以上のページについて、当該ページに転記した１個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示する。
【０１１３】
第２アクセス制御部１５２は、転記位置情報を有する第２メモリ１４２から読み込みを指示された情報を読み込み、要求元に返却する。更新部１１５は、１個以上の論理アドレス情報および物理的なアドレス情報を取得する。また、更新部１１５は、取得したページに転記した１個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部１１５は、転記した１個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部１１５は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【０１１４】
更新部１１５は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、転記先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。第１アクセス制御部１５１は、第１メモリ１４１が有するアドレス正引きテーブルに登録されている情報を、指示された情報に更新（書き込み）する。
【０１１５】
ここでは、記憶媒体１２１の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体１２１の物理的なアドレス情報は、転記制御部１１３に指定されたメモリセル群２０２のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
【０１１６】
この後、必要に応じてステップＳ３１〜ステップＳ３４までの処理が繰り返される（ステップＳ３５）。より詳細には、転記制御部１１３は、ブロック２０１における、各メモリセル群２０２の各書き込みステージの所定の順序に従って、必要に応じて、ステップＳ３１〜ステップＳ３４の処理群を繰り返し実行する。処理を繰り返す必要がなくなったら処理を終了する。
【０１１７】
このように、第１の実施形態にかかる記憶装置では、複数の書き込みステージおよびメモリセル群の書き込み順番等が規定されている場合であっても、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して転記処理を実行することができる。
【０１１８】
ところで、半導体記憶媒体の微細化に伴い、あるメモリセル群へのデータの書き込みによって、隣接するメモリセル群に記録されているデータに影響が出るようになってきている。下記参考文献に示されるようなＮＡＮＤフラッシュメモリでは、以下に説明するような書き込みシーケンスを採用することで、この影響を打ち消している。
（参考文献）"A  5.6MB/s  64Gb  4b/Cell  NAND  Flash  memory  in  43nm  CMOS",  Solid-State  Circuits  Conference  -  Digest  of  Technical  Papers,  2009.  ISSCC  2009.  IEEE  International,  8-12  Feb.  2009,  pp.246  -  247,  247a.
【０１１９】
すなわち、このようなＮＡＮＤフラッシュメモリでは、各書き込みステージで必要になるページの対応付けは、例えば、図１２に示されるようになっている。図１２は、各書き込みステージで書き込みの対象となるページ（対象ページ）の他の例を示す図である。例えば、図１２に示されるように、あるメモリセル群２０２の全ての書き込みステージでは同じページが必要であり、また、書き込み対象のメモリセル群２０２とは異なるメモリセル群２０２に対応付けられているページは含まれていない。
【０１２０】
また、このようなＮＡＮＤフラッシュメモリでは、各メモリセル群２０２の各書き込みステージを実行する順序は、例えば、図１３に示されるようになっている。図１３は、書き込み順序の他の例を示す図である。図１３では、例えば、メモリセル群番号０のメモリセル群２０２の第１ステージの書き込み処理を実行した後は、順に、メモリセル群番号１のメモリセル群２０２の第１ステージ、メモリセル群番号０のメモリセル群２０２の第２ステージの書き込み処理を実行しなければならないことが示されている。このような順序にすることで、あるメモリセル群へのデータの書き込みによって、隣接するメモリセル群に記録されているデータに生ずる影響を打ち消している。
【０１２１】
このような書き込みシーケンスを有するＮＡＮＤフラッシュメモリを記憶媒体１２１として使用する場合、本実施形態では、第３メモリ１４３に、４ページ分×３＝１２ページ分以上の容量を確保し、読み込んだデータが必要な間は読み込んだデータが格納されているバッファ領域を解放しないように構成してもよい。これにより、同一データを複数回読み込むことなく転記処理が実現できる。しかし、半導体記憶媒体の微細化および大容量化に伴い、ページの容量が増大してきており、転記処理で使用するメモリ容量を削減する必要がある。
【０１２２】
一方、本実施形態では、各書き込みステージの書き込み処理が完了した直後に、各書き込みステージで必要なデータが格納されているバッファ領域を解放し、各書き込みステージになった時に、当該メモリセル群の当該書き込みステージで必要なデータを記憶媒体１２１から読み込むように構成することもできる。これにより、第３メモリ１４３の容量を４ページ分の容量に抑えることが可能になり、転記処理で使用するメモリ容量を削減できる。
【０１２３】
また、例示した書き込みシーケンスと同様の書き込みシーケンスを有する３ビット／セルのＮＡＮＤフラッシュメモリを記憶媒体１２１として使用する場合でも同様のことが言える。図１４は、この場合の各書き込みステージで書き込みの対象となるページ（対象ページ）の例を示す図である。
【０１２４】
例えば、各書き込みステージで必要になるページの対応付けが、図１４に示されるようなものであるとする。また、各メモリセル群２０２の各書き込みステージを実行する順序は、例えば、図１３に示されるようなものであるとする。このような書き込みシーケンスを有するＮＡＮＤフラッシュメモリを記憶媒体１２１として使用する場合、本実施形態では、第３メモリ１４３に、３ページ分×３＝９ページ分以上の容量を確保し、読み込んだデータが必要な間は読み込んだデータが格納されているバッファ領域を解放しないように構成してもよい。これにより、同一データを複数回読み込むことなく転記処理が実現できる。一方、本実施形態では、各書き込みステージの書き込み処理が完了した直後に、各書き込みステージで必要なデータが格納されているバッファ領域を解放し、各書き込みステージになった時に、当該メモリセル群の当該書き込みステージで必要なデータを記憶媒体１２１から読み込むように構成することもできる。これにより、第３メモリ１４３の容量を３ページ分の容量に抑えることが可能になり、転記処理で使用するメモリ容量を削減できる。
【０１２５】
（第２の実施形態）
ところで、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なる可能性があり、管理情報の整合性を担保する必要がある。そこで、第２の実施形態では、転記処理における管理情報の更新処理において、管理情報の整合性を担保する例について説明する。
【０１２６】
まず、第２の実施形態の記憶装置の構成について説明する。なお、第１の実施形態と同様の機能を有する構成要素については、第１の実施形態と同様の名称および符号を付し、その説明を省略する。
【０１２７】
図１５は、第２の実施形態の記憶装置１００−２の機能構成の概要の一例を示すブロック図である。図１５に示すように、記憶装置１００−２は、コントローラ１１０−２と、第１アクセス制御部１５１と、第１メモリ１４１と、第２アクセス制御部１５２と、第２メモリ１４２と、第３アクセス制御部１５３と、第３メモリ１４３と、媒体アクセス制御部１３１と、記憶媒体１２１と、ホストインタフェース部１６０と、を有する。コントローラ１１０−２は、転記制御部１１３−２と、決定部１１４と、読み込み部１１６と、書き込み部１１７と、更新部１１５−２と、書き込み制御部１１２と、読み込み制御部１１１と、を有する。
【０１２８】
転記制御部１１３−２は、連携先の複数の構成要素のうち、更新部１１５が更新部１１５−２に置き換わる点が第１の実施形態の転記制御部１１３と異なるのみであるので、詳細な説明は省略する。
【０１２９】
更新部１１５−２は、メモリセル群に含まれる第１メモリセル群に対応付けられたページに書き込む前のデータのメモリセル群内に対応付けられたページでの書き込み位置を表す物理アドレスと、データの論理アドレスに対応する管理情報の物理アドレスと、が一致する場合に、データの論理アドレスに対応する管理情報の物理アドレスを、第１メモリセル群内に対応付けられたページでのデータを書き込んだ位置を表す物理アドレスに更新する。以降、詳細な一例を説明する。
【０１３０】
更新部１１５−２は、第１の実施形態の更新部１１５が実行する処理の一部の処理と同様な以下の処理を実行する。
【０１３１】
更新部１１５−２は、転記制御部１１３−２に指定されたメモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。
【０１３２】
記憶媒体１２１の説明において前述したように、メモリセル群２０２には１個以上のページが対応付けられている。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して転記するデータが複数対応付けられる。
【０１３３】
更新部１１５−２は、転記制御部１１３−２に指定されたメモリセル群２０２に対応する１個以上のページについて、当該ページに転記した１個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示し、１個以上の論理アドレス情報および物理的なアドレス情報を取得する。
【０１３４】
また、更新部１１５−２は、取得したページに転記した１個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部１１５−２は、転記した１個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部１１５−２は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【０１３５】
また、更新部１１５−２は、アドレス正引きテーブルにおける、取得した論理アドレス情報が対応する記憶媒体１２１の物理的なアドレス情報（以降、更新前の物理的なアドレス情報と呼ぶ）を読み込むように、第１アクセス制御部１５１に指示し、アドレス正引きテーブルにおける、更新前の物理的なアドレス情報を取得する。更新部１１５−２は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する。
【０１３６】
比較結果が一致していなかった場合は、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっており、かつ、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点で終了していることを示している。したがって、更新部１１５−２は、比較結果が一致していなかった場合は更新部１１５−２の処理を終える。
【０１３７】
一方、比較結果が一致していた場合は、仮に、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっていた場合であっても、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点では開始されていないことを示している。したがって、更新部１１５−２は、更新部１１５が実行する処理の一部の処理と同様な以下の処理を実行する。
【０１３８】
更新部１１５−２は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、転記先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。ここでは、記憶媒体１２１の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体１２１の物理的なアドレス情報は、転記制御部１１３−２に指定されたメモリセル群２０２のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
【０１３９】
以上のように、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較し、一致していたらアドレス正引きテーブルの情報を更新し、一致していなかったらアドレス正引きテーブルの情報を更新しない。これにより、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なる場合において、管理情報の整合性を担保することができる。
【０１４０】
次に、第２の実施形態の記憶装置の動作について説明する。図１６は、第２の実施形態の記憶装置１００−２で行われる転記処理の流れの一例を示すフローチャートである。
【０１４１】
転記制御部１１３−２は、転記の必要性が生じると、図１６に示される転記処理を制御する。
【０１４２】
ステップＳ４１からステップＳ４３までは、第１の実施形態にかかる記憶装置１００におけるステップＳ３１からステップＳ３３（図１１）までと同様の処理なので、その説明を省略する。
【０１４３】
更新部１１５−２は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する（ステップＳ４４）。より詳細には、転記制御部１１３−２は、転記先のメモリセル群２０２に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部１１５−２に、当該メモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページの管理情報の更新が指示される。
【０１４４】
なお、管理情報の更新には、転記位置情報が必要である。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部１１３−２は更新部１１５−２に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック２０１とする場合、転記制御部１１３−２が、転記先のブロック２０１への書き込みがすべて完了したタイミングで、当該ブロック２０１に関する管理情報の更新処理を指示してもよい。また、更新部１１５−２は、管理情報の更新処理のみを連続して実行してもよい。更新部１１５−２が、記憶媒体１２１へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
【０１４５】
更新部１１５−２は、転記制御部１１３−２に指定されたメモリセル群２０２に対応する１個以上のページに関する管理情報の更新を指示する。記憶媒体１２１の説明において前述したように、メモリセル群２０２には１個以上のページが対応付けられている。例えば、図４に示されるメモリセル群番号０のメモリセル群２０２の場合は、メモリセル群番号０のメモリセル群２０２に対応する第１ページ、第２ページ、第３ページ、第４ページである、ページ番号０、ページ番号１、ページ番号２、ページ番号３の４個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体１２１のページのサイズよりも小さい場合は、１個のページに対して転記するデータが複数対応付けられる。
【０１４６】
更新部１１５−２は、転記制御部１１３−２に指定されたメモリセル群２０２に対応する１個以上のページについて、当該ページに転記した１個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第２アクセス制御部１５２に読み込みを指示する。第２アクセス制御部１５２は、転記位置情報を有する第２メモリ１４２から読み込みを指示された情報を読み込み、要求元に返却する。更新部１１５−２は、１個以上の論理アドレス情報および物理的なアドレス情報を取得する。
【０１４７】
また、更新部１１５−２は、取得したページに転記した１個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部１１５−２は、転記した１個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報とを得る。以降、更新部１１５−２は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
【０１４８】
また、更新部１１５−２は、アドレス正引きテーブルにおける、取得した論理アドレス情報が対応する記憶媒体１２１の物理的なアドレス情報（以降、更新前の物理的なアドレス情報と呼ぶ）を読み込むように、第１アクセス制御部１５１に指示し、アドレス正引きテーブルにおける、更新前の物理的なアドレス情報を取得する。更新部１１５−２は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する。
【０１４９】
更新部１１５−２は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報とが一致しているか否かを判断する（ステップＳ４５）。一致しない場合（ステップＳ４５：Ｎｏ）、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっており、かつ、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点で終了していることを示している。したがって、ステップＳ４７に進む。
【０１５０】
一方、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報とが一致する場合（ステップＳ４５：Ｙｅｓ）、仮に、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっていた場合であっても、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点では開始されていないことを示している。したがって、ステップＳ４６に進む。
【０１５１】
ステップＳ４６では、更新部１１５−２が管理情報を更新する（ステップＳ４６）。より詳細には、更新部１１５−２は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体１２１の物理的なアドレス情報を、転記先の記憶媒体１２１の物理的なアドレス情報に更新するように、第１アクセス制御部１５１に書き込みを指示する。第１アクセス制御部１５１は、第１メモリ１４１が有するアドレス正引きテーブルに登録されている情報を、指示された情報に更新（書き込み）する。
【０１５２】
ここでは、記憶媒体１２１の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットと、が含まれる構成で説明している。このため、転記先の記憶媒体１２１の物理的なアドレス情報は、転記制御部１１３−２に指定されたメモリセル群２０２のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
【０１５３】
ステップＳ４７では、必要に応じて処理が繰り返される。より詳細には、転記制御部１１３−２は、ブロック２０１における、各メモリセル群２０２の各書き込みステージの所定の順序に従って、必要に応じて、ステップＳ４１〜ステップＳ４６の処理群を繰り返し実行する。処理を繰り返す必要がなくなったら処理を終了する。
【０１５４】
以上説明したとおり、第１から第２の実施形態によれば、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して読み書き処理を実行する転記処理が実現できる。
【０１５５】
第１または第２の実施形態にかかる記憶装置で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。
【０１５６】
第１または第２の実施形態にかかる記憶装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１５７】
さらに、第１または第２の実施形態にかかる記憶装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１または第２の実施形態にかかる記憶装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１５８】
第１または第２の実施形態にかかる記憶装置で実行されるプログラムは、コンピュータを前述した記憶装置の各部（読み込み制御部、書き込み制御部、転記制御部、決定部、更新部、読み込み部、書き込み部）として機能させうる。このコンピュータは、ＣＰＵがコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１５９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６０】
１００、１００−２  記憶装置
１１０、１１０−２  コントローラ
１１１  読み込み制御部
１１２  書き込み制御部
１１３、１１３−２  転記制御部
１１４  決定部
１１５、１１５−２  更新部
１１６  読み込み部
１１７  書き込み部
１２１  記憶媒体
１３１  媒体アクセス制御部
１４１  第１メモリ
１４２  第２メモリ
１４３  第３メモリ
１５１  第１アクセス制御部
１５２  第２アクセス制御部
１５３  第３アクセス制御部
１６０  ホストインタフェース部
【図１】
0005674634.tif 000002
【図２】
0005674634.tif 000003
【図３】
0005674634.tif 000004
【図４】
0005674634.tif 000005
【図５】
0005674634.tif 000006
【図６】
0005674634.tif 000007
【図７】
0005674634.tif 000008
【図８】
0005674634.tif 000009
【図９】
0005674634.tif 000010
【図１０】
0005674634.tif 000011
【図１１】
0005674634.tif 000012
【図１２】
0005674634.tif 000013
【図１３】
0005674634.tif 000014
【図１４】
0005674634.tif 000015
【図１５】
0005674634.tif 000016
【図１６】
0005674634.tif 000017