# US 2010/0161876 A1 · Method and system for data structure management

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2010/0161876 A1
- Document ID: US20100161876A1
- Status: Published application
- Kind: A1
- Application number: 12/339,664
- Filed: 2008-12-19
- Published: 2010-06-24
- Earliest claimed: 2008-12-19
- Assignees: NVIDIA Corporation
- Inventors: Dmitry Vyshetsky; Paul Gyugyi
- Web page: https://patentgrep.com/patent/US20100161876A1

## CPC

- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/7203: Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
- G06F 2212/7207: management of metadata or control data
- G06F 2212/7211: Wear leveling
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the present invention are directed to a method and system for allowing data structures to be moved between storage locations of varying performance and cost without changing the application firmware. In one embodiment, rather than application firmware directly accessing memory, the application firmware requests a data structure by parameters, to which the implementation returns a pointer. The parameters can be, for example, the logical block address of a data sector, and the data structure can be mapping and associated information of that logical block address (LBA) to a location in the flash device.

## Claims

### Claim 1

A method for managing data structures in a storage device of a system, said method comprising:
a) receiving a request in a firmware application for data located in a storage device, said firmware application being executed in said storage device but not directly accessing said storage device;
b) determining a current configuration of said system;
c) determining a location of a reference in a memory based on said current memory configuration, said reference comprising a plurality of parameters corresponding to said data; and
d) returning said reference to said firmware application,
wherein said b), c) and ) are performed by a software application executing in said system.

### Claim 2 (depends on 1)

The method according to claim 1, wherein said storage device is a flash memory device.

### Claim 3 (depends on 1)

The method according to claim 1, wherein said a) receiving said request comprises receiving a request for data stored at a logical block address in a sector of said storage device.

### Claim 4 (depends on 1)

The method according to claim 1, wherein said memory is local memory and said location comprises a location of said reference in said local memory.

### Claim 5 (depends on 1)

The method according to claim 1, wherein said memory is an external memory and said location comprises a location of said reference in said external memory.

### Claim 6 (depends on 5)

The method according to claim 5, further comprising:
transferring said reference from said location in said external memory to a temporary location in local memory, wherein said transferring said reference is performed before said returning said reference.

### Claim 7 (depends on 1)

The method according to claim 1, wherein said c) determining said location comprises:
referencing a plurality of data elements corresponding to said request;
converting said plurality of data elements into a temporary data structure;
storing said temporary data structure in local memory; and
determining said location of said temporary data structure in said local memory.

### Claim 8 (depends on 7)

The method according to claim 7, wherein a data element from said plurality of data elements is stored in hardware offload.

### Claim 9 (depends on 1)

The method according to claim 1, further comprising:
pre-fetching a plurality of references corresponding to a plurality of speculative subsequent requests from said firmware application; and
storing said plurality of references in a cache.

### Claim 10 (depends on 9)

The method according to claim 9, wherein said pre-fetching said plurality of references comprises:
anticipating a plurality of subsequent requests for data from said firmware application; and
determining a plurality of locations in memory for a plurality of references corresponding to said plurality of subsequent requests.

### Claim 11 (depends on 10)

The method according to claim 10, wherein said determining said plurality of locations in memory comprises:
referencing a plurality of data elements corresponding to said plurality of subsequent requests;
converting said plurality of data elements into a plurality of temporary data structures;
storing said plurality of temporary data structures in a plurality of locations memory; and
returning said plurality of locations.

### Claim 12 (depends on 9)

The method according to claim 9, wherein said storing said plurality of references in a cache comprises transferring said plurality of references from a first plurality of locations in memory to a second plurality of locations in a cache in said micromethodor.

### Claim 13 (depends on 1)

The method according to claim 1, further comprising transferring a reference from a first location in a first memory type to a second location in a second memory type, wherein said transferring is performed prior to returning said reference.

### Claim 14

A method of managing the storage of data structures in a storage device, the method comprising:
mapping a logical address corresponding to a sector in a flash memory to a physical address of said flash memory, said mapping comprising executing a first function;
converting said physical address to a data structure comprising a plurality of data elements, said converting comprising executing a second function; and
storing said data structure in a derived location, wherein said derived location is customized for a hardware configuration.

### Claim 15 (depends on 14)

The method according to claim 14, wherein storing said data structure comprises managing storage of said data structure among a plurality of storage types.

### Claim 16 (depends on 15)

The method according to claim 15, wherein said managing storage of said data structure comprises transferring said data structure from a location in one of local memory and external memory to a location in a processor cache.

### Claim 17 (depends on 14)

The method according to claim 14 wherein said data structure comprises a plurality of parameters corresponding to said physical address of said data in said flash memory.

### Claim 18

In a system comprising a flash memory device, a plurality of storage components and a hardware device including a processor and a cache, a method of managing data structure requests in a system, said method comprising:
a) receiving a request, from said hardware device, in a firmware application operating on said flash memory device for a data located at a logical block address in said flash memory device;
b) mapping said logical block address in said flash memory device to a physical address in said flash memory device;
c) translating, from said physical address, a data structure corresponding to a data sector in said flash memory device; and
d) returning said data structure corresponding to said data sector to said firmware application, wherein a)-d) are performed without said firmware application accessing said flash memory device directly.

### Claim 19 (depends on 18)

The system according to claim 18, further comprising:
managing a plurality of data structures corresponding to a plurality of data sectors in said flash memory.

### Claim 20 (depends on 19)

The system according to claim 19, wherein said managing said plurality of data structures comprises transferring a data structure from a first location in a first storage component from said plurality of storage components to a second location in a second storage component from said plurality of storage components according to a heuristic to improve performance.
