賀愛(ài)香,顧乃杰,蘇俊杰
(1.中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027; 2.安徽新華學(xué)院 信息工程學(xué)院,合肥 230088)
隨著嵌入式系統(tǒng)的發(fā)展,多核ARM微處理器[1]因其體積小、功耗低、成本低、性能高等特點(diǎn)很快占領(lǐng)了移動(dòng)通信市場(chǎng)領(lǐng)域。Android[2]是運(yùn)行于ARM架構(gòu)處理器之上的一款開(kāi)源操作系統(tǒng)軟件,據(jù)市場(chǎng)研究公司Gartner 2016年上半年最新統(tǒng)計(jì)數(shù)據(jù)顯示,Android市場(chǎng)占有率為近九成[3]。Bionic[4]是Android系統(tǒng)中以C語(yǔ)言構(gòu)建的基礎(chǔ)函數(shù)庫(kù),為系統(tǒng)提供系統(tǒng)接口和擴(kuò)展功能函數(shù)。在處理器的性能得到提高的情況下,程序充分利用處理器的性能,不但可以減少計(jì)算資源的浪費(fèi),還可以提高程序的響應(yīng)速度,因此對(duì)Bionic庫(kù)基礎(chǔ)函數(shù)進(jìn)行優(yōu)化對(duì)提升ARM平臺(tái)性能與用戶體驗(yàn)有很大作用[5]。針對(duì)ARM體系結(jié)構(gòu)進(jìn)行優(yōu)化是非常重要的工作,很多學(xué)者和研究人員利用各種優(yōu)化方法積極探索該問(wèn)題。為了高效合理地使用寄存器和存儲(chǔ)器,提高程序的執(zhí)行效率,文獻(xiàn)[6]對(duì)ARM體系結(jié)構(gòu)提出了減小漢明距離、使用位操作指令、正確選擇流程控制語(yǔ)句和壓縮代碼密度等優(yōu)化方法。文獻(xiàn)[7]基于ARM嵌入式系統(tǒng)充分利用軟硬件資源,提出了循環(huán)展開(kāi)、避免使用除法、利用條件執(zhí)行等C程序優(yōu)化方法。文獻(xiàn)[8]使用128位訪存指令、循環(huán)展開(kāi)等方法,結(jié)合龍芯3A處理器將BLAS庫(kù)性能提高了6倍。文獻(xiàn)[9]對(duì)Bionic庫(kù)中的熱點(diǎn)函數(shù)進(jìn)行了匯編優(yōu)化,使得Android系統(tǒng)整體性能得到了提升。
基于以上研究,本文在對(duì)Bionic庫(kù)中字符串和內(nèi)存處理函數(shù)進(jìn)行分析的同時(shí),結(jié)合多核ARMv8體系結(jié)構(gòu)特征[10],提出不同的優(yōu)化方案,包括整字處理[11]、循環(huán)展開(kāi)[12]、特殊指令[13]等優(yōu)化方法,使得Bionic庫(kù)中常用基礎(chǔ)函數(shù)的性能在ARM Cortex-A72平臺(tái)上有不同程度的提升。
ARM是一類微處理器的統(tǒng)稱[14],基于ARM內(nèi)核的芯片統(tǒng)稱為ARM芯片。ARM體系結(jié)構(gòu)采用精簡(jiǎn)指令集,具有定長(zhǎng)指令、大量的寄存器、獨(dú)特的裝載/保存(Load/Store)等特點(diǎn)[15]。ARM公司從1991年推出ARM1處理器到現(xiàn)在,其體系結(jié)構(gòu)已經(jīng)從ARMv1發(fā)展到現(xiàn)在的ARMv8,每一個(gè)體系架構(gòu)版本都定義了一套指令集和相應(yīng)的功能框架,并且每個(gè)結(jié)構(gòu)體系向后兼容,圖1為ARMv5至ARMv8的架構(gòu)比較[16]。基于ARMv8的體系結(jié)構(gòu)產(chǎn)品不僅主導(dǎo)了移動(dòng)通信領(lǐng)域,而且在無(wú)人機(jī)控制系統(tǒng)[17]、汽車(chē)導(dǎo)航[18]、智能家居[19]等智能硬件控制系統(tǒng)中應(yīng)用廣泛,本文是基于ARMv8最新架構(gòu)的研究。

圖1 ARMv5至ARMv8架構(gòu)比較
ARMv8提供一種更加清晰的架構(gòu),同時(shí)考慮到將來(lái)的發(fā)展趨勢(shì)采用一種全新的架構(gòu)來(lái)實(shí)現(xiàn),是目前最新的架構(gòu)[20]。ARMv8-A系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用。ARMv8的架構(gòu)繼承以往ARMv7與之前處理器技術(shù)的基礎(chǔ),除了支持現(xiàn)有的16 bit/32 bit的Thumb2指令集外,也向前兼容現(xiàn)有的A32(ARM 32 bit)指令集和NEON指令集,并擴(kuò)充了現(xiàn)有的A32(ARM 32 bit)和T32(Thumb2 32 bit)指令集。ARMv8采用基于64 bit的AArch64架構(gòu),新增了A64(ARM 64 bit)指令集,解決了ARMv7架構(gòu)遺留的虛擬地址問(wèn)題,定義了AArch64和AArch32兩套運(yùn)行環(huán)境(稱作Execution state),分別執(zhí)行64 bit和32 bit指令集,軟件可以在需要的時(shí)候,切換Execution state。AArch64架構(gòu)使用新的概念(exception level),重新解釋了processor mode、privilege level等概念。在ARMv7安全擴(kuò)展的基礎(chǔ)上,新增了CRYPTO(加密)模塊,支持安全相關(guān)的應(yīng)用需求[21]。在ARMv7虛擬化擴(kuò)展的基礎(chǔ)上,提供完整的虛擬化框架,從硬件上支持虛擬化[22]。其架構(gòu)框圖如圖2所示。

圖2 ARM Cortex-A72處理器架構(gòu)
現(xiàn)代計(jì)算機(jī)2個(gè)大主流體系結(jié)構(gòu)為X86和ARM,為了高效利用硬件資源,均支持單指令多數(shù)據(jù)流 (Single Instruction Multiple Datastream,SIMD)技術(shù)[23]。NEON是ARM Cortex-A系列處理器新增的一個(gè)運(yùn)算部件,使得每次運(yùn)算可達(dá)到128位,擴(kuò)展了SIMD,能更快速地處理多媒體數(shù)據(jù),使用戶體驗(yàn)更流暢[24]。NEON具有128位寬的運(yùn)算部件,可減少對(duì)內(nèi)存的訪問(wèn),從而提高數(shù)據(jù)處理速度。
NEON指令可批處理SIMD;通過(guò)對(duì)齊和非對(duì)齊數(shù)據(jù)訪問(wèn),寄存器被視為同一數(shù)據(jù)類型的元素的矢量;數(shù)據(jù)類型可為8 位、16 位、32 位、64位有/無(wú)符號(hào)整型、32位單精度和64位雙精度浮點(diǎn)型;指令在所有通道中執(zhí)行同一操作。如圖3所示,顯示了UADD16 Q0,Q1,Q2指令操作,實(shí)現(xiàn)了對(duì)寄存器Q1和Q2中8路16 bit的并行相加,并將最后結(jié)果保存到R0中。

圖3 8路16 bit整數(shù)加法運(yùn)算
Bionic是Google公司專為Android系統(tǒng)開(kāi)發(fā)的基礎(chǔ)函數(shù)庫(kù),提供C/C++標(biāo)準(zhǔn)庫(kù)功能。GNU/Linux以及其他類Unix系統(tǒng)的基礎(chǔ)函數(shù)庫(kù)最常用的就是Glibc。與Glibc相比,Bionic是輕量級(jí)C庫(kù),大小僅為200 KB,是Glibc體積的一半,這意味著B(niǎo)ionic占用低內(nèi)存[25]。
Bionic庫(kù)中包含字符串與內(nèi)存處理函數(shù)、數(shù)學(xué)計(jì)算函數(shù)、排序與查找、字符串加密等基礎(chǔ)工具型函數(shù)。本文通過(guò)大量實(shí)驗(yàn),著重優(yōu)化Bionic 庫(kù)中的memset、strcmp、strncmp、strcpy、strncpy、memcpy、memmove、strlen、strcat、strdup等函數(shù)。
針對(duì)多核ARMv8體系結(jié)構(gòu),考慮使用整字處理(合并字節(jié))、特殊指令、循環(huán)展開(kāi)、指令調(diào)度等方法進(jìn)行優(yōu)化。本節(jié)將探討如何使用這些優(yōu)化技術(shù),來(lái)實(shí)現(xiàn)Bionic庫(kù)中熱點(diǎn)函數(shù)的優(yōu)化。
在Bionic庫(kù)函數(shù)中,字符串是通過(guò)一段連續(xù)的內(nèi)存來(lái)表示,所以字符串的操作與內(nèi)存操作基本一致。兩者的區(qū)別在于字符串是用空字符’ 主站蜘蛛池模板: 91在线中文| 欧美精品v| 真实国产精品vr专区| 国产一区二区三区夜色| 日本www色视频| 九色视频在线免费观看| 欧美性猛交xxxx乱大交极品| 中文无码精品A∨在线观看不卡| 免费一级毛片完整版在线看| 动漫精品中文字幕无码| 久久久波多野结衣av一区二区| 久操中文在线| 久久一色本道亚洲| 成人午夜天| 青青久在线视频免费观看| 新SSS无码手机在线观看| 婷婷综合在线观看丁香| 欧美狠狠干| 91激情视频| 成人免费网站在线观看| 欧美在线综合视频| 伊人国产无码高清视频| 欧美a在线| 91福利免费| 国产成人综合日韩精品无码首页| 国产精品自拍合集| 亚洲视频黄| 免费人成视网站在线不卡| 国产在线观看第二页| 亚洲免费黄色网| 美女免费黄网站| 精品国产欧美精品v| 91精品人妻一区二区| 毛片免费在线视频| 日韩成人免费网站| 亚洲综合中文字幕国产精品欧美| 毛片网站在线看| av一区二区无码在线| 国产在线精品美女观看| 乱人伦视频中文字幕在线| 亚洲男人的天堂久久香蕉网| 亚洲天堂免费| 日韩经典精品无码一区二区| 久久综合伊人77777| 亚洲日本中文综合在线| 日本在线欧美在线| 伊人丁香五月天久久综合| 欧美一级色视频| 日韩在线视频网站| 国产成人91精品| 亚洲日韩精品无码专区97| 国产精品永久不卡免费视频| 中国美女**毛片录像在线 | 国产欧美日韩91| 欧美高清三区| 国产精品免费p区| 亚洲AV电影不卡在线观看| 久久久亚洲色| 污网站免费在线观看| 久久久黄色片| 最新国产高清在线| 欧美亚洲激情| 亚洲欧州色色免费AV| A级毛片高清免费视频就| 國產尤物AV尤物在線觀看| 真实国产精品vr专区| 国产乱人免费视频| 精品少妇人妻无码久久| 亚洲综合中文字幕国产精品欧美| 亚洲欧美日韩中文字幕一区二区三区| 日本亚洲欧美在线| 黄色网站不卡无码| 福利一区在线| 99热这里只有精品国产99| 毛片免费视频| 国产91在线|中文| 在线观看免费人成视频色快速| 欧美啪啪一区| 亚洲欧美日韩另类| 日韩AV无码一区| 三级毛片在线播放| 国产精品性|