使用SIMD引擎的通用数据压缩的制作方法

文档序号:14651812发布日期:2018-06-08 21:58阅读:来源:国知局
使用SIMD引擎的通用数据压缩的制作方法

技术特征:

1.一种对输入数据流进行压缩的系统,用以对输入数据流进行处理,获得压缩输出数据流,其特征在于,包括:

用于存储哈希表的存储器,所述哈希表包括多个哈希表项,每个哈希表项包括多个子集中的一个相关子集的哈希值以及指向所述相关子集的存储器位置的指针,所述多个子集由多个数据项组成,所述多个数据项由所述输入数据流的多个数据项组成;以及包括:耦合到所述存储器的处理器,用于

执行以下操作,在执行以下操作中的至少一个操作时,指示单指令流多数据流(single instruction multiple data,SIMD)引擎对所述多个子集中一组连续子集中的每个被处理子集并发执行所述至少一个操作:

计算每一个所述被处理的子集的哈希值,

搜索所述哈希表,以查找每个计算出的哈希值的匹配项,以及

根据匹配结果更新所述哈希表;

根据所述匹配结果和基于所述匹配结果进行比较的比较结果,更新所述压缩输出数据流;以及

针对多个所述相关子集重复所述计算、搜索和更新以创建所述压缩输出数据流。

2.根据权利要求1所述的系统,其特征在于,所述多个相关子集中的每个子集包括根据所述SIMD引擎的架构定义的预定数量的数据项。

3.根据任一前述权利要求所述的系统,其特征在于,所述组中的被处理子集的数量根据所述SIMD引擎架构来设置。

4.根据任一前述权利要求所述的系统,其特征在于,所述匹配结果指示所述哈希表中的现有哈希值中是否有所述每个计算出的哈希值的匹配项。

5.根据任一前述权利要求所述的系统,其特征在于,如果所述匹配结果指示所述计算出的哈希值与所述哈希表中的哈希值相匹配,则执行所述比较以产生所述比较结果,以及

所述比较包括:对被处理子集所包括的数据项和哈希表项中指针指向的与所述被处理子集的所述计算出的哈希值相匹配的哈希值关联的子集所包含的数据项进行比较。

6.根据任一前述权利要求所述的系统,其特征在于:

如果所述比较结果指示所述被处理子集和所述相关子集的所述数据项相同,则使用指向所述压缩输出数据流中的所述相关子集的指针来替代所述被处理子集,以及

如果所述比较结果指示所述被处理子集和所述相关子集的所述数据项不同,则在所述压缩输出数据流中更新所述被处理子集,并使用用于所述被处理子集的新哈希表项来更新所述哈希表。

7.根据任一前述权利要求所述的系统,其特征在于,所述并发计算包括:所述处理器将所述组中的被处理子集加载到所述SIMD引擎的至少一个SIMD寄存器,以及所述SIMD引擎并发处理所述组中的子集,所述并发处理包括:

将所述组中的所述被处理子集相互间隔,

针对每个被处理子集使用不同的位移值,通过位移值来移动所述被处理子集,并对所述被处理子集进行处理以便为每个所述被处理子集创建一个哈希值。

8.根据任一前述权利要求所述的系统,其特征在于,为查找所述哈希表中的现有哈希值是否有每个所述被处理的子集的所述计算出的哈希值的所述匹配项而在所述哈希表中进行的所述并发搜索包括:所述处理器指示所述SIMD引擎进行并发搜索以查找所述哈希表中的现有哈希值中是否有每个所述计算出的哈希值的匹配项。

9.根据任一前述权利要求所述的系统,其特征在于,通过至少一个被处理子集对所述哈希表进行的所述并发更新包括:所述处理器指示所述SIMD引擎使用与所述至少一个被处理子集相关的表项来并发更新所述哈希表。

10.根据任一前述权利要求所述的系统,其特征在于,所述压缩输出数据流兼容使用传统压缩方法压缩的标准压缩输出数据流,所述压缩输出数据流使用传统解压方法进行解压。

11.一种对输入数据流进行压缩的方法,用以对输入数据流进行处理,获得压缩输出数据流,其特征在于,包括:

存储包括多个哈希表项的哈希表,每个哈希表项包括多个子集中的一个相关子集的哈希值以及指向所述相关子集的存储器位置的指针,所述多个子集由多个数据项组成,所述多个数据项由所述输入数据流的多个数据项组成;执行以下操作,在执行以下操作中的至少一个操作时,指示处理器的单指令流多数据流(single instruction multiple data,SIMD)引擎对所述若干相关子集中一组连续子集中的每个被处理子集并发执行所述至少一个操作:

计算每一个所述被处理子集的哈希值,

搜索所述哈希表,以查找每个计算出的哈希值的匹配项,以及

根据匹配结果更新所述哈希表;

根据所述匹配结果和基于所述匹配结果进行比较的比较结果,更新所述压缩输出数据流;以及

针对所述多个子集重复所述计算、搜索和更新以创建所述压缩输出数据流。

12.根据权利要求11所述的方法,其特征在于,所述并发计算包括:所述处理器将所述组中的被处理子集加载到所述SIMD引擎的至少一个SIMD寄存器,以及所述SIMD引擎并发处理所述组中的被处理子集,所述并发处理包括:

将所述组中的所述被处理子集相互间隔,以及

针对每个被处理子集使用不同的位移值,通过位移值来移动所述被处理子集,并对所述被处理子集进行处理以便为每个所述被处理子集创建一个哈希值。

13.根据权利要求11所述的方法,其特征在于,为查找所述哈希表中的现有哈希值是否有每个所述被处理子集的所述计算出的哈希值的所述匹配项而在所述哈希表中进行的所述并发搜索包括:所述处理器指示所述SIMD引擎进行并发搜索,以查找所述哈希表中的现有哈希值是否有每个所述计算出的哈希值的匹配项。

14.根据权利要求11所述的方法,其特征在于,通过至少一个被处理子集对所述哈希表进行的所述并发更新包括:所述处理器指示所述SIMD引擎使用与所述至少一个被处理子集相关的表项,来并发更新所述哈希表。

15.根据权利要求11至14中的任一项所述的方法,其特征在于,所述压缩输出数据流兼容使用传统压缩方法压缩的标准压缩输出数据流,所述压缩输出数据流使用传统解压方法进行解压。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1