A useful power-performance metric (Part IIa, the goal)

GOALS AND THE ULTIMATE QUESTION

What is our ultimate goal? What do we want to do with our life? Is life important or just a meaningless exercise in futility? These are very important questions but generally irrelevant to this discussion.

So what is our ultimate goal here in this series of articles? We want to come up with a useful measure of power-performance for an application, such as Joules per instructions for a given app. But as we will see, finding this answer is much less clear cut than it first appears.

Sometimes a useful artifice is to throw away reality and all its encumbrances. Eventually, we’ll have to return to earth. We’re boring engineers are we not?

I’m going to be getting into some stochastic integrals and other types of Lebesgue integration here, so be prepared. Just kidding. (Oh my gosh! I really do know the difference between Riemann and Lebesgue integration. I almost surely have way too much math in my background.) But we are going to get into some math as it’s a compact and convenient notation.

WHAT DO WE REALLY WANT?

This isn’t as obvious as it first appears. Do we want the performance per power (W)? Or performance per energy (J)? Do we focus on the power-performance of only a given application or of a suite of applications? Are we satisfied with the power-performance of the application as a whole or do we want to break it down further? Is our goal to be able to derive the power-performance or just measure it? We’ve got to spend at least a couple of years pondering this question before really being able to delve into its far reaching implications. Of course, we don’t have the time for this intellectual introspection, so we’ll just dive in and wing it.

Let’s address the first issue: What do we want to measure the power-performance of? Well, it’s for an application, isn’t it? Yes but this isn’t specific enough. Do we want to find it for a suite of apps? For all possible apps? For apps running in a given language, say in Javascript on a browser? I can go on and on, but I’d just confuse myself further.

To get a handle on this, let’s consider my ultimate goal. (There’s that pesky “goal” word again.) Being a selfish soul, I’m interested in applications, specifically Windows applications. So, what is the power-performance of a given application. Compared to other applications. On Intel hardware. Compared to other unnamed competitors and their hardware? Though I would like to show how Intel hardware is superior in power-performance, I’m intellectually honest here – neglecting my own natural ignorance, of course. I want a fair and useful comparison.

So here are my constraints. (If any of you want to propose different constraints, please do. I’m not god (note the little “g”) nor even the least bit omniscient.)

Constraint 1: Be able to compare the power-performance of one general application against another general application

Constraint 2: Be able to compare the total power-performance of an application, meaning we have application granularity

Constraint 3: Be able to compare the power-performance across two different pieces of HW

Constraint 4: The HW is limited to the processor

Constraint 5: We’re considering only the entire processor (meaning we’re not going down to individual cores or other processor components)

NEXT TIME: THE METRIC

PS If you have any references on this or any other relevant topic (excepting Lebesgue integration), let me know. I average reading about 2 to 3 papers a week, but that’s way too little for this topic.
For more complete information about compiler optimizations, see our Optimization Notice.