METHOD AND APPARATUS FOR DYNAMIC CLOCK AND VOLTAGE SCALING IN A COMPUTER PROCESSOR BASED ON PROGRAM PHASE
First Claim
1. A method for dynamic clock and voltage scaling, comprising:
- configuring a polling interval for defining a current program execution phase;
measuring a stall fraction for the current program execution phase according to the configured polling interval, wherein the measured stall fraction indicates a degree to which the current program execution phase was memory-bound due at least in part to a processor waiting on data from a memory subsystem;
predicting a stall fraction for a next program execution phase based on the measured stall fraction for the current program execution phase in combination with a predicted stall fraction for the current program execution phase; and
applying, by the processor, a frequency setting and a voltage setting for the next program execution phase based on the predicted stall fraction for the next program execution phase.
1 Assignment
0 Petitions
Accused Products
Abstract
The disclosure generally relates to dynamic clock and voltage scaling (DCVS) based on program phase. For example, during each program phase, a first hardware counter may count each cycle where a dispatch stall occurs and an oldest instruction in a load queue is a last-level cache miss, a second hardware counter may count total cycles, and a third hardware counter may count committed instructions. Accordingly, a software/firmware mechanism may read the various hardware counters once the committed instruction counter reaches a threshold value and divide a value of the first hardware counter by a value of the second hardware counter to measure a stall fraction during a current program execution phase. The measured stall fraction can then be used to predict a stall fraction in a next program execution phase such that optimal voltage and frequency settings can be applied in the next phase based on the predicted stall fraction.
246 Citations
40 Claims
-
1. A method for dynamic clock and voltage scaling, comprising:
-
configuring a polling interval for defining a current program execution phase; measuring a stall fraction for the current program execution phase according to the configured polling interval, wherein the measured stall fraction indicates a degree to which the current program execution phase was memory-bound due at least in part to a processor waiting on data from a memory subsystem; predicting a stall fraction for a next program execution phase based on the measured stall fraction for the current program execution phase in combination with a predicted stall fraction for the current program execution phase; and applying, by the processor, a frequency setting and a voltage setting for the next program execution phase based on the predicted stall fraction for the next program execution phase. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. An apparatus, comprising:
-
a memory subsystem; and a processor coupled to the memory subsystem, the processor configured to; configure a polling interval for defining a current program execution phase; measure a stall fraction for the current program execution phase according to the configured polling interval, wherein the measured stall fraction indicates a degree to which the current program execution phase was memory-bound due at least in part to the processor waiting on data from the memory subsystem; predict a stall fraction for a next program execution phase based on the measured stall fraction for the current program execution phase in combination with a predicted stall fraction for the current program execution phase; and apply a frequency setting and a voltage setting for the next program execution phase based on the predicted stall fraction for the next program execution phase. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. An apparatus, comprising:
-
means for configuring a polling interval for defining a current program execution phase; means for measuring a stall fraction for the current program execution phase according to the configured polling interval, wherein the measured stall fraction indicates a degree to which the current program execution phase was memory-bound due at least in part to a processor waiting on data from a memory subsystem; means for predicting a stall fraction for a next program execution phase based on the measured stall fraction for the current program execution phase in combination with a predicted stall fraction for the current program execution phase; and means for applying a frequency setting and a voltage setting for the next program execution phase based on the predicted stall fraction for the next program execution phase. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. A non-transitory computer-readable medium, wherein the non-transitory computer-readable medium comprises code for causing a processor to:
-
configure a polling interval for defining a current program execution phase; measure a stall fraction for the current program execution phase according to the configured polling interval, wherein the measured stall fraction indicates a degree to which the current program execution phase was memory-bound due at least in part to the processor waiting on data from a memory subsystem; predict a stall fraction for a next program execution phase based on the measured stall fraction for the current program execution phase in combination with a predicted stall fraction for the current program execution phase; and apply a frequency setting and a voltage setting for the next program execution phase based on the predicted stall fraction for the next program execution phase. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
-
Specification