You may have think about the high level architecture of your software, but have you thought about the micro-architecture?

Watching a keynote by James Mickens about micro-architecture. Very basic said, in a similar way network-hardware like switches and routes haven an API as well, in form of SDN (Software Designed Networks), processors should have a Software Designed Micro-architecture, e.g. an API for the CPU.

That API would allow among others software to handle power-consumption of the processor. As I understand, you can optimize your software for voltage usage. That can save a few watt, which might not be very interesting for a desktop computer, but could be very interesting for a data-center.