Title: Chapitre 4: La couche Microarchitecture
1Chapitre 4 La couche Micro-architecture
2Introduction
- La couche micro-architecture se trouve juste au
dessus de la couche physique. Elle implémente la
couche ISA. Elle dépend donc étroitement du jeu
d instructions machines (ISA). Le séquencement
des opérations nécessaires à l exécution d une
instruction de la couche ISA est réalisé par la
couche micro-A. Il est réalisé par un
micro-programme écrit en ROM qui réalise
l extraction dans la mémoire d une instruction
à exécuter , son interprétation (analyse) puis
son exécution.Nous dirons que chaque instruction
du programme écrit en langage machine est une
fonction appelée par le programme principal
(micro programme). Celui ci fonctionne en boucle
(invoque une fonction, lexécute, recommence).
3Introduction suite
- Le micro programme comprend un certain nombre de
variables qui constituent l état de la machine
accessible aux fonctions. Une fonction agit sur
au moins une variable et change ainsi l état de
la machine. (ex le compteur PC indique
l adresse de la prochaine instruction (fonction)
à réaliser. Lors de l exécution d une fonction
il est incrémenté pour pointer vers la fonction
suivante) - Chaque instruction de ISA comprend des champs. Le
premier indique l opération à effectuer (code
opération) le second les adresses des éventuelles
données (opérande) - Le cycle  extraction, exécution est basé sur
 le chemin des donnéesÂ
4Le chemin des données
Registres (32 bits)MAR Registre
d adressesMDR Registre des donnéesPC Compteur
Ordinal 8bMBR Registre d instruction
8/32SP pointeur de pileLV pointeur de
variableCPP Pointeur de constantesTOS Top of
stackOPC bloc note temporaireH Hold (maintient)
L UAL possède 6 commandes classiques (
F0,F1,ENA,ENB,INVA et INC) . 2 commandes
supplémentaires SLL8 et SRA1 permettent de
réaliser des décalages SLL8 décale à gauche et
complète par 0, SRA1 décale à droite et laisse
inchangé le bit décalé
5Table des commandes de l UAL
6Exemple de cycle extraction exécution
- Pendant 1 cycle faire
- placer SP sur le bus (commande écriture)
- F01, F11,ENA0, ENB1, INVA0, INC1 ( B1 en
sortie de l UAL) décalages à 0. - recopier contenu du registre C sur SP
- Comment peut on lire et écrire dans un même
registre pendant un cycle? - Facile, on utilise des fronts montants et
descendants d horloge. Front montant on place
SP sur B, l entrée B de l UAL reste à SP
pendant tout le cycle, UAL réalise son calcul,
puis on utilise le front descendant du cycle pour
valider l écriture du résultat sur SP
7Opérations avec la mémoire
- Notre machine comporte deux canaux de
communication avec la mémoire. Un port de 32 bits
pour adresser des mots mémoire et un port de 8
bit pour adresser des octets mémoires. MAR et MDR
commandent le port 32 bits le couple MAR/MDR
permet de lire/écrire des données en mémoire, le
couple PC/MBR permet de charger dans MBR (le
premier octet) l octet d adresse PC dans la
zone  programme de la mémoire - La mémoire de notre machine étant organisée en
octets, le registre MAR comptant en mots de 32
bits est mappé sur le bus d adresse de telle
sorte que lorsque MAR contient 1cela correspond Ã
l octet 4, 2 cela correspond à l octet 8 etc.
8Mappage de MAR sur le bus d adresses
9La micro-instruction
- Pour commander le chemin de données, on a besoin
de 29 signaux de commande - 9 signaux pour commander l écriture du bus C sur
un registre - 9 signaux pour copier un registre sur entrée B de
l UAL - 8 signaux pour commander l UAL et le décaleur
- 2 signaux pour spécifier l écriture ou lecture
dans mémoire via les registres MAR et MDR - 1 signal pour indiquer la recherche d une
instruction via PC et MBR - Les valeurs 0 ou 1 de ces signaux définissent les
opérations effectuées par le chemin de données .
Le seul problème vient des lectures en mémoire
qui nécessitent 2 cycles ( au moins ) pour être
effectives. - On peut optimiser le nbre de commandes pour
valider l écriture sur B un décodeur 4 vers 16
suffit à sélectionner avec 4 bits le registre
10Format de la micro-instruction
Addr adresse de l instr suivanteJAM comment la
micro instr suivante est selectionnéeUAL définit
l opération réalisée par UALdécaleurC définit
le ou les registres chargés avec la donnée de
CMem définit les fonctions mémoireB définit
le registre à écrire sur B
11Exemple de micro-architecture
12Fonctionnement de la micro-architecture
- La mémoire de commande (micro-programme) commande
le fonctionnement du chemin des données. Elle
contient ici 512 mots de 36 bits. - Pour exécuter le micro-programme on a besoin
d un registre d adresse (MPC) (à 9 bits) et
d un registre d instruction MIR. - Supposons quune instruction (ISA) soit chargée
dans MBR (ex IADD réalise l add des 2 mots
sup de la pile et empile le res.). Son premier
octet est le code de l opération. (0x60). Ce
code opération est recopié dans MPC . C est donc
l instruction d adresse 60 de mémoire de
commande qui est exécutée. Comme il faut
plusieurs cycles pour la réaliser, elle a
plusieurs instructions de suite . CÂ est
l objectif des champs  adresse suivanteÂ
13Chronologie d un cycle du chemin de données
Les sous cycles ne correspondent pas à des tops
horloges, mais dépendent du temps de réaction
des éléments du ChD.
14Chronologie de fonctionnement
Dw Chargement de MIR avec MPC
DxPropagation des signaux de commande vers UAL
et le décodeur vers B Un registre est vidé sur
bus B et UAL sait quelle op exécuter
Dy temps de réaction de lUAL les bits N et Z
activés et sortie décaleur stable
Dz sortie décaleur propagée sur C et
registres chargés, MPC modifié
15Exemple de micro-architecture l IJVMla notion
de pile à l exécution
- La couche micro de la machine IJVM interprète la
couche iSA d  une machine java simplifiée
(integer) - ce type de langage supporte la notion de
procédure récursive à variables locales. La
solution qui consiste à affecter à chaque
variable une adresse absolue ne marche pas car la
procédure peut s appeler elle même donc une
variable locale peut avoir plusieurs valeurs . - Une zone de mémoire appelée pile (stack) est
réservée pour stocker les variables locales des
procédures actives. Un pointeur (LV) pointe sur
la base de la pile des Var loc de la procédure.
Un autre pointeur (SP) pointe sur le sommet de la
pile. La partie comprise entre LV et SP est le
 bloc des var locales (y compris LV et SP) .
Exemple une procédure A à 3 variables est
active.
16Pilesuite
- Que se passe t il si A appelle B? les variables
locales de B sont empilées et les pointeurs LV et
SP modifiés. Les variables b1,b2.. Sont
accessibles grâce à leur  déplacement ou
offset, par rapport à LV. - On peut aussi utiliser la pile pour les calculs
les opérandes sont empilés sur la pile. -
SP
B et C terminés, A appelle D
Appel de A
A appelle B
B appelle C
17Le modèle mémoire de l IJVM
- La mémoire de l IJVM est un ensemble de 4Go ou
un giga mot (de 32 bits). Contrairement Ã
certaines architectures ISA, IJVM ne permet pas
l accès direct à la mémoire mais un accès
indirect à travers des pointeurs qui définissent
des zones de mémoire
Pile des données et des opérandes
CPP, LV, SP mots (32 bits) PC octet
18Les instructions de l IJVM (couche ISA)
Les opérandes octet, const et numvar font 1
octet, dep, index et offset 2 octets
19Compilation d un programme java
- Le compilateur java va produire directement du
code machine (binaire). Nous avons ici écrit les
mnémoniques correspondants pour faciliter la
lecture
Les variables i,j et k ont été déclarées dans cet
ordre
Évolution de la pile
20Implémentation de la machine IJVM
- Maintenant que nous connaissons les instructions
de la couche ISA, nous pouvons implémenter les
diverses micro-instructions du bloc de commande. - Chaque macro-instruction (isa) correspond Ã
plusieurs micro-instructions. La première est
stockée dans mémoire de commande à l adresse
correspondant à son code binaire . Les autres
sont accessibles grâce au champ  adresse
suivante . - On regroupe les instructions qui s exécutent en
1 seul cycle du chemin de données ReadRegistre
SP, UALINC, WrSP, Read, Adresse suivante122 se
réalise en un seul cycle (le lancement de la
lecture, le résultat demande au moins 1 cycle. - Ceci se traduira par une micro-instruction du
type
0100
000000122
0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0
0 1 0
21Exemple de micro-instructions
- L instruction  principale Main1 est la boucle
du programme de commande Main1 PCPC1 fetch
goto(MBR) - exemple de IADD
- iadd1 MARSPSP-1 rdiadd2 HTOSiadd3 MDR
TOSMDR H wr goto Main1 - Que signifient ces lignes?
- Traduire en micro instructions chaque ligne
- où doit/peut on les ranger dans le bloc de
commande? - Iadd1 décrémenter pointeur de pile SP (pour
dépiler), recopier SP dans MAR et lancer lecture
8 bits (lecture du sommet de pile) - iadd2 recopier sommet de pile ( TOS) dans H
(opérande gauche de l UAL) - On range iadd1 à l adresse du code de IADD c est
à dire 0x60, iadd2 en 0x61 (si place) et iadd3 en
0x63 (idem) . Si rangement ailleurs on précise
cette adresse dans le champ adresse suivante de
la micro instruction
22Les micro instructions correspondant à IADD
23Micro-instruction pour ILOAD
- Format de la macro-instructionElle comprend
un octet supplémentaire qui est un index ( entier
non signé) permettant d atteindre une des 256
adresses de la zone des variables. LÂ adresse de
la variable est obtenue en additionnant l index
( présent dans MBR) au pointeur LV. (on utilise
MBRU pour étendre l index à 32 bits, sans
signe). Après lecture dans MDR de la donnée, on
prépare son écriture dans la pile. Le PC est
également incrémenté et MBR relu car on a utilisé
l octet de MBR et il faut préparer
l instruction suivante.
ILOAD
INDEX
24Suite ILOAD
- Voici donc les micro instructions correspondant Ã
ILOAD - iload1 HLViload2 MARMBRU H rdiload3
MARSPSP 1iload4 PCPC1fetchwriload5
TOSMDR goto main1 - remarques iload1 on prépare l addition en
stockant LV dans Hiload2 calcul adresse mémoire
(zone locale) lectureiload3 préparation
écriture dans pileiload4 préparation
instruction suivante, écriture de MDRiload5
mise a jour TOS, retour Prog Principal - Question pouvait on lancer l écriture en iload3?
25Micro-instruction pour ISTORE
- Ecrivez la micro-instruction pour ISTORE
Voici le résultatistore1 HLVistore2
MARMBRU Histore3 MDRTOS wristore4
SPMARSP - 1 rdistore5 PCPC 1
fetchistore6 TOSMDR goto main1
26Micro-instruction pour INC
- LÂ instruction INC a la format suivant INC
INDEX CONSToù index est l adresse (dans la
zone de variables) d une variable locale, et
CONST une constante (entier signé , possibles
-128 Ã 127) - La variable est lue, puis on lui ajoute const et
elle est réécrite à la même place. Ecrivez les
inci
inc1 HLVinc2 MARMBRU H rdinc3 PCPC
1 fetchinc4 HMDRinc5 PCPC1
fetchinc6 MDRMBR H wr goto main1
Commentez lordre des micro instructions. Pouvait
on le modifier?
27LÂ instruction GOTO
- L instruction GOTO comprend un offset signé codé
sur 2 octets Goto offset1 offset2 . Ceci
permet d adresser 65536 adresses pou PC ce qui
est largement suffisant ( environ 50 pages en
java!) - problème l offset est un déplacement relatif
par rapport à la position PC au début de goto et
non lorsque les offsets sont chargés
a debut de main1 bdebut de goto c apres
goto1 d apres goto2
28La micro instruction goto
- Rappel de Main1PCPC1fetch goto(MBR)
- goto1 OPC PC - 1 sauve PC goto2 PCPC1
fetch MBR offset1, fetch offset2goto3 H
MBRltlt8 decal sauve offset1 dans Hgoto4 HMBRU
or H Hoffset 16 bitsgoto5 PCOPC H fetch
add offset à PC, et charge goto6 goto main1
code instruction suivante
29Détermination de la micro-instruction suivante
- Dès que le chargement de MIR est terminé, le
champ Addr est recopié dans MPC - Si JAM est vide, rien ne se passe. MPC contient l
adresse de l instr suivante. - Si JAMN (JAMZ) 1, un OU est exécuté entre le
flip-flop N (Z) et le bit de poids fort de MPC .
Ainsi la nouvelle adresse ancienne256 - Si JAMPC1 un OU est exécuté bit à bit entre
MBRet Addr. Si Addr0 alors on a goto(MBR). Si
Addr 0 on a goto(MBR or valeur)
30Exemple if_icmpeq
- Dans le micro programme de la Mic1,
l instruction if_icmpeq (pop 2 mots de la pile,
branche si égaux) s écritif_icmpeq1 MARSPSP-
1rd if_icmpeq2 MARSPSP-1 if_icmpeq3 HMDRr
d if_icmpeq4 OPCTOS if_icmpeq5 TOSMDR
if_icmpeq6 Z H-OPCif (Z) goto T else goto F - Ã l adresse T du micro-programme T
OPCPC-1fetchgoto goto2 et à F on
trouveF PCPC1F2 PCPC1fetchF3 goto
Main1
31Traduction du  if (Z) goto T else goto F
- Ceci va se traduire d une part par la mise à 1
du bit JAMZ, les 2 autres à 0. L adresse de F
est recopiée dans le champ Addr suivante. (par
exemple 0x75) - Si le bit Z est à 0, alors on exécute l adresse
suivante qui est déjà dans MPC (par exemple 0x75) - Si le bit Z est à 1 alors on passe à 1 le bit de
poids fort de MPC . LÂ adresse augmente de 256
(0x175) Ceci signifie qu il faut placer les
instructions T à l adresse F256 dans le
programme de commande.
32Exercice
- L instruction ISHR (décalage arithmétique Ã
droite d un entier) existe sur la JVM mais pas
sur l IJVM.Elle utilise les 2 valeurs du sommet
de pile - Après traitement, une seule valeur, le resultat
est stocké sur la pile.La seconde valeur sur le
haut de la pile est l opérande sur lequel porte
le décalage. Cet opérande subit un décalage sur
la droite de 0 à 31 bits. Ce nb de bits est écrit
dans les 5 bits faibles du mot de sommet de pile,
le reste à 0. Le bit de signe est dupliqué Ã
droite d un nombre de bits correspondant au nb
de bits de décalage. - Le code de l opération est 122 ( 0x07A)
- que signifie décalage à droite de 2 bits?
- Complétez le microprogramme de l IJVM pour
réaliser ISHR
33- Exemple avant et après ISHR
0000010101010101011
0x07A Ishr1 MARSPSP-1rd dépile et lit 0x07B
Ishr2 OPCTOS ancien sommet dans opc 0x07C
Ishr3 HMDR lu dans H 0x07D 0x0D0 Ishr5
ZH if (Z) goto fin else goto suite 0x0D1 fin
TOSMDROPCwrgoto Main1 0x1D1 suite
OPCOPC gt1 notez ladresse de
suite256fin 0x1D2 HH-1 0x1D3
if (Z) goto fin else goto suite
34Vite et pas cher ?
- Pour accélérer l exécution des programmes on
peut - réduire le nombre de cycles d horloge pour
l exécution des instr. - Simplifier l architecture ce qui réduit la durée
du cycle d horloge - faire simultanément plusieurs choses
- Il faut choisir entre vitesse et économie
exemple du décodeur pour le bus B il permet de
gagner de la mémoire de commande (réduction du
nombre de bits) mais réduit la vitesse
d exécution en rallongeant la durée du cycle
d horloge. - On peut séparer par exemple la recherche des
instructions de lexécution des instructions.
35Réduction du temps dexécution solution 1
- Exemple POP s écrit
- pop1 MARSPSP-1rd
- pop2
- pop3 TOSMDRgoto Main1
- pop4 PCPC1fetchgoto(MBR)
- quand on y intègre Main1.
- On peut la ré-écrire comme suit
- pop1 MARSPSP-1rd
- pop2 PCPC1fetch
- pop3 TOSMDRgoto(MBR)
- On ne peut pas toujours réduire ainsi le temps
mais qqfois, en intégrant Main1 aux instructions.
36Réduction du temps d exécution
- Si on utilise 3 bus au lieu de 2 ( A entrée
gauche de UAL, B et C comme précédemment) on
gagne du temps (celui utilisé pour placer
l opérande gauche dans H). - Utilisation d une unité de recherche
d instructions pendant la recherche/exécution,
- Le PC est transmis à UAL pour incrémentation
- PC est utilisé pour chercher les opérandes de l
instruction courante ou l instruction suivante
(fetch) - Les opérandes sont reconstitués ( éventuellement)
- l UAL effectue l opération et range le résultat
dans un registre.
37(No Transcript)