IP Library Granted Patent US 11,347,644
Granted Patent B2
US 11,347,644 · App. 16/653,324 · Granted May 31, 2022

Distributed error detection and correction with hamming code handoff

Inventors: Kai Chirca (Dallas, TX); Daniel Wu (Plano, TX); Matthew David Pierson (Frisco, TX)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F12/084G06F3/064G06F3/0604G06F3/0607G06F3/0632G06F3/0658G06F3/0659G06F3/0673G06F3/0679G06F9/30101G06F9/30123G06F9/3897G06F9/4881G06F9/5016G06F12/0607G06F12/0811G06F12/0815G06F12/0828G06F12/0831G06F12/0855G06F12/0857G06F12/0875G06F12/0891G06F12/10G06F12/1009G06F13/124G06F13/1642G06F13/1663G06F13/1668G06F13/4027H03M13/015H03M13/098H03M13/1575H03M13/276H03M13/2785G06F12/0833G06F12/0846G06F12/0851G06F12/0862G06F2212/1008G06F2212/1016G06F2212/1024G06F2212/1048G06F2212/304G06F2212/452G06F2212/6024G06F2212/657
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,347,644
App. No.
16/653,324
Granted
May 31, 2022
Kind
B2
Abstract

A device includes a data path, a first interface connected to the data path and configured to receive a request from a processor package to write a data value to a memory address, and a controller connected to the data path and configured to receive the request to write the data value to the memory address and to calculate a Hamming code of the data value. The controller is configured to transmit the data value and the Hamming code on the data path. The device includes an external memory interleave connected to the data path. The external memory interleave is configured to receive the data value and calculate a test Hamming code of the data value and to determine whether to send the data value to an external memory interface to be written to the memory address based on a comparison of the Hamming code and the test Hamming code.

Claims (90)

1. A device comprising:

a data path;

a first interface connected to the data path and configured to receive a request from a processor package to write a data value to a memory address;

a controller connected to the data path and configured to:

receive the request to write the data value to the memory address;

calculate a Hamming code of the data value; and

transmit the data value and the Hamming code on the data path;

a queue connected to the data path and configured to:

receive the data value and the Hamming code on the data path from the controller;

calculate a first test Hamming code of the data value;

determine a first number of bit errors associated with the data value based on a comparison of the Hamming code and the first test Hamming code;

in response to the first number of bit errors being greater than one, transmit an error code;

in response to the first number of bit errors being equal to one, correct the data value to generate queue output data on the data path; and

in response to first the number of bit errors being zero, output the data value on the data path as queue output data;

an external memory interface; and

an external memory interleave connected to the data path and to the external memory interface, the external memory interleave configured to:

separate address spaces assigned to the external memory interface;

receive the queue output data and the Hamming code;

calculate a second test Hamming code of the queue output data;

determine a second number of bit errors associated with the queue output data based on a comparison of the Hamming code and the second test Hamming code;

in response to the second number of bit errors being greater than one, transmit an error code;

in response to the second number of bit errors being equal to one, correct the queue output data to generate output data values and transmit the corrected data values and the Hamming code to an external memory device; and

in response to the second number of bit errors being equal to zero, transmit the queue output data as the output data values and the Hamming code to the external memory device.

2. The device of claim 1 , wherein the Hamming code includes an out of band Hamming code located either before or after the data value.

3. The device of claim 1 , wherein the controller is further configured to determine Hamming code of the memory address and to transmit the memory address and the Hamming code of the memory address on the data path with the data value and the Hamming code of the data value.

4. The device of claim 1 , further comprising a snoop filter bank configured to store a snoop filter state indicating a status of the memory address with a cache of the processor package, wherein the controller is configured to:

calculate a parity bit based on the snoop filter state; and

store the snoop filter state and the parity bit in the snoop filter bank.

5. The device of claim 1 , wherein the controller is further configured to:

issue a request to read a second memory address to the external memory interleave;

determine an address Hamming code of the second memory address;

receive a result of the request to read the second memory address from the external memory interleave, the result including a stored Hamming code; and

perform an exclusive OR operation on the address Hamming code and the stored Hamming code to remove the stored Hamming code from the result.

6. A system comprising:

a processor package;

an external memory device; and

a multi-core shared memory controller (MSMC) including:

a data path;

a first interface connected to the data path and the processor package, wherein the first interface is configured to receive a request from the processor package to write a data value to a memory address of the external memory device;

a controller connected to the data path and configured to:

receive the request to write the data value to the memory address;

calculate a Hamming code of the data value; and

transmit the data value and the Hamming code on the data path;

a queue connected to the data path and configured to:

receive the data value on the data path from the controller;

calculate a first test Hamming code of the data value;

determine a first number of bit errors associated with the data value based on a comparison of the Hamming code and the first test Hamming code;

in response to the first number of bit errors being greater than one, transmit an error code;

in response to the first number of bit errors being equal to one, correct the data value to generate queue output data on the data path; and

in response to first the number of bit errors being zero, output the data value on the data path as queue output data;

an external memory interface connected to the external memory device;

an external memory interleave connected to the data path and to the external memory interface, the external memory interleave configured to:

separate address spaces assigned to the external memory interface;

receive the queue output data and the Hamming code;

calculate a second test Hamming code of the queue output data;

determine a second number of bit errors associated with the queue output data based on a comparison of the Hamming code and the second test Hamming code;

in response to the second number of bit errors being greater than one, transmit an error code;

in response to the second number of bit errors being equal to one, correct the queue output data to generate output data values and transmit the corrected data values and the Hamming code to the external memory device; and

in response to the second number of bit errors being equal to zero, transmit the queue output data as the output data values and the Hamming code to the external memory device.

7. The system of claim 6 , wherein the Hamming code includes an out of band Hamming code.

8. The system of claim 6 , wherein the controller is further configured to determine Hamming code of the memory address and to transmit the memory address and the Hamming code of the memory address on the data path with the data value and the Hamming code of the data value.

9. The system of claim 6 , further comprising a snoop filter bank configured to store a snoop filter state indicating a status of the memory address with a cache of the processor package, wherein the controller is configured to:

calculate a parity bit based on the snoop filter state; and

store the snoop filter state and the parity bit in the snoop filter bank.

10. The system of claim 6 , wherein the controller is further configured to:

issue a request to read a second memory address to the external memory interleave;

determine an address Hamming code of the second memory address;

receive a result of the request to read the second memory address from the external memory interleave, the result including a stored Hamming code; and

perform an exclusive OR operation on the address Hamming code and the stored Hamming code to remove the stored Hamming code from the result.

11. A method comprising:

receiving, at a controller of a multi-core shared memory controller (MSMC), a request to write a data value to a memory address of an external memory device connected to the MSMC;

calculating, a Hamming code of the data value;

transmitting the data value and the Hamming code to a queue connected to a data path,

wherein the queue is configured to:

receive the data value and the Hamming code on the data path from the controller;

calculate a first test Hamming code of the data value;

determine a first number of bit errors associated with the data value based on a comparison of the Hamming code and the first test Hamming code;

in response to the first number of bit errors being greater than one, transmit an error code;

in response to the first number of bit errors being equal to one, correct the data value to generate queue output data on the data path; and

in response to first the number of bit errors being zero, output the data value on the data path as queue output data;

receiving, by an external memory interleave connected to the data path and to the external memory interface, the queue output data and the Hamming code, the external memory interleave configured to:

separate address spaces assigned to the external memory interface;

calculate a second test Hamming code of the queue output data,

determine a second number of bit errors associated with the queue output data based on a comparison of the Hamming code and the second test Hamming code,

in response to the second number of bit errors being greater than one, transmit an error code;

in response to the second number of bit errors being equal to one, correct the queue output data to generate output data values and transmit the corrected data values and the Hamming code to the external memory device; and

in response to the second number of bit errors being equal to zero, transmit the queue output data as the output data values and the Hamming code to the external memory device.

12. The method of claim 11 , further comprising, outputting the Hamming code of the memory address to the external memory interface for writing to the external memory device with the data value and the Hamming code of the data value.

13. The method of claim 11 , further comprising correcting the data value based on a difference between the Hamming code and the test Hamming code in response to determining that the difference indicates a single bit error.

14. The method of claim 11 , wherein the Hamming code includes an out of band Hamming code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2019
From: CHIRCA, KAI; WU, DANIEL; PIERSON, MATTHEW DAVID
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 050764/0471 →
Continuity (2)
Provisional Application 62745842 · Oct 15, 2018
Related Publication 20200119753A1 · Apr 16, 2020
Cited By (2)
US 12,423,234 US 12,455,784