Traduction binaire dynamique de l extension SIMD

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

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

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

Conception de circuits numériques et architecture des ordinateurs

Cours 1 : La compilation

Virtualisation Vserver et OpenVz en entreprise

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

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

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

Recompilation dynamique de codes binaires hostiles

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds

Architecture des ordinateurs

Modélisation des interfaces matériel/logiciel

Une méthode de conception de systèmes sur puce

Linux embarqué: une alternative à Windows CE?

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Rappels d architecture

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

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

Initiation à la sécurité

Compilation (INF 564)

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

Virtualisation open source État de l'art

Concept de machine virtuelle

MI03 TP. Objectifs du TP 1ère séance. 2ème séance. Construction d'un système linux embarqué complet

Programmation assembleur : aperçu

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

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

Représentation d un entier en base b

Cryptoprocesseurs et virtualisation

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

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

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Windows serveur 2008 installer hyperv

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

Systèmes d Exploitation & Machines Virtuelles. Format de l enseignement. Objectif du cours

Systèmes embarqués D.Rossier

Visualization sur Ubuntu: Quels Choix? Nicolas Barcet

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

as Architecture des Systèmes d Information

Conventions d écriture et outils de mise au point

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

Machines virtuelles Cours 1 : Introduction

Introduction à NetCDF

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

Qu est ce qu un un serveur?

Limitations of the Playstation 3 for High Performance Cluster Computing

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Gestion mémoire et Représentation intermédiaire

Chapitre VI- La validation de la composition.

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Programmation en Java IUT GEII (MC-II1) 1

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications


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

Plan du cours. Historique du langage Nouveautés de Java 7

Les techniques de protection du logiciel

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

LXC : Une technologie de contextualisation ultra light intégrée au kernel Linux

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

Consolidation de serveurs PRA consolidé Migration de matériel Approvisionnement de serveurs Relocalisation de Datacenter Optimisation du Datacenter

L apprentissage automatique

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

AVERTISSEMENT. D'autre part, toute contrefaçon, plagiat, reproduction encourt une poursuite pénale. LIENS

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

Algorithmique I. Algorithmique I p.1/??

Analyse de comportement de pare-feu par marquage de données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Travailler à l'ensimag avec son matériel personnel

Virtualisation de serveurs Solutions Open Source

Introduction aux Machines Virtuelles avec VMKit

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

Machines Virtuelles. et bazard autour. Rémi Forax

Exécution des instructions machine

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

Communications performantes par passage de message entre machines virtuelles co-hébergées

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Cours 1 : Qu est-ce que la programmation?

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cloud computing et sécurité

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Ordinateurs, Structure et Applications

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

GlobalScape Secure FTP Server Buffer Overflow

A propos de la sécurité des environnements virtuels

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Description de l implantation dans le centre d examen (nom du service ou de l outil et caractéristiques techniques)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Microprocesseur + Logiciel

Programmation Orientée Objet

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

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

Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap

Transcription:

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Travaux d études et de recherches Ensimag - Tima SLS 25 mai 2010

Table des matières 1 Introduction 2 Tiny code generator Les helpers 3 Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD 4

Contexte du TER Laboratoire et tuteurs Laboratoire TIMA, équipe SLS Frédéric Pétrot et Nicolas Fournel Contexte de recherche Travaux autour de la simulation de systèmes, Systèmes de plus en plus lourds à simuler, Besoin d accélérer cette simulation.

Qemu : a fast and portable dynamic translator Simulation avec Qemu Logiciel open-source d émulation et de virtualisation, Traduction binaire dynamique du code d une architecture cible, Pour être exécuté par une architecture hôte. Objectif du TER Amélioration de la traduction de l architecture ARM, Sous-ensemble d instructions : instructions Neon.

Instructions Neon : des instructions SIMD Instructions SIMD Effectuer la même opération sur plusieurs données en même temps, Très efficace pour optimiser certains algorithmes, Vecteurs de données sur 64 bits ou 128 bits, Données de tailles variables suivant les instructions.

Exemple : vadd.i16 128bits 16bits 16bits 16bits 16bits 16bits 16bits 16bits q1 + + + + + + + q2 q0

Tiny code generator Les helpers La représentation intermédiaire : Tiny Code Generator Traduction en deux étapes 1 Traduction du code architecture cible vers micro-opérations TCG, 2 Traduction micro-opérations TCG vers code architecture hôte. Avantages de la TCG Code généré placé dans un buffer pour pouvoir être réutilisé, Indépendance des architectures cibles et architectures hôtes.

Fonctionnement de la TCG 0x00000110: mov sp, r0 0x00000114: sub r0, r0, #32768 0x00000118: 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

Tiny code generator Les helpers Méthode de traduction des instructions Neon : les helpers Les helpers Fonction écrite en C, simule une instruction, Compilée au même moment que Qemu, Appelée lors d une occurrence de l instruction correspondante.

Exemple de helper 0x00008584: vld1.32 {d0-d1}, [r0] 0x00008588: vld1.32 {d2-d3}, [r1] 0x0000858c: vadd.i16 q0, q1, q2 0x00008590: 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) & 0x80008000u; a &= ~0x80008000u; b &= ~0x80008000u; 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

Sur-coût des helpers Tiny code generator Les helpers Sur-coûts des helpers Appel de fonction, Passage des paramètres, Adaptation des paramètres, Plusieurs appels car données sur 128 bits.

Recherche de solutions Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD Deux méthodes pour améliorer la traduction 1 Remplacement des helpers par des micro-opérations TCG existantes, 2 Ajout de micro-opérations SIMD dans la TCG.

Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD Première méthode : micro-opérations TCG classiques Conversion des helpers Conversion systématique des helpers en micro-opérations, Gain de l appel de fonction, Mais toujours adaptation des paramètres + répétition car données 32 bits.

Exemple avec vadd.i16 uint32_t HELPER(neon_add_u16)(uint32_t a, uint32_t b) { uint32_t mask; mask = (a ^ b) & 0x80008000u; a &= ~0x80008000u; b &= ~0x80008000u; return (a + b) ^ mask; } Code du Helper static inline int gen_neon_add_u16(tcgv t0, TCGv t1) { TCGv mask = new_tmp(); tcg_gen_xor_i32(mask, t0, t1); tcg_gen_andi_i32(mask, mask, 0x80008000u); tcg_gen_andi_i32(t0, t0, ~0x80008000u); tcg_gen_andi_i32(t1, t1, ~0x80008000u); tcg_gen_add_i32(t0, t0, t1); tcg_gen_xor_i32(t0, t0, mask); dead_tmp(mask); return 0; } Code traduit en µ-opérations

Réflexions sur la méthode, extensions Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD Automatisation de la génération Conversion des helpers longues et source d erreurs, Description formelle des instructions dans la doc de ARM, Développement d un parser pour automatiser la génération.

Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD Deuxième méthode : micro-opérations TCG SIMD Ajout de micro-opération SIMD dans la TCG Pas de micro-opération SIMD dans la TCG, D où l ajout de nouvelles micro-opérations, Implique modification TCG et architectures hôtes. Gains de performance Exploitation des instructions SIMD de l architecture hôte, Opérations sur des vecteurs données 64/128 bits en une fois, Plus besoin d adapter les paramètres. Exemple : vadd.i16 tcg gen simd 128 add i16(ret, arg1, arg2) ;

Réflexions sur la méthode, extensions Recherche de solutions Première méthode : micro-opérations TCG classiques Deuxième méthode : micro-opérations TCG SIMD Ensemble optimal de micro-opérations TCG Sous-ensemble optimal de µ-opérations à rajouter à la TCG? A la fois du point de vue de l architecture cible et hôte, En considérant plusieurs architectures avec instructions SIMD ARM Neon, x86 MMX/SSE, PowerPC Altivec, Sparc VIS...

Environnement de tests Bilan Traduction d une dizaine d instructions Neon avec les 2 méthodes, Environ 35 µ-opérations rajoutées dans la TCG. Linux dans Qemu Système minimaliste, mesure du temps d exécution d un benchmark, 10 millions d exécutions d une fonction avec instructions Neon

Résultats du benchmark Temps d exécutions 7 6,6 6,21 6,22 6 5,84 5 4 3 Premier temps d'exécution (s) Temps moyen d'exécution (s) 2 1,59 1,16 1 0 Version d'origine Version méthode 1 Version méthode 2

Résultats du benchmark Taille du basic block 2500 2087 2199 2000 1500 Taille du basic block (octet) 1000 500 420 0 Version d'origine Version méthode 1 Version méthode 2

Fin de la présentation Merci Questions?