UnIntel 4004 dans son boîtier à seize broches, premier microprocesseur commercialisé[1].Architecture de l'Intel 4004.L'intérieur d'unIntel 80486DX2.
Unmicroprocesseur est l'unité de traitement de l'information, qui au sein d'unordinateur exécute desinstructions pour réaliser une tâche et dont tous les composants ont été suffisamment miniaturisés pour être regroupés dans un uniqueboîtier. Fonctionnellement, leprocesseur est la partie d'unordinateur qui exécute les instructions et traite les données desprogrammes.
Jusqu'au début desannées 1970, les différentscomposants électroniques nécessaires au fonctionnement d'un processeur ne pouvaient pas tenir sur un seulcircuit intégré, ce qui nécessitait d'interconnecter de nombreux composants dont plusieurs circuits intégrés. En 1971, la société américaineIntel réussit, pour la première fois, à placer tous les composants qui constituent un processeur sur un seul circuit intégré, donnant ainsi naissance au microprocesseur[2].
Cette miniaturisation a permis :
d'augmenter les vitesses[a] de fonctionnement des processeurs, grâce à la réduction des distances entre les composants ;
de réduire les coûts, grâce au remplacement de plusieurs circuits par un seul ;
d'augmenter la fiabilité : en supprimant les connexions entre les composants du processeur, on supprime l'un des principaux vecteurs de panne ;
la complexité de sonarchitecture. Cette complexité se mesure en particulier par le nombre detransistors contenus dans le microprocesseur. Plus le microprocesseur contient de transistors, plus il pourra effectuer des opérations complexes, et/ou traiter des nombres de grande taille ;
le nombre debits que le processeur peut traiter simultanément : les premiers microprocesseurs ne pouvaient traiter plus de4 bits d'un coup. Ils devaient donc exécuter plusieurs instructions pour additionner des nombres de 32 ou64 bits. En 2007, les microprocesseurs peuvent traiter des nombres sur64 bits. Le nombre de bits desbus, de lamémoire et du processeur est en rapport direct avec la capacité à traiter de grands nombres rapidement, ou des nombres d'une grande précision (nombres de décimales significatives) ;
lafréquence d'horloge : le rôle de l’horloge est de cadencer le rythme du travail du microprocesseur. La fréquence correspond à ce que l'on appelle un « cycle d'horloge ». Une instruction, selon le type de processeur et d'instruction, peut prendre un ou plusieurs cycles d'horloge. Un processeurRISC, sur lequel toutes les opérations enlangage machine sont simples mais câblées, prend généralement un cycle par instruction. Au contraire, un processeurCISC contient dumicrocode, où une instruction en langage machine est une suite d'instructions câblées. En conséquence, dans tous les cas, à technologie égale, plus la fréquence est élevée, plus le nombre d'instructions pouvant être exécutées est élevé. Néanmoins, un processeurA cadencé à 400 MHz (~ 2,5 ns) peut exécuter certaines instructions plus rapidement qu'un autreB cadencé à 1 GHz (~ 1 ns) : tout dépend de leurs architectures respectives.
La combinaison des caractéristiques précédentes détermine la puissance du microprocesseur qui s’exprime en « millions d'instructions par seconde » (MIPS). Dans lesannées 1970, les microprocesseurs effectuaient moins d’un million d’instructions par seconde, alors qu’en 2007, les processeurs pouvaient effectuer plus de dix milliards d’instructions par seconde.
Illustration de laloi de Moore, une observation de l’évolution du nombre de transistors d'un microprocesseur, de 1971 à 2011[3].
En1969, le microprocesseur est inventé par un physicien d'Intel,Marcian Hoff (surnommé Ted Hoff)[4],[5],[6], etFederico Faggin, qui venait de le rejoindre, fort de recherches menées en Italie.Federico Faggin, physicien du solide italien est en 1968 chezFairchild-SGS àAgrate Brianza[7], puis àPalo Alto avecThomas Klein[7], le concepteur du premier circuit intégré commercial à grilles auto-alignées, le Fairchild 3708, puischef de projet de laSilicon Gate Technology (SGT), la première méthode pratique pour la fabrication des circuits intégrés MOS (structure semi-conducteur/métal/oxyde) avec grilles auto-alignées, qui a remplacé la grille d'aluminium traditionnelle d'un transistor MOS par une grille en silicium, pour intégrer deux fois plus de transistors dans la même surface.Federico Faggin est embauché par Intel en[7], pour être le chef de projet, le créateur de la méthodologie de conception et le concepteur principal. En seulement quelques mois, avecMarcian Hoff, des quatre puces de l'Intel 4004, qui servit initialement à fabriquer des contrôleurs graphiques en mode texte, il conçut un processeur d'usage général, avec une licence achetée au japonaisBusicom[7].
Marcian Hoff a formulé l'architecture du microprocesseur (une architecture de bloc et un jeu d'instructions). Le premier microprocesseur commercialisé, le, est l'Intel 40044bits, suivi par l'Intel 8008 à8 bits et qui servit initialement à fabriquer descontrôleurs graphiques en mode texte[8]. Jugé trop lent par le client qui en avait demandé la conception, il devint un processeur d'usage général.
Ces processeurs sont les précurseurs desIntel 8080,Zilog Z80, et de la future famille des Intelx86[9]. Federico Faggin est l'auteur d'une méthodologie de conception nouvelle pour la puce et la logique, fondée pour la première fois sur la technologiesilicon gate développée par lui en1968 chezFairchild. Il a aussi dirigé la conception du premier microprocesseur jusqu'à son introduction sur le marché en1971[10].
Presque à la même époque, la société américaineMotorola effectue des travaux et innovations similaires sous la direction deChuck Peddle[11], venu deGeneral Electric, où il avait conçu une caisse enregistreuse électronique, mais qui décide en 1970 d'abandonner son activité informatique. Il participe au développement du microprocesseurMotorola 6800, à8 bits, vendu 300 US$, et qui va servir aux ordinateurs d'usage professionnelGoupil 1 et 2 de la sociétéSMT.
En1990,Gilbert Hyatt revendique la paternité du microprocesseur en se basant sur unbrevet qu’il avait déposé en1970[12]. La reconnaissance de l’antériorité du brevet de Hyatt aurait permis à ce dernier de réclamer desredevances sur tous les microprocesseurs fabriqués de par le monde, mais le brevet de Hyatt a été invalidé en1995 par l’office américain des brevets, sur la base du fait que le microprocesseur décrit dans la demande de brevet n'avait pas été réalisé, et n'aurait d'ailleurs pas pu l'être avec la technologie disponible au moment du dépôt du brevet[13].
Le tableau suivant décrit les principales caractéristiques des microprocesseurs fabriqués par Intel, et montre leur évolution en termes de nombre de transistors, en miniaturisation des circuits, et en augmentation de puissance. Il faut garder à l'esprit que si ce tableau décrit l'évolution des produits d'Intel, l'évolution des produits des concurrents a suivi avec plus ou moins d'avance ou de retard la même marche.
Un programme informatique est, par essence, un flux d'instructions exécutées par un processeur. Chaqueinstruction nécessite un à plusieurscycles d'horloge, l'instruction est exécutée en autant d'étapes que de cycles nécessaires. Les microprocesseurs séquentiels exécutent l'instruction suivante lorsqu'ils ont terminé l'instruction en cours. Dans le cas du parallélisme d'instructions, le microprocesseur pourra traiter plusieurs instructions dans le même cycle d'horloge, à condition que ces instructions différentes ne mobilisent pas simultanément une unique ressource interne. Autrement dit, le processeur exécute des instructions qui se suivent, et ne sont pas dépendantes l'une de l'autre, à différents stades d'achèvement. Cettefile d'exécution à venir s'appelle unpipeline. Ce mécanisme a été implémenté la première fois dans lesannées 1960 parIBM. Les processeurs plus évolués exécutent en même temps autant d'instructions qu'ils ont de pipelines, ce à la condition que toutes les instructions à exécuter parallèlement ne soient pas interdépendantes, c'est-à-dire que le résultat de l'exécution de chacune d'entre elles ne modifie pas les conditions d'exécution de l'une des autres. Les processeurs de ce type sont appelésprocesseurs superscalaires. Le premier ordinateur à être équipé de ce type de processeur était leSeymour CrayCDC 6600 en 1965. LePentium est le premier des processeurs superscalaires pourcompatible PC.
Les concepteurs de processeurs ne cherchent pas simplement à exécuter plusieurs instructions indépendantes en même temps, ils cherchent à optimiser le temps d'exécution de l'ensemble des instructions. Par exemple le processeur peut trier les instructions de manière que tous ses pipelines contiennent des instructions indépendantes. Ce mécanisme s'appelle l'exécution out-of-order. Ce type de processeur s'est imposé pour les machines grand public desannées 1980 et auxannées 1990[14]. L'exemple canonique de ce type de pipeline est celui d'unprocesseur RISC (Reduced instruction set computer), en cinq étapes. LeIntel Pentium 4 dispose de35 étages de pipeline[15]. Un compilateur optimisé pour ce genre de processeur fournit un code qui sera exécuté plus rapidement.
Pour éviter une perte de temps liée à l'attente de nouvelles instructions, et surtout au délai de rechargement ducontexte entre chaque changement dethreads, les fondeurs[c] ont ajouté à leurs processeurs des procédés d'optimisation pour que lesthreads puissent partager les pipelines, les caches et les registres. Ces procédés, regroupés sous l'appellationsimultaneous multithreading, ont été mis au point dans lesannées 1950. Par contre, pour obtenir une augmentation des performances, les compilateurs doivent prendre en compte ces procédés, il faut donc re-compiler les programmes pour ces types de processeurs. Intel a commencé à produire, début desannées 2000, des processeurs implémentant la technologie SMT à deux voies. Ces processeurs, lesPentium 4, peuvent exécuter simultanément deuxthreads qui se partagent les mêmes pipelines, caches et registres. Intel a appelé cette technologieSMT à deux voies : l’hyper-threading. Lesuper-threading(en) est, quant à lui, une technologie SMT dans laquelle plusieursthreads partagent aussi les mêmes ressources, mais cesthreads ne s'exécutent que l'un après l'autre et non simultanément[16].
Depuis longtemps déjà, existait l'idée de faire cohabiter plusieurs processeurs au sein d'un même composant, par exemple lesSystem on Chip. Cela consistait, par exemple, à ajouter au processeur, uncoprocesseur arithmétique, unDSP, voire un cache mémoire, éventuellement même l'intégralité des composants que l'on trouve sur unecarte mère. Desprocesseurs multi-cœur utilisant deux ou quatrecœurs sont donc apparus, comme lePOWER4 d'IBM sorti en 2001. Ils disposent des technologies citées préalablement. Les ordinateurs qui disposent de ce type de processeurs coûtent moins cher que l'achat d'un nombre équivalent de processeurs. Cependant, les performances ne sont pas directement comparables, cela dépend du problème traité. Des API spécialisées ont été développées afin de tirer parti au mieux de ces technologies, comme leThreading Building Blocks d'Intel.
Les microprocesseurs sont habituellement regroupés en familles, en fonction dujeu d'instructions qu'ils exécutent. Si ce jeu d'instructions comprend souvent une base commune à toute la famille, les microprocesseurs les plus récents d'une famille peuvent présenter de nouvelles instructions. Larétrocompatibilité au sein d'une famille n'est donc pas toujours assurée. Par exemple un programme dit compatiblex86 écrit pour un processeurIntel 80386[17], qui permet la protection mémoire, pourrait ne pas fonctionner sur des processeurs antérieurs, mais fonctionne sur tous les processeurs plus récents (par exemple unCore Duo d'Intel ou unAthlon d'AMD).
Il existe des dizaines de familles de microprocesseurs. Parmi celles qui ont été les plus utilisées, on peut citer :
la famille la plus connue par le grand public est la famillex86, apparue à la fin desannées 1970, développée principalement par les entreprises Intel (fabricant duPentium), AMD (fabricant de l'Athlon),VIA etTransmeta. Les deux premières entreprises dominent le marché en fabriquant la majorité des microprocesseurs pourmicro-ordinateurscompatibles PC etMacintosh (entre 2006 et 2020) ;
les microprocesseursPowerPC d'IBM et de Motorola équipaient jusqu'en2006 les micro-ordinateursMacintosh (fabriqués parApple). Ces microprocesseurs sont aussi utilisés dans les serveurs de lasérie P d'IBM et dans divers systèmes embarqués. Dans le domaine desconsoles de jeu, des microprocesseurs dérivés du PowerPC équipent laWii (Broadway), laGameCube (Gekko),Xbox 360 (dérivé à trois cœurs nommé « Xenon »). LaPlayStation 3 est équipée du microprocesseurCell, dérivé duPOWER4, une architecture proche de PowerPC ;
les processeurs d'architecture MIPS animaient lesstations de travail deSilicon Graphics, des consoles de jeux comme laPSone, laNintendo 64 et des systèmes embarqués, ainsi que desrouteursCisco. C'est la première famille à proposer une architecture64 bits avec leMIPS R4000 en 1991. Les processeurs du fondeur chinoisLoongson sont une nouvelle génération basée sur les technologies du MIPS, utilisés dans des supercalculateurs et des ordinateurs faible consommation ;
la familleARM est de nos jours utilisée principalement dans les systèmes embarqués, dont de nombreuxPDA etsmartphones. Elle a précédemment été utilisée parAcorn pour sesArchimedes etRISC PC.
L'augmentation de la fréquence présente des inconvénients :
ladissipation thermique[19] d'un circuit donné est proportionnelle à sa fréquence de fonctionnement et au carré de sa tension d'alimentation[20] : cela implique d'avoir une solution de refroidissement du processeur adaptée ;
L'overclocking consiste à appliquer au microprocesseur une fréquence du signal d'horloge supérieure aux recommandations du fabricant ce qui permet d'exécuter plus d'instructions à chaque seconde. Cela nécessite souvent plus de puissance d'alimentation au risque de dysfonctionnements voire de destruction en cas de surchauffe.
Les microprocesseurs actuels sont optimisés pour exécuter plus d'une instruction par cycle d'horloge, ce sont des microprocesseurs avec des unités d'exécution parallélisées. De plus ils sont dotés de procédures qui « anticipent » les instructions suivantes avec l'aide de la statistique.
Dans la course à la puissance des microprocesseurs, deux méthodes d'optimisation sont en concurrence :
la technologieRISC (Reduced Instruction Set Computer,jeu d'instructions simple), rapide avec des instructions simples de taille standardisée, facile à fabriquer et dont on peut monter la fréquence de l'horloge sans trop de difficultés techniques ;
la technologieCISC (Complex Instruction Set Computer), dont chaque instruction complexe nécessite plus de cycles d'horloge, mais qui a en son cœur de nombreuses instructions précâblées.
Néanmoins, avec la diminution de la taille des transistors sur les puces et l'accélération des fréquences d'horloge, la distinction entre RISC et CISC a quasiment complètement disparu. Là où des familles tranchées existaient, on observe aujourd'hui des microprocesseurs où une structure interne RISC apporte de la puissance tout en restant compatible avec une utilisation de type CISC (la famille Intel x86 a ainsi subi une transition entre une organisation initialement très typique d'une structure CISC. Actuellement, elle utilise un cœur RISC très rapide, s'appuyant sur un système de réarrangement du codeà la volée) mis en œuvre, en partie, grâce à desmémoires cache de plus en plus grandes, comportant jusqu'à trois niveaux.
desregistres qui permettent au microprocesseur de stocker temporairement des données ;
uneunité de contrôle qui commande l'ensemble du microprocesseur en fonction des instructions du programme.
Certains registres ont un rôle très particulier :
leregistre indicateur d'état (flags), ce registre donne l'état du microprocesseur à tout moment, il peut seulement être lu ;
lecompteur de programme (PC,Program Counter), il contient l'adresse de la prochaine instruction à exécuter ;
lepointeur de pile (SP,Stack Pointer), c'est le pointeur d'une zone spéciale de la mémoire appeléepile où sont rangés les arguments dessous-programmes et lesadresses de retour.
Seul leProgram Counter est indispensable, il existe de (rares) processeurs ne comportant pas deregistre d'état ou pas de pointeur de pile (par exemple leNS320xx(en)).
L'unité de contrôle peut aussi se décomposer :
le registre d'instruction, mémorise le code de l'instruction à exécuter ;
le décodeur décode cette instruction ;
le séquenceur exécute l'instruction, c'est lui qui commande l'ensemble des organes du microprocesseur.
Pour commencer, le microprocesseur va charger une instruction contenue enmémoire grâce aucompteur de programme. Ce dernier est au passage incrémenté, afin que le processeur traite l'instruction suivante au prochain cycle. L'instruction est décodée et si nécessaire le microprocesseur va chercher en mémoire les données supplémentaires. Dans certains cas, des instructions servent uniquement à charger une donnée dans un registre précis ou à écrire une donnée d'un registre en mémoire. Dans ce cas, le processeur charge ou écrit la donnée puis passe à l'instruction suivante. Dans le cas où le processeur doit effectuer une opération de calcul, le processeur fait appel à l'ALU. Dans de nombreuses architectures, celle-ci fonctionne avec unregistre accumulateur. Celui-ci enregistre le résultat de l'opération précédente, qui peut ensuite être réutilisé. Dans le cas d'un saut (goto, jump), c'est le compteur de programme qui est directement modifié. Dans le cas d'unsaut conditionnel (if), le processeur vérifie avant le saut qu'une condition booléenne est valide (true). Dans certains sauts (jump), le processeur ajoute une valeur à l'accumulateur. Cela permet au programme d'être exécuté à n'importe quel endroit dans la mémoire. Les instructions se divisent donc en plusieurs catégories :
les instructions de chargement (load) : mettent l'accumulateur à une certaine valeur ;
les instructions de rangement (store) : permettent d'écrire la valeur de l'accumulateur dans un registre ou un emplacement de mémoire précis ;
les instructions de saut (if,jump) : permettent de déplacer choisir la prochaine instruction à exécuter ;
les instructions de calcul (add,mul,div,etc.) : permettent par exemple d'ajouter le contenu du registre X à l'accumulateur, de multiplier l'accumulateur par le registre Y, etc.
À la fin du cycle, le processeur finit de ranger ses données en mémoire ou dans les registres spécifiques. En cas de retenue, un registre spécial reçoit la valeur de la retenue, ce qui permet de le combiner à nouveau pour fonctionner avec plus de bits que ce que permet l'architecture. En cas d'erreur, comme une division par zéro, le processeur modifie un registre d'état et peut déclencher une interruption.Toutes ces étapes peuvent s’effectuer en plusieurs cycles d'horloge. Une optimisation consiste à les exécuter à la chaîne (principe du pipeline) ou en parallèle (architecture superscalaire). Actuellement, face à la difficulté liée à la montée en fréquence des microprocesseurs, les fabricants tentent d'augmenter le nombre d'instructions par cycle (IPC) afin d'augmenter la vitesse de leurs processeurs. Cela a conduit à l'apparition deprocesseurs multi-cœurs, composés de plusieurs unités, ou cœurs, capables d'exécuter une instruction indépendamment de l'autre (contrairement à une architecture superscalaire, qui conserve des registres en commun). On parle alors de « calcul en parallèle ». Néanmoins, cela nécessite des programmes adaptés et les performances de ces processeurs dépendent de plus en plus de la qualité de programmation des programmes qu'ils exécutent.
La fabrication d'un microprocesseur est essentiellement identique à celle de n'importe quelcircuit intégré. Elle suit donc un procédé complexe. Mais l'énorme taille et complexité de la plupart des microprocesseurs a tendance à augmenter encore le coût de l'opération. Laloi de Moore, qui indique que le nombre de transistors des microprocesseurs sur les puces de silicium double tous les deux ans, indique également que les coûts de production doublent en même temps que le degré d'intégration.
La fabrication des microprocesseurs est aujourd'hui considérée comme l'un des deux facteurs d'augmentation de la capacité des unités de fabrication (avec les contraintes liées à la fabrication des mémoires à grande capacité). Lafinesse de la gravure industrielle a atteint 45 nm en 2006[21]. En diminuant encore la finesse de gravure, les fondeurs se heurtent aux règles de lamécanique quantique.
Malgré l'usage de techniques de gravures de plus en plus fines, l'échauffement des microprocesseurs reste approximativement proportionnel au carré de leur tension à architecture donnée. AvecV la tension,f la fréquence, etk un coefficient d'ajustement, on peut calculer lapuissance dissipéeP :
.
Ce problème est lié à un autre, celui de ladissipation thermique et donc souvent desventilateurs, sources de nuisances sonores. Le refroidissement liquide peut être utilisé. L'utilisation d'unepâte thermique assure une meilleure conduction de la chaleur du processeur vers le radiateur. Si l'échauffement ne pose pas de problème majeur pour des applications type ordinateur de bureau, il en pose pour toutes les applications portables. Il est techniquement facile d'alimenter et de refroidir un ordinateur fixe. Pour les applications portables, ce sont deux problèmes délicats. Le téléphone portable, l'ordinateur portable, l'appareil photo numérique, le PDA, le baladeur MP3 ont une batterie qu'il s'agit de ménager pour que l'appareil portable ait une meilleure autonomie.
Matériaux bidimensionnels : l'électronique bidimensionnelle[22] est une piste d'innovation envisagée dès 2010[23]. Elle s'appuie sur des microprocesseurs de taille nanométrique[24], imprimé en seulement deux dimensions, à partir desemi-conducteur 2D d'un ou seulement quelques atomes d'épaisseur, afin d'encore miniaturiser l'électronique sous les limites permises par le silicium[25]. Dans les années 2010, des prototypes comprenant quelques transistors ont été testés avec succès. Des matériaux organiques[26], desnanotubes de carbone[27] ou ledisulfure de molybdène sont des matériaux qui semblent prometteurs[28],[29],[30],[31], notamment pour produire des composés souples[32], pouvant par exemple être intégrés dans des feuilles de plastique, des vêtements ou des « robots mous ». Le disulfure de molybdène a été utilisé en 2017 pour fabriquer un semi-conducteur permettant de produire un microprocesseur en quasi 2D, comprenant115 transistors. Ce dernier a efficacement exécuté des programmes stockés dans une mémoire externe (pour unbit de données mais les auteurs disent que la conception peut être mise à l'échelle pour en gérer plus). À cette échelle, les microprocesseurs sont invisibles et pourraient par exemple être intégrés dans le verre de lunettes, depare-brise ou de vitres ou dans une lentille oculaire.
↑Cette vitesse est exprimée sous forme d'unefréquence exprimée enhertz (Hz), qui comptabilise le nombre de cycles qu'effectue l'horloge de synchronisation du processeur en une seconde.
↑Ce n'est pas la seule raison, mais, plus un transistor est petit, moins il a besoin d'énergie pour commuter correctement.
↑François Francis Bus,L'Époque où les puces font leurs lois : histoire des semiconducteurs vécue de chez Texas Instruments, Books On Demand(ISBN978-2-322-25685-3).