A microprocessor that performs adaptive power throttling, the microprocessor including: a calculation unit, configured to calculate an average power consumed by the microprocessor over the most recent predetermined sample time, and to determine whether the average power is less than a predetermined maximum power value; and a power management unit, coupled to the calculation unit, configured to control the microprocessor to conditionally operate at a predetermined frequency if the average power is less than the predetermined maximum power value, wherein the predetermined frequency is a frequency at which the microprocessor may consume more than the predetermined maximum power value; wherein the microprocessor includes a table that specifies an increment value for each performance point, wherein each increment value is based on the amount of power the microprocessor consumes at the corresponding performance point; wherein the predetermined sample time is divided into N bin durations, and the average power is calculated as the sum of N values in a circular queue, wherein a counter value is incremented each clock cycle by the current increment value, and the current counter value is pushed into the end of the circular queue and then the current counter value is cleared to zero at the beginning of a new bin duration; wherein when the operating system changes the performance point in the midst of the current bin duration, the current counter value is multiplied by the ratio of the bin duration to the time elapsed since the beginning of the current bin duration, and then pushed into the end of the circular queue and then the current counter value is cleared to zero to begin a new bin duration. a calculation unit, configured to calculate an average power consumed by the microprocessor over the most recent predetermined sample time, and to determine whether the average power is less than a predetermined maximum power value; and a power management unit, coupled to the calculation unit, configured to control the microprocessor to conditionally operate at a predetermined frequency if the average power is less than the predetermined maximum power value, wherein the predetermined frequency is a frequency at which the microprocessor may consume more than the predetermined maximum power value; wherein the microprocessor includes a table that specifies an increment value for each performance point, wherein each increment value is based on the amount of power the microprocessor consumes at the corresponding performance point; wherein the predetermined sample time is divided into N bin durations, and the average power is calculated as the sum of N values in a circular queue, wherein a counter value is incremented each clock cycle by the current increment value, and the current counter value is pushed into the end of the circular queue and then the current counter value is cleared to zero at the beginning of a new bin duration; wherein when the operating system changes the performance point in the midst of the current bin duration, the current counter value is multiplied by the ratio of the bin duration to the time elapsed since the beginning of the current bin duration, and then pushed into the end of the circular queue and then the current counter value is cleared to zero to begin a new bin duration.