IP Library Granted Patent US 11,704,183
Granted Patent B2
US 11,704,183 · App. 17/544,074 · Granted Jul 18, 2023

Data integrity for persistent memory systems and the like

Inventors: Kedarnath Balakrishnan (Bangalore, IN); James R. Magro (Lakeway, TX); Kevin Michael Lepak (Austin, TX); Vilas Sridharan (Brookline, MA)
Assignee: Advanced Micro Devices, Inc.
G06F11/0772G06F11/0727G06F11/0751G06F11/1004G06F11/1068H03M13/29
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 11,704,183
App. No.
17/544,074
Granted
Jul 18, 2023
Kind
B2
Abstract

A data processor includes provides memory commands to a memory channel according to predetermined criteria. The data processor includes a first error code generation circuit, a second error code generation circuit, and a queue. The first error code generation circuit generates a first type of error code in response to data of a write request. The second error code generation circuit generates a second type of error code for the write request, the second type of error code different from the first type of error code. The queue is coupled to the first error code generation circuit and to the second error code generation circuit, for provides write commands to an interface, the write commands including the data, the first type of error code, and the second type of error code.

Claims (58)

1. A data processor for providing memory commands to a memory channel according to predetermined criteria, comprising:

a first error code generation circuit for generating a first type of error code in response to data of a write request;

a second error code generation circuit for generating a second type of error code for said write request, said second type of error code different from said first type of error code; and

a queue coupled to said first error code generation circuit and to said second error code generation circuit, for providing write commands to an interface, said write commands including said data, said first type of error code, and said second type of error code.

2. The data processor of claim 1 , further comprising:

a packetizer and driver for providing said first type of error code in a predetermined error-correcting code (ECC) field of a write data packet, and bits of said second type of error code in corresponding bits of a predetermined user data field of said write data packet.

3. The data processor of claim 2 , further comprising:

a receiver and de-packetizer for extracting read data from a predetermined data portion of a read response packet, and said second type of error code in said predetermined user data field of said write data packet.

4. The data processor of claim 1 , wherein:

said second error code generation circuit generates said second type of error code using said data and an address of said write request.

5. The data processor of claim 1 , wherein:

said second error code generation circuit further generates said second type of error code using metadata of said write request.

6. The data processor of claim 5 , wherein:

said second error code generation circuit generates said second type of error code further in response to a poison bit of said metadata.

7. The data processor of claim 1 , wherein:

said second type of error code comprises a cyclic redundancy check (CRC) code.

8. The data processor of claim 7 , wherein:

said first type of error code comprises an error-correcting code (ECC) with single error correction and multiple error detection.

9. The data processor of claim 8 , further comprising:

a first error code checking circuit for generating said first type of error code in response to read data of a read response packet, and comparing said first type of error code to a first error code received from said memory channel and selectively generating a first type of error signal in response to said comparing; and

a second error code checking circuit for generating said second type of error code in response to said read data and an address of said read response packet, and comparing said second type of error code to a second error code in said read response packet received from said memory channel and selectively generating a second type of error signal in response to said comparing said second type of error code.

10. A data processing system, comprising:

a memory channel;

a memory coupled to said memory channel; and

a data processor coupled to said memory channel that accesses said memory using a packet structure defining a plurality of commands and having corresponding address bits, data bits, and user bits, said data processor communicating with said memory over said memory channel using a first type of error code, and calculating a second type of error code different from said first type of error code and appending each bit of said second type of error code as a corresponding one of said user bits,

wherein said memory stores said user bits in response to a write command, and transfers said user bits to said data processor in a read response packet in response to a read command.

11. The data processing system of claim 10 , wherein:

in response to a read access request, said data processor sends a send packet to said memory, calculates a multi-bit cyclic redundancy check (CRC) code in response to received data of a corresponding read response packet, and compares corresponding user bits from said corresponding read response packet to said multi-bit CRC code, and activates an error signal in response to a difference between said corresponding user bits and said multi-bit CRC code.

12. The data processing system of claim 10 , wherein:

said first type of error code comprises a cyclic redundancy check (CRC) code; and

said second type of error code comprises an error-correcting code (ECC).

13. The data processing system of claim 10 , wherein said memory comprises a non-volatile dual inline memory module with persistent storage (NVDIMM-P).

14. A method of writing data from a data processor to a memory device on a memory channel, comprising:

receiving a write request;

generating a first type of error code according to said write request;

generating a second type of error code different from said first type of error code according to said write request;

forming a write packet having corresponding address bits, corresponding data bits, corresponding first error code bits of said first type of error code in a predetermined error correcting code (ECC) field, and corresponding second error code bits of said second type of error code in a predetermined user bit field; and

transferring said write packet to the memory device over the memory channel.

15. The method of claim 14 , further comprising

determining whether said write packet was correctly received over said memory channel using said first type of error code, and providing an error response if said write packet was not correctly received over said memory channel; and

storing said second type of error code in said memory device.

16. The method of claim 14 , wherein:

generating said first type of error code comprises generating an ECC with single error correction and multiple error detection; and

generating said second type of error code comprises generating a cyclic redundancy check (CRC) code.

17. The method of claim 14 , wherein:

generating said first type of error code according to said write request comprises generating said first type of error code according to a write address, write data, and a predetermined metadata bit of said write request.

18. The method of claim 14 , wherein forming the write packet comprises:

selectively forming the write packet having said corresponding address bits, said corresponding data bits, said corresponding first error code bits in said predetermined error correcting code field, and said corresponding second error code bits in said predetermined user bit field if the memory device is a nonvolatile dynamic access memory with persistent storage (NVDIMM-P).

19. The method of claim 18 , further comprising:

receiving a read response packet from the memory device;

generating said first type of error code in response to read data of said read response packet, and comparing said first type of error code to a first error code in said read response packet, and selectively generating a first type of error signal in response to said comparing; and

generating said second type of error code in response to said read data and an address of said read response packet, and comparing said second type of error code to a second error code in said read response packet, and selectively generating a second type of error signal in response to said comparing said second type of error code.

20. The method of claim 19 , further comprising:

receiving a read request;

sending a read packet to the memory device in response to said read request;

receiving a response ready packet from the memory device;

sending a send command to the memory device in response to said response ready packet; and

receiving said read response packet after sending said send command.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2022
From: BALAKRISHNAN, KEDARNATH; MAGRO, JAMES R.; LEPAK, KEVIN MICHAEL; SRIDHARAN, VILAS
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 058714/0644 →
Priority Claims (1)
IN 201911032592 · Aug 12, 2019 · national
Continuity (2)
Continuation 16705913 · Dec 6, 2019
Related Publication 20220091921A1 · Mar 24, 2022
Cited By (1)
US 12,487,925