IP Library › Granted Patent US 9,459,979
Granted Patent B2
US 9,459,979 · App. 13/962,768 · Granted Oct 4, 2016

Detection of hardware errors using redundant transactions for system test

Inventors: Harold W. Cain, III (Katonah, NY); David M. Daly (Croton-on-Hudson, NY); Kattamuri Ekanadham (Mohegan Lake, NY); Michael C. Huang (Rochester, NY); Jose E. Moreira (Irvington, NY); Mauricio J. Serrano (Bronx, NY)
Assignee: International Business Machines Corporation
G06F11/273G06F11/1608G06F11/181G06F11/2242G06F11/26G06F11/263G06F11/1629G06F11/18
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 9,459,979
App. No.
13/962,768
Granted
Oct 4, 2016
Kind
B2
Abstract

A method for detecting errors in hardware including running a transaction on a plurality of cores, wherein each of the cores runs a respective copy of the transaction, synchronizing the transaction on the cores, comparing results of the transaction on the cores, and determining an error in one or more of the cores.

Claims (53)

1. A method for detecting errors in hardware, the method comprising:

running a transaction on a plurality of cores, wherein each of the cores runs a respective copy of the transaction;

periodically synchronizing the transaction on the cores; and

comparing results of the transaction on the cores;

determining an error in one or more of the cores;

wherein synchronizing the transaction further comprises:

suspending the transaction running on each of the cores at a same instruction;

reading an address of a modified cache line in a transactional store of a first core of the plurality of cores;

writing the address and a value at the address as first data to a common memory area shared by the cores;

writing data from registers of the first core to the common memory area; and

sending a bus transaction including a pointer to the common memory area to a second core of the plurality of cores.

2. The method of claim 1 , wherein the first and second cores are components of a multi-core processor.

3. The method of claim 1 , further comprising

copying a thread of the transaction from a first core of the plurality of cores to a second core of the plurality of cores before running the transaction on the plurality of cores, wherein the transaction includes at least one thread.

4. The method of claim 1 , further comprising:

verifying a match for the first data to second data stored in a speculative store of the second core; and

marking, by the second core, cache lines in the common area corresponding to matched first and second data.

5. The method of claim 4 , wherein verifying the match further comprises:

walking, by the second core, the speculative store of the second core and identifying one or more cache lines in the speculative store of the second core that are not marked as matching; and

searching corresponding cache lines in the common memory area containing the first data to verify the match.

6. The method of claim 4 , further comprising verifying that all the cache lines in the common memory area are marked as matched.

7. The method of claim 1 , further comprising matching data from registers of the second core to data from the registers of the first core written to the common memory area.

8. The method of claim 1 , further comprising determining a successful transaction upon:

matching all cache lines in a speculative store of the second core and all cache lines of the first core written in the common memory area; and

matching all registers of the second core to all register fails of the first core written in the common memory area.

9. The method of claim 1 , wherein comparing results of the transaction on the cores further comprises recording data about a thread running on a given one of the cores upon determining a difference between the results of the transaction on the cores.

10. The method of claim 9 , wherein the data includes at least one of a start and end program counter (PC) of the transaction, a timestamp of when the transaction ran, and which cores the transaction was run on.

11. A computer program product for detecting errors in hardware, the computer program product comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising:

computer readable program code configured to run a transaction on a plurality of cores, wherein each of the cores runs a respective copy of the transaction;

computer readable program code configured to periodically synchronize the transaction on the cores;

computer readable program code configured to compare results of the transaction on the cores; and

computer readable program code configured to determine an error in one or more of the cores;

wherein computer readable program code configured to synchronize the transaction on the cores further comprises:

computer readable program code configured to suspend the transaction running on each of the cores at a same instruction;

computer readable program code configured to read an address of a modified cache line in a transactional store of a first core of the plurality of cores;

computer readable program code configured to write the address and a value at the address as first data to a common memory area shared by the cores;

computer readable program code configured to write data from registers of the first core to the common memory area; and

computer readable program code configured to send a bus transaction including a pointer to the common memory area to a second core of the plurality of cores.

12. The computer program product of claim 11 , wherein the first and second cores are components of a multi-core processor.

13. The computer program product of claim 11 , further comprising

computer readable program code configured to copy a thread of the transaction from a first core of the plurality of cores to a second core of the plurality of cores before running the transaction on the plurality of cores, wherein the transaction includes at least one thread.

14. The computer program product of claim 11 , further comprising:

computer readable program code configured to verify a match for the first data to second data stored in a speculative store of the second core; and

computer readable program code configured to mark, by the second core, cache lines in the common area corresponding to matched first and second data.

15. The computer program product of claim 14 , wherein verifying the match further comprises:

computer readable program code configured to walk, by the second core, the speculative store of the second core and identifying one or more cache lines in the speculative store of the second core that are not marked as matching; and

computer readable program code configured to search corresponding cache lines in the common memory area containing the first data to verify the match.

16. The computer program product of claim 14 , further comprising computer readable program code configured to verify that all the cache lines in the common memory area are marked as matched.

17. The computer program product of claim 11 , further comprising computer readable program code configured to match registers of the second core to the registers of the first core written to the common memory area.

18. The computer program product of claim 11 , further comprising computer readable program code configured to determine a successful transaction upon matching all cache lines in a speculative store of the second core and all cache lines of the first core written in the common memory area, and matching all registers of the second core to all register fails of the first core written in the common memory area.

19. The computer program product of claim 11 , wherein the computer readable program code configured to compare results of the transaction on the cores further comprises computer readable program code configured to record data about a thread running on a given one of the cores upon determining a difference between the results of the transaction on the cores.

20. The computer program product of claim 19 , wherein the data includes at least one of a start and end program counter (PC) of the transaction, a timestamp of when the transaction ran, and which cores the transaction was run on.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2013
From: CAIN, HAROLD W., III; DALY, DAVID M.; HUANG, MICHAEL C.; EKANADHAM, KATTAMURI; MOREIRA, JOSE E.; SERRANO, MAURICIO J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030973/0266 →
Continuity (1)
Related Publication 20150046758A1 · Feb 12, 2015