Support de cours architecture des ordinateurs, tutoriel & guide de travaux pratiques architecture des ordinateurs en pdf.
Les composantes de l’ordinateur
Le modele de Von Neumann
Definition 1 L’ordinateur est une machine ´electronique, qui traite l’information dans une unite centrale (UC, ou CPU pour Central Processing Unit), selon un programme qui est enregistré en memoire. Les donn´ees fournies en entr´ee par un organe d’entr´ee (par exemple de type clavier) sont trait´ees par l’unit´e centrale en fonction du programme pour d´elivrer les r´esultats en sortie, via un organe de sortie (par exemple un ´ecran).
Cette d´efinition tr`es g´en´erale est r´esum´ee dans la fig. 2.1. Elle implique de d´efinir ce que sont l’information et le traitement. L’information est num´eris´ee, c’est `a dire limit´ee `a des valeurs discr`etes, en l’occurence binaires ; les d´etails du codage binaire de l’information sont trait´es au chapitre suivant. Par ailleurs, la d´efinition implique que le comportement d’un programme qui ne fait pas d’entr´ees-sorties ne peut ˆetre sp´ecifi´.
Le traitement suit le mod`ele d’ex´ecution de Von Neumann.
• La m´emoire contient les instructions et les donn´ees.
• La m´emoire est form´ee d’un ensemble de mots de longueur fixe, chaque mot con-tenant une information cod´ee en binaire. Chaque mot de la m´emoire est accessible par l’interm´ediaire de l’adresse m´emoire. Le temps d’acc`es `a un mot est le mˆeme quelle que soit la place du mot en m´emoire : ce type d’acc`es est appel´ al´eatoire, et les m´emoires sont appel´ees RAM (random access memory).
• Les instructions sont ex´ecut´ees en s´equence. Le CPU conserve l’adresse de la pro-chaine instruction a` ex´ecuter dans un registre, appel´ PC (Program Counter) ; pour chaque instruction, le CPU effectue les actions suivantes :
– lire l’instruction a l’adresse PC et incr´ementer PC ;
– ex´ecuter l’instruction.
Le premier ordinateur a et´ la machine ENIAC, construite `a l’universit´ de Pennsyl-vannie (Moore School) pendant la seconde guerre mondiale, par les ing´enieurs J. P. Eckert et J. Mauchly. Elle avait et´ command´ee par l’arm´ee am´ericaine pour le calcul des ta-bles de tir pour l’artillerie. L’ENIAC a et´ la premi`ere machine programmable, c’est `a dire dont la s´equence d’op´erations n’´etait pas pr´ed´efinie, contrairement `a un automate du type caisse enregisteuse. Mais la nouveaut´ radicale de cette approche n’´etait pas compl`etement per¸cue, ce dont t´emoigne le nom de la machine : ENIAC signifie Electronic Numerical Integrator And Calculator. C’est le math´ematicien John Von Neuman, int´egr´ en 1944 au projet ENIAC, qui formalisa les concepts pr´esents dans ce premier ordinateur, et les d´eveloppa sous le nom de projet EDVAC : Electronic Discrete Variable Automatic Computer. La cr´eation d’un nouveau terme, Computer et non Calculator, correspond a` une rupture th´eorique fondamentale. Comme cela se reproduira souvent dans l’histoire de l’informatique, ce progr`es th´eorique majeur aboutit dans le tr`es court terme `a un semi-´echec pratique : l’´equipe se dispersa, et l’EDVAC ne fut op´erationnel qu’en 1952. Von Neumann contribua a` la construction d’une machine prototype universitaire a` Princeton, L’IAS. Eckert et J. Mauchly fond`erent une entreprise qui r´ealisa le premier ordinateur commercial, l’UNIVAC-1, dont 48 exemplaires furent vendus. On trouvera un r´esum´ de l’´evolution des calculateurs et des ordinateurs dans [4].
La r´ealisation de l’organisation abstraite de la fig. 2.1 a fortement vari´e depuis l’origine des ordinateurs. La fig. 2.2 d´ecrit l’organisation mat´erielle typique d’un ordinateur mono-processeur (ie avec un seul CPU). Les composants mat´eriels ne recoupent pas exactement l’organisation abstraite : la m´emoire est r´ealis´ee par un ensemble de composants mat´eriels, depuis un circuit int´egr´es dans le composant processeur (cache L1), jusqu’aux disques. Les disques appartiennent au domaine des entr´ees-sorties par leur gestion, et en tant que sup-port des syst`emes de fichiers, mais aussi `a la hi´erarchie m´emoire, car ils contiennent une partie des donn´ees et des instructions adressables par le processeur. Les entr´ees-sorties incluent des interfaces, qui sont elles-mˆemes des processeurs programmables.
Les faits technologiques
L’´evolution des architectures repose sur la loi de Moore :
D´efinition 2 Le nombre de transistors dans un circuit double approximativement tous les 18 mois.
Cette ´evolution exponentielle de la capcit´e de calcul est accompagn´e d’une augmentation, ´egalement exponentielle, de la fr´equence de fonctionnement, qui est multipli´ee par un facteur 1,24 tous les ans (fig. 2.3).
La loi de Moore est tr`es souvent incorrectement interpr´et´ee comme un doublement des performances tous les 18 mois, ce qui n’est pas exact : on verra plus loin que la performance progresse exponentiellement, mais moins vite.
La loi de Moore est reli´ee `a deux ph´enom`enes : d’une part l’augmentation de la densit´ d’int´egration, c’est `a dire du nombre de transistors int´egrables par unit´e de surface, d’autre part, l’augmentation de la taille des circuits int´egr´es. Elle traduit globalement le nombre d’op´erateurs mat´eriels, et donc de fonctionnalit´es, qui peuvent ˆetre int´egr´ees dans un processeur. Le produit du nombre d’op´erateurs par la fr´equence d’activation traduit donc le nombre d’op´erations potentiellement disponibles par seconde.
L’unité centrale
Pour ex´ecuter un programme, l’unit´e centrale appelle les instructions depuis la m´emoire, et les donn´ees que traitent ces instructions. En effet, dans l’´etat actuel de la technologie, le CPU ne peut travailler que sur des informations physiquement stock´ees ”pr`es” des organes de calcul qu’elle contient.
L’unit´e centrale se d´ecompose en une partie op´erative, ou chemin de donn´ees et une partie contrˆole (fig. 2.4).
Le chemin de donn´ees est organis´e autour d’une unit´e arithm´etique et logique (UAL) et d’op´erateurs arithm´etiques flottants qui effectuent les op´erations sur les donn´ees. Les
op´erandes, initialement lus en m´emoire, et les r´esultats des op´erations, sont stock´es dans des organes de m´emorisations internes au CPU, les registres. Certains de ces registres sont visibles : leur nom (ou leur num´ero) est pr´esent dans l’instruction, et le programmeur en langage machine peut d´ecider quel registre lire ou ´ecrire ; par exemple, l’instruction ADD R1, R2, R3 nomme les trois registres R1, R2 et R3. D’autres registres ne sont pas visibles, et servent `a des besoins de stockage temporaire. Le chemin de donn´ees d´etermine les deux caract´eristiques fondamentales d’une unit´e centrale, le temps de cycle et la largeur du chemin de donn´ees.
• Le temps de cycle Tc est essentiellement le temps d’une op´eration de l’UAL ; l’inverse du temps de cycle est la fr´equence ; si l’unit´e de temps de cycle est la seconde, l’unit´e de fr´equence est le Hertz. Par exemple, un processeur cadenc´ `a 500MHz a un temps
de cycle de = 2ns = 2 × 10−9s.
• La largeur du chemin de donn´ees est la taille de l’information trait´ee par la par-tie op´erative. Les premiers microprocesseurs ´etaient des 8 bits, les processeurs g´en´eralistes actuels sont 32 ou 64 bits, le processeur de la Playstation 2 est un 128 bits.
On a mentionn´ ci-dessus ”l’instruction ADD R1, R2, R3”, alors que les instruc-tions sont des mots binaires. En fait, le codage binaire des instructions n’´etant pas tr`es pratique pour l’utilisateur humain, les instructions peuvent ˆetre d´ecrites par un langage rudimentaire, le langage d’assemblage. Celui-ci comporte des mn´emoniques, qui d´ecrivent l’op´eration, et une description des op´erandes. C’est aussi le langage qu’utilise un pro-grammeur humain. Le langage d’assemblage n’a aucune r´ealit´ au niveau de la machine
; la traduction en binaire est r´ealis´ee par un utilitaire, l’assembleur. La correspondance entre instruction binaire et langage d’assemblage est tr`es el´ementaire, du type ”traduc-tion mot-a`-mot” (contrairement `a la compilation). Le codage est si imm´ediat qu’il est r´eversible : les debogueurs (dbx, gdb) contiennent des d´esassembleurs, qui effectuent le codage inverse, du binaire vers le langage d’assemblage. Dans la suite, on utilisera un langage d’assemblage g´en´erique, o`u les registres seront not´es R0 `a R31, et la syntaxe est du type dest-source, par exemple
ADD R1, R2, R3 ; une instruction d’addition signifie R1 ← R2 + R3 , le ”;” signalant le d´ebut d’un commentaire.
La partie contrˆole effectue le s´equencement des diff´erentes instructions en fonction des r´esultats des op´erations et actionne les circuits logiques de base pour r´ealiser les transferts et traitements de donn´ees. Elle contrˆole ´egalement la synchronisation avec les autres composants.
A cheval entre le chemin de donn´ees et la partie contrˆole, on trouve deux registres sp´ecialis´es : le compteur de programme PC, dont on a d´ej`a parl´e, et le registre instruction RI. Comme les autres informations, l’instruction ne peut ˆetre trait´ee par le CPU que si elle y est physiquement pr´esente. La lecture de l’instruction consiste donc `a copier l’instruction depuis la m´emoire vers le registre RI. Comme le registre RI peut contenir une constante op´erande, il appartient au chemin de donn´ees ; comme il contient l’instruction, que la partie contrˆole d´ecode pour activer les circuits logiques qui ex´ecutent l’instruction, il appartient aussi a` la partie contrˆole. PC contrˆole la lecture de l’instruction, mais il peut aussi ˆetre modifi´e par les instructions qui r´ealisent des branchements.
La memoire
Les m´emoires contiennent le programme (instructions et donn´ees). Les informations m´emoris´ees sont rep´er´ees par une adresse. On distingue les m´emoires `a acc`es al´eatoires (RAM) r´ealis´ees avec des technologies semiconducteurs, et les m´emoires secondaires, r´ealis´ees essentiellement avec des supports magn´etiques.
Les principes de fonctionnement des m´emoires secondaires, comme les disques et les disquettes, seront pr´esent´es dans le chapitre sur les Entr´ees-Sorties. La caract´eristique importante est un temps d’acc`es tr`es grand par rapport aux temps de cycle de l’UC : pour les disques, il se chiffre en dizaines de µs.
1 Introduction
2 Les composantes de l’ordinateur
2.1 Le modele de Von Neumann
2.2 Les faits technologiques
2.3 L’unite centrale
2.4 La memoire
2.5 Performances
3 Repr´esentation de l’information
3.1 L’information
3.2 Representation des caracteres
3.3 Repr´esentation des entiers
3.4 Nombres reels
3.5 Placement m´emoire
4 Architecture logicielle du processeur
4.1 Modele d’execution
4.2 Format des instructions
4.3 Langage de haut niveau et langage machine
4.4 Instructions arithmetiques et logiques
4.5 Instructions d’acces memoire
4.6 Instructions de comparaison
4.7 Instructions de saut et de branchement
4.8 Sous-programmes
Fonctionnalites
Appel et retour de sous-programme
Passage des parametres
Pile d’execution
Sauvegarde du contexte
Etude de cas
Edition de liens et chargement d’un programme
Quelques utilitaires
………