IP Library › Granted Patent US 12,455,704
Granted Patent B2
US 12,455,704 · App. 18/461,603 · Granted Oct 28, 2025

Memory system and method of controlling nonvolatile memory

Inventor: Shinichi Kanno (Ota, JP)
Assignee: Kioxia Corporation
G06F3/0659G06F3/0604G06F3/0679
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,455,704
App. No.
18/461,603
Granted
Oct 28, 2025
Kind
B2
Abstract

According to one embodiment, a memory system includes a nonvolatile memory including dies, a controller, and a first queue, a second queue, and a command buffer provided for each die. In response to a read command to be executed being stored in the command buffer corresponding to a first die, the controller determines whether or not a next read command needs to be issued. In response to determining that the next read command needs to be issued, the controller identifies a second die in which second data subsequent to first data corresponding to the read command to be executed is stored, and stores a read command to read the second data in the second queue corresponding to the second die.

Claims (72)

1 . A memory system comprising:

a nonvolatile memory including a plurality of dies;

a controller configured to control the plurality of dies;

a first queue provided for each of the plurality of dies, the first queue being a queue for storing a single read command associated with a read request from a host, or a leading read command of a plurality of read commands associated with a read request from the host;

a second queue provided for each of the plurality of dies, the second queue being a queue for storing any subsequent read command of the plurality of read commands; and

a command buffer provided for each of the plurality of dies, the command buffer being a buffer for storing a read command to be executed that is fetched from a queue selected from the first queue and the second queue, wherein

the controller is further configured to:

in response to the read command to be executed being stored in a first command buffer, the first command buffer being the command buffer corresponding to a first die of the plurality of dies, determine whether or not a next read command subsequent to the read command to be executed needs to be issued, based on whether or not the read command to be executed is any other read command except for the single read command and a last read command of the plurality of read commands; and

in response to determining that the next read command needs to be issued:

refer to a logical-to-physical address translation table and identify a second die of the plurality of dies in which second data subsequent to first data requested to be read by the read command to be executed is stored, and a length of the second data stored in the second die;

generate a read command to read the second data; and

execute a process of transmitting the read command to be executed to the first die, and a process of storing the generated read command in the second queue corresponding to the second die.

2 . The memory system of claim 1 , wherein

the controller is further configured to:

read the first data from a page buffer of the first die after completion of reading of the first data to the page buffer of the first die; and

read the second data from a page buffer of the second die after completion of both the reading of the first data to the page buffer of the first die and reading of the second data to the page buffer of the second die.

3 . The memory system of claim 2 , wherein

the controller is further configured to:

when the reading of the second data to the page buffer of the second die is completed while the reading of the first data to the page buffer of the first die has not been completed, wait until the reading of the first data to the page buffer of the first die is complete without reading the second data from the page buffer of the second die; and

execute a process of reading the first data from the page buffer of the first die and a process of reading the second data from the page buffer of the second die after completion of the reading of the first data to the page buffer of the first die.

4 . The memory system of claim 1 , wherein

the controller is further configured to:

when read commands are stored in both the first queue and the second queue corresponding to any one of the plurality of dies, select the second queue with priority over the first queue, and fetch the read command stored in the second queue as the read command to be executed.

5 . The memory system of claim 2 , wherein

the controller is further configured to:

in response to completion of the reading of the first data to the page buffer of the first die, allocate a first read buffer to the first die, and transfer the first data from the page buffer of the first die to the first read buffer; and

in response to completion of the reading of the first data to the page buffer of the first die:

determine whether or not the first read buffer is already allocated to the first die; and

when the first read buffer is already allocated to the first die, allocate a second read buffer to the second die, and transfer the second data from the page buffer of the second die to the second read buffer.

6 . The memory system of claim 5 , wherein

the controller is further configured to:

when the first read buffer is not yet allocated to the first die, allocate the second read buffer to the second die after the first read buffer is allocated to the first die.

7 . The memory system of claim 1 , wherein

the controller is further configured to:

in response to determining that the next read command needs to be issued, execute a process of identifying the second die in which the second data is stored and the length of the second data, and a process of calculating location information indicating a location on a memory of the host to which the second data is to be transferred.

8 . A method of controlling a nonvolatile memory including a plurality of dies, the method comprising:

managing a first queue provided for each of the plurality of dies;

managing a second queue provided for each of the plurality of dies;

managing a command buffer provided for each of the plurality of dies;

storing, in the first queue provided for each of the plurality of dies, a single read command associated with a read request from a host, or a leading read command of a plurality of read commands associated with a read request from the host;

storing, in the second queue provided for each of the plurality of dies, any subsequent read command of the plurality of read commands;

storing, in the command buffer provided for each of the plurality of dies, a read command to be executed that is fetched from a queue selected from the first queue and the second queue;

determining that the read command to be executed is stored in a first command buffer, the first command buffer being the command buffer corresponding to a first die of the plurality of dies;

in response to determining that the read command to be executed is stored in the first command buffer, determining whether or not a next read command subsequent to the read command to be executed needs to be issued, based on whether or not the read command to be executed is any other read command except for the single read command and a last read command of the plurality of read commands;

determining that the next read command needs to be issued; and

in response to determining that the next read command needs to be issued:

referring to a logical-to-physical address translation table and identifying a second die of the plurality of dies in which second data subsequent to first data requested to be read by the read command to be executed is stored, and a length of the second data stored in the second die;

generating a read command to read the second data; and

executing a process of transmitting the read command to be executed to the first die, and a process of storing the generated read command in the second queue corresponding to the second die.

9 . The method of claim 8 , further comprising:

reading the first data from a page buffer of the first die after completion of reading of the first data to the page buffer of the first die; and

reading the second data from a page buffer of the second die after completion of both the reading of the first data to the page buffer of the first die and reading of the second data to the page buffer of the second die.

10 . The method of claim 9 , further comprising:

determining that the reading of the second data to the page buffer of the second die is completed while the reading of the first data to the page buffer of the first die has not been completed;

in response to determining that the reading of the second data to the page buffer of the second die is completed while the reading of the first data to the page buffer of the first die has not been completed, waiting until the reading of the first data to the page buffer of the first die is complete without reading the second data from the page buffer of the second die; and

executing a process of reading the first data from the page buffer of the first die and a process of reading the second data from the page buffer of the second die after completion of the reading of the first data to the page buffer of the first die.

11 . The method of claim 8 , further comprising:

determining that read commands are stored in both the first queue and the second queue corresponding to any one of the plurality of dies;

in response to determining that the read commands are stored in both the first queue and the second queue corresponding to any one of the plurality of dies, selecting the second queue with priority over the first queue, and fetching the read command stored in the second queue as the read command to be executed.

12 . The method of claim 9 , further comprising:

determining completion of the reading of the first data to the page buffer of the first die;

in response to determining the completion of the reading of the first data to the page buffer of the first die, allocating a first read buffer to the first die, and transferring the first data from the page buffer of the first die to the first read buffer;

determining completion of the reading of the second data to the page buffer of the second die; and

in response to determining the completion of the reading of the second data to the page buffer of the second die, determining whether or not the first read buffer is already allocated to the first die.

13 . The method of claim 12 , further comprising:

determining that the first read buffer is not yet allocated to the first die; and

in response to determining that the first read buffer is not yet allocated to the first die, allocating the second read buffer to the second die after the first read buffer is allocated to the first die.

14 . The method of claim 8 , further comprising:

executing, in response to determining that the next read command needs to be issued, a process of identifying the second die in which the second data is stored and the length of the second data, and a process of calculating location information indicating a location on a memory of the host to which the second data is to be transferred.

15 . The method of claim 12 , further comprising:

determining that the first read buffer is already allocated to the first die; and

in response to determining that the first read buffer is already allocated to the first die, allocating a second read buffer to the second die and transferring the second data from the page buffer of the second die to the second read buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2023
From: KANNO, SHINICHI
To: KIOXIA CORPORATION
Reel/Frame 064806/0227 →
Priority Claims (1)
JP 2022-202322 · Dec 19, 2022 · national
Continuity (1)
Related Publication 20240201904A1 · Jun 20, 2024
References Cited (6)
US 10338846B2 · Nimmagadda · 2019 [cited by applicant]
US 11409436B2 · Bavishi et al. · 2022 [cited by applicant]
US 20070005922A1 · Swaminathan et al. · 2007 [cited by applicant]
US 20160162186A1 · Kashyap · 2016 [cited by examiner]
US 20200089537A1 · Bahirat et al. · 2020 [cited by applicant]
US 20210303206A1 · Saxena et al. · 2021 [cited by applicant]