CN101069170B - 一种网络服务处理器以及处理数据包的装置和方法 - Google Patents

一种网络服务处理器以及处理数据包的装置和方法 Download PDF

Info

Publication number
CN101069170B
CN101069170B CN2005800346009A CN200580034600A CN101069170B CN 101069170 B CN101069170 B CN 101069170B CN 2005800346009 A CN2005800346009 A CN 2005800346009A CN 200580034600 A CN200580034600 A CN 200580034600A CN 101069170 B CN101069170 B CN 101069170B
Authority
CN
China
Prior art keywords
task
identifier
packet
processor
pow
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.)
Active
Application number
CN2005800346009A
Other languages
English (en)
Other versions
CN101069170A (zh
Inventor
格雷格·A·鲍查德
托马斯·F·汉姆尔
理查德·E·科斯勒
穆罕默德·R·休斯塞恩
李彦志
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.)
Kaiwei International Co
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
Priority claimed from US11/005,490 external-priority patent/US7895431B2/en
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of CN101069170A publication Critical patent/CN101069170A/zh
Application granted granted Critical
Publication of CN101069170B publication Critical patent/CN101069170B/zh
Active 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

本发明提供了一种在多核网络服务处理器中进行有序化,同步化和调度任务的方法和机制。每个任务都被标识符限定如何实现任务的同步化和有序化。通过在不同处理器内核上并行的处理拥有不同标识符的任务,来提高处理器的吞吐量。数据包处理可以被分成不同的阶段,根据有序化,同步化对各个阶段的约束,每个阶段都有不同的标识符。依据阶段的不同,内核启动标识符转换操作。一种专用的标识符交换总线使得标识符交换操作的延时最小化。

Description

一种网络服务处理器以及处理数据包的装置和方法
技术领域
本发明是2004年12月6日提交的第11/005,490号美国专利的继续,其要求于2004年9月10日提交的第60/609,211号美国临时申请的权益。上述申请的全部教导在此通过引证并入本文。
背景技术
开放式通信系统互联参考模块(OSI)限定了用于在传输媒体上通信的七个网络协议层(L1-L7)。上层(L4-L7)代表端对端通信,下层(L1-L3)代表本地通信。
网络化应用感知系统需要处理、过滤和切换L3到L7网络协议层的范围,例如,L7网络协议层,诸如超文本传输协议(HTTP)和简单邮件传输协议(SMTP),L4网络协议层,诸如传输控制协议(TCP)。除了处理网络协议层外,网络化应用感知系统需要在保护这些层的同时还需要基于通过L4-L7网络协议层(包括防火墙,虚拟专用网(VPN),加密套接字协议层(SSL),入侵检测系统(IDS),互联网协议安全性(IPSec),线速的反病毒(AV)和反垃圾邮件功能)的安全性来保证这些协议的访问和内容。
网络处理器对于高通量的L2和L3网络协议处理是可用的,也就是说,进行数据包的处理从而以线速传输数据包。通常,通用处理器被用来处理需要更高智能化处理的L2-L7网络协议。例如,传输控制协议(TCP),L4网络协议,需要很多的计算密集的任务,包括计算在数据包中整个有效负荷上的校验和,管理TCP片段缓冲器,以及以每一次连接为基础在各个时间维护多个计时器。虽然通用处理器可以完成所述计算密集的工作,但是它不能提供足以处理数据以致能够以线速转发的性能。
发明内容
一种网络服务处理器,包括数据包任务排序模块,该模块为待被一个或多个内核处理器执行的L4-L7网络协议对任务进行调度和排队(数据包处理操作)。待被调度的任务被排入到输入队列中,该输入队列是无限量的,这是通过允许输入队列扩充到外部存储器以致即使在没有新的任务被数据包任务排序模块调度的情况下任务仍可加入到输入队列中实现的。因此,即使在数据包处理程序忙碌的情况下,新任务的排队也不会延迟。任务在外部存储器中按顺序排队直到其被移入到数据包任务排序模块用于处理。
在具体的数据包上执行的数据包处理(任务)包括多个数据包处理操作(多段任务)。每一段任务都有相关联的标识符。这些标识符允许任务被调度以致任务可以通过多个处理器进行并行操作,同时确保任务的执行是有序的和同步的。数据包处理操作的调度和排序允许数据被处理,这样数据就可以以线速传播,就是说以网络数据传输速率来传播。
依据本发明理论,一种用于排队和调度数据包的处理的系统和方法提高了在网络服务处理器中数据包处理的吞吐量。网络服务处理器包括多个独立的处理器和任务排序模块。每一个处理器都并行操作来执行任务。任务排序模块根据与任务相关的标识符动态地调度待被处理器并行执行的任务,这样,任务的执行就可以是有序的且同步的。
任务排序模块包括存储待被处理器执行的任务的输入队列和多个传输的表单。输入队列中的任务可以被存储在任务排序模块里,或者被存储在任务排序模块之外的存储器里,这样任务队列呈现出无限的空间。通过允许任务队列是无限的,在对任务进行调度用于处理之前,任务可以在外部存储器里被排序,随后被移动到数据包任务排序模块里。任务包括,例如,IPSec加密,IPSec解密,虚拟专用网络数据包的碎片整理,或者调整TCP的序列号。处理器中的至少有一个可以执行控制平面操作,另一个处理器可以执行数据平面处理。
每一个传输的表单都与不同的标识符相关联用于追踪与该标识符相关联的传输的任务。在输入队列里的排队的任务由任务排序模块调度。通过将任务移动到传输的列表调度任务。传输的表单的选取取决于与这个任务相关联的标识符。
任务排序模块也包括用于每一个处理器的组识别符。这组识别符以组的形式识别组中哪一个处理器将接收任务并在输入序列上区分任务,这样任务就被调度给从组中接收任务的处理器。
网络服务处理器也包括控制任务何时被添加到输入队列中的计时器。标识符包括标识符类别。一个传输的表单存储具有原子标识符类型的任务,其中只有位于表单首位的任务是可被多个处理器中的一个执行的。另一个传输表单可以存储具有有序标识符类型的任务,其中在表单上的所有任务都是可被执行的,任务只有在表单首位时才能被多个处理器中的一个所移动。
为了减少标识符转换操作的延迟时间,即,更改与任务相关联的标识符的操作,专用的标识符转换总线被连接在处理器和任务指令模块之间以用来通过数据包任务排序单元传输标识符转换操作完成的标识。内核通过执行一个存储指令来启动标识符转换操作,数据包任务排序单元修正标识符并将任务移动给与修正的标识符相关联的传输的队列中。每一个输入序列可以具有被赋值的优先级和/或被赋值用于存储特定类型的任务。
限定每个数据包处理操作是如何被执行的能力允许在接收到数据包中的上层协议的处理被执行从而以线速传送数据包。此外,扩展输入序列到外部存储器中的能力可以实现在网络服务处理器忙于处理其他任务的时候可以对任务有序的排队。
附图说明
前面所描述的和本发明的其他目的,特征和优势将在下面更详细清晰的描述中具体的体现,如所附的附图所示,其中在各个附图中相同的数字表示相同的部件。这些附图不是严格按比例绘制,重点在于说明本项发明的原理。
图1是根据本发明的原理的包括网络服务处理器的安全设备的框图;
图2是图1所示的网络服务处理器的框图;
图3是图2中所示的网络服务处理器的数据包输入输出处理单元的示意图;
图4示出了可以被存储在L2高速缓存里或者动态随机存储存储器(DRAM)内的任务队列入口;
图5示出了一种数据包排序任务的入口;
图6示出了任务进出数据包排序/任务单元的状态;
图7是示出在数据包排序/任务中的各种不同列表中的数据包排序/任务单元项目的框图;
图8是示出连接到内核数据包排序/任务单元和IO网桥的专用标识符转换总线的框图。
具体实施方式
本发明的优选的实施方案的描述如下。
图1是根据本发明的原理的包括网络服务处理器100的安全设备102的框图。安全设备102是单机版的系统,可以把在以太网(GigE)接收到的数据包转换到另一个以太网端口(GigE)并在转发数据包之前在接收到的数据包之前执行多个安全功能。例如,安全设备102可以在将所处理的数据包转发到局域网之前在从从广域网接收的数据包上进行安全操作。网络服务处理器100包括硬件数据包处理、缓冲、任务调度、排序、同步和一致性性支持以根据本发明的理论来加速数据包处理任务。
网络服务处理器100处理内嵌在接收到的数据包中的开放系统互联网络L2-L7层协议。如本领域内的普通技术人员所熟知的,开放系统互联(OSI)参考模块限定了七个网络协议层(L1-7)。物理层(L1)表示将设备连接到传输媒介上的实际接口,电的和物理上的。数据链路层(L2)传输数据帧。网络层(L3)将数据格式化为数据包。运输层(L4)进行端到端的传输。会话层(L5)管理设备之间的通信,例如,确定是半双工通信还是双工通信。表示层(L6)管理数据格式和语法表示,例如,句法,控制码,特殊图表和字符集。应用层(L7)允许用户之间的通讯,例如,文件传输和电子邮件。
网络服务处理器为上层网络协议(例如,L4-L7层)对任务进行调度和排队(数据包处理操作)。在具体的数据包上所进行的数据包处理(总任务)包括多个数据包处理操作(多段任务)。每一段任务都有一个相关联的标识符。标识符允许任务通过网络服务处理器中的多个处理器内核并行的进行调度,并同时确保任务的执行是有序的和同步的。任务的排队和调度允许在接收到的数据包中的上层网络的协议被执行从而以线速转发数据包。线速是网络的数据传输速度,其中数据在该网络上进行传输和接收。通过处理协议从而以线速转发数据包,网络服务处理器没有消减网络数据的传输速率。
网络服务处理器100包括多个以太网媒体访问控制接口,其带有标准的简化的吉比特媒体独立接口(RGMII)连接芯片PHY104a,104b.。
网络服务处理器100通过物理接口PHY 104a,104b从以太网端口(Gig E)中接收数据包,在接收到的数据包上执行L7-L2网络协议处理,并通过物理接口PHY 104a,104b将被处理的数据包转发到网络上另一个中继器,或最终目的地,或通过PCI总线106由主处理器进行更进一步的处理。网络协议处理可以包括网络安全协议处理,如防火墙,应用防火墙,虚拟专用网(VPN),其包括IP安全性(IPSec)和/或加密套接字协议层(SSL),入侵检测系统(IDS)和反病毒(AV)。
网络服务处理器100中的DRAM控制器控制着对与网络服务处理器100连接的外部动态随机存取存储器108的存取。DRAM108存储从PHY端口104a,104b或外围组件互联延伸(PCI-X)接口106接收到的数据数据包,用于由网络服务处理器100进行处理。在一个实施方案中,DRAM接口支持64或128字节的双精度的数据率II同步动态随机存取存储器(DDRIISDRAM)的操作达800MHz。
当网络服务处理器100启动或重新启动时,启动总线110将提供必要的启动代码,这些代码被存储在闪存112中,并被网络服务处理器100所执行的。应用代码通过启动总线110可以从执行闪存标准的装置114中或者从另一个高容量装置(其可以是借助PCI总线连接的磁盘)中被加载到网络服务处理器100中。
多种类的I/O端口116提供辅助接口,如通用输入/输出接口(GPIO),闪存,IEEE 802两线制管理接口(MDIO),通用异步收发器(UART)和串行接口。
网络服务处理器100包括另一种用来控制低时延DRAM 118的存储控制器。低时延DRAM 118被用在允许快速查找的网络服务器和安全应用程序中,快速查找包括入侵检测系统(IDS)或反病毒(AV)应用程序所需要的字符串匹配。
图2是图1所示的网络服务处理器100的框图。网络服务处理器100使用多个处理器内核202来传递高性能的请求。网络请求被分类为数据平面或控制平面操作。内核202中的每一个可以专门用于执行数据平面或控制平面操作。数据平面的操作包括传输数据包的分组操作。控制平面操作包括处理部分复杂的高级别的协议,如网络安全协议(IP Sec),传输控制协议(TCP),和加密套接层(SSL)。数据平面操作可以包括处理其他部分的复杂的高级别协议。
数据包输入单元214为每一个数据包创建和分配任务队列入口。这个任务队列入口包含指向存储在L2高速缓冲存储器212或DRAM108(图1)中的缓冲的数据包的指针。任务队列入口将在随后结合图4进行介绍。
数据包输入/输出处理是通过接口单元210a、210b、数据包输入单元(数据包输入)214和数据包输出单元(PKO)218进行执行的。输入控制器和接口单元210a、210b执行全部的接收到的数据包的分析和结果的检查以卸载内核202。
数据包通过SPI-4.2或RGM II接口由接口单元210a或210b中的任何一个来接收。数据包也可以被PCI接口224接收。接口单元210a、210b对接收到的数据包执行L2网络协议的预处理操作,这是通过检查包括在接收到的数据包中L2网络协议头中的各个字段来实现的。在接口单元210a、210b已经执行了L2网络协议处理后,数据包被传送到数据包输入单元214。数据包输入单元214对包括在接收到的数据包中的L3和L4网络协议头进行预处理。预处理包括对传输控制协议(TCP)/用户数据包协议(UDP)(L3层网络协议)的检查。
数据包输入单元214将分组数据按某种格式写入二级的高速缓冲存储器212或DRAM108中的缓存中,所述的格式适于在至少一个处理器内核202中执行的用于进一步处理更高级别的网络协议的高层软件。数据包输入单元214支持可编程的缓冲器的尺寸,可以分配分组数据越过多个缓冲器以支持较大数据包的输入尺寸。
数据包排序/任务(POW)模块228为处理器内核202排队和调度任务(数据包处理操作)。任务被定义为由任务队列上的入口所指定的内核所执行的任何工作。工作可以包括数据包处理操作,例如,将在接收到的数据包上执行的L4-L7层执行的数据包处理操作,所述的接收到的数据包由任务入口上的任务队列入口所确定。每个分开的数据包处理操作都是存储在存储器中的接收到的数据包上的内核所执行的任务的一段。例如,任务可以是接收到的防火墙/虚拟专用网(VPN)的数据包的处理。防火墙/VPN数据包的处理包括以下分开的数据包处理操作(分任务):(1)碎片整理以将片段记录到接收到的数据包中;(2)IPSec解码;(3)IPSec加密;以及(4)在转送数据包之前进行网址翻译(NAT)或TCP序列号的调整。
因为一些数据包处理操作要求排序,而其他的数据包处理操作既要求既要排序又要同步,所以使标识符与定义待被执行的处理的类型的每段任务相关联。
POW模块228为内核202选择(例如,调度)任务,并返回指向描述该任务的任务队列入口的指针到内核202。每段任务(数据包处理操作)都有相关联的一组校验码和标签。
标识符被内核用来排序和同步化预先调度好的任务。标识符包括标识符数值和标识符类型。标识符数值允许用于相同流(从源头到目的地)的任务被排序和同步化。标识符的类型选择了任务是怎样被同步化和排序的。有三种不同的标识符类型:有序的(次序是被保证的),原子的(次序和原子性被保证)和空的(没有次序是被保证的)。当没有其他的内核可以同时访问同一个数据结构时,内核“原子地”访问数据结构(或具有标识符)。因此,原子性保证了至多一个内核有给定的标识符。与任务相关的初始标识符取决于任务的创造者。标识符可以通过被内核初始化的标识符转换操作来更改。
例如,当处理防火墙/虚拟专用网(VPN)的数据包时,一些处理阶段仅要求是有序的,而其他有的既要求有序也要求同步化。一种有序的标识符类型可以在碎片整理阶段被使用,这样相同流的碎片就是有序的。原子标识符类型可以在IPSec处理阶段被使用以在使用相同IPSec通道的数据包之间提供同步化操作。因此,在内核完成了对数据包的分组化操作后,在对数据包进行IPSec操作前,为了下一阶段的数据包处理操作(IPSec解码),内核初始化标识符转换操作以转换任务的标识符类型。在标识符转换操作完成后,IPSec处理可以被相同内核或不同内核来执行。
标识符组被用来选择一个或多个内核来对任务进行初始调度。因为所有的任务并不是平等的,所以标识符组允许不同的任务在不同的内核上执行。例如,通过限定组中哪个内核将会接收任务,数据包处理可以从内核的一个组转到另一组上。为了将任务从一个内核组传送到另一组上,或者为了避免用于需要长的同步化延迟时间的任务而消耗内核,内核可以打乱预先安排好的任务。内核打乱已经安排好的任务是通过初始化标识符转换操作以将标识符类型转换为空来实现的。当重新安排任务时,标识符组被POW模块用来选择内核来将没有安排好的任务安排好。
在更加详细的介绍POW模块的操作之前,先介绍内核中的其它模块。在数据包被内核202处理后,数据包输出单元(PKO)218从L2高速缓冲存储器或DRAM中读取分组数据,执行L4网络协议进行后续处理(例如,生成TCP/UDP检查和),通过接口单元210a,210b传输数据包,并释放用于存储数据包的L2高速缓冲存储器212或DRAM108。
网络服务处理器100还包括卸载内核202的专用的应用程序并行处理器,这样一来网络服务处理器达到了高吞吐量。专门的应用程序并行处理器包括执行确定性有限自动机(DFA)的DFA并行处理器244和执行压缩和解压缩的压缩/解压缩并行处理器208。
每一个处理器内核202都是双发射的、超级标量体系结构处理器,其带有指令高速缓冲存储器206的、一级数据高速缓冲存储器204、用于可以越过低延时存储器总线230直接存取低延时存储器的密码算法的嵌入式硬件加速器(密码加速模块)200。到低时延存储器118的低时延直接存取路径绕过L2高速缓冲存储器212而且可以直接从内核202和DFA并行处理器244中存取。
网络服务处理器100还包括存储器子系统。存储器子系统包括在每个内核202中的一级数据高速缓冲存储器204、在每个内核202中的指令高速缓冲存储器、二级数据高速缓冲存储器212、用于外部DRAM存储器的DRAM控制器216和到外部低时延存储器的接口230。
存储器子系统的体系的建立是为了支持多个内核,并被协调以传送存储器密集内容网络应用程序所需要的的高吞吐量和低时延两者。所有的内核202和I/O并行处理设备共享二级高速缓冲存储器212和外部DRAM存储器108(图1)。
每个内核202都通过一致性存储器总线234与L2高速缓冲存储器连接。一致性存储器总线234是用于内核202、I/O网桥(IOB)232、二级高速缓冲存储器和控制器212之间的所有存储器和I/O事务处理的通讯渠道。
自由池分配器(FPA)236保持到二级缓冲存储器212和DRAM中自由存储器的指针池。带宽有效的堆栈(后进先出(LIFO))被应用于各个自由指针池。如果一个指针池太大以至于不适合自由池分配器(FPA)236,那么自由池分配器(FPA)236就会使用在指针池中的自由存储器来存储额外的指针在二级高速缓冲存储器212或DRAM中建立一个树/列表结构。
I/O网桥(IOB)232管理所有的协议和仲裁并提供一致性的I/O分割。IOB232包括桥238、读取和添加单元(FAU)240。桥238包括用来存储将在I/O总线、一致性存储器总线、数据包输入单元214和数据包输出单元218之间传递的信息的缓冲队列。
读取和添加单元(FAU)240是2KB的寄存器,支持读、写、原子数读取和添加、和原子更新操作。读取和添加单元(FAU)240可以从内核202和数据包输出单元218两者中进行存取。寄存器中存储使用率高的数值,因此就降低这些值的通信量。FAU240中的寄存器被用来保存用于传送数据包经过数据包输出单元218的输出队列的长度。
PCI接口控制器224有DMA驱动,其允许处理器内核202在网络服务处理器中的本地存储器和远程(PCI)存储器之间在双方向上进行异步移动数据。
图3是详细介绍了用于执行图2中所示的网络服务处理器中的输入和输出数据包处理的单元。
如在图1和图2中已经讨论过的,数据包可以通过接口单元210a,210b或PCI接口224中任何一个被接收。接口单元210a,210b和数据包输入单元214对接收到的数据包进行分析,并检查分析的结果以卸载内核202。接口单元210a,210b检查包括在接收到的数据包中L2层网络协议的尾部用于通常的异常(commonexception)。例如,L2层网络协议尾部中所提交的帧检查序列(FCS)存储在数据包的发生器所执行的帧的比特位上的CRC计算的结果。接口单元210a,210b执行相同的接收到的数据包的CRC计算,并把结果与存储在FCS中的值相比较。当有错误被检测到的时候,接口单元210a,210b将不接收数据,就是说在这种情况下会有数据包丢失。如果接口单元210a,210b接收数据包,自由池分配器(FPA)236为此数据包在L2高速缓冲存储器或DRAM中分配存储区,数据包别存储在存储器中。
数据包输入单元214包括数据包输入处理(PIP)单元302和输入分组数据(IPD)单元300。数据包输入单元214用FPA236中的指针池中的一个来将接收到的分组数据存储在二级高速缓冲存储器或DRAM中,使用另一个指针池分配任务队列入口。任务队列入口将在稍后结合图4一起讨论。
I/O总线包括入站总线(IOBI)和出站总线(IOBO)、数据包输出总线(POB)、PKO专用总线(PKOB)、输入分组数据总线(IPDB)和相关联的控制器。接口单元210a,210b将接收到的数据包中的64位数据包片断(segment)放到IOBI总线上。数据包输入单元214中的IPD300锁存IOBI总线的每一个64位数据包片断以用于处理。IPD300将64位数据包片断堆积成128字节缓存块。然后,IPD300将缓存块写入发送到IPDB总线。I/O桥232将缓存块写入传送到一致性存储总线(CMB)。
数据包输入单元214对包括在接收到的数据包中的L3和L4层网络协议头进行预处理。例如,对IP头的L3网络协议预处理包括检查IP版本字段以确定IP版本是版本4还是版本6,检验数值存储在生存时间(TTL)字段中的数值大于0的头校验字段,以及检查选择字段。数据包输入单元214支持网络协议版本4(Ipv4)和网络协议版本6(Ipv6)通讯。用于TCP/UDP头的L4预处理包括检验端口数字字段、校验和字段、储存在长度字段和标签字段中的数值。为了内核更高一层的处理操作,数据包输入单元214还提取存储在L3和L4网络协议头中的字段中的值。
数据包排序/任务(POW)单元228执行硬件任务排队、硬件任务调度和基于标识符的同步化和排序以为了内核排队并调度任务。任务队列入口通过数据包输入单元214被加载给任务队列以用于每一个数据包的到达。任务队列入口是描述将由内核执行的任务的主要的描述符,这将在后面结合图4中一起介绍。任务队列入口可以由PIP/IPD模块214或内核202来创建。PIP/IPD模块214将任务提交给数据包排序/任务(POW)单元228以用于每一个数据包的到达。
由存储在L2高速缓冲存储器/DRAM中的任务队列入口所限定的任务通过多个POW输入队列中的一个进入到数据包排序/任务(POW)单元228中。在一个实施方案中,有8个POW输入序列,并且POW模块包括2048个POW入口。POW入口将在后面结合图5一起描述。POW模块228使用POW入口进行排序、调度和同步化被任务队列入口所限定的任务。POW模块228存储指向POW入口中的任务队列入口的指针,并将指向任务的指针提供给内核以响应来自内核对任务的请求。
不同的POW输入队列可以被用来提供不同的服务等级。数据包输入处理单元(PIP)302可以使用默认数值、虚拟局域网(VLAN)优先级和在每个端口基础上可配置的IP区分服务数值将数据包分类成POW 228中的八个输入任务队列中的一个。
计时器单元242被用来为内核调度任务。计时器单元管理具有存储在二级高速缓冲存储器212或DRAM 108(图1)中的可编程数量的稳定区(bucket)的环。每个稳定区存储计时器入口的表单。每个计时器入口存储任务队列入口指针。每个环中的稳定区之间的时间周期是可编程的。在每一个周期的稳定区时间到期的时候,环中下一个稳定区被处理,并且由存储在在稳定区中的计时器入口中的任务队列入口指针所限定的任务被调度。
图4示出了可以被存储在L2高速缓冲存储器212或者DRAM108中的任务队列入口400。任务队列入口400的字402,404被数据包排序/任务模块(POW)228使用,用来为内核调度任务。
字402包括用于存储硬件校验和的硬件校验和字段412、和用于存储指向下一个任务队列的指针的下一个指针字段414以实现存储器输入队列。在一个实施方案中,硬件校验和是硬件生成的16位的在数据包上被计算的分组数据的反码求和(ones-compliment sum)。下一个指针字段414被用来链接任务队列入口。
字404包括长度字段416、输入端口(iprt)字段418、QOS字段420、组字段422、TT字段424和标识符字段426。长度字段416存储在任务队列入口400中的数据包数据的总的字节数。在一个实施方案中,长度范围可以从1到65535字节。输入端口字段418存储数据包到达的输入端口。QOS字段420存储由数据包输入单元214选择的POW模块228中的输入队列。数据包输入单元214可以根据接收到的数据包的默认值的每个端口或字段来选择输入队列,例如,基于VLAN ID,或区分服务(diffserv)DSCP字段。组字段422存储用于任务的内核组的数量。TT字段424存储任务队列入口的初始标识符类型。标识符类型可以是空、有序的或原子的。对于IP和非IP的数据包、Ipv4和Ipv6的数据包、TCP和非TCP数据包的标识符类型可以是不一样的。初始标识符数值是由IPD单元300分配的,而且可以以数据包到达的端口号、IP源和目标地址、IP协议下一协议头值和TCP/UDP源和目标端口为基础。POW模块228读取QOS字段的值以选择输入队列。POW模块228在向输入队列添加任务时也读取组字段、TT字段和标识符字段的值。
任务队列入口的字404中的标识符字段426允许给每一个任务加标识符。PIP/IPD模块214创建初始标识符信息,并将其存储在任务队列入口里。例如,PIP/IPD模块可以通过执行限定“流动”的标准的TCP五元组(IP源地址,IP目标地址,IP协议,TCP源端口,TCP目标端口)的一部分来建立标识符。数据包/排序任务(POW)模块228使用初始标识符信息用于同步化、排序和调度。当两个任务共享相同的存储在标识符字段426中的标识符数值和存储在字404的TT字段424中标识符类型时,它们是有序的和/或同步的。当两个任务有不同的标识符或标识符类型值时,它们是不相关的,并且可以在不同的内核中以完全并行的来执行。相同的流动有相同的标识符数值,所以它可以是有序的和同步的。不同的流动有不同的标识符数值,所以它们会是无序和不同步的,并且可以在不同的内核上并行的执行。
字406保存关于分组数据的信息,例如,在输入数据包处理过程中从数据包头部提取出的信息。信息可以包括关于虚拟LAN标识符是否是在L2协议头中发现的,数据包是UDP还是TCP,L2协议头中的目标MAC地址字段是分散的还是复选的,以及数据包是否需要IPSec解码。信息还包括用来存储分组数据的缓冲器的数量。
字408是缓冲器描述符。地址段436存储缓冲器中分组数据的第一字节的地址。尺寸字段434存储存储在缓冲器中分组数据的字节数。在一个实施方案中,池字段432和I字段428被设定为“0”,后备字段430将地址字段436中存储的高速缓冲存储器块的数量存储在缓冲器的前端。
字410根据数据包的类型来存储分组数据。存储在队列入口中的分组数据的格式不在本发明的范围内。
POW模块228有多个保存在多种不同的表单中的POW入口包括POW输入队列。典型的,每个POW入口包括指向存储在L2高速缓冲存储器/DRAM中的任务队列入口的指针。任务队列入口可以扩展POW的输入对列。
图5示意了POW入口500。POW入口500存储任务对列指针(WQP)502。在一个实施方案中,WQP是指向任务队列入口400的L2高速缓冲存储器212或DRAM 208中的64位校准指针。
POW入口500还存储分配给由关联任务队列入口400、与任务相关联的当前的组或多个组508以及用来将POW入口500链接到POW模块228中的各种不同表单上的其他的指针510所描述的任务的当前标识符数值504和标识符类型506。
POW模块228通过使用标识符数值和标识符类型排序来对调度的任务进行排序。标识符数值允许相同流动(从来源到目的地)的任务被排序和同步化。例如,标识符数值可以是在定义“流动”的数据包的头部中的标准的TCP五元组(IP源地址,IP目标地址,IP协议,TCP源端口,TCP目标端口)的一部分。相同的流动具有相同的标识符数值,所以它可以被排序和同步化。不同的流动有不同的标识符数值,所以它们不会被排序和同步化,所以它们可以在不同的内核上完全并行地被执行。在一个实施方案中,标识符数值是32位数值的。标识符类型506识别将被执行的有序的和同步化的类型。
在一个实施方案中,每个被POW入口500识别的任务都被分配了以下三种标识符类型中的一种:空的,有序的,原子的。没有有序的是由空标识符类型来保证。具有有序标识符类型的任务保证了是有序的。有原子的标识符类型的任务保证了是有序的和原子的。具有原子标识符的两个任务不能同时有相同的标识符数值。
不同类型的任务使用相同的POW模块228。因为所有的任务都是相等的,所以POW支持多个组。在一个实施方案中,POW模块支持16个不同的组。组提供在不同的内核上执行不同功能的装置,即使所有的内核都共享相同的POW模块228。例如,通过限定内核将从其中接收任务的组,使第一组执行任务的第一阶段,下一组执行任务的下一阶段,从而使数据包处理可以从一组内核转到另一组上。组允许每个内核明确它将接收的任务的类型,允许POW模块228可以动态的将任务分配给可用的内核。
处理器内核202请求来自POW模块228的任务。典型地,内核调查POW模块来寻找任务。然后,在某些情况下,当POW模块中有用于内核的任务时,它可以被选择来中断内核。POW模块228选择,就是说,基于内核将从其中接收任务的组来为内核调度任务。POW模块228每个核都有POW内核组屏蔽寄存器。每组屏蔽寄存器都是按位屏蔽,一组一位,允许内核指定它将从其中接收任务的组的结合。
如果内核不接收和任务相关的组,POW模块228不为内核调度一个任务。内核组屏蔽寄存器的0值阻止了内核接收任何新任务。在一个16组的实施方案中,组屏蔽寄存器在屏蔽寄存器中有16个屏蔽位,一组一位。位位置中的“1”设置了在相应组中内核的从属关系。
图6示出通过POW模块228的任务的状态。任务通过多个输入入口604中的一个进入POW模块228,并被POW入口500识别,该POW入口500可以被存储在L2高速缓冲存储器/DRAM中,或POW模块中。任务由输入队列604中的POW入口606的表单POW模块来调度以响应来自内核的GET_WORK指令。
通过将POW模块中POW入口从输入队列604移动到传输的队列,任务被调度。传输的队列是根据存储在POW入口500内的标识符/类型数值来选择的。16个内核,由16个POW入口所识别的任务并行地被调度,每个内核一个。在任务由POW模块初始化调度成为传输的队列后,通过内核执行标识符转换操作,被调度的任务608可以在传输的队列之间移动。
被调度的任务可以被内核分离调度(de-scheduled)。被分离调度的任务610保持在传输的队列里,稍后将被POW模块重新调度成内核中的一个。未调度的任务(来自于各自的POW模块)可以由内核通过标识符转换612将标识符的类型由空改为有序的或是原子的来进行调度。
图7是POW模块228中各种不同表单中的POW入口500的框图。POW入口500在输入队列704a-c或传输的队列706a-c中被排队。POW入口500还可以在自由表单702中或与内核202相关联。
任务进入POW模块通过输入队列704a-c。在所示的实施方案中,示出了三个输入队列704a-c。每个输入队列704a-c包括指向POW入口表单的输入头和尾指针712、指向存储在存储器710中的任务队列入口708的表单的输入队列存储器的头和尾指针714,存储器710在POW模块228外部。
虽然POW入口500的数量是有限的,但是POW模块228有无限的任务队列。如果POW入口500无法在自由表单702下使用,POW模块228通过用输入队列存储器头和尾指针(存储器表单)714来添加任务来将任务加入到输入队列。如果POW模块通过任务队列入口708添加任务,稍后,一旦POW入口500成为可用的时候,POW模块将自动地将任务从存储器710移到POW入口500内,和直接添加在输入队列704a-c的任务一起按次序排列。
两个POW入口500在第一输入队列704a里和指向第一输入队列的头部上的POW入口的输入队列头指针712里。第一输入队列被存储在存储器中的任务队列入口708扩展。输入队列存储器头指针714指向任务队列入口708。第二输入队列504b是空的;就是说没有POW入口。在第三输入队列504c中有一个POW入口500。
在自由表单702中的POW入口500可以分配给任何一个输入队列704a-c。如果POW入口500在自由表单702上是有效的,POW模块228为输入队列704a-c分配来自自由表单702的POW入口500,并将标识符数值、标识符类型和与任务队列入口相关的组存储在分配的POW入口中。存储在存储器710中的指向任务队列入口(WQP)400的指针也存储在POW入口500中。通过把POW入口放在自由表单702上,使POW入口自由。
内核202从POW模块228请求任务,POW模块228调度在输入队列704a-c中POW入口所识别的任务给提出请求的内核。一旦接到来自内核中一个提出的任务请求时,POW模块调度在输入队列704a-c的一个中的POW入口500中的一个。被调度的POW入口500是基于存储在POW入口500的组字段508中的组识别符和用于内核716的内核组屏蔽寄存器是识别的请求内核所支持的组。POW入口通过将它移到传输的表单706a-c中来进行调度。传输的表单的选择是基于标识符/类型数数值进行的,标识符/类型数值存储在POW入口500中的标识符数值字段504和标识符类型字段506中的。由处在传输表单(队列)706a-c中的POW入口所识别的任务被称为“传输”的任务。
POW模块包括很多品质的服务特征从不同地区分输入队列的优先次序,并保持任务平稳地通过单元。一个服务特征的品质是阈值,用来限制由单独的输入队列704a-c所使用的POW入口的数量。每个输入队列704a-c有一个相关的最大数量的POW入口。当POW入口的最大数值达到时,输入队列704a-c通过使用任务进行队列708来扩展。每一个输入队列也都有最小数量的自由POW入口。当有效的POW入口的数值小于最小值时,没有POW入口分配给输入队列。
另一个服务特征品质是控制输入队列往返移动的机制。当POW模块搜索新任务为内核202调度时,它并行的越过所有的输入队列704a-c。搜索是按环进行。在一个实施方案中,POW模块使用的32环通过配置环字段来进行配置。在另一有8个输入队列的实施方案中,每个配置的环是8位位屏蔽,表示可以参与到环中的输入队列。输入队列的优先权取决于它可以参与的环的数量。例如,拥有最高优先权的输入队列参与所有的32个环,最低优先权的输入队列参与32个环中的一个。因此,假设每个队列都有可调度的项目,一个项目从低优先级输入队列中被调度,用于在最高优先权的队列中调度的32个项目的每一个。
为了将任务调度到内核,POW模块228首先扫描在分离调度的表单610上面的分离调度的任务。之后,POW模块扫描开始于当前环和当前输入队列的输入队列。参与到当前环中的遗留下的队列首先为了任务而被连续的扫描。环被循环地扫描。每个输入队列都按次序被扫描的,不同的输入队列按照环配置所指示的顺序被扫描。当POW模块从输入队列中找到可调度的任务时,它将任务发送给内核,根据标识符将任务移到传输的队列中,更新当前队列/环,这样一来,下次任务请求就从连续的跟在上次可调度的任务被发现的位置后面的队列/环开始。
从概念上讲,POW入口这样被构成:按先进先出(FIFO)秩序在传输的队列中,带有与每一个唯一的标识符和标识符类型数值组合相关联的传输的队列706a-c。传输队列中的POW入口有两个标识符类型中的一个(原子的或有序的)。在某些情况下,当任务有未决的标识符转换时,POW模块可以将任务从有序的表单不按顺序地移动到空标识符类型。
在任何给定时间,只有一个任务可以被调度给特定的内核202。因此,可以调度的任务的数量被限制为内核的数量。在一个实施方案中,有16个处理器的内核202允许16个任务被调度。
与内核202结合的POW模块228使用存储在POW入口500中的标识符/类型数值对相关的任务进行排序和同步化,并允许不相关的任务不被排序和不被同步化。这样就允许有效的多核执行。当两个任务共享相同的标识符数值和标识符类型时,这两个任务是相关的,并且被排序和同步化。当两个任务有不同的标识符和标识符类型值时,被POW入口识别的两个任务可以并行的在不同的内核202上执行。
图7示出了带有存储在FIFO顺序中的POW入口三个传输的表单706a-c。当POW模块228或者调度来自输入队列704a-c的任务,或者重新调度分离调度的任务时,任务进入传输的表单706a-c。只有带有原子化和次序化标识符类型的POW入口才被存储在传输队列706a-c中。在图7所举的例子中,数据包的POW入口带有标识符“O7”,即,标识符识别符7和有序的标识符类型(O)被存储在传输的表单706中。带有标识符“A5”的POW入口,即,标识符识别符5和原子化标识符类型(A)在传输的表单706b中。带有标识符“A7”的POW入口,即,标识符识别符7和原子化的标识符类型(A)被存储在传输的表单“A7”中。
输入队列中的POW入口500或任务队列入口708存储分配给任务的初始标识符数值。根据任务的创造者,初始标识符数值由数据包输入单元214或内核202进行赋值。一个任务的标识符值504和标识符类型506可以通过内核执行的标识符转换命令进行转换。
由于在传输的表单中的POW入口识别的传输的任务在不同处理阶段处理,所以内核可以通过改变标识符和标识符类型来执行标识符转换。标识符转换可以导致POW入口从一个传输的队列移到另一个传输的队列,或导致传输的任务被分离调度或完成。标识符转换将在稍后结合图8来介绍。
POW模块在标识符转换过程中保持有序的。任何执行相同系列标识符转换的传输的任务,每一个具有相同的标识符/类型数值的传输的任务在传输时经过每一次标识符转换都是相同的有序的。如果以下情况为真,POW模块可以整理流动中所有的数据包:(1)所有来自相同流的数据包,通过具有相同初始标识符数值和组的相同输入队列进入POW模块;(2)来自同样流的数据包被相同非空(有序的或原子的)标识符转换序列处理。
POW模块228将由任务队列入口708识别的任务保持在以每个队列基础上有序的输入队列704a-c中。输入队列704a-c中的POW入口500所识别的任务可以不按次序被调度。当POW模块调度程序搜索可调度的任务时,POW模块调度程序跳过不能被理解调度的输入队列704a-c的POW入口500。POW模块不跳过被POW入口用有序的或空的标识符类型所识别的过去的任务。因此,POW模块调度在输入队列顺序里有这些标识符类型和相同组识别符的任务。POW模块跳过由具有不能被立即调度的原子标识符类型和标识符数值的POW入口标识的任务,所以只有保证由POW入口识别的任务的标识符顺序在具有相同组的原子类型的输入任务中。POW模块跳过不是在预计的组中的输入任务队列中的POW入口所识别的任务,所以没有排序在具有不同组识别符的输入队列入口中的POW入口之间被暗示。
在任务被调度后,任务的传输和次序都是基于标识符和标识符类型值的。传输的任务的调度次序不取决于与任务有关的组识别符。被调度的任务是POW模块“传输中”的任务的一个子集。标识符值为原子或次序的任务,在完成标识符转换后保持调度安排。内核可以对传输的任务进行分离调度,POW模块可以稍后对这个任务再次调度。传输中的任务同样也包括被内核分离调度的任务。分离调度的任务保持在传输,并在稍后被再次调度,但是不是当前正被内核执行着的。任务的分离调度可以通过传递一个任务从一组到另一组用来实现“任务流水化”。它还可以被用来避免让大的同步延迟的任务消耗内核,可以使任务成为可中断的。被分离调度的任务被分配一个空标识符类型。POW模块以比它调度来自输入队列中新的任务的优先级要高的优先级上重新调度安排之前被分离调度安排的任务。
组识别符被用来确定传输的任务被分离调度的内核可以重新被调度。POW模块不强迫任何次序,也不同步化使用不同标识符数值或不同标识符类型数值的传输的任务。这个传输的任务自由地并行执行。
FIFO顺序执行所有有序化和同步化约束。对于具有有序的标识符类型的任务,FIFO顺序指明了任务的次序。具有有序标识符数值类型的任何POW入口都可以被执行,但是只有在表单头的POW入口才可以离开传输中的表单。传输中的队列706a是有序的,因此三个任务的每一个都成功的被转换为有序标识符。传输中的队列706a的头不能有未决的转换,但是保留的任务可以有未决的到不同的有序的或原子标识符类型的转换。如果不是在传输表单的头部的任务有未决的移动,例如,基于未决的有序的或原子的标识符转换,转移只有在头移动时才能发生。
对于有原子标识符类型的任务,FIFO指明了任务将被转换为原子类型的顺序。原子传输表单的头只是已经成功转换成原子标识符类型的任务。因此,只有具有原子标识符数值类型的POW入口表单的头才可以在任何时间被执行。在A7传输队列中,到A7的转换对于传输队列中头入口来说是完成的,但是对于POW入口所识别的其他任务来说转换就是未决的。任何原子传输队列中都没有任务可以有到不同标识符的未决的标识符转换。
在任何有序的或原子的标识符转换期间,POW模块将指向一个传输的队列的头部的POW入口的指针移动到另一个传输队列的尾部。指针的移动完成了到有序标识符类型的转换,但是,对于原子标识符类型,在POW入口到达传输队列头部之前,转换是没有完成的。因此,在传输队列头部的POW入口所识别的任务不可能有未决的转换,否则POW模块会立即执行转换所需要的移动。A5传输队列中只有一个POW入口,因此,不会有未决的标识符转换。POW入口所识别的一个任务保持原子的标识符。
内核可以被调度成传输中的任务或没有调度的任务。图7示出了五个内核。内核0有附着的POW入口,但是这个入口是没有被调度的。内核1是无调度的,就是说它没有附加的POW。内核2,内核3,内核4被调度成传输中的任务。内核2当前正处在有序的状态,或者可以有一个未决的到其他状态的转换。内核3有到原子状态的未决的转换。内核4处在有序的状态,没有未决的转换。
为响应来自内核对任务的请求,POW模块还可以将分离调度的任务调度给内核以相应对任务的请求。分离调度的任务具有比任务队列里的优先级要高的优先级。POW模块不调度有未决任务转换的分离调度的任务,不调度在有原子标识符类型的输入队列中的POW入口,除非它可以立即有这个标识符。因此,POW模块仅仅在它可以推进向前进程时才调度任务。具有空标识符类型的输入队列中的POW入口立即被分离调度。
如在结合图6所讨论的,当没有调度的内核(从各自的POW模块)执行标识符转换时,任务仍然进入POW模块。以这种形式进入POW模块的任务立刻就被调度。在它被调度后,这个任务无法与其他被调度的任务相区分。
POW模块在将否则成为空闲的循环期间可以为所有的内核预取任务。因此得到任务的这种处理可以在最小的延迟内完成,排除了将任务从单元中移进和移出的总线争抢。然而,与内核相关的组屏蔽的改变和标识符转换操作使提前读取无效。
图8是与内核、POW模块和IO网桥相耦合的专用标识符转换总线的示意框图。标识符转换操作包括请求和完成:(1)内核将新标识符传送给POW模块;(2)POW模块向内核指示出标识符转换的成功完成。内核主要通过输入/输出(I/O)存储机制转换新的标识符。标识符转换操作是从内核执行I/O存储指令以在内核里设定未决标识符转换位开始的。在一个实施方案中,标识符转换的存储包括存储在操作码字段中的操作码,存储在存储器数据部分的标识符。这一存储进入内核202的写缓冲器,被一致性存储总线234反映,通过IO网桥(IOB)/FAU 232发送,到达IO总线304,进入POW模块228。
每个内核都有各自的未决转换位800。来自每个内核一份未决转换位802被存储在IOB/FAU 232中。另外,POW模块存储未决转换的状态。当内核通过执行存储指令给位POW模块所指定的OP空间物理地址来开始转换操作时,位于内核内部的未决转换位被设置。当适当的子集在地址中被使用时,例如,地址位<42:40>,与内核相应的未决转换位在内核内被设置。当遵循同一存储指令时,FAU也为内核设定未决转换位。FAU用未决转换位来推迟选择的请求,直到转换完成后。内核最多可以有一个没有完成的标识符转换,所有仅需要有一个未决转换位。
一旦收到来自内核202的标识符转换请求,POW模块228改变在POW入口500中的标识符数值和/或标识符类型,依据标识符和标识符类型移动POW入口500到另一个传输表单706a-c,在专用的标识符转换总线804上提供标识符转换完成的标识。POW模块的标识符转换的完成清除了各自内核和FAU中未决标识符转换位800。标识符转换操作有分开的转换请求和转换完成等待操作。当任务的要求的有序性和原子性吻合时,POW模块完成要求的标识符数值转换。分开的转换操作允许内核基于转换请求而重叠延迟,并在标识符转换未决时分离调度任务,借此避免了长的同步化延迟。
标识符转换的完成在专用转换总线804上被发送。在一个实施方案中,转换总线804有5位,5位中的4位是用来选择被编址的具体的内核(16个中的一个),另一个位(有效位)被用来指示转换在给定循环里是否有效。当POW模块成功的完成标识符转换操作后,它为内核清除掉未决转换状态,在转换总线804上的4个位上对内核ID编码,然后通过设置有效位使其生效。内核和IOB/FAU都检测转换总线804,并当POW模块示出标识符转换成功时,内核和IOB/FAU清除被内核ID选中的内核的未决转换位800。
专用的转换总线804将完成标识符转换所需的一致性I/O总线的带宽最小化,仅需要5根线(位/信号)。带宽被最小化,因为由于每个内核仅需要考虑它当地的未决转换位800的值,所以内核可以在当地轮询所有完成的标识符转换。有效的轮询是非常重要的,因为有效的分离调度需要轮询。这也允许IOB/FAU操作被延迟直到标识符转换完成。这对于很多应用来说都是很重要的。这也最小化了完成转换的延迟。
标识符转换是最高优先级,可用最小延迟来完成,包括总线争用转移POW模块请求,如果没有同步化/有序化冲突。
POW模块同步化支持是非常灵活的,可以被用在很多不同方面。一个同步化具体应用将在下面表1所示的防火墙/虚拟专用网(VPN)数据包处理中介绍。这个具体应用例假设每个数据包的处理可以被分成六个应用阶段:(1)碎片整理,(2)IPSec解码,(3)查找,(4)处理,(5)IPSec加密,(6)输出队列。实施例假设应用的是网络协议(IP)版本4。然而,本领域内的普通技术人员很容易就可以修改成6版。
  阶段   标识符类型   标识符数值(阶段ID/阶段标识符)
  碎片整理   有序的   {0,散列(IPSrc,IPdest)}
  EPSec-D   原子的   {1,IPSEC SPI/SPA}
  查找   原子的   {2,散列(IPsrc,IPdest,IPprot,IPsrcport,IPdestport)}
  处理   有序的   {3,散列(IPSrc,Ipdest,IPport,IPsrcport,IPdestport)}
  IPSec-E   原子的   {4,IPSEC SPI/SPA}
  输出队列   原子的   {5,Output Queue Index}
表一
在碎片整理阶段,IP输入数据包被碎片整理。普通技术人员所熟知的,由于网络可以传输的IP数据包尺寸的限制,大的IP数据包的数据字段是分段的,并且这些碎片以一系列小的IP数据包形式发送。在每个碎片头部中传送的碎片偏移字段被用来对碎片进行再次排序。IPSec解码阶段对数据包进行IPSec解码。查找阶段查找数据流记录并更新状态。处理阶段对需要在发送数据包前执行的操作进行处理。例如,数据包可以需要网络地址翻译(NAT)或TCP序列号调整。IPSec解码阶段对数据包执行IPSec解码操作。输出阶段将数据包放到将从处理器中输出的输出队列中。
每个应用阶段都分配了一个阶段识别符(0-5)。分配给各个阶段的标识符值504包括分配的阶段识别符和阶段标识符。通过允许具有相同流动识别符和标识识别符的数据包与处于不同阶段的其他数据包一起在不同的内核上同时执行,阶段识别符允许不同的处理阶段平行的在流水线方式下执行。在同一数据流里的多数据包,如果它们有不同的阶段标识符值,它们也可以在同一流里在不同的内核上自由的执行。
不同阶段识别符也保证了在相同流(和相同方向)里所有数据包的处理次序。目标是展示出POW模块不同的标识符值,以实现尽可能多的任务并行,同时也保证了对关键数据结构的存取也是适当同步化的。
一般来说,阶段标识符是散列结构,使用数据包头部的一系列字段来尽可能多的区分数据流,已至来自同一数据流的两个数据包产生同样的散列值。阶段标识符可以是关键数据结构的索引,或是散列结果和索引的结合。
参照表1,碎片整理阶段有一个有序的标识符类型506,标识识别符504包括阶段识别符0和阶段标识符,阶段标识符来自于包括在数据包中的IP来源地址和IP目标地址上执行的散列函数的结果。输入数据包在碎片整理阶段被碎片整理。所有的输入数据包进入到这个阶段,一些数据包被分段,少数被整理了的碎片的数据包离开这个阶段。在相同流里进入的任何数据包,碎片的或不是碎片的,对于IP源头和IP目标地址字段都有同样的值,而且相同的阶段标识符,所以它们都是有序的。来自相同流的未被碎片整理的和分离碎片整理的数据包有序地浸入下一阶段。
进入这一阶段并且没有离开的碎片转换成空标识符类型,并且在任何其他阶段都不被处理。当最后一个碎片创建完整的分离碎片的数据包,分离碎片的数据包在随后的阶段被处理,其代替了输入碎片,所以分离碎片整理的数据包呈现的输入碎片的任务顺序。这给了分离碎片整理的数据包理想的次序;就好像最后一个输入碎片一出现,它就出现了一样,即使被需要用来从多个输入碎片中创建分离碎片整理数据包的软件处理时间可能会很大。
IPSec解码阶段对需要它的数据包执行IPSec解码。如果不需要,这一阶段就被跳过。标识符类型是原子,阶段识别符是“1”,阶段标识符来源于AH和ESP协议中执行的安全参数标志(SPI)和安全性关联(SA)。IPSec包括分开的包括鉴别标题(AH)、安全有效负荷(ESP)、IP负荷压缩(Ipcomp)和网络关键交换(IKE)的协议。IPSec是因特网网络工作小组(IETF)在请求说明(RFC)2401中定义的标准,见网址www.ietf.org/rfc/rfc2401.txt
一般来说,IPSec处理要求在使用相同IPSec通道(例如,数据结构,像反重复窗口)的不同的数据包之间是同步的。反重复窗口是一个32位的计数器,用来确定入站的AH或EH数据包是否是再播放(replay)。这一结构具体指明了单个原子标识符,这一标识符覆盖了整个数据包解码的IPSec安全相关(SA)协议。阶段标识符值独一无二地限定SA,所以在入站标识符转换完成后,内核可以自由的访问通道数据结构,直到下一个标识符转换。
所有来自相同数据流的数据包拥有相同的IPSec SPI/SA值,因此在它们离开这个阶段时保持有序性。来自使用相同通道的其它流的数据包串行通过这一阶段,并会按次序离开,但是在下一阶段它们将会有不同的标识符,所以在进入下一阶段时它们是无序的。
查找阶段查找流动(由5个元组构成的)的记录和更新状态。所示的实施例假设记录状态(stateful)防火墙。防火墙组织网络中的计算机直接与网络外部的计算机相通讯。相反,所有的通讯都是通过代理服务器进行的,代理服务器来决定是否安全让某个具体的信息或文件通过网络。记录状态防火墙保持网络连接的轨迹,例如流经它的TCP流。在流的第一数据包中,捷径流记录不存在,所以流必须有效和被存储等待下一个数据包。这一阶段的阶段标识符选择了具体的散列表元(bucket)。因此,原子的标识符序列进入表元,散列数据结构没有更进一步的同步化的要求。在来自流的前面的数据包已经更新高速缓冲存储器状态之前,没有来自流的数据包会遵守(或更改)流的状态。
这种高速缓存结构与处理后续的数据包的时间相比会花费较长的时间来进行初始确认和存储流动状态。因此,一些数据包在查找成功前,需要等待确认的完成。对于一些协议,如TCP,在同一个流里,上面这种情况是不会发生的,但是对于其他协议或来自不同的流的数据包,长时间的等待还是可能的,就是说,很不幸,冲突在同一个散列表元里发生。POW模块提供的分离调度操作可以被用在这种长时间等待的情况下。当前任务可以被分离调度,别的任务被执行,当原子标识符有效时,POW模块可以重新调度任务。
处理阶段对数据包进行处理,在数据包被发送之前这是必需的。例如,数据包可能需要网络地址翻译(NAT)或TCP序列号调整。NAT翻译,是企业网或其他专用网(称为子域)IP地址与互联网IP地址之间的转换。处理阶段使用有序标识符类型,带有散列流识别符来做阶段标识符。这尽可能精确的使同一流的数据包按顺序离开这一阶段。数据包可以在查找阶段或处理阶段被遗漏,不执行任何更高阶段的任务。
IPSec解码阶段,对需要的数据包进行IPSec解码。如果不需要,这一阶段就被跳过。标识符的使用类似于IPSec解码阶段。
输出阶段将数据包放到输出队列上,从处理器输出。标识符类型是原子的,进入同步化关键数据结构所要求的。阶段标识符校验精确的输出队列,所以仅参照使用同一输出队列的被序列化。例如QOS计算,  随机早期检查(RED)可以在这一阶段被执行,根据输出队列的大小,来断定是否丢失数据包。
标识符转换操作限定从一个阶段到下一个阶段的转变。PIP/IPD单元为数据包生成初始标识符,就是碎片整理阶段。标识符是有序的,标识符值有阶段标识id=0,阶段标识符=散列(IPsrc,IPdest)。POW模块调度带有初始标识符的任务。POW模块中最后一个转换(标识符类型空,将任务从POW模块移走),是调度下一数据包任务的一部分。因此,没有加密/解码阶段,处理IPSec数据包仅要求三个标识符转换。因为每个阶段都有独一无二的标识符值,不同的流可以被多核并行处理。
虽然本发明已经对关于其优选的实施方案进行了具体的描述和介绍,但本领域技术人员应当理解,在不脱离本发明所附权利要求保护的范围的情况下,本发明在形式和细节上可以进行多种改变。

Claims (31)

1.一种用于网络服务的处理器,该处理器包括:
多个独立的处理器内核,每个处理器内核并行操作处理任务;
任务排序模块,包括存储待被处理器内核执行的任务的输入队列,该任务排序模块基于与任务相关联的标识符动态地调度任务以被处理器并行处理,所述的标识符限定了待被执行的处理操作的类型,任务排序模块进一步包括多个传输的表单,其中每一个表单都与各自的标识符相关联以追踪与各自的标识符相关联的传输的任务,任务排序模块根据与任务相关联的标识符将存储在输入队列中的任务调度给传输的表单,以致任务的执行是有序的和同步的。
2.如权利要求1中所述的处理器,其中任务排序模块进一步包括:
用于每个处理器内核的组识别符,组识别符为组标明哪个处理器会接收任务,任务排序模块以组来区分输入队列上的任务,以致任务被调度到从组中接收任务的处理器内核中。
3.如权利要求1中所述的处理器,其中输入队列中的任务可以被存储在任务排序模块或任务排序模块的外部存储器中。
4.如权利要求1中所述的处理器,进一步包括:
计时器,该计时器用来控制何时任务被加入到输入队列中。
5.如权利要求3中所述的处理器,其中标识符包括标识符类型,以及传输的表单存储具有原子标识符类型的任务,原子标识符类型表明只有在表单头部的任务可以被多个处理器内核的其中之一来执行。
6.如权利要求3中所述的处理器,其中标识符包括标识符类型,以及传输的表单存储具有有序标识符类型的任务,其中有序标识符类型表明表单里的所有任务都是可执行的,任务只有从表单头部才可以被多个处理器内核的其中之一移除。
7.如权利要求1中所述的处理器,进一步包括:
在处理器内核和任务排序模块之间连接的专用的标识符转换总线,其用于传输表明由数据包任务排序模块所进行的标识符转换操作完成的指示。
8.如权利要求7中所述的处理器,其中内核通过执行存储指令和一旦检测到存储指令来启动标识符转换操作,数据包任务排序模块更改标识符,并将任务移到与更改的标识符相关联的传输的队列中。
9.如权利要求1中所述的处理器,其中任务是执行IPSec解码。
10.如权利要求1中所述的处理器,其中任务是执行IPSec加密。
11.如权利要求1中所述的处理器,其中任务是对虚拟专用网数据包进行碎片整理。
12.如权利要求1中所述的处理器,其中任务是调整TCP序列号。
13.如权利要求1中所述的处理器,其中每个输入队列都有被分配的优先级。
14.如权利要求1中所述的处理器,其中每个输入队列都被指定存储一类任务。
15.如权利要求1中所述的处理器,其中处理器内核中的至少一个执行控制平面操作,处理器内核的另一个执行数据平面操作。
16.一种处理用于网络服务的处理器中数据包的方法,该方法包括:
通过多个独立的处理器内核并行处理任务;以及
基于与任务相关联的标识符动态地将存储在输入队列中的任务调度给让处理器并行执行,所述的标识符限定了待被执行的处理操作的类型、调度给多个传输的表单中一个的任务,多个传输的表单的每一个都与各自的标识符相关联以根据与任务相关联的标识符来追踪与各自的标识符相关联的传输的任务,以致任务的执行是有序和同步的。
17.如权利要求16所述的方法,进一步包括:
按组区分输入队列中的任务,以致任务被调度到从组中接收任务的处理器内核中,组识别符为组指明哪个处理器内核将要接收任务。
18.如权利要求16所述的方法,其中输入队列中的任务可以被存储在任务排序模块或任务排序模块的外部存储器中。
19.如权利要求16所述的方法,进一步包括:
由计时器控制何时任务加入到输入队列中。
20.如权利要求16所述的方法,其中标识符包括标识符类型,以及传输的表单存储具有原子标识符类型的任务,原子标识符表明只有在表单头部的任务才可以被多个处理器内核的其中之一执行。
21.如权利要求16所述的方法,其中标识符包括标识符类型,以及传输的表单存储具有有序标识符类型的任务,有序标识符表明表单里的所有任务都是可执行的,任务只有从表单头部才可以被多个处理器中的其中之一移除。
22.如权利要求16所述的方法,进一步包括:
在专用的标识符转换总线上通过数据包任务排序模块传输标识符转换操作完成的指示,所述专用的标识符转换总线被连接在处理器内核和任务排序模块之间。
23.如权利要求22所述的方法,进一步包括:
通过执行存储指令启动标识符转换操作;以及
一旦检测到存储指令,更改标识符并将任务移到与更改的标识符相关联的传输的队列中。
24.如权利要求16所述的方法,其中任务是执行IPSec解码。
25.如权利要求16所述的方法,其中任务是执行IPSec加密。
26.如权利要求16所述的方法,其中任务是对虚拟专用网数据包进行碎片整理。
27.如权利要求16所述的方法,其中任务是调整TCP序列号。
28.如权利要求16所述的方法,其中每个输入队列都被分配优先级。
29.如权利要求16所述的方法,其中每个输入队列都被指定存储一类任务。
30.如权利要求16所述的方法,其中处理器内核中的至少一个执行控制平面操作,处理器内核的另一个执行数据平面操作。
31.一种网络服务处理器中用来处理数据包的装置,该装置包括:
用于并行处理任务的设备;以及
基于与任务相关联的标识符用于动态将存储在输入队列中的任务调度成并行执行的设备,所述的标识符限定了待被执行的处理操作的类型,任务被调度给多个传输的表单中的一个,每一个传输的表单都与各自的标识符相关联用以根据与任务相关联的标识符追踪与各自标识符相关联的传输的任务,以致任务的执行是有序和同步的。
CN2005800346009A 2004-09-10 2005-09-01 一种网络服务处理器以及处理数据包的装置和方法 Active CN101069170B (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
US11/005,490 US7895431B2 (en) 2004-09-10 2004-12-06 Packet queuing, scheduling and ordering
US11/005,490 2004-12-06
PCT/US2005/031219 WO2006031459A1 (en) 2004-09-10 2005-09-01 Packet queuing, scheduling and ordering

Publications (2)

Publication Number Publication Date
CN101069170A CN101069170A (zh) 2007-11-07
CN101069170B true CN101069170B (zh) 2012-02-08

Family

ID=38731731

Family Applications (5)

Application Number Title Priority Date Filing Date
CN2005800334834A Expired - Fee Related CN101036117B (zh) 2004-09-10 2005-09-01 低延时存储器的直接存取
CNB2005800346066A Expired - Fee Related CN100533372C (zh) 2004-09-10 2005-09-01 用于多核处理器的存储指令排序
CN2005800346009A Active CN101069170B (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 (2)

Application Number Title Priority Date Filing Date
CN2005800334834A Expired - Fee Related CN101036117B (zh) 2004-09-10 2005-09-01 低延时存储器的直接存取
CNB2005800346066A Expired - Fee Related CN100533372C (zh) 2004-09-10 2005-09-01 用于多核处理器的存储指令排序

Family Applications After (2)

Application Number Title Priority Date Filing Date
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 在低延时存储器中数据结构的选择性复制

Country Status (2)

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

Families Citing this family (209)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008512786A (ja) * 2004-09-10 2008-04-24 カビウム・ネットワークス データ構造の選択的複製方法および装置
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
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
US7813277B2 (en) * 2007-06-29 2010-10-12 Packeteer, Inc. Lockless bandwidth management for multiprocessor networking devices
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US8279885B2 (en) * 2007-09-25 2012-10-02 Packeteer, Inc. Lockless processing of command operations in multiprocessor systems
US9419867B2 (en) * 2007-03-30 2016-08-16 Blue Coat Systems, Inc. Data and control plane architecture for network application traffic management device
US8059532B2 (en) * 2007-06-21 2011-11-15 Packeteer, Inc. Data and control plane architecture including server-side triggered flow policy mechanism
US8799547B2 (en) * 2007-07-09 2014-08-05 Hewlett-Packard Development Company, L.P. Data packet processing method for a multi core processor
US8286246B2 (en) * 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US8079084B1 (en) 2007-08-10 2011-12-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
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 富士通株式会社 並列計算装置、並列計算方法、および並列計算プログラム
US8934341B2 (en) * 2009-12-04 2015-01-13 Napatech A/S 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
WO2012087894A2 (en) * 2010-12-22 2012-06-28 Intel Corporation Debugging complex multi-core and multi-socket systems
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
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
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
US8914650B2 (en) 2011-09-28 2014-12-16 Intel Corporation Dynamically adjusting power of non-core processor circuitry including buffer circuitry
US8898244B2 (en) * 2011-10-20 2014-11-25 Allen Miglore System and method for transporting files between networked or connected systems and devices
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
US8850125B2 (en) 2011-10-25 2014-09-30 Cavium, Inc. System and method to provide non-coherent access to a coherent memory system
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
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
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.
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
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
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
US9098261B2 (en) 2011-12-15 2015-08-04 Intel Corporation User level control of power management policies
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
CN104185837B (zh) * 2011-12-23 2017-10-13 英特尔公司 在不同的粒度等级下广播数据值的指令执行单元
CN104169832B (zh) 2012-03-13 2017-04-19 英特尔公司 提供处理器的能源高效的超频操作
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
US9323316B2 (en) 2012-03-13 2016-04-26 Intel Corporation Dynamically controlling interconnect frequency in a processor
US9547027B2 (en) 2012-03-30 2017-01-17 Intel Corporation Dynamically measuring power consumption in a processor
WO2013162589A1 (en) 2012-04-27 2013-10-31 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
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
US9063727B2 (en) 2012-08-31 2015-06-23 Intel Corporation Performing cross-domain thermal control in a processor
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
US9081577B2 (en) 2012-12-28 2015-07-14 Intel Corporation Independent control of processor core retention states
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
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
US9471088B2 (en) 2013-06-25 2016-10-18 Intel Corporation Restricting clock signal delivery in a processor
US9348401B2 (en) 2013-06-25 2016-05-24 Intel Corporation Mapping a performance request to an operating frequency 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
US9507563B2 (en) 2013-08-30 2016-11-29 Cavium, Inc. System and method to traverse a non-deterministic finite automata (NFA) graph generated 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
US10592459B2 (en) 2014-03-07 2020-03-17 Cavium, Llc Method and system for ordering I/O access in a multi-node environment
US9529532B2 (en) 2014-03-07 2016-12-27 Cavium, Inc. Method and apparatus for memory allocation in a multi-node system
US9372800B2 (en) 2014-03-07 2016-06-21 Cavium, Inc. Inter-chip interconnect protocol for a multi-chip system
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
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
US10110558B2 (en) 2014-04-14 2018-10-23 Cavium, Inc. Processing of finite automata based on memory hierarchy
US10002326B2 (en) 2014-04-14 2018-06-19 Cavium, Inc. Compilation of finite automata based on memory hierarchy
US8947817B1 (en) 2014-04-28 2015-02-03 Seagate Technology Llc Storage system with media scratch pad
US9443553B2 (en) 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US10417149B2 (en) 2014-06-06 2019-09-17 Intel Corporation Self-aligning a processor duty cycle with interrupts
US9760158B2 (en) 2014-06-06 2017-09-12 Intel Corporation Forcing a processor into a low power state
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
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
US9710043B2 (en) 2014-11-26 2017-07-18 Intel Corporation Controlling a guaranteed frequency 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
US10234930B2 (en) 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US9910481B2 (en) 2015-02-13 2018-03-06 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
CN105224454B (zh) * 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136B (zh) * 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
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
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
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
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
WO2019040054A1 (en) 2017-08-23 2019-02-28 Intel Corporation SYSTEM, APPARATUS, AND METHOD FOR ADAPTIVE OPERATING VOLTAGE IN A USER-PROGRAMMED (FPGA) PREDIFFUSED NETWORK
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
US11243883B2 (en) * 2019-05-24 2022-02-08 Texas Instruments Incorporated Cache coherence shared state suppression
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CN1437816A (zh) * 1999-12-29 2003-08-20 英特尔公司 用于多线程数据包处理的千兆位数据包分配的方法和设备

Family Cites Families (106)

* 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
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
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
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
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
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
WO1997027539A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Methods and apparatuses for stack caching
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
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
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems
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
JP2002358782A (ja) * 2001-05-31 2002-12-13 Nec Corp 半導体記憶装置
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
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6944731B2 (en) * 2001-12-19 2005-09-13 Agere Systems Inc. Dynamic random access memory system with bank conflict avoidance feature
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
JP2008512786A (ja) 2004-09-10 2008-04-24 カビウム・ネットワークス データ構造の選択的複製方法および装置
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CN1437816A (zh) * 1999-12-29 2003-08-20 英特尔公司 用于多线程数据包处理的千兆位数据包分配的方法和设备

Also Published As

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

Similar Documents

Publication Publication Date Title
CN101069170B (zh) 一种网络服务处理器以及处理数据包的装置和方法
EP1787212B1 (en) Packet queuing, scheduling and ordering
US7852846B2 (en) Method and apparatus for out-of-order processing of packets
US6628615B1 (en) Two level virtual channels
KR100883405B1 (ko) 공유된 속성들에 근거하여 압축된 큐 쌍으로부터 다중의가상 큐 쌍들을 생성하는 장치
US7609718B2 (en) Packet data service over hyper transport link(s)
EP1627314B1 (en) Packet combining on pci express
US7733890B1 (en) Network interface card resource mapping to virtual network interface cards
US7499470B2 (en) Sequence-preserving deep-packet processing in a multiprocessor system
US9143467B2 (en) Network interface controller with circular receive buffer
US9864633B2 (en) Network processor having multicasting protocol
US8756270B2 (en) Collective acceleration unit tree structure
CN105511954A (zh) 一种报文处理方法及装置
US20060174058A1 (en) Recirculation buffer for semantic processor
CN1946061B (zh) 一种快速处理报文的方法及装置
CN101227296A (zh) 一种pcie数据传输的方法、系统及板卡
US7124231B1 (en) Split transaction reordering circuit
US7979573B2 (en) Smart routing between peers in a point-to-point link based system
US7991917B1 (en) High performance packet processing using a general purpose processor
US8488489B2 (en) Scalable packet-switch
US20130110968A1 (en) Reducing latency in multicast traffic reception
US20050135397A1 (en) Buffer replenishing
US20030123387A1 (en) Device and method for filtering network traffic
JP5674179B1 (ja) 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法
US20020101876A1 (en) Head of line blockage avoidance system and method of operation thereof

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.