缓存存储器操作的协调

文档序号:958478 发布日期:2020-10-30 浏览:18次 >En<

阅读说明:本技术 缓存存储器操作的协调 (Coordination of cache memory operations ) 是由 B·施泰因马赫尔-布罗 于 2019-03-27 设计创作,主要内容包括:本发明涉及一种用于协调由一致性共享存储系统的处理器设备执行的指令序列的方法。一条指令被执行并使所述处理器设备将存储器线的副本填充到处理器高速缓存中。基于检测到指示关于所述存储器线的跨所述共享存储系统的一致性传播未被确认的第一标志信息,所述处理器设备对所述存储器线进行标记。基于检测到指示关于所述存储器线的跨所述共享存储系统的所述一致性传播已确认的第二标志信息,所述处理器设备对所述存储器线进行清除标记。基于执行存储器屏障指令,在标记所述存储器线的同时阻止所述存储器屏障指令的执行完成。(The present invention relates to a method for coordinating sequences of instructions executed by processor devices of a coherent shared memory system. An instruction is executed and causes the processor device to fill a copy of a memory line into a processor cache. The processor device marks the memory line based on detecting first flag information indicating that coherency propagation across the shared memory system with respect to the memory line is not confirmed. The processor device clears the memory line based on detecting second flag information indicating that the coherency propagation across the shared memory system with respect to the memory line is confirmed. Based on executing a memory barrier instruction, execution of the memory barrier instruction is prevented from completing while the memory line is marked.)

缓存存储器操作的协调

背景技术

本公开涉及计算机系统领域。更具体地,涉及一种用于通过一致性共享存储系统的处理器设备来协调包括多个指令的指令序列的执行的方法,一致性共享存储系统的处理器设备,用于管理实现存储器一致性的一致性目录的方法,实现共享存储器系统的存储器一致性的一致性目录以及包括实现共享存储器系统的存储器一致性的一致性目录的一致性共享存储器系统。

共享存储器系统包括均被提供存储器访问的多个处理器,从而提高了数据处理的效率。共享存储器可以为多个处理器提供对相同数据的同时访问,避免存储数据的冗余副本,并使能处理器之间的数据传输。共享存储器系统例如提供可由多个处理器访问的主存储器。为了使处理器能够快速访问主存储器的存储器线,这种共享存储器系统的存储器架构可以进一步包括多个处理器高速缓存存储器,用于高速缓存要由处理器处理的数据。例如,每个处理器可以与一个或多个处理器高速缓存存储器可操作地连接。

然而,在具有多个处理器高速缓存存储器的共享存储器系统中,存在由于缺乏数据连贯性而可能引起复杂化的风险。每当处理器高速缓存存储器之一所包含的数据被更新时,必须确保在处理相同数据时所有其余的处理器高速缓存存储器将使用更新的数据,以避免不同的处理器使用不一致的数据。换句话说,必须确保在整个共享存储系统中的一致性传播,以便在整个系统中建立一致性。

为了防止处理器使用已被修改的过时数据,需要对存储器操作的排序约束。严格排序的存储器模型规定,对共享变量值的更改始终必须对执行的多线程程序的其他线程可见。换句话说,必须预先定义存储操作的顺序,而不能为避免竞争条件而允许例外。但是,严格排序的模型可能不灵活,导致处理效率受到限制。相反,可以通过允许强顺序的松弛来提高处理效率。可能存在可以并行执行或甚至以任意顺序执行的指令,而不会引起问题或导致竞争状况。允许放宽顺序的存储器模型称为弱排序存储器模型。为了仍然保持某种程度的排序,弱排序的存储器模型指定了通过特殊的、定义明确的存储器屏障指令建立的存储器屏障。存储器屏障指令定义了指令序列中必须确保一致性并在必要时执行同步的一点。这种薄弱的存储器模型规定,当达到这种存储器屏障时,仅需要使共享变量的值更改对其他线程可见。存储器屏障指令定义了指令序列中的一点,在这一点上必须确保一致性,并在必要时执行同步。这种薄弱的存储器模型规定,当达到这种存储器屏障时,仅需要使共享变量的值更改对其他线程可见。存储器屏障指令定义了指令序列中的一点,在这一点上必须确保一致性,并在必要时执行同步。这种薄弱的存储器模型规定,当达到这种存储器屏障时,仅需要使共享变量的值更改对其他线程可见。

当优化指令序列时,弱排序的存储器模型可以提供更高的自由度。只需确保在优化和未优化的指令序列中,在存储器屏障处的潜在共享变量的值都保证相同。特别是,不包含任何存储器屏障的指令块中的重新排序语句可以被认为是安全的。

为了确保共享存储系统的存储器一致性并提高性能,持续需要改进存储器屏障的实现和管理。

各个实施例提供了一种用于协调由一致性共享存储系统的处理器设备执行的包括多个指令的指令序列的方法,一致性共享存储系统的处理器设备,用于管理一致性目录实现共享存储器系统的存储器一致性的方法,实现共享存储器系统的存储器一致性的一致性目录以及包括实现共享存储器系统的存储器一致性的一致性目录的一致性共享存储器系统。在从属权利要求中描述了有利的实施方式。如果本发明的实施例不相互排斥,则可以彼此自由地组合。

在一个方面,本发明涉及一种用于协调由一致性共享存储系统的处理器设备执行的包括多个指令的指令序列的方法。所述处理器设备与处理器高速缓存存储器可操作地连接。所述指令序列的指令由所述处理器设备执行。所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线副本填充到所述处理器高速缓存存储器。在检测到第一标志信息时处理器设备对所述存储器线进行标记,所述第一标志信息指示未确认关于所述存储器线副本的填充跨共享存储系统的存储器一致性的传播。在检测到第二标志信息时,所述处理器设备不对所述已标记的存储器线进行标记,所述第二标记信息指示确认了关于所述存储器线副本的填充在所述共享存储系统上的所述存储器一致性的传播。当所述处理器设备执行所述指令序列的存储器屏障指令时,所述处理器设备在标记所述存储器线的同时阻止所述执行的完成。

实施例可以具有有益的效果,即在尚未确认一致性的传播的情况下,一旦达到即执行了所述存储器屏障指令,就使所述处理器设备能够有效地确保所述指令序列的执行停止。所述存储器线的标记表明,关于所述存储器线的副本的所述填充,未确认跨共享存储器系统的存储器一致性的传播。换句话说,所述标记指示没有信息可用,即是否建立了跨共享存储系统的关于存储器线副本的填充的存储器一致性。在没有标记所述存储器线的情况下,不存在有关一致性的问题,但是一致性的传播已经得到明确肯定的确认,并且不需要停顿。在已经标记了所述存储器线的情况下,则必须等待它进行明确的确认,并且必须暂停。这样的确认可以例如是可以通过实现所述共享存储系统的基于目录的一致性的目录或通过所述共享存储系统的其余处理器设备对由执行所述存储器线填充的所述处理器设备广播的有关建立一致性的请求的答复来提供。由于仅标记了未确认一致性传播的存储器线,即,将指示符注册为标记,因此可以节省处理器设备的本地存储空间。

仅在未标记存储器线的情况下,即确认存储器一致性在共享存储系统中传播的情况下,才可以继续所述执行。所述存储器一致性在整个共享存储器系统中的传播意味着,就所述存储器线到所述处理器高速缓存存储器的副本的填充而言,建立了所述共享存储器系统的一致性。指令序列的所述执行的所述协调由单独的处理器设备(例如,处理器芯片或处理器核心)实现。因此,所述方法可用于基于目录的一致性以及基于广播的一致性。

根据实施例,防止存储器屏障指令的执行完成,直到未标记处理器设备先前标记的所有存储器线为止。实施例可以具有有益的效果,即,对单个存储器线的清除标记是继续执行存储器屏障指令的必要条件。作为充分的条件,可以实现未由处理器设备先前标记的所有存储器线都被标记,即,处理器设备既不包括标记的存储器线也不包括存储器线的标记。因此,可以自由地执行导致将存储器线的副本填充到处理器高速缓存的指令,而无需考虑存储器一致性,直到达到存储器屏障指令为止。到达存储器屏障指令后,必须建立存储器一致性并积极确认,才能继续执行存储器屏障指令。在执行存储器屏障指令之前,可以在共享存储器系统上传播存储器一致性。然而,存储器屏障指令构成指令序列中的一点,在所述点上,要求已经完成在共享存储器系统上关于存储器线的所有副本到处理器高速缓存存储器的填充的一致性传播。可以通过要求对成功传播的明确确认来确保各自的完成。在执行所述存储器屏障之前,所述处理器可以建立有关所述一致性传播的知识,但不一定要建立知识。

根据实施例,所述存储器线的所述标记包括将所述存储器线的标识符添加到所述处理器设备的缓存器。解除已标记的存储器线的标记包括从所述处理器的缓存器中移除所述存储器线的标识符。实施例可以具有有益的效果,即所述缓存器是否可以提供直接概览,而不管是否存在仍缺少跨所述共享存储系统的一致性传播的必要确认的存储器线。所述缓存器可以例如以无序指示符集合的形式提供标志。所述指示符指示所述存储器缓存器包括所述线的情况下,因此尚未确认各个存储器线的一致性传播。如果对于特定的存储器线,缓存器不包括指示符,则已经确认了所述各个存储器线的一致性传播。可以通过添加指示要标记到缓存区的存储器线的指示符来设置标志。因此,所述缓存区是未传播的存储器线的缓存区。

根据实施例,在所述处理器设备的所述缓存器为空之前,阻止执行所述存储器屏障指令。实施例可以具有有益效果,即在执行需要检查一致性的所述存储器缓存器指令的情况下,它们提供了一致性检查的快速和有效实施。在所述缓存器不包括指示符的情况下,已经为所述处理器设备先前填充到所述处理器高速缓存存储器中的每条存储器线建立并确认了一致性。在所述缓存器仍然包括指示符的情况下,处理器设备将等待直到确认那些剩余指示符的一致性并且缓存器为空。因此,可以确保对于在存储器屏障指令之后执行的指令序列的指令,

根据实施例,与处理器高速缓存存储器的内容的修改有关并且由处理器设备处理的消息包括一致性传播字段。所述一致性传播字段包括以下之一:指示关于跨所述共享存储系统的存储器一致性修改的传播未得到确认的标记信息;指示关于跨所述共享存储系统的存储器一致性修改的传播得到确认的标记信息,或者指示既不需要标记也不需要清除标记动作的标记信息。

实施例可以具有使得能够在所述处理器设备与所述共享存储器系统的其余部分之间进行有效通信的有益效果,从而提供关于将所述存储器线的副本填充到所述处理器高速缓存以及关于将所述存储器线的副本填充到所述处理器高速缓存存储器的跨所述共享存储器系统的所述一致性传播的反馈。例如,所述处理器设备可以请求对所述主存储器的存储器线的排他性写访问。在所述处理器高速缓存存储器中缺少请求的情况下,可以将请求发送到一致性目录或在所述共享存储系统中广播。所述请求可以包括指示无标记或清除标记动作的标记信息。到现在,仅发送了一个请求,而没有实际启动对所述处理器高速缓存的填充。对所述处理器设备接收到的请求的答复可以包括所请求的数据的副本,例如写排他性副本,接收处理器将其填充到处理器缓存中。所述答复可以包括标志信息,所述标志信息指示关于所述修改的跨所述共享存储系统的存储器一致性的传播未被确认。在建立所述共享存储器系统上的存储器一致性之后,例如通过使由其他处理器设备的处理器高速缓存存储器包括的所请求存储器线的共享读取副本无效,可以由执行相同操作的其他处理器设备来确认无效。

在另一方面,本发明涉及一种一致性共享存储系统的处理器设备。所述处理器设备与处理器高速缓存存储器可操作地连接,并且被配置为协调包括多个指令的指令序列的执行。所述协调包括执行所述指令序列的指令。所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器。所述协调还包括在检测到标志信息时标记相应的存储器线,所述标志信息指示关于所述存储器线的副本的所述填充的所述跨共享存储系统的存储器一致性的传播未被确认。在检测到表明关于存储器线副本的填充跨共享存储系统的存储器一致性的传播的标志信息被确认,所述处理器设备将所述存储器线清除标记。在执行所述指令序列的存储器屏障指令时,所述处理器装置在标记所述存储器线的同时阻止所述存储器屏障指令的执行完成。

实施例可以具有提供一种一致性共享存储系统的处理器设备的有益效果,所述处理器设备被配置为有效地实现上述方法以协调包括多个指令的指令序列的执行。

根据实施例,防止所述存储器屏障指令的执行完成,直到由所述处理器设备先前标记的所有存储器线被清除标记为止。实施例可以具有有益效果,即所述处理器设备确保防止所述存储器屏障指令完成,直到确认所述共享存储器系统相对于先前由所述处理器设备执行的存储器线副本的所有填充的一致性为止。

根据实施例,所述处理器设备包括缓存器,所述缓存器用于注册存储器线,所述存储器线的副本被填充到所述处理器高速缓存存储器,并且对于所述存储器线,关于各个副本的填充的存储器一致性在所述共享存储系统上的传播未得到确认。标记存储器线包括将所述存储器线的标识符添加到所述处理器设备的缓存器。所述已标记存储器线的所述标记清除包括从所述处理器的缓存器中移除所述存储器线的所述标识符。

实施例可以具有有益的效果,即用于注册存储器线的基础结构尚未得到确认,对于所述存储器线,在各个副本的填充方面跨所述共享存储系统的存储器一致性的传播未得到确认。

根据实施例,防止所述存储器屏障指令的执行完成,直到所述处理器设备的所述缓存器为空。实施例可以具有有益的效果,即可以由所述缓存器提供有效的概述,是否存在任何存储器线,在完成所述存储器屏障指令之前是否已经将所述存储器线的副本填充到所述处理器高速缓存存储器中并且仍然需要对其进行确认。如果缓存区为空,则已收到所有必要的确认。在缓存区不为空的情况下,仍然存在处理器设备必须等待的未完成确认。

在另一方面,本发明涉及一种用于管理实现共享存储器系统的存储器一致性的一致性目录的方法。所述一致性目录维护分配给所述共享存储系统的主存储器的存储器线的标志信息。所述共享存储系统的处理器设备启动将所述存储器线的副本填充到与所述处理器设备可操作地连接的处理器高速缓存存储器。所述标志信息指示是否确认了关于所述存储器线的副本的填充的跨所述共享存储系统的存储器一致性的传播。所述一致性目录将所述标志信息包括在消息中,并将所述消息发送到所述处理器设备。

实施例可以具有提供用于管理实现共享存储器系统的存储器一致性的一致性目录的有效方法的有益效果。所述一致性目录可以检查所述共享存储器系统的所述一致性,并在必要时针对在所述存储器线到所述处理器高速缓存存储器的副本的填充,发起用于跨所述共享存储器系统建立一致性的动作。例如,在将所述存储器线的排他性写副本和/或排他性写副本的修订副本填充到所述处理器高速缓存存储器的情况下,所述一致性目录可能会启动所述共享存储器中其他存储器线的副本无效系统,特别是所述共享存储系统的其他处理器设备的处理器缓存中。例如,过时的副本,即陈旧的副本,

根据实施例,为了将所述存储器线的副本填充到远程高速缓存存储器的一致性,在确定需要对所述共享存储系统的另一处理器设备的远程处理器高速缓存存储器的内容进行修改以便传播存储器时,所述一致性目录发起对分配给所述存储器线的所述标志信息的维护。

实施例可以具有如下有益效果:为了确保存储器一致性,仅在所述一致性目录确定必须修改另一处理器设备的远程处理器高速缓存存储器的内容以便修改以下内容的情况下,保存处理能力并且生成和维护所述标记信息。例如,在共享读取请求的情况下,不必修改其他处理器设备的远程处理器高速缓存中的请求存储器线的先前加载的共享读取副本,因为所述附加的共享读取请求不会改变存储器的一致性。然而,在排他性写入请求的情况下,可能需要对剩余的共享读取副本进行修改(即无效),以建立存储器一致性。

根据实施例,所述一致性目录向所述远程处理器高速缓存存储器发送请求。所述请求请求修改所述远程处理器高速缓存存储器的内容,以便传播关于将所述存储器线的所述副本填充到所述远程处理器高速缓存存储器的存储器一致性。

实施例可以具有通过一致性目录来实现对存储器一致性的有效控制的有益效果。通过发送请求并接收相应的答复,一致性目录一旦启动和/或完成了所有修改,则一致性目录可以确认一致性向处理器设备的传播的完成。

根据实施例,所述一致性目录包括寄存器,所述寄存器用于跟踪由于存储器一致性在整个所述共享存储系统中的传播而导致的关于所述存储器线副本的填充方面的所述共享存储器系统的其他处理器设备的处理器高速缓存存储器的内容的修改。

当所述一致性传播完成时,实施例可以具有有效地实现用于跟踪所述修正和确定的寄存器的有益效果。

根据实施例,当关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播被确认时,所述寄存器包括一致性传播通知指示符,所述一致性传播通知指示符标识将由所述一致性目录通知的所述共享存储系统的处理器设备的处理器高速缓存存储器。

实施例可以具有确保使所述一致性目录能够有效地跟踪必须向所述共享存储器系统的哪些处理器高速缓存存储器通知所述一致性的有益效果,即哪些所述处理器高速缓存存储器已经被存储器线副本填充,在执行存储屏障指令的情况下,将来可能需要对此进行肯定检查以确认一致性传播。

在另一方面,本发明涉及实现共享存储器系统的存储器一致性的一致性目录。所述一致性目录被配置为维护分配给所述共享存储系统的主存储器的存储器线的标志信息。所述共享存储系统的处理器设备启动了将所述存储器线的副本填充到与处理器设备可操作地连接的处理器高速缓存存储器的操作。标志信息指示关于存储器线的副本的填充,是否确认了跨共享存储系统的存储器一致性的传播。一致性目录还被配置为将标志信息包括在消息中,并将所述消息发送到处理器设备。

实施例可以具有提供实现共享存储器系统的存储器一致性的一致性目录的有益效果,所述一致性目录被配置为有效地维护分配给维持共享存储器系统的主存储器的存储器线的标志信息。

在另一方面,本发明涉及一种一致性共享存储器系统,其包括实现所述共享存储器系统的存储器一致性的一致性目录、主存储器以及与处理器高速缓存存储器可操作地连接的处理器设备。

所述处理器设备被配置为协调包括多个指令的指令序列的执行。所述协调包括执行所述指令序列的指令。所述指令的执行使所述处理器设备将所述主存储器的存储器线的副本填充到所述处理器高速缓存存储器。基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息未被确认,所述处理器设备标记所述各个存储器线。基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息被确认,则所述处理器设备对所述各个存储器线清除标记。基于执行所述指令序列的存储器屏障指令,所述处理器设备阻止在标记所述存储器线的同时阻止所述执行的完成。

所述一致性目录被配置为基于确认启动所述存储器线的所述副本的所述填充,维护分配给所述主存储器的所述存储器线的所述标志信息。所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播是否已确定。首先所述一致性目录包括所述标志信息,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性的传播未被确认为第一消息,并且将所述第一消息发送给所述处理器设备。基于所述传播获得确认,所述一致性目录在获得传播确认后更新所述标记信息,并将所述更新的标记信息包括到第二消息中。所述更新的标志信息指示关于所述存储消息的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播被确认为第二消息。具有所述更新的标志信息的所述第二消息由所述一致性目录发送到所述处理器设备。

实施例可以具有提供一种一致性共享存储器系统的有益效果,所述一致性共享存储器系统包括实现所述共享存储器系统的存储器一致性的一致性目录、主存储器以及与处理器高速缓存存储器可操作地连接的处理器设备。所述共享存储器系统可以有效地实现各个处理器设备对指令序列的执行的协调,并且可以通过所述一致性目录来维护对跨所述共享存储器的一致性传播的控制。

附图说明

图1描绘了适合于实现一致性共享存储系统的示例性计算机系统的示意图;

图2描绘了示例性一致性共享存储系统的示意图;

图3描绘了示例性一致性共享存储系统的示意图;

图4描绘了示例性一致性共享存储系统的示意图;

图5描绘了示例性一致性共享存储系统的示意图;

图6描绘了指令序列的执行的示例性方法的示意图;

图7描绘了实现共享存储系统的一致性的示例性一致性目录的示意图;

图8描绘了用于管理实现共享存储器系统的存储器一致性的一致性目录的示例性方法的示意图;

图9描绘了用于管理实现共享存储器系统的存储器一致性的一致性目录的示例性方法的示意图;

图10A和图10B描绘了执行指令序列并实现共享存储器系统的存储器一致性的示例性方法的流程图;以及

图11描绘了图示实现共享存储系统的示例性多处理器体系结构的示意图。

详细说明

为了说明的目的而给出了本发明的各种实施例的描述,但是这些描述并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理,对市场上发现的技术的实际应用或技术上的改进,或者使本领域的其他普通技术人员能够理解本文公开的实施例。

处理器高速缓存存储器临时存储数据,以便能够更快地服务于所述数据的将来请求。存储在处理器高速缓存中的数据可以是存储在其他地方(例如,主存储器中)的数据的副本(即重复)。当可以在高速缓存中找到请求的数据时,发生高速缓存命中;而当在高速缓存中找不到请求的数据时,发生高速缓存未命中。通过从处理器高速缓存存储器中读取数据来为高速缓存命中提供服务,这比从较慢的数据存储区(例如主存储器)中读取数据要快。因此,使用处理器高速缓存存储器可以加速计算机系统的系统性能。

为了通过处理器高速缓存存储器提供数据,在后备存储器(例如主存储器)和处理器高速缓存存储器之间以块为单位在每个固定大小的块之间传送数据。这样的数据块被称为存储器线或高速缓存线。当将存储器线从主存储器复制到处理器缓存时,将创建一个缓存条目。高速缓存条目可以包括复制的数据,即存储器线,以及后备存储器中的所请求的位置,即提供主存储器中各个存储器线的地址的地址标签。

当诸如例如处理器之类的高速缓存客户机需要从后备存储器中的位置读取或写入,即读取或写入存储器线时,高速缓存客户机可以首先检查高速缓存存储器中的对应条目。处理器高速缓存存储器检查所有高速缓存条目中各个存储器线的地址。在高速缓存命中的情况下,即找到包含所寻求的地址标签的高速缓存条目,处理器可以立即用所需的地址标签从处理器高速缓存条目读取数据或向处理器高速缓存条目写入数据,从而修改存储在其中的存储器线。在高速缓存未命中的情况下,处理器高速缓存存储器可以分配新的高速缓存条目,并从例如处理器的另一个高速缓存客户端的另一个高速缓存存储器中,或者从后备存储器中,将分配有所寻找的地址标签的存储器线复制到新的高速缓存条目中。然后,该请求可以从新的高速缓存条目的内容与高速缓存存储器的新存储器线来满足。

高速缓存存储器可以实现数据传输,特别是重复传输的数据传输的性能提高。例如,由于在高速缓存存储器内发生缓存,因此处理器高速缓存存储器可以在存储器线的初始传输时实现性能提高。此外,由于从主存储器检索存储器线并将其存储在更快的中间处理器高速缓存存储器中,因此处理器高速缓存存储器可以实现性能提高,使得在重复请求的情况下可以从更快的中间处理器高速缓存存储器而不是主存储器中检索相应的存储器线。此外,处理器高速缓存存储器可以通过将存储器线立即存储在中间处理器高速缓存存储器中并在以后的阶段推迟将相应的存储器线转移到主存储器来实现写入修改的存储器线的性能提高。可替代地,各个存储器线到主存储器的传输可以作为后台处理发生。

处理器高速缓存存储器可以包括多个条目。每个条目可以包括高速缓存数据,即,也称为高速缓存存储器线,它是在诸如主存储器的某种后备存储器中的存储器线(即,存储块)的数据的副本。每个条目可以进一步包括地址标签,所述地址标签标识所述条目包括的数据,即存储器线。更精确地,地址标签可以识别存储在后备存储器中的数据,所述数据在高速缓存存储器条目中的相应数据是副本。在对相应的高速缓存存储器条目进行写访问的情况下,可以修改存储器线,从而表示存储在后备存储器中的某些数据的修改后的副本。修改处理器高速缓存存储器中的存储器线后,为了确保存储在处理器高速缓存存储器中的存储器线与存储在后备存储器中的相应数据之间的一致性,可以使用存储器一致性协议来更新后备存储器中的相应存储器线,其后备存储器中的数据的副本。另外,每个条目可以包括状态信息,所述状态信息标识存储在相应条目(即,存储器线)中的数据的状态。

如果存储器线的副本被单个缓存客户端修改,则具有相同地址的存储器线的所有其他副本可能变得过时。因此,可能有必要管理那些过时的存储器线的处理。为了确保存储器的一致性,可能必须确保不再将存储器线的过期副本用作有效副本。过时的副本可能无效或更新。

当高速缓存客户机,例如处理器核心或处理器芯片,需要访问假定存储在后备存储器中的数据时,它可以首先检查一个或多个处理器高速缓存存储器。如果可以在这些处理器高速缓存存储器之一中找到一个条目,并且其地址标签与请求的存储器线的地址标签相匹配,则可以使用由相应处理器高速缓存存储器条目提供的存储器线来代替存储在后备存储器中的相应数据存储。这种情况称为高速缓存存储器命中。在高速缓存存储器未命中的情况下,即,当在一个或多个处理器高速缓存存储器中找不到具有所需存储器线的相应地址标签的条目时,从后备存储器中检索所需的未高速缓存的数据。在未命中处理期间,从后备存储器中检索到的未高速缓存的数据可以例如被复制到处理器高速缓存存储器中,从而在进一步的访问尝试的情况下启用高速缓存存储器命中。

为了维护一个或多个处理器高速缓存存储器与主存储器之间以及不同高速缓存存储器之间的一致性,高速缓存过程可能必须遵守高速缓存一致性协议。

在计算机体系结构中,存储器一致性是指存储在共享存储器系统的多个处理器高速缓存中的共享资源数据的一致性。在共享存储器系统中,保持存储器一致性可能特别重要。

在共享存储器系统中,例如以具有每个处理器至少一个单独的处理器高速缓存存储器的共享存储器多处理器系统的形式,可能有相同共享存储器线的许多副本:例如,一个副本在主存储器中的“1”和请求一个相应的存储器线的副本的处理器的一个或多个本地高速缓存中的每一个。当其中一个副本被更改时,其他副本必须反映所述更改。存储器一致性是确保处理器高速缓存中的存储器线副本更改及时在整个系统中传播的学科。

共享存储器系统可以包括多个处理器高速缓存存储器。根据实施例,可以以诸如计算机之类的电子数据处理系统的形式来提供共享存储系统。例如,各个电子数据处理系统包括一个或多个多核处理器。每个多核处理器包括两个或多个独立的处理单元,即内核,它们读取并执行程序指令。这些核中的每一个可以被提供有本地高速缓存存储器,即,用于高速缓存各个核所使用的数据的单独的高速缓存存储器。根据实施例,本地高速缓存存储器可以仅服务于其被分配给的核心。

根据另一示例,电子数据处理系统可以包括多个处理器芯片。两个或更多处理器芯片可各自包括本地处理器高速缓存存储器,即,单个高速缓存存储器仅服务于由分配给各个高速缓存存储器的处理器芯片所包括的处理器。

存储器一致性可以例如使用基于无效的存储器一致性协议来实现,例如MESI或诸如H-MESI、MOESI,MESIF或MERSI之类的修改。

根据MESI,为每个缓存条目分配以下四个可能状态之一:已修改、排他、共享和无效。例如,使用另外两个位指示状态。“修改的”标识仅存在于当前高速缓存存储器中并且是脏的,即与存储在主存储器中的相应数据线相比已被修改的存储器线。因此,在允许以其他方式读取存储在主存储器状态中的不再有效的数据线之前,需要高速缓存存储器将修改后的存储器线写回到主存储器。相应存储器线的回写可以将存储器线的状态从修改状态更改为共享状态。

“排他性”表示仅在当前高速缓存存储器中存在并且干净的存储器线,即,其仍与存储在主存储器中的相应数据线匹配。排他状态可以例如响应于从另一高速缓存存储器接收到读取请求而改变为共享状态。当接收到这样的读取请求时,可以将所请求的存储器线的副本作为共享的高速缓存存储器线发送到请求的高速缓存存储器,并且可以将保留在高速缓存存储器中的复制的高速缓存存储器线的状态改变为共享。如果相应的存储器线的状态被写入相应的存储器线,则其例如可以从排他改变为修改。

“共享的”标识可以被存储在多个高速缓存存储器中并且干净的存储器线。

“无效”标识未使用并且不用于满足存储器访问的缓存条目。如果相应的存储器线的副本被另一缓存存储器作为专用存储器线请求,则可以将缓存中的存储器线的状态例如从共享改变为无效。例如,各个存储器线的共享副本可以作为排他性副本转发,而其余的复制存储器线则被无效,以避免不一致,即不同的高速缓存存储器正在使用同一存储器线的不同副本。如果要读取无效的存储器线,则必须从另一个高速缓存存储器或主存储器中读取它的有效副本,即共享或排他性。

除了四个共同的MESI协议状态之外,MOESI协议还包括第五个“拥有”状态,代表修改和共享的数据。这样可以避免在共享之前将修改后的数据写回主存储器的需要。尽管最终仍必须回写数据,但可以推迟回写。“已修改”标识一条存储器线,它是所述存储器线的唯一有效副本,并且已被修改。

“拥有的”标识存储器线的副本,它是唯一可以修改的副本,而其他处理器高速缓存存储器也可以包括有效副本,但是不允许修改。拥有的存储器线的修改必须广播到共享所述存储器线的所有其他处理器高速缓存中。拥有状态的引入允许脏共享(dirtyshaTing)数据,即,可以在不更新主存储器的情况下在各种处理器高速缓存存储器周围移动经修改的存储器线。在使所有共享副本无效之后,可以将存储器线更改为“已修改”状态,也可以通过将修订写回到主存储器来更改为“共享”状态。

存储器屏障指令提供排序功能,所述排序功能确保在存储器屏障指令完成之前启动的所有存储器指令,并且确保直到存储器屏障指令完成之后才启动后续的存储器指令。当存储器屏障指令完成时,在存储器屏障指令之前启动的所有存储器访问均已完成。

存储器屏障指令可能是必要的,因为现代处理器可能会采用性能优化,从而导致无序执行。诸如加载和存储之类的存储器操作的这种重新排序在单个执行线程中可能未被注意到。但是,在并发程序和设备驱动程序的情况下,除非充分控制,否则这种性能优化可能会导致无法预测的行为。

共享存储器系统被配置为允许在处理器设备之间以弱顺序执行加载并存储存储器访问指令。处理器的指令序列包括存储器屏障指令,所述存储器屏障指令强制执行处理器设备对所述序列的先前访问指令的执行以及在所述序列的后续指令执行之前跨共享存储系统的一致性传播。实施例可能具有有益的效果,即在使用少量计算机资源的同时以快速执行来实现存储器屏障指令。

典型的一致性传播可能会使存储器线的先前值的一个或多个缓存副本无效。

根据实施例,允许跨处理器设备的加载和存储存储器访问指令的弱排序执行的共享存储器系统包括多个处理器。每个处理器包括用于存储未传播的存储器线的未传播的缓存器。未传播的缓存区跟踪处理器先前访问的存储器线地址,对于这些访问,向其他处理器的传播一致性是未知的。此外,每个处理器包括存储器屏障指令,所述存储器屏障指令通过停止处理器对其指令序列的后续存储器访问指令的执行直到未传播的缓存器为空来实现。

根据实施例,与要由一致性目录发送到处理器高速缓存存储器N的存储器线有关的消息包括指示是否已经传播了关于存储器线的存储器一致性的传播字段。如果所述存储器线的一致性目录的临时条目期望所述一致性目录从一个或多个缓存了所述存储器线的较早副本的处理器缓存中接收到无效确认消息,则一致性目录会将消息的传播字段设置为否。

如果存储器线的目录条目或目录的临时条目期望一致性目录没有从一个或多个缓存存储器线的较早副本的处理器高速缓存接收无效确认消息,则一致性目录设置消息的传播字段为“是”。如果所述行具有临时条目,并且消息的传播字段设置为“是”,则一致性目录会将所述行的一致性目录的临时条目中的缓存N的传播通知字段设置为否。

如果消息的传播字段设置为否,则一致性目录在存储器线的一致性目录的瞬时条目中将针对高速缓存N的传播通知字段设置为是。

如果一致性目录更新了存储器线的瞬态条目,并且如果更新后的瞬态条目期望一致性目录没有接收到来自缓存了存储器线的较早副本的处理器高速缓存存储器的无效确认消息,则一致性目录发送已传播的存储器线的消息发送到每个处理器高速缓存,在所述存储器线的瞬态条目中将其传播通知字段设置为“是”。

对于由一致性目录发送到处理器高速缓存存储器的每个这样的传播消息,一致性目录在瞬时条目中将用于处理器高速缓存存储器的对应的传播通知字段设置为否。

根据实施例,一致性目录更新存储器线的瞬态条目,作为一致性目录动作的一部分,所述一致性目录动作是由一致性目录从处理器高速缓存存储器接收与存储器线有关的消息引起的。

根据实施例,存储在缓存器中的标记存储器线的标识符包括主存储器中的相应存储器线的存储地址。实施例可以具有提供用于识别存储器线的有效标识符的有益效果。由于存储器地址已经用于标识主存储器中以及处理器高速缓存中的存储器线,因此不需要用于翻译或解释标识符的其他逻辑。

根据实施例,使用一致性目录来实现共享存储系统的存储器一致性。实施例可以具有以一致性目录的形式提供中央单元的有益效果,所述中央单元可以控制,检查和确认一致性在共享存储系统上的传播。

根据实施例,第一和第二标志信息中的至少一个由处理器设备从一致性目录接收的消息来提供。实施例可以具有有益的效果,即一致性目录确认了一致性在共享存储系统上的传播。根据实施例,第一和第二标志信息中的至少一个由处理器设备发送给一致性目录的消息来提供。实施例可以具有宣布要求确认一致性在共享存储系统上的传播的有益效果。

根据实施例,使用广播来实现共享存储系统的存储器一致性。实施例可以具有有益效果,即用于实现共享存储系统的一致性的基于广播的协议不需要中央一致性目录。此外,为了实现存储器一致性,不必检查和维护中央一致性目录。因此,如果有足够的带宽可用,则用于实现存储器一致性的基于广播的协议可能比基于目录的协议更快,因为存储器线的所有事务都包括所有处理器可见的请求/请求。基于广播的协议的缺点是它缺乏可伸缩性。每个请求都必须广播到系统中的所有节点,即所有处理器高速缓存,这意味着随着系统变大,实施该方法所需的带宽不断增长。

根据实施例,使处理器设备将存储器线的副本填充到处理器高速缓存存储器的指令是指定对相应存储器线的写访问的指令。根据实施例,存储器一致性在共享存储器系统上的传播包括使由共享存储器系统的其他处理器设备的远程处理器高速缓存存储器使用的存储器线的其他副本无效。实施例可以具有有益的效果,即可以确保没有另外的处理器设备使用存储器线的过期共享读取副本,即陈旧副本,同时处理器设备写入相应存储器线的新副本。

根据实施例,存储在缓存器中的标记存储器线的标识符包括主存储器中的相应存储器线的存储地址。实施例可以具有使用公共标识符来标识主存储器中,处理器高速缓存存储器中以及处理器设备的缓存器中的存储器线的有益效果。

根据实施例,由一致性目录请求的修改包括使远程处理器高速缓存存储器所包括的存储器线的另一副本无效。实施例可以具有确保远程处理器高速缓存存储器中的任何一个没有使用存储器线的过时副本(即陈旧副本)而处理器设备将相应存储器线的新副本填充到处理器高速缓存存贮器中的有益效果。因此,可以有效地避免使用存储器线的不连贯副本以及引入竞争条件。

图1描绘了适合于实现共享存储系统的计算机系统100。将理解的是,本文描述的方法是通过计算机系统自动化的。这些方法可以进一步在软件112、122(包括固件122)、硬件(处理器)105或其组合中实现。在示例性实施例中,本文描述的方法以软件的形式作为可执行指令来实现,并且可以由诸如个人计算机、工作站、小型计算机或大型计算机之类的专用或通用数字计算机使用。因此,最通用的系统100包括通用计算机101。

在示例性实施例中,就硬件体系结构而言,如图1所示,计算机101包括处理器105,耦合到存储控制器115的存储器(主存储器)110,以及一个或多个输入和/或输出(I/0)设备(或***设备)10、145其经由本地输入/输出控制器135通信地耦合。输入/输出控制器135可以是但不限于一条或多条总线或其他有线或无线连接,例如在本领域中是已知的。输入/输出控制器135可以具有附加元件,以简化通信,这些附加元件为简化起见而被省略,诸如控制器、缓存器、高速缓存器、驱动器、转发器和接收器,以实现通信。此外,本地接口可以包括地址、控制和/或数据连接,以实现上述组件之间的适当通信。如本文所述,I/0设备10、145通常可以包括本领域中已知的任何通用密码卡或智能卡。

处理器105是用于执行软件的硬件设备,特别是用于执行存储在存储器110中的软件的处理器。处理器105可以是任何定制的或市售的处理器、中央处理器(CPU)、与之相关联的多个处理器中的辅助处理器。计算机101,基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或通常用于执行软件指令的任何设备。处理器105可以包括一个或多个本地高速缓存存储器和/或与之通信连接。处理器105可包括一个或多个处理器核。每个处理器核可以可操作地与一个或多个本地处理器高速缓存存储器连接。处理器105可以以多个处理器芯片的形式实现,每个处理器芯片可以包括一个或多个本地处理器高速缓存存储器。处理器高速缓存存储器可各自包括用于控制相应的高速缓存存储器的高速缓存存储器控制器。在多个处理器高速缓存存储器的情况下,可以以基于目录的存储器一致性或基于广播的存储器一致性的形式实现存储器一致性。

存储器110可以包括易失性存储元件(例如,随机存取存储器(RAM,例如DRAM,SRAM,SDRAM等))和非易失性存储元件(例如,ROM、可擦除可编程只读存储器(EPROM)中的任何一个或组合存储器)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM)。注意,存储器110可以具有分布式架构,其中各个组件彼此远离,但是可以由处理器105访问。

存储器110中的软件可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能(尤其是本发明的实施例中涉及的功能)的可执行指令的有序列表。在图1的示例中,存储器110中的软件包括指令或软件112。

存储器110中的软件通常还应包括合适的操作系统(0S)111。所述0S111本质上控制诸如可能的软件112之类的其他计算机程序的执行。

本文描述的方法可以以源程序112、可执行程序112(目标代码)、脚本或包括要执行的一组指令112的任何其他实体的形式提供。当被提供为源程序时,相应的程序需要经由编译器,汇编器,解释器等来翻译,所述编译器,汇编器,解释器等可以包括在存储器110中或可以不包括在存储器110中,以便与0S111相关联地正确地操作。此外,可以将方法编写为具有数据和方法类的面向对象的编程语言,或具有例程、子例程和/或功能的过程编程语言。

在示例性实施例中,常规键盘150和鼠标155可以耦合到输入/输出控制器135。诸如I/0设备145的其他输出设备可以包括输入设备、例如但不限于打印机、扫描仪、麦克风之类的。最后,I/O设备10、145还可包括传达输入和输出两者的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。I/O设备10、145可以是本领域中已知的任何通用密码卡或智能卡。系统100可以进一步包括耦合到显示器130的显示器控制器125。在示例性实施例中,系统100可以进一步包括用于耦合到网络165的网络接口。网络165可以是基于IP的网络,用于经由宽带连接在计算机101与任何外部服务器、客户端等之间进行通信。网络165在计算机101和外部系统30之间发送和接收数据,这可能涉及执行本文讨论的方法的部分或全部步骤。在示例性实施例中,网络165可以是由服务提供商管理的托管IP网络。网络165可以以无线方式来实现,例如,使用诸如WiFi、WiMax等无线协议和技术。网络165也可以是分组交换网络,诸如局域网、广域网、城域网区域网络,Internet网络或其他类似类型的网络环境。网络165可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人局域网(PAN)、虚拟专用网(VPN)、内部网或其他合适的网络系统,并且包括用于接收和发送信号的设备。

如果计算机101是PC、工作站、智能设备等,则存储器110中的软件可以进一步包括基本输入输出系统(BIOS)122。BIOS是用于初始化和在启动时测试硬件、启动OS111,并支持硬件设备之间的数据传输。BIOS存储在ROM中,使得当计算机101被激活时可以执行BIOS。

当计算机101处于操作中时,处理器105配置为执行存储在存储器110中的软件112,以与存储器110进行数据通信,并根据所述软件总体上控制计算机101的操作。处理器105读取本文中描述的方法和OS111的全部或部分,但通常是后者,可能被缓存在处理器105内,然后执行。存储器120可以包括诸如HDD存储器之类的磁盘存储器。

图2示出了数据处理系统形式的示例性一致性共享存储系统200,其使用一致性目录210来实现基于目录的一致性。一致性共享存储系统200包括多个N个处理器核202、252,每个核与本地处理器高速缓存存储器204、254连接,经由互连结构206在处理器高速缓存存储器204、254之间交换数据。互连结构206进一步将处理器高速缓存存储器204、254与一致性目录210连接。一致性目录210保持跟踪处理器高速缓存存储器204、254的内容,即由其包括的存储器线,从而实现一致性。另外,互连结构206将高速缓存存储器204、254连接到存储器存储接口212。经由存储器存储接口212,可以以诸如主存储器之类的共享存储器的形式从后备存储器接收数据并将其发送到后备存储器。例如,处理器核心1试图从处理器高速缓存存储器1中检索一条存储器线,导致高速缓存未命中,因为处理器高速缓存存储器1不包含所请求存储器线的有效副本,或者处理器核心1可以例如请求写副本,但是处理器高速缓存存储器1只能包含读副本。处理器核心1可以经由互连结构206将对期望的存储器线的有效副本的请求发送到一致性目录210。一致性目录210检查是否其他处理器高速缓存存储器中的任何存储器是否包括所请求的存储器线。如果其他处理器缓存中的一个包含所需的存储器线,一致性目录210可以将请求转发到包括期望的存储器线的各个另外的处理器高速缓存存储器。如果高速缓存存储器中没有其他处理器高速缓存存储器包括所需的存储器线,则一致性目录210可以经由存储器存储接口212将请求转发到后备存储器。因此,可以将所需存储器线的有效副本传送到请求处理器核心1,所述处理器核心1填充高速缓存存储器1中的相应存储器线。

图3示出了数据处理系统形式的示例性一致性共享存储系统200,其包括多个处理器核202、252,每个处理器核具有本地处理器高速缓存存储器204、254。基于广播来实现存储器一致性。与图2的共享存储系统相反,图3的一致性共享存储系统200不包括一致性目录。在基于广播的一致性的情况下,在高速缓存未命中的情况下,处理器核心1经由互连结构206将对所需存储器线的有效副本的请求广播到相关共享存储系统200的其他处理器核心2至N。如果处理器核心1没有收到包括所希望的存储器线的所请求的有效副本的答复,则处理器核心1可以经由互连206和存储器存储接口212从后备存储器请求所述副本

图4示出了包括多个处理器芯片201、251的数据处理系统形式的示例性一致性共享存储系统200。每个处理器芯片都具有本地处理器高速缓存存储器204、254。基于广播来实现高速缓存存储器204。互连结构206使得能够在高速缓存存储器204、254与存储器存储接口212之间进行通信。存储器存储接口212可以例如由存储器子系统芯片提供。可以类似于图3的方法来检索所需存储器线的有效副本。

图5示出了包括多个处理器芯片201、25L的数据处理系统形式的示例性一致性共享存储系统200。每个处理器芯片都具有本地处理器高速缓存存储器204、254。使用由存储器子系统芯片203提供的一致性目录210来实现高速缓存存储器204。存储器子系统芯片203还提供互连结构206,所述互连结构使得能够在高速缓存存储器204和254、一致性目录210和存储器存储接口212之间进行通信。存储器存储接口212可以例如由存储器子系统芯片203提供。可以类似于图2的方法来执行所需存储器线的有效副本的检索。

图6示出了使用屏障指令来协调由处理器设备(例如,处理器芯片201)执行的指令的示例性方法。处理器芯片201包括执行指令的指令执行单元246。执行的指令可能需要存储器线的副本。所述指令可以例如是读或写指令。指令执行单元246检查处理器高速缓存存储器204是否包括所需的存储器线。在高速缓存存储器未命中的情况下,将请求发送到共享存储器214,以请求复制所需的存储器线,以便将所述副本填充到处理器高速缓存存储器204中。发送到共享存储器214的消息,例如请求或命令以及从共享存储器214接收到的消息,在步骤302中被检查以针对所述存储器线的所述副本的所述填充的跨所述共享存储系统200的有关存储器一致性的传播。例如,可以从共享存储器214接收包括请求的存储器线副本的答复。由所述答复提供的存储器线的副本被填充到处理器高速缓存存储器204中,例如以便使用预取来完成上述指令的执行或加速潜在的后续指令的执行。在步骤302中,可以使用消息本身或为所述检查生成的消息的副本。消息可各自包括在步骤304中检查的一致性传播字段。在一致性传播字段包括指示未确认关于所述存储器线的所述副本的所述填充的存储器一致性传播的标记信息的情况下,相应存储器线的指示符,例如,它的存储器地址,在步骤306中被添加到处理器芯片201的缓存器248中。缓存器248,也称为未传播的缓存器,可以包括存储器线的无序地址集合其用于尚未确认跨共享存储系统200的存储器一致性的传播。在所述一致性传播字段包含标志信息其指示关于所述存储器线的所述副本的所述填充的存储器一致性的传播已确认,在步骤308中从处理器芯片201的缓存器248中移除相应存储器线的指示符(如果存在的话)。所述一致性传播字段包括指示不需要关于缓存器248的动作,没有执行动作310的信息。

基于处理器芯片201的指令执行单元246执行存储器屏障指令,屏障请求被发送到缓存器248,检查所述缓存器248是否包括指示存储器线的任何指示符,所述指示符指示在一致性共享存储器系统200上具有一致性传播的存储器线尚未确认。如果缓存器248包括任何指示符,则在步骤300中,等待直到缓存器248为空。只要缓存器248不为空,就阻止完成屏障指令的执行。在确定缓存器248为空的情况下,屏障应答被发送到指令执行单元246,以通知指令执行单元246缓存器248为空。一旦缓存器248为空,指令执行单元246就完成屏障指令的执行。

图7示出了一致性共享存储系统200的示例性一致性目录210。一致性共享存储系统200包括多个处理器高速缓存存储器204、244,它们经由互连结构204与共享存储器214通信地连接。共享存储器214可以包括多个存储器集线器270、280。在高速缓存未命中的情况下,来自处理器高速缓存存储器204、244的请求经由互连结构206被发送到一致性目录210。一致性目录210包括目录控制器272其控制一致性目录210。一致性目录210可以进一步包括目录表274。目录表274可以包括多个条目,每个条目具有一条存储器线。换句话说,目录表274的每个条目都可以分配给一个存储器线,一个或多个处理器高速缓存存储器204、244使用其副本。条目可以包括地址标签,其中带有相应条目所分配到的存储器线的存储地址、状态信息、访问类型信息和ID信息。所述状态信息可以指示处理器高速缓存存储器204、244中的存储器线的副本的状态是否稳定,即T=0,或者当前是否正在进行改变以使得所述状态是瞬时的,即T=1。在稳定状态下,目前没有任何变化。所述条目还可以标识处理器高速缓存存储器204、244对存储器线的访问类型,例如共享读取访问或排他写入访问。此外,当前正在使用存储器线的副本的处理器高速缓存存储器204、244可以由ID信息来标识,例如,所述ID信息可以包括与要识别的处理器高速缓存存储器204、244可操作地连接的处理器的标识符和/或各个处理器高速缓存存储器204、244本身的标识符。

在所述处理器高速缓存存储器204、244中的所述存储器线的所述副本的状态是瞬态的情况下,即为了通过处理器高速缓存存储器204、244建立一致性而当前正在改变所述存储器线的所述副本,所述目录表条目可以包括指向瞬态表276中的条目的指针。例如,在处理器高速缓存存储器204、244之一请求存储器线的排他性写副本的情况下,其他处理器高速缓存存储器204、244使用的共享的读取副本必须b被无效。一致性目录210可以包括瞬态表276,以便跟踪关于各个存储器线的跨所述共享存储系统的一致性传播。如果存储器线的副本处于瞬态,可以为瞬态表276中的相应存储器线生成一个条目。瞬态表276可以包括多个条目,每个条目具有一个存储器线。换句话说,可以将瞬态表276的每个条目分配给一个存储器线,其中一个或多个处理器高速缓存存储器204、244使用瞬态副本。瞬态表276的条目可以标识所有当前正在使用相应存储器线的副本的处理器高速缓存存储器204、244。对于这些处理器高速缓存存储器204、244中的每一个,所述条目可以跟踪由相应的处理器高速缓存存储器204、244使用的存储器线的副本的最新状态,例如共享读、排他写入或无效。此外,所述条目可以跟踪从各个处理器高速缓存存储器204、244接收的请求和由一致性目录发送到相应处理器高速缓存存储器204、244的未完成请求,即需要答复的请求。最后,对于这些处理器高速缓存存储器204、244中的每一个,瞬态表条目可以包括指示符,所述指示符指示一旦确认了存储器一致性在共享存储系统上的传播,是否必须通知各个处理器高速缓存存储器204、244。通过一致性目录210获得关于存储器线的信息。瞬态表276可以伴随有位向量278,所述位向量278指示所述瞬态表的哪些条目当前是空闲的,哪些当前用于跟踪一致性的传播。一条存储器线。需要答复的请求。最后,对于这些处理器高速缓存存储器204、244中的每一个,瞬态表条目可以包括指示符,所述指示符指示一旦确认了存储器一致性在共享存储系统上的传播,是否必须通知各个处理器高速缓存存储器204、244。通过一致性目录210获得关于存储器线的信息。瞬态表276可以伴随有位向量278,所述位向量指示所述瞬态表中的哪些条目当前是空闲的以及哪些当前用于跟踪存储器线一致性的传播。

在从所述处理器高速缓存存储器204、244之一接收到对存储器线的复制的请求时,一致性目录210的目录控制器272可以使用目录表274确定其余处理器的高速缓存存储器204、244之一是否包括所请求的存储器线的有效副本。在其余的处理器高速缓存存储器204、244之一包括所请求的存储器线的有效副本的情况下,目录控制器272可以将所述请求转发到相应的处理器高速缓存存储器204、244,以便检索所请求的存储器线的副本。如果其余的处理器高速缓存存储器204、244都不包含所请求的存储器线的有效副本,

图8示出了用于管理实现共享存储器系统的一致性的一致性目录210的示例性方法。在步骤400中,一致性目录210经由互连结构206从共享存储系统的处理器高速缓存存储器(例如,C0)接收消息。所述消息可以与存储器线L有关。例如,所述消息可以是存储器线L。一致性目录210的目录控制器272可以在步骤402中检查是否存在向处理器高速缓存存储器C0发送消息M的需求,例如响应于所接收的消息。例如,DC可能需要以包含请求的存储器线L的回复的形式发送消息M到处理器高速缓存存储器C0。如果不需要发送消息M,目录控制器272可以根据其内容继续处理接收到的消息。在需要发送消息M的情况下,所述方法可以继续步骤404。在步骤404中,目录控制器272检查瞬态表276是否包括用于存储器线L的瞬态条目。为此,目录控制器272可以首先检查目录表274。如果目录表274具有用于存储器线L的条目,则目录控制器272可以检查目录表274的各个条目是否包括指向分配给存储器线L的条目瞬态表276的指针。276不包含用于存储器线L的瞬态条目,所述方法可以继续执行步骤410。在步骤410中,可以将标记信息添加到消息M,以指示关于存储器线L的共享存储系统上的存储器一致性的传播已被确认,即,Prop=是。由于共享存储系统不包括存储器线L副本的瞬态,因此存储器线L的存储器一致性是稳定的,并且不需要传播。在步骤416中,消息M经由互连结构206被发送到处理器高速缓存存储器C0。在步骤418中,处理器高速缓存存储器C0从一致性目录210接收消息M。

如果在步骤404中确定瞬态表276包括针对存储器线L的瞬态条目,则所述方法可以继续至步骤406。针对存储器线L的瞬态条目意味着关于存储器线L的一致性必须在存储器线L上跨所述共享存储器系统传播。在步骤406中,使用瞬态表276检查是否存在要由共享存储系统的一个或多个处理器高速缓存存储器执行的动作以建立一致性。例如,可以预期,为了建立一致性,必须使存储器线L的一个或多个有效副本无效。如果没有剩余的动作要执行,则所述方法可以在步骤408中继续。由于所述存储器线L处于瞬态,即尚未确认一致性,瞬态表276中的所述存储线L的瞬态条目中的处理器高速缓存存储器C0的一致性传播通知指示符可以指示:一旦一致性目录210的目录控制器272获得这样的确认,就必须向处理器高速缓存C0提供对一致性传播的确认。没有剩余动作指示所述一致性的传播已经成功完成,即,提供对传播的确认。在步骤408中,如果所述确认被告知所述处理器高速缓存存储器C0,则可以修改用于所述处理器高速缓存存储器C0的传播通知指示符,使得其指示不需要向所述处理器高速缓存存储器C0提供确认。在步骤410中将相应的确认添加到消息M。然后将消息M发送到处理器高速缓存存储器C0,如步骤416和418所示。

在步骤406的检查指示仍有动作要执行的情况下,所述方法可以继续步骤412。可以通过记录在所述存储器线L的瞬时条目中的未完成请求来指示要执行的这种动作,即识别请求还没有执行或确认。在步骤412中,确保瞬态表276中的所述存储器线L的瞬态条目中的处理器高速缓存存储器C0的一致性传播通知指示符指示必须尽快向所述处理器高速缓存存储器C0提供一致性的传播的确认。因为这样的确认是由一致性目录210的目录控制器272获得的。在步骤414中,可以将标记信息添加到消息M,以指示关于存储器线L跨共享存储系统的存储器一致性的传播尚未确定,即,Prop=否。然后,如步骤416和418所示,将消息M发送到处理器高速缓存存储器C0。

图9示出了用于使用与图8中所示的相同的基础结构来管理实现共享存储器系统一致性的一致性目录210的示例性方法。在步骤500中,一致性目录210经由互连结构206从共享存储系统的处理器高速缓存存储器(例如,C0)接受消息。所述消息可以与存储线L有关。例如,所述消息可以是对存储线L的副本的请求。在步骤502中,一致性目录210的目录控制器272检查所述目录控制器272是否使用目录表274和瞬态表276更新了所述瞬态表276中存储器线L的瞬态条目。如果目录控制器272确定在暂态表276中没有存储器线L的瞬态条目的更新,目录控制器272根据其内容继续处理接收到的消息。如果目录控制器272已经更新了瞬态表276中的存储器线L的瞬态条目,则所述方法可以继续步骤504。在步骤504中,为了建立一致性使用瞬态表276检查共享存储系统的处理器高速缓存存储器的存储区中的一个或多个是否存在一个或多个要执行的动作。例如,检查是否根据所述存储器线L的瞬态条目,期望得到一个应答,所述应答确认所述共享存储系统的所述处理器高速缓存存储器之一使用的存储线L的副本无效。如果目录控制器272确定期望执行用于建立一致性的动作,目录控制器272可以根据其内容,例如根据图8的方法,继续处理所接收的消息。如果目录控制器272确定没有期望执行任何用于建立一致性的动作,则所述方法可以继续步骤506。在步骤506中,目录控制器272检查所述存储器线L的瞬态条目是否包括一致性传播通知指示符,所述指示符用于标识所述共享存储系统的任何处理器高速缓存存储器CX,X∈{0,1,...,N},以确认在有关存储器线L的共享存储系统上的一致性传播时被通知的情况。在目录控制器272确定一个或多个处理器高速缓存存储器CX的情况下,则消息以步骤508中命令“D2Ccmd.Propagated(addr A,Prop=是)”的形式发送到每个处理器高速缓存存储器CX以指示已确认关于具有存储器地址A的存储器线L跨共享存储系统的一致性传播,即,Prop=是。在步骤512中,所述消息由处理器高速缓存存储器CX接收。在步骤510中,改变用于所通知的处理器高速缓存存储器CX的一致性传播通知指示符,使得所述指示符不再指示对处理器高速缓存存储器CX的信息要求。

图10A和10B示出了示例性方法,所述方法用于通过一致性共享存储器系统的处理器使用屏障指令来协调指令序列的执行。共享存储器系统的一致性可以使用一致性目录来实现。共享存储系统的处理器,即P0,可以执行指令序列的指令。指令的执行可以包括写入具有存储器地址A的存储器线,即,将具有存储器地址A的存储器线的修改后的副本填充到P0的处理器高速缓存存储器。指令序列所包含的存储器屏障指令由P0执行。直到完成并确认关于具有存储器地址A的存储器线的修改后的副本在整个共享存储系统上的存储器一致性的传播之前,阻止存储器屏障指令的执行完成。例如,P0写入的影响必须传播到共享存储系统的另一个处理器,例如P1。最初,没有任何处理器高速缓存可以保存地址为A的存储器线的副本。因此,具有一致性目录的存储集线器上的目录表可能不包含引用存储器线存储器地址A的条目。

在步骤600中,处理器P1可以执行读指令“load A”,它会丢失P1的本地处理器高速缓存C1。因此,C1向一致性目录发出请求,例如C2Dreq.I2S(Addr=A,Prop=NA),所述请求包含指示不需要对P1的未传播缓存区UB1采取任何操作(NA)的信息。请求C2Dreq.I2S(Addr=A,Prop=NA)是从处理器高速缓存(C)发送到一致性目录(D)的请求(req)以请求地址为A的存储器线的共享读取副本(S)。在步骤602中,一致性目录的目录控制器,即DC,接收请求C2Dreq.I2S(Addr=A,道具=NA)。DC在一致性目录的目录表(即DT)中找不到存储器地址A的条目。因此,DC在DT中建立类型稳定的新条目,即T=0,在共享类型中读取类型,即W=0。DT中的结果条目可以采用[Addr=A,T=0,W=0,在ID字段中设置了P1]。DC使用存储器控制器从主存储器中获取请求的数据,即地址为A的存储器线的副本。在步骤604中,DC将答复D2Creply.I2S(Addr=A,data,Prop=是)发送给P1。在步骤606中,P1接收答复D2Creply.I2S(Addr=A,data,Prop=是),所述答复从UB1中删除地址A(如果存在的话)。回复D2Creply.I2S(Addr=A,data,Prop=是)导致本地处理器高速缓存C1建立存储器线地址A的共享读取副本的条目,并通过填充接所述收到的所述存储器线地址A的所述共享读取副本进入C1来满足“load A”。

在步骤608中,假设在完成上述动作之后,P0执行指令“store A,value”,即将值写入地址为A的存储器线的指令,所述指令在P0的C0中丢失。因此,C0发出对P0的未传播缓存区UB0没有任何操作(NA)的请求C2Dreq.I2E(Addr=A,Prop=NA),并将所述请求发送到所述一致性目录。在步骤610中,DC接收请求C2Dreq.I2E(Addr=A,Prop=NA),用于具有存储器地址A的存储器线的排他性写副本。对于具有存储器地址A的存储器线,DC在DT中找到上述建立的稳定点。,共享读取的条目[Addr=A.T=0.W=0.在ID字段中设置了P1]。在步骤612,DC发送请求D2Creq.S2I(为了使P1使C1中具有存储器地址A的存储器线的共享读取副本无效,将地址Addr=A,Prop=是)。此外,DC选择瞬态表中任何未使用的条目(即TT),例如将其索引标记为TTindexA。DC将DT条目更改为瞬态类型,即T=1,从而导致条目[Addr=A.T=1.指针=TTindexA.]。此外,DC将TTindexA上的TT条目设置为[P0(E,-,-,是).P1(S,-,S2I,否).P2(I,-,-,否)],以便根据语法(LATEST-STATE,RECEIVED-REQUEST,SENT-REQUEST,PropNotify?)对瞬态进行编码为每个处理器缓存。TT条目指示P0的C0包括互斥写副本,并且必须在完成对互斥写副本填充到C0时跨共享存储系统的存储器一致性传播的确认后,才能通知P0的C0。P1包含共享的读取副本,但是一致性目录等待发送给P1的C1的无效请求的执行确认。相对于将专用写副本填充到C0,不需要将一致性的传播通知给P1的C1。最后,共享存储系统的另一处理器P2的处理器高速缓存存储器C2包括具有地址A的存储器线的无效副本,并且不必被告知一致性的传播。DC使用存储器控制器来获取请求的数据,即主存储器中地址为A的存储器线的副本。在步骤614,DC发送答复D2Creply.I2E(Addr=A,data,Prop=否)到处理器P0。对P0的答复包括Prop=否,而对P0的瞬态条目包括PropNotify=是,因为具有地址A的存储器线的瞬态条目标识了除P0以外的至少一个处理器,即P1,具有未完成的SENT-REQUEST。在这种情况下,P1包括SENT-REQUEST=S2I。

在步骤616中,P1接收请求D2Creq.S2I(Addr=A,Prop=是),所述请求从UB1中删除地址A(如果存在)。请求D2Creq.S2I(A,Prop=是)进一步使处理器高速缓存C1使地址为A的存储器线的共享读取副本无效。在步骤618中,P1发出并发送回复C2Dreply.S2I(Addr=A,Prop=NA)到一致性目录,以确认具有地址A的存储器线的共享读取副本无效。所述答复指示不需要对UB1采取任何操作,即NA。

在步骤620中,P0接收答复D2Creply.I2E(Addr=A,数据,Prop=否),其将具有地址A的存储器线的排他性写入副本添加到UB0。

ReplyD2Creply.I2E(Addr=A,data,Prop=否)使C0建立具有地址A的存储器线的专用写入副本的条目,并将相应的存储器线填充到C0。此外,通过将相应的值存储在具有地址A的存储器线的副本中来执行指令“store A,value”。一方面是继续步骤612、616和618,另一方面是继续步骤614和620,两者同时发生或以任何顺序发生。

在步骤622中,目录控制器DC从处理器P1接收答复C2Dreply.S2I(Addr=A,Prop=NA)。对于存储器地址A,DC在DT中找到瞬态类型的条目,即T=1,[Addr=A.T=1.Pointer=TTindexA,其具有一个TT条目[P0(E,-,-,是)的指针。P1(S,-,S2I,否)。P2(I,-,-,否)]。回复C2Dreply.S2I(地址来自处理器P1的=A,Prop=NA)使DC更新TT条目中的P1值。更新的TT条目变为[P0(E,-,-,是)。P1(I,-,-,否)。P2(I,-,-,否)]。更新的TT条目不包括对共享存储系统的任何处理器的未完成的SENT-REQUEST,从而确认了一致性在共享存储系统上的传播。此外,更新的TT条目包括值P0(E,-,-,是),当确认一致性的传播时,所述值请求P0的通知。

在步骤624中,DC将命令D2Ccmd.Propagated(Addr=A,Prop=是)发送到处理器P0。此外,DC清除PropNotify的P0,即将TT条目设置为[P0(E,-,-,否)。P1(I,-,-,否)。P2(I,-,-,否)]。所述TT条目不描述任何瞬态,因为对共享存储系统的任何处理器都没有未完成的SENT-REQUEST。换句话说,各个TT条目描述了稳定状态。因此,DC将地址地址为A的存储器线的DT中的条目设置为类型稳定,即T=0,类型为异写,即W=1。产生的DT条目为[Addr=A。T=0。W=1。在ID字段中设置了P0]。最后,DC用TTindexA清除TT输入并返回TTindexA到瞬态表中未使用的条目278。

在步骤626,P0执行存储器屏障指令。存储器屏障指令可以例如要求由指令序列之前发出的所有写指令都完整。在UB0为空之前,将禁止完成存储器屏障指令。由于P0尚未从一致性目录接收D2Ccmd.Propagated(Addr=A,Prop=是),因此UB0仍包含地址A,并且阻止了存储器屏障指令的执行。在步骤628,C0接收答复D2Ccmd.Propagated(Addr=A,Prop=是),其从UB0中去除地址A。因此,在步骤628中,P0上的UB0为空,并且存储器屏障指令完成。在步骤630,继续在P0上执行指令序列。

示例性目录到高速缓存(D2C)消息可以例如包括请求“D2Creq()”,答复“D2Creply()”和命令“D2Ccmd()”。请求D2Creq()需要随后的应答C2Dreply()。答复D2Creply()响应发送到在先请求C2Dreq()。命令D2Ccmd()没有后续答复。

示例性的高速缓存到目录(C2D)消息可以例如包括请求“C2Dreq()”,答复“C2Dreply()”和命令“C2Dcmd()”。请求C2Dreq()需要随后的应答C2Dreply()。答复C2Dreply()是响应发送到在先请求C2Dreq()。命令C2Dcmd()没有后续答复。

当处理器设备发送或接收存储器访问类型的消息,即与将存储器线填充到处理器高速缓存有关的消息时,处理器设备的一致性传播检查单元可以检查存储器访问类型的一致性传播通知字段。消息,以确定是否需要对处理器设备的未传播缓存区执行操作,以及需要执行哪些操作。存储器访问类型的消息还可以包括与处理器高速缓存存储器中的存储器线的无效有关的消息。存储器访问类型消息中的一致性传播通知字段的可能值可以包括:“Prop=是”使相应消息中的存储器线的存储器地址从未传播的缓存区(如果存在)中删除。Prop=否”使相应消息中存储器线的存储地址添加到未传播的缓存区中。“Prop=NA”对未传播的缓存区不执行任何操作。

在下表中,提供了示例性的目录到缓存(D2C)请求:

在下表中,提供了示例性的目录到缓存(D2C)答复:

在下表中,提供了示例性的目录到高速缓存(D2C)命令:

信息 prop值 评论
D2Ccmd.Propagated(addr,prop)

在下表中,提供了示例性的缓存到目录(C2D)请求:

Figure BDA0002689576950000362

在下表中,提供了示例性的缓存到目录(C2D)答复:

Figure BDA0002689576950000371

在下表中,提供了示例性的高速缓存到目录(C2D)命令:

Figure BDA0002689576950000372

图11示出了以包括多个处理器芯片201的多处理器服务器200的形式的多处理器计算机系统的形式的示例性一致性共享存储器架构。多处理器服务器200包括一组存储器集线器芯片203。处理器芯片201可以设置有多个端口224。根据一个实施例,每个处理器芯片201提供的端口224的数量可以等于存储器集线器芯片203的数量。每个处理器芯片201都提供有本地高速缓存存储器204,用于缓存存储器线,即由处理器芯片201处理的存储器线。服务器200的处理器芯片201可以配置相同或可以不相同。应用程序软件可以在一个或多个处理器芯片201上执行,因此给定的应用程序可以隐式或显式地利用相似的或不同的处理器芯片201并从中受益。

每个存储器集线器芯片203可以被提供有多个本地存储器模块234,例如,包括一系列动态随机存取存储器集成电路的双列直插式存储器模块(DIMM)。因此,每个存储器集线器芯片203实现了存储器集线器设备。此外,每个存储器集线器芯片203可以包括多个端口222。例如,每个存储器集线器芯片203的端口222的数量可以等于处理器芯片201的数量。另外,对于存储在存储器模块中的存储器线在各个存储器集线器芯片203本地的236中,每个存储器集线器芯片203可以包括一致性目录210,用于为一个或多个处理器芯片201的高速缓存存储器204中存储的存储器线实现基于目录的一致性。服务器200的芯片203,所有存储集线器芯片20可以被相同或相似地配置,每个存储集线器芯片203执行类似的功能。应用程序软件可以在一个或多个处理器芯片201上执行,因此给定应用程序的性能通常受益于由许多相似的存储集线器芯片203提供服务的存储器,每个特定的存储地址由单个预定义的存储集线器芯片203提供服务。

每个处理器芯片201可以例如经由双向点对点通信连接230,例如串行通信连接,与每个存储器集线器芯片203通信地耦合。因此,可以向每个处理器芯片201提供对在存储器集线器芯片203之一本地的每个存储器模块234的存储器访问。可以基于统一存储器访问(UMA)架构来提供对存储器模块236的访问。给定的存储器线,即存储器线,可以存储在同一存储器集线器芯片203本地的作为后备存储器即主存储器的一个或多个存储器模块236上。包括例如多条存储器线的给定存储器页面可以是跨所有存储器集线器芯片203的存储器模块236交错。

计算机系统可以例如包括16个处理器芯片201和128个存储器集线器芯片203。在这种情况下,每个处理器芯片201可以包括128个端口224,以便通信地耦合到每个存储器集线器芯片203。可以,每个存储器集线器芯片203可以设置有16个端口222,使得每个存储器集线器芯片203可以经由不同的点对点通信连接230通信地耦合到每个处理器芯片201。

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

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

所述计算机可读存储介质可以是有形设备,所述有形设备可以保留和存储供指令执行设备使用的指令。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何适当组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘、机械编码的设备,例如打孔卡或凹槽中的凸起结构,上面记录了指令,以及上述内容的任何适当组合。如本文所使用的,计算机可读存储介质不应被理解为本身是瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导传播的电磁波或其他传输介质(例如,穿过的光脉冲光纤电缆)或通过电线传输的电信号。

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

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

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

可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器,以产生机器,从而使得所述指令经由计算机的处理器或其他可编程数据执行。处理设备,创建用于实现流程图和/或框图方框中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,所述介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式起作用。

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

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。就这一点而言,流程图或框图中的每个方框可以表示指令的模块、片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。

上述特征的可能组合可以如下:

1.一种用于协调由一致性共享存储器系统的处理器设备执行的包括多个指令的指令序列的方法,其中,所述处理器设备与处理器高速缓存存储器可操作地连接,所述方法包括:

由所述处理器设备执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的第一标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的第二标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,所述处理器设备阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行。

2.根据权利要求1所述的方法,其中直到所述处理器设备先前标记的所有存储器线都被清除标记为止,阻止完成所述存储器屏障指令的执行。

3.根据权利要求1所述的方法,其中,对所述存储器线的所述标记包括将所述存储器线的标识符添加到所述处理器设备的缓存器,并且其中对所述已标记的存储器线的所述清除标记包括从所述处理器的所述缓存器中移除所述存储器线的标识符。

4.根据权利要求3所述的方法,其中存储在所述缓存器中的所述已标记存储器线的所述标识符包括所述主存储器中的所述各个存储器线的存储地址。

5.根据权利要求3所述的方法,其中阻止所述存储器屏障指令的执行的完成直到所述处理器设备的所述缓存器为空。

6.根据权利要求1所述的方法,其中,所述共享存储器系统的所述存储器一致性是使用一致性目录来实现的。

7.根据权利要求6所述的方法,其特征在于,所述第一和所述第二标志信息中的至少一个由所述处理器设备从所述一致性目录接收的消息来提供。

8.根据权利要求6所述的方法,其特征在于,所述第一和所述第二标志信息中的至少一个由所述处理器设备发送到所述一致性目录的消息来提供。

9.根据权利要求1所述的方法,其中,使用广播来实现所述共享存储系统的存储器一致性。

10.根据权利要求1所述的方法,其特征在于,使所述处理器设备将所述存储器线的副本填充到所述处理器高速缓存存储器的指令是指定对所述各个存储器线的写访问的指令。

11.根据权利要求1所述的方法,其中,跨所述共享存储器系统的所述存储器一致性传播包括:使由所述共享存储器系统的其他处理器设备的远程处理器高速缓存存储器使用的所述存储器线的其他副本无效。

12.根据权利要求1所述的方法,其中,与所述处理器高速缓存存储器的内容的修改有关并且由所述处理器设备处理的消息包括一致性传播字段,其中,所述一致性传播字段包括以下之一:指示关于所述修改的跨所述共享存储系统的存储器一致性传播未被确认的标记信息;指示关于所述修改的跨所述共享存储器系统的存储器一致性的传播已被确认的标志信息,或指示既不需要标记操作又不需要清除标记操作的标志信息。

13.一种一致性共享存储器系统的处理器设备,其中,所述处理器设备与处理器高速缓存存储器可操作地连接,并且被配置为协调包括多个指令的指令序列的执行,所述协调包括:

执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行。

14.根据权利要求13所述的处理器装置,其中直到所述处理器设备先前标记的所有存储器线都被清除标记为止,阻止完成所述存储器屏障指令的执行。

15.根据权利要求13所述的处理器设备,其中所述处理器设备包括用于注册存储器线的缓存器,所述存储器线的副本被填充到所述处理器高速缓存存储器,并且针对所述存储器线的关于所述各个副本的所述填充的跨所述共享存储器系统的存储器一致性传播未被确认,其中所述存储器线的所述标记包括将所述存储器线的标识符添加到所述处理器设备的所述缓存器,并且其中所述已标记的存储器线的所述清除标记包括从所述处理器的所述缓存器中删除所述存储器线的所述标识符。

16.根据权利要求15所述的处理器装置,其中存储在所述缓存器中的所述已标记存储器线的所述标识符包括所述主存储器中的所述各个存储器线的存储地址。

17.根据权利要求15所述的处理器装置,其中阻止所述存储器屏障指令的执行的完成直到所述处理器设备的所述缓存器为空。

18.一种用于管理实现共享存储器系统的存储器一致性的一致性目录的方法,所述方法包括:

通过所述一致性目录维护分配给所述共享存储系统的主存储器的存储器线的标志信息,其中所述共享存储系统的处理器设备已启动将所述存储器线的副本填充到与所述处理器设备可操作地连接的处理器高速缓存存储器,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播是否已确定;

将所述标志信息包括在消息中由所述一致性目录发送给所述处理器设备;

通过所述一致性目录将所述消息发送到所述处理器设备。

19.根据权利要求18所述的方法,其中基于确定需要对所述共享存储系统的另一处理器设备的远程处理器高速缓存存储器的所述内容进行修改以便传播关于将所述存储器线的所述副本填充到所述远程高速缓存存储器的存储器一致性,所述一致性目录启动对分配给所述存储器线的所述标志信息的所述维护。

20.根据权利要求19所述的方法,其中,所述一致性目录向所述远程处理器高速缓存存储器发送请求以请求修改所述远程处理器高速缓存存储器的内容,用以传播所述存储器一致性,所述存储器一致性关于所述存储器线的所述副本到所述远程处理器高速缓存存储器的所述填充。

21.根据权利要求20所述的方法,其中由所述一致性目录请求的所述修改包括使所述远程处理器高速缓存存储器所包括的所述存储器线的另一副本无效。

22.根据权利要求19所述的方法,其中,基于关于所述存储线的所述副本的所述填充的跨所述共享存储系统的所述存储一致性的所述传播,一致性目录包括用于保持跟踪所述共享存储系统的所述其他处理器设备的所述处理器高速缓存的所述内容修订的寄存器。

23.根据权利要求22所述的方法,其中当关于所述存储线的所述副本的所述填充的跨所述共享存储系统的存储一致性传播被确认时,所述寄存器包括一致性传播通知指示符,所述一致性指示符标识所述共享存储器系统的处理器设备的处理器高速缓存存储器,所述高速缓存存储器将由所述一致性目录通知。

24.实现共享存储器系统的存储器一致性的一致性目录,所述一致性目录被配置为:

维护分配给所述共享存储系统的主存储器的存储器线的标志信息,其中所述共享存储系统的处理器设备已启动将所述存储器线的副本填充到与所述处理器设备可操作地连接的处理器高速缓存存储器,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播是否已确定;

将所述标志信息包括在消息中;

将所述消息发送到所述处理器设备。

25.一种一致性共享存储器系统,其包括实现所述共享存储系统的存储器一致性的一致性目录、主存储器以及与处理器高速缓存存储器可操作地连接的处理器设备,所述处理器设备被配置为协调包括多个指令的指令序列的执行,所述协调包括:

执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行;

以及所述一致性目录被配置为基于启动所述存储器线的所述副本的所述填充维护分配给所述主存储器的所述存储器线的所述标志信息,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播是否已确定,其中所述维护包括:

首先包括标志信息,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性的传播未被确认为第一消息;

发送所述第一消息给所述处理器设备;

基于所述传播获得确认后,更新所述标志信息并包括所述更新的标志信息,所述更新的标志信息指示关于所述存储消息的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播被确认为第二消息;

向所述处理器设备发送所述第二消息。

具体实施方式

图1描绘了适合于实现一致性共享存储系统的示例性计算机系统的示意图;

图2描绘了示例性一致性共享存储系统的示意图;

图3描绘了示例性一致性共享存储系统的示意图;

图4描绘了示例性一致性共享存储系统的示意图;

图5描绘了示例性一致性共享存储系统的示意图;

图6描绘了指令序列的执行的示例性方法的示意图;

图7描绘了实现共享存储系统的一致性的示例性一致性目录的示意图;

图8描绘了用于管理实现共享存储器系统的存储器一致性的一致性目录的示例性方法的示意图;

图9描绘了用于管理实现共享存储器系统的存储器一致性的一致性目录的示例性方法的示意图;

图10A和图10B描绘了执行指令序列并实现共享存储器系统的存储器一致性的示例性方法的流程图;以及

图11描绘了图示实现共享存储系统的示例性多处理器体系结构的示意图。

详细说明

为了说明的目的而给出了本发明的各种实施例的描述,但是这些描述并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理,对市场上发现的技术的实际应用或技术上的改进,或者使本领域的其他普通技术人员能够理解本文公开的实施例。

处理器高速缓存存储器临时存储数据,以便能够更快地服务于所述数据的将来请求。存储在处理器高速缓存中的数据可以是存储在其他地方(例如,主存储器中)的数据的副本(即重复)。当可以在高速缓存中找到请求的数据时,发生高速缓存命中;而当在高速缓存中找不到请求的数据时,发生高速缓存未命中。通过从处理器高速缓存存储器中读取数据来为高速缓存命中提供服务,这比从较慢的数据存储区(例如主存储器)中读取数据要快。因此,使用处理器高速缓存存储器可以加速计算机系统的系统性能。

为了通过处理器高速缓存存储器提供数据,在后备存储器(例如主存储器)和处理器高速缓存存储器之间以块为单位在每个固定大小的块之间传送数据。这样的数据块被称为存储器线或高速缓存线。当将存储器线从主存储器复制到处理器缓存时,将创建一个缓存条目。高速缓存条目可以包括复制的数据,即存储器线,以及后备存储器中的所请求的位置,即提供主存储器中各个存储器线的地址的地址标签。

当诸如例如处理器之类的高速缓存客户机需要从后备存储器中的位置读取或写入,即读取或写入存储器线时,高速缓存客户机可以首先检查高速缓存存储器中的对应条目。处理器高速缓存存储器检查所有高速缓存条目中各个存储器线的地址。在高速缓存命中的情况下,即找到包含所寻求的地址标签的高速缓存条目,处理器可以立即用所需的地址标签从处理器高速缓存条目读取数据或向处理器高速缓存条目写入数据,从而修改存储在其中的存储器线。在高速缓存未命中的情况下,处理器高速缓存存储器可以分配新的高速缓存条目,并从例如处理器的另一个高速缓存客户端的另一个高速缓存存储器中,或者从后备存储器中,将分配有所寻找的地址标签的存储器线复制到新的高速缓存条目中。然后,该请求可以从新的高速缓存条目的内容与高速缓存存储器的新存储器线来满足。

高速缓存存储器可以实现数据传输,特别是重复传输的数据传输的性能提高。例如,由于在高速缓存存储器内发生缓存,因此处理器高速缓存存储器可以在存储器线的初始传输时实现性能提高。此外,由于从主存储器检索存储器线并将其存储在更快的中间处理器高速缓存存储器中,因此处理器高速缓存存储器可以实现性能提高,使得在重复请求的情况下可以从更快的中间处理器高速缓存存储器而不是主存储器中检索相应的存储器线。此外,处理器高速缓存存储器可以通过将存储器线立即存储在中间处理器高速缓存存储器中并在以后的阶段推迟将相应的存储器线转移到主存储器来实现写入修改的存储器线的性能提高。可替代地,各个存储器线到主存储器的传输可以作为后台处理发生。

处理器高速缓存存储器可以包括多个条目。每个条目可以包括高速缓存数据,即,也称为高速缓存存储器线,它是在诸如主存储器的某种后备存储器中的存储器线(即,存储块)的数据的副本。每个条目可以进一步包括地址标签,所述地址标签标识所述条目包括的数据,即存储器线。更精确地,地址标签可以识别存储在后备存储器中的数据,所述数据在高速缓存存储器条目中的相应数据是副本。在对相应的高速缓存存储器条目进行写访问的情况下,可以修改存储器线,从而表示存储在后备存储器中的某些数据的修改后的副本。修改处理器高速缓存存储器中的存储器线后,为了确保存储在处理器高速缓存存储器中的存储器线与存储在后备存储器中的相应数据之间的一致性,可以使用存储器一致性协议来更新后备存储器中的相应存储器线,其后备存储器中的数据的副本。另外,每个条目可以包括状态信息,所述状态信息标识存储在相应条目(即,存储器线)中的数据的状态。

如果存储器线的副本被单个缓存客户端修改,则具有相同地址的存储器线的所有其他副本可能变得过时。因此,可能有必要管理那些过时的存储器线的处理。为了确保存储器的一致性,可能必须确保不再将存储器线的过期副本用作有效副本。过时的副本可能无效或更新。

当高速缓存客户机,例如处理器核心或处理器芯片,需要访问假定存储在后备存储器中的数据时,它可以首先检查一个或多个处理器高速缓存存储器。如果可以在这些处理器高速缓存存储器之一中找到一个条目,并且其地址标签与请求的存储器线的地址标签相匹配,则可以使用由相应处理器高速缓存存储器条目提供的存储器线来代替存储在后备存储器中的相应数据存储。这种情况称为高速缓存存储器命中。在高速缓存存储器未命中的情况下,即,当在一个或多个处理器高速缓存存储器中找不到具有所需存储器线的相应地址标签的条目时,从后备存储器中检索所需的未高速缓存的数据。在未命中处理期间,从后备存储器中检索到的未高速缓存的数据可以例如被复制到处理器高速缓存存储器中,从而在进一步的访问尝试的情况下启用高速缓存存储器命中。

为了维护一个或多个处理器高速缓存存储器与主存储器之间以及不同高速缓存存储器之间的一致性,高速缓存过程可能必须遵守高速缓存一致性协议。

在计算机体系结构中,存储器一致性是指存储在共享存储器系统的多个处理器高速缓存中的共享资源数据的一致性。在共享存储器系统中,保持存储器一致性可能特别重要。

在共享存储器系统中,例如以具有每个处理器至少一个单独的处理器高速缓存存储器的共享存储器多处理器系统的形式,可能有相同共享存储器线的许多副本:例如,一个副本在主存储器中的“1”和请求一个相应的存储器线的副本的处理器的一个或多个本地高速缓存中的每一个。当其中一个副本被更改时,其他副本必须反映所述更改。存储器一致性是确保处理器高速缓存中的存储器线副本更改及时在整个系统中传播的学科。

共享存储器系统可以包括多个处理器高速缓存存储器。根据实施例,可以以诸如计算机之类的电子数据处理系统的形式来提供共享存储系统。例如,各个电子数据处理系统包括一个或多个多核处理器。每个多核处理器包括两个或多个独立的处理单元,即内核,它们读取并执行程序指令。这些核中的每一个可以被提供有本地高速缓存存储器,即,用于高速缓存各个核所使用的数据的单独的高速缓存存储器。根据实施例,本地高速缓存存储器可以仅服务于其被分配给的核心。

根据另一示例,电子数据处理系统可以包括多个处理器芯片。两个或更多处理器芯片可各自包括本地处理器高速缓存存储器,即,单个高速缓存存储器仅服务于由分配给各个高速缓存存储器的处理器芯片所包括的处理器。

存储器一致性可以例如使用基于无效的存储器一致性协议来实现,例如MESI或诸如H-MESI、MOESI,MESIF或MERSI之类的修改。

根据MESI,为每个缓存条目分配以下四个可能状态之一:已修改、排他、共享和无效。例如,使用另外两个位指示状态。“修改的”标识仅存在于当前高速缓存存储器中并且是脏的,即与存储在主存储器中的相应数据线相比已被修改的存储器线。因此,在允许以其他方式读取存储在主存储器状态中的不再有效的数据线之前,需要高速缓存存储器将修改后的存储器线写回到主存储器。相应存储器线的回写可以将存储器线的状态从修改状态更改为共享状态。

“排他性”表示仅在当前高速缓存存储器中存在并且干净的存储器线,即,其仍与存储在主存储器中的相应数据线匹配。排他状态可以例如响应于从另一高速缓存存储器接收到读取请求而改变为共享状态。当接收到这样的读取请求时,可以将所请求的存储器线的副本作为共享的高速缓存存储器线发送到请求的高速缓存存储器,并且可以将保留在高速缓存存储器中的复制的高速缓存存储器线的状态改变为共享。如果相应的存储器线的状态被写入相应的存储器线,则其例如可以从排他改变为修改。

“共享的”标识可以被存储在多个高速缓存存储器中并且干净的存储器线。

“无效”标识未使用并且不用于满足存储器访问的缓存条目。如果相应的存储器线的副本被另一缓存存储器作为专用存储器线请求,则可以将缓存中的存储器线的状态例如从共享改变为无效。例如,各个存储器线的共享副本可以作为排他性副本转发,而其余的复制存储器线则被无效,以避免不一致,即不同的高速缓存存储器正在使用同一存储器线的不同副本。如果要读取无效的存储器线,则必须从另一个高速缓存存储器或主存储器中读取它的有效副本,即共享或排他性。

除了四个共同的MESI协议状态之外,MOESI协议还包括第五个“拥有”状态,代表修改和共享的数据。这样可以避免在共享之前将修改后的数据写回主存储器的需要。尽管最终仍必须回写数据,但可以推迟回写。“已修改”标识一条存储器线,它是所述存储器线的唯一有效副本,并且已被修改。

“拥有的”标识存储器线的副本,它是唯一可以修改的副本,而其他处理器高速缓存存储器也可以包括有效副本,但是不允许修改。拥有的存储器线的修改必须广播到共享所述存储器线的所有其他处理器高速缓存中。拥有状态的引入允许脏共享(dirtyshaTing)数据,即,可以在不更新主存储器的情况下在各种处理器高速缓存存储器周围移动经修改的存储器线。在使所有共享副本无效之后,可以将存储器线更改为“已修改”状态,也可以通过将修订写回到主存储器来更改为“共享”状态。

存储器屏障指令提供排序功能,所述排序功能确保在存储器屏障指令完成之前启动的所有存储器指令,并且确保直到存储器屏障指令完成之后才启动后续的存储器指令。当存储器屏障指令完成时,在存储器屏障指令之前启动的所有存储器访问均已完成。

存储器屏障指令可能是必要的,因为现代处理器可能会采用性能优化,从而导致无序执行。诸如加载和存储之类的存储器操作的这种重新排序在单个执行线程中可能未被注意到。但是,在并发程序和设备驱动程序的情况下,除非充分控制,否则这种性能优化可能会导致无法预测的行为。

共享存储器系统被配置为允许在处理器设备之间以弱顺序执行加载并存储存储器访问指令。处理器的指令序列包括存储器屏障指令,所述存储器屏障指令强制执行处理器设备对所述序列的先前访问指令的执行以及在所述序列的后续指令执行之前跨共享存储系统的一致性传播。实施例可能具有有益的效果,即在使用少量计算机资源的同时以快速执行来实现存储器屏障指令。

典型的一致性传播可能会使存储器线的先前值的一个或多个缓存副本无效。

根据实施例,允许跨处理器设备的加载和存储存储器访问指令的弱排序执行的共享存储器系统包括多个处理器。每个处理器包括用于存储未传播的存储器线的未传播的缓存器。未传播的缓存区跟踪处理器先前访问的存储器线地址,对于这些访问,向其他处理器的传播一致性是未知的。此外,每个处理器包括存储器屏障指令,所述存储器屏障指令通过停止处理器对其指令序列的后续存储器访问指令的执行直到未传播的缓存器为空来实现。

根据实施例,与要由一致性目录发送到处理器高速缓存存储器N的存储器线有关的消息包括指示是否已经传播了关于存储器线的存储器一致性的传播字段。如果所述存储器线的一致性目录的临时条目期望所述一致性目录从一个或多个缓存了所述存储器线的较早副本的处理器缓存中接收到无效确认消息,则一致性目录会将消息的传播字段设置为否。

如果存储器线的目录条目或目录的临时条目期望一致性目录没有从一个或多个缓存存储器线的较早副本的处理器高速缓存接收无效确认消息,则一致性目录设置消息的传播字段为“是”。如果所述行具有临时条目,并且消息的传播字段设置为“是”,则一致性目录会将所述行的一致性目录的临时条目中的缓存N的传播通知字段设置为否。

如果消息的传播字段设置为否,则一致性目录在存储器线的一致性目录的瞬时条目中将针对高速缓存N的传播通知字段设置为是。

如果一致性目录更新了存储器线的瞬态条目,并且如果更新后的瞬态条目期望一致性目录没有接收到来自缓存了存储器线的较早副本的处理器高速缓存存储器的无效确认消息,则一致性目录发送已传播的存储器线的消息发送到每个处理器高速缓存,在所述存储器线的瞬态条目中将其传播通知字段设置为“是”。

对于由一致性目录发送到处理器高速缓存存储器的每个这样的传播消息,一致性目录在瞬时条目中将用于处理器高速缓存存储器的对应的传播通知字段设置为否。

根据实施例,一致性目录更新存储器线的瞬态条目,作为一致性目录动作的一部分,所述一致性目录动作是由一致性目录从处理器高速缓存存储器接收与存储器线有关的消息引起的。

根据实施例,存储在缓存器中的标记存储器线的标识符包括主存储器中的相应存储器线的存储地址。实施例可以具有提供用于识别存储器线的有效标识符的有益效果。由于存储器地址已经用于标识主存储器中以及处理器高速缓存中的存储器线,因此不需要用于翻译或解释标识符的其他逻辑。

根据实施例,使用一致性目录来实现共享存储系统的存储器一致性。实施例可以具有以一致性目录的形式提供中央单元的有益效果,所述中央单元可以控制,检查和确认一致性在共享存储系统上的传播。

根据实施例,第一和第二标志信息中的至少一个由处理器设备从一致性目录接收的消息来提供。实施例可以具有有益的效果,即一致性目录确认了一致性在共享存储系统上的传播。根据实施例,第一和第二标志信息中的至少一个由处理器设备发送给一致性目录的消息来提供。实施例可以具有宣布要求确认一致性在共享存储系统上的传播的有益效果。

根据实施例,使用广播来实现共享存储系统的存储器一致性。实施例可以具有有益效果,即用于实现共享存储系统的一致性的基于广播的协议不需要中央一致性目录。此外,为了实现存储器一致性,不必检查和维护中央一致性目录。因此,如果有足够的带宽可用,则用于实现存储器一致性的基于广播的协议可能比基于目录的协议更快,因为存储器线的所有事务都包括所有处理器可见的请求/请求。基于广播的协议的缺点是它缺乏可伸缩性。每个请求都必须广播到系统中的所有节点,即所有处理器高速缓存,这意味着随着系统变大,实施该方法所需的带宽不断增长。

根据实施例,使处理器设备将存储器线的副本填充到处理器高速缓存存储器的指令是指定对相应存储器线的写访问的指令。根据实施例,存储器一致性在共享存储器系统上的传播包括使由共享存储器系统的其他处理器设备的远程处理器高速缓存存储器使用的存储器线的其他副本无效。实施例可以具有有益的效果,即可以确保没有另外的处理器设备使用存储器线的过期共享读取副本,即陈旧副本,同时处理器设备写入相应存储器线的新副本。

根据实施例,存储在缓存器中的标记存储器线的标识符包括主存储器中的相应存储器线的存储地址。实施例可以具有使用公共标识符来标识主存储器中,处理器高速缓存存储器中以及处理器设备的缓存器中的存储器线的有益效果。

根据实施例,由一致性目录请求的修改包括使远程处理器高速缓存存储器所包括的存储器线的另一副本无效。实施例可以具有确保远程处理器高速缓存存储器中的任何一个没有使用存储器线的过时副本(即陈旧副本)而处理器设备将相应存储器线的新副本填充到处理器高速缓存存贮器中的有益效果。因此,可以有效地避免使用存储器线的不连贯副本以及引入竞争条件。

图1描绘了适合于实现共享存储系统的计算机系统100。将理解的是,本文描述的方法是通过计算机系统自动化的。这些方法可以进一步在软件112、122(包括固件122)、硬件(处理器)105或其组合中实现。在示例性实施例中,本文描述的方法以软件的形式作为可执行指令来实现,并且可以由诸如个人计算机、工作站、小型计算机或大型计算机之类的专用或通用数字计算机使用。因此,最通用的系统100包括通用计算机101。

在示例性实施例中,就硬件体系结构而言,如图1所示,计算机101包括处理器105,耦合到存储控制器115的存储器(主存储器)110,以及一个或多个输入和/或输出(I/0)设备(或***设备)10、145其经由本地输入/输出控制器135通信地耦合。输入/输出控制器135可以是但不限于一条或多条总线或其他有线或无线连接,例如在本领域中是已知的。输入/输出控制器135可以具有附加元件,以简化通信,这些附加元件为简化起见而被省略,诸如控制器、缓存器、高速缓存器、驱动器、转发器和接收器,以实现通信。此外,本地接口可以包括地址、控制和/或数据连接,以实现上述组件之间的适当通信。如本文所述,I/0设备10、145通常可以包括本领域中已知的任何通用密码卡或智能卡。

处理器105是用于执行软件的硬件设备,特别是用于执行存储在存储器110中的软件的处理器。处理器105可以是任何定制的或市售的处理器、中央处理器(CPU)、与之相关联的多个处理器中的辅助处理器。计算机101,基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或通常用于执行软件指令的任何设备。处理器105可以包括一个或多个本地高速缓存存储器和/或与之通信连接。处理器105可包括一个或多个处理器核。每个处理器核可以可操作地与一个或多个本地处理器高速缓存存储器连接。处理器105可以以多个处理器芯片的形式实现,每个处理器芯片可以包括一个或多个本地处理器高速缓存存储器。处理器高速缓存存储器可各自包括用于控制相应的高速缓存存储器的高速缓存存储器控制器。在多个处理器高速缓存存储器的情况下,可以以基于目录的存储器一致性或基于广播的存储器一致性的形式实现存储器一致性。

存储器110可以包括易失性存储元件(例如,随机存取存储器(RAM,例如DRAM,SRAM,SDRAM等))和非易失性存储元件(例如,ROM、可擦除可编程只读存储器(EPROM)中的任何一个或组合存储器)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM)。注意,存储器110可以具有分布式架构,其中各个组件彼此远离,但是可以由处理器105访问。

存储器110中的软件可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能(尤其是本发明的实施例中涉及的功能)的可执行指令的有序列表。在图1的示例中,存储器110中的软件包括指令或软件112。

存储器110中的软件通常还应包括合适的操作系统(0S)111。所述0S111本质上控制诸如可能的软件112之类的其他计算机程序的执行。

本文描述的方法可以以源程序112、可执行程序112(目标代码)、脚本或包括要执行的一组指令112的任何其他实体的形式提供。当被提供为源程序时,相应的程序需要经由编译器,汇编器,解释器等来翻译,所述编译器,汇编器,解释器等可以包括在存储器110中或可以不包括在存储器110中,以便与0S111相关联地正确地操作。此外,可以将方法编写为具有数据和方法类的面向对象的编程语言,或具有例程、子例程和/或功能的过程编程语言。

在示例性实施例中,常规键盘150和鼠标155可以耦合到输入/输出控制器135。诸如I/0设备145的其他输出设备可以包括输入设备、例如但不限于打印机、扫描仪、麦克风之类的。最后,I/O设备10、145还可包括传达输入和输出两者的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。I/O设备10、145可以是本领域中已知的任何通用密码卡或智能卡。系统100可以进一步包括耦合到显示器130的显示器控制器125。在示例性实施例中,系统100可以进一步包括用于耦合到网络165的网络接口。网络165可以是基于IP的网络,用于经由宽带连接在计算机101与任何外部服务器、客户端等之间进行通信。网络165在计算机101和外部系统30之间发送和接收数据,这可能涉及执行本文讨论的方法的部分或全部步骤。在示例性实施例中,网络165可以是由服务提供商管理的托管IP网络。网络165可以以无线方式来实现,例如,使用诸如WiFi、WiMax等无线协议和技术。网络165也可以是分组交换网络,诸如局域网、广域网、城域网区域网络,Internet网络或其他类似类型的网络环境。网络165可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人局域网(PAN)、虚拟专用网(VPN)、内部网或其他合适的网络系统,并且包括用于接收和发送信号的设备。

如果计算机101是PC、工作站、智能设备等,则存储器110中的软件可以进一步包括基本输入输出系统(BIOS)122。BIOS是用于初始化和在启动时测试硬件、启动OS111,并支持硬件设备之间的数据传输。BIOS存储在ROM中,使得当计算机101被激活时可以执行BIOS。

当计算机101处于操作中时,处理器105配置为执行存储在存储器110中的软件112,以与存储器110进行数据通信,并根据所述软件总体上控制计算机101的操作。处理器105读取本文中描述的方法和OS111的全部或部分,但通常是后者,可能被缓存在处理器105内,然后执行。存储器120可以包括诸如HDD存储器之类的磁盘存储器。

图2示出了数据处理系统形式的示例性一致性共享存储系统200,其使用一致性目录210来实现基于目录的一致性。一致性共享存储系统200包括多个N个处理器核202、252,每个核与本地处理器高速缓存存储器204、254连接,经由互连结构206在处理器高速缓存存储器204、254之间交换数据。互连结构206进一步将处理器高速缓存存储器204、254与一致性目录210连接。一致性目录210保持跟踪处理器高速缓存存储器204、254的内容,即由其包括的存储器线,从而实现一致性。另外,互连结构206将高速缓存存储器204、254连接到存储器存储接口212。经由存储器存储接口212,可以以诸如主存储器之类的共享存储器的形式从后备存储器接收数据并将其发送到后备存储器。例如,处理器核心1试图从处理器高速缓存存储器1中检索一条存储器线,导致高速缓存未命中,因为处理器高速缓存存储器1不包含所请求存储器线的有效副本,或者处理器核心1可以例如请求写副本,但是处理器高速缓存存储器1只能包含读副本。处理器核心1可以经由互连结构206将对期望的存储器线的有效副本的请求发送到一致性目录210。一致性目录210检查是否其他处理器高速缓存存储器中的任何存储器是否包括所请求的存储器线。如果其他处理器缓存中的一个包含所需的存储器线,一致性目录210可以将请求转发到包括期望的存储器线的各个另外的处理器高速缓存存储器。如果高速缓存存储器中没有其他处理器高速缓存存储器包括所需的存储器线,则一致性目录210可以经由存储器存储接口212将请求转发到后备存储器。因此,可以将所需存储器线的有效副本传送到请求处理器核心1,所述处理器核心1填充高速缓存存储器1中的相应存储器线。

图3示出了数据处理系统形式的示例性一致性共享存储系统200,其包括多个处理器核202、252,每个处理器核具有本地处理器高速缓存存储器204、254。基于广播来实现存储器一致性。与图2的共享存储系统相反,图3的一致性共享存储系统200不包括一致性目录。在基于广播的一致性的情况下,在高速缓存未命中的情况下,处理器核心1经由互连结构206将对所需存储器线的有效副本的请求广播到相关共享存储系统200的其他处理器核心2至N。如果处理器核心1没有收到包括所希望的存储器线的所请求的有效副本的答复,则处理器核心1可以经由互连206和存储器存储接口212从后备存储器请求所述副本

图4示出了包括多个处理器芯片201、251的数据处理系统形式的示例性一致性共享存储系统200。每个处理器芯片都具有本地处理器高速缓存存储器204、254。基于广播来实现高速缓存存储器204。互连结构206使得能够在高速缓存存储器204、254与存储器存储接口212之间进行通信。存储器存储接口212可以例如由存储器子系统芯片提供。可以类似于图3的方法来检索所需存储器线的有效副本。

图5示出了包括多个处理器芯片201、25L的数据处理系统形式的示例性一致性共享存储系统200。每个处理器芯片都具有本地处理器高速缓存存储器204、254。使用由存储器子系统芯片203提供的一致性目录210来实现高速缓存存储器204。存储器子系统芯片203还提供互连结构206,所述互连结构使得能够在高速缓存存储器204和254、一致性目录210和存储器存储接口212之间进行通信。存储器存储接口212可以例如由存储器子系统芯片203提供。可以类似于图2的方法来执行所需存储器线的有效副本的检索。

图6示出了使用屏障指令来协调由处理器设备(例如,处理器芯片201)执行的指令的示例性方法。处理器芯片201包括执行指令的指令执行单元246。执行的指令可能需要存储器线的副本。所述指令可以例如是读或写指令。指令执行单元246检查处理器高速缓存存储器204是否包括所需的存储器线。在高速缓存存储器未命中的情况下,将请求发送到共享存储器214,以请求复制所需的存储器线,以便将所述副本填充到处理器高速缓存存储器204中。发送到共享存储器214的消息,例如请求或命令以及从共享存储器214接收到的消息,在步骤302中被检查以针对所述存储器线的所述副本的所述填充的跨所述共享存储系统200的有关存储器一致性的传播。例如,可以从共享存储器214接收包括请求的存储器线副本的答复。由所述答复提供的存储器线的副本被填充到处理器高速缓存存储器204中,例如以便使用预取来完成上述指令的执行或加速潜在的后续指令的执行。在步骤302中,可以使用消息本身或为所述检查生成的消息的副本。消息可各自包括在步骤304中检查的一致性传播字段。在一致性传播字段包括指示未确认关于所述存储器线的所述副本的所述填充的存储器一致性传播的标记信息的情况下,相应存储器线的指示符,例如,它的存储器地址,在步骤306中被添加到处理器芯片201的缓存器248中。缓存器248,也称为未传播的缓存器,可以包括存储器线的无序地址集合其用于尚未确认跨共享存储系统200的存储器一致性的传播。在所述一致性传播字段包含标志信息其指示关于所述存储器线的所述副本的所述填充的存储器一致性的传播已确认,在步骤308中从处理器芯片201的缓存器248中移除相应存储器线的指示符(如果存在的话)。所述一致性传播字段包括指示不需要关于缓存器248的动作,没有执行动作310的信息。

基于处理器芯片201的指令执行单元246执行存储器屏障指令,屏障请求被发送到缓存器248,检查所述缓存器248是否包括指示存储器线的任何指示符,所述指示符指示在一致性共享存储器系统200上具有一致性传播的存储器线尚未确认。如果缓存器248包括任何指示符,则在步骤300中,等待直到缓存器248为空。只要缓存器248不为空,就阻止完成屏障指令的执行。在确定缓存器248为空的情况下,屏障应答被发送到指令执行单元246,以通知指令执行单元246缓存器248为空。一旦缓存器248为空,指令执行单元246就完成屏障指令的执行。

图7示出了一致性共享存储系统200的示例性一致性目录210。一致性共享存储系统200包括多个处理器高速缓存存储器204、244,它们经由互连结构204与共享存储器214通信地连接。共享存储器214可以包括多个存储器集线器270、280。在高速缓存未命中的情况下,来自处理器高速缓存存储器204、244的请求经由互连结构206被发送到一致性目录210。一致性目录210包括目录控制器272其控制一致性目录210。一致性目录210可以进一步包括目录表274。目录表274可以包括多个条目,每个条目具有一条存储器线。换句话说,目录表274的每个条目都可以分配给一个存储器线,一个或多个处理器高速缓存存储器204、244使用其副本。条目可以包括地址标签,其中带有相应条目所分配到的存储器线的存储地址、状态信息、访问类型信息和ID信息。所述状态信息可以指示处理器高速缓存存储器204、244中的存储器线的副本的状态是否稳定,即T=0,或者当前是否正在进行改变以使得所述状态是瞬时的,即T=1。在稳定状态下,目前没有任何变化。所述条目还可以标识处理器高速缓存存储器204、244对存储器线的访问类型,例如共享读取访问或排他写入访问。此外,当前正在使用存储器线的副本的处理器高速缓存存储器204、244可以由ID信息来标识,例如,所述ID信息可以包括与要识别的处理器高速缓存存储器204、244可操作地连接的处理器的标识符和/或各个处理器高速缓存存储器204、244本身的标识符。

在所述处理器高速缓存存储器204、244中的所述存储器线的所述副本的状态是瞬态的情况下,即为了通过处理器高速缓存存储器204、244建立一致性而当前正在改变所述存储器线的所述副本,所述目录表条目可以包括指向瞬态表276中的条目的指针。例如,在处理器高速缓存存储器204、244之一请求存储器线的排他性写副本的情况下,其他处理器高速缓存存储器204、244使用的共享的读取副本必须b被无效。一致性目录210可以包括瞬态表276,以便跟踪关于各个存储器线的跨所述共享存储系统的一致性传播。如果存储器线的副本处于瞬态,可以为瞬态表276中的相应存储器线生成一个条目。瞬态表276可以包括多个条目,每个条目具有一个存储器线。换句话说,可以将瞬态表276的每个条目分配给一个存储器线,其中一个或多个处理器高速缓存存储器204、244使用瞬态副本。瞬态表276的条目可以标识所有当前正在使用相应存储器线的副本的处理器高速缓存存储器204、244。对于这些处理器高速缓存存储器204、244中的每一个,所述条目可以跟踪由相应的处理器高速缓存存储器204、244使用的存储器线的副本的最新状态,例如共享读、排他写入或无效。此外,所述条目可以跟踪从各个处理器高速缓存存储器204、244接收的请求和由一致性目录发送到相应处理器高速缓存存储器204、244的未完成请求,即需要答复的请求。最后,对于这些处理器高速缓存存储器204、244中的每一个,瞬态表条目可以包括指示符,所述指示符指示一旦确认了存储器一致性在共享存储系统上的传播,是否必须通知各个处理器高速缓存存储器204、244。通过一致性目录210获得关于存储器线的信息。瞬态表276可以伴随有位向量278,所述位向量278指示所述瞬态表的哪些条目当前是空闲的,哪些当前用于跟踪一致性的传播。一条存储器线。需要答复的请求。最后,对于这些处理器高速缓存存储器204、244中的每一个,瞬态表条目可以包括指示符,所述指示符指示一旦确认了存储器一致性在共享存储系统上的传播,是否必须通知各个处理器高速缓存存储器204、244。通过一致性目录210获得关于存储器线的信息。瞬态表276可以伴随有位向量278,所述位向量指示所述瞬态表中的哪些条目当前是空闲的以及哪些当前用于跟踪存储器线一致性的传播。

在从所述处理器高速缓存存储器204、244之一接收到对存储器线的复制的请求时,一致性目录210的目录控制器272可以使用目录表274确定其余处理器的高速缓存存储器204、244之一是否包括所请求的存储器线的有效副本。在其余的处理器高速缓存存储器204、244之一包括所请求的存储器线的有效副本的情况下,目录控制器272可以将所述请求转发到相应的处理器高速缓存存储器204、244,以便检索所请求的存储器线的副本。如果其余的处理器高速缓存存储器204、244都不包含所请求的存储器线的有效副本,

图8示出了用于管理实现共享存储器系统的一致性的一致性目录210的示例性方法。在步骤400中,一致性目录210经由互连结构206从共享存储系统的处理器高速缓存存储器(例如,C0)接收消息。所述消息可以与存储器线L有关。例如,所述消息可以是存储器线L。一致性目录210的目录控制器272可以在步骤402中检查是否存在向处理器高速缓存存储器C0发送消息M的需求,例如响应于所接收的消息。例如,DC可能需要以包含请求的存储器线L的回复的形式发送消息M到处理器高速缓存存储器C0。如果不需要发送消息M,目录控制器272可以根据其内容继续处理接收到的消息。在需要发送消息M的情况下,所述方法可以继续步骤404。在步骤404中,目录控制器272检查瞬态表276是否包括用于存储器线L的瞬态条目。为此,目录控制器272可以首先检查目录表274。如果目录表274具有用于存储器线L的条目,则目录控制器272可以检查目录表274的各个条目是否包括指向分配给存储器线L的条目瞬态表276的指针。276不包含用于存储器线L的瞬态条目,所述方法可以继续执行步骤410。在步骤410中,可以将标记信息添加到消息M,以指示关于存储器线L的共享存储系统上的存储器一致性的传播已被确认,即,Prop=是。由于共享存储系统不包括存储器线L副本的瞬态,因此存储器线L的存储器一致性是稳定的,并且不需要传播。在步骤416中,消息M经由互连结构206被发送到处理器高速缓存存储器C0。在步骤418中,处理器高速缓存存储器C0从一致性目录210接收消息M。

如果在步骤404中确定瞬态表276包括针对存储器线L的瞬态条目,则所述方法可以继续至步骤406。针对存储器线L的瞬态条目意味着关于存储器线L的一致性必须在存储器线L上跨所述共享存储器系统传播。在步骤406中,使用瞬态表276检查是否存在要由共享存储系统的一个或多个处理器高速缓存存储器执行的动作以建立一致性。例如,可以预期,为了建立一致性,必须使存储器线L的一个或多个有效副本无效。如果没有剩余的动作要执行,则所述方法可以在步骤408中继续。由于所述存储器线L处于瞬态,即尚未确认一致性,瞬态表276中的所述存储线L的瞬态条目中的处理器高速缓存存储器C0的一致性传播通知指示符可以指示:一旦一致性目录210的目录控制器272获得这样的确认,就必须向处理器高速缓存C0提供对一致性传播的确认。没有剩余动作指示所述一致性的传播已经成功完成,即,提供对传播的确认。在步骤408中,如果所述确认被告知所述处理器高速缓存存储器C0,则可以修改用于所述处理器高速缓存存储器C0的传播通知指示符,使得其指示不需要向所述处理器高速缓存存储器C0提供确认。在步骤410中将相应的确认添加到消息M。然后将消息M发送到处理器高速缓存存储器C0,如步骤416和418所示。

在步骤406的检查指示仍有动作要执行的情况下,所述方法可以继续步骤412。可以通过记录在所述存储器线L的瞬时条目中的未完成请求来指示要执行的这种动作,即识别请求还没有执行或确认。在步骤412中,确保瞬态表276中的所述存储器线L的瞬态条目中的处理器高速缓存存储器C0的一致性传播通知指示符指示必须尽快向所述处理器高速缓存存储器C0提供一致性的传播的确认。因为这样的确认是由一致性目录210的目录控制器272获得的。在步骤414中,可以将标记信息添加到消息M,以指示关于存储器线L跨共享存储系统的存储器一致性的传播尚未确定,即,Prop=否。然后,如步骤416和418所示,将消息M发送到处理器高速缓存存储器C0。

图9示出了用于使用与图8中所示的相同的基础结构来管理实现共享存储器系统一致性的一致性目录210的示例性方法。在步骤500中,一致性目录210经由互连结构206从共享存储系统的处理器高速缓存存储器(例如,C0)接受消息。所述消息可以与存储线L有关。例如,所述消息可以是对存储线L的副本的请求。在步骤502中,一致性目录210的目录控制器272检查所述目录控制器272是否使用目录表274和瞬态表276更新了所述瞬态表276中存储器线L的瞬态条目。如果目录控制器272确定在暂态表276中没有存储器线L的瞬态条目的更新,目录控制器272根据其内容继续处理接收到的消息。如果目录控制器272已经更新了瞬态表276中的存储器线L的瞬态条目,则所述方法可以继续步骤504。在步骤504中,为了建立一致性使用瞬态表276检查共享存储系统的处理器高速缓存存储器的存储区中的一个或多个是否存在一个或多个要执行的动作。例如,检查是否根据所述存储器线L的瞬态条目,期望得到一个应答,所述应答确认所述共享存储系统的所述处理器高速缓存存储器之一使用的存储线L的副本无效。如果目录控制器272确定期望执行用于建立一致性的动作,目录控制器272可以根据其内容,例如根据图8的方法,继续处理所接收的消息。如果目录控制器272确定没有期望执行任何用于建立一致性的动作,则所述方法可以继续步骤506。在步骤506中,目录控制器272检查所述存储器线L的瞬态条目是否包括一致性传播通知指示符,所述指示符用于标识所述共享存储系统的任何处理器高速缓存存储器CX,X∈{0,1,...,N},以确认在有关存储器线L的共享存储系统上的一致性传播时被通知的情况。在目录控制器272确定一个或多个处理器高速缓存存储器CX的情况下,则消息以步骤508中命令“D2Ccmd.Propagated(addr A,Prop=是)”的形式发送到每个处理器高速缓存存储器CX以指示已确认关于具有存储器地址A的存储器线L跨共享存储系统的一致性传播,即,Prop=是。在步骤512中,所述消息由处理器高速缓存存储器CX接收。在步骤510中,改变用于所通知的处理器高速缓存存储器CX的一致性传播通知指示符,使得所述指示符不再指示对处理器高速缓存存储器CX的信息要求。

图10A和10B示出了示例性方法,所述方法用于通过一致性共享存储器系统的处理器使用屏障指令来协调指令序列的执行。共享存储器系统的一致性可以使用一致性目录来实现。共享存储系统的处理器,即P0,可以执行指令序列的指令。指令的执行可以包括写入具有存储器地址A的存储器线,即,将具有存储器地址A的存储器线的修改后的副本填充到P0的处理器高速缓存存储器。指令序列所包含的存储器屏障指令由P0执行。直到完成并确认关于具有存储器地址A的存储器线的修改后的副本在整个共享存储系统上的存储器一致性的传播之前,阻止存储器屏障指令的执行完成。例如,P0写入的影响必须传播到共享存储系统的另一个处理器,例如P1。最初,没有任何处理器高速缓存可以保存地址为A的存储器线的副本。因此,具有一致性目录的存储集线器上的目录表可能不包含引用存储器线存储器地址A的条目。

在步骤600中,处理器P1可以执行读指令“load A”,它会丢失P1的本地处理器高速缓存C1。因此,C1向一致性目录发出请求,例如C2Dreq.I2S(Addr=A,Prop=NA),所述请求包含指示不需要对P1的未传播缓存区UB1采取任何操作(NA)的信息。请求C2Dreq.I2S(Addr=A,Prop=NA)是从处理器高速缓存(C)发送到一致性目录(D)的请求(req)以请求地址为A的存储器线的共享读取副本(S)。在步骤602中,一致性目录的目录控制器,即DC,接收请求C2Dreq.I2S(Addr=A,道具=NA)。DC在一致性目录的目录表(即DT)中找不到存储器地址A的条目。因此,DC在DT中建立类型稳定的新条目,即T=0,在共享类型中读取类型,即W=0。DT中的结果条目可以采用[Addr=A,T=0,W=0,在ID字段中设置了P1]。DC使用存储器控制器从主存储器中获取请求的数据,即地址为A的存储器线的副本。在步骤604中,DC将答复D2Creply.I2S(Addr=A,data,Prop=是)发送给P1。在步骤606中,P1接收答复D2Creply.I2S(Addr=A,data,Prop=是),所述答复从UB1中删除地址A(如果存在的话)。回复D2Creply.I2S(Addr=A,data,Prop=是)导致本地处理器高速缓存C1建立存储器线地址A的共享读取副本的条目,并通过填充接所述收到的所述存储器线地址A的所述共享读取副本进入C1来满足“load A”。

在步骤608中,假设在完成上述动作之后,P0执行指令“store A,value”,即将值写入地址为A的存储器线的指令,所述指令在P0的C0中丢失。因此,C0发出对P0的未传播缓存区UB0没有任何操作(NA)的请求C2Dreq.I2E(Addr=A,Prop=NA),并将所述请求发送到所述一致性目录。在步骤610中,DC接收请求C2Dreq.I2E(Addr=A,Prop=NA),用于具有存储器地址A的存储器线的排他性写副本。对于具有存储器地址A的存储器线,DC在DT中找到上述建立的稳定点。,共享读取的条目[Addr=A.T=0.W=0.在ID字段中设置了P1]。在步骤612,DC发送请求D2Creq.S2I(为了使P1使C1中具有存储器地址A的存储器线的共享读取副本无效,将地址Addr=A,Prop=是)。此外,DC选择瞬态表中任何未使用的条目(即TT),例如将其索引标记为TTindexA。DC将DT条目更改为瞬态类型,即T=1,从而导致条目[Addr=A.T=1.指针=TTindexA.]。此外,DC将TTindexA上的TT条目设置为[P0(E,-,-,是).P1(S,-,S2I,否).P2(I,-,-,否)],以便根据语法(LATEST-STATE,RECEIVED-REQUEST,SENT-REQUEST,PropNotify?)对瞬态进行编码为每个处理器缓存。TT条目指示P0的C0包括互斥写副本,并且必须在完成对互斥写副本填充到C0时跨共享存储系统的存储器一致性传播的确认后,才能通知P0的C0。P1包含共享的读取副本,但是一致性目录等待发送给P1的C1的无效请求的执行确认。相对于将专用写副本填充到C0,不需要将一致性的传播通知给P1的C1。最后,共享存储系统的另一处理器P2的处理器高速缓存存储器C2包括具有地址A的存储器线的无效副本,并且不必被告知一致性的传播。DC使用存储器控制器来获取请求的数据,即主存储器中地址为A的存储器线的副本。在步骤614,DC发送答复D2Creply.I2E(Addr=A,data,Prop=否)到处理器P0。对P0的答复包括Prop=否,而对P0的瞬态条目包括PropNotify=是,因为具有地址A的存储器线的瞬态条目标识了除P0以外的至少一个处理器,即P1,具有未完成的SENT-REQUEST。在这种情况下,P1包括SENT-REQUEST=S2I。

在步骤616中,P1接收请求D2Creq.S2I(Addr=A,Prop=是),所述请求从UB1中删除地址A(如果存在)。请求D2Creq.S2I(A,Prop=是)进一步使处理器高速缓存C1使地址为A的存储器线的共享读取副本无效。在步骤618中,P1发出并发送回复C2Dreply.S2I(Addr=A,Prop=NA)到一致性目录,以确认具有地址A的存储器线的共享读取副本无效。所述答复指示不需要对UB1采取任何操作,即NA。

在步骤620中,P0接收答复D2Creply.I2E(Addr=A,数据,Prop=否),其将具有地址A的存储器线的排他性写入副本添加到UB0。

ReplyD2Creply.I2E(Addr=A,data,Prop=否)使C0建立具有地址A的存储器线的专用写入副本的条目,并将相应的存储器线填充到C0。此外,通过将相应的值存储在具有地址A的存储器线的副本中来执行指令“store A,value”。一方面是继续步骤612、616和618,另一方面是继续步骤614和620,两者同时发生或以任何顺序发生。

在步骤622中,目录控制器DC从处理器P1接收答复C2Dreply.S2I(Addr=A,Prop=NA)。对于存储器地址A,DC在DT中找到瞬态类型的条目,即T=1,[Addr=A.T=1.Pointer=TTindexA,其具有一个TT条目[P0(E,-,-,是)的指针。P1(S,-,S2I,否)。P2(I,-,-,否)]。回复C2Dreply.S2I(地址来自处理器P1的=A,Prop=NA)使DC更新TT条目中的P1值。更新的TT条目变为[P0(E,-,-,是)。P1(I,-,-,否)。P2(I,-,-,否)]。更新的TT条目不包括对共享存储系统的任何处理器的未完成的SENT-REQUEST,从而确认了一致性在共享存储系统上的传播。此外,更新的TT条目包括值P0(E,-,-,是),当确认一致性的传播时,所述值请求P0的通知。

在步骤624中,DC将命令D2Ccmd.Propagated(Addr=A,Prop=是)发送到处理器P0。此外,DC清除PropNotify的P0,即将TT条目设置为[P0(E,-,-,否)。P1(I,-,-,否)。P2(I,-,-,否)]。所述TT条目不描述任何瞬态,因为对共享存储系统的任何处理器都没有未完成的SENT-REQUEST。换句话说,各个TT条目描述了稳定状态。因此,DC将地址地址为A的存储器线的DT中的条目设置为类型稳定,即T=0,类型为异写,即W=1。产生的DT条目为[Addr=A。T=0。W=1。在ID字段中设置了P0]。最后,DC用TTindexA清除TT输入并返回TTindexA到瞬态表中未使用的条目278。

在步骤626,P0执行存储器屏障指令。存储器屏障指令可以例如要求由指令序列之前发出的所有写指令都完整。在UB0为空之前,将禁止完成存储器屏障指令。由于P0尚未从一致性目录接收D2Ccmd.Propagated(Addr=A,Prop=是),因此UB0仍包含地址A,并且阻止了存储器屏障指令的执行。在步骤628,C0接收答复D2Ccmd.Propagated(Addr=A,Prop=是),其从UB0中去除地址A。因此,在步骤628中,P0上的UB0为空,并且存储器屏障指令完成。在步骤630,继续在P0上执行指令序列。

示例性目录到高速缓存(D2C)消息可以例如包括请求“D2Creq()”,答复“D2Creply()”和命令“D2Ccmd()”。请求D2Creq()需要随后的应答C2Dreply()。答复D2Creply()响应发送到在先请求C2Dreq()。命令D2Ccmd()没有后续答复。

示例性的高速缓存到目录(C2D)消息可以例如包括请求“C2Dreq()”,答复“C2Dreply()”和命令“C2Dcmd()”。请求C2Dreq()需要随后的应答C2Dreply()。答复C2Dreply()是响应发送到在先请求C2Dreq()。命令C2Dcmd()没有后续答复。

当处理器设备发送或接收存储器访问类型的消息,即与将存储器线填充到处理器高速缓存有关的消息时,处理器设备的一致性传播检查单元可以检查存储器访问类型的一致性传播通知字段。消息,以确定是否需要对处理器设备的未传播缓存区执行操作,以及需要执行哪些操作。存储器访问类型的消息还可以包括与处理器高速缓存存储器中的存储器线的无效有关的消息。存储器访问类型消息中的一致性传播通知字段的可能值可以包括:“Prop=是”使相应消息中的存储器线的存储器地址从未传播的缓存区(如果存在)中删除。Prop=否”使相应消息中存储器线的存储地址添加到未传播的缓存区中。“Prop=NA”对未传播的缓存区不执行任何操作。

在下表中,提供了示例性的目录到缓存(D2C)请求:

在下表中,提供了示例性的目录到缓存(D2C)答复:

在下表中,提供了示例性的目录到高速缓存(D2C)命令:

信息 prop值 评论
D2Ccmd.Propagated(addr,prop)

在下表中,提供了示例性的缓存到目录(C2D)请求:

Figure BDA0002689576950000362

在下表中,提供了示例性的缓存到目录(C2D)答复:

Figure BDA0002689576950000371

在下表中,提供了示例性的高速缓存到目录(C2D)命令:

Figure BDA0002689576950000372

图11示出了以包括多个处理器芯片201的多处理器服务器200的形式的多处理器计算机系统的形式的示例性一致性共享存储器架构。多处理器服务器200包括一组存储器集线器芯片203。处理器芯片201可以设置有多个端口224。根据一个实施例,每个处理器芯片201提供的端口224的数量可以等于存储器集线器芯片203的数量。每个处理器芯片201都提供有本地高速缓存存储器204,用于缓存存储器线,即由处理器芯片201处理的存储器线。服务器200的处理器芯片201可以配置相同或可以不相同。应用程序软件可以在一个或多个处理器芯片201上执行,因此给定的应用程序可以隐式或显式地利用相似的或不同的处理器芯片201并从中受益。

每个存储器集线器芯片203可以被提供有多个本地存储器模块234,例如,包括一系列动态随机存取存储器集成电路的双列直插式存储器模块(DIMM)。因此,每个存储器集线器芯片203实现了存储器集线器设备。此外,每个存储器集线器芯片203可以包括多个端口222。例如,每个存储器集线器芯片203的端口222的数量可以等于处理器芯片201的数量。另外,对于存储在存储器模块中的存储器线在各个存储器集线器芯片203本地的236中,每个存储器集线器芯片203可以包括一致性目录210,用于为一个或多个处理器芯片201的高速缓存存储器204中存储的存储器线实现基于目录的一致性。服务器200的芯片203,所有存储集线器芯片20可以被相同或相似地配置,每个存储集线器芯片203执行类似的功能。应用程序软件可以在一个或多个处理器芯片201上执行,因此给定应用程序的性能通常受益于由许多相似的存储集线器芯片203提供服务的存储器,每个特定的存储地址由单个预定义的存储集线器芯片203提供服务。

每个处理器芯片201可以例如经由双向点对点通信连接230,例如串行通信连接,与每个存储器集线器芯片203通信地耦合。因此,可以向每个处理器芯片201提供对在存储器集线器芯片203之一本地的每个存储器模块234的存储器访问。可以基于统一存储器访问(UMA)架构来提供对存储器模块236的访问。给定的存储器线,即存储器线,可以存储在同一存储器集线器芯片203本地的作为后备存储器即主存储器的一个或多个存储器模块236上。包括例如多条存储器线的给定存储器页面可以是跨所有存储器集线器芯片203的存储器模块236交错。

计算机系统可以例如包括16个处理器芯片201和128个存储器集线器芯片203。在这种情况下,每个处理器芯片201可以包括128个端口224,以便通信地耦合到每个存储器集线器芯片203。可以,每个存储器集线器芯片203可以设置有16个端口222,使得每个存储器集线器芯片203可以经由不同的点对点通信连接230通信地耦合到每个处理器芯片201。

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

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

所述计算机可读存储介质可以是有形设备,所述有形设备可以保留和存储供指令执行设备使用的指令。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何适当组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘、机械编码的设备,例如打孔卡或凹槽中的凸起结构,上面记录了指令,以及上述内容的任何适当组合。如本文所使用的,计算机可读存储介质不应被理解为本身是瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导传播的电磁波或其他传输介质(例如,穿过的光脉冲光纤电缆)或通过电线传输的电信号。

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

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

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

可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器,以产生机器,从而使得所述指令经由计算机的处理器或其他可编程数据执行。处理设备,创建用于实现流程图和/或框图方框中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,所述介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式起作用。

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

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。就这一点而言,流程图或框图中的每个方框可以表示指令的模块、片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。

上述特征的可能组合可以如下:

1.一种用于协调由一致性共享存储器系统的处理器设备执行的包括多个指令的指令序列的方法,其中,所述处理器设备与处理器高速缓存存储器可操作地连接,所述方法包括:

由所述处理器设备执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的第一标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的第二标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,所述处理器设备阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行。

2.根据权利要求1所述的方法,其中直到所述处理器设备先前标记的所有存储器线都被清除标记为止,阻止完成所述存储器屏障指令的执行。

3.根据权利要求1所述的方法,其中,对所述存储器线的所述标记包括将所述存储器线的标识符添加到所述处理器设备的缓存器,并且其中对所述已标记的存储器线的所述清除标记包括从所述处理器的所述缓存器中移除所述存储器线的标识符。

4.根据权利要求3所述的方法,其中存储在所述缓存器中的所述已标记存储器线的所述标识符包括所述主存储器中的所述各个存储器线的存储地址。

5.根据权利要求3所述的方法,其中阻止所述存储器屏障指令的执行的完成直到所述处理器设备的所述缓存器为空。

6.根据权利要求1所述的方法,其中,所述共享存储器系统的所述存储器一致性是使用一致性目录来实现的。

7.根据权利要求6所述的方法,其特征在于,所述第一和所述第二标志信息中的至少一个由所述处理器设备从所述一致性目录接收的消息来提供。

8.根据权利要求6所述的方法,其特征在于,所述第一和所述第二标志信息中的至少一个由所述处理器设备发送到所述一致性目录的消息来提供。

9.根据权利要求1所述的方法,其中,使用广播来实现所述共享存储系统的存储器一致性。

10.根据权利要求1所述的方法,其特征在于,使所述处理器设备将所述存储器线的副本填充到所述处理器高速缓存存储器的指令是指定对所述各个存储器线的写访问的指令。

11.根据权利要求1所述的方法,其中,跨所述共享存储器系统的所述存储器一致性传播包括:使由所述共享存储器系统的其他处理器设备的远程处理器高速缓存存储器使用的所述存储器线的其他副本无效。

12.根据权利要求1所述的方法,其中,与所述处理器高速缓存存储器的内容的修改有关并且由所述处理器设备处理的消息包括一致性传播字段,其中,所述一致性传播字段包括以下之一:指示关于所述修改的跨所述共享存储系统的存储器一致性传播未被确认的标记信息;指示关于所述修改的跨所述共享存储器系统的存储器一致性的传播已被确认的标志信息,或指示既不需要标记操作又不需要清除标记操作的标志信息。

13.一种一致性共享存储器系统的处理器设备,其中,所述处理器设备与处理器高速缓存存储器可操作地连接,并且被配置为协调包括多个指令的指令序列的执行,所述协调包括:

执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行。

14.根据权利要求13所述的处理器装置,其中直到所述处理器设备先前标记的所有存储器线都被清除标记为止,阻止完成所述存储器屏障指令的执行。

15.根据权利要求13所述的处理器设备,其中所述处理器设备包括用于注册存储器线的缓存器,所述存储器线的副本被填充到所述处理器高速缓存存储器,并且针对所述存储器线的关于所述各个副本的所述填充的跨所述共享存储器系统的存储器一致性传播未被确认,其中所述存储器线的所述标记包括将所述存储器线的标识符添加到所述处理器设备的所述缓存器,并且其中所述已标记的存储器线的所述清除标记包括从所述处理器的所述缓存器中删除所述存储器线的所述标识符。

16.根据权利要求15所述的处理器装置,其中存储在所述缓存器中的所述已标记存储器线的所述标识符包括所述主存储器中的所述各个存储器线的存储地址。

17.根据权利要求15所述的处理器装置,其中阻止所述存储器屏障指令的执行的完成直到所述处理器设备的所述缓存器为空。

18.一种用于管理实现共享存储器系统的存储器一致性的一致性目录的方法,所述方法包括:

通过所述一致性目录维护分配给所述共享存储系统的主存储器的存储器线的标志信息,其中所述共享存储系统的处理器设备已启动将所述存储器线的副本填充到与所述处理器设备可操作地连接的处理器高速缓存存储器,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播是否已确定;

将所述标志信息包括在消息中由所述一致性目录发送给所述处理器设备;

通过所述一致性目录将所述消息发送到所述处理器设备。

19.根据权利要求18所述的方法,其中基于确定需要对所述共享存储系统的另一处理器设备的远程处理器高速缓存存储器的所述内容进行修改以便传播关于将所述存储器线的所述副本填充到所述远程高速缓存存储器的存储器一致性,所述一致性目录启动对分配给所述存储器线的所述标志信息的所述维护。

20.根据权利要求19所述的方法,其中,所述一致性目录向所述远程处理器高速缓存存储器发送请求以请求修改所述远程处理器高速缓存存储器的内容,用以传播所述存储器一致性,所述存储器一致性关于所述存储器线的所述副本到所述远程处理器高速缓存存储器的所述填充。

21.根据权利要求20所述的方法,其中由所述一致性目录请求的所述修改包括使所述远程处理器高速缓存存储器所包括的所述存储器线的另一副本无效。

22.根据权利要求19所述的方法,其中,基于关于所述存储线的所述副本的所述填充的跨所述共享存储系统的所述存储一致性的所述传播,一致性目录包括用于保持跟踪所述共享存储系统的所述其他处理器设备的所述处理器高速缓存的所述内容修订的寄存器。

23.根据权利要求22所述的方法,其中当关于所述存储线的所述副本的所述填充的跨所述共享存储系统的存储一致性传播被确认时,所述寄存器包括一致性传播通知指示符,所述一致性指示符标识所述共享存储器系统的处理器设备的处理器高速缓存存储器,所述高速缓存存储器将由所述一致性目录通知。

24.实现共享存储器系统的存储器一致性的一致性目录,所述一致性目录被配置为:

维护分配给所述共享存储系统的主存储器的存储器线的标志信息,其中所述共享存储系统的处理器设备已启动将所述存储器线的副本填充到与所述处理器设备可操作地连接的处理器高速缓存存储器,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播是否已确定;

将所述标志信息包括在消息中;

将所述消息发送到所述处理器设备。

25.一种一致性共享存储器系统,其包括实现所述共享存储系统的存储器一致性的一致性目录、主存储器以及与处理器高速缓存存储器可操作地连接的处理器设备,所述处理器设备被配置为协调包括多个指令的指令序列的执行,所述协调包括:

执行指令序列的指令,其中所述指令的执行使所述处理器设备将所述共享存储系统的主存储器的存储器线的副本填充到所述处理器高速缓存存储器;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息未被确认,由所述处理器设备标记所述各个存储器线;

基于检测到指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的存储器一致性传播的标志信息被确认,由所述处理器设备对所述各个存储器线清除标记;

基于执行所述指令序列的存储器屏障指令,阻止在标记所述存储器线的同时完成所述存储器屏障指令的执行;

以及所述一致性目录被配置为基于启动所述存储器线的所述副本的所述填充维护分配给所述主存储器的所述存储器线的所述标志信息,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播是否已确定,其中所述维护包括:

首先包括标志信息,所述标志信息指示关于所述存储器线的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性的传播未被确认为第一消息;

发送所述第一消息给所述处理器设备;

基于所述传播获得确认后,更新所述标志信息并包括所述更新的标志信息,所述更新的标志信息指示关于所述存储消息的所述副本的所述填充的跨所述共享存储系统的所述存储器一致性传播被确认为第二消息;

向所述处理器设备发送所述第二消息。

42页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器管理系统、存储器管理方法以及信息处理设备

相关技术

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类