Claims Analysis
Total Claims: 23
Claim 1
Independent Claim
118 words
A method of prefetching data elements having multiple strides for a data reference at an inner loop of a nested loop structure, the method comprising the steps of: determining a direction of an inner loop; determining a direction of an outer loop, the inner loop being nested inside the outer loop; identifying a data reference within the inner loop, the data reference having strides determined by the directions of the inner and outer loop; reversing the direction of one of the loops so that both loops have the same direction if the direction of the inner loop is different than the direction of the outer loop; and prefetching a data element in the common direction of the loops.
Claim 2
Independent Claim
118 words
A method of prefetching data elements having multiple strides for a data reference at an inner loop of a nested loop structure, the method comprising the steps of: determining a direction of an inner loop; determining a direction of an outer loop, the inner loop being nested inside the outer loop; identifying a data reference within the inner loop, the data reference having strides determined by the directions of the inner and outer loop; reversing the direction of one of the loops so that both loops have the same direction if the direction of the inner loop is different than the direction of the outer loop; and prefetching a data element in the common direction of the loops.
Claim 3
Dependent Claim
38 words
A method of prefetching data elements according to claim 1 wherein the step of reversing the direction of one of the loops so that both loops have the same direction includes reversing the direction of the inner loop.
Claim 4
Dependent Claim
38 words
A method of prefetching data elements according to claim 1 wherein the step of reversing the direction of one of the loops so that both loops have the same direction includes reversing the direction of the outer loop.
Claim 5
Dependent Claim
84 words
A method of prefetching data elements according to claim 1 further comprising: determining a direction of a second outer loop, the outer loop being nested inside the second outer loop; reversing the direction of either the inner loop or the second outer loop so that both loops have the same direction if the direction of the inner loop is different than the direction of the second outer loop; and prefetching a data element in the common direction of the inner and second outer loops.
Claim 6
Dependent Claim
44 words
A method of prefetching data elements according to claim 4 wherein the step of reversing the direction of either the inner loop or the second outer loop so that both loops have the same direction includes reversing the direction of the second outer loop.
Claim 7
Dependent Claim
64 words
A method of prefetching data elements according to claim 4 wherein the step of reversing the direction of either the inner loop or the second outer loop so that both loops have the same direction includes: reversing the direction of the inner loop; and reversing the direction of the outer loop so that the inner loop and the outer loop have a common direction.
Claim 8
Dependent Claim
29 words
A method of prefetching data elements according to claim 6 wherein the step of reversing the direction of the inner loop includes reversing the direction of the outer loop.
Claim 9
Dependent Claim
64 words
A method of prefetching data elements according to claim 1 further comprising: determining whether one of the loops can be reversed if the direction of the inner loop is different than the direction of the outer loop; and reversing the direction of the loop that can be reversed so that both loops have the same direction if one of the loops can be reversed.
Claim 10
Dependent Claim
34 words
A method of prefetching data elements according to claim 1 further comprising the step of prefetching a data reference in the direction of the outer loop if one of the loops cannot be reversed.
Claim 11
Dependent Claim
41 words
A method of prefetching data according to claim 1 further comprising the steps of prefetching a data reference in the direction of the outer loop if the direction of the inner loop is different than the direction of the outer loop.
Claim 12
Dependent Claim
78 words
A method of prefetching data according to claim 1 wherein the step of prefetching a data reference in the direction of the outer loop if the direction of the inner loop is different than the direction of the outer loop includes the steps of: determining a prefetch distance (p); determining a number of times (m) the inner loop iterates; and prefetching a data reference in the direction of the outer loop if the following expression is satisfied: p>m/2.
Claim 13
Independent Claim
80 words
A method of prefetching data elements having multiple strides, the method comprising the steps of: is determining a direction of an outer loop; determining a direction of an inner loop, the inner loop being nested inside the outer loop and a data reference having multiple strides being made in the inner loop; and prefetching a data reference in the direction of the outer loop if the direction of the inner loop is different than the direction of the outer loop.
Claim 14
Independent Claim
80 words
A method of prefetching data elements having multiple strides, the method comprising the steps of: is determining a direction of an outer loop; determining a direction of an inner loop, the inner loop being nested inside the outer loop and a data reference having multiple strides being made in the inner loop; and prefetching a data reference in the direction of the outer loop if the direction of the inner loop is different than the direction of the outer loop.
Claim 15
Dependent Claim
92 words
A method of prefetching data according to claim 12 further comprising: determining a prefetch distance (p); determining a number of times (m) the inner loop iterates for each iteration of the outer loop; comparing the prefetch distance (p) to the number of times (m) the inner loop iterates for each iteration of the outer loop; and prefetching a data reference in the direction of the outer loop only if the prefetch distance (p) is greater than the number of times (m) the inner loop iterates for each iteration of the outer loop.
Claim 16
Dependent Claim
69 words
A method of prefetching data according to claim 13 wherein the step of prefetching a data reference in the direction of the outer loop only if the prefetch distance (p) is greater than the number of times (m) the inner loop iterates for each iteration of the outer loop includes prefetching a data reference in the direction of the outer loop only if the following expression is satisfied: p>m/2.
Claim 17
Dependent Claim
58 words
A method of prefetching data according to claim 12 further comprising: determining, according to a predetermined condition, that prefetching is not to be performed in the direction of outer loop; reversing the direction of one of the loops so that both loops have the same direction; and prefetching a data reference in the common direction of the loops.
Claim 18
Dependent Claim
37 words
A method of prefetching data according to claim 15 wherein the step of reversing the direction of one of the loops so that both loops have the same direction includes reversing the direction of the inner loop.
Claim 19
Dependent Claim
105 words
An optimizing compiler comprising: means for determining a direction of an inner loop; means for determining a direction of an outer loop, the inner loop being nested inside the outer loop; means for identifying a data reference having multiple strides within the inner loop, the strides being determined by the direction of the inner and outer loops; means for reversing the direction of one of the loops so that both loops have the same direction if the direction of the inner loop is different than the direction of the outer loop; and means for prefetching a data element in the common direction of the loops.
Claim 20
Dependent Claim
105 words
An optimizing compiler comprising: means for determining a direction of an inner loop; means for determining a direction of an outer loop, the inner loop being nested inside the outer loop; means for identifying a data reference having multiple strides within the inner loop, the strides being determined by the direction of the inner and outer loops; means for reversing the direction of one of the loops so that both loops have the same direction if the direction of the inner loop is different than the direction of the outer loop; and means for prefetching a data element in the common direction of the loops.
Claim 21
Dependent Claim
54 words
An optimizing compiler according to claim 17 wherein said means for reversing the direction of one of the loops so that both loops have the same direction includes means for reversing the direction of one of the loops so that both loops have the same direction includes reversing the direction of the inner loop.
Claim 22
Dependent Claim
37 words
An optimizing compiler according to claim 17 wherein said means for reversing the direction of one of the loops so that both loops have the same direction includes means for reversing the direction of the outer loop.
Claim 23
Dependent Claim
49 words
An optimizing compiler according to claim 17 further comprising: means for determining a prefetch distance (p); means for determining a number of times (m) the inner loop iterates; and means for prefetching a data reference in the direction of the outer loop if the following expression is satisfied: p>m/2.