IP Library › Granted Patent US 9,910,785
Granted Patent B2
US 9,910,785 · App. 14/890,893 · Granted Mar 6, 2018

Cache memory budgeted by ways based on memory access type

Inventors: Rodney E. Hooker (Austin, TX); Douglas R. Reed (Austin, TX); John Michael Greer (Austin, TX); Colin Eddy (Austin, TX)
Assignee: VIA ALLIANCE SEMICONDUCTOR CO., LTD
G06F12/0895G06F12/0846G06F12/0864G06F12/0882
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,910,785
App. No.
14/890,893
Filed
Nov 12, 2015
Granted
Mar 6, 2018
Kind
B2
Art Unit
2136
USPC
711/118
Abstract

A set associative cache memory, comprising: an array of storage elements arranged as N ways; an allocation unit that allocates the storage elements of the array in response to memory accesses that miss in the cache memory; wherein each of the memory accesses has an associated memory access type (MAT) of a plurality of predetermined MATs, wherein the MAT is received by the cache memory; a mapping that, for each MAT of the plurality of predetermined MATs, associates the MAT with a subset of one or more ways of the N ways; wherein for each memory access of the memory accesses, the allocation unit allocates into a way of the subset of one or more ways that the mapping associates with the MAT of the memory access; and wherein the mapping is dynamically updatable during operation of the cache memory.

Claims (74)

1. A method for operating a processor that includes a set associative cache memory arranged as N ways, the method comprising:

holding, by the processor, a mapping that, for each memory access type (MAT) of a plurality of predetermined MATs, associates the MAT with a subset of one or more ways of the N ways of the cache memory;

receiving memory accesses, by the cache memory, wherein each of the memory accesses has an associated MAT;

for each memory access of the memory accesses, in response to a miss of the memory access in the cache memory, allocating into a way of the subset that the mapping associates with the MAT of the memory access;

dynamically updating the mapping during operation of the cache memory;

determining that a program is running on the processor; and

said dynamically updating the mapping in response to said determining that the program is running on the processor.

2. The method of claim 1 , wherein said determining that the program is running on the processor is performed by a device driver executed by the processor.

3. The method of claim 1 , wherein the mapping is determined by offline analysis of the program.

4. The method of claim 1 , further comprising:

executing a configuration instruction of the instruction set architecture of the processor in response to which said updating the mapping is performed.

5. The method of claim 1 , further comprising:

detecting that a program running on the processor has entered a new phase; and

said dynamically updating the mapping in response to said detecting that the program running on the processor has entered the new phase, updating the mapping.

6. The method of claim 5 , wherein said detecting that the program running on the processor has entered a new phase is performed by the processor.

7. The method of claim 5 , further comprising:

receiving, by the processor, phase identifiers used to perform said detecting that the program running on the processor has entered the new phase; and

said detecting that a program running on the processor has entered a new phase based on the phase identifiers.

8. The method of claim 1 , wherein the plurality of predetermined MATs includes at least three from the following list:

a memory access generated by a hardware prefetcher of the processor;

a memory access generated by a floating point instruction;

a memory access generated by a fused microinstruction;

a memory access generated by a media instruction;

a memory access generated by an instruction that modifies a memory address;

a memory access generated by a software prefetch instruction;

a memory access that loads an architectural descriptor;

a memory access generated by an instruction that specifies non-temporal data;

a memory access generated by an instruction that performs no alignment checks;

a memory access generated by a supervisor privilege level instruction;

a memory access generated by a zero extend instruction;

a memory access generated by a masked move instruction;

a memory access generated by a stack push instruction; and

a memory access generated by a hardware tablewalk engine of the processor.

9. The method of claim 1 ,

wherein the array is further arranged as a plurality of sets, wherein each set includes replacement information according to a replacement policy;

said allocating into a way of the subset that the mapping associates with the MAT of the memory access comprises selecting the way of the subset further based on the replacement information of a set of the plurality of sets selected by the memory access.

10. A processor, comprising:

a set associative cache memory comprising an array of storage elements arranged as N ways, wherein the cache memory allocates the storage elements of the array in response to memory accesses that miss in the cache memory;

wherein each of the memory accesses has an associated memory access type (MAT) of a plurality of predetermined MATs, wherein the MAT is received by the cache memory;

a mapping that, for each MAT of the plurality of predetermined MATs, associates the MAT with a subset of one or more ways of the N ways;

wherein for each memory access of the memory accesses, the cache memory allocates into a way of the subset that the mapping associates with the MAT of the memory access;

wherein the mapping is dynamically updatable during operation of the cache memory;

a phase detector, configured to detect that a program running on the processor has entered a new phase; and

wherein in response to detection of the new phase, the processor updates the mapping in the cache memory and the cache memory allocates into the N ways based on the updated mapping.

11. The processor of claim 10 , further comprising:

a configuration instruction of the instruction set architecture of the processor, wherein the configuration instruction instructs the processor to dynamically update the mapping in the cache memory.

12. The processor of claim 10 , wherein the phase detector detects that the program running on the processor has entered a new phase based on phase identifiers received by the processor from a device driver executed by the processor.

13. The processor of claim 10 , wherein the mapping is determined by offline analysis of a program that includes instructions, wherein the processor generates the memory accesses in response to executing the instructions of the program.

14. The processor of claim 10 , wherein the plurality of predetermined MATs includes at least three from the following list:

a memory access generated by a hardware prefetcher of the processor;

a memory access generated by a floating point instruction;

a memory access generated by a fused microinstruction;

a memory access generated by a media instruction;

a memory access generated by an instruction that modifies a memory address;

a memory access generated by a software prefetch instruction;

a memory access that loads an architectural descriptor;

a memory access generated by an instruction that specifies non-temporal data;

a memory access generated by an instruction that performs no alignment checks;

a memory access generated by a supervisor privilege level instruction;

a memory access generated by a zero extend instruction;

a memory access generated by a masked move instruction;

a memory access generated by a stack push instruction; and

a memory access generated by a hardware tablewalk engine of the processor.

15. A method for operating a processor that includes a set associative cache memory arranged as N ways, the method comprising:

holding, by the processor, a mapping that, for each memory access type (MAT) of a plurality of predetermined MATs, associates the MAT with a subset of one or more ways of the N ways of the cache memory;

receiving memory accesses, by the cache memory, wherein each of the memory accesses has an associated MAT;

for each memory access of the memory accesses, in response to a miss of the memory access in the cache memory, allocating into a way of the subset that the mapping associates with the MAT of the memory access;

dynamically updating the mapping during operation of the cache memory;

detecting that a program running on the processor has entered a new phase; and

said dynamically updating the mapping in response to said detecting that the program running on the processor has entered the new phase, updating the mapping.

16. The method of claim 15 , wherein said detecting that the program running on the processor has entered a new phase is performed by the processor.

17. The method of claim 15 , further comprising:

receiving, by the processor, phase identifiers used to perform said detecting that the program running on the processor has entered the new phase; and

said detecting that a program running on the processor has entered a new phase based on the phase identifiers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: HOOKER, RODNEY E.; GREER, JOHN MICHAEL; REED, DOUGLAS R.; EDDY, COLIN
To: VIA ALLIANCE SEMICONDUCTOR CO., LTD
Reel/Frame 037028/0773 →
Continuity (1)
Related Publication 20170315921A1 · Nov 2, 2017