Czy RPi ma wsparcie typu hard float?
Tak, konkretnie (na oryginalnym Pi) VFPv2.
Jeśli tak, to czy szybszy jest ten miękki pływak?
tak
Istnieje kilka artykułów, które mówią, że najlepiej stosować algorytmy soft float na urządzeniach ARM, ponieważ bardzo niewiele układów ARM ma koprocesory typu hard float.
W 2007 roku zmiennoprzecinkowy na ramieniu był bałagan, wiele układów nie miało w ogóle FPU. Te, które często miały jeden z kilku różnych i niezgodnych. Gorsze ramię Debiana (jedna z głównych dystrybucji Linuksa w tamtym czasie) zostało zbudowane z powodów historycznych dla FPU o nazwie FPA, który miał bardzo niewiele układów i polegał głównie na emulacji jądra dla zmiennoprzecinkowego (oprogramowanie zmiennoprzecinkowe jest wolne, emulacja jądra zmiennoprzecinkowa jest wolniejszy). Myślę, że sytuacja w innych dystrybucjach była podobna, ale nie jestem tego pozytywny.
Biorąc pod uwagę bałagan w tym czasie, podjęto decyzję, że najlepszą opcją jest wykonanie portu EABI przy użyciu podstawowej wersji EABI. Ten ABI został zaprojektowany w taki sposób, że kod może korzystać z podstawowego ABI, opcjonalnie przy użyciu FPU. Pomysł polegał wtedy na tym, aby rdzeń dystrybucji był zbudowany przy użyciu programowego zmiennoprzecinkowego, a następnie określony kod, który intensywnie używany zmiennoprzecinkowy może być zbudowany przy użyciu sprzętowego zmiennoprzecinkowego, ale nadal przy użyciu podstawowego (zmiennoprzecinkowego) ABI. Ten port był znany w świecie Debiana jako „armel”.
Jednak bit „konkretnych pakietów zbudowanych przy użyciu sprzętowego zmiennoprzecinkowego” tak naprawdę nie zadziałał. W praktyce kilka pakietów nie chciało tego zrobić, a także pojawiał się narzut związany z tasowaniem wartości między rejestrami liczb całkowitych i zmiennoprzecinkowych.
Przechodząc do 2011 roku, sytuacja uległa znacznej zmianie. Arm agresywnie naciskał na VFP i przejęła je większość „procesorów aplikacyjnych” (coś, co można znaleźć w telefonach moblie i podobnych). Wiele głównych dystrybucji Linuksa (początkowo Debian, Ubuntu i Fedora, później) zdecydowało się na porty przy użyciu sprzętowego zmiennoprzecinkowego i twardego zmiennoprzecinkowego ABI. Na nieszczęście dla Pi te dystrybucje (które osiągały ukończenie w czasie, gdy Pi zostało wydane) generalnie ustalają minimalne wymagania sprzętowe jako ARMv7 z VFPv3_d16, więc nie będą działać na Pi.
Dlatego fani Pi zaczęli pracować nad wariantami dystrybucji specyficznymi dla pi, w których zastosowano sprzętową zmiennoprzecinkową i twardą zmiennoprzecinkową ABI, ale zostały one zbudowane z ustawieniami kompilatora, które działałyby na pi.