ELE-542 Systèmes ordinés en temps réels. Cours # 3 Langage C et temps réel

Dimension: px
Commencer à balayer dès la page:

Download "ELE-542 Systèmes ordinés en temps réels. Cours # 3 Langage C et temps réel"

Transcription

1 ELE-542 Systèmes ordinés en temps réels Cours # 3 Langage C et temps réel Jean-Marc Beaulieu et Bruno De Kelper Site internet: Systèmes ordinés en temps réel 1 Qu est ce qui influence le temps d exécution Compilateur Matériel Compilateur Optimisation du code Déroulement de boucle Utilisation de registres «Inlining» Instructions spéciales du CPU Algorithmes Programme Matériel Processeur Taille (8, 16, 32 bits) Instructions Pipeline, cache Mémoire Bus système Programme Choix des variables Type des variables Emplacement en mémoire Choix des opérations Algorithmes Algorithmes Systèmes ordinés en temps réel 2 1

2 Le matériel Bus de données Bus d adresse Processeur Mémoire Systèmes ordinés en temps réel 3 Le langage C pour le temps réel Ce qu on veut analyser : En quoi le langage C aide-t-il à la conception temps réel? Quelles sont les caractéristiques désirables pour le T.R? En C, qu est-ce qui influence le temps d exécution? Pourquoi le langage C? Les compilateurs sont très performants; Le temps de développement est beaucoup plus court; Beaucoup de développement déjà existant; Portabilité d une architecture à une autre. Systèmes ordinés en temps réel 4 2

3 Architecture du programme Systèmes ordinés en temps réel 5 Modularité en langage C La modularité permet de décomposer un projet en bloc plus facile à gérer. En C, nous avons la notion de fonction et la notion de bloc de code (code entre { }). Au plus haut niveau, l approche consiste à découper le code en utilisant plusieurs types de fichiers. Identifier les fichiers sources (.c); Identifier les fichiers d en-têtes et d inclusions (.h); Identifier les fichiers de données et les fichiers spéciaux. Systèmes ordinés en temps réel 6 3

4 Sortes de fichiers Sortes de fichiers.c Code source en C. Le module principal doit contenir la définition de la fonction main(). Permet d exploiter la compilation séparée..obj,.o Code objet. Fonction compilée traduite en assembleur mais non localisée en mémoire. (adresse relative) Code orienté selon un processeur cible. Résultant de la compilation d une source.c. Systèmes ordinés en temps réel 7 Sortes de fichiers.h Fichier d inclusion et d en-têtes; Utilisation : #include <math.h> /*répertoire système*/ #include math.h /*répertoires courants*/ Contient les déclarations de fonctions (prototype); Contient les structures de données (typedef STRUCT); Contient les définitions communes (#define PI ); Contient les variables globales. Systèmes ordinés en temps réel 8 4

5 Sortes de fichiers.lib Bibliothèque; Regroupement de fonctions compilées sous format objet (.o); Outil tlib pour construire et générer une bibliothèque..exe (.hex) Exécutable; Contient un code compilé à charger en mémoire; Comprend le code du programme et de tous ces modules, localisés en mémoire; Résultant de l édition des liens (Linker). Systèmes ordinés en temps réel 9 Processus de compilation.h.h.c.c Compilateur.h Compilateur : Traduction en langage machine. Adresse relative. Laisse un espace pour les appels de fonctions. Utilise les prototypes des fonctions appelées pour garder un espace. Étape lente Votre source appelle; fabs(float); /*nécessite l entête dans math.h*/.lib.o.o Linker.exe Linker : Assemble toutes les portions de code compilées. Place des adresses absolues. Le code des fonctions provient de vos.o ou des biblio.lib. Votre source a besoin du code compilé de fabs(), alors il le prendra dans math.lib. Systèmes ordinés en temps réel 10 5

6 Avantages et désavantages de la modularité Avantages : Masquage Fonctionnement interne caché. Permet une description du module en terme d entrée/sortie sans les détails internes. Interface par paramètres La description des paramètres indique sur quelles données la fonction va travailler. Traitement spécifique et restreint Chaque module a une tâche spécifique. Division possible du travail Chaque membre de l équipe s occupe d un module. Systèmes ordinés en temps réel 11 Avantages et désavantages de la modularité Auto-suffisance Un module est complet en lui-même. Il peut être testé séparément en lui fournissant des paramètres de vérification. Compilation séparée On peut recompiler que les sources modifiées avec des utilitaires. (make, project) Réutilisation On peut réutiliser les blocs dans un autre projet ou encore les commercialiser avec seulement (.lib +.h) Les désavantages sont très faibles : Ralentissement causé par les accès mémoire supplémentaires (appel de fonctions) Systèmes ordinés en temps réel 12 6

7 Note sur la programmation Pour éviter programme confus; difficile à déboguer; difficile à modifier ou à adapter. Règles générales d écriture de programme Indentation des blocs et des boucles Aération du code source En-tête de fonction Description, paramètres E/S, structure, date, auteur) Commentaires Nom de variable significatif Systèmes ordinés en temps réel 13 Réentrance Et Passage de paramètres Systèmes ordinés en temps réel 14 7

8 Réentrance et récursivité Quelques définitions : Réentrance Propriété d une fonction qui peut être interrompue et être appelée de nouveau dans la fonction de traitement de l interruption. Récursivité Propriété d une fonction qui s appelle elle-même. Région critique ou atomique Partie de code qui ne peut pas être interrompue. Systèmes ordinés en temps réel 15 Réentrance et récursivité En C, les conditions pour avoir une fonction réentrante sont : 1) La fonction utilise seulement des variables locales (sur la pile) -- Attention aux pointeurs; 2) La fonction appelle seulement des fonctions réentrantes; 3) La fonction utilise les variables non locales de façon atomique. -- En C, les accès sont protégés par désactivation des interruptions, sémaphores, etc... Systèmes ordinés en temps réel 16 8

9 Passage de paramètres Il existe 2 grandes catégories pour le passage de paramètres à une fonction. Par liste de paramètres Passage par valeur; Passage par référence. Par variables globales Systèmes ordinés en temps réel 17 Passage par liste de paramètres Attention. Souvent les IRQ sont désactivées durant la copie des paramètres sur la pile. a b c d Augmente le temps de latence des interruptions Prenons un exemple de fonction : float moyenne(a, b, c, d); une IRQ pourrait survenir au milieu du transfert des paramètres sur la pile, et cette IRQ pourrait modifier les valeurs a, b, c, d; Alors on aura pour la fonction moyenne( ) des nouvelles valeurs et des anciennes valeurs. Systèmes ordinés en temps réel 18 9

10 Passage par variables globales Variables globales Visibles de tous les modules parce que définies à l extérieur; Possibilité de référer en mode d adressage direct, donc; Plus rapide parce qu elles ne passent pas par la pile; Pas nécessaire de désactiver les interruptions; Seule façon (sauf par registre) de transmettre un paramètre à une routine d interruptions. DANGER n importe quel module peut modifier la valeur; difficile à documenter Systèmes ordinés en temps réel 19 Comparaison Quoi faire si on a plusieurs paramètres à transmettre à une fonction? Rendre toutes les variables globales : peu pratique Transmettre tous les paramètres : lent, beaucoup d accès pile Transmettre un pointeur sur une liste oui, si les valeurs sont placées à la suite en mémoire... En résumé... Si le temps est "moins" important ou crucial Liste de paramètres; Meilleur pour la modularité, encapsulation entretien du code. Si le temps est très, très important Variable globale Si on doit transmettre à une routine d IRQ Variable globale Systèmes ordinés en temps réel 20 10

11 Les données Systèmes ordinés en temps réel 21 Gestion de données Outre les variables GLOBALES et LOCALES Classes d'allocation (Un préfixe à la déclaration ) Permet de spécifier l endroit où sont emmagasinées les données Dans la région mémoire de la pile, le heap, les données, un registre; Register un registre du CPU sera attribué, si possible ; Static une variable globale au fichier seulement.; Auto une variable locale est une auto par défaut... Extern pour partager une variable globale entre fichiers Volatile une variable qui est modifiée par des instructions non apparentes Exemple : variable modifiée dans une interruption Systèmes ordinés en temps réel 22 11

12 Types de données Répertoire Le langage C possède un grand répertoire de types disponibles au programmeur. Plus facile de structurer les données; Plus grand choix d espace d enregistrement; Exemple : La valeur du CAN 8 bits : unsigned char. Le C permet des opérations sur des types différents. Mais la conversion implicite peut entraîner une pénalité dans le temps d'exécution. Systèmes ordinés en temps réel 23 Types de données Systèmes ordinés en temps réel 24 12

13 Opérations sur des données Dépend du processeur Les opérations ont des performances différentes selon le type des données : Dépend du processeur LENT RAPIDE double float long int int char RAPIDE X double float long int int char + double float long int int char - double float long int int char & long int int char Systèmes ordinés en temps réel 25 Opérations sur des données Soit x,y,z : entiers 16 bits Processeur 8 bits 2 opérations d addition z LSB = x LSB + y LSB z MSB = x MSB + y MSB + carry 2 cycles d écriture 2 cycles de lecture z = x + y 1 cycle d écriture 1 cycle de lecture Processeur 16 bits 1 opération d addition z = x + y Systèmes ordinés en temps réel 26 13

14 Types de données Conversion implicite des données En C, les 2 données d une opération sont converties au type le plus exigeant avant d effectuer l opération. Ceci a pour conséquence : Long double double float unsigned long int long int unsigned int char int short Temps d exécution plus long *** en général ***; Mécanisme pas facile à prévoir; Exemple de problématique ( le 2 est pris comme un int, alors) unsigned char resul, n = 5; resul = 2 * n; Solution, la conversion explicite («casting») resul = (unsigned char)2 * n; Un autre exemple plus complexe : *(int *)(0x0074) = (int) codec_interrupt; Systèmes ordinés en temps réel 27 Valeurs logiques versus entiers Le langage C ne possède pas de type booléen, donc les opérations sont faites avec des variables entières (ou char). Pour utiliser efficacement les ressources, on regroupe souvent plusieurs booléens. Zéro = FAUX et non-zéro = VRAI Exemples : 7 RXC Bits Bits 10-5 Bits 4-0 Hours Minutes Seconds 2 6 TXC MS/DOS packed representation of time. 5 UDRE 4 FE 3 DOR 2 PE 1 U2X 0 MPCM Registre UCSRA du UART du ucontrôleur ATMega16 Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 28 14

15 Deux types d opérateurs : Booléens et binaires Opérations Opérateur booléen Opérateur binaire AND && & OR XOR non-supporté ^ NOT! ~ Décalage à gauche non-supporté << Décalage à droite non-supporté >> Tester un bit if ((bits if (bits & & 64) (1 <<!= 0) 6)) /* /* Test Test du du bit bit 6 */ 6 */ & b 7 b 6 b 5 b 4 b 3 b 2 b 1 b b Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 29 Assigner un bit Opérations sur les bits bits = bits (1 << 7) ; /* sets bit 7 */ b 7 b 6 b 5 b 4 b 3 b 2 b 1 b b 6 b 5 b 4 b 3 b 2 b 1 b 0 Remise à zéro d un bit bits &= ~(1 << 7) ; /* resets bit 7 */ Note : (1 << 7) ~(1 << 7) Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 30 15

16 Opérations sur les bits Inverser un bit XOR bits ^= (1 << 6) ; /* inversion du bit 6 */ Attention à la taille par défaut des variables entières (int) selon le compilateur/processeur Si les int sont de 32 bits 0xFFFFFFFFL & ~(1 << 14) 0xFFFFFFFFL & ~(1L << 14) Si les int sont de 16 bits 0xFFFFFFFFL & ~(1 << 15) 0xFFFFFFFFL & ~(1L << 15) FFFFBFFF (ok) FFFFBFFF (ok) 00007FFF (error) FFFF7FFF (ok) Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 31 Utilisation des structures pour manipuler les bits Exemple : Bits Bits 10-5 Bits 4-0 Hours Minutes Seconds 2 struct { unsigned seconds :5, minutes :6, hours :5 ; } time ; time.hours = 13 ; time.minutes = 34 ; time.seconds = 18 / 2 ; Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 32 16

17 Exemple : Bits réservés mais inutilisés typedef struct { unsigned CF :1, /* Bit 0: Carry Flag */ :1, /* Bit 1: (unused) */ PF :1, /* Bit 2: Parity Flag */ :1, /* Bit 3: (unused) */ AF :1, /* Bit 4: Auxiliary Carry Flag */ :1, /* Bit 5: (unused) */ ZF :1, /* Bit 6: Zero Flag */ SF :1, /* Bit 7: Sign Flag */ TF :1, /* Bit 8: Trap Flag */ IF :1, /* Bit 9: Interrupt Enable Flag */ DF :1, /* Bit 10: Direction Flag */ OF :1, /* Bit 11: Overflow Flag */ :4 ; /* Bits 12-15: (unused) */ } PSW ; Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 33 Accès selon différents types UNION Vous voulez accéder aux mêmes cases mémoires mais en utilisant des types différents. union { 31 0 unsigned long dd ; dd unsigned short dw[2] ; dw[1] dw[0] unsigned char db[4] ; db[3] db[2] db[1] db[0] } ; Occupe le même espace en mémoire Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 34 17

18 Exemple : Structure et union de bits typedef union { struct { char TXB8 :1, /* Bit 8 : transmission */ RXB8 :1, /* Bit 8 : réception */ UCSZ2 :1, /* MSB de Taille de données */ TXEN :1, /* Activation du transmetteur */ RXEN :1, /* Activation du récepteur */ UDRIE :1, /* Registre de donnée vide */ TXCIE :1, /* Fin de transmission */ RXCIE :1, /* Fin de réception */ } Bits; unsigned char Byte; } USCRB ; Exemple d utilisation : UCSRB.Byte = (char) 0x00; UCSRB.Bits.TXEN = 1; UCSRB.Bits.RXEN = 1; Réf. : Lewis, Chap. 3 Systèmes ordinés en temps réel 35 Accès aux ports d entrées / sorties Accès de type «I/O Mapped» Utilisation d instructions spéciales (IN ou OUT) ou de fonctions C [inportb() ou outportb()]. Certains ports sont accessibles seulement en lecture ou en écriture. Plusieurs registres peuvent avoir la même adresse dans l espace des adresses E/S. Dans ce cas, la procédure d accès est importante (ordre d accès, lecture/écriture, bit de sélection, ). Exemple : // lire contenu du registre de données, port série COM3, 8250 carac_recu = inportb (0x03E8); Systèmes ordinés en temps réel 36 18

19 Compilateur Systèmes ordinés en temps réel 37 Techniques d optimisation utilisées par les compilateurs Utilisation d identités arithmétique Utilise les identités arithmétique pour éliminer des opérations inutiles tels que : z = x + 1*y z = x + y z = 3*x + 0 z = 3*x Réduction de force des opérations Choisit les instructions les plus performantes, tel que z = 8*x z = x << 3 Élimination de sous expressions communes Regroupe des sous expressions communes, tel que t = a*b x = y + a*b x = y + t y = a*b + z y = t + z Systèmes ordinés en temps réel 38 19

20 Techniques d optimisation utilisées par les compilateurs Utilisation de fonctions intrinsèque Remplace des appels de fonctions par des «macro» insérées directement à la place de l appel de fonction. Pliage de constantes Regroupe les constantes ensembles, tel que z = 7*x*2 z = 14*x Optimisation des parties invariantes des boucles Extrait les parties des boucles qui ne changent pas, tel que x = 100; while (x > 0) { x = x y + z; } x = 100; t = y + z; while (x > 0) { x = x + t; } Systèmes ordinés en temps réel 39 Techniques d optimisation utilisées par les compilateurs Élimination des inductions dans les boucles Élimination des calculs de «décalage» inutiles, tel que for (i = 0; i < 10; i++) a[i+2] = 1; for (i = 2; i < 12; i++) a[i] = 1; Utilisation de registres et de mémoire cache Place les variables fréquemment utilisées dans des registres du processeur ou dans la mémoire cache. Élimination de code «mort» ou inatteignable Élimine le code qui ne sera jamais exécuté, tel que debug = 0; if (debug) x = x + t; Systèmes ordinés en temps réel 40 20

21 Techniques d optimisation utilisées par les compilateurs Propagation de constantes Certaines assignations à des variables peuvent être remplacées par des constantes, tel que x = 100; y = x; x = 100; y = 100; Élimination de stockage «mort» ou inutile Certaines variables utilisées pour du stockage temporaire peuvent être éliminées, tel que t = y + z; x = sin(y+z); x = sin(t); Élimination de variables «mortes» Élimine les variables qui semblent inutiles, tel que x = y + z; x = y; x = y; Systèmes ordinés en temps réel 41 Techniques d optimisation utilisées par les compilateurs Équations logiques court-circuitées Transforme une équation logique compliquée en une série de sous-expressions qui seront évalué une à la fois, tel que if (x > 0) && (y > 0) z = 1; Déroulement de boucle Déroule les boucles courtes, tel que for (i = 0; i < 3; i++) a[i] = 7*b[i+2]; if (x > 0) if (y > 0) z = 1; a[0] = 7*b[2]; a[1] = 7*b[3]; a[2] = 7*b[4]; Systèmes ordinés en temps réel 42 21

22 Optimisation du code Systèmes ordinés en temps réel 43 Trucs et conseils pour optimiser le code C Limites et mise en garde Les langages de haut niveau offrent plus ou moins de contrôle sur les instructions générées; Les options du compilateur (en particulier, le niveau d optimisation) ont un impact prépondérant sur la performance; Rien ne peut remplacer la sélection d algorithmes performants. Systèmes ordinés en temps réel 44 22

23 Truc 1 Réduire l utilisation de la pile Réduire les paramètres et les variables locales. Réduire le nombre de fonctions. Compromis entre performance et clarté du code. Simuler les fonctions Il est possible de «simuler ou mimer» les fonctions avec les directives de pré-compilation. Ex. : #define poly2( a, b, c, x) \ ( (a)*(x)*(x)+ (b)*(x)+(c) ) Systèmes ordinés en temps réel 45 Truc 2 - Pas d allocation dynamique Ne pas utiliser l allocation de mémoire dynamique. L allocation de mémoire fait appel au système d exploitation pour obtenir une portion de la mémoire disponible; C est un processus lent. Solution : Allocation statique, ou; Allocation dynamique SEULEMENT durant l initialisation. Systèmes ordinés en temps réel 46 23

24 Truc 3 Variables de type register Déclarer les variables très utilisées (ex. : les compteurs) comme registres. Mode d'allocation register. Il n est pas sous garantie que le processeur utilisera un registre, mais c est souvent le cas. Systèmes ordinés en temps réel 47 Truc 4 Rendre les conversions explicites Le langage C se convertit toujours au type qui exige le plus de ressources avant de faire des opérations. Exemple : double multiplicateur = 2.0; int x, n; x = ((int) multiplicateur) * n; Comme x et n sont de type int, on évite que l'opération soit effectuée en double. Systèmes ordinés en temps réel 48 24

25 Truc 5 Réduire la complexité mathématique L'objectif est d'utiliser des instructions plus simples pour faire les mêmes calculs (pyramide des instructions). Plus rapide Logiques Bit shift Branchements ADD CMP SUB Multiplication Division Racine carrée Exemple : * 2 n Remplacer par un décalage à gauche de n bits; Division par x * 1/x si x ne change pas ou si votre CPU offre une instruction INVERSION plus performante. Systèmes ordinés en temps réel 49 Truc 6 Éliminer les appels au OS ou au BIOS Les appels au système d'exploitation (ou au BIOS) peuvent être plus lents parce que : Le système effectue des opérations / vérifications afin de protéger le système. Validation des arguments; Vérification des erreurs. Implique généralement une interruption logicielle; Lors des appels au système, celui-ci en profite souvent pour faire des mises à jour internes ("housekeeping") Exemple : mise à jour de l'horloge. Deux problèmes : Solution est beaucoup moins portable; Votre code doit être optimisé plus vite que celui du OS. Systèmes ordinés en temps réel 50 25

26 Truc 7 Ordre dans l'accès au tableau En langage C, les éléments des tableaux sont emmagasinés "par colonnes«. table[5][3] Dans une boucle, optimiser l'accès en "bouclant" d'abord sur le dernier index. Exemple : int somme = 0; for (i=0; i<5;i++) for (j=0;j<3;j++) somme += table[i][j]; Systèmes ordinés en temps réel 51 Truc 8 Réduire et simplifier les équations On a avantage à éliminer la répétition de calculs Factorisation xp[i] = cos(theta) * x[i] + sin(theta) * y [i]; yp[i] = - sin(theta) * x[i] + cos(theta) * y [i]; c_theta = cos(theta); s_theta = sin(theta); xp[i] = c_theta* x [i] + s_theta * y [i]; Éliminer les opérations inutiles *0, *1, +0, -0 a = b x = sqrt ( a 2 b 2 ) Systèmes ordinés en temps réel 52 26

27 Truc 9 Pré-calcul des constantes Exemple : w = 2 * PI * frequence; #define 2PI w = 2PI *frequence; Systèmes ordinés en temps réel 53 Truc 10 Simplifier les boucles Éliminer les expressions constantes ou communes dans les boucles. Exemple : for (i=0; i < 100 ; i++) x[i] = x [i] + 2*w*t; devient z = 2*w * t; for (i=0; i < 100 ; i++) x[i] = x [i] + z; // on sauve 198 multiplications Systèmes ordinés en temps réel 54 27

28 Truc 11 Dérouler les petites boucles Dans les petites boucles, on accepte d'augmenter la taille du programme pour éliminer les tests. for (i=1; i < 4 ; i++) x[i] = x [i] + 1; devient x[1] = x [1] + 1; x[2] = x [2] + 1; x[3] = x [3] + 1; On sauve 9 instructions car le "for" est en fait INC TEST (..) JMP Systèmes ordinés en temps réel 55 Truc 12 Combiner les boucles Il faut regrouper les boucles : for (i=0; i < 100 ; i++) x[i] = y [i] * 8; for (i=0; i < 100 ; i++) z[i] = x [i] * y[i]; devient for (i=0; i < 100 ; i++) { x[i] = y [i] * 8; z[i] = x [i] * y[i]; } On sauve 300 instructions car le "for" est en fait INC TEST (..) JMP Systèmes ordinés en temps réel 56 28

29 Truc 13 Choisir un type de variable plus simple Lorsqu'on utilise que "certaines propriétés" d'un type on peut essayer de prendre un type plus simple. Exemple : Simuler les variables réelles (float) par une variable entière multipliée par la précision voulue Si la précision sur un calcul est limitée (ex.: par le capteur), alors nous pouvons utiliser des entiers. Float int Plus rapide de faire les calculs avec des opérations entières Systèmes ordinés en temps réel 57 Truc 14 Table de correspondance Si vous utilisez souvent une fonction mathématique complexe, il peut être avantageux d'échantillonner la fonction et de calculer ses valeurs par interpolation. Exemple : sin (x) = x x 3 /3! + x 5 /5! x 7 /7! + x 9 /9! - x sin(x) 0 Note : Possible de perdre de la précision sur la valeur obtenue. Taille du tableau augmente rapidement avec le nombre de variables. Systèmes ordinés en temps réel 58 29

30 (Truc 15) Écrire le code en assembleur En principe, il est possible d'écrire le code en assembleur afin d'obtenir la meilleure performance possible. En pratique, Difficile (coûteux) de produire du code assembleur; Difficile (coûteux) de produire du code "plus optimisé" que les compilateurs; Difficile à maintenir et non portable. En pratique, on optimise que des petites portions très critiques du code. Pas en examen Systèmes ordinés en temps réel 59 Mesure de performance Systèmes ordinés en temps réel 60 30

31 3.9 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 Boucle sur plusieurs itérations; Chronométrage de haute précision. Décompte d instructions Décompte des entrées / sorties Trucs possibles Systèmes ordinés en temps réel Mesure directe de la performance Mesure du temps d exécution dans une boucle mesure_du_temps_avant; // ex: gettime() ou clock() for (i=0, i < Nb_itération ; i++) ma_fonction ( ); mesure_du_temps_après; Avantages : Pas besoin d une mesure très précise de l horloge; Moyenne sur les plusieurs exécutions. 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 62 31

32 3.9 Mesure du temps Horloge vs minuterie Deux concepts interreliés Horloge («Clock») Fournie un mesure du temps Définition : 1 seconde = 1/ de la journée solaire moyenne; 1 seconde = 1/ année 1900 au tropique; 1 seconde = vibration Cesium 133. Mesure du temps intervalle entre deux évènements. Minuterie («Timer») Génère un événement après un intervalle de temps spécifié. Systèmes ordinés en temps réel 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 64 32

33 3.9 ANSI C Fonction clock clock_t clock( void ); 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 = Résolution : ± 1 milliseconde Systèmes ordinés en temps réel Test Clock on Windows2000 Programme de test : start = clock(); Sleep (1); // sleep time in milliseconds finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; Résultat : (finish - start) = 15 et duration = s Avec Sleep(0) ou sans Sleep(); (finish - start) = 0 et duration = 0 Systèmes ordinés en temps réel 66 33

34 3.9 Mesure du temps INTEL Mesure du temps d exécution avec instruction RDTSC : read time-stamp counter Registre de 64 bit incrémenté à chaque cycle du CPU RDTSC 32 bits dans EDX et 32 bits dans EAX Avantages : Permet une mesure de sections très petites. Inconvénients : Disponible seulement sur les processeurs Pentiums; Besoin de «sérialiser» l exécution; Pentium support l exécution hors ordre (out-of-order); Les instructions en assembleur ne sont pas nécessairement exécutées dans l ordre où elles apparaissent dans le code; Attention à l impact du compilateur (ex. : optimisation); Vérifier la linéarité. Chrono.pdf Ref: Systèmes ordinés en temps réel Mesure directe de la performance INTEL Exemple : (Mode DEBUG Pas d optimisation) float z,q,x,y,result; result=0.0f; x=2.0f; y=100.0f; z=12.0f; q=5.0f; // CODE DANS LA BOUCLE de mesure du temps d'execution z += y; q *= x; result = z/q; Moyenne (5 itérations) Average cycles per loop : Average cycles per loop : Average seconds per loop: (incluant la mesure) (excluant la mesure) secondes Moyenne (5 000 itérations) Average cycles per loop : (incluant la mesure) Average cycles per loop : (excluant la mesure) Average seconds per loop: secondes Pourquoi? Systèmes ordinés en temps réel 68 34

35 3.9 Mesure directe de la performance INTEL Exemple : (Mode DEBUG Pas d optimisation) float z,q,x,y,result; result=0.0f; x=2.0f; y=100.0f; z=12.0f; q=5.0f; // CODE DANS LA BOUCLE de mesure du temps d'execution x=2.0f; y=100.0f; z=12.0f; q=5.0f; z += y; q *= x; result = z/q; Temps d éxécution dépend des données Moyenne (5 itérations) Average cycles per loop : Average cycles per loop : Average seconds per loop: (incluant la mesure) (excluant la mesure) secondes Moyenne (5 000 itérations) Average cycles per loop : (incluant la mesure) Average cycles per loop : (excluant la mesure) Average seconds per loop: secondes Optimisation sur plusieurs itérations? Systèmes ordinés en temps réel Mesure directe de la performance INTEL Exemple : (Mode RELEASE optimisation temps d exécution) float z,q,x,y,result; result=0.0f; x=2.0f; y=100.0f; z=12.0f; q=5.0f; // CODE DANS LA BOUCLE de mesure du temps d'execution x=2.0f; y=100.0f; z=12.0f; q=5.0f; z += y; q *= x; result = z/q; Moyenne (5 itérations) Average cycles per loop : Average cycles per loop : Average seconds per loop: (incluant la mesure) (excluant la mesure) secondes Moyenne (5 000 itérations) Average cycles per loop : (incluant la mesure) Average cycles per loop : (excluant la mesure) Average seconds per loop: secondes Compilation AVR Systèmes ordinés en temps réel 70 35

36 3.9 Décompte des instructions Analyse du code assembleur Évaluation du temps d exécution de chaque instruction. Difficultés et limites Pas facile / impossible d estimer le temps d exécution d une séquence d instructions sur les architectures complexes; Souvent le temps d exécution varie; Travail laborieux. Exemple : Entrée / sortie par interrogation BYTE8 Serial_Input(void) { /* Attendre l arrivée d une nouvelle donnée */ while ((inportb(status_port) & READY) == 0) {} return inportb(data_port) ; } void Serial_Output(BYTE8 ch) { /* Attendre que le périphérique soit prêt */ while ((inportb(status_port) & READY) == 0){} outportb(data_port, ch) ; } Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel Décompte des instructions _Serial_Input: MOV DX,02FDh ; DX Status Port Address SI1: IN AL,DX ; Read Input Status Port TEST AL, B ; Check the Ready Bit JZ SI1 ; Continue to wait if not ready MOV DX,02F8h ; Else load DX with Data Port Address XOR EAX,EAX ; Pre-clear most significant bits of EAX IN AL,DX ; Read Data Port RET ; return to caller with data in EAX Réf: Lewis Chap 6. Systèmes ordinés en temps réel 72 36

37 3.9 Décompte des entrées / sorties Modèle approximatif basé sur l observation que la performance est souvent limitée par le temps nécessaire aux accès mémoire. On doit inclure : La lecture des instruction; Les accès aux registres des périphériques. On néglige : Les facteurs d accélération dus à la mémoire cache, à la présence d un pipeline et de plusieurs ALU; L estimation est donc pessimiste. ET TRÈS IMPRÉCISE Réf: Lewis Chap 6. Systèmes ordinés en temps réel Décompte des entrées / sorties ; Opcode Immediate Stack I/O _Serial_Input: ; Bytes Bytes Bytes Transfers MOV DX,02FDh ; 1 2 SI1: IN AL,DX ; 1 1 TEST AL, B ; 1 1 JZ SI1 ; 1 1 MOV DX,02F8h ; 1 2 XOR EAX,EAX ; 1 IN AL,DX ; 1 1 RET ; octets pour les instructions, 4 octets pour la pile, 2 octets pour les entrées / sorties Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel 74 37

38 3.9 Décompte des entrées / sorties Exemple : Architecture considérée ( c.f. lewis) Accès en mémoire 60 ns; Bus PCI 33 MHz 30 ns par accès. En général, les transferts demandent plusieurs cycles d accès. Décompte: (14 octets / (4 octets par cycle)) * 60 ns = 240 ns (instructions) (4 octets / (4 octets par cycle)) * 60 ns = 60 ns (pile) 2 octets * 30 ns = 60 ns (Entrée / sortie) Total = 360 ns Taux de transfert maximum = 1/360 ns = 2.78 Moctets/s Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel Décompte des entrées / sorties Autre exemple : Entrées / sorties par interruption Temps de réponse : R = L + C + L + A + C IRQV L i = temps de la plus longue instruction PUSHA sauvegarde des registres 1 cycle d accès mémoire pour l instruction 8 cycles d accès mémoire pour écrire les 8 registres 9 * 60 ns = 540 ns L IRQV = temps de traitement de l interruption (niveau matériel) 12 octets sur la pile (3 cycles) 180 ns 1 octet E/S (lecture du vecteur) 30 ns 16 octets pour chargement PC (4 cycles) 240 ns Total = 450 ns i s i r Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel 76 38

39 3.9 Interruptions Intel x86 (mode protégé) Réponse aux interruptions Action 1. Push EFlags register. 2. Disable interrupts. Detailed description ESP ESP - 4; MEM 32 [ESP] EFlags IF Flag 0 (Also clears TF Flag) Bytes Transferred 4 (stack write) 3. Push CS ESP ESP - 4; MEM 32 [ESP] CS 4 (stack write) 3. Push EIP ESP ESP - 4; MEM 32 [ESP] EIP 4 (stack write) n/a 4. Identify interrupt. 5. Load CS and EIP Read interrupt type code from data bus. CS visible,eip IDT 64 [8 int. type code] CS hidden GDT 64 [CS visible ] 1 (I/O read) 8 (IDT read) + 8 (GDT read) Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel Décompte des entrées / sorties Instr. Data Stack I/O _Serial_Input_ISR: Bytes Bytes Bytes Transfers STI ; Enable high prior. Ints. 1 PUSH EAX ; Preserve contents 1 4 PUSH EDX ; of EAX and EDX. 1 4 MOV DX,02FDh ; Retrieve the data and 3 IN AL,DX ; clear the request. 1 1 MOV [_serial_data],al ; Save the data away. 5 1 MOV AL, b ; Send EOI command to 2 OUT 20h,AL ; Prog. Interrupt Ctlr. 2 1 POP EDX ; Restore orig. contents 1 4 POP EAX ; of the registers. 1 4 IRET ; Restore EIP and EFlags octets pour les instructions, 1 octet pour la donnée 28 octets pour la pile, 2 octets pour les entrées / sorties Réf. : Lewis, Chap. 6 Systèmes ordinés en temps réel 78 39

40 3.9 Décompte des entrées / sorties Décompte : (19 octets / (4 octets par cycle)) * 60 ns = 300 ns (instructions) (28 octets / (4 octets par cycle)) * 60 ns = 420 ns (pile) ( 1 octet / (4 octets par cycle)) * 60 ns = 60 ns (donnée) 2 octets * 30 ns = 60 ns (Entrées / sorties) Total = 840 ns Taux de transfert maximum = 1/1.95 µs = Moctets/s Finir l instruction Réponse matérielle Temps d exécution PUSHA: 0.54 µs 0.45 µs 0.84 µs Total = 1.95 µs Réf: Lewis Chap 6. Systèmes ordinés en temps réel 79 40

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

Structure d un programme

Structure d un programme Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé

Plus en détail

Ordinateurs, Structure et Applications

Ordinateurs, Structure et Applications Ordinateurs, Structure et Applications Cours 10, Les interruptions Etienne Tremblay Université Laval, Hiver 2012 Cours 10, p.1 Les interruptions du 8086 Une interruption interrompt l exécution séquentielle

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011 Temps Réel Jérôme Pouiller Septembre 2011 Sommaire Problèmatique Le monotâche Le multitâches L ordonnanement Le partage de ressources Problèmatiques des OS temps réels J. Pouiller

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre Assembleur Faculté I&C, André Maurer, Claude Petitpierre INTRODUCTION Logiciel utilisé Faculté I&C, André Maurer, Claude Petitpierre MEMOIRE Mémoire Faculté I&C, André Maurer, Claude Petitpierre Mémoire

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Le traitement du temps

Le traitement du temps Programmation Système Mesure Horloges Sommeil Mise en forme Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/ enib, F.H... 1/30 Intérêt Cadencer les

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Programmation assembleur : aperçu

Programmation assembleur : aperçu Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

GPA770 Microélectronique appliquée Exercices série A

GPA770 Microélectronique appliquée Exercices série A GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Logiciel de base. Première année ENSIMAG

Logiciel de base. Première année ENSIMAG Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Exécution des instructions machine

Exécution des instructions machine Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]

Plus en détail

IFT1215 Introduction aux systèmes informatiques

IFT1215 Introduction aux systèmes informatiques Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Initiation à LabView : Les exemples d applications :

Initiation à LabView : Les exemples d applications : Initiation à LabView : Les exemples d applications : c) Type de variables : Créer un programme : Exemple 1 : Calcul de c= 2(a+b)(a-3b) ou a, b et c seront des réels. «Exemple1» nom du programme : «Exemple

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS CCS Sommaire Généralités sur le langage. 2 Structure d un programme en C.. 3 Les constantes et équivalences.. 4 Les variables...

Plus en détail

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques... Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

Département informatique de l université d Angers

Département informatique de l université d Angers Département informatique de l université d Angers Amélioration d'un logiciel d'émulation du fonctionnement d'un microprocesseur x8 6 SCHAEFFER Florian ROUSSEAUX Billy L3 Informatique Responsable du projet:

Plus en détail

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

CM2 L architecture MIPS32

CM2 L architecture MIPS32 CM2 L architecture MIPS32 Olivier Marchetti (CM-TD-TP) Alexandre Brière (TD-TP) Laboratoire d informatique de Paris 6 Pôle SoC UPMC Année 2014-2015 Instructions MIPS Contrôle Données en MIPS E/S en MIPS

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289

Langage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

TD Architecture des ordinateurs. Jean-Luc Dekeyser

TD Architecture des ordinateurs. Jean-Luc Dekeyser TD Architecture des ordinateurs Jean-Luc Dekeyser Fiche 1 Nombres de l informatique Exercice 1 Une entreprise désire réaliser la sauvegarde de ses données sur un site distant. Le volume de données à sauvegarder

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Réalisation d un OS 32 bits pour PC(x86)

Réalisation d un OS 32 bits pour PC(x86) Rapport projet tutoré Réalisation d un OS 32 bits pour PC(x86) Maxime Chéramy Nicolas Floquet Benjamin Hautbois

Plus en détail

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96 Assembleur i8086 Philippe Preux IUT Informatique du Littoral Année universitaire 95 96 1 Avertissement Ce document décrit le langage d assemblage étudié et utilisé dans le cadre des TP d architecture.

Plus en détail

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

Exécutif temps réel Pierre-Yves Duval (cppm)

Exécutif temps réel Pierre-Yves Duval (cppm) Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications

Plus en détail

Analyse de sécurité de logiciels système par typage statique

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Travaux d études et de recherches Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Étudiant : Luc Michel Encadrants : Frédéric Pétrot Nicolas Fournel 23 mai 2010 TABLE DES MATIÈRES

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail