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

國產飛騰1500A處理器的顯存管理優化

2017-06-05 14:15:40孫立明吳慶波
計算機技術與發展 2017年5期
關鍵詞:指令

孫立明,吳慶波

(國防科技大學 計算機學院,湖南 長沙 410073)

國產飛騰1500A處理器的顯存管理優化

孫立明,吳慶波

(國防科技大學 計算機學院,湖南 長沙 410073)

基于飛騰1500A處理器的計算機系統中,現有操作系統圖形子系統主存和顯卡VRAM(顯存)之間拷貝圖形運算數據時會產生段錯誤,導致圖形子系統只能使用主存作為顯存而不能直接使用VRAM。由于顯卡訪問主存比訪問VRAM的速度慢很多,因此在某些場景下限制了顯卡的工作效率,從而限制了圖形子系統的性能。為此,提出了一種基于飛騰1500A處理器的圖形系統顯存管理的優化方法,讓圖形子系統能夠訪問顯卡VRAM,以達到提升性能的目的。該方法把圖形子系統劃分為固定組件和流動組件兩類。對于固定組件,采用飛騰1500A訪問I/O設備的指令替換內存拷貝指令,使固定組件能夠直接訪問VRAM,從而將圖形數據拷貝到VRAM中,以提高顯卡工作效率;對于流動組件,則繼續使用主存作為顯存。實驗結果表明,采用該管理方法后,基于飛騰1500A處理器的計算機圖形顯示整體性能在某些顯卡中大幅提升,其中3D顯示性能有數倍的提升,并且不會產生段錯誤;即使對2D圖形大概有10%的性能下降,亦能適于運行大量3D圖形應用的場景。

圖形子系統;顯示優化;顯存;VRAM

0 引 言

國產飛騰1500A處理器是國防科大研制的自主可控國產CPU,采用ARMv8[1]指令集。飛騰1500A處理器有一個獨特的特征,與其他處理器包括同樣采用ARMv8指令集的處理器都不同。飛騰1500A處理器的內存訪問指令分為兩類,一類是普通的ld/st訪存指令,可以訪問所有的CPU地址空間[2];另外一類是ldp/stp指令,只能訪問主存地址范圍,不能訪問外設地址范圍。

ldp/stp指令,在訪問內存時,一條指令可以攜帶兩個64比特數據,從而在一條指令中同時傳輸128比特數據,而普通的ld/st指令,只攜帶一個數據,一條指令最多同時傳輸64比特數據。很顯然,數據拷貝時,使用ldp/stp指令能夠獲得更高的傳輸性能。事實上,基于飛騰1500A處理器的計算機系統中的大量數據拷貝操作(如memcpy函數)基本都是調用ldp/stp指令來進行的。

基于飛騰1500A處理器的計算機系統采用的顯卡是獨立顯卡[3],顯卡上有自帶的顯存,稱為VRAM顯存。顯然顯卡訪問VRAM顯存的地址是處于外設地址范圍的。顯卡也可以使用系統主存作為顯存,這種類型的顯存稱為GTT顯存。顯卡訪問VRAM顯存的速度要比訪問GTT顯存的速度高出很多[4],一般來說,使用VRAM顯存會獲得更高的顯示性能。

現有操作系統中的圖形子系統主要由應用層的Xorg server[5](一種圖形窗口系統服務程序)、Xorg client(圖形窗口系統應用程序,比如gnome桌面等)、DRI[6](3D圖形程序的直接加速渲染框架,為3D[7]應用程序提供OpenGL[8]編程接口)、3D圖形程序以及內核層的DRM[9]驅動組成。其中內核層的DRM為圖形子系統提供顯存管理、模式設置及GPU命令提交[10]等功能。圖形子系統中各組成部分使用的顯存由DRM統一管理,當圖形應用程序或者Xorg server等需要使用顯存時,向DRM申請分配顯存,當顯存不再使用時,也由DRM來釋放。

圖形子系統在工作過程中,會產生大量的從主存拷貝的圖形數據到顯存中的數據拷貝操作,這些數據拷貝操作有些是調用的通用的memcpy函數,有些是圖形應用程序自己實現的拷貝函數。但在基于飛騰1500A處理器的計算機系統上,為了性能考慮,編譯器和操作系統都會把這些拷貝操作翻譯成ldp/stp指令。這時如果使用的是VRAM顯存,在基于飛騰1500A處理器的計算機系統上,則會產生段錯誤(由于ldp/stp指令不能訪問外設地址范圍)。

圖形子系統提供了參數,能夠控制圖形子系統在工作時是使用GTT顯存還是VRAM顯存或者VRAM顯存與GTT顯存同時使用。由于上述原因,圖形子系統在基于飛騰1500A處理器的計算機系統只能使用GTT顯存(否則會產生段錯誤)。由于顯卡訪問GTT顯存速度較慢,從而導致圖形子系統顯示性能較差。

針對上述問題,提出了一種基于飛騰1500A處理器對顯存管理的優化方法,可使圖形子系統利用VRAM顯存,從而提高基于飛騰1500A處理器的計算機系統的圖形顯示性能,且不會產生段錯誤。

1 基于飛騰1500A處理器的顯存管理優化方法

基于飛騰1500A處理器的顯存管理優化方法把圖形子系統劃分為兩類組件:固定組件和流動組件。把圖形子系統中常用的一些比較重要的組件劃分為固定組件,剩余的組件劃分為流動組件。對固定組件,用飛騰1500A能夠訪問I/O設備的指令替換內存拷貝指令,從而使固定組件能夠使用VRAM。對流動組件,則依然使用主存作為顯存。固定組件涵蓋了圖形子系統中的大部分組件,在通常情況下它們的執行時間占有整個圖形子系統執行時間的絕大部分(有時甚至是100%)。因此用飛騰1500A能夠訪問I/O設備的指令替換內存拷貝指令,讓固定組件能夠利用VRAM內存,可以大大提高圖形系統的性能。同時對于沒有用飛騰1500A能夠訪問I/O設備的指令替換內存拷貝指令的流動組件,仍然使用GTT顯存,所以也不會產生段錯誤。

1.1 圖形子系統的分類

為什么要對圖形子系統進行分類處理?要讓基于飛騰1500A處理器的圖形子系統能夠訪問VRAM顯存,把所有的內存拷貝指令都替換成飛騰1500A能夠訪問I/O設備的指令不就行了嗎?事實上這種方法是行不通的。

一個原因是內存拷貝操作在操作系統中是一個很基本的操作,圖形子系統中會使用,拷貝圖形數據時也會使用。除拷貝圖形數據之外,操作系統中還有大量的數據拷貝操作,它們的使用頻率比拷貝圖形數據要高出很多。全部替換的話會大大降低整個系統的性能,得不償失。

那只替換圖形數據拷貝的操作不替換普通數據拷貝的操作是否可行?同樣不行。因為圖形軟件多種多樣,有些軟件比如mesa,Xorg等規模龐大,分析出每個數據拷貝操作進行逐個替換是一個近乎不可能完成的操作。

另一個原因是,有很大一部分的圖形應用程序是第三方軟件,不可能對它們進行修改,而它們可能實現自己的數據拷貝函數,不會調用通用的數據拷貝函數。對這種圖形應用程序,不可能把它們的內存拷貝指令都替換成飛騰1500A能夠訪問I/O設備的指令。

因此,要對圖形子系統進行分類,一類可以對它們進行指令替換操作,能夠使用VRAM顯存,把它們命名為固定組件;另一類依然使用GTT顯存,把它們命名為流動組件。

考慮圖形子系統中應該把哪些組件劃分為固定組件,那么剩下的就歸類為流動組件。從上述可知,被劃分為固定組件的程序應該具備如下幾個特征:

(1)不是第三方軟件,而應該是操作系統的固定組成部分。這樣可以方便獲取源代碼并對其進行修改。這也是把它們命名為固定組件的原因。

(2)擁有大量的圖形數據拷貝操作,同時沒有或有少量的其他數據拷貝工作。

(3)它們應該占據系統中圖形拷貝操作的絕大部分,否則不會產生明顯效果。

經過篩選之后,把DRM、mesa(DRI)、Xorg server以及gnome桌面歸類為固定組件,其他程序歸類為流動組件。

對圖形子系統分好類之后,如何在圖形子系統中實現分類。

圖形子系統的顯存管理都是由DRM進行的。VRAM內存和GTT內存都是由DRM管理的。按使用顯存類型對圖形程序進行分類也是由DRM來實現。

實現方法如下:

DRM自身默認屬于固定組件。

對于位于應用層的其他組件,都是通過ioctl系統調用請求DRM分配顯存的。在DRM的ioctl函數中增加一條ioctl命令-FORCE_VRAM,一旦接收到用戶層傳來的是該命令,則強制性為其分配VRAM顯存。

通過FORCE_VRAM命令,就可以劃分固定組件和流動組件了。應用層程序請求顯存分配時如果傳遞下來的是FORCE_VRAM,則屬于固定組件,分配VRAM顯存;如果傳遞的是原來的命令,則屬于流動組件,分配GTT顯存。

1.2 對分類組件的處理

對分好類的組件進行處理主要是對固定組件進行處理,流動組件無需特別處理。對固定組件的處理分為兩點:

(1)修改向DRM請求顯存分配的方式,使用FORCE_VRAM命令分配VRAM顯存。

(2)用飛騰1500A能夠訪問I/O設備的指令替換內存拷貝指令。

對于第一點,方法如下:

在libdrm中實現一個新的顯存分配函數,該函數調用ioctl系統調用攜帶FORCE_VRAM命令分配VRAM顯存。

修改固定組件的所有顯存分配代碼,調用1中新實現的顯存分配函數。

對于第二點,方法如下:

實現一個新動態連接庫,比如命名為libkymem.so,該連接庫中實現新的內存拷貝相關函數:比如把新的函數命名為kymemcpy,kymemset,kymemmove。

在這些新的函數中用普通的內存訪問指令ld/st(能夠訪問io地址范圍的指令)替換ldp/stp指令,實現內存拷貝操作。

修改固定組件中調用memcpy,memset,memmove等函數的位置,改為調用libkymem.so中的kymemcpy,kymemset,kymemmove函數。

把libkymem.so放入系統中。

進行上述兩點處理后,固定組件在工作時就使用VRAM顯存了,而流動組件還是保持原來的調用方式不變,因此繼續使用GTT內存。固定組件修改了內存拷貝指令,而流動組件使用GTT內存,因此在內存數據拷貝時都不會產生段錯誤。

固定組件使用VRAM內存后,由于顯卡訪問VRAM顯存的效率大大高于訪問主存,因此顯卡的工作效率有極大提升。由于固定組件在系統的工作中占據顯示工作的絕大部分比例,因此基于飛騰1500A處理器的計算機系統的整個顯示性能都會有明顯提升。

2 實驗及結果分析

基于該方法把圖形子系統劃分為兩類組件:固定組件和流動組件。對固定組件,在飛騰1500A的銀河麒麟操作系統上實現了上述方法,并在HD5450,HD7450,HD7750以及R9 270四款顯卡做了對比測試,分別測試了系統的2D圖形顯示性能,3D圖形顯示性能,以及常用的OpenGL圖形編程及Gtk圖形編程的圖形顯示性能。其中,2D圖形測試、3D圖形測試、OpenGL圖形編程、Gtk圖形編程的測試用例分別是X11perf[11]、glxgears[12]、glmark2[13]、Gtkperf。

圖形測試結果如圖1~6所示(X11perf由于測試結果過多,選取了比較有代表性的畫點,畫100像素線段及畫100像素橢圓的測試數據)。

圖1 glxgears的測試結果(單位:FPS)

通過測試結果可以看出,該優化方法并不能全面提高2D和3D的圖形顯示性能,其中2D圖形性能還稍微有些下降,3D圖形性能有明顯提升(大概有幾倍)。在體現圖形系統的綜合性能的Gtkperf測試中,對有些顯卡的圖形性能有明顯提升,而glmark2測試中圖形系統性能則有大幅提升。主要是因為在2D圖形環境下,顯卡的圖形運算壓力并不大,而CPU會有大量的圖形數據處理工作,因此CPU的圖形數據處理速度就成為瓶頸,CPU每次要把數據寫入VRAM相比直接寫入內存會慢很多,因此性能有所損失。而在3D圖形環境下,圖形運算壓力大,而CPU可能經常處于空閑狀態,顯卡經常需要等待數據到來,因此從VRAM取數據可以提升性能。

圖2 glmark2的測試結果

圖3 X11perf畫點的測試結果(單位:個/s)

圖4 X11perf畫100像素線段的測試結果(單位:個/s)

圖5 x11perf畫100像素橢圓的測試結果(單位:個/s)

圖6 Gtkperf的測試結果

綜合來看,該優化方法在某些顯卡下能夠提升圖形子系統的整體性能,對3D圖形的性能有幾倍提升,而在2D圖形環境下的性能損失在10%左右,是可以接受的。因此該方法特別適于運行大量3D圖形應用的場合。

3 結束語

基于飛騰1500A處理器的特征,針對當前采用飛騰1500A處理器的計算機系統圖形子系統不能使用VRAM顯存的問題,提出了一種采用飛騰1500A處理器的計算機系統顯存優化管理方法。該方法將圖形子系統分成固定組件和流動組件兩類,在飛騰1500A處理器中以能訪問IO地址范圍的指令替換內存拷貝指令,使固定組件訪問VRAM顯存,從而實現顯示功能。實驗結果表明,該方法顯著提升了采用飛騰1500A處理器的計算機系統圖形顯示綜合性能,特別是數倍提高了3D顯示性能,尤其適用于運行大量3D圖形應用的場合,且不會產生段錯誤。不足之處在于2D圖形應用的性能會下降10%,但在當前大量3D圖形應用的條件下是可以接受的。

[1] Rusitoru R.ARMv8 micro-architectural design space exploration for high performance computing using fractional factorial[C]//International workshop on performance modeling.[s.l.]:[s.n.],2015.

[2] Jundt A,Cauble-Chantrenne A,Tiwari A,et al.Compute bottlenecks on the new 64-bit ARM[C]//Proceedings of the 3rd international workshop on energy efficient supercomputing.[s.l.]:[s.n.],2015.

[3] 趙 剛.計算機圖形顯示加速及實現技術[M].北京:電子工業出版社,2009.

[4] Carr N A,Hall J D,Hart J C.The ray engine[C]//Proceedings of ACM SIGGRAPH/Eurographics graphics hardware.[s.l.]:[s.n.],2002.

[5] 萬 華.基于X Window圖形分層顯示的實現[J].雷達科學與技術,2000(1):26-29.

[6] Weo M,Neider J,Davis T.OpenGL programming guide[M].CA,USA:Silicon Graphics Inc.,1997.

[7] 吳恩華.圖形處理器用于通用計算的技術、現狀及其挑戰[J].軟件學報,2004,15(10):1493-1504.

[8] McReynolds T,Blythe D.Advanced graphics programming using OpenGL[M].San Francisco,CA,USA:Morgan Kaufmann Publishers Inc.,2005.

[9] Miller K,Przybyla D,Pegah M.Soothing the many-headed beast:improving the rendering process in the world of 3D animation[C]//SIGUCCS'04.[s.l.]:[s.n.],2004.

[10] 孫家廣.計算機圖形學[M].第3版.北京:清華大學出版社,1988.

[11] 賈志剛.精通OpenGL[M].北京:電子工業出版社,1998.

[12] 尚 游.OpenGL高級圖形編程指南[M].哈爾濱:哈爾濱工業大學出版社,1999.

[13] Sugita K.Performance evaluation of programmable graphics hardware for image filtering and stereo matching[C]//Proceedings of the ACM symposium on virtual reality software and technology.[s.l.]:ACM,2003.

Video Memory Management Optimization of Domestic Phytium 1500A Processor

SUN Li-ming,WU Qing-bo

(School of Computer Science,National University of Defense Technology,Changsha 410073,China)

In phytium 1500A processor-based computer system,the existing operating system graphics subsystem could produce segment errors when copying data between main memory and graphics card VRAM (video memory),which causes that the graphics subsystem can only use main memory as video memory and cannot be used VRAM directly.Because main memory access is so slower than accessing VRAM directly by graphics card that the problem in some scenes limits the efficiency of the graphics card,thereby limiting the performance of the graphics subsystem.Therefore,an optimization method of graphics system memory management with the Phytium 1500A processor has been presented,which permits the system equipped with graphics card VRAM,for the purpose of performance promotion.The graphics subsystem is composed of two types of components,fixed and mobile components.In the former of which the instructions of I/O devices can be used to replace memory copy instructions with Phytium 1500A processor by using VRAM which could copy the pattern data to the VRAM for efficiency promotion of the graphics card;in the latter of which the main memory can be used as video memory.Experimental results show that the Phytium 1500A processor-based computer graphics display performance has been significantly improved,wherein the 3D display performance has been promoted several times higher without mistake and that even if there is about 10% performance degradation for 2D graphics,the VRAM is also suitable for a large number of scenes with 3D graphics applications.

graphics subsystem;display optimization;video memory;VRAM

2016-06-17

2016-09-22 網絡出版時間:2017-03-13

國家“863”高技術發展計劃項目(2013AA01A212)

孫立明(1988-),男,碩士,研究方向為操作系統。

http://kns.cnki.net/kcms/detail/61.1450.TP.20170313.1547.096.html

TP39

A

1673-629X(2017)05-0006-04

10.3969/j.issn.1673-629X.2017.05.002

猜你喜歡
指令
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
巧用G10指令實現橢圓輪廓零件倒圓角
時代農機(2015年3期)2015-11-14 01:14:29
中斷與跳轉操作對指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設備等產品安全規定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動制冷劑行業發展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 午夜爽爽视频| 国产成年女人特黄特色大片免费| 国内熟女少妇一线天| 性欧美在线| 亚洲日韩Av中文字幕无码| 男女男免费视频网站国产| 日本高清在线看免费观看| 国模粉嫩小泬视频在线观看| 91九色视频网| 在线一级毛片| 国产免费好大好硬视频| 国产女人在线| 一本大道香蕉久中文在线播放| 国产精欧美一区二区三区| 日韩精品欧美国产在线| 国产福利免费视频| 超清无码熟妇人妻AV在线绿巨人| 国产网站一区二区三区| 国产喷水视频| 日本爱爱精品一区二区| 国产福利一区在线| 午夜精品久久久久久久无码软件 | 99久久亚洲综合精品TS| A级全黄试看30分钟小视频| 亚洲精品高清视频| 呦视频在线一区二区三区| 亚洲av成人无码网站在线观看| 男女精品视频| 国产拍揄自揄精品视频网站| 亚洲天堂久久久| 日本三区视频| 国产精品亚洲精品爽爽| 免费观看男人免费桶女人视频| 国产1区2区在线观看| 在线欧美一区| 一级一级一片免费| 99久久国产综合精品女同| 亚洲成人精品在线| 亚洲va欧美va国产综合下载| 久久精品人人做人人综合试看 | 国产成年无码AⅤ片在线| 色色中文字幕| 亚洲欧洲一区二区三区| 亚洲第一视频免费在线| 亚洲Aⅴ无码专区在线观看q| 亚欧乱色视频网站大全| 亚洲浓毛av| 久久这里只有精品2| 欧洲日本亚洲中文字幕| 欧美69视频在线| 超清无码一区二区三区| 在线观看精品国产入口| 久久国产精品麻豆系列| 日韩国产无码一区| 国产第一色| 久久国产V一级毛多内射| 日韩av无码精品专区| 欧美日韩另类在线| 国产91高跟丝袜| 久久永久精品免费视频| 国产香蕉在线| 亚洲va在线观看| 国产欧美精品一区二区| 精品一区二区无码av| 国产91九色在线播放| 爱色欧美亚洲综合图区| hezyo加勒比一区二区三区| 在线国产欧美| 午夜高清国产拍精品| 伊人色综合久久天天| 呦系列视频一区二区三区| 国产成人成人一区二区| 青青草原偷拍视频| 亚洲中文字幕久久无码精品A| 大陆国产精品视频| 色综合久久88色综合天天提莫 | 色综合成人| a毛片免费在线观看| 无码免费视频| 秋霞国产在线| 亚洲日韩每日更新| 日韩欧美国产另类|