Ruggedized memory device
First Claim
1. A method of processing an atomic transaction in a non-volatile storage device, comprising:
- receiving a set of commands at the non-volatile storage device, wherein the set of commands comprises a plurality of write commands, and each write command is associated with a corresponding logical block address and comprises data;
processing each of the plurality of write commands, comprising;
(i) writing the data from each write command to a non-volatile memory within the non-volatile storage device; and
(ii) conditionally associating the data received from each write command with its corresponding logical block address;
receiving an end of set command indicating an end of the set of commands; and
in response to receiving the end of set command, and without moving the data within the non-volatile storage device, for each logical block address that is associated with a write command in the set of commands, unconditionally associating with the logical block address the data of the last command of the set of commands conditionally associated with the logical block address.
2 Assignments
0 Petitions
Accused Products
Abstract
A non-volatile storage device with built-in ruggedized features is disclosed. The device processes a write command to a logical block address by writing the data from the command to a non-volatile memory within the non-volatile storage device and conditionally associating the data received from the command with its corresponding logical block address. Two or more received write commands define a set of commands associated with an atomic transaction. When an end of set command is received, the device unconditionally associates the received data with each write command with its corresponding logical block address. If a power loss interrupts the reception of a set of commands, the non-volatile storage device may recover the last consistent data state before the atomic transaction was started. A write command transaction identifier allows the device to associate the command with a thread of commands that define an atomic transaction in a multithreaded system.
-
Citations
33 Claims
-
1. A method of processing an atomic transaction in a non-volatile storage device, comprising:
-
receiving a set of commands at the non-volatile storage device, wherein the set of commands comprises a plurality of write commands, and each write command is associated with a corresponding logical block address and comprises data; processing each of the plurality of write commands, comprising; (i) writing the data from each write command to a non-volatile memory within the non-volatile storage device; and (ii) conditionally associating the data received from each write command with its corresponding logical block address; receiving an end of set command indicating an end of the set of commands; and in response to receiving the end of set command, and without moving the data within the non-volatile storage device, for each logical block address that is associated with a write command in the set of commands, unconditionally associating with the logical block address the data of the last command of the set of commands conditionally associated with the logical block address. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of processing an atomic transaction in a non-volatile storage device, comprising:
-
receiving a set of commands at the non-volatile storage device, wherein the set of commands comprises a plurality of write commands, and each write command is associated with a corresponding logical block address and comprises data and a transaction identifier; processing each of the plurality of write commands, comprising; (i) writing the data from each write command to a non-volatile memory within the non-volatile storage device; and (ii) conditionally associating the data received from each write command with its corresponding logical block address; receiving an end of set command indicating an end of the set of commands associated with the transaction identifier; and in response to receiving the end of set command, for each logical block address that is associated with a write command in the set of commands, unconditionally associating with the logical block address the data of the last command of the set of commands conditionally associated with the logical block address. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. A method of processing a read command in a non-volatile storage device, comprising:
-
receiving a read command, wherein the read command specifies requested data; selecting data in response to receiving the read command according to one of two read procedures, wherein a first read procedure comprises selecting a most recently written version of the requested data not associated with an open transaction, and a second read procedure comprises selecting a most recently written version of the requested data; and returning the data. - View Dependent Claims (31)
-
-
32. A method of writing data to a non-volatile storage device, comprising:
-
requesting a transaction identifier from the non-volatile storage device; receiving the transaction identifier from the non-volatile storage device; transmitting a set of commands to the non-volatile storage device, wherein the set of commands comprises a plurality of commands associated with the transaction identifier, and wherein at least one command in the set comprises data; and transmitting an end of set command to the non-volatile storage device indicating an end of the set of commands associated with the transaction identifier. - View Dependent Claims (33)
-
Specification