CN1552016A - 向/从缓冲器提取和加载数据的装置和方法 - Google Patents

向/从缓冲器提取和加载数据的装置和方法 Download PDF

Info

Publication number
CN1552016A
CN1552016A CNA028174933A CN02817493A CN1552016A CN 1552016 A CN1552016 A CN 1552016A CN A028174933 A CNA028174933 A CN A028174933A CN 02817493 A CN02817493 A CN 02817493A CN 1552016 A CN1552016 A CN 1552016A
Authority
CN
China
Prior art keywords
data
data storage
storage device
buffer
register
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.)
Granted
Application number
CNA028174933A
Other languages
English (en)
Other versions
CN100357879C (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1552016A publication Critical patent/CN1552016A/zh
Application granted granted Critical
Publication of CN100357879C publication Critical patent/CN100357879C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明描述了用于向/从缓冲器提取和加载数据的一种方法和装置。所述方法包括响应于数据访问指令的执行,从数据缓冲器选择数据。该数据缓冲器包括多个数据存储设备,其中的一个或者多个最初包含了被选择的数据。从而,所述多个数据存储设备形成了在位级上可寻址的单地址空间。当被选择的数据从数据缓冲器的源数据存储设备跨越到数据缓冲器的下一个数据存储设备时,来自源数据存储设备的被选择的数据的部分与来自下一个数据存储设备的被选择的数据的剩余部分相连接,以将被选择的数据形成为连续的单元。最后,一旦被选择的数据被形成,被选择的数据就被存储在目标数据存储设备中。

Description

向/从缓冲器提取和加载数据的装置和方法
技术领域
本发明一般地涉及编码和解码内容的领域。更具体地,本发明涉及向/从缓冲器提取和加载数据。
背景技术
媒体应用已经推动微处理器的发展十几年了。实际上,近年来大多数的计算升级是由媒体应用所推动的,这些媒体应用主要在于消费者部分,也在于对于娱乐、加强教育和通信目的的企业部分。然而,未来的媒体应用将要求更高的计算需求。因而,明天的个人计算机(PC)体验将在视听效果上变得更加丰富,也更容易使用,并且更重要地,计算将与通信相融和。
因此,图像的显示以及音频和视频的回放已经成为对于当前的计算设备日益普遍的应用。遗憾的是,对于这些类型的应用所要求的数据量趋向于变得非常大。因而,计算能力、存储器和磁盘存储以及网络带宽的增加已经促进了更大和更高质量的图像以及更长和更高质量的音频及视频的建立和使用。但是,这些应用所使用的内容一般被以压缩格式存储以节省存储空间和减少传输带宽。
因而,支持诸如音频和视频的内容的应用受到由音频和视频数据施加的实时回放的约束。诸如音频和视频数据的内容一般是被流化的,其中,所传输的内容当其被接收的同时被播放。为了使能流化,数据在传输之前被压缩以克服网络带宽的限制并满足回放的要求。因而,音频和视频必须被实时地解码,不论它们是在网络上被流化的还是被存储在本地设备中。另外,随着音频质量和视频的分辨率以及帧大小的增加,计算需求也增加了。所以,视频的解压缩是对于普遍的应用的最要求计算的需求之一。
遗憾的是,当带宽的成本和服务部件的质量保持稳定时,当前在计算成本的降低之间存在不平衡。可以预见到这种不平衡将决定应用的未来。因而,种类逐渐增多的新的算法和应用将致力于折衷计算复杂性以获得改善的视听质量、较小的比特率、工具的易管理性等等。因此,这种不平衡将导致新的压缩标准、新的处理算法和端到端应用范例,其中,将需要不同的域中的许多操作以保证多媒体从编码和加密到传输、后处理和管理的正确的传达。
通常所使用的压缩算法,例如联合图像专家组(JPEG)和JPEG 2000图形压缩,以及运动图像专家组(MPEG)、MPEG-1、MPEG-2和MPEG-4音频和视频压缩,结合了两种技术。首先,数据通过变换被处理,然后被量化。然后通过移动可感知和有意义的数据实现压缩。这种技术被称作有损的,因为原始数据通过解压缩不能被精确地恢复。使用熵编码技术,第一步的结果被进一步压缩。熵编码以长度取决于原始数据符号的出现频率的符号代替原始数据符号(这种情况中,原始数据符号是量化的变换系数)。以短的熵编码符号代替最常出现的原始数据符号,以长的熵编码符号代替最不常出现的。因此,熵编码符号的长度在它们的位长度上不同。
图像解码步骤以编码步骤的逆向顺序执行。熵解码先于变换解码,等等。遗憾的是,由于不同的符号链产生的数据相关性,在熵解码中很少具有数据并行性。各种体系结构指令对于变换操作通常是有效的,但往往对熵解码用处很少。但是,由于体系结构指令随着更大的寄存器和新的指令而增加,需要用于熵解码和媒体回放应用的时间百分比增加了。所以,熵解码的改进落后于变换解码的改进。
因此,存在克服上述存在的一个或者多个限制的必要。
附图说明
本发明通过示例的方式而非限定的方式在附图的图形中被示出,其中:
图1示出一个方框图,举例说明本发明一个实施例中的本领域所公知的并且可以在其中实现本发明教导的传统计算机系统。
图2示出一个方框图,按照本发明的实施例,举例说明可以在如图1所示的计算机系统中使用的内容解码器。
图3A示出一个方框图,按照本发明另一个实施例,举例说明如图2所示的内容解码器的熵解码块。
图3B示出按照本发明另一个实施例的目标数据存储设备。
图4示出一个方框图,按照本发明另一个实施例,举例说明在数据存储设备中的数据转换。
图5A~图5D示出方框图,按照本发明另一个实施例,举例说明从数据缓冲器的一个或者多个存储设备的数据读取。
图6示出一个方框图,按照本发明另一个实施例,举例说明可以在如图1所示的计算机系统中使用的内容编码器。
图7A和图7B示出方框图,按照本发明另一个实施例,举例说明如图6所示的熵编码块。
图8示出一个流程图,按照本发明的实施例,举例说明从数据缓冲器访问数据的方法。
图9示出一个流程图,按照本发明另一个实施例,举例说明在数据缓冲器中加载数据的另外的方法。
图10示出一个流程图,按照本发明另一个实施例,举例说明检测是否被请求的数据跨过了数据缓冲器的一个或者多个数据存储设备的另外的方法。
图11示出一个流程图,按照本发明另一个实施例,举例说明在目标数据存储设备中存储数据的另外的方法。
图12示出一个流程图,按照本发明的示例实施例,举例说明连接跨过了数据缓冲器的一个或者多个数据存储设备的数据的另外的方法。
图13示出一个流程图,按照本发明另一个实施例,举例说明当数据缓冲器中的所有数据已经被访问过时,在数据缓冲器的数据存储设备中加载数据的另外的方法。
图14示出一个流程图,按照本发明另一个实施例,举例说明解码被选择的数据的另外的方法。
图15示出一个流程图,按照本发明的示例实施例,举例说明解码目标数据存储设备中的数据的另外的方法。
图16示出一个流程图,按照本发明的实施例,举例说明在包括多个数据存储设备的数据缓冲器中加载数据的方法。
图17示出一个流程图,按照本发明另一个实施例,举例说明在数据缓冲器中加载数据之前的数据的编码。
图18示出一个流程图,按照本发明另一个实施例,举例说明响应于执行数据加载指令而执行的另外的方法。
图19示出一个流程图,按照本发明另一个实施例,举例说明确定要被加载的数据是否超过了数据缓冲器中的目标数据存储设备的容量的另外的方法。
图20示出一个流程图,按照本发明的示例实施例,举例说明在包括数据存储寄存器和数据加载寄存器的数据缓冲器中加载数据的方法。
图21示出一个流程图,按照本发明另一个实施例,举例说明编码从存储器设备选择的数据的另外的方法。
具体实施方式
描述了一种用于向/从缓冲器提取和加载数据的方法和装置。该方法包括响应于数据访问指令的执行,从位可寻址数据缓冲器中选择数据。从其选取数据的数据缓冲器包括多个数据存储设备,其中的一个或者多个最初包括所选择的数据。于是,多个数据存储设备形成了位级可寻址的单地址空间。当所选择的数据从数据缓冲器的源数据存储设备跨到下一个数据存储设备时,来自源数据存储设备的所选择的数据的部分与来自下一个数据存储设备的所选择的数据的剩余部分连接起来,以将所选择的数据形成为连续的单元。最后,一旦所选择的数据形成了,则所选择的数据被存储到目标数据存储设备中。
在下面的描述中,为了说明的目的,提出了许多特定的细节,以便提供对本发明的彻底的理解。然而没有这些特定细节中的某些,本发明也可以被实行,这对本领域的技术人员是显而易见的。另外,为了举例说明的目的,下面的描述提供了例子,并且附图示出了各种示例。但是,因为这些示例仅仅是用来提供本发明的示例,而不是提供本发明所有可能的实施方式的穷举列举,所以这些示例不应被解释为限定的意义。在其他实例中,公知的结构和设备以方框图的形式示出,以避免模糊本发明的细节。
在实施例中,本发明的方法在机器可执行指令中被具体化。这些指令可以被用来引起用这些指令编程的通用或专用处理器执行本发明的步骤。可替代地,本发明的步骤可以通过包括用于执行这些方法的硬连线逻辑的特定硬件部件来执行,或者通过被编程的计算机部件和定制硬件部件的任意组合来执行。
本发明可以被提供为计算机程序产品,该产品可以包括其上已经存储了指令的机器或计算机可读介质,这些指令可以被用来编程计算机(或者其他电子设备或系统)以执行根据本发明的处理。计算机可读介质可以包括但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存等等。
系统
参考图1,现在描述举例说明计算机系统200的主要部件的方框图,在该计算机系统中可以实现创造性的存储格式。计算机系统200包括显示控制器220。显示控制器220是例如视频图形适配器(VGA)、超级VGA(SVGA)等等。显示控制器220产生用于显示器290的像素数据,显示器290是例如阴极射线管(CRT)、平板显示器等等。像素数据按照显示器290的刷新频率特征(例如,60Hz、72Hz、75Hz等等)以及显示器图像的水平和垂直分辨率(例如,640×480像素、1024×768像素、800×600像素等等)来产生。显示控制器220可以按照显示器290的特征频率产生连续的像素数据流。
显示控制器220还配备有显示存储器222,它存储用于输出到显示器290的文本、图形或者视频模式的像素数据。主CPU 210通过总线270耦合到显示控制器220,并且当用于显示器290的显示器图像改变时,更新显示存储器222的内容。总线270可以包括例如外围部件互连(PCI)总线等等。系统存储器280可以耦合到主CPU来存储数据。
硬件的内容解码器230被提供来解码视频音频、图像和语音数据(“内容”),举例来说,例如运动图像专家组(MPEG)视频数据。MPEG视频数据从MPEG视频数据源(例如,CD-ROM等等)被接收。可替代地,内容解码器230实现为例如存储在系统存储器280中的传统的软件解码器282。一旦被解码,被解码的视频数据就被输出到系统存储器280或者直接输出到显示存储器222。
计算机系统200还包括内容编码器240,它负责编码由计算机系统200产生的内容数据,例如图像、音频、视频和语音数据。一旦内容数据被内容编码器240编码,被编码的内容数据可以被存储在系统存储器280中或者通过CPU 210被传输/流化到目标设备,没有示出。可替代地,内容编码器240实现为例如可以存储在系统存储器280中的传统的软件编码器284。
遗憾的是,在如上面所描述的诸如霍夫曼或算术编码和解码的熵编码和解码过程中,计算机系统200的内容解码器230和内容编码器240两者都很少或者没有利用并行性。实际上,由于不同的符号长度造成的数据相关性,在熵编码和解码中很少具有数据并行性。虽然许多单指令多数据(SIMD)指令对于变换操作(如上面所描述的)是很有效的,但是这种指令对熵编码和解码用处很少。
另外,由于SIMD指令的能力随着更大的寄存器和新的指令而增加,在媒体回放应用中需要用于熵解码和编码的时间百分比增加了。所以,熵解码的改进落后于变换解码的改进。用可变长度代码符号的熵压缩方法的示例包括但不限于霍夫曼编码以及算术编码。照这样,本领域的普通技术人员将认识到,本发明的教导可以利用软件或者硬件的内容解码器/编码器实现。
现在参考图2,图2示出了按照本发明第一实施例的可以在计算机系统200中使用的内容解码器250的部件的一部分。在所描述的实施例中,例如是MPEG数据、JPEG数据等等的内容比特流252从例如MPEG数据源、JPEG数据源等等的内容源接收,并且可以如下被解码和解压缩。虽然内容解码器250被配置为MPEG解码器,但是所提供的实施例是一个示例,并且不应被解释为限定的意义。
相应地,内容解码器250在熵解码块300处接收MPEG比特流252。但是,和传统的熵解码器相比,该熵解码块300使用位级可寻址缓冲器,以便最小化解码所收到的比特流252所需要的时间量,如下面参考图3A所进一步描述的。相应地,熵解码块300确定提供给行程解码块256的对于所收到的比特流252的解码符号以及解码符号长度。
行程解码块(RLD块)256从熵解码块300接收解码符号和解码符号长度,以便产生提供给反量化块(IQ块)262的量化数据块。IQ块262对量化数据块258进行反量化,以产生用于量化数据块的频谱264。接着,反离散余弦变换块(IDCT块)266使用频谱264进行量化数据块258的反离散余弦变换,以产生被解码的数据块268。
解码数据块268一旦产生就被提供给运动补偿块(MCB)270。然后由MCB 270进行运动补偿,以再现MPEG数据272。最后,色彩转换块274将MPEG数据272转换为红、绿、蓝(RGB)色彩空间,以便产生图片280。然而,与如图1所示的计算机系统200的诸如硬件解码器230或者软件内容解码器282的传统内容解码器相对比,该内容解码器使用了参考图3A被进一步描述的熵解码块300。
现在参考图3A,熵解码块300使用包括了多个数据存储设备304(304-1,...,304-N)的数据缓冲器302。在一个实施例中,数据缓冲器302使用可以包括128位多媒体增强指令集(MMX)寄存器的位级可寻址寄存器。但是,本领域的技术人员将理解,数据缓冲器302的数据存储设备并不限于寄存器,而是一般地包括能够存储数字数据的任何数据存储设备。照这样,当比特流数据250被接收,该比特流数据250被加载到数据缓冲器302的多个数据存储设备304中。
遗憾的是,被编码的比特流250使用长度变化的编码字符。如上面所描述的,熵编码以长度取决于原始数据符号的出现频率的符号代替原始数据符号,使得最常出现的原始数据符号被短的熵编码符号所代替,最不常出现的被长的熵编码符号所代替。照这样,数据必须从数据缓冲器中被选择以便找准长度变化的编码符号。
因此,在传统的解码器中的熵编码过程中,找准长度变化的编码符号的延迟造成了瓶颈。就这点而论,熵解码块300使用能够找准在数据缓冲器302的不同数据存储设备之间跨越的数据的各部分的位级可寻址寄存器,以便找准所用的长度变化的编码符号。照这样,熵解码块可以在数据缓冲器302的源数据存储设备304中选择数据的一部分,并将数据的这部分存储在如图3B所示的目标数据存储设备342中,该目标数据存储设备342可以位于熵解码块300的寄存器文件340中。
从而,利用本发明的教导,处理器330响应于执行数据检测指令,可以确定目标数据存储设备中的开头一个的位置。一旦该位置被确定,则在一个实施例中,处理器330可以使用熵解码块300的高速缓存350中的移位表360(360-1,...,360-N)。照这样,处理器330可以使用开头一个的位置作为索引来读取移位表360,以得到移位值。一旦确定了移位值,举例来说,目标数据存储设备342就可以根据该移位值被向右移位。一旦被向右移位,处理器就可以基于被移位的数据存储设备342的值从高速缓存350的解码表352(352-1,...,352-N)读取解码符号,以便来确定解码符号。
最后,使用被向右移位的目标数据存储设备342的值从解码表352读取解码符号长度。因此,使用位级可寻址缓冲器,熵解码块能够以最小的开销在数据存储设备中确定代码字或者符号。换句话说,与传统的熵解码器相比较,熵解码块300避免了传统的熵解码器为了确定开头一个的位置所使用的许多检验,这些检验经常造成在内容解码器中熵解码过程中相当大的延迟。另外,一旦确定了编码符号,则在一个实施例中,基于代码字的长度使用指针来指示下一个编码符号或者代码字的开始位置。
再次参考图3A,在另一个实施例中,高速缓存350仅包括解码表352,而不使用移位表360。因此,在所描述的实施例中,解码表可以包括级别或幅度值、到下一个非零值的行程值以及代码字的长度。所以,当从数据缓冲器302中的数据存储设备304读取一部分视频流数据时,可以对数据的所选部分应用掩码,以便从数据的所选部分提取查找数据。
照这样,使用查找数据查询解码表352,直到在解码表352的一个中找到相应的条目。在一个实施例中,当查找数据的位长度小于字代码长度时,编码表返回一个无效响应。于是,对查找数据添加另外的位,并应用于解码表352,直到返回有效的条目。所以,一旦被定位,数据的所选部分就使用由解码表352所提供的级别/幅度值、行程值和代码字的值被解码。另外,一旦编码符号被确定,则在一个实施例中,基于代码字的长度使用指针来指示下一个编码符号或者代码字的开始位置。
现在参考图4,图4示出在数据缓冲器302的数据存储设备304中的数据转换。在所示示例中,数据存储设备304中的数据可以最初按小端(little endian)顺序存储。数据的初始顺序一般是基于在各自的计算体系结构中数据组织的方法。遗憾的是,最常出现的视频格式MPEG是按大端(big endian)顺序组织数据的。因而,MPEG数据的解码需要从小端顺序转换到大端顺序。可替代地,数据可以最初按大端顺序存储,从而避免转换。
所以,响应于数据转换命令的执行,数据存储设备304中的数据被翻转。照这样,在所描述的实施例中,对于每种大小的寄存器,通过单指令,字节的顺序被翻转。但是,在另一个方法中,32位寄存器中的字节的顺序在单指令中被翻转。从而,其字节已经在32位寄存器中交换了的32位字被加载进较大的寄存器中。一旦被加载,则这些32位字的顺序用单指令被翻转。
现在参考图5A~图5D,图5A~图5D示出使用源数据存储设备(R0)304-1和第二数据存储设备(R1)304-2的熵解码块300的数据缓冲器302。如所描述的,数据缓冲器302的各种数据存储设备304提供了位级寻址能力,可以被利用来加速内容数据的编码和解码两者。相应地,开始时用比特流数据加载R0数据存储设备304-1。一旦R0数据存储设备容量被充满,则向R1数据存储设备304-2存储比特流数据。照这样,在所描述的实施例中,R0和R1数据存储设备两者都包含了未被读取的比特流数据。
现在参考图5B,图5B示出R0和R1数据存储设备,举例说明在位边界上访问的数据。因而,位是定义在数据缓冲器302中访问的数据量的单位。因此,数据存储设备的访问地址之间最小的差值是一位。因此,在所描述的实施例中,数据缓冲器302包括多个位级可寻址寄存器。但是,本领域的技术人员将会理解,能够保存数据的其他形式的硬件也可以被用作位级可寻址数据存储设备。
因此,提供了R0数据存储设备304-1的初始位地址306,在该地址当前数据314被选择,并且基于要被读取的位的数量,被请求数据的结束位置308可以被计算出来。另外,在一个实施例中,数据存储设备包括一个标志310,用于确定相应的数据存储设备中比特流数据的各部分是否已经被访问。照这样,参考R0数据存储设备304-1,R0设备304-1包括已被读取数据312、当前数据314和未被读取数据316。
现在参考图5C,图5C示出当被请求的数据跨过多个数据存储设备(从R0到R1)时,数据缓冲器302的实施例。当发现这种情况时,执行寄存器合并操作。从而,响应于寄存器合并指令的执行,来自R0数据存储设备的当前数据被读出,来自R1数据存储设备的当前数据也被读出,并且作为连续的单元被拷贝到目标数据存储设备。在所描述的实施例中,目标数据存储设备是可以包含在图3A中所示的熵解码块300的寄存器文件340中的寄存器。但是,目标数据存储设备可以是能够保存数字数据的任何种类的硬件。
在另一个实施例中,响应于检测到数据的跨越,在R0数据存储设备中的不需要的或者已被读取的数据可以被移出,来为跨越到R1数据存储设备中的数据让出位置。一旦未被读取的数据被移出R0数据存储设备,R1数据存储设备中的当前数据就可以被移入R0数据存储设备中。从而,一旦当前数据被包含在R0数据存储设备中,数据就可以作为连续的单元被拷贝到目标数据存储设备中。一旦被拷贝,R0数据存储设备中的全部数据就成为不需要的已被读取的数据,因此可以用新的数据加载R0数据存储设备。
现在参考图5D,图5D示出数据缓冲器302用作环形缓冲器的实施例。照这样,一旦从R0数据存储设备304-1和R1数据存储设备304-2选择出当前数据的跨越,R0数据存储设备304-1将不再包含未被读取的数据。因此,如图5D所示,R0数据存储设备中的全部数据已经被访问过,这导致标志310的设定。另外,在所描述的实施例中,R0数据存储设备304-1的位置被移动到缓冲器302的末端,以便使能从输入数据流向R0数据存储设备的数据加载。从而,在所描述的实施例中,数据缓冲器用作环形缓冲器。换句话说,在所提供的示例中,下一次访问中的全部数据是从R1数据存储设备304-1中选择的。
然而,在一些实施例中,数据访问会重叠,使得一些位被访问不止一次,而在其他情况中,一些位根本不被访问。照这样,在所描述的实施例中,通过接收第一寄存器ID来提供指定数据缓冲器302中要被访问的所需数据的地址的方法,所述第一寄存器ID可以包括其中出现了该访问的第一个位的寄存器编号类型。该方法还包括由寄存器中的位的位置给出的位地址、要被访问的位的数量以及(在大多数情况中)如果访问的位的范围超出初始的源寄存器时的一些访问的数据所位于的第二寄存器。
在所描述的实施例中,当前数据的开始的位的位置(306)和要被提取的位的数量被保存在两个另外的寄存器(没有示出)中。然而,在另一个实施例中,通过接收第一位306和最后一位的地址308代替第一位地址306和访问数据的位的数量,来提供对要被访问的数据的指定。最后一位的地址308可以与保存了最后一位的寄存器(R1 304-2)相关联,但是也可以与第一寄存器(R0 304-1)相关联,在这种情况中,等价于第一位地址和要被访问的位的数量的和。在后一情况中,如果最后一位地址308超出了第一寄存器(R0 304-1)的最高地址,则最后一位地址308可以指向另一寄存器(R1 304-2)中的地址。在这种情况中,实际上在缓冲器中具有单地址空间。
照这样,所访问的数据被转移到如图3B所示的目标寄存器342。目标寄存器342或者数据存储设备304可以是来自数据缓冲器302的数据存储设备304的相同或者不同种类的寄存器。在一个实施例中,所访问的数据被加载到寄存器(见图3B)中的最小或者最低有效位置。另外,当请求数据访问,要求寄存器合并指令时,数据被连接以便数据的连续单元被加载进目标数据存储设备342。
在许多情况中,从数据缓冲器304所访问的数据没有填满目标数据存储设备342。在这些情况中,目标数据存储设备342被补零,以便目标寄存器342中的不是所访问数据一部分的位被设为零。在一个实施例中,目标数据存储设备342的补零通过数据加载指令来进行,该数据加载指令用数据缓冲器中的数据加载目标数据存储设备342(见图3B)。另外,当标志310被设定,指示出相应的数据存储设备中的全部数据已经被访问了时,执行向数据缓冲器中加载另外的数据的指令时复位该标志。照这样,处理器不用等待数据被加载而设定标志。
然而,在另一个实施例中,确定寄存器中的全部数据已经被访问是通过将寄存器中的最高地址(寄存器中的MSB(最高有效位)位置)与所访问的第一位的地址(位的位置)和要被访问的位的数量之和相比较来进行的。照这样,如果该和大于寄存器的最高地址(MSB位置),则全部的数据已经从寄存器被访问过了。因此,在上面所描述的实施例中,当寄存器中的全部数据已经被访问时,来自比特流252的数据被加载进该寄存器中,并且该寄存器被移到缓冲器的末端,以便最新加载的数据在当前在缓冲器中的其他数据之后被访问。
最后,位可寻址数据缓冲器302支持例如循环和卷入(roll)功能的软件优化。照这样,循环可以被卷入,以便对每个符号解码之后,不必检查寄存器中全部数据是否已经被访问了。相应地,循环可以静态地展开(unroll)的次数等于寄存器位的长度(缓冲器中寄存器的数量减去1)除以缓冲器位访问的最大数量。例如,如果缓冲器长度是128位,并且缓冲器中的寄存器数量是2,则被确定为128×(2-1),等于在缓冲器中的128位。所以,如果所访问的最大数量是17位,则缓冲器在128除以17,即7次请求之后,还没有用完数据。因此,缓冲器可以展开7次。
现在参考图6,图6示出一个方框图,按照本发明另一个实施例,举例说明可以在计算机系统100中使用的内容编码器400的部件。内容编码器400开始时接收402内容数据,例如图像、音频和视频数据。相应地,对于图像流402中的每块数据,编码器400进行5个步骤以产生被编码的数据块。在第一步中,由运动估计块404进行运动估计以利用图像之间的暂时冗余(temporary redundancy)。因此,运动估计块404产生对于内容数据402的宏数据块(macro block)中的每个数据块的运动矢量,该运动矢量被提供给离散余弦变换块(DCT块408)。
照这样,DCT块408取得原始的分块数据,并对数据块进行离散余弦变换,以找到其频谱。该频谱410被提供给量化块412。量化块412将所收到的频谱中的许多较小的值归零,从而减少频谱中的不同频率值的数量。该量化步骤是编码处理的“有损”步骤,量化的程度用量化矩阵和量化系数来规定。
量化之后,使用从量化块412接收的被量化的数据块414进行行程和熵编码。行程编码块(RLC块416)对非零成分和它们之间的零的数量进行编码,以便进一步压缩内容数据402。最后,熵编码块450从所接收的被行程编码的数据确定可变长度代码和可变长度代码大小,以便产生被编码的比特流490。然而,与传统的熵编码器相比较,熵编码块450使用如上面所描述的位级可寻址数据缓冲器480,以便在被编码的数据符号被存储在例如如图7A和图7B所示的存储器设备中之前,存储被编码的数据符号。
现在参考图7A,图7A示出按照本发明示例实施例的熵编码块。熵编码块450包括微处理器452,它读取或者接收要被编码的值。在MPEG的情况下,两个值被接收,包括要被编码的级别和行程。使用所获得的这些值,处理器利用查找表462以便确定对于所接收的数据的可变长度代码和可变长度代码大小。照这样,一旦可变长度编码符号和可变长度代码大小被确定,则熵编码块450可以将被编码的符号存储在数据缓冲器480中。照这样,编码符号在数据存储设备482(482-1,...,482-N)中被编码,直到数据缓冲器480满了。
然而,利用上面所描述的技术,尽管使用了多个数据存储设备,数据缓冲器还是包括单地址空间,这样使得当在数据缓冲器的数据存储设备中完成数据494的存储时,另外的数据或者编码符号被分成第一部分496(存储在482-1中)和第二部分498,并在下一个数据存储设备482-2中被提供,如图7B所示。因此,数据存储设备482使用指针,该指针跟踪数据可以被存储到其中的下一个位的位置。另外,一旦数据存储设备被填满,该数据存储设备符号可以被移动到存储器,并且如上所述,该数据存储设备可以被移到数据缓冲器中的最后的位置,这样使得,它可以被用来存储另外的被编码的数据符号,而其他的数据被写入存储器。
在一个实施例中,数据缓冲器480中的寄存器482被命名,以便它们在缓冲器中具有相同的位置。从而,当数据缓冲器通过目标寄存器被访问时,数据缓冲器480的数据存储寄存器482-1中的数据被存储在目标寄存器中,而数据缓冲器480的数据加载寄存器482-2中的数据从存储器被加载。在存储寄存器向数据缓冲器480写的情况中,数据被存储到数据缓冲器480的数据存储寄存器482-1中,而数据加载寄存器482-2中的数据被加载到存储器中。从而,物理寄存器在加载和存储寄存器之间切换,以使能向例如图5D中所示的数据缓冲器的写或存储。现在描述实现本发明的教导的过程方法。
操作
现在参考图8,图8示出一个流程图,举例说明从例如在图3A中所示的位级可寻址缓冲器302检索数据的方法。在过程块520处,确定是否已经执行了数据访问指令。响应于数据访问指令的执行,在过程块522处,从数据缓冲器302选择数据。接着,在过程块524处,确定数据是否在数据缓冲器302中从源数据存储设备304-1跨越到了下一个数据存储设备304-2(见图5C)。当检测到数据的跨越,则进行过程块538。否则,控制转向到过程块560。在过程块538处,来自源数据存储设备304-1的所选择的数据的部分和来自下一个数据存储设备304-2的所选择的数据的部分被连接起来,以将所选择的数据形成为连续的单元。最后,在过程块560处,所选择的数据被存储在目标数据存储设备342中。
现在参考图9,图9示出一个流程图,举例说明在数据缓冲器302中加载输入比特流的另外的方法(见图5A~图5D)。照这样,在过程块504处,确定是否已经执行了数据加载指令。响应于数据加载指令的执行,在过程块506处,跨过数据缓冲器中的多个数据存储设备的数据被加载到数据缓冲器302中。从而,如上面所描述的,数据缓冲器使用多个数据存储设备,在一个实施例中,这些数据存储设备是128位寄存器。另外,上面所描述的寄存器合并功能允许数据缓冲器作为单地址空间操作,这使得数据能够跨过数据缓冲器中的一个或者多个寄存器。
一旦数据缓冲器被加载,则执行过程块508。在过程块508处,确定是否已经执行了数据转换指令。相应地,响应于数据转换指令的执行,在过程块510处,在数据缓冲器302的数据存储设备304中,数据的顺序被翻转(见图4)。一旦完成,控制流转移到图8的过程块520处。在上面所描述的实施例中,数据转换包括从小端顺序到大端顺序的转换。但是,数据转换并不限于所描述的示例。
现在参考图10,图10示出一个流程图,举例说明检测数据的跨越(见图5C)的另外的方法526。相应地,在过程块528处,接收指示数据缓冲器302中的数据存储设备304-1的设备值。一旦接收到,在过程块530处,接收指示要从源数据存储设备304-1被读取的位的数量的位值。最后,在过程块532处,接收源数据存储设备304-1中被请求数据的地址306。最后,在过程块534处,确定是否被请求数据314的一个或者多个位是否在数据缓冲器302的下一个数据存储设备304-1中。
如上面所描述的,用于确定数据的跨越的技术包括将源数据存储设备304-1的剩余容量和指示被请求数据314的位的数量的位值相比较。照这样,当位的数量超过剩余的容量时,数据跨越到下一个数据存储设备。可替代地,可以接收被请求数据的开始地址306和结束地址308,这样使得当开始地址306和结束地址308指向不同数据存储设备时,就检测到了数据的跨越。当检测到数据跨越时,控制流转移到图8的过程块538处。否则,控制流转移到图8的过程块560处。
现在参考图11,图11示出一个流程图,举例说明存储所选择的数据(见图3B)的另外的方法590。照这样,在过程块592处,接收目标数据存储设备的地址。一旦收到,在过程块594处,从最低有效位(LSB)开始,数据被存储到目标数据存储设备342中。最后,在过程块596处,通过将未占用的位置设为零来完成目标数据存储设备342的未占用的最高有效位(MSB)的补零。
现在参考图12,图12示出一个流程图,举例说明对连接跨越一个或者多个数据存储设备的数据(见图5C)或者对其进行寄存器合并的另外的方法540。在过程块542处,从数据缓冲器302选择数据存储设备304-1。在过程块544处,确定所选择数据存储设备中的全部数据是否被访问了。在一个实施例中,该确定基于如图5A~图5C所示的访问标志310。在另一个实施例中,该确定通过了解开始数据指针306和结束数据指针308是否在同一个寄存器中而作出。如果不是这种情况,则检测到数据的跨越。当所选择的数据存储设备中的全部数据被访问了,在过程块546处,设定数据访问标志。最后,在过程块548处,对数据缓冲器中的每个数据存储设备重复过程块542至546。
现在参考图13,图13示出一旦数据存储设备中的数据已经被访问过时,在数据缓冲器的数据存储设备中加载数据的另外的方法550(见图5A~图5D)。照这样,在过程块552处,从数据缓冲器302选择数据存储设备304-1。接着,在过程块554处,确定数据访问标志310是否被设定。当数据访问标志310被设定时,在过程块556处,用另外的输入数据流数据向所选择的数据存储设备中加载数据。最后,在过程块558处,对数据缓冲器中的每个数据存储设备重复过程块552至556。
现在参考图14,图14示出一个流程图,举例说明一旦数据被存储到目标数据存储设备342中(见图3B),对数据解码的另外的方法562。在过程块564处,目标数据存储设备342中的数据被解码。接着,在过程块580处,用被解码的数据重写目标数据存储设备中的数据。
现在参考图15,图15示出一个流程图,举例说明图14的过程块564的解码目标数据存储设备中的数据的另外的方法566。在过程块568处,确定是否已经执行了数据检测指令。响应于数据检测指令的执行,在过程块570处,确定例如图3B中所示的目标数据存储设备342中的开头一个的位置344。接着,在过程块572处,使用开头一个的位置作为确定移位值的索引从移位表360读取移位值。在过程块574处,根据该移位值移位目标数据存储设备342。
接着,在过程块576处,基于被移位的目标数据存储设备的值作为索引,从查找表352读取解码符号(见图3A)。最后,在过程块578处,同样使用被移位的目标数据存储设备的值作为索引,从符号长度查找表352读取解码符号的长度。照这样,被用来检测所接收的比特流中的代码字的数据检测指令避免了传统解码器为了确定开头一个的位置而使用的许多条件检验。因此,一旦代码字被检测到,则使用指针来标记数据缓冲器302的相应的数据存储设备304中的下一个代码字的起始。
可替代地,如上面参考图3A所描述的,高速缓存350可以被限于包括代码字长度值、级别/幅度值和行程值的解码表352。照这样,在所描述的实施例中,对目标数据存储设备342应用掩码以确定所掩码/所查找的数据。一旦所掩码的数据被确定,则该被掩码的数据被用于访问高速缓存350中的解码表352。如果被请求的数据被包含在表中,则从来自该表的单数据项读取提取出代码字长度值、级别/幅度值和行程值。否则,如果数据没有被包含在表中,则代码字读取将指示出数据不在表中。照这样,在高速缓存350剩余的表中重复该处理,直到定位了所需的数据。
现在参考图16,图16示出在例如图7A和图7B所示的位级可寻址数据缓冲器480中存储数据的方法600。在过程块630处,确定是否已经执行了数据加载指令。响应于数据加载指令的执行,在过程块640处,确定要被加载的数据的数据大小494是否超出了数据缓冲器480中的目标数据存储设备482-1的剩余容量484。当情况是这样时,进行过程块670。
否则,数据被加载或者存储到数据缓冲器480的目标数据存储设备482中。在过程块670处,数据494被划分为第一部分496和第二部分498。一旦被分开,在过程块672处,第一部分496被加载到目标数据存储设备482-1中。接着,数据498的第二部分被加载到数据缓冲器的下一个数据存储设备中(见图7B)。最后,在过程块676处,目标数据存储设备482-1中的数据被移动到例如存储器设备490中。
现在参考图17,图17示出在位级可寻址数据缓冲器480中存储数据之前对数据编码的另外的方法602。在过程块604处,从源数据存储设备选择数据418。一旦被选择,在过程块606处,所选择的数据被编码。接着,在过程块618处,被编码的数据被存储到源数据存储设备中。最后,在过程块620处,执行数据加载指令来将被编码的数据加载到数据缓冲器的一个或者多个数据存储设备中。一旦执行,则控制流转移到图16的过程块630。
现在参考图18,图18示出了一个流程图,举例说明响应于数据加载指令而执行的另外的方法632。在过程块634处,接收数据缓冲器480的目标数据存储设备482中的数据的开始地址位置。接着,在过程块636处,接收数据大小值,该值指示了要被存储在目标数据存储设备482中的数据的位的数量。最后,在过程块638处,接收数据最初所位于的源数据存储设备地址。一旦接收到,则控制流转移到图16的过程块640。
现在参考图19,图19示出一个流程图,举例说明确定要被加载的数据的数据大小是否超过了如图7B所示的数据缓冲器480中的目标设备482-1的剩余容量的另外的方法642。相应地,在过程块644处,确定数据缓冲器480中的当前目标数据存储设备482-1的剩余容量484。接着,在过程块646处,确定所接收的数据大小494是否大于该剩余容量484。当情况是这样时,进行过程块640。否则,控制流转移到图16的过程块650。
在过程块648处,数据大小494超过了目标数据存储设备482-1的剩余容量484。因此,数据必须在如图16所示的过程块640处被划分为第一部分496和第二部分498,如图16所示。通过从所接收的数据492选择数量等于目标数据存储设备482-1的剩余容量484的位来完成该划分。所选择的数据形成数据492的第一部分496,它将被存储到目标数据存储设备中。接着,数据492的剩余的部分被用作第二部分498,这样使得第二部分498可以被存储到数据缓冲器480的下一个数据存储设备482-2中。因此,划分数据的能够使得数据缓冲器能够用作单地址空间,这样使得一旦数据缓冲器中的相应的数据存储设备被填满,数据就可以被写入存储器。
现在参考图20,图20示出一种方法,其中,例如图3A和图7B中所示的数据缓冲器480使用数据存储寄存器482-1和数据加载寄存器482-2作为数据缓冲器480中的多个寄存器。相应地,响应于在数据缓冲器480中存储数据的数据访问指令,确定数据缓冲器480中的当前寄存器是否是数据存储寄存器482-1。当情况是这样时,进行过程块656。在过程块656处,确定数据存储寄存器482-1是否含有额外的容量。当数据存储寄存器482-1含有额外的容量时,进行过程块658。
在过程块658处,来自源数据存储设备的数据被存储到数据存储寄存器482-1中。否则,数据存储寄存器482-1是满的,并且现在必须用作数据加载寄存器482-2。如这里所描述的,数据加载寄存器482-2被用于用作环形缓冲器的数据缓冲器480中,以使得数据加载寄存器482-2被数据完全地填满,从而要求数据被写入存储器490。相对比,数据存储寄存器是含有额外容量的数据寄存器,响应于数据加载指令的执行而在其中加载所接收的数据。
因而,在过程块660处,数据存储寄存器一旦满了就被重命名为数据加载寄存器。接着,在过程块662处,数据加载寄存器中的数据被存储到存储器设备490中。接着,在过程块664处,确定数据加载寄存器482-2是否是空的。照这样,重复过程块662,直到数据加载寄存器482-2是空的。一旦数据加载寄存器482-2是空的,则进行过程块666。在过程块666处,确定源数据存储设备中是否有另外的数据。当源数据存储设备中有另外的数据时,数据加载寄存器482-2被重命名为数据存储寄存器482-1,这样使得这些另外的数据可以被加载。否则,控制流转向过程块650,如图17所示,其中该方法终止。
最后,参考图21,图21示出一个流程图,举例说明如图17所示的过程块606的编码所选择的数据的另外的方法。在过程块610处,读取一个或者多个被存储的数据值。接着,在过程块612处,从如图7A所示的符号查找表中读取可变长度代码符号和可变长度代码大小。如本领域技术人员所公知的,编码符号和长度是基于数据流中的数据元素频率而产生的。最后,在过程块614处,对于每个被存储的数据值重复过程块610和612。
替代实施例
用于提供改进了的熵编码/解码的位级可寻址数据缓冲的一种实施方式的诸方面已经被描述了。然而,位级可寻址缓冲器的各种实施方式提供了包括补充、增加和/或替换上述的这些特征的许多特征。在不同的实施方式中,这些特征可以被实现为图像处理系统的一部分或者硬件/软件编码器/解码器的一部分。另外,为了解释的目的,以上的说明使用了特定的术语以提供对本发明彻底的理解。但是,为了实践本发明,这些特定的细节对于实现本发明并不是必需的,这对于本领域的技术人员是显而易见的。
另外,虽然这里所描述的实施例是针对位级可寻址缓冲器,但是本领域的技术人员应当理解,本发明的教导可以被应用于其他系统。实际上,用于位级操作缓冲的系统在本发明的教导之内,而没有脱离本发明的范围和精神。上述实施例是为了最好地解释本发明的原理及其实际应用而被选择和描述的。这些实施例被选择,从而使得本领域的技术人员能够最好的利用本发明以及具有适于所预期的具体用途的各种修改的各种实施例。
应当理解,即使本发明各种实施例的许多特点和优点,连同本发明各种实施例的结构和功能的细节,已经在以上的说明中被提出了,本公开也仅仅是示例性的。在一些情况中,某些组成部分只在一个实施例中被详细描述。然而,应当认识到并且规定这样的组成部分可以在本发明其他实施例中被使用。在细节上可以作出变化,尤其是在本发明原理之内的一些部分的结构和管理的内容变化到由其中表达了所附权利要求的广泛的一般意义的说法所表明的充分的范围。
本发明提供了优于公知技术的许多优点。本发明包括加速利用或者要求位访问和密集位操作的应用的能力。在操作和提取来自用作缓冲器的寄存器的数据方面,这里所描述的方法获得了改进了的效率和更高的性能(速度),从而加速了熵编码和解码。
本发明的特征提供了对于各种应用的性能优点,这些应用包括位访问和操作,例如促进有效的小端到大端转换的快速字节顺序翻转运算。另外,基于被访问、存储并且按位而不是字节来度量的数据的数量,数据缓冲器保存可以被访问和存储在位边界上的数据。该缓冲器可以包括作为环形缓冲器操作的多个寄存器。当一系列位从一个寄存器被访问了,在另一个寄存器中的数据可以从存储器被加载。从而,当一系列位被存储在一个寄存器中时,另一个寄存器中的数据可以被存储到存储器中。
从数据缓冲器加载或者存储在数据缓冲器中的一系列位可以跨越多个寄存器。最后,一条指令确定从位缓冲器被访问的数据中开头一个的位置。开头一个的位置可以用于确定位的数量,以移位目标寄存器中的位。这是用一条指令完成的,避免了传统熵解码实施方式中的条件分支。目标寄存器中的结果数据被用来访问查找表。位缓冲器还可以允许展开循环的软件优化。
已经公开了示例实施例和最佳方式,可以对所公开的实施例作出修改和变化,而保持在如所附权利要求所定义的本发明的范围之内。

Claims (35)

1.一种方法,包括:
响应于执行数据访问指令,从数据缓冲器选择数据,其中,所述数据缓冲器包括多个数据存储设备,所述多个数据存储设备最初包含了所述被选择的数据;
当所述被选择的数据从所述数据缓冲器中的源数据存储设备跨越到下一个数据存储设备时,将来自所述源数据存储设备的所述被选择的数据的部分与来自所述下一个数据存储设备的所述被选择的数据的剩余部分连接起来,以将所述被选择的数据形成为连续的单元;以及
将所述被选择的数据存储在目标数据存储设备中。
2.根据权利要求1所述的方法,其中,在所述选择数据之前,所述方法还包括:
响应于执行数据加载指令,以来自输入数据流的数据加载所述数据缓冲器,所述数据跨越了所述数据缓冲器中的所述多个数据存储设备;以及
当收到数据转换指令时,响应于所述数据转换指令的执行,翻转被加载在所述数据缓冲器中的所述数据的顺序。
3.根据权利要求1所述的方法,其中,所述连接还包括:
当所述数据缓冲器的一个或者多个数据存储设备中的数据的各部分已经被访问时,对具有完全被访问的数据的各数据存储设备设定数据访问标志;
从所述数据缓冲器的所述多个数据存储设备选择一个数据存储设备;
当所述数据存储设备的数据访问标志被设定时,以来自所述输入数据流的另外的数据加载所述被选择的数据存储设备;
一旦所述数据存储设备的加载完成,则复位所述被选择的数据存储设备的所述数据访问标志;以及
对于所述数据缓冲器的各数据存储设备重复所述选择、加载和复位。
4.根据权利要求1所述的方法,还包括:
解码被包含在所述目标数据存储设备中的数据;以及
用所述被解码的数据重写所述目标数据存储设备中的数据。
5.根据权利要求4所述的方法,其中,所述对数据的解码还包括:
响应于执行数据检测指令,确定在所述目标数据存储设备中的开头一个的位置;
使用所述开头一个的位置作为索引,读取移位表以确定移位值;
基于所述移位值,移位所述目标数据存储设备;
使用所述被移位的目标数据存储设备的值作为索引,从查找表读取解码符号;以及
使用所述被移位的目标数据存储设备的值作为索引,在符号查找表中读取解码符号长度。
6.根据权利要求1所述的方法,其中,所述选择还包括:
接收指示出所述数据缓冲器中的源数据存储设备的设备值;
接收所述数据的第一位位于其中的所述源数据存储设备中的位地址,以便所述数据缓冲器在位级是可寻址的;以及
接收指示出要从所述源数据存储设备被读取的位的数量的位值,其中,基于所述源数据存储设备的所述位地址和所述数据的所述位值,确定数据是否跨越所述数据缓冲器的一个或者多个数据存储设备,以便当来自所述源数据存储设备的所述数据的最后一位在下一个数据存储设备中时,所述数据跨越到所述下一个数据存储设备。
7.根据权利要求1所述的方法,其中,将所述被选择的数据存储在目标存储设备中还包括:
接收所述目标数据存储设备的地址;
存储从所述目标存储设备的最低有效位置开始的所述数据;以及
对所述目标存储设备的未占用部分补零,以便所述未占用部分中的位被设为零。
8.根据权利要求1所述的方法,其中,加载所述数据缓冲器还包括:
接收输入数据流数据位于其中的存储器设备中的数据的地址;以及
从所述收到的存储器地址访问所述输入数据流数据。
9.根据权利要求1所述的方法,还包括:
响应于执行循环展开指令,按预定的次数展开所述数据缓冲器,所述次数是基于所述数据缓冲器所使用的所述多个数据存储设备的数量减1,除以任意一次从所述数据缓冲器所访问的位的最大数量。
10.一种方法,包括:
响应于执行数据加载指令,从源数据存储设备将数据存储在数据缓冲器中,其中,所述数据缓冲器包括数据被存储在其中的多个数据存储设备;
当所述数据的大小超出所述数据缓冲器中的目标数据存储设备的剩余容量时,将所述数据划分为第一部分和第二部分;
将所述数据的第一部分存储在所述目标数据存储设备中;
将所述数据的第二部分存储在所述数据缓冲器的下一个数据存储设备中;以及
一旦所述数据缓冲器设备中的数据存储被完成,则将所述目标数据存储设备中的数据移动到存储器设备中。
11.根据权利要求10所述的方法,其中,在所述存储之前,所述方法还包括:
选择要求编码的内容数据;
编码所述被选择的数据以形成被编码的数据;
将所述被编码的数据存储在所述源数据存储设备中;以及
执行将所述被编码的数据加载到所述数据缓冲器的所述目标数据存储设备中的数据加载指令。
12.根据权利要求10所述的方法,其中,所述存储还包括:
接收位地址,所述位地址指示出所述数据要被存储到其中的所述数据缓冲器的目标数据存储设备中的开始位置,以便所述数据缓冲器在位级是可寻址的;
接收指示所述数据的位的数量的数据大小值;以及
接收所述数据最初被包含于其中的所述源数据存储设备的地址。
13.根据权利要求10所述的方法,其中,划分所述数据还包括:
确定所述目标数据存储设备的剩余容量;
将所述目标数据存储设备的所述剩余容量与所接收的数据大小相比较;以及
当所述数据大小超出所述被选择的数据存储设备的所述剩余容量时,将所述数据划分为大小等于所述目标数据存储设备的所述剩余容量的所述第一部分和包含所述数据剩余部分的所述第二部分。
14.根据权利要求10所述的方法,其中,所述数据缓冲器包括作为所述多个数据存储设备的数据存储寄存器和数据加载寄存器,还包括:
当所述数据存储寄存器包含额外的容量时,将来自所述源数据存储设备的数据存储到所述数据存储寄存器中;
当数据被存储在所述数据存储寄存器中时,将所述数据加载寄存器中的数据加载到所述存储器设备中;
一旦向所述存储器设备的数据加载完成,则将来自所述源数据存储设备的数据存储在所述数据加载寄存器中;以及
一旦所述数据存储寄存器满了,则将所述数据存储寄存器中的数据加载到所述存储器设备中,以便所述数据加载寄存器为了存储来自所述源数据存储设备的数据而被重命名以用作数据存储寄存器,并且所述数据存储寄存器为了将所存储的数据加载到所述存储器设备中而被重命名以用作数据加载寄存器。
15.根据权利要求11所述的方法,其中,编码还包括:
确定所述被选择的内容数据的各数据元素的数据频率值;
基于相应的数据频率值,对各数据元素选择相应的编码符号长度;
基于各数据元素的相应的符号长度,选择所述被选择的内容数据的各数据元素的相应的编码符号,以形成作为所述被编码的数据的一个或者多个代码字;以及
用所述一个或者多个代码字重写所述源数据存储设备。
16.一种包括程序指令的机器可读存储介质,所述程序指令当被处理器执行时,引导系统以规定的方式起作用,所述程序指令包括:
响应于执行数据访问指令,从数据缓冲器选择数据,其中,所述数据缓冲器包括多个数据存储设备,所述多个数据存储设备最初包含了所述被选择的数据;
当所述被选择的数据从所述数据缓冲器中的源数据存储设备跨越到下一个数据存储设备时,将来自所述源数据存储设备的所述被选择的数据的部分与来自所述下一个数据存储设备的所述被选择的数据的剩余部分连接起来,以将所述被选择的数据形成为连续的单元;以及
将所述被选择的数据存储在目标数据存储设备中。
17.根据权利要求16所述的机器可读存储介质,其中,在所述选择数据之前,所述方法还包括:
响应于执行数据加载指令,以来自输入数据流的数据加载所述数据缓冲器,所述数据跨越了所述数据缓冲器中的所述多个数据存储设备;以及
当收到数据转换指令时,响应于所述数据转换指令的执行,翻转被加载在所述数据缓冲器中的所述数据的顺序。
18.根据权利要求16所述的机器可读存储介质,其中,所述连接还包括:
当所述数据缓冲器的一个或者多个数据存储设备中的数据的各部分已经被访问时,对具有完全被访问的数据的各数据存储设备设定数据访问标志;
从所述数据缓冲器的所述多个数据存储设备选择一个数据存储设备;
当所述数据存储设备的数据访问标志被设定时,以来自所述输入数据流的另外的数据加载所述被选择的数据存储设备;
一旦所述数据存储设备的加载完成,则复位所述被选择的数据存储设备的所述数据访问标志;以及
对于所述数据缓冲器的各数据存储设备重复所述选择、加载和复位。
19.根据权利要求16所述的机器可读存储介质,还包括:
解码被包含在所述目标数据存储设备中的数据;以及
用所述被解码的数据重写所述目标数据存储设备中的数据。
20.根据权利要求19所述的机器可读存储介质,其中,所述对数据的解码还包括:
响应于执行数据检测指令,确定在所述目标数据存储设备中的开头一个的位置;
使用所述开头一个的位置作为索引,读取移位表以确定移位值;
基于所述移位值,移位所述目标数据存储设备;
使用所述被移位的目标数据存储设备的值作为索引,从查找表读取解码符号;以及
使用所述被移位的目标数据存储设备的值作为索引,在符号查找表中读取解码符号长度。
21.根据权利要求16所述的机器可读存储介质,其中,所述选择还包括:
接收指示出所述数据缓冲器中的源数据存储设备的设备值;
接收所述数据的第一位位于其中的所述源数据存储设备中的位地址,以便所述数据缓冲器在位级是可寻址的;以及
接收指示出要从所述源数据存储设备读取的位的数量的位值,其中,基于所述源数据存储设备的所述位地址和所述数据的所述位值,确定数据是否跨越所述数据缓冲器的一个或者多个数据存储设备,以便当来自所述源数据存储设备的所述数据的最后一位在下一个数据存储设备中时,所述数据跨越到所述下一个数据存储设备。
22.根据权利要求16所述的机器可读存储介质,其中,将所述被选择的数据存储在目标存储设备中还包括:
接收所述目标数据存储设备的地址;
存储从所述目标存储设备的最低有效位置开始的所述数据;以及
对所述目标存储设备的未占用部分补零,以便所述未占用部分中的位被设为零。
23.根据权利要求16所述的机器可读存储介质,其中,加载所述数据缓冲器还包括:
接收输入数据流数据位于其中的存储器设备中的数据的地址;以及
从所述收到的存储器地址访问所述输入数据流数据。
24.根据权利要求16所述的机器可读存储介质,还包括:
响应于执行循环展开指令,按预定的次数展开所述数据缓冲器,所述次数是基于所述数据缓冲器所使用的所述多个数据存储设备的数量减1,除以任意一次从所述数据缓冲器所访问的位的最大数量。
25.一种包括程序指令的机器可读存储介质,所述程序指令当被处理器执行时,引导系统以规定的方式起作用,所述程序指令包括:
响应于执行数据加载指令,从源数据存储设备将数据存储在数据缓冲器中,其中,所述数据缓冲器包括数据被存储在其中的多个数据存储设备;
当所述数据的大小超出所述数据缓冲器中的目标数据存储设备的剩余容量时,将所述数据划分为第一部分和第二部分;
将所述数据的第一部分存储在所述目标数据存储设备中,将所述数据的第二部分存储在所述数据缓冲器的下一个数据存储设备中;以及
一旦所述数据缓冲器设备中的数据存储被完成,则将所述目标数据存储设备中的数据移动到存储器设备中。
26.根据权利要求25所述的机器可读存储设备,其中,在所述存储之前,所述方法还包括:
选择要求编码的内容数据;
编码所述被选择的数据以形成被编码的数据;
将所述被编码的数据存储在所述源数据存储设备中;以及
执行将所述被编码的数据加载到所述数据缓冲器的所述目标数据存储设备中的数据加载指令。
27.根据权利要求25所述的机器可读存储设备,其中,所述存储还包括:
接收位地址,所述位地址指示出所述数据要被存储到其中的所述数据缓冲器的目标数据存储设备中的开始位置,以便所述数据缓冲器在位级是可寻址的;
接收指示所述数据的位的数量的数据大小值;以及
接收所述数据最初被包含于其中的所述源数据存储设备的地址。
28.根据权利要求25所述的机器可读存储设备,其中,划分所述数据还包括:
确定所述被选择的内容数据的各数据元素的数据频率值;
基于相应的数据频率值,对各数据元素选择相应的编码符号长度;
基于各数据元素的相应的符号长度,选择所述被选择的内容数据的各数据元素的相应的编码符号,以形成作为所述被编码的数据的一个或者多个代码字;以及
用所述一个或者多个代码字重写所述源数据存储设备。
29.根据权利要求25所述的机器可读存储设备,所述数据缓冲器包括作为所述多个数据存储设备的数据存储寄存器和数据加载寄存器,还包括:
当所述数据存储寄存器包含额外的容量时,将来自所述源数据存储设备的数据存储到所述数据存储寄存器中;
当数据被存储在所述数据存储寄存器中时,将所述数据加载寄存器中的数据加载到所述存储器设备中;
一旦向所述存储器设备的数据加载完成,则将来自所述源数据存储设备的数据存储在所述数据加载寄存器中;以及
一旦所述数据存储寄存器满了,则将所述数据存储寄存器中的数据加载到所述存储器设备中,以便所述数据加载寄存器为了存储来自所述源数据存储设备的数据而被重命名以用作数据存储寄存器,并且所述数据存储寄存器为了将所存储的数据加载到所述存储器设备中而被重命名以用作数据加载寄存器。
30.根据权利要求26所述的机器可读存储设备,其中,编码还包括:
确定所述被选择的内容数据的各数据元素的数据频率值;
基于相应的数据频率值,对各数据元素选择相应的编码符号长度;
基于各数据元素的相应的符号长度,选择所述被选择的内容数据的各数据元素的相应的编码符号,以形成作为所述被编码的数据的一个或者多个代码字;以及
用所述一个或者多个代码字重写所述源数据存储设备。
31.一种装置,包括:
具有用于执行指令的电路的处理器;
包括多个数据存储设备的数据缓冲器;和
被耦合到所述处理器的存储设备,具有存储于其中的指令序列,所述指令序列当被所述处理器执行时,引起所述处理器:
响应于执行数据访问指令,从所述数据缓冲器的源数据存储设备选择数据,
当所述被选择的数据从所述数据缓冲器中的所述源数据存储设备跨越到下一个数据存储设备时,将来自所述源数据存储设备的所述被选择的数据的部分与来自所述下一个数据存储设备的所述被选择的数据的剩余部分连接起来,以将所述被选择的数据形成为连续的单元;以及
将所述被选择的数据存储在目标数据存储设备中。
32.根据权利要求31所述的装置,其中,所述处理器还被引起:
响应于执行数据加载指令,将数据从源数据存储设备存储到所述数据缓冲器的目标数据存储设备中;
当所述数据的大小超出所述目标数据存储设备的剩余容量时,将所述数据划分为第一部分和第二部分;
将所述数据的第一部分存储在所述目标数据存储设备中;
将所述数据的第二部分存储在所述数据缓冲器的下一个数据存储设备中;以及
一旦所述数据缓冲器中的数据存储被完成,则将所述目标数据存储设备中的数据移动到存储器设备中。
33.根据权利要求31所述的装置,其中,用于所述连接的所述指令还引起所述处理器:
当所述数据缓冲器的一个或者多个数据存储设备中的数据的各部分已经被访问时,对具有完全被访问的数据的各数据存储设备设定数据访问标志;
从所述数据缓冲器的所述多个数据存储设备选择一个数据存储设备;
当所述数据存储设备的数据访问标志被设定时,以来自输入数据流的数据加载所述被选择的数据存储设备;
一旦所述数据存储设备的加载完成,则复位所述被选择的数据存储设备的所述数据访问标志;以及
对于所述数据缓冲器的各数据存储设备重复所述选择、加载和复位。
34.根据权利要求32所述的装置,其中,所述数据缓冲器包括作为所述多个数据存储设备的数据存储寄存器和数据加载寄存器,并且,所述处理器还被引起:
当所述数据存储寄存器包含额外的容量时,将来自所述源数据存储设备的数据存储到所述数据存储寄存器中;
当数据被存储在所述数据存储寄存器中时,将所述数据加载寄存器中的数据加载到所述存储器设备中;
一旦向所述存储器设备的数据加载完成,则将来自所述源数据存储设备的数据存储在所述数据加载寄存器中;以及
一旦所述数据存储寄存器满了,则将所述数据存储寄存器中的数据加载到存储器中,以便所述数据加载寄存器为了存储来自所述源数据存储设备的数据而被重命名以用作数据存储寄存器,并且所述数据存储寄存器为了将所存储的数据加载到所述存储器设备中而被重命名以用作数据加载寄存器。
35.根据权利要求31所述的装置,其中,所述数据缓冲器包括位级寻址能力,以便所述多个数据存储设备形成位级可寻址的单地址空间。
CNB028174933A 2001-09-06 2002-08-30 向/从缓冲器提取和加载数据的装置和方法 Expired - Fee Related CN100357879C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/948,333 2001-09-06
US09/948,333 US6781589B2 (en) 2001-09-06 2001-09-06 Apparatus and method for extracting and loading data to/from a buffer

Publications (2)

Publication Number Publication Date
CN1552016A true CN1552016A (zh) 2004-12-01
CN100357879C CN100357879C (zh) 2007-12-26

Family

ID=25487674

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028174933A Expired - Fee Related CN100357879C (zh) 2001-09-06 2002-08-30 向/从缓冲器提取和加载数据的装置和方法

Country Status (10)

Country Link
US (1) US6781589B2 (zh)
EP (1) EP1430388B1 (zh)
JP (1) JP3860574B2 (zh)
KR (1) KR100806435B1 (zh)
CN (1) CN100357879C (zh)
AT (1) ATE464597T1 (zh)
AU (1) AU2002332759A1 (zh)
DE (1) DE60236000D1 (zh)
RU (1) RU2265879C2 (zh)
WO (1) WO2003023600A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105378647A (zh) * 2013-06-19 2016-03-02 华为技术有限公司 存储器聚合设备
CN106909460A (zh) * 2017-01-24 2017-06-30 广东德诚网络科技有限公司 数据缓冲方法、装置及存储介质
CN108352843A (zh) * 2015-11-05 2018-07-31 阿姆Ip有限公司 数据流组装控制
CN109614362A (zh) * 2019-03-07 2019-04-12 深兰人工智能芯片研究院(江苏)有限公司 一种数据交换方法及电子设备

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
JP4149926B2 (ja) * 2001-11-01 2008-09-17 イマージョン コーポレーション 触知感覚を与える方法及び装置
US7263128B2 (en) * 2002-11-13 2007-08-28 Sony Corporation Triple-buffering method for overlapped motion compensation in a video decoder
JP2006510080A (ja) * 2002-12-11 2006-03-23 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 再構成可能なマルチプロセッサシステムにおける構成記述を符号化する方法及び装置
US6867715B2 (en) * 2003-06-25 2005-03-15 Broadcom Corporation System, method, and apparatus for variable length decoder
US7334116B2 (en) * 2004-10-06 2008-02-19 Sony Computer Entertainment Inc. Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length
US7428619B2 (en) 2005-01-18 2008-09-23 Sony Computer Entertainment Inc. Methods and apparatus for providing synchronization of shared data
US7586425B2 (en) * 2006-07-11 2009-09-08 Nokia Corporation Scalable video coding and decoding
US20120131584A1 (en) * 2009-02-13 2012-05-24 Alexey Raevsky Devices and Methods for Optimizing Data-Parallel Processing in Multi-Core Computing Systems
KR20120108564A (ko) * 2011-03-24 2012-10-05 삼성전자주식회사 데이터 처리 시스템 및 그 동작 방법
RU2557579C1 (ru) * 2014-02-12 2015-07-27 Закрытое акционерное общество "Электронно-вычислительные информационные и инструментальные системы" (ЗАО "ЭЛВИИС") Способ и система обработки изображения
RU2598323C1 (ru) * 2015-03-26 2016-09-20 Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" Способ адресации кольцевого буфера в памяти микропроцессора
CN114598893B (zh) * 2020-11-19 2024-04-30 京东方科技集团股份有限公司 文字的视频实现方法及系统、电子设备、存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105128A (ja) * 1993-10-07 1995-04-21 Mitsubishi Electric Corp データ転送装置
JP2715871B2 (ja) 1993-12-20 1998-02-18 日本電気株式会社 可変長符号化方法
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
US6052522A (en) 1997-10-30 2000-04-18 Infineon Technologies North America Corporation Method and apparatus for extracting data stored in concatenated registers
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6247112B1 (en) 1998-12-30 2001-06-12 Sony Corporation Bit manipulation instructions
US6542541B1 (en) * 2000-01-12 2003-04-01 Sony Corporation Method and apparatus for decoding MPEG video signals using multiple data transfer units
AU2001226324A1 (en) 2000-01-18 2001-07-31 Clearwater Networks, Inc. Method and apparatus for improved computer load and store operations
US6621428B1 (en) 2000-05-04 2003-09-16 Hewlett-Packard Development Company, L.P. Entropy codec for fast data compression and decompression
US20020144027A1 (en) * 2001-03-27 2002-10-03 Schmisseur Mark A. Multi-use data access descriptor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105378647A (zh) * 2013-06-19 2016-03-02 华为技术有限公司 存储器聚合设备
US9996489B2 (en) 2013-06-19 2018-06-12 Huawei Technologies Co., Ltd. Memory aggregation device
CN105378647B (zh) * 2013-06-19 2019-01-15 华为技术有限公司 存储器聚合设备
CN108352843A (zh) * 2015-11-05 2018-07-31 阿姆Ip有限公司 数据流组装控制
CN106909460A (zh) * 2017-01-24 2017-06-30 广东德诚网络科技有限公司 数据缓冲方法、装置及存储介质
CN106909460B (zh) * 2017-01-24 2018-06-05 广东德诚科教有限公司 数据缓冲方法、装置及存储介质
CN109614362A (zh) * 2019-03-07 2019-04-12 深兰人工智能芯片研究院(江苏)有限公司 一种数据交换方法及电子设备

Also Published As

Publication number Publication date
EP1430388A2 (en) 2004-06-23
US6781589B2 (en) 2004-08-24
RU2004110227A (ru) 2005-03-10
KR20040039335A (ko) 2004-05-10
US20030043156A1 (en) 2003-03-06
EP1430388B1 (en) 2010-04-14
RU2265879C2 (ru) 2005-12-10
DE60236000D1 (de) 2010-05-27
JP3860574B2 (ja) 2006-12-20
JP2005502955A (ja) 2005-01-27
KR100806435B1 (ko) 2008-02-21
ATE464597T1 (de) 2010-04-15
WO2003023600A3 (en) 2004-04-15
CN100357879C (zh) 2007-12-26
AU2002332759A1 (en) 2003-03-24
WO2003023600A2 (en) 2003-03-20

Similar Documents

Publication Publication Date Title
US7132963B2 (en) Methods and apparatus for processing variable length coded data
CN1552016A (zh) 向/从缓冲器提取和加载数据的装置和方法
CN1615653B (zh) 多通道视频译码的系统和方法
US6959348B1 (en) Method and system for accessing data
US10681363B2 (en) Lossless compression method and system applied to hardware video decoding
US7286066B1 (en) Acceleration of bitstream decoding
US20070076971A1 (en) Compression of images for computer graphics
US7885336B2 (en) Programmable shader-based motion compensation apparatus and method
CN1825978A (zh) 利用基数近似或利用差分码和转义码的帧压缩
US7298297B1 (en) Hardware-implemented Huffman decoder
CN1251492C (zh) 利用基数近似或利用差分码和转义码的帧压缩
CN106031168A (zh) 具有减少色彩分辨率的视频流的自适应处理
US20050047510A1 (en) Data processing device for MPEG
KR100968675B1 (ko) Jpeg 어플리케이션의 가변 길이 코드 디코딩
US6512852B1 (en) Method and apparatus for concatenating bits of odd-length words
US20020081038A1 (en) Graphic image coding
US8363968B2 (en) Image coding method for facilitating run length coding and image encoding device thereof
US20070189614A1 (en) Method and system for pipelined processing in an integrated embedded image and video accelerator
JP3781012B2 (ja) 画像データ圧縮方法、画像データ伸長方法、および画像データ伸長回路
JPH0819002A (ja) 画像処理装置及びその方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071226

Termination date: 20170830