Alors, le RPi a-t-il un support dur float?
Oui, spécifiquement (sur le Pi d'origine) VFPv2.
Si oui, est-ce plus rapide que le soft float?
Oui
Quelques articles disent qu'il est préférable d'utiliser des algorithmes de flottement progressif sur les dispositifs ARM, car très peu de puces ARM possèdent des coprocesseurs à flotteur constant.
En 2007, la virgule flottante sur le bras était un désordre, beaucoup de puces n’avaient pas du tout de FPU. Ceux qui le faisaient avaient souvent l’un des plusieurs différents et incompatibles. Le pire bras Debian (l’un des principaux distributions Linux à l’époque à l’époque) reposait pour des raisons historiques pour un FPU appelé FPA que très peu de puces utilisaient et reposaient principalement sur l’émulation du noyau pour virgule flottante (le virement logiciel est lent, le virgule flottant émulé par le noyau) est plus lent). Je pense que la situation dans les autres distributions était similaire mais je ne suis pas positif à ce sujet.
Compte tenu du désordre régnant à l'époque, il a été décidé que la meilleure option consistait à créer un port EABI à l'aide de la version de base (soft-float) d'EABI. Cette ABI a été conçue de telle sorte que le code puisse utiliser l’ABI de base tout en utilisant éventuellement la FPU. L'idée à l'époque était que le noyau de la distribution serait construit en utilisant un logiciel à virgule flottante, puis le code spécifique qui utilise beaucoup de virgule flottante pourrait être construit avec un matériel en virgule flottante, mais en utilisant toujours l'ABI de base (soft float). Ce port était connu dans le monde Debian sous le nom "armel".
Cependant, le bit "paquetages spécifiques utilisant du matériel à virgule flottante" n'a pas vraiment fonctionné. En pratique, peu de paquets ont pris la peine de faire une telle chose et il y avait aussi la surcharge de mélanger les valeurs entre les registres entiers et les registres à virgule flottante.
Avance rapide jusqu'en 2011 et la situation a considérablement changé. Arm avait agressivement poussé VFP et la grande majorité des "processeurs d'applications" (le genre de choses que l'on trouve dans les téléphones mobiles et similaires) l'avaient adopté. Un certain nombre de distributions majeures de Linux (au moins Debian, Ubuntu et Fedora au départ, puis plus tard) ont choisi de créer des ports en utilisant une virgule flottante matérielle et l’ABI hard float. Malheureusement pour le Pi, ces distributions (qui étaient pratiquement terminées au moment de la sortie du Pi) définissaient généralement leur configuration matérielle minimale en tant que ARMv7 avec VFPv3_d16 afin qu'elles ne s'exécutent pas sur le Pi.
Les fans de Pi ont donc commencé à travailler sur des variantes de distribution spécifiques à pi, qui utilisaient une virgule flottante matérielle et l’ABI hard float, mais étaient construites avec des paramètres de compilation qui s’exécuteraient sur le pi.