A multithreaded microprocessor includes a thread scheduler and
voltage-frequency scheduler (VFS). The thread scheduler uses
application-specified QoS requirements, which include required
instruction completion rates, and instruction completion information from
execution units to schedule the priorities of the threads at which the
thread scheduler issues instructions to the execution units.
Concurrently, the VFS uses the instruction completion and QoS information
to calculate an aggregate utilization of the microprocessor by all the
active threads when it is time to scale the voltage-frequency. The
aggregate utilization is an effective measure of the amount of work left
to be performed relative to the rate requirements. The VFS scales the
voltage-frequency based on the aggregate utilization.