Professeur : Jean-Marc Beaulieu Département de génie électrique ELE542 – Systèmes ordinés en temps réel Exercice du Chapitre 4 – Aspects matériels Numéro 1 – Révision Questions de révision – Vrai ou faux a) Le coût est un facteur qui a très peu d’importance dans la sélection d’un processeur pour un système en temps réel. b) Le « principe de localité » dit que : lors de deux (2) accès successifs en mémoire, les valeurs des données lues sont proches l’une de l’autre. c) Pour évaluer la performance d’un processeur, il est préférable d’effectuer les tests avec un banc d’essai utilisant notre application cible. d) Un des avantages des ordinateurs RISC est de produire des programmes exécutables qui occupent moins d’espace mémoire. e) L’architecture du Pentium III est une architecture CISC. f) Pour les processeurs avec arithmétique entière, les opérations avec des nombres réels sont moins longues parce qu’elles sont effectuées à l’extérieur du processeur. g) Le mode d’adressage indirect demande quatre (4) cycles d’accès mémoire. Numéro 2 – Architecture La conception de processeurs à « N-adresses » avec N > 3 est improbable. Pourquoi ? Numéro 3 – Temps d’exécution Vous concevez un système en temps réel qui exécute un programme de traitement de données de façon périodique. Après compilation de votre programme, vous faites une analyse statistique de la fréquence des instructions selon le type d’instructions. Les résultats sont donnés dans le tableau suivant avec le nombre de cycles nécessaires pour chaque type d’instructions : Type d’instructions Opérations ALU Chargements (Load) Enregistrements (Store) Branchements Fréquence 43 % 21 % 12 % 24 % Cycles par instruction 1 2 2 2 La fréquence d’opération de votre processeur est de 500 MHz et votre programme comprend 10 000 instructions. a) Quelle est la valeur moyenne du nombre de cycles par instructions ? b) Donnez une estimation du temps d’exécution de votre programme. c) Vous recevez une nouvelle version de votre compilateur avec une fonction d’optimisation améliorée. Cette optimisation élimine 50 % des instructions ALU sans modifier les autres parties du programme. Donnez une nouvelle estimation du temps d’exécution de votre programme. Numéro 4 – Pipeline Nommez deux (2) difficultés posées par l’architecture en pipeline pour le concepteur de systèmes en temps réel. Numéro 5 – Pipeline Nous considérons deux (2) processeurs différents provenant de la même famille pour un système en temps réel. Le premier processeur ne possède pas de pipeline. Le temps d’un cycle d’opération est de dix (10) ns. Le nombre de cycles par instruction et la fréquence relative des instructions sont donnés dans la tableau suivant : Type d’instructions Opérations ALU Opérations mémoire Branchements Fréquence 40 % 20 % 40 % Cycles par instruction 4 5 4 Le second processeur (plus cher) possède un pipeline suffisamment profond pour supporter la complétion d’une instruction par cycle. Cependant, son cycle est plus long de 10 %, soit zone (11) ns. a) Quel est le temps d’exécution moyen d’une instruction dans les deux (2) cas ? b) On définit l’accélération provenant du pipeline comme le rapport des temps d’exécution moyens par instruction. Dans ce cas, quelle est l’accélération provenant du pipeline ? Numéro 6 – Mémoire Quelle sorte de circuits mémoire utiliseriez-vous pour sauvegarder les informations suivantes ? a) Le programme d’une enregistreuse vidéo (VCR) destinée au grand public. b) Le nom d’une imprimante réseau qui doit être conservé même lorsqu’il y a perte de courant. Note : L’usager doit pouvoir modifier le nom. c) Le programme de la version Beta d’une machine à rayon X que votre compagnie va expédier à plusieurs hôpitaux pour expérimentation. d) Un tampon de données reçues du réseau et en attente de traitement par votre programme. Numéro 7 – Mémoire Discuter des avantages et des inconvénients reliés à l’utilisation des techniques suivantes pour la réalisation des entrées/sorties : accès programmé, accès projeté en mémoire et accès direct en mémoire (DMA). Numéro 8 – Mémoire Dans la plupart des systèmes ordinés, le contrôleur des accès directs en mémoire (DMA) a une priorité supérieure au processeur pour obtenir l’accès à la mémoire et aux bus de communication. Pourquoi ? Numéro 9 – Mémoire Quelles sont les différences entre les mémoires volatiles, dynamiques et statiques ? 2 Numéro 10 – Mémoire Si le registre d’adresses d’une mémoire comporte 32 bits, calculer : a) Le nombre de mots adressables si 1 mot = 1 octet. b) La plus haute adresse possible pour ces mots de 1 octet. c) Le nombre de mots adressables si 1 mot = 32 bits. d) La plus haute adresse possible pour ces mots de 32 bits. Numéro 11 – Mémoire Combien de bits sont nécessaires sur le bus d’adresses pour accéder à une mémoire contenant : a) 4 096 espaces mémoire. b) 65 536 espaces mémoire. c) 16 777 216 espaces mémoire. Numéro 12 – Mémoire Quel est le plus grand programme possible pour un microcontrôleur avec : a) 16 lignes d’adresse. b) 20 lignes d’adresse. c) 24 lignes d’adresse. d) 32 lignes d’adresse. Numéro 13 – Bus Quelle est la plage d’adresses accessible (en hexadécimal) et le nombre de lignes d’adresse nécessaire pour utiliser une mémoire de 1 M octets ? Numéro 14 – Bus Qu’est-ce qu’un bus ? Numéro 15 – Interruption Est-ce que le processeur arrête immédiatement son travail (pour exécuter la fonction d’interruption) lors de l’interruption ? Numéro 16 – Interruption En général, est-ce que la fonction de traitement d’une interruption peut être interrompue ? Numéro 17 – Interruption En quoi consiste la sauvegarde de l’état de la machine ? 3 Numéro 18 – Comptage d’instructions Une méthode pour estimer le temps d’exécution d’une partie de code est de compter le nombre d’instructions. Considérer la fonction suivante : void test_code (int *b, int *a , int c) { int i; for (i = 0; i < 100; i++) { a[i] = b[i] + c ; } } À l’aide du compilateur de Microsoft, vous trouvez la fonction en assembleur correspondante. Vous devriez obtenir un morceau de code similaire au suivant : _TEXT SEGMENT _b$ = 8 _a$ = 12 _c$ = 16 _test_code PROC NEAR ; 3 ; 4 : : eax, ecx, esi esi, edi ecx, edx, ; 5 ; 6 { mov add add dec mov jne pop pop ; 7 ; 8 : : } Étiquette pour b[] Étiquette pour a[] Étiquette pour c[] COMDAT ; ; ; ; ; : ; Copie adresse de a dans EAX Copie adresse de b dans EBX Mettre ESI sur la pile Copie adresse de c dans ESI Mettre EDI sur la pile EAX – ECX -> ECX 00000064H int i; for (i = 0; i < 100; i++) mov mov push mov push sub mov $L530: : : ; ; ; ; DWORD PTR _a$[esp-4] DWORD PTR _b$[esp-4] DWORD PTR _c$[esp] eax 100 a[i] = b[i] + c ; edi, DWORD PTR [ecx+eax] eax, 4 edi, esi edx DWORD PTR [eax-4], edi SHORT $L530 edi esi ; Adresse de b dans EBX (&a-&b+&a) ; Addresse de a + 4 ; c + b ; Branchement } ret 0 _test_code ENDP _TEXT ENDS ;{ 4 a) Estimer le nombre d’instructions nécessaire à chaque itération de la boucle et celui pour l’exécution totale de la fonction. b) Estimer le temps d’exécution (en cycles) de chaque itération de la boucle. Note : Le temps d’exécution des instructions sont : MOV 1 cycle DEC ADD 1 cycle JNE 1 cycle avec saut = 3 cycles sans saut = 1 cycle c) Vous regardez maintenant la version compilée avec l’option « Debug ». Le code, qui suit, montre une section du code assembleur obtenu. Estimer le temps d’exécution (en cycles) de chaque itération de la boucle. ; 3 ; 4 : : mov jmp $L474: mov add mov $L473: cmp jge ; 6 DWORD PTR _i$[ebp], 0 SHORT $L473 eax, DWORD PTR _i$[ebp] eax, 1 DWORD PTR _i$[ebp], eax DWORD PTR _i$[ebp], 100 SHORT $L475 : mov mov mov add mov mov mov ; 7 int i; for (i = 0; i < 100; i++) : jmp $L475: ; 00000064H a[i] = b[i] + c ; ecx, DWORD PTR _i$[ebp] edx, DWORD PTR _b$[ebp] eax, DWORD PTR [edx+ecx*4] eax, DWORD PTR _c$[ebp] ecx, DWORD PTR _i$[ebp] edx, DWORD PTR _a$[ebp] DWORD PTR [edx+ecx*4], eax } SHORT $L474 Numéro 19 – Communication Quelle est la différence entre une transmission synchrone et une transmission asynchrone ? 5 Numéro 20 – Communication Parmi les affirmations suivantes, indiquer celles qui sont vraies et celles qui sont fausses. Justifier brièvement vos réponses. Dans une transmission asynchrone en mode caractère par caractère (exemple : communication du SCI) : a) L’intervalle de temps entre deux (2) caractères est fixe. b) L’intervalle de temps entre deux (2) bits d’un même caractère est fixe. c) L’émetteur et le récepteur doivent toujours être parfaitement synchronisés. d) Les bits sont transmis à la cadence d’un cycle de l’horloge par bit. e) Le débit est en général supérieur à celui que l’on peut avoir dans une transmission synchrone. 6