Unité centrale de traitement

0 Comments
Voir aussi: la conception du Processeur

le Bloc-diagramme d’une base monoprocesseur-PROCESSEUR de l’ordinateur. Les lignes noires indiquent le flux de données, tandis que les lignes rouges indiquent le flux de contrôle; les flèches indiquent les directions du flux.

câblé dans un circuit de CPU est un ensemble d »opérations de base qu » il peut effectuer, appelé un jeu d  » instructions. De telles opérations peuvent impliquer, par exemple, l’ajout ou la soustraction de deux nombres, la comparaison de deux nombres ou le saut vers une partie différente d’un programme., Chaque opération de base est représentée par une combinaison particulière de bits, connue sous le nom d’opcode en langage machine; lors de l’exécution d’instructions dans un programme en langage machine, la CPU décide de l’opération à effectuer en « décodant » l’opcode. Une instruction complète en langage machine se compose d’un opcode et, dans de nombreux cas, de bits supplémentaires qui spécifient des arguments pour l’opération (par exemple, les nombres à additionner dans le cas d’une opération d’addition). En remontant l’échelle de complexité, un programme en langage machine est une collection d’instructions en langage machine que le processeur exécute.,

l’opération mathématique réelle pour chaque instruction est effectuée par un circuit logique combinatoire dans le processeur de la CPU connu sous le nom d’unité logique arithmétique ou ALU. En général, un processeur exécute une instruction en la récupérant de la mémoire, en utilisant son ALU pour effectuer une opération, puis en stockant le résultat en mémoire., Outre les instructions pour les mathématiques entières et les opérations logiques, diverses autres instructions de machine existent, telles que celles pour charger des données de la mémoire et les stocker, les opérations de ramification et les opérations mathématiques sur les nombres à virgule flottante effectuées par L’unité à virgule flottante (FPU) de la CPU.

Unité de Commandemodifier

Article principal: Unité de commande

l’Unité de commande (CU) est un composant de la CPU qui dirige le fonctionnement du processeur., Il indique la mémoire de l »ordinateur, unité arithmétique et logique et les périphériques d » entrée et de sortie comment répondre aux instructions qui ont été envoyées au processeur.

il dirige le fonctionnement des autres unités en fournissant des signaux de synchronisation et de commande. La plupart des ressources informatiques sont gérées par le CU. Il dirige le flux de données entre le PROCESSEUR et les autres périphériques. John von Neumann a inclus l’Unité de commande dans l’architecture von Neumann., Dans les conceptions informatiques modernes, l’Unité de contrôle est généralement une partie interne de la CPU avec son rôle global et son fonctionnement inchangés depuis son introduction.

arithmetical logic unitEdit

Article principal: Arithmetical logic unit

représentation symbolique d’un ALU et de ses signaux d’entrée et de sortie

l’unité arithmétique logique (ALU) est un circuit numérique dans le processeur qui effectue des opérations arithmétiques., Les entrées de L’ALU sont les mots de données à utiliser (appelés opérandes), les informations d’état des opérations précédentes et un code de l’Unité de commande indiquant l’opération à effectuer. Selon l’instruction en cours d’exécution, les opérandes peuvent provenir de registres de CPU internes ou de mémoire externe, ou ils peuvent être des constantes générées par L’ALU lui-même.

lorsque tous les signaux d’entrée se sont installés et se sont propagés à travers les circuits ALU, le résultat de l’opération effectuée apparaît aux sorties de L’ALU., Le résultat se compose à la fois d’un mot de données, qui peut être stocké dans un registre ou une mémoire, et d’informations d’état qui sont généralement stockées dans un registre de CPU interne spécial réservé à cet effet.

Address generation unitEdit

Main article: Address generation unit

Address generation unit (AGU), parfois aussi appelé address computation unit (ACU), est une unité d’exécution à l’intérieur de la CPU qui calcule les adresses utilisées par la CPU pour accéder à la mémoire principale., En faisant traiter les calculs d’adresse par des circuits séparés qui fonctionnent en parallèle avec le reste de la CPU, le nombre de cycles de CPU requis pour exécuter diverses instructions de machine peut être réduit, apportant des améliorations de performance.

lors de diverses opérations, les processeurs doivent calculer les adresses mémoire requises pour récupérer les données de la mémoire; par exemple, les positions en mémoire des éléments du tableau doivent être calculées avant que le processeur puisse récupérer les données à partir d’emplacements de mémoire réels., Ces calculs de génération d’adresses impliquent différentes opérations arithmétiques entières, telles que l’addition, la soustraction, les opérations modulo ou les décalages de bits. Souvent, le calcul d’une adresse mémoire implique plus d’une instruction machine à usage général, qui ne décodent pas nécessairement et ne s’exécutent pas rapidement. En incorporant un AGU dans une conception de CPU, ainsi que l’introduction d’instructions spécialisées qui utilisent L’AGU, divers calculs de génération d’adresses peuvent être déchargés du reste de la CPU, et peuvent souvent être exécutés rapidement dans un seul cycle de CPU.,

Les capacités d’un AGU dépendent d’un processeur particulier et de son architecture. Ainsi, certains Agu implémentent et exposent plus d’opérations de calcul d’adresse, tandis que d’autres incluent également des instructions spécialisées plus avancées pouvant fonctionner sur plusieurs opérandes à la fois. En outre, certaines architectures de CPU incluent plusieurs Agu, de sorte que plus d’une opération de calcul d’adresse peut être exécutée simultanément, apportant d’autres améliorations de performances en capitalisant sur la nature superscalaire des conceptions de CPU avancées., Par exemple, Intel intègre plusieurs Agu dans ses Microarchitectures Sandy Bridge et Haswell, qui augmentent la bande passante du sous-système de mémoire CPU en permettant l’exécution parallèle de plusieurs instructions d’accès à la mémoire.

Memory management unit (MMU)Edit

Main article: Memory management unit

La plupart des microprocesseurs haut de gamme (ordinateurs de bureau, portables, Serveurs) ont une unité de gestion de la mémoire, traduisant les adresses logiques en adresses RAM physiques, offrant une protection de la mémoire et des capacités de pagination, utiles pour la mémoire virtuelle., Les processeurs plus simples, en particulier les microcontrôleurs, ne comprennent généralement pas une MMU.

CacheEdit

un cache CPU est un cache matériel utilisé par l’UNITÉ CENTRALE DE TRAITEMENT (CPU) d’un ordinateur pour réduire le coût moyen (temps ou énergie) d’accès aux données de la mémoire principale. Un cache est une mémoire plus petite et plus rapide, plus proche d’un cœur de processeur, qui stocke des copies des données à partir d’emplacements de mémoire principaux fréquemment utilisés. La plupart des processeurs ont différents caches Indépendants, y compris les caches d’instructions et de données, où le cache de données est généralement organisé comme une hiérarchie de plusieurs niveaux de cache (L1, L2, L3, L4, etc.,).

Tous les processeurs modernes (rapides) (avec quelques exceptions spécialisées) ont plusieurs niveaux de caches CPU. Les premiers processeurs qui utilisaient un cache n’avaient qu’un seul niveau de cache; contrairement aux caches de niveau 1 ultérieurs, il n’était pas divisé en L1D (pour les données) et L1i (pour les instructions). Presque tous les processeurs actuels avec des caches ont un cache L1 divisé. Ils ont également des caches L2 et, pour les processeurs plus gros, des caches L3. Le cache L2 n’est généralement pas divisé et agit comme un référentiel commun pour le cache L1 déjà divisé. Chaque cœur d’un processeur multicœur possède un cache L2 dédié et n’est généralement pas partagé entre les cœurs., Le cache L3 et les caches de niveau supérieur sont partagés entre les cœurs et ne sont pas divisés. Un cache L4 est actuellement rare, et est généralement sur la mémoire vive dynamique (DRAM), plutôt que sur la mémoire vive statique (SRAM), sur une matrice ou une puce distincte. C’était aussi le cas historiquement avec L1, alors que des puces plus grandes ont permis l’intégration de l’informatique et généralement de tous les niveaux de cache, à l’exception possible du dernier niveau. Chaque niveau supplémentaire de cache a tendance à être plus grand et à être optimisé différemment.,

d’autres types de caches existent (qui ne sont pas pris en compte dans la « taille de cache » des caches les plus importants mentionnés ci-dessus), tels que le tampon de lookaside de traduction (TLB) qui fait partie de l’Unité de gestion de mémoire (MMU) que la plupart des processeurs ont.

Les Caches sont généralement dimensionnés en puissances de deux: 4, 8, 16, etc. KiB ou MiB (pour les plus grandes tailles non-L1), bien que L’IBM z13 dispose d’un cache d’instructions L1 de 96 Ko.

clock rateEdit

Main article: Clock rate

La plupart des processeurs sont des circuits synchrones, ce qui signifie qu’ils utilisent un signal d’horloge pour rythmer leurs opérations séquentielles., Le signal d’horloge est produit par un circuit d’oscillateur externe qui génère un nombre constant d’impulsions chaque seconde sous la forme d’une onde carrée périodique. La fréquence des impulsions d’horloge détermine la vitesse à laquelle un processeur exécute des instructions et, par conséquent, plus l’horloge est rapide, plus le processeur exécutera d’instructions à chaque seconde.

pour assurer le bon fonctionnement de la CPU, la période d’horloge est plus longue que le temps maximum nécessaire pour que tous les signaux se propagent (se déplacent) à travers la CPU., En réglant la période d’horloge à une valeur bien au-dessus du délai de propagation du pire des cas, il est possible de concevoir l’ensemble du processeur et la façon dont il déplace les données autour des « bords » du signal d’horloge montant et descendant. Cela présente l’avantage de simplifier considérablement le processeur, tant du point de vue de la conception que du point de vue du nombre de composants. Cependant, il présente également l’inconvénient que l’ensemble du processeur doit attendre sur ses éléments les plus lents, même si certaines parties sont beaucoup plus rapides. Cette limitation a été largement compensée par diverses méthodes d’augmentation du parallélisme CPU (voir ci-dessous).,

cependant, les améliorations architecturales à elles seules ne résolvent pas tous les inconvénients des processeurs globalement synchrones. Par exemple, un signal d’horloge est soumis aux retards de tout autre signal électrique. Des cadences d’horloge plus élevées dans les processeurs de plus en plus complexes rendent plus difficile le maintien du signal d’horloge en phase (synchronisé) dans toute l’unité. Cela a conduit de nombreux processeurs modernes à exiger que plusieurs signaux d’horloge identiques soient fournis pour éviter de retarder un seul signal de manière suffisamment significative pour provoquer un dysfonctionnement du processeur., Un autre problème majeur, à mesure que les fréquences d’horloge augmentent considérablement, est la quantité de chaleur dissipée par le processeur. L’horloge en constante évolution provoque le changement de nombreux composants, qu’ils soient utilisés ou non à ce moment-là. En général, un composant qui commute utilise plus d’énergie qu’un élément à l’état statique. Par conséquent, à mesure que la fréquence d’horloge augmente, la consommation d’énergie augmente, ce qui oblige le processeur à nécessiter plus de dissipation thermique sous la forme de solutions de refroidissement du processeur.,

une méthode de traitement de la commutation de composants inutiles est appelée clock gating, qui consiste à désactiver le signal d’horloge en composants inutiles (les désactivant efficacement). Cependant, cela est souvent considéré comme difficile à mettre en œuvre et ne voit donc pas d’utilisation courante en dehors des conceptions à très faible puissance. Une conception récente notable du processeur qui utilise un verrouillage d’horloge étendu est le Xénon basé sur IBM PowerPC utilisé dans la Xbox 360; de cette façon, les besoins en énergie de la Xbox 360 sont considérablement réduits., Une autre méthode pour résoudre certains des problèmes avec un signal d’horloge global est la suppression totale du signal d’horloge. Alors que la suppression du signal d’horloge global rend le processus de conception considérablement plus complexe à bien des égards, les conceptions asynchrones (ou sans horloge) présentent des avantages marqués en termes de consommation d’énergie et de dissipation thermique par rapport aux conceptions synchrones similaires. Bien que quelque peu rare, des processeurs asynchrones entiers ont été construits sans utiliser de signal d’horloge global. Deux exemples notables de ceci sont L’amulette compatible ARM et les MiniMIPS compatibles MIPS R3000.,

plutôt que de supprimer totalement le signal d’horloge, certaines conceptions de CPU permettent à certaines parties du périphérique d’être asynchrones, telles que l’utilisation d’ALUs asynchrones en conjonction avec le pipelining superscalaire pour obtenir des gains de performances arithmétiques. Bien qu’il ne soit pas tout à fait clair si les conceptions totalement asynchrones peuvent fonctionner à un niveau comparable ou meilleur que leurs homologues synchrones, il est évident qu’elles excellent au moins dans des opérations mathématiques plus simples., Ceci, combiné avec leurs excellentes propriétés de consommation d’énergie et de dissipation thermique, les rend très appropriés pour les ordinateurs embarqués.

Voltage regulator moduleEdit

Main article: Voltage regulator module

de nombreux processeurs modernes ont un module de gestion de l’alimentation intégré à la matrice qui régule l’alimentation en tension à la demande des circuits CPU, ce qui lui permet de maintenir l’équilibre entre les performances et la consommation d’énergie.

Integer rangeEdit

Chaque CPU représente les valeurs numériques d’une manière spécifique., Par exemple, certains premiers ordinateurs numériques représentaient les nombres comme des valeurs système décimales familières (base 10), et d’autres ont utilisé des représentations plus inhabituelles telles que ternaire (base trois). Presque tous les processeurs modernes représentent des nombres sous forme binaire, chaque chiffre étant représenté par une quantité physique à deux valeurs telle qu’une tension « haute » ou « basse ».

six bits de mots contenant le binaire codé représentation de la valeur décimale 40. La plupart des processeurs modernes utilisent des tailles de mots d’une puissance de deux, par exemple 8, 16, 32 ou 64 bits.,

Liées à la représentation numérique est la taille et la précision des nombres entiers qu’un PROCESSEUR peut représenter. Dans le cas d’un processeur binaire, cela est mesuré par le nombre de bits (chiffres significatifs d’un entier codé binaire) que le processeur peut traiter en une seule opération, ce qui est communément appelé taille de mot, largeur de bit, largeur de chemin de données, précision entière ou taille entière. La taille entière d’un processeur détermine la plage de valeurs entières sur laquelle il peut fonctionner directement., Par exemple, un processeur 8 bits peut manipuler directement des entiers représentés par huit bits, qui ont une plage de 256 (28) valeurs entières discrètes.

la plage D’entiers peut également affecter le nombre d’emplacements de mémoire que la CPU peut adresser directement (une adresse est une valeur entière représentant un emplacement de mémoire spécifique). Par exemple, si un processeur binaire utilise 32 bits pour représenter une adresse mémoire, il peut directement adresser 232 emplacements de mémoire. Pour contourner cette limitation et pour diverses autres raisons, certains processeurs utilisent des mécanismes (tels que la commutation de banque) qui permettent d’adresser de la mémoire supplémentaire.,

Les processeurs avec des tailles de mots plus grandes nécessitent plus de circuits et sont par conséquent physiquement plus grands, coûtent plus cher et consomment plus d’énergie (et donc génèrent plus de chaleur). En conséquence, des microcontrôleurs 4 ou 8 bits plus petits sont couramment utilisés dans les applications modernes, même si des processeurs avec des tailles de mots beaucoup plus grandes (telles que 16, 32, 64, voire 128 bits) sont disponibles. Cependant, lorsque des performances plus élevées sont requises, les avantages d’une taille de mot plus grande (plages de données et espaces d’adressage plus importants) peuvent l’emporter sur les inconvénients. Un processeur peut avoir des chemins de données internes plus courts que la taille du mot pour réduire la taille et le coût., Par exemple, même si le jeu D’instructions IBM System/360 était un jeu d’instructions 32 bits, les modèles System/360 30 et 40 avaient des chemins de données 8 bits dans l’unité logique arithmétique, de sorte qu’un add 32 bits nécessitait quatre cycles, un pour chaque 8 bits des opérandes, et, même si le jeu D’instructions de la série Motorola 68000 était un jeu d’instructions 32 bits, le Motorola 68000 et le Motorola 68010 avaient des chemins de données 16 bits dans l’unité logique arithmétique, de sorte qu’un 32-bit ajouter deux cycles requis.,

pour obtenir certains des avantages offerts par les longueurs de bits inférieures et supérieures, de nombreux jeux d’instructions ont des largeurs de bits différentes pour les données entières et à virgule flottante, ce qui permet aux processeurs implémentant ce jeu d’instructions d’avoir des largeurs de bits différentes pour différentes parties du périphérique. Par exemple, le jeu D’instructions IBM System/360 était principalement 32 bits, mais prenait en charge les valeurs à virgule flottante 64 bits pour faciliter une plus grande précision et une plus grande plage de nombres à virgule flottante., Le System / 360 Model 65 avait un additionneur de 8 bits pour l’arithmétique binaire décimale et à virgule fixe et un additionneur de 60 bits pour l’arithmétique à virgule flottante. De nombreuses conceptions de CPU ultérieures utilisent une largeur de bit mixte similaire, en particulier lorsque le processeur est destiné à un usage général où un équilibre raisonnable entre la capacité d’entier et de virgule flottante est requis.,

Parallélismedit

Article principal: calcul parallèle

modèle d’un processeur subscalaire, dans lequel il faut quinze cycles d’horloge pour compléter trois instructions

La description du fonctionnement de base d’un processeur proposé dans la section précédente décrit la forme la plus simple qu’un processeur peut prendre. Ce type de CPU, généralement appelé sous-échelle, fonctionne et exécute une instruction sur une ou deux données à la fois, c’est-à-dire moins d’une instruction par cycle d’horloge (IPC < 1).,

Ce processus donne lieu à une inefficacité inhérente dans les processeurs subscalaires. Comme une seule instruction est exécutée à la fois, l’ensemble de la CPU doit attendre la fin de cette instruction avant de passer à l’instruction suivante. En conséquence, le processeur subscalar se « raccroche » aux instructions qui prennent plus d’un cycle d’horloge pour terminer l’exécution. Même l’ajout d’une deuxième unité d’exécution (voir ci-dessous) n’améliore pas beaucoup les performances; plutôt qu’une voie soit suspendue, maintenant deux voies sont suspendues et le nombre de transistors inutilisés est augmenté., Cette conception, dans laquelle les ressources d’exécution de la CPU ne peuvent fonctionner que sur une seule instruction à la fois, ne peut éventuellement atteindre des performances scalaires (une instruction par cycle d’horloge, IPC = 1). Cependant, les performances sont presque toujours sous-graduelles (moins d’une instruction par cycle d’horloge, IPC < 1).

Les tentatives visant à obtenir de meilleures performances scalaires ont abouti à une variété de méthodologies de conception qui font que le processeur se comporte moins linéairement et plus en parallèle., Lorsque l’on se réfère au parallélisme dans les processeurs, deux termes sont généralement utilisés pour classer ces techniques de conception:

  • parallélisme au niveau des instructions (ILP), qui vise à augmenter la vitesse à laquelle les instructions sont exécutées dans un processeur (c’est-à-dire à augmenter l’utilisation des ressources d’exécution à la matrice);
  • parallélisme au niveau des tâches (TLP), qui vise à augmenter le nombre de threads ou de processus qu’un processeur peut exécuter simultanément.,

chaque méthodologie diffère à la fois dans la façon dont ils sont mis en œuvre, ainsi que l »efficacité relative qu » ils permettent d  » augmenter les performances du processeur pour une application.

parallélisme au niveau des instructions edit

Article principal: parallélisme au niveau des instructions

pipeline de base à cinq étages. Dans le meilleur des cas, ce pipeline peut maintenir un taux de réussite d’une instruction par cycle d’horloge.,

l’une des méthodes les plus simples utilisées pour réaliser un parallélisme accru consiste à commencer les premières étapes de récupération et de décodage des instructions avant la fin de l’exécution de l’instruction précédente. C’est la forme la plus simple d’une technique connue sous le nom de pipelining d’instruction, et est utilisée dans presque tous les processeurs modernes à usage général. Le Pipelining permet d’exécuter plus d’une instruction à un moment donné en décomposant le chemin d’exécution en étapes discrètes., Cette séparation peut être comparée à une chaîne de montage, dans laquelle une instruction est rendue plus complète à chaque étape jusqu’à ce qu’elle quitte le pipeline d’exécution et soit retirée.

le Pipelining introduit cependant la possibilité d’une situation où le résultat de l’opération précédente est nécessaire pour terminer l’opération suivante; une condition souvent appelée conflit de dépendance de données. Pour faire face à cela, des précautions supplémentaires doivent être prises pour vérifier ce genre de conditions et retarder une partie du pipeline d’instructions si cela se produit., Naturellement, cela nécessite des circuits supplémentaires, de sorte que les processeurs pipelined sont plus complexes que les processeurs subcalaires (mais pas de manière très significative). Un processeur pipelined peut devenir très presque scalaire, inhibé uniquement par des stalles de pipeline (une instruction passant plus d’un cycle d’horloge dans une étape).

Un simple superscalar pipeline. En récupérant et en expédiant deux instructions à la fois, un maximum de deux instructions par cycle d’horloge peut être complété.,

Une amélioration supplémentaire de l’idée de pipelining d’instructions a conduit au développement d’une méthode qui diminue encore plus le temps d’inactivité des composants CPU. Les conceptions dites superscalaires comprennent un long pipeline d’instructions et plusieurs unités d’exécution identiques, telles que des unités de stockage de charge, des unités arithmétiques-logiques, des unités à virgule flottante et des unités de génération d’adresses. Dans un pipeline superscalaire, plusieurs instructions sont lues et transmises à un répartiteur, qui décide si les instructions peuvent être exécutées en parallèle (simultanément)., Si c’est le cas, ils sont envoyés aux unités d’exécution disponibles, ce qui permet d’exécuter plusieurs instructions simultanément. En général, plus un processeur superscalaire est capable d’envoyer simultanément des instructions aux unités d’exécution en attente, plus les instructions seront complétées dans un cycle donné.

la plupart des difficultés dans la conception d’une architecture de processeur superscalaire réside dans la création d’un répartiteur efficace., Le répartiteur doit être en mesure de déterminer rapidement et correctement si des instructions peuvent être exécutées en parallèle, ainsi que de les envoyer de manière à garder autant d’unités d’exécution occupées que possible. Cela nécessite que le pipeline d’instructions soit rempli aussi souvent que possible et donne lieu à la nécessité dans les architectures superscalaires pour des quantités importantes de cache CPU. Il rend également les techniques d’évitement des risques telles que la prédiction de branche, l’exécution spéculative, le changement de nom de registre, l’exécution en panne et la mémoire transactionnelle cruciales pour maintenir des niveaux de performance élevés., En essayant de prédire quelle branche (ou chemin) une instruction conditionnelle prendra, la CPU peut minimiser le nombre de fois que le pipeline entier doit attendre jusqu’à ce qu’une instruction conditionnelle soit terminée. L’exécution spéculative fournit souvent des augmentations de performances modestes en exécutant des parties de code qui peuvent ne pas être nécessaires après la fin d’une opération conditionnelle. L’exécution en panne réorganise quelque peu l’ordre dans lequel les instructions sont exécutées pour réduire les retards dus aux dépendances de données., En outre, dans le cas d’un flux d’instructions unique, d’un flux de données multiple—Un cas où beaucoup de données du même type doivent être traitées—, les processeurs modernes peuvent désactiver certaines parties du pipeline de sorte que lorsqu’une seule instruction est exécutée plusieurs fois, la CPU ignore les phases de récupération et de décodage et augmente ainsi considérablement les performances à certaines occasions, en particulier dans les moteurs de programmes très monotones tels que les logiciels de création vidéo et le traitement de photos.,

dans le cas où une partie de la CPU est superscalaire et une partie ne l’est pas, la partie qui ne l’est pas subit une pénalité de performance en raison des arrêts de planification. L’Intel P5 Pentium avait deux Alu superscalaires qui pouvaient accepter une instruction par cycle d’horloge chacun, mais son FPU ne pouvait pas accepter une instruction par cycle d’horloge. Ainsi, le P5 était superscalaire entier mais pas superscalaire à virgule flottante. Le successeur d « Intel à l » architecture P5, P6, a ajouté des capacités superscalaires à ses fonctionnalités en virgule flottante, et a ainsi permis une augmentation significative des performances d  » instruction en virgule flottante.,

le pipelining simple et la conception superscalaire augmentent l’ILP d’un processeur en permettant à un seul processeur de terminer l’exécution des instructions à des vitesses dépassant une instruction par cycle d’horloge. La plupart des conceptions de CPU modernes sont au moins quelque peu superscalaires, et presque tous les processeurs à usage général conçus au cours de la dernière décennie sont superscalaires. Au cours des années suivantes, une partie de l’accent mis sur la conception d’ordinateurs à haute ILP a été déplacé hors du matériel de la CPU et dans son interface logicielle, ou Architecture de jeu d’instructions (ISA)., La stratégie du très long mot d’instruction (VLIW) provoque une certaine ILP à devenir impliqué directement par le logiciel, ce qui réduit la quantité de travail que la CPU doit effectuer pour stimuler ILP et réduire ainsi la complexité de la conception.

parallélisme au niveau des tâches

principaux articles: processeur multithreading et multi-core

Une autre stratégie pour atteindre les performances consiste à exécuter plusieurs threads ou processus en parallèle. Ce domaine de recherche est connu sous le nom de calcul parallèle. Dans la taxonomie de Flynn, cette stratégie est connue sous le nom de flux d’instructions multiples, flux de données multiples (MIMD).,

Une technologie utilisée à cette fin était le multitraitement (MP). La saveur initiale de cette technologie est connue sous le nom de multitraitement symétrique (SMP), où un petit nombre de processeurs partagent une vue cohérente de leur système de mémoire. Dans ce schéma, chaque CPU dispose de matériel supplémentaire pour maintenir une vue constamment à jour de la mémoire. En évitant les vues périmées de la mémoire, les processeurs peuvent coopérer sur le même programme et les programmes peuvent migrer d’un processeur à un autre., Pour augmenter le nombre de processeurs coopérants au-delà d’une poignée, des schémas tels que L’accès à la mémoire non uniforme (NUMA) et les protocoles de cohérence basés sur des répertoires ont été introduits dans les années 1990. les systèmes SMP sont limités à un petit nombre de processeurs tandis que les systèmes NUMA ont été construits avec des milliers de processeurs. Initialement, le multiprocessing a été construit en utilisant plusieurs processeurs et cartes discrets pour implémenter l’interconnexion entre les processeurs., Lorsque les processeurs et leur interconnexion sont tous mis en œuvre sur une seule puce, la technologie est connue sous le nom de multiprocessus au niveau de la puce (CMP) et la puce unique en tant que processeur multicœur.

Il a été reconnu plus tard que le parallélisme à grain plus fin existait avec un seul programme. Un seul programme peut avoir plusieurs threads (ou fonctions) qui peuvent être exécutés séparément ou en parallèle. Certains des premiers exemples de cette technologie ont mis en œuvre un traitement d’entrée/sortie, tel que l’accès direct à la mémoire en tant que thread séparé du thread de calcul., Une approche plus générale de cette technologie a été introduite dans les années 1970 lorsque les systèmes ont été conçus pour exécuter plusieurs threads de calcul en parallèle. Cette technologie est connue sous le nom de multi-threading (MT). Cette approche est considérée comme plus rentable que le multiprocessing, car seul un petit nombre de composants au sein d’une CPU est répliqué pour prendre en charge MT, par opposition à l’ensemble de la CPU dans le cas de MP. Dans MT, les unités d’exécution et le système de mémoire, y compris les caches, sont partagés entre plusieurs threads., L’inconvénient de MT est que le support matériel pour le multithreading est plus visible pour les logiciels que celui de MP et donc les logiciels de supervision comme les systèmes d’exploitation doivent subir des modifications plus importantes pour prendre en charge MT. Un type de MT qui a été implémenté est connu sous le nom de multithreading temporel, où un thread est exécuté jusqu’à ce qu’il soit bloqué en attendant que les données reviennent de la mémoire externe. Dans ce schéma, le CPU basculerait alors rapidement vers un autre thread prêt à fonctionner, le commutateur se faisant souvent dans un cycle D’horloge CPU, tel que L’UltraSPARC T1., Un autre type de MT est le multithreading simultané, où les instructions de plusieurs threads sont exécutées en parallèle dans un cycle D’horloge CPU.

pendant plusieurs décennies, des années 1970 au début des années 2000, l’accent mis dans la conception de processeurs à usage général hautes performances était largement mis sur la réalisation D’un ILP élevé grâce à des technologies telles que le pipelining, les caches, l’exécution superscalaire, l’exécution hors service, etc. Cette tendance a abouti à de grands processeurs gourmands en énergie tels que L’Intel Pentium 4., Au début des années 2000, les concepteurs de CPU ont été empêchés d’obtenir des performances plus élevées grâce aux techniques ILP en raison de la disparité croissante entre les fréquences de fonctionnement du processeur et les fréquences de fonctionnement de la mémoire principale, ainsi que de l’augmentation de la dissipation de puissance du processeur grâce à des techniques ILP plus ésotériques.

Les concepteurs de CPU ont ensuite emprunté des idées à des marchés informatiques commerciaux tels que le traitement des transactions, où les performances globales de plusieurs programmes, également appelées calcul de débit, étaient plus importantes que les performances d’un seul thread ou processus.,

ce renversement de l »accent est mis en évidence par la prolifération des conceptions de processeurs doubles et plus de cœur et notamment, les conceptions plus récentes d » Intel ressemblant à son architecture P6 moins superscalaire. Les conceptions tardives dans plusieurs familles de processeurs présentent CMP, y compris le X86-64 Opteron et Athlon 64 X2, le SPARC UltraSPARC T1, IBM POWER4 et POWER5, ainsi que plusieurs processeurs de console de jeux vidéo comme la conception PowerPC triple cœur de la Xbox 360 et le microprocesseur cellulaire à 7 cœurs de la PlayStation 3.,

parallélisme des Donnéesmodifier

principaux articles: processeur vectoriel et SIMD

un paradigme moins commun mais de plus en plus important des processeurs (et même de l’informatique en général) traite du parallélisme des données. Les processeurs discutés précédemment sont tous appelés un certain type de périphérique scalaire. Comme son nom l’indique, les processeurs vectoriels traitent plusieurs données dans le contexte d’une seule instruction. Cela contraste avec les processeurs scalaires, qui traitent une donnée pour chaque instruction., En utilisant la taxonomie de Flynn, ces deux schémas de traitement des données sont généralement appelés flux d’instructions unique, flux de données multiples (SIMD) et flux d’instructions unique, flux de données unique (SISD), respectivement. La grande utilité dans la création de processeurs qui traitent des vecteurs de données réside dans l’optimisation des tâches qui ont tendance à nécessiter la même opération (par exemple, une somme ou un produit dot) à effectuer sur un grand ensemble de données. Quelques exemples classiques de ces types de tâches comprennent les applications multimédias (images, vidéo et son), ainsi que de nombreux types de tâches scientifiques et d’ingénierie., Alors qu’un processeur scalaire doit terminer l’ensemble du processus de récupération, de décodage et d’exécution de chaque instruction et valeur dans un ensemble de données, un processeur vectoriel peut effectuer une seule opération sur un ensemble de données relativement grand avec une seule instruction. Cela n’est possible que lorsque l’application a tendance à nécessiter de nombreuses étapes qui appliquent une opération à un grand ensemble de données.

la plupart des premiers processeurs vectoriels, tels que le Cray-1, étaient presque exclusivement associés à la recherche scientifique et aux applications de cryptographie., Cependant, comme le multimédia s’est largement déplacé vers les médias numériques, le besoin d’une certaine forme de SIMD dans les processeurs à usage général est devenu important. Peu de temps après que l’inclusion des unités à virgule flottante a commencé à devenir monnaie courante dans les processeurs à usage général, les spécifications et les implémentations des unités D’exécution SIMD ont également commencé à apparaître pour les processeurs à usage général. Certaines de ces premières spécifications SIMD – comme HP « S Multimedia Acceleration eXtensions (MAX) et Intel »s MMX – étaient entier seulement., Cela s’est avéré être un obstacle important pour certains développeurs de logiciels, car de nombreuses applications qui bénéficient de SIMD traitent principalement des nombres à virgule flottante. Progressivement, les développeurs ont affiné et remodelé ces premières conceptions dans certaines des spécifications SIMD modernes communes, qui sont généralement associées à une architecture de jeu d’instructions (ISA). Quelques exemples modernes notables incluent Intel  » S Streaming SIMD Extensions (SSE) et le PowerPC lié Altivec (également connu sous le nom VMX).


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *