# US 10,372,366 B2 · Memory system with multiple striping of RAID groups and method for performing the same

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

- Number: US 10,372,366 B2
- Document ID: US10372366B2
- Status: Granted
- Kind: B2
- Application number: 15/467,515
- Filed: 2017-03-23
- Published: 2017-07-13
- Granted: 2019-08-06
- Earliest claimed: 2007-03-29
- Assignees: Violin Systems LLC
- Applicants: Violin Systems LLC
- Inventors: Jon C. R. Bennett
- Web page: https://patentgrep.com/patent/US10372366B2

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G11B 20/1833: {by adding special lists or symbols to the coded information (G11B20/1806, G11B20/1866 take precedence)}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G06F 3/0611: {in relation to response time}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G11B 2220/60: Solid state media
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A data memory system is described, where there may be an asymmetry in the time needed to write or erase data and the time needed to read data. The data may be stored using a RAID data storage arrangement and the reading, writing and erasing operations on the modules arranged such that the erasing and writing operations may be performed without significant latency for performing a read operation. Where a failure of a memory module in the memory system occurs, methods for recovering the data of the failed module are disclosed which may selected in accordance with policies that may relate to the minimizing the possibility of irretrievable data loss, or degradation of latency performance.

## Claims

### Claim 1

A memory system, comprising:
a controller in communication with a plurality of memory modules, the memory system operable to perform: a write data operation responsive to a request from a user to store data; a read data operation in response to a request from the user for previously stored data; or, an erase operation; and
a group of memory modules of the plurality of memory modules configured such that data received from the user, and redundancy data for the user data that is computed by the memory system, is written by the write data operation,
wherein the memory system is operable to perform the erase operation on the memory modules of the group of memory modules such that, responsive to a user request to read data previously stored in one or more memory modules of the group of memory modules, the requested stored user data is provided in response to the user request; and, when the erase operation prevents the read data operation from being performed on the memory module of the group of memory modules where the requested user data is stored, sufficient previously stored data and redundancy data for the previously stored data is read from memory modules of the group of memory modules to provide the requested stored user data, with a time delay of less than a time period required to perform an erase operation by the memory module.

### Claim 2 (depends on 1)

The memory system of claim 1, wherein the data requested by the user is provided to the user prior to a completion of the erase operation.

### Claim 3 (depends on 1)

The memory system of claim 1, wherein the sufficient previously stored data and the redundancy data are used to reconstruct the data when the erase operation prevents the read data operation from being performed.

### Claim 4 (depends on 1)

The memory system of claim 1, wherein when the redundancy data is single parity data, the user data is reconstructed using an exclusive-OR operation.

### Claim 5 (depends on 1)

The memory system of claim 1, wherein the redundancy data is dual parity data.

### Claim 6 (depends on 1)

The memory system of claim 1, where memory modules of the group of memory modules are Solid State Disks (SSD).

### Claim 7 (depends on 6)

The memory system of claim 6, wherein the SSDs have an industry standard protocol.

### Claim 8 (depends on 7)

The memory system of claim 7, wherein the industry standard protocol is one of SATA, SCSI or Fibre Channel.

### Claim 9 (depends on 1)

The memory system of claim 1, wherein memory modules are NAND FLASH chips, or NAND FLASH dies.

### Claim 10 (depends on 1)

The memory system of claim 1, wherein the memory modules are comprised of comprised of NAND FLASH memory circuits.

### Claim 11 (depends on 1)

The memory system of claim 1, wherein the group of memory modules is configured as a RAID (Redundant Array of Independent Disks) group.

### Claim 12

A method of storing data in a memory system, including:
providing a controller in communication with a plurality of memory modules and with a user;
each memory module of the plurality of memory modules comprise NAND FLASH memory circuits operable to perform a read data operation, to perform a write data operation, or to perform an erase operation; and
in response to data received from the user by the controller to be stored in the memory system:
computing redundancy data for the user data;
selecting a group of memory modules of the plurality of memory modules;
performing the write data operation to memory modules of the selected group of memory modules for the user data and the redundancy data; and,
controlling at least one of erasing or reading operations of the memory modules of the group of memory modules where the user data or redundancy data is stored such that:
in response to a request for stored data received from the user:
when the erase operation or the write data operation prevents the read data operation on one or more memory modules where the requested user data is stored, responding to the user request for data stored on one or more memory modules of the group of memory modules comprises reading sufficient stored data and redundancy data from other memory modules of the group of memory modules and reconstructing the requested stored user data.

### Claim 13 (depends on 12)

The method of claim 12, wherein when the redundancy data is single parity data; and
responding to the user request for data when less than all of the requested user data has been read from the memory modules due to the write data or erase operations by computing an exclusive-OR (X-OR) of the less than all of the requested user data and the parity data that has been read from the memory modules.

### Claim 14 (depends on 12)

The method of claim 12, further comprising sending a read command only to the modules of the group of modules that are not performing write operations or erase operations.

### Claim 15 (depends on 12)

The method of claim 12, further comprising sending a read command to all of the modules of the group of modules.

### Claim 16 (depends on 12)

The method of claim 12, wherein the group of memory modules is configured as a RAID (Redundant Array of Independent Disks) group.

### Claim 17

A memory system, comprising:
a controller in communication with a plurality of memory modules the memory system operable to perform: a write data operation responsive to a request from a user to store data; a read data operation in response to a request from the user for previously stored data; or, an erase operation; and
a group of memory modules of the plurality of memory modules configured such that data received from the user, and redundancy data for the user data that is computed by the memory system, is written by the write data operation,
wherein the memory system is operable to perform the write data operation on the memory modules of the group of memory modules such that, responsive to a user request to read data previously stored in one or more memory modules of the group of memory modules, the requested stored user data is provided in response to the user request; and, when the write data operation prevents the read data operation from being performed on the memory module of the group of memory modules where the requested user data is stored, sufficient previously stored data and redundancy data for the previously stored data is read from memory modules of the group of memory modules to provide the requested stored user data, with a time delay of less than a time period required to perform a write data operation by the memory module.

### Claim 18 (depends on 17)

The memory system of claim 17, wherein the write data operation is a plurality of write data operations performed to the memory module and the time delay is less than a time period required to perform the plurality of the write data operations.

### Claim 19 (depends on 17)

The memory system of claim 17, wherein the data requested by the user is provided to the user prior to a completion of the write data operation.

### Claim 20 (depends on 17)

The memory system of claim 17, where memory modules of the group of memory modules are Solid State Disks (SSD).
