Есть ли у Raspberry Pi аппаратная поддержка с плавающей точкой?

34

Вокруг есть несколько статей, в которых говорится, что лучше всего использовать алгоритмы плавного плавания на устройствах ARM, потому что очень немногие чипы ARM имеют сопроцессоры с жестким плаванием. Итак, есть ли у RPi жесткая поддержка? Если так, то быстрее ли это мягкое плавание? (Так и должно быть?)

Алекс Чемберлен
источник

Ответы:

30

Согласно часто задаваемым вопросам , Raspberry Pi использует чип ARM 11 с поддержкой плавающей запятой:

Какой SoC вы используете?

SoC - это Broadcom BCM2835. Он содержит ARM1176JZFS с плавающей запятой, работающей на частоте 700 МГц и графический процессор Videocore 4. Графический процессор способен воспроизводить BluRay с качеством H.264 при скорости 40 Мбит / с. Доступ к быстрому трехмерному ядру осуществляется с помощью поставляемых библиотек OpenGL ES2.0 и OpenVG.

Это будет быстрее, чем мягкое плавание (если это не так, я бы удивился!), Хотя в системах без аппаратной поддержки часто лучше использовать обработку с фиксированной запятой, если вам не нужен диапазон, предлагаемый плавающим Точность

Мэтт Лэйси
источник
9

Он имеет аппаратную поддержку с плавающей точкой. Насколько я знаю, это не доступно в дистрибутиве Debian по умолчанию, предоставленном для RPi (пока). Я не слишком уверен насчет Арча, хотя, если они не получат поддержки, я думаю, что это скоро произойдет.

У меня есть Gentoo на моем RPi, поэтому у меня все по умолчанию компилируется с поддержкой hard float. Это быстро :)

CFLAGS="-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
CHOST="armv6j-hardfloat-linux-gnueabi"

(distcc и кросс-компиляция широко используются, конечно!)

Xiol
источник
Xiol, можете ли вы сделать Unixbench-Benchmark в вашей системе Gentoo и опубликовать результаты? Это, безусловно, было бы интересно для сравнения, поскольку разница в производительности между soft-fpu и hard-fpu довольно велика. Согласно copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (извините, немецкий язык), тест с точильным камнем примерно в 10 раз быстрее с Raspian (ARMHF arch w / HardFPU) по сравнению с RPI рекомендуется Debian (ARMEL с SoftFPU). Я думаю, для GenToo это должно быть еще больше.
6

Итак, есть ли у 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.

Питер Грин
источник
5

С 18 сентября 2012 года Arch Linux ARM также имеет жесткую поддержку. Прочитайте это объявление:

Сегодня мы открываем для общественности новые хранилища с плавающей запятой armv6, все пакеты которых созданы для поддержки модуля с плавающей запятой VFP, доступного в Raspberry Pi и Via APC-IO. Поскольку не существует пути обновления между репозиторием soft-float armv5 и новым репозиторием armv6h, мы также выпустили новый установочный образ для Raspberry Pi. Ссылка на изображение доступна на странице установки для Pi на нашем главном сайте. Этот образ также настроен для systemd, а не для sysvinit и initscripts, поэтому время загрузки сокращается, и установка пригодна для будущих изменений, которые в конечном итоге становятся постоянными в Arch.

Arch Linux ARM Raspberry Pi

Toni
источник
4

Да, как уже говорили другие, Raspberry Pi имеет поддержку жесткого плавания. Проверьте операционную систему Raspbian .

Raspbian - это неофициальный порт Debian Wheezy armhf с настройками компиляции, настроенными для получения оптимизированного кода «с плавающей запятой», который будет работать на Raspberry Pi. Это должно обеспечить значительно более высокую производительность для приложений, в которых интенсивно используются арифметические операции с плавающей запятой.

Кристофер
источник