可变长度编码的数据流的高带宽解压

申请号 CN201280060474.4 申请日 2012-11-12 公开(公告)号 CN103975533B 公开(公告)日 2017-11-21
申请人 国际商业机器公司; 发明人 K·B·阿加瓦尔; H·P·霍夫斯蒂; D·A·詹姆塞克; A·K·马丁;
摘要 提供用于对可变长度编码的数据流解码的机制。 数据处理 系统的 解码器 接收数据输入线。数据输入线是可变长度编码的数据流的一部分。解码器确定数据输入线向下一数据输入线上的位溢出数量。解码器基于确定的位溢出数量对准数据输入线以在符号边界开始。解码器令牌化对准的数据输入线以生成令牌集合。每个令牌对应于在对准的下一数据输入线中的编码的符号。解码器基于令牌集合生成数据输出字。数据输出字对应于原有数据集中的数据字。
权利要求

1.一种在数据处理系统中用于对可变长度编码的数据流解码的方法,包括:
由所述数据处理系统解码器接收数据输入线,其中所述数据输入线是所述可变长度编码的数据流的一部分,其中所述数据输入线包括在一个处理器周期接收到的所述可变长度编码的数据流的数据字节数;
由所述解码器确定所述数据输入线向下一数据输入线上的位溢出数量,其中所述位溢出,是指一个符号的位存在于所述数据输入线和所述下一数据输入线二者中;
由所述解码器基于确定的所述位溢出数量将所述下一数据输入线对准为开始于编码的符号边界,以生成对准的下一数据输入线;
由所述解码器令牌化所述对准的下一数据输入线以生成令牌集合,其中每个令牌对应于在所述对准的下一数据输入线中的符号;并且
由所述解码器基于所述令牌集合生成数据输出字,其中所述数据输出字对应于原有数据集中的数据字。
2.根据权利要求1所述的方法,其中确定所述数据输入线向下一数据输入线上的位溢出数量包括:
执行所述数据输入线的多个推测解码操作,每个推测解码操作对应于多个不同可能位溢出数量之一;以及
对于多个可能位溢出数量中的每个可能位溢出数量,基于所述数据输入线的所述多个推测解码操作的结果确定所述数据输入线的位溢出数量。
3.根据权利要求2所述的方法,其中位溢出数量在0位至Hmax-1位的范围中,其中Hmax是所述数据输入线中的可变长度符号的最大长度,并且其中对于在从0至Hmax-1的所述范围中的每个可能溢出位数执行推测解码操作。
4.根据权利要求2所述的方法,其中并行执行所述多个推测解码操作,并且其中确定所述数据输入线的位溢出数量包括基于针对所述可变长度编码的数据流中的先前数据输入线而确定的位溢出数量来选择所述多个推测解码操作之一的结果。
5.根据权利要求2所述的方法,其中确定位溢出数量包括基于所述多个推测解码操作的所述结果和先前数据输入线的解码结果确定所述位溢出数量。
6.根据权利要求1所述的方法,其中由所述解码器令牌化所述对准的下一数据输入线以生成令牌集合包括:通过具有多级的令牌化流线处理所述对准的下一输入线,其中每级包括计算逻辑,所述计算逻辑提取用于所述对准的下一输入线中的下一编码的符号的符号数据、确定与提取的所述符号数据关联的扩充字节数目并且基于用于所述对准的下一输入线的扩充字节先前总数和提取的所述符号数据的尺寸累计用于所述对准的下一输入线的扩充字节总数。
7.根据权利要求6所述的方法,其中所述令牌化流水线的末级利用用于从所述对准的下一输入线提取的被提取符号数据来更新具有条目的令牌表数据结构。
8.根据权利要求7所述的方法,其中基于所述令牌集合生成数据输出字包括在相同的时间处理来自至少两个输入线的令牌。
9.根据权利要求7所述的方法,其中提取用于下一编码的符号的符号数据包括提取将对应的提取的符号的类型指示为字面符号类型或者对字面符号类型的引用的数据、响应于所述类型指示字面符号类型而指示字面值的数据以及响应于所述类型指示引用类型而指示向后距离指针的数据,并且其中更新具有条目的令牌表数据结构包括向所述条目填充与关联于所述令牌表条目的提取的符号对应的提取的符号数据。
10.根据权利要求1所述的方法,其中所述可变长度编码的数据流包括使用霍夫曼编码算法而被编码后的原有数据。
11.根据权利要求1所述的方法,其中以流水线化方式执行所述方法,以便每时钟周期处理来自所述可变长度编码的数据流的数据输入线。
12.根据权利要求1所述的方法,其中基于所述令牌集合生成数据输出字包括以下操作中的至少一个操作:
在输出生成器逻辑的多个N位存储器中的每个存储器中存储来自所述可变长度编码的数据流的解码的数据的相同部分,其中N是每处理器周期将在所述输出字中被输出的解码的数据的字节数;并且
对于所述数据输出字中的N个字节中的每个字节,根据符号类型输出从所述多个N位存储器中的对应的存储器读取的数据字节或者来自令牌表条目的字面值;或者在所述输出生成器逻辑的单个共享存储器中存储解码的数据的一部分,所述单个共享存储器具有N个读取端口,每个读取端口用于每个处理器周期要在所述数据输出字中被输出的解码数据的一个字节;并且
对于所述数据输出字中的所述N个字节中的每个字节,根据所述符号类型输出从多个N个读取端口中的对应的读取端口读取的数据字节或者来自令牌表条目的字面值。
13.一种计算机可读存储介质,所述计算机可读存储介质具有在其中存储的计算机可读程序,其中所述计算机可读程序当在数据处理系统上被执行时使所述数据处理系统:
接收数据输入线,其中所述数据输入线是可变长度编码的数据流的一部分,其中所述数据输入线包括在一个处理器周期接收到的所述可变长度编码的数据流的数据字节数;
确定所述数据输入线向下一数据输入线上的位溢出数量,其中所述位溢出,是指一个符号的位存在于所述数据输入线和所述下一数据输入线二者中;
基于确定的所述位溢出数量将所述下一数据输入线对准为开始于编码的符号边界;
令牌化对准的所述下一数据输入线以生成令牌集合,其中每个令牌对应于在对准的所述下一数据输入线中的符号;并且
基于所述令牌集合生成数据输出字,其中所述数据输出字对应于原有数据集中的数据字。
14.根据权利要求13所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统通过以下操作来确定所述数据输入线向下一数据输入线上的位溢出数量:
执行所述数据输入线的多个推测解码操作,每个推测解码操作对应于多个不同可能位溢出数量之一;以及
对于多个可能位溢出数量中的每个可能位溢出数量,基于所述数据输入线的所述多个推测解码操作的结果确定所述数据输入线的位溢出数量。
15.根据权利要求14所述的计算机可读存储介质,其中位溢出数量在0位至Hmax-1位的范围中,其中Hmax是所述数据输入线中的可变长度符号的最大长度,并且其中对于在从0至Hmax-1的所述范围中的每个可能溢出位数执行推测解码操作。
16.根据权利要求14所述的计算机可读存储介质,其中并行执行所述多个推测解码操作,并且其中所述计算机可读程序使所述数据处理系统通过基于针对所述可变长度编码的数据流中的先前数据输入线而确定的位溢出数量选择所述多个推测解码操作之一的结果来确定所述数据输入线的位溢出数量。
17.根据权利要求14所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统通过基于所述多个推测解码操作的所述结果和先前数据输入线的解码结果确定位溢出数量来确定所述位溢出数量。
18.根据权利要求13所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统通过具有多级的令牌化流水线处理对准的下一输入线来令牌化所述对准的下一数据输入线以生成令牌集合,其中每级包括计算逻辑,所述计算逻辑提取用于所述对准的下一输入线中的下一编码的符号的符号数据、确定与提取的所述符号数据关联的扩充字节数目并且基于用于所述对准的下一输入线的扩充字节先前总数和提取的所述符号数据的尺寸累计用于所述对准的下一输入线的扩充字节总数。
19.根据权利要求18所述的计算机可读存储介质,其中所述令牌化流水线的末级利用用于从所述对准的下一输入线提取的被提取的符号数据来更新具有条目的令牌表数据结构。
20.根据权利要求19所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统通过在基本上相同的时间处理来自至少两个输入线的令牌来基于所述令牌集合生成数据输出字。
21.根据权利要求19所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统通过提取将对应的提取的符号的类型指示为字面符号类型或者对字面符号类型的引用的数据、响应于所述类型指示字面符号类型而指示字面值的数据以及响应于所述类型指示引用类型而指示向后距离指针的数据来提取用于下一编码的符号的符号数据,并且其中所述计算机可读程序使所述数据处理系统通过向条目填充与关联于所述令牌表条目的提取的符号对应的提取的符号数据来利用所述条目更新具有条目的令牌表数据结构。
22.根据权利要求13所述的计算机可读存储介质,其中所述可变长度编码的数据流包括使用霍夫曼编码算法而被编码后的原有数据。
23.根据权利要求13所述的计算机可读存储介质,其中所述计算机可读程序使所述数据处理系统以流水线化方式对来自所述可变长度编码的数据流的数据线操作,以便每时钟周期处理来自所述可变长度编码的数据流的数据输入线。
24.根据权利要求13所述的计算机可读存储介质,其中所述计算机可读程序还使所述数据处理系统通过以下操作中的至少一个操作来基于所述令牌集合生成数据输出字:
在输出生成器逻辑的多个N位存储器中的每个存储器中存储来自所述可变长度编码的数据流的解码的数据的相同部分,其中N是每处理器周期将在所述输出字中被输出的解码的数据的字节数;并且
对于所述数据输出字中的N个字节中的每个字节,根据符号类型输出从所述多个N位存储器中的对应的存储器读取的数据字节或者来自令牌表条目的字面值;或者在所述输出生成器逻辑的单个共享存储器中存储解码的数据的一部分,所述单个共享存储器具有N个读取端口,每个读取端口用于每个处理器周期要在所述数据输出字中被输出的解码数据的一个字节;并且
对于所述数据输出字中的所述N个字节中的每个字节,根据所述符号类型输出从多个N个读取端口中的对应的读取端口读取的数据字节或者来自令牌表条目的字面值。
25.一种在数据处理系统中用于对可变长度编码的数据流解码的装置,包括:
处理器;以及
耦合到所述处理器的接口,其中经由所述接口接收可变长度编码的数据流,并且其中所述处理器包括用于以下操作的逻辑:
接收数据输入线,其中所述数据输入线是所述可变长度编码的数据流的一部分,其中所述数据输入线包括在一个处理器周期接收到的所述可变长度编码的数据流的数据字节数;
确定所述数据输入线向下一数据输入线上的位溢出数量,其中所述位溢出,是指一个符号的位存在于所述数据输入线和所述下一数据输入线二者中;
基于确定的所述位溢出数量对准所述下一数据输入线以在编码的符号边界开始;
令牌化对准的所述下一数据输入线以生成令牌集合,其中每个令牌对应于在对准的所述下一数据输入线中的符号;并且
基于所述令牌集合生成数据输出字,其中所述数据输出字对应于原有数据集中的数据字。

说明书全文

可变长度编码的数据流的高带宽解压

技术领域

[0001] 本申请总体上涉及一种改进的数据处理装置和方法并且更具体地涉及用于提供可变长度编码的数据流的高带宽解压的机制。

背景技术

[0002] 无损数据压缩是允许从压缩的数据重建精确原有数据的一类数据压缩算法。术语“无损”与仅允许重建原有数据的近似以换取更佳压缩速率的有损数据压缩技术形成对照。在包括ZIP压缩格式、在基于Unix操作系统的计算系统中的GZIP压缩等的许多不同类型的应用中使用无损数据压缩。
[0003] 一类无损数据压缩是在第5,051,745号美国专利中描述的DEFLATE数据压缩算法。DEFLATE数据压缩算法利用Lempel-Ziv LZ77压缩算法和霍夫曼编码的组合。LZ77压缩是如下滑动窗压缩技术,在该滑动窗压缩技术中,对于数据范围(或者窗),存储尚未被检测为重复的串的字面字节,并且当在范围(或者窗)内检测到重复串时,作为替代存储指向先前存储的字面字节的指针。指针包括在范围(或者窗)内的长度和向后距离。霍夫曼编码然后应用于在LZ77算法中的字面字节和指针。霍夫曼编码提供用于使用可变长度编码对字面字节和指针编码的能。可以在以下文献中找到关于DEFLATE数据压缩算法的更多信息:
Deutsch,“DEFLATE Compressed Data Format Specification,”version 1.3,Network Working Group RFC 1951,May 1996。
发明内容
[0004] 在一个例示性实施例中,提供了一种在数据处理系统中用于对可变长度编码的数据流解码的方法。该方法包括由数据处理系统的解码器接收数据输入线,其中数据输入线是可变长度编码的数据流的一部分。该方法还包括由解码器确定数据输入线向下一数据输入线上的位溢出数量以用于符号对准。此外,该方法包括由解码器基于来自先前数据输入线的确定的位溢出数量对准数据输入线以在符号边界开始。另外,该方法包括由解码器令牌化对准的数据输入线以生成令牌集合,其中每个令牌对应于在对准的下一输入线中的可变长度编码的符号。此外,该方法包括由解码器基于令牌集合生成数据输出字,其中数据输出字对应于原有数据集中的数据字。
[0005] 在其它例示性实施例中,提供了一种包括计算机可用或者可读介质的计算机程序产品,计算机可用或者可读介质具有计算机可读程序。计算机可读程序当在计算设备上被执行时使计算设备执行以上关于方法例示性实施例概述的操作中的各种操作和组合。
[0006] 在又一例示性实施例中,提供了一种系统/装置。该系统/装置可以包括一个或者多个处理器和耦合到一个或者多个处理器的存储器。存储器可以包括指令,指令在由一个或者多个处理器执行时使一个或者多个处理器执行以上关于方法例示性实施例概述的操作中的各种操作和组合。
[0007] 本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中加以描述或者将按照以下具体描述而变得为本领域普通技术人员所清楚。附图说明
[0008] 将在结合附图阅读时通过参照例示性实施例的以下具体描述来最佳地理解本发明及其优选实施方式以及更多目的和优点。
[0009] 图1描绘了示例分布式数据处理系统的图解表示,可以在该分布式数据处理系统中实施例示性实施例的方面;
[0010] 图2是示例数据处理系统的框图,可以在该数据处理系统中实施例示性实施例的方面;
[0011] 图3是根据一个例示性实施例的解码器/解压器架构的示例框图;
[0012] 图4是图示了多个输入线的示例图,这些输入线图示了数据的一部分的位从一个输入线向另一输入线的溢出;
[0013] 图5是图示了根据一个例示性实施例的解码器/解压器的对准逻辑在确定输入线的对准时的操作的示例框图;
[0014] 图6是根据一个例示性实施例的令牌化器逻辑流线的示例框图;
[0015] 图7是根据一个例示性实施例的输出生成器逻辑的示例框图;并且
[0016] 图8是概述了根据一个例示性实施例的用于处理可变长度编码的数据流的示例操作的流程图

具体实施方式

[0017] 例示性实施例提供用于提供可变长度编码的数据流的高带宽解压的机制。例示性实施例的机制补偿在由利用的压缩技术(例如,可变长度霍夫曼编码或者其它可变长度编码技术)所引入的压缩的数据流中的可变长度编码的符号。利用例示性实施例的补偿在编码的数据流中的这一可变长度编码的符号的机制,可以执行对数据流中的数据的并行解压,这增加解压操作的吞吐量和速度。作为结果,提供能够对可变长度编码的数据流操作的高速解压机制。
[0018] 所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。
[0019] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0020] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0021] 计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。
[0022] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、SmalltalkTM、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0023] 下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0024] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0025] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0026] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0027] 因此,可以在许多不同类型的数据处理环境中利用例示性实施例。为了提供用于描述例示性实施例的具体单元和功能的上下文。下文提供图1和图2作为其中可以实施例示性实施例的方面的示例环境。应当领会到,图1和图2仅为示例并且并非旨在于断定或者暗示关于其中可以实施本发明的方面或者实施例的环境的任何限制。可以进行对描绘的环境的许多修改而未脱离本发明的精神实质和范围。
[0028] 图1描绘了示例分布式数据处理系统的图解表示,可以在该分布式数据处理系统中实施例示性实施例的方面。分布式数据处理系统100可以包括可以在其中实施例示性实施例的方面的计算机的网络。分布式数据处理系统100包含至少一个网络102,网络102是用来提供在分布式数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的介质。网路102可以包括连接,比如有线、无线通信链路或者光纤线缆。
[0029] 在描绘的示例中,服务器104和服务器106与存储单元108一起连接到网络102。此外,客户端110、112和114也连接到网络102。这些客户端110、112和114可以例如是个人计算机、网络计算机等。在描绘的示例中,服务器104向客户端110、112和114提供数据,比如引导文件、操作系统映像和应用。客户端110、112和114在描绘的示例中是服务器104的客户端。分布式数据处理系统100可以包括未示出的附加服务器、客户端和其它设备。
[0030] 在描绘的示例中,分布式数据处理系统100是具有网络102的因特网,网络102代表使用传输控制协议/网际协议(TCP/IP)协议套件以相互通信的网络和网关的全世界汇集。在因特网的中心是在由路由数据和消息的数千个商业、政府、教育和其它计算机系统构成的主要节点或者主机计算机之间的高速数据通信链路的主干。当然,分布式数据处理系统
100也可以被实施为包括许多不同类型的网络,如例如内部网、局域网(LAN)、广域网(WAN)等。如以上所言,图1旨在于作为示例而不是作为对于本发明的不同实施例的架构限制,并且因此图1中所示的特定单元不应被视为关于可以在其中实施本发明的例示性实施例的环境有限制。
[0031] 图2是示例数据处理系统的框图,可以在该数据处理系统中实施例示性实施例的方面。数据处理系统200是实施用于本发明的例示性实施例的过程的计算机可用代码或者指令可以位于其中的计算机,比如图1中的客户端10的示例。
[0032] 在描绘的示例中,数据处理系统200运用集线器架构,该集线器架构包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH 202。
[0033] 在描绘的示例中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动(HDD)226、CD-ROM驱动230、通用串行总线(USB)端口和其它通信端口232以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备可以例如包括以太网适配器、附件卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe未使用。ROM 224可以例如是闪存基本输入/输出系统(BIOS)。
[0034] HDD 226和CD-ROM驱动230通过总线240连接到SB/ICH 204。HDD 226和CD-ROM驱动230可以例如使用集成驱动电子装置(IDE)或者串行高级技术附着(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
[0035] 操作系统在处理单元206上运行。操作系统协调在图2中的数据处理系统200内的各种部件并且提供各种部件的控制。作为客户端,操作系统可以是可商购的操作系统,比如Windows 面向对象的编程系统(比如JavaTM编程系统)可以结合操作系统TM
运行并且提供从在数据处理系统200上执行的Java 程序或者应用对操作系统的调用。
[0036] 作为服务器,数据处理系统200可以例如是运行高级交互执行 操作系统或者 操作系统的 eServerTM System 计算机系统。数据处理系统200可以是包括处理单元206中的多个处理器的对称多处理器(SMP)系统。备选地,可以运用单个处理器系统。
[0037] 用于操作系统、面向对象的编程系统和应用或者程序的指令位于存储设备(比如HDD 226)上并且可以向主存储器208中加载以用于由处理单元206执行。用于本发明的例示性实施例的过程可以由处理单元206使用可以位于存储器(如比如主存储器208、ROM224)中或者例如位于一个或者多个外围设备226和230中的计算机可用程序代码来执行。
[0038] 总线系统(比如如在图2中所示的总线238或者240)可以由一个或者多个总线组成。当然,可以使用任何类型的通信结构或者架构来实施总线系统,该通信系统或者架构提供在附着到该结构或者架构的不同部件或者设备之间的数据传送。通信单元(比如图2的调制解调器222或者网络适配器212)可以包括用来传输和接收数据的一个或者多个设备。存储器可以例如是主存储器208、ROM 224或者比如在图2中的NB/MHC 202中发现的高速缓存。
[0039] 本领域普通技术人员将领会到,图1和图2中的硬件可以根据实现方式变化。除了图1和图2中描绘的硬件之外或者取代图1和图2中描绘的硬件,可以使用其它内部硬件或者外围设备,比如闪存、等效非易失性存储器或者光盘驱动等。例示性实施例的过程也可以应用于除了先前提到的SMP系统之外的多处理器数据处理系统而未脱离本发明的精神实质和范围。
[0040] 另外,数据处理系统200可以采用多个不同数据处理系统中的任何数据处理系统的形式,这些数据处理系统包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或者其它通信设备、个人数字助理(PDA)等。在一些例示性示例中,数据处理系统200可以是便携计算设备,向该便携计算设备配置闪存以提供例如用于存储操作系统文件和/或用户生成的数据的非易失性存储器。实质上,数据处理系统200可以是任何已知或者以后开发的数据处理系统而无架构限制。
[0041] 再次参照图1和图2,数据处理或者计算设备/系统(、比如图1中的服务器106,可以实施该数据处理或者计算设备/系统例如为图2的数据处理系统或者具有不同单元配置和组成但是能够实施如下文描述的例示性实施例的机制的另一类型的数据处理系统)接收具有可变长度的压缩的数据的部分的编码的数据流,这些部分需要被解码成编码的数据流的原有数据,从而使得数据处理/计算系统能够处理原有数据。编码的数据流可以由耦合到服务器106的其它数据处理系统/计算设备(在这一示例中例如为服务器104、客户端110、112和/或114等)中的一个或者多个其它数据处理系统/计算设备传输。可以经由一个或者多个网络102传输编码的数据流。当然,可以同样地与例示性实施例的机制一起利用其中可变长度编码的数据流可以由实施例示性实施例的机制的数据处理系统/计算设备接收的任何其它场景。也就是说,只有可变长度编码的数据流在数据处理系统/计算设备被接收并且然后由如下文将描述的例示性实施例的机制随后操作,以什么方式向数据处理系统/计算设备传输可变长度编码的数据流或者在哪种境况之下向数据处理系统/计算设备传输可变长度编码的数据流才不重要。
[0042] 可以使用任何已知或者以后开发的编码算法对可变长度编码的数据流编码,该编码算法生成可变长度符号以对原有非编码的数据编码。出于本描述的目的,将假设使用DEFLATE算法对可变长度编码的数据流编码,并且因此可变长度编码的数据流具有DEFLATE格式。然而,应当领会到本发明不限于与DEFLATE格式化的数据流一起使用并且具有可变长度编码的其它数据流可以与例示性实施例的机制一起使用而未脱离例示行实施例的精神实质和范围。
[0043] 通常,可变长度编码的数据流未将本身用来并行解码操作,即数据处理系统的处理器不能对数据流的部分并行解码。这是因为在数据流中没有字节对准标记符并且因此不能从数据流确定一个数据部分何处开始和结束并且另一数据部分何处开始和结束,例如,一个数据部分可以是7位长,另一部分可以是9位长,又一部分可以是16位长,等等,并且不能从数据流确定这些边界落在何处。作为结果,不能简单地将数据流分解成然后被并行处理的组块,因为可以在符号内完成分解,由此使不正确解压结果被生成。作为结果,一般使用依次解码操作来执行可变长度编码的数据流的处理,该依次解码操作限制可以用来实现可变长度编码的数据流的解码的吞吐量和速度。
[0044] 例示性实施例提供用于在对编码(或者压缩)的数据流执行解码或者解压操作时考虑在编码的数据流中的可变长度符号。也就是说,例示性实施例提供一种以并行方式对可变长度编码的数据流操作的解码器或者解压器机制。图3是根据一个例示性实施例的一个这样的解码器/解压器的示例框图。可以在硬件、由一个或者多个硬件设备执行的软件或者硬件和/或软件的任何组合中实施在图3中所示的单元。在一个例示性实施例中,图3的单元实施于电路逻辑中并且因此代表一个仅硬件的例示性实施例。在其它例示性实施例中,图3中所示的单元中的一个或者多个单元可以被实施为由硬件设备(例如硬件实施的处理器)执行的用于实施它的功能的软件、固件等。在更多其它例示性实施例中,图3中的单元中的一些单元可以被实施为仅硬件的电路,而其它单元被实施为在一个或者多个硬件设备上执行的软件、固件等。
[0045] 如图3中所示,解码器/解压器300包括对准逻辑310、令牌化逻辑320、令牌表数据结构存储装置325、输出生成器逻辑330和数据流输入线存储装置340。解码器/解压器300接收可变长度编码的数据流作为输入。在每个处理器周期期间,解码器/解压器300接收可变长度编码的数据流的“输入线”,该输入线被定义为在处理器周期期间接收的输入数据流的数据字节数。输入线具有固定大小或者字节数M。对于可变长度编码的数据流的大于或者等于1的压缩比,输入线中的字节数M小于或者等于被寻求以在每个处理器周期生成的解压的输出的字节数N。在可变长度编码的数据流内,原有数据中的固定长度字符被编码为可变长度符号。例如,在利用霍夫曼编码时(比如在使用具有静态霍夫曼编码的DEFLATE压缩算法来生成可变长度编码的数据流这一具体情况下),编码的符号中的每个符号可以具有在最小霍夫曼码长Hmin(例如,7位)上至最长霍夫曼码长Hmax(例如,31位)之间的可变长度。
[0046] 解码器/解压器300的对准逻辑310操作用于对准输入线中的输入数据以在编码的符号边界开始,其中使用可变位数来代表编码的数据流中的符号,并且符号对应于在编码/压缩之前的原有数据的一个或者多个字节。例如,利用霍夫曼编码,使用可变长度霍夫曼编码对压缩的数据中的符号编码,其中编码的符号代表原有数据的字面字节或者指向先前检测的原有数据的若干连续字节的指针。由于在固定大小输入线中的编码的符号的长度的可变性,可以未对准输入线以在符号边界开始,并且一些编码的符号可以跨越多个输入线,例如,从一个输入线向下一输入线跨越。
[0047] 如以上提到的那样,在本描述的上下文中,输入线是指具有固定字节数的编码的数据。每处理器周期接收和处理输入线。术语“符号”如这里关于编码的数据流而使用它那样是指在编码的数据流中的可变长度编码表示,其中可以对每个符号解码/解压以创建一个或者多个字节的原有数据。例如,可以接收输入线,该输入线包含8字节(64位)并且可以包含长度为17、8、9、21和11位(共计=66)的5个符号。在这一示例中,17位的符号1可以解码成13字节的原有数据,符号2可以解码成1字节的原有数据,以此类推。另外,符号1-5中的总位数为66位并且因此有2位的位溢出。因此,下一个线必须被移位2位以对准它以在新符号边界开始。
[0048] 图4是图示了多个输入线的示例图,这些输入线图示了编码的符号的位从一个输入线向另一输入线的溢出。如图4中所示,符号410-424对应于在压缩的数据中的编码或者压缩的符号。同样是在处理器周期中接收的压缩的数据的多个字节的第一输入线430包括符号410-414以及符号416的第一部分。符号416向下一输入线440中溢出,从而使得符号416的位存在于输入线430和输入线440二者中。这被称为“位溢出”。因此,输入线440中的标识符号418的开始的偏移依赖于从输入线430溢出的位数。溢出的最小位数为0,而最大溢出为Hmax-1,因为编码的符号的大小至多为代码的最大大小Hmax,并且至少一位必须存在于输入线430中以便有溢出。
[0049] 因此,为了对准输入线440,必须先确定从先前的输入线430的溢出数量并且必须补偿这一溢出。这是由图3中的解码器/解压器300的对准器逻辑310提供的功能。为了执行这些输入线的并行处理,需要通过补偿位溢出在符号边界的开始对准输入线。一旦通过补偿这样的位溢出而被对准,则例示性实施例的机制可以用并行方式对对准的输入线操作。
[0050] 由于并未预先知道位溢出对于特定一对输入线430和440是什么,所以例示性实施例的对准器逻辑310使用用于推测解码的流水线架构,其中所有溢出选项跟随有后选择操作。推测解码包括每个线的对于从0到Hmax-1的所有可能的偏移的Hmax路推测处理。也就是说,在对线进行时并行考虑每个可能的偏移,并且基于解码的结果和先前线的解码结果选择用于可能的偏移之一的解码结果之一。以并行和流水线化的方式对于输入线中的每个偏移执行推测解码。
[0051] 为了进一步说明用来标识正确位溢出并且确定对应的偏移的方式,考虑以下简化示例情况。假设仅有与x位偏移和y位偏移对应的两个可能的偏移。现在假设输入线可以包含最多n个符号并且计算设备可以每处理器周期处理至多一个符号,从而使得需要若干周期来处理输入线。在周期1中,接收输入线1,并且考虑x位偏移和y位偏移来处理输入线1中的第一符号以对于两种偏移情况找到输入线中的第一符号的长度。在下一处理器周期中,接收输入线2,并且相似地考虑x位偏移和y位偏移来处理线2的第一符号。在同一处理器周期中,对于两个推测场景处理输入线1的第二符号。这一过程继续,并且在n个周期中,处理输入线1的所有可能的n个符号,并且计算设备知道线中的所有可能的n个符号的长度。所有符号的总长度减去输入线的长度指示向下一个线的可能的位溢出值。例如,如果所有符号的总长度对于两个推测情况为69位和71位,并且输入线的长度为64位,则有两个可能的位溢出推测值(5位和7位)。提供一种用于基于来自先前数据输入线的解码的确定的位溢出或者偏移来选择推测位溢出或者偏移中的哪个位溢出或者偏移是正确位溢出或者偏移的选择机制。
[0052] 利用例示性实施例的机制,并非仅考虑两个可能偏移或者位溢出,而是如在以上示例中那样,可以并行考虑任何数目的可能的位溢出或者偏移。例如,利用一个例示性实施例,在处理每个输入线时考虑从0到Hmax-1位的可能的位溢出。
[0053] 图5是图示了根据一个例示性实施例的解码器/解压器300的对准逻辑310在确定输入线的对准时的操作的示例框图。如图5中所示,对准逻辑310接收包括M字节的编码/压缩的数据的输入线510。对准逻辑310的填充逻辑520向输入线510填充从先前输入线的最大溢出位数。因此,例如,在第一处理器周期中,可以接收并且存储第一输入线,并且在下一处理器周期中,可以接收第二输入线并且与在先前处理器周期期间接收的第一输入线组合上至最大溢出位数。向并行流水线530-550输入填充的输入线。并行流水线530-550中的每个流水线按照可能的偏移(位溢出)数量之一执行填充的输入线的移位。例如,第一流水线530执行0位移位,第二流水线(未示出)可以执行1位移位,第三流水线(未示出)可以执行2位移位,以此类推。因此,流水线540执行i位移位,并且最终流水线550执行(Hmax-1)位移位或者最大移位(位溢出)。
[0054] 在每个流水线530-550中,流水线的每级532-536、542-546和552-556存储移位和填充的输入线并且对移位和填充的输入线的下一符号解码。流水线530-550具有8*M/Hmin的流水线深度,其中Hmin是最小编码的符号长度,该最小编码的符号长度在静态霍夫曼编码这一具体示例中为7位。符号的大小基于符号类型并且具有在编码算法中被指定并且对准器逻辑310已知的宽度w(或者长度)。例如,使用DEFLATE算法和数据格式,通过读取与编码算法关联的编码表来知道用于在移位和填充的输入线中的符号中的特定代码的长度(宽度)。例如,编码表具有条目,这些条目定义对于特定位模式,下一编码的符号的长度将是什么。
例如,编码表可以定义如果接下来的n位为1010111..,则下一符号的长度为x,并且如果接下来的n位为111000…,则下一符号的长度为y,以此类推。一旦下一符号的长度已知,输入线可以被移位该位数,并且可以再次检查接下来的n位以找到下一符号的长度,以此类推。
[0055] 每级532-536、542-546和552-556包括被称为计算逻辑(CL)的一个或者多个寄存器和解码/解压逻辑,该CL对移位和填充的输入线510的下一符号解码/解压并且更新累计的移位数量,即,用于级532-536、542-546和552-556的累计的移位数量等于来自先前级的累计的移位数量加上由当前级532-536、542-546和552-556处理的下一符号的宽度。累计这一移位数量直至遇到原有的M字节输入线的结束。也就是说,执行解码上至累计移位大于或者等于未填充的输入线长度的点。这可以根据移位数量和符号的宽度在流水线530-550的级532-536、542-546和552-556中的任何级出现。一旦这一累计的移位数量满足或者超过输入线的大小(在描绘的示例中,输入线为8*M位,其中M为输入线中的压缩的字节数,并且8代表每字节的位数),并非继续累计移位数量,而是从级向级传递输入线和当前的累计移位数量而不更新。例如,如果原有的输入线长度为64位并且填充它上至94位,则执行解码上至累计移位大于或者等于64位的点。在这一情况下,有必要填充输入线上至94位,因为可以例如有在位63开始并且延伸直至位94的符号,并且仅能在所有94位已知时对这一符号解码。在原有的未填充的输入线长度64位以上的位数是用于下一输入线的溢出或者偏移。
[0056] 在流水线530-550的结束,从累计的移位数量“移位”减去输入线的大小(8*M)以获得向下一输入线的推测位溢出。因此,对于向复用器560输入的每个流水线530-550有推测位溢出值。向复用器560的推测位溢出值输入之一被选择作为将用来对下一输入线执行移位操作(例如,左移位操作)的实际位溢出以便对准下一输入线与符号边界,由此生成对准的输入线570。
[0057] 再次参照其中有两个可能的位溢出值x或者y的先前示例,复用器560用来选择这两个值之一作为用于对准下一输入线的溢出。复用器560知道在压缩的数据流中的恰好第一输入线的偏移(或者位溢出)并且因此有可能基于恰好第一输入线(即输入线1)的已知偏移来选择两个位溢出或者偏移值之一(没有用于恰好第一输入线的来自先前输入线的溢出,但是它可以包含一些已知头部位)。一旦已经进行了这一选择,的已知从输入线1向输入线2的实际位溢出是什么。在下一处理器周期中,从输入线1向输入线2的这一实际位溢出可以用来选择从线2向线3的实际位溢出。从输入线2向线3的实际位溢出然后可以用来选择从线3向线4的实际位溢出,以此类推。
[0058] 回顾图3,向令牌化器逻辑320提供对准的输入线570作为输入。尽管令牌化器逻辑320被图示为从对准器逻辑310分离,但是应当领会到,令牌化器逻辑320的流水线级可以与对准器逻辑310中的流水线的级对准而未脱离例示性实施例的精神实质和范围。令牌化器逻辑320如图6中所示以流水线化的方式从在对准的输入线中的压缩的符号提取符号数据。
如图6中所示,令牌化器逻辑320包括多个级610-640,其中每级包括计算逻辑(CL)和用于存储计算逻辑的结果的一个或者多个寄存器。流水线深度等于每输入线的有效令牌的最大数目(t),该最大数目具有上限8*M/Hmin位。
[0059] 在每级610-640的计算逻辑提取用于在对准的输入线中的与原有数据中的一个或者多个字节对应的下一编码的符号的符号数据。符号数据可以包括有效位、类型位(例如,字面或者指向先前存储的字节序列的指针/引用)、字面值(如果类型位指示字面)、向后距离(如果类型位指示指针/引用)等。计算逻辑还确定与符号关联的扩充字节数(IB),即,从在对准的输入线中的符号生成的解码/未压缩的数据的字节数,并且在令牌化器逻辑320的流水线中从级到级610-640维持用于输入线的扩充字节总数(IBt)。
[0060] 在令牌化器逻辑320流水线的末级640中,用来自符号的提取的信息更新令牌表650以由此生成令牌表650中的令牌条目。如图6中所示,令牌表650包括一个或者多个条目,每个条目对应于输入线中的符号。令牌表650中的每个条目根据符号的类型(令牌)对于对应的令牌存储提取的有效位、类型(例如,字面或者指针/引用)、写入指针(wr_ptr)和向后距离或者实际飞解码/解压的字面符号。用于令牌的写入指针(wr_ptr)指向在未压缩的数据流中的如下位置,应当在该位置插入通过对令牌解码而产生的字节。在末级640中基于最后写入指针wr_last更新用于符号/令牌i的写入指针,该最后写入指针对应于由直至先前输入线的结束为止的所有符号产生的全部扩充字节与上至当前的对准的线中的先前符号/令牌i-1为止的扩充字节累计数,即wr_last+IBi-1。在对准的输入线中的第一令牌具有写入指针wr_ptr,该写入指针被设置成用于先前输入线的wr_last值,因为它是对准的输入线中的第一符号/令牌。也在末级640中更新写入最后指针wr_last,从而使得这一个值被存储以用于在处理下一对准的输入线时使用。可以向图3中的输出生成器逻辑300输出在令牌表
650中存储的令牌。
[0061] 输出生成器逻辑330取得由令牌化器逻辑320生成的令牌并且每处理器周期生成N个字节的解码/解压的数据。在一个例示性实施例中,这些N个字节包括由输出生成器逻辑330输出的数据字,其中数据字包括来自原有数据的解码/解压的字节,该原有数据是编码的输入线的源。输出生成器逻辑330包括状态机,该状态机解析由令牌化器逻辑320生成的并且其信息被存储于令牌表650的条目中的令牌并且每处理器周期生成N个字节。输出生成器逻辑330维持在解码/解压的输出流中的当前字位置(out_ctr)并且为当前输出字的N个字节中的每个字节标识源令牌(src_token[0:N-1])。例如,如果wr_ptr(tokenx)<=(out_ctr+i)
[0062] 输出生成器逻辑330同时处理来自多个输入线的令牌,例如,同时处理来自至少两个输入线的令牌。如果令牌集合未被当前输出字完全消耗(集合中的所有令牌用来产生N个字节的当前输出字),即[wr_last(token set 1)>(out_ctr+N),则拖延对准器逻辑310和/令牌化器逻辑320。在生成输出字时,输出生成器逻辑330确定输出字节是否为字面,并且如果是这样,则向输出字节复制字面值。在另一方面,如果输出字节是指向在先前标识的字节序列中的字节的指针或者引用,则使用在令牌表650中存储的向后距离来执行存储器查找操作以从存储器取回字节数据并且向输出字复制它。如果没有可用来生成输出字的足够令牌,即[wr_last(token set 2)<(out_crt+N),则存储部分输出字,保持out_ctr,并且取读新令牌集合;否则,将out_ctr递增N并且该操作重复。
[0063] 图7是根据一个例示性实施例的输出生成器逻辑的示例框图。如图7中所示,接收两个令牌集合710和712(例如,来自两个不同输入线中的每个输入线的一个令牌集合)作为向N位复用器720-724中的输入,其中N是对于特定架构而希望的每处理器周期的输出字节数。令牌集合710-712是从由令牌化器逻辑320生成的令牌表650获得的,并且因此与在这些条目中存储的所有信息一起包括来自令牌表650的令牌条目。
[0064] 每个复用器720-724与用于该字节的对应的源令牌选择信号src_token[i]关联,其中i范围从0到N-1。因此,每个复用器从令牌集合选择与源令牌选择信号src_token[i]对应的令牌,该源令牌选择信号src_token[i]标识用于在输出字中的该特定字节的源令牌。复用器720-724包括附加逻辑,该附加逻辑用于基于在令牌集合中的与选择的令牌对应的令牌条目输出对应的令牌类型(字面或者指针/引用)作为向另一复用器730-734中的选择信号、在令牌类型为字面的情况下输出来自令牌表条目的字面数据作为向复用器730-734的输入并且在令牌类型为指针/引用的情况下输出基于令牌表条目的向后距离字段确定的、向另一复用器740-744并且也向RAM 750-754输入的读取使能/读取地址。
[0065] 为每处理器周期将生成的输出字节中的每个输出字节提供分离的专用存储器750-754或者具有N个读取端口的共享存储器的一部分。这些存储器750-754中的每个存储器存储相同的解压/解码的数据,即存储器750-754中的每个存储器互为重复。与在输出字
760中的N字节对应的N位存储器750-754中的每个存储器被组织为N个字节字。备选地,可以使用共享存储器,该共享存储器被组织为N个字节字并且具有N个读取端口,其中每个读取端口服务于在输出字760中的N个字节之一。存储器750-754可以共享公共写入端口。总存储器容量由指针/引用令牌可以引用的先前历史确定。例如,历史对于DEFALTE规范为32KB。如果假设N=16,则然后这一32KB存储器被组织为各自为16字节的2K存储器字。根据读取使能和读取地址信号,读取16字节的存储器字。读取地址信号的更高阶位用来从存储器读取字(在32KB存储器的情况下为11位),并且更低阶位(在16字节字的情况下为4)用来选择从存储器(复用器740-744)读取的N个字节之一。
[0066] 与来自复用器720-724的字面输出一起馈送来自存储器750-754的选择的字节作为向复用器730-734的输入。基于令牌类型(即字面或者指针/引用),这些输入之一被选择作为用于输出字760的在输出字中的对应位置1至N的输出字节。例如,如果令牌类型为字面类型,则选择对复用器730-734的字面数据输入。如果令牌类型为指针/引用,则选择从复用器740-744输出的字节用于由复用器730-734输出。因此,复用器730-734中的每个复用器输出将在输出字760中在输出字内的正确位置包括的数据字节。然后可以向计算设备中的其它逻辑提供这一输出字760以用于处理,例如,向在计算设备中的中央处理器或者其它功能单元提供,该中央处理器或者其它功能单元可以基于在计算设备上执行的软件、固件等对输出字760操作。解码的输出字也在N位存储器中的每个存储器中在由在解码/解压的输出流内的当前字位置确定的存储器位置被存储为N个字节字。
[0067] 因此,利用例示性实施例的机制,使可变长度编码的数据流的高带宽并行处理成为可能。利用这些机制,即使在单个数据流包括可变长度的符号时仍然可以并行处理单个数据流。例示性实施例的机制通过确定从一个输入线向另一输入线的位溢出、重新对准输入线以使得它们在符号边界开始并且然后以并行流水线化的方式相应地处理线及其对应的符号/令牌来补偿可变长度符号。这通过消除对于可变长度编码的数据流的串行化处理的要求来大量增加可以用来处理这样的数据流的吞吐量和速度。
[0068] 图8是概述了根据一个例示性实施例的用于处理可变长度编码的数据流的示例操作的流程图。可以在数据处理系统/计算设备的解码器/解压器中实施在图8中概述的操作。这一解码器/解压器例如可以向数据处理系统/计算设备中集成作为协处理器、作为网络或者存储适配器的部分、作为分离的硬件设备或者这些硬件设备和在一个或者多个处理器设备上被执行的一个或者多个软件机制中的一个或者多个硬件设备和软件机制的组合。
[0069] 如图8中所示,操作始于解码器/解压器接收数据输入线,该数据输入线是向在其中实施解码器/解压器的数据处理系统/计算设备传输的可变长度编码的数据流的一部分(步骤810)。解码器/解压器确定数据输入线向下一数据输入线上的位溢出数量(步骤820)以用于符号对准。解码器/解压器基于确定的位溢出数量对准数据输入线(步骤830)。解码器/解压器令牌化对准的数据输入线以生成令牌集合,其中每个令牌对应于在编码的数据输入线中的符号(步骤840)。解码器/解压器基于令牌集合生成数据输出字(步骤850)。数据输出字对应于在原有数据集中的数据字。向数据处理系统/计算设备的其它单元输出该输出字以用于处理(步骤860),并且操作终止。
[0070] 如以上指出的那样,应当领会到例示性实施例可以采用全硬件实施例、全软件实施例或者包含硬件与软件单元两者的实施例这样的形式。在一个示例实施例中,在包括但不限于固件、常驻软件、微代码等的软件或者程序代码中实施例示性实施例的机制。
[0071] 适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或者间接耦合到存储器单元的至少一个处理器。存储器单元可以包括在实际执行程序代码期间运用的本地存储器、大容量存储装置和高速缓存存储器,这些高速缓存存储器提供至少一些程序代码的暂时存储以便减少必须在执行期间从大容量存储装置取回代码的次数。
[0072] 输入/输出或者I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或者通过居间I/O控制器耦合到系统。网络适配器也可以耦合到系统以使数据处理系统能够变成通过居间专用或者公共网络耦合到其它数据处理系统或者远程打印机或者存储设备。调制解调器、线缆调制解调器和以太网卡仅为当前可用网络适配器类型的少数类型。
[0073] 本发明的描述已经出于示例和描述的目的而加以呈现、但是并非旨在于穷举本发明或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚。选择和描述实施例以便最佳地说明本发明的原理、实际应用并且使本领域其他普通技术人员能够针对具有如与设想的特定使用相适合的各种修改的各种实施例来理解本发明。
QQ群二维码
意见反馈