CN1929603A - H.264整数变换加速的装置 - Google Patents

H.264整数变换加速的装置 Download PDF

Info

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
Application number
CN 200510061704
Other languages
English (en)
Other versions
CN100442847C (zh
Inventor
严晓浪
秦兴
刘大可
葛海通
罗晓华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CNB2005100617040A priority Critical patent/CN100442847C/zh
Publication of CN1929603A publication Critical patent/CN1929603A/zh
Application granted granted Critical
Publication of CN100442847C publication Critical patent/CN100442847C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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整数变换加速的装置
(一)技术领域
本发明涉及一种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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = - 2 ACC [ 6 ] n + ACC [ 2 ] n
其中下标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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 2 ACC [ 2 ] n = 1 2 R i 1 - R i 3 ACC [ 4 ] n = - R i 2 + R i 0 ACC [ 6 ] n = 1 2 R i 3 + R i 1
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 6 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 4 ] n ACC [ 4 ] n + 1 = ACC [ 4 ] n - ACC [ 2 ] n ACC [ 6 ] n + 1 = - ACC [ 6 ] n + ACC [ 0 ] n
其中下标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 = R 2 + 1 2 R 4
(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
VACC [ 1 ] = 1 2 R 2 - R 4
(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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = ACC [ 6 ] n - ACC [ 2 ] n
其中下标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的配置,在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标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的配置,在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = - 2 ACC [ 6 ] n + ACC [ 2 ] n
其中下标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的配置,在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 2 ACC [ 2 ] n = 1 2 R i 1 - R i 3 ACC [ 4 ] n = - R i 2 + R i 0 ACC [ 6 ] n = 1 2 R i 3 + R i 1
其中下标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的配置,在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 6 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 4 ] n ACC [ 4 ] n + 1 = ACC [ 4 ] n - ACC [ 2 ] n ACC [ 6 ] n + 1 = - ACC [ 6 ] n + ACC [ 0 ] n
其中下标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
VACC [ 1 ] n = R 2 + 1 2 R 4
(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
VACC [ 1 ] = 1 2 R 2 - R 4
(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的配置,在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标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的配置,在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = ACC [ 6 ] n - ACC [ 2 ] n
其中下标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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = 2 ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = - 2 ACC [ 6 ] n + ACC [ 2 ] n
其中下标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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 2 ACC [ 2 ] n = 1 2 R i 1 - R i 3 ACC [ 4 ] n = - R i 2 + R i 0 ACC [ 6 ] n = 1 2 R i 3 + R i 1
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 6 ] n ACC [ 2 ] n + 1 = ACC [ 2 ] n + ACC [ 4 ] n ACC [ 4 ] n + 1 = ACC [ 4 ] n - ACC [ 2 ] n ACC [ 6 ] n + 1 = - ACC [ 6 ] n + ACC [ 0 ] n
其中下标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 = R 2 + 1 2 R 4
(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
VACC [ 1 ] = 1 2 R 2 - R 4
(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)在一个时钟周期中计算:
ACC [ 0 ] n = R i 0 + R i 3 ACC [ 2 ] n = R i 1 - R i 2 ACC [ 4 ] n = R i 2 + R i 1 ACC [ 6 ] n = - R i 3 + R i 0
其中下标n表示某一个时钟周期;
(2)在一个时钟周期中计算:
ACC [ 0 ] n + 1 = ACC [ 0 ] n + ACC [ 4 ] n ACC [ 2 ] n + 1 = ACC [ 2 ] n + ACC [ 6 ] n ACC [ 4 ] n + 1 = - ACC [ 4 ] n + ACC [ 0 ] n ACC [ 6 ] n + 1 = ACC [ 6 ] n - ACC [ 2 ] n
其中下标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中。
CNB2005100617040A 2005-11-25 2005-11-25 H.264整数变换加速的装置 Expired - Fee Related CN100442847C (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 联合信源数字音视频技术(北京)有限公司 一种基于软硬件协同控制的视频解码器

Cited By (6)

* Cited by examiner, † Cited by third party
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) 半导体只读存储器
CN1929603A (zh) H.264整数变换加速的装置
CN1723453A (zh) 用于处理声场表现的方法和系统
CN101038672A (zh) 一种图像跟踪方法及系统
CN1444408A (zh) 图像处理设备、图像处理程序和图像处理方法
CN1873625A (zh) 一种基于功能覆盖率的随机激励的自动产生方法
CN1750107A (zh) 图像处理及传输设备、显示器、图像处理及传输方法
CN1080077A (zh) 驱动点阵显示板的方法和电路
CN1764928A (zh) 多等级单色图像显示方法,多等级单色图像显示设备,计算机,单色显示设备,再转换适配器,和视频卡
CN1319275A (zh) 用于控制电动机的设备
CN1160947C (zh) 视频显示器
CN1728093A (zh) 生成比特块传输函数的交叉平台运行时间代码
CN1445679A (zh) 多维存储器的数据传送装置、传送程序以及传送方法
CN1684022A (zh) 数据处理系统
CN1624698A (zh) 高阶合成方法和高阶合成装置
CN1649274A (zh) 可变长度解码装置和可变长度解码方法以及再现系统
CN1770130A (zh) 总线控制器件及方法、仲裁器件及方法和集成电路器件
CN101038674A (zh) 一种图像跟踪方法及系统
CN1925597A (zh) 图像处理设备、图像处理方法及程序
CN1723690A (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