# US 10,120,800 B2 · History based memory speculation for partitioned cache memories

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

- Number: US 10,120,800 B2
- Document ID: US10120800B2
- Status: Granted
- Kind: B2
- Application number: 14/584,755
- Filed: 2014-12-29
- Published: 2016-01-21
- Granted: 2018-11-06
- Earliest claimed: 2014-07-18
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Ramaswamy Sivaramakrishnan; Serena Leung; David Smentek
- Web page: https://patentgrep.com/patent/US10120800B2

## CPC

- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/0862: with prefetch
- G06F 2212/1024: Latency reduction
- G06F 2212/6024: History based prefetching
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

A cache memory that selectively enables and disables speculative reads from system memory is disclosed. The cache memory may include a plurality of partitions, and a plurality of registers. Each register may be configured to stored data indicative of a source of returned data for previous requests directed to a corresponding partition. Circuitry may be configured to receive a request for data to a given partition. The circuitry may be further configured to read contents of a register corresponding to the given partition, and initiate a speculative read dependent upon the contents of the register.

## Claims

### Claim 1

An apparatus, comprising:
a first memory including a plurality of partitions;
at least one register including a plurality of bit locations, wherein a particular bit location of the plurality of bit locations corresponds to a particular memory location, and wherein the particular bit location is configured to store information indicative of whether previously requested data was retrieved from a given memory location corresponding to the particular bit location for at least one previous read request; and
circuitry configured to:
receive a read request for data from a first partition of the plurality of partitions;
read one or more values from the at least one register in response to a determination that the data is not stored in the first partition of the plurality of partitions; and
initiate a speculative read of the data from a second memory based on the one or more values;
update a value stored in a given bit location of the plurality of bit locations corresponding to the first partition of the plurality of partitions, in response to the determination that the data is not stored in the first partition of the plurality of partitions; and
update a value in another bit location of the plurality of bit locations corresponding to a memory location from which the data for the read request was returned.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein to initiate the speculative read of the data the circuitry is further configured to determine a number of previous read requests whose source of returned data is a given partition of the plurality of partitions.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the circuitry is further configured to initiate the speculative read in response to a determination that the number of previous read requests whose source of returned data is a given partition of the plurality of partitions is less than a predetermined threshold value.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein a given bit location of the plurality of bit locations corresponds a particular execution thread of a plurality of execution threads.

### Claim 5

A method for operating a memory, the method comprising:
receiving a read request for data from a first partition of a plurality of partitions of a first memory;
reading one or more values from at least one register in response to determining that the data is not stored in the first partition of the plurality of partitions, wherein the at least one register includes a plurality of bit locations, wherein a particular bit location of the plurality of bit locations corresponds to a particular memory location;
initiating a speculative read of the data from a second memory based on the one or more values;
updating a value stored in a given bit location of the plurality of bit locations corresponding to the first partition of the plurality of partitions, in response to determining that the data is not stored in the first partition of the plurality of partitions; and
updating a value in another bit location of the plurality of bit locations corresponding to a memory location from which the data for the read request was returned.

### Claim 6 (depends on 5)

The method of claim 5, wherein initiating the speculative read comprises determining a number of previous read requests whose source of returned data is a given partition of the plurality of partitions.

### Claim 7 (depends on 6)

The method of claim 6, further comprising initiating the speculative read in response to determining the number of previous read requests whose source of returned data is a given partition of the plurality of partitions is less than a predetermined threshold value.

### Claim 8 (depends on 5)

The method of claim 5, wherein a particular bit location of the plurality of bit locations corresponds to a particular execution thread of a plurality of execution threads.

### Claim 9 (depends on 5)

The method of claim 5, wherein the second memory comprises system memory.

### Claim 10

A system, comprising:
a first memory including a plurality of partitions;
at least one register including a plurality of bit locations, wherein a particular bit location of the plurality of bit locations corresponds to a particular memory location, and wherein the particular bit location is configured to store information indicative of whether previously requested data was retrieved from a given memory location corresponding to the particular bit location for at least one previous read request;
a second memory; and
a plurality of processors, wherein a given processor of the plurality of processors is configured to send a read request to the first memory for data from a first partition of the plurality of partitions;
wherein the first memory is configured to:
receive the read request;
read one or more values from the at least one register in response to a determination that the data is not stored in the first partition of the plurality of partitions;
initiate a speculative read of the data from the second memory based on the one or more values;
update a value stored in a given bit location of the plurality of bit locations, in response to a determination that the data is not stored in the first partition of the plurality of partitions; and
update a value in another bit location of the plurality of bit locations corresponding to a memory location from which the data for the read request was returned.

### Claim 11 (depends on 10)

The system of claim 10, wherein to initiate the speculative read of the data from the second memory, the first memory is further configured to determine a number of previous read requests whose source of returned data is a given partition of the plurality of partitions.

### Claim 12 (depends on 11)

The system of claim 11, wherein the first memory is further configured to initiate the speculative read in response to a determination that the number of previous read requests whose source of returned data is a given memory partition of the plurality of partitions is less than a predetermined threshold value.

### Claim 13 (depends on 10)

The system of claim 10, wherein a given bit location of the plurality of bit locations corresponds to a particular execution thread of a plurality of execution threads.
