亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

H.264整數變換加速的裝置的制作方法

文檔序號:6543888閱讀:196來源:國知局
專利名稱:H.264整數變換加速的裝置的制作方法
技術領域
本發(fā)明涉及一種H.264整數變換加速的裝置。
背景技術
以前的視頻編解碼標準,如MPEG2,MPEG4等一般采用8×8點離散余弦變換(DCT)進行變換編碼。最新的視頻編解碼標準H.264采用4×4點整數變換,包括整數余弦變換、整數反余弦變換和整數哈德曼變換。盡管,從單個塊的計算復雜度看,H.264的4×4點整數變換與8×8點離散余弦變換(DCT)相比,運算量減少了很多,但是在H.264標準中,參與整數變換的塊的個數非常多,所以在同樣的幀大小的視頻圖像下,累計的整數變換運算量卻遠遠高于8×8點離散余弦變換(DCT)的運算量。所以,要實現視頻編解碼標準H.264的實時編解碼,必需加速H.264整數變換。
采用通用處理器進行H.264整數變換,雖然可以共享硬件,但是變換速度慢,水平變換和垂直變換都需要64個時鐘周期。采用專用集成電路的方法可以很好的加速H.264整數變換,但其電路結構一般專用,設備昂貴,不具備可編程性和硬件可擴展性,只能適用于一種編碼標準。而單指令多數據(SIMD)處理器,可以利用矢量操作在一定的程度上加速H.264整數變換,雖然加速速度比專用集成電路的方法慢,但是硬件可以共享,不需要投入昂貴的設備成本,通過軟件編程,整數變換速度上大大優(yōu)于采用通用處理器的方法。
一般的單指令多數據(SIMD)處理器在水平變換或垂直變換時,要對輸入矩陣進行行列轉換,加速效果不是很理想,本發(fā)明提出了一個在單指令多數據(SIMD)體系上,擴展增強的方法,采用高效的專用指令來加速H.264整數變換,可以共享硬件,軟件上也十分靈活。

發(fā)明內容為了克服已有技術中H.264整數變換裝置不能同時具備硬件的可擴展性和變換的快速性的不足,本發(fā)明提供一種硬件上可以與其他軟件共享、整數變換快速的H.264整數變換加速的裝置。
本發(fā)明的技術方案是一種H.264整數變換加速的裝置,包括與數據總線連接的數據存儲器,還包括矢量運算工作寄存器組,用于接收數據存儲器的原始數據,該原始數據為矢量數據4×4輸入矩陣;以及累加寄存器組的中間數據;每個矢量運算工作寄存器Ri由4個標量運算工作寄存器Ri0、Ri1、Ri2、Ri3組成,矢量運算工作寄存器Ri用于存儲4×4矩陣的第i行數據或累加寄存器組輸出的第i行新數據。
8路矢量數據通路,用于根據操作數執(zhí)行4×4矩陣行數據的運算操作;所述的8路矢量數據通路流程包括六級運算第一級為8個二選一的選擇器,用于選擇從累加寄存器組還是從矢量運算工作寄存器組進行輸入,同時執(zhí)行4×4矩陣的2行數據的8個變量;第二級為8個八選一的選擇器,用于選擇執(zhí)行2個變量之間的操作;在水平變換模式下,根據操作數選擇執(zhí)行4×4矩陣第i行數據之間的標量運算,同時執(zhí)行4×4矩陣的2行數據的運算;在垂直變換模式下,根據操作數選擇執(zhí)行4×4矩陣行數據之間的矢量運算;第三級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以2;第四級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以1/2;第五級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否取反;第六級為8個加法器,用于執(zhí)行加法操作,計算結果輸出到累加寄存器組。
累加寄存器組,包括ACC
-ACC[7]一共8個累加寄存器,用于存儲Ri變換加速的中間數據;其中四個累加寄存器組成矢量寄存器VACC
,另外四個累加寄存器組成矢量寄存器VACC[1]。
控制器,用于對8路矢量數據通路進行操作數賦值,指定8路矢量數據通路的選擇信號;以及控制數據存儲器的讀寫操作;
在水平變換模式下,控制器產生操作數信息,并控制數據存儲器的讀操作,執(zhí)行4×4矩陣中每行的兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,將計算結果暫存于矢量寄存器;控制器再次產生操作數信息,執(zhí)行矢量寄存器VACC
和VACC[1]中的四個累加寄存器中兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,并將結果保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作。
在垂直變換模式下,控制器產生操作數信息,執(zhí)行4×4矩陣2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC
,執(zhí)行4×4矩陣另2行數據之間的矢量運算,計算結果暫存于矢量寄存器VACC[1];控制器再次產生操作數信息,執(zhí)行VACC
與VACC[1]之間的矢量運算,并將結果從累加寄存器組保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作。
H.264變換加速優(yōu)選如下方案,采用整數余弦變換加速所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=2ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=-2ACC[6]n+ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中。
控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)分別在兩個時鐘周期中計算VACC
n=R1+R4VACC[1]n=R2+R3(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]N+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R7中;對另兩行數據操作(4)分別在兩個時鐘周期中計算VACC
n=R1-R4VACC[1]n=R2-R3(5)在一個時鐘周期中計算VACC
n+1=2VACC
n+VACC[1]nVACC[1]n+1=-2VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R8中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
H.264變換加速優(yōu)選如下方案,采用整數反余弦變換加速
所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri2ACC[2]n=12Ri1-Ri3ACC[4]n=-Ri2+Ri0ACC[6]n=12Ri3+Ri1]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[6]nACC[2]n+1=2ACC[2]n+ACC[4]nACC[4]n+1=ACC[4]n-ACC[2]nACC[6]n+1=-ACC[6]n+ACC
n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行的運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中。
控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)在兩個時鐘周期中計算
VACC
n=R1+R3VACC[1]n=R2+12R4]]>(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)分別在兩個時鐘周期中計算VACC
=R1-R3VACC[1]=12R2-R4]]>(5)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
H.264變換加速優(yōu)選如下方案,采用整數哈德曼變換加速所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算
ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=2ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=ACC[6]n-ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中。
控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)在兩個時鐘周期中計算VACC
n=R1+R3VACC[1]n=R2+R4(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)在兩個時鐘周期中計算VACC
n=R1-R3VACC[1]n=R2-R4(5)在一個時鐘周期中計算
VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
本發(fā)明工作原理在水平變換模式下,控制器產生操作數信息,對8路矢量數據通路進行操作數賦值,指定8路矢量數據通路的選擇信號,并控制數據存儲器的讀操作,將待加速的4×4矩陣數據存儲到矢量運算工作寄存器組,8路矢量數據通路的其中4路根據操作數執(zhí)行4×4矩陣中一行的兩個數據的兩次標量運算,同時,一行的另兩個數據進行兩次標量運算,另4路同時執(zhí)行4×4矩陣的另一行計算,將計算結果暫存于矢量寄存器;控制器再次產生操作數信息,8路矢量數據通路根據操作數執(zhí)行矢量寄存器VACC
和VACC[1]中的四個累加寄存器中兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,并將結果保存到矢量運算工作寄存器組,完成4×4矩陣中的兩行水平變換;對4×4矩陣數據再進行一次操作,完成4×4矩陣的水平變換。
在垂直變換模式下,控制器產生操作數信息,對8路矢量數據通路進行操作數賦值,指定8路矢量數據通路的選擇信號,8路矢量數據通路執(zhí)行4×4矩陣2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC
,8路矢量數據通路執(zhí)行4×4矩陣另2行數據之間的矢量運算,計算結果暫存于矢量寄存器VACC[1];控制器再次產生操作數信息,,8路矢量數據通路根據操作數執(zhí)行VACC
與VACC[1]之間的矢量運算,并將結果從累加寄存器組保存到矢量運算工作寄存器組,完成4×4矩陣中的兩行垂直變換;對4×4矩陣數據再進行一次操作,完成4×4矩陣的垂直變換。
本發(fā)明的有益效果主要表現在在單指令多數據體系上擴展增強,采用高效指令加快整數變換速度。


圖1是闡述本發(fā)明H.264整數變換加速裝置的總體方框圖;圖2是闡述H.264整數變換加速裝置的具體方框圖;(五)
具體實施例方式
下面結合附圖對本發(fā)明作進一步描述。
實施例一參見附圖一種H.264整數變換加速的裝置,包括與數據總線連接的數據存儲器,還包括矢量運算工作寄存器組,用于接收數據存儲器的原始數據,該原始數據為矢量數據4×4輸入矩陣;以及累加寄存器組的中間數據;每個矢量運算工作寄存器Ri由4個標量運算工作寄存器Ri0、Ri1、Ri2、Ri3組成,矢量運算工作寄存器Ri用于存儲4×4矩陣的第i行數據或累加寄存器組輸出的第i行新數據。
8路矢量數據通路,用于根據操作數執(zhí)行4×4矩陣行數據的運算操作;所述的8路矢量數據通路流程包括六級運算第一級為8個二選一的選擇器,用于選擇從累加寄存器組還是從矢量運算工作寄存器組進行輸入,同時執(zhí)行4×4矩陣的2行數據的8個變量;第二級為8個八選一的選擇器,用于選擇執(zhí)行2個變量之間的操作;在水平變換模式下,根據操作數選擇執(zhí)行4×4矩陣第i行數據之間的標量運算,同時執(zhí)行4×4矩陣的2行數據的運算;在垂直變換模式下,根據操作數選擇執(zhí)行4×4矩陣行數據之間的矢量運算;第三級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以2;第四級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以1/2;第五級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否取反;第六級為8個加法器,用于執(zhí)行加法操作,計算結果輸出到累加寄存器組。
累加寄存器組,包括ACC
-ACC[7]一共8個累加寄存器,用于存儲Ri變換加速的中間數據;其中四個累加寄存器組成矢量寄存器VACC
,另外四個累加寄存器組成矢量寄存器VACC[1]。
控制器,用于對8路矢量數據通路進行操作數賦值,指定8路矢量數據通路的選擇信號;以及控制數據存儲器的讀寫操作;在水平變換模式下,控制器產生操作數信息,并控制數據存儲器的讀操作,執(zhí)行4×4矩陣中每行的兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,將計算結果暫存于矢量寄存器;控制器再次產生操作數信息,執(zhí)行矢量寄存器VACC
和VACC[1]中的四個累加寄存器中兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,并將結果保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作。
在垂直變換模式下,控制器產生操作數信息,執(zhí)行4×4矩陣2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC
,執(zhí)行4×4矩陣另2行數據之間的矢量運算,計算結果暫存于矢量寄存器VACC[1];控制器再次產生操作數信息,執(zhí)行VACC
與VACC[1]之間的矢量運算,并將結果從累加寄存器組保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作。
圖1是闡述本發(fā)明H.264整數變換加速裝置的總體方框圖。其中,矢量運算工作寄存器組1、數據存儲器4、累加寄存器組3通過總線相連進行數據的傳輸。而每一個矢量運算工作寄存器又可以看作是由4個并行的標量運算工作寄存器組成。8路矢量數據通路2和矢量運算工作寄存器組1通過兩倍總線寬度的通道相連,從而可以一次性存取兩個矢量運算工作寄存器中的數據內容。8路矢量數據通路的數據通路選擇受到控制器6的控制,控制器6從程序存儲器5中讀取指令,轉化為控制信號輸出到8路矢量數據通路。
圖2是闡述H.264整數變換加速裝置的具體方框圖。整個數據通路流程可以分為六級運算第一級,這一級的任務是進行輸入變量的選擇,選擇究竟是從累加寄存器組還是從矢量運算工作寄存器組進行輸入,同時執(zhí)行4×4矩陣的2行數據的8個變量。這一級有8個二選一的選擇器,在圖2中自左至右共需要8個控制位,這里用A0~A7表示,下同。
第二級,這一級的任務選擇執(zhí)行2個變量之間的操作。這一級有8個八選一的選擇器,在圖2中自左至右共需要3×8=24個控制位,這里用B0~B23表示,下同。
第三級,這一級的任務是對每個加法器的操作數是否進行乘以2的選擇。這一級有16個二選一的選擇器,在圖2中自左至右共需要16個控制位,這里用C0~C15表示,下同。
第四級,這一級的任務是對每個加法器的操作數是否進行乘以1/2的選擇。這一級有16個二選一的選擇器,在圖2中自左至右共需要16個控制位,這里用D0~D15表示,下同。
第五級,這一級的任務是對每個加法器的操作數是否進行取反的選擇。這一級有16個二選一的選擇器,在圖2中自左至右共需要16個控制位,這里用E0~E15表示,下同。
第六級,這一級的任務是執(zhí)行加法操作,并將結果輸出到累加寄存器組中。
實施例二H.264變換加速優(yōu)選如下方案,采用H.264整數余弦變換加速所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)對8路矢量數據通路按照表1進行配置

表1第一級,A0~A7賦值“1”,選擇從矢量運算工作寄存器組進行輸入;第二級,在一個變量確定時,選擇與這個變量進行運算的另一個變量,如B0=6就表示0通路的Ri0變量確定時選擇6通路的Ri3與Ri0進行運算;第三級,用于選擇對每個加法器的操作數是否乘以2,如C0=0,C1=0,就表示對Ri0與Ri3都不乘以2;第四級,用于選擇對每個加法器的操作數是否乘以1/2,如D0=0,D1=0,就表示對Ri0與Ri3都不乘以1/2;第五級,用于選擇對每個加法器的操作數是否取反,如E0=0,E1=0,就表示對Ri0與Ri3都不取反;第六級,用于執(zhí)行加法操作,如ACC
=Ri0+Ri3,并將計算結果輸出到累加寄存器組;根據8路矢量數據通路表1的配置,在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)對8路矢量數據通路按照表2進行配置

表2第一級,A0~A7賦值“0”,選擇從累加寄存器組進行輸入;根據8路矢量數據通路表2的配置,在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=2ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=-2ACC[6]n+ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;
控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)對8路矢量數據通路按照表3進行配置

表3在第一個時鐘周期,從矢量運算工作寄存器組讀入數據,執(zhí)行4×4矩陣2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC
,在第二個時鐘周期,從矢量運算工作寄存器組讀入另兩行數據,執(zhí)行4×4矩陣另2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC[1];根據8路矢量數據通路表3的配置,分別在兩個時鐘周期中計算VACC
n=R1+R4VACC[1]n=R2+R3(2)對8路矢量數據通路按照表4進行配置

表4根據8路矢量數據通路表4的配置,在一個時鐘周期中計算VACC
n+1=V4CC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R7中;對另兩行數據操作(4)對8路矢量數據通路按照表5進行配置

表5根據8路矢量數據通路的配置表5,分別在兩個時鐘周期中計算VACC
n=R1-R4VACC[1]n=R2-R3(5)對8路矢量數據通路按照表6進行配置

表6根據8路矢量數據通路表6的配置,在一個時鐘周期中計算VACC
n+1=2VACC
n+VACC[1]nVACC[1]n+1=-2VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R8中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
本實施例其余結構和實現方式與實施例一相同。
實施例三H.264變換加速優(yōu)選如下方案,采用H.264整數反余弦變換加速所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算
(1)對8路矢量數據通路按照表7進行配置

表7根據8路矢量數據通路表7的配置,在一個時鐘周期中計算ACC
n=Ri0+Ri2ACC[2]n=12Ri1-Ri3ACC[4]n=-Ri2+Ri0ACC[6]n=12Ri3+Ri1]]>其中下標n表示某一個時鐘周期;(2)對8路矢量數據通路按照表8進行配置

表8根據8路矢量數據通路表8的配置,在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[6]nACC[2]n+1=2ACC[2]n+ACC[4]nACC[4]n+1=ACC[4]n-ACC[2]nACC[6]n+1=-ACC[6]n+ACC
n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行的運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)對8路矢量數據通路按照表9進行配置

表9根據8路矢量數據通路表9的配置,在兩個時鐘周期中計算VACC
n=R1+R3VACC[1]n=R2+12R4]]>(2)根據8路矢量數據通路表4的配置,在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)對8路矢量數據通路按照表10進行配置

表10根據8路矢量數據通路表10的配置,分別在兩個時鐘周期中計算VACC
=R1-R3VACC[1]=12R2-R4]]>(5)根據8路矢量數據通路表4的配置,在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
本實施例其余結構和實現方式與實施例一相同。
實施例四H.264變換加速優(yōu)選如下方案,采用H.264整數哈德曼變換加速所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)根據8路矢量數據通路表1的配置,在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)對8路矢量數據通路按照表11進行配置

表11
根據8路矢量數據通路表11的配置,在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=2ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=ACC[6]n-ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)根據8路矢量數據通路表3的配置,在兩個時鐘周期中計算VACC
n=R1+R3VACC[1]n=R2+R4(2)根據8路矢量數據通路表4的配置,在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)根據8路矢量數據通路表5的配置,在兩個時鐘周期中計算VACC
n=R1-R3VACC[1]n=R2-R4
(5)根據8路矢量數據通路表4的配置,在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
本實施例其余結構和實現方式與實施例一相同。
權利要求
1.一種H.264整數變換加速的裝置,包括與數據總線連接的數據存儲器,其特征在于還包括矢量運算工作寄存器組,用于接收數據存儲器的原始數據,該原始數據為矢量數據4×4輸入矩陣;以及累加寄存器組的中間數據;每個矢量運算工作寄存器Ri由4個標量運算工作寄存器Ri0、Ri1、Ri2、Ri3組成,矢量運算工作寄存器Ri用于存儲4×4矩陣的第i行數據或累加寄存器組輸出的第i行新數據;8路矢量數據通路,用于根據操作數執(zhí)行4×4矩陣行數據的運算操作;所述的8路矢量數據通路流程包括六級運算第一級為8個二選一的選擇器,用于選擇從累加寄存器組還是從矢量運算工作寄存器組進行輸入,同時執(zhí)行4×4矩陣的2行數據的8個變量;第二級為8個八選一的選擇器,用于選擇執(zhí)行2個變量之間的操作;在水平變換模式下,根據操作數選擇執(zhí)行4×4矩陣第i行數據之間的標量運算,同時執(zhí)行4×4矩陣的2行數據的運算;在垂直變換模式下,根據操作數選擇執(zhí)行4×4矩陣行數據之間的矢量運算;第三級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以2;第四級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否乘以1/2;第五級為16個二選一的選擇器,用于選擇對每個加法器的操作數是否取反;第六級為8個加法器,用于執(zhí)行加法操作,計算結果輸出到累加寄存器組;累加寄存器組,包括ACC
-ACC[7]一共8個累加寄存器,用于存儲Ri變換加速的中間數據;其中四個累加寄存器組成矢量寄存器VACC
,另外四個累加寄存器組成矢量寄存器VACC[1];控制器,用于對8路矢量數據通路進行操作數賦值,指定8路矢量數據通路的選擇信號;以及控制數據存儲器的讀寫操作;在水平變換模式下,控制器產生操作數信息,并控制數據存儲器的讀操作,執(zhí)行4×4矩陣中每行的兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,將計算結果暫存于矢量寄存器;控制器再次產生操作數信息,執(zhí)行矢量寄存器VACC
和VACC[1]中的四個累加寄存器中兩個數據的兩次標量運算,同時另兩個數據進行兩次標量運算,并將結果保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作;在垂直變換模式下,控制器產生操作數信息,執(zhí)行4×4矩陣2行數據之間的矢量運算,運算結果暫存到矢量寄存器VACC
,執(zhí)行4×4矩陣另2行數據之間的矢量運算,計算結果暫存于矢量寄存器VACC[1];控制器再次產生操作數信息,執(zhí)行VACC
與VACC[1]之間的矢量運算,并將結果從累加寄存器組保存到矢量運算工作寄存器組;對每個4×4矩陣數據進行先后兩次操作。
2.如權利要求1所述的H.264整數變換加速的裝置,其特征在于所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=2ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=-2ACC[6]n+ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)分別在兩個時鐘周期中計算VACC
n=R1+R4VACC[1]n=R2+R3(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R7中;對另兩行數據操作(4)分別在兩個時鐘周期中計算VACC
n=R1-R4VACC[1]n=R2-R3(5)在一個時鐘周期中計算VACC
n+1=2VACC
n+VACC[1]nVACC[1]n+1=-2VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R8中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
3.如權利要求1所述的H.264整數變換加速的裝置,其特征在于所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri2ACC[2]n=12Ri1-Ri3ACC[4]n=-Ri2+Ri0ACC[6]n=12Ri3+Ri1]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[6]nACC[2]n+1=ACC[2]n+ACC[4]nACC[4]n+1=ACC[4]n-ACC[2]nACC[6]n+1=-ACC[6]n+ACC
n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行的運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)在兩個時鐘周期中計算VACC
n=R1+R3VACC[1]n=R2+12R4]]>(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)分別在兩個時鐘周期中計算VACC
=R1-R3VACC[1]=12R2-R4]]>(5)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
4.如權利要求1所述的H.264整數變換加速的裝置,其特征在于所述的控制器在水平變換模式下,數據通路讀取數據存儲器中的4×4矩陣數據,并對i行數據進行如下運算(1)在一個時鐘周期中計算ACC
n=Ri0+Ri3ACC[2]n=Ri1-Ri2ACC[4]n=Ri2+Ri1ACC[6]n=-Ri3+Ri0]]>其中下標n表示某一個時鐘周期;(2)在一個時鐘周期中計算ACC
n+1=ACC
n+ACC[4]nACC[2]n+1=ACC[2]n+ACC[6]nACC[4]n+1=-ACC[4]n+ACC
nACC[6]n+1=ACC[6]n-ACC[2]n]]>其中下標n+1表示在前一步運算所指的時鐘周期的下一個時鐘周期;與(1)、(2)步驟同時鐘周期,ACC[1],ACC[3],ACC[5],ACC[7]執(zhí)行另一行運算;(3)在兩個時鐘周期,分別讀取兩組累加寄存器的輸出結果中的內容,送入矢量寄存器中保存;對另兩行數據進行(1)~(3)操作,在八個時鐘周期后,水平變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R1、R2、R3和R4中;控制器在垂直變換模式下,矢量寄存器VACC
包括ACC
、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],將垂直變換后的四行新數據依次按照行矢量存放在R5、R6、R7和R8中,對水平變換后輸出的數據進行如下運算對兩行數據操作(1)在兩個時鐘周期中計算VACC
n=R1+R3VACC[1]n=R2+R4(2)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(3)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R5、R8中;對另兩行數據操作(4)在兩個時鐘周期中計算VACC
n=R1-R3VACC[1]n=R2-R4(5)在一個時鐘周期中計算VACC
n+1=VACC
n+VACC[1]nVACC[1]n+1=-VACC[1]n+VACC
n(6)在兩個時鐘周期,分別將VACC
、VACC[1]的數據保存到R6、R7中;十個時鐘周期后,垂直變換后的四組行數據依次按行矢量存放在矢量運算工作寄存器R5、R6、R7和R8中。
全文摘要
一種H.264整數變換加速的裝置,包括與數據總線連接的數據存儲器,還包括矢量運算工作寄存器組,用于接收數據存儲器的原始數據,該原始數據為矢量數據4×4輸入矩陣;以及累加寄存器組的中間數據;每個矢量運算工作寄存器R
文檔編號G06F15/76GK1929603SQ20051006170
公開日2007年3月14日 申請日期2005年11月25日 優(yōu)先權日2005年11月25日
發(fā)明者嚴曉浪, 秦興, 劉大可, 葛海通, 羅曉華 申請人:浙江大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1