ELE542 Cours 04 1
Systèmes ordinés en temps réel 1
Cours no4
ELE-542
Systèmes ordinés en temps réels
Cours # 4
Mesure de performance
et aspects matériels
Jean-Marc Beaulieu et Bruno De Kelper
Site internet: http://www.ele.etsmtl.ca/academique/ele542/
Systèmes ordinés en temps réel 2
Cours no4
Mesure de la performance
Objectif : Améliorer l’exécution des portions
critiques de notre code en langage C.
Mesure : Chronométrage des fonctions
Nous allons voir 3 façons d’estimer le temps
d’exécution d’une section de code :
Mesure directe
Décompte d’instructions
Décompte des entrées / sorties
ELE542 Cours 04 2
Systèmes ordinés en temps réel 3
Cours no4
Mesure directe de la performance
Mesure du temps d’exécution dans une boucle
t1= temps();
for (i=0, i < Nb_itération ; i++) {
RIEN, Pas de code, nada
}
t2= temps();
tbase = t2–t
1;
t1= temps();
for (i=0, i < Nb_itération ; i++)
{
Code à mesurer
}
t2= temps();
tmesuré = t2–t
1;
tcode = (tmesuré-tbase)/Nb_itération
Avantage : Pas besoin d’une mesure très précise de l’horloge
Inconvénients : Attention à l’impact du compilateur (i.e. optimisation).
Vérifier la linéarité pour Nb_itération assez grand.
Systèmes ordinés en temps réel 4
Cours no4
Mesure du temps
La mesure de temps dépend :
Du matériel disponible :
Horloge temps réel (real-time clock - RTC)
Chronomètre/Compteur
Du système d’exploitation
Services disponibles
Du langage
Fonctions disponibles (librairies)
ELE542 Cours 04 3
Systèmes ordinés en temps réel 5
Cours no4
Mesure du temps dans un PC
Horloge temps réel (RTC – Motorola 6818) :
Disponible dans les ordinateurs de type PC.
Tient à jour la date et l’heure.
Toujours en fonction, même quand l’ordinateur est
éteint.
Accessible par les services du système d’exploitation.
Lut par le système d’exploitation au démarrage.
Résolution : ± 1 seconde
Systèmes ordinés en temps réel 6
Cours no4
Mesure du temps dans un PC
Chronomètre d’intervalle programmable (PIT – Intel 8253) :
Circuit qui génère des interruptions à intervalle régulier
(DOS : 18.2/sec, Windows : 1000/sec)
Sert habituellement à cadencer le « scheduler » de l’OS
Sert à la mise à jour de l’horloge « software » de
Windows
Fréquence d’horloge = 1.19318 MHz
Résolution = 1.676 µs à 54.93 ms
Accessible par les services du OS et par les fonctions de la
librairie « timer.h » (ANSI-C)
time() clock()
ELE542 Cours 04 4
Systèmes ordinés en temps réel 7
Cours no4
ANSI C – Fonction date & time
Ætime_t time( time_t *timer ); // timer.h
Get current system time as type time_t
Résultat :
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
}; Résolution : ±1 seconde
Systèmes ordinés en temps réel 8
Cours no4
ANSI C – Fonction clock
Æclock_t clock( void ); // timer.h
Retourne le nombre de ticks de l’horloge
Notes :
typedef long clock_t;
Temps en secondes = clock_t/CLOCKS_PER_SEC;
Sous Windows2000, CLOCKS_PER_SEC = 1 000;
Sous DOS (TurboC), CLOCKS_PER_SEC = 18.2.
Résolution = 0.99985 ms
ELE542 Cours 04 5
Systèmes ordinés en temps réel 9
Cours no4
Time Stamp Counter (TSC) :
Compteur incrémenté à chaque cycle de l’horloge du processeur.
Compteur de 64 bits divisé en 2 registres :
Accessible seulement par la commande RDTSC et la lecture des
registres EDX et EAX en assembleur (pas encore supporté en C)
Exemple :
Mesure du temps – Processeurs INTEL Pentium
32 bits32 bits
EAXEDX
Union {
struct {
unsigned LowB;
unsigned HighB;
}
unsigned long Ticks;
} Clock;
Clock.Ticks = 0;
__asm { pushad
CPUID
RDTSC
mov Clock.LowB,eax
mov Clock.HighB,edx
popad
}
Pour la sérialisation
Systèmes ordinés en temps réel 10
Cours no4
Mesure du temps dans un système embarqué
Chronomètre/Compteur (Timer/Counter) :
Les systèmes embarqués contiennent habituellement un
ou plusieurs Timer/Counter sophistiqués.
Servent souvent à cadencer le « scheduler » de l’OS.
Servent aussi à générer des signaux périodiques ou à
mesurer des intervalles entre des évènements.
Accessible par des fonctions spécialisées, codées
directement ou fournies par des librairies spécialisées.
Résolution : Configurable
Souvent très bonne (> 106/sec)
ATMega16 : fhorloge = 14.7456 MHz
Résolution Max = 0.13563 µs
1 / 26 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 !