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

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

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特許7089830不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法
<>
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図1
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図2
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図3
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図4
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図5
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図6
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図7
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図8
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図9
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図10
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図11
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図12
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図13
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図14
  • 特許-不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-15
(45)【発行日】2022-06-23
(54)【発明の名称】不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20220616BHJP
   G06F 12/00 20060101ALI20220616BHJP
   G06F 3/08 20060101ALI20220616BHJP
【FI】
G06F12/02 530E
G06F12/00 597U
G06F12/02 510A
G06F3/08 H
【請求項の数】 17
【外国語出願】
(21)【出願番号】P 2020042316
(22)【出願日】2020-03-11
(65)【公開番号】P2021006984
(43)【公開日】2021-01-21
【審査請求日】2020-07-10
(31)【優先権主張番号】16/454,885
(32)【優先日】2019-06-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】エラン シャーロン
(72)【発明者】
【氏名】シェイ ベニスティー
(72)【発明者】
【氏名】アリエル ナボン
(72)【発明者】
【氏名】ユダ ガマリエル ハーン
【審査官】北村 学
(56)【参考文献】
【文献】米国特許出願公開第2007/0150694(US,A1)
【文献】特開2017-162067(JP,A)
【文献】特開2016-115355(JP,A)
【文献】国際公開第2014/049678(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/08
G06F 12/00-12/08
G06F 13/16-13/18
(57)【特許請求の範囲】
【請求項1】
装置であって、
複数のオープン消去ブロックを含む不揮発性メモリと、
ストレージコントローラであって、
前記オープン消去ブロックを同時に管理し、
第1の名前空間と第2の名前空間との関係を、前記第1の名前空間のワークロード属性及び前記第2の名前空間のワークロード属性に基づいて判定し、
前記関係に基づいて、前記第1の名前空間と関連付けられたデータを記憶するオープン消去ブロックに、前記第2の名前空間と関連付けられたデータを記憶するように構成されている、ストレージコントローラと、を含み、
前記ストレージコントローラは、前記オープン消去ブロックのそれぞれに記憶されたデータと関連付けられた各名前空間の名前空間識別子を追跡し、前記第1の名前空間のデータの第1の名前空間識別子と一致する前記第2の名前空間のデータの第2の名前空間識別子に応答して、前記第2の名前空間のデータを前記オープン消去ブロックに記憶するように構成されており、
前記関係は、前記第1の名前空間識別子と前記第2の名前空間識別子とを関連付けている、装置。
【請求項2】
前記ストレージコントローラは、ストレージコマンドを監視閾値が満たされるまで監視して、前記関係を判定するように構成されており、前記ストレージコントローラは、監視されたストレージコマンドに基づいて、前記第1の名前空間及び前記第2の名前空間の前記ワークロード属性を比較するように更に構成されている、請求項1に記載の装置。
【請求項3】
前記ストレージコントローラは、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた割り当て制約に応答して、前記第1の名前空間のデータを記憶しない別個のオープン消去ブロックに、前記第2の名前空間のデータを記憶するように構成されている、請求項1に記載の装置。
【請求項4】
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられたプライベート名前空間フラグを含む、請求項3に記載の装置。
【請求項5】
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた共有名前空間フラグを含み、前記ストレージコントローラは、前記共有名前空間フラグである前記割り当て制約を有する前記第1の名前空間にのみデータを記憶するように構成されている、請求項3または4に記載の装置。
【請求項6】
前記ストレージコントローラは、前記別個のオープン消去ブロック内の前記第2の名前空間のデータを準最適割り当てインジケータでマーキングするように構成されており、前記ストレージコントローラは、前記第2の名前空間の前記データに対する後続のメンテナンス動作に前記準最適割り当てインジケータを使用するように構成されている、請求項3から5のいずれか一項に記載の装置。
【請求項7】
前記ストレージコントローラは、割り当て基準に基づいて、複数の前記オープン消去ブロックから、書き込みデータの書き込みに使用するオープン消去ブロックを選択するように構成されている、請求項1から6のいずれか一項に記載の装置。
【請求項8】
前記第1の名前空間または前記第2の名前空間のうちの少なくとも一つに関連付けられるストレージコマンドであって、一つ又は複数の新たに受信した後続のストレージコマンドのために、前記オープン消去ブロック内にページが確保される、請求項1から7のいずれか一項に記載の装置。
【請求項9】
前記ストレージコントローラは、前記関係が定義された後に監視されたストレージコマンドに基づいて前記第1の名前空間と前記第2の名前空間との前記関係を改訂するように構成されている、請求項1から8のいずれか一項に記載の装置。
【請求項10】
前記ストレージコントローラは、前記関係に信頼度レベルを割り当てるように構成されており、
前記関係は、前記第1の名前空間の前記ワークロード属性及び前記第2の名前空間の前記ワークロード属性に基づいて、前記ストレージコントローラによって導出される暗黙的関係を含み、
前記信頼度レベルは、前記暗黙的関係がどの程度正確であるかを示す評点である、請求項1から9のいずれか一項に記載の装置。
【請求項11】
システムであって、
複数のダイを含む不揮発性メモリアレイと、
複数のオープン論理消去ブロックであって、前記オープン論理消去ブロックのそれぞれは、前記不揮発性メモリアレイの前記ダイのそれぞれからの物理消去ブロックを含む、複数のオープン論理消去ブロックと、
複数のホストから書き込みコマンドを受信するように構成されている書き込みデータパイプラインであって、前記書き込みコマンドのそれぞれは、名前空間識別子を含む、書き込みデータパイプラインと、
第1のホストからの書き込みコマンドのワークロード属性及び第2のホストからの書き込みコマンドのワークロード属性に基づいて、前記第1のホストの第1の名前空間が前記第2のホストの第2の名前空間に関連すると判定するように構成されているワークロードアナライザと、
書き込みデータを受信するために前記オープン論理消去ブロックのうちの2つ以上を保持するように構成されているオープン消去ブロックマネージャと、
暗黙的関係に基づいて、第1の名前空間識別子を有する前記書き込みコマンドのデータと、第2の名前空間識別子を有する前記書き込みコマンドのデータとを、グループ化して2つ以上の前記オープン論理消去ブロックのうちの共通の1つに記憶するように前記オープン消去ブロックマネージャに指示するように構成されているデータアロケータと、を含み、
前記ワークロードアナライザは、前記オープン論理消去ブロックのそれぞれに記憶されたデータと関連付けられた各名前空間の前記名前空間識別子を追跡し、前記第1の名前空間のデータの前記第1の名前空間識別子と一致する前記第2の名前空間のデータの前記第2の名前空間識別子に応答して、前記第2の名前空間のデータを前記オープン論理消去ブロックに記憶するように構成されている、システム。
【請求項12】
前記ワークロードアナライザは、ストレージコマンドを監視閾値が満たされるまで監視して、前記第1の名前空間が前記第2の名前空間に関連すると判定するように構成されており、監視されたストレージコマンドに基づいて、前記第1の名前空間と前記第2の名前空間との間で前記ワークロード属性を比較するように更に構成されている、請求項11に記載のシステム。
【請求項13】
前記データアロケータは、前記第1の名前空間及び前記第2の名前空間と関連付けられた1つ以上の割り当て制約を確認するように構成されており、前記割り当て制約のうちの1つ以上に応答して、前記第1の名前空間のデータを記憶しない別個のオープン論理消去ブロックに、前記第2の名前空間のデータを記憶するように更に構成されている、請求項11に記載のシステム。
【請求項14】
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられたプライベート名前空間フラグを含む、請求項13に記載のシステム。
【請求項15】
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた共有名前空間フラグを含み、前記データアロケータは、前記共有名前空間フラグである割り当て制約を有する前記第1の名前空間にのみデータを記憶するように構成されている、請求項13または14に記載のシステム。
【請求項16】
システムによって実行される方法であって、
前記システムによって、ストレージコマンドを受信することであって、前記ストレージコマンドのそれぞれは、名前空間識別子を含む、ことと、
前記システムによって、監視閾値が満たされるまで、前記名前空間識別子のうちの少なくとも1つと関連付けられた前記ストレージコマンドを監視することと、
前記システムによって、第1の名前空間の第1の名前空間識別子と関連付けられた前記ストレージコマンドと、第2の名前空間の第2の名前空間識別子と関連付けられた前記ストレージコマンドとの共通性を判定することと、
前記システムによって、前記共通性に基づいて、前記第1の名前空間識別子と関連付けられた書き込みデータ及び前記第2の名前空間識別子と関連付けられた書き込みデータを共通のオープン消去ブロックにおいてグループ化することと、を含み、
書き込みデータをグループ化することは、共有名前空間フラグを含む前記第1の名前空間及び前記第2の名前空間に応答して、前記第1の名前空間識別子及び前記第2の名前空間識別子と関連付けられた書き込みデータのみをグループ化する、方法。
【請求項17】
前記共通性を判定することは、
所定の期間に受信した前記第1の名前空間識別子と関連付けられた前記ストレージコマンドの数と、
前記所定の期間に受信した前記第2の名前空間識別子と関連付けられた前記ストレージコマンドの数と、の前記共通性を判定することを含む、請求項16に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
従来、ホストデバイスは、ブロックプロトコルを使用してストレージコマンドをストレージデバイスに送信する。ストレージコマンドは、論理ブロックアドレス(logical block address、LBA)を使用して、ストレージメディア上のデータブロックを一意に識別する。特定のブロックストレージプロトコルでは、ホスト、及びホスト上で実行中のアプリケーションは、現在、任意にLBA及びパーティション識別子の両方を使用して、ストレージメディア上のデータブロックを一意に識別することができる。
【0002】
ストレージデバイスは、ストレージメディアの論理パーティションの一意の識別子としてパーティション識別子を認識する。
【0003】
業界では、論理パーティションは、論理ユニット番号(logical unit number、LUN)(パーティション識別子としてLUNを有する)、又は名前空間(パーティション識別子として名前空間識別子(namespace identifier、NSID)を有する)と称される。論理ユニット番号及び名前空間の両方は、本明細書において同じ意味で使用され得る。LUN及び名前空間識別子の両方は、本明細書において同じ意味で使用され得る。
【0004】
特定のストレージデバイスは、ストレージコマンド内のNSIDを活用して、同一のNSIDを有するストレージコマンドについてストレージメディア上のデータを物理的にまとめてグループ化する。しかしながら、ある名前空間を使用するアプリケーションのワークロードは、別の名前空間を使用するアプリケーションのワークロードと同様の特性を有し得る。2つの名前空間間に関係が存在する場合、ホストはこの関係をストレージデバイスに伝達しない場合がある。その結果、ストレージデバイスが、異なる名前空間の2つのデータセット間の関係を認識していないため、ストレージデバイスは、それぞれの対応する名前空間のデータを準最適な方法で物理的に配置し得る。
【0005】
ソリッドステートストレージデバイスにおいて、データの物理的配置は、新しい書き込みデータの記憶に使用するオープンメモリブロックを判定するときに行われる。データを記憶するためにメモリブロックを開くとき、従来の不揮発性メモリシステムは、フリーブロックリストからメモリブロックを開く。不揮発性メモリストレージデバイス等のストレージデバイスでは、動作性能を向上し、不揮発性メモリでのウェアレベリング動作を低減するために、データを記憶するためのオープンメモリブロックを選択するときに、名前空間間の関係を判定し、この関係を利用することが望ましいであろう。
【発明の概要】
【0006】
本開示は、書き込まれたデータと関連付けられた名前空間間の関係に基づいた不揮発性メモリの書き込み管理に関する装置、システム、及び方法に関する。本明細書に開示する装置は、複数のオープン消去ブロックを有する不揮発性メモリを含む。この装置は、オープン消去ブロックを同時に管理するように構成されているストレージコントローラを更に含む。ストレージコントローラは、第1の名前空間及び第2の名前空間の複数のワークロード属性に基づいて、第1の名前空間と第2の名前空間との関係を判定するように更に構成されている。最後に、ストレージコントローラは、この関係に基づいて、第1の名前空間と関連付けられたデータを記憶するオープン消去ブロックに、第2の名前空間と関連付けられたデータを記憶するように構成されている。
【0007】
本明細書に開示するシステムは、複数のダイを含む不揮発性メモリアレイを含む。このシステムは、複数のオープン論理消去ブロックを更に含み、オープン論理消去ブロックのそれぞれは、不揮発性メモリアレイのダイのそれぞれからの物理消去ブロックを含む。このシステムはまた、複数のホストから書き込みコマンドを受信するように構成されている書き込みデータパイプラインを含み、その書き込みコマンドのそれぞれは、名前空間識別子を含む。このシステムは、第1のホストの第1の名前空間が、第1のホストからの書き込みコマンドのワークロード属性及び第2のホストからの書き込みコマンドのワークロード属性に基づいて、第2のホストの第2の名前空間と関係していると判定するように構成されている、ワークロードアナライザを更に含む。このシステムは、書き込みデータを受信するためにオープン論理消去ブロックのうちの2つ以上を維持するように構成されている、オープン消去ブロックマネージャを含む。最後に、このシステムは、暗黙的関係に基づいて、第1の名前空間識別子を有する書き込みコマンドのデータを、第2の名前空間識別子を有する書き込みコマンドとして2つ以上のオープン論理消去ブロックのうちの共通の1つにグループ化するようにオープン消去ブロックマネージャに指示するように構成されている、データアロケータを含む。
【0008】
本明細書に開示する方法は、ストレージコマンドを受信することを含み、ストレージコマンドのそれぞれは、名前空間識別子を含む。この方法は、監視閾値が満たされるまで、名前空間識別子のうちの少なくとも1つと関連付けられたデータのストレージコマンドを監視することを更に含む。本方法は、第1の名前空間の第1の名前空間識別子と関連付けられたストレージコマンドと、第2の名前空間の第2の名前空間識別子と関連付けられたストレージコマンドとの共通性を判定することを含む。最後に、この方法は、共通性に基づいて、第1の名前空間識別子と関連付けられたデータ及び第2の名前空間識別子と関連付けられたデータを共通のオープン消去ブロックにおいてグループ化することを含む。
【図面の簡単な説明】
【0009】
任意の特定の要素又は行為の考察を容易に特定するために、最も有効な数字または参照番号は、その要素が最初に導入される図面の番号を指す。
【0010】
図1】データ書き込み管理用のシステム100の一実施形態を示す概略ブロック図である。
【0011】
図2】データ書き込み管理用のシステム200の別の実施形態を示す概略ブロック図である。
【0012】
図3】NANDストリング300の一実施形態を示す概略ブロック図である。
【0013】
図4】メモリアレイ400の一実施形態を示す概略ブロック図である。
【0014】
図5】一実施形態によるストレージデバイス500を示す。
【0015】
図6】一実施形態によるシステム600を示す。
【0016】
図7】一実施形態によるシステム700を示す。
【0017】
図8】一実施形態によるワークロードアナライザ800を示す。
【0018】
図9】一実施形態によるデータアロケータ714を示す。
【0019】
図10】一実施形態によるNVMサブシステム1000を示す。
【0020】
図11】一実施形態によるNVMe耐久性グループ1100を示す。
【0021】
図12】一実施形態による、2つのコントローラ及び共有名前空間1200を有するNVMeを示す。
【0022】
図13】一実施形態による例示的な実施形態1300を示す。
【0023】
図14】一実施形態による方法1400を示す。
【0024】
図15】一実施形態による方法1500を示す。
【発明を実施するための形態】
【0025】
本明細書では、不揮発性メモリデバイス用のオープンブロック管理装置、システム、及び方法を開示し、名前空間ベースのホストアプリケーションの性能を改善する。
【0026】
名前空間識別子(名前空間ID又は名前空間方向とも称される)は、ストレージコマンドのデータの移動先となるオープンブロックを判定するために使用される。名前空間識別子は、ホストデバイスによって提供されるヒントとして使用されて、データを分類し、編成し、特定のホストアプリケーションと関連付ける。他のパラメータを利用して、データをオープンブロックに送ることもできる。不揮発性メモリデバイスは、各オープンブロックによって使用される名前空間を表す名前空間識別子のリストを保持する。開示する技術の利益は、最適化動作の低減及びメモリガベージコレクションの効率の向上である。
【0027】
本明細書に記載する特定の実施形態及び実施例は、ソリッドステートデバイス/ドライブにおける実施に言及し得る。概して、開示する技術は、不揮発性メモリを含む任意のストレージデバイスで適用可能である。
【0028】
一実施形態では、不揮発性メモリデバイスでサポートされるオープンブロックの最大数は、サポートされる名前空間IDの最大数に等しい。この実施例では、各オープンブロックは専用の名前空間識別子に一意に割り当てられてよい。別の実施形態では、不揮発性メモリデバイスは、プライベート名前空間及び共有名前空間を実装してよい。プライベート名前空間は同一のオープンブロックを共有しないが、共有名前空間は、他の名前空間からのデータと同一のオープンブロックを共有し得る。
【0029】
更なる実施形態では、名前空間の温度(経時的なデータのアクセス頻度とも称される)が判定される。名前空間がホストデバイスによって頻繁にアクセスされる場合、名前空間は、ホット名前空間として分類される。そうでなければ、名前空間は、コールド名前空間として分類される。この分類は、オープンブロックを有する名前空間の割り当て時に使用され得る。概して、本方法は、特定のオープンブロックにおけるホット名前空間及びコールド名前空間の混在を最小限に抑え、又は排除しつつ、ホット名前空間が同一ブロックを共有できるようにし得る。
【0030】
いくつかの実施形態では、複数のホストデバイス(本明細書ではホストとも称される)、又はホストアプリケーションは、共有メモリ空間を使用してよく、各ホストには別個の名前空間が割り当てられてよい。いくつかの実施形態では、順次書き込まれるデータには、ランダムに選択された論理ブロックアドレス(LBA)に書き込まれるデータに使用される名前空間とは異なる名前空間が使用されてよい。
【0031】
いくつかの実施形態は、定期的な書き込み及びガベージコレクション(garbage collection、GC)書き込み中に、データが異なる様式でグループ化されてよく、これは、メンテナンス動作とも称される。名前空間間の関係、又は関連付けは、書き込みコマンド中、読み出しコマンド中、又はその両方において判定され得る。ワークロード属性は優先順位付けされてよく、オープンブロック内での名前空間のグループ化を判定する一部の属性が優先されてよい。
【0032】
図1は、特許請求されるソリューションの一実施形態に従って構成されている、不揮発性メモリデバイス118を含むシステム100の一実施形態のブロック図である。コンピューティングデバイス104の不揮発性メモリシステム102は、プロセッサ106と、揮発性メモリ108と、通信インターフェース110と、を含んでよい。プロセッサ106は、1つ以上の中央処理装置、1つ以上の汎用プロセッサ、1つ以上の特定用途向けプロセッサ、1つ以上の仮想プロセッサ(例えば、コンピューティングデバイス104は、ホスト内で動作する仮想マシンであってよい)、1つ以上のプロセッサコア等を含んでよい。通信インターフェース110は、コンピューティングデバイス104及び/又はストレージコントローラ126を、例えば、インターネットプロトコル(Internet Protocol、IP)ネットワーク、ストレージエリアネットワーク(Storage Area Network、SAN)、無線ネットワーク、有線ネットワーク等の通信ネットワーク114に通信可能に結合するように構成されている、1つ以上のネットワークインターフェースを含んでよい。
【0033】
様々な実施形態では、不揮発性メモリデバイス118は、コンピューティングデバイス104に対して1つ以上の異なる位置に配置されてよい。一実施形態では、不揮発性メモリデバイス118は、半導体チップ、メモリダイ、若しくは半導体パッケージ、又は1つ以上のプリント回路基板、ストレージ筐体、並びに/又は他の機械的及び/若しくは電気的支持構造体の上に配置された他の集積回路デバイス等の1つ以上の不揮発性メモリ素子122を含む。例えば、不揮発性メモリデバイス118は、1つ以上のダイレクトインラインメモリモジュール(direct inline memory module、DIMM)カード、1つ以上の拡張カード及び/若しくはドータカード、ソリッドステートドライブ(solid-state-drive、SSD)若しくは他のハードドライブデバイスを含んでよく、かつ/又は別のメモリ及び/若しくは当該技術分野において既知のストレージフォームファクタを有してよい。不揮発性メモリデバイス118は、コンピューティングデバイス104のマザーボードと一体化され、かつ/又はマザーボード上に実装されてよく、コンピューティングデバイス104のポート及び/又はスロットに搭載されてよく、異なるコンピューティングデバイス104上に及び/又は外部バス(例えば、外部ハードドライブ)を介してコンピューティングデバイス104と通信している、ネットワーク114上の専用のストレージ機器上等に実装されてよい。
【0034】
不揮発性メモリデバイス118は、一実施形態では、プロセッサ106のメモリバス上に(例えば、揮発性メモリ108と同一のメモリバス上に、揮発性メモリ108とは異なるメモリバス上に、揮発性メモリ108の代わりに等)配置されてよい。更なる実施形態では、不揮発性メモリデバイス118は、ペリフェラルコンポーネントインターコネクトエクスプレス(peripheral component interconnect express、PCI Express又はPCIe)バス、直列のアドバンスドテクノロジーアタッチメント(serial Advanced Technology Attachment、SATA)バス、並列のアドバンスドテクノロジーアタッチメント(parallel Advanced Technology Attachment、PATA)バス、スモールコンピュータシステムインターフェース(small computer system interface、SCSI)バス、ファイヤワイヤバス、ファイバチャネル接続、ユニバーサルシリアルバス(Universal Serial Bus、USB)、PCIeアドバンスドスイッチング(PCIe Advanced Switching、PCIe-AS)バス等の、コンピューティングデバイス104の周辺バス上に配置されてよい。別の実施形態では、不揮発性メモリデバイス118は、イーサネットネットワーク、インフィニバンドネットワーク、ネットワーク114上のSCSI RDMA、ストレージエリアネットワーク(storage area network、SAN)、ローカルエリアネットワーク(local area network、LAN)、インターネット等のワイドエリアネットワーク(wide area network、WAN)、他の有線及び/又は無線ネットワーク114等のデータネットワーク114上に配置されてよい。
【0035】
コンピューティングデバイス104は、非一時的なコンピュータ可読のストレージメディア112を更に含んでよい。コンピュータ可読のストレージメディア112は、コンピューティングデバイス104(例えば、プロセッサ106)に、本明細書に開示する方法のうちの1つ以上の工程を実行させるように構成されている、実行可能命令を含んでよい。
【0036】
様々な実施形態によると、ストレージコントローラ126は、1つ以上の、不揮発性メモリデバイス118及び/又は不揮発性メモリ素子122を管理してよい。不揮発性メモリデバイス118は、アドレス指定可能な複数のストレージ位置に配置及び/又は区画化されているソリッドステートストレージデバイス及び/又は半導体ストレージデバイス等の、記録、メモリ、及び/又はストレージデバイスを含んでよい。本明細書で使用されるとき、ストレージ位置は、メモリの任意の物理ユニット(例えば、不揮発性メモリデバイス118上の任意の量の物理的ストレージメディア)を指す。メモリユニットには、物理的ストレージ位置の、ページ、メモリ区分、ブロック、セクタ、コレクション又はセット(例えば、論理ページ、論理ブロック、論理消去ブロック)等が挙げられ得るが、これらに限定されない。
【0037】
ある実施形態では、デバイスドライバ及び/又はストレージコントローラ126は、論理アドレス空間134をクライアント116に提示してよい。本明細書で使用されるとき、論理アドレス空間134は、メモリ資源の論理的表現を参照する。論理アドレス空間134は、複数の論理アドレス(例えば、範囲)を備えてもよい。本明細書で使用されるとき、論理アドレスは、メモリ資源(例えば、データ)を参照するための任意の識別子を参照し、その識別子は、限定されないが、論理ブロックアドレス(logical block address、LBA)、シリンダ/ヘッド/セクタ(cylinder/head/sector、CHS)、ファイル名、オブジェクト識別子、汎用一意識別子(Universally Unique Identifier、UUID)、グローバル一意識別子(Globally Unique Identifier、GUID)、ハッシュコード、署名、インデックスエントリ、範囲、エクステント等を含む。
【0038】
不揮発性メモリデバイス118のデバイスドライバは、論理アドレス空間134の論理アドレスを不揮発性メモリデバイス118上のストレージ位置にマップするために、論理-物理アドレス空間マッピング構造等のメタデータ136を保持してよい。デバイスドライバは、1つ以上のストレージクライアント116にストレージサービスを提供するように構成されていてよい。ストレージクライアント116は、コンピューティングデバイス104上で動作するローカルストレージクライアント116、並びに/又はネットワーク114及び/若しくはネットワークインターフェース110を介してアクセス可能な遠隔のストレージクライアント116を含んでよい。ストレージクライアント116は、オペレーティングシステム、ファイルシステム、データベースアプリケーション、サーバアプリケーション、カーネルレベルプロセス、ユーザレベルプロセス、アプリケーション等を含んでよいが、これらに限定されない。
【0039】
デバイスドライバは、1つ以上の不揮発性メモリデバイス118に通信可能に結合されてよい。1つ以上の不揮発性メモリデバイス118は、ソリッドステートストレージデバイス、半導体ストレージデバイス、SANストレージリソース等を含むが、これらに限定されない、異なる種類の不揮発性メモリデバイスを含んでよい。この1つ以上の不揮発性メモリデバイス118は、それぞれのストレージコントローラ126及び/又は不揮発性メモリメディア120のうちの1つ以上を含んでよい。デバイスドライバは、伝統的なブロックI/Oインターフェース132を介して、その1つ以上の不揮発性メモリデバイス118へのアクセスを提供してよい。
【0040】
一実施形態では、ストレージクライアント116上で、又はそれと共に動作するソフトウェアアプリケーション等のユーザアプリケーションは、不揮発性メモリシステム102を使用する。ストレージクライアント116は、ファイル及びデータを管理し、ストレージコントローラ126及び関連付けられた不揮発性メモリメディア120の機能及び特徴を利用する。ストレージクライアントの代表的な例としては、サーバ、ファイルシステム、オペレーティングシステム、データベース管理システム(「DBMS」)、ボリュームマネージャ等が挙げられるが、これらに限定されない。一実施形態では、ストレージクライアント116は、伝統的なブロックI/Oインターフェース132を介して、その1つ以上の不揮発性メモリデバイス118にアクセスしてよい。
【0041】
特定の従来のブロックストレージデバイスは、ストレージメディアをボリューム又はパーティションに分割する。各ボリューム又はパーティションは、複数のセクタを含んでよい。1つ以上のセクタは、ブロック(データブロックとも称される)に編成される。Windows(登録商標)オペレーティングシステムとインターフェースするストレージシステム等の特定のストレージシステムでは、データブロックはクラスタと称される。UNIX、Linux、又は同様のオペレーティングシステムとインターフェースするストレージシステム等の他のストレージシステムでは、データブロックは単にブロックと称される。ブロック又はクラスタは、ストレージコントローラ126によって管理されるストレージメディア上の最小物理量のストレージ空間を表す。ブロックストレージデバイスは、不揮発性メモリメディア120全体でユーザデータストレージに利用可能なn個のブロックを、0~nに番号付けされた論理ブロックアドレスと関連付けてよい。特定のブロックストレージデバイスでは、論理ブロックアドレスは、1ボリューム又はパーティション当たり0~nの範囲であってよい。従来のブロックストレージデバイスでは、論理ブロックアドレスマップは、特定の論理ブロックに直接マッピングされる。
【0042】
デバイスドライバは、1つ以上のインターフェースを介して論理アドレス空間134をクライアント116に提示してよい。上述のように、論理アドレス空間134は、それぞれが1つ以上の不揮発性メモリデバイス118内のそれぞれの記憶位置に対応する複数の論理アドレスを含んでよい。デバイスドライバは、論理アドレスとストレージ位置との間等の任意対任意マッピングを含むメタデータ136を保持してよい。
【0043】
デバイスドライバは更に、バス124を介して1つ以上の不揮発性メモリデバイス118にデータ、コマンド、及び/又はクエリを伝送するように構成されている不揮発性メモリデバイスインターフェース138を備えてよく、かつ/又はそれと通信してよく、そのバス124としては、プロセッサ106のメモリバス、ペリフェラルコンポーネントインターコネクト(PCI Express又はPCIe)バス、直列のシリアルアドバンスドテクノロジーアタッチメント(ATA)バス、並列のATAバス、スモールコンピュータシステムインターフェース(SCSI)、ファイヤワイヤ、ファイバチャネル、ユニバーサルシリアルバス(USB)、PCIeアドバンスドスイッチング(PCIe-AS)バス、ネットワーク114、インフィニバンド、SCSI RDMA、non-volatile memory express(NVMe)等が挙げられるが、これらに限定されない。不揮発性メモリデバイスインターフェース138は、入出力制御(input-output control、IO-CTL)コマンド、IO-CTLコマンド拡張、リモートダイレクトメモリアクセス等を使用して、1つ以上の不揮発性メモリデバイス118と通信してよい。
【0044】
通信インターフェース110は、コンピューティングデバイス104及び/又はストレージコントローラ126をネットワーク114及び/又は1つ以上の遠隔のネットワークアクセス可能なストレージクライアント116に通信可能に結合するように構成されている1つ以上のネットワークインターフェースを備えてよい。ストレージクライアント116は、コンピューティングデバイス104上で動作するローカルストレージクライアント116、並びに/又はネットワーク114及び/若しくはネットワークインターフェース110を介してアクセス可能な遠隔のストレージクライアント116を含んでよい。ストレージコントローラ126は、1つ以上の不揮発性メモリデバイス118の一部であり、かつ/又はこれと通信する。図1は、単一の不揮発性メモリデバイス118を示しているが、本開示はこの点に限定されず、任意の数の不揮発性メモリデバイス118を組み込むように適合することができる。
【0045】
不揮発性メモリデバイス118は、不揮発性メモリメディア120の1つ以上の素子122を含んでよく、その素子122としては、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ(PCM、PCME、PRAM、PCRAM、Ovonic Unified Memory、Chalcogenide RAM、又はC-RAM)、NANDフラッシュメモリ(例えば、2D NANDフラッシュメモリ、3D NANDフラッシュメモリ)、NORフラッシュメモリ、ナノランダムアクセスメモリ(nano random access memory、ナノRAM又はNRAM)、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ-10ナノメートルプロセスメモリ、グラフェンメモリ、シリコン酸化物窒化物酸化物シリコン(Silicon-Oxide-Nitride-Oxide-Silicon、SONOS)、プログラマブルメタライゼーションセル(programmable metallization cell、PMC)、導電性ブリッジングRAM(conductive-bridging RAM、CBRAM)、磁気抵抗RAM(magneto-resistive RAM、MRAM)、磁気ストレージメディア(例えば、ハードディスク、テープ)、光ストレージメディア等が挙げられ得るが、これらに限定されない。ある実施形態では、不揮発性メモリメディア120の1つ以上の不揮発性メモリ素子122は、ストレージクラスメモリ(storage class memory、SCM)を含む。
【0046】
NANDフラッシュ等のレガシー技術がブロック及び/又はページアドレス指定可能である一方、ストレージクラスメモリは、一実施形態では、バイトアドレス指定可能である。更なる実施形態では、ストレージクラスメモリは、NANDフラッシュよりも速くかつ/又はより長い寿命(例えば、耐久)を有してもよく、DRAMよりも、低コストであり、使用電力が少なく、かつ/又は高い記憶密度を有してもよく、あるいは他の技術と比較して、1つ以上の他の利点又は改善を提供してもよい。例えば、ストレージクラスメモリは、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ、ナノRAM、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ-10ナノメートルプロセスメモリ、グラフェンメモリ、SONOSメモリ、PMCメモリ、CBRAM、MRAM、及び/又はそれらの変形、といった1つ以上の不揮発性メモリ素子122を含んでよい。
【0047】
不揮発性メモリメディア120は、本明細書において「メモリメディア」と称されるが、様々な実施形態では、不揮発性メモリメディア120は、より一般的には、不揮発性メモリメディア、不揮発性ストレージメディア等と称され得る、データを記録可能な1つ以上の不揮発性記録メディアを含んでよい。また、不揮発性メモリデバイス118は、様々な実施形態では、不揮発性記録デバイス、不揮発性メモリデバイス、不揮発性ストレージデバイス等を含んでよい。
【0048】
不揮発性メモリメディア120は、チップ、パッケージ、プレーン、ダイ等が挙げられ得るが、これらに限定されない、1つ以上の不揮発性メモリ素子122を含んでよい。ストレージコントローラ126は、不揮発性メモリメディア120に対するデータ操作を管理するように構成されていてよく、1つ以上の、プロセッサ、プログラマブルプロセッサ(例えば、FPGA)、ASIC、マイクロコントローラ等を含んでよい。いくつかの実施形態では、ストレージコントローラ126は、不揮発性メモリメディア120にデータを記憶し、かつ/又はそこからデータを読み出して、不揮発性メモリデバイス118とデータをやり取りするように構成されている。
【0049】
ストレージコントローラ126は、バス128を介して不揮発性メモリメディア120に通信可能に結合されてよい。バス128は、不揮発性メモリ素子122とデータをやり取りするためのバスI/Oを含んでよい。バス128は、一実施形態では、アドレス指定コマンド、他のコマンド、及び制御情報を不揮発性メモリ素子122に通信するための制御バスを更に含んでよい。いくつかの実施形態では、バス128は、不揮発性メモリ素子122をストレージコントローラ126に並列に通信可能に結合してよい。この並列アクセスによって不揮発性メモリ素子122をグループとして管理できるようになり、論理メモリ素子130を形成してよい。論理メモリ素子130は、それぞれの論理メモリユニット(例えば、論理ページ)及び/又は論理メモリ区分(例えば、論理ブロック)に区画化されてよい。論理メモリユニットは、各不揮発性メモリ素子122の物理メモリユニットを論理的に組み合わせることによって形成されてよい。
【0050】
いくつかの実施形態では、ストレージコントローラ126は、不揮発性メモリメディア120等の、1つ以上の非対称の追記型メディア上にデータを記憶するように構成され得る。本明細書で使用されるとき、「追記型」ストレージメディアは、新しいデータが書き込まれるか、又はそこにプログラムされるたびに再初期化される(例えば、消去される)ストレージメディアを指す。本明細書で使用されるとき、「非対称」ストレージメディアは、異なるストレージ動作に対して異なるレイテンシを有するストレージメディアを指す。多くの種類の不揮発性メモリメディア120は非対称であり、例えば、読み取り動作は、書き込み/プログラム動作よりもはるかに速くてもよく、書き込み/プログラム動作は、消去動作よりもはるかに速くてもよい(例えば、媒体を読み出すことは、消去よりも数百倍速く、媒体をプログラミングするよりも数十倍速くてもよい)。
【0051】
不揮発性メモリメディア120は、とりわけ、メディアの非対称特性を考慮するために、グループ(例えば、消去ブロック)として消去することができるメモリ区分に区画化され得る。そのため、単一のデータセクタ又はデータブロックを定位置で変更することは、データを含む消去ブロック全体を消去すること、及び修正されたデータを、元の変更されていないデータと共に消去ブロックに再度書き込むことを必要とし得る。これは、不揮発性メモリメディア120を過度に摩耗させ得る非効率的な「書き込み増幅」をもたらし得る。
【0052】
したがって、いくつかの実施形態では、ストレージコントローラ126は、定位置から外してデータを書き込むように構成され得る。本明細書で使用されるとき、データを「定位置から外して」書き込むことは、データを「定位置で」上書きする(例えば、元の物理的な場所でデータを上書きする)のではなく、異なる物理的な記憶場所にデータを書き込むことを指す。データを定位置から外して修正することは、修正されるべきデータを有する消去ブロック上の既存の有効なデータが、消去及び再書き込みされる必要がないため、書き込み増幅を回避し得る。更に、データを定位置から外して書き込むことにより、所定の記憶動作のレイテンシの影響から消去を除去し得る。
【0053】
ある実施形態では、ストレージコントローラ126は、ワード線のアドレスを使用して、不揮発性メモリ素子122内のワード線の複数の消去ブロックに編成されてよく、その結果、ワード線は、単調に増加するシーケンスに論理的に編成される(例えば、ワード線のアドレスを単調に増加するシーケンスへとデコードする、及び/又は翻訳する等)。更なる実施形態では、不揮発性メモリ素子122内の消去ブロックのワード線は、単調に増加するワード線アドレスのシーケンスに物理的に配置されてよく、連続的にアドレス指定されたワード線は物理的にも隣接している(例えば、WL0、WL1、WL2、...WLN)。
【0054】
ストレージコントローラ126は、コンピューティングデバイス104上で実行されるデバイスドライバを含んでよく、かつ/又はそれと通信してよい。デバイスドライバは、1つ以上のインターフェース(ブロックI/Oインターフェース132、及び/又は他のインターフェース)を介してストレージクライアント116にストレージサービスを提供してよい。いくつかの実施形態では、デバイスドライバは、ストレージクライアント116によるブロックレベルのI/O動作が実行される際に介されるコンピューティングデバイス104のブロックI/Oインターフェース132を提供する。
【0055】
デバイスドライバは、上述のようにバス124を介して、データ、コマンド、及び/又はクエリをストレージコントローラ126に伝送するように構成されている不揮発性メモリデバイスインターフェース138を更に備えてよい。
【0056】
図2は、1つ以上のメモリダイ202又はチップを含み得る不揮発性ストレージシステム200の実施形態を示す。いくつかの実施形態では、メモリダイ202は、メモリセルの不揮発性メモリアレイ204(二次元又は三次元)と、ダイコントローラ206と、読み取り/書き込み回路A 220と、及び読み取り/書き込み回路B 222と、を含む。一実施形態では、様々な周辺回路による不揮発性メモリアレイ204へのアクセスは、アレイの反対側で対称的に実施され、これによりそれぞれの側のアクセスライン及び回路の密度が半分に低減する。更なる実施形態では、読み出し/書き込み回路A 220及び読み出し/書き込み回路B 222は、メモリセルのページの並列読み出し又は並列プログラミングを可能にする、複数のセンス増幅器228を含む。
【0057】
様々な実施形態では、不揮発性メモリアレイ204は、行デコーダA 216及び行デコーダB 218を介したワード線、並びに列デコーダA 224及び列デコーダB 226を介したビット線によってアドレス指定可能である。いくつかの実施形態では、ストレージコントローラ126は、1つ以上のメモリダイ202と同一のメモリシステム200(例えば、リムーバブルストレージカード又はパッケージ)に含まれる。コマンド及びデータは、線214を介してホストデバイス230とストレージコントローラ126との間で、及び線212を介してコントローラと1つ以上のメモリダイ202との間で伝送される。一実装例は、複数のメモリダイ202を含むことができる。
【0058】
一実施形態では、ダイコントローラ206は、読み出し/書き込み回路A 220及び読み出し/書き込み回路B 222と連携して、不揮発性メモリアレイ204で記憶/メモリ動作を実行する。ある実施形態では、ダイコントローラ206は、電圧ドライバ232と、状態マシン208と、オンチップアドレスデコーダ210と、を含む。一実施形態では、状態マシン208は、電圧ドライバ232の少なくとも一部を含む。別の実施形態では、ストレージコントローラ126は、電圧ドライバ232の少なくとも一部を含む。
【0059】
一実施形態では、電圧ドライバ232は、メモリアレイの1つ以上の構成要素に電圧を供給するように構成されている。電圧の大きさ、及び供給される電圧のレベルが増減するかどうかは、ダイコントローラ206が実施しているストレージ動作に依存する。動作中の一時点では、電圧ドライバ232によって提供される電圧レベルは、接地、つまりゼロ電圧、又は実質的にゼロに近いレベルから、電圧ドライバ232に結合された構成要素が所望の動作を実施するのに必要な所望の電圧レベルまで増加するアナログ信号を含んでよい。電圧ドライバ232に結合された構成要素に印加される電圧が増加するため、電圧レベルが変化するこの期間は、本明細書では充電、プリチャージ、又はランプアップと称される。
【0060】
動作中の別の時点において、電圧ドライバ232によって提供される電圧レベルは、所望の動作を実施する特定の段階の間、電圧ドライバ232に結合された構成要素が必要とする電圧レベルを維持するように構成されているアナログ信号を含んでよい。電圧ドライバ232に結合された構成要素に印加される電圧は、実質的に所望の電圧レベルに留まるため、この期間は、本明細書では定常状態又は安定と称される。
【0061】
動作中の別の時点において、電圧ドライバ232によって提供される電圧レベルは、所望の電圧レベルからより低い電圧レベル、接地レベル、つまりゼロ電圧、又は実質的にゼロに近いレベルまで低下するアナログ信号を含み得る。電圧ドライバ232に結合された構成要素に印加される電圧が減少するため、電圧レベルが変化するこの期間は、本明細書では放電、充電後、又はランプダウンと称される。
【0062】
一実施形態では、状態マシン208は、記憶動作及び/又はメモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ210は、ホスト又はメモリコントローラによって使用されるアドレスを、行デコーダA 216、行デコーダB 218、列デコーダA 224、列デコーダB 226によって使用されるハードウェアアドレスに変換するためのアドレスインターフェースを提供する。状態マシン208は、電圧ドライバ232及び電圧ドライバ232と電気的に通信する回路に結合された他の論理を起動し、制御するための論理を含む。
【0063】
一実施形態では、ダイコントローラ206、電圧ドライバ232、オンチップアドレスデコーダ210、状態マシン208、行デコーダA 216、列デコーダB 218、行デコーダA 224、行デコーダB 226、読み出し/書き込み回路A 220、読み出し/書き込み回路B 222、及び/又はストレージコントローラ126のうちの1つ又は任意の組み合わせは、1つ以上の管理回路と称され得る。
【0064】
図3は、複数のストレージセルを含むNANDストリング300の一実施形態を示す。いくつかの実施形態では、図3に示すNANDストリング300は、直列に接続され、第1の選択トランジスタ310と第2の選択トランジスタ312との間に位置する4つのトランジスタ(トランジスタ302、トランジスタ304、トランジスタ306、及びトランジスタ308)を含む。いくつかの実施形態では、トランジスタ302、トランジスタ304、トランジスタ306、及びトランジスタ308はそれぞれ、電荷トラップ層330を有する制御ゲートを含む。一実施形態では、制御ゲート322、制御ゲート324、制御ゲート326、及び制御ゲート328は、ワード線に接続されるか、又はワード線の一部を含む。更なる実施形態では、トランジスタ302、トランジスタ304、トランジスタ306、及びトランジスタ308は、ストレージセル、ストレージ素子等であり、メモリセルとも称される。いくつかの実施形態では、単一のストレージセルは、複数のトランジスタを含み得る。
【0065】
いくつかの実施形態では、第1の選択トランジスタ310は、ドレイン選択ゲート/選択ゲートドレイン(select gate drain、SGD)を介して、NANDストリング300をビット線314にゲート/接続する。ある実施形態では、第2の選択トランジスタ312は、ソース選択ゲート/選択ゲートソース(select gate source、SGS)を介して、NANDストリング300をソース線316にゲート/接続する。更なる実施形態では、第1の選択トランジスタ310は、対応する選択ゲート318に電圧を印加することによって制御される。いくつかの実施形態では、第2の選択トランジスタ312は、対応する選択ゲート320に電圧を印加することによって制御される。
【0066】
図3に示すように、一実施形態では、ソース線316は、NANDストリング300内の各トランジスタ/ストレージセルのソースに接続される。いくつかの実施形態では、NANDストリング300は、プログラムされたいくつかのストレージセル、及びプログラムされていないいくつかのストレージセルを含み得る。
【0067】
図4は、複数のNANDストリングを含むメモリアレイ400を示す回路図である。NAND構造を使用するメモリアレイのアーキテクチャは、相当数のNANDストリングを含み得る。例えば、図4は、NANDストリング402、NANDストリング404、NANDストリング406、及びNANDストリング408を含むメモリアレイ400を示す。図示の実施形態では、各NANDストリングは、ドレイン選択トランジスタ(選択トランジスタ410、選択トランジスタ412、選択トランジスタ414、及び選択トランジスタ416)、ソース選択トランジスタ(選択トランジスタ418、選択トランジスタ420、選択トランジスタ422、選択トランジスタ424)、及びストレージセル(426、428、430、432、434、436、438、440、442、444、446、448、450、452、454、及び456)を含む。ストレージセルは、電荷トラップ層458を組み込むトランジスタであってよい。簡略化のために、1つのNANDストリング当たり4個のストレージ素子が図示されているが、一部のNANDストリングは、任意の数のストレージ素子、例えば、32個、64個等のストレージ素子/ストレージセルを含んでよい。
【0068】
一実施形態では、NANDストリング402、NANDストリング404、NANDストリング406、及びNANDストリング408は、それぞれソース選択トランジスタ418、選択トランジスタ420、選択トランジスタ422、及び選択トランジスタ424によってソース線460に接続される。ソース選択線SGSは、ソース側の選択トランジスタ418、420、422、424を制御するために使用されてよい。図に示されるように、一実施形態では、様々なNANDストリングが、それぞれドレイン選択トランジスタ410、選択トランジスタ412、選択トランジスタ414、及び選択トランジスタ416によって、ビット線462、ビット線464、ビット線466、及びビット線468に接続される。ドレイン選択トランジスタは、ドレイン選択線SGDによって制御され得る。いくつかの実施形態では、選択線は、必ずしもNANDストリング間で共通である必要はない。すなわち、異なるNANDストリングには、異なる選択線を設けることができる。
【0069】
上述のように、各ワード線WL0~WLnは、1つ以上のストレージセルを含む。図示した実施形態では、ビット線462、ビット線464、ビット線466、及びビット線468のそれぞれ、並びに、それぞれのNANDストリング402、NAND404、NANDストリング406、及びNANDストリング408は、メモリアレイ400、ストレージブロック、物理消去ブロック470等の列を含む。これらの列はまた、チャネルと称されてよい。いくつかの実施形態では、ワード線WL0~WLnは、メモリアレイ400の行、ストレージブロック、物理消去ブロック470等を含む。いくつかの実施形態では、各ワード線WL0~WLnは、各行内の各ストレージセルの制御ゲートを接続する。あるいは、制御ゲート機能は、ワード線WL0~WLn自体によって提供され得る。いくつかの実施形態では、ワード線WL0~WLnは、数十、数百、数千、数百万個のストレージセルを含んでよい。
【0070】
一実施形態では、各ストレージセルは、データを記憶するように構成されている。例えば、1ビットのデジタルデータを記憶するとき、各ストレージセルの可能な閾値電圧(「VTH」)の範囲は、論理データ「1」及び「0」が割り当てられる2つの範囲に分割され得る。本明細書で使用されるとき、閾値電圧は、ストレージセルを起動させるのに十分な、ストレージセルのゲートに印加される電圧の大きさを指す。ストレージセルがNANDトランジスタである実施形態では、閾値電圧は、トランジスタにソース端子とドレイン端子との間に電流を導通させる、トランジスタのゲート端子に印加される十分な電圧である。NAND型フラッシュメモリの一例では、VTHはストレージセルの消去後に負であり得、論理「1」として定義される。一実施形態では、プログラム動作後のVTHは正であり、論理「0」として定義される。
【0071】
いくつかの実施形態では、VTHが負であり、読み出しが試みられると、ストレージセルがオンになり、論理「1」が記憶されていることを示す。更なる実施形態では、VTHが正であり、読み出し動作が試みられると、ストレージセルはオンにならず、論理「0」が記憶されていることを示す。各ストレージセルはまた、複数レベルの情報、例えば、複数ビットのデジタルデータを記憶してよい。かかる実施形態では、VTH値の範囲は、データレベルの数に分割される。例えば、各ストレージセルに4レベルの情報が記憶され得る場合、データ値「11」、「10」、「01」、及び「00」に割り当てられた4つのVTH範囲が存在する。
【0072】
NAND型メモリの一例では、消去動作後のVTHは負であり、「11」として定義され得る。一実施形態では、「10」、「01」、及び「00」の状態には正のVTH値が使用されてよく、ストレージセルにプログラムされたデータとストレージセルの閾値電圧範囲との特定の関係は、ストレージセルに採用されるデータ符号化スキームに依存する。
【0073】
ある実施形態では、図1のストレージコントローラ126は、ワード線のアドレスを使用して、不揮発性メモリ素子122内のワード線の複数の物理消去ブロック470に編成されてよく、その結果、ワード線は、単調に増加するシーケンスに論理的に編成される(例えば、ワード線のアドレスを単調に増加するシーケンスへとデコードする、及び/又は翻訳する等)。物理消去ブロック470を含み得るメモリストリング構成要素が、本明細書に示される。更なる実施形態では、物理消去ブロック470のワード線は、単調に増加するワード線アドレスのシーケンスに物理的に配置されてよく、連続的にアドレス指定されたワード線は物理的にも隣接している(例えば、WL0、WL1、WL2、...WLN)。
【0074】
図5は、一実施形態によるストレージデバイス500を示す。図示した実施形態では、ストレージデバイス500は、論理消去ブロック0 502及び論理消去ブロックN 504によって示されるように、論理消去ブロック(logical erase block、LEB)に編成される。これらのLEBは、物理消去ブロック0 506、物理消去ブロックN 508、物理消去ブロック0 510、物理消去ブロックN 512、物理消去ブロック0 514、及び物理消去ブロックN 516によって示される複数の物理消去ブロック(physical erase block、PEB)を含む。これらは、ダイ0 518、ダイ1 520、及びダイN 522として示される別個のメモリダイ内に位置する。当業者は、物理消去ブロックと論理消去ブロックとの関係及び差を認識し、簡略版の消去ブロックを使用することによって、一方、若しくは他方、又はその両方に言及し得る。当業者は、消去ブロックに言及する内容から、物理消去ブロックに言及しているか、論理消去ブロックに言及しているかを理解する。当該技術分野で使用される概念及び技術、並びに特許請求の範囲に列挙される概念及び技術は、物理消去ブロック又は論理消去ブロックのいずれにも等しく適用され得る。
【0075】
論理消去ブロック0 502等の論理消去ブロックは、複数の論理ページ(論理ページ524)に更に分割され、次にこれらの論理ページは、物理ページ0 526、物理ページN 528、物理ページ0 530、物理ページN 532、物理ページ0 534、及び物理ページn 536等の複数の物理ページを含む。物理ページは、エラー訂正コード(error correction code、ECC)チャンクにグループ化され得る複数のパケットを含んでよい。
【0076】
本明細書で使用されるとき、用語「消去ブロック」は、論理消去ブロック又は物理消去ブロックを広く指す。一実施形態では、物理消去ブロックは、(例えば、ダイでのストレージセルの書き込みにより)所与の時間に消去され得る所与のダイ内の最小ストレージユニットを表す。一実施形態では、論理消去ブロックは、消去コマンドの受信に応答して、ストレージコントローラによって消去可能な最小ブロックを表す。かかる実施形態では、ストレージコントローラが特定の論理消去ブロックを指定する消去コマンドを受信すると、ストレージコントローラは、ブロック内の各物理消去ブロックを同時に消去し得る。所与の論理消去ブロック内の物理消去ブロック(例えば、論理消去ブロック0 502内の物理消去ブロック0 506及び物理消去ブロック0 510)は、それらが別個のダイ内に存在しても物理アドレス空間内では連続していると見なされ得ることに留意されたい。したがって、用語「連続する」は、同一物理メディア内に記憶されたデータのみならず、別個のメディア内に記憶されたデータにも適用可能であり得る。
【0077】
一実施形態では、物理ページは、所与の時間に書き込まれ得る、所与のダイ内の最小ストレージブロックを表す。一実施形態では、論理ページは、ストレージコントローラによってサポートされる最小書き込み可能ストレージブロックである(一実施形態では、ストレージコントローラは、最大でデータの論理ページ相当を記憶するように構成されているバッファを含み得る。バッファが一杯になると、ストレージコントローラは、バッファのコンテンツを単一の論理ページに同時に書き込み得る)。場合によっては、複数のダイにわたって論理ページを分割することにより、複数のダイへの並行アクセス時に、データセットのアクセス時間がより速くなり得る。
【0078】
いくつかの実施形態では、ドライバは、(図1に示すように)メタデータ136を、1つ以上のストレージブロック(論理消去ブロック、物理消去ブロック、論理ページ、及び/又は物理ページ)と関連付けてよい。本明細書で使用されるとき、用語「メタデータ」は、ソリッドステートストレージデバイス500の動作を容易にするために使用可能なシステムデータを指す。メタデータは、例えば、アプリケーションによって生成されるデータ(すなわち、「アプリケーションデータ」)、又はオペレーティングシステムによって「ユーザデータ」と見なされるデータの形態とは対照的である。例えば、一実施形態では、論理消去ブロックは、限定されるものではないが、使用統計(例えば、当該ブロックに対して実行されるプログラム消去サイクルの数)、正常性統計(例えば、当該ブロックから破損データが読み取られた頻度を示す値)、セキュリティ又はアクセス制御パラメータ、シーケンス情報(例えば、シーケンスインジケータ)、永続的メタデータフラグ(例えば、原子記憶動作に含まれることを示す)、トランザクション識別子等を記述するメタデータを含んでよい。いくつかの実施形態では、論理消去ブロックは、データを記憶する論理アドレス、並びに論理アドレス空間134内の各論理ブロック又はセクタについてそれぞれ記憶されたデータパケット数を識別するメタデータを含む。
【0079】
論理アドレス空間は、アプリケーション及びオペレーティングシステム等のより高レベルのプロセスによって知覚されるデータの構造を表す。一実施形態では、物理アドレス空間は、物理メディア上のデータの構造を表す。これは、図6により詳細に示されている。
【0080】
一実施形態では、データパケット内のヘッダは、含まれるデータに関連付けられた1つ以上のLBA、パケットサイズ、他のパケットへのリンク、エラー訂正チェックサム等のパケットメタデータを含んでよい。様々な実施形態では、ドライバは、他の形態のメタデータと共にこの情報を使用して、ストレージデバイス500の動作を管理してよい。例えば、ドライバは、この情報を使用して、読み出し及び書き込み動作の実行を容易にし、ストレージデバイス500を以前の状態に復元してよい(例えば、ドライバによって使用される様々なデータ構造の再構成、及び/又はストレージデバイス500上で実行されるストレージ動作のシーケンスを再生等)。このメタデータの様々な形態を使用して、アクセス頻度統計を推定してよい。
【0081】
図6は、メモリアレイ上の論理アドレス空間134と物理アドレス空間602との関係を示す。一実施形態では、論理アドレス空間134は、それぞれのデータブロックに対応する論理アドレスに分割される。いくつかの実施形態では、論理アドレスはLBAであり(他の実施形態では、論理アドレスは、いくつかの他の形態の論理識別子に対応してよい)、一実施形態では、名前空間は、連続する一意の、単調に増加する論理ブロックアドレスの範囲である。
【0082】
一実施形態では、データブロックは、所与の論理アドレスに関連付けられたデータの最小量を表し得る。データブロックは、セクタに更に分割されてよい。ただし一例として、セクタは512バイトであってよく、データブロックは8つのセクタを含んでよく、4KBであってよい。データブロックは、物理アドレス空間602に割り当てられ、データを記憶する多量の空間である。LBAは論理アドレス空間134内のデータブロックを表す。
【0083】
論理アドレス空間134は、名前空間に更に分割される。名前空間は、論理アドレス空間134を論理的に細分化したものである。名前空間はまた、同じ意味で論理パーティション又は論理ユニット番号(LUN)とも称され得、一実施形態では、名前空間は、連続的かつ単調に増加する論理ブロックアドレスの範囲である。論理アドレス空間134に表される複数の名前空間の各名前空間は、論理ブロックアドレス(LBA)のセットを含む。図6は、一例として、論理アドレス空間134を3つの名前空間(名前空間604、名前空間606、名前空間608)に分割することを示す。各名前空間の論理ブロックアドレスは、名前空間間で一意ではない。例えば、各名前空間は、LBA0、LBA1、LB2等を含む。論理アドレス空間134内で名前空間LBAをLBAに翻訳するために、各名前空間は、名前空間識別子(NSID、例えば、NSID610、NSID612、NSID614)を使用して一意に識別される。
【0084】
本明細書で使用されるとき、名前空間識別子(NSID)は、同一論理アドレス空間内の他の名前空間に対して1つの名前空間を一意に識別する任意の表示を含む。例えば、名前空間識別子には、ファイル識別子及び/又はファイルシステム名前空間からのオフセット、論理ユニット番号(LUN)、LUN ID及びLUN名前空間からのオフセット、LBA、又はストレージ名前区間からのLBA範囲、仮想メモリ名前空間からの1つ以上の仮想メモリアドレス、ホストデバイスの揮発性メモリ名前空間からの揮発性メモリアドレス、オブジェクト識別子、ネットワークアドレス、GUID、UUID、BARアドレス又はBAR名前空間からのアドレス範囲、別の論理識別子等が挙げられ得る。更なる実施形態では、名前空間識別子は、ディレクトリ、ファイルパス、デバイス識別子等の名前空間のラベル又は名前を含んでよい。別の実施形態では、名前空間識別子は、データの物理アドレス又は場所を含んでよい。
【0085】
更に図6を参照すると、複数のホストデバイス(ホスト616、ホスト618、及びホスト620)には、対応するNSID(例えば、NSID610、NSID612、NSID614)によって指定される少なくとも1つの名前空間が割り当てられる。ホストは、その割り当てられた名前空間内のLBAに書き込みコマンド(及び関連データ)を割り当てる。一例では、名前空間のLBAは、LBA0~LBAnの範囲である(図6は、同一サイズを有する各名前空間を示すが、他の実施形態は、異なるサイズの名前空間を有する)。この例では、ホスト616は、NSID610によって識別され、割り振られた/割り当てられた名前空間604である。ホスト618は、NSID612によって識別され、割り振られた/割り当てられた名前空間606である。最後に、ホスト620は、NSID614によって識別され、割り振られた/割り当てられた名前空間608である。
【0086】
ストレージコントローラ126は、ホストデータが物理メモリ内に記憶されている場所を管理する。具体的には、ストレージコントローラ126は、論理アドレス空間134内の論理識別子を物理アドレス空間602内の物理アドレスに翻訳する、又はマップする。図6に示す実施形態では、ストレージコントローラ126は、NSID及びLBAを含む論理識別子を、ストレージメディア上のLBAの物理アドレスに翻訳する。ストレージコントローラ126は、ホストによって使用されたデータのNSID及びLBAを物理アドレス空間602内の物理アドレスに関連付けるテーブル、又は他のデータ構造を開発し得る。
【0087】
一実施形態では、物理アドレス空間602は、物理記録メディア上のデータの配置に対応する物理アドレスに分割される。本明細書に記載の実施形態では、物理記録メディアは、不揮発性メモリメディア120等の追記型非対称メディアである。ストレージコントローラ126は、追記型非対称メディアの特定の課題を克服する方法で不揮発性メモリメディア120を管理する。不揮発性メモリメディア120によって使用される1つの技術は、書き込みコマンドに関連付けられたデータを受信するように準備される、オープン消去ブロック624のセットを維持することである。
【0088】
オープン消去ブロックは、データブロックを受け入れるように準備されている消去ブロック(論理又は物理)である。典型的には、ストレージコントローラ126は、データブロックの全ページ(論理又は物理)が不揮発性メモリアレイに書き込まれる準備が整うまで、データブロックをバッファリングする。次いで、ストレージコントローラ126は、一度に全ページ(典型的には論理ページ)を書き込むことによって、これらのバッファリングされたデータブロックを並列に書き込む。ストレージコントローラ126は、後続の論理ページについて次の物理アドレスへのポインタを維持してよい。ストレージコントローラ126は、データブロックが論理ページ内で編成される方法に関する情報を有するため、ストレージコントローラ126は、各論理ブロックの物理アドレスを判定することができる。一般に、データブロックは、所定の順序で消去ブロックに書き込まれて、不揮発性メモリメディア120を使用して高い性能及び信頼性を提供する。データブロックが書き込まれると、消去ブロック内で利用可能な空間が新しいデータブロックのために減少する。最終的に、消去ブロックが一杯になり、消去ブロックはクローズする。
【0089】
クローズ消去ブロックとは、データブロックで一杯であり、データブロックのための物理空間をもはや有さない消去ブロックである。消去ブロックは、特定のメタデータを含んで、消去ブロックの管理を容易にする。他のデータの中でも、メタデータは、消去ブロックが最後に消去されたとき、消去ブロックが最初に書き込まれたとき、消去ブロックが消去される頻度等タイミング情報を識別し得る。特定の実施形態では、このメタデータはまた、消去ブロック上でメンテナンス動作を実行するのに有用なデータを示し得る。特定の実施形態では、メタデータは、有効データ、データが最後に書き込まれてから変更されていないデータを含む消去ブロック内のデータブロックの数を示し得る。ストレージコントローラ126は、メタデータを準備し、例えば、ヘッダ内に消去ブロックと共にメタデータを記憶してよい。特定の実施形態では、メタデータが記憶されると、消去ブロックは、消去ブロックがデータブロックで一杯ではなかった場合であっても、消去ブロックはクローズ消去ブロックと見なされる。一実施形態では、消去ブロックがクローズ消去ブロックになると、データブロックは、これ以上クローズ消去ブロックに書き込まれることはない。
【0090】
図6は、クローズ消去ブロック622のセット(CEB0~CEBn)、オープン消去ブロック624のセット(OEB0~OEB2)、及び空き消去ブロック626のセット(FEB0、FEB1)を示す。空き消去ブロック626は、ストレージコントローラ126によって消去され、もはやデータを保持していない消去ブロックである。まだ書き込まれていない新しい元の消去ブロックもまた、空き消去ブロック626である。
【0091】
一実施形態では、データブロックのコンテンツは、論理消去ブロック内のパケットとして記憶され得る。
【0092】
一実施形態では、物理アドレス空間602は、書き込み動作が、オープン消去ブロック624内の場所等の1つ以上の付加点のみで実行され得る、ログ構造として編成され得る。
【0093】
図示した実施形態では、データは、オープン消去ブロック624にのみ記憶され得る。ストレージコントローラ126は、2つ以上のオープン消去ブロック624を同時に管理してよい。2つ以上のオープン消去ブロックが任意の所与の時間にオープンであることにより、ストレージコントローラ126は、同時に複数の書き込みコマンドを処理することができる。1つのオープン消去ブロックにおける書き込み動作中のレイテンシの影響は、他のオープン消去ブロック上で他の書き込み動作を実行することによって緩和され得る。ストレージコントローラ126が管理するオープン消去ブロック624の数は、ストレージコントローラ126に利用可能な揮発性メモリの量によって制限され得る。ストレージコントローラ126は、ポインタ(P1、P2、P3)を使用して、オープン消去ブロック624を追跡してよい。例示した実施形態では、3つの対応するオープン消去ブロック624を指定する3つのポインタが示されている。しかしながら、異なる実施例は、3超又は3未満の点、及び3超又は3未満の対応するオープン消去ブロック624を含んでよい。
【0094】
いくつかの実施形態では、オープン消去ブロックは、単一の名前空間識別子がフラグ付けされたデータを記憶するために専用に設けられてよい。かかるデータは、プライベート名前空間に割り当てられてよく、他のデータから物理的かつ論理的に分離されて記憶される必要があり得る。これは、図12及び図13に関して更に詳細に論じる。他の実施形態では、データは、任意のオープン消去ブロックに書き込まれてよいが、2つ以上の名前空間のデータを特定のオープン消去ブロックに分類することが有益であり得る。場合によっては、閾値ページ数628(論理ページ)は、各オープン消去ブロック624内の空きメモリとして確保されてよく、その結果、現在のオープン消去ブロック624内に空間が依然として残っている場合でも、一部の空き消去ブロック626をオープンにする必要があり得る。
【0095】
図7は、一実施形態によるシステム700を示す。このシステムは、ネットワーク114、不揮発性メモリデバイス118、ストレージコントローラ126、1つ以上のホスト(ホスト616、ホスト618、及びホスト620)、書き込みデータパイプライン702、読み出しデータパイプライン704、ワークロードアナライザ706、オープン消去ブロックマネージャ708、ストレージコマンド710、少なくとも1つのオープン消去ブロック712、及びデータアロケータ714等の本明細書に開示するソリューションに必要な機能を含む。図7図1の要素を参照し、同様の番号は同様の要素を示す。ストレージコントローラ126は、書き込みデータパイプライン702と、読み出しデータパイプライン704と、ワークロードアナライザ706と、オープン消去ブロックマネージャ708と、データアロケータ714と、を含む。
【0096】
一実施形態では、ホスト616、ホスト618、及びホスト620は、コンピューティングデバイス(例えば、ラップトップ、デスクトップ、スマートフォン、タブレット、デジタルカメラ)である。別の実施形態では、ホストは、コンピューティングデバイス104上で動作する仮想マシンである。
【0097】
ストレージコントローラ126は、ソリッドステートストレージ(例えば、不揮発性メモリメディア120)にデータ(システム及びユーザの両方)を書き込むための書き込みデータパイプライン702と、ソリッドステートストレージ(例えば、不揮発性メモリメディア120)に記憶されたデータ(システム及び/又はユーザ)を読み出すための読み出しデータパイプライン704と、を含む。
【0098】
書き込みデータパイプライン702は、ソリッドステーテートストレージ(solid-sate storage)に書き込まれるデータ(データセグメントとも称する)を受信し、ソリッドステートストレージに合わせたサイズの1つ以上のデータパケットを生成するパケタイザを含み得る。各データパケットは、データセグメントからのヘッダ及びデータを含み得る。書き込みデータパイプライン702は、データパケットをソリッドステートストレージに書き込む前に、パケタイザから受信した1つ以上のデータパケットに対して1つ以上のECCチャンクを生成するECC生成器を含んでよい。読み出しデータパイプライン704は、ソリッドステートストレージから読み出した1つ以上のECCチャンクを1つ以上のデータパケットに変換し、復号されるデータ内の任意のエラーを訂正及び/又は識別するECCデコーダを含んでよい。読み出しデータパイプライン704は、復号されたデータ(エラーも訂正されてよい)をECCデコーダから受信し、読み出しコマンドの提供に使用され得るデータ(ユーザ又はシステム)に1つ以上のデータパケットを変換する。
【0099】
ワークロードアナライザ706は、不揮発性メモリシステム102が処理しているワークロードに関する情報を判定するために、不揮発性メモリシステム102が受信したストレージコマンド710を追跡する、又は監視する。本明細書で使用されるストレージコマンドは、読み出しコマンド、書き込みコマンド、メンテナンスコマンド、診断コマンド、テストモードコマンド、及びストレージコントローラ126が受信し得る任意の他のコマンドを含む。本明細書で使用されるとき、「ワークロード」は、不揮発性メモリシステム102が受信した、及び/又は提供したストレージコマンド710の数及び種類、並びにそれらのストレージコマンド710を提供したことによる結果である。ワークロードはまた、ストレージコマンド710に関する任意の統計を含んでよい。一実施形態では、ワークロードアナライザ706は、特定期間に受信した読み出しコマンドの数、特定期間に受信した書き込みコマンドの数、受信した読み出しコマンドの数と受信した書き込みコマンドの数との関係、読み出しコマンドを満たすために読み出したデータで見つかったエラーの数、読み出しコマンドを満たすために読み出したデータで見つかった訂正可能なエラーの数、成功した書き込みコマンドの数、失敗した書き込みコマンドの数等が挙げられるが、これらに限定されない、ストレージコマンド710に関する統計を維持する。
【0100】
ワークロードアナライザ706がストレージコマンド710(入力IOトランザクションとも称される)を監視するとき、ワークロードアナライザ706は、ワークロードを定義する、説明する、又は特徴付けるワークロード属性を追跡する。本明細書で使用されるとき、「ワークロード属性」は、ワークロードに関する任意の品質、特性、属性、機能、挙動、特質、又は特性である。ワークロード属性は、例えば、ストレージクライアントによって明示的に識別され、定義されてよい。あるいは、ワークロード属性は暗示されてよく、他の情報に基づいて導出されてよい。ワークロード属性の例は、図9に関連して説明する。
【0101】
一実施形態では、ワークロードアナライザ706は、ワークロードとストレージコマンド710内で参照される名前空間との関係に関するワークロード属性を追跡する。更なる実施形態では、ワークロードアナライザ706は、ストレージコマンド710に含まれる名前空間識別子を使用して、第1のワークロード属性セットを有する名前空間と他のワークロード属性、特に同様のワークロード属性を有する名前空間との関係を追跡する。
【0102】
一実施形態では、ワークロードアナライザ706は、ワークロード属性を確認又は分析し、ワークロード属性に基づく名前空間間のパターン、類似性、関係、及び/又は共通性を判定する。特定の実施形態では、これらのパターン、類似性、関係、及び/又は共通性は、ヒントと称され、不揮発性メモリデバイス118の性能を最適化するために使用され得る。特定の実施形態では、ワークロードアナライザ706は、各名前空間のワークロード属性に基づいて、2つの名前空間の関係を判定する、又は導出する。関係は、第2の名前空間に対する第1の名前空間のワークロード属性の任意の関係又は関連性である。特定の実施形態では、関係は明示的であり、ワークロード属性の確認に基づいて決定される。他の実施形態では、関係は暗黙的であり、ワークロード属性の確認に基づいて導出される。
【0103】
オープン消去ブロックマネージャ708は、どの消去ブロックがオープン消去ブロックであるか、クローズ消去ブロックであるか、空き消去ブロックであるかを管理する。オープン消去ブロックマネージャ708は、各オープン消去ブロック712内の物理アドレスの追跡を維持し、各オープン消去ブロックでは、次のページ(物理又は論理)がその特定のオープン消去ブロック(例えば、P1、P2、P3)に書き込まれ得、データがオープン消去ブロックに書き込まれると、ポインタ(P1、P2、P3)を前進させる。オープン消去ブロックマネージャ708は、オープン消去ブロックが一杯になる寸前に、オープン消去ブロックを閉じてクローズ消去ブロックを形成し、空き消去ブロックをオープン消去ブロックに変換し、ストレージコントローラ126の他の構成要素と調整して、十分な消去ブロックを確実に利用できるようにする。
【0104】
データアロケータ714は、ワークロードアナライザ706及びオープン消去ブロックマネージャ708と調整して、不揮発性メモリメディア120上の書き込みデータの最適な物理位置を判定する。一実施形態では、データアロケータ714は、現在のオープン消去ブロック内で書き込みデータを記憶する場所をオープン消去ブロックマネージャ708に指示する。特定の実施形態では、データアロケータ714は、第1の名前空間の書き込みデータを、第2の名前空間の書き込みデータと共に同一のオープン消去ブロックに記憶するようにオープン消去ブロックマネージャ708に指示する。このようにして、ストレージコントローラ126は、それらのワークロード属性による、第1の名前空間と第2の名前空間との関係を活用する。同一オープン消去ブロックで2つの名前空間の書き込みデータを共にグループ化することによって、ストレージコントローラ126は、この関係を使用して、不揮発性メモリメディア120への書き込みデータの記憶場所を最適化する。
【0105】
特定の実施形態では、データアロケータ714は、書き込みデータと共に受信した第1の名前空間識別子に基づいて、書き込みデータが第1の名前空間に属することを判定し、他の書き込みデータと共に受信した第2の名前空間識別子に基づいて、書き込みデータが第2の名前空間に属することを判定する。
【0106】
いくつかの実施形態では、ワークロードアナライザ706は、各オープン消去ブロック712に記憶されたデータに関連付けられた各名前空間の名前空間識別子を追跡し、名前空間識別子を一致させて、直近に受信した書き込みデータを、直近に受信した書き込みデータの名前空間との関係を有する名前空間のデータを記憶するオープン消去ブロックに割り当てる。
【0107】
図8は、一実施形態による、ワークロードアナライザ800を詳細に示す。ワークロードアナライザ800は、モニタ802と、コンパレータ804と、トラッカ806と、ワークロード属性セット808と、名前空間関係テーブル810と、を含む。モニタ802は、書き込みデータパイプライン702及び読み出しデータパイプライン704と連携して、受信したストレージコマンドの識別、カウント、追跡を行い、ストレージコントローラ126による情報提供を受ける。具体的には、一実施形態では、モニタ802は、各ストレージコマンドで使用される名前空間識別子を識別することによって、1つ以上の名前空間を参照するストレージコマンドを監視する。
【0108】
特定の実施形態では、モニタ802は、ストレージコントローラ126によって提供される全てのストレージコマンドを監視する。
【0109】
別の実施形態では、モニタ802は、監視閾値が満たされるまでストレージコマンドを監視する。監視閾値は、デバイス製造業者が、名前空間とそれらの対応するワークロード属性との関係を導出するために分析前に確認する、十分な数のストレージコマンドであると判定した数であり得る。例えば、監視閾値は、1千ストレージコマンドであってよい。あるいは、監視閾値は、ユーザ定義のパラメータによって、及び/又はストレージクライアントによって提供されるパラメータによって設定されてよい。別の実施形態では、監視閾値は、デバイス製造業者が、名前空間とそれらの対応するワークロード属性との関係を導出するために分析前に確認する、十分な数のストレージコマンドを提供すると判定した期間であり得る。例えば、監視閾値は15分であってよい。
【0110】
当業者は、モニタ802が読み取りコマンド、書き込みコマンド、及びメンテナンスコマンドを監視し得ることを理解するであろう。ストレージコマンドが名前空間識別子等の名前空間のインジケータを含む場合、モニタ802は、ストレージコマンドに基づいて2つ以上の名前空間の関係を判定可能であってよい。当然のことながら、特定のワークロード属性では、ある種類のストレージコマンドは、関係を判定する際に別の種類よりも有用であり得る。例えば、同一アクセス頻度の2つの異なる名前空間の読み出しコマンドは、同一の2つの名前空間に対する書き込みコマンドよりもアクセス頻度に基づいた関係を示すことがあり得る。
【0111】
トラッカ806は、ワークロードアナライザ800の名前空間が以前に確認したトラックを保持する。具体的には、トラッカ806は、参照されている名前空間を判定するために、各ストレージコマンドが提供される名前空間識別子を追跡してよい。具体的には、トラッカ806は、以下に更に詳細に記載する、オープン消去ブロックセットのそれぞれに記憶されたデータに関連付けられた各名前空間識別子を追跡してよい。特定の実施形態では、トラッカ806は、データアロケータと連携してテーブル又は他のデータストアを維持し、(名前空間識別子を使用して)どの名前空間が、どのオープン消去ブロックにデータを有するかを識別する。このテーブルは、どの名前空間がどのオープン消去ブロックにデータを有するかを表す。このテーブルは図9に関してより詳細に説明され、図9では相関テーブル908として識別される。
【0112】
ワークロードアナライザ800は、トラッカ806によって収集された情報及びワークロード属性を確認し、これらの名前空間に関連付けられたワークロードに対して検出されたワークロード属性に基づいて、名前空間と現在のオープン消去ブロックに記憶されたデータとの関係を推定又は判定するように構成されているコンパレータ804を含む。ワークロードアナライザ800は、名前空間識別子を使用して名前空間を追跡し、区別する。例えば、一実施形態では、コンパレータ804は、名前空間a及び名前空間bが同様の更新頻度又は同様のアクセス頻度を有すると判定する。この例では、名前空間aに関連付けられたデータのアクセス頻度は、直近の1万のストレージコマンドのうちの1千であってよく、名前空間bに関連付けられたデータのアクセス頻度は、直近の1万のストレージコマンドの1500であってよい。コンパレータ804は、これらの2つのワークロード属性が、名前空間aと名前空間Bとの関係又は共通性を導出するのに十分に近いと判定する論理を含む。一実施形態では、これらの名前空間のこの導出された、又は暗黙的関係は、観察された関係、類似性、又は共通性が2つの名前空間間で引き続き存在し、その結果、同一のオープン消去ブロックに両方のデータを配置することが不揮発性メモリシステム102にとって有利となるというヒント、又は予測である。
【0113】
同様に、コンパレータ804は、名前空間e及び名前空間fが、書き込みコマンド及び/又は読み出しコマンドについてLBAを同様にランダムに使用すると判定し得る。これらの関係に基づいて、コンパレータ804は名前空間関係テーブル810を更新して、名前空間間(例えば、名前空間aと名前空間b、名前空間eと名前空間f)のワークロード属性関係を反映してよい。
【0114】
一実施形態では、ワークロードアナライザ800は、名前空間間の関係を識別するために使用されるワークロード属性セット808を含む。図8は、いくつかの例示的なワークロード属性808をリスト化したものであり、属性としては、アクセス頻度の更新/アクセス、ストレージコマンドにおいてアクセスされるデータが、順次昇順、順次降順、若しくはランダムに識別されたLBA、LBA基準クラスタリング、又は他の類似の属性に従ってアクセスされるか否かが挙げられるが、これらに限定されない。いくつかの実施形態では、トラッカ806は、特定のアプリケーションの性能を最適化する属性に基づいて、これらのワークロード属性をランク付けすることができる。
【0115】
図示の実施形態では、名前空間関係テーブル810は、ワークロードアナライザ800が追跡する全てのワークロード属性808のリストを含んでよい。名前空間関係テーブル810は、オープン消去ブロック内の他の名前空間間の識別された関係をまだ有していない、ワークロード属性808用のオープンスロットを含んでよい。オープン消去ブロックが一杯になって閉じられ、空き消去ブロックがオープン消去ブロックとなると、ワークロードアナライザ800は、データアロケータ714と連携して、名前空間関係テーブル810の確認、見直し、更新を行う。
【0116】
特定の実施形態では、2つ以上の名前空間間の関係を判定し、名前空間関係テーブル810で関係を管理することに加えて、コンパレータ804は、テーブル内の各関係に信頼度レベルを割り当て得る。信頼度レベルは、識別された関係が正確であることをコンパレータ804が期待することがどの程度正確であるかを示す評点である。一実施形態では、信頼度レベルは、百分率として提示されるとき、0~1又は0~100の範囲の値である。図8に示す例では、名前空間aと名前空間bとの関係の信頼度レベルは88%であってよく、名前空間eと名前空間fとの関係の信頼度は55%であってよい。名前空間eと名前空間fとの関係は、ランダム性に関係する挙動に基づく関係を導出することが正確性に乏しい傾向にあるため、55%であって、より低いことがあり得る。
【0117】
一実施形態では、ワークロードアナライザ800は、リアルタイムでの受信時にストレージコマンドで動作する。あるいは、ワークロードアナライザ800は、ストレージコマンドを記録し、コマンドの実行時に後で分析して、不揮発性メモリシステムの性能に最小限の影響を及ぼし得る。別の実施形態では、ワークロードアナライザ800は、不揮発性メモリデバイス118がガベージコレクション等のメンテナンス動作を実行している間に動作する。
【0118】
一実施形態では、名前空間間の関係の確認、改訂、及び更新を行うために、ワークロードアナライザ800は、定期的に、又はストレージコントローラ126からの要求に応答して動作する。一実施形態では、ワークロードアナライザ800は、追加ストレージコマンドを監視し、記録された関係が依然として、関連する名前空間に関連付けられた現在のワークロードを表しているかどうかを判定し得る。一実施形態では、更なるストレージコマンドの監視後、ワークロードアナライザ800は、更なる監視が以前に定義した関係をサポートする、又はこれを損なうために、信頼レベルを(上下いずれかに)変更してよい。
【0119】
図9は、一実施形態によるデータアロケータ900を示す。データアロケータ900は、アロケータ902と、割り当て制約904と、割り当て基準906と、相関テーブル908と、を含む。データアロケータ900は、オープン消去ブロックマネージャ(又は他の不揮発性メモリメディア120の物理的配置マネージャ)に対して、名前空間間の関係に基づいて、第1の名前空間識別子を有する書き込みコマンドのデータを、2つ以上のオープン論理消去ブロックのうちの共通の1つに第2の名前空間識別子を有する書き込みコマンドとしてグループ化するように指示するように構成されている。一実施形態では、名前空間間の関係は暗黙的関係である。
【0120】
アロケータ902は、書き込みデータがオープン消去ブロック間で割り当てられる場所を判定する。特定の実施形態では、アロケータ902は、データが記憶されるであろう論理ページを識別する。アロケータ902は、コンパレータ804と連携して、書き込みデータの移動先となるオープン消去ブロックを判定し得る。アロケータ902は、相関テーブル908を使用して、オープン消去ブロック(open erase block、OEB)のそれぞれに(NSIDを使用して)データを有する名前空間を追跡し得る。
【0121】
図示の例では、OEB 0はNSID a及びNSID bを、OEB 1はNSID e及びNSID f及びNSID gを、OEB 2はNSID cをリスト表示する。ワークロードアナライザ800によって示されるように、NSID a及びNSID bは、更新/アクセス頻度関係を有し、したがって、同一のオープン消去ブロック、OEB0に記憶されている。同様に、NSID及びNSID fは、ランダムLBAアクセス関係を有し、したがって、同一のオープン消去ブロック、OEB1に記憶されている。
【0122】
典型的には、データアロケータ900は、書き込みデータがストレージデバイスに送信される際に書き込みデータ上で動作する。データアロケータは、書き込みコマンドを調べ、その書き込みコマンドで提供された名前空間識別子によって名前空間を識別し、コンパレータ804に接触して、名前空間識別子が名前空間関係テーブル810に定義された関係を有するかどうかを判定する。関係を有する場合、データアロケータ900は、書き込みコマンドの名前空間(例えば、名前空間識別子)と同一の関係を有する名前空間(例えば、名前空間識別子)を含むオープン消去ブロックに書き込みコマンドのデータを移動させようとする。図9は、オープン消去ブロックOEB1において名前空間e、f、及びgのデータをグループ化するアロケータ902の例を示す。
【0123】
特定の実施形態では、アロケータ902は、特定の割り当て制約904及び/又は割り当て基準906に基づいて、書き込みデータに使用するオープン消去ブロックを判定する。
【0124】
割り当て制約904は、不揮発性メモリメディア120上で書き込みデータが記憶され得る場所を制限する制約である。割り当て制約は、業界標準によって、デバイス製造業者によって、ストレージコントローラ126の論理によって、ストレージデバイスを使用するホスト等によって定義されてよい。一実施形態では、割り当て制約904は、NVMe標準等の標準を実現するために使用される。具体的には、割り当て制約は、耐久性グループを定義するために使用されてよい。特定の割り当て制約904は、標準に適合するために従う必要があり、他の割り当て制約904は任意に順守し、更には標準の資格を得てよい。割り当て制約904の例としては、プライベート名前空間フラグ、共有名前空間フラグ、サービス品質等が挙げられるが、これらに限定されない。
【0125】
割り当て制約904は、プライベート名前空間フラグ910又は共有名前空間フラグ912等のパラメータを含み得る。割り当て制約904は、書き込みコマンドを有するホストによって含まれてよく、又は書き込みコマンドのコンテキストによって割り当てられてよい(例えば、特定の名前空間は、プライベート名前空間又は共有名前空間を示す種類に指定されてよい。名前空間C 916等のプライベート名前空間にフラグ付けされたデータは、同一プライベート名前空間のフラグ付けされていないデータと名前空間を共有しない場合がある。いくつかの実施形態では、異なる名前空間識別子に関連付けられたデータは、識別された各名前空間が、例示された名前空間(名前空間A及び名前空間B)に記憶されたデータ等の共有名前空間フラグ912を含む場合、一緒にグループ化されてよい。他の実施形態では、かかるデータは、単に許可されるのではなく、名前空間を共有することが必要である、又は好ましい場合がある。当然のことながら、特定の実施形態では、同一のストレージ不揮発性メモリメディア120を共有する名前空間の能力は、デフォルトの挙動であってよく、共有名前空間フラグは不要であるか、又は指定されなくてよい。
【0126】
説明したように、アロケータ902は、コンパレータ804と連携して、書き込みデータの移動先となるオープン消去ブロックを判定し得る。しかしながら、この判定は、割り当て制約によってオーバーライド又は無効化され得る。例えば、コンパレータ804は、名前空間c及び名前空間dがアクセス頻度関係を有すると判定した。図8を参照されたい。通常、コンパレータ804は、名前空間c及び名前空間dのデータを一緒にオープン消去ブロック内に記憶するようにアロケータ902に指示する。しかしながら、名前空間cは、プライベート名前空間フラグ割り当て制約を有する。名前空間dは、名前空間cのプライベート名前空間フラグに一致するプライベート名前空間フラグを有しておらず、そのため、アロケータ902は、名前空間dと同じオープン消去ブロックに名前空間cのデータを配置することができない。
【0127】
かかる実施例では、名前空間dのデータは、別の消去ブロックに記憶されてよく、例えば、OEB3(図示せず)は、OEB1が閉じた後に開かれてよい。この実施例では、名前空間dは、割り当て制約のために、既に記憶されている既存の名前空間(OEB2、名前空間c)との関係に対応するオープン消去ブロックには記憶されなかった。この状況は、準最適割り当てである。特定の実施形態では、アロケータ902は、別個の消去ブロック内の名前空間dの記憶されたデータを準最適割り当てインジケータでマーキングし得る。準最適割り当てインジケータは、割り当て制約の一種であってよく、ストレージコントローラ126がガベージコレクション等メンテナンス動作を実行するときに、より最適にデータブロックをグループ化するためにストレージコントローラ126によって使用され得る。
【0128】
OEB 0は、アロケータ902が、同一の割り当て制約を有するデータのみを一緒に同一のオープン消去ブロックに記憶する実施例を示す。OEB 0では、割り当て制約は共有名前空間フラグである。
【0129】
一実施形態では、アロケータ902による、書き込みデータの移動先となるオープン消去ブロックの判定は、1つ以上の割り当て基準に基づいて、見直されてよい、又はオーバーライドされてよい。本明細書で使用されるとき、割り当て基準は、書き込みデータがオープン消去ブロックセット間で割り当てられ得る方法又は場所に関する、任意の条件、最適化、パラメータ、制約、又は要件である。割り当て基準の一例は、オープン消去ブロックの正常性であってよい。特定の実施形態では、コンパレータ804が2つの名前空間からのデータによって共有されるワークロード属性に基づいて、データに異なるオープン消去ブロックを識別したとしても、割り当て基準は、アロケータ902に対して、新しい書き込みデータを最も正常なオープン消去ブロックに書き込ませ得る。別の例示的な割り当て基準は、最小割り当て空間要件であってよい。例えば、最小割り当て空間要件は、現在の書き込みデータの名前空間に対してまだデータを記憶していないオープン消去ブロックを要求し得、オープン消去ブロックが一杯になる前に書き込みデータを受け入れるために利用可能である、少なくとも2つの空き論理ページを必要とし得る。この最小割り当て空間要件は、アロケータ902が名前空間間の共通性のみに基づいて、特定のオープン消去ブロックに書き込みデータを移動させて、オープン消去ブロックに記憶されたデータの論理ページが2ページ未満にならないように存在してよい。最小割り当て空間要件は、導出された又は暗黙的な名前空間関係に基づいて書き込みデータをグループ化する利益を確保するために実行され得る。2ページ未満(Less that two)のデータの論理ページは十分でないことがある。
【0130】
別の実施形態では、ストレージコントローラ126は、暗黙的関係を有する2つの名前空間の書き込みデータが、同一のオープン消去ブロックに割り当てられると、閾値ページ数をオープン消去ブロックに保存することによって、最小割り当て空間要件をサポートするように構成されてよい。このようにして、1つ又は他の名前空間からのより多くの書き込みデータを同一のオープン消去ブロックに記憶することもでき、したがって、名前空間間の導出された関係に基づいて書き込みデータをグループ化する性能の利点を活用し得る。
【0131】
図10は、一実施形態によるNVMサブシステム1000を示す。NVMサブシステム1000は、単一のNVMEコントローラ1002と、単一のPCIE(Express)ポート1012と、を含む。この図のコントローラは、NS A及びNS Bとラベル付けされた2つの名前空間(名前空間A 1008及び名前空間B 1010)をサポートする。各コントローラ名前空間に関連付けられているのは、NSID 1及びNSID 2とラベル付けされた名前空間ID(それぞれ名前空間ID 1 1004及び名前空間ID 2 1006)である。名前空間ID 1 1004及び名前空間ID 2 1006は、コントローラによって使用されて特定の名前空間を参照する。この例では、名前空間ID 1 1004は名前空間A 1008に関連付けられ、名前空間ID 2 1006は名前空間B 1010に関連付けられている。
【0132】
名前空間IDは、デバイスの論理パーティショニングを有するためにホストによって使用される。1つ以上の名前空間は、あるアプリケーションAによって使用されてよく、他の名前空間は、アプリケーションBによって使用されてよい。
【0133】
データを記憶するためにメモリブロックを開くと、従来の不揮発性メモリシステムは、最少プログラム/消去サイクル数に関連付けられたメモリシステム内の空きブロックリストからメモリブロックを開く。より多くのデータを取得するとき、データの温度を考慮しながら、データは、システム内のオープンブロックと関連付けられる。
【0134】
以前の不揮発性メモリシステムでは、データを記憶する前に、不揮発性メモリシステムのメモリ管理モジュールがデータを調べて、データが頻繁に更新されるか、又は頻繁に更新されないかを判定する。データのこの特性はまた、データのアクセス頻度「温度」としても知られており、「ホットデータ」は、頻繁に更新されないデータを表す「コールドデータ」に対して、頻繁に更新されるデータを指す。データの更新頻度を判定した後、メモリ管理モジュールは、関連するオープンブロックにデータを書き込み、ホットデータ及びコールドデータ(hold and cold data)を分離する。考慮され得る別のパラメータは、データの順次LBAアドレス指定である。しかしながら、この判定中に、名前空間IDも論理ユニット番号も考慮されない。
【0135】
図11は、一実施形態によるNVMe耐久性グループ1100を示す。NVMe標準の次のバージョン(バージョン1.4)は、図11に示すNVMe耐久性グループ機能(NVMe endurance group feature)を導入する。この例では、NVMセットA 1106は、未割り当て空間に加えて、NS A1 1112、NS A2 1114、及びNS A3 1116を含む。NVMセットB 1108は、NS B1 1118と、NS B2 1120と、未割り当て空間と、を含む。NVMセットC 1110は、NS C1 1122と、未割り当て空間と、を含む。
【0136】
この実施例では、NVMセットA 1106及びNVMセットB 1108の耐久性は、耐久性グループY 1102の一部として共に管理され、NVMセットC 1110の耐久性は、耐久性グループZ 1104の一部である唯一のNVMセットであるため、NVMセットC 1110内でのみ管理される。この機能は、ストレージデバイスに、各耐久性グループに専用のオープンブロックを実装させる。
【0137】
しかしながら、「耐久性グループ」オプションは、企業及びエントリレベルアプリケーションのみを対象とする任意の機能である。更に、特定の耐久性グループ内で、特許請求されるソリューションを実装するストレージデバイスは、名前空間IDを活用して、NVMe耐久性グループをサポートするストレージデバイス上で書き込みデータをグループ化することができる。
【0138】
図12は、一実施形態による、2つのコントローラ及び共有名前空間1200を有するNVMeを示す。一実施形態では、ストレージデバイスによってサポートされるオープンブロックの最大数は、サポートされる名前空間IDの最大数に等しい。この実施例では、各オープンブロックは専用の名前空間IDに一意に割り当てられてよい。別の実施形態では、ストレージデバイスは、プライベート及び共有名前空間を異なる方法で参照してよい。例えば、プライベート名前空間は同一のオープンブロックを共有しないが、共有名前空間は、同一のオープンブロックを共有し得る。
【0139】
更なる実施形態では、名前空間の温度が判定される。名前空間がホストによって頻繁にアクセスされる場合、名前空間は、ホット名前空間として分類される。そうでなければ、名前空間は、コールド名前空間として分類される。この分類は、オープンブロックを有する名前空間を割り当てる際に使用され得る。一般に、特許請求されるソリューションの実施形態は、特定のオープンブロックにおけるホット名前空間及びコールド名前空間の混在を最小限に抑えつつ、ホット名前空間が同一ブロックを共有できるようにする。
【0140】
別の実施形態は、共有名前空間の使用時の自動車用途により関連し得る。一実施形態では、共有名前空間は、NVMサブシステム内の2つ以上のコントローラに同時に所属し得る名前空間である。ホストは、名前空間がプライベート名前空間であるか、又はIdentify Namespaceデータ構造のNamespace Multi-path I/O及びNamespace Sharing Capabilitiesフィールドの値による共有名前空間であり得るかを判定してよい。
【0141】
図12は、2つのコントローラ(NVMEコントローラ1202、及びNVMEコントローラ1204)を含む単一のPCI Express1212を有する多機能NVMサブシステムを示す。NVMEコントローラ1202は、PCI機能0と関連付けられ、NVMEコントローラ1204は、PCI機能1と関連付けられる。各コントローラは、単一のプライベート名前空間(それぞれ名前空間A 1214及び名前空間C 1216)をサポートし、共有名前空間B 1218にアクセスする。名前空間IDは、特定の共有名前空間へのアクセスを有する全てのコントローラにおいて同一であるものとする。この実施例では、両コントローラは名前空間ID 2 1208を使用して共有名前空間Bにアクセスする。プライベート名前空間A 1214へのアクセスには、名前空間ID 1 1206が使用され、名前空間C 1216へのアクセスには、名前空間ID 3 1210が使用される。
【0142】
図示したシステムの実施形態では、オープンブロックは、名前空間IDのみ、名前空間ID+ホストID、又は名前空間ID+ワークロード評価メタデータに基づいて書き込みデータが割り当てられてよい。これにより、トリム又は最適化動作が減少する。加えて、これは、より効率的なガベージコレクション動作で示されてよい。
【0143】
図13は、本明細書に開示するソリューションの例示的な実施形態1300を示す。あるアプリケーションが、自動運転車両電子システムの一部として開示する方法、システム、及び装置に使用される。かかるシステムは、自律型駆動システム1302と、インフォテインメントシステム1304と、共有不揮発性メモリ1306と、を含み得る。
【0144】
自律型駆動システム1302は、プライベート名前空間A 1310に記憶された特定のセキュアプロトコルにアクセスし得るセキュアプロプライエタリソフトウェア1308でプログラムされたコントローラに依存し得る。プライベート名前空間A 1310内のデータの書き込みコマンドは、この名前空間に割り当てられたデータが、その名前空間を任意の他のデータと共有しないことを示す、プライベート名前空間フラグ1312を含んでよい。追加の割り当て制約は、他のホストコントローラ又はアプリケーションがこのデータにアクセスすることができないように、このデータは独自の別個の消去ブロック1314に記憶される必要があることが示され得る。この予防措置は、自律型駆動能力の安全性及び完全性を維持するために重要であり得る。
【0145】
インフォテイメントシステム1304は、ナビゲーションアプリ(内蔵ナビゲーション1316及びアフターマーケットナビゲーションアプリ1318の両方として)と、路側支援ヘイラー1320と、サウンドシステム1322コントローラと、ビデオコントロール等他のメディアコントローラと、モバイル機器との同期能力と、他のユーザアプリケーションと、を含んでよい。各アプリケーションは、専用名前空間にデータを記憶する、若しくはそれにアクセスしてよく、又は名前空間を共有してよい。例えば、内蔵ナビゲーション1316及びアフターマーケットナビゲーションアプリ1318はいずれも、共有名前空間フラグ1326と関連付けられ得る、共有名前空間B 1324に記憶された地図データベースにアクセスし得る。路側支援ヘイラー1320及びサウンドシステム1322は、名前空間D 1328及び名前空間C 1330をそれぞれ利用することができる。これらの2つの名前空間はいずれも、共通のオープン消去ブロック1332に存在してよい。
【0146】
図14は、一実施形態による方法1400を示す。方法1400は、工程1402において、ストレージコマンドを受信し、ストレージコマンドのそれぞれは、名前空間識別子を含む。方法1400は、工程1404において、監視閾値が満たされるまで、名前空間識別子のうちの少なくとも1つと関連付けられたデータのストレージコマンドを監視する。
【0147】
方法1400は、工程1406において、第1の名前空間の第1の名前空間識別子と関連付けられたストレージコマンドと、第2の名前空間の第2の名前空間識別子と関連付けられたストレージコマンドとの共通性を判定する。方法1400は、工程1408において、共通性に基づいて、第1の名前空間識別子と関連付けられたデータ及び第2の名前空間識別子と関連付けられたデータを共通のオープン消去ブロックにおいてグループ化する。
【0148】
図15は、一実施形態による方法1500を示す。これは、名前空間を重視したオープンブロック管理に使用され得る、ある方法の一例を示す。フローは、特定のNSID及びLBAと関連付けられた書き込みデータを受信することによって、開始1502にて開始する。次に、工程1504では、このNSIDがオープンブロックのうちの1つによって既に使用されているかどうかを見出すために、オープンブロックのコンテキストをスキャンする(判定工程1506)。NSIDが使用された場合、データは、既にこのNSIDを有するオープンブロックに送信される(工程1508)。
【0149】
このNSIDを使用しているオープンブロックが存在しない場合、判定工程1510において、ストレージデバイスは、現在のオープンブロックの数が、オープンブロックの最大数の限度に達したかどうかを判定する。達していない場合、ストレージデバイスは新しいブロックを開き(工程1512)、データを書き込み、到着NSIDを用いて相関テーブル908を更新する。新しいブロックを開くことが不可能である場合、工程1514において、相関テーブル908を適宜更新しながら、既に開いているブロックのうちの1つにデータを送信する(工程1516)。
【0150】
この選択はまた、他のパラメータに基づいてよい。例えば、最小数の名前空間IDを含むオープンブロックを使用してよい。最も古いオープンブロック(最高のプログラム消去回数)を使用してよい。最大量のデータを含むオープンブロックを使用してよい。データの温度及び順次LBAアドレス指定等の他の基準が考慮されてよい。
【0151】
本開示では、異なるエンティティ(「ユニット」、「回路」、他の構成要素等と様々に称され得る)は、1つ以上のタスク又は動作を実行するように「構成されている」として説明又は特許請求されてよい。この説明([エンティティ]は、[1つ以上のタスクを実行する]ように構成されている)は、構造(すなわち、電子回路等の物理的な何か)を指すために使用される。より具体的には、この説明は、この構造体が動作中に1つ以上のタスクを実行するように構成されていることを示すために使用される。構造体は、構造体が現在動作していない場合であっても、何らかのタスクを実行するように「構成されている」と言うことができる。「クレジットを複数のプロセッサコアに分配するように構成されているクレジット分配回路」は、例えば、問題の集積回路が現在使用されていない(例えば、電源が接続されていない)場合であっても、動作中にこの機能を実行する回路を有する集積回路を網羅することを意図する。したがって、何らかのタスクを実行するように「構成されている」と説明又は記載されているエンティティは、デバイス、回路、タスクを実行するために実行可能なプログラム命令を記憶するメモリ等の、物理的な何かを指す。本明細書では、この語句は無形の何かを指すためには使用されない。
【0152】
「構成されている」という用語は、「構成可能である」を意味することを意図するものではない。例えば、プログラムされていないFPGAは、プログラミング後にある特定の機能を実行するように「構成可能である」ことができるが、この機能を実行するように「構成されている」とは見なされない。
【0153】
構造体が1つ以上のタスクを実行するように「構成されている」ことを添付の特許請求の範囲で引用することは、特許請求の範囲の当該要素に米国特許法第112条(f)を援用することを明示的に意図するものではない。したがって、それ以外の方法で[機能を実行する]ための「手段」を含まない、本願のクレームは、構造体を別様に含まない本出願における特許請求の範囲は、米国特許法第112条(f)の下で解釈されるべきではない。
【0154】
本明細書で使用されるとき、用語「~に基づく」は、判定に影響を及ぼす1つ以上の因子を説明するために使用される。この用語は、更なる因子が判定に影響を及ぼし得る可能性を排除するものではない。すなわち、判定は、指定された因子にのみ基づいてよく、又は指定された因子並びに他の指定されていない因子に基づいてよい。「Bに基づいてAを判定する」という語句を考察する。この語句は、BがAの判定に使用される、又はAの判定に影響を及ぼす因子であることを述べる。この語句は、Aの判定が、C等のいくつかの他の因子にも基づき得ることを排除するものではない。この語句はまた、AがBのみに基づいて判定される実施形態を網羅することを意図する。本明細書で使用されるとき、語句「~に基づく」は、語句「少なくとも部分的に~に基づく」と同義である。
【0155】
本明細書で使用されるとき、語句「~に応答して」は、効果を引き起こす1つ以上の因子を説明する。この語句は、追加因子が効果に影響を及ぼし得る、又は別の方法で効果を引き起こす可能性を排除するものではない。すなわち、効果は、これらの因子にのみ応答してよく、又は指定された因子並びに他の指定されていない因子に応答してよい。「Bに応答してAを実行する」という語句を考察する。この語句は、BがAの実行を引き起こす因子であることを述べる。この語句は、Aの実行が、C等いくつかの他の因子にも応答し得ることを排除するものではない。この語句はまた、AがBのみに応答して実行される実施形態を網羅することを意図する。
【0156】
本明細書で使用されるとき、用語「第1の」、「第2の」等は、これらが先行する名詞のラベルとして使用され、別途記載のない限り、任意の種類の順序付け(例えば、空間的、時間的、論理的等)を意味するものではない。例えば、8個のレジスタを有するレジスタファイルにおいて、用語「第1のレジスタ」及び「第2のレジスタ」は、8個のレジスタのうちの任意の2個を指すために使用され得、例えば、論理レジスタ0及び1だけを指すわけではない。
【0157】
特許請求の範囲で使用されるとき、用語「又は」は、包括的なものとして使用され、又は排他的なものとして使用されるわけではない。例えば、語句「x、y、又はzのうちの少なくとも1つ」は、x、y、及びzのいずれか1つ、並びにこれらの任意の組み合わせを意味する。
【0158】
したがって、例示的な実施形態を詳細に説明してきたが、特許請求される本発明の範囲から逸脱することなく、修正及び変形が可能であることは明らかであろう。
以下の項目は、本出願時の特許請求の範囲に記載の要素である。
(項目1)
装置であって、
複数のオープン消去ブロックを含む不揮発性メモリと、
ストレージコントローラであって、
前記オープン消去ブロックを同時に管理し、
第1の名前空間と第2の名前空間との関係を、前記第1の名前空間のワークロード属性及び前記第2の名前空間のワークロード属性に基づいて判定し、
前記関係に基づいて、前記第1の名前空間と関連付けられたデータを記憶するオープン消去ブロックに、前記第2の名前空間と関連付けられたデータを記憶するように構成されている、ストレージコントローラと、を含む、装置。
(項目2)
前記ストレージコントローラは、前記オープン消去ブロックのそれぞれに記憶されたデータと関連付けられた各名前空間の名前空間識別子を追跡し、前記第1の名前空間のデータの第1の名前空間識別子と一致する前記前記第2の名前空間のデータの第2の名前空間識別子に応答して、前記第2の名前空間のデータを前記オープン消去ブロックに記憶するように構成されており、前記関係は、前記第1の名前空間識別子と前記第2の名前空間識別子とを関連付けている、項目1に記載の装置。
(項目3)
前記ストレージコントローラは、ストレージコマンドの閾値を監視して、前記関係を判定するように構成されており、前記ストレージコントローラは、監視されたストレージコマンドに基づいて、前記第1の名前空間及び前記第2の名前空間の前記ワークロード属性を比較するように更に構成されている、項目1に記載の装置。
(項目4)
前記ストレージコントローラは、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた割り当て制約に応答して、前記第1の名前空間のデータを記憶しない別個の消去ブロックに、前記第2の名前空間のデータを記憶するように構成されている、項目1に記載の装置。
(項目5)
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられたプライベート名前空間フラグを含む、項目4に記載の装置。
(項目6)
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた共有名前空間フラグを含み、前記ストレージコントローラは、前記共有名前空間フラグである前記割り当て制約を有する前記第1の名前空間にのみデータを記憶するように構成されている、項目5に記載の装置。
(項目7)
前記ストレージコントローラは、前記別個の消去ブロック内の前記第2の名前空間のデータを準最適割り当てインジケータでマーキングするように構成されており、前記ストレージコントローラは、前記第2の名前空間の前記データに対する後続のメンテナンス動作に前記準最適割り当てインジケータを使用するように構成されている、項目4に記載の装置。
(項目8)
前記ストレージコントローラは、割り当て基準に基づいて、オープン消去ブロックセットから前記オープン消去ブロックを選択するように構成されている、項目1に記載の装置。
(項目9)
前記ストレージコントローラは、前記第2の名前空間と関連付けられた後続の書き込みデータのために、前記オープン消去ブロック内の閾値ページ数を確保するように構成されている、項目1に記載の装置。
(項目10)
前記ストレージコントローラは、前記関係が定義されたの後に監視されたストレージコマンドに基づいて前記第1の名前空間と前記第2の名前空間との前記関係を改訂するように構成されている、項目1に記載の装置。
(項目11)
前記ストレージコントローラは、前記関係に信頼度レベルを割り当てるように構成されており、前記関係は、前記第1の名前空間の前記ワークロード属性及び前記第2の名前空間の前記ワークロード属性に基づいて、前記ストレージコントローラによって導出される暗黙的関係を含む、項目1に記載の装置。
(項目12)
システムであって、
複数のダイを含む不揮発性メモリアレイと、
複数のオープン論理消去ブロックであって、前記オープン論理消去ブロックのそれぞれは、前記不揮発性メモリアレイの前記ダイのそれぞれからの物理消去ブロックを含む、複数のオープン論理消去ブロックと、
複数のホストから書き込みコマンドを受信するように構成されている書き込みデータパイプラインであって、前記書き込みコマンドのそれぞれは、名前空間識別子を含む、書き込みデータパイプラインと、
第1のホストからの書き込みコマンドのワークロード属性及び第2のホストからの書き込みコマンドのワークロード属性に基づいて、前記第1のホストの第1の名前空間が前記第2のホストの第2の名前空間に関連すると判定するように構成されているワークロードアナライザと、
書き込みデータを受信するために前記オープン論理消去ブロックのうちの2つ以上を保持するように構成されているオープン消去ブロックマネージャと、
暗黙的関係に基づいて、第1の名前空間識別子を有する前記書き込みコマンドのデータを、第2の名前空間識別子を有する前記書き込みコマンドとして2つ以上の前記オープン論理消去ブロックのうちの共通の1つにグループ化するように前記オープン消去ブロックマネージャに指示するように構成されているデータアロケータと、を含む、システム。
(項目13)
前記ワークロードアナライザは、前記オープン論理消去ブロックのそれぞれに記憶されたデータと関連付けられた各名前空間の前記名前空間識別子を追跡し、前記第1の名前空間のデータの前記第1の名前空間識別子と一致する前記第2の名前空間のデータの前記第2の名前空間識別子に応答して、前記第2の名前空間のデータを前記オープン論理消去ブロックに記憶するように構成されている、項目12に記載のシステム。
(項目14)
前記ワークロードアナライザは、ストレージコマンドの閾値を監視して、前記第1の名前空間が前記第2の名前空間に関連すると判定するように構成されており、監視されたストレージコマンドに基づいて、前記第1の名前空間と前記第2の名前空間との間で前記ワークロード属性を比較するように更に構成されている、項目12に記載のシステム。
(項目15)
前記データアロケータは、前記第1の名前空間及び前記第2の名前空間と関連付けられた1つ以上の割り当て制約を確認するように構成されており、前記割り当て制約のうちの1つ以上に応答して、前記第1の名前空間のデータを記憶しない別個の消去ブロックに、前記第2の名前空間のデータを記憶するように更に構成されている、項目12に記載のシステム。
(項目16)
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられたプライベート名前空間フラグを含む、項目15に記載のシステム。
(項目17)
前記割り当て制約は、前記第1の名前空間及び前記第2の名前空間のうちの1つと関連付けられた共有名前空間フラグを含み、前記データアロケータは、前記共有名前空間フラグである割り当て制約を有する前記第1の名前空間にのみデータを記憶するように構成されている、項目15に記載のシステム。
(項目18)
方法であって、
ストレージコマンドを受信することであって、前記ストレージコマンドのそれぞれは、名前空間識別子を含む、ことと、
監視閾値が満たされるまで、前記名前空間識別子のうちの少なくとも1つと関連付けられた前記ストレージコマンドを監視することと、
第1の名前空間の第1の名前空間識別子と関連付けられた前記ストレージコマンドと、第2の名前空間の第2の名前空間識別子と関連付けられた前記ストレージコマンドとの共通性を判定することと、
前記共通性に基づいて、前記第1の名前空間識別子と関連付けられた書き込みデータ及び前記第2の名前空間識別子と関連付けられた書き込みデータを共通のオープン消去ブロックにおいてグループ化することと、を含む、方法。
(項目19)
前記共通性は、実質的に同様のアクセス頻度を含む、項目18に記載の方法。
(項目20)
書き込みデータをグループ化することは、共有名前空間フラグを含む前記第1の名前空間及び前記第2の名前空間に応答して、前記第1の名前空間識別子及び前記第2の名前空間識別子と関連付けられた書き込みデータのみをグループ化する、項目18に記載の方法。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15