23
INF227 - travaux dirig´ es G. Blanchet, B. Dupouy, G. Mouret 20 Septembre 2010

INF227 - travaux dirigés

Embed Size (px)

Citation preview

Page 1: INF227 - travaux dirigés

INF227 - travaux diriges

G. Blanchet, B. Dupouy, G. Mouret

20 Septembre 2010

Page 2: INF227 - travaux dirigés

Table des matieres

1 TD/TP d’introduction 21.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Le modele de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1 La memoire du BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2 Les registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.3 Le langage d’assemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.4 Les appels de procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.5 Exercice : conversion binaire-ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Exercices facultatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.1 La disquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.2 La memoire video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 TD gestion memoire 62.1 Memoire cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Cache de traduction et gestion memoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.1 Extraits de la documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 TD pipeline 123.1 L’architecture DLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1.1 Fonctions remplies dans chaque etage . . . . . . . . . . . . . . . . . . . . . . . . . 133.1.2 Jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.1.3 Format des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.1 Conflits de dependance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.2 Branchements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3 DLX a 8 niveaux de pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 TD coherence 194.1 Les protocoles de scrutation, exemple du protocole MSI . . . . . . . . . . . . . . . . . . . 19

4.1.1 Exercice : le protocole MESI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.1.2 TP introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1.3 Caches et MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.1.4 L’architecture DLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1.5 Coherence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1

Page 3: INF227 - travaux dirigés

TD 1

TD/TP d’introduction

On pourra consulter le document http://www.tsi.enst.fr/~blanchet/UE INF227/docs/MSDOS PCs.pdf

pour plus d’informations sur l’architecture et le langage d’assemblage des PC de premiere generation.

1.1 Presentation

Ce TP d’introduction a pour but de faire mieux comprendre l’architecture et lefonctionnement interne d’un ordinateur par manipulation d’une machine bienconnue. . .Dans le premiere partie on examine quelques-unes des composantes de sonarchitecture : la ROM, la memoire video, le lecteur de disquette.

Dans le seconde partie, le modele de programmation du I8086 d’Intel nous servira de support pourcomprendre le fonctionnement de la machine. L’utilisation du langage d’assemblage dans le “debugger”nous permettra d’illustrer les exemples vus en cours. Une procedure de conversion binaire-ASCII devraetre realisee.

Les exercices s’appuient sur une architecture Intel R© en mode 8086. L’outil utilise est debug, outilantediluvien de MSDOS, dans une fenetre invite de commandes du systeme Windows (figure 1.1).

Les principales commandes de l’outil debug sont :

Mnemonique Nom Effetd display Dump d’une zone memoireu unassemble Desassemblage d’une zone memoirea assemble Ecrire un programme en memoireg go Execution apartir d’une adresse memoiret trace Execution en pas a pas? help Recapitulatif des commandes

Il existe bien d’autres debuggers et editeurs. debug ne permet plus d’acceder aux disques durs, maisil est encore possible de lire et ecrire sur une disquette.

1.2 Le modele de programmation

Ouvrir la fenetre d’invite de commande et lancer debug. ⋆ Dans tout ce qui suit les nombres sontrepresentes en hexadecimal (base 16) !

1.2.1 La memoire du BIOS

Le debut de la memoire du BIOS se trouve a l’adresse physique f0000 que l’on designera f000:0. Onessaiera successivement les commandes :

2

Page 4: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 3

Figure 1.1: Utilisation de debug

− d f000:000, pour visualiser les premiers octets de la memoire du BIOS,

− u f000:fff0, pour desassembler a partir de l’adresse fff0,

− d f000:fff0, pour “dumper” les “derniers” octets de la memoire du BIOS.

Executer tour a tour ces commandes et commenter les resultats.

1.2.2 Les registres

Pour afficher les registres, utiliser la commande r. Noter les principaux registres d’un I8086 :

− AX, BX, CX, DX, les registres de travail,

− SI, DI, les registres d’index,

− CS, DS, ES, SS, les registres de segment,

− BP, registre d’adresse en pile,

− SP, le pointeur de pile,

− IP, le compteur ordinal,

− le registre des drapeaux flags (Overflow, Zero, Carry, Parity. . . ) et autres bits de controle.

1.2.3 Le langage d’assemblage

On va se familiariser avec le langage d’assemblage utilise par le debugger en travaillant avec des instruc-tions simples.

Ecrire le programme :

Page 5: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 4

a 100← pour se positionner a l’adresse 100,mov ax,1a00← mettre 1a00 dans axmov bx,f355← mettre f355 dans bxadd ax,bx← ax=ax+bx

int 3← point d’arret←

puis :

− u 100 l8 (lire ℓ8) pour desassembler et observer le code machine engendre (voir MSDOS PCs.pdf,annexe A),

− g=100 108 pour executer les instructions de l’adresse 100 a l’adresse 108. En raison de la presence dupoint d’arret, on peut executer simplement la commande g=100. Il est particulierement recommandede ne pas oublier cette instruction int 3 !

Remarquer le changement d’etat des drapeaux.

1.2.4 Les appels de procedures

Rappel : a 1000 signifie “assembler a partir de l’adresse 100016” les instructions que l’on saisit au clavier.Pour ecrire une procedure a l’adresse 1000 realisant bx=bx+2×cx :

a 1000←

push cx←

shl cx,1←

add bx,cx←

pop cx←

ret←

← fin de saisie et retour a l’invite de commandes de debug

a 100←

mov bx,a000←

mov cx,6000←

call 1000←

int 3←

← fin de saisie et retour a l’invite de commandes de debug

Executer la fonction en mode pas-a-pas (commande t=100) et suivre l’evolution des contenus desregistres IP et SP au cours de l’execution en tapant t.

1.2.5 Exercice : conversion binaire-ASCII

On rappelle l’exemple vu en cours (conversion ASCII-binaire) : le programme principal est range al’adresse 10016. Le programme de conversion d’un octet est en 20016 et fait lui-meme appel a une fonctionde conversion d’un nibble (demi-octet) qui se trouve 25016. En entree ax contient 433516 correspondantaux deux codes ASCII des caracteres “C” (4316) et “5” (3516). bx donne l’adresse, ici 300016, ou serarange le resultat (0100 0011 0011 0101).

0D5A:0100 B83543 MOV AX,43350D5A:0103 BB0030 MOV BX,30000D5A:0106 E8F700 CALL 02000D5A:0109 CC INT 3...0D5A:0200 50 PUSH AX0D5A:0201 E84C00 CALL 02500D5A:0204 88C2 MOV DL,AL0D5A:0206 88E0 MOV AL,AH0D5A:0208 E84500 CALL 02500D5A:020B D0E0 SHL AL,10D5A:020D D0E0 SHL AL,10D5A:020F D0E0 SHL AL,1

Page 6: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 5

0D5A:0211 D0E0 SHL AL,10D5A:0213 08D0 OR AL,DL0D5A:0215 8807 MOV [BX],AL0D5A:0217 58 POP AX0D5A:0218 C3 RET...0D5A:0250 2C30 SUB AL,300D5A:0252 3C0A CMP AL,0A0D5A:0254 7C02 JL 02580D5A:0256 2C07 SUB AL,070D5A:0258 C3 RET

En s’inspirant de cet exemple, ecrire une procedure de conversion binaire-ASCII ayant pour parametred’entree bx et pour parametre de sortie ax. bx contient l’adresse a d’un octet dont le contenu est x. Cetteprocedure renvoie dans ax le couple des codes ASCII donnant x sous forme hexadecimale. Exemple : si,a l’adresse a = 100016, on trouve x =A116, le registre ax devra contenir, apres execution de la fonction,413116.

1.3 Exercices facultatifs

1.3.1 La disquette

Le systeme de gestion de l’espace disque sous Windows par table d’allocation (FAT) est reste longtempsrelativement “frustre” et tres penalisant en terme de temps d’acces. La gestion des “alias” en est d’ailleursla premiere victime. Dans les versions les plus recentes de Windows, il n’est pas possible d’acceder al’espace de stockage des disques durs a l’aide de debug, ce qui se comprend aisement. . . Il n’en est pas dememe pour les disquettes (unite logique 0). On effectuera les operations suivantes :

1. lecture du secteur de boot : l cs:100 0 0 1 (lecture d’un secteur a partir du numero 0 sur l’unitede disque 0 (correspondant a l’unite logique A:) et rangement des 512 octets (un secteur) lus apartir de l’adresse CS:10016). Commenter les informations ecrites dans le secteur de boot.

2. lecture des entrees du repertoire racine. S’il n’y a pas de fichier sur la disquette, on peut en creerun de la facon suivante :

> copy con: a:monfic.txt ←

mon texte <CTRL z>←>

3. creer un repertoire et acceder au contenu de celui-ci en calculant son emplacement a partir desinformations lues dans le repertoire principal et dans le secteur de boot.

Commenter. . . (voir MSDOS PCs.pdf, chapitre “Organisation des disques”)

1.3.2 La memoire video

Sur les premiers PC la memoire video utilisait, entre autre, la memoire principale a partir de l’adresseb800:016. Heritage de l’affichage en “mode caractere” des premieres machines, a chaque caractere surl’ecran sont associes deux octets : le code ASCII du caractere et un octet d’attribut (couleur, brillance. . . ).

On essaiera successivement les commandes :

− e b800:100 41, pour ecrire le caractere A, sur la deuxieme ligne, 48-eme colonne (adresse 100 dansle segment numero b800) ;

− a la suite taper “espace” puis 71 (adresse 101 dans le segment numero b800). Que se passe-t-il ?

Page 7: INF227 - travaux dirigés

TD 2

TD gestion memoire

2.1 Memoire cache

Les processeurs dedies au traitement du signal (DSP, Digital Signal Processor) sont tres largement utilisesdans le domaine des communications. Tous les telephones portables sont dotes de tels composants pourassurer en particulier l’egalisation du canal de communication et le codage/decodage de la parole. Le pro-cesseur ADSP-2106x Sharc est un de ces processeurs, dont la particularite est de disposer d’une unite flot-tante (IEEE-754) 32 bits. Il possede une architecture Harvard interne avec trois bus : adresses (24 bits),donnees (40 bits et 48 bits pour les memoires donnees et programme respectivement) et entrees-sorties.Les instructions sont traitees en trois cycles “pipelines” correspondant aux phases Fetch : l’instruction estlue dans le cache instruction ou en memoire de programme, Decode, l’instruction est decodee et Execute,l’instruction est executee. Les instructions sont codees sur 48 bits, la memoire de donnees est sur 32 bitset les bus d’adresse sur 24 bits. Le sharc est donne pour 40 MIPS, de 80 a 120 MFLOPS a 40 Mhz (ceschiffres correspondent aux premieres versions de ce processeur).

La memoire cache du processeur Sharc est decrite dans la documentation de son fabricant Analog

Devices de la facon suivante :

The ADSP-2106x’s on-chip instruction cache is a 2-way, set-associative cache with entries for32 instructions. Operation of the cache is transparent to the programmer. The ADSP-2106xcaches only instructions that conflict with program memory data accesses (over the PM DataBus, with the address generated by DAG2 on the PM Address Bus). This feature makes the cacheconsiderably more efficient than a cache that loads every instruction, since typically only a fewinstructions must access data from a block of program memory.

Because of the three-stage instruction pipeline, if the instruction at address n requires a programmemory data access, there is a conflict with the instruction fetch at address n+2, assumingsequential execution. It is this fetched instruction (n+2) that is stored in the instruction cache,not the instruction requiring the program memory data access.

If the instruction needed is in the cache, a “cache hit” occurs − the cache provides the instructionwhile the program memory data access is performed. If the instruction needed is not in the cache,a “cache miss” occurs, and the instruction fetch (from memory) takes place in the cycle followingthe program memory data access, incurring one cycle of overhead. This instruction is loaded intothe cache, if the cache is enabled and not frozen, so that it is available the next time the sameinstruction (requiring program memory data) is executed.

1. Mettre en evidence les particularites de cette memoire cache.

2. Que signifie “if the cache is enabled and not frozen” ?

3. Le schema representant l’antememoire de l’ADSP 2106x est donne dans la documentation par lafigure 2.1.

− Donner un schema conforme a ce que l’on a vu en cours, ou dans le polycopie, en mettant enevidence les comparateurs.

− Quel est le role des bits Valid Bit ?

6

Page 8: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 7

Instruction Address Valid BitLRU Bit

0

1

2

14

15

… … ……Figure 2.1: Architecture de l’antememoire de l’ADSP 2106x

− Quel est le role des bits LRU bit ?

4. On considere le programme (donne dans la documentation du 2106x) consistant en une boucle danslaquelle on fait appel a un sous-programme sousprg.

0x0100 bclcpt=1024, do boucle until lce ; Debut de la boucle

0x0101 r0=dm(i0,m0), pm(i8,m8)=f3 ; mem. donnee --> r0

0x0101 ; et f3 --> mem.progr.

0x0102 r1=r0-r15;0x0103 if eq call (sousprg) ; appel du sous-prog.

0x0104 f2=float r1 ;0x0105 f3=f2*f2 ;0x0106 boucle: f3=f3+f4 ; ==== fin boucle0x0107 pm(i8,m8)=f3 ;

...

...0x0200 sousprg: r1=r13;

0x0201 r14=pm(i9,m9) ; mem. progr. --> r14

...0x0211 pm(i9,m9)=r12 ; r12 --> mem.progr.

...0x021F rts

Les instructions qui font acces a la memoire de programme sont celles dans lesquelles apparait lesymbole pm.

Expliquer pourquoi ce programme est particulierement mal adapte a cette structure de cache.

2.2 Cache de traduction et gestion memoire virtuelle

L’Am29000 est un des premiers microprocesseurs standards 32 bits. Datant du debut des annees 80 il estdote d’une horloge a 25 MHz, d’un pipeline a 4 etages (Fetch, Decode, Execute, Write-Back), d’un MMU,d’un systeme de prediction de branchement. . . . Il a ete largement utilise dans diverses cartes controleurs,en particulier les cartes video utilisees sur machines Apple.

En utilisant les extraits de la documentation qui sont donnes dans la suite, repondre aux questionssuivantes :

1. Questions d’ordre general :

(a) Rappeler par un schema commente le mecanisme qui permet de passer d’une adresse virtuellea une adresse physique.

(b) Rappeler le role du TLB.

(c) Pourquoi parle-t-on de trappe et pas d’interruption ?

Page 9: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 8

2. Parametres du MMU (on supposera ici que les pages font 1 Ko) :

(a) Dans le paragraphe II-1, que signifie mode superviseur ? Pourquoi est-ce le seul mode quipermet d’acceder au TLB ?

(b) Dans le paragraphe II-2-1, quels sont les roles du champ etiquette et du bit Valid ?

(c) Dans le paragraphe II-2-2, quel est le nombre de pages physiques maximum adressable ?

(d) Dans quelle famille de caches entre ce TLB ?

(e) Quel est le role du bit U ?

(f) Toujours avec des pages de 1 Ko, donner le nombre de bits des champs etiquette et index.Role du champ TID?

3. Schema de realisation : construire un schema du TLB, en mettant en evidence les comparateurs etles champs impliques.

Page 10: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 9

2.2.1 Extraits de la documentation

Introduction au MMU

I-1 Memory Management

The Am29000 incorporates a Memory ManagementUnit (MMU) which accepts a 32-bit virtual byte-addressand translates it to a 32-bit physical byte-address in a sin-gle cycle. The MMU is not dedicated to any particularaddress-translation architecture.

l1 : Address translation in the MMU is performed bya 64-entry Translation Look-Aside Buffer (TLB), an as-sociative table which contains the most-recently-used ad-dress translations for the processor. If the translation fora given address cannot be performed by the TLB, a TLBmiss occurs, and causes a trap which allows the requiredtranslation to be placed into the TLB.

Processor hardware maintains information for eachTLB line indicating which entry was least recently used.When a TLB miss occurs, this information is used to indi-cate the TLB entry to be replaced. Software is responsiblefor searching system page tables and modifying the in-dicated TLB entry as appropriate. This allows the pagetables to be defined according to the system environment.

TLB entries are modified directly by processor instruc-tions. A TLB entry consist of 64 bits, and appears as two-word-length TLB registers which may be inspected andmodified by instructions.

TLB entries are tagged with a Task Identifier field,

which allows the operating system to create a unique

32-bit virtual address space for each of 256 processes.

In addition, TLB entries provide support for memory

protection and user-defined control information.

I-2 Memory Management Unit

l2 : The Memory Management Unit (MMU) performsaddress translation and memory-protection functions for allbranches, loads and stores. The MMU operates during theexecute stage of the pipeline, so the physical address whichit generates is available at the beginning of the write-backstage.

All addresses for external accesses are physical ad-dresses. MMU operation is pipelined whith external ac-cesses, so that an address translation can occur while aprevious access completes.

l3 : Address translation is not performed for the

addresses associated with instruction prefetching. Instead,

these addresses are generated by an instruction prefetch

pointer which is incremented by the processor. Address

translation is performed only at the beginning of the

prefetch sequence (as the result of a branch instruction),

and when the prefetch pointer crosses a potential virtual-

page boundary.

Description du TLB

II-1 TLB Registers

The Am29000 contains 128 TLB registers (fig. 2.2).

TLB Entry Line 0 Word 0TLB Entry Line 0 Word 1TLB Entry Line 1 Word 0TLB Entry Line 1 Word 1

TLB Entry Line 30 Word 0TLB Entry Line 30 Word 1TLB Entry Line 31 Word 0TLB Entry Line 31 Word 1

TLB Set 0TLB

REG #

0123

60616263

TLB Entry Line 0 Word 0TLB Entry Line 0 Word 1TLB Entry Line 1 Word 0TLB Entry Line 1 Word 1

TLB Entry Line 30 Word 0TLB Entry Line 30 Word 1TLB Entry Line 31 Word 0TLB Entry Line 31 Word 1

TLB Set 1

64656667

124125126127

Figure 2.2: Registres du TLB

The TLB registers comprise the TLB entries, and areprovided so that programs may inspect and alter TLB en-tries. This allows the loading, invalidation, saving, andrestoring of TLB entries.

TLB registers have fields which are reserved for futureprocessor implementations. When a TLB register is read, abit in a reserved field is read as a 0. An attempt to write areserved bit with a 1 has no effect; however, this should beavoided, because of upward compatibility considerations.

The TLB registers are accessed only by explicit datamovement by Supervisor-mode programs. Instructionswhich move data to and from a TLB register specify ageneral-purpose register containing a TLB register num-ber. The TLB register is given by the contents of bits 6- 0 of the general-purpose register. TLB register numbersmay only be specified indiectly by general-purpose regis-ters.

TLB entries are accessed by registers numbered 0 -

127. Since two words are required to completely specify

a TLB entry, two registers are required for each TLB

entry. The words corresponding to an entry are paired

as two sequentially numbered registers starting on an

even-numbered register. The word with the even register

number is called Word 0, and the word with the odd

register number is called Word 1. The entries for TLB

Set 0 are in registers numbered 0 - 63, and the entries for

TLB Set 1 are in registers numbered 64 - 127.

II-2 Entries

II-2-1 Word 0

Bit 31-15: Virtual Tag (VTAG) When the TLB issearched for an address translation, the VTAG field of theTLB entry must match the most significant 17, 16, 15, or14 bits the address being translated - for page sizes of 1,2, 4, and 8 Kbytes respectively - for the search to be valid.

When software loads a TLB entry with the addresstranslation, the most-significant 14 bits of the VTAG are

Page 11: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 10

078141531

VE

SR

SW

SE

UR

UW

UE

Virtual Tag TID

Figure 2.3: Word 0

set with the most-significant 14 bits of the virtual addresswhose translation is being loaded into the TLB.

Bit 14: Valid Entry (VE) If this bit is set, the associ-ated TLB entry is valid; if it is 0, the entry is invalid.

Bit 13: Supervisor Read (SR) If this bit is set to 1,Supervisor-mode load operations to the virtual page areallowed; if it is set to 0, Supervisor-mode load are notallowed.

Bit 12: Supervisor Write (SW) If this bit is set to 1,Supervisor-mode store operations to the virtual page areallowed; if it is set to 0, Supervisor-mode stores are notallowed.

Bit 11: Supervisor Execute (SE)If this bit is set to 1,Supervisor-mode instruction accesses to the virtual pageare allowed; if it is 0, Supervisor-mode instruction accessesare not allowed.

Bit 10: User Read (SR) If this bit is set to 1, User-mode load operations to the virtual page are allowed; if itis set to 0, User-mode load are not allowed.

Bit 9: User Write (SW) If this bit is set to 1, User-mode store operations to the virtual page are allowed; if itis set to 0, User-mode stores are not allowed.

Bit 8: User Execute (SE) If this bit is set to 1, User-mode instruction accesses to the virtual page are allowed;if this bit is set to 0, User-mode instruction accesses arenot allowed.

Bit 7-0: Task Identifier (TID) When the TLB issearched for an address translation, the TID must matchthe Process Identifier (PID) in the MMU ConfigurationRegister for the translation to be valid. This field allowsthe TLB entry to be associated with a particular process.

II-2-2 Word 1

0131

U FPGM

Real Page Number

Figure 2.4: Word 1.

Bit 31-10: Real Page Number (RPN) The RPN fieldgives the most-significant 22, 21, 20, or 19 bits of thephysical address of the page - for page sizes of 1, 2, 4, and8 Kbyte page, respectively - to form the physical addressfor the access.

When software loads a TLB entry with an addresstranslation, the most-significant 19 bits of the RPN areset with the most-significant 19 bits of the physical ad-dress associated with the translation. The remaining 3bits of the RPN must be set either to the correspondingbits of the physical address, or to zeros, depending on thepage size.

Bit 7-6: User Programmable (PGM) These bits areplaced on the MPGM0-MPGM1 outputs when the addressis transmitted for an access. They have no predefined

effect on the access; any effect is defined by logic externalto the processor.

Bit 1: Usage (U) This bit indicates which entry in agiven TLB line was recently used to perform an addresstranslation. If this bit is 0, then the entry in Set 0 in theline is least recently used; if it is 1, then the entry in Set 1is least recently used. This bit has an equal value for bothentries in a line. Whenever a TLB entry is used to translatean address, the Usage bit of both entries in the line usedfor translation are set according to the TLB set containingthe translation. The bit is set whenever the translationis valid, regardless of the outcome of memory-protectionchecking.

Bit 0: Flag (F) The Flag bit has no effect on addresstranslation, and is affected only by the MTTLB instruc-tion. This bit is provided for software management of TLBentries.

Fonctions du TLB

III-1 Memory managementThe Am29000 incorporates a Memory Management

Unit (MMU) for performing vrtual-to-physical addresstranslation and memory access protection. Address trans-lation can be performed only for instruction/data accesses.No address translation is performed for instruction ROM,input/output, coprocessor, or interrupt/trap vector access.

III-2 Translation Look-Aside BufferThe MMU stores the most recently performed address

translation in a special cache, the TLB. All virtual ad-dresses generated by the processor are translated by theTLB. Given a virtual address, the TLB determines the cor-responding physical address.

The TLB reflects information in the processor systempage tables, except that it specifies the translation formany fewer pages; this restriction allows the TLB to beincorporated on the processor chip where the performanceof address translation is maximized.

Each TLB entry is 64 bits long, and contains map-ping and protection information for a single virtual page.TLB entries may be inspected and modified by processorinstructions executed in the Supervisor mode.

The TLB stores information about the ownership ofthe TLB entries an 8-bit Task Identifier (TID) field in eachentry. This makes it possible for the TLB to be shared byseveral independent processes without the need for invali-dation of the entire TLB as processes are activated. It alsoincreases system performance by permitting processes towarm-start (i.e. to start execution on the processor with acertain number of TLB entries remaining in the TLB froma previous execution).

Each TLB entry contains two bits to assist man-agement of the TLB entries. These are the Usageand Flag bits. The Usage bit indicates which set ofthe entry within a given line was least recently usedto perform an address translation. Usage bits for twoentries in the same line are equivalent. The Flag bit hasno effect on address translation, and is not affected bythe processor except by explicit writes to the TLB. Thisbit is provided only for use by the software; for exam-ple, it may indicate that a TLB entry may not be replaced.

Page 12: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 11

III-3 Address TranslationFor the purpose of address translation, the virtual in-

struction/data space for a process is partitionned into re-gions of fixed size, called pages, which are mapped by theaddress-translation process into equivalently sized regionsof physical memory, called page frames. All accesses toinstructions or data contained within a given page use thesame virtual-to-physical address translation.

Pages may be of size 1, 2, 4, or 8 Kbytes, as specifiedby the MMU Configutaion Register. Virtual addresses arepartitioned into three fields as shown in Figure 2.5.

0910141531

Virtual TagComparison

LineSelect

Page Offset

01011151631

Virtual TagComparison

LineSelect

Page Offset

01112161731

Virtual TagComparison

LineSelect

Page Offset

01213171831

Virtual TagComparison

LineSelect

Page Offset

Figure 2.5: Adresse virtuelle.

III-3-1 Address Translation ControlsThe processor attempts to perform address translation

for the following external accesses:1) Instruction accesses, if the Physical Adress-

ing/Instructions (PI) and ROM Enable (RE) bits of theCurrent Processor Status is 0.

2) User-mode accesses to instruction/data memory ifthe Physical Adressing/Data (PD) bit of the current Pro-cessor Status is 0.

3) Supervisor-mode accesses to instruction/data mem-ory if the Physical Adressa (PA) bit of the load or storeinstruction performing the access is 0, and the PD bit ofthe current Processor Status is 0.

Address translation is also controlled by the MMUConfiguration Register. This register specifies the virtualpage size, and contains an 8-bit Process Identfier (PID)field. The PID field specifies the process number associ-ated with the currently running program. This value iscompared with Task Identifier (TID) fields of the TLBentries during address translation. The TID field of aTLB entry must match the PID field for the translationto be valid.

III-3-2 Address Translation ProcessAddress translation is performed by the following fields

in the TLB entry: the irtual Tag (VTAG), the Task Iden-tifier (TID), the Valid Entry (VE) bit, and the Real PageNumber (RPN). To perform an address translation, theprocessor accesses the TLB line whose number is given bycertain bits in the virtual address (see Figure 2.5).

The accessed line contains two TLB entries, which inturn contain two VTAG fields. The VTAG fields are bothcompared to bits in the virtual address. This comparisondepends on the page size as follows (note that the VTAGbit numbers are relative to the VTAG field, not the TLBentry):

Page Virtual VTAGSize Add. Bits Bits

1 Kbyte 31-15 16-02 Kbyte 31-16 16-14 Kbyte 31-17 16-28 Kbyte 31-18 16-3

Note that certain bits of the VTAG field do not partic-ipate in the comparison for page sizes larger than 1 Kbyte.These bits of the VTAG field are required to be zero bits.

Page 13: INF227 - travaux dirigés

TD 3

TD pipeline

3.1 L’architecture DLX

Le DLX est une machine pipeline a 5 niveaux (figure 3.1). On retrouve nombre des principes architecturauxqui y sont mis en œuvre dans les machines telles que les MIPS (D. Patterson est le concepteur des deux) ou lesPowerPC.

F

D

E

W

M

4+

Décodage

D

DA

A

(J)

UAL

D

VI

TA TB MI

AL

CO

UB

NCO

NCO

RI

16556

5

5

32

32

32 32RI

RI

RI

TB

AL TL

Figure 3.1: Architecture DLX la plus simple

Cette architecture est celle d’une machine “pedagogique”. Elle est dotee de :

− 32 registres entiers 32 bits (R0 est special et important : son contenu est 0 !) ;

− 32 registres flottants 32 bits (non representes dans la figure 3.1) ;

− Les instructions arithmetiques et logiques ne peuvent pas s’effectuer en memoire ;

− Les operations arithmetiques et logiques comportent 3 operandes ;

− Les modes d’adressage (machine Big Endian) sont les suivants :

– Immediat : add r1,r2,#5 ; // r1 := r2+5

– Par registres : add r1,r2,r3 ; // r1 := r2+r3

– Deplacement : lw r1,22(r2) ; // r1 := [r2+22]

– Indirection : sw 0(r1),r2 ; // r2 → [r1]

– Absolu : lw r12,2004(r0) ; // r12 := [2004]

Les cinq phases du pipeline executent les operations suivantes :

1. Fetch (F) : lecture instruction ;

12

Page 14: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 13

2. Decode (D) : decodage et acces aux registres impliques dans l’instruction ;

3. Execute (E) : execution des operations arithmetiques et calcul d’adresses ;

4. Memory (M) : acces a la memoire. Pour les branchements, c’est dans cette phase que s’effectue la modifica-tion du compteur ordinal ;

5. Write back (W) : ecriture des resultats dans les registres.

On suppose que les ecriture de registres se font dans le premier demi-cycle et leur lecture dans le second(resolution d’un alea structurel).

3.1.1 Fonctions remplies dans chaque etage

1. Fetch : RI:=Mem(CO); si COND alors CO:=CO+4; sinon CO:=AL;

2. Decode : TA:=R(RI[6:10]); TB:=R(RI[11:15]); extension de signe pour la valeur immediate ;

3. Execute :

(a) Reference memoire : AL:=TA+MI; (calcul d’adresse)

(b) Operation registre a registre : AL:=TA Op TB;

(c) Operation registre, valeur immediate : AL:=TA Op MI;

(d) Branchement : AL:=NCO+MI; COND:= TA Op 0;

4. Memory :

(a) Reference memoire : TL:=Mem[AL]; ou Mem[AL]:=TB;

(b) Branchement : Si COND CO:=AL sinon CO:=NCO;

5. Write Back :

(a) Operation UAL : R(RI[16:20]):=AL; ou R(RI[11:15]):=AL;

(b) Operation d’acces a la memoire : R(RI[11:15]):=TL;

3.1.2 Jeu d’instructions

Controle

BEQZ, BNEZ Branchement avec offset 16 bits par rapport au COBFPT, BFPF Test sur le bit de comparaison du registre d’etat flottant. Offset 16 bits

par rapport au CO.J, JR Offset 26 bits ou adressage indirect sur registre.JAL, JALR Idem avec “link” (R31 recoit l’adresse de retour).TRAP Appel systeme.RFE Retour vers code utilisateur.

Transferts de donnees Transferts de registres a memoire, ou entre entier et reg-istre flottant ou special; Adressage indirect sur registre+ deplacement 16 bits.

LB, LBU, SB load/store 8 bits signes ou non.LH, LHU, SH load/store 16 bits signes ou non.LW, SW load/store 32 bits.LF, LD, SF, SD load/store flottants simple ou double precision.MOVI2S, MOVS2I Transferts entre registres generaux et registres speciaux.MOVF, MOVD Transferts entre registres flottants ou doubles flottants.MOVFP2I, MOVI2FP Transferts 32 bits registres entiers ↔ flottants.

Page 15: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 14

Arithmetique/logique

ADD, ADDI, ADDU, ADDUI Addition, addition avec valeur immediate, addition nonsignee, addition non signee avec valeur immediate

SUB, SUBI, SUBU, SUBUI Idem soustractionsMULT, MULTU, DIV, DIVU Operations sur flottants et en 32 bits.AND, ANDI

OR, ORI, XOP, XOPI

LHI Chargement poids fort.SLL, SRL, SRA, SLLI,

SRLI,SRAI

Decalages logiques ou arithmetiques.

S , S I Comparaison. peut etre LT, GT, LE, GE, EQ, NE.

Operations flottantes

ADDD, ADDF

SUBD, SUBF

MULTD, MULTF

DIVD, DIVF

CVTF2D, CVTF2I, CVTD2F Conversions entre entiers, flottants simple et doubleprecision.

CVTD2I, CVTI2F, CVTI2D

D, F Comparaisons : peut etre LT, GT, LE, GE, EQ, NE.Cette instruction positionne le bit de comparaisondans le registre d’etat.

3.1.3 Format des instructions

1. Instructions de type I : operations avec valeur immediate, branchements conditionnels, sauts indirects :

OperOp RdRs1

OperOp Rs1

6 5 5 16

Rd := Rs1 Op #Oper

BranchCond(Rs1) CO+Oper

Op Rs1 0 0

JR/JALR(Rs1)

Figure 3.2: Type I

Les instructions “Jump and Link” utilisent R31 pour ranger CO+4.

Exemples :

sra r2,r5,#3 ; r2 := r5 / 8 (shift right arithmetic).

addi r2,r5,#3 ; r2 := r5 + 3.

lhi r2,#3 ; r2 := 3 × 216 (load high immediate).

jalr r2 ; r31 := CO+4; CO := r2 (jump and link register).

2. Instructions de type R : set condition et mouvements entre registres :

Op RdRs1 Rs2 Fonct

6 5 5 5 11

Rd := Rs1 Fonct Rs2MOV

Figure 3.3: Type R

Exemple :

sge r2,r5,r6 ; si r5 ≥ r6 alors r2:=1 sinon r2:=0.

3. Instructions de type J : branchements relatifs avec deplacement sur 26 bits :

Exemple :

jal offs ; r31 := CO+4; CO := CO + offs.

Page 16: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 15

OffsetOp

J/JAL CO+Offset

6 26

Figure 3.4: Type J

3.2 Exercices

3.2.1 Conflits de dependance

On considere le programme :

a := b + c;d := a - f;e := g + h;

ou toutes les variables sont codees en entiers 32 bits.Dans un premier temps on ne soucie pas d’optimiser le code. On suppose que le compilateur engendre la

sequence :

;===== a=b+clw r1,b[r0]lw r2,c[r0]add r3,r1,r2sw a[r0],r3;===== d=a-flw r4,f[r0]lw r3,a[r0] ; mouaif...sub r5, r3,r4sw d[r0],r5;===== e=g+h

lw r6,g[r0]

lw r7,h[r0]add r8,r7,r6sw e[r0],r8

1. Faire une estimation des penalites.

2. Reprendre l’ordonnancement du programme en essayant de minimiser les penalites provoquees par lesdependances.

3.2.2 Branchements

On considere l’architecture DLX et on suppose qu’il n’y a pas d’attente sur l’acces aux donnees. La valeur initialede R3 est supposee egale a R2+40010.

boucle: lw r1,0(r2)addi r1,r1,#1sw 0(r2),r1addi r2,r2,#4sub r4,r3,r2bnez r4,boucle

1. On considere le DLX de la figure 3.1 (pas de mise en œuvre de l’anticipation, laquelle sera vue par la suite).On suppose que le branchement “vide” (perte de 2 cycles, ce qui conduit a un retard de 3 cycles car onexecute a nouveau un Fetch) le pipeline et qu’il y a lecture et ecriture du banc de registres dans le memecycle d’horloge.

Evaluer le nombre de cycles pris pour executer cette boucle.

boucle: lw r1,0(r2)

addi r1,r1,#1

sw 0(r2),r1

addi r2,r2,#4

sub r4,r3,r2

bnez r4,boucle

Page 17: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 16

2. On considere maintenant l’architecture DLX avec anticipation (figure 3.5). On n’attend pas la phase duWrite pour utilliser les resultats disponibles en E.AL, M.AL ou M.TL.

{

F

D

E

W

M

4+

Décodage

D

DA

UAL

VI

TA TB MI

CO

UB

RI

16556

5

32

32

32 32

TL

RI

RI

RI

TB

AL

AL

NCO

A

D

NCO

Figure 3.5: DLX avec dispositif d’anticipation

On suppose que l’on utilise un branchement “normal” (3 cycles de penalite).

Evaluer le nombre de cycles pris pour executer cette boucle (attention : l’anticipation ne resoud pas tousles conflits !).

boucle: lw r1,0(r2)

addi r1,r1,#1

sw 0(r2),r1

addi r2,r2,#4

sub r4,r3,r2

bnez r4,boucle

3. On suppose maintenant que l’on fait, en plus des anticipations precedentes, une anticipation sur branche-ment (penalite = 1) representee figure 3.6.

Le branchement utilise en fin de boucle est retarde (delayed branch). Evaluer le nombre de cycles pris pourexecuter cette boucle.

On modifiera simplement le programme pour en optimiser le temps d’execution (deplacement d’une instruc-tion).

boucle: lw r1,0(r2)

addi r1,r1,#1

sw 0(r2),r1

addi r2,r2,#4

sub r4,r3,r2

bnezd r4,boucle

3.3 DLX a 8 niveaux de pipeline

Considerons une architecture DLX a 8 niveaux ou les phases F, X et M s’executent maintenant respectivementsur deux cycles F1/F2, X1,X2 et M1/M2.

Page 18: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 17

F

D

E

W

M

4

+

Décodage

D

DA

A

UAL

D

VI

TA TB MI

CO

NCO RI

16556

32

TL

RI

RI

RI

TB

AL

{

AL

+

NCO

Figure 3.6: Anticipation sur branchements

F1 Premier cycle de Fetch Instruction.F2 Second cycle de Fetch Instruction.

D Decodage, chargement registres et debut de calcul de l’adresse de branchement.

X1 Debut execution, test de la condition et fin de calcul de l’adresse de branchement.X2 Fin d’execution, l’adresse effective ou le resultat du calcul dans l’UAL est

disponible.

M1 Debut de cycle d’acces memoire et Write Back du resultat du calcul.M2 Fin de cycle d’acces memoire.

W Write Back pour une instruction de lecture en memoire.

Etage de decodage

Combien de “ports” d’acces aux registres seront-ils necessaires dans l’etage de decodage, sachant que dans le DLXsimple il y en a trois (deux en lecture, un en ecriture) ?

Anticipations

Donner les diagrammes d’execution pour les sequences d’instructions qui suivent en indiquant le typed’anticipation vous proposez pour minimiser les penalites.

1. Exemple 1 :

add r1,r2,r3

sub r4,r5,r6

bnez r1,suite

2. Exemple 2 :

lw r1,0(r2)

sub r4,r5,r6

...

...

bnez r1,suite

3. Exemple 3 :

add r1,r2,r3

sw 0(r4),r1

Page 19: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 18

Nombre de cycles perdus

Indiquer le nombre de cycles perdus dans les trois cas envisages.

1. Exemple 1 :

add r1,r2,r3

sub r4,r5,r6

bnez r1,suite

2. Exemple 2 :

lw r1,0(r2)

sub r4,r5,r6

...

...

bnez r1,suite

3. Exemple 3 :

add r1,r2,r3

sw 0(r4),r1

Page 20: INF227 - travaux dirigés

TD 4

TD coherence

Methodes mises en œuvre pour assurer la coherence

Il y a plusieurs methodes pour assurer la coherence des informations. On suppose dans tout ce qui suit que lapolitique d’ecriture est de type “ecriture differee” (write-back) :

1. Un des protocoles de scrutation permet a chaque cache de savoir s’il y a des acces pouvant poser probleme.Les protocoles s’appuyant sur un tel dispositif (snooper ou bus watcher) sont designes par protocoles descrutation (snooping protocols). L’interet de leur mise en œuvre est du au fait qu’elle ne modifie que lecontroleur de cache, donc ni le processeur, ni la memoire.

2. Si une information est modifiee dans l’un des caches, on peut decider de propager la modification dans tousles autres caches. Cette methode est designee par Broadcasting/Hardware Transparency.

3. Dans les memes conditions, une autre possibilite est de ne pas propager les copies des informations partageesdans les caches. On parle de non-cacheable memory systems (ceci s’applique a toutes les adresses desdispositifs d’entree-sorties).

4. Pour prendre en compte les difficultes liees aux temps de propagation lorsqu’on desire faire des ecrituressur disque (ou sur les caches de disques), il peut etre utile de recopier toutes les lignes marquees modifiees(dirty ou modified) et de les marquer invalides. Cette methode est designee par cache flushing.

4.1 Les protocoles de scrutation, exemple du protocole MSI

On suppose que le cache fonctionne en write-back et que les miss sur ecriture provoquent une mise a jour du cache.Dans ce qui suit on notera P0 le processeur local et C0 son cache et Pi et Ci un processeur distant et son

cache.

Le protocole MSI

Le protocole MSI s’applique a des caches fonctionnant en write-back dans lesquels chaque ligne possede un destrois etats : Modified (M), Shared (S) ou Invalid (I), dont la signification est la suivante :

1. I : ligne non valide. L’information qui y est rangee n’est pas digne de confiance. Tout acces donne lieu aun miss.

2. M : si une ligne du cache est dans l’etat M, cela signifie qu’elle est la seule copie valide. Le processeur estqualifie de proprietaire. La copie en memoire peut etre ou non valide. La ligne est copiee en memoire encas de remplacement.

3. S : la ligne est dans le cache sans jamais avoir ete modifiee. D’autres caches peuvent posseder une copie decette ligne. La coherence est assuree.

Le protocole est decrit par le schema 4.1. On suppose ici que, dans sa mise en œuvre, le protocole LRU faitpartie du protocole de coherence. Le schema 4.1 est inspire par le processeur MPC860 de Motorola R© . On a doncchoisi de representer les transitions dues a la gestion de la coherence et celles dues au protocole LRU (le MPC860n’etait pas prevu pour faire du multiprocessing mais gerait la coherence locale).

Ainsi, si l’etat de la ligne est M et qu’elle est la ligne LRU, un cycle d’operations :

− store (designe par cast-out du LRU)

− signalisation,

19

Page 21: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 20

M

S

WH

WM

RH,WH

I

RM

RM

RM

WM

WM

ACKload

ACK

loadACK

load

ACKload

store

store

(7)

(1)

(2)

(5)

(8)

(3)(4)

(9)

ACK

M

load

load

ACK

load

M S

SR

SR

I

SWSW

Signalisation

write back

write back

(P0)

(Pi)RH(6)

Figure 4.1: Description du protocole MSI : les fleches en trait fin correspondent aux transitions entre etats, lesautres (fleches brisees) aux signaux utilises pour communiquer entre C0 et Ci.

− et load (designe par cache fill),

est execute.Les transitions peuvent etre commentees de la facon suivante :

1. transition (1) : cette transition correspond a un echec en ecriture (WM) et au choix d’une ligne dans l’etatI. Cette situation peut survenir lorsque le processeur privilegie le choix d’une ligne I, s’il y en a, avant lamise en œuvre du protocole LRU. Ceci permet de gagner du temps dans la selection d’un “remplacant”.

Avant d’effectuer la lecture en memoire (indiquee par load), il faut savoir si la ligne contenant l’informationest presente dans un autre cache Ci dans l’etat M ou S. Si c’est le cas (partie droite du schema), cettedemande (SW) de lecture suivie d’une ecriture provoque une recopie en memoire de la ligne avec passagea I de la ligne dans Ci, et un acquittement ( ) pour permettre a C0 de terminer sa lecture (ce qui est

represente par le symbole loadACK

), puis son ecriture et son passage a l’etat M.

2. transition (2) : cette transition d’echec en lecture (RM) donne la meme signalisation que dans le cas 1. Parcontre l’etat de la ligne dans Ci passe a S en reponse a la demande de lecture SR. Comme il n’y a pasmodification de la ligne lue en memoire, l’etat passe a S dans C0.

3. transition (3) : succes en ecriture (WH) sur une ligne presente dans le cache dans l’etat S. L’etat passe aM avec signalisation. Les lignes correspondantes dans l’etat S passent a l’etat I dans les autres caches.

4. transition (4) : echec en ecriture (WM) sur une ligne presente dans le cache dans l’etat S. Cette situationsurvient lorsque l’algorithme LRU choisit une telle ligne. On se retrouve dans le cas 1 sans recopie.

5. transition (5) : echec en lecture (RM) avec choix d’une ligne dans l’etat S. La ligne ecrasee etant en S, iln’y a pas besoin de la copier en memoire puisque la coherence est assuree. Ensuite on attend l’acquittementeventuel d’un Ci pour recuperer la ligne en memoire et l’amener dans le cache.

6. transition (6) : succes en lecture (RH) sur une ligne dans l’etat S.

7. transition (7) : succes en lecture ou ecriture (RH/WH) sur une ligne dans l’etat M. C’est la seule occurencede cette ligne. Il n’y a pas besoin de signalisation.

8. transition (8) : echec en lecture (RM) sur une ligne dans l’etat M. La ligne choisie par LRU doit d’abordetre recopiee en memoire (store) avant d’etre remplacee par une autre ligne lue en memoire selon le memeprocessus de mise-a-jour qu’en 1. L’etat passe a S. La coherence est assuree.

9. transition (9) : echec en ecriture (WM) sur une ligne dans l’etat M. La ligne choisie par LRU doit d’abordetre recopiee en memoire (store) avant d’etre remplacee par une autre ligne lue en memoire selon le memeprocessus de mise-a-jour qu’en 1.

Page 22: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 21

4.1.1 Exercice : le protocole MESI

Le protocole MESI (Modified Exclusive Shared Invalid) est aussi connu sous le nom de Illinois protocol. Il est enparticulier mis en œuvre dans les processeurs de la famille Pentium d’Intel R© ou PPC601 de Motorola R© . Chaqueligne du cache est dans un des quatre etats suivants :

1. Modified (M) : la ligne est valide et l’information associee ne se trouve que dans ce cache. La donnee n’apas ete mise a jour dans la memoire.

2. Exclusive (E) : la ligne ne se trouve que dans ce cache. L’information correspondante est coherente dans lesysteme de memorisation.

3. Shared (S) : la ligne est valide et l’information correspondante se trouve dans au moins un autre cache. Uneligne “partagee” est toujours coherente dans le systeme de memorisation.

4. Invalid (I) : l’information contenue dans la ligne n’est pas digne de confiance.

Exercice, le protocole MESI

1. Donner le graphe d’etat du fonctionnement du protocole MESI. On ne representera pas les evenementsassocies au protocole LRU.

2. On considere le meme systeme que precedemment en supposant que les ecritures se font selon la methodewrite-back. Au depart toutes les lignes sont marquees “invalides”. A l’adresse X en memoire est rangee lavaleur 10.

n PA PB Commentaire

1 mov r1,[X] PA : r1:=[X]

2 mov r4,[X] PB : r4:=[X]

3 mov [X],#0 PA : [X]:=0

4 mov r5,[X] PB : r5:=[X]

5 mov [X],#20 PB : [X]:=20

Completer les schemas donnes (figure 4.2) le deroulement des operations assurant la coherence des cachesselon le protocole MESI.

Page 23: INF227 - travaux dirigés

INF227 - 2008-2009 - GB/BD 22

PB

CB

PA

CAM

X10

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

PB

CB

PA

CAM

X

Figure 4.2: Mise en œuvre des protocoles de coherence (schema utilise pour les exercices sur la coherence)