IP Library › Granted Patent US 12,602,326
Granted Patent B2
US 12,602,326 · App. 18/328,774 · Granted Apr 14, 2026

Storage device and operation method thereof

Inventors: Seon Ju Lee (Gyeonggi-do, KR); Jeong Sun Park (Gyeonggi-do, KR)
Assignee: SK hynix Inc.
G06F12/0855G06F2212/1016G06F2212/45
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,602,326
App. No.
18/328,774
Granted
Apr 14, 2026
Kind
B2
Abstract

Disclosed is an operation method of a storage device, which is for providing an optimal program/read efficiency in the storage device. The operation method includes: receiving program commands that request data write and data to be written from at least one first outside; storing sequentially the program commands in a command queue in the order in which they are received and storing in a temporary buffer, the data to be written; selecting one program command from among the program commands stored in the command queue; determining whether the selected program command is a continuous data program command or a discontinuous data program command; and allocating, if the selected program command is the continuous data program command, data to be written of the continuous data program command to an entire area of a stripe that is a memory area formed over a plurality of dies included in a second outside.

Claims (61)

1 . An operation method of a memory controller, the operation method comprising:

receiving, from at least one external device, program commands and corresponding write data;

sequentially storing the program commands in a command queue in an order, in which the program commands are received, and storing the write data in a temporary buffer;

selecting a program command from among the program commands stored in the command queue;

determining whether the selected program command is a continuous program command or a discontinuous program command; and

allocating, if the selected program command is the continuous program command, the write data of the selected program command to an entire area of a stripe that is a memory area formed over a plurality of dies included in a memory device,

wherein the determining comprises determining that the selected program command is the continuous program command when logical addresses for writing the write data of the selected program command are consecutive and a size of the write data of the selected program command is greater than or equal to a size of the stripe, and

wherein the allocating comprises:

receiving a continuous program command allocated to the entire area of the stripe while discontinuous data has already been allocated to a portion of a stripe,

canceling the allocation of the discontinuous data;

allocating a continuous data of the continuous program command to the entire area of the stripe;

subtracting a continuous data parameter indicating a data size of the selected program command by the size of the stripe; and

determining again whether the selected program command is the continuous program command.

2 . The operation method of claim 1 , wherein the size of the stripe is determined by multiplying a number of the dies, a number of planes included in each of the dies and a size of a page.

3 . The operation method of claim 1 , wherein the storing comprises storing the program commands for each physical function (PF) in the command queue corresponding to each PF.

4 . The operation method of claim 3 , wherein the storing comprises merging, when logical addresses for writing the write data of the program commands for one PF are consecutive, the program commands for the one PF into one program command and storing the merged program command in the command queue corresponding to the one PF.

5 . The operation method of claim 3 , wherein the selecting comprises selecting a continuous program command from among the program commands at a foremost position in the command queue for each PF.

6 . The operation method of claim 3 , wherein the selecting comprises selecting a program command having an earliest reception time from among the program commands at a foremost position in the command queue for each PF.

7 . The operation method of claim 1 , wherein the selecting comprises selecting a program command at a foremost position in the command queue.

8 . The operation method of claim 1 , wherein the allocating comprises:

canceling, when write data of a previously selected program command has already been allocated to a portion of the stripe and the allocated data is a timeout data whose predetermined timeout period has lapsed, allocating the write data of the selected program command to the entire area of the stripe; and

selecting one discontinuous program command from among the program commands stored in the command queue in order to allocate, to an empty portion within the stripe, write data of the selected discontinuous program command.

9 . The operation method of claim 1 , wherein the allocating comprises updating, when only a portion of the write data of the continuous program command is allocated to the entire area of the stripe, the size of the write data of the continuous program command by subtracting a size of the stripe from the size of the write data of the continuous program command.

10 . The operation method of claim 1 , further comprising allocating, if the selected program command is a discontinuous program command, write data of the selected program command to the stripe.

11 . The operation method of claim 10 , wherein the allocating the write data of the selected program command to the stripe comprises:

allocating the write data of the selected program command to an empty area of the stripe when a size of the empty area of the stripe is greater than or equal to a size of the write data of the selected program command; and

allocating a portion of the write data of the selected program command to the empty area of the stripe when the size of the empty area of the stripe is less than the size of the write data of the selected program command.

12 . The operation method of claim 11 , wherein the allocating the write data of the selected program command to the stripe further comprises:

selecting, when the size of the empty area of the stripe is greater than the size of the write data of the selected program command, additionally one program command from among the program commands stored in the command queue in order to allocate the write data of the additionally selected program command to the empty area of the stripe; and

updating, when the size of the empty area of the stripe is less than or equal to the size of the write data of the selected program command, the size of the write data of the selected program command by subtracting a size of the allocated portion of the write data of the selected program command from the size of the write data of the selected program command.

13 . A storage device comprising:

a memory device including a plurality of dies; and

a memory controller configured to:

perform communication with at least one external device,

generate signal for controlling operations of the memory device,

receive, from the at least one external device, program commands and corresponding write data,

store sequentially the program commands in a command queue in an order, in which the program commands are received,

store the write data in a temporary buffer,

select a program command from among the program commands stored in the command queue,

determine whether the selected program command is a continuous program command or a discontinuous program command, and

allocate, if the selected program command is a continuous program command, the write data of the selected program command to an entire area of a stripe that is a memory area formed over the plurality of dies,

wherein the memory controller determines that the selected program command is the continuous program command when logical addresses for writing the write data of the selected program command are consecutive and a size of the write data of the selected program command is greater than or equal to a size of the stripe,

wherein the memory controller is configured to:

receiving a continuous program command allocated to the entire area of the stripe while discontinuous data has already been allocated to a portion of a stripe,

cancelling the allocation of the discontinuous data;

allocating a continuous data of the continuous program command to the entire area of the stripe;

subtracting a continuous data parameter indicating a data size of the selected program command by the size of the stripe; and

determining again whether the selected program command is the continuous program command.

14 . The storage device of claim 13 ,

wherein the size of the stripe is determined by multiplying a number of the dies, a number of planes included in each of the dies and a size of a page.

15 . The storage device of claim 14 ,

wherein the memory controller stores the program commands by storing the program commands for each physical function (PF) in the command queue corresponding to each PF, and

wherein the memory controller selects a program command having an earliest reception time from among the program commands at a foremost position in the command queue for each PF.

16 . The storage device of claim 15 ,

wherein the memory controller is further configured to allocate, when the selected program command is the discontinuous program command, the write data of the selected program command to the stripe by:

allocating the write data of the selected program command to an empty area of the stripe when a size of the empty area of the stripe is greater than or equal to a size of the write data of the selected program command, and

allocating a portion of the write data of the selected program command to the empty area of the stripe when the size of the empty area of the stripe is less than the size of the write data of the discontinuous program command.

17 . The storage device of claim 16 , wherein, when write data of a previously selected program command has already been allocated to a portion of the stripe, the allocated data is a timeout data whose predetermined timeout period has lapsed, and the selected program command is the continuous program command, the memory controller further configured to:

cancel allocating of the write data of the selected program command to the entire area of the stripe, and

select one discontinuous program command from among the program commands stored in the command queue in order to allocate, to an empty portion within the stripe, the write data of the selected discontinuous program command.

18 . The storage device of claim 14 , wherein the memory controller selects the program command by selecting a program command at a foremost position in the command queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2023
From: LEE, SEON JU; PARK, JEONG SUN
To: SK HYNIX INC.
Reel/Frame 063851/0187 →
Priority Claims (1)
KR 10-2023-0001487 · Jan 5, 2023 · national
Continuity (1)
Related Publication 20240232087A1 · Jul 11, 2024
References Cited (10)
US 10175891B1 · Malwankar · 2019 [cited by examiner]
US 11586385B1 · Lercari · 2023 [cited by examiner]
US 11789819B1 · Simionescu · 2023 [cited by examiner]
US 20160170639A1 · Velayudhan · 2016 [cited by examiner]
US 20170109096A1 · Jean · 2017 [cited by examiner]
US 20180011642A1 · Koseki · 2018 [cited by examiner]
US 20190188156A1 · Sampathkumar · 2019 [cited by examiner]
US 20200042470A1 · Lee · 2020 [cited by examiner]
KR 101014599B1 · 2011 [cited by applicant]
KR 1020130075135A · 2013 [cited by applicant]