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

        ?

        GPU解碼數(shù)據(jù)快速拷貝的應(yīng)用研究

        2016-10-17 05:40:13葉丹敏
        電子科技 2016年9期
        關(guān)鍵詞:指令

        葉丹敏

        (杭州電子科技大學(xué) 圖形圖像研究所,浙江 杭州 310018)

        ?

        GPU解碼數(shù)據(jù)快速拷貝的應(yīng)用研究

        葉丹敏

        (杭州電子科技大學(xué) 圖形圖像研究所,浙江 杭州 310018)

        針對高清視頻在客戶端解碼播放過程中存在的CPU占用率高、圖像數(shù)據(jù)拷貝速度低等問題,提出了一種基于GPU解碼數(shù)據(jù)快速拷貝方法。研究了DXVA硬解碼方法在視頻解碼運(yùn)算過程中的應(yīng)用,為了消除解碼數(shù)據(jù)在顯存拷貝時產(chǎn)生的CPU占用率高現(xiàn)象,利用顯存特點(diǎn)和SSE4.1多媒體指令新特性,設(shè)計并實(shí)現(xiàn)了視頻幀數(shù)據(jù)快速拷貝方案。實(shí)驗(yàn)結(jié)果表明,該方法能在滿足高清視頻實(shí)時播放的同時有效降低CPU占用率,且該方法具有一定的實(shí)用性。

        H.264;USWC;硬解碼;DXVA

        隨著網(wǎng)絡(luò)帶寬的提升和存儲設(shè)備的降價,超高清時代(2k甚至4k分辨率)也開始進(jìn)入人們的生活。然而高分辨率視頻在帶來高質(zhì)量感官體驗(yàn)的同時,顯然也會產(chǎn)生數(shù)倍高于之前的數(shù)據(jù)量(如1 080P的屏幕像素約有200萬個,是傳統(tǒng)720P屏幕90萬像素點(diǎn)的2倍;4k的屏幕像素高達(dá)800萬個,是1 080P屏幕的4倍)??梢?,高清會對播放器產(chǎn)生兩方面的壓力:一方面是解碼運(yùn)算對CPU產(chǎn)生較高的占用率;另一方面是高分辨率圖像拷貝所產(chǎn)生的延遲。對于前者,已有多種成熟解決方案,即利用顯卡中大量的流處理器輔助CPU完成解碼運(yùn)算,如NVIDIA的PureVideo、AMD的通用視訊解碼器(UnifiedVideoDecoder,UVD)和微軟的視頻硬件加速(DirectXVideo,Acceleration,DXVA)等[1-2]。對于后者,自1996年Intel推出多媒體擴(kuò)展指令集(MultimediaExtension,MMX)技術(shù)以來,已有人利用MMX技術(shù)優(yōu)化了數(shù)據(jù)處理的過程[3],但由于MMX寄存器的限制,進(jìn)行大量數(shù)據(jù)拷貝時效率較低。后來Intel發(fā)布的單指令多數(shù)據(jù)流(SingleInstructionMultipleData,SIMD)擴(kuò)展流(StreamingSIMDExtension,SSE)技術(shù)恰好能彌補(bǔ)這一點(diǎn),但需要應(yīng)用程序根據(jù)其具體的硬解碼接口進(jìn)行優(yōu)化,目前該方面的研究工作較少。本文針對微軟DXVA硬解碼輸出接口,利用SSE4.1多媒體指令,實(shí)現(xiàn)了從顯存快速拷貝大塊視頻幀技術(shù),從而將CPU從高清解碼中真正解放出來。

        1 DXVA硬解碼的基本流程

        H.264視頻解碼流程如圖1所示。由于采用了混合編碼方案,所以解碼時輸入碼流經(jīng)過熵解碼后,需要分別將逆離散余弦變換得到的殘差幀和運(yùn)動補(bǔ)償或幀內(nèi)預(yù)測獲得的預(yù)測幀組合后再進(jìn)行去碼濾波,得到的幀作為重建圖像輸出,同時也作為之后的參考幀被保存到幀緩存內(nèi)。

        圖1 H.264解碼原理框圖

        H.264解碼[4]的幾個重要步驟及其CPU占用率,如表1所示??梢奦LD、IDCT、MoComp、PostProc這4個步驟占了視頻解碼80%以上的運(yùn)算量。

        表1 H.264各個解碼步驟的CPU占用率

        微軟的DXVA[5]接口提供了4個等級的硬解碼加速能力,從高到低分別為:DXVA2_ModeVC1_D(DXVA2_ModeVC1_VLD);DXVA2_ModeVC1_C(DXVA2_ModeVC1_IDCT);DXVA2_ModeVC1_B(DXVA2_ModeVC1_MoComp);DXVA2_ModeVC1_A(DXVA2_ModeVC1_PostProc)。

        VLD加速等級最高,所以其包含IDCT、MoCoopm和PostProc;IDCT加速次之,包含MoCoopm和PostProc;最后MoComp加速僅包含PostProc。程序會根據(jù)當(dāng)前顯卡的能力,選出一個得分最高的設(shè)置進(jìn)行硬解碼,并可將超過80%的運(yùn)算交由顯卡執(zhí)行。

        2 拷貝解碼后的視頻幀

        GPU完成解碼后,原本數(shù)據(jù)量較小的視頻幀被還原成一幅完整的圖片存儲于GPU的顯存中,為確保在倒幀回放時視頻依舊能正常播放必須將圖片立即復(fù)制出來,以常見的25幀/s1 080P視頻為例,拷貝速度起碼達(dá)到200MB·s-1(25×1 920×1 080×4Byte≈ 200MB)。要在短時間內(nèi)完成如此大量的數(shù)據(jù)拷貝對于CPU的壓力較大,若只進(jìn)行解碼操作,開啟GPU加速后,CPU占用率只有6%,如圖2(a)所示;若采用常見的Memcpy方式[6],將發(fā)現(xiàn)即使GPU承擔(dān)了解碼的運(yùn)算量,在播放視頻畫面時,CPU占用率仍會高達(dá)27%,如圖2(b)所示??梢娨霃氐捉夥臗PU,必須對其中涉及的數(shù)據(jù)拷貝做進(jìn)一步優(yōu)化。

        圖2 CPU占用率

        2.1顯存與內(nèi)存的異同

        從硬件上來說,顯存并不是內(nèi)存的一部分,但操作系統(tǒng)通過Memory-mappedI/O的方式將顯存映射到常規(guī)內(nèi)存地址空間,從而使得應(yīng)用程序可像訪問常規(guī)內(nèi)存一樣訪問顯存。這種由顯存映射而來的內(nèi)存被稱為USWCMemory,即無緩沖隨機(jī)聯(lián)合寫操作內(nèi)存(UncacheableSpeculativeWriteCombiningMemory)?!奥?lián)合寫操作”就是將一系列的存取操作合并后一次性執(zhí)行,這使得USWCMemory適合大塊數(shù)據(jù)的連續(xù)讀寫操作。

        2.2從顯存快速拷貝數(shù)據(jù)

        若使用普通多媒體指令從USWCMemory拷貝數(shù)據(jù),Intel公司早期推出的MMX指令集[7-8],如圖3(a)所示,由于128位XMM寄存器的限制,4個FBS時鐘周期只能拷貝16Byte,效率低下。后來Intel公司又推出了SSE指令集,在兼容MMX指令的同時也可通過SIMD和單時鐘周期下并行處理多個浮點(diǎn)數(shù)據(jù),從而有效地提高了浮點(diǎn)運(yùn)算速度。其中對多媒體指令集架構(gòu)作出重大改進(jìn)的SSE4指令集更是大幅度地提升了讀取數(shù)據(jù)的頻寬[9]。為實(shí)現(xiàn)USWCMemory的快速加載,SSE4.1指令集中引入了StreamLoad操作,如圖3(b)所示,在拷貝這16Byte的同時將64Byte的數(shù)據(jù)存入WriteCombiningBuffers,后續(xù)的讀取不再消耗FSB時鐘,大幅提升了讀取效率。

        圖3 采用SSE4.1拷貝USWC內(nèi)存

        從USWC中拷貝內(nèi)存有兩種方式:

        (1)大段讀取操作。將USWC中的數(shù)據(jù)加載到某段臨時內(nèi)存的一級緩沖內(nèi)(L1Cache),一級緩沖填滿后一次性加載到目的內(nèi)存。這種方式的優(yōu)勢是可利用微軟封裝的_mm_stream_load_si128和_mm_stream_si128函數(shù),代碼實(shí)現(xiàn)較為簡單,但性能上并非最佳;

        (2)增量讀取操作。利用SSE4.1中新增的Movntdqa指令,一次性讀取USWC內(nèi)的64Byte到臨時緩沖(BufferLine),再將這64Byte拷貝到8個MMX寄存器[10]中(MMX0~MMX7),再用Movdqa指令以“寫穿”的方式越過CPU緩存直接寫入內(nèi)存。此方法的難點(diǎn)是需要自身控制寄存器,速度卻是最快的。由于MMX寄存器多達(dá)8個,執(zhí)行兩次StreamLoad操作才能將其全部填滿,拷貝匯編代碼如下

        __asm movdqa[edi + 112],xmm7

        采用SSE4.1進(jìn)行幀USWC數(shù)據(jù)拷貝,其性能與普通Memcpy、SSE2指令和MMX指令相比,有了大幅度提升。如表2所示,對于長寬為1 920×1 080的視頻幀,若采用SSE4.1進(jìn)行拷貝,其性能是SSE2的7倍。

        表2 不同匯編指令對USWC的拷貝速度

        3 實(shí)驗(yàn)結(jié)果及分析

        在VisualStudio2010上用C++進(jìn)行開發(fā),選用微軟提供的DXVA硬解碼輸出接口,在DXVAAPI的基礎(chǔ)上做了進(jìn)一步封裝,針對該硬解碼接口結(jié)合SSE4.1多媒體指令實(shí)現(xiàn)了數(shù)據(jù)拷貝的優(yōu)化。計算機(jī)硬件采用Intel(R)Core(TM) 2,CPU3.00GHz,內(nèi)存4.00GB,NVIDIAGeForce9800GT顯卡。以30幀/s的1 080P視頻為例,實(shí)驗(yàn)結(jié)果如圖4所示。其中,若只進(jìn)行解碼操作,如圖4(a)所示,開啟CPU加速,CPU占用率高達(dá)50%;如圖4(b)所示,開啟GPU加速,CPU占用率只有15%;針對采用硬解碼方式后進(jìn)行數(shù)據(jù)拷貝、視頻播放操作;如圖4(c)和圖4(e)所示,采用普通的memcpy指令的數(shù)據(jù)拷貝方式,CPU占用率達(dá)約39%;如圖4(d)和圖4(f)所示,采用SSE4.1指令的數(shù)據(jù)拷貝方式,CPU占用率約10%。

        圖4 高清視頻解碼數(shù)據(jù)拷貝測試

        通過實(shí)驗(yàn)可知,利用硬解碼技術(shù)有效地輔助了CPU完成解碼運(yùn)算,降低了解碼運(yùn)算過程中CPU的占有率,同時針對微軟DXVA標(biāo)準(zhǔn)接口,采用SSE4.1多媒體指令實(shí)現(xiàn)數(shù)據(jù)快速拷貝,使得CPU占用率約減少1/2,同時也保證了高清視頻播放的流暢度。因此,本文提出的GPU解碼數(shù)據(jù)快速拷貝方法能有效解決高分辨率視頻帶來的大數(shù)據(jù)量問題。

        4 結(jié)束語

        相較于傳統(tǒng)的視頻幀數(shù)據(jù)解碼拷貝處理技術(shù),本文提出的方法較好地結(jié)合了DXVA硬解碼技術(shù)和最新的SSE4.1指令集技術(shù),具有一定的顯卡兼容性,設(shè)計實(shí)現(xiàn)了從顯存快速拷貝視頻幀數(shù)據(jù)的方法。實(shí)驗(yàn)表明,該方法在實(shí)時播放高清視頻時有效地降低了CPU占用率,達(dá)到了將CPU從視頻解碼中徹底解放的目的。在接下來的工作中,還需研究ARM架構(gòu)下的高清視頻解碼數(shù)據(jù)拷貝技術(shù)方案,優(yōu)化該平臺下客戶端播放時存在的壓力問題。

        [1]NakayamaK.Onepassvideoprocessingandcompositionforhigh-definitionvideo:U.S.Patent8570441[P].2013-10-29.

        [2]LuoHQ,WangXX,WangDG.VideomonitoringsystembasedonDXVA[C].Hangzhou: 2012InternationalConferenceonWaveletActiveMediaTechnologyandInformationProcessing(ICWAMTIP), 2012.

        [3]魏芳,李學(xué)明.基于MMX技術(shù)的H.264解碼器優(yōu)化[J].計算機(jī)工程與設(shè)計,2004, 25(12):2218-2221.

        [4]ChenYK,LiEQ,ZhouX,etal.ImplementationofH.264encoderanddecoderonpersonalcomputers[J].JournalofVisualCommunicationandImageRepresentation,2006,17(2):509-532.

        [5]蘇俊峰,朱秀昌.基于DXVA的多路H.264高清視頻解碼器的實(shí)現(xiàn)[J].電視技術(shù),2011, 35(18):30-33,69.

        [6]YingH,ZhuH,WangD,etal.Anovelschemetogenerateoptimalmemcpyassemblycode[C].Guangzhou:2013InternationalConferenceonInformationScienceandTechnology(ICIST), 2013.

        [7]朱金秀,辛宇,曹寧.基于MMX技術(shù)的H.264編碼器的研究與實(shí)現(xiàn)[J].計算機(jī)工程與設(shè)計,2006, 27(19):3706-3708.

        [8]姚志恒,李博揚(yáng),田棟,等.MMX技術(shù)在視頻編碼中的應(yīng)用[J].計算機(jī)與網(wǎng)絡(luò),2001,27(24):28-31.

        [9]范亞瓊.基于SSE4指令集的H.264編碼標(biāo)準(zhǔn)的運(yùn)動估計優(yōu)化[D].武漢:武漢理工大學(xué),2010.

        [10]JeongH,KimS,LeeW,etal.PerformanceofSSEandAVXinstructionsets[J].EprintArxiv, 2012,20(6):168-175.

        Application of Fast Copying Data Decoded By GPU

        YEDanmin

        (InstituteofGraphicsandImage,HangzhouDianziUniversity,Hangzhou310018,China)

        HDvideodecodingandplayingontheclientplayersuffershighCPUoccupancyandlowimagedatacopyspeed.ThispaperproposesanapproachthatcancopydatarapidlydecodedbyGPU.TheDXVAhardwaredecodingmethodintheapplicationofvideodecodingarithmeticprocessisstudied.InordertoeliminatethehighCPUusageresultfromthememorycopying,GPUmemory’sspecialtyandnewfeaturesofSSE4.1multimediainstructionareusedtodesignandimplementaschemeofvideoframedatacopyquickly.TheexperimentshowsthemethodcaneffectivelyreduceCPUoccupancywhilemeetingtherequirementsofreal-timeHDvideoplaying.

        H.264;USWC;hardwaredecoding;DXVA

        2015- 12- 20

        葉丹敏(1991-),女,碩士研究生。研究方向:圖形圖像。

        10.16180/j.cnki.issn1007-7820.2016.09.036

        TN919.8;TP391.41

        A

        1007-7820(2016)09-132-04

        猜你喜歡
        指令
        聽我指令:大催眠術(shù)
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        殺毒軟件中指令虛擬機(jī)的脆弱性分析
        巧用G10指令實(shí)現(xiàn)橢圓輪廓零件倒圓角
        中斷與跳轉(zhuǎn)操作對指令串的影響
        科技傳播(2015年20期)2015-03-25 08:20:30
        基于匯編指令分布的惡意代碼檢測算法研究
        一種基于滑窗的余度指令判別算法
        歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
        家電科技(2014年5期)2014-04-16 03:11:28
        MAC指令推動制冷劑行業(yè)發(fā)展
        汽車零部件(2014年2期)2014-03-11 17:46:27
        亚洲无人区乱码中文字幕| 亚洲精品久久久久中文字幕| 国产 麻豆 日韩 欧美 久久| 国产高潮刺激叫喊视频| 精品国产三级在线观看| 999国产精品视频| 亚洲成AV人久久| 久久久精品国产三级精品| 超级乱淫片国语对白免费视频| 在线观看免费无码专区| 亚洲一区二区三区成人网站| 亚洲男人的天堂网站| 久久精品熟女亚洲av艳妇| 在线精品国产亚洲av麻豆| 亚洲综合天堂av网站在线观看| 亚洲av无码成人网站在线观看 | 国产在线丝袜精品一区免费| 国产精品久久久久久久专区| 日韩成精品视频在线观看| 91精品国产综合久久精品密臀| 国产精品黄色片在线看| 免费va国产高清大片在线| 狠干狠爱无码区| 成人综合久久精品色婷婷| 亚洲日本高清一区二区| 丰满人妻熟妇乱又仑精品| 乱人伦中文无码视频在线观看| 狠狠丁香激情久久综合| 亚洲女同一区二区三区| 无码熟妇人妻av在线网站| 女人被狂躁高潮啊的视频在线看| 久久综合给日咪咪精品欧一区二区三| 午夜在线观看一区二区三区四区| 久久久精品亚洲一区二区国产av | 四虎影视永久在线观看| 欧美日韩区1区2区3区| 精品人妻日韩中文字幕| 欧美日韩精品一区二区视频| 99久久精品费精品国产一区二区 | 国产精品国产三级国产an不卡| 国产太嫩了在线观看|