During the last two decades, the amount of computing applications with different requirement characteristics has grown dramatically. Nevertheless, in most of the computing cases, we are still using the “same” General-Purpose computing engines (e.g. general-purpose CPUs) to run a slew of applications under more-or-less the same computing hardware. These general-purpose CPUs have been very successful and have dominated the market in the past decades, so processor designers have focused on achieving higher performance over a wide range of applications, adding massive amounts of hardware in the process. Consequently, General-Purpose (GP) CPUs have been designed to “fit” most applications without the need to tune the CPU behavior for a specific family of applications (see the below figure).
For a variety of reasons, CPU designers (as with compiler developers, communication engineers, etc.) have created numerous CPU behaviors that can be enabled or disabled via in-hardware knobs. These knobs can be enabled to adjust the architecture behavior in order to achieve better results for specific application families. When detrimental to performance or energy efficiency, these knobs are intended to be disabled.
Knobs that control the hardware are usually being set once by the OS manufacturers or system providers, and thus can create a system that has acceptable performance for a wide range of target applications.
This situation calls for solutions (knob configurations) that are fitted differently to each application family. These solution setups drive the idea of per-application-tuning – meaning, tune-your-device (HW and/or SW) to reach the best results for a specific application – either static – seed concept implementation of Concertio’s Optimizer Studio product or dynamic (along time) – seed concept of Concertio’s Optimizer Runtime product.
When the Concertio Optimizer Studio product is applied to a CPU environment, it identifies the CPU knob configuration that achieves the best targets; these targets can be the best performance, the system’s minimum energy, output minimum latency, lowest memory traffic and so on.
Automatic knob configuration findings are based on dynamic measurements of the expected target. The target measurement, however, can be very “noisy” and the process to find the best knob configurations is not trivial. Identifying the optimal knob configuration is a similar use case to accelerators for specific applications.
Concertio’s Optimizer Studio is the knobs’ identification tool that uses several techniques (among them Machine Learning) to successfully achieve the goal, in order to enable harvesting the best targets for specific inputs.
The next step in systems’ tuning will be the per-application dynamic tuning, i.e. a technology that will dynamically identify the knobs setup according to the running application.
When looking at the market, the General-Purpose CPU is a cornerstone of our computing world and as such, it is integrated into most parts of our lives. We should thus seize on the opportunity to optimize these computing devices, in order to achieve the best targets for the running applications.