CN113596472B - 数据处理方法及装置 - Google Patents

数据处理方法及装置 Download PDF

Info

Publication number
CN113596472B
CN113596472B CN202110849634.4A CN202110849634A CN113596472B CN 113596472 B CN113596472 B CN 113596472B CN 202110849634 A CN202110849634 A CN 202110849634A CN 113596472 B CN113596472 B CN 113596472B
Authority
CN
China
Prior art keywords
data
processing
processing unit
unit
output
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.)
Active
Application number
CN202110849634.4A
Other languages
English (en)
Other versions
CN113596472A (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.)
ARM Technology China Co Ltd
Original Assignee
ARM Technology China Co Ltd
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 ARM Technology China Co Ltd filed Critical ARM Technology China Co Ltd
Priority to CN202110849634.4A priority Critical patent/CN113596472B/zh
Publication of CN113596472A publication Critical patent/CN113596472A/zh
Application granted granted Critical
Publication of CN113596472B publication Critical patent/CN113596472B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及视频编码技术领域,公开了一种数据处理方法及装置,能够均衡IADST的算法性能和硬件面积。该装置用于实现16位的IADST变换,包括第一处理单元、第二处理单元和第三处理单元,并且用于交叉多次使用第一处理单元、第二处理单元和第三处理单元,在设置的多个数据处理周期下对待处理数据执行IADST变换得到对应的结果数据;在第一数据处理周期中第一处理单元的输入数据为待处理数据中的数据或者第二处理单元已经输出的数据,在第二数据处理周期中第二数据处理单元的输入数据为第二处理单元已经输出的数据或者第一处理单元已经输出的数据,在第三数据处理周期中第三处理单元的输入数据为第二处理单元已经输出的数据。

Description

数据处理方法及装置
技术领域
本申请涉及视频编码技术领域,特别涉及一种数据处理方法及装置。
背景技术
编解码算法是视频和图像压缩技术的核心组成部分,例如,不对称离散正弦逆变换(inverse asymmetric discrete sine transform,IADST)算法为一种用于视频解码的解码算法。通常,将IADST算法应用于大小为2的幂的视频块,例如16个像素高×16个像素宽的视频块。此时,这些视频块可以称为“16×16视频块”,IADST算法可以称为16点IADST,或者称为16×16点的IADST。而IADST的硬件设计和实现方式对IADST算法的性能会产生极大的影响,进而对图像和视频的压缩性能产生影响。
发明内容
本申请实施例提供了一种该数据处理方法及装置,能够均衡IADST的算法性能和硬件面积,在较小的硬件面积下实现较高的算法性能。
第一方面,本申请实施例提供了一种数据处理装置,该数据处理装置用于实现16位的不对称离散正弦逆变换IADST变换,数据处理装置包括第一处理单元、第二处理单元和第三处理单元,并且数据处理装置,用于交叉多次使用第一处理单元、第二处理单元和第三处理单元,在设置的多个数据处理周期下对待处理数据执行IADST变换得到对应的结果数据;其中,多个数据处理周期包括第一数据处理周期、第二数据处理周期和第三数据处理周期,并且在第一数据处理周期中第一处理单元的输入数据为待处理数据中的数据或者第二处理单元已经输出的数据,在第二数据处理周期中第二数据处理单元的输入数据为第二处理单元已经输出的数据或者第一处理单元已经输出的数据,在第三数据处理周期中第三处理单元的输入数据为第二处理单元已经输出的数据。下文中将数据处理简称为周期。
可以理解的是,上述第一处理单元、第二处理单元、第三处理单元可以分别为下文中的ROT单元,ADD单元和RX单元,待处理数据为下文中的16×16点原始数据中的一行或一列,如S1[0]-S1[15]。并且,上述第一数据处理周期可以为第1-16周期,第二数据处理周期可以为第5,7,9,11,12,13,14,15,17,18,19,20周期,而第三数据处理周期可以为第18,19,20,21周期。具体地,上述交叉多次使用所述第一单元、所述第二单元和所述第三单元,对所述第一目标数据执行IADST变换得到第一结果数据,可以包括:在第1-16周期中的每个周期分别向所述第一单元输入所述第一目标数据中的两个数据,在第3-18个周期中的每个周期分别从所述第一单元输出对应的两个数据;在第5,7,9,11,12,13,14,15,17,18,19,20周期中的每个周期分别向所述第二单元输入四个数据,并在第5,7,9,11,12,13,14,15,17,18,19,20周期中的每个周期分别从第二单元输出对应的四个数据;在第18,19,20,21周期中的每个周期分别向所述第三单元输入两个数据,并在第19,20,21,22周期中每个周期分别从所述第三单元输出对应的两个数据,以得到对应的结果数据。此时,上述多个数据处理周期可以包括第1-22周期,以及下周中后续的第23-26周期。那么,通过设置的多个数据处理周期可以通过第一处理单元、第二处理单元、第三处理单元实现流水线(如下文中的流水线1和流水线2)中的IADST变换过程,使得IADST变换算法的处理时长较短,有利于提高算法性能。
本申请提供的数据处理方法可以应用于视频压缩、图像压缩等数据编解码的场景中,用于实现非对称离散正弦逆变换(IADST)算法以对视频、图像等数据进行解码,具体用于实现16×16点IADST算法,能够均衡IADST的算法性能和硬件面积(如硅面积),在较小的硬件面积下实现较高的算法性能。具体地,该16×16点IADST算法(也称为IADST 16)可以使用较少的硬件,即使用上述第一处理单元、第二处理单元和第三处理单元,并通过循环调用这些单元执行二维IADST 16的蝶形运算以实现IADST算法。例如,IADST算法的硬件可以使用16nm finfet工艺实现并在800Mhz(兆赫兹)的频率下工作,从而有利于均衡IADST的算法性能和硬件面积。
在上述第一方面的一种可能的实现中,上述待处理数据为待执行IADST变换的16×16矩阵中任意的一行或一列。可以理解的是,16×16矩阵即下文中的16×16点原始数据,此时待处理数据为16点数据,即16位数据。
在上述第一方面的一种可能的实现中,上述第一处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第N个数据处理周期输入第一处理单元的输入数据,处理后得到的输出数据在第N+2个数据处理周期中输出;第二处理单元在各数据处理周期中的输入数据和输出数据的数据量均为4,并且对于第M个数据处理周期输入第二处理单元的输入数据,处理后得到的输出数据在第M个数据处理周期中输出;第三处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第K个数据处理周期输入第三处理单元的输入数据,处理后得到的输出数据在第K+2个数据处理周期中输出,M,N,K均为正整数。即第一处理单元处理数据的延迟为3个周期且吞吐量为2个数据,第二处理单元处理数据的延迟为1个周期且吞吐量为4个数据,第三处理单元处理数据的延迟为2个周期且吞吐量为2个数据。
作为一种示例,在第1-8周期中的每个周期依次向第一处理单元输入待处理数据中的两个数据,并在第3-10周期从第一处理单元输出对应的两个数据;在第5,7,9,11周期中的每个周期依次向第二处理单元输入第一处理单元在第3-10周期中连续两个周期输出的数据,并在第5,7,9,11周期分别从第二处理单元输出对应的四个数据;在第9,10,11,12周期中的每个周期依次向第一处理单元输入第二处理单元在第5,7,9,11周期输出的数据中的第一部分数据,并在第11,12,13,14周期从第一处理单元分别输出两个数据,每组第一部分数据中包括两个数据;在第12,13周期中的每个周期依次向第二处理单元输入第二处理单元在第5,7,9,11周期中相邻两个周期输出的第二部分数据,在第14,15周期中的每个周期向第二处理单元依次输入第一处理单元在11,12,13,14周期中连续两个周期输出的数据,并在12,13,14,15周期从第二处理单元分别输出对应的四个数据,每组第二部分数据为第二处理单元输出的数据中除了对应的第一部分数据之外的两个数据;在13,14,15,16周期中的每个周期依次向第一处理单元输入第二处理单元在第12,13,14,15周期中每个周期输出的数据中的第三部分数据,并在第15,16,17,18周期中的每个周期从第一处理单元输出对应的两个数据,每组第三部分数据包括两个数据;在第17,19周期中的每个周期分别向第二处理单元输入第二处理单元在第12,13,14,15周期中连续两个周期分别输出的第四部分数据,在第18,20周期中的每个周期分别向第二处理单元输入第一处理单元在第15,16,17,18周期中连续两个周期输出的数据,每组第二部分数据为第二处理单元输出的数据中除了对应的第三部分数据之外的两个数据;在第18,19,20,21周期中的每个周期分别向第三单元中输入第二处理单元在第15,16,17,18周期中的每个周期输出的数据中的第五部分数据,并在第19,20,21,22周期分别从第三单元输出对应的两个数据,每组第五部分数据中包括两个数据。
可以理解的是,上述第一处理单元可以为待处理数据的输入端,而第三处理单元可以为与待处理数据对应的IADST变换的结果数据的输出端,而第一处理单元和第三处理单元的吞吐量均为2个数据,此时可以认为处理待处理数据的过程的吞吐量为2个数据。从而,本申请IADST 16的硬件面积较少的情况下,可以使得IADST算法的平均吞吐量为每周期2个点,即实现较高的算法吞吐量,进而均衡了IADST的算法性能和硬件面积。
在上述第一方面的一种可能的实现中,上述数据处理装置中还包括第一寄存器,第二寄存器和存储单元,并且第一寄存器,用于在第P个数据处理周期存入第一处理单元和/或第二处理单元已经输出的数据,并在第P+1个数据处理周期读取数据并输入到第一处理单元或第二处理单元中;第二寄存器,用于在第Q个数据处理周期存入第二处理单元和/或第三处理单元已经输出的数据,并在第Q+1个数据处理周期读取数据并存入存储单元中,P,Q均为正整数;存储单元,用于存储16×16矩阵中各行或各列数据的IADST变换的结果数据。可以理解的是,第一寄存器、第二寄存器可以分别为下文中的寄存器1(regs1)和寄存器2(regs2);存储单元可以为下文中的RAM0或RAM1。作为一种示例,第P个数据处理周期可以为第4-19周期中的任意周期,而第Q个数据处理周期可以为第18-23周期中的任意周期。如此,第一寄存器和第二寄存器以及存储单元可以保证循环调用第一处理单元、第二处理单元和第三处理单元的输入数据和输出数据在不同数据处理周期中按照正确的流水线运行。
在上述第一方面的一种可能的实现中,上述数据处理装置还包括缓冲单元,并且缓冲单元用于按照每周期一个数据获取16×16矩阵中任意一行或一列数据中的数据。可以理解的是,上述缓冲单元可以为下文中的缓冲区0-3中的任意一个,该缓冲单元在获取16×16矩阵中的一行或一列数据之后,就可以将该行或列数据输入至对应的第一处理单元中。
在上述第一方面的一种可能的实现中,上述数据处理装置还包括读寻址单元,并且读寻址单元,用于按照预设读取规则读取存储单元中存储的数据;其中,在存储单元中的数据为按照行数据存储的情况下,预设读取规则用于指示按照列数据读取存储单元中的数据;或者,在存储单元中的数据为按照列数据存储的情况下,预设读取规则用于指示按照行数据读取存储单元中的数据。如此,在对16×16矩阵执行二维IADST变换时,可以先后进行行变换和列变换,或者先后进行列变换和行变换。
在上述第一方面的一种可能的实现中,上述数据处理装置中包括4个引擎,4个缓冲单元,2个存储单元;一个引擎包括一个第一处理单元,以及对应的一个第二处理单元,一个第三处理单元,一个第一寄存器,一个第二寄存器;其中,4个引擎并行运行,且输入不同引擎的数据为16×16矩阵中不同行或不同列;在执行二维16位IADST变换的情况下,一个存储单元(即下文中的RAM0)用于存储第一维IADST变换的结果,另一个存储单元(即下文中的RAM1)用于存储第二维IADST变换的结果。可以理解的是,上述4个引擎可以为下文中的TRF引擎0-3,4个缓冲单元可以为下文中的缓冲区0-3。
在上述第一方面的一种可能的实现中,上述第一处理单元,具体用于按照预设输入顺序输入待处理数据中的数据,预设输入顺序为:第1,14,9,6,5,10,13,2,3,12,11,4,7,8,15,0个数据。参照下文,在流水线第一阶段中第1个周期buffer(即缓冲区或缓冲单元)提供S1[1]和S1[14],第2个周期buffer提供S1[9]和S1[6],第3个周期提供S1[5]和S1[10],第4个周期提供S1[13]和S1[2],第5个周期提供S1[3]和S1[12],第6个周期提供S1[11]和S1[4],第7个周期提供S1[7]和S1[8],第8个周期提供S1[15]和S1[0]。
在上述第一方面的一种可能的实现中,上述一个第一处理单元中包括3个乘法器和3个加法器,一个第二处理单元中包括4个加法器,一个第三处理单元中包括4个加法器。可以理解的是,本申请中每个引擎中仅包括3个乘法器和11个加法器,即实现16位IADST算法的数据处理装置仅包括12个乘法器和44个加法器,即硬件面积较小。进而,通过循环调用这些乘法器和加法器执行运算实现二维IADST 16的蝶形运算以实现IADST算法,使得IADST算法的平均吞吐量为每周期2个点,进而实现了均衡IADST的算法性能和硬件面积。
在上述第一方面的一种可能的实现中,上述第一处理单元用于执行第一操作(即下文中的ROT操作),第一操作通过第一组公式:y0=s0(x0+x1)+(c0-s0)x0+R,y1=s0(x0+x1)+(-c0-s0)x1+R实现;其中,在第一组公式中,x0和x1为第一操作的一组输入数据,y0和y1为对应的一组输出数据,R表示对数据的四舍五入,x0和s0均为从预先设置的一组系数中随机选取的系数,参照下文中示出的c0和s0。具体地,公式y0=s0(x0+x1)+(c0-s0)x0+R中的R表示对s0(x0+x1)+(x0-s0)x0的取值进行四舍五入,而公式y1=s0(x0+x1)+(-c0-s0)x1+R中的R表示对s0(x0+x1)+(-c0-s0)x1的取值进行四舍五入。
在上述第一方面的一种可能的实现中,上述二处理单元用于执行第二操作(即下文中的ADD操作),第二操作通过第二组公式:y0=x0+x2,y2=x0-x2,y1=x1+x3以及y3=x1-x3实现;其中,在第二组公式中,x0、x1、x2、x3为第二操作的一组输入数据,而y0、y1、y2、y3为对应的一组输出数据。
在上述第一方面的一种可能的实现中,上述第三处理单元用于执行第三操作(即下文中的RX操作),第三操作通过第三组公式:y0=s0(x0+x1)+(c0-s0)x0+R,y1=s0(x0+x1)+(-c0-s0)x1+R实现;其中,在第三组公式中,x0和x1为第三操作的一组输入数据,y0和y1为对应的一组输出数据,R表示对数据的四舍五入,c0和s0均为预先设置的固定系数。
第二方面,本申请实施例提供了一种数据处理方法,应用于数据处理装置,该数据处理装置用于实现16位的不对称离散正弦逆变换IADST变换,该数据处理装置包括第一处理单元、第二处理单元和第三处理单元,并且上述方法包括:设置多个数据处理周期;在不同的数据处理周期下,交叉多次使用第一处理单元、第二处理单元和第三处理单元,对待处理数据执行IADST变换得到对应的结果数据;其中,多个数据处理周期包括第一数据处理周期、第二数据处理周期和第三数据处理周期,并且在第一数据处理周期中第一处理单元的输入数据为待处理数据中的数据或者第二处理单元已经输出的数据,在第二数据处理周期中第二数据处理单元的输入数据为第二处理单元已经输出的数据或者第一处理单元已经输出的数据,在第三数据处理周期中第三处理单元的输入数据为第二处理单元已经输出的数据。
在上述第二方面的一种可能的实现中,上述待处理数据为待执行IADST变换的16×16矩阵中任意的一行或一列。
在上述第二方面的一种可能的实现中,上述第一处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第N个数据处理周期输入第一处理单元的输入数据,处理后得到的输出数据在第N+2个数据处理周期中输出;第二处理单元在各数据处理周期中的输入数据和输出数据的数据量均为4,并且对于第M个数据处理周期输入第二处理单元的输入数据,处理后得到的输出数据在第M个数据处理周期中输出;第三处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第K个数据处理周期输入第三处理单元的输入数据,处理后得到的输出数据在第K+2个数据处理周期中输出,M,N,K均为正整数。
在上述第二方面的一种可能的实现中,上述数据处理装置还包括缓冲单元,并且上述方法还包括:按照每周期一个数据向缓冲单元中输入待处理数据中的数据;在缓冲单元中填满待处理数据的情况下,按照每周期两个数据将待处理数据中的数据从缓冲单元中输入至第一处理单元中;按照每周期一个数据向缓冲单元中输入目标数据中的数据,目标数据为16×16矩阵中除待处理数据之外的一行或一列,且目标数据和待处理数据均为行数据或者均为列数据;在从第一处理单元输出与待处理数据对应的所有输出数据之后,按照每周期两个数据向第一处理单元中输入缓冲单元中的目标数据中的数据。如此,使得数据处理装置处理16×16矩阵的不同行或不同列的数据的处理时长较短,有利于进一步提升算法性能。
此外,对第二方面以及其任一种可能的实现中的方案的有益效果的具体描述,可以参照上述第一方面中的相关描述,此处不再赘述。
附图说明
图1根据本申请的一些实施例,示出了一种二维的16×16点的IADST算法应用的场景;
图2根据本申请的一些实施例,示出了一种IADST装置的结构示意图;
图3根据本申请的一些实施例,示出了一种IADST装置执行二维的16×16点IADST算法的工作流程示意图;
图4根据本申请的一些实施例,示出了一种IADST装置中各部件执行二维的16×16点的IADST算法的方法的流程示意图;
图5根据本申请的一些实施例,示出了一种TRF引擎的结构示意图;
图6根据本申请的一些实施例,示出了一种系数c0和系数s0数值范围示意图;
图7根据本申请的一些实施例,示出了一种TRF引擎对输入的16点数据执行IADST变换的流程示意图;
图8A根据本申请的一些实施例,示出了一种TRF引擎中的各个部件执行IADST变换的方法的流程示意图;
图8B根据本申请的一些实施例,示出了一种TRF引擎中的各个部件执行IADST变换的方法的流程示意图;
图9根据本申请的一些实施例,示出了一种手机的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于一种数据处理方法、装置、介质以及系统。
本申请提供的数据处理方法可以应用于视频压缩、图像压缩等数据编解码的场景中,用于实现非对称离散正弦逆变换(IADST)算法以对视频、图像等数据进行解码,具体用于实现16×16点IADST算法,能够均衡IADST的算法性能和硬件面积(如硅面积),在较小的硬件面积下实现较高的算法性能。具体地,该16×16点IADST算法(也称为IADST 16)的硬件可以使用较少的乘法器等器件,例如仅使用12个乘法器和44个加法器,通过循环调用乘法器和加法器执行运算实现二维IADST 16的蝶形运算以实现IADST算法,使得IADST算法的平均吞吐量为每周期2个点,IADST算法的硬件可以使用16nm finfet工艺实现并在800Mhz(兆赫兹)的频率下工作,从而实现了均衡IADST的算法性能和硬件面积。
其中,finfet(Fin Field-Effect Transistor)一般指鳍式场效应晶体管,与传统的平面CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)器件相比,finfet器件在抑制亚阈值电流和栅极漏电流方面有着绝对的优势,进而使得IADST算法所应用的硬件的可靠性较高。
在一些实施例中,本申请实施例提供的数据处理方法可以应用于支持视频压缩格式AV1(AOMedia Video Codec 1.0)或HEVC(High Efficiency Video Coding)标准等编解码器(codec)标准的电子设备中,例如应用于该电子设备中的视频处理单元(VideoProcessing Unit,VPU)IP中。其中,芯片设计中的IP(intellectual property core)通常指应用在系统芯片(SoC)中且具有特定功能的可复用(reusable)的电路模块,具有标准性和可交易性。
更具体地,在一些实施例中,适用于本申请的电子设备包括但不限于:数字电视、数字直接广播系统、无线通信装置、个人数字助理(PDA)、膝上型或桌上型计算机、手机、平板计算机、数字相机、数字记录装置、视频游戏装置、蜂窝式或卫星无线电电话等。
可以理解的是,本申请中执行数据处理方法的执行主体可以称为视频数据处理装置,即该装置用于实现二维的16×16点的IADST算法。其中,该视频数据处理装置可以通过上述电子设备实现,或者通过该电子设备中的VPU IP实现。作为一种示例,以下实施例中将上述视频数据处理装置称为IADST装置。
下面将结合附图对本申请的实施例作进一步地详细描述。
参照图1,为根据本申请的一些实施例公开了一种二维的16×16点的IADST算法应用的场景,该IADST算法可以由IADST装置执行。具体地,如图1所示,该IADST算法可以对16×16点的数据(即视频块)执行两次IADST变换,首先执行第一维IADST变换(也称1st-D变换)得到第一维IADST变换结果(也称为1st-D结果),再对该第一维变换结果执行第二维IADST变换(也称为2st-D变换)得到第二维IADST变换结果(即也称为2st-D结果)。例如,图1示出的1st-D结果中的各行各列的数据(即点)包括:第1行数据为a00-a15,第2行数据为b00-b15,第3行数据为c00-c15,第4行数据为d00-d15,……,第16行数据为p00-p15。并且,图1示出的2st-D结果中的各行各列的数据包括:第1行数据为Y00-Y0f(即Y00、Y01、Y02、Y03、Y04、Y05、Y06、Y07、Y08、Y09、Y0a、Y0b、Y0c、Y0d、Y0e、Y0f),第2行数据为Y10-Y1f,第3行数据为Y20-b2f,第4行数据为Y30-Y3f,……,第10行数据为Y90-Y9f,第11行数据为Ya0-Yaf,第12行数据为Yb0-Ybf,第13行数据为Yc0-Ybf,第14行数据为Yd0-Ydf,第15行数据为Ye0-Yef,第16行数据为Yf0-Yff。此外,第一维IADST变换结果和第二维IADST变换结果均可以存储在IADST装置中,如存储在IADST装置的RAM(随机存取存储器,Ramdom Access Memory)中。
更具体地,本申请实施例中,一次完整的二维的16×16点IADST算法包括一维行变换和一维列变换。作为一种示例,如果先做行变换,则先把行变换的结果按行内自然顺序存储到IADST装置的RAM中,等16×16点数据的行变换做完,再将行变换结果按列内自然顺序读取出来并进行列变换,此时,第一维IADST变换为行变换,而第二维IADST变换为列变换。作为另一种示例,如果先做列变换,则先把列变换的结果按列内自然顺序存储到IADST装置的RAM中,等16×16点数据的列变换做完,再将列变换结果按行内自然顺序读取出来并进行行变换,此时,第一维IADST变换为列变换,而第二维IADST变换为行变换。
在本申请的一些实施例中,上述二维的IADST算法中的第一维IADST变换和第二维IADST变换均可以通过下述公式(1)实现:
其中,0≤i<N且0≤j<N,N取值为16。具体地,xj代表输入数据,yi代表IADST变换后的输出数据,j代表输入数据的第几个点,i代表转换后的第几个点,N取值16表示完成的是16×16点的IADST变换。可以理解的是,上述公式(1)具体用于对16×16点的数据中的每一行数据或每一列数据分别执行IADST变换。此外,本申请实施例中,16×16点的IADST中的每个点(point)为一个数据,如可以为16×16点的视频块中的一个像素点对应的数据。作为一种示例,本申请实施例中,视频块中的一个像素点可以为多通道数据,如一个像素点包括红(R)、绿(G)、蓝(B)三个颜色通道的数据。此时,本申请中IADST变换涉及的一个点可以为一个像素点的一个通道的数据。
更具体地,针对公式(1)中的输入数据xj变换为输出数据yi的具体流程,在下文中将结合IADST装置100中各个部件的运行进行详细描述。
基于图1示出的IADST算法的应用场景,本申请的一些实施例公开了一种IADST装置。参照图2示出了IADST装置100的结构图,该装置包括:输入端口30,缓冲区(buffer)0-3这4个缓冲区,TRF(tranform,变换)引擎0-3这4个TRF引擎,RAM0和RAM1以及读寻址单元(read addressing)31。
其中,输入端口30用于获取输入数据,缓冲区0-3用于缓存16×16点IADST算法中的输入数据和第一维变换结果,TRF引擎0-3用于对输入数据或者第一维变换结果执行IADST变换(行变换和/或列变换),而RAM0和RAM1分别用于存储16×16点IADST算法中的第一维IADST变换结果和第二维IADST变换结果。读寻址单元用于将RAM0和RAM1中按行存储的数据按列读出,或者将按列存储的数据按行读出。例如,在RAM0按照第一行到最后一行的顺序存储16×16点的第一维IADST变换结果的情况下,读寻址单元可以按照第一列到最后一列的顺序从RAM0中读取第一维IADST变换结果中的数据。
更具体地,以下基于图1示出的IADST算法的应用场景和图2示出的IADST装置100,参照图3简述IADST装置100执行二维的16×16点IADST算法的工作流程示意图。
如图3所示,IADST装置100中的输入端口30可以每周期输入4个点,具体为每周期向缓冲区0-3中分别输入1个点,直至缓冲区0-3分别填满输入数据中的一行或一列的16个点。随后,TRF引擎0-3可以分别从缓冲区0-3中每周期获取2点进行第一维IADST变换并得到第一维IADST变换结果。例如,在一个周期内TRF引擎0-3分别输出第一维IADST变换结果中的2个点,进而TRF引擎0-3在一个周期内将第一维IADST变换结果(即1st-D结果)中的8个点存储至RAM0中。直至在RAM0中存储完第一维IADST变换结果中的所有点,读寻址单元将RAM0中存储的第一维IADST变换结果中的点读取至缓冲区0-3中,直至每个缓冲区均填满第一维IADST变换结果中的一列数据或一行数据16个点。例如,读寻址单元每周期从RAM0可以读取一个点到一个缓冲区中。进而,TRF引擎0-3可以分别从缓冲区0-3中每周期获取2点进行第二维IADST变换得到第二维IADST变换结果,再将第二维IADST变换结果中的点存储至RAM1中。例如,TRF引擎0-3在一个周期内将第二维IADST变换结果(即2st-D结果)中的8个点存储至RAM1中。其中,TRF引擎0-3和缓冲区0-3是分时复用(记为Time division)的。
在一些实施例中,TRF引擎0-3可以预先设置数据的存储顺序和读取顺序的顺序映射关系,以实现IADST算法中的蝶形运算。例如,预先设置TRF引擎0-3从缓冲区0-3中读取输入数据中的点的顺序,TRF引擎0-3在RAM0中存储第一维IADST变换结果中的点的顺序,TRF引擎0-3通过读寻址单元从RAM0中读取第一维IADST变换结果中的点的顺序,以及TRF引擎0-3在RAM1中存储第二维IADST变换结果中的点的顺序,TRF引擎0-3通过读寻址单元从RAM1中读取第二维IADST变换结果中的点的顺序等。具体的顺序示例将在下文中具体描述,此处不做赘述。
更具体的,结合图3示出的工作流程图,参照图4详细介绍本申请实施例提供的视频数据的处理方法的流程,即ADST装置100执行二维的16×16点的IADST算法的流程。具体地,该方法流程为IADST装置100中各个部件(如缓冲区0-3和TRF引擎0-3等)执行二维的16×16点的IADST算法的方法的流程示意图。
步骤401:输入端口获取16×16点的原始数据。
例如,上述16×16点的原始数据为视频压缩场景中待解压缩的视频数据中划分出的16×16的视频块。
步骤402:输入端口每个周期输入16×16点的原始数据中不同行或不同列的4个点,并按照每个周期1个点将这些点分别发送到缓冲区0-3中的每个缓存区中,直至每个缓冲区均填满16个点。
其中,每个缓冲区中填满的16个点为16×16点的原始数据中同一行或同一列的16个点。
可以理解的是,输入端口经过16个周期输入16×16点的原始数据中的64点以填满缓冲区0-3,那么IADST装置100可以循环4次执行,以完成输入16×16点的原始数据中的全部点。
步骤403:当缓冲区0-3均存储16×16点的原始数据中的一行16个点时,TRF引擎0-3每个周期从缓冲区0-3分别获取2点进行第一维IADST变换以得到第一维IADST变换结果,并且每周期将第一维IADST变换结果中的8点按照预设顺序存储在RAM0中,直至第一维IADST变换全部完成。
例如,当缓冲区0中存储有16×16点的原始数据中的一行16个点时,TRF引擎0每个周期从缓冲区0分别获取2点进行第一维IADST变换。当缓冲区1中存储有16×16点的原始数据中的一行16个点时,TRF引擎1每个周期从缓冲区1分别获取2点进行第一维IADST变换。当缓冲区2中存储有16×16点的原始数据中的一行16个点时,TRF引擎2每个周期从缓冲区2分别获取2点进行第一维IADST变换。当缓冲区3中存储有16×16点的原始数据中的一行16个点时,TRF引擎3每个周期从缓冲区3分别获取2点进行第一维IADST变换。
在一些实施例中,上述预设顺序可以由TRF引擎预先设置。作为一种示例,上述第一维IADST变换可以为行变换,上述第一维IADST变换结果可以为图1示出的1st-D结果,具体的1st-D结果包括点a00-a16、点b00-b16,……,点p00-p16。
可以理解的是,根据本申请的一些实施例,RAM0中可以包括不同存储地址,此时第一维IADST变换结果中的点可以基于该存储地址按照预设顺序存储至RAM0中。作为一种示例,在RAM0中存储1st-D结果的规律是每连续8个地址存放4行或者4列中的所有数据。例如,图3示出的RAM0的每一行属于一个地址,包括地址0、地址1、地址2等。其中,RAM0的地址0-7中存储了1st-D结果中的前4行数据。具体地,RAM0的地址0中存储了1st-D结果中的a00、a01、b00、b01、c00、c01、d00、d01,地址1中存储了a02、a03、b02、b03、c02、c03、d02、d03,地址2中存储了a04、a05、b04、b05、c04、c05、d04、d05,……,地址7中存储了a14、a15、b14、b15、c14、c15、d14、d15。
步骤404:读寻址单元31按照预设映射顺序从RAM0每个周期读取1个点发送到一个缓冲区中,直至缓冲区0-3中均填满16个点。
可以理解的是,缓冲区0-3中填满的16个点为1st-D结果中的同一行或者同一列数据。
作为一种示例,上述预设映射顺序,即读寻址单元从RAM0读取点的顺序为:先读地址0,获得1st-D结果中第一列前四个数据a00、b00、c00、d00,同时获得1st-D结果中第二列前四个数据a01、b01、c01、d01,并将第一列这四个数据发送到buffer0,第二列的这四个数据发送到buffer1。再读地址1,获得1st-D结果中第三列前四个数据a02、b02、c02、d02,同时获得1st-D结果中第四列前四个数据a03、b03、c03、d03,并将第三列这四个数据发送到buffer2,第四列的这四个数据发送到buffer3,依次类推,读地址2-地址7,以获得1st-D结果的前4行中的所有数据。然后读地址8,获得1st-D结果中的第一列和第二列的第5个数据到第8个数据(即e00,e01,f00,f01,g00,g01,h00,h01);读地址9,获得1st-D结果中的第三列和第四列的第5个数据到第8个数据(即e02,e03,f02,f03,g02,g03,h02,h03),依次类推,读地址10-地址15,以获得1st-D结果的第4行到第8行中的所有数据。再然后,读地址16,获得1st-D结果的第一列和第二列的第9个数据到第12个数据,读地址17,获得1st-D结果的第三列和第四列的第9个数据到第12个数据,依次类推,读地址17-地址23,以获得1st-D结果的第9行到第12行中的所有数据。类似的,读取后续的其他地址中的数据,直至读取得到1st-D结果中的所有数据。
步骤405:当缓冲区0-3均填满第一维IADST变换结果中的16个点时,TRF引擎0-3每个周期从缓冲区0-3分别获取第一维IADST变换结果中的2点进行第二维IADST变换以得到第二维IADST变换结果,每周期将第二维IADST变换结果中的8点按照预设顺序存储在RAM1中,直至第二维IADST变换全部完成。
作为一种示例,上述第二维IADST变换可以为列变换,第二维IADST变换结果可以为图1示出的2st-D结果,具体的2st-D结果包括点Y00-Y0f,Y10-Y1f,Y30-Y3f,……,Yf0-Yff。
在一些实施例中,存储第二维IADST变换结果的预设顺序与上述实施例中存储第二维IADST变换结果的预设顺序相同。类似的,作为一种示例,RAM1中可以包括不同存储地址,此时第二维IADST变换结果中的点可以基于存储地址按照预设顺序存储至RAM1中。作为一种示例,在RAM1中存储2st-D结果的规律是每连续8个地址存放4行或者4列的所有数据。例如,图3示出的RAM1的每一行属于一个地址,如RAM1中地址0中存储了2st-D结果中的Y00、Y01、Y10、Y11、Y20、Y21、Y30、Y31,地址1中存储了Y02、Y03、Y12、Y13、Y21、Y23、Y32、Y33,依次类推在后续的地址中存储了2st-D结果中的其他数据。需要说明的是,参照图3所示步骤405中的第二维IADST变换为列变换。
步骤406:在缓冲区0-3中存储的1st-D结果的数据被TRF引擎0-3获取到的情况下,针对16×16点的原始数据中未经过输入端口的其他数据,重复3次执行上述步骤402-步骤405,以得到16×16点的原始数据中的全部数据的第一维IADST变换结果和第二维IADST变换结果。
可以理解的是,IADST装置100总共循环4次执行上述步骤402-步骤405,以得到16×16点的原始数据中的全部数据的第一维IADST变换结果和第二维IADST变换结果。并且,每次执行步骤402-步骤405时输入的16×16点的原始数据中的不同数据,如不同行或不同列数据。
需要说明的是,本申请实施例中,每个TRF引擎执行第一维IADST变换和第二维IADST变换的方法相同。其中,第一维IADST变换和第二维IADST变换的输入数据均为16点数据,区别仅在于,第一维IADST变换的输入数据是一行数据,第二维IADST变换变换的输入数据是一列数据。此外,TRF引擎0-3中不同TRF引擎执行IADST变换的方法均相同,区别仅在于输入数据不同。以下实施例以对一个TRF引擎执行IADST变换的流程,对IADST变换的方法进行说明。
更具体,如图5所示,为根据本申请的一些实施例提供的TRF引擎的一种结构示意图。图5示出的TRF引擎(如TRF引擎0-3中的任一个)包括:一个ROT(rotation operation,旋转操作)单元、一个ADD(adding operation,加法操作)单元,以及一个RX(Rx operation,RX操作)单元。此外,TRF引擎中还可以包括两个寄存器,即寄存器1(regs1)和寄存器2(regs2),用于缓存ROT单元、ADD单元和RX单元得到的数据。其中,ROT单元可以使用3个乘法器和3加法器实现,ADD单元可以使用4个加法器实现,RX单元可以使用两个固定系数乘法器和两个加法器实现,而固定系数乘法器可以用加法器替代,看作加法器,即RX单元也可以使用4个加法器实现。从而,一个TRF引擎可以使用3个乘法器和11个加法器实现,进而本申请实施例中的IADST装置100中的4个TRF引擎可以使用12个乘法器和44个加法器实现。
更具体地,本申请实施例中,IADST变换使用两种类型的操作,即旋转操作(ROT)和加法操作(ADD)。
在一些实施例中,ROT操作(即旋转操作)的定义如下述公式(2)所示,而公式(2)具体通过公式(2-1)和公式(2-2)实现。
y0=s0(x0+x1)+(c0-s0)x0+R (2-1)
y1=s0(x0+x1)+(-c0-s0)x1+R (2-2)
其中,ROT操作使用了3个乘法器和3个加法器实现,吞吐量为每周期2点,而延迟为3周期。x0和x1为一个周期内ROT操作的输入数据,y0和y1为ROT操作相应的输出数据,R表示四舍五入。例如,公式y0=s0(x0+x1)+(c0-s0)x0+R中的R表示对s0(x0+x1)+(c0-s0)x0的取值进行四舍五入,而公式y1=s0(x0+x1)+(-c0-s0)x1+R中的R表示对s0(x0+x1)+(-c0-s0)x1的取值进行四舍五入。另外,系数c0和系数s0可以为预先设置的,例如,系数c0和系数s0与codec标准有关,对于AV1视频格式而言系数c0和系数s0的取值可以为图6示出的数值范围中的数值,如系数c0取值为4096,系数s0取值为4091,但不限于此。可以理解的是,在一些实施例中,ROT单元每执行一次或多次ROT操作便可以更新系数c0和系数s0的取值,例如每执行一次或多次ROT操作更新一次系数c0和系数s0的取值。
更具体地,参照下述表1,示出了ROT操作的计算过程。
表1
其中,如表1所示,ROT单元处理数据的过程包括P0(输入)、P1(相加)、P2(相乘)和P3(相加)这四个阶段,而P1、P2和P3这三个阶段中的每个阶段占用一个周期,从而导致ROT操作的延迟为3周期。
具体地,某个周期(记为周期a)中ROT单元在P0阶段中输入两个点(即X0,X1)时,该周期中ROT单元可以使用1个加法器执行上述P1阶段中的U2=X0+X1,然后该周期的下个周期(周期a+1)中ROT单元可以使用3个乘法器分别执行上述P2阶段中的V0=U0*C[0],V1=U1*C[1]和V2=U2*C[2],其中,“*”表示相乘。进而,再下一个周期(周期a+2)中ROT单元可以使用2个加法器执行上述阶段P3中的Y0=V0+V2+R和Y1=V1+V2+R。其中,C[0]=C0-S0,C[1]=-C0-S0,C[2]=S0,R表示四舍五入,即在式Y0=V0+V2+R中对V0+V2的取值进行四舍五入,在式Y1=V1+V2+R中对V1+V2的取值进行四舍五入。可以理解的是,表1中的X0和X1分别为公式(2)中的x0和x1,表1中的Y0和Y1分别为公式(2)中的y0和y1
类似的,在一些实施例中,RX操作的定义与上述ROT操作的定义类似,区别在于,系数c0和系数s0的取值是固定不变的。即,RX单元每次执行RX操作使用的系数c0和系数s0均相同。其中,RX操作中输入数据与这些固定的系数相乘,进行移位和相加等操作。具体地,RX操作使用了4个加法器实现,吞吐量为每周期2点,延迟为2周期。
此外,在一些实施例中,ADD操作用于对输入数据进行交叉加减,具体定义可以通过下述公式(3)、(4)、(5)和(6)表示:
y0=x0+x2(3)
y2=x0-x2(4)
y1=x1+x3(5)
y3=x1-x3(6)
其中,上述公式(3)-(6)中的x0、x1、x2、x3为ADD操作的输入数据,而y0、y1、y2、y3为ADD操作的输出数据,ADD操作的延迟为1个周期。
在一些实施例中,基于图5示出的TRF引擎,参照图7对TRF引擎对输入的16点数据执行IADST变换(IADST16)的流程进行描述。可以理解的是,在TRF引擎执行IADST变换的过程中,不同TRF引擎从对应的不同缓冲区获取输入数据。例如,TRF引擎0-3分别对应缓冲区0-3,即TRF引擎0-3分别从缓冲区0-3中获取输入数据。
如图7所示,TRF引擎的输入数据为S1[0]-S1[15],而S1[0]-S1[15]可以看作16×16点的原始数据的一行或者一列,或者,IADST算法中第一维IADST变换结果中的16×16点中的一行或者一列。
在一些实施例中,S1[0]-S1[15]可以按照预设映射顺序映射为S2[0]-S2[15],以实现IADST算法中的蝶形运算。其中,对于IADST算法的第一维IADST变换和第二维变换中输入数据均可以按照上述预设映射顺序进行映射。作为一种示例,图7示出的S1[0]-S1[15]与S2[0]-S2[15]之间的预设映射顺序可以通过下述表2表示。
表2
可以理解的是,本申请实施例中,S1[0]-S1[15]与S2[0]-S2[15]之间的预设映射顺序包括但不限于上述示例。
更具体地,如图7所示,标记1中的实线方框对应ROT操作,且标记1中圆圈中序号表示ROT操作的周期序号。标记2中的虚线方框对应ADD操作,且标记2中圆圈中序号表示ADD操作的周期序号。标记3中的虚线方框对应RX操作,且标记3中圆圈中序号表示RX操作的周期序号。其中,图7示出的一次完整的IADST变换的流水线(pipeline),该流水线包括第一阶段(phase1)和第二阶段(phase2)。其中,寄存器1和寄存器2分别用于缓存流水线第一阶段产生的数据和第二阶段产生的数据,并将寄存器2中缓存的数据存储至TRF引擎中的RAM中。可以理解的是,在执行第一维IADST变换时寄存器2中缓存的数据将存储至RAM0中;而在执行第二维IADST变换时寄存器2中缓存的数据将存储至RAM1中。
作为一种示例,流水线的第一阶段包括:ROT单元开始输入第一笔数据开始到输出最后一笔数据。而流水线的第二阶段包括:从寄存器1读取数据开始到将寄存器2中的所有数据写入(存入)RAM。对于流水线的两个阶段的划分将在下文中具体描述,此处不做赘述。
根据本申请的一些实施例,参照图7示出的TRF引擎的处理流程,流水线第一阶段中第1个周期缓冲区(buffer)提供S1[1]和S1[14],第2个周期buffer提供S1[9]和S1[6],第3个周期提供S1[5]和S1[10],第4个周期提供S1[13]和S1[2],第5个周期提供S1[3]和S1[12],第6个周期提供S1[11]和S1[4],第7个周期提供S1[7]和S1[8],第8个周期提供S1[15]和S1[0]。相应的,基于S1[0]-S1[15]与S2[0]-S2[15]之间的映射关系,ROT单元在第1个周期吃入S2[14]和S2[15],ROT单元在第2个周期吃入S2[6]和S2[7],ROT单元在第3个周期吃入S2[10]和S2[11],ROT单元在第4个周期吃入S2[2]和S2[3],ROT单元在第5个周期吃入S2[12]和S2[13],ROT单元在第6个周期吃入S2[4]和S2[5],ROT单元在第7个周期吃入S2[8]和S2[9],ROT单元在第8个周期吃入S2[0]和S2[1]。可以理解的是,在一个周期中缓冲区提供的两点数据,即为该周期中ROT单元中输入(吃入)的数据。
作为一种示例,结合上述步骤801-829示出的IADST变换过程,对于上述公式(1)而言,输入数据xi可以依次为S1[0]-S1[15]这16点,而输出数据yi可以依次为S9[0]-S9[15]这16点。
更具体地,基于图7示出的IADST变换(IADST16)流程,参照图8A和图8B,示出了TRF引擎中的各个部件执行该IADST变换的方法,该方法包括如下步骤801-829。其中,图8A省略了流水线第二阶段中的步骤820-829的具体描述,而图8B则省略了流水线第一阶段中的步骤801-819中的部分步骤的具体描述。
流水线第一阶段
步骤801:在输入数据S1[0]-S1[15]按照预设映射顺序映射至S2[0]-S2[15]的情况下,在流水线第一阶段的第1个周期(记为T1)中,ROT单元输入(吃入)S2[14]和S2[15]进行计算。
可以理解的是,ROT单元对输入数据的计算即为ROT操作。参照上文对ROT操作的定义,S2[14]和S2[15]可以分别作为ROT操作中的输入数据x0和x1。类似的,下文中输入到ROT单元进行计算的其他数据也将分别作为ROT操作中的输入数据x0和x1,对此不再赘述。
步骤802:在流水线第一阶段的第2个周期(记为T2)中,ROT单元输入S2[6]和S2[7]进行计算。
步骤803:在流水线第一阶段的第3个周期(记为T3)中,ROT单元输出(吐出)S3[14]和S3[15],输入S2[10]和S2[11]进行计算。
其中,S3[14]和S3[15]为ROT单元对S2[14]和S2[15]进行ROT操作计算得到的输出数据。可以理解的是,在ROT操作中的输入数据x0和x1分别为S2[14]和S3[15]时,S3[14]和S3[15]可以分别作为ROT操作中的输出数据y0和y1。其中,一次ROT操作的输入数据与输出数据的标记中的序号相邻,例如S2[14]与S3[14]这两个序号相邻,具体为“S2”与“S3”相邻。类似的,下文中ROT单元输出的其他数据也对应有输入数据,并分别作为ROT操作中的输出数据y0和y1,对此不再赘述。
步骤804:在流水线第一阶段的第4个周期(记为T4)中,ROT单元将S3[14]和S3[15]存入寄存器1,输出S3[6]和S3[7],并输入S2[2]和S2[3]进行计算。
其中,S3[6]和S3[7]为ROT单元对上述S2[6]和S2[7]进行ROT操作计算得到的输出数据。
步骤805:在流水线第一阶段的第5个周期(记为T5)中,ROT单元输出S3[10]和S3[11],输入S2[12]和S2[13]进行计算;ADD单元输入寄存器1中的S3[14]和S3[15]以及由ROT单元在第4个周期输出的S3[6]和S3[7]进行计算以得到并输出S4[14]、S4[15]、S4[6]和S4[7]。
其中,S3[10]和S3[11]为ROT单元对S2[10]和S2[11]执行ROT操作计算得到的输出数据。
可以理解的是,可以理解的是,ADD单元对输入数据的计算即为ADD操作。参照上文对ADD操作的定义,S3[14]、S3[15]、S3[6]和S3[7]分别作为ADD操作中的输入数据x0、x1、x2、x3;而S4[14]、S4[15]、S4[6]和S4[7]分别作为ADD操作中的输出数据y0、y1、y2、y3。类似的,下文中输入到ADD单元进行计算的其他数据也将分别作为ADD操作中的输入数据x0、x1、x2、x3,输出的其他数据分别作为输出数据y0、y1、y2、y3,对此不再赘述。
步骤806:在流水线第一阶段的第6个周期(记为T6)中,ROT单元将S3[10]和S3[11]存入寄存器1,输出S3[2]和S3[3],输入S2[4]和S2[5]进行计算;ADD单元将S4[14]、S4[15]、S4[6]和S4[7]存入寄存器1。
其中,S3[2]和S3[3]为ROT单元对S2[2]和S2[3]执行ROT操作计算得到的输出数据。
步骤807:在流水线第一阶段的第7个周期(记为T7)中,ROT单元输出S3[12]和S3[13],输入S2[8]和S2[9]进行计算;ADD单元输入寄存器1中的S3[10]和S3[11]以及由ROT单元在第6个周期输出的S3[2]和S3[3]进行计算以得到并输出S4[10]、S4[11]、S4[2]和S4[3]。
其中,S3[12]和S3[13]为ROT单元对第一阶段的第5周期输入的S2[12]和S2[13]执行ROT操作计算得到的输出数据。
步骤808:在流水线第一阶段的第8个周期(记为T8)中,ROT单元将S3[12]和S3[13]存入寄存器1,输出S3[4]和S3[5],输入S2[0]和S2[1]进行计算;ADD单元将S4[10]、S4[11]、S4[2]和S4[3]存入寄存器1。
其中,S3[4]和S3[5]为ROT单元对第一阶段的第6周期输入的S2[4]和S2[5]执行ROT操作计算得到的输出数据。
步骤809:在流水线第一阶段的第9个周期(记为T9)中,ROT单元输出S3[8]和S3[9],输入寄存器1中的S4[14]和S4[15]进行计算;ADD单元输入寄存器1中的S3[12]和S3[13]以及由ROT单元在第8个周期输出的S3[4]和S3[5]进行计算以得到并输出S4[12]、S4[13]、S4[4]和S4[5]。
其中,S3[8]和S3[9]为ROT单元对第一阶段的第7周期输入的S2[8]和S2[9]执行ROT操作计算得到的输出数据。
步骤810:在流水线第一阶段的第10个周期(记为T10)中,ROT单元将S3[8]和S3[9]存入寄存器1,输出S3[0]和S3[1],输入寄存器1中的S4[10]和S4[11]进行计算;ADD单元将S4[12]、S4[13]、S4[4]和S4[5]存入寄存器1。
其中,S3[0]和S3[1]为ROT单元对第一阶段的第8周期输入的S2[0]和S2[1]执行ROT操作计算得到的输出数据。
步骤811:在流水线第一阶段的第11个周期(记为T11)中,ROT单元输出S5[14]与S5[15],输入寄存器1中的S4[12]与S4[13]进行计算;ADD单元输入寄存器1中的S3[8]和S3[9]以及由ROT单元在第10个周期输出的S3[0]和S3[1]进行计算以得到并输出S4[8]、S3[9]、S4[0]和S4[1]。
其中,S5[14]与S5[15]为ROT单元对第一阶段的第9周期输入的S4[14]与S4[15]执行ROT操作计算得到的输出数据。
步骤812:在流水线第一阶段的第12个周期(记为T12)中,ROT单元将S5[14]和S5[15]存入寄存器1,输出S5[10]与S5[11],输入由ADD单元在第11周期输出的S4[8]和S4[9]进行计算;ADD单元将S4[0]和S4[1]存入寄存器1,输入寄存器1中的S5[2]、S5[3]、S5[6]和S5[7]进行计算以得到并输出S6[2]、S6[3]、S6[6]和S6[7]。
其中,S5[10]与S5[11]为ROT单元对第一阶段的第10周期输入的S4[10]与S4[11]执行ROT操作计算得到的输出数据。S5[2]、S5[3]、S5[6]和S5[7]分别为ADD单元在第一阶段的第8个周期存入寄存器1的S4[2]和S4[3],以及ADD单元在第一阶段的第6个周期存入寄存器1的S4[6]和S4[7]。
步骤813:在流水线第一阶段的第13个周期(记为T13)中,ROT单元将S5[10]与S5[11]存入寄存器1中,输出S5[12]与S5[13],输入由ADD单元在第12周期输出的S6[6]和S6[7]进行计算;ADD单元将S6[2]和S6[3]存入寄存器1,输入寄存器1中的S5[0]、S5[1]、S5[4]和S5[5]进行计算以得到并输出S6[0]、S6[1]、S6[4]、S6[5]。
其中,S5[12]与S5[13]为ROT单元对第一阶段的第11周期输入的S4[12]与S4[13]执行ROT操作计算得到的输出数据。S5[0]、S5[1]、S5[4]和S5[5]分别为ADD单元在第一阶段的第12个周期存入寄存器1的S4[0]和S4[1],以及ADD单元在第一阶段的第10个周期存入寄存器1的S4[4]和S4[5]。
步骤814:在流水线第一阶段的第14个周期(记为T14)中,ROT单元输出S5[8]与S5[9],输入由ADD单元在第13个周期输出的S6[4]和S6[5]进行计算;ADD单元中将S6[0]和S6[1]存入寄存器1,输入寄存器1中的S5[14]、S5[15]、S5[10]和S5[11]进行计算以得到并输出S6[14]、S6[15]、S6[10]和S6[11]。
其中,S5[8]与S5[9]为ROT单元对第一阶段的第12周期输入的S4[8]与S4[9]执行ROT操作计算得到的输出数据。
步骤815:在流水线第一阶段的第15个周期(记为T15)中,ROT单元输出S7[6]和S7[7],输入由ADD单元输出的S6[14]和S6[15]进行计算;ADD单元将S6[10]和S6[11]存入寄存器1,输入寄存器1中的S5[12]、S5[13]、S5[8]和S5[9]进行计算以得到并输出S6[12]、S6[13]、S6[8]和S6[9]。
其中,S7[6]和S7[7]为ROT单元对第一阶段的第13周期输入的S6[6]和S6[7]执行ROT操作计算得到的输出数据。
步骤816:在流水线第一阶段的第16个周期(记为T16)中,ROT单元将S7[6]和S7[7]存入寄存器1,输出S7[4]和S7[5],输入由ADD单元输出的S6[12]和S6[13]进行计算;ADD单元将S6[8]和S6[9]存入寄存器1。
其中,S7[4]和S7[5]为ROT单元对第一阶段的第14周期输入的S6[4]和S6[5]执行ROT操作计算得到的输出数据。
步骤817:在流水线第一阶段的第17个周期(记为T17)中,ROT单元将S7[4]和S7[5]存入寄存器1,输出S7[14]和S7[15]。
其中,S7[14]和S7[15]为ROT单元对第一阶段的第15周期输入的S6[14]和S6[15]执行ROT操作计算得到的输出数据。
步骤818:在流水线第一阶段的第18个周期(记为T18)中,ROT单元将S7[14]和S7[15]存入寄存器1,输出S7[12]和S7[13]。
其中,S7[12]和S7[13]为ROT单元对第一阶段的第16周期输入的S6[12]和S6[13]执行ROT操作计算得到的输出数据。
步骤819:在流水线第一阶段的第19个周期(记为T19)中,ROT单元将S7[12]和S7[13]存入寄存器1。
可以理解的是,ROT单元在第3个周期吐出(输出)第一笔数据,第18个周期吐出(输出)最后一笔数据,一共16个周期;ROT单元第一个周期吃入(输入)第一笔数据,第16周期吃入(输入)最后一笔数据,一共16个周期。其中,把从ROT单元的第一笔输入到ROT单元的最后一笔(第16笔)输入看作流水线第一阶段(phase1),花费16个周期。
流水线第二阶段
步骤820:在流水线第二阶段的第1个周期(记为T1')中,ADD单元输入寄存器1中的S7[0]、S7[1]、S7[2]和S7[3]进行计算得到并输出S8[0]、S8[1]、S8[2]和S8[3]。
其中,S7[0]、S7[1]、S7[2]和S7[3]分别为寄存器1中的S6[0]、S6[1]、S6[2]和S6[3]。
作为一种示例,在流水线第一阶段的第13个周期中S6[2]和S6[3]存入寄存器1,以及第14个周期中S6[0]和S6[1]存入寄存器1之后,在第一阶段的第15个周期开始ADD单元便可以读取上述S7[0]、S7[1]、S7[2]和S7[3]。例如,流水线第二阶段的第1个周期与流水线第一阶段的第17个周期为同一个周期,那么,流水线第二阶段中的第2个周期和第3个周期可以分别为与流水线第一阶段的第18个周期和第19个和周期相同。也就是说,流水线第一阶段和第二阶段之间存在重叠的时间。
步骤821:在流水线第二阶段的第2个周期(记为T2')中,ADD单元将S8[0]和S8[1]存入寄存器2,输入寄存器1中的S7[4]、S7[5]、S7[6]和S7[7]进行计算以得到并输出S8[4]、S8[5]、S8[6]和S8[7];RX单元输入由ADD单元输出的S8[2]和S8[3]进行计算。
步骤822:在流水线第二阶段的第3个周期(记为T3')中,ADD单元将S8[4]和S8[5]存入寄存器2,输入寄存器1中的S7[8]、S7[9]、S7[10]和S7[11]进行计算以得到并输出S8[8]、S8[9]、S8[10]和S8[11];RX单元输出S9[2]和S9[3],输入由ADD单元输出的S8[6]和S8[7]进行计算;寄存器2将S9[0]和S9[1]存入RAM。
其中,S7[8]、S7[9]、S7[10]和S7[11]分别为寄存器1中的S6[8]、S6[9]、S6[10]和S6[11]。另外,S9[0]和S9[1]分别上述S8[0]和S8[1]。
步骤823:在流水线第二阶段的第4个周期(记为T4')中,ADD单元将S8[8]和S8[9]存入寄存器2,输入寄存器1中的S7[12]、S7[13]、S7[14]和S7[15]进行计算以得到并输出S8[12]、S8[13]、S8[14]和S8[15];RX单元将S9[2]和S9[3]存入寄存器2,输出S9[6]和S9[7],输入由ADD单元输出的S8[10]和S8[11]进行计算;寄存器2将S9[4]和S9[5]存入RAM。
其中,S9[4]和S9[5]分别为上述S8[4]和S8[5]。
步骤824:在流水线第二阶段的第5个周期(记为T5')中,ADD单元将S8[12]和S8[13]存入寄存器2;RX单元将S9[6]和S9[7]存入寄存器2,输出S9[10]和S9[11],输入由ADD单元输出的S8[14]和S8[15]进行计算;寄存器2将S9[2]和S9[3]存入RAM。
步骤825:在流水线第二阶段的第6个周期(记为T6')中,RX单元将S9[10]和S9[11]存入寄存器2,输出S9[14]和S9[15];寄存器2将S9[6]和S9[7]存入RAM。
步骤826:在流水线第二阶段的第7个周期(记为T7')中,RX单元将S9[14]和S9[15]存入寄存器2;寄存器2将S9[10]和S9[11]存入RAM。
步骤827:在流水线第二阶段的第8个周期(记为T8')中,寄存器2将S9[8]和S9[9]存入RAM。
其中,S9[8]和S9[9]分别为上述S8[8]和S8[9]。
步骤828:在流水线第二阶段的第9个周期(记为T9')中,寄存器2将S9[12]和S9[13]存入RAM。
其中,S9[12]和S9[13]分别为上述S8[12]和S8[13]。
步骤829:在流水线第二阶段的第10个周期(记为T10')中,寄存器2将S9[14]和S9[15]存入RAM。
其中,在流水线第二阶段中,从第三周期到第十周期,TRF引擎可以把寄存器2中的数据存入RAM,每个周期存两个数据。
可以理解的是,在流水线第二阶段花费10个周期。在流水线第一阶段耗时为16个周期的情况下,取这两个阶段的最大周期数,可得整个流水线的周期是16,一共有16个输入数据。此时,上述流水线的16点的IADST算法相当于每个周期完成一个点的IADST变换。
此外,由于ADD单元在流水线第一阶段和第二阶段中是复用的,因为第一阶段在第1个周期到第4个周期不需要ADD操作,这段时间ADD单元可以在第二阶段中工作,节省了加法单元,有利于简化IADST装置的硬件结构并减少IADST算法的耗时。可以理解的是,针对TRF引擎获取的多组16点的输入数据,TRF引擎对前一组16点的输入数据在第二阶段使用ADD单元,同时开始针对后一组16点的输入数据在第一阶段使用ROT单元而未开始使用ADD单元。如此,使得IASDT的IADST变换算法的处理时长较短,有利于提高算法性能。可以理解的是,上述每个TRF引擎的吞吐量为每周期2个点,使得IADST装置100的吞吐量为每周期2个点。
如此,上述16×16点IADST算法的硬件可以使用较少的乘法器等器件,例如仅使用12个乘法器和44个加法器,使得IADST算法通过循环运算和加法运算实现二维IADST 16的蝶形运算。如此,使得IADST算法的平均吞吐量为每周期2个点,IADST装置可以使用16nmfinfet工艺实现并在800Mhz(兆赫兹)的频率下工作,从而实现了均衡IADST的算法性能和硬件面积,即在较小的硬件面积下实现较高的算法性能。
以下实施例中以实现IADST装置100的电子设备为手机为例进行说明。
如图9所示,手机10可以包括处理器110、电源模块140、存储器180,移动通信模块130、无线通信模块120、传感器模块190、音频模块150、摄像头170、接口模块160、按键101以及显示屏102等。
可以理解的是,本发明实施例示意的结构并不构成对手机10的具体限定。在本申请另一些实施例中,手机10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP、微处理器MCU(Micro-programmed Control Unit)、AI(ArtificialIntelligence,人工智能)处理器、可编程逻辑器件FPGA(Field Programmable GateArray)和视频处理单元(Video Processing Unit,VPU)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中可以设置存储单元,用于存储指令和数据。在一些实施例中,处理器110中的存储单元为高速缓冲存储器180。例如,VPU用于获取16×16点的原始数据,并执行上文中的步骤401-步骤406所示的IADST算法,具体用于执行上述步骤801-829以执行步骤401-步骤406中TRF引擎执行IADST变换的过程。
电源模块140可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。在一些实施例中,电源管理部件包括充电管理模块和电源管理模块。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器110。电源管理模块接收电源和/或充电管理模块的输入,为处理器110,显示屏102,摄像头170,及无线通信模块120等供电。
移动通信模块130可以包括但不限于天线、功率放大器、滤波器、LNA(Low noiseamplify,低噪声放大器)等。移动通信模块130可以提供应用在手机10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以由天线接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块130还可以对经调制解调处理器调制后的信号放大,经天线转为电磁波辐射出去。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivisionmultiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),无线局域网(wireless local areanetworks,WLAN),近距离无线通信技术(near field communication,NFC),调频(frequency modulation,FM)和/或field communication,NFC),红外技术(infrared,IR)技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidounavigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
无线通信模块120可以包括天线,并经由天线实现对电磁波的收发。无线通信模块120可以提供应用在手机10上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。手机10可以通过无线通信技术与网络以及其他设备进行通信。
在一些实施例中,手机10的移动通信模块130和无线通信模块120也可以位于同一模块中。
显示屏102用于显示人机交互界面、图像、视频等。显示屏102包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。
传感器模块190可以包括接近光传感器、压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
音频模块150用于将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。在一些实施例中,音频模块150可以包括扬声器、听筒、麦克风以及耳机接口。
摄像头170用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP(Image SignalProcessing,图像信号处理)转换成数字图像信号。手机10可以通过ISP,摄像头170,视频编解码器,GPU(Graphic Processing Unit,图形处理器),显示屏102以及应用处理器等实现拍摄功能。
接口模块160包括外部存储器接口、通用串行总线(universal serial bus,USB)接口及用户标识模块(subscriber identification module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机10的存储能力。外部存储卡通过外部存储器接口与处理器110通信,实现数据存储功能。通用串行总线接口用于手机10和其他电子设备进行通信。用户标识模块卡接口用于与安装至手机1010的SIM卡进行通信,例如读取SIM卡中存储的电话号码,或将电话号码写入SIM卡中。
在一些实施例中,手机10还包括按键101、马达以及指示器等。其中,按键101可以包括音量键、开/关机键等。马达用于使手机10产生振动效果,例如在用户的手机10被呼叫的时候产生振动,以提示用户接听手机10来电。指示器可以包括激光指示器、射频指示器、LED指示器等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (14)

1.一种数据处理装置,其特征在于,所述数据处理装置用于实现16位的不对称离散正弦逆变换IADST变换,所述数据处理装置包括第一处理单元、第二处理单元和第三处理单元,并且
所述数据处理装置,用于交叉多次使用所述第一处理单元、所述第二处理单元和所述第三处理单元,在设置的多个数据处理周期下对待处理数据执行IADST变换得到对应的结果数据;
其中,所述多个数据处理周期包括第一数据处理周期、第二数据处理周期和第三数据处理周期,并且在所述第一数据处理周期中所述第一处理单元的输入数据为所述待处理数据中的数据或者所述第二处理单元已经输出的数据,在所述第二数据处理周期中所述第二数据处理单元的输入数据为所述第二处理单元已经输出的数据或者所述第一处理单元已经输出的数据,在所述第三数据处理周期中所述第三处理单元的输入数据为所述第二处理单元已经输出的数据;
所述第一处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第N个数据处理周期输入所述第一处理单元的输入数据,处理后得到的输出数据在第N+2个数据处理周期中输出;
所述第二处理单元在各数据处理周期中的输入数据和输出数据的数据量均为4,并且对于第M个数据处理周期输入所述第二处理单元的输入数据,处理后得到的输出数据在所述第M个数据处理周期中输出;
所述第三处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第K个数据处理周期输入所述第三处理单元的输入数据,处理后得到的输出数据在第K+2个数据处理周期中输出,M,N,K均为正整数。
2.根据权利要求1所述的装置,其特征在于,所述待处理数据为待执行IADST变换的16×16矩阵中任意的一行或一列。
3.根据权利要求2所述的装置,其特征在于,所述数据处理装置中还包括第一寄存器,第二寄存器和存储单元,并且
所述第一寄存器,用于在第P个数据处理周期存入所述第一处理单元和/或所述第二处理单元已经输出的数据,并在第P+1个数据处理周期读取数据并输入到所述第一处理单元或第二处理单元中;
所述第二寄存器,用于在第Q个数据处理周期存入所述第二处理单元和/或所述第三处理单元已经输出的数据,并在第Q+1个数据处理周期读取数据并存入所述存储单元中,P,Q均为正整数;
所述存储单元,用于存储所述16×16矩阵中各行或各列数据的IADST变换的结果数据。
4.根据权利要求3所述的装置,其特征在于,所述数据处理装置还包括缓冲单元,并且所述缓冲单元用于按照每周期一个数据获取所述16×16矩阵中任意一行或一列数据中的数据。
5.根据权利要求4所述的装置,其特征在于,所述数据处理装置还包括读寻址单元,并且
所述读寻址单元,用于按照预设读取规则读取所述存储单元中存储的数据;
其中,在所述存储单元中的数据为按照行数据存储的情况下,所述预设读取规则用于指示按照列数据读取所述存储单元中的数据;或者,在所述存储单元中的数据为按照列数据存储的情况下,所述预设读取规则用于指示按照行数据读取所述存储单元中的数据。
6.根据权利要求5所述的装置,其特征在于,所述数据处理装置中包括4个引擎,4个所述缓冲单元,2个所述存储单元;
一个所述引擎包括一个所述第一处理单元,以及对应的一个所述第二处理单元,一个所述第三处理单元,一个所述第一寄存器,一个所述第二寄存器;其中,4个所述引擎并行运行,且输入不同所述引擎的数据为所述16×16矩阵中不同行或不同列;在执行二维16位IADST变换的情况下,一个所述存储单元用于存储第一维IADST变换的结果,另一个所述存储单元用于存储第二维IADST变换的结果。
7.根据权利要求6所述的装置,其特征在于,所述第一处理单元,具体用于按照预设输入顺序输入所述待处理数据中的数据,所述预设输入顺序为:第1,14,9,6,5,10,13,2,3,12,11,4,7,8,15,0个数据。
8.根据权利要求1至7中任一项所述的装置,其特征在于,一个所述第一处理单元中包括3个乘法器和3个加法器,一个所述第二处理单元中包括4个加法器,一个所述第三处理单元中包括4个加法器。
9.根据权利要求8所述的装置,其特征在于,所述第一处理单元用于执行第一操作,所述第一操作通过第一组公式:y0=s0(x0+x1)+(c0-s0)x0+R,y1=s0(x0+x1)+(-c0-s0)x1+R实现;
其中,在所述第一组公式中,x0和x1为所述第一操作的一组输入数据,y0和y1为对应的一组输出数据,R表示对数据的四舍五入,c0和s0均为从预先设置的一组系数中随机选取的系数。
10.根据权利要求8所述的装置,其特征在于,所述第二处理单元用于执行第二操作,所述第二操作通过第二组公式:y0=x0+x2,y2=x0-x2,y1=x1+x3以及y3=x1-x3实现;
其中,在所述第二组公式中,x0、x1、x2、x3为所述第二操作的一组输入数据,而y0、y1、y2、y3为对应的一组输出数据。
11.根据权利要求8所述的装置,其特征在于,所述第三处理单元用于执行第三操作,所述第三操作通过第三组公式:y0=s0(x0+x1)+(c0-s0)x0+R,y1=s0(x0+x1)+(-c0-s0)x1+R实现;
其中,在所述第三组公式中,x0和x1为所述第三操作的一组输入数据,y0和y1为对应的一组输出数据,R表示对数据的四舍五入,c0和s0均为预先设置的固定系数。
12.一种数据处理方法,其特征在于,应用于数据处理装置,所述数据处理装置用于实现16位的不对称离散正弦逆变换IADST变换,所述数据处理装置包括第一处理单元、第二处理单元和第三处理单元,并且
所述方法包括:
设置多个数据处理周期;
在不同的数据处理周期下,交叉多次使用所述第一处理单元、所述第二处理单元和所述第三处理单元,对待处理数据执行IADST变换得到对应的结果数据;
其中,所述多个数据处理周期包括第一数据处理周期、第二数据处理周期和第三数据处理周期,并且在所述第一数据处理周期中所述第一处理单元的输入数据为所述待处理数据中的数据或者所述第二处理单元已经输出的数据,在所述第二数据处理周期中所述第二数据处理单元的输入数据为所述第二处理单元已经输出的数据或者所述第一处理单元已经输出的数据,在所述第三数据处理周期中所述第三处理单元的输入数据为所述第二处理单元已经输出的数据;
所述第一处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第N个数据处理周期输入所述第一处理单元的输入数据,处理后得到的输出数据在第N+2个数据处理周期中输出;
所述第二处理单元在各数据处理周期中的输入数据和输出数据的数据量均为4,并且对于第M个数据处理周期输入所述第二处理单元的输入数据,处理后得到的输出数据在所述第M个数据处理周期中输出;
所述第三处理单元在各数据处理周期中的输入数据和输出数据的数据量均为2,并且对于第K个数据处理周期输入所述第三处理单元的输入数据,处理后得到的输出数据在第K+2个数据处理周期中输出,M,N,K均为正整数。
13.根据权利要求12所述的方法,其特征在于,所述待处理数据为待执行IADST变换的16×16矩阵中任意的一行或一列。
14.根据权利要求13所述的方法,其特征在于,所述数据处理装置还包括缓冲单元,并且所述方法还包括:
按照每周期一个数据向所述缓冲单元中输入所述待处理数据中的数据;
在所述缓冲单元中填满所述待处理数据的情况下,按照每周期两个数据将所述待处理数据中的数据从所述缓冲单元中输入至所述第一处理单元中;
按照每周期一个数据向所述缓冲单元中输入目标数据中的数据,所述目标数据为所述16×16矩阵中除所述待处理数据之外的一行或一列,且所述目标数据和所述待处理数据均为行数据或者均为列数据;
在从所述第一处理单元输出与所述待处理数据对应的所有输出数据之后,按照每周期两个数据向所述第一处理单元中输入所述缓冲单元中的所述目标数据中的数据。
CN202110849634.4A 2021-07-27 2021-07-27 数据处理方法及装置 Active CN113596472B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110849634.4A CN113596472B (zh) 2021-07-27 2021-07-27 数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110849634.4A CN113596472B (zh) 2021-07-27 2021-07-27 数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN113596472A CN113596472A (zh) 2021-11-02
CN113596472B true CN113596472B (zh) 2023-12-22

Family

ID=78250327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110849634.4A Active CN113596472B (zh) 2021-07-27 2021-07-27 数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN113596472B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923339A (en) * 1993-11-29 1999-07-13 Canon Kabushiki Kaisha Higher-speed parallel processing
JP2002091942A (ja) * 2000-09-14 2002-03-29 Toshiba Corp 逆離散コサイン変換回路
CN102572429A (zh) * 2011-12-29 2012-07-11 东南大学 一种二维离散小波变换的硬件架构
CN102625096A (zh) * 2011-01-28 2012-08-01 联合信源数字音视频技术(北京)有限公司 基于avs的并行预编码设备
CN109032704A (zh) * 2017-06-12 2018-12-18 深圳市中兴微电子技术有限公司 一种数据处理的方法和设备
CN111381882A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 数据处理装置及相关产品
CN112967172A (zh) * 2021-02-26 2021-06-15 成都商汤科技有限公司 一种数据处理装置、方法、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923339A (en) * 1993-11-29 1999-07-13 Canon Kabushiki Kaisha Higher-speed parallel processing
JP2002091942A (ja) * 2000-09-14 2002-03-29 Toshiba Corp 逆離散コサイン変換回路
CN102625096A (zh) * 2011-01-28 2012-08-01 联合信源数字音视频技术(北京)有限公司 基于avs的并行预编码设备
CN102572429A (zh) * 2011-12-29 2012-07-11 东南大学 一种二维离散小波变换的硬件架构
CN109032704A (zh) * 2017-06-12 2018-12-18 深圳市中兴微电子技术有限公司 一种数据处理的方法和设备
CN111381882A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 数据处理装置及相关产品
CN112967172A (zh) * 2021-02-26 2021-06-15 成都商汤科技有限公司 一种数据处理装置、方法、计算机设备及存储介质

Also Published As

Publication number Publication date
CN113596472A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
CN110263909B (zh) 图像识别方法及装置
US11470337B2 (en) Image processor, image processing system including image processor, system-on-chip including image processing system, and method of operating image processing system
US10936937B2 (en) Convolution operation device and convolution operation method
CN111260601B (zh) 图像融合方法、装置、可读介质及电子设备
CN113346911A (zh) 压缩编码方法、电子设备和存储介质
JP2013146080A (ja) 小さな画像又は大きな画像を処理する小さなラインバッファを容易に用いる技術
CN113596472B (zh) 数据处理方法及装置
US20220417542A1 (en) Image processing device, image processing system including image processing device, system-on-chip including image processing system, and method of operating image processing system
CN111738950A (zh) 图像处理方法及装置
CN111147861A (zh) 图像压缩方法、装置、用户设备和计算机可读存储介质
CN111083479A (zh) 一种视频帧预测方法、装置及终端设备
US20230010981A1 (en) Methods and apparatuses for high performance and accuracy fixed-point scale implementation
US20230336879A1 (en) Lookup table processing and programming for camera image signal processing
CN114866706A (zh) 图像处理方法、装置、电子设备及存储介质
CN114519753A (zh) 图像生成方法、系统、电子设备、存储介质和产品
CN107995432A (zh) 一种实现慢门拍照的方法和装置
US10735754B2 (en) Chromatic aberration modeling in image compression and enhancement
CN113761464A (zh) 数据处理方法、介质及电子设备
CN115456858B (zh) 图像处理方法、装置、计算机设备及计算机可读存储介质
US8907965B2 (en) Clipping a known range of integer values using desired ceiling and floor values
CN115268834A (zh) 乘法运算共用的执行方法、片上系统、电子设备及介质
CN116012262B (zh) 一种图像处理方法、模型训练方法及电子设备
CN115063333A (zh) 图像处理方法、装置、电子设备和计算机可读存储介质
CN116453028B (zh) 视频处理方法、存储介质及电子设备
CN113419702B (zh) 一种数据累加方法、处理器、电子设备及可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant