ELE542 – Systèmes ordinés en temps réel

publicité
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
Téléchargement