adplus-dvertising

Architecture du système informatique et système NUMA

Architecture du système informatique et système NUMA

Un système informatique peut être organisé de différentes manières, que nous pouvons les classer en fonction du nombre de processeurs à usage général utilisés.

Systèmes à processeur unique

Il y a de nombreuses années, la plupart des systèmes informatiques utilisaient un seul processeur contenant un processeur avec un seul cœur de traitement. Le noyau est le composant qui exécute les instructions et les registres pour stocker les données localement. Le processeur principal avec son cœur est capable d'exécuter un jeu d'instructions à usage général, y compris des instructions de processus. Ces systèmes ont également d'autres processeurs spéciaux. Ils peuvent se présenter sous la forme de processeurs spécifiques à l'appareil, tels que les contrôleurs de disque, de clavier et graphiques.

Tous ces processeurs spéciaux exécutent un jeu d'instructions limité et n'exécutent pas de processus. Parfois, ils sont gérés par le système d'exploitation, en ce sens que le système d'exploitation leur envoie des informations sur leur prochaine tâche et surveille leur état. Par exemple, un microprocesseur de contrôleur de disque reçoit une séquence de requêtes du cœur du CPU principal et implémente sa propre file d'attente de disque et son propre algorithme de planification. Cette disposition soulage le CPU principal de la surcharge de la planification des disques. Les PC contiennent un microprocesseur dans le clavier pour convertir les frappes en codes à envoyer au CPU. Dans d'autres systèmes ou circonstances, les processeurs spéciaux sont des composants de bas niveau intégrés au matériel.

Le système d'exploitation ne peut pas communiquer avec ces processeurs ; ils font leur travail de manière autonome. L'utilisation de microprocesseurs spéciaux est courante et ne transforme pas un système à processeur unique en un système multiprocesseur. S'il n'y a qu'un seul processeur à usage général avec un seul cœur de traitement, le système est un système à processeur unique. Selon cette définition, cependant, très peu de systèmes informatiques contemporains sont des systèmes à processeur unique.

Systèmes multiprocesseurs

Sur les ordinateurs modernes, les appareils mobiles et les serveurs, les systèmes multiprocesseurs dominent désormais le domaine informatique. Traditionnellement, ces systèmes ont deux processeurs (ou plus), chacun avec un processeur monocœur. Les processeurs partagent le bus informatique et parfois l'horloge, la mémoire et les périphériques. Le principal avantage des systèmes multiprocesseurs est l'augmentation du débit. Autrement dit, en augmentant le nombre de processeurs, nous nous attendons à faire plus de travail en moins de temps. Le rapport d'accélération avec N processeurs n'est cependant pas N ; il est inférieur à N. Lorsque plusieurs processeurs coopèrent sur une tâche, une certaine surcharge est encourue pour que toutes les parties fonctionnent correctement. Cette surcharge, plus la contention pour les ressources partagées, réduit le gain attendu des processeurs supplémentaires.

Les systèmes multiprocesseurs les plus courants utilisent le multitraitement symétrique (SMP), dans lequel chaque processeur CPU homologue exécute toutes les tâches, y compris les fonctions du système d'exploitation et les processus utilisateur. La figure ci-dessous illustre une architecture SMP typique avec deux processeurs, chacun disposant de sa propre CPU. Notez que chaque processeur CPU dispose de son propre ensemble de registres, ainsi que d'un cache privé ou local. Cependant, tous les processeurs partagent la mémoire physique sur le bus système.

L'avantage de ce modèle est que de nombreux processus peuvent être exécutés simultanément - N processus peuvent être exécutés s'il y a N CPU - sans que les performances ne se détériorent de manière significative. Cependant, comme les unités centrales sont séparées, l'une d'entre elles peut rester inactive alors qu'une autre est surchargée, ce qui entraîne des inefficacités. Ces inefficacités peuvent être évitées si les processeurs partagent certaines structures de données. Un système multiprocesseur de ce type permet de partager dynamiquement les processus et les ressources (comme la mémoire) entre les différents processeurs et peut réduire la variance de la charge de travail entre les processeurs. Un tel système doit être écrit avec soin.

La définition de multiprocesseur a évolué au fil du temps et inclut désormais les systèmes multicœurs, dans lesquels plusieurs cœurs de calcul résident sur une seule puce. Les systèmes multicœurs peuvent être plus efficaces que les puces multiples avec des cœurs uniques car la communication sur la puce est plus rapide que la communication entre les puces.

En outre, une puce à plusieurs cœurs consomme beaucoup moins d'énergie que plusieurs puces à un seul cœur, ce qui est important pour les appareils mobiles et les ordinateurs portables.

Dans la figure ci-dessous, nous montrons une conception à double cœur avec deux cœurs sur la même puce de processeur. Dans cette conception, chaque cœur dispose de son propre jeu de registres, ainsi que de son propre cache local, souvent appelé cache de niveau 1, ou L1. Notez également qu'un cache de niveau 2 (L2) est local à la puce mais est partagé par les deux cœurs de traitement. La plupart des architectures adoptent cette approche, combinant les caches locaux et partagés, où les caches locaux de niveau inférieur sont généralement plus petits et plus rapides que les caches partagés de niveau supérieur. En dehors des considérations architecturales, telles que la contention de cache, de mémoire et de bus, un processeur multicœur avec N cœurs apparaît au système d'exploitation comme N CPU standard. Cette caractéristique met la pression sur les concepteurs de systèmes d'exploitation - et les programmeurs d'applications - pour qu'ils utilisent efficacement ces cœurs de traitement. Pratiquement tous les systèmes d'exploitation modernes - y compris Windows, macOS et Linux, ainsi que les systèmes mobiles Android et iOS - prennent en charge les systèmes SMP multicœurs.

L'ajout de processeurs supplémentaires à un système multiprocesseur augmentera la puissance de calcul ; cependant, comme suggéré précédemment, le concept n'évolue pas très bien, et une fois que nous ajoutons trop de processeurs, la contention pour le bus système devient un casse-tête et les performances commencent à se dégrader. Une approche alternative consiste à fournir à chaque CPU (ou groupe de CPU) sa propre mémoire locale accessible via un petit bus local rapide. Les processeurs sont connectés par une interconnexion système partagée, de sorte que tous les processeurs partagent un espace d'adressage physique. Cette approche, connue sous le nom d'accès mémoire non uniforme ou NUMA, est illustrée dans la figure ci-dessous. L'avantage est que, lorsqu'un processeur accède à sa mémoire locale, non seulement il est rapide, mais il n'y a pas non plus de conflit sur l'interconnexion du système. Ainsi, les systèmes NUMA peuvent évoluer plus efficacement à mesure que de nouveaux processeurs sont ajoutés.

Un inconvénient potentiel d'un système NUMA est l'augmentation de la latence lorsqu'un processeur doit accéder à la mémoire distante via l'interconnexion du système, ce qui peut entraîner une baisse des performances. En d'autres termes, par exemple, CPU0 ne peut pas accéder à la mémoire locale de CPU3 aussi rapidement qu'il peut accéder à sa propre mémoire locale, ce qui ralentit les performances. Les systèmes d'exploitation peuvent minimiser cette pénalité NUMA grâce à une planification minutieuse du processeur et à une gestion de la mémoire.

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.