IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーションの特許一覧

特表2024-511385コピーオンライトを使用するon-SSDコピー技法
<>
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図1
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図2
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図3A
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図3B
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図3C
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図4
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図5
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図6
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図7
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図8
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図9
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図10
  • 特表-コピーオンライトを使用するon-SSDコピー技法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-13
(54)【発明の名称】コピーオンライトを使用するon-SSDコピー技法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20240306BHJP
   G06F 12/00 20060101ALI20240306BHJP
【FI】
G06F12/02 570H
G06F12/00 597U
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023557122
(86)(22)【出願日】2022-03-16
(85)【翻訳文提出日】2023-11-09
(86)【国際出願番号】 US2022020595
(87)【国際公開番号】W WO2022197833
(87)【国際公開日】2022-09-22
(31)【優先権主張番号】17/203,174
(32)【優先日】2021-03-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523351302
【氏名又は名称】エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リ、ペン
(72)【発明者】
【氏名】トライカ、サンジーブ エヌ.
(72)【発明者】
【氏名】エストラーダ、デイヴィッド シー.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AB26
(57)【要約】
コピーオンライト(COW)を使用するon-SSDコピー技法は、データを複製することなくコピー済みデータに対する間接更新を追跡する。1つの例では、方法は、送信元LBAから送信先LBAにデータをコピーするコピーコマンドを受信することを伴う。送信先LBAに対応する論理/物理(L2P)テーブルにおけるエントリは、L2Pテーブルにおける送信元LBAのエントリと同じ物理アドレスを参照するように更新される。L2Pテーブルにおけるフラグは、1つよりも多くのLBAが同じ物理アドレスを参照することを示すために更新される。L2Pテーブルを更新した後であって、データをコピーする前に、トークンがストレージデバイスに記憶される。トークンを記憶した後であるが、データをコピーする前に、コピーコマンドが完了したことを示す確認応答をホストに送信することができる。送信元又は送信先LBAのいずれかへの後続の書き込みが、データのコピーをトリガする。
【特許請求の範囲】
【請求項1】
アクセスされると、方法を実行する動作の実行を引き起こすコンテンツが記憶されたコンピュータ可読ストレージ媒体を備える製造品であって、前記方法は:
不揮発性ストレージデバイスにおいて、送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信する段階;
前記送信先LBAを、前記送信元LBAと同じ物理アドレスにマッピングするように論理/物理(L2P)テーブルを変更する段階;
1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信元LBA及び前記送信先LBAに対応する前記L2Pテーブルにおけるフラグを更新する段階;
前記L2Pテーブルを変更し、前記フラグを設定した後であって、前記データをコピーする前に、前記コピーコマンドが完了したことを示すトークンを前記不揮発性ストレージデバイスに記憶する段階;及び
前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信する段階
を有する、製造品。
【請求項2】
前記トークンは、シグネチャを含み、前記シグネチャは、前記トークンがコピーコマンドトークンであることを示す数を含む、請求項1に記載の製造品。
【請求項3】
前記トークンは:前記送信元LBA、前記送信先LBA、及びコピーすべきブロックの数を含む、請求項2に記載の製造品。
【請求項4】
前記トークンは:前記トークンが破損しているか否かを示すチェックサムを含む、請求項2に記載の製造品。
【請求項5】
前記物理アドレスを前記送信先LBA及び前記送信元LBAの両方に関連付けるように物理/論理(P2L)テーブルを更新する段階を更に備える、請求項1から4のいずれか一項に記載の製造品。
【請求項6】
前記P2Lテーブルは、1つよりも多くのLBAによって参照される物理アドレスのサブセットをマッピングする、請求項5に記載の製造品。
【請求項7】
前記送信先LBAを、前記送信元LBAと同じ物理アドレスに指向するように前記L2Pテーブルを変更する前に、第2の物理アドレスを前記送信先LBAに関連付ける前記P2Lテーブルのエントリを除去する段階を更に備える、請求項5又は6に記載の製造品。
【請求項8】
前記送信元LBA又は前記送信先LBAに書き込む書き込みコマンドの受信に応答して、新たなページを割り当てる段階、
前記データを前記新たなページにコピーする段階、及び
1つのみのLBAが同じ物理アドレスを参照することを示すために前記フラグを更新する段階
を更に備える、請求項1から7のいずれか一項に記載の製造品。
【請求項9】
送信元バンドの有効ページを送信先バンドに移行させるためにデフラグメンテーション(デフラグ)動作を実行する段階を更に備え、前記デフラグ動作は、P2Lテーブルにおけるエントリを有する前記送信元バンドにおける物理アドレスごとに、前記物理アドレスに対応する前記L2Pテーブルにおける全てのエントリを、前記送信先バンドにおける新たな物理アドレスに更新する段階を有する、請求項1から8のいずれか一項に記載の製造品。
【請求項10】
前記トークンを記憶する段階は、記憶すべきトークンの数が所定の数よりも多くなるまで遅延される、請求項1から9のいずれか一項に記載の製造品。
【請求項11】
NANDメモリアレイ;及び
前記NANDメモリアレイと結合された制御ロジック
を備え、前記制御ロジックは:
送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信すること;
前記送信元LBAに対応する論理/物理(L2P)テーブルにおける第2のエントリと同じ物理アドレスを参照するように、前記送信先LBAに対応する前記L2Pテーブルにおけるエントリを更新すること;
1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信先LBAに対応する前記エントリ及び前記送信元LBAに対応する前記エントリのフラグを更新すること;
前記L2Pテーブルにおける前記エントリ及び前記第2のエントリの更新の後であって、前記データがコピーされる前に、前記コピーコマンドが完了したことを示すトークンを前記NANDメモリアレイに記憶すること;及び
前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信すること
を行う、ストレージデバイス。
【請求項12】
前記トークンは、シグネチャを含み、前記シグネチャは、前記トークンがコピーコマンドトークンであることを示す数を含む、請求項11に記載のストレージデバイス。
【請求項13】
前記トークンは:前記送信元LBA、前記送信先LBA、及びコピーすべきブロックの数を含む、請求項12に記載のストレージデバイス。
【請求項14】
前記トークンは:前記トークンが破損しているか否かを示すチェックサムを含む、請求項12に記載のストレージデバイス。
【請求項15】
前記制御ロジックは、前記物理アドレスを前記送信先LBA及び前記送信元LBAの両方に関連付けるように物理/論理(P2L)テーブルを更新する、請求項11から14のいずれか一項に記載のストレージデバイス。
【請求項16】
前記P2Lテーブルは、1つよりも多くのLBAによって参照される物理アドレスのサブセットをマッピングする、請求項15に記載のストレージデバイス。
【請求項17】
前記制御ロジックは:前記送信先LBAを、前記送信元LBAと同じ物理アドレスに指向するように前記L2Pテーブルを変更する前に、第2の物理アドレスを前記送信先LBAに関連付ける前記P2Lテーブルのエントリを除去する、請求項15又は16に記載のストレージデバイス。
【請求項18】
前記制御ロジックは、前記送信元LBA又は前記送信先LBAに書き込む書き込みコマンドの受信に応答して:
新たなページを割り当てること、
前記データを前記新たなページにコピーすること、及び
1つのみのLBAが同じ物理アドレスを参照することを示すために前記フラグを更新すること
を行う、請求項11から17のいずれか一項に記載のストレージデバイス。
【請求項19】
プロセッサ;及び
前記プロセッサと結合されたNANDストレージデバイスを備え、前記NANDストレージデバイスは:
NANDメモリアレイ;及び
前記NANDメモリアレイと結合された制御ロジック
を有し、前記制御ロジックは:
送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信すること;
前記送信元LBAに対応する論理/物理(L2P)テーブルにおける第2のエントリと同じ物理アドレスを参照するように、前記送信先LBAに対応する前記L2Pテーブルにおけるエントリを更新すること;
1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信先LBAに対応する前記エントリ及び前記送信元LBAに対応する前記エントリのフラグを更新すること;
前記L2Pテーブルにおける前記エントリ及び前記第2のエントリの更新の後であって、前記データがコピーされる前に、前記コピーコマンドが完了したことを示すトークンを前記NANDメモリアレイに記憶すること;及び
前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信すること
を行う、システム。
【請求項20】
前記プロセッサと結合されたディスプレイ、前記プロセッサと結合されたネットワークインターフェース、及び前記システムを給電するバッテリのうちの1つ又は複数を備える、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、概して、NANDフラッシュメモリ等の不揮発性ストレージ媒体に関し、具体的には、on-SSDコピー技法に関する。
【背景技術】
【0002】
ソリッドステートドライブ、ハードディスクドライブ、及びメモリデバイス等のストレージデバイス上のデータコピー動作は、コンピュータシステムにおける共通の動作である。データコピー動作は、ユーザ又はシステム始動であり得、送信元ロケーションから送信先ロケーションにデータをコピーするのに使用される。データコピー動作の過剰な使用は、コンピュータシステムにおける性能に影響を及ぼし得、これはなぜならば、ホストが後続のタスクを実行する前に完了すべきデータコピー動作を待機するためである。
【図面の簡単な説明】
【0003】
以下の説明は、本発明の実施形態の実装の例として与えられる図示を有する図の論述を含む。図面は、限定としてではなく例として理解されるべきである。本明細書において使用される場合、1つ又は複数の「実施形態」又は「例」への言及は、本発明の少なくとも1つの実装に含まれる特定の特徴、構造、及び/又は特性を説明しているものと理解されたい。それゆえ、本明細書において現れる「1つの実施形態では」又は「1つの例では」等の語句は、本発明の様々な実施形態及び実装を説明し、必ずしも全てが同じ実施形態を指すとは限らない。一方、それらはまた、必ずしも相互に排他的であるとは限らない。
【0004】
図1】不揮発性メモリ(NVM)デバイスを含む例示のシステムのブロック図である。
【0005】
図2】NVMデバイスの一例のブロック図である。
【0006】
図3A】on-SSDコピーオンライト動作を実行することが可能なNVMデバイスについての論理/物理(logical-to-physical:L2P)テーブルの一例を示す図である。
【0007】
図3B】on-SSDコピーオンライト動作を実行することが可能なNVMデバイスについてのサブセット物理/論理(physical-to-logical:P2L)テーブルの一例を示す図である。
【0008】
図3C】NAND媒体上にP2Lテーブルの少なくとも一部分を、及びDRAMにP2Lテーブルの少なくとも一部分を記憶する一例のブロック図である。
【0009】
図4】on-SSDコピーオンライト動作を実行する方法のフロー図である。
【0010】
図5】on-SSDコピーコマンドのための機能を実行する擬似コードの一例である。
図6】on-SSDコピーコマンドのための機能を実行する擬似コードの一例である。
図7】on-SSDコピーコマンドのための機能を実行する擬似コードの一例である。
図8】on-SSDコピーコマンドのための機能を実行する擬似コードの一例である。
【0011】
図9】デフラグメンテーション(デフラグ)方法の一例のフロー図である。
【0012】
図10】デフラグ動作のための擬似コードの一例である。
【0013】
図11】データコピー技法を実装することができるコンピューティングシステムの例示的な図示を提供する図である。
【0014】
以下で説明される実施形態の一部又は全てを示し得る図面の説明を含み、及び本明細書において提示される本発明の概念の他の潜在的な実施形態又は実装を論述する、特定の詳細及び実装の説明が以下に続く。
【発明を実施するための形態】
【0015】
コピーオンライトを使用するon-SSDコピー技法は、改善されたコピー性能、媒体耐久性、論理/物理容量、電力消費、及び内部読み出し/書き込み帯域幅を可能にすることができる。
【0016】
データコピー動作は、実世界用途において一般的である。
「on-SSDコピー」は、データをホストメモリに移行させることなくSSD(ソリッドステートドライブ)内部にデータをコピーする技法である。on-SSDコピーは、大きいデータペイロードを有するコピーコマンドのためのホスト性能を著しく改善することができる。
【0017】
しかしながら、on-SSDコピー動作は、媒体耐久性、電力、及び内部読み出し/書き込み帯域幅を著しく消費し得る。加えて、従来のon-SSDコピー動作は、SSDの物理及び論理容量を節約しない。
【0018】
対照的に、コピーオンライト(COW)を使用するon-SSDコピー技法は、データを複製することなくコピー済みデータに対する間接更新を追跡し、それゆえ、コピーオンライトを使用するon-SSDコピーは、コピー性能を著しく高め、媒体耐久性及び論理/物理容量を節約し、電力消費を削減し、内部読み出し/書き込み帯域幅を改善する。
【0019】
1つの例では、on-SSDコピーを実行する方法は、不揮発性ストレージデバイスにおいて、送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信することを伴う。送信先LBAに対応する論理/物理(L2P)テーブルにおけるエントリが、L2Pテーブルにおける送信元LBAのエントリと同じ物理アドレスを参照するように、更新される。L2Pテーブルにおけるフラグは、1つよりも多くのLBAが同じ物理アドレスを参照することを示すために更新される。L2Pテーブルを更新した後であって、データをコピーする前に、コピーコマンドが完了したことを示すトークンが、不揮発性ストレージデバイスに記憶される。トークンを記憶した後であるが、データをコピーする前に、コピーコマンドが完了したことを示す確認応答をホストに送信することができる。送信元又は送信先LBAのいずれかへの後続の書き込みが、データのコピーをトリガする。
【0020】
図1は、不揮発性メモリ(NVM)又はストレージデバイスを含む例示のシステムのブロック図である。システム100は、本明細書において説明されるon-SSDコピー技法を実装し得るシステムの一例である。
【0021】
システム100は、ホスト150、及び不揮発性ストレージ又は不揮発性メモリ(NVM)デバイス120を含む。NVMデバイス120は、ソリッドステートドライブ(SSD)又は他の不揮発性メモリデバイス又はドライブであってよい。ホスト150及びNVMデバイス120は、コンピュータのパッケージの範囲内(例えば、ラップトップ/ノートブック、サーバ、又は他のコンピュータ内)に存在するシステムの一例とすることができる。他の例では、NVM120は、ローカルエリアネットワーク(例えば、Ethernet(登録商標)ネットワーク)、又はワイドエリアネットワーク(例えば、ワイヤレスセルラーネットワーク、インターネット等)等のより大きいネットワークを介してアクセスされてよい。そのような例は、NVMe-oF(non-volatile memory express over fabrics:不揮発性メモリエクスプレスオーバーファブリック)等の規格と適合し得る。ホスト150は、1つ又は複数のプロセッサ152、メモリ154、ストレージコントローラ114、及び明確性のために図面から省略されている他のコンポーネントを含む。
【0022】
NVMデバイス120は、データを記憶する1つ又は複数のメモリアレイ132を含む。アレイ132は、メモリセルに1つ又は複数のビットを記憶することができるメモリ又はストレージ媒体とすることができる。1つの例では、アレイは、以下で論述される図2において示されるNANDストリング等のメモリセルのストリングを含む。1つの例では、NVMデバイス120は、複数のプレーン又はグループに各々が分割された1つ又は複数の不揮発性メモリダイを含む。NANDフラッシュメモリは、典型的には、ブロックアドレス指定可能である。典型的なNANDダイは、ダイごとに複数のプレーンを有する。1つのプレーンは、複数のブロックにグループ化され得る複数のメモリセルを含む。ブロックは、典型的には、NANDフラッシュダイにおける最小消去可能エンティティである。1つの例では、1つのブロックは、同じビット線に結合されている複数のセルを含む。1つのブロックは、セルの1つ又は複数のページを含む。ページのサイズは、実装に依存して異なり得る。1つの例では、ページは、16kBのサイズを有する。16kBよりも小さい又はそれよりも大きいページサイズも可能である(例えば、512B、2kB、4kB等)。1つの例では、NVMデバイス120は、マルチ閾値レベルNANDフラッシュメモリを使用するメモリデバイスを含むことができる。アレイ132は、シングルレベルセル(SLC)NANDストレージデバイス、マルチレベルセル(MLC)NANDストレージデバイス、トリプルレベルセル(TLC)NANDストレージデバイス、クワッドレベルセル(QLC)ストレージデバイス、ペンタレベルセル(PLC)、及び/又は他の何らかのNANDを含むことができる。
【0023】
NVMデバイス120は、それぞれのインターフェース121及び156を使用してホストシステム150と通信する。1つの例では、インターフェース156は、周辺制御ハブ(PCH)の一部である。図1において示されている例では、ホストは、NVMデバイス120と通信するとともにこれを制御するためにインターフェース156を介してNVMデバイス120と結合されているコントローラ114を含む。示された例では、NVMデバイス120は、インターフェース121を介してホスト150等のコンピューティングプラットフォームと結合されているコントローラ104を含む。1つの例では、コントローラ104は、ASIC(特定用途向け集積回路)である。1つの例では、インターフェースは、PCIエクスプレス(PCIe)、シリアルアドバンストテクノロジアタッチメント(ATA)、パラレルATA、ユニバーサルシリアルバス(USB)、及び/又は他のインターフェースプロトコル等の規格と適合する。コントローラ104は、NANDダイ130からデータを読み出すか、又はNANDダイ130にデータを書き込むためにコンピューティングプラットフォームの要素と通信することができる。本開示では、「ホスト」という用語はプロセッサ(又は不揮発性メモリに記憶されたデータにアクセスするリクエストを送信する他のデバイス)及びNANDと通信するためのインターフェースを有するシステム(例えば、ホスト150)を指しているが、幾つかの実装は、コントローラ104を、NANDダイ130に対する「ホスト」と称し得る。
【0024】
コントローラ104は、ホスト150からリクエストを受信し、アレイ132のアクセスに関する(例えば、データを読み出す、データを書き込む又は消去する)コマンドを生成及び実行するように構成することができる。他のコマンドは、例えば、ステータスを読み出すコマンド、構成設定を変更するコマンド、再設定コマンド等を含んでよい。コントローラは、ハードウェア(例えば、回路)、ソフトウェア、ファームウェア、又はハードウェア、ソフトウェア及びファームウェアの組み合わせを用いて実装することができる制御ロジックを含む。論理回路の例としては、専用配線論理回路(例えば、1つ又は複数の状態機械論理回路を含む)、プログラマブル論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、及びプログラマブルロジックアレイ(PLA))が挙げられる。1つの例では、論理回路は、SSDファームウェア(例えば、埋め込みプロセッサ、埋め込みコントローラ等)等の何らかの形式のプログラムコードを実行するように設計されている。
【0025】
NVMデバイス120は、コントローラ104と結合されたメモリ117を含んでよく、当該メモリ117は、不揮発性媒体からのデータをキャッシュするとともに、コントローラ104によって実行されるファームウェア115を記憶するのに使用することができる。1つの例では、メモリ117は、揮発性メモリである。揮発性メモリは、電力がデバイスに対して遮断される場合、その状態(したがって、それに記憶されたデータ)が不確定であるメモリである。ダイナミック揮発性メモリは、状態を維持するためにデバイスに記憶されたデータをリフレッシュすることを要求する。ダイナミック揮発性メモリの1つの例としては、DRAM(ダイナミックランダムアクセスメモリ)、又はシンクロナスDRAM(SDRAM)等の何らかの変形が挙げられる。本明細書において説明されるようなメモリサブシステムは、DDR3(Double Data Rateバージョン3、2007年6月27日にJEDEC(電子機器技術評議会)によってオリジナルリリースされた)、DDR4(DDRバージョン4、JEDECによって2012年9月に当初公開された)、DDR5(DDRバージョン5、2020年7月に当初公開された)、LPDDR3(Low Power DDRバージョン3、JESD209-3B、JEDECによって2013年8月に当初公開された)、LPDDR4(LPDDRバージョン4、JESD209-4、2014年8月にJEDECによって当初公開された)、LPDDR5(LPDDRバージョン5、JESD209-5A、2020年1月にJEDECによって当初公開された)、WIO2(Wide Input/Outputバージョン2、JESD229-2、2014年8月にJEDECによって当初公開された)、HBM(High Bandwidth Memory、JESD235、2013年10月にJEDECによって当初公開された)、HBM2(HBMバージョン2、JESD235C、2020年1月にJEDECによって当初公開された)、又はHBM3(HBMバージョン3、JEDECによって現在検討中)、又は他のもの等の複数のメモリ技術又はメモリ技術の組み合わせ、及びそのような仕様の派生又は拡張に基づく技術と適合し得る。JEDEC規格は、www.jedec.orgにおいて利用可能である。
【0026】
コントローラ104は、行うべき動作(例えば、読み出し、プログラム、消去、保留、再開、及び他の動作)を引き起こすようにダイ上の回路を制御するか又はこれにコマンドするためにNANDダイ130と結合される。NANDダイ130及びコントローラ104の間の通信は、特定のレジスタに対する書き込み及び/又は特定のレジスタからの読み出しを含んでよい。そのようなレジスタは、コントローラ104内、NANDダイ130上、又はコントローラ104及びNANDダイ130の外部に、存在してよい。ダイ130内のレジスタ又はメモリは、例えば、コントローラ104及びアレイ132を通信可能に結合するためにコントローラ104及びNANDダイ130の間の内部インターフェース(例えば、Open NAND Flash Interface(ONFI)インターフェース、独自インターフェース、又は他のインターフェース)によって、コントローラ104によって到達可能であってよい。入力/出力(I/O)ピン及び信号線は、コントローラ104及びNANDダイ130の間での読み出し及び書き込みデータの送信を可能にするために、コントローラ104をNANDダイ130と通信可能に結合する。I/Oピンは、NANDダイ130のダイ又はプレーンのステータス情報等の他のデータを送信するのに使用されてもよい。NANDダイは、コマンドピン(例えば、コマンドラッチイネーブル(CLE)、アドレスラッチイネーブル(ALE)、チップイネーブル(CE#)、リードイネーブル(RE#)、及びライトイネーブル(WE#))、及び電力及び接地ピン(例えば、Vcc、Vss等)等の他のピンも含むことができる。電圧レギュレータ140は、アクセス回路135、検知回路134、及び/又はアレイ132に1つ又は複数の電圧を提供する回路を表す。
【0027】
NANDダイ130は、アレイ132へのアクセスを制御するアクセス回路135を含む。例えば、アクセス回路135は、コントローラ104から受信されたコマンドに基づいてアクセス動作(例えば、読み出し動作、プログラム動作等)を実行するために、電圧を生成するか、又は当該電圧をアレイ132に印加するためのものである。NANDダイ130上のアクセス回路は、ワード線のうちの1つを選択するか、読み出し電圧を印加するか、ビット線電位レベルと組み合わされたプログラム電圧を印加するか、検証電圧を印加するか、又は消去電圧を印加するためにアレイ132のワード線に結合される。検知回路134及びアクセス回路135は、メモリセルに記憶されたデータを読み出し、プログラム動作中のメモリセルの状態を判定し、プログラミング及び消去を促進又は阻止するようにビット線の電位レベルを制御するために、アレイ132のビット線に結合される。
【0028】
図1における例は、NANDデバイスを参照するが、他の不揮発性メモリデバイスが、本明細書において説明されるon-SSDコピー技法を実装してよい。さらに、この技法は参照を容易にするために「on-SSD」コピーと称されているが、本明細書において説明される技法は、SSD以外のNVMデバイス(例えば、不揮発性メモリを有するデュアルインラインDIMM等のメモリモジュール、又は他のNVMデバイス)上で実装されてよい。
【0029】
図2は、図1のNVMデバイス120のブロック図である。図1に関して上記で言及されたように、NANDコントローラ104は、NANDダイ130と通信するとともにこれを制御するためにメモリ117に記憶されたファームウェア115を実行する。1つの例では、on-SSDコピーオンライト160技法は、ファームウェア115において実装される。図2において示されている例では、on-SSDコピーオンライトを実行するファームウェアは、on-SSDコピー機能161、トリム機能163、書き込み機能165、及びデフラグ機能167を含む。on-SSDコピーオンライトを実装するファームウェアは、同様にメモリ117に記憶された論理/物理(L2P)テーブル151及び物理/論理(P2L)テーブル153を変更することを指す。テーブル151及び153は、ファームウェア115と同じメモリに記憶されているものとして示されているが、NVMデバイス120は、ファームウェア及びマッピングテーブルを記憶する1つよりも多くのメモリ又はストレージデバイスを含んでよい。NAND媒体(例えば、アレイ132)は、データ169を記憶する。NAND媒体は、メモリに記憶されたL2P及びP2Lテーブルのバックアップ155、157を記憶してもよい。on-SSDコピーオンライト動作を実行する際に、ファームウェア115は、on-SSDコピーコマンドが完了したときを示すトークン159をNAND媒体に記憶する。
【0030】
図3Aは、on-SSDコピーオンライト動作を実行することが可能なNVMデバイスについての論理/物理(L2P)テーブルの一例を示している。L2Pテーブル151は、論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA、物理アドレス、又はNANDアドレス)にマッピングするマッピングテーブルである。従来のL2Pテーブルとは異なり、L2Pテーブル151は、各エントリ又はLBAに対応する追加の参照フラグを含む。参照フラグは、LBAによって指向される物理アドレスが1つよりも多くのLBAによって参照されるか否かを示す1つ又は複数のビットを含む。示された例では、参照フラグは、NANDアドレスが複数のL2Pエントリによって参照されるか否かを示す、エントリごとの1つのビットを含む。図3Aにおいて示されている例では、LBA A及びBは、同じNANDアドレスXを指向する。したがって、LBA A及びLBA Bの両方に対応するL2Pエントリのために設定される参照フラグは、1つよりも多くのLBAがその物理アドレスを参照することを示す値に設定される。
【0031】
図3Aにおいて示されている例では、参照フラグは、1つよりも多くのLBAが同じ物理アドレスを指向することを示すために「1」に設定され、1つよりも多くのLBAが同じ物理アドレスを指向しない(例えば、1つのみのLBAがその物理アドレスを指向する)ことを示すために「0」に設定される。しかしながら、参照フラグのための異なる慣習が使用されてよい。例えば、他の慣習は、1つよりも多くのLBAが同じ物理アドレスを指向することを示すためにフラグを「0」に設定してよい。別の例では、1つよりも多くのLBAが同じ物理アドレスを指向することを示すために1つよりも多くのビットが使用される。例えば、参照フラグは、同じ物理アドレスを指向するLBAの数のカウントを含んでよい。
【0032】
図3Bは、on-SSDコピーオンライト動作を実行することが可能なNVMデバイスについてのサブセット物理/論理(P2L)テーブルの一例を示している。サブセットP2Lテーブル153は、所与の物理NANDアドレスを、その物理アドレスを参照する全てのL2Pエントリにマッピングする。全てのNANDアドレスをマッピングする代わりに、それは、1つよりも多くのL2Pエントリ(例えば、1つよりも多くのLBA)によって参照されるNANDアドレスのみをマッピングする。1つの例では、サブセットP2Lテーブルは、チェイン法を用いるハッシュテーブルを使用して実装される。標準的な挿入、ルックアップ、及び/又は削除アルゴリズムの任意のセットが、P2Lテーブル153を更新するのに使用されてよい。1つの例では、サブセットP2Lテーブル153は、L2Pテーブル151の拡張領域としてDRAMに記憶され、バックアップ又は再生目的で周期的にNAND媒体にドロップされ得る。
【0033】
それゆえ、示された例では、P2Lテーブル153は、1つよりも多くの論理アドレスによって指向される物理アドレスのみを記憶し、したがって、典型的には、全ての物理アドレスのサブセットを記憶することになる。図3Bにおいて示されている例では、物理アドレスXは、2つの論理アドレス(A及びB)が物理アドレスXを参照するので、P2Lテーブル153において2つのエントリを有する。物理アドレスYは、1つのみの論理アドレス(C)が物理アドレスYを参照するので、サブセットP2Lテーブル153にはない。
【0034】
サブセットP2Lテーブルは、DRAMに記憶されているとともに、NAND媒体上にバックアップされているものとして前述で示されている(例えば、図2を参照されたい)。しかしながら、別の例では、サブセットP2Lテーブルの少なくとも一部分が、NAND媒体上に記憶され、P2Lテーブルの少なくとも一部分が、DRAMに記憶される。例えば、ホストが多くのコピーコマンドを発行する事例を検討する。受信されるコピーコマンドの数が十分に大きい場合、サブセットP2Lテーブルサイズは、L2Pテーブルサイズと同じ大きさか、又は更にはこれよりも大きくなるまで拡大し得る。1つの例では、サブセットP2Lテーブルサイズは、バッキング媒体としてNAND媒体を用いて、及び電力障害時にダーティエントリを保存するためにPLIエネルギーを使用して、それをSSD内部DRAM内にキャッシュするライトバックによって制限され得る。図3Cは、NAND媒体上にP2Lテーブルの少なくとも一部分を、及びDRAMにP2Lテーブルの少なくとも一部分を記憶する一例のブロック図である。図3Cにおいて見て取ることができるように、サブセットP2Lテーブル153Aの全てのうちの一部分が、NANDアレイ132に記憶され、サブセットP2Lテーブルの一部分がメモリ117上に記憶される。1つの例では、サブセットP2Lテーブル153A全体がNAND媒体上に記憶され、それは、DRAM上にキャッシュされる。1つのそのような例では、メモリ117に記憶されたサブセットP2Lテーブル153Bの部分は、サブセットP2Lテーブル153A上の最も最近に及び/又は頻繁にアクセスされたエントリを記憶する。別の例では、サブセットP2Lテーブル153Bの一部分がメモリ117に記憶され、サブセットP2Lテーブル153Aの残りの部分がNAND媒体に記憶される、サブセットP2Lテーブルに対する階層化手法が実装される。
【0035】
それゆえ、サブセットP2Lテーブルは、(図2において示されているように)DRAM上のみに記憶され、NAND媒体にバックアップされてもよいし、又は(図3Cにおいて示されているように)DRAM及びNAND媒体の両方の上に記憶されてもよい。サブセットP2LテーブルがDRAM及びNAND媒体の両方にわたって記憶される1つの例では、サブセットP2LテーブルのエントリがDRAM及びNAND媒体の間で分割される階層化手法が使用される。サブセットP2LテーブルがDRAM及びNAND媒体の両方にわたって記憶される別の例では、サブセットP2Lテーブル全体がNAND媒体上に記憶され、かつそれらのエントリのサブセットがDRAM上に記憶(又はキャッシュ)されるキャッシュ手法が使用される。
【0036】
図4は、on-SSDコピーオンライト動作を実行する方法のフロー図である。方法400は、NVMデバイスにおけるコントローラ等のハードウェア(例えば、回路)、ファームウェア、又はハードウェア及びファームウェアの組み合わせによって実行されてよい。1つの例では、方法400は、NVMデバイス上のメモリに記憶されたファームウェアを実行するNVMデバイス上のASICコントローラによって実行される。例えば、図2を参照すると、NANDコントローラ104は、ファームウェア115における、方法400を実行する命令を実行することができる。
【0037】
図4の方法400は、402において、不揮発性ストレージデバイスにおいて、コピーコマンドをホストから受信することから開始する。例えば、図1を参照すると、NVMデバイス120は、送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドを、ホスト150から受信する。コマンドは、インターフェースを介して(例えば、インターフェース156及び121を介して)送信される。それゆえ、ホストは、コピーコマンドをNVMデバイスに送信する入力/出力(I/O)回路を含み、NVMデバイス120は、1つ又は複数のプロトコルに従ってホストからコマンドを受信する入力/出力(I/O)回路を含む。送信元アドレス及び送信先アドレスに加えて、コマンドは、コピーすべきブロック(又はメモリ単位の他の粒度)の数を含むか、又はこれを指定することができる。
【0038】
コピーコマンドを受信した後、NVMデバイス上のコントローラは、404において、送信先LBAを、送信元LBAと同じ物理アドレスにマッピングするように論理/物理(L2P)テーブルを変更する。例えば、図3Aを参照すると、LBA AにおけるデータがLBA Cにコピーされるべきであることをコピーコマンドが示したシナリオを検討し、LBA Cによって指向される物理アドレスは、LBA Aと同じ物理アドレス(X)を指向するように更新されることになる。1つのそのような例では、送信先LBAを、送信元LBAと同じ物理アドレスに指向するようにL2Pテーブルを変更する前に、異なる物理アドレスを送信先LBAに関連付けるP2Lテーブルのエントリ(存在する場合)は、除去されてよい。同様に送信先アドレスを、送信元アドレスと同じ物理アドレスにマッピングするようにL2Pテーブルを変更する前に、L2Pテーブルにおける送信先アドレスについてのエントリは、「ゼロアウト」又は消去されてよい。例えば、図3Aを参照すると、LBA AにおけるデータがLBA Cにコピーされるべきであるシナリオを検討し、LBA Cに対応する物理アドレス及び参照フラグは、最初に、消去(例えば、ゼロに設定)されることになる。
【0039】
再び図4の方法400を参照すると、406において、送信元LBA及び送信先LBAに対応するL2Pテーブルのフラグは、1つよりも多くのLBAが同じ物理アドレスを参照することを示すために更新される。例えば、図3Aを参照すると、LBA Aにおいて記憶されたデータがLBA Cにコピーされるべきであるシナリオを検討し、LBA A及びLBA Cの両方に対応する参照フラグは、1つよりも多くのLBAが物理アドレスXを指向することを示すために「1」に設定される。この例では、LBA Aについてのフラグは既に「1」に設定されているので、LBA Aに関連付けられたフラグに対する実際の変更はない。一方、LBA Cについてのフラグは、1つよりも多くのLBAが物理アドレスYを参照しないことを示すために「0」に以前に設定されており、したがって、LBA Cに関連付けられたフラグは、「0」から「1」に変更される。
【0040】
再び図4を参照すると、407において、物理/論理(P2L)テーブルも、物理アドレスを送信先LBA及び送信元LBAの両方に関連付けるように更新される。1つの例では、P2Lテーブルは、1つよりも多くのLBAによって参照される物理アドレスのサブセットをマッピングするサブセットP2Lテーブルである。例えば、図3Bを参照すると、LBA AにおけるデータがLBA Cにコピーされるシナリオを検討し、物理アドレスXをLBA Cに関連付けるエントリは、サブセットP2Lテーブル153に追加されることになる。
【0041】
L2Pテーブルを変更した後であって、データをコピーする前に、408において、コピーコマンドが完了したことを示すトークンが不揮発性ストレージデバイスに記憶される。トークンは、on-SSDコピーコマンドに関する情報を含むデータ構造であってよい。1つの例では、トークンは、トークンがコピーコマンドトークンであることを示す一意の番号等の一意のシグネチャを含む。シグネチャに加えて、トークンは、コピー動作についての送信元LBA、コピー動作についての送信先LBA、及びコピーすべきブロックの数を含んでよい。トークンは、トークンが破損しているか又は有効であるかを示すチェックサムを含んでもよい。1つの例では、トークンは、不揮発性媒体に記憶され、ページ又はブロック全体を消費する。例えば、図2を参照すると、on-SSDコピーコマンドトークン159が、アレイ132に記憶される。トークンは、NVMデバイス内にデータの粒度(例えば、ブロック又はページ)よりも小さいサイズを有するデータを含み得るが、トークンは、データのブロック又はページ全体を消費してよい。例えば、データの粒度が4kB NANDページであるNVMデバイスを検討する。1つのそのような例では、トークンは、4kB NANDページ全体を使い果たすか又は消費し得るが、NANDページのごく一部分(例えば、数バイト又は数十バイト)のみがトークンを記憶する。
【0042】
トークンは、NVMデバイスが予期しない電力喪失の場合にL2Pテーブル及びサブセットP2Lテーブルを再構築又は再生することを可能にするのに使用されてよい。1つの例では、再生中、コントローラは、ページ内に何のデータがあるかを確認するために、第1のページから開始して、全てのNANDページをスキャンする。各NANDページは、何がNANDページ内に記憶されているかに関するヘッダ情報を含んでよい。例えば、NANDページヘッダは、コントローラがL2Pテーブルを再構築するために読み出し及び使用するLBAを示してよい。再生中、コントローラがon-SSDコピートークンに遭遇する場合、それは、ホストがコピーコマンドを送信したこと及び当該コピーコマンドの詳細(例えば、送信元及び送信先LBA及びコピーすべきブロックの数)をコントローラに示す。
【0043】
それゆえ、トークンは、コントローラがL2Pテーブル又はP2Lテーブルを再構築することを可能にすることができる。L2Pテーブル及びサブセットP2Lテーブルチェックポイントが周期的にNAND媒体にドロップ(例えば、記憶)され得るので、予期しない電力喪失の事例では、L2P及びサブセットP2Lテーブルの最新のチェックポイントが後続の電力投入においてロードされる。コントローラは、次に、チェックポイントの後の全てのNANDページを再生することによって、最新のL2P及びサブセットP2Lテーブルバックアップを使用して、及びトークンを使用して、再構築することができる。トークンは、コピー動作が実行される時点において(ただし、実際のデータコピーの前に)、又はその後の時点において、記憶されてよい。例えば、トークンの記憶は、記憶すべきトークンの数が所定の数よりも多くなるまで遅延されてよい。例えば、NAND媒体に書き込むべきトークンは、コピー動作ごとにNAND書き込みペナルティを課さないように、蓄積されてよい。トークンを書き込む前にトークンを蓄積することは、小さいコピー(例えば、単一間接単位粒度長のコピー)について有益であり得、これはなぜならば、小さいコピーごとのトークンが、コピー動作の時点において記憶される場合、媒体への書き込みの数は削減されないことがあり、コピーごとにトークンを書き込み、サブセットP2Lを更新し続けることに起因してわずかに増加さえすることがあるためである。
【0044】
再び図4を参照すると、方法400は、410において、コピーコマンドが完了したことを示す確認応答をホストに送信することも含む。確認応答は、L2Pテーブルが更新された後であって、ただし実際のデータコピーが実行される前に送信される。その代わりに、412において、データは、送信元LBA又は送信先LBAに書き込む書き込みコマンドの受信に応答してコピーされる。1つの例では、データをコピーすることは、新たなページを割り当てること、データを当該新たなページにコピーすること、及び1つのみのLBAが同じ物理アドレスを参照することを示すためにL2Pテーブルのフラグを更新することを伴う。
【0045】
図5図8は、NAND SSD上でon-SSDコピーコマンドのための機能を実行する擬似コードの例である。図5図8における例は、特定のパラメータを有する機能を示しているが、一方、より少ない、追加の、又は異なるパラメータが可能である。図5は、L2Pテーブルエントリのための擬似コード500の一例である。ライン502~510は、L2Pテーブルにおけるエントリ(L2P_Entry)についてのデータ構造を定義する。L2Pエントリは、NAND_Address及び1ビットReference_Flagを含む。図3Aを参照すると、NAND_Addressは、物理ブロックアドレスPBAの一例であり、Reference_Flagは、L2P151の参照フラグの一例である。再び図5を参照すると、ライン512において、テーブル(L2P)は、NUM_OF_ENTRIESエントリでインスタンス化される。LBA A及びBが同じNANDアドレスXを指向する一例では、その場合:
【0046】
L2P[A].NAND_Address=x;
【0047】
L2P[A].Reference_Flag=1;
【0048】
L2P[B].NAND_Address=x;
【0049】
L2P[B].Reference_Flag=1;
【0050】
それゆえ、L2Pテーブルは、LBAをNANDアドレスにマッピングする。NANDアドレスに加えて、エントリごとに1ビットのReference_Flagが存在し、これは、NANDアドレスが複数のL2Pエントリによって参照されるか否かを示す。
【0051】
図6は、on-SSDコピーコマンドのための擬似コード600の一例である。図6において示されている例では、ライン602上で、コピーコマンドは、3つのパラメータ:開始送信元LBA(src)、開始送信先LBA(dest)、及びLBAの数(num)を有する。コピーコマンドは、ライン606において、送信先LBAのトリムコマンドを実行する。1つの例では、トリムコマンドは、物理媒体からデータを除去することを伴わない削除コマンドと同様である。その代わりに、マッピング情報は、(例えば、L2Pテーブルにおけるマッピング情報をゼロアウトするか又は消去することによって)除去される。トリムコマンドのための擬似コードの一例が、図7に関してより詳細に以下で説明される。
【0052】
再び図6を参照すると、ライン608~618において、マッピング情報は、送信先LBAについて更新され、送信元及び送信先LBAの両方についての参照フラグは、L2Pテーブルにおいて更新される。ライン612において、送信先LBAについてのNAND_Addressは、送信元LBAについてのNAND_Addressに設定される。ライン614において、送信先LBAに関連付けられたL2PテーブルにおけるエントリについてのReference_Flagは、1に設定される。ライン616において、送信元LBAに関連付けられたL2PテーブルにおけるエントリについてのReference_Flagは、1に設定される。参照フラグは、送信元及び送信先LBAによって指向されるNAND_Addressが1つよりも多くのLBAによって参照されることを示す。
【0053】
ライン620及び622において、サブセットP2Lテーブルが更新される。例えば、物理アドレスを、送信元及び送信先LBAの両方にマッピングするために、エントリがサブセットP2Lテーブルに追加(挿入)される。ライン624において、トークンは、コピー動作が完了したことを示すためにドロップされる(例えば、NAND媒体に記憶される)。1つの例では、トークンは、PLI(電力損失保護)/再生をサポートするためにNAND媒体にドロップされる。ライン624において、ackHostCompletionは、コマンド完了をホストに確認応答するためのコールバック関数である。
【0054】
それゆえ、SSDがコピーコマンドを受信すると、コントローラは、データをコピーすることなくL2Pテーブルを更新する。コントローラはまた、最新のP2Lマッピング情報を追跡するようにP2Lテーブルを更新する。次に、コントローラは、SSDが電力障害の事例に最新のL2P及びP2Lテーブルを再構築することができるように、NAND媒体にトークンをドロップする。トークンがドロップされると、SSDは、コマンド完了をホストに確認応答する。
【0055】
図7は、on-SSDコピーオンライトコマンドのための擬似コードの一例を示しているが、一方、1つの例では、通常のコピーを実行すべきかon-SSDコピーオンライトコマンドを実行すべきかは、コピーのサイズに依存する。例えば、小さいデータのコピー(単一のIU(間接ユニット)、又はサブIU)リクエストが、読み出し+書き込み動作として実行されてよく、より大きいデータのコピー(例えば、1つよりも多くの又は所定の数よりも多くのIUを用いるデータコピー)が、on-SSDコピーオンライトとして実行される。1つのそのような例では、図6の擬似コード600を参照すると、コピーすべきLBAの数(num)がチェックされ、LBAの数が所定の数よりも多い場合、on-SSDコピーオンライト動作が実行される(例えば、ライン606~624)。コピーすべきLBAの数が所定の数よりも少ないか又はこれに等しい場合、読み出し及び書き込み動作が、on-SSDコピーオンライトの代わりに実行される。
【0056】
図7は、トリムコマンドのための擬似コード700の一例である。図7において示されている例では、トリムコマンドは、ライン702上に示されているように、2つのパラメータ:開始送信元LBA(src)及びトリムすべきLBAの数(num)を有する。
【0057】
1つの例では、L2Pエントリが、参照フラグによって識別することができる以前のon-SSDコピーコマンドの一部であった場合(例えば、参照フラグが、1つよりも多くのLBAが物理アドレスを指向することを示す場合)、サブセットP2Lテーブルは、対応する物理アドレスのL2Pエントリを除去する。例えば、図7のライン706~716を参照すると、参照フラグエントリが1に等しい場合、エントリがP2Lテーブルから除去される。1つのそのような例では、サブセットP2L除去動作ごとに、物理アドレスがそれを参照する1つ又は0個のみのL2Pエントリを有する場合、物理アドレスは、サブセットP2Lテーブルから除去されることになる。サブセットP2L更新(必要な場合)に加えて、L2Pエントリは、空にされることになり、影響を受けたL2Pエントリ(存在する場合)の参照フラグは消去されることになる。例えば、ライン718及び720では、物理アドレスはL2Pエントリから消去され、参照フラグは消去される。図7における例では、P2L及びL2Pテーブルを更新した後、ライン724において、コマンド完了がホストに送信される前に、トークンがNAND媒体にドロップされる。トリムコマンドトークンは、on-SSDコピーコマンドに関する情報を含むデータ構造であってよい。1つの例では、トークンは、トークンがトリムコマンドトークンであることを示す一意の番号等の一意のシグネチャを含む。トリムコマンドトークンは、PLI及び再生をサポートすることができる。例えば、コントローラがL2Pテーブルを更新している間に、ホストへの確認応答が送信されてよい。L2Pテーブル更新が完了する前に電力が喪失した場合、L2Pテーブルは、トリムトークンを使用して正しく再構築することができる。
【0058】
図8は、書き込みコマンドのための擬似コード800の一例である。図8において示されている例では、書き込みコマンドは、ライン802上に示されているように、2つのパラメータ:開始送信元LBA(src)及びトリムすべきLBAの数(num)を有する。トリムコマンドと同様に、L2Pエントリが以前のon-SSDコピーコマンドの一部であった場合(例えば、参照フラグが、1つよりも多くのLBAが同じ物理アドレスを指向することを示す場合)、P2Lテーブルが更新される。例えば、LBAを物理アドレスに関連付けるエントリは、除去することができ、これはなぜならば、1つよりも多くのLBAがもはや物理アドレスを参照していない(例えば、1つのみのLBAが物理アドレスを参照している)ためである。図8を参照すると、ライン806~814は、LBAごとに、送信元LBAについてのL2Pテーブルにおけるエントリの参照フラグは、1つよりも多くのLBAが物理アドレスを参照しないことを示すために消去される。ライン816上で、送信元LBAを物理アドレスに関連付けるエントリは、サブセットP2Lから除去される。擬似コードのライン820~824は、ホストデータをNAND媒体に書き込むことができるように、NANDページ割り当て及びDMA(ダイレクトメモリアクセス)転送をハンドリングする。例えば、ライン820において、送信元LBAのために新たなページが割り当てられる。ライン824において、DMA転送が、新たに割り当てられたページにデータを書き込むためにセットアップされる。
【0059】
図9は、デフラグメンテーション(デフラグ)方法900の一例のフロー図である。デフラグ中、選択されたバンド(例えば、送信元バンド)の有効ページが、新たなバンド(例えば、送信先バンド)に再配置される。1つの例では、NANDページは、各バンドが複数のブロックを含み、かつ各ブロックが複数のページを含むバンドに編成される。1つのそのような例では、各バンドは、そのバンド内のページについてのLBAマッピング情報への物理ページに関する情報を含むバンドジャーナルを含む。それゆえ、バンドジャーナルは、ローカルP2Lテーブルであるか、又はこれを含んでよく、これは、本明細書において説明されるサブセットP2Lから独立している。1つの例では、バンドジャーナルは、各NANDページが書き込まれるときにL2Pエントリをログ記録するNAND SSDデータ構造である。バンドジャーナルは、電力喪失の場合にL2Pテーブルを再構築するのに使用されてよい。バンドジャーナルは、デフラグ動作を実行する際に使用されてもよい。例えば、デフラグ動作を実行するために、送信元バンドジャーナルがメモリにロードされる。
【0060】
図9を参照すると、バンドジャーナルをロードした後、902において、送信元バンドにおけるページごとに、コントローラは、ページの現在の物理アドレスが1つよりも多くのLBAによって参照されるか否かを判定するためにサブセットP2Lをチェックする。904において、現在の物理アドレスを参照するL2Pエントリは、新たな物理アドレスを参照するように更新される。1つよりも多くのLBAが同じ物理アドレスを参照する場合、L2Pテーブルにおける複数のエントリは、新たな物理アドレスを指向するように更新される。906において、データは次に、現在の物理アドレスから新たな物理アドレスに再配置される。
【0061】
それゆえ、送信元バンドの有効ページを送信先バンドに移行させるためにデフラグ動作を実行することは、P2Lテーブルにおけるエントリを有する送信元バンドにおける物理アドレスごとに、物理アドレスに対応するL2Pテーブルにおける全てのエントリを、送信先バンドにおける新たな物理アドレスに更新することを伴う。1つの例では、送信元バンドの各NANDページアドレスは、サブセットP2Lテーブルにおいて検索される。NANDページアドレスが発見された場合、ページは有効であり、1つよりも多くのL2Pエントリによって参照される。したがって、ページが再配置されることになり、対応するL2P及びP2Lエントリが更新される。NANDページアドレスがサブセットP2Lテーブルにおいて発見されない場合、SSDは、バンドジャーナルに記憶されたそのL2Pエントリをチェックする。バンドジャーナルに記憶されたL2Pエントリが依然としてこのNANDアドレスを指向する場合、ページは有効であり、再配置されることになる。
【0062】
図10は、デフラグ動作のための擬似コード1000の一例である。図10において示されている例では、デフラグコマンドは、ライン1002において示されているように、2つのパラメータ:送信元バンドインデックス(source)及び送信先バンドインデックス(dest)を有する。ライン1006において、送信元バンドのためのバンドジャーナルがロードされる。バンドにおけるページごとに(ライン1008)、現在のNANDアドレス(currNandAddress)は、送信元バンドの現在のアドレスであるように設定され(ライン1012)、新たなNANDページアドレス(newNandAddress)は、送信先バンドにおける利用可能なページであるように設定される(ライン1014)。ライン1016において、サブセットP2Lテーブルは、現在のNANDアドレスごとにチェックされる。現在のNANDアドレスがサブセットP2Lテーブル内にある場合、それは、NANDページが1つよりも多くの参照を有することを示す。ライン1020において、現在のNANDアドレスを指向する全てのL2Pエントリが、新たなNANDアドレスを指向するように更新される。ライン1022において、データは次に、現在のNANDページから新たなNANDページに再配置することができる。
【0063】
現在のNANDページがサブセットP2L内にない場合(ライン1026)、それは、1つよりも多くのLBAが現在のNANDページを指向しないことを示す。L2Pテーブルにおけるエントリが有効である場合(ライン1030及び1032)、L2Pテーブルエントリは、新たなNANDページアドレスを指向するように更新され(ライン1036)、データは、ライン1038において、現在のNANDページから新たなNANDページに再配置することができる。
【0064】
それゆえ、on-SSDコピーオンライト動作は、システム性能を改善することができる。1つの例では、ホストがコピーコマンドを発行するとき、SSDは、データを移行させることなくL2Pエントリを更新する。データ移行は、コピーのいずれかがホストによって変更されるまで延期される。PLI及び再生をサポートするために、トークンは、SSDがコマンド完了をホストに送信する前にコピーコマンドごとにNAND媒体にドロップされる。デフラグをサポートするために、サブセットP2Lテーブルは、DRAMにおいて維持され、L2Pテーブルを用いて周期的にNAND媒体にドロップされる。
【0065】
図11は、コンピューティングシステム1100(例えば、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ等)の例示的な図示を提供する。図11において観測されるように、システム1100は、1つ又は複数のプロセッサ又は処理ユニット1101を含んでよい。プロセッサ1101は、その各々が例えば複数の汎用処理コアを含み得る1つ又は複数の中央処理ユニット(CPU)を含んでよい。プロセッサ1101は、同様に又は代替的に、1つ又は複数のグラフィックス処理ユニット(GPU)又は他の処理ユニットを含んでよい。プロセッサ1101は、メモリ管理ロジック(例えば、メモリコントローラ)及びI/O制御ロジックを含んでよい。プロセッサ1101は、図1のプロセッサ152と同様、又はこれと同じとすることができる。
【0066】
システム1100は、メモリ1102(例えば、システムメモリ)、不揮発性ストレージ1104、通信インターフェース1106、及び他のコンポーネント1108も含み、これらは、図1のホスト150のコンポーネントと同様、又はこれらと同じであってもよい。他のコンポーネントは、例えば、ディスプレイ(例えば、タッチスクリーン、フラットパネル)、電源(例えば、バッテリ及び/又は他の電源)、センサ、電力管理ロジック、又は他のコンポーネントを含んでよい。通信インターフェース1106は、通信インターフェースをサポートするロジック及び/又は特徴を含んでよい。これらの例について、通信インターフェース1106は、ダイレクト又はネットワーク通信リンク又はチャネルを介して通信するために様々な通信プロトコル又は規格に従って動作する1つ又は複数の通信インターフェースを含んでよい。ダイレクト通信は、PCIe仕様に関連付けられたもの等の1つ又は複数の産業規格(後継及び変形を含む)において記述される通信プロトコル又は規格の使用を介して行われてよい。ネットワーク通信は、IEEEによって公表された1つ又は複数の規格において記述されているもののような通信プロトコル又は規格の使用を介して行われてよい。例えば、1つのそのようなEthernet規格は、IEEE802.3を含んでよい。ネットワーク通信は、OpenFlow Switch仕様等の1つ又は複数のOpenFlow仕様に従って行われてもよい。通信インターフェースの他の例としては、例えば、ローカル配線ポイントツーポイントリンク(例えば、USB)インターフェース、ワイヤレスローカルエリアネットワーク(例えば、WiFi)インターフェース、ワイヤレスポイントツーポイントリンク(例えば、Bluetooth(登録商標))インターフェース、全地球測位システムインターフェース、及び/又は他のインターフェースが挙げられる。
【0067】
コンピューティングシステムは、システムのマスストレージコンポーネントであり得る不揮発性ストレージ1104も含む。不揮発性ストレージ1104は、上記で説明された図1のNVMデバイス120と同様、又はこれと同じとすることができる。不揮発性ストレージ1104は、ソリッドステートドライブ(SSD)、デュアルインラインメモリモジュール(DIMM)、又は他の不揮発性ストレージを含むことができる。不揮発性タイプのメモリは、限定されないが、マルチ閾値レベルNANDフラッシュメモリ(例えば、3D NANDフラッシュメモリ)等の不揮発性メモリを含んでよい。1つの例では、不揮発性ストレージ1104は、1つ又は複数のSSDから構成されるマスストレージを含んでよい。SSDは、上記で説明されたコピー技法を実装することが可能であるフラッシュメモリチップから構成することができる。
【0068】
on-SSDコピーオンライトの例は、以下のとおりである。
【0069】
例1:不揮発性ストレージデバイスにおいて、送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信する段階;前記送信先LBAを、前記送信元LBAと同じ物理アドレスにマッピングするように論理/物理(L2P)テーブルを変更する段階;1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信元LBA及び前記送信先LBAに対応する前記L2Pテーブルにおけるフラグを更新する段階;前記L2Pテーブルを変更し、前記フラグを設定した後であって、前記データをコピーする前に、前記コピーコマンドが完了したことを示すトークンを前記不揮発性ストレージデバイスに記憶する段階;及び前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信する段階を含む方法。
【0070】
例2:前記トークンは、シグネチャを含み、前記シグネチャは、前記トークンがコピーコマンドトークンであることを示す数を含む、例1に記載の方法。
【0071】
例3:前記トークンは:前記送信元LBA、前記送信先LBA、及びコピーすべきブロックの数を含む、例1又は2のいずれか1項に記載の方法。
【0072】
例4:前記トークンは:前記トークンが破損しているか否かを示すチェックサムを含む、例1~3のいずれか1項に記載の方法。
【0073】
例5:前記物理アドレスを前記送信先LBA及び前記送信元LBAの両方に関連付けるように物理/論理(P2L)テーブルを更新する段階を更に備える、例1~4のいずれか1項に記載の方法。
【0074】
例6:前記P2Lテーブルは、1つよりも多くのLBAによって参照される物理アドレスのサブセットをマッピングする、例1~5のいずれか1項に記載の方法。
【0075】
例7:前記送信先LBAを、前記送信元LBAと同じ物理アドレスに指向するように前記L2Pテーブルを変更する前に、第2の物理アドレスを前記送信先LBAに関連付ける前記P2Lテーブルのエントリを除去する段階を更に備える、例1~6のいずれか1項に記載の方法。
【0076】
例8:前記送信元LBA又は前記送信先LBAに書き込む書き込みコマンドの受信に応答して、新たなページを割り当てる段階、前記データを前記新たなページにコピーする段階、及び1つのみのLBAが同じ物理アドレスを参照することを示すために前記フラグを更新する段階を更に備える、例1~7のいずれか1項に記載の方法。
【0077】
例9:送信元バンドの有効ページを送信先バンドに移行させるためにデフラグメンテーション(デフラグ)動作を実行する段階を更に備え、前記デフラグ動作は:P2Lテーブルにおけるエントリを有する前記送信元バンドにおける物理アドレスごとに、前記物理アドレスに対応する前記L2Pテーブルにおける全てのエントリを、前記送信先バンドにおける新たな物理アドレスに更新する段階を有する、例1~8のいずれか1項に記載の方法。
【0078】
例10:前記トークンを記憶する段階は、記憶すべきトークンの数が所定の数よりも多くなるまで遅延される、例1~9のいずれか1項に記載の方法。
【0079】
例11:アクセスされると、例1~10のいずれか1項に記載の方法を実行する動作の実行を引き起こすコンテンツを記憶したコンピュータ可読ストレージ媒体を備える製造品。
【0080】
例12:例1~10のいずれか1項に記載の方法を実行するファームウェアを実行するNANDコントローラ。
【0081】
例13:NANDメモリアレイ、及び前記NANDメモリアレイと結合された制御ロジックを備えるストレージデバイスであって、前記制御ロジックは:送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信すること;前記送信元LBAに対応する論理/物理(L2P)テーブルにおける第2のエントリと同じ物理アドレスを参照するように、前記送信先LBAに対応する前記L2Pテーブルにおけるエントリを更新すること;1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信先LBAに対応する前記エントリ及び前記送信元LBAに対応する前記エントリのフラグを更新すること;前記L2Pテーブルにおける前記エントリ及び前記第2のエントリの更新の後であって、前記データがコピーされる前に、前記コピーコマンドが完了したことを示すトークンを前記NANDメモリアレイに記憶すること;及び前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信することを行う、ストレージデバイス。
【0082】
例14:前記制御ロジックは、例1~10のいずれか1項に記載の方法を実行する、例13に記載のストレージデバイス。
【0083】
例15:プロセッサ、及び前記プロセッサと結合されたNANDストレージデバイスを備え、前記NANDストレージデバイスは:NANDメモリアレイ、及び前記NANDメモリアレイと結合された制御ロジックを有し、前記制御ロジックは:送信元論理ブロックアドレス(LBA)から送信先論理ブロックアドレス(LBA)にデータをコピーするコピーコマンドをホストから受信すること;前記送信元LBAに対応する論理/物理(L2P)テーブルにおける第2のエントリと同じ物理アドレスを参照するように、前記送信先LBAに対応する前記L2Pテーブルにおけるエントリを更新すること;1つよりも多くのLBAが同じ物理アドレスを参照することを示すために前記送信先LBAに対応する前記エントリ及び前記送信元LBAに対応する前記エントリのフラグを更新すること;前記L2Pテーブルにおける前記エントリ及び前記第2のエントリの更新の後であって、前記データがコピーされる前に、前記コピーコマンドが完了したことを示すトークンを前記NANDメモリアレイに記憶すること;及び前記コピーコマンドが完了したことを示す確認応答を前記ホストに送信することを行う、システム。
【0084】
例16:前記プロセッサと結合されたディスプレイ、前記プロセッサと結合されたネットワークインターフェース、及び前記システムを給電するバッテリのうちの1つ又は複数を備える、例15に記載のシステム。
【0085】
例17:前記制御ロジックは、例1~10のいずれか1項に記載の方法を実行する、例15又は16に記載のシステム。
【0086】
本発明の実施形態は、上記で記載されたような様々なプロセスを含んでよい。プロセスは、機械実行可能命令において具現化されてよい。命令は、汎用又は専用プロセッサに特定のプロセスを実行させるために使用することができる。代替的には、これらのプロセスは、当該プロセスを実行する配線論理回路又はプログラマブル論理回路(例えば、FPGA、PLD)を含む特別/カスタムハードウェアコンポーネントによって、又は、プログラムされたコンピュータコンポーネント及びカスタムハードウェアコンポーネントの任意の組み合わせによって、実行されてよい。
【0087】
本発明の要素は、機械実行可能命令を記憶する機械可読媒体として提供されてもよい。機械可読媒体は、フロッピーディスケット、光ディスク、CD-ROM、及び磁気光ディスク、フラッシュメモリ、ROM、RAM、EPROM、EEPROM、磁気又は光カード、伝播媒体、又は電子命令を記憶するのに適した他のタイプの媒体/機械可読媒体を含んでよいが、これらに限定されない。例えば、本発明は、通信リンク(例えば、モデム又はネットワーク接続)を介して搬送波又は他の伝播媒体において具現化されたデータ信号によってリモートコンピュータ(例えば、サーバ)から要求側コンピュータ(例えば、クライアント)に転送され得るコンピュータプログラムとしてダウンロードされてよい。
【0088】
本明細書において示されているようなフロー図は、様々なプロセスアクションのシーケンスの例を提供する。フロー図は、ソフトウェア又はファームウェアルーチンによって実行される動作、及び物理的動作を示すことができる。1つの例では、フロー図は、有限状態マシン(FSM)の状態を示すことができ、これは、ハードウェア、ソフトウェア、又は組み合わせにおいて実装することができる。特定のシーケンス又は順序において示されているが、別段の指定がない限り、アクションの順序は修正することができる。それゆえ、例示される実施形態は単に一例として理解されるべきであり、プロセスは異なる順序において実行することができ、幾つかのアクションは、並列で実行することができる。加えて、1つ又は複数のアクションは、様々な例において省略することができ、それゆえ、全ての実施形態において全てのアクションが要求されるわけではない。他のプロセスフローが可能である。
【0089】
様々な動作又は機能が本明細書において説明されている限りにおいて、それらは、ソフトウェアコード、命令、構成、データ又は組み合わせとして説明又は定義することができる。コンテンツは、直接実行可能とすることもできるし(「オブジェクト」又は「実行可能」形式)、ソースコードとすることもできるし、又は差分コード(「デルタ」又は「パッチ」コード)とすることもできる。本明細書において説明される実施形態のソフトウェアコンテンツは、コンテンツを記憶した製造品を介して提供することもできるし、又は通信インターフェースを介してデータを送信するために当該通信インターフェースを動作させる方法を介して提供することもできる。機械可読ストレージ媒体は、機械に、説明された機能又は動作を実行させることができ、情報を機械(例えば、コンピューティングデバイス、電子システム等)によってアクセス可能な形式において記憶する任意のメカニズムを含み、当該メカニズムとしては、例えば、記録可能/記録不能媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス等)がある。通信インターフェースは、配線、ワイヤレス、光学等の媒体のいずれかにインターフェースして、別のデバイスに通信する、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラ等の任意のメカニズムを含む。通信インターフェースは、ソフトウェアコンテンツを記述するデータ信号を提供する通信インターフェースを準備するために構成パラメータを提供すること又は信号を送信すること又はそれらの両方を行うことによって構成することができる。通信インターフェースは、通信インターフェースに送信される1つ又は複数のコマンド又は信号を介してアクセスされ得る。
【0090】
本明細書において説明される様々なコンポーネントは、説明される動作又は機能を実行する手段とすることができる。本明細書において説明される各コンポーネントは、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む。コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)等)、埋め込みコントローラ、配線回路等として実装することができる。
【0091】
本明細書において説明されたものに加えて、本発明の開示された実施形態及び実装に対しては、それらの範囲から逸脱することなく、様々な修正が行われ得る。したがって、本明細書における例示及び例は、制限的な意味ではなく、例示として解釈されるべきである。本発明の範囲は、以下に続く特許請求の範囲を参照することによってのみ画定されるべきである。
図1
図2
図3A
図3B
図3C
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】