[发明专利]根据可变长编码的码字生成位流的方法和装置无效
申请号: | 200810170308.5 | 申请日: | 2008-10-10 |
公开(公告)号: | CN101729881A | 公开(公告)日: | 2010-06-09 |
发明(设计)人: | 高怿之;刘星;刘家俊;鹿宝生;徐晟 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | H04N7/26 | 分类号: | H04N7/26;H04N7/30;H04N7/50 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 于静;周春燕 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 根据 可变 编码 码字 生成 方法 装置 | ||
技术领域
本发明涉及数据处理领域,具体地,涉及根据可变长编码的码字生成位流的方法和装置。
背景技术
在编码理论中,可变长编码(Variable-Length Coding,VLC)是将信源映射为可变位数的码字的编码方式,其允许信源零误差地被压缩及解压缩(无损数据压缩)。可变长编码的基本思想是对一组出现概率各不相同的信源符号,采用不同长度的码字表示,对出现概率高的信源符号采用短码字,对出现概率低的信源符号采用长码字。这样的编码方式由于具有很高的压缩效率,所以广泛应用于包括JPEG、MPEG2、H.264等在内的图像、视频和音频等多媒体信息的编码标准。目前常用的VLC编码策略有Huffman编码、Lempel-Ziv编码以及算术编码等。
无论采用哪一种特定的VLC编码方式,由于所得到的VLC码字都是可变长的,其长度未必是字节的倍数,所以在将这样的VLC码字串接起来生成位流的过程中,通常对于每一个VLC码字都需要按位来进行串接,并且在进行每一个位的串接时都要进行复杂的位操作。
图1示出了这样的按位将VLC码字串接起来生成位流的通常方法的流程图。
在该通常方法中,例如对于要串接起来生成位流的多个VLC码字中位长度为n的当前VLC码字v,通过步骤105-140的n次循环,将其中的各个位依次串接到一个8位的输出缓冲器中,并进而通过该输出缓冲器将该VLC码字v串接到输出位流中。
具体地,在步骤105,设k=1,即对于当前VLC码字v,从其最左侧的第1位开始进行串接。
在步骤110,将输出缓冲器中的数据向左移1位。
在步骤115,通过利用位掩码与当前VLC码字v进行与(AND)操作,获得该VLC码字v的最左侧的第k位vk。
在步骤120,利用或(OR)操作,将所获得的该当前VLC码字v的最左侧的第k位vk放置到输出缓冲器中的最右侧的位、即最低位上。
在步骤125,判断输出缓冲器是否已满。若是,则该过程前进到步骤130,否则转到步骤135。
在步骤130,将该输出缓冲器中的内容输出到位流中。
在步骤135,判断该当前VLC码字v中是否还有未串接的下一位。若有,则该过程前进到步骤140,否则该过程结束。
在步骤140,使k=k+1,并返回到步骤110,继续串接该当前VLC码字v中的下一位。
可以看出,在上面的通常方法中,对于一个n位长的VLC码字,至少需要进行:
1)n次移位操作;
2)n次与(AND)操作;
3)n次或(OR)操作;
4)n次分支操作(步骤125)。
上面的通常方法例如可以在用于MPEG2视频编码的基准编码模型TM5(参考www.mpeg.org/MPEG/MSSG/tm5)中以及在基准JPEG图像编码软件IJG的实现(参考www.ijg.org)中发现。
但是,在该通常方法中,由于存在大量的分支操作,所以本领域技术人员可以理解,大量的分支操作中必然会出现分支预测错误、分支未命中的情况。其原因如下。
在现代的处理器中,一般都采用流水线的处理方式。也就是说,如图2的流水线所示,虽然通常一条指令的处理需要多个时钟周期才能完成,但是CPU可以不必等待前面的指令的处理完成,而每个时钟周期都发出一条指令,这样,一条指令可以在上一条指令的处理结束之前就被发出并执行。但是,在分支指令的情况下,存在着原来的顺序指令流被中断并跳转到分支指令流的可能性。但是,正确的、应该执行的分支指令流只有在分支指令的处理结束后才能够确定。这样,为了继续流水线的处理,在现代的处理器中,一般都根据预定的策略预测一条分支来执行。显然,这样的预测会存在预测正确的情况,也会存在预测错误的情况。
如果分支预测正确,则指令的执行将正常地进行,但是如果分支预测错误,则在DSP、GPU、IBM的CELL系统中的SPE(Synergistic ProcessingElement,协处理单元)以及专门设计的处理器等没有分支预测错误的挽救机制的简单流水线体系结构中,将花费更多的时钟周期将已经通过分支预测装入到流水线中要执行的指令和结果全部清除,然后重新获取并装入正确的分支的指令序列来执行。这样,必然会导致性能的急剧降低。
此外,即使在Intel处理器等具有分支预测错误的挽救机制的复杂流水线体系结构中,如果采用上述通常方法,也会存在因在分支预测错误时进行挽救操作而导致一定程度的性能降低的问题。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810170308.5/2.html,转载请声明来源钻瓜专利网。