IP Library Granted Patent US 12,645,397
Granted Patent B2
US 12,645,397 · App. 18/227,899 · Granted Jun 2, 2026

Solving submission queue entry overflow with shadow submission queue

Inventors: Daniel Lee Helmick (Thornton, CO); Robert Wayne Moss (Fort Collins, CO); Michael Allison (Longmont, CO); Sumanth Jannyavula Venkata (Pleasanton, CA); Judith Rose Brock (Berkeley, CA)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F3/0659G06F3/0679G06F3/0604
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,645,397
App. No.
18/227,899
Granted
Jun 2, 2026
Kind
B2
Abstract

A memory is disclosed. The memory may include a first data structure. The first data structure may include a first field to store a first data relating to a command. The memory may also include a second data structure. The second data structure may include a second field to store a second data relating to the command. A first queue stored in the memory may include the first data structure. A second queue stored in the memory may include the second data structure.

Claims (48)

1 . A memory, comprising:

a first data structure stored in the memory, the first data structure including a first field to store a first data relating to a command;

a second data structure stored in the memory, the second data structure including a second field to store a second data relating to the command;

a first queue stored in the memory, the first queue including the first data structure, the first queue including a first relative ordering of the first data structure and a third data structure storing a third data relating to a second command; and

a second queue stored in the memory, the second queue including the second data structure, the second queue including a second relative ordering of the second data structure and a fourth data structure storing a fourth data relating to the second command,

wherein the first queue is a first submission queue and the second queue is a second submission queue, or the first queue is a first completion queue and the second queue is a second completion queue

wherein the second relative ordering parallels the first relative ordering, and

wherein a controller is configured to process the command based at least in part on the first data relating to the command and the second data relating to the command.

2 . The memory according to claim 1 , wherein:

the first queue includes a number of entries; and

the second queue includes the number of entries.

3 . The memory according to claim 2 , wherein:

the first data structure is located at a position in the first queue; and

the second data structure is located at a same position in the second queue.

4 . The memory according to claim 1 , wherein:

the first queue includes a first number of entries; and

the second queue includes a second number of entries,

wherein the second number of entries is less than the first number of entries.

5 . The memory according to claim 4 , wherein the first data structure includes a third field to store an identifier of the second data structure.

6 . The memory according to claim 4 , wherein the second data structure includes a phase value.

7 . A method, comprising:

establishing a first data structure by a processor, the first data structure including a first field storing a first data relating to a command;

establishing a second data structure by the processor, the second data structure including a second field storing a second data related to the command;

storing the first data structure in a first queue in a memory by the processor, the first queue including a first relative ordering of the first data structure and a third data structure storing a third data relating to a second command; and

storing the second data structure in a second queue in the memory by the processor, the second queue including a second relative ordering of the second data structure and a fourth data structure storing a fourth data relating to the second command,

wherein the first queue is a first submission queue and the second queue is a second submission queue, or the first queue is a first completion queue and the second queue is a second completion queue, and

wherein the second relative ordering parallels the first relative ordering.

8 . The method according to claim 7 , wherein establishing the first data structure by the processor includes storing a value in a third field in the first data structure to indicate the presence of the second data structure in the memory.

9 . The method according to claim 7 , wherein:

establishing the first data structure by the processor includes storing an operation code (opcode) or a command identifier in a third field in the first data structure; and

establishing the second data structure by the processor includes storing the opcode or the command identifier in a fourth field in the second data structure.

10 . The method according to claim 7 , wherein:

the first queue includes a number of entries; and

the second queue includes the number of entries.

11 . The method according to claim 10 , wherein:

the first data structure is located at a position in the first queue; and

the second data structure is located at a same position in the second queue.

12 . The method according to claim 7 , wherein:

the first queue includes a first number of entries; and

the second queue includes a second number of entries,

wherein the second number of entries is less than the first number of entries.

13 . The method according to claim 12 , wherein establishing a first data structure by a processor includes storing an identifier of the second data structure in a third field in the first data structure.

14 . The method according to claim 12 , wherein the second data structure includes a phase value.

15 . The method according to claim 7 , wherein:

the method further comprises:

requesting a format for the second data structure from a storage device by the processor; and

receiving the format for the second data structure from the storage device by the processor; and

establishing the second data structure by the processor includes establishing the second data structure by the processor based at least in part on the format for the second data structure received from the storage device by the processor.

Continuity (3)
Provisional Application 63427410 · Nov 22, 2022
Provisional Application 63427415 · Nov 22, 2022
Related Publication 20240168681A1 · May 23, 2024
References Cited (86)
US 8554968B1 · Onufryk · 2013 [cited by examiner]
US 8677068B2 · Canepa et al. · 2014 [cited by applicant]
US 9110786B2 · Carlson et al. · 2015 [cited by applicant]
US 9304690B2 · McCambridge et al. · 2016 [cited by applicant]
US 9760281B2 · Ramalingam · 2017 [cited by applicant]
US 10387078B1 · Benisty · 2019 [cited by applicant]
US 10466903B2 · Benisty et al. · 2019 [cited by applicant]
US 10732897B2 · Benisty · 2020 [cited by applicant]
US 10742737B2 · Choi et al. · 2020 [cited by applicant]
US 10880204B1 · Shalev et al. · 2020 [cited by applicant]
US 10884658B2 · Benisty · 2021 [cited by applicant]
US 10891061B2 · Iwai et al. · 2021 [cited by applicant]
US 11036628B2 · Hashimoto · 2021 [cited by applicant]
US 11169938B2 · Gissin et al. · 2021 [cited by applicant]
US 11294827B2 · Bennett et al. · 2022 [cited by applicant]
US 11301163B2 · Zhang et al. · 2022 [cited by applicant]
US 11301370B2 · Pasquale et al. · 2022 [cited by applicant]
US 11409469B2 · Jo et al. · 2022 [cited by applicant]
US 11461052B1 · Benisty · 2022 [cited by applicant]
US 11461238B2 · Jang · 2022 [cited by applicant]
US 11467769B2 · Benisty · 2022 [cited by applicant]
US 11570257B1 · Tanach et al. · 2023 [cited by applicant]
US 11714767B1 · Goldstein et al. · 2023 [cited by applicant]
US 20070276789A1 · Keithley et al. · 2007 [cited by applicant]
US 20110060875A1 · Haukness et al. · 2011 [cited by applicant]
US 20120102275A1 · Resnick · 2012 [cited by applicant]
US 20150223691A1 · Choi et al. · 2015 [cited by applicant]
US 20150248366A1 · Bergsten · 2015 [cited by examiner]
US 20160027481A1 · Hong · 2016 [cited by applicant]
US 20170060422A1 · Sharifie et al. · 2017 [cited by applicant]
US 20170097908A1 · Simionescu et al. · 2017 [cited by applicant]
US 20170116117A1 · Rozen et al. · 2017 [cited by applicant]
US 20170123721A1 · Sela · 2017 [cited by examiner]
US 20170123991A1 · Sela · 2017 [cited by examiner]
US 20170322897A1 · Benisty et al. · 2017 [cited by applicant]
US 20180113615A1 · Park · 2018 [cited by applicant]
US 20180335963A1 · Simionescu · 2018 [cited by examiner]
US 20190035445A1 · Huang · 2019 [cited by applicant]
US 20190042146A1 · Wysoczanski et al. · 2019 [cited by applicant]
US 20190243571A1 · Narayanan · 2019 [cited by examiner]
US 20190278523A1 · Benisty · 2019 [cited by applicant]
US 20190294366A1 · Kawamura et al. · 2019 [cited by applicant]
US 20200004445A1 · Benisty · 2020 [cited by examiner]
US 20200151134A1 · Helmick et al. · 2020 [cited by applicant]
US 20200174819A1 · Dong · 2020 [cited by examiner]
US 20200409601A1 · Helmick et al. · 2020 [cited by applicant]
US 20210026780A1 · Ahmed et al. · 2021 [cited by applicant]
US 20210103445A1 · Schauer et al. · 2021 [cited by applicant]
US 20210182219A1 · Benisty · 2021 [cited by examiner]
US 20210208810A1 · Manohar · 2021 [cited by applicant]
US 20210247935A1 · Beygi et al. · 2021 [cited by applicant]
US 20220027292A1 · Gissin et al. · 2022 [cited by applicant]
US 20220035530A1 · Vikram Singh · 2022 [cited by applicant]
US 20220035564A1 · Vikram Singh et al. · 2022 [cited by applicant]
US 20220043570A1 · Richter et al. · 2022 [cited by applicant]
US 20220083269A1 · Sano et al. · 2022 [cited by applicant]
US 20220147276A1 · Watanabe · 2022 [cited by examiner]
US 20220156001A1 · Anandan et al. · 2022 [cited by applicant]
US 20220171572A1 · Gyllenskog · 2022 [cited by applicant]
US 20220197704A1 · Gibb et al. · 2022 [cited by applicant]
US 20220261183A1 · Horspool et al. · 2022 [cited by applicant]
US 20220311716A1 · Dutta · 2022 [cited by applicant]
US 20220357887A1 · Wu et al. · 2022 [cited by applicant]
US 20230004329A1 · Benisty · 2023 [cited by applicant]
US 20230079432A1 · Kawaguchi · 2023 [cited by applicant]
US 20230297246A1 · Nagai et al. · 2023 [cited by applicant]
US 20230333775A1 · Jain et al. · 2023 [cited by applicant]
US 20230376422A1 · Watanabe · 2023 [cited by applicant]
US 20240354021A1 · Xu et al. · 2024 [cited by applicant]
CN 109542335A · 2019 [cited by applicant]
CN 112214435A · 2021 [cited by applicant]
DE 102020108303A1 · 2020 [cited by applicant]
EP 3945407A1 · 2022 [cited by applicant]
WO 2022143774A1 · 2022 [cited by applicant]
NVM Express Base Specification Revision 1.4, Jun. 10, 2019 (Year: 2019). [cited by examiner]
Bhimani, Janki et al., “Fine-Grained Control of Concurrency Within KV-SSDs,” Proceedings of the 14th ACM International Conference on Systems and Storage, Jun. 2021, 12 pages. [cited by applicant]
Borello, Gabriele, “Towards Computational Storage,” Master's Degree Thesis, Politecnico Di Torino, Oct. 2021, 101 pages. [cited by applicant]
Marks, Kevin, “An NVM Express Tutorial,” Flash Memory Summit, 2013, 92 pages. [cited by applicant]
Office Action for U.S. Appl. No. 18/227,897, mailed Sep. 16, 2024. [cited by applicant]
Office Action for U.S. Appl. No. 18/227,902, mailed Sep. 6, 2024. [cited by applicant]
Final Office Action for U.S. Appl. No. 18/227,897, mailed Feb. 20, 2025. [cited by applicant]
Final Office Action for U.S. Appl. No. 18/227,902, mailed Apr. 18, 2025. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/227,902, mailed Aug. 4, 2025. [cited by applicant]
Office Action for U.S. Appl. No. 18/227,897, mailed Oct. 28, 2025. [cited by applicant]
Corrected Notice of Allowability for U.S. Appl. No. 18/227,902, mailed Nov. 19, 2025. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/227,897, mailed Apr. 17, 2026. [cited by applicant]