JP7843421B2 - 動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法 - Google Patents

動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法

Info

Publication number
JP7843421B2
JP7843421B2 JP2025522174A JP2025522174A JP7843421B2 JP 7843421 B2 JP7843421 B2 JP 7843421B2 JP 2025522174 A JP2025522174 A JP 2025522174A JP 2025522174 A JP2025522174 A JP 2025522174A JP 7843421 B2 JP7843421 B2 JP 7843421B2
Authority
JP
Japan
Prior art keywords
controller
volatile memory
request
memory
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2025522174A
Other languages
English (en)
Other versions
JP2025535163A (ja
Inventor
ガムリエル ハーン、ジュダ
バザルスキー、アレクサンダー
ヨニン、ミカ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of JP2025535163A publication Critical patent/JP2025535163A/ja
Application granted granted Critical
Publication of JP7843421B2 publication Critical patent/JP7843421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

(関連出願の相互参照)
本出願は、2023年1月5日に出願された米国仮特許出願第63/437,171号の優先権を主張する、2023年7月18日に米国特許商標庁に出願された「Data Storage Device and Method for Dynamic Controller Memory Buffer Allocation」と題する米国非仮特許出願第18/223,144号の利益を主張し、その内容の全体をあらゆる目的で参照により本明細書に組み込む。
ホストは、データ記憶デバイス内のメモリにデータを記憶し、メモリからデータを読み出すことができる。データ記憶デバイスは、メモリへの読み出し及び書き込み動作を容易にするコントローラを含むことができる。コントローラは、コントローラメモリバッファと称される揮発性メモリを含むことができる。コントローラメモリバッファのサイズは、ブートアップ中にデータ記憶デバイスによって設定され、データ記憶デバイスの動作中は一定である。
一実施形態のデータ記憶デバイスのブロック図である。 一実施形態の記憶モジュールを例解するブロック図である。 一実施形態の階層記憶システムを例解するブロック図である。 一実施形態による、図1Aに例解されるデータ記憶デバイスのコントローラの構成要素を例解するブロック図である。 一実施形態による、図1Aに例解されるメモリデータ記憶デバイスの構成要素を例解するブロック図である。 一実施形態のホスト及びデータ記憶デバイスのブロック図である。 一実施形態のホスト及びコントローラのブロック図である。 ホストによる動的コントローラメモリバッファ割り当てのための一実施形態の方法のフローチャートである。 データ記憶デバイスによる動的コントローラメモリバッファ割り当てのための一実施形態の方法のフローチャートである。
概要
導入として、以下の実施形態は、動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法に関する。一実施形態では、不揮発性メモリと、コントローラメモリバッファを備えるコントローラと、を備えるデータ記憶デバイスが提供される。コントローラは、不揮発性メモリと通信するように構成されており、かつコントローラメモリバッファのサイズを構成し、データ記憶デバイスの動作中に、コントローラメモリバッファのサイズを修正する要求をホストから受信し、コントローラメモリバッファのサイズを修正する要求を許可するかどうかを判定するように更に構成されている。
いくつかの実施形態では、コントローラは、ホストによって使用されていないコントローラメモリバッファ内の余剰空間を使用するように更に構成されている。
いくつかの実施形態では、コントローラは、要求を許可するかどうかを判定する際にワークロードを考慮するように更に構成されている。
いくつかの実施形態では、要求は専用コマンドを含む。
いくつかの実施形態では、コントローラ及びホストは各々、それぞれのコントローラメモリバッファ割り当てモジュールを備える。
いくつかの実施形態では、コントローラは、コントローラメモリバッファのサイズをその最大サイズを超えて拡大しようとする要求に応じて、要求を拒否するように更に構成されている。
いくつかの実施形態では、コントローラは、要求を許可するために、コントローラメモリバッファ内のデータを追い出すように更に構成されている。
いくつかの実施形態では、コントローラは、追い出しのためにコントローラメモリバッファ内のデータに優先順位付けするように更に構成されている。
いくつかの実施形態では、コントローラは、要求を許可した後に、ホストに確認を送信するように更に構成されている。
いくつかの実施形態では、不揮発性メモリは三次元メモリを含む。
別の実施形態では、コントローラメモリバッファを有するコントローラを備えるデータ記憶デバイスと通信するホストにおいて実行される方法が提供される。本方法は、コントローラメモリバッファのサイズを構成するようにデータ記憶デバイスに命令することと、コントローラメモリバッファのサイズを修正する要求をデータ記憶デバイスから受信することと、コントローラメモリバッファのサイズを修正するためのデータ記憶デバイスからの要求を許可するかどうかを判定することと、を含む。
いくつかの実施形態では、データ記憶デバイスは、ホストによって使用されていないコントローラメモリバッファ内の余剰空間を使用するように構成されている。
いくつかの実施形態では、要求を許可するかどうかを判定する際にワークロードが考慮される。
いくつかの実施形態では、要求は専用コマンドを含む。
いくつかの実施形態では、コントローラ及びホストは各々、それぞれのコントローラメモリバッファ割り当てモジュールを備える。
いくつかの実施形態では、本方法は、コントローラメモリバッファのサイズをその最大サイズを超えて拡大しようとする要求に応じて、要求を拒否することを決定することを更に含む。
いくつかの実施形態では、本方法は、要求を許可するために、データをコントローラメモリバッファから追い出させることを更に含む。
いくつかの実施形態では、本方法は、追い出しのためのデータの優先順位付けを引き起こすことを更に含む。
いくつかの実施形態では、本方法は、要求を許可した後、データ記憶デバイスに確認を送信することを更に含む。
別の実施形態では、データ記憶デバイスが提供され、不揮発性メモリと、不揮発性メモリと通信するように構成されており、かつコントローラメモリバッファを備える、コントローラと、データ記憶デバイスの動作中に、コントローラメモリバッファのサイズを初期サイズから修正されたサイズに変更するための手段と、を備える。
他の実施形態も可能であり、実施形態の各々は、単独で又は組み合わせて一緒に使用することができる。したがって、様々な実施形態が、ここで添付の図面を参照して説明される。
実施形態
以下の実施形態は、データ記憶デバイス(data storage device、DSD)に関する。本明細書で使用される際、「データ記憶デバイス」は、データを記憶するデバイスを指す。DSDの例としては、ハードディスクドライブ(hard disk drive、HDD)、ソリッドステートドライブ(solid state drive、SSD)、テープドライブ、ハイブリッドドライブなどが挙げられるが、これらに限定されない。例示的なDSDの詳細は、以下に提供される。
これらの実施形態の態様を実装する際に使用するのに好適なデータ記憶デバイスを図1A~図1Cに示す。図1Aは、本明細書で説明する主題の一実施形態によるデータ記憶デバイス100を例解するブロック図である。図1Aを参照すると、データ記憶デバイス100は、コントローラ102と、1つ以上の不揮発性メモリダイ104から構成され得る不揮発性メモリと、を含む。本明細書で使用される際、ダイという用語は、単一の半導体基板上に形成される、不揮発性メモリセルと、それらの不揮発性メモリセルの物理的動作を管理するための関連回路との集合を指す。コントローラ102は、ホストシステムとインターフェース接続し、読み出し、プログラム、及び消去動作のためのコマンドシーケンスを不揮発性メモリダイ104に送信する。
コントローラ102(不揮発性メモリコントローラ(例えば、フラッシュ、抵抗変化型ランダムアクセスメモリ(resistive random-access memory、ReRAM)、相変化メモリ(phase-change memory、PCM)、又は磁気抵抗ランダムアクセスメモリ(magnetoresistive random-access memory、MRAM)コントローラ)であり得る)は、例えば、処理回路、マイクロプロセッサ又はプロセッサ、並びに(マイクロ)プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路(application specific integrated circuit、ASIC)、プログラマブル論理コントローラ、及び組み込みマイクロコントローラによって実行可能なコンピュータ可読プログラムコード(例えば、ファームウェア)を記憶するコンピュータ可読媒体の形態を採ることができる。コントローラ102は、以下で説明され、フロー図に示される様々な機能を実行するために、ハードウェア及び/又はファームウェアで構成することができる。また、コントローラの内部にあるものとして示されている構成要素のうちのいくつかは、コントローラの外部に記憶することもでき、他の構成要素を使用することもできる。加えて、「~と動作可能に通信する」という句は、1つ以上の構成要素と直接通信すること、又は1つ以上の構成要素を通して間接的に(有線若しくは無線で)通信することを意味することができ、これらの構成要素は、本明細書において図示又は説明される場合又はされない場合がある。
本明細書で使用される際、不揮発性メモリコントローラは、不揮発性メモリ上に記憶されたデータを管理し、コンピュータ又は電子デバイスなどのホストと通信するデバイスである。不揮発性メモリコントローラは、本明細書で説明される具体的な機能に加えて、様々な機能を有することができる。例えば、不揮発性メモリコントローラは、メモリが適切に動作していることを確実にするために不揮発性メモリをフォーマットし、不良の不揮発性メモリセルをマップアウトし、将来の故障セルの代わりとなる予備セルを割り当てることができる。スペアセルのいくつかの部分は、不揮発性メモリコントローラを動作させ、他の特徴を実装するためのファームウェアを保持するために使用することができる。動作中、ホストは、不揮発性メモリからデータを読み出すか、又は不揮発性メモリにデータを書き込む必要があるとき、不揮発性メモリコントローラと通信することができる。ホストが、データが読み出される/書き込まれる論理アドレスを提供する場合、不揮発性メモリコントローラは、ホストから受信した論理アドレスを不揮発性メモリ内の物理アドレスに変換することができる。(代替的に、ホストが物理アドレスを提供することもできる。)不揮発性メモリコントローラはまた、限定されるものではないが、ウェアレベリング(そうでなければ繰り返し書き込まれるメモリの特定のブロックを摩耗させることを回避するために書き込みを分散させる)及びガーベジコレクション(ブロックが満杯になった後、データの有効なページのみを新しいブロックに移動させ、そのため、満杯のブロックを消去して再利用することができる)などの様々なメモリ管理機能を実行することができる。
不揮発性メモリダイ104は、抵抗変化型ランダムアクセスメモリ(ReRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、相変化メモリ(PCM)、NANDフラッシュメモリセル、及び/又はNORフラッシュメモリセルを含む任意の好適な不揮発性記憶媒体を含み得る。メモリセルは、ソリッドステート(例えば、フラッシュ)メモリセルの形態を採ることができ、1回プログラム可能、数回プログラム可能、又は多数回プログラム可能であり得る。メモリセルはまた、シングルレベルセル(single-level cell、SLC)、マルチレベルセル(multiple-level cell、MLC)(例えば、デュアルレベルセル、トリプルレベルセル(triple-level cell、TLC)、クワッドレベルセル(quad-level cell、QLC)など)とすることができるか、又は現在知られているか若しくは後に開発される他のメモリセルレベル技術を使用することができる。また、メモリセルは、二次元又は三次元の方法で製造することができる。
コントローラ102と不揮発性メモリダイ104との間のインターフェースは、トグルモード200、400、又は800などの任意の好適なフラッシュインターフェースであり得る。一実施形態では、データ記憶デバイス100はソリッドステートドライブであり得る。別の実施形態では、データ記憶デバイス100は、埋め込みデータ記憶デバイスの一部であり得る。
図1Aに例解される例では、データ記憶デバイス100(本明細書では記憶モジュールと称されることもある)は、コントローラ102と不揮発性メモリダイ104との間に単一のチャネルを含むが、本明細書において説明される主題は、単一のメモリチャネルを有することに限定されない。例えば、いくつかのアーキテクチャ(図1B及び図1Cに示されるものなど)では、コントローラの能力に応じて、2つ、4つ、8つ以上のメモリチャネルがコントローラとメモリデバイスとの間に存在し得る。本明細書において説明される実施形態のうちのいずれかでは、単一のチャネルが図面に示されている場合であっても、コントローラとメモリダイとの間に2つ以上のチャネルが存在し得る。
図1Bは、複数の不揮発性データ記憶デバイス100を含む記憶モジュール200を例解する。したがって、記憶モジュール200は、ホストと、複数のデータ記憶デバイス100を含むデータ記憶デバイス204とインターフェース接続する記憶コントローラ202を含み得る。記憶コントローラ202とデータ記憶デバイス100との間のインターフェースは、シリアルアドバンストテクノロジアタッチメント(serial advanced technology attachment、SATA)、ペリフェラル構成要素インターコネクトエクスプレス(peripheral component interconnect express、PCIe)インターフェース、又はダブルデータレート(double-data-rate、DDR)インターフェースなどのバスインターフェースであり得る。記憶モジュール200は、一実施形態では、ソリッドステートドライブ(SSD)、又はサーバPC又はラップトップコンピュータ及びタブレットコンピュータなどのポータブルコンピューティングデバイスに見られるような不揮発性デュアルインラインメモリモジュール(non-volatile dual in-line memory module、NVDIMM)であり得る。
図1Cは、階層記憶システムを例解するブロック図である。階層記憶システム250は、複数の記憶コントローラ202を含み、その各々は、それぞれのデータ記憶デバイス204を制御する。ホストシステム252は、バスインターフェースを介して記憶システム250内のメモリにアクセスし得る。一実施形態では、バスインターフェースは、不揮発性メモリエクスプレス(Non-Volatile Memory Express、NVMe)又はファイバチャネルオーバーイーサネット(Fibre Channel over Ethernet、FCoE)インターフェースであり得る。一実施形態では、図1Cに例解されるシステムは、データセンタ又は大容量記憶が必要とされる他の場所で見られるような、複数のホストコンピュータによってアクセス可能であるラックマウント可能な大容量記憶システムであり得る。
図2Aは、コントローラ102の構成要素をより詳細に例解するブロック図である。コントローラ102は、ホストとインターフェース接続するフロントエンドモジュール108と、1つ以上の不揮発性メモリダイ104とインターフェース接続するバックエンドモジュール110と、ここで詳細に説明される機能を実行する様々な他のモジュールと、を含む。モジュールは、例えば、他の構成要素とともに使用するために設計されたパッケージ化された機能ハードウェアユニット、関連する機能のうちの特定の機能を通常実行する(マイクロ)プロセッサ若しくは処理回路によって実行可能なプログラムコード(例えば、ソフトウェア若しくはファームウェア)の一部分、又はより大きいシステムとインターフェース接続する自己完結型ハードウェア若しくはソフトウェア構成要素の形態を採り得る。また、機能を実行するための「手段」は、コントローラについて本明細書に記載された構造のうちの少なくともいずれかを用いて実装することができ、純粋なハードウェア又はハードウェアとコンピュータ可読プログラムコードとの組み合わせであり得る。
コントローラ102のモジュールを再び参照すると、バッファマネージャ/バスコントローラは、ランダムアクセスメモリ(random access memory、RAM)116内のバッファを管理し、コントローラ102の内部バスアービトレーションを制御する。読み出し専用メモリ(read only memory、ROM)118は、システムブートコードを記憶する。図2Aでは、コントローラ102とは別個に位置するとして例解されているが、他の実施形態では、RAM116及びROM118のうちの一方又は両方がコントローラ内に位置し得る。更に他の実施形態では、RAM及びROMの一部は、コントローラ102内及びコントローラ外の両方に位置し得る。
フロントエンドモジュール108は、ホスト又は次のレベルの記憶コントローラとの電気的インターフェースを提供するホストインターフェース120及び物理層インターフェース(physical layer interface、PHY)122を含む。ホストインターフェース120のタイプの選択は、使用されているメモリのタイプに依存し得る。ホストインターフェース120の例は、ファイバチャネル、ユニバーサルシリアルバス(universal serial bus、USB)、PCIe、及びNVMeを含むが、これらに限定されない。ホストインターフェース120は、典型的には、データ、制御信号、及びタイミング信号のための転送を容易にする。
バックエンドモジュール110は、ホストから受信されたデータバイトを符号化し、不揮発性メモリから読み出されたデータバイトを復号及び誤り訂正する誤り訂正符号(error correction code、ECC)エンジン124を含む。コマンドシーケンサ126は、不揮発性メモリダイ104に送信される、プログラム及び消去コマンドシーケンスなどのコマンドシーケンスを生成する。RAID(Redundant Array of Independent Drive、独立したドライブの冗長アレイ)モジュール128は、RAIDパリティの生成及び障害データの回復を管理する。RAIDパリティは、メモリデバイス104に書き込まれているデータのための追加のレベルの完全性保護として使用され得る。場合によっては、RAIDモジュール128は、ECCエンジン124の一部であり得る。メモリインターフェース130は、不揮発性メモリダイ104にコマンドシーケンスを提供し、不揮発性メモリダイ104からステータス情報を受信する。一実施形態では、メモリインターフェース130は、トグルモード200、400、又は800インターフェースなどのダブルデータレート(DDR)インターフェースであり得る。フラッシュ制御層132は、バックエンドモジュール110の全体的な動作を制御する。
データ記憶デバイス100はまた、外部電気インターフェース、外部RAM、抵抗器、コンデンサ、又はコントローラ102とインターフェース接続し得る他の構成要素などの他のディスクリート構成要素140を含む。代替の実施形態では、物理層インターフェース122、RAIDモジュール128、メディア管理層138、及びバッファ管理/バスコントローラのうちの1つ以上は、コントローラ102に必要ではない任意選択的な構成要素である。
図2Bは、不揮発性メモリダイ104の構成要素をより詳細に例解するブロック図である。不揮発性メモリダイ104は、周辺回路141及び不揮発性メモリアレイ142を含む。不揮発性メモリアレイ142は、データを記憶するために使用される不揮発性メモリセルを含む。不揮発性メモリセルは、二次元及び/又は三次元構成のReRAM、MRAM、PCM、NANDフラッシュメモリセル及び/又はNORフラッシュメモリセルを含む任意の好適な不揮発性メモリセルであり得る。不揮発性メモリダイ104は、データをキャッシュするデータキャッシュ156と、アドレスデコーダ148,150とを更に含む。周辺回路141は、コントローラ102にステータス情報を提供するステートマシン152を含む。
再び図2Aに戻ると、フラッシュ制御層132(本明細書では、フラッシュ変換層(flash translation layer、FTL)、又はより一般的には、メモリがフラッシュではない場合があるので「メディア管理層」と称される)は、フラッシュエラーを処理し、ホストとインターフェース接続する。特に、ファームウェア内のアルゴリズムであり得るFTLは、メモリ管理の内部を担当し、ホストからの書き込みをメモリ104への書き込みに変換する。FTLは、メモリ104が限られた耐久性を有し得、複数のページのみに書き込まれ得、及び/又はブロックとして消去されない限り書き込まれ得ないため、必要とされ得る。FTLは、ホストには見えない可能性があるメモリ104のこれらの潜在的な制限を理解する。したがって、FTLは、ホストからの書き込みをメモリ104への書き込みに変換することを試みる。
FTLは、論理-物理アドレス(logical-to-physical address、L2P)マップ(本明細書ではテーブル又はデータ構造と称されることもある)と、割り振られたキャッシュメモリと、を含み得る。このようにして、FTLは、ホストからの論理ブロックアドレス(「logical block address、LBA」)をメモリ104内の物理アドレスに変換する。FTLは、限定はしないが、(突然の電力損失の場合にFTLのデータ構造が回復され得るように)電源オフ回復、及び(メモリブロックにわたる摩耗が、故障のより大きな可能性をもたらすことになるあるブロックの過度の摩耗を防止するために均一であるように)ウェアレベリングなどの他の特徴を含むことができる。
再び図面を参照すると、図3は、一実施形態のホスト300及びデータ記憶デバイス100のブロック図である。ホスト300は、コンピュータ、携帯電話、タブレット、ウェアラブルデバイス、デジタルビデオレコーダ、監視システムなどを含むが、それらに限定されない、任意の好適な形態を採ることができる。本実施形態におけるホスト300(ここでは、コンピューティングデバイス)は、プロセッサ330と、メモリ340と、を備える。一実施形態では、ホストメモリ340に記憶されたコンピュータ可読プログラムコードは、本明細書で説明される動作を実行するようにホストプロセッサ330を構成する。したがって、ホスト300によって実行されるアクションは、本明細書では、ホスト300上で実行されるアプリケーション(コンピュータ可読プログラムコード)によって実行されると称されることがある。例えば、ホスト300は、データ記憶デバイスのメモリ104に記憶するために、データ記憶デバイス100にデータ(例えば、最初にホストのメモリ340に記憶された)を送信するように構成することができる。
図2Aに戻って参照すると、この実施形態におけるコントローラ102は、本明細書ではコントローラメモリバッファ(controller memory buffer、CMB)103と称される揮発性メモリ(例えば、DRAM)も備える。一実施形態では、CMB103は、限定はしないが、不揮発性メモリ104に記憶された論理-物理アドレスマップの一部をキャッシュすること、サブミッション及び/又は完了キューを記憶すること、制御又は他のデータを記憶することなど、データ記憶デバイス100によって及び/又はホスト300によって任意の好適な目的のために使用することができる汎用読み出し/書き込みメモリである。
以下の段落は、NVMe仕様の下でのCMB103の実装形態の詳細を提供する。これらの詳細は、単に例として提供されており、本明細書で考察される詳細(NVMe仕様又はその他に関連する)は、明示的に記載されていない限り、特許請求の範囲に読み込まれるべきではないことを理解されたい。
一実施形態では、コントローラ102は、CAP.CMBSを「1」に設定することによって、CMB103のサポートを示す。このビットが「1」に設定されると、コントローラ102は、CMBLOC及びCMBSZプロパティを介してCMB103のプロパティを示す。ホスト300は、CMBMSC.CREを「1」に設定することによって、CMB102を使用する意図を示す。上で言及されるように、CMB103は、様々な目的のために使用され得、コントローラ102は、CMBSZプロパティ内のサポートフラグを設定することによって、CMB103がどの目的のために使用され得るかを示すことができる。CMBのPCIエクスプレスのアドレス範囲は、CMB103への外部メモリ読み出し及び書き込み要求に使用することができる。CMB103のPCIエクスプレスベースアドレスは、CMBLOC.BIRで示されるPCIベースアドレスレジスタ(Base Address Register、BAR)によって定義することができ、オフセットは、CMBLOC.OFSTによって示すことができる。CMB103のサイズは、CMBSZ.SZによって示すことができる。コントローラ102は、CMBのコントローラアドレス範囲を使用して、ホスト300によって供給されたアドレスでCMB103を参照することができる。PCIエクスプレスのアドレス範囲とCMB103のコントローラアドレス範囲とは異なり得るが、両方の範囲は同じサイズを有することができ、各範囲内の等価なオフセットは1対1の対応を有することができる。
ホスト300は、CMBMSCプロパティを介してコントローラアドレス範囲を構成することができる。ホスト300は、CMBMSC.CMSEビットを介してCMBのコントローラメモリ空間を有効化することができる。コントローラメモリ空間が有効化されると、ホスト300がCMBのコントローラアドレス範囲を参照するアドレスを供給する場合、コントローラ102は、このアドレスに対するメモリ読み出し又は書き込み要求をCMB103に向けることができる。CMB103は、読み出しコマンドが発行されたときにコントローラ102がCMB103から直接アドレスを読み出すことができるように、サブミッションキューを記憶するためにホスト300によって使用され得る。CMB103内の完了キューは、ピアツーピア又は他のアプリケーションのために使用され得る。少量のデータの書き込みの場合、コントローラ102にデータ及び/又はメタデータをホストメモリ340からフェッチさせるのではなく、ホスト300にデータ及び/又はメタデータをCMB103に書き込ませることが有利であり得る。
コントローラ102は、CMB103内の物理領域ページ(Physical Region Page、PRP)及びスキャッターギャザーリスト(Scatter Gather List、SGL)をサポートし得る。CMBLOC.CDPMLSビットが「0」にクリアされた場合、単一のコマンドに関連付けられた特定のPRPリスト又はSGLについて、PRPリスト又はSGLに関連付けられた全てのメモリは、完全にCMB103内に位置するか、又は完全にCMB103の外部に位置することができる。コントローラ102は、CMB103内のデータ及びメタデータをサポートし得る。CMBLOC.CDMMMSビットが「0」にクリアされる場合、特定のコマンドに関連付けられた全てのデータ及びメタデータは、もしあれば、CMB103内に完全に位置するか、又はCMB103の外部に完全に位置するかのいずれかであり得る。CMB103のために割り当てられたアドレス領域は、4KiB整列され得る。コントローラ102は、8KiB境界上にCMB103を割り当てることができる。コントローラ102は、最大ペイロードサイズまでのバーストトランザクションをサポートし、バイトイネーブルをサポートし、任意のバイトアライメントをサポートすることができる。
CMB103のサイズは、NVMe仕様からのCMBSZ.SZフィールドによって示すことができる。この構成は、データ記憶デバイス100によるブート中に設定される。CMB103のサイズは、データ記憶デバイス100の動作中に一定であり、CMB103専用の空間は、ホスト300がそれを利用しない場合、空のままであり得る。
以下の実施形態は、データ記憶デバイス100の動作中に、CMB103のサイズを修正するために使用することができる。これらの実施形態は、CMB実装形態の柔軟性及びDRAMの利用を改善することができ、より高速なハイエンド記憶コントローラ動作をもたらす。一実施形態では、ホスト300は、その現在の必要性及び条件に従ってCMBサイズを修正することができ、データ記憶デバイス100は、ホスト300がそれを必要としないとき、CMB103内の余剰空間を使用することができる(及び、コントローラRAMをより良好に利用するために、ホスト300と動作を調整する)。一実施形態では、ホスト300とデータ記憶デバイス100との間の修正されたインターフェースを使用することができ、ホスト300は、その動作に必要なCMBサイズ(例えば、現在使用されているCMBサイズよりも大きい又は小さい)を示す専用コマンドを使用することができる。図4に示す実施形態を参照すると、ホスト50は、ホストCMB割り当てモジュール55を有することができ、データ記憶デバイス100内のコントローラ102は、CMB400及び記憶コントローラCMB割り当てモジュール455を有することができる。コントローラ102内のプロセッサで実行されるコンピュータ可読プログラムコードであり得る記憶コントローラCMB割り当てモジュール455は、ホストコマンド又は別のトリガイベントに従って(例えば、ホスト制御アドレスを動的に変更するために)CMBサイズを制御することができる。ホスト50内のプロセッサによって実行されるコンピュータ可読プログラムコードとすることができるホストCMB割り当てモジュール55は、CMBサイズ修正に関連するコマンドを発行及び受信することができる。
割り当てモジュール55、455は、予想される負荷に従ってCMBサイズを変更するために、現在のワークロードを考慮することができる。例えば、短い長さのデータを有する低強度のワークロードでは、データ記憶デバイス100は、ユーザデータを記憶するためにCMB103を使用することを決定し得るが、これは、CMBが相対的に小さく、関連するオーバーヘッドが大きくないためである。高強度の長いシーケンシャルワークロードでは、CMB転送及びフェッチは、ホスト300が回避することができる追加の不必要なオーバーヘッドを有する可能性があり、一方、ホスト300は、それ自体の目的のためにCMB103を使用することができる。
図5は、ホスト300による動的コントローラメモリバッファ割り当てのための一実施形態の方法のフローチャート500である。図5に示されるように、最初に、ホスト300は、何らかの初期CMBサイズ(及び/又は目的)を設定する(動作510)。次いで、何らかのワークロード変化又は他のトリガ(例えば、環境変化、ワークロード局所性の変化、電力不安定性、ビット誤り率(bit error rate、BER)上昇など)の後、ホストCMB割り当てモジュール55は、CMBサイズ(及び/又は目的)を変更するコマンドを発行する(動作520)。次いで、コントローラCMB割り当てモジュール455は、現在のCMB使用を分析し、ホスト300に応じて、要求を確認又は拒否する(動作530)。例えば、ホスト300が、CMB103をその最大サイズを超えて拡大することを要求している場合、コントローラCMB割り当てモジュール455は、要求を拒否することができる(動作540)。しかしながら、コントローラCMB割り当てモジュール455が要求を許可することができる場合、コントローラCMB割り当てモジュール455は、要求に応じてCMBサイズを修正する(動作550)。これは、空間を解放するために、DRAM内に現在存在するコントローラデータのうちのいくつかの追い出しを含み得る。コントローラCMB割り当てモジュール455は、コントローラの性能への影響を最小限にして、どのデータを追い出すことができるかを優先順位付けすることができる。ホスト300によって要求された対応する空間を解放した後、コントローラCMB割り当てモジュール455は、ホスト300に確認ノートを返すことができる(動作560)。
図6は、データ記憶デバイス100による動的コントローラメモリバッファ割り当てのための一実施形態の方法のフローチャート600である。この実施形態では、コントローラ102は、CMBサイズを修正する要求を発行し得る。要求は、非同期イベントの形態で到来し得、DRAMを使用する必要があるコントローラによってトリガされ得る(何らかのクリティカル管理動作、DRAMにキャッシュされたコントローラメタデータの異常に低いヒット率の識別、又はホスト300が割り当てられた空間を長期間にわたって完全に使用していないことの識別など)。図6に示されるように、最初に、ホスト300は、何らかの初期CMBサイズ(及び/又は目的)を設定する(動作610)。次に、クリティカル管理動作又は他のトリガの後、コントローラCMB割り当てモジュール455は、CMBサイズを変更するためにホスト300に非同期イベントを発行する(動作620)。次いで、ホストCMB割り当てモジュール55は、コントローラコマンドに応答する(動作630)。例えば、コントローラ102が、CMB103をその最大サイズを超えて拡大することを要求している場合、ホストCMB割り当てモジュール55は、要求を拒否することができる(動作640)。しかしながら、ホストCMB割り当てモジュール55が要求を許可することができる場合、ホストCMB割り当てモジュール55は、要求に応じてCMBサイズを修正する(動作650)。次いで、コントローラCMB割り当てモジュール455は、修正されたCMBサイズを使用するためにホスト300に非同期イベントを発行する(動作660)
これらの実施形態に関連するいくつかの利点がある。例えば、高スループットのユースケースをサポートするためにCMBがあるNVMeデータ記憶デバイスで使用される場合、これらの実施形態は、CMBとそれらのデータ記憶デバイスとのより良好な統合を可能にするために使用することができる。これは、それらのCMB/DRAMの利用を改善することができ、結果として、電力消費を低減し、あるワークロードにおける性能を改善することができる。
最後に、上で言及されるように、任意の好適なタイプのメモリを使用することができる。半導体メモリデバイスは、ダイナミックランダムアクセスメモリ(「dynamic random access memory、DRAM」)又はスタティックランダムアクセスメモリ(「static random access memory、SRAM」)デバイスなどの揮発性メモリデバイス、抵抗変化型ランダムアクセスメモリ(「ReRAM」)、電気的消去可能プログラマブル読み出し専用メモリ(「electrically erasable programmable read only memory、EEPROM」)、フラッシュメモリ(EEPROMのサブセットとみなすこともできる)、強誘電体ランダムアクセスメモリ(「ferroelectric random access memory、FRAM」)、及び磁気抵抗ランダムアクセスメモリ(「MRAM」)などの不揮発性メモリデバイス、並びに情報を記憶することが可能な他の半導体要素を含む。各タイプのメモリデバイスは、異なる構成を有し得る。例えば、フラッシュメモリデバイスは、NAND又はNOR構成で構成され得る。
メモリデバイスは、任意の組み合わせで、受動要素及び/又は能動要素から形成することができる。非限定的な例として、受動半導体メモリ要素は、ReRAMデバイス要素を含み、ReRAMデバイス要素は、いくつかの実施形態では、アンチヒューズ、相変化材料などの抵抗率スイッチング記憶要素、及び任意選択的にダイオードなどのステアリング要素を含む。更に、非限定的な例として、能動半導体メモリ要素は、EEPROM及びフラッシュメモリデバイス要素を含み、いくつかの実施形態では、フローティングゲート、導電性ナノ粒子、又は電荷蓄積誘電体材料などの電荷蓄積領域を含む要素を含む。
複数のメモリ要素は、それらが直列に接続されるように、又は各要素が個々にアクセス可能であるように構成され得る。非限定的な例として、NAND構成のフラッシュメモリデバイス(NANDメモリ)は、典型的には、直列に接続されたメモリ要素を含む。NANDメモリアレイは、アレイがメモリの複数のストリングから構成されるように構成され得、ストリングは、単一のビット線を共有し、グループとしてアクセスされる複数のメモリ要素から構成される。代替的に、メモリ要素は、各要素が個々にアクセス可能であるように構成され得る(例えば、NORメモリアレイ)。NAND及びNORメモリ構成は例であり、メモリ要素は他の方法で構成され得る。
基板内及び/又は基板上に位置する半導体メモリ要素は、二次元メモリ構造又は三次元メモリ構造など、二次元又は三次元に配置され得る。
二次元メモリ構造では、半導体メモリ要素は、単一の平面又は単一のメモリデバイスレベルに配置される。典型的には、二次元メモリ構造では、メモリ要素は、メモリ要素を支持する基板の主面に実質的に平行に延在する平面(例えば、x-z方向平面)に配置される。基板は、その上に又はその中にメモリ要素の層が形成されるウェハであり得るか、又は、メモリ要素が形成された後にメモリ要素に取り付けられるキャリア基板であり得る。非限定的な例として、基板は、シリコンなどの半導体を含み得る。
メモリ要素は、単一のメモリデバイスレベルにおいて、複数の行及び/又は列などの順序付けられたアレイで配置され得る。しかしながら、メモリ要素は、不規則又は非直交構成で配列され得る。メモリ要素は各々、ビット線及びワード線などの2つ以上の電極又はコンタクト線を有し得る。
三次元メモリアレイは、メモリ要素が複数の平面又は複数のメモリデバイスレベルを占有するように配置され、それにより、三次元(すなわち、x、y及びz方向、ここで、y方向は基板の主表面に対して実質的に垂直であり、x及びz方向は基板の主表面に対して実質的に平行である)の構造を形成する。
非限定的な例として、三次元メモリ構造は、複数の二次元メモリデバイスレベルの積層として垂直に配置され得る。別の非限定的な例として、三次元メモリアレイは、各列が各列内に複数のメモリ要素を有する複数の垂直列(例えば、基板の主面に対して実質的に垂直に、すなわち、y方向に延在する列)として配置され得る。列は、二次元構成、例えば、x-z平面に配置され得、複数の垂直に積層されたメモリ平面上に要素を有するメモリ要素の三次元配置をもたらす。三次元のメモリ要素の他の構成も、三次元メモリアレイを構成することができる。
非限定的な例として、三次元NANDメモリアレイでは、メモリ要素は、単一の水平(例えば、x-z)メモリデバイスレベル内でNANDストリングを形成するために一緒に結合され得る。代替的に、メモリ要素は、複数の水平メモリデバイスレベルにわたって横断する垂直NANDストリングを形成するために一緒に結合され得る。いくつかのNANDストリングが単一のメモリレベル内にメモリ要素を含み、他のストリングが複数のメモリレベルにまたがるメモリ要素を含む、他の三次元構成を想定することができる。三次元メモリアレイはまた、NOR構成及びReRAM構成で設計され得る。
典型的には、モノリシック三次元メモリアレイでは、1つ以上のメモリデバイスレベルが、単一の基板の上方に形成される。任意選択的に、モノリシック三次元メモリアレイはまた、少なくとも部分的に単一の基板内に1つ以上のメモリ層を有し得る。非限定的な例として、基板は、シリコンなどの半導体を含み得る。モノリシック三次元アレイでは、アレイの各メモリデバイスレベルを構成する層は、典型的には、アレイの下にあるメモリデバイスレベルの層上に形成される。しかしながら、モノリシック三次元メモリアレイの隣接するメモリデバイスレベルの層は、共有され得るか、又はメモリデバイスレベル間に介在層を有し得る。
この場合も、二次元アレイは、別個に形成され得、次いで、一緒にパッケージングされて、複数のメモリ層を有する非モノリシックメモリデバイスを形成し得る。例えば、非モノリシック積層メモリは、別個の基板上にメモリレベルを形成し、次いで、メモリレベルを互いの上に積層することによって構築することができる。基板は、積層前にメモリデバイスレベルから薄化又は除去され得るが、メモリデバイスレベルは最初に別個の基板上に形成されるため、結果として得られるメモリアレイは、モノリシック三次元メモリアレイではない。更に、複数の二次元メモリアレイ又は三次元メモリアレイ(モノリシック又は非モノリシック)は、別個のチップ上に形成され、次いで、一緒にパッケージングされて、積層チップメモリデバイスを形成し得る。
関連回路は、典型的には、メモリ要素の動作及びメモリ要素との通信のために必要とされる。非限定的な例として、メモリデバイスは、プログラミング及び読み出しなどの機能を達成するために、メモリ要素を制御及び駆動するために使用される回路を有し得る。この関連回路は、メモリ要素と同じ基板上及び/又は別個の基板上にあり得る。例えば、メモリ読み出し-書き込み動作のためのコントローラは、別個のコントローラチップ上及び/又はメモリ要素と同じ基板上に位置し得る。
当業者は、本発明が、説明された二次元及び三次元構造に限定されず、本明細書において説明され、当業者によって理解されるように、本発明の趣旨及び範囲内の全ての関連メモリ構造を網羅することを認識するであろう。
上述の詳細な説明は、本発明の定義としてではなく、本発明が採ることができる選択された形態の例解として理解されることが意図される。特許請求される本発明の範囲を定義することが意図されるのは、全ての均等物を含む以下の特許請求の範囲のみである。最後に、本明細書において説明される実施形態のうちのいずれかの任意の態様は、単独で、又は互いに組み合わせて使用することができることに留意されたい。

Claims (18)

  1. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    プロセッサを備えるコントローラと、を備え、前記プロセッサは、前記不揮発性メモリ及び前記揮発性メモリと通信するように構成されており、かつ、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する、ように更に構成されおり、
    前記プロセッサは、前記要求を許可するかどうかを判定する際にワークロードを考慮するように更に構成されている、データ記憶デバイス。
  2. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    プロセッサを備えるコントローラと、を備え、前記プロセッサは、前記不揮発性メモリ及び前記揮発性メモリと通信するように構成されており、かつ、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する、ように更に構成されおり、
    前記プロセッサは、前記コントローラメモリバッファのサイズをその最大サイズを超えて拡大しようとする前記要求に応じて、前記要求を拒否するように更に構成されている、データ記憶デバイス。
  3. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    プロセッサを備えるコントローラと、を備え、前記プロセッサは、前記不揮発性メモリ及び前記揮発性メモリと通信するように構成されており、かつ、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する、ように更に構成されおり、
    前記プロセッサは、追い出しのために前記コントローラメモリバッファ内のデータに優先順位付けするように更に構成されている、データ記憶デバイス。
  4. 前記プロセッサは、前記ホストによって使用されていない前記コントローラメモリバッファ内の余剰空間を使用するように更に構成されている、請求項1~3のいずれか一項に記載のデータ記憶デバイス。
  5. 前記要求は、専用コマンドを含む、請求項1~3のいずれか一項に記載のデータ記憶デバイス。
  6. 前記コントローラ及びホストは各々、それぞれのコントローラメモリバッファ割り当てモジュールを備える、請求項1~3のいずれか一項に記載のデータ記憶デバイス。
  7. 前記プロセッサは、前記要求を許可した後に、前記ホストに確認を送信するように更に構成されている、請求項1~3のいずれか一項に記載のデータ記憶デバイス。
  8. 前記不揮発性メモリは、三次元メモリを含む、請求項1~3のいずれか一項に記載のデータ記憶デバイス。
  9. 方法であって、
    揮発性メモリ及び前記揮発性メモリの一部分から作成されるコントローラメモリバッファを備えるデータ記憶デバイスと通信するホストにおいて、
    ホストデータを前記揮発性メモリの別の部分に格納することと、
    前記コントローラメモリバッファのサイズを拡大する要求を前記データ記憶デバイスから受信することと、
    前記要求を許可するかどうかを判定することと、
    前記要求を許可するとの判定に応じて、前記ホストデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大することと、を実行することを含み、
    前記要求を許可するかどうかを判定する際に、ワークロードが考慮される、方法。
  10. 方法であって、
    揮発性メモリ及び前記揮発性メモリの一部分から作成されるコントローラメモリバッファを備えるデータ記憶デバイスと通信するホストにおいて、
    ホストデータを前記揮発性メモリの別の部分に格納することと、
    前記コントローラメモリバッファのサイズを拡大する要求を前記データ記憶デバイスから受信することと、
    前記要求を許可するかどうかを判定することと、
    前記要求を許可するとの判定に応じて、前記ホストデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大することと、を実行することを含み、
    前記コントローラメモリバッファのサイズをその最大サイズを超えて拡大しようとする前記要求に応じて、前記要求を拒否することを決定することを更に含む、方法。
  11. 方法であって、
    揮発性メモリ及び前記揮発性メモリの一部分から作成されるコントローラメモリバッファを備えるデータ記憶デバイスと通信するホストにおいて、
    ホストデータを前記揮発性メモリの別の部分に格納することと、
    前記コントローラメモリバッファのサイズを拡大する要求を前記データ記憶デバイスから受信することと、
    前記要求を許可するかどうかを判定することと、
    前記要求を許可するとの判定に応じて、前記ホストデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大することと、を実行することを含み、
    追い出しのためのデータの優先順位付けを引き起こすことを更に含む、方法。
  12. 前記データ記憶デバイスは、前記ホストによって使用されていない前記コントローラメモリバッファ内の余剰空間を使用するように構成されている、請求項9~11のいずれか一項に記載の方法。
  13. 前記要求は、専用コマンドを含む、請求項9~11のいずれか一項に記載の方法。
  14. 前記データ記憶デバイス及び前記ホストは各々、それぞれのコントローラメモリバッファ割り当てモジュールを備える、請求項9~11のいずれか一項に記載の方法。
  15. 前記要求を許可した後に、前記データ記憶デバイスに確認を送信することを更に含む、請求項9~11のいずれか一項に記載の方法。
  16. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    手段であって、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する
    ための手段と、を備え
    前記手段は、前記要求を許可するかどうかを判定する際にワークロードを考慮するように更に構成されている、データ記憶デバイス。
  17. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    手段であって、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する
    ための手段と、を備え、
    前記手段は、前記コントローラメモリバッファのサイズをその最大サイズを超えて拡大しようとする前記要求に応じて、前記要求を拒否するように更に構成されている、データ記憶デバイス。
  18. データ記憶デバイスであって、
    不揮発性メモリと、
    揮発性メモリと、
    手段であって、
    前記揮発性メモリの一部分から作成されたコントローラメモリバッファのサイズを構成し、前記コントローラメモリバッファはホストによって使用するために構成され、
    前記揮発性メモリの別の部分にコントローラデータを格納し、
    前記データ記憶デバイスの動作中に、前記コントローラメモリバッファの前記サイズを拡大する要求を前記ホストから受信し、
    前記要求を許可するかどうかを判定し、
    前記要求を許可するとの判定に応じて、前記コントローラデータの少なくとも一部を前記揮発性メモリの前記別の部分から前記揮発性メモリの自由空間に追い出すことによって、前記コントローラメモリバッファの前記サイズを拡大する
    ための手段と、を備え、
    前記手段は、追い出しのために前記コントローラメモリバッファ内のデータに優先順位付けするように更に構成されている、データ記憶デバイス。
JP2025522174A 2023-01-05 2023-11-07 動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法 Active JP7843421B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202363437171P 2023-01-05 2023-01-05
US63/437,171 2023-01-05
US18/223,144 2023-07-18
US18/223,144 US12223206B2 (en) 2023-01-05 2023-07-18 Data storage device and method for dynamic controller memory buffer allocation
PCT/US2023/079018 WO2024147843A1 (en) 2023-01-05 2023-11-07 Data storage device and method for dynamic controller memory buffer allocation

Publications (2)

Publication Number Publication Date
JP2025535163A JP2025535163A (ja) 2025-10-22
JP7843421B2 true JP7843421B2 (ja) 2026-04-09

Family

ID=91761555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2025522174A Active JP7843421B2 (ja) 2023-01-05 2023-11-07 動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法

Country Status (6)

Country Link
US (1) US12223206B2 (ja)
JP (1) JP7843421B2 (ja)
KR (1) KR20250068765A (ja)
CN (1) CN120092226A (ja)
DE (1) DE112023003496T5 (ja)
WO (1) WO2024147843A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN121412147A (zh) * 2024-07-24 2026-01-27 长江存储科技有限责任公司 电子系统、控制器、操作方法及存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107054A (ja) 2004-10-04 2006-04-20 Fujitsu Ltd ディスクアレイ装置
WO2014142337A1 (ja) 2013-03-15 2014-09-18 日本電気株式会社 ストレージ装置と方法及びプログラム
US20200004445A1 (en) 2018-06-29 2020-01-02 Western Digital Technologies, Inc. System and method for dynamic allocation to a host of memory device controller memory resources
US20220269434A1 (en) 2021-02-25 2022-08-25 SK Hynix Inc. Utilization based dynamic shared buffer in data storage system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947319A (en) * 1988-09-15 1990-08-07 International Business Machines Corporation Arbitral dynamic cache using processor storage
US5721874A (en) * 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
JP4291664B2 (ja) 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
US9552175B2 (en) 2011-02-08 2017-01-24 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10496443B2 (en) * 2017-05-03 2019-12-03 Vmware, Inc. OS/hypervisor-based persistent memory
US10114586B1 (en) 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory
US10613778B2 (en) 2018-03-21 2020-04-07 Western Digital Technologies, Inc. Dynamic host memory allocation to a memory controller
KR102653373B1 (ko) 2018-09-13 2024-04-02 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11650937B2 (en) 2019-12-31 2023-05-16 Western Digital Technologies, Inc. Storage system and method for secure host controller memory buffer access
CN111221476B (zh) * 2020-01-08 2022-03-29 深圳忆联信息系统有限公司 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质
US11403163B2 (en) * 2020-06-04 2022-08-02 Western Digital Technologies, Inc. Storage system and method for crash analysis
US11366754B2 (en) 2020-07-28 2022-06-21 Micron Technology, Inc. Adjustable buffer memory space

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107054A (ja) 2004-10-04 2006-04-20 Fujitsu Ltd ディスクアレイ装置
WO2014142337A1 (ja) 2013-03-15 2014-09-18 日本電気株式会社 ストレージ装置と方法及びプログラム
US20200004445A1 (en) 2018-06-29 2020-01-02 Western Digital Technologies, Inc. System and method for dynamic allocation to a host of memory device controller memory resources
US20220269434A1 (en) 2021-02-25 2022-08-25 SK Hynix Inc. Utilization based dynamic shared buffer in data storage system

Also Published As

Publication number Publication date
KR20250068765A (ko) 2025-05-16
DE112023003496T5 (de) 2025-07-03
US12223206B2 (en) 2025-02-11
US20240231689A1 (en) 2024-07-11
JP2025535163A (ja) 2025-10-22
WO2024147843A1 (en) 2024-07-11
CN120092226A (zh) 2025-06-03

Similar Documents

Publication Publication Date Title
US11262928B2 (en) Storage system and method for enabling partial defragmentation prior to reading in burst mode
US11543987B2 (en) Storage system and method for retention-based zone determination
JP7293458B1 (ja) ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法
US11626183B2 (en) Method and storage system with a non-volatile bad block read cache using partial blocks
US20230384966A1 (en) Storage System and Method for Data Placement in Zoned Storage
US12333183B2 (en) Data storage device and method for executing a low-priority speculative read command from a host
US11487450B1 (en) Storage system and method for dynamic allocation of control blocks for improving host write and read
US11513963B2 (en) Data storage device and method for application identifier handler heads-up for faster storage response
US11507309B2 (en) Storage system and method for using memory allocated in a host for read data as a host memory buffer
US11847323B1 (en) Data storage device and method for host buffer management
JP7843421B2 (ja) 動的コントローラメモリバッファ割り当てのためのデータ記憶デバイス及び方法
US11030106B2 (en) Storage system and method for enabling host-driven regional performance in memory
US20240143227A1 (en) Data Storage Device and Method for Reducing Flush Latency
US12242751B2 (en) Data storage device and method for host-assisted efficient handling of multiple versions of data
US12493421B2 (en) System and method for flexible emergency power fail management for multiple persistent memory regions
US12541455B2 (en) Data storage device and method for defining caching layers based on cache attributes
US12573441B2 (en) Data storage device and method for optimized refresh
US12307100B1 (en) Data storage device and method for managing memory maintenance operations
US20260030215A1 (en) Data Storage Device and Method for Providing an Efficient Multitenancy Arrangement in High-Capacity Data Storage Devices
US11429296B2 (en) Storage system, host, and method for extended and imaginary logical-to-physical address mapping
WO2024147841A1 (en) Data storage device and method for race-based data access in a multiple host memory buffer system
CN121925641A (zh) 用于数据处理优化以用于计算存储的数据存储设备和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20250417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250922

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20250922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20251111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20260209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20260303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20260330

R150 Certificate of patent or registration of utility model

Ref document number: 7843421

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150