Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Processeur

Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur les redirections

« CPU » redirige ici. Pour les autres significations, voirCPU (homonymie).

Processeur
Type
Caractéristiques
Matériau
Composé de
Utilisation
Usage

modifier -modifier le code -modifier WikidataDocumentation du modèle

ProcesseurIntel Core i7-12700KF.

Unprocesseur (ou unité centrale de calcul, UCC ; enanglaiscentral processing unit, CPU) ou unité centrale de traitement est un composant électronique présent dans de nombreux dispositifsélectroniques qui exécute lesinstructions machine desprogrammes informatiques, c’est le « cerveau » de l’ordinateur. Avec lamémoire, c'est notamment l'une des fonctions qui existent depuis les premiersordinateurs. Un processeur construit en un seulcircuit intégré est unmicroprocesseur.

L'invention dutransistor, en 1947, ouvrit la voie à laminiaturisation descomposants électroniques. Car, auparavant, les ordinateurs prenaient la taille d'une pièce entière du fait de l'utilisation detubes à vide volumineux[1],[2], gros consommateurs d'énergie et générant beaucoup de chaleur.

Les processeurs des débuts étaient conçus spécifiquement pour un ordinateur d'un type donné. Cette méthode coûteuse de conception des processeurs pour une application spécifique a conduit au développement de la production de masse de processeurs qui conviennent pour un ou plusieurs usages. Cette tendance à la standardisation qui débuta dans le domaine desordinateurs centraux (mainframes à transistors discrets etmini-ordinateurs) a connu une accélération rapide avec l'avènement des circuits intégrés. Lescircuits intégrés ont permis la miniaturisation des processeurs. La miniaturisation et la standardisation des processeurs ont conduit à leur diffusion dans la vie moderne bien au-delà des usages des machines programmables dédiées.

Histoire

[modifier |modifier le code]
Article détaillé :Histoire des processeurs.

Les premiers processeurs nécessitaient un espace important, puisqu'ils étaient construits à base detubes électroniques ou derelais électromécaniques.

Leur création a pour origine les travaux deJohn von Neumann, qui répondaient aux difficultés liées à la reprogrammation de calculateurs comme l'ENIAC où il était nécessaire de recâbler le système pour faire fonctionner un nouveau programme[3].

Dans cette architecture, uneunité de contrôle se charge de coordonner un processeur (ayant accès auxentrées/sorties) et lamémoire.

Tout cela a été décrit par un document intitulé « première ébauche d'un rapport sur l'EDVAC »[4].

Microprocesseurs

[modifier |modifier le code]
Articles détaillés :Microprocesseur etGravure (microfabrication).
Le microprocesseur6502 en technologie MOS dans un boîtierdual in-line une conception très répandue dans les années 1970/1980.
Intel 80486DX2microprocesseur en boîtier céramiquePGA.

L'introduction dumicroprocesseur dans les années 1970 a marqué de manière significative la conception et l'implémentation desunités centrales de traitement. Depuis l'introduction du premier microprocesseur (Intel 4004) en 1971 et du premier microprocesseur employé couramment (Intel 8080) en 1974[5], cette classe de processeurs a presque totalement dépassé toutes les autres méthodes d'implémentation d'unité centrale de traitement. Les fabricants d'ordinateurs centraux (mainframe etminiordinateurs) de l'époque ont lancé leurs propres programmes de développement decircuits intégrés pour mettre à niveau les architectures anciennes de leurs ordinateurs et ont par la suite produit des microprocesseurs à jeu d'instructions compatible en assurant lacompatibilité ascendante avec leurs anciens modèles. Les générations précédentes des unités centrales de traitement comportaient un assemblage decomposants discrets et de nombreux circuits faiblement intégrés sur une ou plusieurs cartes électroniques. Les microprocesseurs sont construits avec un très petit nombre de circuits très fortement intégrés (ULSI)[6], habituellement un seul. Les microprocesseurs sont implémentés sur une seulepuce électronique, donc de dimensions réduites, ce qui veut dire des temps de commutation plus courts liés à des facteurs physiques comme la diminution de lacapacité parasite des portes. Ceci a permis aux microprocesseurs synchrones d'augmenter leur fréquence de base de quelques mégahertz[a] à plusieurs gigahertz[b]. De plus, à mesure que la capacité à fabriquer des transistors extrêmement petits sur un circuit intégré a augmenté, la complexité et le nombre de transistors dans un seul processeur ont considérablement crû. Cette tendance largement observée est décrite par laloi de Moore[7], qui s'est avérée être jusqu'ici un facteur prédictif assez précis de la croissance de la complexité des processeurs (et de tout autre circuit intégré)[8].

Lesprocesseurs multi cœurs (multicores) récents comportent maintenant plusieurs cœurs dans un seul circuit intégré. Leur efficacité dépend grandement de la topologie d'interconnexion entre les cœurs.De nouvelles approches, comme la superposition de la mémoire et du cœur de processeur (memory stacking), sont à l'étude, et devraient conduire à un nouvel accroissement des performances[réf. nécessaire]. Celles des processeurs ont atteint 2pétaFLOPS en 2010 pour les serveurs[9].Selon les projections, les PC devraient eux aussi atteindre lepétaFLOPS à l'horizon 2030.[réf. nécessaire]

En, lesupercalculateur militaire IBMRoadrunner est le premier à franchir cette barre symbolique dupétaFLOPS[9]. Puis, ennovembre 2008, c'est au tour du supercalculateurJaguar deCray[9]. En, ce sont les deux seuls supercalculateurs à avoir dépassé le pétaFLOPS.

En, pour la sixième fois consécutive, le supercalculateur chinoisTianhe-2 "milky way-2", développé par l'université nationale chinoise pour les technologies de défense, atteint la première place du classement semestriel mondial TOP500[10] des supercalculateurs avec 33,86 pétaFLOPS.

En et en l’absence de chiffres officiels pour les Sunway Oceanlite et Tianhe-3 chinois, leFrontier a été déclaré le premier supercalculateur à franchir la barre de l’ExaFLOPS[11]. En matière de record de performance, la tendance est à un léger au ralentissement de 2014 à 2024[11].

Tandis que la complexité, la taille, la construction, et la forme générale des processeurs ont fortement évolué au cours des soixante dernières années, la conception et la fonction de base n'ont pas beaucoup changé. Presque tous les processeurs communs d'aujourd'hui peuvent être décrits très précisément commemachines à programme enregistré de von Neumann. Alors que la loi de Moore, mentionnée ci-dessus, continue de se vérifier, des questions ont surgi au sujet des limites de la technologie des circuits intégrés à transistors. La miniaturisation des portes électroniques est si importante que les effets de phénomènes comme l'électromigration (dégradation progressive des interconnexions métalliques entraînant une diminution de la fiabilité des circuits intégrés) et les courants de fuite (leur importance augmente avec la réduction des dimensions des circuits intégrés ; ils sont à l'origine d'une consommation d'énergie électrique pénalisante), auparavant négligeables, deviennent de plus en plus significatifs. Ces nouveaux problèmes sont parmi les nombreux facteurs conduisant les chercheurs à étudier, d'une part, de nouvelles technologies de traitement telles que l'ordinateur quantique ou l'usage du calcul parallèle et, d'autre part, d'autres méthodes d'utilisation du modèle classique de von Neumann.

Fonctionnement

[modifier |modifier le code]

Définition d'un processeur

[modifier |modifier le code]

Un processeur est un dispositif qui exécute une série de fonctions nécessaires à la réalisation d'un processus donné[12]. Cet élément repose sur la programmation et doit, au minimum, assurer les fonctions suivantes[13] :

Composition d'un processeur

[modifier |modifier le code]
Schéma de principe d'un processeur 32 bits.

Un processeur n'est pas qu'uneunité de calcul. Cette dernière est incluse dans le processeur mais il fait aussi appel à uneunité de contrôle, une unité d'entrée-sortie, à une horloge et à desregistres.

Le séquenceur, ouunité de contrôle, se charge de gérer le processeur. Il peut décoder les instructions, choisir les registres à utiliser, gérer les interruptions ou initialiser les registres au démarrage. Il fait appel à l'unité d'entrée-sortie pour communiquer avec la mémoire ou les périphériques.

L'horloge doit fournir un signal régulier pour synchroniser tout le fonctionnement du processeur. Elle est présente dans lesprocesseurs synchrones mais absente desprocesseurs asynchrones et desprocesseurs auto-synchrones.

Lesregistres sont des petites mémoires internes très rapides, pouvant être accédées facilement. Un plus grand nombre de registres permettra au processeur d'être plus indépendant de la mémoire. La taille des registres dépend de l'architecture, mais est généralement de quelques octets et correspond au nombre de bit de l'architecture (un processeur 8 bits aura des registres d'un octet). Il existe plusieurs registres, dontl'accumulateur etlecompteur ordinal qui constituent la structure de base du processeur. Le premier sert à stocker les données traitées par l'UAL (l'unité de calcul arithmétique et logique), et le second donne l'adresse mémoire de l'instruction en cours d'exécution ou de la suivante (en fonction de l'architecture). D'autres registres ont été ajoutés au fil du temps :

  • lepointeur de pile : il sert à stocker l'adresse du sommet des piles, qui sont en fait des structures de données généralement utilisées pour gérer des appels de sous-programmes ;
  • leregistre d'instruction : il permet quant à lui de stocker l'instruction en cours de traitement ;
  • leregistre d'état : il est composé de plusieurs bits, appelésdrapeaux (flags), servant à stocker des informations concernant le résultat de la dernière instruction exécutée ;
  • lesregistres généraux, qui servent à stocker les données allant être utilisées (ce qui permet d'économiser des allers-retours avec la mémoire).

Les processeurs actuels intègrent également des éléments plus complexes :

  • plusieurs unités arithmétiques et logiques, qui permettent de traiter plusieurs instructions en même temps. L'architecturesuperscalaire, en particulier, permet de disposer des UAL en parallèle, chaque UAL pouvant exécuter une instruction indépendamment de l'autre ;
  • unité de calcul en virgule flottante (en anglaisfloating-point unit, FPU), qui permet d'accélérer les calculs sur lesnombres réels codés en virgule flottante ;
  • unité de prédiction de branchement, qui permet au processeur d'anticiper unbranchement dans le déroulement d'un programme afin d'éviter d'attendre la valeur définitive de l'adresse du saut. Il permet de mieux remplir le pipeline ;
  • pipeline, qui permet de découper temporellement les traitements à effectuer ;
  • mémoire cache, qui permet d'accélérer les traitements en diminuant les accès à lamémoire vive. Le cache d'instructions reçoit les prochaines instructions à exécuter, le cache de données manipule les données. Parfois un cache unifié est utilisé pour les instructions et les données. Plusieurs niveaux (levels) de caches peuvent coexister, on les désigne souvent sous les noms de L1, L2, L3 ou L4. Dans les processeurs évolués, des unités spéciales du processeur sont dévolues à la recherche, par des moyens statistiques et/ou prédictifs, des prochains accès à la mémoire vive.

Un processeur possède aussi trois types debus :

  • bus de données, qui définit la taille des données pour les entrées–sorties, dont les accès à la mémoire (indépendamment de la taille des registres internes) ;
  • bus d'adresse, qui permet, lors d'une lecture ou d'une écriture, d'envoyer l'adresse où elle s'effectue, et donc définit le nombre de casesmémoire accessibles ;
  • bus de contrôle, qui permet la gestion du matériel, via lesinterruptions.

Classification des processeurs

[modifier |modifier le code]
Articles détaillés :Architecture de processeur etMicroarchitecture.

Un processeur est défini par :

  • sonarchitecture, c'est-à-dire son comportement vu par le programmeur, liée à :
    • sonjeu d'instructions (en anglaisinstruction set architecture, ISA),
    • la largeur de sesregistres internes de manipulation dedonnées (8, 16, 32, 64, 128)bits et leur utilisation,
    • les spécifications des entrées–sorties, de l'accès à la mémoire, etc. ;
  • ses caractéristiques, variables même entre processeurs compatibles :
    • samicroarchitecture,
    • la cadence de son horloge exprimée en mégahertz (MHz) ou gigahertz (GHz),
    • sa finesse de gravure exprimée en nanomètres (nm),
    • son nombre de cœurs de calcul.

On classe les architectures en plusieurs grandes familles :

  • CISC (complex instruction set computer), choix d'instructions aussi proches que possible d'unlangage de haut niveau ;
  • RISC (reduced instruction set computer), choix d'instructions plus simples et d'une structure permettant une exécution très rapide ;
  • VLIW (very long instruction word).

Il existe également des processeurs spécialisés :

Les opérations du processeur

[modifier |modifier le code]

Le rôle fondamental de la plupart des processeurs, indépendamment de la forme physique qu'ils prennent, est d'exécuter une série d'instructions stockées appeléeprogramme.

Les instructions (parfois décomposées en micro-instructions) et les données transmises au processeur sont exprimées en motsbinaires (code machine). Elles sont généralement stockées dans lamémoire. Le séquenceur ordonne la lecture du contenu de la mémoire et la constitution des mots présentés à l'ALU qui les interprète.

Le langage le plus proche du code machine tout en restant lisible par des humains est le langage d'assemblage, aussi appelé langageassembleur (forme francisée du mot anglais « assembler »). Toutefois, l'informatique a développé toute une série de langages, dits de « bas niveau » (comme lePascal,C,C++,Fortran,Ada, etc.), « haut niveau » (comme lepython,java,C#,Ruby, etc.), destinés à simplifier l'écriture des programmes.

Les opérations décrites ici sont conformes à l'architecture de von Neumann. Le programme est représenté par une série d'instructions qui réalisent des opérations en liaison avec la mémoire vive de l'ordinateur. Il y a quatre étapes que presque toutes les architectures de von Neumann utilisent :

  1. Fetch, recherche de l'instruction ;
  2. Decode, interprétation de l'instruction (opération et opérandes) ;
  3. Execute, exécution de l'instruction ;
  4. Writeback, écriture du résultat.
Le diagramme montre comment une instruction deMIPS32 est décodée.

La première étape,fetch (recherche de l'instruction), recherche une instruction dans la mémoire vive de l'ordinateur. L'emplacement dans la mémoire est déterminé par lecompteur de programme (PC), qui stocke l'adresse de la prochaine instruction dans la mémoire de programme. Après qu'une instruction ait été recherchée, le PC est incrémenté par la longueur du mot d'instruction. Dans le cas de mot de longueur constante simple, c'est toujours le même nombre. Par exemple, un mot de 32 bits de longueur constante qui emploie des mots de 8 bits de mémoire incrémenterait toujours le PC par 4 (excepté dans le cas desbranchements). Lesjeux d'instructions qui emploient des instructions de longueurs variables comme l'x86, incrémentent le PC par le nombre de mots de mémoire correspondant à la dernière longueur d'instruction. En outre, dans des processeurs plus complexes, l'incrémentation du PC ne se produit pas nécessairement à la fin de l'exécution d'une instruction. C'est particulièrement le cas dans des architectures fortement parallélisées et superscalaires. Souvent, la recherche de l'instruction doit être opérée dans des mémoires lentes, ralentissant le processeur qui attend l'instruction. Cette question est en grande partie résolue dans les processeurs modernes par l'utilisation decaches et depipelines.

La seconde étape,decode (interprétation de l'instruction), découpe l'instruction en plusieurs parties telles qu'elles puissent être utilisées par d'autres parties du processeur. La façon dont la valeur de l'instruction est interprétée est définie par lejeu d'instructions du processeur[c]. Souvent, une partie d'une instruction, appeléeopcode (code opération), indique l'opération à effectuer, par exemple une addition. Les parties restantes de l'instruction comportent habituellement lesopérandes de l'opération. Ces opérandes peuvent prendre une valeur constante, appelée valeur immédiate, ou bien contenir l'emplacement où retrouver (dans un registre ou une adresse mémoire) la valeur de l'opérande, suivant lemode d'adressage utilisé. Dans les conceptions anciennes, les parties du processeur responsables de l'interprétation étaient fixes et non modifiables car elles étaient codées dans les circuits. Dans les processeurs plus récents, unmicroprogramme est souvent utilisé pour l'interprétation. Ce microprogramme est parfois modifiable pour changer la façon dont le processeur interprète les instructions, même après sa fabrication.

Diagramme fonctionnel d'un processeur simple.

La troisième étape,execute (exécution de l'instruction), met en relation différentes parties du processeur pour réaliser l'opération souhaitée. Par exemple, pour une addition, l'unité arithmétique et logique (ALU) sera connectée à des entrées et une sortie. Les entrées contiennent les nombres à additionner et la sortie contient le résultat. L'ALU est dotée de circuits pour réaliser des opérations d'arithmétique et delogique simples sur les entrées (addition, opération sur lesbits). Si le résultat d'une addition est trop grand pour être codé par le processeur, un signal de débordement est positionné dans unregistre d'état.

La dernière étape,writeback (écriture du résultat), écrit les résultats de l'étape d'exécution en mémoire. Très souvent, les résultats sont écrits dans un registre interne au processeur pour bénéficier de temps d'accès très courts pour les instructions suivantes. Parfois, les résultats sont écrits plus lentement dans la mémoire vive pour bénéficier de codages de nombres plus grands.

Certains types d'instructions manipulent le compteur de programme plutôt que de produire directement des données de résultat. Ces instructions sont appelées desbranchements (branch) et permettent de réaliser des boucles (loops), des programmes à exécution conditionnelle ou des fonctions (sous-programmes) dans des programmes[d]. Beaucoup d'instructions servent aussi à changer l'état dedrapeaux (flags) dans unregistre d'état. Ces états peuvent être utilisés pour conditionner le comportement d'un programme, puisqu'ils indiquent souvent la fin d'exécution de différentes opérations. Par exemple, une instruction de comparaison entre deux nombres va positionner un drapeau dans un registre d'état suivant le résultat de la comparaison. Ce drapeau peut alors être réutilisé par une instruction de saut pour poursuivre le déroulement du programme.

Après l'exécution de l'instruction et l'écriture des résultats, tout le processus se répète, le prochain cycle d'instructions recherche l'instruction suivante puisque le compteur de programme avait été incrémenté. Si l'instruction précédente était un saut, c'est l'adresse de destination du saut qui est enregistrée dans le compteur de programme. Dans des processeurs plus complexes, plusieurs instructions peuvent être recherchées, décodées et exécutées simultanément, on parle alors d'architecturepipeline, aujourd'hui communément utilisée dans les équipements électroniques.

Température d'un processeur

[modifier |modifier le code]

La température d'un processeur varie en fonction des instructions machines. Les valeurs communes des températures des cœurs d'un processeur en bon fonctionnement en moyenne :

  • <35°C : CPU inactif ;
  • Entre 35°C et 50°C : CPU actif sur des instructions communes (bureautique,streaming,navigation web) ;
  • Entre 50°C et 80°C : CPU actif sur des instructions lourdes (la plupart desjeux vidéos,montage vidéo);
  • Entre 80°C et 100°C: CPU actif en fonctionnement maximal (jeu intensif en réseau);
  • Plus de 100°C : CPU en surchauffe critique.

Vitesse de traitement

[modifier |modifier le code]

La vitesse de traitement d'un processeur est encore parfois exprimée enIPS (instructions par seconde) ou enFLOPS (opérations à virgule flottante par seconde) pour l'unité de calcul en virgule flottante. Pourtant, aujourd'hui, les processeurs sont basés sur différentes architectures et techniques de parallélisation des traitements qui ne permettent plus de déterminer simplement leurs performances. Des programmes spécifiques d'évaluation des performances (Benchmarks) ont été mis au point pour obtenir des comparatifs des temps d'exécution de programmes réels.

Conception et implémentation

[modifier |modifier le code]

Le codage des nombres

[modifier |modifier le code]

La manière dont un processeur représente lesnombres 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ériquedécimal (base 10). Certains autres ont fait le choix de systèmes numériques plus exotiques comme lessystèmes trinaires (base 3). Les processeurs modernes représentent les nombres dans lesystème binaire (base 2) dans lequel chacun deschiffres est représenté par unegrandeur physique qui ne peut prendre que deux valeurs comme unetension électrique « haute/basse » ou en informatique « vrai/faux ».

Le concept physique de tension électrique estanalogique 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 comme les niveaux de seuil des transistors.

En plus du système de représentation des nombres, il faut s'intéresser à la taille et laprécision des nombres qu'un processeur peut manipuler nativement. 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 de bits (chiffres) qu'un processeur utilise pour représenter un nombre est souvent appelé « taille du mot » (en anglais« word size », « bit width », « data path width ») ou « précision entière » lorsqu'il s'agit denombres entiers (à l'opposé desnombres flottants). Ce nombre diffère suivant les architectures, et souvent, suivant les différents modules d'un même processeur. Par exemple, un processeur 8-bit gère nativement des nombres qui peuvent être représentés par huit chiffres binaires (chaque chiffre pouvant prendre deux valeurs), soit 28 ou 256 valeurs discrètes.

La taille du mot machine affecte le nombre d'emplacements mémoire que le processeur peut adresser (localiser). Par exemple, si un processeur binaire utilise 32 bits pour représenter une adresse 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, soit 4Go. 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 lapagination, 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é, des dimensions plus importantes, plus de consommation d'énergie et des coûts plus élevés. Il n'est donc pas rare de rencontrer des processeurs 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 processeurs sont conçus avec différentes largeurs d'entiers dans différentes parties du composant. Par exemple, le System/370 d'IBM est doté d'un processeur nativement 32-bit mais qui utilise uneFPU 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 comparable de taille de nombres, spécialement lorsque le processeur est destiné à un usage 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 d'horloge

[modifier |modifier le code]
Article connexe :Signal d'horloge.

La plupart des processeurs, et plus largement la plupart des circuits delogique séquentielle, ont un fonctionnement synchrone par nature[e]. Cela veut dire qu'ils sont conçus et fonctionnent au rythme d'unsignal de synchronisation. Ce signal est le « signal d'horloge ». Il prend souvent la forme d'uneonde carréepériodique. En calculant le temps maximum que prend le signal électrique pour sepropager dans les différentes branches des circuits du processeur, le concepteur peut sélectionner lapé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 depropagation, il est possible de concevoir entièrement le processeur et la façon dont il déplace les données autour des « fronts » montants ou descendants du signal d'horloge. Ceci a pour avantage de simplifier significativement le processeur tant du point de vue de sa conception que de celui du nombre de ses composants. Par contre, ceci a pour inconvénient le ralentissement du processeur puisque sa vitesse 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 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. Lesfré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 enphase (synchronisé) à travers tout le processeur. En conséquence, beaucoup de processeurs actuels nécessitent 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é de 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. En général, les composants qui commutent utilisent plus d'énergie que ceux qui restent dans un état statique. Ainsi, plus les fréquences d'horloge augmentent et plus la dissipation thermique en fait autant, ce qui fait que les processeurs requièrent des solutions de refroidissement plus efficaces.

La méthode declock 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 à abandonner le signal global d'horloge ; la consommation d'énergie et la dissipation thermique sont réduites mais la conception du circuit devient plus complexe. On parle alors deprocesseurs asynchrones. Certaines conceptions ont été réalisés sans signal global d'horloge, utilisant par exemple les jeux d'instructionsARM ouMIPS, d'autres ne présentent que des parties asynchrones comme l'utilisation d'une UAL asynchrone avec unpipeliningsuperscalaire pour atteindre des gains de performance dans les calculs arithmétiques. De tels processeurs sont actuellement plutôt réservés aux applications embarquées (ordinateurs de poche,consoles de jeux, etc.).

Parallélisme

[modifier |modifier le code]
Article détaillé :Parallélisme (informatique).
Modèle de processeur subscalaire : il faut 15 cycles d'horloge 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 processeur. Ce type de processeur, appelésubscalaire, exécute uneinstruction sur un ou deux flux de données à la fois.

Ce processus est inefficace et inhérent aux processeurs subscalaires. Puisqu'une seule instruction est exécutée à la fois, tout 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 unité d'exécution (voir ci-dessous) ne permet pas d'améliorer notablement les performances, ce n'est plus une unité d'exécution qui se trouve figée mais deux, en augmentant encore le nombre de transistors inutilisés. Ce type de conception, dans laquelle les ressources d'exécution du processeur ne traitent qu'une seule instruction à la fois ne peut atteindre que des performancesscalaires (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 processeur a un comportement moins linéaire et plus parallèle. Lorsqu'on parle deparallélisme de processeur, deux techniques de conception sont utilisées :

  • parallélisme au niveau instruction (en anglais :instruction-level parallelism, ILP) ;
  • parallélisme au niveauthread (en anglais :thread-level parallelism, TLP).

L'ILP vise à augmenter la vitesse à laquelle les instructions sont exécutées par un processeur (c’est-à-dire augmenter l'utilisation des ressources d'exécution présentes dans le circuit intégré).Le TLP vise à augmenter le nombre dethreads que le processeur 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 et architecture superscalaire

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

Une des méthodes les plus simples pour accroître le parallélisme consiste à démarrer les premières étapes de recherche (fetch) et d'interprétation (decode) d'une instruction avant la fin de l'exécution de l'instruction précédente. C'est la forme la plus simple de la technique depipelining. 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 cycle d'instruction en différentes étapes. Ce découpage peut être comparé à une chaîne 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 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, ralenti uniquement par les attentes du pipeline (une instruction prend moins d'un cycle d'horloge par étape).

Pipeline superscalaire. En recherchant et affectant deux instructions à la fois, le processeur peut exécuter un maximum de deux instructions par cycle d'horloge.

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 architectures ditessuperscalaires comportent plusieurs unités d'exécution identiques[19]. Dans un processeur 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 lesunité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épartiteur. Le répartiteur 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 d'une quantité importante demémoire cache. Les techniques de traitement aléatoire comme laprédiction de branchement, 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) uneinstruction conditionnelle prendra, le processeur peut minimiser le temps 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é 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. LePentium original (P5) d'Intel disposait de deux 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 architectures à pipeline et superscalaires augmentent le parallélisme (ILP) des processeurs 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 superscalaire. 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 avec le logiciel, lejeu d'instructions (instruction set architecture, ISA). La stratégie desinstructions très longues (very long instruction word, VLIW) implémente certains parallélismes directement dans le logiciel, ce qui réduit la participation du processeur au gain de performance mais augmente aussi sa simplicité.

TLP : multithreading simultané et architecture multicœur

[modifier |modifier le code]

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

Dans le cas des processeurs simples, les deux méthodologies principales employées pour développer le TLP sont lemultiprocessing au niveau circuit (chip-level multiprocessing, CMP) et lemultithreading 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 typesymétrique (symmetric multiprocessing, SMP), donc en particulierà accès mémoire uniforme (uniform memory access, UMA), ouasymétrique (asymmetric multiprocessing)à accès mémoire non uniforme (non uniform memory access, NUMA). Il s'agit alors demultiprocesseurs ou deprocesseurs multi-cœur. 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 et demandent plus d'effort de conception que l'utilisation de deux ou trois processeurs totalement indépendants. Dans le cas du CMP,plusieurs cœurs (cores) de processeurs sont intégrés dans le même boîtier, parfois même dans le même circuit intégré. Les SMP, eux, utilisent plusieurs boîtiers indépendants. Le 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 dans les ordinateurs à plusieurs processeurs car pour les modèles SMP, la mémoire est partagée et les temps d'accès à la mémoire sont donc rapidement dégradés en cas d'accès simultané par plusieurs processeurs. À ce titre, le 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 processeur que possible. Sa mise en œuvre ressemble à une architecture superscalaire et se trouve souvent utilisée dans les microprocesseurs superscalaires (comme lesPOWER5 d'IBM). Plutôt que de dupliquer un processeur complet, la conception SMT ne duplique que les parties nécessaires pour la recherche (fetch), l'interprétation (decode) et la répartition des instructions (dispatch) ainsi que les registres non spécialisés. Ceci permet à un processeur SMT de maintenir ses unités d'exécution occupées plus souvent, en leur fournissant des instructions en provenance de deux threads différents. Comme on vient de la voir, le SMT est proche de l'architecture ILP superscalaire, mais cette dernière exécute des instructions en provenance du même thread.

Notes et références

[modifier |modifier le code]

Notes

[modifier |modifier le code]
  1. 2,5 MHz pour leZilog Z80 en 1976
    4,77 MHz pour l'Intel 8088 sur le premier IBM-PC en 1981
  2. GHz pour l'Intel Core i7 6700K en 2015
  3. Parce que l'architecture du jeu d'instructions d'une CPU est fondamentale pour son interface et utilisation, cela est souvent utilisé comme une classification pour le « type » de CPU. Par exemple, une CPU PowerPC utilise une variation du PowerPC ISA. Un système peut exécuter un ISA différent en exécutant un émulateur.
  4. Parmi les premiers ordinateurs tel que le Harvard Mark I aucun type de sauts n'était supporté, limitant par conséquent la complexité des programmes pouvant être exécutés. C'est essentiellement pour cette raison que ces ordinateurs sont souvent considérés comme ne contenant pas une CPU propre, malgré leurs similitudes aux ordinateurs à programme enregistré.
  5. Dans les faits, tous les CPU synchrones utilisent un mélange delogique séquentielle et delogique combinatoire (voirlogique booléenne).

Références

[modifier |modifier le code]
  1. (en) RobertGarner et Frederick (Rick)Dill, « The Legendary IBM 1401 Data Processing System »,IEEE Solid-State Circuits Magazine,vol. 2,no 1,‎,p. 28–39(DOI 10.1109/MSSC.2009.935295,S2CID 31608817,lire en ligne)
  2. (en) « IBM100 - The IBM 700 Series », surwww-03.ibm.com,(consulté le)
  3. « Le modèle d’architecture de von Neumann », surinterstices.info(consulté le)
  4. (en) JohnVon Neuman,First Draft of a Report on the EDVAC, Moore School of Electrical Engineering University of Pennsylvania,, 47lire en ligne=https://www.researchgate.net/publication/312599265_Introduction_to_The_First_Draft_of_a_Report_on_the_EDVAC_Update_January_2017[PDF]
  5. Captain Tech, « L’histoire fascinante des microprocesseurs : du premier circuit intégré aux puces modernes »,(consulté en)
  6. (en) GeeksforGeeks, « What is Ultra Large-Scale Integration? »,(consulté le)
  7. (en) Gordon E. Moor, « Cramming more components onto integrated circuits »,Electronics,vol. 38,no 8,‎(lire en ligne)
  8. « Moore's Law », surwww.umsl.edu(consulté le)
  9. ab etcGordon E. Moor, « Les supercalculateurs, un impératif scientifique et industriel »,La note de veille,vol. 188,no 8,‎(lire en ligne)
  10. Top 500,novembre 2015, top500.org de novembre 2015, consulté le 29 décembre 2019
  11. a etbYannick Guerrini, « 29 ans de supercalculateurs, une puissance multipliée par 18 millions ! »,(consulté le)
  12. Demirdjian 1994,p. 146.
  13. adagio777, « Quels sont les composants d'un PC ? », surBuildMyPc,(consulté le)
  14. (en) Stephen A.Dyer et Brian K.Harms,Advances in Computers,vol. 37,Academic Press,, 59 et 118 p.(ISBN 978-0120121373,ISSN 0065-2458,OCLC 858439915,LCCN 59015761,DOI 10.1016/S0065-2458(08)60403-9), « Digital Signal Processing »
  15. « Cloud Tensor Processing Units (TPUs) », surGoogle Cloud(consulté le)
  16. (en) WayneWilliams, « 'Feels like magic!': Groq's ultrafast LPU could well be the first LLM-native processor — and its latest demo may well convince Nvidia and AMD to get out their checkbooks », surTechRadar Pro, TechRadar,(consulté le)
  17. (en) ChrisMellor, « Grokking Groq's Groqness », surBlocks & Files,(consulté le)
  18. (en) DennisAbts, JonathanRoss, JonathanSparling, MarkWong-VanHaren, MaxBaker, TomHawkins, AndrewBell, JohnThompson, TemesghenKahsai, GarrinKimmell, JenniferHwang, RebekahLeslie-Hurd, MichaelBye, E.R.Creswick, MatthewBoyd, MahithaVenigalla, EvanLaforge, JonPurdy, PurushothamKamath, DineshMaheshwari, MichaelBeidler, GeertRosseel, OmarAhmad, GlebGagarin, RichardCzekalski, AshayRane, SahilParmar, JeffWerner, JimSproch, AdrianMacias et BrianKurtz,2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA),, 145–158 p.(ISBN 978-1-7281-4661-4,DOI 10.1109/ISCA45697.2020.00023), « Think Fast: A Tensor Streaming Processor (TSP) for Accelerating Deep Learning Workloads »
  19. (en) Jack Huynh, « The AMD Athlon XP Processor with 512KB L2 Cache », University of Illinois - Urbana-Champaign,(consulté en),p. 6-11[PDF]

Annexes

[modifier |modifier le code]

Bibliographie

[modifier |modifier le code]

Ouvrages

[modifier |modifier le code]

Sur les autres projets Wikimedia :

Articles connexes

[modifier |modifier le code]

Liens externes

[modifier |modifier le code]

v ·m
Technologies deprocesseur
Modèles
Architecture
Général
Mots
Instruction
Jeu
Famille
Exécution
Performance
Types
Général
Par usage
On chip
Accélération
matérielle
Microarchitecture
Parallélisme
Général
Processus
Taxonomie de Flynn
Circuiterie et unité
Général
Exécution
Porte logique
Registre
Contrôle
Chemin de données
Cadencement
Gestion de l'alimentation
Fabrication
Articles liés
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Processeur&oldid=233434610 ».
Catégorie :
Catégories cachées :

[8]ページ先頭

©2009-2026 Movatter.jp