In any working system where several elements work with each other, whether they are people or automated elements such as machines and processors. Not only is the individual performance of each of the elements important, but also that communication between them is adequate at all times to give the maximum possible performance. This is where what we call quality of service or QoS of a processor comes in.
What do we mean by quality of service or QoS in a processor?
The term quality of service in CPUs comes from the world of telecommunications, where it designates the general performance of a telephone network and therefore the ability to provide an adequate service to the various terminals participating in said network. This definition is extrapolated to the world of multicore CPUs and APUs, where it refers to the communication of the different elements of the processor with each other and with the RAM memory via a common central hub. What we traditionally call Northbridge and therefore the QoS of a multicore CPU depends on the performance of the central hub, whether it is the classic Crossbar Switch of Switches or a NIC or SmartNIC of a NoC.
The idea of QoS is that not only the individual cores, but also the rest of the processor components have the necessary communication lines to function properly at all times. Therefore, care must be taken during the design that the entire intercom system is not limited to the expected performance peaks. But also that there are no imbalances concerning the internal communication in a CPU.
In a multithreaded system in which each of the processors is in charge of a different thread of execution, it is important for performance that each processor core does not have communication issues with the rest of the cores and components. In particular because of the intercommunication between the various execution threads of the program. But this is important for server processors running multiple operating systems in a virtualized fashion for multiple remote clients.
Parkinson’s law and the QoS of a CPU
Obviously, for a multicore processor to offer quality of service, it is necessary to ensure that the bandwidths and latencies of each of the elements are adequate to be able to obtain the maximum possible performance. Cores today depend on the integrated Northbridge to achieve the best possible performance in this regard. How to measure this performance? Unlike performance laws in computer science such as Amdahl’s law in computer science, Parkinson’s law is applied, the general statement of which is as follows:
The work to be done is expanded to fill the time available for it to be completed.
In principle, this is not something that has much to do with computing, but it should be borne in mind that the QoS of a CPU depends on how the information transfers are organized between the different parts. So, just like in real life, when we plan something, unexpected things appear that delay our project. In the internal communication of a CPU in order to guarantee the quality of service, the same thing happens, so all the elements that can increase the latency and decrease the internal bandwidth must be taken into account.
However, when designing a new processor, not all of the elements that ensure quality of service are hardware dependent.
The quality of service of a CPU cannot be guaranteed
Our hardware is useless without software to run and at the same time software is nothing without hardware to run it. These are therefore two parts that complement each other in a symbiotic way and therefore the hardware cannot live without the software and vice versa. This implies that there are factors in the software that affect the hardware and also the quality of service of a processor.
In terms of hardware, there are things like the latency between different memory sinks in a non-unified addressing system. How the cache communicates with the different cores and how to use it. In addition to other factors at the architectural level which, due to various limitations in the design, could not be implemented in a better way.
If we are talking about software, we have that the program in charge of managing the execution threads of the different programs is the operating system, so it will be its management that will affect the quality of service that a CPU can provide. Thus, depending on the degree of optimization and therefore programming of an operating system, we will see one performance or another between different operating systems running on the same CPU.
Let us not forget either the quality of the code used during the development of the programs. We can write a million different programs to perform a specific task, but not all of them use equally efficient algorithms and data structures, and the third-party libraries and external APIs they are based on won’t be as good. All this makes the quality of service in a CPU today unachievable and is truly a utopia.
Is there an ideal QoS processor?
First of all, we must keep in mind that the ideal quality of service does not exist, because it is impossible to achieve the theoretical maximums that it requires for there to be 100% communication performance between the different parts. What should a CPU with perfect QoS have? Well, the following:
- There is no problem accessing data and instructions by the CPU, everything is working fine. What we know is impossible in the search and capture of information by the CPU.
- There are no hardware and software interrupts to stop all processes at once. This is impossible, because without interruption, the rest of the hardware could not interact with the CPU.
- The operating system has the perfect code to handle the different threads of the CPU in an orderly fashion. Another thing which is also impossible to achieve in an operating system.
So, the ideal QoS processor doesn’t really exist, but at the same time, it’s a challenge for engineers to get the best possible performance.
Table of Contents