IP Library Granted Patent US 12,457,175
Granted Patent B2
US 12,457,175 · App. 17/355,915 · Granted Oct 28, 2025

Managing quality of service by allocating die parallelism with variable queue depth

Inventors: Shirish Bahirat (Longmont, CO); Anand Ramalingam (Portland, OR); Solomon Sagar Albert Jayaraj (Gainesville, FL); Fnu Sachin (Blacksburg, VA); Xin Guo (San Jose, CA)
Assignee: SK Hynix NAND Product Solutions Corp.
H04L47/24
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,457,175
App. No.
17/355,915
Granted
Oct 28, 2025
Kind
B2
Abstract

Systems, apparatuses and methods provide for a memory controller to manage quality of service enforcement. For example, a memory controller includes logic to determine a plurality of projected bandwidth levels and a plurality of projected quality of service levels on a user-by-user basis. The projected bandwidth levels and the projected quality of service levels are determined for a plurality of device configurations based on one or more storage device parameters. A requested bandwidth level and a requested quality of service level is received from a host in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels.

Claims (58)

1 . A memory controller comprising:

one or more substrates; and

a logic coupled to the one or more substrates, where the logic is implemented at least partly in one or more of configurable or fixed-functionality hardware logic, the logic to:

determine a plurality of projected bandwidth levels and a plurality of projected quality of service levels on a user-by-user basis, wherein the projected bandwidth levels and the projected quality of service levels are determined for a plurality of device configurations based on one or more storage device parameters, wherein the one or more storage device parameters include one or more of an internal queue depth, a media operation speed, a per die read projection, a per die write projection, a program suspend projection, or an erase suspend projection;

receive, from a host, a requested bandwidth level and a requested quality of service level in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels;

receive, from the host, a command priority in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels; and

control the internal queue depth to maintain the requested quality of service level, wherein the internal queue depth is controlled based at least in part on dynamically reallocating the command priority via the memory controller.

2 . The memory controller of claim 1 , wherein the storage device parameters include a number of dies, the internal queue depth, the media operation speed, the per die read projection, the per die write projection, the program suspend projection, and the erase suspend projection.

3 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from a host, permission to dynamically reallocate the command priority via the memory controller.

4 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, instructions on how to dynamically reallocate the command priority.

5 . The memory controller of claim 1 , wherein the dynamic reallocation of the command priority for a first user includes configuring a first percentage of first user commands to be executed at a first priority and a second percentage of first user commands to be executed at a second priority, and wherein the first priority is different from the second priority.

6 . The memory controller of claim 1 , wherein the dynamic reallocation of the command priority is based at least in part on one or more of a change in the internal queue depth, a change in media type among a plurality of storage devices, a change in power management per user, or a change in defragment policy.

7 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a request for a current priority of a first user; and

report the current priority of the first user to the host based on the dynamic reallocation of the command priority.

8 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a request for a change in media type among a plurality of storage devices;

select a target storage device from the plurality of storage devices including a first storage device of a first media type and a second storage device of a second media type, wherein the second device is to operate more slowly than the first device; and

issue an incoming user command to the target storage device.

9 . The memory controller of claim 8 , wherein the plurality of storage devices are to include one or more of a quad level cell solid state drive, a three-dimensional crosspoint solid state drive, or a three-dimensional crosspoint data center persistent memory.

10 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a requested garbage collection frequency for a garbage collection timer; and

configure the garbage collection timer based on the requested garbage collection frequency.

11 . The memory controller of claim 1 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a request to activate a write aggregation and de-staging timer; and

send, to the host, a report of completion when ready to accept de-staged writes in response to the write aggregation and de-staging timer.

12 . A memory system comprising:

a host interface;

a plurality of memory dies; and

a memory controller communicatively coupled to the host interface and the plurality of memory dies, the memory controller including logic coupled to one more substrates, wherein the logic is to:

determine a plurality of projected bandwidth levels and a plurality of projected quality of service levels on a user-by-user basis, wherein the projected bandwidth levels and the projected quality of service levels are determined for a plurality of device configurations based on one or more storage device parameters, wherein the one or more storage device parameters include one or more of an internal queue depth, a media operation speed, a per die read projection, a per die write projection, a program suspend projection, or an erase suspend projection;

receive, from a host, a requested bandwidth level and a requested quality of service level in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels;

receive, from the host, a command priority in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels; and

control the internal queue depth to maintain the requested quality of service level, wherein the internal queue depth is controlled based at least in part on dynamically reallocating the command priority via the memory controller.

13 . The memory system of claim 12 , wherein the storage device parameters include a number of dies, the internal queue depth, the media operation speed, the per die read projection, the per die write projection, the program suspend projection, and the erase suspend projection.

14 . The memory system of claim 12 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, permission to dynamically reallocate the command priority via the memory controller;

receive, from the host, instructions on how to dynamically reallocate the command priority;

receive, from the host, a request for a current priority of a first user; and

report the current priority of the first user to the host based on the dynamic reallocation of the command priority,

wherein the dynamic reallocation of the command priority for a first user includes configuring a first percentage of first user commands to be executed at a first priority and a second percentage of first user commands to be executed at a second priority, and wherein the first priority is different from the second priority,

wherein the dynamic reallocation of the command priority is based at least in part on one or more of a change in the internal queue depth, a change in media type among a plurality of storage devices, a change in power management per user, or a change in defragment policy.

15 . The memory system of claim 12 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a request for a change in media type among a plurality of storage devices;

select a target storage device from the plurality of storage devices including a first storage device of a first media type and a second storage device of a second media type, wherein the second device is to operate more slowly than the first device; and

issue an incoming user command to the target storage device, wherein the plurality of storage devices are to include one or more of a quad level cell solid state drive, a three-dimensional crosspoint solid state drive, or a three-dimensional crosspoint data center persistent memory.

16 . The memory system of claim 12 , wherein the logic coupled to the one or more substrates is to:

receive, from the host, a requested garbage collection frequency for a garbage collection

configure the garbage collection timer based on the requested garbage collection frequency;

receive, from the host, a request to activate a write aggregation and de-staging timer; and

send, to the host, a report of completion when ready to accept de-staged writes in response to the write aggregation and de-staging timer.

17 . A method comprising:

determining, via a memory controller, a plurality of projected bandwidth levels and a plurality of projected quality of service levels on a user-by-user basis, wherein the projected bandwidth levels and the projected quality of service levels are determined for a plurality of device configurations based on one or more storage device parameters, wherein the one or more storage device parameters include one or more of an internal queue depth, a media operation speed, a per die read projection, a per die write projection, a program suspend projection, or an erase suspend projection;

receiving from a host, via the memory controller, a requested bandwidth level and a requested quality of service level in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels;

receiving, from the host, a command priority in response to the plurality of projected bandwidth levels and the plurality of projected quality of service levels; and

controlling, via the memory controller, the internal queue depth to maintain the requested quality of service level, wherein the internal queue depth is controlled based at least in part on dynamically reallocating the command priority.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072549/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2022
From: BAHIRAT, SHIRISH; RAMALINGAM, ANAND; ALBERT JAYARAJ, SOLOMON SAGAR; SACHIN, FNU; GUO, XIN
To: INTEL CORPORATION
Reel/Frame 059630/0884 →
Continuity (1)
Related Publication 20210392083A1 · Dec 16, 2021
References Cited (4)
US 20170171106A1 · Woo · 2017 [cited by examiner]
US 20200089537A1 · Bahirat · 2020 [cited by examiner]
US 20200393974A1 · Bahirat · 2020 [cited by applicant]
US 20210281639A1 · Kachare · 2021 [cited by examiner]