(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-27
(45)【発行日】2023-11-07
(54)【発明の名称】順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
(51)【国際特許分類】
G06F 12/02 20060101AFI20231030BHJP
G06F 12/00 20060101ALI20231030BHJP
G06F 13/14 20060101ALI20231030BHJP
G06F 3/06 20060101ALI20231030BHJP
【FI】
G06F12/02 570A
G06F12/02 510A
G06F12/00 560B
G06F13/14 320H
G06F3/06 301K
(21)【出願番号】P 2022549407
(86)(22)【出願日】2021-02-17
(86)【国際出願番号】 US2021018429
(87)【国際公開番号】W WO2021168020
(87)【国際公開日】2021-08-26
【審査請求日】2022-09-16
(32)【優先日】2020-02-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】グダ チャンドラ エム.
(72)【発明者】
【氏名】ラム ジョニー エー.
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2015/0138900(US,A1)
【文献】特開2011-154547(JP,A)
【文献】特開2012-064158(JP,A)
【文献】特開2004-318940(JP,A)
【文献】米国特許出願公開第2015/0074328(US,A1)
【文献】米国特許出願公開第2012/0317365(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06-3/08
12/00-12/128
13/00-13/18
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
メモリデバイスと、
バッファを含む揮発性メモリと、
前記メモリデバイスおよび前記揮発性メモリに結合される処理デバイスであって、前記処理デバイスのコマンド生成プロセッサは、
ホストシステムから、前記メモリデバイスに対する論理ブロックアドレス(LBA)アドレス空間の第1のLBAを含む読み出し要求を受信することと、
前記第1のLBAを含むように第1の論理転送ユニット(LTU)を創出することであって、前記第1のLTUは、前記メモリデバイスの第1の物理アドレスにマッピングされることになる、創出することと、
前記揮発性メモリから、前記第1のLTUが前記LBAアドレス空間のゾーンと関連付けられるということを決定するためのフラグを読み出すことであって、前記ゾーンは、複数の順次物理アドレスに順次的にマッピングされる複数の順次LBAを含む、読み出すことと、
前記メモリデバイスからデータを取得し、前記バッファのセットにおいて前記データを格納するように、前記処理デバイスのコマンド実行プロセッサに指図するためのものである、コマンドタグのセットを生成することであって、コマンドタグの前記セットは、前記第1の物理アドレスと関連付けられる第1のコマンドタグと、順次的に前記第1の物理アドレスの後に続く第2の物理アドレスと関連付けられる第2のコマンドタグとを含む、生成することと
を行うことになる、処理デバイスと
を含むシステム。
【請求項2】
コマンドタグの前記セットの各コマンドタグは、
前記メモリデバイスの物理アドレス空間の物理アドレスにマッピングされるLTUを識別するLTU番号と、
前記バッファの前記セットの中の位置のバッファアドレスと
を含む、請求項1に記載のシステム。
【請求項3】
コマンドタグの前記セットは、前記第2の物理アドレスの後に続いて順次的に番号付けされる後続の物理アドレスと関連付けられる追加的なコマンドタグをさらに含み、各後続の物理アドレスは、前記第1の物理アドレスから読み出し窓サイズの端部に達するまで、ページ数によりインクリメントされる、請求項1に記載のシステム。
【請求項4】
前記処理デバイスの前記コマンド生成プロセッサは、さらに、
前記揮発性メモリから、前記第1の物理アドレスを取得することと、
前記ホストシステムに、前記第1の物理アドレスから取得される、および、前記バッファの前記セットの第1のバッファにおいて格納される、前記データの第1のサブセットを返すことと
を行うことになる、請求項1に記載のシステム。
【請求項5】
第2の読み出し要求に応じて、前記コマンド生成プロセッサは、
前記第2の読み出し要求の第2のLBAが、前記第2の物理アドレスに対応するということを決定することと、
前記バッファの前記セットの第2のバッファから前記データの第2のサブセットを取得することであって、前記第2のバッファは、前記第2のコマンドタグと関連付けられるバッファアドレスを有する、取得することと、
前記ホストシステムに前記データの前記第2のサブセットを送信することと
を行うことになる、請求項4に記載のシステム。
【請求項6】
前記処理デバイスの変換プロセッサは、前記データが前記メモリデバイスに順次的に書き込まれることに基づいて、前記揮発性メモリにおいて前記フラグをセットすることになる、請求項1に記載のシステム。
【請求項7】
前記コマンド生成プロセッサは、さらに、前記処理デバイスの前記コマンド実行プロセッサに、コマンドタグの前記セットのうちの1つのコマンドタグをそれぞれ含むコマンドのグループを送信することになり、コマンドタグの前記セットの受信に応じて、前記コマンド実行プロセッサは、前記メモリデバイスから前記データを取得し、コマンドタグの前記セットのそれぞれのバッファアドレスによって、前記バッファの前記セットにおいて前記データを格納することになる、請求項1に記載のシステム。
【請求項8】
前記コマンド生成プロセッサは、さらに、
コマンドタグの前記セットをコマンドチェーンへと相互連結することと、
前記コマンド実行プロセッサに、単一のコマンドメッセージにおいて前記コマンドチェーンを送信することと
を行うことになる、請求項1に記載のシステム。
【請求項9】
前記コマンド生成プロセッサは、さらに、
前記バッファがLTU番号によりソートされるニサン木アルゴリズム、または、
ハッシュアルゴリズムを用いるNウェイキャッシュ
のうちの1つを使用して、前記揮発性メモリの中の前記バッファを、割り振り、追跡することになる、請求項1に記載のシステム。
【請求項10】
処理デバイスのコマンド生成プロセッサにより、メモリデバイスに対する論理ブロックアドレス(LBA)アドレス空間の第1のLBAを含む読み出し要求を受信することと、
前記コマンド生成プロセッサにより、前記第1のLBAを含むように第1の
論理転送ユニット(LTU)を創出することであって、前記第1のLTUは、前記メモリデバイスの第1の物理アドレスにマッピングされることになる、創出することと、
前記コマンド生成プロセッサにより、揮発性メモリから、前記第1のLTUが前記LBAアドレス空間のゾーンと関連付けられるということを決定するためのビットマップのビット値を読み出すことであって、前記ゾーンは、複数の順次物理アドレスに順次的にマッピングされる複数の順次LBAを含む、読み出すことと、
前記コマンド生成プロセッサにより、前記揮発性メモリにおいてバッファのセットを割り振ることであって、バッファの前記セットの容量は、前記第1の物理アドレスにおいて、および、前記第1の物理アドレスにおいて開始する読み出し窓サイズの中で順次的に番号付けされる後続の物理アドレスにおいて格納されるデータの量にマッチングする、割り振ることと、
前記コマンド生成プロセッサにより、前記メモリデバイスから前記データを取得し、バッファの前記セットにおいて前記データを格納するように、前記処理デバイスのコマンド実行プロセッサに指図するためのものである、コマンドタグのセットを生成することであって、コマンドタグの前記セットは、少なくとも、前記第1の物理アドレスと関連付けられる第1のコマンドタグと、順次的に前記第1の物理アドレスの後に続く、前記後続の物理アドレスのうちの第2の物理アドレスと関連付けられる第2のコマンドタグとを含む、生成することと
を含む方法。
【請求項11】
前記コマンド生成プロセッサにより、
前記揮発性メモリから、前記第1の物理アドレスを取得することと、
前記第1の物理アドレスと関連付けられるダイ利用可能フラグがセットされているということを決定することと、
要求エージェントに、前記第1の物理アドレスから取得される、および、バッファの前記セットの第1のバッファにおいてキャッシュされる、前記データの第1のサブセットを返すことと
をさらに含む、請求項10に記載の方法。
【請求項12】
第2の読み出し要求を受信することと、
前記第2の読み出し要求の第2のLBAが、前記第1の物理アドレスから前記読み出し窓サイズの中の前記第2の物理アドレスに対応するということを決定することと、
バッファの前記セットの第2のバッファから前記データの第2のサブセットを取得することであって、前記第2のバッファは、前記第2のコマンドタグと関連付けられるバッファアドレスを有する、取得することと、
前記要求エージェントに前記データの前記第2のサブセットを送信することと
をさらに含む、請求項11に記載の方法。
【請求項13】
各バッファに対するフラグまたはカウンタのうちの1つの使用によって、バッファの前記セットの使用状況を追跡することをさらに含み、前記追跡することは、複数個のゾーンに対応する複数個のホストアプリケーションによる、バッファの前記セットの使用を可能にする、請求項10に記載の方法。
【請求項14】
コマンドタグの前記セットは、前記第2のコマンドタグを含むように、前記後続の物理アドレスと関連付けられる追加的なコマンドタグをさらに含み、前記方法は、前記第1の物理アドレスから前記読み出し窓サイズの端部に達するまで、ページ数により前記第1の物理アドレスをインクリメントすることにより、前記後続の物理アドレスを決定することをさらに含む、請求項10に記載の方法。
【請求項15】
コマンドタグの前記セットを生成することは、前記揮発性メモリのコマンドバッファの中で、
前記第1のLTUの第1のLTU番号と、バッファの前記セットの第1のバッファアドレスとを伴う前記第1のコマンドタグ、および、
第2のLBAに対応する、第2のLTUの第2のLTU番号と、バッファの前記セットの第2のバッファアドレスとを伴う前記第2のコマンドタグ
を更新することをさらに含む、請求項10に記載の方法。
【請求項16】
前記処理デバイスの変換プロセッサにより、
前記第1のLBAが前記ゾーンと関連付けられるということを決定することと、
前記データが前記メモリデバイスに順次的に書き込まれることに基づいて、前記揮発性メモリにおいて、前記第1の物理アドレスと関連付けられる前記ビット値をセットすることと
をさらに含む、請求項10に記載の方法。
【請求項17】
コマンドタグの前記セットは、前記第2のコマンドタグを含むように、前記後続の物理アドレスと関連付けられる追加的なコマンドタグをさらに含み、前記方法は、
前記コマンド生成プロセッサにより、前記コマンド実行プロセッサに、コマンドタグの前記セットをそれぞれ含むコマンドのグループを送信することと、
前記コマンド実行プロセッサにより、前記メモリデバイスの、前記第1の物理アドレスから、および、前記後続の物理アドレスから前記データを取得することと、
コマンドタグの前記セットのそれぞれのバッファアドレスによって、バッファの前記セットにおいて前記データを格納することと
をさらに含む、請求項10に記載の方法。
【請求項18】
コマンドタグの前記セットをコマンドチェーンへと相互連結することと、
前記コマンド実行プロセッサに、単一のコマンドメッセージにおいて前記コマンドチェーンを送信することと
をさらに含む、請求項10に記載の方法。
【請求項19】
バッファの前記セットがLTUによりソートされるニサン木アルゴリズム、または、
ハッシュアルゴリズムを用いるNウェイキャッシュ
のうちの1つによって、前記揮発性メモリの中のバッファの前記セットの割り振りを追跡することをさらに含む、請求項10に記載の方法。
【請求項20】
サブシステムメモリコントローラの処理デバイスのコマンド生成プロセッサにより実行されるときに、
メモリデバイスに対する論理ブロックアドレス(LBA)アドレス空間の第1のLBAを含む読み出し要求を受信することと、
前記コマンド生成プロセッサにより、前記第1のLBAを含むように第1の論理転送ユニット(LTU)を創出することであって、前記第1のLTUは、前記メモリデバイスの第1の物理アドレスにマッピングされることになる、創出することと、
揮発性メモリから、前記第1のLTUが前記LBAアドレス空間のゾーンと関連付けられるということを決定するためのフラグを読み出すことであって、前記ゾーンは、複数の順次物理アドレスに順次的にマッピングされる複数の順次LBAを含む、読み出すことと、
前記揮発性メモリにおいてバッファのセットを割り振ることであって、バッファの前記セットの容量は、前記第1の物理アドレスにおいて、および、前記第1の物理アドレスにおいて開始する読み出し窓サイズの中で順次的に番号付けされる後続の物理アドレスにおいて格納されるデータの量にマッチングする、割り振ることと、
前記メモリデバイスから前記データを取得し、バッファの前記セットにおいて前記データを格納するように、前記処理デバイスのコマンド実行プロセッサに指図するためのものである、コマンドタグのセットを生成することであって、コマンドタグの前記セットは、少なくとも、前記第1の物理アドレスと関連付けられる第1のコマンドタグと、順次的に前記第1の物理アドレスの後に続く、前記後続の物理アドレスのうちの第2の物理アドレスと関連付けられる第2のコマンドタグとを含む、生成することと
を含む複数の動作を遂行することを前記処理デバイスに行わせる命令を格納する非一時的コンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、一般的には、メモリサブシステムに関係し、より詳しくは、順次的にプログラムするメモリサブシステムにおける順次読み出し最適化に関係する。
【背景技術】
【0002】
メモリサブシステムは、データを格納する1つまたは複数のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイスおよび揮発性メモリデバイスであり得る。一般的に、ホストシステムは、メモリデバイスにおいてデータを格納するために、および、メモリデバイスからデータを取得するために、メモリサブシステムを利用し得る。
【発明の概要】
【0003】
本開示は、下記で与えられる詳細な説明から、および、本開示の様々な実施形態の付随する図面から、より十分に理解されることになる。
【図面の簡単な説明】
【0004】
【
図1A】実施形態による、メモリサブシステムを含む実施例コンピューティングシステムを例解する図である。
【
図1B】実施形態による、さらに詳細な形での
図1Aのメモリサブシステムを例解する図である。
【
図2】様々な実施形態による、ゾーンベースマッピングをサポートするように構成されるデータ構造の実施例を例解するブロック線図である。
【
図3】実施形態による、
図1A~1Bのメモリサブシステムコントローラの、コマンド生成プロセッサ、変換プロセッサ、およびコマンド実行プロセッサの相互関係性のブロック線図である。
【
図4】実施形態による、順次読み出し最適化のための方法のフローチャートである。
【
図5】関係付けられる実施形態による、順次読み出し最適化のための方法のフローチャートである。
【
図6】本開示の実施形態が動作し得る実施例コンピュータシステムのブロック線図である。
【発明を実施するための形態】
【0005】
本開示の態様は、順次的にプログラムするメモリサブシステムにおける順次読み出し最適化に向けられる。メモリサブシステムは、ストレージデバイス、メモリモジュール、または、ストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスおよびメモリモジュールの実施例は、
図1Aと連関して下記で説明される。一般的に、ホストシステムは、データを格納するメモリデバイスなどの1つまたは複数のコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムにおいて格納されることになるデータを提供し得るものであり、メモリサブシステムから取得されることになるデータを要求し得る。
【0006】
メモリデバイスは、不揮発性メモリデバイスであり得る。不揮発性メモリデバイスの1つの実施例は、否定論理積(NAND)メモリデバイスである。不揮発性メモリデバイスの他の実施例は、
図1Aと連関して下記で説明される。不揮発性メモリデバイスは、1つまたは複数のダイのパッケージである。パッケージにおけるダイは、メモリサブシステムコントローラと通信するための1つまたは複数のチャネルに割り当てられ得る。各ダイは、1つまたは複数のプレーンからなり得る。プレーンは、論理ユニット(LUN)へとグループ化され得る。いくつかのタイプの不揮発性メモリデバイス(例えば、NANDデバイス)に対して、各プレーンは、物理ブロックのセットからなる。各ブロックは、ページのセットからなる。各ページは、メモリセル(「セル」)のセットからなる。セルは、情報を格納する電子回路である。ブロックは、本明細書において以後、データを格納するために使用されるメモリデバイスのユニットを指し、メモリセルのグループ、ワードライングループ、ワードライン、または、個々のメモリセルを含み得る。
【0007】
データ動作が、メモリサブシステムにより遂行され得る。データ動作は、ホストにより開始される動作であり得る。例えば、ホストシステムは、メモリサブシステム上でのデータ動作(例えば、書き込み、読み出し、消去、その他)を開始し得る。ホストシステムは、メモリサブシステムのメモリデバイスにおいてデータを格納するために、および、メモリサブシステムのメモリデバイスからデータを読み出すためになどで、メモリサブシステムにアクセス要求(例えば、書き込みコマンド、読み出しコマンド)を送出し得る。
【0008】
ホスト要求により指定されるような、読み出される、または、書き込まれることになるデータは、本明細書において以後、「ホストデータ」と称される。ホスト要求は、ホストシステムがホストデータと関連付ける位置である、ホストデータに対する論理アドレス情報(例えば、論理ブロックアドレス(LBA)、名前空間)を含み得る。論理アドレス情報(例えば、LBA、名前空間)は、ホストデータに対するメタデータの一部であり得る。メタデータは、さらには、エラーハンドリングデータ(例えば、ECCコードワード、パリティコード)、データバージョン(例えば、書き込まれたデータの経過時間を区別するために使用される)、有効ビットマップ(どのLBAまたは論理転送ユニット(logical transfer unit)が有効データを内包するか)、および類するものを含み得る。簡単のため、「データ」が以後言及される場合、そのようなデータは、少なくともホストデータを指すと理解され得るが、さらには、メディア管理データおよび/またはシステムデータなどの、他のデータを指し得る。
【0009】
メモリデバイスのセル(または単純に「メディア」)は、ダイから(上位レベル)、プレーンまで、ブロックまで、ページまで(下位レベル)、階層的に組織化され得る。ブロックセット(さらにはブロックストライプと称される)は、ブロックがデータストレージの目的のために一体でグループ化されるように、異なるダイのプレーンにまたがって配されるブロックのセットであり得る。ブロックストライプに書き込むことは、複数個のダイにまたがって、同時的に書き込まれ、同じ時間において読み出され得る、より多くのホストデータを可能とする。1つまたは複数のブロックセットの複数個のブロックが、データグループとして識別され得る。
【0010】
様々な実施形態において、ホストファイルシステムが、局所性によりホストデータをグループ化し、メモリサブシステムに順次的にホストデータを書き込み得る。ファイルシステムは、その際、例えば、異なるホストアプリケーションが各々それ自体のストリームに書き込み得る場合、メモリサブシステムに並列順次ストリームとして異なる局所性のホストデータを書き込み得るものであり、各ストリームは、それ自体の局所性を有する。「局所性」は、時間的局所性または空間的局所性のいずれかを指し得る。時間的局所性によってグループ化されるデータは、プロセッサが、短い期間の時間にわたって反復的に、同じメモリデバイス位置においてアクセスする傾向があるホストデータ、例えば、同じ時間のあたりで書き込まれる、上書きされる、およびトリミングされるデータである。トリミングされることは、もはや使用中でなく、例えばガベージコレクションによって内部的にワイプされ得る、データのブロックをメモリデバイスに通知するためのトリムコマンドの、オペレーティングシステムの使用を指すものである。空間的局所性によってグループ化されるデータは、個別の時間において、いつ個別のストレージ位置が参照されるかのデータ取得パターンを捕捉し、その際、(メモリデバイス上の)付近のメモリ位置は、近い将来において参照されることになるということの公算が大きい。この事例において、プロセッサは、引き続いて参照される位置に対して、より高速のアクセスのために準備することに価値がある、現在参照されるメモリ位置のあたりの区域のサイズおよび形状を決定することを試行し得る。順次的局所性への言及は、データ要素が、要素を1次元アレイにおいてトラバースすることにおいてなどで、直線的に配置構成およびアクセスされるときに起こる、空間的局所性の特殊な事例である。
【0011】
メモリサブシステムコントローラ(例えば、処理デバイスを含む)は、普通、ホストデータの一部分(例えば、4KB)の形でランダムにメディアに書き込み、次いで、LBA空間をメディアの物理アドレス空間にマッピングするためにメタデータを使用する。しかしながら、ホストデータのより大きいグループ(例えば、100MB以上)が、データ局所性によってグループ化されて書き込まれるとき、「データグループ」は、複数個のダイにまたがる1つまたは複数のブロックセットに、より大きいチャンクとして順次的に書き込まれ得る。そのようなデータグループのマッピングを単純化するために、ゾーン(例えば、データグループと関連付けられる論理アドレス空間)のLBAが、LBA空間の中で順次的に順序付けられ、物理アドレス空間の中の順次的に順序付けられる物理アドレスにマッピングされ得る。換言すれば、データグループは、複数個の順次物理アドレスに順次的にマッピングされる複数個の順次LBAを有するLBA空間ゾーンと関連付けられ得る。一度にデータのゾーンを書き込み(例えば、プログラムし)、ゾーンをマッピングし得るメモリサブシステムは、よって、例えば、論理アドレスのゾーンが名前を付けられる/グループとして識別される、ゾーン名前空間(ZNS)において動作する。有利には、論理対物理(LTP)アドレスマッピングに対するZNSの使用は、LTPマッピングを追跡するためのメタデータの量を甚だしく低減する。
【0012】
メモリサブシステムにおいて、読み出し要求(または読み出し動作)は、普通、メモリサブシステムコントローラの(例えば、論理アドレスを物理アドレスに変換する)変換プロセッサに、一度に1つのコマンドタグで発行され、コマンドタグにより指定される粒度におけるランダム読み出しを結果的に生じさせる。さらにはシステムタグ(例えば、シスタグ(systag))と称されるコマンドタグは、論理転送ユニット(LTU)番号、および、転送ユニットに対応する内容がキャッシュにおいてであるかのように格納されるバッファ(例えば、揮発性メモリにおけるスロットまたはエントリ)を識別するバッファアドレスを含む。1つの実施形態においてデータの4KB一部分に対応するLTUは、マッピングデータ構造のセットによって物理アドレスにマッピングされ得る複数個の順次LBAのサブセットである。よって、LTUを創出するために、メモリサブシステムコントローラのコマンド生成プロセッサが、読み出し要求のLBAを、LBAに対して順次的である追加的なLBA(さらには、読み出し要求において受信され得る)と組み合わせ得る。各LTUは、LTUタイプに依存して、論理ブロックまたは論理ページに変換され得る。
【0013】
読み出し要求は、従来から一度に1つのコマンドタグで遂行されるので、各読み出し要求は、詳細に解説されることになるように、(読み出しが順次的であるかどうかに関わらず)メモリサブシステムコントローラのコマンド生成プロセッサ内へのコマンドメッセージ(例えば、1つの実施例におけるメールボックスメッセージ)を生成し、メモリデバイスにおける物理的位置に読み出し要求のLBAをマッピングするための複数個の(例えば、4つの)データ構造ルックアップを生成する。コマンドメッセージが、不揮発性メモリコマンドのフェッチングの後に使用され得るものであり、その場合、コマンド生成プロセッサは、コマンドの受信に関して変換プロセッサに知らせる。これらのデータ構造(例えば、テーブル)は、密結合メモリ(TCM)、またはスタティック読み出し専用メモリ(SRAM)、または、他の揮発性メモリにおいて格納され得る。読み出し要求をハンドリングすることのこの様式は、とりわけ、いくつかの読み出し要求が、(例えば、ZNSの)順次的に書き込まれる物理アドレス空間に順次的に発行されるということであれば、レイテンシを増大することにより、オーバーヘッドを増大し、総体的な性能を低下させる。よって、順次書き込みからの順次データレイアウトは、メモリサブシステムコントローラ(例えば、メモリサブシステムコントローラの変換プロセッサ)が、読み出し要求を成就するためにデータを取得するための取得元の物理アドレスを決定するために遂行しなければならないルックアップの数を制限するためには活用されない。
【0014】
本開示の態様は、共有される揮発性メモリ(例えば、少なくとも1つの揮発性メモリデバイス)であって、それを通して、処理デバイスの変換プロセッサが、処理デバイスのコマンド実行プロセッサに、第1の物理アドレス(第1のコマンドタグにより指定される第1のLTUがマッピングされる)を伝達し、第1の物理アドレスが、順次的に書き込まれるデータの一部であるということを指示するフラグ(例えば、ビットフラグ)をセットし得る、共有される揮発性メモリを用いることにより、上記および他の欠陥に対処する。処理デバイスのコマンド生成プロセッサは、次いで、揮発性メモリにおいて、物理アドレスに、および、グループとして発行されることになる、第1のコマンドタグを含むための、コマンドタグのセットをどのように生成すべきかを決定するためのフラグにアクセスし得る。コマンド生成プロセッサは、マッピングデータ構造における、変換プロセッサによる、何らのさらなるルックアップも避けながら、処理デバイスのコマンド実行プロセッサに直接的に、コマンドタグを含むコマンドのセットをさらに送出し得る。コマンド実行プロセッサは、コマンドタグにより指定される物理アドレスからのデータを、この目的のために割り振られるバッファ(例えば、揮発性メモリの中のスロット)のセット内へと読み出し得る。
【0015】
様々な実施形態において、より具体的には、コマンドタグのこのセットは、物理アドレスと関連付けられる第1のコマンドタグのみではなく、さらには、第1の物理アドレスにおいて開始する読み出し窓サイズ(例えば、オフセット値)の中で順次的に番号付けされる後続の物理アドレスと関連付けられる追加的なコマンドタグを含み得る。この手立てにおいて、順次データは、先読み方式で読み出され、第1の物理アドレスおよび後続の物理アドレスにおいて格納されるデータ、例えば、オフセット値の読み出し先読みの容量をハンドリングするために割り振られるバッファのセットにおいて格納される。物理アドレスから読み出されるホストシステムにより要求されるデータは、ホストシステムに返される。ホストシステムが、物理アドレスのオフセット値の中の、第2または後続の物理アドレスからのデータを要求するという事象において、コマンド生成プロセッサは、何らのさらなるルックアップまたは変換もなく、バッファのセットからデータを迅速に取得し、ホストシステムにデータを送出し得る。
【0016】
本開示の利点は、例えば、多くの読み出し要求が、読み出し先読み動作によってバッファにおいてヒットすることを可能とすることによる、改善される読み出し性能、および、(書き込み動作より頻繁に起こる)大変多くの読み出し要求にサービス提供するために書き込み動作を中断することの重い犠牲を回避することを含み、ただしそれらに制限されない。さらに、本開示は、ホストシステムからの順次読み出し要求に関するレイテンシを(それらの読み出し要求が、書き込み動作、および/または、他のゾーンへの読み出し要求によって散在させられるとしても)低下させるために、順次読み出し性能最適化を遂行することの手立てを解説する。これらの利点は、ZNSを可能にされるメモリデバイスにより遂行される順次書き込みを相乗的に活用する。本明細書において以降で論考される、メモリサブシステムの中でのメモリ割り振りおよびエラー最適化の他の利点が、当業者に明らかになることになる。
【0017】
図1Aは、本開示のいくつかの実施形態による、メモリサブシステム110を含む実施例コンピューティングシステム100を例解する図である。メモリサブシステム110は、メディア、そのような揮発性メモリ(例えば、メモリデバイス140)、1つもしくは複数の不揮発性メモリデバイス(例えば、メモリデバイス130)、または、そのようなものの組み合わせを含み得る。各メモリデバイス130または140は、1つまたは複数のメモリコンポーネントであり得る。
【0018】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、または、ストレージデバイスおよびメモリモジュールのハイブリッドであり得る。ストレージデバイスの実施例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、およびハードディスクドライブ(HDD)を含む。メモリモジュールの実施例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、および、様々なタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)を含む。
【0019】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、乗物(例えば、飛行機、ドローン、列車、自動車、または、他の運輸機関)、モノのインターネット(IoT)を可能にされるデバイス、組み込みコンピュータ(例えば、乗物、産業機器、または、ネットワーク化された商用デバイスに含まれるもの)などのコンピューティングデバイス、または、メモリと処理デバイスとを含むそのようなコンピューティングデバイスであり得る。
【0020】
コンピューティングシステム100は、1つまたは複数のメモリサブシステム110に結合されるホストシステム120を含み得る。いくつかの実施形態において、ホストシステム120は、異なるタイプのメモリサブシステム110に結合される。
図1Aは、1つのメモリサブシステム110に結合されるホストシステム120の1つの実施例を例解する。本明細書において使用される際、「に結合される」または「と結合される」は、一般的には、電気、光学、磁気、および類するものなどの接続を含む、有線かワイヤレスかを問わない、間接的な通信接続、または、(例えば、介在するコンポーネントまたはデバイスを伴わない)直接的な通信接続であり得る、コンポーネントまたはデバイスどうしの間の接続を指す。
【0021】
ホストシステム120は、プロセッサチップセットと、プロセッサチップセットにより実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つまたは複数のコア、1つまたは複数のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、および、ストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。
【0022】
ホストシステム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は、同じ通信接続、複数個の別個の通信接続、および/または、通信接続の組み合わせを介して、複数個のメモリサブシステムにアクセスし得る。
【0023】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)およびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)であり得るものであり、ただしそれらに制限されない。
【0024】
不揮発性メモリデバイス(例えば、メモリデバイス130)のいくつかの実施例は、否定論理積(NAND)タイプフラッシュメモリ、および、3次元クロスポイント(「3Dクロスポイント」)メモリなどの所定位置書き込み(write-in-place)メモリを含む。不揮発性メモリのクロスポイントアレイは、積層可能なクロスグリッドデータアクセスアレイと連関して、バルク抵抗の変化に基づいてビットストレージを遂行し得る。加えて、多くのフラッシュベースのメモリと対照的に、クロスポイント不揮発性メモリは、所定位置書き込み動作を遂行し得るものであり、その場合、不揮発性メモリセルは、不揮発性メモリセルが先に消去されることなくプログラムされ得る。NANDタイプフラッシュメモリは、例えば、2次元NAND(2D NAND)および3次元NAND(3D NAND)を含む。
【0025】
メモリデバイス130の各々は、メモリセルの1つまたは複数のアレイを含み得る。1つのタイプのメモリセル、例えば、シングルレベルセル(SLC)は、セルあたり1ビットを格納し得る。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、およびクアッドレベルセル(QLC)などの他のタイプのメモリセルは、セルあたり複数個のビットを格納し得る。いくつかの実施形態において、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、または、そのようなものの任意の組み合わせなどの、メモリセルの1つまたは複数のアレイを含み得る。いくつかの実施形態において、個別のメモリデバイスは、メモリセルの、SLC一部分、および、MLC一部分、TLC一部分、またはQLC一部分を含み得る。メモリデバイス130のメモリセルは、データを格納するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化され得る。いくつかのタイプのメモリ(例えば、NAND)に関しては、ページは、ブロックを形成するためにグループ化され得る。
【0026】
不揮発性メモリセルの、NANDタイプフラッシュメモリ(例えば、2D NAND、3D NAND)および3Dクロスポイントアレイなどの不揮発性メモリコンポーネントが説明されるが、メモリデバイス130は、読み出し専用メモリ(ROM)、相変化メモリ(PCM)、自己選択メモリ、他のカルコゲナイド系メモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、スピントランスファートルク(STT)-MRAM、導電性ブリッジングRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物系RRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、および、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)などの、任意の他のタイプの不揮発性メモリに基づき得る。
【0027】
メモリサブシステムコントローラ115(または、簡単のため、コントローラ115)は、メモリデバイス130においてデータを読み出すこと、データを書き込むこと、または、データを消去することなどの動作、および、他のそのような動作を遂行するために、メモリデバイス130と通信し得る。メモリサブシステムコントローラ115は、1つもしくは複数の集積回路および/もしくはディスクリートコンポーネント、バッファメモリ、または、それらの組み合わせなどのハードウェアを含み得る。ハードウェアは、本明細書において説明される動作を遂行するための、専用の(すなわち、ハードコードされた)論理を伴うデジタル回路網を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、特殊目的論理回路網(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、その他)、または、他の適したプロセッサであり得る。
【0028】
メモリサブシステムコントローラ115は、ローカルメモリ119において格納される命令を実行するように構成されるプロセッサ117(例えば、処理デバイス)を含み得る。例解される実施例において、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信をハンドリングすることを含む、メモリサブシステム110の動作を制御する、様々なプロセス、動作、論理フロー、およびルーチンを遂行するための命令を格納するように構成される組み込みメモリを含む。
【0029】
いくつかの実施形態において、ローカルメモリ119は、メモリポインタ、フェッチされたデータ、その他を格納するメモリレジスタを含み得る。ローカルメモリ119は、さらには、マイクロコードを格納するための読み出し専用メモリ(ROM)を含み得る。
図1Aにおける実施例メモリサブシステム110は、メモリサブシステムコントローラ115を含むように例解されているが、本開示の別の実施形態において、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに、(例えば、外部ホストにより、または、メモリサブシステムとは別個のプロセッサもしくはコントローラにより提供される)外部制御に依拠し得る。
【0030】
一般的に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは動作を受信し得るものであり、メモリデバイス130への所望されるアクセスを達成するために、コマンドまたは動作を、命令または適切なコマンドへとコンバートし得る。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション動作、エラー検出およびエラー訂正コード(ECC)動作、暗号化動作、キャッシング動作、ならびに、論理ブロックアドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と、メモリデバイス130と関連付けられる物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換などの、他の動作に対して責任を負い得る。メモリサブシステムコントローラ115は、物理ホストインターフェースを介してホストシステム120と通信するためのホストインターフェース回路網をさらに含み得る。ホストインターフェース回路網は、ホストシステムから受信されるコマンドを、メモリデバイス130にアクセスするためのコマンド命令へとコンバートし、メモリデバイス130と関連付けられる応答を、ホストシステム120に対する情報へとコンバートし得る。
【0031】
メモリサブシステム110は、さらには、例解されない追加的な回路網またはコンポーネントを含み得る。いくつかの実施形態において、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)と、メモリサブシステムコントローラ115からアドレスを受信し、メモリデバイス130にアクセスするためにアドレスを復号し得るアドレス回路網(例えば、行デコーダおよび列デコーダ)とを含み得る。
【0032】
いくつかの実施形態において、メモリデバイス130は、メモリデバイス130の1つまたは複数のメモリセルに関する動作を実行するために、メモリサブシステムコントローラ115と連関して動作するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部的に管理(例えば、メモリデバイス130に関するメディア管理動作を遂行)し得る。いくつかの実施形態において、メモリデバイス130は、同じメモリデバイスパッケージまたはメモリダイの中で、メモリ管理のためのローカルコントローラ(例えば、ローカルメディアコントローラ135)と組み合わされるロウ(raw)メモリデバイスである、マネージドメモリデバイスである。マネージドメモリデバイスの実施例は、マネージドNAND(MNAND)デバイスである。
【0033】
いくつかの実施形態において、コントローラ115は、エラー訂正コード(ECC)エンコーダ/デコーダ111を含む。ECCエンコーダ/デコーダ111は、メモリデバイス130に書き込まれるデータに対するECC符号化、および、メモリデバイス130から読み出されるデータに対するECC復号、それぞれを遂行し得る。ECC復号は、ロウ読み出しデータにおけるエラーを訂正するために、および、多くの事例においてさらには、ロウ読み出しデータにおけるビットエラーの数を報告するために、ECCコードワードを復号するために遂行され得る。
【0034】
図1Bは、実施形態による、さらに詳細な形での
図1Aのメモリサブシステム110を例解する図である。実施形態において、メモリサブシステムコントローラ115(例えば、簡単のため、コントローラ115と称される処理デバイス)は、1つまたは複数のレジスタ112と、バッファマネージャ113を含むコマンド生成プロセッサ122と、変換プロセッサ123と、コマンド実行プロセッサ124と、ローカルメモリ119とを含む。例えば、プロセッサ117(
図1A)は、コマンド生成プロセッサ123と、変換プロセッサ123と、コマンド実行プロセッサ124とを含み得る。ローカルメモリ119は、例えば
図2において例解されるような、ZNSマッピングデータ構造の中でも、ゾーンマップデータ構造101およびブロックセットマップデータ構造107を格納し得る。1つの実施形態において、ゾーンマップデータ構造101は複数個のエントリを含み、そのことは、
図2を参照して詳細に解説されることになるように、各エントリが、ブロックセットマップデータ構造107の中のエントリに連結するブロックセットエントリ識別子を有し、そのブロックセットマップデータ構造107の中のエントリが、代わって、メモリにおいてページを位置特定する、ページマップデータ構造のエントリに連結し得るようなものである。
【0035】
さらに、1つまたは複数のメモリデバイス130、140を参照して先に論考されたように、複数個のダイ(例えば、ダイAおよびダイB)の物理アドレス空間は、プレーン、ブロック、およびページにより、階層的に組織化され得る。そのため、例えば、ダイAおよびダイBの各々は、プレーンAおよびプレーンBを含み得るものであり、プレーンAおよびプレーンBの各々は、ブロックAおよびブロックBを含み得る。ブロックセット(またはブロックストライプ)は、メモリデバイスの複数個のダイのプレーンにまたがって配されるブロックのグループと定義され得る。例解されるように、ブロックセット144は、ダイAのプレーンAのブロックAを含み、ダイBのプレーンB等々の、例えばさらには、存在しオンラインであるならば、ダイC、および、続けてさらなるダイまでの、プレーンCの、ブロックAを含むように配される。
【0036】
様々な実施形態において、変換プロセッサ123(および/または、変換プロセッサ123に結合されるコントローラ115の動的データプレーサ)は、メモリデバイス130、140のメディアユニットまたはメモリコンポーネント(さらには「ICダイ」または「メディア」と称される)において、論理アドレスと関連付けられるデータを配置するために、メディアレイアウトを動的に決定する。メディアレイアウトは、(例えば、ホストシステム120から)メモリサブシステム110において受信されるコマンドにおいて使用される論理アドレスと、メモリサブシステム110のメディアにおける物理メモリ位置との間のマッピングを指定する。
【0037】
変換プロセッサ123は、例えば、メモリサブシステム110において入力/出力スケジューリングの時間においてデータを書き込む、プログラムする、格納する、コミットするためのメディアの利用可能性に基づいて、メモリデバイス130または140のメディアの物理アドレスと関連付けられる論理アドレスにおけるデータの配置のために、LBA空間の論理アドレスの一部分に対するメディアレイアウトを決定し得る。中にメディアユニットを含むICダイが、データをコミット/プログラムするために利用可能であるとき、書き込みコマンドが、メモリサブシステム110における実行のためにスケジューリングされ、変換プロセッサ123は、書き込みコマンドに対してメディアレイアウトの一部分を生成し、ICダイの中のメモリ位置にマッピングするために、書き込みコマンドにおいて使用される論理アドレスをマッピングする。書き込みコマンドの実行は、ICダイ内へと、書き込みコマンドと関連付けられるデータをコミット/プログラムすることをメモリサブシステム110に行わせる。
【0038】
メディアにまたがるICダイの利用可能性、および/または、順次マッピングスキームの適用に依存して、コントローラ115は、一度に1つのICダイをフィルアップするために、(例えば、データ局所性の順次ストリームにおいて提供される)データグループを順次的に書き込み得るものであり、さもなければ、例えば、メディアのICダイを同時的にフィルアップするために、並列に、一度に複数個のICダイに順次的に書き込み得る。LBA空間のゾーンの中での書き込みのマッピングが、さらには、ZNSマッピングデータ構造を参照して、より詳細に論考されることになるように、マッピングを遂行するために使用される計算を単純化するために、順次的に行われ得る。利用可能な複数個のICダイが存するとき、複数個の書き込みストリームからのコマンドにおいて使用される論理アドレス(例えば、LBA)は、複数個の書き込みストリームからのコマンドの実行におけるメディアアクセス衝突が存しないように、メディアレイアウトの動的に生成される一部分により、複数個のICダイそれぞれにマッピングされ得る。
【0039】
様々な実施形態において、変換プロセッサ123は、LBAを物理アドレス空間の物理ブロックアドレス(PBA)に変換するために、ある決まったZNSマッピングデータ構造(例えば、ゾーンマップデータ構造101およびブロックセットマップデータ構造107)にアクセスする。フラッシュメディア(例えば、NORまたはNANDフラッシュメモリ)の文脈における変換プロセッサ123は、フラッシュ変換レイヤ(FTL)と称され得る。変換プロセッサ123により用いられるマッピングは、一般的には、所定のタイプのブロックマッピング、例えば、ブロックレベルマッピングまたはログブロックマッピングを必然的に含むことを想定され得る。データ局所性が検出される場合、または、ZNSメモリデバイスにおいて、変換プロセッサ123は、例えばZNSデータ構造の中で、ゾーンを形成するブロックのグループをマッピングし得るものであり、そのことは、先に論考されたように、順次的に番号付けされるLBAを、順次的に番号付けされるPAにマッピングすることを必然的に含み得る。ゾーンのLBA空間をメディアの物理アドレス空間にマッピングするための、ZNSデータ構造、および、それらの構造の相互関係の使用が、
図2を参照して、より詳細に論考される。
【0040】
いくつかの実施形態において、メモリサブシステム110は、さらには、読み出し要求の成就においてデータを格納する(例えば、キャッシュする)ために使用されるバッファが内で割り振られる、揮発性メモリデバイス140A(例えば、TCM、SRAM、DRAM、または、それらの組み合わせなどの共有される揮発性メモリ)を含む。例えば、各バッファは、揮発性メモリデバイス140Aのアドレス指定されるスロットまたはエントリであり得る。バッファは、第1のバッファ142A、第2のバッファ142B、第3のバッファ142C等々、ないし第Nのバッファ142Nを含み得る。各バッファは、ページサイズのデータを格納し得る。代替的な実施形態において、別個に示されるが、揮発性メモリデバイス140Aは、実際には、コントローラ115のローカルメモリ119の一部である。
【0041】
様々な実施形態において、コマンド生成プロセッサ122は、コマンド処理、例えば、ホストシステム120または別の要求エージェントからそれぞれ受信される、読み出しおよび書き込み要求に基づいて、読み出しコマンドおよび書き込みコマンドを生成することを遂行する。読み出し要求を実行することの一部として、コマンド生成プロセッサ122のバッファマネージャ113は、(読み出し要求のLBAを含むように創出されるLTUによりマッピングされる対象の)第1の物理アドレスにおいて、および、例えば、メモリデバイスの読み出し窓サイズを規定するオフセット値の中で、第1の物理アドレスの後に続いて順次的に番号付けされる、後続の物理アドレスにおいて格納されるデータの量にマッチングする容量を有する、ある決まった数のバッファ(例えば、バッファの「セット」)を割り振り得る。1つの実施形態において、オフセット値は128KBであり、そのことは、第1の読み出し要求を超える、追加的な124KBのデータの読み出し先読みを可能とする。様々な他のオフセット値または読み出し窓サイズが構想される。例えば、各後続の物理アドレスは、後続の物理アドレスを決定するために、オフセット値により規定される順次物理アドレス空間の読み出し窓にまたがるページ数によりインクリメントされ得る。バッファマネージャ113によるバッファの割り振りおよび追跡は、読み出し先読み動作を手助けする。
【0042】
これらの実施形態において、コマンド生成プロセッサ122は、メモリデバイス130または140の第1のアドレスおよび後続のアドレスからデータを取得し、バッファのセットにおいてデータを格納するように、処理デバイスのコマンド実行プロセッサ124に指図するために利用されるコマンドタグのセットをさらに生成し得る。コマンド生成プロセッサカン122は、コマンド実行プロセッサ124に、コマンドタグのセットを含むコマンドのグループをさらに送信し得る。この手立てにおいて、コマンドタグのセットの各コマンドタグは、それぞれの順次物理アドレスのうちの1つの物理アドレスにマッピングされるLTUを識別するLTU番号を含む。
【0043】
関係付けられる実施形態において、バッファマネージャ113は、いくつもの可能なアプリケーションにより、様々なバッファにおいてキャッシュされるデータを追跡するための、任意の数のバッファ管理アルゴリズムを使用して、バッファの使用状況を追跡し、ホストコマンドがこれらのバッファ上でヒットするときの、バッファのロッキングまたは解放に対して責任を負い得る。バッファ管理アルゴリズムは、例えば、バッファがLTU番号(またはLBA番号)によりソートされるニサン木(two-three tree)アルゴリズム(さらには、2-3木アルゴリズムと称される)、連結リストアルゴリズム、または、ハッシュアルゴリズムを用いるNウェイキャッシュを含み得る。例えば、バッファマネージャ113は、表1において例解されるような、バッファにおいてキャッシュされる順次的に読み出されるデータが、不連続なバッファ番号に対してインデックス付けされる、バッファインデックステーブルを用い得る。
【0044】
【表1】
表1
そのようなバッファ管理アルゴリズム(例えば、バッファ割り振りおよび使用状況を追跡するための)により使用され得るメタデータは、LTU/LBA(それに関してデータがソートされる)、どのバッファスロットにおいてデータが所在するかを指示するバッファアドレス(または、インデックス付けのために使用される他のバッファ識別子)、および、別個の読み出しまたは書き込みパスにおける複数個のユーザ(例えば、ホストアプリケーション)が一緒に追跡されることを可能とするバッファ使用状況カウントを含む。この手立てにおいて、バッファマネージャ113は、表1において例解されるように、割り振られるバッファが順次的に番号付けされないことがあるが、コマンドの任意のセットが、順次的に格納されるデータに書き込むこと、または、そのデータから読み出すことのいずれかであり得る、複数個のゾーンに書き込む、および、それらのゾーンから読み出す、複数個のアプリケーションを管理し得る。バッファにおけるデータが追跡されるならば、ハードウェアアクセラレーションが、バッファにおけるデータの追跡および管理を手助けするために使用され得る。
【0045】
バッファマネージャ113は、任意の所与のバッファが読み出しまたは書き込みパスにおいて使用されているか否かを追跡するための、フラグ(例えば、ビットフラグ)またはカウンタをさらに使用し得る。このことは、(例えば、すでに処理されている)インフライトコマンドを充足させるためのバッファに対する迅速なサーチ時間、ならびに、個別のLBAを、およびかくして、バッファがキャッシュヒットに対して使用され得るかどうかを見いだすための短いサーチ時間、ならびに、マッピングに対して変換プロセッサ123に戻らなければならないということの代わりの、ホストシステム120への直接的な転送を可能とし得る。キャッシュに類するように作動するバッファからデータを取得することに起因するコヒーレンシは、ゾーンマップデータ構造101が最初にチェックされる限りにおいて問題点であるはずではなく、そのことを、コマンド生成プロセッサ122は、開示される順次読み出し最適化の中で行うことを継続することになる。いくつかの実施形態において、コントローラ115は、少なくとも、バッファマネージャ113の一部分を含む。他の実施形態において、または組み合わせて、コントローラ、および/または、ホストシステム120の処理デバイスは、少なくとも、バッファマネージャ113の一部分を含む。例えば、コントローラ115、または、ホストシステム120の処理デバイスは、本明細書において説明されるバッファマネージャ113の動作を遂行するための、メモリにおいて格納される命令を実行するように構成され得る。いくつかの実施形態において、バッファマネージャ113は、メモリサブシステム110において配設される集積回路チップにおいて実施される。他の実施形態において、バッファマネージャ113は、ホストシステム120のオペレーティングシステム、デバイスドライバ、またはアプリケーションの一部である。
【0046】
これらの実施形態において、コマンド実行プロセッサ124は、メモリデバイス130、140へのデータバスのチャネルの中で、書き込みおよび読み出しコマンドをシーケンス化する。コマンド実行プロセッサ124は、読み出しコマンドの受信に応じて、コマンドタグのセットが指し示す、メモリデバイス130、140の第1の物理アドレスから、および、後続の物理アドレスからデータをさらに取得し得る。各コマンドタグは、物理アドレスにマッピングされるLTUを含み、揮発性メモリデバイス140Aにおいてキャッシュされるバッファの中のバッファアドレスを識別するということを想起されたい。コマンド実行プロセッサ124は、コマンド生成プロセッサ122により生成され、コマンド実行プロセッサ124に送出されたコマンドのグループの中に含められた、コマンドタグのセットのそれぞれのバッファアドレスによって、読み出しコマンドを成就するデータを、割り振られるバッファ内へとさらに格納(例えば、キャッシュ)し得る。コマンド実行プロセッサ124は、例えば物理アドレス空間に対応する、物理レイヤにおけるエラーハンドリングをさらに遂行し得る。
【0047】
変換プロセッサ123は、コマンド実行プロセッサ124に対するコマンド生成プロセッサ122によるコマンドの生成を手助けするために、LTUを物理アドレス空間の物理アドレスに変換する。よって、変換プロセッサ123は、(LBAを伴うメモリ要求を受信し、LBAを含むようにLTUを創出する)コマンド生成プロセッサ124と、コマンドを成就するために物理レイヤの物理アドレスを知ることを必要とするコマンド実行プロセッサ124との間の仲介者として働き得る。本開示において、様々なZNSマッピングデータ構造へのインデックス付けのための、変換プロセッサ123の通例の使用は、順次読み出し最適化の読み出し先読み動作において回避され得る。
【0048】
図2は、様々な実施形態による、ゾーンベースマッピングをサポートするように構成されるデータ構造の実施例を例解するブロック線図である。コントローラ115は、例えばSRAMの形での、ローカルメモリ119において、または、例えばDRAMの形での、メモリデバイス140のメモリコンポーネントにおいて、
図2において例解されるデータ構造を格納し得る。コントローラ115は、さらには、
図2のデータ構造を使用して、メディアレイアウト(例えば、ゾーンのデータグループが物理アドレス空間の中で位置特定されることになる場合のレイアウト)を構成または実施し得る。
図2において、ゾーンマップデータ構造201が、ZNS動作に対する、名前空間、例えばLBA空間におけるゾーンに対するメディアレイアウト情報を提供するように構成される。ゾーンマップデータ構造201は、
図1Bのゾーンマップデータ構造101と同じまたは同様であり得る。ゾーンマップデータ構造201は、複数個のエントリを有し得る。ゾーンマップデータ構造201における各ゾーンマップエントリは、ゾーンの開始LBAアドレス211、ゾーンのブロックセット識別子213、ゾーンのゾーンカーソル値215、ゾーンの状態217、および類するものなどの、ゾーンに関する情報を識別する。
【0049】
ホストシステム120は、ゾーン開始LBA識別子211のLBAにおいて始まるゾーンにおいてデータを書き込む。ホストシステム120は、LBA空間において順次的にゾーンにおいてデータを書き込む。所定の量のデータがゾーン内へと書き込まれた後、後続のデータを書き込むための現在の開始LBAアドレスは、ゾーンカーソル値215により識別される。ゾーンに対する各書き込みコマンドは、ゾーンカーソル値215を、ゾーンに対する次の書き込みコマンドに対する新しい開始LBAアドレスに変更する。状態217は、ゾーンが、空である、フルである、暗黙に開いている、明示的に開いている、閉じられている、および類することであるということを指示する値を、そのゾーンを書き込むことの推移を追跡するために有し得る。
【0050】
図2において、論理対物理ブロックマップデータ構造203が、メディアにおける物理アドレスへのLBAアドレスの変換を手助けするように構成される。論理対物理ブロックマップ203は、複数個のエントリを有し得る。LBAは、論理対物理ブロックマップ203におけるエントリに対するインデックス(例えば、LTU番号)として使用され、または、そのインデックスへとコンバートされ得る。インデックスは、LBAに対するエントリをルックアップするために使用され得る。論理対物理ブロックマップ203における各エントリは、LBAに対して、メディアにおけるメモリのブロックの物理アドレスを識別する。例えば、メディアにおけるメモリのブロックの物理アドレスは、ダイ識別子233、ブロック識別子235、ページマップエントリ識別子237、および類するものを含み得る。ダイ識別子233は、メモリサブシステム110のメモリデバイス130、140の特定のICダイ(例えば、ダイAまたはダイB)を識別する。ブロック識別子235は、ダイ識別子233を使用して識別されるICダイの中のメモリ(例えば、NANDフラッシュメモリ)の特定のブロックを識別する。ページマップエントリ識別子237は、ページマップデータ構造205におけるエントリを識別する。
【0051】
ページマップデータ構造205は、複数個のエントリを有し得る。ページマップ205における各エントリは、メモリセル(例えば、NANDメモリセル)のブロックの中のメモリセルのページを識別するページ識別子251を含み得る。例えば、ページ識別子251は、NANDメモリセルのブロックにおける、ページに対するワードライン番号、および、ページに対するサブブロック番号を含み得る。さらに、ページに対するエントリは、ページのプログラミングモード253を含み得る。例えば、ページは、SLCモード、MLCモード、TLCモード、またはQLCモードにおいてプログラムされ得る。SLCモードにおいて構成されるとき、ページにおける各メモリセルは、1ビットのデータを格納することになる。MLCモードにおいて構成されるとき、ページにおける各メモリセルは、2ビットのデータを格納することになる。TLCモードにおいて構成されるとき、ページにおける各メモリセルは、3ビットのデータを格納することになる。QLCモードにおいて構成されるとき、ページにおける各メモリセルは、4ビットのデータを格納することになる。集積回路ダイにおける異なるページは、データプログラミングに対する異なるモードを有し得る。
【0052】
図2において、ブロックセットデータ構造207が、ゾーンに対する動的メディアレイアウトの態様を制御するデータを格納する。ブロックセットデータ構造207は、
図1Bのブロックセットマップデータ構造107と同じまたは同様であり得る。1つの実施形態においてテーブルであり得るブロックセットデータ構造207は、複数個のエントリを有し得る。ブロックセットデータ構造207における各ブロックセットエントリは、ゾーンのデータが格納される集積回路ダイ(例えば、ダイAおよびダイB)の数/カウント271を識別する。ゾーンに対して使用される集積回路ダイの各々に対して、ブロックセットデータ構造207のブロックセットエントリは、ダイ識別子273、ブロック識別子275、ページマップエントリ識別子277、ページマップオフセット値、および類するものを有する。
【0053】
ダイ識別子273は、メモリサブシステム110のメディアにおける特定のICダイ(例えば、ダイAまたはダイB)を識別し、そのICダイ上で、ゾーンの後続のデータが格納され得る。ブロック識別子275は、ダイ識別子273を使用して識別されるICダイの中のメモリ(例えば、NANDフラッシュメモリまたは他のメディア)の特定のブロックを識別し、そのブロックにおいて、ゾーンの後続のデータが格納され得る。ページマップエントリ識別子237は、ゾーンの後続のデータを格納するために使用され得るページを識別する、ページマップデータ構造205におけるページマップエントリを識別する。
【0054】
例えば、メモリサブシステム110は、書き込みコマンドの複数個のストリームを受信する。実施形態において、複数個のストリームにおける各それぞれのストリームは、1つの実施形態における論理アドレス空間において順次的にデータを書き込むように構成され、別の実施形態において、複数個のストリームにおける所定のストリームは、1つの実施形態における論理アドレス空間において擬似的に順次的に、またはランダムにデータを書き込むように構成される。各書き込みストリームは、グループとして一体でデータのセットを書き込む、トリミングする、上書きするようにタグ付けされるコマンドのセットを含む。グループにおいて、データは、順次的に、ランダムに、または、擬似的に順次的に、論理空間において書き込まれ得る。好ましくは、グループにおけるデータは、消去ブロックセット内へと書き込まれ、その場合、消去ブロックセットにおけるメモリセルは、その所定のストリームに対するデータを格納するが、他のストリームからのデータは格納しない。消去ブロックセットは、他のストリームのデータを消去することなく、その所定のストリームのデータを除去するように消去され得る。
【0055】
例えば、書き込みストリームの各々は、メモリサブシステム110のメモリデバイス130、140のメディアにおいて割り振られる名前空間におけるゾーンにおけるLBAにおいて順次的に書き込むことを許可されるが、LBA(または論理アドレス)空間において順次性を外れてデータを書き込むことを禁止される。メモリサブシステム110の変換プロセッサ123は、同時的にデータを書き込むために利用可能である、メモリサブシステム110における複数個のメディアユニットを識別する。
【0056】
変換プロセッサ123は、データを書き込むために利用可能である複数個のメディアユニットにおける同時的な実行のために、複数個のストリームから第1のコマンドを選択し得る。変換プロセッサ123は、第1のコマンドが複数個のメディアユニットにおける同時的な実行のために選択されることに応じて動的に、論理アドレス空間において第1のコマンドにより識別される論理アドレスから、複数個のメモリユニットにおけるメモリユニットの物理アドレスにマッピングされる、メディアレイアウトの一部分を生成および格納し得る。
【0057】
コマンド実行プロセッサ124は、物理アドレスによってメモリユニット内へとデータを格納することにより、第1のコマンドを同時的に実行し得る。例えば、実行のために第1のコマンドをスケジューリングする時点において、第2のコマンドの実行が、メモリサブシステム110のメディアのメモリユニットのサブセットにおいて進行中であることがある。かくして、第2のコマンドの実行のために使用されるメモリユニットのサブセットは、第1のコマンドのために利用可能ではない。第1のコマンドがスケジューリングされ、第1のコマンドにおいて使用される論理アドレスに対するメディアレイアウトの一部分が決定される後、第1のコマンドは、同時的に複数個のメディアユニットにおいて、および/または、メモリサブシステム110の残りのメディアユニットにおける第2のコマンドの実行の進行と同時的に実行され得る。
【0058】
例えば、次のコマンドの実行のために利用可能である複数個のメモリユニット(例えば、ICダイ)の識別の後、変換プロセッサ123は、ブロックセットデータ構造207から、次のコマンドのデータを格納するために使用され得る物理アドレスを識別し得る。物理アドレスは、次のコマンドにおいて使用されるLBAアドレスに対する論理対物理ブロックマップデータ構造203における対応するエントリを更新するために使用され得る。
【0059】
例えば、ICダイが自由にデータを書き込めるとき、変換プロセッサ123は、ICダイにおけるメモリセル内へと書き込まれ/プログラムされ得るゾーンのコマンドを決定し得る。ブロックセットデータ構造207から、変換プロセッサ123は、ゾーンに対するエントリを位置特定し、集積回路ダイの識別子273と関連付けられるブロック識別子275およびページマップエントリ識別子277を位置特定し、ゾーンのコマンドにおいて使用されるLBAに対する論理対物理ブロックマップデータ構造203におけるエントリの対応するフィールドを更新するために、ダイ識別子273、ブロック識別子275、およびページマップエントリ識別子277を使用する。
【0060】
図3は、実施形態による、
図1A~1Bのサブシステムメモリコントローラ115の、コマンド生成プロセッサ122、変換プロセッサ123、およびコマンド実行プロセッサ124の相互関係性のブロック線図である。様々な実施形態において、コントローラ115は、共有される揮発性メモリ140Bと、共有される揮発性メモリ140Bにおけるコマンドバッファ140Cとを含む。1つの実施形態において、共有される揮発性メモリ140Bは、
図1Bを参照して論考されるローカルメモリ119または揮発性メモリデバイス140Aの一部である。様々な実施形態において、コマンド生成プロセッサ122は、ホストシステム120(または他の要求エージェント)から第1の読み出し要求を受信し得る。第1の読み出し要求は、読み出し動作が指向される、メモリデバイス130または140の第1の物理アドレスに対応する、第1のLBAを含み得る。第1の読み出し要求にサービス提供することにおいて、コマンド生成プロセッサ122は、第1のLBAを含むように第1の論理転送ユニット(LTU)を創出することであって、第1のLTUは、メモリデバイスの第1の物理アドレスにマッピングされることになる、創出することを行い得る。
【0061】
いくつかの実施形態において、変換プロセッサ123は、共有される揮発性メモリ140B内へとLTU対物理アドレス(PA)マッピング301を自動的に格納(またはバッファリング)することを、それらのマッピングのデータがメモリデバイス130、140内へとプログラムされる際に行うように構成され得る。例えば、LTU対PAマッピング301は、それぞれの物理アドレスがメモリデバイス130または140にプログラムされたときに書き込まれた、論理対物理ブロックマップデータ構造203およびページマップデータ構造205の一部分であり得る。このことは、コマンドタグレベルにおける適正なLTU対PAマッピングを提供する、迅速にアクセス可能なデータ構造を提供し得る。いくつかの実施形態において、共有される揮発性メモリ140BにおけるLTU対PAマッピング301は、このデータ構造をサイズにおいて制限される様態に保つために、キャッシュとして扱われ得る。
【0062】
図3を継続して参照すると、変換プロセッサ123は、共有される揮発性メモリ140Bにおいてフラグ303(例えば、ビットフラグ、または類するもの)を、さらに選択的にセットし得る。LTU対PAマッピング301における各エントリは、それゆえに、LTU番号にマッピングされる物理アドレスと、フラグとを含み得る。代替的な実施形態において、レジスタ112(
図1B)において格納されるビットマップのビット値がセットされ得る。ビットマップのビット値のうちの1つは、個別のLTUに対応し、かくして、共有される揮発性メモリ140Bのフラグ303として機能し得る。ビットマップは、例えばZNS動作ごとに、順次的に書き込まれることが知られている物理アドレス空間に相関させられ得る。フラグ303(または、ビットマップの中のビット値)は、そのLTU対PAマッピングエントリがLBAアドレス空間のゾーンと関連付けられるかどうかを指示し得るものであり、その場合、ゾーンは、メモリデバイス130または140において順次的に書き込まれるデータにマッピングされる。変換プロセッサ123は、物理アドレスが位置特定されるダイが、コマンドにサービス提供するために利用可能であるということを指示するためのダイ利用可能フラグ305を、さらに選択的にセットし得る。
【0063】
様々な実施形態において、フラグ303がセットされ、ダイ利用可能フラグ305が両方ともセットされるならば、コマンド生成プロセッサ122は、本明細書において開示される読み出し先読み最適化を遂行する。その読み出し最適化は、例えば、第1の読み出し要求に対してLTU対PAマッピング301から取得される第1の物理アドレスを自動インクリメントすることを、第1の物理アドレスのオフセット値(例えば、読み出し窓サイズ)の中で後続の物理アドレスを決定するために行うことを含み得る。1つの実施形態において、自動インクリメントすることは、第1の物理アドレスから読み出し窓サイズの端部に達するまで、ページ数により第1の物理アドレスをインクリメントするように遂行される。
【0064】
コマンド生成プロセッサ122は、次いで、コマンドバッファ140Cの中で、メモリデバイス130または140からデータを取得し、バッファのセットにおいてデータを格納するように、コマンド実行プロセッサ124に指図するために利用される、コマンドタグのセットを生成(または更新)し得るものであり、そのことは、
図1Bを参照して論考されている。コマンド生成プロセッサ122は、次いで、処理デバイスのコマンド実行プロセッサ124に、コマンドタグのセットのうちの1つのコマンドタグをそれぞれ含むコマンドのグループをさらに送信し得る。コマンドのセットは、Cmd[0]、Cmd[1]、Cmd[2]等々、ないしCmd[n]として、コマンドバッファ140Cの中でバッファリングされ得る。1つの実施形態において、コマンド生成プロセッサ122は、コマンドタグのセットをコマンドチェーン(例えば、それぞれのコマンドのチェーン)へと相互連結し、コマンド実行プロセッサ124に、単一のコマンドメッセージにおいてコマンドチェーンを送信し得る。
【0065】
コマンド実行プロセッサ124が、第1の(または元の)読み出しコマンドの読み出し先読みに対して割り振られるそれぞれのバッファ内へとデータを格納した後、コマンド生成プロセッサ122は、ホストシステム120または他の要求エージェントに、第1の物理アドレスにおいて格納されるデータを返し得る。しかしながら、コマンド生成プロセッサ122は、さらには、直接的にバッファから、後続の物理アドレスに指向される後続の読み出しコマンドにさらにサービス提供し得る。例えば、第2の読み出し要求に応じて、コマンド生成プロセッサ122は、第2の読み出し要求の第2のLBAが後続の物理アドレスのうちの第2の物理アドレスに対応するということを決定し得る。コマンド生成プロセッサ122は、次いで、コマンドタグのセットのうちの第2のコマンドタグと関連付けられるバッファアドレスを有する、バッファのセットのうちの第2のバッファから、データの第2のサブセットを取得し、後続の読み出しコマンドの第1のものに応じて、ホストシステム120にデータの第2のサブセットを送信し得る。
【0066】
読み出し先読み動作を含む上記の順次読み出し最適化の実施例として、各ゾーンが100MBであるということ、および、ホストシステム120が順次読み出し位置に読み出しアクセスすることを試行するということを想定する。ホストシステム120は、表2において例解されるゾーンにマッピングされる実施例LBAの中に収まる複数個の読み出し要求を発行し得る。
【0067】
【0068】
各ブロックセット(例えば、ブロックストライプ)が200ページを有するということを想定すると、これらのゾーンIDは、ゾーンマップデータ構造201によって、表3において例解されるような、後に続くブロックセット識別子および書き込みポインタに変換され得る。各ブロックセット識別子は、データが書き込まれるブロックセット(またはブロックストライプ)を識別し、書き込みポインタは、新しい書き込みデータが所与のゾーンにおいて次に書き込まれるべきである位置を追跡する。書き込みポインタまでのデータが、各ゾーンに対して表2において説明される開始位置から読み出し可能である。
【0069】
【0070】
よって、第1の読み出し要求がLBA200に指向されるということを想定すると、コマンド生成プロセッサ122は、ゾーンIDが2であるということを決定する。応じて、コマンド生成プロセッサ122は、割り振られるバッファのセットにおいて、LBA値200~208、例えば、ベースLBA値、プラス、例えば8のオフセットと関連付けられるデータを格納するように、コマンド実行プロセッサ124に指図する複数個のコマンドによって、本明細書において開示される読み出し先読み動作を遂行し得る。オフセット値は、一度に順次的に書き込まれる、あらかじめ決定された量のデータ、または、バッファがキャッシュし得る所定の量のデータであると決定される、何らかの他のあらかじめ決定された数のページとして決定され得る。ホストシステム120は、次に、LBA200の後の次の順次LBAである、201のLBA値を伴う第2の読み出し要求を発行し得るということを想定する。201のLBA値に対するデータのこの第2のサブセットは、今やバッファにおいて格納されており、コマンド生成プロセッサ122は、第2の読み出し要求に応じて、ホストシステム120にデータのその第2のサブセットを返し得る。
【0071】
図4は、実施形態による、順次読み出し最適化のための方法400のフローチャートである。方法400は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法400は、
図1A~1Bのコントローラ115(例えば、コマンド生成プロセッサ122)により遂行される。個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0072】
図4を参照すると、動作410において、処理論理は、メモリデバイスに対する論理ブロックアドレス(LBA)アドレス空間の第1のLBAを含む読み出し要求を受信する。動作415において、処理論理は、第1のLBAを含むように第1の論理転送ユニット(LTU)を創出することであって、第1のLTUは、メモリデバイスの第1の物理アドレスにマッピングされることになる、創出することを行う。第1のLTUは、変換プロセッサ123が、共有される揮発性メモリ140B(
図3)のLTU対PAマッピング301においてLTU対PAエントリをすでに創出している限りにおいて、変換プロセッサ123に送出されることを必要としない。処理論理は、次いで、共有されるメモリ140B(
図3)の中で第1のLTUに対してインデックス付けされる第1の物理アドレスにアクセスし得る。
【0073】
図4を継続して参照すると、動作420において、処理論理は、高速ルックアップフラグがセットされているかどうかを決定する。この高速ルックアップフラグは、共有される揮発性メモリ140Bにおいてセットされる、第1の物理アドレスと関連付けられるフラグ303であり得るものであり、または、高速ルックアップフラグは、メモリデバイス130もしくは140の、ZNSに関係付けられる物理アドレス空間と関連付けられるビットマップを格納するレジスタ112のうちの1つにおけるビット値であり得る。いずれの事例においても、高速ルックアップフラグは、第1のLTUが、複数個の順次物理アドレスに順次的にマッピングされる複数個の順次LBAのゾーンと関連付けられるということを指示し得る。動作440において、処理論理は、
図3を参照して論考された、ダイ利用可能フラグ305がセットされているかどうかを決定する。
【0074】
動作430において、高速ルックアップフラグまたはダイ利用可能フラグのいずれかがセットされていないならば、処理論理は、変換プロセッサ123が、第1のLTUを第1の物理アドレスにマッピングするために、ZNSデータ構造の中でルックアップを行うために、変換プロセッサ123に第1のLTUを送出することを含む、通常の読み出しパスによって読み出し要求を送る。
【0075】
動作450において、高速ルックアップフラグおよびダイ利用可能フラグが、第1のLTUとの関係によってセットされているということを想定すると、処理論理は、揮発性メモリ(例えば、
図3における共有される揮発性メモリ140B)から、変換プロセッサ123により、そこに格納(またはバッファリング)された、第1の物理アドレスを取得する。第1の物理アドレスは、共有される揮発性メモリ140BのLTU対PAマッピング301のエントリの中でインデックス付けされ得る。
【0076】
動作460において、処理論理は、揮発性メモリにおいてバッファのセットを割り振ることであって、バッファのセットの容量は、第1の物理アドレスにおいて、および、第1の物理アドレスにおいて開始する読み出し窓サイズの中で順次的に番号付けされる後続の物理アドレスにおいて格納されるデータの量にマッチングする、割り振ることを行う。バッファを格納する揮発性メモリは、ローカルメモリ119、揮発性メモリデバイス140A、および/または、共有される揮発性メモリ140Bであり得る。様々な実施形態において、処理論理は、読み出し窓サイズ(例えば、オフセット値)の端部に達するまで、ページ数により第1の物理アドレスをインクリメントすることにより、各後続の物理アドレスを決定する。
【0077】
動作470において、処理論理は、メモリデバイスからデータを取得し、バッファのセットにおいてデータを格納するように、処理デバイスのコマンド実行プロセッサ124に指図するためのものである、コマンドタグのセットを生成する。コマンドタグのセットは、第1の物理アドレスと関連付けられる第1のコマンドタグと、後続の物理アドレスと関連付けられる追加的なコマンドタグとを含み得る。
【0078】
動作480において、処理論理は、コマンド実行プロセッサ124に、コマンドタグのセットをそれぞれ含むコマンドのグループを送信する。1つの実施形態において、コマンド生成プロセッサ122は、コマンドタグのセットをコマンドチェーン(例えば、それぞれのコマンドのチェーン)へと相互連結し、コマンド実行プロセッサ124に、単一のコマンドメッセージにおいてコマンドチェーンを送信し得る。
【0079】
図5は、関係付けられる実施形態による、順次読み出し最適化のための方法500のフローチャートである。方法500は、ハードウェア(例えば、処理デバイス、回路網、専用の論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路、その他)、ソフトウェア(例えば、処理デバイス上で走らされる、または実行される命令)、または、それらの組み合わせを含み得る処理論理により遂行され得る。いくつかの実施形態において、方法500は、
図1A~1Bのコントローラ115(例えば、コマンド生成プロセッサ122)により遂行される。個別のシーケンスまたは順序において示されるが、別段に指定されない限り、プロセスの順序は修正され得る。かくして、例解される実施形態は、単に実施例として理解されるべきであり、例解されるプロセスは、異なる順序において遂行され得るものであり、いくつかのプロセスは、並列に遂行され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において省略され得る。かくして、すべてのプロセスが、あらゆる実施形態において要されるとは限らない。他のプロセスフローが可能である。
【0080】
図5を参照すると、動作510において、処理論理は、メモリデバイスに対する論理ブロックアドレス(LBA)アドレス空間の第1のLBAを含む読み出し要求を受信する。動作520において、処理論理は、第1のLBAを含む、および、メモリデバイスの第1の物理アドレスにマッピングされることになる、第1の論理転送ユニット(LTU)を創出する。
【0081】
動作530において、処理論理は、第1のLTUがLBAアドレス空間のゾーンと関連付けられるということを決定するためのフラグを読み出すことであって、ゾーンは、複数個の順次物理アドレスに順次的にマッピングされる複数個の順次LBAを含む、読み出すことを行う。論考されたように、フラグは、共有される揮発性メモリ140Bにおいて格納されるフラグ303、または、レジスタ112において格納されるビットマップのビット値であり得る。いずれの事例においても、フラグまたはビット値は、LTUが、メモリデバイスにおいて順次的に書き込まれるデータにマッピングされるゾーンと関連付けられるということを指示し得る。
【0082】
動作540において、処理論理は、揮発性メモリにおいてバッファのセットを割り振ることであって、バッファのセットの容量は、第1の物理アドレスにおいて、および、第1の物理アドレスにおいて開始する読み出し窓サイズの中で順次的に番号付けされる後続の物理アドレスにおいて格納されるデータの量にマッチングする、割り振ることを行う。バッファを格納する揮発性メモリは、ローカルメモリ119、揮発性メモリデバイス140A、または、他の共有される揮発性メモリ140Bであり得る。様々な実施形態において、処理論理は、読み出し窓サイズの端部に達するまで、ページ数により第1の物理アドレスをインクリメントすることにより、各後続の物理アドレスを決定する。
【0083】
動作550において、処理論理は、メモリデバイスからデータを取得し、バッファのセットにおいてデータを格納するように、処理デバイスのコマンド実行プロセッサに指図するためのものである、コマンドタグのセットを生成する。この実施形態において、コマンドタグのセットは、少なくとも、第1の物理アドレスと関連付けられる第1のコマンドタグと、順次的に第1の物理アドレスの後に続く、後続の物理アドレスのうちの第2の物理アドレスと関連付けられる第2のコマンドタグとを含む。
【0084】
図7は、コンピュータシステム700の実施例マシンを例解し、そのコンピュータシステムの中で、本明細書において論考される方法論のうちの任意の1つまたは複数を遂行することをマシンに行わせるための命令のセットが実行され得る。いくつかの実施形態において、コンピュータシステム700は、メモリサブシステム(例えば、
図1Aのメモリサブシステム110)を含む、そのメモリサブシステムに結合される、または、そのメモリサブシステムを利用する、ホストシステム(例えば、
図1Aのホストシステム120)に対応し得る。代替的な実施形態において、マシンは、LAN、イントラネット、エクストラネット、および/またはインターネットにおける他のマシンに対して接続(例えば、ネットワーク化)され得る。マシンは、クライアント-サーバネットワーク環境におけるサーバもしくはクライアントマシンの立場において、ピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、または、クラウドコンピューティングインフラストラクチャもしくは環境におけるサーバもしくはクライアントマシンとして動作し得る。
【0085】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、セルラー電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、または、そのマシンによりとられることになるアクションを指定する命令のセットを(順次的に、または、他の形で)実行する能力をもつ任意のマシンであり得る。さらに、単一のマシンが例解されるが、用語「マシン」は、さらには、本明細書において論考される方法論のうちの任意の1つまたは複数を遂行するための命令のセット(または、複数個のセット)を、個々に、または一緒に実行するマシンの任意の集合体を含むと解されるものとする。
【0086】
実施例コンピュータシステム700は、バス730を介して互いと通信する、処理デバイス702と、メインメモリ704(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)またはRambus DRAM(RDRAM)などのダイナミックランダムアクセスメモリ(DRAM)、その他)と、スタティックメモリ706(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、その他)と、データストレージシステム718とを含む。
【0087】
処理デバイス702は、マイクロプロセッサ、中央処理ユニット、または類するものなどの、1つまたは複数の汎用処理デバイスを表す。より詳しくは、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または、他の命令セットを実施するプロセッサ、または、命令セットの組み合わせを実施するプロセッサであり得る。処理デバイス702は、さらには、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または類するものなどの、1つまたは複数の特殊目的処理デバイスであり得る。処理デバイス702は、本明細書において論考される動作およびステップを遂行するための命令726を実行するように構成される。コンピュータシステム700は、ネットワーク720によって通信するためのネットワークインターフェースデバイス708をさらに含み得る。
【0088】
データストレージシステム718は、本明細書において説明される方法論または機能のうちの任意の1つまたは複数を実施する、命令726の1つもしくは複数のセット、またはソフトウェアが格納される、マシン可読ストレージメディア724(さらには、コンピュータ可読メディアとして知られている)を含み得る。命令726は、さらには、コンピュータシステム700によるそれらの命令の実行中、メインメモリ704の中に、および/または、処理デバイス702の中に、完全に、または、少なくとも部分的に所在し得るものであり、メインメモリ704および処理デバイス702が、さらにはマシン可読ストレージメディアを組成する。マシン可読ストレージメディア724、データストレージシステム718、および/またはメインメモリ704は、
図1A~1Bのメモリサブシステム110に対応し得る。
【0089】
1つの実施形態において、命令726は、
図1Bのバッファマネージャ113に対応する機能性を実施するための命令を含む。マシン可読ストレージメディア724は、単一のメディアであるように実施例実施形態において示されるが、用語「非一時的マシン可読ストレージメディア」は、命令の1つまたは複数のセットを格納する、単一のメディアまたは複数個のメディアを含むと解されるべきである。用語「マシン可読ストレージメディア」は、さらには、マシンによる実行のための命令のセットを格納または符号化する能力をもつ、および、本開示の方法論のうちの任意の1つまたは複数を遂行することをマシンに行わせる、任意のメディアを含むと解されるものとする。用語「マシン可読ストレージメディア」は、よって、ソリッドステートメモリ、光学メディア、および磁気メディアを含む、ただしそれらに制限されないと解されるものとする。
【0090】
前述の詳細な説明のいくつかの一部分は、コンピュータメモリの中のデータビットに関する動作のアルゴリズムおよび記号的表現の見地において提示された。これらのアルゴリズム的な説明および表現は、データ処理技術における当業者により、それらの当業者の成果の大意を他の当業者に最も効果的に伝えるために使用される手立てである。アルゴリズムは、ここでは、および一般的には、所望される結果につながる動作の自己無撞着シーケンスであると考えられる。動作は、物理的数量の物理的操作を要するものである。普通、必ずではないが、これらの数量は、格納される、組み合わされる、比較される、および、他の形で操作されることを受け入れる能力をもつ、電気または磁気信号の形式をとる。これらの信号を、ビット、値、要素、記号、文字、項、数字、または類するものと称することが、主として慣用の理由のために、時には好都合であることが分かっている。
【0091】
しかしながら、これらの、および同様の用語のすべては、適切な物理的数量と関連付けられるためのものであり、これらの数量に適用される好都合なラベルにすぎないということが、心に留め置かれるべきである。本開示は、コンピュータシステムのレジスタおよびメモリの中の物理的(電子的)数量として表されるデータを、コンピュータシステムメモリもしくはレジスタ、または、他のそのような情報ストレージシステムの中の物理的数量として同様に表される他のデータへと操作および転換する、コンピュータシステム、または、同様の電子コンピューティングデバイスの、アクションおよびプロセスを指し得る。
【0092】
本開示は、さらには、本明細書における動作を遂行するための装置に関係する。この装置は、意図される目的のために特別に構築され得るものであり、または、その装置は、コンピュータにおいて格納されるコンピュータプログラムにより、選択的に活動化もしくは再構成される汎用コンピュータを含み得る。そのようなコンピュータプログラムは、各々がコンピュータシステムバスに結合される、フロッピーディスク、光学ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光学カード、または、電子命令を格納するのに適した任意のタイプのメディアなどの、ただしそれらに制限されない、コンピュータ可読ストレージメディアにおいて格納され得る。
【0093】
本明細書において提示されるアルゴリズムおよびディスプレイは、任意の個別のコンピュータまたは他の装置に本質的に関係付けられない。様々な汎用システムが、本明細書における教示によるプログラムとともに使用されることがあり、または、方法を遂行するために、より特殊化された装置を構築することが、好都合であることに結局なることがある。種々のこれらのシステムに対する構造は、下記の説明において論述されるように出現することになる。加えて、本開示は、任意の個別のプログラミング言語を参照して説明されていない。種々のプログラミング言語が、本明細書において説明されるような本開示の教示を実施するために使用され得るということが察知されることになる。
【0094】
本開示は、本開示によってプロセスを遂行するようにコンピュータシステム(または、他の電子デバイス)をプログラムするために使用され得る、命令を格納したマシン可読メディアを含み得る、コンピュータプログラム製品またはソフトウェアとして提供され得る。マシン可読メディアは、マシン(例えば、コンピュータ)により可読な形式で情報を格納するための任意の機構を含む。いくつかの実施形態において、マシン可読(例えば、コンピュータ可読)メディアは、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスクストレージメディア、光学ストレージメディア、フラッシュメモリコンポーネント、その他などの、マシン(例えば、コンピュータ)可読ストレージメディアを含む。
【0095】
上述の明細書において、本開示の実施形態は、本開示の特定の実施例実施形態を参照して説明されている。様々な修正が、後に続く特許請求の範囲において論述されるような、本開示の実施形態の、より広範な趣旨および範囲から逸脱することなく、それらの特定の実施例実施形態に対してなされ得るということが明白であることになる。本明細書および図面は、よって、制約的な観念よりむしろ例解的な観念において考慮されるべきである。