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.