Université Joseph Fourier Grenoble 1 ALM MIAGE1 Examen première session 2005 Durée : 2h00, tout document autorisé I. Représentation des informations (4 points) Des dessins carrés de 8 pixels de côté sont considérés comme des vecteurs linéaires de 8*8=64 pixels. Dans ce vecteur, chaque pixel ou groupe de pixels peut être codé selon 3 formats de codage possibles : Sans compression : chaque pixel est codé par 2 bits selon l intensité de la luminosité (blanc : 00 ; gris clair : 01 ; gris foncé : 10 ; noir : 11) Avec compression H (type codage adaptatif genre Hufmann) : chaque pixel est codé selon la couleur par un codé adaptatif obtenu dans le dictionnaire suivant (blanc : 0 ; gris clair : 10 ; gris foncé : 110 ; noir : 111) Avec compression R (type avec codage des répétitions) : chaque répétition de strictement plus de 2 pixels de même couleur est codé par 6 bits, le premier bit valant 1, les 3 bits suivant donnant le nombre de répétition du pixel diminué de 3, les deux derniers bits donnant l intensité de la couleur (blanc : 00 ; gris clair : 01 ; gris foncé : 10 ; noir : 11). Ainsi 111111 indique 10 pixels noirs, et 100000 indique 3 pixels blancs. Les pixels isolés ou en double sont codés pixel par pixel, chaque pixel est codé par 3 bits, le premier à 0, les deux suivants donnant l intensité de la couleur (blanc : 00 ; gris clair : 01 ; gris foncé : 10 ; noir : 11). Question I-1 : Donner pour chaque format la taille minimale et maximale d un fichier. Question II-2 : Donner la taille et les débuts des fichiers (les 4 premiers chiffres en hexadécimal, des deux premiers octets) du codage de l image figure 1, selon le mode de codage. Figure 1 : Un carré noir d un pixel de côté en haut à droite d un carré gris foncé de 2 pixels de côté en haut à droite d un carré gris clair de 4 pixels de côté en haut à droite d un carré blanc de 8 pixels de côté.
II. Langage machine (4 points) Un automate a été codé en C par : main() e=???; do printf("vous etes dans l'etat %d, donner votre entree ",e); scanf("%s",&c); printf("\n"); if (e==???) else else if (e==???) else else if (e==???) else else if (e==???) else while(e!=???); printf("fin \n"); return; La traduction en ARM de ce programme est donnée figure 2. Question II-1 : Simuler l exécution de cet automate à partir du code en ARM. L utilisateur fournit les réponses suivantes : 1, 0, 1, 1, 0, 2. En particulier donner l état de la mémoire et des registres à des moments significatifs de l exécution de l automate. Donner également les messages apparaissant à l écran. Question II-2 : Recopier et commenter une partie du code ARM représentant une transition de l automate. Si cela est possible, mettre en correspondance le code C. Question II-3 : Représenter l automate programmé figure 2 à l aide d un schéma.
.bss c.0:.space 1.align 2 e.1:.space 4.section.rodata.LC0:.ascii "Vous etes dans l'etat %d, donner votre entree \000".LC1:.ascii "%s\000".lc2:.ascii "/n\000".lc3:.ascii "fin /n\000".text main: mov ip, sp stmfd sp!, fp, ip, lr, pc sub fp, ip, #4.L2: ldr r3,.l29 ldr r0,.l29+4 ldr r1, [r3, #0] bl printf ldr r0,.l29+8 ldr r1,.l29+12 bl scanf ldr r0,.l29+16 bl printf ldr r3,.l29 cmp r3, #0 bne.l5 bne.l6.l6: bne.l8 mov r3, #1.L8:.L5: ldr r3,.l29 cmp r3, #1 bne.l11.l12: ldr bne.l12 r3,.l29+12 bne.l14 mov r3, #2.L14:.L11: ldr r3,.l29 cmp r3, #2 bne.l17 bne.l18.l18: bne.l20 mov r3, #3.L20:.L17: ldr r3,.l29 cmp r3, #3 bne.l4 bne.l24.l24: bne.l26.l26:.l4: ldr r3,.l29 cmn r3, #1 bne.l2 ldr r0,.l29+20 bl printf mov r0, r3 ldmea fp, fp, sp, pc.l30:.align 2.L29:.word e.1.word.lc0.word.lc1.word c.0.word.lc2.word.lc3.lfe1: Figure 2 : Un automate codé en ARM.
III. Automate de contrôle (6 points) Prenons une machine à une adresse avec accumulateur, extrêmement simple, comportant seulement 5 registres : PC pour l adresse de l instruction en cours (l adresse Pc+1 est disponible également, elle est calculée en permanence à partir de Pc), I pour l instruction en cours, A et D pour communiquer avec la mémoire (l accès à la mémoire se fait avec la commande «Lire» qui exécute D Mem[A]), et Acc un accumulateur en sortie d UAL. Cette machine possède le langage machine suivant : Mnémo Codage Interprétation LOAD #i 2 octets : 01 puis #i ACC MEM[P+1], PC PC + 2 JMP @ 2 octets : 04 puis @ PC MEM[PC+1] ADD #i 2 octets : 10 puis #i ACC ACC + MEM[PC+1], PC PC + 2 dont le graphe de contrôle est donné à la figure 3. Pc 0 A Pc Lire I D Pc Pc+1 A Pc Lire Pc Pc+1 I=LOAD I=ADD I=JMP Acc D Acc Acc+D Pc D Figure 3 : Graphe de contrôle No 1 Chaque ligne contenue dans un état du graphe de contrôle de la figure 3 représente un ensemble de commandes compatibles qui peut s exécuter en un seul cycle d horloge. Cette machine sera testée sur les deux programmes suivants : Prog1 : LOAD #0 Prog2 : JMP ETIQ1 ADD #1 ETIQ1 : JMP ETIQ2 ADD #2 ETIQ2 : JMP ETIQ3 ADD #3 ETIQ3 : JMP ETIQ4 ADD #4 ETIQ4 : JMP ETIQ5 ADD #5 ETIQ5 : JMP ETIQ6 ETIQ6 : Question III-1 : Donner le temps nécessaire pour exécuter les deux programmes de test. En déduire, pour chaque programme, le temps moyen nécessaire pour exécuter une instruction.
Question III-2 : Modifier le graphe de contrôle No 1 pour exécuter en parallèles les commandes indépendantes. Vous supposerez que l architecture de la partie opérative du microprocesseur permet un maximum de parallélisme. Vous noterez µ 1 µ 2 l exécution des deux commandes µ 1, µ 2 en parallèle. Donner le temps nécessaire pour exécuter les deux programmes de test avec ce nouveau graphe de contrôle No 2. En déduire, pour chaque programme, le temps moyen nécessaire pour exécuter une instruction pour le graphe de contrôle No 2. Pour améliorer les performances de la machine, les registres I, A et D sont dédoublés, et deux commandes «Lire» sont maintenant disponibles. La commande «Lire 1» effectue D 1 Mem[Ad 1 ]. La commande «Lire 2» effectue D 2 Mem[Ad 2 ]. Les valeurs A 1 +2 et Pc+3 sont également calculées en permanence. Ainsi, deux instructions I 1 et I 2 peuvent être exécutées quasiment en même temps, en pipe-line. Pour cette nouvelle machine, une partie du graphe de contrôle est donné figure 4. Pc 0 A 1 Pc Lire 1 Pc Pc+1 A 2 A 1 Lire 2 I 1 D 1 A 1 Pc I 1 =LOAD I 1 =JMP Lire 1 Pc Pc+3 A 2 A 1 +2 I 2 D 2 Lire 1 Pc D 1 A 1 D 1 I 2 =LOAD I 2 =JMP Lire 2 Acc D 1 A 1 Pc Lire 1 Acc D 2 A 2 A 1 +2 Pc Pc+1 Lire 2 Acc D 1 Pc D 2 A 1 D 2 Figure 4 : Graphe de contrôle No 3 (incomplet) Chaque ligne contenue dans un état du graphe de contrôle de la figure 4 représente un ensemble de commandes compatibles qui peut s exécuter en un seul cycle d horloge. Question III-3 : Compléter le graphe de contrôle No 3 où il manque le décodage des instructions d addition. Donner pour ce graphe complet le temps nécessaire pour exécuter les
deux programmes de test. En déduire, pour chaque programme, le temps moyen nécessaire pour exécuter une instruction. Question III-4 : Peut-on encore améliorer cette machine? Faire des propositions. Selon vous, y a-t-il une bonne raison pour que toutes les améliorations possibles ne permettent pas d obtenir un temps moyen nécessaire pour l exécution d une instruction inférieur à un cycle d horloge? IV. Circuit (6 points) Question IV-1 : Rappeler le schéma général d un circuit réalisant un automate de Mealy. Préciser les parties combinatoires et les parties séquentielles. Question IV-2 : Proposer un codage pour les différentes informations nécessaires à la réalisation de l automate donné figure 5. Question IV-3 : Réaliser les parties combinatoires du circuit, en suivant pour chacune les étapes suivantes, spécifications des fonctions réalisées sous forme de table de vérité ou de tableau de Karnaugh, écriture sous forme de formule logique, dessin du circuit. Question IV-4 : Donner le dessin du circuit complet. Remarque : la fin de la question IV-3 et la question IV-4 peuvent être rédigées en même temps. N! Erreur N, S, O! Erreur E! Ok E! Ok A B C O! Ok O! Ok N, S, E! Erreur S! Ok N! Ok D S, E, O! Erreur Figure 5 : Automate de Mealy simulant les déplacements (N : nord, S : sud ; E : est, O : ouest) d un robot dans un entrepôt constitué de 4 zones (A, B, C, D). Une transition, notée X, Y! Z, est une transition sur les entrées X, Y donnant la sortie Z. Question facultative : proposer 3 parties opératives différentes, une pour chaque graphe de contrôle de l exercice III., chacune améliorant la précédente, permettant d exécuter les graphes de contrôle de l exercice III. - le barème est donné à titre indicatif -