IP Library Granted Patent US 8,751,755
Granted Patent B2
US 8,751,755 · App. 12/082,206 · Granted Jun 10, 2014

Mass storage controller volatile memory containing metadata related to flash memory storage

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,751,755
App. No.
12/082,206
Granted
Jun 10, 2014
Kind
B2
Abstract

A volatile memory associated with a mass storage controller and a flash memory module. The volatile memory includes a number of tables containing information related to the flash memory storage, including a table storing physical flash memory addresses and a plurality of tables containing metadata.

Claims (69)

1. An external memory coupled to a mass storage controller, wherein the mass storage controller is coupled to a plurality of groups of flash memory devices, the external memory comprising:

a portion for a data buffer for holding data received by the mass storage controller from one or more hosts, and for holding data received by the mass storage controller from the plurality of groups of flash memory devices coupled to the mass storage controller, each group of flash memory devices comprising a plurality of banks, each bank comprising a plurality of blocks, each block comprising a minimum size erase unit of flash memory and further comprising a plurality of superpages, each superpage comprising a plurality of flash pages, wherein each group of flash memory devices further includes a plurality of superblocks, wherein each superblock includes a corresponding block from each bank of the plurality of banks in the group of flash memory devices;

a portion for a first table including a series of physical addresses in the plurality of groups of flash memory devices, the series of physical addresses arranged in an order reflecting a logical addressing system used by the one or more hosts, the first table including one physical flash memory address for every n addresses from the logical addressing system, n being larger than one and representing the number of logical addresses assignable to each superpage, and further including a field to store a count for the number of times each of the physical flash memory addresses has been accessed;

a portion for a plurality of second tables, the plurality of second tables comprising a separate second table for each group of flash memory devices, each second table indicating,

for each superpage in a respective group of flash memory devices, whether the superpage contains valid data, and

for each superblock in the respective group of flash memory devices, a count for the number of superpages in the superblock which store invalid data and a count for the number of times the superblock has been erased; and

an interface to the mass storage controller, wherein the mass storage controller is configured to generate and store aggregated data in the external memory, the aggregated data including data stored in the first table and the plurality of second tables in the external memory.

2. The external memory as in claim 1 , further including:

a portion for a plurality of firmware overlays, related to a plurality of processors, the firmware overlays including program code to be loaded by and used by the processors.

3. The volatile external memory as in claim 1 , further including:

a portion for a third table holding Small Computer Systems Interface (SCSI) tag information, the third table including a plurality of indicators, each indicator indicating whether one or more SCSI tags is currently active in the storage controller.

4. The external memory as in claim 3 , wherein:

the third table further includes information identifying an initiator for each currently active SCSI tag.

5. The external memory as in claim 1 , wherein:

n is a number ranging from approximately twelve (12) to approximately sixteen (16).

6. The external memory as in claim 5 , wherein:

each first table physical flash memory address represents a location on more than one flash memory die.

7. The external memory as in claim 6 , further including:

a portion for a plurality of third tables, each containing information relating to an area of flash memory device that is currently open for writing, the information including a time stamp and an indication regarding whether a subset of the area is defective.

8. The external memory as in claim 7 , wherein:

each third table further includes an erase count for the area or for a subset of the area and information associating logical addresses with physical addresses that are within the area.

9. The external memory as in claim 8 , wherein:

the mass storage controller includes a plurality of flash ports, and

each third table is associated with each flash port.

10. A method of operating a system, the system including a mass storage controller, an external memory coupled to the mass storage controller, the mass storage controller coupled to a plurality of groups of flash memory devices, the method comprising:

storing, in a data buffer in the external memory, a first data received by the mass storage controller from one or more hosts, and a second data received by the mass storage controller from the plurality of groups of flash memory devices coupled to the mass storage controller, each group of flash memory devices comprising a plurality of banks, each bank comprising a plurality of blocks, each block comprising a minimum size erase unit of flash memory and further comprising a plurality of superpages, each superpage comprising a plurality of flash pages, wherein each group of flash memory devices further includes a plurality of superblocks, wherein each superblock includes a corresponding block from each bank of the plurality of banks in the group of flash memory devices;

translating, using a first table in the external memory, logical addresses received from the one or more hosts into physical addresses in the plurality of groups of flash memory devices, wherein n logical addresses are assigned to a single physical address, n being larger than one and representing the number of logical addresses assignable to each superpage, wherein the first table includes a series of physical addresses in the plurality of groups of flash memory devices, the series of physical addresses arranged in an order reflecting a logical addressing system used by the one or more hosts, the first table including one physical flash memory address for every n addresses from the logical addressing system and further including a field to store a count for the number of times each of the physical flash memory addresses has been accessed; and

storing, in a plurality of second tables in the external memory, the plurality of second tables comprising a separate second table for each group of flash memory devices, data indicating,

for each superpage in a respective group of flash memory devices, whether the superpage contains valid data, and

for each superblock in the respective group of flash memory devices, a count for the number of superpages in the superblock which store invalid data and a count for the number of times the superblock has been erased.

11. The method of claim 10 , wherein the external memory further includes:

a portion for a plurality of firmware overlays, related to a plurality of processors, the firmware overlays including program code to be loaded by and used by the processors.

12. The method of claim 10 , wherein the external memory further includes:

a portion for a third table holding Small Computer Systems Interface (SCSI) tag information, the third table including a plurality of indicators, each indicator indicating whether one or more SCSI tags is currently active in the storage controller.

13. The method of claim 12 , wherein the third table further includes information identifying an initiator for each currently active SCSI tag.

14. The method of claim 10 , wherein n is a number ranging from approximately twelve (12) to approximately sixteen (16).

15. The method of claim 14 , wherein each first table physical flash memory address represents a location on more than one flash memory die.

16. The method of claim 15 , wherein the external memory further includes:

a portion for a plurality of third tables, each containing information relating to an area of flash memory device that is currently open for writing, the information including a time stamp and an indication regarding whether a subset of the area is defective.

17. The method of claim 16 , wherein:

each third table further includes an erase count for the area or for a subset of the area and information associating logical addresses with physical addresses that are within the area.

18. The method of claim 17 , wherein:

the mass storage controller includes a plurality of flash ports, and

each third table is associated with each flash port.

19. A system including a mass storage controller, an external memory coupled to the mass storage controller, the mass storage controller coupled to a plurality of groups of flash memory devices, the system comprising:

one or more ports for coupling to one or more hosts;

the external memory coupled to the mass storage controller; and

the mass storage controller coupled to the plurality of groups of flash memory devices, each group of flash memory devices comprising a plurality of banks, each bank comprising a plurality of blocks, each block comprising a minimum size erase unit of flash memory and further comprising a plurality of superpages, each superpage comprising a plurality of flash pages, wherein each group of flash memory devices further includes a plurality of superblocks, wherein each superblock includes a corresponding block from each bank of the plurality of banks in the group of flash memory devices, the mass storage controller configured to generate and store aggregated data in the external memory;

the external memory including:

an interface to the mass storage controller;

a portion for a data buffer for holding data received by the mass storage controller from the one or more hosts, and for holding data received by the mass storage controller from the plurality of groups of flash memory devices coupled to the mass storage controller;

a portion for a first table including a series of physical addresses in the plurality of groups of flash memory devices, the series of physical addresses arranged in an order reflecting a logical addressing system used by the one or more hosts, the first table including one physical flash memory address for every n addresses from the logical addressing system, n being larger than one and representing the number of logical addresses assignable to each superpage, and further including a field to store a count for the number of times each of the physical flash memory addresses has been accessed; and

a portion for a plurality of second tables, the plurality of second tables comprising a separate second table for each group of flash memory devices, each second table indicating,

for each superpage in a respective group of flash memory devices, whether the superpage contains valid data, and

for each superblock in the respective group of flash memory devices, a count for the number of superpages in the superblock which store invalid data and a count for the number of times the superblock has been erased.

20. The system of claim 19 , wherein the external memory further includes:

a portion for a plurality of firmware overlays, related to a plurality of processors, the firmware overlays including program code to be loaded by and used by the processors.

21. The system of claim 19 , wherein the external memory further includes:

a portion for a third table holding Small Computer Systems Interface (SCSI) tag information, the third table including a plurality of indicators, each indicator indicating whether one or more SCSI tags is currently active in the storage controller.

22. The system of claim 21 , wherein the third table further includes information identifying an initiator for each currently active SCSI tag.

23. The system of claim 19 , wherein n is a number ranging from approximately twelve (12) to approximately sixteen (16).

24. The system of claim 23 , wherein each first table physical flash memory address represents a location on more than one flash memory die.

25. The system of claim 24 , wherein the external memory further includes:

a portion for a plurality of third tables, each containing information relating to an area of flash memory device that is currently open for writing, the information including a time stamp and an indication regarding whether a subset of the area is defective.

26. The system of claim 25 , wherein:

each third table further includes an erase count for the area or for a subset of the area and information associating logical addresses with physical addresses that are within the area.

27. The system of claim 26 , wherein:

the mass storage controller includes a plurality of flash ports, and

each third table is associated with each flash port.

Assignments (14)
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 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 026781 FRAME 0135. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT ASSIGNMENT. Recorded Aug 25, 2011
From: PLIANT TECHNOLOGY, LLC
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 027190/0190 →
PATENT ASSIGNMENT Recorded Aug 19, 2011
From: PLIANT TECHNOLOGY, LLC
To: SANDISK PACIFIC HOLDCO, INC.
Reel/Frame 026781/0135 →
CONVERSION TO LLC Recorded Aug 18, 2011
From: PLIANT TECHNOLOGY, INC.
To: PLIANT TECHNOLOGY, LLC
Reel/Frame 026771/0541 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Jun 21, 2011
From: GOLD HILL VENTURE LENDING 03, LP; SILICON VALLEY BANK
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 026468/0930 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Jun 21, 2011
From: SILICON VALLEY BANK
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 026468/0942 →
SECURITY AGREEMENT Recorded Apr 4, 2011
From: PLIANT TECHNOLOGY, INC.
To: SANDISK CORPORATION
Reel/Frame 026073/0026 →
SECURITY AGREEMENT Recorded Apr 1, 2011
From: PLIANT TECHNOLOGY, INC.
To: SILICON VALLEY BANK; GOLD HILL VENTURE LENDING 03, LP
Reel/Frame 026067/0768 →
SECURITY AGREEMENT Recorded Mar 31, 2011
From: PLIANT TECHNOLOGY, INC.
To: SILICON VALLEY BANK
Reel/Frame 026066/0659 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2008
From: PRINS, DOUGLAS A.; OLBRICH, AARON K.
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 020822/0950 →