论文部分内容阅读
正则表达式被用来进行字符串的查找,匹配,其应用的情形十分广泛,如网络入侵检测,生物DNA序列,金融数据风控等。随着物联网发展,5G技术的出现,生活中产生的数据快速增多,大约每过两年这些数据就会提高到原来的两倍。在这种情况下,基于传统中央处理器(Central Processing Unit,简称CPU)的软件方案实现的正则表达式匹配引擎的匹配速度早已不能满足实际需求,导致大量数据荒废。基于上述的背景下,本文主要对正则表达式硬件实现的非确定有限自动机(Nondeterministic Finite Automaton,简称NFA)算法进行了研究分析。得到的结论如下,以往的硬件引擎已经实现一个时钟周期处理一个字符的最快逻辑速度,其对数据流的实际处理速度只能通过最大时钟频率的提高来提升。但是它们的实用性较低,需要进行重复开发,使用分散的比较器,资源利用率低。在这一基础上,文章从两个研究点分别研究,即需求高时钟频率的实现方案和不需要重复开发的实现方案。文章将NFA算法和状态机思想进行了比较,通过探究实验,得出可以使用状态机的思想来实现正则表达式硬件匹配引擎的思路。随后,将正则表达式分成几个基本类型和混合类型,逐一通过Verilog代码进行实现,得到了一套针对基本元字符的“状态机实现引擎方案”。此外,文章在资源和可重构的导向上完成了一个硬件引擎的设计即“可重构引擎方案”,根据正则表达式的特点设计了一种指令格式,通过指令配置电路实现“双重复用”的电路设计。“状态机实现引擎方案”通过输入测试,得到结果可以满足设计要求,并且速度很快,一个字符消耗一个周期,使用现场可编程逻辑门电路(Field Programmable Gate Array,简称FPGA)最大时钟频率可达800MHz,即吞吐率6.4Gbps,较同类型研究有1-2倍速度提升,缺点是需要重复开发。“可重构引擎方案”对子模块和顶层分别进行测试,也达到了设计的匹配要求,在未触发匹配时一个字符消耗一个周期,触发匹配时消耗5到8个周期,由于未触发匹配占绝大多数的操作时间,故速度大致接近一个字符消耗一个周期。架构实现双重复用电路的情况下,只使用了三个比较器,并且综合报告资源消耗为355个逻辑单元(Logic Elements,简称LE)。相比以往的堆叠式设计消耗大量的LE,有着明显的优势,同时不需要重复开发。