IP Library Granted Patent US 11,899,984
Granted Patent B1
US 11,899,984 · App. 18/195,518 · Granted Feb 13, 2024

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)
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 11,899,984
App. No.
18/195,518
Granted
Feb 13, 2024
Kind
B1
Abstract

A message that includes a queue identifier (ID) is received from a first hardware functional module. A virtual queue is selected from a plurality of virtual queues in a shared queue structure based at least in part on the queue ID and configurable message handling settings(s). The message is stored in the selected virtual queue and a message recipient is selected from a plurality of potential message recipients based at least in part on the configurable message handling setting(s), where the plurality of potential message recipients includes the second hardware functional module and the processor module. The message is provided to the selected message recipient.

Claims (70)

1. A System On Chip (SOC) system, comprising:

a first hardware functional module;

a second hardware functional module;

a processor module; and

a virtual queue module, wherein the virtual queue module:

receives, from the first hardware functional module, a message that includes a queue identifier (ID);

selects a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on the queue ID and one or more configurable message handling settings;

stores the message in the selected virtual queue;

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 second hardware functional module, the processor module, and a second virtual queue in the plurality of virtual queues; and

selecting the message recipient further includes selecting the second virtual queue; and

provides the message to the selected message recipient, including by modifying the one or more configurable message handling settings so that a storage location associated with the message is reassigned to the second virtual queue.

2. The SOC system recited in claim 1 , wherein the shared queue structure includes a single SRAM and the plurality of virtual queues are all stored on the single SRAM.

3. The SOC system recited in claim 1 , wherein providing the message to the selected message recipient includes notifying the selected message recipient, wherein in response to the notification, the selected message recipient pulls the message from the plurality of virtual queues.

4. The SOC system recited in claim 1 , wherein the virtual queue module further modifies, during runtime, the one or more configurable message handling settings, based at least in part on a current state of the SOC, so that a size of at least one of the plurality of virtual queues is modified.

5. The SOC system recited in claim 1 , wherein:

the message further includes a header field and a payload; and

selecting the virtual queue is further based at least in part on one or more of the following: the header field or at least some part of the payload.

6. The SOC system recited in claim 1 , wherein:

the virtual queue module further modifies the message, based at least in part on the one or more configurable message handling settings; and

providing the message to the selected message recipient includes providing the modified message.

7. The SOC system recited in claim 1 , wherein:

the SOC system includes a storage controller SOC which in turn includes an error correction decoder; and

the virtual queue module further:

determines an error rate based at least in part on one or more decoding error metrics reported by the error correction decoder; and

in the event the error rate exceeds a threshold, modifies the one or more configurable message handling settings in order to increase a size of a virtual queue that inputs to the error correction decoder.

8. A method, comprising:

receiving, from a first hardware functional module, a message that includes a queue identifier (ID);

selecting a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on the queue ID and one or more configurable message handling settings;

storing the message in the selected virtual queue;

selecting 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 second hardware functional module, the processor module, and a second virtual queue in the plurality of virtual queues; and

selecting the message recipient further includes selecting the second virtual queue;

providing the message to the selected message recipient, including by modifying the one or more configurable message handling settings so that a storage location associated with the message is reassigned to the second virtual queue.

9. The method recited in claim 8 , wherein the shared queue structure includes a single SRAM and the plurality of virtual queues are all stored on the single SRAM.

10. The method recited in claim 8 , wherein providing the message to the selected message recipient includes notifying the selected message recipient, wherein in response to the notification, the selected message recipient pulls the message from the plurality of virtual queues.

11. The method recited in claim 8 , further including: modifying, during runtime, the one or more configurable message handling settings, based at least in part on a current state of the SOC, so that a size of at least one of the plurality of virtual queues is modified.

12. The method recited in claim 8 , wherein:

the message further includes a header field and a payload; and

selecting the virtual queue is further based at least in part on one or more of the following: the header field or at least some part of the payload.

13. The method recited in claim 8 , wherein:

the method further includes modifying the message, based at least in part on the one or more configurable message handling settings; and

providing the message to the selected message recipient includes providing the modified message.

14. The method recited in claim 8 , wherein:

the SOC system includes a storage controller SOC which in turn includes an error correction decoder; and

the method further includes:

determining an error rate based at least in part on one or more decoding error metrics reported by the error correction decoder; and

in the event the error rate exceeds a threshold, modifying the one or more configurable message handling settings in order to increase a size of a virtual queue that inputs to the error correction decoder.

15. A System On Chip (SOC) system, comprising:

a first hardware functional module;

a second hardware functional module;

a processor module; and

a virtual queue module, wherein the virtual queue module:

receives, from the first hardware functional module, a message that includes a queue identifier (ID);

selects a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on the queue ID and one or more configurable message handling settings, wherein the one or more configurable message handling settings include a content location;

stores the message in the selected virtual queue;

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 second hardware functional module and the processor module;

modifying the message, based at least in part on the one or more configurable message handling settings, including by:

accessing the content location to obtain new content; and

including the new content in the modified message; and

provides the message to the selected message recipient, including by providing the modified message.

16. A method, comprising:

receiving, from a first hardware functional module, a message that includes a queue identifier (ID);

selecting a virtual queue, from a plurality of virtual queues in a shared queue structure, based at least in part on the queue ID and one or more configurable message handling settings, wherein the one or more configurable message handling settings include a content location;

storing the message in the selected virtual queue;

selecting 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 second hardware functional module and the processor module; and

modifying the message, based at least in part on the one or more configurable message handling settings, including by:

accessing the content location to obtain new content; and

including the new content in the modified message; and

providing the message to the selected message recipient, including by providing the modified message.

Assignments (2)
CHANGE OF NAME Recorded Aug 13, 2025
From: BEIJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
To: NANJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
Reel/Frame 072008/0631 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2023
From: THAKORE, PRIYANKA NILAY; XIU, CHEN; CHEN, ZHIKAI; ADAMS, LYLE E.
To: BEIJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
Reel/Frame 065242/0076 →
Continuity (1)
Provisional Application 63392259 · Jul 26, 2022
Cited By (1)
US 12,346,610