Patent ID: 8924975

Claim:
A method to schedule an application program running in a computer system that includes two or more cores, each respective core effective to use respective core components, wherein the core components are elements within the cores that perform a function or operation for the cores, the method comprising: analyzing a first core component to determine a first operating state of the first core component, wherein the first core component is of a component type among a group of component types including a branch predictor, a cache, a floating point unit, a bus, a forwarding circuit, a register file, and an instructions queue, and the component type is manufactured to function at a nominal value that is determined according to a manufacturing process for the component type; storing the first operating state in a bloom filter; based on the stored first operating state, producing a first rating that represents a first performance value of the first core component, wherein the first core component is caused, by a process variation, to perform the function or operation at the first performance value, instead of the nominal value, the process variation includes a core-to-core process variation and is associated with the manufacturing process for the component type; analyzing a second core component to determine a second operating state of the second core component, wherein the second core component is of the component type; storing the second operating state in the bloom filter; based on the stored second operating state, producing a second rating that represents a second performance value of the second core component, wherein the second core component is caused, by the process variation, to perform the function or operation at the second performance value, instead of the nominal value; selecting the first core component over the second component, to be used on a core to run the application program, in response to the first rating being greater than the second rating, wherein the first rating is greater than the second rating in response to the first performance value being closer to the nominal value than the second performance value; and in response to the selection of the first core component, scheduling the application program to run on the core with use of the first core component.