CN101128804B - 在低延时存储器中数据结构的选择性复制 - Google Patents

在低延时存储器中数据结构的选择性复制 Download PDF

Info

Publication number
CN101128804B
CN101128804B CN2005800304519A CN200580030451A CN101128804B CN 101128804 B CN101128804 B CN 101128804B CN 2005800304519 A CN2005800304519 A CN 2005800304519A CN 200580030451 A CN200580030451 A CN 200580030451A CN 101128804 B CN101128804 B CN 101128804B
Authority
CN
China
Prior art keywords
memory
low delay
dfa
memory bank
numerous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2005800304519A
Other languages
English (en)
Other versions
CN101128804A (zh
Inventor
格雷格·A·鲍查德
大卫·A·卡尔森
理查德·E·科斯勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Cavium Networks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Priority claimed from PCT/US2005/031803 external-priority patent/WO2006031551A2/en
Publication of CN101128804A publication Critical patent/CN101128804A/zh
Application granted granted Critical
Publication of CN101128804B publication Critical patent/CN101128804B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • G06F2212/6012Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache

Abstract

这项发明提供在低延时存储器中选择性地复制数据结构的方法和装置。该存储器包括为储存同一数据结构的复制副本而配置的多个个别的存储体。在收到访问该储存的数据结构的请求时,低延时存储器访问控制器选择其中一个所述的存储体,然后从选定的存储体访问储存数据。存储体的选择可能是使用温度计技术比较不同存储体的相对可用性完成的。从由此产生的效率获益的可仿效的数据结构包括装入的(即,读出的)往往比储存的(即,写入的)多的确定性有限自动机(DFA)曲线图和其它数据结构。

Description

在低延时存储器中数据结构的选择性复制
相关申请 
这份申请要求在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网络协议层。除了处理网络协议层之外,知道的联网应用系统需要通过L4-L7网络协议层以基于访问和内容的安全措施(包括防火墙、虚拟个人网络(VPN)、加密套接协议层(SSL)、非法侵入探测系统、英特网协议安全、在网速下防病毒和抗垃圾邮件功能性)同时保护这些协议。 
网络处理器可用于高吞吐量L2和L3网络协议处理,也就是说,完成信息包处理,以便以网速转发信息包。通常,通用处理器用来处理需要更智能的处理的L4-L7的网络协议。举例来说,传输控制协议(TCP)即L4网络协议需要一些加强计算的工作,包括 计算信息包在整个有效载荷上的校验和、管理TCP段缓冲区以及总是把多个定时器维持在每一连接基础上。虽然通用处理器能完成加强计算的工作,但是它不具有足以处理数据以致它能以网速转发的性能。 
此外,知道内容的应用调查信息包的内容,需要在数据流中搜索包含被重复不同数目的固定信息串和字符类别两者的表达式。一些搜寻算法用来用软件完成这件工作。一种这样的算法是确定性有限自动机(DFA)。当使用DFA搜寻算法的时候,可能有一些限制,例如,在有重复式样的数据流中曲线图大小和错误匹配的指数型增长。 
由于这些限制,内容处理应用需要对式样搜寻所产生的结果进行大量的后处理。后处理的需要以其它的连接状态信息(例如,连接类型),和在信息包中所包含的协议标题中的特定数值限定匹配式样。它还需要特定的其它类型的加强计算的限定,举例来说,如果它在数据流里面的特定位置范围内,或者如果它跟在另一个式样后面并且距前面的式样在特定的距离之内或离开前面的式样在特定的偏移量之后/在特定的偏移量,式样匹配才是有效的。举例来说,规则表达式匹配把不同的算子和单一的字符结合起来,从而允许构成复杂的表达式。 
发明内容
内容处理应用(例如,用于远程通信和联网的那些)的完成通常受益于在处理器上充当主机提供相对快速的处理速度。举例来说,诸如侵入探测和预防和防病毒之类的应用为了避免数据的延迟和/或丢失与它到达一样快速地处理输入数据。快速的存储器访问对于需要大量的后处理的应用(包括依赖式样搜寻所产生的结果的那些)也是重要的。低延时存储器器件提供一种提供相对快 速的访问时间的解决方案。一些低延时装置提供很好地在100纳秒以下的访问时间。然而,当对储存在存储器中的同一数据结构发出多个访问请求的时候,即使它是低延时存储器,后面的对同一数据结构的请求通常将被延迟到较早的请求完成。 
一种减少由于访问请求重叠造成的延迟的方法是使用被配置成包括多个存储体的低延时存储器。然后,可以把相同的数据储存或复制在多个存储体之中的不止一个存储体上。复制储存在低延时存储器中的全部数据将保证该数据的多余副本可用于独立地为重叠的访问请求服务,借此减少延迟。遗憾地是,低延时存储器与其它的传统存储器相比价格昂贵并因此更罕见。因此,复制所有储存数据(取决于应用)可能是不实用的,甚至是不可能的。此外,访问请求重叠的可能性通常对于多处理器系统将更大,在这种系统中多个独立的处理器每个都对储存在低延时存储器中的同一数据发出访问请求。 
本发明通过有选择地复制储存在低延时存储器中的数据克服这些限制,以致复制的程度是可选择的。举例来说,复制的程度可能取决于特定数据结构的重要性(例如,使用频率)。因此,相对偶尔访问的数据结构可能不被复制或者复制到较低的程度,因为访问请求重叠的可能性将比较低。反之,相对时常访问的数据结构可能被复制两次以上,因为访问请求重叠的可能性通常将依照使用频率逐渐增加。 
低延时存储器访问控制器接受把数据结构储存在低延时存储器中的请求。举例来说,该数据结构可能是确定性有限自动机(DFA)曲线图。所述请求能由软件在系统初始化时产生而且包括用于储存该数据结构的复制因子。数据结构是依照复制因子复制的。优选的是,低延时存储器被配置成包括多个存储体,每个复制品被储存在不同的存储体中。一旦储存好,低延时存储器访问 控制器在收到访问复制的数据结构的请求时选择不止一个存储体之中的一个存储体储存被请求数据结构的复制品。一旦选定,该低延时存储器访问控制器访问选定的存储体。因此,即使当第一请求仍然正在处理的时候,同一数据结构的其它复制版本保持可访问性以处理后面的对同一数据结构的请求。 
复制因子是可选择的而且指示选定的复制编号。举例来说,复制因子可能是指示储存1、2、4或8份该数据结构的副本的1、2、4或8。低延时存储器的类型可以选自动态随机存取存储器(DRAM)、缩减延时动态随机存取存储器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随机存取存储器(FCRAM)以及它们的组合。在一些实施方案中,复制因子是由软件确定的。举例来说,软件能追踪对不同的数据结构的访问请求,以对每个数据结构的访问数目和/或访问频率为基础确定复制因子。复制因子能被储存起来,而且能被用于下一次把数据结构载入低延时存储器。在一些实施方案中,复制因子可以储存在非易失性存储器中而且能在后来的系统重新启动期间使用。 
在选择不止一个存储体之中使用哪些存储体时,低延时存储器访问控制器确定每个存储体的当前用法。在一些实施方案中,低延时存储器访问控制器包括用于多个存储体之中每个存储体的相应的队列。然后,低延时存储器访问控制器使用温度计技术比较不同队列的大小,从而确定哪些存储体可用或较少使用。举例来说,每个存储体都配备一个相应的队列。然后,可以比较在储存被请求的数据结构的复制品的多个存储体当中排队指令的数目,排队指令数目最少的存储体被选定。因此,把排队指令的数目看作温度计的数值时,可以选择数值最低的温度计,以增加以最小的延迟为低延时存储器访问请求服务的可能。 
在一些实施方案中,低延时存储器访问控制器通过不止一个低延时存储器(LLM)访问总线与低延时存储器耦合。举例来说,包括十六个个别的存储体的低延时存储器能是使用两个LLM访问总线与低延时存储器访问控制器耦合的。有分布在多个总线当中的存储体增添进一步的提高。如果不同的存储体是使用同一总线耦合的,对储存在不同的存储体中的同一数据结构的复制品的重叠访问可能仍然导致冲突。多余的总线减少总线冲突和延迟的可能性。在一种配置中,第一组八个存储体是使用第一LLM访问总线耦合的,而第二组八个存储体是使用第二LLM访问总线耦合的。当在低延时存储器中复制储藏的数据结构的时候,至少一些复制品被储存在不同的访问总线上与低延时存储器控制器连接的存储体上。 
附图说明
本发明的上述的和其它的目标、特征和利益从下面的用相似的参考符号在不同的视图中处处表示同一部份的附图举例说明的本发明的优选实施方案的更具体的描述将变得明显。这些附图不必依比例绘制,而是把重点放在举例说明本发明的原则上。 
图1是依照本发明的原则包括网络服务处理器的网络服务处理系统的方框图; 
图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更详细地举例说明图13所示的DFA集合指针格式; 
图15举例说明响应图10所示的DFA指令的可仿效的结果格式; 
图16依照本发明的原则举例说明可仿效的低延时存储器装载/储存指令格式; 
图17依照本发明的原则举例说明可仿效的低延时地址格式;而 
图18A和18B依照本发明的原则分别举例说明用于36位和64位装载/储存的可仿效的低延时存储器DRAM格式和核心寄存器格式。 
具体实施方式
本发明的优选实施方案描述如下。 
本发明提供通过可选择地复制存储器里面的数据结构以有效的方式访问低延时存储器的方法和装置。所述存储器包括为储存同一数据结构的复制副本配置的多个个别的存储体。在收到访问被储存的数据结构的请求时,低延时存储器访问控制器选择存储体之一,访问来自选定的存储体的储存数据。存储体的选择可以是使用温度计技术通过比较不同存储体的相对可用性完成的。得益于由此产生的效率的可仿效的数据结构包括确定性有限自动机和装载的(即,读出的)往往比储存的(即,写入的)多的其它数据结构。 
图1是依照本发明的原则包括网络服务处理器110的安全器械100的方框图。安全器械100是一个能把在乙太网端口(Gig E)收到的信息包切换到另一个乙太网端口(Gig E)并且在转发信息包之前在收到的信息包上完成为数众多的安全功能的独立系统。举例来说,安全器械100能用来在把经过处理的信息包转发到局 域网(LAN)之前完成对在广域网(WAN)上收到的信息包的安全处理。 
网络服务处理器110提供硬件信息包处理、缓冲、工作计划安排、排序、同步和高速缓冲存储器连贯性支持,以便加速全部信息包处理工作。网络服务处理器110处理包括在收到的信息包中的开放式系统互连网络L2-L7层协议。 
网络服务处理器110通过物理(PHY)接口104a、104b接受来自乙太网端口(Gig E)的信息包,完成关于收到的信息包的L7-L2的网络协议处理,并且通过物理接口104a、104b或通过周边元件互连(PCI)总线106转发经过处理的信息包。网络协议处理可以包括诸如防火墙、应用防火墙、包括IP安全(IPSEC)和/或加密套接协议层(SSL)的虚拟个人网络(VPN)、侵入探测系统和防病毒之类的网络安全协议的处理。 
网络服务处理器110中的动态随机存取存储器(DRAM)控制器控制对与网络服务处理器110耦合的动态随机存取存储器108的访问。在一些实施方案中,DRAM 108对网络服务处理器110是外部的。DRAM 108储存从PHY接口104a、104b或PCI接口106收到的供网络服务处理器110处理的数据包。PCI接口106可能是PCI扩展(PCI-X)接口106。 
在网络服务处理器110中的低延时存储器控制器控制低延时存储器(LLM)118。LLM118能用于允许快速查询的英特网服务和安全应用,包括侵入探测系统或防病毒应用可能需要的规则表达式匹配。 
规则表达式是表达信息串匹配式样的常见方法。规则表达式的基本元素是待匹配的单一字符。这些能与允许使用者表达拼 接、交替、kleene-star之类的字符算子组合。拼接用来从单一字符(或亚信息串)产生多字符匹配式样,而交替(|)用来产生能与任何两个或多个子信息串匹配的式样。kleene-star(*)的使用允许某个式样在信息串中与该式样的零(0)或较多的具体值相匹配。不同的算子和单一字符结合允许构成复杂的表达式。举例来说,表达式(th(is|at)*)将与th、this、that、thisis、thisat、thatis、thatat、等等相匹配。 
图2是在图1所示的网络服务处理器110的方框图。网络服务处理器110使用至少一个结合图1描述的处理器核心120递送高的应用性能。 
用于处理的信息包是通过SPI-4.2或RGM II接口被接口单元(例如,GMX/SPX单元122a、122b之中的任何一个)接收的。信息包也可能被PCI接口124接收。GMX/SPX单元(122a、122b)通过检查在收到的信息包中包含的L2网络协议标题中的各种不同的字段完成对收到的信息包的预处理并且把该信息包转发到信息包输入单元126。 
信息包输入单元126进一步完成对包含在收到的信息包中的网络协议标题(例如,L3和L4标题)的预处理。这种预处理包括对TCP/用户数据报协议(UDP)(L3网络协议)的校验和检验。 
游离池分配器128维持指针池释放Level-2高速缓冲存储器130和外部的DRAM 108中的存储器。信息包输入单元126使用指针池的其中之一把收到的打包数据储存在Level-2高速缓冲存储器130或外部DRAM 108中,并且使用另一个指针池为处理器核心120分派工作队列入口。 
然后,信息包输入单元126把打包数据写入Level-2高速缓冲存储器130或外部DRAM 108的缓冲区。优选的是,打包数据是以便于较高层次的软件在至少一个处理器核心120中运行的格式写入缓冲区的。因此,对较高水平的网络协议的进一步处理变得容易。 
网络服务处理器110也能包括一个或多个应用特定协处理器。这些协处理器在被包括在内的时候从处理器核心120卸下一些处理,借此使网络服务处理器110实现高吞吐量的信息包处理。举例来说,压缩/解压缩协处理器132是为致力于完成收到的信息包的压缩和解压缩准备的。在一个实施方案中,参照图2,提供了包括适合加速防病毒、侵入探测系统和其它的内容处理应用所必需的式样和/或签字匹配的专用DFA线程引擎的DFA单元400。使用DFA单元400,式样和/或签字匹配被加速,举例来说,以高达每秒4千兆位的速率运行。 
I/0接口136管理总协议和仲裁并且区分相干的输入/输出。I/O接口136包括I/O桥138和读取和添加单元140。读取和添加单元140中的寄存器用来维持用于通过信息包输出单元146转发经过处理的信息包的输出队列的长度。I/O桥138包括用来储存将在相干存储器总线144、I/O总线142、信息包输入单元126和信息包输出单元146之间转移的信息的缓冲队列。 
信息包排序/工作组件148安排处理器核心120的工作顺序和时间表。工作是通过把工作队列入口加到队列上排队的。举例来说,在每个信息包抵达时用信息包输入单元126添加一个工作队列入口。定时器单元150用来安排处理器核心120的工作时间表。 
处理器核心120向信息包排序/工作组件148请求工作。信息包排序/工作组件148选择(即,安排)给处理器核心120之一的工 作并使指针回到描述给该处理器核心120的工作的工作队列入口。 
处理器核心120依次包括指令高速缓冲存储器152,Level-1数据高速缓冲存储器154和加密术加速156。在一个实施方案中,网络服务处理器110(图1)包括十六个超标量精简指令集计算机(RISC)型的处理器核心120。在一些实施方案中,每个超标量RISC型的处理器核心120都包括MIPS642版处理器核心的扩展。 
Level-2高速缓冲存储器130和外部的DRAM 108被所有的处理器核心120和I/O协处理器装置(例如,压缩/解压缩协处理器132)分享。每个处理器核心120都借助相干存储器总线144与Level-2高速缓冲存储器130耦合。相干存储器总线144是在处理器核心120、I/O接口136、Level-2高速缓冲存储器130和Level-2高速缓冲存储器控制器131之间所有的存储器和I/O事务的通信频道。在一个实施方案中,相干存储器总线144对16个处理器核心120是可升级的,因此在通过它写入时支持完全相干的Level-1数据高速缓冲存储器154。优选相干存储器总线144是用区分I/O优先次序能力高度缓冲的。 
Level-2高速缓冲存储器控制器131维持存储器参考连贯性。它为每一个充分请求返还一个块的最新副本,不管那个块究竟是储存在外部的DRAM108中还是储存在Level-2高速缓冲存储器130中,还是在“飞行”中。它还把用于数据高速缓冲存储器(Dcache)154的标签的复制副本储存在每个处理器核心120中。它比照数据高速缓冲存储器标签比较高速缓冲存储器-块-存储器请求的地址,而且只要储存指令来自另一个处理器核心或经由I/O接口136来自另一个I/O元件就使处理器核心120的数据高速缓冲存储器标签(两个副本)无效。 
在一些实施方案中,DRAM控制器133支持高达16兆字节的DRAM 108。优选的是,DRAM控制器133支持64位或128位的DRAM108接口。此外,DRAM控制器133能支持优先协议,例如,DDR-I(双精度型数据传输率)协议和DDR-2协议。 
在信息包经过处理器核心120处理之后,信息包输出单元146从存储器130、108读出该信息包的数据,完成L4网络协议后处理(例如,产生TCP/UDP校验和),通过GMX/SPX单元122a、122b转发信息包,并且释放该信息包使用的L2高速缓冲存储器130/DRAM 108。 
低延时存储器控制器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之一的比较详细的方框图。处理器核心120包括整数执行单元302、指令分派单元304、指令读取单元306、存储器管理单元308、系统接口310、低延时接口350、装入/储存单元314、写缓冲器316和一个 或多个安全加速器156。在一些实施方案中,处理器核心120还包括允许调试待完成的操作的调试器接口330(例如,EJTAG接口)。系统接口310控制处理器对外部存储器的访问。外部存储器在相应的处理器120外部。举例来说,外部存储器可以位于同一器件上,例如,与处理器核心120在同一半导体基体上。作为替代或补充,外部存储器对于处理器装置可能是外部的,例如,在主板上,或甚至完全在不同的组件上。外部存储器可以包括Level-2高速缓冲存储器130、主存储器(即,外部DRAM 108)以及Level-2高速缓冲存储器130和主存储器108的组合。 
整数执行单元302通常包括乘法单元326,至少一个寄存器文卷(主寄存器文卷)328和两个支持寄存器330a、330b。支持寄存器330a、330b用来暂时储存准备写入低延时存储器118的数据和已经从低延时存储器118读出的数据。依照本发明的原则,数据是使用低延时存储器装入/储存指令在处理器核心120和低延时存储器118之间转移的。此外,支持寄存器330a、330b通过在传递途径停顿之前允许两个未处理的负载来改善指令传递途径的效率。虽然展示的是两个支持寄存器,但是使用一个或两个以上支持寄存器也是可能的。 
在一些实施方案中,乘法单元326能提供64位寄存器直接乘法运算。优选的是,指令读取单元306包括用来本地储存优选指令的指令高速缓冲存储器(ICache)152。此外,装入/储存单元314包括数据高速缓冲存储器154。在一些实施方案中,存储器管理单元308包括进一步提高计算速度的后备译码缓冲器340。 
在一些实施方案中,处理器核心120包括加密术加速组件(安全加速器)156,该加密术加速组件包括加密术加速。加密术加速通常是由一个或多个加密算法提供的。可仿效的算法包括三数据加密标准(3DES)、先进的加密标准(AES)、安全的混杂算法(SHA -1)、信息分类5号算法(MD5)。加密术加速组件156通过在执行单元302中来回移动主寄存器文卷328通信。一些算法(例如,RSA和Diffie-Hellman(DH)算法)是在乘法/除法单元326中完成的。算法(例如,这些算法)可能是强烈依赖存储器的,举例来说,需要多次存取储存的查询表。强烈依赖存储器的算法(例如,这些算法)的性能是通过使用低延时存储器118储存和取回依赖算法的数据得到提高的。总的系统性能可以通过使用LLM专用总线158把低延时存储器118与处理器120连接起来得到进一步的提高。 
DFA单元400包括用来与低延时存储器118接口的低延时存储器控制器160。控制器的类型取决于所用的低延时存储器的类型。举例来说,外部的低延时存储器118可以包括DRAM部份,例如,可从Micron Technology of Biose,Idaho购买的缩减延时DRAM(RLDRAM)。 
可仿效的DFA单元400的方框图是用图4举例说明的。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耦合。在一些实施方案中,提供多个LLM接口。每个接口425都通过各自的LLM访问总线与低延时存储器118耦合。优选的是,DFA单元400包括不止一个使用各自的LLM访问总线与低延时存储器118耦合的LLM接口425,以便支持对低延时存储器118的同时访问。因此,当不止一个接口425之一忙于为第一存储器访问请求服务的时候,其它接口425之一仍然可用于为另一个请求服务。在可仿效的实施方案中,DFA单元400包括两个低延时DRAM接口425a、425b(通常425),每个接口包括18个数据位。如同对于熟悉这项技术的人众所周知的那样,存储器的接口包括将从存储器读出的或被写入存储器的数据位、指出数据在存储器里面的储存位置的地址位和诸如芯片选择位、时钟、读/写启动位和储存体选择位之类的控制位。 
DFA单元400还通过I/O桥138和I/O总线142与主存储器130、108耦合。更进一步,DFA单元400使用另外一个接口与一个或多个处理器核心120耦合。举例来说,DFA单元400包括用于DFA单元400和处理器核心120之间专用的直接访问的对低延时存储器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能按体系结构支持来自LLM接口425的任何组合的多达1千兆字节的附加低延时存储器118。LLM总线158直接与处理器核心120连接,借此把有非常快速的访问路径的处理器核心120提供给低延时存储器118。在可仿效的实施方案中,个别处理器核心的操作可以是36位或64位的装入/储存。 
诸如加密处理之类知道内容的应用处理可能利用一些式样和/或表达式(数据)。这些式样和/或表达式可能被重复地参考并且优选储存在低延时存储器118中。这些式样和/或表达式可能是依照优选的数据结构以被称为DFA的专业状态机的形式安排的。给DFA的输入是能用一个或多个(8位)字节形成的信息串表达式。用于这样的DFA的字母是字节。每个输入字节都引起DFA的状态机从一个状态转变到下一个状态。这些状态和这个转移函数能用曲线图表达。 
一般地说,DFA能被表达成包括用弧线,或互相连接起来的多个节点的曲线图或模型,如图5A和5B所示。曲线图中每个节点代表状态机的一种相应的状态,而曲线图中不同的弧线代表互连节点之间的状态转变。状态机的当前状态是选择曲线图特定节点的节点标识符。特定弧线的选择是用对状态机(例如,DFA)的输入字节确定的。因此,给定限定第一节点的状态和输入字节,状态就沿着与该输入字节相对应的弧线从第一节点转变到第二节点。在一些例证中,第一和第二节点是相同的。节点的数目对 于小的曲线图能从几个节点变化到多达大约128,000个节点。较大的曲线图可能有1,000,000个或更多的节点。 
DFA线程引擎405能用于完成式样搜寻。在图5A和5B举例说明的例子中,DFA曲线图500是为寻找目标信息串表达式“abc”设计的。因此,DFA曲线图被用来搜寻与字符串“abc”精确匹配的输入数据。这个表达式是固定长度的表达式,所以节点的数目和曲线图的深度是已知的(即,固定的)。 
为了产生DFA曲线图500,剖析该表达式并且用编译器产生把节点1-3添加到指定的表达式曲线图上的根节点(即,节点“O”)(即,适合该目标字符串中每个字符的附加节点)。继续这一个例子,可仿效的字符输入流包含信息串“...12abc3...。”使用DFA曲线图搜寻输入的信息串以便识别目标信息串表达式“abc”。 
DFA曲线图的初始状态是节点的“0”。每个字符或字节是相继读出的,而且DFA保持在节点0,直到该目标信息串表达式的第一个字符被读出为止。举例来说,在探测输入流中的目标信息串表达式的第一个字符“a”的时候,遵循标注“a”的弧线,状态从节点0转变到节点1。读出输入流中的下一个字符。如果探测到的是不同于该目标信息串表达式的下一个字符(即,“b”)的任何东西,则沿着标注“not b”的弧线从节点1回到节点0。然而,在探测字符“b”作为输入流中下一个字符的时候,遵循标注“b”的弧线从节点1到节点2。输入流中下一个字符被读出。如果它是不同于该目标信息串表达式的下一个字符(即,“c”)的任何东西,则沿着标注“not c”的弧线从节点2回到节点0。然而,在节点2,探测输入流中的字符“c”时,沿着标注“c”的弧线从节点2到节点3。因为目标信息串表达式“abc”是固定长度的表达式,所以节点3是终结节点,于是报告搜寻结果。 
在图5B举例说明的另一个例子中,早先例子的曲线图被扩展,以便找出两个信息串“abcd”或“abce”中的一个或多个事件。因此,添加两个附加节点,节点4和节点5,一个节点用于每个信息串的第四个字符(例如,节点4用于“d”而节点5用于“e”)。节点4和节点5与节点3连接,如图所示,因为对于两个信息串最初三个字符是相同的。优选的是,在一次“通过”输入信息串的时候,识别任一信息串中的全部事件。 
诸如“xwabcd454abceabcdsfk”之类可仿效的输入信息串跑过DFA,从而产生作为结果的三个“显著的”转变。显著的转变发生在位于输入信息串里面的信息串片段结束的时候(例如,在每个出现“d”或“e”的位置)。因此,三个显著的转变表明发现三个信息串。第一个和最后一个标记表示从节点3到节点4的转变,指出在输入信息串里面信息串“abcd”的出现和位置(即,DTE byte=5,前一个=3,下一个=4和DTE Byte=17,前一个=3,下一个=4)。中央的显著节点表示从节点3到节点5的转变,指出信息串“abce”出现在输入信息串之内(即,DTE byte=13,前一个=3,下一个=5)。 
其它的比较复杂的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曲线图。打包数据通常储存在主存储器130、108中;然而,DFA曲线图储存在低延时存储器118中。在运行时,DFA单元400继续地从指令队列415中读取指令,安排把每条读取的指令给可用的DFA线程引擎405之一的时间表。响应收到的DFA指令,DFA线程引擎405访问主存储器130、108中的数据,如有必要,而且使用从主存储器130,108取回的数据把访问请求指向低延时存储器118。低延时存储器请求储存在一个队列(一个与低延时存储器中每个存储体有关的队列)中。LLM控制器160实现排队的低延时存储器访问请求。通过提供同一的和等效的DFA线程引擎405,任何指令都可以被安排给多个DFA线程引擎405中的任何一个。任何可用的DFA线程引擎405都能接收来自指令队列的下一条排队指令。 
响应接受排队指令之一,DFA线程引擎405同时完成: 
a.经由I/O总线142从主存储器130,108读取打包输入数据(即,输入字节),被读取的字节被用于在DFA曲线图的状态之间的转变; 
b.打包数据的每个字节发布一条低延时存储器装入指令以便遍历到适合该字节的下一个DFA曲线图状态;以及 
c.经由I/O总线142把中间的和最后的结果写入主存储器130、108。 
作为替代或补充,核心处理器120能直接使用LLM总线158访问低延时存储器118。举例来说,为了最初把曲线图存进存储器118,核心处理器120能访问该低延时存储器118。 
在一些实施方案中,低延时存储器118是在核心处理器120外部提供的。举例来说,低延时存储器118可能是在一个或多个与核心处理器120互连的物理器件(例如,组件或芯片)中提供的。不管它们的实际配置,分开的存储器器件118优选位于核心处理器附近(例如,一起配置在同一主板上)。 
低延时存储器118的可仿效实施方案是在图6中举例说明的。存储器118由两个物理存储器器件430a、430b(通常用430表示)组成。每个存储器器件430包括许多存储体。如图所示,器件430每个都包括八个存储体432。这些存储体432是可区分的,存储器存入以致LLM控制器160能有选择地把数据写进多个存储体432中的每个存储体和从多个存储体432中的每个存储体读出数据。每个存储器器件430包括各自的与DFA单元400相应的一个LLM接口425互连的接口530a、530b。其它的实施方案可以包括比两个多或少的存储器器件430。作为替代或补充,每个存储器器件430能被配置成有比举例说明的实施方案的八个 多或少的存储体432。作为替代或补充,每个存储器器件430都能使用不止一个LLM接口530与DFA单元400耦合。 
DFA单元400的每个LLM接口425与低延时存储器118的相应的接口530耦合。接口425、530包括通常安排到不同的组中的多条互连导线。举例来说,一些导线用来选择一个特定的存储体432(例如,三条导线足以选择八个存储体之中的任何一个:2^3=8)。其它的互连导线能用来选择或注明特定的存储器地址(例如,20条导线有能力选择多达大约512K存储器地址而21条导线有能力选择多达大约1024K存储器地址)。此外,另一些导线能用来提供在低延时存储器和DFA单元400之间转移的数据(例如,32条导线有能力每次转移多达32位的数据)。另外一些导线能作为计时信息(例如,提供时钟信号)和/或指令确认(例如,从许多指令之一中选择,例如,读指令对写指令)。 
LLM控制器160(图4)包括多个低延时存储器(LLM)队列,一个队列与每个低延时存储体有关。每个LLM队列都有各自指出请求储存在相应的队列中的低水平存储器访问的数目的队列状态指示器。DFA单元400还包括一个温度计单元和一个或多个配置寄存器。因此,每个LLM队列能用来访问储存在存储体之一中的DFA曲线图。在说明性的例子中,LLM控制器160包括十六个LLM队列,一个队列用于十六个存储体432中的每一个。 
指令单元410可以包括用来储存指示软件先前已经写进主存储器130、108的DFA指令先进先出(FIFO)缓冲区的未处理的DFA指令的累积数的数值的门铃寄存器420。其它的配置寄存器可以是为识别与访问和使用低延时存储器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队列中的排队入口。 
温度计单元能用来识别许多可用的LLM队列当中哪一个有最少的排队入口。为了完成这个任务,温度计单元首先根据哪些存储体储存被请求的DFA曲线图的复制品确定哪个LLM排队检查。接下来,温度计单元比较在多个LLM队列之中的每个队列中排队的入口数目。然后,温度计单元比较在每个可用的LLM队列当中排队的入口数目,确定哪一个LLM队列中排队的入口数最少。然后,温度计单元把排队的入口数目最少的LLM队列的指示提供给LLM控制器160。LLM控制器160使用温度计单元已识别的排队入口数目最少的LLM队列依次处理那些排队入口,例如,存储器访问请求。 
在队列中储存的指令数目能使用队列状态指示器确定。举例来说,该队列状态指示器可能只是指向在各自的队列内下一个可用的指令位置的指针。知道该队列的终点,简单的算术指针就能用来计算排队的指令数目。 
作为替代或补充,队列状态指示器可以储存指示排队指令数目的计数器数值。因此,当一条指令被写入一个队列的时候,该队列状态指示器的计数器数值就被加1。同样地,当一条指令从该队列中读出的时候,该队列状态指示器的计数器数值就被减1。在一些实施方案中,当不止一个队列有相同的最少的排队指令数 目的时候,可以使用一种算法来识别该使用哪个队列。举例来说,选择有最高的或最低的参考标志的队列。作为替代,可以从可用的队列编号中随机地选择队列。 
在可仿效的实施方案中,DFA单元400的LLM控制器160能控制在两个LLM接口435a、435b之中的每个接口上的多达八个存储体432。表1指出使用八个存储体的存储器器件430的个别36位LLM参考的主要性能特性。该表还指出使用哪个接口和使用存储器器件430内的哪个存储体432。在接口栏中的入口指出所用的18位接口的数目。 
表1.个别36位LLM参考的性能特性 
  接口   复制   偏移量<3:2>   使用接口   使用存储体
  2   无   xx  =偏移量<2>  =偏移量<5:3>
  2   2x   xx  0+1  =偏移量<4:2>
  2   4x   00  0+1  0+1
  2   4x   01  0+1  2+3
  2   4x   10  0+1  4+5
  2   4x   11  0+1  6+7
  2   8x   x0  0+1  0+1+2+3
  2   8x   x1  0+1  4+5+6+7
  1   无   xx  0/1  =偏移量<4:2>
  1   2x   00  0/1  0+1
  1   2x   01  0/1  2+3
  1   2x   10  0/1  4+5
  1   2x   11  0/1  6+7
  1   4x   x0  0/1  0+1+2+3
  1   4x   x1  0/1  4+5+6+7
  1   8x   xx  0/1  0+1+2+3+4 +5+6+7
在有两个LLM接口425的可仿效的配置中,在没有选择复制的情况下,所用的特定接口是用第一数值确定的。举例来说,该第一数值可能是在一条指令内提供的偏移量字段中的一个或多个位。数值所提及的偏移量<2>和存储体是用第二数值(例如, 在同一偏移量字段内其它位的数值(例如,偏移量<5:3>))确定的。因此,偏移量<2>=1的数值使用LLM接口_1 425b。通过第一个LLM接口425b互连的特定的存储体432是用偏移量<5:3>的数值确定的(即,偏移量<5:3>=“011”指的是存储体3)。 
用有两个LLM接口425和复制因子为2(即,2x)的可仿效配置继续。在每个相应的接口上提及的特定的存储体是借助偏移量<4:2>的数值确定的。因此,通过各自的LLM接口425互连的八个可用的存储体432之中的特定的存储体是借助偏移量<4:2>的数值确定的(即,偏移量<4:2>=“111“指的是在两个存储器器件430之中的每个器件上的存储体8)。 
在复制因子为四(即,4x)的情况下,使用两个接口,一对可选择的存储体435被用在两个存储器器件430之中的每个器件上。因此,偏移量<3:2>的数值确定使用哪个存储体425,如同在表1中识别的那样。同样,在复制因子为八(即,8x)的情况下,再一次使用两个接口,可选择的一组四个存储体425被用在表1指出的两个存储器器件430之中的每个器件上。 
图7展示储存在低延时存储器118中的可仿效的DFA数据结构500(即,曲线图)。如上所述,DFA曲线图500能被指针引用到它的第一节点(即,节点0)而且被DFA线程引擎405遍历。通常,曲线图500由N个不同的节点505组成。曲线图500中的每个节点505包括邻接节点指针510的阵列,其中一个邻接节点指针510是为每个独特的输入字节数值准备的。因此,对于有8位字母的DFA曲线图500,有28=256个邻接节点指针510。每个邻接节点指针510包含一个直接指定适合该输入字节的下一个节点/状态的邻接节点标识符(ID)。 
在一些实施方案中,DFA单元400支持18位的邻接节点指针格式515或36位的邻接节点指针格式530。采用18位指针515,每个节点505需要18*256位,或大约512字节的低延时存储器118的储存量量。采用36位指针530,每个节点505需要36*256位,或大约1千字节的低延时存储器118的储存量。任何储存数据的复制都会适当地增加由此产生的总储存量需求。 
采用18位指针515,每个邻接节点指针510包括邻接节点标识字段520,例如17位的邻接节点ID 0。还提供对应的校验位525。在使用偶校验的可仿效实施方案中,校验位是作为所有17位的邻接节点标识符520的“异(XOR)”确定的。因此36位字能储存两个18位指针520、522,每个指针分别有各自的校验位525、527。 
采用36位指针530,每个邻接节点指针510包括一个20位的邻接节点标识符字段535,一个两位的类型数值字段545、一个七位的纠错码(ECC)字段550和七个禁用位540。优选的是,禁用位被设定为零。DFA线程引擎405使用36位指针530中的ECC码550自动地修复单一的比特误差和探测双重的比特误差。类型数值545指出邻接节点类型并且,举例来说,能保存下列数值: 
0=常态 
1=显著的 
2=终端 
为了使用DFA线程引擎405,系统软件首先把DFA曲线图500预先装入低延时存储器118,例如,图7所示的。系统软件还 把有指针的DFA单元400提供给曲线图的出发点、起始节点ID和特定的输入字节。伪码一览表是在表2中提供的,描述由可仿效DFA线程引擎405在处理每个字节的过程期间完成的功能。 
表2.DFA线程引擎处理 
//ptr_size is 2for1 8b,4for 36-bit 
DTE_Byte(graph_ptr,node_id,byte,ptr_size,IWORD3[TSize], 
IWORD3[Msize]){ 
  enum{NORMAL,PERR,TERM,MARKED}condition=NORMAL; 
  node_ptr=graph_ptr+node_id*256*ptr_size 
  next_node_ptr_ptr=node_ptr+((byte*ptr_size)>>2)*4 
  next_node_ptr=LLM_LOAD(next_node_ptr_ptr) 
  if(ptr_size=2){//18-bit pointer 
      next_node_ptr=next_node_ptr>>(byte<0>*18) 
      next_node_id=next_node_ptr<16:0> 
      if(parity_error) 
      condition=PERR 
      else if(next_node_id>=(128*1024-IWORD3[TSize]*256)) 
              condition=TERM 
      else if(next_node_id<IWORD3[Msize]) 
              condition=MARKED 
  } 
  else{                   //36-bit pointer 
      next_node_ptr=SECDED(next_node_ptr) 
      next_node_id=next_node_ptr<19:0> 
      if(double-bit ECC error) 
      condition=PERR 
      else if(next_node_ptr<28:27>=2) 
              condition=TERM 
      else if(next_node_ptr<28:27>=1) 
              condition=MARKED 
      } 
      return(condition,next_node_id); 
  } 
在一些实施方案中,DFA线程引擎405能支持特定的节点指针条件。举例来说,DFA线程引擎405能支持表3确认的多达三种特定的节点指针条件。 
表3.特定的节点指针情况以描述为条件 
  条件   说明
  PERR   指出邻接节点指针510遇到错误的错误条件。DFA  线程引擎405产生指出低延时存储器出错位置的结  果字。DFA线程引擎405结束曲线图500的遍历。
  TERM   指出下一个节点505是终点节点并进一步指出曲线  图500的遍历应该停止的终止条件。DFA线程引擎  405产生指出遍历到终点节点的字节、前一个节点I  D和下一个节点ID的结果字。DFA线程引擎405结  束曲线图500的遍历。
  MARKED   指出瞬间转变对于后面的核心软件分析应该显著的  显著条件。DFA线程引擎405产生指出遍历到显著  的节点的字节、前一个节点ID和下一个节点ID的  结果字。DFA线程引擎405继续曲线图500的遍历。
在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图解式地举例说明可能的17位节点ID 690以及识别它们在18位模式中如何分类。下面更详细地描述的DFA指令包含规定终点节点和显著节点的数目的参数(例如,表2中的参数IWORD3[TSize]规定终点节点的数目而表2中的参数IWORD3[Msize]规定显著节点的数目)。终点节点ID的数目,IWORD3[TSize],是最大的数目,不需要靠低延时存储器118的实际储存量支持。只有正常节点和显著节点靠低延时存储器实际储存量支持。 
因为DFA线程引擎405遍历储存在低延时存储器118中的曲线图500,所以当异常条件出现的时候,它们产生结果字。邻接节点指针(例如,MARKED、TERM或PERR)代表这样的异常条件。两个附加的异常条件包括:输入数据完成(DATA_GONE)和结果空间耗尽(FULL)。虽然曲线图500对输入字节的遍历可能导致多种异常条件,但是单一的输入字节最多能产生一个结果字(RWORD1+)。举例来说,最后输入的字节将遇到DATA_GONE条件并因此将产生一个结果字“RWORD1+”。最后输入的字节也可能遇到一个显著的邻接节点,但是不产生第二个RWORD1+结果。曲线图的遍历500在(按优先级排列的)PERR、TERM、DATA_GONE或FULL异常条件发生的时候停止,而且DFA线程引擎405报告优先级最高的条件。 
每个DFA指令都能规定直接模式或收集模式是否应该用来构造将用DFA线程引擎405处理的数据。在任一情况下,DFA单元400都从主存储器130、108读取字节。 
图8描绘储存在主存储器130、108中的DFA指令队列600的可仿效结构。DFA指令队列600包括一个或多个DFA指令61 0a-610e(通常610)。DFA指令队列600是通过软件分配用来储存DFA指令的组块或缓冲区605配置的。在引导时间,通过写入首尾指针建立一个队列。在接收信息包时,分配正在进行。DFA单元400在指令已经用DFA线程引擎405处理之后释放组块605。DFA单元400包括包含尾部(储存在DFA指令队列中的最后一条DFA指令600)的地址的尾部指针620。 
指令队列600是一个“组块”或缓冲区605a、605b、605c(通常605)的链接表。对于有一个以上组块605的DFA指令队列600,不同的组块605是用邻接组块缓冲区指针615a、615b(通常615)链接的。对于列举的DFA指令队列600,第一组块605a包括一个指向储存在第二组块605b中的第一DFA指令610b的邻接组块缓冲指针615。第二组块605b依次包括许多后面有指向第三组块605c的第一DFA指令61Oe的邻接组块缓冲指针615b的DFA指令610。第三组块605c是最后一个,所以不需要邻接组块缓冲指针615。如同举例说明的那样,软件首部指针625指向直接接在最后一个储存指令61Oe后面的邻接空缓冲区位置。 
在操作时,DFA单元400从DFA指令队列600(从尾部开始)读字,并且在它到达组块605a的最后一条指令610a的时候使邻接组块缓冲指针615a遍历下一个组块605b。当DFA单元400以这种方式“跃过”组块605的时候,它把较早的组块/缓冲区605a释放到硬件管理池。 
储存在配置寄存器450中的配置数值能用来指出将用于缓冲DFA指令的组块605的大小。图8展示用于三条DFA指令610的组块大小的例子——最小的法定值。通常,DFA指令610是固定尺寸的(例如,32字节)。在组块605中直接跟在DFA指令610后面的64位字是一个邻接组块缓冲指针615。这个例子说明在指令队列600中的五条DFA指令610。指令610或命令被连续地 编号,从零到四,较小的编号代表较陈旧的(即,较早储存的)DFA指令610,最低的号码储存在队列的尾部。依照FIFO配置,在DFA线程引擎405上首先从较陈旧的指令开始。优选的是,每条DFA指令610都完整地驻留在一个组块之内,不横跨组块边界。 
DFA单元400维持尾部指针620指向在队列600的尾部的DFA指令610a的地址。软件(例如,系统软件)维持首部指针630指向在该队列头部的最新近储存的DFA指令61Oe。为了把信息包插进队列600,软件必须首先把DFA指令610写进队列600,如果必要的话还要分配组块605。门铃寄存器420(图4)储存在队列中储存的DFA指令编号的计数。 
首部指针630和尾部指针806之间的距离是两者的DFA指令队列600的大小和未处理的门铃计数。DFA指令队列600的大小只受可用的存储器和用于DFA指令队列600的门铃计数器420的位数限制。举例来说,在有20位门铃计数器的实施方案中,该队列被局限于220个字。 
注意:一旦门铃计数指出组块605中最后一条DFA指令610包含有效的DFA指令610,DFA单元400就可以读邻接组块缓冲指针615。这意味着一旦软件把最后一条DFA指令610a写进组块605a,该软件就必须分配邻接组块缓冲区605并且把组块缓冲指针615设置在指向它的前一个组块605中。 
门铃写有DFA指令间隔尺寸而且软件能用许多DFA指令610“按门铃”。软件能对每条个别的DFA指令610发布门铃写,或能把多条DFA指令610累积到门铃写之中。唯一的需求是在队列600中有效的DFA指令610的数目必须至少与门铃计数一样大,而且散布在DFA指令610当中的邻接组块缓冲指针615 也必须适当地设立。在系统启动时,或在引导时间,系统软件用对已建立的用来储存这个数值的配置寄存器450的写入配置有原始的邻接组块缓冲指针615(即,首尾指针620)的DFA指令队列600。 
图9展示可仿效的邻接组块缓冲指针格式630。主要组成部分是把指示有效字节位置的数值储存在主存储器130、108中的地址(Addr)字段635。虽然Addr字段635指的是字节地址,但是它优选自然地排列在128字节高速缓冲储存块的边界上。因此,它最不重要的7位将是零。 
每条DFA指令610有DFA单元400需要启动DFA线程引擎405、读输入数据、遍历低延时存储器118中的曲线图500和写入结果的信息。如图10的可仿效DFA指令格式所示,每条DFA指令610包括在主存储器130、108里面的四个独立的字(即,代表32个字节的四个64位字)655、660、665、670。指令610为按时间表处理该指令的DFA线程引擎405规定输入字节位置和结果位置。当DFA指令队列600有有效的DFA指令610的时候,DFA单元400从主存储器130、108读出DFA指令610和输入数据,并且在它产生结果的时候写入结果。DFA单元400也能在结束之后非必选地提交工作队列入口,所以,DFA指令610可以包括一个用于工作队列指针的字段。 
举例来说,第一DFA指令字655包括用其第一节点的存储器位置识别DFA曲线图的基地址。第一字655还提供补充信息,例如,储存预先选定的复制品的复制字段、指示所用的寻址类型的类型值和标识处理将从曲线图的哪个节点开始的起始节点ID656。第二DFA指令字660包括识别待用DFA405处理字节数目的长度字段661和储存待处理字节的地址基准的地址字段662。第三DFA指令字665包括识别任何结果应该被写入哪个地址(例 如,主存储器130、108中的地址)的结果地址字段666以及储存指示容许结果的最大数目的数值的最大结果字段667。更进一步,第四DFA指令字670可能包括一个或多个涉及工作队列处理的字段。 
图12展示用来构造待用DFA线程引擎405处理的数据的被称为直接模式的用法的例子。DFA指令610使用在DFA指令610的地址字段662中提供的存储器地址直接指定起始位置并且使用长度字段661直接指定待处理的字节数目。处理对应的DFA指令610的DFA线程引擎405从主存储器130、108读出邻近字节705的标识号码,从该标识地址开始依次处理每个字节。 
图13展示被称为收集模式的替代模式的可仿效的用法。使用收集模式,待用DFA线程引擎处理405的数据(即,输入字节)不需要邻近地储存在主存储器130、108里面。然而,输入字节可以邻近地储存在主存储器130、108的两个或多个分开的位置。在收集模式中,DFA指令610首先使用收集模式确认字段663(图10)确认它是收集模式指令。在收集模式中,DFA指令610的地址字段662指定第一收集指针的起始位置和也储存在主存储器130、108中的DFA收集指针目录755的大小。DFA收集指针目录755的每个入口规定给DFA线程引擎405分别处理的两个或多个分开的存储器位置之一的起始位置和大小(即,字节数)。给DFA线程引擎405的总输入字节流是借助在收集目录755中确认的每个入口提到的储存字节的拼接获得的。因此,在图13的例子中,输入字节流是第一邻近的储藏片段、(即,DTE Bytes_0)760a、第二邻近的储藏片段(即,DTE Bytes_1)760b和第三邻近的储藏片段(即,DTE Bytes_2)760c的拼接,每个片段760与其它片段760不相邻。处理对应的DFA指令610的DFA线程引擎405读读出收集目录755的第一入口,将它指向第一片段760。一 旦完成,DFA线程引擎405读出DFA收集目录755的第二入口,将它指向第二片段760c,依此类推直到所有的输入字节都被读出。 
图14举例说明代表DFA收集指针目录755的每个入口的可仿效的64位DFA收集指针格式800。64位收集指针800包含储存指示储存在各自的邻近片段760里面的输入字节数目的数值的长度字段810。还提供把地址往各自的邻近片段760的第一字节里储存的地址字段805。一旦相应的邻近存储器片段760中的最后一个字节被处理,就将下一个DFA收集指针从该目录中读出。 
DFA收集指针755本身应该是在64位边界上自然对准的。在主存储器130、108里面被DFA收集指针755指向的字节不必是自然对准的;它们可能有任何随意的字节排列。在收集模式中,输入字节的总数是每个DFA收集指针755中相应的长度字段810的总和。 
图15展示储存DFA线程引擎405响应DFA指令610所产生的结果的可仿效的DFA结果格式850。DFA结果格式850适应大小改变的结果。举例来说,DFA结果850包括第一结果字(即,“RWORD_0)”860)和一个或多个后续结果字(即,“RWORD_1+”865),在需要适应结果时提供后续字865。为了适应遍历不同数目的显著节点505的DFA指令610,该结构在长度方面是可变的,但是结果长度可能受DFA指令字段提供的上界限制(例如,在可仿效的实施方案中,上界是在IWORD2[最大结果]中提供的)。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,但是只有最后一次写能设定结果字写成位861。即,结果字写成位861将不被DFA单元400设定,直到它已经写入该结果中所有的其它字为止。通过在它把DFA指令610提交给DFA单元400之前首先把结果字写成位861写为零,系统软件能通过轮询结果字写成位861确定DFA单元400何时已经完成DFA指令610。当结果字写成位861被设定的时候,整个结果呈现。 
图16举例说明低延时存储器装入/储存指令870的可仿效格式。这些指令870可能是响应核心请求或DFA线程引擎请求发布分。装入/储存指令870是响应处理器核心120产生的DFA指令由LLM控制器160发布的,为的是定低延时存储器118读数起点位置。这些低延时存储器装入/储存指令870不同于在典型的通用指令组中提供的普通装入储存指令,因为它们发起直接在核心处理器120和低延时存储器118之间的装入/储存(图3)。这种访问类型的径直性不同于在核心处理器120的主寄存器文卷328(图3)和包括Leverl-1数据高速缓冲存储器154、Level-2高速缓冲存储器130和DRAM 108(图4)的高速缓冲相干存储器系统之间根据情况不是装入数据就是储存数据的装入/储存指令。在可仿效的实施方案中,这些装入/储存指令870可能不是64位指令就是36位指令。通过使用低延时存储器总线158允许处理器核心120有对低延时存储器118的直接访问,性能有所提高。这些低延时存储器指令允许比以别的方式通过高速缓冲相干存储器系统154、130、108可能实现的速度更快地在低延时存储器118中存/取数据。通过以这种方式访问低延时存储器118,不需要高速缓存的应用(例如规则表达式的匹配)的性能可以得到显著改善。可仿效的低延时存储器装入/储存指令包括:“DMTC2”指令(引起 向协处理器2的双重移动)和“DMFC2”指令(引起来自协处理器2的双重移动)。 
如图16所示,低延时存储器装入/储存指令870的可仿效格式包括:指令类型字段875、指令标识字段880、主寄存器标识字段885和“IMPL”字段890。指令类型字段875储存指示指令类型的数值。举例来说,储存在指令类型字段875中的数值能指出该指令是一个协处理器指令,与通用指令相反。指令标识字段880储存指示特定指令类型(例如,“移到”或“移出”)的数值。举例来说,一移到指令指出数据正在从低延时存储器118向核心处理器的保持寄存器330a、330b之一传输(图3)。作为替代,移出指令指出数据正在从保持寄存器330a、330b之一向主寄存器文卷328中的寄存器传输(图3)。因此,在这个实施方案中,每个移到/移出指令都允许数据被一次一个字(例如,对于使用36位字大小的存储器每次36位)地传输。主寄存器标识字段885储存指示在处理器核心的主寄存器文卷328内将被访问的特定寄存器的数值。“IMPL”字段890,连同操作码,储存指示协处理器传输指令的类型和特定的保持寄存器330a、330b的数值。 
为了把保持寄存器330的内容装入主寄存器文卷328(即,DMF)中的寄存器,主寄存器标识字段885的内容识别在寄存器文卷328中用来储存在保持寄存器330中储存的数据的寄存器。举例来说: 
GPR[rt]=LLM_DATA0<63:0>         (1) 
在这个例子中,LMM_DATA0代表特定的保持寄存器330a;而GPR指的是主寄存器文卷328中的通用寄存器。 
对写(即,移到)指令,主寄存器标识字段885识别在寄存器文卷328内储存低延时存储器118中的位置的地址的寄存器。举例来说: 
LLM_DATA0<63:0>=llmemory[rt]          (2) 
在这个例子中,LLM_DATA0是保持寄存器330a;而llmemory指的是低延时存储器118。 
作为进一步的例子,下列低延时存储器装入指令(DMTC2)能用来将低延时存储器位置指令的内容装入保持寄存器330a,例如: 
DMTC2,$5,0x0400                        (3) 
在这个例子中:(i)指令类型字段875包含表示该指令是将把来自低延时存储器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”;以及识别特定的保持寄存器330的IMPL数值“0x0402”890。(重申一次,这个数值是常数而且在另一个实施方案中可能是不同的数值)。 
上述指令格式仅仅是例子,熟悉这项技术的人应该理解该指令格式可能是允许非寻常装入/储存指令的任何格式。 
图17举例说明用来定低延时存储器DRAM字读数起点位置的可仿效的低延时存储器地址格式900。举例来说,低延时存储器地址格式900能用于表2提到的“graph_ptr”。低延时存储器地址格式900至少包括一个偏移量字段905和一个复制字段910。偏移量字段905储存指示在低延时存储器中的地址的数值。复制字段910限定指示复制因子的复制数值。在可仿效的实施方案中,低延时存储器地址格式900包括64位(O到63位)。偏移量字段905可以是用0到29位限定的而复制字段910可以用32到34位限定的。地址格式900中剩余的字段可以被保留用于其它目的。 
作为例子,复制数值为零(即,复制字段=00)表明没有复制。没有复制意味着每个字的单一事件被储存在低延时存储器118中。这也是复制因子为1的反映(即,那个字在低延时存储器118里面出现一次)。继续用这个例子,复制数值为一(即,复制字段=01)表明有复制而且在低延时存储器118里面的每个字将伴有那个字的一个副本。这也是复制因子为2的反映(即,那个字在低延时存储器118里面出现两次)。同样地,复制数值为2和3(即,复制字段分别=10和11)表明有复制而且在低延时存储器118里 面的每个字将分别伴有那个字的三个和七个副本。这些数值也是复制因子为4和8的反映(即,那个字在存储器118里面分别出现四次和八次)。 
偏移量字段905中储存的数值通常是指向存储器字的“字节”地址。举例来说,Offset<29:2>是识别36位存储器字的字节地址。符号Offset<29:2>表示包含在存储器地址900的偏移量字段905的2到29位里面的那些位的数值。在一些实施方案中,低延时存储器控制器160的最小间隔尺寸是36位字。因此,连续的36位字将相差四个字节。这转化为在偏移量字段905中差额为四(即,在字节地址中差额为4表明4个字节的差额被储存在存储器中)。优选的是,存储器地址基准是“自然对准的”。自然对准能通过把偏移量字段905中两个最低位设定为零(即,Offset<1:0>=00)获得。 
当复制数值910被设定为零的时候,偏移量的解释是直截了当的——连续的偏移量数值确定连续的低延时存储器位置的读数起始位置。然而,当复制数值不是零的时候,偏移量的解释是不同的。对于不同的复制数值使用可仿效的存储器地址格式900储存一个字所消耗的低延时存储器位置是在表4中提供的。 
表4.低延时存储器DRAM偏移量位置 
  复制   所消耗的未被复制的(即,Repl=0)偏移量
  0   Offset<29:0>
  1   (Offset<28:0>*2)+{0,4}
  2   (Offset<27:0>*4)+{0,4,8,12}
  3   (Offset<26:0>*8)+{0,4,8,12,16,20,24,28}
[0181] 地址结构保证一个字的复制副本被储存在邻近的存储器位置。举例来说,当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。由此产生的偏移量地址相差数值4,这意味着它们涉及毗连的4字节存储器字。 
继续这个4字节例子,下一个Offset<29:0>数值将是12+4=16。此外,对于复制数值为2的情况,由此产生的偏移量依照表4将是64、68、72、76。另一方面、这些复制是邻近的,而且它们与早先的偏移量数值(即,12)的复制也是邻近的。 
因此,即使当那些字被复制的时候,使用这种寻址结构,连续的36位字也总是在偏移量字段905中相差四。这能使低延时存储器的DRAM寻址对于软件变得非常相似,与复制因子无关。这假定那些字不与不同的复制数值同时使用。 
在一些实施方案中,每个核心处理器120都使用特定的指令(例如,前面参照图16描述的DMTC2和DMFC2指令)确定低延时存储器118的读数起始位置。这些指令启动64位或36位的装 入/储存。此外,为了保证适当的操作,那些地址应该自然地对准。因此,对于36位装入/储存,偏移量字段905(即,偏移量<1:0>)的最初两个最低位应该是零。类似地,对于64位装入/储存,偏移量字段905(即,Offset<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位的偶数同位则有奇偶校验误差。 
现在参照图18B,64位低延时存储器DRAM装载/储存操作定两个连续的36位储存的字965、970的读数起始位置。每一个储存的字965、685包括各自的数据字段。举例来说,第一个36位储存的字965包括一个数据字段975(即,Data<35:0>)。第二个36位储存的字970也包括一个数据字段980(即,Data<36:36>)。然而,在一些实施方案中,第二个储存字970的一些最高位能用于检错和/或纠错。 
举例来说,最高位能被称为ECC字段985用于储存8位SECDED ECC码。不同于36位的装入和储存操作,DFA单元400自动产生响应64位储存自动检验和纠正关于64位装入的数据的ECC码。在一些实施方案中,64位字的每个36位字965、970被分开复制。因此,当复制数值不是零的时候,两个储存的字965、970可能不在连续的(未复制的)低延时存储器位置。 
在一些实施方案中,依照每个储存的数据结构确定复制。因此,第一个数据结构可能有复制因子2,而第二个数据结构可能有不同的复制因子4。复制可以由系统软件在系统初始化时确定。因此,系统软件最初用一个或多个数据结构(例如,DFA曲线图)填充低延时存储器118,每个数据结构是根据需要复制的。特定的数据结构是否被复制和相关的复制是什么能依照性能参数确定。举例来说,如果某个特定的数据结构比其它数据结构更频繁地访问,那个数据结构可能在低延时存储器118里面被复制到较高的程度。同样,如果某个特定的数据结构被相对罕见地访问,那么那个数据结构可能在低延时存储器118里面被复制到较低的程度,或许根本不复制。此外,每个储存的数据结构的复制可以由使用者预先确定。 
当某个数据结构被复制的时候,写进那个数据结构的内容将被全部写到复制的数据结构中。作为替代或补充,从某个储存的复制数据结构读取能指向该复制数据结构的任何一个独立储存的版本。因此,如果储存被请求的数据结构的存储体忙于为某访问请求服务,那么DFA线程引擎405依照本发明的原则能将该访问请求送往其它包含被请求数据结构的储存复制数值的存储体之一。 
核心120维持打算稍后使用的储存数据结构的档案。举例来说,系统软件在产生DFA指令的时候访问该储存数据结构的档案。因此,该档案至少包括储存数据结构的存储器位置和与最初储存的那个数据结构相对应的复制作品。在一些实施方案中,系统软件把查询表保存在用来储存包括每个先前储存的数据结构和相关的复制因子的存储器起始位置的目录的主存储器中。这个目录能在最初形成或在低延时存储器118里面编译和储存该数据结构(例如,DFA曲线图)的时候产生。如上所述,DFA指令识别特定的DFA曲线图和任何可用的复制品。 
在说明性的例子中,在核心120上运行的系统软件把一个或多个DFA指令写进位于主存储器130、108中的DFA指令队列。门铃寄存器420被更新,以便维持留在DFA指令队列里面的DFA指令的精确计数。DFA单元400检查门铃寄存器420并且响应观察大于零的门铃计数,从DFA指令队列中读取下一条指令。DFA单元400把读取的指令暂时储存在DFA单元的本地指令队列或缓冲区415中。可用的完全相同的DFA线程引擎405之一读出储存在本地指令缓冲区415中的下一个指令并且开始处理那条指令。 
如同结合图10描述的那样,DFA指令识别可选择的先前储存的DFA曲线图之一的起始地址的存储器读数起始位置。该指 令也识别指出在低延时存储器118里面有多少选定的DFA曲线图的复制可用的相关复制。DFA线程引擎405读取准备用该DFA指令处理的打包数据的第一字节,从主存储器130、108按地址读取的字节也被DFA指令识别。(对于打包输入数据的每个字节,DFA线程引擎405都产生一个低水平存储器读数起始位置)。DFA线程引擎405响应该输入字节向LLM控制器160请求低水平存储器访问,该请求也识别复制编号。 
LLM控制器160通过首先识别所有可用的储存被请求的DFA曲线图的存储体432确定该使用哪个可用的复制。举例来说,LLM控制器160依据先前储存在DFA配置寄存器中的数值确定接口编号。LLM控制器160有了接口编号和来自DFA指令的复制数值和偏移量数值就确定在表1中指出的存储体。 
如果存储器访问指令是储存指令,相关的数据将被储存(即,复制)在所有被识别的存储体中。然而,如果存储器访问请求是装入指令,LLM控制器160确定该使用哪个存储体432。然后,LLM控制器使用温度计逻辑440读与被识别的存储体相关联的队列435的深度。有最低的排队指令编号的存储体432被选定,然后LLM控制器160如同结合图18A和18B描述的那样产生对应的低水平访问请求。 
这份申请涉及2004年9月10日申请的美国专利临时申请第60/609,211号、以“Direct Access to Low-latency Memory(直接访问低延时存储器)”为题在2004年10月28日申请的美国专利申请第11/024,002号、以“Deterministic Finite Automata(DFA)(确定性有限自动机)”为题在2005年4月8日申请的美国专利临时申请第60/669,672号和以“Deterministic Finite Automata(DFA)Processing(确定性有限自动机处理)”为题也在2005年4月8日 申请的美国专利临时申请第60/669,603号。上述申请的全部教导在此通过引证被并入。 
虽然这项发明已经参照其优选实施方案予以具体的展示和描述,但是熟悉这项技术的人将理解在形式和细节方面各种不同的改变可以在不脱离权利要求书所囊括的发明范围的情况下完成。 

Claims (20)

1.一种用来管理包括为数众多的存储体的低延时存储器的方法,该方法包括:
接受把确定的数据结构复制编号储存在为数众多的存储体中的请求,所述储存请求包括指示选定的复制编号的复制因子;以及
响应该储存请求,把确定的复制编号之中的每一个储存在为数众多的存储体之中相应的存储体中。
2.根据权利要求1的方法,其中所述复制因子是2的幂。
3.根据权利要求1的方法,其中所述数据结构是确定性有限自动机。
4.根据权利要求1的方法,其中所述为数众多的存储体每个都是可以使用为数众多的低延时存储器接口之一访问的,数据结构的至少一些复制品是可以使用不同的低延时接口访问的。
5.根据权利要求1的方法,进一步包括:
接受访问储存数据结构的请求;
响应所述的访问请求,选择为数众多的存储体之中的一个存储体,该选定的存储体储存被请求的数据结构复制品;以及
访问选定的存储体。
6.根据权利要求5的方法,其中所述选择一个存储体的步骤包括:
确定存储数据结构的复制品的众多存储体中每一个存储体的用法;以及
选择为数众多的存储体之一对已确定的用法作出响应。
7.根据权利要求6的方法,其中所述确定用法的步骤包括比较为数众多的队列,每个队列与为数众多的存储体之中的一个相应的存储体有关。
8.根据权利要求1的方法,其中所述低延时存储器选自动态随机存取存储器(DRAM)、缩减延时动态随机存取存储器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随即存取存储器(FCRAM)以及它们的组合。
9.一种低延时存储器管理控制器,包括:
为访问低延时存储器配置的第一存储器接口,所述低延时存储器包括为数众多的存储体;
适合访问主存储器的主存储器接口;
与主存储器接口耦合接受把选定的数据结构复制编号储存在为数众多的存储体之中不止一个存储体中的请求的指令单元;
与所述指令单元耦合的为数众多的线程引擎,每个线程引擎都适合与为数众多的存储体之中的可选择的相应的存储体有关;
与所述指令单元耦合而且接在第一存储器接口和为数众多的线程引擎之间的低延时存储器控制器,该低延时存储器控制器把每个选定数目的数据结构复制品储存在为数众多的存储体之中相应的存储体上。
10.根据权利要求9的装置,其中所述处理器包括多芯处理器。
11.根据权利要求9的装置,其中所述储存可选择的复制编号的请求包括指示选定的复制编号的复制因子。
12.根据权利要求11的装置,其中所述复制因子是2的幂。
13.根据权利要求9的装置,其中所述低延时存储器控制器包括为数众多的输入队列,用于为数众多的存储体之中的每一个的一个输入队列,所述低延时存储器控制器选择为数众多的存储体之中响应某确定数值的存储体。
14.根据权利要求13的装置,其中所述确定数值与被储存数据结构的用法有关。
15.根据权利要求13的装置,其中所述低延时存储器控制器包括确定在为数众多的输入队列之中的不同队列的相对可用性的温度计单元,每个输入队列与为数众多的存储体之中的一个相应的存储体有关。
16.根据权利要求9的装置,其中所述数据结构包含确定性有限自动机。
17.根据权利要求9的装置,其中所述低延时存储器选自动态随机存取存储器(DRAM)、缩减延时动态随机存取存储器(RLDRAM)、同步随机存取存储器(SRAM)、快速循环随机存取存储器(FCRAM)以及它们的组合。
18.根据权利要求9的装置,其中所述为数众多的存储体之中的一些是可以使用第一低延时存储器接口访问的,而为数众多的存储体之中其它的存储体是可使用第二低延时存储器接口访问的,至少一些数据结构复制品是可以使用第一和第二低延时存储器接口之中的任一接口访问的。
19.根据权利要求9的装置,进一步包括处理器接口,所述低延时存储器管理控制器通过该接口与处理器通信。
20.一种低延时存储器访问控制器,其中包括:
用来接受把确定的数据结构复制编号储存在为数众多的存储体中的请求的装置,所述储存请求包括指示选定的复制编号的复制因子;以及
用来响应所述的储存请求把每个确定的复制编号储存在为数众多的存储体之中相应的存储体中的装置。
CN2005800304519A 2004-09-10 2005-09-09 在低延时存储器中数据结构的选择性复制 Expired - Fee Related CN101128804B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60921104P 2004-09-10 2004-09-10
US60/609,211 2004-09-10
US66965505P 2005-04-08 2005-04-08
US60/669,655 2005-04-08
PCT/US2005/031803 WO2006031551A2 (en) 2004-09-10 2005-09-09 Selective replication of data structure

Publications (2)

Publication Number Publication Date
CN101128804A CN101128804A (zh) 2008-02-20
CN101128804B true CN101128804B (zh) 2012-02-01

Family

ID=38731731

Family Applications (5)

Application Number Title Priority Date Filing Date
CNB2005800346066A Expired - Fee Related CN100533372C (zh) 2004-09-10 2005-09-01 用于多核处理器的存储指令排序
CN2005800346009A Active CN101069170B (zh) 2004-09-10 2005-09-01 一种网络服务处理器以及处理数据包的装置和方法
CN2005800334834A Expired - Fee Related CN101036117B (zh) 2004-09-10 2005-09-01 低延时存储器的直接存取
CN200580034214XA Expired - Fee Related CN101053234B (zh) 2004-09-10 2005-09-08 用于越过具有进入的分组数据的dfa图像的方法和装置
CN2005800304519A Expired - Fee Related CN101128804B (zh) 2004-09-10 2005-09-09 在低延时存储器中数据结构的选择性复制

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CNB2005800346066A Expired - Fee Related CN100533372C (zh) 2004-09-10 2005-09-01 用于多核处理器的存储指令排序
CN2005800346009A Active CN101069170B (zh) 2004-09-10 2005-09-01 一种网络服务处理器以及处理数据包的装置和方法
CN2005800334834A Expired - Fee Related CN101036117B (zh) 2004-09-10 2005-09-01 低延时存储器的直接存取
CN200580034214XA Expired - Fee Related CN101053234B (zh) 2004-09-10 2005-09-08 用于越过具有进入的分组数据的dfa图像的方法和装置

Country Status (2)

Country Link
US (4) US7941585B2 (zh)
CN (5) CN100533372C (zh)

Families Citing this family (209)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
WO2006031551A2 (en) * 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7594081B2 (en) * 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US8316431B2 (en) * 2004-10-12 2012-11-20 Canon Kabushiki Kaisha Concurrent IPsec processing system and method
US7650542B2 (en) * 2004-12-16 2010-01-19 Broadcom Corporation Method and system of using a single EJTAG interface for multiple tap controllers
US7549026B2 (en) * 2005-03-30 2009-06-16 Intel Corporation Method and apparatus to provide dynamic hardware signal allocation in a processor
US8881114B2 (en) * 2005-05-16 2014-11-04 Texas Instruments Incorporated Stored program writing stall information when a processor stalls waiting for another processor
US7840000B1 (en) * 2005-07-25 2010-11-23 Rockwell Collins, Inc. High performance programmable cryptography system
US20070067567A1 (en) * 2005-09-19 2007-03-22 Via Technologies, Inc. Merging entries in processor caches
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
US8799687B2 (en) 2005-12-30 2014-08-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including optimizing C-state selection under variable wakeup rates
US7725791B2 (en) 2006-10-20 2010-05-25 Texas Instruments Incorporated Single lead alternating TDI/TMS DDR JTAG input
US20080184150A1 (en) * 2007-01-31 2008-07-31 Marc Minato Electronic circuit design analysis tool for multi-processor environments
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US7813277B2 (en) * 2007-06-29 2010-10-12 Packeteer, Inc. Lockless bandwidth management for multiprocessor networking devices
US8059532B2 (en) * 2007-06-21 2011-11-15 Packeteer, Inc. Data and control plane architecture including server-side triggered flow policy mechanism
US9419867B2 (en) * 2007-03-30 2016-08-16 Blue Coat Systems, Inc. Data and control plane architecture for network application traffic management device
US8279885B2 (en) * 2007-09-25 2012-10-02 Packeteer, Inc. Lockless processing of command operations in multiprocessor systems
EP2176773B1 (en) * 2007-07-09 2015-09-02 Hewlett-Packard Development Company, L. P. Data packet processing method for a multi core processor
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8079084B1 (en) 2007-08-10 2011-12-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US8286246B2 (en) * 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US7836283B2 (en) * 2007-08-31 2010-11-16 Freescale Semiconductor, Inc. Data acquisition messaging using special purpose registers
US20090106501A1 (en) * 2007-10-17 2009-04-23 Broadcom Corporation Data cache management mechanism for packet forwarding
US20090150696A1 (en) * 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US8024590B2 (en) * 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
CN101272334B (zh) * 2008-03-19 2010-11-10 杭州华三通信技术有限公司 使用多核CPU处理QoS业务的方法、装置和设备
CN101282303B (zh) * 2008-05-19 2010-09-22 杭州华三通信技术有限公司 业务报文处理方法和装置
JP5202130B2 (ja) * 2008-06-24 2013-06-05 株式会社東芝 キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法
CN101299194B (zh) * 2008-06-26 2010-04-07 上海交通大学 基于可配置处理器的异构多核系统线程级动态调度方法
US8041899B2 (en) * 2008-07-29 2011-10-18 Freescale Semiconductor, Inc. System and method for fetching information to a cache module using a write back allocate algorithm
US8572433B2 (en) * 2010-03-10 2013-10-29 Texas Instruments Incorporated JTAG IC with commandable circuit controlling data register control router
US8996812B2 (en) * 2009-06-19 2015-03-31 International Business Machines Corporation Write-back coherency data cache for resolving read/write conflicts
US8407528B2 (en) * 2009-06-30 2013-03-26 Texas Instruments Incorporated Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems
US8595425B2 (en) * 2009-09-25 2013-11-26 Nvidia Corporation Configurable cache for multiple clients
JP5321691B2 (ja) * 2009-11-16 2013-10-23 富士通株式会社 並列計算装置、並列計算方法、および並列計算プログラム
WO2011067408A1 (en) * 2009-12-04 2011-06-09 Napatech A/S An apparatus and a method of receiving and storing data packets controlled by a central controller
US8452835B2 (en) 2009-12-23 2013-05-28 Citrix Systems, Inc. Systems and methods for object rate limiting in multi-core system
US8850404B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Relational modeling for performance analysis of multi-core processors using virtual tasks
US8914672B2 (en) * 2009-12-28 2014-12-16 Intel Corporation General purpose hardware to replace faulty core components that may also provide additional processor functionality
CN102141905B (zh) 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US8112677B2 (en) * 2010-02-26 2012-02-07 UltraSoC Technologies Limited Method of debugging multiple processes
US8601056B2 (en) * 2010-03-09 2013-12-03 Avistar Communications Corporation Scalable high-performance interactive real-time media architectures for virtual desktop environments
CN101840328B (zh) 2010-04-15 2014-05-07 华为技术有限公司 一种数据处理方法及系统以及相关设备
US8683128B2 (en) 2010-05-07 2014-03-25 International Business Machines Corporation Memory bus write prioritization
US8838901B2 (en) 2010-05-07 2014-09-16 International Business Machines Corporation Coordinated writeback of dirty cachelines
CN102279802A (zh) * 2010-06-13 2011-12-14 中兴通讯股份有限公司 提高同步动态随机存储控制器的读操作效率的方法和装置
TW201145016A (en) * 2010-06-15 2011-12-16 Nat Univ Chung Cheng Non-intrusive debugging framework for parallel software based on super multi-core framework
CN102346661A (zh) * 2010-07-30 2012-02-08 国际商业机器公司 一种用于对硬件加速器的请求队列维护状态的方法和系统
US8661227B2 (en) * 2010-09-17 2014-02-25 International Business Machines Corporation Multi-level register file supporting multiple threads
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
CN103270504B (zh) * 2010-12-22 2016-05-25 英特尔公司 调试复杂多核和多插座系统
US9069555B2 (en) 2011-03-21 2015-06-30 Intel Corporation Managing power consumption in a multi-core processor
CN102149207B (zh) * 2011-04-02 2013-06-19 天津大学 提高wlan的tcp短期公平性的接入点调度方法
CN102214132B (zh) * 2011-05-16 2014-07-02 曙光信息产业股份有限公司 一种调试龙芯cpu和南北桥芯片的方法和装置
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US8793515B2 (en) 2011-06-27 2014-07-29 Intel Corporation Increasing power efficiency of turbo mode operation in a processor
US9936209B2 (en) * 2011-08-11 2018-04-03 The Quantum Group, Inc. System and method for slice processing computer-related tasks
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US8914650B2 (en) 2011-09-28 2014-12-16 Intel Corporation Dynamically adjusting power of non-core processor circuitry including buffer circuitry
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US8898244B2 (en) * 2011-10-20 2014-11-25 Allen Miglore System and method for transporting files between networked or connected systems and devices
US8850125B2 (en) 2011-10-25 2014-09-30 Cavium, Inc. System and method to provide non-coherent access to a coherent memory system
US8473658B2 (en) * 2011-10-25 2013-06-25 Cavium, Inc. Input output bridging
US8560757B2 (en) * 2011-10-25 2013-10-15 Cavium, Inc. System and method to reduce memory access latencies using selective replication across multiple memory ports
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US9330002B2 (en) * 2011-10-31 2016-05-03 Cavium, Inc. Multi-core interconnect in a network processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
FR2982683B1 (fr) * 2011-11-10 2014-01-03 Sagem Defense Securite Procede de sequencement sur un processeur multicoeur.
US8972763B2 (en) 2011-12-05 2015-03-03 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state
US9239611B2 (en) 2011-12-05 2016-01-19 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including balancing power among multi-frequency domains of a processor based on efficiency rating scheme
US9052901B2 (en) 2011-12-14 2015-06-09 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including configurable maximum processor current
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
US9098261B2 (en) 2011-12-15 2015-08-04 Intel Corporation User level control of power management policies
CN116414459A (zh) 2011-12-23 2023-07-11 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
WO2013137859A1 (en) 2012-03-13 2013-09-19 Intel Corporation Providing energy efficient turbo operation of a processor
WO2013137860A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically computing an electrical design point (edp) for a multicore processor
US9547027B2 (en) 2012-03-30 2017-01-17 Intel Corporation Dynamically measuring power consumption in a processor
US10185566B2 (en) 2012-04-27 2019-01-22 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US9411770B2 (en) * 2012-07-10 2016-08-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling a plurality of serial peripheral interface (‘SPI’) peripherals using a single chip select
US9063727B2 (en) 2012-08-31 2015-06-23 Intel Corporation Performing cross-domain thermal control in a processor
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9342122B2 (en) 2012-09-17 2016-05-17 Intel Corporation Distributing power to heterogeneous compute elements of a processor
US9423858B2 (en) 2012-09-27 2016-08-23 Intel Corporation Sharing power between domains in a processor package using encoded power consumption information from a second domain to calculate an available power budget for a first domain
US9575543B2 (en) 2012-11-27 2017-02-21 Intel Corporation Providing an inter-arrival access timer in a processor
US9183144B2 (en) 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9405351B2 (en) 2012-12-17 2016-08-02 Intel Corporation Performing frequency coordination in a multiprocessor system
US9292468B2 (en) 2012-12-17 2016-03-22 Intel Corporation Performing frequency coordination in a multiprocessor system based on response timing optimization
US8619800B1 (en) * 2012-12-20 2013-12-31 Unbound Networks Parallel processing using multi-core processor
US9235252B2 (en) 2012-12-21 2016-01-12 Intel Corporation Dynamic balancing of power across a plurality of processor domains according to power policy control bias
US9075556B2 (en) 2012-12-21 2015-07-07 Intel Corporation Controlling configurable peak performance limits of a processor
US9164565B2 (en) 2012-12-28 2015-10-20 Intel Corporation Apparatus and method to manage energy usage of a processor
US9274826B2 (en) * 2012-12-28 2016-03-01 Futurewei Technologies, Inc. Methods for task scheduling through locking and unlocking an ingress queue and a task queue
US9081577B2 (en) 2012-12-28 2015-07-14 Intel Corporation Independent control of processor core retention states
US9606888B1 (en) * 2013-01-04 2017-03-28 Marvell International Ltd. Hierarchical multi-core debugger interface
US9335803B2 (en) 2013-02-15 2016-05-10 Intel Corporation Calculating a dynamically changeable maximum operating voltage value for a processor based on a different polynomial equation using a set of coefficient values and a number of current active cores
US9367114B2 (en) 2013-03-11 2016-06-14 Intel Corporation Controlling operating voltage of a processor
US9395784B2 (en) 2013-04-25 2016-07-19 Intel Corporation Independently controlling frequency of plurality of power domains in a processor system
US9377841B2 (en) 2013-05-08 2016-06-28 Intel Corporation Adaptively limiting a maximum operating frequency in a multicore processor
US9823719B2 (en) 2013-05-31 2017-11-21 Intel Corporation Controlling power delivery to a processor via a bypass
US9348401B2 (en) 2013-06-25 2016-05-24 Intel Corporation Mapping a performance request to an operating frequency in a processor
US9471088B2 (en) 2013-06-25 2016-10-18 Intel Corporation Restricting clock signal delivery in a processor
US9348407B2 (en) 2013-06-27 2016-05-24 Intel Corporation Method and apparatus for atomic frequency and voltage changes
US9377836B2 (en) 2013-07-26 2016-06-28 Intel Corporation Restricting clock signal delivery based on activity in a processor
US9495001B2 (en) 2013-08-21 2016-11-15 Intel Corporation Forcing core low power states in a processor
US9563399B2 (en) 2013-08-30 2017-02-07 Cavium, Inc. Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
US10386900B2 (en) 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
US9405345B2 (en) 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
US9594560B2 (en) 2013-09-27 2017-03-14 Intel Corporation Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain
TWI625622B (zh) 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
US20160299859A1 (en) * 2013-11-22 2016-10-13 Freescale Semiconductor, Inc. Apparatus and method for external access to core resources of a processor, semiconductor systems development tool comprising the apparatus, and computer program product and non-transitory computer-readable storage medium associated with the method
US9494998B2 (en) 2013-12-17 2016-11-15 Intel Corporation Rescheduling workloads to enforce and maintain a duty cycle
US9459689B2 (en) 2013-12-23 2016-10-04 Intel Corporation Dyanamically adapting a voltage of a clock generation circuit
US9811467B2 (en) * 2014-02-03 2017-11-07 Cavium, Inc. Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US9323525B2 (en) 2014-02-26 2016-04-26 Intel Corporation Monitoring vector lane duty cycle for dynamic optimization
US9431105B2 (en) 2014-02-26 2016-08-30 Cavium, Inc. Method and apparatus for memory access management
US9372800B2 (en) 2014-03-07 2016-06-21 Cavium, Inc. Inter-chip interconnect protocol for a multi-chip system
US9529532B2 (en) 2014-03-07 2016-12-27 Cavium, Inc. Method and apparatus for memory allocation in a multi-node system
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US10592459B2 (en) * 2014-03-07 2020-03-17 Cavium, Llc Method and system for ordering I/O access in a multi-node environment
US9665153B2 (en) 2014-03-21 2017-05-30 Intel Corporation Selecting a low power state based on cache flush latency determination
US10108454B2 (en) 2014-03-21 2018-10-23 Intel Corporation Managing dynamic capacitance using code scheduling
US10002326B2 (en) 2014-04-14 2018-06-19 Cavium, Inc. Compilation of finite automata based on memory hierarchy
US10110558B2 (en) 2014-04-14 2018-10-23 Cavium, Inc. Processing of finite automata based on memory hierarchy
US9443553B2 (en) 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US8947817B1 (en) 2014-04-28 2015-02-03 Seagate Technology Llc Storage system with media scratch pad
US9760158B2 (en) 2014-06-06 2017-09-12 Intel Corporation Forcing a processor into a low power state
US10417149B2 (en) 2014-06-06 2019-09-17 Intel Corporation Self-aligning a processor duty cycle with interrupts
US9606602B2 (en) 2014-06-30 2017-03-28 Intel Corporation Method and apparatus to prevent voltage droop in a computer
US9513689B2 (en) 2014-06-30 2016-12-06 Intel Corporation Controlling processor performance scaling based on context
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US9760136B2 (en) 2014-08-15 2017-09-12 Intel Corporation Controlling temperature of a system memory
US9671853B2 (en) 2014-09-12 2017-06-06 Intel Corporation Processor operating by selecting smaller of requested frequency and an energy performance gain (EPG) frequency
US10339023B2 (en) 2014-09-25 2019-07-02 Intel Corporation Cache-aware adaptive thread scheduling and migration
US9977477B2 (en) 2014-09-26 2018-05-22 Intel Corporation Adapting operating parameters of an input/output (IO) interface circuit of a processor
US9684360B2 (en) 2014-10-30 2017-06-20 Intel Corporation Dynamically controlling power management of an on-die memory of a processor
US9703358B2 (en) 2014-11-24 2017-07-11 Intel Corporation Controlling turbo mode frequency operation in a processor
US9710043B2 (en) 2014-11-26 2017-07-18 Intel Corporation Controlling a guaranteed frequency of a processor
US10048744B2 (en) 2014-11-26 2018-08-14 Intel Corporation Apparatus and method for thermal management in a multi-chip package
US20160147280A1 (en) 2014-11-26 2016-05-26 Tessil Thomas Controlling average power limits of a processor
US10877530B2 (en) 2014-12-23 2020-12-29 Intel Corporation Apparatus and method to provide a thermal parameter report for a multi-chip package
JP5917678B1 (ja) 2014-12-26 2016-05-18 株式会社Pfu 情報処理装置、方法およびプログラム
US20160224098A1 (en) 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
US9639134B2 (en) 2015-02-05 2017-05-02 Intel Corporation Method and apparatus to provide telemetry data to a power controller of a processor
US9910481B2 (en) 2015-02-13 2018-03-06 Intel Corporation Performing power management in a multicore processor
US10234930B2 (en) 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US9874922B2 (en) 2015-02-17 2018-01-23 Intel Corporation Performing dynamic power control of platform devices
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US9842082B2 (en) 2015-02-27 2017-12-12 Intel Corporation Dynamically updating logical identifiers of cores of a processor
US9710054B2 (en) 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
US9760160B2 (en) 2015-05-27 2017-09-12 Intel Corporation Controlling performance states of processing engines of a processor
US9710041B2 (en) 2015-07-29 2017-07-18 Intel Corporation Masking a power state of a core of a processor
GB2540948B (en) * 2015-07-31 2021-09-15 Advanced Risc Mach Ltd Apparatus with reduced hardware register set
CN105072050A (zh) * 2015-08-26 2015-11-18 联想(北京)有限公司 一种数据传输方法及装置
US10001822B2 (en) 2015-09-22 2018-06-19 Intel Corporation Integrating a power arbiter in a processor
CN105354136B (zh) * 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105224454B (zh) * 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
US9983644B2 (en) 2015-11-10 2018-05-29 Intel Corporation Dynamically updating at least one power management operational parameter pertaining to a turbo mode of a processor for increased performance
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US9910470B2 (en) 2015-12-16 2018-03-06 Intel Corporation Controlling telemetry data communication in a processor
US10146286B2 (en) 2016-01-14 2018-12-04 Intel Corporation Dynamically updating a power management policy of a processor
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
CN107315563B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法
US10289188B2 (en) 2016-06-21 2019-05-14 Intel Corporation Processor having concurrent core and fabric exit from a low power state
US10324519B2 (en) 2016-06-23 2019-06-18 Intel Corporation Controlling forced idle state operation in a processor
US10281975B2 (en) 2016-06-23 2019-05-07 Intel Corporation Processor having accelerated user responsiveness in constrained environment
US10649914B1 (en) * 2016-07-01 2020-05-12 The Board Of Trustees Of The University Of Illinois Scratchpad-based operating system for multi-core embedded systems
US10379596B2 (en) 2016-08-03 2019-08-13 Intel Corporation Providing an interface for demotion control information in a processor
US10379904B2 (en) 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US10234920B2 (en) 2016-08-31 2019-03-19 Intel Corporation Controlling current consumption of a processor based at least in part on platform capacitance
US10423206B2 (en) 2016-08-31 2019-09-24 Intel Corporation Processor to pre-empt voltage ramps for exit latency reductions
US10168758B2 (en) 2016-09-29 2019-01-01 Intel Corporation Techniques to enable communication between a processor and voltage regulator
US10877509B2 (en) 2016-12-12 2020-12-29 Intel Corporation Communicating signals between divided and undivided clock domains
US10534682B2 (en) * 2016-12-28 2020-01-14 Arm Limited Method and diagnostic apparatus for performing diagnostic operations upon a target apparatus using transferred state and emulated operation of a transaction master
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
US10740256B2 (en) * 2017-05-23 2020-08-11 Marvell Asia Pte, Ltd. Re-ordering buffer for a digital multi-processor system with configurable, scalable, distributed job manager
US10678674B2 (en) * 2017-06-15 2020-06-09 Silicon Laboratories, Inc. Wireless debugging
US10429919B2 (en) 2017-06-28 2019-10-01 Intel Corporation System, apparatus and method for loose lock-step redundancy power management
EP3673344A4 (en) 2017-08-23 2021-04-21 INTEL Corporation SYSTEM, DEVICE AND METHOD FOR ADAPTIVE OPERATING VOLTAGE IN A FIELD-PROGRAMMABLE GATE ARRAY (FPGA)
US10620266B2 (en) 2017-11-29 2020-04-14 Intel Corporation System, apparatus and method for in-field self testing in a diagnostic sleep state
US10620682B2 (en) 2017-12-21 2020-04-14 Intel Corporation System, apparatus and method for processor-external override of hardware performance state control of a processor
US10620969B2 (en) 2018-03-27 2020-04-14 Intel Corporation System, apparatus and method for providing hardware feedback information in a processor
US10739844B2 (en) 2018-05-02 2020-08-11 Intel Corporation System, apparatus and method for optimized throttling of a processor
EP3570499B1 (de) 2018-05-15 2021-04-07 Siemens Aktiengesellschaft Verfahren zur funktional sicheren verbindungsidentifizierung
US10955899B2 (en) 2018-06-20 2021-03-23 Intel Corporation System, apparatus and method for responsive autonomous hardware performance state control of a processor
US10976801B2 (en) 2018-09-20 2021-04-13 Intel Corporation System, apparatus and method for power budget distribution for a plurality of virtual machines to execute on a processor
US10860083B2 (en) 2018-09-26 2020-12-08 Intel Corporation System, apparatus and method for collective power control of multiple intellectual property agents and a shared power rail
CN109542348B (zh) * 2018-11-19 2022-05-10 郑州云海信息技术有限公司 一种数据下刷方法及装置
US11656676B2 (en) 2018-12-12 2023-05-23 Intel Corporation System, apparatus and method for dynamic thermal distribution of a system on chip
US11256657B2 (en) 2019-03-26 2022-02-22 Intel Corporation System, apparatus and method for adaptive interconnect routing
US11442529B2 (en) 2019-05-15 2022-09-13 Intel Corporation System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US11106583B2 (en) * 2019-05-24 2021-08-31 Texas Instmments Incorporated Shadow caches for level 2 cache controller
CN110262888B (zh) * 2019-06-26 2020-11-20 京东数字科技控股有限公司 任务调度方法和装置及计算节点执行任务的方法和装置
US11698812B2 (en) 2019-08-29 2023-07-11 Intel Corporation System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor
US11132283B2 (en) * 2019-10-08 2021-09-28 Renesas Electronics America Inc. Device and method for evaluating internal and external system processors by internal and external debugger devices
DE102020127704A1 (de) 2019-10-29 2021-04-29 Nvidia Corporation Techniken zum effizienten transferieren von daten an einem prozessor
US11803380B2 (en) 2019-10-29 2023-10-31 Nvidia Corporation High performance synchronization mechanisms for coordinating operations on a computer system
CN111045960B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多像素格式存储的Cache电路
US11366506B2 (en) 2019-11-22 2022-06-21 Intel Corporation System, apparatus and method for globally aware reactive local power control in a processor
US11341066B2 (en) * 2019-12-12 2022-05-24 Electronics And Telecommunications Research Institute Cache for artificial intelligence processor
US11132201B2 (en) 2019-12-23 2021-09-28 Intel Corporation System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit
US11513835B2 (en) * 2020-06-01 2022-11-29 Micron Technology, Inc. Notifying memory system of host events via modulated reset signals
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1389871A (zh) * 2001-05-31 2003-01-08 日本电气株式会社 半导体存储部件
US20030115403A1 (en) * 2001-12-19 2003-06-19 Bouchard Gregg A. Dynamic random access memory system with bank conflict avoidance feature
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4415970A (en) 1980-11-14 1983-11-15 Sperry Corporation Cache/disk subsystem with load equalization
JPS5969826A (ja) 1982-10-15 1984-04-20 Hitachi Ltd バツフア制御方式
US4755930A (en) 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US5091846A (en) 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5119485A (en) 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5404483A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5276852A (en) 1990-10-01 1994-01-04 Digital Equipment Corporation Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US6446164B1 (en) * 1991-06-27 2002-09-03 Integrated Device Technology, Inc. Test mode accessing of an internal cache memory
US5408644A (en) 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5590368A (en) 1993-03-31 1996-12-31 Intel Corporation Method and apparatus for dynamically expanding the pipeline of a microprocessor
US5623633A (en) * 1993-07-27 1997-04-22 Dell Usa, L.P. Cache-based computer system employing a snoop control circuit with write-back suppression
US5551006A (en) 1993-09-30 1996-08-27 Intel Corporation Low cost writethrough cache coherency apparatus and method for computer systems without a cache supporting bus
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5754819A (en) 1994-07-28 1998-05-19 Sun Microsystems, Inc. Low-latency memory indexing method and structure
GB2292822A (en) * 1994-08-31 1996-03-06 Hewlett Packard Co Partitioned cache memory
US5619680A (en) 1994-11-25 1997-04-08 Berkovich; Semyon Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning
JPH08278916A (ja) 1994-11-30 1996-10-22 Hitachi Ltd マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路
JP3872118B2 (ja) 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US5737547A (en) 1995-06-07 1998-04-07 Microunity Systems Engineering, Inc. System for placing entries of an outstanding processor request into a free pool after the request is accepted by a corresponding peripheral device
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6598136B1 (en) * 1995-10-06 2003-07-22 National Semiconductor Corporation Data transfer with highly granular cacheability control between memory and a scratchpad area
US6532531B1 (en) * 1996-01-24 2003-03-11 Sun Microsystems, Inc. Method frame storage using multiple memory circuits
US5848164A (en) * 1996-04-30 1998-12-08 The Board Of Trustees Of The Leland Stanford Junior University System and method for effects processing on audio subband data
US5778236A (en) * 1996-05-17 1998-07-07 Advanced Micro Devices, Inc. Multiprocessing interrupt controller on I/O bus
US6021473A (en) 1996-08-27 2000-02-01 Vlsi Technology, Inc. Method and apparatus for maintaining coherency for data transaction of CPU and bus device utilizing selective flushing mechanism
US5897656A (en) 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5860158A (en) 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6134634A (en) 1996-12-20 2000-10-17 Texas Instruments Incorporated Method and apparatus for preemptive cache write-back
US5895485A (en) 1997-02-24 1999-04-20 Eccs, Inc. Method and device using a redundant cache for preventing the loss of dirty data
JP3849951B2 (ja) 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US5991855A (en) 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
US6018792A (en) 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US6009263A (en) * 1997-07-28 1999-12-28 Institute For The Development Of Emerging Architectures, L.L.C. Emulating agent and method for reformatting computer instructions into a standard uniform format
US6760833B1 (en) 1997-08-01 2004-07-06 Micron Technology, Inc. Split embedded DRAM processor
US7076568B2 (en) 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US6070227A (en) 1997-10-31 2000-05-30 Hewlett-Packard Company Main memory bank indexing scheme that optimizes consecutive page hits by linking main memory bank address organization to cache memory address organization
US6026475A (en) * 1997-11-26 2000-02-15 Digital Equipment Corporation Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
US6253311B1 (en) * 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US6560680B2 (en) 1998-01-21 2003-05-06 Micron Technology, Inc. System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory
JP3751741B2 (ja) 1998-02-02 2006-03-01 日本電気株式会社 マルチプロセッサシステム
US6115763A (en) * 1998-03-05 2000-09-05 International Business Machines Corporation Multi-core chip providing external core access with regular operation function interface and predetermined service operation services interface comprising core interface units and masters interface unit
US6643745B1 (en) 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
DE59906194D1 (de) 1998-05-07 2003-08-07 Infineon Technologies Ag Cache-speicher für zweidimensionale datenfelder
TW501011B (en) 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US20010054137A1 (en) * 1998-06-10 2001-12-20 Richard James Eickemeyer Circuit arrangement and method with improved branch prefetching for short branch instructions
GB9818377D0 (en) * 1998-08-21 1998-10-21 Sgs Thomson Microelectronics An integrated circuit with multiple processing cores
US6483516B1 (en) * 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6718457B2 (en) 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6563818B1 (en) 1999-05-20 2003-05-13 Advanced Micro Devices, Inc. Weighted round robin cell architecture
US6598178B1 (en) * 1999-06-01 2003-07-22 Agere Systems Inc. Peripheral breakpoint signaler
US6279080B1 (en) 1999-06-09 2001-08-21 Ati International Srl Method and apparatus for association of memory locations with a cache location having a flush buffer
US6188624B1 (en) 1999-07-12 2001-02-13 Winbond Electronics Corporation Low latency memory sensing circuits
US6496880B1 (en) * 1999-08-26 2002-12-17 Agere Systems Inc. Shared I/O ports for multi-core designs
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6401175B1 (en) 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6539522B1 (en) * 2000-01-31 2003-03-25 International Business Machines Corporation Method of developing re-usable software for efficient verification of system-on-chip integrated circuit designs
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
US20020029358A1 (en) * 2000-05-31 2002-03-07 Pawlowski Chester W. Method and apparatus for delivering error interrupts to a processor of a modular, multiprocessor system
US6438658B1 (en) 2000-06-30 2002-08-20 Intel Corporation Fast invalidation scheme for caches
US6654858B1 (en) 2000-08-31 2003-11-25 Hewlett-Packard Development Company, L.P. Method for reducing directory writes and latency in a high performance, directory-based, coherency protocol
US6587920B2 (en) 2000-11-30 2003-07-01 Mosaid Technologies Incorporated Method and apparatus for reducing latency in a memory system
US6662275B2 (en) 2001-02-12 2003-12-09 International Business Machines Corporation Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with store-through data cache
US6647456B1 (en) 2001-02-23 2003-11-11 Nvidia Corporation High bandwidth-low latency memory controller
US6725336B2 (en) * 2001-04-20 2004-04-20 Sun Microsystems, Inc. Dynamically allocated cache memory for a multi-processor unit
US6785677B1 (en) 2001-05-02 2004-08-31 Unisys Corporation Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector
US7133971B2 (en) * 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
GB2378779B (en) 2001-08-14 2005-02-02 Advanced Risc Mach Ltd Accessing memory units in a data processing apparatus
US6877071B2 (en) 2001-08-20 2005-04-05 Technology Ip Holdings, Inc. Multi-ported memory
US20030110208A1 (en) 2001-09-12 2003-06-12 Raqia Networks, Inc. Processing data across packet boundaries
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
US7072970B2 (en) 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
US6901491B2 (en) 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US7200735B2 (en) * 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
GB2388447B (en) * 2002-05-09 2005-07-27 Sun Microsystems Inc A computer system method and program product for performing a data access from low-level code
CN1387119A (zh) * 2002-06-28 2002-12-25 西安交通大学 一种适应于快速数据查找的树形链表及其生成算法
US6814374B2 (en) * 2002-06-28 2004-11-09 Delphi Technologies, Inc. Steering column with foamed in-place structure
US6970985B2 (en) * 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
GB2390950A (en) * 2002-07-17 2004-01-21 Sony Uk Ltd Video wipe generation based on the distance of a display position between a wipe origin and a wipe destination
US6957305B2 (en) * 2002-08-29 2005-10-18 International Business Machines Corporation Data streaming mechanism in a microprocessor
US20040059880A1 (en) 2002-09-23 2004-03-25 Bennett Brian R. Low latency memory access method using unified queue mechanism
US6952150B2 (en) * 2002-10-02 2005-10-04 Pass & Seymour, Inc. Protective device with end of life indicator
US7146643B2 (en) * 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
US7093153B1 (en) * 2002-10-30 2006-08-15 Advanced Micro Devices, Inc. Method and apparatus for lowering bus clock frequency in a complex integrated data processing system
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
US20050138276A1 (en) 2003-12-17 2005-06-23 Intel Corporation Methods and apparatus for high bandwidth random access using dynamic random access memory
US7159068B2 (en) * 2003-12-22 2007-01-02 Phison Electronics Corp. Method of optimizing performance of a flash memory
US20050138297A1 (en) * 2003-12-23 2005-06-23 Intel Corporation Register file cache
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7353341B2 (en) * 2004-06-03 2008-04-01 International Business Machines Corporation System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US9304767B2 (en) * 2009-06-02 2016-04-05 Oracle America, Inc. Single cycle data movement between general purpose and floating-point registers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems
CN1389871A (zh) * 2001-05-31 2003-01-08 日本电气株式会社 半导体存储部件
US20030115403A1 (en) * 2001-12-19 2003-06-19 Bouchard Gregg A. Dynamic random access memory system with bank conflict avoidance feature

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CN 1389871 A,全文.

Also Published As

Publication number Publication date
CN101036117B (zh) 2010-12-08
CN100533372C (zh) 2009-08-26
US20060059310A1 (en) 2006-03-16
CN101040256A (zh) 2007-09-19
CN101069170A (zh) 2007-11-07
CN101053234A (zh) 2007-10-10
US20140317353A1 (en) 2014-10-23
CN101069170B (zh) 2012-02-08
US9141548B2 (en) 2015-09-22
US7941585B2 (en) 2011-05-10
US20060059316A1 (en) 2006-03-16
CN101036117A (zh) 2007-09-12
CN101053234B (zh) 2012-02-29
US20060059286A1 (en) 2006-03-16
CN101128804A (zh) 2008-02-20

Similar Documents

Publication Publication Date Title
CN101128804B (zh) 在低延时存储器中数据结构的选择性复制
CN103959255B (zh) 跨多个内存口使用选择性复制降低内存访问延迟的系统及方法
DK1794979T3 (en) Selective copying of data structure
CN102460439B (zh) 通过条带式文件系统中的容量平衡进行数据分布
CN104040515B (zh) 在逻辑驱动器模型下呈现直接存取的存储设备
CN103257933B (zh) 无序处理器中的事务存储器执行的方法、设备和系统
EP1790148B1 (en) Deterministic finite automata (dfa) processing
CN103150275B (zh) 掉电后重建闪存控制器中使用的元数据的方法及闪存装置
US7707393B2 (en) Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
KR102028252B1 (ko) 자율 메모리 아키텍처
CN105830040A (zh) 用于访问存储器的存储器装置
CN100438524C (zh) 基于硬件支持的虚拟接口结构用户层网络通信系统
CN104025036B (zh) 低时延集群计算
Jun et al. Bluedbm: Distributed flash storage for big data analytics
EP1290560A2 (en) Distributed processing multi-processor computer
CN107728935A (zh) 对分布式计算系统中的数据重新分区
CN101160567A (zh) 具有带嵌入式cpu的存储器控制器的数据存储系统
CA2376331A1 (en) Scalable memory
JP5904948B2 (ja) システムのいくつかの構成要素のメモリ間の直接データ転送を許可するそのシステム
Lampson et al. The memory system of a high-performance personal computer
Kwon et al. Gen‐Z memory pool system implementation and performance measurement
WO2004072768A2 (en) Distributed dynamically optimizable processing communications and storage system
CN101443765A (zh) 数据库卸载处理
Vasudevan Energy-efficient data-intensive computing with a fast array of wimpy nodes
WO2004092948A1 (ja) 情報処理システムおよび情報処理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: KAWEM CO., LTD.

Free format text: FORMER NAME: CAVIUM NETWORKS

CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Kawem Ltd.

Address before: California, USA

Patentee before: Cavium Networks

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Kawim Co.,Ltd.

Address before: California, USA

Patentee before: Kawem Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201119

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: California, USA

Patentee before: Kawim Co.,Ltd.

Effective date of registration: 20201119

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120201

Termination date: 20210909