Patent ID: 8914661

Claim:
A microprocessor configured to operate in a system having a memory, the microprocessor comprising: two or more processing cores on a microprocessor package, wherein each processing core of the two or more processing cores is configured with adaptive power throttling logic to: operate at an adjustable operating frequency; compute a first value, in response to detecting an occurrence of a power event, wherein the first value represents an amount of energy consumed by the processing core during a time interval leading up to the power event, wherein the length of the time interval is a predetermined time value; write the first value to the memory; read one or more second values from the memory, wherein the one or more second values represent an amount of energy consumed by the other(s) of the two or more processing cores during approximately the time interval, wherein the one or more second values were previously computed and written to the memory by the other(s) of the two or more processing cores; adjust the operating frequency of the processing core, independently of the operating frequency of the other(s) of the two or more processing cores, based on the first value and the one or more second values; wherein the adaptive power throttling logic of the processing core computes the first value using a dynamic power constant of the processing core, determined during manufacture of the microprocessor package, that is multiplied by a frequency and by a square of a voltage at which the processing core operates during the time interval leading up to the power event; and wherein the adaptive power throttling logic of the other(s) of the two or more processing cores computes the one or more second values using a dynamic power constant of the other(s) of the two or more processing cores, determined during manufacture of the microprocessor package, that is multiplied by a frequency and by a square of a voltage at which the other(s) of the two or more processing cores operate during approximately the time interval.