Optimizing compiler having data cache prefetch spreading
First Claim
1. A method of scheduling instructions for execution on a computer system including a data cache or data cache hierarchy, the method comprising the steps of:
- determining a length of a loop;
generating a plurality (M) of prefetch instructions; and
scheduling the plurality of prefetch instructions to space out the prefetch instructions throughout the length of the loop.
4 Assignments
0 Petitions
Accused Products
Abstract
A method of scheduling prefetch instructions in a compiler is described that improves performance by minimizing the performance degradation due to dirty cache misses. The method determines the length N of a loop (step 66). The number of prefetch instructions were M within that loop are then determined (step 68). A prefetch spacing P is then calculated according to the formula P=N/M, where the length of the loop is expressed in cycles (step 70). This prefetch spacing is then attached to each prefetch instruction and the instruction scheduler schedules the prefetch instructions so as to space the prefetch instructions apart by approximately the prefetch spacing P (step 72). After the scheduler arranged for P cycles, a prefetch instruction will be assigned a higher priority for scheduling in the next lot.
83 Citations
19 Claims
-
1. A method of scheduling instructions for execution on a computer system including a data cache or data cache hierarchy, the method comprising the steps of:
-
determining a length of a loop; generating a plurality (M) of prefetch instructions; and scheduling the plurality of prefetch instructions to space out the prefetch instructions throughout the length of the loop. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An optimizing compiler stored in a computer-readable memory device and executable by a computer system having a data cache or data cache hierarchy, the compiler comprising:
-
means for identifying a loop; means for determining a length of the loop; means for generating a plurality (M) of prefetch instructions; and means for spacing out the prefetch instructions throughout the length of the loop. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
Specification