# US 2013/0159772 A1 · Verifying Speculative Multithreading In An Application

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

- Number: US 2013/0159772 A1
- Document ID: US20130159772A1
- Status: Published application
- Kind: A1
- Application number: 13/326,378
- Filed: 2011-12-15
- Published: 2013-06-20
- Earliest claimed: 2011-12-15
- Assignees: International Business Machines Corporation
- Inventors: Mitchell D. Felton
- Web page: https://patentgrep.com/patent/US20130159772A1

## CPC

- G06F 9/30: Arrangements for executing machine instructions, e.g. instruction decode (for executing microinstructions G06F9/22)
- G06F 9/3001: {Arithmetic instructions}
- G06F 9/30014: {with variable precision}
- G06F 9/30087: {Synchronisation or serialisation instructions}
- G06F 9/3842: {Speculative instruction execution}
- G06F 9/3851: {from multiple instruction streams, e.g. multistreaming}
- G06F 11/3624: {by performing operations on the source code, e.g. via a compiler}
- G06F 11/3632: {of specific synchronisation aspects}
- G06F 11/3648: {using additional hardware}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Verifying speculative multithreading in an application executing in a computing system, including: executing one or more test instructions serially thereby producing a serial result, including insuring that all data dependencies among the test instructions are satisfied; executing the test instructions speculatively in a plurality of threads thereby producing a speculative result; and determining whether a speculative multithreading error exists including: comparing the serial result to the speculative result and, if the serial result does not match the speculative result, determining that a speculative multithreading error exists.

## Claims

### Claim at position 1

1-6. (canceled)

### Claim 7

An apparatus for verifying speculative multithreading in an application executing in a computing system, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
executing one or more test instructions serially thereby producing a serial result, including insuring that all data dependencies among the test instructions are satisfied;
executing the test instructions speculatively in a plurality of threads thereby producing a speculative result; and
determining whether a speculative multithreading error exists including: comparing the serial result to the speculative result and, if the serial result does not match the speculative result, determining that a speculative multithreading error exists.

### Claim 8 (depends on 7)

The apparatus of claim 7 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the step of:
responsive to the determination that a speculative multithreading error exists, modifying a portion of source code of the application that, when executed, administers speculative multithreading for the application.

### Claim 9 (depends on 7)

The apparatus of claim 7 wherein the test instructions further comprise a floating point operation.

### Claim 10 (depends on 10)

The apparatus of claim 10 wherein the test instructions further comprise sums of floating point values.

### Claim 11 (depends on 7)

The apparatus of claim 7 wherein the test instructions include one of:
an arithmetic operation;
a logic operation; and
an atomic fetch operation.

### Claim 12 (depends on 7)

The apparatus of claim 7, wherein the computing system comprises a parallel computer, the parallel computer comprising a plurality of compute nodes coupled for data communications by one or more data communications networks, each compute node configured to support speculative multithreading.

### Claim 13

A computer program product for verifying speculative multithreading in an application executing in a computing system, the computer program product disposed upon a computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:
executing one or more test instructions serially thereby producing a serial result, including insuring that all data dependencies among the test instructions are satisfied;
executing the test instructions speculatively in a plurality of threads thereby producing a speculative result; and
determining whether a speculative multithreading error exists including: comparing the serial result to the speculative result and, if the serial result does not match the speculative result, determining that a speculative multithreading error exists.

### Claim 14 (depends on 13)

The computer program product of claim 13 further comprising computer program instructions that, when executed, cause the computer to carry out the step of:
responsive to the determination that a speculative multithreading error exists, modifying a portion of source code of the application that, when executed, administers speculative multithreading for the application.

### Claim 15 (depends on 13)

The computer program product of claim 13 wherein the test instructions further comprise a floating point operation.

### Claim 16 (depends on 15)

The computer program product of claim 15 wherein the test instructions further comprise sums of floating point values.

### Claim 17 (depends on 13)

The computer program product of claim 13 wherein the test instructions include one of:
an arithmetic operation;
a logic operation; and
an atomic fetch operation.

### Claim 18 (depends on 13)

The computer program product of claim 13, wherein the computing system comprises a parallel computer, the parallel computer comprising a plurality of compute nodes coupled for data communications by one or more data communications networks, each compute node configured to support speculative multithreading.

### Claim 19 (depends on 13)

The computer program product of claim 13 wherein the computer readable medium comprises a storage medium.

### Claim 20 (depends on 13)

The computer program product of claim 13 wherein the computer readable medium comprises a signal medium.
