# US 2025/0094174 A1 · Coprocessor Prefetcher

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

- Number: US 2025/0094174 A1
- Document ID: US20250094174A1
- Status: Published application
- Kind: A1
- Application number: 18/783,937
- Filed: 2024-07-25
- Published: 2025-03-20
- Earliest claimed: 2021-09-23
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Brandon H. Dwiel; Andrew J. Beaumont-Smith; Eric J. Furbish; John D. Pape; Stephen G. Meier; Tyler J. Huberty
- Web page: https://patentgrep.com/patent/US20250094174A1

## CPC

- G06F 9/3881: {Arrangements for communication of instructions and data}
- G06F 9/30145: {Instruction analysis, e.g. decoding, instruction word fields}
- G06F 9/382: {Pipelined decoding, e.g. using predecoding}
- G06F 9/383: {Operand prefetching (cache prefetching G06F12/0862)}
- G06F 9/3832: {Value prediction for operands; operand history buffers}
- G06F 9/3877: {using a secondary processor, e.g. coprocessor (peripheral processor G06F13/12)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A prefetcher for a coprocessor is disclosed. An apparatus includes a processor and a coprocessor that are configured to execute processor and coprocessor instructions, respectively. The processor and coprocessor instructions appear together in code sequences fetched by the processor, with the coprocessor instructions being provided to the coprocessor by the processor. The apparatus further includes a coprocessor prefetcher configured to monitor a code sequence fetched by the processor and, in response to identifying a presence of coprocessor instructions in the code sequence, capture the memory addresses, generated by the processor, of operand data for coprocessor instructions. The coprocessor is further configured to issue, for a cache memory accessible to the coprocessor, prefetches for data associated with the memory addresses prior to execution of the coprocessor instructions by the coprocessor.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

An apparatus comprising:
a coprocessor configured to execute coprocessor instructions;
coprocessor prefetch circuitry; and
a processor configured to:
execute processor instructions, wherein the processor instructions and the coprocessor instructions appear together in code sequences fetched by the processor;
provide the coprocessor instructions to the coprocessor; and
provide memory addresses to the coprocessor prefetch circuitry that correspond to operand data for the coprocessor instructions;
wherein the coprocessor prefetch circuitry is configured to generate prefetches of corresponding operand data based on the memory addresses, including to generate a prefetch prior to the processor providing a corresponding coprocessor instruction to the coprocessor.

### Claim 22 (depends on 21)

The apparatus of claim 21, wherein the coprocessor prefetch circuitry is included in the coprocessor.

### Claim 23 (depends on 21)

The apparatus of claim 21, wherein the memory addresses are in a system memory space.

### Claim 24 (depends on 21)

The apparatus of claim 21, wherein the coprocessor is configured to perform matrix operations.

### Claim 25 (depends on 21)

The apparatus of claim 21, wherein the coprocessor prefetch circuitry is configured to generate prefetches into a cache accessible to the coprocessor prefetch circuitry.

### Claim 26 (depends on 25)

The apparatus of claim 25, wherein the cache is shared with the processor.

### Claim 27 (depends on 25)

The apparatus of claim 25, wherein the cache is internal to the coprocessor.

### Claim 28 (depends on 21)

The apparatus of claim 21, wherein the coprocessor prefetch circuitry is configured to, in response to completion of a prefetch, store operand data from the prefetch in register of the coprocessor.

### Claim 29 (depends on 21)

The apparatus of claim 21, wherein at least one of the generated prefetches is to a cache in a cache hierarchy to fetch the corresponding operand data.

### Claim 30 (depends on 21)

The apparatus of claim 21, wherein one or more of the generated prefetches are to non-predictive addresses.

### Claim 31 (depends on 21)

The apparatus of claim 21, wherein the processor includes processor prefetch circuitry configured to prefetch operand data for operations performed by the processor, wherein the coprocessor prefetch circuitry is configured to forego one or more prefetches based on prefetch indications from the processor prefetch circuitry.

### Claim 32 (depends on 31)

The apparatus of claim 31, wherein one or more prefetches generated by the processor prefetch circuitry are predictive.

### Claim 33 (depends on 21)

The apparatus of claim 21, wherein the memory addresses are physical addresses.

### Claim 34 (depends on 21)

The apparatus of claim 21, wherein the memory addresses are virtual addresses.

### Claim 35 (depends on 21)

The apparatus of claim 21, wherein the processor includes a store queue, and wherein the coprocessor prefetch circuitry is configured to monitor to the store queue for the memory addresses of the coprocessor instructions.

### Claim 36 (depends on 21)

The apparatus of claim 21, wherein the apparatus is a computing system that further includes:
network interface circuitry; and
display controller circuitry.

### Claim 37

A method, comprising:
executing, by a coprocessor of a computing system, coprocessor instructions;
executing, by a processor of the computing system, processor instructions, wherein the processor instructions and the coprocessor instructions appear together in code sequences fetched by the processor;
providing, by the processor, the coprocessor instructions to the coprocessor;
providing, by the processor to a coprocessor prefetcher of the computing system, memory addresses that correspond to operand data for the coprocessor instructions; and
generating, by the coprocessor prefetcher, prefetches of corresponding operand data based on the memory addresses, including generating a prefetch prior to the processor providing a corresponding coprocessor instruction to the coprocessor.

### Claim 38 (depends on 37)

The method of claim 37, wherein the coprocessor instructions specify matrix multiplication operations.

### Claim 39 (depends on 37)

The method of claim 37, further comprising:
fetching the corresponding operand data into a cache based on the generated prefetches; and
storing the operand data in operand registers in response to the fetching.

### Claim 40

A system, comprising:
multiple processor cores;
a coprocessor configured to execute coprocessor instructions; and
coprocessor prefetch circuitry;
wherein ones of the processor cores are configured to:
execute processor instructions, wherein the processor instructions and the coprocessor instructions appear together in code sequences fetched by one of the multiple processor cores;
provide the coprocessor instructions to the coprocessor; and
provide memory addresses to the coprocessor prefetch circuitry that correspond to operand data for the coprocessor instructions;
wherein the coprocessor prefetch circuitry is configured to generate prefetches of corresponding operand data based on the memory addresses, including to generate a prefetch prior to one of the processor cores providing a corresponding coprocessor instruction to the coprocessor.
