联想存储器装置的制作方法

文档序号:6784386阅读:320来源:国知局
专利名称:联想存储器装置的制作方法
技术领域
本发明一般涉及用于数据处理的联想存储器支持,更具体地说,涉及利用改进的联想技术提供更快的数据处理速度和灵活性的存储器引擎。
背景技术
搜索由匹配给定或预定字符串符号的字符串符号组成的缓冲器或其他存储设备是许多应用中都见到的基本操作,例如但不限于数据库、通用信息的处理、数据压缩和计算机语言的处理。通过在字符串中插入新序列或从其中删除序列来修改字符串也是这些领域中的基本操作,这些字符串操作所花的时间直接影响主应用的执行时间。
当执行串行计算时,即匹配操作在包含M个符号的缓冲器中查找所有出现的N个符号的字符串,所需的步长的最大数量是N*M。当需要在缓冲器内插入字符时,需要将缓冲器中平均一半符号向右或向左移动一个单元,以便腾出用于新单元的空间。在此情况中,需要平均N/2个步长。
已提出许多串行算法来改进这些操作,这些算法是基于包括散列或树数据结构的多种技术。散列是在如下情况中使用感兴趣的字符串是固定长度的字。在此情况中,每个字与唯一编号相关联,该唯一编号用作词典中存储的字的索引。该方法存在的缺点是,它仅在信息是静态的而且在处理过程中不更改位置时非常有效。而且,生成该编号是成本高的操作,有时可能会将多个字与相同的编号关联,这需要额外的工作来查找搜索的字。还可以利用后缀树,后缀树是其中存储了缓冲器中存在的所有子字符串的树结构。当希望查看给定字符串是否位于缓冲器中时,只需向下搜索该树,一次搜索字符串的一个字符,直到找到该字符串或找不到为止。在这两种情况中,如果字符串包含M个符号,需要最多M个步长来确定该字符串是否在长度为L的缓冲器中。虽然此搜索方法是快速的,但是构建后缀树通常是计算成本高昂的。
内容可寻址存储器或CAM是一种并行解决方案,用于在一次存储器访问中查找给定符号或字的位置。该方法对于固定长度的字非常有效,但是不容易扩充到可变长度符号字符串。当搜索能以并行方式在缓冲器中执行时,即当可以同时执行M个比较时,则步长数量减少到N。提出具有并行比较符和标记符的缓冲器存储与给定符号的每次比较的结果,以便加速字符串搜索。例如参见Almy等人的美国专利号4,575,818;Mayer的美国专利号5,319,762;Eskandari-Gharnin等人的美国专利号5,602,764;或Satoh等人的美国专利号5,448,733。这些公知的设备通常将比较符与缓冲器的每个单元关联,以及一位的标记符存储上次执行比较的结果。比较符、存储单元和标记符以如下方式工作将要在缓冲器查找的字符串的符号广播到缓冲器的所有比较符。然后这些比较符将给定符号与它们关联的存储单元中存储的符号比较。将比较结果存储在与该比较符和存储单元关联的标记符中。
作为移位寄存器实现的缓冲器允许它们的内容并行地且同步地向左或向右移位一个时钟信号。在此情况中,可以刚好将缓冲器的整个内容移位一个步长。但是这些缓冲器不提供要移位的其内容的仅一部分,而是仅提供全局移位操作。而且,对应于缓冲器的每个单元结合多个分离的比较符往往整体地增加设备的尺寸和复杂性,由此导致过高的成本和能量使用。
因此针对前面的问题和关注事宜,本发明尝试利用一种存储器装置,它能够实现非常快速的字符串搜索,插入和删除,其中利用了一种新存储器电路,称为连接存储器(Connex Memory)(CM)(下文称为CM)。
具体来说,本发明提出一种连接存储器装置,它以联想存储器方式工作,但是还包括目前为止尚不是联想存储器装置中公知的灵活性。
公知的数据处理系统大多数经常利用常规方式寻址的存储器装置。即,公知的数据系统利用其中包括定义的场所的存储器装置,每个场景具有各自特定化的地址。由此,如果系统处理器希望将存储在地址A的值与存储在地址B的值相加,则常规存储器装置将进入到存储器装置内特定定址的位置或单元,并经接口将这些值传递到可能执行相应求和处的处理器。在此类的这些系统中,对整个组件的特性和功能,即处理器和存储器装置的特性和功能进行了很好的定义,并且彼此不相同。
公知的还有,数据处理系统可以包括多于一个处理器和存储器装置,而且这些多个组件可以是执行指令流的系统的一部分。这些多指令流多数据流(MIMD)装置可以视为紧密耦合的SISD装置的大集合,其中系统中的每个处理器虽然在整体上结合其他集成的处理器一起工作,但是负责较大任务的一个特定部分。即,MIMD装置的效用通常限于那些指定的场合,其中要解决的问题往往可拆分成多个相似且相对独立的从属问题。MIMD装置的那些集成组件的特性和功能也进行了很好的定义,并且彼此不相同。
另一个公知的数据处理系统包括单指令多数据流(SIMD)装置。这些SIMD装置利用任意数量的处理器全部彼此同步执行相同的程序,但是每个处理器将当前指令指定的运算符应用于不同的运算数,并由此得到各自的结果。SIMD装置中的处理器访问集成的存储器装置以获取运算数并存储结果。同样地,SIMD装置的那些集成组件的特性和功能也进行了很好的定义,并且彼此不相同,因为通过计算由必须对存储器装置具有某种类型的访问权以便执行它们的作业的处理器来执行。
虽然公知的数据处理系统因此而能够处理大量数据,但是为这些处理器和存储器装置定义且不会更改的特性限制了可完成多种操作的速度和效率。
因此,还构造了多种体系结构,它们利用不是以常规方式寻址的另一类存储器装置。这些存储器装置通常描述为“联想”存储器装置,如所指示的,它们不将相应的数据位按存储器装置内的物理位置编目。相反,联想存储器装置按其中所存储的信息的特性或固有性质来“寻址”它们的数据位。即,不由联想存储器装置内的物理位置的名称来标识联想存储器装置内的数据,而是根据存储器装置的每个特定单元中存储的数据的属性来寻址。
将固定的或有限大小的关键字字段与大多数联想存储器装置中存储的所有数据关联。然后可以利用搜索关键字来选择其关联的关键字字段与搜索关键字匹配的特定数据字段或多个数据字段而无论它们命名的位置,以便用于根据指向的指令进行后续处理。
在这些公知的联想存储器装置中,其中存储的所有数据包括关键字字段和对应的数据字段。公知的联想搜索和数据操作技术检查联想存储器内的关键字字段以确定哪个对应的数据字段包含对于预定命令特别感兴趣的数据。一旦识别出,则可以通过更改相应关键字字段内的一个或多个位的状态来“标出”或“标记”持续感兴趣的任何数据字段,由此余留下关联的数据字段以供用于后续搜索或操作命令。
因此,公知联想存储器装置依赖于能够观察关键字字段的内容的控制器,以便识别那些感兴趣的数据字段。虽然这些公知的联想系统在某种程度上是有用的,但是它们仍存在搜索体系结构上缺乏灵活性的问题,因此它们的效用相应地被降低,同时它们的处理时间却增加了。
针对前面的问题和关注事宜,本发明尝试增加公知联想存储器装置的灵活性,以便增加它们的效用,同时减少它们的处理时间。

发明内容
本发明的目的在于提供一种有效率的数据处理系统。
本发明的另一个重要方面是,以增加数据处理速度和效率的方式,提供一种用于数据处理系统的实现有源联想存储器的蜂窝引擎或联想引擎装置。
本发明的另一个重要方面是,提供一种用于数据处理系统的实现有源联想存储器的蜂窝引擎或联想引擎装置,它能够通用地利用关键字字段或数据字段中的任何单元。
本发明的另一个重要方面是,提出一种用于数据处理系统的实现有源联想存储器装置的蜂窝引擎或联想引擎,其中在预定命令的执行期间联想存储器装置的关键字字段和数据字段之间没有区分。
本发明的另一个重要方面是,提供一种用于数据处理系统的实现有源联想存储器装置的蜂窝引擎或联想引擎,其各个单元都可以在单个时钟周期内基于其各自状态选择性地并行处理给定指令。
本发明的另一个重要方面是,提供一种用于数据处理系统的实现有源存储器装置的蜂窝引擎或其结构是同性质的蜂窝引擎,因此在执行程序期间在不同时间允许存储在存储器中的完全相同的信息片段作为关键字字段或数据字段(的一部分)。
本发明的另一个目的在于提供一种用于有效率的数据处理系统的蜂窝引擎,它允许动态地限制有源联想存储器装置内的搜索空间。
根据本发明的一个实施例,一种用于数据处理系统的联想存储器支持包括含n个单元的联想存储器装置。设有控制器用于向联想存储器装置发出指令。时钟装置输出同步时钟信号,该同步时钟信号包括每秒预定数量的时钟周期,该时钟装置将同步时钟信号输出到联想存储器装置和控制器。控制器在这些时钟周期的其中之一内全局性地将指令同时传送到所有n个单元,并将指令同等地应用于n个单元的每一个单元。
通过作为整体来考虑说明书、权利要求和附图,本发明及其优选实施例的这些和其他目的将变得显而易见。


图1是示出根据本发明一个实施例的存储器引擎的一般性体系结构的框图,存储器引擎中包括外部控制器和时钟部件。
图2是图示图1的存储器引擎结合不同的总线的框图,这些总线允许在存储器引擎的组成部件之间交换信息。
图3是图示图1的存储器引擎的一般性操作的一个实施例的流程图。
图4是图示图1的存储器引擎的一般性操作的另一个实施例的流程图。
图5是图示图1的存储器引擎处理“c-find”命令的流程图。
图6是图示图1的存储器引擎处理“read”命令的流程图。
图7是图示图1的存储器引擎处理“inserf”命令的流程图。
图8是图示图1的存储器引擎处理“delete”命令的流程图。
图9是图示图1的存储器引擎处理“nexf”命令的流程图。
图10是图示图1的存储器引擎处理“jump”命令的流程图。
图11是示出将存储器引擎的存储器装置与它的环境实现接口以及将多个存储器装置连接在一起所需的输入和输出信号的框图。
图12是图示存储器装置的内部结构的一个实施例的框图,其中通过两个代码转换器电路使静态或动态存储单元的二维阵列可访问。
图13是示出将动态存储单元与它的环境实现接口所需的输入和输出信号的框图。
图14是图示根据本发明一个实施例包括用于符号及其关联的标记符的存储装置的存储单元的内部体系结构的电路图,通过存储单元可以将符号及其关联的标记符存储到广播符号中、从广播符号中读取符号或将该符号与广播符号比较。
图15是图示根据本发明一个实施例的图12所示的代码转换器电路的内部体系结构的电路图,通过该代码转换器电路可以访问二维阵列的存储单元,并允许生成第一个或最后一个标记的单元的地址。
图16是图示作为随机存取存储器(RAM)和RAM控制器的组合的缓冲器存储器的内容的电路图。
图17是图示图16所示的RAM控制器的内部结构的电路图。
图18是示出图1所示的存储器引擎的更详细视图的框图。
图19图示典型联想存储器装置的内容。
图20图示移除了关键字字段和数据字段之间的传统区分的联想存储器装置。
具体实施例方式
CM是对均从有限存储器符号集中提取值的字的字符串的物理支持,通过“设置”附加位将每个字增加,由此使字具有两个状态的其中之一已标记或未标记。本文中将术语“存储器符号”解释为表示固定长度的连续位的集合,其长度取决于具体应用且不设置先验值。
本发明的结构允许在一个时钟周期中执行所有CM命令,且附有约两倍于目前高速缓冲存储器技术中通常遇到的延迟的延迟。本文所描述的结构属于单设的电路,也可以在更精密的电路中复制它。图1图示根据本发明一个实施例的存储器引擎205的一般性体系结构、以及它与外部控制器255和同步时钟电路256的操作关系。将容易认识到的是,外部控制器255和存储器引擎的操作是通过利用从时钟电路256发出的公共时钟信号来协调的。而且,在不背离本发明较广泛的方面的情况下,本发明设想外部控制器255可以具有任何数量的电路专用的配置,只要外部控制器255能够向存储器引擎205发出命令和从其中接收数据即可。
如图2所示,CM 206与组织为缓冲器池的线路存储器随机存取装置200相关联,缓冲器均具有与CM 206的大小相等的大小,且由存储器引擎205(下文称为连接引擎(Connex Engine)(CE))控制。这些缓冲器(也称为线路)的目的是能够对长于CM 206内可容纳的字符串的字符串执行搜索、插入和删除操作,以及提供较低的实现成本和降低的功耗,稍后将对此予以更详细的论述。
图3图示CE 205的一般性应用,开始于框302,其中将先前选定用于由控制器255检查的字符串加载到联想线路存储器206中。字符串由数据符号的集合构成,出于图示的目的,将其加载到线路存储器200中的一个或多个缓冲器中直到完全存储在其中为止。由此,线路存储器200中的每个缓冲器包含字符串的不同部分,每个部分具有等于CM 206的大小的大小,如先前所论述的。
如图3的框304所示,CE 205经数据RAM总线100将要检查的第一缓冲器的内容从线路存储器200加载到CM 206。CM 206然后根据从控制器255输入的命令对字符串的已加载部分执行期望的字符串操作或检查,如图中框306所示。CM 206然后在框308确定是否应该在字符串的已检查部分设置一个或多个数据标记符(datamarker),选择性地在框307设置此类标记符并在框309复位该标记符。将容易认识到的是,有关是否应该在已经移到CM 206的字符串的给定部分内设置一个或多个数据标记符的决策将取决于控制器255输入的具体命令,稍后将对此予以更详细的论述。
在CM 206中检查字符串的一部分之后,而且在有必要的情况下,在其中设置一个或多个标记符,CE 205然后将CM 206的内容存储回线路存储器200的第一缓冲器,加载第二缓冲器的内容并执行相同的操作。CE 205继续这样的模式将缓冲器加载到CM 206,在CM 206中执行字符串处理并将CM 206的内容存储回缓冲器,直到处理了整个字符串为止。因为搜索的符号字符串中存在的局部性等级的原因,加载到CM 206中的缓冲器的数量随着搜索操作次数不断累积而降低,从而快速将批量操作限于少量的缓冲器中。
因此,本发明的重要方面在于响应从控制器255发出的命令,无需重复检查线路存储器200的缓冲器中存储的字符串数据的整体,因为设置的标记符的存在(或不存在)使某些缓冲器可以免于后续复查。例如,如果控制器255发出的命令指示对给定一组数据元素进行搜索(稍后将对此予以更详细的描述),CM 206将首先遍历线路存储器200中的每个缓冲器中的每个字符串,并且它在搜索数据元素的第一个时且适合的情况下设置标记符。然后对线路存储器200中的缓冲器的后续检查将限于包含设置的标记符的那些缓冲器,而排除没有设置的标记符的那些。由此,本发明的CM 206无需重复地搜索不可能包含要搜索的数据元素的所有组成部分的那些缓冲器,由此显著且渐进地消除了大量数据的复查,因此加速了响应时间。
本发明的另一个重要方面在于CM 206能够在一个时钟周期内全部彼此并行地执行许多操作。因此,具体来说参考图3和框306、307、308和309,CM 206允许在一个时钟周期内并行处理这些框。因此将容易认识到的是,图3以及本发明的其他框图所含的各个框不应解释为在它们执行时在时间上是顺序的,相反CM 206允许一个时钟周期内并行处理许多框,如先前所论述的。
下一部分结合控制器255发出的具体命令更详细地描述CM 206的操作和CE 205的操作。
CM 206通过一般从控制器255接收命令和数据来操作。当命令需要数据运算数时,例如查找CM 206中当前存储的字符或符号、字符串中所有出现的给定符号或数据元素的“find”命令,将命令和符号同时馈送到CM 206。CM 206支持多种类型的命令,这些命令分成两个主要类别正向命令和逆向命令。每个类别组包含三种类型的命令设置或复位与单元相关联的标记符的命令,访问设置了标记符的单元中存储的字的命令,以及修改设置了标记符的单元中存储的字的命令。虽然本发明支持与每个存储字关联的一位标记符,但是可以使用多个位来对每个字的状态进行编码而不会背离本发明的更广泛的方面。
我们首先描述属于正向命令组的命令。在逆向组中的指令表现为镜像-映像方式,稍后将对此予以描述。在下文的论述中,术语符号表示任何位逻辑块。对于一些应用,8位字节可以是优选的实现。在其他应用中,例如染色体字符串的生物处理中,符号可以是4位实体。
正向命令为了执行字符串search(搜索)和insert(插入)操作,一次一个符号输入的数据字符串连同命令馈送到CM 206。当命令是搜索时,将每个符号同时与CM 206中当前存储的所有符号比较。还可以执行两种类型的比较有条件和无条件的比较。无条件搜索字符串的第一个符号,而在CM 206中已发现前一个符号的基础上有条件地搜索后续符号。
当操作是插入时,CM 206中位于插入点右手边的符号向右移位一个位置,并将新符号存储在插入点处。在本发明的一个实施例中,插入点是设有标记符的第一个符号的位置。
本发明的另一个重要目的在于,由于CE 205系统体系结构的效率的原因,搜索和插入操作仅在一个时钟周期内执行,如先前所论述的。
对于字符串delete(删除)操作,从CM 206中的删除点读取连续的符号,然后将该点右边的所有符号向左移位一个位置。同样地,删除点是具有设置的标记符的第一个或最后一个存储单元的位置。该操作的读取和移位组成部分同时执行,且仅耗用一个时钟周期。
现在将解释实现上述操作的命令的描述。
find和cfind命令是访问命令。如图3和图4的流程图所示,可以经控制器255将“find”命令连同CM 206以联想方式与它的M个存储单元中所含的所有符号进行比较的符号一起馈送到CM 206。该命令的结果是对其内容与该给定符号匹配的单元之后的所有单元设置标记符。所有其他标记符被复位。图3的框302-314说明一般性意义上的所有命令的执行,而图4的框304′、303和305说明根据本发明另一个实施例、在加载的字符串可以整体容纳在CM 206的那些情况(这里是图3中的步骤304和图4中的对应步骤304’)中find命令的具体实现,稍后将对此予以更详细的论述。如图4所示,find命令的执行在一个时钟周期内发生,其中参考字母E表示在图4的find命令执行之后返回到图3的一般性流程图。例如,假定本发明表示符号,通过在该符号周围加设括号来设置标记符,还假定字符串“RONAND ROBERT”当前存储在CM 206中。将命令find(R)发到CM 206的结果是使它的内容更改成“R[O]N AND R[O]BERT”。设置两个O符号的标记符是因为它们都在含作为要查找的符号的“R”的单元之后,如图3的框308中所示。
用于“有条件查找”的cfind命令的工作方式与find相似,因为也将符号连同命令馈送到CM 206,然后CM 206执行该符号的联想搜索,但是在此情况中,比较中仅涉及线路存储器200中具有先前设置的标记符的单元或缓冲器,如图5的框322所示。结果是出现匹配的单元之后的单元被设置标记符。所有其他标记符被复位。使用上面相同的示例,并假定两个“O”符号仍设置了它们的标记符,则命令cfind(O)将联想比较限制于仅标记的单元。因为它们都包含“O”,所以两个比较都成功,并且在含有“O”的单元的右边的单元的标记符设置为“RO[N]AND RO[B]ERT”。假定现在执行cfind(B),则仅第二个标记的单元显示出成功比较,E符号的标记符设置为“RON AND ROB[E]RT”。该过程继续直到搜索了所有符号或数据元素为止,为此将成功(或非成功的)匹配输出到控制器255,如图5的框324-326所示。
如本文所解释的,将容易认识到的是,图3图示一般可应用于所有输入的命令的本发明的基本功能实施。因此,结合例如框302描述的“字符串”可以包含一个或多个数据元素,具体取决于所发出的命令以及正在操纵或检查的特定数据的特性。而且,虽然图3假定加载的字符串大于CM 206中可容纳的大小,因此需要将相同的字符串分开从线路存储器200移到CM 206以便检查,但是可能情况并不总是如此。如图4所示,备选方法包括将具有CM 206能够容纳的大小的那些字符串直接加载到CM 206中,如框301所示。然后根据具体的命令,加载到CM 206中的字符串的检查将在框303中执行,而框305将按需要设置或复位标记符。
将容易地认识到的是,在CM 206可以容纳要检查的数据的那些情况中,通过选择性地旁路CE 205和线路存储器200,可以相应地节省处理时间和花费的能量。
另一个提出的命令是read-forward(正向读)命令。read-forward命令使CM 206返回第一个单元、即设有标记符的最左边的单元中存储的符号。在呈示的方案中,根据接受的实践,CM 206的最左边符号具有地址0,最右边符号具有地址M-1,假定M个符号的存储容量。
一旦执行了读取操作,则复位刚读取的单元的标记符,并且刚读取的单元的下一个单元的标记符变为被设置。假定CM也包含“RO[N]AND RO[B]ERT”。read-forward命令的结果是CM输出的符号“N”,最左边的标记符更改为如下“RON[]AND RO[B]ERT”。现在标记空格符号。图6将该过程图示为框330,当发出read-forward命令时,其操作可以包括在图3的框308中。
另一个提出的命令是insert(插入)命令。insert命令与符号X一起应用于CM 206。该命令仅对CM 206的第一个单元或最左边的标记的单元生效。当插入符号X时,第一个标记的单元右边的所有单元的内容和状态(包括标记符)都向右移位一个位置,并将符号X存储在第一个标记的单元的先前位置中。将刚接收到新符号的单元的标记符复位。设置该单元右边的单元的标记符例如,假定CM 206包含“R[O]N AND R[O]BERT”则insert(X)使CM 206的内容成为“RX[O]NAND R[O]BERT”。图7将该过程图示为框332,当发出insert命令并且字符串大于CM 206内最初可容纳的大小时,其操作可以在图3的框308中完成。
另一个提出的命令是delete(删除)命令。delete命令通过如下方式工作移除第一个标记的单元中存储的符号,然后将所有单元的所有内容向左移到该单元的右边。假定CM包含“RO[N]ANDRO[B]ERT”,则在delete命令生效之后,CM包含“RO[]ANDRO[B]ERT”。图8将该过程图示为框334,当发出delete命令并且字符串大于CM 206内最初可容纳的大小时,其操作可以在图3的框308中完成。
另一个提出的命令是next(下一个)命令。next命令没有参数,将第一个或最左边的标记的单元的标记符复位。这样,当设置多个标记符时,可以重复使用该命令以允许访问CM 206的所有标记的单元。例如,假定CM 206包含“R[O]N AND R[O]BERT”则next的执行使CM 206的内容成为“RON AND R[O]BERT”。图9将该过程图示为框335,当发出next命令并且字符串大于CM 206内最初可容纳的大小时,其操作可以在图3的框308中完成。
简要回顾图1,index(索引)输出13携带CM 206中的第一个标记的单元的线性地址。例如,如果CM 206的第一个或最左边的单元设置了其标记符,则index返回0。如果第二个单元被标记,则index返回1。假定CM 206包含字符串“RO[N]AND RO[B]ERT”,且CM 206的最左边的单元中存储字符串“RON”,则index返回2,因为符号“N”存储在CM 206的地址2处。
另一个提出的命令是write-one(写一次)命令。将write-one命令连同符号S应用于CM 206,该符号S被写入到CM 206的第一个或最左边的标记的单元。该单元的标记符被复位,并设置该单元之后的单元的标记符。
另一个提出的命令是write-all(全写)命令。将write-all命令连同符号S应用于CM 206,该符号S被同时且在一个时钟周期内写入到CM 206中设有标记符的所有单元。这些单元的标记符被复位,并设置这些单元之后的单元的标记符。
另一个提出的命令是write(写)命令。将write命令连同地址A和符号S应用于CM 206,该符号S被存储在CM 206中地址A的单元中。该命令与随机存取存储器中的写操作相似。与地址A的单元关联的标记符被复位,并设置该单元之后的单元的标记符。
将read(读)命令连同地址A应用于CM 206,并使CM 206输出位于地址A处的单元的内容。该命令与随机存取存储器中的读操作相似。不修改该操作访问的单元的标记符。
另一个提出的命令的是jump(跳转)命令。将jump命令应用于CM206,以解决如下那些情况CM 206中存储长度变化的字符串,其中具有完全相同的前缀和后缀(即以相同的序列开始两个字符串,并以相同的序列结束两个字符串),但是具有不同的中间部分,即可能长度不同,而且如果所有字符串的前缀的最后一个符号是被标记,则CM 206支持称为jump的操作,该操作取一个运算数,并且其行为通过一个示例最好地说明。
假定CM 206在其存储器的不同部分包含两个字符串“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($)的第一实例化之后,上面示例的CM 206中的两个字符串将如下更改“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]%CCCC”。第四个jump($)命令之后“AAA%BB$CCCC”和“AAA%DDD$CCCC”。因此,响应jump命令,CM 206执行如下动作设置了标记符的所有单元将它们的符号与特殊的定界符符号(在我们的示例中为%符号)比较。如果发现匹配,则将该特殊定界符替换为与命令一起提供的符号s(在我们的示例中为$符号)并将该单元的标记符复位。否则,如果未出现匹配,则将该单元的标记符复位,并将单元的标记符直接设置到右边,实际使标记符向右移动一个位置。图10的框336图示在如下那些情况中jump命令的特定实现加载的字符串可以整体容纳在CM 206内(这里是图3中的步骤304和图10中的对应步骤304’),其中参考字母E表示执行图10的jump命令之后返回到图3的一般性流程图。
jump命令在数据库应用中是重要的,其中符号的字符串包含多对字段标识符,或定界符和数据值,其中标识符具有固定长度,但是包含数据值的字段不具有固定长度。如此,本发明有利地提出一种用于检查字符串内的字段的方法,每个字段包含随机大小的数据值,而同时标记字符串中的特定数据字段而不管它们的内容。而且,因为对字符串中标记的单元的每次比较在一个时钟周期内执行,所以可以快速且有效率的方式完成字符串的检查。
本发明的另一个重要方面在于jump命令使用预定定位符符号替换字符串中的定界符符号。因此可以利用定位符符号来标记特定数据字段的结尾,而不管长度,或者可以利用它来使搜索的数据字段之后的数据字段能够被标记。
如上文所描述的,jump命令允许并行地检查CM 206中存储的多个字符串,因此允许并行地识别每个字符串中的定界符符号,其中定界符符号的每次识别和选择性地替换在一个时钟周期内发生。
逆向命令迄今描述的搜索(search)、插入(insert)和删除(delete)机制总是应用于CM 206的第一个标记的单元,并且当它们作用于其他单元时,将那些机制作用于第一个标记的单元的右边。CM 206还支持向后或逆向查找(find)、插入(insert)、删除(delete)、下一个(next)和索引(index)操作,其中这些操作应用于CM 206的最后一个标记的单元。它们的行为镜像上文描述的正向查找(forward find)、插入(insert)、删除(delete)、下一个(next)和索引(index)操作的行为。
reverse-find(逆向查找)命令是连同符号s一起被馈送到CM 206的命令,该命令设置包含符号s的单元的左边的单元的标记符。所有其他标记符被复位。如果CM 206包含“JOHN AND JOHNNY”,则reverse-find(N)将按如下设置这些标记符“JO[H]N[A]NDJO[H][N]NY”。
Reverse-cfind命令是逆向的有条件查找的命令,它与符号s一起被馈送到CM 206,并且CM 206以联想方式仅搜索标记的单元。包含符号s的副本的所有此类单元得以设置了它们左邻的标记符。复位所有其他的标记符。假定CM 206包含“JO[H]N[A]NDJO[H][N]NY”,则reverse-cfind(H)将这些标记符更改为“J[O]HNAND J[O]HNNY”。
Reverse-insert(逆向插入)命令是连同符号s一起被馈送到CM 206的命令。将最左边标记的单元以及其线性右边的所有单元的内容向右移一个位置,并将符号s存储在最左边的标记的单元。该单元的标记符不更改。例如,在“JO[H]N AND JO[H]NNY”中逆向插入“X1”得到新的CM 206的内容“JO[X]HN AND JO[H]NNY”。
Reverse-delete(逆向删除)命令是通过读取或移除最左边单元中的符号,并将其右边的所有单元的内容向左移一个位置。最左边标记的单元的标记符被复位,并设置其左边的单元的标记符。例如CM 206包含“JO[H]N AND JO[H]NNY”,则逆向删除的结果是“J[O]N ANDJO[H]NNY”。
限制范围的命令如先前所指示的,CM 206还支持一些操作,这些操作仅作用于其地址大于两个附加命令可以设置的某个编号的单元。其操作域限于地址大于限制的单元的命令称为受限命令。在此情况中,搜索(search)、insert(插入)和删除(delete)操作不是CM 206中的全部M个字,而是它的较小部分。在此情况中,当执行查找(find)、cfind、插入(insert)或删除(delete)操作时,仅作用于CM 206的连续单元块中的单元。该单元块由位于CM 206的地址解码部分中的特殊地址寄存器在左边定界,延伸到CM 206的最后一个单元,即最右边单元。
Set-limit(设限)是将受限命令的下限地址设置为第一个或最左边的标记的单元的命令。例如,如果CM 206包含字符串“RO[N]ANDRO[B]ERT”,则设限命令将限制地址设为2,因为最左边的标记的符号是“N”,在CM 206中地址2处。
Set-limit-address(设限地址)是连同地址A一起应用于CM 206的命令,而且该命令将此地址存储在保存限制地址所在的内部存储器中。
Limited-find(受限查找)、limited-cfind、limited-reverse-find(受限逆向查找)和limited-reverse-cfind都是受限命令,它们以与find(查找)、cfind、reverse-find(逆向查找)和reverse-cfind命令相似的方式工作,只是仅应用于其地址大于或等于限制地址的单元。
limited-write-all(受限全写)命令连同符号s一起被应用于CM206,并且以与write-all(全写)命令一致的方式工作。它将符号s写入其地址大于或等于限制地址的标记的单元中。
CM 206输出多个布尔信号以反映其标记的单元的状态。
1)如果在CM 206中至少有一个标记的单元,则CM 206将一个信号设为1,否则设为零。
2)如果在整个CM 206中刚好有一个标记的单元,则CM 206将一个信号设为1,否则设为零。
3)如果上次有条件查找(conditional-find)类型命令(正向、逆向或受限)不成功(没有设置任何标记符),则将一个信号设为1,CM 206自动返回到查找类型操作,这可能会设置一些标记符。
4)如果具有预定二进制模式的一个或多个字符设置它们关联的标记符,则将一个信号设为1。这些字符用于表示空或无效符号的位置,正在由操作设置的其标记符表示必须由外部控制器255寻址的非常条件。
5)CE将一个信号设为1,以指示缓冲器都不包含设置了标记符的符号或RAM控制器将所有缓冲器加载在CM中,以及没有余下缓冲器要加载。
连接引擎如前文所提及的,图2中图示了连接引擎(CE)205。它是利用随机存取存储器实现的、管理存储在CM 206和线路存储器200的缓冲器(也称为线路)中的符号的字符串的电路。每个线路具有容量等于CM206的容量,包含M个(N+1)位的字。CE 205在如计算机或处理器的外部实体的控制下,允许交换要写入包含线路或缓冲器的线路存储器200(LM)或从其中读取的CM 206的全部内容。写操作将线路的内容写入到CM 206中。读操作将CM 206的内容存储在线路中。这两个操作都耗用一个周期。外部处理器可以使用insert(插入)或write(写)命令将信息写入到CM 206中,并经数据输入总线10馈送符号。可以经两条路径从CE 205读取符号一条是经由CM 206,例如通过在命令线14上发出读命令,并在数据输出总线11上捕获符号。另一条路径是根据具体实现直接从LM 200中的线路读取含有一到多个符号的字。在此情况中,经字地址总线203将字的地址发送到CE 205,从数据字总线204获取这些字。data-ram总线100允许将CM 206的内容存储在LM 200的给定线路中或从中读取该内容。该总线包含M*(N+1)条导线并允许在一个时钟周期内读取或写入整个CM 206。
图16示出构成LM的两个组件的框图。一个是其中存储线路的随机存放存储器(RAM)130,另一个是RAM控制器120。RAM控制器的目的是将线路快速地馈送到CM 206,以便可以快速处理RAM中的线路集合中存储的符号的字符串。为此,RAM控制器执行经RAM的审查通过(pass),其中它扫描存储在RAM中的线路的集合并将选择的子集发送到CM 206以供处理。RAM控制器为RAM中的每个线路保留存储器的两位。第一位指示是否应该在当前审查通过期间,将它关联的线路发送到CM 206。RAM控制器自动且在恒定的时间内生成其第一位设为1的线路的连续地址,并允许将它们的内容存储在CM 206中以供处理,以及从CM 206中写回来。当CM 206将刚处理的线路存储回RAM时,将No-flag(无标志)信号15的值存储在RAM控制器管理的该线路的第二位。在当前审查通过结束时,RAM控制器将与所有线路关联的所有第二位的值复制到它们关联的第一位。该新的位集合指示哪些线路得以设置标记符,并应该在下一个审查通过中处理。
在RAM中不是所有线路而是小部分包含有效信息的情况中,其中所有线路是连续存储的,且在线路地址0处开始,可以将最后一个有效线路的地址指定到RAM控制器以将它的初始审查通过限于该有效线路组。由外部处理装置使用限制地址207信号将该地址馈送到RAM控制器。
可以在包含CM206的同一个硅芯片上或使用现有的存储器电路在硅芯片外实现L个线路集合的LM 200。在这两种情况中,CE 205用于通过如下方式管理存储在L个线路中的信息将存储在线路中的信息送到CM 206中,在CM 206中执行诸如先前部分中描述的那些命令的字符串命令,将CM 206的内容送回线路,允许在比CM 206的M个符号的存储容量长得多的字符串中执行字符串操作。
当需要insert(插入)和delete(删除)操作时,不以符号将线路填充到容量极限,而是仅部分填充,以便允许按这些操作在CM 206中扩大和缩小符号的字符串。在此类情况中,以正在被处理的字符串中未发现的预定二进制模式来初始化未包含有效符号的CM 206的单元。CM 206生成称为中断的外部处理实体的信号,在图2中标为101。当包含该特殊二进制模式的CM 206的一个或多个单元设置它们的标记符时,激活该信号。
CM 206及其外部连接我们区分一下两种类型的连接。一种类型对应于CM 206与它的环境的互连,另一种类型对应于电路的扩展所需的信号,即多个CM206电路连接在一起以增加存储量的情况。
在下文中,我们假定基本CM 206块可以存储存储器的M个字,以及每个字长度为N+1位,N位用于符号和1位用于标记符。
下面列出了图11所示的CM 206的系统连接。圆括号(如果存在的话)中的数字表示每个信号的位数。当使用对数函数时,假定它是以2为对数的底。
·Data-in(M)用于在CM 206中输入符号的N位字的数据输入10。
·Data-out(M)用于从CM 206读取符号的N位字的数据输出11。
·Address(log(N))log(N)位的地址输入12,其中log()是以2为对数的底。
·Data-RamM*(N+1)位的双向数据输入100和输出,允许将存储缓冲器或线路的其中之一的内容写入到RAM 200中的线路中或从其中读取内容。
·Index(log(M))log(M)位的输出13,根据上次执行正向还是逆向操作,它保存第一个或最后一个标记的单元的地址。
·Interrupt(1)该信号由CM 206为外部处理实体生成,它指示包含用于指示空或无效条件的预定义特殊二进制配置的一个或多个单元设置其标记符。
·Command(5)命令代码的5位输入14,表示CM 206要执行的操作。
·No-flag(1)二进制输出信号15,指示CM 206不包含任何标记的单元。
·No-eq(1)二进制输出信号16,指示上次有条件查找(conditional-find)系列命令(正向、逆向或受限cfind)未设置任何标记符。
·One-flag二进制输出信号17,指示CM 206刚好包含一个标记的单元。
·clock时钟信号的输入信号24,它控制CM 206的操作。
信号data-in、addr和com相对于有效时钟沿具有关联的建立和保持时间。信号data-out、index、no-flag、no-eq、one-flag在与访问存储器关联的延迟之后变得稳定。该延迟是相对于时钟信号的有效沿来测量的。
当多个CM 206电路或模块在一维阵列中连接在一起,从而扩展内部移位寄存器时,使用多个信号以线性方式将CM 206模块链接在一起。图11中示出这些信号,并描述如下。
·Data-left-in(N+2)从前一个模块接收的信号26且携带符号(M位)、其关联的标记符(1位)和与该标记符(1位)关联的比较符的输出的二进制表示。
·Data-left-out(N+2)生成到前一个模块的信号25且携带符号(M位)、其关联的标记符(1位)和与该标记符(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。
标题为“内部结构”的部分中更详细地定义了前四个信号组。如果这8个链接不用于扩展存储器,则必须使用常规技术正确地连接和/或中止它们,以便允许CM 206系统的正确操作。
CM 206的内部结构图12是示出包括CM 206的单元30的二维阵列的框图,使用信号将它与其他CM 206或CE 205电路实现接合,这些电路允许选择单元并报告有关标记的单元的位置的状态信息。单元阵列由按二维阵列组织的M个N+1位单元组成。选择二维是出于两个原因。第一,为了使硅区域的利用最大化,其次,为了使CM 206中传播信号相关的延迟最小化。不使用RAM电路中常见的典型解码器,CM 206而是使用代码转换器电路,因为需要根据执行的命令将地址编码、解码和转码。二维方法要求使用两个代码转换器电路,每个维对应一个。
将容易地认识到的是,或者可以一维阵列的存储单元形式构成CM 206,而不会背离本发明的更广泛的方面。
图12所示的CM 206的内部结构包括如下子系统·符号单元用于符号的存储器或动态存储器、单元由M个单元的二维阵列30构成,这些单元各用于存储器中所含的每个符号(第一个单元位于第一线路以及2维阵列的第一列中)。出于呈示的目的,在表1(如下)中将这些线路从下向上按升序编号,而将列按从左向右按升序编号。
·Data-RamM*(N+1)位的双向总线100,它允许将存储器线路中存储的M个符号及其关联的标记符(这里假定位于符号单元区域(30)中)写入到外部数据存储器或从其中读取。选择此传输中涉及的线路由X代码转换器电路39生成的line-select 106信号来执行。
·Interrupt(中断)该1位信号由CM 206中一个或多个单元生成,这一个或多个单元包含用于表示空单元或含有无效符号的单元的预定义唯一二进制模式,使得一个或多个单元设置它们关联的标记符。
·X代码转换器该电路39包含结合Y代码转换器电路40用于寻址和访问CM 206中的单元的逻辑。
·Y代码转换器该电路40包含结合X代码转换器电路39用于寻址和访问单元阵列中的信息所需的逻辑。
·两输入AND门门34接收两个代码转换器电路生成的eq信号36和41,并生成信号one-flag(1标志)35。
·这两个代码转换器电路将CM 206的内容划分成三个区域位于第一个标记的单元之前的单元的集合,第一个标记的单元和开始于第一个标记的单元的单元的集合。
下文列出的信号对CM 206电路的内部部分操作。因为包含M个单元的二维阵列的原因以及因为必须计算最低或最高地址标记的单元的地址,所以代码转换器电路的操作依赖于几个关键信号line-out、line-in、column-out和column-in。
·Line-outline-out信号42的数量是 将line-out信号的每一个与二维单元阵列的一行关联,如果该行包含标记的单元则处于有效状态,否则处于无效状态。
·Column-out相似地,在数量上编号 的column-out信号44对应于二维单元阵列的每个列。如果它对应的列包含第一活动线路上标记的单元,则column-out组的信号处于有效状态,否则处于无效状态。
·Line-inline-in信号43的数量是 二维阵列的每个行从X代码转换器接收两个信号line-in[1]和line-in
,它们表示如下条件·该行是否是包含标记的单元的第一行;以及·该行是否高于或等于包含标记的单元的第一行。
例如,假定有8×8的二维单元阵列,内容如下所示,其中括号包括标记的单元中的符号。最上一行和第一列的数字表示用于访问CM 206的行和列的编号系统,它们不是存储在阵列中的符号。
0 1 2 3 4 5 6 70 X X X X X X X X1 X X X X X X X X2 X X X X X X X X3 X X X X X X X X4 X X [X] X X X [X] X5 X X X X X X X X6 [X] X X X [X] X X X
7 X X X X X X X [X]表I然后按行0、1、2至7的次序列出的line-out信号42等于00001011。按相同的次序,line-in信号43的line-in[1]信号是00001000,line-in信号43的line-in
信号是00001111。
·Column-in 45将Y代码转换器电路的每个列与两个输出信号column-in
和column-in[1]关联,这两个输出信号指示如下条件·该列是否包含二维阵列的第一标记的单元。
·该列是否等于包含第一标记的单元的列或它是否属于更高地址。
使用上面所示的8×8二维阵列的相同示例,并列出与编号为7下至0的列关联的信号,column-in信号45包含值00100000和00111111。
CM 206的单元的内部结构除了已经呈示的data-in、data-out和com信号外,下列信号将含有符号和标记符的基本单元与其环境关联,如图13和14所示。
·Data-left-outN+2位信号25承载向前一个单元传播的信息,并且N+2位信号25由N+1位left-cell-out信号及其关联的标记符位组成,这些left-cell-out信号承载存储在单元中的符号。
·Left-eq-out(1)单元内的比较符55生成的输出信号54。
·Data-right-out(N+2)N+2位信号承载向下一个单元传播的信息,并且N+2位信号由N+1位right-cell-out信号及其关联的标记符位组成,这些right-cell-out信号承载存储在单元中的符号。
·Right-eq-out(1)单元内的比较符的输出信号55。
·Data-left-in(N+2)N+2位信号承载从前一个单元接收的信息,N+2位信号由N+l位left-cell-in信号52和1位信号left-eq-in 53组成,这些left-cell-in信号承载存储在前一个单元中的符号及其关联的标记符位,1位信号left-eq-in 53承载前一个单元内的比较符55的输出。
·Data-right-in(N+2)这些N+2位信号承载从下一个单元接收的信息,N+2位信号由N+1位right-cell-in信号58和1位信号right-eq-in 56组成,这些right-cell-in信号承载存储在下一个单元中的符号及其关联的标记符位,1位信号right-eq-in 56是下一个单元内的比较符55的输出。
·Line-out(1)是生成标记符的反相值的开漏输出。它以并行方式连接来自二维阵列的相同线路上的所有其他单元的所有line-out信号42,并成为X代码转换器电路39的输入的其中之一。
·Column-out(1)是1位信号44,并且是仅在含标记的单元的第一线路上生成标记符的反相值的开漏输出。它以并行方式连接来自二维阵列的相同列上的单元的所有column-out信号,并成为Y代码转换器电路40的输入的其中之一。
·Line-in(2)line-in[1]和line-in
构成line-in信号43,它们由X代码转换器电路39生成,并能够表示如下条件·line-in[1]该单元属于包含二维阵列的第一标记的单元的线路。
·line-in该单元属于等于包含阵列的第一标记的单元的线路或是具有更高地址的线路的线路。
·Column-in(2)column-in[1]和column-in
构成column-in信号45,并且它们由Y代码转换器电路40生成。它们表示如下条件·column-in[1]该单元属于包含第一标记的单元的列。
·column-in该单元属于起始于含第一标记的单元的列。
·No-eq此开漏输出16在该单元中“发明内容”部分中描述的cfind类型的命令成功时处于低电平有效。
·Symbol-data(N+1)这些双向信号106允许将单元的内容(N位符号加1位标记符)写入到外部存储位置或从外部存储位置读取。
·Interrupt 101此信号是在设置了标记符的情况下由单元生成的,并且所存储的符号是预定义且唯一的二进制模式,表示无效符号或指示该单元为空。此信号由开漏驱动器生成,将阵列中的M个单元生成的所有M个中断信号一起执行或运算,以生成图3中的中断101。
单元的内部结构图14示出单元的内部结构,它包括如下电路·REG电路60是包含存储在单元中的值及其关联的标记符位的值的(N+1)位寄存器。
·MUX1电路61是N个四输入多路复用器的集合,它们允许根据称为c1和c2的选择码65和66将多个值的其中之一存储在REG中。多路复用器61的可能选择是·data-in信号10上存在的外部值,·symbol-data信号106上存在的外部值,·left-cell-out信号51承载的来自前一个单元的值,·right-cell-in信号58承载的来自下一个单元的值,或·存储在寄存器REG 60中的值,它允许寄存器的动态实现。
·MUX2电路62是四输入多路复用器,它允许根据称为c3和c4的选择码67和68将四个位的其中之一存储在REG中的最高有效位中。多路复用器62的可能选择是·PLA 63生成的标记符,·symbol-data信号106中存在的标记符位,·信号left-eq-in 53承载的来自前一个单元的标记符,·信号right-eq-in 56承载的来自下一个单元的标记符,或·存储在寄存器REG 60中的标记符,它允许该位的动态实现。
·COMP电路55是组合电路,它仅在data-in输入信号10上存在的符号等于该单元的N位内容时在其1位输出上生成1,并且它们由信号right-cell-out 59承载。
·Symbol-data(N+1)这些信号106承载来自给定线路的单元的内容,或将REG中CM 206单元的内容承载到外部存储实体。传输方向由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驱动信号np-eq 16。反相器70驱动column-out信号144。PLA 63接收多个输入信号·command信号14,它承载要由CM 206执行的命令(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,该中断信号15在寄存器60包含用于标记未使用或无效单元的预定义符号时以及在设置了与寄存器关联的标记符时被激活。
寄存器60的表示存储在其中的符号的N位输出被信号c5 69控制的N三态反相驱动器71反相,它们变成信号data-out 11。开漏反相器64将寄存器REG 60中存储的标记符位反相,并生成信号line-out42。开漏反相器生成信号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-out信号包含 位这些信号(各来自二维单元阵列的每个线路)用于指示这些线路上标记的单元的存在。
·Address-high信号96包含log(N)/2位,表示馈送到CM 206的地址的上半部,并它用于选出二维阵列中的 个线路的其中之一。
·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代码转换器电路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信号的输出,并用于为受限操作界定CM 206的有效部分。它使用c7信号93作为加载命令。
·MUX-4多路复用器电路87具有与MUX-3 82电路相同的结构,并使用c8信号94作为选择信号。
· xor门的线性网络XOR-1 86用于确定MUX-4电路87输出的二进制配置中1的第一次出现。
·用于对X代码转换器中的line-outs 42或Y代码转换器中的column-outs信号44进行编码的优先级编码器PE 80,这两个信号在X代码转换器中生成索引字段的上半部index-high 38和在Y代码转换器中生成下半部index-low 46。
·RPE优先级编码器81接收与PE优先级编码器80相同的输入,但是相反的次序,使得它可以生成c-index字段的上半部和下半部。
·PLA电路84是一个小组合电路,它可以由可编程逻辑阵列实现,并对命令字段14解码以生成用于控制代码转换器电路的c9位92、c10位93、e11位94和c12位95。
·XOR-2电路89生成p/2位值,该值被馈送到p/2输入AND门88,并生成eq信号36。此eq信号是将索引的上半部index-high 98与X代码转换器39中的RPE电路81生成的逆向索引的上部内容比较的结果,或是将索引的下半部index-low 99与Y代码转换器40中的RPE电路81生成的逆向索引的下部内容比较的结果。
RAM控制器图16图示RAM控制器12的实现,而图17是图示RAM控制器12的内部结构的电路图。RAM控制器为存储在RAM中的每个线路保存两个存储位。第一位存储在包含L位的寄存器AR 208中,RAM中的每个线路对应于一位。将L位的内容馈送到优先级编码器P-ENC210,优先级编码器P-ENC 210输出最低权值设为1的位的二进制表示。优先级编码器210的输出是line-address 201,并且是RAM中要为下次CM 206读或写操作选择的线路的地址。例如,如果AR包含00101110,则P-ENC在line-address上输出010,这是AR中设为1的最低有效位的地址。还将Line-address 201馈送到多路复用器MUX-7213的0输入,多路复用器MUX-7 213在被相应选定时将line-address信号的内容馈送到解码器ADCD 214。该解码器具有L个输出,1个有效的和L-1个无效。该有效输出具有与AR 208中其权值或地址由P-ENC 210输出的最低有效1位相同的权值。例如,如果line-address是010,则ADCD 214输出00000010,其中设为1的位具有权值2。由L个xor门215将ADCD 214输出的L个信号与AR 208输出的L位执行xor,以生成AR中存储的相同二进制模式,但是其中AR中的最低有效1位现在被设为0。使用相同的示例,如果AR包含00101110,则P-ENC输出010,它被馈送到ADCD变成00000010,00000010与00101110执行xor得到00101100,粗体的0位指示AR的内容与XOR门215的输出之间的差。将XOR门215的输出经多路复用器MUX-6 209馈送到寄存器AR,其中当step-enable信号222处于有效状态时在下一个时钟周期存储它们。该信号是信号202的com组的一部分,而且是在控制CE 205的外部处理实体的控制下。
AR、P-ENC、MUX-7、ADCD、L个XOR门以及MUX-6的组合构成一个电路,该电路以二进制形式存储在AR中的数字K开始时,在line-address上输出和等于K的2的连续幂。而且,在step-enable信号的控制下,此电路在连续的时间上生成2的每个幂。当所有1位从AR寄存器消失时,优先级编码器检测到该情况,并激活信号stop221,该信号被外部处理实体测为当前阶段中没有线路再需要处理的标志。在循环中,该装置自动生成所有位设为二进制数1的连续权值,并且每个权值的输出仅耗用一个周期。
在寄存器AR中的1连续消失的同时,CM 206中处理线路并执行字符串操作。这些操作结束时,当CM 206的内容被存储回线路时,no-flag信号15被反相并与init信号224执行or运算的值记录在属于L个D型触发器218的其中之一的D型触发器中。L触发器组中选择的触发器的地址与该线路在RAM中的地址相同,触发器的选择利用ADCD电路214的输出来执行,下文将对此予以描述。这些L个触发器包含新模式的1和0,表示在下一次通过验证操作中必须处理的下一组线路。
RAM控制器的初始化需要以如下方式将1存储在AR的位中RAM中需要处理的线路将它们关联的AR为设为1。这些有效线路以连续的块存储在RAM中的连续地址处,使得将该块的最低地址设为0。例如,如果RAM中仅三个线路有效,则AR寄存器的最低3位必须设为1,其余设为0。在此情况中,最高地址线路的地址是2,因为有效线路具有地址0、1和2。在此情况中,控制外部实体在limit-address 207信号上将最高线路的地址发送到RAM控制器,并激活init信号224。所导致的动作是,通过多路复用器MUX-7的limit-address信号上的log(L)地址被ADCD解码成L个信号,其中除了权值等于limit-address的内容的信号外全为0。
然后将MUX-7的输出馈送到前缀OR电路OR-PN 216,前缀OR电路OR-PN 216将值为0且权值小于其输入中仅1位的权值的所有位变换为1。例如,如果OR-PN电路接收00000100,其中1位的权值是2,则其输出是00000111。然后将这L个信号传送通过L个OR门219并馈送到L个D型触发器218的D输入。L个D型触发器218分别由ADCD电路生成的L个信号使能,并分别与init信号224执行OR运算。然后通过激活控制多路复用器MUX-6 209的启动信号将其中每个输出为1对应于RAM中的有效线路的这L个触发器的内容加载到寄存器AR 208。
如图18所示,CE 205由有效单元或处理部件的阵列构成,实施为连接存储器(CM)206和包含多个矢量400的RAM(随机存取存储器),每个矢量具有与CM 206相同的存储容量并因此能够选择性地存储CM 206的整个内容。即,CE 205包括具有n个单元的CM 206和关联的矢量存储器400的CM 206,CM 206受控制器255的控制。在本发明的一个实施例中,存储器矢量400的目的是允许对比CM 206内可容纳的字符串长的字符串执行搜索、插入和删除操作,并且提供较低的实现成本和降低的功耗,稍后将对此予以更详细的论述。
提供到CE 205的代码的执行由控制器255驱动。CE 205/控制器255接口利用四个特殊寄存器,也如图18所示·“INR”402-数据输入寄存器;在一个实施例中,所有CE 205指令从INR(控制器205提供的)得到它们(直接)数据变元(如果有的话);·“OUTR”404-数据输出-包含“no_mark”位和值。如果标记单元的至少其中之一,则OUTR包含0、后面是第一标记的单元中所含的值;否则OUTR包含1、后面是实现相关的特殊值,如11...1;·“OPR”406-指令寄存器,它包含用于当前CE 205指令的操作代码(该源是控制器255指令中的专用字段);·“VAR”408-矢量存储器的地址寄存器。VAR 408寄存器由特殊控制器255指令更新,并用作明确地操作矢量的指令的变元;VAR408寄存器还用于所有操作的执行,包括与单元相关的普通寄存器。
再如图18所表示的,可以选择性地利用输入/输出线410来访问CM 206的两个端。正如所利用的,输入/输出线410具有如下含义·“left_in”412={w,mark,eq,first},缺省情况下全部为0(eq=1意味着该单元中的两个运算数相等;first=1意味着该单元是第一标记的单元);·“left_out”414={w,mark,eq,first},来自第一单元;将容易认识到的是,在不背离本发明较广泛的方面的情况下,本发明设想CE 205可以具有任何数量的电路专用的配置,只要控制器255能够向CE 205发出命令和从其中接收数据即可。因此,本发明的一个重要方面在于CM 206内的每个m位单元除了存储数据外还能够选择性地处理数据。数据的处理可以在每个m位单元内执行,或通过作用于紧邻预定单元左右的单元来执行。应该注意的是,通过以此方式增强CM 206内的每个m位单元的功能,本发明呈示更为复杂的系统级行为,因此超出其他数据处理系统的性能。
本发明的另一个重要方面在于通过能够部分地“标记”每个单元(作为条件或预测的一部分)、指定它作为后续执行任务的单元或自行执行运算数或CM 206内的相邻单元来实现CM 206内在单元级上选择性地处理数据的能力。
本发明的数据处理系统的另一个固有优点包括蜂窝引擎内的每个单元不仅能够在单个时钟周期内同时执行指令,而且还能够利用本地和全局状态信息动态地限定执行这些全局广播指令的那些单元。具体来说,通过在单个单元级上利用标记符位,联想存储器内的实际单元以迄今非公知的方式能够作用于标记的单元左右的那些单元。因此,在系统级上,本发明提出通过联想机制即通过CM 206内各个单元的内容的特征或特性而非其中具体指定的位置地址来实施选择性激活或变更标记的单元。
因此,本发明在非常紧密的级别上将处理和存储器组合,这意味着CM 206的单个单元从不需要访问分离的存储器块来执行其作业。而且,运算数在单元级上驻留在它们各自的本地空间中,因此结果本地保存,从而节省通信和处理时间、硅面积和功率。
还通过CM206能够选择性将其n个单元内存储的位的任何位置表征为关键字字段或数据字段的一部分来强化CM 206的更高灵活性。即,对比于其中严格定义关键字字段和数据字段的公知联想存储器体系结构,CM 206能够根据所发出的命令和期望的操作的特征来将它的存储器内存储的任何位视为关键字字段位或数据字段位。
图19图示典型联想存储器500的内容。将容易地认识到,图19是具有一行包括12列的存储器单元的联想存储器装置的简化表示。当然本发明并不局限于此类体系结构,并且实际上可设想更大且更复杂的单元阵列,图19仅仅是利用来说明的。
如图19所示,存在6列关键字字段502和8列数据字段504。虽然将容易设想到关键字字段502和数据字段504的实际长度或大小属于设计选择的问题,但是公知的联想存储器引擎这两个字段之间对于所有命令和操作仍存在区别。即,公知的联想存储器装置在它们的关键字和数据字段的特征和大小方面是特定的。例如,假定使用联想存储器来实现快速数据库,使得它的数据字段表示具体的数据内容,例如有关雇员的信息,而关键字字段表示雇员的姓氏。因此,根据简化的命令,典型联想存储器中的控制器将利用包含潜在被查找数据的数据字段504搜索关键字字段502以便确定它是否与姓名“Smith”匹配,并“标出”与等于“Smith”的关键字关联的所有数据字段504,以便指示存在或不存在被查找的数据。注意在本示例中关键字从不长于6列。
但是在本发明的存储器引擎中,去除了关键字字段与数据字段之间的区分,因此对于控制器来说可以响应发出的命令全局性地将字段502或字段504内包含的任何单元作为关键字的一部分来考虑和评估。
应该注意,公知联想数据处理系统和本发明之间的区分不属于结构方面的,而属于软件和发出的命令的实现。即,根据本发明,控制器可以根据发出的特定命令选择性地考虑将联想存储器装置内的所有单元作为“关键字”的一部分或“数据”的一部分。因此,任何特定单元的“关键字”或“数据”属性在命令本身中表示,而不是联想存储器装置的结构性组织的功能。
如图20所示,控制器结合具体命令可以在具有14个单元行的14个单元的联想存储器510中的单元2中(即其他方面被视为传统关键字字段(虚线所示)的那个单元内)定位被查找的数据,或它可以将单元9(即其他方面被视为传统数据字段(虚线所示)的那个单元内)作为关键字的一部分。因此,将容易认识到本发明的联想存储器引擎呈现出远比公知联想存储器引擎更大的灵活性。
实际上,因为本发明有效地消除了联想存储器装置内关键字字段与数据字段之间的传统区分,所以显著地增加了存储器引擎的编程能力。
返回到有关雇员姓氏的上面示例,公知联想存储器系统通常是针对具体使用的或对于具体使用专门设计的,因此无法搜索或标识具有完全不同结构的数据(例如16列的关键字和1024列的数据)。差别较大地,因为本发明不识别关键字字段和数据字段之间的区分,实际上因为本发明结合每个分开的命令选择性地重新定义被视为“关键字”的内容的特征,所以本发明能够实现基本通用的联想存储器系统。
作为示例,可以利用例如5单元关键字来控制根据本发明对数据处理的联想存储器支持以标识所有雇员的姓氏。然后可以利用控制器发出的下一个命令基于例如2单元关键字等定位另一种类型的数据。因此,本发明避免了像公知联想存储器系统的情况中那样对每个具体使用重新设计或专门调整机器的需要。相比之下,本发明能够根据所发出的命令单独处理每个关键字,能使本发明支持仅可利用选择的长度和内容针对特定化的数据选择性地采掘的非专门的联想存储器。
就此而言,应该容易地认识到,先前结合图3-10论述的命令的实现至少部分基于存储器引擎可移除或忽略CM 206内的关键字字段和数据字段之间的传统区分的独一无二的能力。
还将容易地认识到控制器255能够在一个时钟周期内将预定的命令全局性地广播到CM 206中的n个单元的每一个,以及n个单元的每一个能够在一个时钟周期内处理发出的命令,这些能力同样可应用于存储器装置能够利用n个单元的每一个内的所有位,而无论它们的位置或关键字和数据字段之间的任何区分,并且得到后面这种能力的支持。
虽然参考优选实施例描述了本发明,但是本领域技术人员将理解,在不背离本发明实质范围的前提下可以进行多种形式的更改,并且能以等效物替代其部件。因此,本发明不应限于所公开的具体实施例,而是本发明包含落在所附权利要求的范围内的所有实施例。
权利要求
1.一种用于数据处理系统的联想存储器支持,所述联想存储器支持包括包含n个单元的联想存储器装置;用于向所述联想存储器装置发出指令的控制器;用于输出由每秒预定数量的时钟周期组成的同步时钟信号的时钟装置,所述时钟装置将所述同步时钟信号输出到所述联想存储器装置和所述控制器;所述控制器在所述时钟周期的其中之一内全局性地将所述指令同时传送到所述n个单元的全部;以及其中所述指令同等地应用于所述n个单元的每一个。
2.一种用于数据处理系统的联想存储器支持,所述联想存储器支持包括包含n个单元的联想存储器装置;用于向所述联想存储器装置中的所述n个单元发出命令的控制器;其中所述命令定义用于标识所述n个单元内的数据的关键字字段的组合。
3.一种用于数据处理系统的联想存储器支持,所述联想存储器支持包括包含n个单元的联想存储器装置;用于向所述n个单元发出指令的控制器;以及其中所述指令定义在所述指令执行时所用的关键字字段的大小和特征。
4.如权利要求3所述的用于数据处理系统的联想存储器支持,其特征在于所述关键字字段应用于所述n个单元的全部。
全文摘要
一种用于数据处理系统的联想存储器支持包括含n个单元的联想存储器装置。设有控制器用于向联想存储器装置发出指令。时钟装置输出同步时钟信号,该同步时钟信号包括每秒预定数量的时钟周期,该时钟装置将同步时钟信号输出到联想存储器装置和控制器。控制器在这些时钟周期的其中之一内全局性地将指令同时传送到所有n个单元,并将指令同等地应用于n个单元的每一个单元。
文档编号G11C15/00GK101076787SQ200580022459
公开日2007年11月21日 申请日期2005年4月29日 优先权日2004年5月10日
发明者G·斯蒂芬, D·蒂鲍特, D·托梅斯库 申请人:亮标公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1