Rappel sur le fonctionnement de mu0 []

publicité
3-Présentation d’un µP simple
•
•
Microprocesseur avec un bus de données sur 16 bits et un bus d’adresses sur 12 bits (soit 4096 mots adressables).
Le chemin de données doit comprendre au minimum :
– un registre compteur programme (PC) : un registre stockant l’adresse de la prochaine instruction à exécuter.
– un registre accumulateur (ACC) : un registre stockant la donnée sur laquelle on travaille.
– une UAL qui permet d’exécuter des opérations arithmétiques et logiques de base (addition, soustraction,
ET/OU/OUX
logique)…
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Codage des Instructions
• Chaque instruction est codée sur
16 bits et comprend :
– le champ code opération :
indique le type d’instruction dont
il s’agit (add, …).
– le champ code opérande :
adresse de la donnée.
• Une instruction d’addition, par
exemple, utilise la donnée stockée
à l’adresse spécifiée, ainsi que le
registre accumulateur comme
opérande implicite, puis stocke le
résultat dans l’accumulateur.
L’action réalisée est :
ACC ¬ ACC + mem16 [addr].
On parle de machine une adresse
car une seule opérande est définie
explicitement dans le codage de
l’instruction. Les instructions sont
lues depuis la mémoire à partir de
l’adresse 0, à des adresses
consécutives.
www.enib.fr
2
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Jeu d’Instructions
• La programmation d’un programme complet directement en code machine binaire
devient très rapidement fastidieuse :on définit un langage symbolique nommé
langage d’assemblage permettant de représenter les instructions par des
mnémoniques.
• On délègue la traduction du programme source en code binaire exécutable à un
programme : l’assembleur.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Chemin de données
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Chemin de données
Les éléments du chemin de donnés sont :
•
•
•
•
•
•
•
l’UAL,
le registre accumulateur (ACC) : il contient la donnée sur laquelle on travaille.
Il renvoie des informations vers la machine d’état (valeur nulle et valeur positive
ou nulle).
le compteur programme (PC : Program Counter) : il contient à tout instant
l’adresse de la prochaine instruction à exécuter.
le registre d’instruction (IR : Instruction Register) : il contient l’instruction qui
est en train d’être exécutée.
des multiplexeurs (MUXA et MUXB) qui permettent d’aiguiller les données.
une porte 3 états qui permet d’amener le contenu du registre accumulateur sur le
bus de données, et de déconnecter l’accumulateur du bus de données quand la
mémoire est en lecture.
Les registres disposent d’une commande de chargement et de remise à zéro
synchrone (non représentée). l’UAL reçoit, en plus de ses entrées et sortie, un
code permettant d’identifier la fonction UAL sélectionnée.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Séquencement des Instructions
• La machine d’état récupère des informations en provenance de la partie
traitement (opcode, accZ, acc15) et génère des commandes internes pour
contrôler l’activation du chemin de données adéquat pour réaliser
l’instruction en train d’être exécutée et des commandes externes pour
assurer le dialogue du microprocesseur avec la mémoire. Le séquencement
des différentes actions est cadencé par l’horloge clk.
• L’exécution d’un programme entier consiste à répéter l’exécution de
l’instruction pointée par le PC jusqu’à la dernière instruction.
• L’exécution d’une instruction peut être réalisée en deux phases :
– phase d’acquisition (fetch) : on lit en mémoire l’instruction pointée par le PC
et on la transfère dans le registre d’instruction RI. On incrémente le compteur
programme pour qu’il pointe sur l’instruction suivante. Dès que l’instruction
est dans le registre d’instruction, elle est décodée.
– phase d’exécution (execute) : l’opérande est lue en mémoire (si nécessaire).
L’opération UAL est exécutée, et le résultat est rangé dans l’accumulateur
ACC.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Séquencement des Instructions
www.enib.fr
7
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Exemple de Programme
www.enib.fr
8
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)
0
10
LDA var1
ADD var2
STO res
B+1
LDA
var1
STOP
Var1=1
Var2=2
res
www.enib.fr
9
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
10
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x004
0x004
LDA var1
LDA
var1
B
0x001
ADD var2
STO res
STOP
Var1=1
Var2=2
res
0x001
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
12
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)
1
2
LDA var1
ADD var2
STO res
ADD
var2
STOP
Var1=1
Var2=2
res
www.enib.fr
13
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
14
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x005
LDA var1
ADD var2
STO res
STOP
Var1=1
Var2=2
res
0x001
0x003
0x002
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
www.enib.fr
16
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Instructions de Saut
JMP Addr : Fetch
0
10
JMP 0x004
JMP
0X004
www.enib.fr
17
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JMP Addr : Exécution
0X004
0X004
JMP 0X004
www.enib.fr
18
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Fetch
0
10
JSR 0x004
JSR
0x004
www.enib.fr
19
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Exécution
0x004
0x004
1
1
0x004
www.enib.fr
20
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
RET : Fetch
6
6
7
JSR 0x004
RET
RET
www.enib.fr
21
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
RET : Exécution
Actions réalisées :
PC  SPC
1
1
www.enib.fr
22
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Téléchargement