CN108694078A - 基于最近中断请求指示符和工作确认的中断 - Google Patents
基于最近中断请求指示符和工作确认的中断 Download PDFInfo
- Publication number
- CN108694078A CN108694078A CN201810053424.2A CN201810053424A CN108694078A CN 108694078 A CN108694078 A CN 108694078A CN 201810053424 A CN201810053424 A CN 201810053424A CN 108694078 A CN108694078 A CN 108694078A
- Authority
- CN
- China
- Prior art keywords
- working cell
- work
- indicator
- counting circuit
- cpu
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及基于最近中断请求指示符和工作确认的中断,示例包括基于最近中断请求指示符和工作确认来中断处理资源。一些示例包括完成与多个工作单元相关联的工作,存储用以指定包括用以中断处理资源的请求的最近完成的工作单元的最近中断请求指示符,比较与该最近中断请求指示符相关联的工作单元信息和与由该处理资源生成的工作确认相关联的工作单元信息,以及当该比较指示该处理资源尚未处理由该最近中断请求指示符指示的已完成工作单元时中断该处理资源。
Description
背景技术
在计算机系统中,外围设备可以为该计算机系统的中央处理单元(CPU)或(一个或多个)其它处理资源完成工作任务。这样的工作任务可以涉及例如从CPU卸载的计算或者网络分组传输。在一些示例中,外围设备可以使用中断来向CPU通知已完成的工作。
附图说明
以下详细描述参考附图,其中:
图1是示例计算系统的框图,所述示例计算系统包括用以比较与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的计算电路;
图2是示例计算系统的框图,所述示例计算系统包括包含用以基于与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的比较来中断处理资源的计算电路的计算资源;
图3是包括存储最近中断请求指示符的计算系统的示例方法的流程图;以及
图4是计算系统的示例方法的流程图,所述示例方法包括基于与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的比较来确定是否要中断CPU。
具体实施方式
如上所述,用以代表计算机系统的CPU(或(一个或多个)其它处理资源)实行工作任务的外围设备可以中断CPU以向其通告工作任务的完成。然而,过于频繁地提供的中断可能导致针对CPU的过量的处理开销,这对于计算机系统来说可能是低效的,而延迟中断可能增加用于向CPU通告已完成的工作任务的等待时间。附加地,CPU与外围设备之间的用以协调中断的异步通信可能导致竞争条件。例如,在紧接在CPU结束其对所有已完成工作任务的处理附近完成了新的工作任务的情况下,取决于进行更新以指示CPU完成和新工作可用性的顺序,CPU可能在没有工作要处理时(例如,当在CPU已经处理了工作之后才注意到新工作的到达时)被中断或者CPU可能(例如,当恰在CPU指示其已经处理了所有工作单元之前完成新工作时)错过新完成的工作单元。
为了解决这些问题,本文中描述的示例可以利用最近中断请求指示符、工作确认和中断待决指示符来确定计算电路何时要中断CPU(或(一个或多个)其它处理资源)以及计算电路何时要制止中断CPU。这样的示例可以有益地均衡被提供给CPU的中断的数量以防止计算电路提供过量的中断,从而不因持有中断太久而引入过分的等待时间。这样的示例还可以基于最近中断请求指示符和工作确认的使用来避免竞争条件。
例如,在本文中描述的示例中,计算资源可以包括计算电路,所述计算电路包括可执行以完成与变为可用于所述计算电路的多个工作单元相关联的工作的逻辑。在一些示例中,计算电路可以存储用以指定最近完成的工作单元的最近中断请求指示符,所述最近完成的工作单元包括用以中断处理资源的请求。在这样的示例中,响应于处理资源清除了中断待决指示符,计算电路可以比较与该最近中断请求指示符相关联的工作单元信息和与(由所述处理资源生成的、用以指示已在由所述计算电路完成后由CPU处理了的至少一个工作单元的)工作确认相关联的工作单元信息。在这样的示例中,计算电路可以在该比较指示处理资源尚未处理至少所述由最近中断请求指示符指示的已完成工作单元时中断处理资源。
现在参考附图,图1是示例计算系统100的框图,所述示例计算系统100包括用以比较与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的计算电路120。在图1的示例中,计算系统100可以包括包含计算电路120和至少一个处理资源110(在一些示例中,诸如CPU)的计算设备102。在图1的示例中,计算设备102还可以包括用以存储包括多个工作单元(诸如图1中图示出的工作单元151-158等)的工作列表150的机器可读存储介质115(例如,存储器)。虽然在图1中出于本文说明性目的而示出了工作单元151-158,但是工作列表150可以在不同的示例中包括更多、更少或不同的工作单元。在一些示例中,机器可读存储介质115可以通过一个或多个机器可读存储介质来实现。
如本文使用的,“计算设备”可以是存储阵列、存储设备、存储外壳(enclosure)、服务器、台式或膝上型计算机、交换机、路由器或包括控制器、处理资源或类似物的任何其它设备或装备。在本文中描述的示例中,“处理资源”可以包括例如被包括在单个计算设备中或跨多个计算设备分布的一个或多个处理器。如本文中使用的,“处理器”可以是中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)、被配置成检索和执行指令的现场可编程门阵列(FPGA)、适用于检索和执行存储在机器可读存储介质上的指令的其它电子电路中的至少一个或其组合。
在本文中描述的示例中,计算电路120可以是如本文中描述的用以完成工作单元的任何适当的硬件或者硬件和编程的组合。在一些示例中,计算资源可以包括计算电路120。在本文中描述的示例中,计算资源可以是计算设备或是可以作为计算设备的组件而被包括的资源。例如,本文中的计算资源可以包括包含计算电路120的专用集成电路(ASIC)。在其它示例中,计算资源可以包括实现计算电路120的现场可编程门阵列(FPGA)。在其它示例中,计算资源可以包括计算电路120的任何其它合适的实现。在一些示例中,本文中关于逻辑221描述的功能性可以通过一个或多个引擎来实现,所述一个或多个引擎可以是用以实现所述(一个或多个)引擎的功能性的硬件和编程的任何组合。
在本文中描述的示例中,计算电路120可以执行逻辑221以实行本文中关于计算电路120描述的功能性。在一些示例中,逻辑221可以实现在硬件中(例如,在ASIC的电路中)。在这样的示例中,逻辑221可以由所述硬件执行以实行本文中关于计算电路120描述的功能性。在一些示例中,计算电路120可以包括逻辑221(例如,用以实现逻辑221的硬件)。
在其它示例中,计算电路120可以实现在硬件和编程的任何适当的组合中(例如,在ASIC的电路中)。在本文中描述的示例中,可以以多种不同方式来实现硬件和编程的这样的组合。例如,用于计算电路120的编程可以是存储在至少一个非暂时性机器可读存储介质上的处理器可执行指令,并且用于计算电路120的硬件可以包括用以执行那些指令的(一个或多个)处理资源或其它电子电路。在一些示例中,所述硬件还可以包括用以至少部分地实现计算电路120的其它电子电路。在一些示例中,所述至少一个机器可读存储介质可以存储指令,所述指令当由所述至少一个处理资源执行时至少部分地实现逻辑221中的一些或全部。在这样的示例中,实现计算电路120的计算资源可以包括存储所述指令的所述至少一个机器可读存储介质以及用以执行所述指令的所述(一个或多个)处理资源或其它电子电路。在一些示例中,计算电路120可以如上所述的那样包括用以执行逻辑221的硬件,然而逻辑221与计算电路120的硬件分离地存储但是可被计算电路120的硬件访问。
如本文中使用的,“机器可读存储介质”可以是用以包含或存储诸如可执行指令、数据和类似物的信息的任何电子、磁性、光学或其它物理存储装置。例如,本文中描述的任何机器可读存储介质可以是以下中的任何:随机存取存储器(RAM)、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,硬盘驱动器)、固态驱动器、任何类型的存储盘(例如,紧凑盘、DVD等)和类似物或其组合。本文中描述的任何机器可读存储介质可以是非暂时性的。
如上文指出的,在图1的示例中,计算设备102的存储介质115可以存储包括诸如工作单元151-158之类的多个工作单元的工作列表150。在本文中描述的示例中,工作单元可以是在由与计算电路分离的至少一个处理资源(例如,CPU)进行处理之前要由所述计算电路对其进行操作的信息的集合。例如,工作单元可以是指定要由计算电路代表(一个或多个)处理资源完成的工作的信息的集合,其中所述(一个或多个)处理资源要在该计算电路已完成了其指定的工作之后处理该工作单元。在这样的示例中,工作单元可以是控制块,诸如例如XOR(异或)控制块(“XCB”)、直接存储器访问(DMA)控制块或类似物。在其它示例中,工作单元可以是网络分组,如在下文中关于图2更详细地讨论的那样。
在图1的示例中,(一个或多个)处理资源110可以通过CPU 110来实现,并且CPU110可以将工作单元151-158存储在存储介质115的工作列表150中。在这样的示例中,工作单元151-158可以是指定要由计算电路120完成的工作的工作单元(例如,控制块或类似物)。虽然下文关于图1描述了示例,其中(一个或多个)处理资源110是CPU 110并且工作单元151-158是指定要由计算电路完成的工作的工作单元,但是在这样的示例中可以使用任何适当的(一个或多个)处理资源110,并且在这样的示例中工作单元151-158可以是如本文中描述的任何适当类型的工作单元。
在图1的示例中,逻辑221可以包括逻辑122、124和126中的至少一个或其组合,并且逻辑221可以是可由计算电路120执行的,如上所述的那样。在图1的示例中,逻辑122当由计算电路120执行时可以完成与变为可用于计算电路120的所述多个工作单元151-158相关联的工作。在图1的示例中,可以通过CPU 110将工作单元151-158存储在CPU 110和计算电路120二者可访问的存储介质115(例如,存储器)中来使工作单元151-158变为可用于计算电路120。在这样的示例中,如上所述,每个工作单元可以指定要由计算电路120完成的工作,诸如实行(一个或多个)计算、移动数据、或类似物。在这样的示例中,工作单元可以包括使计算电路120实行由该工作单元指定的工作的适当信息。
在一些示例中,随着逻辑122完成工作单元,逻辑124在被执行时可以周期性地存储用以指示计算电路120完成了哪些工作单元的当前工作指示符。在其中工作单元指定要由计算电路120完成的工作的示例中,工作单元在计算电路120已结束了由该工作单元指定的工作时被完成。在一些示例中,工作单元可以指定是否要存储当前工作指示符160。例如,在图1的示例中,工作单元154可以包括指示要在计算电路120完成工作单元154时存储当前工作指示符的数据254,并且工作单元156可以包括指示要在计算电路120完成工作单元156时存储当前工作指示符的数据256。在这样的示例中,当逻辑122完成工作单元154时,逻辑124可以从数据254确定要存储当前工作指示符,并且作为响应可以存储指示工作单元154已完成的工作指示符。如在图1的示例中所示,当逻辑122完成工作单元156时,逻辑124可以从数据256确定要存储当前工作指示符,并且作为响应可以存储指示工作单元156已完成的工作指示符160。例如,当以执行顺序(如下文中描述)来存储工作单元时,逻辑124可以存储指向工作单元157(例如,要完成的下一个工作单元)的工作指示符160,以从而指示已完成了工作列表150中在工作单元157之前的那些工作单元(包括工作单元156)。在其它示例中,可以在完成每个工作单元之后存储(例如,更新)工作指示符。
在一些示例中,随着逻辑122完成工作单元,逻辑124在被执行时可以周期性地存储用以指定最近完成的工作单元的最近中断请求指示符,所述最近完成的工作单元包括用以在被完成时中断CPU 110(例如,(一个或多个)处理资源110)的请求。在一些示例中,一些工作单元可以包括用以在被完成时请求计算电路120中断CPU 110(例如,(一个或多个)处理资源110)的中断请求。例如,在图1的示例中,工作单元152可以包括用以在工作单元152被完成时请求计算电路120中断CPU 110的中断请求252。同样在图1中,工作单元155可以包括中断请求255,并且工作单元157可以包括中断请求257。在本文中描述的示例中,要存储工作指示符可以包括:逻辑124可以存储新的工作指示符或更新在先工作指示符。
在这样的示例中,当逻辑122完成工作单元152时,逻辑124可以从中断请求252确定要存储最近中断请求指示符,并且作为响应可以存储最近中断指示符,用以将工作单元152指定为包括用以中断CPU 110的请求的最近完成的工作单元。如在图1的示例中所示,当逻辑122完成工作单元155时,逻辑124可以从中断请求256确定要存储最近中断请求指示符,并且作为响应可以存储最近中断指示符162,用以将工作单元155指定为包括用以中断CPU 110的请求的最近完成的工作单元。在一些示例中,当逻辑124确定了已完成工作单元包括中断请求时(如上所述),逻辑124可以除如上所述的那样存储所述最近中断请求指示符之外还存储用以指示该工作单元的当前工作指示符。在一些示例中,不论任何工作单元具有或不具有指示要存储当前工作指示符的数据或中断请求,计算电路120都可以不在完成工作指示符之后存储或更新最近中断请求指示符或工作指示符(但是可以替代地前进到完成下一工作单元)。在本文中描述的示例中,要存储最近中断请求指示符可以包括:逻辑124可以存储新的工作指示符或更新在先工作指示符。
在图1的示例中,可以以执行的顺序(即,“执行顺序”)将工作单元存储在工作列表150中,所述工作列表150是用(一个或多个)任何适当的数据结构(诸如(一个或多个)环形缓冲器、(一个或多个)队列或类似物)实现的。在这样的示例中,逻辑124可以存储包括指向工作列表150中在计算电路120完成了的最近的工作单元之后的工作单元的指针或其它引用(例如,存储器地址、存储器地址的一部分、或类似物)的工作指示符(例如,指向要完成的下一工作单元的指针或引用)。在一些示例中,逻辑124可以存储包括指向工作列表150中包括用以中断CPU 110的请求的最近完成的工作单元的指针或其它引用(例如,存储器地址、存储器地址的一部分、或类似物)的最近中断请求指示符。
例如,在图1中图示出的时刻处,逻辑122已完成了工作单元151-156,并且工作单元157和158(以黑体文本图示)表示在图1中图示出的时刻处计算电路120还未完成的工作单元。在这样的示例中,工作指示符160可以包括指向工作单元157的指针或引用,表明计算电路120已完成了在工作单元157之前的那些工作单元(即,至少工作单元151-156)。在图1的示例中,最近中断请求指示符162可以包括指向工作单元155的指针或引用(工作单元155是包括中断请求的由计算电路120完成的最近的工作单元)。在一些示例中,CPU 110还可以存储包括指向工作单元的指针或其它引用(例如,存储器地址、存储器地址的一部分、或类似物)的工作确认,如下文描述的那样。虽然在一些示例中工作指示符、最近中断请求指示符和工作确认可以被实现为指针或引用,如本文中描述的那样,但是在其它示例中可以以不同方式来实现工作指示符、最近中断请求指示符和工作确认。
在图1的示例中,响应于逻辑124确定了已完成的工作单元(例如,155)包括中断请求(例如,255),(除了如上所述的那样存储最近中断请求指示符之外),逻辑124可以进一步确定是否要响应于该中断请求而中断CPU 110。例如,逻辑124可以访问中断待决指示符166以确定特定类型的中断(例如,与工作列表150相关的中断)是否已经关于CPU 110而待决。在一些示例中,中断待决指示符166可以具有指示没有任何该特定类型的中断当前正关于CPU 110而待决的清除状态或者指示该特定类型的中断当前正关于CPU 110而待决的待决状态。待决状态和清除状态可以各自以任何适当的方式使用任何适当的数据(例如,(一个或多个)位)、数据结构或类似物来存储。
在一些示例中,响应于逻辑124确定了已完成的工作单元(例如,155)包括中断请求(例如,255),逻辑124可以进一步确定中断待决指示符166具有清除状态,表明没有任何特定类型的中断当前正关于CPU 110而待决。在一些示例中,响应于中断待决指示符166具有清除状态的确定,计算电路120的逻辑126可以中断170 CPU 110(例如,提供中断170给CPU 110)。作为响应,CPU 110可以处理计算电路120先前完成了的工作单元,并且可以存储用以指示已在由计算电路120完成之后由CPU 110处理了的工作列表150中的至少一个工作单元的工作确认。例如,在图1的示例中,CPU 110可以存储指示工作单元153已在由计算电路120完成之后由CPU 110处理了的工作确认164。在图1的示例中,在如上所述以执行或完成顺序存储工作单元的情况下,CPU 110可以存储包括指向工作单元153的指针或其它引用(例如,存储器地址、存储器地址的一部分、或类似物)的工作确认164以指示工作单元153和在它之前的工作单元(例如,至少工作单元151和152)已在由计算电路120完成之后由CPU110处理了。
在一些示例中,响应于逻辑124确定了已完成的工作单元(例如,155)包括中断请求(例如,255),逻辑124可以进一步确定中断待决指示符166具有待决状态,表明该特定类型的中断当前正关于CPU 110而待决。在这样的示例中,响应于中断待决指示符166具有待决状态的确定,计算电路120可以不基于检测到的中断请求(例如,255)来中断CPU 110,而是替代地,逻辑124可以前进以完成下一工作单元(例如,工作单元156)而(例如,在完成工作列表150中的至少该下一工作单元之前)不中断CPU 110。
在这样的示例中,在稍后的时间处,在CPU 110已如上所述的那样存储了工作确认(例如,164)之后,CPU 110可以进一步清除172中断待决指示符166(即,将中断待决指示符166设置172成清除状态)。在这样的示例中,响应于CPU 110清除了中断待决指示符166,逻辑126可以比较与最近中断请求指示符相关联的工作单元信息和与由CPU 110生成的工作确认相关联的工作单元信息。在这样的示例中,逻辑126可以在该比较指示CPU 110还未处理至少所述由最近中断请求指示符指示的已完成的工作单元时中断170 CPU 110。在本文中描述的示例中,这样的比较的结果可以进一步指示: 除由该最近中断指示符指示的给定工作单元之外,(一个或多个)处理资源110(例如,CPU 110)尚未处理其它的已完成工作单元。
例如,在图1的示例中,其中CPU 110已生成并存储了工作确认164,CPU 110可以清除172中断待决指示符166,并且作为响应,逻辑126可以比较与最近中断指示符162相关联的工作单元信息和与工作确认164相关联的工作单元信息并基于该比较来确定CPU 110尚未处理至少所述由最近中断请求指示符162指示的已完成工作单元。例如,在图1的示例中,工作确认164比最近中断请求指示符162(其指示较后工作单元155)指示更早的工作单元153。在这样的示例中,存在CPU 110要处理的附加的已完成工作。在这样的示例中,响应于CPU 110尚未处理至少所述由最近中断请求指示符162指示的已完成工作单元155的确定,逻辑126可以中断170 CPU 110以促使CPU 110处理工作列表150的已完成工作单元。
以此方式,在本文中描述的示例中,计算电路120可以不响应于每个中断请求而立即提供中断,但是可以做出具有中断请求的最近完成的工作单元的记录(例如,经由最近中断请求指示符),其可以随后用于确定是否要基于该中断请求来在稍后的时间处提供中断。在本文中描述的示例中,计算电路120可以减少被提供给(一个或多个)处理资源(例如,CPU)的中断的数量,同时仍通知针对已完成工作单元的处理已准备好由所述(一个或多个)处理资源进行处理。例如,取代针对包括中断请求的每个已完成工作单元向(一个或多个)处理资源提供中断,在本文中描述的示例中,计算电路可以持续性地更新最近中断请求指示符以维持由该计算电路完成的、包括中断请求的至少该最近的工作单元的记录。在这样的示例中,计算电路可以处理包括中断请求的几个(例如,5个、10个等)或许多(例如,50个、100个或更多个等)工作单元而不中断CPU,但同时仍更新最近中断请求指示符。在这样的示例中,当与包括正由计算电路120处理的工作单元的一个或多个工作列表相关联的中断待决指示符被更新成清除状态时,计算电路可以如上所述的那样确定是否要至少部分地基于当前的最近中断请求指示符来提供中断,以使得可以基于由该最近中断请求指示符指示的工作单元来在该工作单元尚未被处理时将中断提供给(一个或多个)处理资源,而无需针对包括中断请求的每个工作单元提供中断(并且潜在地无需在由该最近中断请求指示符指示的工作请求已经被所述(一个或多个)处理资源处理了的情况下提供任何另外的中断)。
现在将在下文中以某一进一步的细节描述图1的示例。在图1的示例中,计算设备102可以包括用以存储可由CPU 110(或(一个或多个)处理资源110)执行的指令的机器可读存储介质140。在一些示例中,CPU 110或(一个或多个)处理资源110可以至少部分地执行计算设备102的操作系统(OS)。例如,在图1的示例中,存储介质140可以包括内核指令141,其至少包括指令142、144、146和148。在一些示例中,内核指令141可以是计算设备102的OS的内核的一部分,并且其当被执行时可以至少服务于计算电路120或与之进行交互。
在本文中描述的示例中,(一个或多个)处理资源110(例如,CPU 110)可以提取、解码和执行存储在存储介质140上的指令以实行上文中关于存储在存储介质140上的指令描述的功能性。在其它示例中,存储介质140的指令中的任何的功能性可以以电子电路的形式、以编码在机器可读存储介质上的可执行指令的形式或其组合来实现。在一些示例中,机器可读存储介质115可以通过一个或多个机器可读存储介质来实现。在其它示例中,上文中关于介质140的指令描述的功能性可以通过一个或多个引擎来实现,所述一个或多个引擎可以是用以实现所述(一个或多个)引擎的功能性的硬件和编程的任何组合。在一些示例中,存储介质140和存储介质115可以是不同的、分离的机器可读存储介质。在其它示例中,相同的至少一个机器可读存储介质可以实现存储介质115和存储介质140二者。
在图1的示例中,CPU 110可以执行指令142以将工作单元151-158添加到存储在计算设备102的存储器(例如,存储介质115)中的工作列表150。如上所述,在一些示例中,工作单元可以指定要由计算电路120完成的工作,一些工作单元可以包括中断请求(例如,工作单元152、155和157)并且一些工作单元可以包括指示要存储工作指示符的数据(例如,工作单元154和156)。
在这样的示例中,计算电路120可以包括逻辑122,逻辑122可被执行以完成与工作单元151-158相关联的工作,工作单元151-158通过CPU 110将其存储在存储介质115(存储介质115可被计算电路120访问)上的工作列表150中而变为可用于计算电路120。在这样的示例中,逻辑122可以访问存储介质115中的工作列表150。在这样的示例中,针对工作列表150中的多个工作单元中的每一个,逻辑122可以完成(例如,实行)该工作单元中指定的工作。例如,逻辑122可以完成(例如,实行)诸如以下的指定工作:在工作单元中指定的(一个或多个)计算操作、在工作单元中指定的(一个或多个)数据移动操作或者可以在工作单元中指定的任何其它适当的工作或(一个或多个)操作(例如,要由例如计算电路120的DMA引擎实行的工作)。
在这样的示例中,针对工作列表150中的所述多个工作单元151-158中的每一个给定的工作单元,在逻辑122完成了该给定工作单元之后,逻辑124可以识别该给定工作单元是否包括指示要在计算电路120完成该给定工作单元时存储当前工作指示符的数据,并且如果是这样,则逻辑124作为响应可以如上所述的那样存储至少指示该给定工作单元已完成的工作指示符。在一些示例中,工作指示符可以指示计算电路120已完成了给定的工作单元以及工作列表150中(以执行顺序)在它之前的那些。在一些示例中,逻辑124可以将工作指示符存储到计算设备102的、计算电路120和CPU 110可访问的任何适当位置。例如,逻辑124可以将工作指示符存储到CPU的存储器(例如,在一些示例中存储到存储介质115,如图1中所示)、存储到计算电路120的寄存器或二者。当逻辑124识别出给定的工作单元不包括指示要存储工作指示符的数据时,逻辑124可以不存储用以指示该给定的工作单元的工作指示符(例如,除非该工作单元包括例如中断请求)。
在图1的示例中,针对工作列表150中的所述多个工作单元151-158中的每一个给定的工作单元,在由逻辑122完成了该给定的工作单元之后,逻辑124可以识别该给定工作单元是否包括中断请求。响应于该给定工作单元包括中断请求的识别,计算电路120的逻辑124可以存储用以指示计算电路已完成了工作列表150中的至少该给定工作单元的工作指示符,可以存储用以将该给定工作单元指定为工作列表150中包括用以中断CPU 110的请求的最近完成的工作单元的最近中断请求指示符,并且可以确定针对该工作列表的中断待决指示符是否具有待决状态。
例如,在逻辑122完成了由工作单元155指定的工作的执行之后,例如逻辑124可以识别工作单元155包括中断请求155。作为响应,逻辑124可以如上所述的那样存储用以指示至少该给定工作单元的工作指示符。同样响应于该识别,逻辑124可以如上所述的那样存储指示工作单元155的最近中断请求指示符162。在一些示例中,逻辑124可以将最近中断请求指示符存储到计算设备102的、计算电路120和CPU 110可访问的任何适当位置。例如,逻辑124可以将最近中断请求指示符存储到CPU的存储器(例如,在一些示例中存储到存储介质115,如图1中所示)、存储到计算电路120的寄存器或二者。
同样响应于该识别,逻辑124可以访问与工作列表150相关联的中断待决指示符166以确定与工作列表150相关联(或“用于”工作列表150)的中断待决指示符166是具有待决状态还是清除状态。在本文中描述的示例中,中断待决指示符可以存储在计算设备102的、计算电路120和CPU 110可访问的任何适当位置中。例如,中断待决指示符166可以存储在CPU的存储器中(例如,在一些示例中存储到存储介质115)、存储到计算电路120的寄存器(如图1中所示)或二者。在本文中描述的示例中,中断待决指示符可以是与特定类型的中断相关联的指示符,所述特定类型的中断诸如例如基于在特定的工作列表或特定的一组工作列表中指定的工作(例如,(一个或多个)工作单元)的完成而生成的中断。例如,在图1的示例中,中断待决指示符166可以指示与工作列表150相关联的中断(即,基于工作列表150的(一个或多个)工作单元而生成的中断)是否正待决。
在图1的示例中,响应于中断待决指示符166具有清除状态(即,没有任何与工作列表150相关联的中断当前关于CPU 110而待决)的确定,逻辑126可以中断170 CPU 110(例如,向CPU 110提供中断),并且逻辑126可以设置中断待决指示符166以指示与该工作列表相关的中断当前正待决(例如,将中断待决指示符166设置成待决状态)。
在图1的示例中,响应于中断待决指示符166具有待决状态的确定,逻辑122可以完成与工作列表150中的(给定工作单元之后的)下一工作单元相关联的工作,而不会在完成与工作列表150中的至少该下一工作单元相关联的工作之前中断CPU 110。在这样的示例中,逻辑221可以基于具有待决状态的中断待决指示符166不响应于包括中断请求的工作单元的完成而中断CPU 110(不过可以在稍后的时间处提供中断)。在这样的示例中,逻辑221可以不作为给定工作单元中存在中断请求的直接结果而中断CPU 110。
响应于计算电路120利用与工作列表150相关联的类型的中断而被中断,CPU 110可以执行指令144以处理由计算电路120完成的(工作列表150中的)工作单元。在本文中描述的示例中,为了处理由计算电路120完成的工作单元,(一个或多个)处理资源110(例如,CPU 110)可以实行与该工作单元中指定的工作相关的(一个或多个)动作,并且所实行的(一个或多个)动作可以取决于所指定的工作而变化。例如,当给定工作单元中指定的工作涉及计算电路120将数据从一个位置移动到另一个位置时,(一个或多个)处理资源110(例如,CPU 110)可以通过在完成由该给定工作单元指定的工作中释放(例如,供重新使用)计算电路120从其处移动所述数据的源位置来处理已完成的工作单元。作为另一示例,当在给定工作单元中指定的工作涉及计算电路120对数据实行(一个或多个)计算或以其它方式生成数据结果时,(一个或多个)处理资源110(例如,CPU 110)可以通过采取与所述数据结果(例如,所述(一个或多个)计算的结果)相关的(一个或多个)动作(诸如访问该数据结果、(例如,在另外的计算、动作等中)使用该数据结果、调度该数据结果以将其提供到另一位置、或类似)来处理已完成的工作单元。在其它示例中,可以实行与工作单元中指定的工作相关的(一个或多个)任何其它适当动作来处理已完成的工作单元。
在图1的示例中,CPU 110可以执行指令146以存储用以指示已在由计算电路120完成之后由CPU处理了的工作列表150中的至少一个工作单元的工作确认。例如,在指令144处理了工作列表150的工作单元153之后,指令146可以如上所述的那样生成并存储指示至少工作单元153的工作确认164。在一些示例中,指令146可以将工作确认存储到计算设备102的、计算电路120和CPU 110可访问的任何适当位置。例如,指令146可以将工作指示符存储到CPU的存储器(例如,在一些示例中存储到存储介质115,如图1中所示)、存储到计算电路120的寄存器或二者。在一些示例中,可以以原子操作来实行存储工作确认,所述原子操作诸如用以写入整个工作确认的单次写入操作。
在一些示例中,在指令146存储了工作确认之后,CPU 110可以执行指令148以通过将中断待决指示符166设置成清除状态(这在本文中可以称为“清除”中断待决指示符)来更新中断待决指示符166以便指示没有与该工作列表相关的任何中断当前正关于CPU而待决。在这样的示例中,逻辑126可以访问中断待决指示符166并确定已清除了中断待决指示符166(即,已将其设置成了清除状态)。响应于CPU 110清除中断待决指示符166(例如,响应于已清除了中断待决指示符166的确定),计算电路120的逻辑126可以比较与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息。在这样的示例中,逻辑126可以在该比较(即,该比较的结果)指示CPU 110尚未处理至少所述由最近中断请求指示符指示的给定工作单元时中断170 CPU 110。
例如,与最近中断请求指示符相关联的工作单元信息可以包括表示由最近中断请求指示符指示的工作单元的信息,诸如被分配给通过该最近中断请求指示符识别的至少一个工作单元(或以其它方式与其相关联或者识别其)的标识符(例如,值等)。例如,与最近中断请求指示符相关联的工作单元信息可以包括由该最近中断请求指示符指示的工作单元被存储于其处的存储器地址或存储器地址的一部分。在这样的示例中,最近中断请求指示符可以包括存储器地址(或其部分)。类似地,与工作确认相关联的工作单元信息可以包括表示由工作确认指示的工作单元的信息,诸如被分配给通过该工作确认识别的至少一个工作单元(或以其它方式与其相关联或者识别其)的标识符(例如,值等)。例如,与工作确认相关联的工作单元信息可以包括由该工作确认指示的工作单元被存储于其处的存储器地址或存储器地址的一部分。在这样的示例中,工作确认可以包括存储器地址(或其部分)。
在图1的示例中,例如其中工作列表150如上所述的那样以执行顺序包括工作单元,与最近中断请求指示符相关联的工作单元信息可以包括指示由该最近中断请求指示符指示的工作单元在工作列表150中的相对位置的值。在这样的示例中,与工作确认相关联的工作单元信息可以包括指示由该工作确认指示的工作单元在工作列表150中的相对位置的值。在这样的示例中,逻辑126可以通过比较与由最近中断请求指示符162指示的工作单元相关联的所述值和与由工作确认164指示的工作单元相关联的所述值来实行所述比较(例如,以确定CPU 110是否已至少处理了由该最近中断请求指示符指示的工作单元)。例如,在如上所述的其中工作单元信息包括工作单元的全部或部分存储器地址的示例中,逻辑126可以通过比较最近中断请求指示符162的所述全部或部分存储器地址和工作确认164的所述全部或部分存储器地址来实行所述比较以确定CPU 110是否已至少处理了由该最近中断请求指示符指示的工作单元。在其中利用环形缓冲器(或类似物)来存储工作单元的示例中,逻辑126可以在比较所述全部或部分存储器地址时计及可能发生的环形缓冲器的任何卷绕。
在这样的示例中,响应于CPU 110清除了中断待决指示符166,逻辑126可以访问与最近中断请求指示符162相关联的工作单元信息(例如,与由最近中断请求指示符162指示的工作单元155相关联的值),可以访问与工作确认164相关联的工作单元信息(例如,与由最近中断请求指示符153指示的工作单元153相关联的值),并且可以比较所访问的工作单元信息,如本文中描述的那样。在这样的示例中,基于该比较的结果,逻辑126可以确定CPU110是否已处理了由最近中断请求指示符162指示的已完成工作单元155。
例如,逻辑126可以比较所述值(例如,地址部分)以确定由最近中断请求指示符162指示的工作单元是否在工作列表150中比由工作确认164指示的工作单元更晚(例如,计及工作列表150的实现中的任何卷绕)。例如,逻辑126可以确定与最近中断请求指示符162相关联的所述值(例如,地址部分)是否大于与工作确认164相关联的所述值(例如,地址部分)(例如,同时计及环形工作列表实现中的任何卷绕)。在图1的示例中,逻辑126可以例如比较用于(与最近中断请求指示符162相关联的)工作单元155的存储器地址的一部分和用于(与工作确认164相关联的)工作单元153的存储器地址的一部分,并且该比较的结果可以指示由最近中断请求指示符162指示的工作单元155在工作列表150中比由工作确认164指示的工作单元153更晚。在这样的示例中,逻辑126可以基于该比较的结果而确定CPU 110尚未处理至少所述由最近中断请求指示符162指示的已完成工作单元155。在这样的示例中,响应于该确定,逻辑126可以中断170 CPU 110。在其它示例中,诸如在最近中断请求指示符和工作确认指示同一工作单元的情况下,与最近中断请求指示符和工作确认相关联的工作单元信息(例如,值)可以是相同的(例如,相同的地址部分),表明CPU 110已处理了由该最近中断请求指示符指示的已完成工作单元。在这样的示例中,逻辑126可以制止向CPU 110提供中断170。
在其它示例中,逻辑126可以以任何其它适当方式来实现所述比较以确定CPU 110是否已处理了由最近中断请求指示符指示的工作单元。例如,逻辑126可以比较上述值以确定所述值是否相等,并且当它们不相等时,确定CPU 110尚未处理至少所述由最近中断请求指示符指示的工作单元,并且中断170 CPU 110。在其它示例中,可以以适当的方式比较与最近中断请求指示符的指针相关联的信息和与工作确认最近中断请求指示符的指针相关联的信息,以确定CPU 110是否已处理了由该最近中断请求指示符指示的工作单元。
在其它示例中,诸如当以不同方式实现最近中断请求指示符和工作确认时,逻辑126可以以不同方式来实行该比较。例如,在其它示例中,最近中断请求指示符可以包括用以指示(例如,工作列表150中的)所述多个工作单元中的、已由CPU 110完成且包括用以中断CPU 110的请求的每一个工作单元的信息。在这样的示例中,最近中断请求指示符可以以任何适当的形式、格式、数据结构等来包括该信息。例如,最近中断请求指示符可以包括串位(例如,位掩码),其中每个位位置表示工作列表150中的工作单元中的一个,并且在该位置处的位的值指示该对应工作单元是否包括中断请求。在这样的示例中,逻辑124可以通过利用用以指示由计算电路120完成的工作单元包括中断请求的适当的位更新最近中断请求指示符(例如,通过将表示已完成工作单元的位设置成用以指示中断请求的“1”)来如上所述的那样存储所述最近中断请求指示符。
在这样的示例中,工作确认可以包括用以指示在由计算电路120完成之后已由CPU110处理了的(例如,工作列表150中的)所述多个工作单元中的每一个工作单元的信息。在这样的示例中,工作确认可以以任何适当的形式、格式、数据结构等来包括该信息,如上文关于最近中断请求指示符描述的那样。例如,工作确认可以包括串位(例如,位掩码),其中每个位位置表示工作列表150中的工作单元中的一个,并且在该位置处的位的值指示该对应工作单元是否在由计算电路120完成之后已由CPU 110处理了。在这样的示例中,指令146在由CPU 110执行时可以通过利用用以指示由CPU 110处理了的(一个或多个)工作单元的适当位值来存储或更新所述串位(例如,通过将表示已由CPU 110处理了的工作单元的每个位设置成用以指示其已被处理的“1”)来存储工作确认。
在这样的示例中,与最近中断请求指示符相关联的工作单元信息可以包括如上所述的最近中断请求指示符的串位,并且与工作确认相关联的工作单元信息可以包括如上所述的工作确认的串位。在这样的示例中,为了确定CPU 110是否已处理了由最近中断请求指示符指示的已完成工作单元,逻辑126可以比较最近中断请求指示符的串位与工作确认的串位。在这样的示例中,当该比较结果指示CPU 110尚未处理由最近中断请求指示符指示为包括中断请求的至少一个已完成工作单元时(如由工作确认指示),那么逻辑126可以作为响应而中断170 CPU 110。
例如,最近中断请求指示符可以针对包括中断请求的每个已完成工作单元包括“1”,并且工作确认可以针对由CPU 110处理了的每个已完成工作单元包括“1”。在这样的示例中,逻辑126可以实行最近中断请求指示符的位与工作确认的位的逐位比较(例如,逐位的逻辑“AND(与)”),并且当最近中断请求指示符在工作确认不具有“1”的位位置处包括“1”时可以确定CPU 110至少尚未处理包括中断请求的已完成工作单元。
在如上所述的其中最近中断请求指示符和工作确认包括作为串位的相关联的工作信息的示例中,工作指示符也可以包括作为串位的工作单元信息,其中每个位位置表示(例如,工作列表150中的)一工作单元,并且位的值指示计算电路120是否已完成了该工作单元。在这样的示例中,可以以与执行顺序不同的顺序来维持工作列表150。
虽然上文中关于单个工作列表150描述了示例,但是在其它示例中,计算电路120可以完成与来自计算设备102的多个不同工作列表的工作单元相关联的工作。在这样的示例中,(执行指令142的)CPU 110可以将工作单元添加到(例如,存储介质115中的)所述工作列表中的每一个。在这样的示例中,逻辑221可以如上所述的那样存储工作指示符和最近中断请求指示符,但是在这样的示例中,逻辑221可以针对工作列表中的每一个来存储分离的工作指示符(例如,基于每个相应的工作列表中的工作单元的中断请求和其它数据)并且可以针对工作列表中的每一个来存储分离的最近中断请求指示符(例如,基于每个相应的工作列表的工作单元中的中断请求)。在这样的示例中,计算电路120可以每次完成与来自单个工作列表的工作单元相关联的工作。在其它示例中,计算电路120可以并行地完成与来自不同工作列表的工作单元相关联的工作。
在这样的示例中,(执行指令146的)CPU 110可以针对工作列表中的每一个来分别存储分离的工作确认,其中每个工作确认指示在工作列表中的相应的一个中由CPU 110处理了的工作单元。在这样的示例中,工作列表中的每一个可以具有相应的中断待决指示符,所述中断待决指示符可以在与相应的工作列表相关或相关联的中断待决时具有待决状态并并且在与该相应的工作列表相关或相关联的中断并非待决时具有清除状态。在这样的示例中,可以每次针对相应的工作列表中的每一个提供一个中断。
在这样的示例中,响应于CPU 110清除了针对工作列表中的相应的一个的中断待决指示符,逻辑126可以比较与针对该相应的工作列表的最近中断请求指示符相关联的工作单元信息和与针对该相应的工作列表的工作确认相关联的工作单元信息。在这样的示例中,逻辑126可以在该比较的结果指示CPU 110尚未处理至少所述由针对该工作列表的最近中断请求指示符指示的已完成工作单元时中断170处理资源(例如,提供与相应的工作列表相关联的中断)。在这样的示例中,当比较的结果指示CPU 110已处理了由针对相应的工作列表的最近中断请求指示符指示的已完成工作单元时,计算电路120然后可以基于该比较来继续完成与(一个或多个)其它工作单元相关联的工作而不中断CPU 110。在一些示例中,本文中关于图1描述的功能性可以与本文中关于图2-4中的任何一个描述的功能性结合地提供。
图2是示例计算系统200的框图,示例计算系统200包括计算资源203,计算资源203包含计算电路120,用以基于与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的比较来中断处理资源110。在图2的示例中,计算系统200包括计算设备202。计算设备202包括(如上文关于图1描述的)至少一个处理资源110、(如上文关于图1描述的)用于存储工作单元的机器可读存储介质115以及与(一个或多个)处理资源110分离的计算资源203。在图2的示例中,计算资源203可以包括如上文关于图1描述的计算电路120。在一些示例中,计算电路120可以包括逻辑221,逻辑221可以如上文关于图1描述的那样实现。
在图2的示例中,逻辑221可以包括逻辑122,逻辑122可由计算电路120执行以完成与变为可用于计算电路120的多个工作单元相关联的工作。在一些示例中,逻辑122可以至少访问存储介质115中的工作单元151、152、153、155和156,它们变为可用于计算电路120,如上文在图1中描述的那样。逻辑122可以如上文关于图1描述的那样完成与所述多个工作列表相关联的工作。
在一些示例中,逻辑221可以包括逻辑124,逻辑124可由计算电路120执行以存储用以指定包括用以中断处理资源的请求(例如,255)的最近完成的工作单元(例如,155)的最近中断请求指示符(例如,162),如上文关于图1描述的那样。在一些示例中,逻辑221可以包括逻辑126,逻辑126用以如上所述的那样响应于(一个或多个)处理资源110清除中断待决指示符166而比较与最近中断请求指示符相关联的工作单元信息和与由(一个或多个)处理资源110生成的工作确认相关联的工作单元信息。在一些示例中,中断待决指示符166可以存储清除状态或待决状态,如上文关于图1描述的那样。在这样的示例中,逻辑126可以在该比较指示(一个或多个)处理资源110还未处理至少由最近中断请求指示符指示的已完成工作单元时中断170(一个或多个)处理资源110。
在图2的示例中,最近中断请求指示符和工作确认可以以任何适当的方式来实现,如上文关于图1描述的那样。在一些示例中,最近中断请求指示符和工作确认可以包括指向工作单元的相应指针,并且逻辑126可以比较与它们相关联的工作单元信息,如上文关于图1描述的那样。在其它示例中,最近中断请求指示符和工作确认可以各自包括相应的串位,并且逻辑126可以比较相应的串位,如上文关于图1描述的那样。
如上文关于图1描述的那样,在一些示例中,工作单元可以指定要由计算电路120代表(一个或多个)处理资源110完成的工作。在这样的示例中,工作单元可以由处理资源110生成,并且可以通过(一个或多个)处理资源110将相应的工作单元存储在存储介质115中计算电路120可访问的区域中而变为可用于计算电路120。
在其它示例中,所述多个工作单元中的每一个可以是由计算电路120获取的相应网络分组。例如,计算设备202可以包括能够经由至少一个计算机网络通信的至少一个网络接口,所述计算机网络诸如例如局域网(LAN)、虚拟局域网(VLAN)、无线局域网(WLAN)、虚拟私人网络(VPN)、因特网或类似物或者其组合。在这样的示例中,计算电路120可以经由网络接口获取所述网络分组中的每一个。在这样的示例中,为了完成与网络分组(即,工作单元)相关联的工作,计算电路的逻辑122可以将网络分组存储在计算设备202的存储器(例如,机器可读存储介质115)中。在一些示例中,网络分组的元数据可以指定要针对该分组进行的工作。在这样的示例中,为了使计算电路120完成与这样的网络分组相关联的工作,逻辑122可以将网络分组存储在计算设备202的存储器中、完成在网络分组的元数据中指定的工作或二者。
在一些示例中,网络分组中的一些可以包括相应的中断请求,如上文关于工作单元描述的那样。在这样的示例中,逻辑124可以如上所述的那样存储最近中断请求指示符以指定包括用以中断(一个或多个)处理资源110的请求的最近存储的网络分组(即,已完成工作单元)。在这样的示例中,响应于来自计算电路120的中断,(一个或多个)处理资源110可以通过基于由计算电路120存储在存储器中的网络分组而实行(一个或多个)适当的动作来处理已存储的网络分组(即,已完成工作单元)。例如,(一个或多个)处理资源110可以实行由所述网络分组指定的任何(一个或多个)动作,诸如获取由该网络分组请求的数据、将该网络分组的有效负荷添加到其它接收到的数据、或类似动作、或其组合。在这样的示例中,(一个或多个)处理资源110可以如上所述的那样存储工作确认(例如,164)以指示其已经处理了哪些网络分组(即,工作单元)。尽管(一个或多个)处理资源110正处理网络分组,但是响应于与网络分组相关联的中断,中断待决指示符166可以具有待决状态。
响应于处理资源清除中断待决指示符166,如上所述,计算电路120的逻辑126可以以如上所述的适当方式来比较与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息。在这样的示例中,逻辑126可以在该比较指示(一个或多个)处理资源110还未处理至少由最近中断请求指示符指示(为包括中断请求的网络分组)的已存储的网络分组(即,已完成工作单元)时中断(一个或多个)处理资源110。在一些示例中,本文中关于图2描述的功能性可以与本文中关于图1和图3-4中的任何一个描述的功能性结合地提供。
图3是包括存储最近中断请求指示符的计算系统的示例方法300的流程图。虽然下文中参考图1的计算系统100来描述方法300的执行,但是可以利用其它适当的系统用于方法300的执行(例如,图2的计算系统200)。附加地,方法300的实现不限于这样的示例。
在图3的示例中,在方法300的305处,(与计算设备102的CPU 110分离的)计算电路120可以完成由存储在计算设备102的存储器(例如,存储介质115)中的工作列表150中的工作单元指定的工作,如上文关于图1描述的那样。在310处,计算电路120可以如上所述的那样识别计算电路120已完成的工作单元中的给定的一个包括中断请求。在315处,响应于识别出给定的已完成工作单元包括中断请求,计算电路120可以存储用以将该给定工作单元指定为包括用以中断CPU 110的请求的最近完成的工作单元的最近中断请求指示符。
在320处,计算电路120可以确定针对工作列表150的中断待决指示符166具有待决状态,所述待决状态指示与工作列表150相关的中断当前正关于CPU 110而待决,如上文描述的那样。在325处,响应于确定了中断待决指示符具有待决状态,计算电路120可以前进至工作列表150的下一工作单元而不中断CPU 110,如上文描述的那样。
在330处,响应于CPU 110将中断待决指示符设置成清除状态,计算电路120可以基于与最近中断请求指示符相关联的工作单元信息和与CPU 110的工作确认相关联的工作单元信息的比较来确定是否要中断CPU 110,如上文描述的那样。在这样的示例中,比较的结果可以指示CPU 110是否已处理了由计算电路完成了的、且由最近中断请求指示符指示的给定工作单元,如上文关于图1描述的那样。在本文中描述的示例中,被描述为由计算电路120实行的功能性可以通过计算电路120执行逻辑221来实行,如上文描述的那样。
虽然图3的流程图示出了某些功能性的实行的具体顺序,但是方法300不限于该顺序。例如,在流程图中连续示出的功能性可以以不同顺序来实行、可以并发地或部分并发地执行、或者其组合。在一些示例中,本文中关于图3描述的功能性可以与本文中关于图1-2和图4中的任何一个描述的功能性结合地提供。
图4是计算系统的示例方法400的流程图,示例方法400包括基于与最近中断请求指示符相关联的工作单元信息和与工作确认相关联的工作单元信息的比较来确定是否要中断CPU。虽然下文中参考图1的计算系统100来描述方法400的执行,但是可以利用其它适当的系统用于方法400的执行(例如,图2的计算系统200)。附加地,方法400的实现不限于这样的示例。
在图4的示例中,在方法400的405处,(与计算设备102的CPU 110分离的)计算电路120可以完成由存储在计算设备102的存储器(例如,存储介质115)中的工作列表150中的工作单元指定的工作,如上文关于图1描述的那样。
在410处,计算电路120可以如上所述的那样识别计算电路120已完成的工作单元中的给定的一个是否包括中断请求。如果否,那么方法400可以返回至405,在那里计算电路120可以完成由工作列表150的下一工作单元指定的工作。如果已完成工作单元中的给定的一个包括中断请求,那么作为响应,计算电路120可以存储用以指示计算电路120已完成了工作列表150中的至少该给定工作单元的工作指示符,如上文描述的那样。同样,响应于识别出给定工作单元包括中断请求,在420处,计算电路120可以存储用以将该给定工作单元指定为包括用以中断CPU 110的请求的最近完成的工作单元的最近中断请求指示符,如上文描述的那样。
在425处,计算电路120可以确定针对工作列表150的中断待决指示符166是否具有待决状态。如果否(例如,如果计算电路120确定了中断待决指示符166具有清除状态,表明没有与工作列表150相关的任何中断当前正关于CPU 110而待决),那么在430处,计算电路120可以中断CPU 110,并且可以将中断待决指示符166设置成待决状态。如果在425处计算电路120确定了中断待决指示符166具有待决状态(表明与工作列表150相关的中断当前正关于CPU 110而待决),那么在435处,计算电路120可以前进至工作列表150的下一工作单元而不中断CPU 110,如上文描述的那样。
在440处,计算电路120可以确定(例如,CPU 110)已将中断待决指示符166设置成清除状态。在445处,响应于CPU 110将中断待决指示符166设置成清除状态,计算电路120可以比较与最近中断请求指示符相关联的工作单元信息和与由CPU 110存储的工作确认相关联的工作单元信息,如上文描述的那样。
在450处,基于比较的结果,计算电路120可以确定CPU 110是否已处理了由计算电路完成了的、且由最近中断请求指示符指示的给定工作单元,如上文关于图1描述的那样。当计算电路120确定了该比较的结果指示CPU 110尚未处理至少所述由计算电路120完成了的且由最近中断请求指示符指示的给定工作单元时,在455处,计算电路120可以中断CPU110并将中断待决指示符166设置成待决状态。当计算电路120确定了该比较的结果指示CPU110已处理了由计算电路120完成了的且由最近中断请求指示符指示的给定工作单元时,在460处,计算电路120可以前进至工作列表150的下一工作单元而不中断CPU 110。
在本文中描述的示例中,被描述为由计算电路120实行的功能性可以通过计算电路120执行逻辑221来实行,如上文描述的那样。虽然图4的流程图示出了某些功能性的实行的具体顺序,但是方法400不限于该顺序。例如,在流程图中连续示出的功能性可以以不同顺序来实行、可以并发地或部分并发地执行、或者其组合。在一些示例中,本文中关于图4描述的功能性可以与本文中关于图1-3中的任何一个描述的功能性结合地提供。
在本说明书(包括任何随附的权利要求、摘要和附图)中公开的全部特征和/或如此公开的任何方法或过程的全部元素可以以任何组合进行组合,除了其中此类特征和/或元素中的至少一些相互排斥的组合之外。
Claims (20)
1.一种计算资源,包括:
包括逻辑的计算电路,所述逻辑可执行以:
完成与变为可用于所述计算电路的多个工作单元相关联的工作;
存储用以指定包括用以中断处理资源的请求的最近完成的工作单元的最近中断请求指示符,其中所述处理资源与所述计算电路分离;
响应于所述处理资源清除了中断待决指示符,比较与所述最近中断请求指示符相关联的工作单元信息和与由所述处理资源生成的工作确认相关联的工作单元信息,所述工作确认用以指示已在由所述计算电路完成后由CPU处理了的至少一个工作单元;以及
在所述比较指示所述处理资源尚未处理由所述最近中断请求指示符指示的已完成工作单元时中断所述处理资源。
2.根据权利要求1所述的计算资源,其中所述计算电路包括逻辑,所述逻辑可执行以:
当所述比较指示所述处理资源已处理了由所述最近中断请求指示符指示的所述已完成工作单元时,完成下一工作单元而不在完成所述下一工作单元之前中断所述处理资源。
3.根据权利要求1所述的计算资源,其中所述计算电路包括逻辑,所述逻辑可执行以:
在完成由所述工作单元中的给定的一个指定的工作之后,识别所述给定工作单元是否包括用以中断所述处理资源的请求;以及
响应于所述给定工作单元包括用以中断所述处理资源的请求的识别,确定用于工作列表的中断待决指示符是否具有待决状态。
4.根据权利要求3所述的计算资源,其中所述计算电路包括逻辑,所述逻辑可执行以:
响应于所述给定工作单元包括用以中断所述处理资源的请求的所述识别:
存储用以指示所述计算电路已完成至少所述给定工作单元的工作指示符;以及
存储用以指定所述给定工作单元的所述最近中断请求指示符;以及
响应于所述中断待决指示符具有所述待决状态的确定,完成与下一工作单元相关联的工作而不在完成与所述下一工作单元相关联的所述工作之前中断所述CPU。
5.根据权利要求1所述的计算资源,其中所述计算电路包括逻辑,所述逻辑可执行以:
响应于所述给定工作单元包括用以中断所述处理资源的请求的所述识别:
存储用以指示所述计算电路已完成至少所述给定工作单元的工作指示符;以及
存储用以指定所述给定工作单元的所述最近中断请求指示符;以及
响应于所述中断待决指示符具有清除状态的确定:
中断所述处理资源;
将所述中断待决指示符设置成指示中断当前正待决。
6.根据权利要求1所述的计算资源,其中,所述计算资源是在硬件中包括所述逻辑的专用集成电路(ASIC)。
7.根据权利要求1所述的计算资源,其中:
所述工作单元以执行顺序存储在工作列表中;
所述最近中断请求指示符包括指向所述工作列表中的、包括用以中断所述处理资源的请求的最近完成的工作单元的指针;以及
所述工作确认包括指向所述工作列表中的、已在由所述计算电路完成之后由所述处理资源处理了的最近的工作单元的指针。
8.根据权利要求1所述的计算资源,其中:
所述最近中断请求指示符指示已由所述处理资源完成了并且包括用以中断所述处理资源的请求的所述多个工作单元中的每一个;以及
所述工作确认指示已在由所述计算电路完成之后由所述CPU处理了的所述多个工作单元中的每一个。
9.根据权利要求1所述的计算资源,其中:
所述多个工作单元中的每一个是由所述计算电路获取的相应网络分组;以及
为了完成与所述网络分组相关联的工作,所述计算电路包括可执行以将所述网络分组存储在计算设备的存储器中的逻辑。
10.一种系统,包括:
中央处理单元(CPU),用于执行用以将包括给定工作单元的工作单元添加到存储在存储器中的工作列表的指令;以及
计算电路,用于完成由所述工作单元指定的工作;
其中,在所述计算电路完成了由所述给定工作单元指定的所述工作的执行之后,所述计算电路用于识别所述给定工作单元是否包括中断请求;
其中,响应于所述给定工作单元包括中断请求的识别,所述计算电路用于存储用以将所述给定工作单元指定为所述工作列表中的、包括用以中断所述CPU的请求的最近完成的工作单元的最近中断请求指示符;
其中,所述CPU用于执行用以存储用以指示已在由所述计算电路完成之后由所述CPU处理了的所述工作列表中的至少一个工作单元的工作确认的指令;以及
其中,响应于所述CPU清除了中断待决指示符,所述计算电路用于比较与所述最近中断请求指示符相关联的工作单元信息和与所述工作确认相关联的工作单元信息,并且当所述比较指示所述CPU尚未处理由所述最近中断请求指示符指示的所述给定工作单元时用于中断所述CPU。
11.根据权利要求10所述的系统,其中:
响应于所述给定工作单元包括中断请求的所述确定,所述计算电路还用于:
存储用以指示所述计算电路已完成所述工作列表中的至少所述给定工作单元的工作指示符;以及
从所述中断待决指示符确定与所述工作列表相关的中断当前是否正待决。
12.根据权利要求11所述的系统,其中,响应于与所述工作列表相关的中断当前正待决的确定,所述计算电路用于:
实行所述工作列表中的下一工作单元而不在实行所述下一工作单元之前中断所述CPU。
13.根据权利要求11所述的系统,其中,响应于基于所述中断待决指示符的与所述工作列表相关的中断当前并非正待决的确定,所述计算电路用于:
中断所述CPU;以及
将所述中断待决指示符设置成指示与所述工作列表相关的中断当前正待决。
14.根据权利要求10所述的系统,其中:
所述CPU用于执行用以在存储所述工作确认之后更新所述中断待决指示符以指示没有与所述工作列表相关的任何中断当前正关于所述CPU待决的指令。
15.根据权利要求10所述的系统,其中:
当所述比较的所述结果指示所述CPU已处理了由所述最近中断请求指示符指示的所述工作单元时,所述计算电路用于实行所述工作列表中的下一工作单元而不在实行所述下一工作单元之前中断所述CPU。
16.一种方法,包括:
用与计算设备的中央处理单元(CPU)分离的计算电路,完成由存储在所述计算设备的存储器中的工作列表中的工作单元指定的工作;
用所述计算电路,识别所述计算电路已完成的、包括中断请求的、所述工作单元中的给定的一个;
用所述计算电路,响应于所述识别而存储用以将所述给定工作单元指定为包括用以中断所述CPU的请求的最近完成的工作单元的最近中断请求指示符;
用所述计算电路,确定用于所述工作列表的中断待决指示符具有指示与所述工作列表相关的中断当前正关于所述CPU而待决的待决状态;
用所述计算电路,响应于确定了所述中断待决指示符具有所述待决状态而前进至所述工作列表中的下一工作单元而不中断所述CPU;
响应于所述CPU将所述中断待决指示符设置成清除状态,用所述计算电路基于由所述计算电路进行的与所述最近中断请求指示符相关联的工作单元信息和与所述CPU的工作确认相关联的工作单元信息的比较来确定是否要中断所述CPU,所述比较的结果用以指示所述CPU是否已处理了由所述计算电路完成且由所述最近中断请求指示符指示的所述给定工作单元。
17.根据权利要求16所述的方法,进一步包括:
响应于所述CPU将所述中断待决指示符设置成所述清除状态:
用所述计算电路,比较与所述最近中断请求指示符相关联的所述工作单元信息和与所述工作确认相关联的所述工作单元信息,所述工作确认用以指示已在由所述计算电路完成后由所述CPU处理了的所述工作列表中的至少一个工作单元。
18.根据权利要求17所述的方法,进一步包括:
当所述比较的结果指示所述CPU尚未处理由所述计算电路完成且由所述最近中断请求指示符指示的所述给定工作单元时,用所述计算电路中断所述CPU。
19.根据权利要求18所述的方法,进一步包括:
当所述比较的结果指示所述CPU已处理了由所述计算电路完成且由所述最近中断请求指示符指示的所述给定工作单元时,用所述计算电路前进至所述工作列表中的下一工作单元而不中断所述CPU。
20.根据权利要求16所述的方法,进一步包括:
响应于识别出所述给定工作单元包括中断请求,用所述计算电路存储用以指示所述计算电路已完成了所述工作列表中的至少所述给定工作单元的工作指示符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/475,394 US10467162B2 (en) | 2017-03-31 | 2017-03-31 | Interrupt based on a last interrupt request indicator and a work acknowledgement |
US15/475394 | 2017-03-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694078A true CN108694078A (zh) | 2018-10-23 |
CN108694078B CN108694078B (zh) | 2022-12-09 |
Family
ID=60942826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053424.2A Active CN108694078B (zh) | 2017-03-31 | 2018-01-19 | 计算资源和用于处理中断的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10467162B2 (zh) |
EP (1) | EP3382540B1 (zh) |
CN (1) | CN108694078B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111679945A (zh) * | 2020-06-12 | 2020-09-18 | 地平线(上海)人工智能技术有限公司 | 处理器的检测方法、装置及计算机可读存储介质 |
US12020066B2 (en) * | 2021-06-11 | 2024-06-25 | International Busin ess Machines Corporation | Asynchronous completion notification in a multi-core data processing system |
US11645215B2 (en) | 2021-06-11 | 2023-05-09 | International Business Machines Corporation | Efficient selection of a particular processor thread for handling an interrupt |
US11755362B2 (en) | 2021-06-11 | 2023-09-12 | International Business Machines Corporation | Techniques for handling escalation of interrupts in a data processing system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236879A1 (en) * | 2003-05-23 | 2004-11-25 | Daren Croxford | Handling interrupts in a system having multiple data processing units |
CN101365999A (zh) * | 2005-02-03 | 2009-02-11 | 五级网络公司 | 发送完成事件批处理 |
CN102483705A (zh) * | 2009-08-14 | 2012-05-30 | 超威半导体公司 | 多核结构的用户级中断机制 |
CN103368848A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 信息处理设备、算术装置和信息传递方法 |
US20140344492A1 (en) * | 2013-05-15 | 2014-11-20 | Lsi Corporation | Methods and systems for reducing spurious interrupts in a data storage system |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3008896B2 (ja) | 1997-06-16 | 2000-02-14 | 日本電気株式会社 | 共有バス型マルチプロセッサシステムの割り込み負荷分散システム |
US6185639B1 (en) | 1998-06-05 | 2001-02-06 | International Business Machines Corporation | System and method to reduce a computer system's interrupt processing overhead |
US6185652B1 (en) | 1998-11-03 | 2001-02-06 | International Business Machin Es Corporation | Interrupt mechanism on NorthBay |
US6529986B1 (en) | 1999-01-26 | 2003-03-04 | 3Com Corporation | Interrupt optimization using storage time for peripheral component events |
US6574694B1 (en) | 1999-01-26 | 2003-06-03 | 3Com Corporation | Interrupt optimization using time between succeeding peripheral component events |
US6356970B1 (en) | 1999-05-28 | 2002-03-12 | 3Com Corporation | Interrupt request control module with a DSP interrupt vector generator |
US6738836B1 (en) | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US6889278B1 (en) | 2001-04-04 | 2005-05-03 | Cisco Technology, Inc. | Method and apparatus for fast acknowledgement and efficient servicing of interrupt sources coupled to high latency paths |
US7313734B2 (en) | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
US7243178B2 (en) | 2003-05-16 | 2007-07-10 | Intel Corporation | Enable/disable claiming of a DMA request interrupt |
US7234017B2 (en) | 2005-02-24 | 2007-06-19 | International Business Machines Corporation | Computer system architecture for a processor connected to a high speed bus transceiver |
US7610425B2 (en) * | 2005-08-22 | 2009-10-27 | Sun Microsystems, Inc. | Approach for managing interrupt load distribution |
ATE519163T1 (de) | 2006-01-04 | 2011-08-15 | Nxp Bv | Verfahren und vorrichtung zur interrupt- verteilung in einem multiprozessorsystem |
US7953906B2 (en) | 2007-02-20 | 2011-05-31 | Ati Technologies Ulc | Multiple interrupt handling method, devices and software |
US7774522B2 (en) | 2008-11-17 | 2010-08-10 | Applied Micro Circuits Corporation | Cache stashing processor control messages |
US8244930B1 (en) | 2010-05-05 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Mechanisms for synchronizing data transfers between non-uniform memory architecture computers |
US10838893B2 (en) * | 2014-05-30 | 2020-11-17 | Apple Inc. | Methods for mitigating system interrupts for an electronic device |
US9921984B2 (en) | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
KR20180083688A (ko) * | 2017-01-13 | 2018-07-23 | 삼성전자주식회사 | 애플리케이션 프로세서 및 집적 회로 |
-
2017
- 2017-03-31 US US15/475,394 patent/US10467162B2/en active Active
- 2017-12-19 EP EP17208445.1A patent/EP3382540B1/en active Active
-
2018
- 2018-01-19 CN CN201810053424.2A patent/CN108694078B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236879A1 (en) * | 2003-05-23 | 2004-11-25 | Daren Croxford | Handling interrupts in a system having multiple data processing units |
CN101365999A (zh) * | 2005-02-03 | 2009-02-11 | 五级网络公司 | 发送完成事件批处理 |
CN102483705A (zh) * | 2009-08-14 | 2012-05-30 | 超威半导体公司 | 多核结构的用户级中断机制 |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
CN103368848A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 信息处理设备、算术装置和信息传递方法 |
US20140344492A1 (en) * | 2013-05-15 | 2014-11-20 | Lsi Corporation | Methods and systems for reducing spurious interrupts in a data storage system |
Also Published As
Publication number | Publication date |
---|---|
EP3382540B1 (en) | 2022-11-02 |
US10467162B2 (en) | 2019-11-05 |
CN108694078B (zh) | 2022-12-09 |
US20180285293A1 (en) | 2018-10-04 |
EP3382540A1 (en) | 2018-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694078A (zh) | 基于最近中断请求指示符和工作确认的中断 | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
US11755356B2 (en) | Asynchronous queries on secondary data cores in a distributed computing system | |
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US9207961B2 (en) | Cloud defragmentation | |
US9141677B2 (en) | Apparatus and method for arranging query | |
CN105683905A (zh) | 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体 | |
US20110314157A1 (en) | Information processing system, management apparatus, processing requesting apparatus, information processing method, and computer readable medium storing program | |
JP2009176103A (ja) | 仮想ネットワークシステムのnic接続制御方法とシステムおよびプログラム | |
CN102165739A (zh) | 使用散列对经由rdma写入的消息的可靠接收 | |
CN105874426A (zh) | 一种系统调用命令的批处理方法及装置 | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
CN105045667A (zh) | 一种用于虚拟机vCPU调度的资源池管理方法 | |
CN110417856B (zh) | 多活负载均衡应用的扩容方法、装置、设备及存储介质 | |
CN116627659A (zh) | 模型检查点文件保存方法、装置、设备及存储介质 | |
US10372470B2 (en) | Copy of memory information from a guest transmit descriptor from a free pool and assigned an intermediate state to a tracking data structure | |
CN114610465A (zh) | 任务处理方法、装置及存储介质 | |
CN116391177A (zh) | 带优先级的非活动存储器设备更新 | |
CN109617954B (zh) | 一种创建云主机的方法和装置 | |
JP6339978B2 (ja) | リソース割当管理装置およびリソース割当管理方法 | |
CN104932934A (zh) | 信息处理装置及信息处理方法 | |
EP3669265B1 (en) | Copying a software virtualization object file | |
US20240146664A1 (en) | Efficient network device work queue | |
EP3985506A1 (en) | Utilizing models for concurrently discovering network resources of a network | |
JP2009289095A (ja) | 仮想ディスクのパッチシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |