与数据流同步的数据检索电路技术领域
本发明涉及信息处理领域,特别涉及一种与数据流同步的数据检索电路。
背景技术
数据检索是信息处理的常用运算,涉及信息检索、模式识别、信息安全等领域的诸多应
用。数据检索的速度直接关系到这些应用的性能。
现有的数据检索可分为软件检索与硬件检索两大类。软件检索只能在每周期比较一个字
符的基础上进行,其不足是显而易见的。与软件检索相比,硬件检索可以实现多个字符的并
行比较,使检索过程与数据流同步成为可能。其中,以自动机理论为基础的硬件检索技术,
由于其针对的是流的串行处理,所以基于该技术的数据检索电路不仅结构复杂,而且并行度
不高,检索速度受到明显的限制。为了提高检索速度,现有技术提供了一种字符串检索电路。
具体地,该字符串检索电路基于流水线技术,每一周期可以对已输入电路的n个字节与预先
存于字典的样本进行一轮并行比较,但需要用到前一轮的比较结果,而对于m个字节的样本,
每一轮所需保存的中间结果就有m个。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
众所周知,流水线技术本质上遵循的仍然是数据流的串行处理的程序逻辑,只是将流水
线上位置靠后的指令提前执行从而达到一种并行处理的效果而已。为了实现这种“并行”处
理,普遍采用预测技术。对于具有N道指令的流水线,其每周期可能的结果数为2N,然后第
K道指令需要从2(K-1)个预测中选择正确的预测。这极大地带来了电路的复杂性。
发明内容
考虑到上述方面,本发明想要推出一种与数据流同步的数据检索电路,当待检索数据流
过时,仅仅根据当前流过电路的数据与样本数据的并行比较得出比较结果,这种比较是与数
据的传输同步的,且完全不需要依赖历史数据。基于此,本发明提供一种与数据流同步的数
据检索电路,所述技术方案如下:
一种与数据流同步的数据检索电路,所述电路包括:
移位寄存器,用于在时钟信号作用下,每个时钟周期接收输入数据流中的一个数据单元,
同时将前一个时钟周期存放的数据移动一个数据单元;
样本寄存器,用于预先设置样本数据,所述样本数据包括若干数据单元;
模2加运算电路,用于将所述移位寄存器中的数据和所述样本寄存器中的数据进行模2
加运算;
提取指示寄存器,用于指示所述模2加运算的运算结果中的有效位部分;
结果提取与判决电路,用于提取所述模2加运算的运算结果中的有效位部分;并根据所
述有效位部分判决是否检索到与所述样本数据一致的数据;若判决为检索到与所述样本数据
一致的数据,则产生匹配信号。
其中,所述数据单元的宽度大小为1、8或16位。
其中,所述移位寄存器与所述样本寄存器长度相同;而所述样本数据的长度小于或者等
于所述样本寄存器的长度。
其中,所述模2加运算电路具体用于,
将所述移位寄存器中的数据和所述样本寄存器中相对应的数据单元分别进行模2加运
算;将所述移位寄存器中的数据和所述样本寄存器中相对应的第i个数据单元进行模2加运
算为,
其中,Bi为所述移位寄存器中数据的第i个数据单元,Si为所述样本寄存器中第i个数据
单元,n为所述数据单元的宽度,bij与sij分别为所述Bi与所述Si中第j个比特;Mi为将所述
移位寄存器中的数据和所述样本寄存器中相对应的第i个数据单元进行模2加运算的运算结
果,Mi具体为一个比特的布尔数据。
其中,所述提取指示寄存器具体用于,
预先设置指示所述模2加运算的运算结果的有效部分的指示数据;所述指示数据为,
其中,所述样本数据的长度为m+1,所述移位寄存器的长度为n+1,且m≤n;fi为所述
指示数据的第i个比特数据。
其中,所述结果提取与判决电路具体用于,
将所述模2加运算的运算结果和所述指示数据中相对应位的数据分别进行与运算,提取
出所述模2加运算的运算结果中的有效位部分;所述将所述模2加运算的运算结果和所述指
示数据中相对应的第i位数据进行与运算为,
Ci=Mifi
将所述与运算的运算结果中每一位数据进行或非计算,根据所述或非计算的运算结果判
断是否检索到与所述样本数据一致的数据;所述或非计算为,
其中,Mi为将所述移位寄存器中的数据和所述样本寄存器中相对应的第i个数据单元进
行模2加运算的运算结果;Ci为将所述模2加运算的运算结果和所述指示数据中相对应的第
i位数据进行与运算的运算结果;C0、C1、…、Cm、Cm+1、…、Cn分别为所述与运算的运算
结果中第0、1、…、m、m+1、…、n位数据;o为所述或非计算的运算结果;
当o=1时,判断为检索到与所述样本数据一致的数据,产生匹配信号;
当o=0时,判断为未检索到与所述样本数据一致的数据,产生不匹配信号。
其中,所述电路还包括计数器与结果缓存电路,
所述计数器用于,对已输入所述移位寄存器的数据单元的个数进行计数,
相应地,所述结果缓存电路用于,当所述结果提取与判决电路产生匹配信号时,缓存所
述计数器的当前计数值。
其中,所述电路还包括串并转换电路,
所述串并转换电路用于,当所述输入数据流为串行数据流而所述数据单元的宽度为8位
或者16位时,将所述串行数据流转变为与所述数据单元的宽度一致的并行数据流;并将所述
并行数据流送入所述移位寄存器。
其中,所述电路还包括时钟微调电路,
所述时钟微调电路用于,在保存所述计数器的当前计数值的期间维持所述时钟信号状态
不变。
本发明实施例提供的技术方案带来的有益效果是:通过相对简洁的电路,即可从数据流
中检索样本长度不超过设计值的数据,且数据的输入、检索和输出同步进行,即检索与数据
读取或传输同步,造价比较低廉,节约成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附
图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中提供的一种与数据流同步的数据检索电路的示意图;
图2是本发明实施例2中提供的一种与数据流同步的数据检索电路的示意图;
图3是本发明实施例2中提供的一种与数据流同步的数据检索电路的另一示意图;
图4是本发明实施例2中提供的当输入数据为8位字节并行数据时的移位与比较过程的
示意图;
图5是本发明实施例3中提供的一种与数据流同步的数据检索电路的示意图;
图6是本发明实施例4中提供的一种与数据流同步的数据检索电路的示意图;
图7是本发明实施例4中提供的时钟微调电路的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进
一步地详细描述。
实施例1
参见图1,本发明实施例1提供了一种与数据流同步的数据检索电路,该电路包括:移
位寄存器101、样本寄存器102、模2加运算电路103、提取指示寄存器104和结果提取与判
决电路105。
其中,移位寄存器101用于在时钟信号作用下,每个时钟周期接收输入的数据流中的一
个数据单元,同时将前一个时钟周期存放的数据逐位移动一个数据单元。
其中,样本寄存器102用于预先设置样本数据;该样本数据包括若干数据单元。
其中,模2加运算电路103用于将移位寄存器101的数据和样本寄存器102中的数据进
行模2加运算。
其中,提取指示寄存器104,用于指示模2加运算的运算结果中的有效位部分。
其中,结果提取与判决电路105用于提取模2加运算的运算结果中的有效部分,并根据
该有效位部分判决是否检索到与样本数据一致的数据;若判决为检索到与样本数据一致的数
据,则产生匹配信号。
本发明实施例提供的技术方案带来的有益效果是:通过相对简洁的电路,即可从数据流
中检索样本长度不超过设计值的数据,且数据的输入、检索和输出同步进行,即检索与数据
读取或传输同步,造价比较低廉,节约成本。由于电路简洁,其运算速度亦可能快于采用现
有技术的电路。
实施例2
参见图2~图3,本发明实施例2提供了一种与数据流同步的数据检索电路,该电路包括:
移位寄存器201、样本寄存器202、模2加运算电路203、提取指示寄存器204和结果提取与
判决电路205,以及结果缓存电路206、计数器207。
其中,移位寄存器201用于在所述时钟信号作用下,每个时钟周期接收输入的数据流中
的一个数据单元,同时将前一个时钟周期存放的数据逐位移动一个数据单元。
其中,样本寄存器202用于预先设置样本数据;该样本数据包括若干数据单元。
其中,模2加运算电路203用于将移位寄存器201的数据和样本寄存器202中的数据进
行模2加运算。
其中,提取指示寄存器204用于指示模2加运算的运算结果中的有效位部分。
其中,结果提取与判决电路205用于提取模2加运算的运算结果中的有效部分,并根据
该有效位部分判决是否检索到与样本数据一致的数据;若判决为检索到与样本数据一致的数
据,则产生匹配信号。
以及,当需要获取检索到的匹配数据在数据流中的位置时,该与数据流同步的数据检索
电路还包括结果缓存电路206和计数器207。
其中,计数器207用于在所述时钟信号作用下,对已输入移位寄存器201中的数据单元
的个数进行计数。
相应地,结果缓存电路206用于当结果提取与判决电路205产生匹配信号时,保存计数
器207的当前计数值并置位结果缓存不为空的通知信号。假设该缓存不为空的通知信号为oe。
具体地,移位寄存器201的输入端接数据流和外部时钟。移位寄存器201用于在时钟信
号作用下,存放当前时钟周期数据流中输入的数据;且在时钟信号的每个时钟周期输入数据
流的一个数据单元,同时将原有的数据逐位移动一个数据单元,以更新每个时钟周期移位寄
存器中的的数据。
具体地,本发明实施例2中描述的数据单元的宽度大小为1、8或16位。数据单元的宽
度大小由需检索数据的类型决定。例如,假设数据单元的宽度为n(n>0)比特;当待检索数据
为二进制数据时,n=1;当待检索数据为ASCII码字符流或者256色像素流时,n=8;当待检
索数据为16位UNICODE字符流或者16位色像素流时,n=16。
其中,该输入的数据流为传输线路中流过移位寄存器201的数据流;或者,该输入的数
据流为数据传输中或者输入的终点流入移位寄存器201的数据流。值得说明的是,若该输入
的数据流为数据传输中或者输入的终点流入移位寄存器201的数据流,则意味着数据单元移
出移位寄存器201后即被丢弃。
进一步地,移位寄存器201与样本寄存器202长度相同,即所具有的寄存单元数量相同。
其中,每一个寄存单元对应存储一个数据单元。
进一步地,假设移位寄存器201与样本寄存器202长度为n+1,设样本数据的长度为m+1
(m≤n)个数据单元,设样本数据右起第i个数据单元为Vi。具体地,假设样本数据为VmVm-1…
V1V0,样本寄存器202从最左面的寄存单元开始存储,如图3所示,依次为V0,V1,……,
Vm。其右面剩余的寄存单元无需理会。例如,当样本数据为字符串“ABCD”时,则有V0=
“D”,V1=“C”,V2=“B”,V3=“A”,“D”存入样本寄存器202最左面的寄存单元,往右
依次为“C”、“B”、“A”,其余的寄存单元无需改变。
其中,模2加运算以数据单元为单位进行。具体地,假设移位寄存器201中第i个数据
单元为Bi,样本寄存器202中第i个数据单元为Si,数据单元宽度为n,bij与sij分别为Bi与
Si第j比特,以Bi与Si为操作数的模2加运算定义为,
其中,Mi即为移位寄存器201中的第i个数据单元和样本寄存器202中相对应的第i个
数据单元进行模2加运算的运算结果。根据上述式(1)可以得知,无论数据单元的宽度多大,
其相对应的两个数据单元进行模2加运算的运算结果是一个比特的布尔数据,用于表示两个
操作数Bi与Si相等(Mi=0)或是不相等(Mi=1)。
图4以2个相邻单元为例,说明了输入为并行的8位字节数据时的移位与比较概念。其
中,移位寄存器201的第i个数据单元Bi在时钟周期信号有效时,将其值的各比特位(b0、
b1、b2、b3、b4、b5、b6、b7)赋给移位寄存器201的下一个数据单元Bi+1的各对应位,并接
受移位寄存器201上一数据单元Bi-1移交给它的值。而当Bi与Si相等时Mi为0,否则为1。
设移位寄存器201含有n+1个数据单元,则模2加运算电路203有n+1位长度的运算结
果。显然,当样本数据的长度小于n+1时,该模2加运算的运算结果中存在无效部分。那么,
需要提取该运算结果中的有效位部分。其中,该有效位部分指模2加运算的运算结果中与样
本数据的每一个数据单元对应的所有比特。进一步,提取有效结果的运算,其原理如下:
首先,提取指示寄存器204内预先设置指示模2加运算的运算结果的有效部分的指示数
据。设提取指示寄存器204中指示数据的第i位为fi。对应于样本寄存器202中第i个数据单
元Si;设样本数据具有m+1个数据单元长度的数据并预置于样本寄存器202的第0至m号寄
存单元,即S0至Sm,则fi的设置由下式规定:
其中,当0≤i≤m时,fi=1,表示模2加运算的运算结果中与样本数据的每一位数据单元
对应的数据单元是有效的。当m+1≤i≤n时,fi=0,表示除了与样本数据的每一位数据单元
对应的数据单元外的模2加运算的运算结果的其他部分是无效的。
进一步地,结果提取与判决运算电路205具体用于,将模2加运算的运算结果和指示数
据中相对应位的数据分别进行与运算,提取出模2加运算的运算结果中的有效位部分;将与
运算的运算结果中每一位数据进行或非计算,根据或非计算的运算结果判断是否检索到与样
本数据一致的数据;若检索到与样本数据一致的数据,产生匹配信号;若未检索到与样本数
据一致的数据,产生不匹配信号。
首先,记与运算的运算结果的第i位为Ci(i=0,1,…,n)。那么,将模2加运算的运
算结果和指示数据中相对应的第i位数据进行与运算定义为,
C i = M i f i = ( B i ⊕ S i ) f i ]]>
显然,当i=m+1,m+2,…,n时,Ci为0。
其次,设C0、C1、…、Cm、Cm+1、…、Cn分别为所述与运算的运算结果中第0、1、…、
m、m+1、…、n位数据;o为所述或非计算的运算结果;则o定义为,
其中,当o=1时,判断为检索到与所述样本数据一致的数据,产生匹配信号;当o=0时,
判断为未检索到与所述样本数据一致的数据,产生不匹配信号。
可见,判决结果仅由与样本对应的前一部分决定,且仅当所有的Ci均为0时,即所有的
Bi与Si(i<=m)两两相等时,判决结果o才为1。
其中,结果提取与判决运算电路205的输入端接提取指示寄存器204与模2加运算电路
203。
其中,计数器207的输入端接外部时钟,用于在时钟信号作用下,对已输入移位寄存器
201的数据单元的个数进行计数,以获取匹配数据在输入的数据流中的位置。
计数器207的另一个输入端接结果提取与判决电路205,进一步地,当且仅当检索成功,
即o=1时,计数器207的计数值被存储到结果缓存电路206中,同时表示结果缓存不为空的
通知信号被置位。假设该表示结果缓存不为空的通知信号为oe。
进一步地,结果缓存电路206允许存入多个检索结果(计数值),并允许外部电路,例如
处理器,在任何时候读取其中保存的且未读取的检索结果。
值得说明的是,若需存储到结果缓存电路206中的计数值直接表示需检索数据在数据流
中的起始位置,计数器207的初始值应为样本数据长度的负数,而不是零。当然,仍然可以
采用无符号的循环计数功能来实现这一要求。例如,对于16比特计数器,假定样本数据的长
度为8,则计数器207的初值应置为0x10000–0x8=0xfff8。此外,为避免产生错误的输出,
可在电路初始化时,将样本数据的反码植入移位寄存器201。
值得说明的是,通过上述对本发明提供的技术方案的描述,可以推知对该技术方案所作
出的改进情况。例如,从数据流中检索出多个样本数据之一的电路,该电路将多个本发明提
供的电路并联起来,让数据流同时通过这些电路。又如,从数据库的某个字段中检索样本数
据的电路,该电路对本发明提供的电路的工作流程作如下改变:第一个改变是,当一个被检
索字符串全部进入移位寄存器时才进行一次比较,而且也只进行一次比较;第二个可能的改
变是,无论被检索数据是什么类型,移位寄存器与样本寄存器的数据单元的宽度都等于1,
即模2加运算永远按比特进行。
本发明实施例提供的技术方案带来的有益效果是:通过相对简洁的电路,即可从数据流
中检索样本长度不超过设计值的数据,且数据的输入、检索和输出同步进行,即检索与数据
读取或传输同步,造价比较低廉,节约成本。由于电路简洁,其运算速度亦可能快于采用现
有技术的电路。
实施例3
参见图5,本发明实施例3提供了一种与数据流同步的数据检索电路,该电路包括:移
位寄存器301、样本寄存器302、模2加运算电路303、提取指示寄存器304、结果提取与判
决电路305、结果缓存电路306、计数器307和串并转换电路308。
其中,移位寄存器301、样本寄存器302、模2加运算电路303、提取指示寄存器304、
结果提取与判决电路305、结果缓存电路306和计数器307,与本发明实施例2中描述的移位
寄存器201、样本寄存器202、模2加运算电路203、提取指示寄存器204、结果提取与判决
电路205、结果缓存电路206和计数器207相同,在此不再详述。
其中,串并转换电路308的输入端接输入的数据流,用于当输入的数据流为串行数据流
而数据单元的宽度为8位或者16位时,将串行数据流转变为与数据单元的宽度一致的并行数
据流;并将该并行数据流送入移位寄存器301。
具体地,串并转换电路308以一种较为简单的方式满足数据单元宽度大于1的同时通过
串行方式进行传输的数据流的在线检索的需求,例如,通过网络传输的文本文件的在线检索。
进一步地,串并转换电路308的输入端还用于产生移位寄存器301及计数器302的时钟信号,
即图5所示时钟2信号。
本发明实施例提供的技术方案带来的有益效果是:通过相对简洁的电路,即可从数据流
中检索样本长度不超过设计值的数据,且数据的输入、检索和输出同步进行,即检索与数据
读取或传输同步,造价比较低廉,节约成本。由于电路简洁,其运算速度亦可能快于采用现
有技术的电路。
实施例4
参见图6~图7,本发明实施例4提供了一种与数据流同步的数据检索电路,该电路包括:
移位寄存器401、样本寄存器402、模2加运算电路403、提取指示寄存器404、结果提取与
判决电路405、结果缓存电路406、计数器407和时钟微调电路408。
其中,移位寄存器401、样本寄存器402、模2加运算电路403、提取指示寄存器404、
结果提取与判决电路405、结果缓存电路406和计数器407,与本发明实施例2中描述的移位
寄存器201、样本寄存器202、模2加运算电路203、提取指示寄存器204、结果提取与判决
电路205、结果缓存电路206和计数器207相同,在此不再详述。
其中,时钟微调电路408用于保证在计数器407保存计数值到结果缓存电路406期间维
持计数器值不变。图7是时钟微调电路408及其相关信号时序关系的示意图。如图7所示,
其中,当结果提取与判决电路405的输出信号o变为高电平时(表示检索到匹配数据),计数
器407与结果缓存电路406之间的写控制信号WR由低电平变为高电平,执行将计数器407
保存到结果缓存寄存器406的操作;WR维持高电平足够的时间后自动回归低电平。在WR
维持高电平期间,时钟3信号亦将维持高电平。这样,时钟信号的占空比得到了微调,可为
缓存结果挤出时间。当结果提取与判决电路405的输出信号o为低电平(表当前周期未检索
到匹配数据)或是结果缓存操作在时钟1信号的下降沿到来前已完成时,时钟3信号与时钟
1完全相同。
需要强调的是,时钟微调电路408仅仅对时钟信号的占空比进行微调,并不改变时钟周
期。
本发明实施例提供的技术方案带来的有益效果是:通过相对简洁的电路,即可从数据流
中检索样本长度不超过设计值的数据,且数据的输入、检索和输出同步进行,即检索与数据
读取或传输同步,造价比较低廉,节约成本。由于电路简洁,其运算速度亦可能快于采用现
有技术的电路。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,
也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之
内,所作的任何组合、子组合、缩减、修改、等同替换、改进等,均应包含在本发明的保护
范围之内。