对称型滤波运算装置以及对称型滤波运算方法转让专利

申请号 : CN201280002462.6

文献号 : CN103098371B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林宙辉

申请人 : 松下知识产权经营株式会社

摘要 :

一种对称型滤波运算装置(10),具备:第一数据混洗部(161),从寄存器文件(140)读出作为连续的多个数据的第一数据串,并从第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及第二数据混洗部(162),从寄存器文件(140)读出作为连续的多个数据的第二数据串,并从第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与左侧滤波系数的值相同。

权利要求 :

1.一种对称型滤波运算装置,使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算,所述对称型滤波运算装置具备:左侧数据串提取部,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取部,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同,所述左侧数据串提取部,从所述存储部读出由连续的第三数据串与第四数据串构成的所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,

(a)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第五数据串的末尾的数据的中心,或者(b)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第六数据串的开头的数据的中心。

2.如权利要求1所述的对称型滤波运算装置,

所述对称型滤波运算装置还具备:

加法运算部,将提取的所述左侧数据串和所述右侧数据串相加,算出加法数据串;以及乘法运算部,将算出的所述加法数据串与所述左侧滤波系数或所述右侧滤波系数相乘,算出乘法数据串。

3.如权利要求1所述的对称型滤波运算装置,

所述左侧数据串提取部,提取以位于所述数据中心的左侧的数据为开头的所述左侧数据串,所述右侧数据串提取部,提取以位于所述数据中心的右侧的数据为开头的所述右侧数据串,该右侧的数据是相对于所述数据中心而与所述左侧数据串的开头的数据对称的数据。

4.如权利要求1所述的对称型滤波运算装置,

所述第三数据串与所述第四数据串,或者所述第五数据串与所述第六数据串,被存放在所述存储部的连续的区域中,所述左侧数据串提取部,从所述存储部读出所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,从所述存储部读出所述第二数据串,并提取所述右侧数据串。

5.一种对称型滤波运算装置,使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算,所述对称型滤波运算装置具备:左侧数据串提取部,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取部,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同,所述左侧数据串提取部,从所述存储部读出由连续的第三数据串与第四数据串构成的所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,从所述存储部读出所述第一数据串,以作为所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的中心。

6.如权利要求5所述的对称型滤波运算装置,

将所述第三数据串的开头的数据与所述第三数据串的末尾的数据的中心作为所述数据中心,或者将所述第三数据串的开头的数据与所述第四数据串的开头的数据的中心作为所述数据中心,所述左侧数据串提取部,提取以位于所述数据中心的左侧的数据为开头的所述左侧数据串,所述右侧数据串提取部,提取以位于所述数据中心的右侧的数据为开头的所述右侧数据串,该右侧的数据是相对于所述数据中心而与所述左侧数据串的开头的数据对称的数据。

7.一种对称型滤波运算方法,使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算,所述对称型滤波运算方法包括:左侧数据串提取步骤,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取步骤,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同,所述左侧数据串提取步骤中,从所述存储部读出由连续的第三数据串与第四数据串构成的所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取步骤中,

(a)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第五数据串的末尾的数据的中心,或者(b)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第六数据串的开头的数据的中心。

说明书 :

对称型滤波运算装置以及对称型滤波运算方法

技术领域

[0001] 本发明涉及使用左右对称的滤波系数进行滤波运算的对称型滤波运算装置以及对称型滤波运算方法。

背景技术

[0002] 滤波运算是例如在图像数据的滤波运算的情况下,将图像数据的像素值乘以滤波系数,并将其结果累加的运算,它是用于各种图像处理的运算之一。以往公开了一种进行对称型图像滤波运算(以后称为对称滤波运算)的对称型滤波运算装置,该对称型图像滤波运算是滤波系数是对称的情况下的滤波运算(例如,参考专利文献1)。
[0003] (现有技术文献)
[0004] (专利文献)
[0005] 专利文献1:国际公开第2007/072644号
[0006] 然而,所述以往的对称型滤波运算装置是仅固定地进行对称滤波运算的专用运算器,关于在处理器中进行的情况下的工作和构成没有提及。此外,该装置的构成是专门进行抽头数为6的对称滤波运算的构成,关于抽头数为6以外的对称滤波运算的情况也没有提及。

发明内容

[0007] 本发明是解决所述以往的课题的发明,其目的在于,提供一种能够在处理器中进行与各种抽头数对应的对称滤波运算的对称型滤波运算装置以及对称型滤波运算方法。
[0008] 为了达成上述目的,本发明的一个实施例涉及的对称型滤波运算装置,使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算,所述对称型滤波运算装置具备:左侧数据串提取部,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取部,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同。
[0009] 另外,这些全体或具体的实施例,可以用系统、方法、集成电路、计算机程序或计算机可读取的CD-ROM等记录介质来实现,也可以任意组合装置、系统、方法、集成电路、计算机程序以及记录介质来实现。
[0010] 根据本发明的对称型滤波运算装置,能够在处理器中进行与各种抽头数对应的对称滤波运算。

附图说明

[0011] 图1是表示本发明的实施例1的滤波运算装置的结构的图。
[0012] 图2是表示本发明的实施例1的数据混洗器的结构的图。
[0013] 图3A是说明本发明的实施例1的数据混洗器的动作的图。
[0014] 图3B是说明本发明的实施例1的数据混洗器的动作的图。
[0015] 图3C是说明本发明的实施例1的数据混洗器的动作的图。
[0016] 图4是表示本发明的实施例1的用于使数据混洗器动作的助记忆码和指令码的图。
[0017] 图5是表示本发明的实施例1的滤波运算装置进行对称滤波运算的工作的一例的流程图。
[0018] 图6是表示本发明的实施例1的滤波运算装置用于进行对称滤波运算的指令的图。
[0019] 图7是说明本发明的实施例1的滤波运算装置进行对称滤波运算的动作的图。
[0020] 图8是说明本发明的实施例1的滤波运算装置进行对称滤波运算的动作的图。
[0021] 图9A是说明本发明的实施例1的滤波运算装置进行对称滤波运算的动作的图。
[0022] 图9B是说明本发明的实施例1的滤波运算装置进行对称滤波运算的动作的图。
[0023] 图10是表示本发明的实施例2的滤波运算装置的结构的图。
[0024] 图11是表示本发明的实施例2的数据混洗器的结构的图。
[0025] 图12是说明本发明的实施例2的数据混洗器的动作的图。
[0026] 图13A是说明本发明的实施例2的数据混洗器的动作的图。
[0027] 图13B是说明本发明的实施例2的数据混洗器的动作的图。
[0028] 图13C是说明本发明的实施例2的数据混洗器的动作的图。
[0029] 图14A是说明本发明的实施例2的数据混洗器的动作的图。
[0030] 图14B是说明本发明的实施例2的数据混洗器的动作的图。
[0031] 图15是表示本发明的实施例2的用于使数据混洗器动作的助记忆码和指令码的图。
[0032] 图16是说明本发明的实施例2的滤波运算装置进行对称滤波运算的动作的图。
[0033] 图17是说明本发明的实施例2的滤波运算装置进行对称滤波运算的动作的图。
[0034] 图18是说明本发明的实施例2的滤波运算装置进行抽头数为48的情况下的对称滤波运算的动作的图。
[0035] 图19是说明本发明的实施例2的滤波运算装置进行抽头数为49的情况下的对称滤波运算的动作的图。
[0036] 图20是表示6抽头的一维图像滤波运算的内容的图。
[0037] 图21是表示以往的对称型滤波运算装置的结构的图。

具体实施方式

[0038] (成为本发明的基础的见解)
[0039] 本发明者关于在背景技术部分中记载的以往的对称型滤波运算装置,发现了会产生如下问题。
[0040] 图20是表示6抽头的一维图像滤波运算(滤波运算)的内容的图。p0~p8是连续的9个像素的像素值,k0~k5是用于滤波运算的滤波系数。
[0041] 如图20(a)所示,在6抽头的滤波运算中,针对像素p0~p5分别乘以滤波系数k0~k5,将其结果进行累加得到滤波结果q0。接着,针对错开1像素的像素p1~p6同样地进行滤波运算,从而得到滤波结果q1,对像素p2~p7进行滤波运算就能得到滤波结果q2,对像素p3~p8进行滤波运算就能得到滤波结果q3。这样,通过一边将像素错开1像素一边进行滤波运算,从而能够对图像整体进行滤波运算。
[0042] 此时,在k0和k5相等,且k1和k4相等,且k2和k3相等的情况下,称为滤波系数对称,将这个情况下的滤波运算称为对称型图像滤波运算(对称滤波运算)。在对称滤波运算中,如图20(b)所示,将要乘以相同的滤波系数的像素预先相加之后,与滤波系数相乘,从而能够减少乘法运算的次数,实现处理的高速化。例如,专利文献1中公开了其方法。
[0043] 图21是表示专利文献1中公开的以往的对称型滤波运算装置的结构的图。该图示出的对称型滤波运算装置20,从缓冲器300读出像素,由选择器310选择滤波系数成为对称的像素,在4个滤波运算部321~324(滤波运算部#1~#4)中进行滤波运算。滤波运算部321~324都是相同的构成,各滤波运算部321~324针对由选择器310选择的像素,进行6抽头的对称滤波运算。
[0044] 在各滤波运算部321~324中,如图20(b)所示,先将滤波系数成为对称的像素的像素值相加之后进行乘法运算,再进行累加。通过在4个滤波运算部321~324中同时进行该滤波运算,从而能够得到4个滤波运算结果。
[0045] 然而,所述以往的构成是仅固定地进行对称滤波运算的专用运算器,关于在处理器中进行的情况下的工作和构成没有提及。此外,该装置的构成是专门进行抽头数为6的对称滤波运算的构成,关于抽头数为6以外的对称滤波运算的情况没有进行说明。
[0046] 为了解决课题,本发明的一个实施例涉及的对称型滤波运算装置,使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算,所述对称型滤波运算装置具备:左侧数据串提取部,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取部,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同。
[0047] 据此,从存放在存储部的第一数据串中提取左侧数据串,从存放在存储部的第二数据串中提取右侧数据串。换言之,能够提取将要与相同的滤波系数相乘的成对的数据串。因此,通过提取按照抽头数的成对的该数据串,处理器能够进行与各种抽头数对应的对称滤波运算。
[0048] 此外,例如所述对称型滤波运算装置还具备:加法运算部,将提取的所述左侧数据串和所述右侧数据串相加,算出加法数据串;以及乘法运算部,将算出的所述加法数据串与所述左侧滤波系数或所述右侧滤波系数相乘,算出乘法数据串。
[0049] 据此,将左侧数据串和右侧数据串相加,与左侧滤波系数或右侧滤波系数相乘。换言之,把将要与相同的滤波系数相乘的成对的数据串相加,与该滤波系数相乘。因此,通过进行按照抽头数的该加法运算及乘法运算,处理器能够进行与各种抽头数对应的对称滤波运算。
[0050] 此外,例如所述左侧数据串提取部,从所述存储部读出由连续的第三数据串与第四数据串构成的所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,(a)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第五数据串的末尾的数据的中心,或者(b)从所述存储部读出由连续的第五数据串与第六数据串构成的所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的开头的数据与所述第六数据串的开头的数据的中心。
[0051] 据此,从由连续的第三数据串与第四数据串构成的第一数据串中提取左侧数据串,从由连续的第五数据串与第六数据串构成的第二数据串中提取右侧数据串,以使配置在第三数据串的开头的数据与第五数据串的末尾的数据的中心的数据,成为将要与中心的滤波系数相乘的数据。或者,提取该左侧数据串和右侧数据串,以使配置在第三数据串的开头的数据与第六数据串的开头的数据的中心的数据,成为将要与中心的滤波系数相乘的数据。这样,将第一数据串存放到一方的缓冲器中,将第二数据串存放到另一方的缓冲器中,以从一方的缓冲器提取左侧数据串,从另一方的缓冲器提取右侧数据串的方式,将一部分数据存放到2个缓冲器中,从而提取左侧数据串与右侧数据串,能够进行对称滤波运算。
[0052] 在这里,图21示出的以往的构成是将进行滤波运算时需要的像素的像素值全部存储到缓冲器300,在对称滤波运算的抽头数大的情况下,缓冲器300的大小变大。因此,所述以往的构成会导致这样的课题,在要想与抽头数大的对称滤波运算对应的情况下,就需要增加对称型滤波运算装置20的电路规模。
[0053] 对此,有关根据本发明的对称型滤波运算装置,即使是对称滤波运算的抽头数大的情况下,也将一部分数据分开来存放到2个缓冲器中。因此,无需将对称滤波运算中使用的所有数据存放到缓冲器中,就能进行抽头数大的对称滤波运算,所以处理器能够进行与各种抽头数对应的对称滤波运算。
[0054] 此外,例如所述左侧数据串提取部,提取以位于所述数据中心的左侧的数据为开头的所述左侧数据串,所述右侧数据串提取部,提取以位于所述数据中心的右侧的数据为开头的所述右侧数据串,该右侧的数据是相对于所述数据中心而与所述左侧数据串的开头的数据对称的数据。
[0055] 据此,提取左侧数据串和右侧数据串,以使左侧数据串的开头的数据与右侧数据串的开头的数据,相对于数据中心成为左右对称。这样,能够提取与相同的滤波系数相乘的成对的数据串。因此,通过提取按照抽头数的该成对的数据串,处理器能够进行与各种抽头数对应的对称滤波运算。
[0056] 此外,例如所述第三数据串与所述第四数据串,或者所述第五数据串与所述第六数据串,被存放在所述存储部的连续的区域中,所述左侧数据串提取部,从所述存储部读出所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,从所述存储部读出所述第二数据串,并提取所述右侧数据串。
[0057] 据此,第三数据串及第四数据串,或者第五数据串及第六数据串,存储在连续的编号的寄存器中。这样,用于进行对称滤波运算的指令码单纯,能够削减该指令码的寄存器的比特字段。
[0058] 此外,例如所述左侧数据串提取部,从所述存储部读出由连续的第三数据串与第四数据串构成的所述第一数据串,并提取所述左侧数据串,所述右侧数据串提取部,从所述存储部读出所述第一数据串,以作为所述第二数据串,并提取所述右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是所述第三数据串的中心。
[0059] 这样,从连续的第三数据串与第四数据串构成的第一数据串中提取左侧数据串与右侧数据串,以使配置在第三数据串的中心的数据,成为将要与中心的滤波系数相乘的数据。换言之,能够提取将要与相同的滤波系数相乘的成对的数据串。尤其是在对称滤波运算的抽头数小的情况下,将第一数据串存放到1个缓冲器中,从该1个缓冲器能够提取左侧数据串与右侧数据串,所以处理单纯。因此,能够简单地提取按照抽头数的成对的数据串,处理器能够进行与各种抽头数对应的对称滤波运算。
[0060] 此外,例如将所述第三数据串的开头的数据与所述第三数据串的末尾的数据的中心作为所述数据中心,或者将所述第三数据串的开头的数据与所述第四数据串的开头的数据的中心作为所述数据中心,所述左侧数据串提取部,提取以位于所述数据中心的左侧的数据为开头的所述左侧数据串,所述右侧数据串提取部,提取以位于所述数据中心的右侧的数据为开头的所述右侧数据串,该右侧的数据是相对于所述数据中心而与所述左侧数据串的开头的数据对称的数据。
[0061] 据此,将第一数据串的开头的数据与第一数据串的末尾的数据的中心作为数据中心,或者将第一数据串的开头的数据与第二数据串的开头的数据的中心作为数据中心,以左侧数据串的开头的数据与右侧数据串的开头的数据相对于数据中心成为左右对称的方式,提取左侧数据串与右侧数据串。这样,能够提取将要与相同的滤波系数相乘的成对的数据串。因此,通过提取按照抽头数的该成对的数据串,处理器能够进行与各种抽头数对应的对称滤波运算。
[0062] 此外,本发明,不仅能够作为这样的对称型滤波运算装置来实现,而且能够作为以该对称型滤波运算装置中包含的处理部进行的有特征的处理为步骤的对称型滤波运算方法来实现。此外,能够作为使计算机执行对称型滤波运算方法中包含的有特征的处理的程序或者集成电路来实现。而且,这样的程序能够经由CD-ROM等记录介质以及互联网等传输介质来流通。此外,能够以这些装置、方法、集成电路、计算机程序以及记录介质的任意组合来实现。
[0063] 下面,参考附图来说明本发明的实施方式。另外,下面说明的实施例都是示出本发明优选的一个具体例子。以下的实施例中示出的数值、形状、材料、构成要素、构成要素的配置位置以及连接形式、步骤、步骤的顺序等都是本发明的一个例子,主旨不是限制本发明。并且,以下的实施例的构成要素中,示出本发明的最上位概念的独立权利要求中没有记载的构成要素,可以说明是构成更好的形式的任意的构成要素。
[0064] (实施例1)
[0065] 图1是表示本发明的实施例1的对称型滤波运算装置10(以后称为滤波运算装置10)的结构的图。
[0066] 本滤波运算装置10是使用左右对称的滤波系数来进行存放在存储部的多个数据的滤波运算的装置,其特征在于具备数据混洗(shuffle)器160。另外,下面的说明中存储部是寄存器文件,不过,存储部不限定为寄存器文件。例如可以将数据存储器作为存储部。
[0067] 如该图所示,滤波运算装置10具备指令存储器110、取指令部120、指令解码器130、寄存器文件140、存储器访问部150、数据混洗器160、加法器170、乘法器180、以及数据存储器190。
[0068] 指令存储器110是存放指示滤波运算装置10的动作的指令的存储器。取指令部120,从指令存储器110获得下面执行的指令,将获得的指令输出到指令解码器130。
[0069] 指令解码器130分析取指令部120输出的指令,决定执行指令的运算器,针对存储器访问部150、数据混洗器160、加法器170、以及乘法器180中的任一个输出执行控制信号。
[0070] 存储器访问部150,按照来自指令解码器130的执行控制信号,从数据存储器190获得数据,输出到寄存器文件140,或者从寄存器文件140获得数据,输出到数据存储器190。
[0071] 数据混洗器160从寄存器文件140获得数据并进行数据的调换,将结果输出到加法器170。具体而言,数据混洗器160作为乘以相同的滤波系数的成对的数据串,提取乘以左侧滤波系数的左侧数据串、以及乘以与左侧滤波系数相同值的右侧滤波系数的右侧数据串。
[0072] 另外,在此,数据混洗器160为了进行对称滤波运算而进行数据的调换,不过,数据混洗器160可以以对称滤波运算以外的目的而具有进行数据调换的功能。关于该数据混洗器160的详细构成,在后面说明。
[0073] 加法器170从数据混洗器160获得数据,进行加法运算,将结果输出到寄存器文件140。具体而言,加法器170将由数据混洗器160提取的左侧数据串和右侧数据串相加,算出加法数据串。另外,加法器170具有权利要求书所述的“加法运算部”的功能。
[0074] 另外,上述说明中数据混洗器160和加法器170作为1个处理部,进行数据的调换以及加法运算,不过,也可以是数据混洗器160向寄存器文件140输出调换后的数据,加法器170从寄存器文件140获得该数据进行加法运算。
[0075] 乘法器180从寄存器文件140获得数据进行乘法运算,将结果输出到寄存器文件140。具体而言,乘法器180将加法器170算出的加法数据串与左侧滤波系数或右侧滤波系数相乘,算出乘法数据串。另外,乘法器180具有权利要求书所述的“乘法运算部”的功能。
[0076] 寄存器文件140是保持运算器群内的各运算器输出的数据的寄存器,由64比特的寄存器R0~R31的32个构成。
[0077] 数据存储器190是存放滤波运算装置10的运算中所需的数据的存储器。另外,指令存储器110和数据存储器190,可以分别安装为个别存储器,也可以以共享1个存储器的形式来安装。
[0078] 图2是表示本发明的实施例1的数据混洗器160的结构的图。
[0079] 如该图所示,数据混洗器160,具有2个64比特的输入端口A和B,2个64比特的输出端口Z1和Z2,具备第一数据混洗部161和第二数据混洗部162。另外,从数据混洗器160的输出端口Z1和Z2向加法器170输出输出数据,不过,也可以是将该输出数据输出到寄存器文件140的构成。
[0080] 第一数据混洗部161具有2个64比特的输入端口X1和Y1,而且具有1个64比特的输出端口Z1。第二数据混洗部162具有2个64比特的输入端口X2和Y2,而且具有1个64比特的输出端口Z2。
[0081] 但是,作为数据混洗器160只具有2个64比特的输入端口,所以数据从数据混洗器160的输入端口A输入到第一数据混洗部161的输入端口X1和第二数据混洗部162的输入端口X2。同样,数据从数据混洗器160的输入端口B输入到第一数据混洗部161的输入端口Y1和第二数据混洗部162的输入端口Y2。
[0082] 第一数据混洗部161,按照执行控制信号,通过输入端口X1和Y1读出2个64比特数据,进行字节单位的数据的调换。而且,第一数据混洗部161,在调换数据之后,通过输出端口Z1,输出调换结果的64比特的数据。
[0083] 具体而言,第一数据混洗部161,从寄存器文件140读出作为连续的多个数据的第一数据串,从第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数。加之,具体而言,第一数据混洗部161从寄存器文件140读出由连续的第三数据串与第四数据串所构成的第一数据串,提取该左侧数据串。
[0084] 换言之,第一数据混洗部161,通过输入端口X1读出第三数据串,通过输入端口Y1读出第四数据串。而且,第一数据混洗部161通过输出端口Z1,向加法器170输出左侧数据串。关于该第一数据混洗部161进行的处理的细节,在后面说明。另外,第一数据混洗部161具有权利要求书所述的“左侧数据串提取部”的功能。
[0085] 与第一数据混洗部161同样,第二数据混洗部162按照执行控制信号,通过输入端口X2和Y2读出2个64比特数据,进行字节单位的数据的调换。而且,第二数据混洗部162,在调换数据之后,通过输出端口Z2,输出调换结果的64比特的数据。
[0086] 具体而言,第二数据混洗部162,从寄存器文件140读出作为连续的多个数据的第二数据串,并从第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与左侧滤波系数的值相同。更具体而言,第二数据混洗部162从寄存器文件140读出第一数据串,以作为第二数据串,并提取该右侧数据串,以使配置在作为第三数据串的中心的数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据。
[0087] 换言之,第二数据混洗部162,通过输入端口X2读出第三数据串,通过输入端口Y2读出第四数据串。而且,第二数据混洗部162,通过输出端口Z2向加法器170输出右侧数据串。关于该第二数据混洗部162进行的处理的细节,在后面说明。此外,第二数据混洗部162具有权利要求书所述的“右侧数据串提取部”的功能。
[0088] 下面针对数据混洗器160的动作进行说明。图3A~图3C是说明本发明的实施例1的数据混洗器160的动作的图。具体而言,这些图表示数据混洗器160在对1要素以8比特构成的64比特的数据进行处理的情况下的动作。
[0089] 图3A表示输入到数据混洗器160的数据。如该图所示,由连续的8比特的要素8个构成的64比特数据[a0,a1,a2,a3,a4,a5,a6,a7]和[b0,b1,b2,b3,b4,b5,b6,b7],分别输入到数据混洗器160的输入端口A和B。
[0090] 在这个情况下,如图3B所示,[a0,a1,a2,a3,a4,a5,a6,a7]作为第三数据串,输入到第一数据混洗部161的端口X1和第二数据混洗部162的端口X2。此外,[b0,b1,b2,b3,b4,b5,b6,b7]作为第四数据串,输入到第一数据混洗部161的端口Y1和第二数据混洗部162的端口Y2。
[0091] 而且,在数据被输入时,第一数据混洗部161和第二数据混洗部162按照执行控制信号,进行数据的调换,并输出调换后的数据。该数据的调换按照图3C示出的表来进行。
[0092] 例如,第一数据混洗部161,按照执行控制信号“0”进行数据的调换,作为左侧数据串输出[a0,a1,a2,a3,a4,a5,a6,a7]。此外,第二数据混洗部162,按照执行控制信号“0”进行数据的调换,作为右侧数据串输出[a7,b0,b1,b2,b3,b4,b5,b6]。
[0093] 在这里,在对称滤波运算的抽头数是偶数的情况下,按照图3C示出的“0”~“3”的执行控制信号进行数据的调换,在对称滤波运算的抽头数是奇数的情况下,按照“4”~“7”的执行控制信号进行数据的调换。关于细节在后面说明。
[0094] 图4是示出用于使本发明的实施例1的数据混洗器160以及加法器170动作的助记忆码(mnemonic)和指令码的图。
[0095] 该图的(a-1)以及(a-2)示出将2个输入寄存器Ra,Rb作为输入,将提取的左侧数据串和右侧数据串相加,输出输出寄存器Rc的助记忆码。该图的(a-3)示出将2个输入寄存器Ra,Rb作为输入,将提取的左侧数据串和右侧数据串相加,输出2个输出寄存器Rc与Rc+1的助记忆码。
[0096] 具体而言,如该图的(a-1)所示,在valnadd.8中指令助记忆码的操作数是2个输入寄存器Ra,Rb、输出寄存器Rc、表示数据调换的混洗方式的即值3比特I3。在这里,输出寄存器Rc是将输入寄存器Ra,Rb作为输入,提取左侧数据串和右侧数据串,并将提取的左侧数据串和右侧数据串以8比特单位相加所得到的结果。
[0097] 此外,在左侧数据串的数据要素和右侧数据串的数据要素的相加结果超过8比特的情况下,通过使用该图的(a-2)示出的valnadd.8s,从而进行超过8比特的加法结果的饱和处理,将其结果作为输出寄存器Rc输出。更具体而言,数据要素是8比特的没有加减符号的数据的情况下,加法结果比255大时,在255进行饱和处理。此外,数据要素是8比特的有加减符号的数据的情况下,加法结果比-128小时,在-128进行饱和处理,加法结果比127大时,在127进行饱和处理。
[0098] 此外,该图的(a-3)示出的valnadd.8l中,左侧数据串的数据要素和右侧数据串的数据要素的加法结果扩展为16比特,将结果作为2个输出寄存器Rc,Rc+1来输出。另外,加法结果是16比特的数据要素成为8个128比特的数据串,需要两个输出寄存器。
[0099] 另外,如该图的(b)的valn.8所示,可以将2个输入寄存器Ra,Rb作为输入,将提取的左侧数据串和右侧数据串,作为输出寄存器Rc,Rc+1来输出。在这里,指令助记忆码的操作数是2个输入寄存器Ra,Rb、2个输出寄存器Rc,Rc+1、表示数据调换的混洗方式的即值3比特I3。
[0100] 构成64比特数据的要素的比特宽度以操作码(op code)来显示,本指令的要素宽度是8比特。另外,输出到本混洗运算器的数据混洗器160的执行控制信号成为混洗方式的值本身。
[0101] 本指令码以32比特构成,由示出使数据混洗器160动作的操作码的字段(field),混洗方式的字段,要素宽度的字段,Ra和Rb和Rc的寄存器编号的字段所构成。
[0102] 各字段的比特宽度如下:操作码的字段是12比特,混洗方式的字段是3比特,要素宽度的字段是2比特,Ra、Rb、Rc的寄存器编号的字段分别是5比特。与要素宽度的对应是,0b00为8比特,0b01为16比特,0b10为32比特。在这里,该图的(a-3)与(b)中有2个输出寄存器,不过,为了削减在指令码中的寄存器的比特字段,设置将2个输出寄存器作为Rc和Rc+1,寄存器编号是连续的编号这样的条件。
[0103] 另外,本实施例中,设置了2个输出寄存器的寄存器编号是连续的号码这样的条件,不过,也可以设置2个输入寄存器的寄存器编号是连续的号码这样的条件。此外,因为2个输出寄存器的寄存器编号是连续的号码这样的条件不一定是必需的,所以向指令码进一步追加寄存器编号的字段,取消2个输出寄存器的寄存器编号是连续的号码这样的条件。
[0104] 下面,利用图5~图9来说明使用图4示出的valnadd.8指令,滤波运算装置10进行对称滤波运算的处理。另外,也可能会使用valn.8指令,也可能会产生使用valnadd.8s或valnadd.8l指令的必要性,不过,下面作为一例决定使用valnadd.8指令。
[0105] 图5是表示本发明的实施例1的滤波运算装置10进行对称滤波运算的动作的一例的流程图。图6是表示本发明的实施例1的滤波运算装置10用于进行对称滤波运算的指令的图。图7~9B是说明本发明的实施例1的滤波运算装置10进行对称滤波运算的动作的图。
[0106] 在这里,设滤波运算装置10是针对如图20示出的[p0,p1,p2,p3,p4,p5,p6,p7]的8像素进行对称滤波运算的装置。此外,图6示出的“滤波器抽头数”的栏示出进行对称滤波运算的滤波器的抽头数。“R、R1的输入数据”的栏示出在进行valnadd.8指令之前需要预先输入到寄存器R0,R1中的像素数据。在图6中作为像素数据有p-1,p-2,p-3等数据,p-1表示p0的左邻接的像素,p-2表示p-1的左邻接的像素,p-3表示p-2的左邻接的像素。“指令”的栏表示生成在对称滤波运算中滤波系数相同的成对的数据串,并将成对的数据串相加的valnadd.8指令。
[0107] 作为例子说明滤波运算装置10进行与图20示出的p0~p7的8像素对应的对称6抽头滤波运算,得到滤波运算结果q0~q7的情况。首先,加载指令被发行,在寄存器R0中存放[p-1,p0,p1,p2,p3,p4,p5,p6],在寄存器R1中存放[p7,p8,p9,p10,p11,p12,p13,p14]。
[0108] 而且,如图5所示,第一数据混洗部161,从寄存器文件140读出由连续的第三数据串和第四数据串构成的第一数据串,提取左侧数据串(S102)。
[0109] 具体而言,如图6示出的滤波器抽头数“6”的情况下的指令“valnadd.8R2,R0,R1,1”被发行。这个情况下,第一数据混洗部161,读出由作为第三数据串的寄存器R0的[p-
1,p0,p1,p2,p3,p4,p5,p6]与作为第四数据串的寄存器R1的[p7,p8,p9,p10,p11,p12,p13,p14]构成的第一数据串。而且,第一数据混洗部161,提取作为图3C示出的执行控制信号“1”的情况下的数据输出的[p0,p1,p2,p3,p4,p5,p6,p7],以作为左侧数据串。
[0110] 此外,第二数据混洗部162,从寄存器文件140读出第一数据串,以作为第二数据串,并提取右侧数据串,以使配置在作为第三数据串的中心的数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据(S104)。
[0111] 具体而言,因为“valnadd.8R2,R0,R1,1”的指令被发行,所以第二数据混洗部162,将第一数据串作为第二数据串来读出,该第一数据串由作为第三数据串的寄存器R0的[p-1,p0,p1,p2,p3,p4,p5,p6]与作为第四数据串的寄存器R1的[p7,p8,p9,p10,p11,p12,p13,p14]构成。而且,第二数据混洗部162,提取作为图3C示出的执行控制信号“1”的情况下的数据输出的[p5,p6,p7,p8,p9,p10,p11,p12],以作为右侧数据串。
[0112] 换言之,如图7(a)所示,第二数据混洗部162,提取右侧数据串,以使配置在作为第三数据串[p-1,p0,p1,p2,p3,p4,p5,p6]的中心的数据中心D的数据“p2,p3”,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据。
[0113] 具体而言,在对称滤波运算的抽头数是偶数的情况下,将位于第三数据串的开头的数据“p-1”与第三数据串的末尾的数据“p6”的中心的“p2,p3”作为数据中心D。而且,第一数据混洗部161提取以位于数据中心D(p2,p3)的左侧的数据为开头的左侧数据串[p0,p1,p2,p3,p4,p5,p6,p7]。而且,第二数据混洗部162,提取以位于数据中心D(p2,p3)的右侧的数据为开头的右侧数据串[p5,p6,p7,p8,p9,p10,p11,p12],该右侧的数据是相对于数据中心D而与左侧数据串的开头的数据“p0”对称的数据“p5”。
[0114] 这样,与滤波系数k0相乘的像素数据[p0,p1,p2,p3,p4,p5,p6,p7]以及[p5,p6,p7,p8,p9,p10,p11,p12]被提取。
[0115] 最后,将该2个像素数据相加,算出在寄存器R2存储的[p0+p5,p1+p6,p2+p7,p3+p8,p4+p9,p5+p10,p6+p11,p7+p12](S106)。以上,“valnadd.8R2,R0,R1,1”的指令的动作完成。
[0116] 而且,图6示出的滤波器抽头数“6”的情况下的下一个指令“valnadd.8R3,R0,R1,2”被发行。这个情况下,与“valnadd.8R2,R0,R1,1”的指令的情况相同,第一数据混洗部
161,提取作为图3C示出的执行控制信号“2”的情况下的数据输出的[p1,p2,p3,p4,p5,p6,p7,p8],以作为左侧数据串。此外,第二数据混洗部162作为右侧数据串提取[p4,p5,p6,p7,p8,p9,p10,p11]。
[0117] 换言之,如图7(b)所示,第一数据混洗部161,提取以位于数据中心D(p2,p3)的左侧的数据为开头的左侧数据串[p1,p2,p3,p4,p5,p6,p7,p8]。而且,第二数据混洗部162,提取以位于数据中心D(p2,p3)的右侧的数据为开头的右侧数据串[p4,p5,p6,p7,p8,p9,p10,p11],该右侧的数据是相对于数据中心D而与左侧数据串的开头的数据“p1”对称的数据“p4”。
[0118] 这样,与滤波系数k1相乘的像素数据[p1,p2,p3,p4,p5,p6,p7,p8]以及[p4,p5,p6,p7,p8,p9,p10,p11]被提取。
[0119] 最后,将这2个像素数据相加,算出在寄存器R3存放的[p1+p4,p2+p5,p3+p6,p4+p7,p5+p8,p6+p9,p7+p10,p8+p11](S106)。以上,“valnadd.8R3,R0,R1,2”的指令的动作完成。
[0120] 最后,图6示出的滤波器抽头数“6”的情况下的下一个指令“valnadd.8R4,R0,R1,3”被发行。这个情况下也与其他指令的情况相同,第一数据混洗部161,提取作为图3C示出的执行控制信号“3”的情况下的数据输出的[p2,p3,p4,p5,p6,p7,p8,p9],以作为左侧数据串。此外,第二数据混洗部162,作为右侧数据串提取[p3,p4,p5,p6,p7,p8,p9,p10]。
[0121] 换言之,如图7(c)所示,第一数据混洗部161提取以位于数据中心D的左侧的数据为开头的左侧数据串[p2,p3,p4,p5,p6,p7,p8,p9],第二数据混洗部162,提取以数据“p3”为开头的右侧数据串[p3,p4,p5,p6,p7,p8,p9,p10],该数据“p3”是相对于数据中心D而与左侧数据串的开头的数据“p2”对称的数据。
[0122] 这样,与滤波系数k2相乘的像素数据[p2,p3,p4,p5,p6,p7,p8,p9]以及[p3,p4,p5,p6,p7,p8,p9,p10]被提取。
[0123] 最后,将该2个像素数据相加,算出在寄存器R4存放的[p2+p3,p3+p4,p4+p5,p5+p6,p6+p7,p7+p8,p8+p9,p9+p10](S106)。以上,“valnadd.8R4,R0,R1,3”的指令的动作完成。这样,在对称滤波运算中滤波系数相同的像素数据的成对的提取以及加法运算完成。
[0124] 返回图5,接着乘法器180,将加法器170算出的加法数据串与左侧滤波系数或右侧滤波系数相乘,算出乘法数据串(S108)。另外,左侧滤波系数和右侧滤波系数是相同的值,所以乘法器180将该加法数据串乘以左侧滤波系数,或者该加法数据串乘以右侧滤波系数,都能算出相同的乘法数据串。
[0125] 具体而言,如图8所示,乘法器180,将加法数据串R2乘以滤波系数k0,将加法数据串R3乘以滤波系数k1,将加法数据串R4乘以滤波系数k2。
[0126] 返回图5,滤波运算装置10,通过将乘法器180算出的乘法数据串进行累加,从而输出对称滤波运算的结果(S110)。具体而言,如图8所示,滤波运算装置,将乘法器180算出的3个乘法结果进行累加,从而能够得到滤波运算结果[q0,q1,q2,q3,q4,q5,q6,q7]。
[0127] 这样,如图9A所示,将寄存器R0的内容表示为[r00,r01,r02,r03,r04,r05,r06,r07]时,例如以求出滤波运算结果q0的情况下的滤波系数的对称的中心位置的像素成为r03和r04之间的方式,进行加载存储像素,则能够对应8抽头为止的偶数抽头的对称滤波。
[0128] 此外,在奇数抽头的对称滤波中,如图9B所示,例如可以以求出滤波运算结果q0的情况下的滤波系数的对称的中心位置的像素成为r04(该图示出的数据中心D)的方式,进行加载存储像素。换言之,滤波运算的抽头数是奇数的情况下,将第三数据串的开头的数据“r00”与第四数据串的开头的数据“r08”的中心作为数据中心D。另外,在奇数抽头的情况下,能够以valnadd.8指令来对应针对最大9抽头为止的对称滤波。
[0129] 如上所述,根据本实施例1的滤波运算装置10,从存放在寄存器文件140的第一数据串中提取左侧数据串,从存放在寄存器文件140的第二数据串中提取右侧数据串。换言之,能够提取与相同的滤波系数相乘的成对地数据串。因此,通过提取基于抽头数的成对的该数据串,能够在处理器进行与各种抽头数对应的对称滤波运算。
[0130] 此外,左侧数据串和右侧数据串相加,并且与左侧滤波系数或右侧滤波系数相乘。换言之,与相同的滤波系数相乘的成对的数据串相加,并且与该滤波系数相乘。因此,按照抽头数进行该加法运算以及乘法运算,从而能够在处理器进行与各种抽头数对应的对称滤波运算。
[0131] 此外,从由连续的第三数据串和第四数据串构成的第一数据串中提取左侧数据串和右侧数据串,以使配置在第三数据串的中心的数据,成为与中心的滤波系数相乘的数据。换言之,能够提取与相同的滤波系数相乘的成对的数据串。尤其是对称滤波运算的抽头数小的情况下,将第一数据串存放在1个缓冲器,从该1个缓冲器能够提取左侧数据串和右侧数据串,处理简单。因此,能够简单地提取基于抽头数的成对的数据串,从而能够在处理器进行与各种抽头数对应的对称滤波运算。
[0132] 此外,在滤波运算的抽头数是偶数的情况下,将第一数据串的开头的数据与第一数据串的末尾的数据的数据中心作为中心,在滤波运算的抽头数是奇数的情况下,将第一数据串的开头的数据与第二数据串的开头的数据的中心作为数据中心,以左侧数据串的开头的数据与右侧数据串的开头的数据,相对于数据中心成为左右对称的方式,来提取左侧数据串和右侧数据串。这样,能够提取与相同的滤波系数相乘的成对的数据串。因此,通过提取基于抽头数的成对的该数据串,能够在处理器进行与各种抽头数对应的对称滤波运算。
[0133] (实施例2)
[0134] 图10是表示本发明的实施例2的对称型滤波运算装置11(以后称为滤波运算装置11)的结构的图。本滤波运算装置11的特征是具备数据混洗器200,代替实施例1的滤波运算装置10的数据混洗器160。
[0135] 如该图所示,滤波运算装置11,具备指令存储器110,取指令部120,指令解码器130,寄存器文件140,存储器访问部150,数据混洗器200,加法器170,乘法器180,以及数据存储器190。
[0136] 关于该图,与图1示出的实施例1的滤波运算装置10相同的构成要素采用相同的符号,省略说明。
[0137] 数据混洗器200与实施例1的滤波运算装置10的数据混洗器160相同,从寄存器文件140获得数据进行数据的调换,将结果输出到加法器170。
[0138] 另外,与实施例1相同,数据混洗器200与加法器170作为1个处理部,进行数据调换以及加法运算,不过,也可以是数据混洗器200向寄存器文件140输出调换后的数据,加法器170从寄存器文件140获得该数据进行加法运算。
[0139] 此外,数据混洗器200可以具有以滤波运算以外的目的来调换数据的功能。该数据混洗器200与数据混洗器160的详细的差异,在以后说明。
[0140] 图11是示出数据混洗器200的结构的图。
[0141] 如该图所示,数据混洗器具有4个64比特的输入端口A和B和C和D、2个64比特的输出端口Z1和Z2,具备第一数据混洗部201和第二数据混洗部202。另外,数据混洗器200可以将输入端口A和B合起来作为1个128比特的输入端口,将输入端口C和D合起来作为1个128比特的输入端口。
[0142] 第一数据混洗部201,具有4个64比特的输入端口X10和Y10和X11和Y11,具有1个64比特的输出端口Z1。第二数据混洗部202,具有4个64比特的输入端口X20和Y20和X21和Y21,具有1个64比特的输出端口Z2。另外,与实施例1相同,从数据混洗器200的输出端口Z1和Z2将输出数据输出到加法器170,不过,也可以将该输出数据输出到寄存器140。
[0143] 数据从数据混洗器200的输入端口A输入到第一数据混洗部201的输入端口X10,数据从数据混洗器200的输入端口B输入到第一数据混洗部201的输入端口Y10。相同,数据从数据混洗器200的输入端口C输入到第一数据混洗部201的输入端口X11,数据从输入端口D输入到输入端口Y11。另外,第一数据混洗部201也可以将输入端口X10和Y10合起来作为一个输入端口,输入端口X11和Y11合起来作为1个输入端口。
[0144] 此外,数据从数据混洗器200的输入端口A输入到第二数据混洗部202的输入端口X20,数据从数据混洗器200的输入端口B输入到第二数据混洗部202的输入端口Y20。相同,数据从数据混洗器200的输入端口C输入到第二数据混洗部202的输入端口X21,数据从输入端口D输入到输入端口Y21。另外,第二数据混洗部202将输入端口X20和Y20合起来作为一个输入端口,输入端口X21和Y21合起来作为1个输入端口。
[0145] 第一数据混洗部201,按照执行控制信号,将4个64比特数据通过输入端口X10和Y10和X11和Y11来读出,进行字节单位的数据的调换。而且,第一数据混洗部201,在调换数据之后,通过输出端口Z1,输出调换的结果的64比特的数据。
[0146] 具体而言,第一数据混洗部201,从寄存器文件140读出作为连续的多个数据的第一数据串,从第一数据串中提取与左侧滤波系数相乘的连续的多个数据的左侧数据串,该左侧滤波系数是位于中心的左侧的滤波系数。更具体而言,第一数据混洗部201,从寄存器文件140读出连续的第三数据串与第四数据串构成的第一数据串,提取该左侧数据串。
[0147] 换言之,第一数据混洗部201通过输入端口X10读出第三数据串,通过输入端口Y10读出第四数据串。而且,第一数据混洗部201通过输出端口Z1,将左侧数据串输出到加法器170。在这里,第一数据混洗部201,也使用通过输入端口X11及Y11读出的第二数据串来规定数据中心,从而提取左侧数据串。关于该第一数据混洗部201进行的处理的细节,在后面说明。另外,第一数据混洗部201具有权利要求书所述的“左侧数据串提取部”的功能。
[0148] 与第一数据混洗部201同样,第二数据混洗部202,按照执行控制信号,将4个64比特数据通过输入端口X20和Y20和X21和Y21读出,进行字节单位的数据的调换。而且,第二数据混洗部202,在调换数据之后通过输出端口Z2,输出调换的结果的64比特的数据。
[0149] 具体而言,第二数据混洗部202,从寄存器文件140读出作为连续的多个数据的第二数据串,从第二数据串中提取右侧数据串,该右侧数据串是将要与位于中心的右侧的滤波系数相乘的连续的多个数据,该滤波系数的值与左侧滤波系数的值相同。进一步具体而言,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串与第六数据串构成的第二数据串,提取该右侧数据串,以使配置在数据中心的数据,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心是第三数据串的开头的数据与第六数据串的开头的数据的中心。
[0150] 换言之,第二数据混洗部202,通过输入端口X21读出第五数据串,通过输入端口Y21读出第六数据串。而且,第二数据混洗部202通过输出端口Z2,将右侧数据串输出到加法器170。在这里,第二数据混洗部202,也使用通过输入端口X20及Y20读出的第一数据串来规定数据中心,从而提取右侧数据串。关于该第二数据混洗部202进行的处理的细节,在后面说明。另外,第二数据混洗部202具有权利要求书所述的“右侧数据串提取部”的功能。
[0151] 下面,对数据混洗器200的动作进行说明。本实施例的数据混洗器200与实施例1的数据混洗器160不同,从寄存器文件140读出的寄存器的数量,因执行控制信号而变化。数据混洗器200,在执行控制信号是0~7的情况下,从寄存器文件140读出2个64比特寄存器,是8~15的情况下,从寄存器文件140读出4个64比特寄存器。
[0152] 图12~14B是说明本发明的实施例2的数据混洗器200的动作的图。首先,图12示出在执行控制信号是0~7的情况下,输入到数据混洗器200的数据。
[0153] 如图12所示,执行控制信号是0~7的情况下,1个64比特寄存器的数据[a0,a1,a2,a3,a4,a5,a6,a7]被输入到端口A,另1个64比特寄存器的数据[b0,b1,b2,b3,b4,b5,b6,b7]被输入到端口B。另外,数据不输入到端口C与端口D。
[0154] 这个情况下,如图3B所示,与实施例1的数据混洗器160相同,[a0,a1,a2,a3,a4,a5,a6,a7],被输入到第一数据混洗部201的端口X10和第二数据混洗部202的端口X20。此外,[b0,b1,b2,b3,b4,b5,b6,b7],被输入到第一数据混洗部201的端口Y10和第二数据混洗部202的端口Y20。
[0155] 此外,数据被输入时,第一数据混洗部161和第二数据混洗部162,按照执行控制信号进行数据的调换。与实施例1的数据混洗器160同样,数据的调换按照图3C所示的表来进行。
[0156] 下面,针对执行控制信号是8~15的情况进行说明。图13A是示出执行控制信号是8~15的情况下,被输入到数据混洗器200的数据。
[0157] 如该图所示,在执行控制信号是8~15的情况下,1个64比特寄存器的数据[a0,a1,a2,a3,a4,a5,a6,a7]被输入到端口A,另1个64比特寄存器的数据[b0,b1,b2,b3,b4,b5,b6,b7]被输入到端口B。此外,另1个64比特寄存器的数据[c0,c1,c2,c3,c4,c5,c6,c7]被输入到端口C,另1个64比特寄存器的数据[d0,d1,d2,d3,d4,d5,d6,d7]被输入到端口D。
[0158] 这个情况下,如图13B所示,[a0,a1,a2,a3,a4,a5,a6,a7]被输入到第一数据混洗部201的端口X10,[b0,b1,b2,b3,b4,b5,b6,b7]被输入到第一数据混洗部201的端口Y10。此外,[c0,c1,c2,c3,c4,c5,c6,c7]被输入到第一数据混洗部201的端口X11,[d0,d1,d2,d3,d4,d5,d6,d7]被输入到第一数据混洗部201的端口Y11。
[0159] 此外,[a0,a1,a2,a3,a4,a5,a6,a7]被输入到第二数据混洗部202的端口X20,[b0,b1,b2,b3,b4,b5,b6,b7]被输入到第二数据混洗部202的端口Y20。此外,[c0,c1,c2,c3,c4,c5,c6,c7]被输入到第二数据混洗部202的端口X21,[d0,d1,d2,d3,d4,d5,d6,d7]被输入到第二数据混洗部202的端口Y21。
[0160] 此外,数据被输入时,第一数据混洗部201和第二数据混洗部202,按照执行控制信号进行数据的调换。数据的调换按照图13C示出的表来进行。
[0161] 具体而言,对称滤波运算的抽头数是偶数的情况下,如图14A所示,第一数据混洗部201,例如按照执行控制信号“8”进行数据的调换,作为左侧数据串输出[a0,a1,a2,a3,a4,a5,a6,a7]。此外,第二数据混洗部202按照执行控制信号“8”进行数据的调换,作为右侧数据串输出[c7,d0,d1,d2,d3,d4,d5,d6]。此外,第一数据混洗部201按照执行控制信号“9”,作为左侧数据串输出[a1,a2,a3,a4,a5,a6,a7,b0]。此外,第二数据混洗部202按照执行控制信号“8”,作为右侧数据串输出[c6,c7,d0,d1,d2,d3,d4,d5]。
[0162] 此外,在对称滤波运算的抽头数是奇数的情况下,如图14B所示,第一数据混洗部201,例如按照执行控制信号“16”进行数据的调换,作为左侧数据串输出[a0,a1,a2,a3,a4,a5,a6,a7]。此外,第二数据混洗部202按照执行控制信号“16”进行数据的调换,作为右侧数据串输出[d0,d1,d2,d3,d4,d5,d6,d7]。此外,第一数据混洗部201按照执行控制信号“17”进行数据的调换,作为左侧数据串输出[a1,a2,a3,a4,a5,a6,a7,b0]。此外,第二数据混洗部202按照执行控制信号“16”,作为右侧数据串输出[c7,d0,d1,d2,d3,d4,d5,d6]。
[0163] 这样,在对称滤波运算的抽头数是偶数的情况下,按照如图13C示出的“8”~“15”的执行控制信号进行数据的调换,在对称滤波运算的抽头数是奇数的情况下,按照“16”~“23”的执行控制信号进行数据的调换。
[0164] 图15是表示本发明的实施例2的用于使数据混洗器200以及加算器170动作的助记忆码和指令码的图。另外,关于图4示出的指令助记忆码和指令码,与实施例1的数据混洗器160以及加法器170同样,使数据混洗器200以及加法器170动作,不过,与实施例1的数据混洗器160以及加法器170的动作相同,所以省略说明。
[0165] 图15的(a-1)及(a-2)示出将4个输入寄存器Ra,Ra+1,Rb,Rb+1作为输入,将提取的左侧数据串和右侧数据串相加,输出输出寄存器Rc的助记忆码。该图的(a-3)示出将4个输入寄存器Ra,Ra+1,Rb,Rb+1作为输入,将提取的左侧数据串和右侧数据串相加,输出2个输出寄存器Rc与Rc+1的助记忆码。
[0166] 具体而言,该图的(a-1)所示,在valnpadd.8中,指令助记忆码的操作数是4个输入寄存器Ra,Ra+1,Rb,Rb+1、输出寄存器Rc、表示数据调换的混洗方式的即值3比特I3。在这里,输出寄存器Rc是将输入寄存器Ra,Ra+1,Rb,Rb+1作为输入,提取左侧数据串和右侧数据串,并将提取的左侧数据串和右侧数据串以8比特单位相加所得到的结果。
[0167] 此外,左侧数据串的数据要素和右侧数据串的数据要素的加法结果超过8比特的情况下,通过使用该图的(a-2)示出的valnpadd.8s,进行超过8比特的加法结果的饱和处理,将结果作为输出寄存器Rc来输出。更具体而言,数据要素是8比特的没有加减符号的数据的情况下,加法结果比255大时在255进行饱和处理。此外,数据要素是8比特的有加减符号的数据的情况下,加法结果比-128小时,在-128进行饱和处理,加法结果比127大时在127进行饱和处理。
[0168] 此外,该图的(a-3)示出的valnpadd.8l中,左侧数据串的数据要素和右侧数据串的数据要素的加法结果扩展为16比特,将结果作为输出寄存器Rc,Rc+1来输出。另外,加法结果是16比特的数据要素成为8个128比特的数据串,需要两个输出寄存器。
[0169] 另外,如该图的(b)的valnp.8所示,可以将4个输入寄存器Ra,Ra+1,Rb,Rb+1作为输入,将提取的左侧数据串和右侧数据串,作为输出寄存器Rc,Rc+1来输出。在这里,指令助记忆码的操作数是4个输入寄存器Ra,Ra+1,Rb,Rb+1、2个输出寄存器Rc,Rc+1、表示数据调换的混洗方式的即值3比特I3。
[0170] 此外,为了削减在指令码中的寄存器的比特字段,设置了4个输入寄存器的各2个寄存器的编号是连续的号码这样的条件。换言之,第三数据串以及第四数据串,或者第五数据串以及第六数据串,存放在连续的编号的寄存器中。
[0171] 比外,构成64比特数据的要素的比特宽度以操作码(op code)来表示,本指令的要素宽是8比特。另外,输出到本混洗运算器的数据混洗器200的执行控制信号是混洗方式的值加上8的值。
[0172] 该图示出的指令码以32比特构成,并由以下构成:示出使数据混洗器200动作的操作码的字段、混洗方式的字段、要素宽度的字段、以及Ra和Rb和Rc的寄存器编号的字段。
[0173] 各字段的比特宽度如下:操作码的字段是11比特,混洗方式的字段是4比特,要素宽度的字段是2比特,Ra、Rb、Rc的寄存器编号的字段分别是5比特。在这里,与要素宽度的对应是,0b00为8比特,0b01为16比特,0b10为32比特。
[0174] 另外,本实施例中,寄存器的寄存器编号是连续的号码这样的条件并不是必需的,所以也可以取消寄存器的寄存器编号是连续的号码这样的条件。
[0175] 下面,用图16及图17来说明使用图4示出的valnadd.8指令和图15示出的valnpadd.8指令,滤波运算装置11进行的对称滤波运算的处理。另外,可以使用valnp.8指令,也有可能使用valnpadd.8s或valnpadd.8l指令,不过,以下作为一例决定使用valnpadd.8指令。此外,在使用valnadd.8指令的情况下,如图6所示,与实施例1的滤波运算装置10的处理相同,所以省略说明。
[0176] 图16~图19是说明本发明的实施例2的滤波运算装置11进行对称滤波运算的动作的图。
[0177] 在这里,valnpadd.8指令在由valnadd.8指令不能对应的比9抽头大的对称滤波的情况下使用。因此,首先用图16及图17说明例如滤波运算装置11进行16抽头滤波器的对称滤波的情况。图16以及图17是说明本发明的实施例2的滤波运算装置11进行抽头数为16的情况下的对称滤波运算的动作的图。
[0178] 首先,加载指令被发行,在寄存器R0中存放像素数据[p0,p1,p2,p3,p4,p5,p6,p7],在寄存器R1中存放像素数据[p8,p9,p10,p11,p12,p13,p14,p15],在寄存器R2中存放像素数据[p8,p9,p10,p11,p12,p13,p14,p15],在寄存器R3中存放像素数据[p16,p17,p18,p19,p20,p21,p22,p23]。
[0179] 接着,作为滤波器抽头数“16”的情况下的指令,被发行预先被规定的“valnpadd.8R4,R0,R1,R2,R3,0”的指令。这个情况下,第一数据混洗部201,读出由作为第三数据串的寄存器R0的[p0,p1,p2,p3,p4,p5,p6,p7]与作为第四数据串的寄存器R1的[p8,p9,p10,p11,p12,p13,p14,p15]构成的第一数据串。而且,第一数据混洗部201,提取作为图13C示出的执行控制信号“8”的情况下的数据输出的[p0,p1,p2,p3,p4,p5,p6,p7],以作为左侧数据串(图5的S102)。
[0180] 此外,第二数据混洗部202,读出作为第五数据串的寄存器R2的[p8,p9,p10,p11,p12,p13,p14,p15]与作为第六数据串的寄存器R3的[p16,p17,p18,p19,p20,p21,p22,p23]构成的第二数据串。而且,第二数据混洗部202,提取作为图13C示出的执行控制信号“8”的情况下的数据输出的[p15,p16,p17,p18,p19,p20,p21,p22],以作为右侧数据串(图5的S104)。
[0181] 换言之,如图16(a)所示,第二数据混洗部202,在滤波运算的抽头数是偶数的情况下,从寄存器文件140读出由连续的第五数据串和第六数据串构成的第二数据串,提取该右侧数据串,以使配置在数据中心D的数据“p7,p8”,成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据,所述数据中心D是第三数据串的开头的数据“p0”与第五数据串的末尾的数据“p15”的中心。
[0182] 具体而言,第一数据混洗部201,提取以位于数据中心D(p7,p8)的左侧的数据“p0”为开头的左侧数据串[p0,p1,p2,p3,p4,p5,p6,p7]。此外,第二数据混洗部202,提取以位于数据中心D(p7,p8)的右侧的数据为开头的右侧数据串[p15,p16,p17,p18,p19,p20,p21,p22],该右侧的数据是相对于数据中心D而与左侧数据串的开头的数据“p0”对称的数据“p15”。
[0183] 这样,与滤波系数k0相乘的像素数据[p0,p1,p2,p3,p4,p5,p6,p7]以及[p15,p16,p17,p18,p19,p20,p21,p22]被提取。
[0184] 最后,将提取的2个像素数据相加,算出存放到寄存器R4的[p0+p15,p1+p16,p2+p17,p3+p18,p4+p19,p5+p20,p6+p21,p7+p22]。以上,“valnpadd.8R4,R0,R1,R2,R3,0”的指令的动作完成。
[0185] 接着,作为在滤波器抽头数是“16”的情况下的下一个指令,被发行预先规定的“valnpadd.8R5,R0,R1,R2,R3,1”的指令。这个情况下,第一数据混洗部201读出第一数据串,提取作为图13C示出的执行控制信号“9”的情况下的数据输出的[p1,p2,p3,p4,p5,p6,p7,p8],以作为左侧数据串。此外,第二数据混洗部202读出第二数据串,提取作为图13C示出的执行控制信号“9”的情况下的数据输出的[p14,p15,p16,p17,p18,p19,p20,p21],以作为右侧数据串。
[0186] 换言之,如图16(b)所示,第二数据混洗部202提取以位于数据中心D(p7,p8)的左侧的数据“p1”为开头的左侧数据串[p1,p2,p3,p4,p5,p6,p7,p8]。而且,第二数据混洗部202,提取以位于数据中心D(p7,p8)的右侧的数据为开头的右侧数据串[p14,p15,p16,p17,p18,p19,p20,p21],所述右侧的数据是相对于数据中心D而与左侧数据串的开头的数据“p1”对称的数据“p14”。
[0187] 这样,与滤波系数k1相乘的像素数据[p1,p2,p3,p4,p5,p6,p7,p8]以及[p14,p15,p16,p17,p18,p19,p20,p21]被提取。
[0188] 最后,将该提取的2个像素数据相加,算出在R5存放的[p1+p14,p2+p15,p3+p16,p4+p17,p5+p18,p6+p19,p7+p20,p8+p21]。以上,“valnpadd.8R5,R0,R1,R2,R3,1”的指令的动作完成。
[0189] 而且,同样,接着“valnpadd.8R6,R0,R1,R2,R3,2”的指令被发行,第一数据混洗部201提取[p2,p3,p4,p5,p6,p7,p8,p9],以作为左侧数据串。此外,第二数据混洗部202提取[p13,p14,p15,p16,p17,p18,p19,p20],以作为右侧数据串。这样,与滤波系数k2相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R6。
[0190] 接着,“valnpadd.8R7,R0,R1,R2,R3,3”的指令被发行,第一数据混洗部201提取[p3,p4,p5,p6,p7,p8,p9,p10],以作为左侧数据串。此外,第二数据混洗部202提取[p12,p13,p14,p15,p16,p17,p18,p19],以作为右侧数据串。这样,与滤波系数k3相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R7。
[0191] 接着,“valnpadd.8R8,R0,R1,R2,R3,4”的指令被发行,第一数据混洗部201提取[p4,p5,p6,p7,p8,p9,p10,p11],以作为左侧数据串。此外,第二数据混洗部202提取[p11,p12,p13,p14,p15,p16,p17,p18],以作为右侧数据串。这样,与滤波系数k4相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R8。
[0192] 接着,“valnpadd.8R9,R0,R1,R2,R3,5”的指令被发行,第一数据混洗部201提取[p5,p6,p7,p8,p9,p10,p11,p12],以作为左侧数据串。此外,第二数据混洗部202提取[p10,p11,p12,p13,p14,p15,p16,p17],以作为右侧数据串。这样,与滤波系数k5相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R9。
[0193] 接着,“valnpadd.8R10,R0,R1,R2,R3,6”的指令被发行,第一数据混洗部201提取[p6,p7,p8,p9,p10,p11,p12,p13],以作为左侧数据串。此外,第二数据混洗部202提取[p9,p10,p11,p12,p13,p14,p15,p16],以作为右侧数据串。这样,与滤波系数k6相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R10。
[0194] 接着,“valnpadd.8R11,R0,R1,R2,R3,7”的指令被发行,第一数据混洗部201提取[p7,p8,p9,p10,p11,p12,p13,p14],以作为左侧数据串。此外,第二数据混洗部202提取[p8,p9,p10,p11,p12,p13,p14,p15],以作为右侧数据串。这样,与滤波系数k7相乘的2个像素数据被提取。最后,将该提取的2个像素数据相加,将加法结果存放到寄存器R11。
[0195] 这样,完成在对称滤波运算中的滤波系数相同的数据的成对的提取以及加法运算。
[0196] 接着,乘法器180,将加法器170算出的加法数据串与左侧滤波系数或右侧滤波系数相乘,算出乘法数据串(图5的S108)。另外,左侧滤波系数和右侧滤波系数是相同的值,所以乘法器180将该加法数据串乘以左侧滤波系数,或是该加法数据串乘以右侧滤波系数,都能算出相同的乘法数据串。
[0197] 具体而言,如图17所示,乘法器180,将加法数据串R4与滤波系数k0相乘,将加法数据串R5与滤波系数k1相乘,将加法数据串R6与滤波系数k2相乘,将加法数据串R7与滤波系数k3相乘,将加法数据串R8与滤波系数k4相乘,将加法数据串R9与滤波系数k5相乘,将加法数据串R10与滤波系数k6相乘,将加法数据串R11与滤波系数k7相乘。
[0198] 而且,滤波运算装置10通过将乘法器180算出的乘法数据串累加,从而输出对称滤波运算的结果(图5的S110)。具体而言,如图17所示,滤波运算装置10通过将乘法器180算出的8个乘法结果累加,从而能够获得滤波运算结果[q0,q1,q2,q3,q4,q5,q6,q7]。
[0199] 这样,在滤波运算的抽头数是偶数的情况下,将寄存器R0的内容表示为[r00,r01,r02,r03,r04,r05,r06,r07],寄存器R2的内容表示为[r20,r21,r22,r23,r24,r25,r26,r27]时,例如以在求出滤波运算结果q0的情况下的滤波系数的对称的中心位置成为对称的位置的像素,存储到R0和R2的方式进行加载,从而即使是滤波器抽头数再大的对称滤波,都能够对应。
[0200] 另外,除了向R0和R2的加载之外还需进行以下:在R1加载R0中存放的像素数据的右连续数据,在R3加载R2中存放的图像数据的右连续数据。即使在滤波器的抽头数很大导致进行滤波运算时需要的像素无法全部进入R0,R1,R2,R3的4个中的情况,也以同样的顺序,一边将相对于滤波系数的对称的中心位置成为对称的位置的像素,按顺序加载到寄存器中,一边发行valnpadd.8指令,就能够对应。
[0201] 下面,详细地说明在抽头数是偶数且是大的值的情况下,滤波运算装置11进行的对称滤波运算。图18是说明本发明的实施例2的滤波运算装置11进行抽头数为48的情况下的对称滤波运算的动作的图。
[0202] 如该图所示,在滤波运算的抽头数是偶数48的情况下,滤波运算装置11针对配置在第三数据串的开头的数据与第五数据串的末尾的数据的中心的数据(数据串RC的末尾的数据和数据串RD的开头的数据),提取左侧数据串及右侧数据串,该左侧数据串及右侧数据串是以左右对称的数据为开头的2个数据串。另外,滤波运算的抽头数是偶数,所以数据按照图13C示出的“8”~“15”的执行控制信号被提取。
[0203] 具体而言,滤波运算装置11,分为图18(a)、(b)、(c)的3阶段来提取左侧数据串及右侧数据串,进行对称滤波运算。
[0204] 首先该图的(a)中,第一数据混洗部201,从寄存器文件140读出由连续的第三数据串RA和与第四数据串RB构成的第一数据串,提取以位于数据中心的左侧的数据为开头的左侧数据串。例如,第一数据混洗部201提取以第三数据串RA的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0205] 此外,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串RF与第六数据串RG构成的第二数据串,提取右侧数据串,以使配置在所述的中心的数据(数据串RC的末尾的数据与数据串RD的开头的数据),成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据。
[0206] 具体而言,第二数据混洗部202,提取以位于数据中心的右侧的数据为开头的右侧数据串,该右侧的数据是相对于数据中心而与左侧数据串的开头的数据对称的数据。例如,第二数据混洗部202提取以第五数据串RF的末尾的数据“c7”为开头的右侧数据串[c7,d0,d1,d2,d3,d4,d5,d6]。
[0207] 而且,同样,第一数据混洗部201提取左侧数据串[a1,a2,a3,a4,a5,a6,a7,b0],第二数据混洗部202提取右侧数据串[c6,c7,d0,d1,d2,d3,d4,d5]。而且,以相同方式依次提取数据,最后,第一数据混洗部201提取左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6],第二数据混洗部202提取右侧数据串[c0,c1,c2,c3,c4,c5,c6,c7]。
[0208] 下面,在该图的(b)中,第一数据混洗部201,从寄存器文件140读出由连续的第三数据串RB与第四数据串RC构成的第一数据串,提取例如以第三数据串RB的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0209] 此外,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串RE与第六数据串RF构成的第二数据串,提取例如以第五数据串RE的末尾的数据“c7”为开头的右侧数据串[c7,d0,d1,d2,d3,d4,d5,d6]。
[0210] 而且,同样,第一数据混洗部201直到左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6]为止进行提取,第二数据混洗部202直到右侧数据串[c0,c1,c2,c3,c4,c5,c6,c7]为止进行提取。
[0211] 接着,在该图的(c)中,第一数据混洗部201从寄存器文件140读出由连续的第三数据串RC与第四数据串RD构成的第一数据串,提取例如以第三数据串RC的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0212] 此外,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串RD与第六数据串RE构成的第二数据串,提取例如以第五数据串RD的末尾的数据“c7”为开头的右侧数据串[c7,d0,d1,d2,d3,d4,d5,d6]。
[0213] 而且,同样,第一数据混洗部201直到左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6]为止进行提取,第二数据混洗部202直到右侧数据串[c0,c1,c2,c3,c4,c5,c6,c7]为止进行提取。
[0214] 如上所述,所有成对的数据串被提取,所以被提取的成对数据串相加,与滤波系数相乘,并且进行累加。
[0215] 下面,详细地说明抽头数是奇数且是大的值的情况下,滤波运算装置11进行的对称滤波运算。图19是说明本发明的实施例2的滤波运算装置11进行抽头数为49的情况下的对称滤波运算的动作的图。
[0216] 如该图所示,滤波运算的抽头数是奇数49的情况下,滤波运算装置11提取左侧数据串及右侧数据串,该左侧数据串及右侧数据串是以相对于配置在第三数据串的开头的数据与第六数据串的开头的数据的中心的数据(数据串RD的开头的数据)而左右对称的数据为开头的2个数据串。另外,滤波运算的抽头数是奇数,所以数据按照图13C示出的“16”~“23”的执行控制信号被提取。
[0217] 具体而言,滤波运算装置11,分为图18(a)、(b)、(c)的3阶段来提取左侧数据串及右侧数据串,进行对称滤波运算。
[0218] 首先该图的(a)中,第一数据混洗部201,从寄存器文件140读出由连续的第三数据串RA与第四数据串RB构成的第一数据串,提取以位于数据中心的左侧的数据为开头的左侧数据串。例如,第一数据混洗部201提取以第三数据串RA的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0219] 此外,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串RF与第六数据串RG构成的第二数据串,并提取右侧数据串,以使配置在上述的中心的数据(数据串RD的开头的数据),成为将要与左右对称的滤波系数的中心的滤波系数相乘的数据。
[0220] 具体而言,第二数据混洗部202,提取以位于数据中心的右侧的数据为开头的右侧数据串,该右侧的数据是相对于数据中心而与左侧数据串的开头的数据对称的数据。例如,第二数据混洗部202提取第五数据串RG的开头的数据“d0”为开头的右侧数据串[d0,d1,d2,d3,d4,d5,d6,d7]。
[0221] 而且,同样,第一数据混洗部201提取左侧数据串[a1,a2,a3,a4,a5,a6,a7,b0],第二数据混洗部202提取右侧数据串[c7,d0,d1,d2,d3,d4,d5,d6]。而且,以相同方式依次提取数据,最后,第一数据混洗部201提取左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6],第二数据混洗部202提取右侧数据串[c1,c2,c3,c4,c5,c6,c7,d0]。
[0222] 下面,在该图的(b)中,第一数据混洗部201,从寄存器文件140读出由连续的第三数据串RB与第四数据串RC构成的第一数据串,提取例如以第三数据串RB的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0223] 此外,第二数据混洗部202,从寄存器文件140读出由连续的第五数据串RE与第六数据串RF构成的第二数据串,提取例如以第六数据串RF的开头的数据“d0”为开头的右侧数据串[d0,d1,d2,d3,d4,d5,d6,d7]。
[0224] 而且,同样,第一数据混洗部201直到左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6]为止进行提取,第二数据混洗部202直到右侧数据串[c1,c2,c3,c4,c5,c6,c7,d0]为止进行提取。
[0225] 下面,在该图的(c)中,第一数据混洗部201,从寄存器文件140读出由连续的第三数据串RC与第四数据串RD构成的第一数据串,例如,提取以第三数据串RC的数据“a0”为开头的左侧数据串[a0,a1,a2,a3,a4,a5,a6,a7]。
[0226] 此外,第二数据混洗部202从寄存器文件140读出由连续的第五数据串RD与第六数据串RE所构成的第二数据串,提取例如以第六数据串RE的开头的数据“d0”为开头的右侧数据串[d0,d1,d2,d3,d4,d5,d6,d7]。
[0227] 而且,同样,第一数据混洗部201直到左侧数据串[a7,b0,b1,b2,b3,b4,b5,b6]为止进行提取,第二数据混洗部202直到右侧数据串[c1,c2,c3,c4,c5,c6,c7,d0]为止进行提取。此外,第一数据混洗部201提取将要与中心的滤波系数相乘的数据串[b0,b1,b2,b3,b4,b5,b6,b7]。
[0228] 如上所述,所有成对的数据串被提取,所以被提取的成对数据串相加,与滤波系数相乘,并且进行累加。
[0229] 如上所述,根据本实施例2的滤波运算装置11,在滤波运算的抽头数是偶数的情况下,从第一数据串中提取由连续的第三数据串与第四数据串构成的左侧数据串,从第二数据串中提取由连续的第五数据串与第六数据串构成的右侧数据串,以使配置在第三数据串的开头的数据与第五数据串的末尾的数据的中心的数据成为将要与中心的滤波系数相乘的数据。此外,在滤波运算的抽头数是奇数的情况下,提取该左侧数据串和右侧数据串,以使配置在第三数据串的开头的数据与第六数据串的开头的数据的中心的数据成为将要与中心的滤波系数相乘的数据。
[0230] 这样,将第一数据串存放在一方的缓冲器,将第二数据串存放在另一方的缓冲器,从一方的缓冲器提取左侧数据串,从另一方的缓冲器提取右侧数据串的方式,将一部分的数据存放在2个缓冲器,从而,能够提取左侧数据串和右侧数据串,进行对称滤波运算。
[0231] 换言之,即使是对称滤波运算的抽头数大的情况下,将一部分数据分开存放到2个缓冲器。因此,不需要将用于对称滤波运算的所有的数据存储到缓冲器,就能够进行抽头数大的对称滤波运算,所以处理器能够进行与各种抽头数对应的对称滤波运算。另外,在本实施例中的说明中缓冲器是由多个寄存器构成的,不过可以不限于寄存器。例如可以将数据存储器的一部分的区域作为缓冲器。
[0232] 此外,以左侧数据串的开头的数据与右侧数据串的开头的数据相对于数据中心成为左右对称的方式,提取左侧数据串和右侧数据串。这样,能够提取与相同的滤波系数相乘的成对的数据串。因此,通过提取按照抽头数的该成对的数据串,从而处理器能够进行与各种抽头数对应的对称滤波运算。
[0233] 此外,第三数据串以及第四数据串,或第五数据串以及第六数据串,存放在连续的编号的寄存器。这样,用于进行对称滤波运算的指令码变得单纯,能够削减在该指令码中的寄存器的比特字段。
[0234] 此外,在所述各个实施例中,各构成要素可以由专用的硬件来构成,也可以通过执行适合各构成要素的软件程序来实现。例如,各构成要素可以由CPU或处理器等程序执行部,读出并执行硬盘或半导体存储器等记录介质中记录的软件程序来实现。
[0235] 换言之,图1或图10示出的对称型滤波运算装置的各构成要素,可以根据软件来实现。而且实现所述各个实施例的对称型滤波运算装置的软件是使计算机执行如下的对称型滤波运算方法中包含的步骤的程序。即该对称型滤波运算方法是使用左右对称的滤波系数,进行存放在存储部的多个数据的滤波运算的方法,所述对称型滤波运算方法包括:左侧数据串提取步骤,从所述存储部读出作为连续的多个数据的第一数据串,并从所述第一数据串中提取左侧数据串,该左侧数据串是将要与左侧滤波系数相乘的连续的多个数据,该左侧滤波系数是位于中心的左侧的滤波系数;以及右侧数据串提取步骤,从所述存储部读出作为连续的多个数据的第二数据串,并从所述第二数据串中提取右侧数据串,该右侧数据串是将要与右侧滤波系数相乘的连续的多个数据,该右侧滤波系数是位于中心的右侧的滤波系数,且该右侧滤波系数的值与所述左侧滤波系数的值相同。
[0236] 还有,这样的程序经由CD-ROM等记录介质以及互联网等传输介质流通。
[0237] 此外,本发明还能够作为具备这样的对称型滤波运算装置具有的有特征的处理部的集成电路(LSI)来实现。这些可以将每一个制成一个芯片,也可以将一部分或者全部制成一个芯片。具体而言,例如,图1或图10示出的对称型滤波运算装置具备的功能块中,除去存储器的部分的全部可以制成一个芯片。
[0238] 在此,虽然例示了LSI,不过根据集成度的不同,也可以称为IC、系统LSI、超级LSI、极超级LSI。
[0239] 还有,集成电路化的方法不局限于LSI,也可以用专用电路或者通用处理器来实现。也可以利用在LSI制造之后可编程的现场可编程门阵列(FPGA∶Field Programmable Gate Array)或可动态地重构LSI内部的电路单元的连接和设定的可重构处理器。
[0240] 而且,随着半导体技术的进步或派生出的其他的技术,若出现了能够取代LSI的集成电路化的技术,当然也可以利用这些技术来对功能块进行集成化。有可能适用生物技术等。
[0241] 以上,针对本发明的滤波运算装置,根据上述实施例来进行了说明,不过,本发明不是被这些实施例所限制的。
[0242] 在此公开的实施例的全部都是例示,应当认为并不是加以限制的内容。本发明的范围通过权利要求书而表示,并不是由上述的说明来表示,本发明的范围包括与权利要求书均等的意思以及在范围内的所有变更。
[0243] 例如,所述实施例1以及实施例2中,说明了像素数据为8比特的情况,不过也可以是8比特以外的情况。此外,上述实施例中说明了1个寄存器中存放8像素数据的情况,不过,也可以是8像素以外的情况。如实施例1以及2中记载,只要预先将滤波系数的对称的中心位置上的像素存放在寄存器内的规定的位置中,则存放在1个寄存器的像素数是8以外的情况也能对应。
[0244] 此外,在所述实施例1以及实施例2中,滤波运算装置进行像素数据的对称滤波运算,不过,进行对称滤波运算的数据不限定为像素数据,可以是声音数据等图像数据以外的数据。
[0245] 此外,在所述实施例1以及实施例2中,用于进行对称滤波运算的指令的助记忆码,将2个连续的编号的寄存器表示为“Rc∶Rc+1”、“Ra,Ra+1”、“Rb,Rb+1”,不过,也可以赋予其他名字来表示。例如,对2个连续的编号的寄存器赋予1个寄存器X和其他名字时,32个64比特的寄存器R0~R31能够表示为16个128比特的寄存器X0~X15。这个情况下,“Rc∶Rc+1”能表示为“Xc”、“Ra,Ra+1”能表示为“Xa”、“Rb,Rb+1”能表示为“Xb”。
[0246] 此外,在所述实施例2中,将valnpadd.8指令用于实施例1的valnadd.8指令不能对应的比9抽头还大的对称滤波的情况。然而,valnpadd.8指令也能够在9抽头以下的对称滤波的情况中使用,所以在所述实施例2,可以不管抽头数都使用valnpadd.8指令。
[0247] 本发明的对称型滤波运算装置,在进行对称型滤波运算处理时有用。图像数据的滤波运算是图像处理的基本运算之一,本发明能够利用于进行图像处理的各种设备。例如,可用于电视机、数字视频录像机、车辆导航系统、移动电话、数字照相机、以及数字摄像机等的信息显示设备和摄像设备。
[0248] 符号说明
[0249] 10,11,20 滤波运算装置(对称型滤波运算装置)
[0250] 110 命令存储器
[0251] 120 取命令部
[0252] 130 命令解码器
[0253] 140 寄存器文件
[0254] 150 存储器访问部
[0255] 160 数据混洗器
[0256] 161 第一数据混洗部
[0257] 162 第二数据混洗部
[0258] 170 加法器
[0259] 180 乘法器
[0260] 190 数据存储器
[0261] 200 数据混洗器
[0262] 201 第一数据混洗部
[0263] 202 第二数据混洗部
[0264] 300 缓冲器
[0265] 310 选择器
[0266] 321~324 滤波运算部