IP Library Granted Patent US 12,346,610
Granted Patent B2
US 12,346,610 · App. 18/537,300 · Granted Jul 1, 2025

Virtual queue for messages

Inventors: Priyanka Nilay Thakore (Mountain View, CA); Chen Xiu (Beijing, CN); Zhikai Chen (Shanghai, CN); Lyle E. Adams (San Jose, CA)
Assignee: Beijing Tenafe Electronic Technology Co., Ltd.
G06F3/0659G06F3/0604G06F3/0673
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,346,610
App. No.
18/537,300
Granted
Jul 1, 2025
Kind
B2
Abstract

A storage controller system includes a host command module that manages communication with a host and a backend command module that manages communication with a storage system. A storage interface hardware functional module, in response to an unsuccessful or successful operation, generates a first or second type of a status message with an automated retry flag set to TRUE or FALSE. A virtual queue module receives the status message and selects a virtual queue. If (1) the flag being set to TRUE and (2) independent of the queue ID, an original command virtual queue is selected. If (1) the flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, a virtual queue associated with the backend command module is selected. A stored message in the selected virtual queue is provided to the selected message recipient.

Claims (55)

1. A storage controller system implemented on a System On Chip (SOC), comprising:

a host command module that:

manages communication between the storage controller system and a host; and

runs on a first processor module;

a backend command module, wherein:

the backend command module manages communication between the storage controller system and a storage system via a storage interface;

the backend command module runs on a second processor module; and

the host uses the storage controller system to store data in the storage system;

a storage interface hardware functional module that:

in response to an unsuccessful operation directed to the storage system, generates a first type of a status message that includes an automated retry flag in a payload section of the status message set to TRUE; and

in response to a successful operation directed to the storage system, generates a second type of the status message that includes: (1) the automated retry flag set to FALSE and (2) a queue identifier (ID) set to a value associated with the backend command module; and

a virtual queue module that:

receives, from the storage interface hardware functional module, the status message;

selects a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on one or more configurable message handling settings, including by:

in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, selecting an original command virtual queue associated with the unsuccessful operation; and

in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, selecting a virtual queue associated with the backend command module;

stores a message in the selected virtual queue, including by:

in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, storing a copy of an original command associated with the unsuccessful operation in the original command virtual queue; and

in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, storing the second type of the status message in the virtual queue associated with the backend command module;

selects a message recipient from a plurality of potential message recipients based at least in part on the one or more configurable message handling settings, wherein the plurality of potential message recipients includes the host command module, the backend command module, and the storage interface hardware functional module; and

provides the stored message in the selected virtual queue to the selected message recipient.

2. The storage controller system implemented on the SOC recited in claim 1 , wherein:

the storage interface includes a Flash interface; and

the storage interface hardware functional module includes a Flash interface hardware functional module.

3. The storage controller system implemented on the SOC recited in claim 1 , wherein:

the storage system includes a plurality of storage media die, including a first storage media die that is busy and a second storage media die that is available;

the unsuccessful operation directed to the storage system is directed to the first storage media die that is busy; and

the successful operation directed to the storage system is directed to the second storage media die that is available.

4. A method for managing a storage controller system implemented on a System On Chip (SOC), comprising:

using a host command module, in the storage controller system implemented on the SOC, to:

manage communication between the storage controller system and a host; and

run on a first processor module;

using a backend command module, in the storage controller system implemented on the SOC, to manage communication between the storage controller system and a storage system via a storage interface, wherein:

the backend command module runs on a second processor module; and

the host uses the storage controller system to store data in the storage system;

using a storage interface hardware functional module, in the storage controller system implemented on the SOC, to:

in response to an unsuccessful operation directed to the storage system, generate a first type of a status message that includes an automated retry flag in a payload section of the status message set to TRUE; and

in response to a successful operation directed to the storage system, generate a second type of the status message that includes: (1) the automated retry flag set to FALSE and (2) a queue identifier (ID) set to a value associated with the backend command module; and

using a virtual queue module, in the storage controller system implemented on the SOC, to:

receive, from the storage interface hardware functional module, the status message;

select a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on one or more configurable message handling settings, including by:

in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, selecting an original command virtual queue associated with the unsuccessful operation; and

in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, selecting a virtual queue associated with the backend command module;

store a message in the selected virtual queue, including by:

in response to (1) the automated retry flag being set to TRUE and (2) independent of the queue ID, storing a copy of an original command associated with the unsuccessful operation in the original command virtual queue; and

in response to (1) the automated retry flag being set to FALSE and (2) the queue ID being set to the value associated with the backend command module, storing the second type of the status message in the virtual queue associated with the backend command module;

select a message recipient from a plurality of potential message recipients based at least in part on the one or more configurable message handling settings, wherein the plurality of potential message recipients includes the host command module, the backend command module, and the storage interface hardware functional module; and

provide the stored message in the selected virtual queue to the selected message recipient.

5. The method recited in claim 4 , wherein:

the storage interface includes a Flash interface; and

the storage interface hardware functional module includes a Flash interface hardware functional module.

6. The method recited in claim 4 , wherein:

the storage system includes a plurality of storage media die, including a first storage media die that is busy and a second storage media die that is available;

the unsuccessful operation directed to the storage system is directed to the first storage media die that is busy; and

the successful operation directed to the storage system is directed to the second storage media die that is available.

Continuity (3)
Continuation 18195518 · May 10, 2023
Provisional Application 63392259 · Jul 26, 2022
Related Publication 20240111460A1 · Apr 4, 2024
References Cited (24)
US 6735211B1 · Karasawa · 2004 [cited by applicant]
US 8332473B1 · Fouts · 2012 [cited by applicant]
US 8407707B2 · Sonnier · 2013 [cited by applicant]
US 8949474B1 · Swarbrick · 2015 [cited by applicant]
US 9760281B2 · Ramalingam · 2017 [cited by applicant]
US 10178033B2 · Bellessa · 2019 [cited by examiner]
US 11366690B2 · Xiao · 2022 [cited by examiner]
US 11645011B2 · Lee · 2023 [cited by applicant]
US 11646980B2 · Chilikin · 2023 [cited by applicant]
US 11646987B1 · Pathak · 2023 [cited by applicant]
US 11899984B1 · Thakore · 2024 [cited by examiner]
US 20040187089A1 · Schulz · 2004 [cited by applicant]
US 20090122703A1 · Gangwal · 2009 [cited by examiner]
US 20150169406A1 · Li · 2015 [cited by applicant]
US 20170093770A1 · Flajslik · 2017 [cited by applicant]
US 20180210845A1 · Jafri · 2018 [cited by examiner]
US 20190097800A1 · Melrose · 2019 [cited by applicant]
US 20190258919A1 · Lie · 2019 [cited by applicant]
US 20190258920A1 · Lie · 2019 [cited by applicant]
US 20220334770A1 · Guo · 2022 [cited by applicant]
US 20240089196A1 · Thota · 2024 [cited by applicant]
CN 102597971 · 2012 [cited by applicant]
CN 105612502 · 2016 [cited by applicant]
CN 113836057 · 2021 [cited by applicant]