Vous êtes sur la page 1sur 48

Chapitre 1

Notions d'architecture générale

des ordinateurs

1.1 Introduction générale

1.1.1 Dénitions
L'informatique : L'académie Française a adopté le terme "Informa-
tique" en 1967 an de désigner la "science du traitement de l'information"
ou plus exactement la "science du traitement rationnel, notamment par
des machines automatiques, de l'information considérée comme le support
des connaissances humaines et des communications dans les domaines tech-
niques", économiques et sociaux.
De nos jours l'informatique s'applique dans tous les domaines de la vie :
 La recherche : calcul scientique, le génie logiciel
 L'aéronautique.
 Gestion : gestion de stock, gestion de page.
 La comptabilité.
 Les jeux, la médecine, les télécommunications, les systèmes de trans-
port, l'enseignement, les ménages.
L'ordinateur : machine électrique de traitement numérique de l'informa-
tion, exécutant à grande vitesse les instructions d'un programme et servant
à classer, calculer et mémoriser.
Le matériel : ensemble des éléments employés pour le traitement auto-
matique de l'information.

1
Le logiciel : ensemble des programmes, procédés et règles relatifs au
traitement de l'information.
Architecture : l'architecture d'un système à microprocesseur représente
l'organisation de ses diérentes unités et de leurs interconnexions. Le choix
architecture est le résultat d'un compromis :
 entre performances et coûts.
 entre ecacité et facilité de construction.
 entre performances d'ensemble et facilité de programmation.
 etc ...

1.1.2 Histoire des ordinateurs


Avant 1600 : on utilise les abaques pour faciliter les calculs (boulier, bâtons
de Neper).
En 1623 : William Schickard inventa la première machine à calculer mé-
canique.
En 1642 : Blaise Pascal créa la machine d'arithmétique (Pascaline), elle
est capable d'eectuer des additions et soustractions.
En 1673 : Gottfried William Von Leibniz ajouta à la Pascaline la multi-
plication et la division.
En 1834 : Charles Babbage inventa la machine à diérence, qui permet
d'évaluer des fonctions.
Les ordinateurs programmables
En 1938 : Konrad Zuse inventa un ordinateur qui fonctionne grâce à des
relais électromécaniques : le Z3. Cet ordinateur est le premier à utiliser le
binaire à la place du décimal.
En 1937 : Howard Aiken met au point un ordinateur programmable me-
surant 17 m de longueur et 25 m de hauteur, permettant de calculer 5 fois
plus vite que l'homme : c'est le Mark I d'IBM.
En 1947 : le Mark II voit le jour, ses engrenages sont remplacés par des
composants électroniques.
Les ordinateurs à lampes
En 1942 : l'ABC (Atanaso Berry Computer) voit le jour.
En 1943 : le premier ordinateur ne comportant plus de pièces mécaniques
est crée grâce à J. Mauchly et J. Presper Eckert : l'ENIAC (Electronic Nu-
2
merical Integrator And Computer). Il occupe une place de 1500 m . Il fut
utilisé pour des calculs ayant servi à mettre au point la bombe H. Il était uni-

2
quement programmable manuellement avec des commutateurs ou des câbles
à encher.
En 1946 : mise au point de l'EDVAC (Electronic Discrete Variable Com-
puter) permettant de stocker 1024 mots en mémoire centrale et 20000 mots
en mémoire magnétique.
Le transistor
En 1948 : le transistor est crée par la rme Bell Labs. Il a rendu les
ordinateurs moins encombrants, moins gourmands en énergie électrique, donc
moins coûteux : c'est la révolution dans l'histoire de l'ordinateur.
Le circuit intégré
En 1958 : Texas Instruments a mis au point le circuit intégré qui permet
de réduire encore la taille et le coût des ordinateurs en intégrant sur un même
circuit électronique plusieurs transistors sans utiliser de l électrique.
Les premiers ordinateurs à base de transistors
En 1960 : l'IBM 7000 est le premier ordinateur à base de transistor.
En 1964 : l'IBM 360 fait son apparition, avec également l'arrivée du DEC
PDP-8.
Les micro-ordinateurs
En 1971 : le premier micro-ordinateur apparaît (le Kenback1) avec une
mémoire de 256 octets.
Les microprocesseurs
En 1971 : le premier microprocesseur, l'Intel 4004, fait son apparition, il
eectue des opérations sur 4 bits simultanément .
En 1972 : le microprocesseur l'Intel 8008 apparaît et permet de traiter 8
bits simultanément.
En 1973 : le microprocesseur, l'Intel 8080 garnit les premiers micro-
ordinateurs : le Micral et le Altair 8800 avec 256 octets de mémoire.
En 1976 : Steve Wozniak et Steve Jobs créent le Apple I dans un garage.
 clavier
 microprocesseur à 1MHz
 RAM : 4 ko
 mémoire vidéo : 1 ko
En 1981 : IBM commercialise le premier "PC" composé d'un processeur
8088 cadencé à 4.77 MHz.
Les ordinateurs d'aujourd'hui
La lois de Moore : on peut placer 2 fois plus de transistor sur une puce
tous les 2 ans.
Il est très dicile de suivre l'évolution de l'ordinateur de nos jours.

3
1.1.3 Les composantes fonctionnelles d'un ordinateur
L'architecture de Von Neumann
L'architecture des ordinateurs actuels repose sur le modèle de Von Neu-
mann (1903-1957), il eu l'idée que la mémoire de l'ordinateur ne devait pas
servir qu'à stocker uniquement des données, mais elle devait également sto-
cker les programmes. Il décrit l'organisation qui devrait être celle d'un ordi-
nateur moderne :
 une mémoire
 une unité de calculs, appelée ALU (Arithmetic and Logic Unit).
 une unité de contrôle (CU).
 les dispositifs d'entrée-sortie, qui permettent de communiquer avec le
monde extérieur.
Les diérents organes du système sont reliés par voies de communications
appelées bus (voir gure 1.1).

Figure 1.1  Le modèle de Von Neumann.


CPU : Central Processing Unit (Unité centrale de traitement.

L'unité centrale de traitement


Elle est composée par le microprocesseur qui est chargé d'interpréter et
d'exécuter les instructions d'un programme, de lire ou de sauvegarder les ré-
sultats dans la mémoire et de communiquer avec les unités d'échange. Toutes

4
les activités d'un microprocesseur sont cadencées par une horloge. On carac-
térise un microprocesseur par :
 sa fréquence d'horloge : en MHz ou GHz.
 le nombre d'instructions par seconde qu'il est capable d'exécuter : en
MIPS.
 la taille des données qu'il est capable de traiter : en bits.

La mémoire principale
Elle contient les instructions du ou des programmes en cours d'exécution
et les données associées à ce programme. Physiquement , elle se décompose
souvent en :
 une mémoire morte (ROM : Read Only Memory) chargée de stocker
le programme. C'est une mémoire à lecture seule.
 une mémoire vive (RAM ; Random Access Memory) chargée de stocker
les données intermédiaires ou les résultats de calculs. On peut lire et
écrire des données dedans, ces données sont perdues à la mise hors
tension.
Remarque : Les disques durs, disquettes,CDROM, etc ... sont des périphé-
riques de stockage et sont considérés comme des mémoires secondaires.

Les interfaces d'entrées / sorties


Elles permettent d'assurer la communication entre le microprocesseur et
les périphériques.

Les bus
Un bus est un ensemble de ls qui assure la transmission du même type
d'information. On retrouve trois types de bus véhiculant des informations en
parallèle dans un système de traitement programmé de l'information (voir
gure 1.2).
 un bus de données : bidirectionnel qui assure le transfert des informa-
tions entre le microprocesseur et son environnement et inversement.
 un bus d'adresses : unidirectionnel qui permet la sélection des empla-
cements à traiter dans un un espace mémoire (ou espaces adressable).
 un bus de commande : constitué par quelques conducteurs qui assurent
la synchronisation des ux d'informations sur les bus des données et
des adresses.

5
Décodage d'adresses
L'existence de plusieurs périphériques autour du microprocesseur néces-
site la présence d'un décodeur d'adresse qui eectue l'aiguillage des données
présentes sur le bus des données. En eet, le microprocesseur communique
avec diérentes mémoires et diérentes boîtiers d'interfaces. Ceux-ci sont
tous reliés sue le même bus de données et pour éviter les conits, un seul
composant doit être sélectionné à la fois.
Lors de la réalisation d'un système micro-programmé, on attribue à chaque
périphérique une zone d'adresse et une fonction "décodage d'adresse" est
donc primordiale an de fournir les signaux de sélection de chacun des com-
posants.

Figure 1.2  Le modèle détaillé d'une architecture d'ordinateur.

Composants d'un ordinateur


Lorsqu'on parle d'un composant d'ordinateur ou PC, on parle de matériel
qui se trouve à l'intérieur de l'ordinateur, contrairement aux périphérique

6
externes qui sont reliés par des câbles ou des moyens de communications
sans ls.
Parmi les composants d'un ordinateur, on trouve :
 L'alimentation : délivre le courant électrique. La transformation du
courant cause une déperdition d'énergie sous forme de chaleur, un
système de ventilation est donc installé dans le coret de l'alimenta-
tion.
 La carte mère : "tenir" et relier tous les autres composants, elle possède
les connecteurs (slots) pour accueillir des dizaines de composants et
périphérique en plus des éléments indispensables. C'est aussi sur une
petite partie de la carte mère que se trouve la ROM sur laquelle est
enregistré le BIOS (gère la conguration de base du matériel et se
charge de faire le lien avec le système d'exploitation).
 CPU.
 RAM.
 Disque dur interne : les données à conserver y sont enregistrées : -
chiers du système d'exploitation, les logiciels et les données.
 Lecteur/graveur CD/DVD
 Carte graphique.

7
Chapitre 2

Architecture d'un

microprocesseur

2.1 Performances d'un microprocesseur

Un microprocesseur est un circuit intégré complexe caractérisé par une


très grande intégration et doté des facultés d'interprétation et d'exécution des
instructions d'un programme. Il est chargé d'organiser les tâches précisées par
le programme et d'assurer leur exécution. En outre, il doit prendre en compte
les informations extérieurs au système et assurer leur traitement. Il regroupe
sur quelques millimètres carré des fonctionnalités toujours plus complexes.

2.1.1 Performances d'un processeur


Quand on parle des performances d'un processeur, on parle typiquement
de sa vitesse, le nombre d'instructions par seconde qu'il peut eectuer. On
considère aussi son coût et sa consommation en énergie.
 Processeur pas cher -> réfrigérateur, montre.
 Processeur moins gourmand en énergie -> vie de batterie plus longue
(Ex : portable).
Le rôle de l'architecture est de faire le choix entre les technologies.
Exemple :
 Vitesse 1.1×, 21 coût, 12 énergie.
 Vitesse 2×, 1.1 coût, 1.1 énergie.

8
2.1.2 Consommation de puissance
Il existe deux catégories de puissance que le processeur consomme :
 Puissance dynamique : puissance consommée par une activité actuelle
dans un circuit électrique.
 Puissance statique : puissance consommée quand le circuit est sous
tension mais inactif.

Puissance dynamique

1
P = ×C ×V2×f ×α (2.1)
2
 C : capacitance ∼ surface de la puce.
 V : voltage.
 f : fréquence.
 α : facteur d'activité.
• Après l'application de a loi de Moor, on obtient :

1
Cnew = × Cold (2.2)
2
Puisque nous voulons construire un processeur plus fort, on va utiliser deux
processeurs.
1 1
Pnew = × 2 × × Cold × V 2 × f × α (2.3)
2 2
Étant donné que V, f, α restent les mêmes, on obtient :

Pnew = Pold (2.4)

Donc on a augmenté la vitesse mais la puissance reste constante.


• Si on augmente la fréquence :

fnew = 1.25 × fold (2.5)

On aura
Pnew = 1.25 × Pold (2.6)

• Si on diminue le voltage

Vnew = 0.8 × Vold (2.7)

9
On aura
Pnew = 0.64 × Pold (2.8)

Mais les performances en vitesse ne vont pas être améliorées.


• Si on augmente un peux la fréquence et diminue un peux le voltage :

fnew = 1.1 × fold (2.9)

et
Vnew = 0.9 × Vold (2.10)

On aura
Pnew = 0.9 × Pold (2.11)

=⇒La solution donc est de diminuer le voltage et d'utiliser des petits


transistors.

Puissance statique
C'est un résultat qui vient de trop diminuer le voltage.

Diminuer le voltage va engendrer des fuites.


V0 : Valeur optimale de V pour que la puissance totale soit la plus petite
possible (processeurs modernes).

10
Figure 2.1  Comparaison des puissances.

Coût de fabrication

Figure 2.2  Coût de fabrication

1. Les puces sont fabriquées en prenant un disque de silicone appelé une


plaquette "Wafer".

2. Le disque est soumis à un nombre d'étapes, chacune de ces étapes


sorte des impressions des aspects du circuit qui devrait apparaître sur
chaque processeur.

11
3. A la n de ces étapes, on prend la plaquette et nous la découpons sous
formes de carrés. Chacun de ces petits carrés sera une puce.

4. Nous prenons chaque puce et nous la mettons dans un paquet qui a


des pins.

=⇒ Si nous avons beaucoup de puces, le coût va être diminué.


=⇒ Si nous avons moins de puces, le coût va être élevé.

% puces qui marchent


Rendement = (2.12)
# totale des puces

12
Exemple :
62 valides
2 défectueuses
rendement = 97%

6 valides
2 défectueuses
rendement = 75%

5000$
Cout d0 une puce = (2.13)
# puces valides
Exemple :
Si le coût d'une plaquette est 5000$ avec 10 défauts par plaquette.
 Petites puces (400 / plaquette) -> Coût = 12.80 $.
 Larges puces (96 / plaquette) -> Coût = 58.20 $.
 Plus larges puces (20 / plaquette) -> Coût = 454.55 $.
Pour bénécier de la loi de Moor :
 Petites puces =⇒ coût diminué (portable).
 Même surface =⇒ plus rapide pour une même coût (PC).

2.2 Architecture de base d'un processeur

Un processeur classique est constitué de trois composantes majeurs :

1. Un ensemble de registres.

2. Une unité de traitement.

3. Une unité de commande

Les registres sont chargés de stocker les diérentes informations à traiter.


Ces trois éléments sont reliés entre eux par des bus internes permettant les
échanges d'informations.
Remarques
Il existe deux types de registres :

13
Figure 2.3  Architecture de base d'un processeur

 Les registres d'usage générale qui permettent à l'unité de traitement


de manipuler des données à vitesse élevée. Ils sont connectés au bus
de données interne.
 Les registres d'adresses connectés sur le bus d'adresses.

2.2.1 L'unité de commande


Elle permet de séquencer le déroulement des instructions. Elle eectue la
recherche en mémoire de l'instruction. De plus, elle assure son décodage et
réalise son exécution et après eectue la préparation de l'instruction suivante.
Elle est composée par :
 Le compteur de programme : constitué par un registre dont le contenu
est initialisé avec l'adresse de la première instruction du programme.
Il contient toujours l'adresse de l'instruction à exécuter.
 Le registre d'instruction et le décodeur d'instruction : chacune des
instructions à exécuter est rangée dans le registre d'instruction puis
est décodée par le décodeur d'instructions.
 Le bloc logique de commande (ou séquenceur) : il organise l'exécution
des instructions au rythme d'une horloge.

14
Figure 2.4  Unité arithmétique et logique

2.2.2 L'unité de traitement


C'est le coeur du microprocesseur. Elle regroupe les circuits qui assurent
les traitements nécessaires à l'exécution des instructions :
 L'unité arithmétique et logique (ALU) est un circuit complexe qui
assure les fonctions logiques (ET, OU, Comparaison, Décalage, etc...)
ou arithmétique (addition, soustraction, ...)
 Le registre d'états : permet de stocker des indicateurs sur l'état du
système (retenue, débordement, ...).
 Les accumulateurs : sont des registres de travail qui servent à stocker
une opérande au début d'une opération arithmétique et le résultat à
la n de l'opération.

2.2.3 Schéma fonctionnel


Exemple
On suppose que le registre Acc contient la valeur 2 et on veut exécuter l'ins-
truction dont l'adresse se trouve au registre PC.

1. Récupérer l'adresse de l'instruction à exécuter au registre PC.

2. Cette adresse est transféré vers la mémoire à travers le bus d'adresses.

3. Le contenu de case de cette adresse va être transféré sur le bus de


données et rangé dans le registre de donnée.

4. Si notre donnée est un code opératoire, elle sera déplacé dans le re-
gistre d'instruction (IR) et décodée par le décodeur d'instruction, si
elle nécessite une donnée provenant de la mémoire, le décodeur com-
mandera la recherche d'un second octet.

15
Figure 2.5  le schéma fonctionnel

5. Après la recherche de donnée, la première opérande qui existe dans le


registre (Acc) et la deuxième qui provient des registres de données sont
considérés comme les deux entrées de l'unité arithmétique et logique.
Le résultat sera enregistré temporairement dans l'accumulateur.

2.2.4 Cycle d'exécution d'une instruction


Le traitement d'une instruction peut être décomposé en trois phases :
 Recherche de l'instruction à traiter.
 Décodage de l'instruction et recherche de l'opérande.
 Exécution de l'instruction.

Recherche de l'instruction à traiter


1. Le PC contient l'adresse de l'instruction suivante du programme.Cette
valeur est placée sur le bus d'adresses par l'unité de commande qui
émet un ordre de lecture.

2. Au bout d'un certain temps (temps d'accès à la mémoire), le contenu


de la case mémoire sélectionnée est disponible sur le bus de données.

16
Figure 2.6  Recherche de l'instruction à traiter

3. L'instruction est stockée dans le registre instruction du processeur.

Décodage de l'instruction et recherche de l'opérande


Le registre d'instruction contient maintenant le premier mot de l'instruc-
tion qui peut être codée sur plusieurs mots. Ce premier mot contient le code
opératoire qui dénit la nature de l'opération à eectuer et le nombre de
mots de l'instruction.
 L'unité de commande transforme l'instruction en une suite de com-
mandes élémentaires nécessaires au traitement de l'instruction.
 Si l'instruction nécessite une donnée en provenance de la mémoire,
l'unité de commande récupère sa valeur sur le bus de données.
 L'opérande est stockée dans un registre.

17
Figure 2.7  Décodage de l'instruction et recherche de l'opérande

18
Exécution de l'instruction
1. Le micro-programme réalisant l'instruction est exécuté.

2. Les drapeaux sont positionnés (registre d'état).

3. L'unité de commande positionne le PC pour l'instruction suivante.

Figure 2.8  Exécution de l'instruction

2.3 Jeu d'instructions et codage

2.3.1 Jeu d'instructions


Le jeu d'instructions est l'ensemble des instructions machines qu'un pro-
cesseur peut exécuter. Ces instructions machines permettent d'eectuer des
opérations élémentaires ou plus complexes. Le jeu d'instructions dénit quelles
sont les instructions supportées par le processeur. Le jeu d'instructions précise

19
aussi quels sont les registres du processeur manipulable par le programmeur.
Exemple
x86, ARM, MIPS

Le jeu d'instructions comporte six groupes :


 Transfert de données : chargement, déplacement, stockage, transfert
de données entre registre-registre ou mémoire -registres, .. ,etc.
 Opérations arithmétiques : les 4 opérations en virgule xe ou ottante
et en simple ou multiple précision.
 Opérations logiques : NOT, AND, OR, XOR, ..., etc.
 Contrôle de séquence : branchement impératif ou conditionnel, boucle,
...etc.
 Entrée/Sorties : lecture, écriture, achage, ..., etc.
 Manipulations diverses : décalages de bits, conversions de format, in-
crémentation ou décrémentation du registre, ..etc.

2.3.2 Codage
Une instruction est la réunion des diérents signaux de commande du
chemin de données du processeur. Elle est découpée en champs :
 Un code opération (opcode).
 Des informations complémentaires sur l'emplacement des données sources
et de la destination.
 La technique associée à la localisation des opérandes d'une instruction
s'appelle l'adressage ou le mode d'adressage.
xxxx

Exemple
Code instruction Code opérande
10010011 00111110

Le nombre d'instructions du jeu d'instructions est directement lié au for-


mat du code instruction. Ainsi, un octet permet de distinguer au maximum
256 instructions diérentes.

20
2.3.3 Mode d'adressage
Il dénit la manière dont le microprocesseur va accéder à l'opérande.
Les diérents modes d'adressage dépendent des microprocesseurs mais on
retrouve en générale :
 L'adresse de registre où l'on traite la donnée contenue dans un registre.
 L'adressage immédiat où l'on dénit immédiatement la valeur de la
donnée.
 L'adressage direct où l'on traite une donnée en mémoire.
L'instruction est codé sur un ou plusieurs octets, selon le mode d'adressage
de la donnée.

2.3.4 Temps d'exécution


Chaque instruction nécessite un certain nombre de cycles d'horloge pour
s'eectuer. Ce nombre de cycles dépend de la complexité de l'instruction ainsi
que le mode d'adressage. Il est plus long d'accéder à la mémoire principale
qu'au registre du processeur. La durée d'un cycle dépend de la fréquence
d'horloge du séquenceur.

Remarque :
La puissance d'un microprocesseur peut être caractérisée par le nombre d'ins-
tructions qu'il est capable de traiter par seconde. Pour cela, on dénit :
 Le CPI (Cycle Par Instruction) : le nombre moyen de cycles d'horloge
nécessaire pour l'exécuter d'une instruction pour un microprocesseur
donnée.
 Le MIPS (Millions d'Instructions Par Seconde) qui représente la puis-
sance de traitement du microprocesseur

F
M IP S = , F en M Hz (2.14)
CP I

2.4 Architectures traditionnelles (CISC et RISC)

L'architecture traditionnelle des microprocesseurs se compose de deux


grandes familles :
 CISC : Complex Instruction Set Computer
 RISC : Reduced Instruction Set Computer

21
2.4.1 L'architecture CISC
• Puisque la mémoire travaillait moins vite que le processeur, les fabri-
quants pensaient qu'il était plus intéressant de soumettre au microprocesseur
des instructions complexes. ainsi, à la place de coder une opération complexe
par plusieurs instructions plus petites, il semblait préférable d'ajouter au jeu
d'instruction du microprocesseur une instruction complexe qui se chargerait
de réaliser cette opération.
• Ce microprocesseur à une architecture CISC est facile à programmer et
utilise la mémoire ecace.
• C'est une architecture où le microprocesseur exécute des tâches com-
plexes par instruction unique. Le nombre d'instructions exécutée devient
alors petit mais le nombre de cycles d'horloge nécessaire devient plus grand.
• Le code machine de ces instructions varie d'une instruction à l'autre et
nécessite donc un décodeur complexe (micro-code).

Exemple
Intel, Motorola, VAX, ...

2.4.2 L'architecture RISC


• Dans la seconde moitié des années 1970 des chercheurs ont fait des
statiques sur la composition en instructions des programmes en langages
machine, ils ont constaté que seules les instructions les plus simples étaient
largement utilisées. D'où l'idée de réduire le jeu d'instructions à celles le plus
couramment utilisées et d'en améliorer la vitesse de traitement.
• RISC est une architecture dans laquelle les instructions sont en nombre
réduit. Sa réalisation libère de la surface permettant d'augmenter le nombre
de registres ou d'unités de traitement. Chacune de ses instructions s'exé-
cutent ainsi en un cycle d'horloge.

Exemple
PowerPC, Sun, SPARC, ...

22
2.4.3 Comparaison CISC/RISC
Architecture RISC Architecture CISC
Instruction simple (1 cycle) Instruction Complexe (plusieurs cycles)
Instruction au format xe Instruction au format variable
Décodeur simple Décodeur complexe (micro-code)
Beaucoup de registres Peu de registres
Seules les instructions LOAD et Toutes les instructions sont suscep-
STORE ont accès à la mémoire tibles d'accéder à la mémoire.

2.5 Pipeline

• Le pipeline est un mécanisme qui permet d'augmenter la vitesse d'exécu-


tion des instructions dans un microprocesseur. Avec un pipeline, le micropro-
cesseur commence une nouvelle instruction avant d'avoir ni la précédente.
• Le temps d'exécution d'une seule instruction n'est pas réduit. Par
contre, le débit du microprocesseur, c'est à dire, le nombre d'instructions
exécutées par unité de temps, est augmenté.
• Une machine pipeline se caractérise par le nombre d'étapes utilisées
pour l'exécution d'une instruction, on appelle aussi ce nombre d'étapes le
nombre d'étages du pipeline.

Exemple
Exécution en 4 phases d'une instruction
 Recherche : R
 Décodage : D
 Exécution : E
 Sauvegarder le résultat : S
Modèle classique :
Modèle utilisant le pipeline :

2.5.1 Gain de performances


• Dans une machine utilisant la technique du pipeline, on débute l'exécu-
tion d'une instruction à chaque cycle et le pipeline est pleinement occupé à

23
Figure 2.9  Modèle classique

Figure 2.10  Modèle utilisant le pipeline

24
partir du quatrième cycle. Le gain obtenu dépend alors du nombre d'étages
du pipeline.
• Soient n instructions qui s'exécutent chacune en k cycles d'horloge, il
faut :
 n × k cycles d'horloge pour une exécution séquentielle.
 k cycles d'horloge pour exécuter la 1er instruction.
 k + i − 1 cycles d'horloge pour exécuter la ime instruction.
 ...
 k+n−1 cycles d'horloge pour exécuter la nme instruction.
Le gain obtenu est donc de :

n×k
G= (2.15)
k+n−1

2.5.2 Cache mémoire


• Problème : il existe une latence d'accès entre le processeur et la mémoire
principale.
• L'une des solutions à ce problème est d'utiliser une mémoire très rapide
entre le processeur et la mémoire principale, elle est appelée cache mémoire.
• Au départ cette mémoire était intégrée en dehors du microprocesseur,
maintenant, elle fait partie intégrante du processeur, et de déduire déclare
même sur plusieurs niveaux.
• Le microprocesseur envoie toutes ses requêtes à le cache mémoire comme
s'il s'agissait de la mémoire principal :
 Si la donnée (ou instruction) est présente dans le cache, elle sera en-
voyée directement au processeur, on parle de succès de cache (a).
 Si la donnée (ou instruction) n'est présente dans le cache, le contrôleur
de cache envoie une requête à la mémoire principale, cette dernière
renvoie l'information récupérée au processeur tout en la stockant dans
le cache, on parle de défaut de cache (b).

25
Figure 2.11  Le cache mémoire

26
Chapitre 3

Représentation interne des

données

3.1 Introduction

Les types d'informations traitées directement par un processeur ne sont


pas très nombreux.
Les données :
 les entiers (naturels et relatifs).
 les ottants (simple et double).
 les caractères.
Le codage de ces trois types est actuellement dénie formellement par des
standards(normes spéciés par des organisations internationales.).
Les instructions : dont le codage est spécique au processeur.
L'information traité par un ordinateur est toujours représentée sous la
forme d'un ensemble de nombres écrits en base 2 (suite de 0 et de 1). L'unité
d'information est le bit.

27
3.1.1 Unités de mesure en informatique
Préxes binaires (préxes CEI
kibi(Ki) = 210 = 1024
mbi(M i) = 220
gibi(Gi) = 230
tbi(T i) = 240
pbi(P i) = 250
exbi(Ei) = 260
zbi(Zi) = 270
yobi(Y i) = 280
Préxes décimaux (préxes SI
kilo(K) = 103
mga(M ) = 106
giga(G) = 109
tra(T ) = 1012
pta(P ) = 1015
exa(E) = 1018
zetta(Z) = 1021
yotta(Y ) = 1024
La numérotation permet de représenter un mot (ou nombre) par la juxtapo-
sition ordonnée de variables (ou symboles)) pris parmi un ensemble.
Dans un système de numérotation en base B, un nombre noté N(B) égal
à :
n−1
X
N(B) = ak × B k = an−1 an−2 ...a1 a0 (3.1)
k=0

 B : base ou nombre de chires diérents qu'utilise le système de nu-


mérotation.
 ak : chire de rang k.
 B k : Pondération associée à ak .

3.2 Codage de l'information

Le codage de l'information consiste à établir une correspondance entre la


représentation externe de l'information et sa représentation interne dans la
machine. On utilise la représentation binaire car elle est simple et facile à

28
réaliser.

3.2.1 Données non numériques


La norme ASCII établit une correspondance entre une représentation bi-
naire des caractères de l'alphabet latin et les symboles, les signes, qui consti-
tuent cet alphabet.

Exemple
a est associé à 1100001 (97)
A est associé à 1000001 (65)

Le code ASCII de base représente les caractères sur 7 bits (mise au point
pour la langue anglaise), en suite il a été étendu à 8 bits pour pouvoir coder
plus de caractères (code ASCII étendu).

3.2.2 Les bases décimale, binaire et hexadécimale


Le système décimal (base 10) est basé sur dix symboles, de 0 à 9.
523(10) = 5.102 + 2.101 + 3.100

Le système binaire (base 2) utilise seulement deux symboles 0 et 1.


16(10) = 10000(2) = 1.24 + 0.23 + 0.22 + 0.21 + 0.20

Le système hexadécimale (base 16) est basé sur seize symboles, de 0 à 9


et de A à F.

29
Décimal Binaire Hexadécimale
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Conversion décimal-binaire
La conversion du binaire au décimal est facile, il sut juste de faire l'ad-
dition entre les diérentes puissances du nombre 2.

1001101(2) = 2 6 + 2 3 + 22 + 20
= 64 + 8 + 4 + 1
= 77(10)
Pour la conversion du décimal au binaire on fait une suite de divisions
euclidiennes par 2.

30
77(10) = 1001101(2)

Conversion hexadécimale-binaire
Pour convertir un nombre binaire en hexadécimale, il sut de faire des
groupes de quatre bits ( en commençant depuis la droite).
1001101(2) = 4D(16)

Pour convertir d'hexadécimale en binaire, il sut de faire l'opération


inverse.

3.3 Représentation des nombres

3.3.1 Représentation des nombres entiers


Représentation d'un entier naturel
Un entier naturel est un nombre entier positif ou nul. Pour coder des
8
nombres entiers naturels compris entre 0 et 255, il nous sura 8 bits (2 =
256. D'une manière générale un codage sur n bits permet de représenter des
nombres entiers naturels compris entre 0 et 2n − 1.

Exemple
9 = 00001001(2) , 128 = 10000000(2)

Représentation d'un entier relatif


Un entier relatif est un entier pouvant être négatif. Il faut donc coder le
nombre de telle façon que l'on puisse savoir s'il s'agit d'un nombre positif
ou d'un nombre négatif, et il faut de plus que les règles d'addition soient
conservées.
Un entier relatif positif ou nul sera représenté en binaire comme un entier
naturel, à la seule diérence que le bit de poids fort représente le signe.
Exemple
Si on code un entier naturel sur 4 bits, le nombre le plus grand sera 0111(2) =
7(10)
Un entier relatif négatif sera représenté grâce au codage en complément
à deux.

31
1. Écrire la valeur absolue du nombre en base 2. Le bit du poids fort doit
être égale à 0.

2. Inverser les bits.

3. On ajoute 1 au résultat (les dépassements sont ignorés). Cette opé-


n
ration correspond au calcul de 2 − |x|, où n est la longueur de la
représentation et |x| la valeur absolue du nombre à coder.

Cette opération correspond au calcul de 2n − |x|, où n est la longueur de la


représentation et |x| la valeur absolue du nombre à coder.
Exemple
Calculer la valeur de −19 sur 8bits :

1. | − 19|(10) = 00010011
2. 11101100
3. 11101101
11101101 + 00010011 = 00000000 (avec un retenu de 1 qui est éliminée).

3.3.2 Représentation d'un nombre réel


En base 10, l'expression 652.375 est une manière abrégé d'écrire : 6.102 +
5.10 + 2.10 + 3.10 + 7.10−2 + 5.10−3
1 0 −1
2
Il en va de même pour la base 2. Ainsi, l'expression 111.101 signie : 1.2 +
1.21 + 0.20 + 1.2−1 + 0.2−2 + 1.2−3 .

Conversion de binaire en décimal


La conversion se fait rapidement d'un nombre réel de la base 2 vers la
base 10.

110.101(2) = 1.22 + 1.21 + 0.20 + 1.2−1 + 0.2−2 + 1.2−3


= 4 + 2 + 0.5 + 0.25 + 0.125
= 6.875(10)

32
Conversion de décimal en binaire
 La partie entière se transforme comme au par avant.
 La partie décimale se fait selon le schéma suivant :
0.437 × 2 = 0.874
0.874 × 2 = 1.748
0.748 × 2 = 1.496
0.496 × 2 = 0.992
0.992 × 2 = 1.984
0.984 × 2 = 1.968
0.421875(10)

La norme IEEE 754


La norme IEEE 754 dénit la façon de coder un nombre réel. Cette norme
se propose de coder le nombre sur 32 bits et dénit trois composantes :
 le signe est représenté par un seul bit, le bit de poids fort.
 l'exposant est codé sur les 8 bits consécutifs au signe.
 la mantisse (les bits situés après la virgule) sur les 23 bits restants.
Certains règles sont à respecter :
 l'exposant 00000000 est interdit.
 l'exposant 111111 est interdit.
 il faut rajouter 127 (01111111) à l'exposant pour une conversion de
décimal vers un nombre réel binaire.
Un nombre réel x s'écrit sous la forme :

x = (−1)S × 2E−127 × (1 + F ) (3.2)

 S est le bit de signe.


 E est l'exposant auquel on doit bien ajouter 127 pour obtenir son
équivalent codé.
 F est la partie fractionnaire.
Exemple
Traduisons en binaire, en utilisant la norme IEEE 754, le nombre −6.625.
 6.62510 = 110.1010(2)
 Nous mettons ce nombre sous la forme 1.partie fractionnaire 10101000000000000000000.
 Exposant = 127 + 2 = 129(10) = 10000001(2) .
Signe Exposant Mantisse
1 10000001 10101000000000000000000

33
3.4 Opérations arithmétiques

Les opérations arithmétiques s'eectuent en base quelconque B de la


même manière qu'en base 10. Une retenue apparaît lorsqu'on dépasse la va-
leur B de la base.

3.4.1 Addition
Cas de deux nombres positifs
Eectuons l'addition (+14)(10) et (+15)(10)
(+14)(10) = 00001110(2)
(+15)(10) = 00001111(2)

Cas de deux nombres de signes diérents


Eectuons l'addition des nombres suivants :
(+19)(10) = 00010011(2)
(−14)(10) = 11110010(2)

Eectuons l'addition des nombres suivants :


(−19)(10) = 11101101(2)
(+14)(10) = 00001110(2)

34
Eectuons l'addition de (−19)(10) et (−14)(10)
(−19)(10) = 11101101(2)
(−14)(10) = 11110010(2)

3.4.2 Soustraction
La soustraction en binaire se fait de la même façon qu'une addition. Si
l'on soustrait un bit à un autre à zéro, on soustrait une retenue pour le bit
de poids plus élevé.
0−1=1

Exemple
20(10) − 10(10)
20(10) = 00010100(2)
10(10) = 00001010(2)

35
3.4.3 Multiplication
La multiplication en binaire est la même chose que la multiplication en
décimale.

Exemple
7(10) × 3(10)
7(10) = 00000111(2)
3(10) = 00000011(2)

3.4.4 Division
La division en binaire est eectuée de la même manière qu'on décimal.

Exemple
Eectuons la division de 21(10) par 7(10)

36
Chapitre 4

Représentation interne des

données

4.1 L'algèbre de Boole

L'algèbre de Boole est la partie des mathématiques qui s'intéresse aux


opérations et aux foncions sur les variables logiques.
On appelle B l'ensemble constitué de deux éléments appelés valeurs de
vérité {0, 1}, et on dénit les lois ET et OU et une transformation appelée
complémentaire N ON .
 ET : Elle est dénie de la manière suivante : a et b est V RAI si et
seulement si a est V RAI et b est V RAI . a.b
Cette loi est notée aussi
 OU : Elle est dénie de la manière suivante : a OU b est V RAI si
et seulement si a est V RAI ou b est VRAI, ou si a et b sont V RAI .
Cette loi est notée a + b.
 N ON : Le N ON (a) est V RAI si et seulement si a est F AU X . Cette
loi est notée aussi ā.

4.2 Fonctions logiques et tables de vérité

Une table de vérité est un tableau qui représente des entrées (en colonne)
et des états binaires (0 et 1). Le résultat est exprimé sous forme binaire et
se lit dans la dernière colonne.

37
38
4.2.1 Propriétés utiles
Associativité
 (a + b) + c = a + (b + c) = a + b + c
 (a.b).c = a.(b.c) = a.b.c

Commutativité
 a+b=b+a
 a.b = b.a

Distributivité
 a.(b + c) = a.b + a.c
 a + (b.c) = (a + b).(a + c)

Idempotence
 a + a + ... + a = a
 a.a.....a = a

39
Élément neutre
 a+0=a
 a.1 = a

Élément nul
 1+a=1
 0.a = 0

Complémentarité
 a + ā = 1
 a.ā = 0

Lois de Morgan
 ¯ = ā + b̄
a.b
 a+¯ b = ā.b̄

Priorité
La fonction ET (multiplication logique) est prioritaire par rapport à la
fonction OU (somme logique).

4.2.2 Fonction logique associée à un circuit


Soit un système logique à n entrées (e1 , e2 , ..., en ) et une sortie S =
f (e1 , e2 , ..., en ). Pour calculer f à partir d'un schéma de circuits logiques,
il sut d'indiquer à la sortie de chaque opérateur la valeur de l'expression
booléene en cours. Puis on simplie l'expression obtenue à l'aide des axiomes
de l'algèbre de Boole.
Exemple

40
4.2.3 Circuit logique associé à une fonction
La création de circuits logiques à partir d'une fonction booléen f à n
entrées est aussi simple. Il sut, dans la fonction, d'exprimer graphiquement
chaque opérateur par un circuit logique, les entrées étant les opérandes de
l'opérateur. En répétant l'action sur tous les opérateurs, on construit un
graphique de circuit logique associé à f.
Exemple

4.3 Tables de Karnaugh

Une table de Karnaugh est une méthode inventée par Maurice Karnaugh
et qui sert à simplier des opérations logiques ou à trouver l'équation corres-
pondant à une table de vérité.

41
4.3.1 Principe
Soit la table de vérité de S suivante avec les variables A, B, C et D.

A B C D S
0 0 0 0 1
0 0 0 1 0
0 0 1 0 1
0 0 1 1 1
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1

La table de Karnaugh correspondante se présente ainsi :

xxxxCD
00 01 11 10
AB
00 1 0 1 1
01 0 1 1 1
11 0 1 1 1
10 1 0 1 1

4.3.2 Méthode de recherche de l'équation de la table de


vérité
Pour trouver une équation logique, il faut :

1. Regrouper les valeurs de S égales à a dans des rectangles ayant comme


nombre de cases une puissance de 2 (16, 8, 4, 2, ou 1 cases).

2. Les groupes formés doivent être les moins nombreux possibles, mais
ils doivent englober tous les 1. On peut faire des chevauchements.

42
3. On a intérêt à dessiner des rectangles les plus grands possibles.

4. On peut considérer cette table comme un tore : la dernière ligne est


adjacente à la première et la première colonne est adjacente à la der-
nière.

Mise en équation
 Le rectangle bleu correspond à l'équation C, puisque dans ces deux
colonnes C est toujours égal à 1.
 Le carré vert correspond à l'équation (B et D) puisque dans ces cases
B = 1 et D = 1.
 L'équation du rectangle rouge est (B̄ et D̄), cas dans ces quatre cases
D=0 et B=0
 On fait ensuite la somme des trois équations :
S = C ou (B et D) (B̄ et D̄) = C + B.D + B̄.D̄
Exemple
Soit la table de vérité suivante :

43
x y c z r
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

z = x̄.ȳ.c + x̄.y.c̄ + x̄.ȳ.c̄ + x.y.c

r = x̄.y.c + x.ȳ.c + x.y.c̄ + x.y.c

4.4 Circuits logiques combinatoires

4.4.1 Réalisation d'un additionneur binaire


Demi-additionneur
Prenons les tables de vérités du "⊕" (Xor), du "+" et du "." et adjoi-
gnons la table de calcul de l'addition en numération binaire.

a b a⊕b a+b a.b


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

En suite la table d'addition en numération binaire :

+ 0 1
0 0 1
1 1 0(1)

0(1) représente la retenue 1 à reporter.


En considérant une addition binaire comme la somme à eectuer de deux
mémoires à un bit, nous observons dans l'addition binaire les diérentes con-
gurations des bits concernées (notés a et b). Nous aurons comme résultat un

44
bit de somme et un bit de retenue :

bit a bit b bit somme bit retenue


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

Si l'on compare avec les bits d'opérateurs booléens, on s'aperçoit que


l'opérateur ⊕ (Xor) fournit en sortie les mêmes congurations que le bit de
somme, et que l'opérateur "." (Et) délivre en sortie les mêmes congurations
que le bit de retenue. Il est donc possible de simuler une addition binaire avec
00
les deux opérateurs  ⊕ et .. Nous venons de construire un demi-additionneur
sur un bit. Ce demi-additionneur ne prend pas en compte de possible retenue
de l'addition précédente.

Additionneur complet
Soient a et b deux nombres binaires à additionner dans l'UAL. Nous sup-
posons qu'ils sont stockés chacun dans une mémoire à n bits. Nous notons ap
et bp leur bit respectif de rang p. Lors de l'addition des bits ap et bp il faut
prendre en considération l'éventuelle retenue notée rp−1 provenant du calcul
du rang précédent.

45
ap ⊕ b p ap bp rp−1 sp rp
0 0 0 0 0 0
0 0 0 1 1 0
1 0 1 0 1 0
1 0 1 1 0 1
1 1 0 0 1 0
1 1 0 1 0 1
0 1 1 0 0 1
0 1 1 1 1 1

sp = ap ⊕ bp ⊕ rp−1
rp = ap .bp + (ap ⊕ bp ).rp−1

Pour simplier le schéma, on considère le schéma d'un demi-additionneur


comme ci-dessous :

Un additionneur complet se présente alors comme suit :


Additionneur à 4 bits :

46
Figure 4.1  Représentation d'un additionneur complet à deux bits

47
Figure 4.2  Représentation d'un additionneur à 4 bits

48