CN109802686A - 加速压缩方法以及加速压缩装置 - Google Patents
加速压缩方法以及加速压缩装置 Download PDFInfo
- Publication number
- CN109802686A CN109802686A CN201910091990.7A CN201910091990A CN109802686A CN 109802686 A CN109802686 A CN 109802686A CN 201910091990 A CN201910091990 A CN 201910091990A CN 109802686 A CN109802686 A CN 109802686A
- Authority
- CN
- China
- Prior art keywords
- word string
- retreatment
- sub
- pointer
- matching
- 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
- 238000007906 compression Methods 0.000 title claims abstract description 78
- 230000006835 compression Effects 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000011268 retreatment Methods 0.000 claims abstract description 156
- 230000001133 acceleration Effects 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 23
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims description 3
- 230000006978 adaptation Effects 0.000 description 91
- 230000006870 function Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 29
- 230000008878 coupling Effects 0.000 description 25
- 238000010168 coupling process Methods 0.000 description 25
- 238000005859 coupling reaction Methods 0.000 description 25
- 238000000605 extraction Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 238000005314 correlation function Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000013144 data compression Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开一种加速压缩方法以及加速压缩装置。加速压缩装置包括预取存储器(look‑ahead memory)、字串匹配处理流水线以及控制电路。依据发布指针,控制电路将待压缩字串的子字串从预取存储器发布至字串匹配处理流水线进行匹配操作,以获得匹配长度及匹配偏移量。依照退却指针所对应的所述匹配长度,控制电路决定新退却位置。当新退却位置超越发布指针所指向的发布位置时,控制电路重置字串匹配处理流水线。
Description
技术领域
本发明涉及一种加速装置,且特别涉及一种对压缩操作进行硬件加速的加速压缩方法以及加速压缩装置。
背景技术
压缩加速器(compression accelerator)是专门协助执行压缩/解压缩的硬件。压缩加速器一般会采用基于字典的压缩算法(例如LZ77、LZSS、LZ78、LZW等算法)。在字典(即滑动窗,sliding window)中的位置信息(包含匹配长度与匹配偏移量)被用来替代原始数据(raw data),从而实现数据压缩。对于压缩加速器来说,最复杂的部分在于进行最长首码字串匹配(longest-prefix string matching),而最长首码字串匹配方法通常可归类为:基于内容可定址存储器(CAM-based,Content Addressable Memory-based)以及基于散列(hash-based)二种。
以基于散列的字串匹配器为例,其通常利用散列电路将待压缩字串的多个字符(散列键,Hask Key)转换为散列值(Hash Value)。散列电路依据散列值对散列表(hashtable)进行查表与比较。散列键对应的散列值出现在散列表中,表明字典(滑动窗)的内容具有这个字符(散列键),因此压缩加速器可以获得这个字符在字典(滑动窗)中的位置(匹配偏移量),接着进行最长匹配(Longest Match,LM)比较。所谓最长匹配比较,是从所述匹配偏移量开始,在字典(滑动窗)中寻找最长能匹配的长度。最后,压缩加速器可以输出匹配对(match pair)来替代原始数据(raw data),从而实现数据压缩。其中匹配对包括匹配长度(match length)与匹配偏移量(match offset)。
以1个字符占用1个字节为例,由于前述散列键是逐字节地(byte by byte)在待压缩字串中取得的。当待压缩字串的内容出现了前述的匹配对时,产生的匹配长度(matchlength)所覆盖的字符可能已经被发送到散列电路进行计算或者甚至已经在进行最长匹配(Longest Match,LM)比较,这些字符的前述计算或比较就会成为不必要的冗余操作,造成匹配效率的降低。
发明内容
本发明提供一种加速压缩方法以及加速压缩装置,以减少冗余操作。
本发明的实施例提供一种加速压缩方法,实施于加速压缩装置中。加速压缩装置包括预取存储器及字串匹配处理流水线。所述加速压缩方法包括:依据发布指针(issuancepointer)从所述预取存储器所存储的待压缩字串发布至少一个子字串(sub-string);将所述子字串发送至所述字串匹配处理流水线进行匹配操作,以获得所述子字串的匹配长度及匹配偏移量;依照退却指针(retirement pointer)以及所述退却指针所指向的在所述待压缩字串中的退却位置所对应的所述匹配长度,决定新退却位置;以及当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的发布位置时,重置所述字串匹配处理流水线。
本发明的实施例提供一种加速压缩装置。所述加速压缩装置包括字串匹配处理流水线、预取存储器以及控制电路。控制电路耦接于所述字串匹配处理流水线与所述预取存储器。所述控制电路依据发布指针从所述预取存储器所存储的待压缩字串发布至少一个子字串。所述控制电路将所述子字串发送至所述字串匹配处理流水线进行匹配操作,以获得所述子字串的匹配长度及匹配偏移量。依照退却指针以及所述退却指针所指向的在所述待压缩字串中的退却位置所对应的所述匹配长度,所述控制电路决定新退却位置。当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的发布位置时,所述控制电路重置所述字串匹配处理流水线。
基于上述,本发明诸实施例所述加速压缩方法以及加速压缩装置可以在进行退却时检查匹配长度与发布指针。当相关于匹配长度的新退却位置超越发布指针所指位置时,控制电路可以重置所述字串匹配处理流水线,以尽快释放字串匹配处理流水线的计算资源和相关存储器空间。亦即,本发明诸实施例所述加速压缩方法以及加速压缩装置可以减少冗余计算。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依据本发明实施例的微处理器的系统架构图。
图2是依据本发明一实施例所绘示的一种加速压缩装置的电路方块(circuitblock)示意图。
图3是依据本发明一实施例所绘示的发布指针与退却指针的操作情境示意图。
图4是依据本发明另一实施例所绘示的发布指针与退却指针的操作情境示意图。
图5是依据本发明又一实施例所绘示的发布指针与退却指针的操作情境示意图。
图6是依据本发明再一实施例所绘示的发布指针与退却指针的操作情境示意图。
图7是依据本发明另一实施例所绘示的一种加速压缩装置的电路方块示意图。
图8是依据本发明实施例所绘示的状态图。
图9是依据本发明一实施例所绘示的散列请求程序的流程示意图。
图10是依据本发明一实施例所绘示的散列回复处理程序的流程示意图。
图11是依据本发明一实施例所绘示的数据回复处理程序的流程示意图。
图12是依据本发明一实施例所绘示的退却处理程序的流程示意图。
图13是依据本发明一实施例说明图2所示散列匹配器的电路方块示意图。
图14是依据本发明一实施例说明图8所示匹配器的电路方块示意图。
图15是依据本发明一实施例说明一种散列匹配方法的流程示意图。
【符号说明】
10:微处理器
20:加速压缩装置
21:预取存储器
22:字串匹配处理流水线
30:加速压缩装置
110:末级高速缓冲存储器
130:加速器接口
150_1、150_2、150_j:加速器
170_1、170_2、170_i:处理器内核
210:数据缓冲器
220:提取单元
230:中介缓冲器
240:控制电路
250:散列匹配器
260:最长字串匹配器
270:格式化器
280:预取缓冲器
810_1、810_2、810_3、810_4:散列函数
830:选择器
850_1、850_2、850_3、850_4:先进先出队列
870_1、870_2、870_3、870_4:匹配器
890_1、890_2、890_3、890_4:存储器库
910_1、910_2、910_3:比较器
930:仲裁器
IP、IP’:发布指针
ML:匹配长度
RP:退却指针
RP’:新退却位置
S31:空闲状态
S32:散列请求状态
S33:数据请求状态
S34:不匹配状态
S36:完全匹配状态
S37:部分匹配状态
S410~S470、S510~S577、S610~S695、S710~S770、S1010~S1077:步骤
具体实施方式
在本申请说明书全文(包括权利要求书)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。另外,凡可能之处,在附图及实施方式中使用相同标号的元件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的元件/构件/步骤可以相互参照相关说明。
图1是依据本发明实施例的微处理器10的系统架构图。微处理器10可包含多个处理器内核,例如图1所示处理器内核170_1、170_2、…、170_i。微处理器10还包含多个加速器(Accelerator),例如图1所示加速器150_1、150_2、…、150_j。其中,i、j为整数,随着不同设计需求而有不同。加速器150_1~150_j举例而言可以是加速功能单元(AFU,AcceleratorFunctional Units)。处理器内核170_1~170_i中的任何一个包含的元件都涉及计算机指令的执行,包括算术逻辑单位(ALU,Arithmetic Logic Unit)、浮点运算单元(FPU,Floating Point Unit)、一级高速缓冲存储器(Ll Cache)及二级高速缓冲存储器(L2Cache)。每一个处理器内核采用指令周期(有时亦称为提取-解码-执行周期)作为基本操作流程。此流程用以让处理器内核从存储器取得程序指令,判定此程序指令进行何种操作,并且执行这些操作。
加速器150_1~150_j可执行不同功能,并通过加速器接口(AcceleratorInterface)130连接至末级高速缓冲存储器(Last-level Cache)110。加速器150_1~150_j可以利用虚拟地址(virtual address)通过末级高速缓冲存储器110而与处理器内核170_1~170_i进行数据交换。加速器150_1~150_j中的任何一个可协助处理器内核170_1~170_i以更有效率地方式执行特定功能,从而减轻处理器内核170_1~170_i的工作负担。上述特定功能包括压缩、加密、解密、正则匹配和/或其他运算量较大的功能。加速器150_1~150_j中的一个可为压缩加速器(compression accelerator),用以完成字串压缩功能。
图2是依据本发明一实施例所绘示的一种加速压缩装置20的电路方块(circuitblock)示意图。当图1所示加速器150_1~150_j中的一个被实现为压缩加速器时,此压缩加速器的实施细节可以参照图2所示加速压缩装置20的相关说明。请参照图2,加速压缩装置20包含至少一个字串匹配处理流水线22以及一个预取存储器(look-ahead memory)21。在一实施例中,加速压缩装置20还包括一个控制电路240及一个格式化器270,其中控制电路240耦接于字串匹配处理流水线22、预取存储器21与格式化器270。预取存储器21用以存储原始字串(raw string,亦即待压缩字串)以及经压缩字串(compressed string)。预取存储器21还包含发布指针(issue pointer)及退却指针(retire pointer)。发布指针指向在待压缩字串中下一个需要被发布至字串匹配处理流水线22进行匹配操作的子字串(sub-string)的起始字符。字串匹配处理流水线22可以对被发布的子字串进行匹配操作,以获得匹配对(即匹配长度与匹配偏移量)。退却指针指向在待压缩字串中下一个需要退却的子字串,亦即指向已完成匹配操作的子字串的起始字符。
在一实施例中,控制电路240将发布指针所指的在预取存储器21中的一起始位置开始的子字串发布至字串匹配处理流水线22进行匹配操作。在基于散列的字串匹配处理流水线22中,字串匹配处理流水线22可以进行散列比较与最长匹配比较,以获得匹配对(即匹配长度与匹配偏移量)。也就是说,在预取存储器21中,退却指针所指位置和发布指针所指位置之间的字符为正在字串匹配处理流水线22中进行匹配操作的字符。当退却指针所指位置存在匹配对时,这个匹配对的匹配长度范围可能涵盖到了已经进入字串匹配处理流水线22的字符。然而,已经在这个匹配对的匹配长度范围内的字符已经不需要再进行匹配操作(例如包括散列比较和最长匹配比较等操作)。以下图3至图6的实施例将具体说明本发明如何减少这些不必要的匹配操作(即冗余操作)对字串匹配处理流水线22硬件资源的占用。
图3是依据本发明一实施例所绘示的发布指针IP与退却指针RP的操作情境示意图。图3右侧方向表示待压缩字串的低地址方向,而图3左侧方向表示待压缩字串的高地址方向。发布指针IP指向在待压缩字串中下一个需要被发布且发送至字串匹配处理流水线22进行匹配操作的子字串的起始字符(后该起始字符的位置称之为“发布位置”)。随着发布的进度,发布指针IP可以动态地往高地址方向移动,以1个字符占用1个字节为例,发布指针IP是逐字节地(byte by byte)移动的,依次指向每个需要进行匹配操作的子字串的起始字符。控制电路240依据发布指针IP从预取存储器21所存储的待压缩字串提取(或称为发布)至少一个子字串,并将所述子字串发送至字串匹配处理流水线22进行匹配操作。在字串匹配处理流水线22采用基于散列匹配技术的实施例中,在子字串被发送至字串匹配处理流水线22后,字串匹配处理流水线22可以对被发布的子字串进行散列比较与最长匹配比较,以获得这个子字串的匹配对(即匹配长度与匹配偏移量)。值得注意的是,本发明并不限制字串匹配处理流水线22采用何种匹配技术来获得前述的匹配长度及匹配偏移量,本发明的加速压缩方法也适用于采用其它匹配技术的压缩加速器。
退却指针RP指向在待压缩字串中下一个需要退却的子字串的起始字符(后该起始字符的位置称之为“退却位置”),如果字串匹配处理流水线22已经完成对该子字串的匹配操作,可以向格式化器270输出该子字串的匹配结果时,则执行该子字串的退却操作。在一实施例中,当退却指针RP指向的一个子字串所对应的一个完成标志(done flag)被设置,代表该子字串的匹配操作已完成,则执行该子字串的退却操作;如果退却指针RP指向的子字串的完成标志未被设置,则退却指针RP停留在该子字串的起始字符的位置,直至该子字串对应的完成标志被设置。即是说,子字串的退却操作需要依照待压缩字串的原始字符顺序执行。随着退却的进度,退却指针RP可以依序地往高地址方向移动。依照退却指针RP,以及依照所述退却指针RP所指在所述待压缩字串中的退却位置所对应的匹配长度ML,控制电路240可以决定新退却位置RP’。在一实施例中,新退却位置RP’=退却指针RP+匹配长度ML。控制电路240可以在进行退却时检查匹配长度ML与发布指针RP。当相关于匹配长度ML的新退却位置RP’超越发布指针IP所指位置(即发布位置)时(即图3所示情境),控制电路240可以重置(reset)字串匹配处理流水线22,即,停止字串匹配处理流水线22中正在进行的所有匹配操作并且丢弃所有正在进行匹配操作的子字串在字串匹配处理流水线22中的相关数据,以尽快释放字串匹配处理流水线22的计算资源和相关存储器空间。在一实施例中,当新退却位置RP’超越发布指针IP所指位置(即发布位置)时,控制电路240还可以将所述发布指针IP由该发布位置IP改为指向所述新退却位置RP’,例如图3所示发布指针IP’。
已经在图3所示匹配长度ML范围内的子字串已经不需要再进入字串匹配处理流水线22进行匹配操作。一旦不需进行比较的子字串被推入字串匹配处理流水线22,则字串匹配处理流水线22对此子字串的计算就是冗余计算。在待压缩字串中,退却指针RP所指位置和发布指针IP所指位置之间的字符对应的子字串为已经发送至字串匹配处理流水线22正在进行匹配操作的子字串。当新退却位置RP’超越发布指针IP所指位置时,控制电路240可以实时地重置字串匹配处理流水线22,以避免不需进行比较的子字串占用字串匹配处理流水线22的资源。此外,在另一实施例中,当新退却位置RP’超越发布指针IP所指位置(即发布位置)时,控制电路240还可以实时地将发布指针IP改为指向所述新退却位置RP’,以避免不需进行比较的子字串被发布至字串匹配处理流水线22。因此,本实施例所述加速压缩装置20可以减少冗余计算。
按照退却指针RP,并依据退却指针RP所指在待压缩字串中的位置(即退却位置)所对应的匹配长度ML及所述匹配偏移量(matched offset),控制电路240可以输出结果给格式化器270,使得格式化器270据以压缩所述待压缩字串。在控制电路240输出所述结果给格式化器270后,控制电路240可以将退却指针RP由退却位置RP改为指向新退却位置RP’。
关于“新退却位置RP’未超越发布指针IP所指位置”的情况,以下介绍三个解决方案。
第一解决方案:
图4是依据本发明另一实施例所绘示的发布指针IP与退却指针RP的操作情境示意图。在第一解决方案中,当新退却位置RP’未超越发布指针IP所指在待压缩字串中的位置(即“发布位置”)时,发布指针IP与退却指针RP的跳转操作可以是通常操作(稍后详述)。预取存储器21可以为其存储的待压缩字串的每一个字符对应配置一个标志。在所述待压缩字串中的每一字符(即每一个子字串的起始字符,值得注意的是,字串匹配处理流水线22是以子字串为单位执行匹配操作)关联于一个标志,如图4所示。当新退却位置RP’未超越发布指针IP所指在待压缩字串中的位置时,控制电路240可以设置(set)在新退却位置RP’与退却指针RP所指位置(即“退却位置”)之间的每一个字符(即每一个子字串的起始字符)所对应的标志。依照设计需求,在一些实施例中,“设置”可以是将此标志的逻辑值设为“1”,而“重置”可以是将此标志的逻辑值设为“0”,如图4所示。在另一些实施例中,“设置”可以是将此标志的逻辑值设为“0”,而“重置”可以是将此标志的逻辑值设为“1”。
字串匹配处理流水线22在对某一个子字串进行匹配操作(例如包括散列比较和/或最长匹配比较等,后会详述)之前,字串匹配处理流水线22会去检查该子字串的起始字符所对应的标志。字串匹配处理流水线22可以依照所述标志来决定是否继续进行匹配操作。当字串匹配处理流水线22所处理的子字串的起始字符所对应的标志已被设置时,字串匹配处理流水线22可以停止对该子字串的处理,更可丢弃该子字串在字串匹配处理流水线22中的相关数据,以尽快释放字串匹配处理流水线22的计算资源和相关存储器空间。当字串匹配处理流水线22所处理的子字串的起始字符所对应的标志没有被设置时,字串匹配处理流水线22可以继续对该子字串的匹配操作(例如包括散列比较和/或最长匹配比较等,后会详述)。
第二解决方案:
图5是依据本发明又一实施例所绘示的发布指针IP与退却指针RP的操作情境示意图。在第二解决方案中,当新退却位置RP’未超越发布指针IP所指在待压缩字串中的位置(即“发布位置”)时,发布指针IP与退却指针RP的跳转操作可以是通常操作(稍后详述)。依照退却指针RP,以及依照退却指针RP所指位置(即“退却位置”)所对应的匹配长度ML,控制电路240可以计算出新退却位置RP’。例如新退却位置RP’=退却指针RP+匹配长度ML。当新退却位置RP’未超越发布指针IP所指在待压缩字串中的位置(即“发布位置”)时,控制电路240可以记录所述新退却位置RP’。字串匹配处理流水线22在对某一个子字串进行匹配操作(例如包括散列比较和/或最长匹配比较)之前,字串匹配处理流水线22会去检查所述新退却位置RP’。当字串匹配处理流水线22所处理的子字串的起始位置没有超过所述新退却位置RP’时,亦即当这个子字串落入图5所示匹配长度ML范围内时,字串匹配处理流水线22可以停止对这个子字串的匹配操作,更可丢弃这个子字串在字串匹配处理流水线22中的相关数据,以尽快释放字串匹配处理流水线22的计算资源和相关存储器空间。当字串匹配处理流水线22所处理的子字串的起始位置超过所述新退却位置RP’时,亦即当这个子字串不在图5所示匹配长度ML范围内时,字串匹配处理流水线22可以不停止对这个子字串进行的匹配操作(例如包括散列比较和/或最长匹配比较)。在一实例中,控制电路240还将从预取存储器21发布过的所有子字串存储于一中介缓冲器230(图2未绘示,后面图7会详述的)中,例如每个子字串以一个实例的形式占用中介缓冲器230的一个表项(entry)。其中字串匹配处理流水线22所处理的每个子字串的起始位置会存储于中介缓冲器230中该子字串对应的表项中。字串匹配处理流水线22对每个子字串进行散列比较和/或最长匹配比较之前,都会从中介缓冲器230对应的表项中读取该子字串的起始位置,并与当前的新退却位置RP’进行比较以决定是否停止对该子字串的对应操作。其中,该起始位置即该子字串的起始字符原来在预取存储器21中存储的位置。值得注意的是,在一实施例中,预取存储器21的大小举例而言为512字节(byte),中介缓冲器230的深度举例而言为64层(即,最多可存储64个发布过的子字串),退却指针同时也指向中介缓冲器230中下一个需要退却的子字串,64层的中介缓冲器230可以直接映射到预取存储器21的所有子字串中的64个子字串,因此只要发布时保证发布指针和退却指针的距离不超过64,预取存储器21和中介缓冲器230的发布指针和退却指针是一致的。
第三解决方案:
图6是依据本发明再一实施例所绘示的发布指针IP与退却指针RP的操作情境示意图。依照退却指针RP,以及依照退却指针RP所指的位置(即“退却位置”)所对应的匹配长度ML,控制电路240可以计算出新退却位置RP’。当新退却位置RP’未超越发布指针IP所指在待压缩字串中的位置(即“发布位置”)时,控制电路240可以检查新退却位置RP’与发布指针IP所指位置(即“发布位置”)之间的距离。在新退却位置RP’未超越“发布位置”的情况下,当新退却位置RP’与“发布位置”之间的距离大于一阈距离(threshold distance)时,发布指针IP与退却指针RP的跳转操作可以是通常操作(稍后详述)。所述阈距离可以依照设计需求来决定。
在新退却位置RP’未超越“发布位置”的情况下,当新退却位置RP’与“发布位置”之间的距离小于阈距离时,控制电路240可以实时地重置字串匹配处理流水线22,以避免不需进行匹配的子字串占用字串匹配处理流水线22的资源。除此之外,当新退却位置RP’与“发布位置”之间的距离小于阈距离时,控制电路240可以将发布指针IP由“发布位置”改为指向新退却位置RP’,例如图6所示发布指针IP’。
图7是依据本发明另一实施例说明一种加速压缩装置30的电路方块示意图。加速压缩装置30包含中介缓冲器(intermediary buffer)230、控制电路240、散列匹配器(hashmatcher)250、最长字串匹配器(longest string matcher)260、格式化器270以及预取缓冲器(look-ahead buffer)280。图7所示中介缓冲器230以及预取缓冲器280相当于图2所示预取存储器21,而图7所示散列匹配器250以及最长字串匹配器260相当于图2所示字串匹配处理流水线22。图2所示控制电路240以及格式化器270可以参照图7所示控制电路240以及格式化器270的相关说明。
在另一实施例中,加速压缩装置30还包括数据缓冲器(data buffer)210。依照设计需求,数据缓冲器210长度可为1024M字节(bytes)或是其他长度。数据缓冲器210用以存储原始字串(raw string,亦即待压缩字串)以及经压缩字串(compressed string)。值得注意的是,在其它实施例中,数据缓冲器210可以位于末级高速缓冲存储器(例如图1所示末级高速缓冲存储器110)中,亦即位于加速压缩装置30外部。
在另一实施例中,加速压缩装置20还包含提取单元220,其中经由提取单元220可以向数据缓冲器210发出预取请求(look-ahead request),以便从数据缓冲器210提取长度固定为Q(Q例如16字节)的待压缩字串。提取单元220可以将所述待压缩字串存储至预取缓冲器280中,作为送至字串匹配处理流水线22进行字串压缩的对象。其中更经由控制电路240控制在每个发布周期从预取缓冲器280并行发布(issue)P个实例(instance),其中,这P个实例每一个依序对应于以待压缩字串中的连续P个字符的每一个字符作为起始字符的一个子字串,其中Q和P为大于1的正整数,且Q大于P,在一实施例中,P可为4,且每个子子串包括3个字符,但本发明并不局限于此。
在另一实施例中,各个实例(子字串)一经发布便按序存储至中介缓冲器(intermediary buffer)230中。中介缓冲器230存储关联于每一个子字串的相关运算信息(例如散列、最长字串匹配和/或其他运算信息)。详细来说,中介缓冲器230划分出多段存储器空间,每段可用来存储一个实例(instance)的信息。每个实例包含数个字段,这些字段用以记录索引、对应子字串的起始字符、状态、匹配偏移量(matched offset)、匹配长度(matched length)和/或其他运算信息。
由于加速压缩装置30包含许多并行运算,使得相应于每一个实例的运算时间(或称时钟周期数目)无法预测。也就是说,相应于较后被发布的实例的运算结果可能早于相应于较前被发布实例的运算结果。中介缓冲器230可以让所有实例的计算结果的输出顺序相符于待压缩的原始字符的原始顺序,据以完成最终的最长字串匹配。预取缓冲器280和中介缓冲器230均包含发布指针IP及退却指针RP。预取缓冲器280的发布指针IP按照各个子字串在待压缩字串中的原始排列顺序依序地指向下一个被发布的实例,由于每个发布周期并行发布P个实例,因此在每个发布周期,发布指针IP顺序向后跳转P个字符。预取缓冲器280的退却指针RP按照各个子字串在待压缩字串中的原始排列顺序依序地指向下一个需要退却的实例,即退却指针RP能够控制各个实例的子字串按照在待压缩字串中的原始顺序退却,由于每个发布周期并行退却P个已经完成匹配操作的实例,因此在每个发布周期,退却指针顺序向后跳转P个字符。值得注意的是,中介缓冲器230的发布/退却指针与预取缓冲器280发布/退却指针可以是同步的,在一实施例中,预取缓冲器280的大小举例而言为512字节,最多存储512个字符,则其发布/退却指针长度为9位;中介缓冲器230举例而言包含64层表项(entry),最多可存储64个起始字符开始的实例,其发布/退却指针分别为预取缓冲器280发布/退却指针的低6位(bit)。
在初始时,提取单元220从数据缓冲器210提取多个原始字符(待压缩字串)。提取单元220从所述待压缩字串中提取多个子字串,并以实例的形式并行发布这些子字串,在一实施例中,这些子字串对应的实例一经发布便被依序写入中介缓冲器230中;在另一实施例中,这些子字串对应的实例在产生匹配结果后,才会依照其在待压缩字串中的原始顺序写入中介缓冲器230对应的空间。值得注意的是,前面所谓的“发布”是指:预取缓冲器280的发布指针指向预取缓冲器280中的某个字符意即“发布”以该字符为起始字符的子字串(实例)。
依照设计需求,控制电路240可以包括有限状态机(FSM,Finite-State Machine)和/或其他控制电路/元件。例如,在一些实施例中,本实施例所描述控制电路240的控制操作可被实现于可编程设计逻辑装置(PLD,Programmable Logic Device)、可编程逻辑控制器(PLC,Programmable Logic Controller)、现场可编程设计门阵列(FPGA,FieldProgrammable Gate Array)或特殊应用集成电路(ASIC,application-specificintegrated circuit)。
在一实施例中,控制电路240可为一个实例发出散列请求给散列匹配器250,以便取得相应于所述一个实例且长度为n的子字串是否可匹配散列表(hash table)中的一个散列键的信息。在一些实施例中,依照设计需求,n为3或以上。控制电路240另可针对一个实例发出数据请求(data request)给最长字串匹配器260,以便取得相应于所述一个实例的子字串以后可匹配到数据缓冲器210的滑动窗(字典)中的原始字串的长度。应注意的是,滑动窗中的原始字串位于预取缓冲器280中的待压缩的原始字串之前,即滑动窗中的原始字串是已经被压缩过的字串。
图8是依据本发明实施例所绘示的状态图。初始时,提取单元220从数据缓冲器210的原始字串提取固定长度的待压缩字串并存储至预取缓冲器280,其中待压缩字串包括Q个字符,在一实施例中,Q等于16,在一实施例中,在发布之后或者在匹配结果产生之后还将待压缩字串中的多个子字串所对应的实例依序存储至中介缓冲器230。举例来说,提取单元220从数据缓冲器210提取待压缩字串“abcdxyzefgafabc…”,并在发布之后或者在匹配结果产生之后依序存储其中的子字串所对应的实例至中介缓冲器230。表1显示多个实例的初始结果。初始时,每个实例的状态为空闲状态(idle state)S31,如表1所示。表1的状态字段所示“/”表示为空值(null value)。
表1:
索引 | 子字串 | 状态 | 匹配长度 | 匹配偏移量 |
0 | abc | / | ||
1 | bcd | / | ||
2 | cdx | / | ||
3 | dxy | / | ||
4 | xyz | / | ||
5 | yze | / | ||
6 | zef | / | ||
7 | efg | / | ||
8 | fga | / | ||
9 | gaf | / | ||
10 | afa | / | ||
11 | fab | / |
在一实施例中,控制电路240控制各个实例在字串匹配处理流水线22中进行匹配操作。控制电路240可由逻辑电路实现,其控制散列匹配器250及最长字串匹配器260执行下述图9至图12的字串匹配操作流程,但本发明并不局限于此。
图9是依据本发明一实施例所绘示的散列请求操作的流程示意图。在每一个时钟周期(发布周期),控制电路240取得发布指针IP所指向的实例(步骤S410),为此实例发出散列请求给散列匹配器250(步骤S430),更新此实例的状态为“HASH_ISSUED”以指出此实例进入散列请求状态S32(步骤S450),以及更新发布指针IP以指向下一个实例(步骤S470)。散列请求包含从此实例开始且长度为n的连续实例的字符。例如,参考表1,相应于实例0的散列请求包含子字串“abc”,相应于实例1的散列请求包含子字串“bcd”,依此类推。子字串“abc”及“bcd”是字串“abcdxyzefgaf”的子字串,字符“a”和“b”分别为子字串“abc”及“bcd”的起始字符。
图10是依据本发明一实施例所绘示的散列回复处理操作的流程示意图。当控制电路240从散列匹配器250接收到相应于一个实例的回复(步骤S510)后,控制电路240可以判断在此回复中是否包含匹配的信息(步骤S530)。在一实例中,当在此回复中包含“不匹配”的信息时(步骤S530中“否”的路径),控制电路240可以更新此实例的状态为“NM”以指出此实例进入不匹配状态S34(步骤S550)。从散列匹配器250接收到的回复中包含了先前请求的子字串,用以让控制电路240辨认此回复相应于哪个实例。当一个实例进入不匹配状态S34时,控制电路240便可于将来的时钟周期回收此实例的存储器空间给将来产生的实例使用。
当此回复中包含“匹配”的信息时(步骤S530中“是”的路径),控制电路240可以从此回复中取得匹配偏移量(步骤S571),以及发出相应于此实例的数据请求给最长字串匹配器260(步骤S573)。其中,所述数据请求包含上述匹配偏移量。在一实施例中,最长字串匹配器260在步骤S573中可以搜寻预取缓冲器280中相应于此实例的子字串开始的字串以及数据缓冲器210的滑动窗(字典)中从所述匹配偏移量开始的字串两者之间的最大匹配长度。控制电路240可以更新此实例的匹配长度为n(步骤S575),以及更新此实例的状态为“DATA_ISSUED”以指出此实例进入数据请求状态S33(步骤S577)。值得注意的是,在其它实施例中,控制电路240从回复中取得匹配偏移量(步骤S571)后可以直接发出相应于此实例的数据请求给最长字串匹配器260,而并不会更新中介缓冲器230中此实例的内容(亦即不会执行步骤S575和步骤S577)。
举例来说,表2显示多个实例的被更新的结果。经过7个时钟周期(发布周期)后,控制电路240依据散列匹配器250及最长字串匹配器260的回复结果更新中介缓冲器230中各表项的内容为表2。
表2:
表2显示相应于实例0至实例6的散列请求已经发出给散列匹配器250。控制电路240已经从散列匹配器250接收到相应于实例0、实例2、实例3、实例5与实例6的回复,其中包含“没有匹配”的信息,即均为“NM”(No Match)。亦即,实例0、实例2、实例3、实例5与实例6所对应的子字串“abc”、“cdx”、“dxy”、“yze”、“zef”均未在散列匹配器250中匹配,也就是均未在数据缓冲器210的滑动窗(字典)中的原始字串出现过。控制电路240已经从散列匹配器250接收到相应于实例4的回复(其中包含“匹配”的信息),以及已经发出数据请求给最长字串匹配器260(但尚未接收到任何回复)。实例4所对应的子字串“xyz”被散列匹配器250判定为匹配,亦即子字串“xyz”在数据缓冲器210的滑动窗中的原始字串出现过。控制电路240从散列匹配器250的回复中取得实例4所对应的子字串“xyz”在滑动窗中的匹配偏移量。依据散列匹配器250传来的回复,控制电路240可以发出包含所述匹配偏移量的数据请求给最长字串匹配器260,以便搜寻预取缓冲器280中相应于实例4的字串“xyz”开始的字串及数据缓冲器210的滑动窗中从偏移量1000开始的字串两者之间的最大匹配长度。此外,控制电路240尚未从散列匹配器250接收到相应于实例1的任何回复。
图11是依据本发明一实施例所绘示的数据回复处理操作的流程示意图。当控制电路240从最长字串匹配器260接收到相应于一个实例的回复(步骤S610)后,控制电路240可以从回复中取得最长字串匹配器260计算出的长度L(步骤S630),以及判断长度L是否小于最大匹配长度max_match(步骤S650),并根据该判断结果去更新该实例的状态、匹配长度及匹配偏移量。具体而言,在一实施例中,当长度L小于最大匹配长度max_match时(步骤S650中“是”的路径),控制电路240可以更新此实例的状态为“PM”以指出此实例进入部分匹配状态S37(步骤S671),以及更新此实例的匹配长度Len=Len+L(步骤S673)。当一个实例进入部分匹配状态S37时,控制电路240便可于将来的时钟周期回收此实例的存储器空间给将来产生的实例使用;当长度L不小于(通常为等于)最大匹配长度max_match时(步骤S650中“否”的路径),控制电路240可以更新此实例的状态为“FM”以指出此实例进入完全匹配状态S36(步骤S691),更新此实例的匹配长度为Len=Len+max_match(步骤S693),以及发出相应于此实例的另一数据请求给最长字串匹配器260以继续后续的字串比对(步骤S695)。在一实例中,最大匹配长度max_match为16字节,而在LZ77系列算法中定义的最大算法匹配长度max_match_length为258字节,在步骤S673和S693之后都会判断此实例的匹配长度Len是否达到该最大算法匹配长度max_match_length,如果是,则图11的流程结束,即是说即使是完全匹配状态,也并不会一直比较下去,而是到达最大算法匹配长度max_match_length后,停止比较,例如每次比较16字节,但如果达到匹配长度258字节之后,就停止比较。值得注意的是,在图10如果不执行更新中介缓冲器230中实例的内容的步骤S575,则图11中更新匹配长度时Len还要加上实例所对应的子字串的长度n(例如n=3)。
在一个时钟周期中,控制电路240除了执行散列请求操作,更执行退却处理操作,以按照发布过的所有实例的子字串在待压缩字串中的原始顺序,并依据每个实例的状态、匹配长度及匹配偏移量,而输出匹配结果给格式化器270,使得格式化器270据以压缩所预取的待压缩字串。图12是依据本发明一实施例所绘示的退却处理操作的流程示意图。在每一个时钟周期,控制电路240取得退却指针RP指向的实例的状态(步骤S710),以及判断中介缓冲器230中此实例的状态是否为不匹配状态(步骤S731)。当此实例的状态是不匹配状态时(步骤S731中“是”的路径),控制电路240输出此实例的字符本身给格式化器270(步骤S733),使得格式化器270可据以压缩预取缓冲器280中的待压缩字串。
当此实例的状态不是“不匹配状态”时(步骤S731中“否”的路径),控制电路240可以判断中介缓冲器230中此实例的状态是否为部分匹配状态(步骤S751)。当此实例的状态是部分匹配状态时(步骤S751中“是”的路径),控制电路240可以输出此实例的匹配偏移量及匹配长度给格式化器270(步骤S753),使得格式化器270可据以压缩预取缓冲器280中的待压缩字串。
在步骤S733或步骤S753中,格式化器270可使用LZ4、LZO(Lempel-Ziv-Oberhumer)、DEFLATE等已知算法来压缩所述待压缩字串。在完成步骤S733或步骤S753后,控制电路240在步骤S770中可以更新此实例的状态为空值,并且更新退却指针RP以指向下一个实例(用以退却此实例,使得此存储器空间可提供给将来推入的实例)。
当此实例的状态为匹配但不是部分匹配状态时(步骤S751中“否”的路径),即为完全匹配时,则如图11的步骤S691所述,除非匹配长度Len达到最大算法匹配长度max_match_length,控制电路240会发出相应于此实例的另一数据请求给最长字串匹配器260用以继续后续的字串比对,而并不会对所述实例执行退却操作。在图12中步骤S751中“否”的路径会返回步骤S710继续等待所述实例状态的变化。概括地说,控制电路240在图12的执行退却处理操作时,是按照中介缓冲器230中各个实例关联的子字串在待压缩字串中的原始顺序(例如退却指针RP依照的顺序),并依据每一实例在中介缓冲器230中对应状态、匹配长度及匹配偏移量(如后续表3至表5所示)输出结果给格式化器270,使得格式化器270据以压缩待压缩的原始字串。后面会配合表3至表5详述。
接续表2的范例。假设在时钟周期T7,发布指针IP指向实例7,退却指针RP指向实例0,最大匹配长度max_match预设为258字节(byte),且控制电路240从最长字串匹配器260接收到相应于实例4的回复。在此时钟周期T7,请参考图9,控制电路240取得发布指针IP指向的实例7(步骤S410),控制电路240为实例7发出包含子字串“efg”的散列请求给散列匹配器250(步骤S430),控制电路240更新实例7的状态为“HASH_ISSUED”以指出实例7进入散列请求状态S32(步骤S450),以及控制电路240更新发布指针IP以指向实例8(步骤S470)。在此时钟周期T7,请参考图12,控制电路240取得退却指针RP指向的实例0的状态(步骤S710)。因为实例0的状态为不匹配状态,控制电路240输出实例0的字符“a”给格式化器270(步骤S733),使得格式化器270可保留字符“a”不做压缩动作。控制电路240让数据缓冲器210中的滑动窗向前移动一个字符,即让数据缓冲器210中的字符“a”滑动进入其滑动窗中成为新字典的一部分。控制电路240更新实例0的状态为空值“/”,并更新退却指针RP以指向实例1(步骤S770)。请参考图11,在此时钟周期T7,控制电路240从相应于实例4的回复中取得最长字串匹配器260计算出的长度L=2(步骤S630)。因为L<max_match,控制电路240更新实例4的状态为“PM”以指出实例4进入部分匹配状态S37(步骤S671),以及控制电路240更新实例4的匹配长度Len=3+2=5(步骤S673)。中介缓冲器230的实例状态更新为表3。
表3:
索引 | 子字串 | 状态 | 匹配长度 | 匹配偏移量 |
0 | / | |||
1 | bcd | HASH_ISSUED | ||
2 | cdx | NM | ||
3 | dxy | NM | ||
4 | xyz | PM | 5 | 1000 |
5 | yze | NM | ||
6 | zef | NM | ||
7 | efg | HASH_ISSUED | ||
8 | fga | / | ||
9 | gaf | / | ||
10 | afa | / | ||
11 | fab | / |
接续表3的范例。假设在时钟周期T8,控制电路240从散列匹配器250接收到相应于实例1的回复。在此时钟周期T8,请参考图9,控制电路240取得发布指针IP指向的实例8(步骤S410),为实例8发出包含子字串“fga”的散列请求给散列匹配器250(步骤S430),更新实例8的状态为“HASH_ISSUED”以指出实例8进入散列请求状态S32(步骤S450),以及更新发布指针IP以指向实例9(步骤S470)。请参考图12,在此时钟周期T8,控制电路240取得退却指针RP指向的实例1的状态(步骤S710)。因为实例1的状态为散列请求状态,控制电路240不做任何处理。请参考图10,在此时钟周期T8,控制电路240从散列匹配器250接收到相应于实例1的回复(步骤S510)。因为回复中包含“不匹配”的信息,控制电路240更新实例1的状态为“NM”以指出实例1进入不匹配状态S34(步骤S550)。中介缓冲器230的实例状态更新为表4。
表4:
索引 | 子字串 | 状态 | 匹配长度 | 匹配偏移量 |
0 | abc | / | ||
1 | bcd | NM | ||
2 | cdx | NM | ||
3 | dxy | NM | ||
4 | xyz | PM | 5 | 1000 |
5 | yze | NM | ||
6 | zef | NM | ||
7 | efg | HASH_ISSUED | ||
8 | fga | HASH_ISSUED | ||
9 | gaf | / | ||
10 | afa | / | ||
11 | fab | / |
接续表4的范例。假设在时钟周期T9,控制电路240从散列匹配器250接收到相应于实例7的回复。在此时钟周期T9,请参考图9,控制电路240取得发布指针IP指向的实例9(步骤S410),为实例9发出包含子字串“gaf”的散列请求给散列匹配器250(步骤S430),更新实例9的状态为“HASH_ISSUED”以指出实例9进入散列请求状态S32(步骤S450),以及更新发布指针IP以指向实例10(步骤S470)。请参考图12,在此时钟周期T9,控制电路240取得退却指针RP指向的实例1的状态(步骤S710)。因为实例1的状态为不匹配状态,控制电路240输出实例1的字符“b”给格式化器270,使得格式化器270可保留字符“b”不做压缩动作(步骤S733)。控制电路240让数据缓冲器210的中滑动窗向前移动一个字符,即让数据缓冲器210中的字符“b”滑动进入其滑动窗中成为新字典的一部分。控制电路240更新实例1的状态为空值“/”,并更新退却指针RP以指向实例2(步骤S770)。在一实施例中,在同一个时钟周期内,并行发布和退却4个实例,因此每个时钟周期发布指针IP和退却指针RP跳转4个位置。请参考图10,在此时钟周期T9,控制电路240从散列匹配器250接收到相应于实例7的回复(步骤S510)。因为回复中包含“不匹配”的信息,控制电路240更新实例7的状态为“NM”以指出实例7进入不匹配状态S34(步骤S550)。中介缓冲器230的实例状态更新为表5。
表5:
索引 | 子字串 | 状态 | 匹配长度 | 匹配偏移量 |
0 | abc | / | ||
1 | bcd | / | ||
2 | cdx | NM | ||
3 | dxy | NM | ||
4 | xyz | PM | 5 | 1000 |
5 | yze | NM | ||
6 | zef | NM | ||
7 | efg | NM | ||
8 | fga | HASH_ISSUED | ||
9 | gaf | HASH_ISSUED | ||
10 | afa | / | ||
11 | fab | / |
请参考图12。经过一段时间,例如在时钟周期T12,控制电路240取得退却指针RP指向的实例4的状态(步骤S710)。值得注意的是,在此之前,预取缓冲器280中的待压缩字串中的字符“c”和“d”均为不匹配,因此字符“c”和“d”均被保留不做压缩动作,并且数据缓冲器210中的字符“c”和“d”也已经滑动进入其滑动窗中成为新字典的一部分。在时钟周期T12,因为实例4的状态为部分匹配状态,控制电路240输出实例4的匹配偏移量(例如1000)及匹配长度(例如5)给格式化器270,使得格式化器270可据以压缩预取缓冲器280中的待压缩的原始字串(步骤S753)。因为实例4的状态为部分匹配状态且匹配长度为5,因此预取缓冲器280中的字符“xyzef”被取代为匹配对(1000,5),并且数据缓冲器210的中滑动窗向前移动5个字符(亦即让数据缓冲器210中的字符“xyzef”滑动进入其滑动窗中成为新字典的一部分)。
应注意的是,如以上范例所示,虽然控制电路240依实例的先后顺序发出相应的散列请求来启动压缩操作,但因为散列匹配器250及最长字串匹配器260的运算时间无法预期,使得每个实例无法依原来的顺序进入不匹配状态S34或部分匹配状态S37。尽管每个实例无法依原来的顺序进入不匹配状态S34或部分匹配状态S37,通过以上所述的实施例,控制电路240还是可根据退却指针RP依各实例对应的子字串原来在预取缓冲器280中的待压缩字串中的原始顺序输出相应于每个实例的散列匹配器250及最长字串匹配器260的运算结果给格式化器270。
图13是依据本发明一实施例说明图7所示的字串匹配处理流水线290中的散列匹配器250的电路方块示意图。为加速散列匹配,散列匹配器250可包含多个可平行处理的匹配路径,每一个路径包含先进先出队列、匹配器及存储器库(memory bank)。例如,第一匹配路径包含先进先出队列850_1、匹配器870_1及存储器库890_1,第二匹配路径包含先进先出队列850_2、匹配器870_2及存储器库890_2,第三匹配路径包含先进先出队列850_3、匹配器870_3及存储器库890_3,而第四匹配路径包含先进先出队列850_4、匹配器870_4及存储器库890_4。散列函数(hash functions)810_1、810_2、810_3、810_4中的任何一个将控制电路240传来的一个实例对应的子字串映射成散列索引(hash index),并且依据该散列索引而驱动选择器830以连接至这些匹配路径中的一个对应匹配路径,以便将此子字串传送至此对应匹配路径,值得注意的是,散列函数810_1、810_2、810_3、810_4执行相同的散列运算。当此对应匹配路径判定散列表(hash table)不包含此子字串时,此对应匹配路径传送“不匹配”的信息给控制电路240。散列表包含此子字串,表示所述子字串存在于数据缓冲器210中的滑动窗内,例如散列表中包含前述实例4对应的子字串“xyz”,即说明子字串“xyz”存在于数据缓冲器210中的滑动窗中内。当此对应匹配路径判定散列表包含此子字串时,此对应匹配路径传送“匹配”的信息及散列表中相应于此子字串的匹配偏移量给控制电路240。
虽然本发明实施例使用四套的匹配路径说明,本领域技术人员可依据设计需求于散列匹配器250中配置较多或较少的匹配路径,本发明并不因此受限。散列表按照散列索引(即散列表地址)的高两位划分为四部分,分别存储于四个存储器库890_1至890_4。存储器库890_1至890_4可以用高速缓冲存储器(cache)存储器实现。散列表包含N笔条目(entries)。存储器库890_1存储第0笔至第(N/4)-1笔条目,存储器库890_2存储第N/4笔至第(N/2)-1笔条目,存储器库890_3存储第N/2笔至第(3N/4)-1笔条目,以及存储器库890_4存储第(3N/4)笔至第(N-1)笔条目,亦即散列表按照散列表地址的高两位来分布。在其它实施中,散列表也可以按照散列表地址的低两位或者散列表地址的其他位来分布。在本实施例中,每笔条目可包含多个(例如三个)散列键(hash keys)的相关信息,而这三个散列键拥有相同的散列索引而形成散列链结(hash chain)。举例来说,n为3且使用16字节存储每笔条目的数据,数据结构如表6所示。
表6:
地址 | 名称 | 描述 |
Byte[0] | Tag | 标签 |
Byte[1:3] | Hash_Key_1 | 第一散列键 |
Byte[4:5] | Hash_Offset_1 | 第一散列偏移量 |
Byte[6:8] | Hash_Key_2 | 第二散列键 |
Byte[9:10] | Hash_Offset_2 | 第二散列偏移量 |
Byte[11:13] | Hash_Key_3 | 第三散列键 |
Byte[14:15] | Hash_Offset_3 | 第三散列偏移量 |
每笔条目的第0字节存储标签“Tag”,使用固定位置的3个位分别表示此条目中的三个散列键是否有效。例如,此3个位“100”代表此笔条目中的第一散列键有效而第二及第三散列键无效,此3个位“110”代表此笔条目中的第一及第二散列键有效而第三散列键无效,其余依此类推。每笔条目的第1至第3字节存储关联于一个散列索引的第一散列键“Hash_Key_1”,表示滑动窗的原始字串中包含第一散列键“Hash_Key_1”对应的子字串。每笔条目的第4至第5字节存储关联于第一散列键的第一散列偏移量“Hash_Offset_1”,其代表滑动窗的原始字串中所包含的第一散列键对应的子字串的偏移量。每笔条目的第6至第8字节存储关联于相同散列索引的第二散列键“Hash_Key_2”,表示滑动窗的原始字串中包含第二散列键“Hash_Key_2”对应的子字串。每笔条目的第9至第10字节存储关联于第二散列键的第二散列偏移量“Hash_Offset_2”,其代表滑动窗的原始字串中所包含的第二散列键对应的子字串的偏移量。每笔条目的第11至第13字节存储关联于相同散列索引的第三散列键“Hash_Key_3”,表示滑动窗的原始字串中包含第三散列键“Hash_Key_3”对应的子字串。每笔条目的第14至第15字节存储关联于第三散列键的第三散列偏移量“Hash_Offset_3”,其代表滑动窗的原始字串中所包含的第三散列键对应的子字串的偏移量。本领域技术人员可依据设计需求改变每笔条目的内容,用以存储更多或更少的散列键及关联的散列偏移量,本发明并不因此受限。
为了加速散列匹配,散列匹配器250可包含四个散列函数810_1至810_4。散列函数810_1至810_4执行相同的算法,用以将任意的子字串映射成固定长度的散列索引(hashindex)。散列索引的长度少于子字串的长度。控制电路240可以用四发布(4-issue)的方式在同一时钟周期(发布周期)以一对一方式同时输出四个散列请求分别给散列函数810_1至810_4,即在每个发布周期,预取缓冲器280的发布指针顺序向后跳转四个字符,控制电路240依据发布指针从预取缓冲器280并行发布四个字符为起始字符的子字串(实例)。散列函数810_1至810_4之一依据映射出的散列索引驱动选择器830连接自己至先进先出队列850_1至850_4中的一个,以便将散列请求推入经连接的先进先出队列。例如,当散列函数810_1将子字串“abc”映射/转换为散列索引“0”时,散列函数810_1可以驱动选择器830,以便将散列函数810_1连接至先进先出队列850_1,使得散列函数810_1可以将散列请求推入先进先出队列850_1。在此须注意的是,经推入的散列请求包含控制电路240产生的字串及相应散列函数产生的散列索引。
散列匹配器250可包含四个平行处理的匹配器(matchers)870_1至870_4。匹配器870_1连接于先进先出队列850_1及存储器库890_1之间。匹配器870_2连接于先进先出队列850_2及存储器库890_2之间。匹配器870_3连接于先进先出队列850_3及存储器库890_3之间。匹配器870_4连接于先进先出队列850_4及存储器库890_4之间。匹配器870_1至870_4中的任何一个从其所连接的先进先出队列取出一个最早进入的散列请求,从其连接的存储器库找寻符合散列请求中的散列索引的条目,并且藉检查找寻到的条目的标签判断是否存在有效的散列键。当不存在有效的散列键时,匹配器判定找寻不到符合散列请求中的散列索引的条目,并且回复控制电路240关于散列请求中的字串“不匹配”的信息。当存在有效的散列键时,匹配器更判断是否存在任何有效的散列键与散列请求中的字串相同。当所有有效的散列键与散列请求中的字串不同时,匹配器回复控制电路240关于散列请求中的字串“不匹配”的信息。当存在一个有效的散列键与散列请求中的字串相同时,此匹配器回复控制电路240关于散列请求中的字串“已匹配”的信息以及此散列键关联的散列偏移量。
图14是依据本发明一实施例说明图13所示匹配器870_1的电路方块示意图。虽然图14所示实施例以匹配器870_1举例说明,本领域技术人员可依据图14的相关说明而类推出图13所示匹配器870_2至870_4的实施细节。在图14所示实施例中,匹配器870_1包含比较器910_1、比较器910_2、比较器910_3以及仲裁器930。比较器910_1从先进先出队列850_1取得散列请求中的字串以及从存储器库890_1中取得相应条目的第一散列键及第一散列偏移量。比较器910_1判断所述字串与所述第一散列键是否相同。当所述字串与所述第一散列键相同时,比较器910_1输出所述第一散列偏移量给仲裁器930。比较器910_2从先进先出队列850_1取得散列请求中的字串以及从存储器库890_1中取得相应条目的第二散列键及第二散列偏移量。比较器910_2判断所述字串与所述第二散列键是否相同。当所述字串与所述第二散列键相同时,比较器910_2输出所述第二散列偏移量给仲裁器930。比较器910_3从先进先出队列850_1取得散列请求中的字串以及从存储器库890_1中取得相应条目的第三散列键及第三散列偏移量。比较器910_3判断所述字串与所述第三散列键是否相同。当所述字串与所述第三散列键相同时,比较器910_3输出所述第三散列偏移量给仲裁器930。
当仲裁器930从比较器910_1至910_3没有接收到任何散列偏移量时,仲裁器930回复控制电路240关于散列请求中的字串“不匹配”的信息。当仲裁器930从比较器910_1至910_3接收到一个散列偏移量时,仲裁器930回复控制电路240关于散列请求中的字串“已匹配”的信息以及接收到的散列偏移量。当仲裁器930从比较器910_1至910_3接收到二个以上散列偏移量时,仲裁器930回复控制电路240关于散列请求中的字串“已匹配”的信息及接收到的散列偏移量中的最小值。
举例而言,散列请求中的子字串“abc”,其通过散列函数810_1映射(或计算)出散列索引“0”时,对应的存储器库890_1中相应散列索引“0”的条目包括3个散列键及其散列偏移量:第一散列键“abc”(散列偏移量为50),第二散列键“xyz”(散列偏移量为100)以及第三散列键“abc”(散列偏移量为200)。值得注意的是,虽然散列键“abc”和“xyz”的键值不同,但有可能经过散列函数810_1映射(或计算)出的散列索引却相同,这跟散列函数的运算规则有关。例如,这里的散列键“abc”和“xyz”的散列索引均为“0”。此外,2个相同的散列键“abc”表示在滑动窗的原始字串中的不同偏移位置出现了2次子字串“abc”,但其散列偏移量不同。因为第一散列键“abc”和第三散列键“abc”均与散列请求中的字串“abc”相同,因此比较器910_1和比较器910_3会分别输出第一散列偏移量(50)和第三散列偏移量(200)给仲裁器930。此时,仲裁器930会将字串“abc”已匹配的信息及较小的散列偏移量50回复控制电路240。值得注意的是,在其它实施方式中,当存储器库中的每个散列表条目有前述多个匹配(即多个散列键均为“abc”)时,仲裁器930会回复控制电路240关于散列请求中的字串已匹配的信息,并且将所有匹配的散列偏移量均推送给控制电路240。
本实施例中,在每个发布周期,预取缓冲器280的发布指针顺序向后跳转P个字符,控制电路240依据发布指针从预取缓冲器280并行发布P个字符为起始字符的子字串(实例),进一步地控制电路240可以在同一时钟周期同时输出R个散列请求给多个散列函数并行地进行散列匹配。藉由本实施例的中介缓冲器记录各实例的状态、匹配长度及匹配偏移量,使得乱序执行散列匹配和最长匹配后的实例能够按照待压缩字串中的原始顺序退却以进行压缩。在待压缩字串中存在大量重复字符时,P和R可不相等,本发明在此不作具体讨论。
图15是依据本发明一实施例说明一种散列匹配方法的流程示意图。请参照图13与图15。散列函数810_1至810_4并行接收从控制电路240传来的多个子字串(步骤S1010)。接着,散列函数810_1将接收的子字串映射成散列索引,以及依据散列索引驱动选择器830以将自己连接至多个匹配路径中的一个(步骤S1031)。散列函数810_2将接收的子字串映射成散列索引,以及依据散列索引驱动选择器830以将自己连接至多个匹配路径中的一个(步骤S1033)。散列函数810_3将接收的子字串映射成散列索引,以及依据散列索引驱动选择器830以将自己连接至多个匹配路径中的一个(步骤S1035)。散列函数810_4将接收的子字串映射成散列索引,以及依据散列索引驱动选择器830以将自己连接至多个匹配路径中的一个(步骤S1037)。在此须注意的是,在步骤S1031、S1033、S1035、S1037中,散列函数810_1至810_4中的至少二个可连接到相同的匹配路径,并且将包含这些子字串的散列请求推入此匹配路径中的先进先出队列。
接着,当散列函数810_1连接的匹配路径中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函数810_1接收的子字串(步骤S1051)时,传送“不匹配”的信息给控制电路240。当散列函数810_1连接的匹配路径中的匹配器判定散列表包含散列函数810_1接收的子字串(步骤S1051)时,传送“匹配”的信息及散列表中相应于子字串的匹配偏移量给控制电路240(步骤S1071)。当散列函数810_2连接的匹配路径中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函数810_2接收的子字串(步骤S1053)时,传送“不匹配”的信息给控制电路240。当散列函数810_2连接的匹配路径中的匹配器判定散列表包含散列函数810_2接收的子字串(步骤S1053)时,传送“匹配”的信息及散列表中相应于子字串的匹配偏移量给控制电路240(步骤S1073)。当散列函数810_3连接的匹配路径中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函数810_3接收的子字串(步骤S1055)时,传送“不匹配”的信息给控制电路240。当散列函数810_3连接的匹配路径中的匹配器判定散列表包含散列函数810_3接收的子字串(步骤S1055)时,传送“匹配”的信息及散列表中相应于子字串的匹配偏移量给控制电路240(步骤S1075)。当散列函数810_4连接的匹配路径中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函数810_4接收的子字串(步骤S1057)时,传送“不匹配”的信息给控制电路240。当散列函数810_4连接的匹配路径中的匹配器判定散列表包含散列函数810_4接收的子字串(步骤S1057)时,传送“匹配”的信息及散列表中相应于子字串的匹配偏移量给控制电路240(步骤S1077)。
在此须注意的是,当一个匹配路径的先进先出队列包含二个以上的散列请求时,此匹配路径的匹配器依据散列请求到达的先后循序执行如上所述的判断。例如,当一个匹配路径的先进先出队列包含散列函数810_1及810_2的散列请求且散列函数810_1的散列请求较早时,步骤S1031、S1051及S1071的执行早于步骤S1033、S1053及S1073的执行。
依照不同的设计需求,所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280的方块的实现方式可以是硬件(hardware)、固件(firmware)、软件(software,即程序)或是前述三者中的多个的组合形式。
以硬件形式而言,所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280的方块可以实现于集成电路(integrated circuit)上的逻辑电路。所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280的相关功能可以利用硬件描述语言(hardware description languages,例如Verilog HDL或VHDL)或其他合适的编程语言来实现为硬件。举例来说,所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280的相关功能可以被实现于一或多个控制器、微控制器、微处理器、特殊应用集成电路(Application-specific integrated circuit,ASIC)、数字信号处理器(digital signalprocessor,DSP)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)和/或其他处理单元中的各种逻辑区块、模块和电路。
以软件形式和/或固件形式而言,所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280的相关功能可以被实现为编程码(programming codes)。例如,利用一般的编程语言(programming languages,例如C或C++)或其他合适的编程语言来实现所述提取单元220、中介缓冲器230、控制电路240、字串匹配处理流水线22(例如包括散列匹配器250及最长字串匹配器260)、格式化器270和/或是预取缓冲器280。所述编程码可以被记录/存放在记录介质中,所述记录介质中例如包括只读存储器(Read Only Memory,ROM)、存储装置和/或随机存取存储器(Random Access Memory,RAM)。计算机、中央处理器(Central Processing Unit,CPU)、控制器、微控制器或微处理器可以从所述记录介质中读取并执行所述编程码,从而达成相关功能。作为所述记录介质,可使用“非临时的计算机可读介质(non-transitory computer readable medium)”,例如可使用带(tape)、碟(disk)、卡(card)、半导体存储器、可编程设计的逻辑电路等。而且,所述程序也可经由任意传输介质(通信网络或广播电波等)而提供给所述计算机(或CPU)。所述通信网络例如是互联网(Internet)、有线通信(wired communication)、无线通信(wireless communication)或其它通信介质。
综上所述,本发明诸实施例所述加速压缩装置可以在进行退却时检查匹配长度ML与发布指针IP。当相关于匹配长度ML的新退却位置RP’超越发布指针IP所指向的发布位置时,控制电路240可以重置所述字串匹配处理流水线22,以尽快释放字串匹配处理流水线22的计算资源和相关存储器空间。亦即,本发明诸实施例所述加速压缩装置可以减少冗余计算。
虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附权利要求书界定范围为准。
Claims (18)
1.一种加速压缩方法,实施于加速压缩装置中,该加速压缩装置包括预取存储器及字串匹配处理流水线,所述加速压缩方法包括:
依据发布指针从所述预取存储器所存储的待压缩字串发布至少一子字串;
将所述至少一子字串发送至所述字串匹配处理流水线进行匹配操作,以获得所述至少一子字串的至少一匹配长度及至少一匹配偏移量;
依照退却指针以及所述退却指针所指向的在所述待压缩字串中的退却位置对应的所述匹配长度,决定新退却位置;以及
当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的发布位置时,重置所述字串匹配处理流水线。
2.如权利要求1所述的加速压缩方法,其中当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的所述发布位置时,还包括:
将所述发布指针由所述发布位置改为指向所述新退却位置。
3.如权利要求1所述的加速压缩方法,其中还包括:
按照所述退却指针,并依据所述退却位置所对应的所述匹配长度及所述匹配偏移量,输出结果给格式化器,使得所述格式化器据以压缩所述待压缩字串;以及
在输出所述结果给所述格式化器后,将所述退却指针由所述退却位置改为指向所述新退却位置。
4.如权利要求1所述的加速压缩方法,其中在所述待压缩字串中的每一字符对应于标志,而所述加速压缩方法还包括:
当所述新退却位置未超越所述发布位置时,设置在所述新退却位置与所述退却位置之间的每一个字符所对应的所述标志;以及
当所述字串匹配处理流水线所处理的所述子字串的一起始字符所对应的所述标志已被设置时,停止所述字串匹配处理流水线对所述子字串的处理。
5.如权利要求1所述的加速压缩方法,还包括:
当所述新退却位置未超越所述发布位置时,记录所述新退却位置;以及
当所述字串匹配处理流水线所处理的所述子字串的起始位置没有超过所述新退却位置时,停止所述字串匹配处理流水线对所述子字串的处理。
6.如权利要求5所述的加速压缩方法,还包括:
当所述字串匹配处理流水线所处理的所述子字串的所述起始位置超过所述新退却位置时,不停止所述字串匹配处理流水线对所述子字串的处理。
7.如权利要求5所述的加速压缩方法,其中还包括:
存储发布过的所有子字串于中介缓冲器,其中所述字串匹配处理流水线所处理的所述子字串的所述起始位置存储于所述中介缓冲器中所述子字串对应的表项中。
8.如权利要求1所述的加速压缩方法,还包括:
当所述新退却位置未超越所述发布位置时,检查所述新退却位置与所述发布位置之间的距离;以及
当所述距离小于阈距离时,重置所述字串匹配处理流水线,以及将所述发布指针由所述发布位置改为指向所述新退却位置。
9.如权利要求1所述的加速压缩方法,其中还包括:
存储发布过的所有子字串于中介缓冲器,其中所述退却指针与所述发布指针在所述中介缓冲器中所指向的位置之间的字符所对应的所述子字串为正在所述字串匹配处理流水线中处理的所述子字串。
10.一种加速压缩装置,包括:
字串匹配处理流水线;
预取存储器;以及
控制电路,耦接于所述字串匹配处理流水线与所述预取存储器,其中,
所述控制电路依据发布指针从所述预取存储器所存储的待压缩字串发布至少一子字串;
所述控制电路将所述至少一子字串发送至所述字串匹配处理流水线进行匹配操作,以获得所述至少一子字串的至少一匹配长度及至少一匹配偏移量;
依照退却指针以及所述退却指针所指向的在所述待压缩字串中的退却位置所对应的所述匹配长度,所述控制电路决定新退却位置;以及
当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的发布位置时,所述控制电路重置所述字串匹配处理流水线。
11.如权利要求10所述的加速压缩装置,其中当所述新退却位置超越所述发布指针所指向的在所述待压缩字串中的所述发布位置时,所述控制电路还将所述发布指针由所述发布位置改为指向所述新退却位置。
12.如权利要求10所述的加速压缩装置,其中按照所述退却指针,并依据所述退却位置所对应的所述匹配长度及所述匹配偏移量,所述控制电路输出结果给格式化器,使得所述格式化器据以压缩所述待压缩字串;以及
在所述控制电路输出所述结果给所述格式化器后,所述控制电路将所述退却指针由所述退却位置改为指向所述新退却位置。
13.如权利要求10所述的加速压缩装置,其中,
在所述待压缩字串中的每一字符对应于标志;
当所述新退却位置未超越所述发布位置时,所述控制电路设置在所述新退却位置与所述退却位置之间的每一个字符所对应的所述标志;以及
当所述字串匹配处理流水线所处理的所述子字串所对应的一起始字符所对应的所述标志已被设置时,所述字串匹配处理流水线停止对所述子字串的处理。
14.如权利要求10所述的加速压缩装置,其中,
当所述新退却位置未超越所述发布指针所指在所述待压缩字串中的位置时,所述控制电路记录所述新退却位置;以及
当所述字串匹配处理流水线所处理的所述子字串的一起始位置没有超过所述新退却位置时,所述字串匹配处理流水线停止对所述子字串的处理。
15.如权利要求14所述的加速压缩装置,其中,
当所述字串匹配处理流水线所处理的所述子字串的所述起始位置超过所述新退却位置时,所述控制电路不停止所述字串匹配处理流水线对所述子字串的处理。
16.如权利要求14所述的加速压缩装置,还包括:
中介缓冲器,用以存储发布过的所有子字串,其中所述字串匹配处理流水线所处理的所述子字串的所述起始位置存储于所述中介缓冲器中所述子字串对应的表项中。
17.如权利要求10所述的加速压缩装置,其中,
当所述新退却位置未超越所述发布位置时,所述控制电路检查所述新退却位置与所述发布位置之间的距离;以及
当所述距离小于阈距离时,所述控制电路重置所述字串匹配处理流水线,以及将所述发布指针由所述发布位置改为指向所述新退却位置。
18.如权利要求10所述的加速压缩装置,还包括:
中介缓冲器,用以存储发布过的所有子字串,其中所述退却指针与所述发布指针在所述中介缓冲器中所指向的位置之间的字符所对应的所述子字串为正在所述字串匹配处理流水线中处理的所述子字串。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091990.7A CN109802686B (zh) | 2019-01-30 | 2019-01-30 | 加速压缩方法以及加速压缩装置 |
US16/431,694 US10686467B1 (en) | 2019-01-30 | 2019-06-04 | Accelerated compression method and accelerated compression apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091990.7A CN109802686B (zh) | 2019-01-30 | 2019-01-30 | 加速压缩方法以及加速压缩装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109802686A true CN109802686A (zh) | 2019-05-24 |
CN109802686B CN109802686B (zh) | 2022-12-06 |
Family
ID=66559344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910091990.7A Active CN109802686B (zh) | 2019-01-30 | 2019-01-30 | 加速压缩方法以及加速压缩装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10686467B1 (zh) |
CN (1) | CN109802686B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117424606B (zh) * | 2023-12-18 | 2024-04-16 | 成都行芯科技有限公司 | 波形数据压缩方法、装置、电子装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5532693A (en) * | 1994-06-13 | 1996-07-02 | Advanced Hardware Architectures | Adaptive data compression system with systolic string matching logic |
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN105183557A (zh) * | 2015-08-26 | 2015-12-23 | 东南大学 | 一种基于硬件的可配置的数据压缩系统 |
CN107180018A (zh) * | 2017-05-17 | 2017-09-19 | 上海兆芯集成电路有限公司 | 基于散列的加速压缩方法以及使用此方法的装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10070145B2 (en) * | 2014-02-07 | 2018-09-04 | Mediatek Singapore Pte. Ltd. | Method of coding based on string matching for video compression |
CN105279171B (zh) * | 2014-06-27 | 2018-11-27 | 国际商业机器公司 | 在压缩的可变长度字符串上进行谓词评估的方法和设备 |
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 |
-
2019
- 2019-01-30 CN CN201910091990.7A patent/CN109802686B/zh active Active
- 2019-06-04 US US16/431,694 patent/US10686467B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5532693A (en) * | 1994-06-13 | 1996-07-02 | Advanced Hardware Architectures | Adaptive data compression system with systolic string matching logic |
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN105183557A (zh) * | 2015-08-26 | 2015-12-23 | 东南大学 | 一种基于硬件的可配置的数据压缩系统 |
CN107180018A (zh) * | 2017-05-17 | 2017-09-19 | 上海兆芯集成电路有限公司 | 基于散列的加速压缩方法以及使用此方法的装置 |
Also Published As
Publication number | Publication date |
---|---|
US10686467B1 (en) | 2020-06-16 |
CN109802686B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107180018B (zh) | 基于散列的加速压缩方法以及使用此方法的装置 | |
CN107168936B (zh) | 基于散列的加速压缩方法以及使用此方法的装置 | |
JP2790466B2 (ja) | 文字列検索方法及び装置 | |
JP2018501752A (ja) | コンテンツ連想シーブに存在している基本データエレメントからデータを導出することによるデータの無損失削減 | |
JPH07297728A (ja) | パターン一致を探索するための方法およびシステム | |
JP6004453B2 (ja) | 展開マップを用いた改良されたデータアクセスのパフォーマンス | |
CN105844210B (zh) | 硬件有效的指纹识别 | |
EP3387647B1 (en) | Reduction of audio data and data stored on a block processing storage system | |
CN109802685A (zh) | 加速压缩方法以及加速压缩装置 | |
CN109828789A (zh) | 加速压缩方法以及加速压缩装置 | |
EP3311494B1 (en) | Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve | |
CN109802686A (zh) | 加速压缩方法以及加速压缩装置 | |
CN105515586A (zh) | 一种快速差量压缩方法 | |
CN109857463A (zh) | 加速压缩方法以及加速压缩装置 | |
US10707897B1 (en) | Command processor with multiple string copy engines for a decompression system | |
JP2001306614A (ja) | 文字列検索方法およびその方法を用いた文字列検索装置 | |
JP3210183B2 (ja) | データ圧縮方法及び装置 | |
JP2002049645A (ja) | ハッシュ値算出方法、ハッシュ値算出装置、検索方法、検索装置、記録媒体 | |
JP2772125B2 (ja) | 辞書検索方式 | |
JP2772124B2 (ja) | 辞書検索方式 | |
JP2000357970A (ja) | 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置 | |
JPH03214316A (ja) | 条件コード発生方式 | |
JPH0964752A (ja) | コンピュータデータの圧縮・伸長方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |