IP Library › Granted Patent US 10,248,497
Granted Patent B2
US 10,248,497 · App. 14/521,183 · Granted Apr 2, 2019

Error detection and correction utilizing locally stored parity information

Inventors: Prashant Jayaprakash Nair (Atlanta, GA); David A. Roberts (Santa Cruz, CA)
Assignee: Advanced Micro Devices, Inc.
G06F11/1004G06F11/108
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,248,497
App. No.
14/521,183
Granted
Apr 2, 2019
Kind
B2
Abstract

A processing system includes a memory coupled to a processor. The memory stores data blocks, with each data block having a separate associated checksum value stored along with the data block in the memory. The processor has a storage location that stores parity information for the data blocks, with the parity information having a plurality of parity blocks. Each parity block represents a parity of a corresponding set of data blocks. The parity blocks can be accessed for use in error detection and correction schemes used by the processing system.

Claims (49)

1. A method comprising:

implementing a memory external to a processor, the memory comprising multiple banks of data, each data bank comprising a plurality of data blocks stored at locations in the memory, each data block of the plurality of data blocks including an associated checksum value for error detection;

storing a plurality of parity blocks for error correction in a cache on the processor, each parity block corresponding to a set of data blocks of the plurality of data blocks;

accessing a first data block and its associated first checksum value from the set of data blocks;

detecting an error in the first data block based on the associated first checksum value;

storing, by the processor, a modified data value to the first data block in the memory;

determining, at the processor, an updated checksum value for the first data block based on the modified data value;

storing the updated checksum value to the memory;

determining, at the processor, an updated parity block for a first set of data blocks that include the first data block based on the modified data value; and

storing the updated parity block to the cache in the processor.

2. The method of claim 1 , further comprising:

accessing from the cache the first parity block corresponding to the first data block; and

generating a corrected first data block by correcting the error in the first data block based on the first parity block.

3. The method of claim 2 , further comprising:

storing, by the processor, the corrected first data block to the memory.

4. The method of claim 1 , wherein the checksum value is a cyclical redundancy check (CRC) value.

5. The method of claim 1 , wherein each data block is a corresponding row of the memory and each set of data blocks comprises rows across multiple banks of the memory.

6. The method of claim 1 , wherein each parity block of the plurality of parity blocks comprises a set of parity bits, each parity bit representing a parity calculated for a corresponding bit position of the one or more data blocks in the set of data blocks.

7. A system comprising:

a processor comprising a cache on the processor for storing a plurality of parity blocks, each parity block corresponding to a set of data blocks;

a memory external to the processor and comprising multiple banks of data, each data bank comprising a plurality of data blocks stored at locations in the memory, each data block of the plurality of data blocks including an associated checksum value for error detection; and

an error detection and correction module operative to:

access a first data block and a first checksum value of the first data block;

detect an error in the first data block based on the first checksum value;

access a first parity block for the set of data blocks that includes the first data block;

correct the error in the first data block based on the first parity block by storing a modified data value to the first data block in the memory;

determine an updated parity block for a first set of data blocks that includes the first data block based on the modified data value;

store the updated parity block to the cache;

determine an updated checksum value for the first data block based on the modified data value;

store the updated checksum value to the memory;

determine an updated parity block for a first set of data blocks that include the first data block based on the modified data value; and

store the updated parity block to the cache.

8. The system of claim 7 , wherein the checksum value is a cyclical redundancy check (CRC) value.

9. The system of claim 7 , wherein each data block is a corresponding row of the memory and each set of data blocks comprises rows across multiple banks of the memory.

10. The system of claim 7 , wherein each parity block of the plurality of parity blocks comprises a set of parity bits, each parity bit representing a parity calculated for a corresponding bit position of the one or more data blocks in the set of data blocks.

11. A non-transitory computer readable medium embodying a set of executable instructions, which when executed by a computer system performs a process comprising:

accessing a memory external to a processor, the memory comprising multiple banks of data, each data bank comprising a plurality of data blocks stored at locations in the memory, each data block of the plurality of data blocks including a separate checksum value for error detection;

storing a plurality of parity blocks for error correction in a cache on the processor, each parity block corresponding to a set of data blocks of the plurality of data blocks;

in response to transmitting one or more data blocks from the set of data blocks, determining based on the separate checksum value, whether a data error exists;

in response to determining that the data error exists, accessing, from the cache, the parity block corresponding to the set of data blocks;

correcting the data error by storing a modified data value to a first data block in the memory;

determining an updated checksum value for the first data block based on the modified data value;

storing the updated checksum value to the memory;

determining an updated parity block for a first set of data blocks that include the first data block based on the modified data value;

storing the updated parity block to a storage location of the processor.

12. The non-transitory computer readable medium of claim 11 , further comprising:

storing the corrected data block set to the memory.

13. The non-transitory computer readable medium of claim 11 , wherein the checksum value is a cyclical redundancy check (CRC) value.

14. The non-transitory computer readable medium of claim 11 , wherein each parity block of the plurality of parity blocks comprises a set of parity bits, each parity bit representing a parity calculated for a corresponding bit position of the one or more data blocks in the set of data blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2014
From: NAIR, PRASHANT JAYAPRAKASH; ROBERTS, DAVID A.
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 034013/0374 →
Continuity (1)
Related Publication 20160117221A1 · Apr 28, 2016
Cited By (2)
US 12,339,744 US 12,664,051