Das offizielle Debian-Image für den Raspberry Pie (ARMv6 Architektur) unterstützt die integrierte FPU (Floating Point Unit) nicht, sondern verwendet eine Software-FPU (“soft-float”). Der Nachteil liegt klar auf der Hand: massiver Performance-Verlust bei rechenzeitintensiven mathematischen Operationen.

Die Unterstützung der Hardware-FPU stellt Debian mit der ARMFH Architektur nur für die nächste Prozessorgeneration ARMv7 zur Verfügung. Abhilfe für den Pi schafft hier das Raspbian Projekt, welches Debian Wheezy mit HardFPU-Unterstützung neu kompiliert (-march=armv6 -mfpu=vfp -mfloat-abi=har).

Ein Performance-Vergleich mittels UnixBench 5.1.3 findet sich nachfolgend. Der Dhrystone-Benchmark testet Integer-Operationen und liefert erwartungsgemäß keine all-zu-großen Performancedifferenzen, der Whetstone-Test mit seinen Gleitkommaoperationen zeigt dann den wahren Unterschied zwischen Debian ARMEL und Raspian ARMFH: den 10-fachen Wertungsindex! Da der Pi ohnehin mit wenig CPU-Power ausgestattet ist liefert der Unterschied den fundierten Grund wieso man auf die inoffizielle Debian Variante von Raspian umsteigen sollte.

Für den Test herangezogen wurde ein frisch installiertes Wheezy Image des Release-Candidates 2012-06-18 des Raspberry Pi Projektes sowie das Raspbian r3 Image von Hexxen.

Der Raspberry Pi ARM Prozessor

# cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

UnixBench 5.1.3 (Debian 7 “Wheezy”, ARMEL Arch)

./Run dhry2reg whetstone-double

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)
   System: raspberrypi: GNU/Linux
   OS: GNU/Linux -- 3.1.9+ -- #125 PREEMPT Sun Jun 17 16:09:36 BST 2012
   Machine: armv6l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   16:44:47 up 5 min,  1 user,  load average: 0.17, 0.34, 0.20; runlevel 2
------------------------------------------------------------------------
Benchmark Run: Thu Jun 21 2012 16:44:47 - 16:49:39
0 CPUs in system; running 1 parallel copy of tests


Dhrystone 2 using register variables        1282588.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                       29.8 MWIPS (9.7 s, 7 samples)


System Benchmarks Partial Index              BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    1282588.8    109.9
Double-Precision Whetstone                       55.0         29.8      5.4
                                                                   ========
System Benchmarks Index Score (Partial Only)                           24.4

UnixBench 5.1.3 (Debian 7 “Wheezy” aka Raspian r3 [Hexxen], ARMHF Arch)

./Run dhry2reg whetstone-double

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)
   System: raspbian: GNU/Linux
   OS: GNU/Linux -- 3.1.9+ -- #52 Tue May 8 23:49:32 BST 2012
   Machine: armv6l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   23:57:52 up 56 min,  2 users,  load average: 0.44, 0.33, 0.74; runlevel 2
------------------------------------------------------------------------
Benchmark Run: Thu Jun 21 2012 14:57:53 - 15:02:38
0 CPUs in system; running 1 parallel copy of tests


Dhrystone 2 using register variables        1873880.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      304.2 MWIPS (10.1 s, 7 samples)


System Benchmarks Partial Index              BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    1873880.6    160.6
Double-Precision Whetstone                       55.0        304.2     55.3
                                                                   ========
System Benchmarks Index Score (Partial Only)                           94.2

Hinweis: dieser Artikel ist ursprünglich auf dem IT-Blog “copy/paste” (www.copypaste.at) erschienen.