数据结构的选择性复制的制作方法

文档序号:6656782阅读:219来源:国知局

专利名称::数据结构的选择性复制的制作方法数据结构的选择性复制^目关申请这份申请要求在2004年9月10日申请的美国专利临时申请第60/609,211号和在2005年4月8日申请的第60/669,655号的利益。上述申请的全部教导在此通过引证一皮并入。
背景技术
:开放式系统互连(OSI)参考模型限定用来在传输媒体上通信的七个网络协议层(L1-L7)。上面的层(L4-L7)表现终端对终端通信而较低的层(L1-L3)表现当地通信。知道的联网应用系统需要处理、过滤和切换一系列L3到L7网络协议层,举例来说,诸如超媒体传输协议(HTTP)和筒单邮件传输协议(SMTP)之类的L7网络协议层和诸如传输控制协议(TCP)之类的L4网络协议层。除了处理网络协i义层之外,知道的联网应用系统需要通过L4-L7网络协议层以基于访问和内容的安全措施(包括防火墙、虚拟个人网络(VPN)、加密套接协议层(SSL)、非法侵入探测系统、英特网协议安全、在网速下防病毒和抗垃3及邮件功能性)同时4呆护这些协i义。网络处理器可用于高吞吐量L2和L3网络协i义处理,也就是说,完成信息包处理,以便以网速转发信息包。通常,通用处理器用来处理需要更智能的处理的L4-L7的网络协议。举例来说,传输控制协议(TCP)即L4网络协议需要一些加强计算的工作,包括计算信息包在整个有效载荷上的4交-验和、管理TCP^:緩冲区以及总是把多个定时器维持在每一连接基础上。虽然通用处理器能完成加强计算的工作,^f旦是它不具有足以处理凄t据以致它能以网速转发的性能。此外,知道内容的应用调查信息包的内容,需要在数据流中搜索包含被重复不同数目的固定信息串和字符类别两者的表达式。一些搜寻算法用来用软件完成这件工作。一种这样的算法是确定性有限自动机(DFA)。当使用DFA搜寻算法的时候,可能有一些限制,例如,在有重复式样的数据流中曲线图大小和错误匹配的指数型增长。由于这些限制,内容处理应用需要对式样:後寻所产生的结果进行大量的后处理。后处理的需要以其它的连4妻状态信息(例如,连接类型),和在信息包中所包含的协议标题中的特定数值限定匹配式才羊。它还需要特定的其它类型的加强计算的限定,举例来说,如果它在数据流里面的特定位置范围内,或者如果它^艮在另一个式样后面并且距前面的式才羊在特定的距离之内或离开前面的式才羊在特定的偏移量之后/在特定的偏移量,式才羊匹配才是有效的。举例来i兑,^见则表达式匹配4巴不同的算子和单一的字符结合起来,从而允许构成复杂的表达式。
发明内容内容处理应用(例,用于远禾呈通^f言和耳关网的那些)的完成通常受益于在处理器上充当主机提供相对快速的处理速度。举例来说,诸如侵入探测和预防和防病毒之类的应用为了避免数据的延迟和/或丟失与它到达一才羊快速地处理输入lt据。快速的存^f渚器访问对于需要大量的后处理的应用(包括依赖式样搜寻所产生的结果的那些)也是重要的。低延时存储器器件提供一种提供相对快速的访问时间的解决方案。一些低延时装置提供很好地在100纳秒以下的访问时间。然而,当对储存在存储器中的同一数据结构发出多个访问请求的时候,即使它是低延时存储器,后面的对同一数据结构的请求通常将被延迟到较早的请求完成。一种减少由于访问请求重叠造成的延迟的方法是使用被配置成包括多个存储体的低延时存储器。然后,可以把相同的数据储存或复制在多个存储体之中的不止一个存储体上。复制储存在低延时存储器中的全部数据将保证该数据的多余副本可用于独立地为重叠的访问请求服务,借此减少延迟。遗憾地是,低延时存储器与其它的传统存储器相比价格昂贵并因此更罕见。因此,复制所有储存数据(取决于应用)可能是不实用的,甚至是不可能的。此外,访问请求重叠的可能性通常对于多处理器系统将更大,在这种系统中多个独立的处理器每个都对储存在低延时存储器中的同一数据发出访问请求。本发明通过有选择地复制储存在低延时存储器中的数据克服这些限制,以致复制的程度是可选择的。举例来说,复制的程度可能取决于特定数据结构的重要性(例如,使用频率)。因此,相对偶尔访问的数据结构可能不被复制或者复制到较低的程度,因为访问请求重叠的可能性将比较低。反之,相对时常访问的数据结构可能被复制两次以上,因为访问请求重叠的可能性通常将依照4吏用频率逐、渐增力口。低延时存储器访问控制器接受把数据结构储存在低延时存储器中的请求。举例来说,该数据结构可能是确定性有限自动机(DFA)曲线图。所述请求能由库欠件在系统初始化时产生而且包括:用于储存该数据结构的复制因子。数据结构是依照复制因子复制的。优选的是,低延时存储器被配置成包括多个存储体,每个复制品一皮^渚存在不同的存〗诸体中。一旦〗诸存好,低延时存^f诸器访问控制器在收到访问复制的数据结构的请求时选择不止一个存储体之中的一个存储体储存被请求数据结构的复制品。一旦选定,该低延时存储器访问控制器访问选定的存储体。因此,即使当第一请求仍然正在处理的时候,同一数据结构的其它复制版本保持可访问性以处理后面的对同一凄t据结构的i會求。复制因子是可选择的而且指示选定的复制编号。举例来说,复制因子可能是指示储存1、2、4或8份该数据结构的副本的1、2、4或8。低延时存储器的类型可以选自动态随机存取存储器(DRAM)、缩减延时动态随4几存耳又存储器(RLDRAM)、同步随才几存取存储器(SRAM)、快速循环随机存取存储器(FCRAM)以及它们的组合。在一些实施方案中,复制因子是由软件确定的。举例来说,软件能追踪对不同的数据结构的访问请求,以对每个数据结构的访问数目和/或访问频率为基础确定复制因子。复制因子能被储存起来,而且能被用于下一次4巴数据结构载入低延时存储器。在一些实施方案中,复制因子可以储存在非易失性存储器中而且能在后来的系统重新启动期间<吏用。在选择不止一个存储体之中使用哪些存储体时,低延时存储器访问控制器确定每个存4诸体的当前用法。在一些实施方案中,低延时存储器访问控制器包括用于多个存储体之中每个存储体的相应的队列。然后,低延时存储器访问控制器使用温度计技术比较不同队列的大小,从而确定哪些存储体可用或较少使用。举例来说,每个存储体都配备一个相应的队列。然后,可以比较在储存被请求的数据结构的复制品的多个存储体当中排队指令的数目,排队指令数目最少的存储体被选定。因此,把排队指令的数目看作温度计的数值时,可以选择数值最低的温度计,以增加以最小的延迟为低延时存储器访问请求服务的可能。在一些实施方案中,低延时存储器访问控制器通过不止一个低延时存储器(LLM)访问总线与低延时存储器耦合。举例来说,包括十六个个别的存储体的低延时存储器能是使用两个LLM访问总线与低延时存储器访问控制器耦合的。有分布在多个总线当中的存储体增添进一步的提高。如果不同的存储体是使用同一总线耦合的,对储存在不同的存储体中的同一数据结构的复制品的重叠访问可能仍然导致沖突。多余的总线减少总线冲突和延迟的可能性。在一种配置中,第一组八个存l诸体是使用第一LLM访问总线耦合的,而第二组八个存<诸体是4吏用第二LLM访问总线耦合的。当在低延时存储器中复制储藏的数据结构的时候,至少一些复制品被储存在不同的访问总线上与低延时存储器控制器连接的存储体上。本发明的上述的和其它的目标、特征和利益从下面的用相似的参考符号在不同的^L图中处处表示同一部^f分的附图举例il明的本发明的优选实施方案的更具体的描述将变得明显。这些附图不必依比例绘制,而是把重点放在举例说明本发明的原则上。图1是依照本发明的原则包括网络服务处理器的网络服务处理系统的方4匡图;图2是图1所示的网络服务处理器的一个实施方案的更详细的方冲医图;图3是依照本发明的原则图2所示的精减指令集计算(RISC)核心之一的一个实施方案的更详细的方一匡图4依照本发明的原则举例说明图2和图3所示的DFA单元的一个实施方案的方框图;图5A和5B是可仿岁丈的DFA曲线图的示意图;图6是图2和图3的低延时存储器的一个实施方案的方框图;图7举例说明图4所示的DFA单元的DFA线程引擎用来遍历曲线图的低延时存储器数据结构的可仿效的实施方案;图8举例说明DFA指令队列依照本发明的原则在图2和图4所示的Lever-2DRAM中实现时的一个实施方案;图9更详细地举例说明图8所示的下一个信息块緩沖区指针的一个实施方案;图10展示DFA指令的可仿效的格式;图11举例说明在18位模式中节点标识符的可仿效分类的所有可能的17位节点标识符;图12举例说明构成准备用DFA线程引擎处理的数据的直接才莫式的可仿效用法;图13展示构成准备用DFA线程引擎处理的数据的集合模式的可仿岁支用法;图14更详细地举例i兌明图13所示的DFA集合指针才各式;图15举例说明响应图IO所示的DFA指令的可仿效的结果格式;图16依照本发明的原则举例^兌明可仿效的^f氐延时存〗诸器装载/储存指令格式;图17依照本发明的原则举例说明可仿效的低延时地址才各式;而图18A和18B依照本发明的原则分别举例说明用于36位和64位装载/储存的可仿效的低延时存储器DRAM格式和核心寄存器格式。具体实施方式本发明的优选实施方案描述如下。本发明提供通过可选择地复制存储器里面的数据结构以有效的方式访问低延时存储器的方法和装置。所述存储器包括为储存同一tt据结构的复制副本配置的多个个别的存储体。在收到访问被储存的数据结构的请求时,低延时存储器访问控制器选择存^渚体之一,访问来自选定的存<诸体的<诸存凄^据。存4诸体的选4奪可以是4吏用温度计技术通过比举支不同存4诸体的相对可用性完成的。得益于由此产生的效率的可仿效的凄t据结构包4舌确定性有限自动才几和装载的(即,读出的)往往比储存的(即,写入的)多的其它数据结构。图1是依照本发明的原则包括网络服务处理器110的安全器械100的方框图。安全器械100是一个能把在乙太网端口(GigE)收到的信息包切换到另一个乙太网端口(GigE)并且在转发信息包之前在收到的信息包上完成为数众多的安全功能的独立系统。举例来说,安全器械100能用来在把经过处理的信息包转发到局域网(LAN)之前完成对在广域网(WAN)上收到的信息包的安全处理。网络服务处理器110才是供硬件信息包处理、緩沖、工作计划安排、排序、同步和高速緩沖存储器连贯性支持,以便加速全部信息包处理工作。网络力良务处理器110处理包纟舌在收到的信息包中的开放式系统互连网络L2-L7层协议。网络服务处理器110通过物理(PHY)接口104a、104b接受来自乙太网端口(GigE)的信息包,完成关于收到的4言息包的L7-L2的网络协议处理,并且通过物理接口104a、104b或通过周边元件互连(PCI)总线106转发经过处理的信息包。网络协议处理可以包括诸如防火墙、应用防火墙、包括IP安全(IPSEC)和/或加密套接协议层(SSL)的虚拟个人网络(VPN)、侵入l笨测系统和防病毒之类的网全各安全协i义的处理。网络服务处理器110中的动态随才几存耳又存^f诸器(DRAM)控制器控制对与网络服务处理器IIO耦合的动态随机存取存储器108的访问。在一些实施方案中,DRAM108对网络服务处理器110是外部的。DRAM108储存从PHY^妻口104a、104b或PCI接口106收到的供网络服务处理器110处理的数据包。PCI接口106可能是PCI扩展(PCI-X)接口106。在网络服务处理器110中的低延时存储器控制器控制低延时存4诸器(LLM)118。LLM118能用于允许快速查询的英特网月l务和安全应用,包括侵入探测系统或防病毒应用可能需要的规则表达式匹西己。头见则表达式是表达信息串匹配式样的常见方法。少见则表达式的基本元素是待匹配的单一字符。这些能与允许使用者表达拼接、交替、kleene-star之类的字符算子组合。拼接用来从单一字符(或亚信息串)产生多字符匹配式样,而交替(I)用来产生能与任<可两个或多个子<言息串匹配的式才羊。kleene-star(*)的4吏用允i午某个式样在信息串中与该式样的零(0)或较多的具体值相匹配。不同的算子和单一字符结合允许构成复杂的表达式。举例来说,表达式(th(isIat)"将与th、this、that、thisis、thisat、thatis、thatat、等等相匹配。图2是在图1所示的网络服务处理器110的方框图。网络服务处理器ll(H吏用至少一个结合图1描述的处理器核心120递送高的应用性能。用于处理的信息包是通过SPI-4.2或RGMII4妻口祐」接口单元(例如,GMX/SPX单元122a、122b之中的任何一个)接收的。信息包也可能被PCI接口124接收。GMX/SPX单元(122a、122b)通过检查在收到的信息包中包含的L2网络协议标题中的各种不同的字段完成对收到的信息包的预处理并且把该信息包转发到4言息包^T入单元126。信息包输入单元126进一步完成对包含在收到的信息包中的网络协议标题(例如,L3和L4标题)的预处理。这种预处理包括对TCP/用户数据报协议(UDP)(L3网络协议)的校验和检验。游离池分配器128维持指针池释》文Level-2高速緩冲存储器130和外部的DRAM108中的存《诸器。4言息包llr入单元126<吏用指针池的其中之一把收到的打包数据〗诸存在Level-2高速緩冲存储器130或外部DRAM108中,并JU吏用另一个指针池为处理器核心120分派工作队列入口。然后,信息包输入单元126把打包数据写入Level-2高速緩冲存储器130或外部DRAM108的緩沖区。优选的是,打包数据是以便于较高层次的软件在至少一个处理器核心120中运行的格式写入緩沖区的。因此,对较高水平的网络协议的进一步处理变得容易。网络月l务处理器110也能包4舌一个或多个应用特定协处理器。这些协处理器在^皮包括在内的时〗美乂人处理器核心120卸下一些处理,借此使网络服务处理器110实现高吞吐量的信息包处理。举例来i兌,压缩/解压缩协处理器132是为致力于完成收到的信息包的压缩和解压缩准备的。在一个实施方案中,参照图2,4是供了包括适合加速防病毒、侵入#:测系统和其它的内容处理应用所必需的式才羊和/或签字匹配的专用DFA线禾呈引擎的DFA单元400。<吏用DFA单元400,式才羊和/或签字匹配^皮加速,举例来i兌,以高达每秒4千兆位的速率运行。I/O接口136管理总协议和仲裁并且区分相干的输入/输出。I/O4妾口136包4舌I/O桥138和读耳又和添加单元140。读耳又和添力口单元140中的寄存器用来维持用于通过信息包输出单元146转发经过处理的信息包的输出队列的长度。1/0桥138包括用来储存将在相干存储器总线144、1/0总线142、信息包llr入单元126和信息包输出单元146之间转移的信息的緩沖队列。信息包排序/工作组件148安4非处理器核心120的工作顺序和时间表。工作是通过^巴工作队列入口加到队列上排队的。举例来说,在每个信息包抵达时用信息包输入单元126添加一个工作队列入口。定时器单元150用来安排处理器核心120的工作时间表。处理器核心120向信息包排序/工作组件148请求工作。信息包排序/工作组件148选择(即,安排)纟会处理器核心120之一的工作并^f吏指针回到描述给该处理器核心120的工作的工作队列入o。处理器核心120依次包括指令高速緩沖存储器152,Level-l数据高速緩冲存々者器154和加密术加速156。在一个实施方案中,网络服务处理器IIO(图l)包括十六个超标量精简指令集计算机(RISC)型的处理器核心120。在一些实施方案中,每个超标量RISC型的处理器核心120都包括MIPS642版处理器核心的扩展。Level-2高速緩沖存储器130和外部的DRAM108被所有的处理器核心120和I/O切、处理器装置(例30,压缩/解压缩f办处理器132)分享。每个处理器核心120都借助相干存储器总线144与Level-2高速緩沖存储器130耦合。相千存储器总线144是在处理器核心120、1/0接口136、Level-2高速緩沖存储器130和Level-2高速緩冲存储器控制器131之间所有的存储器和I/0事务的通信频道。在一个实施方案中,相干存储器总线144对16个处理器核心120是可升级的,因此在通过它写入时支持完全相干的Level-l数据高速緩冲存储器154。优选相干存储器总线144是用区分I/O优先次序能力高度緩冲的。Level-2高速緩冲存储器控制器131维持存储器参考连贯性。它为每一个充分请求返还一个块的最新副本,不管那个块究竟是储存在外部的DRAM108中还是储存在Level-2高速緩沖存储器130中,还是在"飞行"中。它还把用于数据高速緩冲存储器(Dcache)154的标签的复制副本〗诸存在每个处理器核心120中。它比照数据高速緩沖存储器标签比较高速緩沖存储器-块-存储器请求的地址,而且只要^f诸存指令来自另一个处理器核心或经由I/O接口136来自另一个1/0元件就使处理器核心120的数据高速缓沖存储器标签(两个副本)无效。在一些实施方案中,DRAM控制器133支持高达16兆字节的DRAM108。优选的是,DRAM控制器133支持64位或128位的DRAM108接口。此夕卜,DRAM控制器133能支持优先协议,例如,DDR-I(双精度型数据传输率)协议和DDR-2协议。在信息包经过处理器核心120处理之后,信息包llT出单元146从存储器130、108读出该信息包的数据,完成L4网络协议后处理(例如,产生TCP/UDP才交—验和),通过GMX/SPX单元122a、122b转发信息包,并且释放该信息包使用的L2高速緩沖存储器130/DRAM108。低延时存储器控制器160管理对低延时存储器118来回飞行的事务(加载/储存)。优选的是,低延时存储器118供所有的处理器核心120分享。存储器延时指的是满足处理器核心120初始化的存储器请求花费的时间。低延时存储器118能提供亚微秒级的延时。低延时存储器的可仿效类型包括DRAM、缩减延时动态随机存取存储器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随一几存取存储器(FCRAM)或#支术上已知的任何其它类型的低延时存储器。举例来说,RLDRAM提供大约30纳秒以下的存储器延时。每个处理器核心120借助低延时存储器(LLM)总线158直接与DFA单元400的低延时存储器控制器160耦合。LLM总线158是用于处理器核心120和低延时存〗诸器控制器160之间知道内容的应用处理的通信频道。DFA单元400被接在处理器核心120和低延时存储器118之间用来控制低延时存储器118的存取。图3是依照本发明的原则的RSIC处理器120之一的比4交详细的方框图。处理器核心120包括整数执行单元302、指令分派单元304、指令读取单元或多个安全加速器156。在一些实施方案中,处理器核心120还包括允许调试待完成的操作的调试器接口330(例如,EJTAG接口)。系统*接口310控制处理器对外部存^f诸器的访问。外部存^f渚器在相应的处理器120外部。举例来说,外部存储器可以位于同一器件上,例如,与处理器核心120在同一半导体基体上。作为替代或补充,外部存储器对于处理器装置可能是外部的,例如,在主板上,或甚至完全在不同的组件上。外部存储器可以包括Level-2高速緩冲存储器130、主存储器(即,夕卜部DRAM108)以及Level-2高速緩冲存储器130和主存储器108的组合。整凄t执行单元302通常包4舌乘法单元326,至少一个寄存器文巻(主寄存器文巻)328和两个支持寄存器330a、330b。支持寄存器330a、330b用来暂时储存准备写入低延时存储器118的数据和已经从低延时存4诸器118读出的凄t据。依照本发明的原则,数据是使用低延时存储器装入/储存指令在处理器核心120和低延时存储器118之间转移的。此外,支持寄存器330a、330b通过在传递途径4亭顿之前允许两个未处理的负载来改善指令传递途径的效率。虽然展示的是两个支持寄存器,但是使用一个或两个以上支持寄存器也是可能的。在一些实施方案中,乘法单元326能提供644立寄存器直4妄乘法运算。优选的是,指令读取单元306包括用来本地储存优选指令的指令高速緩冲存储器(ICache)152。此外,装入/储存单元314包括数据高速緩沖存储器154。在一些实施方案中,存储器管理单元308包括进一步提高计算速度的后备译码缓沖器340。在一些实施方案中,处理器核心120包4舌加密术加速组件(安全加速器)156,该加密术加速组件包括加密术加速。加密术加速通常是由一个或多个加密算法提供的。可仿效的算法包括三数据加密标准(3DES)、先进的加密标准(AES)、安全的混杂算法(SHA-1)、信息分类5号算法(MD5)。加密术加速组件156通过在批j亍单元302中来回移动主寄存器文巻328通信。一些算法(例如,RSA和Diffie-Hellman(DH)算法)是在乘法/除法单元326中完成的。算法(例如,这些算法)可能是强烈依赖存储器的,举例来说,需要多次存取储存的查询表。强烈依赖存储器的算法(例如,这些算法)的性能是通过使用低延时存储器118储存和取回依赖算法的^:据得到纟是高的。总的系统性能可以通过Y吏用LLM专用总线158对巴低延时存储器118与处理器120连4妻起来得到进一步的提高。DFA单元400包括用来与低延时存储器118接口的低延时存储器控制器160。控制器的类型取决于所用的低延时存储器的类型。举例来说,外部的低延时存储器118可以包括DRAM部份,例^口,可乂人MicronTechnologyofBiose,Idaho购买的缩;咸延时DRAM(RLDRAM)。可仿效的DFA单元400的方框图是用图4举例i兌明的。DFA单元400包括三个主要的元器件用来控制低延时存储器118的存取的低延时存储器(LLM)控制器160、一个或多个用来遍历储存在低延时存储器118中的DFA曲线图的DFA线程引擎405和通过它获得对DFA曲线图的访问的指令输入单元410。优选的是,DFA单元400包括不止一个DFA线程引擎405,以便通过支持实质上同时发生的对-賭存的DFA曲线图的访问进一步^是高系统性能。通常,DFA线程引擎405实质上是同一的和可互换的。在可仿效的实施方案中,DFA单元400包括能够遍历多达十六张独立地储存在低延时存储器118中的曲线图的十六个DFA线程引擎405,其中一个DFA线程引擎405被用于每一张储存的曲线图。取决于冗余度,至少一些独立储存的曲线图可能是其它曲线图的复制副本。DFA单元400通过被称为LLM接口425的适当的接口与外部的低延时存储器118耦合。在一些实施方案中,提供多个LLM4妻口。每个接口425都通过各自的LLM访问总线与低延时存储器118耦合。优选的是,DFA单元400包括不止一个使用各自的LLM"i方问总线与^氐延时存^f诸器118津禺合的LLM"I妻口425,以1更支持对低延时存4渚器118的同时访问。因此,当不止一个才妄口425之一'I"亡于为第一存储器访问请求服务的时候,其它接口425之一仍然可用于为另一个i青求月良务。在可仿效的实施方案中,DFA单元400包括两个低延时DRAM接口425a、425b(通常425),每个4妄口包括18个凄t据^f立。如同对于熟悉这项才支术的人众所周知的那样,存储器的接口包括将从存储器读出的或被写入存储器的凄t据位、指出#:据在存4渚器里面的^f诸存位置的地址位和诸如芯片选择位、时钟、读/写启动位和储存体选择位之类的控制位。DFA单元400还通过I/O桥138和I/O总线142与主存^f渚器130、108耦合。更进一步,DFA单元400使用另外一个4妻口与一个或多个处J里器4亥心120井禺合。举例来i兌,DFA单元400包括用于DFA单元400和处理器核心120之间专用的JU妾访问的对低延时存储器LLM总线158的接口。因为LLM总线158是与I/O主总线142分开的,所以它通常将不被抢先占据为访问系统其它部份的请求服务,借此进一步提高对低延时存储器118的存取速度。此外,通过使用专用的LLM总线158,操作协议能,皮再一次筒化,从而提高总的表现速度。这与诸如I/O总线142之类的分享系统总线相反,后者通常使用基于竟争的访问协议(即,如果总线142忙于为总线事务服务,新的请求将被拒绝或者至少延迟到总线142可用)。优选外部LLM接口425的数据传输率是相对高速的,以使数据容易快速传输。举例来说,外部LLM接口425的数据传输率能等于处理器核心120的时钟速率。使用这样的高速接口425,LLM控制器160能管理许多向外部低延时存储器118内的一个或多个可用的存储体飞行的事务。如同下面更详细地描述的那样,DFA单元400还完成自动的存储体复制,以便将存储体冲突减到最少。在可仿效的实施方案中,LLM控制器160能按体系结构支持来自LLM4妄口425的4壬4可组合的多达1千兆字节的附加j氐延时存储器118。LLM总线158直接与处理器核心120连接,借此把有非常快速的访问路径的处理器核心120提供给低延时存储器118。在可仿效的实施方案中,个别处理器核心的才喿作可以是36位或64位的装入/储存。诸如加密处理之类知道内容的应用处理可能利用一些式样和/或表达式(数据)。这些式样和/或表达式可能被重复地参考并且优选储存在低延时存储器118中。这些式样和/或表达式可能是依照优选的数据结构以纟皮称为DFA的专业状态才几的形式安排的。给DFA的输入是能用一个或多个(8位)字节形成的信息串表达式。用于这样的DFA的字母是字节。每个llT入字节都引起DFA的状态机从一个状态转变到下一个状态。这些状态和这个转移函数能用曲线图表达。一般地说,DFA能被表达成包括用弧线,或互相连接起来的多个节点的曲线图或模型,如图5A和5B所示。曲线图中每个节点代表状态才几的一种相应的状态,而曲线图中不同的弧线4戈表互连节点之间的状态转变。状态机的当前状态是选择曲线图特定节点的节点标识符。特定弧线的选择是用对状态机(例如,DFA)的输入字节确定的。因此,给定限定第一节点的状态和输入字节,状态就沿着与该输入字节相对应的弧线从第一节点转变到第二节点。在一些例i正中,第一和第二节点是相同的。节点的凄t目对于小的曲线图能从几个节点变化到多达大约128,000个节点。较大的曲线图可能有l,OOO,OOO个或更多的节点。DFA线牙呈引擎405能用于完成式才羊4叟寻。在图5A和5B举例说明的例子中,DFA曲线图500是为寻找目标信息串表达式"abc,,设计的。因此,DFA曲线图被用来搜寻与字符串"abc"精确匹配的输入数据。这个表达式是固定长度的表达式,所以节点的#:目和曲线图的深度是已知的(即,固定的)。为了产生DFA曲线图500,剖析该表达式并且用编i奪器产生把节点1-3添加到指定的表达式曲线图上的根节点(即,节点"O")(即,适合该目标字符串中每个字符的附加节点)。继续这一个例子,可仿效的字符输入流包含信息串"…12abc3...,。,使用DFA曲线图搜寻输入的信息串以便识别目标信息串表达式"abc"。DFA曲线图的初始状态是节点的"0"。每个字符或字节是相继读出的,而且DFA保持在节点O,直到该目标信息串表达式的第一个字符^皮读出为止。举例来i兌,在4罙测^r入流中的目标信息串表达式的第一个字符"a"的时候,遵循标注"a"的弧线,状态乂人节点0转变到节点1。读出输入流中的下一个字符。如果4笨测到的是不同于该目标信息串表达式的下一个字符(即,"b")的<壬4可东西,则沿着才示注"notb"的f瓜线乂人节点1回到节点0。然而,在纟罙测字符"b"作为^r入流中下一个字符的时^美,遵循标注"b"的弧线从节点1到节点2。输入流中下一个字符4皮读出。如果它是不同于该目标信息串表达式的下一个字符(即,"c,,)的4壬-f可东西,则沿着才示注"notc"的f瓜线乂人节点2回到节点0。然而,在节点2,纟冢测l斩入流中的字符"c,,时,沿着标注"c,,的弧线从节点2到节点3。因为目标信息串表达式"abc,,是固定长度的表达式,所以节点3是终结节点,于是报告搜寻结果。在图5B举例i兌明的另一个例子中,早先例子的曲线图^皮扩展,以1更找出两个信息串"abcd,,或"abce,,中的一个或多个事件。因此,添加两个附加节点,节点4和节点5,一个节点用于每个信息串的第四个字符(例如,节点4用于"d"而节点5用于"e")。节点4和节点5与节点3连4妻,如图所示,因为对于两个信息串最初三个字符是相同的。优选的是,在一次"通过,,输入信息串的时候,识别任一信息串中的全部事件。诸如"xwabcd454abceabcdsfk,,之类可仿凌丈的^T入4言息串跑过DFA,从而产生作为结果的三个"显著的,,转变。显著的转变发生在位于输入信息串里面的信息串片革殳结束的时候(例如,在每个出现"d"或"e"的位置)。因此,三个显著的转变表明发现三个信息串。第一个和最后一个标记表示从节点3到节点4的转变,指出在输入信息串里面信息串"abcd"的出现和位置(即,DTEbyte=5,前一个=3,下一个=4和DTEByte=17,前一个=3,下一个=4)。中央的显著节点表示从节点3到节点5的转变,指出信息串"abce"出现在丰lr入信息串之内(即,DTEbyte=13,前一个=3,下一个=5)。其它的比4交复杂的DFA曲线图能同样地通过剖析一个或多个意向性表达式用编译器产生那些意向性表达式所需要的适当的曲线图节点产生。因此,单一的曲线图能用来搜寻长度可能是固定的、可变的和固定和可变的组合的多个表达式。每个DFA线程引擎405都有能力遍历储存在低延时存储器118中的各自的DFA曲线图的节点。通常,DFA线程引擎405是能使用硬件、软件或硬件和软件的组合实现的状态机。在一些实施方案中,DFA线程引擎405是在使用组合逻辑的硬件中实现的。在其它的实施方案中,每个DFA线程引擎405是分别在不同的处理器上实现的。在另一些实施方案中,DFA线程引擎405是用普通的处理器实现的。举例来说,每个DFA线程引擎405可能是在适合提供分享的多任务环境的普通处理器上运行的分开的工作(即,指令的序列)。多任务化是在操作系统中用来在若千独立工作(即,DFA线程引擎405)之间分享单一处理器的技术。作为替代或补充,每一个DFA线程引擎405可能是在适合提供多线程能力的普通处理器上运行的分隔处理线程。多线程化不同于多任务化,因为若干线程通常彼此分享的环境比它们在多任务条件下做的工作多。举例来说,当分享单一的地址空间和全球变量组的时候,线程可以用它们的程序计数器和栈指针的数值区分。在操作时,处理器核心120使DFA指令服从DFA指令队列415(图4)。举例来说,DFA指令队列415保存在主存储器130、108中。DFA指令鉴别将使用哪个打包数据和横穿哪个DFA曲线图。打包数据通常々者存在主存^f渚器130、108中;然而,DFA曲线图储存在低延时存储器118中。在运行时,DFA单元400继续地从指令队列415中读取指令,安排把每条读取的指令给可用的DFA线程引擎405之一的时间表。响应收到的DFA指令,DFA线程引擎405访问主存4渚器130、108中的凄t据,如有必要,而且使用从主存储器130,108取回的数据把访问请求指向低延时存储器118。低延时存储器请求储存在一个队列(一个与低延时存储器中每个存储体有关的队列)中。LLM控制器160实现排队的低延时存储器访问i青求。通过提供同一的和等效的DFA线程引擎405,任何指令都可以被安排给多个DFA线程引擎405中的任何一个。任何可用的DFA线程引擎405都能接收来自指令队列的下一条排队指令。响应接受排队指令之一,DFA线程引擎405同时完成a.经由I/O总线142从主存储器130,108读耳又打包车叙入凄t据(即,输入字节),被读取的字节被用于在DFA曲线图的状态之间的转变;b.打包数据的每个字节发布一条低延时存储器装入指令以《更遍历到适合该字节的下一个DFA曲线图状态;以及c.经由1/0总线142^巴中间的和最后的结果写入主存〗诸器130、108。作为替代或补充,核心处理器120能直4妻<吏用LLM总线158访问低延时存储器118。举例来"i兌,为了最初4巴曲线图存进存储器118,核心处理器120能访问该低延时存储器118。在一些实施方案中,低延时存储器118是在核心处理器120外部提供的。举例来说,低延时存储器118可能是在一个或多个与核心处理器120互连的物理器件(例如,组件或芯片)中4是供的。不管它们的实际配置,分开的存^f诸器器件118优选位于核心处理器附近(例如,一起配置在同一主^反上)。{氐延时存<诸器118的可仿效实施方案是在图6中举例-说明的。存储器118由两个物理存^f诸器器件430a、430b(通常用430表示)组成。每个存储器器件430包括许多存储体。如图所示,器件430每个都包括八个存储体432。这些存储体432是可区分的,存储器存入以致LLM控制器160能有选择地把数据写进多个存储体432中的每个存储体和从多个存储体432中的每个存储体读出数据。每个存^f诸器器件430包括各自的与DFA单元400相应的一个LLM^妄口425互连的4妄口530a、530b。其它的实施方案可以包括比两个多或少的存储器器件430。作为替代或补充,每个存储器器件430能被配置成有比举例说明的实施方案的八个多或少的存储体432。作为替代或补充,每个存储器器件430都能4吏用不止一个LLM4妄口530与DFA单元400專禺合。DFA单元400的每个LLM接口425与低延时存储器118的相应的接口530耦合。接口425、530包括通常安排到不同的组中的多条互连导线。举例来说,一些导线用来选择一个特定的存储体432(例如,三条导线足以选择八个存储体之中的任何一个2A3=8)。其它的互连导线能用来选4奪或注明特定的存储器地址(例如,20条导线有能力选^奪多达大约512K存储器地址而21条导线有能力选4奪多达大约1024K存储器地址)。此外,另一些导线能用来提供在低延时存储器和DFA单元400之间转移的数据(例如,32条导线有能力每次转移多达32位的数据)。另外一些导线能作为计时信息(例如,提供时钟信号)和/或指令确认(例如,从许多指令之一中选择,例如,读指令对写指令)。LLM控制器160(图4)包括多个低延时存储器(LLM)队列,一个队列与每个低延时存储体有关。每个LLM队列都有各自指出请求储存在相应的队列中的j氐水平存^f诸器访问的tt目的队列状态指示器。DFA单元400还包4舌一个温度计单元和一个或多个配置寄存器。因此,每个LLM队列能用来访问储存在存储体之一中的DFA曲线图。在说明性的例子中,LLM控制器160包括十六个LLM队列,一个队列用于十六个存^f诸体432中的每一个。指令单元410可以包括用来4诸存指示软件先前已经写进主存储器130、108的DFA指令先进先出(FIFO)緩沖区的未处理的DFA指令的累积数的数值的门铃寄存器420。其它的配置寄存器可以是为识別与访问和<吏用〗氐延时存^f诸器118有关的其它方面而^是供的。DFA单元400使用I/O总线142从主存储器130、108中的DFA指令FIFO读耳又排队的指令。然后,DFA单元400确定该指令将与哪个DFA线程引擎405结合。DFA线程引擎405处理该DFA指令,产生低延时存储器访问请求。DFA单元400包括适合确定哪个低延时存储体最有可能用最少的延迟为该存储器访问请求服务的电路。为了做这件事,DFA单元400使该存储器访问请求与排队入口最少的LLM队列接合。然后,LLM控制器160使用DFA装入/储存指令处理每个LLM队列中的排队入口。温度计单元能用来识别i午多可用的LLM队列当中哪一个有最少的排队入口。为了完成这个任务,温度计单元首先根据哪些存储体储存被请求的DFA曲线图的复制品确定哪个LLM排队才全查。接下来,温度计单元比较在多个LLM队列之中的每个队列中排队的入口数目。然后,温度计单元比较在每个可用的LLM队列当中排队的入口凄t目,确定哪一个LLM队列中排队的入口数最少。然后,温度计单元把排队的入口数目最少的LLM队列的指示提供给LLM控制器160。LLM控制器160使用温度计单元已识别的排队入口数目最少的LLM队列依次处理那些排队入口,例如,存卩诸器访问:清求。在队列中储存的指令数目能使用队列状态指示器确定。举例来:^兌,该队列状态指示器可能只是指向在各自的队列内下一个可用的指令位置的指针。知道该队列的终点,简单的算术指针就能用来计算排队的指令数目。作为替代或补充,队列状态指示器可以储存指示排队指令数目的计数器数值。因此,当一条指令被写入一个队列的时候,该队列状态指示器的计数器数值就被加1。同样地,当一条指令从该队列中读出的时候,该队列状态指示器的计数器数值就被减1。在一些实施方案中,当不止一个队列有相同的最少的排队指令数目的时候,可以使用一种算法来识别该使用哪个队列。举例来说,选捧有最高的或最低的参考标志的队列。作为替代,可以从可用的队列编号中随;〖几地选择队列。在可仿效的实施方案中,DFA单元400的LLM控制器160能控制在两个LLM接口435a、435b之中的每个接口上的多达八个存储体432。表1指出使用八个存储体的存储器器件430的个别36位LLM参考的主要性能特性。该表还指出使用哪个接口和使用存储器器件430内的哪个存储体432。在接口栏中的入口指出所用的18位接口的数目。<table>tableseeoriginaldocumentpage29</column></row><table>在有两个LLM4姿口425的可仿岁文的配置中,在没有选才奪复制的情况下,所用的特定接口是用第一数值确定的。举例来说,该第一数值可能是在一条指令内提供的偏移量字段中的一个或多个位。数值所提及的偏移量<2>和存储体是用第二凄H直(例如,在同一偏移量字#史内其它位的#t值(例如,偏移量<5:3>))确定的。因此,偏移量<2〉-1的凄丈值Y吏用LLM4妄口—1425b。通过第一个LLM接口425b互连的特定的存储体432是用偏移量<5:3>的数值确定的(即,偏移量<5:3>="011"指的是存^f诸体3)。用有两个LLM^妻口425和复制因子为2(即,2x)的可仿效配置继续。在每个相应的接口上提及的特定的存储体是借助偏移量<4:2>的数值确定的。因此,通过各自的LLM4妄口425互连的八个可用的存储体432之中的特定的存储体是借助偏移量<4:2>的数值确定的(即,偏移量<4:2>="111"指的是在两个存储器器件430之中的每个器件上的存^f渚体8)。在复制因子为四(即,4x)的情况下,使用两个接口,一对可选择的存储体435被用在两个存储器器件430之中的每个器件上。因此,偏移量<3:2〉的数值确定使用哪个存储体425,如同在表1中识别的那才羊。同4f,在复制因子为乂乂(即,8x)的情况下,再一次使用两个接口,可选才奪的一组四个存储体425被用在表1指出的两个存储器器件430之中的每个器件上。图7展示储存在低延时存^f诸器118中的可仿效的DFA数据结构500(即,曲线图)。如上所述,DFA曲线图500能被指针引用到它的第一节点(即,节点0)而且^皮DFA线程引擎405遍历。通常,曲线图500由N个不同的节点505组成。曲线图500中的每个节点505包括邻接节点指针510的阵列,其中一个邻接节点指针510是为每个独特的输入字节数值准备的。因此,对于有8位字母的DFA曲线图500,有28=256个邻接节点指针510。每个邻接节点指针510包含一个直接指定适合该输入字节的下一个节点/状态的邻4妻节点标识符(ID)。在一些实施方案中,DFA单元400支持18位的邻接节点指针格式515或36位的邻接节点指针格式530。采用18位指针515,每个节点505需要18*256位,或大约512字节的^氐延时存^f诸器118的储存量量。采用36位指针530,每个节点505需要36*256位,或大约1千字节的低延时存储器118的储存量。任何储存数据的复制都会适当地增加由此产生的总储存量需求。采用18位指针515,每个邻接节点指针510包括邻接节点标识字段520,例如17位的邻接节点ID0。还提供对应的校—睑位525。在使用偶校验的可仿效实施方案中,校验位是作为所有17位的邻4妄节点标识符520的"异(XOR)"确定的。因此36位字能储存两个18位指针520、522,每个指针分别有各自的校验位525、527。采用36位指4十530,每个邻4妻节点指4十510包4舌一个20^f立的邻接节点标识符字段535,一个两位的类型数值字段545、一个七位的纠错码(ECC)字段550和七个禁用位540。优选的是,禁用位被设定为零。DFA线程引擎405使用36位指针530中的ECC码550自动地^修复单一的比特i吴差和:探测双重的比特误差。类型数值545指出邻接节点类型并且,举例来说,能保存下列数值0=常态1=显著的2=终端为了使用DFA线程引擎405,系统软件首先把DFA曲线图500预先装入低延时存^f速器118,例如,图7所示的。系统软件还把有指针的DFA单元400提供给曲线图的出发点、起始节点ID和特定的输入字节。伪码一览表是在表2中提供的,描述由可仿效DFA线程引擎405在处理每个字节的过考呈期间完成的功能。表2.DFA线考呈引擎处理〃ptr一sizeis2for18b,4for36-bitDT(Byte(graph_ptr,node—id,byte,ptr_size,IWORD3[TSizej,IWOkD3[Msize]){en腿{NORMAL,PERR,TERM,MARKED}condition=NORMAL;node_ptr=graph_ptr+node—id*256*ptr—sizenext—node__ptr_ptr=node_ptr+((byte*ptr—size)2)*4next_node_ptr=LLM—LOAD(next—no<ie_ptr_ptr)if(p(size=2){〃l"itpointernext—node_ptr=next—node_ptr》(byte<0>*18)next—node—id=next_node_ptr<16:0>if(parity_error)conditio5=PERRelseif(next一node—id>=(128*1024-IWORD3[TSize]*256》condition=TERMelseif(next—node—id<IWORD3[Msize〗)conation:MARKEDelse{.—〃36-bitpointernext—node_ptr=SECDED(next_node_ptr)next—node_id=next—node_ptr<l9:0>if(do:ble-WtECCerror)condition=PERRelseif(next_node_ptr<28:27>==2)condition=TERMelseif(next—node_ptr<28:27>=1)condition=MARKEDreturn(condition,next—node—id);在一些实施方案中,DFA线程引擎405能支持特定的节点指针条件。举例来说,DFA线程引擎405能支持表3确认的多达三种特定的节点指针条件。表3.特定的节点指针情况以描述为条件<table>tableseeoriginaldocumentpage33</column></row><table>在18位模式中,DFA线程引擎405通过比较邻接节点ID字段520、522的数值确定特定的TERM条件和MARKED条件。在这种情况下,所有进入显著节点505的转变都是显著的。在36位模式中,DFA线程引擎405依据邻接节点指针530中的类型字#殳545直接确定特定的TERM条件和MARKED条件。事实上,个别的转变而不仅仅是个别的节点在36位模式中可能都是显著的。继续图5B的例子,使用一个18位指针,节点4和5都是显著的。因此,任一节点的遍历都有相应的搜寻信息串出现在输入信息串里面的征兆而且被较后的分析识别。作为替代,使用一个36位指针,从节点3到节点4和5的弧线是显著的。因此,通过使用与DFA线程引擎组合的DFA标识技术,能在一次通过输入信息串的过程中发现多个不同的信息串在同一输入信息串里面的出现和位置。图11图解式;也举例i兌明可能的17位节点ID690以及识别它们在18位模式中如何分类。下面更详细地描述的DFA指令包含规定终点节点和显著节点的数目的参数(例如,表2中的参数IWORD3[TSize]规定终点节点的数目而表2中的参数IWORD3[Msize]规定显著节点的数目)。终点节点ID的数目,IWORD3[TSize],是最大的数目,不需要靠低延时存储器118的实际储存量支持。只有正常节点和显著节点靠低延时存储器实际储存量支持。因为DFA线程引擎405遍历储存在低延时存储器118中的曲线图500,所以当异常条件出现的时候,它们产生结果字。邻4妄节点指针(例如,MARKED、TERM或PERR)代表这样的异常条件。两个附加的异常条件包括输入数据完成(DATA—GONE)和结果空间耗尽(FULL)。虽然曲线图500对输入字节的遍历可能导致多种异常条件,但是单一的输入字节最多能产生一个结果字(RWORDl+)。举例来说,最后输入的字节将遇到DATA—GONE条件并因此将产生一个结果字"RWORDl+"。最后输入的字节也可能遇到一个显著的邻4妻节点,〗旦是不产生第二个RWORDl+结果。曲线图的遍历500在(按优先级排列的)PERR、TERM、DATA一GONE或FULL异常条件发生的时候停止,而且DFA线程引擎405报告优先级最高的条件。每个DFA指令都能规定直接才莫式或收集才莫式是否应该用来构造将用DFA线程引擎405处理的数据。在任一情况下,DFA单元400者IU人主存^诸器130、108读耳又字节。图8描绘储存在主存储器130、108中的DFA指令队列600的可仿效结构。DFA指令队列600包括一个或多个DFA指令61Oa-610e(通常610)。DFA指令队列600是通过软件分配用来储存DFA指令的组块或緩沖区605配置的。在引导时间,通过写入首尾指针建立一个队列。在4妄收信息包时,分配正在进4于。DFA单元400在指令已经用DFA线程引擎405处理之后释放组块605。DFA单元400包括包含尾部(储存在DFA指令队列中的最后一条DFA指令600)的地址的尾部指针620。指令队列600是一个"组块"或1£沖区605a、605b、605c(通常605)的链接表。对于有一个以上组块605的DFA指令队列600,不同的组块605是用邻接组块緩沖区指针615a、615b(通常615)链接的。对于列举的DFA指令队列600,第一组块605a包括一个指向储存在第二组块605b中的第一DFA指令610b的邻4妻组块緩冲指针615。第二组块605b依次包括许多后面有指向第三组块605c的第一DFA指令610e的邻接组块緩冲指针615b的DFA指令610。第三组块605c是最后一个,所以不需要邻4妻组块緩沖指针615。如同举例说明的那样,软件首部指针625指向直接接在最后一个储存指令610e后面的邻接空緩沖区位置。在操作时,DFA单元400乂人DFA指令队列600(乂人尾部开始)读字,并且在它到达组块605a的最后一条指令610a的时候使邻4妄组块緩冲指4十615a遍历下一个组块605b。当DFA单元400以这种方式"跃过"组块605的时候,它把较早的组块/緩沖区605a释》文到^更件管理池。储存在配置寄存器450中的配置数值能用来指出将用于緩沖DFA指令的组块605的大小。图8展示用于三条DFA指令610的组块大小的例子——最小的法定值。通常,DFA指令610是固定尺寸的(例如,32字节)。在组块605中直4妄跟在DFA指令61O后面的64位字是一个邻接组块緩沖指针615。这个例子i兌明在指令队列600中的五条DFA指令610。指令610或命令被连续地编号,从零到四,较小的编号代表较陈旧的(即,较早储存的)DFA指令610,最低的号码储存在队列的尾部。依照FIFO配置,在DFA线程引擎405上首先从较陈旧的指令开始。优选的是,每条DFA指令610都完整地驻留在一个组块之内,不横跨组块边界。DFA单元400维持尾部指4十620指向在队列600的尾部的DFA指令610a的地址。软件(例如,系统软件)维持首部指针630指向在该队列头部的最新近储存的DFA指令610e。为了把信息包插进队列600,软件必须首先把DFA指令610写进队列600,如果必要的话还要分配组块605。门铃寄存器420(图4)储存在队列中储存的DFA指令编号的计数。首部指针630和尾部指针806之间的距离是两者的DFA指令队列600的大小和未处理的门铃计数。DFA指令队列600的大小只受可用的存储器和用于DFA指令队列600的门铃计数器420的位数限制。举例来说,在有20位门铃计数器的实施方案中,该队列^C局限于220个字。注意一旦门铃计数指出组块605中最后一条DFA指令610包含有效的DFA指令610,DFA单元400就可以读邻4秦组块緩冲指针615。这意味着一旦软件把最后一条DFA指令610a写进组块605a,该软件就必须分配邻4^组块緩冲区605并且把组块纟爰冲指4十615i殳置在指向它的前一个组块605中。门铃写有DFA指令间隔尺寸而且软件能用许多DFA指令610"按门铃"。软件能对每条个别的DFA指令610发布门铃写,或能把多条DFA指令610累积到门铃写之中。唯一的需求是在队列600中有效的DFA指令610的数目必须至少与门铃计数一样大,而且散布在DFA指令610当中的邻4妄组块》爰冲指针615也必须适当地r没立。在系统启动时,或在引导时间,系统彰L件用对已建立的用来储存这个凄史值的配置寄存器450的写入配置有原始的邻接組块緩沖指针615(即,首尾指针620)的DFA指令队列600。图9展示可仿效的邻4妄组块纟爰冲指针才各式630。主要组成部分是把指示有效字节位置的数值储存在主存储器130、108中的地址(Addr)字段635。虽然Addr字段635指的是字节地址,但是它优选自然地排列在128字节高速緩冲4渚存块的边界上。因此,它最不重要的7位将是零。每条DFA指令610有DFA单元400需要启动DFA线程引擎405、读输入数据、遍历低延时存储器118中的曲线图500和写入结杲的信息。如图10的可仿效DFA指令格式所示,每条DFA指令610包括在主存储器130、108里面的四个独立的字(即,表32个字节的四个644立字)655、660、665、670。指令610为4姿时间表处理该指令的DFA线程引擎405失见定專#入字节4立置和结果位置。当DFA指令队列600有有效的DFA指令610的时候,DFA单元400从主存储器130、108读出DFA指令610和输入凄t据,并且在它产生结杲的时〗'美写入结果。DFA单元400也能在结束之后非必选地提交工作队列入口,所以,DFA指令610可以包纟舌一个用于工作队列指4十的字^:。举例来说,第一DFA指令字655包括用其第一节点的存储器位置识别DFA曲线图的基地址。第一字655还^是供补充信息,例如,储存预先选定的复制品的复制字^殳、指示所用的寻址类型的类型<直和标识处理将/人曲线图的哪个节点开始的起始节点ID656。第二DFA指令字660包4舌识别4寺用DFA405处理字节凄丈目的长度字段661和储存待处理字节的地址基准的地址字段662。第三DFA指令字665包括识別任何结果应该被写入哪个地址(例如,主存储器130、108中的地址)的结果地址字段666以及储存指示容许结果的最大数目的数值的最大结果字段667。更进一步,第四DFA指令字670可能包括一个或多个涉及工作队列处理的字段。图12展示用来构造待用DFA线程引擎405处理的数据的被称为直接模式的用法的例子。DFA指令610使用在DFA指令610的地址字段662中提供的存储器地址直接指定起始位置并且使用长度字,殳661直4妄指定4寺处理的字节数目。处理对应的DFA指令610的DFA线程引擎405从主存储器130、108读出邻近字节705的标识号码,从该标识地址开始依次处理每个字节。图13展示被称为收集才莫式的替代才莫式的可仿效的用法。使用收集模式,待用DFA线程引擎处理405的数据(即,输入字节)不需要邻近地〗渚存在主存〗诸器130、108里面。然而,ilr入字节可以邻近;也{渚存在主存<诸器130、108的两个或多个分开的^f立置。在收集模式中,DFA指令610首先使用收集模式确认字段663(图IO)确认它是收集模式指令。在收集模式中,DFA指令610的地址字段662指定第一收集指针的起始位置和也储存在主存储器130、108中的DFA收集指4十目录755的大小。DFA收集指4十目录755的每个入口规定给DFA线程引擎405分别处理的两个或多个分开的存储器位置之一的起始位置和大小(即,字节数)。给DFA线程引擎405的总输入字节流是借助在收集目录755中确认的每个入口提到的储存字节的拼接获得的。因此,在图13的例子中,输入字节流是第一邻近的储藏片,殳、(即,DTEBytes—0)760a、第二邻近的储藏片,更(即,DTEBytes—1)760b和第三邻近的储藏片段(即,DTEBytes—2)760c的拼接,每个片段760与其它片段760不相邻。处理对应的DFA指令610的DFA线程引擎405读读出收集目录755的第一入口,将它指向第一片段760。一旦完成,DFA线程引擎405读出DFA收集目录755的第二入口,将它指向第二片段760c,依此类推直到所有的输入字节都被读出。图14举例说明代表DFA收集指针目录755的每个入口的可仿效的64位DFA收集指针格式800。64位收集指针800包含储长度字段810。还提供把地址往各自的邻近片段760的第一字节里储存的地址字l殳805。一旦相应的邻近存储器片4殳760中的最后一个字节被处理,就将下一个DFA收集指针乂人该目录中读出。DFA收集指针755本身应该是在64位边界上自然对准的。在主存储器130、108里面被DFA收集指针755指向的字节不必是自然对准的;它们可能有任何随意的字节排列。在收集模式中,输入字节的总数是每个DFA收集指针755中相应的长度字段810的总和。图15展示储存DFA线程引擎405响应DFA指令610所产生的结果的可仿效的DFA结果一各式850。DFA结果一各式850适应大小改变的结果。举例来说,DFA结果850包括第一结果字(即,"RWORD—O)"860)和一个或多个后续结果字(即,"RWORD—1+"865),在需要适应结果时提供后续字865。为了适应遍历不同数目的显著节点505的DFA指令610,该结构在长度方面是可变的,但是结果长度可能受DFA指令字段提供的上界限制(例如,在可仿效的实施方案中,上界是在IW0RD2[最大结果]中提供的)。DFA单元400在它处理DFA指令610期间和之后把这些结果字860、865写入主存储器130、108。DFA结果850是从在DFA指令610中提供的结果地址666开始写入主存储器130、108的。每个结果字860、865应该自然地排列在主存储器130、108中。注意DFA结果850的第一结果字860可能被DFA单元400写不止一次。只有最后写进第一结果字860的包含有效的结果。虽然DFA单元400可以多次写第一结果字860,^f旦是只有最后一次写能设定结果字写成位861。即,结果字写成位861将不被DFA单元400设定,直到它已经写入该结果中所有的其它字为止。通过在它把DFA指令610^是交给DFA单元400之前首先4巴结果字写成位861写为零,系统库欠件能通过4仑询结果字写成位861确定DFA单元400何时已经完成DFA指令610。当结果字写成位861^皮设定的时候,整个结果呈现。图16举例说明低延时存储器装入/储存指令870的可仿效格式。这些指令870可能是响应核心^清求或DFA线程引擎请求发布分。装入/储存指令870是响应处理器核心120产生的DFA指令由LLM控制器160发布的,为的是定4氐延时存储器118读数起点位置。这些低延时存储器装入/储存指令870不同于在典型的通用指令组中提供的普通装入储存指令,因为它们发起直接在核心处理器120和低延时存储器118之间的装入/储存(图3)。这种访问类型的径直性不同于在核心处理器120的主寄存器文巻328(图3)和包括Leverl-l数据高速緩冲存储器154、Level-2高速緩沖存储器130和DRAM108(图4)的高速緩冲相干存储器系统之间根据情况不是装入数据就是储存数据的装入/储存指令。在可仿效的实施方案中,这些装入/储存指令870可能不是64位指令就是36位指令。通过使用低延时存储器总线158允许处理器核心120有对低延时存储器118的直接访问,性能有所提高。这些低延时存储器指令允许比以别的方式通过高速緩冲相干存储器系统154、130、108可能实现的速度更快地在低延时存储器118中存/取数据。通过以这种方式访问低延时存储器118,不需要高速緩存的应用(例如规则表达式的匹配)的性能可以得到显著改善。可仿效的低延时存储器装入/储存指令包括"DMTC2"指令(引起向协处理器2的双重移动)和"DMFC2"指令(引起来自协处理器2的双重移动)。如图16所示,低延时存储器装入/储存指令870的可仿效格式包括指令类型字段875、指令标识字段880、主寄存器标识字,爻885和"IMPL"字段890。指令类型字4殳875〗诸存指示指令类型的数值。举例来说,储存在指令类型字段875中的数值能指出该指令是一个协处理器指令,与通用指令相反。指令标识字段880储存指示特定指令类型(例如,"移到"或"移出")的数值。举例来说,一移到指令指出数据正在从低延时存储器118向核心处理器的保持寄存器330a、330b之一传输(图3)。作为替代,移出指令指出数据正在从保持寄存器330a、330b之一向主寄存器文巻328中的寄存器传输(图3)。因此,在这个实施方案中,每个移到/移出指令都允许凄t据-故一次一个字(例如,对于^f吏用364立字大小的存储器每次36位)地传输。主寄存器标识字段885储存指示在处理器核心的主寄存器文巻328内将一皮访问的特定寄存器的数值。"IMPL"字段890,连同操作码,储存指示协处理器传输指令的类型和特定的保持寄存器330a、330b的IW直。为了把保持寄存器330的内容装入主寄存器文巻328(即,DMF)中的寄存器,主寄存器标识字段885的内容识别在寄存器文巻328中用来储存在保持寄存器330中储存的数据的寄存器。举例来说<formula>formulaseeoriginaldocumentpage41</formula>在这个例子中,LMM一DATAO代表特定的保持寄存器330a;而GPR指的是主寄存器文巻328中的通用寄存器。对写(即,移到)指令,主寄存器标识字段885识别在寄存器文巻328内储存低延时存储器118中的位置的地址的寄存器。举例来说LLM—DATA0<63:0>=llmemory[rt](2)在这个例子中,LLM—DATAO是{呆持寄存器330a;而llmemory指的是低延时存〗诸器118。作为进一步的例子,下列低延时存储器装入指令(DMTC2)能用来将低延时存储器位置指令的内容装入保持寄存器330a,例如DMTC2,$5,0x0400(3)在这个例子中(i)指令类型字革殳875包含表示该指令是将4巴来自低延时存储器118的数据装入保持寄存器425的移到指令的数值"DMT";(ii)指令标识字段880包含指出它是协处理器指令的数值"C2";(iii)主寄存器标识字段885包含指出主寄存器文巻328中的5号寄存器保存在低延时存储器118中的位置的地址的数值"$5";以及(iv)IMPL数值字段890包含识别特定保持寄存器330的数值"0x0400"。(这个数值是常凄史而且在另一个实施方案中可能是不同的数值)。类似地,低延时存储器储存能用来把数据从保持寄存器330传输到主寄存器文巻328的指令。举例来说,可以使用下列低延时存储器储存指令DMFC2,$6,0x0402(4)在这个例子中(i)指令类型字段875包含表示指出控制器160将把保持寄存器330的内容存进在主寄存器文巻328中净皮识别的寄存器的移出类型指令的数值"DMF";(ii)指令标识字段880包含指出它也是协处理器指令的数值"C2";(iii)主寄存器标识字段885包含指出主寄存器文巻328中的6号寄存器是目的地寄存器的数值"$6";以及识别特定的^f呆持寄存器330的IMPL凝:值"0x0402"890。(重申一次,这个数值是常数而且在另一个实施方案中可能是不同的数值)。上述指令格式仅仅是例子,熟悉这项:技术的人应该理解该指令格式可能是允许非寻常装入/储存指令的任何格式。图17举例说明用来定低延时存储器DRAM字读数起点位置的可仿效的低延时存储器地址格式900。举例来说,低延时存储器地址格式900能用于表2提到的"graph_ptr"。低延时存储器地址格式900至少包括一个偏移量字段905和一个复制字段910。偏移量字段905储存指示在低延时存储器中的地址的数值。复制字段910限定指示复制因子的复制数值。在可仿效的实施方案中,低延时存储器地址格式卯0包括64位(O到63位)。偏移量字段905可以是用0至)J294立卩艮定的而复制字,殳910可以用32到34位限定的。地址格式900中剩余的字段可以被保留用于其它目的。作为例子,复制数值为零(即,复制字段=00)表明没有复制。没有复制意味着每个字的单一事件被储存在低延时存储器118中。这也是复制因子为1的反映(即,那个字在低延时存储器118里面出现一次)。继续用这个例子,复制数值为一(即,复制字,殳=01)表明有复制而且在低延时存储器118里面的每个字将伴有那个字的一个副本。这也是复制因子为2的反映(即,那个字在低延时存储器118里面出现两次)。同样地,复制数值为2和3(即,复制字段分别=10和ll)表明有复制而且在低延时存储器118里面的每个字将分别伴有那个字的三个和七个副本。这些数值也是复制因子为4和8的反映(即,那个字在存储器118里面分别出现四次和八次)。偏移量字段905中储存的数值通常是指向存储器字的"字节"地址。举例来说,Offset〈29:2〉是识别36位存储器字的字节地址。符号Offset〈29:2〉表示包含在存储器地址900的偏移量字段905的2到29位里面的那些位的数值。在一些实施方案中,低延时存储器控制器160的最小间隔尺寸是36位字。因此,连续的36位字将相差四个字节。这转化为在偏移量字^殳905中差额为四(即,在字节地址中差额为4表明4个字节的差额被储存在存储器中)。优选的是,存储器地址基准是"自然对准的"。自然对准能通过把偏移量字段905中两个最低位设定为零(即,Offset<l:0〉=00)获得。当复制数值910被设定为零的时候,偏移量的解释是直截了当的——连续的偏移量数值确定连续的低延时存储器位置的读数起始位置。然而,当复制数值不是零的时候,偏移量的解释是不同的。对于不同的复制凄^f直^吏用可仿效的存储器i也址才各式900储存一个字所消耗的低延时存储器位置是在表4中提供的。表4.低延时存储器DRAM偏移量位置<table>tableseeoriginaldocumentpage44</column></row><table>地址结构保证一个字的复制副本#皮储存在邻近的存储器位置。举例来说,当DFA单元400处理有下列特征的存储器(例如,储存一个36位字)的时候(i)相关复制数值为二(复制因子为四);以及(ii)Offset〈29:0〉数值=12,控制器160按照下列每个偏移量:48、52、56和60把36位的数据字的一个副本存进低延时存储器118。依照可仿效的复制数值2参照表4的第三行,中间数值通过将偏移量数值(即,12)乘以指定的因子4(即,Offset〈27:0〉氺4)首先被确定。获得中间数值48。然后,低延时存储器偏移量是通过把指定的数值0、4、8和12与该中间数值48依次相加确定的,借此导致偏移量为48、52、56和60。由此产生的偏移量i也址相差凝f直4,这意p未着它们涉及邮b连的4字节存^f渚器字。继续这个4字节例子,下一个0ffset〈29:0数值将是12+4=16。此外,对于复制数值为2的情况,由此产生的偏移量依照表4将是64、68、72、76。另一方面、这些复制是邻近的,而且它们与早先的偏移量数值(即,12)的复制也是邻近的。因此,即使当那些字被复制的时候,4吏用这种寻址结构,连续的36位字也总是在偏移量字段905中相差四。这能〗吏低延时存储器的DRAM寻址对于软件变得非常相似,与复制因子无关。这々i定那些字不与不同的复制凄H直同时4吏用。在一些实施方案中,每个核心处理器120都〗吏用特定的指令(例如,前面参照图16描述的DMTC2和DMFC2指令)确定低延时存储器118的读数起始位置。这些指令启动64位或36位的装入/储存。此外,为了保证适当的操作,那些地址应该自然地对准。因此,对于36位装入/储存,偏移量字^:905(即,偏移量<1:0>)的最初两个最^氐位应该是零。类似;也,对于64位装入/书者存,偏移量字段905(即,0ffset〈2:0)最初三个最低位应该是零。同样的概念能用来保证不同字长的自然对准(例如,最初四位=0适用于128位装入/储存,等等)。图18A和18B举例说明分别适合36位和64位装入/储存的可仿效的低延时存储器118和核心处理器寄存器格式。这个例证足以代表不复制储存的字的传输——低延时存储器字960对应于核心寄存器950。对于复制储存的字的传输,在低延时存储器118中每个字将有对应数目的副本(例如,二、四或八份副本)。这些副本将用附加的低延时存储器字960表示,每个复制副本一个存储器字960。如图18A所示,36位的装载/储存确定36位储存的字960的读数起始位置。就储存而言,DFA单元400的硬件直接把代表数据字段655(即,Data〈35:0)的源寄存器的较低的36个数据位写进储存的36位存储器字960。核心寄存器950还包括被展示成单一的位被称为"XO"位的奇偶字段955。通常,XO位955被配置成储存全部36个的储存位的"异"数值。对于储存,XO位必须是零。对于装入,DFA硬件把储存的36位字放在目的地寄存器的较低的36位中(即,Data<35:0>),而且也对巴XO位设定为全部36个储存的位的"异"。在一些实施方案中,DFA单元400对于36位的装入/储存不直接支持奇偶校—睑或任何其它的误差才全验或纠错码。因此,必须依靠软件提供任何检错和/或纠错。举例来说,如果需要,软件能〗吏用36个未经处理的可用位之中的一些实现奇偶校验或纠错码(ECC)。XO位955也能连同任何软件检错和/或纠错一起使用。在使用时,XO位955能加速关于读操作的以软件为基础的奇偶校验,因为它指出如果软件把36个位之一写成其它35位的偶凄t同位则有奇偶冲交-验误差。现在参照图18B,64位低延时存储器DRAM装载/储存才喿作定两个连续的36位储存的字965、970的读数起始位置。每一个储存的字965、685包括各自的数据字段。举例来说,第一个36位储存的字965包括一个数据字段975(即,Data<35:0>)。第二个36位储存的字970也包括一个凄t据字4殳980(即,Data<36:36>)。然而,在一些实施方案中,第二个^f诸存字970的一些最高位能用于检错和/或纠错。举例来说,最高位能被称为ECC字段985用于储存8位SECDEDECC码。不同于36位的装入和储存才喿作,DFA单元400ECC码。在一些实施方案中,64位字的每个36位字965、970被分开复制。因此,当复制数值不是零的时候,两个储存的字965、970可能不在连续的(未复制的)低延时存储器位置。在一些实施方案中,依照每个储存的数据结构确定复制。因此,第一个数据结构可能有复制因子2,而第二个数据结构可能有不同的复制因子4。复制可以由系统软件在系统初始化时确定。因此,系统專欠件最初用一个或多个凄t才居结构(例如,DFA曲线图)填充低延时存储器118,每个数据结构是根据需要复制的。特定的数据结构是否被复制和相关的复制是什么能依照性能参数确定。举例来说,如果某个特定的数据结构比其它数据结构更频繁地访问,那个数据结构可能在低延时存储器118里面被复制到较高的程度。同样,如果某个特定的lt据结构净皮相对罕见地访问,那么那个数据结构可能在低延时存储器118里面被复制到较低的程度,或许根本不复制。此外,每个储存的数据结构的复制可以由^f吏用者预先确定。当某个数据结构被复制的时候,写进那个数据结构的内容将被全部写到复制的数据结构中。作为替代或补充,从某个储存的复制数据结构读取能指向该复制数据结构的任何一个独立储存的版本。因此,如果储存4皮请求的数据结构的存储体忙于为某访问请求服务,那么DFA线程引擎405依照本发明的原则能将该访问请求送往其它包含被请求数据结构的储存复制数值的存储体之一。核心120维持打算稍后使用的储存数据结构的档案。举例来说,系统软件在产生DFA指令的时候访问该储存数据结构的档案。因此,该档案至少包4舌储存lt据结构的存Y诸器位置和与最初储存的那个数据结构相对应的复制作品。在一些实施方案中,系统软件把查询表保存在用来储存包括每个先前储存的数据结构和相关的复制因子的存储器起始位置的目录的主存储器中。这个目录能在最初形成或在〗氐延时存储器118里面编译和〗诸存该数据结构(例如,DFA曲线图)的时候产生。如上所述,DFA指令识别特定的DFA曲线图和^f壬^可可用的复制品。在说明性的例子中,在核心120上运行的系统软件把一个或多个DFA指令写进位于主存储器130、108中的DFA指令队列。门铃寄存器420被更新,以便维持留在DFA指令队列里面的DFA指令的精确计数。DFA单元40(H全查门铃寄存器420并且响应观察大于零的门铃计数,从DFA指令队列中读取下一条指令。DFA单元400把读取的指令暂时储存在DFA单元的本地指令队列或緩冲区415中。可用的完全相同的DFA线程引擎405之一读出4渚存在本地指令《爰沖区415中的下一个指令并且开始处理那条指令。如同结合图IO描述的那才羊,DFA指令识别可选择的先前4诸存的DFA曲线图之一的起始地址的存储器读数起始位置。该指令也识别指出在低延时存储器118里面有多少选定的DFA曲线图的复制可用的相关复制。DFA线禾呈引擎405读耳又准备用该DFA指令处理的打包数据的第一字节,从主存储器130、108按地址读取的字节也被DFA指令识别。(对于打包输入数据的每个字节,DFA线程引擎405都产生一个低水平存储器读数起始位置)。DFA线程引擎405响应该输入字节向LLM控制器160请求低水平存储器访问,该请求也识別复制编号。LLM控制器160通过首先识别所有可用的j渚存一皮ifr求的DFA曲线图的存l诸体432确定该^吏用哪个可用的复制。举例来i兌,LLM控制器160依据先前储存在DFA配置寄存器中的tt值确定接口编号。LLM控制器160有了接口编号和来自DFA指令的复制数值和偏移量数值就确定在表1中指出的存储体。如果存储器访问指令是储存指令,相关的数据将被储存(即,复制)在所有被识别的存储体中。然而,如果存储器访问请求是装入指令,LLM控制器160确定该-使用哪个存^f渚体432。然后,LLM控制器使用温度计逻辑440读与被识别的存储体相关联的队列435的深度。有最低的排队指令编号的存储体432被选定,然后LLM控制器160如同结合图18A和18B描述的那样产生对应的低水平访问请求。这份申请涉及2004年9月10日申请的美国专利临时申请第60/609,211号、以"DirectAccesstoLow-latencyMemory(直接访问^f氐延时存^f渚器)"为题在2004年10月28日申i青的美国专利申i青第11/024,002号、以"DeterministicFiniteAutomata(DFA)(确定性有限自动机)"为题在2005年4月8日申请的美国专利临时申i青第60/669,672号和以"DeterministicFiniteAutomata(DFA)Processing(确定性有限自动才几处理)"为题也在2005年4月8日申"i青的美国专利临时申请第60/669,603号。上述申^奮的全部教导在此通过引证被并入。虽然这项发明已经参照其优选实施方案予以具体的展示和描述,〗旦是熟悉这项:忮术的人将理解在形式和细节方面各种不同的改变可以在不脱离权利要求书所嚢括的发明范围的情况下完成。权利要求1.一种用来管理包括为数众多的存储体的低延时存储器的方法,该方法包括接受把确定的数据结构复制编号储存在为数众多的存储体中的请求;以及响应该储存请求,把确定的复制编号之中的每一个储存在为数众多的存储体之中相应的存储体中。2.根据权利要求l的方法,其中所述储存请求包括指示选定的复制编号的复制因子。3.根据权利要求2的方法,其中所述复制因子是2的幂。4.根据权利要求l的方法,其中所述数据结构是确定性有限自动机。5.根据权利要求1的方法,其中所述为数众多的存储体每个都是可以使用为数众多的低延时存储器接口之一访问的,数据结构的至少一些复制品是可以4吏用不同的<氐延时4妻口访问的。6.根据权利要求l的方法,进一步包括接受访问J诸存凄t据结构的请求;响应所述的访问请求,选4奪为数众多的存储体之中的一个存储体,该选定的存〗诸体^f诸存一皮i奮求的数据结构复制品;以及访问选定的存储体。7.才艮据权利要求6的方法,其中所述选择一个存储体的步骤包括确定为数众多的存储体之中每个存储体储存所述数据结冲勾复制品的用法;以及选才奪为凄t众多的存4诸体之一对已确定的用法作出响应。8.根据权利要求7的方法,其中所述确定用法的步骤包括比较为数众多的队列,每个队列与为数众多的存储体之中的一个相应的存j诸体有关。9.根据权利要求l的方法,其中所述低延时存储器选自动态随才几存耳又存<诸器(DRAM)、缩减延时动态随才几存耳又存^f渚器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随即存取存〃賭器(FCRAM)以及它们的iEL合。10.—种低延时存储器管理控制器,包括为访问低延时存储器配置的第一存储器4姿口,所述低延时存储器包括为数众多的存储体;适合访问主存储器的主存储器接口;与主存储器接口耦合接受把选定的数据结构复制编号储存在为数众多的存储体之中不止一个存储体中的请求的指令单元;与所述指令单元耦合的为数众多的线程引擎,每个线程引擎都适合与为数众多的存储体之中的可选择的相应的存储体有关;与所述指令单元耦合而且4妻在第一存〗诸器^妄口和为tt众多的线程引擎之间的低延时存储器控制器,该低延时存储器控制器把每个选定数目的数据结构复制品储存在为数众多的存储体之中相应的存储体上。11.根据权利要求10的装置,其中所述处理器包括多芯处理器。12.才艮据权利要求10的装置,其中所述^f诸存可选择的复制编号的请求包括指示选定的复制编号的复制因子。13.根据权利要求12的装置,其中所述复制因子是2的幂。14.根据权利要求10的装置,其中所述低延时存储器控制器包括为数众多的输入队列,用于为凄t众多的存^f诸体之中的每一个的一个输入队列,所述低延时存储器控制器选择为数众多的存储体之中响应某确定数值的存储体。15.根据权利要求14的装置,其中所述确定数值与被储存数据结构的用法有关。16.根据权利要求14的装置,其中所述低延时存储器控制器包4舌确定在为凄t众多的l命入队列之中的不同队列的相只十可用性的温度计单元,每个输入队列与为数众多的存储体之中的一个相应的存4诸体有关。17.才艮据权利要求10的装置,其中所述数据结构包含确定性有限自动才几。18.根据权利要求10的装置,其中所述低延时存储器选自动态随机存取存储器(DRAM)、缩减延时动态随一几存耳又存储器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随机存取存4诸器(FCRAM)以及它们的纟且合。19.根据权利要求10的装置,其中所述为数众多的存储体之中的一些是可以使用第一低延时存储器接口访问的,而为数众多的存储体之中其它的存储体是可使用第二低延时存储器接口访问的,至少一些数据结构复制品是可以使用第一和第二低延时存储器接口之中的任一接口访问的。20.根据权利要求10的装置,进一步包括处理器接口,所述低延时存储器管理控制器通过该接口与处理器通信。21.—种低延时存储器访问控制器,其中包括用来接受把确定的数据结构复制编号储存在为数众多的存储体中的请求的装置;以及用来响应所述的储存请求把每个确定的复制编号储存在为数众多的存储体之中相应的存储体中的装置。全文摘要这项发明提供在低延时存储器中选择性地复制数据结构的方法和装置。该存储器包括为储存同一数据结构的复制副本而配置的多个个别的存储体。在收到访问该储存的数据结构的请求时,低延时存储器访问控制器选择其中一个所述的存储体,然后从选定的存储体访问储存数据。存储体的选择可能是使用温度计技术比较不同存储体的相对可用性完成的。从由此产生的效率获益的可仿效的数据结构包括装入的(即,读出的)往往比储存的(即,写入的)多的确定性有限自动机(DFA)曲线图和其它数据结构。文档编号G06F13/16GK101128804SQ200580030451公开日2008年2月20日申请日期2005年9月9日优先权日2004年9月10日发明者大卫·A·卡尔森,格雷格·A·鲍查德,理查德·E·科斯勒申请人:卡威姆网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1