(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-29
(45)【発行日】2024-03-08
(54)【発明の名称】順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
(51)【国際特許分類】
G06F 11/14 20060101AFI20240301BHJP
G06F 12/00 20060101ALI20240301BHJP
【FI】
G06F11/14 641D
G06F12/00 597U
(21)【出願番号】P 2022565949
(86)(22)【出願日】2021-04-29
(86)【国際出願番号】 US2021029989
(87)【国際公開番号】W WO2021222640
(87)【国際公開日】2021-11-04
【審査請求日】2022-12-09
(32)【優先日】2020-04-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ラム ジョニー エー.
(72)【発明者】
【氏名】ウェーゼンバーグ アレックス ジェイ.
(72)【発明者】
【氏名】ウィンターフェルド マイケル
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2014-517412(JP,A)
【文献】特開2012-128545(JP,A)
【文献】特開2008-123241(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/14
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリ(NVM)デバイスと、
前記NVMデバイスに結合される揮発性メモリであって、
論理ブロックアドレス(LBA)空間のゾーンを、ゾーン状態に、および、前記LBA空間の中でのゾーンインデックスにマッピングするゾーンマップデータ構造であって、前記ゾーンは、複数の順次物理アドレスにマッピングされる複数の順次LBAを含む、ゾーンマップデータ構造、
ジャーナルデータ構造、ならびに、
高頻度更新テーブル
を格納す
る、揮発性メモリと、
前記揮発性メモリおよび前記NVMデバイスに結合される処理デバイスであって、
前記高頻度更新テーブルのエントリの中で、前記ゾーンインデックスに対応するゾーン書き込みポインタの値を書き込むことであって、前記ゾーン書き込みポインタは、書き込み要求のサービスにおける前記ゾーンに対する、前記処理デバイスが書き込んでいる前記LBA空間における位置を含む
、ことと、
前記ゾーンマップデータ構造のエントリの中で、前記高頻度更新テーブルの前記エントリに対してポイントするテーブルインデックス値を書き込むことと、
前記ジャーナルデータ構造の中で、前記ゾーンマップデータ構造と前記高頻度更新テーブルとの間のフラッシング遷移によって影響を及ぼされる、前記ゾーンマップデータ構造または前記ジャーナルデータ構造のうちの少なくとも1つの前記エントリのメタデータを更新することと、
非同期電力損失(APL)事象に応じて、前記ジャーナルデータ構造および前記高頻度更新テーブルを前記NVMデバイスにフラッシングすることと
、
を行
う、処理デバイスと
、
を含むシステム。
【請求項2】
前記APL事象に応じて、前記処理デバイスは、さらに、前記ゾーンマップデータ構造を前記NVMデバイスにフラッシングす
る、請求項1に記載のシステム。
【請求項3】
前記ゾーンマップデータ構造
は、スタティックランダムアクセスメモリ(SRAM)デバイス
に格納され、前記ジャーナルデータ構造および前記高頻度更新テーブルは、密結合メモリ(TCM)
に格納され、前記処理デバイスは、さらに、前記揮発性メモリ
に前記ゾーンマップデータ構造
と関係して格納され
た識別子に基づいて、前記TCMにおける前記高頻度更新テーブルの位置を決定す
る、請求項1に記載のシステム。
【請求項4】
前記ゾーンへの書き込みの完了時、前記処理デバイスは、さらに、
前記ゾーンへの前記書き込み要求に対するゾーン識別子と前記ゾーンインデックスとの間のマッピングを、前記ゾーンマップデータ構造の前記エントリに入力することと、
前記ゾーンマップデータ構造において、前記ゾーンが閉じられているということを指示するために、前記ゾーンを非アクティブ化することと
、
を行
う、請求項1に記載のシステム。
【請求項5】
前記処理デバイスは、さらに、
前記ジャーナルデータ構造を、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記高頻度更新テーブルを、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記ジャーナルデータ構造における前記メタデータ、および、前記高頻度更新テーブルにおける最後の記録されたゾーン書き込みポインタに基づいて、前記ゾーンマップデータ構造の前記エントリを更新することと
、
を行うことを含む、リブートの後の回復およびリビルドを遂行することを行
う、請求項1に記載のシステム。
【請求項6】
前記ゾーンマップデータ構造は、ゾーン識別子を、前記ゾーン状態
と、ゾーン書き込みポインタ提出値
と、ゾーン書き込みポインタ完了値
とにマッピングし、前記高頻度更新テーブルは、アクティブゾーンテーブルであって、前記アクティブゾーンテーブルのエントリにおいて、前記ゾーン書き込みポインタに対する前記ゾーン書き込みポインタ提出値および前記ゾーン書き込みポインタ完了値を格納する、アクティブゾーンテーブルである、請求項1に記載のシステム。
【請求項7】
前記処理デバイスは、さらに、
前記アクティブゾーンテーブルを、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記ゾーンマップデータ構造を、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記ゾーンマップデータ構造の前記エントリにおける前記ゾーン書き込みポインタ提出値を、前記アクティブゾーンテーブルのエントリにおける対応する値と比較することと、
前記ゾーンマップデータ構造の前記エントリにおける前記ゾーン書き込みポインタ完了値を、前記アクティブゾーンテーブルのエントリにおける対応する値と比較することと
、
を行うことを含む、リブートの後のリビルド中に前記ゾーンマップデータ構造におけるエラーを識別することを行
う、請求項6に記載のシステム。
【請求項8】
前記揮発性メモリは、さらに、ゾーン記述子データ構造を格納
し、前記処理デバイスは、さらに、前記ゾーン記述子データ構造において格納されるゾーン記述子によって、前記ジャーナルデータ構造を更新す
る、請求項6に記載のシステム。
【請求項9】
前記処理デバイスは、どのテーブルインデックス値が前記高頻度更新テーブルへの割り当てに対して自由であるかを維持するために、先入れ先出し(FIFO)バッファをさらに含む、請求項1に記載のシステム。
【請求項10】
書き込み要求に応じて処理デバイスにより、論理ブロックアドレス(LBA)空間のアクティブゾーンに書き込むことであって、前記アクティブゾーンは、マッピングデータ構造の中で、不揮発性メモリ(NVM)デバイスの対応する物理アドレス空間にマッピングされる
、ことと、
前記処理デバイスにより、揮発性メモリにおいて格納される高頻度更新テーブルのエントリの中で、前記アクティブゾーンの中での書き込みに対応する前記NVMデバイスにおける位置を含む書き込みポインタの値を書き込むことと、
前記処理デバイスにより、前記マッピングデータ構造のエントリの中で、前記高頻度更新テーブルの前記エントリに対してポイントするテーブルインデックス値を書き込むことと、
前記処理デバイスにより、前記揮発性メモリにおいて格納されるジャーナルデータ構造の中で、前記マッピングデータ構造と前記高頻度更新テーブルとの間のフラッシング遷移によって影響を及ぼされる、前記マッピングデータ構造または前記高頻度更新テーブルのうちの少なくとも1つの前記エントリのメタデータを更新することと、
非同期電力損失(APL)事象に応じて、前記ジャーナルデータ構造および前記高頻度更新テーブルを前記NVMデバイスにフラッシングすることと
、
を含む方法。
【請求項11】
前記APL事象に応じて、前記方法は、前記マッピングデータ構造を前記NVMデバイスにフラッシングすることをさらに含む、請求項10に記載の方法。
【請求項12】
前記マッピングデータ構造との関係において格納される識別子に基づいて、前記揮発性メモリにおける前記高頻度更新テーブルの位置を決定することをさらに含む、請求項10に記載の方法。
【請求項13】
前記アクティブゾーンへの書き込みの完了時、
前記アクティブゾーンへの前記書き込み要求に対する、対応するLBA空間と、前記対応する物理アドレス空間との間のマッピングを、前記マッピングデータ構造の前記エントリに入力することと、
前記マッピングデータ構造において、前記アクティブゾーンを閉じるために、前記アクティブゾーンを非アクティブ化することと
、
をさらに含む、請求項10に記載の方法。
【請求項14】
前記ジャーナルデータ構造を、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記高頻度更新テーブルを、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記ジャーナルデータ構造における前記メタデータ、および、前記高頻度更新テーブルにおける最後の記録された書き込みポインタに基づいて、前記マッピングデータ構造の前記エントリを更新することと
、
を含むように、リブートの後の回復およびリビルドを遂行することをさらに含む、請求項10に記載の方法。
【請求項15】
前記マッピングデータ構造は、ゾーン識別子をブロックセット識別子にマッピングするゾーン対ブロックセット(ZTBS)データ構造であり、前記高頻度更新テーブルは、書き込みトラッカテーブルであり、前記方法は、前記書き込みトラッカテーブルにおいて、前記書き込みポインタに対応する前記NVMデバイスの、最後の書き込まれたページ(LWP)値を格納することをさらに含む、請求項10に記載の方法。
【請求項16】
前記揮発性メモリにおいて、前記NVMデバイスの物理アドレスへの書き込みの位置を追跡する書き込みシーケンスデータ構造を格納することと、
回復およびリビルドを遂行することであって、
前記書き込みトラッカテーブルを、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記ZTBSデータ構造および前記書き込みシーケンスデータ構造を、前記NVMデバイスから、前記揮発性メモリ内へと戻るように読み出すことと、
前記書き込みトラッカテーブルにおいて内包される前記LWP値が、前記書き込みシーケンスデータ構造において順序付けられるような順序になっているかどうかを決定することと、
前記LWP値の前記順序における検出されるエラーに応じて、前記ZTBSデータ構造を更新することと
、
により行う
、ことと
、
をさらに含む、請求項15に記載の方法。
【請求項17】
前記揮発性メモリにおいて、ブロックセット識別子を、前記対応する物理アドレス空間の中の物理ブロックのブロック識別子にマッピングするブロックセットマップデータ構造を格納することと、
前記ブロックセットマップデータ構造に対する更新によって、前記ジャーナルデータ構造を更新することと
、
をさらに含む、請求項15に記載の方法。
【請求項18】
どのテーブルインデックス値が前記高頻度更新テーブルのエントリへの割り当てに対して自由であるかを維持するために、先入れ先出し(FIFO)バッファを用いることをさらに含む、請求項10に記載の方法。
【請求項19】
命令を格納する非一時的コンピュータ可読メディアであって、前記命令は、メモリサブシステムコントローラの処理デバイスにより実行されるときに、
書き込み要求に応じて、論理ブロックアドレス(LBA)空間のアクティブゾーンに書き込むことであって、前記アクティブゾーンは、ゾーンマップデータ構造の中で、ゾーン状態に、および、前記LBA空間の中でのゾーンインデックスにマッピングされ、前記アクティブゾーンは、不揮発性メモリ(NVM)デバイスの複数の順次物理アドレスにマッピングされる複数の順次LBAを含む
、ことと、
揮発性メモリにおいて格納される高頻度更新テーブルのエントリの中で、前記ゾーンインデックスに対応するゾーン書き込みポインタの値を書き込むことであって、前記ゾーン書き込みポインタは、前記アクティブゾーンにおける位置を含む
、ことと、
前記ゾーンマップデータ構造のエントリの中で、前記高頻度更新テーブルの前記エントリに対してポイントするテーブルインデックス値を書き込むことと、
前記揮発性メモリにおいて格納されるジャーナルデータ構造の中で、前記ゾーンマップデータ構造と前記高頻度更新テーブルとの間のフラッシング遷移によって影響を及ぼされる、前記ゾーンマップデータ構造または前記ジャーナルデータ構造のうちの少なくとも1つの前記エントリのメタデータを更新することと、
非同期電力損失(APL)事象に応じて、前記ジャーナルデータ構造および前記高頻度更新テーブルを前記NVMデバイスにフラッシングすることと
、
を含む複数の動作
を前記処理デバイスに行わせる
、非一時的コンピュータ可読メディア。
【請求項20】
前記APL事象に応じて、前記複数の動作は、前記ゾーンマップデータ構造を前記NVMデバイスにフラッシングすることをさらに含む、請求項19に記載の非一時的コンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、一般的には、メモリサブシステムに関係し、より詳しくは、順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすることに関係する。
【背景技術】
【0002】
メモリサブシステムは、データを格納する1つまたは複数のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイスおよび揮発性メモリデバイスであり得る。一般的に、ホストシステムは、メモリデバイスにおいてデータを格納するために、および、メモリデバイスからデータを取得するために、メモリサブシステムを利用し得る。
【発明の概要】
【0003】
本開示は、下記で与えられる詳細な説明から、および、本開示の様々な実施形態の付随する図面から、より十分に理解されることになる。
【図面の簡単な説明】
【0004】
【
図1A】実施形態による、メモリサブシステムを含む実施例コンピューティングシステムを例解する図である。
【
図1B】実施形態による、さらに詳細な形での
図1Aのメモリサブシステムを例解する図である。
【
図2】様々な実施形態による、ゾーンベースマッピングをサポートするように構成されるデータ構造の実施例を例解するブロック線図である。
【
図3】実施形態による、高頻度更新テーブル(HFUT:high frequency update table)の中でインデックス付けするマッピングデータ構造のブロック線図である。
【
図4】様々な実施形態による、マッピングデータ構造のサイズを低減するためにジャーナルおよび高頻度更新テーブルを用いる、ならびに、非同期電力損失(APL)に応じたフラッシング(flush)を可能とする、マッピングデータ構造のブロック線図である。
【
図5】実施形態による、順次的にプログラムするメモリサブシステムの中でAPLを効率的にハンドリングするための方法のフローチャートである。
【
図6】別の実施形態による、順次的にプログラムするメモリサブシステムの中でAPLを効率的にハンドリングするための方法のフローチャートである。
【
図7】実施形態による、APLからのリブートの後のマッピングデータ構造の回復のための方法のフローチャートである。
【
図8】実施形態による、APLからのリブートの後の回復されたマッピングデータ構造の検証のための方法のフローチャートである。
【
図9】本開示の実施形態が動作し得る実施例コンピュータシステムのブロック線図である。
【発明を実施するための形態】
【0005】
本開示の態様は、順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすることに向けられる。メモリサブシステムは、ストレージデバイス、メモリモジュール、または、ストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスおよびメモリモジュールの実施例は、
図1Aと連関して下記で説明される。一般的に、ホストシステムは、データを格納するメモリデバイスなどの1つまたは複数のコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムにおいて格納されることになるデータを提供し得るものであり、メモリサブシステムから取得されることになるデータを要求し得る。
【0006】
メモリデバイスは、不揮発性メモリデバイスであり得る。不揮発性メモリデバイスの1つの実施例は、否定論理積(NAND)メモリデバイスである。不揮発性メモリデバイスの他の実施例は、
図1Aと連関して下記で説明される。不揮発性メモリデバイスは、1つまたは複数のダイのパッケージである。パッケージにおけるダイは、メモリサブシステムコントローラと通信するための1つまたは複数のチャネルに割り当てられ得る。各ダイは、1つまたは複数のプレーンからなり得る。プレーンは、論理ユニット(LUN)へとグループ化され得る。いくつかのタイプの不揮発性メモリデバイス(例えば、NANDデバイス)に対して、各プレーンは、物理ブロックのセットからなる。各ブロックは、ページのセットからなる。各ページは、メモリセル(「セル」)のセットからなる。セルは、情報を格納する電子回路である。ブロックは、本明細書において以後、データを格納するために使用されるメモリデバイスのユニットを指し、メモリセルのグループ、ワードライングループ、ワードライン、または、個々のメモリセルを含み得る。
【0007】
データ動作が、メモリサブシステムにより遂行され得る。データ動作は、ホストにより開始される動作であり得る。例えば、ホストシステムは、メモリサブシステム上でのデータ動作(例えば、書き込み、読み出し、消去、その他)を開始し得る。ホストシステムは、メモリサブシステムのメモリデバイスにおいてデータを格納するために、および、メモリサブシステムのメモリデバイスからデータを読み出すためになどで、メモリサブシステムにアクセス要求(例えば、書き込みコマンド、読み出しコマンド)を送出し得る。
【0008】
ホスト要求により指定されるような、読み出される、または、書き込まれることになるデータは、本明細書において以後、「ホストデータ」と称される。ホスト要求は、ホストシステムがホストデータと関連付ける位置である、ホストデータに対する論理アドレス情報(例えば、論理ブロックアドレス(LBA)、名前空間)を含み得る。論理アドレス情報(例えば、LBA、名前空間)は、ホストデータに対するメタデータの一部であり得る。メタデータは、さらには、エラーハンドリングデータ(例えば、ECCコードワード、パリティコード)、データバージョン(例えば、書き込まれたデータの経過時間を区別するために使用される)、有効ビットマップ(どのLBAまたは論理転送ユニット(logical transfer unit)が有効データを内包するか)、および類するものを含み得る。簡単のため、「データ」が以後言及される場合、そのようなデータは、少なくともホストデータを指すと理解され得るが、さらには、メディア管理データおよび/またはシステムデータなどの、他のデータを指し得る。
【0009】
メモリデバイスのセル(または単純に「メディア」)は、ダイから(上位レベル)、プレーンまで、ブロックまで、ページまで(下位レベル)、階層的に組織化され得る。ブロックセット(さらにはブロックストライプと称される)は、ブロックがデータストレージの目的のために一体でグループ化されるように、異なるダイのプレーンにまたがって配されるブロックのセットであり得る。ブロックセットに書き込むことは、複数個のダイにまたがって、同時的に書き込まれ、同じ時間において読み出され得る、より多くのホストデータを可能とする。1つまたは複数のブロックセットの複数個のブロックが、データグループとして識別され得る。
【0010】
様々な実施形態において、ホストファイルシステムが、局所性によりホストデータをグループ化し、メモリサブシステムに順次的にホストデータを書き込み得る。ファイルシステムは、その際、例えば、異なるホストアプリケーションが各々それ自体のストリームに書き込み得る場合、メモリサブシステムに並列順次ストリームとして異なる局所性のホストデータを書き込み得るものであり、各ストリームは、それ自体の局所性を有する。「局所性」は、時間的局所性または空間的局所性のいずれかを指し得る。メモリサブシステムコントローラ(例えば、処理デバイスを含む)は、普通、ホストデータの一部分(例えば、4KB)の形でランダムにメディアに書き込み、次いで、LBA空間をメディアの物理アドレス空間にマッピングするためにメタデータを使用する。しかしながら、ホストデータのより大きいグループ(例えば、100MB以上)が、データ局所性によってグループ化されて書き込まれるとき、「データグループ」は、複数個のダイにまたがる1つまたは複数のブロックセットに、より大きいチャンクとして順次的に書き込まれ得る。そのようなデータグループのマッピングを単純化するために、ゾーン(例えば、データグループと関連付けられる論理アドレス空間)のLBAが、LBA空間の中で順次的に順序付けられ、物理アドレス空間の中の順次的に順序付けられる物理アドレスにマッピングされ得る。一度にデータのゾーンを書き込み(例えば、プログラムし)、ゾーンをマッピングし得るメモリサブシステムは、よって、例えば、論理アドレスのゾーンが名前を付けられる/グループとして識別される、ゾーン名前空間(ZNS)において動作する。有利には、論理対物理(LTP)アドレスマッピングに対するZNSの使用は、LTPマッピングを追跡するためのメタデータの量を甚だしく低減する。
【0011】
非同期電力損失(APL)は、メモリデバイスが、動作中であり、予期せずに電力を失うときに起こる。メモリデバイスは、揮発性メモリにおいて格納されるデータが失われないように、APL事象をハンドリングするように設計される。一般の手法は、データ構造がリビルドされ得るように、揮発性メモリにおいて格納されるデータ構造のスナップショットをとること、データ構造に対する最近の変化を捕捉するためにメタデータをジャーナリングすること、および、APLの検出時にジャーナルをフラッシングすることを含む。ジャーナリングの概念は、より大きいデータ構造をリビルドするために使用され得る、より小さいデータ構造においてメタデータをバッファリングすることである。フラッシングは、電力損失時にデータを保存するために、不揮発性メモリ(NVM)にデータを書き出す行為である。
【0012】
従来のメモリデバイスは、NVMにフラッシングするデータの量、揮発性メモリデータを保持するために使用する電力コンデンサの数、ブートおよびAPL修復時間、ならびに、データをバックアップすること(例えば、スナップショットをとること、および、データをフラッシングすること)と関わりのある書き込み増幅などの、APLの異なる特性のバランスをとることに努めて、異なる手立てにおいてAPLをハンドリングする。従前のメモリデバイスは、データがAPLの後に理路整然としているということを確実にするために、論理対物理(LTP)マッピングデータ構造のスナップショット、および、多数のジャーナルを継続的にフラッシングすることに依存する。このことは、開ブロックセット(例えば、ブロックストライプ)をスキャンすること、および、開ブロックセットを修復することなどの手法の使用を含む。
【0013】
NVMデバイスに順次的に書き込むことの性質を考え合わせると、ZNSベースのメモリサブシステムにおけるマッピングは、データ構造が、理路整然と回復され、必要ならば修復されるということを確実にするためのAPL設計および手法をさらには単純化する手立てにおいて単純化され得る。例えば、ホスト書き込みパターンは、ゾーンの中で順次的であり、グループ化されたデータが順次的に書き込まれるということを保証するために、アトミック書き込みユニットを使用する。さらに、電力コンデンサの使用は、配備される電力コンデンサの数に依存して、APLが起こる後に、ある決まった量のホストデータがフラッシングされることを可能とし得る。加えて、マッピングデータ構造は、マッピングデータ構造がより小さくあり得るように、より高い粒度で、順次的に書き込まれるゾーンの順次マッピングを格納する。
【0014】
ZNSに関係付けられる利点を伴うとしても、アクティブゾーンの数がZNS顧客により要求されることが、APL設計をさらに複雑にする。アクティブゾーンは、開いており、継続的にインクリメントされる書き込みポインタを有し、一方で、ゾーンの残り(例えば、非アクティブゾーン)は、移動していない書き込みポインタを有する。このことは、複数個のアクティブゾーンに対して、最後の書き込まれた位置がどこであるかを決定するために、スナップショット、ジャーナリング、およびスキャニングなどの従前の手法を使用するときに、APLを特に難題にする。さらに、スナップショット、および、ジャーナルを継続的にフラッシングすることは、アクティブに修正されていないデータのチャンクに対する書き込み増幅を増大する。
【0015】
本開示の態様は、揮発性メモリにおいて格納されるマッピングデータ構造に対する変化を指し示すメタデータを理路整然と追跡するために、ジャーナルデータ構造に加えて高頻度更新テーブル(HFUT)を用いることにより、上記および他の欠陥に対処する。HFUTは、およびことによると、ジャーナルデータ構造もまた、密結合メモリ(TCM)において格納され、かくして、迅速に更新され得るものであり、そのことが性能を改善する。HFUTは、LBA空間においてか物理アドレス空間においてかを問わず、書き込まれているアクティブゾーンに対して、書き込みポインタ、および、オプションでさらには、書き込みポインタに対応するインデックスを追跡するために用いられ得る。HFUTはアクティブゾーンにおける書き込みポインタに対してのみ更新されるので、HFUTは、マッピングデータ構造におけるすべての書き込みポインタを維持するために他のやり方で要されることになる追加的なストレージ空間より小さくされる。それゆえに、HFUTの使用は、マッピングデータ構造のサイズを低減し、APL事象に応じたマッピングデータ構造のフラッシングを、電力コンデンサおよび書き込み増幅の見地において、合理的に、および、より影響力のないものにする。
【0016】
例えば、1つの実施形態において、マッピングデータ構造は、LBA空間のゾーンを、ゾーン状態に、および、LBA空間の中でのゾーンインデックスにマッピングするゾーンマップデータ構造である。この実施形態において、書き込みポインタは、ゾーン書き込みポインタ提出(submission)値およびゾーン書き込みポインタ完了(completion)値に対応し得る。この実施形態におけるHFUTは、各アクティブゾーンに対するゾーン書き込みポインタ提出値およびゾーン書き込みポインタ完了値を格納するアクティブゾーンテーブルであり得る。
【0017】
別の実施形態において、マッピングデータ構造は、ゾーン識別子をブロックセット識別子にマッピングするゾーン対ブロックセット(ZTBS)データ構造である。この実施形態において、書き込みポインタは、アクティブゾーンの中での書き込みに対応するNVMデバイスにおける位置に関係付けられる値であり、かくして、物理アドレス空間に対してポイントする。HFUTは、書き込みポインタに対応するNVMデバイスの、最後の書き込まれたページ(LWP:last written page)値を格納するための書き込みトラッカテーブル(WTT)であり得る。
【0018】
これらの実施形態において、アクティブゾーンの、および、アクティブゾーンの中でポイントする書き込みポインタの状態に対する変化は、マッピングデータ構造とHFUTとの間の遷移においてフラッシングされる。これらの変化は、マッピングデータ構造と高頻度更新テーブルとの間のフラッシング遷移において、ジャーナルデータ構造の中での更新を引き起こす。APL事象に応じて、ジャーナルデータ構造がフラッシングされる。論考されるように、HFUTおよびマッピングデータ構造が、さらにはフラッシングされ得る。APL事象の後の電源投入に応じて、メモリサブシステムは、ジャーナルデータ構造、および、マッピングデータ構造によりインデックス付けされるHFUTへのアクセスによって、マッピングデータ構造の回復およびリビルドを遂行し得る。そのような回復およびリビルドを遂行するための異なる方法およびアルゴリズムが、下記で論考されることになる。
【0019】
本開示の利点は、ランタイム利益、作動可能までの時間利益(例えば、電源投入の後に再び動作中になるまでの時間)、および、APL事象に応じてフラッシングされることになるデータの量の見地における利益を含む、少なくとも3つの部類における利益を含み、ただしそれらに制限されない。ランタイム利益の見地において、ジャーナルは、継続的にフラッシングされることを必要とせず、マッピングデータ構造(例えば、ベーステーブル)のスナップショットは必要とされず、なぜならば、マッピングデータ構造におけるデータは頻繁に更新されないからである。作動可能までの時間利益の見地において、マッピングデータ構造をリビルドするために必要とされるスキャンが存せず、ジャーナル再生時間が最小限に抑えられ、書き込みに関するエラー検出が、HFUTを含むデータ構造を通して遂行され得る。フラッシングするデータの量の見地において、HFUTへとインデックス付けするマッピングデータ構造全体をフラッシングすることが可能である。さらにまた、書き込み増幅、および、電力コンデンサに対する必要性が、APL事象に応じてフラッシングされることになる量データにおける総体的な低減によって最小限に抑えられる。本明細書において以降で論考される、メモリサブシステムの中でのメモリ割り振りおよびAPL設計ハンドリングの他の利点が、当業者に明らかになることになる。
【0020】
図1Aは、本開示のいくつかの実施形態による、メモリサブシステム110を含む実施例コンピューティングシステム100を例解する図である。メモリサブシステム110は、1つもしくは複数の揮発性メモリデバイス(例えば、メモリデバイス140)、1つもしくは複数の不揮発性メモリデバイス(例えば、メモリデバイス130)、または、そのようなものの組み合わせなどのメディアを含み得る。各メモリデバイス130または140は、1つまたは複数のメモリコンポーネントであり得る。
【0021】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、または、ストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスの実施例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、およびハードディスクドライブ(HDD)を含む。メモリモジュールの実施例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、および、様々なタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)を含む。
【0022】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、乗物(例えば、飛行機、ドローン、列車、自動車、または、他の運輸機関)、モノのインターネット(IoT)を可能にされるデバイス、組み込みコンピュータ(例えば、乗物、産業機器、または、ネットワーク化された商用デバイスに含まれるもの)などのコンピューティングデバイス、または、メモリと処理デバイスとを含むそのようなコンピューティングデバイスであり得る。
【0023】
コンピューティングシステム100は、1つまたは複数のメモリサブシステム110に結合されるホストシステム120を含み得る。いくつかの実施形態において、ホストシステム120は、異なるタイプのメモリサブシステム110に結合される。
図1Aは、1つのメモリサブシステム110に結合されるホストシステム120の1つの実施例を例解する。本明細書において使用される際、「に結合される」または「と結合される」は、一般的には、電気、光学、磁気、および類するものなどの接続を含む、有線かワイヤレスかを問わない、間接的な通信接続、または、(例えば、介在するコンポーネントまたはデバイスを伴わない)直接的な通信接続であり得る、コンポーネントまたはデバイスどうしの間の接続を指す。
【0024】
ホストシステム120は、プロセッサチップセットと、プロセッサチップセットにより実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つまたは複数のコア、1つまたは複数のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、および、ストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。
【0025】
ホストシステム120は、システムバスによって通信し得る、物理ホストインターフェースを介して、メモリサブシステム110に結合され得る。物理ホストインターフェースの実施例は、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)インターフェース、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバチャネル、シリアルアタッチドSCSI(SAS)、ダブルデータレート(DDR)メモリバス、スモールコンピュータシステムインターフェース(SCSI)、デュアルインラインメモリモジュール(DIMM)インターフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)、オープンNANDフラッシュインターフェース(ONFI)、ダブルデータレート(DDR)、低電力ダブルデータレート(LPDDR)、または、任意の他のインターフェースを含み、ただしそれらに制限されない。物理ホストインターフェースは、ホストシステム120とメモリサブシステム110との間でデータを送信するために使用され得る。ホストシステム120は、メモリサブシステム110がPCIeインターフェースによりホストシステム120と結合されるとき、コンポーネント(例えば、メモリデバイス130)にアクセスするために、NVMエクスプレス(NVMe)インターフェースをさらに利用し得る。物理ホストインターフェースは、メモリサブシステム110とホストシステム120との間で、制御、アドレス、データ、および、他の信号を通過させるためのインターフェースを提供し得る。
図1Aは、実施例としてメモリサブシステム110を例解する。一般的に、ホストシステム120は、同じ通信接続、複数個の別個の通信接続、および/または、通信接続の組み合わせを介して、複数個のメモリサブシステムにアクセスし得る。
【0026】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)およびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)であり得るものであり、ただしそれらに制限されない。
【0027】
不揮発性メモリデバイス(例えば、メモリデバイス130)のいくつかの実施例は、否定論理積(NAND)タイプフラッシュメモリ、および、3次元クロスポイント(「3Dクロスポイント」)メモリなどの所定位置書き込み(write-in-place)メモリを含む。不揮発性メモリのクロスポイントアレイは、積層可能なクロスグリッドデータアクセスアレイと連関して、バルク抵抗の変化に基づいてビットストレージを遂行し得る。加えて、多くのフラッシュベースのメモリと対照的に、クロスポイント不揮発性メモリは、所定位置書き込み動作を遂行し得るものであり、その場合、不揮発性メモリセルは、不揮発性メモリセルが先に消去されることなくプログラムされ得る。NANDタイプフラッシュメモリは、例えば、2次元NAND(2D NAND)および3次元NAND(3D NAND)を含む。
【0028】
メモリデバイス130の各々は、メモリセルの1つまたは複数のアレイを含み得る。1つのタイプのメモリセル、例えば、シングルレベルセル(SLC)は、セルあたり1ビットを格納し得る。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、およびクアッドレベルセル(QLC)などの他のタイプのメモリセルは、セルあたり複数個のビットを格納し得る。いくつかの実施形態において、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、または、そのようなものの任意の組み合わせなどの、メモリセルの1つまたは複数のアレイを含み得る。いくつかの実施形態において、個別のメモリデバイスは、メモリセルの、SLC一部分、および、MLC一部分、TLC一部分、またはQLC一部分を含み得る。メモリデバイス130のメモリセルは、データを格納するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化され得る。いくつかのタイプのメモリ(例えば、NAND)に関しては、ページは、ブロックを形成するためにグループ化され得る。
【0029】
不揮発性メモリセルの、NANDタイプフラッシュメモリ(例えば、2D NAND、3D NAND)および3Dクロスポイントアレイなどの不揮発性メモリコンポーネントが説明されるが、メモリデバイス130は、読み出し専用メモリ(ROM)、相変化メモリ(PCM)、自己選択メモリ、他のカルコゲナイド系メモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、スピントランスファートルク(STT)-MRAM、導電性ブリッジングRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物系RRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、および、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)などの、任意の他のタイプの不揮発性メモリに基づき得る。
【0030】
メモリサブシステムコントローラ115(または、簡単のため、コントローラ115)は、メモリデバイス130においてデータを読み出すこと、データを書き込むこと、または、データを消去することなどの動作、および、他のそのような動作を遂行するために、メモリデバイス130と通信し得る。メモリサブシステムコントローラ115は、1つもしくは複数の集積回路および/もしくはディスクリートコンポーネント、バッファメモリ、または、それらの組み合わせなどのハードウェアを含み得る。ハードウェアは、本明細書において説明される動作を遂行するための、専用の(すなわち、ハードコードされた)論理を伴うデジタル回路網を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、特殊目的論理回路網(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、その他)、または、他の適したプロセッサであり得る。
【0031】
メモリサブシステムコントローラ115は、ローカルメモリ119において格納される命令を実行するように構成されるプロセッサ117(例えば、処理デバイス)を含み得る。例解される実施例において、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信をハンドリングすることを含む、メモリサブシステム110の動作を制御する、様々なプロセス、動作、論理フロー、およびルーチンを遂行するための命令を格納するように構成される組み込みメモリを含む。
【0032】
いくつかの実施形態において、ローカルメモリ119は、メモリポインタ、フェッチされたデータ、その他を格納するメモリレジスタを含み得る。ローカルメモリ119は、さらには、マイクロコードを格納するための読み出し専用メモリ(ROM)を含み得る。
図1Aにおける実施例メモリサブシステム110は、メモリサブシステムコントローラ115を含むように例解されているが、本開示の別の実施形態において、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに、(例えば、外部ホストにより、または、メモリサブシステムとは別個のプロセッサもしくはコントローラにより提供される)外部制御に依拠し得る。
【0033】
一般的に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは動作を受信し得るものであり、メモリデバイス130への所望されるアクセスを達成するために、コマンドまたは動作を、命令または適切なコマンドへとコンバートし得る。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション動作、エラー検出およびエラー訂正コード(ECC)動作、暗号化動作、キャッシング動作、ならびに、論理ブロックアドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と、メモリデバイス130と関連付けられる物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換などの、他の動作に対して責任を負い得る。メモリサブシステムコントローラ115は、物理ホストインターフェースを介してホストシステム120と通信するためのホストインターフェース回路網をさらに含み得る。ホストインターフェース回路網は、ホストシステムから受信されるコマンドを、メモリデバイス130にアクセスするためのコマンド命令へとコンバートし、メモリデバイス130と関連付けられる応答を、ホストシステム120に対する情報へとコンバートし得る。
【0034】
メモリサブシステム110は、さらには、例解されない追加的な回路網またはコンポーネントを含み得る。いくつかの実施形態において、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)と、メモリサブシステムコントローラ115からアドレスを受信し、メモリデバイス130にアクセスするためにアドレスを復号し得るアドレス回路網(例えば、行デコーダおよび列デコーダ)とを含み得る。
【0035】
いくつかの実施形態において、メモリデバイス130は、メモリデバイス130の1つまたは複数のメモリセルに関する動作を実行するために、メモリサブシステムコントローラ115と連関して動作するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部的に管理(例えば、メモリデバイス130に関するメディア管理動作を遂行)し得る。いくつかの実施形態において、メモリデバイス130は、同じメモリデバイスパッケージまたはメモリダイの中で、メモリ管理のためのローカルコントローラ(例えば、ローカルメディアコントローラ135)と組み合わされるロウ(raw)メモリデバイスである、マネージドメモリデバイスである。マネージドメモリデバイスの実施例は、マネージドNAND(MNAND)デバイスである。
【0036】
いくつかの実施形態において、コントローラ115は、エラー訂正コード(ECC)エンコーダ/デコーダ111を含む。ECCエンコーダ/デコーダ111は、メモリデバイス130に書き込まれるデータに対するECC符号化、および、メモリデバイス130から読み出されるデータに対するECC復号、それぞれを遂行し得る。ECC復号は、ロウ読み出しデータにおけるエラーを訂正するために、および、多くの事例においてさらには、ロウ読み出しデータにおけるビットエラーの数を報告するために、ECCコードワードを復号するために遂行され得る。
【0037】
図1Bは、実施形態による、さらに詳細な形での
図1Aのメモリサブシステム110を例解する図である。実施形態において、メモリサブシステム110は、さらには、メモリ管理を高速化し、メモリデバイス130および140において格納されるホストデータへのアクセスを手助けするために、異なるタイプの揮発性メモリ118を含む。様々な実施形態において、揮発性メモリは、メモリデバイス140A、密結合メモリ(TCM)160、および揮発性メモリデバイス125を含む。いくつかの実施形態において、コントローラ115は、プロセッサ117の中に、コマンド生成プロセッサ112、変換プロセッサ113、およびコマンド実行プロセッサ114を含む、処理デバイス(または複数個の別個の処理デバイス)の複数個の一部分を含む。
【0038】
様々な実施形態において、メモリデバイス140Aは、ゾーン記述子データ構造121およびブロックセットマップデータ構造123を格納するための、DRAMまたは他のメインメモリなどの揮発性メモリであり、なぜならば、これらのデータ構造は、普通、コントローラ115に内蔵して格納するには大きすぎるからである。プロセッサ117は、キャッシュとして機能し得る揮発性メモリである、および、プロセッサ117のダイ上に位置特定される、TCM160をさらに含み得る。TCM160は、各高頻度更新テーブル(HFUT)162、およびさらには、各ジャーナルデータ構造166を格納し得る。コントローラ115は、コントローラ115上に位置特定される別個のメモリダイである、スタティックランダムアクセスメモリ(SRAM)デバイスなどの揮発性メモリデバイス125をさらに含み得る。揮発性メモリデバイス125は、論理対物理(LTP)マッピングデータ構造、例えば、マッピングデータ構造126を格納し得るものであり、オプションでさらには、1つまたは複数のジャーナルデータ構造166を、TCM160において格納されるには個別の設計においてそのジャーナルデータ構造が大型でありすぎるならば格納し得る。様々な実施形態において、プロセッサ117は、対応するマッピングデータ構造126との関係において格納される識別子に基づいて、揮発性メモリにおける高頻度更新テーブル162の位置を決定し得る。ブロックセットマップデータ構造123を含む、マッピングデータ構造126のうちのいくつかが、
図2を参照して、より詳細に論考される。
【0039】
さらに、1つまたは複数のメモリデバイス130、140を参照して先に論考されたように、複数個のダイ(例えば、ダイAおよびダイB)の物理アドレス空間は、プレーン、ブロック、およびページにより、階層的に組織化され得る。そのため、例えば、ダイAおよびダイBの各々は、プレーンAおよびプレーンBを含み得るものであり、プレーンAおよびプレーンBの各々は、ブロックAおよびブロックBを含み得る。ブロックセット(またはブロックストライプ)は、メモリデバイスの複数個のダイのプレーンにまたがって配されるブロックのグループと定義され得る。例解されるように、ブロックセット144は、ダイAのプレーンAのブロックAを含み、ダイBのプレーンB等々の、例えばさらには、存在しオンラインであるならば、ダイC、および、続けてさらなるダイまでの、プレーンCの、ブロックAを含むように配される。
【0040】
様々な実施形態において、変換プロセッサ113(および/または、変換プロセッサ113に結合されるコントローラ115の動的データプレーサ)は、メモリデバイス130、140のメディアユニットまたはメモリコンポーネント(さらには「ICダイ」または「メディア」と称される)において、論理アドレスと関連付けられるデータを配置するために、メディアレイアウトを動的に決定する。メディアレイアウトは、(例えば、ホストシステム120から)メモリサブシステム110において受信されるコマンドにおいて使用される論理アドレスと、メモリサブシステム110のメディアにおける物理メモリ位置との間のマッピングを指定する。
【0041】
変換プロセッサ113は、例えば、メモリサブシステム110において入力/出力スケジューリングの時間においてデータを書き込む、プログラムする、格納する、コミットするためのメディアの利用可能性に基づいて、メモリデバイス130または140のメディアの物理アドレスと関連付けられる論理アドレスにおけるデータの配置のために、LBA空間の論理アドレスの一部分に対するメディアレイアウトを決定し得る。中にメディアユニットを含むICダイが、データをコミット/プログラムするために利用可能であるとき、書き込みコマンドが、メモリサブシステム110における実行のためにスケジューリングされ、変換プロセッサ113は、書き込みコマンドに対してメディアレイアウトの一部分を生成し、ICダイの中のメモリ位置にマッピングするために、書き込みコマンドにおいて使用される論理アドレスをマッピングする。書き込みコマンドの実行は、ICダイ内へと、書き込みコマンドと関連付けられるデータをコミット/プログラムすることをメモリサブシステム110に行わせる。
【0042】
メディアにまたがるICダイの利用可能性、および/または、順次マッピングスキームの適用に依存して、コントローラ115は、一度に1つのICダイをフィルアップするために、(例えば、データ局所性の順次ストリームにおいて提供される)データグループを順次的に書き込み得るものであり、さもなければ、例えば、メディアのICダイを同時的にフィルアップするために、並列に、一度に複数個のICダイに順次的に書き込み得る。LBA空間のゾーンの中での書き込みのマッピングが、さらには、マッピングデータ構造126を参照して、より詳細に論考されることになるように、マッピングを遂行するために使用される計算を単純化するために、順次的に行われ得る。利用可能な複数個のICダイが存在するとき、複数個の書き込みストリームからのコマンドにおいて使用される論理アドレス(例えば、LBA)は、複数個の書き込みストリームからのコマンドの実行におけるメディアアクセス衝突が存しないように、メディアレイアウトの動的に生成される一部分により、複数個のICダイそれぞれにマッピングされ得る。
【0043】
様々な実施形態において、コマンド生成プロセッサ112は、ホストシステム120から受信されるメモリコマンドを処理すること、ならびにさらには、ホストシステム120または別の要求エージェントからそれぞれ受信される、読み出しおよび書き込み要求に基づいて、読み出しコマンドおよび書き込みコマンドを生成することを含むように、コマンド処理を遂行する。変換プロセッサ113は、マッピングデータ構造126を使用して、LBA(または、論理転送ユニット(LTU)に参照される順次LBAのグループ)を、物理アドレス空間の物理アドレスに変換する。この変換の生成は、コマンド実行プロセッサ114に対する、コマンド生成プロセッサ112によるコマンドの生成を手助けし、そのコマンド実行プロセッサ114は、メモリデバイス130および140のメディアへのアクセスによってコマンドを実行する。コマンドは、さらにはシステムタグ(例えば、シスタグ(Systag))と称されるコマンドタグを含み得るものであり、そのタグは、(LTUと関連付けられる)LTU識別子、および、変換ユニットと関連付けられるデータがキャッシュにおいてであるかのように格納されるバッファ(例えば、メモリデバイス140Aにおけるスロット)を識別するバッファアドレスを含む。コマンド実行プロセッサ114は、メモリデバイス130または140からコマンドタグと関連付けられるデータを取得し、識別されたバッファにおいてデータを格納し得る。
【0044】
この手立てにおいて、変換プロセッサ113は、コマンドを成就するために物理レイヤの物理アドレスを知ることをコマンド実行プロセッサ114が必要とする場合に、コマンド生成プロセッサ112とコマンド実行プロセッサ114との間の仲介者として働く。本開示において、書き込みポインタおよび/または対応するインデックス情報などの、アクティブゾーンへの書き込みと関連付けられるメタデータが、APL事象への応答を手助けするために、HFUT162の中で更新され、ジャーナルデータ構造166の中でジャーナリングされ得る。
【0045】
図2は、様々な実施形態による、ゾーンベースマッピングをサポートするように構成されるデータ構造の実施例を例解するブロック線図である。コントローラ115は、
図1Bを参照して述べられたように、TCM160において、揮発性メモリデバイス125において、および/または、メモリデバイス140Aにおいて、
図2において例解されるマッピングデータ構造126のうちのいくつかを格納し得る。コントローラ115は、さらには、
図2のデータ構造を使用して、メディアレイアウト(例えば、ゾーンのデータグループが物理アドレス空間の中で位置特定されることになる場合のレイアウト)を構成または実施し得る。
図2において、ゾーンマップデータ構造201が、ZNS動作に対する、名前空間、例えばLBA空間におけるゾーンに対するメディアレイアウト情報を提供するように構成される。ゾーンマップデータ構造201は、複数個のエントリを有し得る。ゾーンマップデータ構造201における各ゾーンマップエントリは、ゾーンの開始LBAアドレス211、ゾーンのブロックセット識別子213、ゾーンのゾーンカーソル値215、ゾーンの状態217、および類するものなどの、ゾーンに関する情報を識別する。
【0046】
ホストシステム120は、ゾーン開始LBAアドレス211のLBAにおいて始まるゾーンにおいてデータを書き込む。ホストシステム120は、LBA空間において順次的にゾーンにおいてデータを書き込む。所定の量のデータがゾーン内へと書き込まれた後、後続のデータを書き込むための現在の開始LBAアドレスは、ゾーンカーソル値215により識別される。ゾーンに対する各書き込みコマンドは、ゾーンカーソル値215を、ゾーンに対する次の書き込みコマンドに対する新しい開始LBAアドレスに変更する。状態217は、ゾーンが、空である、フルである、暗黙に開いている、明示的に開いている、閉じられている、および類することであるということを指示する値を、そのゾーンを書き込むことの推移を追跡するために有し得る。
【0047】
図2において、論理対物理(LTP)ブロックマップデータ構造203が、メディアにおける物理アドレスへのLBAアドレスの変換を手助けするように構成される。LTPブロックマップデータ構造203は、複数個のエントリを有し得る。LBAは、LTPブロックマップデータ構造203におけるエントリに対するインデックス(例えば、LTU識別子)として使用され、または、そのインデックスへとコンバートされ得る。インデックスは、LBAに対するエントリをルックアップするために使用され得る。LTPブロックマップデータ構造203における各エントリは、LBAに対して、メディアにおけるメモリのブロックの物理アドレスを識別する。例えば、メディアにおけるメモリのブロックの物理アドレスは、ダイ識別子233、ブロック識別子235、ページマップエントリ識別子237
、および
それらに類するものを含み得る。ダイ識別子233は、メモリサブシステム110のメモリデバイス130、140における特定のICダイ(例えば、ダイAまたはダイB)を識別する。ブロック識別子235は、ダイ識別子233を使用して識別されるICダイの中のメモリ(例えば、NANDフラッシュメモリ)の特定のブロックを識別する。ページマップエントリ識別子237は、ページマップデータ構造205におけるエントリを識別する。
【0048】
ページマップデータ構造205は、複数個のエントリを有し得る。ページマップ205における各エントリは、メモリセル(例えば、NANDメモリセル)のブロックの中のメモリセルのページを識別するページ識別子251を含み得る。例えば、ページ識別子251は、NANDメモリセルのブロックにおける、ページに対するワードライン番号、および、ページに対するサブブロック番号を含み得る。さらに、ページに対するエントリは、ページのプログラミングモード253を含み得る。例えば、ページは、SLCモード、MLCモード、TLCモード、またはQLCモードにおいてプログラムされ得る。SLCモードにおいて構成されるとき、ページにおける各メモリセルは、1ビットのデータを格納することになる。MLCモードにおいて構成されるとき、ページにおける各メモリセルは、2ビットのデータを格納することになる。TLCモードにおいて構成されるとき、ページにおける各メモリセルは、3ビットのデータを格納することになる。QLCモードにおいて構成されるとき、ページにおける各メモリセルは、4ビットのデータを格納することになる。集積回路ダイにおける異なるページは、データプログラミングに対する異なるモードを有し得る。
【0049】
図2において、ブロックセットマップデータ構造123が、ゾーンに対する動的メディアレイアウトの態様を制御するデータを格納する。1つの実施形態においてテーブルであり得るブロックセットマップデータ構造123は、複数個のエントリを有し得る。ブロックセットデータ構造123における各ブロックセットエントリは、ゾーンのデータが格納される集積回路ダイ(例えば、ダイAおよびダイB)の数/カウント271を識別する。ゾーンに対して使用される集積回路ダイの各々に対して、ブロックセットマップデータ構造123のブロックセットエントリは、ダイ識別子273、ブロック識別子275、ページマップエントリ識別子277、ページマップオフセット値、および類するものを有する。
【0050】
ダイ識別子273は、メモリサブシステム110のメディアにおける特定のICダイ(例えば、ダイAまたはダイB)を識別し、そのICダイ上で、ゾーンの後続のデータが格納され得る。ブロック識別子275は、ダイ識別子273を使用して識別されるICダイの中のメモリ(例えば、NANDフラッシュメモリまたは他のメディア)の特定のブロックを識別し、そのブロックにおいて、ゾーンの後続のデータが格納され得る。ページマップエントリ識別子277は、ゾーンの後続のデータを格納するために使用され得るページを識別する、ページマップデータ構造205におけるページマップエントリを識別する。
【0051】
例えば、メモリサブシステム110は、書き込みコマンドの複数個のストリームを受信する。実施形態において、複数個のストリームにおける各それぞれのストリームは、1つの実施形態における論理アドレス空間において順次的にデータを書き込むように構成され、別の実施形態において、複数個のストリームにおける所定のストリームは、1つの実施形態における論理アドレス空間において擬似的に順次的に、またはランダムにデータを書き込むように構成される。各書き込みストリームは、グループとして一体でデータのセットを書き込む、トリミングする、上書きするようにタグ付けされるコマンドのセットを含む。グループにおいて、データは、順次的に、ランダムに、または、擬似的に順次的に、論理空間において書き込まれ得る。好ましくは、グループにおけるデータは、消去ブロックセット内へと書き込まれ、その場合、消去ブロックセットにおけるメモリセルは、その所定のストリームに対するデータを格納するが、他のストリームからのデータは格納しない。消去ブロックセットは、他のストリームのデータを消去することなく、その所定のストリームのデータを除去するように消去され得る。
【0052】
例えば、書き込みストリームの各々は、メモリサブシステム110のメモリデバイス130、140のメディアにおいて割り振られる名前空間におけるゾーンにおけるLBAにおいて順次的に書き込むことを許可されるが、LBA(または論理アドレス)空間において順次性を外れてデータを書き込むことを禁止される。メモリサブシステム110の変換プロセッサ113は、同時的にデータを書き込むために利用可能である、メモリサブシステム110における複数個のメディアユニットを識別する。
【0053】
変換プロセッサ113は、データを書き込むために利用可能である複数個のメディアユニットにおける同時的な実行のために、複数個のストリームから第1のコマンドを選択し得る。変換プロセッサ113は、第1のコマンドが複数個のメディアユニットにおける同時的な実行のために選択されることに応じて動的に、論理アドレス空間において第1のコマンドにより識別される論理アドレスから、複数個のメモリユニットにおけるメモリユニットの物理アドレスにマッピングされる、メディアレイアウトの一部分を生成および格納し得る。
【0054】
コマンド実行プロセッサ114は、物理アドレスによってメモリユニット内へとデータを格納することにより、第1のコマンドを同時的に実行し得る。例えば、実行のために第1のコマンドをスケジューリングする時点において、第2のコマンドの実行が、メモリサブシステム110のメディアのメモリユニットのサブセットにおいて進行中であることがある。かくして、第2のコマンドの実行のために使用されるメモリユニットのサブセットは、第1のコマンドのために利用可能ではない。第1のコマンドがスケジューリングされ、第1のコマンドにおいて使用される論理アドレスに対するメディアレイアウトの一部分が決定される後、第1のコマンドは、同時的に複数個のメディアユニットにおいて、および/または、メモリサブシステム110の残りのメディアユニットにおける第2のコマンドの実行の進行と同時的に実行され得る。
【0055】
例えば、次のコマンドの実行のために利用可能である複数個のメモリユニット(例えば、ICダイ)の識別の後、変換プロセッサ113は、ブロックセットマップデータ構造123から、次のコマンドのデータを格納するために使用され得る物理アドレスを識別し得る。物理アドレスは、次のコマンドにおいて使用されるLBAアドレス231に対するLTPブロックマップデータ構造203における対応するエントリを更新するために使用され得る。
【0056】
例えば、ICダイが自由にデータを書き込めるとき、変換プロセッサ113は、ICダイにおけるメモリセル内へと書き込まれ/プログラムされ得るゾーンのコマンドを決定し得る。ブロックセットマップデータ構造123から、変換プロセッサ113は、ゾーンに対するエントリを位置特定し、集積回路ダイの識別子273と関連付けられるブロック識別子275およびページマップエントリ識別子277を位置特定し、ゾーンのコマンドにおいて使用されるLBAに対するLTPブロックマップデータ構造203におけるエントリの対応するフィールドを更新するために、ダイ識別子273、ブロック識別子275、およびページマップエントリ識別子277を使用する。
【0057】
図3は、実施形態による、高頻度更新テーブル(HFUT)362の中でインデックス付けするマッピングデータ構造326のブロック線図である。マッピングデータ構造326、例えば、ベーステーブルは、マッピングデータ構造126のうちの1つであり得るものであり、HFUT362は、
図1BにおけるHFUT162のうちの1つであり得る。様々な実施形態において、マッピングデータ構造326は、いくつものエントリを含み、各エントリは、LBA(またはLTU)と、NVMデバイスの物理アドレス空間の物理アドレスとの間の論理対物理変換の何らかの態様と関連付けられるエントリデータを含む。各エントリは、さらには、HFUTエントリの中のメタデータがマッピングデータ構造326のエントリと関連付けられるように、HFUT362におけるインデックス付きエントリ内へとポイントするインデックス値(IDX)を含み得る。インデックス値は、例えばハッシュベースの値であり得る。いくつかの実施形態において、マッピングデータ構造は、どのテーブルインデックス値がHFUT362への割り当てに対して自由であるかを維持するために、先入れ先出し(FIFO)バッファ332を含む。
【0058】
様々な実施形態において、HFUT362は、電源障害を引き起こすAPL事象中にフラッシングされ得る、より小さい区域にマッピングされるアクティブゾーンに対する書き込みポインタ(WP)などの、頻繁に更新されるデータを格納(例えば、バッファリング)するように設計される。例えば、エントリあたり4バイトにおいて2048個の開カーソル値を維持するために、HFUT362は、8K相当のサイズのメタデータであることになる。これは、書き込みポインタメタデータを、マッピングデータ構造326などの単一の大きいテーブル内へと含めることよりはるかに小さい。計算は、例えばゾーンマップデータ構造201であり得るマッピングデータ構造326の、または、ゾーン対ブロックセットデータ構造(
図4における409)の、サイズのほぼ半分のメモリ節約を示す。このことは、ゾーンまたはブロックセットが閉じられると、書き込みポインタまたは最後の書き込まれたページ(LWP)などの項目が更新されないので、実現され得る。換言すれば、静的であるメタデータの値は、HFUT362の中で更新されることを必要とせず、そのことは、そのHFUTをはるかに小さいテーブルにする。1つの実施例として、16テラバイトドライブにおいて30Kゾーンを有するシステムにおいて、メモリ節約は有意である。このドライブの約7パーセントのみが、常時アクティブに書き込まれている。
【0059】
APL事象の後の臨時の回復作業においてを除いてスキャニングを防ぐために、ジャーナルデータ構造が、マッピングデータ構造326とHFUT362との間のフラッシング遷移をログに記録するために使用され、そのことは、
図4を参照して、より詳細に論考されることになる。このことは、ジャーナルエントリが、さらには、HFUT362のエントリにおけるメタデータに対してインデックス付けし得るように、インデックス値(IDX)をマッピングデータ構造326におけるエントリに割り当てることにより行われる。このインデックス付けを遂行することに対する軽微なパフォーマンスヒットは、アクティブゾーンに関係付けられる、はるかに少ないデータを、ログに記録すること、および、ジャーナリングすることの利益と比較して小さい。
【0060】
図4は、様々な実施形態による、マッピングデータ構造126のサイズを低減するためにジャーナルおよび高頻度更新テーブルを用いる、ならびに、非同期電力損失(APL)に応じたフラッシングを可能とする、マッピングデータ構造126のブロック線図である。例えば、マッピングデータ構造126は、コマンド生成プロセッサ112により管理される、ゾーン記述子データ構造121と、ゾーンマップデータ構造201とを含み得る。ゾーンマップジャーナルデータ構造166Aは、ゾーン記述子データ構造121に対する更新に基づいて、および、ゾーンマップデータ構造201と、ゾーンマップデータ構造201と関連付けられる高頻度更新テーブル(HFUT)であるアクティブゾーンテーブル162Aとの間のフラッシング遷移に基づいて、エントリをジャーナリングし得る。プロセッサ117は、揮発性メモリデバイス125においてゾーンマップデータ構造201との関係において格納される識別子に基づいて、TCM160における、高頻度更新テーブル162、例えばアクティブゾーンテーブル162Aの位置を決定し得る。1つの実施形態において、ゾーンマップジャーナルデータ構造201は、APL事象に応じてフラッシングされるのみである。フラッシングは、メモリデバイス130および140の不揮発性メモリ(NVM)デバイスに電力コンデンサを使用して保存されるデータを書き込むことにより、APL事象中に、およびかくして、APL事象に応じて起こり得る。
【0061】
1つの実施形態において、ゾーン記述子データ構造121は、ゾーンID(例えば、ゾーンIDのハッシュ値)によりハッシュされるフラットなインデックス付きマッピングテーブルであり、ゾーンIDは、LTU識別子よりはるかに大きい値である。ゾーンIDは、例えば、LTU識別子に対する値をゾーンサイズ値で割ることにより、LTU識別子およびゾーンサイズ値から計算され得る。用語「フラット」は、2次元であるハッシュインデックス付きテーブル、例えば、木または連結リストを指す。ゾーン記述子データ構造121は、ホストシステム120によりコントローラ115に送出されるゾーン記述子データを格納し得る。
【0062】
1つの実施形態において、ゾーンマップデータ構造201は、ハッシュされたゾーンID、例えば、LTU識別子の値よりはるかに大きい値によりインデックス付けされる、フラットなインデックス付きマッピングテーブルである。ゾーンマップデータ構造201における各エントリは、ゾーン状態と、LBA空間の中でのゾーンインデックスとを含むメタデータを内包し得るものであり、そのゾーンインデックスは、1つの実施形態において、ゾーン書き込みポインタ提出値と、ゾーン書き込みポインタ完了値とを含む。これらの値は、同じ時間において、および、ゾーンIDにより識別されるゾーンへの書き込みの完了時に書き込まれ得る。ゾーンマップデータ構造201は、特にアクティブゾーンテーブル162Aの使用によって、APL事象中にフラッシングされるのに十分に小さくあり得るものであり、なぜならば、ゾーンマップデータ構造201のデータは、頻繁にではなく変化するからである。
【0063】
様々な実施形態において、アクティブゾーンテーブル162Aは、開ゾーンに対するゾーン書き込みポインタ提出値およびゾーン書き込みポインタ完了値を格納する。それゆえに、ゾーンマップジャーナルデータ構造166Aは、ゾーンマップデータ構造201とアクティブゾーンテーブル162Aとの間の、これらの値におけるフラッシング遷移を記録(例えば、ジャーナリング)し得る。この手立てにおいて、各書き込みが、アクティブ状態におけるゾーンに対してアクティブゾーンテーブル162Aにおいて更新される。APL事象時、アクティブゾーンテーブル162Aはフラッシングされ、それゆえに、その情報(現在の書き込み動作に関する)は、書き込み動作が完了してしまうまで、ゾーンマップジャーナルデータ構造166Aにおいてジャーナリングされることを必要としない。この設計は、ゾーンマップジャーナルデータ構造166Aが、継続的にフラッシングされる代わりに、電源異常においてのみフラッシングされ得るような、管理可能なサイズジャーナルを可能とする。
【0064】
いくつかの実施形態において、ゾーンへの書き込みの完了時、コントローラ115は、ゾーンへの書き込み要求に対するゾーン識別子とゾーンインデックスとの間のマッピングを、ゾーンマップデータ構造201のエントリにさらに入力し得る。コントローラ115は、ゾーンマップデータ構造201において、ゾーンが閉じられているということを指示するために、ゾーンをさらに非アクティブ化し得る。
【0065】
コントローラ115は、ジャーナルデータ構造(例えば、ゾーンマップジャーナル166A)を、NVMデバイスから、揮発性メモリ、例えばTCM160内へと戻るように読み出すことを含むように、リブートの後の回復およびリビルドをさらに遂行し得る。コントローラ115は、高頻度更新テーブル(例えば、アクティブゾーンテーブル162A)を、NVMデバイスから、揮発性メモリ、例えばTCM160内へと戻るようにさらに読み出し得る。コントローラ115は、ジャーナルデータ構造におけるメタデータ、および、高頻度更新テーブルにおける最後の記録されたゾーン書き込みポインタに基づいて、ゾーンマップデータ構造201のエントリをさらに更新し得る。
【0066】
ゾーンマップジャーナルデータ構造166Aにおけるエントリを再生するための小時間(smalltime)は、バージョンまたはタイムスタンプによって制御され得る。エントリを再生することは、エントリを、例えば、この実施形態においてはTCM160の形での、揮発性メモリ内へと戻るように読み出すことを意味する。これらの更新は、さらには、ゾーン記述子データ構造121のスナップショットに対して起こり得るものであり、例えば、ゾーン記述子データ構造121において格納されるゾーン記述子によって、ゾーンマップジャーナルデータ構造166Aを更新し得る。それゆえに、アクティブゾーンテーブル162Aは、APL事象が起こった時間の時点の正確な値によって、NVMデバイスから揮発性メモリに復元され得る。ゾーンマップジャーナルデータ構造166Aは、(アクティブゾーンテーブル162Aの)各HFUTエントリをウォークスルーし、提出および完了ポインタ値を比較することだけにより、修復動作を要するエラーをチェックし得る。
【0067】
かくして、1つの実施形態において、コントローラ115は、アクティブゾーンテーブル162Aを、NVMデバイスから、揮発性メモリ内へと戻るように読み出すことを含むように、リブートの後のリビルド中にゾーンマップデータ構造201におけるエラーを識別し得る。コントローラ115は、さらに、ゾーンマップデータ構造201のエントリにおけるゾーン書き込みポインタ提出値を、アクティブゾーンテーブル162Aのエントリにおける対応する値と比較し、ゾーンマップデータ構造201のエントリにおけるゾーン書き込みポインタ完了値を、アクティブゾーンテーブル162Aのエントリにおける対応する値と比較し得る。エラーがあれば、アクティブゾーンテーブル162Aを参照して修復され得るものであり、エラーが依然として起こるならば、コントローラ115は、フルスキャンを開始し得る。
【0068】
マッピングデータ構造126は、変換プロセッサ113により管理される、ゾーン対ブロックセット(ZTBS)データ構造409と、ブロックセットマップデータ構造123と、書き込みシーケンスデータ構造410とをさらに含み得る。変換マップジャーナルデータ構造166Bは、ブロックセットマップデータ構造123に対する更新に基づいて、および、ZTBSデータ構造409と、ZTBSデータ構造409と関連付けられる高頻度更新テーブル(HFUT)である書き込みトラッカテーブル162Bとの間のフラッシング遷移に基づいて、エントリをジャーナリングし得る。ZTBSデータ構造409は、特に書き込みトラッカテーブル162Bの使用によって、APL事象中にフラッシングされるのに十分に小さくあり得るが、電力コンデンサを使用してフラッシングされる能力は、書き込み粒度に依存して設計固有である。
【0069】
1つの実施形態において、ブロックセットマップデータ構造123は、ブロックセットID(例えば、ブロックストライプID)によりインデックス付けされる、フラットなインデックス付きマッピングテーブルである。ブロックセットマップデータ構造123は、ブロックセットIDから、メディアの各ダイの中の物理ブロック(例えば、物理ブロックアドレスまたは識別子)にマッピングし得る。1つの実施形態において、ZTBSデータ構造409は、ハッシュされたゾーンID値、例えば、LTU識別子の値よりはるかに大きい値によりインデックス付けされる、フラットなインデックス付きマッピングテーブルである。実施形態において、変換プロセッサ113は、ZTBSデータ構造409を管理する。ZTBSデータ構造409は、データが所在するブロックセットを識別するブロックセット識別子(ID)(例えば、ブロックストライプ番号)に、ゾーンIDをマッピングし得る。
【0070】
1つの実施形態において、書き込みシーケンスデータ構造410は、ハッシュされたLTU識別子またはLBA値によりインデックス付けされる、フラットなインデックス付きマッピングテーブルである。書き込みシーケンスデータ構造210は、ZNSプロトコルごとの順次的な順序における物理アドレスへの書き込みを確実にするために、メモリデバイス130および140の物理アドレスへの書き込みの位置を追跡し得る。
【0071】
様々な実施形態において、書き込みトラッカテーブル162Bは、NVMデバイスにおける最後の書き込まれたページ(LWP)を格納し、APL事象に応じてのみフラッシングされ得る。それゆえに、変換マップジャーナルデータ構造166Bは、ZTBSデータ構造409と書き込みトラッカテーブル162Bとの間の、これらのLWP値におけるフラッシング遷移を記録(例えば、ジャーナリング)し得る。この手立てにおいて、各書き込みが、アクティブ状態におけるゾーンに対して書き込みトラッカテーブル162Bにおいて更新される。APL事象時、書き込みトラッカテーブル162Bはフラッシングされ、それゆえに、その情報(現在の書き込み動作に関する)は、書き込み動作が完了してしまうまで、変換マップジャーナルデータ構造166Bにおいてジャーナリングされることを必要としない。この設計は、ジャーナルマップジャーナルデータ構造166Bが、継続的にフラッシングされる代わりに、電源異常においてのみフラッシングされ得るような、管理可能なサイズジャーナルを可能とする。
【0072】
いくつかの実施形態において、ゾーンへの書き込みの完了時、コントローラ115は、アクティブゾーンへの書き込み要求に対する、対応するLBA空間と、対応する物理アドレス空間との間のマッピングを、マッピングデータ構造(例えば、ZTBSデータ構造409)のエントリにさらに入力し得る。コントローラは、マッピングデータ構造において、アクティブゾーンを閉じるために、アクティブゾーンをさらに非アクティブ化し得る。
【0073】
コントローラ115は、ジャーナルデータ構造(例えば、変換マップジャーナルデータ構造166B)を、NVMデバイスから、揮発性メモリ、例えばTCM160内へと戻るように読み出すことを含むように、リブートの後の回復およびリビルドをさらに遂行し得る。コントローラ115は、高頻度更新テーブル(例えば、書き込みトラッカテーブル162B)を、NVMデバイスから、揮発性メモリ、例えばTCM160内へと戻るようにさらに読み出し得る。コントローラ115は、ジャーナルデータ構造におけるメタデータ、および、高頻度更新テーブルにおける最後の記録された書き込みポインタに基づいて、マッピングデータ構造のエントリをさらに更新し得る。
【0074】
変換マップジャーナルデータ構造166Bにおけるエントリを再生するための小時間は、バージョンまたはタイムスタンプによって制御され得る。エントリを再生することは、エントリを、例えば、この実施形態においてはTCM160の形での、揮発性メモリ内へと戻るように読み出すことを意味する。これらの更新は、さらには、ブロックセットマップデータ構造123のスナップショットに対して起こり得るものであり、例えば、ブロックセットマップデータ構造123に対する更新によって、変換マップジャーナルデータ構造166Bを更新し得る。それゆえに、書き込みトラッカテーブル162Bは、APL事象が起こった時間の時点の正確な値によって、NVMデバイスから揮発性メモリに復元され得る。変換マップジャーナルデータ構造166Bは、(書き込みトラッカテーブル162Bの)各HFUTエントリをウォークスルーし、LWP値が、書き込みシーケンスデータ構造410により決定付けられるような予期される順序においてのものであるということを確実にすることだけにより、修復動作を要するエラーをチェックし得る。
【0075】
よって、1つの実施形態において、コントローラ115は、最初に、書き込みトラッカテーブル162Bを、NVMデバイスから、揮発性メモリ内へと戻るように読み出すことにより、APL事象の後の電源投入の後の回復およびリビルドを遂行し得る。コントローラ115は、ZTBSデータ構造409および書き込みシーケンスデータ構造410を、NVMデバイスから、揮発性メモリ内へと戻るようにさらに読み出し得る。コントローラ115は、書き込みトラッカテーブル162Bにおいて内包されるLWP値が、書き込みシーケンスデータ構造410において順序付けられるような順序になっているかどうかをさらに決定し得る。コントローラ115は、LWP値の順序における検出されるエラーに応じて、ZTBSデータ構造をさらに更新し得る。
【0076】
図5は、実施形態による、順次的にプログラムするメモリサブシステムの中でAPLを効率的にハンドリングするための方法500のフローチャートである。方法500は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法500は、
図1A~1Bのコントローラ115(例えば、プロセッサ117)により遂行される。個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0077】
処理論理は、不揮発性メモリ(NVM)デバイスに通信可能に結合される揮発性メモリの中に、論理ブロックアドレス(LBA)空間の各ゾーンを、NVMデバイスの対応する物理アドレス空間にマッピングするマッピングデータ構造を格納し得る。各ゾーンは、複数個の順次物理アドレスにマッピングされる、対応する複数個の順次LBAを含み得る。処理論理は、さらには、揮発性メモリにおいて、ジャーナルデータ構造および高頻度更新テーブル(HFUT)を格納し得る。揮発性メモリは、
図1Bを参照して論考されたように、TCM160および揮発性メモリデバイス125の組み合わせであり得る。ジャーナルデータ構造は、ゾーンマップジャーナルデータ構造166A、変換マップジャーナルデータ構造166B、または、何らかの他のジャーナルデバイスのうちの1つであり得る。HFUTは、アクティブゾーンテーブル162A、書き込みトラッカテーブル162B、または、何らかの他のHFUT構造のうちの1つであり得る。
【0078】
動作520において、処理論理は、書き込み要求に応じて、LBA空間のアクティブゾーンに書き込むことであって、アクティブゾーンは、マッピングデータ構造の中で、不揮発性メモリ(NVM)デバイスの対応する物理アドレス空間にマッピングされる、書き込むことを行う。論考されたように、コマンド生成プロセッサ112は、コマンド実行プロセッサ114が書き込みを始めることになる物理アドレスを有するコマンドタグを含むコマンドを生成し得る。この物理アドレスは、アクティブゾーンが順次的に書き込まれる際に追跡され得る書き込みポインタと関連付けられることになる。
【0079】
動作530において、処理論理は、揮発性メモリにおいて格納される高頻度更新テーブルのエントリの中で、アクティブゾーンの中での書き込みに対応するNVMデバイスにおける位置に対する書き込みポインタの値を書き込む。書き込みポインタがアクティブゾーンテーブル162Aにおいて格納されることになるならば、書き込みポインタは、LBA空間と関連付けられるゾーン書き込みポインタであり得る。書き込みポインタが書き込みトラッカテーブル162Bにおいて格納されることになるならば、書き込みポインタは、NVMデバイスの物理アドレス空間に対してポイントする物理書き込みポインタであり得る。
【0080】
動作540において、処理論理は、マッピングデータ構造のエントリの中で、高頻度更新テーブルのエントリに対してポイントするテーブルインデックス値を書き込む。このインデックス付けが実施される手立ては、
図3を参照して論考され、ジャーナルデータ構造が、マッピングデータ構造とHFUTとの間のフラッシング遷移を追跡することを可能にする。
【0081】
動作550において、処理論理は、揮発性メモリにおいて格納されるジャーナルデータ構造の中で、マッピングデータ構造と高頻度更新テーブルとの間のフラッシング遷移によって影響を及ぼされる、マッピングデータ構造または高頻度更新テーブルのうちの少なくとも1つのエントリのメタデータを更新する。そのようなフラッシング遷移は、書き込み動作の完了の後に起こり得るものであり、それゆえに、書き込みポインタのジャーナリングは、そのような書き込み完了が完了されてしまうまで起こることを必要としない。
【0082】
動作560において、非同期電力損失(APL)事象に応じて、処理論理は、ジャーナルデータ構造および高頻度更新テーブルをNVMデバイスにフラッシングする。1つの実施形態において、処理論理は、さらには、マッピングデータ構造をNVMデバイスにフラッシングし得る。これらのデータ構造およびHFUTはフラッシングされているので、それらは、
図4を参照して論考された、ならびに、
図7および
図8を参照して、より詳細に論考されることになるように、メモリデバイスのリブート時に再生され、マッピングデータ構造の回復およびリビルドを遂行することにおいて使用され得る。
【0083】
図6は、別の実施形態による、順次的にプログラムするメモリサブシステムの中でAPLを効率的にハンドリングするための方法600のフローチャートである。方法600は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法600は、
図1A~1Bのコントローラ115(例えば、プロセッサ117)により遂行される。個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0084】
処理論理は、不揮発性メモリ(NVM)デバイスに通信可能に結合される揮発性メモリの中に、論理ブロックアドレス(LBA)空間のゾーンを、ゾーン状態に、および、LBA空間の中でのゾーンインデックスにマッピングするゾーンマップデータ構造201を格納し得る。ゾーンは、例えば、複数個の順次物理アドレスにマッピングされる複数個の順次LBAであり得る。処理論理は、さらには、揮発性メモリにおいて、ジャーナルデータ構造および高頻度更新テーブルを格納し得る。揮発性メモリは、
図1Bを参照して論考されたように、TCM160および揮発性メモリデバイス125の組み合わせであり得る。ジャーナルデータ構造は、ゾーンマップジャーナルデータ構造166A、または、何らかの他のジャーナルデバイスのうちの1つであり得る。HFUTは、アクティブゾーンテーブル162A、または、何らかの他のHFUT構造のうちの1つであり得る。
【0085】
図6を参照すると、動作620において、処理論理は、書き込み要求に応じて、LBA空間のアクティブゾーンに書き込むことであって、アクティブゾーンは、ゾーンマップデータ構造201の中で、ゾーン状態に、および、LBA空間の中でのゾーンインデックスにマッピングされる、書き込むことを行う。アクティブゾーンは、不揮発性メモリ(NVM)デバイスの複数個の順次物理アドレスにマッピングされる複数個の順次LBAを含み得る。論考されたように、コマンド生成プロセッサ112は、コマンド実行プロセッサ114が書き込みを始めることになる物理アドレスを有するコマンドタグを含むコマンドを生成し得る。この物理アドレスは、アクティブゾーンが順次的に書き込まれる際に追跡され得る書き込みポインタと関連付けられ得る。
【0086】
動作630において、処理論理は、揮発性メモリにおいて格納される高頻度更新テーブルのエントリの中で、ゾーンインデックスに対応するゾーン書き込みポインタの値を書き込むことであって、ゾーン書き込みポインタは、書き込み要求のサービスにおけるゾーンに対する、処理デバイスが書き込んでいるLBA空間における位置に対するものである、書き込むことを行う。書き込みポインタがアクティブゾーンテーブル162Aにおいて格納されることになるならば、書き込みポインタは、LBA空間の中での割り振りに対してポイントするゾーン書き込みポインタであり得る。
【0087】
動作640において、処理論理は、ゾーンマップデータ構造201のエントリの中で、高頻度更新テーブル(HFUT)のエントリに対してポイントするテーブルインデックス値を書き込む。1つの実施形態において、HFUTは、アクティブゾーンテーブル162Aである。このインデックス付けが実施される手立ては、
図3を参照して論考され、ゾーンマップジャーナルデータ構造166Aが、ゾーンマップデータ構造201とアクティブゾーンテーブル162Aとの間のフラッシング遷移を追跡することを可能にする。
【0088】
動作650において、処理論理は、揮発性メモリにおいて格納されるジャーナルデータ構造の中で、ゾーンマップデータ構造201と高頻度更新テーブルとの間のフラッシング遷移によって影響を及ぼされる、ゾーンマップデータ構造201またはジャーナルデータ構造のうちの少なくとも1つのエントリのメタデータを更新する。そのようなフラッシング遷移は、書き込み動作の完了の後に起こり得るものであり、それゆえに、書き込みポインタ(または対応する情報)のジャーナリングは、そのような書き込み完了が完了されてしまうまで起こることを必要としない。
【0089】
動作660において、処理論理は、非同期電力損失(APL)事象に応じて、ジャーナルデータ構造および高頻度更新テーブルをNVMデバイスにフラッシングする。1つの実施形態において、処理論理は、さらには、ゾーンマップデータ構造201をNVMデバイスにフラッシングし得る。これらのデータ構造およびHFUTはフラッシングされているので、それらは、
図4を参照して論考された、ならびに、
図7および
図8を参照して、より詳細に論考されることになるように、メモリデバイスのリブート時に再生され、マッピングデータ構造の回復およびリビルドを遂行することにおいて使用され得る。
【0090】
図7は、実施形態による、APLからのリブートの後のマッピングデータ構造の回復のための方法のフローチャートである。方法700は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法700は、
図1A~1Bのコントローラ115(例えば、プロセッサ117)により遂行される。個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0091】
図7を参照すると、動作705において、処理論理は、マッピングデータ構造126、HFUT162、およびジャーナルデータ構造166を、NVMデバイスから、揮発性メモリ内へと戻るようにロードする。揮発性メモリは、
図1Bを参照して論考されたように、TCM160および揮発性メモリデバイス125の組み合わせであり得る。ジャーナルデータ構造は、ゾーンマップジャーナルデータ構造166A、変換マップジャーナルデータ構造166B、または、何らかの他のジャーナルデバイスのうちの1つであり得る。HFUTは、アクティブゾーンテーブル162A、書き込みトラッカテーブル162B、または、何らかの他のHFUT構造のうちの1つであり得る。
【0092】
動作710において、処理論理は、APL事象が起こってしまい、かくして、メモリサブシステム110がAPL事象の後に電源投入している(例えば、ブート)かどうかを決定する。いいえならば、動作712において、処理論理は、ブートが完了であるということをコマンド生成プロセッサ112に知らせる。答えがはいであるならば、動作715において、処理論理は、例えば、最後の書き込まれたエントリと関係のある、ジャーナルデータ構造166と関連付けられるジャーナル情報ページを読み出す。
【0093】
動作720において、処理論理は、ルート情報ページ(RIP)において最後のバージョンマーカを取得する。バージョンマーカは、コントローラ115が事象をシーケンス化することを可能とする、前方に進むカウンタである。より遅くの値(ロールオーバに対して責任をもつ)を伴うバージョンマーカは、タイムスタンプと同様に、マーキングされた事象がより遅くに生じたということを意味する。時間における差は、継続的に巡り動いているが、バージョンマーカは、クリティカルポイントにおいて、例えば、マイグレーションが完了されるときに更新されるのみであり得るものであり、そのことは、コントローラ115が、ある決まったバージョンマーカの前は再生が不必要であるということを決定することを可能とする。
【0094】
図7を継続して参照すると、動作725において、処理論理は、ジャーナルデータ構造166が利用可能であるかどうかを決定する。いいえならば、処理論理は、
図8を参照して論考されるようなデータ構造の検証に飛ぶ。はいならば、動作730において、処理論理は、ジャーナルデータ構造166においてバージョンマーカを位置特定する。動作735において、処理論理は、ジャーナルエントリ(バージョンマーカによってマーキングされる)が有効であるかどうかを決定し得る。いいえならば、処理論理は、動作725に戻るようにループする。はいならば、動作740において、処理論理は、ジャーナルエントリによってデータ構造を更新する。これらのデータ構造は、例えば、マッピングデータ構造126と、HFUT162とを含み得る。
【0095】
動作745において、処理論理は、最後のバージョンマーカによってマーキングされる、ジャーナルデータ構造における別のジャーナルエントリが存するかどうかを決定する。はいならば、処理論理は、ジャーナルエントリ有効性をチェックすること、および、動作740において、有効なジャーナルエントリがあればそれによってデータ構造を更新することを継続するために、動作735に戻るようにループする。いいえならば、そのようなジャーナルエントリは、これ以上は存せず、処理論理は、
図8を参照して論考されるようなデータ構造の検証に続けて進む。
【0096】
図8は、実施形態による、APLからのリブートの後の回復されたマッピングデータ構造の検証のための方法800のフローチャートである。方法800は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法800は、
図1A~1Bのコントローラ115(例えば、プロセッサ117)により遂行される。回復されたマッピングデータの検証は、データが適正に回復されたということの検証を可能とし得るものであり、かくして、コンピューティングシステムが機能するための前提条件ではなく、試験として機能し得る。様々なレベルにおいて、方法800は、(状態を有する)アクティブゾーンテーブル162Aの内容を、ゾーンマップデータ構造201と比較し得る。アクティブゾーンテーブル162Aのインデックスが、正しいゾーンIDまたはLBA識別子に対してポイントするということのさらなるチェックがなされ得る。方法800は、さらには、インデックスに対する重複エントリが存しないということ、および、他の、より詳細に論考されることになるようなチェックを検証し得る。
【0097】
個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0098】
図8を参照すると、(示されない)描写されるフローの開始の前に、最初に、すべてのデータ比較を、およびかくして、全体的に検証を飛ばすべきかどうかを決定するためのチェックが存し得る。そのように指図されるならば、処理論理は、動作870およびブート完了まで飛び得る。このことは、データ検証に関する懸念が存し得ない場合に、より迅速なブートサイクルを可能とし得る。そうでなければ、検証が前進するということを想定して、動作802において、処理論理は、ゾーンマップデータ構造201における各完了書き込みポインタ(CWP)値および各提出書き込みポインタ(SWP)値を、アクティブゾーンテーブル162Aにおけるエントリの対応する値と比較する。動作810において、処理論理は、アクティブゾーンテーブル162Aが比較に基づいて検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、アクティブゾーンテーブル162Aを訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。
【0099】
アクティブゾーンテーブル162Aが検証されるならば、動作815において、処理論理は、アクティブゾーンテーブル162Aのゾーン状態およびインデックス値(IDX)を検証する。動作820において、処理論理は、ゾーンマップデータ構造201がゾーン状態およびインデックス値の検証に基づいて検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、ゾーンマップデータ構造201を訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。軽微な修復は、不備、または、矛盾するデータを直すことであり得る。アクティブゾーンのスキャンを遂行することは、長い時間がかかり得るが、データ構造およびテーブルをリビルドするための最終措置として遂行され得る。
【0100】
ゾーンマップデータ構造201が検証されるならば、動作825において、処理論理は、書き込みトラッカテーブル162Bにおける書き込みポインタの値を、アクティブゾーンテーブル162Aにおける書き込みポインタの値と比較する。この比較は、書き込みポインタの正しくない位置があれば識別するために遂行され得る。書き込みポインタは、不完全な書き込み動作に起因して、または、アクティブゾーンテーブル162Aが、書き込みトラッカテーブル162Bにおけるポインタの値にマッチングしないCWP値を有する場合、正しくないことがある。動作830において、処理論理は、書き込みトラッカテーブル162Bがこの比較に基づいて検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、書き込みトラッカテーブル162Bを訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。
【0101】
書き込みトラッカテーブル162Bが検証されるならば、動作835において、処理論理は、ブロック、例えば、ゾーンのブロックセットのプールにおけるカウントを検証する。ブロックセットの維持が、プールにおいて、それらの状態に基づいて行われ得る。これは、ブロックセットの状態が、ブロックセットが所在するプールにマッチングするということの検証である。プールは、ガベージコレクション、ウェアレベリング、および類するものなどの目的のための、ある決まった状態におけるブロックセットへの迅速なアクセスを可能とする。何がAPL中に起こったかに依存して、ブロックセットのうちのいくつかは、異なるプールの間で、例えば、書き込みプールから、書き込まれたプールに変更されることを必要とし得る。動作840において、処理論理は、ブロックセット情報が検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、ブロックセット情報を訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。
【0102】
ブロックセット情報が検証されるならば、動作845において、処理論理は、ZTBSデータ構造409のブロックセット識別子(ID)およびインデックス値(IDX)が、アクティブゾーンテーブル162Aのブロックセット情報およびインデックスそれぞれにマッチングするということを検証する。動作850において、処理論理は、ZTBSデータ構造409が検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、ZTBSデータ構造409を訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。
【0103】
ZTBSデータ構造409が検証されるならば、動作855において、処理論理は、ブロックが有効であるということ、および、何らかのエラーがブロックセットマップデータ構造123において検出されるかどうかをチェックする。例えば、依然としてマッピングされる、不備、または、欠陥のあるブロックはないということである。これは、欠陥リストに追加されたブロックを探し求めて、または、欠陥のあるブロックにより創出された不備が存したかどうかを調べてスキャンされ得るブロックセットマップであり得るものであり、次いで、ブロックセットマップスキャンは、そのような正しくないマッピングをチェックすることになる。
【0104】
動作860において、処理論理は、ブロックセットマップデータ構造123が検証されるかどうかを決定する。検証されないならば、動作805において、処理論理は、ブロックセットデータ構造123を訂正するために、軽微な修復を施し、必要ならば、アクティブゾーンをスキャンする。ブロックセットデータ構造123が検証されるならば、動作870において、処理論理は、ブートが完了したということをコマンド生成プロセッサ112に知らせる。
【0105】
図9は、コンピュータシステム900の実施例マシンを例解し、そのコンピュータシステムの中で、本明細書において論考される方法論のうちの任意の1つまたは複数を遂行することをマシンに行わせるための命令のセットが実行され得る。いくつかの実施形態において、コンピュータシステム900は、メモリサブシステム(例えば、
図1Aのメモリサブシステム110)を含む、そのメモリサブシステムに結合される、または、そのメモリサブシステムを利用する、ホストシステム(例えば、
図1Aのホストシステム120)に対応し得る。代替的な実施形態において、マシンは、LAN、イントラネット、エクストラネット、および/またはインターネットにおける他のマシンに対して接続(例えば、ネットワーク化)され得る。マシンは、クライアント-サーバネットワーク環境におけるサーバもしくはクライアントマシンの立場において、ピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、または、クラウドコンピューティングインフラストラクチャもしくは環境におけるサーバもしくはクライアントマシンとして動作し得る。
【0106】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、セルラー電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、または、そのマシンによりとられることになるアクションを指定する命令のセットを(順次的に、または、他の形で)実行する能力をもつ任意のマシンであり得る。さらに、単一のマシンが例解されるが、用語「マシン」は、さらには、本明細書において論考される方法論のうちの任意の1つまたは複数を遂行するための命令のセット(または、複数個のセット)を、個々に、または一緒に実行するマシンの任意の集合体を含むと解されるものとする。
【0107】
実施例コンピュータシステム900は、バス930を介して互いと通信する、処理デバイス902と、メインメモリ904(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)またはRambus DRAM(RDRAM)などのダイナミックランダムアクセスメモリ(DRAM)、その他)と、スタティックメモリ906(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、その他)と、データストレージシステム918とを含む。
【0108】
処理デバイス902は、マイクロプロセッサ、中央処理ユニット、または類するものなどの、1つまたは複数の汎用処理デバイスを表す。より詳しくは、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または、他の命令セットを実施するプロセッサ、または、命令セットの組み合わせを実施するプロセッサであり得る。処理デバイス902は、さらには、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または類するものなどの、1つまたは複数の特殊目的処理デバイスであり得る。処理デバイス902は、本明細書において論考される動作およびステップを遂行するための命令926を実行するように構成される。コンピュータシステム900は、ネットワーク920によって通信するためのネットワークインターフェースデバイス908をさらに含み得る。
【0109】
データストレージシステム918は、本明細書において説明される方法論または機能のうちの任意の1つまたは複数を実施する、命令926の1つもしくは複数のセット、またはソフトウェアが格納される、マシン可読ストレージメディア924(さらには、コンピュータ可読メディアとして知られている)を含み得る。命令926は、さらには、コンピュータシステム900によるそれらの命令の実行中、メインメモリ904の中に、および/または、処理デバイス902の中に、完全に、または、少なくとも部分的に所在し得るものであり、メインメモリ904および処理デバイス902が、さらにはマシン可読ストレージメディアを組成する。マシン可読ストレージメディア924、データストレージシステム918、および/またはメインメモリ904は、
図1A~1Bのメモリサブシステム110に対応し得る。
【0110】
1つの実施形態において、命令926は、
図1Bのプロセッサ117により実行可能な機能性を実施するための命令を含む。マシン可読ストレージメディア924は、単一のメディアであるように実施例実施形態において示されるが、用語「非一時的マシン可読ストレージメディア」は、命令の1つまたは複数のセットを格納する、単一のメディアまたは複数個のメディアを含むと解されるべきである。用語「マシン可読ストレージメディア」は、さらには、マシンによる実行のための命令のセットを格納または符号化する能力をもつ、および、本開示の方法論のうちの任意の1つまたは複数を遂行することをマシンに行わせる、任意のメディアを含むと解されるものとする。用語「マシン可読ストレージメディア」は、よって、ソリッドステートメモリ、光学メディア、および磁気メディアを含む、ただしそれらに制限されないと解されるものとする。
【0111】
前述の詳細な説明のいくつかの一部分は、コンピュータメモリの中のデータビットに関する動作のアルゴリズムおよび記号的表現の見地において提示された。これらのアルゴリズム的な説明および表現は、データ処理技術における当業者により、それらの当業者の成果の大意を他の当業者に最も効果的に伝えるために使用される手立てである。アルゴリズムは、ここでは、および一般的には、所望される結果につながる動作の自己無撞着シーケンスであると考えられる。動作は、物理的数量の物理的操作を要するものである。普通、必ずではないが、これらの数量は、格納される、組み合わされる、比較される、および、他の形で操作されることを受け入れる能力をもつ、電気または磁気信号の形式をとる。これらの信号を、ビット、値、要素、記号、文字、項、数字、または類するものと称することが、主として慣用の理由のために、時には好都合であることが分かっている。
【0112】
しかしながら、これらの、および同様の用語のすべては、適切な物理的数量と関連付けられるためのものであり、これらの数量に適用される好都合なラベルにすぎないということが、心に留め置かれるべきである。本開示は、コンピュータシステムのレジスタおよびメモリの中の物理的(電子的)数量として表されるデータを、コンピュータシステムメモリもしくはレジスタ、または、他のそのような情報ストレージシステムの中の物理的数量として同様に表される他のデータへと操作および転換する、コンピュータシステム、または、同様の電子コンピューティングデバイスの、アクションおよびプロセスを指し得る。
【0113】
本開示は、さらには、本明細書における動作を遂行するための装置に関係する。この装置は、意図される目的のために特別に構築され得るものであり、または、その装置は、コンピュータにおいて格納されるコンピュータプログラムにより、選択的に活動化もしくは再構成される汎用コンピュータを含み得る。そのようなコンピュータプログラムは、各々がコンピュータシステムバスに結合される、フロッピーディスク、光学ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光学カード、または、電子命令を格納するのに適した任意のタイプのメディアなどの、ただしそれらに制限されない、コンピュータ可読ストレージメディアにおいて格納され得る。
【0114】
本明細書において提示されるアルゴリズムおよびディスプレイは、任意の個別のコンピュータまたは他の装置に本質的に関係付けられない。様々な汎用システムが、本明細書における教示によるプログラムとともに使用されることがあり、または、方法を遂行するために、より特殊化された装置を構築することが、好都合であることに結局なることがある。種々のこれらのシステムに対する構造は、下記の説明において論述されるように出現することになる。加えて、本開示は、任意の個別のプログラミング言語を参照して説明されていない。種々のプログラミング言語が、本明細書において説明されるような本開示の教示を実施するために使用され得るということが察知されることになる。
【0115】
本開示は、本開示によってプロセスを遂行するようにコンピュータシステム(または、他の電子デバイス)をプログラムするために使用され得る、命令を格納したマシン可読メディアを含み得る、コンピュータプログラム製品またはソフトウェアとして提供され得る。マシン可読メディアは、マシン(例えば、コンピュータ)により可読な形式で情報を格納するための任意の機構を含む。いくつかの実施形態において、マシン可読(例えば、コンピュータ可読)メディアは、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスクストレージメディア、光学ストレージメディア、フラッシュメモリコンポーネント、その他などの、マシン(例えば、コンピュータ)可読ストレージメディアを含む。
【0116】
上述の明細書において、本開示の実施形態は、本開示の特定の実施例実施形態を参照して説明されている。様々な修正が、後に続く特許請求の範囲において論述されるような、本開示の実施形態の、より広範な趣旨および範囲から逸脱することなく、それらの特定の実施例実施形態に対してなされ得るということが明白であることになる。本明細書および図面は、よって、制約的な観念よりむしろ例解的な観念において考慮されるべきである。