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

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

Présentations similaires


Présentation au sujet: "IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation Processeur, micro-code, assembleur, langage machine, concepts « programmatiques."— Transcription de la présentation:

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

2 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion 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,...).

3 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion 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.

4 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion 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

5 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 5 Chapitre I Analyse du micro-processeur description générale bloc de traitement bloc de commande

6 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 6 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

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

8 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 8 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 CBus B 16 4 Décod. 4b   16 Valideur 16b EC CO AC PP F PLP   ... Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

9 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 9 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. Calcul N Z D 2        UAL n b Décaleur Tampon B A U µ-Séqu. RDO RAD Registre µ-inst    MUX 2xn Tampon A Bus ABus CBus B Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

10 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 10 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 la mémoire centrale 34    WR RD Bus d’adresses Bus de données SO    MUX 2xn Tampon B RDO RAD nn SA Registre µ-inst Bus C Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

11 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 11 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

12 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 12 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

13 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 13 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] Signaux de commande Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

14 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 14 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 : 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 Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande 0 : pas de décalage 1 : décalage à droite non signé 2 : décalage à gauche 3 : décalage à droite signé 0 : Tampon A 1 : RDO

15 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 15 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

16 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 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 Mémoire de commande Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande µ-instructions 33 bits Mémoire de Commande       Décod. 8b µ-inst 0 µ-inst 255 Registre µ-inst MCO

17 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 17 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équencement du micro-code Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande Mémoire de Commande 8 Incrémenteur       Décod. 8b MS Registre µ-inst MUX 2x8 Micro- Séquenceur N Z 4 UAL n b MCO

18 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 18 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc 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

19 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 19 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 LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande

20 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 20 Structure binaire des micro-instructions Instructions LMExécution prog LMLe Micro-processeur description générale bloc de traitement bloc de commande AMSDU SASA SOSO WRWR RDRD ECEC adCadAadBadS 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.

21 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 21 Chapitre II Exécution d’un programme LM micro-code et programme LM structures des LM architecture du micro-code

22 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 22 instructions et donnéesen 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 LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Rôle du « micro-code » programme embarqué dans le processeur en mémoire de commande Instructions au format binaire définissant le LM programme LM

23 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 23 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Horloge Mémoire de Commande               RDO RAD Registre µ-inst... Inst LM... Programme LM chargement d’une instruction LM 2. décodage puis exécution de cette instruction Micro-code 1. Mémoire Centrale Processeur

24 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 24 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 quelconque Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Comparaison micro-code / programme LM Micro-codeProgramme LM

25 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 25 Instructions LMExécution prog LMLe Micro-processeur µ-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ésrôles précis et immuables registres réservésrôles divers au cours du temps Registres à disposition du programmeur LM, le micro- code ne les utilise jamais registres disponiblesrôles à discrétion du programmeur LM. CO … LGMOT Dispo, A … D E, F

26 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 26 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. Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Définition du Langage Machine

27 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 27 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 LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code vérifiant ce format binaire décodé et exécuté

28 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 28 Instructions LMExécution prog LMLe Micro-processeur µ-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.

29 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 29 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture 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

30 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 30 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code une instruction possède classiquement de 0 à 3 opérandes ex :0 123 return goto xa = ba = 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

31 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 31 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 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code

32 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 32 Instructions LMExécution prog LMLe Micro-processeur µ-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 = bacc=b ; a = acc; a = b+c acc=b ; acc += c ; a = acc Accumulateur

33 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 33 adresse 3 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Implantation mémoire des instructions LM adresse 1 adresse 2 X X + 1 mot X + 3 mots X + 2 mots adresses mé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 instructiondivers premier mot mots suivants facultatifs

34 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 34 Instructions LMExécution prog LMLe Micro-processeur µ-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

35 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 35 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture 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

36 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 36 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture 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

37 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 37 Instructions LMExécution prog LMLe Micro-processeur µ-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

38 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 38 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture 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)

39 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 39 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code... Horloge Mémoire de Commande              RAD Registre µ-inst Micro-code Mémoire Centrale Processeur RI CO µ-inst 0 RDO µ-inst 2... x Inst LM... Programme LM x µ-inst 0 et 1

40 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 40 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture 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

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

42 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 42 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code... Horloge       RAD RI RDO  Mémoire de Commande 8 Incrémenteur       Décod. 8b MUX 2x8 Micro- Séquenceur N MCO a << 1 Registre µ-inst Saut si N Adresse de saut Instruction fondamentale : Tester RI et le décaler; si N sauter en... Décodage micro-codé

43 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 43 Instructions LMExécution prog LMLe Micro-processeur µ-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 e010?? T&D RI; SI N aller en e00100? … exec inst e001 … exec inst e01T&D RI; SI N aller en e01101? … exec inst e011 … exec inst e1T&D RI; SI N aller en e111?? T&D RI; SI N aller en e10110? … exec inst e101 … exec inst e11T&D RI; SI N aller en e11111? … exec inst e111 … exec inst * ex simpliste pour 8 instructions LM. † Tester et Décaler

44 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 44 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code Pas de modification du processeur Lourd en temps et en µ-instructions. * pour N = 2 n instructions LM. n cycles pour chaque décodage * 2 n -1 = N-1 µ-instructions de décodage *

45 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 45 Instructions LMExécution prog LMLe Micro-processeur µ-code & prog LM structures des LM architecture du µ-code... Horloge   RI Mémoire de Commande 8 Incrémenteur       Décod. 8b MCO Adresses de saut aux blocs de traitement des instructions LM … MUX 2x8 Micro- Séquenceur  Tamp B  IiIi ININ I1I1 Décodeur Décodage câblé, une solution  Registre µ-inst MUX 2x8

46 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 46 Instructions LMExécution prog LMLe Micro-processeur µ-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 = 2 n instructions LM.

47 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 47 Chapitre III Instructions LM Organisation de la mémoire Manipulation des données Rupture du séquencement par défaut

48 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 48 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 code Un autre réservé aux données

49 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 49 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Vision monobloc Mémoire Centrale T-1 C O D E & D O N 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 !!! )

50 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 50 Instructions LMExécution prog LMLe Micro-processeur 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 CODE0CODE0

51 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 51 Instructions LMExécution prog LMLe Micro-processeur 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

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

53 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 53 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Partition « habituelle » Mémoire Centrale T-1 D. D Y N CODE0CODE0 D.STAD.STA 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

54 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 54 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 fonction variables locales résultats de fonctions ou de 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 avec la fonction mort après utilisation

55 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 55 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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émoire Centrale DONNEES DYNAMIQUES DSDS

56 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 56 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 a dépiler dans un objet O POP O Mémoire Centrale DONNEES DYNAMIQUES DSDS PP dernier empilé ou premier libre Pointeur de Pile Stack Pointer (SP)

57 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 57 pile montante Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement PP pile descendante 2 implantations possibles : PP Choix habituel cf. appels de fonctions Fond de pile d’adresse plus basse que le sommet Fond de pile d’adresse plus haute que le sommet Occupé Ht bas Vide Occupé Ht bas Vide

58 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 58 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement écrire a au sommet de la pile et modifier PP pile montante* Mem[ PP+=LGMOT ] = a Occupé Vide PP Occupé Vide PP a pile descendante* Mem[ PP-=LGMOT ] = a PP Occupé Vide PP Occupé Vide a * exemple avec PP « pointant » le dernier entré PUSH a

59 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 59 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement pile descendante* O=Mem[PP]; PP+=LGMOT PP Occupé Vide PP Occupé Vide a O... OaOa pile montante* O=Mem[PP]; PP-=LGMOT Occupé Vide PP Occupé Vide PP a O... OaOa * exemple avec PP « pointant » le dernier entré POP O lire le sommet, stocker la valeur lue dans O et modifier PP

60 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 60 Instructions LMExécution prog LMLe Micro-processeur 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 »

61 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 61 sinon Instructions LMExécution prog LMLe Micro-processeur 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 S’il est le dernier

62 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 62 Instructions LMExécution prog LMLe Micro-processeur 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 Pointeur Local de Pile Stack Frame Pointer (SFP) PP Vide Env. préc. Env. courant PLP

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

64 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 64 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement vider environnement et dépiler dans PLP. Vide Env. courant PP PLP Vide 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 bloc sauf le 1 er mot Précédent  courant restauré comme avant NEWENV DESTENV

65 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 65 Instructions LMExécution prog LMLe Micro-processeur 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,PLPPOP PLP

66 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 66 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

67 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 67 Instructions LMExécution prog LMLe Micro-processeur 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. Modes d’adressage Implicites fixés définitivement pour cette instruction Explicites champs modes d’adressage dans le 1 er mot de l’instruction

68 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 68 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

69 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 69 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

70 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 70 Instructions LMExécution prog LM Organisation mémoire Données Rupture 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 à Faire valeur déjà dans A T-1 AvAv

71 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 71 résultat *‡ Décoder A  Ri Ri = C opérande d’entrée *† Décoder A  Ri A = Ri T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 AiAi R0 AiAi... Ri …... Ri v … CvCv

72 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 72 résultat *‡ Mem [A] = C opérande d’entrée *† A = Mem [A] T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 AaAa AaAa Adressage Direct Adresse = adresse d’un mot mémoire servant d’opérande a va CvCv

73 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 73 résultat *‡ Décoder A  Ri Mem [Ri] = C opérande d’entrée *† Décoder A  Ri A = Mem [Ri] T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 AiAi AiAi a va CvCv Adressage Indirect par registre Adresse = n° d’un registre libre pointant un mot mémoire servant d’opérande R0... Ri a … R0... Ri a …

74 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 74 résultat *‡ A = Mem [A] Mem [A] = C opérande d’entrée *† A = Mem [A] T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 ApAp ApAp a va CvCv Adressage Indirect Adresse = adresse d’un mot mémoire pointant un mot mémoire servant d’opérande p a

75 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 75 résultat *‡ Mem [A+PLP] = C opérande d’entrée *† A = Mem [PLP+A] T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 AdAd AdAd 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 d PLP p d p+dp+d CvCv

76 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 76 résultat *‡ A = Mem [PLP+A] Mem [A] = C opérande d’entrée *† A = Mem [PLP+A] A = Mem [A] T-1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 AdAd AdAd 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 d PLP p d + a d a v a CvCv

77 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 77 résultat *‡ Décoder&décaler A  Ri Mem [A+Ri] = C opérande d’entrée *† Décoder&décaler A  Ri A = Mem [A+Ri] Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 A t i R0... Ri d … t d T-1 A t i R0... Ri d … t d t + v d t+dt+d CvCv

78 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 78 résultat *‡ Décoder&décaler A  Ri Mem [Ri+A] = C opérande d’entrée *† Décoder&décaler A  Ri A = Mem [Ri+A] Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 A d i R0... Ri b … b d T-1 A d i R0... Ri b … b d CvCv b + v d b+db+d

79 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 79 Instructions LMExécution prog LMLe Micro-processeur 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 )

80 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 80 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Instructions de calcul ClasseType(s) DyadiquesMonadiques arithmétiqueentiers 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é

81 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 81 Instructions LMExécution prog LMLe Micro-processeur 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 adressesADD a, b, c// c = a+b LM 2 adressesMOVE a, c// c=a ADD b,c// c += b LM 1 adresseLOAD a// Acc = a ADD b// Acc += b STORE c// c = Acc opérations monadiques ex pour l’opposé LM 2 ou 3 adressesOPP a, b// b=-a LM 1 adresseOPP a// Acc = -a STORE b// b = Acc

82 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 82 Instructions LMExécution prog LMLe Micro-processeur 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.

83 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 83 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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ération stockage transferts opé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 a1a0 b1b0 … +-*/ …

84 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 84 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Données plus courtes que le mot arithmétique entière décalages opérations bit à bit calculs naturels de l’UAL transferts stockage récupération ré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 ? 12 récupération / stockage Il est préférable de travailler avec des mots ! ( int en C )

85 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 85 Instructions LMExécution prog LMLe Micro-processeur 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.

86 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 86 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 + Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Traitement automatisé des expressions de calcul complexes père après ses fils d * + + c - b a - a

87 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 87 Instructions LMExécution prog LMLe Micro-processeur 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 arbre sous-expression gauche arbre sous-expression droite si opérateur binaire

88 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 88 Instructions LMExécution prog LMLe Micro-processeur 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 b - a PUSH aPUSH bPOP Rg:0POP Rg:1SUB Rg:0 Rg:1 Rg:0PUSH Rg:0

89 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 89 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement d * + + c - b a - a...PUSH a a POP Rg:0 - OPP Rg:0 Rg:0PUSH Rg:0PUSH b b PUSH a a PUSH c c POP 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 d POP Rg:0 + POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0... -a a b b a -a+b(a-c) -a b a c b a-c -a+b(a-c)+d -a b(a-c) -a+b(a-c) d Evolution de la pile à l’exécution Code généré Parcours de l’arbre

90 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 90 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Optimisations simples à posteriori...OPP a Rg:0 PUSH Rg:0PUSH bPUSH aPOP Rg:1SUB Rg:1 c Rg:0 POP Rg:1MUL Rg:0 Rg:1 Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0PUSH Rg:0POP Rg:1ADD d Rg:1 Rg:0 PUSH 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 bSUB a c Rg:0 POP Rg:1MUL Rg:0 Rg:1 Rg:0POP Rg:1ADD Rg:0 Rg:1 Rg:0ADD d Rg:0 Rg:0 PUSH Rg:0...

91 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 91 Instructions LMExécution prog LMLe Micro-processeur 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

92 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 92 Instructions LMExécution prog LMLe Micro-processeur 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 )

93 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 93 Instructions LMExécution prog LMLe Micro-processeur 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 ? »

94 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 94 Instructions LMExécution prog LMLe Micro-processeur 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écialeCOMP a b qui calcule a-b sans le stocker N Z UAL n b Registre µ-inst RE micro- séquenceur

95 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 95 Instructions LMExécution prog LMLe Micro-processeur 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 COMP a bONGOTO 1 E // a != b E: // a == b SUB b a cONGOTO 1 E // a != b E: // a == b LM avec COMPLM sans COMP exemples

96 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 96 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

97 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 97 Instructions LMExé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 : Fauxvaleur 0Vraivaleur non nulle Tous ces opérateurs sont alors insérés classiquement dans les arbres de calcul. Organisation mémoire Données Rupture séquencement

98 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 98 Instructions LMExécution prog LMLe Micro-processeur Opérateurs de comparaisons b == a Organisation mémoire Données Rupture séquencement b >= a... // évaluation de a PUSH // évaluation de b PUSH...POP Rg:0POP Rg:1COMP Rg:0 Rg:1ONJUMP 1 Im:4PUSH Im:0JUMP Im:2PUSH Im:1 1 : Z == 1... // évaluation de a PUSH // évaluation de b PUSH...POP Rg:1POP Rg:0COMP Rg:0 Rg:1ONJUMP 3 Im:4 PUSH Im:1JUMP Im:2PUSH Im:0 3 : N == 1 Exemples avec RE et LM avec COMP b-aa-b

99 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 99 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) Instructions LMExécution prog LMLe Micro-processeur Opérateurs booléens non a Organisation mémoire Données Rupture séquencement... // évaluation de a PUSH...POP Rg:0ONJUMP 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 !!!

100 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 100 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Exemples sans RE évaluation paresseuse b et a... // évaluation de a PUSH...POP Rg:0ONGOTO 1 Rg:0 E... // évaluation de b PUSH...POP Rg:0ONJUMP 1 Rg:0 Im:4 PUSH Im: 1 JUMP Im:2 E: PUSH Im: 0 b ou a... // évaluation de a PUSH...POP Rg:0ONGOTO 0 Rg:0 E... // évaluation de b PUSH...POP Rg:0ONJUMP 0 Rg:0 Im:4 PUSH Im: 0 JUMP Im:2 E: PUSH Im: 1

101 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 101 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

102 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 102 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

103 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 103 Instructions LMExécution prog LMLe Micro-processeur 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.

104 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 104 « PUSH CO … »; « NEWENV »; « GOTO a »; Mem[PP-=LGMOT]= CO // CO déjà incrémenté !! Instructions LMExé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émoire Données Rupture séquencement... 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.... Env crt PP PLP CO CALL a Ss-prg.

105 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 105 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 CO CALL a Ss-prg. SUB PP...

106 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 106 « DESTENV »; « POP CO »; Instructions LMExé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émoire Données Rupture séquencement Var. locales... Env prc PP PLP CO CALL a Ss-prg. RETURN... Env crt PP PLP CO CALL a Ss-prg. RETURN... Env crt PP PLP CO CALL a Ss-prg. RETURN

107 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 107 Parfois le comportement d’un sous-programme est paramètré. Ce sous-programme est alors appelé « Procédure ». Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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

108 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 108 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 LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 a b... F(a,b,…)

109 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 109 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement 2. Empilage juste avant l’appel...empilage paramètresCALL adépilage paramètres Résolution des expressions Var. locales … b a 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ètres F(a,b,…)

110 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 110 d1 Instructions LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement 3. 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 … b a ad retour F(a,b,…) d2

111 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 111 « DESTENV »; « POP CO »; « DESTENV »; Instructions LMExé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émoire Données Rupture séquencement 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

112 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 112 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 LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture 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 d2 résultat Var. locales param. ad retour d1 résultat ad retour Var. locales

113 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Architecture & Programmation, 113 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 LMExécution prog LMLe Micro-processeur Organisation mémoire Données Rupture séquencement Opérateur ( ) : appel de fonction exemple :printf ("%s %d\n",s+strlen(b),i); "%s %d\n" + s strle n 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

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


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

Présentations similaires


Annonces Google