If all time constraints are fulfilled, additional optimizations can be introduced to increase power efficiency. It is often impossible to separate performance optimization from energy optimization, because ISA performance improvements typically also reduce the overhead energy.
Generally speaking the following power optimization steps are applicable:
- optimum partitioning on the system level
- sleep-/doze modes of the processor
- local/global clock gating
- blocking logic to suppress wasteful logic activity
- data-path optimization using application specific instructions and functional units
- high instruction coding density / application specific instruction encoding
- software optimization
- ...
For ICORE, all the above mentioned techniques have been applied jointly. As a result it was possible to reduce the ICORE energy consumption by about one order of magnitude.