用于执行像素平均指令的方法和装置的制作方法

文档序号:6403732阅读:196来源:国知局
专利名称:用于执行像素平均指令的方法和装置的制作方法
背景技术
许多图像和视频处理技术包括对若干像素值进行平均的操作。这些像素平均操作可以被用于例如滤波和图像估计。可以对若干相邻像素的像素值进行平均。也可以对在不同时间,例如在多个帧之间的与同一像素相对应的像素值进行平均。这些平均操作可能是计算密集型的。
为了支持与进行大量平均操作相关联的计算负载和数据吞吐量的需求,被用于图像和视频处理的处理器可以引入SIMD(单指令/多数据)操作。在SIMD操作中,单个指令被发送到对不同数据进行相同操作的若干处理单元。
在一些图像处理算法中所使用的一种SIMD操作是四像素平均操作。被用于产生平均值的SIMD算术逻辑单元(ALU)可以同时对四组像素进行四个加法和平均操作,以产生四个8位像素平均值。可以使用40位SIMD加法器来对8位值执行这种指令。40位SIMD加法器对每个字节包括两个名义位(dummy bit)。一个名义位控制来自加法操作的进位的阻断和传播,另一个名义位控制移位操作。移位操作可能只在四像素平均操作中进行,而其他利用SIMD加法器的指令可能只需要36位加法器。40位SIMD加法器会具有比36位加法器更大的布局,并要求另外的结构来适应额外的名义位,占据了有限的芯片面积而只是为了适应一个指令。


图1是根据一个实施例的用于执行四像素平均SIMD(单指令/多数据)操作的功能单元的框图。
图2是图示了根据一个实施例的SIMD加法器的位的位置的框图。
图3是图示了根据一个实施例的四像素平均操作的操作流程的框图。
具体实施例方式
图1图示了根据一个实施例的用于执行四像素平均SIMD(单指令/多数据)指令的功能单元100。功能单元100可以被实现在处理器中,用于图像和/或视频处理,处理器例如是通用处理器、数据信号处理器(DSP)或者专用集成电路(ASIC)处理器。
可以对四个相邻的像素和/或在不同时刻,例如多个帧之间的同一像素的像素值执行四像素平均(FPA)SIMD指令。FPA SIMD指令可以将像素值(操作数)作为紧缩的8位(字节)值处理。
可以使用如下格式实现FPA指令FPA<H,L>{R}wRd wRn wRm,其中,H、L和R是限定符,wRd和wRn是紧缩操作数,wRd是目标寄存器102。限定符H指示结果要被放到目标寄存器(wRd)102的高位字节103中,限定符L指示结果要被放到目标寄存器102的低位字节104中,R是舍入值(rounding value),可以被设置成值是210(102)。wRm、wRn和wRd的值可以被看待为是无符号的、紧缩的8位数据,并且FPA SIMD指令的结果可以写为无符号的、紧缩的8位格式。
可以如下执行四像素平均操作如果(规定了H)则wRd[字节7]=(wRn[字节4]+wRm[字节4]+wRn[字节3]+wRm[字节3]+舍入值)>>2wRd[字节6]=(wRn[字节3]+wRm[字节3]+wRn[字节2]+wRm[字节2]+舍入值]>>2wRd[字节5]=(wRn[字节2]+wRm[字节2+wRn[字节1]+wRm[字节1]+舍入值]>>2wRd[字节4]=(wRn[字节1]+wRm[字节1]+wRn[字节0]+wRm[字节0]+舍入值)>>2wRd[字节3]=0wRd[字节2]=0wRd[字节1]=0
wRd[字节0]=0否则如果(规定了L)则wRd[字节7]=0wRd[字节6]=0wRd[字节5]=0wRd[字节4]=0wRd[字节3]=(wRn[字节4]+wRm[字节4]+wRn[字节3]+wRm[字节3]+舍入值)>>2wRd[字节2]=(wRn[字节3]+wRm[字节3]+wRn[字节2]+wRm[字节2]+舍入值)>>2wRd[字节1]=(wRn[字节2]+wRm[字节2]+wRn[字节1]+wRm[字节1]+舍入值)>>2wRd[字节0]=(wRn[字节1]+wRm[字节1]+wRn[字节0]+wRm[字节0]+舍入值)>>2其中,“>>2”指示加法操作的结果被右移两位。
一组五个操作数,即wRn[字节0]到wRn[字节4],被存储在wRn寄存器105中。另一组五个操作数,即wRm[字节0]到wRm[字节4],被存储在wRm寄存器106中。压缩器级108包括包括四个“5到2”压缩器110~113。压缩器110~113的每个将五个向量,即四个操作数和一个舍入值,压缩为两个向量。例如,压缩器110接收向量wRn[字节4]、wRm[字节4]、wRn[字节3]、wRm[字节3]和舍入值(R=210),并产生和向量(S)和进位向量(C)。由压缩器110所产生的和向量与进位向量可以连同由其他压缩器111~113所产生的和向量与进位向量一起被传到36位SIMD(单指令/多数据)加法器114。
SIMD加法器114对来自不同压缩器110~113的各个和向量与进位向量分别进行操作,以产生四个8位像素平均值的结果。SIMD加法器114可以是36位宽的,包括对于四个字节单元206~209中的每一个的名义位202~205,如图2所示。名义位阻断或者传播来自由SIDM加法器进行的加法操作的进位。36位SIMD加法器还可以被其他指令使用,并可以对紧缩的8位、紧缩的半字(16位)和紧缩的字(32位)操作数进行操作。
响应于选择信号118,从SIMD加法器114所输出的字节单元206~209中的结果通过多路选择器116被引向目标寄存器102中的适当的字节单元。如果选择了H,则四个像素平均值被放到高位字节位置103(wRd[字节4]...wRd[字节7])中。否则,四个像素平均值被放到低位字节位置104(wRd[字节0]...wRd[字节3])中。
如上所述,FPA指令对于i等于从1到4,将四个像素值相加wRm[字节i]+wRn[字节i]+wRm[字节(i-1)]+wRn[字节(i-1)],然后通过将和除以四产生平均值。在二进制除法中,可以通过加舍入值210(102)并将结果右移两位来完成一个数除以四的除法。结果的两位最低有效位(LSB)被丢弃。
通常,压缩器将和向量与进位向量传给执行加法操作和移位操作两者的SIMD ALU。图3图示了由5到2压缩器110~113所执行的用于产生和向量(S)和进位向量(C)的操作流程,其中和向量(S)和进位向量(C)可以被SIMD加法器114相加,以直接产生像素平均值结果,即,不需要移位操作。
5到2压缩器110~113的每个可以包括三级“3到2”压缩器第一进位移位加法器(CSA)级302、第二CSA级304和第三CSA级306。3到2压缩器各自将三个向量压缩为一个和向量与一个进位向量。不同的5到2压缩器110~113的操作类似,但是是对不同的像素值。考虑5到2压缩器110,它紧缩操作数wRm[字节4]、wRn[字节4]、wRm[字节3]、wRn[字节3]和舍入向量(rounding vector)R。在该情况中,wRm<0>...<7>对应于wRm[字节3]的位,wRn<0>...<7>对应于wRn[字节3]的位,wRm<8>...<15>对应于wRm[字节4]的位,wRn<8>...<15>对应于wRn[字节4]的位。在第一CSA级302中,wRm[字节3]、wRn[字节3]和wRm[字节4]被压缩成具有位S0<0>...S0<7>的和向量S0以及具有位C0<0>...C0<7>的进位向量C0。在第二级中,wRn[字节4]、S0和舍入向量210(x<1>x<0>=102)被压缩成具有位S1<0>...S1<7>的和向量S1以及具有位C1<0>...C1<7>的进位向量C1。第三级中,向量C0、S1和C1被压缩成具有位S2<0>...S2<7>的和向量S2以及具有位C2<0>...C2<7>的进位向量。
如上所述,(wRn[字节4]+wRm[字节4]+wRn[字节3]+wRm[字节3]+舍入)的结果的最低两位LSB在移位操作(>>2)中被丢弃。来自这两位LSB的唯一有用的数据是进位输出C2<0>。由于操作300的第三级304中的三个输入向量C0、S1和C1的LSB分别是0、S1<0>和0,因此进位输出C2<0>等于0。
在传统的实施方式中,10位的值{0 S2<8>...S<0>}和{C2<8>C2<7>...C2<0>0}被送入到在40位SIMD ALU中的10位加法器中,然后结果被右移两位。由于来自最末两位的进位输出C2<0>是0,并且来自加法器的结果的最末两位不管怎样都是被丢弃的,所以只需要8位的值{0S2<8>...S<2>}和{C2<8>C2<7>...C2<1>}。这些8位的值可以被36位SIMD加法器114中的8位加法器相加。由加法器114所执行的加法操作的结果不需要被右移两位。因而,36位SIMD加法器直接在一个(加法)操作中生成了FPA指令的四像素平均值,并且该加法器不需要执行移位操作。
可以被用于执行FPA指令的40位SIMD ALU包括对每个字节的两个名义位,一个阻断或者传播进位,另一个控制移位操作。但是,通常其他的指令不要求移位操作,并且可以在36位SIMD加法器114上被执行,其中36位SIMD加法器114仅包括每个字节206~209的一个名义位202~205。
从设计和性能的角度,36位SIMD加法器114由于若干原因可能比可比较的40位SIMD ALU更为理想。36位SIMD加法器可以具有更短的关键路径延迟,以及比可比较的40位SIMD ALU小10%以上的布局。此外,为了与40位SIMD加法器布局对准,在数据路径中的所有其他的功能单元可能必须为每个字节提供一个多出的名义数据位。因此,仅仅为了适应FPA SIMD指令,整个数据路径不得不被增大10%以上。
虽然已经描述了紧缩的8位操作数和结果,但是通过选择适应不同数据大小的部件功能单元和数据路径布局,功能单元100和FPA SIMD指令可以对其他数据大小(例如,16位和32位操作数)执行。而且,通过选择适应不同数据倍数的部件功能单元和数据路径布局,也可以如上面结合36位加法器所描述的那样,实现对四以外的倍数的数据进行操作的SIMD指令。
已经描述了若干实施例。然而,应当理解,不脱离本发明的精神和范围,可以作出各种修改。因此,其他的实施例也落入附权利要求的范围之内。
权利要求
1.一种方法,包括将多个像素值和一个舍入向量压缩为第一和向量与第一进位向量;丢弃所述第一进位向量的最低有效位;丢弃所述第一和向量的两位最低有效位;以及将所述第一和向量与所述第一进位向量相加,以产生像素平均值。
2.如权利要求1所述的方法,其中,所述将所述第一和向量与所述第一进位向量相加的步骤是用单指令/多数据加法器执行的。
3.如权利要求1所述的方法,其中,所述压缩多个像素值和一个舍入向量的步骤包括压缩四个像素值和一个舍入向量。
4.如权利要求3所述的方法,其中,所述像素值包括8位的值。
5.如权利要求4所述的方法,其中,所述单指令/多数据加法器包括36位加法器,所述36位加法器包括对于四个字节单元中的每一个的一个名义位。
6.如权利要求1所述的方法,其中,所述舍入向量是102。
7.如权利要求3所述的方法,其中,所述压缩四个像素值和一个舍入向量的步骤在三个级中被执行。
8.如权利要求7所述的方法,其中,所述三个级包括将所述四个像素值中的三个压缩为一个第二和向量和一个第二进位向量;将所述第四个像素值、所述舍入向量和所述第二和向量压缩为第三和向量与第三进位向量;以及将所述第二进位向量、第三和向量与第三进位向量压缩为所述第一和向量与第一进位向量。
9.一种装置,包括包含多个压缩器的压缩器级,每个压缩器可操作以将多个操作数和一个舍入向量压缩为第一和向量与第一进位向量,并丢弃所述第一和向量的两位最低有效位以及所述第一进位向量的最低有效位;和单指令/多数据加法器,所述单指令/多数据加法器可操作以将所述第一和向量与所述第一进位向量相加,以生成平均像素值。
10.如权利要求9所述的装置,其中,所述多个压缩器包括四个压缩器。
11.如权利要求9所述的装置,其中,每个压缩器可操作以压缩四个操作数和一个舍入向量。
12.如权利要求9所述的装置,其中,所述像素值和所述平均像素值包括8位的值。
13.如权利要求12所述的装置,其中,所述单指令/多数据加法器包括每个字节单元的一个名义位。
14.如权利要求9所述的装置,其中,所述舍入向量是102。
15.如权利要求11所述的装置,其中,每个压缩器包括第一压缩器,所述第一压缩器可操作以将所述四个像素值中的三个压缩为一个第二和向量和一个第二进位向量;第二压缩器,所述第二压缩器可操作以将第四像素值、所述舍入向量与所述第二和向量压缩为第三和向量与第三进位向量;以及第三压缩器,所述第三压缩器可操作以将所述第二进位向量、第三和向量与第三进位向量压缩为所述第一和向量与第一进位向量。
16.一种包含机器可读介质的制品,所述机器可读介质包括机器可读指令,所述指令可操作以使得机器将多个像素值和一个舍入向量压缩为第一和向量与第一进位向量;丢弃所述第一进位向量的最低有效位;丢弃所述第一和向量的两位最低有效位;以及将所述第一和向量与所述第一进位向量相加,以产生像素平均值。
17.如权利要求16所述的制品,所述将所述第一和向量与所述第一进位向量相加的步骤是用单指令/多数据加法器执行的。
18.如权利要求16所述的制品,其中,用于压缩多个像素值和一个舍入向量的所述指令包括可操作以使得所述机器压缩四个像素值和一个舍入向量的指令。
19.如权利要求18所述的制品,其中,所述像素值包括8位的值。
20.如权利要求19所述的制品,其中,所述单指令/多数据加法器包括36位加法器,所述36位加法器包括对于四个字节单元中的每一个的一个名义位。
21.如权利要求16所述的制品,其中,所述舍入向量是102。
22.如权利要求18所述的制品,其中,使得所述机器压缩四个像素值和一个舍入向量的所述指令包括使得所述机器在三个级中压缩所述向量的指令。
23.如权利要求22所述的制品,其中,使得所述机器在三个级中压缩所述向量的指令包括使得所述机器进行如下步骤的指令将所述四个像素值中的三个压缩为一个第二和向量与一个第二进位向量;将第四像素值、所述舍入向量与所述第二和向量压缩为第三和向量与第三进位向量;以及将所述第二进位向量、第三和向量与第三进位向量压缩为所述第一和向量与第一进位向量。
全文摘要
在一个实施例中,包含压缩器段和36位SIMD加法器的功能单元被用于执行SIMD四像素平均指令,该功能单元产生四个四像素平均值。四个像素值和一个舍入值被压缩成一个和向量与一个进位向量。在被输入到36位SIMD加法器之前,和向量的两个最低有效位与进位向量的最低有效位被丢弃。得到的两个8位的向量被36位加法器相加,以直接产生平均像素值结果。
文档编号G06F17/18GK1636201SQ03804274
公开日2005年7月6日 申请日期2003年1月30日 优先权日2002年2月20日
发明者寥玉芸, 奈杰尔·帕韦尔, 詹姆斯·昆兰 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1