Итак, есть ли у RPi жесткая поддержка?
Да конкретно (на оригинальном Пи) VFPv2.
Если так, то быстрее ли это мягкое плавание?
да
Вокруг есть несколько статей, в которых говорится, что лучше всего использовать алгоритмы плавного плавания на устройствах ARM, потому что очень немногие чипы ARM имеют сопроцессоры с жестким плаванием.
Еще в 2007 году с плавающей точкой на руке был беспорядок, многие чипы вообще не имели FPU. Те, которые часто делали, имели один из нескольких разных и несовместимых. Худшая ветвь Debian (один из основных дистрибутивов linux в то время) была по историческим причинам построена для FPU под названием FPA, который имел очень мало микросхем и большей частью полагался на эмуляцию ядра для плавающей точки (программная плавающая точка медленная, эмулируемая ядром плавающая точка медленнее). Я думаю, что ситуация в других дистрибутивах была похожей, но я не уверен в этом.
Учитывая беспорядок в то время, когда было принято решение, что лучшим вариантом было бы сделать порт EABI, используя базовую (плавную) версию EABI. Этот ABI был разработан таким образом, чтобы код мог использовать базовый ABI при необязательном использовании FPU. Идея того времени заключалась в том, что ядро дистрибутива будет построено с использованием программной плавающей запятой, а затем специальный код, который интенсивно использует плавающую точку, может быть построен с аппаратной плавающей запятой, но все еще с использованием базового (мягкого плавающего) ABI. Этот порт был известен в мире Debian как "armel".
Однако бит «определенные пакеты, созданные с использованием аппаратной плавающей запятой» на самом деле не сработал. На практике немногие пакеты удосужились сделать такую вещь, и были также издержки перетасовки значений между целочисленными и плавающими регистрами.
Перенесемся в 2011 год, и ситуация существенно изменилась. Arm агрессивно выдвигал VFP, и подавляющее большинство «процессоров приложений» (то, что вы найдете в мобильных телефонах и симлиарах) приняли его. Ряд основных дистрибутивов Linux (по крайней мере, Debian, Ubuntu и Fedora вначале, более поздние версии) решили использовать порты с использованием аппаратной плавающей запятой и аппаратного ABI. К сожалению, для этих дистрибутивов Pi (которые были завершены к моменту выпуска Pi) обычно устанавливали свои минимальные требования к оборудованию как ARMv7 с VFPv3_d16, чтобы они не работали на Pi.
Так что поклонники Pi начали работать над пи-специфичными вариантами дистрибутивов, в которых использовалась аппаратная с плавающей запятой и жестко плавающий ABI, но которые были созданы с настройками компилятора, которые будут работать на pi.