Architecture des ordinateurs

publicité
Plan du cours
1
2
3
4
5
6
7
8
9
10
11
12
Histoire de l’ordinateur
Présentation générale
Représentation interne des informations
Encodage de l’information
Circuits logiques
Composants électroniques
Mémoires
Unité centrale de traitement
Superordinateurs et microprocesseurs
Entrées / sorties
Assembleur
Introduction au langage MIPS
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
237 / 294
De quoi allons-nous
parler et quel chemin
allons nous suivre ?
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
238 / 294
Objectifs du chapitre
1
Manipuler le language de programmation le plus bas niveau qu’offre la
machine.
2
Utiliser des jeux d’instructions pour écrire des mini-programmes.
3
Comprendre le mécanismes d’appel de procédure (sous-programme) et
le fonctionnement de la pile et du tas.
4
Percevoir les principes de programmation universel (qq soit le
language).
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
239 / 294
Pourquoi ? [Strandth & Durand, 2005]
Le rôle d’un informaticien n’est pas de concevoir des architectures, en
revanche il a besoin d’un modèle de fonctionnement de l’ordinateur
qui lui donne une bonne idée de la performance de son programme et de
l’impact que chaque modification du programme aura sur sa performance.
Assimiler un tel modèle suppose un certain nombre de connaissances sur le
fonctionnement d’un ordinateur, notamment le mécanisme d’appel de
fonction, la transmission des paramètres d’une fonction à l’autre,
l’allocation ou la libération d’espace mémoire, etc.
⇒ Apprendre l’architecture des ordinateurs et un langage machine, permet
cela.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
240 / 294
Niveaux de programmation
Langage machine
Le programmeur a le choix entre
différents langages (assembleur, Ada,
Java, C, etc.). La machine ne
comprends que le langage machine
(i.e., instructions binaires) !
L’assembleur (i.e., langage d’assemblage) est le premier langage
non binaire accessible au programmeur ;
Code mnémoniques et symboles ;
L’assembleur (i.e., programme traducteur) converti le langage
d’assemblage en langage machine ;
Permet d’exploiter au maximum les ressources de la machine ;
Dépend de la machine.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
241 / 294
Traduction et interprétation
Interprétation
Conversion et exécution d’un programme en une seule étape : les
instructions sont lues les unes après les autres et sont converties
immédiatement en langage machine.
Pas de programme objet intermédiaire ;
Répétition du travail de traduction à chaque exécution (⇒ phase de
développement).
Traduction
Génération d’un programme équivalent au programme source mais codé
dans la langage binaire de l’ordinateur. Le programme obtenu en langage
machine doit être ensuite chargé pour pouvoir être exécuté.
Traduction réalisée une seule fois ;
Exécution rapide et efficace (⇒ phase d’exploitation) ;
2 types : les assembleurs et les compilateurs.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
242 / 294
Traduction de langage évolué
Programme C
Compilateur
prog. en langage
d’assemblage
prog. en langage
machine
Assembleur
chargeur
Mémoire
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
243 / 294
Langage d’assemblage
Utilisés par les spécialistes ⇒ optimisation ;
Pour valoriser l’architecture spécifique de la machine ;
Diagnostic d’erreurs (i.e., examen du contenu de la mémoire) ;
L’assembleur est une variante symbolique du langage machine ⇒
même jeu d’instructions ;
Propre à chaque type de machine ;
Permet d’accéder aux ressources de la machine (i.e., registres) ;
Permet d’accéder aux facilités de traitement (e.g., décalage) ;
Le programmeur peut utiliser :
Codes mnémoniques (jeu d’instruction) ;
Étiquettes (adresse symboliques) ;
Littéraux (constante numériques) ;
Directives (pseudo instruction).
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
244 / 294
Instruction en assembleur
Structure d’une instruction
étiquette code opération (mnémonique) opérandes + commentaires
Exemples d’instructions
donnees1 :
adresse1 :
DS
MOVE
ADD
JUMP
Clement Jonquet (Polytech’ Montpellier)
1
A1,donnees1
A1,A2
adresse2
#
#
#
#
Architecture des ordinateurs
variable avec 1 mot mémoire
transfère contenu
A1+A2, résultat dans A1
saut inconditionnel
IG3 2013-2014
245 / 294
Opérandes et étiquettes
L’assembleur permet de donner des noms alphanumériques aux variables
et aux étiquettes.
⇒ effectuer un branchement.
L’assembleur permet de ne pas donner l’adresse binaire mais un nom aux
opérandes. Chaque registre possède un nom reconnu par l’assembleur.
Exemples d’opérandes et d’étiquettes
tab :
dix :
boucle :
DS
DC
MOVE
MOVE
JUMP
1
10
dix,A1
A2,tab
boucle
Clement Jonquet (Polytech’ Montpellier)
#
#
#
#
#
variable avec 1 mot mémoire
constante 10
A1← valeur(dix)
tab← valeur(A2)
saut inconditionnel
Architecture des ordinateurs
IG3 2013-2014
246 / 294
Macro-instruction (1/2)
Utiliser des directives pour isoler la séquence d’instruction que l’on veut
éviter de répéter et lui attribuer un nom symbolique pour lui faire
référence. L’assembleur remplace par la séquence correspondante.
Étend le jeu d’instruction ;
Programme plus simple et plus facile a modifier ;
Calcul du cube d’un nombre
MACRO
MOVE
MOVE
MUL
MUL
MOVE
ENDM
CUBE (valeur, valeurcube)
valeur,D1
valeur,D2
D1,D2
D1,D2
D2,valeurcube
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
#D2 := D1×D2
IG3 2013-2014
247 / 294
Macro-instruction (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
248 / 294
Sous-programme (1/2)
Définis comme les macros, mais leurs instructions constituent une entité
bien séparée du programme principal. Cette séparation existe toujours
après la traduction
Présent une seule fois en mémoire ;
Branchements traités lors de l’exécution ;
Abstraction. Peut être utilisé par plusieurs programmes.
Attention :
Connaı̂tre les adresses des sous-programmes ;
Sauvegarder l’adresse de retour ;
Sauvegarder l’état de la machine (e.g., registre utilisés par le
sous-programme).
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
249 / 294
Sous-programme (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
250 / 294
Passage de paramètres avec une pile [Meynard00]
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
251 / 294
Passage de paramètres
Un paramètre est une variable dont le nom est connu mais dont le
contenu n’est précisé qu’au moment de l’exécution. C’est le passage des
paramètres formels aux paramètres effectifs :
fais lors de la traduction pour les macros (i.e., expansion) ;
fais lors de l’exécution pour les sous-programmes.
Passage par valeur
Recopier la valeur des paramètres dans une zone connue des
sous-programmes (e.g., mémoire ou registre). Le sous-programme ne
travaille que sur une copie des paramètres (⇒ protection)
Passage par référence
Transmettre au sous-programme les adresses des paramètres. Le
sous-programme travaille donc sur les données du programme appelant.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
252 / 294
Exemple de passage de paramètres [Meynard00] (1/2)
La fonction mult est un sous-programme récursif à 1 paramètre de retour
réalisant la multiplication de 2 entiers positifs par additions successives.
entierpositif mult(entierpositif x, entierpositif y)
entierpositif i ; // inutile dans l’algo !
si x=0 alors retourne 0 ;
sinon début
i=y ;
retourne mult(x-1,i)+y ;
fin
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
253 / 294
Exemple de passage de paramètres [Meynard00] (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
254 / 294
Sauvegarde de l’état de la machine
Avant l’appel d’un sous-programme
Executer un sous-programme consiste à passer le contrôle du processeur à
ce sous-programme. Il faut donc sauvegarder en mémoire centrale l’état
des registres pour permettre d’executer un sous-programme (utilisant
éventuellement ces registres) et revenir ensuite à l’execution du premier.
Registres sauvegardés par l’appelant ;
Registres sauvegardés par l’appelé ;
Lors des appels récursifs (sous-programme qui se rappelle lui-même) on
utilise la pile pour sauvegarder l’état de la machine.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
255 / 294
Fonctionnement de l’assembleur
Traduction et passes
La traduction nécessite généralement 2 passes à cause des références en
avant i.e., référence à un symbole/étiquette non encore connus.
Exemple de références en avant
étiquette
Boucle :
code op.
---JUMP
-------
opérande
commentaire
instruction quelconque
Boucle
La 1ère passe construit la table des symboles (nom, type, adresse) et
alloue une adresse à chaque instruction (commençant à 0) ;
La 1ère passe construit la table des références extérieures (i.e., appels
à des sous-programmes) ;
La 2ème passe génère les instructions en code machine.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
256 / 294
Développement d’un programme
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
257 / 294
Éditeur de liens
Combine plusieurs programmes en langage machine en un seul programme
complet et exécutable.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
258 / 294
Chargeur
Charge le programme complet obtenu par l’éditeur de lien en mémoire
centrale.
Ajuste les adresses finales des instructions à l’aide de l’emplacement
de chargement ;
L’assembleur aide le chargeur en lu indiquant quels contenus
d’instruction doit également être modifié ;
Plus simple : utiliser un registre de base lors de l’exécution !
La question de l’amorçage
Le chargeur est un programme indispensable pour charger les programmes
en mémoire centrale et ainsi pouvoir le exécuter... mais qui charge le
chargeur ?
bootstrapping sur bande ou ROM ou disque spécial.
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2013-2014
259 / 294
Téléchargement