We must start from the fact that there is no perfect system in the sense that it has no performance losses, that is, there is no system in the world that works at one hundred percent performance. So waiting for our PC’s CPU to do it doesn’t hit the ground. However, the reasons why this happens can be multiple and we will explain them to you below.
Why isn’t my CPU running at 100% performance?
Well, there are several reasons for this, although to fully understand performance we must start from the three basic elements: clock speed, number of cores and IPC. Of all of them, the first two are constant values that do not depend on external elements. The IPC, on the other hand, although it depends on the architecture of the processor, that is to say on the internal organization of its components. It is also influenced by a number of external elements.
The IPC should be understood as the average of instructions per cycle that a processor executes. However, this measurement cannot be taken as a yardstick for comparing CPUs and even so, Intel and AMD marketing keep repeating it as if it were an extrapolable performance constant for all programs. and in all possible cases.
And this is where we have to enter two different bottlenecks:
- The first one is because of the RAM, there is a bottleneck in the communication of the processor with the memory, which can create latency in each instruction and eventually affect the general performance of the system if the memory subsystem is not fast enough.
- The second is for the software, that is to say for the instructions chosen to code the program. This obviously does not depend on hardware, but on good programming practices when coding applications. This is why we will not cover this part in this article.
stall or stop
When a processor is doing nothing, it is not working, and it may be doing nothing because it is not receiving instructions to execute them or cannot complete them because it is waiting for a response from memory. Over time, tricks have appeared to avoid this problem. The best known is caches, which are memories in the processor that contain copies of parts of RAM for quick access. Another trick is multithreading, which is giving the kernel another task to run while idle in order to get the most out of it.
In other words, the lack of performance is not due to a lack of power, but rather to the fact that the communication with the memory is not ideal in the vast majority of cases and this is not to be expected. In other words, a processor is not designed to achieve a specific performance figure, but so that, given all the difficulties, it achieves the maximum possible. Especially since the Integrated Memory Controller or IMC can be completely overwhelmed by the huge amount of memory demands that exist.
Unsurprisingly, this is why many future systems are designed with the concept of bringing information closer to the processor to increase the IPC and thus get closer to one hundred percent performance. The idea is to minimize the number of stalls or shutdowns experienced by the different processor cores. Which, since time immemorial, is the biggest bottleneck in terms of hardware and the one that prevents using all the power of the processor.
Can it be solved somehow?
Well yes, when buying memory modules for your PC, you need to make sure that they have the lowest possible latency. Let’s not forget that the processor and the RAM communicate synchronously and therefore the access times work in a coordinated way. However, you will have observed when purchasing the different memory modules that they have different latency times. Well, the ones with the lowest latency allow you to get near one hundred percent CPU performance.
The other point is to use a dual channel configuration, which consists of using access to two memory modules at the same time. Although in the case of DDR5 it is rather quadruple channel, in order to avoid stoppages. Also, we are surprised that Single Channel systems are still sold today.
Other elements that do not allow the processor to reach 100% performance
Even if we had the perfect processor in which there were no memory communication problems and the programs were well written, we would still find that 100% performance would not be achieved. All this due to a series of external factors which, although insignificant and seemingly disposable in principle, affect the creation of an ideal environment for him.
The main culprits are voltage, temperature and clock speed controllers. There are many mechanisms in the CPU that are synchronous and therefore depend on a clock speed and time for each cycle to work. If it goes out of tune, it can cause the system to malfunction, so there is a tune-up time between a CPU GHz variation regardless of the brand and architecture we are talking about.
Table of Contents