Département de génie électrique
Professeur : Jean-Marc Beaulieu
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 Fréquence Cycles par instruction
Opérations ALU 43 % 1
Chargements (Load) 21 % 2
Enregistrements (Store) 12 % 2
Branchements 24 % 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.
2
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 Fréquence Cycles par instruction
Opérations ALU 40 % 4
Opérations mémoire 20 % 5
Branchements 40 % 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 ?
3
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 ?
4
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 ; Étiquette pour b[]
_a$ = 12 ; Étiquette pour a[]
_c$ = 16 ; Étiquette pour c[]
_test_code PROC NEAR ; COMDAT
; 3 : int i;
; 4 : for (i = 0; i < 100; i++)
mov eax, DWORD PTR _a$[esp-4] ; Copie adresse de a dans EAX
mov ecx, DWORD PTR _b$[esp-4] ; Copie adresse de b dans EBX
push esi ; Mettre ESI sur la pile
mov esi, DWORD PTR _c$[esp] ; Copie adresse de c dans ESI
push edi ; Mettre EDI sur la pile
sub ecx, eax : EAX – ECX -> ECX
mov edx, 100 ; 00000064H
$L530:
; 5 : {
; 6 : a[i] = b[i] + c ;
mov edi, DWORD PTR [ecx+eax] ; Adresse de b dans EBX (&a-&b+&a)
add eax, 4 ; Addresse de a + 4
add edi, esi ; c + b
dec edx
mov DWORD PTR [eax-4], edi
jne SHORT $L530 ; Branchement
pop edi
pop esi
; 7 : }
; 8 : }
ret 0
_test_code ENDP
_TEXT ENDS ;{
5
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 1 cycle
ADD 1 cycle JNE
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 : int i;
; 4 : for (i = 0; i < 100; i++)
mov DWORD PTR _i$[ebp], 0
jmp SHORT $L473
$L474:
mov eax, DWORD PTR _i$[ebp]
add eax, 1
mov DWORD PTR _i$[ebp], eax
$L473:
cmp DWORD PTR _i$[ebp], 100 ; 00000064H
jge SHORT $L475
; 6 : a[i] = b[i] + c ;
mov ecx, DWORD PTR _i$[ebp]
mov edx, DWORD PTR _b$[ebp]
mov eax, DWORD PTR [edx+ecx*4]
add eax, DWORD PTR _c$[ebp]
mov ecx, DWORD PTR _i$[ebp]
mov edx, DWORD PTR _a$[ebp]
mov DWORD PTR [edx+ecx*4], eax
; 7 : }
jmp SHORT $L474
$L475:
Numéro 19 – Communication
Quelle est la différence entre une transmission synchrone et une transmission asynchrone ?
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !