IP Library › Granted Patent US 7,506,119
Granted Patent B2
US 7,506,119 · App. 11/381,563 · Granted Mar 17, 2009

Complier assisted victim cache bypassing

Assignee: International Business Machines Corporation
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 7,506,119
App. No.
11/381,563
Granted
Mar 17, 2009
Kind
B2
Abstract

A method for compiler assisted victim cache bypassing including: identifying a cache line as a candidate for victim cache bypassing; conveying a bypassing-the-victim-cache information to a hardware; and checking a state of the cache line to determine a modified state of the cache line, wherein the cache line is identified for cache bypassing if the cache line that has no reuse within a loop or loop nest and there is no immediate loop reuse or there is a substantial across loop reuse distance so that it will be replaced from both main and victim cache before being reused.

Claims (32)

1. A method for compiler assisted victim cache bypassing, the method comprising:

identifying a cache line as a candidate for victim cache bypassing;

conveying a bypassing-the-victim-cache information to a hardware by one of the following:

adding a special bit to load/store instructions, indicating whether or not the corresponding line should bypass the victim cache, wherein the special bit can be saved in a main cache tag array or a special table that stores the address of lines that bypass the victim cache;

encoding the special bit is encoded into page table entries and passing the special bit from an effective-to-physical address translation hardware to main cache;

conveying bypassing-the-victim-cache information to hardware by extending a prefetch engine to explicitly request main cache to flush lines that identified by the compiler that have no temporal locality; and

conveying bypassing-the-victim-cache information to the hardware via a small bypass table attached to main cache, the bypass table including a starting address and a length of memory regions that should bypass the victim cache, wherein a special LS (Load-Store) instruction is implemented to write the starting address and the length of each of the regions of the memory to the bypass table before the region is accessed; and

checking a state of the cache line to determine a modified state of the cache line,

wherein the cache line is identified for victim cache bypassing if the cache line that has no reuse within a loop or loop nest and there is no immediate loop reuse or there is a substantial across loop reuse distance so that it will be replaced from both main and victim cache before being reused,

wherein the loop reuse is at least one of temporal reuse in which there are multiple accesses to a same memory location, and spatial reuse in which there are accesses to nearby memory locations that share at least one of a cache lines and a block of memory at a level of a memory hierarchy.

2. A computer program product for compiler assisted victim cache bypassing, the computer program product comprising:

a storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for facilitating a method comprising:

identifying a cache line as a candidate for victim cache bypassing;

conveying a bypassing-the-victim-cache information to a hardware by one of the following:

adding a special bit to load/store instructions, indicating whether or not the corresponding line should bypass the victim cache, wherein the special bit can be saved in a main cache tag array or a special table that stores the address of lines that bypass the victim cache;

encoding the special bit is encoded into page table entries and passing the special bit from an effective-to-physical address translation hardware to main cache;

conveying bypassing-the-victim-cache information to hardware by extending a prefetch engine to explicitly request main cache to flush lines that identified by the compiler that have no temporal locality; and

conveying bypassing-the-victim-cache information to the hardware via a small bypass table attached to main cache, the bypass table including a staffing address and a length of memory regions that should bypass the victim cache, wherein a special LS (Load-Store) instruction is implemented to write the starting address and the length of each of the regions of the memory to the bypass table before the region is accessed; and

checking a state of the cache line to determine a modified state of the cache line,

wherein the cache line is identified for victim cache bypassing if the cache line that has no reuse within a loop or loop nest and there is no immediate loop reuse or there is a substantial across loop reuse distance so that it will be replaced from both main and victim cache before being reused

wherein the loop reuse is at least one of temporal reuse in which there are multiple accesses to a same memory location, and spatial reuse in which there are accesses to nearby memory locations that share at least one of a cache lines and a block of memory at a level of a memory hierarchy.

3. A method for compiler assisted victim cache bypassing, the method comprising:

identifying a cache line as a candidate for victim cache bypassing;

conveying a bypassing-the-victim-cache information to a hardware by one of the following:

adding a special bit to load/store instructions, indicating whether or not the corresponding line should bypass the victim cache, wherein the special bit can be saved in a main cache tag array or a special table that stores the address of lines that bypass the victim cache;

encoding the special bit is encoded into page table entries and passing the special bit from an effective-to-physical address translation hardware to main cache;

conveying bypassing-the-victim-cache information to hardware by extending a prefetch engine to explicitly request main cache to flush lines that identified by the compiler that have no temporal locality; and

conveying bypassing-the-victim-cache information to the hardware via a small bypass table attached to main cache, the bypass table including a staffing address and a length of memory regions that should bypass the victim cache, wherein a special LS (Load-Store) instruction is implemented to write the starting address and the length of each of the regions of the memory to the bypass table before the region is accessed;

checking a state of the cache line to determine a modified state of the cache line; and

writing the cache back to a memory if the cache line is in a modified state;

wherein the cache line is identified for victim cache bypassing if the cache line that has no reuse within a loop or loop nest and there is no immediate loop reuse or there is a substantial across loop reuse distance so that it will be replaced from both main and victim cache before being reused, conveying the bypassing-the-victim-cache information to the hardware includes using a bypass table, and bypass table includes a staffing address and a length of a memory region that should bypass the victim cache

wherein the loop reuse is at least one of temporal reuse in which there are multiple accesses to a same memory location, and spatial reuse in which there are accesses to nearby memory locations that share at least one of a cache lines and a block of memory at a level of a memory hierarchy.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2006
From: GAO, YAOQING; SPEIGHT, WILLIAM E.; ZHANG, LIXIN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 017572/0138 →
Continuity (1)
Related Publication 20070260819A1 · Nov 8, 2007