【手続補正書】
【提出日】平成22年2月12日(2010.2.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
揮発性半導体メモリに含まれるキャッシュメモリとしての第１の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第２の記憶部との間でバッフアリングを行う第１の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第３の記憶部との間でバッフアリングを行う第２の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部と、前記第１及び第２の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第１の記憶部に書き込む第１の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第１の入力バッファに追い出す第２の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第２の入力バッファに追い出す第３の処理と、
前記第１の入力バッファに割り当てられており、かつ、前記第１の管理単位のデータが記憶された論理ブロックを前記第２の記憶部に移動する第４の処理と、
前記第２の入力バッファに割り当てられており、かつ、前記第２の管理単位のデータが記憶された論理ブロックを前記第３の記憶部に移動する第５の処理と、
前記第２の記憶部に記憶された複数のデータを前記第２の管理単位のデータとして前記第２の入力バッファに追い出す第６の処理と、
を実行することを特徴とするメモリシステム。
【請求項２】
前記コントローラは、フラッシュ要求を受信した場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理終了を通知することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、前記第４乃至第６の処理を継続中であっても、前記第２及び第３の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第１の記憶部からのデータ追い出しが必要な場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した後、前記第１の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第１の記憶部に書き込まれた段階で、前記書き込み要求の処理終了を通知することを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記コントローラは、前記第４乃至第６の処理を継続中であっても、前記第１乃至第３の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記コントローラは、前記第２の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第６の処理を実行することを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記コントローラは、前記第１の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第２の記憶部のデータを無効化することを特徴とする請求項１に記載のメモリシステム。
【請求項８】
前記コントローラは、前記第２の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第２及び第３の記憶部のデータを無効化することを特徴とする請求項１に記載のメモリシステム。
【請求項９】
前記コントローラは、前記第１の記憶部内のデータが所属する前記第２の管理単位のデータの個数が規定値を越えた場合に、前記第２及び第３の処理のうちの少なくとも１つを実行することを特徴とする請求項１に記載のメモリシステム。
【請求項１０】
前記揮発性半導体メモリはＤＲＡＭであり、前記不揮発性半導体メモリはＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１に記載のメモリシステム。
【請求項１１】
揮発性半導体メモリに含まれるキャッシュメモリとしての第１の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第２の記憶部に対して更新頻度の高いデータを分離保持するように構成される第１の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第１の前段バッファとの間でバッフアリングを行う第１の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第３の記憶部との間でバッフアリングを行う第２の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部と、前記第１の前段バッファと、前記第１及び第２の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第１の記憶部に書き込む第１の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第１の入力バッファに追い出す第２の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第２の入力バッファに追い出す第３の処理と、
前記第１の入力バッファに割り当てられており、かつ、前記第１の管理単位のデータが記憶された論理ブロックを前記第１の前段バッファに移動する第４の処理と、
前記第２の入力バッファに割り当てられており、かつ、前記第２の管理単位のデータが記憶された論理ブロックを前記第３の記憶部に移動する第５の処理と、
前記第２の記憶部に記憶された複数のデータを前記第２の管理単位のデータとして前記第２の入力バッファに追い出す第６の処理と、
前記第２の記憶部に記憶された前記第１の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第７の処理と、
前記第１の前段バッファに割り当てられた論理ブロックを前記第２の記憶部に移動する第８の処理と、
を実行することを特徴とするメモリシステム。
【請求項１２】
前記コントローラは、フラッシュ要求を受信した場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理終了を通知することを特徴とする請求項１１に記載のメモリシステム。
【請求項１３】
前記コントローラは、前記第４乃至第８の処理を継続中であっても、前記第２及び第３の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項１２に記載のメモリシステム。
【請求項１４】
前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第１の記憶部からのデータ追い出しが必要な場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した後、前記第１の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第１の記憶部に書き込まれた段階で、前記書き込み要求の処理終了を通知することを特徴とする請求項１１に記載のメモリシステム。
【請求項１５】
前記コントローラは、前記第４乃至第８の処理を継続中であっても、前記第１乃至第３の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項１４に記載のメモリシステム。
【請求項１６】
前記コントローラは、前記第２の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第６及び第７の処理の少なくとも一方を実行することを特徴とする請求項１１に記載のメモリシステム。
【請求項１７】
前記コントローラは、前記第７の処理の際に、有効データで満たされた新たな論理ブロックを前記第２の記憶部に割り当てることを特徴とする請求項１１に記載のメモリシステム。
【請求項１８】
前記コントローラは、前記第１の前段バッファを前記論理ブロック単位のＦＩＦＯ構造として管理することを特徴とする請求項１１に記載のメモリシステム。
【請求項１９】
前記コントローラは、前記第１の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第１の前段バッファ及び前記第２の記憶部のデータを無効化することを特徴とする請求項１８に記載のメモリシステム。
【請求項２０】
前記コントローラは、前記第２の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第１の前段バッファ、前記第２及び第３の記憶部のデータを無効化することを特徴とする請求項１８に記載のメモリシステム。
【請求項２１】
前記コントローラは、前記第１の前段バッファに登録された順序が最も古い論理ブロック内のデータを前記第２の管理単位のデータとして前記第２の入力バッファに追い出す第９の処理を実行することを特徴とする請求項１８に記載のメモリシステム。
【請求項２２】
前記コントローラは、前記第１の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第９の処理を実行することを特徴とする請求項２１に記載のメモリシステム。
【請求項２３】
前記コントローラは、前記第９の処理の後、前記第１の前段バッファに登録された順序が最も古く有効データが残った論理ブロックについて、前記第８の処理を実行することを特徴とする請求項２１に記載のメモリシステム。
【請求項２４】
前記コントローラは、前記第１の記憶部内のデータが所属する前記第２の管理単位のデータの個数が規定値を越えた場合に、前記第２及び第３の処理のうちの少なくとも１つを実行することを特徴とする請求項１１に記載のメモリシステム。
【請求項２５】
前記第１の管理単位の大きさは、前記ブロック単位よりも小さいことを特徴とする請求項１１に記載のメモリシステム。
【請求項２６】
前記揮発性半導体メモリはＤＲＡＭであり、前記不揮発性半導体メモリはＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１１に記載のメモリシステム。
【請求項２７】
揮発性半導体メモリに含まれるキャッシュメモリとしての第１の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第２の記憶部に対して更新頻度の高いデータを分離保持するように構成される第１の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第３の記憶部に対して更新頻度の高いデータを分離保持するように構成される第２の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第１の前段バッファとの間でバッフアリングを行う第１の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第１の記憶部と前記第２の前段バッファとの間でバッフアリングを行う第２の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部と、前記第１及び第２の前段バッファと、前記第１及び第２の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第１の記憶部に書き込む第１の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第１の入力バッファに追い出す第２の処理と、
前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第２の入力バッファに追い出す第３の処理と、
前記第１の入力バッファに割り当てられており、かつ、前記第１の管理単位のデータが記憶された論理ブロックを前記第１の前段バッファに移動する第４の処理と、
前記第２の入力バッファに割り当てられており、かつ、前記第２の管理単位のデータが記憶された論理ブロックを前記第２の前段バッファに移動する第５の処理と、
前記第２の記憶部に記憶された複数のデータを前記第２の管理単位のデータとして前記第２の入力バッファに追い出す第６の処理と、
前記第２の記憶部に記憶された前記第１の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第７の処理と、
前記第１の前段バッファに割り当てられた論理ブロックを前記第２の記憶部に移動する第８の処理と、
前記第３の記憶部に記憶された前記第２の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第９の処理と、
前記第２の前段バッファに割り当てられた論理ブロックを前記第３の記憶部に移動する第１０の処理と、
を実行することを特徴とするメモリシステム。
【請求項２８】
前記コントローラは、フラッシュ要求を受信した場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理終了を通知することを特徴とする請求項２７に記載のメモリシステム。
【請求項２９】
前記コントローラは、前記第４乃至第１０の処理を継続中であっても、前記第２及び第３の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項２８に記載のメモリシステム。
【請求項３０】
前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第１の記憶部からのデータ追い出しが必要な場合に、前記第２及び第３の処理の少なくとも一方を実行することによって前記第１の記憶部に書き込まれていたデータを前記第１及び第２の入力バッファの少なくとも一方に追い出した後、前記第１の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第１の記憶部に書き込まれた段階で、前記書き込み要求の処理終了を通知することを特徴とする請求項２７に記載のメモリシステム。
【請求項３１】
前記コントローラは、前記第４乃至第１０の処理を継続中であっても、前記第１乃至第３の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項３０に記載のメモリシステム。
【請求項３２】
前記コントローラは、前記第２の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第６及び第７の処理の少なくとも一方を実行することを特徴とする請求項２７に記載のメモリシステム。
【請求項３３】
前記コントローラは、前記第７の処理の際に、有効データで満たされた新たな論理ブロックを前記第２の記憶部に割り当てることを特徴とする請求項２７に記載のメモリシステム。
【請求項３４】
前記コントローラは、前記第３の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第９の処理を実行することを特徴とする請求項２７に記載のメモリシステム。
【請求項３５】
前記コントローラは、前記第９の処理の際に、有効データで満たされた新たな論理ブロックを前記第２の前段バッファに割り当てることを特徴とする請求項２７に記載のメモリシステム。
【請求項３６】
前記コントローラは、前記第１の前段バッファを前記論理ブロック単位のＦＩＦＯ構造として管理することを特徴とする請求項２７に記載のメモリシステム。
【請求項３７】
前記コントローラは、前記第２の前段バッファを前記論理ブロック単位のＦＩＦＯ構造として管理することを特徴とする請求項３６に記載のメモリシステム。
【請求項３８】
前記コントローラは、前記第１の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第１の前段バッファ及び前記第２の記憶部内のデータを無効化することを特徴とする請求項３６に記載のメモリシステム。
【請求項３９】
前記コントローラは、前記第２の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第１及び第２の前段バッファ、前記第２及び第３の記憶部内のデータを無効化することを特徴とする請求項３７に記載のメモリシステム。
【請求項４０】
前記コントローラは、前記第１の前段バッファに登録された順序が最も古い論理ブロック内のデータを前記第２の管理単位のデータとして前記第２の入力バッファに追い出す第１１の処理を実行することを特徴とする請求項３６に記載のメモリシステム。
【請求項４１】
前記コントローラは、前記第１の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第１１の処理を実行することを特徴とする請求項４０に記載のメモリシステム。
【請求項４２】
前記コントローラは、前記第１１の処理の後、前記第１の前段バッファに登録された順序が最も古く有効データが残った論理ブロックについて、前記第８の処理を実行することを特徴とする請求項４１に記載のメモリシステム。
【請求項４３】
前記コントローラは、前記第２の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第１０の処理を実行することを特徴とする請求項３７に記載のメモリシステム。
【請求項４４】
前記コントローラは、前記第２の前段バッファに登録された順序が最も古い論理ブロックについて、前記第１０の処理を実行することを特徴とする請求項４３に記載のメモリシステム。
【請求項４５】
前記コントローラは、前記第１の記憶部内のデータが所属する前記第２の管理単位のデータの個数が規定値を越えた場合に、前記第２及び第３の処理のうちの少なくとも１つを実行することを特徴とする請求項２７に記載のメモリシステム。
【請求項４６】
前記第２の管理単位の大きさは、前記ブロック単位よりも小さいことを特徴とする請求項２７に記載のメモリシステム。
【請求項４７】
前記揮発性半導体メモリはＤＲＡＭであり、前記不揮発性半導体メモリはＮＡＮＤ型フラッシュメモリであることを特徴とする請求項２７に記載のメモリシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
なお、ＭＳ構造管理テーブル６０（図２８）において、ＭＳ１１，ＭＳＩＢ１１ａ、ＴＦＳ１１ｂを含めたＭＳ領域の構造を管理しており、具体的には、ＭＳ１１、ＭＳＩＢ１１ａ、ＴＦＳ１１ｂに割り当てた論理ブロックなどを管理している。また、ＦＳ/ＩＳ構造管理テーブル６５（図２９）において、ＦＳ１２、ＦＳＩＢ１２ａ、ＩＳ１３を含めたＦＳ/ＩＳ領域の構造を管理しており、具体的には、ＦＳ１２、ＦＳＩＢ１２ａ、ＩＳ１３に割り当てた論理ブロックなどを管理している。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
以下に、ＭＳＩＢ１１ａにフルに成ったブロックが存在する場合を発生条件とした、ＭＳＩＢ１１ａからＭＳ１１またはＴＦＳ１１ｂへの追い出しとコンパクション処理の一例について具体的に説明する。
１．ＭＳ論理ブロック管理テーブル３５のValidフラグ３５ｅを参照することにより、ＭＳ１１内に無効となった論理ブロックが存在する場合、そのブロックを無効なフリーブロックＦＢとする。
２．ＭＳＩＢ１１ａでフルに成った論理ブロックをＭＳ１１に追い出す。具体的には、前述したＭＳ構造管理テーブル６０を更新して、該当論理ブロックをＭＳＩＢ管理下からＭＳ管理下に移し変える。
３．ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ１１として許容されるブロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、以下のＭＳコンパクションを実行する。
４．ＭＳ論理ブロック管理テーブル３５の有効トラック数３５ｃのフィールドなどを参照することにより、ＴＦＳ１１ｂに含まれない論理ブロックのうち無効にされたトラックを持つものを、有効トラック数でソートする。
５．有効トラック数の少ない論理ブロックから、トラックを集めてコンパクションを実施する。この際にまず、１論理ブロック分（２ｉトラック）ずつＣｏｐｙしてコンパクションを実施する。なお、コンパクション対象のトラックがＷＣ２１、ＦＳ１２、ＩＳ１３に有効クラスタを持つ場合にはそれらもマージする。
６．コンパクション元の論理ブロックを無効なフリーブロックＦＢとする。
７．コンパクションして有効な２ｉトラックで構成された１論理ブロックができたら、ＴＦＳ１１ｂの先頭にＭｏｖｅする。
８．論理ブロック内の有効トラックを他の論理ブロックにＣｏｐｙして、無効なフリーブロックＦＢが作れる場合は、２ｉトラック未満の個数の有効トラックをＭＳＩＢ１１ａに対し、トラック単位で追記書き込みする。
９．コンパクション元の論理ブロックを無効なフリーブロックＦＢとする。
１０．ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ１１として許容されるブロック数の上限値を下回ると、ＭＳコンパクション処理を終了する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１８
【補正方法】変更
【補正の内容】
【０１１８】
ＦＳＩＢ１２ａからＦＳ１２に対する追い出しおよびＦＳ１２からのブロック追い出しは、具体的には、次のように実現される。
１．ＦＳ／ＩＳ論理ブロック管理テーブル４２のValidフラグ３５ｅなどを参照することにより、ＦＳ１２内に無効となった論理ブロックが存在する場合、そのブロックを無効なフリーブロックＦＢとする。
２．ＦＳＩＢ１２ａでフルに成ったブロックをＦＳ１２に追い出す。具体的には、前述したＦＳ／ＩＳ構造管理テーブル６５を更新して、該当ブロックをＦＳＩＢ管理下からＦＳ管理下に移し変える。
３．ＦＳ１２に割り当てられている論理ブロックの個数がＦＳ１２として許容されるブロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、以下の追い出しを実行する。
４．まず追い出し対象の最古の論理ブロック中のクラスタデータのうちＩＳ１３に移動せずに、直接ＭＳ１１に移動すべきものを決定する（実際には、ＭＳの管理単位がトラックであるので、トラック単位での決定）。
（ア）追い出し対象の論理ブロック中の有効クラスタをページの先頭から順にスキャンする
（イ）クラスタが属するトラックがＦＳ中に何個の有効クラスタを保有しているか、トラック管理テーブル３０のＦＳクラスタ数３０ｆのフィールドを参照して検索する。
（ウ）トラック内有効クラスタ数が所定の閾値（例えば２ｋ−ｉ個の５０％）以上だった場合、そのトラックをＭＳへの追い出し候補とする。
５．ＭＳ１１に追い出すべきトラックをＭＳＩＢ１１ａに対して書き込む。
６．追い出しトラックが残っている場合、さらにＭＳＩＢ１１への追い出しを実行する。
７．上記２〜４の処理の後も追い出し対象の論理ブロックに有効なクラスタが存在している場合、この論理ブロックをＩＳ１３にＭｏｖｅする。
なお、ＦＳ１２からＭＳＩＢ１１ａへの追い出しが発生したときには、その直後、ＭＳ１１での前述したＣＩＢ処理が実行される（ステップＳ３５０）。