Chapitre 4: La couche Microarchitecture - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

Chapitre 4: La couche Microarchitecture

Description:

La couche micro-architecture se trouve juste au dessus de la couche physique. ... la proc dure peut s 'appeler elle m me donc une variable locale peut avoir plusieurs valeurs ... – PowerPoint PPT presentation

Number of Views:172
Avg rating:3.0/5.0
Slides: 38
Provided by: Robe605
Category:

less

Transcript and Presenter's Notes

Title: Chapitre 4: La couche Microarchitecture


1
Chapitre 4 La couche Micro-architecture
  • Robert Racca

2
Introduction
  • 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).

3
Introduction 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 

4
Le 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é
5
Table des commandes de l UAL
6
Exemple 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

7
Opé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.

8
Mappage de MAR sur le bus d adresses
9
La 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

10
Format 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
11
Exemple de micro-architecture
12
Fonctionnement 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 

13
Chronologie 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.
14
Chronologie 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é
15
Exemple 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.

16
Pilesuite
  • 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
17
Le 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
18
Les instructions de l IJVM (couche ISA)
Les opérandes octet, const et numvar font 1
octet, dep, index et offset 2 octets
19
Compilation 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
20
Implé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
21
Exemple 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

22
Les micro instructions correspondant à IADD
23
Micro-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
24
Suite 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?

25
Micro-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
26
Micro-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?
27
L 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
28
La 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

29
Dé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)

30
Exemple 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

31
Traduction 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.

32
Exercice
  • 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
34
Vite 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.

35
Ré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.

36
Ré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)
Write a Comment
User Comments (0)
About PowerShow.com