Académique Documents
Professionnel Documents
Culture Documents
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 matérielle
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).
Remarque
Pratiquement, plus de 80 % des ordinateurs sont basés
sur l’architecture de Neumann.
Schéma fonctionnel
3
Schéma complet
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
5
Structure simplifiée d ’un microprocesseur
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
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.
7
L’unité Arithmétique et Logique (UAL): Exemple
8
Les Bus
Permettent la communication entre les différentes unités
d ’un ordinateur.
Deux types:
Le bus système
Le bus d'extension (parfois appelé bus d'entrée/sortie)
9
Le bus système
Canal (pistes de la carte-mère) reliant le processeur à la
mémoire vive du système:
Le bus d'extension
10
Les bus d’extension
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
. . . . . . . .
1010 1101
0111 1011
0011 1000
0111 1100
1100 0101
0111 1101
1010 1001
0111 1110
0111 1010
0x7F 0111 1111
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.
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
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)
Mémoire DRAM
16
Mémoire SRAM
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
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
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.
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.
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.
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
26
Autres Interfaces
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)
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
E/S isolées
29
Exemple de ports E/S sur PC
Memory-Mapped I/O
Espace mémoire
Ports E/S
30
Exemple: Affichage vidéo sur PC
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.
31
Accès par interruptions
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.
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
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
34
Exception processeur
Provoquée par le processeur Ex.: division par zéro
Interruptions et exceptions
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.
La DMA possède:
36
Pour lire ou écrire un block de données, le CPU effectue les
opérations suivantes:
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
38
Exercice
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
Exemple
Programme qui retourne dans al le code d’une touche
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
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 AGP
Connecteur µp Bus PCI Chipset (440BX) Bus ISA (16 bits)
42
El Imrani (2005)
43
Architecture du jeu d’instructions
Le jeu d’instructions
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.
45
La hiérarchie des abstractions dans un ordinateur
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
? 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
47
Type d’architectures
Pile
Accumulateur
Registre-mémoire
Registre-registre
Mémoire-mémoire
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.
Processeurs
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
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
(3,3)
1 add c,a,b Mem
A +
B
C
1
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
(1,2)
1 Load r1,A 2
2 Add r1,B Mem 1
3 Store C,r1 A r1
+
B
C
3
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
3 Add r3,r2,r1 A r1
2
r2 +
4 Store C,r3 B
C r3
4
3
Comparaison
55
Accès à la mémoire
• Données en mémoire:
0x1000 0x1001 0x1002 0x1003
A B C D
MSB A B C D LSB
56
Alignement mémoire
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.
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…
58
Codage d’un jeu d’instructions
– Hybride
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
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.
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.
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.
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.
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.
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
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)
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
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
Historique
70
Microprocesseurs Intel
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:
73
Modes d’adressage
• 8086
– 1 à 6 octets
• 80386
– Maximum de 17
octets !
74
Format des instructions
Exemple:
Mov eax, [2fh] 10100011 00101111
Mov eax, 2fh 10111000 00101111
75
Structure d’un programme assembleur 8086 (MASM)
Mémoire
76
Structure de l'unité centrale SPARC
77
Rôle des compilateurs
Compilateur traduit le programme dans le langage du
processeur (ISA)
Dépend faiblement du
langage, dépend faiblement Optimisations globales et locales
de la machine (ex: nb de + allocation des registres
registres/types)
78
Phases d’un compilateur
79