亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于多核ARM體系結(jié)構(gòu)的基礎函數(shù)優(yōu)化方法

        2018-05-30 01:26:13賀愛香顧乃杰蘇俊杰
        計算機工程 2018年5期
        關(guān)鍵詞:字符串體系結(jié)構(gòu)寄存器

        賀愛香,顧乃杰,蘇俊杰

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

        0 概述

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

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

        1 背景知識

        1.1 ARM體系結(jié)構(gòu)

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

        圖1 ARMv5至ARMv8架構(gòu)比較

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

        圖2 ARM Cortex-A72處理器架構(gòu)

        1.2 NEON技術(shù)

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

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

        圖3 8路16 bit整數(shù)加法運算

        1.3 Bionic

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

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

        2 函數(shù)優(yōu)化

        針對多核ARMv8體系結(jié)構(gòu),考慮使用整字處理(合并字節(jié))、特殊指令、循環(huán)展開、指令調(diào)度等方法進行優(yōu)化。本節(jié)將探討如何使用這些優(yōu)化技術(shù),來實現(xiàn)Bionic庫中熱點函數(shù)的優(yōu)化。

        2.1 函數(shù)介紹

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

        亚洲成在人线av品善网好看 | 久久午夜夜伦鲁鲁片免费无码 | 精品国产一二三产品区别在哪| 一本加勒比hezyo无码人妻| 99精品国产一区二区| 97久久香蕉国产线看观看| 亚洲精品黑牛一区二区三区| 亚洲 欧美 唯美 国产 伦 综合| 国产短视频精品区第一页| 亚洲中文字幕乱码一二三区| 国产91对白在线观看| 久久精品国产成人午夜福利| 国产亚洲精品综合99久久| 国产大屁股白浆一区二区三区| 国产综合开心激情五月| 99国产精品99久久久久久| 女人被男人爽到呻吟的视频| 无码人妻aⅴ一区二区三区| 人妻无码αv中文字幕久久琪琪布| 婷婷综合久久中文字幕蜜桃三电影 | 国产中文字幕乱人伦在线观看| 国产精品毛片一区二区| 天堂sv在线最新版在线| 豆国产95在线 | 亚洲| 亚洲精品成人专区在线观看| 成年男人裸j照无遮挡无码| 色婷婷亚洲一区二区在线| 白白色青青草视频免费观看| 精品人妻夜夜爽一区二区| 天天色天天操天天日天天射| 波多野结衣av一区二区全免费观看| 水蜜桃精品一二三| 亚洲另类自拍丝袜第五页 | 久久久精品视频网站在线观看| 国产美女主播视频一二三区| 在线精品无码字幕无码av| 人妻少妇乱子伦精品无码专区电影| 亲子乱aⅴ一区二区三区下载| 国产精品欧美久久久久老妞 | 亚洲综合伦理| 亚洲天堂av一区二区三区不卡 |