IP Library Granted Patent US 12,639,010
Granted Patent B2
US 12,639,010 · App. 18/736,656 · Granted May 26, 2026

Dynamic NAND status timing adjustments with closed loop feedback

Inventors: Jacob Schmier (Gilbert, AZ); Sean Mccutcheon (San Jose, CA)
Assignee: SANDISK TECHNOLOGIES, INC.
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,639,010
App. No.
18/736,656
Granted
May 26, 2026
Kind
B2
Abstract

A storage device may dynamically adjust a delay time associated with status polling of a memory device. The storage device includes a memory device to store data and to operate on the data based on commands received from the storage device. A controller on the storage device sends a command to the memory device for the memory device to operate on the data based on the command and sends a poll to the memory device to determine when the memory device has completed processing the command. The controller may record a status poll count for the command in a buffer and compute a running average value for status poll counts in the buffer. The controller compares the running average value with a target window and adjusts a delay time between sending another command and another poll based on based on the comparison.

Claims (28)

1 . A storage device to dynamically adjust a delay time associated with status polling of a memory device, the storage device comprises:

the memory device to store data and to operate on the data based on commands received from the storage device; and

a controller to send a command to the memory device for the memory device to operate on the data based on the command, send a poll to the memory device to determine when the memory device has completed processing the command; and adjust the delay time between an upcoming command and another poll based on an adjustment mechanism associated with a status poll count,

wherein the adjustment mechanism uses a proportional-integral-derivative controller that uses the status poll count to calculate an input status delay time, wherein a sum of input status delay times is inputted to the proportional-integral-derivative controller and an output from the proportional-integral-derivative controller is used to set a new delay time.

2 . The storage device of claim 1 , wherein the status poll count is a number of polls issued prior to receiving a non-busy status from the memory device and the adjustment mechanism includes recording the status poll count for the command in a buffer.

3 . The storage device of claim 2 , wherein a scaling factor is applied to the status poll count stored in the buffer.

4 . The storage device of claim 2 , wherein the adjustment mechanism further comprises computing a running average value for status poll counts in buffer, comparing the running average value with a target window, and adjusting the delay time based on a comparison.

5 . The storage device of claim 4 , wherein when the running average value is below the target window, the controller increases the delay time and if the running average value is above the target window, the controller decreases the delay time.

6 . The storage device of claim 4 , wherein the target window identifies a preset range for the running average value in the buffer.

7 . The storage device of claim 1 , wherein when the delay time is adjusted, the controller enters a cooldown period and does not adjust the delay time during the cooldown period.

8 . The storage device of claim 1 , wherein the status poll count for a command type is stored in a buffer associated with at least one of that command type, die, and page.

9 . A method for dynamically adjusting a delay time associated with status polling of a memory device by a storage device, the storage device includes a controller to perform the method comprising:

sending a command to the memory device for the memory device to operate on data based on the command;

sending a poll to the memory device to determine when the memory device has completed processing the command;

adjusting the delay time between an upcoming command and another poll based on an adjustment mechanism associated with a status poll count; and

using a proportional-integral-derivative controller that uses the status poll count to calculate an input status delay time, wherein a sum of input status delay times is inputted to the proportional-integral-derivative controller and an output from the proportional-integral- derivative controller is used to set a new delay time.

10 . The method of claim 9 , further comprising recording the status poll count for the command in a buffer.

11 . The method of claim 10 , further comprising applying a scaling factor to the status poll count stored in the buffer.

12 . The method of claim 10 , further comprising computing a running average value for status poll counts in buffer, comparing the running average value with a target window, and adjusting the delay time based on a comparison.

13 . The method of claim 12 , further comprising increasing the delay time when the running average value is below the target window and decreasing the delay time when the running average value is above the target window.

14 . The method of claim 9 , further comprising entering a cooldown period when the delay time is adjusted, wherein the delay time is not adjusted during the cooldown period.

15 . The method of claim 9 , further comprising storing the status poll count for a command type in a buffer associated with at least one of that command type, die and page.

16 . A storage device to dynamically adjust a delay time associated with status polling of a memory device, the storage device comprises:

the memory device to store data and to operate on the data based on commands received from the storage device; and

a controller to send a command to the memory device for the memory device to operate on the data based on the command, send a poll to the memory device to determine when the memory device has completed processing the command; record a status poll count for the command in a buffer, compute a running average value for status poll counts in the buffer, compare the running average value with a target window, and adjust the delay time between sending another command and another poll based on based on a comparison,

wherein an adjustment mechanism uses a proportional-integral-derivative controller that uses the status poll count to calculate an input status delay time, wherein a sum of input status delay times is inputted to the proportional-integral-derivative controller and an output from the proportional-integral-derivative controller is used to set a new delay time.

17 . The storage device of claim 16 , wherein when the running average value is below the target window, the controller increases the delay time and if the running average value is above the target window, the controller decreases the delay time.

18 . The storage device of claim 16 , wherein when the delay time is adjusted, the controller enters a cooldown period and does not adjust the delay time during the cooldown period.

Assignments (4)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2024
From: SCHMIER, JACOB; MCCUTCHEON, SEAN
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 067651/0767 →
Continuity (1)
Related Publication 20250377830A1 · Dec 11, 2025
References Cited (6)
US 10664168B2 · Canepa · 2020 [cited by applicant]
US 10949115B2 · Sun · 2021 [cited by applicant]
US 11347552B2 · Krasner · 2022 [cited by applicant]
US 11500543B2 · Elliott · 2022 [cited by applicant]
US 20180341403A1 · Canepa · 2018 [cited by examiner]
US 20230098366A1 · Zhu · 2023 [cited by examiner]