CN101546276B - 多核环境下实现中断调度的方法及多核处理器 - Google Patents
多核环境下实现中断调度的方法及多核处理器 Download PDFInfo
- Publication number
- CN101546276B CN101546276B CN2008100841514A CN200810084151A CN101546276B CN 101546276 B CN101546276 B CN 101546276B CN 2008100841514 A CN2008100841514 A CN 2008100841514A CN 200810084151 A CN200810084151 A CN 200810084151A CN 101546276 B CN101546276 B CN 101546276B
- Authority
- CN
- China
- Prior art keywords
- core
- group
- interrupt
- interruption
- token
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Abstract
本申请公开了一种在多核处理器环境下实现中断调度的方法以及相应的多核处理器和计算机系统。其中,多核处理器包含中断调度器和N个具有中断处理能力的核心,且所述N个核心被分为多个核心组,其中N为大于1的正整数,所述方法包括以下步骤:a.根据从外部到来的中断,生成令牌;b.根据所述中断,确定优先处理该中断的核心组,作为热组;以及c.将令牌传送到热组,并从热组中的第一个核心开始,依次判断是否满足中断调度结束条件,并且一旦确定满足了中断调度结束条件,就将当前核心确定为要处理所述中断的响应核心。利用本发明,能够有效地减小处理器响应中断的延迟,从而提供优化的处理器性能。
Description
技术领域
本发明总体上涉及计算机领域的中断处理技术,并且尤其涉及多核处理器环境下的中断处理技术。
背景技术
随着计算机技术的快速发展以及网络线路速度的快速增加,对TCP/IP包的处理已经成为计算机系统的日益复杂的工作负荷。例如,以太网线路的速度正趋于达到和超过40Gb/s,因此,如何有效地处理这种高速甚至超高速的包接收和/或包发送任务,已经成为一个目前急待解决的问题。
总体上来说,网络接口卡(NIC)与处理器之间采用轮询和中断两种方法进行通信,但是目前更多地使用中断方法来通信。中断处理程序的处理过程实际上是包处理方法。当网络接口卡具有要由处理器处理的包时,它把包的数据直接存储器存取(DMA)到内核缓冲器中,并由此引起中断;而处理器则切换到内核模式,执行中断处理例程(Interrupt ServiceRoutine,ISR),以便对中断作出响应,然后处理器返回到先占的执行点,其中把对包的处理留作进程级(process-level)任务来对待。中断驱动的包处理在NIC中断的频率低时可以很好地进行。但是,当有太多的中断到达时,处理器会出现所谓的“活锁(livelock)”现象,这意味着处理器不能挂起并且不能处理任何用户程序。
为了在计算机系统中有效地实现中断,目前已经提出了许多方法。例如,中断合并(interrupt coalition)(主要应用于包的接收,其中在引起中断前一次性接收多个包)、混合轮询中断、TCP减负引擎(TCP OffloadEngine,TOE)和RDMA(Remote Direct Memory Access,远程直接存储器采取)/DDP(Direct Data Placement,直接数据放置)等方法是近年来提出的几种比较有效的解决方案。然而,中断合并和混合轮询中断这两种方法都存在延迟不确定的问题;而TOE和RDMA方法则由于使用非标准接口而需要对NIC和内核进行较大修改,这通常是不受硬件和/或软件开发商所欢迎的。此外,使用TOE技术的NIC(即,TOE NIC)的成本也偏高。
自多核技术提出后,多核处理器已经成为大家公认的处理器设计趋势。而且,随着网络线路速度的快速增加,NIC中断的频率大幅增加。例如,以以太网为例,当线路速度增加到40Gb/s时,对于最大为1500字节大小的包,在没有采用中断合并的情况下,中断率(即,单位时间内的中断数目)为3200000/s,而即使采用了中断合并且假设合并因数为10,中断率也仍然为320000/s,这将会击垮一个5GHz P6 CPU。然而,在多核处理器环境下,每一个核心仅具有中等处理能力,都不足以强大到能够处理这么高频率的中断,也就是说,需要将到来的多个中断调度分给多个核心来处理。而且,在实际运行的多核处理器中,不同核心中的工作负荷是不同的,也就是说,不同的核心处理中断所需的时间是不同的,并且顺序到来的多个包彼此之间可能具有控制相关性,但是彼此之间的数据相关性则是低的,且NIC所传送的包也不太可能是需要重传的坏包,因此,在向多个核心调度从外部到来的中断(尤其是NIC中断)时,需要考虑高速缓存关联(cache affinity)问题。
图1示出了一个典型的多核环境。如图1所示,多核处理器120包括中断调度器130和K个核心140(分别用Core1、Core2、……、CoreK表示),并且每个核心与中断调度器130通过总线直接连接。从外部到来的I/O中断、NIC中断等中断信号经由可编程中断控制器(PIC)110传输到多核处理器120内的中断调度器130后,中断调度器130根据中断标识(即,中断ID),随机地或者依照预定的规则(例如,基于中断优先级等)从N个核心140中选择或者确定一个核心作为热核,并将中断信号传送到热核来进行处理。
已有的这些中断调度方法并没有考虑到每个核心的不同工作负荷问题,和/或没有考虑到高速缓存关联问题,因此,都无法提供优化的能有效处理中断的处理器性能。因此,迫切需要一种能够在多核环境下有效实现中断调度的机制。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
为了至少解决现有技术的上述问题之一,本发明的目的之一是提供一种在多核处理器环境下有效实现中断调度的方法。
本发明的另一个目的是提供一种可以实现上述中断调度方法的多核处理器以及包含该多核处理器的计算机系统。
为了实现上述目的,根据本发明的一个方面,提供了一种在多核处理器环境下实现中断调度的方法,其中,多核处理器包含中断调度器和N个具有中断处理能力的核心,且所述N个核心被分为多个核心组,其中N为大于1的正整数,所述方法包括以下步骤:a.根据从外部到来的中断,生成令牌;b.根据所述中断,确定优先处理该中断的核心组,作为热组;以及c.将令牌传送到热组,并从热组中的第一个核心开始,依次判断是否满足中断调度结束条件,并且一旦确定满足了中断调度结束条件,就将当前核心确定为要处理所述中断的响应核心。
根据本发明的另一个方面,还提供了一种多核处理器,,包括:N个具有中断处理能力的核心,其中所述N个核心被分为多个核心组,并且N为大于1的正整数;以及中断调度器,用于根据从外部到来的中断,生成令牌,确定优先处理该中断的核心组作为热组,并且将令牌传送到热组,其中,从热组中的第一个核心开始,依次判断是否满足中断调度结束条件,并且一旦确定满足了中断调度结束条件,当前核心就被确定为要处理所述中断的响应核心。
根据本发明的另一个方面,还提供了一种计算机系统,包括:以上所述的多核处理器,其与可编程中断控制器连接,其中,N个核心的分组由计算机操作系统实现。
本发明提供了一种多核环境下的基于令牌的中断调度机制,其中,根据外部到来的中断生成令牌,并将令牌在有限数目的核心中传递,依次判断当前核心是否为要处理所述中断的响应核心。通过利用根据本发明的中断调度机制,能够有效地减小处理器响应中断的延迟,从而提供优化的处理器性能。
本发明的另一个优点在于,在利用根据本发明的中断调度机制进行中断调度时,可以根据中断处理的历史记录等,动态地修改或者更新中断调度器中存储的优先处理各中断的核心组的组ID,以便可以更快地确定可用于响应当前中断的核心组,从而可以利用高速缓存的局部性特点提高中断处理效率。
通过以下结合附图对本发明的最佳实施例的详细说明,本发明的这些以及其他优点将更加明显。
附图说明
本发明可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本发明的优选实施例和解释本发明的原理和优点。在附图中:
图1示出了一个典型的多核环境的示意性框图;
图2示出了根据本发明实施例的可以有效实现中断调度的多核环境的示意性框图;以及
图3示出了根据本发明的实施例在图2所示的多核环境下实现中断调度的方法的流程图。
本领域技术人员应当理解,附图中的元件仅仅是为了简单和清楚起见而示出的,而且不一定是按比例绘制的。例如,附图中某些元件的尺寸可能相对于其他元件放大了,以便有助于提高对本发明实施例的理解。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
图2示出了根据本发明一个实施例的可以有效实现中断调度的多核环境的示意性框图。在此,假定多核处理器220中一个以上的核心、例如N个核心(其中N为大于1的正整数)而不是所有的核心都能够处理中断,因此,为了简单起见,图2中仅仅示出了具有中断处理能力的处理器核心240(分别用Core 1、……、Core N表示),并且在下文中为了简洁起见也仅仅描述这些具有中断处理能力的核心。
在图2所示的多核环境下,N个核心240被分为n个组(即,核心组),并且在图中分别用Group 1、……、Group n表示。在此,所描述的分组是逻辑分组过程,可由例如计算机操作系统完成,并且可以通过例如以下方式来实现:在每一个核心的通用中断控制器(UIC)中设置有下一核号字段,在其中存储与该核心同一组的下一个核心的标识(即,核ID),而在每一核心组的最后一个核心中存储中断调度器ID,并且将每一组的组ID设置为等于该组中第一个核心的核ID。在此,可以将逻辑分组得到的各个核心组的组ID存储在中断调度器中230,但是本发明并不局限于此,本领域技术人员也可以根据需要将其存储在其他位置。
本领域技术人员应当明白,上述分组实现过程仅仅是示例性的,显然也可以根据实际需要采用其他的方法对核心进行分组,并且也可以将组ID设置为其他的值,只要能够根据每个核心组的组ID确定每一核心组中的第一个核心并进而确定核心组中的其余核心即可。
对于从外部到来的每一个中断(包括I/O中断、NIC中断等),优选由一个指定的核心组(以下称为“优选核心组”,是用于优先处理该中断的核心组)来对其进行处理,而当该组中的所有核心都不可用来处理该中断时,则从其他的N-1个核心组(即,非优选核心组的核心组,也可以称为备选核心组)中任意选择一个核心组来对该中断进行处理。在下文中,为了便于描述,将作为判断组中的核心是否可用来处理中断的判断对象的那个核心组称为“热组”。为此,在中断调度器230中预先存储一个中断调度表,其中至少存储有各个中断的中断ID、以及用来优先处理各个中断的优选核心组的组ID,以便使中断调度器230能够根据由PIC 210传来的到来中断的中断ID,确定与其对应的优选核心组作为热组,并且在组中的每个核心都不可用时,选择备选核心组之一作为热组。
中断调度器230根据来自PIC 210的某一中断信号的中断ID,生成一个令牌,并将令牌传送到热组,从热组中的第一个核心开始,直至组中的最后一个核心,依次判断当前核心是否能够抓住该令牌(即,核心是否可用来处理这个到来的中断)。在此,每个核心240都可以利用现有技术中已知的任何一种方法来获知它的当前工作状态(可以包括例如其上的当前工作负荷、其当前正在处理的中断信号等),并据此来决定它是否可用于处理每个到来的中断。
在此,令牌中至少包含以下四个字段:(1)中断号:用于存储到来中断的中断ID;(2)目的地核号,用于存储令牌要被传往的下一个核心的核ID;(3)TTL,它的值用于表示令牌的生命周期长短,当TTL=0时,表示令牌的生命周期结束;以及(4)响应核号,用于存储要对该到来中断进行处理的核心的核ID。
下面结合图3所示的流程图对根据本发明如何在图2所示的多核环境下实现中断调度进行描述。图3示出了根据本发明实施例在图2所示的多核环境下实现的中断调度过程300的示意性流程图。
如图3所示,在步骤S305,中断调度器230从PIC 210中接收到一个外部到来的中断信号,然后在步骤S310,根据所接收的中断信号的中断ID,按照例如以上描述的方法生成令牌,即,对令牌的至少上述四个字段进行初始化。例如,中断调度器230根据中断ID生成令牌时,可以将目的地核号初始化为与该中断ID相对应的热组(即,优选核心组,可以通过例如参考其中存储的中断调度表来确定)中的第一个核心的核ID,将响应核号初始化为NULL(空值),并且将TTL初始化为一个预定值(例如,可以等于热组中的核心数目)。当然,也可以将令牌中的上述字段初始化为其他的值。
在步骤S315,中断调度器230根据所述中断ID,例如通过参考其中存储的中断调度表,确定与其对应的优选核心组作为热组(并因此可以确定该组中的第一个核心)。在此,假设热组为图2中所示的Group m,并且其中的核心依次为Core i、Core j、……、Core p。
接下来,在步骤S320,中断调度器230将在步骤S310中生成的令牌传送到热组中的第一个核心(在此为Core i)。然后,在步骤S325,当前核心根据其上的工作负荷确定它是否可用于处理这个到来的中断。如果步骤S325的判断结果为是,即,如果确定当前核心可用于处理该到来的中断,则在步骤S330,当前核心修改令牌,即,在令牌的响应核号字段中填入当前核心的核ID,将TTL的值减1,并将目的地核号字段中的值修改为中断调度器ID,然后将修改后的令牌发送回中断调度器230。随后,在步骤S335,结束中断调度过程300。
如果步骤S325的判断结果为否,即,如果确定当前核心不可用,则在步骤S340,判断当前TTL的值是否为零。如果在步骤S340确定当前TTL=0,这表示令牌的生命周期结束,则处理过程进行到步骤S360,强制当前核心作为要对该中断进行处理的响应核心,并且处理过程进行到步骤S365。步骤S365和S370的处理与步骤S330和S335的处理类似,因此就不再详述了。
如果在步骤S340确定TTL≠0,则在步骤S345,将令牌中TTL的值减1,并将目的地核号字段中的值修改为当前核心中下一核号字段的值。然后,在步骤S350,判断当前核心是否为当前组中的最后一个核心(例如,可以通过比较当前核心的所述下一核号字段的值和中断调度器ID来判断,当二者相同时,确定当前核心为当前组中的最后一个核心)。如果当前核心不是组中的最后一个核心,则在步骤S355,按照所述目的地核号字段的值,将令牌传送到同组中的下一个核心,并重复上述步骤S325~S370的处理,直至当前核心组中有核心可用或者TTL的值为0时(即,确定了要对所述中断进行处理的响应核心时)结束中断调度过程300。
本领域技术人员应当明白,虽然在此以确定热组中是否有核心可用于处理所述中断以及所述令牌的生命周期是否结束作为中断调度结束条件,但是本发明显然并不仅仅局限于此。
如果在步骤S350中确定当前核心是本组中的最后一个核心(此时,令牌的目的地核号字段的值已被修改为中断调度器ID),这表明当前核心组中的所有核心都不可用来处理当前中断,则在步骤S375,中断调度器230选择备选核心组之一作为热组(此时,令牌已被传送回中断调度器,并且中断调度器将令牌的目的地核号字段的值修改为等于所选中的备选核心组中的第一个核心的核ID),然后处理流程返回到步骤S320,并重复上述步骤S320~S370的处理,直至当前核心组中有核心可用或者TTL的值为0时结束中断调度过程300。
在此需要说明的是,正如前面所描述的,中断调度器230中存储有与某一中断ID相对应的一个优选核心组的核ID,并且TTL被操作系统根据情况初始化为某一预定值,但是该预定值也有可能会大于该组的核心总数。在这种情况下,在图3所示的中断调度过程300中,在确定优选核心组和当前所选中的备选核心组中的所有核心都不可用来处理当前中断时,在图3所示的步骤S375中中断调度器230需要从剩下的备选核心组中再次任意选择其中之一作为热组,并再次重复上述步骤S320~S370的处理,直到当前热组中有核心可用或者TTL的值为0时才结束中断调度过程。但是,较为优选的是,将TTL的初始值设置得大于等于优选核心组中的核心总数,并且小于等于优选核心组的核心总数与N-1个备选核心组的平均每组核心总数之和。
在结束了中断调度过程后,中断调度器230根据当前令牌中响应核号字段中的值,将所述中断信号传送到相应的响应核心中进行处理。
从图2中可以看出,对于从外部到来的某一中断,在图3所示的中断调度过程300中,令牌在生成后从中断调度器230中出发,依次经过热组中的第一个核心、第二个核心等,直至确定了要对该中断进行处理的响应核心后被传送回中断调度器,从而构成了一个完整的“令牌环”。
虽然以上结合图2和3对根据本发明的多核环境和中断调度过程进行了描述,但是本领域技术人员应当明白,以上的描述仅仅是示例性的,而且为了适应于不同的需求,显然可以在细节上对以上所描述的多核环境中的某些部件和/或中断调度过程中的某些步骤加以修改。例如,图3中所示的步骤处理顺序也仅仅是示例性的,其中某些步骤(例如,步骤S310和S315)的处理也可以同时并行执行,或者甚至是以相反的次序执行。此外,操作系统还可以根据多核处理器内各个核心的当前运行状态和/或针对同类中断的中断调度历史记录等信息,对处理器内的核心逻辑分组进行调整,从而实现动态分组,此时,只需要修改相关核心中所存储的下一个核心的核ID并且必要时(例如,当核心组中的第一个核心发生了改变时)还修改中断调度器中所存储的组ID即可。而且,操作系统还可以根据多核处理器内各个核心的当前运行状态和/或针对同类中断的中断处理历史记录等信息,对中断调度器230内存储的优先处理各个中断的优选核心组的组ID进行修改或者更新,从而可以动态地对中断调度表进行更新。当然,也可能存在其他各种修改,在此就不一一列举了。
另外,还需要说明的是,核心分组的策略会影响到多核处理器应对中断的性能。例如,如果处理器有s个核心并且把它们分为s个组,则在图3所示的中断调度过程中,中断调度器230会把生成的令牌直接传送给相应的核心(即热核),从而增加了热核选择效率,但是会导致处理器的逻辑实现复杂性增加。另一方面,如果把s个核心分为一组,则中断调度器230会把所有的核心用“一个令牌环”连接起来,也就是说,在每次有中断到来时,令牌都需要从第一个核心开始遍历所有的核心,而这是非常费时的。因此,在分组时需要兼顾实现复杂性和效率这两个方面。较为简单的一种方式是,对s个核心进行平均分组,也就是说,每一核心组中的核心数是相同的,但是,根据本发明的中断调度机制显然并不仅仅局限于此。另外,虽然图2中示出各个核心组是彼此孤立的,而且用Core i、Core j等编号来表示核心组Group m中的核心,但是这并不意味着各个核心组之间没有关联,也不意味着各个核心组中的核心是连续编号的。例如,其中某些核心组可能是嵌套的或者部分重叠的。
从以上的描述中不难看出,在有中断到来时,利用以上所述的根据本发明的中断调度机制,通过基于对多个核心的逻辑分组,将基于中断而生成的令牌在长度受限的“令牌环”中(即,在相应的优选核心组中并且必要时还在选中的备选核心组中)传递,以确定用于对该中断进行处理的响应核心,并将中断传送到该响应核心加以处理,可以减小处理器对于中断的处理延迟,并且中断调度实现起来也较为简单,不需要对中断的语义和语法等进行任何修改。
而且,在根据以上所描述的方法进行中断调度时,中断调度器可以根据中断处理的历史记录等,动态地修改或者更新中断调度器中存储的优先处理各个中断的核心组的组ID,因此可以更快地确定可用于响应当前中断的核心组,从而有助于进一步提高中断处理效率。
最后,还需要说明的是,在本文中,诸如左和右、第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。另外,在没有更多限制的情况下,由语句“包括一个……”限定的要素,显然并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上虽然结合附图详细描述了本发明的实施例,但是应当明白,上面所描述的实施方式只是用于说明本发明,而并不构成对本发明的限制。对于本领域的技术人员来说,可以对上述实施方式作出各种修改和变更而没有背离本发明的实质和范围。因此,本发明的范围仅由所附的权利要求及其等效含义来限定。
Claims (19)
1.一种在多核处理器环境下实现中断调度的方法,其中,多核处理器包含中断调度器和N个具有中断处理能力的核心,且所述N个核心被分为多个核心组,其中N为大于1的正整数,所述方法包括以下步骤:
a.根据从外部到来的中断,生成令牌;
b.根据所述中断,确定优先处理该中断的核心组,作为热组;以及
c.将令牌传送到热组,并从热组中的第一个核心开始,依次判断是否满足中断调度结束条件,并且一旦确定满足了中断调度结束条件,就将当前核心确定为要处理所述中断的响应核心;
在确定了响应核心后,将所述中断传送到所述响应核心用以进行中断处理。
2.如权利要求1所述的方法,进一步包括:
如果对于当前热组中的每一个核心而言都不满足所述中断调度结束条件,则根据所述中断,选择剩余核心组之一作为热组,并重复执行所述步骤c,直至确定了所述响应核心为止。
3.如权利要求1或2所述的方法,其中,确定是否满足中断调度结束条件包括:
确定当前核心是否可用于处理所述中断,以及所述令牌的生命周期是否结束;
只有当热组中有核心可用于处理所述中断,或者所述令牌的生命周期结束时,才确定满足所述中断调度结束条件。
4.如权利要求3所述的方法,其中,根据核心上的当前工作状态来确定该核心是否可用于处理所述中断。
5.如权利要求1或2所述的方法,其中,所述令牌至少包含以下字段:
中断号,用于存储所述中断的中断ID;
目的地核号,用于存储令牌要被传往的核心的核ID;
TTL,其值表示令牌的生命周期长短;以及
响应核号,用于存储要对所述中断进行处理的响应核心的核ID。
6.如权利要求5所述的方法,其中,所述中断调度器中预先存储多个中断的中断ID,以及优先处理各个中断的核心组的组ID。
7.如权利要求6所述的方法,其中:
每个核心组的组ID与该核心组中第一个核心的核ID相对应;以及
N个核心中每个都存储有下一核号字段,每个核心组中除最后一个核心之外的每个核心的下一核号字段中存储与其在同一核心组的下一个核心的核ID,而每个核心组的最后一个核心的下一核号字段中存储中断调度器ID。
8.如权利要求7所述的方法,其中,所述N个核心可被动态重新分组。
9.如权利要求6所述的方法,其中,所述中断调度器中存储的优先处理各个中断的核心组的组ID可被动态更新。
10.一种多核处理器,包括:
N个具有中断处理能力的核心,其中所述N个核心被分为多个核心组,并且N为大于1的正整数;以及
中断调度器,用于根据从外部到来的中断,生成令牌,确定优先处理该中断的核心组作为热组,并且将令牌传送到热组,
其中,从热组中的第一个核心开始,依次判断是否满足中断调度结束条件,并且一旦确定满足了中断调度结束条件,当前核心就被确定为要处理所述中断的响应核心,
所述中断调度器进一步用于在确定了响应核心后,将所述中断传送到所述响应核心用以进行中断处理。
11.如权利要求10所述的多核处理器,其中,如果对于当前热组中的每一个核心而言都不满足所述中断调度结束条件,则所述中断调度器选择剩余核心组之一作为热组。
12.根据权利要求10或者11所述的多核处理器,其中,当热组中的核心确定其可用于处理所述中断,或者所述令牌的生命周期结束时,确定满足所述中断调度结束条件。
13.根据权利要求12所述的多核处理器,其中,核心根据其上的工作状态来确定它是否可用于处理所述中断。
14.根据权利要求10或者11所述的多核处理器,所述令牌至少包含以下字段:
中断号,用于存储所述中断的中断ID;
目的地核号,用于存储令牌要被传往的核心的核ID;
TTL,其值表示令牌的生命周期长短;以及
响应核号,用于存储要对所述中断进行处理的响应核心的核ID。
15.如权利要求14所述的多核处理器,其中,所述中断调度器中预先存储多个中断的中断ID,以及优先处理各个中断的核心组的组ID。
16.如权利要求15所述的多核处理器,其中:
每个核心组的组ID与该核心组中第一个核心的核ID相对应;以及
N个核心中每个都存储有下一核号字段,每个核心组中除最后一个核心之外的每个核心的下一核号字段中存储同一核心组的下一个核心的核ID,而每个核心组的最后一个核心的下一核号字段中存储中断调度器ID。
17.如权利要求16所述的多核处理器,其中,所述N个核心可被动态重新分组。
18.如权利要求15所述的多核处理器,其中,所述中断调度器中存储的优先处理各个中断的核心组的组ID可被动态更新。
19.一种计算机系统,包括:如权利要求10至18中任一项所述的多核处理器,其与可编程中断控制器连接,
其中,N个核心的分组由计算机操作系统实现。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100841514A CN101546276B (zh) | 2008-03-26 | 2008-03-26 | 多核环境下实现中断调度的方法及多核处理器 |
US12/412,286 US7953915B2 (en) | 2008-03-26 | 2009-03-26 | Interrupt dispatching method in multi-core environment and multi-core processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100841514A CN101546276B (zh) | 2008-03-26 | 2008-03-26 | 多核环境下实现中断调度的方法及多核处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101546276A CN101546276A (zh) | 2009-09-30 |
CN101546276B true CN101546276B (zh) | 2012-12-19 |
Family
ID=41118841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100841514A Expired - Fee Related CN101546276B (zh) | 2008-03-26 | 2008-03-26 | 多核环境下实现中断调度的方法及多核处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7953915B2 (zh) |
CN (1) | CN101546276B (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996595B2 (en) * | 2009-04-14 | 2011-08-09 | Lstar Technologies Llc | Interrupt arbitration for multiprocessors |
US8321614B2 (en) * | 2009-04-24 | 2012-11-27 | Empire Technology Development Llc | Dynamic scheduling interrupt controller for multiprocessors |
US8260996B2 (en) * | 2009-04-24 | 2012-09-04 | Empire Technology Development Llc | Interrupt optimization for multiprocessors |
KR101610828B1 (ko) * | 2009-09-23 | 2016-04-08 | 삼성전자주식회사 | 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법 |
US8234431B2 (en) * | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
KR20110054415A (ko) * | 2009-11-17 | 2011-05-25 | 삼성전자주식회사 | 화면 표시 방법 및 장치 |
CN101706742B (zh) * | 2009-11-20 | 2012-11-21 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
US8380724B2 (en) * | 2009-11-24 | 2013-02-19 | Microsoft Corporation | Grouping mechanism for multiple processor core execution |
US8265095B2 (en) * | 2009-12-02 | 2012-09-11 | International Business Machines Corporation | Resource management finite state machine for handling resource management tasks separate from a protocol finite state machine |
JPWO2011114477A1 (ja) * | 2010-03-17 | 2013-06-27 | 富士通株式会社 | 階層型マルチコアプロセッサ、マルチコアプロセッサシステム、および制御プログラム |
US8219725B2 (en) * | 2010-06-16 | 2012-07-10 | International Business Machines Corporation | Cache optimized balanced handling of initiatives in a non-uniform multiprocessor computing system |
US8634302B2 (en) * | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8578340B1 (en) * | 2010-09-24 | 2013-11-05 | Ca, Inc. | Recording and replaying computer program execution with recorded execution event breakpoints |
KR101717494B1 (ko) * | 2010-10-08 | 2017-03-28 | 삼성전자주식회사 | 인터럽트 처리 장치 및 방법 |
US8504744B2 (en) | 2010-10-28 | 2013-08-06 | Alcatel Lucent | Lock-less buffer management scheme for telecommunication network applications |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
CN106095046A (zh) * | 2011-09-06 | 2016-11-09 | 英特尔公司 | 有功率效率的处理器体系结构 |
CN106020424B (zh) * | 2011-09-06 | 2019-08-06 | 英特尔公司 | 有功率效率的处理器体系结构 |
CN103765409A (zh) * | 2011-09-06 | 2014-04-30 | 英特尔公司 | 有功率效率的处理器体系结构 |
US8874786B2 (en) * | 2011-10-25 | 2014-10-28 | Dell Products L.P. | Network traffic control by association of network packets and processes |
CN102779075B (zh) | 2012-06-28 | 2014-12-24 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
US8943252B2 (en) * | 2012-08-16 | 2015-01-27 | Microsoft Corporation | Latency sensitive software interrupt and thread scheduling |
DE102013110899B4 (de) * | 2012-10-04 | 2019-07-04 | Cognex Corporation | Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben |
US9043522B2 (en) | 2012-10-17 | 2015-05-26 | Arm Limited | Handling interrupts in a multi-processor system |
US9344320B1 (en) * | 2012-10-18 | 2016-05-17 | Amazon Technologies, Inc. | Return path trace |
US9678564B2 (en) * | 2012-12-21 | 2017-06-13 | Nxp B.V. | Multiprocessor system with interrupt distributor |
US9471133B2 (en) | 2013-08-28 | 2016-10-18 | Via Technologies, Inc. | Service processor patch mechanism |
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
US9792112B2 (en) | 2013-08-28 | 2017-10-17 | Via Technologies, Inc. | Propagation of microcode patches to multiple cores in multicore microprocessor |
US10979503B2 (en) | 2014-07-30 | 2021-04-13 | Excelero Storage Ltd. | System and method for improved storage access in multi core system |
US9880953B2 (en) * | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
CN106034084B (zh) * | 2015-03-16 | 2020-04-28 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN104753741A (zh) * | 2015-04-13 | 2015-07-01 | 浪潮电子信息产业股份有限公司 | 一种网卡测试性能调节的方法及装置 |
US10013279B2 (en) | 2015-07-28 | 2018-07-03 | International Business Machines Corporation | Processing interrupt requests |
US10956345B2 (en) * | 2016-04-01 | 2021-03-23 | Intel Corporation | Enhanced directed system management interrupt mechanism |
US11068038B2 (en) | 2019-09-20 | 2021-07-20 | Dell Products L.P. | System and method for using current slew-rate telemetry in an information handling system |
US11102617B2 (en) * | 2020-01-15 | 2021-08-24 | Stmicroelectronics International N.V. | Indoor navigation and tracking with mesh network |
CN113419437B (zh) * | 2021-06-30 | 2022-04-19 | 四川虹美智能科技有限公司 | 基于mvvm框架和mqtt协议的智能家居数据同步方法及装置 |
US20230100059A1 (en) * | 2021-09-21 | 2023-03-30 | Intel Corporation | Interrupt handling by migrating interrupts between processing cores |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464415A (zh) * | 2002-06-25 | 2003-12-31 | 深圳市中兴通讯股份有限公司 | 一种多处理器系统 |
CN1859183A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种实现设备状态轮询的方法及装置 |
US20060294348A1 (en) * | 2005-06-22 | 2006-12-28 | Renesas Technology Corp. | Multi-processor system |
US20070043970A1 (en) * | 2005-08-22 | 2007-02-22 | Ethan Solomita | Approach for managing interrupt load distribution |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269390B1 (en) | 1996-12-17 | 2001-07-31 | Ncr Corporation | Affinity scheduling of data within multi-processor computer systems |
KR100456630B1 (ko) * | 2001-12-11 | 2004-11-10 | 한국전자통신연구원 | 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법 |
US7093258B1 (en) | 2002-07-30 | 2006-08-15 | Unisys Corporation | Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system |
US7117285B2 (en) * | 2003-08-29 | 2006-10-03 | Sun Microsystems, Inc. | Method and system for efficiently directing interrupts |
US7089341B2 (en) * | 2004-03-31 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform |
US8463971B2 (en) * | 2005-08-22 | 2013-06-11 | Oracle America Inc. | Approach for distributing interrupts from high-interrupt load devices |
US8032681B2 (en) * | 2007-09-06 | 2011-10-04 | Intel Corporation | Processor selection for an interrupt based on willingness to accept the interrupt and on priority |
US7769938B2 (en) * | 2007-09-06 | 2010-08-03 | Intel Corporation | Processor selection for an interrupt identifying a processor cluster |
US7962679B2 (en) * | 2007-09-28 | 2011-06-14 | Intel Corporation | Interrupt balancing for multi-core and power |
US7783811B2 (en) * | 2007-12-17 | 2010-08-24 | Microsoft Corporation | Efficient interrupt message definition |
US20090172229A1 (en) * | 2007-12-28 | 2009-07-02 | Krystof Zmudzinski | Methods for selecting cores to execute system management interrupts |
US7802042B2 (en) * | 2007-12-28 | 2010-09-21 | Intel Corporation | Method and system for handling a management interrupt event in a multi-processor computing device |
US7962771B2 (en) * | 2007-12-31 | 2011-06-14 | Intel Corporation | Method, system, and apparatus for rerouting interrupts in a multi-core processor |
US7788435B2 (en) * | 2008-01-09 | 2010-08-31 | Microsoft Corporation | Interrupt redirection with coalescing |
JP5167844B2 (ja) * | 2008-02-05 | 2013-03-21 | 日本電気株式会社 | プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム |
US20090327556A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Processor Interrupt Selection |
-
2008
- 2008-03-26 CN CN2008100841514A patent/CN101546276B/zh not_active Expired - Fee Related
-
2009
- 2009-03-26 US US12/412,286 patent/US7953915B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464415A (zh) * | 2002-06-25 | 2003-12-31 | 深圳市中兴通讯股份有限公司 | 一种多处理器系统 |
US20060294348A1 (en) * | 2005-06-22 | 2006-12-28 | Renesas Technology Corp. | Multi-processor system |
US20070043970A1 (en) * | 2005-08-22 | 2007-02-22 | Ethan Solomita | Approach for managing interrupt load distribution |
CN1859183A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种实现设备状态轮询的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101546276A (zh) | 2009-09-30 |
US7953915B2 (en) | 2011-05-31 |
US20090248934A1 (en) | 2009-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101546276B (zh) | 多核环境下实现中断调度的方法及多核处理器 | |
US20150312159A1 (en) | Mechanism to save system power using packet filtering by network interface | |
CN109379303A (zh) | 基于提升万兆以太网性能的并行化处理框架系统和方法 | |
CN101986271B (zh) | 调度tcam查询和刷新消息的方法和装置 | |
CN105512179A (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
CN103019838B (zh) | 一种基于多dsp处理器平台的分布式实时多任务操作系统 | |
CN103309738A (zh) | 用户作业调度方法及装置 | |
WO2004017219A1 (en) | Apparatus and method for transmit transport protocol termination | |
CN102662889A (zh) | 中断处理方法、中断控制器及处理器 | |
CN110399221A (zh) | 数据处理方法、系统及终端设备 | |
CN101604261A (zh) | 超级计算机的任务调度方法 | |
CN105049372A (zh) | 一种扩展消息中间件吞吐量的方法及系统 | |
US20050086412A1 (en) | System and method for communicating between modules | |
CN103049421A (zh) | 一种cpu与协处理器间的数据传输方法和装置 | |
EP2336897B1 (en) | Data processing apparatus, data processing method, and computer-readable storage medium | |
CN111988345B (zh) | 一种信息同步的方法及设备 | |
CN107277062A (zh) | 数据包的并行处理方法及装置 | |
CN102761601A (zh) | 一种基于动态加权路径的mpio轮询的方法 | |
CN102117261A (zh) | 一种芯片内部处理器之间的通信方法 | |
WO2009088764A2 (en) | Tuning of industrial automation system performance based on device operating characteristics | |
CN105518617B (zh) | 缓存数据的处理方法及装置 | |
CN116136790A (zh) | 任务处理方法和装置 | |
CN202033745U (zh) | 基于星型互联架构的片上异构多核系统 | |
US11922237B1 (en) | Single-step collective operations | |
CN110620735A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20210326 |