Processeur

Noter ce cours :

Liens sponsorisés :

A quoi sert un processeur ?

Un processeur (aussi appelé microprocesseur ou CPU pour Central Processing Unit) est le coeur de l'ordinateur chargé de traiter et d'exécuter les instructions. On peut simplifier en disant qu'il est chargé d'exécuter les programmes de l'ordinateur.

Ce composant a été inventé en 1971 par Intel (avec le modèle 4004).

Le processeur est rythmé par une horloge (quartz) cadencée plus ou moins rapidement (on parle de fréquence d'horloge). A chaque impulsion d'horloge, le processeur lit l'instruction stockée généralement dans un registre d'instruction - une petite mémoire très rapide située dans le processeur en lui-même - et l'exécute. Dans une même gamme (et donc à architecture comparable) un processeur cadencé plus rapidement est plus efficace car il peut traiter les instructions plus rapidement.

Un processeur Intel Core I7
Un processeur Intel Core I7
Avec les dernières architectures, les fréquences n'augmentent plus aussi rapidement qu'avant. Les fabriquants axent plutôt leurs travaux sur l'amélioration du rendement et de la performance par watt, afin d'avoir des processeurs toujours plus performants, moins gourmands en énergie et du coup nécessitant moins de moyens pour dissiper leur chaleur.

Instructions

Pour comprendre le principe de fonctionnement d'un processeur, il est important de savoir que le processeur ne sait communiquer avec le reste de l'ordinateur que via le langage binaire. Il ne comprend donc pas directement le code informatique que vous pourriez utiliser en suivant les cours de la section programmation de VIC.

Le code source doit à ce titre subir quelques transformations. Celles-ci sont effectuées par le compilateur, un programme convertissant le langage source en langage machine, seul code compréhensible par le processeur.

Format d'une instruction

Pour qu'un processeur puisse exécuter une instruction, encore faut-il qu'il sache de quelle instruction il s'agit et quelles sont les données sur lesquelles agir. C'est pourquoi une instruction sera stockée selon une méthode bien précise. On divise ainsi une instructions en deux codes :

Principaux types d'instructions

Il existe différents types d'instructions. Les plus courants sont les suivants :

Etapes d'exécution d'une instruction

Lorsqu'un processeur a besoin d'exécuter des instructions, il le fait toujours dans l'ordre suivant :

Taille des instructions

Les processeurs utilisent à ce jour majoritairement des instructions 64 bits (X86-64), la taille des instructions manipulées est passée de 32 à 64 bit, avec plusieurs avantages à la clé : un adressage maximal de la mémoire qui n'est plus limité à 4 Go comme c'était le cas en 32 bit, et une rapidité généralement accrue des applications en tirant partie (car plus de registres disponibles signifie qu'on aura généralement plus de place pour stocker des données au lieu d'utiliser la RAM avec un code optimisé).

Gains au niveau des registres apportés par le 64 bit
Gains apportés par les registres 128 bits du SSE

Registres

Un registre est une petite mémoire de taille raisonnable (variant généralement de 32 à 128 bit). Les registres sont utilisés tout le temps, ils sont donc très importants. Nous avons vu plus haut qu'une instruction pouvait faire appel aux registres. L'avantage est que ce type d'opérations est beaucoup plus rapide que de faire appel à la mémoire vive, les registres étant internes au processeur, contrairement à la mémoire vive. Il existe différents types de registres, voici les principaux :

Mémoire cache

Chaque processeur intègre une quantité variable de mémoire cache. Cette mémoire très rapide est indispensable pour bénéficier de bonnes performances dans les applications. Elle permet de stocker les données les plus fréquemment demandées par le processeur.
On distingue trois niveaux de cache :

Lorsqu'un processeur a besoin de lire des données, il va d'abord regarder si celles-ci se trouvent dans la mémoire cache. Si elles s'y trouvent, on parle de succès du cache (cache hit), dans le cas contraire d'échec du cache (cache miss) les données étant placées ensuite en cache à partir de la mémoire vive.

Il y a perte de temps en cas de cache miss car le processeur a regardé dans le cache pour rien. Le taux de réussite s'appelle le hit rate, le taux d'échec miss rate.

Afin d'augmenter les performances et donc de diminuer le miss rate, il existe différentes techniques ayant chacune leurs avantages et inconvénients. Outre différents algorithmes pouvant être implantés dans le programme, on parlera ici d'une technique matérielle, celle consistant à adopter une mémoire cache de type inclusive ou exclusive. La différence principale entre ces deux types de gestion du cache se trouve principalement dans leur manière de stocker les données. Lorsque le cache L1 est plein, il faut libérer de la place pour pouvoir placer dans le L1 la donnée que l'on vient de lire en mémoire vive.

Déplacement de la donnée présente dans le cache L1 pour la placer dans le L2 en vue de la récupération de données en mémoire vive

Cache Exclusif

Il faut faire de la place dans le cache L1, on déplace donc une donnée (celle la moins récemment utilisée) et on la place dans le cache L2, puis ensuite on place la donnée provenant de la mémoire vive dans le cache L1.

déplacement de la donnée la moins récente du cache L1 dans le cache L2 du processeur puis placement dans le cache L1 de la donnée provenant de la RAM

Lorsqu'une donnée est présente dans le cache L2 mais pas dans le L1, on la fait remonter dans le L1 en permutant la donnée la moins récente du L1 avec la donnée du L2. Les caches L1 et L2 ne contiennent jamais les mêmes données (elles passent de l'un à l'autre des caches), on parle donc de cache exclusif. L'avantage est de pouvoir avoir une liberté sur la taille des caches (la taille efficace étant l'addition des tailles des caches des différents niveaux). Le désavantage de cette technique est que les performances du cache L2 sont réduites étant donné qu'il faut écrire une donnée dans le cache L1 à chaque fois qu'on récupère une donnée dans le L2.

Cache Inclusif

Lorsque la donnée ne se trouve ni dans le L1 ni dans le L2, on copie la donnée de la mémoire vive dans les deux niveaux de cache (L1 et L2). La ligne écrasée du cache L1 n'est pas déplacée dans le L2 car elle y est déjà.

Placement des données provenant de la RAM dans les deux niveaux de cache

A ce stade, le cache L2 contient des données supplémentaires par rapport au cache L1, cependant toutes les données qui sont présentes dans le cache L1 sont présentes dans le cache L2. On parle d'un cache inclusif. L'avantage majeur de ce type de cache est de ne pas avoir à réécrire la donnée dans le cache L1 en cas de cache hit en lecture dans le cache L2. Les performances du cache L2 sont donc supérieures. L'inconvénient majeur est la taille totale du cache efficace ainsi que la contrainte de taille des caches L1 et L2. Pour être efficace, cette technique doit être mise en oeuvre avec un cache L2 très grand devant la taille du cache L1.

Composition d'un processeur

Tous les processeurs sont composés de ces éléments :

Die

Le core (ou die) d'un processeur est toute sa partie centrale contenant les unités de calcul, les registres et la mémoire cache. Voici à quoi il ressemble :

Die d'un processeur intel Core I7
Die d'un processeur Intel Core I7

Optimisations des architectures

Le pipeline

Afin d'optimiser le rendement, la technique du pipeline est apparue sur les 386 d'Intel. Le pipeline permet de commencer à traiter l'instruction suivante avant d'avoir terminé la précédente via un mécanisme de "travail à la chaîne". L'inconvénient de cette technique est que plus le pipeline est profond (contient d'étapes) plus la perte de performances est importante si une erreur de prédiction survient. L'avantage de cette technique est qu'elle permet d'augmenter la fréquence du processeur plus facilement. L'inconvénient majeur de cette technique est qu'elle entraîne une baisse des performances à fréquence égale. Il y a également une augmentation du dégagement thermique et donc de la température du processeur. Pourquoi cette hausse de température ? Lorsque l'instruction doit être exécutée en un temps donné, quelle que soit la profondeur du pipeline, cette instruction sera toujours exécutée aussi rapidement. Plus il y a d'étages au pipeline, plus l'instruction doit être "découpée" en une quantité de "micro-instructions" qui seront exécutées en un temps très court, bien plus court que le temps nécessaire pour traiter l'instruction. Or, plus le pipeline comporte d'étages et plus le délai de traitement d'une "micro-instruction" doit être faible, ce qui nécessite généralement plus de transistors, ces transistors chauffent, ont besoin généralement de plus de courant pour fonctionner plus rapidement. Voilà une des causes du dégagement thermique supérieur des processeurs comportant un nombre important d'étages de pipeline.

Principe du pipeline

L'architecture super scalaire

Cette astuce consiste à augmenter le nombre d'unités de traitement afin de traiter plusieurs instructions par cycle.

L'hyperthreading

Sous ce terme un peu barbare se cache une optimisation d'Intel apparue avec ses processeurs Pentiums 4.

Cette optimisation consiste à émuler des processeurs logiques. Le système d'exploitation croit qu'il dispose de plus de processeurs qu'il n'en a et gave de ce fait le processeur de plus d'instructions. Cela améliore son rendement.

Technologie Hyperthreading

Le multi-core (multi coeurs)

Suite à l'impossibilité de monter en fréquence, les deux fondeurs principaux ont commencé à implanter ce qu'on appelle le multicore.

Le multicore consiste à mettre plusieurs die (ce n'est pas tout à fait ça) dans un unique processeur afin de disposer de plusieurs processeurs de calcul. l'optimisation des performances passe désormais par l'ajout de coeurs et par l'optimisation du rendement.

Cette architecture est très efficace en multitâche, en monotâche elle ne vous fera rien gagner à moins d'augmenter les performances des coeurs (ajout de cache, hausse de fréquence...), c'est pourquoi l'efficacité par cycle est redevenue à la mode.

Mémoire cache non partagée

Avec ses premiers dualcore, Intel avait utilisé une technique plus rapide consistant à coller deux die côte à côte (pour simplifier). La mémoire cache était du coup deux fois plus grande, mais seule la moitié était utilisable pour chacun des processeurs.

Architecture dual core du pentium D
Première architecture dualcore d'Intel pour le grand public : l'architecture du Pentium-D

Il y a 2 Mo de mémoire cache L2 au total mais chaque core ne peut utiliser qu'1 Mo de mémoire. Lorsqu'une application a besoin de beaucoup de mémoire cache, cette solution n'est pas optimale.

D'autre part, si les deux coeurs veulent dialoguer entre eux (et c'est là où se situait l'énorme goulôt d'étranglement), ils doivent passer par le bus principal (FSB). Les performances en multitâche sont donc bridées, même si Intel a augmenté la fréquence du FSB pour limiter les pertes de puissance.

Mémoire cache partagée

Conscient de ces problèmes, Intel a suivi AMD en adoptant une architecture plus robuste à cache partagé :

Architecture dual core du core 2 duo
Architecture à mémoire cache partagée

Les instructions spécialisées

Tous les processeurs apportent leur jeu d'instructions spécialisées. Elles permettent, lorsqu'elles sont exploitées par les compilateurs, d'accélérer le traitement de tâches comme la 3D par exemple. MMX, SSE, Vpro, etc. sont les noms de ces technologies.

Fabrication d'un processeur

Les processeurs sont tous gravés sur des plaques appelées Wafers. Les différentes séries de processeurs n'ont pas forcément la même finesse de gravure (mesurée en micromètres (µm) ou nanomètres (nm)). Les processeurs actuels sont gravés en 0.045µ et 0.032µ (soit respectivement 45 et 32 nanomètres).

Diminuer la finesse de gravure permet de produire plus de processeurs à la fois sur un Wafer et permet donc d'abaisser leur coût de fabrication. Cette technique permet également de diminuer la consommation du processeur et donc la quantité de chaleur produite ce qui permet d'abaisser la consommation d'énergie et de monter plus haut en fréquence. Une finesse de gravure accrue permet également de loger plus de transistors dans le core (aussi appelé die) du processeur, et donc d'ajouter des fonctionnalités supplémentaires tout en gardant une surface aussi compacte que les générations précédentes.

Wafer

Choisir un processeur

Il existe de nombreux processeurs. Dans le monde du PC, on distingue deux grands constructeurs : Intel, et AMD, ayant chacuns leurs domaines de prédilection. On différencie les processeurs par :

Un socket
Socket LGA 1150 (Intel)
Vous avez aimé cet article intitulé Processeur ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels