QoS (qualité de service) sur le processeur : comment cela affecte les performances

QoS (Qualité de Service) sur CPU

Le terme « qualité de service » peut évoquer des choses qui n'ont rien à voir avec le matériel, ce n'est donc pas un terme très courant dans le monde du matériel. Cependant, la qualité de service d'un CPU est un élément très important en termes de performances dans un processeur multicœur. Nous expliquons en quoi il consiste et quels facteurs l'influencent.

Dans tout système de travail où plusieurs éléments travaillent les uns avec les autres, qu'il s'agisse de personnes ou d'éléments automatisés tels que des machines et des processeurs. Non seulement la performance individuelle de chacun des éléments est importante, mais aussi que la communication entre eux soit adéquate à tout moment pour donner la performance maximale possible. C'est là qu'intervient ce que nous appelons qualité de service ou QoS d'un processeur.

Qu'entendons-nous par qualité de service ou QoS dans un processeur ?

Commutation de la synchronisation du processeur Velocidad

Le terme qualité de service dans les CPU vient du monde des télécommunications, où il désigne les performances générales d'un réseau téléphonique et donc la capacité à fournir un service adéquat aux différents terminaux qui participent audit réseau. Cette définition est extrapolée au monde des CPU et APU multicœurs, où elle fait référence à la communication des différents éléments du processeur entre eux et avec le RAM mémoire via un hub central commun. Ce que nous appelons traditionnellement Northbridge et donc la QoS d'un CPU multicœur dépend des performances du hub central, qu'il s'agisse du Crossbar Switch classique des Switchs ou d'une NIC ou SmartNIC d'un NoC.

L'idée de la qualité de service est que non seulement les différents cœurs, mais aussi le reste des composants du processeur disposent des lignes de communication nécessaires pour fonctionner correctement à tout moment. Par conséquent, il faut veiller lors de la conception à ce que l'ensemble du système d'interphone ne soit pas seulement dans les pics de performance attendus. Mais aussi qu'il n'y a pas de déséquilibres concernant la communication interne dans une CPU.

Dans un système multithread dans lequel chacun des processeurs est en charge d'un thread d'exécution différent, le fait que chaque cœur du processeur n'ait pas de problèmes de communication avec le reste des cœurs et des composants est important en termes de performances. Notamment à cause de l'intercommunication entre les différents threads d'exécution du programme. Mais cela est important pour les processeurs de serveur exécutant plusieurs systèmes d'exploitation de manière virtualisée pour plusieurs clients distants.

La loi de Parkinson et la QoS d'un CPU

Curva Ley Parkinson

Comme il est évident pour un processeur multicœur d'offrir une qualité de service, nous devons nous assurer que les bandes passantes et les latences de chacun des éléments sont adéquates pour pouvoir obtenir les performances maximales possibles. Aujourd'hui, les cœurs dépendent du Northbridge intégré pour obtenir les meilleures performances possibles à cet égard. Comment mesurer cette performance ? Contrairement aux lois de performance en informatique telles que la loi d'Amdahl en informatique, la loi de Parkinson est appliquée, dont l'énoncé général est le suivant :

Le travail à faire est élargi pour combler le temps disponible pour qu'il soit terminé.

En principe, ce n'est pas quelque chose qui a beaucoup à voir avec l'informatique, mais il faut prendre en compte que la QoS d'un CPU dépend de la façon dont les transferts d'informations sont organisés entre les différentes parties. Ainsi, de la même manière que dans la vraie vie, lorsque nous planifions quelque chose, des éléments inattendus apparaissent qui retardent notre projet. Dans la communication interne d'un CPU afin de garantir la qualité de service, la même chose se produit, donc tous les éléments qui peuvent augmenter la latence et diminuer la bande passante interne doivent être pris en compte.

Cependant, lors de la conception d'un nouveau processeur, tous les éléments qui assurent la qualité de service ne dépendent pas du matériel.

La qualité de service d'un CPU ne peut être assurée

QoS CPU efficace

Notre matériel est inutile sans logiciel à exécuter et en même temps, le logiciel n'est rien sans matériel pour l'exécuter. Ce sont donc deux parties qui se complètent de manière symbiotique et donc le matériel ne peut pas vivre sans le logiciel et vice versa. Cela implique qu'il existe des facteurs dans le logiciel qui affectent le matériel et également la qualité de service d'un processeur.

En termes de matériel, il existe des éléments tels que la latence entre différents puits de mémoire dans un système d'adressage non unifié. La communication du cache avec les différents cores et leur façon de l'utiliser. En plus d'autres facteurs au niveau de l'architecture qui, en raison de diverses limitations dans la conception, n'ont pas pu être mis en œuvre d'une meilleure manière.

Logiciel matériel QoS

Si nous parlons de logiciel, nous avons que le programme en charge de gérer les threads d'exécution des différents programmes est le système d'exploitation, donc ce sera sa gestion qui affectera la qualité de service qu'un CPU peut fournir. Ainsi, selon le degré d'optimisation et donc de programmation d'un système d'exploitation, nous verrons une performance ou une autre entre différents systèmes d'exploitation fonctionnant sur le même CPU.

N'oublions pas non plus la qualité du code utilisé lors du développement des programmes. Nous pouvons écrire un million de programmes différents pour effectuer une tâche spécifique, mais tous n'utilisent pas des algorithmes et des structures de données aussi efficaces, et les bibliothèques tierces et les API externes sur lesquelles ils sont basés ne seront pas aussi bonnes. Tout cela rend la qualité de service dans un CPU aujourd'hui irréalisable et est vraiment une utopie.

Existe-t-il un processeur QoS idéal ?

CPU ? Interrogant

Tout d'abord, nous devons garder à l'esprit que la qualité de service idéale n'existe pas, car il est impossible d'atteindre les maximums théoriques qu'elle nécessite pour qu'il y ait 100% de performances de communication entre les différentes parties. Que devrait avoir un CPU avec une qualité de service parfaite ? Eh bien, les éléments suivants :

  • Il n'y a aucun problème d'accès aux données et aux instructions par le CPU, tout fonctionne correctement. Ce que nous savons est impossible dans la recherche et la capture d'informations par le CPU.
  • Il n'y a pas d'interruptions matérielles et logicielles pour arrêter tous les processus à la fois. Ce qui est impossible, car sans interruption, le reste du matériel ne pourrait pas interagir avec le CPU.
  • Le système d'exploitation a le code parfait pour gérer les différents threads du CPU de manière ordonnée. Une autre chose qui est également impossible à réaliser dans un système d'exploitation.

Le processeur QoS idéal n'existe donc pas vraiment, mais en même temps, c'est un défi pour les ingénieurs d'obtenir les meilleures performances possibles.