Patent ID: 7530063
Filing Date: 2009-05-05
Classification: G06F

Abstract:
1. A method comprising: obtaining a set of instructions forming a loop wherein the instructions manipulate data and wherein the data flows between the instructions; producing a data and control flow graph representing the manipulation and flow of the data between the instructions and an execution sequence of the instructions; identifying at least one stream wherein each stream comprises a sequence of instructions comprising memory references having a stride less than a cache line size; classifying each of the at least one stream wherein the at least one stream comprises one or more load streams and at least one store stream wherein each of the load streams comprises a load instruction none of the at least one store stream comprise a load instruction; determining that no data dependencies prevent loop unrolling wherein the data and control flow graph reveal data dependencies; determining a static and dynamic profile for the set of instructions; selecting a modification factor for the instructions based on a number of separate equivalent sections forming a cache in a processor which is processing the set of instructions; unrolling the loop in accordance with the modification factor wherein the static and dynamic profile satisfies a modification criteria to thereby modify the loop for faster execution; rearranging the at least one store stream according to the modification factor; and writing the instructions to a storage medium after reordering.