执行多核处理器的多个数据请求

文档序号:1942794 发布日期:2021-12-07 浏览:14次 >En<

阅读说明:本技术 执行多核处理器的多个数据请求 (Executing multiple data requests of a multi-core processor ) 是由 R·温克尔曼 M·费 M·克莱恩 C·奥泰 E·钱西恩斯基 H·埃切尔伯格 于 2020-04-02 设计创作,主要内容包括:本公开涉及一种用于包括多个处理器核的计算机系统的方法,其中高速缓存的数据项被分配给处理器核中的第一核,用于由第一核独占地执行原子原语。所述方法包括:在原子原语的执行未由第一核完成时,在高速缓存控制器处从第二核接收对访问数据项的请求。响应于确定在接收到所述第二核的对所述数据项的第二请求之前,从所述多个处理器核中的第三核接收到所述请求,可向所述第二核返回拒绝消息。(The present disclosure relates to a method for a computer system comprising a plurality of processor cores, wherein cached data items are allocated to a first core of the processor cores for exclusive execution of atomic primitives by the first core. The method comprises the following steps: a request to access the data item is received at the cache controller from the second core when execution of the atomic primitive is not completed by the first core. In response to determining that the request is received from a third core of the plurality of processor cores before receiving a second request for the data item for the second core, a rejection message may be returned to the second core.)

执行多核处理器的多个数据请求

背景技术

本发明涉及数字计算机系统领域,并且更具体地,涉及用于包括多个处理器核的计算机系统的方法。

在并发编程中,对共享资源的并发访问可能导致意外的或错误的行为,因此可以保护访问共享资源的程序的部分。此受保护区段可称为原子原语(atomic primitive)、临界区段或临界区。原子原语可访问共享资源,例如在多个并发访问的上下文中将不正确操作的数据结构。然而,需要在多核处理器中更好地控制原子原语的使用。

发明内容

各个实施例提供了一种用于包括多个处理器核的计算机系统的方法、计算机程序产品和处理器系统,如独立权利要求的主题所描述的。在从属权利要求中描述了有利的实施例。如果本发明的实施例不相互排斥,则它们可以彼此自由组合。

在一个方面中,本发明涉及一种用于包括多个处理器核的计算机系统的方法,其中,数据项被独占地分配给所述多个处理器核中的第一核,用于由所述第一核执行原子原语。所述方法包括:在原子原语的执行未由第一核完成时,在高速缓存控制器处从处理器核中的第二核接收对访问数据项的请求;以及响应于确定在接收所述第二核的对所述数据项的另一请求之前,从所述多个处理器核中的第三核接收到所述请求,向所述第二核返回拒绝消息,其中向所述第二核的所述拒绝消息进一步指示另一请求正在等待所述原子原语,否则向所述第一核发送无效请求,用于使所述第一核对所述数据项的独占访问无效。该方法还包括从第一核接收指示对无效请求的肯定响应的响应;以及响应于对来自第一核的无效请求的肯定响应,高速缓存控制器向所述第二核回应所述数据可用于访问。

在示例性实施例中,该方法还包括在第三核仍然在等待数据项的同时,由高速缓存控制器返回针对数据项的每个接收的请求的拒绝消息。

在示例性实施例中,该方法还包括提供指示高速缓存控制器的多个可能状态的高速缓存协议,其中,所述多个可能状态中的每个状态与要由所述高速缓存控制器执行的相应动作相关联,所述方法包括当所述高速缓存控制器处于所述多个可能状态中的第一状态时接收所述请求,以及由所述高速缓存控制器从所述第一状态切换到所述多个可能状态中的第二状态,使得根据所述第二状态的动作在所述高速缓存控制器的所述第二状态中执行所述确定。该方法还包括从第二状态切换到多个可能状态中的第三状态,使得根据与第三状态相关联的动作在第三状态中执行返回,或者从第二状态切换到多个可能状态中的第四状态,使得根据与第四状态相关联的动作在第四状态中执行无效请求的发送、接收和回应步骤。

在另一方面中,本公开涉及一种计算机程序产品,其包括共同地存储程序指令的一个或多个计算机可读存储介质,所述程序指令可由处理器或可编程电路执行以使所述处理器或所述可编程电路执行用于包括多个处理器核的计算机系统的方法,其中数据项被独占地分配给所述多个处理器核中的第一核,用于由所述第一核执行原子原语;所述方法包括:当所述原子原语的所述执行未由所述第一核完成时,在高速缓存控制器处从所述处理器核的第二核接收对访问所述数据项的请求;以及响应于确定在接收所述第二核的对所述数据项的另一请求之前,从所述多个处理器核中的第三核接收到所述请求,向所述第二核返回拒绝消息,其中向所述第二核的所述拒绝消息进一步指示另一请求正在等待所述原子原语,否则向所述第一核发送无效请求,用于使所述第一核对所述数据项的独占访问无效。该方法还包括从第一核接收指示对无效请求的肯定响应的响应;以及响应于对来自第一核的无效请求的肯定响应,高速缓存控制器向所述第二核回应所述数据可用于访问。

在另一方面中,本发明涉及一种具有由所述处理器系统的高速缓存控制器维持的一致性的处理器系统,所述处理器系统包括多个处理器核,其中数据项被独占地指派给所述多个处理器核中的第一核,以用于由所述第一核执行原子原语。高速缓存控制器被配置为:在原子原语的执行未由第一核完成时,从多个处理器核中的第二核接收对访问数据项的请求;以及响应于确定在接收所述第二核的对所述数据项的另一请求之前从所述多个处理器核中的第三核接收到所述请求,向所述第二核返回拒绝消息,向所述第二核的所述拒绝消息进一步指示另一请求正在等待所述原子原语,否则向所述第一核发送无效请求,用于使所述第一核对所述数据项的独占访问无效;从所述第一核接收指示对所述无效请求的肯定响应的响应;以及响应于对来自第一核的无效请求的肯定响应,高速缓存控制器向所述第二核回应所述数据可用于访问。

在示例性实施例中,处理器系统的第三核包括用于执行预定义指令的逻辑电路,其中高速缓存控制器被配置为响应于逻辑电路执行预定义指令而执行确定步骤。

附图说明

在以下实施例中,参照附图,仅通过示例的方式更详细地解释本发明,在附图中:

图1描绘了根据本公开的实施例的示例多处理器系统。

图2A描绘了根据本公开的实施例的用于处理多个处理器核的数据请求的方法的流程图。

图2B是示出根据本公开的实施例的用于处理多个处理器核的数据请求的方法的框图。

图3描绘了根据本公开的实施例的用于在包括多个处理器核的计算机系统中实现用于工作负荷分配的锁的方法的流程图。

具体实施方式

本发明的不同实施例的描述将出于说明的目的而呈现,且不意欲为详尽的或限于所揭示的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使本领域普通技术人员能够理解。

本发明可防止当给定处理器核进入原子原语时,其他处理器核不必等待(例如,通过连续地请求锁)给定处理器核,直到其完成原子原语为止。其他处理器核可以在执行原子原语时执行其他任务。这可实现处理器资源的高效使用。术语“核”和“处理器核”在此可互换地使用。

原子原语可由存储位置和一或多个指令集定义。该一个或多个指令集可以访问存储位置。存储位置可以与限制访问该位置的锁相关联。为了输入原子原语,必须获取锁。一旦获取,则原子原语仅由获取锁的核执行(即,执行指令集)。一旦锁被释放,这指示核已经离开原子原语。

根据一个实施例,确定在第二核的请求之前接收到第三核的另一请求包括确定第三核在等待数据项。这可以例如通过使用与数据项相关联的状态来执行,其中数据项的状态可以指示该数据项正被给定核等待。

根据一个实施例,该方法还包括在第三核仍然在等待数据项的同时,由高速缓存控制器返回针对数据项的每个进一步接收的请求的拒绝消息。可以从处理器核中的另一个处理器核接收另外的请求。例如,第一核具有锁,并且第三核等待数据项。不仅第二核通过接收到拒绝消息而被拒绝,而且第二核之后的所有核也将在第三核仍然等待数据项时被拒绝。

根据一个实施例,该方法还包括提供指示高速缓存控制器的多个可能状态的高速缓存协议,其中所述多个状态中的每个状态与要由所述高速缓存控制器执行的相应动作相关联,所述方法包括:当所述高速缓存控制器处于所述多个状态中的第一状态时,接收所述请求,由所述高速缓存控制器从所述第一状态切换到第二状态,使得根据所述第二状态的动作在所述高速缓存控制器的所述第二状态中执行所述确定,以及从所述第二状态切换到所述多个状态中的第三状态,使得根据与所述第三状态相关联的动作在所述第三状态中执行所述返回,或者从所述第二状态切换到所述多个状态中的第四状态,以便发送所述无效请求,根据与所述第四状态相关联的动作,在所述第四状态中执行所述接收和所述回应步骤。

根据一个实施例,高速缓存协议进一步指示多个数据状态。数据项的数据状态指示数据项的所有权状态或一致性状态。数据项的数据状态实现多个处理器核对数据项的一致访问。该方法包括:将多个数据状态中的给定数据状态分配给该数据项,用于指示该数据项属于原子原语并且该数据项由另一核请求和等待,其中,在接收第二核的请求之前确定从第三核接收到对该数据项的另一请求包括:高速缓存控制器确定所请求的数据项处于给定数据状态。例如,高速缓存行元数据可以用于指示在原子原语中使用的数据项的一致性状态。

根据一个实施例,接收请求包括监视连接高速缓存控制器和处理器核的总线系统,其中返回拒绝消息包括生成指示拒绝消息的系统总线事务。

根据一个实施例,该方法进一步包括响应于确定原子原语完成,将数据项返回到等待的第三核。这可以使得第三处理器核能够接收所请求的数据项而不必执行重复的请求。已经接收到拒绝响应的第二处理器核可以执行其他任务。这可通过将原子原语有效地传送到第三处理器且允许第二核(和任何后续核请求)执行其他工作来增加计算机系统的性能。

根据一个实施例,该方法进一步包括引起该第二核在该原子原语的预定义最大执行时间之后重新提交用于访问该数据项的该请求。例如,可以在发送拒绝消息之后执行该引起操作。这可以防止第二处理器核在不执行任何附加任务的情况下进入重复请求的循环。

根据一个实施例,向第二核返回拒绝消息进一步包括:引起第二核在原子原语被执行时执行一个或多个另外的指令,另外的指令不同于用于请求数据项的指令。与第二核必须等待第一核(或第一核和任何等待核)直到其完成原子原语的执行的情况相比,这可实现处理器资源的高效使用。

根据一个实施例,原子原语的执行包括访问在第一核与第三核之间共享的数据,其中所接收的请求是用于使得能够由第二核访问共享数据的请求。该数据可以附加地与第二核共享。

根据一个实施例,数据项是由第一核获取的用于执行原子原语的锁,其中确定原子原语的执行未完成包括确定锁不可用。该实施例可以无缝地集成在激励系统中。锁可例如通过使用常规存储指令释放。

根据一个实施例,在原子原语的执行完成之后释放与数据项相关联的高速缓存行。

根据一个实施例,数据项被高速缓存在第一核的高速缓存中。第一核的高速缓存可以是数据高速缓存或指令高速缓存。

根据一个实施例,数据项被高速缓存在第一和第二核之间共享的高速缓存中。高速缓存可以附加地与第三核共享。高速缓存可以是数据高速缓存或指令高速缓存。

根据一个实施例,该方法进一步包括提供处理器指令,其中,该请求的接收是该第二核执行该处理器指令的结果,其中,该确定步骤和返回步骤是响应于确定所接收的请求由该处理器指令触发而执行的。第三核还可以被配置为通过执行处理器指令来发送请求。

处理器指令可以命名为暂时性独占加载测试(TELT)。TELT指令可以由核以与加载&测试指令相同的方式发布。TELT指令可以返回高速缓存行并且进行测试或者可以得到拒绝响应。拒绝响应不返回高速缓存行数据,因此不将其安装在高速缓存中。相反,以与加载&测试指令失败的相同方式处理拒绝响应。TELT指令可能是有益的,因为它可在刚性防护下工作,因为它是非阻塞的(提供拒绝响应而不改变高速缓存行状态)。另一优点可以是它可以向请求核提供更快的响应,使得其他核能够在其他任务上工作。另一优点是TELT指令不从锁所有者窃取高速缓存行(例如,在解锁之前不需要排它提取)。

TELT指令可以具有RX或RXE格式,诸如LOAD指令。在由TELT指令的第二操作数指定的数据可用的情况下,将数据放置在TELT指令的第一操作数处。在数据不可用的情况下,第一操作数的内容是未指定的。得到的TELT指令的条件码可以为:“0”指示结果为零;“1”指示结果小于零;“2”指示结果大于零并且“3”指示数据不可用。在典型的编程序列中,根据条件代码,结果将在以后处理。

TELT指令可作为与处理器系统相关联的指令集架构(ISA)的一部分来提供。

图1描绘了根据本公开的实施例的示例多处理器系统100。多处理器系统100包括多个处理器核101A-N。多个处理器内核101A-N可以例如驻留在相同的处理器芯片上,诸如国际商业机器(IBM)中央处理器(CP)芯片。多个处理器内核101A-N可例如共享驻留在同一芯片上的高速缓存106。多处理器系统100还包括主存储器103。为了简化描述,在此仅描述处理器核101A的组件;其他处理器核101B-N可具有类似的结构。

处理器核101A可包括与处理器核101相关联的高速缓存105。高速缓存105用于缓存存储器数据以改进处理器性能。高速缓存105是保存可能使用的存储器数据的高速缓存行的高速缓冲器(例如,高速缓存105被配置成高速缓存主存储器103的数据)。典型的高速缓存行是64、128或256字节的存储器数据。处理器核高速缓存为其包含的每一行维护标识地址和所有权状态的元数据。

处理器核101A可包括指令执行管线110。执行管线110可包含多个管线级,其中每一级包含经制造以执行完全执行指令所需的多级过程中的特定级的操作的逻辑电路。执行管线110可包含指令提取和解码单元120、数据提取单元121、执行单元123和写入单元124。

指令提取和解码单元120经配置以提取管线110的指令且解码所提取的指令。数据提取单元121可从寄存器111A-N检索待处理的数据项。执行单元123可通常接收关于经解码指令的信息(例如,从提取和解码单元120),且可根据指令的操作码对操作数执行操作。执行单元123可包括执行在处理器核101A的ISA中指定的指令的逻辑电路。执行结果可以由写入单元124存储在存储器103、寄存器111A-N中或其他机器硬件(诸如控制寄存器)中。

处理器核101A还可以包括寄存器堆107,寄存器堆107包括与处理器核101相关联的寄存器111A-111N。寄存器111A-N可以是通用寄存器,每个寄存器可包括一定数量的位来存储由管线110中执行的指令处理的数据项。

程序的源代码可被编译成在与处理器核101A相关联的ISA中定义的一系列机器可执行指令。当处理器核101A开始执行可执行指令时,这些机器可执行指令可被放置在管线110上以顺序地执行。指令提取和解码单元120可检索置于管线110上的指令且识别与所述指令相关联的识别符。指令识别符可使所接收的指令与处理器核心101A的ISA中指定的指令的电路实施相关联。

可提供ISA的指令以处理存储在存储器103中和/或寄存器111A-N中的数据项。例如,指令可将数据项从存储器103检索到寄存器111A-N。数据提取单元121可从寄存器111A-N检索待处理的数据项。执行单元123可包括执行在处理器核101A的ISA中指定的指令的逻辑电路。在执行用于处理由数据提取单元121检索的数据项的指令之后,写入单元124可输出结果并将其存储在寄存器111A-N中。

原子原语128可以由处理器核心101A的ISA中定义的一条或多条指令构成。原语128可例如包含由处理器核执行的读取指令,且保证没有其他处理器核101B-N可访问和/或修改由读取指令读取的存储在存储器位置处的数据项,直到处理器核101A已完成原语的执行为止。

处理器核101A-N共享主存储器103的处理器高速缓存106。处理器高速缓存106可以由高速缓存控制器108管理。

图2A描绘了根据本公开的实施例的用于处理多个处理器核(例如,101A-N)的数据请求的方法的流程图。例如,一个第一处理器核(例如,101A)被专门分配用于执行原子原语(例如,128)的数据项。例如,数据项可以由原子原语保护,以防止两个进程同时改变数据项的内容。一旦进入原子原语,就防止其他核访问由原子原语保护的数据,且执行一个或多个指令集(例如,指令集具有对受保护数据的访问)。一旦完成该指令集,就留下原子原语。进入原子原语可通过获取锁来执行,且离开原子原语可通过释放锁来执行。锁的释放可例如由指令集的存储指令触发。所述指令集可为原子原语的部分。

在步骤201中,高速缓存控制器可以从第二核(例如,101C或101N)接收对访问数据项的请求。该请求可以例如经由连接处理器核和高速缓存控制器的总线系统发送。通过监视总线系统,高速缓存控制器可以接收第二处理器核的请求。第二核发送的请求可以由第二核执行TELT指令触发。高速缓存(例如,106)可例如包括高速缓存行。

第一处理器核对原子原语的执行可引起读取指令从存储器位置检索数据块(即,数据项),且将数据块的副本存储在高速缓存行中,借此将高速缓存行指派给第一处理器核。第一处理器核然后可以在高速缓存行被指派给它的同时执行至少一个指令。在执行至少一个指令时,可以接收步骤201的请求。所请求的数据项可以是例如高速缓存行的数据。

例如,用户可以创建包括可以由第二处理器核执行的指令的程序。所述程序包括TELT指令。TELT指令使得能够在其可用的情况下加载高速缓存行。一旦TELT指令被第二处理器核执行,该请求就可以由第二处理器核发布。如果所请求的数据可用,则可以将其返回给第二处理器核。例如,可以控制向第二处理器核返回数据以仅返回特定类型的数据(例如,只读数据或其他类型的数据)。

例如,高速缓存控制器可包括使高速缓存控制器能够根据预定义的高速缓存协议操作的逻辑电路。高速缓存协议可以指示高速缓存控制器的多个可能状态,其中多个状态中的每个状态与要由高速缓存控制器执行的相应动作相关联。例如,当高速缓存控制器处于多个状态中的第一状态中时,每当存在来自处理器核中的处理器核的访问数据的任何请求时,高速缓存控制器将检查其是否是由TELT指令触发的请求。例如,在步骤201中,缓存控制器可以处于第一状态。高速缓存协议可使得高速缓存控制器能够管理一致性。例如,高速缓存控制器可以使用元数据管理高速缓存数据及其一致性。例如,在高速缓存层级的任何层级处,可通过保持较低层级高速缓存所保持的高速缓存行目录来分发数据备份(无高速缓存)。

例如,用于访问数据项的请求可以是标记请求(例如,由TELT指令触发),所述标记请求指示它是用于原子原语中使用的数据的请求,其中,高速缓存控制器包括被配置用于识别标记请求的逻辑电路。由此,在接收到所述请求且确定所述请求由TELT指令触发时,高速缓存控制器可根据高速缓存协议跳跃到或切换到所述多个状态中的第二状态。在第二状态中,高速缓存控制器可以确定(查询步骤203)另一个处理器核是否正在等待所请求的数据项。例如,高速缓存控制器维持其所保持的高速缓存行的状态,并且可以在请求时呈现所请求数据项的状态。

响应于在接收第二核的请求之前确定(查询步骤203)从处理器核的第三核(例如,101B)接收到数据项的另一请求,高速缓存控制器可以生成拒绝消息并在步骤205中向第二核发送拒绝消息;否则,执行步骤207-211。确定在第二核的请求之前接收到第三核的另一请求可以通过确定所请求的数据项处于指示第三核正在等待该数据项的状态来执行。所述状态可进一步指示第一处理器核具有独占的目标数据项,但原子原语的执行未完成。在执行查询步骤203之后,高速缓存控制器可以根据高速缓存协议从第二状态切换到多个状态中的第三状态,其中通过执行与第三状态相关联的动作将拒绝消息发送到第二核。

在步骤207中,高速缓存控制器可以向第一核发送无效请求(或交叉无效请求),用于使第一核101A对数据项的独占访问无效。例如,在执行查询步骤203之后,高速缓存控制器可以从高速缓存协议的多个状态中的第二状态切换到第四状态。高速缓存控制器可以被配置成当高速缓存控制器根据高速缓存协议处于第四状态中时执行步骤207-211。

在步骤209中,高速缓存控制器可以从第一核接收指示对无效请求的肯定响应的响应。例如,可经由总线系统发送响应。通过监视总线系统,高速缓存控制器可以接收响应。

响应于对来自第一核的无效请求的肯定响应,高速缓存控制器可以在步骤211中向第二核回应数据项可用于访问。高速缓存控制器对第二核的响应可例如经由总线系统发送。

在第一核101A未完成原子原语的执行时,可执行步骤201-211。

图2B是示出根据本公开的实施例的用于处理多个处理器核(例如,101A-N)的数据请求的方法的框图。处理器核101A被处理器核101A独占地分配用于执行原子原语的数据项。

当处理器核101A正在执行原子原语时,由处理器核101B将对数据项的请求(1)发送到高速缓存控制器。由于在高速缓存控制器处接收到的请求(1)是唯一接收到的请求,即在接收到请求(1)时没有其他处理器核等待数据项,因此响应于从处理器核101B接收到数据项的请求,高速缓存控制器向处理器核101A发送无效请求(2)。响应于接收到无效请求,由处理器核101A向高速缓存控制器发送肯定响应(3)。响应于接收到肯定响应,高速缓存控制器可以发送响应(4),其向第三核101B指示所请求的数据可用于访问。图2B进一步描绘了可以由处理器核101A触发的可选步骤。具体地,因为处理器核101A可能需要再次访问数据项,所以获取请求(5)可由处理器核101A发送到高速缓存控制器以获得对数据项的访问。如所指示的,高速缓存控制器随后可向处理器核101B发送无效请求(6)。处理器核101B随后可发送对无效请求的肯定响应(7)。在接收到肯定响应时,高速缓存控制器可以向处理器核101A回应(8)数据可用于访问。处理器核101A可通过执行指示原语的执行完成的存储指令(9)来释放锁。图2B还示出了当处理器核101B等待数据项时,高速缓存控制器从处理器核101C和101N接收的数据项的请求(A和C)。在这种情况下,由于处理器核101B正在等待数据项,因此缓存控制器可以分别向处理器核101C和101N发送拒绝消息(B和D)。

图3描绘了根据本公开的实施例的用于在包括多个处理器核的计算机系统中实现用于工作负荷分配的锁的方法的流程图。

在步骤301中,发起处理器核101C可发出TELT指令以测试与正由目标处理器核101A执行的原子原语相关联的锁的可用性。这可以使得发起处理器核101C在步骤303中向高速缓存控制器108发送对高速缓存行的条件提取请求。响应于接收到条件提取请求,高速缓存控制器108可确定(查询步骤305)另一核是否已经在等待高速缓存行。

如果确定另一核(例如,101B)正在等待高速缓存行,高速缓存控制器可在步骤307中将指示数据不可用的响应(拒绝消息)发送到起始处理器核101C。在步骤309中,指示数据不可用的条件码可以呈现在发起处理器核101C上。

如果确定没有其他核正在等待高速缓存行,则高速缓存控制器108可在步骤311中向目标核101A发送条件交叉无效请求。在查询步骤313中,可确定目标核状态是否适于高速缓存行转移。如果是,可以执行步骤317-321,否则可以执行步骤315-321。

在步骤315中,高速缓存控制器可以等待目标核完成更新数据(高速缓存行)。

在步骤317中,目标核101A写回脏行(dirty line)并发送肯定的交叉无效响应,从而目标处理器核101A放弃所请求的高速缓存行的所有权。在步骤319中,高速缓存控制器108将对有条件获取请求的肯定响应连同高速缓存行一起发送到相应的发起处理器核。高速缓存行的所有权被转移到相应的发起处理器核。在步骤321中,指示数据可用的条件代码可呈现在相应的发起处理器核上。

在另一示例中,提供了一种在包括多个处理器核的计算机系统中实现用于工作负载分配的锁的方法,所述处理器核共享主存储器的处理器高速缓存,并且所述处理器高速缓存由高速缓存控制器管理。所述方法包括:响应于对主存储器地址的暂定独占加载和测试指令,处理器核向所述高速缓存控制器发送对所述主存储器地址的条件交叉无效请求;响应于来自发起处理器核的条件交叉无效请求,高速缓存控制器确定处理器高速缓存是否可用于由发起处理器核访问,并且如果处理器高速缓存不可用,则高速缓存控制器向发起处理器核回应主存储器地址上的数据不可用于访问,否则高速缓存控制器向当前拥有主存储器地址的高速缓存行的目标处理器核发送交叉无效请求;响应于来自所述高速缓存控制器的所述交叉无效请求,目标处理器核在其改变脏高速缓存行的情况下写回脏高速缓存行,释放所述高速缓存行的所有权,以及用肯定的交叉无效请求回应所述高速缓存控制器;响应于来自所述目标处理器核的肯定的交叉无效请求,所述高速缓存控制器向所述发起处理器核回应目标数据可用于访问。

在以下编号的条目中指定不同实施例。

1.一种用于包括多个处理器核的计算机系统的方法,其中数据项被独占地分配给所述多个处理器核中的第一核,用于由所述第一核执行原子原语,所述方法包括,当所述原子原语的所述执行未被所述第一核完成时,在高速缓存控制器处从所述多个处理器核中的第二核接收对访问所述数据项的请求;以及响应于确定在从所述第二核接收对所述数据项的请求之前从所述多个处理器核中的第三核接收到所述请求,向所述第二核返回拒绝消息,所述拒绝消息指示另一请求正在等待所述原子原语,否则向所述第一核发送无效请求,用于使所述第一核对所述数据项的独占访问无效;从所述第一核接收指示对所述无效请求的肯定响应的响应;以及响应于对来自第一核的无效请求的肯定响应,高速缓存控制器向所述第二核回应所述数据可用于访问。

2.根据条目1所述的方法,其中确定在所述第二核的所述另一个请求之前接收到所述第三核心的所述请求包括确定所述第三核心在等待所述数据项目。

3.根据条目1或2所述的方法,其还包括在所述第三核仍然在等待所述数据项时,通过所述高速缓存控制器返回针对所述数据项的每个进一步接收的请求的拒绝消息。

4.根据前述条目中任一项所述的方法,进一步包括提供指示所述高速缓存控制器的多个可能状态的高速缓存协议,其中所述多个状态中的每个状态与要由所述高速缓存控制器执行的相应动作相关联,所述方法包括:当所述高速缓存控制器处于所述多个状态中的第一状态时,接收所述请求,由所述高速缓存控制器从所述第一状态切换到第二状态,使得根据所述第二状态的动作在所述高速缓存控制器的所述第二状态中执行所述确定,以及从所述第二状态切换到所述多个状态中的第三状态,使得根据与所述第三状态相关联的动作在所述第三状态中执行所述返回,或者从所述第二状态切换到所述多个状态中的第四状态,使得根据与所述第四状态相关联的动作在所述第四状态中执行所述无效请求的所述发送、所述接收和所述回应步骤。

5.根据条目4所述的方法,所述高速缓存协议还指示多个数据状态,所述方法包括:将所述多个数据状态中的给定数据状态分配给所述数据项以指示所述数据项属于所述原子原语并且所述数据项由另一核请求和等待,其中确定在接收所述第二核的所述数据项的另一请求之前从所述第三核接收所述请求包括由所述高速缓存控制器确定所请求的数据项处于所述给定数据状态。

6.根据前述条目中任一项所述的方法,所述请求的所述接收包括监视连接所述高速缓存控制器和所述处理器核的总线系统,其中所述拒绝消息的返回包括生成指示所述拒绝消息的系统总线事务。

7.根据前述条目中任一项所述的方法,进一步包括响应于确定所述原子原语完成,将所述数据项返回至所述第三核。

8.根据前述条目中任一项所述的方法,其中,将所述拒绝消息返回给所述第二核还包括:在执行所述原子原语时使所述第二核执行一个或多个另外的指令,所述另外的指令不同于用于请求所述数据项的指令。

9.根据前述条目中任一项所述的方法,其中,所述原子原语的所述执行包括访问在所述第一核和所述第二核之间共享的数据,其中,所接收的请求是用于使得能够通过所述第二核访问所述共享数据的请求。

10.根据前述条目中任一项所述的方法,其中所述数据项是由所述第一核获取以执行所述原子原语的锁,其中确定所述原子原语的执行未完成包括确定所述锁不可用。

11.根据前述条目中任一项所述的方法,其中,在完成所述原子原语的所述执行之后,释放所述高速缓存行。

12.根据前述条目中任一项所述的方法,其中所述数据项被高速缓存在所述第一核的高速缓存中。

13.前述条目1-11中任一项的方法,其中数据项被高速缓存在第一和第三核之间共享的高速缓存中。

14.根据前述条目中任一项所述的方法,进一步包括提供处理器指令,其中,接收所述请求是由所述第二核执行所述处理器指令的结果,其中,响应于确定所接收的请求由所述处理器指令触发而执行所述确定和返回步骤。

下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个媒质)。

计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的,计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号。

本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和常规的过程式程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。

这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。

也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。

附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据存储资源管理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!