IP Library Granted Patent US 12,554,659
Granted Patent B2
US 12,554,659 · App. 18/662,097 · Granted Feb 17, 2026

Storage controller managing completion timing, and operating method thereof

Inventors: Sangmuk Hwang (Jeonju-si, KR); Jaegeun Park (Suwon-si, KR); Hojun Shim (Seongnam-si, KR); Byungchul Yoo (Seongnam-si, KR)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F13/1642G06F13/161G06F13/1689G06F13/28
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,554,659
App. No.
18/662,097
Filed
May 13, 2024
Granted
Feb 17, 2026
Kind
B2
Examiner
RIGOL, YAIMA
Art Unit
2135
USPC
711/154
Abstract

A storage controller includes a command manager and a direct memory access (DMA) engine. The command manager receives a first submission queue doorbell from an external device, fetches a first command including a first latency from the external device in response to the first submission queue doorbell, and determines a first timing to write a first completion into the external device based on the first latency, the first completion indicating that the first command is completely processed. The DMA engine receives a request signal requesting processing of the first command from the command manager, transfer data, which the first command requests, based on a DMA transfer in response to the request signal, and outputs a complete signal, which indicates that the first command is completely processed, to the command manager.

Claims (58)

1 . A storage controller comprising:

a command manager configured to receive a first submission queue doorbell from an external device, to fetch a first command including a first latency from the external device in response to the first submission queue doorbell, and to determine a first timing to write a first completion into the external device by adding a time period corresponding to the first latency to a time point at which the first command is fetched, the first completion indicating that the first command is completely processed; and

a direct memory access (DMA) engine configured to receive a request signal requesting processing of the first command from the command manager, to transfer data, which the first command requests, based on a DMA transfer in response to the request signal, and to output a complete signal, which indicates that the first command is completely processed, to the command manager,

wherein the command manager writes the first completion based on the complete signal from the DMA engine and based on the first timing.

2 . The storage controller of claim 1 , wherein the command manager includes:

a latency calculator configured to calculate a time point to write the first completion into a completion queue based on the first latency; and

a timing controller configured to determine the first timing at which to write the first completion into the completion queue based on the calculated time point.

3 . The storage controller of claim 1 , wherein the command manager is configured to:

receive a second submission queue doorbell from the external device;

fetch a second command including a second latency from the external device in response to the second submission queue doorbell; and

determine a second timing to write a second completion into the external device based on the second latency, the second completion indicating that the second command is completely processed.

4 . The storage controller of claim 3 , wherein the second timing to write the second completion is prior to the first timing to write the first completion, and

the first latency includes a first interval latency indicating a time period from a time point at which the second completion is written to a time point at which the first completion is to be written.

5 . The storage controller of claim 3 , wherein the first latency includes a first processing latency indicating a time period from the time point at which the first command is fetched to a time point at which the first completion is to be written into a completion queue,

the second latency includes a second processing latency indicating a time period from a time point at which the second command is fetched to a time point at which the second completion is to be written into the completion queue, and

the command manager is configured to determine an order of processing the first command and the second command, based on the first processing latency and the second processing latency.

6 . The storage controller of claim 1 , wherein the DMA engine stores data into a nonvolatile memory device or reads data stored in the nonvolatile memory device, without a control of the external device.

7 . A storage device comprising:

a nonvolatile memory device; and

a storage controller including:

a command manager configured to receive a first submission queue doorbell from an external device, to fetch a first command including a first latency from the external device in response to the first submission queue doorbell, and to determine a first timing to write a first completion into the external device by adding a time period corresponding to the first latency to a time point at which the first command is fetched, the first completion indicating that the first command is completely processed; and

a direct memory access (DMA) engine configured to receive a request signal requesting processing of the first command from the command manager, to transfer data, which the first command requests, based on a DMA transfer in response to the request signal, and to output a complete signal, which indicates that the first command is completely processed, to the command manager,

wherein the command manager writes the first completion based on the complete signal from the DMA engine and based on the first timing.

8 . The storage device of claim 7 , wherein the command manager includes:

a latency calculator configured to calculate a time point to write the first completion into a completion queue based on the first latency; and

a timing controller configured to determine the first timing at which to write the first completion into the completion queue based on the calculated time point.

9 . The storage device of claim 7 , wherein the command manager is configured to:

receive a second submission queue doorbell from the external device;

fetch a second command including a second latency from the external device in response to the second submission queue doorbell; and

determine a second timing to write a second completion into the external device based on the second latency, the second completion indicating that the second command is completely processed.

10 . The storage device of claim 9 , wherein the second timing to write the second completion is prior to the first timing to write the first completion, and

the first latency includes a first interval latency indicating a time period from a time point at which the second completion is written to a time point at which the first completion is to be written.

11 . The storage device of claim 9 , wherein the first latency includes a first processing latency indicating a time period from the time point at which the first command is fetched to a time point at which the first completion is to be written into a completion queue,

the second latency includes a second processing latency indicating a time period from a time point at which the second command is fetched to a time point at which the second completion is to be written into the completion queue, and

the command manager is configured to determine an order of processing the first command and the second command, based on the first processing latency and the second processing latency.

12 . The storage device of claim 7 , wherein the DMA engine stores data into the nonvolatile memory device or reads data stored in the nonvolatile memory device, without a control of the external device.

13 . The storage device of claim 7 , wherein the storage controller communicates with the external device through a non-volatile memory express (NVMe) interface.

14 . A storage system comprising:

a host device;

a nonvolatile memory device; and

a storage controller including:

a command manager configured to receive a first submission queue doorbell from the host device, to fetch a first command including a first latency from the host device in response to the first submission queue doorbell, and to determine a first timing to write a first completion into the host device by adding a time period corresponding to the first latency to a time point at which the first command is fetched, the first completion indicating that the first command is completely processed; and

a direct memory access (DMA) engine configured to receive a request signal requesting processing of the first command from the command manager, to transfer data, which the first command requests, based on a DMA transfer in response to the request signal, and to output a complete signal, which indicates that the first command is completely processed, to the command manager,

wherein the command manager writes the first completion based on the complete signal from the DMA engine and based on the first timing.

15 . The storage system of claim 14 , wherein the command manager includes:

a latency calculator configured to calculate a time point to write the first completion into a completion queue based on the first latency; and

a timing controller configured to determine the first timing at which to write the first completion into the completion queue based on the calculated time point.

16 . The storage system of claim 14 , wherein the command manager is configured to:

receive a second submission queue doorbell from the host device;

fetch a second command including a second latency from the host device in response to the second submission queue doorbell; and

determine a second timing to write a second completion into the host device based on the second latency, the second completion indicating that the second command is completely processed.

17 . The storage system of claim 16 , wherein the second timing to write the second completion is prior to the first timing to write the first completion, and

the first latency includes a first interval latency indicating a time period from a time point at which the second completion is written to a time point at which the first completion is to be written.

18 . The storage system of claim 16 , wherein the first latency includes a first processing latency indicating a time period from the time point at which the first command is fetched to a time point at which the first completion is to be written into a completion queue,

the second latency includes a second processing latency indicating a time period from a time point at which the second command is fetched to a time point at which the second completion is to be written into the completion queue, and

the command manager is configured to determine an order of processing the first command and the second command, based on the first processing latency and the second processing latency.

19 . The storage system of claim 14 , wherein the DMA engine stores data into the nonvolatile memory device or reads data stored in the nonvolatile memory device, without a control of the host device.

20 . The storage system of claim 14 , wherein the storage controller communicates with the host device through a non-volatile memory express (NVMe) interface.

Priority Claims (1)
KR 10-2019-0172650 · Dec 23, 2019 · national
Continuity (3)
Continuation 17751798 · May 24, 2022
Division 16983471 · Aug 3, 2020
Related Publication 20240296131A1 · Sep 5, 2024
References Cited (40)
US 7320050B2 · Kobayashi et al. · 2008 [cited by applicant]
US 8341374B2 · Kwon et al. · 2012 [cited by applicant]
US 8615640B2 · Jibbe et al. · 2013 [cited by applicant]
US 8756369B2 · McKean et al. · 2014 [cited by applicant]
US 9037827B2 · Colgrove et al. · 2015 [cited by applicant]
US 9122401B2 · Zaltsman et al. · 2015 [cited by applicant]
US 9256384B2 · Bert et al. · 2016 [cited by applicant]
US 9298376B2 · Colgrove et al. · 2016 [cited by applicant]
US 10002087B1 · Rajadnya · 2018 [cited by examiner]
US 10051470B2 · Abraham et al. · 2018 [cited by applicant]
US 10387081B2 · Benisty · 2019 [cited by applicant]
US 10445021B2 · Kim · 2019 [cited by applicant]
US 10452278B2 · Benisty · 2019 [cited by applicant]
US 10635355B1 · Helmick et al. · 2020 [cited by applicant]
US 10817182B2 · Benisty · 2020 [cited by applicant]
US 10895905B2 · Yi et al. · 2021 [cited by applicant]
US 20130135816A1 · Huang · 2013 [cited by applicant]
US 20160132237A1 · Jeong · 2016 [cited by examiner]
US 20170075834A1 · Cha et al. · 2017 [cited by applicant]
US 20180005670A1 · Lee · 2018 [cited by examiner]
US 20180024949A1 · Nimmagadda · 2018 [cited by applicant]
US 20180150255A1 · Woo · 2018 [cited by examiner]
US 20180260347A1 · Benisty · 2018 [cited by applicant]
US 20180341410A1 · Benisty · 2018 [cited by applicant]
US 20190187774A1 · Yi et al. · 2019 [cited by applicant]
US 20190286561A1 · Lee et al. · 2019 [cited by applicant]
US 20200310682A1 · Benisty · 2020 [cited by applicant]
US 20210240641A1 · Benisty · 2021 [cited by examiner]
CN 1648843A · 2005 [cited by applicant]
CN 103970688A · 2014 [cited by applicant]
CN 108549610A · 2018 [cited by applicant]
CN 109273034A · 2019 [cited by applicant]
CN 110088723A · 2019 [cited by applicant]
CN 110088724A · 2019 [cited by applicant]
CN 110275674A · 2019 [cited by applicant]
EP 3499377A1 · 2019 [cited by applicant]
KR 20190073055A · 2019 [cited by applicant]
KR 20190131012A · 2019 [cited by applicant]
WO 2018175060A1 · 2018 [cited by applicant]
WO 2018175065A1 · 2018 [cited by applicant]