Réécriture dynamique de binaire pour le support à long terme des processeurs RISC-V
Type de contrat : CDD
Niveau de diplôme exigé : Bac + 5 ou équivalent
Fonction : Ingénieur scientifique contractuel
Niveau d'expérience souhaité : Jeune diplômé
Mission confiée
Dans le cadre d'un défi Inria, les équipes de projet PACAP et MADMax unissent leurs forces pour développer un démonstrateur de réécriture binaire dynamique afin d'explorer le support à long terme des processeurs RISC-V.
RISC-V offre la possibilité de mettre à jour le jeu d'instructions et le format d'exécutable afin d'exiger que toute instruction lue par le processeur et qui n'est pas prise en charge déclenche une erreur. Cela inclut les codages non implémentés, mais aussi les codages implémentés dans le cadre d'une extension différente (par exemple, le processeur supporte l'extension A avec le codage E, et le binaire contient une instruction de l'extension B avec le codage E). Cette facilité permettrait de fournir des couches de compatibilité dans le cadre d'un service du système d'exploitation, grâce auquel tout binaire compilé ciblant - presque - n'importe quelle extension pourrait être exécuté sur du matériel ne disposant pas de ces extensions, les extensions manquantes étant émulées dans le logiciel. Les logiciels seraient ainsi moins contraints de cibler un ensemble commun d'extensions, ce qui limiterait les performances si le matériel dispose d'extensions susceptibles d'accélérer le code, ou de cibler des extensions spécifiques, ce qui rendrait les binaires encore moins portables.
L'objectif consiste à développer un démonstrateur d'un tel dispositif basé sur la réécriture dynamique de binaires. Le mécanisme pourrait être mis en œuvre soit dans le noyau du système d'exploitation, soit dans le domaine utilisateur. Le noyau offre l'avantage de partager la portabilité entre tous les processus. Le domaine utilisateur, quant à lui, ne nécessite aucun privilège et permet à différents utilisateurs de gérer différentes instructions. Dans un premier temps, nous émulerons la sémantique d'une instruction non supportée lorsqu'elle lève une exception. Nous redonnerons ensuite le contrôle au programme utilisateur. Cependant, ce mécanisme entraînera des surcoûts importants, car le coût d'entrée dans le noyau se chiffre en centaines de cycles, sans même tenir compte du coût de l'émulation elle-même. Par conséquent, un second mécanisme, plus optimisé, tentera de patcher dynamiquement le programme binaire de l'utilisateur avec des sauts réguliers vers des fonctions de bibliothèque émulant les instructions non prises en charge. D'autres optimisations, telles que l'enchaînement de ces appels si le code de l'utilisateur comporte plusieurs instructions contiguës non prises en charge et même l'optimisation de ces appels enchaînés à la volée, pourraient être envisagées dans le cadre de travaux futurs. Néanmoins, on peut considérer qu'il s'agit d'un mécanisme de traduction binaire dynamique à la fois efficace et transparent, le RISC-V étant à la fois l'hôte et la cible.
Des déplacements entre Rennes et Grenoble sont prévus, typiquement trois ou quatre jours tous les six mois. Les frais de déplacement seront remboursés dans les limites de la réglementation en vigueur.
Principales activités
Le candidat devra
- mettre en place une plate-forme RISC-V basée sur qemu
- spécifier un mécanisme d'émulation basé sur le signal SIGILL
- spécifier les extensions RISC-V qui peuvent être émulées et celles qui ne le peuvent pas
- mettre en œuvre un premier démonstrateur de réécriture dynamique de binaire
- analyser le langage SAIL pour générer automatiquement le code d'émulation.
En outre, le candidat devra
- rédiger la documentation
- respecter les bonnes pratiques de développement, notamment la gestion de version, l'intégration continue
- évaluer les performances de l'outil
- contribuer à la stratégie open-source du logiciel
Compétences
Compétences techniques et niveau requis :
- Bon niveau de C/C++
- Bon niveau de programmation Linux
- Bases de l'assembleur RISC-V (éventuellement x86)
- Bonnes compétences en génie logiciel : organisation des sources, tests, gestion de version, intégration continue
Langues : français et anglais lus et écrits, parlé un plus
Compétences relationnelles : travail en équipe nécessaire, notamment gestion de projet en équipe
Avantages
- Restauration subventionnée
- Transports publics remboursés partiellement
- Congés: 7 semaines de congés annuels + 10 jours de RTT (base temps plein) + possibilité d'autorisations d'absence exceptionnelle (ex : enfants malades, déménagement)
- Possibilité de télétravail (après 6 mois d'ancienneté) et aménagement du temps de travail
- Équipements professionnels à disposition (visioconférence, prêts de matériels informatiques, etc.)
- Prestations sociales, culturelles et sportives (Association de gestion des œuvres sociales d'Inria)
- Accès à la formation professionnelle
- Sécurité sociale
Informations générales
- Thème/Domaine :
Architecture, langages et compilation
Ingénierie logicielle (BAP E) - Ville : Rennes ou Grenoble
- Centre Inria : Centre Inria de l'Université de Rennes
- Date de prise de fonction souhaitée : 2025-06-01
- Durée de contrat : 1 an, 6 mois
- Date limite pour postuler : 2025-06-11
Attention: Les candidatures doivent être déposées en ligne sur le site Inria. Le traitement des candidatures adressées par d'autres canaux n'est pas garanti.
Consignes pour postuler
Sécurité défense :
Ce poste est susceptible d’être affecté dans une zone à régime restrictif (ZRR), telle que définie dans le décret n°2011-1425 relatif à la protection du potentiel scientifique et technique de la nation (PPST). L’autorisation d’accès à une zone est délivrée par le chef d’établissement, après avis ministériel favorable, tel que défini dans l’arrêté du 03 juillet 2012, relatif à la PPST. Un avis ministériel défavorable pour un poste affecté dans une ZRR aurait pour conséquence l’annulation du recrutement.
Politique de recrutement :
Dans le cadre de sa politique diversité, tous les postes Inria sont accessibles aux personnes en situation de handicap.
Contacts
- Équipe Inria : PACAP
-
Recruteur :
Rohou Erven / erven.rohou@inria.fr
L'essentiel pour réussir
Compétences générales attendues :
- Autonomie technique : capacité à comparer des alternatives techniques, à énumérer le pour et le contre et à parvenir à une décision éclairée pour la défendre
- Capacité à transmettre l'information par écrit et à l'oral
- Capacité à entendre la critique constructive et à la prendre en compte
- Capacité à présenter ses travaux à l'oral lors des réunions de projets annuelles
A propos d'Inria
Inria est l’institut national de recherche dédié aux sciences et technologies du numérique. Il emploie 2600 personnes. Ses 215 équipes-projets agiles, en général communes avec des partenaires académiques, impliquent plus de 3900 scientifiques pour relever les défis du numérique, souvent à l’interface d’autres disciplines. L’institut fait appel à de nombreux talents dans plus d’une quarantaine de métiers différents. 900 personnels d’appui à la recherche et à l’innovation contribuent à faire émerger et grandir des projets scientifiques ou entrepreneuriaux qui impactent le monde. Inria travaille avec de nombreuses entreprises et a accompagné la création de plus de 200 start-up. L'institut s'efforce ainsi de répondre aux enjeux de la transformation numérique de la science, de la société et de l'économie.