Вы находитесь на странице: 1из 107

Architecture de lordinateur

notes de cours (document de travail)


PolytechIG3

Christophe Fiorio

Table des matires


1 Un 1.1 1.2 1.3 1.4 1.5 1.6 peu dhistoire... Fondations de linformatique . . . . . . . . . . . XIXe sicle : apparition de calculateurs . . . . . . XXe sicle : naissance de lordinateur . . . . . . . Deuxime gnrations : les transistors . . . . . . Troisime gnration : les circuits intgrs . . . . Quatrime gnration : les ordinateurs personnels 1 1 2 2 4 5 5 7 9 9 11 11 13 14 15 15 16 19 19 20 21 22 25 26 26 27

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

2 Principe de fonctionnement 2.1 Mmoire centrale . . . . . . . 2.2 Unit centrale de traitement . 2.3 Entre-Sortie . . . . . . . . . 2.4 Utilisation et programmation

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3 Reprsentation de linformation : les donnes 3.1 Donnes non numriques . . . . . . . . . . . . . 3.2 Nombres entiers . . . . . . . . . . . . . . . . . . 3.2.1 entiers non signs . . . . . . . . . . . . . 3.2.2 entiers ngatifs . . . . . . . . . . . . . . 3.3 Nombres ottants . . . . . . . . . . . . . . . . . 3.3.1 gnralits . . . . . . . . . . . . . . . . . 3.3.2 codage de la mantisse et de lexposant : 3.3.3 standard IEEE 754 . . . . . . . . . . . . 3.3.4 notes sur la prcision informatique . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

4 Algbre de Boole 4.1 fonctions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 thormes fondamentaux de lalgbre de Boole . . . . . . . . . . . 4.3 autre fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Table des matires

5 Reprsentation de linformation : les instructions 5.1 Oprations . . . . . . . . . . . . . . . . . . . . . . 5.2 Oprandes . . . . . . . . . . . . . . . . . . . . . . . 5.3 Codage des instructions . . . . . . . . . . . . . . . 5.4 Langage MIPS . . . . . . . . . . . . . . . . . . . . 5.4.1 instruction arithmtiques de base . . . . . . 5.4.2 tests et boucles . . . . . . . . . . . . . . . . 5.4.3 procdures . . . . . . . . . . . . . . . . . . 5.4.4 adressage . . . . . . . . . . . . . . . . . . . 6 Circuits logiques combinatoires 6.1 Circuits logiques . . . . . . . . . . . . . . . . 6.1.1 portes . . . . . . . . . . . . . . . . . . 6.1.2 multiplexeurs . . . . . . . . . . . . . . 6.1.3 dcodeurs, codeurs, transcodeurs . . . 6.2 Synthse et analyse dun circuit combinatoire 6.3 Horloge . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

29 31 31 32 33 33 34 35 37 41 41 41 42 43 44 45 47 47 48 49 50 50 51 51 52 53 54 56 59 60 60 61 67 67 72 77 77 79

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

7 Mmoires 7.1 Introduction . . . . . . . . . . . . . . . . . . . . 7.2 Organisation des informations . . . . . . . . . . 7.3 Ordonnancement des octets . . . . . . . . . . . 7.4 Organisation physique . . . . . . . . . . . . . . 7.4.1 bascule RS . . . . . . . . . . . . . . . . 7.4.2 bascules D et ip-op . . . . . . . . . . 7.4.3 registres . . . . . . . . . . . . . . . . . . 7.4.4 Mmoire de forte capacit . . . . . . . . 7.5 Types de mmoires . . . . . . . . . . . . . . . . 7.5.1 DRAM utilises sur les PC notamment 7.5.2 Mmoires caches . . . . . . . . . . . . . 8 Unit arithmtique et logique (ual) 8.1 UAL pour laddition et la soustraction 8.1.1 UAL 1 bit . . . . . . . . . . . . 8.1.2 UAL 32 bits . . . . . . . . . . . 8.2 Multiplications et divisions entires . . 8.2.1 Multiplications . . . . . . . . . 8.2.2 Divisions . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

9 Unit centrale de traitement (cpu) 9.1 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Unit de commande . . . . . . . . . . . . . . . . . . . . . . . . . .

Table des matires

9.3 9.4

9.5

9.2.1 cycle de recherche . . . . . . . . . . . . 9.2.2 cycle dexcution . . . . . . . . . . . . . 9.2.3 synchronisation des oprations . . . . . Squenceur . . . . . . . . . . . . . . . . . . . . Exemple de micro-machine . . . . . . . . . . . 9.4.1 chemin de donnes . . . . . . . . . . . . 9.4.2 micro-instructions . . . . . . . . . . . . 9.4.3 cycle dexcution de la micro-instruction 9.4.4 squence des micro-instructions . . . . . Exemple de micro-programme . . . . . . . . . . 9.5.1 langage . . . . . . . . . . . . . . . . . . 9.5.2 micro-programme . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

81 81 81 82 83 83 85 87 88 89 89 90 93 93 93 93 93 93 95 95 95 95 95 95 95 95 97 97 97 97 97 99 99 99

10 Hirarchie 10.1 Introduction . . . . . . . . . . . 10.2 Structure commune toutes les 10.3 Caches . . . . . . . . . . . . . . 10.4 Mmoire virtuelle : principes . 10.5 Illusion et piges . . . . . . . .

. . . . . . . hirarchies . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

11 Entre-sortie 11.1 Dirents dispositifs . . . . . . . . . . . . . . 11.2 Connexion E/S au processeur et la mmoire 11.3 Architecture . . . . . . . . . . . . . . . . . . . 11.3.1 accs direct la mmoire (dma) . . . 11.3.2 canaux dE/S . . . . . . . . . . . . . . 11.3.3 controleurs . . . . . . . . . . . . . . . 11.4 Interruptions . . . . . . . . . . . . . . . . . . 12 Amlioration des performances et 12.1 La retenue Anticipe dans lUAL 12.2 Technique du pipeline . . . . . . 12.3 Mmoire cache . . . . . . . . . . 12.4 Mmoire virtuelle . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

des capacits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

13 Exploitation de la machine 13.1 Dveloppement de programmes . . . . . . . . . . . . . . . . . . . . 13.2 Introduction aux systmes dexploitation . . . . . . . . . . . . . . .

Table des matires

Le but de ce cours est dexpliquer un peu ce qui se passe sous le capot dun ordinateur. On prsentera dabord lorganisation interne dun ordinateur. On montrera, comment laide du courant lectrique, on peut coder linformation et eectuer des calculs. On dtaillera ensuite les principaux composants et en particulier lunit centrale de contrle (CPU). On montrera comment une meilleure organisation interne peur amliorer les performances en prsentant notamment la technique du pipeline. Enn on abordera (si on a le temps) le problme de lexploitation de la machine. Mais dans un premier temps examinons comment on en est arriv l...

Chapitre 1

Un peu dhistoire...
Sommaire
1.1 1.2 1.3 1.4 1.5 1.6 Fondations de linformatique . . . . . . . . . . . . . . XIXe sicle : apparition de calculateurs . . . . . . . XXe sicle : naissance de lordinateur . . . . . . . . Deuxime gnrations : les transistors . . . . . . . . Troisime gnration : les circuits intgrs . . . . . Quatrime gnration : les ordinateurs personnels . . . . . . . . . . . . 1 2 2 4 5 5

Lordinateur est n du besoin de calculer, de calculer toujours plus et toujours plus vite. Ds que les moyens techniques lont permis, lHomme a essay dautomatiser le calcul. Mais avant den arriver la premire machine calculer, puis lordinateur, il a fallu que certaines bases, certains concepts soient dvelopps.

1.1

Fondations de linformatique

Depuis longtemps lHomme sait compter et ce bien avant lre chrtienne, les chinois, par exemple, utilisaient des bouliers pour calculer. Mais les mthodes utilises (base 5, 10, 20 pour ceux comptant sur leurs doigts, 12, 14, 15, 24, 30 et 60 pour les asiatiques qui utilisaient aussi les articulations et les phalanges, chires romains) taient loin de permettre une avance vers lautomatisation. Un premier pas est fait avec la dcouverte du zro par les indiens et les arabes quelques sicles aprs Jsus-Christ, zro qui fait son apparition en Europe en 820 ap. JC. Il faudra attendre le XIe sicle pour voir adopter les chires arabes en Europe. Enn au XVIIe sicle, le dveloppement des mathmatiques en tant que science ouvre la voie des systmes de calcul plus rapide et plus automatique.

Un peu dhistoire...

En 1614, le mathmaticien cossais Neper prsente sa thorie des logarithmes permettant de transformer des multiplications en additions. Cette thorie amnera la ralisation de la rgle de calcul, premier outil de calcul pratique et ecace et qui resta longtemps utilis. En 1642, Pascal prsente la Pascaline, premire machine calculer mcanique base sur un principe de roues dentes. Cette machine pouvait additionner et soustraire des nombres de six chires et prenait en compte les retenues ! En 1673, Leibniz, mathmaticien de gnie, amliore la machine de Pascal en y ajoutant un mcanisme permettant dautomatiser lexcution rptitive dadditions et de soustraction. La premire machine calculer autorisant les 4 oprations arithmtiques tait ne. Il inventa galement le systme binaire sous sa forme moderne bas sur les deux chires 0 et 1 et montra la puissance et la simplicit de larithmtique binaire, systme utilis par les ordinateurs actuels.

1.2

XIXe sicle : apparition de calculateurs

Au cours du XVIIIe sicle, le mtier tisser est invent, puis perfectionn par Jacquard par lapport du systme de cartes perfores (systme des orgues de certains manges). Au milieu du XIXe sicle Charles Babbage fait le rapprochement entre les machines calculer et le systme de commandes automatique de Jacquard. Le concept de la premire machine calculer programmable est n. Il est dailleurs considr comme le pre de lordinateur. Mais il se heurtera des problmes techniques dans la ralisation de sa Machine Analytique et malgr laide dAda Augusta, lle du clbre pote anglais Lord Byron, qui crira les premiers programmes de lhistoire de linformatique, il ne put jamais aller au bout de son projet. En 1854, George Boole, conoit un systme de logique symbolique, appele algbre boolenne. Ce systme appliqu larithmtique binaire permettra la conception de lordinateur lectronique. En 1890, Hollerith construit un calculateur statistique fonctionnant avec des cartes perfores. Ce calculateur servira au recensement de la population amricaine et bien que la population ait augment de prs de 25% par rapport au dernier recensement les rsultats complets seront publis deux ans et demi aprs, soit trois fois plus rapidement que la prcdente fois. Il fonda la Tabulating Machine Company charg de fabriquer des systmes de cartes perfores.

1.3

XXe sicle : naissance de lordinateur

Les machines cartes perfores continuent se dvelopper et en 1924, la TMC de Hollerith devient lInternational Business Machine, autrement dit IBM.

1.3 XXe sicle : naissance de lordinateur

Au dbut du vingtime sicle des avances fondamentales importantes vont inuencer le dveloppement de lordinateur. Ainsi Shannon prouva que les chires binaires conviennent pour les relations logiques et que tous les calculs logiques et arithmtiques pouvant tre raliss laide des trois oprations logiques de base : ET, OU et NON. Turing nonce le principe dune machine universelle, la Machine de Turing qui est la base de sa thorie des nombres calculables. En 1939 et 1944 IBM construit une machine lectromcanique, MARK I, capable de multiplier deux nombres de 23 chires dcimaux en 6 secondes. Cette machine conu sur la base du systme dcimal et compose de milliers de roulement billes et 760 000 pices lectromcaniques est conceptuellement dpasse. En eet vers la n des annes trente, suite aux travaux de Shannon et Turing, les chercheurs arrivent la conclusion que la logique boolenne pouvait tre employe ecacement dans la conception des calculateurs. Ainsi en 1938 Zuse fabrique un calculateur binaire universel avec 2600 relais de tlphone. Le projet initial prvoyait de construire un calculateur lectronique laide de 1500 tubes vides mais il avait t jug irralisable par le gouvernement allemand. En 1945, lENIAC (Electronical Numerical Integrator And Calculator), machine universelle, programmable, numrique, base sur le systme dcimal et entirement lectronique est construite. Cette machine de 30 tonnes et 18 000 tubes, multipliant deux nombres de 10 chires en 3 millisecondes et consommant 140KW, dispose de 20 registres de 10 chires dcimaux et se programme laide de 6 000 commutateurs. Elle sonne le glas des machines lectromcaniques. Le dfaut de lENIAC est que les programmes taient cbls donc dicilement modiables. galement en 1945, John von Neumann conoit une abstraction du systme de commande. Son modle, la Machine de von Neumann est le premier concept dordinateur. Elle possde les caractristiques suivantes : machine universelle contrle par programme ; instructions du programme codes sous forme numrique binaire et enregistres en mmoire ; instruction excutes normalement en squence mais pouvant tre modies par le programme lui-mme ; existence dinstructions permettant les ruptures de squences. En 1949, lEDSAC, machine base sur les principes de von Neuman est construite et constitue donc le premier calculateur lectronique haute performance stockant donnes et programme dans sa mmoire centrale. Il dcrit galement les cinq composants essentiels de sa machine. Cet architecture, connue sous le nom dArchitecture de von Neumann (voir Figure 1.1) est toujours celle sur laquelle est base la conception des ordinateurs modernes. Ces 5 composants sont : lunit arithmtique et logique (UAL) ; lunit de commande ; la mmoire centrale ;

Un peu dhistoire...

Unit de commande Mmoire Unit arithmtique et logique


accumulateur

Entre Sortie

Fig. 1.1 Architecture de Von Neumann (IAS)


Ordinateur

Unit de contrle Mmoire Unit arithmtique et logique Unit centrale de traitement

Entres

Sorties

Fig. 1.2 Cinq composants classiques dun ordinateur lunit dentre ; lunit de sortie. En 1952 lIAS, conue par Von Neumann lui-mme est la premire machine adoptant larchitecture de Von Neumann (voir Figure 1.2).

1.4

Deuxime gnrations : les transistors

En 1948 la dcouverte par les laboratoires Bell du transistor permet lapparition en 1960 dune deuxime gnration dordinateur o les tubes sont remplac par des transistors augmentant ainsi considrablement la abilit, tout en rduisant lencombrement. DEC fabrique et commercialise en 1961 le PDP-1, une machine de 4K mots de 18 bits avec un temps de cycle de 5s. Cette machine, moiti moins performante que lIBM 7070 ne cote que 120 000$ contre plusieurs millions pour le 7070. Elle fut vendue des dizaines dexemplaires et donna naissance lindustrie de la mini-informatique. En 1965, DEC lance le PDP-8 qui introduit la notion de bus unique : ensemble de lignes parallles utilises pour interconnecter les dirents

1.5 Troisime gnration : les circuits intgrs

composants.

1.5

Troisime gnration : les circuits intgrs

Ensuite, apparaissent les circuits intgrs qui amnent ds 1965 la troisime gnration dordinateur. LIBM 360, premire machine comportant des circuits intgrs, innove alors en introduisant la multi-programmation qui permet plusieurs programmes de rsider simultanment en mmoire. Le principe est simple, ds quun programme est en attente dune entre-sortie, lunit de commande poursuit lexcution dun autre programme. LIBM 360 avait un espace dadressage de 224 octets (16 Mo) qui paraissait norme, voire inni, lpoque. Cette limitation posa des problmes IBM au milieu des annes 80. On ne leur en tiendra pas compte lorsque lon on voit encore aujourdhui des ordinateurs limit un espace dadressage de 232 octets (4 Go), limite qui sera srement dpasse dans peu de temps.

1.6

Quatrime gnration : les ordinateurs personnels

En 80 lintgration toujours plus grande permet des puces contenant des centaines de milliers de transistor (VLSI). Cest la quatrime gnration. Apparaissent aussi des units de priphriques de grande capacits, les imprimantes laser, les crans couleurs et surtout la naissance des communications inter-ordinateur et donc des rseaux. Limportance majeure de lordinateur dans notre socits et les progrs considrables quil a permis ont donn naissance une nouvelle discipline : linformatique. Cette discipline concerne tout aussi la conception, lexploitation et lvolution de lordinateur. Lacadmie franaise en a donn en 1965 cette dnition : Linformatique est la science du traitement rationnel de linformation, considre comme le support des connaissances dans les domaines scientiques, conomiques et sociaux, notamment laide de machines automatiques. La Figure 1.3 essaie de schmatiser lhistoire de linformatique.

Un peu dhistoire...

logique mathmatique XVII e

machine arithmtique mcanique

automate

Pascal (1642) Leibniz Leibniz(1673) Jacquard

XVIII

XIXe Boole(1854) XX e

Babbage (1834) Hollerith Turing Shannon binaire lectromcanique Zuse (38) Mark I (44) von Neumann ENIAC (45) dcimal lectronique

EDSAC (49) IAS (52) 1er mini : PDP-1 (61) bus de communication : PDP-8 (65) multi-programmation : 360 (65) micro-informatique ???

Fig. 1.3 histoire de linformatique

Chapitre 2

Principe de fonctionnement
Sommaire
2.1 2.2 2.3 2.4 Mmoire centrale . . . . . . . Unit centrale de traitement . Entre-Sortie . . . . . . . . . . Utilisation et programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 11 11

Comme il a dj t dit dans le chapitre prcdent, un ordinateur comporte cinq lments de base (voir Figure 1.1) : la mmoire centrale qui contient les donnes et les programmes excuter ; lunit centrale de traitement (compose de lunit de contrle et lunit arithmtique et logique) qui excute les programmes chargs en mmoire ; les units dentre/sortie qui permette le lien et lchange dinformation avec les priphriques (clavier, cran, souris, imprimante, ...). Un ordinateur traite uniquement des donnes numriques, de plus il est compos de circuits lectriques ne pouvant grer que deux types seulement de signaux, correspondant aux deux valeurs 0 et 1. On montrera par la suite comment laide de tels circuits logiques on peut coder linformation et la traiter, et notamment comment faire des oprations arithmtiques. La gure 2.1 nous montre les interactions entre les cinq composants de lordinateur. Suivant ce schma, lexcution dun programme se droule de la manire suivante : chargement du programme et des donnes depuis un priphrique dans la mmoire centrale ; chargement squentiel des instructions du programme de la mmoire centrale dans lunit de contrle ; analyse par lunit de contrle de linstruction et passage lUAL pour traitement ;

Principe de fonctionnement

units dentre/sortie unit centrale de traitement unit de contrle ou ou unit de commande ... registres mmoire centrale ou principale

unit arithmtique et logique ou unit de traitement ou unit de calcul

priphriques

Fig. 2.1 Schma gnral de lordinateur

traitement de linstruction par lUAL avec ventuellement appel la mmoire ou aux units dentre/sortie. On peut voir travers ce schma que lunit centrale de traitement ne peut travailler sans change avec la mmoire centrale ou les units dentre/sortie. Le grand apport de larchitecture de von Neumann a t de faire tenir en mmoire centrale les donnes et les programmes, augmentant ainsi considrablement les possibilits de traitement, mais aussi la vitesse dexcution. On remarquera tout de mme que, quelque soit la puissance et la rapidit de calcul du CPU, celui est ralenti par les changes avec la mmoire ou avec les units dentre/sortie. Von Neumann lavait dailleurs dj fait remarquer. On verra plus tard que les principales techniques doptimisation de larchitecture des ordinateurs consiste essayer dacclrer ces changes.

2.1 Mmoire centrale

2.1

Mmoire centrale

La mmoire est lendroit o sont stocks les programmes et les donnes traits par lordinateur. Toutes ces donnes sont stockes sous forme de bits qui constituent lunit lmentaire dinformation. Un bit ne peut prendre que 2 valeurs : 0 ou 1. Comment peut-on alors coder des nombres, des caractres, des instructions qui sont tous en nombre suprieur 2 ? On verra cela en dtail au chapitre 3, mais le principe est le suivant : il sut dutiliser plusieurs bits pour coder une information. Par exemple on utilise 8 bits pour coder un caractre, ce qui laisse la possibilit de coder 28 , soit 256 caractres. Cette unit logique de 8 bits constitue ce quon appelle un octet. Cela a t pendant longtemps lunit logique daccs la mmoire. En fait la mmoire est constitue de cellules qui est lunit daccs de base. Chaque cellule correspond un mot mmoire. La longueur de ce mot constitue une caractristique importante de larchitecture dun ordinateur, en particulier de lunit centrale. En fait, cest non seulement lunit daccs de base la mmoire, cest dire quon lit ou crit un mot en mmoire, chaque mot ayant sa propre adresse (sa position dans la mmoire), mais cest aussi lunit de base de traitement. Ainsi lorsquon parle dordinateur 8, 16, 32 ou 64 bits, cela signie que le mot mmoire a une taille de 8, 16, 32 ou 64 bits. On peut voir tout de suite lintrt davoir des mots mmoire dune plus grande taille : on pourra coder dans lunit de base (le mot) plus dinformations et notamment traiter en une seule fois plus de donnes. Un inconvnient est quune donne lmentaire tel quun entier sera cod sur un mot et donc occupera dautant plus de place en mmoire que la taille du mot sera grande. Ce sera galement le cas des instructions de lordinateur. Il est, de plus, plus dicile de concevoir et dintgrer une puce traitant des plus grands mots. La capacit de la mmoire se mesure en octets qui reste lunit dadressage et de comptage de base bien que lon devrait plutt parler en terme de mots. Attention le systme utilis est lgrement dirent du systme dcimal (voir table ci-dessous), par exemple le kilo valant 1000 units dans le systme dcimal vaut 1024 pour les octets, cela vient du systme binaire o la base utilise est la base 2. 1K 1M 1G 1T (Kilo) (M e ga) (Giga) (T era) = = = = 210 220 230 240 = = = = 1 0241 1 0242 1 0243 1 0244 = 1 024 = 1 048 576 = 1 073 741 824 = 1 099 511 627 776 octets octets octets octets

2.2

Unit centrale de traitement

Lunit centrale de traitement reprsente le cur dun ordinateur. Elle est compose de lUnit Arithmtique et Logique (UAL), de lUnit de commande et

10

Principe de fonctionnement

de contrle, et de registres. Les registres sont des cellules mmoires particulires ayant une fonction bien dtermine. Ils jouent le rle de variables du processeur (par abus de langage on dira souvent processeur pour unit centrale de traitement). Il y a quatre registres principaux : le compteur ordinal (CO) qui contient ladresse de la prochaine instruction excuter ; le registre dinstruction (RI) qui contient linstruction en cours dexcution ; le pointeur de pile (SP) indiquant la position courante dans la pile ; le registre dtat (PSW) qui permet, comme son nom lindique, dindiquer ltat du systme : retenue lors dune opration, dpassement de capacit, etc... ces registres principaux se rajoutent des registres arithmtiques servant aux oprations arithmtiques ; registres de base et dindex pour le calcul dadresses ; registres banaliss servant surtout aux stockage de rsultats intermdiaires (variables). Lunit de commande se charge de prendre les instructions en mmoire, de les dcoder et de les passer lUAL. Cette unit contient un squenceur qui active les circuits ncessaires de lUAL. Il est command par les signaux dune horloge externe lunit de commande. Enn lUAL se charge de raliser eectivement les oprations dsires, ces oprations tant principalement des oprations arithmtiques et logiques. Lexcution dune instruction par lunit de commande passe donc par les tapes suivantes : 1. chargement de la prochaine instruction excuter depuis la mmoire jusque dans le registre dinstruction, 2. modication du compteur ordinal, 3. dcodage de linstruction que lon vient de charger, 4. localisation dans la mmoire des ventuelles donnes utilises par linstruction, 5. chargement des donnes dans les registres internes de lunit centrale, 6. excution de linstruction, 7. stockage des rsultats, 8. retour ltape 1. On remarquera que lexcution dune instruction par lunit centrale sexprime la manire dun algorithme. Le cycle chargement-dcodage-excution dune instruction na donc pas tre obligatoirement cbl cest dire excut pour une UC matrielle. On pourrait trs bien concevoir un programme qui excuterait ce cycle. Un tel programme, dont la fonction est de charger, dcoder et excuter les instructions dun autre programme est appel interprteur. Un processeur

2.3 Entre-Sortie

11

peut donc tre remplac par un tel interprteur. Ceci est un point important car on verra que larchitecture des UC modernes a volu : une couche a t rajoute, appele niveau de micro-programmation, permettant ainsi davoir des langages dinstruction complexes mais traits par un programme en micro-instruction dune UC beaucoup plus simple concevoir, et donc fabriquer.

2.3

Entre-Sortie

Un ordinateur a besoin dchanger de linformation avec lenvironnement extrieur. Ainsi il lui faut par exemple charger le programme et les donnes avec lesquels il va travailler, mais aussi communiquer avec lutilisateur, visualiser des rsultats, ... Ces changes dinformation sont regroups sous le terme gnrique dentre-sortie. Les units dentre/sortie, ou units dchange permettent dchanger de linformation entre lunit centrale, la mmoire et les priphriques : DMA (Direct Memory Acces), bus, ... Sous le terme gnrique bus, on regroupe lensemble des lignes de liaison qui assurent les communications entre les dirents composants de lordinateur. En fait on distingue trois sortes de bus : le bus dadresses charg deectuer le transport des adresses du processeur vers la mmoire ; le bus de donnes (bidirectionnel) eectuant le transport des donnes entre le processeur, la mmoire ou les units dentre/sortie ; le bus de contrle destin transporter linformation ncessaire au bon droulement de la communication entre les dirents lments, et tout ce qui ne passe pas par les deux bus prcdents. Le DMA est un processeur spcialis qui assure une ligne de communication privilgie entre les priphrique et la mmoire permettant ainsi dviter le passage par le processeur et donc de ne pas ralentir la machine. En eet plus on sloigne du processeur, plus les vitesses de transfert sont lentes. Les priphriques tant dj nettement plus lent que la mmoire centrale (de lordre de 100 000 fois) qui elle-mme est beaucoup plus lente que lunit centrale.

2.4

Utilisation et programmation

Pour utiliser un ordinateur il faut pouvoir lui faire excuter des programmes. Du point de vue utilisateur, on appelle ces programmes des applications, celleci utilisent les ressources de lordinateur an dexcuter la tche pour laquelle elles ont t conues. Mais il faut bien galement un programme pour grer ces ressources et les partager entre les direntes applications. Ce programme particulier, gnralement livr avec la machine, sappelle un systme dexploitation. Il est

12

Principe de fonctionnement

spcique une architecture et, en plus de grer les ressources, il facilite la tche des programmeurs en leur fournissant une srie de fonctions daccs au ressources de lordinateur. Tous ces programmes ont t programms ! Programmer signie crire une suite dinstructions que devra excuter lordinateur. Ces programmes sont crits dans des langages (de programmation) tels que ADA, C, Prolog, C++, ... En fait ces instructions sont incomprhensibles pour lordinateur parce quelle sont symboliques (et non pas codes en bits) et en plus de trop haut niveau. Une opration simple telle que affiche(3) consiste coder 3 en une srie de bit, placer cette valeur en mmoire et lenvoyer lcran, ces oprations se dcomposant elles-mmes en une srie dinstructions machines (instructions de base codes en binaire et comprhensible directement par le processeur). Coder un programme en binaire est une tche fastidieuse et lourde. Cest pourquoi trs vite sont apparus les langages dassemblage qui utilisent des symboles et des mnmoniques pour coder les instructions machines. Avec les langages dassemblage sont apparu les assembleurs, programmes chargs de la traduction. La mme dmarche a t applique aux langages dassemblage et les langages dits volus sont apparus, et avec eux les compilateurs chargs de traduire le langage volu en langage dassemblage. Nous allons maintenant voir comment est reprsente linformation dans un ordinateur, puis nous prsenterons un langage dassemblage. Par la suite on reprendra en dtail la prsentation des dirents composants de lordinateur en commenant par les circuits logique de base.

Chapitre 3

Reprsentation de linformation : les donnes


Sommaire
3.1 3.2 Donnes non numriques . . . . . . . . . . . . Nombres entiers . . . . . . . . . . . . . . . . . 3.2.1 entiers non signs . . . . . . . . . . . . . . . . 3.2.2 entiers ngatifs . . . . . . . . . . . . . . . . . 3.3 Nombres ottants . . . . . . . . . . . . . . . . 3.3.1 gnralits . . . . . . . . . . . . . . . . . . . . 3.3.2 codage de la mantisse et de lexposant : . . . 3.3.3 standard IEEE 754 . . . . . . . . . . . . . . . 3.3.4 notes sur la prcision informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 15 15 16 19 19 20 21 22

Comme nous lavons dj dit au chapitre 1, les travaux de Shannon et Turing ont sonn le glas des machines bases sur la base du systme dcimal. Dsormais les informations traites par lordinateur sont toujours reprsentes en mmoire sous forme de bits. Un bit ne pouvant coder que deux valeurs, plusieurs bits seront donc ncessaires pour reprsenter des informations telles que des nombres ou des caractres. Il va donc falloir dnir des codages, cest dire des fonctions tablissant une correspondance entre la reprsentation externe (un caractre par exemple) et la reprsentation interne (un ensemble de bits). En mmoire sont cods deux types dinformation, les instructions et les donnes. Les donnes leur tour peuvent tre de deux types : numriques et nonnumriques. Le code des instructions est dpendant du processeur et cest lunit de contrle qui est charg du dcodage. Nous verrons au chapitre 5 et au chapitre 9 comment

14

Reprsentation de linformation : les donnes

0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120

: : : : : : : : : : : : : : : :

nul 1 : soh 2 : stx 3 : etx bs 9 : ht 10 : nl 11 : vt dle 17 : dc1 18 : dc2 19 : dc3 can 25 : em 26 : sub 27 : esc sp 33 : ! 34 : " 35 : # ( 41 : ) 42 : * 43 : + 0 49 : 1 50 : 2 51 : 3 8 57 : 9 58 : : 59 : ; @ 65 : A 66 : B 67 : C H 73 : I 74 : J 75 : K P 81 : Q 82 : R 83 : S X 89 : Y 90 : Z 91 : [ 97 : a 98 : b 99 : c h 105 : i 106 : j 107 : k p 113 : q 114 : r 115 : s x 121 : y 122 : z 123 : {

4 12 20 28 36 44 52 60 68 76 84 92 100 108 116 124

: : : : : : : : : : : : : : : :

eot np dc4 fs $ , 4 < D L T d l t |

5 13 21 29 37 45 53 61 69 77 85 93 101 109 117 125

: : : : : : : : : : : : : : : :

enq cr nak gs % 5 = E M U ] e m u }

6 14 22 30 38 46 54 62 70 78 86 94 102 110 118 126

: : : : : : : : : : : : : : : :

ack so syn rs & . 6 > F N V f n v

7 15 23 31 39 47 55 63 71 79 87 95 103 111 119 127

: : : : : : : : : : : : : : : :

bel si etb us / 7 ? G O W _ g o w del

Tab. 3.1 table des caractres ASCII peuvent tre codes des instructions et comment lunit de contrle les dcode. Le codage des donnes numriques doit galement faciliter la mise en place de circuits ralisant les oprations arithmtiques. Nous montrerons dans le chapitre 8 comment ces oprations sont implantes. Mais auparavant nous prsenterons dans ce chapitre comment sont cods les entiers (section 3.2) et les rels (section 3.3) ainsi que la ralisation des oprations arithmtiques grce lalgbre de Boole. Mais commenons par le plus simple, les donnes non numriques. En eet, puisquaucune opration ne sera applique sur ces donnes, une simple table de correspondance sut.

3.1

Donnes non numriques

An de faciliter les changes entre machines, des codages normaliss ont t tablis, le plus connu tant lASCII American Standard Code for Information Interchange). Cest un code sur 7 bits, ce qui laisse la possibilit de coder 128 caractres. En fait parmis ces 128 valeurs, 32 seront rserves des caractres de contrle tel que, par exemple le retour la ligne (code 13). On remarquera notamment dans la table 3.1 que les caractres accentus sont absents. En fait lutilisation du `me bits est libre. On pourra lutiliser comme code dtecteur derreur (controle 8e de parit1 ) ou pour coder 127 autres caractres, cest ce quon appelle lASCII tendu. LASCII tendu nest pas normalis cest pourquoi lon peut rencontrer des problmes lors dchange de chiers comportant des caractres accentus (entre
1

paire ou impair suivant le nombre de bits 1 dans le code

3.2 Nombres entiers

15

Mac et PC par exemple).

3.2
3.2.1

Nombres entiers
entiers non signs

La fonction de codage est ici direct puisquil sagira de la reprsentation binaire (en base 2) du nombre. En gnral tout entier sexprime dans une base b 2 de la faon suivante : x = an1 bn1 + an2 bn2 + ... + a1 b1 + a0 b0 Exemple 3.1 On veut dterminer la rprsentation du nombre 5402 en base 10 et en base 2 (binaire) : base 10 : 5402 = 5000 + 400 + 2 = 5 103 + 4 102 + 0 101 + 2 100 soit 5402 en base 10. base 2 : 5402 = 4096 + 1024 + 256 + 128 + 32 + 16 + 8 + 2 = 1.212 + 0.211 + 1.210 + 0.29 + 1.28 + 1.27 + 0.26 + 1.25 + 1.24 + 1.23 + 0.22 + 1.21 + 0.20 soit 1010110111010 en base 2. Pour convertir la reprsentation dun nombre dcimal (en base 10) en binaire, il sut dexcuter des divisions successives par 2 (voir exemple de la gure 3.1). Avec cette reprsentation, lentier maximal pouvant tre cod dpendra du nombre de bits que lon rserve pour coder un nombre. En gnral les entiers sont cods sur un mot, donc pour un ordinateur 32 bits, lentier maximal non sign aura une valeur de 232 1 = 4 294 967 295 alors que sur un ordinateur 16 bits la valeur maximal sera de 216 1 = 65 535. Addition de 2 nombres binaires sur un ordinateur Comme pour laddition dcimale, laddition binaire de 2 nombres est ralise en ajoutant successivement de droite gauche les chires de mme poids ainsi que la retenue ventuelle de laddition prcdente. Sur un ordinateur la taille des nombres et du rsultat est borne par la taille du mot mmoire de la machine. Pour un mot de n bits, la dernire retenue ou report (Carry ), reprsente le coecient 2n qui est synonyme de dpassement de capacit2 .
2

Ce dpassement de capacit correspondra un bit 1 dans le registre dtat

16

Reprsentation de linformation : les donnes

Quotient 335 / 2 = 167 / 2 = 83 = 41 = 20 = 10 = 5 = 2 = 1 /2 /2 /2 /2 /2 /2 /2


reste reste reste reste reste reste reste reste reste

1 1 1 1 0 0 1 0 1

335 =

Fig. 3.1 conversion dun nombre dcimal en binaire Exemple 3.2 Si on ralise laddition suivante : 222 + 199 on obtient : 1 11 1 10 11 11 11 1 0 + 1 1 0 0 0 1 1 1 (1) 1 0 1 0 0 1 0 1 soit 165 ! On remarquera le bit de retenue (en gras) plac 1. Si on inclue la retenue le nombre binaire devient 110100101 soit 421 qui est bien gale la somme de 222 et 199.

3.2.2

entiers ngatifs

Il existe plusieurs faons de reprsenter un nombre ngatif en machine. Nous allons voir quatre reprsentations, en montrant les avantages et les inconvnients de chacune.

valeur absolue signe Les nombres sont cods de manire naturelle : valeur absolue. On va alors sacrier un bit pour coder le signe, on utilisera gnralement 0 pour le signe + et 1 pour le signe . On pourra ainsi avec un mot de k bits coder les entiers positifs ou ngatifs n tels que : (2k1 1) n +(2k1 1). Ainsi le bit de poids n 1 indique le signe (0 positif, 1 ngatif). Les bits n 2...0 reprsente la valeur absolue en reprsentation binaire non signe (voir Figure 3.2).

3.2 Nombres entiers

17

non reprsentables

Entiers reprsentables

11111111 00000000 0 1 00000000 11111111 0 1 00000000 11111111 0 1 - infini


non reprsentables

-2 n-1 +1

1 0 0 1 0 1 0

000000000 111111111 0 1 00000000000000000 11111111111111111 000000000 111111111 0 1 000000000 111111111 0 1 + infini

non reprsentables n-1 +2 -1

Fig. 3.2 valeur absolue


Entiers reprsentables

11111111 00000000 0 1 00000000 11111111 0 1 00000000 11111111 0 1 - infini

-2 n-1 +1

1 0 0 1 0 1 0

000000000 111111111 0 1 00000000000000000 11111111111111111 000000000 111111111 0 1 000000000 111111111 0 1 + infini

non reprsentables n-1 +2 -1

Fig. 3.3 Complment 1 Les inconvnients de cette reprsentation sont les suivants : 2 reprsentations de 0 (+0 : 0000 0000 et 0 : 1000 0000) ; oprations arithmtiques peu aises car il faut grer spcialement le bit de signe (voir Exemple 3.4), sinon par exemple 00000011+10000011 3 + 3 = 6. On prfrera gnralement les codages par complmentation. complment 1 ou complment logique De mme que pour la reprsentation par valeur absolue, les entiers positifs sont cods sur n 1 bits, les ngatifs sont obtenus par complment 1. Ainsi le ngatif dun nombre positif est obtenu en remplaant tous les bits 1 par 0 et vice-versa. Dans cette reprsentation le bit de poids n 1 indique aussi le signe (0 positif, 1 ngatif), les autres bits codent la valeur absolue (voir Figure 3.3). Lavantage de cette reprsentation est quelle est symtrique (on code autant dentiers positifs que ngatifs). Par contre on se retrouve avec deux zros (+0 et 0). De plus la retenue gnre sur le bit de signe doit tre rcupre (voir Exemple 3.4).

complment 2 Pour viter davoir deux zros et de grer la retenue sur le bit de signe, les ordinateurs actuels utilise plutt la reprsentation par complment 2. Celle-ci est obtenue en ajoutant 1 au complment 1. Exemple 3.3 Calcul de 6 sur 4 bits en complment 2.

18

Reprsentation de linformation : les donnes

non reprsentables

Entiers reprsentables

11111111 00000000 0 1 00000000 11111111 0 1 00000000 11111111 0 1 - infini

-2 n-1

1 0 0 1 0 1 0

000000000 111111111 0 1 00000000000000000 11111111111111111 000000000 111111111 0 1 000000000 111111111 0 1 + infini

non reprsentables n-1 +2 -1

Fig. 3.4 complment 2 16 bits 216 = 65536 = 2 32768 valeurs possibles dcimal +32767 +32766 ... +1 +0 0 1 ... 32766 32767 32768 valeur absolue et signe 0111 . . . 1 . . . 1111 0111 . . . 1 . . . 1110 ... 0000 . . . 0 . . . 0001 0000 . . . 0 . . . 0000 1000 . . . 0 . . . 0000 1000 . . . 0 . . . 0001 ... 1111 . . . 1 . . . 1110 1111 . . . 1 . . . 1111 complment 1 0111 . . . 1 . . . 1111 0111 . . . 1 . . . 1110 ... 0000 . . . 0 . . . 0001 0000 . . . 0 . . . 0000 1111 . . . 1 . . . 1111 1111 . . . 1 . . . 1110 ... 1000 . . . 0 . . . 0001 1000 . . . 0 . . . 0000 complment 2 0111 . . . 1 . . . 1111 0111 . . . 1 . . . 1110 ... 0000 . . . 0 . . . 0001 0000 . . . 0 . . . 0000 1111 . . . 1 . . . 1111 ... 1000 . . . 0 . . . 0010 1000 . . . 0 . . . 0001 1000 . . . 0 . . . 0000

Tab. 3.2 reprsentation sur 16 bits dentiers signs 6 en reprsentation binaire : +6 = 0110 en complment 1 : 6 = 1001 en complment 2 : 6 = 1001 + 1 6 = 1010

Cette reprsentation vite le problme des 2 zros et laddition de 2 nombres se fait sans avoir grer le bit de retenue (voir Exemple 3.4). Par contre linterval des entiers ngatifs est plus grand que celui des positif (voir Figure 3.4)

conclusion On constate, Table 3.2, que lintervalle des entiers N que lon peut reprsenter est le mme pour le complment 1 que pour la valeur absolue. Par contre ces deux reprsentations possdent deux zros alors que la reprsentation en complment 2 nen a quun, mais code un ngatif de plus.

3.3 Nombres ottants

19

En fait cest la reprsentation en complment 2 qui est la plus utilise, voir quasiment la seule utilise dsormais. En eet linconvnient davoir une reprsentation non symtrique est mineur par rapport aux avantages de navoir quun zro (pas de problme de comparaison) et des oprations arithmtiques simplies. On remarquera ce sujet que les deux reprsentations complment nont pas besoin de coder la soustraction puisquil sut de la remplacer par laddition du complment. Le complment deux possdant lavantage supplmentaire de ne pas avoir grer la retenue : Exemple 3.4 Soustraction de nombre sur 4 bits : dcimal signe+val. comp. 1 comp. 2 absolue +7 0222 0111 0111 6 +1110 +1001 +1010 +1 ?101 10000 1 0001 (b) 10001 0001 (c)

(a)

la reprsentation (a) est la plus facile lire, mais le bit de signe doit tre trait part ; dans (b) on eectue laddition du complment, y compris le bit de signe, avec report de la retenue ; dans (c) on eectue une addition, y compris le bit de signe, mais on peut laisser tomber la retenue.

3.3

Nombres ottants

On appelle, dans un ordinateur, les nombres virgule des nombres ottants car la place de la virgule nest pas xe comme dans la reprsentation classique. Ainsi le nombre 236,43 pourra scrire par exemple 2364.3 101 , 236.43 100 , 0.23643 103 , ...

3.3.1

gnralits

En fait la reprsentation en virgule ottante consiste reprsenter les nombres sous la forme suivante :

20

Reprsentation de linformation : les donnes

n-1

+ signe exposant mantisse normalis

Fig. 3.5 reprsentation en mmoire des ottants N = M BE avec B M E = = = base (2, 8, 10, 16, ...) mantisse exposant

Lexposant est un entier, la mantisse un nombre virgule . Pour les nombres dcimaux, lorsque la partie entire de la mantisse est nulle et que le premier chire de la partie dcimale ne lest pas, la reprsentation est dite virgule ottante normalise. Pour les nombres binaires, la reprsentation est normalise lorsque la partie entire est 1. Dans lexemple prcdent seul le nombre 0.23643 103 est sous la forme normalise en base 10. Dans lordinateur les nombres sont cods sur un ou plusieurs mots, les tailles de la mantisse et de lexposant sont donc bornes. De plus il faut pouvoir reprsenter des nombres ngatifs, on doit donc rserver un bit de signe pour cela, do la reprsentation en mmoire de la gure 3.5 : le bit n-1 contient le signe, k bits sont rservs pour lexposant et (n k 1) bits sont rservs pour la mantisse.

3.3.2

codage de la mantisse et de lexposant :

exposant : le choix dun codage par excdent pour lexposant a t fait pour le codage des exposants ngatifs. Par exemple si k = 4 on peut coder 24 = 16 valeurs dexposant. Les 8 premires valeurs (de 0 7) pourront servir coder les exposants ngatifs de 8 1 (on a donc bien ajout 241 = 23 = 8), les 8 suivantes (de 8 15) pourront servir coder les exposants positifs de 0 7. Le codage par excdent possde deux avantages : 1. le code est dautant plus grand que lexposant est grand, ce qui facilite les oprations de tri3 ; 2. le second est que lon pourra rserver les codes 0 et 2ne 1 (o ne est le nombre de bits rservs pour le codage de lexposant) pour un usage particulier sans pour autant perdre le preier avantage (voir, par exemple, le standard IEEE 754 prsent la section 3.3.3).
En eet le tri peut se faire sur le code directement, il nest plus ncessaire de faire la conversion avant de trier.
3

3.3 Nombres ottants

21

bit de signe exposant mantisse codage de lexposant variation de lexp. plut petit nombre plus grand nombre chelle des nombres dcimaux

simple prcision 32 bits 1 8 23 excdent 127 126 +127 2126 environ 2+128 4 environ 1038 10+38

double prcision 64 bits 1 11 52 excdent 1023 1022 +1023 21022 environ 2+1024 environ 10308 10+308

Tab. 3.3 prcision des nombres ottants mantisse : Le choix de la base pour la mantisse et lexposant sest naturellement port sur la base 2. Cest donc un nombre binaire que lon va coder sous la forme M BE . Pour convertir la partie dcimal dun nombre virgule en binaire il sut dy appliquer des multiplications successives par 2 et de ranger chaque itration la partie entire du produit dans le rsultat (voir Exemple 3.5). Exemple 3.5 Soit le nombre x = 0.375, on obtient : 0.375 2 = 0.75 2 = 1.5; 0.5 2 = 1.0 0.011.

3.3.3

standard IEEE 754

La norme IEEE 754 dnit la reprsentation des nombres ottants, norme applique par la majorit des ordinateurs actuels. Ce standard dnit trois formats de reprsentation de nombres virgule ottante : la simple prcision sur 32 bits (voir Tableau 3.3) ; la double prcision sur 64 bits (voir Tableau 3.3) ; la prcision tendue sur 80 bits. Note sur la mantisse : La mantisse tant normalise et code en base 2, on est sr que le premier bit est 1. En eet si on reprend lexemple 3.5, le nombre binaire 0.011 sera normalis en 1.10 22 . tant sr que le premier bit est 1, il est possible de gagner un bit de prcision en codant implicitement ce premier bit. Ainsi la norme IEEE 754 propose de ne coder que la partie fractionnaire de la mantisse. Note sur lexposant : La norme IEEE 754 rserve les valeurs de code 0 et 2ne 1 pour coder des valeurs particulires. Ainsi un exposant gal 0 avec une

22

Reprsentation de linformation : les donnes

mantisse aussi gale 0 codent le nombre 0, 0. Un exposant gal 2ne 1 avec une mantisse gale 0 codent linni, et un exposant gal 2ne 1 avec une mantisse non nulle codent NaN (Not a Number), cest dire un nombre impossible division par zro par exemple. Ainsi un nombre ottant en IEEE 754 scrit : x = (1, M ) 2E (2
(ne 1) 1)

Exemple 3.6 Reprsenter le nombre 0.75 en simple prcision : 0.75 0.11 en binaire (0.50 + 0.25) soit 1.1 21 en reprsentation normalise. Ce qui nous donne (1)S (1 + .1000 0000 0000 0000 0000 000) 2126127 soit le nombre binaire en simple prcision : 1 01111110 10000000000000000000000

quel nombre dcimal correspond le nombre binaire en simple prcision suivant : 1 10000001 01000000000000000000000 ? signe = 1 exposant = 129 mantisse : 1 22 = 1/4 ou 0.25, soit (1)S (1 + mantisse) 2E 127 = (1)1 (1 + 0.25) 2129127 = 1 1.25 22 = 1.25 4 = 5

3.3.4

notes sur la prcision informatique

La machine permet de reprsenter de manire exacte tout entier relatif compris entre le plus petit nombre et le plus grand. Contrairement aux entiers naturels les rels nont quune image approximative en machine, parce quil existe une innit de nombres rels entre deux entiers (par exemple 0 et 1). En notation ottante double prcision, on peut reprsenter de manire exacte que 253 nombres. Donc, attention un ordinateur ne calcule pas en rel (mais en ottant ce qui est dirent), ce qui peut amener des erreurs de calculs alors que le programme est juste (voir lexemple ci-dessous).

3.3 Nombres ottants

23

Exemple 3.7 Rsolution de lquation du second degr Soit lquation ax + bx + c = 0. Si a = 0 et b 4ac > 0 alors lquation admet deux racines relles : b + b 4ac x1 = 2a b b 4ac x2 = 2a Considrons lquation suivante : 108 x 0.8x + 108 = 0 qui admet pour racine x1 = 0.8 108 x2 = 1.25 108 Nous allons voir que, mme traite sur un ordinateur de trs grande prcision, cette quation fournit une valeur totalement errone de x2 . x1 = 0.8 108 x2 = 1.38 108 a = 9.99999993922529029078e 09 b = 8.00000011920928955078e 01 c = 9.99999993922529029078e 09 b = 6.40000019073486470234e 01 4ac = 3.99999995138023238037e 16 b 4ac = 6.40000019073486026144e 01 b 4ac = 8.00000011920928733034e 01 b b 4ac = 2.77555756156289135106e 16 soit x1 = 8.00000016782905757427e + 07 et x2 = 1.38777878921563099490e 08 La valeur de x2 est donc fausse. Ceci est d plusieurs facteurs : le deuxime terme du discriminant b 4ac est trop petit par rapport au premier ; le nombre 0.8 ne tombe pas juste en machine ; les erreurs du carr et de la racine carr sont cumules.

24

Reprsentation de linformation : les donnes

Chapitre 4

Algbre de Boole
Sommaire
4.1 4.2 4.3 fonctions de base . . . . . . . . . . . . . . . . . . . . . . . thormes fondamentaux de lalgbre de Boole . . . . autre fonctions . . . . . . . . . . . . . . . . . . . . . . . . 26 26 27

Boole a dni une algbre qui sapplique des fonctions logiques de variables logiques (appeles variables boolenne). Il a montr que toute fonction logique peut tre ralise partir dun petit nombre de fonctions logiques de base. Il a galement montr que les oprations arithmtiques de base pouvait tre ralises laide doprations logiques de base. Une fonction logique a un nombre ni de valeurs dentres (ou tats dentres dans le cas de circuits) et donc un nombre ni de valeurs de sortie. On peut donc entirement dcrire une fonction par la liste exhaustive des valeurs de sortie associes aux valeurs dentre. On range ces valeurs dans un tableau que lon appelle table de vrit de la fonction logique. La table de vrit dune fonction logique n variables dentres aura 2n tats dentres (chaque variable ne peut prendre que les deux valeurs 0 et 1 ou Vrai et Faux). Comme pour chacun de ces n tats dentres, on peut avoir deux valeurs de sorties, cela nous donne 22 fonctions possibles n variables. Exemple 4.1 pour 1 variable, 4 pour 2 variables, 16 pour 3 variables, 256 pour 4 variables, 65 536 pour 5 variables, 4 294 967 296

fonctions ; fonctions ; fonctions ; fonctions ; fonctions.

26

Algbre de Boole

entres 0 1 0 0 0 1 1 0 1 1

Z0 Z0 Z2 Z3

fonctions = 0 constante = a identit = a ngation = 1 constante

Tab. 4.1 fonction logique une variable

4.1

fonctions de base
1

Daprs ce qui a t dit prcdemment on peut donc dnir 22 = 4 fonctions logiques une variable (voir Table 4.1). La seule fonction logique une variable non triviale et la fonction de complmentation correspondante loprateur logique NON, oprateur dsign par une barre horizontale (voir Table 4.1). Toujours daprs la mme formule, on voit quil est possible de dnir 16 fonctions logiques 2 variables, les deux non triviales les plus importantes correspondent aux oprateurs ET et OU, nots respectivement par la juxtaposition et par le symbole +. Leurs tables de vrit sont donnes ci-dessous : entres a b 0 0 0 1 1 0 1 1 ET ab 0 0 0 1 OU a+b 0 1 1 1

Ces trois oprateurs de base (NON, ET, OU) permettent de dnir la structure de lalgbre de Boole.

4.2

thormes fondamentaux de lalgbre de Boole

Lalgbre de Boole dit qu laide des thormes de la table 4.2, il est possible dexprimer toute fonction logique laide des oprateurs NON, ET et OU. Pour cela on peut utiliser les mthodes des minterm ou des maxterm. Ces mthodes sappuient sur des termes particuliers : les minterms et les maxterm : minterm : produit logique de toutes les variables dentres correspondant une sortie 1, les variables tant prises telles quelles si elles valent 1, sous leur forme complmente sinon.

4.3 autre fonctions

27

thorme des constantes : a + 0 = a a.0 = 0 a+1=1 a.1 = a idempotence : a+a=a a.a = a aa = 0 complmentation : a+a=1 commutativit : a+b=b+a ab = ba distributivit : a + (bc) = (a + b)(a + c) a(b + c) = (ab) + (ac) associativit : a + (b + c) = (a + b) + c = a + b + c a(bc) = (ab)c = abc a + b = ab thorme de De Morgan : ab = a + b a=a a + (ab) = a autres relations : a(a + b) = a a + (ab) = a + b (a + b)(a + b) = a Tab. 4.2 thormes fondamentaux de lalgbre de Boole maxterm : somme logique de toutes les variables dentres correspondant une sortie 0, les variables tant prises telles quelles si elles valent 0, sous leur forme complmente sinon. La mthodes des minterms consiste faire la somme logique des produits logiques, autrement dit la somme logique des minterms, alors que la mthodes des maxterms consiste faire le produit logique des sommes logiques, autrement dit le produit des maxterms. Lexemple 4.2 montre lutilisation de ces mthodes.

4.3

autre fonctions

Un autre oprateur trs utilis est loprateur XOR, ou ou exclusif , de symbole de table de vrit : entres a b 0 0 0 1 1 0 1 1 XOR ab 0 1 1 0

On peut exprimer loprateur XOR laide des oprateurs ET et OU en utilisant la mthode des minterms (voir Exemple 4.2) ou des maxterms.

28

Algbre de Boole

Exemple 4.2 Expression de loprateur XOR par la mthode des minterms : On considre que la fonction peut-tre exprime comme la somme logique des minterms, ce qui nous donne : a b = (ab) + (ab) Il y a deux autres oprateurs important du point de vue thorique dans lalgbre de Boole : les oprateurs NAND (non et) et NOR (non ou). En eet ces fonctions forment un ensemble complet ou minimal, cest dire quils peuvent exprimer tous les oprateurs. Lensemble, utilise en pratique, {ET,OU,NON} permet bien dexprimer tous les oprateurs, mais il nest pas minimal. En eet on peut raliser la fonction ET avec des OU et des NON et la fonction OU avec des ET et des NON. On peut aussi montrer que les ensembles {OU,NON} et {ET,NON} ne sont pas minimaux. Le tableau ci-dessous donne la table de vrit des oprateurs NAND et NOR. a 0 0 1 1 b 0 1 0 1 a NAND b 1 1 1 0 a NOR b 1 0 0 0

Chapitre 5

Reprsentation de linformation : les instructions


Sommaire
5.1 5.2 5.3 5.4 Oprations . . . . . . . . . . . . . . . . . . . . Oprandes . . . . . . . . . . . . . . . . . . . . . Codage des instructions . . . . . . . . . . . . Langage MIPS . . . . . . . . . . . . . . . . . . 5.4.1 instruction arithmtiques de base . . . . . . . 5.4.2 tests et boucles . . . . . . . . . . . . . . . . . 5.4.3 procdures . . . . . . . . . . . . . . . . . . . 5.4.4 adressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 32 33 33 34 35 37

Pour donner des ordres un ordinateur il faut sexprimer dans son langage : le langage machine. Les mots de ce langage sont appels instructions machines, son vocabulaire le jeu dinstruction. Chaque unit de contrle (processeur) a son propre langage et les dirents langages machines peuvent paratre bien dirents, mais en fait il se ressemblent tous. Ceci provient du fait que les constructeurs cherchent tous atteindre les mmes buts : trouver un langage qui rende plus aise la construction du matriel. En fait pour discuter avec lordinateur on utilisera un langage dassemblage qui est un premier niveau dabstraction du langage machine : mnmonique au lieu de codes binaires ; commentaires possibles ; labels au lieu dadresses. Pour illustrer notre propos on utilisera le langage dassemblage MIPS.

30

Reprsentation de linformation : les instructions

Programme C Compilateur prog. en langage dassemblage

prog. en langage machine

Assembleur

chargeur

Mmoire

Fig. 5.1 Du langage C au code en mmoire


Code ass. MIPS

Compilateur prog. en langage machine MIPS

Interpreteur

code machine local + excution

Fig. 5.2 Machine Virtuelle

En TP on utilisera un programme qui transforme le code source en langage dassemblage en langage machine : un assembleur. On remarquera au passage quun assembleur est une sorte de compilateur. Lorsquon utilise un langage de haut niveau comme le C ou Ada, on utilise sans le savoir deux compilateurs, un transformant le langage de haut niveau en langage dassemblage et un assembleur transformant ce dernier en langage machine (voir Figure 5.1). Remarque : A-t-on des machines MIPS lISIM ? Non : utilisation dune machine virtuelle : un programme qui simule de manire logiciel le fonctionne dune machine relle, dune unit centrale de traitement (voir Figure 5.2).

5.1 Oprations

31

5.1

Oprations

On verra la section 5.4 une liste de la plupart des oprations disponibles en MIPS. En sappuyant sur lexemple des oprations arithmtiques on va ici ennoncer le premier principe qui guide llaboration dun jeu dinstructions machine. Si lon prend par exemple laddition, en MIPS elle scrit : add a,b,c

ce qui signie : a := b + c Attention une instruction arithmtique a toujours trois oprandes donc pour raliser a := b + c + d + e, il faut faire : add add add a,b,c a,a,d a,a,e # a := b + c # a := a + d a := b + c + d # a := a + e a := b + c + d + e

remarques : toujours une seule instruction par ligne. # indique un commentaire. Pourquoi imposer un nombre xe doprandes ? Parce que cest plus simple raliser quun nombre variable, do le principe suivant : Principe 1 La simplicit favorise la rgularit. Autre opration arithmtique, la soustraction : sub a,b,c # a := b c

Exercice 1 que fait le programme assembleur suivant : add add add t,g,h u,i,j f,t,u

Solution 1 f := (g + h) (i + j )

5.2

Oprandes

Les oprandes des instructions arithmtiques ne peuvent pas tre, comme celle des langages de haut niveau, des variables quelconques. Les registres du processeur sont les seuls oprandes possibles. En MIPS un registre fait 32 bits et il y a 32 registres appels respectivement $0, . . . , $31 Pourquoi si peu ?

32

Reprsentation de linformation : les instructions

Principe 2 le plus petit est le plus rapide. Les structures de donnes volues ou complexes telles que les tableaux posent un problme : comment les reprsenter ? On se contente de stocker les valeurs en mmoire. Mais cela implique de disposer dinstructions de transfert en et de la mmoire centrale. On rappelle que la mmoire peut tre vue comme un tableau unidimensionnel ou ladresse serait lindice du tableau. En MIPS linstruction de transfert de la mmoire vers un registre (chargement ) est : lw registre,@dbut(registre indice)

Ainsi par exemple : lw $8,100[$9] $8 := T [i] avec 100=@de T et $9 = i

Attention les adresses sont en octets alors que la taille des oprandes fait un mot, cest dire 32 bits, soit 4 octets. Remarque : Une des optimisations classique que ralisent les compilateurs consiste optimiser lutilisation des registres an de diminuer le nombre dinstruction de chargement.

5.3

Codage des instructions

Rappel important : tout est cod en binaire. Une instruction MIPS est code en binaire par un seul mot de 32 bits. Comment direncier linstruction elle-mme des oprandes ? En fait les 32 bits sont dcomposs en champs, chaque partie ayant une signication particulire, codant ainsi soit linstruction, soit un oprande numrique, soit une adresse. Ainsi par exemple : 0000 0010 0011 0010 0100 0000 0010 0000 se dcompose en ralit en 000000 10001 10010 01000 00000 100000 soit 0 17 add 18 8 0 32 cest dire :

$8,$17,$18

5.4 Langage MIPS

33

On a en fait le format suivant : op 6 bits o rs 5 bits rt 5 bits rd 5 bits decval 5 bits fonct 6 bits

op : code opration correspondant linstruction rs : 1er registre oprande source `me registre oprande source rt : 2e rd : registre oprande destination : reoit le rsultat de lopration decval : valeur du dcalage fonct : fonction : variante de lopration dcrite par op Problme : pour une instruction telle que load on a besoin de spcier une adresse. Si on utiliser le format ci-dessus, on a droit qu des oprandes de 5 bits, ce qui est beaucoup trop peu pour coder une adresse. impossibilit davoir un format unique. Ou alors il faut augmenter la taille des oprandes. Do le principe suivant : Principe 3 une bonne conception requiert des compromis. Le compromis choisi ici est de garder une longueur unique pour les instructions mais davoir deux formats dirents : type R : le format prcdent (R pour registre) ; type I : pour les instructions de transfert de donnes. op 6 bits rs 5 bits rt 5 bits @ 16 bits

Avoir plusieurs format complique la conception du matriel, mais ici bien que dirent, les formats sont similaires, ce qui simplie la complexit ! En eet les 16 derniers bits couvrent exactement les trois derniers champs du format R. Il sut de tester op pour savoir comment dcomposer et traiter les 16 derniers bits. parler la n des ajouts de lassembleur : instruction move mais aussi label ce qui permet dindiquer des adresses de manire symbolique et donc de ne pas se prendre la tte avec les 16 bits dadressage.

5.4
5.4.1

Langage MIPS
instruction arithmtiques de base

34

Reprsentation de linformation: les instructions

type add Rd,Rs,Rt addu Rd,Rs,Rt addi Rd,Rs,Imm addiu Rd,Rs,Imm sub Rd,Rs,Rt mult Rs,Rt mult Rs,Rt mul Rd,Rs1,Rs2 div Rs,Rt div Rd,Rs1,Rs2 divu Rd,Rs1,Rs2 rem Rd,Rs1,Rs2

arithmtiques

instruction addition (avec dbordement) addition (sans dbordement) addition dun immdiat (dbordt) addition dun immdiat (ss dbordt) soustraction (dbordt) multiplication multiplication non signe multiplication (ss dbordement) division (dbordt) division (dbordt) division non signe (ss dbordt) reste de la division

commentaire RdRs+Rt RdRs+Rt RdRs+Imm RdRs+Imm RdRs-Rt [hi,lo]RsRt [hi,lo]RsRt RdRs1Rs2 loRsRt ; hiRs mod Rt RdRs1Rs2 RdRs1Rs2 RdRs1Rs2 si Rs1 ou Rs2 est ngatif, le reste dpend de larchitecture Rd Rs

abs neg rol ror

Rd,Rs,Rt Rd,Rs Rd,Rs1,Rs2 Rd,Rs1,Rs2

valeur absolue oppos dune valeur (dbordt) rotation vers la gauche rotation vers la droite

5.4.2

tests et boucles

La dirence entre un calculateur et un ordinateur, cest la capacit de ce dernier prendre des dcisions en fonction de donnes dentre. On a alors besoin de fonctions permettant de rompre la squence dinstruction, conformment dailleurs ce quavait propos Von Neumann. Le jeu dinstruction machine de tout processeur possde donc de telles instructions. Ces instructions doivent permettre de raliser des tests et des boucles. tests (instructions ifthenelse) Les instructions de test, sappelle en langage dassemblage, des branchements conditionnels : beq, bne, bgt, bge, blt, ble. exercice : coder le programme suivant en langage MIPS if i/=j then f :=f+h ; end if f :=f-i ; rponse : beq add sub $19,$20,L1 #aller en L1 si i=j $16,$16,$18 #f:=f+h $16,$16,$19

L1:

5.4 Langage MIPS

35

Lassembleur fait la correspondance entre ltiquette et ladresse mmoire de linstruction. MIPS fournit aussi des instructions de test qui ne font pas de branchement, elles permettent de comparer des valeurs et positionnent le registre oprande 1 si la comparaison est vrie. Par exemple slt $8,$19,$20

positionne la valeur du registre 8 1 si $19<$20, sinon le registre 8 est mis 0. boucles Les branchements conditionnels permettent de choisir entre deux possibilits, mais aussi de raliser des boucles. exercice : Que fait le programme MIPS suivant : Loop: li mult lw add add bne $10,4 #charger le registre 10 avec la valeur 4 $9,$19,$10 #registre temp $9=i*4 $8,1234($9) #$8:=T[i] $17,$17,$8 #g:=g+T[i] $19,$19,$20 #i:=i+j $19,$18,Loop#aller Lopp si i/=h

rponse : do g :=g+T[i] ; i :=i+j ; while i/=h

5.4.3

procdures

Les langages dassemblages ne fournissent pas dinstructions permettant de dnir des procdures ou des fonctions, ce sont des notions trop complexes. Par contre un jeu dinstructions dun langage dassemblage fournit gnralement le moyen de sauter un endroit du programme (une procdure par exemple) et de revenir do on est parti . Pour cela MIPS fournit linstruction : jal Proc #jump and link

Cette instruction permet daller ltiquette Proc, et de garder un lien sur le lieu dexcution de jal : on range ladresse courante, donc de linstruction jal, qui correspond en fait ladresse de retour une fois que la procdure sera termine. Cette adresse de retour est stocke dans un registre spcial, le registre 31. noter quil existe aussi linstruction

36

Reprsentation de linformation : les instructions

Suite

#jump

qui saute ltiquette Suite, mais qui ne ralise pas le lien, le retour sera donc impossible. Une fois la procdure termine, il faut pouvoir revenir. Linstruction jpnest pas utile car on ne dispose pas dune tiquette, mais dune adresse stocke dans un registre. On utilise linstruction jr : jr $31 #saut par registre

problme : Et si on fait des appels imbriqus ? Le nouveau jalcrasera la valeur de retour contenue dans le registre 31 de la premire procdure pour y stocker celle de la seconde. Pour rsoudre ce problme, on utilise une structure de donnes particulire : la pile (le LIFO). Une pile est une zone mmoire dans laquelle sont stockes successivement des valeurs. On accde cette pile par deux instructions, pushet popqui, respectivement, empile une valeur, cest dire rajoute une valeur, et dpile une valeur, cest dire rcupre la dernire valeur stocke, lavant-dernire devenant la nouvelle dernire. Il nous faut donc reprer lemplacement de cette dernire instruction : le sommet de pile. On rserve pour cela le registre 29. La squence dinstructions correspondant un appel de procdure devient donc : ... push jal popd ... ... push jal popd ... jr ... ... jr $31 A $31 #empilement de ladresse de retour #appel de A #restauration de ladresse de retour #avant lappel de A

A:

$31 B $31

#empilement de ladresse de retour #appel imbriqu de B #restauration de ladresse de retour #avant lappel de B #saut ladresse de retour

finA: B: finB:

$31

$31

#saut ladresse de retour

Malheureusement les instructions pushet popnexiste pas en MIPS (et dailleurs pas dans dautres langages dassemblages). Il faut donc chaque fois crire le code MIPS correspondant.

5.4 Langage MIPS

37

exercice : crire le code MIPS des instructions pushet pop rponse : push: addi sw jal lw subi $29,$29,4 $31,0($29) procdure $31,0($29) $29,$29,4 #sommet de pile ajust #sauvegarde de ladresse de retour #saut la procdure #restauration de $31 #ajustement du sommet de pile

pop:

La pile ne sert pas uniquement stocker les adresses de retour. On a galement besoin de stocker dventuels paramtres. En MIPS, les registres 4 7 sont rservs pour les passages de paramtres, et donc en cas dappels imbriqus on retrouve la mme problmatique que pour ladresse de retour, il faut stocker ces paramtres an dviter que le second appel ncrase les paramtres de la procdure appelante. Deux conventions existent pour le stockage des paramtres sur la pile : 1. sauvegarde par lappelant : cest la procdure appelante qui sauvegarde tout avant lappel et restaure tout le contexte au retour. Lappel peut donc agir en toute libert sans prendre de prcautions particulires. 2. sauvegarde par lappel : cest lappel de sauvegarder et de restituer tous les registres quil pourrait utiliser. Les compilateurs des langages volus utilisent souvent la premire convention et stockent dans la pile les paramtres. Lappel na plus alors qu dpiler pour rcuprer les valeurs des paramtres quon lui a passs.

5.4.4

adressage

oprandes constants Les oprations arithmtiques que lon a vu jusqu prsent utilisent uniquement des registres. Si lon veut ajouter une valeur contante, il faut faire : lw add $24,@cste4($0) $29,$29,$24

de mme si on veut tester si $18<10. Or les oprations ayant comme oprande une constante reprsentent prs de la moiti des oprations dun programme (par exemple 52% avec gcc). Il est donc intressant de disposer dinstructions capable de traiter directement des oprandes constants, do la notion doprande immdiat. Par exemple : addi slti $29,$29,4 $8,$18,10

Principe 4 faire en sorte que les cas les plus frquents soient les plus rapides.

38

Reprsentation de linformation : les instructions

branchements et sauts Ladressage le plus simple est celui utilis par les oprations de saut comme : j 10000 #aller lemplacement 10000

Un seul oprande, ladresse. An de pouvoir coder ladresse indique de manire raisonnable, MIPS utilise un troisime format de codage des instructions : type J. op adresse 6 bits 26 bits Ainsi lespace dadressage est de 22 6 = 26 .220 = 64 Mo. problme : Les branchements conditionnels ne dispose que de 16 bits, soit un espace dadressage de 64 Ko ! En fait cette adresse est une adresse relative. Une adresse relative est une adresse calcule non pas partir du dbut de la mmoire (compte partir de 0) mais partir dune adresse de base. Donc, une adresse contenue dans une instruction de type I, on ajoutera une autre adresse, contenue dans un registre, an davoir ladresse relle (absolue). Quel registre, quelle adresse ? Pour ne pas xer une adresse de base, ce qui reviendrait limiter de nouveau lespace dadressage 64 Ko, et ne pouvant pas la donner en oprande, cest le CO qui a t choisi. Ce choix est justi par deux raisons : les sauts sont rarement loign de la position courante (voir par exemple les boucles). augmente notablement lespace dadressage, puisque le CO varie. exercice : Comment faire un branchement relatif lointain (au del des 64 Ko) ? rponse : Cest le programme assembleur qui le ralisera par une indirection : beq ... bne j ... $18,$19,Loin#branchement lointain $18,$19,E2 E1 #condition non respecte, on continue #saut lointain

Loin: E2:

rcapitulatif des modes dadressage 1. (register) : adressage par registre, oprande = registre
op rs registre rt rd decval funct

5.4 Langage MIPS

39

2. imm(register) : adressage index ou avec dplacement, loprande se trouve lemplacement dont ladresse est la somme dun registre et dune adresse.
op rs registre + rt adresse

... ...
mmoire

Avec le prcdent, ce sont les seuls adressages de la machine MIPS. 3. imm : adressage immdiat, loprande est une constante de linstruction.
op rs rt immdiat

lb

Rs,@

#load byte at @

4. symbol : adressage relatif CO, adresse est la somme de CO est dune constante.
op rs CO + rt adresse

... ...
mmoire

beq

Rs,Rt,Label #branchement conditionnel ladresse du label.

40

Reprsentation de linformation : les instructions

Chapitre 6

Circuits logiques combinatoires


Sommaire
6.1 Circuits logiques . . . . . . . . . . . . . . . . . . 6.1.1 portes . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 multiplexeurs . . . . . . . . . . . . . . . . . . . 6.1.3 dcodeurs, codeurs, transcodeurs . . . . . . . . 6.2 Synthse et analyse dun circuit combinatoire 6.3 Horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 42 43 44 45

Les composants lectroniques dun ordinateur sont digitaux, il fonctionnent seulement avec deux niveaux de tension lectrique : une haute et une basse. ces deux tensions correspondent donc deux valeurs : 0 et 1, do lutilisation du systme binaire. Nous montons les circuits logiques de base de lordinateur, puis dans un second temps nous montrerons comment lon peut laide de ces circuits concevoir une UAL.

6.1

Circuits logiques

Les circuits logiques et arithmtiques seront en fait des blocs constitus de circuits de base. Les circuits logiques de bases sont en fait les portes logiques.

6.1.1

portes

Les portes logiques implantent les oprateurs logiques de base : ET, OU et NON. Loprateur ET correspondra une porte ET, loprateur OU une porte OU et loprateur NON un inverseur. La gure 6.1 montre le schma des portes et de linverseur. En fait en pratique, on remplace souvent le schma de linverseur

42

Circuits logiques combinatoires

ET

OU

NON

Fig. 6.1 schma standard des portes logiques

inverseurs explicites

inverseurs implicites

Fig. 6.2 reprsentation des inverseurs par un simple petit cercle aux entres ou aux sorties des portes (voir Figure 6.2)).

6.1.2

multiplexeurs

Un multiplexeur est un bloc logique de base beaucoup utilis dans les circuits logiques. En fait on devrait plutt lappeler slecteur car sa sortie correspond lune des entres slectionnes en fonction dentres de contrle. La gure 6.3 montre un multiplexeur deux voies (dentres). La slection se fait par une entre unique S correspondant aux deux valeurs possibles dentres. On peut galement raliser des multiplexeurs n variables et donc 2n entres. Dans le cas de deux variables la fonction ralise est alors : Z = E0 S1 S2 + E1 S1 S2 + E2 S1 S2 + E3 S1 S2 o E1 , E2 , E3 etE4 sont les 4 entres, S1 et S2 sont les 2 entres de contrle et Z le rsultat.

E0 Z E1

E0 Z E1

Fig. 6.3 un multiplexeur deux voies et le bloc logique quivalent

6.1 Circuits logiques

43

6.1.3

dcodeurs, codeurs, transcodeurs

dcodeur Le dcodeur est un bloc logique n entres et 2n sorties qui fait correspondre chaque code dentre cod sur n lignes une seule sortie active ( 1, les autres tant 0). Gnralement le dcodeur traduit lentre n bits en un signal correspondant la valeur binaire dentre, ainsi si on a entr le nombre binaire `me bit 1 et les autres 0. 011 (3 en dcimal) on aura en sortie le 3e Exemple 6.1 Un dcodeur 3 bits 3 entres et sa tables de vrit : entres sorties E2 E1 E0 S7 S6 S5 S4 S3 S2 S1 S0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 la table de vrit.

E0 E1 E2 dcodeur

S0 S1 S2 S3 S4 S5 S6 S7

un dcodeur 3 bits

EXERCICE : schma dun dcodeur 3 vers 8 (p 129 Tannenbaum)

D0 D1 A D2 D3 D4 B C D5 D6 D7

44

Circuits logiques combinatoires

codeur Un codeur ralise lopration inverse dun dcodeur, cest dire quil fait correspondre une entre active parmi les 2n entres un code sur n lignes (gnralement le nombre binaire correspondant au numro de lentre active). EXERCICE : codeur exprimant les chires 0 7 en octal
0 1 2 3 4 5 6 7 b0

b1

b2

transcodeur Un transcodeur fait correspondre une entre sur n lignes correspondant un certain codage, une sortie sur m lignes correspondant un autre codage.

6.2

Synthse et analyse dun circuit combinatoire

La synthse dun circuit combinatoire consiste, partir dune fonction logique dterminer un circuit logique ralisant cette fonction. Bien sr on cherchera obtenir le circuit le plus optimis cest dire contenant le moins de portes, de connecteurs. Pour cela on 1. construit la table de vrit de la fonction logique, 2. en drive une expression algbrique (par exemple par la mthode des minterms), 3. simplie lexpression algbrique grce aux thormes de lalgbre de Boole (ou par la mthode des diagrammes de Karnaugh voir TD ), 4. ralise enn le circuit logique. Lanalyse dun circuit combinatoire est lopration inverse de la synthse : elle consiste donner la fonction dun circuit logique. Pour cela on donne pour chaque sortie son expression en fonction des entres, construit la table de vrit correspondante, en dduit le rle du circuit.

6.3 Horloge

45

H1

retard

H2

Fig. 6.4 Horloge avec circuit de retard

6.3

Horloge

Dans la plupart des systmes la notion dordonnancement des oprations est importante. Aussi il est important de disposer dun systme permettant de squentialiser les oprations. Les systmes logiques (et donc les processeurs) utilisent pour cela des horloges. Une horloge est un systme logique qui met rgulirement une impulsion. Lintervalle de temps entre deux impulsions reprsente le temps de cycle. Ces horloges sont souvent ralises grce des oscillateurs quartz. On peut aussi ajouter des circuits de retardement permettant ainsi dobtenir plusieurs impulsions dcales permettant de dcomposer un cycle en plusieurs phases et de synchroniser ainsi les direntes phases. On verra au chapitre 12 que ce mcanisme est utilis dans la technique du pipeline an damliorer les performances des units de contrle. Ainsi la gure 6.4 un cycle est dcompos en quatre phases : 1. le front montant de H1 ; 2. le front descendant de H1 ; 3. le front montant de H2 ; 4. le front descendant de H2 ;

46

Circuits logiques combinatoires

Chapitre 7

Mmoires
Sommaire
7.1 7.2 7.3 7.4 Introduction . . . . . . . . . . . . . . . . . . . Organisation des informations . . . . . . . . . Ordonnancement des octets . . . . . . . . . . Organisation physique . . . . . . . . . . . . . 7.4.1 bascule RS . . . . . . . . . . . . . . . . . . . 7.4.2 bascules D et ip-op . . . . . . . . . . . . . 7.4.3 registres . . . . . . . . . . . . . . . . . . . . . 7.4.4 Mmoire de forte capacit . . . . . . . . . . . 7.5 Types de mmoires . . . . . . . . . . . . . . . 7.5.1 DRAM utilises sur les PC notamment . . . 7.5.2 Mmoires caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48 49 50 50 51 51 52 53 54 56

7.1

Introduction

La mmoire est lun des composants essentiels dun ordinateur. Cest sa capacit mmoriser des informations. Mmoire : dispositif capable denregistrer, de conserver et de restituer des informations Les ordinateurs ont des capacits mmoire de plus en plus grande, on peut mme dpasser la capacit du cerveau humain. Mais lhomme a de bien plus grande capacit de recherche. De plus le cerveau est capable de travailler sur un grand nombre de donnes simultanment, alors que lordinateur selon Von Neumann travaille en squence. Enn la mmoire de lordinateur est un lment passif au

48

Mmoires

service du CPU alors que dans le cerveau les fonctions de mmoire et de traitement sont ralises par des lments actifs. En fait dans lordinateur on trouve dirents lments de mmoire. On peut les ordonner suivant les critres suivants : temps, daccs, capacit et cot par bit. On parle alors de hirarchie de mmoire (voir chapitre 10 pour plus de dtails) :

registre CPU

mmoire cache mmoire centrale mmoires dappui mmoires auxiliares ou secondaires

capacit cot temps daccs

registres grande vitesse servent principalement au stockage des oprandes et rsultats intermdiaires. mmoire cache mmoire rapide de faible capacit par rapport la mmoire centrale utilise comme mmoire tampon (buer) entre le CPU et la mmoire centrale gain de temps. mmoire centrale organe principal de stockage de linformation utilise par le CPU pour stocker programmes et donnes. mmoires de masse mmoires intermdiaires entre la mmoire principale et les mmoires auxiliaires (prsente dans les ordinateurs les plus volus). mmoires secondaires (ou mmoires de masse) mmoires priphriques de grande capacit et de cot relativement faible support permanent, stockage magntique ou optique.

7.2

Organisation des informations

Linformation dans un ordinateur est stocke dans un certain format dont llment de base est le bit : cest la plus petite unit envisageable. Un bit peut prendre deux valeurs : 0 ou 1. Ceci correspond des donnes physiques : il est assez facile de dnir un mcanisme physique capable de distinguer deux tats. Le jour o quelquun inventera un dispositif permettant de distinguer de manire ecace et able dix tats on verra peut-tre natre des ordinateurs dcimaux. Une mmoire est compose dun certains nombres de cellules, chacune tant capable de stocker une certaine quantit dinformation un certain nombre de bits. Chaque cellule a un numro, que nous appellerons adresse.

7.3 Ordonnancement des octets

49

Exemple 7.1 mmoire de 96 bits : 12 mots de 8 bits 8 mots de 12 bits 6 mots de 16 bits cellule mmoire plus petite quantit dinformation adressable ; sur la plupart des ordinateurs ; 8 bits cest dire un octet. mot regroupement doctets ; unit dinformation sur laquelle oprent la plupart des instructions ; inuence aussi la taille des registres. Un ordinateur 32 bits est un ordinateur dont le mot a une taille de 32 bits, les instructions, les registres seront donc cods sur 32 bits. Remarque : Dans le cas dune mmoire 32 bits, les cellules font 32 bits, comment alors adresser un octet ? En fait cest un mcanisme, externe la mmoire, de lunit de contrle qui rcupre les 32 bits et en extrait les 8 recherchs. Sur les mmoires secondaires on parle de blocs ( records , enregistrements). Cest lunit dinformation adressable et stocke dans ces mmoires. Le bloc est lquivalent pour les mmoires secondaires de la cellule pour la mmoire principale. Un chier est donc un ensemble de blocs (voir cours BD sur lorganisation du systme de chier.)

7.3

Ordonnancement des octets

Les octets dans un mot peuvent tre rangs selon deux ordres : de gauche droite ou de droite gauche. Ainsi par exemple les processeurs Motorola sont gros boutistes (big endian ) alors que les processeurs Intel sont petits boutistes (little endian ) (voir Exemple 7.2). Exemple 7.2 @ 0 1 2 gros boutiste 0 1 2 3 4 5 6 7 8 9 10 11 mot de 32 bits Motorola @ 0 1 2 petit boutiste 3 2 1 0 7 6 5 4 11 10 9 8 mot de 32 bits Intel

On remarquera que lchange dinformation travers un rseau entre deux machines nayant pas le mme ordonnancement des octets peut poser un problme. Note : Lordre des octets dune machine MIPS est big-endian : 3 Byte 2 1 0

50

Mmoires

7.4

Organisation physique

Comment peut-on mmoriser linformation avec un dispositif lectronique ? Commenons par un bit. On a donc besoin dun dispositif qui se souvienne de la valeur quil a enregistr. On utilise pour cela un autre type de circuits lectronique, appels circuits squentiels. Ce sont des circuits possdant des rtroactions : les signaux en sortie ne dpendent pas uniquement des signaux en entre mais de leur squence, les sorties tant retournes vers les entres. Le circuit de base de ce type est la bascule.

7.4.1

bascule RS

Ce dispositif est ralis laide de 2 portes NON-OU (on peut aussi le raliser avec des portes NON-ET) : 2 entres 2 sorties
S

: :

R (pour reset) pour la remise 0. S (pour set) pour la mise ltat 1. Q et Q.


Q

la valeur de sortie ne dpend pas uniquement des valeurs dentres, mais aussi de la valeur antrieure de sortie. En temps normal S et R valent 0.

Si Q valait 0 auparavant, Q = S + Q = 1 soit Q = Q + R = 0. Si Q valait 1 auparavant, Q = S + Q = 0 soit Q = Q + R = 1. Dans les deux cas on est donc dans un tat stable. Par contre on ne peut pas avoir Q = 0 et Q = 0 et non plus Q = 1 et Q = 1. En eet on est alors dans un tat instable car Q et Q bascule alors de 1 0 et de 0 1. Si S = 1 alors que Q = 0, Q = S + Q = 1.0 = 0 Q = R + Q = 0 + 0 = 1 donc Q est mis 1. Si S = 0 alors que Q = 1 Q=S+Q=0+1=0Q=R+Q=0+0=1 donc Q reste 1. Mme chose pour R : Si R = 1 alors que Q = 1 Q est mis 0. Si R = 1 alors que Q = 0 Q reste 0. ! R = 1 S = 0 et S = 0 R = 1 : la valeur (1, 1) est interdite en entre, sinon on passe dans un tat instable.

7.4 Organisation physique

51

D Q ck Q

Fig. 7.1 bascule D Dans la pratique on ne veut changer ltat dune bascule qu un instant prcis. De plus il faut tenir compte du temps dactivation des portes et donc synchroniser les entres avec cet intervalle, on est donc oblig dutiliser une horloge.
S ck Q R Q

ck = 0 S et R sont forces 0. ck = 1 les portes ET nont plus deet, S et R gardent leur valeur.

Remarque : lorsque R = S = 1 la bascule est en fait dans un tat dtermin : Q = 0 = Q mais ds que R = S = 0 la bascule est dans un tat indtermin, elle peut passer dans les deux tats stables.

7.4.2

bascules D et ip-op

Le but de ces circuits est de faire en sorte que ltat S = R = 1 ne soit jamais prsent. La Figure 7.1 montre un tel circuit : une bascule D. En fait ce circuit correspond une mmoire 1 bit : ds que lon veut mmoriser 1 bit, il sut de le prsenter sur lentre D, au signal dhorloge 1 il sera mmoris et sera disponible sur la sortie Q. En pratique, il faut que limpulsion dhorloge soit la plus courte possible pour viter des eacement intempestifs, or ceci est assez dicile raliser. On utilise alors des bascules particulires ragissant sur une transition (montante ou descendante) plutt que sur un tat, on appelle ces bascules des bascules ip-op. La Figure 7.2 prsentent les dirents symboles pour les bascules D et ip-op. Certaines bascules disposent galement de deux entres supplmentaires : PR (pour preset) qui force ltat Q = 1 et CLR (pour clear) qui force Q = 0.

7.4.3

registres

Un registre est une mmoire n bits o n est la taille dun mot. Pour raliser un registre 8 bits on va donc utiliser 8 bascules. On reliera leurs entres dhorloge ainsi

52

Mmoires

D Q

D Q

D Q

D Q

ck

ck

tat 1 tat 0 latch (bascule D)

montant descendant ip-op

Fig. 7.2 symboles des bascules D et ip-op


20 19
VCC

18 17

16

15

14 13

12 11

D Q ck
CLR

D Q ck
CLR

D Q ck
CLR

D Q ck
CLR

CLR

CLR

CLR

CLR

ck Q D
1 2 3 4

ck Q D
5 6

ck Q D
7 8

ck Q D
GRD

9 10

Fig. 7.3 registre 8 bits que les entres CLR an de pouvoir mettre le registre 0 en une seule opration. La Figure 7.3 montre le schma dun registre 8 bits. Pour faire un registre 16 bits il sut de grouper deux registres 8 bots en connectant ensemble les broches 1 et 11.

7.4.4

Mmoire de forte capacit

Le problme du schma du registre 8 bits (Figure 7.3) cest quil ncessite un nombre de broches trop lev. En eet chaque bit ncessite 2 broches, auxquelles on rajoutera lalimentation lectrique, la terre et les 2 broches de commandes, soit pour un registre 8 bits 20 broches, 36 pour un registre 16 bits. On voit que cette progression linaire du nombre de portes interdit de construire sur le mme schma des mmoires de forte capacit. Il faut trouver une organisation qui amne une progression logarithmique et non plus linaire du nombre de broches. Nous allons maintenant voir comment raliser une mmoire de 12 bits (4 mots de 3 bits) en limitant le nombre de broches 14. Commenons par crer un circuit contenant 1 mot. La Figure 7.4 montre un tel circuit. I0 , I1 , I2 sont les trois broches

7.5 Types de mmoires

53

I0 I1 I2

Entre des donnes

D ck

D Q ck

D ck

RD

Fig. 7.4 Schma logique dune mmoire 1 3 dentres pour les 3 bits, la broche RD indique si lon doit crire ou lire. Enn on remarquera les nouveaux composants la sortie. Ceux-ci agissent comme un coupe-circuit et vont permettre de brancher les sorties et les entres sur les mme broches sans interfrence. On a donc pour linstant 4 broches. La Figure 7.5 prsente le schma logique dune mmoire de 2 mots de 3 bits, la capacit a donc t double. Pourtant le nombre de broches na pas doubl puisquil est dsormais de 6. On remarquera lajout dune entre adresse qui permet dindiquer si lon travaille avec le mot 0 ou le mot 1. Lentre CS (pour Chip Select ) est la commande qui permet de slectionner le botier. Enn la Figure 7.6 nous montre le circuit nal dune mmoire 12 bits. On y voit apparatre une nouvelle entre de commande OE qui permet douvrir les sorties, ceci pour grer parfaitement les problmes dinterfrence entre les entres et les sorties. On a galement doubl les entres adresses, en eet on a besoin de 2 bits pour coder une adresse permettant de slectionner un mot parmi quatre. On arrive au nal un total de 11 portes auxquelles il faudrait rajouter dans la version dnitive une broche pour lalimentation lectrique, une autre pour la terre et enn une pour la remise zro que nous navons pas trait pour simplier le schma.

7.5

Types de mmoires

Les mmoires tudies prcdemment permettent la lecture et lcriture dinformations. Ce sont des mmoires RAM (Random Acces Memory = mmoire accs alatoire), que lon devrait plutt appeler mmoires vives. Il existe deux familles de mmoires : 1. Les RAM statiques bases sur des circuits quivalents aux bascules D ou ip-op ; la mmorisation est garantie tant que lalimentation lectrique est maintenue.

54

Mmoires

I2 I1 I0 Entre des donnes

D ck

D ck

D ck

D @ ck

D ck

D ck

CS RD

Fig. 7.5 Schma logique dune mmoire 2 3 2. les RAM dynamiques bases sur des condensateurs et des transistors ; les condensateurs se dchargeant il est ncessaire de rafrachir les donnes rgulirement si lon veut garantir la mmorisation. Linconvnient des RAM dynamiques cest quelles orent des temps daccs plus lent ( cause des condensateurs) et le rafrachissement des donnes ncessitent un interfaage plus complexe. Par contre larchitecture interne est plus simple et les composants utiliss moins chrs. Cest donc ce type de RAM que lon retrouve pour les mmoires de forte capacit. Les mmoires ROM (Read Only Memory) qui permettent seulement la lecture des donnes. Celles-ci ont t enregistres la fabrication par insolation dun matriau photo-sensible. Les PROM sont des ROM programmables une fois. Les EPROM (Erasable PROM) sont des ROM que lon peut programmer, eacer et reprogrammer. Leacement est obtenu par rayonnement ultraviolet pendant une quinzaine de minutes de la partie active.

7.5.1

DRAM utilises sur les PC notamment

FPM DRAM DRAM classique anticipant un futur accs la mme ligne de mmoire. 28,5 Mhz pour laccs une page

7.5 Types de mmoires

55

I2 I1 I0

Entre des donnes

D ck

D ck

D ck

D ck

D ck

D ck

D @1 @2 ck

D ck

D ck

D ck

D ck

D ck

CS RD OE

Fig. 7.6 Schma logique dune mmoire 12 bits 70, 60 ns de temps daccs bus 66 Mhz maxi accs en 5-3-3-3 cycles CPU Les VRAM ne sont rien dautre que des FPM RAM qui pouvant tre accdes indpendemment du CPU. EDO Data Output RAM. Au lieu dun accs squentiel, ces RAM possdent une sorte de tube 2 tages : la donne slectionne est amplie puis verrouille la sortie, pendant ce temps le dcodeur dadresse et le circuit de donne

56

Mmoires

sont rinitialiss an dtre prt accepter la prochaine adresse. 40 Mhz 25 ns bus 66 Mhz mais pouvant tre pouss 83,3 Mhz accs en 5-2-2-2 Ces RAM permettent un gain de prs de 40% par rapport au DRAM classiques. BEDO 2 amliorations : 1. la sortie on dispose dun registre ce qui permet un gain de temps puisquil nest plus ncessaire de verrouiller la sortie. 2. ajout dun compteur dadresse interne, ainsi en cas daccs squentiel il nest pas ncessaire denvoyer toutes les adresses, seule la premire est ncessaire. Ces deux amlioration permettent aux RAM BEDO de se synchroniser avec le CPU pendant un court temps (Burst). SDRAM Synchronous Dynamic RAM : contrairement lEDO ou la FPM, la SDRAM se synchronise avec lhorloge systme et donc avec le CPU en permanence. temps daccs de 10 ns bus 100 Mhz accs en 5-1-1-1 Pourtant le gain de performance est minime : de lordre de 1 2% ! DDR SDRam Double Data Rate SDRam. Comme sont nom lindique, elle doublera la bande passante de la SDRam actuelle, et lon arrivera donc a une bande passante de 1Go/s ! Cette RAM nest jamais sortie sur le march. Direct RDRAM Direct Rambus RAM : RDRAM. temps daccs de 5 ns avec burst 2ns 533 Mhz avec multiple canaux soit une bande passante de 2,6 Go bus jusqu 266 Mhz

7.5.2

Mmoires caches

Ce sont des mmoires accs trs rapide places entre le CPU et la mmoire centrale an de palier le problme de la trop grande dirence de vitesse entre le CPU et de la mmoire. Sur les ordinateurs actuels, il y a plusieurs niveaux, et donc plusieurs types de mmoire cache. Les plus rapides (et donc les plus chres) sont des mmoires associatives : on accde linformation, non pas par une adresse, mais par une clef, par exemple une adresse de la mmoire centrale. De plus toutes les cases sont accdes en parallle et on peut galement savoir en 1 accs, et donc trs rapidement si linformation recherche est prsente.

7.5 Types de mmoires

57

On trouve ensuite les mmoires statiques, plus lentes que les prcdentes, mais beaucoup plus rapides que les mmoires Dynamiques. Cest la mmoire cache qui se trouve sur votre carte mre.

58

Mmoires

Chapitre 8

Unit arithmtique et logique (ual)


Sommaire
8.1 UAL pour laddition et la soustraction . . . 8.1.1 UAL 1 bit . . . . . . . . . . . . . . . . . . . . 8.1.2 UAL 32 bits . . . . . . . . . . . . . . . . . . . 8.2 Multiplications et divisions entires . . . . . 8.2.1 Multiplications . . . . . . . . . . . . . . . . . 8.2.2 Divisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 60 61 67 67 72

LUAL est le dispositif qui est charg de toutes les oprations lmentaires de traitement de donnes. Elle est totalement asservie lunit de contrle (voir Figure 2.1). Cest dailleurs lunit de contrle qui dclenche et synchronise les oprations menes par lUAL. Une UAL est capable deectuer une grande varit doprations arithmtiques et logiques. Certaines nont quun oprande comme la complmentation 1, la remise zro, lincrmentation, ..., dautres travaillent avec deux oprandes comme les oprations arithmtiques classiques (addition, soustraction, ...) ou les oprations logiques. La plupart des UAL possdent maintenant des oprations en virgule ottante en simple et double prcision. Il faut noter que ce nest pas toujours le cas et que certains compilateurs nutilisent pas ces instructions de lUAL, mme lorsquelles sont prsentes, mais prfrent les reprogrammer . Nous allons maintenant voir comment, laide des circuits logiques prsents Section 6.1, on peut raliser une Unit Arithmtique et Logique 32 bits. Pour simplier notre tche, on ne regardera que le cas des nombres entiers. Nous considreront dabord le cas des oprations logiques, de laddition et de la soustraction. Nous verrons ensuite la section 8.2 comment implanter la

60

Unit arithmtique et logique (ual)

opration

0 Rsultat

Fig. 8.1 UAL 1 bit pour le OU et le ET. multiplication et la division.

8.1

UAL pour laddition et la soustraction

Nous allons commencer par construire une UAL 1 bit.

8.1.1

UAL 1 bit

Nous devons donc raliser les oprations logiques classiques ET et OU1 , et laddition. Nous verrons la multiplication et la division plus tard. Les oprations logiques sur 1 bit sont simples realiser puisquelles correspondent aux circuits des portes logiques (voir Figure 6.1). Reste les regrouper sur un seul circuit. Pour cela on utilise un multiplexeur qui fera la slection du rsultat en fonction de lopration dsire (voir Figure 8.1). Si le bit opration vaut 1 alors il slectionnera lopration OU, sinon il slectionnera lopration ET. La ligne de contrle (appele opration sur la gure 8.1) est reprsente en trait interrompu an de la distinguer des lignes de donnes. Laddition est une opration plus complexe, en eet cest une opration trois oprandes : les deux bits additionner et ventuellement un bit de retenue (retenu entrante ). En eet noublions pas que notre but est de raliser une UAL 32 bits, on aura donc besoin de grer les retenues des additions bit bit pour obtenir laddition sur 32 bits. On a donc 3 oprandes, un rsultat et aussi une ventuelle retenue sortante. On devrait donc obtenir un circuit 5 lignes, 3 dentres, 2 de sortie comme celui de la gure 8.2. La table 8.1 nous donne les spcications des entres et sorties dun additionneur 1 bit. Nous pouvons dduire de cette table les quations logiques pour calculer la somme et la retenue de sortie : Somme = (a.b.Re) + (a.b.Re) + (a.b.Re) + (a.b.Re)
Rappel : le XOR peut tre obtenue partir du ET et du OU, cette opration nest donc pas ncessaire dans lUAL.
1

8.1 UAL pour laddition et la soustraction

61

Re

+
b

Somme

Rs

Fig. 8.2 Additionneur 1 bit a 0 0 0 0 1 1 1 1 entres b Re 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 Rs 0 0 0 1 0 1 1 1 sorties Somme 0 1 1 0 1 0 0 1 Commentaires 0 + 0 + 0 = 00 0 + 0 + 1 = 01 0 + 1 + 0 = 01 0 + 1 + 1 = 10 1 + 0 + 0 = 01 1 + 0 + 1 = 10 1 + 1 + 0 = 01 1 + 1 + 1 = 11

Tab. 8.1 spcications des entres et sorties dun additionneur 1 bit Rs = (b.Re) + (a.Re) + (a.b) + (a.b.Re) B.Re + a.Re + a.b partir de ces quations on peut facilement en dduire les circuits logiques ralisant ces opraions. La gure 8.3 montre le schma pour le calcul du bit de retenue en sortie. Exercice : donnez le schma pour le calcul du bit de somme. On peut dsormais concevoir une UAL ralisant les opration ET, OU et laddition sur un bit (voir Figure 8.4).

8.1.2

UAL 32 bits

Pour construite une premire UAL 32 bits il sut de connecter entre elles 32 UAL 1 bits (voir Figure 8.5). Essayons maintenant de rajouter les oprations de soustraction et de test dinfriorit et dgalit. Pour soustraire un nombre il sut dadditionner son oppos. Notre UAL sait dj additionner deux nombres, il sut de rajouter le calcul de loppos dun

62

Unit arithmtique et logique (ual)

Re

Rs

Fig. 8.3 Schma pour le calcul de la retenue de sortie.


Re opration

0 1 Rsultat

Rs

Fig. 8.4 UAL 1 bit de base. nombre. Dans la reprsentation en complment deux, le calcul de loppos est simple puisquil sut dinverser tous les bits et de rajouter 12 . Pour inverser tous les bits, on rajoute lUAL 1 bit un slecteur avec un inverseur sur le bit dentre b, le slecteur permettant de choisir entre b et son inverse b en fonction dune nouvelle entre, commande du slecteur, appele Binverse (voir Figure 8.6). Nous pouvons ainsi, en positionnant lentre Binverse 1, indiquer au slecteur de prendre b plutt que b. Le deuxime argument aura alors tous ses bits inverss. Mais inverser tous les bits ne sut pas il faut aussi rajouter 1. Cela peut facilement se raliser en positionner le bit de retenue dentre de lUAL 32 bits 1. On ralise
2

La simplicit de cette opration est lune des raisons qui ont fait adopter cette reprsentation.

8.1 UAL pour laddition et la soustraction

63

Re

opration

a0 b0

Re

UAL1 bit
Rs

Rsultat0

a1 b1

Re

UAL1 bit
Rs

Rsultat1

. . .
a 31 b 31
Re

. . .
Rsultat31

UAL1 bit
Rs

Fig. 8.5 UAL 32 bits pour laddition, le ET et le OU. alors lopration suivante : a + b + 1 = a + (b + 1) = a + (b) = a b qui est bien ce que nous voulions. Faire la comparaison de deux nombres nest pas non plus trs compliqu. En eet tester si x < y revient rester si x y < 0. Or nous savons dsormais faire la soustraction de deux nombres. Il nous reste plus qu tester son signe. Dans la reprsentation en complment 2, le bit de poids fort (le bit 31 par opposition au bit de poids faible, cest dire le bit 0.) du nombre correspond au bit de signe. Il sut donc de positionner, en sortie, tous les bits 0, sauf le bit `me UAL 1 bit de de poids fort qui doit correspondre au rsultat donn par la 32e notre UAL 32 bit. Nous avons donc besoin dune entre supplmentaire pour nos UAL 1 bit, entre appele infrieur qui sort comme rsultat si lopration de test dinfriorit (opration 3 pour notre UAL 1 bit) est slectionne (voir Figure 8.6). Il sut alors de rentrer 0 sur cette entre pour tous les bits, except pour le `me UAL 1 bit de poids fort o on rcupre le rsultat de ladditionneur de la 32e bit. Malheureusement on ne peut pas utiliser la ligne rsultat de cette UAL car le multiplexeur slectionnera lentre infrieur comme rsultat puisquon est en train de faire un test dinfriorit. Il nous faut drouter la sortie de ladditionneur

64

Unit arithmtique et logique (ual)

Binverse

Re opration

0 1 Rsultat

0 1

infrieur

Rs

Fig. 8.6 UAL 1 bit. dans la dernire UAL. On ralisera alors une UAL spciale pour le bit de poids fort (voir Figure 8.7). Malheureusement, ceci est impossible. En eet ayant plac 3 sur la ligne opration, le slecteur de notre UAL selectionnera toujours lentre infrieur pour la ligne Rsultat. Notre trente-deuxime UAL 1 bit donnera donc galement comme rsultat la valeur de lentre infrieur. Il faut donc raliser une UAL 1 bit spciale pour le bit de poids fort. On ui rajoutera une sortie positionner rcuprant la valeur la sortie de ladditionneur. En plus de cette sortie, on rajoutera le matriel ncessaire la dtection des dpassement de capacit et une sortie dbordement indiquant si il y a eu dpassement (on ne dtaillera pas ici comment on ralise cette dtection). Pour tester lgalit, on utilisera la mme approche. En eet si deux nombres sont gaux, cest que leur dirence est nulle. Il sut donc deectuer une soustraction et de tester si le rsultat est nul. Ceci est simple raliser puisque le nombre 0 est reprsent par un nombre binaire dont tous les bits sont 0. On rajoute donc une porte OU dont les entres correspondent tous les bits de rsultat et dont la sortie sera inverse an dobtenir le rsultat recherch, cest dire 0 (faux) si au moins 1 bit est 1. On peut donc construire notre UAL 32 bits capable dadditionner, soustraire, de faire les oprations logique ET et OU, de tester lgalit de deux nombres et enn de tester si un nombre est infrieur un autre (voir Figure 8.8). On remarquera que les entres Binverse et Re ont t regroupe en une entre Boppose. En eet Re et Binverse ont toujours la mme valeur : elle doivent tre positionnes 1 toutes les deux dans le cas dune soustraction, et 0 dans tous les autres cas. Le dfaut dune telle UAL est que les

8.1 UAL pour laddition et la soustraction

65

Binverse

Re opration

0 1 Rsultat

0 1

infrieur

3 Positionner

dtection de dpassement

Dbordement

Rs

Fig. 8.7 UAL 1 bit pour le bit de poids fort. calculs vont se faire en srie sur les UAL 1 bit, et non pas en parallle. En eet lentre Re dune UAL 1 bit dpend de la sortie Rs de lUAL 1 bit prcdente. Les calculs ne seront donc pas trs ecace. On verra au chapitre 12 comment on peut amliorer cela. On reprsentera nalement une UAL par le symbole prsent Figure 8.9. Un autre opration importante pourrait tre incluse dans lUAL, cest lopration de dcalage. En fait il existe des circuits de dcalage spcialis capable deectuer un dcalage de 1 32 bits en un temps au plus gal au temps ncessaire lUAL pour faire laddition de 2 entiers signs sur 32 bits. On considrera nanmoins que cette opration est disponible dans lUAL.

66

Unit arithmtique et logique (ual)

Boppos

opration

a0 b0

Re

UAL1 bit
Rs

Rsultat0

a1 b1 0

Re

UAL1 bit
Rs

Rsultat1 Zro

. . .
a 31 b 31 0

. . .
Re

. . .
Rsultat31 Dbordement

UAL1 bit
Rs

Fig. 8.8 UAL 32 bits.

Opration UAL a UAL Zro Rsultat Dbordement

Rs

Fig. 8.9 Symbole de lUAL 32 bits.

8.2 Multiplications et divisions entires

67

Multiplicande 64 bits

dcaler gauche

Multiplicateur
32 bits
somme ou rien

UAL 64 bits

dcaler droite fin ?

Produit

maj

Contrle

`re version Fig. 8.10 Algo de multiplication : 1e

8.2
8.2.1

Multiplications et divisions entires


Multiplications

premire version : algorithme appris lcole primaire 0 9 1 0 0 0 1 1 1 x 5 x 1 1 x 3 1 1 1 4 5 1 0 1 1 3 3 . 1 11 0 1 1 . 1 = 32 + 8 + 4 + +1 1 0 0 0 0 1 = 32 + 1 = 45 = 33 Lalgorithme de cette multiplication pourrait sexprimer ainsi : si le multiplicateur est 1 alors placer une copie du multiplicande, sinon mettre 0 ; faire laddition des rsultats intermdiaires. On peut faire les additions au fur et mesure, on obtient alors lalgorithme 1 illustr par le schma de la gure 8.10. x
`re version Algorithme 1 : Algo de multiplication : 1e

1 0 1 1 0 1 0 0 1 1 0 1 1

0 0 0 . 0

pour i=0 a 31 faire si Multiplicateur =1 alors Produit := Produit + Multiplicande ; dcaler Multiplicande gauche de 1 bit; dcaler Multiplicateur droite de 1 bit;

Exercice : crire les 4 tapes de la multiplication 2 3 sur 4 bits.

68

Unit arithmtique et logique (ual)

Multiplicande
32 bits

Multiplicateur
32 bits
somme ?

UAL 32 bits

dcaler droite fin ? maj

Produit
64 bits
dcaler droite

Contrle

`me version Fig. 8.11 Algo de multiplication : 2e

0 0011 0000 0010 0000 0000 1 0001 0000 0100 0000 0010 2 0000 0000 1000 0000 0110 3 0000 0001 0000 0000 0110 4 0000 0010 0000 0000 0110 Inconvnient majeur de cet algo : 3 tapes rpter 32 fois. Si les 3 tapes ncessitent un cycle dhorloge alors il faudra 32 cycles dhorloges pour une multiplication. deuxime version On remarque que la moiti des bits du multiplicande sont 0. En eet on dcale gauche en insrant des 0 multiplicande sur 64 bits et une UAL sur 64 bits : lent et couteux. ide : dcaler le produit droite plutt que dcaler le multiplicande gauche. On obtient alors le schma de la gure 8.11 et lalgorithme 2.
`me version Algorithme 2 : Algo de multiplication : 2e

Algo Valeurs initiales Prod :=Prod+Mult ; decval idem pas dop ; decval idem

Multiplicateur

Multiplicande

Produit

pour i=0 a 31 faire si Multiplicateur =1 alors Produit := Produit + Multiplicande ; dcaler Produit droite de 1 bit; dcaler Multiplicateur droite de 1 bit;

Exercice : crire les 4 tapes de la multiplication 2 3 sur 4 bits.

8.2 Multiplications et divisions entires

69

Multiplicande
32 bits

somme ?

UAL 32 bits

Produit

Multiplicateur

maj

Contrle
dcaler droite fin ?

64 bits

Fig. 8.12 Algo de multiplication : version nale


Algo Valeurs initiales Prod :=Prodg +Mcande dcalage Prod :=Prodg +Mcande dcalage Nop ; dcalage Nop ; dcalage Multiplicateur Multiplicande Produit

0 1 2 2 3 4

0011 0011 0001 0001 0000 0000 0000

0010 0010 0010 0010 0010 0010 0010

0000 0000 0010 0000 0001 0000 0011 0000 0001 1000 0000 1100 0000 0110

version nale On remarque que lespace inutilise au dbut dans Produit est de mme taille que Multiplicateur. Donc on peut utiliser la partie droite qui est vide pour y placer le multiplicateur. Problme : lespace va tre peu peu occuper par les dcalages successifs. Mais chaque dcalage du produit (espace occup ) il y a un dcalage du multiplicateur (espace occup ), on peut donc utiliser le mme registre 64 bits pour stocker Produit et Multiplicateur. Le schma du nouvel algorithme de multiplication est donn par la gure 8.12 et lalgorithme 3. Algorithme 3 : Algo de multiplication : version nale pour i=0 a 31 faire si Produit g =1 alors Produit g := Produit

+ Multiplicande ;

dcaler Produit droite de 1 bit;

70

Unit arithmtique et logique (ual)

Exercice : crire les 4 tapes de la multiplication 2 3 sur 4 bits. 0 1 2 2 3 4


Algo Valeurs initiales Prodg :=Prodg +Mcande dcalage Prodg :=Prodg +Mcande dcalage Nop ; dcalage Nop ; dcalage Multiplicande Produit

0010 0010 0010 0010 0010 0010 0010

0000 0011 0010 0011 0001 0001 0011 0001 0001 1000 0000 1100 0000 0110

Multiplication signe : algorithme de Booth Une premire solution est de faire le produit des valeurs absolue et de traiter le signe part. Mais cette solution oblige examiner le signe des nombres, convertir les nombres ngatifs en positifs, et aussi traiter le cas du signe part pour, si le rsultat doit tre ngatif, reconvertir le rsultat positif en nombre ngatif. En fait lapplication de la mthode de multiplication appris lcole primaire, mais en base 2 et en utilisant la reprsentation en complment 2, permet de faire des multiplications signes. Ainsi lalgorithme 3 permet de faire des multiplications signes si les nombres sont cods en complment 2. Par exemple la multiplication 2 6 donne : 1 x 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 . 0 1 1 0 1 0 . . 1 1 1 0 0 . . . 0 0 0 0 . . . . 0 -2 6 rien (0 dans multiplicateur) dcalage+addition (1 dans mult.) dcalage+addition (1 dans mult.) dcalage uniquement (0 dans mult.) dcalage uniquement (0 dans mult.) rsultat : 101002 = 1210

1 0 0 0 0 0 0 1 0

On peut galement mettre en uvre lalgorithme de Booth dont lide originale consistait mettre au point un algorithme de multiplication favorisant les dcalages plutt que les additions, car ceux-ci sont plus ecaces (rapides). Lide est la suivante : chaque fois que lon rencontre un 1 dans le multiplicateur on doit faire une addition, on va donc essayer de rduire le nombre de 1. Ceci est possible en remarquant quun nombre peut scrire sous la forme dune soustraction. Ainsi les nombres 14, 15 et 6 peuvent scrire : 14 : 01110 = 00010 + 10000 2 + 16 15 : 01111 = 00001 + 10000 1 + 16 6 : 00110 = 00010 + 01000 2 + 8 On peut donc remplacer une chane de 1 dans le multiplicateur par une soustraction initiale lorsquon rencontre un 1 pour la premire fois, et on eectue une

8.2 Multiplications et divisions entires

71

addition pour le bit se situant aprs le dernier 1 de la chane. Ainsi par exemple la multiplication 2 6 scrira : 0 0 0 0 0 0 1 0 1 0 1 0 . 1 1 1 0 0 . . 0 0 0 0 . . . 0 2 6 rien (0 dans multiplicateur) dcalage+soustraction (1er 1 dans mult.) dcalage (milieu dune srie de 1 dans mult.) dcalage+addition (bit aprs dernier 1 dans mult.) rsultat : 011002 = 1210

x + + +

0 0 0 0 0 1 0 0 0 0

La cl de la mthode de Booth rside dans la classication des groupes de bits 1 en dbut, milieu et n de srie. Ainsi par exemple pour le nombre 001111110 on obtiendra la classication :
milieu

0 01 1111 10
n dbut

Lalgorithme 4 prsente lalgorithme de Booth. Attention le dcalage doit Algorithme 4 : Algo de Booth pour i :=0 a 32 faire si ai ai1 = 00 alors NOP; si ai ai1 = 01 alors Produit g + Multiplicande ; si ai ai1 = 10 alors Produit g Multiplicande ; si ai ai1 = 11 alors NOP; dcaler Produit droite de 1 bit;

conserver le signe, il faut donc faire un dcalage arithmtique. Ainsi par exemple 11110 sera dcal en 11111 au lieu de 01111. Il est facile de prouver que lalgorithme de Booth est juste pour les nombres signs : Soit a le multiplicateur et b le multiplicande, on a le tableau suivant : ai ai1 Opration 0 0 Ne rien faire 0 1 Ajouter b 0 Soustraire b 1 1 1 Ne rien faire On peut utiliser lexpression (ai1 ai qui selon sa valeur (respectivement 0, +1, 1) indique les actions entreprendre (respectivement ne rien faire, ajouter b et soustraire b). On peut crire alors lalgorithme de Booth sous la forme de laddition suivante :

72

Unit arithmtique et logique (ual)

+ + ... + + On remarque que :

(a1 a0 ) b (a0 a1 ) b 21 (a1 a2 ) b 22 (a29 a30 ) b 230 (a30 a31 ) b 231

ai 2i1 + ai 2i = (ai |2ai ) 2i1 = (2ai ai ) 2i1 = ai 2i1 En factorisant b dans tous les termes lalgorithme de Booth se rcrit sous la forme de la somme suivante : b (a31 231 ) + (a30 230 ) + (a29 229 ) + . . . + (a1 21 ) + (a0 20 ) soit ba (a31 231 ) + (a30 230 ) + (a29 229 ) + . . . + (a1 21 ) + (a0 20 ) tant la reprsentation en complment 2 de a.

8.2.2

Divisions

Commenons par regarder comment fait-on une division en utilisant la mthode traditionnelle, mais en base 2. 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 On essaie de voir quel est le nombre le plus grand que lon peut soustraire, et lon cre un chire du quotient chaque tentative. en binaire on ne peut multiplier que par 0 ou 1, cela revient donc soustraire le dividende.

premire version Lalgorithme 5 prsente lalgorithme de la division tel que prsent ci-dessus. La gure 8.13 montre le matriel pour limplantation de cet algorithme. Examinons un exemple sur 4 bits pour simplier : ralisons 7/2 soit 0000 0111/00103 :
3

on notera que le diviseur est plac dans la partie gauche du mot an de laligner sur le reste

8.2 Multiplications et divisions entires

73

Algorithme 5 : Algorithme de la division : premire version pour i=0 a 32 faire Reste := Reste Diviseur ; si Reste 0 alors Dcaler gauche Quotient ; Quotient 0 := 1; sinon Reste := Reste +Diviseur ; Dcaler gauche Quotient ; Quotient 0 := 0;

Diviseur 64 bits

dcaler droite

Quotient
32 bits
soustraction

UAL 64 bits

dcaler gauche

Reste 64 bits

maj si Re>0

Contrle

Re > 0 ?

Fig. 8.13 Matriel pour la premire version de la division


Algo Valeurs initiales Reste := Reste Div ; Reste < 0 +Div, dcaler Q, Q0 = 0 dcaler Div droite Reste := Reste Div ; Reste < 0 +Div, dcaler Q, Q0 = 0 dcaler Div droite Reste := Reste Div ; Reste < 0 +Div, dcaler Q, Q0 = 0 dcaler Div droite Reste := Reste Div ; Reste > 0 dcaler Q, Q0 = 1 dcaler Div droite Reste := Reste Div ; Reste > 0 dcaler Q, Q0 = 1 dcaler Div droite Quotient Diviseur Reste

0 1

0000 0000

0010 0000

0000 0111 1111 0111 0000 0111 1111 0111 0000 0111

0001 0000 0000 0000 1000 00001 0000 0100 0000 0011 0001 0000 0010 0000 0001 0011 3 0000 0001 reste 1 1111 1111 0000 0111

72=

74

Unit arithmtique et logique (ual)

Diviseur
64 bits

Quotient
32 bits
soustraction

UAL 32 bits

dcaler gauche

maj si Re>0

Reste 64 bits

Contrle
dcaler gauche Re > 0 ?

Fig. 8.14 Matriel pour la deuxime version de la division deuxime version Premire remarque : de mme que pour la multiplication, seule la moiti du diviseur contient de linformation utile. On va donc utiliser un diviseur 32 bits et donc une UAL 32 bits do une conomie sur le matriel. Pour raliser lalignement, il sura de dcaler gauche le reste plutt qu droite le diviseur. deuxime remarque : la premire itration ne peut pas produire de 1 pour le quotient. Sinon, tant donn quil y a 33 itration et donc 33 dcalage du quotient, ce bit serait perdu et donc le quotient obtenu serait trop grand pour tenir dans le registre. Donc en dcalant avant de soustraire, on conomise une itration. Lagorithme 6 prsente cette nouvelle version, la gure 8.14 prsente le matAlgorithme 6 : Algorithme de la division : deuxime version pour i=0 a 31 faire Dcaler Reste gauche de 1 bit; Reste g := Reste g Diviseur ; si Reste 0 alors Dcaler gauche Quotient ; Quotient 0 := 1; sinon Reste g := Reste g +Diviseur ; Dcaler gauche Quotient ; Quotient 0 := 0;

riel. Reprenons lexemple prcdent :

8.2 Multiplications et divisions entires

75

0 1

Algo Valeurs initiales dcaler Reste gauche Reste := Reste Div ; Reste < 0 +Div, dcaler Q, Q0 = 0 dcaler Reste gauche Reste := Reste Div ; Reste < 0 +Div, dcaler Q, Q0 = 0 dcaler Reste gauche Reste := Reste Div ; Reste 0 dcaler Q, Q0 = 1 dcaler Reste gauche Reste := Reste Div ; Reste 0 dcaler Q, Q0 = 1

Quotient

Diviseur

Reste

0000

0010

0000

0000

0001

72= version nale

0011 3

reste

0000 0111 0000 1110 1110 1110 0000 1110 0001 1100 1111 1100 0001 1100 0011 1000 0001 1000 0001 1000 0011 0000 0001 0000 0001 1

De mme que pour la multiplication, on peut remarquer que chaque fois que lon doit dcaler le quotient, on a dcal le reste. De plus les oprations entre le reste et le diviseur se passent au niveau de la partie gauche du reste. On peut donc, de mme que pour la multiplication, conomiser le registre Quotient en le plaant dans la partie droite du registre Reste. Le dernier dcalage du quotient (cad le registre Reste maintenant) dcalera le reste dun bit en trop, il faudra donc dcaler droite le reste (cad la partie gauche du registre Reste). Lagorithme 7 prsente cette dernire version, la gure 8.15 prsente le matAlgorithme 7 : Algorithme de la division : version nale pour i=0 a 31 faire Dcaler Reste gauche de 1 bit; Reste g := Reste g Diviseur ; si Reste 0 alors Dcaler Reste gauche; Reste 0 := 1; sinon Reste g := Reste g +Diviseur ; Dcaler Reste gauche; Reste 0 := 0; Dcaler Reste
g

droite;

76

Unit arithmtique et logique (ual)

Diviseur
64 bits

soustraction

UAL 32 bits

maj si Re>0

Reste 64 bits

Contrle
dcaler gauche Re > 0 ?

Fig. 8.15 Matriel pour la version nale de la division riel. Reprenons lexemple prcdent : 0 1 2 3 4
Algo Valeurs initiales Dcaler Reste gauche Reste := Reste Div ; Reste < 0 +Div, dcal gche Reste, Reste0 = 0 Reste := Reste Div ; Reste < 0 +Div, dcal gche Reste, Reste0 = 0 Reste := Reste Div ; Reste 0 dcal gche Reste, Reste0 = 1 Reste := Reste Div ; Reste 0 dcal gche Reste, Reste0 = 1 Diviseur Reste

0010 0010 0010 0010 0010

dcaler Resteg droite 7 2

0000 0111 0000 1110 1110 1110 0001 1100 1111 1100 0011 1000 0001 0001 0010 0011 0001 0001 0010 0011 0001 0011 reste 1 quotient 3

Chapitre 9

Unit centrale de traitement (cpu)


Sommaire
9.1 9.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . Unit de commande . . . . . . . . . . . . . . . . . . . . . 9.2.1 9.2.2 9.2.3 9.3 9.4 cycle de recherche . . . . . . . . . . . . . . . . . . . . . cycle dexcution . . . . . . . . . . . . . . . . . . . . . . synchronisation des oprations . . . . . . . . . . . . . . 77 79 81 81 81 82 83 83 85 87 88 89 89 90

Squenceur . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de micro-machine . . . . . . . . . . . . . . . . . 9.4.1 9.4.2 9.4.3 9.4.4 chemin de donnes . . . . . . . . . . . . . . . . . . . . . micro-instructions . . . . . . . . . . . . . . . . . . . . . cycle dexcution de la micro-instruction . . . . . . . . . squence des micro-instructions . . . . . . . . . . . . . . langage . . . . . . . . . . . . . . . . . . . . . . . . . . . micro-programme . . . . . . . . . . . . . . . . . . . . . .

9.5

Exemple de micro-programme . . . . . . . . . . . . . . . 9.5.1 9.5.2

9.1

Architecture

LUnit Centrale de traitement ou processeur central (CPU) ou tout simplement processeur interprte et excute les instructions des programmes.

78

Unit centrale de traitement (cpu)

UAL CPU Unit de commande

oprations arithmtiques et logiques dirige le fonctionnement des autres units : UAL, mmoire, E/S

Dans la famille INTEL, on distingue les processeurs 8088, 8086, 80286, 80386, Pentium, Pentium Pro, Pentium II et Pentium III : 8088 Processeur de base de la famille des processeurs utiliss par les PC compatibles IBM. Il sagit dun processeur 16 bits pos sur un bus 8 bits avec un adressage de 20 bits permettant 1 Mo de mmoire. La vitesse dorigine de ce processeur est de 4,77 Mhz ; 8086 Processeur 16 bits sur un bus 16 bits. Avec un bus dadresse sur 20 bits permettant daccder 1 Mo de mmoire. Vitesse habituelle 1012 Mhz ; 80286 Processeur 16 bits sur un bus de 16 bits avec mode protg. Bus dadresse de 24 bits permettant daccder un maximum de 16 Mo de mmoire. Vitesse courante : 16 Mhz ; 80386 Processeur 32 bits sur un bus de 32 bits avec un mode spcique dnissant une nouvelle gnration. Le bus dadresse de 32 bits permet un adressage thorique de 4 Go. Vitesse allant de 16,25 40 Mhz ; 80486 Processeur 32 bits sur un bus 32 bits incluant un coprocesseur arithmtique. Il existe des versions allant de 25 Mhz 120 Mhz avec des bus cadencs 25, 33, 40 ou 50 Mhz ; Pentium Processeur 32 bits sur un bus de 32 bits ou un bus PCI et possdant un coprocesseur arithmtique. Il existe des versions allant de 60 Mhz 200 Mhz avec des bus cadencs 33, 60 ou 66 Mhz. Apparition dun cache interne (cache L1). La carte mre est compose de 256k minimum de mmoire cache ; Pentium Pro Processeur 32 bits sur un bus PCI de 64 bits. Il existe des versions allant de 160 Mhz 200 Mhz avec des bus cadencs 60 ou 66 Mhz. La carte mre contient 256k minimum de mmoire cache. Certaines optimisations internes ont galement t rajouts ainsi quun niveau de cache supplmentaire (cache L2 interne) ; Pentium II disparition du cache L2 interne pour des raisons de cot mais amlioration du traitement des instructions 16 bits et augmentation de la taille du cache L1 qui passe 16ko de donnes et dinstructions. Du fait de la disparition du cache interne L2, lhorloge du processeur nest plus limite 200 Mhz. Pentium II Xeon variante du Pentium II : changement de packaging (botier) et rapparition de cache L2 9externe mais interne au botier) mais cadenc la moiti de la vitesse du processeur, permettant ainsi datteindre les 400Mhz

9.2 Unit de commande

79

Mmoire

CPU
RM RA

BIOS

RA = registre dadresse reoit ladresse dposer sur le bus RM = registre mmoire reoit linfo. de la mmoire l@ de RA

donnes adresse contrle

3 2 1

BUS

Fig. 9.1 Interconnection des units dun ordinateur Pentium III variante du Pentium II Xeon, avec simplement lajout de 70 instructions multimdia (notamment pour le calcul 3D) et laugmentation de la vitesse du cache L2 permettant daugmenter la frquence du processeur. fonctionnement : lunit de commande rcupre une instruction en mmoire centrale en envoyant la mmoire une commande ; linstruction est transfre vers lunit de commande qui la rcupre, la dcode et envoie les signaux ncessaires lUAL pour raliser lopration ; les donnes traiter sont galement rcupres en mmoire par lunit de contrle et transfres directement lUAL. Les direntes units de lordinateur sont interconnects par des systmes de cblages. Pour simplier larchitecture, elles sont toutes relies par les mmes lignes quelles partagent. On appelle Bus lensemble de ces lignes capables de transmettre les signaux. Il y a 3 bus correspondants aux 3 types dinformations transmettre : adresse, donne et commande (voir Figure 9.1). bus = ensemble de lignes capable de transmettre des signaux correspondant trois type dinformation : adresse, donne et commande. La gure 9.2 prsente larchitecture gnrale dune unit centrale de traitement et les relations avec la mmoire centrale.

9.2

Unit de commande

ensemble de dispositifs coordonnant le fonctionnement de lordinateur an de lui faire excuter la suite doprations spcies dans les instructions du programme Les principaux dispositifs utiliss lors de la recherche en mmoire et du dcodage de linstruction sont :

80

Unit centrale de traitement (cpu)

Mmoire centrale

Dispositif de slection dadresse

Bus RA CO Horloge Dcodeur Squenceur de commandes Registre dtat


oprandes

adresse oprande

RM RI

rsultats

Unit de commande

Unit de calcul
oprandes

Unit arithmtique et logique

Registres
rsultats

Fig. 9.2 Schma gnral du fonctionnement de lunit centrale.

le CO ou CP registre contenant ladresse mmoire o est stocke linstruction rechercher ; RI registre dinstruction : reoit linstruction qui doit tre excute ; le dcodeur dispositif dcodant le code de linstruction et dterminant quelle opration doit tre eectue ; le squenceur dispositif gnrant les signaux de commande ; lhorloge dispositif mettant des impulsion lectroniques rgulires permettant de synchroniser les actions de lUC. Le traitement dune instruction par lunit de commande peut tre dcompos en deux tapes : 1. Recherche de linstruction (fetch ). 2. Excution (qui inclut la recherche ventuelle doprandes).

9.2 Unit de commande

81

9.2.1

cycle de recherche
RA

1. transfert de ladresse de la nouvelle instruction du CORA. 2. impulsion en lecture gnre par lunit de contrle transfert de linstruction dans le RM. 3. transfert du RMRI. 4. code opdcodeursquenceur oprandeRA 5. CO :=CO+1

Mmoire centrale
2

RM 3 RI

1 CO 5 4 Dcodeur 4 Horloge Squenceur

9.2.2

cycle dexcution

Lopration spcie est eectue par lUAL en gnral un cycle dexcution comporte 3 tapes 1. Le squenceur envoie les signaux de commande pour lire loprande, dont ladresse a dj t Mmoire RA RM stocke dans le RA, et le stocke 2 centrale dans le RM. 2. transfert du contenu du RMUAL Pour certaines oprations : ACCRM ou ACCCO 3. excution de lopration sous contrle du squenceur.
Unit de commande 1 UAL ACC 3

Squenceur

9.2.3

synchronisation des oprations

On a vu quun cycle dinstruction comporte deux cycle quil faut donc enchaner ncessit de srialiser les oprations. Pendant le cycle de recherche le RA est modi, lu, puis encore modi. Pour viter les collisions, il faut synchroniser les oprations. Cest le rle de lhorloge (voir Figure 6.4). Les valeurs ne sont mises jour que sur un front montant, et on ne lit que sur un front descendant. Ainsi on ne peut lire une valeur que lon est en train dcrire. On appelle cycle machine la dure dune impulsion. exercice : Pour une horloge 200Mhz, quelle est la dure dun cycle machine ? rponse : 5ns

82

Unit centrale de traitement (cpu)

front descendant

front montant

cycle

Fig. 9.3 Signal dune horloge On appelle cycle CPU le temps dexcution de linstruction la plus courte ou la dure dune action lmentaire provoquant un changement dtat. Remarque : un cycle mmoire est beaucoup plus long que le cycle CPU limitation des performances (do lintrt des mmoires caches). Attention la vitesse dun ordinateur de dpend pas seulement de sa frquence dhorloge, mais aussi de la vitesse de la mmoire, des priphriques, etc... Dautre part les processeurs disposent dsormais de nombreux dispositifs doptimisation, la bonne utilisation de ces dispositifs dpend normment de la conception mme du processeur. Ainsi deux processeurs aux mme jeux dinstruction, la mme frquence dhorloge, mais de conception dirente peuvent avoir des vitesses diffrentes (voir AMD et Intel).

9.3

Squenceur

Le squenceur gnre les signaux de commande ncessaires pour actionner et contrler les units participant lexcution dune instruction donne. Il distribue ces signaux aux dirents organes en fonction dun chronogramme tenant compte des temps de rponse de chaque opration. Un squenceur peut tre ralis de deux faons direntes : cbl ou microprogramm (voir Figure 9.4). cbl : circuit complexe qui fait correspondre chaque instruction un sous-circuit capable de commander son droulement ; le sous-circuit appropri est slectionn par le signal provenant du dcodeur. microprogramm : (Wilkes 51) suite de micro-instructions stocke dans une mmoire de micro-programmation (instructions dencore plus bas niveau et plus dtailles que les instructions machines). code op = adresse de la premire micro-instruction du micro-programme gnrant une suite de signaux quivalents ceux produits par un squenceur cbl. Il sut alors de stocker les micro-programmes (rmware ) correspondant aux dirents code op. dans une mmoire trs rapide (ROM ou EEPROM) et dajouter un mcanisme pour lexcution squentielle des micro-instructions.

9.4 Exemple de micro-machine

83

code op

@
mapping ROM CO micro

dcodeur Mmoire de microprogrammation squenceur cabl


microinstruction 0 1 0 1 1 0 1 0 MEM

signaux UAL

Fig. 9.4 Squenceur cbl ou micro-programm. Lavantage dun squenceur micro-programm est sa souplesse et sa plus grande simplicit de conception. Mais il est un peu plus lent quun squenceur cbl. La plupart des processeurs moderne utilisent la micro-programmation. Par exemple lIntel 8080 possde une mmoire de micro-programmation contenant 504 microinstruction de 21 bits. Normalement le niveau de micro-programmation nest pas accessible lutilisateur. Rcemment on a vu apparatre des machines qui oraient la possibilit de changer le micro-programme. On appelle ces machines, des machines architecture recongurable. Il peut exister galement un niveau de nano-programmation.

9.4

Exemple de micro-machine

Nous allons maintenant voir travers un exemple, la ralisation dune micromachine an den claircir le fonctionnement. Attention il est dicile de dgager des principes gnraux quant la ralisation dune micro-machine, les solutions pouvant tre trs varies.

9.4.1

chemin de donnes

ensemble des composants et moyens emprunts par linformation au cours de son traitement. La gure 9.5 prsente le chemin de donnes de la micro-machine que nous utiliserons comme exemple. Le chemin de donnes de cette micro-machine possde :

84

Unit centrale de traitement (cpu)

Bus C
CO AC PP RI RIT 0 +1 1 AMASQ PMASQ A B C D E F M0 Bus adresses L0 Sorties adresses Entres donnes

Bus A

Bus B

Tampon A

Tampon B

L1

RAD RDO

Bus donnes M3 (WR)

A0 M2 (RD) M1 F0 F1

AMUX

N UAL Z

Dcaleur Sorties donnes

S1 S1

Fig. 9.5 Chemin de donnes dune micro-machine. 16 registres gnraux ; 1 UAL ; plusieurs bus A, B et C Ces registres gnraux sont accessibles et connus quau sein de la couche microprogramm. Chaque registre peut transmettre son information sur les bus A et B et peut tre charg par le bus C. Les bus A et B sont relis directement lUAL 16 bits. Cette UAL est capable de raliser les 4 oprations (A+B), (A ET B), (A) et A. Elle est command par les signaux de commande F0 et F1 et met les signaux N (rsultat ngatif) et Z (rsultat nul).

9.4 Exemple de micro-machine

85

la sortie de lUAL on dispose dun dcaleur qui soit eectue un simple transfert, soit eectue un dcalage dun bit droite ou gauche. Ceci est command par les signaux S0 et S1. remarque : on peut raliser deux dcalages en une fois. Comment ? 1 dans lUAL en ralisant lopration A+A, plus 1 dans le dcaleur. Les tampons ont un double rle1 : maintenir stable les oprandes pendant lexcution dune opration dans lUAL ; prserver la valeur dun oprande source lors dune opration du type A :=A+B. Les registres RDO et RAD servent communiquer avec lextrieur. RAD peut-tre charg par une donne contenu dans B en mme temps quune opration est eectue par lUAL. Le signal M0 commande cette opration. RDO peut tre charg par une donne en sortie du dcaleur, soit isolment, soit pendant le chargement dun des 16 registres gnraux. Cest le signal M1 qui commande son chargement. Les signaux M2 et M3 correspondent respectivement une criture mmoire (cad le transfert RDOBus de donnes) et une lecture mmoire (cad le transfert Bus de donneRDO). Les signaux M2 et M3 correspondent respectivement pour la mmoire aux signaux RD (lecture) et WR (criture). Une donne issue de la mmoire et stocke temporairement dans RDO peut tre transfre dans lUAL. Cest le multiplexeur AMUX qui slectionne soit lentre RDO, soit lentre A, en fonction du signal A0. Le registre RDO peut donc aussi jouer le rle de registre tampon pour lUAL. Fonctionnement : cycle : Le fonctionnement du chemin de donnes est dcrit par un

1. Placement des donnes des registres gnraux sur les bus A et B. 2. Stockage des donnes dans les tampons A et B. 3. Ralisation dans lUAL dune opration + ventuellement dcalage. Simultanment chargement possible de RAD avec la donne dans B gnration dun cycle de lecture en mmoire principale. 4. Chargement de la donne en sortie du dcaleur dans RDO ou/et dans les registres gnraux.

9.4.2

micro-instructions

Pour pouvoir commander le fonctionnement du chemin de donnes on a besoin de 61 signaux : 16 pour le vidage dun des 16 registres sur A ;
Le deuxime rle pourrait tre viter avec lemploi de registre de type ip-op plutt que latch.
1

86

Unit centrale de traitement (cpu)

16 pour le vidage dun des 16 registres sur B ; 16 pour le chargement dun des 16 registres depuis C ; 2 pour le chargement des tampons A et B (L0 et L1) ; 2 pour le choix de loprande de lUAL (F0 et F1) ; 2 pour la commande du dcaleur (S0 et S1) ; 4 pour la commande de RAD et RDO (M0, M1, M2 et M3) ; 1 pour le multiplexeur AMUX (A1) ; 2 pour RD et WR (en fait identiques M2 et M3) Daprs le principe voqu la section 9.3, une micro-instruction doit permettre de gnrer les signaux de commande de la micro-machine, un micro-programme correspondant alors aux signaux quaurait gnr un squenceur cbl. Si on suit ce raisonnement notre micro-instruction devrait comporter au moins 61 bits. En fait on va faire comme pour les instructions du langage machine, on va structurer notre micro-instruction en dirents champs, chacun responsable de certains signaux. Ainsi par exemple 4 bits seront susants pour coder les 16 signaux pour le vidage dun des registres sur A. Bien videmment on aura alors besoin dun micro-squenceur et dun micro-dcodeur pour gnrer les signaux correspondant au code contenu dans chaque champs de la micro-instruction. Mais ainsi on limite la taille dune micro-instruction et on facilite la ralisation de la micro-machine. En eet le micro-squenceur et le micro-dcodeur seront trs simples raliser car on a seulement dcoder un code binaire. Une micro-instruction aura donc le format suivant : AMUX slection de loprande gauche de lUAL (1 bit : 0=A, 1=RDO) UAL choix de lopration raliser (0=(A+B), 1=(A ET B), 2=A, 3=A) DCAL sens du dcalage (0=pas de dcalage, 1=droite, 2=gauche) RDO chargement de RDO avec C (0=non, 1=chargement) RAD chargement RAD avec donne du tampon B RD lecture en mmoire principale WR criture en mmoire principale VALC autorisation de chargement de registre (0=interdit, 1=autoris) ; permet dindiquer que lon veut raliser une opration sans en stocker le rsultat (par exemple pour positionner les signaux N ou Z) ; C numro du registre charger avec la donne sur le bus C (4 bits) ; B numro du registre vider sur le bus B (4bits) ; A numro du registre vider sur le bus A (4bits) ; On obtient donc le format suivant (la taille en bits est indique pour chaque champ) :

9.4 Exemple de micro-machine


AMUX COND DCAL VALC RDO RD ADDR RAD UAL WR

87

Les champs supplmentaires COND et ADDR seront expliqus la section 9.4.4.

9.4.3

cycle dexcution de la micro-instruction

LUAL a besoin que les tampons A et B soient chargs, ce qui prend un certain temps. Elle a galement besoin de temps pour raliser son opration, de mme pour le dcaleur. Ce nest quaprs que la donne sur C pourra tre charge dans un registre. On a donc besoin de squencialiser les oprations ncessit de disposer dune horloge et dun squenceur. Le cycle dexcution dune micro-instruction comporte 4 sous-cycle : 1. Chargement de la MI devant tre excut dans le registre MI. 2. Transfert du contenu des registres gnraux slectionns sur les bus A et B. Chargement des donnes dans les registres tampons A et B. 3. UAL et dcaleurs ralisent leur opration. Si ncessaire RAD est charg pendant lopration. 4. La donne en sortie du dcaleur est stable sur le bus C chargement dans un registre gnral, ou dans RDO, ou les deux. La gure 9.6 prsente la micro-machine dans son ensemble. On remarquera deux partie : gauche le chemin de donnes ; droite le bloc de commande, cest dire lUC. La mmoire de commande est la partie la plus importante, elle contient les micro-instructions des micro-programmes. Celle de notre exemple est constitue de 256 mots de 32 bits. Dans toute machine on dispose dune registre dadresse RA et dune registre de donne RM. Ici les seules adresses et donnes concernent les micro-instructions puisque notre mmoire de commande ne contient pas de donnes. Les registres dadresse et de donnes sont donc confondus avec les registres CO et RI, cest dire pour notre micro-machine, les registre MCO et RMI. Attention la mmoire de commande na rien voir avec la mmoire principale ! Le cycle dexcution peut donc tre dcrit plus prcisment de la manire suivante : 1. Mmoire de commande RMI. 2. RMI stable signaux mis. Dcodeurs A et B ralisent les dcodages. Horloge commande lenregistrement des donnes des tampons. 3. UAL et dcaleur sont sollicites (tps max UAL=tps de laddition). RAD peut tre charg.

88

Unit centrale de traitement (cpu)

Bus C
CO AC PP 16 RI

Bus A

Bus B
16

Dcodeur C
16

1 4 4 4
CK4

Dcodeur B Dcodeur A

RIT 0 +1 1 AMASQ PMASQ A B C D E F L0 M0 Tampon A Bus adresses RAD RDO M3 M2 N F0 F1 UAL Z S1 Dcaleur Sorties donnes RD WR S1 M1 Sorties adresses Entres donnes
AMUX COND

CK3 CK2 CK1

Horloge

MMUX

Compteur incrmental (MCO+1)

MCO

Mmoire de comande 256 x 32

L1 Tampon B

AMUX

A0

Fig. 9.6 Une micro-machine. 4. Donne sur C est stable chargement du registre gnral ou RDO en fonction de VALC et RDO de la MI. Diusion de RD et WR vers la mmoire principale, et de RDO dans RMI. Chargement dans le registre indiqu par C ssi VALC=1 et CK4=1.

9.4.4

squence des micro-instructions

La prochaine micro-instruction excuter se trouve normalement ladresse qui suit celle de la micro-instruction courante. Mais, conformment aux principes dicts par Von Neumann on peut avoir besoin de rompre la squence. Notre micro-instruction dispose pour cela de deux champs supplmentaires COND et ADDR : ADDR adresse en micro-mmoire de branchement COND=0 pas de rupture de squence, MCO :=MCO+1

Microsquenceur

Bus donnes

RDO RAD RD WR VALC

DCAL

UAL

ADDR

9.5 Exemple de micro-programme

89

COND=1 branchement ADDR si N=1 COND=2 branchement ADDR si Z=1 COND=3 branchement ADDR sans condition Pour raliser ce squencement et ces ruptures de squence, notre micro-machine est quipe dun micro-squenceur. Celui-ci, pendant le sous-cycle 4 et en fonction des signaux Z et N, envoie un signal au multiplexeur MMUX pour quil eectue la slection de la prochaine adresse stocker dans le MCO. Soit celle fournit par un circuit ralisant lincrmentation du MCO, soit celle donne par le champ ADDR de la micro-instruction. Exercice : Donnez lquation logique du signal MMUX. rponse : soit D le bit 0 de COND et G le bit 1 de COND, on a : M M U X = GDN + GDZ + GD = DN + GZ + GD La synchronisation de la micro-machine avec la mmoire principale pose galement un problme. En eet le temps dun cycle mmoire est plus long que celui de la micro-machine. Donc un ordre de lecture de la mmoire principale (signal RD) devra tre maintenu pendant un certain temps avant de lire la donne an dtre sr que la lecture a t faite. On choisira ici comme hypothse quun cycle mmoire est deux fois plus long quun cycle dexcution dune micro-instruction. On devra donc maintenir le signal RD stable pendant lexcution de 2 micro-instruction avant de pouvoir utiliser la donne lue en mmoire principale. Exercice : pourquoi nest-ce pas ncessaire pour lcriture ? rponse : parce que on na pas besoin de la donne, on peut donc continuer travailler pendant que la donne est crite en mmoire. Par contre si on voulait la relire, il faudrait attendre.

9.5
9.5.1

Exemple de micro-programme
langage

Normalement une micro-mmoire se programme en binaire, mais comme cela est peu lisible nous allons utiliser un langage symbolique, un peu comme le langage dassemblage. fonction de lUAL fonction fonction fonction fonction 0 1 2 3 : : : : ac:=a+b ac:=et(a,b) ac:=a ac:=inv(a)

90

Unit centrale de traitement (cpu)

Par exemple, ac:=a+b indique que lon ralise dans lUAL laddition des registres A et B et que le rsultat sera plac dans le registre AC, ce qui correspond aux signaux VALC=1, C=1, A=10, B=11, cest dire la micro-instruction :
AMUX COND ADDR DCAL RDO RD VALC RAD UAL WR

10

11

00

dcaleur dcalage gauche : dcalage droite :

decalg decald

Ainsi linstruction symbolique ac:=decalg(a+b) signie-t-elle que lon ralise laddition des registres A et B dans lUAL est que le rsultat est dcal dun bit vers la gauche avant dtre plac sur le bus C. branchements Le branchement inconditionnel sera reprsent par linstruction symbolique goto, les branchements conditionnels scriront par exemple : if n then goto 32; if z then goto 48; On a dj mentionn le fait que le signal VALC servant autoriser les critures du bus C vers les registres tait ncessaire car on devait pouvoir tester une valeur dans lUAL, notamment pour les branchements conditionnels, sans pour autant tre oblig de stocker le rsultat dans un registre. Il nous faut donc une instruction symbolique pour indiquer que lon charge une valeur dans lUAL sans pour autant vouloir stocker le rsultat. Nous utiliserons pour cela un registre ctif ual et nous noterons cette opration par une aectation, ainsi on pourra crire par exemple : ual:=rit; if n then goto 92; lecture/criture en mmoire Pour indiquer une opration de lecture ou dcriture en mmoire, on utilisera simplement les micro-instructions rd et wr.

9.5.2

micro-programme

La particularit des instructions symboliques que nous avons prsentes est quelle ne correspondent pas directement une instruction du micro-programme. En eet, plusieurs de ces oprations peuvent tre excutes simultanment par la micro-machine, une instruction du micro-programme pourra donc correspondre la combinaison de plusieurs instructions symboliques comme le montre lexemple suivant :

9.5 Exemple de micro-programme


AMUX COND RDO RAD WR RD ADDR DCAL VALC UAL

91

rad :=co ; rd ; ual :=ac ;if z then goto 22 ; pp :=pp+(-1) ; rd ; rit :=delag(ri+ri) ;if n then goto 69 ;

0 0 0 0

0 2 0 1

2 2 0 0

0 0 0 2

0 0 0 0

1 0 0 0

1 0 1 0

0 0 0 0

0 0 1 1

0 0 2 4

0 0 2 3

0 1 7 3

00 22 00 69

92

Unit centrale de traitement (cpu)

Chapitre 10

Hirarchie
Sommaire
10.1 10.2 10.3 10.4 10.5 Introduction . . . . . . . . . . . Structure commune toutes les Caches . . . . . . . . . . . . . . . Mmoire virtuelle : principes . Illusion et piges . . . . . . . . . . . . . . . . . hirarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 93 93 93 93

10.1 10.2 10.3 10.4 10.5

Introduction Structure commune toutes les hirarchies Caches Mmoire virtuelle : principes Illusion et piges

94

Hirarchie

Chapitre 11

Entre-sortie
Sommaire
11.1 Dirents dispositifs . . . . . . . . . . . . . . . . 11.2 Connexion E/S au processeur et la mmoire 11.3 Architecture . . . . . . . . . . . . . . . . . . . . 11.3.1 accs direct la mmoire (dma) . . . . . . . . 11.3.2 canaux dE/S . . . . . . . . . . . . . . . . . . . 11.3.3 controleurs . . . . . . . . . . . . . . . . . . . . 11.4 Interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 95 95 95 95 95 95

11.1 11.2 11.3


11.3.1 11.3.2 11.3.3

Dirents dispositifs Connexion E/S au processeur et la mmoire Architecture


accs direct la mmoire (dma) canaux dE/S controleurs

11.4

Interruptions

96

Entre-sortie

Chapitre 12

Amlioration des performances et des capacits


Sommaire
12.1 12.2 12.3 12.4 La retenue Anticipe dans lUAL Technique du pipeline . . . . . . . Mmoire cache . . . . . . . . . . . Mmoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 97 97 97

12.1 12.2 12.3 12.4

La retenue Anticipe dans lUAL Technique du pipeline Mmoire cache Mmoire virtuelle

98

Amlioration des performances et des capacits

Chapitre 13

Exploitation de la machine
Sommaire
13.1 Dveloppement de programmes . . . . . . . . . . . . . . 13.2 Introduction aux systmes dexploitation . . . . . . . . 99 99

13.1 13.2

Dveloppement de programmes Introduction aux systmes dexploitation