La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Architecture & Programmation

Présentations similaires


Présentation au sujet: "Architecture & Programmation"— Transcription de la présentation:

1 Architecture & Programmation
Processeur, micro-code, assembleur, langage machine, concepts « programmatiques » de haut niveau

2 Architecture & Programmation, 2
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, ...). Architecture & Programmation, 2

3 Architecture & Programmation, 3
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. Architecture & Programmation, 3

4 Architecture & Programmation, 4
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-codage traduction de concepts haut niveau Architecture & Programmation, 4

5 Chapitre I Analyse du micro-processeur
description générale bloc de traitement bloc de commande Architecture & Programmation, 5

6 Fonctionnement global
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Fonctionnement global 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 Architecture & Programmation, 6

7 Architecture & Programmation, 7
Bus A Bus C Bus B N Z D traitement commande 16 Horloge 3 4 2 1 256 µ-instructions 33 bits Mémoire de Commande Décod. 4b 8 33 256 Incrémenteur Ý Ü Þ ß WR RD Bus d’adresses Bus de données SO Décod. 8b Valideur 16b UAL n b MCO EC MUX 2xn Décaleur MS Micro- Séquenceur Tampon A Tampon B CO AC PP LGMOT A B C E F RI RIT PLP dispo RDO Processeur Mémoire centrale RAD µ-inst 0 µ-inst 255 Registre µ-inst n U SA MUX 2x8 Architecture & Programmation, 7

8 Architecture & Programmation, 8
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande EC 16 Valideur 16b Décod. 4b Ü Bus C Bus A Bus B 16 Décod. 4b Ü ß CO ß ß Mémoire de travail AC Décod. 4b Ü PP 16 PLP ... F ß ß 4 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 Architecture & Programmation, 8

9 Architecture & Programmation, 9
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Bus C Bus A Bus B ß ß Tampon A Tampon B RAD Ü 2 ß ß Registre µ-inst MUX 2xn A Calcul ß N µ-Séqu. Ý Z Ý U UAL n b ß D Décaleur RDO Ü 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. Architecture & Programmation, 9

10 Architecture & Programmation, 10
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Bus C 3 4 Bus d’adresses Tampon B RAD n Ü Ü Registre µ-inst MUX 2xn Transferts avec la mémoire centrale Ý Ý Bus de données n RDO Ü SA SO RD WR 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] ) Architecture & Programmation, 10

11 Architecture & Programmation, 11
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande 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. Architecture & Programmation, 11

12 Architecture & Programmation, 12
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande 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 Architecture & Programmation, 12

13 Architecture & Programmation, 13
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Signaux de commande 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 C WR écriture mémoire Mem[RAD]=RDO RD lecture mémoire RDO= Mem[RAD] Architecture & Programmation, 13

14 Architecture & Programmation, 14
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande 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 : Tampon A 1 : RDO 0 : -a 1 : b+a 2 : b-a 3 : a 4 : non a 5 : b et a 6 : b ou a 7 : b xor a avec a = Tampon A ou RDO b = Tampon B 0 : pas de décalage 1 : décalage à droite non signé 2 : décalage à gauche 3 : décalage à droite signé Architecture & Programmation, 14

15 Architecture & Programmation, 15
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Séquencement du cycle 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 Architecture & Programmation, 15

16 Architecture & Programmation, 16
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande MCO ß Mémoire de Commande Décod. 8b 256 Ü µ-inst 0 Mémoire de commande 256 µ-instructions ß ß 33 bits Ü µ-inst 255 ß 1 33 256 registres « ROM » 33 bits stockage des micro-instructions composant le micro-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 Registre µ-inst Architecture & Programmation, 16

17 Contrôle du séquencement
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Þ Ü MUX 2x8 Incrémenteur ß Ü MCO Contrôle du séquencement du micro-code ß Mémoire de Commande Décod. 8b Ý Registre µ-inst 4 8 Micro- Séquenceur N MS Z UAL n b 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 Architecture & Programmation, 17

18 Architecture & Programmation, 18
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Signaux de commande mémoire de commande : 0 bits chargement de Reg µ-inst automatique contrôle : bits adS adresse 8 bits de saut éventuel ou forcé MS commande 2 bits du Micro-séquenceur 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 Architecture & Programmation, 18

19 Architecture & Programmation, 19
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Séquencement du cycle 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. Architecture & Programmation, 19

20 Structure binaire des micro-instructions
Le Micro-processeur Exécution prog LM Instructions LM description générale bloc de traitement bloc de commande Structure binaire des micro-instructions 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. A MS U D S A S O W R R D E C adC adA adB adS 1 2 3 4 8 33 bits Architecture & Programmation, 20

21 Chapitre II Exécution d’un programme LM
micro-code et programme LM structures des LM architecture du micro-code Architecture & Programmation, 21

22 Programme en cours d’exécution
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Cf. cours « Bases de la programmation » Programme en cours d’exécution instructions et données en mémoire centrale chargées et exécutées une à une par le processeur Instructions au format binaire définissant le LM programme LM Rôle du « micro-code » programme embarqué dans le processeur en mémoire de commande Architecture & Programmation, 22

23 Programme LM Micro-code ... Le Micro-processeur Exécution prog LM
Instructions LM µ-code & prog LM structures des LM architecture du µ-code Programme LM Micro-code Mémoire Centrale Processeur 1. chargement d’une instruction LM ... Inst LM Mémoire de Commande ... Ü 2. décodage puis exécution de cette instruction 1. ß Horloge Ü ß Ü RAD Ü ß ß Registre µ-inst ß Ý Ý ß RDO Ü Architecture & Programmation, 23

24 Comparaison micro-code / programme LM
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Comparaison micro-code / programme LM Micro-code Programme LM Rôle Format binaire des instructions Emplacement des instructions Emplacement des données Taille du programme Volume des données Exécuter tout programme LM 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 Architecture & Programmation, 24

25 Partage des registres de travail
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture 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 Architecture & Programmation, 25

26 Définition du Langage Machine
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Définition du Langage Machine Le langage machine (LM) associé à un micro-code est caractérisé par les formats binaires des diverses instructions reconnues et exécutées par ce micro-code. Architecture & Programmation, 26

27 Le LM est donc le lien entre micro-code et programmes :
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code 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. vérifiant ce format binaire décodé et exécuté Architecture & Programmation, 27

28 Architecture & Programmation, 28
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture 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. Architecture & Programmation, 28

29 Format général d’une instruction LM
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Format général d’une instruction LM une instruction LM occupe un à plusieurs mots mémoire consécutifs scindés en plusieurs champs de bits . . . 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 Architecture & Programmation, 29

30 Architecture & Programmation, 30
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Adresses une instruction possède classiquement de 0 à 3 opérandes ex : 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. Architecture & Programmation, 30

31 Architecture & Programmation, 31
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code par souci de compromis entre simplicité et puissance des instructions, les LM peuvent limiter le nombre maximum d’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 Architecture & Programmation, 31

32 Architecture & Programmation, 32
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code et même de : Langage machine 1 adresse on utilise un registre dédié pour toutes les adresses manquantes : a = b acc=b ; a = acc; a = b+c acc=b ; acc += c ; a = acc Accumulateur Architecture & Programmation, 32

33 Implantation mémoire des instructions LM
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Implantation mémoire des instructions LM 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. mots suivants facultatifs X + 3 mots adresse 3 X + 2 mots adresse 2 X + 1 mot adresse 1 X code instruction divers premier mot adresses mémoire Architecture & Programmation, 33

34 Mécanisme général de traitement d’une instruction LM par le micro-code
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Mécanisme général de traitement d’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 adresse modifier cette adresse pour pointer sur l'instruction suivante identifier le type de l'instruction par décodage de son code instruction extraire les arguments ou les lire en incrémentant l'adresse exécuter l'opération demandée Fin Architecture & Programmation, 34

35 Séquencement du programme LM
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Séquencement du programme LM à 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 … Architecture & Programmation, 35

36 Permanence de l’interprétation
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Permanence de l’interprétation Le micro-code est une boucle infinie. il doit toujours y avoir un programme en cours d’exécution. Architecture & Programmation, 36

37 saut à son adresse de départ. ...
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture 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 programme lancé s’exécute Architecture & Programmation, 37

38 Récupération de l ’instruction
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Récupération de l ’instruction 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 ? Lequel ? Un registre dédié CO (Compteur Ordinal) sert à mémoriser l’adresse de ce mot Un registre dédié RI (Registre Instruction) Architecture & Programmation, 38

39 Architecture & Programmation, 39
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Programme LM Micro-code Mémoire Centrale Processeur µ-inst 0 ... x Inst LM CO Mémoire de Commande ... x Ü RI ß µ-inst 2 Horloge Ü ß Ü RAD Ü ß ß Registre µ-inst ß Ý Ý µ-inst 0 et 1 ß RDO Architecture & Programmation, 39

40 Séquencement par défaut
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Séquencement par défaut 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. Architecture & Programmation, 40

41 Identification du type de l’instruction
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Identification du type de l’instruction Décodage du champ « code instruction ». Câblé Micro-codé Succession de : test du bit gauche de RI (saut si N) + décalage à gauche de RI Gain de temps Complexité matérielle accrue Architecture & Programmation, 41

42 Architecture & Programmation, 42
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Décodage micro-codé Instruction fondamentale : Tester RI et le décaler; si N sauter en ... ... Þ Ü MUX 2x8 RI Incrémenteur ß Ü MCO Horloge ß Mémoire de Commande Décod. 8b Ü RAD Ü Ý ß Registre µ-inst ß 8 a Micro- Séquenceur N Adresse de saut Ý ß Saut si N RDO << 1 Architecture & Programmation, 42

43 Squelette du micro-code de décodage* RI
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture 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 e01 0?? T&D RI; SI N aller en e ? … exec inst e … exec inst e01 T&D RI; SI N aller en e ? … exec inst e … exec inst e1 T&D RI; SI N aller en e11 1?? T&D RI; SI N aller en e ? … exec inst e … exec inst e11 T&D RI; SI N aller en e ? … exec inst e … exec inst * ex simpliste pour 8 instructions LM. † Tester et Décaler Architecture & Programmation, 43

44 Pas de modification du processeur
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Pas de modification du processeur Lourd en temps et en µ-instructions. * pour N = 2n instructions LM. n cycles pour chaque décodage * 2n-1 = N-1 µ-instructions de décodage * Architecture & Programmation, 44

45 Décodage câblé, une solution
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture du µ-code Décodage câblé, une solution ... Adresses de saut aux blocs de traitement des instructions LM … … I 1 I i I N RI Décodeur Þ Ü MUX 2x8 Þ MUX 2x8 Horloge Incrémenteur ß Ý Ü MCO Tamp B ß ß Mémoire de Commande ß Décod. 8b ß Ý Registre µ-inst 8 Micro- Séquenceur Architecture & Programmation, 45

46 Architecture & Programmation, 46
Le Micro-processeur Exécution prog LM Instructions LM µ-code & prog LM structures des LM architecture 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. Architecture & Programmation, 46

47 Chapitre III Instructions LM
Organisation de la mémoire Manipulation des données Rupture du séquencement par défaut Architecture & Programmation, 47

48 Cohabitation instructions LM / données en mémoire centrale
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Cohabitation instructions LM / données en mémoire centrale 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 Partition Un seul espace pour code et données Un bloc mémoire réservé au code Un autre réservé aux données Architecture & Programmation, 48

49 Architecture & Programmation, 49
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Vision monobloc Mémoire Centrale T-1 C O D E & N S 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 !!! ) Architecture & Programmation, 49

50 Vision « partitionnée »
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Vision « partitionnée » Mémoire Centrale T-1 D O N 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 bloc C O D E Architecture & Programmation, 50

51 Architecture & Programmation, 51
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 Architecture & Programmation, 51

52 Architecture & Programmation, 52
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement On distingue généralement les données « statiques » des données « dynamiques » . Durée de vie égale au programme : naissance = chargement du programme mort = déchargement Données permanentes ! Vie(s) provisoire(s) et éventuellement multiples naissance et mort en cours d’exécution Données « éphémères » ou « temporaires » Architecture & Programmation, 52

53 Partition « habituelle »
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Partition « habituelle » 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, … ) Mémoire Centrale T-1 D . Y N 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. D . S T A C O D E Bloc ou segment de code instructions LM du programme Architecture & Programmation, 53

54 Architecture & Programmation, 54
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement 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 : Objets à durée de vie temporaire et prévisible et gérée par le compilateur : paramètres de fonction variables locales résultats de fonctions ou de calculs intermédiaires ... la Pile (Stack) & le Tas (Heap) mort avec la fonction mort après utilisation Objets à durée de vie temporaire et imprévisible par le compilateur : tables dynamiques, cellules d’une liste, … Architecture & Programmation, 54

55 Architecture & Programmation, 55
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Le Tas Mémoire Centrale DONNEES DYNAMIQUES 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, … ) D S Architecture & Programmation, 55

56 La Pile « système » ou « machine »
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement La Pile « système » ou « machine » Mémoire Centrale DONNEES DYNAMIQUES 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 a dépiler dans un objet O POP O dernier empilé ou premier libre Pointeur de Pile Stack Pointer (SP) D S PP Architecture & Programmation, 56

57 Architecture & Programmation, 57
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement 2 implantations possibles : pile montante Fond de pile d’adresse plus basse que le sommet Ht bas Vide Occupé PP pile descendante Occupé Ht bas Fond de pile d’adresse plus haute que le sommet Choix habituel cf. appels de fonctions Vide PP Architecture & Programmation, 57

58 écrire a au sommet de la pile et modifier PP
Le Micro-processeur Exécution prog LM Instructions LM PUSH a Organisation mémoire Données Rupture séquencement écrire a au sommet de la pile et modifier PP pile montante* Mem[ PP+=LGMOT ] = a pile descendante* Mem[ PP-=LGMOT ] = a Vide Vide Occupé Occupé a Occupé Occupé a Vide Vide PP PP PP PP * exemple avec PP « pointant » le dernier entré Architecture & Programmation, 58

59 lire le sommet, stocker la valeur lue dans O et modifier PP
Le Micro-processeur Exécution prog LM Instructions LM POP O Organisation mémoire Données Rupture séquencement lire le sommet, stocker la valeur lue dans O et modifier PP pile montante* O=Mem[PP]; PP-=LGMOT pile descendante* O=Mem[PP]; PP+=LGMOT Vide O ... Vide O a Occupé Occupé O ... O a a Occupé Occupé a Vide Vide PP PP PP PP * exemple avec PP « pointant » le dernier entré Architecture & Programmation, 59

60 Architecture & Programmation, 60
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 » Architecture & Programmation, 60

61 Architecture & Programmation, 61
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Environnement (Stack Frame) : bloc dynamique inclus dans la pile  identifié par son adresse de début où commence son suivant au sommet de la pile  se termine sinon S’il est le dernier Architecture & Programmation, 61

62 Pile système avec environnements
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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. NEWENV détruire l’env. courant DESTENV Vide Env. courant Pointeur Local de Pile Stack Frame Pointer (SFP) Env. préc. PP PLP Architecture & Programmation, 62

63 empiler PLP et faire pointer PLP sur le dernier entré.
Le Micro-processeur Exécution prog LM Instructions LM NEWENV Organisation mémoire Données Rupture séquencement empiler PLP et faire pointer PLP sur le dernier entré. Chaînage sur le courant Nouveau  courant Vide Env. courant PP PLP Env. courant Vide Env. préc. PLP PP « PUSH PLP »; PLP=PP Mem[PP-=LGMOT]=PLP; PLP=PP exemple avec pile descendante et PP « pointant » le dernier entré Architecture & Programmation, 63

64 vider environnement et dépiler dans PLP. Libérer tout le bloc
Le Micro-processeur Exécution prog LM Instructions LM DESTENV Organisation mémoire Données Rupture séquencement vider environnement et dépiler dans PLP. Libérer tout le bloc sauf le 1er mot Précédent  courant restauré comme avant NEWENV Vide Env. préc. PLP PP courant Env. courant PLP PP Vide PP=PLP; « POP PLP » PLP=Mem[PP=PLP]; PP=PP+LGMOT exemple avec pile descendante et PP « pointant » le dernier entré Architecture & Programmation, 64

65 Architecture & Programmation, 65
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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,PP MOVE PP,PLP POP PLP Architecture & Programmation, 65

66 Architecture & Programmation, 66
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Modes d’adressage LM 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 : Architecture & Programmation, 66

67 pour cette instruction
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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. Explicites champs modes d’adressage dans le 1er mot de l’instruction Modes d’adressage Implicites fixés définitivement pour cette instruction Architecture & Programmation, 67

68 Modes d’adressage implicites
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Modes d’adressage implicites 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 ! Architecture & Programmation, 68

69 Modes d’adressage explicites
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Modes d’adressage explicites 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 ! Architecture & Programmation, 69

70 Adresse = valeur constante de l’opérande
Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Immédiat Adresse = valeur constante de l’opérande opérande d’entrée*† Rien à Faire valeur déjà dans A résultat*‡ T-1 A v * « 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 Architecture & Programmation, 70

71 Adresse = n° d’un registre libre servant d’opérande
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Registre Adresse = n° d’un registre libre servant d’opérande opérande d’entrée*† Décoder A  Ri A = Ri résultat*‡ Décoder A  Ri Ri = C T-1 T-1 A i A i C v R0 R0 ... Ri v ... Ri * « 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 Architecture & Programmation, 71

72 Adresse = adresse d’un mot mémoire servant d’opérande
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Direct Adresse = adresse d’un mot mémoire servant d’opérande opérande d’entrée*† A = Mem [A] résultat*‡ Mem [A] = C T-1 T-1 A a A a C v a v a * « 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 Architecture & Programmation, 72

73 Adressage Indirect par registre
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Indirect par registre Adresse = n° d’un registre libre pointant un mot mémoire servant d’opérande opérande d’entrée*† Décoder A  Ri A = Mem [Ri] résultat*‡ Décoder A  Ri Mem [Ri] = C T-1 T-1 A i A i C v a v a R0 R0 ... Ri a ... Ri a * « 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 Architecture & Programmation, 73

74 Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Indirect Adresse = adresse d’un mot mémoire pointant un mot mémoire servant d’opérande opérande d’entrée*† A = Mem [A] résultat*‡ A = Mem [A] Mem [A] = C T-1 T-1 A p A p C v a v a p a p a * « 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 Architecture & Programmation, 74

75 Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Local Adresse = décalage dans l’environnement courant d’un mot mémoire servant d’opérande opérande d’entrée*† A = Mem [PLP+A] résultat*‡ Mem [A+PLP] = C T-1 T-1 A d A d C v p + v d d p + d d p PLP p p PLP p * « 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 Architecture & Programmation, 75

76 Adressage Local Indirect
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Local Indirect Adresse = décalage dans l’environnement courant d’un pointeur vers le mot mémoire servant d’opérande opérande d’entrée*† A = Mem [PLP+A] A = Mem [A] résultat*‡ A = Mem [PLP+A] Mem [A] = C T-1 T-1 A d A d a v a C v p + a d d p + a d d p PLP p p PLP p * « 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 Architecture & Programmation, 76

77 Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage Indexé Adresse = 2 champs :  adresse d’une table mémoire  n° de registre contenant l’index opérande d’entrée*† Décoder&décaler A  Ri A = Mem [A+Ri] résultat*‡ Décoder&décaler A  Ri Mem [A+Ri] = C T-1 T-1 A t i A t i t t C v t + v d t + d d d R0 R0 ... Ri d ... Ri d * « 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 Architecture & Programmation, 77

78 Adressage par Registre de Base
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Adressage par Registre de Base Adresse = 2 champs :  index dans un bloc mémoire  n° de registre « pointant » le bloc opérande d’entrée*† Décoder&décaler A  Ri A = Mem [Ri+A] résultat*‡ Décoder&décaler A  Ri Mem [Ri+A] = C T-1 T-1 A d i A d i b b C v b + v d b + d d d R0 R0 ... Ri b ... Ri b * « 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 Architecture & Programmation, 78

79 Instructions de transfert de données
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 ) Architecture & Programmation, 79

80 Instructions de calcul
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 à droite non signé décalage à droite signé Architecture & Programmation, 80

81 Ecritures des calculs selon le nombre d’adresses permises
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Ecritures des calculs selon le 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=a ADD b,c // c += b LM 1 adresse LOAD a // Acc = a ADD b // Acc += b STORE 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 = -a STORE b // b = Acc Architecture & Programmation, 81

82 Données de taille non unitaire
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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. Architecture & Programmation, 82

83 Données multi-mots mot par mot récupération stockage transferts
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Données multi-mots mot par mot récupération stockage transferts opérations bit à bit gestion des bits « changeant de mot » décalages algorithmique « posant les opérations » en base 2 taille mot arithmétique entière a1 a0 b1 b0 +-*/ … Il est préférable de disposer d’une UAL calculant sur la largeur totale (« algorithmique câblée » ex processeur 16/32 bits). Architecture & Programmation, 83

84 Données plus courtes que le mot
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Données plus courtes que le mot récupération du mot contenant la donnée et reformatage ? récupération 1 2 récupération du mot où l’on doit stocker la donnée ; « combinaison » et stockage stockage ? 1 2 transferts 3 arithmétique entière décalages opérations bit à bit récupération / stockage calculs naturels de l’UAL Il est préférable de travailler avec des mots ! ( int en C ) Architecture & Programmation, 84

85 Architecture & Programmation, 85
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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. Architecture & Programmation, 85

86 Traitement automatisé des expressions de calcul complexes
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Traitement automatisé des expressions de calcul complexes Problème : expression ( ex : "- a + b * (a - c) + d" ) ordonnancement des calculs instructions LM réalisant le calcul Solution : « notation polonaise inverse » 1 convertir l’expression en arbre de calcul 2 « traiter » l’arbre en profondeur d’abord a - b a c - * + d + d * + c - b a père après ses fils Architecture & Programmation, 86

87 Création de l’arbre de calcul
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Création de l’arbre de calcul Mécanisme récursif suivant : si expression réduite à une valeur alors  arbre résultat feuille sinon  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 si opérateur binaire arbre sous-expression gauche arbre sous-expression droite Architecture & Programmation, 87

88 « Traitement » de l’arbre
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement « Traitement » de l’arbre Traitement en profondeur d’abord : feuille : empiler sa valeur nœud : dépiler ses opérandes calculer le résultat empiler le résultat PUSH a PUSH b POP Rg:0 POP Rg:1 SUB Rg:0 Rg:1 Rg:0 PUSH Rg:0 b - a Architecture & Programmation, 88

89 Evolution de la pile à l’exécution
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement + Parcours de l’arbre + d Code généré - * a b - a c ... PUSH a a POP Rg:0 - OPP Rg:0 Rg:0 PUSH Rg:0 PUSH b b PUSH c c POP Rg:1 SUB Rg:1 Rg:0 Rg:0 POP Rg:0 * MUL Rg:0 Rg:1 Rg:0 POP Rg:0 + ADD Rg:0 Rg:1 Rg:0 PUSH d d Evolution de la pile à l’exécution -a a b -a+b(a-c) -a b a c a-c -a+b(a-c)+d b(a-c) d Architecture & Programmation, 89

90 Optimisations simples à posteriori
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Optimisations simples à posteriori ... PUSH a POP Rg:0 OPP Rg:0 Rg:0 PUSH Rg:0 PUSH b PUSH c POP Rg:1 SUB Rg:1 Rg:0 Rg:0 MUL Rg:0 Rg:1 Rg:0 ADD Rg:0 Rg:1 Rg:0 PUSH d ... OPP a Rg:0 PUSH Rg:0 PUSH b PUSH a POP Rg:1 SUB Rg:1 c Rg:0 MUL Rg:0 Rg:1 Rg:0 ADD Rg:0 Rg:1 Rg:0 ADD d Rg:1 Rg:0 ... OPP a Rg:0 PUSH Rg:0 PUSH b SUB a c Rg:0 POP Rg:1 MUL Rg:0 Rg:1 Rg:0 ADD Rg:0 Rg:1 Rg:0 ADD d Rg:0 Rg:0 Architecture & Programmation, 90

91 Instructions de branchement
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 Architecture & Programmation, 91

92 Sauts inconditionnels
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 ) Architecture & Programmation, 92

93 Architecture & Programmation, 93
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 ? »  Architecture & Programmation, 93

94 Architecture & Programmation, 94
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 calcul ou  d’une instruction spéciale COMP a b qui calcule a-b sans le stocker Registre µ-inst micro-séquenceur N UAL n b Z RE Architecture & Programmation, 94

95 Architecture & Programmation, 95
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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 LM avec COMP LM sans COMP exemples COMP a b ONGOTO 1 E // a != b E: // a == b SUB b a c ONGOTO 1 E // a != b E: // a == b Architecture & Programmation, 95

96 Machine sans registre d’état
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Machine sans registre d’état 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 c ONGOTO 1 c E // a != b E: // a == b En LM 1 le mot m est l’accumulateur ONGOTO cnd a ONJUMP cnd n exemple Architecture & Programmation, 96

97 Architecture & Programmation, 97
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement 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. Architecture & Programmation, 97

98 Opérateurs de comparaisons
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Opérateurs de comparaisons Exemples avec RE et LM avec COMP b == a b >= a ... // évaluation de a PUSH ... ... // évaluation de b POP Rg:0 POP Rg:1 COMP Rg:0 Rg:1 ONJUMP 1 Im:4 PUSH Im:0 JUMP Im:2 PUSH Im:1 ... // évaluation de a PUSH ... ... // évaluation de b POP Rg:1 POP Rg:0 COMP Rg:0 Rg:1 ONJUMP 3 Im:4 PUSH Im:1 JUMP Im:2 PUSH Im:0 b-a a-b 1 : Z == 1 3 : N == 1 Architecture & Programmation, 98

99 Architecture & Programmation, 99
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement ... // évaluation de a PUSH ... POP Rg:0 ONJUMP 1 Rg:0 Im:4 PUSH Im:0 JUMP Im:2 PUSH Im:1 Opérateurs booléens Opérateur unaire Opérateurs binaires  évaluation classique évaluation préalable des 2 opérandes  évaluation « paresseuse » évaluation de a si a absorbant (Vrai pour ou, Faux pour et) conclure (empiler a) sinon évaluer b et conclure (empiler b) non a a 1 : Z == 1 Exemple sans RE arbre b non évalué  gain de temps  effets de bord !!! Architecture & Programmation, 99

100 évaluation paresseuse
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Exemples sans RE évaluation paresseuse b et a b ou a ... // évaluation de a PUSH ... POP Rg:0 ONGOTO 1 Rg:0 E ... // évaluation de b ONJUMP 1 Rg:0 Im:4 PUSH Im:1 JUMP Im:2 E: PUSH Im:0 ... // évaluation de a PUSH ... POP Rg:0 ONGOTO 0 Rg:0 E ... // évaluation de b ONJUMP 0 Rg:0 Im:4 PUSH Im:0 JUMP Im:2 E: PUSH Im:1 Architecture & Programmation, 100

101 Architecture & Programmation, 101
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Sous-programmes 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. Architecture & Programmation, 101

102 Architecture & Programmation, 102
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Mécanisme d’appel 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 ! Architecture & Programmation, 102

103 Architecture & Programmation, 103
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture 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. Architecture & Programmation, 103

104  créer un nouvel environnement pour cet appel
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement 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). . . . Env crt PP PLP CO CALL a Ss-prg. . . . Env crt PP PLP CO CALL a Ss-prg. . . . Env prc PP PLP CO CALL a Ss-prg. . . . Env prc PP PLP CO CALL a Ss-prg. « PUSH CO … »; « NEWENV »; « GOTO a »; Mem[PP-=LGMOT]= CO // CO déjà incrémenté !! exemple avec pile descendante et PP « pointant » le dernier entré Architecture & Programmation, 104

105 Architecture & Programmation, 105
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Données locales 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) Env prc PLP PP Var. locales Ss-prg. SUB PP... . . . a CALL CO Les données locales se trouvent dans l’environnement créé pour cet appel. Chaque appel disposera de son propre jeu de données locales. Architecture & Programmation, 105

106  détruire l’environnement courant
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement RETURN  détruire l’environnement courant  dépiler dans CO (branchement en retour) . . . Env crt PP PLP CO CALL a Ss-prg. RETURN . . . Env crt PP PLP CO CALL a Ss-prg. RETURN Env prc PLP PP Var. locales Ss-prg. RETURN . . . a CALL CO « DESTENV »; « POP CO »; exemple avec pile descendante et PP « pointant » le dernier entré Architecture & Programmation, 106

107 Architecture & Programmation, 107
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Procédures Parfois le comportement d’un sous-programme est paramètré. Ce sous-programme est alors appelé « Procédure ». 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. Architecture & Programmation, 107

108 Gestion des paramètres
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Gestion des paramètres x: «PRECALL» empilage paramètres y: GOTO a. 1. Empilage dans environnement d’appel «PUSH y+2»; «NEWENV» Résolution des expressions ex C/C++ : printf(), ... 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. ad retour a b ... Var. locales F(a,b,…) Architecture & Programmation, 108

109 2. Empilage juste avant l’appel
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement ... empilage paramètres CALL a dépilage paramètres 2. Empilage juste avant l’appel Résolution des expressions 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ètres b a ad retour Var. locales F(a,b,…) Architecture & Programmation, 109

110 3. Empilage juste avant l’appel dans un environnement réservé
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement NEWENV empilage paramètres CALL a 3. Empilage juste avant l’appel dans un environnement réservé 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. b a ad retour d2 d1 Var. locales F(a,b,…) Architecture & Programmation, 110

111  détruire l’environnement d’appel
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement RETPROC  détruire l’environnement d’appel  dépiler dans CO (branchement en retour)  détruire l’environnement des paramètres Var. locales . . . PP PLP CO CALL a Ss-prg. RETPROC param. . . . PP PLP CO CALL a Ss-prg. RETPROC param. . . . PP PLP CO CALL a Ss-prg. RETPROC param. . . . PP PLP CO CALL a Ss-prg. RETPROC « DESTENV »; « POP CO »; « DESTENV »; exemple avec pile descendante et PP « pointant » le dernier entré Architecture & Programmation, 111

112 Architecture & Programmation, 112
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Fonctions Un sous-programme ou une procédure qui « retourne une valeur » (i.e. qui fournit un résultat non nommé) est appelé(e) « Fonction ». d2 résultat Var. locales param. ad retour d1 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 d1 résultat ad retour Var. locales Architecture & Programmation, 112

113 Opérateur ( ) : appel de fonction
Le Micro-processeur Exécution prog LM Instructions LM Organisation mémoire Données Rupture séquencement Opérateur ( ) : appel de fonction 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. exemple : printf ("%s %d\n",s+strlen(b),i); [ 1 réservez résultat sur la pile ] [ 2 NEWENV ] 4 lancer la fonction CALL ( ) "%s %d\n" + i printf Le résultat éventuel est construit [ 3 empiler les paramètres par évaluation des arbres fils de droite à gauche (ou inversement) ] s ( ) strlen b Architecture & Programmation, 113

114 Architecture & Programmation, 114
That's All Folks ! Architecture & Programmation, 114


Télécharger ppt "Architecture & Programmation"

Présentations similaires


Annonces Google