Debian on ARM
Wookey & Hector Oron
Fosdem, February 2011
What we’ll tell you about
- Nomenclature
- ABIs
- Debian ports
- New armhf port
- Future developments
What’s an ABI?
- Endianness, Architecture, C-library calling convention
- Not instruction set within arch
- Not CPU optimisations
Floating point units
- FPA (1996) - mixed endianness values
- iwMMXt (Intel, 2004)
- Maverick crunch (Cirrus, 2004)
- VFP option since v5, now standard
- Neon
Floating point calling convention
FP Calling convention options
- VFPv3_D16 available on all v7 CPUs
- VFPv3_D32 on some A8/A9s (v7)
- half-precision VFPv3-f16 on some v7 CPUs
- Neon support uses the FP registers, thus compatible
Endianness
- All arms since ARM7 (armv3) switchable
- Only really used on IXP network processor series
- Not much use anymore as there is a swap instruction
- Big-endian discouraged
Debian ‘armel’ port
- ‘armel’ arch added to Debian GNU/Linux 5.0 (Lenny) in 2008
- Change the ABI: to ‘Embedded’ ABI ‘EABI’
- Built for armv4t instruction set
- ‘Soft-float’ for FPU ops - works with/without FPU
- http://wiki.debian.org/ArmEabiPort
- There are no plans to deprecate it.
- Ubuntu armel is different: v7, thumb2, softfp
Debian ‘armeb’ port
- ‘armeb’ has never been a Debian official architecture
- Was done for the NSLU2 due to proprietary big-endian ethernet driver
- Nobody currently working on it
- Old ABI, not EABI
Debian ‘armhf’ performance
Debian ‘armhf’ performance
- Debian armel (‘soft-float’) vs Debian/Ubuntu (‘softfp’)
Sat Aug 21 22:46:06 CDT 2010 #1S
real 15m54.630s
user 15m52.050s
sys 0m2.370s
Sat Aug 21 23:02:01 CDT 2010 #1SFP
real 9m55.798s
user 9m53.000s
sys 0m2.490s
Debian ‘armhf’ performance
- Debian armel (‘soft-float’) vs Debian armhf (‘hard-float’)
Tue Aug 10 17:20:31 CDT 2010 #1S
real 16m41.598s
user 15m57.740s
sys 0m2.640s
Tue Aug 10 17:37:12 CDT 2010 #1H
real 7m47.515s
user 7m24.980s
sys 0m2.150s
Debian ‘armhf’ performance
- Debian armel (‘soft-float’) vs Debian/Ubuntu (‘softfp’)
softfp:
$ glxgears
80 frames in 5.0 seconds
119 frames in 5.0 seconds
118 frames in 5.0 seconds
120 frames in 5.0 seconds
hardfp:
136 frames in 5.0 seconds
144 frames in 5.0 seconds
143 frames in 5.0 seconds
139 frames in 5.0 seconds
Debian ‘armhf’ performance
- armv7, hard-float (VFP_D16), thumb2
- Up to 40% faster (povray)
- Mesa (20%)
- cfft (30%)
Debian ‘armhf’ performance
Debian Ports stats
- ‘armhf’ is the green line
Debian armhf TODO
TODO:
- http://wiki.debian.org/ArmHardFloatTodo
- Mass bug filing
- Sprints:
- February: Cambridge, UK
- April: San Antonio, TX
Optimizations and subarches