Pour utiliser pleinement les machines disponibles, il est utile de savoir comment fonctionne l'intérieur ! Il y a deux composants clés : l'unité de traitement, qui effectue les calculs et la mémoire, qui stocke les données, les résultats intermédiaires et les calculs finaux. Des unités de traitement distinctes peuvent être organisées en grappes.
Unité centrale de traitement (CPU)
Un processeur simple se compose d'un seul cœur et d'une mémoire globale. Un cœur est une entité matérielle qui, selon l'architecture, comprend un certain nombre d'unités arithmétiques et logiques (ALU) et une mémoire locale. Une ALU est responsable des calculs, tels que l'addition, la soustraction, la multiplication, la division et les opérations logiques au niveau du bit. Selon l'architecture, les fonctions assurées par une ALU peuvent être de plus en plus complexes. Par exemple, une ALU complexe peut effectuer une simple addition et une division en une seule itération. La vitesse des CPU est définie en termes de cycles d'horloge. La durée d'un cycle d'horloge est contrôlée par un oscillateur, qui envoie des impulsions électriques assurant un fonctionnement synchrone. Plus le cycle d'horloge est court, plus la fréquence de l'oscillateur est élevée, plus l'exécution est rapide. Les processeurs complexes comprennent plusieurs cœurs et sont appelés processeurs multi-cœurs.
Unité de traitement graphique (GPU)
Les GPU étaient initialement destinés aux calculs graphiques, mais sont maintenant de plus en plus populaires dans les calculs à usage général. Les GPU utilisés pour les applications à usage général (GP) sont souvent appelés GP-GPU. Contrairement aux CPU multicœurs pour lesquels il est rare d'avoir plus de 10 cœurs, les GPU sont constitués de centaines de cœurs. Les cœurs GPU ont un jeu d'instructions limité et une fréquence et une mémoire inférieures par rapport aux cœurs CPU. Les GPU ne sont pas autonomes et nécessitent un processeur associé pour fonctionner. Les architectures modernes permettent à un seul GPU d'être partagé par plusieurs CPU ainsi qu'à un seul CPU d'avoir plusieurs GPU dépendants.
Le CPU et sa mémoire sont appelés un hôte, et le GPU avec une mémoire associée un périphérique. L'hôte peut à la fois lancer des fonctions, appelées noyaux, sur l'appareil et gérer la mémoire de l'appareil. Le transfert de données de l'hôte vers l'appareil est très coûteux et ne devrait pas arriver souvent.
La programmation GPU utilise généralement un modèle SIMD (Single Instruction Multiple Data) de la taxonomie de Flynn et est donc très puissante lorsque chacun de ses cœurs se voit confier la même tâche simple à effectuer, tandis que les branchements ou les opérations plus complexes peuvent considérablement ralentir le traitement.
Hiérarchie de la mémoire
Le GPU et le CPU ont la même hiérarchie de mémoire. Une mémoire plus rapide mais plus petite est placée à proximité des cœurs, tandis que la mémoire plus grande mais plus lente est déplacée loin des cœurs.
Les registres sont la mémoire la plus rapide et la plus petite, suivis du cache. Les registres sont utilisés pour stocker les valeurs immédiatement requises pour les calculs. La mémoire cache peut être de trois types, L1, L2 et L3, de L1 comme la plus rapide et la plus petite et L3 comme la plus lente et la plus grande. Le cache est utilisé pour stocker les valeurs qui ont été récemment utilisées ou qui pourraient bientôt devenir nécessaires. La plus lente, mais la plus grande, est la mémoire vive (RAM), où la plupart des données sont stockées.
Généralement, chaque cœur a son propre cache et partage une RAM commune. Les données de la RAM sont transférées vers le cache par blocs, appelés lignes de cache. Ce sont des cellules de mémoire RAM adjacentes. Ainsi, chaque cœur a une copie locale des données de la RAM. Si un cœur a besoin de nouvelles données, sa disponibilité est vérifiée dans le cache. Si ce n'est pas le cas, une erreur de cache se produit. Le cœur demande donc ces données à la RAM, ce qui est plus coûteux en calcul. Un programmeur doit s'assurer que les données immédiatement requises ou fréquemment utilisées se trouvent dans le cache.
Enregistrer un commentaire