A Simulation of Power Management in Multiprocessors
Based on a paper published in RTSS'01

Written by Ahren Studer
while working as an intern with the PARTS project at
The University of Pittsburgh

To run the simulator click here

Index




Introduction

Why is power management important?
Besides for the idea of saving power there are two major reasons that make power management practical, extending battery and charge life for portable systems, and lowering temperatures.

Battery Life
With less energy consumed a battery's charge will last a much longer time, resulting in less recharges, and increasing the overall longevity of the battery.
Temperature
With faster and faster processors constantly being created the issue of system temperature is become a more troublesome issue. In systems with multiple processors running at over a gigahertz, a heat sink and a fan is barely enough, leading to the requirement of alternative cooling methods that are more expensive. With variable running speeds (used properly) the chips will run at slower rates when possible, and under normal circumstances lower the overall temperature of the system, making these expensive cooling methods optional.
How does running slower save energy?
Running processors at lower speeds reduces the amount of energy consumed due to the cubic relation between speed and energy. If energy was consumed in a linear fashion when compared to processor speed, power management would just slow down the system, not save energy. However, a system running at 50% would consume only 1/8 of the power a system running at 100% would consume. Slowing a system down further to 33% results in the consumption of only 1/27 of the power in the same amount of time.


Getting Started

To start you can either load one of the two predefined graphs, using the "load Graph A" or "load Graph B" buttons, or you can create your own graph.

Creating and Editing a Graph

To create a graph you must create a series of individual nodes or in this case tasks.

Creating a Task

To create a task fill in the information for the tasks WCET (worst case exeuction time) and average ET (average execution time) and click the "add task" button. You can also define that tasks predecessors, but that can be left blank (meaning the task is ready at start time).

Getting Information About a Task

Simply enter the number corresponding to that task in the field next to "task #" and click "Get Information". The id, wcet, average et, and all of its successors will be shown in the area below.

Changing Information For a Task

First get the tasks information, then alter whatever data you want in the area and click "Change Info".

Deleting a Task

To delete a task enter the id of the task you want to delete into the field next to "task #" and then click "remove task". The task will be replaced by the next task (ie one number greater) and all tasks greater will simply have their id reduced by 1.

Clearing all Tasks

To remove all tasks from the graph just click the "Clear Graph" button.

Running a Simulation

Once a graph is created you can run the set of tasks, using any of the 4 methods (cannonical, static, slack sharing, and full tatistical). Select one of the 4 methods by clicking on the bar next to choose method and picking the desired one.
Before running the simulation, you can change the other parameters, but this is not necessary. When you're satisfied with the parameters you can run the simulation by clicking "run simulation".
*** Due to some problems with IE an error message about "array index out of bounds" may appear, simply clik "run simulation" again and everything should be fine. ***


Viewing the Results

Once the simulation is run you can view the results on the window that pops up. Each numbered bar represents a processor. On each bar is numbered blocks representing a task, the colored part is the actual run time, and the empty box is the worst case run time. The x axis is time and the ya axis is speed. Using the different buttons it is possible to zoom in or out, move left or right, and animate the graph (step by step or all at once fluidly).

Task Parameters

Predecessors - the tasks that must be completed before the new task can be run (these tasks must be defined)
WCET - the worst case execution time, this will be the run time during the cannonical simulation, and is an upper bound on the run time during all other simulations
average ET - the average execution time of the task, this must be entered as a percent, ie if the task takes on average 1/2 of the WCET then enter .5

Simulation Parameters

# of processors - the number of processors to have in the simulation
idle speed - the percentage of the maximum that the idle speed runs at, must be between 0 and .2 (20%)
distribution of execution times - used to define the distribution of the running time around the average run time
# of speeds - the number of possible speeds for the processor, not counting the idle speed
load - the percentage of slack for there to be in the system, for example if the load is 50 then there is a 50% slack in the system meaning the deadline is 2 times the run time of the cannonical

Page and applet created by Ahren Studer a current sophmore of the
University of Rochester.