CN101286744A - 自动生成压缩码表 - Google Patents

自动生成压缩码表 Download PDF

Info

Publication number
CN101286744A
CN101286744A CNA2008101003622A CN200810100362A CN101286744A CN 101286744 A CN101286744 A CN 101286744A CN A2008101003622 A CNA2008101003622 A CN A2008101003622A CN 200810100362 A CN200810100362 A CN 200810100362A CN 101286744 A CN101286744 A CN 101286744A
Authority
CN
China
Prior art keywords
group
mask
code
codeword sets
module
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
CNA2008101003622A
Other languages
English (en)
Other versions
CN101286744B (zh
Inventor
M·A·哈克
M·贾汉吉尔
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 CN101286744A publication Critical patent/CN101286744A/zh
Application granted granted Critical
Publication of CN101286744B publication Critical patent/CN101286744B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Abstract

一种装置包括压缩表生成器模块和存储介质。压缩表生成器生成一张压缩码表,该压缩码表有多个码字组分布于一层或多层上。这些码字组中的每一个码字组都包括与一张变长码表中的一个或多个码字对应的组掩码。存储介质存储关于这些码字组的信息,例如,每个码字组的组掩码和变长码表中的每个码字的码索引。

Description

自动生成压缩码表
背景技术
电子数据(包括文本、图形、语音、多媒体和其它符号串)可以用压缩了这些信息的二进制码来表示。这种压缩减少了数据存储和/或传输所需的比特数。不同长度(即,变长)的二进制码可用来表示数据比特流中的不同符号。根据一些二进制码压缩技术,在比特流中,出现频率较高的符号用较短的代码来表示,出现频率较低的符号用较长的代码来表示。这样的方案被称为变长编码(VLC)。
有一类VLC技术涉及哈夫曼编码。例如,哈夫曼编码可用于视频编码标准的数字视频压缩和信息检索,例如,MicrosoftTM Windows Media、MPEG-2、MPEG-4、H.263、H.264和其它使用VLC技术的标准。
哈夫曼编码使用变长码字。因此,在一些哈夫曼解码实现方案中,按照“半字节接半字节(nibble-by-nibble)”的方法,将所输入比特流的比特流片段与查询表(LUT)的内容进行匹配。例如,解码器可观察第一个固定大小的半字节,并试图将它与哈夫曼解码表中的第一表项进行匹配。如果没找到匹配,那么,解码器观察第二个固定大小的半字节,并试图与第二个表项进行匹配,依次类推。这种方法叫做哈希函数。
但是,对于较长的哈夫曼码字(例如,23比特的码字)来说,这样的半字节方法需要6个步骤和/或时钟才能与最长的哈夫曼码字匹配。在这样的半字节方法中,较长的码字会限制解码吞吐量。
为了减少这种吞吐量限制,可将哈夫曼码字表重新映射成压缩表。通过检测特定二进制值(例如,0或1)的游程,这种压缩表可实现解码。游程检测比半字节接半字节的方法执行要快。这种检测可通过专用硬件逻辑、软件(例如,前置零检测器(LZD))或者软硬件结合的方式来实现。此外,采用专用硬件逻辑或软件检测器(例如,前置零检测器(LZD))或者软硬件结合的方式,较长游程的二进制值易于实现快速检测。
压缩表可以手工生成。然而,这种技术是很费力的,并且,容易产生表错误。
附图说明
图1举例示出了可用来生成压缩表的装置的一个实施例;
图2举例示出了一个部件的一个实施例;
图3举例示出了一张逻辑图的一个实施例;
图4A和4B举例示出了多张逻辑图的实施例;
图5是一张举例说明性的压缩表排列的示意图;
图6A-6C举例示出了多种实施例;
图7是一个举例说明性的逻辑流程的实施例;
图8是一个系统实施例的示意图。
具体实施方式
概括地说,有多个实施例涉及码的生成和使用。例如,在一个实施例中,一种装置包括压缩表生成器模块和存储介质。压缩表生成器生成一张压缩码表,该压缩码表有多个码字组分布于一层或多层上。这些码字组中的每一个码字组都包括与一张变长码表中的一个或多个码字对应的组掩码。存储介质存储关于这些码字组的信息,例如,每个码字组的组掩码和变长码表中的每个码字的码索引。压缩码表的这种生成和存储可自动执行。
这样,就可以实现快速高效的解码。此外,还可以实现码表的更高效存储。可以描述其它实施例,并就其主张权利。
多个实施例可以包括一个或多个部件。一个部件可包括能执行特定操作的任意结构。根据给定的一组设计参数或性能约束条件,每个部件可用硬件、软件或者软硬件结合的方式来实现。尽管在特定的电路拓扑结构中,出于举例说明的目的,可能会用有限数量的部件来描述一个实施例,但在其它电路拓扑结构中,针对给定的实现方案,该实施例包括的部件可以增加或减少。值得注意的是,任何时候提及“一个实施例”或“一种实施例”都意味着,围绕该实施例描述的特定特征、结构或属性包括在至少一个实施例中。说明书各处出现的用语“在一个实施例中”都不一定是针对相同的实施例。
图1是装置100的框图,装置100可用于根据哈夫曼表生成压缩表。如图1所示,装置100可包括很多部件。例如,装置100可包括压缩表生成器模块102和存储介质104。这些部件可用硬件、软件或软硬件结合的方式来实现。
装置100可将哈夫曼码表一个接一个地进行映射,从而,使得每个哈夫曼码表在一个长分支中的许多变化的1和0平滑成全0或全1。这种平滑处理能实现快速解码,例如,通过游程解码器硬件。
如图1所示,压缩表生成器模块102接收哈夫曼码表120,并生成相应的压缩表122,压缩表122可发送给存储介质104。压缩表122可用于各种操作,例如,对信息序列进行编码和解码。
参照接下来的附图和相应的实例,可进一步描述多个实施例的操作。有些附图包括逻辑流程。尽管本申请给出的这些附图包括具体的逻辑流程,但可以明白,逻辑流程只是举例说明如何实现本文描述的一般功能。此外,给定的逻辑流程不是必须按照所呈现的次序来执行,除非另有特别指明。另外,给定的逻辑流程可通过硬件部件、由处理器执行的软件部件或者软硬件结合的方式来实现。这些实施例不限于这种情况。
图2是实施例(例如,装置100)根据变长码表生成压缩表的逻辑流程200的示意图。
如图2所示,模块202接收变长码表,例如哈夫曼表。根据收到的这张码表,模块204生成一个或多个码字组。这些组都分布在一层或多层中。例如,层级可安排成树形结构,包括一个顶级组和一个或多个子组。在这种布局中,顶级组和子组都可以有一个或多个子组。
在生成每个码组时,模块204可进一步生成相应的信息。例如,模块204可为每个码字组生成组掩码。组掩码可用于判断是否需要生成其它码字子组。
除了用于生成压缩表之外,组掩码还可用于解码操作。
模块206存储码字组的相关信息。该信息可包括每个组的组掩码,以及,与每个组对应的码索引。但是,这些实施例不限于这种情况。
图3是码生成器模块102的一个举例说明性的实现方案300的框图。如图3所示,实现方案300可包括各种部件。例如,图3显示,实现方案300可包括存储介质302、顶级组确定模块304、组分析模块306和表写入模块308。这些部件可用硬件、软件、固件或者其任意组合来实现。
存储介质302存储各种用于生成压缩表的信息。例如,存储介质302可存储一张或多张哈夫曼码表320。另外,存储介质302还可存储一张或多张相应的压缩表330。存储介质302也可存储压缩表生成期间的各种信息。例如,图3显示的存储介质存储了组掩码322、命中掩码列表324、索引列表326和子组列表328。
顶级组确定模块304确定哈夫曼码字表320中的初始顶级码字组。
组分析模块306分析一个或多个码字组。该分析可确定与特定组对应的其它子组。另外,该分析可涉及信息的生成。该信息可包括掩码、命中掩码列表和/或索引列表。
根据组分析模块执行的处理,压缩表写入模块308将众多表项格式化和输出。
图4A是实施例(例如,部件100和/或实现方案300)根据变长码表生成压缩表的逻辑流程的示意图。
如图4A所示,模块402接收哈夫曼码表,哈夫曼码表包括多个长度不等的码字。模块403对哈夫曼码表中的码字进行排序。因为这些码字是变长的,所以可用一种权重方法来执行该排序。一种举例说明性的权重方法是:为空格分配最小权重,为比特值“1”分配中间权重,为比特值“0”分配最大权重。下面的表1-1和1-2举例说明这种排序。具体而言,表1-1显示的是没有经过排序的哈夫曼码字,表1-2显示的是这些码字经过了排序。
  值   码字
  1   0110
  2   1011
  3   101
  4   001
  5   01
表1-1:未排序值&码字
  值   码字
  5   01
  3   101
  4   001
  2   1011
  1   0110
表1-2:排序值&码字
图4显示,在模块404中,选择初始码字组进行处理。所选组(在本文称为当前组)可包括,例如,整表的码字。或者,该初始组可包括整个表的一部分。这部分可包括,例如,具有相同前缀或一比特或多比特初始集合的(例如,相同的4比特前缀)的多个码字。
为该初始组分配初始序列索引(例如,零索引)。因此,该初始组可被称为“组0”。
在模块406中,以一个比特接一个比特的方式处理该组,从而提取出一个或多个子组(如果有的话)。为提取出来的这些子组按照它们被提取的顺序分配序列索引。关于如何处理一个组的进一步细节,下面还将结合图4B进行举例说明。
该流程进一步包括模块408,用于判断是否还有其它组(子组)需要处理。如果有,则模块410选择下一个子组进行处理。否则,流程进入模块412。
在模块410中,下一个子组可根据下一个递增序列索引进行选择。因此,如果组0是在模块406中最近处理过的,则模块410将选择子组1。
完成这个选择之后,操作返回模块406,以处理所选子组。因此,该处理可提取其它子组,也按照它们的提取顺序为其分配序列索引。因此,如模块408所示,该流程迭代继续,直到没有其它子组需要处理为止。一旦没有子组需要处理,图4A就显示,模块412根据模块406和410执行的处理,生成压缩表。
因此,如模块406所示,各个特定的码字组都按顺序处理。现在结合图4B中的逻辑流程400举例描述这样的处理。该流程可由部件100和/或实现方案300等实施例来执行。
图4B显示,在模块452中,为当前组生成掩码。参见图4A,当前组是模块404或模块410最近选择的组。该掩码的生成可包括:在当前组中确定最长的码字;用“1”填充其右侧(即,其最低有效侧)。有时,当前组的最长码字可以不止一个。当这种情况发生时,可选择一个特定的码字(例如,经过排序的子组中的最后一个码字)。如图4B所示,在模块454中存储所生成的掩码。
在模块458中生成多个掩码项。这些掩码项的生成可涉及:对当前组中的每个表项和在模块452中生成的掩码,执行异或(XOR)运算。为进行这些XOR运算,使表项的最靠左比特与掩码的最靠左比特对齐。
如下所述,处理这些掩码项,以便为当前组生成命中掩码列表(即,“Hit_Mask_List”)。命中掩码列表是从右到左一次写一位的二进制数。该列表识别不唯一“1”的位置。因此,命中掩码列表可在压缩表生成和/或解码操作期间用来判断给定符号(例如,一个零或多个“0”)的游程是否确定当前组中的一个值,或判断解码是否必须在一个子组中继续。
在模块460中,选择最靠左的比特位置作为当前比特位置。完成该选择后,模块462在当前比特位置处检查每个掩码项。如果所检查的比特在掩码结果的一个特定比特位置处出现“唯一1”,那么该位置视为“命中”。否则,该位置视为“未命中”。当一个掩码项在该特定比特位置有“1”并且没有其它相同大小或更大的掩码项在这个位置有“1”时,出现唯一1。
因此,如模块464所示,当命中发生时,操作转入模块466。否则,当未命中发生时,操作转入模块468。
在模块466中,将‘0’(表示命中)放在压缩表的Hit_Mask_List中。此外,还将具有唯一1的掩码项的索引(例如,表项编号)放在临时的Index_List中。
相比之下,在模块468中,将“1”(表示未命中)放在压缩表的Hit_Mask_List中。
图4B显示,模块472位于模块468后。在该模块中,判断在当前比特位置上掩码项是否具有不唯一的“1”。如果是,则将这些项放入一个新的子组中,如模块474所示。由此,模块474可生成这样一个新的子组。
如图4B所示,在模块478中,判断当前比特位置是否达到掩码的终点‘1’(它表示所选组的全部项都已用尽)。如果是,则在模块479中将当前比特位置右移一个位置。这之后,操作返回模块462。
但是,如果当前比特位置已经达到掩码的终点‘1’,则操作继续到模块480。在模块480中,将信息在下一个可用位置写入压缩表。该信息可包括该子组的临时索引列表和命中掩码列表。
再参见图4A,在该流程后(在模块408中)可判断是否还有新的子组(如果有的话)没有被考虑。如上所述,在图4B的模块474中可生成这样的新子组。如果当前存在这种子组,则图4A中的模块410可选择这些子组中的一个作为当前组。在完成这个选择后,图4A的模块406可处理所选的子组。因此,图4B的流程可再执行一遍。
如上所述,图4B的流程涉及组的处理,也涉及子组的识别。现在举例说明这样的处理和识别。该例涉及一个示意性的组0,表2-1中以未排序的次序将其列出。
  索引   码字
  0:   01
  1:   101
  2:   000
  3:   11
  4:   0010
  5:   100
  6:   0011
表2-1:未排序的组0
该组进行排序后,如下表2-2所示。此外,为组0生成组掩码00100。如上所述,该掩码是根据排序组末尾的码字(0010)生成的。
如上所述,对每个码字组0执行一次掩码运算。表2-2的第三列进一步提供了这些掩码运算的结果。
  索引   码字   掩码码字
  3:   11   11
  1:   101   100
  5:   100   101
  0:   01   01
  2:   000   001
  6:   0011   0001
  4:   0010   0000
表2-2:排序组0
在该掩码运算完成后,可分析掩码码字的每个比特位置,以确定放在子组中的码字,以及,识别当前组中保留的码字。接下来的描述对每个比特位置进行举例分析。
关于最靠左的比特位置,表2-2的第三列表示索引1、3和5的掩码码字未命中,因为它们在该位置上都有一个1。这些多个1表示,在该位置上不唯一1的情况发生。因此,针对索引1、3和5生成一个新的子组(称为组1)。此外,因为在该位置发生未命中,所以,为命中掩码列表最右侧的比特分配1。因此,处理完最靠左比特位置之后,当前分组和命中掩码列表如下所示。
  组0:   索引0,2,4,6
  组1:   索引1,3,5
  Hit_Mask_List:   1
在从左数第二比特位置上,一个唯一1出现。具体而言,只有索引为0的掩码码字在这个位置有1。由此,不生成新的子组,为相应的命中掩码列表位置分配一个0。处理完该比特位置之后的结果总结如下。
  组0:   索引0,2,4,6
  组1:   索引1,3,5
  Hit_Mask_List:   01
一个唯一的1还出现在从左数的第三比特位置。具体而言,只有索引为2的掩码码字在这个位置上有1。因此,该位置的处理产生下列结果。
  组0:   索引0,2,4,6
  组1:   索引1,3,5
  Hit_Mask_List:   001
在从左数的第四比特位置上,有一个唯一1出现,因为只有索引为5的掩码码字有1。因此,在处理该比特位置之后产生下列分组和命中掩码列表。
  组0:   索引0,2,4,6
  组1:   索引1,3,5
  Hit_Mask_List:   0001
当达到最终(最靠右)掩码比特时,没有掩码码字在该位置有比特。对于这个位置,为命中掩码列表分配一个0,并且,当前分组不改变。因此,组0完毕之后,存在下列结果。
  组0:   索引0,2,4,6
  组1:   索引1,3,5
  Hit_Mask_List:   00001
然后,组1的处理可以进行。该组未经排序,在表2-3中列出。
  索引   码字
  1:   101
  3:   11
  5:   100
表2-3:未排序组1
组1按表2-4所示的顺序进行排序。根据该排序,为组1生成组掩码1001。如上所述,该掩码基于排序组末端的码字(100)。与组0一样,对每个码字组1执行一次掩码运算。表2-4的第三列提供这些掩码运算的结果。
  索引   码字   掩码码字
  3:   11   01
  1:   101   001
  5:   100   000
表2-4:已排序组1
掩码运算完成后,可分析掩码码字的每个比特位置。例如,表2-2的第三列表明,掩码码字在最左比特位置均未命中,因为索引1、3和5的掩码码字在这个位置都有一个0比特。此外,由于该位置没有不唯一的1,因此在该位置没有新子组产生。因此,组1的命中掩码列表的当前设定如下所示。
Hit_Mask_List:1
在从左数的第二比特位置,表2-4显示,一个命中发生。这是因为,对于与索引3相应的掩码码字来说,一个唯一的1存在于该位置。因此,组1的命中掩码列表以下列方式更新。
Hit_Mask_List:01
在从左数的第三比特位置也发生一次命中,因为对与索引1相应的码字来说,一个唯一的1存在于该位置。
Hit_Mask_List:001
当达到最终(最靠右)掩码位时,没有哪个掩码码字在该位置有比特。因此,如上所述,在该位置为命中掩码列表分配一个0,并且,当前分组保持不变。因此,组1完毕之后,没有生成新的子组,并且,组1具有下列的命中掩码列表。
Hit_Mask_List:0001
因此,上述例子根据表2-1列出的码字,生成下面的命中掩码列表。
组0:00001
组1:0001
因此,一旦识别和处理完所有组(组0和1),也就生成了一张压缩表。
在多个实施例中,一张哈夫曼码表里所有哈夫曼码字的预定数量的初始比特用作初始组的顶级枝。例如,初始比特的数量是4(也就是说,哈夫曼码字的第一个半字节)。因此,当使用初始四位的半字节时,存在16个(也就是,24)顶级组。分别处理这些组,例如,如上图2和图4所述那样。如上所示,这种处理可以显示出其它子组。
多个实施例可进一步免受非法代码的侵害。标准比特流的编码和解码所用的哈夫曼码表有时不完整(“非法”)。例如,有些码字可以从这些表格中丢弃,因为它们不是编码必需的。码表中未用的这些码字或者留下的漏洞会在解码时导致比特流错误。
为了检测和修复未用码字的漏洞,可以使用集合划分方法来生成压缩表。对于传统的哈夫曼解码器,通过向哈夫曼码表填充无用的码字,也可以执行这种修复。
图5是哈夫曼码表的压缩表500的布局示意图。如图5所示,第一表项502可包括每个顶级“树”枝的掩码。如上所述,这些顶级枝或者组可使用哈夫曼码表中所有哈夫曼码字的特定数量初始比特来确定。在多个实施例中,该预定数量的初始比特可以是哈夫曼码表中所有哈夫曼码字的前4比特的半字节。因此,在这些实施例中,第一个表项502包括对应于十六个顶级组的十六个(也就是24)掩码。
下一个表项504包括每个顶级码字/掩码的长度。此外,表项504还可包括这些码字/掩码各自的掩码类型。
图5显示出了有多个连续表项506的压缩表500。这些项可以包括掩码、命中掩码列表、跳转地址和原始码表索引的不同组合。
在解码操作期间,对存储在项506中的掩码和输入(编码)值,执行逻辑运算(例如,XOR运算)。这些运算的结果可提供与其它项506的偏移量。而这些其它项可以包括码索引、跳转地址和/或其它掩码。
根据这些其它项的内容,压缩表的遍历可以继续(例如,通过与掩码进行逻辑运算、访问所得的偏移量和/或跳转到其它地址)。到达项506中的码索引时,遍历结束。此时,一次新的遍历可以根据进一步的输入(编码)数据而开始。
因此,压缩表500的多个项共同形成多层和多重链接的数据结构,它们之间有非常精确的次序。例如,这些数据结构可以遵从哈夫曼码表的树-枝-叶类型的结构或者分形(fractal)类型的结构。
在多个实施例中,可生成与多个码表对应的超级压缩表。但是,这些实施例不局限于这种情况。
图6A和6B是解码实现方案的示意图。具体而言,图6A显示常规的哈夫曼解码实现方案600。而图6B则显示使用了压缩表的哈夫曼解码实现方案650。
如图6A所示,实现方案600包括哈夫曼码表602和哈夫曼解码器604。收到编码输入比特流620之后,哈夫曼解码器604对比特流进行解码,并输出解码句法622。
图6B显示,实现方案650也根据输入比特流620生成解码句法622。但是,实现方案650使用快速压缩熵解码器608对比特流620进行高效解码,而不是使用常规的哈夫曼解码器。具体而言,解码器608使用由压缩表生成器606生成的压缩表624,执行该高效解码。压缩表624可以根据本文描述的技术而生成。因此,压缩表生成器606可包括,例如,图1和/或图3的结构。
如图6B所示,解码器608包括控制逻辑610和表存储单元612。控制逻辑610可执行控制逻辑610,可用硬件、软件、固件或其任意结合来实现。表存储单元612可以用存储介质(例如,存储器)来实现。
图6B显示,表存储单元612存储压缩表624。控制逻辑610可从表存储单元612中访问该表,并执行各种运算。这些运算可包括逻辑运算,例如对接收到的比特序列和压缩表624中的掩码进行XOR运算。而且,这些运算可包括:识别组标识的前导码(例如,码字的前四位),并计算压缩表内的地址。例如,这些计算可以基于压缩表624包含的跳转地址。而且,控制逻辑可分析这些运算结果,以及,根据这些运算和分析来生成解码句法622。图7对这些特征进行了举例说明。
在多个实施例中,压缩表可用于提供加密和水印处理功能,这是大有益处的。例如,可生成多张可替换哈夫曼码表,来取代给定的标准哈夫曼码表。生成这些可替换表的过程可仿效给定加密或水印处理中涉及的任何给定过程。例如,这些可替换表可以是类似于给定标准表的新表,或者重新排列具有相同码长度的码字的某些叶子,或者在码表中的所谓任意位置插入未用(或非法)码(水印处理),等等。在编码过程中,根据预先设定的加密或水印处理规则,用可替换表取代给定标准表,由此生成经过加密或水印处理的比特流。
这样的加密/水印处理规则可以发送给快速压缩解码器,例如,在这种加密/水印比特流解码之前。这些规则可以经由通信介质或其它传输层来传递(例如,作为私有用户数据)。因此,一旦收到,快速压缩解码器可以使用这些规则重新排列压缩表,以进行解码。这种重新排列可以包括,将码索引在压缩表中的它们当前位置之间混洗(或者移动)。
因此,图6C显示一种解码实现方案660,它举例说明这种特性。图6C的实现方案与图6B类似。但是,图6B中的解码器608被替换成解码器608’。如图6B所示,解码器608’包括控制逻辑610’。控制逻辑610’可执行控制逻辑610的操作。但是,根据本文描述的加密/水印处理技术,控制逻辑610’可进一步重新排列压缩表624。
图6C显示,控制逻辑610’接收重排规则614’。如上所述,这些规则可以在不用于接收输入比特流620的通信介质或传输层上传输。收到规则614’后,控制逻辑610’可将表存储单元612中的压缩表624重新排列。如上所述,这种重新排列可涉及混洗码索引。
图7是对变长编码的例如哈夫曼编码信息(例如比特流)进行解码时所用的逻辑流程700的示意图。例如,此逻辑流程可通过图6B和图6C的实现方案来执行。
图7显示,模块702接收哈夫曼码表。根据这个表,模块704生成相应的压缩表。参见图6B,该模块可用压缩表生成器606来实现。
在模块706中,接收哈夫曼编码比特流。模块708识别比特流中的前缀(也就是,预定数量的初始位)。如上所述,很多实施例可使用四位前缀。但是,也可使用其它长度的前缀。
如图7所示,根据识别出来的前缀,模块710选择一个表项。该表项与顶级组(组0)对应。
模块712对该前缀之后一定数量的比特和所选表项中的掩码,执行掩码运算(例如,异或运算)。该掩码是的顶级掩码(组0掩码)
模块714分析该掩码运算的结果。该分析可以包括:检测一个特定值的游程,例如0的游程。
根据检测到的游程,模块716访问压缩表中的新地址(也称为跳转地址)。
如图7所示,模块718从新地址中获得掩码,并对比特流中的一个或多个比特与新地址中存储的掩码执行掩码运算。该数量的比特可以是上面结合模块712所说的之后一定数量的比特。或者,所述一个或多个比特也可以来自模块716所确定的游程之后的那一定数量的比特。
模块720分析该掩码运算结果。这可以包括:检测特定值的游程,例如连续0的游程。根据检测出的游程,模块722访问压缩表中的新(跳转)地址。
如模块724所示,判断该新地址处的项是有码索引还是有其它掩码。如果该项有码索引,则对应于访问码字的未编码句法已经被识别出来了。因此,操作可返回模块708,以处理编码比特流的后续比特。否则,需要进一步处理,于是操作返回模块718,因此掩码处理可继续进行。
图8给出了一种系统的一个实施例。具体而言,图8显示的系统800可以表示适用于本文描述的一个或多个实施例的系统或结构。
如图8所示,系统800可包括装置802、通信网络804和一个或多个远程装置806。图8显示,装置802可包括图1的部件。图8显示,装置802还可包括解码器803。该解码器可执行快速压缩解码技术,如上面结合图7所描述的那样。另外,解码器803可实现解码器608和/或608’的功能。
另外,装置802可包括存储器808、用户接口810、通信接口812和电源814。这些部件可根据各种技术耦合起来。一种这样的技术需要使用一个或多个总线接口。
存储器808可以数据形式存储数据。例如,存储器808可存储包含在存储介质104中的信息。因此,当分别图示时,存储器808可包括存储介质104。
可替换的是或另外,存储器808可存储控制逻辑、指令和/或软件部件。这些软件部件包括处理器可执行指令。这些指令可实现系统800中一个或多个部件的功能。
存储器808可使用能存储数据的任何机器可读介质或计算机可读介质来实现,包括易失性存储器和非易失性存储器。例如,存储器808可包括只读存储器(ROM)、随机访问存储器(RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、聚合物存储器(例如,铁电聚合物存储器)、双向存储器、相位变化或铁介质存储器、硅-氧-氮-氧-硅(SONOS)存储器、磁卡或光卡或者适用于存储信息的任何其它类型的介质。
用户接口810有助于与装置802进行用户交互。该交互可能涉及从用户输入信息。该交互也可能涉及将内容之类的信息输出到用户。因此,用户接口810可包括一个或多个设备,如键盘、触摸屏、麦克风和/或音频扬声器。另外,用户接口810可包括显示器,它用于输出信息和/或呈现装置802处理过的图像/视频。例如,显示器包括液晶显示器(LCD)、等离子显示器和视频显示器。
通信接口812能够经由通信介质(如网络)与其它设备进行信息交换。该信息可包括例如以编码或未编码格式传输的图像、视频和/或音频等内容。
通信接口812可提供无线或有线通信。对于无线通信,通信接口812可包括,例如根据一个或多个通信协议来执行操作的无线收发器、天线和控制逻辑等部件。因此,通信接口812可根据各种协议在无线网络中通信。例如,装置802和装置806可以依照各种无线局域网(WLAN)协议执行操作,例如IEEE 802.11系列协议,包括IEEE 802.11a、802.11b、802.11e、802.11g、802.11n等等。在另一个例子中,这些设备可以依照各种无线城域网(WMAN)移动宽带无线接入(MBWA)协议执行操作,例如IEEE 802..16或802.20系列协议中的协议。在另一个实例中,这些设备可以依照无线个域网(WPAN)执行操作。这些网络包括,例如IEEE802.16e、蓝牙等。同样,这些设备可根据微波接入全球互通(WiMax)协议来执行操作,例如,IEEE 802.16指明的一些协议。
此外,这些设备也可依照一个或多个标准使用无线蜂窝协议。这些蜂窝标准可包括,例如,码分多址(CDMA)、CDMA2000、宽带码分多址(WCDMA)、增强型通用分组无线业务(GPRS)以及其它标准。但是,这些实施例不限于这种情况。
对于有线通信,通信接口812可包括例如根据一个或多个通信协议来执行操作的传输和控制逻辑等部件。例如,这种通信协议包括以太网(例如,IEEE 802.3)协议、综合业务数字网(ISDN)协议、公共交换电话网络(PSTN)协议和各种有线协议。
另外,通信接口812可包括输入/输出(I/O)适配器、将I/O适配器连接到相应有线通信介质的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等等。例如,有线通信介质可包括电线、线缆、金属引线、印刷电路板(PCB)、板、开关结构、半导体材料、双绞线、同轴电缆、光纤等等。
电源814为装置802的各部件提供工作用电。因此,电源814可包括通往外部电源(如交流电源AC)的接口。另外或可替换的是,电源814可包括电池。这种电池是可拆卸的和/或可再充电的。但是,这些实施例不限于本例。
为透彻理解这些实施例,在说明书中罗列了很多具体细节。但是,对于本领域普通技术人员显而易见的是,本发明也可以不用这些具体细节来实施。在其它情况下,为使这些实施例主次分明、清楚易懂,没有详细交代公知的操作、部件和电路。可以明白,本文公开的具体结构和功能细节只是举例说明而已,对实施例的保护范围并不构成限制。
各个实施例可使用硬件部件、软件部件或两者结合来实现。例如,硬件部件可包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑电路(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。例如,软件可包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模型、例行程序、例行子程序、函数、方法、步骤、软件接口、应用程序接口(API)、指令集、计算码、计算机码、码段、计算机码段、字、值、符号、或上述任意结合。判断一个实施例是使用硬件部件来实现还是用软件部件来实现,需要视很多因素而定,例如所需的计算速度、功率等级、热量容忍、程序循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
一些实施例用术语“耦合”、“连接”及其派生词来描述。这些术语并不是同义词。例如,一些实施例是使用术语“耦合”和/或“连接”来描述的,这表示两个或更多个部件相互之间是直接的物理接触或电接触。但是,术语“耦合”也可以表示两个或更多个部件相互之间并没有直接接触,但仍然互相协作或彼此交互。
例如,一些实施例可以使用例如机器可读介质或者产品来实现,所述机器可读介质或者产品可以存储指令或者指令集,当所述指令或者指令集被机器执行时,可以使得该机器执行根据上述实施例所述的方法和/或操作。这种机器可以包括,例如,任意合适的处理平台、计算平台、计算装置、处理装置、计算系统、处理系统、计算机、处理器等等,并且可以使用硬件和/或者软件的任意合适组合来实现。该机器可读介质或者产品可以包括,例如,任何适合类型的存储器单元、存储器装置、存储器产品、存储器介质、存储装置,存储产品、存储介质和/或者存储单元,例如,存储器、可移动或者不可移动介质、可擦除或者不可擦除介质、可写或者可重写介质、数字或者模拟介质、硬盘、软盘、压缩盘ROM(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、光盘、磁盘、磁光盘、可移动存储卡或者盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带、等等。所述指令可以包含任何合适类型的码,例如源代码、编译过的代码、经过解释的代码、可执行代码、静态代码、动态代码、等等。所述指令可以使用任何合适的高级、低级、面向对象的、可视的、经过编译的和/或者经过解释的编程语言来实现。
除非特别声明,否则应该理解诸如“处理”、“计算”、“运算”、“判断”等等术语指的是计算机或者计算机系统、或者类似的电子计算装置的动作和/或者处理,类似的电子计算装置用于将在该计算系统的寄存器和/或者存储器中表示为物理量(电子)的数据,处理和/或者变换为在该计算系统的存储器、寄存器或者其他这种信息存储、传输或者显示装置中表示为物理量(电子)的数据。实施例不局限于这种情况。
虽然上面已经用对结构特性和/或方法操作所特定的语言描述了本发明,但应该理解的是,权利要求书中定义的本发明并不限于上述的具体特征或动作。上述的具体特征和动作只是以举例方式说明如何实现权利要求。

Claims (17)

1、一种装置,包括:
压缩表生成器模块,用于生成一张压缩码表,所述压缩码表包括分布在一层或多层上的多个码字组,每个码字组都具有与一张变长码表中的一个或多个码字对应的组掩码;
存储介质,用于存储关于所述多个码字组的信息,所述信息包括每个码字组的组掩码和所述变长码表中的每个码字的码索引。
2、如权利要求1所述的装置,其中,所述压缩表生成器模块包括:
顶级组确定模块,用于生成所述多个码字组的一个或多个顶级组;
组分析模块,用于确定每个顶级组的组掩码。
3、如权利要求2所述的装置,其中,所述组分析模块根据所述一个或多个顶级组确定一个或多个子组,以及,生成每个子组的掩码。
4、如权利要求1所述的装置,其中,所述变长码表是哈夫曼码表。
5、如权利要求1所述的装置,进一步包括:
解码器,用所述压缩码表对输入的比特流进行解码。
6、如权利要求5所述的装置,其中,所述解码器接收一个或多个重排规则,并根据所述一个或多个重排规则将所述压缩码表重新排列。
7、一种方法,包括:
接收具有多个码字的变长码表;
生成一张压缩码表,所述压缩码表包括分布在一层或多层上的多个码字组,每个码字组都有组掩码;
存储关于所述多个码字组的信息,其中所述信息包括每个码字组的组掩码和所述变长码表中的每个码字的码索引。
8、如权利要求7所述的方法,其中,所述变长码表是哈夫曼码表。
9、如权利要求7所述的方法,
其中,所述多个码字组包括一个或多个顶级组和一个或多个子组,
其中,所述生成所述多个码字组包括:
根据所述一个或多个顶级组,迭代地生成所述一个或多个子组。
10、如权利要求9所述的方法,其中,所述迭代地生成所述一个或多个子组包括:
从所述多个码字组中选择一个码字组;
为所选码字组生成组掩码;
用所选码字组的组掩码和所选码字组内的一个或多个码字,产生一个或多个掩码值;
当有两个或更多个掩码值共享一个游程特性时,生成一个新的子组,并将与所述两个或更多个掩码值对应的码字从所选码字组转移到所述新的子组。
11、如权利要求10所述的方法,其中,所述产生一个或多个掩码值包括:
在所选码字组的掩码和所选码字组内的每个码字之间执行异或(XOR)运算。
12、如权利要求7所述的方法,进一步包括:
用所述压缩码表对输入的比特流进行解码。
13、如权利要求12所述的方法,进一步包括:
接收一个或多个重排规则,
根据所述一个或多个重排规则,将所述压缩码表重新排列。
14、一种包括机器可读存储介质的物件,所述机器可读存储介质包括的指令在执行时,使系统执行以下操作:
接收具有多个码字的变长码表;
生成一张压缩码表,所述压缩码表包括分布于一层或多层上的多个码字组,每个码字组都有组掩码;
存储关于所述多个码字组的信息,其中所述信息包括每个码字组的组掩码和所述变长码表中的每个码字的码索引。
15、如权利要求12所述的物件,其中,所述变长码表是哈夫曼码表。
16、如权利要求12所述的物件,
其中,所述多个码字组包括一个或多个顶级组和一个或多个子组,
其中,所述机器可读存储介质包括的指令在执行时,使系统执行如下操作:根据所述一个或多个顶级组,迭代地生成所述一个或多个子组。
17、一种系统,包括:
压缩表生成模块,用于生成一张压缩码表,所述压缩码表包括分布于一层或多层上的多个码字组,每个码字组具有与一张变长码表中的一个或多个码字对应的组掩码;
存储介质,用于存储关于所述多个码字组的信息,所述信息包括每个码字组的细掩码和所述变长码表中的每个码字的码索引;
解码器,用所述压缩码表对输入的比特流进行解码;
接口,用于从通信介质接收所述输入的比特流。
CN2008101003622A 2007-03-30 2008-03-31 自动生成压缩码表的方法和装置 Expired - Fee Related CN101286744B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/694,785 US7970215B2 (en) 2007-03-30 2007-03-30 Automatic generation of compact code tables
US11/694,785 2007-03-30

Publications (2)

Publication Number Publication Date
CN101286744A true CN101286744A (zh) 2008-10-15
CN101286744B CN101286744B (zh) 2012-04-25

Family

ID=39736419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101003622A Expired - Fee Related CN101286744B (zh) 2007-03-30 2008-03-31 自动生成压缩码表的方法和装置

Country Status (3)

Country Link
US (1) US7970215B2 (zh)
CN (1) CN101286744B (zh)
DE (1) DE102008016179A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102484482A (zh) * 2008-10-29 2012-05-30 晶像股份有限公司 用于采用高速串行链路的存储系统的译码系统
CN105934888A (zh) * 2014-01-31 2016-09-07 惠普发展公司,有限责任合伙企业 相不变码字的组
CN107168679A (zh) * 2011-05-03 2017-09-15 高通股份有限公司 用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8675417B2 (en) * 2008-09-28 2014-03-18 Ramot At Tel Aviv University Ltd. Method and system for adaptive coding in flash memories
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
JP2010279496A (ja) * 2009-06-03 2010-12-16 Fujifilm Corp データ転送システム、送信装置、受信装置、放射線画像転送システム、および放射線画像診断システム
US9455799B2 (en) 2013-08-06 2016-09-27 OptCTS, Inc. Dynamic control of quality of service (QOS) using derived QOS measures
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
US9444580B2 (en) 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
CA3026281A1 (en) 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods
US11019150B2 (en) * 2017-09-20 2021-05-25 Intel Corporation Internet-of-thing gateway and related methods and apparatuses

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970009408B1 (ko) * 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
US5548338A (en) * 1995-06-07 1996-08-20 News American Publishing, Inc. Compression of an electronic programming guide
US6275616B1 (en) * 1997-09-12 2001-08-14 Samsung Electronics Co., Ltd. Method and apparatus for converting a high definition image to a relatively lower definition image using wavelet transforms
US6141457A (en) * 1997-09-12 2000-10-31 Samsung Electronics Co., Ltd. Method and apparatus for processing a high definition image to provide a relatively lower definition image using both discrete cosine transforms and wavelet transforms
DE10004873A1 (de) * 2000-02-04 2001-08-23 Infineon Technologies Ag Verfahren und Vorrichtung zur Erzeugung von OVSF-Codeworten
US7129864B2 (en) 2004-12-31 2006-10-31 Intel Corporation Fast compact decoder for huffman codes
US7804903B2 (en) 2005-06-27 2010-09-28 Intel Corporation Hardware-based CABAC decoder
US7262722B1 (en) 2006-06-26 2007-08-28 Intel Corporation Hardware-based CABAC decoder with parallel binary arithmetic decoding

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102484482A (zh) * 2008-10-29 2012-05-30 晶像股份有限公司 用于采用高速串行链路的存储系统的译码系统
CN102484482B (zh) * 2008-10-29 2015-12-02 美国莱迪思半导体公司 用于采用高速串行链路的存储系统的译码系统
CN107168679A (zh) * 2011-05-03 2017-09-15 高通股份有限公司 用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备
US10754653B2 (en) 2011-05-03 2020-08-25 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
CN105934888A (zh) * 2014-01-31 2016-09-07 惠普发展公司,有限责任合伙企业 相不变码字的组

Also Published As

Publication number Publication date
US7970215B2 (en) 2011-06-28
US20080240596A1 (en) 2008-10-02
DE102008016179A1 (de) 2008-10-09
CN101286744B (zh) 2012-04-25

Similar Documents

Publication Publication Date Title
CN101286744B (zh) 自动生成压缩码表的方法和装置
CN104283567B (zh) 一种名称数据的压缩、解压缩方法及设备
CN100576753C (zh) 静态赫夫曼解码的系统和方法
US8265407B2 (en) Method for coding and decoding 3D data implemented as a mesh model
US20090019070A1 (en) Data compression for communication between two or more components in a system
US7511638B2 (en) Data compression for communication between two or more components in a system
CN102831001A (zh) 软件升级包的制作方法及装置、程序的升级方法及设备
US20090016453A1 (en) Combinatorial coding/decoding for electrical computers and digital data processing systems
CN103229139A (zh) 具有位域操纵指令的数据处理装置及方法
US8847797B1 (en) Byte-aligned dictionary-based compression and decompression
JP2009542092A (ja) データ圧縮の方法
CN102122960A (zh) 一种针对二进制数据的多字符组合无损数据压缩方法
KR20160001652A (ko) 데이터 프로세싱 방법 및 디바이스
US20060018556A1 (en) Method, apparatus and system for data block rearrangement for LZ data compression
CN109428603A (zh) 一种数据编码方法、装置以及存储介质
CN104811209B (zh) 一种抗最长匹配检测的压缩文件数据嵌入方法及装置
CN109428602A (zh) 一种数据编码方法、装置以及存储介质
CN106934679A (zh) 信息匹配方法及装置
CN107925421A (zh) 虚拟存储器系统中的改进的经压缩的高速缓存
US20030194012A1 (en) Variable-length encoded data decoding apparatus and decoding method
CN106688186A (zh) 在基于lz的压缩算法中在多个经压缩块之间共享初始词典和霍夫曼树
CN104133883B (zh) 电话号码归属地数据压缩方法
CN102622359B (zh) 搜索数据库中字符串的方法和装置
US7924179B2 (en) Variable-length code determining device and variable-length code decoding method
CN110120819B (zh) 一种布尔电路编码方法、装置及系统

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

Granted publication date: 20120425

Termination date: 20180331

CF01 Termination of patent right due to non-payment of annual fee