数据处理设备 |
|||||||
申请号 | CN200580019849.2 | 申请日 | 2005-06-08 | 公开(公告)号 | CN1969255A | 公开(公告)日 | 2007-05-23 |
申请人 | 皇家飞利浦电子股份有限公司; | 发明人 | A·A·M·范韦尔; | ||||
摘要 | 说明了一种具有位平面提取操作的可编程 数据处理 设备,位平面提取操作用于从一个值,例如包含4个字节1a到1d的32位值,提取数据。每个字节1a到1d包括8位(分别是a0-a7,b0-b7,c0-c7,d0-d7)。位平面提取操作从这些字节的每一个之中获取一个位,例如第二位(a1,b1,c1,d1),该位由自变量 指定 。所述操作包含将这些位(a1,b1,c1,d1)连接并且返回结果值5。取决于特定的数据处理应用,可以对该结果值进行位反转以提供结果值7(例如,如果为了处理升降序性需要位反转,或者其它原因)。位平面提取操作可以作为数据处理操作中的预处理操作,诸如对视频数据的处理中的“绝对差求和”。 | ||||||
权利要求 | 1.一种用于处理数据的可编程数据处理设备,所述数据处理包括 对压缩数据位执行位平面提取操作的任务,压缩数据位包括多个数据 单元,每个数据单元具有多个数据位,所述设备包括: |
||||||
说明书全文 | 技术领域本发明涉及可编程数据处理设备,并且特别涉及具有用于处理诸 如视频数据的数据的位平面提取操作的可编程数据处理设备。 背景技术在视频域中,像素通常由一个或几个数据字节表示。例如,在MPEG 视频编码的默认格式中,通过将像素的亮度分量保存为一个字节来存 储像素。该象素的色度部分被存储为两个字节,但是这些值同时被几 个像素共享。如果考虑亮度部分,例如,该字节由8个单独位组成, 并且被称为“位平面”。 MPEG视频编码的主要部分包括运动估计,当在位平面的基础上进 行计算时能够很方便地计算运动估计。“绝对差求和”运算,在位平 面基础上执行时,只涉及异或运算,之后对结果值的位数计数,后者 在DSP处理器中通常被支持作为单个指令。在预处理步骤中,必须从 视频流中提取位平面。这样的预处理步骤可能涉及,例如从包含4个 压缩字节的32位值中的每个字节提取一个特定位。为了执行位平面提 取,软件中的操作涉及以下操作(伪C语言所示)以获得一个4位结 果值r。 结果,r=bpext(x,y) 其中, x=包含4个压缩字节的32位值 y=表示要提取的位的0到7之间的整数值 位平面提取操作可以包括以下操作: unsigned bpext_big(unsigned x,unsigned y) { unsigned t0=x>>y; return(t0&0x00000001)| ((t0&0x00000100)>>7)| ((t0&0x00010000)>>14)| ((t0&0x01000000)>>21); } 现在将参考图1更详细地说明上面所示的位平面提取操作。首先, 在步骤101,将值x移动y个位置(也就是说“y”是表示要提取的位 的数值),以使要提取的位都在相同的位置。然后,在步骤103,使用 AND运算提取一位(例如,用t0&0x00000001提取第一位)。步骤105 到107重复该步骤,从其它每个字节中提取相关位,直到提取了第n 位(在这个例子中“n”是4)。在步骤109,将提取的位移动到目标 位位置(对应于最后结果中所述位的最终位置),并且在步骤111中 或(Or)到一起。 像素数据可以设置为“大端(big endian)”或“小端(little endian)” 格式。在大端格式中,字节被设置为最高有效字节在前,而在小端格 式中字节被设置为最低有效字节在前。因此,取决于像素数据的升降 序性(endianness),或者其它原因,可能需要反转得到的位。 下面示出了如何反转位的实施方式实例: unsigned bpext_reverse(unsigned x,unsigned y) { unsigned r=bpext(x,y); return((r&1)<<3)|((r&2)<<1)|((r&4)>>1)|((r&8)>>3); } 上面所示的指令选择各个位并且将它们移动到反转的位置,这样 位0变为位3((r&1)<<3),位1变为位2((r&2)<<1)),等等,并且 再将这些位或(Or)到一起。 注意到上述例子示出了如何从压缩数据中选择单个位。但是,也 可以提取超过一位,例如,每个字节或数据单元选择两位,并且将这 些位连接为一个八位结果值。 将理解,为了在可编程数据处理器上执行上述的位平面提取操 作,该位平面提取操作涉及若干(非专用的)操作的执行。这在性能 和功率消耗上都有缺点。 因而本发明的目的是提供一种具有不存在上述缺点的位平面提取 操作的可编程数据处理设备。 发明内容依照本发明的第一方面,提供一种用于处理数据的可编程数据处 理设备,所述数据处理包括在压缩数据位上执行位平面提取操作的任 务,该压缩数据位包括多个数据单元,每个数据单元具有多个数据位, 所述设备包括: -用于从每个数据单元有选择地提取数据位的提取装置,和 -用于将提取出的数据位连接起来以提供结果值的连接装置,其 中所述结果值由该可编程数据处理设备进一步处理。 依照本发明的另一方面,提供了一种在可编程数据处理器中对压 缩数据位执行位平面提取操作的方法,该压缩数据位包括多个数据单 元,每个数据单元具有多个数据位,该方法包括提供用于从每个数据 单元有选择地提取数据位的专用硬件装置,和将提取出的数据位连接 起来以提供结果值,所述结果值由该可编程数据处理器进一步处理。 附图说明 为了更好地理解本发明,并且更清楚地显示如何实施本发明,将 参考以下附图进行说明,并且这些附图只作为例子,其中: 图1示出了依照当前技术的位平面提取操作; 图2a和2b分别描述了依照本发明的对结果进行或不进行位反转 的位平面提取操作; 图3示出了可以如何使用多路复用器在硬件中执行图1的位平面 提取操作的例子; 图4示出了对结果进行位反转的本发明的另一个方面; 图5示出了图4中的多路复用器的其它细节; 图6示出了本发明的另一方面。 具体实施方式依照本发明,提供了用于执行位平面提取操作的专用硬件。 参看图2a,考虑一32位压缩数据位的值,例如,包括4个字节或 数据单元1a到1d。每个字节1a到1d包括8个位(分别是a0-a7,b0 -b7,c0-c7,d0-d7)。位平面提取操作从这些字节中的每一个中有 选择地取出一个位,例如第二位(a1,b1,c1,d1),这由一个自变量 指定。该操作涉及将这些位(a1,b1,c1,d1)连接,并且返回一个4 位结果值5(具有的第一位称为r0,第二位r1等)。如果所处理的数 据不需要进行位反转,则结果值5是r3=a1,r2=b,r1=c1,r0=d1。 图2b示出了一个相似的位平面提取设备,但是需要对结果进行位 反转,从而在结果值7中反转提取的数据位,使得r3=d1,r2=c1,r1=b1, r0=a1。换句话说,在图2a所示的实施例中,位提取操作提供没有位反 转的结果值5,而图2b中位平面提取操作提供进行了位反转的结果值 7。 如上所述,可以将硬件配置为提供没有进行位反转的结果值(即 如图2a所示),或者提供进行了位反转的结果值(如图2b所示)。 如前所述,可能为了多种原因对结果执行位反转,原因之一是处理升 降序性。 或者,可以将硬件配置为有选择地提供正常格式或位反转格式的 结果。例如,可以将位反转设置为一个参数,使得该设备能够返回结 果5或位反转的结果7,如下面的应用所述。取决于具体应用是否需要 位反转的结果,该参数可以由软件控制,或者在硬件中事先配置。 图3更详细地示出了如何在硬件中以低代价实现位平面提取操 作。例如,该操作可以完全由只有3级深度的多路复用器来实现。 在图3中,为了参考方便,示出了用于从图2a和2b所示的字节 之一(字节1a)中提供一个位的多路复用器装置。为每一个其它字节 提供了相似装置。第一级多路复用器31将8个位减少到4个位(即n 到n/2),第二级多路复用器33将这4个位减少到2个位,第三级多 路复用器35将这2个位减少到1个位。以此方式,可以从位a7-a0中 提取任何位ay。同样,可以使用多路复用器从字节1b中提取位by, 从字节1c中提取位cy,从字节1d中提取位dy。 图4示出了可以如何通过提供硬件以处理两个选项来对结果进行 位反转。在图4中,所提取的位ay,by,cy,dy通过一组多路复用器 41a到41d。因而,结果值取决于是否需要位反转,由控制信号“c” 来控制。 图5中更详细地示出了所述多路复用器之一41a。当控制信号“c” 被设为高,所提取的位ay,by,cy,dy构成结果值5。换句话说,r3=ay; r2=by;r1=cy;r0=dy。但是,当控制信号“c”为低,所提取的位ay, by,cy,dy的顺序被反转,使得r3=dy;r2=cy;r1=by;r0=ay,从而 构成结果值7。这样,可以使用附加硬件和参数“c”来在需要的时候 提供位反转,例如为了更正升降序性。 如上所述,参数“c”可以由软件控制(因而允许动态控制位反转), 或者取决于特定的数据处理应用在硬件中设置。 将认识到,上述本发明提供了一种比当前技术更有效的位平面提 取操作和设备。与当前技术中执行的操作相比,除了提高了性能之外, 该位平面提取方法和设备还消耗更少能量。 在实际应用中,可以将几种结果组合为单个的32位值。例如,如 果一个结果对应4位,则8个结果可以组合为32位。因而可以通过对 两个32位值取异或(XOR)来计算这样两个值之间的绝对差之和,并 且对结果中“1”位进行计数。依照当前技术,组合多个结果涉及对先 前的结果移位,并且对当前结果取或(OR)得到该值。 使用软件,这涉及如下操作: unsigned bpext_reverse_shift(unsigned x,unsigned y,unsigned z) { r+bpext_reverse(x,y); return(z<<4)|r; } 其中 x:包含4个压缩字节的32位值 y:表示要提取的位的0到7之间的整数 z:包含先前结果的32位值 但是,依照本发明的另一个方面,图6示出了使得这个操作能够 通过使用一个操作在硬件中而不是通过使用上述的软件执行的一种装 置。 上述本发明提供了一种可编程数据处理设备,其具有能够在绝对 差求和的预处理步骤中使用的位平面提取装置。但是,注意到,本发 明并不局限于该应用,应理解位平面提取操作还可以用于其它需要从 多个字节中提取一个或多个位的数据处理操作。另外,数据位不必一 定从不同的字节中提取,例如由每分量12个位表示的图像数据的应 用。 尽管已经联系提取4个位描述了本发明,但是注意到,对于数据 路径更宽的处理器,例如64位的处理器,所述指令可以是一次取出8 个位。 同样,尽管优选实施例示出了使用多路复用器,应理解还可以使 用提供相同功能的其它逻辑电路。 还应注意,上述实施例是为了举例说明本发明,而不是限制本发 明,并且本领域技术人员将能够设计许多替代实施例而不偏离所附权 利要求定义的本发明的范围。在权利要求中,括号中的任何参考符号 不应被理解为限制权利要求。词“包括”和“包含”和类似词语不排 除说明书或任何权利要求中作为整体所列出的元件或步骤之外其它元 件或步骤的存在。对元件的单数引用不排除对这种元件的复数引用, 反之亦然。本发明可以借助于包括若干不同元件的硬件实现,也可以 借助于适当编程的计算机来实现。在列举若干装置的权利要求中,这 些装置中的几个可以用同一硬件项来实现。在相互不同的从属权利要 求中描述了特定措施的事实并不意味着不能使用这些措施的组合获 益。 |