CN104300990A - 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 - Google Patents
用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 Download PDFInfo
- Publication number
- CN104300990A CN104300990A CN201410097304.4A CN201410097304A CN104300990A CN 104300990 A CN104300990 A CN 104300990A CN 201410097304 A CN201410097304 A CN 201410097304A CN 104300990 A CN104300990 A CN 104300990A
- Authority
- CN
- China
- Prior art keywords
- search
- processor
- parallel
- target data
- pipelining
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Advance Control (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
本申请涉及用于高速高度压缩LZ77令牌化的并行装置和用于紧缩压缩的霍夫曼编码。根据一个方面,通过处理电路在输入数据流上执行并行压缩。该处理电路包括散列电路,匹配引擎、流水线电路和匹配选择器。该散列电路标识一个或多个历史缓冲器中的多个位置用于在输入数据流中对目标数据进行搜索。匹配引擎在一个或多个历史缓冲器中对目标数据并行执行多个搜索。所述流水线电路在连续时钟周期内在输入数据流中对多个顺序目标数据执行流水线化搜索。然后匹配选择器从多个搜索和流水线化搜索中选择结果以压缩所述输入数据流。
Description
相关申请
本申请涉及2013年3月15日提交的美国临时专利申请No.61/800,263,且要求来自该申请的优先权利益。
技术领域
本公开涉及处理逻辑、微处理器以及相关的指令集架构的领域,当这些指令集架构被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。
背景技术
LZ77(其中“LZ”代表Lempel-Ziv)是一种无损数据压缩算法,其形成包括紧缩压缩算法在内的若干普遍存在的压缩方案的基础。LZ77算法通过将当前输入数据序列对照于输入数据流中早前存在的该数据序列的副本进行匹配来执行压缩。当发现匹配时,该匹配由长度-距离(L,D)对来编码。该长度-距离对等效地表示语句“从当前输入数据位置退回D个字符,并从那个位置复制L个字符”。
为了发现匹配,LZ77编码器保持跟踪输入数据流中的最近数据。保持该数据所采用的数据结构被称为历史窗,其为随时间更新的滑动窗。编码器需要保持该数据以寻找匹配,且解码器需要保持该数据以解译编码器所引用的匹配。滑动窗越大,编码器可能向回搜索越远以创建引用。
在当代的数据处理和联网中,紧缩压缩经常被用于在发送端执行即时压缩并在接收端执行解压缩。紧缩压缩是标准化的无损数据压缩算法,其使用LZ77压缩和霍夫曼编码的组合。LZ77压缩和霍夫曼编码本质上是串行的。
附图说明
在附图的以下各图中通过示例而非限制地说明多个实施例:
图1A是说明根据一个实施例的执行并行紧缩压缩的协处理器的框图。
图1B是说明根据一个实施例的执行并行紧缩压缩的处理器的框图。
图2是根据一个实施例的并行紧缩压缩电路的框图。
图3是根据另一个实施例的并行紧缩压缩电路的框图。
图4A是根据再一个实施例的并行紧缩压缩电路的框图。
图4B示出根据一个实施例的用于执行并行搜索的流水线的示例。
图5是根据一个实施例的并行编码电路的框图。
图6是示出根据一个实施例的用于响应于并行紧缩指令而执行的操作的流程图。
图7A是根据一个实施例的有序和无序流水线的框图。
图7B是根据一个实施例的有序和无序核的框图。
图8A-B是根据一个实施例的更具体的示例性的有序核架构的框图。
图9是根据一个实施例的处理器的框图。
图10是根据一个实施例的系统的框图。
图11是根据一个实施例的第二系统的框图。
图12是根据一个实施例的第三系统的框图。
图13是根据一个实施例的片上系统(SoC)的框图。
具体实施方式
在下面的描述中,阐述了很多具体细节。然而,应该理解,本发明的实施例可在没有这些特定细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使本描述变得模糊。
本文所述的实施例提供一种诸如在网络情境中采用高吞吐量流水线的用于高效、高吞吐量、高质量紧缩压缩的并行机制。各实施例提供了在硬件上并行执行输入数据流的LZ77令牌化的并行方法、装置和系统。每个时钟压缩多个字节。在顺序数据流上并行执行多个搜索,且搜索被并行解析。“漏斗(funneling)”匹配选择技术将多个传出令牌解析到串行输出流中,从而流保持一致且适当反映输入。
本文所描述的实施例执行嵌入式紧缩压缩,这可用于诸如联网的商业操作以及存储应用与系统。嵌入式紧缩压缩改善了吞吐量敏感操作(诸如网络接口附近的压缩或文件系统压缩)的性能。
通常,紧缩压缩被串行地执行,且在高速通用处理器上执行。难以将串行实现方式加速超过每时钟一个令牌的串行速率。本文所述的实施例因此具有重大的潜在商业价值。
紧缩压缩的实施例在两个级别上执行并行搜索。在第一级别,在单个“目标”点(也称为“目标数据”、“目标数据序列”,其可为输入流中的一个或多个字节/字符)上执行并行搜索。在对单个目标点的搜索结果中,选中在过往数据序列(也称作“历史窗”)中标识出最长匹配的一个搜索结果。在第二级别,在多个顺序目标(例如,输入流中的当前目标点和后续三个字节)上执行并行的搜索集合。在一个实施例中,可以以流水线执行在这些顺序目标上的搜索。流水线化的搜索结果可被组合以使得对于顺序目标的最长匹配被选中。将第一级并行搜索和第二级流水线化搜索相组合,以允许在每个时钟周期内产生多个搜索结果。在并行搜索后,搜索结果被霍夫曼编码以产生输出流。
在一个实施例中,紧缩压缩可由耦合到处理系统的处理器的专用硬件来执行。图1A是根据一个实施例的处理系统100的框图。处理系统100包括经由总线或互连161耦合到存储器141、I/O设备151和协处理器131的处理器121。协处理器131可同处理器121共同位于相同管芯上,或位于和处理器121分立的管芯(例如,芯片组)上。在一个实施例中,协处理器131包括用于响应于并行-紧缩(parallel_deflate)指令而执行紧缩压缩操作的紧缩电路135。在一个实施例中,协处理器131可为用于联网或存储目的的通信或存储协处理器模块。应该理解,处理系统100是简化的表示且可能存在其他元件。
在可选的实施例中,紧缩压缩可在处理器内的硬件中实现。图1B是诸如具有执行单元140的处理器115的指令处理装置的实施例的框图。在一个实施例中,执行单元140包括可用于执行指令(包括并行_紧缩指令)的紧缩电路135。在某些实施例中,处理器115可为多核处理器中的处理器核,或电子系统中的处理元件。
解码器130接收高级机器指令或宏指令形式的传入指令,并且将所述指令解码以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了原始的高级指令和/或从原始的高级指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。解码器130可使用各种不同的机制来实现。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
解码器130可接收针对高速缓存110、存储器120或其他源的传入指令。经解码的指令被发送到执行单元140。执行单元140可从解码器130接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了所接收的指令或者是从所接收的指令导出的。执行单元140从寄存器文件170、高速缓存110和/或存储器120接收数据输入并向它们生成数据输出。
为了避免混淆描述,示出并描述了相对简单的处理器115。应当理解,其他实施例可具有超过一个执行单元。例如,该处理器115可包括多个不同类型的执行单元,例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的再其他实施例可具有多个核、逻辑处理器、或执行引擎。处理器115的一些实施例将在下文中结合附图7-13来提供。
图2是示出根据一个实施例的压缩模块200(例如,图1A或图1B的紧缩电路135)的示例的框图。在该实施例中,压缩模块200在单个目标点上执行并行搜索。压缩模块200包括缓冲输入数据流的输入缓冲器210。输入数据流被馈入后备队列(LAQ)212和历史缓冲器216A及216B。LAQ212存储要被压缩的当前数据序列,且历史缓冲器216A-B是存储同一输入数据流中的过往数据序列的滑动窗。在该实施例中,假定每个历史缓冲器216A-B仅具有一个读端口;因此,过往数据序列被复制以使得每个历史缓冲器216A-B存储过往数据序列的相同副本。在其中历史缓冲器具有多个读/写端口的替换实施例中,仅需要一个这种历史缓冲器。历史缓冲器216A-B中的数据被搜索,并由匹配引擎217A和217B并行地与当前数据序列相匹配。
为了简化说明,仅示出了两个匹配引擎217A-B。应理解,压缩模块200可包括任意数量的匹配引擎来并行执行任意数量的匹配。
在一个实施例中,为了改进搜索速度,当前数据序列被散列功能单元(例如,散列器213)所散列。散列的结果是指向散列表214的指针(例如,地址或索引)。在散列表214的该地址中存储有多个条目,每个条目包含引用,且每个引用指向历史缓冲器216A-B中的位置。如果可存储在散列表214中的引用的数量超过了散列表214的容量,则散列溢出控制器215确定散列表214中的哪些条目可被移到外部存储器。例如,可被移出散列表214的条目可以是最少使用或近期最少使用的条目。通过使用散列表214,匹配引擎217A-B可将搜索收窄到历史缓冲器216A-B中那些位置,从而确定是否LAQ212中的搜索目标匹配历史缓冲器216A-B中的数据序列的任何部分。匹配选择器220从匹配引擎217A-B的输出中选出对于搜索目标具有最长匹配的输出之一。所选中的匹配输出被发送给一个或多个编码器225,所述编码器225编码数据流并将经编码流发送给输出缓冲器230。
图3是示出根据另一个实施例的压缩模块300(例如,图1A或图1B的紧缩电路135)的示例的框图。在这个实施例中,压缩模块300包括缓冲输入数据流的输入缓冲器310。输入数据流被馈入历史缓冲器312。输入数据流被散列功能单元(例如,散列器313)所散列。散列的结果是指向散列表314的指针(例如,地址或索引)。在这个实施例中,散列表314包括多个级别。当输入数据序列(即,目标点)被散列时,经散列值是指向散列表314中的“桶(bucket)”的指针。每个桶包含多个条目,每个条目处于不同散列级别。每个条目包括对历史缓冲器312的引用(指示位置)。历史缓冲器312的多个位置可被独立搜索并和目标点相比较。
在一个实施例中,每个匹配级别具有对应匹配引擎317。匹配引擎317对单个目标点在历史缓冲器312的不同位置并行地执行搜索。匹配引擎317可通过解决访问操作中冲突的冲突仲裁器316来访问历史缓冲器312。匹配引擎317的输出由匹配选择器320来比较,且具有最长匹配的结果被选中。所选中的匹配输出被发送给一个或多个编码器325,所述编码器325编码数据流并将经编码流发送给输出缓冲器330。
图4A是示出根据另一个实施例的压缩模块400(例如,图1A或图1B的紧缩电路135)的示例的框图。在这个实施例中,在输入数据流中在多个顺序目标点(例如,8个目标点)上执行并行搜索(例如,4个并行搜索)。在匹配选择的第一级别,为在单个目标点上运行的并行搜索选择最佳匹配。在匹配选择的第二级别,顺序目标的最佳匹配被选择并和并行搜索结果相结合以选择产生最佳压缩的组合。
在这个实施例中,压缩模块400包括缓冲输入数据流的输入缓冲器410。输入数据流被馈入历史缓冲器416和LAQ412。4个输入目标各自被散列功能单元(例如,散列器413)所散列。散列的结果是指向散列表414的地址(或索引)的指针。为了写入散列表414,散列器输出首先被发送给散列写入缓冲器432,该散列写入缓冲器432耦合至散列表更新逻辑433。散列表更新逻辑433进一步耦合到散列表写入指针434。散列表写指针434指向散列表桶链中要写入的下一个桶,并且可用于非常快速的读/递增,高达每周期n次读/递增事件,其中n是散列器的数量。
散列表更新逻辑433和散列表写入指针434控制对散列表414的写入是否被允许(例如,当访问没有冲突时)以及要写入散列表414中的何处。如果可存储在散列表414中的条目的数量超过了其容量,则散列溢出控制器415确定散列表414中的哪些条目可被移到外部存储器。在这个实施例中,散列电路部分的吞吐量是n,其中n>每周期四字节的最小吞吐量。当在搜索引擎潜伏的情况下长匹配允许处理过程在搜索缓冲器内快速跳转时,该吞吐量实现了“前跃(jump-ahead)”。
同时,顺序目标也进入历史缓冲器416和LAQ412。基于在散列表314中的引用,匹配引擎417搜索由历史缓冲器416中的引用所指示的位置。在每个时钟周期中,执行4次搜索,且每次搜索深度高达8(即,8个流水线级);每个周期高达32个匹配引擎417运行。8个匹配引擎417的每个组与得分板418关联。得分板418保持跟踪顺序目标的匹配结果,并将这些结果转发给匹配选择器420。匹配选择器420为单个目标选择最长匹配,并将4个顺序目标的匹配结果相结合。所产生的经匹配输出被发送给编码器425,编码器425使用霍夫曼代码查找表(LUT)436编码数据流并将经编码流发送给输出缓冲器430。
图4B示出根据一个实施例的用于对输入数据序列执行流水线化并行搜索的流水线的示例。流水线在8个流水线级(对应8个时钟周期)中对输入数据序列执行并行搜索,8个流水线级自上而下由级0-7来表示。图4B的流水线是图4A的框470的替换实施例。在该实施例中,在每个时钟周期内处理输入数据序列(其包括4个目标点)。在顶部的输入包括LAQ中的4个目标点(例如,4字节数据),且底部的输出是历史缓冲器的数据输出,将其与LAQ的适当字节比较以确定是否存在匹配。在流水线级3中,发出4个读请求至散列表(表示为HTRD0-3)来确定要读取的历史缓冲器的位置。在流水线级5中,发出16个读请求至历史缓冲器(表示为HB0rd0和HR1rd0)。在该实施例中,有16次对历史缓冲器的读请求,因为该实施例被设计为一次在4个连续流字节上工作。为4个字节中的每一个执行散列和散列表查找。每次查找给出分配给散列地址的4个散列桶(级别)的内容。散列表输出16个历史缓冲器地址。对散列表和对历史缓冲器的读请求被读使能发生逻辑(标注为“RD EN发生逻辑”472和474)所使能。当读地址指向同样的存储器位置或指向处于相同邻区内的区域时,存在对于能够执行的读取数量的限制。这种限制或约束被称为存储体冲突。当存储体冲突发生时,多个读请求中的一个或多个不能在该时钟内得以满足,且因此被丢弃或重调度。存储体冲突被存储体冲突逻辑476和478所解决。
在并行搜索后,搜索结果被汇编到LZ77令牌的顺序流中。LZ77令牌包括“原义(literal)”(不能为其在历史存储器中找到匹配的数据)和(距离,长度)对(当可以找到匹配时)。每个令牌具有可变大小。LZ77令牌的流被根据霍夫曼编码并行地编码。
图5示出根据一个实施例的LZ77令牌流520的并行编码的示例。在这个实施例中,8个LZ77令牌520被并行编码,其中通过在表中查找(例如,霍夫曼代码查找表(LUT)526)来执行霍夫曼编码。应理解的是,在替换实施例中,可并行编码不同数量的LZ77令牌。来自压缩输出(匹配选择器输出)的单个“分组”包括头部510和含有8个LZ77令牌520的载荷。头部510提供关于每个令牌520的偏移的信息,从而每个令牌520可被定位并与其他令牌独立地被处理。在一个实施例中,每个令牌520或者是8位原义或者是24位引用。头部510可为16位,其包括8个比特对,每个比特对信号通知在载荷中的对应令牌是原义或是引用(或指示分组的结尾)。头部510的使用允许对每个令牌的独立的快速并行查找。
通过使用霍夫曼代码LUT526,8个LZ77令牌520被8个编码器525并行地编码。对于每个令牌520,对应的编码器525输出代码和长度。每个编码器525首先在头部510的位中查看以找出其自身令牌在载荷中的偏移。例如,编码器525可能需要确定有多少原义和引用在其令牌之前从而切实找到偏移。然后,编码器525编码其自己的令牌,输出代码和长度。经编码的输出被代码重组块527重新汇编为霍夫曼编码输出530的顺序流,这也是并行紧缩压缩的最终输出。
图6是根据一个实施例的用于执行基于LZ77压缩的并行压缩的方法600的流程图。并行压缩可为并行紧缩压缩的一部分。在一个实施例中,并行压缩响应于并行_紧缩(parallel_deflate)指令而执行。
方法600开始于处理电路(例如,图1A的协处理器131或图1B的处理单元140)在输入数据流上执行并行压缩。一个或多个历史缓冲器中的多个位置被标识用于在输入数据流中对目标数据进行搜索(611)。在一个或多个历史缓冲器中对目标数据并行执行多个搜索(612)。在连续时钟周期内在输入数据流中对多个顺序目标数据执行流水线化搜索(613)。从多个搜索和流水线化搜索中选出结果以压缩输入数据流(614)。
在一个实施例中,方法600进一步包括:将来自多个搜索和流水线化搜索的结果汇编为令牌和头部的序列,其中头部提供关于令牌中每一个在序列中的偏移的信息;以及并行地编码令牌。在一个实施例中,当从多个搜索和流水线化搜索中选择结果时,处理电路用于从多个搜索中选择最长匹配,并将来自多个搜索的该最长匹配同流水线搜索的结果相结合。在一个实施例中,当标识多个位置时,处理电路用于散列目标数据以获得指向散列表中多个条目的指针,其中条目包括对一个或多个缓冲器的多个位置的多个引用。该多个引用被用于允许多个位置被并行读取。
在一个实施例中,在得分板中为目标数据而跟踪多个搜索的结果。为多个顺序目标数据的每一个更新多个得分板。在一个实施例中,当处理电路收到执行网络功能的指令时,其响应于该指令在输入数据流上执行紧缩压缩,其中该紧缩压缩包括多个搜索和流水线化搜索。
在各实施例中,图6的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,图6的方法可由图1A的协处理器131、图1B的处理器115或类似的处理器、装置、或系统(例如图7-13中所示的实施例)来执行。另外,图1A的协处理器131、图1B的处理器115、以及图7-13中所示的处理器、装置或系统,可执行与图6的方法实施例或相同、或类似、或不同的操作和方法的实施例。
示例性核架构
有序和无序核框图
图7A是示出根据一个实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7B是示出根据一个实施例的要包括在处理器中的有序架构核的示例性实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。图7A和7B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。假设有序方面是无序方面的子集,将描述无序方面。
在图7A中,处理器流水线700包括提取级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派或发出)级712、寄存器读取/存储器读取级714、执行级716、回写/存储器写入级718、异常处理级722、以及提交级724。
图7B示出处理器核790,该核790包括耦合到执行引擎单元750的前端单元730,并且两者耦合到存储器单元770。核790可以是缩减的指令集计算(RISC)核、复杂的指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代核类型。作为另一选项,核790可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元734耦合到指令翻译后备缓冲器(TLB)736,该指令TLB736耦合到指令提取单元738,该指令提取单元738耦合到解码单元740。解码单元740(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元740可使用各种不同的机构来实现。合适机构的示例包括,但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核790包括微代码ROM或为特定宏指令存储微代码(例如在解码单元740中或在前端单元730内)的其它介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到引退单元754的重命名/分配器单元752、以及一组一个或多个调度器单元756。调度器单元756表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元756耦合至物理寄存器文件单元758。这些物理寄存器文件单元758中的每一个单元表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,包括标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要被执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器,向量掩码寄存器、以及通用寄存器。物理寄存器文件单元758由引退单元754重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各种方式。引退单元754和物理寄存器文件单元758耦合到执行集群760。执行集群760包括一组一个或多个执行单元762以及一组一个或多个存储器存取单元764。执行单元762可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专属于专用功能或功能集的大量执行单元,但是其他实施例可包括全部都执行所有功能的仅一个执行单元或者多个执行单元。调度器单元756、物理寄存器文件单元758、以及执行集群760被示为可能是多个,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元764的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发出/执行,而其他流水线可以是有序发出/执行。
一组存储器存取单元764耦合到存储器单元770,该存储器单元770包括耦合到数据高速缓存单元774的数据TLB单元772,该数据高速缓存单元774耦合到二级(L2)高速缓存单元776。在一个示例性实施例中,存储器存取单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一种或多种其他级别的高速缓存,并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可如下地实现流水线700:1)指令提取738执行提取和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和物理寄存器文件单元758执行回写/存储器写入级718;7)各个单元可在异常处理级722中体现;以及8)引退单元754和物理寄存器文件单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维尔市MIPS技术公司的MIPS指令集、加利福尼亚州森尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核790包括逻辑以支持打包数据指令集扩展(例如,SSE、AVX1、AVX2等),由此允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,该核可支持多线程(执行并行的两组或两组以上的操作或线程),并且可以包括分时多线程、同时多线程(其中单个物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时提取和解码以及此后诸如在Hyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是替代实施例可具有用于指令和数据两者的单一内部高速缓存,诸如举例而言,一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核和/或处理器外部。替代地,所有高速缓存可在核和/或处理器外部。
专用示例性有序核架构
图8A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。依据应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、以及其他存储器I/O逻辑进行通信。
图8A是根据本发明实施例的单处理器核连同它与芯片上互连网络802的连接以及其二级(L2)高速缓冲存储器804的本地子集的框图。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。L1高速缓存806允许对高速缓存存储器进行低延迟存取而进入标量和向量单元。尽管在一个实施例中(为了简化设计)标量单元808和向量单元810使用分离的寄存器集合(分别是标量寄存器812和向量寄存器814)并且在两者之间传输的数据被写入存储器且随后从一级(L1)高速缓存806读回,但是替代实施例可使用不同的方法(例如,使用单个寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信通道)。
L2高速缓存的本地子集804是分成分离的本地子集(每一处理器核一个本地子集)的全局L2高速缓存的一部分。每一处理器核具有到L2高速缓存的其自己的本地子集804的直接存取通道。由处理器核读取的数据被存储在其L2高速缓存子集804中,并且可与存取其自己的本地L2高速缓存子集的其他处理器核并行地快速存取。由处理器核写入的数据被存储在其自己的L2高速缓存子集804中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的以允许在芯片内诸如处理器核、L2高速缓存、以及其他逻辑块之类的代理相互通信。
图8B是根据一个实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分、以及关于向量单元810和向量寄存器814的更多细节。具体地,向量单元810是16宽向量处理单元(VPU)(参见16宽ALU828),该向量处理单元执行整数、单精度浮动和双精度浮动的指令中的一个或多个。VPU支持使用拌和单元820拌和寄存器输入、使用数字转换单元822A-B数字转换、以及在存储器输入上使用复制单元824复制。写掩码寄存器826允许预测所得向量写入。
具有集成存储器控制器和图形器件的处理器
图9是根据一个实施例的处理器900的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形器件。图9的实线框示出了处理器900,处理器900具有单个核902A、系统代理910、一组一个或多个总线控制器单元916,而可选附加的虚线框示出了替代的处理器900,具有多个核902A-N、系统代理单元910中的一组一个或多个集成存储器控制器单元914以及专用逻辑908。
由此,处理器900的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑908、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核902A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核902A-N的协处理器;以及3)具有作为大量通用有序核的核902A-N的协处理器。由此,处理器900可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器900可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元906、以及耦合到一组集成存储器控制器单元914的外部存储器(未示出)。一组共享高速缓存单元906可包括一个或多个中级高速缓存(诸如二级(L2)、三级(L3)、四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元912使集成图形逻辑908、一组共享高速缓存单元906、以及系统代理单元910/集成存储器控制器单元914互连,但是替代实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元906与核902A-N之间维持一致性。
在一些实施例中,核902A-H中的一个或多个核能够多线程。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调整核902A-N、以及集成图形逻辑908的功率状态必需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同质的或者异质的,即核902A-N中的两个或两个以上核可以能够执行相同的指令集,而其他核可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
现在参考图10,所示出的是根据一个实施例的系统1000的框图。系统1000可包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(它们可在分离的芯片上),GMCH1090包括耦合到存储器1040和协处理器1045的存储器和图形控制器,IOH1050使输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制中的一个或两个集成在处理器内(如本文所述),存储器1040和协处理器1045直接耦合到处理器1010和在单个芯片中具有IOH1050的控制器中枢1020。
附加的处理器1015的任选性在图10中通过虚线来表示。每一处理器1010、1015可包括本文中所描述的处理器核中的一个或多个,并且可以是处理器900的某种版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或者两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1020可包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等等优点的度量谱,(多个)物理资源1010、1015之间存在各种差别。
在一个实施例中,处理器1010执行控制具有通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器1010识别如具有应当由附连的协处理器1045执行的类型的这些协处理器指令。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发出到协处理器1045。协处理器1045接受和执行接收到的协处理器指令。
现在参考图11,所示出的是根据一个实施例的第一更具体示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是某个版本的处理器900。在一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180分别被示为包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可使用P-P接口电路1178、1188经由点对点(P-P)接口1150交换信息。如图11所示,IMC1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自使用点对点接口电路1176、1194、1186、1198经由各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可任选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1190可经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线。
如图11所示,各种I/O设备1114可连同总线桥1118一起耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者其他处理器之类的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127以及可以包括指令/代码和数据1130的存储单元1128(诸如盘驱动器或其它海量存储设备)。此外,音频I/O1124可耦合到第二总线1120。注意,其他架构是可能的。例如,代替图11的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图12,所示出的是根据一个实施例的第二更具体示例性系统1200的框图。图11和12中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免混淆图12的其它方面。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL1172和1182包括集成存储器控制器单元且包括I/O控制逻辑。图12示出:不仅存储器1132、1134耦合至CL1172、1182,I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215耦合到芯片组1190。
现在参考图13,所示出的是根据一个实施例的SoC1300的框图。图9中的类似元件具有相似的附图标记。同样,虚线框是更高级SoC上的任选的特征。在图13中,互连单元1302耦合至:应用处理器1310,包括一组一个或多个核902A-N以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组一个或多个协处理器1320,可以包括集成图形逻辑、图像处理器、音频处理器、及视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及显示单元1340,用于耦合至一个或多个外部显示器。在一个实施例中,协处理器1320包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机构的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
诸如图11所示的代码1130之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以以高级程序或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,实施例还包括包含指令或者包含设计数据(诸如硬件描述语言(HDL))的非瞬态有形机器可读介质,该设计数据定义本文中所描述的结构、电路、装置、处理器、和/或系统特征。这些实施例还可被称为程序产品。
虽然已经描述了特定示例实施例,并将其示出在附图中,可以理解到,这些实施例仅仅是示例性的且不是限制性的,并且不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在本技术领域中,因为发展很快且未来的进步未曾可知,本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附的权利要求书的范围。
Claims (20)
1.一种装置,包括:
散列电路,标识一个或多个历史缓冲器中的多个位置用于在输入数据流中对目标数据进行搜索;
多个匹配引擎,在所述一个或多个历史缓冲器中对所述目标数据并行执行多个搜索;
流水线电路,在连续时钟周期内流水线化在所述输入数据流中对多个顺序目标数据的搜索;以及
匹配选择器,从所述多个搜索和所述流水线化搜索中选择结果以压缩所述输入数据流。
2.如权利要求1所述的装置,其特征在于,所述散列电路、所述匹配引擎和所述匹配选择器位于处理器的执行电路中。
3.如权利要求1所述的装置,其特征在于,所述散列电路、所述匹配引擎和所述匹配选择器位于耦合到处理器的协处理器中。
4.如权利要求1所述的装置,其特征在于,还包括:
多个编码器,用于接收汇编为令牌和头部的序列的来自所述多个搜索和所述流水线化搜索的结果,其中所述头部提供关于所述令牌中每一个在所述序列中的偏移的信息,且所述编码器用于并行编码所述令牌。
5.如权利要求1所述的装置,其特征在于,所述匹配选择器用于从所述多个搜索中选择最长匹配,并用于将来自所述多个搜索的所述最长匹配和所述流水线化搜索的结果相结合。
6.如权利要求1所述的装置,其特征在于,所述散列电路用于散列所述目标数据以获得指向散列表中多个条目的指针,所述条目包括对所述一个或多个历史缓冲器中所述多个位置的多个引用,所述散列电路用于输出所述多个引用以使所述多个位置能被并行读取。
7.如权利要求1所述的装置,其特征在于,还包括:
执行电路,响应于并行紧缩指令而并行执行所述多个搜索和所述流水线搜索。
8.一种方法,包括:
标识一个或多个历史缓冲器中的多个位置用于在输入数据流中对目标数据进行搜索;
在所述一个或多个历史缓冲器中对所述目标数据并行执行多个搜索;
在连续时钟周期内流水线化在所述输入数据流中对多个顺序目标数据的搜索;以及
从所述多个搜索和所述流水线化搜索中选择结果以压缩所述输入数据流。
9.如权利要求8所述的方法,其特征在于,还包括:
将来自所述多个搜索和所述流水线化搜索的结果汇编为令牌和头部的序列,其中所述头部提供关于所述令牌中每一个在所述序列中的偏移的信息;以及
并行编码所述令牌。
10.如权利要求8所述的方法,其特征在于,选择结果的步骤还包括:
从所述多个搜索中选择最长匹配;以及
将来自所述多个搜索的最长匹配和所述流水线化搜索的结果相结合。
11.如权利要求8所述的方法,其特征在于,标识所述多个位置的步骤还包括:
散列所述目标数据以获得指向散列表中多个条目的指针,所述条目包括对所述一个或多个历史缓冲器中的所述多个位置的多个引用;以及
输出所述多个引用以使所述多个位置能被并行读取。
12.如权利要求8所述的方法,其特征在于,还包括:
在得分板中保持跟踪对所述目标数据的所述多个搜索的结果;以及
为所述多个顺序目标数据的每一个更新多个得分板。
13.如权利要求8所述的方法,其特征在于,还包括:
接收执行网络功能的指令;以及
响应于所述指令对所述输入数据流执行紧缩压缩,其中所述紧缩压缩包括所述多个搜索和所述流水线化搜索。
14.一种系统,包括:
存储器;以及
耦合到所述存储器的处理电路,其中所述处理电路包括:
散列电路,标识一个或多个历史缓冲器中的多个位置用于在输入数据流中对目标数据进行搜索;
多个匹配引擎,在所述一个或多个历史缓冲器中对所述目标数据并行执行多个搜索;
流水线电路,在连续时钟周期内流水线化在所述输入数据流中对多个顺序目标数据的搜索;以及
匹配选择器,从所述多个搜索和所述流水线化搜索中选择结果以压缩所述输入数据流。
15.如权利要求14所述的系统,其特征在于,所述处理电路位于处理器的执行电路中。
16.如权利要求14所述的系统,其特征在于,所述处理电路位于耦合于处理器的协处理器中。
17.如权利要求14所述的系统,其特征在于,还包括:
多个编码器,用于接收汇编为令牌和头部的序列的来自所述多个搜索和所述流水线化搜索的结果,其中所述头部提供关于所述令牌中每一个在所述序列中的偏移的信息,且所述编码器用于并行编码所述令牌。
18.如权利要求14所述的系统,其特征在于,所述匹配选择器用于从所述多个搜索中选择最长匹配,并用于将来自所述多个搜索的所述最长匹配和所述流水线化搜索的结果相结合。
19.如权利要求14所述的系统,其特征在于,所述散列电路用于散列所述目标数据以获得指向散列表中多个条目的指针,所述条目包括对所述一个或多个历史缓冲器中所述多个位置的多个引用,所述散列电路用于输出所述多个引用以使所述多个位置能被并行读取。
20.如权利要求14所述的系统,其特征在于,还包括:
执行电路,响应于并行紧缩指令而并行执行所述多个搜索和所述流水线搜索。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361800263P | 2013-03-15 | 2013-03-15 | |
US61/800,263 | 2013-03-15 | ||
US13/853,286 US8766827B1 (en) | 2013-03-15 | 2013-03-29 | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression |
US13/853,286 | 2013-03-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104300990A true CN104300990A (zh) | 2015-01-21 |
CN104300990B CN104300990B (zh) | 2017-12-01 |
Family
ID=50982083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410097304.4A Expired - Fee Related CN104300990B (zh) | 2013-03-15 | 2014-03-17 | 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8766827B1 (zh) |
JP (1) | JP5945291B2 (zh) |
KR (1) | KR101651911B1 (zh) |
CN (1) | CN104300990B (zh) |
DE (1) | DE102014003790A1 (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104811209A (zh) * | 2015-04-22 | 2015-07-29 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN106164877A (zh) * | 2015-03-12 | 2016-11-23 | 瑞萨电子株式会社 | 数据处理设备、数据处理系统和方法 |
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
CN107534446A (zh) * | 2015-05-01 | 2018-01-02 | 谷歌公司 | 用于高带宽lz77解压缩的asic块 |
CN107925420A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于经优化压缩比的异构压缩架构 |
CN108028665A (zh) * | 2015-09-25 | 2018-05-11 | 英特尔公司 | 用于使用硬件和软件进行压缩的系统、方法和装置 |
CN108028664A (zh) * | 2015-10-19 | 2018-05-11 | 英特尔公司 | 使用具有多个搜索引擎的加速器的数据压缩 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
CN109308192A (zh) * | 2017-07-28 | 2019-02-05 | 苹果公司 | 用于执行存储器压缩的系统和方法 |
CN109716659A (zh) * | 2016-07-22 | 2019-05-03 | 英特尔公司 | 高性能单流lz77压缩技术 |
CN110233627A (zh) * | 2019-05-22 | 2019-09-13 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
US10630312B1 (en) | 2019-01-31 | 2020-04-21 | International Business Machines Corporation | General-purpose processor instruction to perform compression/decompression operations |
US10831497B2 (en) | 2019-01-31 | 2020-11-10 | International Business Machines Corporation | Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data |
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
CN114450676A (zh) * | 2019-09-24 | 2022-05-06 | 超威半导体公司 | 用于生成压缩数据的具有最长匹配处理的压缩系统 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2524515A (en) | 2014-03-25 | 2015-09-30 | Ibm | Method to improve compression ratio for a compression engine |
JP6319740B2 (ja) * | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
GB2524516A (en) * | 2014-03-25 | 2015-09-30 | Ibm | Hardware compression method finding backward references with multi-level hashes |
US10083182B2 (en) * | 2014-06-26 | 2018-09-25 | International Business Machines Corporation | Augmented directory hash for efficient file system operations and data management |
US9934234B2 (en) | 2014-08-12 | 2018-04-03 | Tidal Systems, Inc. | Adaptive rate compression hash processor |
US9524169B2 (en) * | 2014-09-24 | 2016-12-20 | Intel Corporation | Technologies for efficient LZ77-based data decompression |
US9413386B1 (en) | 2015-02-19 | 2016-08-09 | Qualcomm Incorporated | System, apparatus, and method for decompressing data |
US9614544B2 (en) * | 2015-03-27 | 2017-04-04 | Intel Corporation | Systems, methods, and apparatuses for decompression using hardware and software |
US9590655B2 (en) | 2015-03-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Scalable high-bandwidth architecture for lossless compression |
US9509337B1 (en) | 2015-05-11 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor using dynamic hash algorithm based on input block type |
US10027346B2 (en) | 2015-05-11 | 2018-07-17 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that maintains sorted symbol list concurrently with input block scanning |
US9515678B1 (en) * | 2015-05-11 | 2016-12-06 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that directly huffman encodes output tokens from LZ77 engine |
JP6363581B2 (ja) * | 2015-05-11 | 2018-07-25 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | 入力ブロックのスキャンと同時にソート済みシンボル・リストを維持するハードウェア・データ圧縮器 |
US9509335B1 (en) | 2015-05-11 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that constructs and uses dynamic-prime huffman code tables |
US9503122B1 (en) * | 2015-05-11 | 2016-11-22 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that sorts hash chains based on node string match probabilities |
US9628111B2 (en) | 2015-05-11 | 2017-04-18 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor with multiple string match search hash tables each based on different hash size |
US9509336B1 (en) | 2015-05-11 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto |
US10193696B2 (en) * | 2015-06-02 | 2019-01-29 | ALTR Solutions, Inc. | Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers |
US9419648B1 (en) * | 2015-09-18 | 2016-08-16 | Intel Corporation | Supporting data compression using match scoring |
US9584155B1 (en) * | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
KR102659349B1 (ko) | 2016-12-13 | 2024-04-19 | 에스케이텔레콤 주식회사 | 데이터 압축 장치 및 방법 |
CN107168936B (zh) * | 2017-05-17 | 2019-02-19 | 上海兆芯集成电路有限公司 | 基于散列的加速压缩方法以及使用此方法的装置 |
US10224957B1 (en) * | 2017-11-27 | 2019-03-05 | Intel Corporation | Hash-based data matching enhanced with backward matching for data compression |
US10733383B1 (en) * | 2018-05-24 | 2020-08-04 | Workday, Inc. | Fast entity linking in noisy text environments |
WO2020092795A2 (en) * | 2018-11-02 | 2020-05-07 | Fungible, Inc. | Parallel coding of syntax elements for jpeg accelerator |
US10848775B2 (en) | 2018-11-02 | 2020-11-24 | Fungible, Inc. | Memory layout for JPEG accelerator |
US10827191B2 (en) | 2018-11-02 | 2020-11-03 | Fungible, Inc. | Parallel coding of syntax elements for JPEG accelerator |
US10827192B2 (en) | 2018-11-02 | 2020-11-03 | Fungible, Inc. | Work allocation for JPEG accelerator |
US10931958B2 (en) | 2018-11-02 | 2021-02-23 | Fungible, Inc. | JPEG accelerator using last-non-zero (LNZ) syntax element |
US11309908B2 (en) | 2018-11-26 | 2022-04-19 | Fungible, Inc. | Static dictionary-based compression hardware pipeline for data compression accelerator of a data processing unit |
US10693493B1 (en) | 2019-02-14 | 2020-06-23 | International Business Machines Corporation | Reducing latch count to save hardware area for dynamic Huffman table generation |
US11226839B2 (en) * | 2019-02-27 | 2022-01-18 | International Business Machines Corporation | Maintaining compatibility for complex functions over multiple machine generations |
US10944423B2 (en) | 2019-03-14 | 2021-03-09 | International Business Machines Corporation | Verifying the correctness of a deflate compression accelerator |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
CN101996139A (zh) * | 2009-08-28 | 2011-03-30 | 百度在线网络技术(北京)有限公司 | 数据匹配方法和数据匹配装置 |
US7995682B2 (en) * | 2001-05-18 | 2011-08-09 | Broadcom Corporation | Method and apparatus for performing signal processing using historical correlation data |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US20120203729A1 (en) * | 2011-02-06 | 2012-08-09 | International Business Machines Corporation | Multiple hash scheme for use in a pattern matching accelerator |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
US5525982A (en) * | 1994-04-15 | 1996-06-11 | International Business Machines Corporation | Method and means for character string pattern matching for compression and the like using minimal cycles per character |
US5572206A (en) * | 1994-07-06 | 1996-11-05 | Microsoft Corporation | Data compression method and system |
JP2005521938A (ja) * | 2002-03-29 | 2005-07-21 | グッド テクノロジー インコーポレイテッド | データサービスによるデータ処理装置の全無線同期システム及び方法 |
JP2005175940A (ja) * | 2003-12-11 | 2005-06-30 | Matsushita Electric Ind Co Ltd | データ圧縮装置 |
FR2888350A1 (fr) * | 2005-07-05 | 2007-01-12 | St Microelectronics Sa | Generation de nombres de facon non deterministe |
JP4806054B2 (ja) * | 2009-05-13 | 2011-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データが記憶された位置を選択する装置及び方法 |
US9372887B2 (en) * | 2010-12-28 | 2016-06-21 | International Business Machines Corporation | Compression ratio improvement by lazy match evaluation on the string search CAM |
-
2013
- 2013-03-29 US US13/853,286 patent/US8766827B1/en not_active Expired - Fee Related
-
2014
- 2014-03-06 JP JP2014043707A patent/JP5945291B2/ja not_active Expired - Fee Related
- 2014-03-17 DE DE102014003790.8A patent/DE102014003790A1/de not_active Withdrawn
- 2014-03-17 KR KR1020140031291A patent/KR101651911B1/ko active IP Right Grant
- 2014-03-17 CN CN201410097304.4A patent/CN104300990B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7995682B2 (en) * | 2001-05-18 | 2011-08-09 | Broadcom Corporation | Method and apparatus for performing signal processing using historical correlation data |
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
CN101996139A (zh) * | 2009-08-28 | 2011-03-30 | 百度在线网络技术(北京)有限公司 | 数据匹配方法和数据匹配装置 |
US20120203729A1 (en) * | 2011-02-06 | 2012-08-09 | International Business Machines Corporation | Multiple hash scheme for use in a pattern matching accelerator |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106164877A (zh) * | 2015-03-12 | 2016-11-23 | 瑞萨电子株式会社 | 数据处理设备、数据处理系统和方法 |
CN106164877B (zh) * | 2015-03-12 | 2021-05-04 | 瑞萨电子株式会社 | 数据处理设备、数据处理系统和方法 |
CN104811209A (zh) * | 2015-04-22 | 2015-07-29 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN104811209B (zh) * | 2015-04-22 | 2017-10-17 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN107534446B (zh) * | 2015-05-01 | 2020-09-22 | 谷歌有限责任公司 | 用于高带宽lz77解压缩的asic块 |
CN107534446A (zh) * | 2015-05-01 | 2018-01-02 | 谷歌公司 | 用于高带宽lz77解压缩的asic块 |
CN107925420B (zh) * | 2015-09-25 | 2022-01-04 | 英特尔公司 | 用于经优化压缩比的异构压缩架构 |
CN108028665A (zh) * | 2015-09-25 | 2018-05-11 | 英特尔公司 | 用于使用硬件和软件进行压缩的系统、方法和装置 |
CN108028665B (zh) * | 2015-09-25 | 2022-05-10 | 英特尔公司 | 用于使用硬件和软件进行压缩的系统、方法和装置 |
CN107925420A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于经优化压缩比的异构压缩架构 |
CN108028664A (zh) * | 2015-10-19 | 2018-05-11 | 英特尔公司 | 使用具有多个搜索引擎的加速器的数据压缩 |
CN108028664B (zh) * | 2015-10-19 | 2022-01-18 | 英特尔公司 | 使用具有多个搜索引擎的加速器的数据压缩 |
CN108141225B (zh) * | 2016-07-14 | 2020-10-27 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
CN109716659B (zh) * | 2016-07-22 | 2024-02-27 | 英特尔公司 | 高性能单流lz77压缩技术 |
CN109716659A (zh) * | 2016-07-22 | 2019-05-03 | 英特尔公司 | 高性能单流lz77压缩技术 |
CN106385260B (zh) * | 2016-09-28 | 2019-05-21 | 中电莱斯信息系统有限公司 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN106788451B (zh) * | 2016-11-30 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种哈夫曼解码方法及其装置 |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
CN109308192B (zh) * | 2017-07-28 | 2023-07-21 | 苹果公司 | 用于执行存储器压缩的系统和方法 |
CN116841920A (zh) * | 2017-07-28 | 2023-10-03 | 苹果公司 | 用于执行存储器压缩的系统和方法 |
CN109308192A (zh) * | 2017-07-28 | 2019-02-05 | 苹果公司 | 用于执行存储器压缩的系统和方法 |
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
US10831497B2 (en) | 2019-01-31 | 2020-11-10 | International Business Machines Corporation | Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data |
US10630312B1 (en) | 2019-01-31 | 2020-04-21 | International Business Machines Corporation | General-purpose processor instruction to perform compression/decompression operations |
CN110233627A (zh) * | 2019-05-22 | 2019-09-13 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN114450676A (zh) * | 2019-09-24 | 2022-05-06 | 超威半导体公司 | 用于生成压缩数据的具有最长匹配处理的压缩系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2014182810A (ja) | 2014-09-29 |
DE102014003790A1 (de) | 2014-09-18 |
JP5945291B2 (ja) | 2016-07-05 |
CN104300990B (zh) | 2017-12-01 |
KR20140113604A (ko) | 2014-09-24 |
US8766827B1 (en) | 2014-07-01 |
KR101651911B1 (ko) | 2016-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104300990A (zh) | 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 | |
US11347994B2 (en) | Weight prefetch for in-memory neural network execution | |
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
US11416165B2 (en) | Low synch dedicated accelerator with in-memory computation capability | |
US11502696B2 (en) | In-memory analog neural cache | |
CN108292222A (zh) | 用于数据解压缩的硬件装置和方法 | |
CN104781803A (zh) | 用于架构不同核的线程迁移支持 | |
US10305508B2 (en) | System for compressing floating point data | |
CN105278917A (zh) | 无局部性提示的向量存储器访问处理器、方法、系统和指令 | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
TWI514144B (zh) | 積聚分頁錯失之信號傳遞與處置技術 | |
CN104025020A (zh) | 用于执行掩码位压缩的系统、装置以及方法 | |
CN104049953A (zh) | 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN104040487A (zh) | 用于合并掩码模式的指令 | |
CN105144082A (zh) | 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择 | |
CN108028665A (zh) | 用于使用硬件和软件进行压缩的系统、方法和装置 | |
CN104077107A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
JP2019121351A (ja) | 遠隔アトミックオペレーションの空間的・時間的マージ | |
CN104919432A (zh) | 用于将多个位向左移并将多个1拉入较低有效位的指令 | |
CN105264489A (zh) | 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 | |
GB2513987A (en) | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and huffman encoding for deflate compression | |
CN104049944A (zh) | 将有条件短前向分支转换成计算等效的所断言指令 | |
CN107925419A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171201 Termination date: 20210317 |
|
CF01 | Termination of patent right due to non-payment of annual fee |