Processeur
Une unité centrale de traitement (CPU) est un élément important de tout ordinateur. L'unité centrale envoie des signaux pour contrôler les autres parties de l'ordinateur, presque comme un cerveau contrôle un corps.
L'unité centrale est une machine électronique qui travaille sur une liste de choses à faire sur l'ordinateur, appelées instructions. Elle lit la liste des instructions et exécute chacune d'entre elles dans l'ordre. Une liste d'instructions qu'une CPU peut exécuter est un programme informatique.
La fréquence d'horloge, ou vitesse des parties internes d'un processeur, est mesurée en hertz (Hz). Les processeurs modernes tournent souvent si vite qu'on utilise plutôt le gigahertz (GHz). Un GHz correspond à 1 000 000 000 de cycles par seconde.
La plupart des processeurs utilisés dans les ordinateurs de bureau (domestiques) sont des microprocesseurs fabriqués par Intel ou par Advanced Micro Devices (généralement abrégé en AMD). D'autres sociétés fabriquant des processeurs sont ARM, IBM et AMD sous le nom de ATI Technologies, qui est actuellement le leader. La plupart de leurs processeurs sont utilisés dans des systèmes embarqués pour des choses plus spécialisées, comme les téléphones mobiles, les voitures, les consoles de jeux ou dans l'armée.
Un processeur Pentium à l'intérieur d'un ordinateur
Types de CPU
Au XXe siècle, les ingénieurs ont inventé de nombreuses architectures informatiques différentes. Aujourd'hui, la plupart des ordinateurs de bureau utilisent des processeurs 32 bits ou 64 bits. Les instructions d'un CPU 32 bits permettent de traiter des données de 32 bits (la plupart des instructions "pensent" en 32 bits dans un CPU 32 bits). De même, une unité centrale de 64 bits est capable de traiter des données de 64 bits (et souvent aussi de 32 bits). La taille des données qu'un CPU gère le mieux est souvent appelée la taille du mot du CPU. De nombreux vieux processeurs des années 70, 80 et du début des années 90 (et de nombreux systèmes embarqués modernes) ont une taille de mot de 8 ou 16 bits. Lorsque les processeurs ont été inventés au milieu du XXe siècle, ils avaient des tailles de mots très différentes. Certaines avaient des tailles de mots différentes pour les instructions et les données. Les tailles de mots moins populaires ont ensuite cessé d'être utilisées.
La plupart des unités centrales sont des microprocesseurs. Cela signifie que l'unité centrale n'est qu'une seule puce. Certaines puces contenant des microprocesseurs contiennent également d'autres composants et sont des "ordinateurs" complets à puce unique. C'est ce qu'on appelle un microcontrôleur.
Registres
Lorsque l'unité centrale exécute un programme informatique, elle a besoin d'un endroit pour stocker les données sur lesquelles les instructions fonctionnent (les données qu'elles lisent et écrivent). Ce stockage est appelé un registre. Une unité centrale possède généralement plusieurs registres. Les registres doivent être très rapides d'accès (en lecture et en écriture). Ils font donc partie de la puce de l'unité centrale elle-même.
Mémoire
Le stockage de toutes les données dans des registres rendrait la plupart des CPU trop compliqués (et très coûteux). C'est pourquoi les registres ne stockent généralement que les données sur lesquelles l'unité centrale travaille "en ce moment". Le reste des données utilisées par le programme est stocké dans la mémoire vive (RAM). Sauf dans les microcontrôleurs, la RAM est généralement stockée en dehors de l'unité centrale dans des puces séparées.
Lorsque l'unité centrale veut lire ou écrire des données dans la mémoire vive, elle émet une adresse vers ces données. Chaque octet de la RAM a une adresse mémoire. La taille des adresses est souvent la même que la taille des mots : Une unité centrale de 32 bits utilise des adresses de 32 bits, etc. Cependant, les CPU plus petits, comme les CPU 8 bits, utilisent souvent des adresses plus grandes que la taille du mot. Dans le cas contraire, la longueur maximale du programme serait trop courte.
Comme la taille des adresses est limitée, la quantité maximale de mémoire est également limitée. Les processeurs 32 bits ne peuvent généralement gérer que 4 Go de mémoire vive au maximum. C'est le nombre d'octets différents qui peuvent être sélectionnés à l'aide d'une adresse 32 bits (chaque bit peut avoir deux valeurs - 0 et 1 - et 232 octets représentent 4 Go). Un processeur 64 bits peut gérer jusqu'à 16 EB de RAM (16 exabytes, soit environ 16 milliards de GB ou 16 milliards de milliards d'octets). Le système d'exploitation peut le limiter à l'utilisation de quantités plus faibles.
Les informations qui sont stockées dans la mémoire vive sont généralement volatiles. Cela signifie qu'elles disparaîtront si l'ordinateur est éteint.
Cache
Sur les ordinateurs modernes, la mémoire vive est beaucoup plus lente que les registres, de sorte que l'accès à la mémoire vive ralentit les programmes. Pour accélérer les accès à la mémoire, un type de mémoire plus rapide appelé cache est souvent placé entre la RAM et les parties principales de l'unité centrale. Le cache est généralement une partie de la puce du processeur lui-même, et est beaucoup plus cher par octet que la mémoire vive. Le cache stocke les mêmes données que la mémoire vive, mais il est généralement beaucoup plus petit. Par conséquent, toutes les données utilisées par le programme peuvent ne pas tenir dans le cache. Le cache essaie de stocker des données qui sont susceptibles d'être beaucoup utilisées. Les exemples incluent les données récemment utilisées et les données proches en mémoire des données récemment utilisées.
Souvent, il est logique d'avoir un "cache pour le cache", tout comme il est logique d'avoir un cache pour la RAM. Dans la mise en cache multi-niveaux, il existe de nombreuses caches, appelées cache L1, cache L2, etc. Le cache L1 est le cache le plus rapide (et le plus cher par octet) et est le plus "proche" du processeur. Le cache L2 est à un pas et est plus lent que le cache L1, etc. Le cache L1 peut souvent être considéré comme un cache pour le cache L2, etc.
Bus
Les bus informatiques sont les fils utilisés par l'unité centrale pour communiquer avec la mémoire vive et les autres composants de l'ordinateur. Presque toutes les unités centrales ont au moins un bus de données - utilisé pour lire et écrire des données - et un bus d'adresses - utilisé pour la sortie des adresses. D'autres bus à l'intérieur de l'unité centrale transportent les données vers différentes parties de l'unité centrale.
Instructions
Un jeu d'instructions (également appelé ISA - Instruction Set Architecture) est un langage compris directement par une unité centrale particulière. Ces langages sont également appelés code machine ou binaire. Ils disent comment vous dites à l'unité centrale de faire différentes choses, comme charger des données de la mémoire dans un registre ou ajouter les valeurs de deux registres. Chaque instruction d'un jeu d'instructions possède un codage, c'est-à-dire la façon dont l'instruction est écrite sous forme de séquence de bits.
Les programmes écrits dans des langages de programmation comme le C et le C++ ne peuvent pas être exécutés directement par le CPU. Ils doivent être traduits en code machine avant que l'unité centrale ne puisse les exécuter. Un compilateur est un programme informatique qui effectue cette traduction.
Le code machine n'est qu'une séquence de 0 et de 1, ce qui rend sa lecture difficile pour l'homme. Pour le rendre plus lisible, les programmes de code machine sont généralement écrits en langage assembleur. Le langage assembleur utilise du texte au lieu des 0 et des 1 : Vous pouvez écrire "LD A,0" pour charger la valeur 0 dans le registre A par exemple. Un programme qui traduit le langage assembleur en code machine est appelé un assembleur.
Fonctionnalité
Voici quelques unes des choses essentielles qu'un processeur peut faire :
- Lire les données de la mémoire et écrire les données dans la mémoire.
- Ajoutez un numéro à un autre numéro.
- Testez pour voir si un numéro est plus grand qu'un autre.
- Déplacer un numéro d'un endroit à un autre (par exemple, d'un registre à un autre, ou entre un registre et une mémoire).
- Sauter à un autre endroit de la liste d'instructions, mais seulement si un test est vrai (par exemple, seulement si un numéro est plus grand qu'un autre).
Même des programmes très compliqués peuvent être réalisés en combinant de nombreuses instructions simples comme celles-ci. Cela est possible parce que chaque instruction prend un temps très court pour se produire. De nos jours, de nombreuses unités centrales peuvent exécuter plus d'un milliard (1 000 000 000) d'instructions en une seule seconde. En général, plus une unité centrale est capable d'en faire plus en un temps donné, plus elle est rapide. Une façon de mesurer la vitesse d'un processeur est le MIPS (Million d'instructions par seconde). Les flops (opérations en virgule flottante par seconde) et la vitesse d'horloge du CPU (généralement mesurée en gigahertz) sont également des moyens de mesurer la quantité de travail qu'un processeur peut effectuer dans un temps donné.
Une unité centrale est construite à partir de portes logiques ; elle ne comporte aucune pièce mobile. L'unité centrale d'un ordinateur est reliée électroniquement à d'autres parties de l'ordinateur, comme la carte vidéo ou le BIOS. Un programme informatique peut contrôler ces périphériques en lisant ou en écrivant des chiffres à des endroits spéciaux de la mémoire de l'ordinateur.
Instruction sur les pipelines
Chaque instruction exécutée par un CPU se fait généralement en plusieurs étapes. Par exemple, les étapes pour exécuter une instruction "INC A" (augmenter d'une unité la valeur stockée dans le registre A) sur une simple CPU pourraient être les suivantes :
- Lisez l'instruction de mémoire,
- décoder l'instruction (comprendre ce que fait l'instruction), et
- ajouter un au registre A.
Différentes parties de l'unité centrale font ces différentes choses. Souvent, il est possible d'exécuter certaines étapes à partir de différentes instructions en même temps, ce qui rend l'unité centrale plus rapide. Par exemple, nous pouvons lire une instruction de la mémoire en même temps que nous en décodons une autre, car ces étapes utilisent des modules différents. On peut considérer qu'il y a ainsi plusieurs instructions "dans le pipeline" en même temps. Dans le meilleur des cas, tous les modules travaillent sur des instructions différentes en même temps, mais ce n'est pas toujours possible.
Unités de gestion de la mémoire (MMU) et mémoire virtuelle
Les processeurs modernes utilisent souvent une unité de gestion de la mémoire (MMU). Une MMU est un composant qui traduit les adresses de l'unité centrale en adresses de mémoire vive (généralement) différentes. Lorsqu'on utilise une MMU, les adresses utilisées dans un programme ne sont (généralement) pas les "vraies" adresses où les données sont stockées. C'est ce qu'on appelle la mémoire virtuelle (le contraire de la mémoire "réelle"). Voici quelques-unes des raisons pour lesquelles il est bon d'avoir une MMU
- Une MMU peut "cacher" la mémoire d'autres programmes à un programme. Cela se fait en ne traduisant aucune adresse en adresses "cachées" pendant que le programme est en cours d'exécution. C'est une bonne chose car cela signifie que les programmes ne peuvent pas lire et modifier la mémoire d'autres programmes, ce qui améliore la sécurité et la stabilité. (Les programmes ne peuvent pas "s'espionner", ou "se marcher sur les pieds").
- De nombreuses MMU peuvent rendre certaines parties de la mémoire non inscriptibles, non lisibles ou non exécutables (ce qui signifie que le code stocké dans cette partie de la mémoire ne peut pas être exécuté). Cela peut être une bonne chose pour des raisons de stabilité et de sécurité, ainsi que pour d'autres raisons.
- Les MMU permettent à différents programmes d'avoir différentes "vues" de la mémoire. C'est pratique dans de nombreuses situations différentes. Par exemple, il sera toujours possible d'avoir le code "principal" d'un programme à la même adresse (virtuelle) sans entrer en collision avec d'autres programmes. C'est également pratique lorsqu'il existe de nombreux morceaux de code différents (provenant de bibliothèques) qui sont partagés entre les programmes.
- Les MMU permettent au code des bibliothèques d'apparaître à des adresses différentes chaque fois qu'un programme est exécuté. C'est une bonne chose car ne pas savoir où se trouvent les choses en mémoire rend souvent plus difficile pour les pirates de faire faire de mauvaises choses aux programmes. C'est ce qu'on appelle la randomisation de l'espace d'adressage.
- Les programmes et systèmes d'exploitation avancés peuvent utiliser des astuces avec les MMU pour éviter de devoir copier des données entre différents endroits de la mémoire.
Noyaux multiples
Les processeurs multicœurs sont devenus courants au début du 21e siècle. Cela signifie qu'ils ont plusieurs processeurs construits sur la même puce, de sorte qu'ils peuvent exécuter plusieurs instructions à la fois. Certains processeurs peuvent avoir jusqu'à trente-deux cœurs, comme le AMD Epyc 7601.
Fabricants
Les entreprises suivantes fabriquent des processeurs informatiques :
- ARM
- Intel
- Microdispositifs avancés
- MCST
- SRISA
- Sun Microsystems
Informations complémentaires
- Microprocesseur
- ALU
- Unité d'exécution
- Unité à virgule flottante
- Intel
- AMD
Questions et réponses
Q : Qu'est-ce qu'un CPU ?
R : Une UC (unité centrale de traitement) est une partie importante de chaque ordinateur. Il envoie des signaux pour contrôler les autres parties de l'ordinateur, presque comme un cerveau contrôle un corps. L'UC est une machine électronique qui travaille sur une liste d'instructions pour effectuer certaines tâches.
Q : Comment fonctionne l'unité centrale ?
R : Le CPU lit la liste d'instructions et exécute chacune d'entre elles dans l'ordre. Une liste d'instructions qu'un CPU peut exécuter est un programme informatique.
Q : En quoi la fréquence d'horloge ou la vitesse d'un CPU est-elle mesurée ?
R : La fréquence d'horloge ou la vitesse des parties internes d'un processeur est mesurée en hertz (Hz). Les processeurs modernes fonctionnent souvent si vite que l'on utilise plutôt le gigahertz (GHz) - un GHz correspondant à 1 000 000 000 de cycles par seconde.
Q : Quelles sont les entreprises qui fabriquent des processeurs ?
R : Les sociétés qui fabriquent des CPU sont Intel, Advanced Micro Devices (AMD), ARM (récemment rachetée par Nvidia), IBM et AMD sous le nom d'ATI Technologies qui domine actuellement le marché.
Q : Où sont utilisés la plupart des CPU ?
R : La plupart des CPU utilisés dans les ordinateurs de bureau sont des microprocesseurs fabriqués par Intel ou AMD, tandis que la plupart des autres sont utilisés dans des systèmes embarqués pour des choses plus spécialisées comme les téléphones mobiles, les voitures, les consoles de jeux vidéo ou les applications militaires.