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

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

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

特表2024-532251メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上
<>
  • 特表-メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上 図1
  • 特表-メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上 図2
  • 特表-メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上 図3
  • 特表-メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上 図4
  • 特表-メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-05
(54)【発明の名称】メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上
(51)【国際特許分類】
   G06F 12/06 20060101AFI20240829BHJP
【FI】
G06F12/06 550A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024511973
(86)(22)【出願日】2022-08-24
(85)【翻訳文提出日】2024-04-10
(86)【国際出願番号】 US2022041401
(87)【国際公開番号】W WO2023028163
(87)【国際公開日】2023-03-02
(31)【優先権主張番号】17/411,572
(32)【優先日】2021-08-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】サンカラナラヤナン スンドララジャン エヌ.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD04
5B160MM01
(57)【要約】
メモリデバイスに動作可能に結合された処理デバイスを含むシステム及び方法が開示される。処理デバイスは、メモリアクセスコマンドを受信することと、メモリアクセスコマンドと関連付けられた物理アドレスを判定することと、物理アドレスによって参照されるメモリデバイス上のダイのプレーンを判定することと、プレーンと関連付けられたキューにメモリアクセスコマンドを挿入することと、キューからのメモリアクセスコマンドを処理することとを含む動作を実施する。

【特許請求の範囲】
【請求項1】
メモリデバイスと、
前記メモリデバイスと動作可能に結合され、
メモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドと関連付けられた物理アドレスを判定することと、
前記物理アドレスによって参照される前記メモリデバイス上のダイのプレーンを判定することと、
前記プレーンと関連付けられたキューに前記メモリアクセスコマンドを挿入することと、
前記キューからの前記メモリアクセスコマンドを処理することと
を含む動作を実施するための処理デバイスと
を含む、システム。
【請求項2】
前記処理デバイスは、
前記メモリアクセスコマンドの優先度を判定することと、
前記優先度に基づいて前記メモリアクセスコマンドを処理することと
を含む更なる動作を実施する、請求項1に記載のシステム。
【請求項3】
前記処理デバイスは、
物理アドレスによって参照されるメモリアクセスコマンドを受信することに応答して、同じ物理アドレスによって参照される前記キュー内に位置付けられた別のメモリアクセスコマンドを排除すること
を含む更なる動作を実施する、請求項1に記載のシステム。
【請求項4】
前記処理デバイスは、
前記キューからの次のメモリアクセスコマンドを処理することであって、前記メモリアクセスコマンドが前記キューに挿入された後に前記更なるメモリアクセスコマンドが前記キューに挿入される、処理することと、
前記メモリアクセスコマンドと関連付けられたデータを送信する前に、前記更なるメモリアクセスコマンドと関連付けられたデータを送信することと
を含む更なる動作を実施する、請求項1に記載のシステム。
【請求項5】
前記処理デバイスは、
前記キューからの前記メモリアクセスコマンドを処理することを一時停止することと、
前記キューからの更なるメモリアクセスコマンドを処理することと、
前記キューからの前記メモリアクセスコマンドを処理することを再開することと
を含む更なる動作を実施する、請求項1に記載のシステム。
【請求項6】
前記処理デバイスは、
高優先度データ構造又は低優先度データ構造の内の少なくとも1つから前記メモリアクセスコマンドを受信することあって、各データ構造は、前記メモリデバイスの各ダイに対するダイ毎のコマンドキュー、前記メモリデバイスの各ダイの各プレーンに対するプレーン毎のコマンドキュー、又は前記メモリデバイスのダイの1つ以上のセットに対するダイセット毎のキューの内の少なくとも1つを含む、受信すること
を含む更なる動作を実施する、請求項1に記載のシステム。
【請求項7】
前記メモリアクセスコマンドは、第1の量の高優先度のコマンドの送信と第2の量の低優先度のメモリアクセスコマンドの送信との間を調整するスキームに基づいて受信される、請求項6に記載のシステム。
【請求項8】
メモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドと関連付けられたアドレス範囲を判定することと、
前記アドレス範囲によって参照される前記メモリデバイス上のダイの少なくとも2つのプレーンを判定することと、
前記メモリアクセスコマンドの異なる部分を複数のキューの各々に挿入することであって、前記複数のキューの各々は、前記複数のプレーンの内の個別のプレーンと関連付けられる、挿入することと、
前記複数のキューの各々からの前記メモリアクセスコマンドを処理することと
を含む、方法。
【請求項9】
前記メモリアクセスコマンドの優先度を判定することと、
前記優先度に基づいて前記メモリアクセスコマンドを処理することと
を更に含む、請求項8に記載の方法。
【請求項10】
物理アドレスによって参照されるメモリアクセスコマンドを受信することに応答して、同じ物理アドレスによって参照される前記キュー内に位置付けられた別のメモリアクセスコマンドを排除すること
を更に含む、請求項8に記載の方法。
【請求項11】
前記複数のキューの内のキューから次のメモリアクセスコマンドを処理することであって、前記メモリアクセスコマンドが前記キューに挿入された後に前記更なるメモリアクセスコマンドがキューに挿入される、処理することと、
前記メモリアクセスコマンドと関連付けられたデータを送信する前に、前記更なるメモリアクセスコマンドと関連付けられたデータを送信することと
を更に含む、請求項8に記載の方法。
【請求項12】
前記キューからの前記メモリアクセスコマンドを処理することを一時停止することと、
前記キューからの更なるメモリアクセスコマンドを処理することと、
前記キューからの前記メモリアクセスコマンドを処理することを再開すること
を更に含む、請求項8に記載の方法。
【請求項13】
高優先度データ構造又は低優先度データ構造の内の少なくとも1つから前記メモリアクセスコマンドを受信することであって、各データ構造は、前記メモリデバイスの各ダイに対するダイ毎のコマンドキュー、前記メモリデバイスの各ダイの各プレーンに対するプレーン毎のコマンドキュー、又は前記メモリデバイスのダイの1つ以上のセットに対するダイセット毎のキューの内の少なくとも1つを含む、受信すること
を更に含む、請求項1に記載の方法。
【請求項14】
前記メモリアクセスコマンドは、第1の量の高優先度のコマンドの送信と第2の量の低優先度のメモリアクセスコマンドの送信との間を調整するスキームに基づいて受信される、請求項13に記載の方法。
【請求項15】
メモリデバイスに動作可能に結合された処理デバイスによって実行されるとき、
メモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドと関連付けられた物理アドレスを判定することと、
前記物理アドレスによって参照される前記メモリデバイス上のダイのプレーンを判定することと、
前記プレーンと関連付けられたキューに前記メモリアクセスコマンドを挿入することと、
前記キューからの前記メモリアクセスコマンドを処理することと
を含む動作を実施する命令を含む、非一時的コンピュータ可読ストレージ媒体。
【請求項16】
前記処理デバイスは、
前記メモリアクセスコマンドの優先度を判定することと、
前記優先度に基づいて前記アクセスコマンドを処理することと
を含む更なる動作を実施する、請求項15に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項17】
前記処理デバイスは、
物理アドレスによって参照されるメモリアクセスコマンドを受信することに応答して、同じ物理アドレスによって参照される前記キュー内に位置付けられた別のメモリアクセスコマンドを排除すること
を含む更なる動作を実施する、請求項15に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項18】
前記処理デバイスは、
前記キューからの次のメモリアクセスコマンドを処理することであって、前記メモリアクセスコマンドが前記キューに挿入された後に前記更なるメモリアクセスコマンドが前記キューに挿入される、処理することと、
前記メモリアクセスコマンドと関連付けられたデータを送信する前に、前記更なるメモリアクセスコマンドと関連付けられたデータを送信することと
を含む更なる動作を実施する、請求項15に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項19】
前記処理デバイスは、
前記キューからの前記メモリアクセスコマンドを処理することを一時停止することと、
前記キューからの更なるメモリアクセスコマンドを処理することと、
前記キューからの前記メモリアクセスコマンドを処理することを再開することと
を含む更なる動作を実施する、請求項15に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項20】
前記処理デバイスは、
高優先度データ構造又は低優先度データ構造の内の少なくとも1つから前記メモリアクセスコマンドを受信することであって、各データ構造は、前記メモリデバイスの各ダイに対するダイ毎のコマンドキュー、前記メモリデバイスの各ダイの各プレーンに対するプレーン毎のコマンドキュー、又は前記メモリデバイスのダイの1つ以上のセットに対するダイセット毎のキューの内の少なくとも1つを含む、受信すること
を含む更なる動作を実施する、請求項15に記載の非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
開示の実施形態は、一般的に、メモリサブシステムに関し、より具体的には、メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上に関する。
【背景技術】
【0002】
メモリサブシステムは、データを格納する1つ以上のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイス及び揮発性メモリデバイスであり得る。一般的に、ホストシステムは、メモリデバイスにデータを格納するため、及びメモリデバイスからデータを取得するためにメモリサブシステムを利用し得る。
【0003】
本開示は、以下で与えられる詳細な説明から、及び開示の様々な実施形態の添付の図面からより完全に理解されるであろう。
【図面の簡単な説明】
【0004】
図1】本開示の幾つかの実施形態に従ったメモリサブシステムを含む例示的なコンピューティングシステムを説明する。
図2】本開示の幾つかの実施形態に従った、メモリアクセスコマンドキューを利用するための例示的な方法のフロー図である。
図3】本開示の幾つかの実施形態に従った、4つのプレーンキューを備えて構造化されたダイを説明する。
図4】本開示の幾つかの実施形態に従った、メモリアクセスコマンドマネージャ及びメモリデバイスを含む例示的なコンピューティングシステムを説明する。
図5】本開示の実施形態が動作し得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0005】
本開示の態様は、メモリデバイス内のメモリアクセスコマンドキューを使用したメモリ性能の向上に向けられる。メモリサブシステムは、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとの組み合わせであり得る。ストレージデバイス及びメモリモジュールの例は、図1と併せて以下に説明される。一般的に、ホストシステムは、データを格納するメモリデバイス等の1つ以上のコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムに格納されるデータを提供し得、メモリサブシステムからデータを取得するようにリクエストし得る。
【0006】
メモリサブシステムは、メモリデバイスに電力が供給されない場合にデータの保持が望まれる高密度不揮発性メモリデバイスを含み得る。不揮発性メモリデバイスの一例は、ネガティブアンド(NAND)メモリデバイスである。不揮発性メモリデバイスのその他の例は、図1と併せて以下に説明される。不揮発性メモリデバイスは、1つ以上のダイのパッケージである。各ダイは1つ以上のプレーンで構成され得る。不揮発性メモリデバイスの幾つかのタイプ(例えば、NANDデバイス)では、各プレーンは物理ブロックのセットで構成される。各ブロックはページのセットで構成される。各ページは、メモリセル(“セル”)のセットで構成される。セルは情報を格納する電子回路である。セルのタイプに応じて、セルは1ビット以上のバイナリ情報を格納し得、格納されているビット数に相関する様々な論理状態を有する。論理状態は、“0”及び“1”等のバイナリ値、又はそうした値の組み合わせで表され得る。
【0007】
メモリデバイスは、二次元格子状に配列された複数のメモリセルを含み得る。メモリセルは、列(以下、ビット線とも称される)及び行(以下、ワード線とも称される)のアレイでシリコンウエハ上にエッチングされる。ワード線は、メモリセルの各々のアドレスを生成するために1つ以上のビット線と共に使用されるメモリデバイスのメモリセルの1つ以上の行を指し得る。ビット線とワード線との交点はメモリセルのアドレスを構成する。以下、ブロックとは、データを格納するために使用されるメモリデバイスの単位を指し、メモリセルのグループ、ワード線グループ、ワード線、又は個々のメモリセルを含み得る。1つ以上のブロックは、各プレーンで同時動作を可能にするためにメモリデバイスのプレーンを形成するように一緒にグループ化され得る。メモリデバイスは、2つ以上のメモリプレーンの同時メモリページアクセスを実施する回路を含み得る。例えば、メモリデバイスは、異なるページタイプを含む2つ以上のメモリプレーンのページへの同時アクセスを容易にするために、メモリデバイスのプレーン毎に個別のアクセス線ドライバ回路及び電源回路を含み得る。
【0008】
メモリアクセス動作は、メモリサブシステムによって実施され得る。メモリアクセス動作は、ホストによって開始される動作であり得、又はメモリサブシステムコントローラによって開始され得る。例えば、ホストシステムは、メモリサブシステム上でメモリアクセス動作(例えば、書き込み動作、読み出し動作、消去動作等)を開始し得る。ホストシステムは、メモリサブシステムのメモリデバイスにデータを格納するため、及びメモリサブシステム上のメモリデバイスからデータを読み出す等のために、メモリアクセスコマンド(例えば、書き込みコマンド、読み出しコマンド)をメモリサブシステムへ送信し得る。以下、ホストリクエストによって指定されるような読み出し又は書き込みされるデータは“ホストデータ”と称される。ホストリクエストは、ホストシステムがホストデータと関連する場所である、ホストデータに対する論理アドレス情報(例えば、論理ブロックアドレス(LBA)、名前空間)を含み得る。論理アドレス情報(例えば、LBA、名前空間)は、ホストデータに対するメタデータの一部であり得る。メタデータは、エラー処理データ(例えば、ECCコードワード、パリティコード)、データバージョン(例えば、書き込まれたデータの古さを区別するために使用される)、有効なビットマップ(どのLBA又は論理転送ユニットが有効なデータを含むか)等をも含み得る。メモリサブシステムコントローラによって開始されたメモリアクセス動作は、ガベージコレクション、ウェアレベリング、不良ブロック管理、ブロックリフレッシュ動作等のメンテナンス動作に関連し得る。
【0009】
幾つかのメモリサブシステムでは、メモリデバイスのローカル媒体コントローラは、オープンNANDフラッシュインターフェース(ONFI)チャネル等の単一の通信チャネルを介してダイ又はダイのセットと通信する。特に、ローカル媒体コントローラは、通信チャネルを経由してダイのセットに対して読み出しコマンド、書き込みコマンド、及び消去コマンドを発行し得る。読み出しコマンドの場合、ローカル媒体コントローラは、通信チャネルを経由してダイから、リクエストされたデータを受信し得る。一般的に、ダイは、一度に1つのシングルプレーンメモリアクセス動作(又はマルチプレーンメモリアクセス動作の場合は2つの動作)のみをキャッシュし得る。したがって、プレーンレベルの読み出しコマンドの場合、保留中のメモリアクセス動作が処理されるまで、ダイは、追加のメモリアクセス動作を受信してキューに入れることができない。例えば、ローカル媒体コントローラから読み出しコマンドを受信することに応答して、メモリデバイスのダイは、読み出しコマンドをキューに入れ得、読み出しコマンドで望まれるデータを取得することにより読み出しコマンドを処理し得、そして、取得されたデータをローカル媒体コントローラへ送信することを試み得る。しかしながら、通信チャネルがビジーである場合(例えば、ローカル媒体コントローラがセットのその他のダイと通信している場合)、ダイは、通信チャネルが空くまで、取得されたデータをクロックアウトできない。したがって、ダイは、待機中アイドル状態のままになり、それは、メモリデバイスの効率の低下につながる。
【0010】
本開示の態様は、メモリデバイス内にコマンドキューを実装することによって、上記及びその他の欠陥に対処する。メモリデバイスの各ダイは2つ以上のプレーンを含み得、各プレーンは物理ブロックのセットを含む。各ダイは、ローカル媒体コントローラによって維持されるプレーン毎のコマンドキューを含むように構造化され得る。プレーンコマンドキューは、ダイの各プレーンに対する複数のメモリアクセスコマンドエントリ(例えば、1つ以上の読み出しコマンド、書き込みコマンド、又はそれらの任意の組み合わせ)を追跡及び格納するために使用され得る。ダイは、エントリの優先度に基づいて、又はその他の処理スキームに基づいて、受信された順序(例えば、先入れ先出し、“FIFO”)でメモリアクセスコマンドエントリを処理し得る。例えば、幾つかのメモリアクセス動作は、他のメモリアクセス動作よりも優先され得る。幾つかの実施形態では、ダイは、高優先度のメモリアクセスコマンドと低優先度のメモリアクセスコマンドとを区別し得る。例えば、より高い優先度を有するメモリアクセスコマンドは、より低い優先度のメモリアクセスコマンドがより高い優先度のメモリアクセスコマンドよりも前にダイによって受信された場合であっても、低い優先度を有するメモリアクセスコマンドよりも前にプレーンコマンドキューから処理され得る。幾つかの実施形態では、ホストシステムによって発行されるメモリアクセスコマンドは、高優先度のメモリアクセスコマンドとして特徴付けられ得、媒体又はバックグラウンドアクティビティを管理するためにメモリサブシステムコントローラによって発行されるメモリアクセスコマンドは、低優先度のメモリアクセスコマンドとして特徴付けられ得る。
【0011】
幾つかの実施形態では、一方のプロセスが他方に影響を与えることなく、プレーンコマンドキューからのメモリアクセスコマンドが処理されることに並行して、メモリアクセスコマンドエントリがプレーンコマンドキューに挿入され得る。例えば、プレーンコマンドキューからの書き込みコマンドは、受信された読み出しコマンドがプレーンコマンドキューに挿入されている間に処理され得る。
【0012】
本開示の利点は、メモリデバイスの性能の向上及び/又はホストシステムに対するサービス品質の向上を含むが、これらに限定されない。例えば、複数のメモリアクセス動作がメモリデバイスの各ダイのキューに入れられ得る。このことは、通信チャネルがビジーである場合に、各ダイが複数のメモリアクセス動作を処理すること可能にする。したがって、本開示の実施形態は、通信チャネルがビジーである場合にダイがアイドルである時間を短縮し、このことは、レイテンシを短縮し、メモリデバイスの性能を向上させる。
【0013】
図1は、本開示の幾つかの実施形態に従ったメモリサブシステム110を含む例示的なコンピューティングシステム100を説明する。メモリサブシステム110は、1つ以上の揮発性メモリデバイス(例えば、メモリデバイス140)、1つ以上の不揮発性メモリデバイス(例えば、メモリデバイス130)、又はそれらの組み合わせ等の媒体を含み得る。
【0014】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとのハイブリッドであり得る。ストレージデバイスの例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチ媒体コントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、及びハードディスクドライブ(HDD)を含む。メモリモジュールの例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、及び様々なタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)を含む。
【0015】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、車両(例えば、飛行機、ドローン、列車、自動車、若しくはその他の乗り物)、モノのインターネット(IoT)対応デバイス、組み込みコンピュータ(例えば、車両、産業機器、若しくはネットワーク接続された商用デバイスに含まれるもの)、又はメモリ及び処理デバイスを含むそうしたコンピューティングデバイス等のコンピューティングデバイスであり得る。
【0016】
コンピューティングシステム100は、1つ以上のメモリサブシステム110に結合されたホストシステム120を含み得る。幾つかの実施形態では、ホストシステム120は、異なるタイプのメモリサブシステム110に結合される。図1は、1つのメモリサブシステム110に結合されたホストシステム120の一例を説明する。本明細書で使用するとき、“に結合された”又は“と結合された”は、一般的に、コンポーネント間の接続を指し、有線か無線かに関係なく、電気、光、磁気等の接続を含む、間接的な通信接続又は(例えば、コンポーネントを介在しない)直接的な通信接続であり得る。
【0017】
ホストシステム120は、プロセッサチップセットと、プロセッサチップセットによって実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つ以上のコア、1つ以上のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、及びストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込むため、及びメモリサブシステム110からデータを読み出すためにメモリサブシステム110を使用する。
【0018】
ホストシステム120は、物理ホストインターフェースを介してメモリサブシステム110に結合され得る。物理ホストインターフェースの例は、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバーチャネル、シリアルアタッチドSCSI(SAS)、ダブルデータレート(DDR)メモリバス、スモールコンピュータシステムインターフェース(SCSI)、デュアルインラインメモリモジュール(DIMM)インターフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)等を含むが、これらに限定されない。ホストシステム120とメモリサブシステム110との間でデータを送信するために物理ホストインターフェースが使用され得る。ホストシステム120は更に、メモリサブシステム120が物理ホストインターフェース(例えば、PCIeバス)によってホストシステム120に結合された場合にコンポーネント(例えば、メモリデバイス130)にアクセスするためにNVM Express(NVMe)インターフェースを利用し得る。物理ホストインターフェースは、メモリサブシステム110とホストシステム120との間で制御、アドレス、データ、及びその他の信号を受け渡すためのインターフェースを提供し得る。図1は、一例としてメモリサブシステム110を説明する。一般的に、ホストシステム120は、同じ通信接続、複数の別個の通信接続、及び/又は通信接続の組み合わせを介して、複数のメモリサブシステムにアクセスし得る。
【0019】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイス及び/又は揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)及び同期型ダイナミックランダムアクセスメモリ(SDRAM)等のランダムアクセスメモリ(RAM)であり得るが、これらに限定されない。
【0020】
不揮発性メモリデバイス(例えば、メモリデバイス130)の幾つかの例は、ネガティブアンド(NAND)型フラッシュメモリ、及び不揮発性メモリセルのクロスポイント アレイである三次元クロスポイント(“3Dクロスポイント”)メモリデバイス等のライトインプレイスメモリを含む。不揮発性メモリのクロスポイントアレイは、積み重ね可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実施し得る。また、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、ライトインプレイス動作を実施し得、不揮発性メモリセルは、不揮発性メモリセルを事前に消去することなくプログラミングされ得る。NAND型フラッシュメモリは、例えば、二次元NAND(2D NAND)及び三次元NAND(3D NAND)を含む。
【0021】
メモリデバイス130の各々は、メモリセルの1つ以上のアレイを含み得る。あるタイプのメモリセル、例えば、シングルレベルセル(SLC)は、セル毎に1ビットを格納し得る。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、クワッドレベルセル(QLC)、及びペンタレベルセル(PLC)等のその他のタイプのメモリセルは、セル毎に複数ビットを格納し得る。幾つかの実施形態では、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、PLC、又はそれらの任意の組み合わせ等のメモリセルの1つ以上のアレイを含み得る。幾つかの実施形態では、特定のメモリデバイスは、メモリセルのSLC部分、MLC部分、TLC部分、QLC部分、又はPLC部分を含み得る。メモリデバイス130のメモリセルは、データを格納するために使用されるメモリデバイスの論理ユニットを参照し得るページとしてグループ化され得る。幾つかのタイプのメモリ(例えば、NAND)では、ページはブロックを形成するようにグループ化され得る。
【0022】
不揮発性メモリセルの3Dクロスポイントアレイ及びNAND型フラッシュメモリ(例えば、2D NAND、3D NAND)等の不揮発性メモリコンポーネントが説明されているが、メモリデバイス130は、リードオンリーメモリ(ROM)、相変化メモリ(PCM)、自己選択メモリ、その他のカルコゲナイドベースのメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、スピントランスファートルク(STT)-MRAM、導電性ブリッジングRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物ベースRRAM(OxRAM)、ネガティブオア(NOR)フラッシュメモリ、及び電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)等の任意のその他のタイプのフラッシュメモリに基づき得る。
【0023】
メモリサブシステムコントローラ115(又は簡略化のためコントローラ115)は、メモリデバイス130でのデータの読み出し、データの書き込み、若しくはデータの消去等の動作、及びその他のそうした動作を実施するためにメモリデバイス130と通信し得る。メモリサブシステムコントローラ115は、1つ以上の集積回路及び/若しくは個別コンポーネント、バッファメモリ、又はそれらの組み合わせ等のハードウェアを含み得る。ハードウェアは、本明細書で説明する動作を実施するための専用の(すなわち、ハードコードされた)ロジックを備えたデジタル回路を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、専用論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等)、又はその他の適切なプロセッサであり得る。
【0024】
メモリサブシステムコントローラ115は、ローカルメモリ119内に格納された命令を実行するように構成された1つ以上のプロセッサ(例えば、プロセッサ117)を含む処理デバイスであり得る。説明する例では、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信を処理すること含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、及びルーチンを実施するための命令を格納するように構成された組み込みメモリを含む。
【0025】
説明する例では、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信を処理すること含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、及びルーチンを実施するための命令を格納するように構成された組み込みメモリを含む。
【0026】
幾つかの実施形態では、ローカルメモリ119は、メモリポインタ、フェッチされたデータ等を格納するメモリレジスタを含み得る。ローカルメモリ119は、マイクロコードを格納するためのリードオンリーメモリ(ROM)をも含み得る。図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含むものとして説明されているが、本開示の別の実施形態では、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに(例えば、外部ホストによって、又はメモリサブシステムとは別のプロセッサ若しくはコントローラによって提供される)外部制御に依存し得る。
【0027】
一般的に、メモリサブシステムコントローラ115は、ホストシステム120からコマンド又は動作を受信し得、コマンド又は動作を、メモリデバイス130への所望のアクセスを達成するための命令又は適切なコマンドに変換し得る。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション動作、エラー検出及び誤り訂正符号(ECC)動作、暗号化動作、キャッシュ動作、並びにメモリデバイス130と関連付けられた論理アドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と物理アドレス(例えば、物理MUアドレス、物理ブロックアドレス)と間のアドレス変換等のその他の動作を担当し得る。メモリサブシステムコントローラ115は、物理ホストインターフェース介してホストシステム120と通信するためのホストインターフェース回路を更に含み得る。ホストインターフェース回路は、ホストシステムから受信されたコマンドをメモリデバイス130にアクセスするためのコマンド命令に変換し得ると共に、メモリデバイス130と関連付けられた応答をホストシステム120のための情報に変換し得る。
【0028】
メモリサブシステム110は、図示されていない追加の回路又はコンポーネントをも含み得る。幾つかの実施形態では、メモリサブシステム110は、キャッシュ又はバッファ(例えば、DRAM)と、メモリサブシステムコントローラ115からアドレスを受信し得、メモリデバイス130にアクセスするためにアドレスをデコードし得るアドレス回路(例えば、行デコーダ及び列デコーダ)とを含み得る。
【0029】
幾つかの実施形態では、メモリデバイス130は、メモリデバイス130の1つ以上のメモリセル上で動作を実行するためにメモリサブシステムコントローラ115と連携して動作するローカル媒体コントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部から管理し得る(例えば、メモリデバイス130上で媒体管理動作を実施し得る)。幾つかの実施形態では、メモリサブシステム110は、ダイ上の制御ロジック(例えば、ローカルコントローラ132)と、同じメモリデバイスパッケージ内での媒体管理のためのコントローラ(例えば、メモリサブシステムコントローラ115)とを有するrawメモリデバイス130を含むマネージドメモリデバイスである。マネージドメモリデバイスの例は、マネージドNAND(MNAND)デバイスである。
【0030】
メモリサブシステム110は、メモリデバイス130にメモリアクセスコマンドを発行し得るメモリアクセスコマンドマネージャ113を含む。幾つかの実施形態では、メモリサブシステムコントローラ115は、メモリ管理コンポーネント113の少なくとも一部分を含む。幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、ホストシステム110、アプリケーション、又はオペレーティングシステムの一部である。他の実施形態では、ローカル媒体コントローラ135は、メモリアクセスコマンドマネージャ113の少なくとも一部分を含み、本明細書で説明する機能を実施するように構成される。
【0031】
メモリアクセスコマンドマネージャ113は、メモリサブシステムコントローラ115及び/又はホスト120から受信されたメモリアクセスコマンドを追跡するために、メモリアクセスコマンドデータ構造(“コントローラコマンドデータ構造”)を維持し得る。コントローラコマンドデータ構造は、メモリデバイス130の各ダイに対するダイ毎のコマンドキュー、メモリデバイス130の各ダイの各プレーンに対するプレーン毎のコマンドキュー、メモリデバイス130のダイの1つ以上のセットに対するダイセット毎のキュー、又はそれらの任意の組み合わせを含み得る。例えば、各コマンドキューは、メモリデバイス130及び/又はメモリデバイス140の対応するプレーンに発行された保留中のメモリアクセスコマンド(ホストシステム120のメモリアクセスコマンド及びメモリサブシステムコントローラ115のメモリアクセスコマンド)を格納し得る。メモリアクセスコマンドマネージャ113は、どの物理アドレス又はアドレス範囲のアクセスがメモリアクセスコマンドによってリクエストされたかを判定することによって、受信されたメモリアクセスコマンドをどのコマンドキューに挿入するかを判定し得る。
【0032】
メモリアクセスコマンドマネージャ113は、各メモリアクセスコマンドに一意の識別子を付加し得る。一意の識別子は、メモリサブシステムコントローラ115がメモリアクセスコマンドを追跡することを可能にし得る。メモリアクセスコマンドマネージャ113は、キューに入れられたメモリアクセスコマンドをメモリデバイス130及び/又はメモリデバイス140へ送信し得る。処理されているメモリアクセスコマンド(例えば、メモリデバイス130及び/又はメモリデバイス140から受信され、ホスト120へ送信された読み出しデータ、メモリデバイス130及び/又はメモリデバイス140に書き込まれたデータ等)に応答して、メモリアクセスコマンドマネージャ113は、コントローラコマンドデータ構造から対応するメモリアクセスコマンドを排除し得る。
【0033】
幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、受信された順序(例えば、FIFO)でメモリアクセスコマンドを処理し得る。FIFO構造を実装することによって、メモリアクセスコマンドマネージャ113は、データの依存関係に関連する問題を防ぎ得る。データ依存関係は、メモリアクセスコマンドが、先行するメモリアクセスコマンドによって動作されているデータを参照している状況である。例えば、メモリアクセスコマンドマネージャは、メモリデバイス130上の物理アドレスに格納されたデータに対する書き込みコマンドを受信し得、その後、同じ物理アドレスからのデータに対する読み出しコマンドを受信し得る。読み出しコマンドが書き込みコマンドよりも前に実施される場合、書き込みコマンドがまだ処理されていないため、読み出しコマンドはホストシステム120に不正確なデータを返すであろう。
【0034】
幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、2つ以上のコントローラコマンドデータ構造を維持及び管理し得る。2つ以上のコントローラコマンドデータ構造の各々は、メモリデバイス130のダイの同じセット、又はメモリデバイス130のダイの異なるセットに対する独立したプレーン毎のコマンドキューを含み得る。例えば、幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、ある幾つかのメモリアクセスコマンドを他の(より低い優先レベルの)メモリアクセスコマンドよりも優先するように高優先度データ構造及び低優先度データ構造を維持及び管理し得る。高優先度のメモリアクセスコマンドは、たとえ低優先度のメモリアクセスコマンドが高優先度のメモリアクセスコマンドよりも前にメモリアクセスコマンドマネージャ113によって受信されたとしても、低優先度のメモリアクセスコマンドよりも前に、メモリアクセスコマンドマネージャ113によって処理され得る(例えば、メモリデバイス130及び/又はメモリデバイス140へ送信され得る)。高優先度のメモリアクセスコマンドは、ホストシステム120によって発行されるメモリアクセスコマンドであり得る一方、低優先度のメモリアクセスコマンドは、メモリサブシステムコントローラによって発行されるメモリアクセスコマンド(例えば、ガベージコレクション、ウェアレベリング、不良ブロック管理、ブロックリフレッシュ動作等のメンテナンス動作に関連するメモリアクセスコマンド)であり得る。高優先度のメモリアクセスコマンド及び低優先度のメモリアクセスコマンドが例示的な実施例として使用される。各メモリアクセスコマンドは、優先度識別子(例えば、高優先度識別子、低優先度識別子等)を含み得る。優先度識別子は、受信されたメモリアクセスコマンドを高優先度データ構造内に格納するか、それとも低優先度データ構造内に格納するかを指し示し得る。
【0035】
幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、メモリデバイス130及び/又は140への、高優先度データ構造からの高優先のメモリアクセスコマンドの送信と、低優先度データ構造からの低優先のメモリアクセスコマンドの送信との間を調整するためにトラフィックアービタを使用し得る。幾つかの実施形態では、メモリアクセスコマンドマネージャ113は、ある量の高優先度のメモリアクセスコマンドの送信と、ある量の低優先度のメモリアクセスコマンドの送信との間を調整するために比率スキームを実装し得る。例えば、5つのメモリアクセスコマンド毎に、メモリアクセスコマンドマネージャ113は、4つの高優先度のメモリアクセスコマンドと、1つの低優先度のメモリアクセスコマンドとを送信し得る(80%の割合)。比率は、メモリサブシステム110の製造中及び/又はキャリブレーション中に事前に決定され得、又はメモリサブシステム110のユーザによって定義され得る。幾つかの実施形態では、比率スキームは所定の条件に基づいて開始され得る。例えば、メモリアクセスコマンドマネージャ113は、高優先度データ構造内の高優先度のメモリアクセスコマンドの量と、低優先度データ構造内の低優先度のメモリアクセスコマンドの量とを判定するために、高優先度データ構造及び低優先度データ構造をサンプリングし得る。基準が満たされることに応答して、メモリアクセスコマンドマネージャ113は、比率スキームを有効又は無効にし得る。基準は、高優先度のコマンド対低優先度のメモリアクセスコマンドの比率が閾値を超えること、高優先度データ構造内の高優先のメモリアクセスコマンドの量が閾値を超えること、低優先度データ構造内の低優先のメモリアクセスコマンドの量が閾値を超えること、又はそれらの組み合わせを含み得る。
【0036】
メモリサブシステム110は、メモリデバイス130に対するメモリアクセスコマンドキューを管理し得るキューマネージャ137を更に含む。幾つかの実施形態では、キューマネージャ137は、メモリアクセスコマンドマネージャ113及び/又はメモリサブシステムコントローラ115の一部である。幾つかの実施形態では、キューマネージャ137の少なくとも一部分は、ホストシステム120、アプリケーション、又はオペレーティングシステムの一部である。他の実施形態では、ローカル媒体コントローラ135は、キューマネージャ137の少なくとも一部分を含み、本明細書で説明する機能を実施するように構成される。
【0037】
キューマネージャ137は、メモリデバイス130のダイ毎に、又はメモリデバイス130の各ダイのプレーン毎に、コマンドキューの1つ以上のセットを管理し得る。メモリアクセスコマンドマネージャ113と同様に、キューマネージャ137は、メモリサブシステムコントローラ115から受信された未処理のメモリアクセスコマンドを追跡するために、メモリアクセスコマンドデータ構造(以下、“メモリデバイスコマンドデータ構造”)を維持し得る。メモリデバイスコマンドデータ構造は、メモリデバイス130の各ダイに対するプレーン毎のコマンドキュー、ダイ毎のコマンドキュー、又はそれらの任意の組み合わせを含み得る。各コマンドキューは、メモリデバイス130の対応するプレーンに発行された保留中のメモリアクセスコマンドを格納し得る。キューマネージャ137は、どの物理アドレス又はアドレス範囲のアクセスがメモリアクセスコマンドによってリクエストされたかを判定することによって、メモリアクセスコマンドマネージャ113から受信されたメモリアクセスコマンドをどのコマンドキューに挿入するかを判定し得る。例えば、ホストコマンドは、メモリサブシステムコントローラ115によって物理アドレスに変換される論理アドレスを提供し得る。物理アドレスは、識別されたダイ、プレーン等を含み得る。説明する例として、メモリデバイス130は、各ダイが4つのプレーンを含む16個のダイを含み得る。したがって、キューマネージャ137は、64個のプレーン(ダイ毎に4つのプレーン×16つのダイ=64個のプレーン)に対するメモリアクセスコマンドを管理するために、メモリデバイスコマンドデータ構造を使用し得る。
【0038】
各プレーンは、少なくとも1つのメモリアクセスコマンドを格納可能な独自のメモリアクセスコマンドキュー(以下、“プレーンキュー”)を含み得る。例えば、各プレーンキューは、1つのメモリアクセスコマンドを格納するための単一のエントリ、2つのメモリアクセスコマンドを格納するための2つのエントリ、又は対応する量のメモリアクセスコマンドを格納するための3つ以上のエントリを含み得る。各プレーンキューは、(例えば、キューマネージャ137からの入力なしに)ダイによって自律的に処理される。例えば、プレーンキュー内の2つの保留中のメモリアクセスコマンドの内の1つを処理することに応答して、ダイは、キューマネージャ137からの命令なしに、2番目の保留中のメモリアクセスコマンドを処理し得る。
【0039】
キューマネージャ137は、メモリアクセスコマンドマネージャ113からメモリアクセスコマンドを受信し得、メモリアクセスコマンドによって参照される物理アドレスを判定し得、メモリアクセスコマンドをメモリデバイスコマンドデータ構造内の適切なコマンドキューに挿入し得る。キューマネージャ137は更に、メモリアクセスコマンドをダイ及びチャネル動作のセットに変換し得、適切なプレーンキューに挿入されるようにメモリアクセスコマンドをメモリデバイス130上の適切なダイへ送信し得る。
【0040】
幾つかの実施形態では、キューマネージャ137は、1つ以上の通信チャネルを使用して、ダイへメモリアクセスコマンドを送信し得、ダイからデータを受信し得る。通信チャネルは、例えば、オープンNANDフラッシュインターフェースONFIチャネル、又はキューマネージャ137とダイとの間の通信を可能にし得る任意のその他のチャネルを含み得る。幾つかの実施形態では、複数の通信チャネルが使用され得、各通信チャネルはダイの特定のセットに接続する。例えば、メモリデバイス130は、ダイの2つのセットを含み得、第1のセットはダイ0、2、4、及び6を含み、第2のセットはダイ1、3、5、及び7を含む。キューマネージャ137は、1つの通信チャネルを使用してダイの第1のセットと通信し得、別の通信チャネルを使用して第2のセットと通信し得る。
【0041】
キューマネージャ137は、1つ以上のスキームを使用してメモリデバイスメモリアクセスコマンド構造からのメモリアクセスコマンドを処理し得る。幾つかの実施形態では、キューマネージャ137は、ラウンドロビン方式を使用してメモリアクセスコマンドを処理し得、キューマネージャ137は、メモリアクセスコマンドを各ダイ、又はセットの各ダイへ送信することを繰り返す。例えば、ダイの第1のセットに関して、キューマネージャ137は、メモリアクセスコマンドをダイ0、次にダイ2、次にダイ4、次にダイ6、そして再びダイ0へ等々送信し得る。幾つかの実施形態では、キューマネージャ137は、メモリアクセスコマンドを送信するためのサイクルと、その後にダイセットからのデータ(例えば、読み出しコマンドからのデータ)をリッスンするためのサイクルとを含み得る。幾つかの実施形態では、キューマネージャ137は、複数の通信チャネルを経由してメモリアクセスコマンドを並行して送信し得る。
【0042】
幾つかの実施形態では、各ダイは、メモリアクセスコマンドセットアップ動作(例えば、キューマネージャ137からメモリアクセスコマンドを受信し、メモリアクセスコマンドをメモリデバイスコマンドデータ構造の適切なプレーンキューに挿入すること)と、データ転送動作(例えば、プレーンキューからのメモリアクセスコマンドを処理すること)とを同時に実施し得る。特に、キューマネージャ137は、プレーンキューが保留中のメモリアクセスコマンドを処理している間に、新たなメモリアクセスコマンドをプレーンキューに挿入し得る。説明する例では、ダイのプレーンキューは保留中のコマンドを含み得る。保留中のメモリアクセスコマンドを処理している間、ダイは、キューマネージャ137から新たなメモリアクセスコマンドを受信し得る。ダイは、保留中のメモリアクセスコマンドの実行を中断することなく、新たなメモリアクセスコマンドをプレーンキューに挿入し得る。幾つかの実施形態では、メモリサブシステムコントローラ115への通信チャネルが空いており、プレーンキューが新たなメモリアクセスコマンドを記録するために利用可能な少なくとも1つの空のエントリを有する限り、ダイは、新たなメモリアクセスコマンドを受信してコマンドキューに挿入し得る。
【0043】
幾つかの実施形態では、単一のメモリアクセスコマンドは、ダイの複数のプレーンにまたがるメモリアドレス範囲(以下、“マルチプレーンメモリアクセスコマンド”)を含み得る。マルチプレーンメモリアクセスコマンドを受信することに応答して、キューマネージャ137は、マルチプレーンメモリアクセスコマンドのアドレス範囲に対応する2つ以上のプレーンキューにマルチプレーンメモリアクセスコマンドを挿入し得る。例えば、プレーン1及びプレーン2のアドレス空間内に配置されたアドレス範囲を含む読み出しコマンドを受信することに応答して、キューマネージャ137は、読み出しコマンドをプレーン1のプレーンキューに、及びプレーン2のプレーンキューに挿入し得る。マルチプレーン読み出しコマンドに関して、各プレーンは読み出しコマンドによってリクエストされた部分データを返し得る。これに応答して、キューマネージャ137は、各プレーンから取得された部分データをマージするためのアセンブリ動作を実施し得る。マルチプレーン書き込みコマンドに関して、キューマネージャ137は、書き込みコマンドを、書き込みコマンドのデータの一部分を各々含む複数の書き込みコマンドに分割し得る。複数の書き込みコマンドの各々は、適切なプレーンキューに挿入され得る。
【0044】
幾つかの実施形態では、キューマネージャ137は、マルチプレーンメモリアクセスコマンドに関する一連のルールを実装し得る。幾つかの実施形態では、キューマネージャ137は、マルチプレーンメモリアクセスコマンドによってアドレス指定された対応するプレーンのプレーンキューが空である場合(例えば、プレーンキューが保留中のメモリアクセスコマンド又はクロックアウトするためのデータを有しない場合)にのみ、マルチプレーンメモリアクセスコマンドをダイへ送信し得る。幾つかの実施形態では、プレーンキューがマルチプレーンコマンドを含む場合、キューマネージャ137は、プレーンキューにシングルプレーンメモリアクセスコマンドのみを挿入し得る。幾つかの実施形態では、キューマネージャ137は、保留中のメモリアクセスコマンドを有するプレーンキューに高優先度のメモリアクセスコマンドのみを挿入し得る。
【0045】
幾つかの実施形態では、キューマネージャ137及び/又はダイの処理ユニットは、コマンド動作を処理することを一時停止し得る。例えば、キューマネージャ137及び/又はダイの処理ユニットは、1つ以上のブロックにデータを書き込むこと、1つ以上のブロックからデータを読み出すこと、1つ以上のブロックからデータを消去すること等を一時停止し得る。幾つかの実施形態では、キューマネージャ137及び/又はダイの処理ユニットは、ダイ毎及び/又はプレーン毎にどれだけのメモリアクセスコマンドが一時停止され得るかに関する制限を含み得る。例えば、ダイ0が低優先度のメモリアクセスコマンドからキューマネージャ137へデータを送信する動作中、動作は、通信チャネルを経由してダイ2からキューマネージャ137へ高優先度のメモリアクセスコマンドを送信するために一時停止され得る。高優先度のメモリアクセスコマンドが一旦送信されると、ダイの処理ユニットは、データをダイ0からキューマネージャ137へ送信することによって、元のコマンド動作を再開し得る。
【0046】
幾つかの実施形態では、ダイの処理ユニット(例えば、ローカル媒体コントローラ135)は、プレーンキュー内に位置付けられたメモリアクセスコマンドを排除し得る。例えば、プレーンキューは、特定のアドレス空間にアドレス指定された書き込みコマンドを格納し得る。ダイは、その後、プレーンキュー内で先に受信された書き込みコマンドと同じアドレス空間にアドレス指定された新たな書き込みコマンドをプレーンキューに挿入し得る。したがって、ダイは先に受信された書き込みコマンドを排除し得る。
【0047】
幾つかの実施形態では、ダイの処理ユニットは、データアクセスコマンドの優先度に基づいて、プレーンキュー内の1つ以上のデータアクセスコマンドの実行を優先度付けし得る。例えば、キューマネージャ137は、最初に低優先度の読み出しコマンドをプレーンキューに挿入し得、続いて高優先度の読み出しコマンドをプレーンキューに挿入し得る。ダイの処理ユニットは、各読み出しコマンドの優先度を識別し得、低優先度の読み出しコマンドを実行する前に高優先度の読み出しコマンドを実行し得る。
【0048】
幾つかの実施形態では、ダイの処理ユニットは、読み出しコマンドが受信された順序とは異なる順序で、複数の読み出しコマンドからのデータを送信し得る。幾つかの実施形態では、ダイは、優先レベルに基づいてデータをクロックアウトし得る。例えば、ダイは2つの読み出しコマンドデータを受信し得る。ダイは、読み出しコマンドを適切なプレーンキューに挿入し得る。読み出しコマンドは、同じプレーンキューに挿入され得、又は異なるプレーンキューに挿入され得る。ダイは、先に受信された(低い優先度を有する)読み出しコマンドを処理し得るが、通信チャネルがビジーであるため、読み出しコマンドに関連するデータをクロックアウトすることできない。ダイは、その後、後で受信された(高い優先度を有する)読み出しコマンドを処理し得る。通信チャネルが空になることに応答して、後で受信された読み出しコマンドが先に受信された読み出しコマンドよりも高い優先度を有することに起因して、ダイは、後に受信された読み出しコマンドのデータを最初にクロックアウトし得る。プレーンキュー及びキューマネージャ137の動作に関する更なる詳細は、以下で説明される。
【0049】
図2は、本開示の幾つかの実施形態に従った、メモリアクセスコマンドキューを利用するために実施されるプロセスを説明する例示的な方法200のフロー図である。方法200は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラマブルロジック、マイクロコード、デバイスのハードウェア、集積回路等)、ソフトウェア(例えば、処理デバイス上で走る又は実行される命令)、又はそれらの組み合わせを含み得る処理ロジックによって実施され得る。幾つかの実施形態では、方法200は、図1のキューマネージャ137によって実施される。特定のシーケンス又は順序で示されているが、特に指定がない限り、プロセスの順序は変更し得る。したがって、説明する実施形態は例としてのみ理解されるべきであり、説明するプロセスは異なる順序で実施され得、幾つかのプロセスは並行して実施され得る。また、様々な実施形態において、1つ以上のプロセスは省略され得る。したがって、あらゆる実施形態において全てのプロセスが必要なわけではない。その他のプロセスフローが可能である。
【0050】
動作210において、処理ロジックはメモリアクセスコマンドを受信し得る。例えば、処理ロジックは、書き込みコマンド、読み出しコマンド、消去コマンド等を受信し得る。メモリアクセスコマンドは、ホストによって開始され得、又はメモリサブシステムコントローラによって開始され得る。幾つかの実施形態では、メモリアクセスコマンドは、メモリサブシステムコントローラ115がメモリアクセスコマンドを追跡することを可能にするための一意の識別子を含み得る。幾つかの実施形態では、メモリアクセスコマンドは、優先度識別子(例えば、高優先度識別子、低優先度識別子等)を含み得る。
【0051】
動作220において、処理ロジックは、メモリアクセスコマンドと関連付けられた物理アドレスを判定し得る。実施形態では、物理アドレスは単一プレーンのアドレス空間内に配置され得る。幾つかの実施形態では、物理アドレスは、ダイ上の複数のプレーンのアドレス空間内に配置され得る。
【0052】
動作230において、処理ロジックは、物理アドレスによって参照されるメモリデバイス上のダイのプレーンを判定し得る。例えば、処理ロジックは、どのダイのどのプレーンがアドレス空間を含むかを判定するためテーブルを使用し得る。
【0053】
動作240において、処理ロジックは、プレーンと関連付けられたキューにメモリアクセスコマンドを挿入し得る。幾つかの実施形態では、キューは2つ以上のメモリアクセスコマンドを格納し得る。
【0054】
動作250において、処理ロジックは、キューからのメモリアクセスコマンドを処理し得る。一例では、メモリアクセスコマンドが書き込みコマンドであることに応答して、処理ロジックは、書き込みコマンドのデータをプレーン上のアドレス空間に書き込み得る。別の例では、メモリアクセスコマンドが読み出しコマンドであることに応答して、処理ロジックは、プレーン上のアドレス空間への書き込みコマンドのデータを取得し得、取得されたデータをメモリサブシステムコントローラへ送信し得る。
【0055】
図3は、開示の幾つかの実施形態に従った、4つのプレーンキューで構造化されたダイ300の例図である。幾つかの実施形態では、ダイ310は、プレーンA 332、プレーンB 342、プレーンC 352、及びプレーンD 362を含み得る。プレーンの各々はプレーンキューを含み得る。図示するように、プレーンA 332はキューA 334を含み、プレーンB 342はプレーンB 344を含み、プレーンC 352はキューC 354を含み、プレーンD 362はキューD 364を含む。各プレーンキューは、メモリアクセスコマンドが処理のために挿入され得る2つのエントリを含む。図示するように、プレーンA 334はエントリA-1 336及びエントリA-2 338を含み、プレーンB 344はエントリB-1 346及びエントリB-2 348を含み、プレーンC 354はエントリC-1 356及びエントリC-2 358を含み、プレーンD 364は、エントリD-1 366及びエントリD-2 368を含む。一次データキャッシュA 372、一次データキャッシュB 374、一次データキャッシュC 376、及び二次データキャッシュD 378は、キューとプレーンのブロックとの間でデータを移動するための1つ以上のレジスタを各々含み得る。
【0056】
図4は、本開示の幾つかの実施形態に従った、メモリアクセスコマンドマネージャ413及びメモリデバイス480を含む例示的なコンピューティングシステム400を説明する。メモリデバイス480は、8つのダイ(ダイ-0 480、ダイ-1 481、ダイ-2 482、ダイ-3 483、ダイ-4 484、ダイ-5 485、ダイ-6 486、ダイ-7 487)を含み得る。各ダイは2つ以上のプレーンを含み得る。各ダイは、プレーンキュー(例えば、ダイ-0キュー460、ダイ-1キュー461、ダイ-2キュー462、ダイ-3キュー463、ダイ-4キュー464、ダイ-5キュー465、ダイ-6キュー466、ダイ-7キュー467)の対応するセットを含み得る。各プレーンキューは、メモリアクセスコマンドマネージャ413によってメモリデバイス480の対応するダイのプレーンに発行された保留中のメモリアクセスコマンドを格納し得る。各プレーンキューは、メモリアクセスコマンドが処理のために挿入され得る少なくとも2つのエントリを含む。
【0057】
コンピューティングシステム400は、メモリアクセスコマンドマネージャ413と通信可能なホストシステム(図示せず)を更に含み得る。ホストシステム(例えば、ホストシステム120)は、メモリアクセスコマンドをメモリアクセスコマンドマネージャ413へ送信し得る。
【0058】
メモリアクセスコマンドマネージャ413は、メモリアクセスコマンドマネージャ113と同様であり得る。メモリアクセスコマンドマネージャ413は、高優先度データ構造420、低優先度データ構造425、及びキューマネージャ452、トラフィックアービタ448、及びトラフィックアービタ470を含み得る。高優先度データ構造420は、メモリ475のダイ毎に高優先度のコマンドを格納するように構造化され得る。図示するように、高優先度データ構造420は、メモリデバイス480のダイ毎に1つずつ、8つのコマンドキュー(例えば、ダイ-0キュー430、ダイ-1キュー431、ダイ-2キュー432、ダイ-3キュー433、ダイ-4キュー434、ダイ-5キュー435、ダイ-6キュー436、ダイ-7キュー437)を含む。低優先度データ構造425もまた、メモリデバイス480のダイ毎に1つずつ、8つのコマンドキュー(例えば、ダイ-0キュー440、ダイ-1キュー441、ダイ-2キュー442、ダイ-3キュー443、ダイ-4キュー444、ダイ-5キュー445、ダイ-6キュー446、ダイ-7キュー447)を含む。各メモリアクセスコマンドは、受信されたメモリアクセスコマンドを高優先度データ構造420内に格納するか、それとも低優先度データ構造425内に格納するかを指し示すための優先度識別子(例えば、高優先度識別子、低優先度識別子等)を含み得る。トラフィックアービタ448は、キューマネージャ452への、高優先度データ構造420からの高優先メモリアクセスコマンドの送信と、低優先度データ構造425からの低優先メモリアクセスコマンドの送信との間を調整し得る。例えば、トラフィックアービタ448は、ある量の高優先度のコマンドの送信とある量の低優先度のメモリアクセスコマンドの送信との間を調整するための比率スキームを実装し得る。
【0059】
キューマネージャ452は、トラフィックアービタ448から受信された未処理のメモリアクセスコマンドを追跡するために、メモリデバイスメモリアクセスコマンド構造(図示せず)を管理し得る。トラフィックアービタ470は、1つ以上のスキームを使用してメモリデバイスメモリアクセスコマンド構造からのメモリアクセスコマンドを処理し得る。幾つかの実施形態では、トラフィックアービタ470は、ラウンドロビン方式を使用してメモリアクセスコマンドを処理し得、トラフィックアービタ470は、メモリアクセスコマンドを各ダイへ、又はセットの各ダイへ送信することを繰り返す。例えば、ダイの第1のセットに関して、トラフィックアービタ470は、メモリアクセスコマンドをダイ-0 480、次にダイ-2 482、次にダイ-4 484、次にダイ-6 486、そして再びダイ-0へ等々送信し得る。幾つかの実施形態では、トラフィックアービタ470は、メモリアクセスコマンドを送信するためのサイクルと、その後にダイセットからのデータ(例えば、読み出しコマンドからのデータ)をリッスンするためのサイクルとを含み得る。メモリ475の処理デバイスは、各メモリアクセスコマンドを適切なダイに対する適切なプレーンキューに挿入し得る。
【0060】
幾つかの実施形態では、トラフィックアービタ470は、通信チャネル472を使用して、メモリデバイス480のダイへメモリアクセスコマンドを送信し得、メモリデバイス480のダイからデータを受信し得る。幾つかの実施形態では、複数の通信チャネルが使用され得、各通信チャネルは、ダイの特定のセットに接続する。例えば、ダイの第1のセットは、ダイ-0 480、ダイ-2 482、ダイ-4 484、及びダイ-6 486を含み、ダイの第2のセットは、ダイ-1 481、ダイ-3 483、ダイ-5 485、及びダイ-7 487を含む。トラフィックアービタ470は、1つの通信チャネルを使用してダイの第1のセットと通信し得、別の通信チャネルを使用して第2のセットと通信し得る。
【0061】
図5は、本明細書で論じた方法論の内の任意の1つ以上をマシンに実施させるための命令のセットが実行され得るコンピュータシステム500の例示的なマシンを説明する。幾つかの実施形態では、コンピュータシステム500は、メモリサブシステム(例えば、図1のメモリサブシステム110)を含む若しくは利用するホストシステム(例えば、図1のホストシステム120)に対応し得、又はコントローラの動作を実施するために(例えば、図1のメモリアクセスコマンドマネージャ113に対応する動作を実施するためにオペレーティングシステムを実行するために)使用され得る。代替の実施形態では、マシンは、LAN、イントラネット、エクストラネット、及び/又はインターネット内の他のマシンに接続(例えば、ネットワーク接続)され得る。マシンは、クライアント-サーバネットワーク環境ではサーバ若しくはクライアントマシンの機能で、ピアツーピア(若しくは分散型)ネットワーク環境ではピアマシンとして、又はクラウドコンピューティングインフラストラクチャ若しくは環境ではサーバ若しくはクライアントマシンとして動作し得る。
【0062】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンが実行するアクションを指定する命令のセット(順次又はその他)を実行可能な任意のマシンであり得る。更に、単一のマシンが説明されているが、用語“マシン”は、本明細書で論じる方法論の内の何れか1つ以上を実施するための命令のセット(又は複数のセット)を個別に又は共同で実行するマシンの任意の集合をも含むものと解釈されるであろう。
【0063】
例示的なコンピュータシステム500は、処理デバイス502、メインメモリ504(例えば、リードオンリーメモリ(ROM)、フラッシュメモリ、同期型DRAM(SDRAM)又はラムバスDRAM(RDRAM)等のダイナミックランダムアクセスメモリ(DRAM))、スタティックメモリ506(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)等)、及びデータストレージシステム518を含み、それらは、バス530を介して相互に通信する。処理デバイス502は、マイクロプロセッサ又は中央処理装置等の1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令ワード(VLIW)マイクロプロセッサ、若しくはその他の命令セットを実装するプロセッサ、又は命令のセットの組み合わせを実装するプロセッサであり得る。処理デバイス502はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、又はネットワークプロセッサ等の1つ以上の専用処理デバイスであり得る。処理デバイス502は、本明細書で論じる動作及びステップを実施するための命令526を実行するように構成される。コンピュータシステム500は、ネットワーク520を経由して通信するためのネットワークインターフェースデバイス508を更に含み得る。
【0064】
データストレージシステム518は、命令526の1つ以上のセット、又は本明細書で説明する方法論若しくは機能の内の任意の1つ以上を具体化するソフトウェアが格納されるマシン可読ストレージ媒体524(コンピュータ可読媒体としても知られる)を含み得る。命令526はまた、コンピュータシステム500による実行中に、完全に又は少なくとも部分的にメインメモリ504内及び/又は処理デバイス502内に常駐し得、メインメモリ504及び処理装置502もマシン可読ストレージ媒体を構成する。マシン可読ストレージ媒体524、データストレージシステム518、及び/又はメインメモリ504は、図1のメモリサブシステム110に対応し得る。
【0065】
一実施形態では、命令526は、図1のメモリアクセスコマンドマネージャ113に対応する機能を実装するための命令を含む。マシン可読ストレージ媒体524は、例示的な実施形態では単一の媒体であるように示されているが、用語“マシン可読ストレージ媒体”は、命令の1つ以上のセットを格納する単一の媒体又は複数の媒体を含むものと解釈されるべきである。用語“マシン可読ストレージ媒体”はまた、マシンによる実行のための命令セットを格納又はエンコード可能であり、マシンに本開示の方法論の内の何れか1つ以上を実施させる任意の媒体も含むものと解釈されるであろう。用語“マシン可読ストレージ媒体”は、したがって、ソリッドステートメモリ、光媒体、及び磁気媒体を含むものと解釈されるであろうが、これらに限定されない。
【0066】
前述の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現に関して提示されてきた。これらのアルゴリズムの記述及び表現は、データ処理技術の当業者が彼らの仕事の内容を他の当業者に最も効果的に伝えるために使用される方法である。ここでのアルゴリズムとは、一般的に、所望の結果につながる一貫した一連の動作であると考えられる。動作は、物理量の物理的操作を必要とする動作である。通常、必ずではないが、これらの量は、格納、結合、比較、及びその他の操作が可能な電気信号又は磁気信号の形式をとる。主に一般的な使用上の理由から、これらの信号をビット、値、要素、記号、文字、用語、又は数字等と称すると便利な場合があることが証明されている。
【0067】
しかしながら、これらの用語及び同様の用語の全ては、適切な物理量と関連付けられるものであり、これらの量に適用される便宜的なラベルにすぎないことに留意すべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されるデータを操作し、コンピュータシステムのメモリ若しくはレジスタ又はその他のそうした情報ストレージシステム内の物理量として同様に表されるその他のデータに変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指し得る。
【0068】
本開示は、本明細書の動作を実施するための装置にも関する。この装置は、意図した目的のために特別に構築され得、又はコンピュータ内に格納されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータを含み得る。こうしたコンピュータプログラムは、非限定的に、コンピュータシステムバスに接続各々接続された、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスクを含む任意のタイプのディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード若しくは光カード、又は電子命令を格納するのに適した任意のタイプの媒体等のコンピュータ可読ストレージ媒体内に格納され得る。
【0069】
本明細書に提示するアルゴリズム及び表示は、本質的に特定のコンピュータ又はその他の装置に関連しない。様々な汎用システムが本明細書の教示に従ったプログラムと共に使用され得、又は方法を実施するためのより特化した装置を構築することが便利であることを証明し得る。これらの様々なシステムの構造は、以下の説明で記載するように現れるあろう。また、本開示は、何れの特定のプログラミング言語を参照して説明されていない。本明細書に説明するような開示の教示を実装するために様々なプログラミング言語が使用され得ることは理解されるであろう。
【0070】
本開示は、本開示に従ったプロセスを実施するようにコンピュータシステム(又はその他の電子デバイス)をプログラミングするために使用され得る命令が格納されたマシン可読媒体を含み得るコンピュータプログラム製品又はソフトウェアとして提供され得る。マシン可読媒体は、マシン(例えば、コンピュータ)による読み出しが可能な形式で情報を格納するための任意のメカニズムを含む。例えば、マシン可読(例えば、コンピュータ可読)媒体は、リードオンリーメモリ(“ROM”)、ランダムアクセスメモリ(“RAM”)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス等のマシン(例えば、コンピュータ)可読ストレージ媒体を含む。
【0071】
前述の明細書では、開示の実施形態は、それらの具体的で例示的な実施形態を参照して説明されている。後続の特許請求の範囲に記載するような開示の実施形態のより広範な精神及び範囲から逸脱することなく、様々な変更がそれらになされ得ることは明らかであろう。明細書及び図面は、したがって、限定的な意味ではなく、例示的な意味でみなされるべきである。
図1
図2
図3
図4
図5
【国際調査報告】