• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      葉丹敏

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

      ?

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

      葉丹敏

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

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

      H.264;USWC;硬解碼;DXVA

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

      1 DXVA硬解碼的基本流程

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

      圖1 H.264解碼原理框圖

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

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

      微軟的DXVA[5]接口提供了4個(gè)等級(jí)的硬解碼加速能力,從高到低分別為: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加速等級(jí)最高,所以其包含IDCT、MoCoopm和PostProc;IDCT加速次之,包含MoCoopm和PostProc;最后MoComp加速僅包含PostProc。程序會(huì)根據(jù)當(dāng)前顯卡的能力,選出一個(gè)得分最高的設(shè)置進(jìn)行硬解碼,并可將超過(guò)80%的運(yùn)算交由顯卡執(zhí)行。

      2 拷貝解碼后的視頻幀

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

      圖2 CPU占用率

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

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

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

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

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

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

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

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

      __asm movdqa[edi + 112],xmm7

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

      表2 不同匯編指令對(duì)USWC的拷貝速度

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

      在VisualStudio2010上用C++進(jìn)行開(kāi)發(fā),選用微軟提供的DXVA硬解碼輸出接口,在DXVAAPI的基礎(chǔ)上做了進(jìn)一步封裝,針對(duì)該硬解碼接口結(jié)合SSE4.1多媒體指令實(shí)現(xiàn)了數(shù)據(jù)拷貝的優(yōu)化。計(jì)算機(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)所示,開(kāi)啟CPU加速,CPU占用率高達(dá)50%;如圖4(b)所示,開(kāi)啟GPU加速,CPU占用率只有15%;針對(duì)采用硬解碼方式后進(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ù)拷貝測(cè)試

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

      4 結(jié)束語(yǔ)

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

      [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ì)算機(jī)工程與設(shè)計(jì),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ì)算機(jī)工程與設(shè)計(jì),2006, 27(19):3706-3708.

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

      [9]范亞瓊.基于SSE4指令集的H.264編碼標(biāo)準(zhǔn)的運(yùn)動(dòng)估計(jì)優(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

      猜你喜歡
      指令集占用率拷貝
      3DNow指令集被Linux淘汰
      降低CE設(shè)備子接口占用率的研究與應(yīng)用
      中國(guó)生殖健康(2018年1期)2018-11-06 07:14:38
      實(shí)時(shí)微測(cè)量系統(tǒng)指令集及解析算法
      基于排隊(duì)論的區(qū)域路內(nèi)停車最優(yōu)泊位占用率研究
      什么是AMD64
      基于覆蓋率驅(qū)動(dòng)的高性能DSP指令集驗(yàn)證方法
      阿朗CDMA尋呼信道瘦身增效優(yōu)化
      小而強(qiáng)大的音樂(lè)播放器.AirPlay
      文件拷貝誰(shuí)最“給力”
      赣榆县| 兰西县| 湟中县| 虎林市| 桂平市| 邛崃市| 金川县| 正宁县| 昌图县| 苏尼特右旗| 白朗县| 朝阳市| 滦南县| 盘锦市| 永吉县| 黑山县| 通辽市| 抚顺市| 乌拉特中旗| 漳平市| 厦门市| 海门市| 阳曲县| 镇宁| 舟曲县| 白玉县| 缙云县| 视频| 紫金县| 海宁市| 清河县| 丁青县| 五莲县| 陵川县| 康乐县| 行唐县| 东源县| 藁城市| 都江堰市| 鸡东县| 绩溪县|