Patent ID: 8359597

Claim:
A method for scheduling software programs on a heterogeneous multi-core processor, wherein the multi-core processor consists of a plurality of processor cores with different configurations in issue width, branch predictor size, and L1 cache size, comprising: determining one or more individual suitability metrics of a software program from the software programs wherein each of the one or more individual suitability metrics measures the compatibility of a characteristic of the software program to a particular configuration of the different configurations of a processor core of the plurality of processor cores, wherein determining the one or more individual suitability metrics of the software program comprises at least determining a branch predictor suitability metric by dividing branch instructions in the software program into a plurality of exclusive buckets based on transition rates, wherein the branch predictor suitability metric is the degree of compatibility of a software program's branch predictability to a processor core's branch predictor size; combining the one or more individual suitability metrics into an overall suitability metric for the software program to measure the overall compatibility of the program to the overall configuration of the processor core, wherein the overall configuration corresponds to a configuration of the different configurations; determining one or more individual suitability metrics of the software program and combining the one or more individual suitability metrics for every program-core pairs, wherein each pair of the program-core pairs is a pairing of a software program of the software programs with a processor core of the plurality of processor cores; comparing the overall suitability metrics of all of the program-core pairs; matching each software program of the software programs to a processor core of the plurality of processor cores that has the highest suitability metric based on the comparing of the overall suitability metrics of all of the program-core pairs; and executing the software programs with the corresponding matched processor core of the plurality of processor cores.