IP Library Granted Patent US 8,819,328
Granted Patent B2
US 8,819,328 · App. 12/982,833 · Granted Aug 26, 2014

Controller and method for performing background operations

Inventors: Paul A. Lassa (Cupertino, CA); David C. Brief (Modiin, IL)
Assignee: SanDisk Technologies Inc.
G06F9/4843G06F3/0613G06F3/0688G06F3/0659G06F12/0246
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 8,819,328
App. No.
12/982,833
Granted
Aug 26, 2014
Kind
B2
Abstract

The embodiments described herein provide a controller and method for performing a background commands or operations. In one embodiment, a controller is provided with interfaces through which to communicate with a host and a plurality of flash memory devices. The controller contains a processor operative to perform a foreground command received from the host, wherein the processor performs the foreground command to completion without interruption. The processor is also operative to perform a background commands or operations stored in the controller's memory, wherein the processor performs the background command until completed or preempted by a foreground command. If the background command is preempted, the processor can resume performing the background command at a later time until completed.

Claims (45)

1. A controller comprising:

a first interface through which to communicate with a host;

a second interface through which to communicate with a plurality of flash memory devices, wherein at least one of the flash memory devices comprises a three-dimensional memory, wherein the three-dimensional memory comprises a plurality of layers of memory cells stacked vertically above one another;

a memory configured to store a plurality of background commands, wherein the background commands are for operations to be performed in one or more of the plurality of flash memory devices;

a processor in communication with the first and second interfaces and the memory, wherein the processor is operative to:

perform a foreground command received from the host via the first interface, wherein the foreground command is for an operation to be performed in one or more of the plurality of flash memory devices, and wherein the processor performs the foreground command to completion without interruption;

perform a background command stored in the controller's memory, wherein the processor performs the background command until completed or preempted by a foreground command; and

if the background command is preempted, resume performing the background command at a later time; and

an error correction code module configured to correct errors in portions of a page of data as the portions are read from the plurality of flash memory devices instead of waiting for the entire page of data to be read from the plurality of flash memory devices before correcting the errors;

wherein a foreground command has a predetermined completion time, whereas a background command does not;

wherein at least one of the first and second interfaces comprises a NAND interface configured to transfer data using a NAND interface protocol; and

wherein the foreground command or the background command is a command to program a page of data to a block of memory in the plurality of flash memory devices, and wherein in response to a failure in programming the page of data to the block of memory in the plurality of flash memory devices, the processor is further configured to copy that page and preceding pages in the block to a replacement block in the plurality of flash memory devices.

2. The controller of claim 1 , wherein at least one of the background commands stored in the controller's memory is received from the host via the first interface.

3. The controller of claim 1 , wherein at least one of the background commands stored in the controller's memory is generated by the processor.

4. The controller of claim 1 , wherein a foreground command comprises a read command, a write command, or an erase command.

5. The controller of claim 1 , wherein a background command comprises one or more of the following commands: a copy command, a move command, a data scrambling command, a column replacement command, a command to handle write aborts, a command to handle program failures, a read scrubbing command, a wear leveling command, a bad block management command, a spare block management command, an error detection code (EDC) command, a status command, an encryption command, an error recovery command, and an address mapping command.

6. The controller of claim 1 , wherein the processor is further operative to provide independent command status indicators for foreground and background commands.

7. The controller of claim 1 , wherein the processor is further operative to arbitrate conflicting foreground and background commands according to a set of rules.

8. The controller of claim 1 , wherein the processor is further operative to apply a set of coherency rules for simultaneous foreground and background commands.

9. The controller of claim 1 , wherein the processor is further operative to execute foreground and background commands according to specified response times.

10. The controller of claim 1 further comprising one or more data buffers, and wherein the processor is further operative to manage use of the one or more data buffers for foreground and background commands.

11. The controller of claim 1 , wherein the processor is further operative to distinguish between foreground and background commands sent over a single-level Open NAND Flash Interface (ONFI) bus.

12. The controller of claim 1 , wherein the processor is further operative to provide independent flash-memory-device busy indicators for foreground and background commands.

13. The controller of claim 1 , wherein the first interface is configured to receive multiple read or write requests for individual pages and to simultaneously handle the multiple read or write requests.

14. A method for performing a background operation, the method comprising:

performing in a controller in communication with a host and at plurality of flash memory devices, wherein at least one of the flash memory devices comprises a three-dimensional memory, wherein the three-dimensional memory comprises a plurality of layers of memory cells stacked vertically above one another;

performing a foreground command received from the host, wherein the foreground command is for an operation to be performed in one or more of the plurality of flash memory devices, and wherein the controller performs the foreground command to completion without interruption;

performing a background command stored in the controller's memory, wherein the background command is for an operation to be performed in one or more of the plurality of flash memory devices, and wherein the controller performs the background command until completed or preempted by a foreground command;

if the background command is preempted, resuming performing the background command at a later time; and

correcting errors in portions of a page of data as the portions are read from the plurality of flash memory devices instead of waiting for the entire page of data to be read from the plurality of flash memory devices before correcting the errors;

wherein a foreground command has a predetermined completion time, whereas a background command does not;

wherein at least one of the first and second interfaces comprises a NAND interface configured to transfer data using a NAND interface protocol; and

wherein the foreground command or the background command is a command to program a page of data to a block of memory in the plurality of flash memory devices, and wherein in response to a failure in programming the page of data to the block of memory in the plurality of flash memory devices, the processor is further configured to copy that page and preceding pages in the block to a replacement block in the plurality of flash memory devices.

15. The method of claim 14 , wherein at least one of the background commands stored in the controller's memory is received from the host.

16. The method of claim 14 , wherein at least one of the background commands stored in the controller's memory is generated by the controller.

17. The method of claim 14 , wherein a foreground command comprises a read command, a write command, or an erase command.

18. The method of claim 14 , wherein a background command comprises one or more of the following commands: a copy command, a move command, a data scrambling command, a column replacement command, a command to handle write aborts, a command to handle program failures, a read scrubbing command, a wear leveling command, a bad block management command, a spare block management command, an error detection code (EDC) command, a status command, an encryption command, an error recovery command, and an address mapping command.

19. The method of claim 14 , wherein the controller is operative to provide independent command status indicators for foreground and background commands.

20. The method of claim 14 , wherein the controller is operative to arbitrate conflicting foreground and background commands according to a set of rules.

21. The method of claim 14 , wherein the controller is operative to apply a set of coherency rules for simultaneous foreground and background commands.

22. The method of claim 14 , wherein the controller is operative to execute foreground and background commands according to specified response times.

23. The method of claim 14 , wherein the controller comprises one or more data buffers, and wherein the controller is operative to manage use of the one or more data buffers for foreground and background commands.

24. The method of claim 14 , wherein the controller is further operative to distinguish between foreground and background commands sent over a single-level Open NAND Flash Interface (ONFI) bus.

25. The method of claim 14 , wherein the controller is further operative to provide independent flash-memory-device busy indicators for foreground and background commands.

26. The method of claim 14 , wherein the first interface is configured to receive multiple read or write requests for individual pages and to simultaneously handle the multiple read or write requests.

Assignments (6)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026920/0660 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2011
From: LASSA, PAUL A.; BRIEF, DAVID C.
To: SANDISK CORPORATION
Reel/Frame 025973/0347 →
Continuity (1)
Related Publication 20120173792A1 · Jul 5, 2012