(57)【要約】データストレージデバイスは、それぞれが所定の物理位置に記憶される、物理ページを記憶する複数の不揮発性メモリデバイスを備える。コントローラは、メモリデバイスと接続されてもよく、かつ複数の論理ページ（Ｌ−ページ）に記憶されるように構成され、それぞれは、コントローラが、物理ページに記憶されたデータを論理参照可能にするＬ−ページ番号と関連付けられる。揮発性メモリは、コントローラが、各Ｌ−ページに記憶されたデータの、物理ページ内の、物理位置を決定可能にする論理物理アドレス変換マップを含んでもよい。コントローラは、物理論理対応を定義するジャーナルをメモリデバイスに維持するように構成されてもよく、各ジャーナルは、物理ページの所定の範囲をカバーし、かつ１以上の物理ページを各Ｌ−ページに関連付ける複数のエントリを含む。コントローラは、読み出したジャーナルからアドレス変換マップを開始及び再構築すると、ジャーナルを読みだしてもよい。【選択図】図２
2015530685.tif 000002
【特許請求の範囲】
【請求項１】
データストレージデバイスであって、
それぞれが複数の物理ページを記憶するように構成される複数の不揮発性メモリデバイスであって、前記複数の物理ページのそれぞれが、前記複数の不揮発メモリデバイス内の所定の物理位置に記憶される、複数の不揮発性メモリデバイスと、
前記複数の不揮発性メモリデバイスと接続され、前記複数の不揮発性メモリデバイスへデータを書き込み、かつ前記複数の不揮発性メモリデバイスからデータを読み出すように構成されるコントローラであって、前記データは、複数の論理ページ（Ｌ−ページ）に記憶され、前記複数のＬ−ページのそれぞれは、前記コントローラが、前記物理ページの１以上に記憶されたデータを論理参照可能にするように構成されるＬ−ページ番号と関連付けられる、コントローラと、
前記コントローラが、各Ｌ−ページに記憶されたデータの、１以上の物理ページ内に、物理位置を決定可能にするように構成される論理物理アドレス変換マップを含む揮発性メモリと、を備え、
前記コントローラは、前記複数の不揮発メモリデバイスに、物理論理対応を定義する複数のジャーナルを維持するように構成され、前記複数のジャーナルのそれぞれは、ジャーナル番号に関連付けられ、各ジャーナルは、所定の範囲の物理ページをカバーし、かつ複数のジャーナルエントリを含み、各エントリは、１以上の物理ページを各Ｌ−ページに関連付けるように構成され、前記コントローラは、起動すると、前記複数のジャーナルを読み出し、読みだした前記複数のジャーナルから前記揮発性メモリに記憶された前記論理物理アドレス変換マップを再構築するように構成される、データストレージデバイス。
【請求項２】
前記コントローラは、前記複数のＬ−ページの１つへ更新されると、前記複数のジャーナルの１つに新たなエントリを生成するように更に構成される請求項１に記載のデータストレージデバイス。
【請求項３】
変換データのパワーセーフコピーを維持するための前記不揮発性メモリデバイスへの書き込み動作は、前記論理物理アドレス変換マップの少なくとも一部を保存する代わりに新たに生成されたジャーナルエントリによって開始されるように構成され、ライトアンプリフィケーションが減少する、請求項２に記載のデータストレージデバイス。
【請求項４】
前記新たなエントリは、更新されたＬ−ページのスタートの、物理ページ内の、物理位置を示す請求項２に記載のデータストレージデバイス。
【請求項５】
前記コントローラは、更新前のＬ−ページの長さに対応する量により占められる空き領域を更新するように更に構成される請求項２に記載のデータストレージデバイス。
【請求項６】
前記複数のＬ−ページの少なくとも１つは、物理ページ境界に位置合わせされない請求項１に記載のデータストレージデバイス。
【請求項７】
前記物理ページは、誤り訂正符号（ＥＣＣ）ページ（Ｅ−ページ）として実装され、前記複数のデバイスは、複数のフラッシュメモリブロックを含み、各フラッシュメモリブロックは、複数のフラッシュメモリページ（Ｆ−ページ）を含み、前記Ｆ−ページのそれぞれは、複数の前記Ｅ−ページを含み、複数の前記Ｅ−ページのそれぞれは、前記複数のデバイス内の所定の物理位置に記憶される、請求項１に記載のデータストレージデバイス。
【請求項８】
前記コントローラは、更新されたＬ−ページのＬ−ページ番号によって参照されたデータの、１以上の物理ページ内に、前記物理位置で前記論理物理アドレス変換マップを更新するようにさらに構成される請求項２に記載のデータストレージデバイス。
【請求項９】
それぞれがデバイスごとに１以上のフラッシュメモリブロックを含む複数のスーパーブロック（Ｓ−ブロック）を更に備え、前記複数のジャーナルエントリのそれぞれは、前記Ｓ−ブロックの前記物理ページの１以上を各Ｌ−ページに関連付けるように構成される請求項１に記載のデータストレージデバイス。
【請求項１０】
前記コントローラは、少なくとも、
ガベージコレクションを行うために、前記複数のＳ−ブロックの１つを選択し、
選択されたＳ−ブロックに対するジャーナルにおける各エントリを前記論理物理アドレス変換マップにおけるエントリと比較し、有効であるエントリ及び有効でないエントリを指定し、
有効なエントリに対応する前記Ｌ−ページを読み出し、
読みだした前記Ｌ−ページを、前記複数の不揮発性メモリデバイス内の各物理アドレスに書き込み、
前記各物理アドレスを指し示すために、前記有効なエントリについての前記論理物理アドレス変換マップを更新し、
前記論理物理アドレス変換マップが更新された前記エントリについての新たなジャーナルエントリを生成する、
ことによりガベージコレクションを行うように更に構成される請求項９に記載のデータストレージデバイス。
【請求項１１】
前記コントローラは、少なくとも、
ガベージコレクションを行うために、前記複数のＳ−ブロックの１つを選択し、
選択された前記Ｓ−ブロックの前記物理ページを読み出し、
選択された前記Ｓ−ブロックの読み出した前記物理ページにおけるＬ−ページ番号を前記論理物理アドレス変換マップにおけるエントリと比較し、有効であるエントリ及び有効でないエントリを指定し、
有効なエントリに対応するＬ−ページを、前記複数の不揮発性メモリデバイス内の各物理アドレスに書き込み、
前記各物理アドレスを指し示すために、前記有効なエントリについての前記論理物理アドレス変換マップを更新し、
前記論理物理アドレス変換マップが更新された前記エントリについての新たなジャーナルエントリを生成する、
ことによりガベージコレクションを行うように更に構成される請求項９に記載のデータストレージデバイス。
【請求項１２】
前記選択することは、選択するためのＳ−ブロックを決定する際に空き領域及び書き込み消去（ｐｒｏｇｒａｍ  ｅｒａｓｅ（ＰＥ））カウントを重み付けすることを含む請求項１０に記載のデータストレージデバイス。
【請求項１３】
各ジャーナル番号は、前記ジャーナルによりカバーされる第１の物理ページのアドレスの所定数の最上位ビットを含む請求項１に記載のデータストレージデバイス。
【請求項１４】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページ番号と、
物理アドレス位置と、を含む請求項１に記載のデータストレージデバイス。
【請求項１５】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページ番号と、
物理ページの物理アドレス位置と、
Ｌ−ページサイズと、を含む請求項１に記載のデータストレージデバイス。
【請求項１６】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページのスタートを含む物理ページのアドレスの所定数の最下位ビットと、
アドレスと、
Ｌ−ページサイズと、
前記物理ページへのオフセットと、を含む請求項１に記載のデータストレージデバイス。
【請求項１７】
前記複数のＬ−ページは、圧縮及びサイズを変更するように構成され、複数のジャーナル番号は、小さいサイズで大きな番号のＬ−ページを参照する、又は大きなサイズで小さな番号のＬ−ページを参照するように構成される請求項１に記載のデータストレージデバイス。
【請求項１８】
前記コントローラは、更に、所定の順序で開始すると、前記複数のジャーナルを読み出すように構成され、かつ、連続的に読み出された複数のジャーナルに基づいて、前記揮発性メモリに記憶された前記論理物理アドレス変換マップを再構築するように構成される請求項１に記載のデータストレージデバイス。
【請求項１９】
前記コントローラは、更に、前記複数のジャーナルに基づいてジャーナルマップを構築するように構成される請求項１に記載のデータストレージデバイス。
【請求項２０】
前記コントローラは、更に、
所定の順序で開始すると、前記複数のジャーナルを読み出し、
連続的に読み出された前記複数のジャーナルに基づいて、前記不揮発性メモリデバイスに記憶された前記ジャーナルのマップを構築し、
前記揮発性メモリにおける前記ジャーナルの構築されたマップを記憶する
ように構成される請求項１に記載のデータストレージデバイス。
【請求項２１】
与えられたＬ−ページに関連付けられたジャーナルエントリのうち、前記与えられたＬ−ページに関連付けられた、最後に更新された（ｌａｓｔ−ｉｎ−ｔｉｍｅ  ｕｐｄａｔｅｄ）ジャーナルエントリのみが有効である請求項１に記載のデータストレージデバイス。
【請求項２２】
前記コントローラは、更に、前記揮発性メモリにおける前記複数のジャーナルのシステムジャーナルマップを維持するように構成され、前記システムジャーナルマップにおける各エントリは、前記複数のジャーナルの１つが記憶される前記不揮発性メモリデバイスにおける位置を指し示す請求項１に記載のデータストレージデバイス。
【請求項２３】
揮発性メモリ及び複数の不揮発性メモリデバイスを備えるデータストレージデバイスを制御する方法であって、前記複数の不揮発性メモリデバイスのそれぞれが、複数の物理ページを記憶するように構成され、前記複数の物理ページのそれぞれが、前記複数の不揮発性メモリデバイス内の所定の物理位置で記憶され、前記方法は、
複数の論理ページ（Ｌ−ページ）にデータを記憶するステップであって、前記複数のＬ−ページのそれぞれは、コントローラが１以上の前記物理ページに記憶されたデータを論理参照可能にするように構成されるＬ−ページ番号と関連付けられる、ステップと、
前記揮発性メモリに論理物理アドレス変換マップを維持するステップであって、前記論理物理アドレス変換マップは、各Ｌ−ページに記憶されたデータの、前記物理ページの１以上内に、物理位置を決定可能にするように構成される、ステップと、
前記複数の不揮発性メモリデバイスに物理論理対応を定義する複数のジャーナルを維持するステップであって、前記複数のジャーナルのそれぞれは、ジャーナル番号に関連付けられ、各ジャーナルは、物理ページの所定の範囲をカバーし、かつ複数のジャーナルエントリをそれぞれ含み、各エントリは、１以上の前記物理ページを各Ｌ−ページに関連付けるように構成される、ステップと、
起動すると、前記複数のジャーナルを読み出し、前記複数のジャーナルにおける読み出されたエントリに基づいて前記揮発性メモリに記憶された前記論理物理アドレス変換マップを再構築するステップと、を備える方法。
【請求項２４】
前記複数のＬ−ページの１つへ更新されると、前記複数のジャーナルの１つに新たなエントリを生成するステップを更に備える請求項２３に記載の方法。
【請求項２５】
前記論理物理アドレス変換マップの少なくとも一部を保存する代わりに新たに生成されたジャーナルエントリに基づいて変換データのパワーセーフコピーを維持するために、前記不揮発性メモリデバイスへの書き込み動作を開始し、ライトアンプリフィケーションが減少する、ステップを更に備える請求項２４に記載の方法。
【請求項２６】
前記新たなエントリは、更新されたＬ−ページのスタートの、物理ページ内に、物理位置を示す請求項２４に記載の方法。
【請求項２７】
更新前のＬ−ページの長さに対応する量により占められる空き領域を更新するステップを更に備える請求項２４に記載の方法。
【請求項２８】
前記記憶するステップは、物理ページ境界に位置合わせされない位置に前記複数のＬ−ページの少なくとも１つを記憶することを含む請求項２３に記載の方法。
【請求項２９】
前記物理ページは、誤り訂正符号（ＥＣＣ）ページ（Ｅ−ページ）として実装され、前記複数のデバイスは、複数のフラッシュメモリブロックを含み、各フラッシュメモリブロックは、複数のフラッシュメモリページ（Ｆ−ページ）を含み、前記Ｆ−ページのそれぞれは、複数の前記Ｅ−ページを含み、複数の前記Ｅ−ページのそれぞれは、前記複数のデバイス内の所定の物理位置に記憶される、請求項２３に記載の方法。
【請求項３０】
更新されたＬ−ページのＬ−ページ番号によって参照されたデータの、１以上の物理ページ内に、前記物理位置で前記論理物理アドレス変換マップを更新するステップを更に備える請求項２３に記載の方法。
【請求項３１】
前記複数のデバイスは、それぞれがデバイスごとに１以上のフラッシュメモリブロックを含む複数のスーパーブロック（Ｓ−ブロック）を備え、前記複数のジャーナルエントリのそれぞれは、前記Ｓ−ブロックの前記物理ページの１以上を各Ｌ−ページに関連付けるように構成される、請求項２３に記載の方法。
【請求項３２】
ガベージコレクションを行うために、前記複数のＳ−ブロックの１つを選択するステップと、
選択された前記Ｓ−ブロックに対するジャーナルにおける各エントリを前記論理物理アドレス変換マップにおけるエントリと比較し、有効であるエントリ及び有効でないエントリを指定するステップと、
前記有効なエントリに対応する前記Ｌ−ページを読み出すステップと、
読み出したＬ−ページを、前記複数の不揮発性メモリデバイス内の各物理アドレスに書き込むステップと、
前記各物理アドレスを指し示すために、前記有効なエントリについての前記論理物理アドレス変換マップを更新するステップと、
前記論理物理アドレス変換マップが更新された前記エントリについての新たなジャーナルエントリを生成するステップと、を更に備える請求項３１に記載の方法。
【請求項３３】
ガベージコレクションを行うために、前記複数のＳ−ブロックの１つを選択するステップと、
選択された前記Ｓ−ブロックの前記物理ページを読み出すステップと、
選択された前記Ｓ−ブロックの読み出した前記物理ページにおけるＬ−ページ番号を前記論理物理アドレス変換マップにおけるエントリと比較し、有効であるエントリ及び有効でないエントリを指定するステップと、
有効なエントリに対応するＬ−ページを、前記複数の不揮発性メモリデバイス内の各物理アドレスに書き込むステップと、
前記各物理アドレスを指し示すために、前記有効なエントリについての前記論理物理アドレス変換マップを更新するステップと、
前記論理物理アドレス変換マップが更新された前記エントリについての新たなジャーナルエントリを生成するステップと、を更に備える請求項３１に記載の方法。
【請求項３４】
前記選択するステップは、選択するためのＳ−ブロックを決定する際に空き領域及び書き込み消去（ｐｒｏｇｒａｍ  ｅｒａｓｅ（ＰＥ））カウントを重み付けすることを含む請求項３２に記載の方法。
【請求項３５】
前記ジャーナル番号は、前記ジャーナルによりカバーされる第１の物理ページのアドレスの所定数の最上位ビットを含む請求項３４に記載の方法。
【請求項３６】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページ番号と、
物理アドレス位置と、を含む請求項２３に記載の方法。
【請求項３７】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページ番号と、
物理ページの物理アドレス位置と、
Ｌ−ページサイズと、を含む請求項２３に記載の方法。
【請求項３８】
前記複数のジャーナルエントリのそれぞれは、
Ｌ−ページのスタートを含む物理ページのアドレスの所定数の最下位ビットと、
アドレスと、
Ｌ−ページサイズと、
前記物理ページへのオフセットと、を含む請求項２３に記載の方法。
【請求項３９】
前記複数のＬ−ページのサイズが変化するように前記複数のＬ−ページを選択的に圧縮するステップを更に備え、前記複数のジャーナルは、小さいサイズで大きな番号のＬ−ページを参照する、又は大きなサイズで小さな番号のＬ−ページを参照するように構成される請求項２３に記載の方法。
【請求項４０】
前記論理物理アドレス変換マップを開始及び再構築すると、前記複数のジャーナルを読み出すステップは、所定の順序で開始すると、前記複数のジャーナルを読み出し、かつ連続的に読み出された複数のジャーナルに基づいて、前記揮発性メモリに記憶された前記論理物理アドレス変換マップを再構築することを含む請求項２３に記載の方法。
【請求項４１】
前記コントローラは、更に、前記複数のジャーナルに基づいてジャーナルマップを構築するように構成される請求項２３に記載の方法。
【請求項４２】
所定の順序で開始すると、前記複数のジャーナルを読み出すステップと、
連続的に読み出された前記複数のジャーナルに基づいて、前記不揮発性メモリデバイスに記憶された前記ジャーナルのマップを構築するステップと、
前記揮発性メモリにおける前記ジャーナルの構築されたマップを記憶するステップと、を更に備える請求項２３に記載の方法。
【請求項４３】
与えられたＬ−ページに関連付けられたジャーナルエントリのうち、前記与えられたＬ−ページに関連付けられた、最後に更新された（ｌａｓｔ−ｉｎ−ｔｉｍｅ  ｕｐｄａｔｅｄ）ジャーナルエントリのみが有効である請求項２３に記載の方法。
【請求項４４】
前記揮発性メモリにおける前記複数のジャーナルのシステムジャーナルマップを維持するステップであって、前記システムジャーナルマップにおける各エントリは、前記複数のジャーナルの１つが記憶される前記不揮発性メモリデバイスにおける位置を指し示す、ステップを更に備える請求項２３に記載の方法。
【請求項４５】
データストレージデバイスコントローラであって、
揮発性メモリ及び複数のメモリデバイスと接続されたプロセッサであって、前記複数のメモリデバイスのそれぞれは、複数の不揮発性メモリデバイス内の所定の物理位置における複数の物理ページを記憶するように構成され、前記プロセッサは、更に、前記複数のメモリデバイスへデータを書き込み、かつ前記複数のメモリデバイスからデータを読み出すように構成され、前記データは、複数の論理ページ（Ｌ−ページ）に記憶され、前記複数のＬ−ページのそれぞれは、前記プロセッサが、前記物理ページの１以上に記憶されたデータを論理参照可能にするように構成されるＬ−ページ番号と関連付けられ、前記揮発性メモリは、前記プロセッサが、各Ｌ−ページに記憶されたデータの、１以上の物理ページ内に、物理位置を決定可能に構成された論理物理アドレス変換マップを記憶するように構成される、プロセッサを備え、
前記プロセッサは、前記複数の不揮発性メモリデバイスに、物理論理対応を定義する複数のジャーナルを維持するように構成され、前記複数のジャーナルのそれぞれは、ジャーナル番号と関連付けられ、各ジャーナルは、所定の範囲の物理ページをカバーし、かつ複数のジャーナルエントリを含み、各エントリは、１以上の物理ページを各Ｌ−ページに関連付けるように構成され、前記プロセッサは、更に、読み出した前記複数のジャーナルから前記不揮発性メモリデバイスに記憶された前記論理物理アドレス変換マップを開始及び再構築すると、前記複数のジャーナルを読み出すように構成される、データストレージデバイスコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
ソリッドステートドライブ（ＳＳＤｓ）におけるフラッシュメモリの性質により、データは、通常、ページによって書き込まれ、ブロックによって消去される。ＳＳＤのページは、通常、８−１６キロバイト（ＫＢ）の大きさであり、ブロックは、多数のページ（ａ  ｌａｒｇｅ  ｎｕｍｂｅｒ  ｏｆ  ｐａｇｅｓ）からなる（例えば、２５６又は５１２）。よって、ＳＳＤにおける特定の物理位置（例えば、ページ）は、磁気ハードディスクドライブのようにブロック内の同一ページのデータを上書きするものではなく、直接上書きされることができない。そのようなものとして、アドレス間接参照が必要である。ＳＳＤのようなデータストレージデバイス上のフラッシュメモリを管理し、ホストシステムとインターフェース接続する従来のデータストレージデバイスコントローラは、フラッシュトランスレーションレイヤ（ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ（ＦＴＬ））の一部であるロジカルブロックアドレッシング（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ（ＬＢＡ））として知られる論理物理マッピングシステム（Ｌｏｇｉｃａｌ  ｔｏ  Ｐｈｙｓｉｃａｌ（Ｌ２Ｐ）  ｍａｐｐｉｎｇ  ｓｙｓｔｅｍ）を用いる。新たなデータを、既に書き込まれた古いデータに置き換えるとき、データストレージデバイスコントローラは、新たなデータを新たな位置に書き込ませ、新たな物理位置を指し示すために論理マッピングを更新させる。古い物理位置は有効なデータを保持していないため、最終的には、再び書き込まれる前に消去される。
【背景技術】
【０００２】
従来、大規模なＬ２Ｐマップテーブルは、ＳＳＤ上の論理エントリを物理アドレス位置へマップしている。ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような揮発性メモリに存在するこの大規模なＬ２Ｐマップテーブルは、通常、書き込みの際に更新され、小さなセクションの不揮発性メモリに保存される。例えば、ランダム書き込みが生じた場合、システムは、１つのエントリのみを更新する必要があるが、それにもかかわらず、不揮発性メモリに対して、更新されなかったエントリを含むテーブル全体又はその一部をセーブしなければならず、これは、本質的に非効率的である。
【発明の概要】
【０００３】
図１は、ＳＳＤ用の従来のロジカルブロックアドレッシング（ＬＢＡ）スキームの態様を示す。図１に示されるように、マップテーブル１０４は、データストレージデバイスのフラッシュメモリ１０６に対して定義された論理ブロック１０３ごとに１つのエントリを含む。例えば、５１２バイトの論理ブロックをサポートする６４ＧＢのＳＳＤは、それ自体が１２５，０００，０００の論理ブロックを有するものとしてホストに存在してもよい。マップテーブル１０４における１つのエントリは、フラッシュメモリ１０６における１２５，０００，０００の論理ブロックのそれぞれの現在位置を含む。従来のＳＳＤでは、フラッシュページは、整数個の論理ブロックを保持する（つまり、論理ブロックは、フラッシュページに亘って広がらない）。この従来の例では、８ＫＢのフラッシュページは、（サイズが５１２バイトの）１６の論理ブロックを保持する。よって、論理物理アドレスマップテーブル１０４における各エントリは、論理ブロックが記憶されるフラッシュダイを特定するフィールド１０８と、論理ブロックが記憶されるフラッシュブロックを特定するフィールド１１０と、フラッシュブロック内のフラッシュページを特定する別のフィールド１１２と、論理ブロックデータが、特定されたフラッシュページで開始することを特定するフラッシュページ内のオフセットを特定するフィールド１１４と、を含む。サイズの大きなマップテーブル１０４は、テーブルが、ＳＳＤコントローラ内に保持されることを防ぐ。従来、大きなマップテーブル１０４は、ＳＳＤコントローラに接続される外部ＤＲＡＭに保持されていた。マップテーブル１０４が揮発性ＤＲＡＭに記憶されると、大きなサイズのテーブルにより、ＳＳＤの電源が投入され、その時間が長く掛かるとき、再度記憶されなければならない。
【０００４】
論理ブロックが読み出されるとき、マップテーブル１０４における対応するエントリは、読み出されるべきフラッシュメモリにおける位置を決定するために読み出される。その後、読み出しは、マップテーブル１０４における対応するエントリに特定されるフラッシュページに対して行われる。読みだしたデータが、フラッシュページに対して利用可能であるとき、マップエントリによって特定されるオフセットでデータは、ＳＳＤからホストへ転送される。論理ブロックが書き込まれたとき、マップテーブル１０４における対応するエントリは、論理ブロックの新たな位置を反映するように更新される。論理ブロックが書き込まれたとき、フラッシュメモリは、初めに、少なくとも２つのバージョンの論理ブロック、すなわち、有効な、直前に書き込まれたバージョン（マップテーブル１０４によって指し示される）と、少なくとも１つの別の、使われない、もはやマップテーブル１０４におけるいずれのエントリによっても指し示されない、古いバージョンと、を含むことを留意すべきである。これらの「使われない（ｓｔａｌｅ）」データは、ガベージといい、これは、集め、消去され、かつ将来の使用のために利用可能となることが説明されなければならない領域を占有する。
【図面の簡単な説明】
【０００５】
【図１】図１は、ＳＳＤ用の従来のロジカルブロックアドレッシング（ＬＢＡ）スキームの態様を示す。
【図２】図２は、一実施形態に係るデータストレージデバイスの物理及び論理データ構成の態様を示す図である。
【図３】図３は、一実施形態に係る、論理物理アドレス変換マップ及びその実例となるエントリを示す。
【図４】図４は、一実施形態に係る、論理物理アドレス変換マップを更新し、Ｓ−ジャーナルエントリを生成する方法の態様を示す。
【図５】図５は、一実施形態に係る、Ｓ−ジャーナルのブロック図である。
【図６】図６は、一実施形態に係る、Ｓ−ジャーナルの１つのエントリの例示的な構成を示す。
【図７】図７は、一実施形態に係る、スーパーブロック（Ｓ−ブロック）のブロック図である。
【図８】図８は、一実施形態に係る、スーパーページ（Ｓ−ページ）の別の図を示す。
【図９Ａ】図９Ａは、一実施形態に係る、論理物理アドレス変換マップ、Ｓ−ジャーナル及びＳ−ブロックの関係を示す。
【図９Ｂ】図９Ｂは、一実施形態に係る、Ｓ−ジャーナルマップのブロック図である。
【図１０】図１０は、一実施形態に係る、論理物理アドレス変換マップを更新する方法の態様を示すブロック図である。
【図１１】図１１は、一実施形態に係る、論理物理アドレス変換マップを更新する方法の別の態様を示すブロック図である。
【図１２】図１２は、一実施形態に係る、論理物理アドレス変換マップを更新する方法の更に別の態様を示すブロック図である。
【図１３】図１３は、一実施形態に係る、論理物理アドレス変換マップを更新する方法の更に別の態様を示すブロック図である。
【図１４】図１４は、一実施形態に係る、Ｓ−ジャーナル及びＳ−ジャーナルマップを更新する方法の態様を示すブロック図である。
【図１５】図１５は、一実施形態に係る、Ｓ−ジャーナル及びＳ−ジャーナルマップを更新する方法の別の態様を示すブロック図である。
【図１６】図１６は、一実施形態に係る、Ｓ−ジャーナル及びＳ−ジャーナルマップを更新する方法の更に別の態様を示すブロック図である。
【図１７】図１７は、一実施形態に係る、Ｓ−ジャーナル及びＳ−ジャーナルマップを更新する方法の更に別の態様を示すブロック図である。
【図１８】図１８は、一実施形態に係る、ガベージコレクションの態様を示すブロック図である。
【図１９】図１９は、一実施形態に係る、ガベージコレクションの別の態様を示すブロック図である。
【図２０】図２０は、一実施形態に係る、ガベージコレクションの更に別の態様を示すブロック図である。
【図２１】図２１は、一実施形態に係る、ガベージコレクションの更に別の態様を示すブロック図である。
【図２２】図２２は、一実施形態に係る、システムブロックのガベージコレクションを行う態様を示すブロック図である。
【図２３】図２３は、一実施形態に係る、システムブロックのガベージコレクションを行う別の態様を示すブロック図である。
【図２４】図２４は、一実施形態に係る、システムブロックのガベージコレクションを行う更に別の態様を示すブロック図である。
【図２５】図２５は、一実施形態に係る、システムブロックのガベージコレクションを行う他の態様を示すブロック図である。
【図２６】図２６は、一実施形態に係る、システムブロックのガベージコレクションを行う更に他の態様を示すブロック図である。
【発明を実施するための形態】
【０００６】
システム概要
図２は、一実施形態に係るデータストレージデバイスの物理及び論理データ構成の態様を示す図である。一実施形態では、データストレージデバイスは、ＳＳＤである。別の実施形態では、データストレージデバイスは、フラッシュメモリ及び回転磁気ストレージメディアを含むハイブリッドデバイスである。本開示は、ＳＳＤ及びハイブリッド実装の両方で適用可能であるが、簡略化のために、各種実施形態は、ＳＳＤベースの実装について説明される。一実施形態に係るデータストレージデバイスコントローラ２０２は、参照番号２１８で示されるホストに接続されるように構成されてもよい。ホスト２１８は、ロジカルブロックアドレッシング（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ（ＬＢＡ））スキームを使用してもよい。ＬＢＡサイズは、通常、固定されているが、ホストは、ＬＢＡのサイズを動的に変化しうる。例えば、ＬＢＡサイズは、インターフェース及びインターフェースモードによって変化してもよい。事実、５１２バイトが最も一般的であるが、４ＫＢも一般的となっており、５１２＋（５２０，５２８等）及び４ＫＢ＋（４ＫＢ＋８，４Ｋ＋１６等）がある。それらに示されるように、データストレージデバイスコントローラ２０２は、ページレジスタ２０４を備えてもよい又は接続されてもよい。ページレジスタ２０４は、コントローラ２０２がデータストレージデバイスからデータを読み出す、及びデータストレージデバイスへデータを記憶することを可能にするように構成されてもよい。コントローラ２０２は、ホスト２１８からのデータアクセスコマンドに対応するフラッシュメモリデバイスのアレイからデータを書き込み及び読み出すように構成されてもよい。本明細書の説明は、一般的なフラッシュメモリについて示されているが、メモリデバイスのアレイは、フラッシュ集積回路、カルコゲナイドＲＡＭ（Ｃｈａｌｃｏｇｅｎｉｄｅ  ＲＡＭ（Ｃ−ＲＡＭ））、相変化メモリ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ（ＰＣ−ＲＡＭ又はＰＲＡＭ））、プログラマブルメタライゼーションセルＲＡＭ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｍｅｔａｌｌｉｚａｔｉｏｎ  Ｃｅｌｌ  ＲＡＭ（ＰＭＣ−ＲＡＭ又はＰＭＣｍ）、Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ（ＯＵＭ）、抵抗ＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  ＲＡＭ（ＲＲＡＭ）（登録商標））、ＮＡＮＤメモリ（例えば、ｓｉｎｇｌｅ−ｌｅｖｅｌ  ｃｅｌｌ（ＳＬＣ）メモリ、ｍｕｌｔｉ−ｌｅｖｅｌ  ｃｅｌｌ（ＭＬＣ）メモリ又はそれらの任意の組み合わせ）、ＮＯＲメモリ、ＥＥＰＲＯＭ、強誘電体メモリ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ））、磁気抵抗ＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ＲＡＭ（ＭＲＡＭ））、他のディスクリートＮＶＭ（不揮発性メモリ）チップ又はそれらの任意の組み合わせのような不揮発性メモリデバイスの１以上を備えてもよいことが理解される。
【０００７】
ページレジスタ２０４は、コントローラ２０２が、アレイからデータを読み出し、アレイにデータを記憶するように構成されてもよい。一実施形態によれば、フラッシュメモリデバイスのアレイは、複数のダイ（例えば、１２８ダイ）の不揮発性メモリデバイスを備えてもよく、図２の２０６で示されるように、それぞれが複数のブロックを備える。他のページレジスタ２０４（図示せず）は、他のダイのブロックに接続されてもよい。共にグループ化された、フラッシュブロックの組み合わせは、スーパーブロック又はＳ−ブロックと呼ばれる。一部の実施形態では、Ｓ−ブロックを形成する個々のブロックは、１以上のダイ、プレーン又は他のレベルの粒度から選択されてもよい。よって、Ｓ−ブロックは、共に組み合わせられた、１以上のダイに亘る、複数のフラッシュブロックを備えてもよい。この手法では、Ｓ−ブロックは、フラッシュマネージメントシステム（ＦＭＳ）が動作するユニットを形成してもよい。一部の実施形態では、Ｓ−ブロックを形成する個々のブロックは、メモリデバイスが、プレーンのような構造に細分化された大を含む場合のような、ダイレベルとは異なる粒度に基づいて選ばれてもよい（すなわち、ブロックは、個々のプレーンから取得されてもよい）。一実施形態によれば、アロケーション、消去及びガベージコレクションは、Ｓ−ブロックレベルで実行されてもよい。別の実施形態では、ＦＭＳは、ページ、ブロック、プレーン、ダイ等のような他の論理グループに従ってデータオペレーションを実行してもよい。
【０００８】
次に、フラッシュブロック２０６のそれぞれは、複数のフラッシュページ（Ｆ−ページ）２０８を備える。各Ｆ−ページは、例えば、１６ＫＢのような固定サイズであってもよい。一実施形態によれば、Ｆ−ページは、与えられたフラッシュドライブ用のプログラムの最小ユニットのサイズである。図２に示されるように、各Ｆ−ページ２０８は、以下、Ｅ−ページ２１０をいう複数の物理ページを収容するように構成されてもよい。用語「Ｅ−ページ」は、誤り訂正符号（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ（ＥＣＣ））が適用されているフラッシュメモリに記憶されたデータ構造をいう。一実施形態によれば、Ｅ−ページ２１０は、データストレージデバイス内に物理的にアドレスする基準（ｂａｓｉｓ）を形成し、フラッシュリードデータ転送の最小単位を構成してもよい。したがって、Ｅ−ページ２１０は、所定の固定のサイズ（例えば、２ＫＢ）のものであってもよく（しかし必ずしも必要ではない）、ＥＣＣシステムのペイロード（例えば、ホストデータ）のサイズを決定してもよい。一実施形態によれば、各Ｆ−ページ２０８は、その境界内に所定の複数のＥ−ページ２１０に適合するように構成されてもよい。例えば、１６ＫＢのＦ−ページ２０８及び２ＫＢの固定サイズのＥ−ページ２１０が与えられた場合、８つのＥ−ページ２１０は、図２に示されるように、単一のＦ−ページ２０８内に適合する。ともかく、一実施形態によれば、ＥＣＣを含む、Ｅ−ページ２１０の２の階乗がＦ−ページ２０８に適合するように構成されてもよい。各Ｅ−ページ２１０は、データ部２１４を備えてもよく、Ｅ−ページ２１０が配置される位置に応じて、ＥＣＣ部２１６も備えてもよい。データ部２１４及びＥＣＣ部２１６のいずれもサイズを固定する必要はない。Ｅ−ページのアドレスは、フラッシュメモリ内のＥ−ページの位置を一意に特定する。例えば、Ｅ−ページのアドレスは、フラッシュチャネル、特定されたフラッシュチャネル内の特定ダイ、ダイ内の特定ブロック、特定のＦ−ページ及び最終的には、特定されたＦ−ページ内のＥ−ページを特定してもよい。
【０００９】
データストレージデバイス上の物理アドレッシング（ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓｉｎｇ）と、ホストによる論理ブロックアドレッシング（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓｉｎｇ）とをブリッジするために、論理ページ（Ｌ−ページ）構築が導入される。図２に参照番号２１２で示されるＬ−ページは、ＦＭＳによって使用されるアドレス変換の最小単位を含んでもよい。一実施形態によれば、各Ｌ−ページは、Ｌ−ページ番号と関連付けられてもよい。よって、Ｌ−ページ２１２のＬ−ページ番号は、コントローラ２０２が、Ｅ−ページ２１０のような物理ページの１以上に記憶されたホストデータを論理参照することができるように構成されてもよい。Ｌ−ページ２１２は、圧縮の基本ユニットとして使用されてもよい。一実施形態によれば、Ｆ−ページ２０８及びＥ−ページ２１０とは異なり、Ｌ−ページ２１２は、記憶されるべきデータの圧縮の変動性により、サイズが固定されず、サイズが変化してもよい。データの圧縮率が変化するため、４ＫＢの１つのタイプのデータは、２ＫＢのＬ−ページに圧縮される一方で、４ＫＢの異なるタイプのデータは、例えば、１ＫＢに圧縮されてもよい。よって、このような圧縮により、Ｌ−ページのサイズは、例えば、４ＫＢ又は４ＫＢ＋の最大非圧縮サイズに対する、例えば、２４バイトの最小圧縮サイズにより定義される範囲内で変化してもよい。他のサイズ及び範囲が実装されてもよい。図２に示されるように、Ｌ−ページ２１２は、Ｅ−ページ２１０の境界に位置合わせされる必要はない。事実、Ｌ−ページ２１２は、Ｆ−ページ２０８及び／又はＥ−ページ２１０に位置合わせされる開始アドレスを有するように構成されてもよいが、Ｆ−ページ２０８又はＥ−ページ２１０の境界のいずれかに位置合わせされないように構成されてもよい。つまり、図２に示されるように、Ｌ−ページ開始アドレスは、Ｆ−ページ２０８の開始又は最終アドレス又はＥ−ページ２１０の開始又は最終アドレスのいずれかからのゼロでないオフセットに位置付けられてもよい。Ｌ−ページ２１２のサイズが固定されず、固定されたサイズのＥ−ページ２１０よりも小さい場合には、１以上のＬ−ページ２１２は、単一のＥ−ページ２１０内に適合してもよい。同様に、Ｌ−ページ２１２のサイズがＥ−ページ２１０よりも大きい場合には、図２の参照番号２１７で示されるように、Ｌ−ページ２１２が１以上のＥ−ページに及び、Ｆ−ページ２０８の境界にわたってもよい。
【００１０】
例えば、ＬＢＡサイズが５１２又は５１２＋バイトである場合、圧縮されないＬ−ページ２１２が４ＫＢから４ＫＢ＋だとすると、８つのシーケンシャルＬＢＡは、４ＫＢのＬ−ページ２１２にパックされてもよい。一実施形態によれば、Ｌ−ページ２１２の正確な論理サイズは、圧縮後には、重要ではなく、物理サイズは、最小サイズで数バイト、最大サイズで数千バイトに亘ってもよいことを留意すべきである。例えば、４ＴＢのＳＳＤドライブについて、３０ビットのアドレッシングは、このようなＳＳＤに存在する可能性があるＬ−ページの量に対してカバーするために、各Ｌ−ページ２１２をアドレス指定するために使用されてもよい。
【００１１】
図３は、一実施形態に係る、論理物理アドレス変換マップ及びその実例となるエントリを示す。ホストデータがＬ−ページ２１２におけるホストによって参照され、かつデータストレージデバイスが１以上の連続的なＥ−ページ２１０にＬ−ページ２１２を記憶すると、論理物理アドレス変換マップは、コントローラ２０２が、Ｌ−ページ２１２のＬ−ページ番号を１以上のＥ−ページ２１０に関連付けることができるように要求される。このような論理物理アドレス変換マップは、図３に示され、一実施形態では、Ｌ−ページ２１２ごとの１つのエントリを有するリニアアレイである。このような論理物理アドレス変換マップは、ＤＲＡＭ又はＳＲＡＭのような揮発性メモリに記憶されてもよい。図３は、また、４つの異なるＬ−ページ２１２についての論理物理アドレス変換マップにおけるエントリを示し、図３のＬ−ページ２１２は、Ｌ−ページ１、Ｌ−ページ２、Ｌ−ページ３及ぶＬ−ページ４と示されるＬ−ページ番号と関連付けられる。一実施形態によれば、データストレージデバイスに記憶される各Ｌ−ページは、論理物理アドレス変換マップ３０２における単一かつ一意なエントリにより指し示されて（ｐｏｉｎｔｅｄ）もよい。よって、本明細書に展開される実施例では、４つのエントリが示される。３０２に示されるように、マップ３０２における各エントリは、Ｌ−ページ番号を含んでもよく、これは、参照されるＬ−ページの開始アドレス、物理ページ（例えば、Ｅ−ページ）の開始アドレスのオフセット及びＬ−ページの長さを含む物理ページ（例えば、Ｅ−ページ）のアイデンティフィケーションを備えてもよい。また、複数のＥＣＣビットは、マップエントリについての誤り訂正機能を提供してもよい。例えば、図３に示されるように、Ｅ−ページのサイズを２ＫＢとすると、Ｌ−ページ１は、論理物理アドレス変換マップ３０２において以下のように参照されてもよい：Ｅ−ページ１００３、オフセット８００、長さ１６２４に続いて所定数のＥＣＣビット（図示せず）。つまり、物理アドレスのタームでは、Ｌ−ページ１の開始は、Ｅ−ページ１００３内（図示せず）であり、８００バイトに等しいＥ−ページ１００３の開始物理位置からのオフセットに位置付けられる。圧縮されたＬ−ページ１は、更に、１，６２４バイトに拡張され、それにより、Ｅ−ページ境界からＥ−ページ１００４に亘る。よって、Ｅ−ページ１００３及び１００４のそれぞれは、Ｌ−ページ番号Ｌ−ページ１によって示されるＬ−ページ２１２の一部を記憶する。同様に、Ｌ−ページ番号Ｌ−ページ２によって示される圧縮されたＬ−ページは、Ｅ−ページ１００４内に全体が記憶され、４００バイトのオフセットでスタートし、Ｅ−ページ１００４内の６９６バイトのみが延びる。Ｌ−ページ番号Ｌ−ページ３に関連付けられた、圧縮されたＬ−ページは、１，１２０バイトのオフセット（Ｌ−ページ２の境界からちょうど２４バイト離れる）でＥ−ページ１００４内をスタートし、Ｅ−ページ１００５を超え、Ｅ−ページ１００６へ４，０９６バイト延びている。よって、Ｌ−ページ番号Ｌ−ページ３に関連付けられたＬ−ページは、Ｅ−ページ１００４の一部、Ｅ−ページ１００５の全て及びＥ−ページ１００６の一部に亘る。最終的に、Ｌ−ページ番号Ｌ−ページ４に関連付けられたＬ−ページは、１，１４４バイトのオフセットでＥ−ページ１００６内から開始し、３，１２８バイト拡張し、Ｅ−ページ１００７全体に亘り、次のＦ−ページのＥ−ページ１００８へのＦ−ページ境界を横断する。
【００１２】
合計すると、論理物理アドレス変換マップ３０２の各エントリを作成するこれらの構成要件の識別子フィールドのそれぞれ（Ｅ−ページ、オフセット、長さ及びＥＣＣ）のサイズは、例えば、８バイトであってもよい。つまり、例示的な４ＴＢドライブについては、Ｅ−ページのアドレスのサイズは、３２ビットであってもよく、オフセットのサイズは、１２ビット（Ｅ−ページデータ部用に４ＫＢまで）であってもよく、長さのサイズは、１０ビットまでであってもよく、ＥＣＣフィールドが提供されてもよい。他の構成及びビット幅も可能である。このような８バイトエントリは、Ｌ−ページが書き込まれる又は書き換えられる度に生成され、コントローラ２０２が、フラッシュストレージ内の、Ｌ−ページに書き込まれた、ホストデータのトラックを保持することを可能にする。論理物理アドレス変換マップにおけるこの８バイトエントリは、ＬＰＮのＬ−ページ番号によってインデクス付けされてもよい。言い換えれば、一実施形態によれば、Ｌ−ページ番号は、論理物理アドレス変換マップ３０２へのインデックスとして機能する。４ＫＢセクタサイズの場合には、ＬＢＡは、ＬＰＮと同一であることを留意すべきである。よって、ＬＰＮは、揮発性メモリ内のエントリのアドレスを構成してもよい。コントローラ２０２がホスト２１８から読み出しコマンドを受信したとき、ＬＰＮは、供給されたＬＢＡから生じてもよく、かつ論理物理アドレス変換マップ３０２へインデックス付けするために使用されてもよく、フラッシュメモリにおける読み出されるべきデータの位置を抽出する。コマンド２０２がホストから書き込みコマンドを受信したとき、ＬＰＮは、ＬＢＡから構築されてもよく、論理物理アドレス変換マップ３０２は、変更されてもよい。例えば、そこに新たなエントリが生成されてもよい。論理物理アドレス変換マップ３０２を記憶する揮発性メモリのサイズに応じて、ＬＰＮは、単一のエントリで記憶されてもよい、又は、例えば、当のＬ−ページの開始アドレス（プラスＥＣＣビット）を含むＥ−ページを特定する第１のエントリ、及びオフセット及び長さ（プラスＥＣＣビット）を特定する第２のエントリに分かれて記憶されてもよい。よって、一実施形態によれば、これらの２つのエントリは、フラッシュメモリ内の単一のＬ−ページに、共に対応及び指し示してもよい。別の実施形態では、論理物理アドレス変換マップエントリの特定のフォーマットは、上記で示された例とは異なっていてもよい。
【００１３】
Ｓ−ジャーナル及びＳ−ジャーナルマップ
論理物理アドレス変換マップ３０２が揮発性メモリに記憶されている場合、不揮発性メモリの起動又は不揮発性メモリへの任意の他の電力損失があると、再構築を行う必要がある。よって、これは、Ｌ−ページが、起動（ｓｔａｒｔｕｐ）後又は電力損失イベント（ｐｏｗｅｒ−ｆａｉｌ  ｅｖｅｎｔ）の後に不揮発性メモリ内に記憶されることをコントローラが「知る」前に、コントローラ２０２が、論理物理アドレス変換マップ３０２を再構築することができるであろう不揮発性メモリに記憶されるべき一部のメカニズム及び情報を必要とする。一実施形態によれば、このようなメカニズム及び情報は、システムジャーナル又はＳ−ジャーナルと呼ばれる構成に統合される。一実施形態によれば、コントローラ２０２は、複数の不揮発性メモリデバイス（例えば、１以上のダイ、チャネル又はプレーンにおけるブロック２０６の１以上）において、物理論理アドレス対応を定義する複数のＳ−ジャーナルを維持するように構成されてもよい。一実施形態によれば、各Ｓ−ジャーナルは、所定の範囲の物理ページ（例えば、Ｅ−ページ）をカバーする。一実施形態によれば、各Ｓ−ジャーナルは、複数のジャーナルエントリを備えてもよく、各エントリは、Ｅ−ページのような１以上の物理ページを、各Ｌ−ページのＬ−ページ番号に関連付けられるように構成される。一実施形態によれば、コントローラ２０２がリスタートするたびに、又は論理物理アドレス変換マップ３０２が部分的又は全体的に再構築されるたびに、コントローラ２０２は、Ｓ−ジャーナルを読み出し、Ｓ−ジャーナルエントリから読み出された情報から、論理物理アドレス変換マップ３０２を再構築する。
【００１４】
図４は、一実施形態に係る、論理物理アドレス変換マップを更新し、Ｓ−ジャーナルエントリを生成する方法の態様を示す。図４に示されるように、論理物理アドレス変換マップ３０２が最新のまま維持されることを確実にするために、ブロックＢ４１で示されるように、Ｌ−ページが書き込まれる又は更新される度に、論理物理アドレス変換マップ３０２は、Ｂ４２に示されるように、更新されてもよい。Ｂ４３に示されるように、Ｓ−ジャーナルエントリも生成され、更新されたＬ−ページの位置を指し示す情報をそこに記憶する。このようにして、論理物理アドレス変換マップ３０２及びＳ−ジャーナルの両方は、新たな書き込みが生じる（例えば、ホストが不揮発性メモリに書き込みを命じる、ガベージコレクション／ウェアレベリングが生じる等）とき、更新される。アドレス変換のパワーセーフコピーを維持するための不揮発性メモリデバイスへの書き込み動作は、したがって、論理物理アドレス変換マップの全て又は一部を再度保存することに替えて、新たに生成されたジャーナルエントリによって開始されるように構成されてもよく、ライトアンプリフィケーション（Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ（ＷＡ））が減少する。Ｓ−ジャーナルの更新は、コントローラ２０２が、新たに更新されたＬ−ページへアクセスすることができること、及び論理物理アドレス変換マップ３０２が、論理物理アドレス変換マップが記憶された揮発性メモリに影響を与えるリスタート又は他の情報を消去するパワーイベントが生じると、再構築されることを確実にする。また、論理物理アドレス変換マップ３０２を再構築する際のそれらのユーティリティに加えて、Ｓ−ジャーナルは、効果的なガベージコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ（ＧＣ））を可能にする際に有益である。事実、Ｓ−ジャーナルは、全てのＬ−ページ番号への最後の（ｌａｓｔ−ｉｎ−ｔｉｍｅ）更新を含んでもよく、有効なＬ−ページを指し示さないエントリである無効なエントリも含んでもよい。
【００１５】
一実施形態によれば、Ｓ−ジャーナルは、不揮発性メモリに書き込まれるメインフラッシュマネージメントデータであってもよい。Ｓ−ジャーナルは、与えられたＳ−ブロックについてのマッピング情報を含んでもよく、与えられたＳ−ブロックについての物理論理（Ｐｈｙｓｉｃａｌ−ｔｏ−Ｌｏｇｉｃａｌ（Ｐ２Ｌ））情報を含んでもよい。図５は、一実施形態に係る、Ｓ−ジャーナルのブロック図である。図５に示されるように、各Ｓ−ジャーナル５０２は、５０６で示され、例えば、５ビットを用いてアドレス可能である、３２のＥ−ページのような不揮発性メモリの所定の物理領域をカバーする各Ｓ−ジャーナル５０２は、Ｓ−ジャーナル番号によって特定されてもよく、Ｓ−ジャーナルについての他の情報を含むことができるヘッダ５０４の一部であってもよい。Ｓ−ジャーナル番号は、Ｓ−ジャーナルによってカバーされる第１の物理ページのアドレスの一部を含んでもよい。例えば、Ｓ−ジャーナル５０２のＳ−ジャーナル番号は、例えば、Ｓ−ジャーナル５０２によってカバーされる第１のＥ−ページアドレスの２７の最上位ビット（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔｓ（ＭＳｂ））を含んでもよい。
【００１６】
図６は、一実施形態に係る、Ｓ−ジャーナルの１つのエントリの例示的な構成を示す。Ｓ−ジャーナル５０２の各エントリ６０２は、１つのＬ−ページの開始アドレスを指し示してもよく、これは、Ｅ−ページに物理的にアドレスされる。各エントリ６０２は、例えば、開始Ｌ−ページを含むＥ−ページのアドレスのある個数（例えば、５）の最下位ビット（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔｓ（ＬＳｂｓ））を含んでもよい。完全なＥ−ページアドレスは、これらの５個のＬＳｂｓを、ヘッダ５０４におけるＳ−ジャーナル番号の２７個のＭＳｂｓに連結させることにより得られる。また、エントリ６０２は、Ｌ−ページ番号、特定されたＥ−ページ内のそのオフセット及びそのサイズを含んでもよい。例えば、Ｓ−ジャーナルの各エントリ６０２は、このＳ−ジャーナルエントリ、３０ビットのＬ−ページ番号、９ビットのＥ−ページオフセット及び１０ビットのＬ−ページサイズによりカバーされる第１のＥ−ページのアドレスの５個のＬＳｂｓを含んでもよい。様々な他のインターナルジャーナルエントリフォーマットが他の実施形態で使用されてもよい。
【００１７】
一実施形態によれば、Ｌ−ページに記憶されたデータの圧縮又はホスト構成の変動により、様々な個数のＬ−ページは、５０６に示されるように、３２のＥ−ページに等しい物理領域のような物理領域に記憶されてもよい。Ｌ−ページサイズの圧縮及びその結果生じる変動を用いた結果として、Ｓ−ジャーナルは、様々な個数のエントリを含んでもよい。例えば、一実施形態によれば、最大圧縮では、Ｌ−ページのサイズは２４バイトであってもよく、Ｓ−ジャーナルは、２，５００を超えるエントリを含んでもよく、等しい個数のＬ−ページ、Ｓ−ジャーナルエントリ６０２ごとに１つのＬ−ページを参照する。
【００１８】
上記で述べたように、Ｓ−ジャーナルは、与えられたＳ−ブロックについてのマッピング情報を含むように構成されてもよい。より正確には、一実施形態によれば、Ｓ−ジャーナルは、与えられたＳ−ブロック内のＥ−ページの所定の範囲についてのマッピング情報を含む。図７は、一実施形態に係る、Ｓ−ブロックのブロック図である。図７に示されるように、Ｓ−ブロック７０２は、ダイごとに１つのフラッシュブロック（Ｆ−ブロック）７０４（図２に２０６としても示される）を含んでもよい。よって、Ｓ−ブロックは、フラッシュマネージメントシステムのユニットを形成するために共に組み合わせられる、複数のＦ−ブロックの集合、ダイごとに１つのＦ−ブロックとみなされてもよい。一実施形態によれば、アロケーション、消去及びＧＣは、Ｓ−ブロックレベルで管理されてもよい。図７に示されるように、各Ｆ−ブロック７０４は、例えば、２５６又は５１２個のＦ−ページのような複数のフラッシュページ（Ｆ−ページ）を含んでもよい。一実施形態によれば、Ｆ−ページは、与えられた不揮発性メモリデバイスについてのプログラムの最小単位の大きさであってもよい。図８は、一実施形態に係る、スーパーページ（Ｓ−ページ）の別の図を示す。図８に示されるように、Ｓ−ページ８０２は、Ｓ−ブロックのＦ−ブロックごとに１つＦ−ページを含んでもよく、これはＳ−ページがＳ−ブロック全体に亘って広がることを意味する。
【００１９】
各種データ構造との関係
図９Ａは、一実施形態に係る、論理物理アドレス変換マップ、Ｓ−ジャーナル及びＳ−ブロックの関係を示す。参照番号９０２は、（一実施形態では、ＤＲＡＭに記憶される）論理物理アドレス変換マップにおけるエントリを示す。一実施形態によれば、論理物理アドレス変換マップは、Ｌ−ページ番号によってインデックス付けされてもよく、論理物理アドレス変換マップにおいてＬ−ページごとに１つのエントリ９０２であってもよい。フラッシュメモリにおけるＬ−ページの開始の物理アドレス及びそのサイズは、マップエントリ９０２、すなわち、Ｅ−ページアドレスによる、Ｅ−ページ内のオフセット及びＬ−ページのサイズに与えられてもよい。上記で述べたように、そのサイズに応じて、Ｌ−ページは、１以上のＥ−ページに亘ってもよく、同様に、Ｆ−ページ及びＦ−ブロックに亘ってもよい。
【００２０】
９０４に示されるように、揮発性メモリ（例えば、ＤＲＡＭ）は、システムジャーナル（Ｓ−ジャーナル）マップも記憶してもよい。Ｓ−ジャーナルマップにおけるエントリ９０４は、Ｓ−ジャーナルが不揮発性メモリに物理的に位置付けられることに関係する情報を記憶してもよい。例えば、Ｌ−ページの開始が記憶されるＥ−ページの物理アドレスの２７のＭＳｂｓは、（図５で前述したように）Ｓ−ジャーナル番号を構成してもよい。揮発性メモリにおけるＳ−ジャーナルマップエントリ９０４は、システムＥ−ページで参照される、不揮発性メモリにおけるＳ−ジャーナルのアドレスも含んでもよい。揮発性メモリにおけるＳ−ジャーナルマップエントリ９０４から、システムＳ−ブロック情報９０８が抽出されてもよい。システムＳ−ブロック情報９０８は、システムＳ−ブロック（システムバンドにおけるＳ−ブロック）によりインデックス付けされてもよく、Ｓ−ブロックについての他の情報のうち、システムＳ−ブロックにおける任意の空き領域又は使用領域のサイズを含んでもよい。Ｓ−ジャーナルマップエントリ９０４からも、不揮発性メモリ９１０における参照されたＳ−ジャーナルの物理位置（システムバンドにおけるＥ−ページとして表される）が抽出されてもよい。
【００２１】
一実施形態によれば、システムバンドは、Ｌ−ページデータを含まず、ファイルマネージメントシステム（Ｆｉｌｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ（ＦＭＳ））メタ‐データ及び情報を含んでもよい。システムバンドは、信頼性及び電力損失の簡素化のためのみに低いページ（ｌｏｗｅｒ  ｐａｇｅ）として構成されてもよい。通常オペレーション時に、システムバンドは、ガベージコレクションの時を除いて、読み出される必要はない。システムバンドは、全体のＷＡ最適化のためのデータバンドをはるかに超えるものを過剰に提供してもよい。他のバンドは、Ｌ−ページデータを含み、頻繁に更新されるホットバンド（Ｈｏｔ  Ｂａｎｄ）と、更新頻度が低く、ＧＣの結果として収集されているデータようなより無効なデータを含むコールドバンドと、を含む。一実施形態によれば、システム、ホット及びコールドバンドｌは、Ｓ−ブロック基準（Ｓ−Ｂｌｏｃｋ  ｂａｓｉｓ）によって割り当てられてもよい。
【００２２】
上述したように、不揮発性メモリにおけるこれらのＳ−ジャーナルのそれぞれは、Ｓ−ジャーナルエントリの集合を含んでもよく、例えば、データの３２のＥ−ページ分をカバーしてもよい。不揮発性メモリ９１０におけるこれらのＳ−ジャーナルは、コントローラ２０２が、揮発性メモリにおける論理物理アドレス変換マップだけでなく、揮発性メモリにおけるＳ−ジャーナルマップ、ユーザＳ−ブロック情報９０６及びシステムＳ−ブロック情報９０８も再構築することができる。
【００２３】
図９Ｂは、一実施形態に係る、Ｓ−ジャーナルマップ９１２のブロック図である。Ｓ−ジャーナルマップ９１２は、Ｓ−ブロック番号によってインデックス付けされてもよく、そのエントリそれぞれは、そのＳ−ブロックについての第１のＳ−ジャーナルの開始を指し示してもよく、これは、次に、そのＳ−ブロックの所定数（例えば、３２）のＥ−ページをカバーしてもよい。コントローラ２０２は、Ｓ−ジャーナルのマップを構築又は再構築するように構成され、かつ揮発性メモリにおける得られたＳ−ジャーナルマップを記憶するように構成されてもよい。すなわち、リスタート又は電力を損失する別のイベントが生じると、若しくはエラーリカバリに続くリスタート後、コントローラ２０２は、所定の順序（シーケンシャルオーダー）で複数のＳ−ジャーナルを読み出し、連続的に（ｓｅｑｕｅｎｔｉａｌｌｙ）読み出された複数のＳ−ジャーナルに基づいて不揮発性メモリデバイスに記憶されたＳ−ジャーナルのマップを構築し、揮発性メモリにおいて、構築されたＳ−ジャーナルマップ９１２を記憶してもよい。
【００２４】
論理物理アドレス変換マップの更新
図１０−１３は、一実施形態に係る、論理物理アドレス変換マップを更新する方法の態様を示すブロック図である。図１０に示されるように、論理物理アドレス変換マップ１００２は、Ｌ−ページ１００についてのエントリ（例えば、Ｌ−ページの位置）を含み、これは、３，０１２バイトの長さを有する。この例では、Ｌ−ページ１００は、１００６に示されるように、Ｓ−ブロック１５に記憶される。コントローラ２０２の又はコントローラ２０２に接続されるバッファ１００４（例えば、ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＳＲＡＭ））は、Ｌ−ページ１００が存在するＳ−ブロック１５についてのＰ２Ｌ情報を含むＳ−ジャーナルを記憶してもよい。バッファ１００４に示されているものは、一部の実施形態においてＤＲＡＭに実際に存在してもよい。そのエントリがＳ−ブロックによりインデックス付けされるユーザＳ−ブロック情報９０６は、各Ｓ−ブロックに対して、Ｓ−ブロックについての他の情報のうち、Ｓ−ブロックにおける空き領域又は使用領域の（例えば、正確な又はおおよその）サイズを含んでもよい。図１０に示されるように、Ｓ−ブロック１５についてのユーザＳ−ブロック情報９０６におけるエントリが示される。図１０は、Ｌ−ページ１００への更新がコントローラ２０２によって処理される前の、これらの構成機能ブロックの例示的な状態を示す。
【００２５】
図１１の１１０２に示されるように、更新されたＬ−ページ１００が受信され、１，５３４バイトの新たな長さを有する。更新されたＬ−ページ１００の受信に応じて、Ｌ−ページ情報１００は、論理物理アドレス変換マップ１００２からフェッチ（ｆｅｔｃｈｅｄ）されてもよく、（既に使われない）Ｌ−ページ１００の長さ（３，０１２バイト）は、そこから抽出され、Ｓ−ブロック１５のトラックされた空き領域値を対応しかつ正確に増加するために用いられてもよい。特に、ユーザＳ−ブロック情報９０６は、Ｓ−ブロック１５が、空き領域の追加の３，０１２バイトを有し、Ｌ−ページ１００の元データが無効（例えば、使われない）ことを示すデータで更新されてもよい。
【００２６】
図１２に示されるように、論理物理アドレス変換マップ１００２は、更新したＬ−ページを収容するように更新されてもよい。例えば、長さ情報は、このとき１，５３４バイトである。その後、更新が生じるＳ−ブロック１５の特定の部分についてのバッファ１００４におけるＳ−ジャーナルは、長さ情報を含む新たなＬ−ページ情報で更新されてもよく、例えば圧縮プログラム（ｃｏｍｐｒｅｓｓｏｒ）から新たに受信されたＬ−ページは、バッファ１００４へ読み出されてもよい。新たなＬ−ページがバッファにある間、論理物理アドレス変換マップ１００２におけるＬ−ページ１００についてのエントリは、矢印「１」によって示されるように、バッファのその位置を一時的に反映してもよい。その後、更新されたＬ−ページ１００は、バッファ１００４の更新されたＳ−ジャーナルにおいて新たに生成されたエントリによって特定されるＥ−ページアドレスにおいて、ホットＳ−ブロック１００８へフラッシュされ（ｆｌｕｓｈｅｄ）てもよい論理物理アドレス変換マップ１００２におけるマッピングテーブルエントリは、矢印「２」で示されるように、物理Ｅ−ページアドレス及びＬ−ページの最終点のオフセットを反映するように更新される。
【００２７】
図１３に示されるように、例えば、十分な数の新たなエントリを蓄積した後のようないくつかの後の時点では、揮発性メモリバッファ１００４におけるＳ−ジャーナルは、システムＳ−ブロック１０１０のような不揮発性メモリへ書き込まれてもよい。システムＳ−ブロック１０１０は、Ｓ−ジャーナルに記憶するために、コントローラファームウェアにより割り当てられるフラッシュメモリの一部であってもよい。不揮発性メモリにおけるＳ−ジャーナルの保存は、必要な場合、論理物理アドレス変換マップの後の再構築を可能にする。
【００２８】
Ｓ−ジャーナル及びＳ−ジャーナルマップの更新
図１４−１７は、一実施形態に係る、システムバンドにおけるＳ−ジャーナル及びＳ−ジャーナルマップを更新する方法の態様を示すブロック図である。図は、Ｌ−ページ１００への同一の例の更新によって開始されるＳ−ジャーナルの更新メカニズムについての更なる詳細を示す。図に示されるように、揮発性メモリ（例えば、ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＳＤＲＡＭ））におけるＳ−ジャーナルマップ１４０２は、Ｌ−ページ１００に関連付けられるＰ２Ｌマッピングデータを含むＳ−ジャーナルの、不揮発性メモリにおける、物理位置を指し示すエントリを含んでもよい。図示された例では、関連するＳ−ジャーナル（すなわち、Ｌ−ページ１００を記憶するＳ−ブロック１５の特定の部位についてのＳ−ジャーナル）は、Ｅ−ページ４２で開始する、システムＳ−ブロック３（１４０８）に位置付けられる。
【００２９】
そののち、図１５に示されるように、Ｌ−ページ１００は、１，５３４バイトの長さで更新される。現在のＬ−ページ１００についての情報（例えば、Ｅ−ページアドレス、オフセット及び長さ）は、論理物理アドレス変換マップ１００２からフェッチされてもよい。その後、Ｌ−ページ１００を記憶するＥ−ページのアドレスは、Ｓ−ジャーナルマップ１４０２内のＳ−ジャーナルエントリを位置付けるために使用されるＳ−ジャーナル番号を抽出するために使用されてもよい。例えば、図５及び６で示されるような場合には、Ｓ−ジャーナル番号は、３２ビットＥ−ページアドレスの２７ＭＳｂｓを含んでもよい。このＳ−ジャーナル番号は、位置を取得するために、Ｓ−ジャーナルマップ１４０２へインデックス付けするために使用されてもよく、これは、その後、対象のＳ−ジャーナルを含むシステムＳ−ブロックを特定するために用いられてもよい。その後、図１５に示されるように、システムＳ−ブロック情報９０８は、Ｌ−ページ１００に対する最近の更新を考慮して、当該エントリによって以前に占有された領域が、割り当て解除されたときに、Ｓ−ブロック３でのＳ−ジャーナルにおけるＬ−ページ１００についてのジャーナルエントリが無効であるということを反映するように更新されてもよい。当該割り当てを解除された領域は、このとき空き領域であり、考慮されなければならない。それに替えて、使用領域が考慮され、空き領域がそこから導かれてもよい。よって、Ｓ−ブロック３についてのシステムＳ−ブロック情報９０８におけるエントリは、１つのＳ−ジャーナルエントリ、つまり、本明細書で展開された例示的な実装における７バイトによって取得される領域によってインクリメントされてもよい。この空き領域は、その後、システムバンドのＧＣ時に考慮されてもよい。
【００３０】
図１６に示されるように、Ｌ−ページ１００は、バッファ１００４に書き込まれ、１００５に示されるように、論理物理アドレス変換マップ１００２は、バッファ１００４を指し示し（Ｌ−ページ１００が記憶される物理位置を示す）、更新されたＬ−ページ１００の長さを記憶するように更新されてもよい（本明細書で展開される例では１，５３４）。この点において、システムＳ−ブロック３は、依然として、Ｌ−ページ１００を含むものとして参照番号１００６でＳ−ブロック１５を指し示すＳ−ジャーナルエントリを含むことを留意すべきである。しかし、Ｓ−ブロック３についてのシステムＳ−ブロック情報は、参照番号１４０８において、システムＳ−ブロック３内の無効なＳ−ジャーナルエントリによって占められた現在の領域は、事実、空き領域であることを示すように更新されている。
【００３１】
図１６は、バッファにおいて異なるＳ−ジャーナルも示している。一実施形態では、バッファ１００４におけるＳ−ジャーナルは、オープンホットＳ−ブロック７へ書き込まれた新たなＬ−ページを記録するためにものである。この例では、バッファ１００４におけるＳ−ジャーナル（不揮発性メモリにフラッシュされて（ｆｌｕｓｈｅｄ）いない）は、図１６の１０００７における矢印によって示されるように、更新されたＬ−ページ１００（ここではバッファも）のＬ−ページ番号及びその長さ情報で更新される。Ｌ−ページ１００は、図１６に１４０４で示されるように、ここで、バッファ１００４から現在のオープンホットＳ−ブロック７へフラッシュされてもよい。この時点では、バッファにおけるＳ−ジャーナルは、更新されたＬ−ページ１００が、不揮発性メモリへ書き込まれていることを反映するように更新される。それに替えて、論理物理アドレス変換マップ１００２及びＳ−ジャーナルは、更新されたＬ−ページ１００が不揮発性メモリへ書き込まれる前に、更新されたＬ−ページ１００のアドレスで更新されてもよい。一実施形態では、当該Ｓ−ジャーナルにおける更新されたエントリは、前述の図６に示されるように、論理物理アドレス変換マップ１００２における新たなＬ−ページ１００のエントリ及びＬ−ページ１００についての追加情報によって指し示されるＥ−ページを含むであろう。
【００３２】
図１７に示されるように、十分なデータを蓄積した後、バッファ１００４におけるＳ−ジャーナルは、オープンシステムＳ−ブロック１へ書き出されてもよい（１４０６参照）。この例では、このＳ−ジャーナルは、オープンシステムブロック１のＥ−ページ１９へ書き出される。Ｓ−ジャーナルマップ１４０２は、ここで、Ｓ−ブロック１５の一部が、システムＳ−ブロック３，Ｅ−ページ４２に記憶されることを示す１つのエントリを含む。しかし、Ｓ−ブロック１５内のＬ−ページ１００の古い位置を指し示すＳ−ジャーナル内のエントリは、もはや有効ではない。Ｓ−ジャーナルマップ１４０２は、Ｓ−ブロック７についてのＳ−ジャーナルが、システムＳ−ブロック１，Ｅ−ページ１９に記憶されることを示す１つのエントリも含む。当該Ｓ−ジャーナルは、更新されたＬ−ページ１００の不揮発性メモリにおける位置として、１４０４において、オープンＳ−ブロック７を指し示す有効なエントリを含む。このように、Ｐ２Ｌ情報を含むＳ−ジャーナルは、バッファ１００４において更新され、最終的に不揮発性メモリへ書き込まれる。また、Ｓ−ジャーナルマップ１４０２は、このような新たに更新されたＳ−ジャーナルへ指し示すように適切に更新されてもよい。また、論理物理アドレス変換マップ１００２は、正確なオープンホットＳ−ブロックへ指し示すために適切に更新されてもよい。
【００３３】
有利には、新たな書き込みで、本明細書に示されかつ説明されたＳ−ジャーナル構成は、書き込みオーバーヘッドを最小限にする。一実施形態によれば、新たな動作（オペレーション）は、不揮発性メモリにおける新たなＳ−ジャーナルエントリを書き込むことを必要とする。生成されたＬ−ページごとに少量のＳ−ジャーナルエントリデータが存在するため（例えば、本明細書で説明される７バイト）、システムデータによるＷＡは、従来のシステムに比べて低減される。Ｓ−ジャーナルデータは、大量のコマンド履歴に効果的である。更新されたＳ−ジャーナルデータは、プールされ、システムバンドへ連続的に書き出される。本明細書に示されかつ説明されたＳ−ジャーナルシステムは、生成されたマッピング情報が、別途エントリを変更することもなく、書き込まれるべきデータと同一であり、論理物理マップの全部又は一部とは対照的に、変更されるものが、不揮発性（例えば、フラッシュ）メモリに書き込まれるだけであり、効果的である。
【００３４】
電源投入時に（Ｏｎ  ｐｏｗｅｒ  ｕｐ）、システムバンドにおける全てのＳ−ジャーナルデータは、ＤＲＡＭへ読み出し及び処理され、揮発性メモリにおける論理物理アドレス変換マップを再構築してもよい。一実施形態によれば、これは、Ｓ−ブロックがシステムバンドへ割り当てられる順序で行われる。一実施形態では、ハードウェアサポートは、この大きなデータロードが、電源投入タイミング要求を満たすために迅速に生じることを可能にするために用いられる（これが、コマンド履歴から論理物理アドレス変換マップを本質的に生成するため、これは、ハードウェアなしでは実現できない）。一実施形態によれば、Ｓ−ジャーナルマップは、システムバンドに記憶される有効なＳ−ジャーナルを指し示すために、電源投入（ｐｏｗｅｒ−ｕｐ）時にも構築される。
【００３５】
ユーザデータＳ−ブロックのガベージコレクション
図１８−２１は、一実施形態に係る、ガベージコレクションの態様を示すブロック図である。図に示されるように、ユーザＳ−ブロック情報９０６におけるデータは、ガベージコレクションを行うために、「最良の」Ｓ−ブロックを選択するためにスキャンされてもよい。ガベージコレクションを行うためのＳ−ブロックを選択するために評価される複数の分類が存在する。例えば、ガベージコレクションを行うために最良のＳ−ブロックは、最大空き領域を有するＳ−ブロック及び最低書き込み消去（ｌｏｗｅｓｔ  Ｐｒｏｇｒａｍ  Ｅｒａｓｅ（ＰＥ））カウントであってもよい。それに替えて、これらの及び／又は他の分類は、ガベージコレクションされるＳ−ブロックを選択するために重み付けされてもよい。例示の目的のために、図１８−２１でガベージコレクションされた、選択されたＳ−ブロックは、Ｓ−ブロック１５であり、これは、ユーザＳ−ブロック情報９０６内の情報エントリ１５により参照され、幾らかの量＋３，０１２バイトの空き領域を示す（最近使用されなくなったＬ−ページ１００を考慮するための追加の３，０１２バイト）。ユーザＳ−ブロック情報９０６は、他のアイテムの情報のうち、各トラックされたＳ−ブロックによって受けられたＰＥサイクルの数のランニングカウントを含んでもよく、これは、ガベージコレクションを行うＳ−ブロックを決定する際に評価されてもよいことを留意すべきである。１００６に示されるように、Ｓ−ブロック１５は、有効なデータ（ハッシュされたブロック）及び無効なデータ（ハッシュされないブロック）の混合したものを有する。
【００３６】
ここで、Ｓブロック１５がＧＣのために選択されているからには、Ｓ−ジャーナルマップ（図９Ｂの９１２参照）は、考慮され（例えば、Ｓ−ブロック番号によりインデックス付けされる）、そのＳ−ブロックについての対応するＳ−ジャーナルの不揮発性メモリの位置（例えば、Ｅ−ページアドレス）を探す。一例を示すために、図１８に示されるように、Ｓ−ジャーナルマップ９１２により指し示される１つのＳ−ジャーナルは、Ｓ−ジャーナル番号（Ｅ−ページアドレスの２７ＭＳｂ）を用いて位置付けられ、バッファ１００４へ読み出される。つまり、Ｓ−ジャーナル９１２によって指し示されるシステムＳ−ブロック１８０４における１以上のＥ−ページは、アクセスされ、当該位置で開始する記憶されたＳ−ジャーナルは、バッファ１００４へ読み出されてもよい。一実施形態では、Ｓ−ジャーナルマップは、Ｓ−ジャーナルが１以上のＥ−ページに亘るため、Ｓ−ジャーナルの長さも含んでもよい。Ｓ−ジャーナルは、非常に長い場合もあり、よって、分かれた状態で読み出され、利用可能なときに処理されてもよい。
【００３７】
その後、バッファ１００４のＳ−ジャーナルにおける各Ｐ２Ｌエントリは、論理物理アドレス変換マップ１８０２における対応するエントリと比較されてもよい。バッファ１００４のＳ−ジャーナルにおける各エントリについて、当該エントリのＬ−ページについての物理アドレスが、論理物理アドレス変換マップ１８０２における対応するエントリの同一Ｌ−ページの物理アドレスと一致するかどうかを判断する。２つが一致する場合、Ｓ−ジャーナルの当該エントリは、有効である。逆に、Ｓ−ジャーナルのＬ−ページについてのアドレスが論理物理アドレス変換マップにおけるＬ−ページについてのエントリと一致しない場合には、Ｓ−ジャーナルの当該エントリは、有効ではない。
【００３８】
一実施形態によれば、有効なエントリが、そのエントリがパースされ、かつ比較されるＳ−ジャーナルにあるとき、参照されたＬ−ページは、図１９に示されるように、Ｓ−ブロック１５外に読み出され、バッファ１００４へ書き込まれてもよい。同一の処理は、Ｓ−ブロック全体が処理されるまで、Ｓ−ブロック１５をカバーする他のＳ−ジャーナルのために用いられてもよい。図１９にも示されるように、参照番号１００６では、Ｓ−ブロック１５は、無効なデータのみを含む。これは、Ｓ−ブロック１５についてのＳ−ジャーナルにおけるエントリにより有効と示されるデータが保存されており、新たなＳ−ブロックへ直ぐに移動されるためである。図示された例では、システムＳ−ブロック１８０４のＳ−ブロック１５の例示的なＳ−ジャーナルにおけるエントリが、このような無効なデータを指し示すとき、当該Ｓ−ジャーナルは、ハッシュされるように示され、現在使用されていないことを示す。論理物理アドレス変換マップ１８０２は、その後、更新され、バッファ１００４へ読み出された有効なデータについての新たなＥ−ページ開始アドレスを生成する。論理物理アドレス変換マップの更新時に、マップは、有効なエントリについて再度チェックされる、及びマップ更新処理時にロックされて、原子性（ａｔｏｍｉｃｉｔｙ）を保証してもよいことを留意すべきである。有効なデータは、Ｓ−ジャーナル１００５において生成される新たなＳ−ジャーナルエントリも必要とし、これは、一実施形態では、コールドＳ−ブロック１８０１に対するものである。
【００３９】
一実施形態では、有効なデータは、その後、図２０に示されるように、コールドＳ−ブロック１８０１へ書き出されてもよい（ホットＳ−ブロックは、直近に書き込まれたホストデータのために使用され、ガベージコレクションされたデータには使用されない）。しばらく後に（例えば、十分な数のエントリが追加された（ｐｏｐｕｌａｔｅｄ）後）、Ｓ−ジャーナル１００５は、システムバンドにおけるシステムＳ−ブロック１８０４に書き出されてもよい。Ｓ−ブロック１５は、ここで、ガベージコレクションが行われており、ユーザＳ−ブロック情報９０６は、Ｓ−ブロック１５全体が空き領域であることを示している。Ｓ−ブロック１５は、その後、消去され、そのＰＥＲＩＳＨカウントが更新され、新たな書き込みのために利用可能となる。無効なＳ−ジャーナルもシステムＳ−ブロック１８０４に存在していることを留意すべきである。この無効なＳ−ジャーナルにより占められるシステムバンドにおけるフラッシュメモリの領域は、しばらく後にガベージコレクションが行われてもよい。
【００４０】
システムＳ−ブロックでのガベージコレクション
図２２−２６は、一実施形態に係る、システムブロックのガベージコレクションを行う態様を示すブロック図である。図２２−２６に展開される例では、図２２の参照番号２２０８で示されるシステムＳ−ブロック３は、ガベージコレクションのために選ばれたものと仮定する。システムＳ−ブロックが選ばれると、選ばれたシステムＳ−ブロック内の全てのＥ−ページ（及び拡張により、そこに含まれる全てのＳ−ジャーナル）は、バッファ１００４へ（連続的に又は非連続的に）読み出される。
【００４１】
図２３に示されるように、バッファ１００４へ読み出されたＳ−ジャーナルの１以上についてのＳ−ジャーナル番号は、その後、Ｓ−ジャーナルのヘッダから抽出されてもよい。このような各システムＳ−ジャーナル番号は、その後、Ｓ−ジャーナルマップ２２０２にルックアップするために使用され、対応するＳ−ジャーナルが有効であるかどうかを判定する。一実施形態によれば、無効なＳ−ジャーナルは、そのＳ−ジャーナル番号が、Ｓ−ジャーナルマップ２２０２における対応するエントリによって一致されないＳ−ジャーナルであり、これは、Ｓ−ジャーナルが物理的に記憶される、最も更新された情報を有する。例えば、Ｓ−ジャーナル番号“１２３４５”についてのＳ−ジャーナルマップ２２０２におけるエントリが、システムＳ−ブロック１２０内のＥ−ページを指し示す場合、Ｓ−ブロック３におけるＳ−ジャーナル“１２３４５”のコピー（Ｓ−ブロックは、ガベージコレクションが行われる）は、使用されない。同様に、Ｓ−ジャーナルマップエントリが、Ｓ−ジャーナル“１２３４５”が存在するＳ−ブロック３からのＥ−ページを指し示す場合、Ｓ−ジャーナル“１２３４５”は、有効である。
【００４２】
一実施形態では、ガベージコレクションが行われた有効なＳ−ジャーナルは、有効及び無効なエントリが混ざったものを含んでもよく、よって、エントリの個別のチェックが必要である。図２４に示されるように、各有効なＳ−ジャーナル２４０２における各エントリは、その後、メモリの論理物理アドレス変換マップ１８０２における対応するエントリと一致されてもよい。つまり、各Ｓ−ジャーナルエントリにより参照されるＬ−ページのＥ−ページアドレスは、論理物理アドレス変換マップ１８０２で特定されるＬ−ページのＥ−ページアドレスと比較されてもよい。２つが一致する場合、当該Ｓ−ジャーナルは有効である。一実施形態によれば、Ｓ−ジャーナルにおけるＥ−ページ内のＥ−ページアドレス及びオフセットを、論理物理アドレス変換マップ１８０２で特定されるＬ−ページのＥ−ページ内のＥ−ページアドレス及びオフセットと比較する必要がある場合がある。逆に、Ｓ−ジャーナルにおけるＬ−ページについてのＥ−ページアドレス（又はＥ−ページアドレス及びオフセット）が、アドレス変換マップ１８０２における当該Ｌ−ページについてのエントリにおけるＥ−ページアドレス（又はＥ−ページアドレス及びオフセット）が一致しない場合には、Ｓ−ジャーナルにおける当該エントリは、有効ではない。
【００４３】
一実施形態によれば、有効なエントリが、Ｓ−ジャーナル２４０２で特定されると、それらは、図２５に示されるように、Ｓ−ジャーナル２４０２の新たなバージョン２５０２へコピーされてもよい。Ｓ−ジャーナル２５０２は、一実施形態によれば、Ｓ−ジャーナル２４０２と同一のＳ−ジャーナル番号を有してもよい。このように、ＧＣのために選ばれたＳ−ブロックからバッファ１００４へロードされた各Ｓ−ジャーナルは、先ず、ジャーナルレベルにおいて有効であるか無効であるかを判定され、有効である場合には、有効なエントリのみを含むようにコンパクトにされる。一実施形態によれば、無効なＳ−ジャーナルエントリは、単に、Ｓ−ジャーナル２５０２の新たなバージョンにコピーされない。よって、Ｓ−ジャーナルの新たなバージョン２５０２は、その古いバージョン２４０２よりも小さくなり（つまり、より少ないエントリを含む）、Ｓ−ジャーナル２４０２は、１以上の使われないエントリを有することとなる。Ｓ−ジャーナルが有効なエントリを全て有する場合、その新たなバージョンのサイズは、同一に維持されるであろうことを留意すべきである。
【００４４】
図２６に示されるように、Ｓ−ジャーナル２５０２（Ｓ−ジャーナル２４０２の新たなバージョン、これは、無効又は使われない）は、その後、現在のオープンシステムＳ−ブロックへ書き込まれ、図２６では、オープンシステムＳ−ブロック１、つまり、参照番号２２０６である。その後、Ｓ−ジャーナルマップ２２０２は、オープンシステムＳ−ブロック１においてＳ−ジャーナル２５０２の新たな位置で更新されてもよい。この処理の最後には、システムＳ−ブロック３におけるＳ−ジャーナル（２２０８）は、ガベージコレクションが行われ、システムＳ−ブロック３は、消去され、将来の書き込みのために利用可能となる。
【００４５】
本開示の特定の実施形態が説明されてきたが、これらの実施形態は、例示のために示されているものであり、本開示の範囲を限定することを意図するものではない。実際、本明細書に説明される新規な方法、デバイス及びシステムは、各種の他の形態で具現化されてもよい。更に、本明細書で説明された方法及びシステムの形態の様々な省略、置き換え及び変更は、本開示の趣旨から逸脱しない範囲でなされてもよい。添付の特許請求の範囲及びそれらの等価物は、本開示の範囲及び趣旨の範囲内であるとして、このような形態又は修正を包含することが意図される。例えば、当業者は、各種実施形態において、実際の物理及び論理構造が図面に示されたものとは異なることを理解するであろう。実施形態に応じて、上記の実施例で説明された特定のステップは、除去され、別のものが追加されてもよい。また、上記に開示された特定の実施形態の特徴及び特質は、別の実施形態を形成するために異なる手法で組み合わせられてもよく、その全てが本開示の範囲に及ぶ。本開示は、特定の好ましい実施形態及び用途を提供するが、本明細書で明らかにされた特徴及び利点のすべてを提供しない実施形態を含む、当業者にとって自明な他の実施形態もまた本開示の範囲内である。したがって、本開示の範囲は、添付の特許請求の範囲を参照することによってのみ定義されることを意図するものである。
【図１】
2015530685.tif 000003
【図２】
2015530685.tif 000004
【図３】
2015530685.tif 000005
【図４】
2015530685.tif 000006
【図５】
2015530685.tif 000007
【図６】
2015530685.tif 000008
【図７】
2015530685.tif 000009
【図８】
2015530685.tif 000010
【図９】
2015530685.tif 000011
【図１０】
2015530685.tif 000012
【図１１】
2015530685.tif 000013
【図１２】
2015530685.tif 000014
【図１３】
2015530685.tif 000015
【図１４】
2015530685.tif 000016
【図１５】
2015530685.tif 000017
【図１６】
2015530685.tif 000018
【図１７】
2015530685.tif 000019
【図１８】
2015530685.tif 000020
【図１９】
2015530685.tif 000021
【図２０】
2015530685.tif 000022
【図２１】
2015530685.tif 000023
【図２２】
2015530685.tif 000024
【図２３】
2015530685.tif 000025
【図２４】
2015530685.tif 000026
【図２５】
2015530685.tif 000027
【図２６】
2015530685.tif 000028
【国際調査報告】
2015530685.tif 000029
2015530685.tif 000030