IP Library Granted Patent US 9,304,904
Granted Patent B2
US 9,304,904 · App. 14/067,015 · Granted Apr 5, 2016

Hierarchical flash translation layer

Inventors: Trevor Smith (Austin, TX); Ashwin Kamath (Cedar Park, TX); Ganesh Bodapatti (Austin, TX)
Assignee: MANGSTOR, INC.
G06F12/0246G06F11/1441G06F12/0866G06F12/0804
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 9,304,904
App. No.
14/067,015
Granted
Apr 5, 2016
Kind
B2
Abstract

A flash memory system comprises a flash device operable to store data in a plurality of physical blocks assigned to a plurality of sections, a plurality of Flash Translation Tables stored in a memory comprising a Forward Translation Table that maps a Section to a plurality of physical blocks, and a Sector Translation Table for each Section, the Sector Translation Table operable to map to a Physical Page Number identifying a particular Page, a Page Offset identifying a particular location within the Page, and a Section Local Block Table comprising Block Physical Addresses indexed by a Section Local Block Table ID.

Claims (53)

1. A method for translating a logical address to a physical address in a flash memory, comprising:

receiving a Logical Sector Number as the location for a data access operation;

using the Logical Sector Number to obtain a {Section ID, Section Relative Sector ID} tuple;

using the Section ID to identify and access one of a plurality of Sector Translation Tables;

accessing the identified Sector Translation Table using Section Relative Sector ID as an index to access a {Section Local Block Table ID, Physical Page Number, Page Offset} tuple;

using the Section Local Block Table ID to identify a physical block in the flash memory that is represented by a {Flash Device ID, DIE, Logical Unit, Block Number} tuple; and

accessing a particular location in the physical block of the flash memory identified by the {Flash Device ID, DIE, Logical Unit, Block Number, Physical Page Number, Page Offset} tuple.

2. The method of claim 1 , wherein using the Logical Sector Number to obtain a {Section ID, Section Relative Sector ID} tuple comprises determining {Section ID=Logical Sector Number÷Number of Sections, Section Relative Sector ID=Logical Sector Number MOD Number of Sections}.

3. The method of claim 1 , further comprising:

identifying a plurality of blocks in a die in the flash memory with a NextWrite Section Relative Block ID (NWSRBID); and

writing data to the plurality of blocks identified by NWSRBID in a single write operation.

4. A method for booting a flash memory device comprising:

determining a Section ID for a boot sector;

loading a Section Local Block Table for the section identified by the Section ID, the Section Local Block Table containing the address of a plurality of blocks;

reading data in the blocks identified in the Section Local Block Table to initialize a Sector Translation Table for the section identified by the Section ID;

determining a Section Relative Sector ID;

accessing the identified Sector Translation Table using Section Relative Sector ID as an index to access a {Section Local Block Table ID, Physical Page Number, Page Offset} tuple;

using the Section Local Block Table ID to identify a physical block in the flash memory that is represented by a {Flash Device ID, DIE, Logical Unit, Block Number} tuple; and

accessing a particular location in the physical block of the flash memory containing boot records identified by the {Flash Device ID, DIE, Logical Unit, Block Number, Physical Page Number, Page Offset} tuple.

5. A flash memory system addressable by a logical sector number (LSN), comprising:

a flash storage device comprising a plurality of physical blocks operable to store data;

a controller;

at least one non-transitory, computer-readable medium operable for storing one or more flash translation tables (FTT) and further comprising computer-executable instructions that, when executed by the controller, cause the flash memory system to perform FTT operations comprising the procedures:

(a) receiving a logical sector number (LSN) identifying a location for a data access operation;

(b) determining a {Section ID, Section Relative Sector ID} tuple based on the LSN;

(c) based on the {Section ID, Section Relative Sector ID} tuple, accessing an entry in one of a plurality of Sector Translation Tables (STT) to obtain a {Section Local Block Table ID, Physical Page Number, Page Offset} tuple;

(d) based on the Section Local Block Table ID, accessing an entry in a Section Local Block Table (SLBT) to obtain a {Flash Device ID, DIE, Logical Unit, Block Number} tuple representing a physical block in the flash storage device; and

(e) determining a location in the physical block of the flash storage device corresponding to the LSN based on the tuples obtained from the accessed entries.

6. The flash memory system of claim 5 , wherein the location in the physical block of the flash storage device corresponding to the LSN is identified by the tuple comprising {Flash Device ID, DIE, Logical Unit, Block Number, Physical Page Number, Page Offset}.

7. The flash memory system of claim 5 , wherein the at least one non-transitory, computer-readable medium further comprises computer-executable instructions that, when executed by the controller, cause the flash memory system to: (f) perform the data access operation on at least the determined location in the physical block of the flash storage device.

8. The flash memory system of claim 5 , wherein the physical blocks of the flash memory device are organized into a plurality of sections, each section being associated with: (1) a particular Section ID; (2) a particular one of the plurality of Sector Translation Tables; and (3) a Section Local Block Table.

9. The flash memory system of claim 8 , wherein the controller comprises:

an array of section processors, each configurable to execute a portion of the computer-executable instructions to perform procedures (c), (d), and (e) pertaining to a particular section of the flash storage device; and

a command processor configurable to execute a portion of the computer-executable instructions to perform procedures (a) and (b), and to issue commands to respective ones of the section processors based on determined Section IDs.

10. The flash memory system of claim 8 , wherein the controller is configured to process a plurality of FTT operations in parallel, each FTT operation associated with a section of the flash storage device.

11. The flash memory system of claim 8 , wherein the at least one non-transitory, computer-readable medium further comprises computer-executable instructions that, when executed by the controller, cause the flash memory system to:

(g) determine a NextWrite Section Relative Block ID (NWSRBID) based on the Section ID;

(h) determine a plurality of blocks in the flash storage device based on the NWRBID; and

(j) write data to the plurality of blocks in a single write operation.

12. The flash memory system of claim 5 , wherein procedure (b) comprises the following operations: {Section ID=LSN÷Number of Sections, Section Relative Sector ID=Logical Sector Number MOD Number of Sections}.

13. A flash memory system, comprising:

a flash storage device configured in a plurality of sections, each section comprising a plurality of physical blocks;

a controller;

at least one non-transitory, computer-readable medium operable for storing one or more flash translation tables (FTT) and further comprising computer-executable instructions that, when executed by the controller, cause the flash memory system to perform procedures comprising:

(a) determining a Section ID and a Section Relative Sector ID corresponding to a boot sector of the flash memory system;

(b) loading a Section Local Block Table (SLBT) associated with the Section ID, the SLBT comprising the addresses of a plurality of physical blocks;

(c) reading data in the physical blocks identified in the SLBT;

(d) based on the read data, initializing a Sector Translation Table (STT) associated with the Section ID;

(d) accessing an entry, corresponding to the Section Relative Sector ID, in the initialized STT to obtain a {Section Local Block Table ID, Physical Page Number, Page Offset} tuple;

(f) accessing an entry, corresponding to the Section Local Block Table ID, in the SLBT to obtain a {Flash Device ID, DIE, Logical Unit, Block Number} tuple representing a physical block in the flash storage device;

(g) determining a location in the physical block of the flash storage device corresponding to the boot sector of the flash memory system based on the tuples obtained from the accessed entries.

14. The flash memory system of claim 5 , wherein the location in the physical block of the flash storage device corresponding to the boot sector is identified by the tuple comprising {Flash Device ID, DIE, Logical Unit, Block Number, Physical Page Number, Page Offset}.

15. The flash memory system of claim 5 , wherein the at least one non-transitory, computer-readable medium further comprises computer-executable instructions that, when executed by the controller, cause the flash memory system to: (h) access the determined location in the physical block of the flash storage device.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2020
From: EXTEN TECHNOLOGIES, INC.
To: OVH US LLC
Reel/Frame 054013/0948 →
CORRECTIVE ASSIGNMENT TO CORRECT THE MISTAKEN INCLUSION OF PATENT NUMBER 9141527 PREVIOUSLY RECORDED ON REEL 053438 FRAME 0968. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 12, 2020
From: WESTERN ALLIANCE BANK
To: EXTEN TECHNOLOGIES, INC.
Reel/Frame 053480/0993 →
RELEASE OF SECURITY INTEREST Recorded Aug 8, 2020
From: WESTERN ALLIANCE BANK
To: EXTEN TECHNOLOGIES, INC.
Reel/Frame 053438/0968 →
CHANGE OF NAME Recorded Jul 25, 2018
From: MANGSTOR, INC.
To: EXTEN TECHNOLOGIES, INC.
Reel/Frame 046628/0576 →
SECURITY INTEREST Recorded Jun 30, 2016
From: MANGSTOR, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 039059/0007 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2014
From: SMITH, TREVOR; KAMATH, ASHWIN; BODAPATTI, GANESH
To: MANGSTOR, INC.
Reel/Frame 032510/0261 →
Continuity (4)
Provisional Application 61719986 · Oct 30, 2012
Provisional Application 61719994 · Oct 30, 2012
Provisional Application 61720000 · Oct 30, 2012
Related Publication 20140122781A1 · May 1, 2014