![](https://csdnimg.cn/release/download_crawler_static/88509643/bg5.jpg)
REGISTOR:SSD存储内部非结构化数据处理平台
ACM Transactions on Storage,Vol.号151、第七条。出版日期:2019年3月
重新排序RoB是具有
k
个
块的容量的随机访问缓冲器。传入的数据块根据其逻辑块
编号(LBN)在RoB中进行缓冲RoB中的块以其LBN的升序被发送到流水线的下一
级,尽管它们可能无序地进入RoB输入(写)和输出(读)异步发生,以获得最佳
性能。由于文件大小可以大于缓冲区大小,因此我们使用一个指针指示RoB的逻辑
开始,并将其转换为循环缓冲区。在逻辑上,RoB可以被看作是正在搜索的文件上
的大小
为
k的滑动窗口在用户库中使用相同大小的滑动窗口,以防止可能导致RoB
溢出的超出范围的LBN
2.3 匹配候选人
匹配候选查找器通过检查输入正则表达式的
起点
是否接受输入字符来查找可能的
匹配起点是正则表达式中的字符,在检查正则表达式中的其余字符之前,我们将
此字符与输入字符进行比较。因此,起始点取决于如何处理正则表达式在大多数
情况下,正则表达式从第一个字符匹配到最后一个字符,其中正则表达式的第一
个字符是起点。我们还在3.1节中介绍了一种从内部字符匹配正则表达式的方法,
其中内部字符作为起点。匹配候选查找器在解析
输入
数据以
找到
起始
点的同时
,
还
通过
计数“\ n”
来
重新
编码行号
,并通过计数字符来
文件中的位移和行号记录
在单独的寄存器中。这些匹配的候选者与它们各自的上下文信息一起封装,以形
成要由下一阶段处理的任务,用于精确匹配的REMU这些任务基本上包含匹配候选
项的位置,以便REMU知道从哪里重新播放数据流。这在两个方面有利于REMU的
性能:一方面,这些任务彼此独立,因此可以在REMU中并行执行而不改变搜索结
果;另一方面,每个REMU只需要检查输入流的一小部分,并且可以快速拒绝/接受
可能的匹配。
由于任务生成仅仅是一个字符的比较和计数器更新,因此它可以轻松地扩展以
匹配传入流的带宽请注意,当文件(即,表、日志文件)和结果具有特殊模式,
在最坏情况下,所有相关任务都可以分配给一个REMU为了最大限度地减少输入文
件的性能影响,我们将随机性的调度策略,通过洗牌的任务在一个时钟周期内产
生的调度到REMU。
2.4 Regex匹配单位
正则表达式处理通常包括两个步骤:编译和匹配。编译过程是将正则表达式解释
为可以在计算机上执行的代码,匹配过程是对输入流执行这样的代码我们只将匹
配过程移植到SSD中的硬件上,因为每次查询只需要一次编译过程
我们使用Thompson [53]和Cox [9]中描述的类似方法来生成代码, 编译器。此外,我
们优化了匹配候选查找器的编译过程,这将在3.1节中详细讨论。虽然这些代码可以直
接在计算机上执行,但是需要特殊的硬件和针对硬件优化的指令集, 在存储器中实
现匹配过程。由于FPGA支持并行计算的自然,我们提出了一个新的指令集,能够处理
更复杂的匹配逻辑在一个指令相比,传统的形式。 如表1所示,每条指令都由一个操
作和操作数组成。例如,
PPAIR
可以用于可选地匹配单个字符或两个
字符
-例如
,
“P P
A IR a,a”匹配char“a”,而“P P AIR a,b”m匹配字符集“[ ab]”,并且“P P A IR a,A”匹配不
区分大小写的“a”
。
此
功能
非常有用
,