CN105830027B - 用于为网络处理器中的处理器核心预取并处理作业的方法和装置 - Google Patents

用于为网络处理器中的处理器核心预取并处理作业的方法和装置 Download PDF

Info

Publication number
CN105830027B
CN105830027B CN201580003167.6A CN201580003167A CN105830027B CN 105830027 B CN105830027 B CN 105830027B CN 201580003167 A CN201580003167 A CN 201580003167A CN 105830027 B CN105830027 B CN 105830027B
Authority
CN
China
Prior art keywords
job
prefetched
requestor
tag
processing
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
CN201580003167.6A
Other languages
English (en)
Other versions
CN105830027A (zh
Inventor
W·P·斯奈德二世
R·E·凯斯勒
D·E·德弗
N·D·格迪瓦拉
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
Kaiwei LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kaiwei LLC filed Critical Kaiwei LLC
Publication of CN105830027A publication Critical patent/CN105830027A/zh
Application granted granted Critical
Publication of CN105830027B publication Critical patent/CN105830027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

公开了一种实现用于为网络处理器中的处理器核心预取并处理作业的方法和系统,包括:由请求者请求预取作业;确定可以为请求者预取作业;搜索该作业以进行预取;并且将找到的作业预取到与请求者相关联的一个或多个预取作业时隙中的一个时隙中。

Description

用于为网络处理器中的处理器核心预取并处理作业的方法和 装置
技术领域
本公开内容涉及网络处理器。更具体地,本发明针对为网络处理器中的处理器核心预取并处理作业。
背景技术
网络处理器是专门化处理器,常常以集成电路的形式来实现,集成电路具有被专门设计用于处理通过网络接收到的或传输的分组数据的特征组。使用例如根据开放系统互联(OSI)参考模型设计的协议来传输这种分组数据。OSI定义七个网络协议层(L1-7)。物理层(L1)表示实际接口,将设备连接到传输介质的电学接口和物理接口。数据链路层(L2)执行数据帧。网络层(L3)将数据格式化成分组。传输层(L4)处理端到端传输。会话层(L5)管理在各设备之间的通信,例如无论通信是半双工的还是全双工的。表示层(L6)管理数据格式化和表示,例如语法、控制代码、特殊图形和字符集。应用层(L7)允许例如通过文件传输、电子邮件和本领域普通技术人员已知的其他通信的在各用户之间的通信。
网络处理器可以针对上层网络协议(例如L4-L7)调度作业(即分组处理操作)并对作业进行排队并且被专门用于计算密集型任务,例如计算在分组中的整个有效载荷上的校验和管理TCP分段缓冲,并且一直在每次连接的基础上维持多个计时器,允许执行对接收到的分组中的上层网络协议的处理从而以线速转发分组。线速是通过其发送和接收数据的网络的数据传输率。通过处理协议从而以线速来转发分组,网络服务处理器不会减慢网络数据传输率。
为了改进网络处理器效率,经由调度模块来调度多个核心以执行处理。这种网络处理器的示例可以在美国专利no.7,895,431中找到,其中调度模块被公开为分组作业排序模块。
然而,随着多个处理器核心的增大的频率,在与调度模块通信中花费的时间量变成对性能的阻碍。具体地,在处理器请求作业与得到该作业之间的延时可以很长,从而导致很长的延时。
因此,在本领域中需要一种提供对上述问题以及额外的优点的解决方案的方法和装置。
发明内容
在本公开内容的一个方面中,公开了用于为网络处理器中的处理器核心预取并处理作业的方法和实现该方法的装置。在从属权利要求中公开了额外的方面。
附图说明
本文描述的前述方面将通过参考下面的描述在结合附图理解时变得更显而易见,其中:
图1描绘了根据本公开内容的方面的网络处理器的概念结构;
图2a描绘了根据本公开内容的方面的使得能够进行为网络处理器中的处理器核心预取并处理作业的过程的流程图的第一部分;以及
图2b描绘了根据本公开内容的方面的使得能够进行为网络处理器中的处理器核心预取并处理作业的过程的流程图的第二部分。
任何未引用的箭头或双箭头线指示在所描绘的实体之间的可能的信息流。附图标记中的符号“X”指示附图的元件的实例。
具体实施方式
除非另行限定,否则本文使用的所有术语(包括技术和科学术语)具有如本发明所属的本领域普通技术人员通常理解的相同的意义。将进一步理解,诸如在常用词典中定义的术语应当被解释为具有与它们在相关领域和本公开内容的背景下的意义一致的意义。
如本文中使用的,单数形式的“一”、“一个”和“所述”旨在还包括复数形式,除非上下文另行清楚指示。还将理解,术语“包括(comprise)”、“包括(comprises)”和/或“包括(comprising)”当在本说明书中使用时详细列举陈述的特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个多个其他特征、整数、步骤、操作、元件、部件和/或其组的存在或增加。术语“和/或”包括相关联的列出的项中的一个或多个的任何和全部组合。
各种公开的方面可以参考一个或多个示例性配置来说明。如本文中所使用的,术语“示例性”是指“用作示例、实例或图示”,并且不一定应当被理解为超过本文公开的其他配置的优选或优点。
在本文中将参考附图描述本发明的各个方面,除非明确指出,否则附图是本发明的概念配置的示意性图示。提供了本公开内容的各个方面以使得本领域普通技术人员能够实践本发明。对在本公开内容中呈现的各个方面的修改对于本领域普通技术人员而言将变得显而易见,并且本文公开的概念可以被扩展到其他应用。
图1描绘了网络处理器100的概念结构。在物理接口单元102处通过网络(未示出)接收分组。物理接口单元102将分组提供给网络处理器接口104。
网络处理器接口104通过检查包含在所接收的分组中的L2网络协议头中的各个字段来执行对所接收的分组的L2网络协议预处理。在网络处理器接口104已经执行了L2网络协议处理之后,将分组转发到分组输入单元106。
分组输入单元106执行对包含在所接收的分组中的L3和L4网络协议头的预处理,例如针对传输控制协议(TCP)/用户数据报协议(UDP)的校验和检查。分组输入单元106将分组数据写入到L2级缓存108和/或存储器112。缓存是被实施为用于临时存储可能被再次使用的数据的存储器块的部件,使得能够更快地服务针对该数据的未来请求。如果所请求的数据被包含在缓存(缓存命中)中,则该请求能够通过简单地读取缓存来服务,这是比较快的。否则(缓存未命中),数据必须从其原始存储位置被重新计算或提取,这是比较慢的。存储器112可以包括用于在临时或暂时的基础上存储指令和/或数据的(一个或多个)任何物理设备。预见到本领域技术人员已知的任何类型的存储器。在一方面中,存储器112在网络处理器100的外部,并且经由存储器控制器110来存取。分组输入单元106支持可编程缓冲大小并且能够将分组数据跨多个缓冲分布以支持大的分组大小。
在分组数据上需要的任何额外的作业(即额外的分组处理的另一操作)由运行在一个或多个处理器核心114上的软件实体来执行。尽管仅仅示出了两个处理器核心114_1、114_2,本领域普通技术人员将理解预见到其他数量的核心,包括单个核心。一个或多个处理器核心114中的每个通信耦合到L2缓存108。
作业由调度、同步和排序(SSO)单元116调度。一般地,作业是要执行在某种数据上的软件例程或处理程序。关于SSO单元116,作业是到存储器的指针,其中该存储器包含特定布局。在一方面中,存储器包括缓存108和/或存储器112。在一方面中,布局包括存储要由运行在处理器核心114中的一个或多个上的软件实体处理的、由运行在每个处理器核心114上的分组输入单元106或软件实体初始地创建的数据和/或指令的作业队列条目。在一方面中,作业队列条目还可以包括针对作业的元数据。在另一方面中,元数据可以被存储在作业队列122中。在一方面中,元数据可以包括分组指示符、标签和标签类型。
本领域技术人员将认识到,SSO单元116包括除了图1中明确描绘和描述的硬件单元之外的额外的硬件单元和相关联的文本。因此,对由SSO单元116执行的步骤或动作取决于SSO单元116的特定实现方式而由这种额外的硬件单元中的一个执行。
组120包括一个或多个作业队列121的汇集。尽管仅仅描绘了两个组,本领域普通技术人员将理解预见到其他数量的组。每个组121与至少一个处理器核心114相关联。当前,当运行在处理器核心114上的软件实体或处理器核心114本身请求作业时,不需要对不与处理器核心114相关联的组121进行判优,从而改进性能。尽管软件实体和处理器核心两者都可以为请求者,但是为了避免不必要的重复,在本公开内容的剩余部分中仅仅叙述了软件实体。
因为作业队列的数量与本公开内容的主体无关,所以为简单起见仅仅示出了单个作业队列,即准入队列;然而,除了准入队列121之外,组120还可以包括其他队列,例如被取消调度的队列、冲突的队列。这种队列的作用被公开在于2014年2月3日提交的WilsonP.Snyder II等人的题目为“A METHOD AND AN APPARATUS FOR WORK PACKET QUEUING,SCHEDULING,AND ORDERING WITH CONFLICT QUEUING”的共同待审的专利申请no.14/170,955中。
准入队列121可以包括至少一个条目,其包括作业以及任选的还包括标签和标签类型以使得能够将作业调度给一个或多个处理器核心114;因此允许在不同的处理器核心114上执行不同的作业。借助于示例,能够通过定义从其处理器核心114将接收作业的分组来将分组处理从一个处理器核心流水线输送到另一个处理器核心。
标签由SSO单元116用于根据由处理器核心114选择的标签和标签类型来对所调度的作业进行排序、调度和同步。标签允许针对相同流(从源到目的地)的作业被排序并被同步。标签类型选择如何对作业进行同步和排序。存在三种不同的标签类型。保证是经排序的,即保证作业排序,但不保证基元性。这种标签类型可以在分组处理的消除分段阶段期间被使用,使得针对相同分组流的分段被排序。保证是基元(atomic)的,即保证作业排序和基元性,换言之,当两个作业项具有相同的标签时,作业必须按顺序被处理,其中较早的作业在较晚的作业能够开始之前完成。这种标签类型可以被用于IPSec处理以提供在使用相同IPSec隧道的各分组之间的同步。因此,IPSec解密利用基元标签类型来执行。不保证未打上标签,即在处理器核心之中的作业排序,并且标签与该标签类型不相关。这种标签可以被用于处理不同的分组流,其将可能具有不同的标签,所以将很可能未相对于彼此被排序和同步,并且能够在不同的处理器核心114上完全并行地来运行。
作业队列条目可以通过存储器112中的硬件单元(例如分组输入单元116)来创建。添加作业请求可以之后经由添加作业队列118被提交给SSO单元116。备选地,作业队列条目可以被创建并且添加作业请求可以由在处理器核心114处运行的软件实体来提交。在一方面中,作业队列条目被创建并且添加作业请求在每个分组到达后经由添加作业实体118来提交。在其他方面中,作业队列条目可以在完成发送分组、完成对来自分组的数据的压缩/解压缩和/或本领域普通技术人员已知的其他事件后被创建。
在接收到添加作业请求后,SSO单元116将作业、与作业相关联的标签和标签类型添加到与由添加作业请求指示的组120相对应的准入队列121中。在一方面中,准入队列121可以充溢到缓存108和/或存储器112。
运行在处理器核心114上的软件实体可以经由作业时隙结构126从SSO单元116请求作业。作业时隙结构126包括存储器。如前述所公开的,作业请求指示与处理器核心114相关联的一个或多个组;因此,仅仅那些组需要在其中被判优。响应于请求,得到作业判优器122在与请求处理器核心114相关联的具有准入队列121中的一个中的作业的各组120之中进行判优,评价在准入队列121的顶部的作业的标签,选择准入队列121中的一个并将该作业提供到与如前述详细公开的请求处理器核心114相对应的作业时隙结构126中。额外地,得到作业判优器122将与作业相关联的标签和标签类型提供给存储器,其是与存储器以及网络处理器100的其他元件接口连接的标签链管理器的部分。预见到本领域技术人员已知的任何类型的存储器。在一方面中,存储器包括内容可寻址存储器(CAM)。标签链管理器124因此通过保持跟踪与被提供到作业时隙结构126中的作业相对应的标签来协助SSO单元116说明归因于排序或基元要求而不能够被并行处理的作业;因此,知道每个处理器核心114正在进行什么作业。
作业时隙结构126中的每个包括至少两个作业时隙126X X。作业时隙结构126_1中的作业时隙中的一个,例如作业时隙126_1_1可以包含当前在对应的处理器核心114_1中挂起的作业;作业时隙中的另一个,例如作业时隙126_1_2可以包含被预取以用于处理的在当前挂起的作业之后开始的作业,即在处理器核心114_1处完成作业时隙126_1_2中的作业。因此,处理器核心114_1可以在完成当前挂起的作业的处理之后立即开始处理所预取的作业;因此避免或消除延时。尽管仅仅示出了一个所预取的作业时隙,本领域技术人员将理解预见到多于一个所预取的作业时隙。
参考图2,描绘了根据本公开内容的方面的使得能够进行为网络处理器中的处理器核心预取并处理作业的过程的流程图的第一部分。为了澄清在概念结构的某些元件之间的关系和在使得能够进行图1中描绘的为网络处理器中的处理器核心预取并处理作业的过程的结构的元件之中的信息流,在图2的描述中对图1的结构元件的引用采用了括号。
在步骤202中,运行在处理器核心(114)中的一个上的软件实体准备好获得作业以进行处理。运行在例如处理器核心(114_1)上的软件实体发出经由相关联的作业时隙结构(126_1)从SSO单元(116)请求作业的GET_WORK。如前述所公开的,作业请求指示与处理器核心(114_1)相关联的一个或多个组;因此,仅仅那些组需要在其中被判优。在一方面中,GET_WORK请求由到输入/输出(I/O)地址的加载指令来启动。在另一方面中,GET_WORK请求由存储指令启动并被返回到由处理器核心(114_1)指定的存储器位置中。该过程在步骤204中继续。在步骤204中,SSO单元(116)通过确定所有所预取的作业时隙(121_1_2)是否包括所预取的作业来确定所预取的作业是否准备好用于处理器核心(114_1)。在一方面中,SSO单元(116)检查所有所预取的作业时隙(126_1_2)的内容。在另一方面中,SSO单元(116)针对所有所预取的作业时隙(126_1_2)检查指示特定所预取的作业时隙(126_1_2)是为空还是不为空的相关联的位。当确定是肯定的,即没有所预取的作业时隙(126_1_2)是空的,因此包括所预取的作业时,该处理在步骤206中继续;否则,该处理在步骤208中继续。
在步骤206中,SSO单元(116)提供所预取的作业并且当与所预取的作业相关联的标签和标签类型存在时还将来自所预取的作业时隙(126_1_2)的标签和标签类型提供到作业时隙(126_1_1),并且删除所预取的作业并且当与所预取的作业相关联的标签和标签类型存在时还删除来自所预取的作业时隙(126_1_2)的标签和标签类型。该处理在步骤216中继续。
在步骤216中,作业时隙(126_1_1)将作业提供给处理器。在一方面中,提供对应于将指令加载到输入/输出(I/O)地址。
在步骤208中,判优器(122)通过确定与处理器核心(114_l)相关联的组(120)中的任何是否具有准入队列(121)中的作业并且可以因此在判优中进行竞投(即参与到判优中)来搜索作业。得到作业判优器(122)在仅仅具有准入队列(120)中的作业的组(120)之中进行判优以选择一个组(120),来自其的作业将被提供给作业时隙(126_1_1)并且最终被提供给运行在处理器核心(114_1)上的软件实体。本领域普通技术人员将理解,可以使用由本领域中已知的判优器(122)采用的任何判优,例如循环制过程。可以由判优器(122)采用的新颖的判优被公开在于2014年2月3日提交的Wilson P.Snyder II等人的题目为“A METHODAND AN APPARATUS FOR WORK REQUEST ARBITRATION IN A NETWORK PROCESSOR”的共同待审的专利申请no.14/171,108中。该处理在步骤210中继续。
在步骤210中,SSO单元(116)确定判优器(122)是否找到针对处理器核心(114_1)的作业。当确定是肯定的时,该处理在步骤212中继续;否则,该处理在步骤214中继续。
在步骤212中,判优器(122)经由SSO单元(116)提供找到的作业,并且的那个与找到的作业相关联的标签和标签类型存在时还将标签和标签类型提供给作业时隙(126_1_1)。该处理在步骤216中继续。
在步骤214中,SSO单元(116)将未找到作业的指示符提供给处理器核心(114_1)。在其中到输入/输出(I/O)地址的加载指令被用于GET_WORK的方面中,指示没有作业的特定数据值被返回到加载指令;否则,标志被设置,处理器核心(114_1)可以在稍后的时间读取该标志。该处理在步骤218中继续。
在步骤218中,运行在处理器核心(114_1)上的软件实体确定是否已经提供了作业。当确定是否定的时,软件实体可以进入低功率模式,执行非作业相关的处理,或者可以发出另一GET_WORK请求,如在步骤202中所公开的。非作业相关的处理包括未经由SSO单元(116)处理的任何处理。借助于示例,这种非作业可以包括用户处理、内核处理或本领域普通技术人员已知的其他处理。当确定是肯定的时,该处理在步骤220中继续。
在步骤220中,运行在处理器核心(114_1)上的软件实体处理该作业。这通常涉及使用作业时隙(126_1_1)中的作业作为到存储在缓存(108)和/或存储器(112)中的作业队列条目的指针。SSO单元(116)确定地址的范围,其从要从存储在缓存(108)中的数据结构取消引用和读取的或从存储器(112)被加载到缓存(108)中的指针开始。
当作业队列条目首次被存取时,读取作业队列条目归因于缓存(108)尚未包含指令和/或数据的事实而是缓慢的,并且存取存储器(112)因为存储器(112)可能在物理上远离网络处理器(100)而是缓慢的。然而,预取增大了取消引用的地址的范围指示作业队列条目已经处于缓存(108)中的可能性,这得到比如前述所公开的存储器(112)更快的存取。该处理在步骤222中继续。
在步骤222中,为了加速下一作业,运行在处理器核心(114_1)上的软件实体发出PRE-FETCH_WORK,经由相关联的作业时隙结构(126_1)请求要被预取到SSO单元(116)的作业,...关于GET_WORK,处理器核心还可以为请求者。PRE-FETCH_WORK请求可以在完成当前处理的作业之后被发出。在一方面中,PRE-FETCH_WORK请求为到I/O地址的存储指令。当在下面的步骤224-238中所公开的预取过程由SSO单元(116)执行时,在处理器核心(114_1)处运行的软件实体可以执行先前作业和/或其他处理,例如处理非作业相关任务,如前述所公开的;因此,改进网络处理器(100)的效率。
如果在处理器核心(114_1)处运行的软件实体在SSO单元(116)完成预取过程之前完成这些其他过程,则软件实体可以发出另一GET_WORK请求,如在前述步骤202中所公开的。如在流程图和相关文本中所公开的。所请求的作业和所请求的预取作业由SSO单元(116)处理。该处理在步骤224中继续。
在步骤224中,SSO单元(116)通过确定所有所预取的作业时隙(121_1_2)是否包括所预取的作业来确定额外的作业是否被接受并且因此是否为处理器核心(114_1)被预取。在一方面中,SSO单元(116)检查所有所预取的作业时隙(126_1_2)的内容。在另一方面中,SSO单元(116)针对所有所预取的作业时隙(126_1_2)检查指示特定所预取的作业时隙(126_1_2)是为空还是不为空的相关联的位。当确定是肯定的时,该处理在步骤226中继续;否则,该处理在步骤228中继续。
在步骤226中,SSO单元(116)完成当前过程。在另一方面中,SSO单元(116)进一步生成错误中断。将中断信号传送给在网络处理器(100)处的软件实体,其记录错误以指示编程缺陷。在任一方面中,该处理在步骤202中继续。
在步骤228中,判优器(122)通过如在前述步骤208中公开的相同的过程来搜索作业。该处理在步骤230中继续。
在步骤230中,SSO单元(116)确定判优器(122)是否找到针对处理器核心(114_1)的作业。当确定是否定的时,该处理在步骤231中继续;否则,该处理在步骤232中继续。
在步骤231中,SSO单元(116)完成当前过程。该处理在步骤202中继续。
在步骤232中,判优器(122)经由SSO单元(116)将找到的作业提供给预取作业时隙(126_1_2)。在一方面中,预取作业可以包括“标签”。该处理在步骤234中继续。
在步骤234中,SSO单元(116)确定与找到的作业相关联的标签是否存在。当确定是肯定的时,该处理在步骤236中继续;否则,该处理在步骤238中继续。
在步骤236中,SSO单元(116)将找到的作业的标签与针对为相同的处理器核心(114_1)调度的另一作业的标签进行比较。当所述比较指示所预取的作业是基元的或相对应另一作业被排序时,该处理在步骤238中继续;否则,该处理在步骤231中继续。
在步骤238中,当已经处理了在所预取的作业之前的所有作业时,运行在处理器核心(114_1)上的软件实体处理该作业。SSO单元(116)提供所预取的作业并且当与所预取的作业相关联的标签和标签类型存在时还将来自所预取的作业时隙(126_1_2)的标签和标签类型提供到作业时隙(126_1_1),并且删除所预取的作业并且当与所预取的作业相关联的标签和标签类型存在时还删除来自所预取的作业时隙(126_1_2)的标签和标签类型。SSO单元(116)确定地址的范围,其从要从存储在缓存(108)中的数据结构取消引用和读取的或从存储器(112)被加载到缓存(108)中的指针开始。
在一方面中,地址的范围是物理地址;在另一方面中,地址的范围是虚拟存储器地址,其使用请求GET_WORK或PRE-FETCHWORK的软件实体的虚拟存储器背景来转化。这在处理器核心(114_1)没有意识到预取时发生。在一方面中,处理器的PRE-FETCH WORK能够选择性地使得能够进行该预取。该处理在步骤202中继续。
提供了本公开内容的各个方面以使得本领域普通技术人员能够实践本发明。对这些方面的各种修改对于本领域普通技术人员而言将是显而易见的,并且本文公开的概念可以被应用到其他方面而不脱离本发明的精神或范围。因此,本发明不旨在被限于本文示出的方面,而是被给予本文中公开的原理和新颖特征一致的最广范围。
因此,借助于示例,本领域普通技术人员将理解,流程图不是穷举的,因为某些步骤可以被添加或者不是必要的和/或可以基于特定实现方式来并行地执行。
结合在本公开内容中对于本领域普通技术人员已知或稍后出现的各个方面描述的各个说明性逻辑块、模块、电路和算法步骤的所有结构和功能等价要件通过引用明确地并入本文并且旨在被权利要求书包含。这种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
本领域技术人员将理解,信息和信号可以使用各种不同的科技和技术来表示。例如,可以在上述描述中引用的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光学场或粒子、或其任何组合。
此外,本文公开的内容都不旨在专用于公众,无论这种公开内容是否明确记载在权利要求书中。没有权利要求元件要基于35U.S.C.§1 12第六段的规定来理解,除非使用词语“用于...装置”来明确记载元件或者在方法权利要求的情况下使用词语“用于...步骤”来记载元件。

Claims (16)

1.一种用于为网络处理器中的处理器核心预取并处理作业的方法,包括:
由包括执行软件实体的处理器核心中的一个处理器核心的请求者请求作业预取;
确定可以为所述请求者预取用于处理的作业;
通过确定与请求者相关联的多个组中是否有任何一组具有作业来搜索作业;
当找到所述作业时,将所述作业从所述多个组中的一个组预取到与所述请求者相关联的一个或多个预取作业时隙中的一个时隙中;
确定预取的作业是否包括标签;
当所述预取的作业包括所述标签时,将所述标签与为相同请求者调度的另一作业的标签进行比较;以及
当所述比较指示所述预取的作业是基元的或经排序的时、或者当所述预取的作业不包括所述标签时,处理所述预取的作业。
2.根据权利要求1所述的方法,其中由所述请求者请求作业预取包括:
在完成当前处理的作业之前请求作业预取。
3.根据权利要求1所述的方法,其中由所述请求者请求作业预取包括:
由所述处理器核心中的所述一个处理器核心请求作业预取。
4.根据权利要求1所述的方法,其中由所述请求者请求作业预取包括:
由运行在所述处理器核心中的所述一个处理器核心上的软件实体请求作业预取。
5.根据权利要求1所述的方法,其中确定可以为所述请求者预取用于处理的作业包括:
确定与所述请求者相关联的所述一个或多个预取作业时隙中的至少一个时隙不包括作业。
6.根据权利要求1所述的方法,其中处理所述预取的作业包括:
将所述预取的作业从所述一个预取作业时隙提供到第二预取作业时隙;
将所述预取的作业从所述一个预取作业时隙中删除。
7.根据权利要求1所述的方法,其中处理所述预取的作业还包括:
当已经处理了所述预取的作业之前的所有作业时,处理所述预取的作业。
8.根据权利要求1所述的方法,还包括:
当所述比较指示所述预取的作业未被打上标签时请求作业预取。
9.一种用于为网络处理器中的处理器核心预取并处理作业的装置,包括:
请求者,被配置为从调度、同步和排序单元请求作业预取;
所述调度、同步和排序单元被配置为:
确定可以为所述请求者预取用于处理的作业;以及
将由判优器找到的作业预取到与所述请求者相关联的一个或多个预取作业时隙中的一个时隙中;
确定预取的作业是否包括标签;
当所述预取的作业包括所述标签时,将所述标签与为相同请求者调度的另一作业的标签进行比较;
当所述比较指示所述预取的作业是基元的或经排序的时、或者当所述预取的作业不包括所述标签时,处理所述预取的作业;以及
所述判优器被配置为:
当可以为所述请求者预取所述作业时通过确定与请求者相关联的多个组中是否有任何一组具有作业来搜索作业。
10.根据权利要求9所述的装置,其中所述请求者被进一步配置为:在完成当前处理的作业之前请求作业预取。
11.根据权利要求9所述的装置,其中所述请求者包括处理器核心。
12.根据权利要求9所述的装置,其中所述请求者包括运行在处理器核心上的软件实体。
13.根据权利要求9所述的装置,其中所述调度、同步和排序单元通过被配置为进行以下项来确定可以为所述请求者预取用于处理的作业:
确定与所述请求者相关联的所述一个或多个预取作业时隙中的至少一个时隙不包括作业。
14.根据权利要求9所述的装置,其中所述调度、同步和排序单元被配置为通过被配置为进行以下各项来处理所述预取的作业:
将所述预取的作业从所述一个预取作业时隙提供给第二预取作业时隙;以及
将所述预取的作业从所述一个预取作业时隙中删除。
15.根据权利要求9所述的装置,其中所述调度、同步和排序单元被配置为当已经处理了在所述预取的作业之前的所有作业时,处理所提供的所述预取的作业。
16.根据权利要求9所述的装置,其中所述请求者被进一步配置为:当所述比较指示所述预取的作业未被打上标签时请求作业预取。
CN201580003167.6A 2014-02-03 2015-02-02 用于为网络处理器中的处理器核心预取并处理作业的方法和装置 Active CN105830027B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/171,290 2014-02-03
US14/171,290 US9811467B2 (en) 2014-02-03 2014-02-03 Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
PCT/US2015/014119 WO2015117086A1 (en) 2014-02-03 2015-02-02 A method and an apparatus for pre-fetching and processing work for processor cores in a network processor

Publications (2)

Publication Number Publication Date
CN105830027A CN105830027A (zh) 2016-08-03
CN105830027B true CN105830027B (zh) 2019-12-06

Family

ID=53754895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580003167.6A Active CN105830027B (zh) 2014-02-03 2015-02-02 用于为网络处理器中的处理器核心预取并处理作业的方法和装置

Country Status (3)

Country Link
US (1) US9811467B2 (zh)
CN (1) CN105830027B (zh)
WO (1) WO2015117086A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474576B2 (en) * 2015-11-10 2019-11-12 International Business Machines Corporation Prefetch protocol for transactional memory
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1487410A (zh) * 2003-02-11 2004-04-07 智慧第一公司 快取线配置与初始化之装置及方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
US6003114A (en) * 1997-06-17 1999-12-14 Emc Corporation Caching system and method providing aggressive prefetch
US7167916B2 (en) * 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
EP1486875A1 (en) * 2003-06-12 2004-12-15 STMicroelectronics Limited Allowing multiple simultaneous acccesses to a cache
US20050210472A1 (en) * 2004-03-18 2005-09-22 International Business Machines Corporation Method and data processing system for per-chip thread queuing in a multi-processor system
US7238218B2 (en) * 2004-04-06 2007-07-03 International Business Machines Corporation Memory prefetch method and system
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US8356143B1 (en) * 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
WO2008077267A1 (en) * 2006-12-22 2008-07-03 Intel Corporation Locality optimization in multiprocessor systems
US7620749B2 (en) * 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
US9003410B2 (en) * 2007-01-30 2015-04-07 Hewlett-Packard Development Company, L.P. Abstracting a multithreaded processor core to a single threaded processor core
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8510741B2 (en) * 2007-03-28 2013-08-13 Massachusetts Institute Of Technology Computing the processor desires of jobs in an adaptively parallel scheduling environment
US20080271030A1 (en) * 2007-04-30 2008-10-30 Dan Herington Kernel-Based Workload Management
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US8200905B2 (en) * 2008-08-14 2012-06-12 International Business Machines Corporation Effective prefetching with multiple processors and threads
US8537832B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Exception detection and thread rescheduling in a multi-core, multi-thread network processor
US7975090B2 (en) * 2009-07-07 2011-07-05 International Business Machines Corporation Method for efficient I/O controller processor interconnect coupling supporting push-pull DMA read operations
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US8549524B2 (en) * 2009-12-23 2013-10-01 Sap Ag Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems
US9619390B2 (en) * 2009-12-30 2017-04-11 International Business Machines Corporation Proactive prefetch throttling
IL211490A (en) * 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US9652301B2 (en) * 2010-09-15 2017-05-16 Wisconsin Alumni Research Foundation System and method providing run-time parallelization of computer software using data associated tokens
US9152468B2 (en) * 2010-10-25 2015-10-06 Samsung Electronics Co., Ltd. NUMA aware system task management
US8473658B2 (en) * 2011-10-25 2013-06-25 Cavium, Inc. Input output bridging
EP2771721A4 (en) * 2011-10-28 2017-03-29 The Regents of The University of California Multiple-core computer processor for reverse time migration
US9059945B2 (en) 2011-10-31 2015-06-16 Cavium, Inc. Work request processor
US9330002B2 (en) * 2011-10-31 2016-05-03 Cavium, Inc. Multi-core interconnect in a network processor
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9215205B1 (en) * 2012-04-20 2015-12-15 Infoblox Inc. Hardware accelerator for a domain name server cache
US20130318280A1 (en) * 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
EP2770430A1 (en) * 2013-02-25 2014-08-27 Texas Instruments France System and method for scheduling atomic jobs in a multi-core processor to avoid processing jobs of the same atomicity in parallel
US9632977B2 (en) * 2013-03-13 2017-04-25 Nxp Usa, Inc. System and method for ordering packet transfers in a data processor
US20140282578A1 (en) * 2013-03-14 2014-09-18 Justin S. Teller Locality aware work stealing runtime scheduler
US20160154677A1 (en) * 2013-03-15 2016-06-02 Rajkishore Barik Work Stealing in Heterogeneous Computing Systems
US9286223B2 (en) * 2013-04-17 2016-03-15 Advanced Micro Devices, Inc. Merging demand load requests with prefetch load requests
US9838471B2 (en) * 2014-02-03 2017-12-05 Cavium, Inc. Method and an apparatus for work request arbitration in a network processor
US20150220872A1 (en) * 2014-02-03 2015-08-06 Cavium, Inc. Method and an apparatus for work packet queuing, scheduling, and ordering with conflict queuing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1487410A (zh) * 2003-02-11 2004-04-07 智慧第一公司 快取线配置与初始化之装置及方法

Also Published As

Publication number Publication date
US9811467B2 (en) 2017-11-07
CN105830027A (zh) 2016-08-03
WO2015117086A1 (en) 2015-08-06
US20150220360A1 (en) 2015-08-06

Similar Documents

Publication Publication Date Title
US11620255B2 (en) Time sensitive networking device
US10015117B2 (en) Header replication in accelerated TCP (transport control protocol) stack processing
US7558925B2 (en) Selective replication of data structures
US8850125B2 (en) System and method to provide non-coherent access to a coherent memory system
US9465662B2 (en) Processor with efficient work queuing
US7844752B2 (en) Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
US9063928B2 (en) Processing data packets from a receive queue in a remote direct memory access device
US20200250112A1 (en) Handling an input/output store instruction
US11579874B2 (en) Handling an input/output store instruction
US11693809B2 (en) Asymmetric read / write architecture for enhanced throughput and reduced latency
US10210131B2 (en) Synchronous data input/output system using prefetched device table entry
US7325099B2 (en) Method and apparatus to enable DRAM to support low-latency access via vertical caching
CN105830027B (zh) 用于为网络处理器中的处理器核心预取并处理作业的方法和装置
CN116685943A (zh) 可编程原子单元中的自调度线程
US20150220872A1 (en) Method and an apparatus for work packet queuing, scheduling, and ordering with conflict queuing
US9838471B2 (en) Method and an apparatus for work request arbitration in a network processor
US20140160954A1 (en) Host ethernet adapter frame forwarding
CN115185867A (zh) 处理访问请求的方法
JP2012164209A (ja) キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California, USA

Applicant before: Cavium, Inc.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200426

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200426

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Kayo fukuboku

Patentee before: Cavium, Inc.