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

基于龍芯3A的編譯器及操作系統(tǒng)深度優(yōu)化

2017-06-01 08:48:21何信華連彥澤王新
中國高新技術(shù)企業(yè) 2017年9期

何信華 連彥澤 王新

摘要:為了深度發(fā)揮龍芯3A1500的性能,文章提出了一種基于龍芯3A的編譯器及操作系統(tǒng)深度優(yōu)化方法,使用loongson3a指令集(mips64r2是loongson3a指令集的子集)重新編譯了Fedora21(即Loongnix1.0)操作系統(tǒng)。經(jīng)過試驗驗證,優(yōu)化后的操作系統(tǒng)性能大幅度提升,部分函數(shù)性能提升6倍以上。

關(guān)鍵詞:龍芯處理器;編譯器;操作系統(tǒng);深度優(yōu)化;基礎(chǔ)指令集 文獻標識碼:A

中圖分類號:TP302 文章編號:1009-2374(2017)08-0044-02 DOI:10.13535/j.cnki.11-4406/n.2017.08.021

1 概述

重新編譯srpm包共14781個,編譯后生成39369個rpm包,該系統(tǒng)原生支持64位,同時兼容32位應(yīng)用程序,包括O32和N32,集成了office、瀏覽器、編譯工具、調(diào)試工具、QT圖形工具、媒體播放、云計算、數(shù)據(jù)庫等各類應(yīng)用,是迄今為止龍芯處理器上最完整的操作系統(tǒng),提供海量軟件倉庫。

2 編譯器優(yōu)化

GCC編譯器添加了一系列針對龍芯GS464處理器核(簡稱464核)的定制和優(yōu)化,主要工作如下:

2.1 GS464、GS464E處理器核基礎(chǔ)支持

將464核的基礎(chǔ)指令集從mips64升級到mips64r2。升級后,編譯器代碼生成時以mips64r2的標準進行,與mips64相比,指令集中將增加如下指令:(d)ror、(d)seb、(d)seh、(d)ext、(d)mthc1、(d)mfhc1。

根據(jù)464核官方文檔中描述的指令延遲特征,建立了后端流水線描述;添加龍芯三操作數(shù)乘法、除法、取模以及l(fā)oad到0號寄存器的預(yù)取指令模板支持;針對龍芯464處理器核在O32 ABI下(即FR=0),浮點寄存器應(yīng)按照mips3模式使用的特征,對奇數(shù)號浮點寄存器的使用規(guī)則進行了定制;添加-march=loongson3a選項,該選項雖然名字叫做3a,但實際上可以控制3A/3B/2H/2J處理器的優(yōu)化。在GCC代碼中,可以通過TARGET_LOONGSON_3A宏來實現(xiàn)對464核的定制優(yōu)化。

2.2 函數(shù)序跋的128位訪存優(yōu)化

本優(yōu)化在GCC的pro_and_epilogue遍實施,該遍生成函數(shù)的序和跋的RTL指令序列,該遍通過gen_prologue()(由模板define_expand prologue生成)調(diào)用到mips后端的對應(yīng)函數(shù),分別為mips_expand_prologue()和mips_expand_epilogue()。在這兩個函數(shù)中,分別有對應(yīng)于寄存器保存(序)和寄存器恢復(fù)(跋)的代碼生成函數(shù),通過函數(shù)mips_for_each_saved_reg來對每一個需要保存和恢復(fù)的寄存器生成對應(yīng)的store和load的RTL指令。

為了實現(xiàn)該優(yōu)化,為mips_for_each_saved_reg增加一個參數(shù),用于區(qū)分保存/恢復(fù)。當同時滿足條件時,進行特殊的代碼生成過程,否則依然按照原來的方式生成寄存器保存和恢復(fù)序列。

實現(xiàn)該優(yōu)化后,可以提高代碼密度,減小代碼尺寸,并且減少訪存指令數(shù)量,從而減小訪存隊列和訪存部件壓力。但是由于龍芯3A處理器和3B處理器對128位訪存指令的實現(xiàn)細節(jié)不同,對3A處理器而言,128位訪存指令是在浮點訪存功能部件中實現(xiàn)的,使用時需要內(nèi)核將浮點協(xié)處理器置為可用狀態(tài),而內(nèi)核出于效率考慮,一般不使用浮點指令。因此3A處理器不宜在系統(tǒng)態(tài)使用128位訪存,而3B處理器在用戶態(tài)和系統(tǒng)態(tài)下均可使用。該優(yōu)化spec2000平均提升5~6%,有單個測試用例提升10%。

2.3 64位數(shù)組指針乘法優(yōu)化

464核由于不對hi/lo寄存器重命名,因此在執(zhí)行m指令時,后續(xù)指令都要暫停取指重命名以等待其結(jié)果。在gcc的-mips3指令集選項下,乘法指令是雙操作數(shù)的(mult和multu),結(jié)果隱式寫入hi/lo寄存器,當使用-mips64指令集選項后,編譯器能夠產(chǎn)生三操作數(shù)的乘法指令,但僅局限于將兩個源通用寄存器內(nèi)的32位的有符號數(shù)相乘得到一個64位結(jié)果存入目標通用寄存器。

龍芯擴展指令集提供了將兩個64位整數(shù)相乘的低64位結(jié)果存入結(jié)果寄存器的指令gsdmult和gsudmult,且龍芯還具有在執(zhí)行32位定點alu操作和訪存操作時,將通用寄存器的高32位進行隱式的符號擴展的特點。

該優(yōu)化可以在減小代碼密度的同時,提升運算速度,運算速度的提升來自于三個方面:首先,指令變少;其次,會堵流水線的hi/lo移動指令被消除;最后,鏈式alu操作減少,降低了464核上alu到alu的forwarding具有一拍延遲的影響。

該優(yōu)化可以用于所有具有464核處理器的系統(tǒng)態(tài)和用戶態(tài)上,無任何副作用。

2.4 將464核流水線描述實驗性的改為跟5kc一致

在對coremark程序的指令調(diào)度調(diào)優(yōu)中,發(fā)現(xiàn)將流水線描述改成跟5kc一致后,性能有2%~3%提升,但對SPEC2000進行測試,卻發(fā)現(xiàn)26個程序有升有降。

主要修改的是mips.md和loongson.md文件。需要注意的細節(jié)是mips.h文件中的枚舉enum processor_type以及mips.c文件中的static const struct mips_rtx_cost_data mips_rtx_cost_data[PROCESSOR_MAX]數(shù)組,以及mips.md文件中的(define_attr “cpu”…)語句中,關(guān)于不同處理器名稱的出現(xiàn)順序應(yīng)該一致,否則將出現(xiàn)rtx insn的cost和流水線描述不能與實際的-march選項所選擇的處理器相匹配的問題。而mips.c文件中的mips_cpu_info_table卻無需跟另外三者順序完全對應(yīng),該表的查找是采用字符串hash進行的。

優(yōu)化5的兩個patch,除了將在-march=loongson3a選項下的指令調(diào)度全部都變成以5kC的方式進行調(diào)度,并對與464核的指令集有了更多的描述。

2.5 指令實現(xiàn)數(shù)學(xué)庫中round、lround、trunc、cabs、floor和ceil函數(shù)

glibc中的數(shù)學(xué)函數(shù)round、lround、trunc和cabs,這些函數(shù)使用c語言實現(xiàn),通過編譯器生成的二進制目標碼執(zhí)行效率低。由于round、lround、trunc、cabs等指令與glibc中對應(yīng)函數(shù)舍入方式不同,無法直接替換為對應(yīng)指令。通過gcc中的__builtin_round、__builtin_lround、__builtin_trunc等接口,實現(xiàn)glibc中對應(yīng)函數(shù)的功能。性能提升明顯,其中spec2000中189.lucas程序提升20%。

glibc中的數(shù)學(xué)函數(shù)floor和ceil,這些函數(shù)使用c語言實現(xiàn),通過編譯器生成的目標碼執(zhí)行效率低。由于floor、ceil等指令與glibc中對應(yīng)函數(shù)舍入方式不同,無法直接替換為對應(yīng)指令。通過gcc中的__builtin_floor、__builtin_ceil接口,實現(xiàn)glibc中對應(yīng)函數(shù)的功能。性能提升明顯,其中spec2000中177.mesa程序提升15%。

3 數(shù)學(xué)庫優(yōu)化

Fedora21基于GNU的glibc-2.20版本優(yōu)化了數(shù)學(xué)庫及一些string類函數(shù),glibc的數(shù)學(xué)庫計算精度滿足IEEE754標準。操作系統(tǒng)的核心庫glibc(數(shù)學(xué)庫是其核心的一部分)使用上述優(yōu)化的GCC版本編譯,充分發(fā)揮loongson3a指令集優(yōu)勢,流式DMA運算特性支持,能夠數(shù)倍甚至數(shù)量級倍提升三角函數(shù)、矩陣運算、FFT等的性能表現(xiàn)。

龍芯處理器提供了abs、sqrt等專用指令,編譯器不會直接生成這些指令,從而采用效率很低的C代碼,通過手寫匯編指令的方法直接使用這些專用指令。分別執(zhí)行百萬次abs和sqrt函數(shù),使用abs指令的性能與C函數(shù)相比,性能提高32%,使用sqrt指令的性能與C函數(shù)相比,性能提高6倍。

編譯器提供了大量的編譯選項,不同的編譯選項影響生成的目標代碼質(zhì)量,最終影響程序的運行時間,采用編譯選項搜索優(yōu)化,找到適合龍芯處理器和ZY計算的最優(yōu)編譯選項。例如,統(tǒng)計6種三角函數(shù)的200萬次計算時間,-O3情況下計算時間為12.3秒,-O2情況下計算時間為16.4秒,-O3與-O2相比,計算時間減少了25%。

4 QT優(yōu)化

目前為止已經(jīng)完成了初步優(yōu)化,優(yōu)化的主要工作如下:(1)QT4.7.4和QT4.8.6的向量指令優(yōu)化;(2)QT4.8.6中獨立繪制過程的部分算法級優(yōu)化;(3)QT4.8.6中OPENGL后端繪制過程的橢圓繪制的優(yōu)化;(4)QT4.7.4和QT4.8.6中內(nèi)存填充過程的優(yōu)化等。

5 試驗結(jié)果

multi_calc包括sin、cos、asin、acos等32個函數(shù),是將測試2中的函數(shù)放在一起循環(huán)百萬次計算,也分為dbl-64精度和flt-32精度。可以看出與單個函數(shù)測試均值的能提升基本一致,flt-32精度下fedora21優(yōu)化較fedora13提升較大。

6 結(jié)語

基于龍芯3A對編譯器及操作系統(tǒng)進行了深度優(yōu)化,采用算法和內(nèi)嵌匯編指令的方法優(yōu)化熱點函數(shù),提高操作系統(tǒng)的整體性能。通過內(nèi)嵌匯編指令,一方面可以直接使用龍芯專用指令;另一方面可以減少指令數(shù)量,提高指令的執(zhí)行效率,從而減少程序的運行時間。通過裁剪保留操作系統(tǒng)最基本的核心功能,從而保證操作系統(tǒng)的最小CPU和內(nèi)存消耗,滿足不同應(yīng)用場景的需要。

參考文獻

[1] 胡奇明.VxWorks操作系統(tǒng)的重新編譯和優(yōu)化研究與

實現(xiàn)[D].國防科學(xué)技術(shù)大學(xué),2008.

(責任編輯:蔣建華)

主站蜘蛛池模板: 亚洲天堂高清| 粉嫩国产白浆在线观看| 久久精品丝袜| 亚洲色图欧美| 她的性爱视频| 99精品视频九九精品| 国产福利在线观看精品| 真人高潮娇喘嗯啊在线观看| 伊人久综合| 幺女国产一级毛片| 片在线无码观看| 在线观看欧美国产| 成年av福利永久免费观看| 国产精品毛片一区视频播| 亚洲精品成人片在线观看 | 亚洲黄色视频在线观看一区| 毛片免费视频| 久久一级电影| 国产毛片网站| a级毛片免费网站| 伊人国产无码高清视频| 色男人的天堂久久综合| www.91中文字幕| 麻豆精品在线| 免费观看成人久久网免费观看| 999在线免费视频| 毛片大全免费观看| 国产青榴视频| 亚洲一区二区日韩欧美gif| 亚洲福利视频网址| 高清无码手机在线观看| 亚洲一区二区约美女探花| 黄网站欧美内射| 亚洲精品日产精品乱码不卡| 国产一区二区三区在线精品专区| 女人一级毛片| 国产杨幂丝袜av在线播放| 无码AV动漫| 日本久久久久久免费网络| 亚洲精品另类| 亚洲一区二区三区国产精品| 免费无码一区二区| 国产精品亚洲一区二区在线观看| 中文字幕在线日本| a级毛片免费看| 国产美女视频黄a视频全免费网站| 国产毛片不卡| 国产成人精品在线1区| 日本欧美一二三区色视频| 亚洲精品午夜天堂网页| 日韩毛片在线播放| 亚洲天堂在线视频| 亚洲午夜天堂| h视频在线播放| 综合人妻久久一区二区精品 | 成人精品免费视频| 强乱中文字幕在线播放不卡| 永久免费av网站可以直接看的 | 美女被操91视频| 中文字幕精品一区二区三区视频| 国产在线精品网址你懂的| 99久久国产综合精品2020| 中文字幕免费在线视频| 亚洲国产中文综合专区在| 免费一级毛片不卡在线播放| 免费无码AV片在线观看中文| 色丁丁毛片在线观看| 日韩一区精品视频一区二区| 国内精品小视频福利网址| 亚洲成av人无码综合在线观看| 欧洲亚洲一区| 夜夜高潮夜夜爽国产伦精品| 国产成人综合网| AV无码无在线观看免费| 国产日韩精品欧美一区灰| 亚洲国产中文在线二区三区免| 日本免费新一区视频| 国产原创演绎剧情有字幕的| 99精品国产自在现线观看| 国产精品任我爽爆在线播放6080 | 人妻免费无码不卡视频| 国产91特黄特色A级毛片|