Patent ID: 8438365

Claim:
A method of loading data into register files that correspond to respective execution units within a processor, the method comprising: comparing a first set of parameters that specify a subset of data to be accessed from among a larger set of data within a first memory to a plurality of sets of conditions that correspond to respective patterns of data to identify one of the sets of conditions that satisfies the first set of parameters; converting the first set of parameters to a second set of parameters in accordance with the pattern of data corresponding to the one of the sets of conditions that satisfies the first set of parameters; generating, based on the second set of parameters, a sequence of memory addresses that specify the subset of data that is to be loaded from the first memory into the register files that correspond to the respective execution units within the processor; and loading the subset of data from locations within the first memory specified by the sequence of memory addresses into the register files that correspond to the respective execution units within the processor, wherein the first set of parameters that specify the subset of data to be accessed within the first memory further comprises: a count value N that indicates a number of groups of data values to be loaded from the first memory relative to a predetermined starting address; a group parameter that indicates a number of data values to be read from sequentially-addressed locations within the first memory as a group of data values; a stride parameter that indicates a value to be added to the predetermined starting address of a first group of the data values to obtain a starting address of a second group of the data values; and wherein the method further comprises: retrieving 0 to N groups of data values from the first memory, wherein N corresponds to the count value N, wherein each of the 0 to N groups are discontiguous in the first memory relative to each other, and wherein a final location of a final group of the 0 to N groups in the first memory corresponds to ((the count value N minus 1) multiplied by the stride parameter) plus (the group parameter minus 1); and contiguously storing the 0 to N groups of the data values as transformed data in a temporary buffer.