Vous êtes sur la page 1sur 87

Cours

Architecture des Ordinateurs

2ème Année Ingénieur


Informatique
Enseignant: Anis MEZNI
Faculté des Sciences de Tunis
Laboratoire LISI-INSAT
Année universitaire 2017-2018
1
Plan du cours
Introduction
Avancées Technologiques et Evolutions historiques Quelques
rappels sur le codage binaire
Rappels sur les circuits logiques et les fonctions booléennes

Processeur de base
Unité de Commande/Traitement /schéma fonctionnel
Fonctionnement basique d’une opération de calcul
Les modes d’adressage
Jeux d'instructions
Amélioration des performances des processeurs
Les architectures CISC et RISC
Les Structures accélératrices : Pipeline, Superscalaire

Les Mémoires
Définition, caractéristique des mémoires
Classification des mémoires
Caractéristiques
Hiérarchie mémoire
Mémoire virtuelle (les raisons de l'adressage virtuel, pagination, segmentation, segmentation paginée
Les Mémoires caches
Principe
Caractéristiques
Amélioration des caches

2
Chapitre 1 : Introduction à
l’Architecture des Ordinateurs
• But du cours
• Ordinateur : définition
• Historique
• Avancées Technologiques
• Quelques rappels

4
But du Cours
• Avoir une idée du fonctionnement des processeurs
modernes
• Comprendre les idées importantes pour
l’amélioration des performances :
– Pipeline, superscalaire, caches, prédicteurs de
branchements, …
• Comprendre d’où vient la performance

5
Ordinateur : définition
• Ordinateur : une définition (Hachette)
Machine capable d'effectuer automatiquement des
opérations arithmétiques et logiques (à des fins
scientifiques, administratives, comptables, . . . ) à
partir de programmes définissant la séquence de
ces opérations.

• But d'un ordinateur


Définir et exécuter des séquences de calcul
6
Historique
• Apparition du calcul
– Dès la préhistoire on comptait avec des cailloux et
avec ses doigts
– Calcul vient du latin calculi signifiant caillou
• Antiquité
– Chaque civilisation (Grecs, Romains, Chinois ...) avait
développé des
• Systèmes et bases de numérotation
• Méthodes pour compter et calculer
• Ensuite sont apparus les outils pour aider aux
calculs

7
Historique
• Outils de calcul
– Les premiers : boulier chinois, abaque
• 17ème siècle : la science s'intéresse de plus en
plus aux outils de calcul
– 1620 : règle à calcul (selon les principes de Neper)
– 1623, Shickard : première machine à calculer, roues
dentées et retenues
– 1642, Pascal : machine faisant des additions et
soustractions de 6 chiffres (la Pascaline)
– 1674, Leibniz : calculatrice avec 4 opérations
arithmétiques
8
Historique
• Automatisation des calculs
– 1728, Falcon : planchette de bois trouée pour
commander un métier à tisser
– 1805, Jacquard : utilise à la place des cartons
perforés, perfectionne le système
– 1834, Babbage : utilise un système de commande
pour des machines à calculer
• On pouvait programmer des calculs
• Le « premier ordinateur »
• Notions de processeur, entrées/sorties, mémoire ...
• Mais trop complexe pour la technologie de l'époque
9
Historique
• Avancées théoriques
– 1854, Boole : algèbre de Boole, logique symbolique
– 1938, Shannon : liens entre nombres binaires, algèbre
de Boole et les signaux électriques
– 1936, Turing : machine de Turing
• Naissance de l'ordinateur
– Fin des années 30/début 40, plusieurs prototypes
fonctionnant en binaire et basés sur la logique
booléenne
• Ex : 1941, Zuse : Z3, calculateur utilisant une technologie
électro-mécanique
– 1945, Eckert & Mauchly : ENIAC (Electronical
Numerical Integrator And Calculator)
10
Historique
• ENIAC
– Premier calculateur/ordinateur
moderne
– Entièrement électronique
• Utilise des tubes à vide et des relais
– Machine universelle, programmable
– Utilise un système décimal
– Inconvénient : difficulté de
passer d'un programme à un autre
(6000 commutateurs
connectables pour programmer)
– 30 tonnes, forme de U de
6 mètres de large et 12 de long 11
Historique
• Avancée majeure : Von Neumann, 1945
– Idée : stocker le programme à exécuter dans la mémoire
de l'ordinateur
– Avant : suite séquentielle d'instructions
• Programme était généralement entré via des cartes perforées
• Maintenant
– Le programme peut prendre des décisions selon des
résultats intermédiaires
– Changer de chemin dans la séquence d'instructions
– Effectuer des tests, des boucles, des sauts conditionnels ...
• Von Neumann définit également une architecture
générale : naissance de l'ordinateur
12
Historique
• Machine de Von Neumann = ordinateur
– Machine universelle contrôlée par un programme
– Les instructions du programme sont stockées en
mémoires et codées en binaire
– Les instructions sont exécutées en séquence par
défaut
• Mais le programme peut en modifier l'ordre
d'exécution
• Création d'instructions pour ruptures de séquences
– Le programme peut se modifier

13
Historique
• Von Neumann a également défini l'architecture
générale d'un ordinateur
• 5 éléments principaux
– Unité arithmétique et logique (UAL ou ALU)
– Unité de commande
– Unité d'entrées
– Unité de sorties
– Mémoire centrale
• Cette architecture est toujours en vigueur de nos
jours
14
Avancées Technologiques
• Génération 0 : 17ème siècle à 1945
– Calculateurs mécaniques
• Première génération : 1945 – 1955
– Tubes à vide
– Premiers calculateurs électroniques
– Ex: ENIAC
• Seconde génération : 1955 – 1965
– Transistors remplacent les tubes à vides (1947
apparition du transistor)
– Premières séries commerciales d'ordinateurs
15
Avancées Technologiques

• Troisième génération : 1965 – 1980


– Circuits intégrés : permettent de placer un
nombre important de transistors sur une même
puce de silicium
– Début de la montée en puissance et de la
miniaturisation
– 1971 : Intel 4004
• Première unité de calcul (sur 4 bits) intégrée
entièrement sur une seule puce
• Premier microprocesseur
16
Avancées Technologiques

• Quatrième génération : 1980 à aujourd'hui


– VLSI : Very Large Scale Integration
– Intégration de millions de transistors sur une
même puce
– Toujours plus de puissance et de miniaturisation à
un coût toujours moindre
• Cinquième génération : ??
• ??

17
Avancées Technologiques
Les différentes générations d’ordinateurs

18
Avancées Technologiques
Les niveaux d’intégration

19
Avancées Technologiques
 Evolution de la complexité

Loi de Moore : Le nombre de transistors intégrés sur silicium double tous les 18 à 24 mois
exemple : en 1979 Intel 8086  29 000 transistors
en 2006 Intel Core2 duo  291 000 transistors 20
Avancées Technologiques
 Evolution des performances

21
Avancées Technologiques

Evolution des performances


• Loi de Machrone
la machine dont on a besoin coûte toujours 2000$
• 1983 : IBM-PC/XT ≈ 2000 $
• 1987 : IBM-PC/AT ≈ 2000 $
• 1991 IBM-PC/486 ≈ 2000 $
• 1997 IBM-PC/PII ≈ 2000 $
• 2001 IBM-PC/P4 ≈ 2000 $

22
Avancées Technologiques
Prévisions ITRS (International Technology Roadmap
for Semiconductors)

23
Avancées Technologiques
Problèmes d’avenir proche
– Atteinte des limites physiques du silicium
– Accroissement de la difficulté à concevoir rapidement des
systèmes dont les circuits font qqs 100 millions de
transistors
– Coût exponentiel des usines
– Loi de Moore active jusqu’à 2016, mais après ?
– Architecture des circuits optimisées pour préparer la fin de
la loi de Moore (parallélisme, code logiciel optimisé, …)

24
Avancées Technologiques
Candidats du futur

25
Quelques Rappels

26
Quelques Rappels

27
Quelques Rappels

30
Quelques Rappels

31
Quelques Rappels

32
Quelques Rappels

33
Quelques Rappels

34
Chapitre 2 : Constitution d’un ordinateur
Les différentes Unités d’un ordinateur
 UAL : réalise des opérations élémentaires
– Arithmétique : addition, soustraction, multiplication ...
– Logique : ET, OU, comparaison ...
 Unité de commande
– Coordinateur général
– Lit les instructions du programme en mémoire
– Commande l'UAL pour exécuter ces instructions
 Mémoire centrale
– Stocke les programmes et les données
– Enregistre les résultats intermédiaires et/ou finaux
 Unités d'entrées et de sorties, pour communication avec
– En entrée : clavier, souris, disque dur, ...
– En sortie : carte graphique, disque dur, ...
41
Les Différentes Unités d’un ordinateur
 Processeur central
– Contient
• UAL
• Unité de commande
• Mémoire cache
o Mémoire intermédiaire pour optimiser les performances
– Aussi appelé CPU (Central Processing Unit)
 CPU communique avec
– La mémoire, les entrées, les sorties ...
– ... via des bus
42
Les Bus
Les Bus
• Les systèmes/éléments sont reliés par
– Un ensemble de câbles faisant transiter les informations (signaux
électriques)
• Besoin de communication entre tous les éléments
– Maillage complet : chaque élément relié à tous les autres éléments
– Autre solution : partage des câbles via bus
• Bus
– Relie plusieurs systèmes via le même câblage électrique : canal
partagé (multiplexage)
– Seuls 2 éléments communiquent simultanément

CPU Mémoire Disque dur Vidéo


Bus
43
Les Bus
Les Bus
• En pratique : plusieurs bus +/- rapides ou partagés
• Dans un PC, bus rapides
– Bus système (FSB ou Front Side Bus)
• Bus de communication avec le CPU
– Bus mémoire : communication avec la mémoire
– Bus AGP (ou PCI-X) : communication avec la carte graphique
• Dans un PC, bus plus lents
– PCI : cartes réseaux, son ...
– Connexion périphérique de stockage (DD, CD, DVD...)
• ATA, SATA, SCSI ...
– Connexion de périphériques extérieurs
– USB, FireWire ...

44
Les Bus
Les Bus
• Chipset : dispositif interconnectant tous ces bus
• Composé de 2 éléments
– Pont nord (NorthBridge) : pour les bus rapides
– Pont sud (SouthBridge) : pour les bus lents
Cache L2
PCI
Back side bus

Front side bus North Internal bus South


CPU
+ cache L1 Bridge Bridge
AGP ATA
Bus Mémoire

Vidéo RAM USB Stockage

45
46
Chapitre 3 : Processeur de base
• Unité de Commande/traitement
• Fonctionnement basique d’une opération de calcul
• Architecture Von-Neuman/ architecture Harvard
• Le traitement des instructions
• Les modes d’adressages
• Exemple d’exécution d’un programme
• Calculateur didactique

47
Processeur de base
Unité commande/traitement

• Un processeur est construit autour de deux


éléments principaux :
– Une unité de commande

– Une unité de traitement

48
Processeur de base
Unité commande/traitement

49
Processeur de base
L’unité de commande

Elle permet de séquencer le déroulement des instructions.


Elle effectue la recherche en mémoire de l'instruction, le
décodage de l’instruction codée sous forme binaire. Enfin
elle pilote l’exécution de l’instruction.

Les blocs de l’unité de commande :


1. Le compteur de programme (PC : Programme
Counter) appelé aussi Compteur Ordinal (CO) est
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 la prochaine instruction
à exécuter.
50
Processeur de base
L’unité de commande

2. Le registre d'instruction et le décodeur d'instruction :


Chacune des instructions à exécuter est transférée depuis
la mémoire dans le registre instruction puis est décodée
par le décodeur d’instruction.

3. Bloc logique de commande (ou séquenceur) : Il


organise l'exécution des instructions au rythme d’une
horloge. Il élabore tous les signaux de synchronisation
internes ou externes (bus de commande) du processeur en
fonction de l’instruction qu’il a à exécuter. Il s'agit d'un
automate réalisé de façon micro-programmée.

51
Processeur de base
L’unité de commande

52
Processeur de base
L’unité de traitement

Elle regroupe les circuits qui assurent les traitements


nécessaires à l'exécution des instructions

Les blocs de l’unité de traitement :


1. Les accumulateurs sont des registres de travail qui
servent à stocker un opérande au début d'une opération
arithmétique et le résultat à la fin de l'opération.
2. L’Unité Arithmétique et Logique (UAL): est un circuit
complexe qui assure les fonctions logiques (ET, OU,
Comparaison, Décalage, etc…) ou arithmétique (Addition,
soustraction…).
53
Processeur de base
L’unité de traitement
3. 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)
– Débordement (overflow : OV ou V)
– Zéro (Z)
– ...
54
Processeur de base
L’unité de traitement (3)

55
Processeur de base
L’unité de traitement

56
Processeur de base
Architecture complète

57
Processeur de base
Fonctionnement basique d’une opération de calcul

• (1) Charger une instruction depuis la mémoire


• (2) Charger les opérandes depuis la mémoire
• (3) Effectuer les calculs
• (4) Stocker le résultat en mémoire
58
Processeur de base
Architecture Von Neumann

• Un seul chemin d'accès à la mémoire


– Un bus de données (programme et données),
– Un bus d’adresse (programme et données)
• Architecture des processeurs d’usage général
• Goulot d'étranglement pour l'accès à la mémoire
59
Processeur de base
Architecture Harvard

• Séparation des mémoires programme et données


– Un bus de données programme,
– Un bus de données pour les données,
– Un bus d’adresse programme,
– Un bus d’adresse pour les données.
• Meilleure utilisation du CPU :
Chargement du programme et des données en parallèle
60
Processeur de base
Le traitement des instructions

Le processeur ne comprend qu’un certain nombre


d’instructions qui sont codées en binaire. Une instruction
est composée de deux éléments :
– Le code opération : C’est un code binaire qui
correspond à l’action à effectuer par le processeur
– Le champ opérande : Donnée ou bien adresse de la
donnée.

La taille d'une instruction peut varier, elle est


généralement de quelques octets (1 à 8), elle dépend
également de l'architecture du processeur.
61
Processeur de base
Le traitement des instructions

• Exemple : Instruction Addition


Accumulateur = Accumulateur + Opérande
Correspond à l’instruction ADD A,#2

Cette instruction est comprise par le processeur par le mot binaire :

11001 000 0000 0010 = code machine


62
Processeur de base
Le traitement des instructions
• Phase 1 : Recherche de l’instruction en mémoire
– La valeur du PC est placée sur le bus d'adresse par l'unité de commande qui émet
un ordre de lecture.
– Après le temps d'accès à la mémoire, le contenu de la case mémoire sélectionnée
est disponible sur le bus des données.
– L'instruction est stockée dans le registre d’instruction du processeur.

63
Processeur de base
Le traitement des instructions
• Phase 2 : Décodage et recherche de l’opérande
– L'unité de commande transforme l'instruction en une suite de commandes
élémentaires nécessaires au traitement de l'instruction.
– Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de
commande récupère sa valeur sur le bus de données.
– L’opérande est stocké dans le registre de données.

64
Processeur de base
Le traitement des instructions
• Phase 3 : exécution de l’instruction
– Le séquenceur réalise l'instruction.
– Les drapeaux sont positionnés (registre d'état).
– L'unité de commande positionne le PC pour l'instruction suivante.

65
Processeur de base
Les modes d’adressages

Ce sont les diverses manières de définir la


localisation d’un opérande. Les trois modes
d’adressage les plus courant sont :
• Adressage immédiat
• Adressage direct

• Adressage indirect

66
Processeur de base
Les modes d’adressages
 Adressage Immédiat

67
Processeur de base
Les modes d’adressages
 Adressage Direct

68
Processeur de base erne
Les modes d’adressages

 Adressage Indirect

69
2. Performances d’un processeur

Temps par tâche = I.C.T


I = nombre d’instructions par tâche
C= nombre de cycle par instruction
T = temps de cycle

Amélioration des performances :


• Paramètre I : Augmenter le jeu d’instructions du μP : instruction de + en + complexe
o Architecture CISC et VLIW
• Paramètre C : Nécessite le traitement simultané de plusieurs instructions
o Structures pipelines,
o Structures parallèles, superscalaires
• Paramètre T : Amélioration de la technologie, réduction de la durée des opérations
élémentaires
o structures super-pipeline

75
3. Les Architectures RISC et CISC

Actuellement l’architecture des processeurs se


composent de deux grandes familles :
• L’ architecture CISC
(Complex Instruction Set Computer)

• L’architecture RISC
(Reduced Instruction Set Computer)

76
3. Les Architectures RISC et CISC

■ Processeur CISC ( Complex Instruction Set


Computer)
 Jeu d’instructions complexes (Une instruction peut désigner
plusieurs opérations élémentaires)
 Compilation et programmation en assembleur relativement
facilitées, code compact, limitation des accès mémoires,
mais ….
 … instruction de format variable,
 Temps de décodage et d’exécution des instructions trop long
 Accélération par des mécanismes matériels complexes
 Résulte en un code compact mais complexe à générer
 Motorola 68000, Intel x86/Pentium
77
1. Les Architectures RISC et CISC
■ Processeur RISC (Reduced Instruction Set
Computer)
• But : disposer d’un jeu d’instruction réduit, de longueur d’exécution constants
• Intérêt : simplifier la gestion du séquenceur et du pipeline, ce qui permet
d’augmenter la fréquence d’horloge
• Conséquences :
- Modes d’adressage simplifiés
- Longueur de code plus grand que pour le CISC
- Nécessité d’un grand nombre de registres pour réduire les accès mémoire

80
1. Les Architectures RISC et CISC

■ Processeur RISC (Reduced Instruction Set


Computer)
• Jeu d’instruction réduit (une instruction = une opération
élémentaire), codage uniforme
• Presque toutes les instructions ont le même temps
d’exécution
• Pas d’instructions complexes
• Modes d’adressage simples, utilisation intensive des
registres du processeur
• Code plus simple à générer, mais moins compact, plus
d’accès mémoire (pénalisation réduite grâce aux caches)
81
3. Les Architectures RISC et CISC

■ Processeur RISC (suite)


• Accélération en pipelinant l’exécution (entre 3 et 7 étages
de pipeline pour une instruction) augmentation de la
vitesse
• Conséquence : décodage et exécution rapides des
instructions
• On dispose uniquement d’instructions Load et Store pour
les opérations mémoire
• Les processeurs ne dispose pas de microcode dans le
silicium. Toutes les opérations sont câblées

82
3. Les Architectures RISC et CISC

■ Quelques exemples de processeurs RISC


• Processeur SPARC (SUN)
• PowerPC (Apple, IBM, …)
• Processeur MIPS
• LEON, processeur open source
• Processeurs ARM
(http://www.arm.com/products/CPUs/index.html)

85
Architecture Pipeline (1/3)
 L’exécution d’une instruction est
décomposée en une succession d’étapes

Chaque étape correspond à l’utilisation


d’une des fonctions du microprocesseur

Lorsqu’une instruction se trouve dans


l’une des étapes, les composants
associés aux autres étapes ne sont pas
utilisés.

Le fonctionnement d’un microprocesseur


simple n’est donc pas efficace

L’architecture pipeline permet d’améliorer


l’efficacité du microprocesseur
Architecture Pipeline (2/3)
Lorsque la première étape de l’exécution
d’une instruction est achevée,
l’instruction entre dans la seconde étape
de son exécution et la première phase
de l’exécution de l’instruction suivante
débute

Avoir une instruction en cours


d’exécution dans chacune des étapes

Chacun des composants du


microprocesseur peut être utilisé à
chaque cycle d’horloge
Architecture Pipeline(3/3)
 Le temps d’exécution d’une
instruction n’est pas réduit mais le
débit d’exécution des instructions est
considérablement augmenté

Une machine pipeline se caractérise


par le nombre d’étapes utilisées pour
l’exécution d’une instruction appelés
aussi (nombre d’étages du pipeline).

Dans cette structure, la machine


débute l’exécution d’une instruction à
chaque cycle et le pipeline est
pleinement occupé à partir du
quatrième cycle.
Gain de performance
 Dans cette structure, la machine débute l’exécution d’une instruction à chaque cycle
et le pipeline est pleinement occupé à partir du quatrième cycle.

 Le gain obtenu dépend donc du nombre d’étages du pipeline

 pour exécuter n instructions, en supposant que chaque instruction s’exécute en


k cycles d’horloge, il faut :
 n.k cycles d’horloge pour une exécution séquentielle
 k cycles d’horloge pour exécuter la première instruction
 puis n-1 cycles pour les n-1 instructions suivantes si on utilise un
pipeline de k étages

 Le gain obtenu est donc de :

 Le temps de traitement dans chaque unité doit être à peu près égal sinon les unités
rapides doivent attendre les unités lentes.
Problèmes
 Plus le pipeline est long, plus le nombre de cas où il n’est pas possible d’atteindre la
performance maximale est élevé

 Il existe 3 principaux cas où la performance d’un processeur pipeliné peut être


dégradé ; Ces cas de dégradations de performances sont appelés des aléas :

 aléa structurel : Conflit d'accès à des ressources

 aléa de données: Dépendances de données entre instructions

 aléa de contrôle: Rupture de séquence


Solution

l’instruction qui pose problème et toutes celles qui suivent


dans le pipe jusqu’à ce que le problème se résolve. On voit
alors apparaître des bulles dans le pipeline. De manière
pratique, la bulle correspond à l’exécution de l’instruction
NOP qui ne fait rien

99
Aléas structurels
■ Cas des conflits de ressources (aléas structurels)
• Un conflit de ressource se produit lorsque plusieurs instructions, dans des
étages différents du pipeline, requièrent la même ressource.
• C'est le cas systématique de l'accès à la mémoire :
IA IF SI DI AC MA EX WB

P I
R @ Calcul
C

Calcul
PC IR Reg. AL Reg.
mémoire d’adresse mémoire
Instruction i IA IF SI DI AC MA
Instruction i+1 IA IF SI DI AC
Instruction I+2 IA IF SI DI Conflit d’accès
Instruction i+3 IA IF SI mémoire
Instruction i+4 IA IF
Instruction i+5 IA 100
Aléas structurels
la technique du pipeline
■ Solutions aux conflits de ressources

1. Détecter les cas et introduire une «bulle» dans le pipeline :


2. Utiliser des ressources à accès multiples :
• mémoires double port (lecture/écriture)
• Mémoires caches distinctes (IC et DC) pour les conflits
MA/IF

101
Aléas de données
■ Cas des conflits de données
Un conflit de données se produit lorsque plusieurs instructions
dans le pipeline ont une dépendance de registre.
Ex :
ADD R1, R2, #100
LOAD R3, R1

L'instruction LOAD nécessite la mise à jour de R1 avant de


s'exécuter... impossible tant que l'instruction ADD n'aura pas
terminé son cycle d'exécution (avant l'étape WB).
Un conflit de données peut se produire également lors de
l'exécution d'instructions multicyles dans le pipeline...

=> Réorganisation de l'ordre d'écriture des registres !


102
4. Aléas de données
Les Structures accélératrices :
la technique du pipeline
Exemple :
ADD R1, R2, 100
LOAD R3, R1
instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
ADD R1, R2, 100 IA 1F IS DI AC MA EX WB
LOAD R3, R1 IA IF SI ● ● ● ● DI AC MA EX WB

Sans ressources additionnelles, insertion


de «bulles» dans le pipeline :

l'étape de recherche des opérandes de


l'instruction LOAD est retardée

103
4.Aléas de contrôle
Les Structures accélératrices :
la technique du pipeline
■ Cas des aléas de contrôle
Lors de l’exécution d’une instruction de branchement conditionnel, on dit
que le branchement est pris si la condition est vérifiée et que le programme
se poursuit effectivement à la nouvelle adresse. Un branchement sans
condition est toujours pris.
Lorsqu’un branchement est pris, l’adresse de celui-ci est calculé à l’étape AC
«Calcul Adresse » et rangée dans le registre PC à l’étape WB «écriture du
résultat ». Toutes les instructions qui suivent l’instruction de branchement ne
doivent pas être exécutées (le pipeline est vidé).
On constate que l’exécution d’un branchement dégrade notablement la
performance du pipe. Comme les branchements constituent en général 20 à
30% des instructions exécutées par un programme, il est primordial
d’améliorer leur exécution.
Une façon simple d’optimiser les branchements est de ne pas leur faire
suivre toutes les étapes du pipeline afin que la nouvelle adresse soit écrite le
plutôt possible dans le registre PC
108
Aléas
LesdeStructures
4.Aléas contrôle
de données
accélératrices :
Prédiction de branchement
la technique du pipeline
 Ex:
BEQ etiq
….
.…
etiq ADD R4, R1, R2

instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
BEQ etiq IA 1F IS DI AC MA EX WB
… IA IF SI ● . . .
… IA IF
IA
IA
ADD R4, R1, R2 IA IF IS DI AC MA EX WB

109
Aléas de contrôle
Branchement
Pour les branchement conditionnels, la condition ne dépend que des
indicateurs n, z et p du code de l’instruction. Cette condition peut donc être
calculée à l’étape DI «décodage, lecture des opérandes ». De même l’adresse
du branchement est soit le contenu d’un registre soit la somme de PC et d’un
offset. Dans les deux cas, cette valeur peut être disponible à la fin de l’étape
AC. Le prix à payer est l’ajout d’un nouvel additionneur dédié à ce calcul.
La nouvelle adresse est écrite dans le registre PC à la fin de l’étape AC.
Exemple :
LOOP : LOAD R1,R0, #100
…..
JZ LOOP L’adresse de destination
du branchement est disponible
La condition (bits n,p,z)
à la fin de cette étape
est lue à la fin de cette étape

instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
JZ LOOP IA IF IS DI AC MA EX WB
LOAD R1, R0, #100 ● ● ● ● IA IF SI DI AC MA EX WB
110
Aléas de contrôle
Prédiction de branchement
■ La prédiction des branchements
La majorité des ruptures de séquences par branchements
inconditionnels se fait à des adresses constantes.
Pour éviter de vider/remplir les pipelines, on utilise la méthode
de la prédiction des branchements :
 Les adresses des branchements sont stockées dans une table,
 Une unité dédiée détecte les éventuels branchements et met à jour
le PC par anticipation de l'adresse de destination

Valable aussi pour les branchements conditionnels, avec


l'exécution spéculative des instructions : les instructions du
branchement sont mises dans le pipeline avant de savoir si le
branchement doit être pris ou non => algorithmes complexes de
prédiction
111
Aléas
4. LesdeStructures
contrôle accélératrices :
Prédiction de branchement
la technique du pipeline

Unité
Unité de
Registres d’adress @
calcul
age Mémoire
données
données

Unité de Unité @
décodage d’exécution Mémoire
programme

instructions
PC
Branchement?

Adresse prédite

Table mise à jour automatiquement lors de


L’exécution des instructions de branchement:

Prédiction des adresses de branchement


Adresse de Adresse des instructions 112
destination de branchement
Aléas de contrôle
4. Les Structures accélératrices :
Prédiction de branchement
la technique du pipeline
 Exemple
Sans prédiction d’adresse
instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
JMP IA IF IS DI AC MA EX WB
Inst1 ● ● ● ● IA IF IS DI AC MA EX WB

PC=adresse calculée

Avec prédiction d’adresse


instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
JMP IA IF IS DI AC MA EX WB
Inst1 IA IF IS DI AC MA EX WB

PC=adresse destinataire prédite

113
Aléas de contrôle
4. Les Structures accélératrices :
Prédiction de branchement
la technique du pipeline
■ Exécution spéculative et prédiction
Dans le cas des branchements conditionnels, il n'est pas possible
d'anticiper le calcul de l'adresse du branchement (dépend d'une
condition à calculer).
Stratégie :
 Exécuter spéculativement les instructions en «pariant» sur la
valeur de la condition
✔ Si pari gagnant : OK, pas de cycles perdus
✔ Si pari perdu : insertion de bulles
 Différents algorithmes de prédiction qui dépendent des cas
(application, instructions)

114
Bilan accélératrices :
4. Les Structures
Bilan la technique du pipeline
 BILAN
Prédiction de branchement
La présence du pipeline permet d'améliorer significativement les
performances d'une unité de calcul avec des conséquences pour les
architectures embarquées...
Sous étapes plus simples = plus de niveaux de pipeline
= fréquence de fonctionnement plus élevée
MAIS
puissance dissipée plus importante !

plus de niveaux de pipeline = plus d'aléas


ET
plus de ressources pour corriger les aléas

Compromis pour l'embarqué :


rarement plus de 3 à 5 niveaux de pipeline..... 115
Architectures superscalaires
 Une autre façon de gagner en performance est d’exécuter plusieurs instructions en
même temps
 L'approche superscalaire consiste à doter le microprocesseur de plusieurs unités de
traitement travaillant en parallèle
 Les instructions sont alors réparties entre les différentes unités d'exécution
 Le type d'architecture mise en œuvre dans les premiers Pentium d'Intel apparus en 1993
Architectures superscalaires pipelinées
 Le principe est d’exécuter les instructions de façon pipelinée dans chacune des unités de
traitement travaillant en parallèle

Vous aimerez peut-être aussi