# US 2014/0208075 A1 · Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch

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

- Number: US 2014/0208075 A1
- Document ID: US20140208075A1
- Status: Published application
- Kind: A1
- Application number: 13/995,904
- Filed: 2011-12-20
- Published: 2014-07-24
- Earliest claimed: 2011-12-20
- Inventors: James Earl McCormick, JR.
- Web page: https://patentgrep.com/patent/US20140208075A1

## CPC

- G06F 9/3812: {with instruction modification, e.g. store into instruction stream}
- G06F 9/3017: {Runtime instruction translation, e.g. macros}
- G06F 9/383: {Operand prefetching (cache prefetching G06F12/0862)}
- G06F 9/3842: {Speculative instruction execution}
- G06F 9/3865: {using deferred exception handling, e.g. exception flags}
- G06F 12/0862: with prefetch
- G06F 12/1027: using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F 2212/654: Look-ahead translation
- G06F 2212/681: Multi-level TLB, e.g. microTLB and main TLB
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Apparatuses, systems, and a method for providing a processor architecture with a control speculative load are described. In one embodiment, a computer-implemented method includes determining whether a speculative load instruction encounters a long latency condition, spontaneously deferring the speculative load instruction if the speculative load instruction encounters the long latency condition, and initiating a prefetch of a translation or of data that requires long latency access when the speculative load instruction encounters the long latency condition. The method further includes reaching a check instruction, which resteers to recovery code that executes a non-speculative version of the load.

## Claims

### Claim 1

A computer-implemented method, comprising:
determining whether a speculative load instruction encounters a long latency condition;
spontaneously deferring the speculative load instruction if the speculative load instruction encounters the long latency condition;
initiating a prefetch of a translation or of data requiring long latency access if the speculative load instruction encounters the long latency condition; and
determining whether the speculative load instruction is needed.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the speculative load instruction is associated with a check instruction, wherein determining whether the speculative load instruction is needed comprises executing software code associated with the method and if the software code reaches the check instruction that is associated with a target register of the speculative load instruction, then the speculative load instruction is needed.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, further comprising:
resteering to recovery code if the speculative load instruction is needed, the recovery code to execute a non-speculative version of the load and to wait for the prefetched translation or data that requires long latency access.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein determining whether a speculative load instruction encounters a long latency condition comprises determining whether the speculative load hits or misses a data cache.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein determining whether a speculative load instruction encounters a long latency condition comprises determining whether the speculative load hits or misses a data translation lookaside buffer (TLB).

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein spontaneously deferring the speculative load if the speculative load instruction encounters the long latency condition comprises generating a not a thing (NAT) bit that is set in a target register of the speculative load.

### Claim 7

A machine-accessible medium including data that, when accessed by a machine, cause the machine to perform operations comprising:
determining whether a speculative load instruction encounters a long latency condition;
spontaneously deferring the speculative load instruction if the speculative load instruction encounters the long latency condition;
initiating a prefetch of a translation or of data requiring long latency access if the speculative load instruction encounters the long latency condition; and
determining whether the speculative load instruction is needed.

### Claim 8 (depends on 7)

The machine-accessible medium of claim 7, wherein the speculative load instruction is associated with a check instruction, wherein determining whether the speculative load instruction is needed comprises executing software code associated with the method and if the software code reaches the check instruction that is associated with a target register of the speculative load instruction, then the speculative load instruction is needed.

### Claim 9 (depends on 8)

The machine-accessible medium of claim 8, the operations further comprising:
resteering to recovery code if the speculative load instruction is needed, the recovery code to execute a non-speculative version of the load and to wait for the prefetched translation or data that requires long latency access.

### Claim 10 (depends on 7)

The machine-accessible medium of claim 7, wherein determining whether a speculative load instruction encounters a long latency condition comprises determining whether the speculative load hits or misses a data cache.

### Claim 11 (depends on 7)

The machine-accessible medium of claim 7, wherein determining whether a speculative load instruction encounters a long latency condition comprises determining whether the speculative load hits or misses a data translation lookaside buffer (TLB).

### Claim 12 (depends on 7)

The machine-accessible medium of claim 7, wherein spontaneously deferring the speculative load if the speculative load instruction encounters the long latency condition comprises generating a not a thing (NAT) bit that is set in a target register of the speculative load.

### Claim 13

A processor architecture, comprising:
a register file;
a first translation lookaside buffer (TLB) coupled to the register file, the first TLB with a number of ports for mapping virtual addresses to physical addresses;
a second TLB coupled to the first TLB, the second TLB to perform a hardware page walk that is initiated when the load speculative instruction misses the first TLB;
cache storage to store data including a physical address associated with the load speculative instruction; and
processing logic that is configured to determine whether a speculative load instruction encounters a long latency TLB miss of the first TLB, to spontaneously defer the speculative load instruction by setting a bit in the register file if the speculative load instruction encounters the long latency TLB miss, and to initiate a hardware page walk to the second TLB if the speculative load instruction encounters the long latency TLB miss.

### Claim 14 (depends on 13)

The processor architecture of claim 13, wherein the speculative load instruction is associated with a check instruction, wherein determining whether the speculative load instruction is needed comprises executing software code with the processing logic and if the software code reaches the check instruction that is associated with a target register of the speculative load instruction, then the speculative load instruction is needed

### Claim 15 (depends on 14)

The processor architecture of claim 14, wherein the processing logic is further configured to resteer to recovery code if the speculative load instruction is needed, the recovery code to execute a non-speculative version of the load and to wait for the hardware page walk.

### Claim 16 (depends on 15)

The processor architecture of claim 15, wherein the processor architecture avoids stalling for the hardware page walk if the speculative load is not needed.

### Claim 17

A system, comprising:
one or more processors comprising,
a translation lookaside buffer (TLB), the first TLB with a number of ports for mapping virtual addresses to physical addresses;
a first cache storage coupled to the TLB, the first cache storage to receive a physical address associated with a speculative load instruction when the speculative load instruction hits the TLB; a second cache storage coupled to the first cache storage, the second cache storage to store data including data associated with a physical address that is associated with the speculative load instruction; wherein the one or more processors are configured to execute instructions to determine whether the physical address associated with the speculative load instruction is located in the first cache storage, to spontaneously defer the speculative load instruction by setting a bit in a register file when the physical address is not located in the first cache storage, and to determine whether the physical address associated with the speculative load instruction is located in the second cache storage.

### Claim 18 (depends on 17)

The system of claim 17, wherein the one or more processors are further configured to execute instructions to send the data associated with physical address from the second cache storage to the first cache storage.

### Claim 19 (depends on 18)

The system of claim 18, wherein the one or more processors are further configured to execute a check instruction, which resteers to recovery code, when the check instruction receives the set bit.

### Claim 20 (depends on 19)

The system of claim 19, wherein a pipeline of the one or more processors avoids stalling when the speculation load is deferred.
