Processeur - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Conception et implémentation

Le codage des nombres

La manière dont un CPU représente les nombres est un choix de conception qui affecte de façon profonde son fonctionnement de base. Certains des ordinateurs les plus anciens utilisaient un modèle électrique du système numérique (Une information numérique (en anglais « digital ») est une information ayant été quantifiée et échantillonnée, par opposition à une information dite...) décimal (base 10). Certains autres ont fait le choix de systèmes numériques plus exotiques comme les systèmes trinaires (base 3). Les processeurs modernes représentent les nombres dans le système binaire (Le système binaire est un système de numération utilisant la base 2. On nomme couramment bit (de l'anglais binary digit, soit « chiffre binaire ») les chiffres de la numération binaire. Ceux ci ne...) (base 2) dans lequel chacun des chiffres est représenté par une grandeur physique (Une grandeur physique est un ensemble d'unités de mesure, de variables, d'ordres de grandeur et de méthodes de mesure (qui sont l'objet de la métrologie) lié à un aspect ou phénomène particulier de...) qui ne peut prendre que 2 valeurs comme une tension (La tension est une force d'extension.) électrique "haute" ou "basse".

Le concept physique (La physique (du grec φυσις, la nature) est étymologiquement la « science de la nature ». Dans un sens...) de tension électrique est analogique (Le concept d'analogique est utilisé par opposition à celui de numérique.) par nature car elle peut prendre une infinité de valeurs. Pour les besoins de représentation physique des nombres binaires, les valeurs des tensions électriques sont définies comme des états 1 et 0. Ces états résultent des paramètres opérationnels des éléments de commutation qui composent le processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de traitement »), est le composant de l'ordinateur qui exécute les programmes informatiques. Avec la mémoire notamment, c'est...) comme les niveaux de seuil des transistors.

Le microprocesseur (Un microprocesseur est un processeur dont les composants ont été suffisamment miniaturisés pour être regroupés dans un unique circuit intégré. Fonctionnellement, le processeur est...) 6502 en technologie (Le mot technologie possède deux acceptions de fait :) MOS dans un boîtier dual in-line une conception très répandue.

En plus du système de représentation des nombres, il faut s'intéresser à la taille et la précision des nombres qu'un processeur peut manipuler. Dans le cas d'un processeur binaire, un "bit" correspond à une position particulière dans les nombres que le processeur peut gérer. Le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) de bits (chiffres) qu'un processeur utilise pour représenter un nombre est souvent appelé "taille du mot" (word size, bit width, data path width) ou "précision entière" lorsqu'il s'agit de nombres entiers (à l'opposé ( En mathématique, l'opposé d’un nombre est le nombre tel que, lorsqu’il est à ajouté à n donne zéro. En botanique, les organes d'une plante sont dits opposés lorsqu'ils sont...) des nombres flottants). Ce nombre diffère suivant les architectures, et souvent, suivant les différents modules d'un même processeur. Par exemple, un CPU 8-bit gère des nombres qui peuvent être représentés par 8 chiffres binaires (chaque chiffre (Un chiffre est un symbole utilisé pour représenter les nombres.) pouvant prendre 2 valeurs), soit 28 ou 256 valeurs discrètes. En conséquence, la taille du nombre entier défini une limite à la plage (La Plage est un film anglo-américain réalisé par Danny Boyle en 2000 et adapté du roman The Beach d'Alex Garland) des nombres entiers que le logiciel (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus les instructions de traitement, regroupées sous forme de...) exécuté par le processeur pourra utiliser.

La taille du nombre entier affecte également le nombre d'emplacements mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) que le processeur peut adresser (localiser). Par exemple, si un processeur binaire utilise 32 bits pour représenter une adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de s'adresser à une autre parmi un ensemble d'entités. Pour qu'il n'y ait pas d'ambiguïté, chaque adresse doit correspondre...) mémoire et que chaque adresse mémoire est représentée par un octet (8 bits), la taille mémoire maximum qui peut être adressée par ce processeur est de 232 octets, ou 4 Go. C'est une vision très simpliste de l'espace d'adressage d'un processeur et beaucoup de conceptions utilisent des types d'adressages bien plus complexes, comme la pagination (D'une manière générale, le mot pagination désigne l'action de paginer son résultat. En particulier il est employé dans deux domaines :), pour adresser plus de mémoire que la taille du nombre entier le leur permettrait avec un espace d'adressage à plat.

De plus grandes plages de nombres entiers nécessitent plus de structures élémentaires pour gérer les chiffres additionnels, conduisant à plus de complexité (La complexité est une notion utilisée en philosophie, épistémologie (par exemple par Anthony Wilden ou Edgar Morin), en physique, en biologie (par exemple par Henri Atlan), en sociologie, en informatique ou en sciences de...), des dimensions (Dans le sens commun, la notion de dimension renvoie à la taille ; les dimensions d'une pièce sont sa longueur, sa largeur et sa profondeur/son épaisseur, ou bien son diamètre si c'est une pièce de révolution.) plus importantes, plus de consommation d'énergie (Dans le sens commun l'énergie désigne tout ce qui permet d'effectuer un travail, fabriquer de la chaleur, de la lumière, de produire un mouvement.) et des coûts plus élevés. Il n'est donc pas rare de rencontrer des microcontrôleurs 4-bit ou 8-bit dans des applications modernes, même si des processeurs 16-bit, 32-bit, 64-bit et même 128-bit sont disponibles. Pour bénéficier des avantages à la fois des tailles d'entier courtes et longues, beaucoup de CPU sont conçus avec différentes largeurs d'entiers dans différentes parties du composant. Par exemple, le System/370 d'IBM (International Business Machines Corporation (IBM) est une société multinationale américaine présente dans les domaines du matériel informatique, du logiciel et des services informatiques.) est doté d'un CPU nativement 32-bit mais qui utilise une unité de calcul flottant (FPU) de 128-bit de précision pour atteindre une plus grande précision dans les calculs avec les nombres flottants. Beaucoup des processeurs les plus récents utilisent une combinaison (Une combinaison peut être :) comparable de taille de nombres, spécialement lorsque le processeur est dédié à un usage (L’usage est l'action de se servir de quelque chose.) généraliste pour lequel il est nécessaire de trouver le juste équilibre entre les capacités à traiter les nombres entiers et les nombres flottants.

Le signal ( Termes généraux Un signal est un message simplifié et généralement codé. Il existe sous forme d'objets ayant des formes particulières. Les signaux lumineux sont employés depuis la nuit...) d'horloge

La plupart des processeurs, et plus largement la plupart des circuits de logique (La logique (du grec logikê, dérivé de logos (λόγος), terme inventé par Xénocrate signifiant à la fois raison, langage, et raisonnement) est dans une...) séquentielle, ont un fonctionnement synchrone par nature. Cela veut dire qu'ils sont conçus et fonctionnent au rythme d'un signal de synchronisation. Ce signal est le signal d'horloge. Il prend souvent la forme d'une onde (Une onde est la propagation d'une perturbation produisant sur son passage une variation réversible des propriétés physiques locales. Elle transporte de l'énergie sans transporter de...) carrée périodique. En calculant le temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) maximum que prend le signal électrique pour se propager dans les différentes branches des circuits du processeur, le concepteur (Un concepteur est une personne qui imagine et réalise quelque chose. Ce mot vient du verbe concevoir.) peut sélectionner la période appropriée du signal d'horloge.

Cette période doit être supérieure au temps que prend le signal pour se propager dans le pire des cas. En fixant la période de l'horloge à une valeur bien au-dessus du pire des cas de temps de propagation, il est possible de concevoir entièrement le processeur et la façon dont il déplace les données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) autour (Autour est le nom que la nomenclature aviaire en langue française (mise à jour) donne à 31 espèces d'oiseaux qui, soit appartiennent au genre Accipiter, soit constituent...) des "fronts" montants ou descendants du signal d'horloge. Ceci a pour avantage de simplifier significativement le processeur tant du point (Graphie) de vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) de sa conception que de celui du nombre de ses composants. Par contre, ceci a pour inconvénient le ralentissement (Le signal de ralentissement (de type SNCF) annonce une aiguille (ou plusieurs) en position déviée qui ne peut être franchie à la vitesse normale de la ligne.) du processeur puisque sa vitesse (On distingue :) doit s'adapter à celle de son élément le plus lent, même si d'autres parties sont beaucoup plus rapides. Ces limitations sont largement compensées par différentes méthodes d'accroissement du parallélisme des processeurs (Voir ci-dessous).

Les améliorations d'architecture (Architectures est une série documentaire proposée par Frédéric Campain et Richard Copans, diffusé sur Arte depuis 1995.) ne peuvent pas, à elles seules, résoudre tous les inconvénients des processeurs globalement synchrones. Par exemple, un signal d'horloge est sujet à des retards comme tous les autres signaux électriques. Les fréquences d'horloge plus élevées que l'on trouve dans les processeurs à la complexité croissante engendrent des difficultés pour conserver le signal d'horloge en phase (Le mot phase peut avoir plusieurs significations, il employé dans plusieurs domaines et principalement en physique :) (synchronisé) à travers toute l'unité centrale de traitement. En conséquence, beaucoup des processeurs d'aujourd'hui nécessitent la fourniture de plusieurs signaux d'horloge identiques de façon à éviter que le retard d'un seul signal ne puisse être la cause d'un dysfonctionnement du processeur. La forte quantité (La quantité est un terme générique de la métrologie (compte, montant) ; un scalaire, vecteur, nombre d’objets ou d’une autre manière de dénommer la valeur d’une collection ou un...) de chaleur (Dans le langage courant, les mots chaleur et température ont souvent un sens équivalent : Quelle chaleur !) qui doit être dissipée par le processeur constitue un autre problème majeur dû à l'accroissement des fréquences d'horloge. Les changements d'état fréquents de l'horloge font commuter un grand nombre de composants, qu'ils soient ou non utilisés à cet instant (L'instant désigne le plus petit élément constitutif du temps. L'instant n'est pas intervalle de temps. Il ne peut donc être considéré comme une durée.). En général, les composants qui commutent utilisent plus d'énergie que ceux qui restent dans un état statique (Le mot statique peut désigner ou qualifier ce qui est relatif à l'absence de mouvement. Il peut être employé comme :). ainsi, plus les fréquences d'horloge augmentent et plus la dissipation de chaleur en fait autant, ce qui fait que les processeurs requièrent des solutions de refroidissement plus efficaces.

La méthode dite de clock gating permet de gérer la commutation involontaire de composants en inhibant le signal d'horloge sur les éléments choisis mais cette pratique est difficile à implémenter et reste réservée aux besoins de circuits à très faible consommation.

Une autre méthode consiste à invalider le signal global d'horloge, la consommation d'énergie et la dissipation thermique (La thermique est la science qui traite de la production d'énergie, de l'utilisation de l'énergie pour la production de chaleur ou de froid, et des transferts de chaleur suivant...) sont réduites mais la conception du circuit devient plus complexe. Certaines conceptions ont été réalisés sans signal global d'horloge, comme par exemple les familles de processeurs ARM ou MIPS, d'autres ne présentent que des parties asynchrones comme par exemple l'utilisation d'un ALU asynchrone avec un pipelining superscalaire pour atteindre des gains de performance dans les calculs arithmétiques. Il n'est pas certain qu'un processeur totalement asynchrone puisse délivrer un niveau de performance comparable ou supérieur à un processeur synchrone alors qu'il est évident qu'il sera meilleur dans les opérations mathématiques (Les mathématiques constituent un domaine de connaissances abstraites construites à l'aide de raisonnements logiques sur des concepts tels que les nombres, les figures, les...) simples, il sera donc plutôt réservé aux applications embarquées (ordinateurs de poche, consoles de jeux...).

Parallélisme

Modèle de processeur subscalaire : il faut 15 cycles pour exécuter trois instructions.

La description du mode de fonctionnement de base d'un processeur présentée au chapitre précédent présente la forme la plus simple que peut prendre un CPU. Ce type de processeur, appelé subscalaire, exécute une instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui devra commencer, se terminer, être conduit, ou exécuté.) sur un ou deux champs de données à la fois.

Ce processus est inefficace et inhérent aux processeurs subscalaires. Puisqu'une seule instruction n'est exécutée à la fois, tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) le processeur attend la fin du traitement de cette instruction avant de s'intéresser à la suivante avec pour conséquence que le processeur reste figé sur les instructions qui nécessitent plus d'un cycle d'horloge pour s'exécuter. L'ajout d'une seconde ( Seconde est le féminin de l'adjectif second, qui vient immédiatement après le premier ou qui s'ajoute à quelque chose de nature identique. ...) unité de traitement (voir ci-dessous), ne permet pas d'améliorer notablement les performances, ce n'est plus une unité de traitement qui se trouve figée mais 2, en augmentant encore le nombre de transistors inutilisés. Ce type de conception, dans laquelle les ressources d'exécution du CPU ne traitent qu'une seule instruction à la fois ne peut atteindre que des performances scalaires (une instruction par cycle d'horloge), voire subscalaires (moins d'une instruction par cycle d'horloge).

En tentant d'obtenir des performances scalaires et au-delà, on a abouti à diverses méthodes qui conduisent le CPU a un comportement moins linéaire et plus parallèle. Lorsqu'on parle de parallélisme de processeur, deux termes sont utilisés pour classifier ces techniques de conception :

  • Instruction Level Parallelism (ILP) - Parallélisme au niveau instruction ;
  • Thread Level Parallelism (TLP) - Parallélisme au niveau thread (groupe d'instructions).

L'ILP cherche à augmenter la vitesse à laquelle les instructions sont exécutées par un CPU (c’est-à-dire augmenter l'utilisation des ressources d'exécution présentes dans le circuit intégré). L'objectif du TLP est d'accroître le nombre de threads que le CPU pourra exécuter simultanément. Chaque méthode diffère de l'autre d'une part, par la façon avec laquelle elle est implémentée et d'autre part, du fait de leur efficacité relative à augmenter les performances des processeurs pour une application.

ILP : Pipelining d'instructions et architecture (L’architecture peut se définir comme l’art de bâtir des édifices.) superscalaire

Pipeline de base à 5 étages. Dans le meilleur scénario, ce pipeline peut soutenir un taux d'exécution d'une instruction par cycle.

Une des méthodes les plus simples pour accroître le parallélisme consiste à démarrer les premières étapes de recherche (La recherche scientifique désigne en premier lieu l’ensemble des actions entreprises en vue de produire et de développer les connaissances scientifiques. Par extension métonymique,...) (fetch) et décodage (decode) d'une instruction avant la fin d'exécution de l'instruction précédente. C'est la forme la plus simple de la technique de pipelining, elle est utilisée dans la plupart des processeurs modernes non spécialisés. Le pipelining permet d'exécuter plus d'une instruction à la fois en décomposant le chemin d'exécution en différentes étapes. Ce découpage peut être comparé à une chaîne (Le mot chaîne peut avoir plusieurs significations :) d'assemblage.

Le pipelining peut créer des conflits de dépendance de données, lorsque le résultat de l'opération précédente est nécessaire à l'exécution de l'opération suivante. Pour résoudre ce problème, un soin particulier doit être apporté pour vérifier ce type de situation (En géographie, la situation est un concept spatial permettant la localisation relative d'un espace par rapport à son environnement proche ou non. Il inscrit un lieu dans un cadre plus...) et retarder, le cas échéant, une partie du pipeline d'instruction. Naturellement, les compléments de circuits à apporter pour cela ajoutent à la complexité des processeurs parallèles. Un processeur parallèle peut devenir presque scalaire (Un vrai scalaire est un nombre qui est indépendant du choix de la base choisie pour exprimer les vecteurs, par opposition à un pseudoscalaire, qui est un nombre qui peut...), ralenti uniquement par les attentes du pipeline (une instruction prend moins d'un cycle d'horloge par étape).

Pipeline superscalaire simple. En recherchant et affectant deux instructions à la fois, le CPU peut exécuter un maximum de deux instructions par cycle.

Les développements suivants du pipelining ont conduit au développement d'une méthode qui diminue encore plus les temps d'attente des composants du processeur. Les conceptions dites superscalaires comportent un pipeline à instruction longue et plusieurs unités d'exécution identiques. Dans un pipeline superscalaire, plusieurs instructions sont lues et transmises à un répartisseur qui décide si les instructions seront exécutées en parallèle (simultanément) ou non. Le cas échéant, les instructions sont réparties sur les unités d'exécution disponibles. En général, plus un processeur superscalaire est capable d'exécuter d'instructions en parallèle et plus le nombre d'instructions exécutées dans un cycle sera élevé.

La plupart des difficultés rencontrées dans la conception des architectures de processeurs superscalaires résident dans la mise au point du répartisseur. Le répartisseur doit être disponible rapidement et être capable de déterminer sans erreur si les instructions peuvent être exécutées en parallèle, il doit alors les distribuer de façon à charger les unités d'exécution autant qu'il est possible. Pour cela, le pipeline d'instructions doit être rempli aussi souvent que possible, créant le besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories : les besoins primaires, les besoins secondaires et les...) d'une quantité importante de mémoire cache. Les techniques de traitement aléatoire comme la prédiction de branchement (La prédiction de branchement constitue pour un processeur à repérer les instructions machine de branchement conditionnel à l'entrée du pipeline et à prédire si le branchement est pris, afin de charger le...), l'exécution spéculative et la résolution des dépendances aux données deviennent cruciales pour maintenir un haut niveau de performance. En tentant de prédire quel branchement (ou chemin) une instruction conditionnelle prendra, le processeur peut minimiser le nombre de fois que tout le pipeline doit attendre jusqu'à la fin d'exécution de l'instruction conditionnelle. L'exécution spéculative améliore les performances modestes en exécutant des portions de code qui seront, ou ne seront pas, nécessaires à la suite d'une instruction conditionnelle. La résolution de la dépendance aux données est obtenue en réorganisant l'ordre dans lequel les instructions sont exécutées en optimisant la disponibilité (La disponibilité d'un équipement ou d'un système est une mesure de performance qu'on obtient en divisant la durée durant laquelle ledit équipement ou système est opérationnel par la durée totale durant...) des données.

Lorsque seule une partie de processeur est superscalaire, la partie qui ne l'est pas rencontre des problèmes de performance dus aux temps d'attente d'ordonnancement. Le Pentium original (P5) disposait de 2 ALU superscalaires qui pouvaient chacune accepter une instruction par cycle. Ensuite le P5 est devenu superscalaire pour les calculs sur les nombres entiers mais pas sur les nombres à virgule flottante. Les successeurs des architectures Pentium d'Intel, les P6, ont été dotés de capacités superscalaires pour les calculs sur les nombres à virgule flottante améliorant par là leurs performances en calcul flottant.

Les conceptions de pipelining simple et superscalaires augmentent le parallélisme (ILP) des CPU en permettant à un processeur unique d'exécuter des instructions à un rythme de plus d'une instruction par cycle. La plupart des processeurs d'aujourd'hui ont au moins une partie superscalaires. Au cours des dernières années, certaines évolutions dans la conception des processeurs à fort parallélisme ne se trouvent plus dans les circuits du processeur mais ont été placées dans le logiciel ou dans son interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque élément a besoin de connaître de l’autre pour pouvoir fonctionner...) avec le logiciel (ISA). La stratégie (La stratégie - du grec stratos qui signifie « armée » et ageîn qui signifie « conduire » - est :) des instructions très longues (very long instruction word) conduit à implémenter certains parallélismes directement dans le logiciel, cela réduit la participation du processeur au gain de performance mais en réduit la complexité.

TLP : Exécution simultanée de programmes

Une autre stratégie communément employée pour augmenter le parallélisme des processeurs consiste à introduire la capacité d'exécuter plusieurs programmes (threads) simultanément. De manière générale, les processeurs multi-threads ont été utilisés depuis plus longtemps que les processeurs à architecture pipeline. Bon nombre des conceptions pionnières, réalisées par la société Cray Research, datant de la fin des années 1970 et des années 1980, mettaient en œuvre principalement la méthode TLP, dégageant alors de très grandes capacités de calcul (pour l'époque). En fait, le multithreading était connu dès les années 1950 (Réf : Smotherman 2005).

Dans le cas des processeurs simples, les 2 méthodologies principales employées pour développer des TLP sont le multiprocessing au niveau des circuits (Chip-level multiprocessing - CMP) et le multithreading simultané (Simultaneous multithreading - SMT). À un plus haut niveau, il est d'usage de réaliser des ordinateurs avec plusieurs processeurs totalement indépendants dans des organisations de type symétrique (symetric multiprocessing - SMP) ou à accès mémoire non uniforme (non uniform memory access - NUMA). Alors que ces techniques diffèrent par les moyens qu'elles mettent en œuvre, elles visent toutes le même but : augmenter le nombre de threads qu'un processeur peut exécuter en parallèle.

Les méthodes de parallélisme CMP et SMP sont assez semblables, elles demandent plus d'effort de conception que l'utilisation de 2 ou 3 processeurs totalement indépendants. Dans le cas du CMP, plusieurs cœurs (core, en anglais) de processeurs sont intégrés dans le même boîtier, parfois même dans le même circuit intégré (Le circuit intégré (CI), aussi appelé puce électronique, est un composant électronique reproduisant une ou plusieurs fonctions électroniques plus ou moins complexes, intégrant souvent plusieurs types de composants électroniques de...). Les SMP, eux, utilisent plusieurs boîtiers indépendants. NUMA est comparable au CMP mais met en œuvre un modèle d'accès mémoire non uniforme (les temps d'accès sont différents suivant que la mémoire est locale ou non locale à un processeur donné). Cette caractéristique est fondamentale (En musique, le mot fondamentale peut renvoyer à plusieurs sens.) dans les ordinateurs à plusieurs processeurs car pour les modèles SMP à mémoire partagée (Dans un contexte de la programmation concurrente, la mémoire partagée désigne un large bloc de mémoire vive qui est accédé par...), les temps d'accès à la mémoire sont rapidement dégradés en cas d'accès simultané par plusieurs processeurs. À ce titre, NUMA est considéré comme un modèle plus évolutif en nombre de processeurs.

SMT diffère des autres améliorations de TLP puisqu'il vise à dupliquer aussi peu de portions de CPU que possible. La mise en œuvre d'une stratégie de type TLP ressemble à une architecture superscalaire et se trouve souvent utilisée dans les microprocesseurs superscalaires (comme les POWER5 d'IBM). Plutôt que de dupliquer un CPU complet, la conception SMT ne duplique que les parties nécessaires pour la recherche (fetch), le décodage, (decode) et la répartition des instructions (dispatch) ainsi que les registres non spécialisés. Ceci permet a un processeur SMT de maintenir ses unités d'exécution occupées plus souvent, en leur fournissant des instructions en provenance de 2 programmes différents. Comme on vient de la voir, le SMT est proche de l'architecture ILP superscalaire mais, plutôt que d'exécuter simultanément plusieurs instructions en provenance de 2 programmes différents, elle permet d'exécuter simultanément plusieurs instructions en provenance du même programme.

Page générée en 0.182 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique