Architecture des ordinateurs

publicité
Plan du cours
1
Histoire de l’ordinateur
2
Présentation générale
3
Représentation interne des informations
4
Circuits logiques
5
Mémoires
6
Unité centrale de traitement
7
Assembleur
8
Introduction au langage MIPS
9
Entrées / sorties
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
181 / 238
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 2010-2011
182 / 238
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 2010-2011
183 / 238
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 2010-2011
184 / 238
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 2010-2011
185 / 238
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
addition
saut inconditionnel
IG3 2010-2011
186 / 238
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 2010-2011
187 / 238
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 2010-2011
188 / 238
Macro-instruction (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
189 / 238
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 2010-2011
190 / 238
Sous-programme (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
191 / 238
Passage de paramètres avec une pile [Meynard00]
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
192 / 238
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 2010-2011
193 / 238
Exemple de passage de paramètres [Meynard00] (1/2)
La fonction mult est un sous-programme à 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 2010-2011
194 / 238
Exemple de passage de paramètres [Meynard00] (2/2)
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
195 / 238
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 2010-2011
196 / 238
Environnement de programmation
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
197 / 238
É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 2010-2011
198 / 238
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 2010-2011
199 / 238
Évolution schématique des langages
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
200 / 238
Téléchargement