# US 11,442,813 B2 · Memory devices including execution trace buffers

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

- Number: US 11,442,813 B2
- Document ID: US11442813B2
- Status: Granted
- Kind: B2
- Application number: 16/606,765
- Filed: 2017-10-11
- Published: 2020-07-23
- Granted: 2022-09-13
- Earliest claimed: 2017-10-11
- Assignees: Hewlett-Packard Development Company, L.P.
- Applicants: Hewlett-Packard Development Company, L.P.
- Inventors: Ronaldo Rod Ferreira; Taciano Perez
- Web page: https://patentgrep.com/patent/US11442813B2

## CPC

- G06F 11/141: {for bus or memory accesses}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1666: {where the redundant component is memory or memory area}
- G06F 11/2017: {where memory access, memory control or I/O control functionality is redundant (redundant communication control functionality G06F11/2005; redundant storage control functionality G06F11/2089)}
- G06F 11/2056: {by mirroring}
- G06F 2201/805: Real-time
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 29/702: {by replacing auxiliary circuits, e.g. spare voltage generators, decoders or sense amplifiers, to be used instead of defective ones}
- G11C 2029/0409: {Online test}
- G11C 2029/0411: {Online error correction}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A memory device includes a non-volatile memory to store data, an execution trace buffer, and a media controller. The media controller receives data-modifying commands and adds the data-modifying commands to the execution trace buffer. The media controller executes the data-modifying commands to modify the data stored in the non-volatile memory and detects errors in the data stored in the non-volatile memory. The media controller repeats execution of data-modifying commands from the execution trace buffer in response to detecting an error.

## Claims

### Claim 1

A memory device comprising:
a non-volatile memory to store data;
a first execution trace buffer;
a second execution trace buffer; and
a media controller to receive data-modifying commands, add the data-modifying commands to the first execution trace buffer and the second execution trace buffer, execute the data-modifying commands to modify the data stored in the non-volatile memory, detect errors in the data stored in the non-volatile memory, and repeat execution of data-modifying commands from the first execution trace buffer or the second execution trace buffer in response to detecting an error in the data stored in the non-volatile memory;
wherein in response to detecting the error in the data stored in the non-volatile memory, the media controller inspects the first execution trace buffer for errors, and repeats execution of data-modifying commands from the first execution trace buffer in response to detecting no errors in the first execution trace buffer; and
wherein the media controller inspects the second execution trace buffer for errors in response to detecting errors in the first execution trace buffer, and repeats execution of data-modifying commands from the second execution trace buffer hi response to detecting no errors in the second execution trace buffer.

### Claim 2 (depends on 1)

The memory device of claim 1, wherein each data-modifying command comprises a datum and an address range of the non-volatile memory where the datum is to be stored, and
wherein the media controller detects errors in the data stored in the non-volatile memory within a data address range and repeats execution of the data-modifying commands from the first execution trace buffer and the second execution trace buffer that correspond to the data address range in response to detecting the error in the data stored in the non-volatile memory.

### Claim 3 (depends on 1)

The memory device of claim 1, wherein the media controller detects errors via at least one of cyclic redundancy checks, parity bits, and checksums.

### Claim 4 (depends on 1)

The memory device of claim 1, wherein the first execution trace buffer or the second execution trace buffer comprises a circular log queue to persistently store the data-modifying commands.

### Claim 5 (depends on 1)

The memory device of claim 1, wherein the memory device is a non-volatile dual in-line memory module (NVDIMM).

### Claim 6

A memory device comprising:
a non-volatile memory to store data;
a first execution trace buffer;
a second execution trace buffer; and
a media controller to receive data-modifying commands, add the data-modifying commands to the first execution trace buffer and the second execution trace buffer, execute the data-modifying commands to modify the data stored in the non-volatile memory, detect errors in the data stored in the non-volatile memory, and repeat execution of data-modifying commands from the first execution trace buffer or the second execution trace buffer in response to detecting an error in the data stored in the non-volatile memory;
wherein hi response to detecting the error hi the data stored hi the non-volatile memory, the media controller inspects the first execution trace buffer for errors, and repeats execution of data-modifying commands from the first execution trace buffer hi response to detecting no errors hi the first execution trace buffer; and
wherein the media controller inspects the second execution trace buffer for errors in response to detecting errors in the first execution trace buffer, and repeats execution of data-modifying commands from the second execution trace buffer in response to detecting no errors in the second execution trace buffer.

### Claim 7 (depends on 6)

The memory device of claim 6, wherein the media controller detects errors via at least one of cyclic redundancy checks, parity bits, and checksums.

### Claim 8 (depends on 7)

The memory device of claim 7, wherein the first execution trace buffer or the second execution trace buffer comprises a circular log queue to persistently store the data-modifying commands.

### Claim 9 (depends on 6)

The memory device of claim 6, wherein the media controller reconstructs a consistent copy of the data-modifying commands from the first execution trace buffer and the second execution trace buffer in response to detecting errors in the second execution trace buffer for data-modifying commands different from the data-modifying commands for which errors were detected in the first execution trace buffer, and repeats execution of data-modifying commands from the consistent copy.

### Claim 10 (depends on 6)

The memory device of claim 6, wherein the media controller repeats execution of data-modifying commands from the first execution trace buffer or the second execution trace buffer a predetermined number of times in response to detecting the error in the data stored in the non-volatile memory has not been corrected by the repeated execution prior to marking the error as uncorrectabie.

### Claim 11

A method comprising:
receiving data-modifying commands at a non-volatile memory device;
adding the data-modifying commands to a first execution trace buffer and a second execution trace buffer of the non-volatile memory device;
executing the data-modifying commands to modify data stored in the non-volatile memory device;
detecting errors in the data stored in the non-volatile memory device;
correcting detected errors by replaying data-modifying commands from the first execution trace buffer or the second execution trace buffer; and
wherein in response to detecting errors in the data stored in the non-volatile memory, a media controller inspects the first execution trace buffer for errors, and repeats execution of data-modifying commands from the first execution trace buffer in response to detecting no errors in the first execution trace buffer; and
wherein the media controller inspects the second execution trace buffer for errors in response to detecting errors in the first execution trace buffer, and repeats execution of data-modifying commands from the second execution trace buffer in response to detecting no errors in the second execution trace buffer.

### Claim 12 (depends on 11)

The method of claim 11, wherein detecting errors in the data stored in the non-volatile memory comprises performing a self-check after the execution of each data-modifying command.

### Claim 13 (depends on 11)

The method of claim 11, wherein detecting errors in the data stored in the non-volatile memory comprises performing a self-check after the execution of a predetermined number of data-modifying commands.

### Claim 14 (depends on 11)

The method of claim 11, wherein correcting detected errors in the data stored in the non-volatile memory comprises traversing the first execution trace buffer and the second execution trace buffer and selecting all data-modifying commands corresponding to detected errors in the data stored in the non-volatile memory and replaying the selected data-modifying commands.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
returning a failure notification in response to detecting an uncorrectable error.
