Architecture des systèmes à processeurs – IUT GEII (ISI-II2) -2

publicité
19/03/2009
Architecture des systèmes à processeurs – IUT GEII (ISI‐II2) ‐2
Christophe BLANC
www.christophe‐blanc.info
IUT de Montluçon
Département Génie Electrique et Informatique
Industrielle
Architecture des systèmes à processeurs
MODÈLE
È DE PROGRAMMATION D’UN ’
PROCESSEUR
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 2
1
19/03/2009
Codage d’une instruction M32C87 Renesas
MOV.size:G Source, Destination
C
9
8
B
1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1
MOV.W:G R2, R0 ; Transférer contenu de R2 dans R0
Exécution d’un programme élémentaire (notation symbolique)
Adresse $FE0304
Étiquette
AdDeb
$FE0306
$FE0307
$FE030A
Programme Source Assembleur
Opération
Opérande
Commentaire
ADD.W
MOV.W
MOV.W
JMP
R1, R0
R0, R1
R0, ‐2[SP]
AdDeb
Zone mémoire réservée Zone
mémoire réservée
aux instructions
; R0 <‐ R0 + R1
; R1 <‐ R0
; ‐2(SP) <‐ D0
; PC <‐ AdDeb
Mnémoniques à la place d d
de données binaires
é bi i
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 4
2
19/03/2009
Exécution du programme
Instruction : ADD.W R1, R0
PC
FE0304
Rechercher Instruction
RI
PC
FE0306
FE0304
$FE0304 ADD.W
$FE0306 MOV.W
R0
0013
$FE0307 MOV.W
R1
0022
$FE030A JMP.B
ADD.W R1, R0
R1, R0
R0, R1
R0, ‐2[SP]
AdDeb
+2
ADD
Exécuter Instruction
RI
Mémoire réservée aux instructions
D0
0013
0035
D1
0022
$000700
$000702
Mémoire réservée aux données
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 5
Exécution du programme
Instruction : MOV.W R0, R1
PC
FFE0306
0306
Rechercher Instruction
RI
PC
Mémoire réservée aux instructions
FE0306
FE0307
$FE0304 ADD.W
$FE0306 MOV.W
R0
0035
$FE0307 MOV.W
R1
0022
$FE030A JMP.B
R1, R0
R0, R1
R0, ‐2[SP]
AdDeb
+1
$000700
Exécuter Instruction
RI
MOV.W R0, R1
D0
0035
D1
0035
0022
$000702
Mémoire réservée aux données
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 6
3
19/03/2009
Exécution du programme
Instruction : MOV.W R0, -2[SP]
PC
FE0307
Rechercher Instruction
RI
PC
Mémoire réservée aux instructions
FE030A
FE0307
$FE0304 ADD.W
$FE0306 MOV.W
R0
0035
$FE0307 MOV.W
R1
0035
$FE030A JMP.B
+3
$000700
Exécuter Instruction
RI
MOV.W R0,‐2[SP]
R1, R0
R0, R1
R0,‐2[SP]
AdDeb
R0
35
R1
35
35 00
SP‐> $000702
Mémoire réservée aux données
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 7
Exécution du programme
Instruction : JMP.B AdDeb
PC
FFE030A
030A
Rechercher Instruction
RI
PC
FE030C
FE030A
FE0304
Exécuter Instruction
RI
Mémoire réservée aux instructions
JMP.B AdDeb
$FE0304 ADD.W
$FE0306 MOV.W
R0
0035
$FE0307 MOV.W
R1
0035
$FE030A JMP.B
R1, R0
R0, R1
R0, ‐2[SP]
AdDeb
+2
$000700
R0
0035
R1
0035
3 5 00
$000702
Mémoire réservée aux données
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 8
4
19/03/2009
Types de Données
• Le µ P traite des données binaires non typées
– C ’est le programmeur qui définit le type des données p g
q
yp
manipulées par :
• le choix des instructions,
• la logique de l ’algorithme.
• Les instructions traitent les données suivantes :
– Entiers signés sur 8, 16, ou 32 bits
– Entiers non signés sur 8, 16, ou 32 bits
– String
– Nombres exprimés en virgule flottante (réels)
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 9
Data Arrangement
Data Arrangement in Register
5
19/03/2009
Data Arrangement
Data Arrangement in Memory
Data Arrangement
Data Arrangement in Memory
6
19/03/2009
Étapes de développement d ’un projet industriel
• Cahier des charges à respecter impérativement
– Document contractuel entre le concepteur et son client
• Dossier logiciel
– Analyse fonctionnelle
– Découpage en modules
– Communication entre les modules
• Codage des programmes prenant en compte :
Codage des programmes prenant en compte :
– Les contraintes techniques
– Les spécifications du client
– Les compétences et les habitudes du personnel
– Les disponibilités en outils de développement
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 13
État de l’art
Avec pour objectif : minimiser les coûts
• Séries faibles
• Minimiser les coûts de développement
– Codage en langage évolué
• C, C++, Java, Visual Basic, …
• Environ 95 % du code
• Parties critiques
– Codage en assembleur
• TTemps de réponse minimum
d é
i i
– Taille du code minimum
• Accès aux entrées sorties
• Grandes séries
• Minimiser le coût
– des composants
d
t
– de fabrication
• Taille mémoire
– Inférieure aux seuils justifiés par des aspects économiques
– Codage langage C en général
• Employé au maximum
Ch i d
ffi
• Choix de structures efficaces
– Codage en assembleur
• Taille en dessous des seuils
• Temps de réponse critiques
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 14
7
19/03/2009
Programmation modulaire
• Communication entre modules codés en langage évolué
Module Module
L.E.
Communication
Module Module
L.E.
Par la Pile LIFO
Communication entre modules codés en langage assembleur
Module L.Asm.
Communication
Module L.Asm.
Registre du µ P
Communication entre modules codés en :
‹
‹
Langage assembleur
Langage évolué
Module L.E.
I.U.T. Montluçon —
Département Génie Electrique et Informatique Industrielle —
15
Communication
Par la Pile LIFO
Module L.Asm.
Mécanismes d’appel et de retour de sous programme
• Pour tous les langages de programmation
– Assembleurs, évolués (C, Basic, .), objets (C++, Java, .)
– Un programme : suite d ’appels de sous programmes
Description macroscopique
Description détaillée • •••••
• •••••
• Instr. Avant Appel
• Instr. d ’Appel
• Instr. Après Appel
• •••••
‹
Problèmes à résoudre
Se brancher à l ’adresse de début du sous programme
Î Ménager l ’avenir en mémorisant l ’adresse de retour
Î Permettre l ’imbrication de sous programmes
Î
Début Sous Prg.
•••••
•••••
•••••
•••••
Fin Sous Prg.
•••••
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 16
8
19/03/2009
Pile LIFO (Last In, First Out)
• Description
– Zone mémoire dont le contenu est géré par :
• Un pointeur de pile (stack pointer) ‐ registre d’adresse spécifique
• Deux primitives :
– Empiler (Objet)
– Dépiler (Objet)
• Hypothèses théoriques
– Instruction codée sur une seule ligne mémoire
– Largeur de la mémoire (nombre de bits en sortie) identique à la taille du Largeur de la mémoire (nombre de bits en sortie) identique à la taille du
compteur ordinal (PC)
– Notation symbolique
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 17
Mécanisme d ’appel/Retour d ’un sous programme
• Algorithme
É
Étiquette
AdAppel
AdD bS P
AdDebSousPrg
AdFinSousPrg
Instruction
• •••••
• •••••
• AppelSousPrg
• •••••
• •••••
• •••••
• •••••
• •••••
• •••••
• FinSousPrg
• •••••
• •••••
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 18
9
19/03/2009
Instruction d’appel
de sous programme
Avant exécution
PC
Après exécution
+1
AdAppel
PC
AdDebSousPrg
AdAppel + 1
n‐1
n‐1
SP
n
SP
AdAppel + 1
n+1
Mémoire vive
n
n+1
Mémoire vive
Fonction réalisée
Pil
Pile
Début
LIFO
• PC <— PC + 1
• SP <— SP ‐ 1
Prè‐décrémentation
• (SP) <— PC
• PC <— AdDebSousPrg
Fin
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 19
Instruction de retour
de sous programme
Avant exécution
PC
Après exécution
+1
AdFinSousPrg
PC
AdFinSousPrg+1
AdAppel + 1
n‐1
SP
AdAppel + 1
AdAppel + 1
n
n+1
Mémoire vive
n‐1
SP
Fonction réalisée
Début
• PC <— PC + 1
• PC <— (SP)
n
n+1
Mémoire vive
Zone mémoire à ne Z
é i à
plus exploiter
Post‐incrémentation
• SP <— SP + 1
Fin
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 20
10
19/03/2009
Commentaires supplémentaires
Mémoire
Réservée
à la Pile
• Développement complet d’une application
– Définir une zone de mémoire vive réservée à la pile
– Initialiser le pointeur de pile en conséquence
SP
Développement d’une application à partir d ’un noyau déjà existant
‹
‹
AdDebPile
DébutSP1
Imbrication de sous programmes
p g
‹
SP <— SpInit
Zone mémoire vive réservée pour la pile déjà définie
En conséquence, ne pas initialiser le pointeur de pile
La structure de la pile LIFO permet cette imbrication
Les principes doivent être adaptés aux caractéristiques de chaque
microprocesseur
• AppelSP1
• AppelSP11
DébutSP11
FinSP11
• AppelSP11
• AppelSP1
FinSP1
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 21
Application
Processeur M32C87
Mémoire Mots de 8 bits
• Bus de donnée : 16 bits
• Bus d
B d ’adresse : 24 bits
’ d
24 bit
Poids faibles
– Convention Renesas
Poids forts
• Poids faibles en premier
– Adresse paire
• Poids forts en second
– Adresse impaire
Adresses croissantes
Programme Source Assembleur Étiquette
Opération
DEBUT
JSR
•••••••
AdDebSsPrg
NOP
RTS
Opérande
AdDebSsPrg
••••••
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 22
11
19/03/2009
Codage des instructions (programme objet)
JSR AdDebSsPrg
Code instruction
Code Opération
Jump to Subroutine
15 14 13 12 11 10 9
8
7
6
5
4
3
2
1
0
1 1 0 0 1 1 1 1
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Code Opérande
NOP No Operation 7 6 5 4 3 2 1 0
1 1 0 1 1 1 1 0
Code instruction
Code instruction
RTS
Return from Subroutine
Code instruction 7 6 5 4 3 2 1 0
0 1 1 1 0 1 0 1
Hexadécimal
C F
0 2 0 0
Hexadécimall
D
E
Hexadécimal
F
D
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 23
Etat de la pile pendant l’exécution du programme
Mémoire organisée en mots de 16 bits
Adresses
JSR AdDebSsPrg
NOP
RTS
CF
00
……
……
……
DF
……
DS
……
……
……
DE
……
……
FE0304
FE0306
FE0308
FE030A
FE0410
FE0412
FE0414
Avant
exécution de JSR
Avant exécution de JSR
Après
exécution
Après exécution
PC 00 FE 03 04
00 FE 04 10
SP
SP
07 03
FE 00
…… ……
Avant exécution de RTS
Après exécution
PC 00 FE 04 12
00 FE 03 07
A7
Pile LIFO
zz zz 000710
yy yy 000712
…… …… 000714
07 03 00710
FE 00 00712
…… …… 00714
SP
07 03
FE 00
…… ……
zz zz 000710
yy yy 000712
… … 000714
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 24
12
19/03/2009
Empilement et dépilement d’objets
Solution
• Objectifs
– Décomposer une application en modules
‹
• Sous programme en langage assembleur équivalent à une procédure en langage évolué
• Passage des paramètres par registres internes
– Variables locales au module
‹
• Utilisation des registres internes (plus rapides)
• Ne doivent pas interférer avec le programme appelant
Sauvegarder le contenu des registres utilisés (variables locales) au début du sous programme
Restituer le contenu des registres avant l’instruction de retour de sous programme
Sauvegarder le contenu des registres qui servent de variables locales
Paramètres en entrée (In)
Paramètres en sortie (Out)
Sous Programme
Paramètres
( registres internes utilisés comme variables locales)
transformés (In/Out)
Restituer le contenu des registres
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 25
Empilement d’objets
Hypothèse : taille objet = taille mémoire
Avant exécution
Objet
Après exécution
Contenu Objet
Objet
Contenu Objet
n‐1
n‐1
SP
n
SP
Contenu Objet
n+1
Mémoire vive
n
n+1
Fonction réalisée
Début
Mémoire vive
Pil
Pile
LIFO
• SP <— SP ‐ 1
• (SP) <— Contenu Objet
Fin
Prè‐décrémentation
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 26
13
19/03/2009
Dépilement d’objet
Même hypothèse
Avant exécution
Après exécution
? ? ? ? ?
Objet
Objet
Contenu Objet
n‐1
SP
Contenu Objet
n‐1
Contenu Objet
n
SP
n+1
Mémoire vive
n
n+1
Mémoire vive
Fonction réalisée
Début
Zone mémoire à ne Z
é i à
plus exploiter
• Objet <— (SP)
• SP <— SP + 1
Post‐incrémentation
Fin
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 27
Application : réaliser un sous programme utilitaire
• Objectif
– Mise en œuvre facile
• Méthode
Méth d
– Décrire l’action réalisée
– Définir clairement l’interface de communication
– Sauvegarder et restituer le contexte dans le sous programme utilitaire
• Si impératifs de rapidité
– Ne pas sauvegarder systématiquement les registres utilisés – Noter les registres détruits
Algorithme général
Début
• Sauvegarder le contexte
• Algorithme spécifique
• ………
• ………
• ………
• Restituer le contexte
Fin
Registres utilisés dans l ’algorithme spécifique
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 28
14
19/03/2009
Mode d’adressage : adress register
relative (registre d’adresse)
MOV.L R3R1, [A0]
Registre d ’adresse
• Notation :
R3R1
(( Ai ))
A0
Case mémoire pointée par Ai
FE
22
88
99
F E
04 0 0
99 88 $FE0400
22 1 1 $FE0402
Adresses toujours comptées en octets (8 bits)
MOV.W #1FABh, [A1]
A1
11
16 Bits
,[ ]
MOV.B #50h, [A0]
05 0 0
AB
1F $FE0500
0 0
FE
0 0 400 A6
16 Bits
$FE0502
50
16 Bits
$FE0400
Adresse $2001
$FE0402
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 29
Mode d’adressage : adress register
relative (Stack Pointer)
Registre SP
MOVE.size R1, ‐n [SP]
• Notation :
‐n
[SP]
Fonction réalisée :
‹
R1
9 8 7 6
SP
0 0
0
0 4 0
07 0 0
14
[SP‐n] <— Opérande
n Fonction de la size de l ’opérande
Î
Î
Î
• B
B
• W
• L
n = 1 (Byte
n
1 (Byte ‐ 1 octet)
1 octet)
n = 2 (Word ‐ 2 octets)
n = 4 (Long Word ‐ 4 octets)
76
98 $00712
$00714
$00716
16 Bits
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 30
15
19/03/2009
Mode d’adressage : adress register
relative (Stack Pointer)
MOVE.W 2[SP] , R3
Registre pointeur de pile
• Notation :
n[ SP ]
SP
0 0 07
14
76
Fonction réalisée :
‹
98 $00712
$00714
Opérande <— [SP+n] A B C D $00716
n Fonction de la taille de l ’opérande
Î
Î
Î
• B
B
• W
• L
n = 1 (Byte
n
1 (Byte ‐ 1 octet)
1 octet)
n = 2 (Word ‐ 2 octets)
n = 4 (Long Word ‐ 4 octets)
16 Bits
R3
A
2 3B C4 5
D
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 31
Registe d’état (FLG – Flag Register)
Indicateurs modifiés après :
‹
‹
Une instruction arithmétique
Une instruction MOV
Conséquence :
‹
Sauvegarder FLG en premier sur la pile : PUSHC FLG
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 32
16
19/03/2009
Application Sous Programme utilitaire Sauvegarder le contexte
Cahier des charges
PUSHC FLG
Sous programme
Sous programme
SR
SS
Etat de la pile
Avant
Après
Exécution Instruction
UU
Aucun contenu de registre modifié
!
CCR
SP
Remarque
MOVE.W
L ’algorithme spécifique à la fonction réalisée utilise le registre R1
SP
UU
SSP
76 98
UU SS
SS
R1,-2(SP)
R1
98 76
SP
UU
SS
Restituer le contexte
MOV.W -2[SP],R1
POPC FLG
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 33
Source L.E
Source L.E
Compiler
Compiler
Source L. Asm
Source L. Asm
Assembler
Assembler
Objet relogeable
Objet relogeable
Adresse
xxxx
?
Codes Instructions
0101110010101110
………
1100011000010100
0001110001101011
…
Etiquette Opération Opérande
Conv
MOV.B
#45h,R0l
………
ADD.B
#$10,R1l
………
RTS
void main (void)
{
int Cpt = 0 ;
……
cin>> NbGroupes;
….
}
Mémoire du système à microprocesseur
Interfaces
d’entrées sorties
Optimiser
le code si nécessaire
Chaîne de développement de logiciel
Impératifs
de rapidité
Source L. Asm
Source L. Asm
Assembler
Assembler
Objet relogeable
Objet relogeable
Editer les liens
Objet Exécutable
b
é
bl
Charger le code et mettre au point
Adresse
A8B6
Fixée
Codes Instructions
0101110010101110
………
1100011000010100
………
0001110001101011
…
L. E. Langage évolué (C, C++, …)
L. Asm Langage assembleur
17
19/03/2009
Fonction assurée par chaque programme de la chaîne de développement
• Un compilateur transforme un programme source écrit en langage évolué (ASCII) en source assembleur (ASCII) du microprocesseur cible
microprocesseur cible
Programme relogeable
Programme translatable
– Optimisation possible du langage assembleur généré par le compilateur
Code objet
Code objet
Déplacer le programme dans la mémoire
Déplacer le programme dans la mémoire
• Un assembleur transforme le source assembleur en objet relogeable
– Langage binaire dont les adresses peuvent être recalculées
• L ’éditeur de liens lie tous les modules relogeables (modules créés par le programmeur bibliothèques) pour créer
programmeur, bibliothèques) pour créer l ’objet exécutable
– Langage binaire chargeable dans la mémoire du microprocesseur cible
– Création de la table des symboles
Editeur de liens
Code objet modifié
Code objet identique
I.U.T. Montluçon — Département Génie Electrique et Informatique Industrielle — 35
18
Téléchargement