Académique Documents
Professionnel Documents
Culture Documents
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.
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
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
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
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
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
48
Processeur de base
Unité commande/traitement
49
Processeur de base
L’unité de commande
51
Processeur de base
L’unité de commande
52
Processeur de base
L’unité de traitement
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
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
• 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
75
3. Les Architectures RISC et CISC
• L’architecture RISC
(Reduced Instruction Set Computer)
76
3. Les Architectures RISC et CISC
80
1. Les Architectures RISC et CISC
82
3. Les Architectures RISC et CISC
85
Architecture Pipeline (1/3)
L’exécution d’une instruction est
décomposée en une succession d’étapes
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é
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
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
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
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
PC=adresse calculée
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 !