ARMHF(hard-float ABI for ARM)
在Ubuntu 12.04和Debian里,除了arm, armel,還出現(xiàn)了一個(gè)名為armhf的版本。這個(gè)東西是什么?
本文引用地址:http://butianyuan.cn/article/201611/317196.htm眾所周知,armel是目前主要的ARM ABI。armhf則是armel的一個(gè)變種,主要區(qū)別在浮點(diǎn)計(jì)算上。
在armel中,關(guān)于浮點(diǎn)數(shù)計(jì)算的約定有三種。
以gcc為例,對(duì)應(yīng)的-mfloat-abi參數(shù)值有三個(gè):
soft
soft是指所有浮點(diǎn)運(yùn)算全部在軟件層實(shí)現(xiàn),效率當(dāng)然不高,適合于早期沒有浮點(diǎn)計(jì)算單元的ARM處理器;
softfp
softfp是目前armel的默認(rèn)設(shè)置,它將浮點(diǎn)計(jì)算交給FPU處理,但函數(shù)參數(shù)的傳遞--使用通用的整型寄存器而不是FPU寄存器
hard
hard則使用FPU浮點(diǎn)寄存器將函數(shù)參數(shù)傳遞給FPU處理。
需要注意的是,在兼容性上,soft與后兩者是兼容的,但softfp和hard兩種模式不兼容。
默認(rèn)情況下,armel使用softfp,因此將hard模式的armel單獨(dú)作為一個(gè)abi,稱之為armhf。
2. 價(jià)值
使用softfp模式,會(huì)存在不必要的浮點(diǎn)到整數(shù)、整數(shù)到浮點(diǎn)的轉(zhuǎn)換。
而使用hard模式,在每次浮點(diǎn)相關(guān)函數(shù)調(diào)用時(shí),平均能節(jié)省20個(gè)CPU周期[1]。
對(duì)ARM這樣每個(gè)周期都很重要的體系結(jié)構(gòu)來說,這樣的提升無疑是巨大的。
在完全不改變?cè)创a和配置的情況下,在一些應(yīng)用程序上,使用armhf能得到20——25%的性能提升[2]。
對(duì)一些嚴(yán)重依賴于浮點(diǎn)運(yùn)算的程序,更是可以達(dá)到300%的性能提升[3]。
3. 使用
armhf的開啟需要硬件的支持,在Debian的wiki上要求ARMv7 CPU、Thumb-2指令集以及VFP3D16浮點(diǎn)處理器[4]。
在gcc的編譯參數(shù)上,使用-mfloat-abi=hard -mfpu=vfp即可。
在工具上,CodeSourcery最早支持hard模式。也可已自己編譯工具鏈[5]。
4. linux with armfp的歷史
2010年5月20日,Konstantinos Margaritis發(fā)文稱將Ubuntu Larmic移植為hard模式[6]。
這一消息后來在powerdeveloper上引發(fā)關(guān)于性能提升的討論[7]。
2010年7月6日,Hector Oron將他與Konstantinos的郵件討論記錄發(fā)往debian-arm郵件列表[8],
將其稱之為armelfp,引起社區(qū)重視,并得到armhf這個(gè)正式名稱。
2010年7月18日,非官方的debian-armhf移植工作開始[9]。
2011年11月24日,該移植開始成為debian官方活動(dòng)。
目前,debian倉(cāng)庫(kù)中超過90%的軟件已經(jīng)移植完畢[10]。
Debian預(yù)計(jì)在Wheezy (7.0)發(fā)布armhf的正式版。而Ubuntu也計(jì)劃在Precise Pangolin 12.04 LTS中發(fā)布一個(gè)armhf版。
此外,對(duì)此前提到過的Toshiba AC100,目前已經(jīng)有了armhf的debian和ubuntu鏡像可以安裝試用[11, 12]。
評(píng)論