# US 2014/0195872 A1 · Simultaneous data transfer and error control to reduce latency and improve throughput to a host

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

- Number: US 2014/0195872 A1
- Document ID: US20140195872A1
- Status: Published application
- Kind: A1
- Application number: 14/150,667
- Filed: 2014-01-08
- Published: 2014-07-10
- Earliest claimed: 2011-09-02
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Christpoher J. SARCONE; David G. CONROY; Jim KELLER
- Web page: https://patentgrep.com/patent/US20140195872A1

## CPC

- H04L 1/08: by repeating transmission, e.g. Verdan system {(H04L1/1858 and H04L1/189 take precedence)}
- G06F 11/10: Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- H04L 1/004: {by using forward error control (H04L1/0618 takes precedence; coding, decoding or code conversion, for error detection or correction H03M13/00)}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosed embodiments provide a system that transfers data from a storage device to a host. The system includes a communication mechanism that receives a request to read a set of blocks from the host. Next, upon reading each block from the set of blocks from the storage device, the communication mechanism transfers the block over an interface with the host. The system also includes an error-detection apparatus that performs error detection on the block upon reading the block, and an error-correction apparatus that performs error correction on the block if an error is detected in the block. The communication mechanism may then retransfer the block to the host after the error is removed from the block.

## Claims

### Claim 1

A method for transferring data from a storage device to a host, the method comprising:
receiving a request to read a set of blocks from the host;
upon reading, from the storage device, each block from the set of blocks:
transferring the block over an interface with the host, and simultaneously performing error detection on the block; and
if an error is detected in the block:
performing error correction on the block to remove the error, and
retransferring the block to the host after the error is removed from the block.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
if the error is detected in the block, tracking the error correction of the block; and
transmitting a completion signal to the host after all of the blocks have been transferred to the host without errors.

### Claim 3 (depends on 2)

The method of claim 2, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.

### Claim 4 (depends on 1)

The method of claim 1, wherein the block is retransferred to the host in an out-of-order fashion.

### Claim 5 (depends on 1)

The method of claim 1, wherein the blocks are transferred to the host over one or more lanes of the interface.

### Claim 6 (depends on 1)

The method of claim 1, wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.

### Claim 7 (depends on 1)

The method of claim 1, wherein the storage device corresponds to a non-rotating storage device.

### Claim 8

A system for transferring data from a storage device to a host, comprising:
a communication mechanism, configured to:
receive a request to read a set of blocks from the host;
transfer each block from the set of blocks over an interface with the host upon reading the block from the storage device;
an error-detection apparatus configured to perform error detection on the block upon reading the block; and
an error-correction apparatus configured to perform error correction on the block if an error is detected in the block, wherein the communication mechanism is further configured to retransfer the block to the host after the error is removed from the block.

### Claim 9 (depends on 8)

The system of claim 8, further comprising:
an error-tracking apparatus configured to:
track the error correction of the block if the error is detected in the block, and
transmit a completion signal to the host after all of the blocks have been transferred to the host without errors.

### Claim 10 (depends on 9)

The system of claim 9, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block:
removing the block from the data structure.

### Claim 11 (depends on 8)

The system of claim 8, wherein the block is retransferred to the host in an out-of-order fashion.

### Claim 12 (depends on 8)

The system of claim 8, wherein the blocks are transferred to the host over one or more lanes of the interface.

### Claim 13 (depends on 8)

The system of claim 8, wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.

### Claim 14 (depends on 8)

The system of claim 8, wherein the storage device corresponds to a non-rotating storage device.

### Claim 15

A non-transitory computer-readable storage medium storing instructions that, when executed by a processor included in a computer, cause the computer to carry out steps for transferring data from a storage device to a host, the steps including:
receiving a request to read a set of blocks from the host;
upon reading, from the storage device, each block from the set of blocks:
transferring the block over an interface with the host, and
simultaneously performing error detection on the block; and
if an error is detected in the block:
performing error correction on the block to remove the error, and
retransferring the block to the host after the error is removed from the block.

### Claim 16 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the steps further include:
if the error is detected in the block, tracking the error correction of the block; and
transmitting a completion signal to the host after all of the blocks have been transferred to the host without errors.

### Claim 17 (depends on 16)

The non-transitory computer-readable storage medium of claim 16, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.

### Claim 18 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the blocks are transferred to the host over one or more lanes of the interface.

### Claim 19 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.

### Claim 20 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the storage device corresponds to a non-rotating storage device.
