“常通风、勤洗手、戴口罩、少聚集。”
Hyperscan发布5.3.0新版本啦
Hyperscan 5.3.0 版本已于2020年5月25日在Github (https://github.com/intel/hyperscan) 上发布。这一版本中,我们主要新增对AVX-512 Vector Byte Manipulation Instructions(VBMI)指令集的支持,并对多字符串匹配算法和单双字符匹配算法进行优化,还公开了用于人工测试的正则表达式构造脚本。
更新内容包括如下几个方面:
A.
性能优化
1. 多字符串匹配算法——Teddy
● 核心:
在当前AVX-512实现基础上增加AVX-512 VBMI支持。
● 算法简介:
Teddy和FDR是Hyperscan内部的两大多字符串匹配算法,其中Teddy用于中等规模字符串集合匹配。
FDR是Hyperscan内部处理超大规模字符串集合的匹配算法,其设计原理和实现细节可以参考我们的NSDI文章:https://www.usenix.org/system/files/nsdi19-wang-xiang.pdf
Teddy也有类似FDR的前后端设计,前端高速匹配定长后缀,后端对前端产生的候选匹配进行最终验证。对于前端设计,Teddy也和FDR一样采用“掩码表+SHIFT-OR”的工作方式。
不过,Teddy前端最大的特点在于——掩码表的设计是基于半字符(4比特位),而不是FDR中的超字符(9~15比特位)或全字符(8比特位)。采用半字符(4比特位)设计,可以利用PSHUFB指令代替LOAD进行批