Architecture parallèle et multi-cœur
L'architecture parallèle et multi-cœur concerne le matériel qui exécute de nombreuses opérations simultanément — plusieurs cœurs sur une puce, des unités vectorielles et SIMD, et des GPU massivement parallèles — ainsi que les structures de mémoire et de communication qui permettent au travail parallèle de se dérouler correctement et efficacement.
Definition
L'architecture parallèle et multi-cœur est la conception de matériel informatique qui effectue plusieurs calculs simultanément par le biais de cœurs répliqués, d'unités de traitement de données parallèles larges ou d'accélérateurs spécialisés, ainsi que les mécanismes d'interconnexion et de mémoire qui les coordonnent.
Scope
Ce domaine couvre les organisations matérielles pour le parallélisme : les multiprocesseurs sur puce et les conceptions multi-cœurs, les systèmes à mémoire partagée et la cohérence et la consistance qu'ils exigent, les processeurs SIMD et vectoriels pour le parallélisme au niveau des données, et les architectures GPU. Il traite de la manière dont le matériel parallèle est construit et de la façon dont ses performances évoluent. Il exclut l'aspect logiciel de la programmation parallèle et distribuée et des systèmes distribués à l'échelle des clusters, qui sont couverts par l'informatique distribuée et parallèle, ainsi que le moteur d'exécution monocœur couvert par la microarchitecture des processeurs.
Sub-topics
Core questions
- Comment le matériel parallèle met-il à l'échelle les performances, et qu'est-ce qui limite cette mise à l'échelle ?
- Comment plusieurs cœurs sont-ils intégrés sur une puce et connectés à une mémoire partagée ?
- Quelles garanties de cohérence et de consistance de la mémoire le matériel à mémoire partagée doit-il fournir ?
- Comment les conceptions SIMD, vectorielles et GPU exploitent-elles le parallélisme au niveau des données ?
- Comment les architectures parallèles sont-elles adaptées aux charges de travail pour maximiser le débit utile par watt ?
Key concepts
- multiprocesseur sur puce
- parallélisme au niveau des threads
- parallélisme au niveau des données
- traitement SIMD et vectoriel
- GPU et multi-cœurs
- mémoire partagée et cohérence
- consistance de la mémoire
- réseau d'interconnexion
- loi d'Amdahl et évolutivité
- matériel de synchronisation
Key theories
- Loi d'Amdahl
- L'accélération obtenue en parallélisant un calcul est limitée par la fraction qui doit s'exécuter séquentiellement : même avec un nombre illimité de processeurs, la partie séquentielle plafonne l'accélération globale, ce qui influence la conception et l'évaluation des architectures parallèles.
- Taxonomie du parallélisme de Flynn
- Le matériel parallèle est organisé selon la manière dont les flux d'instructions et de données se combinent — par exemple, single-instruction multiple-data (SIMD) pour le parallélisme des données et multiple-instruction multiple-data (MIMD) pour les systèmes multi-cœurs et multiprocesseurs — une classification qui encadre les choix architecturaux.
Mechanisms
Les processeurs multi-cœurs placent plusieurs cœurs sur une seule puce, partageant un ou plusieurs niveaux de cache et une interface mémoire, connectés par une interconnexion sur puce. Les protocoles de cohérence maintiennent la consistance de leurs caches, et un modèle de cohérence de la mémoire définit l'ordonnancement des opérations mémoire vues par les cœurs. Le matériel de traitement de données parallèles — unités vectorielles, voies SIMD et GPU avec de nombreux cœurs légers — applique une opération à de nombreux éléments de données, tandis que les primitives de synchronisation coordonnent les threads parallèles.
Clinical relevance
Après que la mise à l'échelle de la fréquence d'horloge des processeurs monocœurs a stagné, l'architecture parallèle et multi-cœur est devenue la voie principale vers des performances accrues, de sorte que pratiquement tous les processeurs modernes sont multi-cœurs. Les GPU et les unités SIMD alimentent désormais les graphiques, le calcul scientifique et les opérations matricielles au cœur de l'apprentissage profond, rendant le matériel parallèle essentiel aux charges de travail de haute performance et d'intelligence artificielle.
History
Les machines parallèles remontent aux supercalculateurs vectoriels tels que le Cray-1 dans les années 1970 et aux multiprocesseurs de recherche des années 1980 et 1990. La fin de la mise à l'échelle de la fréquence vers le milieu des années 2000 a poussé l'industrie vers les puces multi-cœurs par défaut. Les GPU ont évolué des pipelines graphiques à fonction fixe vers des accélérateurs multi-cœurs programmables, et les architectures de traitement de données parallèles sont devenues fondamentales pour l'apprentissage automatique moderne.
Debates
- Multi-cœurs généralistes versus accélérateurs spécialisés
- Avec des rendements décroissants des architectures multi-cœurs homogènes, il y a un débat sur la mesure dans laquelle il faut privilégier les accélérateurs spécifiques à un domaine (GPU, unités tensorielles) par rapport aux cœurs généralistes, échangeant la programmabilité et la flexibilité contre l'efficacité pour des charges de travail particulières.
Key figures
- Gene Amdahl
- Michael J. Flynn
- John L. Hennessy
- David A. Patterson
- David E. Culler
Related topics
Seminal works
- hennessy2019
- amdahl1967
- patterson2020
Frequently asked questions
- Pourquoi les processeurs sont-ils passés aux cœurs multiples ?
- L'augmentation de la fréquence d'horloge d'un seul cœur a atteint des limites de puissance et de chaleur au milieu des années 2000. L'ajout de cœurs supplémentaires a augmenté le débit total dans le même budget de puissance, de sorte que le multi-cœur est devenu le moyen dominant de maintenir la croissance des performances — bien que cela transfère la charge de l'accélération au logiciel parallèle.
- En quoi un GPU est-il différent d'un CPU multi-cœurs ?
- Un CPU possède quelques cœurs puissants optimisés pour une exécution à faible latence et à usage général. Un GPU possède de nombreux cœurs plus simples optimisés pour le travail parallèle de données à haut débit, exécutant la même opération sur de nombreux éléments de données, ce qui convient aux graphiques et au calcul numérique dense, mais pas à toutes les charges de travail.