Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions
First Claim
1. A method of performing memory operations in a storage system, the storage system having one or more memory controllers and a set of memory devices, each memory device comprising a plurality of memory portions, the method comprising:
- at a memory controller;
in response to receiving a host command to write data, wherein the host command includes a data packet comprising one or more data divisions and a backup request to backup at least a portion of the data packet;
assigning a first data division of the data packet to a first memory device having M memory portions, wherein M is an integer greater than one, and the first data division includes a sequence of N data segments, wherein N is an integer less than or equal to M;
determining a single relative memory address associated with an address specified by the host command;
assembling a sub-request comprising the single relative memory address, the N data segments of the first data division, and a set of instructions, the set of instructions including instructions;
to write the N data segments in N memory portions of the first memory device, to perform an XOR operation on one or more of the N data segments, and to write a resulting XOR value in a particular memory portion of the M memory portions of the first memory device; and
transmitting the sub-request to every memory portion of the M memory portions of the first memory device.
3 Assignments
0 Petitions
Accused Products
Abstract
A memory controller receives a command to perform a memory operation, the command including a data packet comprising a plurality of data divisions. In response to receiving the command, for each individual memory device, the memory controller assigns to the individual memory device a respective data division, the respective data division including a plurality of data segments, and determines a single relative memory address associated with an address specified by the received command. The memory controller assembles a sub-request comprising a single contiguous instruction portion, which includes the single relative memory address and one or more instructions to perform the memory operation, and the respective data division, the respective data division following the single contiguous instruction portion, and transmits the sub-request to every memory portion of the number of memory portions of the individual memory device.
118 Citations
20 Claims
-
1. A method of performing memory operations in a storage system, the storage system having one or more memory controllers and a set of memory devices, each memory device comprising a plurality of memory portions, the method comprising:
at a memory controller; in response to receiving a host command to write data, wherein the host command includes a data packet comprising one or more data divisions and a backup request to backup at least a portion of the data packet; assigning a first data division of the data packet to a first memory device having M memory portions, wherein M is an integer greater than one, and the first data division includes a sequence of N data segments, wherein N is an integer less than or equal to M; determining a single relative memory address associated with an address specified by the host command; assembling a sub-request comprising the single relative memory address, the N data segments of the first data division, and a set of instructions, the set of instructions including instructions;
to write the N data segments in N memory portions of the first memory device, to perform an XOR operation on one or more of the N data segments, and to write a resulting XOR value in a particular memory portion of the M memory portions of the first memory device; andtransmitting the sub-request to every memory portion of the M memory portions of the first memory device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
9. A storage system, comprising:
-
a storage device that includes a set of memory devices, each memory device comprising a plurality of memory portions; and a memory controller, having one or more processors and memory storing one or more programs to be executed by the one or more processors, configured to control operation of the storage system by; responding to receiving a host command to write data, wherein the host command includes a data packet comprising one or more data divisions and a backup request to backup at least a portion of the data packet, by; assigning a first data division of the data packet to a first memory device having M memory portions, wherein M is an integer greater than one, and the first data division includes a sequence of N data segments, wherein N is an integer less than or equal to M; determining a single relative memory address associated with an address specified by the host command; assembling a sub-request comprising the single relative memory address, the N data segments of the first data division, and a set of instructions, the set of instructions including instructions;
to write the N data segments in N memory portions of the first memory device, to perform an XOR operation on one or more of the N data segments, and to write a resulting XOR value in a particular memory portion of the M memory portions of the first memory device; andtransmitting the sub-request to every memory portion of the M memory portions of the first memory device. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by a memory controller with one or more processors, cause the memory controller to:
-
receive a host command to write data, wherein the host command includes a data packet comprising one or more data divisions and a backup request to backup at least a portion of the data packet; in response to receiving the host command; assign a first data division of the data packet to a first memory device having M memory portions, wherein M is an integer greater than one, and the first data division includes a sequence of N data segments, wherein N is an integer less than or equal to M; determine a single relative memory address associated with an address specified by the host command; assemble a sub-request comprising the single relative memory address, the N data segments of the first data division, and a set of instructions, the set of instructions including instructions;
to write the N data segments in N memory portions of the first memory device, to perform an XOR operation on one or more of the N data segments, and to write a resulting XOR value in a particular memory portion of the M memory portions of the first memory device; andtransmit the sub-request to every memory portion of the M memory portions of the first memory device. - View Dependent Claims (19, 20)
-
Specification