C-States, P-States, where the heck are those T-States?

I had an interesting question come across my desk a few days ago: “Is it still worthwhile to understand T-states?” My first response was to think, “Huh? What the heck is a T-state?”

Doing a little more research, I discovered that, yes, there is something called a T-state, and no, it really isn’t relevant any more, at least for mainline Intel(R) processors.

Let me say this again: T-States are no longer relevant!

Optimizing Software Applications for Power: Part 13 (of 13)

Part 13: Example 3 (Maximizing Idle Periods) - Batch I/O requests

Optimizing Software Applications for Power: Part 12 (of 13)

Part 12: Example 2 (Maximizing Idle Periods) - Avoid polling and busy wait loops

Optimizing Software Applications for Power: Part 11 (of 13)

Part 11: Example 1 (Maximizing Idle Periods) - Avoid high-resolution periodic timers

Optimizing Software Applications for Power: Part 10 (of 13)

Part 10: Maximizing Idle Periods

Beyond reducing computation, developers can improve power management efficiency by thinking carefully how their applications can be structured to avoid reducing system idle periods. As described previously, such idle periods give the OS opportunity to apply power-saving C-states. The longer the idle period, the deeper the C-state. The deeper the C-state, the more power savings can be realized.

Optimizing Software Applications for Power: Part 9 (of 13)

Part 9: Example 3 (Reducing Computation) - Compile with optimizations

Optimizing compilers are available for almost every programming language in widespread use today. It is something of a curiosity, then, that many programs do not make more use of them, or at least exercise some of the more sophisticated options available on common compilers. Developers who are not already well-versed in optimization levels, use of SSE instructions on Intel® 64 and IA-32 architectures, etc. should make a concerted effort in this area.

Optimizing Software Applications for Power: Part 8 (of 13)

Part 8: Example 2 (Reducing Computation) - Reduce data size

Optimizing Software Applications for Power: Part 7 (of 13)

Part 7: Example 1 (Reducing Computation) - Improve algorithmic efficiency

Optimizing Software Applications for Power: Part 6 (of 13)

Part 6: Reducing Computation

As simple as it sounds, a key strategy for reducing application power requirements is to do less computation. With respect to the ACPI framework described above, such reductions have the effect of increasing system idleness and hence OS opportunities for applying power-saving C-states. Reducing computation also decreases processor utilization which allows the OS to more aggressively apply P-states that trade power savings for performance when the latter is less needed.

Optimizing Software Applications for Power: Part 5 (of 13)

Part 5: Strategies for Application Power Optimization

Discussion up to this point has reviewed the ACPI framework, including the manner in which hardware platform features (C-states, P-states) and the operating system (OSPM) conspire to manage system power. The question now becomes, “What can application developers do to play into this power management framework?” Said another way, what can developers do to “optimize” their application for power efficiency?