IP Library › Granted Patent US 12,639,220
Granted Patent B2
US 12,639,220 · App. 18/790,803 · Granted May 26, 2026

Memory subsystem supported quality of service levels for virtualized storage

Inventor: Prateek Sharma (San Jose, CA)
Assignee: Micron Technology, Inc.
G06F12/08G06F2212/1016G06F2212/152
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,639,220
App. No.
18/790,803
Granted
May 26, 2026
Kind
B2
Abstract

Memory subsystem supported quality of service (QOS) levels for virtualized storage can be provided by advertising, by the memory subsystem coupled to a host, QoS levels supported by the memory subsystem. Examples of such QoS levels can include a function level, a process address space identifier (PASID) level, and a submission queue level. The memory subsystem can receive from the host a definition of QoS parameters for at least one QoS level. The memory subsystem can provide input/output virtualized (IOV) storage while enforcing the QoS parameters via hardware of the memory subsystem.

Claims (67)

1 . A method, comprising:

advertising, by a memory subsystem coupled to a host, those quality of service (QOS) levels supported by the memory subsystem of a group of QoS levels, the group comprising:

function level;

process address space identifier (PASID) level; and

submission queue level;

receiving, from the host by the memory subsystem, a definition of QoS parameters for at least one of the group of QoS levels; and

providing, by the memory subsystem, input/output virtualized (IOV) storage for a plurality of user processes associated with the host while enforcing the QoS parameters at the at least one of the group of QoS levels via hardware of the memory subsystem.

2 . The method of claim 1 , wherein advertising those QoS levels supported by the memory subsystem comprises storing data indicative of those QoS levels supported by the memory subsystem in a vendor-specific register of the memory subsystem; and

wherein the method further comprises storing the definition of the QoS parameters in a table in a memory mapped input/output (MMIO) region of the memory subsystem referenced by the vendor-specific register.

3 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of functions.

4 . The method of claim 3 , wherein providing IOV storage comprises enforcing the respective QoS parameters defined for each of a plurality of PASIDs and each of a plurality of submission queues belonging to a particular function of the plurality of functions.

5 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of PASIDs.

6 . The method of claim 5 , wherein providing IOV storage comprises enforcing the respective QoS parameters for each of a plurality of submission queues belonging to a particular PASID of the plurality of PASIDs.

7 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of submission queues; and

wherein providing IOV storage comprises enforcing the respective QoS parameters for each of a plurality of submission queues.

8 . The method of claim 1 , wherein receiving the definition of QoS parameters comprises receiving the definition of one or more of a group of QoS parameters comprising:

write commands per unit interval;

read commands per unit interval;

write data per unit interval; and

read data per unit interval.

9 . The method of claim 1 , wherein the plurality of user processes include one or more of:

a plurality of virtualized computing instances (VCIs) provisioned by the host;

a plurality of user processes running on a plurality of VCIs provisioned by the host; and

a plurality of user processes running directly on the host.

10 . An apparatus comprising:

a host interface;

a register;

a memory device; and

a controller coupled to the host interface, the register, and the memory device, wherein the controller is configured to:

allow a host to access at least a portion of the register via the host interface;

cause a respective capability indicator for each of a plurality of quality of service (QOS) levels to be stored in the register;

wherein the respective capability indicator is readable by the host; and

wherein the plurality of QoS levels include a function level, a process address space identifier (PASID) level, and a submission queue level;

read a selection of one of the plurality of QoS levels written to the register by the host;

read a definition of QoS parameters written to the register by the host; and

provide input/output virtualized (IOV) storage via the memory device for a plurality of user processes associated with the host while enforcing the QoS parameters at the selected QoS level.

11 . The apparatus of claim 10 , wherein the controller includes a QoS parameter register configured to track respective values of credits available to the plurality of user processes.

12 . The apparatus of claim 11 , wherein the controller includes a plurality of hardware counters coupled to a credit calculator and a clock input;

wherein the plurality of counters are configured to be incremented based on the clock input;

wherein the credit calculator is configured to:

receive an input indicating respective initial credits for the plurality of user processes;

update the various counters based on user process operations;

calculate updates to the respective initial credits; and

write the updates to the hardware registers.

13 . The apparatus of claim 12 , wherein to enforce the QoS parameters, the controller is configured to perform credit arbitration on a per QoS mode basis and collective credit arbitration on an overall basis thereafter.

14 . The apparatus of claim 10 , further comprising an address translation cache coupled to the register and the host interface;

wherein the address translation cache is configured to store physical addresses corresponding to user space addresses tagged in the PASID table.

15 . The apparatus of claim 14 , further comprising physical region page/scatter gather list (PRP/SGL) fetch circuitry coupled to the register and the host interface;

wherein the PRP/SGL fetch circuitry is configured to determine whether user space addresses have been translated before.

16 . The apparatus of claim 10 , wherein the plurality of QOS parameters include write commands per unit interval, read commands per unit interval, write data per unit interval, and read data per unit interval.

17 . The apparatus of claim 10 , wherein the register comprises a plurality of registers in a mapped input/output (MMIO) region of the apparatus.

18 . A system, comprising:

a memory subsystem, comprising:

a register;

a memory device; and

a controller coupled to the memory device and the register; and

a host including host memory and a host processor, wherein the host is coupled to the memory subsystem and configured to:

provision a plurality of user processes;

read the register to discover quality of service (QOS) level capabilities of the memory subsystem;

write to the register to select a QoS level; and

write to the register to define QoS parameters for the selected QoS level;

wherein the controller is configured to provide input/output virtualized (IOV) storage via the memory device for the plurality of user processes while enforcing the QoS parameters at the selected QoS level.

19 . The system of claim 18 , wherein the host is configured to write to the register to store definitions of a credit structure for the QoS parameters.

20 . The system of claim 18 , wherein the plurality of user processes include one or more of a group of user processes including:

VCIs running on a hypervisor of the host;

user processes running inside a VCI; and

user process running directly on the host memory and the host processor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2024
From: SHARMA, PRATEEK
To: MICRON TECHNOLOGY, INC.
Reel/Frame 068142/0818 →
Continuity (1)
Related Publication 20260037442A1 · Feb 5, 2026
References Cited (16)
US 11321238B2 · Sharma · 2022 [cited by applicant]
US 11386519B2 · Tian · 2022 [cited by examiner]
US 11734191B2 · Sharma · 2023 [cited by applicant]
US 11836511B2 · Sharma et al. · 2023 [cited by applicant]
US 12449976B2 · Guo · 2025 [cited by examiner]
US 20120180047A1 · Cardona · 2012 [cited by examiner]
US 20210004338A1 · Marolia · 2021 [cited by examiner]
US 20210124497A1 · Bert · 2021 [cited by examiner]
US 20210124498A1 · Bert · 2021 [cited by examiner]
US 20210124499A1 · Bert · 2021 [cited by examiner]
US 20210406055A1 · Kakaiya · 2021 [cited by examiner]
US 20230004323A1 · Nadakuditi · 2023 [cited by examiner]
US 20240160462A1 · Li · 2024 [cited by examiner]
US 20240264959A1 · Ellis · 2024 [cited by examiner]
US 20250321904A1 · Thyagaturu · 2025 [cited by examiner]
NVM Express, “NVMe over PCIe Transport Specification”, Revision 1.0, https://nvmexpress.org/wp-content/uploads/NVMe-over-PCIe-Transport-Specification-1_0-2021.06.02-Ratified.pdf, May 18, 2021, 37 pages. [cited by applicant]