1. armhf是什么
在Ubuntu 12.04和Debian里,除了arm, armel,还呈现了一个名为armhf的版别。这个东西是什么?
众所周知,armel是现在首要的ARM ABI。armhf则是armel的一个变种,首要区别在浮点核算上。
在armel中,关于浮点数核算的约好有三种。
以gcc为例,对应的-mfloat-abi参数值有三个:
soft
soft是指一切浮点运算悉数在软件层完成,功率当然不高,适合于前期没有浮点核算单元的ARM处理器;
softfp
softfp是现在armel的默许设置,它将浮点核算交给FPU处理,但函数参数的传递–运用通用的整型寄存器而不是FPU寄存器
hard
hard则运用FPU浮点寄存器将函数参数传递给FPU处理。
需求留意的是,在兼容性上,soft与后两者是兼容的,但softfp和hard两种形式不兼容。
默许情况下,armel运用softfp,因而将hard形式的armel独自作为一个abi,称之为armhf。
2. 价值
运用softfp形式,会存在不必要的浮点到整数、整数到浮点的转化。
而运用hard形式,在每次浮点相关函数调用时,平均能节约20个CPU周期[1]。
对ARM这样每个周期都很重要的体系结构来说,这样的提高无疑是巨大的。
在彻底不改动源码和装备的情况下,在一些运用程序上,运用armhf能得到20——25%的功能提高[2]。
对一些严峻依赖于浮点运算的程序,更是能够到达300%的功能提高[3]。
3. 运用
armhf的敞开需求硬件的支撑,在Debian的wiki上要求ARMv7 CPU、Thumb-2指令集以及VFP3D16浮点处理器[4]。
在gcc的编译参数上,运用-mfloat-abi=hard -mfpu=vfp即可。
在东西上,CodeSourcery最早支撑hard形式。也可已自己编译东西链[5]。
4. linux with armfp的前史
2010年5月20日,Konstantinos Margaritis发文称将Ubuntu Larmic移植为hard形式[6]。
这一音讯后来在powerdeveloper上引发关于功能提高的评论[7]。
2010年7月6日,Hector Oron将他与Konstantinos的邮件评论记载发往debian-arm邮件列表[8],
将其称之为armelfp,引起社区注重,并得到armhf这个正式称号。
2010年7月18日,非官方的debian-armhf移植作业开端[9]。
2011年11月24日,该移植开端成为debian官方活动。
现在,debian库房中超越90%的软件现已移植结束[10]。
Debian估计在Wheezy (7.0)发布armhf的正式版。而Ubuntu也计划在Precise Pangolin 12.04 LTS中发布一个armhf版。
此外,对此条件到过的Toshiba AC100,现在现已有了armhf的debian和ubuntu镜像能够装置试用[11, 12]。