999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多核ARM體系結構的基礎函數優化方法

2018-05-30 01:26:13賀愛香顧乃杰蘇俊杰
計算機工程 2018年5期
關鍵詞:指令優化

賀愛香,顧乃杰,蘇俊杰

(1.中國科學技術大學 計算機科學與技術學院,合肥 230027; 2.安徽新華學院 信息工程學院,合肥 230088)

0 概述

隨著嵌入式系統的發展,多核ARM微處理器[1]因其體積小、功耗低、成本低、性能高等特點很快占領了移動通信市場領域。Android[2]是運行于ARM架構處理器之上的一款開源操作系統軟件,據市場研究公司Gartner 2016年上半年最新統計數據顯示,Android市場占有率為近九成[3]。Bionic[4]是Android系統中以C語言構建的基礎函數庫,為系統提供系統接口和擴展功能函數。在處理器的性能得到提高的情況下,程序充分利用處理器的性能,不但可以減少計算資源的浪費,還可以提高程序的響應速度,因此對Bionic庫基礎函數進行優化對提升ARM平臺性能與用戶體驗有很大作用[5]。針對ARM體系結構進行優化是非常重要的工作,很多學者和研究人員利用各種優化方法積極探索該問題。為了高效合理地使用寄存器和存儲器,提高程序的執行效率,文獻[6]對ARM體系結構提出了減小漢明距離、使用位操作指令、正確選擇流程控制語句和壓縮代碼密度等優化方法。文獻[7]基于ARM嵌入式系統充分利用軟硬件資源,提出了循環展開、避免使用除法、利用條件執行等C程序優化方法。文獻[8]使用128位訪存指令、循環展開等方法,結合龍芯3A處理器將BLAS庫性能提高了6倍。文獻[9]對Bionic庫中的熱點函數進行了匯編優化,使得Android系統整體性能得到了提升。

基于以上研究,本文在對Bionic庫中字符串和內存處理函數進行分析的同時,結合多核ARMv8體系結構特征[10],提出不同的優化方案,包括整字處理[11]、循環展開[12]、特殊指令[13]等優化方法,使得Bionic庫中常用基礎函數的性能在ARM Cortex-A72平臺上有不同程度的提升。

1 背景知識

1.1 ARM體系結構

ARM是一類微處理器的統稱[14],基于ARM內核的芯片統稱為ARM芯片。ARM體系結構采用精簡指令集,具有定長指令、大量的寄存器、獨特的裝載/保存(Load/Store)等特點[15]。ARM公司從1991年推出ARM1處理器到現在,其體系結構已經從ARMv1發展到現在的ARMv8,每一個體系架構版本都定義了一套指令集和相應的功能框架,并且每個結構體系向后兼容,圖1為ARMv5至ARMv8的架構比較[16]?;贏RMv8的體系結構產品不僅主導了移動通信領域,而且在無人機控制系統[17]、汽車導航[18]、智能家居[19]等智能硬件控制系統中應用廣泛,本文是基于ARMv8最新架構的研究。

圖1 ARMv5至ARMv8架構比較

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

圖2 ARM Cortex-A72處理器架構

1.2 NEON技術

現代計算機2個大主流體系結構為X86和ARM,為了高效利用硬件資源,均支持單指令多數據流 (Single Instruction Multiple Datastream,SIMD)技術[23]。NEON是ARM Cortex-A系列處理器新增的一個運算部件,使得每次運算可達到128位,擴展了SIMD,能更快速地處理多媒體數據,使用戶體驗更流暢[24]。NEON具有128位寬的運算部件,可減少對內存的訪問,從而提高數據處理速度。

NEON指令可批處理SIMD;通過對齊和非對齊數據訪問,寄存器被視為同一數據類型的元素的矢量;數據類型可為8 位、16 位、32 位、64位有/無符號整型、32位單精度和64位雙精度浮點型;指令在所有通道中執行同一操作。如圖3所示,顯示了UADD16 Q0,Q1,Q2指令操作,實現了對寄存器Q1和Q2中8路16 bit的并行相加,并將最后結果保存到R0中。

圖3 8路16 bit整數加法運算

1.3 Bionic

Bionic是Google公司專為Android系統開發的基礎函數庫,提供C/C++標準庫功能。GNU/Linux以及其他類Unix系統的基礎函數庫最常用的就是Glibc。與Glibc相比,Bionic是輕量級C庫,大小僅為200 KB,是Glibc體積的一半,這意味著Bionic占用低內存[25]。

Bionic庫中包含字符串與內存處理函數、數學計算函數、排序與查找、字符串加密等基礎工具型函數。本文通過大量實驗,著重優化Bionic 庫中的memset、strcmp、strncmp、strcpy、strncpy、memcpy、memmove、strlen、strcat、strdup等函數。

2 函數優化

針對多核ARMv8體系結構,考慮使用整字處理(合并字節)、特殊指令、循環展開、指令調度等方法進行優化。本節將探討如何使用這些優化技術,來實現Bionic庫中熱點函數的優化。

2.1 函數介紹

在Bionic庫函數中,字符串是通過一段連續的內存來表示,所以字符串的操作與內存操作基本一致。兩者的區別在于字符串是用空字符’

主站蜘蛛池模板: 亚洲欧美日本国产综合在线| 国产成人久视频免费| 国产成人一区| 久草视频中文| 日韩123欧美字幕| 国产精品九九视频| 国产网站免费看| 91色在线观看| 国产精品人人做人人爽人人添| 久久综合色视频| 99在线观看视频免费| 青草视频免费在线观看| 欧美日本激情| 欧美亚洲香蕉| 中文字幕人妻av一区二区| 91午夜福利在线观看精品| 国产精品自拍露脸视频| 99精品国产电影| 亚洲综合狠狠| 久久婷婷五月综合97色| 色综合a怡红院怡红院首页| 久久精品国产在热久久2019 | 久久精品一品道久久精品| 中文字幕在线播放不卡| 午夜激情福利视频| 26uuu国产精品视频| 中文字幕 欧美日韩| 免费又黄又爽又猛大片午夜| 欧美日韩国产系列在线观看| 她的性爱视频| 99er精品视频| 精品国产香蕉伊思人在线| 在线免费看黄的网站| 中文字幕无码av专区久久| 91在线一9|永久视频在线| 国产91小视频在线观看| 精品色综合| 日本欧美成人免费| 色综合久久88| 国产成人一区| 亚洲欧美日韩动漫| 国产免费a级片| 国产精品yjizz视频网一二区| 久久久久九九精品影院| 无码在线激情片| 在线观看国产小视频| 免费一级毛片在线观看| 久热中文字幕在线| 91精品啪在线观看国产91九色| 久久午夜夜伦鲁鲁片无码免费| 精品国产自在现线看久久| 国产色婷婷视频在线观看| 91精品国产一区| 久久黄色一级片| 免费av一区二区三区在线| 99热这里只有免费国产精品| 成人国产免费| 久久精品嫩草研究院| 國產尤物AV尤物在線觀看| 欧美不卡视频在线| 亚洲综合二区| аⅴ资源中文在线天堂| 国产产在线精品亚洲aavv| 色天堂无毒不卡| 久操线在视频在线观看| 亚洲精品成人片在线观看| 国内精品久久久久鸭| 久久久国产精品免费视频| 国产在线日本| 婷婷午夜影院| 中文字幕在线观| 亚洲第七页| 欧美中文字幕在线视频| 亚洲天堂区| 国产手机在线观看| 欧美成人h精品网站| 国产伦片中文免费观看| 亚洲男人的天堂久久香蕉| 国产欧美视频综合二区| 国产精品香蕉| 91高清在线视频| AV无码无在线观看免费|