用于检查和操作数据的存储器引擎的制作方法

文档序号:6750199阅读:248来源:国知局
专利名称:用于检查和操作数据的存储器引擎的制作方法
技术领域
本发明一般涉及用于检查和操作数据的存储器引擎,更具体地说,本发明涉及不仅用于快速检索符号(字符或其类似物)串形式的数据的快速检索,还根据须要用于在字符串内选择地插入和删除数据。
背景技术
检索由符号构成的缓冲器或其它存储装置,以便找到和给定的或预定的字符串匹配的字符串,是在许多应用中的一个基本的操作,例如但不限于数据库、遗传信息的处理、数据压缩以及计算机语言的处理。通过在字符串中插入新的序列或从字符串中删除序列来修改字符串,也是这些范围的基本操作,并且由这些字符串操作占据的时间直接地影响主程序的执行时间。
当进行串行计算时,即进行匹配操作时,为了在包含M个符号的缓冲器中找到存在的所有N个符号的字符串,所需的最大的步N*M。当须要在缓冲器内插入字符时,平均地说,在缓冲器中一半的符号必须向右或向左移动一个单元,以便为新的单元腾出位置。在这种情况下,平均须要N/2步。
提出了一系列用于改善这些操作的算法,它们基于若干技术,其中包括散列法,或者树数据结构。当有关的字符串是固定长度的字时,使用散列法。在这种情况下,每个字和一个当所述字被存储在字库中时被用作索引的唯一的数相关。这种方法的缺点是,其只有当所述信息是静止信息时才好用,并且在处理期间不改变位置。此外,产生所述的数是一种花费较高的操作,有时若干个字可以和同一个数相关,因而须要附加的操作查找要找的字。也可以利用后缀树,后缀树是一种树结构,其中存储在缓冲器中的所有的子字符串。当想要确定是否一个给定的字符串位于缓冲器中时,只需要下树,每次下降查找的字符串的一个字符,直到所述字符串被找到或者找不到。在每种情况下,如果字符串含有M个符号,则最多须要M步来确定是否该字符串位于长度为L的缓冲器中。虽然这种检索方法速度快,但是要建立一个后缀树须要花费许多计算。
内容可寻址的存储器,或者CAM,是一种利用一次存储器访问查找给定符号或字的位置的并行方案。这种方法对于固定长度的字好用,但是不容易扩展到可变长度的符号串。当在缓冲器中并行地进行检索时,即当同时进行M个比较时,则步数被减少到N。已经提出了具有并行比较器和用于存储和每个给定符号的比较结果的标记器的缓冲器,用于加速字符串的检索。例如见Almy等人的美国专利4575818;Mayer的美国专利5319762;Eskandare-Gharnin等人的美国专利5602764;或者Satoh等人的美国专利5448733。这些已知的装置一般使比较器与用于存储最后进行的比较结果的一位标记器一起和缓冲器的每个单元关联。所述比较器、存储单元和标记器用这种方式操作,使得在缓冲器中的要被定位的字符串中的符号向缓冲器的所有的比较器传播。然后,这些比较器比较给定的符号和在其相关的存储单元中存储的符号。比较结果存储在和所述比较器以及存储单元相关的标志器中。
作为移位寄存器实现的缓冲器能够使其内容和时钟信号同步地并行地向左或向右移动。在这种情况下,缓冲器的整个内容只需要一步便可移动。不过,这些缓冲器,不仅提供其要被移动的内容的部分,而且提供全部的移动操作。此外,每个缓冲器单元集成单独的比较器,这趋于增加作为一个整体的装置的尺寸和复杂性,因而导致成本和使用的能量的增加。
因此,鉴于上述问题,本发明试图利用一种能够非常快地进行字符串检索、插入和删除的存储装置,其中使用被称为Connex Memory(下文称为CM)的新型存储电路。

发明内容
本发明的目的在于使得能够对数据进行快速的字符串检索、插入和删除操作。
本发明的另一个目的在于使得能够对包括数据字符的字符串进行快速的字符串检索、插入和删除操作。
本发明的另一个目的在于使得能够对包括数据字符的字符串快速地进行字符串检索、插入和删除操作,其中任何给定的数据字符的检查和操作在一个时钟周期内完成。
本发明的另一个目的在于使得能够检查在一个数据字符串内的可变尺寸的数据字段。
本发明的另一个目的在于使得能够标记在一个数据字符串内的可变尺寸的数据字段。
本发明的另一个目的在于利用静态的或动态的存储单元暂时存储和操作数据字符串。
本发明的另一个目的在于沿正向或反向的任何方向检查存储在存储单元中的数据字符串。
按照本发明的一个实施例,一个存储器引擎组合相联的存储器和随机存取存储器,用于使得能够对数据快速地进行字符串检索、插入和删除操作,并且包括用于暂时存储作为数据字符串的数据的存储装置。一个控制器被用于选择地对所述存储装置输出多个指令中的一个,并接收从其反馈的数据,所述存储装置按照由所述控制器输出的指令检查串中的数据字符。还利用一个时钟装置向所述存储装置和所述控制器输出由每秒内一个预定数量的时钟周期构成的时钟信号,所述存储装置在一个时钟周期内检查并选择地操作一个数据字符。
通过整体地考虑说明书、权利要求书和附图,可以更加清楚地理解本发明的这些和其它的方面及其优选实施例。


图1是表示按照本发明的一个实施例的存储器引擎的一般结构的方块图,其中包括外部控制器和时钟元件;图2是表示和不同的总线相连的图1的存储器引擎的方块图,所述的总线使得能够在存储器引擎的构成元件之间交换信息。
图3是表示图1的存储器引擎的基本操作的一个实施例的流程图;图4是表示图1的存储器引擎的基本操作的另一个实施例的流程图;图5是表示由图1的存储器引擎处理一个“c查找(find)”指令的流程图;图6是表示由图1的存储器引擎处理一个“读(read)”指令的流程图;图7是表示由图1的存储器引擎处理一个“插入(insert)”指令的流程图;图8是表示由图1的存储器引擎处理一个“删除(delete)”指令的流程图;图9是表示由图1的存储器引擎处理一个“下一个(next)”指令的流程图;图10是表示由图1的存储器引擎处理一个“跳跃”指令的流程图;图11是一个方块图,表示用于连接存储器引擎的存储装置和其环境所需的以及用于把几个存储装置连接在一起所需的输入和输出信号;图12是表示存储装置的内部结构的一个实施例的一个方块图,其中使得两维的静态或动态存储单元的阵列成为可以通过两个代码转换器电路访问的;图13是用于连接动态存储单元和其环境所需的输入和输出信号的方块图;图14是表示按照本发明的一个实施例的存储单元的内部体系结构的电路图,所述存储单元含有用于符号的存储器及其相关的标志器,通过所述存储器,可以使符号及其相关的标记被存储或读出,或者和传播的符号相比较。
图15表示按照本发明的实施例的图12所示的代码转换器电路的内部体系结构的电路图,通过所示的电路,可以访问两维阵列的存储单元,并且其使得能够产生第一或最后被标记的单元的地址;图16是表示作为随机存取存储器(RAM)和RAM控制器的组合的缓冲存储器的内容的电路图;图17表示图16所示的RAM控制器的内部结构的电路图。
具体实施例方式
CM是一种对字串的物理支持,每个字从一个有限的存储符号组中取值,每个字借助于“设置”一个附加的位来增大,借以用两个状态之一标记所述的字被标记的或未被标记的。术语“存储符号”在这里解释为指一个连续比特的固定长度的集合,其长度和应用有关,并且不被事先地设置。
本发明的结构允许在一个时钟周期内执行所有的CM指令,具有大约为在当前高速缓存技术中遇到的延迟的两倍的延迟。这里所述的结构是一种单片电路结构,其也可以被复制在更复杂的电路中。图1表示按照本发明的一个实施例的存储器引擎205的一般的体系结构,以及其和外部控制器255、同步时钟电路256的操作关系。容易理解,外部控制器255和存储器引擎的操作通过使用从时钟电路256发出的公共时钟信号协调。此外,本发明设想,外部控制器255可以具有任何数量的专用电路配置,而不脱离本发明的较宽的方面,只要外部控制器255能够向存储器引擎205发送指令并能够接收来自存储器引擎205的指令即可。
如图2所示,CM206和作为一个缓冲器池组织的行存储器随机访问装置200相连,每个缓冲器具有和CM206相等的尺寸,并在存储器引擎205的控制下,下文将存储器引擎称为Connex引擎(CE)。这些缓冲器也被称为线缓冲器,其用途是使得能够对比可以在CM206内容纳的较长的字符串上进行检索、插入和删除操作,并且提供较低的实施成本和较低的功率消耗,如在后面详细说明的。
图3表示CE205的总的应用程序,从块302开始,利用控制器255把事先选择要进行检查的字符串装入相关的行存储器206中。所述字符串由数据符号的集合构成,为了便于说明,所述数据符号被装入行存储器200中的一个或几个缓冲器中,直到被完全地存储在其中。用这种方式,在行存储器200中的每个缓冲器含有字符串的不同的部分,每个部分具有和CM206的尺寸相等的尺寸,如前所述。
如图3的块304所示,CE205通过数据RAM总线100把要检查的第一缓冲器的内容从行存储器200装入CM206中。然后,CM206按照从控制器255输入的指令进行字符串的装入的部分的所需的字符串操作或检查,如块306所示。然后,CM206在块308确定是否应当在字符串的被检查的部分中设置一个或几个标记,以便在块307选择地设置这种标记,并在块309复位所述的标记。容易理解,确定在被移动到CM206中的字符串的给定部分内是否应当设置一个或几个数据标记和由控制器255输入的特定指令有关,这在后面详细说明。
在检查CM206中的字符串的部分,并且如果须要,在其中设置一个或几个标记之后,CE205把CM206的内容向回存储到行存储器200的第一缓冲器中,装入第二缓冲器的内容,并进行相同的操作。CE205继续把缓冲器的图案装入在CM206中,在CM206中进行字符串处理,并把CM206的内容向回存储到缓冲器中,直到整个字符串被处理完毕。因为在被检索的符号的字符串内存在的局部性的级别,被装入CM206中的缓冲器的数量随着检索操作的数量的进展被快速减少,因而很快地把操作的数量限制于少量的缓冲器。
因此,本发明的一个重要方面在于,存储在行存储器200中的整个字符串不必响应由控制器255发出的指令被重复地检查,因为设置的标记的存在(或者不存在)使得能够使某些缓冲器免于后续的查看,如下所述。例如,如果由控制器255发出的指令命令对给定的一组数据元素进行检索(如后详述),则CM206首先检查行存储器200中的每个缓冲器内的每个字符串,在其检索第一个数据元素的合适的位置设置标记。此时在行存储器200中的缓冲器的随后的检查将被限制于那些包括设置的标记的缓冲器,而排除没有设置标记的那些。用这种方式,本发明的CM206不需要重复地检索那些不可能包括要被检索的数据元素的缓冲器,从而大大的且逐渐增多地消除大量数据的重复检查,因而加快了响应时间。
本发明的另一个重要方面在于,CM206能够在一个时钟周期内并行地进行若干个操作。因此,就图3而言,特别是块306,307,308和309,CM206能够在一个时钟周期内并行地处理这些块。因而容易理解,在图3中包括的各个块以及本发明的其它的方块图,都不得解释为是按照其时间顺序执行的,而是CM206能够在一个时钟周期内并行地处理许多块,如上所述。
下面结合由控制器255发出的特定指令更加详细地说明CM206的操作和CE205的操作。
CM206通过一般由控制器255发送的指令和数据进行操作。当指令要求一个数据操作符时,例如“查找(find)”指令,其确定给定符号、或在字符中的数据元素、或符号、当前在CM206中存储的字符串所在的所有位置,所述指令和符号便被同时送入CM206中。CM206支持若干种的指令,所述指令主要被分成两类正向指令和反向指令。每类又包括三种指令用于设置和复位和单元相关的标记的指令,用于访问在设置有标记的单元中存储的字的指令,以及用于修改在设置有标记的单元中存储的字的指令。虽然本发明的设计支持和每个存储字相关的一位标记,但是,不脱离本发明的较宽的方面,也可以使用几个位来编码每个字的状态。
首先说明属于正向指令类的指令。反向类的指令的行为方式是正向指令的镜像,如后所述。在以下的说明中,符号这个术语表示由位构成的任何逻辑块。对于某些应用程序,8位字节可能是最佳的实现。在其它的应用中,例如基因型字符串的生物学处理,符号可能是4位的实体。
正向指令对于字符串的检索和插入操作,输入字符串和指令一起每次一个符号(例如字符)地被输入到CM206,当所述指令是检索指令时,每个符号便同时和在CM206中当前存储的所有符号比较。可以进行两种比较,即有条件的比较和无条件的比较。字符串的第一个符号被无条件地检索,而随后的符号被有条件地检索,其条件是,其前面一个符号在CM206中已被找到。
当所述操作是一个插入操作时,在CM206中在插入点右侧的符号被向右移动一个位置,把新的符号在插入点插入。在本发明的一个实施例中,插入点是设置有标记的第一个符号的位置。
本发明的另一个重要目的在于,使检索和插入操作两者只在一个时钟周期内进行,这是由于CE205系统的体系结构的高效率所致,如上所述。
关于字符串的删除操作,连续的符号被从CM206中的删除点读出,并且在所述点的右侧的所有符号被向左移动一个位置。这里同样,所述删除点是具有设置的标记的第一个或最后一个存储单元的位置。这个操作的读出和移动部分被同时实现并且只用一个时钟周期。
下面说明实现上述操作的指令。
查找和条件查找指令是访问指令。如图3和图4的流程图所示,查找指令可以通过控制器255和符号一起输入到CM206中,CM206关联地比较所述符号和在其M存储单元包含的所有符号。这个指令的结果是,在其内容和给定符号匹配的单元之后的所有单元的标记被设置。所有的其它标记被复位。图3的块302-314概括地说明了这个操作。例如,假定本发明借助于对符号加上括号表示该符号的标记被设置,并进一步假定字符串“RON AND ROBERT”当前被存储在CM206中。对CM206发出“查找(R)”指令的结果使得其内容改变为“R[O]NAND R[O]BERT”。两个符号O的标记被设置是因为它们跟随着包含“R”的单元,R是要被查找的符号,如图3的块308所示。
用于进行“条件查找(condition find)”的条件查找指令的操作和查找指令的相似之处在于,符号也和指令一起输入到CM206中,并且CM206进行这个符号的相关的检索,不过在这种情况下,只有具有以前设置的标记的行存储器200的单元或缓冲器在所述标比较中被涉及,如图5块322所示。其结果是,在发生匹配的单元后面的单元的标记被设置。所有其它的标记被复位。使用和上述相同的例子,并假定两个“O”符号仍然设置有标记,则指令“条件查找(O)”将限于只对有标记的单元进行相关的比较。因为二者都含有“O”,故两个比较是成功的,并且设置含有O的单元的右方的单元的标记“ RO[N]AND RO[B]ERT”。假定现在执行cfind(B),则只有第二个被标记的单元得到成功的比较,因而E符号的标记被设置“RON ANDROB[E]RT”。这个处理继续进行,直到所有的符号或数据元素都被检索,从而向控制器255输出成功的(或不成功的)匹配,如图5的方块324-326所示。
如上所述,容易理解,图3说明本发明的基本功能,其一般可应用于所有的输入指令。因此,例如结合块302说明的“字符串”可以包含一个或几个数据元素,和发出的指令的性质以及被操作或检查的特定的数据无关。此外,虽然图3假定装入的字符串大于可以在CM206中容纳的字符串,因而须要分片从行存储器200移动到CM206进行检查,但是并不总是这种情况。如图4所示,另一种方法包括把其尺寸能够被CM206容纳的那些字符串直接装入CM206中,如块301所示。装入CM206中的字符串的检查将按照特定的指令在块303中进行,同时块305将合适地设置和复位标记。
容易理解,在CM206能够容纳要被检查的数据情况下,通过选择地旁路CE205和行存储器200,可以相应地节省处理时间和消耗的能量。
另一个被提出的指令是读-正向指令。读-正向指令使得CM206返回在设置有标记的第一个即最左边的一个单元中存储的符号。在优选的方案中,按照公认的惯例,CM206的最左边的符号地址是0,最右边的地址是M-1,假定存储容量是M个符号。
一进行读操作,刚刚读出的单元的标记便被复位,并且和刚刚读出的单元相邻的单元的标记被设置。再次假定CM含有“RO[N]ANDRO[B]ERT”,读-正向指令的结果是,由CM输出符号“N”,并且最左边的标记改变为“RO N[] AND RO[B]ERT”。空格符号现在被标记。图6表示作为块330的这个处理,当发出读-正向指令时,其操作可被包括在图3的块308中。
另一个被提出的指令是插入指令。插入指令和符号X一起提供给CM206。这个指令只影响CM206的第一个或者最左边的被标记的单元。当符号X被插入时,在第一个被标记的单元的右边的所有单元的内容和状态,包括标记,都被向右移动一个位置,并把符号X存储在第一个被标记的单元的先前的位置。刚刚收到新的符号的单元的标记被复位。作为例子,假如CM206含有“R[O]N AND R[O]B ERT”,则“插入(X)”使得CM206的内容变成“RX[O]N AND R[O]B ERT”。图7作为块332说明了这种处理。
另一个被提出的指令是删除指令。删除指令通过除去存储在第一个被标记的单元中的符号并向左移动该单元的右边的所有单元的内容而操作。假定CM含有“R O[N]AND R O[B]ERT”,则在删除指令生效之后,CM含有“R[]N AND R[O]B ERT”。图8作为块334说明了这种处理。
另一个被提出的指令是next指令。Next指令没有参数,其复位第一个或最左边的一个被标记的单元的标记。用这种方式,当若干个标记被设置时,可以重复地使用这个指令,从而使得能够访问CM206的所有有标记的单元。例如,假定CM206含有“R[O]N AND R[O]BERT”,执行next指令将把CM206的内容改变成“R O N AND R[O]BERT”。图9作为块335说明这个处理。
暂且返回图1,index的输出13具有CM206中的第一个被标记的单元的线性地址。例如,如果CM206的第一个或最左边的一个单元设置有标记,则index返回0。如果被标记的是第二个单元,则index返回1。假定CM206包含字符串“R O[N]AND R O[B]ERT”,并且字符串“RON”被存储在CM206的最左边的单元中,则index返回2,因为符号“N”被存储在CM206的地址2中。
另一个被提出的指令是write-one指令。Write-one指令和符号S一起被提供给CM206,所述符号被写入CM206的第一个或最左边的被标记的单元。这个单元的标记被复位,并且线性地跟随着所述单元的标记被置位。
另一个被提出的指令是write-all指令。该指令和符号S一起被提供给CM206,所述符号在一个时钟周期内被同时写入设置有标记的CM206的所有单元中。这些单元的标记被复位,并且在这些单元后面的单元的标记被置位。
另一个被提出的指令是write指令。该指令和地址A以及符号S一起被提供给CM206,所述符号被存储在CM206的地址A的单元中。该指令类似于在随机存取存储器中的写操作。和地址A的单元相关的标记被复位,并且线性地跟随着的单元的标记被置位。
Read指令和地址A一起被提供给CM206,并使CM206输出其处于地址A的单元的内容。这个指令类似于随机存取存储器的读操作。由这个操作访问的单元的标记不被改变。
另一个被提出的指令是jump指令,该指令被提供给CM206,用于处理在CM206中存储有可变长度的字符串的情况,具有同样的词首和词尾(即以相同序列开始两个字符串,以相同序列结束两个字符串),而具有不同的中间部分,其可以具有不同的长度,此外,如果所有字符串的词首的最后一个符号被标记,则CM206支持被称为jump的操作,其取一个操作符,并且其行为最好通过例子进行说明。
假定CM206在其存储器的不同部分中含有两个字符串“AAA%BB%CCCC”和“AAA%DDD%CCCC”,其中%表示用作即将到来的特定应用的分隔符的唯一符号。此外,假定和在AAA词首后面的%相关的标记已被设置,例如通过执行指令find(A),cfind(A),cfind(A)“AAA[%]BB%CCCC”和“AAA[%]DDD%CCCC”。Jump(s)指令的目的,其中s是一个符号,是要把标记从其当前位置移动到CCCC词尾的开头的未加标记的%符号,然后用s符号替换它们。
例如,在第一次执行指令jump($)之后,在上述例子CM206中的两个字符串将改变为“AAA%[B]B%CCCC”和“AAA%[D]DD%CCCC”。在发出第二个指令jump($)之后,所述字符串成为“AAA%B[B]%CCCC”和“AAA%D[D]D%CCCC”。在第三个指令jump($)之后,所述字符串成为“AAA%BB$CCCC”和“AAA%DD[D]%CCC”。在第四个jump($)之后,为“AAA%BB$CCCC”和“AAA%DDD$CCCC”。因而响应jump指令,CM206执行以下操作所有设置有标记的单元都比较其符号和特定的分隔符号(在上面的例子中是%)。如果发现匹配,则用在指令中的符号s(上面的例子中的$)代替所述特定的分隔符号,并复位该单元的标记。否则,如果未找到匹配项,则复位该单元的标记,并设置相邻的右方的单元的标记,结果,使标记向右移动一位。图10作为块336说明这种处理。
Jump指令在数据库应用中是重要的,此时符号串含有字段识别符或分隔符对以及数据值,其中识别符具有固定的长度,但是含有数据值的字段没有固定的长度。用这种方式,本发明有利地提供一种用于检查字符串内的字段的方法,每个字段包含具有随机的尺寸的数据值,同时标记字符串中的特定数据字段而不管其内容。此外,因为在字符串中的被标记的单元的每次比较都在一个时钟周期内完成,所以可以快速而高效地完成字符串的检查。
本发明的另一个重要的方面在于,jump指令用一个预定的定位符号代替字符串中的分隔符。因此定位符号可用于标记特定数据字段的结尾,而不管其长度,或者可用于标记跟随被搜索的数据字段的数据字段。
如上所述,jump指令使得能够并行地检查在CM206中存储的多个字符串,因此允许并行地识别在每个字符串中的分隔符,其中每个识别、选择地替换,在一个时钟周期内进行。
反向指令至此说明的检索、插入和删除指令总是应用于CM206的第一个标记的单元,并且,当其影响其它单元时,则影响在第一个被标记的单元的右侧的单元。CM206还支持向后或反向查找、插入、删除、下一个和标引操作,其中这些操作应用于CM206的最后被标记的单元。它们的行为是上述的正向查找、插入、删除、下一个和标引操作的镜像。
reverse-find指令是和符号s一起输入到CM206中的指令,其设置含有符号s的单元的左方的单元的标记。所有其它标记被复位。如果CM206含有“JOHN AND JOHNNY”,则reverse-find(N)设置标记如下“JO[H]N[A]ND JO[H][N]NY”。
Reverse-cfind指令是一个反向条件查找指令,其和符号s一起输入到CM206中,并且CM206只相关地检索被标记的单元。所有含有所述符号s的复制品的单元都使其左边相邻单元的标记被置位。所有其它的标记被复位。假定CM206含有“JO[H]N [A]NDJO[H][N]NY”,则Reverse-cfind(H)将标记改变如下“J[O]HN ANDJ[O]HNNY”。
Reverse-insert指令是一个和符号s一起输入到CM206中的指令。最左边的被标记的单元以及其线性右边的所有单元的内容被右移一位,并把符号s存储在最左边的被标记的单元中。该单元的标记不变。例如在“JO[H]N AND JO[H]NNY”中反向插入X得到新的CM206的内容“JO[X]HN AND JO[H][N]NY”。
Reverse-delete是一个通过读出或者除去最左边单元中的符号并使所有左边的单元的内容向右移动一位。最左边被标记的单元的标记被复位,并设置其左边的单元的标记。例如,如果在CM206中含有JO[H]N AND JO[H]NNY”,则Reverse-delete的结果是J[O]N ANDJO[H]NNY”。
Limited-Range指令如上所述,CM206还支持只影响其地址大于能够由两个附加的指令设置的某个数的单元的操作。其操作范围被限制于具有大于所述限制的单元的指令被称为被限制的指令。在这种情况下,检索、插入和删除操作的范围不是CM206中的全部M个字,而是其中的一个较小的部分。在这种情况下,当进行find,cfind,insert,delete操作时,只影响CM206的邻接的块中的单元。单元的这个块在左边被一个特定的地址寄存器限制,该地址寄存器位于CM206的译码部分的地址中,并延伸到最后,即CM206的最右边的单元。
Set-limit是一个用于设置被限制的指令的较低限制地址为第一个或最左边的被标记的单元的地址的指令。例如如果CM206含有字符串“RO[N]AND RO[B]ERT”,则set-limit指令设置限制地址为2,因为最左边被标记的符号是N,在CM206中的地址2。
Set-limit-address是一个和地址A一起输入到CM206的指令,并把这个地址存储在保存限制地址的内存中。
Limited-find,limited-cfind,limited-reverse-find,以及limited-reverse-cfind是被限制的指令,其操作类似于find,cfind,reverse-find和reverse-cfind指令,但是只应用于其地址大于或等于限制地址的单元。
Limited-write-all指令和符号s一起输入到CM206,其操作方式和write-all指令一致。其把符号s写入其地址大于或等于限制地址的所有被标记的单元中。
CM206输出若干个布尔信号,反映其被标记的单元的状态。
1)如果在CM206中至少具有一个被标记的单元,则一个信号被CM206设置为1,否则便设置为0。
2)如果在整个CM206中只具有一个被标记的单元,则一个信号被CM206设置为1,否则便设置为0。
3)如果最后一个条件查找类型的指令(正向、反向或被限制的)未成功(未设置标记),则一个信号被设置为1,并且CM206自动地反向到查找类型的操作,其可能设置一些标记。
4)如果一个或几个具有预定的二进制图案的字符被设置相关的标记,则一个信号被CM206设置为1。这些字符用于表示空的或无效的符号位置,并通过表示必须由外部控制器255寻址的特别条件的操作来设置其标记。
5)一个信号被CE设置为1,用于表示没有缓冲器包含设置有标记的符号,或者表示RAM控制器已经加载CM中的所有缓冲器,并且没有剩下缓冲器要被加载。
Connex引擎如上所述,图2中示出了Connex引擎(CE)205。其是一个用于管理存储在CM206中以及行存储器200的缓冲器中的符号串的电路,行存储器(line memory)200也叫做行(line),其是由随机存取存储器实现的。每个行的容量等于CM206的容量,并含有(N+1)位的M个字。在外部实体例如计算机和处理器的控制下,CE205允许交换要被写入到含有行或缓冲器的行存储器200的内容或者从中读出的内容。一个写操作把行的内容存储到CM206中。一个读操作把把CM206的内容存储到行中。两种操作占用一个周期。外部处理器可以使用insert或write指令在CM206中写入信息,并通过data-in总线10输入符号。符号可以通过两个路径从CE205读出一个通过CM206,例如通过在command线14上发送read指令,并在data-out总线11上获取符号。另一个路径根据实现直接从LM200中读出含有一个到几个符号的字。在这种情况下,字的地址通过字地址总线203发送给CE205,并且从数据字总线204获得所述的字。Data-ram总线100允许CM206的内容存储在CM206的给定的行中或者从中被读出。这个总线包含M*(N+1)根线,并允许整个的CM206在一个时钟周期内被读出或者写入。
图16表示构成LM的两个元件的方块图。一个是随机存取存储器(RAM)130,其中行被存储,另一个是RAM控制器120。RAM控制器的用途是快速地对CM206送入行,使得存储在RAM中的行的集合内的符号串可被快速地处理。为此,RAM控制器通过RAM执行一个传递,此时其扫描其中存储的行的集合,并向CM206发送一个选择的子组进行处理。RAM控制器为RAM中的每个行保持两个存储的位。第一位表示和其相关的行是否应当在当前传递期间被发送给CM206。RAM控制器自动地以恒定的时间产生其第一位被设置为1的行的连续的地址,并允许行的内容存储在CM206中进行处理,并从CM206中写回。当刚刚被CM206处理过的行被向回存储在RAM中时,no-flag信号15的值被存储在由RAM控制器管理的所述行的第二位中。当当前的传递完成时,RAM控制器复制和所有行相关的所有第二位的值到其相关的第一位中。这个新的位的集合表示哪些行的标记已被设置,因而应当在下一个传递中被处理。
在RAM中的不是所有的行而仅仅是一小部分含有有效信息,其中所有的行被连续地存储,并且在行地址0开始的情况下,可以对RAM控制器规定最后有效行的地址,以便限制其有效传递至有效行的组。这个地址借助于外部处理装置使用limit-address207信号输入给RAM控制器。
LM200的L个行的集合可以在含有CM206的同一个硅芯片上实现,或者在硅芯片的外部使用非架上的存储电路来实现。在两种情况下,CE205被用于管理在L个行中存储的信息,其把在行中存储的信息传递到其中例如上述部分中所述的字符串指令被执行的CM206中,并把CM206的内容向回传递给行,使得能够执行比CM206的M个符号存储容量长得多的字符串的字符串操作。
当须要插入和删除操作时,行不被填满其整个容量,而只被部分地填充,从而允许在这些操作下在CM206中的符号串的扩大和缩小。在这种情况下,不含有有效符号的CM206的单元利用在被处理的串中未找到的预定的二进制图案初始化。CM206产生作为被称为interrupt(中断)的在图2中标号为101的外部处理实体的信号。当含有这个特定的二进制图案的CM206的一个或几个单元的标记被设置时,使该信号有效。
CM206及其外部连接连接被分成两种类型。一种类型相当于CM206和其环境的互连,另一种类型相当于用于扩充电路所需的信号,即,如果多个CM206电路被连接在一起以便增加存储量。
在下面的表达中假定最初的CM206块可以存储M个存储器字,并且每个字的长度是N+1位,N位用于符号,1位用于标记。
如图11所示的CM206的系统连接被列表如下。括号中的数字,当存在时,表示每个信号的位数。当使用对数功能时,则假定其是以3为底的对数。
.Data-in(M)N位字的数据输入10,用于在CM206中输入符号。
.Data-out(M)N位字的数据输出11,用于从CM206读出符号。
.Address(log(N))log(N)位的地址输入12,其中log()是以2为底的对数。
.Data-RamM*(N+1)位的双向数据输入100和输出,允许一个存储缓冲器的内容或行被写入RAM200或从RAM200读出。
.Index(log(M))根据最后进行的是正向操作或反向操作,保持第一个或最后一个被标记的单元的地址的log(M)位的输出13。
.Interrupt(1)该信号由CM206产生,用于外部处理实体,并表示含有用于表示一个空的或无效条件预定的专用二进制配置的一个或几个单元被设置标记。
.Command(5)用于表示要由CM206进行的操作的指令代码的5位的输入14。
.No-flag(1).二进制输出信号15,表示CM206不含有被标记的单元。
No-eq(1)二进制输出信号16,表示最后一个条件查找类指令(正向、反向或被限制的条件查找)未设置任标记。
.One-flag二进制输出信号17,表示CM206只包含一个被标记的单元。
.clock输入信号14,作为时钟信号,其控制CM206的操作。
信号data-in,addr,和com具有相对于有效的时钟沿的相关的建立和保持时间。信号data-out,index,no-flag,no-eq,one-flag在和访问存储器相关的一个延迟之后成为稳定的。所述延迟相对于时钟信号的有效沿被测量。当若干个CM206电路或模块被连接在一起时,在扩展内部移位寄存器的一维阵列中,使用几个信号把CM206模块以线性方式连接在一起。这些信号示于图1,现说明如下.Data-left-in(N+2)从前一个模块接收的信号26,并具有一个符号(M位)、其相关的标记(1位)、以及和所述标记(1位)相关的比较器的输出的二进制表示。
.Data-left-out(N+2)为前一模块产生的信号25,并具有一个符号(M位)、其相关的标记(1位)、以及和所述标记相关的比较器的输出的二进制表示。
.Data-right-in(N+2)从下一个模块接收的信号19,并具有一个符号(M位)、其相关的标记(1位)、以及和所述标记相关的比较器的输出的二进制表示。
.Data-right-out(N+2)为下一个模块产生的信号18,并具有一个符号(M位)、其相关的标记(1位)、以及和所述标记相关的比较器的输出的二进制表示。
.Line-in(2)从X变码器电路接收的两个信号23,被用于扩充所述结构。
.Line-out(1)为X变码器电路产生的信号22。
.Column-in从Y变码器电路接收的两个信号20,被用于扩充所述结构。
.Column-out为Y变码器电路产生的信号21。
在标题为内部结构的部分更加详细限定了最后的4个信号组。如果这8个连接不用于扩充存储器,则它们必须使用常规的技术被正确地连接与/或终止,以便能够使CM206系统正确地操作。
CM206的内部结构图12是表示包括CM206的单元30的两维阵列的方块图、用于连接其和其它的CM206或CE205电路的信号、以及允许进行单元的选择并报告关于被标记的单元的位置的状态信息的电路。单元的阵列由一个两维阵列的N+1位的M个单元构成。选择两维具有两个理由。首先,为了最大地利用硅面积,其次,为了使和CM206中的信号传播相关的延迟最小。代替使用在RAM电路中存在的典型的译码器,CM206使用变码器电路,这是因为地址须要被编码、译码和变码,根据执行的指令而定。两维方法须要使用两个变码器电路,每一维使用其中的一个。
容易理解,不脱离本发明的较宽的方面,CM206还可以作为一维的存储单元阵列被构成。
图12所示的CM206的内部结构包括以下的子系统.Symbol Cells用于符号的存储器,或动态存储器,其由M个单元的两维阵列30构成,一个单元用于包含在存储器中的一个符号(第一个单元位于第一行,并在两维阵列的第一列)。为了便于表示,在表1中(下面)从底部向上以递增的顺序对行编号,同时从左向右以递增的顺序对列编号。
.Data-RamM*(N+1)位的双向总线100,其允许M个符号及其相关的被存储在此处假定位于符号单元区(30)中的存储行中的标记被写入外部数据存储器或从中读出。利用由X-transcoder电路39产生的line-select106信号进行在这个传递中涉及的行的选择。
.Interrupt这个1位的信号由CM206中的一个或几个单元产生,CM206包含预定的唯一的二进制图案,用于表示空的单元或含有无效符号的单元,并使得这个或这些单元的相关标记被设置。
.X-transcoder电路39含有用于和Ytranscoder电路结合寻址和访问CM206中的单元的逻辑。
.Y-transcoder电路40含有用于和X-transcoder电路39结合寻址和访问单元的阵列中的信息。
.两个输入的AND gate门34接收由两个变码器产生的eq信号36和41,并产生信号one-flag 35。
.两个变码器电路把CM206的内容分割成3个区域位于第一被标记的单元之前的单元的集合,第一个被标记的单元,以及从第一个被标记的单元开始的单元的集合。
下面列出的信号对CM206电路的内部部分进行操作。因为含有M个单元的两维阵列,并因为必须计算最低或最高地址的被标记的单元的地址,变码器电路的操作依赖于几个关键信号line-out,line-in,column-out以及column-in。
.line-outline-out信号42共有 个。每个和单元的两维阵列的一行相关,并且如果该行含有被标记的单元,则该信号有效,否则无效。
.column-out类似地,column-out信号44,共有 个,它们相应于单元的两维阵列的每个列。如果其相应的列在第一有效行上含有被标记的单元,则column-out类的信号是有效的,否则是无效的。
.line-in该信号43共有 个。两维阵列的每行从X变码器接收两个信号,line-in[1]和line-in
,其表示以下条件是否该行是第一个含有被标记的单元的行,以及该行是否大于等于含有被标记的单元的第一行。
例如,假定具有8×8的具有下面所示的内容的两维的单元阵列,其中括号包括被标记的单元中的符号。在顶行和第一列上的数字表示用于访问CM206的行和列的编号系统,而不是在阵列中存储的符号。
012345670 XXXXXXXX1 XXXXXXXX2 XXXXXXXX3 XXXXXXXX4 XX[X] XXX[X] X5 XXXXXXXX6 [X] XXX[X] XXX7 XXXXXXX[X]表1则按照行0,1,2,直到7的顺序列出的信号42等于00001011。按照同样顺序列出的line-in信号43的line-in[1]是00001000,并且line-in信号43的line-in
是00001111。
.column-in 45Y变码器电路的每一列和表示以下条件的两个输出信号column-in
以及column-in[1]相关该列是否含有两维阵列的第一被标记的单元。
该列是否等于含有第一被标记的单元的列,或者是否其具有较高的地址。
使用上述8×8的两维阵列的同一个例子,列出和从7递减到0的列相关的信号,column-in信号45含有值00100000和00111111。
CM206的单元的外部结构除去已经提出的data-in,data-out,以及com信号之外,下面的信号使包含符号和标记的基本单元和其环境相连,如图13和14所示。
.Data-left-outN+2位的信号25向前一个单元传播的信息,并由N+1位的left-cell-out信号构成,其传送存储在单元中的符号及其相关的标记位。
.Left-eq-out(1)由比较器55在单元内部产生的输出信号54。
.Data-right-out(N+2)N+2位的信号传送向下一个单元传播的信息,并由N+1位的right-cell-out信号构成,其传送存储在单元中的符号及其相关的标记位。
.Right-eq-out(1)在单元内部的比较器的输出信号55。
.Data-left-in(N+2)N+2位的信号传送从前一个单元接收的信息,并由N+1位的left-cell-in信号52构成,其传送存储在前一个单元中的符号及其相关的标记位,以及1位的信号left-eq-in,53,其传送在前一个单元内部的比较器55的输出。
.Data-right-in(N+2)这些N+2位的信号传送从下一个单元接收的信息,并由N+1位的right-cell-in信号58构成,其传送存储在下一个单元中的符号及其相关的标记位,以及一位的信号right-eq-in 56,其是下一个单元内部的比较器55的输出。
.Line-out(1)是一个产生标记的相反值的开路漏极(open drain)输出。其和来自两维阵列的相同行上的所有其它单元的所有line-out信号42并联连接,并成为X变码器电路39的输入之一。
.Column-out(1)是一个一位的信号44,并是一个只在包含被标记的单元的第一行上产生标记的相反值的开路漏极输出。其和两维阵列的相同列中的单元的所有的column-out输出并联连接,并成为Y变码器电路40的输入之一。
.Line-in(2)line-in[1]和line-in
形成line-in信号43,其由X变码器电路39产生,并表示以下条件line-in[1]单元属于含有两维阵列的第一被标记的单元的行。
Line-in单元属于或者等于含有阵列的第一被标记的单元的行或者是具有较高地址的行。
.Colmn-in(2)column-in[1]和column-in
形成column-in信号45,并被Y变码器电路40产生。它们表示以下条件column-in[1]单元属于含有单元被标记的单元的列。
Column-in单元属于从含有第一被标记的单元的列开始的列。
.No-eq当在本发明的综述部分中所述的cfind型指令在单元中成功时,这个开路漏极输出16是低态有效的。
.Symbol-data(N+1)这些双向信号106允许单元的内容(N位符号加上一位标记)被写入外部存储器位置或从中被读出。
.Interrupt 101如果标记被设置并且存储的符号是一个预定的且唯一的表示无效符号的或者表示单元是空的二进制图案,则这个信号被产生。这个信号由开路漏极驱动器产生,并且由阵列中的M个单元产生的所有M个中断信号都进行“或”运算,以用于产生图3中的中断信号101。
单元的内部结构单元的内部结构如图14所示,并含有以下的电路REG电路60是一个(N+1)位的含有单元中存储的值的及其相关的标记位的值的寄存器。
MUX1电路61是N个4输入多路传输器的集合,其根据被称为c1 65和c2 66的选择代码允许几个值中的一个被写入REG中。对于多路传输器61的可能的选择是出现在data-in信号10上的外部值,出现在sumbol-data信号106上的外部值,被left-cell-out信号51传送的来自以前的单元的值,被right-cell-in信号58传送的来自下一个的单元的值,或者存储在REG 60中的值,其允许寄存器的动态实现。
MUX2电路62是一种4输入多路传输器,其根据被称为c3和c4的选择代码67和68允许4位中的一位存储在REG的最高有效位中。对于多路传输器62的可能的选择是由PLA 63产生的标记,出现在symbol-data 106信号106中的标记,由信号left-eq-in53传送的来自前一个单元的标记,由信号right-eq-in 56传送的来自下一个单元的标记,或存储在REG 60中的标记,其允许这些位的动态实现。
COMP电路55是一个组合电路,只有当在data-in输入信号10上存在的符号等于单元的N位内容时,在其一位的输出上产生一个1,并且其通过信号right-cell-out 59传送。
Symbol-data(N+1)这些信号106传送来自给定行的单元的内容或者在REG中的CM206单元的内容到外部存储实体。传递的方向被R/W信号112控制。
PLA电路63是一个组合电路,其可以利用可编程的逻辑阵列来实现,并且其产生被称为c1,c2,c3,c4,c5,c6,c7和c8的指令位65,66,67,68,69,107,109,和111,它们被在单元的内部使用,以及no-eq信号16和的相反值,以及column-out信号44。开路漏极反相器20驱动信号no-eq 16。反相器70驱动column-out信号44。PLA 63接收几个输入信号Command信号14,其传送要被CM206执行的指令(find,cfind,index等)的二进制表示,
寄存器REG 60的值,由left-eq-in 53信号传送的在前一单元内的比较器55的输出,由right-eq-in 56信号传送的在下一个单元中的比较器55的输出,信号no-eq 16,由X变码器产生的line-in信号43和由Y变码器电路产生的column-in信号45。
PLA 63产生interrupt信号15,当寄存器60含有用于标记未使用的或无效的单元的预定符号时,并且当和寄存器相关的标记被设置时,该信号有效。
表示在寄存器60中存储的符号的寄存器60的N位输出由被信号c5 69控制的N个三态反相驱动器71反相,它们成为信号data-out 11。开路漏极反相器64反相在寄存器REG 60存储的标记位,并产生信号line-out 42。开路漏极反相器产生信号no-eq 16,其来自PLA 63。开路漏极反相器70产生信号column-out 44。在理论上,从两维阵列中的不同的单元输出的所有data-out 11和no-eq 16被连接在一起,属于一个行的所有的line-out 42也被连接在一起,在相同列上的单元的所有column-out信号44也被连接在一起。
变码器图15表示两个变码器电路39和40的组织结构。X变码器电路接收如下信号.line-outs含有 位这些信号的每一个来自两维阵列的单元的每个行,用于表示在行上被标记的单元的存在。
.Address-high信号96含有log(N)/2位,并表示输入到CM206的地址的上半个,并用于选择两维阵列中的 个行中的一个。
.5位的command信号14只用于实现一些辅助指令set-limit,set-limit-address,limited-find,limited-cfind,limited-reverse-find,limited-reverse-cfind,limited-write-all,ram-read和ram-write。
Y-transcoder电路40接收以下信号 位的Column-outs信号44,每个来自单元的两维阵列的每一列,表示在相关的列上被标记的单元的存在,这个被标记的单元是其所属的行的第一个。
位的Address-low信号97,其表示用于选择给定的行的地址的下半个。
.5位的Command信号,只用于实现以前列出的辅助指令。
两个变码器包含以下电路.译码器DCD 83用于译码在X变码器39中的地址信号的上半个或在Y变码器中的地址信号的下半个。
.多路传输器MUX-3电路82由 的两维多路传输器构成,并且其使用c6信号92作为选择信号。
.用于逻辑功能OR的前缀网络PN-OR电路91。
.LATCH电路85,其锁存PN-OR信号的输出,并用于限定用于被限制的操作的CM206的有效部分。其使用c7信号93作为负载指令。
.MUX-4多路传输器电路87具有和MUX-3 82电路相同的结构,并使用c8信号94作为选择信号。
个xor门的线性网络XOR-1 86用于确定在由MUX-4电路87输出的二进制配置中1的第一次出现。
.优先权编码器PE 80,用于编码在X变码器中的line-out 42,或在Y变码器中的column-outs信号44,产生索引字段的上半个,即X变码器中的index-high 38,或下半个,即Y变码器中的index-low 46。
.RPE优先权编码器81,接收和优先权编码器80相同的输入,但是顺序相反,使得其可以产生上、下半个c索引字段。
.PLA电路84是一个小的组合逻辑块,其可以由可编程的逻辑阵列来实现,其译码指令字段14,从而产生c9位92,c10位93,c11位94,和c12位95,用于控制变码器电路。
.XOR-2电路89产生p/2位的值,其被输入到p/2输入与门88,并且其产生eq信号36。所述eq信号是索引index-high 98的上半部分和由RPE电路81产生的反向索引的上部分内容在X变码器39中比较的结果,或者是在Y变码器40中索引index-low 99的下半部分和由RPE电路81产生的反向索引的下部分内容比较的结果。
RAM控制器图16表示RAM控制器12的实现,而图17是表示RAM控制器12的内部结构的电路图。RAM控制器为在RAM中存储的每行保持两位存储器。第一位被存储在含有L位的寄存器AR 208中,一个用于RAM中的每一行。L位的内容被输入到优先权编码器P-ENC 210,其输出被设置为1的最小加权的位的二进制表示。优先权编码器210的输出是line-address 201,并且是要被选择供下一个CM 206进行读或写操作的RAM中的行的地址。例如,如果AR含有00101110,则P-ENC在line-address上输出010,这是被设置为1的AR中的最低有效位的地址。Line-address 201也被输入到多路传输器MUX-7 213的0输入端,当被合适地选择时,其把行地址信号的内容输入到译码器ADCD 214。这个译码器具有L个输出,1个有效的,L-1个无效的。有效的输出具有和其权重或地址被P-ENC 210输出的AR 208中的最低有效1位的相同的权重。例如,如果行地址是010,则ADCD 214产生00000010,其中被设置为1的位具有加权2。由ADCD 214输出的L个信号和AR 208输出的L位被L个异或门215异或,从而产生在AR中存储的相同的二进制图案,但是此时AR中的最低有效1位被设置为0。使用同一个的例子,如果AR含有00101110,则P-ENC输出010,其被输入给ADCD而成为00000010,其和00101110异或而产生00101100,黑体的0位表示在AR的内容和异或门215的输出之间的差。异或门215的输出通过多路传输器MUX-6 209被输入到寄存器AR,当step-enable信号222有效时,在下一个时钟周期被存储到其中。该信号是信号202的com类的一部分,并且在用于控制CE 205的外部处理实体的控制下。
AR,P-ENC,MUX-7,ZDCD,L XOR门和MUX-6的组合形成一个电路,当以在AR中以二进制形式存储的数K开始时,该电路在行地址上输出连续的2的幂,其和等于K。此外,在阶跃使能(step-enable)信号控制下,以恒定的时间产生每个2的幂。当所有的1位都从AR寄存器中消失时,优先权编码器检测到这个条件,并激活信号stop221,该信号作为在当前状态下没有须要被处理的行的标记被外部处理实体检测。这个装置以二进制数在一个循环中自动地产生所有被设置为1的位的连续的加权,每个加权的输出只占一个周期。
当在寄存器AR中这种1的连续的消除发生时,行在CM206中被处理,并进行字符串操作。在这些操作结束时,当CM206的内容被向回存储在行中时,被反向的并和init信号224进行或运算的no-flag信号15的值被记录在作为L个D型触发器218之一的D型触发器中。在L组中选择的触发器的地址和在RAM中的行的地址相同,并利用ADCD电路214的输出进行触发器的选择,如下所述。这些L触发器含有1和0的新的图案,该图案表示必须在下一个操作期间处理的下一组行。
RAM控制器的初始化须要在AR的位中用这种方式存储1,即只有RAM中须要被处理的行的相关的AR位设置为1。这些有效行被存储在邻接的块中的RAM的连续的地址中,并使得在块中的最低地址是0。例如,如果在RAM中只有3个行是有效的,则AR寄存器的最低3位必须被设置为1,而所有其它的位被设置为0。在这种情况下,最高地址行的地址是2,因为有效行具有地址0,1和2。在这种情况下,控制外部实体在limit-address207信号上发送最高行的地址到RAM控制器,并激活init信号224。得到的操作是,在通过多路传输器MUX-7的limit-address信号上的log(L)地址被ADCD译码成为L信号,除去一个具有等于limit-address内容的加权之外全部为0。
然后把MUX-7的输出被输入到前缀OR电路OR-PN216,其把值为0的并且加权小于在其输入中的仅仅1位的加权的所有位转换为1。例如,如果OR-PN电路接收00000100,其中1位的加权是2,则其输出是00000111。然后使这些L个信号通过L个或门219,并被输入到D触发器218的D输入端。L个D触发器218分别由ADCD电路产生的、分别和init信号224进行或运算的L个信号使能。当每个1的输出相应于RAM中的有效行时,通过激活控制多路传输器MUX-6209的启动信号,这些L个触发器的内容被加载到寄存器AR 208中。
虽然参照优选实施例对本发明进行了详细说明,本领域的技术人员应当理解,不脱离本发明的基本范围和构思,可以作出各种改变,其元件可以用等效元件替换。因此,本发明不限于这些特定的实施例,而是本发明包括落在所附权利要求范围内的所有实施例。
权利要求
1.一种用于选择地检查和操作数据的存储器引擎,所述存储器引擎包括存储装置,用于暂时地存储作为数据字符串的所述数据;控制器,其向所述存储装置选择地输出多个指令之一,并接收来自所述存储装置的反馈数据,所述存储装置按照由所述控制器输出的所述指令检查在所述字符串中的数据字符;以及时钟装置,用于向所述存储装置和所述控制器输出由每秒预定的时钟周期数构成的时钟信号,其中所述存储装置在所述时钟周期的一个内检查和选择地操作所述数据字符中的一个。
2.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中所述存储装置是一个相联存储装置。
3.如权利要求2所述的用于选择地检查和操作数据的存储器引擎,其中所述相联存储装置和一个数据总线以及一个缓冲存储装置进行电通信。
4.如权利要求3所述的用于选择地检查和操作数据的存储器引擎,其中所述缓冲存储装置包括多个缓冲器,每个所述缓冲器具有等于所述相联存储装置的存储容量。
5.如权利要求2所述的用于选择地检查和操作数据的存储器引擎,其中所述相联存储装置由作为动态和静态存储单元之一的两维阵列被构成。
6.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“find”指令,借以使所述数据字符串被检查,从而确定是否任何所述数据字符和预定的符号匹配,所述预定的符号由所述控制器和所述“find”指令结合进行传递;以及所述存储装置进行操作用于标记所有和所述预定符号匹配的所述字符的右方的所有所述数据字符。
7.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“reverse-find”指令,借以使所述数据字符串被检查,从而确定是否任何所述数据字符和预定的符号匹配,所述预定的符号由所述控制器和所述“reverse-find”指令结合进行传递;以及所述存储装置进行操作用于标记所有和所述预定符号匹配的所述字符的左方的所有所述数据字符。
8.如权利要求4所述的用于选择地检查和操作数据的存储器引擎,其中所述控制器进行操作用于把数据字符串加载到所述缓冲器的每个中;所述缓冲器利用所述数据总线按照顺序传递所述数据字符串到所述相联存储装置中;从所述控制器输出的所述多个指令之一是“find”指令,借以使占据所述相联存储装置的所述数据字符串被检查,从而确定是否任何所述数据字符和所述控制器与所述“find”指令结合而传递的第一个预定符号匹配;所述相联存储装置进行操作用于标记和所述第一预定符号匹配的所有的所述字符的右方的所有所述数据字符。
9.如权利要求4所述的用于选择地检查和操作数据的存储器引擎,所述控制器进行操作用于把数据字符串加载到所述缓冲器的每个中;所述缓冲器利用所述数据总线按照顺序传递所述数据字符串到所述相联存储装置中;从所述控制器输出的所述多个指令之一是“reverse-find”指令,借以使所述数据字符串被检查,从而确定是否任何所述数据字符和由所述控制器与所述“reverse-find”指令结合而传递的第一个预定符号匹配;所述相联存储装置进行操作用于标记和所述第一预定符号匹配的所有的所述字符的左方的所有所述数据字符。
10.如权利要求8所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“c-find”指令,借以使只有包括被标记的数据字符的那些所述数据字符串再次被检查,从而确定和所述控制器与所述“c-find”指令结合而传递的第二个预定符号匹配的数据字符的存在;以及所述相联存储装置进行操作用于标记和所述第二预定符号匹配的所有所述字符右方的所有所述数据字符,所述相联存储装置复位在所述数据字符中的所有其它标记。
11.如权利要求9所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“reverse-cfind”指令,借以使只有包括被标记的数据字符的那些所述数据字符串再次被检查,从而确定和所述控制器与所述“reverse-cfind”指令结合而传递的第二个预定符号匹配的数据字符的存在;以及所述相联存储装置进行操作用于标记在和所述第二预定符号匹配的所有所述字符左方的所有所述数据字符,所述相联存储装置复位在所述数据字符中的所有其它标记。
12.如权利要求5所述的用于选择地检查和操作数据的存储器引擎,其中所述相联存储装置包括第一变码器电路和第二变码器电路,用于提供在所述两维阵列中的所述存储单元的线性地址;以及所述第一变码器电路包括第一锁存电路,所述第二变码器电路包括第二锁存电路,所述第一和第二锁存电路包含位置信息,表示所述相联存储装置内的所述存储单元的哪一个包含被标记的数据字符。
13.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“delele”指令,借以使首先出现的被标记的数据字符被删除,所述被标记的数据字符的右方的所有其它的所述数据字符,包括其标记的状态,被向左移动;以及所述数据字符串从所述数据字符的最左方开始被检查。
14.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“reverse-delele”指令,借以使最左方的被标记的数据字符被删除,所述最左方的被标记的数据字符的右方的所有其它的所述数据字符被向左移动;以及所述存储装置标记在所述最左方的被标记的数据字符的左方的数据字符。
15.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中响应“insert”指令,所述存储装置确定被标记的数据字符的第一次出现,并把所述第一个被标记的数据字符的右方的所有所述数据字符的内容和标记状态,包括所述第一个被标记的数据字符,向右移动;所述存储装置利用由所述控制器结合所述“insert”指令而传递的一个预定符号替换所述第一个被标记的数据字符的前一个位置;以及所述数据字符串从所述数据字符的最左方开始被检查。
16.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中响应“reverse-insert”指令,所述存储装置确定被标记的数据字符的第一次出现,并把所述第一个被标记的数据字符的右方的所有所述数据字符的内容,包括所述第一个被标记的数据字符,向右移动;所述存储装置利用由所述控制器结合所述“reverse-insert”指令而传递的预定符号替换所述第一个被标记的数据字符的前一个位置;以及所述数据字符串从所述数据字符的最左方开始被检查。
17.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“next”指令,借以使第一个被标记的数据字符的标记被复位;以及所述数据字符串从所述数据字符的最左方开始被检查。
18.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“write-one”指令,借以使由所述控制器结合所述“write-one”指令而传递的一个预定符号被写入第一次出现的被标记的数据字符;所述数据字符串从所述数据字符的最左方开始被检查;以及所述存储装置复位所述第一个被标记的数据字符,并标记所述第一个被标记的数据字符的右方的一个数据字符。
19.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“write-all”指令,借以使由所述控制器结合所述“write-one”指令而传递的一个预定符号被写入所有出现的被标记的数据字符;所述数据字符串从所述数据字符的最左方开始被检查;以及所述存储装置复位所有所述被标记的数据字符,并标记所有所述被标记的数据字符的右方的数据字符。
20.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“jump”指令,借以使所述数据字符串被检查,以便确定和一个预定的分隔符匹配的第一次出现的被标记的数据字符;以及所述数据字符串从所述数据字符的最左方开始被检查。
21.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中从所述控制器输出的所述多个指令之一是“jump”指令,借以使所述数据字符串被检查,以便确定和一个预定的分隔符匹配的所有出现的被标记的数据字符;以及所述数据字符串从所述数据字符的最左方开始被检查。
22.如权利要求20所述的用于选择地检查和操作数据的存储器引擎,其中所述存储装置利用由所述控制器结合所述“jump”指令而传递的一个预定的符号代替和所述预定的分隔符匹配的所述第一个被标记的数据字符;以及所述存储装置复位所述第一个被标记的数据字符;以及在所述被复位的数据字符的右方的、相邻的一个数据字符上设置标记。
23.如权利要求1所述的用于选择地检查和操作数据的存储器引擎,其中所述存储装置包括多个存储单元;以及所述指令并行地被传递到所有所述存储单元,借以使得能够在所述时钟周期的一个内修改所有的所述存储单元。
24.一种利用存储装置、控制器以及时钟装置检查和修改数据的方法,所述存储装置用于存储作为数据字符串的所述数据,所述控制器用于对所述存储装置选择地输出指令,所述时钟装置用于向所述控制器和所述存储装置输出由每秒预定数量的时钟周期构成的时钟信号,所述方法包括以下步骤在所述存储装置中装入所述数据;按照由所述控制器输出的所述指令检查所述被装入的存储器;以及按照由所述控制器输出的所述指令选择地操作所述数据,一个所述数据字符的所述检查和操作在一个所述时钟周期内完成。
25.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤具有所述静态和动态存储单元之一的两维阵列构成所述存储装置,作为相联存储装置。
26.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤检查所述装入的数据,确定是否任何所述数据字符和由所述控制器结合“find”指令传递的第一预定符号匹配;以及从所述装入的数据字符的最左方开始所述检查。
27.按照权利要求26所述的用于检查和操作数据的方法,还包括以下步骤确定是否任何所述装入的数据字符和所述第一预定符号匹配;在位于所述任何装入的已被确定和所述第一预定符号匹配的数据字符的右方的所述数据字符串中的任何所述装入的数据字符上设置一个标记;以及除去设置在所述装入的位于已被确定和所述第一预定符号匹配的任何所述装入的数据字符的右方的数据字符上的所述标记之外,复位在所述装入的数据字符上的所有的标记。
28.按照权利要求26所述的用于检查和操作数据的方法,还包括以下步骤设置一个和数据总线以及所述存储装置电通信的缓冲器装置,所述缓冲器装置包括多个缓冲器,其中每个所述缓冲器具有等于所述存储装置的存储容量;通过所述数据总线从所述存储装置中除去所述被检查的数据字符串;在一个所述缓冲器中存储所述被除去的数据字符串;以及随后装入并检查在所述缓冲器中存储的其它数据字符串,直到所有的所述缓冲器被检查过,每个所述其它数据字符串在完成其各自的检查时被存储在所述缓冲器中。
29.按照权利要求28所述的用于检查和操作数据的方法,还包括以下步骤重新检查包括被标记的数据字符的任何所述数据字符串,确定所述被重新检查的数据字符串是否包括和所述控制器结合“c-find”指令传递的一个第二预定符号匹配的数据字符;以及标记位于和所述第二预定符号匹配的所述数据字符的右方的所有所述数据字符,同时复位所述数据字符中的所有其它的标记。
30.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤检查所述装入的数据,确定是否任何所述数据字符和所述控制器结合“reverse-find”指令传递的第一预定符号匹配;确定是否任何所述装入的数据字符和所述第一预定符号匹配;在位于所述任何装入的已被确定和所述第一预定符号匹配的数据字符的左方的所述数据字符串中的任何所述装入的数据字符上设置一个标记;以及除去设置在所述装入的位于已被确定和所述第一预定符号匹配的任何所述装入的数据字符的左方的数据字符上的所述标记之外,复位在所述装入的数据字符上的所有的标记。
31.按照权利要求28所述的用于检查和操作数据的方法,还包括以下步骤重新检查包括被标记的数据字符的任何所述数据字符串,以便确定所述被重新检查的数据字符串是否包括和所述控制器结合“reverse-cfind”指令传递的一个第二预定符号匹配的数据字符;以及标记位于和所述第二预定符号匹配的所述数据字符的左方的所有所述数据字符,同时复位所述数据字符中的所有其它的标记。
32.按照权利要求30所述的用于检查和操作数据的方法,还包括以下步骤设置一个和数据总线以及所述存储装置电通信的缓冲器装置,所述缓冲器装置包括多个缓冲器,其中每个所述缓冲器具有等于所述存储装置的存储容量;通过所述数据总线从所述存储装置中除去所述被检查的数据字符串;在一个所述缓冲器中存储所述被除去的数据字符串;以及随后装入并检查在所述缓冲器中存储的后续数据字符串,直到所有的所述缓冲器被检查过,每个所述其它的数据字符串在完成其各自的检查时被存储在所述缓冲器中。
33.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤响应“delete”指令删除在所述装入的数据中第一次出现的被标记的数据字符;向左移动在所述被标记的数据字符的右方的所有所述数据字符,包括它们的标记状态;以及从所述装入的数据字符的最左方开始所述检查。
34.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤响应“reverse-delete”指令删除在所述装入的数据中第一次出现的被标记的数据字符;向左移动在所述被标记的数据字符的右方的所有所述数据字符,包括它们的标记状态;标记和所述已被删除的所述标记的数据字符相邻的并位于其左方的数据字符;以及从所述装入的数据字符的最左方开始所述检查。
35.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤响应“insert”指令确定在所述装入的数据中的被标记的数据字符的第一次出现;向右移动在所述被标记的数据字符的右方的所有所述数据字符的内容和标记状态,包括所述第一个被标记的数据字符;利用由所述控制器结合所述“insert”指令传递的一个预定符号代替所述第一个被标记的数据字符的前一个位置;以及从所述装入的数据字符的最左方开始所述检查。
36.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤响应“reverse-insert”指令确定在所述装入的数据中的被标记的数据字符的第一次出现;向右移动在所述被标记的数据字符的右方的所有所述数据字符的内容,包括所述第一个被标记的数据字符;插入由所述控制器结合所述“reverse-insert”指令传递的一个预定符号来代替所述第一个被标记的数据字符的前一个位置;标记所述插入的预定符号;以及从所述装入的数据字符的最左方开始所述检查。
37.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤响应“next”指令复位在所述装入的数据中的第一个被标记的数据字符上的标记;以及从所述装入的数据字符的最左方开始检查。
38.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤在所述装入的数据中向第一次出现的被标记的数据字符写入通过“write-one”指令传递的一个预定符号;复位所述第一个被标记的数据字符,并标记位于所述第一个标记的数据字符的右方的数据字符;以及从所述装入的数据字符的最左方开始检查。
39.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤在所述装入的数据中向所有出现的被标记的数据字符写入通过“write-all”指令传递的一个预定符号;复位所有所述被标记的数据字符,并标记位于所有所述被标记的数据字符的右方的数据字符。
40.按照权利要求24所述的用于检查和操作数据的方法,还包括以下步骤检查所述装入的数据,以便确定第一次出现的和所述控制器输出的“jump”指令相关的一个预定的分隔符匹配的被标记的数据字符;以及从所述装入的数据字符的最左方开始所述检查。
41.按照权利要求40所述的用于检查和操作数据的方法,还包括以下步骤利用与所述“jump”指令相关的由所述控制器传递的一个预定的符号代替和所述预定的分隔符匹配的所述第一个被标记的数据字符;复位所述第一个被标记的数据字符;以及在所述被复位的数据字符的右方的、相邻的一个所述数据字符上设置标记。
42.一种用于选择地检查和操作数据的存储器引擎,所述存储器引擎包括相联的存储装置,其具有选择地移动的能力,用于暂时存储作为数据字符串的所述数据;控制器,其选择地对所述存储装置输出多个指令中的一个,并从所述存储装置接收数据反馈,所述存储装置按照由所述控制器输出的指令检查所述字符串中的数据字符;以及所述相联的存储装置选择地响应由所述控制器发出的第一指令而移动所有所述数据字符,并且所述相联的存储装置响应由所述控制器输出的第二指令只移动所述数据字符的一部分。
43.按照权利要求42所述的用于选择地检查和操作数据的存储器引擎,还包括时钟装置,用于向所述存储装置和所述控制器输出由每秒预定数量的时钟周期构成的时钟信号,其中所述存储装置在一个所述的时钟周期内检查并选择地操作所述数据字符。
全文摘要
一个存储器引擎组合相联的存储器和随机存取存储器,用于使得能够对数据快速地进行字符串检索、插入和删除操作,并且包括用于暂时存储作为数据字符串的数据的存储装置。一个控制器被用于选择地对所述存储装置输出多个指令中的一个,并接收从其反馈的数据,所述存储装置按照由所述控制器输出的指令检查串中的数据字符。还利用一个时钟装置向所述存储装置和所述控制器输出由每秒内一个预定数量的时钟周期构成的时钟信号,所述存储装置在一个时钟周期内检查并选择地操作一个数据字符。
文档编号G11C15/04GK1554048SQ02817663
公开日2004年12月8日 申请日期2002年8月7日 优先权日2001年8月10日
发明者格奥尔基·斯特凡, 多米尼克·蒂埃博, 克 蒂埃博, 格奥尔基 斯特凡 申请人:吉米塞公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1