Отже, чи має RPi жорстку підтримку поплавця?
Так, конкретно (на оригіналі Pi) VFPv2.
Якщо так, то чи швидше це м'яке плавання?
Так
Є кілька статей навколо, які говорять про те, що найкраще використовувати алгоритми м'якого поплавця на пристроях ARM, оскільки дуже мало мікросхем ARM мають копроцесори з твердим плаванням.
Ще в 2007 році плаваюча точка на руці була безладом, багато фішок взагалі не мали FPU. Ті, хто часто мав один із кількох різних і несумісних. Гірша рука Debian (один з головних дистрибутивів Linux на той час) була з історичних причин побудована для FPU під назвою FPA, у якого дуже мало чіпів було, і в основному покладалося на емуляцію ядра для плаваючої точки (плаваюча точка програмного забезпечення повільна, ядро імітується плаваючою точкою повільніше). Я думаю, що ситуація в інших дистрибутивах була схожа, але я не позитивний з цього приводу.
З огляду на безладдя на той момент було прийнято рішення про те, що найкращим варіантом було зробити порт EABI, використовуючи базову версію EABI (soft-float). Цей ABI був розроблений таким чином, що код міг використовувати базовий ABI, при необхідності використовуючи FPU. В той час ідея полягала в тому, що ядро дистрибутива буде побудовано за допомогою програмної плаваючої точки, а потім конкретний код, який із сильно використовуваною плаваючою точкою може бути побудований з апаратною плаваючою точкою, але все ще з використанням базової лінії (soft float) ABI. Цей порт був відомий у світі Дебіанів як «арсенал».
Однак біт "специфічних пакетів, побудованих за допомогою апаратної плаваючої точки" насправді не вийшов. На практиці декілька пакетів потрудилися зробити таке, а також було накладено великі перетасовки значень між цілими і регістрами з плаваючою точкою.
Швидкий перехід до 2011 року і ситуація суттєво змінилася. Arm агресивно підштовхує VFP, і переважна більшість "процесорів програм" (такий, який ви знайдете в мобільних телефонах і подібних) прийняли його. Ряд основних Linux-дистрибутивів (принаймні Debian, Ubuntu та Fedora спочатку, пізніше) вирішили робити порти, використовуючи апаратну плаваючу точку та жорсткий плаваючий ABI. На жаль, для Pi ці дистрибутиви (які досягали завершення до моменту виходу Pi) зазвичай встановлювали свої мінімальні вимоги до обладнання як ARMv7 з VFPv3_d16, щоб вони не працювали на Pi.
Тож шанувальники Pi почали працювати над пі-специфічними варіантами дистрибутива, які використовували апаратну плаваючу точку та жорсткий плаваючий ABI, але були побудовані з налаштуваннями компілятора, які працюватимуть на pi.