mardi 20 février 2007

Processeur VLIW

VLIW, initiales de Very Long Instruction Word en anglais, dénote une famille d'ordinateurs dotés d'un processeur à mot d'instruction très long (couramment supérieur à 128 bits).

Sommaire
1 Principe
1.1 Exemple
1.2 Pipeline interne
2 Implémentations commerciales
3 Historique
4 Références
4.1 Liens internes
4.2 Liens externes

Principe
Sur ces processeurs, chaque instruction peut faire 128, 256 bits de long, voire plus. Sont codés à l'intérieur de ces instructions les opérations à effectuer par les différentes unités de calcul disponible dans l'unité centrale.
Il est de la responsabilité du compilateur de générer un code qui prend en compte la disponibilités des ressources et ne provoque pas de problèmes matériel lors de son exécution.
Un mot VLIW est parfois appelé un bundle, selon l'architecture. Chaque bundle peut contenir plusieurs instructions. Ces instructions sont positionnées à un certain emplacement du bundle : un slot. En général chaque slot correspond à un type d'instruction, c'est-à-dire que le compilateur ne peut pas affecter à un slot dédié aux instructions arithmétiques entières une multiplication flottante, par exemple.

Exemple
Prenons un exemple de source en assembleur VLIW pour illustrer le problème d'affectation des ressources. Le processeur pour lequel on génère du code n'a que 4 unités : une unité de calcul sur des entiers, une unité flottante, une unité de chargement/rangement (accès mémoire), et une unité de branchement (un mot VLIW ne pourra contenir plus de 4 instructions) :
Code source :...
I1 ADD R1, R1, -2
I2 FMUL R2, R1, 10
I3 STORE R3, #100
I4 JE R2, FinCode
I5 LOAD R4, R1(4)
...
On voit ici une dépendance de type RAW (Read After Write, lecture après écriture), qui empêche d'exécuter I2 en même temps que I1. En revanche on peut paralléliser I1 et I3, car il n'y a pas de dépendance et parce qu'elles n'utilisent pas les mêmes ressources matérielles (l'unité entière pour I1 et l'unité de branchement pour I2).
Le compilateur produira le mot machine suivant :
L'exécution de ce mot se fera de la manière suivante :
Le fait que le processeur ne réorganise pas les données qu'il va exécuter le caractérise comme étant un processeur in-order (dans l'ordre).
Le compilateur a donc la charge d'organiser correctement les instructions parmi les bundles, tout en respectant les types de dépendances habituelles (aléa de donnée, etc.) qui sont normalement gérées au niveau matériel par les architectures classiques (en général via l'algorithme de Tomasulo).
Outre les instructions classiques (celles qui seront exécutées), le compilateur doit « remplir les slots vides du bundle » pour que chaque mot ait la taille idoine (128, 256, 384 bits). Pour ce faire il y place des instructions ne faisant rien (NOP, pour No Operation), comblant ainsi les emplacements vides.
La faible densité de code résultant de ces instructions très longue peut être compensée par une décompression à la volée du code au moment de son exécution.

Lire la suite : http://fr.wikipedia.org/wiki/Processeur_VLIW

mardi 13 février 2007

Architecture RISC

Reduced instruction set computer
Un article de Wikipédia, l'encyclopédie libre.

Le microprocesseur à jeu d'instruction réduit ou reduced instruction-set computer en anglais est une architecture matérielle de microprocesseurs. On l'a opposé à la fin des années 1980 et au début des années 1990 à l'architecture CISC (complex instruction-set computer). La sortie d'architectures hybrides comme le Pentium (CISC émulé par du RISC) a mis fin par disparition de repères à cette guerre qui était devenue bien plus marketing que technique vers 1990, les techniques ayant évolué de part et d'autre et chacune comparant ses procédés à ceux de l'autre... six ans plus tôt.

Sommaire
1 Principe
1.1 Pénalité
1.2 Avantages
2 Historique
3 Performances comparées CISC/RISC
4 Positionnement

Principe
L'idée d'origine provient de l'analyse des séquences de codes qui montrait que la grande majorité des instructions disponibles étaient très peu utilisées. Ainsi, seul un jeu très réduit d'instructions était principalement utilisé dans les programmes. C'est pourquoi l'architecture RISC fait le choix de limiter le jeu d'instructions à seulement quelques unes, imposant, en contrepartie, à toutes, un nombre identique de cycles pour s'exécuter. De cette manière, il est possible de débuter une nouvelle instruction à chaque cycle d'horloge: ceci constitue le « pipeline ». L'avantage de cette technique est que désormais, le processeur se comporte comme s'il y avait une instruction exécutée par cycle d'horloge. De plus, la division de chaque instruction en plusieurs étapes autorise une fréquence d'horloge plus grande puisque la profondeur combinatoire entre deux registres est diminuée. Ces deux caractéristiques ont pour conséquence une division du temps d'exécution pour toutes les instructions de base.

Pénalité
Cela se paye au prix d'une certaine diminution de lisibilité du code gênante si l'on programme en assembleur et surtout si on l'optimise : l'instruction MVC (MoVe Character) du Système 360 restait tout de même plus lisible que la séquence d'instructions faisant la même chose dans une machine RISC. Mais pour qui la codait strncpy() en langage C, il n'y avait plus aucune différence. Et en temps d'exécution, le code C optimisé se montrait en général plus performant en vitesse pure grâce à des astuces d'usage de l'effet pipeline par le compilateur.

Avantages
Du fait que chaque instruction était simple, le décodage et l'exécution par le processeur devaient être très rapides, idéalement en un seul cycle, ce qui était précisément le cas du Motorola 6800. Le succès de l'architecture RISC a tenu à deux facteurs :
la mémoire avait baissé de prix à un point tel qu'y concentrer des instructions compliquées perdait de sa rentabilité,
les temps d'accès de cette mémoire étaient devenus très faibles par rapport au temps de traitement d'une instruction complexe. Dans ces conditions, la mémoire passait l'essentiel de son temps à attendre le processeur.
C'est aujourd'hui (2004) l'inverse, raison pour laquelle on place des antémémoires (caches) un peu partout, y compris dans les machines RISC qui en ont plus souvent deux (données, instructions) qu'une seule.

Suite de l'article sur : http://fr.wikipedia.org/wiki/Reduced_instruction_set_computer


http://www.spoonylife.com/

jeudi 8 février 2007

Architecture CISC

Complex instruction set computer
Un article de Wikipédia, l'encyclopédie libre.

Un microprocesseur à jeu d'instruction étendu, ou complex instruction set computer (CISC) en anglais, désigne un microprocesseur possédant un jeu d'instructions comprenant de très nombreuses instructions mixées à des modes d'adressages complexes.
L'architecture CISC est opposée à l'architecture RISC (Reduced Instruction-Set Computer).

Avantages
L'empreinte mémoire du code est beaucoup plus dense (facteur deux entre de l'ARM thumb et le x86), ce qui est intéressant pour minimiser la taille du cache instruction.
Possibilité de microprogrammation, donc de corriger le jeu d'instructions (cela peut être utile pour corriger des bugs).
Permet d'utiliser des instructions très complexes non (ou mal) gérées par les compilateurs mais très rapides (ex: instructions SIMD).

Défauts
Le microprocesseur est plus compliqué à accélérer (problème pour pipeliner le moteur d'exécution).
Le processeur est globalement plus complexe qu'un processeur RISC.
Les compilateurs ont des difficultés à générer des instructions complexes.

Processeur de cette famille
Les x86
Les 68000
Le s390 (pour les mainframes d'IBM)
Le VAX
Récupérée de « http://fr.wikipedia.org/wiki/Complex_instruction_set_computer »

mardi 6 février 2007

Structure d'un processeur

Un processeur comporte trois classe de composants:
des espaces de stockage, source des instructions et de leurs opérandes et destination des résultats;
des unités fonctionnelles, effectuant les manipulations sur les opérandes et fournissant les résultats;
un contrôleur, lisant les instructions et coordonnant leur exécution par les autres composants.

Espaces de stockagePour diverses raisons, les processeurs ont plusieurs espaces de stockage.

Espace de travail C'est l'ensemble des emplacements facilement spécifiables qui contiennent temporairement les opérandes et les résultats des opérations. Ces emplacements sont souvent appelés registres.
Il n'est absolument pas nécessaire que les registres soient homogènes bien qu'on puisse souvent grouper les registres en classes, de sorte que les registres d'une classe peuvent être utilisés à la place de n'importe quel autre registre de la même classe. Mais il n'est pas rare qu'une classe ne comporte qu'un seul registre.
Les architectures ont quasiment toutes au moins deux classes de registres: une pour stocker les valeurs entières, une pour stocker les nombres représentés en virgule flottante. Mais souvent, l'espace de travail comporte des registres ayant des fonctions particulières.
Un accumulateur
est un registre servant de source implicite à la plupart des instructions et contenant le résultat après leur exécution.
Les registres d'index
sont des registres servant au calcul d'adresse (voir plus loin).
Un pointeur de pile
indiquant l'adresse du sommet d'une pile gérée par le processeur.
Un frame pointer
servant à accéder aux données locales de la routine en cours d'exécution.
Certains registres ont un comportement particulier: ils informent de l'état du processeur ou contiennent des informations à propos des dernières opérations effectuées (par exemple un indicateur indiquant si le dernier résultat était nul ou pas). Parmi ces registres particuliers on trouve souvent:
Le compteur ordinal (program counter, instruction pointer)
indiquant l'adresse de l'instruction en cours d'exécution ou de la prochaine instruction à exécuter;
le mot d'état
regroupant les informations les plus importantes sur l'état du processeur.

Espace mémoire
Au contraire de l'espace de travail, un espace mémoire apparait comme un ensemble homogène d'emplacements, chacun de ceux-ci étant spécifié par son adresse.
La plupart des processeurs n'ont qu'un espace mémoire, mais certains en ont plusieurs (par exemple un microcontrôleur peut avoir un espace mémoire sur le circuit et un espace mémoire à l'extérieur de celui-ci).
Parfois un espace mémoire peut être plongé dans un autre, c'est à dire qu'un même emplacement peut être accessible à une adresse d'un espace mémoire donné ou à une autre adresse d'un autre espace mémoire. C'est parfois le cas pour tout ou partie des registres de l'espace de travail.
Les modes d'adressage du processeur sont les différentes manières dont on peut spécifier les opérandes d'une instruction. Parmi les modes d'adressage possibles, citons:
l'adressage implicite
l'opérande n'est pas spécifiée dans l'instruction; elle est soit
toujours la même (pour une instruction d'incrémentation par exemple, on peut considérer qu'une opérande est toujours la constante 1), soit elle se trouve dans un registre fixé (si beaucoup d'instructions utilisent implicitement un même registre, celui-ci est nommé l'accumulateur), soit son adresse se trouve dans un registre fixé (par exemple le pointeur de pile).
l'adressage immédiat
la valeur de l'opérande est donnée directement dans l'instruction;
l'adressage direct ou absolu
l'adresse de l'opérande est donnée directement dans l'instruction;
l'adressage par registre
l'opérande se trouve dans un registre donné dans l'instruction;
l'adressage indirect par registre
l'adresse de l'opérande se trouve dans un registre;
l'adressage indirect
l'adresse de l'opérande se trouve dans un emplacement mémoire dont l'adresse est elle donnée dans l'instruction;
l'adressage indexé
l'adresse de l'opérande est formée en additionnant le contenu d'un ou de deux registres et d'une constante.

Entrée sortie
Pour le programmeur, la gestion des entrées sorties se fait souvent exactement comme si on accédait à un espace de stockage particulier. Suivant les architectures il apparait soit comme des registres (c'est souvent le cas dans les microcontrôleurs), soit comme un espace mémoire (auquel cas les modes d'adressage sont souvent plus réduits que dans les espaces mémoire normaux). Parfois, les entrées sorties se font en accédant simplement à des adresses particulières dans l'espace mémoire normal.

Lire l'article complet sur : http://fr.wikipedia.org/wiki/Architecture_des_processeurs

lundi 5 février 2007

Architecture

L'architecture d'un processeur est l'agencement de ses composants ; cet agencement est fait en vue d'une tâche ou d'un ensemble de tâches précises prévue par le concepteur.
Savoir qu'un processeur a une instruction add qui fait une addition entre deux registres et met le résultat dans un troisième concerne l'architecture du processeur.
L'implémentation ou micro-architecture est l'organisation logique des flux de données et du contrôle de ceux-ci.
Savoir qu'un processeur a deux unités arithmétiques capables d'exécuter cette instruction concerne la micro-architecture.
La réalisation est la concrétisation matérielle de l'implémentation.
Savoir que ces unités arithmétiques sont réalisées dans une technologie CMOS avec trois niveaux de métaux et une finesse de gravure de 130 nanomètres concerne la réalisation.
Pour une architecture donnée, on peut avoir plusieurs implémentations et une implémentation donnée peut servir de base à plusieurs réalisations. Par exemple l'architecture System 360 d'IBM a été disponible dès le départ en cinq implémentations différentes ayant naturellement des performances et un coût différent (c'est d'ailleurs dans le contexte de la définition de cette architecture que la nomenclature ci-dessus a été rafinée) et de nos jours les microprocesseurs d'Intel et d'AMD fournissent de nombreux exemples des deux genres de déclinaison.
Naturellement les interactions entre les trois niveaux sont complexes. Les contraintes de réalisation limitent les choix micro-architecturaux et le désir de pouvoir choisir une implémentation donnée influence la définition de l'architecture. Si les avantages de la compatibilité forcent à vouloir garder l'architecture constante, vouloir avoir une implémentation et une réalisation efficace pousse vers une évolution, soit par extension compatible (ajout d'instructions par exemple), soit en précisant des zones floues ou même en invalidant ce qui autrefois était autorisé.

lire la suite : http://fr.wikipedia.org/wiki/Architecture_des_processeurs

dimanche 4 février 2007

L'unite arithmetique et logique (UAL)

Unité arithmétique et logique
Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, Rechercher
L'unité arithmétique et logique, abrégé UAL (ou bien ALU, Arithmetic Logic Unit en anglais), est l'organe de l'ordinateur chargé d'effectuer les calculs. Le plus souvent l'UAL est incluse dans l'unité centrale ou le microprocesseur.

Sommaire
1 Différents types d'UAL
2 Notation
3 Exemples
3.1 L'UAL 4 bits 74181 (TTL)
3.2 Utilisation de multiplexeurs 4 vers 1 comme UAL
4 Voir aussi
5 Liens externes



Différents types d'UAL
Les UAL peuvent être spécialisées ou pas. Si non, cela signifie qu'elles calculent sur des nombres entiers, et peuvent effectuer les opérations communes, que l'on peut néanmoins séparer en quatre groupes :

Les opérations arithmétiques : addition, soustraction, changement de signe etc.,
les opérations logiques : compléments à un, à deux, ET, OU, OU-exclusif, NON, NON-ET etc.,
les comparaisons : test d'égalité, supérieur, inférieur, et leur équivalents « ou égal »,
éventuellement des décalages et rotations (mais parfois ces opérations sont externalisées).
Certaines UAL sont spécialisées dans la manipulation des nombres à virgule flottante, en simple ou double précision (on parle d'unité de calcul en virgule flottante ou floating point unit (FPU)) ou dans les calculs vectoriels. Typiquement ces unités savent acomplir les opérations suivantes :

additions, soustractions, changement de signe,
multiplications, divisions,
comparaisons,
modulos

Certaines UAL, le plus souvent de la classe des FPUs, notamment celles des superordinateurs, sont susceptibles d'offrir des fonctions avancées :

inverse (1/x),
racine carrée,
logarithmes,
fonctions transcendantales (sin x, cos x, etc.),
opération vectorielle (produit scalaire, vectoriel, etc.),
etc.
Un processeur fait appel à plusieurs UAL, au moins deux : une située dans le chemin de contrôle pour incrémenter le registre de programme (de 1, 2, 4 ou 8 typiquement), et une autre dans le chemin de données pour traiter l'information. Pour augmenter leurs performances, elles sont le plus souvent pipelinées.


Notation

Une UAL est schématisée comme sur la figure ci-contre.


Une UAL à deux entréesCelle-ci possède deux entrées A et B sur lesquelles on présentera les données à traiter. L'entrée F désignera l'opération à effectuer. Enfin, celle-ci possède deux sorties, R qui sera le résultat de l'opération, et D les drapeaux qui indiqueront soit qu'il y a eu erreur (division par zéro, dépassement de capacité etc.), soit des codes conditions (supérieur, inférieur, égal à zéro etc.).Au milieu de ce schéma,l'opérateur est marqué(par exemple l'opérateur +,x,...).





















Lire la suite : http://fr.wikipedia.org/wiki/Unit%C3%A9_arithm%C3%A9tique_et_logique









samedi 3 février 2007

Definition

Processeur
Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, Rechercher

Le processeur, (ou CPU, Central Processing Unit, « Unité centrale de traitement » en français) est le composant essentiel d'un ordinateur qui interprète les instructions et traite les données d'un programme.
La vitesse de traitement d'un processeur est encore parfois exprimée en MIPS (million d'instructions par seconde) ou en MégaFlops (millions de floating-point operations per second) pour la partie virgule flottante, dite FPU (Floating Point Unit). 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.
C'est le processeur qui apporte aux ordinateurs leur capacité fondamentale à être programmés, c'est un des composants nécessaires au fonctionnement de tous les types d'ordinateurs, associés aux mémoires primaires et aux dispositifs d'entrée/sortie. Un processeur construit en un seul circuit intégré est communément nommé microprocesseur, à l'inverse, certains fabricants ont développé des processeurs en tranches, dans ce cas les fonctions élémentaires (ALU, FPU, Séquenceur...) sont réparties dans plusieurs circuits intégrés spécialisés. L'invention du transistor en 1947 a ouvert la voie de la miniaturisation des composants électroniques et le terme d'unité centrale (CPU) est utilisé dans l'industrie électronique dès le début des années 1960 (Weik 1961). Depuis le milieu des années 1970, la complexité et la puissance des microprocesseurs n'a cessé d'augmenter au-delà de tous les autres types de processeurs au point qu'aujourd'hui les termes de processeur, microprocesseur ou CPU, s'utilisent de manière indifférenciée pour tous les types de processeurs.
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 des ordinateurs centraux (mainframes à transistors discrets et mini-ordinateurs) a connu une accélération rapide avec l'avènement des circuits intégrés. Les circuits intégrés ont permis la miniaturisation des processeurs dont les dimensions sont réduites à l'ordre de grandeur du millimètre. 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. On trouve les microprocesseurs modernes partout, de l'automobile aux téléphones portables, en passant par les jouets pour enfants.

Sommaire [masquer]
1 Histoire
2 Processeurs à transistors discrets ou à circuits intégrés
3 Microprocesseurs
4 Fonctionnement
4.1 Composition d'un processeur
4.2 Les opérations du processeur
5 Conception et implémentation
5.1 Le codage des nombres
5.2 Le signal d'horloge
5.3 Le surfréquençage (overclocking en anglais) ou comment augmenter les performances de son processeur
5.4 Parallélisme
5.4.1 ILP: Pipelining d'instructions et Architecture superscalaire
5.4.2 TLP: Exécution simultanée de programmes
6 Multiprocesseur
7 Voir aussi
7.1 Liens internes
7.2 Lien externe



Histoire
Avant l'arrivée des machines qui ressemblent aux unités centrales de traitement d'aujourd'hui, les ordinateurs tels que l'ENIAC devaient être physiquement recâblés avant d'exécuter chaque programme, c'est pour cette raison qu'on les a appelés « ordinateurs à un programme ». Puisque le terme « unité centrale de traitement » est généralement défini comme dispositif d'exécution de logiciel (programme machine), les premiers dispositifs que l'on pourrait appeler processeur sont arrivés avec les ordinateurs à programme enregistré.
L'idée d'un ordinateur à programme enregistré était déjà présente pendant la conception d'ENIAC, mais avait été volontairement écartée pour que la machine soit terminée plus tôt. Le 30 juin 1945, avant qu'ENIAC ait été achevé, le mathématicien John von Neumann a diffusé le document intitulé « première ébauche d'un rapport sur l'EDVAC. » Il a décrit la conception d'un ordinateur à programme enregistré qui sera par la suite complété en août 1949 (von Neumann 1945). EDVAC a été conçu pour exécuter un certain nombre d'instructions (ou opérations) de divers types. Ces instructions pouvaient être combinées pour créer des programmes utiles au fonctionnement de l'EDVAC. De manière significative, les programmes écrits pour EDVAC ont été stockés dans de la mémoire d'ordinateur à grande vitesse plutôt que définis par le câblage physique de l'ordinateur. Ceci a surmonté une limitation importante d'ENIAC, qui était la grande quantité de temps et d'effort qui étaient nécessaires pour modifier l'ordinateur en vue d'exécuter un nouveau programme. Avec la conception de von Neumann, le programme, ou le logiciel, qu'EDVAC exécutait pouvait être changé par simple modification du contenu de la mémoire d'ordinateur.
Tandis que von Neumann le plus souvent est crédité de la conception de l'ordinateur à programme enregistré en raison de sa conception d'EDVAC, d'autres avant lui tel que Konrad Zuse avaient suggéré des idées semblables. De plus, l'architecture de Harvard (Harvard Mark I), qui a été réalisée avant EDVAC, a également utilisé une conception à programme enregistré en utilisant le ruban perforé plutôt que la mémoire électronique. La différence principale entre les architectures von Neumann et Harvard est que la dernière sépare le stockage et le traitement des instructions et des données d'unité centrale de traitement, tandis que l'autre utilise le même espace mémoire pour les deux. La plupart des unités centrales de traitement modernes sont principalement von Neumann dans la conception, mais des éléments de l'architecture de Harvard y sont généralement ajoutés.
Comme tous les dispositifs numériques, les processeurs traitent des états discrets et requièrent donc des éléments de commutation pour différencier et changer ces états. Avant l'acceptation commerciale du transistor, les relais électromécaniques et les tubes électroniques étaient utilisés généralement comme éléments de commutation. Bien que ceux-ci présentent des avantages certains de vitesse sur les précédents, de conception purement mécanique, ils étaient peu fiables pour différentes raisons. Par exemple, réaliser des circuits de logique séquentielle à courant continu avec des relais impose du matériel additionnel pour régler le problème du rebond de contact. Tandis que les tubes à vide ne souffrent pas du rebond de contact, ils doivent être préchauffés avant de devenir complètement opérationnels et par la suite peuvent cesser de fonctionner brutalement. Régulièrement, quand un tube tombe en panne il faut procéder à un diagnostic de l'unité centrale de traitement en localisant et en remplaçant l'élément défaillant. Par conséquent, les ordinateurs électroniques plus récents (utilisant des tubes à vide) étaient généralement plus rapides mais moins fiables que les anciens (utilisant des relais) ordinateurs électromécaniques. Les ordinateurs à tubes comme EDVAC fonctionnaient en moyenne huit heures entre les pannes, tandis que les ordinateurs à relais (plus lents mais arrivés plus tôt) d'architecture Harvard ne tombaient en panne que très rarement (Weik 1961:238). En fin de compte, les unités centrales de traitement à tubes ont supplanté les autres pace que leurs avantages significatifs de vitesse ont été prépondérants par rapport aux problèmes de fiabilité. La plupart de ces premières unités centrales de traitement synchrones ont fonctionné à de basses fréquences de base comparées aux conceptions microélectroniques modernes. Les fréquences de signal d'horloge s'étendant de 100 kilohertz à 4 mégahertz étaient très communes à l'époque, limitées en grande partie par la vitesse des dispositifs de commutation qu'elles utilisaient.


Processeurs à transistors discrets ou à circuits intégrés
La complexité de conception des unités centrales de traitement s'est accrue lorsque que diverses technologies ont facilité la construction de dispositifs électroniques plus petits et plus fiables. La première de ces améliorations est venue avec l'avènement du transistor. Les processeurs transistorisés des années 1950 et des années 1960 n'ont plus besoin de faire appel à des éléments de commutation encombrants, peu fiables et fragiles comme les tubes à vide et les relais électromécaniques. Avec cette amélioration, des unités centrales de traitement plus complexes et plus fiables ont été construites sur une ou plusieurs cartes de circuit imprimé contenant des composants discrets (individuels). Au cours de cette période, une nouvelle méthode de fabrication a vu le jour, permettant de grouper un grand nombre de transistors sur une surface réduite de matériau semi-conducteur, le circuit intégré (IC) était né.
Au tout début, des circuits numériques non spécialisés, tels que les portes NOR, ont été miniaturisés dans des circuits intégrés. Les unités centrales de traitement basées sur ces modules élémentaires sont généralement appelés dispositifs à faible intégration (SSI, pour Small Scale Integration). Les circuits intégrés SSI, comme ceux utilisés dans l'ordinateur de guidage de la station spatiale Apollo, ne comptent généralement qu'une dizaine de transistors. Construire une unité centrale de traitement entièrement en circuits SSI nécessite des milliers de circuits intégrés individuels, mais consomme toujours beaucoup moins d'espace et de puissance que les montages à transistors discrets précédents. Pendant que la technologie microélectronique avançait, un nombre croissant de transistors ont été intégrés dans les circuits, de ce fait diminuant le nombre de circuits individuels nécessaires pour une unité centrale de traitement complète.
L'échelle d'intégration définit le nombre de portes par boîtier :

SSI (small scale integration) petite : inférieur à 12
MSI (medium scale integration) moyenne : 12 à 99
LSI (large scale integration) grande : 100 à 9999
VLSI (very large scale integration) très grande : 10 000 à 99 999
ULSI (ultra large scale integration) ultra grande : 100 000 et plus
Ces distinctions ont peu à peu perdu de leur utilité avec la croissance exponentielle du nombre de portes. Aujourd'hui plusieurs centaines de millions de transistors (plusieurs dizaines de millions de portes) représentent un chiffre normal (pour un microprocesseur ou un circuit intégré graphique haut de gamme).
En 1964 IBM a présenté son architecture d'ordinateur System/360, qui a été employée dans une série d'ordinateurs qui pouvaient exécuter les mêmes programmes à différentes vitesses et performances. C'était significatif à un moment où la plupart des ordinateurs étaient incompatibles entre eux, même ceux construits par le même fabricant. Pour développer cette avancée, IBM mis au point le concept de microprogramme (souvent appelé « microcode »), dont l'utilisation est encore fréquente dans des unités centrales de traitement modernes. L'architecture System/360 était si populaire qu'elle a dominé le marché des ordinateurs centraux pendant plusieurs décennies laissant un héritage encore utilisé par des ordinateurs modernes comme les zSeries d'IBM. Au cours de la même année (1964), Digital Equipment Corporation (DEC) a présenté un autre ordinateur déterminant destiné au marché des ordinateurs scientifiques et de recherche, le PDP-8. DEC lancera plus tard la famille très populaire des PDP-11 qui fut à l'origine basée sur des circuits intégrés SSI puis finalement dotée de circuits LSI dès que ceux-ci furent disponibles. Contrastant avec ses prédécesseurs SSI et MSI, la première implémentation en LSI du PDP-11 comportait une unité centrale de traitement à seulement quatre circuits intégrés.
Les ordinateurs à transistors avaient plusieurs avantages certains par rapport à leurs prédécesseurs. Hormis la meilleure fiabilité et la moindre consommation d'énergie, les transistors ont permis aux processeurs de fonctionner à des vitesses beaucoup plus élevées car les temps de commutation des transistors sont beaucoup plus courts que ceux des tubes et des relais. Grâce à ces deux avancées, la fréquence d'horloge des processeurs s'est accrue considérablement pour atteindre plusieurs gigahertz. Alors que les processeurs à transistors et à circuits intégrés étaient d'usage courant, de nouveaux concepts d'architecture à haute performance comme les processeurs vectoriels et le SIMD (Simple Instruction Multiple Data - données multiples instruction simple) commencèrent à apparaître et ouvrirent la voie au développement des supercalculateurs spécialisés comme ceux qui furent réalisés par la société Cray.


Microprocesseurs
Intel 80486DX2 microprocesseur en boîtier céramique PGAL'introduction du microprocesseur dans les années 1970 a marqué de manière significative la conception et l'implémentation des unités centrales de traitement. Depuis l'introduction du premier microprocesseur (Intel 4004) en 1970 et du premier microprocesseur employé couramment (Intel 8080) en 1974, 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 et miniordinateurs) de l'époque ont lancés leurs propres programmes de développement de circuits 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 la compatibilité ascendante avec leurs anciens modèles. Les générations précédentes des unités centrales de traitement comportaient un assemblage de composants discrets et de nombreux circuits faiblement intégrés sur une ou plusieurs cartes électroniques. Les microprocesseurs sont construits avec très petit nombre de circuits très fortement intégrés (ULSI); habituellement un seul. Les microprocesseurs sont implémentés sur une seule puce électronique, donc de dimensions réduites, ce qui veut dire des temps de commutation plus courts liés à des facteurs physiques comme par exemple la diminution de la capacité parasite des portes. Ceci a permis aux microprocesseurs synchrones d'augmenter leur fréquence de base de quelques dizaines de mégahertz à plusieurs gigahertz. De plus, à mesure que la capacité de fabriquer des transistors extrêmement petits sur un circuit intégré a augmenté, la complexité et le nombre de transistors dans un seul processeur a considérablement augmenté. Cette tendance largement observée est décrite par la loi de Moore, 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é).
Les processeurs récents comportent maintenant plusieurs cœurs (multicores) 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. En se basant sur les tendances des 10 dernières années, les performances des processeurs devraient atteindre le Pétaflop, vers 2010 pour les serveurs, et à l'horizon 2030 dans les PC.
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, il est à noter que 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 comme machines à programme enregistré de von Neumann. Alors que la loi du Moore, mentionnée ci-dessus, continue à être vérifée, 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étallique 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 l'usage du calcul parallèle, et d'autre part, d'autres méthodes d'utilisation du modèle classique de von Neumann.


Lire la suite : http://fr.wikipedia.org/wiki/Processeur

vendredi 2 février 2007

Introduction

Présentation
Le processeur (CPU, pour Central Processing Unit, soit Unité Centrale de Traitement) est le cerveau de l'ordinateur. Il permet de manipuler des informations numériques, c'est-à-dire des informations codées sous forme binaire, et d'exécuter les instructions stockées en mémoire.
Le premier microprocesseur (Intel 4004) a été inventé en 1971. Il s'agissait d'une unité de calcul de 4 bits, cadencé à 108 kHz. Depuis, la puissance des microprocesseurs augmente exponentiellement. Quels sont donc ces petits morceaux de silicium qui dirigent nos ordinateurs?

Fonctionnement
Le processeur (noté CPU, pour Central Processing Unit) est un circuit électronique cadencé au rythme d'une horloge interne, grâce à un cristal de quartz qui, soumis à un courant électrique, envoie des impulsions, appelées « top ». La fréquence d'horloge (appelée également cycle, correspondant au nombre d'impulsions par seconde, s'exprime en Hertz (Hz). Ainsi, un ordinateur à 200 MHz possède une horloge envoyant 200 000 000 de battements par seconde. La fréquence d'horloge est généralement un multiple de la fréquence du système (FSB, Front-Side Bus), c'est-à-dire un multiple de la fréquence de la carte mère
A chaque top d'horloge le processeur exécute une action, correspondant à une instruction ou une partie d'instruction. L'indicateur appelé CPI (Cycles Par Instruction) permet de représenter le nombre moyen de cycles d’horloge nécessaire à l’exécution d’une instruction sur un microprocesseur. La puissance du processeur peut ainsi être caractérisée par le nombre d'instructions qu'il est capable de traiter par seconde. L'unité utilisée est le MIPS (Millions d'Instructions Par Seconde) correspondant à la fréquence du processeur que divise le CPI.

Instruction
Une instruction est l'opération élémentaire que le processeur peut accomplir. Les instructions sont stockées dans la mémoire principale, en vue d'être traitée par le processeur. Une instruction est composée de deux champs :
le code opération, représentant l'action que le processeur doit accomplir ;
le code opérande, définissant les paramètres de l'action. Le code opérande dépend de l'opération. Il peut s'agir d'une donnée ou bien d'une adresse mémoire.
Code opération
Champ opérande
Le nombre d'octets d'une instruction est variable selon le type de donnée (l'ordre de grandeur est de 1 à 4 octets).
Les instructions peuvent être classées en catégories dont les principales sont :
Accès à la mémoire : des accès à la mémoire ou transferts de données entre registres.
Opérations arithmétiques : opérations telles que les additions, soustractions, divisions ou multiplication.
Opérations logiques : opérations ET, OU, NON, NON exclusif, etc.
Contrôle : contrôles de séquence, branchements conditionnels, etc.

Registres
Lorsque le processeur exécute des instructions, les données sont temporairement stockées dans de petites mémoires rapides de 8, 16, 32 ou 64 bits que l'on appelle registres. Suivant le type de processeur le nombre global de registres peut varier d'une dizaine à plusieurs centaines.
Les registres principaux sont :
le registre accumulateur (ACC), stockant les résultats des opérations arithmétiques et logiques ;
le registre d'état (PSW, Processor Status Word), permettant de stocker des indicateurs sur l'état du système (retenue, dépassement, etc.) ;
le registre instruction (RI), contenant l'instruction en cours de traitement ;
le compteur ordinal (CO ou PC pour Program Counter), contenant l'adresse de la prochaine instruction à traiter ;
le registre tampon, stockant temporairement une donnée provenant de la mémoire.

Mémoire cache
La mémoire cache (également appelée antémémoire ou mémoire tampon) est une mémoire rapide permettant de réduire les délais d'attente des informations stockées en mémoire vive. En effet, la mémoire centrale de l'ordinateur possède une vitesse bien moins importante que le processeur. Il existe néanmoins des mémoires beaucoup plus rapides, mais dont le coût est très élevé. La solution consiste donc à inclure ce type de mémoire rapide à proximité du processeur et d'y stocker temporairement les principales données devant être traitées par le processeur. Les ordinateurs récents possèdent plusieurs niveaux de mémoire cache :
La mémoire cache de premier niveau (appelée L1 Cache, pour Level 1 Cache) est directement intégrée dans le processeur. Elle se subdivise en 2 parties :
La première est le cache d'instructions, qui contient les instructions issues de la mémoire vive décodées lors de passage dans les pipelines.
La seconde est le cache de données, qui contient des données issues de la mémoire vive et les données récement utilisées lors des opérations du processeur. Les caches du premier niveau sont très rapides d'accés. Leur délai d'accès tend à s'approcher de celui des registres internes aux processeurs.
La mémoire cache de second niveau (appelée L2 Cache, pour Level 2 Cache) est située au niveau du boîtier contenant le processeur (dans la puce). Le cache de second niveau vient s'intercaler entre le processeur avec son cache interne et la mémoire vive. Il est plus rapide d'accès que cette dernière mais moins rapide que le cache de premier niveau.
La mémoire cache de troisième niveau (appelée L3 Cache, pour Level 3 Cache) est située au niveau de la carte mère. Tous ces niveaux de cache permettent de réduire les temps de latence des différentes mémoires lors du traitement et du transfert des informations. Pendant que le processeur travaille, le contrôleur de cache de premier niveau peut s'interfacer avec celui de second niveau pour faire des transferts d'informations sans bloquer le processeur. De même, le cache de second niveau est interfacé avec celui de la mémoire vive (cache de troisième niveau), pour permettre des transferts sans bloquer le fonctionnement normal du processeur.

Signaux de commande
Les signaux de commande sont des signaux électriques permettant d'orchestrer les différentes unités du processeur participant à l'exécution d'une instruction. Les signaux de commandes sont distribués grâce à un élément appelé séquenceur. Le signal Read / Write, en français lecture / écriture, permet par exemple de signaler à la mémoire que le processeur désire lire ou écrire une information.

Unités fonctionnelles
Le processeur est constitué d'un ensemble d'unités fonctionnelles reliées entre elles. L'architecture d'un microprocesseur est très variable d'une architecture à une autre, cependant les principaux éléments d'un microprocesseur sont les suivants :
Une unité d'instruction (ou unité de commande, en anglais control unit) qui lit les données arrivant, les décode puis les envoie à l'unité d'exécution ; L'unité d'instruction est notamment constituée des éléments suivants :
séquenceur (ou bloc logique de commande) chargé de synchroniser l'exécution des instructions au rythme d'une horloge. Il est ainsi chargé de l'envoi des signaux de commande ;
compteur ordinal contenant l'adresse de l'instruction en cours ;
registre d'instruction contenant l'instruction suivante.
Une unité d'exécution (ou unité de traitement), qui accomplit les tâches que lui a données l'unité d'instruction. L'unité d'exécution est notamment composée des éléments suivants :
L'unité arithmétique et logique (notée UAL ou en anglais ALU pour Arithmetical and Logical Unit). L'UAL assure les fonctions basiques de calcul arithmétique et les opérations logiques (ET, OU, Ou exclusif, etc.) ;
L'unité de virgule flottante (notée FPU, pour Floating Point Unit), qui accomplit les calculs complexes non entiers que ne peut réaliser l'unité arithmétique et logique.
Le registre d'état ;
Le registre accumulateur.
Une unité de gestion des bus (ou unité d'entrées-sorties), qui gère les flux d'informations entrant et sortant, en interface avec la mémoire vive du système ;
Le schéma ci-dessous donne une représentation simplifiée des éléments constituant le processeur (l'organisation physique des éléments ne correspond pas à la réalité) :

Transistor
Pour effectuer le traitement de l'information, le microprocesseur possède un ensemble d'instructions, appelé « jeu d'instructions », réalisées grâce à des circuits électroniques. Plus exactement, le jeu d'instructions est réalisé à l'aide de semiconducteurs, « petits interrupteurs » utilisant l'effet transistor, découvert en 1947 par John Barden, Walter H. Brattain et William Shockley qui reçurent le prix Nobel en 1956 pour cette découverte.
Un transistor (contraction de transfer resistor, en français résistance de transfert) est un composant électronique semi-conducteur, possédant trois électrodes, capable de modifier le courant qui le traverse à l'aide d'une de ses électrodes (appelée électrode de commande). On parle ainsi de «composant actif», par opposition aux « composants passifs », tels que la résistance ou le condensateur, ne possédant que deux électrodes (on parle de « bipolaire »).
Le transistor MOS (métal, oxyde, silicium) est le type de transistor majoritairement utilisé pour la conception de circuits intégrés. Le transistor MOS est composé de deux zones chargées négativement, appelées respectivement source (possédant un potentiel quasi-nul) et drain (possédant un potentiel de 5V), séparées par une région chargée positivement, appelée substrat (en anglais substrate). Le substrat est surmonté d'une électrode de commande, appelée porte (en anglais gate, parfois également appelée grille), permettant d'appliquer une tension sur le substrat.

Lorsqu'aucune tension n'est appliquée à l'électrode de commande, le substrat chargé positivement agit telle une barrière et empêche les électrons d'aller de la source vers le drain. En revanche, lorsqu'une tension est appliquée à la porte, les charges positives du substrat sont repoussées et il s'établit un canal de communication, chargé négativement, reliant la source au drain.

Le transistor agit donc globalement comme un interrupteur programmable grâce à l'électrode de commande. Lorsqu'une tension est appliquée à l'électrode de commande, il agit comme un interrupteur fermé, dans le cas contraire comme un interrupteur ouvert.

Circuits intégrés
Assemblés, les transistors peuvent constituer des circuits logiques, qui, assemblés à leur tour, constituent des processeurs. Le premier circuit intégré date de 1958 et a été mis au point par la société Texas Instruments.
Les transistors MOS sont ainsi réalisés dans des tranches de silicium (appelées wafer, traduisez gaufres), obtenues après des traitements successifs. Ces tranches de silicium sont alors découpées en éléments rectangulaires, constituant ce que l'on appelle un « circuit ». Les circuits sont ensuite placés dans des boîtiers comportant des connecteurs d'entrée-sortie, le tout constituant un « circuit intégré ». La finesse de la gravure, exprimée en microns (micromètres, notés µm), définit le nombre de transistors par unité de surface. Il peut ainsi exister jusqu'à plusieurs millions de transistors sur un seul processeur.
La loi de Moore, édictée en 1965 par Gordon E. Moore, cofondateur de la société Intel, prévoyait que les performances des processeurs (par extension le nombre de transistors intégrés sur silicium) doubleraient tous les 12 mois. Cette loi a été révisée en 1975, portant le nombre de mois à 18. La loi de Moore se vérifie encore aujourd'hui.
Dans la mesure où le boîtier rectangulaire possède des broches d'entrée-sortie ressemblant à des pattes, le terme de « puce électronique » est couramment employé pour désigner les circuits intégrés.

Familles
Chaque type de processeur possède son propre jeu d'instruction. On distingue ainsi les familles de processeurs suivants, possédant chacun un jeu d'instruction qui leur est propre :
80x86 : le « x » représente la famille. On parle ainsi de 386, 486, 586, 686, etc.
ARM
IA-64
MIPS
Motorola 6800
PowerPC
SPARC
...
Cela explique qu'un programme réalisé pour un type de processeur ne puisse fonctionner directement sur un système possédant un autre type de processeur, à moins d'une traduction des instructions, appelée émulation. Le terme « émulateur » est utilisé pour désigner le programme réalisant cette traduction.

Jeu d'instruction
On appelle jeu d’instructions l’ensemble des opérations élémentaires qu'un processeur peut accomplir. Le jeu d'instruction d'un processeur détermine ainsi son architecture, sachant qu'une même architecture peut aboutir à des implémentations différentes selon les constructeurs.
Le processeur travaille effectivement grâce à un nombre limité de fonctions, directement câblées sur les circuits électroniques. La plupart des opérations peuvent être réalisé à l'aide de fonctions basiques. Certaines architectures incluent néanmoins des fonctions évoluées courante dans le processeur.

Architecture CISC
L'architecture CISC (Complex Instruction Set Computer, soit « ordinateur à jeu d'instruction complexe ») consiste à câbler dans le processeur des instructions complexes, difficiles à créer à partir des instructions de base.
L'architecture CISC est utilisée en particulier par les processeurs de type 80x86. Ce type d'architecture possède un coût élevé dû aux fonctions évoluées imprimées sur le silicium.
D'autre part, les instructions sont de longueurs variables et peuvent parfois nécessiter plus d'un cycle d'horloge. Or, un processeur basé sur l'architecture CISC ne peut traîter qu'une instruction à la fois, d'où un temps d'exécution conséquent.

Architecture RISC
Un processeur utilisant la technologie RISC (Reduced Instruction Set Computer, soit « ordinateur à jeu d'instructions réduit ») n'a pas de fonctions évoluées câblées.
Les programmes doivent ainsi être traduits en instructions simples, ce qui entraîne un développement plus difficile et/ou un compilateur plus puissant. Une telle architecture possède un coût de fabrication réduit par rapport aux processeurs CISC. De plus, les instructions, simples par nature, sont exécutées en un seul cycle d'horloge, ce qui rend l'exécution des programmes plus rapide qu'avec des processeurs basés sur une architecture CISC. Enfin, de tels processeurs sont capables de traîter plusieurs instructions simultanément en les traitant en parallèle.

Améliorations technologiques
Au cours des années, les constructeurs de microprocesseurs (appelés fondeurs), ont mis au point un certain nombre d'améliorations permettant d'optimiser le fonctionnement du processeur.

Le parallélisme
Le parallélisme consiste à exécuter simultanément, sur des processeurs différents, des instructions relatives à un même programme. Cela se traduit par le découpage d'un programme en plusieurs processus traités en parallèle afin de gagner en temps d'exécution.
Ce type de technologie nécessite toutefois une synchronisation et une communication entre les différents processus, à la manière du découpage des tâches dans une entreprise : le travail est divisé en petits processus distincts, traités par des services différents. Le fonctionnement d'une telle entreprise peut être très perturbé lorsque la communication entre les services ne fonctionne pas correctement.

Le pipeline
Le pipeline (ou pipelining) est une technologie visant à permettre une plus grande vitesse d'exécution des instructions en parallélisant des étapes.
Pour comprendre le mécanisme du pipeline, il est nécessaire au préalable de comprendre les phases d'exécution d'une instruction. Les phases d'exécution d'une instruction pour un processeur contenant un pipeline « classique » à 5 étages sont les suivantes :
LI : (Lecture de l'Instruction (en anglais FETCH instruction) depuis le cache ;
DI : Décodage de l'Instruction (DECODe instruction) et recherche des opérandes (Registre ou valeurs immédiate);
EX : Exécution de l'Instruction (EXECute instruction) (si ADD, on fait la somme, si SUB, on fait la soustraction, etc.);
MEM : Accès mémoire (MEMory access), écriture dans la mémoire si nécéssaire ou chargement depuis la mémoire ;
ER : Ecriture (Write instruction) de la valeur calculée dans les registres.
Les instructions sont organisées en file d'attente dans la mémoire, et sont chargées les unes après les autres.
Grâce au pipeline, le traitement des instructions nécessite au maximum les cinq étapes précédentes. Dans la mesure où l'ordre de ces étapes est invariable (LI, DI, EX, MEM et ER), il est possible de créer dans le processeur un certain nombre de circuits spécialisés pour chacune de ces phases.
L'objectif du pipeline est d'être capable de réaliser chaque étape en parallèle avec les étapes amont et aval, c'est-à-dire de pouvoir lire une instruction (LI) lorsque la précédente est en cours de décodage (DI), que celle d'avant est en cours d'exécution (EX), que celle située encore précédemment accède à la mémoire (MEM) et enfin que la première de la série est déjè en cours d'écriture dans les registres (ER).

Il faut compter en général 1 à 2 cycles d'horloge (rarement plus) pour chaque phase du pipeline, soit 10 cycles d'horloge maximum par instruction. Pour deux instructions, 12 cycles d'horloge maximum seront nécessaires (10+2=12 au lieu de 10*2=20), car la précédente instruction était déjà dans le pipeline. Les deux instructions sont donc en traitement dans le processeur, avec un décalage d'un ou deux cycles d'horloge). Pour 3 instructions, 14 cycles d'horloge seront ainsi nécessaires, etc.
Le principe du pipeline est ainsi comparable avec une chaîne de production de voitures. La voiture passe d'un poste de travail à un autre en suivant la chaîne de montage et sort complètement assemblée à la sortie du bâtiment. Pour bien comprendre le principe, il est nécessaire de regarder la chaîne dans son ensemble, et non pas véhicule par véhicule. Il faut ainsi 3 heures pour faire une voiture, mais pourtant une voiture est produite toute les minutes !
Il faut noter toutefois qu'il existe différents types de pipelines, de 2 à 40 étages, mais le principe reste le même.

Technologie superscalaire
La technologie superscalaire (en anglais superscaling) consiste à disposer plusieurs unités de traitement en parallèle afin de pouvoir traiter plusieurs instructions par cycle.

HyperThreading
La technologie HyperThreading (ou Hyper-Threading, noté HT, traduisez HyperFlots ou HyperFlux) consiste à définir deux processeurs logiques au sein d'un processeur physique. Ainsi, le système reconnaît deux processeurs physiques et se comporte en système multitâche en envoyant deux thréads simultanés, on parle alors de SMT (Simultaneous Multi Threading). Cette « supercherie » permet d'utiliser au mieux les ressources du processeur en garantissant que des données lui sont envoyées en masse.

Ce document intitulé « Ordinateur - Le processeur » issu de l'encyclopédie informatique Comment Ça Marche (http://www.commentcamarche.net/) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.