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

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

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

Transcription

1 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

2 TABLE DES MATIÈRES Table des matières Introduction 2 1 Fonctionnement interne de Qemu La représentation intermédiaire de Qemu : la TCG Méthode actuelle de traduction des instructions Neon Présentation des helpers Surcoûts induits par les helpers Amélioration de la traduction des instructions Neon Première méthode : conversion en micro-opérations TCG classiques Présentation de la méthode Exemple de la traduction du vadd.i16 à l aide de micro-opérations Réflexions sur la méthode Deuxième méthode : ajout de micro-opérations SIMD au sein de la TCG Présentation de la méthode Exemple de traduction du vadd.i16 vers SSE Réflexions sur la méthode Tests et résultats 11 Conclusion 12 Annexes 13 Références 14 1

3 TABLE DES MATIÈRES Introduction Contexte du TER Ce TER s est déroulé dans l équipe SLS (System Level Synthesis) du laboratoire TIMA, sous la direction de Frédéric Pétrot et Nicolas Fournel. Il s inscrit dans un travail de recherche autour de la simulation de systèmes. Avec l augmentation de la part de logiciel dans les systèmes embarqués récents et à venir, la légitimité de l utilisation de modèle de simulation au niveau transactionnel n est plus à démontrer. L apparition et le développement de systèmes embarqués multi-processeurs met en avant une des faiblesses de ce type de simulation, à savoir la lourdeur du ou des simulateurs d architectures utilisés pour la simulations des processeurs. En effet, la multiplication du nombre de processeurs alourdit d autant l utilisation de ces modèles de simulation. Les solutions proposées dans l équipe SLS utilisent principalement deux technologies distinctes pour améliorer ces performances. La première est appelée traduction binaire (binary translation) et consiste en la traduction des instructions de l architecture cible (ARM,...) en instructions de l architecture simulant (architecture dite hôte). Une fois cette traduction effectuée, on exécute la version traduite. Cette technologie est largement utilisées en virtualisation (ex : Qemu[1]) La seconde technique est nommée simulation native. Cette technique consiste en la compilation du logiciel embarqué pour l architecture hôte. Elle impose certains traitements pour permettre l interaction avec la simulation du reste de la plate-forme. Présentation de la problématique, introduction à Qemu Le but de ce TER était de travailler sur cette première méthode, la traduction binaire. La traduction binaire consiste à traduire le code binaire (le code exécutable par un processeur) d une architecture cible, vers celui d une autre architecture, dite h^ote. L architecture cible concernée par ce TER est l architecture ARM. En effet, il est question de travailler sur la manière dont Qemu traduit un sous-ensemble d instructions de cette architecture. Qemu est un logiciel open-source permettant d émuler ou de virtualiser une machine dite machine cible sur une autre machine dite machine hôte. Ces deux machines peuvent être d architectures différentes. Qemu utilise le principe de la traduction binaire dynamique, qui consiste à traduire, à la volée, le code binaire de la machine cible, vers celui de la machine hôte. Le sous-ensemble d instructions de l architecture ARM par lequel ce TER est concerné est celui des instructions Advanced SIMD, dont l implémentation est appelée NEON Technology TM. Dans la suite de ce document, nous ferons référence aux instructions Neon, pour les désigner. Les instructions Neon sont des instructions dites SIMD (Single Instruction, Multiple Data). Ce type d instructions, présent dans la majorité des architectures d aujourd hui, a la particularité de travailler non pas sur un ensemble de données mais sur un ensemble de vecteurs de données. Il est par exemple possible d effectuer l addition de deux vecteurs de quatre entiers chacun, en une opération. Ce type d instructions peut être très bénéfique en terme de performance dans certaines applications. L exemple le plus courant est celui des applications multimédia, par exemple lors de la compression ou décompression audio ou vidéo. Ce genre d instructions s adapte très bien aux algorithmes utilisés dans ces cas, de par la nature régulière de ceux-ci. Actuellement, les instructions Neon sont correctement traduites par Qemu, mais d une manière pénalisante en terme de performance. En effet, nous verrons par la suite qu une telle instruction se traduit sur la machine hôte par : Un appel de fonction, 2

4 1 FONCTIONNEMENT INTERNE DE QEMU Une traduction totalement SISD (Single Instruction Single Data), c est à dire une traduction à base d instructions assembleurs classiques. Le but de ce TER était donc de trouver une ou plusieurs solutions pour améliorer cette traduction, puis d en implémenter une partie afin de pouvoir constater ou non le gain de performance. 1 Fonctionnement interne de Qemu 1.1 La représentation intermédiaire de Qemu : la TCG Lorsque Qemu traduit le code binaire, il ne le fait pas directement de la machine cible vers la machine hôte. Il passe par une représentation intermédiaire appelée la TCG (Tiny Code Generator). Cette représentation intermédiaire est composée d instructions simples appelées micro-opérations, du type de celles des architectures classique (load, store, mov, add, sub, and, or,... ). La traduction, schématisée par la figure 1, se fait donc en deux temps : 1. Pour chaque instruction de l architecture cible, un décodage est effectué, et une première traduction est faite vers la représentation intermédiaire. 2. Une fois cette première traduction effectuée pour un sous-ensemble du code, une deuxième traduction est faite, cette fois-ci de la TCG vers l architecture hôte. Ce sous ensemble est appelé un basic block. Il est délimité par une instruction de type saut dans la TCG. Ainsi, lorsqu un saut vers une adresse ou un retour de fonction est effectué, Qemu considère la fin du basic block, et le début d un autre. Le code ainsi généré est placé dans un buffer, puis est executé par la machine hôte. Ce buffer contient non pas un mais plusieurs basic blocks, dont Qemu garde une trace. Ainsi, si le même basic block doit être exécuté plusieurs fois (plusieurs appels à la même fonction, itérations d une boucle,... ), le code présent dans le buffer est réutilisé, une seconde traduction n est donc pas nécessaire. Cependant, ce buffer est de taille limité. Ainsi, lorsqu il est plein, la politique de Qemu est de le vider complètement pour laisser place à de nouveaux basic blocks. Cette technique de représentation intermédiaire permet à Qemu de pouvoir rendre indépendant l émulation des machines cibles, et le support des machines hôtes. Ainsi, lors de l implémentation d une nouvelle architecture hôte, celle-ci peut directement bénéficier de toutes les architectures cibles déjà émulées, et inversement. De plus, grâce à ce buffer, les performances générales sont très bonnes puisque le code traduit à beaucoup de chances d être réutilisé. 1.2 Méthode actuelle de traduction des instructions Neon Présentation des helpers Une autre technique utilisée dans la TCG pour traduire le code de l architecture cible est l utilisation des helpers. Cette technique consiste, non pas à traduire en représentation intermédiaire, mais à écrire une fonction en code C réalisant l opération voulue. Cette fonction sera compilée au même moment que Qemu. La TCG génère ensuite dans le code hôte un appel vers cette fonction pour exécuter l opération. C est de cette manière que sont traduites la plupart des instructions Neon. Cela est principalement dû à un héritage des anciennes versions de Qemu. La figure 2 montre l utilisation d un helper pour traduire l instruction vadd.i16 1. Cette instruction prend en paramètre trois registres q0, q1 et q2. Ceux sont des registres Neon 128 bits que l instruction considère comme étant des vecteurs de huit entiers de 16 bits. Cette instruction additionne les éléments des vecteurs q1 et q2, et place le résultat dans q0. 1. le fonctionnement de cette instruction est décrit figure 3 3

5 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON 0x : mov sp, r0 0x : sub r0, r0, # x : msr CPSR_c, #209 Code de la machine cible ARM movi_i32 tmp9,$0xdf movi_i32 tmp10,$cpsr_write call tmp10,$0x0,$0,tmp8,tmp9 movi_i32 pc,$0x11c exit_tb $0x0 Représentation intermédiaire TCG 0xb4f270ac: mov $0xd1,%ecx 0xb4f270b1: mov %ecx,(%esp) 0xb4f270b4: mov $0xdf,%ecx 0xb4f270b9: mov %ecx,0x4(%esp) 0xb4f270bd: mov %eax,0x34(%ebp) 0xb4f270c0: mov %edx,0x0(%ebp) 0xb4f270c3: call 0x821fa25 0xb4f270c8: mov $0x11c,%eax 0xb4f270cd: mov %eax,0x3c(%ebp) 0xb4f270d0: xor %eax,%eax 0xb4f270d2: jmp 0x84ed448 Code généré pour la machine hôte x86 Figure 1 Fonctionnement de la traduction dynamique Surcoûts induits par les helpers Cette technique est coûteuse, car pour une unique instruction de la machine cible, un appel de fonction est effectué. Cela implique en plus de faire des arrangements autour de cet appel pour faire correspondre les paramètres et valeurs de retour. De plus, le helper prend en paramètre et renvoie des entiers sur 32 bits, et non sur 128 bits. En effet, cette traduction est totalement SISD, d où ces valeurs sur 32 bits. Pour traduire la totalité du vecteur, la fonction est appelée quatre fois, avec une partie différente du vecteur à chaque appel. De plus, des opérations supplémentaires sont nécessaires pour rendre indépendant l addition des différents entiers sur 16 bits. C est pourquoi le helper commence par isoler les bits de poids fort de ceux-ci avant de faire l addition, et les réinjecte ensuite si nécessaire. Toute cette mécanique induit un sur-coût non négligeable par rapport à l unique instruction vadd.i16 présente dans le code de la machine cible. 2 Amélioration de la traduction des instructions Neon Au court du TER, plusieurs réflexions ont été portées pour déterminer comment améliorer les performances de cette traduction. Principalement deux méthodes sont ressorties : Une première méthode consistant à remplacer la traduction à l aide d helpers par une traduction en représentation intermédiaire classique. Cette technique à pour effet de supprimer les appels de fonctions, ainsi que les passages et récupération de paramètres. En revanche, elle ne résout pas le problème du surcoût dû aux instructions supplémentaires pour la traduction (par exemple l isolation des bits de poids fort dans le cas du vadd.i16). Une deuxième méthode consistant à enrichir la TCG avec de nouvelles micro-opérations 4

6 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON 0x : vld1.32 {d0-d1, [r0] 0x : vld1.32 {d2-d3, [r1] 0x c: vadd.i16 q0, q1, q2 0x : vst1.32 {d0-d1, [r0] Code de la machine cible ARM uint32_t HELPER(neon_add_u16) (uint32_t a, uint32_t b) { uint32_t mask; mask = (a ^ b) & 0x u; a &= ~0x u; b &= ~0x u; return (a + b) ^ mask; Code du Helper ld_i32 tmp8,env,$0x2f8 ld_i32 tmp9,env,$0x308 movi_i32 tmp10,$neon_add_u16 call tmp10,$0x0,$1,tmp8,tmp8,tmp9 st_i32 tmp8,env,$0x2e8 Représentation intermédiaire TCG 0xb56c38b7: cmp 0xb56c38b9: mov 0xb56c38bb: je 0xb56c38bd: mov 0xb56c38c2: call 0xb56c38c7: jmp 0xb56c38c9: add (%edx),%eax %ecx,%eax 0xb56c38c9 $0x1,%edx 0x821ce38 0xb56c38ce 0xc(%edx),%eax Code généré pour la machine hôte x86 Figure 2 Exemple de traduction d une instruction Neon (vadd.i16) à l aide d un helper SIMD, afin de profiter pleinement des capacités de l architecture hôte. En effet, avec cette technique, le résultat de la traduction sur la machine hôte est à même de comporter des instructions SIMD si celle-ci les supporte. Afin de se limiter à un sous-ensemble d instructions Neon, ce TER se concentre sur une partie des sources du logiciel FFmpeg, logiciel libre de traitement audio et video. Celui-ci comporte une partie en assembleur propre à chaque plateforme sur lesquelles il est porté, qui optimise une partie des traitements. Pour l architecture ARM, certaines opérations sont optimisées à l aide d instructions Neon. Voici le sous-ensemble considéré : Instruction vadd vaddw vqmovun vrshr vshr vsub vswp vtrn Description Addition de vecteurs. Addition de vecteurs de tailles différentes. Déplace le contenu d un registre dans un autre de taille inférieur. Le résultat est converti en entier non signé. Effectue une rotation vers la droite sur les éléments d un vecteur. Effectue un décalage vers la droite sur les éléments d un vecteur. Soustraction de vecteurs. Échange le contenu de deux registres. Considère deux registres comme les lignes d une matrice 2 2 et en effectue la transposée. Certaines de ces instructions sont suivies d une information indiquant le type et la largeur des données utilisées. Par exemple, l instruction vadd.i16 travaille sur des vecteurs d entiers de 16 bits, elle ne tient pas compte du typage (signé ou non). vshr.u32 effectue le décalage logique 5

7 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON 128bits 16bits 16bits 16bits 16bits 16bits 16bits 16bits q q2 q0 Figure 3 Fonctionnement de l instruction vadd.i16 vers la droite d entiers sur 32 bits alors que vshr.s32 effectue un décalage arithmétique. La combinaison des instructions et des types de données offre donc beaucoup de possibilités, mais aussi beaucoup de cas à prendre en compte dans Qemu. 2.1 Première méthode : conversion en micro-opérations TCG classiques Présentation de la méthode Cette première méthode se veut suffisamment simple puisqu il suffit de remplacer le helper par une suite de micro-opérations de la TCG, en gardant le même modèle. Il faut donc traduire le code du helper écrit en C, en micro-opérations TCG Exemple de la traduction du vadd.i16 à l aide de micro-opérations Voici un exemple avec l instruction Neon vadd.i16. Listing 1 Code du helper u i n t 3 2 t HELPER( neon add u16 ) ( u i n t 3 2 t a, u i n t 3 2 t b ) { u i n t 3 2 t mask ; mask = ( a ˆ b ) & 0 x u ; a &= 0 x u ; b &= 0 x u ; return ( a + b ) ˆ mask ; 6

8 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON Listing 2 Code générant les micro-opérations static inline int gen neon add u16 (TCGv t0, TCGv t1 ) { TCGv mask = new tmp ( ) ; t c g g e n x o r i 3 2 ( mask, t0, t1 ) ; t c g g e n a n d i i 3 2 ( mask, mask, 0 x u ) ; t c g g e n a n d i i 3 2 ( t0, t0, 0 x u ) ; t c g g e n a n d i i 3 2 ( t1, t1, 0 x u ) ; t c g g e n a d d i 3 2 ( t0, t0, t1 ) ; t c g g e n x o r i 3 2 ( t0, t0, mask ) ; dead tmp ( mask ) ; return 0 ; Le type TCGv représente une valeur qui sera stockée dans un registre de la machine hôte. t0 et t1 sont les opérandes de l instruction vadd.i16, le résultat est stocké dans t0. Les microopérations générées sont similaires aux instruction présentes dans le helper, la même opération d isolation du bit de poids fort est effectuée Réflexions sur la méthode Durant les différentes réflexions portées pour construire cette solutions, il a été question de chercher à automatiser la génération du code de traduction, en partant par exemple de la documentation fournie par le constructeur ARM. Dans cette documentation, chaque instruction est décrite de manière formelle dans un pseudo-langage. Une extension possible, si cette méthode s avère performante, serait donc de développer un parser pour ce pseudo-code, qui générerait automatiquement la suite de micro-opération TCG pour chaque instruction. Cela éviterait ainsi un important travail de développement, et limiterait grandement les sources d erreurs. 2.2 Deuxième méthode : ajout de micro-opérations SIMD au sein de la TCG Présentation de la méthode Cette deuxième approche semble être de meilleur qualité, puisqu elle permet de générer des instructions SIMD sur la machine hôte. En revanche, elle demande un plus gros effort de conception car pour chaque micro-opération SIMD ajoutée dans la TCG, il faut en théorie effectuer la traduction vers toutes les architectures hôtes déjà implémentées dans Qemu. Ce TER se limite néanmoins à la traduction vers l architecture x86, et son jeu d instructions SIMD MMX/SSE[3]. Il faut aussi adapter la TCG pour qu elle puisse travailler sur des données de 128 bits. Il faut enfin ajouter aux architectures hôtes, la liste des registres SIMD disponibles, afin d autoriser l allocateur de registres de la TCG à les utiliser. Dans la version de Qemu, les micro-opérations de la TCG sont définies dans le fichier tcg/tcg-opc.h. En guise d exemple, voici la définition de la micro-opération add_i32, qui représente l addition classique sur 32 bits. DEF2( add i32, 1, 2, 0, 0) Le premier paramètre est le nom de la micro-opération, les second et troisième sont respectivement le nombre d opérandes out et in, le quatrième représente de nombre d opérandes 7

9 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON immédiates et enfin, le dernier sert à positionner des flags donnant des informations supplémentaires à la TCG 2. Dans cet exemple, la micro-opération additionne deux opérandes in et stocke le résultat dans une opérande out. Environ 35 micro-opérations ont été ajoutées à la TCG de Qemu dans le cadre de ce TER. Afin de les différencier, elles sont toutes préfixer par simd_64_ ou simd_128_, suivant la taille des données qu elles manipulent. Elles sont entourées par des conditions préprocesseur ce qui permet de ne pas les inclure dans Qemu à la compilation si la machine hôte ne supporte pas le SIMD. Bien entendu et afin de rester cohérent, ces conditions apparaissent à d autres endroits dans le code. Notamment, si la compilation est effectuée sans le support du SIMD, la méthode actuelle de traduction du Neon est utilisée. Une fois ces micro-opérations définies, il est possible de rajouter des fonctions inline dans le fichier tcg/tcg-op.h. Ces fonctions sont celles utilisées lors de la traduction machine cible vers TCG. Elles sont préfixées par tcg_gen_ (cf. l exemple de la traduction du vadd.i16 avec la méthode 1). Ce sont elles qui vont effectivement émettre des micro-opérations. Elles peuvent soit directement en émettre une ou plusieurs, soit appeler une autre fonction inline similaire en adaptant les paramètres Exemple de traduction du vadd.i16 vers SSE Voici l exemple de l ajout de la micro-opération simd_128_add_i16 pour traduite l instruction Neon vadd.i16. Côté TCG Cette première partie décrit les ajouts réalisés dans la TCG. Listing 3 Ajout de la micro-opération dans tcg-opc.h DEF2( simd 128 add i16, 1, 2, 0, 0) Comme pour l addition classique, cette micro-opération prend en paramètre deux opérandes d entrées et une opérande de sortie. 2. Par exemple, le flag TCG_OPF_BB_END informe la TCG que la micro-opération marque la fin d un basic block. 3. Dans le cas d opération prenant en paramètre une opérande immédiate, la fonction inline charge d abord ce paramètre dans un registre avant d appeler la fonction similaire qui ne prend que des registres en paramètre. 8

10 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON Listing 4 Ajout de fonctions inline dans tcg-op.h static inline void tcg gen simd 128 op3 ( int opc, TCGv i128 arg1, TCGv i128 arg2, TCGv i128 arg3 ) { gen opc ptr++ = opc ; gen opparam ptr++ = GET TCGV I128( arg1 ) ; gen opparam ptr++ = GET TCGV I128( arg2 ) ; gen opparam ptr++ = GET TCGV I128( arg3 ) ; static inline void tcg g en s imd 128 add i16 ( TCGv i128 ret, TCGv i128 arg1, TCGv i128 arg2 ) { tcg gen simd 128 op3 ( INDEX op simd 128 add i16, ret, arg1, arg2 ) ; La première fonction est la fonction utilisée dans le cas général d opérations SIMD à trois opérandes. Elle se contente de placer l opération et les paramètres dans leur buffer respectif, buffers que Qemu lira lors de la traduction de la TCG vers la machine hôte. La seconde fonction est celle qui sera appelée pour émettre une opération simd_128_add_i16. Elle appelle la fonction précédente avec les trois opérandes. Le type TCG_i128 a été ajouté à la TCG dans le cadre de ce TER afin que celle-ci supporte des opérandes sur 128 bits. Côté machine ARM cible Décrivons maintenant les ajouts dans la première étape de traduction : la traduction des instructions Neon en micro-opérations TCG. Listing 5 Traitement du vadd.i16 dans le décodage des instructions ARM (targetarm/translate.c) TCGv i128 ret, arg1, arg2 ; r e t = tcg temp new i128 ( ) ; arg1 = neon load simd reg128 ( rn ) ; arg2 = neon load simd reg128 (rm ) ; tcg g en s imd add i16 ( ret, arg1, arg2 ) ; n e o n s t o r e s i m d r e g ( rd, r e t ) ; t c g t e m p f r e e i ( arg1 ) ; t c g t e m p f r e e i ( arg2 ) ; Ce listing est exécuté lorsqu un vadd.i16 est rencontré dans le code ARM. Il charge les deux registres, appelle la fonction tcg_gen_simd_128_add_i16 créée dans la première étape, puis sauvegarde le résultat dans le registre de destination. Les variables rn, rm et rd sont définies lors du décodage de l instruction. Côté machine x86 hôte Il faut enfin effectuer la traduction de la micro-opération tcg_gen_simd_128_add_i16 sur la machine hôte. 9

11 2 AMÉLIORATION DE LA TRADUCTION DES INSTRUCTIONS NEON Listing 6 Déclaration de la micro-opération auprès de l architecture hôte (tcg/i386/tcgtarget.c) { INDEX op simd 128 add i16, { "X", "0", "X", Cette ligne est ajoutée dans un tableau contenant toutes les micro-opérations de la TCG. Ce tableau est propre à chaque architecture hôte, car il définit les contraintes liées aux opérandes de la micro-opération. En effet, lors de la traduction des micro-opérations, la TCG gère les registres de la machine hôte. Elle alloue et fournie des registres pour la traduction des micro-opérations. Ici, un "X" signifie que les registres qui vont être associés à la première opérande (opérande de sortie) et à la troisième opérande (deuxième opérande d entrée), seront des registres SIMD SSE de l architecture x86. Le "0" signifie que pour la deuxième opérande, l allocateur de registres doit fournir le même registre pour l opérande numéro 0, c est à dire la première. Cela s explique par le fait que l instruction analogue au vadd.i16 en SSE, comme la majorité des instructions x86, ne prend en paramètre que deux opérandes, la première étant à la fois une des deux opérandes d entrées et l opérande de sortie. Cette instruction analogue est l instruction paddw. Listing 7 Traduction de l opération en instruction SSE (tcg/i386/tcg-target.c) static inline void tcg out modrm simd simd ( TCGContext s, int opc, int r1, int r2 ) { tcg o ut8 ( s, ( opc & 0 x00ff0000u ) >> 1 6 ) ; tcg o ut8 ( s, ( opc & 0 x0000ff00u ) >> 8 ) ; tcg o ut8 ( s, opc & 0 x000000ffu ) ; tcg o ut8 ( s, 0 xc0 ( r1 << 3) r2 ) ; static inline void tcg o ut o p ( TCGContext s, int opc, const TCGArg args, const int c o n s t a r g s ) { switch ( opc ) { [... ] case INDEX op simd 128 add i16 : tcg out modrm simd simd ( s, 0 x00660ffdu, args [0] TCG REG XMM0, args [2] TCG REG XMM0) ; break ; [... ] Finalement, l opération est traduite. La fonction tcg_out_op est appelée par la TCG pour chaque micro-opération à traduire. Seul le cas qui nous intéresse est conservé ici. Le tableau args contient les numéros des registres alloués pour la traduction de l opération, en fonction des contraintes vues plus haut. La fonction tcg_out_modrm_simd_simd prend en paramètre l opcode x86 de l instruction (0x00660ffd). Cet opcode est celui de l instruction paddw[2]. Elle prend aussi en paramètre les deux registres concernés, et enfin, le contexte de la TCG. Cette fonction fait plusieurs appels à la méthode tcg_out_8, qui écrit un octet brut dans le buffer de traduction de l architecture cible. C est le contenu de ce buffer qui sera exécuté. 10

12 3 TESTS ET RÉSULTATS Voilà qui achève les différentes étapes pour traduire une instruction Neon avec cette deuxième méthode. Théoriquement, cette traduction effectuée pour l architecture hôte x86 devrait être faite pour toutes les autres architectures Réflexions sur la méthode Durant les différentes réflexions lors du développement de cette méthode, il a été question de chercher à déterminer l ensemble de micro-opérations SIMD optimal à rajouter à la TCG de Qemu, pour satisfaire au mieux toutes les architectures cibles et hôtes. En effet, la nature des instructions SIMD varient d une architecture à l autre. Par exemple, l instruction Neon vaddw permet l addition de deux vecteurs de tailles différentes. Une conversion est faite en interne pour effectuer l addition. Les instructions SIMD x86 en revanche ne proposent pas ce genre d opérations. Il faut d abord convertir l un des deux vecteurs avant de faire l addition classique. Il y a donc une réflexion à porter pour déterminer le juste milieu dans la TCG, c est à dire ne pas rajouter d instructions SIMD trop spécifiques à une architecture, mais en mettre suffisamment pour pouvoir s en sortir, quitte à faire la traduction d une instruction cible en plusieurs instructions hôte. Durant ce TER, les micro-opérations ajoutées sont celles dont le besoin était évident pour les traductions à effectuer : les opérations arithmétiques et logiques de base, les chargements mémoires,... De plus, il n a été question ici que de la traduction des instructions Neon vers les instructions MMX/SSE. Le fait de considérer un plus large panel d architecture (par exemple les instructions Altivec des PowerPC, ou les instructions VIS des SparcV9), que ce soit du côté de l architecture cible, ou hôte, rajoutera sans doute des contraintes à cette recherche de l ensemble optimal. 3 Tests et résultats L environnement de tests utilisé est une machine virtuelle exécutée par Qemu, et faisant tourner Linux. La machine virtuelle simulée est un dispositif de type système embarqué, appelé Beagle Board. Ce dispositif embarque entre autres, un processeur ARM Cortex-A8, qui nous intéresse puisqu il supporte les instructions Neon. Par manque de temps, il n a pas été possible de traduire toutes les instructions prévues à la base. Il n a pas non plus été possible de faire les tests avec FFmpeg, de part la trop grande complexité de la mise en place d un environnement de tests suffisamment évolué pour faire tourner celui-ci. Le principal problème rencontré fût la cross-compilation des binaires à partir de la machine hôte, pour la machine cible. Pour une raison inconnue, la majorité de ces binaires produisent une erreur de segmentation lors de leur exécution. Cependant, un programme suffisamment simple parvient à s exécuter (il semblerait que les erreurs de segmentations surviennent lors d appels à la libc). C est ainsi qu un benchmark composé d instructions Neon a pu être exécutés sur différentes version que Qemu. Ce benchmark exécute dix millions de fois une fonction contenant la majorité des instructions Neon traduites dans le cadre du TER. Le programme en question est fourni en annexe. Voici un tableau récapitulant les temps obtenus dans les différents cas. Version de Qemu Premier temps d exécution Temps moyen d exécution Version d origine 6.60s 6.21s Version méthode s 5.84s Version méthode s 1.16s La distinction entre le premier temps d exécution et les autres est dû au fait que lors de la première exécution du programme, Qemu effectue effectivement la traduction dynamique. 11

13 3 TESTS ET RÉSULTATS Pour les exécutions suivantes, il se contente de ré-exécuter les basic blocks déjà traduits, d où la différence de temps dans les trois cas. Les deux méthodes affichent des performances meilleures que celles du Qemu d origine, avec une très nette différence pour la méthode 2. Cela était prévisible puisque pour la première méthode, le gain est celui de l appel de fonction en moins alors que pour la deuxième méthode, des instructions SIMD sont utilisées sur l architecture hôte. Pour la première méthode, le gain est de quelques dixièmes de secondes, alors que pour la deuxième, le temps d exécution est divisé par un facteur Qemu permet de dumper dans un fichier de log, les instructions générées pour la machine hôte. Pour chaque basic block, il donne leur taille et leur contenu. Voici les tailles en octets des basic blocks générés pour la fonction du benchmark : Version de Qemu Version d origine Version méthode 1 Version méthode 2 Taille du basic block 2087 octets 2199 octets 420 octets Le basic block de la méthode 1 est plus gros que celui de la version d origine. Cela est dû au fait que la version d origine ne contient que des appels de fonction, alors que la méthode 1 déroule l instruction dans le basic block lui même. Le basic block de la méthode 2 est lui quatre fois plus petit, ce qui correspond environ au gain de temps observé précédemment. Conclusion Ce TER a été l occasion de travailler sur un logiciel libre, pour chercher à optimiser une partie de celui-ci. Le but étant d optimiser la traduction des instructions Neon de l architecture ARMv7, deux méthodes sont ressorties. Une première méthode consistant à remplacer les helpers par des micro-opérations TCG déjà existantes, et la deuxième à enrichir la TCG avec des microopérations SIMD. La première méthode se veut plus simple à mettre en oeuvre puisqu il ne faut apporter des modifications qu à la partie traduction ARM vers TCG, alors que la deuxième oblige, non seulement à modifier cette partie, mais aussi la TCG en elle-même, ainsi que toutes les implémentations d architectures hôtes, pour supporter les nouvelles micro-opérations. Cependant, les gains en performance sont tels avec la deuxième solution que ce TER a démontré la viabilité de celle-ci. Il serait maintenant pertinent de faire une étude plus approfondie sur le jeu de micro-opérations SIMD à rajouter à la TCG, et ce, en prenant en compte un plus large panel d architectures, à la fois cibles, et hôtes. En étudiant les instructions SIMD de celles-ci, il faudrait en extraire le jeu de micro-opérations SIMD optimal pour la TCG. 12

14 3 TESTS ET RÉSULTATS Annexes Programme de benchmark Listing 8 Fonction assembleur du programme de benchmark. g l o b a l t e s t s i m d t e s t s i m d : vrshr. u8 q0, q0, #1 vrshr. u16 q0, q0, #2 vrshr. u32 q0, q0, #3 v s h l. u8 q0, q0, #1 v s h l. u16 q0, q0, #2 v s h l. u32 q0, q0, #3 vshr. u8 q0, q0, #1 vshr. u16 q0, q0, #2 vshr. u32 q0, q0, #3 v s h l. s8 q0, q0, #1 v s h l. s16 q0, q0, #2 v s h l. s32 q0, q0, #3 vshr. s8 q0, q0, #1 vshr. s16 q0, q0, #2 vshr. s32 q0, q0, #3 vadd. u8 q0, q1, q2 vadd. u16 q0, q1, q2 vadd. u32 q0, q1, q2 bx l r 13

15 RÉFÉRENCES Références [1] Fabrice Bellard. Qemu, a fast and portable dynamic translator. In USENIX, [2] Intel Corporation. Intel R 64 and IA-32 Architectures Software Developer s Manual, [3] Intel Corporation, Carole DuLong, Mickey Gutman, and Mike Julier. Complete Guide to Mmx Technology. McGraw-Hill Professional,

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

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

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

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

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

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

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

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

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

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

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

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

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

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

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

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

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

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

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

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

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

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

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

Thème 3 Conception et vérification d architectures de systèmes sur puce

Thème 3 Conception et vérification d architectures de systèmes sur puce Thème 3 Conception et vérification d architectures de systèmes sur puce Conception et simulation Frédéric Pétrot Vérification Laurence Pierre Conception et vérification d architectures de systèmes sur

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

Microprocesseur + Logiciel

Microprocesseur + Logiciel Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS Présentation [IGI1001] CONTEXTE SCIENTIFIQUE... 4 1. OBJECTIFS DE L UNITE... 6 2. OBJECTIFS

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

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Concept de machine virtuelle

Concept de machine virtuelle Concept de machine virtuelle Chap. 5: Machine virtuelle Alain Sandoz Semestre été 2007 1 Introduction: Java Virtual Machine Machine Virtuelle Java: qu est-ce que c est? c est la spécification d une machine

Plus en détail

Génération de code binaire pour application multimedia : une approche au vol

Génération de code binaire pour application multimedia : une approche au vol Génération de binaire pour application multimedia : une approche au vol http://hpbcg.org/ Henri-Pierre Charles Université de Versailles Saint-Quentin en Yvelines 3 Octobre 2009 Présentation Présentation

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

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

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

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

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

Recompilation dynamique de codes binaires hostiles

Recompilation dynamique de codes binaires hostiles Recompilation dynamique de codes binaires hostiles Sébastien Josse DGA Maîtrise de l Information Résumé Les malware sont de plus en plus difficiles à analyser, par utilisation des outils conventionnels

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

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

Jeu d instructions NIOS II

Jeu d instructions NIOS II Jeu d instructions NIOS II 1 Formats d instructions Le processeur NIOS II a un jeu d instructions de type RISC. Il possède 32 registres de 32 bits, notés r0 à r31, avec r0 0. Les instructions sont de longueur

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

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

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet Beat Wolf 1, Pierre Kuonen 1, Thomas Dandekar 2 1 icosys, Haute École Spécialisée de Suisse occidentale,

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

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

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

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

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

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

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall L utilisation d un réseau de neurones pour optimiser la gestion d un firewall Réza Assadi et Karim Khattar École Polytechnique de Montréal Le 1 mai 2002 Résumé Les réseaux de neurones sont utilisés dans

Plus en détail

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

SRS DAY: Problématique liée à la virtualisation

SRS DAY: Problématique liée à la virtualisation SRS DAY: Problématique liée à la virtualisation Anthony GUDUSZEIT Franck CURO gudusz_a curo_f Introduction Sommaire Définition Contexte Avantages / inconvénients Fonctionnement et problématique Techniques

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

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

Linux embarqué: une alternative à Windows CE?

Linux embarqué: une alternative à Windows CE? embarqué: une alternative à Windows CE? : une alternative à Windows CE Présentation Mangrove Systems Distribution embarqué Perspective WinCe / Questions Mangrove systems Créé en 2001 Soutien Soutien Ministère

Plus en détail

LA VIRTUALISATION. Etude de la virtualisation, ses concepts et ses apports dans les infrastructures informatiques. 18/01/2010.

LA VIRTUALISATION. Etude de la virtualisation, ses concepts et ses apports dans les infrastructures informatiques. 18/01/2010. Guillaume ANSEL M2 ISIDIS 2009-2010 / ULCO Dossier d étude sur la virtualisation LA VIRTUALISATION 18/01/2010 Etude de la virtualisation, ses concepts et ses apports dans les infrastructures informatiques.

Plus en détail

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com Partie 1 Professeur : Haouati Abdelali CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com Partie I : Généralités et algorithmique de base 1. Environnement matériel et logiciel

Plus en détail

Initiation à la sécurité

Initiation à la sécurité Initiation à la sécurité UE Systèmes informatiques 12 septembre 2011 Julien Raeis - http://raeis.iiens.net/ Présentation Ingénieur IIE 2005 Carrière dans la sécurité des systèmes Consultant en sécurité

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

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

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

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

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement Ne laissez pas le stockage cloud pénaliser votre retour sur investissement Préparé par : George Crump, analyste senior Préparé le : 03/10/2012 L investissement qu une entreprise fait dans le domaine de

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

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Reproductibilité des expériences de l article Analyse et réduction du chemin critique dans l exécution d une application Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application" Katarzyna Porada and David Parello and Bernard Goossens Univ. Perpignan Via Domitia,

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

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

Présentation d HyperV

Présentation d HyperV Virtualisation sous Windows 2008 Présentation d HyperV Agenda du module Présentation d Hyper-V Installation d Hyper-V Configuration d Hyper-V Administration des machines virtuelles Offre de virtualisation

Plus en détail

Résumé Génération de code Le code intermédiaire

Résumé Génération de code Le code intermédiaire Résumé Analyse INFO0004 Structure des langages de programmation Génération de code ; liaison et exécution Justus H. Piater Programmation Analyse Compilation Liaison fichier texte Analyse lexicale flux

Plus en détail

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion GenDbg : un débogueur générique Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion 2008 Qui sommes nous? Centre d électronique de l Armement (CELAR) Maîtrise et protection

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

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

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

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Architecture de l ordinateur

Architecture de l ordinateur Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail

Module : Virtualisation à l aide du rôle Hyper-V

Module : Virtualisation à l aide du rôle Hyper-V Windows Server 2008 pour l'enseignement Module : Virtualisation à l aide du rôle Hyper-V Agenda du module Présentation d Hyper-V Installation d Hyper-V Configuration d Hyper-V Administration des machines

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

machine cible machine hôte architecture cible différente de la machine hôte

machine cible machine hôte architecture cible différente de la machine hôte 1 Les émulateurs jouent un rôle fondamentale dans le développement de logiciel bas niveau pour les systèmes embarqués. Ils permettent de debugger aisément les premières instructions qui s'exécutent lors

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

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

Installation et prise en main

Installation et prise en main TP1 Installation et prise en main Android est le système d'exploitation pour smartphones, tablettes et autres appareils développé par Google. Pour permettre aux utilisateurs d'installer des applications

Plus en détail

RTDS G3. Emmanuel Gaudin emmanuel.gaudin@pragmadev.com

RTDS G3. Emmanuel Gaudin emmanuel.gaudin@pragmadev.com RTDS G3 Emmanuel Gaudin emmanuel.gaudin@pragmadev.com PragmaDev Dédiée au développement d un AGL pour le développement des applications temps réel et embarquées. Réseau de partenaires: Formations, Service,

Plus en détail

Retrouver de vieux programmes et jouer sur VirtualBox

Retrouver de vieux programmes et jouer sur VirtualBox CHAPITRE 3 Retrouver de vieux programmes et jouer sur VirtualBox Ce chapitre présente des notions avancées de VirtualBox. Elles permettront de réaliser des configurations spécifiques pour évaluer des systèmes

Plus en détail

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Introduction à l informatique temps réel Pierre-Yves Duval (cppm) Introduction à l informatique temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 -Définition et problématique - Illustration par des exemples -Automatisme:

Plus en détail

ISO/CEI 19770-1. Technologies de l information Gestion des actifs logiciels. Partie 1: Procédés et évaluation progressive de la conformité

ISO/CEI 19770-1. Technologies de l information Gestion des actifs logiciels. Partie 1: Procédés et évaluation progressive de la conformité NORME INTERNATIONALE ISO/CEI 19770-1 Deuxième édition 2012-06-15 Technologies de l information Gestion des actifs logiciels Partie 1: Procédés et évaluation progressive de la conformité Information technology

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