114
IUT Léonard de Vinci, Reims Dpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques » de haut niveau

IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Embed Size (px)

Citation preview

Page 1: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Architecture&

Programmation

Processeur, micro-code,assembleur, langage machine,

concepts « programmatiques » de haut niveau

Page 2: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 2 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

But du cours

Liaison entre Architecture et programmation.

Il s'agit en somme de combler partiellement le fossé séparant l'Electronique et la Programmation.

Compréhension de certains concepts de programmation tant bas niveau (langage machine, assembleur) que haut niveau (C, ...).

Page 3: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 3 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Moyens

Analyse d'un microprocesseur simpliste adapté de celui du livre "Architecture de l'Ordinateur" de A. Tanenbaum publié chez InterEditions.

Analyse et conception progressive de l’interpréteur d'un langage machine simpliste dédié à ce micro-processeur.

Traduction dans ce langage machine de concepts de programmation propres aux langages de haut niveau :

calculs et tests complexes, boucles, appels de fonctions, arguments, retour avec ou sans valeur.

Page 4: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 4 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Plan du cours

Analyse du microprocesseur

Exécution d’un programme LM

rôle du micro-code vis à vis du programme LM

structure du micro-code

Instructions LM

nature des instructions LM, micro-codagetraduction de concepts haut niveau

Page 5: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 5 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Chapitre I

Analyse du micro-processeur

description générale

bloc de traitement

bloc de commande

Page 6: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 6 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Le processeur travaille en cycles de 4 phases cadencées par une horloge interne.

Chaque cycle correspond à l'exécution de la micro-instruction stockée en phase 1 dans un registre dédié : Registre µ-instr.

Le processeur est schématiquement découpé en 2 blocs fonctionnels : traitement : réalise les opérations demandées commande : choisit la prochaine µ-instruction

Fonctionnement global

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 7: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 7 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Bus ABus C Bus B

NZ

D

traitement commande16

16

Horloge

3 4

2 1

256 µ-instructions

33 bits

Mémoire deCommande

Décod. 4b

8

4

4

4

33

256

Incrémenteur

WRRD

Busd’adresses

Bus dedonnées

SO

Décod. 4b

Décod. 4b

16

Décod. 8b

Valideur 16b

UAL n b

MCO

EC

MUX 2xn

Décaleur

MSMicro-

Séquenceur

Tampon A Tampon B

CO

AC

PP

0

1

LGMOT

A

B

C

D

E

F

RI

RIT

PLP

dispo

RDO

Processeur

Mémoirecentrale

RAD

µ-inst 0

µ-inst 255

Registre µ-instn

n

A

U

SA

MUX 2x8

Page 8: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 8 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

16 registres n bits (CO, … , A, B, … , F),

tous connectés à 3 bus n bits :

A et B en lecture, C en écriture

la sélection pour ces 3 bus fait intervenir des bus d’adresses 4 bits et des décodeurs 4 bits.

l’écriture via le bus C doît être confirmée grâce au signal EC pilotant le valideur 16 bits

Mémoire de travail

Bus ABus C Bus B

16

16

4

Décod. 4b

Décod. 4b

Décod. 4b

16

Valideur 16b

EC

CO

AC

PP

F

PLP

...

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 9: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 9 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

2 registres n bits permettant de stabiliser en phase 2 les lectures des 2 bus A et B (Tampon A, Tampon B).

un multiplexeur 2 x n bits permettant de choisir entre Tampon A et RDO (cf. plus loin) selon le signal A.

une UAL n bits, 8 opérations (selon signal 3 bits U) et 2 fils d’état du résultat (N : négatif, Z zéro) connectée à la sortie du multiplexeur et à Tampon B.

un décaleur n bits 4 opérations (selon signal 2 bits D) en sortie d’UAL alimentant le bus C.

CalculNZ

D

2

UAL n b

Décaleur

Tampon B

A

U

µ-Séqu.

RDO

RAD

Registre µ-inst

MUX 2xn

Tampon A

Bus ABus C Bus B

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 10: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 10 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

2 registres n bits connectés aux bus de la mémoire centrale. RAD connecté en lecture au bus d’adresses RDO connecté en lecture/écriture au bus de données

validation des transferts par les signaux de la mémoire centrale & connexion de RDO au bus de données: WR ( écr mém, lec RDO , Mem[RAD]=RDO ) RD ( lec mém, écr RDO , RDO=Mem[RAD] )

Transferts avec lamémoire centrale

3 4

WRRD

Busd’adresses

Bus dedonnées

SO

MUX 2xn

Tampon B

RDO

RADn

nSA

Registre µ-inst

Bus C

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 11: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 11 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

RAD est mis à jour à partir de Tampon B en phase 3 si le signal SA (Set rAd) est activé.

RDO est mis à jour en phase 4 a partir du bus C si le signal SO (Set rdO) est activé.

RDO alimente aussi le multiplexeur 2 x n bits et peut ainsi remplacer Tampon A dans le calcul.

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 12: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 12 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Les transferts mémoire seront supposés plus lent que le processeur et demanderont 2 cycles consécutifs selon les synoptiques suivants :

lecture mémoire RDO = Mem[RAD] cycle 1 ; écriture de RAD, activation de RD cycle 2 ; maintien de RD fin de cycle 2 ; la donnée lue est stockée dans RDO

écriture mémoire Mem[RAD]=RDO cycle 1 ; écriture de RAD et RDO, activation de WR cycle 2 ; maintien de WR fin de cycle 2 ; donnée stockée dans RDO écrite

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 13: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 13 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

mémoire de travail : 13 bits

3 bus d’adresses 4 bits : adA,adB,adC EC signal de validation d’écriture via le bus C

transferts : 4 bits

SA mise à jour de RAD d’après Tampon B SO mise à jour de RDO d’après le bus CWR écriture mémoire Mem[RAD]=RDO RD lecture mémoire RDO= Mem[RAD]

Signaux de commande

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 14: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 14 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

calcul : 6 bits

A choix entre RDO et Tampon A

U signal 3 bits de commande de l’UAL

D signal 2 bits de commande du décaleur

0 : -a 1 : b+a 2 : b-a 3 : a4 : non a5 : b et a6 : b ou a 7 : b xor a

avec

a = Tampon A ou RDO

b = Tampon B

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

0 : pas de décalage1 : décalage à droite non signé2 : décalage à gauche 3 : décalage à droite signé

0 : Tampon A1 : RDO

Page 15: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 15 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

phase 1 : (mise à jour de Registre µ-instr )

phase 2 :lecture par les bus A et B, stockage dans

Tampon A et Tampon B

phase 3 :stabilisation des calculs ( UAL et Décaleur )mise à jour éventuelle de RAD depuis Tampon B

phase 4 :écritures éventuelles via le bus C de RDO et/ou d’un des 16 registres de travail

Séquencement du cycle

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 16: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 16 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

256 registres « ROM » 33 bitsstockage des micro-instructions composant lemicro-code (cf. plus loin).

tous connectés en lecture conditionnelle à 1 bus 33 bits permettant de charger Registre µ-instr.

la sélection fait intervenir un décodeur et un bus d’adresses 8 bits alimenté par MCO

Mémoire de commande

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

1

256 µ-instructions

33 bits

Mémoire deCommande

33

256

Décod. 8b

µ-inst 0

µ-inst 255

Registre µ-inst

MCO

Page 17: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 17 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

choix de la prochaine µ_instruction à exécuter par mise à jour en phase 4 de MCO (micro compteur ordinal)

opéré par un multiplexeur 2 x 6 bits entre : poursuite ; MCO+1 fourni par un incrémenteur et saut ; adresse fournie par Registre µ-inst.

piloté par le micro-séquenceur selon son signal de commande MS et les fils d’état N et Z de l’UAL

Contrôle du séquencementdu micro-code

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Mémoire deCommande

8

Incrémenteur

Décod. 8b

MS

Registre µ-inst

MUX 2x8

Micro-

SéquenceurNZ

4

UAL n b

MCO

Page 18: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 18 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

mémoire de commande : 0 bits

chargement de Reg µ-inst automatique

contrôle : 10 bits

adS adresse 8 bits de saut éventuel ou forcé

MS commande 2 bits du Micro-séquenceur

Signaux de commande

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

0 : poursuite systématique avec 1 : saut si N=1 saut MCO=adS 2 : saut si Z=1 poursuite MCO=MCO+1 3 : saut inconditionnel

Page 19: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 19 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

phase 1 : mise à jour de Registre µ-instr .

phase 2 : (lecture par les bus A et B )

phase 3 : stabilisation des calculs : UAL, Incrémenteur, Micro_séquenceur et Multiplexeur.

phase 4 :mise à jour de MCO.

Séquencement du cycle

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

Page 20: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 20 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Structure binaire des micro-instructions

Instructions LM Exécution prog LMLe Micro-processeurdescription généralebloc de traitementbloc de commande

A MS DUSASOWRRDEC

adC adA adB adS

1 2 23 1 1 1 1 1 4 4 4 8

33 bits

Une micro-instruction est une juxtaposition de champs de bits destinés à mémoriser les valeurs des signaux de commande pilotant le processeur pendant 1 cycle.

Page 21: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 21 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Chapitre II

Exécution d’un programme LM

micro-code et programme LM

structures des LM

architecture du micro-code

Page 22: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 22 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

instructions et données en mémoire centrale

chargées et exécutées une à une par le processeur

Programme en cours d’exécution

Cf. cours « Bases de la programmation »

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Rôle du « micro-code »

programme embarquédans le processeur en

mémoire de commande

Instructions au formatbinaire définissant le LM

programme LM

Page 23: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 23 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Horloge

Mémoire deCommande

RDO

RAD

Registre µ-inst...

Inst LM

...

ProgrammeLM

...

...

1. chargement d’une instruction

LM

2. décodage puisexécution de cette

instruction

Micro-code

1.

MémoireCentrale

Processeur

Page 24: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 24 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Rôle

Format binaire des instructions

Emplacement des instructions

Emplacement des données

Taille du programme

Volumedes données

Exécuter tout programmeLM soumis

micro-instructions du processeur

processeur : mémoire de commande

processeur : certains registres de travail

très court ( mémoire de commande )

très faible ( nombre de registres )

quelconque

définition du Langage Machine

mémoire centrale

mémoire centrale + évtlmnt qq. registres

quelconque

quelconque

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Comparaison micro-code / programme LM

Micro-code Programme LM

Page 25: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 25 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Partage des registres de travail

Registres réservés au micro-code, le programme LM ne peut jamais y accéder directement.

registres dédiés rôles précis et immuables registres réservés rôles divers au cours du temps

Registres à disposition du programmeur LM, le micro-code ne les utilise jamais

registres disponibles rôles à discrétion du programmeur LM.

CO … LGMOT Dispo, A … D

E, F

Page 26: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 26 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Le langage machine (LM) associé à un micro-code estcaractérisé par les formats binaires des diverses instructionsreconnues et exécutées par ce micro-code.

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Définition du Langage Machine

Page 27: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 27 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Le LM est donc le lien entre micro-code et programmes :

le micro-code ne sait exécuter que des programmes exprimés dans ce langage.

tout programme composé exclusivement d'instructions de ce langage pourra être interprété par le micro-code.

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

vérifiant ce format binaire décodé et exécuté

Page 28: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 28 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

le langage machine est défini par le micro-code,et non par le processeur.

2 processeurs identiques à micro-codes différents se programment avec des LM différents.

Page 29: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 29 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

une instruction LM occupe un à plusieurs mots mémoire consécutifs

scindés en plusieurs champs de bits

Format général d’une instruction LM

. . .

Code Instruction nature de l’opération désirée : ex addition, saut

premier champ

autres champs opérandes : ex valeurs à additionner paramètres : ex condition et adresse de saut

nombre et formats selon nature instruction

Page 30: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 30 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

une instruction possède classiquement de 0 à 3 opérandes

ex : 0 1 2 3 return goto x a = b a = b + c

ces opérandes sont spécifiés par des « nombres clef » binaires permettant d’accéder d’une façon ou d’une autre aux valeurs voulues (cf. modes d’adressage … ).

ces nombres clef sont appelés adresses même s’ils ne correspondent pas toujours à l’adresse d’un mot en mémoire centrale contenant la valeur de l’opérande.

Adresses

Page 31: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 31 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

par souci de compromis entre simplicité et puissancedes instructions, les LM peuvent limiter le nombre maximumd’adresses par instruction. On parle alors de :

Langage machine 3 adresses

pas de limitation !

Langage machine 2 adresses

pour les opérations 3 adresses, une des 2 adresses est à la fois source et destination :

a = b+c a=b ; a += c

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Page 32: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 32 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

et même de :

Langage machine 1 adresse

on utilise un registre dédié pour toutes les adressesmanquantes :

a = b acc=b ; a = acc;a = b+c acc=b ; acc += c ; a = acc

Accumulateur

Page 33: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 33 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

adresse 3

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Implantation mémoire des instructions LM

adresse 1

adresse 2

X

X + 1 mot

X + 3 mots

X + 2 mots

adressesmémoire

un mot mémoire suffit rarement à stocker un code instruction et une adresse.

une instruction LM avec opérande(s) occupe donc souvent plusieurs mots mémoire consécutifs. code instruction divers

premier mot

mots suivants facultatifs

Page 34: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 34 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Mécanisme général de traitementd’une instruction LM par le micro-code

Le micro-code (dont le rôle est d’exécuter le programme LM soumis) correspond au pseudo-algorithme suivant :

TantQue vrai Faire lire en mémoire centrale l'instruction à exécuter identifiée par son adressemodifier cette adresse pour pointer sur l'instruction suivanteidentifier le type de l'instruction par décodage de son code instructionextraire les arguments ou les lire en incrémentant l'adresseexécuter l'opération demandée

Fin

Page 35: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 35 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

à chaque lecture d’un mot de l’instruction, il convient d’incrémenter l’adresse mémorisée pour le « prochain mot- instruction ».

Séquencement par défaut

l’exécution de certaines instructions LM consiste entre autre à « re-modifier » cette adresse de « prochain mot- instruction ».

Saut, appel de fonction …

Séquencement du programme LM

Page 36: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 36 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Le micro-code est une boucle infinie.

il doit toujours y avoir un programme en cours d’exécution.

Permanence de l’interprétation

Page 37: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 37 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

au démarrage le programme chargé est souvent un gestionnaire de commande qui peut en lancer un autre comme suit :

chargement en mémoire

saut à son adresse de départ.

...le retour du programme lancé ramène à une partie

spécialisée du code du gestionnaire de commande qui le décharge et réactive le gestionnaire.

Le programmelancé s’exécute

Page 38: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 38 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Cela revient à lire le premier mot de l’instruction LM désirée en mémoire centrale et le stocker dans un registre de travail.

Identification ?

Récupération de l ’instruction

Lequel ?

Un registre dédié CO (Compteur Ordinal) sert à

mémoriser l’adresse de ce mot

Un registre dédié RI (Registre Instruction)

Page 39: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 39 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

...

...

Horloge

Mémoire deCommande

RAD

Registre µ-inst

Micro-codeMémoireCentrale

Processeur

RI

CO

µ-inst 0

RDO

µ-inst 2

...

x Inst LM

...

ProgrammeLM

x

µ-inst0 et 1

Page 40: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 40 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Par défaut un programme LM se poursuit en séquence, c’est à dire que la prochaine instruction à exécuter est la suivante en mémoire centrale.

A chaque lecture d’un mot de l’instruction LM, il convient donc d’incrémenter le compteur ordinal CO de la longueur d’un mot pour qu’à la fin il « pointe » bien la prochaine instruction.

Séquencement par défaut

Page 41: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 41 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Câblé

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Décodage du champ « code instruction ».

Identification du type de l’instruction

Gain de tempsComplexité matérielle accrue

Micro-codé

Succession de : test du bit gauche de RI (saut si N) + décalage à gauche de RI

Page 42: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 42 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

...

...Horloge

RAD

RI

RDO

Mémoire deCommande

8

Incrémenteur

Décod. 8b

MUX 2x8

Micro-

SéquenceurN

MCO

a

<< 1

Registre µ-inst

Saut si N

Adressede saut

Instruction fondamentale :

Tester RI et le décaler; si N sauter en ...

Décodage micro-codé

Page 43: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 43 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Squelette du micro-code de décodage* RI

T&D† RI; SI N aller en e1 ???T&D RI; SI N aller en e010??

T&D RI; SI N aller en e00100?

… exec inst 000000

e001 … exec inst 001 001

e01 T&D RI; SI N aller en e01101?

… exec inst 010 010

e011 … exec inst 011 011

e1 T&D RI; SI N aller en e111??

T&D RI; SI N aller en e10110?

… exec inst 100 100

e101 … exec inst 101 101

e11 T&D RI; SI N aller en e11111?

… exec inst 110 110

e111 … exec inst 111 111

* ex simpliste pour 8 instructions LM. † Tester et Décaler

Page 44: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 44 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Pas de modification du processeur

Lourd en temps et en µ-instructions.

* pour N = 2n instructions LM.

n cyclespour chaquedécodage *

2n-1 = N-1µ-instructionsde décodage *

Page 45: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 45 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

...

...

Horloge

RI

Mémoire deCommande

8

Incrémenteur

Décod. 8b

MCO

Adresses de saut aux blocsde traitement des instructions LM

… …

MUX 2x8

Micro-

Séquenceur

Tamp B

Ii

IN

I1

Décodeur

Décodage câblé, une solution

Registre µ-inst

MUX 2x8

Page 46: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 46 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurµ-code & prog LMstructures des LMarchitecture du µ-code

Intérêts

décodage en 1 cycle !

gain de N-1 µ-instructions de décodage*

Inconvénient relatif

complexité / coût

décodeur n bits + multiplexeur 2x8 bits*

N registres 8 bits*

1 bit de plus par µ-instruction

* pour N = 2n instructions LM.

Page 47: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 47 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Chapitre III

Instructions LM

Organisation de la mémoire

Manipulation des données

Rupture du séquencement par défaut

Page 48: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 48 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Quand un programme s’exécute, ses instructions comme ses données sont en mémoire centrale.

Plusieurs façons de gérer cette cohabitation existent.

Vision monobloc

Cohabitation instructions LM / données en mémoire centrale

Partition

Un seul espace pour code et données

Un bloc mémoire réservé au codeUn autre réservé aux données

Page 49: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 49 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Vision monobloc

MémoireCentraleT-1

C O D E

&

D O N N E E S

0

Un seul espace pour code et données

organisation à la charge du programmeur

Accès lecture / écriture partout

possibilité de code auto-modifiant(ajout, suppression, modification d’instructions pendant l’exécution volontaire ou … accidentel !!! )

Page 50: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 50 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Vision « partitionnée »

MémoireCentraleT-1

D O N N E E S

Deux blocs distincts pour code et données

« Pointés » par 2 registres dédiés du processeur

un espace d’adressage distinct par blocC O D E

0

Page 51: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 51 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Relogeabilité aisée du programme par modification des registres dédiés au « pointage » des 2 blocs.

Possibilité de choix implicite de l’espace d’adressage selon l’instruction

blocage de l’auto-modification : code avant données en mémoire

écritures mémoire toujours dans le bloc de données

Page 52: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 52 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

On distingue généralement les données « statiques » des données « dynamiques » .

Vie(s) provisoire(s) et éventuellement multiplesnaissance et mort en cours d’exécution

Données « éphémères » ou « temporaires »

Durée de vie égale au programme :naissance = chargement du programmemort = déchargement

Données permanentes !

Page 53: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 53 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Partition « habituelle »

MémoireCentraleT-1

D . D Y N

C O D E

0

D . S T A

Bloc ou segment de données « dynamiques »

dépositaire de tous les objets temporaires ( paramètres de fonction, variables locales, résultats

de fonctions ou de calculs intermédiaires, tables dynamiques, cellules d’une liste, … )

Bloc ou segment de données « statiques »

dépositaire des objets permanents :( variables globales, variables locales statiques, constantes chaînes, … )taille et contenu connus à l’écriture du prog.dimensionné et initialisé à la compilation.

Bloc ou segment de code

instructions LM du programme

Page 54: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 54 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

la Pile (Stack)

&

le Tas (Heap)Objets à durée de vie temporaire et

imprévisible par le compilateur :

tables dynamiques, cellules d’une liste, …

Objets à durée de vie temporaire et

prévisible et gérée par le compilateur :

paramètres de fonctionvariables locales

résultats de fonctions oude calculs intermédiaires ...

Les données dynamiques sont encore scindées en 2 groupes selon la « prévisibilité » de leur durée de vie.

Ces 2 groupes sont « gérés » par 2 structures qui se partagent le segment de données dynamiques :

mort avecla fonction

mort aprèsutilisation

Page 55: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 55 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Le Tas

Structure mémorisant :

l’espace global géré ( « Arène » ou « Tas » )

les zones déjà allouées dans cet espace.

répondant à des requêtes d’allocation ou de libération de zones.

généralement implantée comme bibliothèque du langage de haut niveau ( malloc & free en C, … )

MémoireCentrale D

ON

NE

ES

DY

NA

MIQ

UE

S

D S

Page 56: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 56 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

La Pile « système » ou « machine »

Structure de pile mémoire de mots

LIFO : Last In First Out

sommet pointé par un registre dédié PP

instructions spécialisées :empiler une valeur a PUSH adépiler dans un objet O POP O

MémoireCentrale D

ON

NE

ES

DY

NA

MIQ

UE

S

D S

PP

dernier empilé ou premier libre

Pointeur de PileStack Pointer (SP)

Page 57: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 57 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

pile montante

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

PP

pile descendante

2 implantations possibles :

PPChoix habituelcf. appels de

fonctions

Fond de piled’adresse plus basse

que le sommet

Fond de piled’adresse plus haute

que le sommet

Occu

Ht

bas

Vid

e

Occu

Ht

bas

Vid

e

Page 58: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 58 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

écrire a au sommet de la pile et modifier PP

pile montante*

Mem[ PP+=LGMOT ] = a

Occu

Vid

e

PP

Occu

Vid

e

PP

a

pile descendante*

Mem[ PP-=LGMOT ] = a

PP

Occu

Vid

e

PP

Occu

Vid

e

a

* exemple avec PP « pointant » le dernier entré

PUSH a

Page 59: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 59 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

pile descendante*

O=Mem[PP]; PP+=LGMOT

PP

Occu

Vid

e

PP

Occu

Vid

e

a

O...

Oa

pile montante*

O=Mem[PP]; PP-=LGMOTO

ccup

éV

ide

PP

Occu

Vid

e

PP

a

O...

Oa

* exemple avec PP « pointant » le dernier entré

POP O

lire le sommet, stocker la valeur lue dans O et modifier PP

Page 60: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 60 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Allocation, utilisation, et libération aisée d’objets « éphémères » (ie. à usage unique) :

résultats de fonctions ou de calculs intermédiaires

utilisation massive par les compilateurs pour les calculs complexes et les valeurs de retour des fonctions

Mal adapté aux paramètres ou variables locales des fonctions.

extension de la structure de pile, « environnements »

Page 61: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 61 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

sinon

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Environnement (Stack Frame) :

bloc dynamique inclus dans la pile

identifié par son adresse de débutoù commence son suivant

au sommet de la pile se termine

S’il est ledernier

Page 62: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 62 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Pile système avec environnements

Les environnements sont chaînés : chacun dispose dans son premier mot d’un pointeur sur son précédent.

le dernier, dit « environnement courant » est pointé par un registre dédié PLP

instructions spécialisées :créer un nouvel env. NEWENVdétruire l’env. courant DESTENV

Pointeur Local de PileStack Frame Pointer (SFP)

PP

Vid

e

Env.préc.

Env.courant

PLP

Page 63: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 63 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

empiler PLP et faire pointer PLP sur le dernier entré.

exemple avec pile descendante et PP « pointant » le dernier entré

Vid

e

Env.courant

PP

PLP

Env. courant

Vid

e

Env.préc.

PLP

PP

Chaînage sur le courant Nouveau courant

« PUSH PLP »; PLP=PP

Mem[PP-=LGMOT]=PLP; PLP=PP

NEWENV

Page 64: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 64 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

vider environnement et dépiler dans PLP.

Vid

e

Env.courant

PP

PLP

Vid

e

Env.préc.

PLP

PP

Env.courant

PP=PLP; « POP PLP »

PLP=Mem[PP=PLP]; PP=PP+LGMOT

exemple avec pile descendante et PP « pointant » le dernier entré

Libérer tout le blocsauf le 1er mot

Précédent courantrestauré comme avant NEWENV

DESTENV

Page 65: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 65 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Gestion aisée des objets liés à un appel de fonction

paramètres et variables locales

un environnement au moins par appel

paramètres et variables locales situés aux mêmes endroits dans l’environnement à chaque appel.

utilisation massive par les compilateurs pour les appels de fonction.

NEWENV & DESTENV sont souvent absentes du LM ; elles sont alors « mimées » par le compilateur selon :

NEWENV : PUSH PLP DESTENV : MOVE PLP,PPMOVE PP,PLP POP PLP

Page 66: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 66 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Les données d’entrée d’une instruction peuvent être : des registres des variables ou objets situés en mémoire centrale des valeurs numériques constantes

Les résultats des instructions peuvent être stockés dans : des registres des variables ou objets situés en mémoire centrale

Modes d’adressage LM

Page 67: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 67 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Les constantes numériques « adresses »  des instructions LM doivent permettre respectivement de récupérer les données d’entrée et de stocker les résultats.

Ceci ne peut être possible que si l’on sait comment ces « adresses » LM permettent d’accéder aux opérandes.

Modes d’adressage

Implicitesfixés définitivementpour cette instruction

Expliciteschamps modes

d’adressage dans le 1er

mot de l’instruction

Page 68: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 68 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

simple et rapide rien d’autre à décoder que le code instruction accès aux opérandes stéréotypés donc efficaces

rigide toute autre combinaison de modes d’adressage est une

autre instruction combinaison non prévue débrouille

bien quand très peu de combinaisons réellement utiles !

Modes d’adressage implicites

Page 69: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 69 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

complexe et tendance à être lent nécessité de décodage des modes d’adressage code d’accès aux opérandes traitant tous les modes

quasi-nécessité de le « factoriser »µ-code assez complexe

souple toutes les combinaisons de modes d’adressage sont

intrinsèquement gérées par cette instruction

bien si beaucoup de combinaisons réellement utiles !

Modes d’adressage explicites

Page 70: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 70 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Adressage Immédiat

Adresse = valeur constante de l’opérande

résultat*‡opérande d’entrée*†

Rien à Fairevaleur déjà dans A

T-1

Av

Page 71: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 71 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Décoder A RiRi = C

opérande d’entrée*†

Décoder A RiA = Ri

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Adressage Registre

Adresse = n° d’un registre libre servant d’opérande

Ai

R0

Ai

R0

...Ri

...Riv

Cv

Page 72: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 72 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Mem [A] = C

opérande d’entrée*†

A = Mem [A]

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Aa

Aa

Adressage Direct

Adresse = adresse d’un mot mémoire servant d’opérande

a v a

Cv

Page 73: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 73 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Décoder A RiMem [Ri] = C

opérande d’entrée*†

Décoder A RiA = Mem [Ri]

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Ai

Ai

a v a

Cv

Adressage Indirect par registre

Adresse = n° d’un registre libre pointant un mot mémoire servant d’opérande

R0

...Ria

R0

...Ria

Page 74: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 74 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

A = Mem [A]Mem [A] = C

opérande d’entrée*†

A = Mem [A]A = Mem [A]

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Ap

Ap

a v a

Cv

Adressage Indirect

Adresse = adresse d’un mot mémoire pointant un mot mémoire servant d’opérande

p a p a

Page 75: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 75 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Mem [A+PLP] = C

opérande d’entrée*†

A = Mem [PLP+A]

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Ad

Ad

p + v d

Adressage Local

Adresse = décalage dans l’environnement courant d’un mot mémoire servant d’opérande

p p PLP

p

dPLP

p

d

p + d

Cv

Page 76: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 76 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

A = Mem [PLP+A]Mem [A] = C

opérande d’entrée*†

A = Mem [PLP+A]A = Mem [A]

T-1 T-1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Ad

Ad

p + a d

Adressage Local Indirect

Adresse = décalage dans l’environnement courant d’un pointeur vers le mot mémoire servant d’opérande

p p PLP

p

dPLP

p

d

p + a d

a v a Cv

Page 77: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 77 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Décoder&décaler A RiMem [A+Ri] = C

opérande d’entrée*†

Décoder&décaler A RiA = Mem [A+Ri]

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Adressage Indexé

Adresse = 2 champs : adresse d’une table mémoire n° de registre contenant l’index

T-1

At i

R0

...Rid

t d

T-1

At i

R0

...Rid

t d

t + v d

t + d

Cv

Page 78: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 78 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

résultat*‡

Décoder&décaler A RiMem [Ri+A] = C

opérande d’entrée*†

Décoder&décaler A RiA = Mem [Ri+A]

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

* « adresse » supposée préalablement lue et stockée dans le registre A† but : récupération de la valeur de l’opérande dans A‡ but : stockage dans l’opérande de C

Adressage par Registre de Base

Adresse = 2 champs : index dans un bloc mémoire n° de registre « pointant » le bloc

T-1

Ad i

R0

...Rib

b d

T-1

Ad i

R0

...Rib

b d

Cv

b + v d

b + d

Page 79: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 79 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Instructions de transfert de données

opération a = b par copie binaire du mot b dans le mot a.

En LM 2 ou 3 adresses une instruction à modes d ’adressage explicites suffit :

MOVE b,a ( a = b )

En LM 1 adresse, le transfert passe par l’accumulateur et il faut donc 2 instructions à mode d’adressage explicite :

LOAD b ( Accu = b )

STORE a ( a = Accu )

Page 80: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 80 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Instructions de calcul

Classe Type(s) Dyadiques Monadiques

arithmétique entiers ADD, SUB, MUL,(flottants) DIV, MOD OPP

bit à bit [entiers] AND, OR, XOR NOT

décalages [entiers] LSHIFT, RUSHIFT,RSSHIFT

décalage à droitenon signé

décalage à droitesigné

Page 81: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 81 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Ecritures des calculs selonle nombre d’adresses permises

opérations dyadiques ex pour l’addition

LM 3 adresses ADD a, b, c // c = a+b

LM 2 adresses MOVE a, c // c=aADD b,c // c += b

LM 1 adresse LOAD a // Acc = aADD b // Acc += bSTORE c // c = Acc

opérations monadiques ex pour l’opposé

LM 2 ou 3 adresses OPP a, b // b=-a

LM 1 adresse OPP a // Acc = -aSTORE b // b = Acc

Page 82: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 82 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Données de taille non unitaire

Il est souvent nécessaire de manipuler des données dont la taille est différente du mot mémoire.

ex en C sur machine 32 bits : char, short, double, ...

Or, les instructions LM précédentes et le processeur ne manipulent que des mots.

Ces données sont plus délicates à manipuler.

Page 83: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 83 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Données multi-mots

Il est préférable de disposer d’une UAL calculant sur la largeur totale (« algorithmique câblée » ex processeur 16/32

bits).

récupérationstockagetransfertsopérations bit à bit

mot par mot

décalages

gestion des bits « changeant de mot »

arithmétique entière

algorithmique « posant les opérations » en base 2 taille mot

a1 a0b1 b0

… +-*/ …

Page 84: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 84 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Données plus courtesque le mot

arithmétique entièredécalages opérations bit à bit calculs naturels de l’UAL

transferts

stockage

récupérationrécupération du mot où l’on

doit stocker la donnée ; « combinaison » et stockage

1

?2

3

récupération du mot contenant la donnée et reformatage

0 . . . 0? 1 2

récupération / stockage

Il est préférable de travailler avec des mots ! ( int en C )

Page 85: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 85 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Calculs complexes

enchaînement de calculs dont les résultats servent d'opérandes aux suivants.

stockage des résultats intermédiaires jusqu'à utilisation comme opérande.

objets éphémères non nommés pouvant être stockés de façon simplifiée sur la pile.

Page 86: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 86 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Problème :

expression ( ex : "- a + b * (a - c) + d" )

ordonnancement des calculsinstructions LM réalisant le calcul

Solution : « notation polonaise inverse »

1 convertir l’expression en arbre de calcul2 « traiter » l’arbre en profondeur d’abord

a - b a c - * + d +

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Traitement automatisé des expressions de calcul complexes

père après ses fils

d

*

+

+

c

-b

a

-

a

Page 87: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 87 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Création de l’arbre de calcul

Mécanisme récursif suivant :

si expression réduite à une valeur alors

arbre résultat feuillesinon

identifier les opérateurs les moins prioritaires parmi ceux-là, choisir celui à droite ou à gauche

selon la règle de regroupement en vigueur. arbre résultat :

valeur

opérateur

arbresous-expression

gauche

arbresous-expression

droite

si opérateurbinaire

Page 88: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 88 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

« Traitement » de l’arbre

Traitement en profondeur d’abord :

feuille : empiler sa valeur

nœud : dépiler ses opérandescalculer le résultatempiler le résultat

b

-

a

PUSH aPUSH bPOP Rg:0POP Rg:1SUB Rg:0 Rg:1 Rg:0PUSH Rg:0

Page 89: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 89 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

d

*

+

+

c

-b

a

-

a

...PUSH a aPOP Rg:0 -OPP Rg:0 Rg:0PUSH Rg:0PUSH b bPUSH a aPUSH c cPOP Rg:0 -POP Rg:1SUB Rg:1 Rg:0 Rg:0PUSH Rg:0POP Rg:0 *POP Rg:1MUL Rg:0 Rg:1 Rg:0PUSH Rg:0POP Rg:0 +POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0PUSH d dPOP Rg:0 +POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0...

-a

a

-ab

-aba

-a+b(a-c)

-abac

-ab

a-c

-a+b(a-c)+d

-ab(a-c)

-a+b(a-c)d

Evolution de la pile à l’exécution

Code généréParcoursde l’arbre

Page 90: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 90 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementOptimisations simples à posteriori

...

OPP a Rg:0PUSH Rg:0PUSH bPUSH a

POP Rg:1SUB Rg:1 c Rg:0

POP Rg:1MUL Rg:0 Rg:1 Rg:0

POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0

POP Rg:1ADD d Rg:1 Rg:0PUSH Rg:0...

...PUSH aPOP Rg:0OPP Rg:0 Rg:0PUSH Rg:0PUSH bPUSH aPUSH cPOP Rg:0POP Rg:1SUB Rg:1 Rg:0 Rg:0PUSH Rg:0POP Rg:0POP Rg:1MUL Rg:0 Rg:1 Rg:0PUSH Rg:0POP Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0PUSH dPOP Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0...

...

OPP a Rg:0PUSH Rg:0PUSH b

SUB a c Rg:0

POP Rg:1MUL Rg:0 Rg:1 Rg:0

POP Rg:1ADD Rg:0 Rg:1 Rg:0

ADD d Rg:0 Rg:0PUSH Rg:0...

Page 91: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 91 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Instructions de branchement

Ces instructions permettent au programmeur de rompre le séquencement par défaut de son programme.

Cette rupture du séquencement par défaut est obtenue par modification de CO lors du traitement de l’instruction.

Ces instructions se scindent en 3 familles : sauts inconditionnels sauts conditionnels lancement de sous-programme

Page 92: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 92 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Sauts inconditionnels

On distingue ici le saut à une adresse absolue

GOTO a ( CO = a )

du saut à une adresse relative à celle de l’instruction courante

JUMP n ( CO += n )

Page 93: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 93 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Sauts conditionnels

Ces instructions ne produisent un saut que si une condition paramètre est réalisée.

Sinon le programme se poursuit en séquence.

tests instructions conditionnelles, boucles, ...

La condition paramètre dépend de la structure matérielle du processeur : « dispose t’il d’un registre d’état ? » 

Page 94: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 94 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Registre d’état

Matériel registre RE de mémorisation des fils d’état de l’UAL. mémorisation commandée par RMI. alimente un micro-séquenceur modifié

selon le LM la mémorisation dans RE est demandée lors de la µ-instruction de calcul final

de toutes les instructions de calculou d’une instruction spéciale COMP a b

qui calcule a-b sans le stocker

N

ZUAL n b

Registre µ-inst

RE

micro-séquenceur

Page 95: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 95 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Les instructions de sauts conditionnels sont alors

ONGOTO cnd a ( si RE vérifie cnd alors CO = a )

ONJUMP cnd n ( si RE vérifie cnd alors CO += n )

Les conditions (cnd) correspondent à des tests des bits de RE

cnd test sur RE0 Z=01 Z=12 N=03 N=1… retenue, …

COMP a bONGOTO 1 E

// a != b

E: // a == b

SUB b a cONGOTO 1 E

// a != b

E: // a == b

LM avec COMP LM sans COMPexemples

Page 96: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 96 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Les instructions de sauts conditionnels doivent recevoir, en plus du code cnd, le mot à tester :

ONGOTO cnd m a ( si m vérifie cnd alors CO = a )

ONJUMP cnd m n ( si m vérifie cnd alors CO += n )

SUB b a cONGOTO 1 c E

// a != b

E: // a == b

exemple

Machine sans registre d’état

En LM 1 le mot m est l’accumulateur

ONGOTO cnd a

ONJUMP cnd n

Page 97: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 97 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeur

Tests complexes

Il est utile de pouvoir écrire des tests complexes composés de :

comparaisons : < , >, <=, >=, ==, != opérations booléennes : et, ou, non

les valeurs de retour de tous ces opérateurs et les paramètres des opérateurs booléens sont de type booléen, un registre entier évalué selon :

Faux valeur 0 Vrai valeur non nulle

Tous ces opérateurs sont alors insérés classiquement dans les arbres de calcul.

Organisation mémoireDonnéesRupture séquencement

Page 98: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 98 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeur

Opérateurs de comparaisons

b

==

a

Organisation mémoireDonnéesRupture séquencement

b

>=

a

... // évaluation de aPUSH ...... // évaluation de bPUSH ...POP Rg:0 POP Rg:1COMP Rg:0 Rg:1ONJUMP 1 Im:4PUSH Im:0JUMP Im:2PUSH Im:1

1 : Z == 1

... // évaluation de aPUSH ...... // évaluation de bPUSH ...POP Rg:1 POP Rg:0COMP Rg:0 Rg:1ONJUMP 3 Im:4PUSH Im:1JUMP Im:2PUSH Im:0

3 : N == 1

Exemples avec REet LM avec COMP

b-a a-b

Page 99: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 99 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Opérateur unaire

Opérateurs binaires

évaluation classique évaluation préalable des 2 opérandes

évaluation « paresseuse »évaluation de asi a absorbant (Vrai pour ou, Faux pour et)

conclure (empiler a)sinon évaluer b et conclure (empiler b)

Instructions LM Exécution prog LMLe Micro-processeur

Opérateurs booléens

non

a

Organisation mémoireDonnéesRupture séquencement

... // évaluation de aPUSH ...POP Rg:0 ONJUMP 1 Rg:0 Im:4PUSH Im:0JUMP Im:2PUSH Im:1 1 : Z == 1

Exemple sans RE

a

arbre b non évalué gain de temps effets de bord !!!

Page 100: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 100 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementExemples sans RE

évaluation paresseuse

b

et

a

... // évaluation de aPUSH ...POP Rg:0 ONGOTO 1 Rg:0 E... // évaluation de bPUSH ...POP Rg:0ONJUMP 1 Rg:0 Im:4PUSH Im:1JUMP Im:2

E: PUSH Im:0

b

ou

a

... // évaluation de aPUSH ...POP Rg:0 ONGOTO 0 Rg:0 E... // évaluation de bPUSH ...POP Rg:0ONJUMP 0 Rg:0 Im:4PUSH Im:0JUMP Im:2

E: PUSH Im:1

Page 101: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 101 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

partie de code appelée par une instruction,

pouvant se « rebrancher » automatiquement sur l'instruction suivant son appel.

instructions spécialisées :

appel CALL a

branchement sur le code du sous-programme (adr a)« pointage » de l'instruction suivant l'appel.

retour RETURN

branchement à l’adresse mémorisée par l'appel.

Sous-programmes

Page 102: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 102 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Mémorisation de l’adresse de retour

1. mot mémoire ou registre fixe dédié un seul sous-programme en cours à un moment t donné.

2. chaque sous-programme réserve un mot de son code autant de sous-programmes différents en cours que voulus un seul appel en cours possible pour chaque sous-programme

3. adresse de retour empilée à chaque appel

autant d'appels de sous-programme (identiques ou non) que voulus

récursivité possible si données locales différentes à chaque appel !

Mécanisme d’appel

Page 103: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 103 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Données locales

Un sous-programme a besoin de données privées dites locales en plus des données du programme appelant.

Récursivitéplusieurs appels en cours simultanément

chaque appel doit disposer de son lot des données locales indépendant des lots des autres appels.

Ce lot de données locales est appelé « environnement d'appel » du sous-programme.

Une solution élégante de gestion de ces environnements d'appel utilise les environnements de la pile.

Page 104: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 104 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

« PUSH CO … »; « NEWENV »; « GOTO a »;

Mem[PP-=LGMOT]= CO // CO déjà incrémenté !!

Instructions LM Exécution prog LMLe Micro-processeur

CALL a

empiler CO+2*LGMOT créer un nouvel environnement pour cet appel sauter au début du sous-programme (i.e. en a).

exemple avec pile descendante et PP « pointant » le dernier entré

Organisation mémoireDonnéesRupture séquencement

. . .

Env crt PP

PLP

COCALL

a

Ss-prg.

. . .

Env prc PP

PLP

COCALL

a

Ss-prg.

. . .

Env prc PP

PLP

COCALL

a

Ss-prg.

. . .

Env crt PP

PLP

COCALL

a

Ss-prg.

Page 105: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 105 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Les premières instructions d’un sous-programme visent souvent à :

1. Réserver de la place pour les variables locales dans l’environnement

d’appel ( SUB PP, taille totale, PP )

2. Initialiser leur contenu (optionnel)

Données locales

Les données locales se trouvent dans l’environnement créé pour cet appel.

Chaque appel disposera de son propre jeu de données locales.

Var.locales

. . .

Env prc PP

PLP

COCALL

a

Ss-prg.SUB PP...

Page 106: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 106 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

« DESTENV »; « POP CO »;

Instructions LM Exécution prog LMLe Micro-processeur

RETURN

détruire l’environnement courant dépiler dans CO (branchement en retour)

exemple avec pile descendante et PP « pointant » le dernier entré

Organisation mémoireDonnéesRupture séquencement

Var.locales

. . .

Env prc PP

PLP

COCALL

a

Ss-prg.RETURN

. . .

Env crt PP

PLP

COCALL

a

Ss-prg.RETURN

. . .

Env crt PP

PLP

COCALL

a

Ss-prg.RETURN

Page 107: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 107 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Parfois le comportement d’un sous-programme est paramètré.

Ce sous-programme est alors appelé « Procédure ».

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Chaque appel d’une procédure doit disposer de ces propres paramètres.

Les paramètres font donc partie de l’environnement d’appel au sens large.

Ils doivent être empilés.

Procédures

Page 108: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 108 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Var.locales

Paramètres variables impossibles :

l’espace occupé par les paramètres est variable

les variables locales suivent les paramètres et ne peuvent être localisées précisément.

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

1. Empilage dans environnement d’appel

Gestion des paramètres

x: «PRECALL»empilage paramètres

y: GOTO a.

«PUSH y+2»; «NEWENV»

Résolution des expressions

ex C/C++ : printf(), ...

ad retour

ab...

F(a,b,…)

Page 109: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 109 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement2. Empilage juste avant l’appel

...empilage paramètresCALL adépilage paramètres

Résolution des expressions

Var.locales

…ba

ad retour

Variables locales adressables en local.

Paramètres hors environnement d’appel mais adressables en local.

Paramètres variables avec paramètres fixes à gauche adressables si empilés de droite à gauche.

Le code appelant doit dépiler les paramètresF(a,b,…)

Page 110: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 110 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

d1

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement3. Empilage juste avant l’appel dans

un environnement réservé

…NEWENVempilage paramètresCALL a

Résolution des expressions

Variables accessibles en local.

Paramètres accessibles : en local avec décalage d1 directement en Mem[PLP]+d2

Paramètres variables possibles pour les 2 sens d’empilage.

Instruction de retour RETPROC détruisant aussi l’environnement des paramètres.

Var.locales

…ba

ad retour

F(a,b,…)

d2

Page 111: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 111 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

« DESTENV »; « POP CO »; « DESTENV »;

Instructions LM Exécution prog LMLe Micro-processeur

RETPROC

détruire l’environnement d’appel dépiler dans CO (branchement en retour) détruire l’environnement des paramètres

exemple avec pile descendante et PP « pointant » le dernier entré

Organisation mémoireDonnéesRupture séquencement

Var.locales

. . .

PP

PLP

COCALL

a

Ss-prg.

RETPROC

param.

. . .

PP

PLP

COCALL

a

Ss-prg.

RETPROC

param.

. . .

PP

PLP

COCALL

a

Ss-prg.

RETPROC

param.

. . .

PP

PLP

COCALL

a

Ss-prg.

RETPROC

Page 112: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 112 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Un sous-programme ou une procédure qui « retourne une valeur » (i.e. qui fournit un résultat non nommé) est appelé(e) « Fonction ».

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencement

Ce résultat est réservé par le code appelant sur la pile juste avant l’environnement des paramètres ou, en l’absence de paramètres, juste avant l’adresse de retour.

La fonction doit le renseigner (le construire) avant son retour par RETURN ou RETPROC.

Il est accessible en local (d1) si paramètres fixes ou absents directement en Mem[PLP]+d2

Fonctions

d2résultat

Var.locales

param.

ad retour

d1

d1résultat

ad retour

Var.locales

Page 113: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 113 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion

Une fonction peut être considérée comme une opération à opérandes multiples voire variables.

Son lancement peut alors être géré comme un opérateur.

Instructions LM Exécution prog LMLe Micro-processeurOrganisation mémoireDonnéesRupture séquencementOpérateur ( ) : appel de fonction

exemple : printf ("%s %d\n",s+strlen(b),i);

"%s %d\n" +

s

strlen

b

i

( )

( )

[ 1 réservez résultat sur la pile ][ 2 NEWENV ]

[ 3 empiler les paramètres par évaluation des arbres fils de droite à gauche (ou inversement) ]

4 lancer la fonction CALL

printf

Le résultat éventuel est construit

Page 114: IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques

Architecture & Programmation, 114 IUT Léonard de Vinci, Reims Dpt Info, Y.Remion