Vous êtes sur la page 1sur 79

Chapitre 1

Structure de base et
fonctionnement d’un ordinateur

A. El Imrani

Définitions
Ordinateur
Machine qui traite une information fournie par un organe
d’entrée suivant un programme et délivre une information
sur un organe de sortie
Architecture
Conception et organisation des composants matériels de
l’ordinateur
Etude du fonctionnement des composants internes d’un
ordinateur.
Elle traite du:
 type des informations manipulées et de leur codage,
 dialogue entre composants,
 fonctionnement logique interne des composants.

1
Architecture de l'ordinateur
Deux composantes:

• Architecture et organisation matérielle:


Le processeur, flots de données, structure de bus, etc.

• Architecture du jeu d'instructions (ISA):


– Interface entre le logiciel et le matériel
– Ensemble des instructions que peut exécuter un
processeur
– Type des données
– Organisation de la mémoire et entrée/sorties

Architecture matérielle

Architecture de Von Neumann

Architecture de Harvard

Architectures Parallèles
Amélioration de l'unité centrale d'une
architecture de Von Neumann ou de Harvard.

Nouvelles architectures

2
Architecture de J. Von Neumann
• John Von Neumann est à l'origine d'un modèle de machine
universelle de traitement programmé de l’information (1946).

 Concept de programme enregistré


 Les instructions et données d’un programme, sont
d’abord chargées en mémoire, avant d’être traitées
par le processeur.

 Machine de Von Neumann (1952)

Remarque
Pratiquement, plus de 80 % des ordinateurs sont basés
sur l’architecture de Neumann.

Schéma fonctionnel

 Processeur: Traite les informations et coordonne les


échanges
 Mémoire: Contient les instructions et données
 Interface E/S: Permettent la communication avec les
périphériques
 Les bus: Véhiculent les informations
 Horloge: Synchronise les échanges.

3
Schéma complet

Notion de programme enregistré

4
Architecture de Harvard

Caractéristique
– Séparation physique de la mémoire des instructions et la mémoire
de données
Avantages
• Accès simultané aux instructions et aux données
• Augmentation du flux des informations
Exemple
• 68030 de Motorola

Le processeur : structure de base


• Cerveau de l'ordinateur aussi appelé microprocesseur ou CPU
(Central Processor Unit)
• 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.

• Comprend dans un même circuit:


– Unité de gestion des bus qui gère les flux d'informations
entrant et sortant
– Unité de commande (ou de contrôle): Décode et fait
exécuter pas à pas les instructions du programme en cours.
– Unité de calcul Arithmétique et Logique (UAL): exécute en
binaire tous les calculs (arithmétiques et logiques)
– Registres: contiennent les informations utilisées par le
processeur pour l’exécution des programmes, ainsi que l’état
du processeur.

5
Structure simplifiée d ’un microprocesseur

RI: Contient le code de l’instruction qui va être exécutée


CO (compteur ordinal) ou IP (pointeur d’instruction): Contient l’adresse mémoire
de la prochaine instruction
RTA: registre tampon d'adresse, utilisé pour accéder à une donnée en mémoire
ACC, RTUAL: Contiennent les opérandes de l’UAL
Tampons: Contiennent les informations (adresses, données, etc) envoyées vers
les unités externes ou provenant de ces unités.

Caractéristiques principales
• Fréquence: Cadence à laquelle il exécute les instructions,
exprimée en Méga Hertz (MHz) ou Giga Hertz (GHz)
Exemple: processeur cadencé à 600 Mhz effectuera 600 millions
d'opérations élémentaires par seconde
Pentium 800  800 MHz

• Nombres et taille de registres (registres 8, 16, 32 ou 64


bits)

• Types d’architectures: CISC, RISC, VLIW

• Jeu d’instructions:Type et nombre d’instructions machine,


mode d’adressage, etc.

• Processeurs de type x86 fabriqués par Intel, AMD, Cyrix,


processeurs 68xxx (Motorola), PowerPC, etc.

6
Principales unités du microprocesseur
Les registres
Sont utilisés par le processeurs pour stocker les informations
utiles pour l’exécutions des instructions (code instructions,
données, adresses)
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 : chaque instruction à exécuter est
rangée dans le registre instruction puis est décodée par le
décodeur d’instruction.

Les registres généraux sont les registres de travail du


processeur, ils servent à stocker les références aux opérandes, les
résultats des opérations effectuées.

Principales unités du microprocesseur


L’unité de commande
Elle permet de séquencer le déroulement des instructions. Elle
effectue la recherche en mémoire de l'instruction. Comme chaque
instruction est codée sous forme binaire, elle en assure le
décodage pour enfin préparer son exécution par l’UAL, puis
effectue la préparation de l'instruction suivante.
L’unité Arithmétique et Logique (UAL) est un circuit complexe
qui assure les fonctions logiques ou arithmétique.
Opérations arithmétiques :
ADD (+), SUB (-), MUL (*), DIV (:), INC (+ 1), DEC (- 1)
Opérations logiques :
AND, OR, XOR, NOT, CMP
LSL, LSR, ASR (décalages)

7
L’unité Arithmétique et Logique (UAL): Exemple

Principales unités du microprocesseur


Le registre d'état est généralement composé de 8 bits à
considérer individuellement. Chacun de ces bits est un
indicateur dont l'état dépend du résultat de la dernière
opération effectuée par l’UAL. On les appelle indicateur d’état
ou flag ou drapeaux. Dans un programme le résultat du test de
leur état conditionne souvent le déroulement de la suite du
programme. On peut citer par exemple les indicateurs de:
Retenue (carry: C)
Retenue intermédiaire (Auxiliary-Carry: AC)
Signe (Sign: S)
Débordement (overflow: OV ou V)
Zéro (Z)
Parité (Parity: P)

8
Les Bus
Permettent la communication entre les différentes unités
d ’un ordinateur.

Un Bus est un ensemble de fils électriques (1 fil = 1 bit)


permettant de transmettre en parallèle plusieurs
informations entre les différentes unités de l’ordinateur:

Deux types:
 Le bus système
 Le bus d'extension (parfois appelé bus d'entrée/sortie)

Caractéristiques des bus


– Volume d'informations transmises simultanément (exprimé en
bits), correspondant au nombre de lignes sur lesquelles les
données sont envoyées de manière simultanée
Exemple: Une nappe de 32 fils permet ainsi de transmettre
32 bits en parallèle
 On parle ainsi de "largeur de bus" pour désigner le nombre
de bits qu'il peut transmettre simultanément
– La vitesse du bus est également définie par sa fréquence
(exprimée en Hertz), c'est-à-dire le nombre de paquets de
données envoyés ou reçus par seconde
 On parle de "cycle" pour désigner chaque envoi ou
réception de données
– La bande passante d'un bus, i.e le débit de données qu'il peut
transporter, en multipliant sa largeur par sa fréquence.
– Nature des informations véhiculées: données, adresses ou
commandes.

9
Le bus système
Canal (pistes de la carte-mère) reliant le processeur à la
mémoire vive du système:

Bus d'adresse: transporte les adresses mémoire auxquelles


le processeur souhaite accéder pour lire (instructions,
données) ou écrire une donnée.

Bus de données: véhicule les informations en provenance ou


à destination du processeur

Bus de contrôle: Commandes du processeur ou Requêtes


des autres organes (lecture, écriture, sélection mémoire,
E/S, demande d’interruption, etc.)

Le bus d'extension

 Parfois appelé bus d'entrée/sortie

 Permet de relier, à la carte mère, les divers


composants (USB, série, parallèle, cartes branchées
sur les connecteurs PCI, disques durs, lecteurs et
graveurs de CD-ROM, etc.).

 Permet surtout l'ajout de nouveaux périphériques


grâce aux connecteurs d'extension (appelés slots)
connectés sur le bus d'entrées-sorties.

10
Les bus d’extension

ISA: Industry Standard Architecture


EISA: Extended Industry Standard Architecture
MCA: Multi Channel Architecture
VLB: Vidéo Electronics Standard Association Local Bus
PCI: Peripheral Connect Interconnexion
AGP: Accelerated Graphics Port
USB: Universal Serial Bus

Objectifs:
Répondre aux évolutions des architectures, en tenant
compte des systèmes existants

La mémoire
• Stocke les informations (instructions, données) utilisées par le
processeur. L'information élémentaire (bit) est mémorisée dans
une cellule ou point mémoire. Physiquement, chaque cellule
mémoire est formée par un composant électronique
(condensateur, bascule,). Ces cellules sont groupées en mots de
m bits (case mémoire), c'est-à-dire que les m bits sont traités
(écrits ou lus) simultanément.
• Juxtaposition cases mémoire
• Taille d'une case mémoire
– Octet : 8 bits (1 byte)
– word : 16 bits, Double word : 32 bits, Quad word 64 bits : en
fonction des machines (8, 16 ou 32 bits)
• Chaque case mémoire est numérotée (adresse)
• Notation :
– Si M désigne l’adresse d’une case mémoire
– [M] représente son contenu

11
Structure logique de la mémoire

Adresses Case mémoire


0110 1101
0x00 0000 0000
0100 0101
0x01 0000 0001
0010 1111
0000 0010
0000 0011 1101 0101

0000 0100 0110 1001

. . . . . . . .
1010 1101
0111 1011
0011 1000
0111 1100
1100 0101
0111 1101
1010 1001
0111 1110
0111 1010
0x7F 0111 1111

Caractéristiques des mémoires

• Capacité : quantité d'informations qu'elle peut stocker


– 1 octet = 8 bits
– kilo-octet  Ko = 1024 octets = 210 octets
– méga-octet  Mo = 1024 Ko = 210 Ko
– giga-octet  Go = 1024 Mo = 210 Mo
– téra-octet  To = 1024 Go = 210 Go

• Exemple: Une mémoire centrale de 1 Méga mots de 16 bits


– 1 x 1024 K-mots
– 1 x 1024 x 1024 mots
– 1 x 1024 x 1024 x 2 octets
– 1 x 1024 x 1024 x 2 x 8 bits

12
Caractéristiques des mémoires

• Volatilité
– Temps durant lequel elle maintient les informations
– Alimentation de ces mémoires.

• Temps d'accès
– Temps pour accéder à l'information
– de l'ordre de la nanoseconde pour les mémoires
actuelles.

• Type d'accès
– Accès direct à l'information, accès aux mots-mémoire
par leur adresse
– Accès séquentiel.

Accès mémoire
Organe passif qui répond aux ordres de lecture ou d’écriture du
processeur.

Le fonctionnement d'un circuit mémoire peut


être décrit par les opérations suivantes.

Lecture
 Le microprocesseur place l’adresse sur le
bus d'adresses
 Il Active le signal de lecture (R)
 Les données ou instructions sont envoyées
vers le microprocesseur sur le bus données

Écriture
 Le microprocesseur place l’adresse sur le
bus d'adresse, la donnée sur le bus de
données,
 Active le signal écrire (W)

13
Accès mémoire

Organisation de la mémoire
RAS (Row Access Strobe) quand il prend la valeur 0 il indique
que le bus d'adresse contient le numéro de ligne d'une cellule
mémoire.
CAS (column Access Strobe) quand il prend la valeur 0 il indique
que le bus d'adresse contient le numéro de colonne d'une cellule
mémoire.
L'accès en lecture (ou en écriture) suit le schéma suivant:

14
Types de mémoires

 RAM: Random Access Memory, accès direct à chaque


cellule mémoire, lecture/écriture (mémoire centrale),
volatile.

 ROM: Read Only Memory, lecture seulement, non


volatile (bios)

 PROM, EPROM, REPROM, Flash ROM:


Mémoires Programmables

La mémoire RAM
• La mémoire vive ou RAM (Random Access Memory,
mémoire à accès aléatoire)
– Mémoire principale du système
– Espace permettant de stocker de manière temporaire
des informations lors de l'exécution d'un programme

– Structure:
• Le processeur peut accéder directement à n’importe quel
emplacement (de la mémoire) dont il connaît l’adresse

– Caractéristiques:
• Lue et écrite à volonté
• Volatile: son contenu est perdu quand on arrête l’ordinateur
• Consomment peu d’énergie

15
Types de mémoire RAM
 RAM Statique (ou SRAM)
 Unité de stockage est une bascule
 Très rapide (entre 6 et 15 ns)
 Chère  Mémoires de faible capacité (mémoire cache)

 RAM Dynamique (ou DRAM)


 Plus lente
 Information stockée sous forme de charges dans des
condensateurs (Transistors MOS)
 Condensateur se décharge au cours du temps
 Nécessite des rafraîchissements
Mémoire asynchrone: le processeur ne peut engager un nouvel accès
tant que l’accès précédent n’est pas achevé.
Mémoire synchrone: le processeur peut engager des accès consécutifs
même si l’accès précédent n’est pas achevé.

Mémoire DRAM

Avantages: 1 seul Transistor,


 Peut être utilisée en grande quantité
Inconvénients:
 Volatile
 Lecture destructrice
 Dynamique  rafraîchissement
 Temps d ’accès plus grand que les SRAM

16
Mémoire SRAM

Point mémoire  4-6 Transistors

Avantages: Rapide (qques ns de temps d’accès, lecture non


destructrice, statique)
Inconvénients: Petite quantité, volatile

Barrettes Mémoire
• SIMM : Single In-line Memory Module
– Capacité: 1Mo (1993) à 64 Mo (1997)
– Bus 32 bits
– Temps d’accès : 60 ns ~ 17 MHz
• DIMM : Dual In–Line Memory Module
– Bus 64 bits
– 2 * plus rapide que SIMM
– SDRAM : Synchronous Dynamic RAM
• Fréquence : 133 MHz ~ 7,5 ns
– DDR SDRAM : Double Data Rate SDRAM
• > 200 MHz
• Transfert des données 2x par
cycle d’horloge
– DDR2
• Transfert des données 4x !
• Fréquence > 100 MHz

17
Les mémoires mortes (ROM)
 Pour certaines applications, il est nécessaire de pouvoir conserver
des informations de façon
 permanente même lorsque l'alimentation électrique est
interrompue. On utilise alors des mémoires
 mortes ou mémoires à lecture seule (ROM : Read Only Memory).
Ces mémoires sont non volatiles.
 Ces mémoires, contrairement aux RAM, ne peuvent être que lues.
L’inscription en mémoire des données restent possible mais est
appelée programmation.
 Suivant le type de ROM, la méthode de programmation changera.
Il existe donc plusieurs types de ROM :
• ROM
• PROM
• EPROM
• EEPROM
• FLASH EPROM

Les mémoires mortes


Contiennent des données essentielles au démarrage:
• Le BIOS
• Le programme d'amorçage: programme permettant
de charger le système d'exploitation en mémoire
(vive) et de le lancer (disquette puis disque dur)
• Le Setup CMOS: disponible à l'allumage de
l'ordinateur permettant de modifier les paramètres
du système.
• Le Power-On Self Test (POST), programme
exécuté automatiquement à l'amorçage du système
permettant de faire un test du système.

18
La ROM
Elle est programmée par le fabricant et son contenu ne peut plus être ni
modifié, ni effacé par l'utilisateur.
Structure:
Cette mémoire est composée d'une matrice dont la programmation
s’effectue en reliant les lignes aux colonnes par des diodes. L'adresse
permet de sélectionner une ligne de la matrice et les données sont alors
reçues sur les colonnes (le nombre de colonnes fixant la taille des mots
mémoire).
Programmation:
L'utilisateur doit fournir au constructeur
un masque indiquant les emplacements
des diodes dans la matrice.

Avantages:
 Densité élevée
 Non volatile
 Mémoire rapide

Inconvénients:
 Écriture impossible
 Modification impossible
 Délai de fabrication ( 3 à 6 semaines)
 Obligation de grandes quantités en raison du coût élevé
qu'entraîne la production du masque et le processus de
fabrication.

19
La PROM (Programmable ROM)
 ROM qui peut être programmée une seule fois par l'utilisateur,
 Programmation réalisée à partir d’un programmateur spécifique.
Structure:
Les liaisons à diodes de la ROM sont remplacées par des fusibles pouvant
être détruits ou des jonctions pouvant être court-circuitées.
Programmation:
Les PROM à fusible sont livrées avec toutes les lignes connectées aux
colonnes (0 en chaque point mémoire). Le processus consiste à programmer
les emplacements des ‘’1’’ en générant des impulsions de courants; les
fusibles situés aux points mémoires sélectionnés sont ainsi détruits.
Avantages:
 Idem ROM
 Claquage en quelques minutes
 Coût relativement faible
Inconvénients:
 Modification impossible

EPROM ou UV-
UV-EPROM
L'EPROM (Erasable Programmable ROM) est une PROM qui peut être
effacée.
Structure:
Dans une EPROM, le point mémoire est réalisé à partir d’un transistor
FAMOS (Floating gate Avalanche injection Metal Oxyde Silicium).
Ce transistor MOS a été introduit par Intel en 1971 et a la particularité de
posséder une grille flottante.
Programmation:
La programmation consiste à piéger des charges dans la grille flottante.
Pour cela, il faut tout d’abord appliquer une très forte tension entre Grille
et Source. Si l’on applique ensuite une tension entre D et S, la canal devient
conducteur. Mais comme la tension Grille-Source est très importante, les
électrons sont déviés du canal vers la grille flottante et capturés par celle-
ci. Cette charge se maintient une dizaine d'années en condition normale.
L’exposition d’une vingtaine de minutes à un rayonnement ultraviolet permet
d’annuler la charge stockée dans la grille flottante. Cet effacement est
reproductible plus d’un millier de fois.

20
Avantages:
Reprogrammable et non Volatile
Inconvénients:
 Impossible de sélectionner une seule cellule à effacer
 Impossible d’effacer la mémoire in-situ.
 L’écriture est beaucoup plus lente que sur une RAM. (environ 1000x)

L’EEPROM
L’EEPROM (Electically EPROM) est une mémoire programmable et
effaçable électriquement. Elle répond ainsi à l’inconvénient principal de
l’EPROM et peut être programmée in situ.
Structure:
Dans une EEPROM, le point mémoire est réalisé à partir d’un transistor
SAMOS reprenant le même principe que le FAMOS sauf que l’épaisseur
entre les deux grilles est beaucoup plus faible.
Programmation:
Une forte tension électrique appliquée entre grille et source conduit à la
programmation de la mémoire. Une forte tension inverse provoquera la
libération des électrons et donc l’effacement de la mémoire.
Avantages:
 Comportement d'une RAM non Volatile.
 Programmation et effacement mot par mot possible.
Inconvénients:
 Très lente pour une utilisation en RAM.
 Coût de réalisation.

21
FLASH ROM

Ecriture lente: (0.1 ms + algo)


Lecture rapide: 105 à 106 cycles
Effacement: qq sec/par bloc

Au départ: effacement global


Maintenant: par bloc

Exercices
A) Un ordinateur dispose d’un bus d’adresse de 20 lignes, et d’une
mémoire de 640 Ko, Combien de mémoire peut on encore ajouter.

B) On dispose d’un bus de donnée de 16 bits, et d’un bus d’adresse


de 20 bits. Quelle est la capacité mémoire:
1. en mots mémoire
2. en octets.

C) Pour un bus d’adresse de 32 bits, un bus de données de 64 bits,


et 4 connecteurs DRAM, dans chaque connecteur, on a installé
une barrette 32 Mo,
- Quelle est la capacité mémoire adressable
- Quelle est la taille de la mémoire physique installée
- Combien de barrette mémoire, peut on encore installer
- Comment faire pour augmenter la taille mémoire.

22
Notion de hiérarchie mémoire
Mémoire idéale = mémoire de grande capacité, possédant un temps
d’accès très faible
Mais, les mémoires de grande capacité sont souvent très lente et les
mémoire rapides sont très chères.
Et pourtant, la vitesse d’accès à la mémoire conditionne dans une large
mesure les performances d’un système  Goulot d’étranglement entre
un microprocesseur capable de traiter des informations très
rapidement et une mémoire beaucoup plus lente (ex: processeur actuel
à 3Ghz et mémoire à 400MHz).
Or, on n’a jamais besoin de toutes les informations au même moment. Afin
d’obtenir le meilleur compromis coût-performance, on définie donc une
hiérarchie mémoire.
On utilise des mémoires de faible capacité mais très rapide pour stocker
les informations dont le microprocesseur se sert le plus et on utilise
des mémoires de capacité importante mais beaucoup plus lente pour
stocker les informations dont le microprocesseur se sert le moins.
Ainsi, plus on s’éloigne du microprocesseur et plus la capacité et le temps
d’accès des mémoires vont augmenter.

Notion de hiérarchie mémoire

Les registres: éléments de mémoire les plus rapides. Situés au niveau du processeur et
servent au stockage des opérandes et des résultats intermédiaires.
La mémoire cache: mémoire rapide de faible capacité destinée à accélérer l’accès à la
mémoire centrale en stockant les données les plus utilisées.
La mémoire principale: organe principal de rangement des informations. Elle contient les
programmes (instructions et données) et est plus lente que les 2 mémoires précédentes.
La mémoire d’appui sert de mémoire intermédiaire entre la mémoire centrale et les mémoires
de masse. Elle joue le même rôle que la mémoire cache.
La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour le
stockage permanent ou la sauvegarde des informations. Elle utilise des supports magnétiques
(disque dur) ou optiques (CDROM, DVDROM).

23
Les Interfaces d’entrées/sorties
• Éléments matériels de l'ordinateur
• Reliées à un bus spécifique (IDE, EIDE, PCI, AGP, etc.)
• Permettent au système de communiquer avec des éléments
extérieurs (ou lents), i.e d'échanger des données.
• Chaque interface dispose de circuits logiques qui permettent la
conversion des signaux provenant du périphérique en informations
numériques, et dans l’autre sens l’information binaire en signal que
le périphérique reconnaît.
• Les interface disposent d’un certain nombre de circuits mémoires
(Ports) pour stocker les informations échangées avec le système.

Processeur Interface E/S Périphérique

 Chaque port d'une interface admet un numéro (adresse) unique.


 Pour dialoguer avec une E/S, le microprocesseur effectue les mêmes
opérations que pour communiquer avec la mémoire. Un signal permet au
départ de sélectionner soit la mémoire, soit une E/S avant d'établir la
communication.
 Les interfaces d'E/S sont reliées au même bus que la mémoire, de ce
fait le microprocesseur sélectionne une interface en envoyant sur le bus
d'adresse le numéro du port de l'interface. Les informations sont alors
reçues ou transmises via le bus de données.

24
Interfaces Série
– Représentent les premières interfaces ayant permis
aux ordinateurs d'échanger des informations avec le
"monde extérieur"
– Série désigne un envoi de données via un fil unique (les
bits sont envoyés les uns à la suite des autres)
– À l’origine unidirectionnels: l’envoi de données était
possible mais pas la réception
– Aujourd’hui bidirectionnels: ont donc besoin de deux
fils pour effectuer la communication
– Communication asynchrone: chaque caractère est émis
de façon irrégulière dans le temps (ex : utilisateur
envoyant en temps réel des caractères saisis au clavier)
– Généralement intégrés à la carte-mère
– Permettent une transmission à plus longue distance

Interface parallèles
– Transmission de données en parallèle: Consiste à
envoyer des données simultanément sur plusieurs
canaux (fils)
– Permettent d'envoyer simultanément autant de bits
qu’il y a de fils (exemple: un octet par l'intermédiaire
de 8 fils)
– Différents types :
• EPP (Enhanced Parralel Port, port parallèle amélioré) a permis
d'atteindre des débits de l'ordre de 8 à 16 Mb/s
• ECP (Enhanced Capabilities Port, port à capacités
améliorées), il reprend les caractéristiques du port EPP en lui
ajoutant un support Plug and Play, i.e la possibilité pour
l'ordinateur de reconnaître les périphériques branchés
– Généralement intégrées à la carte-mère

25
Interface USB
– Universal Serial Bus: ports séries universels.
– Basées sur une architecture de type série.
– Interface d’E/S beaucoup plus rapide que les
interfaces série standards.
– Propose deux modes de communication (12 Mb/s en
mode haute vitesse et 1.5 Mb/s à basse vitesse) pour
la connexion d’une grande variété de périphériques.
– Fournit l’alimentation électrique aux périphériques
qu’elle relie.
– Norme USB permet le chaînage des périphériques.
– Bande passante partagée temporellement entre tous
les périphériques connectés.

Interface SCSI

– Small Computer System Interface

– Permet la connexion de plusieurs périphériques de


types différents sur un ordinateur par l’intermédiaire
d’une carte, appelée adaptateur SCSI.

– Le nombre de périphériques pouvant être branchés


dépend de la largeur du bus SCSI.

– Exemple: avec un bus 8 bits, il est possible de


connecter 8 unités physiques.

26
Autres Interfaces

– La carte réseau (Network Adapter Card)


• Constitue l’interface entre l’ordinateur et le câble
du réseau.
• Prépare, envoie et contrôle les données sur le
réseau.
– La carte vidéo (2D ou 3D): Affichage vidéo
– La carte son: permet d'avoir le son sur le PC, relie des
micros des hauts parleurs, etc.
– Les cartes TV, Capture d'image, Radio ...
– Etc.

Exemple d’interfaces

Carte Audio
Carte réseau

Carte vidéo

27
Les ports d’E/S
Le processeur communique avec les contrôleurs E/S, et donc les
périphériques correspondants, via des registres localisées sur les E/S
(Ports d’E/S)

 Chaque système d’E/S dispose d’un certain nombres de ports,


 Chaque port admet une adresse unique
 Le nombre de ports d'E/S varie selon le périphériques
 Un port d'E/S peut contenir une donnée ou l'information sur le
statut (état du périphérique)

Données échangées par le processeur


 Avec des ports de données
 Un port de statut contient l’information sur l’état de l’unité d’E/S

Exemple
 Un bit “occupé” signale que l’unité d’E/S est occupée à échanger une
donnée avec le contrôleur d’E/S
 Un bit d’erreur signale une erreur lors de la dernière opération d’E/S

28
Remarques
 La “Logique E/S” interagit avec le CPU via le bus de contrôle
 L’interface d’E/S contient la logique spécifique à chaque unité
d’E/S

Adressage des ports d’E/S

Pour Les processeurs Intel, 2 manières différentes d’adresser les


ports d ’E/S:
 Espace adressable ≠ espace mémoire, on utilise des
instructions d’E/S spécifiques  E/S isolées (Isolated I/O).
 Méthode de topographie de la mémoire «Memory-mapped
I/O»  ports d'E/S sont des adresses appartenant espace
mémoire physique adressable.

E/S isolées

 Les ports d'E/S possèdent un espace adressable distinct de


celui de la mémoire.
 M/IO (bus de contrôle) différencie entre adresse mémoire et
adresse d’E/S
 Chaque contrôleur d’E/S est programmé pour répondre
uniquement à une adresse d’E/S appartenant à un intervalle.
Exemple: Ports E/S des PCs
 Les contrôleurs d’unités d’E/S peuvent être configurés
pour répondre à une des adresses de 0 à FFFFh

 Pour éviter d’avoir plus d’une unité qui répondent à la même


adresse, les concepteurs ont réservés les ports numérotés de
0 à 3FFh pour les unités d’E/S couramment utilisés.

29
Exemple de ports E/S sur PC

Adresse Port Description

20h-21h Contrôleur Interruption


60h-63h Contrôleur Clavier
378h-37Fh LPT 1

Memory-Mapped I/O

 Un port d’E/S  composante mémoire accessible par adresse


mémoire
 Certains processeurs (Exemple: SPARC) utilisent uniquement
cette méthode.

Espace mémoire

Ports E/S

30
Exemple: Affichage vidéo sur PC

Pour afficher des caractères, il suffit d’écrire à certaines


adresses en mémoire.

Sur les Cartes VGA


 Adresse des ports: segment B800

Afficher le caractère "C" à la 60ème colonne, première ligne


(couleur rouge)

mov bx, 0b800h


mov es, bx
mov bx, 60
mov byte ptr es:[bx], 'C'
mov byte ptr es:[bx+1], 4

Accès aux E/S


L’accès aux E/S, et donc la communication avec les périphériques,
peut s’effectuer selon 3 procédés:
 Mode Programmé
 Accès direct à la mémoire
 Interruption

Mode programmé
Ce mode permet de communiquer avec un périphérique, en accédant
directement aux ports d’E/S correspondants.
Exemple
Pour les processeurs Intel, on peut utiliser l’instruction IN pour lire
un port d’entrée, ou Out pour écrire dans un port de sortie.

Lire l’heure système en accédant à la CMOS (Ports 70 et 71)


O 70 4, I 71, O 70 2, I 71, O 70 0, I 71
Lire le port 21h (PIC), bloquer l’accès au clavier en agissant sur le
PIC.

31
Accès par interruptions

Une interruption est une demande au processeur de suspendre le


programme en cours
⇒ exécuter le programme correspondant à la demande

Routine de gestion d’interruption (RGI)


Programme qui a pour tâche de gérer une interruption
 Il existe une RGI par interruption.
 Lorsqu’une interruption se produit, la RGI correspondante
sera exécutée
Cependant, l’exécution doit retourner au programme interrompu et
reprendre à partir du point d’interruption
 Le point d’interruption peut être situé n’importe dans le
programme.
 L’état du programme au point d’interruption doit être
sauvegardé pour que l’exécution puisse reprendre comme s’il
n’y avait jamais eu d’interruption
Pour la famille Intel: 3 types d'interruptions, chaque interruption
admet un numéro entre 0 et 255.
- Logicielle
- Matérielle
- Exception processeur

32
Interruption logicielle
Interruption logicielle  Interruption déclenchée par
l'instruction machine int suivie du numéro de l'interruption.

Exemple
Interruption BIOS de 10H à 1AH.
Afficher un caractère en utilisant l'interruption BIOS 10H.

Interruption 10H, Fonction 09H


Ecran : Affichage d’un caractère

Entrée
AH = 09H Mov ah, 9
CX= Nb de fois le caractère Mov cx, 0
AL = Code ASCII du caractère Mov al, ‘A’
BL = Couleur Mov bl, 4
Int 10H

Exercices

1. Déterminer le code ASCII de caractères, en utilisant l’interruption clavier


16H. On donne: Int 16h; Entrée: ah=01; Sortie: al=code ascii; ah=code scan

2. Afficher un caractère en utilisant l’interruption 21h, AH = 02h, DL = Code


ASCII du caractère à afficher.

3. Afficher une chaîne par Int 21h, AH = 09h, DX = Adresse d'offset de la


chaîne de caractères. La fin de la chaîne de caractères doit être signalée à
l'aide du caractères '$'.
Note: les deux caractères ASCII n° 10 et 13 à la suite de la chaîne
 retour à la ligne.

4. Déterminer date système par Int 21h, AH =2Ah; Sortie: AL = jour de la


semaine (0:dimanche, 1:lundi....); DH = mois (1:janvier, 2:fevrier, 3:mars,…);
DL = jour

33
Interruption matérielle
 Une interruption matérielle est un signal transmis par
un dispositif matériel (contrôleur d’E/S), suite à une requête
d’un périphérique, vers le processeur.
 Sur les PC, le signal est placé sur une ligne IRQ du
contrôleur d’interruption «Programmable Interrupt
Controller» (PIC 8259) qui gère les interruptions matérielles.
Le PIC transmet une demande d’interruption au CPU sur la
broche INTR, et reçoit l’acquittement sur la ligne INTA, et
transmet ensuite le N° d’interruption sur le bus de données

Lignes N° interruption Dispositif contrôlé


d’interruptions
IRQ0 08H Horloge interne
IRQ1 09H Clavier
IRQ2 0AH Interface graphique couleur
IRQ3 0BH Non utilisée
IRQ4 0CH Interface série (RS 232)
IRQ5 0DH Disque dur
IRQ6 0EH Unité de disquette
IRQ7 0FH Imprimante

 Après exécution d’une instruction, CPU examine INTR pour savoir


si une interruption est en attente.
 Le CPU exécute la prochaine instruction si aucune interruption est
en attente.
 Si un interruption est en attente, le CPU extrait, du bus de
données, un numéro d’interruption de 8 bits transmis par le PIC.
 Si plusieurs interruptions  ordre de priorité établi par le PIC.

34
Exception processeur
Provoquée par le processeur  Ex.: division par zéro

Interruptions et exceptions

Masquage des interruptions

Toutes les interruptions, sauf la NMI, peuvent être


masquée (inhibée) en agissant sur le bit IF du registre
d'état.
 Instruction CLI (IF=0) inhibe les interruptions
 Instruction STI (IF=1) autorise les interruptions

Les interruptions matérielles peuvent être masquées


individuellement  Registre IMR (port 21 H) du PIC 8259.

Exercice:
Lire le port 21H, et bloquer l’accès au clavier en masquant
l’interruption correspondante

35
E/S par accès direct à la mémoire
Transfert à haut débit  supérieur à 50 Ko/s
Unité matérielle capable de transférer des données entre
mémoire et interface E/S sans passer par le processeur.

DMA (Direct Memory Access): circuit programmable capable de


demander le bus au processeur pour effectuer le transfert
 le contrôleur DMA demande le bus au processeur  Ligne HR
(Hold Request)
 µp termine cycle en cours, ensuite libère, en mettant haute
impédance:
 Son bus d’adresse
 Son bus de données
 Ses signaux de contrôle de transfert

La DMA possède:

 Un registre contenant l’adresse de départ du block de données


à être transféré

 Un registre contenant le nombre d’octets à transférer

 Un registre spécifiant les unités (ou contrôleurs) d’E/S utilisés

 Des lignes de commande spécifiant la fonction à exécuter


(exemple: lire/écrire)

Contrôleur DMA du PC  8237 (sur carte mère)


Il peut être programmé pour contrôler l’affichage vidéo, le disque
dur, l’imprimante, la carte de son, …

36
Pour lire ou écrire un block de données, le CPU effectue les
opérations suivantes:

 Assigne à un registre DMA l’adresse du port d'E/S de l’unité


désirée

 Assigne à un registre DMA l’adresse en mémoire du début du


block

 Assigne à un registre DMA le nombre d’octets du transfert

 Signale sur les lignes de commande du DMA la fonction


désirée (exemple: lire ou écrire)

 CPU continue alors à faire autre chose, il délègue la tâche


d’E/S au DMA
Mais le CPU et le DMA doivent se partager le bus de données.
Le DMA doit emprunter des cycles de bus au CPU pour
effectuer son transfert de données (vol de cycle)

 Le DMA transmet une interruption au CPU lorsqu’il a terminé

8 canaux DMA:
 DMA0 - libre
 DMA1 - (carte son)/ libre pour 8088
 DMA2 - contrôleur de disquettes
 DMA3 - port parallèle (port imprimante)
 DMA4 - libre
 DMA5 - (carte son)/ libre pour 8088
 DMA6 - (SCSI)/ libre pour 8088
 DMA7 - disponible

37
Schéma de principe

IRQ et IRQA: requête d’interruption pour signaler la fin de transfert ou en


cas d’erreur.
Pour communiquer avec l’interface programmable, le contrôleur utilise 2
signaux:
- DREQ (DMA request)
- DACK (DMA Acknowledge)

Exemple: transfert DMA  mémoire

Dans un premier temps l’interface programmable et le contrôleur


DMA sont programmés pour effectuer le transfert
Dès que l’interface a reçu une donnée du périphérique, elle active le
signal DREQ
Le contrôleur demande le bus au processeur (HR) et l’obtient (HA)
Le cycle de transfert est effectué ainsi:
 Le contrôleur place les adresses de la position mémoire
sélectionnée sur le bus d’adresse
 Il active le signal DACK
 L’interface programmable fournit la donnée
 La donnée est écrite en mémoire

38
Exercice

Lire un caractère tapé au clavier

Le clavier contient un micro-contrôleur, avec qui le CPU communique pour


savoir quelles touches ont été frappées par l'utilisateur, mais il est
également possible de lui envoyer des ordres, en particulier celui d'allumer
ou d'éteindre les indicateurs lumineux du clavier (leds). le BIOS se charge
directement de gérer l'état des touches CapsLock, Numlock et Scroll Lock.

 Le contrôleur clavier utilise les deux ports 60h et 62h pour communiquer
avec le système:
- 60h est le port de données (codes des touches)
- 62h est le port d’état du clavier

 Le clavier transmet un signal “data ready” au microcontrôleur clavier


en assignant à 1 le bit 5 du port 62h, lorsqu’il place un code Scan sur le
port 60h

Exemple
Programme qui retourne dans al le code d’une touche

Programme  Retourne dans al, le code Scan d'une touche


Scan_code:
in al,62h ; Lire état clavier
test al,10h ; bit 5 du port 62h =1 ?
jz Scan_code ; une touche a été pressée
in al,60h ; scan code dans AL

39
Remarque
programme à titre d’exemple,pour lire
le code Scan, il faut l’intercepter
avant le gestionnaire du clavier
(BIOS).

La carte mère
Élément constitutif principal de l'ordinateur, où sont
connectés ou soudés l'ensemble des éléments essentiels de
l'ordinateur:

• Le processeur
• La mémoire centrale ou principale (RAM et ROM)
• La mémoire cache
• Les unités d’entrées/sorties
• Éléments intégrés :
– Le chipset
– L'horloge
– Le CMOS
– Le BIOS
– Le bus système

40
Carte mère
Clavier / Souris
Port Série / Parallèle
USB
Slots d’extension ISA / PCI
Contrôleur

Mémoire:
EDO
Quartz
SDRAM

CPU
Chipset
Contrôleur
Disque

Bios
Pile

Connecteurs : IDE / Disquette Alimentation

La carte mère
• Le chipset (jeu de composants): circuits électroniques chargés
de coordonner les échanges de données entre les divers
composants de l'ordinateur (processeur, mémoire, ...)
– il aiguille les informations entre les différents bus.
• L'horloge: circuit chargé de la synchronisation des signaux du
système.
• Le CMOS (Complementary Metal-Oxyde Semiconductor, parfois
appelé BIOS CMOS) : mémoire lente qui
– Conserve certaines informations sur le système (heure et
date),
– Continuellement alimenté par une pile située également sur la
carte-mère
– Conserve les informations sur le matériel installé dans
l'ordinateur (le nombre de pistes, de secteurs de chaque
disque dur, …)
– Consomme très peu d’énergie

41
CPU (8086) + emplacement coprocesseur

Bus ISA (8 bits) BIOS (ROM) Mémoire RAM


Circuit divers

Connecteur mémoire DIMM BIOS (mémoire Flash)


Connecteur IDE

Bus AGP
Connecteur µp Bus PCI Chipset (440BX) Bus ISA (16 bits)

42
El Imrani (2005)

Architecture d’une carte mère récente

43
Architecture du jeu d’instructions

 Interface entre le logiciel et le matériel


 Ensemble des instructions que peut exécuter un processeur

Le jeu d’instructions

ISA: instruction Set architecture


Les opérations de la CPU sont déterminées par les
instructions qu'elle exécute. L'ensemble des
instructions qu'une CPU particulière peut exécuter est
appelé jeu d'instruction de la CPU. Chaque type de
machine possède donc un jeu d'instructions et une CPU
spécifique.

 Le jeux d’instructions est la partie de l’ordinateur


visible par le programmeur ou celui qui écrit le
compilateur.

44
Propriétés des jeux d’instructions
• Complétude : pouvoir évaluer n’importe
quelle fonction calculable.
• Efficacité : rapide, peu d’instructions
pour les fonctions fréquemment
utilisées.
• Régularité : contenir les fonctionnalités
attendues.
• Compatibilité : économie de logiciel et
éventuellement de matériel.

Conception du jeu d'instruction


Pas de consensus sur la conception d'un jeu d'instructions.
Les aspect fondamentaux à prendre en compte sont :
 Les opérations: combien en faut il, quelle doit être leur
complexité ?
 Les types de données: quels sont les types de données
supportés par les opérations ?
 Les registres: combien en faut-il et comment sont ils
utilisés ?
 L'adressage: quelles sont les différentes façons de faire
référence aux données ?
 Le format: quelle(s) longueur(s) d'instruction adopter,
quelle sera le nombre et la taille de champs ?
La conception du jeu d'instructions influe grandement
sur la conception de la CPU.

45
La hiérarchie des abstractions dans un ordinateur

• Un ordinateur et ses logiciels présentent une


hiérarchie d’abstraction appelée des machines
virtuelles.

Niveau Abstraction
6 Programmes d’applications
5 Langage de programmation
4 Langage assembleur
3 Noyau du système d’exploitation
2 Langage machine
1 Microprogramme
0 Logique numérique

L’interface entre logiciel et matériel

? Conception
du Logiciel

Architecture du Jeu
ISA
d’instructions

Conception
du Matériel

46
La hiérarchie de traduction

? Programme en
Pascal, C, C++
JAVA !!!!... Compilateur

Programme en
Langage assembleur
Hiérarchie
de traduction
Assembleur

Programme en
Langage machine
Chargeur
en Mémoire

Questions

• La traduction est elle unique ?


• Quelles sont les répercutions sur
l ’architecture de la machine cible ?
• Quelle est la frontière entre le logiciel et
le matériel ?
• Quel est l ’objectif à atteindre ?

47
Type d’architectures

Le type de stockage interne dans un processeur est


un des critères de différentiation les plus caractéristiques.

Les choix principaux sont:

 Pile
 Accumulateur
 Registre-mémoire
 Registre-registre
 Mémoire-mémoire

Les machines à accumulateurs ont un seul registre (accumulateur) dans


lequel le résultat d’un calcul peut être stocké. Toute opération se fait alors
entre une case mémoire et l’accumulateur, la valeur résultat étant remise
dans l’accumulateur. D’autres instructions transmettent le contenu de
l’accumulateur vers la mémoire. De nombreux anciens microprocesseurs
étaient conçus ainsi (ex: 6502 du célèbre Apple II). Ce type d’architecture
existe encore pour les petits microcontrôleurs.

Les machines à pile n’ont pas de vrais registres. Toutes les opérations
effectuent un transfert entre la mémoire et une pile, ou bien effectuent
un calcul en prenant leurs opérandes sur la pile et en remettant le résultat
dans la pile. Cette architecture, généralement considérée comme peu
efficace, a été rarement employée.

48
Les machines à registres généraux disposent de plusieurs registres, qui
peuvent tous jouer le rôle d’accumulateur. Différents choix sont possibles:
en particulier le résultat d’un calcul peut être stocké dans un registre ou
directement en mémoire. On distingue selon l’emplacement des opérandes
et du résultat les machines de type mémoire-mémoire et les machines
registre-mémoire. La plupart des ordinateurs des années 1960 à 1980
étaient conçues ainsi.

Les machines à chargement/rangement (Load/Store): appelées aussi


machines registre à registre: la différence par rapport aux machines à
registres généraux est qu’ici les seules instructions qui accèdent à la
mémoire sont des transferts entre la mémoire et un registre sans calcul
(instructions load et store). Toutes les opérations de calcul se font entre
registres et retournent le résultat dans un registre.

Les microprocesseurs performants récents sont tous à architecture


chargement-rangement exceptés ceux d’Intel: ces microprocesseurs sont
en effet à mi-chemin entre une structure à accumulateur et une machine à
registres généraux.

Nombre et type d’opérandes


Nombre d’adresse mémoire par instruction de calcul

Nombre maximum d’opérandes par instruction

Processeurs

0 3 SPARC, MIPS, Power PC

1 2 Intel 80x86, Motorola 680x0

2 2 VAX

3 3 VAX

49
Avantages et inconvénients
• Registre-Registre (0,3)
+ simple, longueur fixe, même nombre de cycles
- augmente de nombre d’instructions
• Registre-Mémoire (1,2)
+ Les données peuvent être utilisées sans être
chargées, bonne densité, formats simples
- Un opérande est détruit, nombre de cycles différent
• Mémoire-Mémoire (3,3)
+ Très compact
- Format d’instruction et charge de travail très
variable, goulot d’étranglement mémoire

Exemple: C=A+B
Processeurs à pile
 Les opérandes se trouvent toujours au sommet d’une pile,
le résultat est toujours stocké au sommet de la pile.
En conséquence, une instruction typique ne contient pas
d’adresse d’opérande.
 Un registre particulier du processeur, Stack pointer (SP),
pointe toujours au sommet de la pile.
 Exemples: Burroughs B5000, HP 300
 Les instructions de base sont:
PUSH A Mem[SP]  Mem[A]
PUSH B Mem[SP]  Mem[B]
ADD
POP C Mem[x]  Mem[SP]

50
Processeurs à accumulateur
 Les résultats de toutes les opérations sont stockés dans un
registre particulier, l’accumulateur
 Toutes les variables sont stockées dans la mémoire
 Exemples: DEC PDP-8, Intel 8080, Motorola 6800

LOAD A ACC  Mem[A]


ADD B ACC  ACC + Mem[B]
STORE C Mem[C]  ACC

 Le format d’une instruction doit utiliser deux champs:


 le code de l’opération (opcode)
 l’adresse de l’opérande (l’accumulateur est toujours un
opérande par défaut)

Architecture à registres chargement-rangement

Alors que la plupart des ordinateurs anciens employaient des


architectures à pile ou à accumulateur,
 Les nouvelles architectures conçues après 1980
utilisent une architecture à registres chargement-
rangement.

Raison principale 
- Registres plus rapides que la mémoire
- Les compilateurs peuvent utiliser plus efficacement les
registres que tout autre forme de mémorisation.

51
Les transferts de données
• Déplacement de données
– Copier un mot d’une adresse mémoire dans un registre
LOAD <adresse mémoire>,<registre>
– Copier le contenu d’un registre en mémoire
STORE <registre>,<adresse mémoire>

Load

Processeur Mémoire

Store

Type Mémoire-Mémoire
{
? int A=8, B=4, C;
C=A+B;
Compilateur
}
Add C,B,A

Hiérarchie
de traduction
Assembleur

11011110000 F800
01101010101 F810
Données
Chargeur - - F820
en Mémoire 10000100100 FB00
01100000111
1000

52
Type Mémoire-Mémoire: VAX

La Séquence de code pour C=A+B

(3,3)
1 add c,a,b Mem
A +
B
C
1

• Avantages: Le code le plus compact. Ne gaspille pas des


registres pour des données secondaires
• Inconvénients: Grande variation de la taille des
instructions. Les accès mémoire créent un goulot
d’étranglement.

Type Registre-Mémoire

{
? int A=8, B=4, C;
C=A+B;
Compilateur
} Load r1,A
Add r1,B
Store C,r1
Hiérarchie
de traduction
Assembleur

11011110000 F800
01101010101 F810
Données
Chargeur - - F820
en Mémoire 10000100100 FB00
01100000111 FB01
00011111111
10001001010 FB03

53
Type d’architecture: Intel 80*86, 68000

La séquence de code pour C=A+B

(1,2)
1 Load r1,A 2
2 Add r1,B Mem 1

3 Store C,r1 A r1
+
B
C
3

• Avantages : Les données peuvent être obtenues sans


chargement préalable.
• Inconvénients : Les opérandes ne sont pas équilibrées
puisque l’opérande source est détruite.

Type Registre-registre

{
? int A=8, B=4, C;
C=A+B; (0,0)
Compilateur Load r1,A
}
Load r2,B
Add r3,r2,r1
Hiérarchie Store C,r3

de traduction
Assembleur

11011110000 F800
01101010101 F810
Données
Chargeur - - F820
en Mémoire 10000100100 FB00
01100000111 FB01
10001001010 FB02
10010100000 FB03

54
Type registre-registre: PowerPC, MIPS

La séquence de code pour C=A+B


(0,3)
1 Load r1,A
2 Load r2,B Mem 1

3 Add r3,r2,r1 A r1
2
r2 +
4 Store C,r3 B
C r3
4
3

• Avantages: Codage simple d’instructions de longueur fixe.


• Inconvénients: Nombre d’instructions plus élevé que les
architectures à références mémoire.

Comparaison

55
Accès à la mémoire

• Indépendant du type d’architecture


• Comment spécifier une adresse
• Ordre des octets
• Alignement
• Octet (byte, 8 bits), demi-mot (half-word, 16b, 2B, mot
(word, 32b, 4B), double-mot (double word, 64b, 8B).
Ancienne norme : 1 mot = 16 bits (désuet!)

Little & Big endian

• Données en mémoire:
0x1000 0x1001 0x1002 0x1003
A B C D

• Little endian (petit-boutisme): octet à l’addresse


0x1000 est placé à la position la moins significative du
mot (little end)
MSB D C B A LSB

• Big endian (petit-boutisme): octet à l’addresse 0x1000 est


placé à la position la plus significative du mot (big end)

MSB A B C D LSB

56
Alignement mémoire

• Accès mémoires alignés: restreint les adresses qui


peuvent être utilisées pour accéder à des données

 A, adresse mémoire; s: nombre d’octets


Accès est aligné si A modulo s = 0

 Exemple:
 A est un mot (4 octets),
 on peut lire A si adresse(A) modulo 4 = 0 ,
 donc si (en hexadécimal) adresse(A) = 0xxxxx0,
0xxxxx4, 0xxxxx8, 0xxxxxC, 0xxxx10, etc.

Accès mémoires alignés ou non

• Si il n’y a pas de restrictions sur l’alignement:


– Logiciel est plus simple
– Matériel détecte le non-alignement et fera plusieurs
accès en mémoire (typiquement 2)
– Logique plus compliquée (et parfois plus lente)
– iA32
• Si les accès doivent être alignés:
– Logiciel doit garantir l’alignement (perte d’espace)
– Matériel est plus simple; détecte seulement les accès
non-alignés (exception)

57
Type d’instructions
Les instructions que l’on retrouve dans chaque microprocesseur
peuvent être classées en 4 groupes :
Transfert de données pour charger ou sauver en mémoire,
effectuer des transferts de registre à registre, etc…
Opérations arithmétiques: addition, soustraction, division,
multiplication
Opérations logiques: ET, OU, NON, NAND, comparaison, test, etc…
Contrôle de séquence: branchement, test, etc…

Codage d’un jeu d’instructions

Manière de coder les instructions sous forme binaire pour qu’elle


soient exécutées par le processeur
Une instruction doit contenir des informations requises par la CPU pour son
exécution :
• Code opération: un code (binaire) identifiant l'opération à exécuter,
appelé opcode
• Référence aux opérandes sources: une ou plusieurs adresses faisant
références aux opérandes paramètres de l'opération (qui peuvent provenir
de la mémoire, d'un registre de la CPU, ou d'un périphérique),
• Référence à l'opérande résultat: l'opération peut produire un résultat
et référencer explicitement ce résultat,
• Référence à la prochaine instruction: indique à la CPU où chercher
l'instruction suivant l'exécution de l'instruction courante (elle peut être
implicite, c'est le cas lorsqu'il l'instruction suivante est contigüe à
l'instruction courante).

58
Codage d’un jeu d’instructions

• Trois types de codage


– Fixe  Combine l’opération et le mode
d’adressage dans l’opcode, a souvent une seule
taille pour toutes les instructions, plus efficace
lorsqu’il y a peu de modes d’adressage et
d’opérations.

– Variable  autorise tous les modes d’adressage,


meilleur lorsqu’il y a beaucoup de modes
d’adressages et d’opérations

– Hybride

Codage des ISA

59
Codage variable ou fixe

• Impacts:
– Grosseur du programme compilé
– Logique pour décoder la représentation
• Variable: code court + difficile à décoder
• Fixe: code + long, + facile à décoder

• Nombre de registres & adressage: éléments significatifs


– Le plus grand nombre possible
– Impact direct sur la dimension d’une instruction
– Faciliter implantation en pipeline

Modes d’adressage
Comment les architectures spécifient-elles les adresses d’un
objet auquel elles vont accéder ?
Quand une case mémoire est utilisée, l’adresse mémoire réelle
spécifiée par le mode d’adressage  adresse effective

60
Modes d’adressage
Ce tableau correspond à un jeu d’instructions de type registres
généraux. Dans le cas d’une architecture
chargement/rangement, seuls les deux premiers modes
permettent d’effectuer des calculs (ne font intervenir que des
registres).
Les autres modes ne peuvent dans ce cas servir que pour des
instructions de chargement/rangement, il faut alors supprimer
le registre r1 et l’addition dans les exemples du tableau, qui
deviennent tous des load ou des store.
Le mode basé sert généralement pour les accès à des tableaux. Le
mode indirect sert à déréférencer des pointeurs. Les modes auto-
incrémentés et auto-décrémentés servent pour manipuler des
tableaux dans des boucles. Le mode indexé étendu peut servir à
manipuler des tableaux bidimensionnels, dans les trois derniers
modes d représente la taille en octets des mots mémoire manipulés.

Exemples: Processeurs Intel

Adressage immédiat: ADD AX, 5


Adressage direct: Mov al, x
Dans cet exemple, x est un opérande mémoire de 8 bits
Adressage indirect:
Mov bx, 0102H
Mov al, [bx]
Placer dans AL la valeur contenue à l’adresse 0102H
Adressage indexé:
Mov SI, 3
Mov AL, Table[SI]

61
Cycle d’exécution d’une instruction
Le traitement d’une instruction peut être décomposé en trois
phases principales.
Etape 1: 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.
3. L'instruction est stockée dans le registre instruction du
processeur.

Etape 1: Recherche de l'instruction à traiter

62
Etape 2: Décodage de l’instruction et recherche de l'opérande
Le registre d'instruction contient maintenant le premier mot de
l'instruction qui peut être codée sur plusieurs mots. Ce premier
mot contient le code opératoire qui définit la nature de
l'opération à effectuer (addition, décalage,...) et le nombre de
mots de l'instruction.
1. L'unité de commande transforme l'instruction en une suite de
commandes élémentaires nécessaires au traitement de
l'instruction.
2. 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.
3. L’opérande est stockée dans un registre du processeur.

Etape 2: Décodage de l’instruction et recherche des opérandes

63
Etape 3: Exécution de l'instruction
1. L’UAL exécute l’instruction
2. Les drapeaux du registre d’état sont positionnés
3. L'unité de commande positionne le PC pour l'instruction suivante.

Notion d’architecture RISC et CISC


Actuellement l’architecture des microprocesseurs se composent de deux
grandes familles :
 CISC (Complex Instruction Set Computer)
 RISC (Reduced Instruction Set Computer)
L’architecture CISC
Par le passé la conception de machines CISC était la seule envisageable. En
effet, vue la lenteur de la mémoire par rapport au processeur, on pensait
qu’il était plus intéressant de soumettre au microprocesseur des
instructions complexes. Ainsi, plutôt que de coder une opération complexe
par plusieurs instructions plus petites (qui demanderaient autant d’accès
mémoire très lent), il semblait préférable d’ajouter au jeu d’instructions du
microprocesseur une instruction complexe qui se chargerait de réaliser
cette opération. C’est donc une architecture avec un grand nombre
d’instructions où le microprocesseur doit exécuter des tâches complexes par
instruction unique. Pour une tâche donnée, une machine CISC exécute ainsi un
petit nombre d’instructions mais chacune nécessite un plus grand nombre de
cycles d’horloge. Le code machine de ces instructions varie d’une instruction à
l’autre et nécessite donc un décodeur complexe (micro-code).

64
L’architecture RISC
Des études statistiques menées au cours des années 70 ont clairement
montré que les programmes générés par les compilateurs se contentaient le
plus souvent d'affectations, d'additions et de multiplications par des
constantes. Ainsi, 80% des traitements des langages de haut niveau
faisaient appel à seulement 20% des instructions du microprocesseur. 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.
C’est donc une architecture dans laquelle les instructions sont en nombre
réduit (chargement, branchement, appel sous-programme). Les
architectures RISC peuvent donc être réalisées à partir de séquenceur
câblé. Leur réalisation libère de la surface permettant d’augmenter le
nombres de registres ou d’unités de traitement par exemple. Chacune de
ces instructions s’exécutent ainsi en un cycle d’horloge. Bien souvent, ces
instructions ne disposent que d’un seul mode d’adressage. Les accès à la
mémoire s’effectue seulement à partir de deux instructions (Load et
Store). Par contre, les instructions complexes doivent être réalisées à
partir de séquences basées sur les instructions élémentaires, ce qui
nécessite un compilateur très évolué dans le cas de programmation en
langage de haut niveau.

L’une des différences majeures entre les architectures


CISC et RISC se situe au niveau du séquenceur, qui est dans
le premier cas micro-programmé et dans le deuxième cas
câblé.

Séquenceur câblé

65
Comparaison
Le choix dépendra des applications visées. En effet, si on diminue le
nombre d'instructions, on crée des instructions complexes (CISC) qui
nécessitent plus de cycles pour être décodées et si on diminue le nombre
de cycles par instruction, on crée des instructions simples (RISC) mais on
augmente alors le nombre d'instructions nécessaires pour réaliser le même
traitement.

RISC CISC
• instructions simples ne prenant • instructions complexes prenant
qu’un seul cycle plusieurs cycles

• instructions au format fixe • instructions au format variable

• décodeur simple (câblé) • décodeur complexe (microcode)

• beaucoup de registres • peu de registres

• seules les instructions LOAD et • toutes les instructions sont


STORE ont accès à la mémoire susceptibles d’accéder à la mémoire

• peu de modes d’adressage • beaucoup de modes d’adressage

• compilateur complexe • compilateur simple

Exemples de processeurs
Différents processeurs équipent les ordinateurs actuels, ces
processeurs se différencient essentiellement par:
 Nombres et taille de registres (8, 16, 32 ou 64 bits)

 Types d’architectures: CISC, RISC, VLIW

 Jeu d’instructions:Type et nombre d’instructions machine,


mode d’adressage, etc.
 En général, les processeurs d’une même famille ont une
compatibilité ascendante.

 Processeurs de type x86 fabriqués par Intel, AMD, Cyrix,


processeurs 68xxx (Motorola), PowerPC, SPARC, MIPS, etc.

66
Exemples d’architectures
• MIPS
– Architecture registre-registre (load-store)
– Processeur RISC (Reduced Instruction Set
Computer)
– Développé il y a 15 ans
– Variante MIPS64 (64 bits)
• x86
– Architecture registre-mémoire
– La plus répandue dans les ordinateurs
personnels
– Introduit il y a 20 ans, nombreuses générations
• Trimedia: DSP

MIPS

• Registres
– 32 registres de 64 bits (R0, R1,…, R31) à usage
général (GRP ou integers registers)
• Entiers à 1, 2, 4 ou 8 octets
– 32 registres (F0, F1,…, F31)
• Valeurs de 32 (simple précision) ou 64 (double
précison) bits

• Mode d’adressage
– Immédiat: ADD R4, #cte
⇒ R4 = R4 + cte
– Déplacement (16 bits)
ADD R4, déplacement(R1)
⇒ R4 = R4 + Mem[déplacement + R1]

67
MIPS

• Accès mémoire
– Uniquement par des “load” et “store”
– Adresses de 64 bits avec accès aux octets
– Supporte Big & Little endian
– Accès alignés seulement
• Format des instructions
– Codage longueur fixe
– Mode d’adressage codé avec le opcode
– Instructions de 32 bits, opcode de 6 bits

MIPS: format des instructions

68
MIPS: Instructions Load & Store

Autres instructions

• Compare
– Compare 2 registres, ou 1 registre et constante
– Résultat placé dans le registre de destination

• Points flottants
– Opère sur 32 ou 64 bits

• Opérations de contrôle
– Sauts (jumps)
– Branchements conditionels

69
Intel 80x86

• “The x86 isn’t all that complex – it just does not


make a lot of sense”
Mike Johson, AMD (1994)
• “…architecture that is difficult to explain and
impossible to love.”
Hennessy & Patterson, CA3

• Malgré tout: le plus grand nombre de processeurs


vendus dans le monde – plus de 500 millions !

Historique

• 1978-8086 • 1989: 80486;


– 16 bits, registres de 16 • 1992: Pentium;
bits, extension du 8080 • 1995: P6 (Pentium Pro);
(accumulateur), qque part – Augmentation de la
entre accumulateur et performance; seulement 4
GPR nouvelles instructions
• 1997: Pentium II
• 1980-8087
– MMX: 57 instructions
– Co-processeur à point
• 1999: Pentium III
flottant, 60 instructions
– SSE: 70 instructions
– Qque part entre
• 2001: Pentium 4
architecture pile et GPR
– Changement architecture
• 1982: 80286
– SSE-II: 144 instructions
– Espace adresse à 24 bits
– Compatibilité avec 8086
• 1985: 80386
– Processeur à 32 bits

70
Microprocesseurs Intel

Architecture interne 8086

71
Unités de base d’un Pentium IV

Registres

72
Registres segment
Pour un ordinateur à base de microprocesseurs Intel (8088 et
sup.) fonctionnant en mode réel, un programme est chargé en
mémoire dans des segments contenant des informations
spécifiques:

- Segment de code (Registre CS)


Contient les codes des instructions
- Segment de données (Registre DS)
Contient les codes des données
- Segment données supplémentaires (Registre ES)
Autre segment de données
- Segment de pile (Registre SS)
Informations stockées dans la pile

Calcul adresses physiques: Modes 80x86

73
Modes d’adressage

• Absolu, registre indirect, base, indexé, base


indexé + déplacement, etc…

• Déplacements: 8 ou 32 bits (en mode 32 bits), 8 ou


16 (en mode 16 bits)

• Restrictions sur les registres qui peuvent être


utilisés selon les modes

Codage des instructions

Codage complexe, beaucoup de formats d’instructions


différents:

• 8086
– 1 à 6 octets
• 80386
– Maximum de 17
octets !

Opcode Opérande Déplacement/donnée

74
Format des instructions

L’octet Opcode contient


habituellement un bit (w) qui
précise si l’opérande et de 1 octet
ou de 2 ou 4 selon le mode.
d: direction de transfert

Exemple:
Mov eax, [2fh] 10100011 00101111
Mov eax, 2fh 10111000 00101111

Exemple: Cas du 8086


Mov AX, 3FA4H  Code machine = B8 A4 3F
soit 10111000 01001010 00111111.
Code instruction correspond en fait à la structure:
Code opération donnée donnée si w=1
Code opération = 1011 W REG
Champ W (1 bit)
w=0 si la donnée est sur 1 octet
w=1 si la donnée est sur 2 octets.
Champ REG (3 bits) donne le numéro du registre utilisé:
Ax 000, CX  001, DX  010, etc.
Code opération spécifie, pour cet exemple:
Code d'un transfert registre  Immédiat,
1011 = code mov, adressage immédiat
1 = W (valeur sur 2 octets)
000 = N° de AX,
01001010 00111111 = valeur 4A 3F
⇒ Taille instruction = 3 octets.

75
Structure d’un programme assembleur 8086 (MASM)

Programme source Registre

Mémoire

IA32 (80x86): résumé

• Architecture complexe due à sa croissance


– Doit maintenir compatibilité d’une génération à l’autre
• Premiers sur le marché avec un processeur 16 bits
• Base logicielle est le facteur dominant
– Processeurs qui émulent le x86: Transmetta,
SPARC, IA64
– Loi de Moore et améliorations architecturales ont
permis de rendre IAx86 très performant
• De l’extérieur: 80x86 est un processeur CISC (Complex
Instruction Set Computer)
– Au niveau architectural: émule une architecture RISC
depuis P6

76
Structure de l'unité centrale SPARC

Le nombre de bus internes à l'UC est augmenté, ce qui permet


d'effectuer plusieurs transferts (donc opérations élémentaires) en
parallèle à l'intérieur de l'UC.

Durant une période du signal d'horloge, sur le bus de données peut se


trouver :
 le code d'une instruction lue (cycle fetch) ;
 une donnée lue ;
 une donnée à écrire.
Pour le SPARC, un cycle élémentaire est décomposé en 4 étapes :
 Lecture de l'instruction : lecture de la mémoire en utilisant comme
adresse le contenu du compteur d'instructions, chargement de
l'instruction dans le registre instruction ;
 Décodage de l'instruction et adressage (à partir des adresses
contenues dans le code de l'instruction) des registres internes afin de
préparer les opérandes ;
 Exécution de l'instruction (pour les opérations UAL) ou calcul d'une
adresse mémoire (pour les instructions de transfert d'une donnée UC-
Mémoire) ;
 Lecture/écriture mémoire: seulement pour les instructions de
transfert d'une donnée entre UC-Mémoire ;
 Ecriture du résultat (de l'opération UAL ou de la lecture de la mémoire)
en un registre.

77
Rôle des compilateurs
Compilateur traduit le programme dans le langage du
processeur (ISA)

Objectifs d’un compilateur:


- Corrections  programmes compilés correctement
- Vitesse du code compilé
- Autres
- Facilité de mise au point
- Possibilité d’utilisation avec d’autres langages
Les passes d’un compilateur transforment instructions
progressivement de plus haut niveau, plus abstraites, en
représentations de plus bas niveau pour atteindre
finalement le jeu d’instructions.

Phases d’un compilateur


Dépendances Fonction
Dépend du langage Transforme le langage en
format intermédiaire
Indépendant de la machine

Un peu dépendant du Par exemple, transformations de


langage, largement boucles et intégrations des
indépendant de la machine lignes de procédure

Dépend faiblement du
langage, dépend faiblement Optimisations globales et locales
de la machine (ex: nb de + allocation des registres
registres/types)

Dépend fortement de la Sélection des instructions


machine, indépendant du détaillées et optimisation
langage dépendant de la machine, peut
inclure ou être suivi de
l’assembleur

78
Phases d’un compilateur

 Structure maximise la probabilité qu’un programme compilé


avec des niveaux différents d’optimisation produise le même
résultat pour la même entrée.

 Les phases optimisantes sont conçues pour être utilisées de


manière optionnelles.

 Peuvent être sautées, quand l’objectif est une compilation


plus rapide, et que l’on peut accepter un code de moins bonne
qualité.

Comment faciliter le développement de compilateurs


Propriétés des jeux d’instructions aidant à l’écriture des
compilateurs:
 Régularité
– Les trois principales composantes d’un jeu d’instruction:
Opérations, Types de données, Modes d’adressage
 doivent être orthogonales (indépendantes)
– Exemple: Les opérations et les modes d’adressage sont
orthogonaux si, pour toute opération pour laquelle un mode
d’adressage peut s’appliquer, tous les modes d’adressage sont
utilisables.
– Contre-exemple: restreindre les registres utilisés par une
instruction
 grand nombre de registres disponibles, aucun du bon
type.
• Fournir des primitives,
– Instructions simples et générales  supporter des langages
de haut niveau.

79

Vous aimerez peut-être aussi