CN107220028B - 加速压缩方法以及使用此方法的装置 - Google Patents
加速压缩方法以及使用此方法的装置 Download PDFInfo
- Publication number
- CN107220028B CN107220028B CN201710372812.2A CN201710372812A CN107220028B CN 107220028 B CN107220028 B CN 107220028B CN 201710372812 A CN201710372812 A CN 201710372812A CN 107220028 B CN107220028 B CN 107220028B
- Authority
- CN
- China
- Prior art keywords
- string
- matching
- characters
- match
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006835 compression Effects 0.000 title claims abstract description 49
- 238000007906 compression Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000006073 displacement reaction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 31
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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
本发明实施例提出一种加速压缩方法,实施于压缩加速器中。在循环的每一迭代中,从第一字符串中取得n个连续字符作为源字符串;将源字符串中的每个字符单独地与第二字符串中的所有字符比较以生成n个第一匹配结果;根据第一匹配结果生成第二匹配结果;根据第二匹配结果判断是否存在n个连续字符的匹配;当不存在时,更新并输出匹配长度,并且结束循环;以及当存在时,将匹配长度加上n并继续循环的下一迭代。
Description
技术领域
本发明关于一种微处理器技术,特别是一种加速压缩方法以及使用此方法的装置。
背景技术
字符串匹配方法通常可归类为:基于内容可寻址内存(CAM-,ContentAddressable Memory-based);和基于散列(hash-based);两种。以上所述的字符串匹配都需要优化的最长字串匹配方法,而优化传统上以软件实现。然而,软件的执行效能往往劣于专属硬件的执行效能。因此,需要一种使用专属硬件的加速压缩方法以及使用此方法的装置,用以克服上述缺陷。
发明内容
本发明的实施例提出一种加速压缩方法,实施于压缩加速器中,至少包含以下步骤:提供第一字符串和第二字符串;以及,反复执行循环,用以决定于第一字符串及第二字符串间的匹配长度。在循环的每一迭代中,从第一字符串中取得n个连续字符作为源字符串;将源字符串中的每个字符单独地与第二字符串中的所有字符比较以生成n个第一匹配结果;根据n个第一匹配结果生成第二匹配结果;根据第二匹配结果判断是否存在n个连续字符的匹配;当不存在上述n个连续字符的匹配时,更新并输出匹配长度,并且结束循环;以及当存在上述n个连续字符的匹配时,将匹配长度加上n及继续循环的下一迭代。
本发明的实施例提出一种加速压缩装置,至少包含滑动窗口缓存器、预取缓存器、掩码寄存器、n个字符串比较器、位移比较器、结果检查器及控制器,其中n大于1。预取缓存器锁存第一字符串中的n个连续字符作为源字符串,滑动窗口缓存器锁存第二字符串,以及掩码寄存器锁存掩码。n个字符串比较器将源字符串中的每个字符单独地与第二字符串中的所有字符比较,用以生成n个第一匹配结果。位移比较器根据n个第一匹配结果生成第二匹配结果。结果检查器根据第二匹配结果判断是否存在n个连续字符的匹配。当不存在上述n个连续字符的匹配时,控制器更新并输出匹配长度。当存在上述n个连续字符的匹配时,控制器将匹配长度加上n及控制预取缓存器以锁存第一字符串中的后续n个连续字符作为新源字符串。
附图说明
图1是根据本发明实施例的微处理器的***架构图。
图2是根据本发明实施例的压缩加速器的方块图。
图3是根据本发明实施例的字符串比较器的方块图。
图4是根据本发明实施例的位移比较器的方块图。
图5是根据本发明实施例的结果检查器的方块图。
图6是根据本发明实施例的加速压缩的方法流程图。
图7A及图7B是根据本发明实施例的最大匹配长度计算示意图。
图8A及图8B是根据本发明实施例的最长字符串匹配器的方块图。
图9A是根据本发明实施例的第1级位移比较器的方块图。
图9B是根据本发明实施例的第2级位移比较器的方块图。
图9C是根据本发明实施例的第3级位移比较器的方块图。
图9D是根据本发明实施例的第4级位移比较器的方块图。
图10是根据本发明实施例的结果检查器的方块图。
图11A及图11B是根据本发明实施例的加速压缩的方法流程图。
图12是根据本发明实施例的最大匹配长度计算示意图。
图13是根据本发明实施例的加速压缩的方法流程图。
具体实施方式
以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1是根据本发明实施例的微处理器的***架构图。微处理器10可包含多个处理器核心170_1至170_j及多个加速器(Accelerator)150_1至150_i,i、j为整数,随着不同设计需求而有不同。加速器150_1至150_i举例而言可以是加速功能单元(AFU,AcceleratorFunctional Units)。处理器核心170_1至170_j中的任一个包含的组件都涉及电脑指令的执行,包括算术逻辑单元(ALU,Arithmetic Logic Unit)、浮点运算单元(FPU,FloatingPoint Unit)、一级缓存(L1 Cache)和二级缓存(L2 Cache)。每一处理器核心采用指令周期(有时也称提取-解码-执行周期),作为基本操作流程。此流程用以让处理器核心从记忆体取得程式指令,判定此指令指示进行何种操作,并且执行这些操作。加速器150_1至150_i可执行不同功能,并透过加速器接口(Accelerator Interface)130连接至末级缓存(Last-level Cache)110,用以与处理器核心170_1至170_j通过虚拟位址(virtual address)进行数据交换。加速器150_1至150_i中的任一个可协助处理器核心170_1至170_j以更有效率地方式执行特定功能,上述特定功能包括例如压缩,加解密或正则匹配等运算量较大的功能,从而减轻处理器核心170_1至170_j的工作负担。加速器150_1至150_i中的一个可为压缩加速器(compression accelerator),用以完成字符串压缩功能。
图2是根据本发明实施例的压缩加速器的方块图。压缩加速器20包含滑动窗口缓存器(sliding window buffer)310、预取缓存器(lookahead buffer)320、掩码寄存器(mask register)370及匹配长度寄存器393。压缩加速器20包含控制器391,初始时,其控制预取缓存器320以锁存n个字符320_1至320_n,n可为4。虽然本发明实施例为每个批次比对4(n=4)个字符的设计,本领域技术人员可根据***需求在每个批次比对更多或更少的字符,例如,3、5或6个,本发明并不因此局限。在一些实施例中,滑动窗口缓存器310可为2048比特的向量寄存器(vector register),用以锁存原始字符串中的256个字符,每个字符以8比特表示,例如,“a”、“b”、“c”、“d”、“e”、“f”、“a”、“b”、“c”、“d”、“e”、“f”等等,值得注意的是,在原始字符串的顺序上,滑动窗口缓存器310中的原始字符位于预取缓存器320中的待压缩的原始字符串之前。在一些实施例中,预取缓存器320可为32比特的向量寄存器,用以锁存原始字符串中的4个字符,每个字符以8比特表示,例如,字符320_1至320_4分别为“a”、“b”、“c”及“d”。在一些实施例中,掩码寄存器(mask register)370可为256比特的寄存器,初始时所有比特均为第一值,例如“2’b1”。在一些实施例中,匹配长度寄存器393可为8比特的寄存器,初始时锁存“0”。压缩加速器20包含字符串比较器330_1至330_4,每一字符串比较器的输入端连接预取缓存器320及滑动窗口缓存器310,其输出端连接至匹配寄存器340_1至340_4中的指定一个。匹配寄存器340_1至340_4中的每一个可包含256个寄存器,其中的第i个寄存器锁存预取缓存器320的输入字符是否与滑动窗口缓存器310中的第i个字符的信息相符,i代表0~255间的任意整数。每一字符串比较器比较预取缓存器320的对应一个输入字符与滑动窗口缓存器310中的每一字符,并且将比对结果储存至匹配寄存器340_1至340_4中的指定一个。当预取缓存器320的输入字符与滑动窗口缓存器310中的第i个字符相符时,该比特设为第一值(例如“2’b1”);不相符则设为第二值(如“2’b0”)。假设字符320_1为“a”且滑动窗口缓存器310的第0至9个字符为“a”、“b”、“c”、“d”、“e”、“f”、“a”、“b”、“c”、“d”、“e”、“f”:字符串比较器330_1将比较结果“2’b1000010000”储存至匹配寄存器340_1的第0至9比特。图3是根据本发明实施例的字符串比较器的方块图。字符串比较器330_1包含256个8比特数字比较器(8-bit digital comparator)400_0至400_255。其中8比特数字比较器400_i比较字符320_1及滑动窗口缓存器310中的第i个字符,i为0至255间的任意整数。当二者相符时,8比特数字比较器400_i输出“2’b1”至匹配寄存器340_1中的寄存器340_1_i,用以锁存“2’b1”。当二者不相符时,8比特数字比较器400_i输出“2’b0”至匹配寄存器340_1中的寄存器340_1_i,用以锁存“2’b0”。本领域技术人员可修改图3的字符串比较器330_1以完成字符串比较器330_2至330_4,不再赘述以求简洁。
压缩加速器20包含位移比较器350。图4是根据本发明实施例的位移比较器的方块图。位移比较器350将“2’b0”锁存至中介寄存器360中的寄存器360_0至360_3,将匹配寄存器340_1、340_2、340_3及340_4的值分别右移4个、3个、2个及1个比特,将位移后的结果进行以比特为基础的逻辑与运算,并且锁存运算结果至中介寄存器360中的寄存器360_4至360_255。右移4个、3个、2个及1个比特是指由最低有效位(LSB,Least Significant Bit)向最高有效位(MSB,Most Significant Bit)分别移动4个、3个、2个及1个比特,并且分别将最低的4个、3个、2个及1个比特补“2’b0”。当中介寄存器360中的寄存器360_j为“2’b1”时,代表滑动窗口缓存器310的第“j-4”至“j-1”个字符与预取缓存器320中的全部四个字符相符,其中j为4至255间的任意整数。举例来说,位移比较器350可包含756个与门(AND gates)540_0_0至540_0_251、540_1_0至540_1_251及540_2_0至540_2_251。与门540_0_i将匹配寄存器340_1中的寄存器340_1_i的值和匹配寄存器340_2中的寄存器340_2_(i+1)的值进行逻辑与运算,并输出结果至与门540_2_i,与门540_1_i将匹配寄存器340_3中的寄存器340_3_(i+2)的值和匹配寄存器340_4中的寄存器340_4_(i+3)的值进行逻辑与运算,并输出结果至与门540_2_i,并且与门540_2_i将与门540_0_i的输出结果与门540_1_i的输出结果进行逻辑与运算,并输出结果至中介寄存器360中的寄存器360_(i+4),其中,i为0至251间的任意整数。当然本发明的位移比较器350还可采用其它逻辑电路实现将匹配寄存器340_1的第i个比特(寄存器340_1_i的值)、匹配寄存器340_2的第(i+1)个比特(寄存器340_2_(i+1)的值)、匹配寄存器340_3的第(i+2)个比特(寄存器340_3_(i+2)的值)、匹配寄存器340_4的第(i+3)个比特(寄存器340_4_(i+3)的值)进行逻辑与运算,并输出结果至中介寄存器360的第(i+4)个比特(寄存器340_2_(i+4)的值),并不限于图4所示的756个与门(AND gates)540_0_0至540_0_251、540_1_0至540_1_251及540_2_0至540_2_251的实施方式。
压缩加速器20包含结果检查器381及控制器391。当匹配长度寄存器393的值大于或等于4时,控制器391将掩码寄存器370的值右移4个比特。结果检查器381将(位移后)掩码及中介寄存器360的值进行以比特为基础的逻辑与运算,将运算结果更新回掩码寄存器370,并且检查运算结果中是否包含任何为“2’b1”的比特。图5是根据本发明实施例的结果检查器的方块图。结果检查器381可包含256个逻辑与门610_0至610_255及多输入单输出或门630。与门610_i将中介寄存器360中的寄存器360_i的值和掩码寄存器370中的寄存器370_i的值进行逻辑与运算,输出结果至寄存器370_i以锁存运算结果,及输出结果至多输入单输出或门630,其中,i为0至255间的任意整数。多输入单输出或门630可包含树状组织的或门,将与门610_0至与门610_255的输出结果进行逻辑或运算,并输出运算结果至结果寄存器383。当至少一个输入端为“2’b1”时,多输入单输出或门630输出“2’b1”。当所有输入端均为“2’b0”时,多输入单输出或门630输出“2’b0”。当结果寄存器383锁存的值为“2’b0”时,控制器391将匹配长度寄存器393的值输出作为匹配长度。当结果寄存器383锁存的值为“2’b1”时,控制器391将匹配长度寄存器393的值加4,并且控制预取缓存器320以锁存原始字符串中接续本轮比较的缓存于预取缓存器320中的源字符串的后的四个字符。
图6是根据本发明实施例的加速压缩的方法流程图。此方法使用图2所示的压缩加速器20执行,用以获得二个字符串间(亦即是第一字符串及第二字符串间)的最大匹配长度。将掩码中的m个比特的每一个初始化为第一值(如“2’b1”)及将匹配长度初始化为0,m可为256(步骤S711),以及将第一字符串中的前n个字符当作源字符串(步骤S713)。初始掩码可锁存于掩码寄存器370,初始匹配长度可锁存于匹配长度寄存器393,而初始源字符串可锁存于预取缓存器320。接着,反复执行一个循环,以获得第一字符串及第二字符串间的最大匹配长度(步骤S713至S771)。在每一迭代中,检测第一字符串及第二字符串间是否存在连续n个匹配。若是,则继续执行下一迭代的处理;否则,输出匹配长度。在每一迭代中,详细来说,将源字符串中的每个字符单独与第二字符串中的所有字符比较以生成n个第一匹配结果(步骤S731),在一实施例中,生成n个第一匹配结果的比较在硬件实现上是并行进行的,然后根据第一匹配结果生成第二匹配结果,用以储存源字符串的全部是否被包含于第二字符串的信息(步骤S733),将掩码右移n个比特,用以指示此迭代连续匹配预期出现的结束位置的后一位置的信息(步骤S735),值得注意的是,上一迭代的比较如存在连续n个字符的匹配,则匹配结束位置的后一比特的值为“2’b1”,将掩码右移n个比特的目的是将上一迭代匹配的连续n个字符的后一比特的“2’b1”右移至本迭代如果再存在连续n个字符的匹配的最后位置的后一比特,以便进行运算,接下来,根据应用位移后的掩码的第二匹配结果以判断是否存在连续n个字符的匹配(步骤S737)。第二字符串可锁存于滑动窗口缓存器310。步骤S731可使用如上所述的字符串比较器330_1至330_4完成,而第一匹配结果可锁存于匹配寄存器340_1至340_4。步骤S733可使用如上所述的位移比较器350完成,而第二匹配结果可锁存于中介寄存器360。步骤S737可使用如上所述的结果检查器381完成,而判断结果可锁存于结果寄存器383。在步骤S737中,更将锁存于掩码寄存器370的掩码更新为应用的结果。当不存在连续n个字符的匹配时(步骤S737中“否”的路径),输出匹配长度(步骤S771)。当存在连续n个字符的匹配时(步骤S737中“是”的路径),将匹配长度加n(步骤S751),以及将第一字符串中之后的n个字符当作源字符串(步骤S755)。步骤S751及S755可使用如上所述的控制器391完成。新的源字符串锁存于预取缓存器320。
以下举出实例说明图2的最长字符串匹配器及图6的加速压缩方法。图7A及图7B是根据本发明实施例的最大匹配长度计算示意图。假设第一字符串包含“a”、“b”、“c”、“d”、“e”、“f”、“a”和“c”的字符,而第二字符串包含“a”、“b”、“c”、“d”、“e”、“f”、“a”、“b”、“c”、“d”、“e”、“f”等等的字符:将掩码中的m个比特的每一个初始化为“2’b1”及将匹配长度初始化为0(步骤S711),以及将第一字符串中的字符“a”、“b”、“c”和“d”当作源字符串,并分别锁存于寄存器320_1至320_4(步骤S713)。掩码储存连续匹配的期望结束位置的后一位置的信息。参考图7A。在第一迭代中,使用字符串比较器330_1至330_4将源字符“a”、“b”、“c”和“d”分别单独地比较第二字符串中的所有字符以生成4个第一匹配结果(步骤S731)。详细来说,字符串比较器330_1比较源字符“a”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b100000100000…”至匹配寄存器340_1。字符串比较器330_2比较源字符“b”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b010000010000…”至匹配寄存器340_2。字符串比较器330_3比较源字符“c”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b001000001000…”至匹配寄存器340_3。字符串比较器330_4比较源字符“d”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b000100000100…”至匹配寄存器340_4。接着,位移比较器350根据4个第一匹配结果生成第二匹配结果(步骤S733)。详细来说,位移比较器350根据匹配寄存器340_1、340_2、340_3及340_4中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b000010000010…”至中介寄存器360中的寄存器360_0至360_(m-1),作为第二匹配结果。接着,将掩码右移4个比特成为“2’b000011111111…”,用以指示此迭代连续匹配预期出现的结束位置的后一位置为第5个的信息(步骤S735),应用掩码至第二匹配结果并锁存应用后的结果“2’b000010000010…”至结果寄存器383,以及根据应用后的结果判断是否包含任何为“2’b1”的比特(亦即是,是否存在连续4个字符的匹配)(步骤S737)。由于应用后的结果“2’b000010000010…”包含至少一个“2’b1”的比特(步骤S737中“是”的路径),控制器391更新匹配长度寄存器393的值为0+4=4(步骤S751),以及控制预取缓存器320以锁存“e”、“f”、“a”和“c”至寄存器320_1至320_4(步骤S755)。参考图7B。在第二迭代中,使用字符串比较器330_1至330_4将源字符“e”、“f”、“a”及“c”分别单独地与第二字符串中的所有字符比较以生成4个第一匹配结果(步骤S731)。详细来说,字符串比较器330_1比较源字符“e”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b000010000010…”至匹配寄存器340_1。字符串比较器330_2比较源字符“f”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b000001000001…”至匹配寄存器340_2。字符串比较器330_3比较源字符“a”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b100000100000…”至匹配寄存器340_3。字符串比较器330_4比较源字符“c”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b001000001000…”至匹配寄存器340_4。接着,位移比较器350根据4个第一匹配结果生成第二匹配结果(步骤S733)。详细来说,位移比较器350根据匹配寄存器340_1、340_2、340_3及340_4中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b000000000000…”至中介寄存器360中的寄存器360_0至360_(m-1),作为第二匹配结果。接着,将掩码右移4个比特成为“2’b000000001000…”,用以指示此迭代连续匹配预期出现的结束位置的后一位置为第9个的信息(步骤S735),应用掩码至第二匹配结果并锁存应用后的结果“2’b000000000000…”至结果寄存器383,以及根据应用后的结果判断是否包含任何为“2’b1”的比特(步骤S737)。由于应用后的结果“2’b000000000000…”没有包含任何“2’b1”的比特(步骤S737中“否”的路径),控制器391输出匹配长度寄存器393的值(步骤S771)。于此可了解的是,应用图2的最长字符串匹配器及图6的加速压缩方法只能输出n的倍数的匹配长度。
为了解决如上所述的缺陷,本发明实施例还另提供一种最长字符串匹配器及加速压缩方法。图8A及图8B是根据本发明实施例的最长字符串匹配器的方块图。本发明实施例可另包含多输入单输出或门960,每一个输入端连接至中介寄存器930_1~930_4其中之一,即连接至选择器971的输出端,并且可包含树状组织的或门。当由选择器971选出的中介寄存器930_1~930_4其中之一存在至少一个“2’b1”时,多输入单输出或门960输出“2’b1”。当由选择器971选出的中介寄存器930_1~930_4其中之一的所有位置均为“2’b0”时,多输入单输出或门960输出“2’b0”。初始时,透过多输入单输出或门960检查中介寄存器930_1~930_4其中之一的所有位置均锁存“2’b0”。如果是,控制器950输出匹配长度寄存器393中的值;否则,控制器950控制预取缓存器320以锁存n个字符320_1至320_n,n可为4。
除了如图2中所示的滑动窗口缓存器310、预取缓存器320、字符串比较器330_1至330_4、匹配寄存器340_1至340_4、掩码寄存器370及匹配长度寄存器393之外,本发明实施例可将位移比较器350置换为四级位移比较器910_1至910_4,并且配置四个中介寄存器930_1至930_4分别连接至位移比较器910_1至910_4。图9A是根据本发明实施例的第1级位移比较器的方块图。第1级位移比较器910_1将“2’b0”锁存至中介寄存器930_1中的寄存器930_1_0,以及将匹配寄存器340_1的值右移1个比特并依序锁存至中介寄存器930_1中的寄存器930_1_1至930_1_255。当中介寄存器930_1中的寄存器930_1_j为“2’b1”时,代表滑动窗口缓存器310的第“j-1”个字符与预取缓存器320中的第一个字符相符,其中j为1至255间的任意整数。具体来说,第1级位移比较器910_1包含255个逻辑与门1010_0至1010_254。与门1010_i将匹配寄存器340_1中的寄存器340_1_i的值和自己进行逻辑与运算,并输出结果至中介寄存器930_1中的寄存器930_1_(i+1),其中i为0至254间的任意整数。
图9B是根据本发明实施例的第2级位移比较器的方块图。第2级位移比较器910_2将“2’b0”锁存至中介寄存器930_2中的寄存器930_2_0及930_2_1,将匹配寄存器340_1及340_2的值分别右移2个及1个比特,将位移后的结果进行以比特为基础的逻辑与运算,并且锁存运算结果至中介寄存器930_2中的寄存器930_2_2至930_2_255。当中介寄存器930_2中的寄存器930_2_j为“2’b1”时,代表滑动窗口缓存器310的第“j-2”及“j-1”个字符与预取缓存器320中的前二个字符相符,其中j为2至255间的任意整数。具体来说,第2级位移比较器930_2可包含254个逻辑与门1020_0至1020_253。与门1020_i将匹配寄存器340_1中的寄存器340_1_i的值和匹配寄存器340_2中的寄存器340_2_(i+1)的值进行逻辑与运算,并输出结果至中介寄存器930_2中的寄存器930_2_(i+2),其中i为0至253间的任意整数。
图9C是根据本发明实施例的第3级位移比较器的方块图。第3级位移比较器910_3将“2’b0”锁存至中介寄存器930_3中的寄存器930_3_0至930_3_2,将匹配寄存器340_1、340_2及340_3的值分别右移3个、2个及1个比特,将位移后的结果进行以比特为基础的逻辑与运算,并且锁存运算结果至中介寄存器930_3中的寄存器930_3_3至930_3_255。当中介寄存器930_3中的寄存器930_3_j为“2’b1”时,代表滑动窗口缓存器310的第“j-3”至“j-1”个字符与预取缓存器320中的前三个字符相符,其中j为3至255间的任意整数。具体来说,第3级位移比较器910_3可包含506个与门1030_0_0至1030_0_252及1030_1_0至1030_1_252。与门1030_0_i将匹配寄存器340_1中的寄存器340_1_i的值和匹配寄存器340_2中的寄存器340_2_(i+1)的值进行逻辑与运算,并输出结果至与门1030_1_i,并且与门1030_1_i将匹配寄存器340_3中的寄存器340_3_(i+2)的值和与门1030_0_i的输出结果进行逻辑与运算,并输出结果至中介寄存器930_3中的寄存器930_3_(i+3),其中i为0至252间的任意整数。
图9D是根据本发明实施例的第4级位移比较器的方块图。第4级位移比较器910_4将“2’b0”锁存至中介寄存器930_4中的寄存器930_4_0至930_4_3,将匹配寄存器340_1、340_2、340_3及340_4的值分别右移4个、3个、2个及1个比特,将位移后的结果进行以比特为基础的逻辑与运算,并且锁存运算结果至中介寄存器930_4中的寄存器930_4_4至930_4_255。当中介寄存器930_4中的寄存器930_4_j为“2’b1”时,代表滑动窗口缓存器310的第“j-4”至“j-1”个字符与预取缓存器320中的全部四个字符相符,其中j为4至255间的任意整数。具体来说,第4级位移比较器910_4可包含756个与门1040_0_0至1040_0_251、1040_1_0至1040_1_251及1040_2_0至1040_2_251。与门1040_0_i将匹配寄存器340_1中的寄存器340_1_i的值和匹配寄存器340_2中的寄存器340_2_(i+1)的值进行逻辑与运算,并输出结果至与门1040_2_i,与门1040_1_i将匹配寄存器340_3中的寄存器340_3_(i+2)的值和匹配寄存器340_4中的寄存器340_4_(i+3)的值进行逻辑与运算,并输出结果至与门1040_2_i,并且与门1040_2_i将与门1040_0_i的输出结果与门1040_1_i的输出结果进行逻辑与运算,并输出结果至中介寄存器930_4中的寄存器930_4_(i+4),其中i为0至251间的任意整数。
本发明实施例可将图2的结果检查器381置换为结果检查器973。本发明实施例可另包含选择器971,用以根据控制器950的控制讯号将中介寄存器930_1至930_4中的一个连接至多输入单输出或门960及结果检查器973中的一个。控制器950控制选择器971将中介寄存器930_4连接至多输入单输出或门960,接着透过多输入单输出或门960检查中介寄存器930_4中是否包含至少一个“2’b1”。当中介寄存器930_4中包含至少一个“2’b1”时,控制器950将掩码寄存器370的值右移4个比特,并且控制选择器971将中介寄存器930_4连接至结果检查器973。结果检查器973将位移后的掩码寄存器370的值及中介寄存器930_4的值进行以比特为基础的逻辑与运算,将运算结果更新回掩码寄存器370,并且检查运算结果中是否包含任何为“2’b1”的比特。当结果寄存器383锁存的值为“2’b1”时,控制器950将匹配长度寄存器393的值加4,并且控制预取缓存器320以锁存下四个字符。
接着,当中介寄存器930_4中全部为“2’b0”时,控制器950控制选择器971将中介寄存器930_3连接至多输入单输出或门960,接着透过多输入单输出或门960检查中介寄存器930_3中是否包含至少一个“2’b1”。当中介寄存器930_3中包含至少一个“2’b1”时,控制器950将掩码寄存器370的值右移3个比特,并且控制选择器971将中介寄存器930_3连接至结果检查器973。结果检查器973将位移后的掩码寄存器370的值及中介寄存器930_3的值进行以比特为基础的逻辑与运算,将运算结果更新回掩码寄存器370,并且检查运算结果中是否包含任何为“2’b1”的比特。当结果寄存器383锁存的值为“2’b1”时,控制器950将匹配长度寄存器393的值加3,并将匹配长度寄存器393的值输出作为匹配长度。
接着,当中介寄存器930_3中全部为“2’b0”时,控制器950控制选择器971将中介寄存器930_2连接至多输入单输出或门960,接着透过多输入单输出或门960检查中介寄存器930_2中是否包含至少一个“2’b1”。当中介寄存器930_2中包含至少一个“2’b1”时,控制器950将掩码寄存器370的值右移2个比特,并且控制选择器971将中介寄存器930_2连接至结果检查器973。结果检查器973将位移后的值及中介寄存器930_2的值进行以比特为基础的逻辑与运算,将运算结果更新回掩码寄存器370,并且检查运算结果中是否包含任何为“2’b1”的比特。当结果寄存器383锁存的值为“2’b1”时,控制器950将匹配长度寄存器393的值加2,并将匹配长度寄存器393的值输出作为匹配长度。
接着,当中介寄存器930_2中全部为“2’b0”时,控制器950控制选择器971将中介寄存器930_1连接至多输入单输出或门960,接着透过多输入单输出或门960检查中介寄存器930_1中是否包含至少一个“2’b1”。当中介寄存器930_2中包含至少一个“2’b1”时,控制器950将掩码寄存器370的值右移1个比特,并且控制选择器971将中介寄存器930_1连接至结果检查器973。结果检查器973将位移后的值及中介寄存器930_1的值进行以比特为基础的逻辑与运算,将运算结果更新回掩码寄存器370,并且检查运算结果中是否包含任何为“2’b1”的比特。当结果寄存器383锁存的值为“2’b1”时,控制器950将匹配长度寄存器393的值加1,并将匹配长度寄存器393的值输出作为匹配长度。当结果寄存器383锁存的值为“2’b0”时,控制器950直接将将匹配长度寄存器393的值输出作为匹配长度。
图10是根据本发明实施例的结果检查器的方块图。结果检查器973可包含256个逻辑与门1110_0至1110_255及多输入单输出或门1130。与门1110_i将中介寄存器930_j中的寄存器930_j_i的值和掩码寄存器370中的寄存器370_i的值进行逻辑与运算,输出结果至寄存器370_i以锁存运算结果,及输出结果至多输入单输出或门1130,其中,i为0至255间的任意整数,j为1至4间的任意整数。多输入单输出或门1130可包含树状组织的或门,将与门1110_0至与门1110_255的输出结果进行逻辑或运算,并输出运算结果至结果寄存器383。当至少一个输入端为“2’b1”时,多输入单输出或门1130输出“2’b1”。当所有输入端均为“2’b0”时,多输入单输出或门1130输出“2’b0”。
图11A及图11B是根据本发明实施例的加速压缩的方法流程图。此方法使用图8A及图8B所示的压缩加速器20执行,用以获得二个字符串间(亦即是第一字符串及第二字符串间)的最大匹配长度。将掩码中的m个比特的每一个初始化为第一值(如“2’b1”)及将匹配长度初始化为0,m可为256(步骤S711),以及将第一字符串中的前n个字符当作源字符串(步骤S713)。初始掩码可锁存于掩码寄存器370,初始匹配长度可锁存于匹配长度寄存器393,而初始源字符串可锁存于预取缓存器320。接着,反复执行一个外循环,以获得第一字符串及第二字符串间的最大匹配长度(包含步骤S731至S771及步骤S1211至S1273)。在外循环的每一迭代中,详细来说,将源字符串中的所有字符单独地与第二字符串中的所有字符比较以生成n个第一匹配结果(步骤S731),在一实施例中,步骤S731的n个比较步骤是并行执行的,然后根据第一匹配结果生成n级第二匹配结果,其中,每一级匹配结果用以储存源字符串的一部份是否被包含于第二字符串的信息(步骤S1211),将k设为n(步骤S1213),以及执行一个内循环(包含步骤S771及步骤S1230至S1273)。第二字符串可锁存于滑动窗口缓存器310。步骤S731可使用如上所述的字符串比较器330_1至330_4完成,而第一匹配结果可锁存于匹配寄存器340_1至340_4。步骤S1211可使用如上所述的四级位移比较器910_1至910_4完成,而四级第二匹配结果可锁存于中介寄存器930_1至930_4。在内循环的每一迭代中,判断k级第二匹配结果是否包含至少一个“2’b1”(步骤S1230)。当k级第二匹配结果包含至少一个“2’b1”时(步骤S1230中“是”的路径),将掩码右移k个比特以指示此迭代连续匹配预期出现的结束位置的后一位置的信息(步骤S1240),应用掩码至k级第二匹配结果以判断是否存在连续k个字符的匹配(步骤S1251)。步骤S1240可使用如上所述的控制器950完成。步骤S1251可使用如上所述的结果检查器973完成,而判断结果可锁存于结果寄存器383。当存在连续k个字符的匹配时(步骤S1251中“是”的路径),判断k是否等于n(步骤S1253)。当不存在连续k个字符的匹配时(步骤S1251中“否”的路径),即本轮匹配的k个字符与前一外循环匹配的n个字符不连续,则执行步骤S1271。当k等于n时(步骤S1253中“是”的路径),将匹配长度加n(步骤S751),将锁存于掩码寄存器370的掩码更新为如步骤S1251中的应用结果(步骤S753),以及将第一字符串中之后的n个字符当作源字符串(步骤S755),k等于n则说明本次比较的n个连续的源字符全部匹配,因此流程返回步骤S731以继续进行下一个迭代的外循环继续向后寻找最长匹配。步骤S751及S755可使用如上所述的控制器950完成。新的源字符串锁存于预取缓存器320。当k不等于n时(步骤S1253中“否”的路径),将匹配长度加k(步骤S1255),以及输出匹配长度(步骤S771)。当k级第二匹配结果不包含至少一个“2’b1”时(步骤S1230中“否”的路径),将k减1(步骤S1271),以及判断k是否小于1(步骤S1273)。当k小于1时(步骤S1273中“是”的路径),输出匹配长度(步骤S771)。当k不小于1时(步骤S1273中“否”的路径),执行内循环下一迭代的处理(回到步骤S1230)。值得注意的是,在一实施例中,内循环的步骤S771及步骤S1230至S1273中k级第二匹配结果的检查可以在硬件上并行执行,即4级的第二匹配结果是否包含“2’b1”且其出现“2’b1”的位置是否与外循环的前一迭代确定的n个匹配字符连续可以并行执行,然后在步骤S1255输出最大的k值。此外,在一些实施例中也不必一定执行步骤S1240掩码右移k个比特的步骤,也可采用其他方式判断本迭代匹配的k个字符的位置是否与外循环的前一迭代确定的n个匹配字符的位置连续。
以下举出实例说明图8A及图8B的最长字符串匹配器及图11A及图11B的加速压缩方法。图12是根据本发明实施例的最大匹配长度计算示意图。假设第一字符串包含“a”、“b”、“f”和“d”的字符,而第二字符串包含“a”、“b”、“c”、“d”、“e”、“f”、“a”、“b”、“c”、“d”、“e”、“f”等等的字符:将掩码中的m个比特的每一个初始化为“2’b1”及将匹配长度初始化为0(步骤S711),以及将第一字符串中的字符“a”、“b”、“f”和“d”当作源字符串,并分别锁存于寄存器320_1至320_4(步骤S713)。接着,使用字符串比较器330_1至330_4将源字符“a”、“b”、“f”及“d”单独地与第二字符串中的所有字符比较以生成4个第一匹配结果(步骤S731)。详细来说,字符串比较器330_1比较源字符“a”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b100000100000…”至匹配寄存器340_1。字符串比较器330_2比较源字符“b”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b010000010000…”至匹配寄存器340_2。字符串比较器330_3比较源字符“f”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b000001000001…”至匹配寄存器340_3。字符串比较器330_4比较源字符“d”及第二字符串中的所有字符后,生成并锁存第一匹配结果“2’b000100000100…”至匹配寄存器340_4。接着,位移比较器910根据第一匹配结果生成n级第二匹配结果(步骤S1211)。详细来说,位移比较器910_1根据匹配寄存器340_1中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b010000010000…”至中介寄存器930_1中的寄存器930_1_0至930_1_(m-1),作为1级第二匹配结果。位移比较器910_2根据匹配寄存器340_1及340_2中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b001000001000…”至中介寄存器930_2中的寄存器930_2_0至930_2_(m-1),作为2级第二匹配结果。位移比较器910_3根据匹配寄存器340_1、340_2及340_3中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b000000000000…”至中介寄存器930_3中的寄存器930_3_0至930_3_(m-1),作为3级第二匹配结果。位移比较器910_4根据匹配寄存器340_1、340_2、340_3及340_4中位移后的值进行以比特为基础的逻辑与运算,并且锁存运算结果“2’b000000000000…”至中介寄存器930_4中的寄存器930_4_0至930_4_(m-1),作为4级第二匹配结果。由于4级及3级第二匹配结果不包含至少一个“2’b1”而2级第二匹配结果包含至少一个“2’b1”(步骤S1230),将掩码右移2个比特成为“2’b001111111111”,以指示此迭代连续匹配预期出现的结束位置的后一位置为第3个(步骤S735),应用掩码至2级第二匹配结果并锁存应用后的结果“2’b001000001000…”至掩码寄存器370,以及根据应用后的结果判断是否包含任何为“2’b1”的比特(亦即是,是否存在连续2个字符的匹配)(步骤S1251)。由于应用后的结果“2’b001000001000…”包含至少一个“2’b1”的比特(步骤S737中“是”的路径),控制器391更新匹配长度寄存器393的值为0+2=2(步骤S1255),输出匹配长度寄存器393的值(步骤S771)。于此可了解的是,应用图8A及图8B的最长字符串匹配器及图11A及图11B的加速压缩方法可输出任意的匹配长度。
图13是根据本发明实施例的加速压缩的方法流程图。此方法使用图2或图8A及图8B所示的压缩加速器20执行。此方法初始时提供第一字符串及第二字符串(步骤S1410),以及反复执行循环,以计算第一字符串及第二字符串间的最大匹配长度(步骤S1420至S1480)。在循环的每一迭代中,从第一字符串中取得n个连续字符作为源字符串,其中,除第一迭代外,上述n个连续字符接续上一迭代取得的字符串(步骤S1420);将源字符串中的各个字符单独地与第二字符串中的所有字符比较以生成n个第一匹配结果,此亦可称为竖向比较(步骤S1430);根据第一匹配结果生成第二匹配结果(步骤S1440);提供掩码(步骤S1450);以及根据上述第二匹配结果判断是否存在上述n个连续字符的匹配(步骤S1460)。当不存在上述n个连续字符的匹配时(步骤S1460中“否”的路径),更新并输出匹配长度(步骤S1470);以及当存在上述n个连续字符的匹配时(步骤S1460中“是”的路径),将上述匹配长度加上n(步骤S1480)及继续上述循环的下一迭代。关于步骤S1420的技术细节,可参考步骤S713及S755的说明。关于步骤S1430的技术细节,可参考步骤S731的说明。于此须注意的是,以硬件实现的并行比较相较于软件的程序更具效率。关于步骤S1440的技术细节,可参考步骤S733或S1211的说明。关于步骤S1450的技术细节,可参考步骤S735的说明。关于步骤S1460的技术细节,可参考步骤S737或S1251的说明。关于步骤S1470的技术细节,可参考步骤S771及S1255的说明。关于步骤S1480的技术细节,可参考步骤S751的说明。
虽然图1至图5及图8至图10中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,以达成更佳的技术效果。此外,虽然图6、11及13的方法流程图采用特定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
符号说明
10 微处理器;
110 末级缓存;
130 加速器接口;
150_1~150_i 加速器;
170_1~170_j 处理器核心;
20 压缩加速器;
310 滑动窗口缓存器;
310_0~310_255 向量寄存器;
320 预取缓存器;
320_1~320_4 向量寄存器;
330_1~330_4 字符串比较器;
340_1~340_4 匹配寄存器;
340_1_0~340_1_255 寄存器;
340_2_0~340_2_255 寄存器;
340_3_0~340_3_255 寄存器;
340_4_0~340_4_255 寄存器;
350 位移比较器;
360 中介寄存器;
360_0~360_255 寄存器;
370 掩码寄存器;
370_0~370_255 寄存器;
381 结果检查器;
383 结果寄存器;
391 控制器;
393 匹配长度寄存器;
400_0~400_255 8 比特数字比较器;
540_0_0~540_0_255 逻辑与门;
540_1_0~540_1_255 逻辑与门;
540_2_0~540_2_255 逻辑与门;
610_0~610_255 逻辑与门;
630 多输入单输出或门;
S711~S771 方法步骤;
910_1~910_4 位移比较器;
930_1~930_4 中介寄存器;
930_1_0~930_1_255 寄存器;
930_2_0~930_2_255 寄存器;
930_3_0~930_3_255 寄存器;
930_4_0~930_4_255 寄存器;
950 控制器;
960 多输入单输出或门;
971 选择器;
973 结果检查器;
1010_0~1010_254 逻辑与门;
1020_0~1020_253 逻辑与门;
1030_0_0~1030_0_252、1030_1_0~1030_1_252 逻辑与门;
1040_0_0~1040_0_251、1040_1_0~1040_1_251、1040_2_0~1040_2_251 逻辑与门;
1110_0~1110_255 逻辑与门;
1130 多输入单输出或门;
S1211~S1273 方法步骤;
S1410~S1470 方法步骤。
Claims (20)
1.一种加速压缩方法,实施于一压缩加速器中,包括:
反复执行一第一循环,用以决定于一第一字符串及一第二字符串间的最大匹配长度,其中,在上述第一循环的每一迭代中,包括:
从上述第一字符串中取得n个连续字符作为一源字符串,n大于1;
将上述源字符串中的每个字符单独地与上述第二字符串中的所有字符比较以生成n个第一匹配结果;
根据上述n个第一匹配结果生成一第二匹配结果;
根据上述第二匹配结果判断是否存在上述n个连续字符的匹配;
当不存在上述n个连续字符的匹配时,更新并输出一匹配长度,并且结束上述第一循环;以及
当存在上述n个连续字符的匹配时,将上述匹配长度加上n并继续上述循环的下一迭代。
2.如权利要求1所述的加速压缩方法,其中,上述第一匹配结果中的每一个包含m个比特,每一上述第一匹配结果中的第i个比特为一第一值时,指示上述第二字符串中的第i个字符与上述源字符串中的一相应字符相符的信息;以及每一上述第一匹配结果中的第i个比特为一第二值时,指示上述第二字符串中的第i个字符与上述源字符串中的上述相应字符不相符的信息。
3.如权利要求1所述的加速压缩方法,其中,除第一迭代外,上述n个连续字符接续上一迭代取得的一字符串。
4.如权利要求1所述的加速压缩方法,其中,应用一掩码至上述第二匹配结果以判断是否存在上述n个连续字符的匹配,其中上述掩码储存连续匹配的期望结束位置的后一位置的信息。
5.如权利要求4所述的加速压缩方法,其中,当上述第二匹配结果及上述掩码的第t+1个比特均为一第一值时,判断存在上述n个连续字符的匹配,t为n的倍数。
6.如权利要求1所述的加速压缩方法,其中,上述第二匹配结果包含m个比特,当上述第二匹配结果中的第j个比特为一第一值时,代表上述第二字符串的第“j-n”至“j-1”个字符与上述源字符串中的全部字符相符,j为n至(m-1)间的任意整数。
7.如权利要求4所述的加速压缩方法,其中,在更新上述匹配长度并输出上述更新后的匹配长度的步骤中,还包括:
更新上述匹配长度以加上p,p为1至(n-1)间的任意整数。
8.如权利要求7所述的加速压缩方法,其中,上述第二匹配结果包含第1级第二匹配结果至第n级第二匹配结果,每级第二匹配结果包含m个比特,其中第p级第二匹配结果中的第i个比特为一第一值时,代表上述第二字符串的第“i-p”至“i-1”个字符与上述源字符串中的前p个字符相符,p为1至n间的任意整数。
9.如权利要求7所述的加速压缩方法,其中,在更新上述匹配长度并输出上述更新后的匹配长度的步骤中,还包括:
执行一第二循环,用以检查第(n-1)级第二匹配结果至第1级第二匹配结果,以决定上述p值,
其中,在上述第二循环的每一迭代中,还包括:
当第k级第二匹配结果包含至少一个第一值时,将上述掩码右移k个比特,k为(n-1)至1之间的任意整数;以及
当位移后的掩码及上述第k级第二匹配结果的一逻辑与运算结果指示存在k个连续字符的匹配时,p=k。
10.如权利要求4所述的加速压缩方法,其中,还包括:
当存在上述n个连续字符的匹配时,更新上述掩码中的值为上述掩码及上述第二匹配结果的一应用结果。
11.一种加速压缩装置,包括:
一滑动窗口缓存器,锁存一第二字符串;
一预取缓存器,锁存一第一字符串中的n个连续字符作为一源字符串;
一掩码寄存器,锁存一掩码;
n个字符串比较器,用以将上述源字符串中的每个字符单独地与上述第二字符串中的所有字符比较以生成n个第一匹配结果,n大于1;
一位移比较器,根据上述n个第一匹配结果生成一第二匹配结果;
一结果检查器,根据上述第二匹配结果判断是否存在上述n个连续字符的匹配;以及
一控制器,当不存在上述n个连续字符的匹配时,更新并输出一匹配长度;以及,当存在上述n个连续字符的匹配时,将上述匹配长度加上n及控制上述预取缓存器以锁存上述第一字符串中的后续n个连续字符作为新源字符串。
12.如权利要求第11所述的加速压缩装置,其中,上述第一匹配结果中的每一个包含m个比特,每一上述第一匹配结果中的第i个比特为一第一值时,指示上述第二字符串中的第i个字符与上述源字符串中的一相应字符相符的信息;以及每一上述第一匹配结果中的第i个比特为一第二值时,指示上述第二字符串中的第i个字符与上述源字符串中的上述相应字符不相符的信息。
13.如权利要求11所述的加速压缩装置,其中,上述第二匹配结果储存上述源字符串中的全部或一部分是否被包含于上述第二字符串的信息。
14.如权利要求11所述的加速压缩装置,其中,应用一掩码至上述第二匹配结果以判断是否存在上述n个连续字符的匹配,其中上述掩码储存连续匹配的期望结束位置的后一位置的信息。
15.如权利要求14所述的加速压缩装置,其中,当上述第二匹配结果及上述掩码的第t+1个比特均为一第一值时,判断存在上述n个连续字符的匹配,t为n的倍数。
16.如权利要求11所述的加速压缩装置,
其中,上述第二匹配结果包含m个比特,上述位移比较器包含多个与门,用以根据上述n个第一匹配结果中相应比特的值,决定上述第二匹配结果中的第j个比特的值,以及
其中,当上述第二匹配结果中的第j个比特为一第一值时,代表上述第二字符串的第“j-n”至“j-1”个字符与上述源字符串中的全部字符相符,j为n至(m-1)间的任意整数。
17.如权利要求14所述的加速压缩装置,其中,当不存在上述n个连续字符的匹配时,上述控制器更新上述匹配长度以加上p,p为1至(n-1)间的任意整数。
18.如权利要求17所述的加速压缩装置,上述第二匹配结果包含第1级第二匹配结果至第n级第二匹配结果,每级第二匹配结果包含m个比特,其中第p级第二匹配结果中的第i个比特为一第一值时,代表上述第二字符串的第“i-p”至“i-1”个字符与上述源字符串中的前p个字符相符,p为1至n间的任意整数。
19.如权利要求17所述的加速压缩装置,其中,上述控制器执行一循环,用以检查第(n-1)级第二匹配结果至第1级第二匹配结果,以决定上述p值,
其中,在上述循环的每一迭代中,还包括:
当第k级第二匹配结果包含至少一个第一值时,将上述掩码右移k个比特,k为(n-1)至1之间的任意整数;以及
当位移后的掩码及上述第k级第二匹配结果的一逻辑与运算结果指示存在k个连续字符的匹配时,p=k。
20.如权利要求11所述的加速压缩装置,其中,上述滑动窗口缓存器、上述预取缓存器、上述掩码寄存器、上述n个字符串比较器、上述位移比较器、上述结果检查器及上述控制器设置于一压缩加速器中,以及上述压缩加速器设置于一处理器核心之外。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710372812.2A CN107220028B (zh) | 2017-05-24 | 2017-05-24 | 加速压缩方法以及使用此方法的装置 |
TW106130421A TWI631509B (zh) | 2017-05-24 | 2017-09-06 | 加速壓縮方法以及使用此方法的裝置 |
US15/797,384 US9985648B1 (en) | 2017-05-24 | 2017-10-30 | Methods for accelerating hash-based compression and apparatuses using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710372812.2A CN107220028B (zh) | 2017-05-24 | 2017-05-24 | 加速压缩方法以及使用此方法的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107220028A CN107220028A (zh) | 2017-09-29 |
CN107220028B true CN107220028B (zh) | 2020-05-29 |
Family
ID=59945414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710372812.2A Active CN107220028B (zh) | 2017-05-24 | 2017-05-24 | 加速压缩方法以及使用此方法的装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9985648B1 (zh) |
CN (1) | CN107220028B (zh) |
TW (1) | TWI631509B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090840A (zh) * | 2020-08-24 | 2022-02-25 | 华为技术有限公司 | 序列查找方法、装置、设备及介质 |
CN115344245A (zh) * | 2021-05-14 | 2022-11-15 | 瑞昱半导体股份有限公司 | 加速比较函式执行的方法及加速比较函式执行的*** |
US11652495B2 (en) * | 2021-09-14 | 2023-05-16 | Mastercard International Incorporated | Pattern-based string compression |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226025A (zh) * | 1998-02-10 | 1999-08-18 | 北京多思科技工业园股份有限公司 | 阵列错位比较装置及用来实现查询的方法 |
CN101478311A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | bzip2压缩算法硬件加速实现方法 |
CN102088604A (zh) * | 2011-02-10 | 2011-06-08 | 深圳创维数字技术股份有限公司 | 一种影片缩略图的压缩方法及压缩装置 |
US8106799B1 (en) * | 2009-03-23 | 2012-01-31 | Marvell International Ltd. | Data compression and decompression using parallel processing |
TW201211897A (en) * | 2010-06-10 | 2012-03-16 | Micron Technology Inc | Programmable device, hierarchical parallel machines, methods for providing state information |
CN103023511A (zh) * | 2012-12-05 | 2013-04-03 | 云之朗科技有限公司 | 一种应用的压缩编码方法及装置 |
TW201346741A (zh) * | 2011-12-30 | 2013-11-16 | Intel Corp | 有效零基解壓縮 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP3337633B2 (ja) * | 1997-12-03 | 2002-10-21 | 富士通株式会社 | データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US9389841B2 (en) * | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
US9087070B2 (en) * | 2013-01-31 | 2015-07-21 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to URL parameters |
-
2017
- 2017-05-24 CN CN201710372812.2A patent/CN107220028B/zh active Active
- 2017-09-06 TW TW106130421A patent/TWI631509B/zh active
- 2017-10-30 US US15/797,384 patent/US9985648B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226025A (zh) * | 1998-02-10 | 1999-08-18 | 北京多思科技工业园股份有限公司 | 阵列错位比较装置及用来实现查询的方法 |
CN101478311A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | bzip2压缩算法硬件加速实现方法 |
US8106799B1 (en) * | 2009-03-23 | 2012-01-31 | Marvell International Ltd. | Data compression and decompression using parallel processing |
TW201211897A (en) * | 2010-06-10 | 2012-03-16 | Micron Technology Inc | Programmable device, hierarchical parallel machines, methods for providing state information |
CN102088604A (zh) * | 2011-02-10 | 2011-06-08 | 深圳创维数字技术股份有限公司 | 一种影片缩略图的压缩方法及压缩装置 |
TW201346741A (zh) * | 2011-12-30 | 2013-11-16 | Intel Corp | 有效零基解壓縮 |
CN103023511A (zh) * | 2012-12-05 | 2013-04-03 | 云之朗科技有限公司 | 一种应用的压缩编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TW201901416A (zh) | 2019-01-01 |
TWI631509B (zh) | 2018-08-01 |
US9985648B1 (en) | 2018-05-29 |
CN107220028A (zh) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5600811A (en) | Vector move instruction in a vector data processing system and method therefor | |
EP3314395B1 (en) | An apparatus and method for performing a splice operation | |
US9223720B2 (en) | Systems and methods for rapidly generating suitable pairs of hash functions | |
EP2569694B1 (en) | Conditional compare instruction | |
Sklyarov et al. | High-performance implementation of regular and easily scalable sorting networks on an FPGA | |
US10747819B2 (en) | Rapid partial substring matching | |
US11442728B2 (en) | Sequence alignment method of vector processor | |
US6035123A (en) | Determining hardware complexity of software operations | |
CN107220028B (zh) | 加速压缩方法以及使用此方法的装置 | |
US11016778B2 (en) | Method for vectorizing Heapsort using horizontal aggregation SIMD instructions | |
US20110302394A1 (en) | System and method for processing regular expressions using simd and parallel streams | |
US8127281B2 (en) | Method and apparatus for efficient multiple-pattern based matching and transformation of intermediate language expression trees | |
Saavedra et al. | Mining discriminative k-mers in DNA sequences using sketches and hardware acceleration | |
KR100735944B1 (ko) | 단일명령 복수데이터 관리를 위한 방법 및 컴퓨터 프로그램 | |
Papaphilippou et al. | FLiMS: A fast lightweight 2-way merger for sorting | |
US20020144097A1 (en) | Computer program conversion and compilation | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 | |
Ma et al. | Hardware-accelerated parallel genetic algorithm for fitness functions with variable execution times | |
US10579375B2 (en) | Method to build reconfigurable variable length comparators | |
Bhosale et al. | Implementation of Special Load and Store Instruction for the RST Unit | |
Grushin | Fast minimum and maximum selection | |
EP0837390A1 (en) | Improvements in or relating to microprocessor integrated circuits | |
US20190243649A1 (en) | Method to reduce effort in variable width comparators | |
US5774740A (en) | Central processing unit for execution of orthogonal and non-orthogonal instructions | |
TW202407540A (zh) | 用於加密功能之基於硬體之密鑰生成及儲存 |
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 |
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. |
|
CP03 | Change of name, title or address |