CN101069170A - 数据包队列、调度和排序 - Google Patents

数据包队列、调度和排序 Download PDF

Info

Publication number
CN101069170A
CN101069170A CNA2005800346009A CN200580034600A CN101069170A CN 101069170 A CN101069170 A CN 101069170A CN A2005800346009 A CNA2005800346009 A CN A2005800346009A CN 200580034600 A CN200580034600 A CN 200580034600A CN 101069170 A CN101069170 A CN 101069170A
Authority
CN
China
Prior art keywords
task
identifier
pow
processor
packet
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.)
Granted
Application number
CNA2005800346009A
Other languages
English (en)
Other versions
CN101069170B (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)。上层负责端到端的通信,下层负责本地通信。网络应用系统需要处理、过滤和交换L3到L7网络协议层,例如,L7网络协议层的超文本传输协议(HTTP)和简单邮件传输协议(SMTP),L4网络协议层的传输控制协议(TCP)。除处理网络协议层外,网络应用系统需要基于通过L4-L7网络协议层(包括防火墙,虚拟专用网(VPN),安全套接字协议层(SSL),入侵检测系统(IDS),互联网协议安全性(IPSec),线速的反病毒(AV)and反垃圾邮功能)的安全性来同时保证这些协议的访问和内容。
网络处理器可以提供高吞吐量的L2和L3层上的网络协议处理,也就是说,完成数据包的处理以便以线速度传输数据包。通常,处理L4-L7层网络协议的通用的处理器需要非常智能的处理能力。例如,传输控制协议(TCP)——L4的传输控制协议(TCP)需要一些加强计算的工作,包括计算信息包在整个有效载荷上的校验和,管理TCP片段缓冲器,和在一个连接中保持多计时器。虽然通用处理器可以完成所述加强计算的工作,但是它不能提供足以处理数据以致能够以线速转发的性能。
发明内容
一种网络服务处理器,包括数据包任务排序模块,这个遵循L4-L7层网络协议建立起的模块通过一个或多于一个的核心处理器来调度和排列数据包(数据包处理操作)。需要排序的任务被排入容量无限的输入队列里,这是通过允许输入队列扩充外部存储器以致即使在数据包任务排序模块没有新的任务可调度的情况下任务仍可加入输入队列来实现的。因此,即使在数据包处理程序忙碌的情况下,将新任务放入输入序列的操作也没有被延迟。数据在进入数据包处理模块前已经在外部存储器中排好顺序了。
数据包处理任务(总任务)通过特殊的数据包处理方式来实现,它包含多个数据包处理操作(多段任务)。每一段任务都有相关联的标识符。这些标识符允许任务被调度以致任务可以通过多个处理器内核并行操作,同时确保任务的执行是有序的和同步的。数据包处理操作的调度、排序允许数据被处理,这样数据就可以以线速传播,就是说以网络数据传输速率来传播。
依据本发明理论,一种用于调度、排序处理数据包的系统和方法提高了网络服务处理器的吞吐量。网络服务处理器包括多个独立的处理器和任务排序模块。每一个处理器都并行的执行任务。任务排序模块根据与任务相关的标识符动态的调度任务,使之在处理器中并行的执行,这样,任务就可以被有序的同步被执行了。
任务排序模块包括存储需要处理器处理任务的输入队列,和多个正在传输的表单。输入队列中的任务可以被存储在任务排序模块里,也可以被存储在任务排序模块的外部存储器里,所以任务队列是无限的队列。通过允许任务队列是无限序列,任务可以先存放在外部存储器里,之后在移存到数据包处理器的任务排序模块里,这里的任务是被优先处理的。任务包括,例如,IPSec加密,IPSec解密,碎片整理,虚拟专用网络数据包的合成,或者调整TCP的序列号。至少有一个处理器用来执行控制平台操作,另一个处理器执行数据平台操作。
每一个正在传输的表单都关联着一个与这个标单相关联的正在传输的任务的标识符。在输入队列里的任务被任务排序模块所调度。通过移动任务,任务被从输入序列里调到正在传输表单里。正在传输表单的选取是根据与这个任务相关联的标识符实现的。
任务指令模块也包括针对每一个处理器的一组校验码。成组的校验码在输入序列里以组的形式区分出了哪一组任务会被处理器接受,这样就实现了预先安排好处理器从组中接受的任务。
网络服务处理器也包括可以控制任务被添加到序列中的时间的计时器。标识符包括标识符的类别。正在传输的表单里存储的任务应当具有原子的标识符类型,只有在任务是表单中是首位的时候才被某个多元处理器处理。另一个正在传输表单可以存储具有序标识符类型,它存放的是所有可被执行的任务,任务只有在表单首位时才能被某个多元处理器移动。
为了减少标识符转换操作的延迟时间,即,更改与某标识符相关联的任务的操作,专用的标识符转换总线被连接在处理器和任务指令模块之间,用来显示标识符转换操作被数据包处理任务排序单元转换完成的信息。内核启动标识符转换操作通过存储指令,根据监视存储指令,分组任务排序模块更改标识符,并将任务移到与更该的标识符相关联的正在传输中队列中。
限定每个数据包处理操作是如何被执行的能力允许接受到数据包的上层网络以线速继续传输数据包。此外,扩展输入序列到外部存储器中的能力可以实现在网络服务处理器忙碌的时候任务有序排队。
附图说明
前面所描述的和本发明的其他目的,特征和优势将在下面更详细清晰的描述中具体的体现,如所附的图表所示,其中在各个附图中相同的数字表示相同的部件。这些附图不是严格按比例绘制,重点在于说明本项发明的原理。
图1是根据本发明的原理的包括网络服务处理器的安全设备的框图;
图2是图1所示的网络服务处理器的框图;
图3是图2中所示的网络服务处理器的数据包输入输出处理单元的示意图;
图4解释说明了可以被存储在L2高速缓存里或者动态随机存储存储器内的任务序列;
图5解释说明了一种数据包处理任务的进入;
图6解释说明了任务进出数据包处理/执行单元的状态;
图7是数据包处理/执行任务载入各个数据包处理/执行单元的框图;
图8是专用标识符转换总线耦合数据包处理/执行单元内核和IO网桥。
具体实施方式
本发明的优选的实施方案的描述如下。
图1是根据本发明的原理的包括网络服务处理器100的一种网络服务处理器的安全设备102的框图。安全设备102是单机版的系统,可以把接收到的数据包在一个以太网端口和另一个以太网端口直接进行数据交换,并可以在向前传输接收到的数据包之前执行多种安全操作。例如,安全设备102可以在将所接收到的数据包继续传输到局域网之前,在从广域网接收的数据包上进行安全操作。网络服务处理器100包括数据包处理硬件,缓冲器,工作调度,指令,同步和连贯性支持,遵照本发明的理论来加速数据包处理任务的执行。
网络服务处理器100将开放式互联网的L2-L7层网络协议内嵌在接收到的数据包中。如本领域内的普通技术人员所熟知的,开放系统互联基本参考模块(OSI)限定网络互联时在传输媒体上的七个网络协议层(L1-7)。物理层(L1)表示实际接口,传输媒体和设备之间的电气和物理的连接。数据链路层(L2)传输数据帧。网络层(L3)将数据格式化分组。运输层(L4)进行端到端的传输。会话层(L5)组织管理设备之间的通信,例如,确定是半双工工作还是双工工作。表示层(L6)管理数据格式和语法表示,例如,句法,控制码,特殊图表和字符集。应用层(L7)允许用户之间的通讯,例如,文件传输和电子邮件。
网络服务处理器为上层网络协议(例如,L4-L7层),进行调度、排列任务(数据包处理操作)。数据包处理任务(总任务)通过特殊的数据包处理方式来实现,包括多个数据包处理操作(多段任务)。每一段任务都有一个相关联的标识符。这些标识符允许任务通过网络服务处理器的多个处理器内核并行的调度,并确保了任务的执行是有序的和同步的。任务的排序和调度允许接收到的上层网络的协议被处理并以线速向前传递。线速是网络数据传输和接收的速率。通过以线速将网络协议向前传送,使得网络服务处理器没有消减网络数据的传输速率。
网络服务处理器100包括多个以太网媒体访问控制端口,其带有标准的简化千兆字节媒体独立端口(RGMII)连接芯片PHYs104a,104b.。
网络服务处理器100通过物理端口PHYs 104a,104b从以太网端口(Gig E)接收数据包,按照L7-L2层网络协议处理所接收到的数据包,并通过物理端口PHYs 104a,104b传输数据包到网络上别的中继器,或最终目的地,或通过PCI总线106进行更进一步的主处理机的处理。网络服务处理器可以包括网络安全协议,如防火墙,应用防火墙,虚拟专用网(VPN)包括互联网协议安全性(IPSec)和/或安全套接字协议层(SSL),入侵检测系统(IDS)和反病毒(AV)。
网络服务处理器100中的动态随机存取存储器控制着与网络服务处理器100连接的外部动态随机存取存储器108的存取。动态随机存取存储器108存储通过网络服务处理器100的处理,从PHYs端口104a,104b接收数据,或外部设备端口(PCI-X)106接收数据。在一个实施方案中,动态随机存取存储器支持64或128字节的双精度的数据率II同步动态随机存取存储器(DDRIISDRAM)的操作达800MHz。
当网络服务处理器100启动或重新启动时,启动总线110将提供必要的启动代码,这些代码是被存储在快速存储器112中,并被网络服务处理器100所执行的。应用代码可以越过启动总线110写入网络服务处理器100,通过PCI总线连接执行只读快速存存储器标准的设备114,或高容量设备,譬如说磁盘。
混杂的I/O端口116提供辅助接口,如通用输入输出接口(GPIO),快存,IEEE 802两线制管理接口(MDIO),全球异步接收-发送(UARTs)和串行接口。
网络服务处理器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支持可编程的缓冲区大小,可以通过多个缓冲器来分散数据包来支持数量大的数据包的输入。
处理器内核202的数据包排序/任务(POW)模块228序列,和调度任务(数据包处理操作)。处理内核处理的所有任务都是在任务队列的条目中被定义的。工作可以包括数据包处理操作,例如,执行被任务队列的条目限定的L4-L7层数据包处理操作。每个独立的数据包处理操作都是内核对接收到的存储在存储器中的数据包的处理。例如,任务可以是处理接收到的防火墙/虚拟专用网(VPN)的数据包。在传送数据包之前,对接收到的防火墙/虚拟专用网(VPN)的数据包进行的处理工作包括以下几个数据包处理操作(分任务):(1)接收到的数据包进行碎片整理;(2)IPSec解码;(3)IPSec加密;(4)网址翻译(NAT)或调整TCP序列号。
因为一些数据包处理操作要求有序,有的数据包处理操作既要求有序又要求同步,所以每个分任务都被分配了一个标识符来限定被执行的操作的形式。
内核202的POW模块228(以同步为例)任务返回一个指向队列条目的指针来描述这个任务。每一个分任务(数据包处理操作)都有一组相关联的校验码和标签。
标识符被内核用来排序和同步化预先安排好的任务。标识符包括标识符的值和类型。标识符的值允许同一个数据流(从源头到目的地)的任务被排序和同步化。标识符的类型选择了任务是怎样被同步化和排序的。这里有三种不同的标签类型:有序的(次序是被保证的),原子的(次序和原子性被保证)和空(没有次序是被保证的)。当没有其他的内核可以同时访问同一个数据结构,这个内核访问数据结构(或具有标识符)“原子的”。因此,原子性保证了一个内核至多有一个给定的标识符。任务相关的初始标识符是依据任务的源发站的。标识符可以通过被内核初始化的标识符转换操作来更改。
例如,当处理防火墙/虚拟专用网(VPN)的数据包时,一些处理阶段仅要求有序的,而其他有的既要求有序,也要求同步化。一种有序的标识符类型可以被用在碎片整理阶段,这样同一数据流的碎片就是有序的。原子类型的标识符可以被用在网络安全协议在使用同样网络安全协议通道的数据包之间提供同步化操作。因此,在内核完成了对数据包的分组化操作后,在对数据包进行IPSec操作前,内核为了下一阶段的数据包处理操作(IPSec解码)对标识符进行了初始化标识符转换操作。在标识符转换操作完成后,IPSec操作可以被同一个内核或是其他的内核执行。
一组标识符被用来选择一个或多个内核来对任务进行初始调度。因为所有的任务并不是平等的,标识符组允许不同的任务在不同的内核上执行。例如,通过限定标识符组哪个内核将会接收任务,数据包处理可以从一组内核转到另一组上。为了将一个任务从一组内核转移到另一组上,或为了避免一个工作内核需要长的同步化延迟时间,内核可以打乱预先安排好的工作。内核打乱已经安排好的任务是通过初始化标识符转换操作为将标识符类型转换为空来实现的。当重新安排任务时,标识符组被POW模块用来选择内核来将没有安排好的任务安排好。
在更详细的介绍POW模块的操作之前,先介绍另一种模块。在数据包被内核202处理后,数据包输出单元(PKO)218从L2高速缓存或DRAM中读取数据包,执行L4网络协议进行后续处理(例如,生产TCP/UDP检查和),通过接口单元210a,210b传输数据包,释放用于存储数据包的L2高速缓存212或DRAM108。
网络服务处理器100还包括专用的应用程序并行处理器,它可以减轻内核202的负担,从而提高了网络服务处理器的吞吐量。应用程序并行处理器包括精确有限自动机DFA并行处理器244,和压缩/解压缩并行处理器208。
每一个处理器内核202都是一个双重事件、带有指令高速缓冲存储器206的超级标量处理器,,一级数据高速缓冲存储器204,密码术算法嵌入式硬件加速器(密码加速模块)200,可以越过低时延存储器总线230直接存取低时延存储器。低时延存储器118的直接读取通道通过L2高速缓冲存储器212可以直接从内核202和DFA并行处理器244中存取。
网络服务处理器100还包括子系统存储器。存储器子系统包括每个内核202中都有一级数据高速缓冲存储器204,指令高速缓冲存储器,二级数据高速缓冲存储器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层网络协议的尾部来检查普通错误。例如,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位的分组的碎片放到IOBI总线上。数据包输入单元214的IPD300将IOBI每一个要处理的64位分组的碎片锁存。IPD300累计64位的分组的碎片成128字节的高速缓冲存储块。之后,IPD300将高速缓冲存储块发送到IPDB总线。I/O网桥232传输高速缓冲存储块到相关存储总线(CMB)。
数据包输入单元214对接收到的数据包中包括的L3和L4层网络协议头进行预处理。例如,L3网络协议对IP协议头的预处理包括检查IP版本字段确定IP版本是版本4还是版本6,校验头检查和字段存储在存活时间字段的值大于0,并检查选择字段。数据包输入单元214支持网络协议版本4(Ipv4)和版本6(Ipv6)通讯。L4预处理TCP/UDP协议头包括校验端口数字字段,检查和字段,储存在长度字段和标签字段的值。为了内核更高一层的处理操作,数据包输入单元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可以将数据包分配到POW 228八个输入任务序列中的一个内核,通过使用系统缺省值,虚拟局域网优先权(VLAN)和IP不同数值可基于每一个端口进行配置。
计时器单元242被用来安排内核的工作任务。计时器单元管理环有数量可编程的存储段存储在二级高速缓冲存储器212或DRAM 108(图1)中。每个存储段存储计时器登陆的表单。每个计时器入口存储任务队列条目指针。每个环中存储段之间的时间段是可编程的。在每一个数据段周期到期的时候,环内下一个数据段被处理,数据段中存储在计时器入口的任务队列条目指针限定的任务是已经安排好的。
图4解释说明任务队列条目400可以被存储在L2高速缓冲存储器212或者动态随机存储存储器108内。任务队列条目400的字402,404被数据包整理/任务模块(POW)228使用,用来排列内核要处理的任务。
词402包括存储硬件检查和的硬件检查和字段412,和下一个指针字段414用于存储指向下一个任务队列条目的指针,处理存储器输入序列。在一个具体实施方案中,硬件检查和是硬件生产16位分组数据的和,已经在数据包外计算过的。下一个指针字段414被用来链接任务队列条目。
词404包括长度字段416,输入端口(iprt)字段418,QOS字段420,分组字段422,TT字段424和标识符字段426。长度字段416存储任务队列条目400中分组数据的总的字节数。在一个具体实施方案中,长度范围可以从1到65535字节。输入端口字段418存储了数据包进入的端口。QOS字段420存储了数据包输入单元214选择的POW模块228中的输入序列。数据包输入单元214可以根据接收到的数据包的每个端口或字段的系统设定值选择输入序列,例如,基于VLAN地址,或DSCP字段。分组字段422存储任务需要的内核组的数量。TT字段424存储了任务队列条目的初始标识符类型。标识符类型可以是空,有序的或原子的。IP和非IP的数据包,Ipv4和Ipv6的数据包,TCP和非TCP数据包的标识符类型是不一样的。标识符的初始值是由IPD单元300分配的,基于数据包到达的端口号,IP源和目标地址,IP协议下一协议头值,TCP/UDP源和目标端口。POW模块228读取QOS字段的值选择输入序列。POW在向输入序列添加任务时读取分组字段,TT字段和标识符字段的值。
任务队列条目的词404中的标识符字段426允许给每一个任务加标识符。PIP/IPD模块214创建初始标识符信息,并将其存储在任务队列条目里。例如,PIP/IPD模块可以通过执行标准的TCP五元组(IP源地址,IP目标地址,IP协议,TCP源端口,TCP目标端口)的一部分来限定“流”。分组/次序任务模块(POW)228使用初始标识符信息实现同步化,次序化和调度。当两个任务共享一个标识符值时,它们是有序的和/或者同步的,标识符值存储在标识符字段426中,标识符类型存储在字404的TT字段424中。当两个任务拥有不同的标识符或标识符类型值时,它们是不相关的,可以在不同的内核下完全并行的处理。同样的流有同样的标识符值,所以它可以次序化和同步化。不同的流有不同的标识符值,所以它们会是无次序和不同步的,所以它们可以在不同的内核上并行的执行。
词406保存关于分组数据的信息,例如,在输入数据包处理中从数据包头部提取出的信息。信息可以包括在L2协议头是否有虚拟局域网标识,数据包是UDP还是TCP的,L2协议头目标MAC地址字段是分散的还是复选的,数据包是否需要网络安全协议解码。信息还包括用来存储分组数据的缓冲器的号。
词408是缓冲器描述符。地址字段436存储缓冲器中分组数据的第一字符的地址。长度字段434存储缓冲器中分组数据的字节数。在一个具体实施方案中,池字段432和1字段428被设定为“0”,后备字段430将地址字段436中存储的高速缓冲存储器块的数量存储在缓冲器的前端。
词410根据数据包的类型存储分组数据。存队列条目的分组数据的格式未在本发明中限定。
POW模块228有多个POW条目隶属于多种表单,包括POW输入序列。通常,每个POW条目包括指向存储在L2高速缓冲存储器/DRAM的指针。任务队列条目可以扩展POW的输入序列。
图5示意了POW条目500。POW条目500存储任务序列指针(WQP)502。在一个具体实施方案中,WQP是L2高速缓冲存储器212或DRAM 208的64比特的校准指针,指向任务队列条目400。
POW条目500还存储着关联任务队列条目400描述的分配给当前标识符504的值和标识符506的类型,用来实现在POW模块228中POW条目与多种表单链接的与任务相关的当前组或组508。
POW模块228通过标识符值和标识符类型排序安排好时间进度的任务。标识符值允许同一流(具有同一源和目的地)的任务被排序和同步化。例如,标识符值可以是标准的TCP五元组(IP源地址,IP目标地址,IP协议,TCP源端口,TCP目标端口)的一部分,在限定“流”的数据包的头部。同样的流有同样的标识符值,所以它可以次序化和同步化。不同的流有不同的标识符值,所以它们会是无次序和不同步的,所以它们可以在不同的内核上并行的执行。在一个具体实施方案中,标识符值是32位的。标识符类型506是次序化和同步化被执行的类型。
在一个具体实施方案中,每个被POW识别的任务都被分配了以下三种标识符类型中的一种:空,有序的,原子的。无序的通过无叙标识符类型来实现。有序通过任务有有序的标识符类型实现。有序的和原子的通过让任务有原子的标识符类型实现。两个拥有原子的标识符的任务不能同时拥有同一个标识符值。
不同类型的任务使用的同样的POW模块228。因为所有的任务都是不平等的,POW支持多元组。在一个实施方案中,POW模块支持16个不同的组。组提供在不同的内核上执行不同功能的操作,所有的核共享同一个POW模块228。例如,通过限定标识符组哪个内核将会接收任务,数据包处理可以从一组内核转到另一组上,第一组执行任务的第一阶段工作,下一组执行任务的下一阶段任务。组允许各个核具体要求它所接收的任务的类型,POW模块228可以动态的将任务分配给可用的内核。
处理器内核202向POW模块228请求任务。一般,内核轮询POW模块来找到任务。然后,在某些情况下,当POW模块中有内核的任务时,它可以被选择中断内核。就是说,POW模块228基于内核接收任务的组来选择安排任务。POW模块228每个核都有成组屏蔽寄存器。每组屏蔽寄存器都是按位屏蔽,一组一位,允许内核对它接收任务的组具体结合。
如果内核不接收和任务相关的组的话,POW模块228为内核调度任务。内核成组屏蔽寄存器的值为0,阻止了内核继续接收任何新任务。在一个16组的实施方案中,组屏蔽寄存器有16按位屏蔽,一组一位。位单元为“1”设置内核的隶属成员在反应组里。
图6示出了任务通过POW模块228的状态。任务通过一系列输入系列604进入POW模块228,并被POW条目500识别,可以被存储在L2高速缓冲存储器/DRAM中,或POW模块中。根据一个输入序列604中的POW条目606的表单,任务被POW模块调度以响应内核的开始工作的指令。
任务被调度,将POW模块中的来自输入序列604的POW条目移至正在传输的队列中。正在传输的队列是根据存储在POW条目500内的标识符/类型值来选择的。16个内核,每个内核一个POW条目,被这16个POW条目所标识的任务可以被并行的调度。在任务由POW模块初始化调度成为控制队列后,通过内核执行标识符转换操作,调度任务608可以在正在传输的队列中移动。
安排好进度的任务可以被内核打乱进度安排。没有进度安排的任务610保持在正在传输的队列里,稍后将被POW模块重新安排进度,在POW模块的一个内核可以通过一个标识符转换612来将标识符的类型由空改为有序的或是原子的来实现将没有安排进度的任务(来自POW模块的远景)安排进度。
图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可用,任务将自动从存储器710移到POW条目500内,和直接添加在输入队列704a-c的任务一起按次序排列。
两个POW条目500在第一输入队列704a里,在第一输入队列头部,输入队列头指针712指向POW条目。第一输入队列被存储在存储器中的任务队列708扩展。输入队列存储器头指针714指向任务进入队列708。第二输入队列504b是空;就是说没有POW条目。在第三输入队列504c中有一个POW条目500。
在自由表单702中的POW条目500可以分配给任何一个输入队列704a-c。如果POW条目500在自由表单702上是有效的,POW模块228从自由表单702为输入队列704a-c分配POW条目500,并在分配的POW条目存储标识符值,标识符类型和任务进入队列相关组。存储在存储器710中的任务进入队列(WQP)400的指针也存储在POW条目500中。通过把POW条目放在自由表单702上,使它自由。
内核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中。被POW条目检验的,在正在传输表单(队列)706a-c中的任务被称为“正在传输”任务。
POW模块包括一系列质量服务特征以不同方式优先考虑输入队列,使任务顺利的通过单元。一个质量服务特征是阈值,用来限制独立的输入队列704a-c使用的POW条目的数量。每个输入队列704a-c有一个相关的POW条目的最大数值。当POW条目的最大数值达到了,输入队列704a-c通过使用任务进行队列708来扩展输入队列704a-c。每一个输入队列也都有一个自由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模块保持被输入队列704a-c中的任务进入队列708校验的任务的有序性。输入队列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条目表单的第一任务,是原子标识符值类型时,POW条目才可以在任何时间被执行。在传输队列的A7中,A7的转换完全是为了传输队列中头条目,但是对于POW条目定义的其他任务转换就是未决的。任何原子传输队列中的任务都不可以有一个未决的标识符来转换为不同的标识符。
在有序的和原子的标识符转换时,POW模块移动指针到POW条目,从一个传输队列的头到另一个传输队列的尾部。指针的移动晚上了一个转为有序标识符类型的转换,但是,对于原子标识符类型,在POW条目到达传输队列头部之前,转换是没有完成的。因此,在传输队列头部的被POW条目校验的任务不可能是未定的转换。传输队列中A5只有一个POW条目,因此,不会有未决的标识符转换。POW条目校验的一个任务具有原子的标识符。
内核可以被传输中的任务或无调度安排的任务调度。图7表示了五个内核。内核0连有一个POW条目,但是这个条目是没有被调度的。内核1是无调度的,就是说它没有附加的POW。内核2,内核3,内核4被调度安排在传输中的任务里。内核当前正处在有序的状态,或者可以有一个未决的转换,转换成其他状态。内核3有一个转为原子状态的未决的转换。内核4处在有序的转头,没有未决转换。
为响应内核的任务请求,POW模块可以调度安排无调度的任务来详细这个请求。无调度的任务与任务队列里的任务相比,有更改的优先权。POW模块不调度安排拥有未决任务转换的任务,不调度输入队列中有原子标识符类型的POW条目,除非输入队列中POW条目有一个空标识符类型即刻无调度。
如在图6中讨论过的,当无调度的内核(从POW模块全局考虑)执行一个标识符转换操作时,任务仍然进入POW模块。任务以这种形式进入POW模块,立刻就把调度。在它被调度后,无法区分它与其他调度安排的任务。
POW模块在循环期间可以为所有的内核提前读取任务,否则内核将空闲。因此这种处理可以以最小的延迟得到任务,排除了总线争抢。总线是用来把任务从单元移进移出的。然而,与内核相关的成组屏蔽的改变和标识符转换操作,使提前读取任务无效。
图8是与内核、POW模块和IO网桥相耦合的专用标识符转换总线的示意框图。一个标识符转换操作包括请求和完成:(1)内核将新标识符传送给POW模块;(2)POW模块向内核指示出标识符转换的成功完成。内核转换新的标识符主要通过一个输入/输出(I/O)存储机制。标识符转换操作是从内核执行一个I/O存储指令,在内核里设定一个未决标识符转换开始的。在一个实施方案中,标识符转换的存储包括存储一个操作码在操作码字段,标识符存储在存储器数据部分。这一存储器进入内核202的写缓冲器,被相关存储总线234被反射,通过IO网桥(IOB)/FAU232,到达IO总线304,进入POW模块228。
每个内核都有各自的未决转换位800。从每个内核拷贝的未决转换802被存储在IOB/FAU 232中。另外,POW模块存储了未决转换的状态。当内核开始转换操作时,内核内部的未决转换被设置,通过执行一个存储指令,存储地址是被POW模块指定的IO空间物理地址。当一个适当的子集被使用在地址里时,例如,地址位<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的值,内核可以在当地轮询所有完成的标识符转换。高效轮询是非常重要的,因为高效的去除调度安排要求轮询。专用的转换总线804同样也允许IOB/FAU操作被推迟,直到标识符转换完成。专用的转换总线804对于一系列应用很重要。专用的转换总线804还最小化了完成转换的延迟。
标识符转换有最高优先权,可用最小延迟完成,包括总线争用转移POW模块请求,如果没有同步化/有序化冲突。
POW模块同步化支持是非常灵活的,可以被用在很多不同方面。一个同步化具体应用将在下面表1所示的防火墙/虚拟专用网(VPN)数据包处理中介绍。这个具体应用例假设每个数据包的处理可以被分成六个应用阶段:(1)碎片整理,(2)网络安全协议解码,(3)查找,(4)处理,(5)网络安全协议加密,(6)输出队列。应用例假设应用的是网络协议(IP)版本4。然而,本领域内的普通技术人员很容易就可以修改成6版。
阶段 标识符类型 标识符值(阶段ID/阶段标签)
碎片整理 有序的 {0,散列(IPSrc,IPdest)}
网络安全协议解码 原子的 {1,IPSEC SPI/SPA}
查找 原子的 {2,散列(IPsrc,IPdest,IPprot,IPsrcport,IPdestport)}
处理 有序的 {3,散列(IPSrc,Ipdest,IPport,IPsrcport,IPdestport)}
网络安全协议加密 原子的 {4,IPSEC SPI/SPA}
输出队列 原子的 {5,Output Queue Index}
                        表一
在碎片整理阶段,IP输入数据包被碎片整理。普通技术人员所熟知的,由于网络可以传输的IP数据包尺寸的限制,大的IP数据包的数据字段是分段的,并且这些碎片以一系列小的IP数据包形式发送。碎片偏移字段在每个段的头部,用来从新对碎片排序。网络安全协议解码阶段对数据包进行网络安全协议解码。查找阶段查找数据流记录,更新状态。处理阶段对需要在发送数据包前执行的操作进行处理。例如,数据包可以要求网络地址翻译(NAT)或调整TCP序列号。网络安全协议解码阶段对数据包执行网络安全协议解码操作。输出阶段将数据放到输出队列中,从处理器中输出。
每个应用阶段都分配了一个阶段校验码(0-5)。分配给各个阶段的标识符值504包括阶段校验码,阶段标题。阶段校验码允许不同的处理阶段平行的在流水线方式下执行,通过允许在不同阶段,但具有同样数据流校验码和标识符校验码的数据包,在不同的内核里同步执行。在同一数据流里的多数据包,如果它们有不同的阶段标识符值,它们可以在同一流里在不同的内核内自由的执行。
不同阶段校验码保证了在同一流里所有数据包的处理次序(和同样的方向)。目标是展示出POW模块不同的标识符值,以实现尽可能多的任务并行,同时也保证了关键数据结构通道的适当同步化。
一般来说,阶段标题是散列结构,使用数据包头部的一系列字段来尽可能多的区分数据流,所以来自同一数据流的两个数据包产生同样的散列值。阶段标题可以是关键数据结构的索引,或是散列结果和索引的结合。
参照表1,碎片整理阶段有一个有序的标识符类型506,标识符校验码504包括一个阶段校验码0,和阶段标题,阶段标题来自对包括在数据包中的IP来源地址和IP目标地址的散列结果。输入数据包在碎片整理阶段被整理。所有的输入数据包进入这个阶段,一些数据包被分段,少数被整理了碎片的数据包离开这个阶段。所有在同一流里进入的数据包,碎片或不是碎片的,对于IP源头和IP目标地址字段有同样的值,而且同样的阶段标题,所有它们是有序的。来自同一数据流,优化碎片和碎片整理的数据包按次序进入下一阶段。
进入这一阶段并且没有离开的碎片转换成空标识符类型,并不在进入其他阶段。当最后一个碎片创建完成了一个数据包的碎片整理,碎片整理过的数据包进入下一阶段,所有碎片整理数据包呈现了输入碎片的任务顺序。这给了碎片整理数据包最理想的次序;就好像最后一个输入碎片一出现,它就出现了一样,即使被需要用来从多路输入碎片,创建碎片整理数据包的软件处理时间可能很大。
IPSec解码阶段,数据包需要的网络安全协议被解码。如果不需要,这一阶段就被跳过。标识符类型是原子,阶段校验码是“1”,阶段标题来源于AH和ESP协议中执行的安全参数标志(SPI)和安全性关联(SA)。网络安全协议包括独立的鉴别标题(AH),安全有效负荷(ESP),IP负荷压缩(Ipcomp),和网络关键交换(IKE)。IPSec是因特网网络工作小组(IETF)在请求说明(RFC)2401中定义的标准,见网址www.ietf.org/rfc/rfc2401.txt
一般来说,IPSec处理要求使用同样网络安全协议通道的不同的数据包之间同步,例如,数据结构的错误修正窗口。错误修正窗口是一个32位的计数器,用来决定入站的AH或EH数据包是否需要自动修正。这一结构具体指明了一个原子的标识符,这一标识符覆盖了整个数据包解码的IPSec安全相关(SA)协议。阶段标识符值独一无二的限定SA,所以在入站标识符转换完成后,内核可以自由的访问隧道数据结构,知道下一个标识符转换。
所有来自同一个数据流的数据包拥有同样的IPSec SPI/SA值,并保留着它们离开这个阶段的次序。来自别的数据流,使用同样通道的数据包串行通过这一阶段,并会按次序离开,但是在下一阶段它们将会有不同的标识符,所以在进入下一阶段时它们是无序的。
查找阶段查找数据流(由5个元组构成的)的记录和更新状态。实施例表示假设记录状态防火墙。防火墙组织网络中的计算机直接与外部网络相通讯。相反,所有的通讯都是通过代理服务器进行的,代理服务器来决定是否安全让某个具体的信息或文件通过网络。记录状态防火墙记录网络连接的轨迹,例如TCP流通过防火墙。在流的第一数据包,捷径流记录不存在,所以流必须有效和被存储等待下一个数据包。阶段的标题选择了一个特殊的散列表元。因此,原子的标识符序列进入表元,散列数据结构没有更进一步的同步化的要求。在前面的数据包更新高速缓冲存储器状态之前,来自流的数据包不会评论(或更改)流的状态。
这种高速缓存结构会花费较长的时间来最初的审批和缓存数据流的状态,与处理下面的数据包的时间相比。因此,一些数据包在查找成功前,需要等待审批的完成。对于一些协议,如TCP,在同一个流里,上面这种情况是不会发生的,但是对于其他协议或数据包来自不同的流,长时间的等待还是可能的,就是说,很不幸,冲突在同一个散列表元里发生。POW模块提供的碎片整理操作可以被用在这种长时间等待的情况下。当前任务可以被碎片整理,别的任务被执行,当原子标识符有效后,POW模块可以重新调度任务。
处理阶段对数据包进行处理,在数据包被发送之前这是必需的。例如,数据包可能需要网络地址翻译(NAT)或TCP序列号调整。NAT翻译,是企业网或其他专用网(称为子域)IP地址与互联网IP地址之间的转换。处理阶段使用有序标识符类型,带有散列流校验码来做阶段标题。这尽可能精确的使同一流的数据包按顺序离开这一阶段。数据包可以在查找阶段或处理阶段被遗漏,不执行任何更高阶段的任务。
IPSec解码阶段,对需要的数据包进行IPSec解码。如果不需要,这一阶段就被跳过。标签的使用同IPSec解码阶段。
输出阶段将数据包放到输出队列上,从处理器输出。标识符类型时原子的,进入同步化关键数据结构所要求的。阶段标识符校验精确的输出队列,所以仅参照使用同一输出队列的被序列化。例如QOS计算,随机早期检查(RED)可以在这一阶段被使用,根据输出队列的大小,来断定是否丢失数据包。
一种标识符转换操作限定从一个阶段到下一个阶段的转折点。PIP/IPD单元为数据包生成初始标识符,就是碎片整理阶段。标识符是有序的,标识符值有阶段标识id=0,阶段标签=散列(IPsrc,IPdest)。POW模块调度带有初始标识符的任务。POW模块中最后一个转换(标识符类型空,将任务从POW模块移走),是调度下一数据包任务的一部分。因此,没有加密/解码阶段,处理IPSec数据包仅要求三个标识符转换。因为每个阶段都有独一无二的标识符值,不同的流可以被多核并行处理。
虽然本发明已经对关于其优选的实施方案进行了具体的描述和介绍,但本领域技术人员应当理解,在不脱离本发明所附权利要求保护的范围的情况下,本发明在形式和细节上可以进行多种改变。

Claims (34)

1.一种网络服务处理器,该处理器包括:
多个独立的处理器,每个处理器并行处理任务;
基于与任务相关联的标识符,任务排序模块动态地调度安排任务以被处理器并行处理,以致任务的执行是有序和同步的。
2.如权利要求1中所述的网络服务处理器,被处理器执行的任务存储在输入队列里。
3.如权利要求2中所述的网络服务处理器,其中任务排序模块进一步包括:
多个正在传输的表单,每个正在传输的表单与不同的标识符相关,以用于跟踪与这个标识符相关的传输任务,任务排序模块依据与任务相关的标识符,将在输入队列里的任务调度到正在传输的表单里。
4.如权利要求2中所述的网络服务处理器,其中任务排序模块进一步包括:
每个处理器具有校验码组,校验码组指明处理器会接收任务的组,任务排序模块在输入队列通过组来区分任务,以致任务被调度到从组接收任务的处理器中。
5.如权利要求2中所述的网络服务处理器,其中输入队列中的任务可以被存储在任务排序模块或任务排序模块的外部存储器中。
6.如权利要求1中所述的网络服务处理器,进一步包括:计时器,该计时器用来控制任务加入输入队列的时间。
7.如权利要求5中所述的网络服务处理器,其中标识符包括标识符类型和存储标识符类型为原子的任务的正在传输表单,表明只有在表单头部的任务可以被多个处理器的其中之一执行。
8.如权利要求5中所述的网络服务处理器,其中标识符包括标识符类型和存储标识符类型为有序的任务的正在传输表单,表明所有表单里的任务都是可执行的,任务只有从表单头部才可以被多个处理器的其中之一移除。
9.如权利要求1中所述的网络服务处理器,进一步包括:
在处理器和任务排序模块之间连接的专用的标识符转换总线,用于传输分组任务排序模块的标识符转换操作完成的指示。
10.如权利要求9中所述的网络服务处理器,其中内核通过存储指令和根据监视到存储指令来启动标识符转换操作,分组任务排序模块更改标识符,并将任务移到与更该的标识符相关联的正在传输中队列中。
11.如权利要求1中所述的网络服务处理器,其中任务是执行IPSec解码。
12.如权利要求1中所述的网络服务处理器,其中任务是执行IPSec加密。
13.如权利要求1中所述的网络服务处理器,其中任务是对虚拟专用网数据包进行碎片整理。
14.如权利要求1中所述的网络服务处理器,其中任务是调整TCP序列号。
15.如权利要求2中所述的网络服务处理器,其中每个输入队列都有指定的优先权值。
16.如权利要求2中所述的网络服务处理器,其中每个输入队列都被指定存储一类任务。
17.如权利要求1中所述的网络服务处理器,其中至少处理器之一执行控制平台操作,另一个处理器执行数据平台操作。
18.一种处理网络服务处理器中数据包的方法,该方法包括:
通过多个独立的处理器并行处理任务;以及
基于与任务相关联的标识符,通过处理器动态调并行处理任务,以致任务的执行是有序和同步的。
19.如权利要求18所述的方法,进一步包括:
基于与任务相关联的标识符,将存储在输入队列的任务调度到多个正在传输的表单之一中,每个正在传输的表单都与不同的标识符相关联,以用于跟踪与此标识符相关联的正在传输中的任务。
20.如权利要求19所述的方法,进一步包括:
按组区分输入队列中的任务,以致任务被调度到从组接收任务的处理器中,组校验码指明将要接收任务的处理器的组。
21.如权利要求19所述的方法,其中输入队列中的任务可以被存储在任务排序模块或任务排序模块的外部存储器中。
22.如权利要求18所述的方法,进一步包括:
控制,当任务加入输入队列时通过计时器控制。
23.如权利要求18所述的方法,其中标识符包括标识符类型和存储标识符类型为原子的任务的正在传输表单,表明只有在表单头部的任务才可以被多个处理器的其中之一执行。
24.如权利要求18所述的方法,其中标识符包括标识符类型和存储标识符类型为有序的任务的正在传输表单,表明所有表单里的任务都是可执行的,任务只有从表单头部才可以被多个处理器中的其中之一移除。
25.如权利要求18所述的方法,进一步包括:
在专用的标识符转换总线上通过分组任务排序模块传输标识符转换操作完成的指示,所述专用的标识符转换总线与处理器和任务排序模块连接。
26.如权利要求25所述的方法,进一步包括:
通过执行存储指令启动标识符转换操作;以及
根据监视存储指令,更改标识符并将任务移到与更该的标识符相关联的正在传输中队列中。
27.如权利要求18所述的方法,其中任务是执行IPSec解码。
28.如权利要求18所述的方法,其中任务是执行IPSec加密。
29.如权利要求18所述的方法,其中任务是对虚拟专用网数据包进行碎片整理。
30.如权利要求18所述的方法,其中任务是调整TCP序列号。
31.如权利要求19所述的方法,其中每个输入队列都有指定的优先权值。
32.如权利要求19所述的方法,其中每个输入队列都被指定存储一类任务。
33.如权利要求19所述的方法,其中至少处理器之一执行控制平台操作,另一个处理器执行数据平台操作。
34.一种网络服务处理器中用来处理数据包的装置,该装置包括:
用于并行处理任务的设备;以及
基于与任务相关联的标识符,用于动态调度任务被并行执行以致任务的执行是有序和同步的设备。
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 true CN101069170A (zh) 2007-11-07
CN101069170B CN101069170B (zh) 2012-02-08

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 (1)

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

Family Applications After (3)

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

Country Status (2)

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

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299194B (zh) * 2008-06-26 2010-04-07 上海交通大学 基于可配置处理器的异构多核系统线程级动态调度方法
CN101840328A (zh) * 2010-04-15 2010-09-22 华为技术有限公司 一种数据处理方法及系统以及相关设备
CN101282303B (zh) * 2008-05-19 2010-09-22 杭州华三通信技术有限公司 业务报文处理方法和装置
CN101272334B (zh) * 2008-03-19 2010-11-10 杭州华三通信技术有限公司 使用多核CPU处理QoS业务的方法、装置和设备
CN102110012A (zh) * 2009-12-23 2011-06-29 英特尔公司 用于使用虚拟任务对多核处理器进行性能分析的关系建模
CN102149207A (zh) * 2011-04-02 2011-08-10 天津大学 提高wlan的tcp短期公平性的接入点调度方法
CN102754395A (zh) * 2009-12-04 2012-10-24 纳派泰克股份公司 由中央控制器控制的接收和存储数据分组的设备和方法
CN104871129A (zh) * 2012-12-28 2015-08-26 华为技术有限公司 基于软件的并行处理中的包有序调度的方法
CN104980418A (zh) * 2014-04-14 2015-10-14 凯为公司 基于存储器层次的有限自动机的编译
CN105144087A (zh) * 2012-12-20 2015-12-09 恩邦德网络公司 使用多核心处理器的并行处理
US10110558B2 (en) 2014-04-14 2018-10-23 Cavium, Inc. Processing of finite automata based on memory hierarchy
CN108780425A (zh) * 2016-03-10 2018-11-09 微软技术许可有限责任公司 受保护指针
CN110262888A (zh) * 2019-06-26 2019-09-20 京东数字科技控股有限公司 任务调度方法和装置及计算节点执行任务的方法和装置
US10466964B2 (en) 2013-08-30 2019-11-05 Cavium, Llc Engine architecture for processing finite automata
CN110493170A (zh) * 2018-05-15 2019-11-22 西门子股份公司 功能上安全地鉴定连接的方法

Families Citing this family (194)

* 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
US7594081B2 (en) * 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
EP1794979B1 (en) * 2004-09-10 2017-04-12 Cavium, Inc. Selective replication of data structure
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
US8279885B2 (en) * 2007-09-25 2012-10-02 Packeteer, Inc. Lockless processing of command operations in multiprocessor systems
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
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
CN101689158B (zh) * 2007-07-09 2012-06-06 惠普发展公司,有限责任合伙企业 用于多核处理器的数据分组处理方法
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
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
JP5202130B2 (ja) * 2008-06-24 2013-06-05 株式会社東芝 キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法
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
EP2503462A4 (en) * 2009-11-16 2012-10-31 Fujitsu Ltd PARALLEL CALCULATION DEVICE, METHOD, AND PROGRAM
US8452835B2 (en) 2009-12-23 2013-05-28 Citrix Systems, Inc. Systems and methods for object rate limiting in multi-core system
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
US8869141B2 (en) * 2010-03-09 2014-10-21 Avistar Communications Corp. Scalable high-performance interactive real-time media architectures for virtual desktop environments
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
EP2656227A2 (en) * 2010-12-22 2013-10-30 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
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
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
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
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
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
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
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
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
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
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
US9354689B2 (en) 2012-03-13 2016-05-31 Intel Corporation Providing energy efficient turbo operation of 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
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
US9075556B2 (en) 2012-12-21 2015-07-07 Intel Corporation Controlling configurable peak performance limits of a 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
US9081577B2 (en) 2012-12-28 2015-07-14 Intel Corporation Independent control of processor core retention states
US9164565B2 (en) 2012-12-28 2015-10-20 Intel Corporation Apparatus and method to manage energy usage of a processor
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
US10386900B2 (en) 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
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
US9405345B2 (en) 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
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
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
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
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
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
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
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
US10281975B2 (en) 2016-06-23 2019-05-07 Intel Corporation Processor having accelerated user responsiveness in constrained environment
US10324519B2 (en) 2016-06-23 2019-06-18 Intel Corporation Controlling forced idle state operation in a processor
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
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
US10234920B2 (en) 2016-08-31 2019-03-19 Intel Corporation Controlling current consumption of a processor based at least in part on platform capacitance
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
US11593544B2 (en) 2017-08-23 2023-02-28 Intel Corporation System, apparatus 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
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
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
US11080051B2 (en) 2019-10-29 2021-08-03 Nvidia Corporation Techniques for efficiently transferring data to a processor
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

Family Cites Families (108)

* 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
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
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
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 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6018792A (en) 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US5991855A (en) 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
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
JP3708436B2 (ja) 1998-05-07 2005-10-19 インフィネオン テクノロジース アクチエンゲゼルシャフト 2次元データフィールドのためのキャッシュメモリ
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
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
US6814374B2 (en) * 2002-06-28 2004-11-09 Delphi Technologies, Inc. Steering column with foamed in-place structure
CN1387119A (zh) * 2002-06-28 2002-12-25 西安交通大学 一种适应于快速数据查找的树形链表及其生成算法
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
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
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
EP1794979B1 (en) 2004-09-10 2017-04-12 Cavium, Inc. Selective replication of data structure
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

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101272334B (zh) * 2008-03-19 2010-11-10 杭州华三通信技术有限公司 使用多核CPU处理QoS业务的方法、装置和设备
CN101282303B (zh) * 2008-05-19 2010-09-22 杭州华三通信技术有限公司 业务报文处理方法和装置
CN101299194B (zh) * 2008-06-26 2010-04-07 上海交通大学 基于可配置处理器的异构多核系统线程级动态调度方法
CN102754395B (zh) * 2009-12-04 2015-03-04 纳派泰克股份公司 由中央控制器控制的接收和存储数据分组的设备和方法
CN102754395A (zh) * 2009-12-04 2012-10-24 纳派泰克股份公司 由中央控制器控制的接收和存储数据分组的设备和方法
CN102110012A (zh) * 2009-12-23 2011-06-29 英特尔公司 用于使用虚拟任务对多核处理器进行性能分析的关系建模
CN102110012B (zh) * 2009-12-23 2015-06-24 英特尔公司 用于使用虚拟任务对多核处理器进行性能分析的关系建模
CN101840328A (zh) * 2010-04-15 2010-09-22 华为技术有限公司 一种数据处理方法及系统以及相关设备
US8848532B2 (en) 2010-04-15 2014-09-30 Huawei Technologies Co., Ltd. Method and system for processing data
CN102149207A (zh) * 2011-04-02 2011-08-10 天津大学 提高wlan的tcp短期公平性的接入点调度方法
CN102149207B (zh) * 2011-04-02 2013-06-19 天津大学 提高wlan的tcp短期公平性的接入点调度方法
CN105144087A (zh) * 2012-12-20 2015-12-09 恩邦德网络公司 使用多核心处理器的并行处理
CN104871129A (zh) * 2012-12-28 2015-08-26 华为技术有限公司 基于软件的并行处理中的包有序调度的方法
CN104871129B (zh) * 2012-12-28 2017-11-24 华为技术有限公司 基于软件的并行处理中的包有序调度的方法
US10466964B2 (en) 2013-08-30 2019-11-05 Cavium, Llc Engine architecture for processing finite automata
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
CN104980418B (zh) * 2014-04-14 2018-11-13 凯为公司 基于存储器层次的有限自动机的编译
CN104980418A (zh) * 2014-04-14 2015-10-14 凯为公司 基于存储器层次的有限自动机的编译
CN108780425A (zh) * 2016-03-10 2018-11-09 微软技术许可有限责任公司 受保护指针
CN110493170A (zh) * 2018-05-15 2019-11-22 西门子股份公司 功能上安全地鉴定连接的方法
US11290881B2 (en) 2018-05-15 2022-03-29 Siemens Aktiengesellschaft Method for functionally secure connection identification
CN110262888A (zh) * 2019-06-26 2019-09-20 京东数字科技控股有限公司 任务调度方法和装置及计算节点执行任务的方法和装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN101069170A (zh) 数据包队列、调度和排序
EP1787212B1 (en) Packet queuing, scheduling and ordering
CN1219384C (zh) 多播传输的方法及设备
KR100992050B1 (ko) 가상화된 네트워크 환경에서 입력/출력 공유를 가지는프로토콜 오프로드 및 다이렉트 입력/출력을 위한 방법 및시스템
US8594131B1 (en) Packet processing on a multi-core processor
US7472205B2 (en) Communication control apparatus which has descriptor cache controller that builds list of descriptors
CN1642172A (zh) 为多层网络接口控制器操作传输调度的方法和系统
US7499470B2 (en) Sequence-preserving deep-packet processing in a multiprocessor system
US20080259960A1 (en) Method and apparatus for Out-of-Order Processing of Packets
CN1458590A (zh) 用网络栈同步和上载已卸载网络栈连接的方法
CN112333169B (zh) 一种报文处理方法、装置、电子设备及计算机可读介质
US8751655B2 (en) Collective acceleration unit tree structure
CN1520112A (zh) 网络协议卸载引擎
CN100339832C (zh) 帧和协议分类的方法和系统
CN1617526A (zh) 在物理端口上模拟多个逻辑端口的方法和装置
CN101047714A (zh) 一种处理网络数据的方法及系统
US20080059686A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
CN1426239A (zh) 路由器、终端设备、通信系统以及路由方法
CN1946061A (zh) 一种快速处理报文的方法及装置
US8374185B2 (en) Packet inspection device and method
US9015438B2 (en) System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
CN1946060A (zh) 实现重定向报文正确转发的方法及第一部件、第二部件
JP4938134B2 (ja) 複数の接続インターフェース間で通信するための方法および装置
CN1697445A (zh) 一种实现虚拟私有网络中数据传输的方法
CN1695363A (zh) 为分组处理确定时钟信号的方法和系统

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.