CN1929603A - H.264整数变换加速的装置 - Google Patents
H.264整数变换加速的装置 Download PDFInfo
- Publication number
- CN1929603A CN1929603A CN 200510061704 CN200510061704A CN1929603A CN 1929603 A CN1929603 A CN 1929603A CN 200510061704 CN200510061704 CN 200510061704 CN 200510061704 A CN200510061704 A CN 200510061704A CN 1929603 A CN1929603 A CN 1929603A
- Authority
- CN
- China
- Prior art keywords
- acc
- vacc
- data
- clock cycle
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000009466 transformation Effects 0.000 title claims description 42
- 238000006243 chemical reaction Methods 0.000 claims description 52
- 239000011159 matrix material Substances 0.000 claims description 28
- 241001269238 Data Species 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000000034 method Methods 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 7
- 230000008676 import Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
一种H.264整数变换加速的装置,包括与数据总线连接的数据存储器,还包括:矢量运算工作寄存器组,用于接收数据存储器的原始数据,该原始数据为矢量数据:4×4输入矩阵;以及累加寄存器组的中间数据;每个矢量运算工作寄存器Ri由4个标量运算工作寄存器Ri0、Ri1、Ri2、Ri3组成;包括六级运算的8路矢量数据通路,用于根据操作数执行4×4矩阵行数据的运算操作;累加寄存器组,用于存储Ri变换加速的中间数据;控制器,用于对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号;以及控制数据存储器的读写操作。本发明H.264整数变换加速的装置硬件上可以与其他软件共享,在单指令多数据体系上扩展增强,采用高效指令加快整数变换速度。
Description
(一)技术领域
本发明涉及一种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整数变换,虽然加速速度比专用集成电路的方法慢,但是硬件可以共享,不需要投入昂贵的设备成本,通过软件编程,整数变换速度上大大优于采用通用处理器的方法。
一般的单指令多数据(SIMD)处理器在水平变换或垂直变换时,要对输入矩阵进行行列转换,加速效果不是很理想,本发明提出了一个在单指令多数据(SIMD)体系上,扩展增强的方法,采用高效的专用指令来加速H.264整数变换,可以共享硬件,软件上也十分灵活。
(三)发明内容
为了克服已有技术中H.264整数变换装置不能同时具备硬件的可扩展性和变换的快速性的不足,本发明提供一种硬件上可以与其他软件共享、整数变换快速的H.264整数变换加速的装置。
本发明的技术方案是:
一种H.264整数变换加速的装置,包括与数据总线连接的数据存储器,还包括:
矢量运算工作寄存器组,用于接收数据存储器的原始数据,该原始数据为矢量数据:4×4输入矩阵;以及累加寄存器组的中间数据;
每个矢量运算工作寄存器Ri由4个标量运算工作寄存器Ri0、Ri1、Ri2、Ri3组成,矢量运算工作寄存器Ri用于存储4×4矩阵的第i行数据或累加寄存器组输出的第i行新数据。
8路矢量数据通路,用于根据操作数执行4×4矩阵行数据的运算操作;
所述的8路矢量数据通路流程包括六级运算:
第一级为8个二选一的选择器,用于选择从累加寄存器组还是从矢量运算工作寄存器组进行输入,同时执行4×4矩阵的2行数据的8个变量;
第二级为8个八选一的选择器,用于选择执行2个变量之间的操作;
在水平变换模式下,根据操作数选择执行4×4矩阵第i行数据之间的标量运算,同时执行4×4矩阵的2行数据的运算;
在垂直变换模式下,根据操作数选择执行4×4矩阵行数据之间的矢量运算;
第三级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以2;
第四级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以1/2;
第五级为16个二选一的选择器,用于选择对每个加法器的操作数是否取反;
第六级为8个加法器,用于执行加法操作,计算结果输出到累加寄存器组。
累加寄存器组,包括ACC[0]-ACC[7]一共8个累加寄存器,用于存储Ri变换加速的中间数据;其中四个累加寄存器组成矢量寄存器VACC[0],另外四个累加寄存器组成矢量寄存器VACC[1]。
控制器,用于对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号;以及控制数据存储器的读写操作;
在水平变换模式下,控制器产生操作数信息,并控制数据存储器的读操作,执行4×4矩阵中每行的两个数据的两次标量运算,同时另两个数据进行两次标量运算,将计算结果暂存于矢量寄存器;
控制器再次产生操作数信息,执行矢量寄存器VACC[0]和VACC[1]中的四个累加寄存器中两个数据的两次标量运算,同时另两个数据进行两次标量运算,并将结果保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作。
在垂直变换模式下,控制器产生操作数信息,执行4×4矩阵2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[0],执行4×4矩阵另2行数据之间的矢量运算,计算结果暂存于矢量寄存器VACC[1];
控制器再次产生操作数信息,执行VACC[0]与VACC[1]之间的矢量运算,并将结果从累加寄存器组保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作。
H.264变换加速优选如下方案,采用整数余弦变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中。
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)分别在两个时钟周期中计算:
VACC[0]n=R1+R4
VACC[1]n=R2+R3
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]N+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R7中;
对另两行数据操作:
(4)分别在两个时钟周期中计算:
VACC[0]n=R1-R4
VACC[1]n=R2-R3
(5)在一个时钟周期中计算:
VACC[0]n+1=2VACC[0]n+VACC[1]n
VACC[1]n+1=-2VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R8中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
H.264变换加速优选如下方案,采用整数反余弦变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行的运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中。
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)在两个时钟周期中计算:
VACC[0]n=R1+R3
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;
对另两行数据操作:
(4)分别在两个时钟周期中计算:
VACC[0]=R1-R3
(5)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
H.264变换加速优选如下方案,采用整数哈德曼变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中。
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)在两个时钟周期中计算:
VACC[0]n=R1+R3
VACC[1]n=R2+R4
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;
对另两行数据操作:
(4)在两个时钟周期中计算:
VACC[0]n=R1-R3
VACC[1]n=R2-R4
(5)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
本发明工作原理:在水平变换模式下,控制器产生操作数信息,对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号,并控制数据存储器的读操作,将待加速的4×4矩阵数据存储到矢量运算工作寄存器组,8路矢量数据通路的其中4路根据操作数执行4×4矩阵中一行的两个数据的两次标量运算,同时,一行的另两个数据进行两次标量运算,另4路同时执行4×4矩阵的另一行计算,将计算结果暂存于矢量寄存器;
控制器再次产生操作数信息,8路矢量数据通路根据操作数执行矢量寄存器VACC[0]和VACC[1]中的四个累加寄存器中两个数据的两次标量运算,同时另两个数据进行两次标量运算,并将结果保存到矢量运算工作寄存器组,完成4×4矩阵中的两行水平变换;
对4×4矩阵数据再进行一次操作,完成4×4矩阵的水平变换。
在垂直变换模式下,控制器产生操作数信息,对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号,8路矢量数据通路执行4×4矩阵2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[0],8路矢量数据通路执行4×4矩阵另2行数据之间的矢量运算,计算结果暂存于矢量寄存器VACC[1];
控制器再次产生操作数信息,,8路矢量数据通路根据操作数执行VACC[0]与VACC[1]之间的矢量运算,并将结果从累加寄存器组保存到矢量运算工作寄存器组,完成4×4矩阵中的两行垂直变换;
对4×4矩阵数据再进行一次操作,完成4×4矩阵的垂直变换。
本发明的有益效果主要表现在:在单指令多数据体系上扩展增强,采用高效指令加快整数变换速度。
(四)附图说明
图1是阐述本发明H.264整数变换加速装置的总体方框图;
图2是阐述H.264整数变换加速装置的具体方框图;
(五)具体实施方式
下面结合附图对本发明作进一步描述。
实施例一
参见附图:一种H.264整数变换加速的装置,包括与数据总线连接的数据存储器,还包括:
矢量运算工作寄存器组,用于接收数据存储器的原始数据,该原始数据为矢量数据:4×4输入矩阵;以及累加寄存器组的中间数据;
每个矢量运算工作寄存器Ri由4个标量运算工作寄存器Ri0、Ri1、Ri2、Ri3组成,矢量运算工作寄存器Ri用于存储4×4矩阵的第i行数据或累加寄存器组输出的第i行新数据。
8路矢量数据通路,用于根据操作数执行4×4矩阵行数据的运算操作;
所述的8路矢量数据通路流程包括六级运算:
第一级为8个二选一的选择器,用于选择从累加寄存器组还是从矢量运算工作寄存器组进行输入,同时执行4×4矩阵的2行数据的8个变量;
第二级为8个八选一的选择器,用于选择执行2个变量之间的操作;
在水平变换模式下,根据操作数选择执行4×4矩阵第i行数据之间的标量运算,同时执行4×4矩阵的2行数据的运算;
在垂直变换模式下,根据操作数选择执行4×4矩阵行数据之间的矢量运算;
第三级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以2;
第四级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以1/2;
第五级为16个二选一的选择器,用于选择对每个加法器的操作数是否取反;
第六级为8个加法器,用于执行加法操作,计算结果输出到累加寄存器组。
累加寄存器组,包括ACC[0]-ACC[7]一共8个累加寄存器,用于存储Ri变换加速的中间数据;其中四个累加寄存器组成矢量寄存器VACC[0],另外四个累加寄存器组成矢量寄存器VACC[1]。
控制器,用于对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号;以及控制数据存储器的读写操作;
在水平变换模式下,控制器产生操作数信息,并控制数据存储器的读操作,执行4×4矩阵中每行的两个数据的两次标量运算,同时另两个数据进行两次标量运算,将计算结果暂存于矢量寄存器;
控制器再次产生操作数信息,执行矢量寄存器VACC[0]和VACC[1]中的四个累加寄存器中两个数据的两次标量运算,同时另两个数据进行两次标量运算,并将结果保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作。
在垂直变换模式下,控制器产生操作数信息,执行4×4矩阵2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[0],执行4×4矩阵另2行数据之间的矢量运算,计算结果暂存于矢量寄存器VACC[1];
控制器再次产生操作数信息,执行VACC[0]与VACC[1]之间的矢量运算,并将结果从累加寄存器组保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作。
图1是阐述本发明H.264整数变换加速装置的总体方框图。其中,矢量运算工作寄存器组1、数据存储器4、累加寄存器组3通过总线相连进行数据的传输。而每一个矢量运算工作寄存器又可以看作是由4个并行的标量运算工作寄存器组成。8路矢量数据通路2和矢量运算工作寄存器组1通过两倍总线宽度的通道相连,从而可以一次性存取两个矢量运算工作寄存器中的数据内容。8路矢量数据通路的数据通路选择受到控制器6的控制,控制器6从程序存储器5中读取指令,转化为控制信号输出到8路矢量数据通路。
图2是阐述H.264整数变换加速装置的具体方框图。整个数据通路流程可以分为六级运算:
第一级,这一级的任务是进行输入变量的选择,选择究竟是从累加寄存器组还是从矢量运算工作寄存器组进行输入,同时执行4×4矩阵的2行数据的8个变量。这一级有8个二选一的选择器,在图2中自左至右共需要8个控制位,这里用A0~A7表示,下同。
第二级,这一级的任务选择执行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表示,下同。
第六级,这一级的任务是执行加法操作,并将结果输出到累加寄存器组中。
实施例二
H.264变换加速优选如下方案,采用H.264整数余弦变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)对8路矢量数据通路按照表1进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
表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都不取反;
第六级,用于执行加法操作,如ACC[0]=Ri0+Ri3,并将计算结果输出到累加寄存器组;
根据8路矢量数据通路表1的配置,在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)对8路矢量数据通路按照表2进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
B | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ||||||||
C | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
表2
第一级,A0~A7赋值“0”,选择从累加寄存器组进行输入;根据8路矢量数据通路表2的配置,在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)对8路矢量数据通路按照表3进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表3
在第一个时钟周期,从矢量运算工作寄存器组读入数据,执行4×4矩阵2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[0],在第二个时钟周期,从矢量运算工作寄存器组读入另两行数据,执行4×4矩阵另2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[1];
根据8路矢量数据通路表3的配置,分别在两个时钟周期中计算:
VACC[0]n=R1+R4
VACC[1]n=R2+R3
(2)对8路矢量数据通路按照表4进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
表4
根据8路矢量数据通路表4的配置,在一个时钟周期中计算:
VACC[0]n+1=V4CC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R7中;对另两行数据操作:
(4)对8路矢量数据通路按照表5进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
表5
根据8路矢量数据通路的配置表5,分别在两个时钟周期中计算:
VACC[0]n=R1-R4
VACC[1]n=R2-R3
(5)对8路矢量数据通路按照表6进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
表6
根据8路矢量数据通路表6的配置,在一个时钟周期中计算:
VACC[0]n+1=2VACC[0]n+VACC[1]n
VACC[1]n+1=-2VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R8中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
本实施例其余结构和实现方式与实施例一相同。
实施例三
H.264变换加速优选如下方案,采用H.264整数反余弦变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)对8路矢量数据通路按照表7进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
表7
根据8路矢量数据通路表7的配置,在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)对8路矢量数据通路按照表8进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
B | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
表8
根据8路矢量数据通路表8的配置,在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行的运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)对8路矢量数据通路按照表9进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表9
根据8路矢量数据通路表9的配置,在两个时钟周期中计算:
VACC[0]n=R1+R3
(2)根据8路矢量数据通路表4的配置,在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;对另两行数据操作:
(4)对8路矢量数据通路按照表10进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||||||||||
B | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | ||||||||||||||||
E | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
表10
根据8路矢量数据通路表10的配置,分别在两个时钟周期中计算:
VACC[0]=R1-R3
(5)根据8路矢量数据通路表4的配置,在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
本实施例其余结构和实现方式与实施例一相同。
实施例四
H.264变换加速优选如下方案,采用H.264整数哈德曼变换加速:
所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)根据8路矢量数据通路表1的配置,在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)对8路矢量数据通路按照表11进行配置:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||||||||||||||||
A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
B | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ||||||||
C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
表11
根据8路矢量数据通路表11的配置,在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)根据8路矢量数据通路表3的配置,在两个时钟周期中计算:
VACC[0]n=R1+R3
VACC[1]n=R2+R4
(2)根据8路矢量数据通路表4的配置,在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;
对另两行数据操作:
(4)根据8路矢量数据通路表5的配置,在两个时钟周期中计算:
VACC[0]n=R1-R3
VACC[1]n=R2-R4
(5)根据8路矢量数据通路表4的配置,在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
本实施例其余结构和实现方式与实施例一相同。
Claims (4)
1、一种H.264整数变换加速的装置,包括与数据总线连接的数据存储器,其特征在于:还包括:
矢量运算工作寄存器组,用于接收数据存储器的原始数据,该原始数据为矢量数据:4×4输入矩阵;以及累加寄存器组的中间数据;
每个矢量运算工作寄存器Ri由4个标量运算工作寄存器Ri0、Ri1、Ri2、Ri3组成,矢量运算工作寄存器Ri用于存储4×4矩阵的第i行数据或累加寄存器组输出的第i行新数据;
8路矢量数据通路,用于根据操作数执行4×4矩阵行数据的运算操作;
所述的8路矢量数据通路流程包括六级运算:
第一级为8个二选一的选择器,用于选择从累加寄存器组还是从矢量运算工作寄存器组进行输入,同时执行4×4矩阵的2行数据的8个变量;
第二级为8个八选一的选择器,用于选择执行2个变量之间的操作;
在水平变换模式下,根据操作数选择执行4×4矩阵第i行数据之间的标量运算,同时执行4×4矩阵的2行数据的运算;
在垂直变换模式下,根据操作数选择执行4×4矩阵行数据之间的矢量运算;
第三级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以2;
第四级为16个二选一的选择器,用于选择对每个加法器的操作数是否乘以1/2;
第五级为16个二选一的选择器,用于选择对每个加法器的操作数是否取反;
第六级为8个加法器,用于执行加法操作,计算结果输出到累加寄存器组;
累加寄存器组,包括ACC[0]-ACC[7]一共8个累加寄存器,用于存储Ri变换加速的中间数据;其中四个累加寄存器组成矢量寄存器VACC[0],另外四个累加寄存器组成矢量寄存器VACC[1];
控制器,用于对8路矢量数据通路进行操作数赋值,指定8路矢量数据通路的选择信号;以及控制数据存储器的读写操作;
在水平变换模式下,控制器产生操作数信息,并控制数据存储器的读操作,执行4×4矩阵中每行的两个数据的两次标量运算,同时另两个数据进行两次标量运算,将计算结果暂存于矢量寄存器;
控制器再次产生操作数信息,执行矢量寄存器VACC[0]和VACC[1]中的四个累加寄存器中两个数据的两次标量运算,同时另两个数据进行两次标量运算,并将结果保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作;
在垂直变换模式下,控制器产生操作数信息,执行4×4矩阵2行数据之间的矢量运算,运算结果暂存到矢量寄存器VACC[0],执行4×4矩阵另2行数据之间的矢量运算,计算结果暂存于矢量寄存器VACC[1];
控制器再次产生操作数信息,执行VACC[0]与VACC[1]之间的矢量运算,并将结果从累加寄存器组保存到矢量运算工作寄存器组;
对每个4×4矩阵数据进行先后两次操作。
2、如权利要求1所述的H.264整数变换加速的装置,其特征在于:所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)分别在两个时钟周期中计算:
VACC[0]n=R1+R4
VACC[1]n=R2+R3
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R7中;对另两行数据操作:
(4)分别在两个时钟周期中计算:
VACC[0]n=R1-R4
VACC[1]n=R2-R3
(5)在一个时钟周期中计算:
VACC[0]n+1=2VACC[0]n+VACC[1]n
VACC[1]n+1=-2VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R8中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
3、如权利要求1所述的H.264整数变换加速的装置,其特征在于:所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行的运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)在两个时钟周期中计算:
VACC[0]n=R1+R3
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;对另两行数据操作:
(4)分别在两个时钟周期中计算:
VACC[0]=R1-R3
(5)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
4、如权利要求1所述的H.264整数变换加速的装置,其特征在于:所述的控制器在水平变换模式下,数据通路读取数据存储器中的4×4矩阵数据,并对i行数据进行如下运算:
(1)在一个时钟周期中计算:
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
其中下标n+1表示在前一步运算所指的时钟周期的下一个时钟周期;
与(1)、(2)步骤同时钟周期,ACC[1],ACC[3],ACC[5],ACC[7]执行另一行运算;
(3)在两个时钟周期,分别读取两组累加寄存器的输出结果中的内容,送入矢量寄存器中保存;
对另两行数据进行(1)~(3)操作,在八个时钟周期后,水平变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R1、R2、R3和R4中;
控制器在垂直变换模式下,矢量寄存器VACC[0]包括ACC[0]、ACC[2]、ACC[4]、ACC[6],矢量寄存器VACC[1]包括ACC[1]、ACC[3]、ACC[5]、ACC[7],将垂直变换后的四行新数据依次按照行矢量存放在R5、R6、R7和R8中,对水平变换后输出的数据进行如下运算:
对两行数据操作:
(1)在两个时钟周期中计算:
VACC[0]n=R1+R3
VACC[1]n=R2+R4
(2)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(3)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R5、R8中;
对另两行数据操作:
(4)在两个时钟周期中计算:
VACC[0]n=R1-R3
VACC[1]n=R2-R4
(5)在一个时钟周期中计算:
VACC[0]n+1=VACC[0]n+VACC[1]n
VACC[1]n+1=-VACC[1]n+VACC[0]n
(6)在两个时钟周期,分别将VACC[0]、VACC[1]的数据保存到R6、R7中;
十个时钟周期后,垂直变换后的四组行数据依次按行矢量存放在矢量运算工作寄存器R5、R6、R7和R8中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100617040A CN100442847C (zh) | 2005-11-25 | 2005-11-25 | H.264整数变换加速的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100617040A CN100442847C (zh) | 2005-11-25 | 2005-11-25 | H.264整数变换加速的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1929603A true CN1929603A (zh) | 2007-03-14 |
CN100442847C CN100442847C (zh) | 2008-12-10 |
Family
ID=37859354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100617040A Expired - Fee Related CN100442847C (zh) | 2005-11-25 | 2005-11-25 | H.264整数变换加速的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100442847C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748885A (zh) * | 2011-06-18 | 2014-04-23 | 三星电子株式会社 | 用于图像变换的方法和装置及用于图像逆变换的方法和装置 |
CN103914426B (zh) * | 2013-01-06 | 2016-12-28 | 中兴通讯股份有限公司 | 一种多线程处理基带信号的方法及装置 |
CN112383782A (zh) * | 2020-10-10 | 2021-02-19 | 河南工程学院 | 一种位矢量变换累加移位的一维dct/idct变换器 |
US11334358B2 (en) | 2019-12-09 | 2022-05-17 | Amazon Technologies, Inc. | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder |
US11841792B1 (en) * | 2019-12-09 | 2023-12-12 | Amazon Technologies, Inc. | Instructions with multiple memory access modes |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7185037B2 (en) * | 2001-08-23 | 2007-02-27 | Texas Instruments Incorporated | Video block transform |
KR100450939B1 (ko) * | 2001-10-23 | 2004-10-02 | 삼성전자주식회사 | 이미지 축소를 위한 스케일-다운 기능을 가지는 압축비디오 복호화기 및 방법 |
CN1306822C (zh) * | 2004-07-30 | 2007-03-21 | 联合信源数字音视频技术(北京)有限公司 | 一种基于软硬件协同控制的视频解码器 |
-
2005
- 2005-11-25 CN CNB2005100617040A patent/CN100442847C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748885A (zh) * | 2011-06-18 | 2014-04-23 | 三星电子株式会社 | 用于图像变换的方法和装置及用于图像逆变换的方法和装置 |
CN103914426B (zh) * | 2013-01-06 | 2016-12-28 | 中兴通讯股份有限公司 | 一种多线程处理基带信号的方法及装置 |
US11334358B2 (en) | 2019-12-09 | 2022-05-17 | Amazon Technologies, Inc. | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder |
US11841792B1 (en) * | 2019-12-09 | 2023-12-12 | Amazon Technologies, Inc. | Instructions with multiple memory access modes |
CN112383782A (zh) * | 2020-10-10 | 2021-02-19 | 河南工程学院 | 一种位矢量变换累加移位的一维dct/idct变换器 |
CN112383782B (zh) * | 2020-10-10 | 2022-07-26 | 河南工程学院 | 一种位矢量变换累加移位的一维dct/idct变换器 |
Also Published As
Publication number | Publication date |
---|---|
CN100442847C (zh) | 2008-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1138420C (zh) | 图象处理器、图象数据处理器和可变长度代码解码器 | |
CN1253790C (zh) | 指令调度方法和指令调度设备 | |
CN1770864A (zh) | 基于avs的4×4离散余弦变换的快速并行装置及其方法 | |
CN1543223A (zh) | 图像编码装置及图像译码装置 | |
CN1130731C (zh) | 半导体只读存储器 | |
CN1684058A (zh) | 处理器 | |
CN1929603A (zh) | H.264整数变换加速的装置 | |
CN1723453A (zh) | 用于处理声场表现的方法和系统 | |
CN101038672A (zh) | 一种图像跟踪方法及系统 | |
CN1444408A (zh) | 图像处理设备、图像处理程序和图像处理方法 | |
CN1873625A (zh) | 一种基于功能覆盖率的随机激励的自动产生方法 | |
CN1080077A (zh) | 驱动点阵显示板的方法和电路 | |
CN1764928A (zh) | 多等级单色图像显示方法,多等级单色图像显示设备,计算机,单色显示设备,再转换适配器,和视频卡 | |
CN1319275A (zh) | 用于控制电动机的设备 | |
CN1728093A (zh) | 生成比特块传输函数的交叉平台运行时间代码 | |
CN1684022A (zh) | 数据处理系统 | |
CN1445679A (zh) | 多维存储器的数据传送装置、传送程序以及传送方法 | |
CN1925597A (zh) | 图像处理设备、图像处理方法及程序 | |
CN1160947C (zh) | 视频显示器 | |
CN1649274A (zh) | 可变长度解码装置和可变长度解码方法以及再现系统 | |
CN1770130A (zh) | 总线控制器件及方法、仲裁器件及方法和集成电路器件 | |
CN101038674A (zh) | 一种图像跟踪方法及系统 | |
CN1723690A (zh) | 像素插值电路、像素插值方法及图像读取装置 | |
CN1278561C (zh) | 编码设备 | |
CN101048980A (zh) | 信号处理装置、方法、程序及记录媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081210 Termination date: 20101125 |