Apakah Raspberry Pi memiliki dukungan Hardware Floating Point?

34

Ada beberapa artikel di sekitar yang mengatakan yang terbaik untuk menggunakan algoritma float lunak pada perangkat ARM, karena sangat sedikit chip ARM memiliki coprocessor float keras. Jadi, apakah RPi memiliki dukungan hard float? Jika demikian, apakah ini lebih cepat daripada pelampung lunak? (Seharusnya begitu, kan?)

Alex Chamberlain
sumber

Jawaban:

30

Menurut FAQ , Raspberry Pi menggunakan chip ARM 11 dengan dukungan floating point:

SoC apa yang Anda gunakan?

SoC adalah Broadcom BCM2835. Ini berisi ARM1176JZFS, dengan floating point, berjalan pada 700Mhz, dan Videocore 4 GPU. GPU ini mampu memutar ulang kualitas BluRay, menggunakan H.264 pada 40MBits / s. Ia memiliki inti 3D cepat yang diakses menggunakan pustaka OpenGL ES2.0 dan OpenVG yang disediakan.

Ini akan lebih cepat daripada soft float (jika tidak, saya akan kagum!), Meskipun pada sistem tanpa dukungan perangkat keras, sering kali merupakan ide yang lebih baik untuk meningkatkan pemrosesan titik tetap jika Anda tidak secara spesifik membutuhkan kisaran yang ditawarkan oleh floating titik presisi.

Matt Lacey
sumber
9

Itu memang memiliki dukungan floating point hardware. Sejauh yang saya tahu ini tidak tersedia di distro Debian default yang disediakan untuk RPi (belum). Saya tidak terlalu yakin tentang Arch, walaupun jika mereka tidak memiliki dukungan maka saya membayangkannya akan segera.

Saya memiliki Gentoo di RPi saya, jadi saya memiliki semuanya yang dikompilasi dengan dukungan hard float secara default. Cepat :)

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

(distcc dan cross-compiling digunakan secara luas, tentu saja!)

Xiol
sumber
Xiol, dapatkah Anda melakukan Benchmark-Unixbench pada Sistem Gentoo Anda dan memposting hasilnya? Pasti akan menarik untuk perbandingan karena perbedaan kinerja antara soft-fpu dan hard-fpu cukup besar. Menurut copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (maaf, bahasa jerman) patokan batu asahan adalah sekitar 10x lebih cepat dengan Raspian (lengkungan ARMHF dengan HardFPU) dibandingkan dengan RPI direkomendasikan Debian (ARMEL dg SoftFPU). Saya kira untuk GenToo pasti lebih besar.
6

Jadi, apakah RPi memiliki dukungan hard float?

Ya, khususnya (pada Pi asli) VFPv2.

Jika demikian, apakah ini lebih cepat daripada pelampung lunak?

iya nih

Ada beberapa artikel di sekitar yang mengatakan yang terbaik untuk menggunakan algoritma float lunak pada perangkat ARM, karena sangat sedikit chip ARM memiliki coprocessor float keras.

Kembali pada tahun 2007 floating point di tangan berantakan, banyak chip tidak memiliki FPU sama sekali. Mereka yang memang sering memiliki salah satu dari beberapa yang berbeda dan tidak kompatibel. Lengan Debian yang lebih buruk (salah satu distro lengan utama linux pada waktu itu) adalah karena alasan historis yang dibangun untuk FPU yang disebut FPA yang sangat sedikit chip miliki dan sebagian besar mengandalkan emulasi kernel untuk floating point (perangkat lunak floating point lambat, kernel floating point emulasi lebih lambat). Saya pikir situasi di distro lain serupa tetapi saya tidak positif tentang itu.

Mengingat kekacauan pada saat itu dibuat keputusan bahwa opsi terbaik adalah melakukan port EABI menggunakan versi baseline (soft-float) EABI. ABI ini dirancang sedemikian rupa sehingga kode dapat menggunakan ABI dasar sementara secara opsional menggunakan FPU. Idenya pada saat itu adalah bahwa inti dari distro akan dibangun menggunakan perangkat lunak floating point dan kemudian kode spesifik yang menggunakan floating point dapat dibangun dengan perangkat keras floating point tetapi masih menggunakan baseline (soft float) ABI. Port ini dikenal di dunia Debian sebagai "armel".

Namun "paket spesifik yang dibangun menggunakan titik mengambang perangkat keras" sedikit tidak berhasil. Dalam prakteknya beberapa paket repot untuk melakukan hal seperti itu dan ada juga biaya pengocokan nilai antara register integer dan floating point.

Maju cepat ke 2011 dan situasinya telah berubah sangat. Arm telah secara agresif mendorong VFP dan sebagian besar "pemroses aplikasi" (jenis yang Anda temukan di telepon seluler dan sejenisnya) telah mengadopsinya. Sejumlah distro linux utama (setidaknya Debian, Ubuntu dan Fedora awalnya, lebih belakangan) memilih untuk melakukan port menggunakan perangkat floating point dan hard float ABI. Sayangnya untuk Pi distro ini (yang mencapai penyelesaian sekitar waktu Pi dirilis) umumnya menetapkan persyaratan perangkat keras minimum mereka sebagai ARMv7 dengan VFPv3_d16 sehingga mereka tidak akan berjalan pada Pi.

Jadi penggemar Pi mulai bekerja pada varian distro pi-spesifik yang menggunakan titik apung perangkat keras dan ABI apung tetapi dibangun dengan pengaturan kompiler yang akan berjalan pada pi.

Peter Green
sumber
5

Sejak 18 September 2012, Arch Linux ARM juga memiliki dukungan hard float. Baca pengumuman ini:

Hari ini kami akan membuka repositori armv6 hard-float baru untuk umum, dengan semua paket dibangun untuk mendukung unit titik-mengambang VFP yang tersedia di Raspberry Pi dan Via APC-IO. Karena tidak ada jalur peningkatan antara repositori armv5 soft-float dan repositori armv6h yang baru, kami juga telah merilis gambar instalasi baru untuk Raspberry Pi. Tautan ke gambar tersedia di halaman Instalasi untuk Pi di situs utama kami. Gambar ini juga diatur untuk systemd alih-alih sysvinit dan skrip init, sehingga waktu boot lebih cepat dan instalasi terbukti di masa depan untuk perubahan yang akhirnya menjadi permanen di Arch.

Arch Linux ARM Raspberry Pi

Toni
sumber
4

Ya, seperti yang orang lain nyatakan Raspberry Pi memang memiliki dukungan float keras. Periksa sistem operasi Raspbian .

Raspbian adalah port tidak resmi dari Debian Wheezy armhf dengan pengaturan kompilasi yang disesuaikan untuk menghasilkan kode "hard float" yang dioptimalkan yang akan berjalan pada Raspberry Pi. Ini harus memberikan kinerja yang lebih cepat secara signifikan untuk aplikasi yang banyak menggunakan operasi aritmatika floating point.

Christopher
sumber