IP Library › Granted Patent US 12,346,261
Granted Patent B2
US 12,346,261 · App. 18/353,862 · Granted Jul 1, 2025

Write buffer linking for easy cache reads

Inventors: Shay Benisty (Beer Sheva, IL); Judah Gamliel Hahn (Ofra, IL)
Assignee: Sandisk Technologies, Inc.
G06F12/0897G06F12/0246G06F12/10G06F3/0679G06F2212/1016
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,346,261
App. No.
18/353,862
Granted
Jul 1, 2025
Kind
B2
Abstract

The present disclosure generally relates to improved optimization of a cache lookup operation by structuring the write cache buffers differently using a link-list. Rather than executing a read command first and then executing a write command only after the read command is executed, this disclosure suggests reordering the command executions. A device waits before executing the read command giving the opportunity to obtain the overlap write command. The device then reorders the command execution and executes first the write command and then executes the read command by accessing the write cache instead of the NAND. When two write commands need to be executed consecutively, the link-list operation is used. The controller finds the relevant buffer in the cache that is needed and overwrites the buffer with the new data. The new data is then written to the cache without accessing the cache multiple times.

Claims (48)

1. A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

receive a read command for a first LBA, wherein the first LBA is a LBA in the memory device;

scan a submission queue (SQ) for write commands for the first LBA after receiving the read command for the first LBA;

retrieve a first write command for the first LBA from the SQ;

reorder the first write command and the read command;

execute the first write command to write the first LBA to cache and update an overlap table;

scan the SQ for write commands for the first LBA after executing the first write command;

retrieve a second write command from the SQ, wherein the second write command is for the first LBA and a second LBA:

execute the second write command by overwriting the first LBA in the cache and writing the second LBA to the cache and update the overlap table:

determine that an overlap exists by scanning the overlap table;

parse a pointer from the overlap table;

determine whether the pointer is not an exact pointer for the read command;

scan a link list table and fetch a next buffer, wherein the link list table is separate and distinct from the overlap table;

repeat the determining and scanning the link list table until finding the exact pointer; and

execute the read command by reading the first LBA from the cache instead of the memory device, wherein executing the read command occurs after executing the second write command and after the repeating.

2. The data storage device of claim 1 , wherein executing the first write command comprises:

allocating a first data buffer;

updating the overlap table; and

transferring data to the first data buffer.

3. The data storage device of claim 2 , wherein executing the first write command further comprises:

determining whether an additional buffer is needed;

allocating the additional buffer; and

linking the first data buffer to the additional buffer.

4. The data storage device of claim 3 , wherein linking the first data buffer to the additional buffer comprises adding a pointer in a header of the first data buffer, wherein the pointer points to the additional buffer.

5. The data storage device of claim 2 , wherein the overlap table comprises a pointer to the first data buffer.

6. The data storage device of claim 1 , wherein executing the read command further comprises:

issuing an overlap table lookup;

determining whether an overlap is detected;

search buffers in cache; and

read data from cache.

7. The data storage device of claim 6 , wherein executing the read command further comprises parsing a pointer from the overlap table to a first buffer.

8. The data storage device of claim 7 , wherein executing the read command further comprises:

fetching a first buffer associated with the pointer;

determining whether the first buffer comprises the data to be read;

fetch the next buffer; and

read the data from the next buffer.

9. The data storage device of claim 8 , wherein executing the read command further comprises retrieving a pointer to the next buffer from a heading in the first buffer.

10. The data storage device of claim 1 , wherein executing the first write command comprises:

allocating a first data buffer;

updating the overlap table with a pointer to the first data buffer for the first LBA; and

transferring data to the first data buffer.

11. The data storage device of claim 10 , wherein executing the second write command comprises transferring data to the first data buffer.

12. The data storage device of claim 11 , wherein the overlap table remains unchanged during the execution of the second write command.

13. The data storage device of claim 12 , wherein executing the second write command comprises writing the first LBA from the second write command to the memory device.

14. The data storage device of claim 1 , wherein executing the second write command results in at least a portion of data from the first write command remaining unchanged in one or more buffers.

15. The data storage device of claim 1 , wherein the first LBA from the first write command in cache is not written to the memory device.

Assignments (8)
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 Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2023
From: BENISTY, SHAY; HAHN, JUDAH GAMLIEL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064860/0732 →
Continuity (2)
Provisional Application 63421327 · Nov 1, 2022
Related Publication 20240143512A1 · May 2, 2024
References Cited (63)
US 6226715B1 · Van Der Wolf · 2001 [cited by examiner]
US 6490635B1 · Holmes · 2002 [cited by examiner]
US 7475321B2 · Gurumurthi · 2009 [cited by examiner]
US 8327187B1 · Metcalf · 2012 [cited by examiner]
US 8429359B1 · Desai · 2013 [cited by examiner]
US 8538919B1 · Nielsen · 2013 [cited by examiner]
US 8593678B2 · Ohishi · 2013 [cited by examiner]
US 8732409B2 · Van Der Wolf · 2014 [cited by examiner]
US 9075705B2 · Hikichi · 2015 [cited by examiner]
US 9092182B2 · Ohishi · 2015 [cited by examiner]
US 9344596B2 · Ohishi · 2016 [cited by examiner]
US 9424210B1 · Cope · 2016 [cited by examiner]
US 9632711B1 · Obr · 2017 [cited by examiner]
US 9645752B1 · Obr · 2017 [cited by examiner]
US 9800291B1 · Ben David · 2017 [cited by examiner]
US 9892803B2 · Reed · 2018 [cited by examiner]
US 11314635B1 · Volpe · 2022 [cited by examiner]
US 20020083277A1 · Sundararaman · 2002 [cited by examiner]
US 20040039880A1 · Pentkovski · 2004 [cited by examiner]
US 20040117414A1 · Braun · 2004 [cited by examiner]
US 20040148482A1 · Grundy · 2004 [cited by examiner]
US 20060005074A1 · Yanai · 2006 [cited by examiner]
US 20060143406A1 · Chrysos · 2006 [cited by examiner]
US 20060156155A1 · Gurumurthi · 2006 [cited by examiner]
US 20060179185A1 · Daly · 2006 [cited by examiner]
US 20080140902A1 · Townsend · 2008 [cited by examiner]
US 20080307020A1 · Ko · 2008 [cited by examiner]
US 20090150605A1 · Flynn · 2009 [cited by examiner]
US 20090210636A1 · Karamcheti · 2009 [cited by examiner]
US 20090254689A1 · Karamcheti · 2009 [cited by examiner]
US 20100269015A1 · Borchers · 2010 [cited by examiner]
US 20110161784A1 · Selinger · 2011 [cited by examiner]
US 20110236049A1 · Haga · 2011 [cited by examiner]
US 20120072702A1 · Pierson · 2012 [cited by examiner]
US 20130024423A1 · Doshi · 2013 [cited by examiner]
US 20130173554A1 · Ubukata · 2013 [cited by examiner]
US 20130212319A1 · Hida et al. · 2013 [cited by applicant]
US 20140095796A1 · Bell, Jr. · 2014 [cited by examiner]
US 20140195720A1 · Akella · 2014 [cited by examiner]
US 20140204106A1 · Hakura · 2014 [cited by examiner]
US 20140237147A1 · Joshi · 2014 [cited by examiner]
US 20140348101A1 · Wang · 2014 [cited by examiner]
US 20150186068A1 · Benisty et al. · 2015 [cited by applicant]
US 20150237139A1 · Chen · 2015 [cited by examiner]
US 20160196216A1 · Lee · 2016 [cited by examiner]
US 20160306822A1 · Waghulde · 2016 [cited by examiner]
US 20170132082A1 · Resch · 2017 [cited by examiner]
US 20170220463A1 · Malina · 2017 [cited by examiner]
US 20180157415A1 · Choi · 2018 [cited by examiner]
US 20180341602A1 · Venkataraman · 2018 [cited by examiner]
US 20190018599A1 · Katayama · 2019 [cited by examiner]
US 20190051324A1 · Zhao · 2019 [cited by examiner]
US 20190095133A1 · Grannaes · 2019 [cited by examiner]
US 20190129774A1 · Konan · 2019 [cited by examiner]
US 20190205244A1 · Smith · 2019 [cited by examiner]
US 20200174675A1 · Jia et al. · 2020 [cited by applicant]
US 20210191870A1 · Virani et al. · 2021 [cited by applicant]
US 20210223994A1 · Kanno · 2021 [cited by examiner]
US 20220197561A1 · Na · 2022 [cited by examiner]
US 20220334765A1 · Jung · 2022 [cited by examiner]
US 20220342550A1 · Benisty et al. · 2022 [cited by applicant]
Jim Handy, “the Cache Memory book: THE Authoritative reference on cache design”, 2nd Edition, 1998, pp. 2-22 (Year: 1998). [cited by examiner]
Microsoft, “Computer Dictionary”, 5th Edition, 2002, p. 81 (Year: 2002). [cited by examiner]