iut léonard de vinci, reimsdpt info, y.remion architecture & programmation processeur,...
TRANSCRIPT
IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Architecture&
Programmation
Processeur, micro-code,assembleur, langage machine,
concepts « programmatiques » de haut niveau
Architecture & Programmation, 2 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
But du cours
Liaison entre Architecture et programmation.
Il s'agit en somme de combler partiellement le fossé séparant l'Electronique et la Programmation.
Compréhension de certains concepts de programmation tant bas niveau (langage machine, assembleur) que haut niveau (C, ...).
Architecture & Programmation, 3 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Moyens
Analyse d'un microprocesseur simpliste adapté de celui du livre "Architecture de l'Ordinateur" de A. Tanenbaum publié chez InterEditions.
Analyse et conception progressive de l’interpréteur d'un langage machine simpliste dédié à ce micro-processeur.
Traduction dans ce langage machine de concepts de programmation propres aux langages de haut niveau :
calculs et tests complexes, boucles, appels de fonctions, arguments, retour avec ou sans valeur.
Architecture & Programmation, 4 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Plan du cours
Analyse du microprocesseur
Exécution d’un programme LM
rôle du micro-code vis à vis du programme LM
structure du micro-code
Instructions LM
nature des instructions LM, micro-codagetraduction de concepts haut niveau
Architecture & Programmation, 5 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Chapitre I
Analyse du micro-processeur
description générale
bloc de traitement
bloc de commande
Architecture & Programmation, 6 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Le processeur travaille en cycles de 4 phases cadencées par une horloge interne.
Chaque cycle correspond à l'exécution de la micro-instruction stockée en phase 1 dans un registre dédié : Registre µ-instr.
Le processeur est schématiquement découpé en 2 blocs fonctionnels : traitement : réalise les opérations demandées commande : choisit la prochaine µ-instruction
Fonctionnement global
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 7 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Bus ABus C Bus B
NZ
D
traitement commande16
16
Horloge
3 4
2 1
256 µ-instructions
33 bits
Mémoire deCommande
Décod. 4b
8
4
4
4
33
256
Incrémenteur
WRRD
Busd’adresses
Bus dedonnées
SO
Décod. 4b
Décod. 4b
16
Décod. 8b
Valideur 16b
UAL n b
MCO
EC
MUX 2xn
Décaleur
MSMicro-
Séquenceur
Tampon A Tampon B
CO
AC
PP
0
1
LGMOT
A
B
C
D
E
F
RI
RIT
PLP
dispo
RDO
Processeur
Mémoirecentrale
RAD
µ-inst 0
µ-inst 255
Registre µ-instn
n
A
U
SA
MUX 2x8
Architecture & Programmation, 8 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
16 registres n bits (CO, … , A, B, … , F),
tous connectés à 3 bus n bits :
A et B en lecture, C en écriture
la sélection pour ces 3 bus fait intervenir des bus d’adresses 4 bits et des décodeurs 4 bits.
l’écriture via le bus C doît être confirmée grâce au signal EC pilotant le valideur 16 bits
Mémoire de travail
Bus ABus C Bus B
16
16
4
Décod. 4b
Décod. 4b
Décod. 4b
16
Valideur 16b
EC
CO
AC
PP
F
PLP
...
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 9 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
2 registres n bits permettant de stabiliser en phase 2 les lectures des 2 bus A et B (Tampon A, Tampon B).
un multiplexeur 2 x n bits permettant de choisir entre Tampon A et RDO (cf. plus loin) selon le signal A.
une UAL n bits, 8 opérations (selon signal 3 bits U) et 2 fils d’état du résultat (N : négatif, Z zéro) connectée à la sortie du multiplexeur et à Tampon B.
un décaleur n bits 4 opérations (selon signal 2 bits D) en sortie d’UAL alimentant le bus C.
CalculNZ
D
2
UAL n b
Décaleur
Tampon B
A
U
µ-Séqu.
RDO
RAD
Registre µ-inst
MUX 2xn
Tampon A
Bus ABus C Bus B
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 10 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
2 registres n bits connectés aux bus de la mémoire centrale. RAD connecté en lecture au bus d’adresses RDO connecté en lecture/écriture au bus de données
validation des transferts par les signaux de la mémoire centrale & connexion de RDO au bus de données: WR ( écr mém, lec RDO , Mem[RAD]=RDO ) RD ( lec mém, écr RDO , RDO=Mem[RAD] )
Transferts avec lamémoire centrale
3 4
WRRD
Busd’adresses
Bus dedonnées
SO
MUX 2xn
Tampon B
RDO
RADn
nSA
Registre µ-inst
Bus C
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 11 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
RAD est mis à jour à partir de Tampon B en phase 3 si le signal SA (Set rAd) est activé.
RDO est mis à jour en phase 4 a partir du bus C si le signal SO (Set rdO) est activé.
RDO alimente aussi le multiplexeur 2 x n bits et peut ainsi remplacer Tampon A dans le calcul.
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 12 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Les transferts mémoire seront supposés plus lent que le processeur et demanderont 2 cycles consécutifs selon les synoptiques suivants :
lecture mémoire RDO = Mem[RAD] cycle 1 ; écriture de RAD, activation de RD cycle 2 ; maintien de RD fin de cycle 2 ; la donnée lue est stockée dans RDO
écriture mémoire Mem[RAD]=RDO cycle 1 ; écriture de RAD et RDO, activation de WR cycle 2 ; maintien de WR fin de cycle 2 ; donnée stockée dans RDO écrite
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 13 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
mémoire de travail : 13 bits
3 bus d’adresses 4 bits : adA,adB,adC EC signal de validation d’écriture via le bus C
transferts : 4 bits
SA mise à jour de RAD d’après Tampon B SO mise à jour de RDO d’après le bus CWR écriture mémoire Mem[RAD]=RDO RD lecture mémoire RDO= Mem[RAD]
Signaux de commande
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 14 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
calcul : 6 bits
A choix entre RDO et Tampon A
U signal 3 bits de commande de l’UAL
D signal 2 bits de commande du décaleur
0 : -a 1 : b+a 2 : b-a 3 : a4 : non a5 : b et a6 : b ou a 7 : b xor a
avec
a = Tampon A ou RDO
b = Tampon B
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
0 : pas de décalage1 : décalage à droite non signé2 : décalage à gauche 3 : décalage à droite signé
0 : Tampon A1 : RDO
Architecture & Programmation, 15 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
phase 1 : (mise à jour de Registre µ-instr )
phase 2 :lecture par les bus A et B, stockage dans
Tampon A et Tampon B
phase 3 :stabilisation des calculs ( UAL et Décaleur )mise à jour éventuelle de RAD depuis Tampon B
phase 4 :écritures éventuelles via le bus C de RDO et/ou d’un des 16 registres de travail
Séquencement du cycle
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 16 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
256 registres « ROM » 33 bitsstockage des micro-instructions composant lemicro-code (cf. plus loin).
tous connectés en lecture conditionnelle à 1 bus 33 bits permettant de charger Registre µ-instr.
la sélection fait intervenir un décodeur et un bus d’adresses 8 bits alimenté par MCO
Mémoire de commande
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
1
256 µ-instructions
33 bits
Mémoire deCommande
33
256
Décod. 8b
µ-inst 0
µ-inst 255
Registre µ-inst
MCO
Architecture & Programmation, 17 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
choix de la prochaine µ_instruction à exécuter par mise à jour en phase 4 de MCO (micro compteur ordinal)
opéré par un multiplexeur 2 x 6 bits entre : poursuite ; MCO+1 fourni par un incrémenteur et saut ; adresse fournie par Registre µ-inst.
piloté par le micro-séquenceur selon son signal de commande MS et les fils d’état N et Z de l’UAL
Contrôle du séquencementdu micro-code
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Mémoire deCommande
8
Incrémenteur
Décod. 8b
MS
Registre µ-inst
MUX 2x8
Micro-
SéquenceurNZ
4
UAL n b
MCO
Architecture & Programmation, 18 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
mémoire de commande : 0 bits
chargement de Reg µ-inst automatique
contrôle : 10 bits
adS adresse 8 bits de saut éventuel ou forcé
MS commande 2 bits du Micro-séquenceur
Signaux de commande
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
0 : poursuite systématique avec 1 : saut si N=1 saut MCO=adS 2 : saut si Z=1 poursuite MCO=MCO+1 3 : saut inconditionnel
Architecture & Programmation, 19 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
phase 1 : mise à jour de Registre µ-instr .
phase 2 : (lecture par les bus A et B )
phase 3 : stabilisation des calculs : UAL, Incrémenteur, Micro_séquenceur et Multiplexeur.
phase 4 :mise à jour de MCO.
Séquencement du cycle
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
Architecture & Programmation, 20 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Structure binaire des micro-instructions
Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande
A MS DUSASOWRRDEC
adC adA adB adS
1 2 23 1 1 1 1 1 4 4 4 8
33 bits
Une micro-instruction est une juxtaposition de champs de bits destinés à mémoriser les valeurs des signaux de commande pilotant le processeur pendant 1 cycle.
Architecture & Programmation, 21 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Chapitre II
Exécution d’un programme LM
micro-code et programme LM
structures des LM
architecture du micro-code
Architecture & Programmation, 22 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
instructions et données en mémoire centrale
chargées et exécutées une à une par le processeur
Programme en cours d’exécution
Cf. cours « Bases de la programmation »
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Rôle du « micro-code »
programme embarquédans le processeur en
mémoire de commande
Instructions au formatbinaire définissant le LM
programme LM
Architecture & Programmation, 23 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Horloge
Mémoire deCommande
RDO
RAD
Registre µ-inst...
Inst LM
...
ProgrammeLM
...
...
1. chargement d’une instruction
LM
2. décodage puisexécution de cette
instruction
Micro-code
1.
MémoireCentrale
Processeur
Architecture & Programmation, 24 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Rôle
Format binaire des instructions
Emplacement des instructions
Emplacement des données
Taille du programme
Volumedes données
Exécuter tout programmeLM soumis
micro-instructions du processeur
processeur : mémoire de commande
processeur : certains registres de travail
très court ( mémoire de commande )
très faible ( nombre de registres )
quelconque
définition du Langage Machine
mémoire centrale
mémoire centrale + évtlmnt qq. registres
quelconque
quelconque
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Comparaison micro-code / programme LM
Micro-code Programme LM
Architecture & Programmation, 25 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Partage des registres de travail
Registres réservés au micro-code, le programme LM ne peut jamais y accéder directement.
registres dédiés rôles précis et immuables registres réservés rôles divers au cours du temps
Registres à disposition du programmeur LM, le micro-code ne les utilise jamais
registres disponibles rôles à discrétion du programmeur LM.
CO … LGMOT Dispo, A … D
E, F
Architecture & Programmation, 26 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Le langage machine (LM) associé à un micro-code estcaractérisé par les formats binaires des diverses instructionsreconnues et exécutées par ce micro-code.
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Définition du Langage Machine
Architecture & Programmation, 27 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Le LM est donc le lien entre micro-code et programmes :
le micro-code ne sait exécuter que des programmes exprimés dans ce langage.
tout programme composé exclusivement d'instructions de ce langage pourra être interprété par le micro-code.
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
vérifiant ce format binaire décodé et exécuté
Architecture & Programmation, 28 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
le langage machine est défini par le micro-code,et non par le processeur.
2 processeurs identiques à micro-codes différents se programment avec des LM différents.
Architecture & Programmation, 29 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
une instruction LM occupe un à plusieurs mots mémoire consécutifs
scindés en plusieurs champs de bits
Format général d’une instruction LM
. . .
Code Instruction nature de l’opération désirée : ex addition, saut
premier champ
autres champs opérandes : ex valeurs à additionner paramètres : ex condition et adresse de saut
nombre et formats selon nature instruction
Architecture & Programmation, 30 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
une instruction possède classiquement de 0 à 3 opérandes
ex : 0 1 2 3 return goto x a = b a = b + c
ces opérandes sont spécifiés par des « nombres clef » binaires permettant d’accéder d’une façon ou d’une autre aux valeurs voulues (cf. modes d’adressage … ).
ces nombres clef sont appelés adresses même s’ils ne correspondent pas toujours à l’adresse d’un mot en mémoire centrale contenant la valeur de l’opérande.
Adresses
Architecture & Programmation, 31 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
par souci de compromis entre simplicité et puissancedes instructions, les LM peuvent limiter le nombre maximumd’adresses par instruction. On parle alors de :
Langage machine 3 adresses
pas de limitation !
Langage machine 2 adresses
pour les opérations 3 adresses, une des 2 adresses est à la fois source et destination :
a = b+c a=b ; a += c
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Architecture & Programmation, 32 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
et même de :
Langage machine 1 adresse
on utilise un registre dédié pour toutes les adressesmanquantes :
a = b acc=b ; a = acc;a = b+c acc=b ; acc += c ; a = acc
Accumulateur
Architecture & Programmation, 33 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
adresse 3
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Implantation mémoire des instructions LM
adresse 1
adresse 2
X
X + 1 mot
X + 3 mots
X + 2 mots
adressesmémoire
un mot mémoire suffit rarement à stocker un code instruction et une adresse.
une instruction LM avec opérande(s) occupe donc souvent plusieurs mots mémoire consécutifs. code instruction divers
premier mot
mots suivants facultatifs
Architecture & Programmation, 34 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Mécanisme général de traitementd’une instruction LM par le micro-code
Le micro-code (dont le rôle est d’exécuter le programme LM soumis) correspond au pseudo-algorithme suivant :
TantQue vrai Faire lire en mémoire centrale l'instruction à exécuter identifiée par son adressemodifier cette adresse pour pointer sur l'instruction suivanteidentifier le type de l'instruction par décodage de son code instructionextraire les arguments ou les lire en incrémentant l'adresseexécuter l'opération demandée
Fin
Architecture & Programmation, 35 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
à chaque lecture d’un mot de l’instruction, il convient d’incrémenter l’adresse mémorisée pour le « prochain mot- instruction ».
Séquencement par défaut
l’exécution de certaines instructions LM consiste entre autre à « re-modifier » cette adresse de « prochain mot- instruction ».
Saut, appel de fonction …
Séquencement du programme LM
Architecture & Programmation, 36 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Le micro-code est une boucle infinie.
il doit toujours y avoir un programme en cours d’exécution.
Permanence de l’interprétation
Architecture & Programmation, 37 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
au démarrage le programme chargé est souvent un gestionnaire de commande qui peut en lancer un autre comme suit :
chargement en mémoire
saut à son adresse de départ.
...le retour du programme lancé ramène à une partie
spécialisée du code du gestionnaire de commande qui le décharge et réactive le gestionnaire.
Le programmelancé s’exécute
Architecture & Programmation, 38 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Cela revient à lire le premier mot de l’instruction LM désirée en mémoire centrale et le stocker dans un registre de travail.
Identification ?
Récupération de l ’instruction
Lequel ?
Un registre dédié CO (Compteur Ordinal) sert à
mémoriser l’adresse de ce mot
Un registre dédié RI (Registre Instruction)
Architecture & Programmation, 39 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
...
...
Horloge
Mémoire deCommande
RAD
Registre µ-inst
Micro-codeMémoireCentrale
Processeur
RI
CO
µ-inst 0
RDO
µ-inst 2
...
x Inst LM
...
ProgrammeLM
x
µ-inst0 et 1
Architecture & Programmation, 40 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Par défaut un programme LM se poursuit en séquence, c’est à dire que la prochaine instruction à exécuter est la suivante en mémoire centrale.
A chaque lecture d’un mot de l’instruction LM, il convient donc d’incrémenter le compteur ordinal CO de la longueur d’un mot pour qu’à la fin il « pointe » bien la prochaine instruction.
Séquencement par défaut
Architecture & Programmation, 41 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Câblé
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Décodage du champ « code instruction ».
Identification du type de l’instruction
Gain de tempsComplexité matérielle accrue
Micro-codé
Succession de : test du bit gauche de RI (saut si N) + décalage à gauche de RI
Architecture & Programmation, 42 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
...
...Horloge
RAD
RI
RDO
Mémoire deCommande
8
Incrémenteur
Décod. 8b
MUX 2x8
Micro-
SéquenceurN
MCO
a
<< 1
Registre µ-inst
Saut si N
Adressede saut
Instruction fondamentale :
Tester RI et le décaler; si N sauter en ...
Décodage micro-codé
Architecture & Programmation, 43 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Squelette du micro-code de décodage* RI
T&D† RI; SI N aller en e1 ???T&D RI; SI N aller en e010??
T&D RI; SI N aller en e00100?
… exec inst 000000
e001 … exec inst 001 001
e01 T&D RI; SI N aller en e01101?
… exec inst 010 010
e011 … exec inst 011 011
e1 T&D RI; SI N aller en e111??
T&D RI; SI N aller en e10110?
… exec inst 100 100
e101 … exec inst 101 101
e11 T&D RI; SI N aller en e11111?
… exec inst 110 110
e111 … exec inst 111 111
* ex simpliste pour 8 instructions LM. † Tester et Décaler
Architecture & Programmation, 44 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Pas de modification du processeur
Lourd en temps et en µ-instructions.
* pour N = 2n instructions LM.
n cyclespour chaquedécodage *
2n-1 = N-1µ-instructionsde décodage *
Architecture & Programmation, 45 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
...
...
Horloge
RI
Mémoire deCommande
8
Incrémenteur
Décod. 8b
MCO
Adresses de saut aux blocsde traitement des instructions LM
… …
MUX 2x8
Micro-
Séquenceur
Tamp B
Ii
IN
I1
Décodeur
Décodage câblé, une solution
Registre µ-inst
MUX 2x8
Architecture & Programmation, 46 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code
Intérêts
décodage en 1 cycle !
gain de N-1 µ-instructions de décodage*
Inconvénient relatif
complexité / coût
décodeur n bits + multiplexeur 2x8 bits*
N registres 8 bits*
1 bit de plus par µ-instruction
* pour N = 2n instructions LM.
Architecture & Programmation, 47 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Chapitre III
Instructions LM
Organisation de la mémoire
Manipulation des données
Rupture du séquencement par défaut
Architecture & Programmation, 48 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Quand un programme s’exécute, ses instructions comme ses données sont en mémoire centrale.
Plusieurs façons de gérer cette cohabitation existent.
Vision monobloc
Cohabitation instructions LM / données en mémoire centrale
Partition
Un seul espace pour code et données
Un bloc mémoire réservé au codeUn autre réservé aux données
Architecture & Programmation, 49 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Vision monobloc
MémoireCentraleT-1
C O D E
&
D O N N E E S
0
Un seul espace pour code et données
organisation à la charge du programmeur
Accès lecture / écriture partout
possibilité de code auto-modifiant(ajout, suppression, modification d’instructions pendant l’exécution volontaire ou … accidentel !!! )
Architecture & Programmation, 50 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Vision « partitionnée »
MémoireCentraleT-1
D O N N E E S
Deux blocs distincts pour code et données
« Pointés » par 2 registres dédiés du processeur
un espace d’adressage distinct par blocC O D E
0
Architecture & Programmation, 51 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Relogeabilité aisée du programme par modification des registres dédiés au « pointage » des 2 blocs.
Possibilité de choix implicite de l’espace d’adressage selon l’instruction
blocage de l’auto-modification : code avant données en mémoire
écritures mémoire toujours dans le bloc de données
Architecture & Programmation, 52 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
On distingue généralement les données « statiques » des données « dynamiques » .
Vie(s) provisoire(s) et éventuellement multiplesnaissance et mort en cours d’exécution
Données « éphémères » ou « temporaires »
Durée de vie égale au programme :naissance = chargement du programmemort = déchargement
Données permanentes !
Architecture & Programmation, 53 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Partition « habituelle »
MémoireCentraleT-1
D . D Y N
C O D E
0
D . S T A
Bloc ou segment de données « dynamiques »
dépositaire de tous les objets temporaires ( paramètres de fonction, variables locales, résultats
de fonctions ou de calculs intermédiaires, tables dynamiques, cellules d’une liste, … )
Bloc ou segment de données « statiques »
dépositaire des objets permanents :( variables globales, variables locales statiques, constantes chaînes, … )taille et contenu connus à l’écriture du prog.dimensionné et initialisé à la compilation.
Bloc ou segment de code
instructions LM du programme
Architecture & Programmation, 54 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
la Pile (Stack)
&
le Tas (Heap)Objets à durée de vie temporaire et
imprévisible par le compilateur :
tables dynamiques, cellules d’une liste, …
Objets à durée de vie temporaire et
prévisible et gérée par le compilateur :
paramètres de fonctionvariables locales
résultats de fonctions oude calculs intermédiaires ...
Les données dynamiques sont encore scindées en 2 groupes selon la « prévisibilité » de leur durée de vie.
Ces 2 groupes sont « gérés » par 2 structures qui se partagent le segment de données dynamiques :
mort avecla fonction
mort aprèsutilisation
Architecture & Programmation, 55 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Le Tas
Structure mémorisant :
l’espace global géré ( « Arène » ou « Tas » )
les zones déjà allouées dans cet espace.
répondant à des requêtes d’allocation ou de libération de zones.
généralement implantée comme bibliothèque du langage de haut niveau ( malloc & free en C, … )
MémoireCentrale D
ON
NE
ES
DY
NA
MIQ
UE
S
D S
Architecture & Programmation, 56 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
La Pile « système » ou « machine »
Structure de pile mémoire de mots
LIFO : Last In First Out
sommet pointé par un registre dédié PP
instructions spécialisées :empiler une valeur a PUSH adépiler dans un objet O POP O
MémoireCentrale D
ON
NE
ES
DY
NA
MIQ
UE
S
D S
PP
dernier empilé ou premier libre
Pointeur de PileStack Pointer (SP)
Architecture & Programmation, 57 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
pile montante
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
PP
pile descendante
2 implantations possibles :
PPChoix habituelcf. appels de
fonctions
Fond de piled’adresse plus basse
que le sommet
Fond de piled’adresse plus haute
que le sommet
Occu
pé
Ht
bas
Vid
e
Occu
pé
Ht
bas
Vid
e
Architecture & Programmation, 58 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
écrire a au sommet de la pile et modifier PP
pile montante*
Mem[ PP+=LGMOT ] = a
Occu
pé
Vid
e
PP
Occu
pé
Vid
e
PP
a
pile descendante*
Mem[ PP-=LGMOT ] = a
PP
Occu
pé
Vid
e
PP
Occu
pé
Vid
e
a
* exemple avec PP « pointant » le dernier entré
PUSH a
Architecture & Programmation, 59 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
pile descendante*
O=Mem[PP]; PP+=LGMOT
PP
Occu
pé
Vid
e
PP
Occu
pé
Vid
e
a
O...
Oa
pile montante*
O=Mem[PP]; PP-=LGMOTO
ccup
éV
ide
PP
Occu
pé
Vid
e
PP
a
O...
Oa
* exemple avec PP « pointant » le dernier entré
POP O
lire le sommet, stocker la valeur lue dans O et modifier PP
Architecture & Programmation, 60 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Allocation, utilisation, et libération aisée d’objets « éphémères » (ie. à usage unique) :
résultats de fonctions ou de calculs intermédiaires
utilisation massive par les compilateurs pour les calculs complexes et les valeurs de retour des fonctions
Mal adapté aux paramètres ou variables locales des fonctions.
extension de la structure de pile, « environnements »
Architecture & Programmation, 61 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
sinon
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Environnement (Stack Frame) :
bloc dynamique inclus dans la pile
identifié par son adresse de débutoù commence son suivant
au sommet de la pile se termine
S’il est ledernier
Architecture & Programmation, 62 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Pile système avec environnements
Les environnements sont chaînés : chacun dispose dans son premier mot d’un pointeur sur son précédent.
le dernier, dit « environnement courant » est pointé par un registre dédié PLP
instructions spécialisées :créer un nouvel env. NEWENVdétruire l’env. courant DESTENV
Pointeur Local de PileStack Frame Pointer (SFP)
PP
Vid
e
Env.préc.
Env.courant
PLP
Architecture & Programmation, 63 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
empiler PLP et faire pointer PLP sur le dernier entré.
exemple avec pile descendante et PP « pointant » le dernier entré
Vid
e
Env.courant
PP
PLP
Env. courant
Vid
e
Env.préc.
PLP
PP
Chaînage sur le courant Nouveau courant
« PUSH PLP »; PLP=PP
Mem[PP-=LGMOT]=PLP; PLP=PP
NEWENV
Architecture & Programmation, 64 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
vider environnement et dépiler dans PLP.
Vid
e
Env.courant
PP
PLP
Vid
e
Env.préc.
PLP
PP
Env.courant
PP=PLP; « POP PLP »
PLP=Mem[PP=PLP]; PP=PP+LGMOT
exemple avec pile descendante et PP « pointant » le dernier entré
Libérer tout le blocsauf le 1er mot
Précédent courantrestauré comme avant NEWENV
DESTENV
Architecture & Programmation, 65 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Gestion aisée des objets liés à un appel de fonction
paramètres et variables locales
un environnement au moins par appel
paramètres et variables locales situés aux mêmes endroits dans l’environnement à chaque appel.
utilisation massive par les compilateurs pour les appels de fonction.
NEWENV & DESTENV sont souvent absentes du LM ; elles sont alors « mimées » par le compilateur selon :
NEWENV : PUSH PLP DESTENV : MOVE PLP,PPMOVE PP,PLP POP PLP
Architecture & Programmation, 66 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Les données d’entrée d’une instruction peuvent être : des registres des variables ou objets situés en mémoire centrale des valeurs numériques constantes
Les résultats des instructions peuvent être stockés dans : des registres des variables ou objets situés en mémoire centrale
Modes d’adressage LM
Architecture & Programmation, 67 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Les constantes numériques « adresses » des instructions LM doivent permettre respectivement de récupérer les données d’entrée et de stocker les résultats.
Ceci ne peut être possible que si l’on sait comment ces « adresses » LM permettent d’accéder aux opérandes.
Modes d’adressage
Implicitesfixés définitivementpour cette instruction
Expliciteschamps modes
d’adressage dans le 1er
mot de l’instruction
Architecture & Programmation, 68 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
simple et rapide rien d’autre à décoder que le code instruction accès aux opérandes stéréotypés donc efficaces
rigide toute autre combinaison de modes d’adressage est une
autre instruction combinaison non prévue débrouille
bien quand très peu de combinaisons réellement utiles !
Modes d’adressage implicites
Architecture & Programmation, 69 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
complexe et tendance à être lent nécessité de décodage des modes d’adressage code d’accès aux opérandes traitant tous les modes
quasi-nécessité de le « factoriser »µ-code assez complexe
souple toutes les combinaisons de modes d’adressage sont
intrinsèquement gérées par cette instruction
bien si beaucoup de combinaisons réellement utiles !
Modes d’adressage explicites
Architecture & Programmation, 70 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Adressage Immédiat
Adresse = valeur constante de l’opérande
résultat*‡opérande d’entrée*†
Rien à Fairevaleur déjà dans A
T-1
Av
Architecture & Programmation, 71 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Décoder A RiRi = C
opérande d’entrée*†
Décoder A RiA = Ri
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Adressage Registre
Adresse = n° d’un registre libre servant d’opérande
Ai
R0
Ai
R0
...Ri
…
...Riv
…
Cv
Architecture & Programmation, 72 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Mem [A] = C
opérande d’entrée*†
A = Mem [A]
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Aa
Aa
Adressage Direct
Adresse = adresse d’un mot mémoire servant d’opérande
a v a
Cv
Architecture & Programmation, 73 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Décoder A RiMem [Ri] = C
opérande d’entrée*†
Décoder A RiA = Mem [Ri]
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Ai
Ai
a v a
Cv
Adressage Indirect par registre
Adresse = n° d’un registre libre pointant un mot mémoire servant d’opérande
R0
...Ria
…
R0
...Ria
…
Architecture & Programmation, 74 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
A = Mem [A]Mem [A] = C
opérande d’entrée*†
A = Mem [A]A = Mem [A]
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Ap
Ap
a v a
Cv
Adressage Indirect
Adresse = adresse d’un mot mémoire pointant un mot mémoire servant d’opérande
p a p a
Architecture & Programmation, 75 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Mem [A+PLP] = C
opérande d’entrée*†
A = Mem [PLP+A]
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Ad
Ad
p + v d
Adressage Local
Adresse = décalage dans l’environnement courant d’un mot mémoire servant d’opérande
p p PLP
p
dPLP
p
d
p + d
Cv
Architecture & Programmation, 76 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
A = Mem [PLP+A]Mem [A] = C
opérande d’entrée*†
A = Mem [PLP+A]A = Mem [A]
T-1 T-1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Ad
Ad
p + a d
Adressage Local Indirect
Adresse = décalage dans l’environnement courant d’un pointeur vers le mot mémoire servant d’opérande
p p PLP
p
dPLP
p
d
p + a d
a v a Cv
Architecture & Programmation, 77 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Décoder&décaler A RiMem [A+Ri] = C
opérande d’entrée*†
Décoder&décaler A RiA = Mem [A+Ri]
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Adressage Indexé
Adresse = 2 champs : adresse d’une table mémoire n° de registre contenant l’index
T-1
At i
R0
...Rid
…
t d
T-1
At i
R0
...Rid
…
t d
t + v d
t + d
Cv
Architecture & Programmation, 78 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
résultat*‡
Décoder&décaler A RiMem [Ri+A] = C
opérande d’entrée*†
Décoder&décaler A RiA = Mem [Ri+A]
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C
Adressage par Registre de Base
Adresse = 2 champs : index dans un bloc mémoire n° de registre « pointant » le bloc
T-1
Ad i
R0
...Rib
…
b d
T-1
Ad i
R0
...Rib
…
b d
Cv
b + v d
b + d
Architecture & Programmation, 79 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Instructions de transfert de données
opération a = b par copie binaire du mot b dans le mot a.
En LM 2 ou 3 adresses une instruction à modes d ’adressage explicites suffit :
MOVE b,a ( a = b )
En LM 1 adresse, le transfert passe par l’accumulateur et il faut donc 2 instructions à mode d’adressage explicite :
LOAD b ( Accu = b )
STORE a ( a = Accu )
Architecture & Programmation, 80 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Instructions de calcul
Classe Type(s) Dyadiques Monadiques
arithmétique entiers ADD, SUB, MUL,(flottants) DIV, MOD OPP
bit à bit [entiers] AND, OR, XOR NOT
décalages [entiers] LSHIFT, RUSHIFT,RSSHIFT
décalage à droitenon signé
décalage à droitesigné
Architecture & Programmation, 81 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Ecritures des calculs selonle nombre d’adresses permises
opérations dyadiques ex pour l’addition
LM 3 adresses ADD a, b, c // c = a+b
LM 2 adresses MOVE a, c // c=aADD b,c // c += b
LM 1 adresse LOAD a // Acc = aADD b // Acc += bSTORE c // c = Acc
opérations monadiques ex pour l’opposé
LM 2 ou 3 adresses OPP a, b // b=-a
LM 1 adresse OPP a // Acc = -aSTORE b // b = Acc
Architecture & Programmation, 82 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Données de taille non unitaire
Il est souvent nécessaire de manipuler des données dont la taille est différente du mot mémoire.
ex en C sur machine 32 bits : char, short, double, ...
Or, les instructions LM précédentes et le processeur ne manipulent que des mots.
Ces données sont plus délicates à manipuler.
Architecture & Programmation, 83 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Données multi-mots
Il est préférable de disposer d’une UAL calculant sur la largeur totale (« algorithmique câblée » ex processeur 16/32
bits).
récupérationstockagetransfertsopérations bit à bit
mot par mot
décalages
gestion des bits « changeant de mot »
arithmétique entière
algorithmique « posant les opérations » en base 2 taille mot
a1 a0b1 b0
… +-*/ …
Architecture & Programmation, 84 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Données plus courtesque le mot
arithmétique entièredécalages opérations bit à bit calculs naturels de l’UAL
transferts
stockage
récupérationrécupération du mot où l’on
doit stocker la donnée ; « combinaison » et stockage
1
?2
3
récupération du mot contenant la donnée et reformatage
0 . . . 0? 1 2
récupération / stockage
Il est préférable de travailler avec des mots ! ( int en C )
Architecture & Programmation, 85 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Calculs complexes
enchaînement de calculs dont les résultats servent d'opérandes aux suivants.
stockage des résultats intermédiaires jusqu'à utilisation comme opérande.
objets éphémères non nommés pouvant être stockés de façon simplifiée sur la pile.
Architecture & Programmation, 86 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Problème :
expression ( ex : "- a + b * (a - c) + d" )
ordonnancement des calculsinstructions LM réalisant le calcul
Solution : « notation polonaise inverse »
1 convertir l’expression en arbre de calcul2 « traiter » l’arbre en profondeur d’abord
a - b a c - * + d +
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Traitement automatisé des expressions de calcul complexes
père après ses fils
d
*
+
+
c
-b
a
-
a
Architecture & Programmation, 87 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Création de l’arbre de calcul
Mécanisme récursif suivant :
si expression réduite à une valeur alors
arbre résultat feuillesinon
identifier les opérateurs les moins prioritaires parmi ceux-là, choisir celui à droite ou à gauche
selon la règle de regroupement en vigueur. arbre résultat :
valeur
opérateur
arbresous-expression
gauche
arbresous-expression
droite
si opérateurbinaire
Architecture & Programmation, 88 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
« Traitement » de l’arbre
Traitement en profondeur d’abord :
feuille : empiler sa valeur
nœud : dépiler ses opérandescalculer le résultatempiler le résultat
b
-
a
PUSH aPUSH bPOP Rg:0POP Rg:1SUB Rg:0 Rg:1 Rg:0PUSH Rg:0
Architecture & Programmation, 89 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
d
*
+
+
c
-b
a
-
a
...PUSH a aPOP Rg:0 -OPP Rg:0 Rg:0PUSH Rg:0PUSH b bPUSH a aPUSH c cPOP Rg:0 -POP Rg:1SUB Rg:1 Rg:0 Rg:0PUSH Rg:0POP Rg:0 *POP Rg:1MUL Rg:0 Rg:1 Rg:0PUSH Rg:0POP Rg:0 +POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0PUSH d dPOP Rg:0 +POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0...
-a
a
-ab
-aba
-a+b(a-c)
-abac
-ab
a-c
-a+b(a-c)+d
-ab(a-c)
-a+b(a-c)d
Evolution de la pile à l’exécution
Code généréParcoursde l’arbre
Architecture & Programmation, 90 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementOptimisations simples à posteriori
...
OPP a Rg:0PUSH Rg:0PUSH bPUSH a
POP Rg:1SUB Rg:1 c Rg:0
POP Rg:1MUL Rg:0 Rg:1 Rg:0
POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0
POP Rg:1ADD d Rg:1 Rg:0PUSH Rg:0...
...PUSH aPOP Rg:0OPP Rg:0 Rg:0PUSH Rg:0PUSH bPUSH aPUSH cPOP Rg:0POP Rg:1SUB Rg:1 Rg:0 Rg:0PUSH Rg:0POP Rg:0POP Rg:1MUL Rg:0 Rg:1 Rg:0PUSH Rg:0POP Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0PUSH dPOP Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0...
...
OPP a Rg:0PUSH Rg:0PUSH b
SUB a c Rg:0
POP Rg:1MUL Rg:0 Rg:1 Rg:0
POP Rg:1ADD Rg:0 Rg:1 Rg:0
ADD d Rg:0 Rg:0PUSH Rg:0...
Architecture & Programmation, 91 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Instructions de branchement
Ces instructions permettent au programmeur de rompre le séquencement par défaut de son programme.
Cette rupture du séquencement par défaut est obtenue par modification de CO lors du traitement de l’instruction.
Ces instructions se scindent en 3 familles : sauts inconditionnels sauts conditionnels lancement de sous-programme
Architecture & Programmation, 92 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Sauts inconditionnels
On distingue ici le saut à une adresse absolue
GOTO a ( CO = a )
du saut à une adresse relative à celle de l’instruction courante
JUMP n ( CO += n )
Architecture & Programmation, 93 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Sauts conditionnels
Ces instructions ne produisent un saut que si une condition paramètre est réalisée.
Sinon le programme se poursuit en séquence.
tests instructions conditionnelles, boucles, ...
La condition paramètre dépend de la structure matérielle du processeur : « dispose t’il d’un registre d’état ? »
Architecture & Programmation, 94 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Registre d’état
Matériel registre RE de mémorisation des fils d’état de l’UAL. mémorisation commandée par RMI. alimente un micro-séquenceur modifié
selon le LM la mémorisation dans RE est demandée lors de la µ-instruction de calcul final
de toutes les instructions de calculou d’une instruction spéciale COMP a b
qui calcule a-b sans le stocker
N
ZUAL n b
Registre µ-inst
RE
micro-séquenceur
Architecture & Programmation, 95 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Les instructions de sauts conditionnels sont alors
ONGOTO cnd a ( si RE vérifie cnd alors CO = a )
ONJUMP cnd n ( si RE vérifie cnd alors CO += n )
Les conditions (cnd) correspondent à des tests des bits de RE
cnd test sur RE0 Z=01 Z=12 N=03 N=1… retenue, …
COMP a bONGOTO 1 E
// a != b
E: // a == b
SUB b a cONGOTO 1 E
// a != b
E: // a == b
LM avec COMP LM sans COMPexemples
Architecture & Programmation, 96 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Les instructions de sauts conditionnels doivent recevoir, en plus du code cnd, le mot à tester :
ONGOTO cnd m a ( si m vérifie cnd alors CO = a )
ONJUMP cnd m n ( si m vérifie cnd alors CO += n )
SUB b a cONGOTO 1 c E
// a != b
E: // a == b
exemple
Machine sans registre d’état
En LM 1 le mot m est l’accumulateur
ONGOTO cnd a
ONJUMP cnd n
Architecture & Programmation, 97 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeur
Tests complexes
Il est utile de pouvoir écrire des tests complexes composés de :
comparaisons : < , >, <=, >=, ==, != opérations booléennes : et, ou, non
les valeurs de retour de tous ces opérateurs et les paramètres des opérateurs booléens sont de type booléen, un registre entier évalué selon :
Faux valeur 0 Vrai valeur non nulle
Tous ces opérateurs sont alors insérés classiquement dans les arbres de calcul.
Organisation mémoireDonnéesRupture séquencement
Architecture & Programmation, 98 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeur
Opérateurs de comparaisons
b
==
a
Organisation mémoireDonnéesRupture séquencement
b
>=
a
... // évaluation de aPUSH ...... // évaluation de bPUSH ...POP Rg:0 POP Rg:1COMP Rg:0 Rg:1ONJUMP 1 Im:4PUSH Im:0JUMP Im:2PUSH Im:1
1 : Z == 1
... // évaluation de aPUSH ...... // évaluation de bPUSH ...POP Rg:1 POP Rg:0COMP Rg:0 Rg:1ONJUMP 3 Im:4PUSH Im:1JUMP Im:2PUSH Im:0
3 : N == 1
Exemples avec REet LM avec COMP
b-a a-b
Architecture & Programmation, 99 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Opérateur unaire
Opérateurs binaires
évaluation classique évaluation préalable des 2 opérandes
évaluation « paresseuse »évaluation de asi a absorbant (Vrai pour ou, Faux pour et)
conclure (empiler a)sinon évaluer b et conclure (empiler b)
Instructions LM Exécution prog LMLe Micro-processeur
Opérateurs booléens
non
a
Organisation mémoireDonnéesRupture séquencement
... // évaluation de aPUSH ...POP Rg:0 ONJUMP 1 Rg:0 Im:4PUSH Im:0JUMP Im:2PUSH Im:1 1 : Z == 1
Exemple sans RE
a
arbre b non évalué gain de temps effets de bord !!!
Architecture & Programmation, 100 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementExemples sans RE
évaluation paresseuse
b
et
a
... // évaluation de aPUSH ...POP Rg:0 ONGOTO 1 Rg:0 E... // évaluation de bPUSH ...POP Rg:0ONJUMP 1 Rg:0 Im:4PUSH Im:1JUMP Im:2
E: PUSH Im:0
b
ou
a
... // évaluation de aPUSH ...POP Rg:0 ONGOTO 0 Rg:0 E... // évaluation de bPUSH ...POP Rg:0ONJUMP 0 Rg:0 Im:4PUSH Im:0JUMP Im:2
E: PUSH Im:1
Architecture & Programmation, 101 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
partie de code appelée par une instruction,
pouvant se « rebrancher » automatiquement sur l'instruction suivant son appel.
instructions spécialisées :
appel CALL a
branchement sur le code du sous-programme (adr a)« pointage » de l'instruction suivant l'appel.
retour RETURN
branchement à l’adresse mémorisée par l'appel.
Sous-programmes
Architecture & Programmation, 102 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Mémorisation de l’adresse de retour
1. mot mémoire ou registre fixe dédié un seul sous-programme en cours à un moment t donné.
2. chaque sous-programme réserve un mot de son code autant de sous-programmes différents en cours que voulus un seul appel en cours possible pour chaque sous-programme
3. adresse de retour empilée à chaque appel
autant d'appels de sous-programme (identiques ou non) que voulus
récursivité possible si données locales différentes à chaque appel !
Mécanisme d’appel
Architecture & Programmation, 103 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Données locales
Un sous-programme a besoin de données privées dites locales en plus des données du programme appelant.
Récursivitéplusieurs appels en cours simultanément
chaque appel doit disposer de son lot des données locales indépendant des lots des autres appels.
Ce lot de données locales est appelé « environnement d'appel » du sous-programme.
Une solution élégante de gestion de ces environnements d'appel utilise les environnements de la pile.
Architecture & Programmation, 104 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
« PUSH CO … »; « NEWENV »; « GOTO a »;
Mem[PP-=LGMOT]= CO // CO déjà incrémenté !!
Instructions LM Exécution prog LMLe Micro-processeur
CALL a
empiler CO+2*LGMOT créer un nouvel environnement pour cet appel sauter au début du sous-programme (i.e. en a).
exemple avec pile descendante et PP « pointant » le dernier entré
Organisation mémoireDonnéesRupture séquencement
. . .
Env crt PP
PLP
COCALL
a
Ss-prg.
. . .
Env prc PP
PLP
COCALL
a
Ss-prg.
. . .
Env prc PP
PLP
COCALL
a
Ss-prg.
. . .
Env crt PP
PLP
COCALL
a
Ss-prg.
Architecture & Programmation, 105 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Les premières instructions d’un sous-programme visent souvent à :
1. Réserver de la place pour les variables locales dans l’environnement
d’appel ( SUB PP, taille totale, PP )
2. Initialiser leur contenu (optionnel)
Données locales
Les données locales se trouvent dans l’environnement créé pour cet appel.
Chaque appel disposera de son propre jeu de données locales.
Var.locales
. . .
Env prc PP
PLP
COCALL
a
Ss-prg.SUB PP...
Architecture & Programmation, 106 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
« DESTENV »; « POP CO »;
Instructions LM Exécution prog LMLe Micro-processeur
RETURN
détruire l’environnement courant dépiler dans CO (branchement en retour)
exemple avec pile descendante et PP « pointant » le dernier entré
Organisation mémoireDonnéesRupture séquencement
Var.locales
. . .
Env prc PP
PLP
COCALL
a
Ss-prg.RETURN
. . .
Env crt PP
PLP
COCALL
a
Ss-prg.RETURN
. . .
Env crt PP
PLP
COCALL
a
Ss-prg.RETURN
Architecture & Programmation, 107 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Parfois le comportement d’un sous-programme est paramètré.
Ce sous-programme est alors appelé « Procédure ».
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Chaque appel d’une procédure doit disposer de ces propres paramètres.
Les paramètres font donc partie de l’environnement d’appel au sens large.
Ils doivent être empilés.
Procédures
Architecture & Programmation, 108 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Var.locales
Paramètres variables impossibles :
l’espace occupé par les paramètres est variable
les variables locales suivent les paramètres et ne peuvent être localisées précisément.
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
1. Empilage dans environnement d’appel
Gestion des paramètres
x: «PRECALL»empilage paramètres
y: GOTO a.
«PUSH y+2»; «NEWENV»
Résolution des expressions
ex C/C++ : printf(), ...
ad retour
ab...
F(a,b,…)
Architecture & Programmation, 109 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement2. Empilage juste avant l’appel
...empilage paramètresCALL adépilage paramètres
Résolution des expressions
Var.locales
…ba
ad retour
Variables locales adressables en local.
Paramètres hors environnement d’appel mais adressables en local.
Paramètres variables avec paramètres fixes à gauche adressables si empilés de droite à gauche.
Le code appelant doit dépiler les paramètresF(a,b,…)
Architecture & Programmation, 110 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
d1
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement3. Empilage juste avant l’appel dans
un environnement réservé
…NEWENVempilage paramètresCALL a
Résolution des expressions
Variables accessibles en local.
Paramètres accessibles : en local avec décalage d1 directement en Mem[PLP]+d2
Paramètres variables possibles pour les 2 sens d’empilage.
Instruction de retour RETPROC détruisant aussi l’environnement des paramètres.
Var.locales
…ba
ad retour
F(a,b,…)
d2
Architecture & Programmation, 111 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
« DESTENV »; « POP CO »; « DESTENV »;
Instructions LM Exécution prog LMLe Micro-processeur
RETPROC
détruire l’environnement d’appel dépiler dans CO (branchement en retour) détruire l’environnement des paramètres
exemple avec pile descendante et PP « pointant » le dernier entré
Organisation mémoireDonnéesRupture séquencement
Var.locales
. . .
PP
PLP
COCALL
a
Ss-prg.
RETPROC
param.
. . .
PP
PLP
COCALL
a
Ss-prg.
RETPROC
param.
. . .
PP
PLP
COCALL
a
Ss-prg.
RETPROC
param.
. . .
PP
PLP
COCALL
a
Ss-prg.
RETPROC
Architecture & Programmation, 112 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Un sous-programme ou une procédure qui « retourne une valeur » (i.e. qui fournit un résultat non nommé) est appelé(e) « Fonction ».
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement
Ce résultat est réservé par le code appelant sur la pile juste avant l’environnement des paramètres ou, en l’absence de paramètres, juste avant l’adresse de retour.
La fonction doit le renseigner (le construire) avant son retour par RETURN ou RETPROC.
Il est accessible en local (d1) si paramètres fixes ou absents directement en Mem[PLP]+d2
Fonctions
d2résultat
Var.locales
param.
ad retour
d1
d1résultat
ad retour
Var.locales
Architecture & Programmation, 113 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion
Une fonction peut être considérée comme une opération à opérandes multiples voire variables.
Son lancement peut alors être géré comme un opérateur.
Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementOpérateur ( ) : appel de fonction
exemple : printf ("%s %d\n",s+strlen(b),i);
"%s %d\n" +
s
strlen
b
i
( )
( )
[ 1 réservez résultat sur la pile ][ 2 NEWENV ]
[ 3 empiler les paramètres par évaluation des arbres fils de droite à gauche (ou inversement) ]
4 lancer la fonction CALL
printf
Le résultat éventuel est construit
Architecture & Programmation, 114 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion