# US 8,751,860 B2 · Object oriented memory in solid state devices

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

- Number: US 8,751,860 B2
- Document ID: US8751860B2
- Status: Granted
- Kind: B2
- Application number: 12/477,349
- Filed: 2009-06-03
- Published: 2010-12-09
- Granted: 2014-06-10
- Earliest claimed: 2009-06-03
- Assignees: Micron Technology, Inc.
- Applicants: Peter Feeley; Neal A. Galbo; James Cooke; Victor Y. Tsai; Robert N. Leibowitz; William H. Radke
- Inventors: Peter Feeley; Neal A. Galbo; James Cooke; Victor Y. Tsai; Robert N. Leibowitz; William H. Radke
- Web page: https://patentgrep.com/patent/US8751860B2

## CPC

- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/2064: {while ensuring consistency}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

The present disclosure includes methods, devices, and systems for object oriented memory in solid state devices. One embodiment of a method for object oriented memory in solid state devices includes accessing a defined set of data as a single object in an atomic operation manner, where the accessing is from a source other than a host. The embodiment also includes storing the defined set of data as the single object in a number of solid state memory blocks as formatted by a control component of a solid state device that includes the number of solid state memory blocks.

## Claims

### Claim 1

A method of object oriented memory in solid state devices, comprising:
accessing a defined set of data as a single object in an atomic operation manner, wherein the accessing is from a source other than a host;
storing, after the accessing of the defined set of data from the source other than the host, the defined set of data as the single object in a number of solid state memory blocks as formatted by a control component of a solid state device that includes the number of solid state memory blocks; and
providing the host with a previously stored version of the defined set of data upon detecting multiple read requests to a newly stored version of the defined set of data during a particular period of time.

### Claim 2 (depends on 1)

The method of claim 1, wherein the storing is performed once the atomic operation manner is completed.

### Claim 3 (depends on 1)

The method of claim 1, wherein accessing the defined set of data in the atomic operation manner includes using a pointer to a last known-good version of such data until initial access to the defined set of data is complete.

### Claim 4 (depends on 1)

The method of claim 1, wherein storing the defined set of data to the number of memory blocks includes writing multiple copies of the defined set of data, each copy in separate memory blocks after independently performing an atomic operation on each of the multiple copies is complete.

### Claim 5 (depends on 1)

The method of claim 1, wherein detecting multiple read requests to the newly stored version of the defined set of data includes either the solid state device or the host detecting multiple read requests to a newly stored boot image required for a booting operation in a system managed by the host.

### Claim 6 (depends on 5)

The method of claim 5, wherein detecting multiple read requests to the newly stored boot image includes the solid state device providing the host with a last known-good version of a boot image.

### Claim 7 (depends on 1)

The method of claim 1, wherein accessing data includes accessing the data in a mobile system selected from a group including:
a digital camera;
a digital music device;
a network device;
a mobile telephone;
a personal digital assistant device; and
a laptop computer.

### Claim 8

A method of object oriented memory in solid state devices, comprising:
accessing a defined set of data as a single object, wherein the accessing is from a source other than a host;
performing a read-verify operation on the accessed defined set of data; and
storing, after the accessing of the defined set of data from the source other than the host and performing the read-verify operation, the defined set of data as the single object in a number of memory blocks as formatted by a control component operably coupled to a solid state device that includes the number of solid state memory blocks; and
independently performing the read-verify operation on multiple copies of the defined set of new data before a write operation on each of the copies is performed and subsequently storing copies of the defined set of new data in which the read-verify operation detected fewer than a particular number of errors.

### Claim 9 (depends on 8)

The method of claim 8, wherein the storing of the defined set of data as the single object is performed once the read-verify operation is completed.

### Claim 10 (depends on 8)

The method of claim 8, wherein performing the read-verify operation on the accessed data includes using a pointer to a last known-good version of a previously stored defined set of the data until the read-verify operation on the accessed defined set of new data is completed and the storing of the defined set of new data is completed.

### Claim 11 (depends on 8)

The method of claim 8, wherein the method includes storing multiple copies of the defined set of new data once the read-verify operation is successfully completed.

### Claim 12 (depends on 11)

The method of claim 11, wherein the method includes providing automatic fail-over to a read-verified copy of the data when at least the particular number of errors is detected in another of the multiple copies of the defined set of new data.

### Claim 13 (depends on 11)

The method of claim 11, wherein the method includes providing automatic fail-over to a read-verified copy of the defined set of new data when at least a particular number of new errors are detected in another previously read-verified and stored copy of the defined set of new data.

### Claim 14 (depends on 8)

The method of claim 8, wherein performing the read-verify operation includes performing a cyclic redundancy checking operation.

### Claim 15 (depends on 8)

The method of claim 8, wherein the method includes performing an error correction operation when a particular number of errors are detected in at least one of a number of previously read-verified and stored copies of the defined set of data.

### Claim 16 (depends on 15)

The method of claim 15, wherein performing the error correction operation includes performing a bit-by-bit comparison of multiple previously read-verified and stored copies of the defined set of data, wherein the solid state device validates one or more copies from among the multiple copies by selecting from a majority of matching copies.

### Claim 17 (depends on 8)

The method of claim 8, wherein the method includes providing an arithmetic signature in the defined set of data prior to accessing the data from the source, wherein the arithmetic signature is provided by the solid state device back to the source for detection of errors.

### Claim 18 (depends on 8)

The method of claim 8, wherein the method includes providing an arithmetic signature in a defined set of data prior to accessing the data from the host, wherein the arithmetic signature is provided by the solid state device back to the host for detection of errors.

### Claim 19

A solid state device, comprising:
a control component coupled to a number of solid state memory arrays in the solid state device, wherein each array has multiple physical blocks of memory cells and wherein the control component is configured to:
access a defined set of data as a single object from a source other than a host;
perform a read-verify operation on the accessed defined set of data;
store, after the access of the defined set of data from the source other than the host and the read-verify operation, the defined set of data in the number of arrays as the single object beginning-to-end in a number of contiguous physical blocks of memory cells;
perform an error correction operation that includes a bit-by-bit comparison of multiple previously read-verified and stored copies of the defined set of data; and
validate one or more copies from among the multiple copies by selecting from a majority of matching copies.

### Claim 20 (depends on 19)

The device of claim 19, wherein the control component includes an associated processor that manages formatting of the single object in the physical blocks of memory cells in the number of arrays.

### Claim 21 (depends on 19)

The device of claim 19, wherein the multiple physical blocks of memory cells are arranged in a non-volatile NAND or a non-volatile NOR architecture.

### Claim 22 (depends on 19)

The device of claim 19, wherein the defined set of data is for a boot image or an operating system.

### Claim 23 (depends on 19)

The device of claim 19, wherein the control component is configured to store the defined set of data in a particular partition of the number of memory arrays of the physical blocks of memory cells.

### Claim 24 (depends on 19)

The device of claim 19, wherein the control component is configured to access the defined set of data and store the defined set of data in the number of arrays after completion of an atomic operation.

### Claim 25 (depends on 24)

The device of claim 24, wherein the control component is configured to assign a pointer to a last known-good copy of the data in the arrays until completion of the atomic operation, wherein the pointer directs a read of the data to be performed on the last known-good copy.

### Claim 26

A solid state device, comprising:
a control component coupled to one or more solid state memory arrays in the solid state device, wherein each of the one or more arrays has multiple physical blocks of memory cells and wherein the control component is configured to:
access a defined set of data as a single object from a source other than a host, wherein one or more iterations of the defined set of data are accessed;
store, after the access of the defined set of data from the source other than the host, multiple copies of the one or more iterations to particular locations in the number of arrays as the single object after independent verification of the multiple copies of the one or more data iterations; and
read and independently correct a number of errors found prior to storing the single object in the array.

### Claim 27 (depends on 26)

The device of claim 26, wherein the control component is configured to store each of the multiple copies in physically different arrays of the one or more arrays.

### Claim 28 (depends on 26)

The device of claim 26, wherein the control component is coupled to only one array.

### Claim 29 (depends on 26)

The device of claim 26, wherein the control component is configured to store at least one of the multiple copies in physical blocks of the array determined to be more reliable than other physical blocks.

### Claim 30 (depends on 29)

The device of claim 29, wherein the physical blocks of the array determined to be more reliable are physical blocks having single-level memory cells.

### Claim 31 (depends on 29)

The device of claim 29, wherein the physical blocks of the array determined to be more reliable are physical blocks having memory cells that have been reused fewer times than memory cells of the other physical blocks.

### Claim 32 (depends on 26)

The device of claim 26, wherein the control component is configured to assign a pointer to a particular copy of the one or more data iterations as a new last known-good copy to replace a previous last known-good copy.

### Claim 33 (depends on 32)

The device of claim 32, wherein the control component is configured to send a store completion acknowledgment to a host such that any read by the host is directed by the pointer to the new last known-good copy.

### Claim 34 (depends on 32)

The device of claim 32, wherein the control component is configured to send a store completion acknowledgement response to a host that is delayed until a data protection operation is successfully completed.

### Claim 35 (depends on 26)

The device of claim 26, wherein the control component is configured to read the single object, beginning-to-end, in a number of contiguous physical blocks of memory cells.

### Claim 36 (depends on 26)

The device of claim 26, wherein the control component is configured to automatically initiate a read operation based upon a power-on reset, a transition of a signal, or both, and the read data is automatically sent to a host where it is either used to boot the host or the data is ignored if the data is not required by the host at that time.

### Claim 37 (depends on 26)

The device of claim 26, wherein the control component is configured to save a new defined set of data as a last install wherein the last install is defined as a known-good copy after the new defined set of data has booted successfully at least once as stored.

### Claim 38

A system, comprising:
a host control component that includes instructions stored on a non-transitory medium and that is configured to be operably coupled to a host in order to manage a system;
wherein the host control component is configured to independently perform a read-verify operation on multiple copies of a defined set of new data before a write operation on each of the copies is performed and subsequently store copies of the defined set of new data in which the read-verify operation detected fewer than a particular number of errors;
wherein the host control component is configured to be operably coupled to a control component of a solid state device having multiple solid state physical memory blocks of memory cells; and
wherein the control component of the solid state device is configured to access the defined set of data as a single object from a source other than a host and manage the accessed defined set of data as the single object during subsequent write and read operations.

### Claim 39 (depends on 38)

The system of claim 38, wherein the control component of the solid state device is configured to store multiple copies of the single object and wherein each of the multiple copies is separately stored in the multiple memory blocks as determined by a set of rules for writing to physically separate memory blocks.

### Claim 40 (depends on 39)

The system of claim 39, wherein the control component of the solid state device is configured to store the multiple copies of the single object in a particular partition of the multiple physical memory blocks of memory cells.

### Claim 41 (depends on 40)

The system of claim 40, wherein the control component of the solid state device is configured to store each of the multiple copies of the single object in the particular partition contiguously in a number of the multiple physical memory blocks for end-to-end data integrity.

### Claim 42 (depends on 40)

The system of claim 40, wherein the control component of the solid state device is configured to store data in the multiple physical memory blocks as determined by logical block addressing.

### Claim 43 (depends on 42)

The system of claim 42, wherein the control component of the solid state device is configured to store data in particular logical block addresses.

### Claim 44

A system, comprising:
a host control component that includes instructions stored on a non-transitory medium and that is configured to be operably coupled to a host in order to manage a system;
wherein the host control component is configured to be operably coupled to a control component of a solid state device having multiple solid state physical memory blocks of memory cells;
wherein the control component of the solid state device is configured to access a defined set of data in a block oriented manner from a source other than a host and manage the accessed defined set of data in the block oriented manner during subsequent write, store, and read operations;
wherein a set of rules is followed by the host control component and the solid state device control component to subsequently store the accessed defined set of data in a defined series of particular logical block addresses in a particular order;
wherein a write of the defined set of data includes the host control component providing an indicator to the solid state device control component to identify a last block of the defined set of data; and
wherein the solid state device control component is configured to read the defined set of data consecutively from a beginning to an end of the particular order of the defined set of data as if the defined set of data was stored in an object oriented manner.

### Claim 45 (depends on 44)

The system of claim 44, wherein the set of rules followed by the host control component and the solid state device control component allows a write of the defined set of data in separate and non-partitioned physical memory blocks in the multiple solid state device physical memory blocks.

### Claim 46 (depends on 44)

The system of claim 44, wherein the set of rules followed by the host control component and the solid state device control component includes a particular series of physical memory block numbers to write the defined set of data.

### Claim 47 (depends on 46)

The system of claim 46, wherein the write of the defined set of data is performed in a particular order.

### Claim 48 (depends on 44)

The system of claim 44, wherein the solid state device control component is configured to store multiple copies of the defined set of data and wherein each of the multiple copies is separately stored to the multiple memory blocks as determined by the set of rules.

### Claim 49 (depends on 48)

The system of claim 48, wherein the solid state device control component is configured to manage the multiple copies of the defined set of data by providing the host control component read access to a last known-good copy of the defined set of data.

### Claim 50

A method of object oriented memory in solid state devices, comprising:
accessing a defined set of data as a single object, wherein the accessing is from a source other than a host;
performing a read-verify operation on multiple copies of the accessed defined set of data prior to storing the single object in a number of memory blocks;
storing, after the accessing of the defined set of data from the source other than the host and performing the read-verify operation, multiple copies of the defined set of data as the single object in the number of memory blocks as formatted by a control component operably coupled to a solid state device that includes the number of solid state memory blocks.

### Claim 51

A solid state device, comprising:
a control component coupled to one or more solid state memory arrays in the solid state device, wherein each of the one or more arrays has multiple physical blocks of memory cells and wherein the control component is configured to:
access a defined set of data as a single object from a source other than a host, wherein one or more iterations of the defined set of data are accessed;
independently verify, after the one or more iterations of the accessed data are accessed, multiple copies of the one or more data iterations prior to storing the single object in the number of arrays;
store, after the access of the defined set of data from the source other than the host, multiple copies of the one or more iterations to particular locations in the number of arrays as the single object.

### Claim 52

A solid state device, comprising:
a control component coupled to one or more solid state memory arrays in the solid state device, wherein each of the one or more arrays has multiple physical blocks of memory cells and wherein the control component is configured to:
access a defined set of data as a single object from a source other than a host, wherein one or more iterations of the defined set of data are accessed;
independently verify, after the one or more iterations of the accessed data are accessed, multiple copies of the one or more data iterations prior to storing the single object in the one or more solid state memory arrays;
store, after the access of the defined set of data from the source other than the host, the multiple copies of the one or more iterations to particular locations in the number of arrays as the single object; and
save a new defined set of data as a last install and the last install will be defined as a known-good copy after the new defined set of data has booted successfully at least once as stored.

### Claim 53

A solid state device, comprising:
a control component coupled to a number of solid state memory arrays in the solid state device, wherein each array has multiple physical blocks of memory cells and wherein the control component is configured to:
access a defined set of data as a single object from a source other than a host;
performing a read-verify operation on the accessed defined set of data;
store, after the access of the defined set of data from the source other than the host and the read-verify operation, the defined set of data in the number of arrays as the single object after completion of an atomic operation;
assign a pointer to a last known-good copy of the data in the arrays until completion of the atomic operation, wherein the pointer directs a read of the data to be performed on the last known-good copy;
perform an error correction operation that includes a bit-by-bit comparison of multiple previously read-verified and stored copies of the defined set of data; and
validate one or more copies from among the multiple copies by selecting from a majority of matching copies.
