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

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

▶ マイクロン テクノロジー, インク.の特許一覧

特表2023-516786メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体
<>
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図1
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図2
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図3A
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図3B
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図4
  • 特表-メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-20
(54)【発明の名称】メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体
(51)【国際特許分類】
   G06F 12/00 20060101AFI20230413BHJP
【FI】
G06F12/00 560B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022554278
(86)(22)【出願日】2020-03-10
(85)【翻訳文提出日】2022-09-22
(86)【国際出願番号】 CN2020078604
(87)【国際公開番号】W WO2021179163
(87)【国際公開日】2021-09-16
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ウー ジェンガン
(72)【発明者】
【氏名】リュウ ジンサン
(72)【発明者】
【氏名】リー ユン
(72)【発明者】
【氏名】クロウリー ジェームズ ピー.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB01
5B160CD13
(57)【要約】
メモリサブシステムのキューを管理するための方法、システム、及びデバイスが説明される。第1のコマンドは、メモリサブシステムのメモリダイの第1のキューに割り当てられ得る。第1のキューは第1の優先度レベルと関連付けられ、メモリダイは、第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み得る。第2のキューは第2のコマンドを含み得、第1のコマンド及び第2のコマンドは、メモリサブシステム上で実施される個別の動作と各々関連付けられる。幾つかの例では、第1のコマンドは、第1及び第2の優先度レベルに基づいて第2のコマンドの前に発行され得る。

【特許請求の範囲】
【請求項1】
メモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当てることであって、前記第1のキューは第1の優先度レベルと関連付けられ、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み、前記第2のキューは第2のコマンドを含み、前記第1のコマンド及び前記第2のコマンドは、前記メモリサブシステム上で実施される個別の動作と各々関連付けられることと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のコマンドを発行する前に前記第1のコマンドを発行すること
を含む、方法。
【請求項2】
前記第1のキューに前記第1のコマンドを割り当てる前に、前記第2のキュー内の1つ以上の第2のコマンドを発行することと、
前記第1のキューに前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することであって、前記第1のコマンドを発行することは、前記1つ以上の第2のコマンドの発行を中断することに少なくとも部分的に基づくこと
を更に含む、請求項1に記載の方法。
【請求項3】
前記第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の前記第2のコマンドの発行を再開すること
を更に含む、請求項2に記載の方法。
【請求項4】
前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することと、
前記1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを発行することと、
前記追加の第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開すること
を更に含む、請求項3に記載の方法。
【請求項5】
前記第1のキューは1つ以上の追加のコマンドを含み、前記方法は、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドを発行する前に、前記1つ以上の追加のコマンドを発行すること
を更に含む、請求項1に記載の方法。
【請求項6】
前記メモリサブシステムの複数のメモリダイの複数の第1のキューに第1のコマンドを割り当てることであって、前記複数の第1のキューの各々は、前記第1の優先度レベルと関連付けられ、前記第複数のメモリダイの各々は、前記第2の優先度レベルと関連付けられた個別の第2のキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記複数のメモリダイの個別の第2のキュー内のコマンドを発行する前に、前記第1のコマンドの各々を発行すること
を更に含む、請求項1に記載の方法。
【請求項7】
前記メモリサブシステムに利用可能なリソースの量を判定することであって、前記第2のキュー内の前記1つ以上の第2のコマンドを発行する前に前記第1のコマンドを発行することは、前記メモリサブシステムに利用可能なリソースの前記量に少なくとも部分的に基づくこと
を更に含む、請求項1に記載の方法。
【請求項8】
前記第1のコマンドはホスト読み出しコマンドを含み、前記1つ以上の第2のコマンドは、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド、又はそれらの組み合わせを含む、請求項1に記載の方法。
【請求項9】
複数のメモリコンポーネントと、
前記複数のメモリコンポーネントと動作可能に結合され、
メモリサブシステムのメモリダイの第1のキューに、第1の優先度レベルと関連付けられた第1のコマンドを割り当てることであって、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられたキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のキュー内に含まれる第2のコマンドの前に前記第1のコマンドを送信すること
をする処理デバイスと
を含む、システム。
【請求項10】
前記第1のコマンドを前記第1のキューに割り当てる前に、前記第2のキューから1つ以上の第2のコマンドを送信することと、
前記第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内に含まれる追加の第2のコマンドの送信を中断することであって、前記第1のコマンドを発行することは、前記追加の第2のコマンドの送信を中断することに少なくとも部分的に基づくこと
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項11】
前記第1のコマンドを発行した後、前記第2のキュー内に含まれる追加の第2のコマンドを送信すること
を更にする前記処理デバイス
を更に含む、請求項10に記載のシステム。
【請求項12】
前記第2のキュー内に含まれる前記追加の第2のコマンドの送信を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記追加の第2のコマンドの内の1つの送信を中断することと、
前記追加の第2のコマンドの内の1つの送信を中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを送信することと、
前記追加の第1のコマンドを送信した後、前記第2のキュー内の前記追加の第2のコマンドの内の前記1つを送信すること
を更にする前記処理デバイス
を更に含む、請求項11に記載のシステム。
【請求項13】
前記第1のキューは1つ以上の追加の第1のコマンドを含み、
前記処理デバイスは、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内に含まれる1つ以上の第2のコマンドの送信の前に前記1つ以上の追加の第1のコマンドを送信すること
をする、請求項9に記載のシステム。
【請求項14】
前記メモリサブシステムの複数のメモリダイの複数の第1のキューの内の個別の第1のキューに第1のコマンドを割り当てることであって、前記第1のコマンドの各々は前記第1の優先度レベルと関連付けられ、前記複数のメモリダイの各々は、第2の優先度レベルと関連付けられた第2のキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記複数のメモリダイの前記第2のキュー内の1つ以上の第2のコマンドを送信する前に、前記第1のコマンドの各々を送信すること
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項15】
前記メモリサブシステムに利用可能なリソースを判定することと、
前記メモリサブシステムに利用可能な前記リソースに少なくとも部分的に基づいて、前記第2のキュー内の1つ以上の第2のコマンドを発行する前に、前記第1のコマンドを発行すること
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項16】
メモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当てることであって、前記第1のキューは第1の優先度レベルと関連付けられ、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み、前記第2のキューは第2のコマンドを含み、前記第1のコマンド及び前記第2のコマンドは、前記メモリサブシステム上で実施される個別の動作と各々関連付けられることと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のコマンドを発行する前に前記第1のコマンドを発行すること
を、処理デバイスによって実行される場合に、前記処理デバイスにさせる命令を含む、非一時的コンピュータ可読ストレージ媒体。
【請求項17】
前記処理デバイスは、
前記第1のコマンドを前記第1のキューに割り当てる前に、前記第2のキュー内の1つ以上の第2のコマンドを発行することと、
前記第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することであって、前記第1のコマンドを発行することは、前記1つ以上の第2のコマンドの発行を中断することに少なくとも部分的に基づくこと
を更にする、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項18】
前記処理デバイスは、
前記第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開すること
を更にする、請求項17に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項19】
前記処理デバイスは、
前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することと、
前記1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを発行することと、
前記追加の第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上のコマンドの発行を再開すること
を更にする、請求項18に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項20】
前記第1のキューは1つ以上の追加のコマンドを含み、前記処理デバイスは、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドを発行する前に、前記1つ以上の追加のコマンドを発行すること
を更にする、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
以下は、一般的に、メモリサブシステムに関し、より具体的には、メモリサブシステムのキューの管理に関する。
【背景技術】
【0002】
メモリサブシステムは、データを蓄積する1つ以上のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイス及び揮発性メモリデバイスであり得る。一般的に、ホストシステムは、メモリデバイスにデータを蓄積し、メモリコンポーネントからデータを取得するために、メモリサブシステムを利用し得る。
【図面の簡単な説明】
【0003】
開示は、以下に与えられる詳細な説明から、及び開示の様々な例の添付の図面から、より完全に理解されるであろう。図面は、しかしながら、開示を具体例に限定するものとして解釈すべきではなく、説明及び理解のためだけのものである。
【0004】
図1】本開示の幾つかの例に従ったメモリサブシステムを含む例示的なコンピューティングシステムを説明する。
図2】本開示の幾つかの例に従ったメモリサブシステムのキューを管理するための例示的な方法のフロー図である。
図3A】本開示の幾つかの例に従ったメモリサブシステムのファームウェアキューの一例である。
図3B】本開示の幾つかの例に従ったメモリコントローラに対するグローバルプールの一例である。
図4】本開示の幾つかの例に従ったキューを管理するためのメモリシステムの一例である。
図5】本開示の例が動作し得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0005】
本開示の態様は、メモリサブシステムのキューを管理することに向けられている。メモリサブシステムは、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとのハイブリッドであり得る。ストレージデバイス及びメモリモジュールの例は、図1に関連して本明細書に説明される。一般的に、ホストシステムは、データを蓄積するメモリデバイス等の1つ以上のコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムに蓄積されるデータを提供し得、メモリサブシステムから取得されるデータをリクエストし得る。
【0006】
メモリデバイスは、不揮発性メモリデバイスであり得る。不揮発性メモリデバイスの一例は、ネガティブand(NAND)メモリデバイスである。不揮発性メモリデバイスの他の例は、図1に関連して以下に説明される。不揮発性メモリデバイスは、1つ以上のダイのパッケージである。各ダイは、1つ以上のプレーンで構成され得る。プレーンは、論理ユニット(LUN)にグループ化され得る。幾つかのタイプの不揮発性メモリデバイス(例えば、NANDデバイス)の場合、各プレーンは、物理ブロックのセットで構成される。各ブロックは、ページのセットで構成される。各ページは、メモリセル(“セル”)のセットで構成される。セルは、情報を蓄積する電子回路である。データブロックは、以下では、データを蓄積するために使用されるメモリデバイスのユニットを指し、メモリセルのグループ、ワード線のグループ、ワード線、又は個々のメモリセルを含み得る。
【0007】
データ動作は、メモリサブシステムによって実施され得る。データ動作は、ホスト開始の動作であり得る。例えば、ホストシステムは、メモリサブシステム上でデータ動作(例えば、書き込み、読み出し、消去等)を開始し得る。ホストシステムは、メモリサブシステムにあるメモリデバイス上にデータを蓄積するために、及びメモリサブシステム上のメモリデバイスからデータを読み出すために等、メモリサブシステムへアクセスリクエスト(例えば、書き込みコマンド、読み出しコマンド)を送り得る。
【0008】
NANDセルの従来のアクセス動作では、コマンドが様々なメモリダイへ絶えず送信され得る。コマンドは、様々なレベルの優先度を有する異なるアクセス動作(例えば、読み出し動作、書き込み動作等)と関連付けられ得る。すなわち、読み出しコマンド又は書き込みコマンドが同じダイへ送信される前にホスト読み出しコマンドが特定のメモリダイへ送信されることが望ましいことがある。しかしながら、メモリサブシステムは多くのダイを含み、各ダイは多数のコマンド及びコマンドタイプと関連付け得るため、従来のアクセス動作では、コマンドの送信を効果的に優先付けることが不可能であり得る。したがって、従来のアクセス動作は、(例えば、発行されるコマンドのバックログに起因して)メモリデバイスのローカルメモリコントローラにバックプレッシャーをもたらし得、コマンドを発行するためにメモリサブシステムが必要とするリソースを拘束し得る。
【0009】
本開示の態様は、メモリサブシステムのキューをダイレベルで管理することによって、上記及びその他の欠陥に対処する。例えば、メモリサブシステムの各メモリダイは、個別のダイと関連付けられたコマンドを管理するためのキュー(例えば、メモリダイキュー)と関連付けられ得る。更に、各メモリダイキューは、特定の優先度レベルと関連付けられたコマンドを管理するための複数のサブキュー(例えば、優先度付きキュー)を含み得る。メモリダイと関連付けられたコマンドが受信された場合、関連付けられたリクエスト(例えば、コマンドに対するリクエスト)は、発行のための関連付けられたメモリダイキューに(及び関連する優先度付きキューに)割り当てられ得る。コマンドと関連付けられた優先度レベルに基づいて、それは、ローカルメモリコントローラによって発行され得る。
【0010】
例えば、メモリサブシステムの特定のメモリダイと関連付けられたメモリダイキューは、1つ以上(例えば、2つ、3つ、6つ)の優先度付きキューを含み得る。各優先度付きキューは、特定の優先度レベルと関連付けられたコマンドと関連付けられ(例えば、それをリザーブし)得る。実例として、3つのキューが使用される場合、第1の優先度付きキューは、第1の(例えば、最も高い、最も緊急な)優先度レベルを有するコマンドと関連付けられ得、第2の優先度付きキューは、第2の(例えば、中間の、中位の)優先度レベルを有するコマンドと関連付けられ得、第3の優先度付きキューは、第3の(例えば、最も低い、最も緊急性の低い)優先度レベルを有するコマンドと関連付けられ得る。メモリダイに対するコマンドが受信された場合、それは、その関連付けられた優先度レベルに基づいて優先度付きキューに割り当てられ得、優先度レベルは事前に定義され得、さもなければ(例えば、半永続的に、動的に)構成され得る。発行の場合、より高い優先度付きキュー内のコマンドは、より低い優先度付きキュー内のコマンドの前に発行され得、すなわち、第1の優先度付きキュー内のコマンドは、第2の優先度付きキュー内のコマンドの前に発行され得る。更に、より低い優先度付きキューからのコマンドが発行される場合により高い優先度付きキューにコマンドが割り当てられた場合、より高い優先度のコマンドが発行されるために、より低い優先度付きキュー内のコマンドの発行は一時的に停止される。より高い優先度のコマンドが一旦発行されると、より低い優先度付きキュー内のコマンドの発行が再開される。そうした技法は、ダイ毎に実施され得る(例えば、各メモリダイは、キューの個別のセット(例えば、メモリダイ毎に複数のキュー)を含み得)、さもなければローカルメモリコントローラが被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてメモリサブシステムがコマンドを発行することを可能にする。
【0011】
図1は、本開示の幾つかの実施形態に従ったメモリサブシステム110を含むコンピューティングシステム100の一例を説明する。メモリサブシステム110は、1つ以上の不揮発性メモリデバイス(例えば、メモリデバイス130)、1つ以上の揮発性メモリデバイス(例えば、メモリデバイス140)、又はそれらの組み合わせ等の媒体を含み得る。
【0012】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとのハイブリッドであり得る。ストレージデバイスの例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、及びハードディスクドライブ(HDD)を含む。メモリモジュールの例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、及び様々なタイプの不揮発性DIMM(NVDIMM)を含む。
【0013】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、車両(例えば、航空機、ドローン、列車、自動車、又はその他の乗り物)、モノのインターネット(IoT)対応デバイス、組み込みコンピュータ(例えば、車両、産業機器、若しくはネットワーク化された商用デバイス内に含まれるもの)、又はメモリ及び処理デバイスを含むそうしたコンピューティングデバイス等のコンピューティングデバイスであり得る。
【0014】
コンピューティングシステム100は、1つ以上のメモリシステム110と結合されたホストシステム105を含み得る。幾つかの例では、ホストシステム105は、異なるタイプのメモリシステム110と結合される。図1は、1つのメモリサブシステム110と結合されたホストシステム105の一例を説明する。本明細書で使用するとき、“に結合された”又は“と結合された”は、一般的に、電気、光学、及び磁気等の接続を含む、有線又は無線を問わない、間接的通信接続又は(例えば、コンポーネントを介在させない)直接的通信接続であり得るコンポーネント間の接続を指す。
【0015】
ホストシステム105は、プロセッサチップセットと、プロセッサチップセットによって実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つ以上のコア、1つ以上のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、及びストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム105は、例えば、データをメモリサブシステム110に書き込み、メモリサブシステム110からデータを読み出すためにメモリサブシステム110を使用する。
【0016】
ホストシステム105は、物理ホストインターフェースを使用してメモリサブシステム110に結合され得る。物理ホストインターフェースの例は、シリアルアドバンスドテクノロジーアタッチメント(SATA)インターフェース、ペリフェラルコンポーネントインターーコネクトエクスプレス(PCIe)インターフェース、USBインターフェース、ファイバーチャネル、スモールコンピューターシステムインターフェース(SCSI)、シリアルアタッチドSCSI(SAS)、ダブルデータレート(DDR)メモリバス、デュアルインラインメモリモジュール(DIMM)インターフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)、オープンNANDフラッシュインターフェース(ONFI)、ダブルデータレート(DDR)、低電力ダブルデータレート(LPDDR)、又は任意のその他のインターフェースを含むが、これらに限定されない。物理ホストインターフェースは、ホストシステム105とメモリサブシステム110との間でデータを送信するために使用され得る。ホストシステム105は、メモリサブシステム110がPCIeインターフェースによってホストシステム105と結合される場合にコンポーネント(例えば、メモリデバイス130)にアクセスするために不揮発性メモリエクスプレス(NVMe)インターフェースを更に利用し得る。物理ホストインターフェースは、メモリサブシステム110とホストシステム105との間で制御、アドレス、データ、及びその他の信号を渡すためのインターフェースを提供し得る。図1は、一例としてメモリサブシステム110を説明する。一般的に、ホストシステム105は、同じ通信接続、複数の別個の通信接続、及び/又は通信接続の組み合わせを介して複数のメモリサブシステムにアクセスし得る。
【0017】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイス及び/又は揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックRAM(DRAM)及びシンクロナスDRAM(SDRAM)等のランダムアクセスメモリ(RAM)であり得るが、これらに限定されない。
【0018】
不揮発性メモリデバイス(例えば、メモリデバイス130)の幾つかの例は、ネガティブand(NAND)タイプのフラッシュメモリ、及び不揮発性メモリセルのクロスポイントアレイである3次元クロスポイント(“3Dクロスポイント”)メモリ等のライトインプレースメモリを含む。不揮発性メモリのクロスポイントアレイは、スタック可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実施し得る。また、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、ライトインプレース動作を実施し得、不揮発性メモリセルが事前に消去されることなく、不揮発性メモリセルはプログラミングされ得る。NANDタイプのフラッシュメモリは、例えば、2次元NAND(2D NAND)及び3次元NAND(3D NAND)を含む。
【0019】
メモリデバイス130の各々は、メモリセルの1つ以上のアレイを含み得る。あるタイプのメモリセル、例えば、シングルレベルセル(SLC)は、セル当たり1ビットを蓄積し得る。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、クワッドレベルセル(QLC)、及びペンタレベルセル(PLC)等の他のタイプのメモリセルは、セル当たり複数ビットを蓄積し得る。幾つかの実施形態では、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、又はこれらの任意の組み合わせ等のメモリセルの1つ以上のアレイを含み得る。幾つかの実施形態では、特定のメモリデバイスは、メモリセルのSLC部分、及びMLC部分、TLC部分、QLC部分、又はPLC部分を含み得る。メモリデバイス130のメモリセルは、データを蓄積するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化され得る。幾つかのタイプのメモリ(例えば、NAND)では、ページは、ブロックを形成するためにグループ化され得る。
【0020】
NANDタイプのフラッシュメモリ(例えば、2D NAND、3D NAND)及び不揮発性メモリセルの3Dクロスポイントアレイ等の不揮発性メモリコンポーネントが説明されているが、メモリデバイス130は、ROM、相変化メモリ(PCM)、自己選択メモリ、その他のカルコゲナイドベースのメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体RAM(FeRAM)、磁気RAM(MRAM)、スピントランスファートルク(STT)-MRAM、導電性ブリッジングRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物ベースのRRAM(OxRAM)、ネガティブor(NOR)フラッシュメモリ、及び電気的消去可能プログラマブルROM(EEPROM)等の任意のその他のタイプの不揮発性メモリに基づき得る。
【0021】
メモリサブシステムコントローラ115(又は簡単のためにコントローラ115)は、メモリデバイス130におけるデータの読み出し、データの書き込み、又はデータの消去等の動作及びその他のそうした動作を実施するために、メモリデバイス130と通信し得る。メモリサブシステムコントローラ115は、1つ以上の集積回路及び/若しくはディスクリートコンポーネント、バッファメモリ、又はそれらの組み合わせ等のハードウェアを含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、専用論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP))、又は別の適切なプロセッサであり得る。
【0022】
メモリサブシステムコントローラ115は、ローカルメモリ125内に蓄積された命令を実行するように構成されたプロセッサ120(例えば、処理デバイス)を含み得る。説明する例では、メモリサブシステムコントローラ115のローカルメモリ125は、メモリサブシステム110とホストシステム105との間の通信を処理することを含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、及びルーチンを実施するための命令を蓄積するように構成された組み込みメモリを含む。
【0023】
幾つかの例では、ローカルメモリ125は、メモリポインタ、フェッチされたデータ等を蓄積するメモリレジスタを含み得る。ローカルメモリ125は、マイクロコードを蓄積するためのROMをも含み得る。図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含むものとして説明されているが、本開示の別の例では、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに(例えば、外部ホストによって、又はメモリサブシステムとは別個のプロセッサ若しくはコントローラによって提供される)外部制御に依存し得る。
【0024】
一般的に、メモリサブシステムコントローラ115は、ホストシステム105からコマンド又は動作を受信し得、コマンド又は動作を、メモリデバイス130及び/又はメモリデバイス140への所望のアクセスを達成するための命令又は適切なコマンドに変換し得る。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション手順、エラー検出及びエラー訂正コード(ECC)動作、暗号化動作、キャッシング動作、並びにメモリデバイス130と関連付けられた論理アドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換等のその他の動作を担い得る。メモリサブシステムコントローラ115は、物理ホストインターフェース介してホストシステム105と通信するためにホストインターフェース回路を更に含み得る。ホストインターフェース回路は、ホストシステムから受信したコマンドを、メモリデバイス130及び/又はメモリデバイス140にアクセスするためのコマンド命令に変換し得ると共に、メモリデバイス130及び/又はメモリデバイス140と関連付けられた応答をホストシステム105に対する情報に変換し得る。
【0025】
メモリサブシステム110はまた、説明されていない追加の回路又はコンポーネントを含み得る。幾つかの例では、メモリサブシステム110は、キャッシュ又はバッファ(例えば、DRAM)と、メモリサブシステムコントローラ115からアドレスを受信し得、メモリデバイス130にアクセスするためにアドレスを復号し得るアドレス回路(例えば、行デコーダ及び列デコーダ)とを含み得る。
【0026】
幾つかの例では、メモリデバイス130は、メモリデバイス130の1つ以上のメモリセルに対する動作を実行するために、メモリサブシステムコントローラ115と共に動作するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部から管理し得る(例えば、メモリデバイス130に対するメディア管理動作を実施し得る)。幾つかの実施形態では、メモリデバイス130は、同じメモリデバイスパッケージ内のメディア管理のためにローカルコントローラ(例えば、ローカルコントローラ135)と組み合わされた生のメモリデバイスであるマネージドメモリデバイスである。マネージドメモリデバイスの一例は、マネージドNAND(MNAND)デバイスである。
【0027】
メモリサブシステム110は、関連付けられた優先度レベルに従ってコマンドを管理するキューマネージャ150を含む。例えば、メモリサブシステム110の各メモリダイ(例えば、メモリデバイス130、メモリデバイス140)は、メモリダイキューと関連付けられ得る。メモリダイキューは、発行のためにコマンド(例えば、読み出しコマンド、書き込みコマンド、ホスト読み出しコマンド等)が割り当てられる1つ以上の優先度付きキューを各々含み得る。特定のダイと関連付けられたコマンドが受信された場合、キューマネージャ150は、コマンドと関連付けられた優先度レベルを判定し得(例えば、キューマネージャ150はコマンドのタイプを判定し得)、コマンドを、ダイと関連付けられた優先度付きキューに割り当て得る。コマンドは、関連付けられた優先度レベルに基づいて、個別の優先度付きキューから発行され得る。こうした技法を使用すると、相対的に低い優先度レベルを有するキューと関連付けられたコマンドの前に、より高い優先度レベルを有するキューと関連付けられたコマンドが発行され得る。コマンドは、ダイ毎のレベルで(例えば、ダイのより高い優先度のコマンドは、同じダイのより低い優先度のコマンドの前に発行される)、又はグローバルに(例えば、メモリダイに関わらず、より高い優先度のコマンドは、より低い優先度のコマンドの前に発行される)発行され得る。何れの例においても、個別のコマンドの優先度レベルに従ってコマンドを発行することは、メモリサブシステムコントローラ115が被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてメモリサブシステム110がコマンドを発行することを可能にする。
【0028】
幾つかの例では、メモリサブシステムコントローラ115は、キューマネージャ150内の少なくとも一部分を含む。例えば、メモリサブシステムコントローラ115は、本明細書に説明する動作を実施するためのローカルメモリ125内に蓄積された命令を実施するように構成されたプロセッサ120(例えば、処理デバイス)を含み得る。幾つかの例では、キューマネージャ150は、ホストシステム105、アプリケーション、又はオペレーティングシステムの一部である。
【0029】
図2は、本開示の幾つかの例に従ったメモリサブシステムのキューを管理するための例示的な方法200のフロー図である。方法200は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラマブルロジック、マイクロコード、デバイスのハードウェア、集積回路等)、ソフトウェア(例えば、処理デバイス上で実行する又は実行される命令)、又はそれらの組み合わせを含み得る処理ロジックによって実施され得る。幾つかの例では、方法200は、図1のキューマネージャ150によって実施される。特定のシーケンス又は順序で示されているが、特に指定がない限り、プロセスの順序は修正され得る。したがって、説明する例は単なる例として理解されるべきであり、説明するプロセスは異なる順序で実施され得、幾つかのプロセスは並行して実施され得る。また、様々な例では、1つ以上のプロセスは省略され得る。したがって、あらゆる例で全てのプロセスが必要であるわけではない。他の方法のフローが可能である。
【0030】
動作205において、処理デバイスは、図1のメモリサブシステム110等のメモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当て得る。第1のキューは、第1の優先度レベルと関連付けられ得、メモリダイは、第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み得る。第2のキューは、第2のコマンドを含み得、第1のコマンド及び第2のコマンドは、メモリサブシステム上で実施される個別の動作と各々関連付けられ得る。
【0031】
動作210において、処理デバイスは、第1及び第2の優先度レベルに少なくとも部分的に基づいて、第2のコマンドを発行する前に第1のコマンドを発行し得る。
【0032】
幾つかの例では、方法200は、第1のコマンドを第1のキューに割り当てる前に、第2のキュー内の1つ以上の第2のコマンドを発行することと、第1のコマンドを第1のキューに割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドの発行を中断することを含み得る。幾つかの例では、第1のコマンドを発行することは、1つ以上の第2のコマンドの発行を中断することに少なくとも部分的に基づく。
【0033】
幾つかの例では、方法200は、第1のコマンドを発行した後、第2のキュー内の1つ以上の第2のコマンドの発行を再開することを含み得る。
【0034】
幾つかの例では、方法200は、第2のキュー内の1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを第1のキューに割り当てることと、追加の第1のコマンドを第1のキューに割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドの発行を中断することと、1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて追加の第1のコマンドを発行することと、追加の第1のコマンドを発行した後、第2のキュー内の1つ以上の第2のコマンドの発行を再開することを含み得る。
【0035】
幾つかの例では、第1のキューは1つ以上の追加のコマンドを含み、方法200は、第1のコマンドを割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドを発行する前に1つ以上の追加のコマンドを発行することを含み得る。
【0036】
幾つかの例では、方法200は、メモリサブシステムの複数のメモリダイの複数の第1のキューに第1のコマンドを割り当てることと、第1及び第2の優先度レベルに少なくとも部分的に基づいて複数のメモリダイの個別の第2のキュー内のコマンドを発行する前に第1のコマンドの各々を発行することを含み得る。幾つかの例では、複数の第1のキューの各々は第1の優先度レベルと関連付けられ、複数のメモリダイの各々は第2の優先度レベルと関連付けられた個別の第2のキューを含む。
【0037】
幾つかの例では、方法200は、メモリサブシステムに利用可能なリソースの量を判定することを含み得る。幾つかの例では、第2のキュー内の1つ以上の第2のコマンドを発行する前に第1のコマンドを発行することは、メモリサブシステムに利用可能なリソースの量に少なくとも部分的に基づく。
【0038】
方法200の幾つかの例では、第1のコマンドはホスト読み出しコマンドを含み、1つ以上の第2のコマンドは、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド、又はそれらの組み合わせを含む。
【0039】
図3Aは、本開示の幾つかの例に従ったメモリサブシステムのキューを管理することをサポートするファームウェアキュー300-aの一例を説明する。ファームウェアキュー300-aは、1つ以上の優先度付きキューを各々含む複数のメモリダイキュー305(例えば、LUNキュー305)を説明する。例えば、第1のメモリダイキュー305は、優先度付きキュー310、310-a、及び310-bを含み得る。幾つかの例では、優先度付きキュー310は第1の優先度付きキューに対応し得、優先度付きキュー310-aは第2の優先度付きキューに対応し得、優先度付きキュー310-bは第3の優先度付きキューに対応し得る。優先度付きキュー310は、特定のコマンド(例えば、コマンドを完了するためのリクエスト)を含み得、コマンドは、個別のキュー310の優先度レベルに従って、ローカルメモリコントローラ(例えば、フラッシュメモリコントローラ)によって発行され得る。幾つかの例では、コマンドはオンザフライでキュー310に割り当てられ得、(異なる優先度レベルと関連付けられた)他のコマンドの発行が一時的に中断されることをもたらし得る。メモリダイレベルでキューを組み込むことは、ローカルメモリコントローラが被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてサブシステムがコマンドを発行することを可能にする。
【0040】
本明細書で論じるように、メモリダイキュー305は、優先度付きキュー310、310-a、及び310-bを含み得、それらは、第1の優先度付きキュー、第2の優先度付きキュー、及び第3の優先度付きキューに夫々対応し得る。幾つかの例では、第1の優先度付きキュー310には、(例えば、第2及び第3の優先度付きキューに対して)最も高い優先度レベルが割り当てられ得る。優先度付きキュー310に最も高い優先度レベルを割り当てることによって、優先度付きキュー310内に配置された関連付けられたメモリダイに関連する任意のコマンドは、優先度付きキュー310-a及び310-b内のコマンドの前に発行され(例えば、ローカルメモリコントローラに送られ)得る。同様に、第2の優先度付きキュー310-aには、(例えば、第1及び第3の優先度付きキューに対して)中間の優先度レベルが割り当てられ得る。優先度付きキュー310-aに中間の優先度レベルを割り当てることによって、優先度付きキュー310-a内に配置された関連付けられたメモリダイに関連する任意のコマンドは、優先度付きキュー310-b内のコマンドの前に発行され得る。他の例では、第3の優先度付きキュー310-bには、(例えば、第1及び第2の優先度付きキューに対して)最も低い優先度レベルが割り当てられ得る。優先度付きキュー310-bに最も低い優先度レベルを割り当てることによって、優先度付きキュー310-b内に配置された関連付けられたメモリダイに関連する任意のコマンドは、優先度付きキュー310及び310-aが空である(例えば、それらが何れのコマンドも含まない)場合にのみ発行され得る。
【0041】
例として、第1のメモリダイキュー305は、優先度付きキュー310内のコマンド328と、優先度付きキュー310-a内のコマンド330及び330-aとを含み得る。第1のメモリダイキュー305はまた、優先度付きキュー310-b内のコマンド335、335-a、及び335-bを含み得る。幾つかの例では、優先度付きキュー310、310-a、及び310-b内のコマンドの各々は、異なる時点で受信される異なるコマンドであり得る。すなわち、コマンドは、それらが発行されたときに、優先度付きキュー310、310-a、及び310-bに入力され得る。したがって、優先度付きキュー310は、優先度付きキュー310-a及び310-bよりも高い優先度レベルと関連付けられ得るので、コマンド328は、コマンド330、330-a、335、335-a、及び335-bの前に発行され得る。
【0042】
追加的又は代替的に、コマンド328、330、及び/又は330-aが優先度付きキュー310及び310-aに夫々入力される前に、コマンド335、335-a、及び335-bの内の1つ以上が優先度付きキュー310-bに入力され得る。優先度付きキュー310-b内のコマンドは、コマンドが優先度付きキュー310又は優先度付きキュー310-aの何れかに入力されるまで(例えば、個々に、1つずつ)発行され得る。コマンドが優先度付きキュー310又は310-aの何れかに入力された場合、優先度付きキュー310-b内のコマンドは発行されないことがある。すなわち、優先度付きキュー310及び/又は310-a内の全てのコマンドが発行されるまで、優先度付きキュー310-b内の何れのコマンドも一時停止され(例えば、保留され、中断され)得る。優先度付きキュー310及び/又は310-a内の全てのコマンドを発行すると、優先度付きキュー310-b内の任意のコマンドは発行され得る(又は発行され続ける)。同様に、優先度付きキュー310内のコマンドは、優先度付きキュー310-a内のコマンドより優先され得る。したがって、優先度付きキュー310内の全てのコマンドが発行されるまで、優先度付きキュー310-a内の何れのコマンドも一時停止され(例えば、保留にされ、中断され)得る。コマンドが満たされた(例えば、キューからのリクエストがローカルメモリコントローラに渡された)場合、関連付けられたコマンドは、図3Bに示すグローバルプールに入力され得る。グローバルプール内のコマンドは、ローカルメモリコントローラによって発行され得る。
【0043】
幾つかの例では、第2のメモリダイキュー305-aは、優先度付きキュー315-a内のコマンド340、340-a、及び340-bを含み得る。第2のメモリダイキュー305-aはまた、優先度付きキュー315-b内のコマンド345、345-a、及び345-bを含み得る。図3Aに示すように、優先度付きキュー315は、一時的に空(例えば、NULL)であり得るが、(例えば、後の時点で、図示されたものとは異なる時点で)1つ以上のコマンドを受信し得る。幾つかの例では、優先度付きキュー315-a及び315-b内のコマンドの各々は、異なる時点で受信される異なるコマンドであり得る。すなわち、コマンドは、それらが発行されたときに優先度付きキュー315-a及び315-bに入力され得る。幾つかの例では、コマンドは、第1のメモリダイキュー305の優先度付きキュー310-a及び310-bに入力されたコマンドと同じ時点又は異なる時点で入力され得る。優先度付きキュー315-aは、優先度付きキュー315-bよりも高い優先度レベルと関連付けられ得るので、コマンド340、340-a、及び340-bは、コマンド345、345-a、及び345-bの前に発行され得る。
【0044】
メモリダイキュー305に関して上で論じたように、コマンド345、345-a、及び345-bの内の1つ以上は、コマンド340、340-a、及び/又は340が優先度付きキュー315-aに入力される前に優先度付きキュー315-bに入力され得る。優先度付きキュー315-b内のコマンド内のコマンドは、コマンドが優先度付きキュー315-aに入力されるまで(例えば、個々に、1つずつ)発行され得る。コマンドが優先度付きキュー315-aに入力された場合、優先度付きキュー315-b内のコマンドは発行されないことがある。すなわち、優先度付きキュー315-a内の全てのコマンドが発行されるまで、優先度付きキュー315-b内の何れのコマンドも一時停止され(例えば、保留にされ、中断され)得る。優先度付きキュー315-a内の全てのコマンドを発行すると、優先度付きキュー315-b内の任意のコマンドが発行され得る(又は発行され続け得る)。本明細書で論じるように、コマンド(例えば、コマンドに対するリクエスト)がキューから発行された場合、それらは、図3Bに示すグローバルプールに入力され得る。グローバルプール内のコマンドは、ローカルメモリコントローラによって発行され得る。
【0045】
幾つかの例では、コマンドは、異なるメモリダイキューの対応する優先度付きキューに入力され得る。例えば、メモリダイキュー305及びメモリダイキュー305-aは両方とも、第1、第2、及び第3の優先度付きキューを含み得る。したがって、コマンドは、(例えば、異なるメモリダイキューの対応する優先度付きキューに基づいて)ダイ毎に、又はグローバルに、異なるメモリダイキューの対応する優先度付きキューから発行され得る。例えば、優先度付きキュー310-aは、コマンド330及び330-aを含み得、優先度付きキュー315-aは、コマンド340、340-a、及び340-bを含み得る。何時でも、両方の優先度付きキューはコマンドの内の1つ以上を含み得るので、コマンドはダイ毎に発行され得、例えば、メモリダイキュー305は、それ自体の優先度付きキューに従ってコマンドを発行し得、メモリダイキュー305-aは、それ自体の優先度付きキューに従ってコマンドを発行し得る。又は、個別のコマンドは、コマンドが個別の優先度付きキューに入力された順序に基づいて発行され得、例えば、コマンド330、330-a、340、340-a、及び340-bは、各コマンドが同じ優先度レベルと関連付けられているので、各コマンドが個別の優先度付きキューに入力された順序に基づいて発行され得る。
【0046】
幾つかの例では、ファームウェアキュー300-aは、第3のメモリダイキュー305-b及び第4のメモリダイキュー305-cをも含み得る。第4のメモリダイキュー305はまた、ファームウェアキュー300-aのn番目のメモリダイキューであり得、又はそれを表し得る。すなわち、ファームウェアキュー300-aは、メモリサブシステムのメモリダイに対応する複数のメモリダイキューを含み得る。幾つかの例では、第3のメモリダイキュー305-b及び第4のメモリダイキュー305-bは、コマンドに対する1つ以上の優先度付きキューを各々含み得る。例えば、第3のメモリダイキュー305-bは、優先度付きキュー320-a内のコマンド350、350-a、及び350-bと、優先度付きキュー320-b内のコマンド355、355-a、及び355-bとを含み得る。図3Aに示すように、第4のメモリダイキュー305-cの優先度付きキューは、一時的に空(例えば、NULL)であり得るが、1つ以上のコマンドを(例えば、後で、異なる時点で)受信し得る。
【0047】
メモリダイキュー305及び305-aを参照して論じたように、メモリダイキュー305-b及び305-cは、個別の優先度付きキューと関連付けられた優先度レベルに従ってコマンドを発行し得る。例えば、コマンド350、350-a、及び350-bは、優先度付きキュー320-aと関連付けられた優先度レベルに起因して、コマンド355、355-a、及び355-bの前に発行され得る。他の例では、本明細書で論じるように、コマンドが優先度付きキュー320-aに割り当てられた場合、コマンド355、355-a、及び355-bの発行は一時的に中断され(例えば、一時停止され、保留され)得る。優先度付きキュー320-a内の何れかのコマンドが発行されると、優先度付きキュー320-b内のコマンド(例えば、コマンド355、355-a、及び/又は355-b)の発行が再開され得る。追加的又は代替的に、第3のメモリダイキュー305-b及び/又は第4のメモリダイキュー305-cと関連付けられたコマンドは、(例えば、異なるメモリダイキューの対応する優先度付きキューに基づいて)ダイ毎に又はグローバルに発行され得る。
【0048】
幾つかの例では、特定のコマンドは、事前定義された優先度レベルと関連付けられ得る。例えば、第1の優先度レベル(例えば、最も高い優先度レベル)は、ホスト読み出しコマンドと関連付けられ得る。すなわち、特定のメモリダイと関連付けられたホスト読み出しが発行される度に、それは、特定のダイと関連付けられたメモリダイキューの第1の優先度付きキューに割り当てられ得る。他の例では、第1の優先度レベル(例えば、中間の優先度レベル)は、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド、又はそれらの組み合わせと関連付けられ得る。その他の全てのタイプのコマンドは、第3の(又はより低い)優先度レベルと関連付けられ得る。
【0049】
図3Bは、本開示の幾つかの例に従ったグローバルプール327の一例を説明する。グローバルプール327は、図3Aを参照して論じた優先度付きキューからの1つ以上のコマンドを含み得る。すなわち、コマンドを完了するためのリクエストは、優先度付きキューからグローバルプール327に発行され(例えば、リリースされ)得、ローカルメモリコントローラは、それらがグローバルプール327に入力された順序に基づいて、関連付けられたコマンドを発行し得る。受信した順序で(すなわち、コマンドが受信された時点と各コマンドの個別の優先度とに従って)グローバルプール327からコマンドを発行することは、ローカルメモリコントローラが被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてサブシステムがコマンドを発行することを可能にする。
【0050】
幾つかの例では、グローバルプール327は、図3Aを参照して論じたコマンドの各々を含み得る。コマンドは、(例えば、個別のメモリダイキュー305によって)受信された順序、コマンドと関連付けられた個別の優先度レベル、又はそれら両方に基づいて、グローバルプール327に入力され(例えば、含まれ)得る。幾つかの例では、グローバルプール327内のコマンドは、コマンドと関連付けられた1つ以上のリソース(例えば、メモリアドレス)に対応し得る。すなわち、グローバルプール327内のコマンドは、特定のメモリセル又はメモリセルのグループにアクセスするために、ローカルメモリコントローラによって発行され得る。
【0051】
グローバルプール327は、図3Aを参照して論じたメモリダイキュー305の各々からのコマンドを含み得る。例えば、第1のメモリダイキュー305からのコマンド328、330、303-a、335、335-a、及び335-bは、グローバルプール327内に含まれ得る。追加的又は代替的に、第2のメモリダイキュー305-aからのコマンド340、340-a、340-b、345、345-a、及び345-bは、第2のメモリダイキュー305-bからのコマンド350、350-a、350-b、355、355-a、及び355-bと同様に含まれ得る。コマンドは、個別のメモリダイキュー305で受信された順序に基づいて、コマンドと関連付けられた個別の優先度レベルに基づいて、又はそれら両方に基づいてグローバルプール327に入力され得る。
【0052】
幾つかの例では、第3のメモリダイキュー305-bの第2の優先度付きキュー320-aからのコマンド350は、グローバルプール327内の第1のコマンドであり得る。コマンド350は、より高い優先度と関連付けられた任意のコマンド(例えば、コマンド328)の前にそれが受信されることに起因してグローバルプール327に入力される第1のコマンドであり得る。幾つかの例では、コマンド350は、コマンド350が最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド330、330-a、340、340-a、340-b、350-a、及び/又は350-b)の前にグローバルプール327に入力され得る。別の言い方をすれば、第2の優先度付きキュー320-aは、任意の他のメモリダイキューが同じ(又はより高い)優先度レベルを有するコマンドを受信及び発行する前にコマンド350を受信し得る。
【0053】
幾つかの例では、第2のメモリダイキュー305-aの第2の優先度付きキュー315-aからのコマンド340は、グローバルプール327内の次の(例えば、第2の)コマンドであり得る。コマンド340は、コマンド350の後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、コマンド328)の前にそれが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド340は、コマンド340が最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド330、330-a、340、340-a、340-b、350-a、及び/又は350-b)の前にグローバルプール327に入力され得る。
【0054】
幾つかの例では、第3のメモリダイキュー305-bの第2の優先度付きキュー320-aからのコマンド350-aは、グローバルプール327内の次のコマンドであり得る。コマンド350-aは、コマンド340の後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、コマンド328)の前にそれが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド350-aは、コマンド350-aが最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド330、330-a、340-a、340-b、350-a、及び/又は350-b)の前にグローバルプール327に入力され得る。
【0055】
幾つかの例では、第2のメモリダイキュー305-aの第2の優先度付きキュー315-aからのコマンド340-aは、グローバルプール327内の次のコマンドであり得る。コマンド340-aは、コマンド350-aの後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、コマンド328)の前にそれが受信されたことに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド340-aは、コマンド350-aが最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド330、330-a、340-a、340-b、及び/又は350-b)の前にグローバルプール327に入力され得る。
【0056】
幾つかの例では、第1のメモリダイキュー305の第3の優先度付きキュー310-bからのコマンド335は、グローバルプール327内の次のコマンドであり得る。コマンド335は、他のメモリダイキューがより高い優先度のコマンドを含まない場合にそれが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド335は、コマンド335が最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド335-a、335-b、345、345-a、345-b、355、355-a、及び/又は355-b)の前にグローバルプール327に入力され得る。
【0057】
幾つかの例では、第1のメモリダイキュー305の第1の優先度付きキュー310からのコマンド328は、グローバルプール327内の次のコマンドであり得る。コマンド328は、その優先度のみに基づいてグローバルプールに入力され得る。例えば、コマンド328は、第1(例えば最も高い優先度)と関連付けられるので、他のメモリダイキューが個別の優先度付きキュー内のコマンドを含む場合であっても、それはグローバルプール327に入力され得る。例えば、第1のメモリダイキュー305は、第2の優先度付きキュー310-a内のコマンド330及び330-aを含み得る。しかしながら、コマンド328の優先度に起因して、コマンド328は最初に(例えば、コマンド330及び330-aの前に)発行され得る。
【0058】
幾つかの例では、第1のメモリダイキュー305の第2の優先度付きキュー310-aからのコマンド330及び330-aは、グローバルプール327内の次のコマンドであり得る。コマンド330及び330-aは、コマンド328の後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、第1の優先度付きキュー内の別のコマンド)の前にそれらが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド330及び330-aは、コマンド330及び330-aが最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド340-a、340-b、及び/又は350-b)の前にグローバルプール327に入力され得る。
【0059】
幾つかの例では、第1のメモリダイキュー305の第3の優先度付きキュー310-bからのコマンド335-aは、グローバルプール327内の次のコマンドであり得る。コマンド335は、他のメモリダイキューがより高い優先度のコマンドを含まない場合にそれが受信されることに基づいて、グローバルプールに入力され得る。幾つかの例では、コマンド335-aは、コマンド335-aが最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド335-b、345、345-a、345-b、355、355-a、及び/又は355-b)の前にグローバルプール327に入力され得る。
【0060】
幾つかの例では、第2のメモリダイキュー305-aの第2の優先度付きキュー315-aからのコマンド340-bは、グローバルプール327内の次のコマンドであり得る。コマンド340-bは、コマンド335-aの後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、第1の優先度付きキュー内の別のコマンド)の前にそれが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド340-bは、コマンド340-bが最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド350-b)の前にグローバルプール327に入力され得る。
【0061】
幾つかの例では、第3の優先度付きキュー310-b及び315-bからのコマンド335-b及び345は、グローバルプール327内の次のコマンドであり得る。コマンド335-b及び345は、他のメモリダイキューがより高い優先度のコマンドを含まない場合にそれらが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド335-b及び345は、コマンド335-b及び345が最初に受信されることに起因して、同じ優先度レベルと関連付けられた他のコマンド(例えば、コマンド345-a、345-b、355、355-a、及び/又は355-b)の前にグローバルプール327に入力され得る。幾つかの例では、コマンド335-bはコマンド345の前に受信され得るため、それは、最初にグローバルプール327に入力される。他の例では、コマンド335-bは、第1のメモリダイキュー305が第2のメモリダイキュー305-aよりも高い優先度レベルと関連付けられることに基づいて、又は同じ優先度付きキューと関連付けられたコマンドのランダムなエントリに基づいて、コマンド345の前に受信され得る。
【0062】
幾つかの例では、第3のメモリダイキュー305-bの第2の優先度付きキュー320-aからのコマンド350-bは、グローバルプール327内の次のコマンドであり得る。コマンド350-bは、コマンド345の後ではあるが、より高い優先度と関連付けられた任意のコマンド(例えば、第1の優先度付きキュー内の別のコマンド)の前にそれが受信されることに基づいてグローバルプールに入力され得る。幾つかの例では、コマンド350-bは、コマンド350-bが最初に受信されることに起因して、同じ優先度レベルと関連付けられた任意の他のコマンドの前にグローバルプール327に入力され得る。
【0063】
幾つかの例では、残りのコマンド(例えば、コマンド345-a、345-b、355、355-a、及び355-b)の各々は、最後にグローバルプール327に入力され得る。幾つかの例では、コマンドは、受信された順序に基づいて、又は各コマンドの個別のメモリダイキューと関連付けられた優先度レベルに基づいて入力され得る。本明細書で論じるように、グローバルプール327内の各コマンドは、それがプールに入力される順序に従ってローカルメモリコントローラによって発行され得る。(例えば、個別の優先度レベルに従って)こうした順序でコマンドを発行することは、ローカルメモリコントローラがさもなければ被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてサブシステムがコマンドを発行することを可能にし得る。
【0064】
図4は、本開示の幾つかの例に従ってキューを管理するためのメモリシステム400の一例を説明する。メモリシステム400は、ホストデバイス410と結合されたメモリサブシステム405を含み得る。幾つかの例では、ホストデバイス410は、プロセッサ415を通じてメモリサブシステム405と通信し得る。ホストデバイス410はまた、読み出しマネージャ420(例えば、読み出しIOマネージャ)及び/又は書き込みマネージャ425(例えば、書き込みIOマネージャ)と通信し得、これらは両方ともメモリサブシステム405と通信し得る。すなわち、ホストデバイス410は、プロセッサ415、読み出しマネージャ420、及び/又は書き込みマネージャ425を介してメモリサブシステム405と結合され得る。幾つかの例では、メモリサブシステム405は、1つ以上の受信コンポーネント(例えば、受信コンポーネント430、430-a、430-b)と、メモリダイマネージャ435(例えば、LUNマネージャ)と、優先度マネージャ440と、1つ以上のメモリダイに対応するメモリダイキュー445及び455とを含み得る。幾つかの例では、メモリサブシステムは、3つ以上のメモリダイ(及び後続の3つ以上のメモリダイキュー)を含み得る。各メモリダイキューは、図3A及び図3Bを参照して論じた優先度付きキューの例であり得る優先度付きキュー(例えば、優先度付きキュー450及び460)を含み得る。幾つかの例では、優先度付きキュー450及び460は、関連付けられた優先度に従ってコマンド(例えば、関連付けられたコマンドを完了するためのリクエスト)を発行し得る。リクエストは、グローバルプール465に入力され得、ローカルメモリコントローラは、関連付けられたコマンドをその後発行し得る。グローバルプール465は、図3Bを参照して論じたようなグローバルプール327の一例であり得る。
【0065】
ホストデバイス410は、プロセッサ415を介してメモリサブシステム405と通信し得る。幾つかの例では、ホストデバイス410は、1つ以上のコマンド(例えば、ホスト読み出し、ホスト書き込み)をメモリサブシステム405へ送信し得る。コマンドは、メモリサブシステム405の特定のメモリセル(例えば、メモリセルのブロック、メモリダイ等)と関連付けられ得、本明細書で論じるように、それに応じて優先付けられ得る。幾つかの例では、読み出しマネージャ420は、メモリサブシステム405の読み出し動作(例えば、内部読み出し動作)を管理し得、書き込みマネージャ425は、メモリサブシステム405の書き込み動作(例えば、内部書き込み動作)を管理し得る。読み出しマネージャ420及び書き込みマネージャ425は、ホストデバイス410及び/又はプロセッサ415と各々通信し得る。
【0066】
コマンドは、メモリサブシステム405の受信コンポーネント(例えば、受信コンポーネント430、430-a、及び/又は430-b)によって受信され得る。上で論じたように、コマンドは、ホストデバイス410、読み出しマネージャ420、及び/又は書き込みマネージャ425から受信され得る。受信コンポーネントは、受信したコマンドをメモリダイマネージャ435に渡し(例えば、送信し又は送り)得る。幾つかの例では、メモリダイマネージャ435は、コマンドと関連付けられた特定のメモリダイを判定し得る。すなわち、メモリダイマネージャ435は、受信したコマンドと関連付けられたメモリアドレスを判定し得る。メモリダイマネージャ435は、受信したコマンドと関連付けられたメモリアドレスを優先度マネージャ440に渡し(例えば、送信し)得る。
【0067】
優先度マネージャ440は、コマンドと関連付けられた優先度レベルを判定し得る。本明細書で論じるように、幾つかのコマンド(例えば、ホスト読み出しコマンド)は、第1の優先度レベルと関連付けられ得、他のコマンド(例えば、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド等)は異なる優先度レベルと関連付けられ得る。コマンドの優先度レベルは、コマンドが入力され得る(メモリダイキューの)優先度付きキューを判定し得る。したがって、メモリダイマネージャ435及び優先度マネージャ440は、コマンドと関連付けられたメモリダイ(例えば、メモリダイキューのアドレス)を判定し得、コマンドが特定のダイと関連付けられた正しい優先度付きキューに入力されるようにし得る。例えば、コマンドは、優先度付きキュー450又は460の何れかに入力され得る。
【0068】
メモリダイキュー445及び455は、1つ以上の優先度付きキューを各々含み得る。例えば、メモリダイキュー445の優先度付きキュー450は、図3Aを参照して論じたような複数の優先度付きキューを表し得る。同様に、メモリダイキュー455の優先度付きキュー460は、図3Aを参照して論じたような複数の優先度付きキューを表し得る。図4に示すように、優先度付きキュー450は、夫々、1つ、2つ、及び3つのコマンドを含む3つの優先度付きキュー(例えば、第1、第2、及び第3の優先度付きキュー)を含み得る。追加的又は代替的に、優先度付きキュー460は、夫々、0個、3つ、及び2つのコマンドを含む3つの優先度付きキュー(例えば、第1、第2、及び第3の優先度付きキュー)を含み得る。コマンドは、各コマンドの個別の優先度レベル及び/又はコマンドが個別の優先度付きキューに入力される順序に従って発行され(例えば、リリースされ)得る。リクエスト(例えば、コマンド)が一旦リリースされると、それらは、グローバルプール465に入力され得、ローカルメモリコントローラによって発行され得る。受信した順序で(すなわち、コマンドが受信された時点と各コマンドの個別の優先度とに従って)グローバルプール465からのコマンドを発行することは、ローカルメモリコントローラがさもなければ被り得るバックプレッシャーを低減し得、利用可能なリソースに基づいてサブシステムがコマンドを発行することを可能にし得る。
【0069】
図5は、本明細書で開示するような例に従ったメモリサブシステムのキューを管理することをサポートするコンピュータシステム500の例示的なマシンを説明する。コンピュータシステム500は、本明細書に説明する技法の内の任意の1つ以上をマシンに実施させるための命令のセットを含み得る。幾つかの例では、コンピュータシステム500は、メモリサブシステム(例えば、図1を参照して説明したメモリサブシステム110)を含む、それと結合される、又はそれを利用するホストシステム(例えば、図1を参照して説明したホストシステム105)に対応し得、又はコントローラの動作を実施するために(例えば、図1を参照して説明したキューマネージャ150に対応する動作を実施するためにオペレーティングシステムを実行するために)使用され得る。幾つかの例では、マシンは、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、及び/又はインターネット内の他のマシンと接続(例えば、ネットワーク接続)され得る。マシンは、クライアントサーバーネットワーク環境でサーバー若しくはクライアントマシンの性能で、ピアツーピア(若しくは分散)ネットワーク環境でピアマシンとして、又はクラウドコンピューティングインフラストラクチャ若しくは環境でサーバー若しくはクライアントマシンとして動作し得る。
【0070】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、サーバー、ネットワークルーター、スイッチ若しくはブリッジ、又は該マシンによって実行されるアクションを指定する(シーケンシャルな又はその他の方法の)命令のセットを実行可能な任意のマシンであり得る。更に、単一のマシンが説明されているが、用語“マシン”は、本明細書で論じる方法の何れか1つ以上を実施するために命令のセット(又は複数のセット)を個々に又は共同して実行するマシンの任意の集合をも含み得る。
【0071】
例示的なコンピュータシステム500は、処理デバイス505と、メインメモリ510(例えば、ROM、フラッシュメモリ、SDRAM又はランバスDRAM(RDRAM)等のDRAM等)と、スタティックメモリ515(例えば、フラッシュメモリ、スタティックRAM(SRAM)等)と、データストレージシステム525とを含み得、それらは、バス545を介して相互に通信する。
【0072】
処理デバイス505は、マイクロプロセッサ又は中央処理装置等の1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、若しくはその他の命令セットを実装するプロセッサ、又は命令セットの組み合わせを実装するプロセッサであり得る。処理デバイス505はまた、ASIC、FPGA、DSP、又はネットワークプロセッサ等の1つ以上の専用処理デバイスであり得る。処理デバイス505は、本明細書で論じる動作及びステップを実施するための命令535を実行するように構成される。コンピュータシステム500は、ネットワーク540を介して通信するためのネットワークインターフェースデバイス520を更に含み得る。
【0073】
データストレージシステム525は、本明細書に説明する方法又は機能の内の何れか1つ以上を具体化する命令535又はソフトウェアの1つ以上のセットが蓄積されるマシン可読ストレージ媒体530(コンピュータ可読媒体としても知られる)を含み得る。命令535はまた、コンピュータシステム500による実行中にメインメモリ510内及び/又は処理デバイス505内に完全に又は少なくとも部分的に常駐し得、メインメモリ510及び処理デバイス505もマシン可読ストレージ媒体を構成する。マシン可読ストレージ媒体530、データストレージシステム525、及び/又はメインメモリ510は、メモリサブシステムに対応し得る。
【0074】
一例では、命令535は、キューマネージャ550(例えば、図1を参照して説明したキューマネージャ150)に対応する機能を実装するための命令を含む。マシン可読ストレージ媒体530は単一の媒体として示されているが、用語“マシン可読ストレージ媒体”は、命令の1つ以上のセットを蓄積する単一の媒体又は複数の媒体を含み得る。用語“マシン可読ストレージ媒体”はまた、マシンによる実行のための命令のセットを蓄積又は符号化することが可能であり、本開示の方法の内の任意の1つ以上をマシンに実施させる任意の媒体を含み得る。用語“マシン可読ストレージ媒体”は、固体メモリ、光学媒体、及び磁気媒体を含み得るが、これらに限定されない。
【0075】
前述の詳細な説明の内の幾つかは、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現に関して提示されている。これらのアルゴリズムの記述及び表現は、データ処理技術の当業者が彼らの仕事の内容を他の当業者に最も効果的に伝えるために使用される方法である。アルゴリズムはここにあり、一般的に、所望の結果につながる一貫した一連の動作であると考えられる。動作は、物理量の物理的な操作を必要とする動作である。必ずではないが、通常、これらの量は、蓄積され、組み合わされ、比較され、さもなければ操作されることが可能な電気信号又は磁気信号の形式をとる。これらの信号をビット、値、要素、記号、文字、項、又は数等と称することは、主に一般的な使用上の理由から、場合によっては便利であることが証明されている。
【0076】
しかしながら、これらの用語及び類似の用語は全て、適切な物理量と関連付けられ、これらの量に適用される便利なラベルにすぎないことに留意すべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)量として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ、又はその他のそうした情報ストレージシステム内の物理的量として同様に表される他のデータに操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスに言及し得る。
【0077】
本開示はまた、本明細書の動作を実施するための装置に関する。この装置は、意図した目的のために特別に構築され得、又はコンピュータ内に蓄積されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータを含み得る。そうしたコンピュータプログラムは、非限定的に、コンピュータシステムバスに各々結合された、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、磁気カード若しくは光カード、又は電子的命令を蓄積するのに適した任意のタイプの媒体等のコンピュータ可読ストレージ媒体内に蓄積され得る。
【0078】
本明細書に提示されるアルゴリズム及び表示は、本質的に特定のコンピュータ又はその他の装置に関連付けられない。本明細書の教示に従ったプログラムを用いて様々な汎用システムが使用され得、又は方法を実施するためのより特化した装置を構築することが便利であることが証明され得る。これらの様々なシステムに対する構造は、以下の説明の記述に現れるであろう。また、本開示は、任意の特定のプログラミング言語に言及して説明されていない。本明細書に説明するような開示の教示を実装するために、様々なプログラミング言語が使用され得ることは理解されるであろう。
【0079】
本開示は、命令をその上に蓄積したマシン可読媒体を含み得るコンピュータプログラム製品又はソフトウェアとして提供され得、それは、本開示に従ったプロセスを実施するためにコンピュータシステム(又はその他の電子デバイス)をプログラミングするために使用され得る。マシン可読媒体は、マシン(例えば、コンピュータ)によって読み出し可能な形式で情報を蓄積するための任意のメカニズムを含む。幾つかの例では、マシン可読(例えば、コンピュータ可読)媒体は、ROM、RAM、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリコンポーネント等のマシン(例えば、コンピュータ)可読ストレージ媒体を含む。
【0080】
前述の明細書では、開示の例は、それらの具体例に言及して説明されている。以下の特許請求の範囲に記載されるような開示の例のより広い精神及び範囲から逸脱することなく、様々な修正がそれらになされ得ることは明らかであろう。明細書及び図面は、したがって、限定的な意味ではなく、例示的な意味でみなされるべきである。
図1
図2
図3A
図3B
図4
図5
【手続補正書】
【提出日】2022-09-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当てることであって、前記第1のキューは第1の優先度レベルと関連付けられ、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み、前記第2のキューは第2のコマンドを含み、前記第1のコマンド及び前記第2のコマンドは、前記メモリサブシステム上で実施される個別の動作と各々関連付けられることと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のコマンドを発行する前に前記第1のコマンドを発行すること
を含む、方法。
【請求項2】
前記第1のキューに前記第1のコマンドを割り当てる前に、前記第2のキュー内の1つ以上の第2のコマンドを発行することと、
前記第1のキューに前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することであって、前記第1のコマンドを発行することは、前記1つ以上の第2のコマンドの発行を中断することに少なくとも部分的に基づくこと
を更に含む、請求項1に記載の方法。
【請求項3】
前記第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の前記第2のコマンドの発行を再開すること
を更に含む、請求項2に記載の方法。
【請求項4】
前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することと、
前記1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを発行することと、
前記追加の第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開すること
を更に含む、請求項3に記載の方法。
【請求項5】
前記第1のキューは1つ以上の追加のコマンドを含み、前記方法は、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の1つ以上の第2のコマンドを発行する前に、前記1つ以上の追加のコマンドを発行すること
を更に含む、請求項1に記載の方法。
【請求項6】
前記メモリサブシステムの複数のメモリダイの複数の第1のキューに第1のコマンドを割り当てることであって、前記複数の第1のキューの各々は、前記第1の優先度レベルと関連付けられ、前記第複数のメモリダイの各々は、前記第2の優先度レベルと関連付けられた個別の第2のキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記複数のメモリダイの個別の第2のキュー内のコマンドを発行する前に、前記第1のコマンドの各々を発行すること
を更に含む、請求項1に記載の方法。
【請求項7】
前記メモリサブシステムに利用可能なリソースの量を判定することであって、前記第2のキュー内の1つ以上の第2のコマンドを発行する前に前記第1のコマンドを発行することは、前記メモリサブシステムに利用可能なリソースの前記量に少なくとも部分的に基づくこと
を更に含む、請求項1に記載の方法。
【請求項8】
前記第1のコマンドはホスト読み出しコマンドを含み、1つ以上の第2のコマンドは、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド、又はそれらの組み合わせを含む、請求項1に記載の方法。
【請求項9】
複数のメモリコンポーネントと、
前記複数のメモリコンポーネントと動作可能に結合され、
メモリサブシステムのメモリダイの第1のキューに、第1の優先度レベルと関連付けられた第1のコマンドを割り当てることであって、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられたキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のキュー内に含まれる第2のコマンドの前に前記第1のコマンドを送信すること
をする処理デバイスと
を含む、システム。
【請求項10】
前記第1のコマンドを前記第1のキューに割り当てる前に、前記第2のキューから1つ以上の第2のコマンドを送信することと、
前記第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内に含まれる追加の第2のコマンドの送信を中断することであって、前記第1のコマンドを発行することは、前記追加の第2のコマンドの送信を中断することに少なくとも部分的に基づくこと
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項11】
前記第1のコマンドを発行した後、前記第2のキュー内に含まれる追加の第2のコマンドを送信すること
を更にする前記処理デバイス
を更に含む、請求項10に記載のシステム。
【請求項12】
前記第2のキュー内に含まれる前記追加の第2のコマンドの送信を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記追加の第2のコマンドの内の1つの送信を中断することと、
前記追加の第2のコマンドの内の1つの送信を中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを送信することと、
前記追加の第1のコマンドを送信した後、前記第2のキュー内の前記追加の第2のコマンドの内の前記1つを送信すること
を更にする前記処理デバイス
を更に含む、請求項11に記載のシステム。
【請求項13】
前記第1のキューは1つ以上の追加の第1のコマンドを含み、
前記処理デバイスは、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内に含まれる1つ以上の第2のコマンドの送信の前に前記1つ以上の追加の第1のコマンドを送信すること
をする、請求項9に記載のシステム。
【請求項14】
前記メモリサブシステムの複数のメモリダイの複数の第1のキューの内の個別の第1のキューに第1のコマンドを割り当てることであって、前記第1のコマンドの各々は前記第1の優先度レベルと関連付けられ、前記複数のメモリダイの各々は、第2の優先度レベルと関連付けられた第2のキューを含むことと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記複数のメモリダイの前記第2のキュー内の1つ以上の第2のコマンドを送信する前に、前記第1のコマンドの各々を送信すること
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項15】
前記メモリサブシステムに利用可能なリソースを判定することと、
前記メモリサブシステムに利用可能な前記リソースに少なくとも部分的に基づいて、前記第2のキュー内の1つ以上の第2のコマンドを発行する前に、前記第1のコマンドを発行すること
を更にする前記処理デバイス
を更に含む、請求項9に記載のシステム。
【請求項16】
メモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当てることであって、前記第1のキューは第1の優先度レベルと関連付けられ、前記メモリダイは、前記第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み、前記第2のキューは第2のコマンドを含み、前記第1のコマンド及び前記第2のコマンドは、前記メモリサブシステム上で実施される個別の動作と各々関連付けられることと、
前記第1及び第2の優先度レベルに少なくとも部分的に基づいて、前記第2のコマンドを発行する前に前記第1のコマンドを発行すること
を、処理デバイスによって実行される場合に、前記処理デバイスにさせる命令を含む、非一時的コンピュータ可読ストレージ媒体。
【請求項17】
前記処理デバイスは、
前記第1のコマンドを前記第1のキューに割り当てる前に、前記第2のキュー内の1つ以上の第2のコマンドを発行することと、
前記第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することであって、前記第1のコマンドを発行することは、前記1つ以上の第2のコマンドの発行を中断することに少なくとも部分的に基づくこと
を更にする、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項18】
前記処理デバイスは、
前記第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開すること
を更にする、請求項17に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項19】
前記処理デバイスは、
前記第2のキュー内の前記1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを前記第1のキューに割り当てることと、
前記追加の第1のコマンドを前記第1のキューに割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドの発行を中断することと、
前記1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて、前記追加の第1のコマンドを発行することと、
前記追加の第1のコマンドを発行した後、前記第2のキュー内の前記1つ以上のコマンドの発行を再開すること
を更にする、請求項18に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項20】
前記第1のキューは1つ以上の追加のコマンドを含み、前記処理デバイスは、
前記第1のコマンドを割り当てることに少なくとも部分的に基づいて、前記第2のキュー内の前記1つ以上の第2のコマンドを発行する前に、1つ以上の追加のコマンドを発行すること
を更にする、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
[クロスリファレンス]
本特許出願は、2020年3月10日に出願された“MANAGING QUEUES OF A MEMORY SUB-SYSTEM”と題するWU等による国際特許出願番号PCT/CN2020/078604の国内段階出願であり、該出願は、本願の譲受人に譲渡され、参照によりその全体が本明細書に明示的に組み込まれる。
[技術分野]
以下は、一般的に、メモリサブシステムに関し、より具体的には、メモリサブシステムのキューの管理に関する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0014
【補正方法】変更
【補正の内容】
【0014】
コンピューティングシステム100は、1つ以上のメモリサブシステム110と結合されたホストシステム105を含み得る。幾つかの例では、ホストシステム105は、異なるタイプのメモリサブシステム110と結合される。図1は、1つのメモリサブシステム110と結合されたホストシステム105の一例を説明する。本明細書で使用するとき、“に結合された”又は“と結合された”は、一般的に、電気、光学、及び磁気等の接続を含む、有線又は無線を問わない、間接的通信接続又は(例えば、コンポーネントを介在させない)直接的通信接続であり得るコンポーネント間の接続を指す。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0074
【補正方法】変更
【補正の内容】
【0074】
一例では、命令535は、キューマネージャ550(例えば、図1を参照して説明したキューマネージャ150)に対応する機能を実装するための命令を含む。マシン可読ストレージ媒体530は単一の媒体として示されているが、用語“マシン可読ストレージ媒体”は、命令の1つ以上のセットを蓄積する単一の媒体又は複数の媒体を含み得る。用語“マシン可読ストレージ媒体”はまた、マシンによる実行のための命令のセットを蓄積又は符号化することが可能であり、本開示の方法の内の任意の1つ以上をマシンに実施させる任意の媒体を含み得る。用語“マシン可読ストレージ媒体”は、固体メモリ、光学媒体、及び磁気媒体を含み得るが、これらに限定されない。
幾つかの例では、本明細書に説明するような装置は、本明細書に説明する1つ以上の方法を実施し得る。装置は、本開示の以下の態様を実施するための機構、回路、ロジック、手段、若しくは命令(例えば、プロセッサによって実行可能な命令を蓄積する非一時的コンピュータ可読媒体)、又はそれらの任意の組み合わせを含み得る。
態様1:メモリサブシステムのメモリダイの第1のキューに第1のコマンドを割り当てることであって、第1のキューは第1の優先度レベルと関連付けられ、メモリダイは、第1の優先度レベルとは異なる第2の優先度レベルと関連付けられた第2のキューを含み、第2のキューは第2のコマンドを含み、第1のコマンド及び第2のコマンドは、メモリサブシステム上で実施される個別の動作と各々関連付けられることと、第1及び第2の優先度レベルに少なくとも部分的に基づいて第2のコマンドを発行する前に第1のコマンドを発行することのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを含む、方法、装置、又は非一時的コンピュータ可読媒体。
態様2:第1のコマンドを第1のキューに割り当てる前に、第2のキュー内の1つ以上の第2のコマンドを発行することと、第1のコマンドを第1のキューに割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドの発行を中断することであって、第1のコマンドを発行することは、1つ以上の第2のコマンドの発行の中断に少なくとも部分的に基づくことのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第1の態様に記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様3:第1のコマンドを発行した後、第2のキュー内の1つ以上の第2のコマンドの発行を再開することのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第2の態様に記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様4:第2のキュー内の1つ以上の第2のコマンドの発行を再開した後、追加の第1のコマンドを第1のキューに割り当てることと、追加の第1のコマンドを第1のキューに割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドの発行を中断することと、1つ以上の第2のコマンドを中断することに少なくとも部分的に基づいて追加の第1のコマンドを発行することと、追加の第1のコマンドを発行した後、第2のキュー内の1つ以上の第2のコマンドの発行を再開することのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第3の態様に記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様5:第1のキューは、1つ以上の追加のコマンドを含み、方法、装置、及び非一時的コンピュータ可読媒体は、第1のコマンドを割り当てることに少なくとも部分的に基づいて、第2のキュー内の1つ以上の第2のコマンドを発行する前に、1つ以上の追加のコマンドを発行することのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第1~第4の態様の何れかに記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様6:メモリサブシステムの複数のメモリダイの複数の第1のキューに第1のコマンドを割り当てることであって、複数の第1のキューの各々は、第1のレベルと関連付けられ、複数のメモリダイの各々は、第2の優先度レベルと関連付けられた個別の第2のキューを含むことと、第1及び第2の優先度レベルに少なくとも部分的に基づいて複数のメモリダイの個別の第2のキュー内のコマンドを発行する前に第1のコマンドの各々を発行するすることのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第1~第5の態様の何れかに記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様7:メモリサブシステムに利用可能なリソースの量を判定することであって、第2のキュー内の1つ以上の第2のコマンドを発行する前に第1のコマンドを発行することは、メモリサブシステムに利用可能なリソースの量に少なくとも部分的に基づくことのための動作、機構、回路、ロジック、手段、若しくは命令、又はそれらの任意の組み合わせを更に含む、第1~第6の態様の何れかに記載の方法、装置、又は非一時的コンピュータ可読媒体。
態様8:第1のコマンドはホスト読み出しコマンドを含み、1つ以上の第2のコマンドは、ホスト書き込みコマンド、読み出しコマンド、書き込みコマンド、消去コマンド、又はそれらの組み合わせを含む、第1~第7の態様の何れかに記載の方法、装置、又は非一時的コンピュータ可読媒体。
説明する技法は可能な実装を含むこと、動作及びステップは再配置され得、さもなければ修正され得ること、並びに他の実装が可能であることに留意すべきである。更に、方法の内の2つ以上からの部分は組み合わされ得る。
【国際調査報告】