IP Library Granted Patent US 11,106,575
Granted Patent B2
US 11,106,575 · App. 16/585,101 · Granted Aug 31, 2021

Systems and methods for data storage in a memory system

Inventor: Nir Perry (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F12/0246G06F9/5016G06F12/0882G06F12/1425G06F13/1678G11C11/409
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,106,575
App. No.
16/585,101
Granted
Aug 31, 2021
Kind
B2
Abstract

A method includes receiving a first write command from a first data source and determining a first data type associated with the first data source. The method also includes allocating a first page of a memory block to the first data source. The method also writing data to the first page based on the first write command and setting, on the first page, a data type of the first page based on the first data type. The method also includes receiving a read command from one of a plurality of data sources. The method also includes determining a data type associated with the one of the plurality of data sources. The method also includes determining whether to perform the read operation on the first page based on the data type of the first page and the data type associated with the one of the plurality of data sources.

Claims (84)

1. A method for storing data in a memory system, the memory system comprising a non-volatile memory block and a controller, the method comprising:

the controller receiving a first write command from a first data source;

the controller determining a first data type associated with the first data source;

the controller allocating a first page of a memory block to the first data source;

during performance of a write operation to the first page:

an error correction code (ECC) engine of the controller writing data to the first page based on the first write command; and

the ECC engine setting, in one or more bits of the first page, a value that indicates a data type of the first page based on the first data type;

the controller receiving a read command to perform a read operation on the first page from one of a plurality of data sources, the plurality of data sources including the first data source;

the controller determining a data type associated with the one of the plurality of data sources; and

the ECC engine determining whether to perform the read operation on the first page based on the data type of the first page and the data type associated with the one of the plurality of data sources.

2. The method of claim 1 , wherein the controller determining whether to perform the read operation on the first page based on the data type of the first page and the data type associated with the one of the plurality of data sources includes the controller communicating the data type associated with the one of the plurality of data sources to the ECC engine, and the ECC engine determining whether the data type associated with the one of the plurality of data sources is the data type of the first page.

3. The method of claim 2 , further comprising, based on a determination that the data type associated with the one of the plurality of data sources is the data type of the first page, the ECC engine performing the read operation.

4. The method of claim 2 , further comprising, based on a determination that the data type associated with the one of the plurality of data sources is not the data type of the first page, the ECC engine not performing the read operation.

5. The method of claim 1 , wherein the one of the plurality of data sources includes the first data source and wherein the data type associated by the one of the plurality of data sources includes the first data type.

6. The method of claim 1 , wherein the data type associated with the one of the plurality of data sources includes a second data source different from the first data source and wherein the data type associated by the one of the plurality of data sources includes a second data type different from the first data type.

7. The method of claim 1 , further comprising:

the controller receiving a second write command from a second data source different from the first data source;

the controller determining a second data type associated with the second data source;

the controller allocating a second page of the memory block to the second data source; and

during performance of a write operating on the second page:

the controller writing data to the second page based on the second write command; and

the ECC engine setting, in one or more bits of the second page, a value that indicates a data type of the second page based on the second data type.

8. The method of claim 7 , further comprising:

the controller receiving a read command to perform a read operation on the second page from one of the plurality of data sources, the plurality of data sources including the second data source;

the controller determining a data type associated with the one of the plurality of data sources; an

the ECC engine determining whether to perform the read operation on the second page based on the data type of the second page and the data type associated with the one of the plurality of data sources.

9. The method of claim 1 , the controller comprising a host interface module configured to interface with the plurality of data sources, a plurality of page buffers each having an associated type field, and the ECC engine, the method further comprising:

a page buffer of the plurality of page buffers permitting or restricting a read from the page buffer based on the associated type field of the page buffer and a data type of a host requesting the read.

10. A controller, comprising:

a bus interface in communication with one or more memory blocks of a memory system; and

a processor comprising a control logic and an error correction code (ECC) engine;

the control logic configured to:

receive a first write command from a first data source;

determine a first data type associated with the first data source;

allocate a first page of a memory block of the one or more memory blocks to the first data source;

during performance of a write operation to the first page, the ECC engine configured to:

write data to the first page based on the first write command; and

set, in one or more bits of the first page, a value that indicates a data type of the first page based on the first data type;

the control logic further configured to:

receive a read command to perform a read operation on the first page from one of a plurality of data sources, the plurality of data sources including the first data source;

determine a data type associated with the one of the plurality of data sources; and

the ECC engine further configured to determine whether to perform the read operation on the first page based on the data type of the first page and the data type associated with the one of the plurality of data sources.

11. The controller of claim 10 , wherein the control logic is further configured to determine whether the data type associated with the one of the plurality of data sources is the data type of the first page.

12. The controller of claim 11 , wherein the ECC engine is further configured to, based on a determination that the data type associated with the one of the plurality of data sources is the data type of the first page, perform the read operation.

13. The controller of claim 11 , wherein the ECC engine is further configured to, based on a determination that the data type associated with the one of the plurality of data sources is not the data type of the first page, not perform the read operation.

14. The controller of claim 10 , wherein the one of the plurality of data sources includes the first data source and wherein the data type associated by the one of the plurality of data sources includes the first data type.

15. The controller of claim 10 , wherein the data type associated with the one of the plurality of data sources includes a second data source different from the first data source and wherein the data type associated by the one of the plurality of data sources includes a second data type different from the first data type.

16. The controller of claim 10 ,

wherein the control logic is further configured to:

receive a second write command from a second data source different from the first data source;

determine a second data type associated with the second data source;

allocate a second page of the memory block to the second data source; and

wherein the ECC engine is further configured to, during performance of a write operating on the second page:

write data to the second page based on the second write command; and

set, in one or more bits of the second page, a value that indicates a data type of the second page based on the second data type.

17. The controller of claim 16 ,

wherein the control logic is further configured to:

receive a read command to perform a read operation on the second page from one of the plurality of data sources, the plurality of data sources including the second data source;

determine a data type associated with the one of the plurality of data sources; and

wherein the ECC engine is further configured to determine whether to perform the read operation on the second page based on the data type of the second page and the data type associated with the one of the plurality of data sources.

18. A system for storing data in a memory system, the system comprising:

at least one memory block;

controller means in communication with the at least one memory block; and

error correction code (ECC) means;

the controller means configured for:

receiving a first write command from a first data source;

determining a first data type associated with the first data source;

allocating a first page of the at least one memory block to the first data source;

the ECC means configured for, during performance of a write operation to the first page:

writing data to the first page based on the first write command; and

setting, in one or more bits of the first page, a value that indicates a data type of the first page based on the first data type;

the controller means further configured for:

receiving a second write command from a second data source different from the first data source;

determining a second data type associated with the second data source; and

allocating a second page of the at least one memory block to the second data source; and

the ECC means further configured for, during performance of a write operating on the second page:

writing data to the second page based on the second write command; and

setting, in one or more bits of on the second page, a value that indicates a data type of the second page based on the second data type.

19. The system of claim 18 ,

wherein the controller means is further configured for:

receiving a read command to perform a read operation on one of the first page and the second page from one of a plurality of data sources, the plurality of data sources including at least the first data source and the second data source;

determining a data type associated with the one of the plurality of data sources; and

wherein the ECC means is further configured for, determining whether to perform the read operation on the one of the first page and the second page based on the data type of the one of the first page and the second page and the data type associated with the one of the plurality of data sources.

20. The system of claim 18 , wherein the first data source includes a first host and the second data source includes a second host.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 051717 FRAME 0716 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0385 →
SECURITY INTEREST Recorded Feb 4, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 051717/0716 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2019
From: PERRY, NIR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 050511/0499 →