Projet de spécialité - Contribution à un environnement de cross-development pour riscv 128-bit

De Ensiwiki
Aller à : navigation, rechercher

Contribution à un environnement de cross-development pour riscv 128-bit

Sujet de Projets de spécialité - 2A proposé pour l'année 2022 par Frédéric Pétrot (a.k.a le prof d'archi)

Étudiants par équipe : 3 ou 4

Nombre d'équipes : 1

Contexte

La taille des adresses virtuelles dans les processeurs généralistes est passée de 34 à 48 bits en 1999 (ça ne nous rajeunit pas) et de 48 à 57 bits en 2019. Sur les grosses machines de calcul (c.f. comme celles du top 500), il n'est pas totalement délirant de penser que l'on pourrait avoir besoin d'un 65ème bit vers 2030. Dans ces conditions, la présence d'outils de développement ciblant des `long` au sens du C sur 128 bits prend tout son intérêt.

La spécification du RISCV contient une extension 128 bits, et votre serviteur tente de l'upstreamer dans QEMU (https://lists.nongnu.org/archive/html/qemu-riscv/2021-10/msg00007.html). C'est donc sur la base de cette architecture que s'effectueront les développements. Les tests actuels sont réalisés en assembleur, avec l'utilisation de pseudo-instructions de type .insn fonctionnelles mais assez moyennement satisfaisantes (https://mail.gnu.org/archive/html/bug-binutils/2020-06/msg00175.html).

Objectif

L'objectif général du projet est de commencer à ajouter le support de cette extension (rv128) dans les outils de développement GNU, pour commencer objdump et gas, et ensuite gcc ou llvm et finalement ld, le gros morceau étant clairement gcc. Il sera nécessaire au cours du travail de penser aux tests à effectuer pour valider les développements.

Par défaut, mon choix se porte sur les outils autour de gcc (d'une stabilité remarquable depuis 1992), mais si vous avez une bonne raison de préférer llvm, je n'ai pas de religion !

Prérequis

Maîtrise poussée du langage C, intérêt pour le code bas niveau, l'utilisation de vim est un plus :)

Contact

Frédéric Pétrot (a.k.a le prof d'archi)