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
Exemple: Modes d’adressage
Soit à considérer un processeur contenant en particulier deux registres X chargé de la valeur
entière 100 et ACC (accumulateur de machine à une adresse) et une mémoire centrale dans
laquelle nous exhibons 5 mots mémoire d'adresses 15, 20, 50, 100, 115. Chaque mot et
contient un entier respectivement dans l'ordre 50, 70, 80, 20, 60, comme figuré ci-dessous :
Exemple: Modes d’adressage
Adressage immédiat Adressage direct Adressage indirect
L'opérande Oper est considéré L'opérande Oper est considéré L'opérande Oper est considéré comme
comme une valeur à charger comme une adresse en mémoire l'adresse d'un mot1 en mémoire
immédiatement (dans le registre centrale. Par exemple, nous centrale, mais ce mot1 contient lui-
ACC ici). Par exemple, nous noterons LOAD 15, pour indiquer même l'adresse d'un autre mot2 dont
noterons LOAD #15, pour indiquer un adressage direct (c'est à dire on doit charger le contenu dans ACC.
un adressage immédiat (c'est à un chargement du contenu 50 du Par exemple, nous noterons LOAD
dire un chargement de la valeur mot mémoire d'adresse 15 dans le (15), pour indiquer un adressage
15 dans le registre ACC). registre ACC). indirect (c'est à dire un chargement
dans le registre ACC, du contenu 80 du
mot2 mémoire dont l'adresse 50 est
contenue dans le mot1 d'adresse 15).
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
Pipeline – aléas
Aléas
Problèmes rencontrés lors de l'exécution d'instructions
par le pipeline
3 familles d'aléas
Aléas structurels
Des sous-unités du CPU doivent être utilisées simultanément
par plusieurs étages du pipeline
Aléa de données
Une instruction de calcul en cours d'exécution dépend d'une
valeur non encore calculée
Aléas de contrôle
L'instruction suivante dépend du résultat d'une instruction pas
encore connu (test)
37
Pipeline – aléas structurels
Exemple d'aléa structurel, pour notre pipeline simple
Accès à la mémoire dans les étapes
LE : lecture de l'instruction suivante en mémoire
EX dans le cas d'une opération de lecture/écriture en mémoire
Utilise une même sous-unité (accès mémoire) du processeur
Solutions
Attendre pour une instruction que l'unité soit disponible
Peu efficace
Dupliquer dans le processeur ces sous-unités
Accès mémoire : intérêt de découper le cache L1 en deux parties
Partie « données » avec accès via RM et RA
Partie « instructions » avec accès via CO et RI
Peut alors faire un EX d'accès mémoire et un LE en même temps : 2
accès mémoires en parallèle sur les 2 parties différentes du cache L1
De plus le cache d'instructions est en lecture seule car les instructions
ne sont pas modifiées en mémoire : plus simple et plus
38
rapide car pas besoin de gérer la cohérence cache / mémoire centrale
Pipeline – aléas structurels
Aléa structurel
EX de instr. 2 et LE de instr. 5 : accès à la mémoire
Instr. 1 Le De Ch Ex Enr
Instr. 2 Le De Ch Ex Enr
Instr. 3 Le De Ch Ex Enr
Instr. 4 Le De Ch Ex Enr
Instr. 5 Le De Ch Ex Enr
40
Pipeline – aléas de données
Aléa de données : solutions
Arrêter l'exécution du calcul de R3 tant que R1 n'est
pas connu : peu efficace
Changer l'ordre d'exécution des opérations pour éviter
ou réduire le problème
Court-circuiter au plus tôt le pipeline quand la valeur de
R1 est connue
Le résultat du dernier calcul est dans le registre C de l'UAL
On peut le réinjecter au cycle suivant dans le registre A ou B
de l'UAL
41
Pipeline – aléas de données
Aléa de données
Suspension du pipeline
R1 = 10 + R2 Le De Ch Ex Enr
R3 = R1 x 20 Le De Ch Ex Enr
R1 = 10 + R2 Le De Ch Ex Enr
R3 = R1 x 20 Le De Ch Ex Enr
42
Pipeline – nouveau chemin de données
Nouveau chemin de données avec court-circuit du pipeline et
accès mémoire via 2 parties du cache
43
Pipeline – aléas de données
Aléa de données : cas avec réordonnancement
R1 = 10 + R2
R3 = R1 x 20
R4 = 2 x R5
R6 = 10 + R5
Dépendance de données entre les 2 premières instructions :
aléa de données dans le pipeline
Réordonnancement pour éviter cet aléa
On place les 2 autres instructions entre ces 2 instructions
R1 = 10 + R2
R4 = 2 x R5
R6 = 10 + R5
R3 = R1 x 20
44
Pipeline – aléas de données
Aléa de données : réordonnancement
R1 = 10 + R2 Le De Ch Ex Enr R1 est écrit
R4 = 2 x R5 Le De Ch Ex Enr
R1 est lu
R6 = 10 + R5 Le De Ch Ex Enr
R3 = R1 x 20 Le De Ch Ex Enr
46
Pipeline – aléas de contrôle
Aléas de contrôle (suite)
Solutions
Attendre que le bon CO soit connu : peu efficace
Réordonnancer le code : pas toujours suffisant et possible
Prédire quelle sera la valeur de R1 et commencer le calcul
suivant selon cette prédiction
Solution avec attente
CO est modifié
saut cond. Le De Ch Ex Enr
instr. suivante Le De Ch Ex Enr
lecture de CO
Doit attendre le ENR précédent avant de faire le LE : on passe
en exécution purement séquentielle !
47
Prédiction de branchement
Aléas de contrôle : prédictions de branchement
pour en limiter les conséquences
Indispensable pour efficacité du pipeline
A l'aide de tables statistiques dynamiques
Prédit le résultat d'un test
On commence ensuite l'instruction suivante prédite
Problème si prédiction erronée
On a commencé des calculs inutiles
Vidage du pipeline pour reprendre dans un état correct
Trés couteux en temps
Très pénalisant pour des pipelines profonds
48
Prédiction de branchement
Principes de la prédiction
Mémoriser les adresses des branches du programme et
regarder celles qui sont souvent atteintes
Exemple
1 R0 = R2 - 3
2 if R1 = 0 jump suite
3 R3 = 2 x R1
4 R4 = R3 + R1
suite:
5 R3 = 0
Deux branches : adresses 3 et 5
Prédiction : lors du saut conditionnel à l'adresse 2, on prendra la
branche la plus souvent atteinte
49
Prédiction de branchement
Deux éléments pour fonctionnement
Tampon des branches cibles (BTB : Branch Target Buffer)
Contient les adresses des branches du programme
Table de l'historique des branchements (BHT : Branch History
Table)
Mémoriser l'historique des choix de branchements faits
précédemment pour faire des prédictions
Fonctionnement dépend de l'algorithme utilisé
Exemple basique : 2 bits associés à chaque branche
00 : branchement jamais pris jusqu'à présent
01 : branchement parfois pris jusqu'à présent
10 : branchement souvent pris jusqu'à présent
11 : branchement toujours pris jusqu'à présent
Mise à jour des BTB et BHT pendant l'exécution du programme
50
Prédiction de branchement
Pour plus d'efficacité des prédictions
Augmenter la taille du BTB et du BTH
Pour pouvoir gérer plus de branches (BTB)
Si BTB trop petit, il ne stocke pas toutes les branches : pas de
prédictions possibles pour toutes les branches
Pour avoir un historique plus long et précis (BHT)
Pb : temps d'accès plus long car tables plus grandes
Augmenter la qualité de la prédiction avec des algorithmes plus
efficaces
Pb : prend un temps plus long qu'avec des algorithmes plus simples
Dans les 2 cas : augmentation du temps de la prédiction
Contraire au besoin de connaître au plus tôt la prédiction
Limite la montée en fréquence du processeur
Efficacité des prédictions
En moyenne, autour de 90% des prédictions sont correctes
51
Pipeline – conclusion
Influence de la profondeur du pipeline
Avantage d'un pipeline long
Plus d'instructions en exécution parallèle
Montée en fréquence du processeur facilitée
Donc gain en nombre d'instructions exécutées en un temps donné
Inconvénient d'un pipeline long
Une erreur de prédiction est plus coûteuse
Plus d'opérations en cours d'exécution à annuler
Solution globale
Trouver le bon compromis entre gain d'un coté et perte de l'autre
Améliorer les algorithmes et unités de prédiction de branchement
52
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 !