IP Library Granted Patent US 8,019,932
Granted Patent B2
US 8,019,932 · App. 12/773,187 · Granted Sep 13, 2011

Block management for mass 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,019,932
App. No.
12/773,187
Granted
Sep 13, 2011
Kind
B2
Abstract

An embodiment of the present invention includes a nonvolatile memory system comprising nonvolatile memory for storing sector information, the nonvolatile memory being organized into blocks with each block including a plurality of sectors, each sector identified by a logical block address and for storing sector information. A controller is coupled to the nonvolatile memory for writing sector information to the latter and for updating the sector information, wherein upon updating sector information, the controller writes to the next free or available sector(s) of a block such that upon multiple re-writes or updating of sector information, a plurality of blocks are substantially filled with sector information and upon such time, the controller rearranges the updated sector information in sequential order based on their respective logical block addresses thereby increasing system performance and improving manufacturing costs of the controller.

Claims (49)

1. A method comprising:

writing or storing information associated with a particular logical block address (LBA) in a sector location of a first group of blocks of memory, the first group of blocks of memory comprising at least one block of memory and the information comprising sector information; and

rewriting or updating the information associated with the particular LBA in a free or available sector location of the first group of blocks of memory, wherein rewriting or updating the information associated with the particular LBA comprises:

writing or storing rewritten or updated sector information in the free or available sector location of the first group of blocks of memory;

identifying the rewritten or updated sector information as being current or new;

identifying the sector information associated with the particular LBA that had been previously written or stored as old; and

writing or storing sector information written or stored in the first group of blocks of memory and identified as current or new, including the rewritten or updated sector information, in sector locations of a second group of blocks of memory in accordance with a sequential order of respective LBAs associated with the sector information written or stored in the first group of blocks of memory and identified as current or new, wherein the second group of blocks comprise at least one block of memory and each block of the second group of blocks is associated with a respective virtual logical block address (VLBA).

2. The method of claim 1 , wherein a particular VLBA of a particular block of the second group of blocks of memory is a function of the particular LBAs associated with the sector information written or stored in the particular block.

3. A method, comprising:

writing or storing information associated with a particular logical block address (LBA), wherein writing or storing information comprises writing or storing sector information in a sector location of a first block;

rewriting or updating the information associated with the LBA, wherein rewriting or updating the information associated with the particular LBA comprises writing or storing rewritten or updated sector information in a sector location of a second block; and

writing or storing the rewritten or updated sector information in a sector location of a third block, wherein the sector location of the third block corresponds to a location of the particular LBA in a sequence of LBAs that are associated with information written or stored in the third block wherein the third block is associated with a particular virtual logical block address (VLBA), and wherein the particular VLBA of the third block is a function of the LBAs that are associated with the information written or stored in the third block.

4. The method of claim 3 , wherein the sector location of the first block is associated with a respective physical block address (PBA).

5. A controller configured to:

write or store information associated with a particular logical block address (LBA) in a sector location of a first block of memory communicatively coupled to the controller;

rewrite or update the information associated with the particular LBA in a sector location of a second block of the memory, wherein the controller being configured to rewrite or update the information associated with the particular LBA comprises the controller being configured to write or store rewritten or updated sector information in the sector location of the second block of the memory; and

write or store the rewritten or updated sector information in a sector location of a third block of the memory, wherein the sector location of the third block corresponds to a location of the particular LBA in a sequence of LBAs that are associated with information written or stored in the third block wherein the third block is associated with a particular virtual logical block address (VLBA), and wherein the particular VLBA of the third block is a function of the LBAs that are associated with the information written or stored in the third block.

6. A memory system comprising:

memory organized into blocks, wherein each block comprises a plurality of sector locations, wherein each of the sector locations is configured to store sector information; and

a controller configured to:

write or store information associated with a particular logical block address (LBA) in a sector location of a first block of the memory;

rewrite or update the information associated with the particular LBA in a sector location of a second block of the memory, wherein the controller being configured to rewrite or update the information associated with the particular LBA comprises the controller being configured to write or store rewritten or updated sector information in the sector location of the second block of the memory; and

write or store the rewritten or updated sector information in a sector location of a third block of the memory, wherein the sector location of the third block corresponds to a location of the particular LBA in a sequence of LBAs that are associated with information written or stored in the third block wherein the third block is associated with a particular virtual logical block address (VLBA), and wherein the particular VLBA of the third block is a function of the LBAs that are associated with the information written or stored in the third block.

7. A controller configured to:

write or store information identified by a particular logical block address (LBA) in a sector location of a first group of blocks of memory communicatively coupled to the controller, the first group of blocks of memory comprising at least one block of memory and the information comprising sector information; and

rewrite or update the information associated with the particular LBA in a free or available sector location of the first group of blocks of memory, wherein the controller being configured to rewrite or update the information associated with the particular LBA comprises the controller being configured to:

write or store rewritten or updated sector information in the free or available sector location of the first group of blocks of memory;

identify the rewritten or updated sector information as being current or new;

identify the sector information associated with the particular LBA that had been previously written or stored as old; and

write or store sector information written or stored in the first group of blocks of memory and identified as current or new in sector locations of a second group of blocks of memory in accordance with a sequential order of respective LBAs associated with the sector information written or stored in the first group of blocks of memory and identified as current or new, wherein the second group of blocks of memory comprise at least one block of memory and each of the second group of blocks is associated with a respective virtual logical block address (VLBA).

8. The controller of claim 7 , wherein the controller being configured to identify the rewritten or updated sector information as being current or new comprises the controller being configured to designate the rewritten or updated sector information as being current or new.

9. The controller of claim 7 , wherein the controller is configured to write or store sector information written or stored in the first group of blocks of memory and identified as current or new in sector locations of a second group of blocks responsive to the first group of blocks being substantially filled with sector information.

10. The controller of claim 7 , wherein the controller is configured to write or store sector information written or stored in the first group of blocks of memory and identified as current or new in sector locations of a second group of blocks when the first group of blocks are filled with sector information.

11. The controller of claim 7 , wherein the second group of blocks of memory comprises blocks other than blocks included in the first group of blocks of memory.

12. The controller of claim 7 , wherein the controller is further configured to:

associate a particular block of the first group of blocks of memory with a particular virtual logical block address (VLBA) if all of the sector information written or stored in the particular block is identified as current or new and is written or stored in accordance with a sequential ordering of the LBAs associated with the sector information written or stored in the particular block; and

not write or store the sector information written or stored in the particular block of memory of the first group of blocks and identified as current or new in sector locations of the second group of blocks.

13. The controller of claim 7 , wherein the second group of blocks comprise a group of free blocks found by the controller.

14. The controller of claim 7 , wherein the particular VLBA of a particular block of the second group of blocks is a function of the particular LBAs associated with the sector information written or stored in the particular block.

15. The controller of claim 7 , wherein the controller is configured to associate the respective VLBAs with the respective blocks of the second group of blocks.

16. A memory system comprising:

memory organized into blocks, wherein each block comprises a plurality of sector locations, wherein each of the sector locations is configured to store sector information; and

a controller configured to:

write or store information identified by a particular logical block address (LBA) in a sector location of a first group of blocks of the memory, the first group of blocks of memory comprising at least one block of memory and the information comprising sector information;

rewrite or update the information associated with the particular LBA in a free or available sector location of the first group of blocks of memory, wherein the controller being configured to rewrite or update the information associated with the particular LBA comprises the controller being configured to:

write or store rewritten or updated sector information in the free or available sector location of the first group of blocks of memory;

identify the rewritten or updated sector information as being current or new;

identify the sector information associated with the particular LBA that had been previously written or stored as old; and

write or store sector information written or stored in the first group of blocks of memory and identified as current or new in sector locations of a second group of blocks of the memory in accordance with a sequential order of respective LBAs associated with the sector information written or stored in the first group of blocks of memory and identified as current or new, wherein the second group of blocks of memory comprise at least one block of memory and further wherein the controller is further configured to associate a respective virtual logical block address (VLBA) with each of the blocks of the second group of blocks.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
MERGER Recorded Jun 11, 2013
From: LEXAR MEDIA, INC.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 030588/0368 →
MERGER Recorded Mar 25, 2011
From: LEXAR MEDIA, INC.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 026024/0131 →