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

HEVC中運動補償算法的動態可重構實現

2020-04-11 02:56:28謝曉燕周金娜劉新闖
小型微型計算機系統 2020年4期
關鍵詞:指令

謝曉燕,周金娜,朱 筠,劉新闖,雷 祥

1(西安郵電大學 計算機學院,西安 710121)2(西安郵電大學 電子工程學院,西安 710121)

1 引 言

HEVC是在視頻編碼專家組(Video Coding Experts Group,ITU-T VCEG)和運動圖像專家組(Moving Picture Experts Group,ISO/IEC MPEG)的共同協作下開發的最新視頻編碼標準[1].HEVC具有顯著的壓縮效果,在確保與H.264相同視頻質量的同時降低了50%的比特率[2].其預測單元塊(Prediction Unit,PU)的大小從64×64到4×4不等[3].運動補償算法由于不同尺寸的編碼單元和插值操作,采用了8抽頭亮度濾波器和4抽頭色度濾波器.HEVC的內插濾波器分別占編碼器和解碼器執行時間的20%~30%和20%~40%,使得插值濾波器成為HEVC中最耗時的編碼工具之一[4],插值運算的高復雜性增加了對硬件加速的需求.為了提高運動補償算法的計算效率,一些學者提出了多種解決方案.

文獻[5]提出了四行并行2維(2 Dimensional,2D)緩存機制,以減少61.86%的存儲器流量并支持更高的內插器吞吐量,可以更高效地完成數據的更新,但是其硬件設計復雜,靈活性差.文獻[6]根據運動補償算法中8抽頭濾波器的系數設計出了21個加法器完成濾波操作,將A、B型濾波器合并為一個可重構濾波器架構.雖然這種方法與H.264相比效率提高了0.043%,但是所需濾波器和寄存器的數量較多,占用硬件資源較大.文獻[7]設計了一種可重構數據通路的亮度插值濾波器,擁有較高的設計效率,但是需要額外的存儲器和控制邏輯.文獻[8]提出了一種新的靈活的硬件結構,用于插值濾波器中使用的半像素和四分之一像素.該架構可以在30個時鐘周期內處理4×4 PU的整個分數位置,但是卻僅能計算4×4塊.文獻[9]使用64個可重構的濾波器來滿足不同的濾波器類型,該架構雖然能夠實現高吞吐量,但是設計復雜性較高,僅能計算8×8塊.文獻[10]提出了并行化和流水線結構的分像素插值方案,采用高并行度的8輸入雙通道插值器,實現了視頻的實時傳輸,但所占資源較多.

綜上所述,動態可重構的并行化運動補償算法已成為視頻高計算性能有效的解決方案[11].本文采用動態可編程可重構的陣列處理器來實現運動補償算法的并行化實現,基于該結構即高效又靈活的特點,又采用數據復用和并行操作的思想,動態實現運動補償算法的可變塊模式切換.提高插值過程的計算效率,縮短了編碼時間,提高算法的靈活性.

2 運動補償算法

運動補償算法采用8抽頭濾波器替換H.264中的6抽頭濾波器,新的8抽頭濾波器中使用了三種不同的插值系數,使得分數精度的樣本預測更加精確,插值系數如表1所示.

表1 分數精度樣本位置對應插值系數
Table 1 Fractional accuracy sample position corresponding
to interpolation coefficient

分數精度樣本位置插值系數 a、d、e、f、g{-1,4,-10,58,17,-5,1}/64 b、h、i、j、k{-1,4,-11,40,40,-11,4,-1}/64 c、n、p、q、r{1,-5,17,58,-10,4,-1}/64

圖1所示為亮度插值分數精度樣本位置示意圖.整數樣本所在位置用大寫字母表示,分數樣本所在位置用小寫字母表示.當運動矢量(Motion Vector,MV)指向整數樣本所在位置時,不進行插值運算,直接以此整數樣本值作為最后的預測結果輸出.當運動矢量指向分數位置時,即1/2像素精度或1/4像素精度位置時,運動補償插值模塊將利用插值濾波器進行非整數樣本預測.

圖1 亮度插值分數精度樣本位置Fig.1 Luma interpolation score accuracy sample position

運動補償算法的數據相關性大部分來源于參考像素的讀取,插值操作需要用周圍的像素點作為參考.例如一個8×8編碼塊,最多需要15×15參考塊,而對于下一個編碼塊,也需要15×15參考塊.其中當前參考塊的數據和下一參考塊的數據存在數據重疊現象,如果對參考數據分開做處理,則需要復雜的控制邏輯來完成.而針對更大的編碼塊,需要的參考塊數據更多,可以根據數據復用思想來更新下一參考塊數據.并且PU塊越大,需要計算的插值像素點越多,需要處理的分像素位置情況也更復雜.如果每次只處理一個像素點,只針對一種分像素位置進行處理,耗時較長,算法的計算效率低下.運動補償算法在同一時間內可以進行相同的插值計算操作,比如執行8×8像素塊,每個像素點的插值計算和其余63個像素點的插值計算并無數據相關性,所以插值計算過程可以采用并行的思想,在同一時刻處理多個像素.讀取參考塊數據和插值計算數據存在相關性,所以參考塊讀取與插值計算這兩個過程為串行執行.

依照前面分析,本文提出一種基于動態可重構陣列處理器的運動補償并行插值計算方法,該結構兼顧專用硬件的高效性和通用處理器的靈活性,充分滿足了運動補償算法插值計算的需求[12].同時采用數據復用的思想進行參考塊數據的動態選取,進行陣列和指令的可配置來實現可變塊模式的動態選擇.

3 參考塊數據更新

采用數據復用的思想進行參考塊數據的動態選取,參考塊更新以8×8的編碼塊為例進行說明.當前一編碼塊處理完之后,就緊接著處理下一編碼塊,這涉及到了參考塊數據的更新,如圖2所示.當前參考塊和下一個參考塊數據重合的區域大小為7×15,則下一個參考塊可以通過當前參考塊更新120個數據即可得到下一個參考塊.該過程分為兩個步驟,執行流程圖如圖2所示.

圖2 更新參考塊數據Fig.2 Update reference block data

第一步:按列處理參考塊像素:首先將處理元中15×15參考塊的前8列像素值刪除.并把第9列像素作為重構15×15參考塊的第1列像素;然后把第10列像素作為重構15×15的參考塊的第2列像素;把第11列像素作為重構15×15的參考塊的第3列像素;把第12列像素作為重構15×15的參考塊的第4列像素;把第13列像素作為重構15×15的參考塊的第5列像素;把第14列像素作為重構15×15的參考塊的第6列像素;最后把第15列像素作為重構15×15的參考塊的第7列像素,即處理完成下一參考塊的前7列數據.

第二步:將剩余參考塊數據從外存中按行加載,處理后8列像素:先將第一行8個像素從外存中加載進來,放在重構15×15參考塊的第1行像素位置;再將下一行8個像素從外存中加載進來,放在重構15×15參考塊的第2行像素位置;并將第3行8個像素從外存中加載進來,放在重構15×15參考塊的第3行像素位置;以此類推,最后將第15行8個像素從外存中加載進來,放在重構15×15的參考塊第15行像素的位置.

4 運動補償算法的動態可重構實現

4.1 動態可重構結構

本文所采用的可重構視頻陣列結構由1024個同構且規則的輕核處理元以鄰接互連的方式構成,簇內通過鄰接互連和共享存儲通信,簇間通過路由器和適配器進行通信.可重構陣列處理器由全局指令存儲器、輸入存儲器、輸出存儲器、陣列處理器和全局控制器五部分組成.全局指令存儲器用于存儲陣列處理器工作的操作指令和調用指令;輸入存儲器負責從外存中加載相應的視頻序列;陣列處理器為核心計算部分由8×8個簇(Processing Element Group,PEG)組成.全局控制器為可重構機制的核心部分,全局控制器用于實現對陣列計算資源的控制與管理,包括操作指令的廣播、調用指令的分發、計算資源信息的收集等.其上層為主機接口,下層為32×32個處理元(Processing Element,PE)組成的陣列處理器.主要功能是在主機接口和陣列處理器之間形成一個層次化編程網絡,利用層次化編程網絡來實現對陣列計算資源的控制與管理.為取址簡單,尋址過程中的位寬可以逐級遞減以確保每一條指令都同時到達PE,層次化編程網絡設計通過H型網絡進行指令加載.主處理器只需要向全局控制器發送任務指令和必要的數據或數據存儲地址,全局控制器便會控制指令傳輸網絡分配指令給不同PE執行相應的操作,如圖3所示.

圖3 動態可重構陣列處理器Fig.3 Dynamic reconfigurable array processor

4.2 運動補償算法的并行化實現

在運動補償算法中,處理的編碼塊越大,需要計算的插值像素點也就越多,待處理的分像素位置情況越復雜.如果每次只處理一個像素點,只針對一種分像素位置進行處理,則耗時太長,算法計算效率低下.所以本文采用數據并行的思想,在同一時間處理多個像素點,縮短數據讀取和計算時間從而提高算法的計算效率.以8×8塊大小為例,算法的映射圖如圖4所示,具體操作步驟如下:

Step 1.原始數據和參考數據加載.當前幀的數據存儲在DIM中,參考幀的數據存儲在到DOM中的.PE00訪問DIM,讀取原始像素值,并發送到PE03.同時PE01訪問DOM,讀取相應的參考像素值.并下發到PE00,PE11,PE02,PE03.其中PE00將數據下發給PE10,PE20,PE30;PE11將數據下發給PE21,PE31;PE02將數據下發給PE12,PE22,PE32;PE03將數據下發給PE13,PE23,PE33.為了提高數據傳輸效率,不需要等待PE00下發完后其他PE才下發,只要某個PE接收到下發數據命令就立刻將數據下發給相對應的PE.

Step 2.插值計算.各個PE接收到數據之后,開始進行1/2或者1/4插值計算.由于運動補償算法在同一時間內有大量相同的插值計算,每個像素點的插值計算和其他像素點的插值計算并無數據相關性,所以插值計算可以在16個PE中同時進行.插值計算完成后再將預測值通過共享存儲傳輸到PE03中.

Step 3.將PE03中的預測值和當前像素值進行殘差計算,計算完后將殘差值傳輸到PE30中與預測值完成圖像重建.

圖4 運動補償算法的映射圖Fig.4 Map of motion compensation algorithm

4.3 運動補償算法的可重構實現

運動補償算法支持所有可能的PU尺寸,其范圍從4×4像素塊到64×64像素塊,這對內存訪問,控制和處理的并行性要求是一個重大挑戰.為了應對這一挑戰,本文提出了一種運動補償算法的動態可重構實現方案,基于上下文切換的重構機制,實現對可變塊算法的動態映射.動態重構機制主要核心分為指令重構和規模重構.主要用到指令下發網絡的指令廣播操作和指令下發操作.指令重構是將不同塊的代碼下發到相應簇中,實現PE功能單元的重構.規模重構是基于上下文切換的方式將指令預先存放在陣列結構中每個PE自帶的指令存儲器中,然后通過廣播操作同時開啟所需PE.規模重構有256個PE(16個PEG),64個PE(4個PEG)和16個PE(1個PEG),當執行4×4至64×64塊大小時,PEG00-PEG33的本地同時存儲指令,其規模重構如圖5所示.若做64×64的塊大小,則通過指令廣播操作指令讓所有的簇(PEG00-PEG33)工作;若做32×32塊大小,則通過指令廣播操作指令讓所有的簇(PEG00-PEG11)工作;若做16×16塊大小,則通過指令廣播操作指令讓簇(PEG00-PEG01)工作;若做8×8塊大小,則通過指令廣播操作指令讓簇(PEG00)工作;若做4×4塊大小,則通過指令廣播操作指令讓簇(PEG01)工作.

圖5 4×4-64×64運動補償算法可重構功能圖Fig.5 4×4-64×64 motion compensation algorithmreconfigurable function diagram

下面以4×4塊大小切換8×8塊大小為例具體說明.在加載之前應針對不同分辨率的測試序列進行編碼塊首地址存放.首先將YUV測試序列通過Matlab軟件轉換成陣列結構能識別的二進制數值.并將該數據以陣列的格式分布在文檔中,存放到DIM中.當執行4×4塊大小,通過廣播操作指令讓PEG00工作,當執行完4×4塊大小之后,通過CALL調用指令切換到8×8塊大小,此時PEG01工作,其中簇內具體映射方案如上圖4所示.4×4塊的映射方案和8×8映射方案相同,4×4塊大小每個PE計算一個像素,8×8塊大小每個PE計算4個像素.

5 實驗結果與分析

為了驗證運動補償算法可重構實現的可行性,本文基于動態可重構陣列結構進行驗證.方法如下:通過修改測試模型HM10.0的配置文件,獲取測試數據和塊劃分信息,存入片外存儲,然后通過QuestaSim將可重構方案映射到動態可重構陣列結構上進行仿真驗證.圖6為不同陣列規模下處理不同塊大小所需的時間,其中串行處理時間為單PE處理結果,相比于串行執行,并行處理縮短了約93%處理時間.在不同的陣列規模下,當執行4×4切換到8×8塊大小時,執行4個4×4既可切換到8×8;當執行8×8切換到16×16塊大小時,執行4個8×8塊大小即可切換到16×16塊;當執行16×16切換到32×32塊大小時,執行4個16×16塊大小即可切換到32×32塊;同理,執行32×32塊切換到64×64塊大小時,執行4個32×32塊大小即可切換到64×64.

圖6 不同塊大小運動補償算法計算時間統計Fig.6 Calculation of time statistics for different block sizemotion compensation algorithms

采用CMOS90nm工藝對可重構視頻陣列處理器進行綜合,再通過BEE4平臺上的FPGA LX6V550T對設計進行綜合,如表2所示為8×8編碼塊綜合結果,從頻率、資源占用率以及并行度分別進行比較.根據能同時處理像素的多少,可以得出16個PE規模的陣列結構并行度為16.文獻[6]設計了可重構的濾波器,其頻率遠遠低于本文,而且設計的像素處理并行度也是其2倍.文獻[10]僅用于處理8×8編碼塊,雖然資源占用比本文低,但是工作頻率遠遠低于本文,并行度也僅為本文的一半.文獻[13]提出的高度并行的流水線設計,可同時處理32個像素,頻率雖然略高,但是資源占用卻是本文的2倍之多.文獻[14]在頻率和本文相當的情況下,硬件資源是本文設計的4倍還要多.文獻[15]在頻率上略高于本文,但是其硬件資源卻差不多是本文設計的4倍.

表2 運算性能比較
Table 2 Comparison of computing performance

本文文獻[6]文獻[10]文獻[13]文獻[14]文獻[15]FPGAZynq 7045///65nmFPGAZynq 7045ASIC90nm90nm65nm40nm//工作頻率ISE綜合156MHz///150MHz180MHzDC綜合300MHz171 MHz34.2MHz342 MHz//LUT38.345k///126k74200ALM?+341DSP+113KGate137.425k32.49K64.8K297.3K//并行度168832//

6 結束語

本文基于可重構視頻陣列處理器結構,針對可變塊的運動補償算法,提出了一種新的高并行度的可重構方案.該方案能夠通過動態調整視頻陣列處理器規模,來實現不同塊大小的運動補償算法.該設計能夠靈活的切換塊大小并且最大限度地利用可重構陣列處理器.實驗結果表明:所提出的可重構實現方式相比于串行單PE處理時間節省了約93%,該結構在具有較高的執行效率的同時也具有較好的靈活性.

猜你喜歡
指令
聽我指令:大催眠術
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成人人电影软件 | 国产欧美在线观看一区| 国产精品一老牛影视频| 成年人福利视频| 少妇精品在线| 亚欧美国产综合| 欧美国产综合视频| 天天色天天综合网| 欧美午夜理伦三级在线观看| 亚洲国产av无码综合原创国产| 国产真实乱人视频| 欧美va亚洲va香蕉在线| 久久semm亚洲国产| 一区二区三区在线不卡免费| 欧美激情视频二区三区| 日本道中文字幕久久一区| vvvv98国产成人综合青青| 91美女视频在线| 国产精品综合久久久| 激情视频综合网| 98精品全国免费观看视频| 999福利激情视频| 国产偷倩视频| 中日韩一区二区三区中文免费视频 | 天天综合网在线| 无码'专区第一页| 国产激情第一页| 午夜激情婷婷| 亚洲综合第一页| 国产一二三区视频| 欧美A级V片在线观看| 国产手机在线观看| 亚洲侵犯无码网址在线观看| 色综合手机在线| 久久精品中文字幕少妇| 亚洲欧美综合另类图片小说区| 亚洲国产看片基地久久1024 | 国产jizz| 亚洲三级视频在线观看| 99热精品久久| 色悠久久综合| 永久在线播放| 她的性爱视频| 亚洲国产av无码综合原创国产| 一级毛片在线播放免费| 日韩午夜片| 欧亚日韩Av| 性欧美精品xxxx| 国产精品亚洲综合久久小说| 国产玖玖视频| 大学生久久香蕉国产线观看 | 中文精品久久久久国产网址| 欧美成人一区午夜福利在线| 久久女人网| 98精品全国免费观看视频| www.99在线观看| 青青青视频蜜桃一区二区| 免费在线视频a| a级毛片免费网站| 在线a视频免费观看| 成人免费黄色小视频| 亚洲熟妇AV日韩熟妇在线| 91小视频在线播放| 青青草欧美| 久久毛片网| 欧美人人干| 国产精品丝袜视频| h网站在线播放| 91国语视频| 国产情精品嫩草影院88av| 2020国产免费久久精品99| 国产午夜人做人免费视频中文 | 国产亚洲男人的天堂在线观看| 国产视频 第一页| 久久大香伊蕉在人线观看热2| 欧美日韩免费观看| 国产成人亚洲无吗淙合青草| 国产精品亚洲片在线va| 国产女人在线| 最新加勒比隔壁人妻| 国产日韩精品欧美一区灰|