用于处理写入操作的装置和方法

文档序号:1327714 发布日期:2020-07-14 浏览:7次 >En<

阅读说明:本技术 用于处理写入操作的装置和方法 (Apparatus and method for processing write operation ) 是由 安德鲁·克里斯托弗·罗斯 理查德·罗伊·格里森思怀特 阿里·格哈森·赛迪 于 2018-11-28 设计创作,主要内容包括:提供了一种用于处理写入操作的装置和方法。该装置具有第一处理设备,该第一处理设备用于执行指令的序列,其中,该序列包括至少一个指令以及至少一个写入指令,该至少一个指令用于激活软件协议以建立用于将数据写入到第一存储器区域的所有权权限,该至少一个写入指令在建立所有权权限之后执行,以便执行一个或多个写入操作来输出写入数据以存储在第一存储器区域中的至少一个存储器位置中。与第一处理设备相关联的回写缓存用于存储在一个或多个写入操作期间输出的写入数据。一致性电路耦合到回写缓存以及至少一个另外的缓存,该至少一个另外的缓存与至少一个另外的处理设备相关联。第一处理设备响应于触发事件而启动清除操作,以便使得写入数据从回写缓存写入到存储器。此外,一致性电路响应于清除操作而与至少一个另外的缓存交互以实现硬件协议,以便使写入数据对至少一个另外的处理设备可见。这可以提供用于在某些系统中实现缓存一致性的非常高效且高性价比的机制。(An apparatus and method for processing a write operation are provided. The apparatus has a first processing device to execute a sequence of instructions, wherein the sequence includes at least one instruction to activate a software protocol to establish ownership rights for writing data to a first memory region and at least one write instruction to execute after establishing the ownership rights to perform one or more write operations to output the write data for storage in at least one memory location in the first memory region. A write-back cache associated with the first processing device is to store write data output during one or more write operations. The coherency circuit is coupled to the write-back cache and to at least one further cache associated with at least one further processing device. The first processing device initiates a flush operation in response to a triggering event to cause write data to be written from the write-back cache to the memory. Further, the coherency circuit interacts with the at least one further cache to implement a hardware protocol in response to the flush operation in order to make the write data visible to the at least one further processing device. This may provide a very efficient and cost-effective mechanism for achieving cache coherency in some systems.)

用于处理写入操作的装置和方法

技术领域

本技术涉及用于处理写入操作的装置和方法。

背景技术

数据处理系统通常包括多个处理设备,该多个处理设备可以对数据执行数据处理操作,并且这些各种处理设备可以被布置为能够访问存储器中的共享数据。通常,处理设备将包括一级或多级本地缓存,在该一级或多级本地缓存中可以缓存由这些处理设备操纵的数据,以允许比每次需要从存储器中取出数据的可能情况更快地访问该数据。

然而,本地缓存的存在可能引起一致性问题,其中当最新版本被缓存在一个处理设备的本地缓存中时,另一处理设备有可能访问过时的数据。

虽然已经针对这种情况开发了硬件缓存一致性机制,但是这些机制在硬件面积和/或执行时间方面实现起来可能相对昂贵。

发明内容

在第一示例配置中,提供了一种装置,包括:第一处理设备,该第一处理设备用于执行指令的序列,该序列包括至少一个指令以及至少一个写入指令,该至少一个指令用于激活软件协议以建立用于将数据写入到第一存储器区域的所有权权限,该至少一个写入指令在建立所有权权限之后执行,以便执行一个或多个写入操作来输出写入数据以存储在第一存储器区域中的至少一个存储器位置中;回写缓存,该回写缓存与第一处理设备相关联并且被布置为存储在一个或多个写入操作期间输出的写入数据;以及一致性电路,该一致性电路耦合到回写缓存以及至少一个另外的缓存,该至少一个另外的缓存与至少一个另外的处理设备相关联;其中:第一处理设备响应于触发事件而启动清除操作,以便使得写入数据从回写缓存写入到存储器;并且一致性电路响应于清除操作而与至少一个另外的缓存进行交互以实现硬件协议,以便使得写入数据对至少一个另外的处理设备可见。

在另一示例配置中,提供了一种在装置中处理写入操作的方法,该装置具有第一处理设备、与第一处理设备相关联的回写缓存、以及一致性电路,一致性电路耦合到回写缓存以及与至少一个另外的处理设备相关联的至少一个另外的缓存,该方法包括:在第一处理设备上执行至少一个指令以及至少一个写入指令,该至少一个指令用于激活软件协议来建立用于将数据写入到第一存储器区域的所有权权限,该至少一个写入指令在建立所有权权限之后执行,以便执行一个或多个写入操作来输出写入数据以存储在第一存储器区域中的至少一个存储器位置中;在回写缓存中存储在一个或多个写入操作期间输出的写入数据;响应于触发事件,使得第一处理设备启动清除操作,以便使得写入数据从回写缓存写入到存储器;以及响应于清除操作,使得一致性电路与至少一个另外的缓存进行交互以实现硬件协议,以便使得写入数据对至少一个另外的处理设备可见。

在又一示例配置中,提供了一种装置,包括:第一处理组件,该第一处理组件用于执行指令的序列,该序列包括至少一个指令以及至少一个写入指令,该至少一个指令用于激活软件协议以建立用于将数据写入到第一存储器区域的所有权权限,该至少一个写入指令在建立所述所有权权限之后执行,以便执行一个或多个写入操作来输出写入数据以存储在第一存储器区域中的至少一个存储器位置中;回写缓存组件,该回写缓存组件与第一处理组件相关联,用于存储在一个或多个写入操作期间输出的写入数据;以及一致性组件,该一致性组件用于耦合到回写缓存组件以及至少一个另外的缓存,该至少一个另外的缓存与至少一个另外的处理设备相关联;其中:第一处理组件用于响应于触发事件而启动清除操作,以便使得写入数据从回写缓存组件写入到存储器;并且一致性组件用于响应于清除操作而与至少一个另外的缓存组件进行交互以实现硬件协议,以便使得写入数据对至少一个另外的处理组件可见。

附图说明

将参考如附图中所示的本技术的示例、仅通过说明的方式来进一步描述本技术,在附图中:

图1是其中可以实现本文描述的技术的示例系统的框图;

图2示出了可以由图1的一致性电路维护的目录的一个示例;

图3示出了可以在图1的系统的存储器中提供的锁定存储组件的一个示例;

图4A和图4B示出了当执行一个或多个写入操作时可以在处理设备中执行的过程的流程图;

图5是示出在一个示例布置中由一致性电路响应于由已经执行一个或多个写入操作的处理设备启动的清除操作而执行的步骤的流程图;

图6是示出如何使图1的系统所采用的一致性机制取决于要对其执行写入操作的存储器区域的流程图;

图7A至图7D示出了在示例布置中可以由处理设备之一执行的示例代码的序列;

图8示出了FIFO(先进先出)存储组件,该FIFO存储组件可以在一个示例布置中的一个或多个处理设备中提供,以跟踪需要被清除的写入操作;

图9示意性地示出了在一个示例布置中的回写缓存;以及

图10示出了在一个示例中数据处理设备可以执行的示例的指令的序列。

具体实施方式

在包括具有它们自己的本地缓存结构的多个处理设备的系统中,通常实现缓存一致性协议以便确保每个处理设备具有在处理设备之间共享的数据的相同视图。这种缓存一致性协议需要确保不同的处理设备不能以冲突的方式更新与存储器位置相关联的数据,而如果两个不同的处理设备被允许同时针对相同数据执行写入操作(这可以被称为“竞争写入”条件),则可能出现这种冲突。因此,当针对特定存储器地址处的数据需要写入操作时,则根据已知的硬件缓存一致性方案,希望执行写入操作的处理设备通知一致性电路,使得该一致性电路然后执行关于可以由其他处理设备保存的该数据的任何缓存的副本的任何必要的步骤,以便确保作出请求的处理设备然后可以执行写入操作,而没有其他处理设备中的任何处理设备针对该存储器地址执行冲突写入的风险。一致性电路还可以确保无论何时任何处理设备随后请求访问存储器地址,它都将获得数据的最新版本。

然而,在多个处理设备之间共享数据的一些系统中,发明人认识到,软件方案也可以就位,其可以有效地确保在任何时间点处仅一个处理设备具有写入到特定存储器位置的能力。仅作为示例,在机架级计算系统(其中数据的大数据库可以在各种处理设备之间共享)中,软件技术可用于控制在任何特定时间点处哪个处理设备能够写入到任何特定存储器位置。因此,发明人认识到,在这样的系统中,通常与缓存一致性机制相关联的一些功能将不再需要由一致性电路执行。

特别地,发明人观察到,由硬件一致性机制执行的功能实质上涉及用于建立处理设备的写入数据的权限的步骤,以及在执行写入操作之后采取的用于使更新后的写入数据对其他处理设备可见的其他步骤。在已经提供了软件机制以有效地控制哪个处理设备可以写入到任何特定存储器位置的系统中,发明人认识到,可以有效地维护缓存一致性,而不需要在硬件中完全实现缓存一致性协议。特别地,可以在软件中执行建立写入数据的权限所需的步骤,然后使用硬件机制来确保更新后的写入数据对其他处理设备可见。这可以导致与在系统内提供缓存一致性支持相关联的成本(在硬件面积和/或执行时间方面)的显著降低。

在一个示例布置中,可以提供一种装置,该装置包括第一处理设备,该第一处理设备被配置为执行指令的序列,其中该序列包括至少一个指令以及至少一个写入指令,该至少一个指令用于激活软件协议以建立用于将数据写入第一存储器区域的所有权权限,该至少一个写入指令在建立所有权权限之后执行,以便执行一个或多个写入操作以输出写入数据以存储在第一存储器区域中的至少一个存储器位置中。第一处理设备具有与该第一处理设备相关联的回写缓存,在一个或多个写入操作期间输出的写入数据被存储在该回写缓存中。此外,提供了耦合到回写缓存和与至少一个另外的处理设备相关联的至少一个另外的缓存的一致性电路。

通过使用软件协议,可以确保当第一处理设备被给予关于第一存储器区域的所有权权限时,没有其他处理设备将能够执行对该第一存储器区域的冲突的写入操作。然而,仍然需要确保使得由第一处理设备产生的写入数据对其他处理设备可见。

根据所描述的示例,这通过第一处理设备响应于触发事件而启动清除操作以便使得写入数据从回写缓存被写入到存储器来实现。从回写缓存到存储器的写入数据项的“清除”在这里应当理解为意味着存储在回写缓存中的该数据项的修改副本(即,这里所指的写入数据)被用于更新存储在存储器中的原始数据项。除了执行清除操作之外,一致性电路然后被布置为响应于清除操作而与至少一个另外的缓存进行交互,以便实现硬件协议,从而使写入数据对至少一个另外的处理设备可见。

根据这种方法,写入要在处理设备上执行的指令的软件程序员需要知道建立所有权权限所需的软件协议,并且尤其需要在由各种处理设备执行的指令的序列中包括适当的指令,使得当要针对第一存储器区域执行写入操作时,相关处理设备首先寻求使用软件协议来建立所有权权限。这意味着硬件一致性电路不需要考虑竞争写入的问题,因为软件负责避免这样的问题。然而,硬件协议然后可以由一致性电路实现以处理使写入数据对至少一个另外的处理设备可见的问题。由于一致性电路可以响应于通知清除操作而直接采取所需的步骤,因此在处理设备上执行的软件不必采取任何步骤来在执行写入操作之前清除由其他处理设备保存的数据的副本和/或使其无效,也不必采取步骤来在写入数据之后使其他处理设备上的副本无效。

作为结果,从软件的角度来看,所采用的方法远不及以软件方式实现整个缓存一致性协议的情况麻烦。此外,实现成本(在硬件面积和/或执行时间方面)比在硬件中实现完全的(full)缓存一致性协议的系统低得多,因为所需的硬件协议仅需要关注使写入数据对其他处理设备可见的问题,而写入权限的建立的责任被转移给软件。可以使由一致性电路实现的硬件协议对软件程序员完全透明,因为不需要将指令添加到在处理设备上执行的代码以便实现该功能,而是一致性电路完全在由清除操作触发的硬件中实现所需功能。

因此,根据上述技术,应当理解,该装置可以被布置为通过由第一处理设备触发的软件协议和由一致性电路实现的硬件协议的组合来实现针对第一存储器区域的缓存一致性协议。这可以提供用于实现缓存一致性的非常有效的机制,尤其是在已经利用适当的软件机制确保在某时仅一个处理设备可以写入到任何特定存储器位置的系统中。

一致性电路对清除操作进行响应的方式可以根据实现方式而变化。在一个示例中,一致性电路被布置为响应于清除操作,使至少一个另外的缓存使以下缓存条目无效:该缓存条目的内容与写入数据的至少一个存储器位置相关联。简单地使那些缓存条目无效就足够了,因为此时已知所讨论的(一个或多个)存储器位置的最新数据是在执行一个或多个写入操作期间由第一处理设备产生的数据。此外,清除操作将使得数据的最新版本被输出到存储器,并且因此在适当的时候,当至少一个另外的处理设备中的任何一个处理设备请求针对至少一个存储器位置的数据时,在其本地缓存中将存在未命中,并且将从存储器取回正确的数据。

虽然以上述方式使条目无效是最简单的方法,但是如果需要的话,可以更新以下缓存条目:该缓存条目的内容与写入数据的至少一个存储器位置相关联,以存储由第一处理设备产生的最新写入数据,而不是使条目无效。这将避免后续如果在某个未来的时间点需要该数据的话,必须从存储器重新请求数据。

一致性电路可以被布置为以各种方式操作。例如,一致性电路可以被布置为仅通过向与另外的处理设备相关联的所有缓存广播无效或更新请求来对清除操作进行响应,而不管那些缓存是否可能正在缓存受写入操作影响的数据的副本。然而,在替代实施例中,一致性电路可以被布置为执行更有针对性的操作。具体地,在一个示例中,至少一个另外的缓存包括多个缓存,并且一致性电路维护记录,该记录针对所述多个缓存中的每个缓存提供存储器位置的指示,其中,该存储器位置的数据被该缓存所缓存。一致性电路然后被布置为在确定与所述多个缓存中的哪些缓存进行交互以便使写入数据对至少一个另外的处理设备可见时,参考该记录。

在记录由一致性电路维护的这样一个示例中,一致性电路可以采取监听电路的形式。监听电路是已知类型的缓存一致性电路,其可以维护哪些存储器地址被系统中的各缓存所缓存的指示,并且使用该信息来将监听请求定向到特定缓存以便实现缓存一致性协议。然而,根据上述技术,至少对于第一存储器区域,不需要监听电路来实现完全的缓存一致性协议,因为建立写入数据的权限的方面被改为转移到软件协议。

存在多种方式可以在装置中实现软件协议。在一个示例中,该装置还包括锁定存储组件,该锁定存储组件用于维护针对多个存储器区域的锁定指示,并且软件协议被布置为当由第一处理设备激活时,确定针对第一存储器区域的锁定指示是否清零。在锁定指示清零的情况下,软件协议然后使得针对第一存储器区域置位锁定指示,并且向第一处理设备标识第一处理设备具有针对第一存储器区域的所有权权限。

因此,针对每个存储器区域的锁定指示可以被视为作为单独变量被保存的指示的形式,该单独变量可以被设置为指示相关联的存储器区域何时处于被更新的过程中。

取决于实现方式,由锁定存储组件跟踪的每个存储器区域可以包括单独的存储器地址或一系列存储器地址。每个存储器位置由存储器地址标识,并且因此在由锁定存储组件跟踪的每个存储器区域中可以存在一个或多个存储器位置。

在一个示例布置中,在从一致性电路通知已使得写入数据对至少一个另外的处理设备可见之后,第一处理设备被布置为释放所有权权限。因此,一旦第一处理设备被授予所有权权限,该第一处理设备将保留该所有权权限,直到可以确保由该第一处理设备生成的写入数据被保证对其他处理设备中的任何处理设备可见。应注意,在一些情况下,这并不意味着写入数据实际上已被写入到主存储器,只要其已达到系统内的一致点(例如,在数据被写入存储器之前临时存储该数据的缓冲存储组件),并且因此可保证当其他处理设备中的任何处理设备请求受影响的存储器位置处的数据时,这些处理设备将从一致点获得最新的写入数据(如果这些数据尚未被写入主存储器)。

用于由第一处理设备启动清除操作的触发事件可以采取多种形式。例如,触发事件可以由于第一处理设备执行指令的序列中的清除指令而发生,该清除指令的执行使得清除操作被执行。作为另一示例,如果针对包含写入数据的回写缓存中的条目而触发逐出事件(eviction event),则触发事件可以发生。这可能例如由于回写缓存中的容量问题而发生,并且具体地,需要选择受害者条目(victim entry)以便为要分配到缓存中的新数据腾出空间。例如,在第一处理设备执行清除指令以主动清除条目之前,这样的逐出事件可能将已由写入操作之一写入的该条目指定作为受害者条目。

清除指令可以采取多种形式。例如,在简单的情况下,可能存在与每个写入指令相关联的清除指令,使得一旦写入数据被写入到所需的存储器位置,则随后的清除指令标识该存储器位置。

然而,在替代布置中,单个清除指令可以被布置为触发清除回写缓存的多个条目,并且在这些情况下,装置还可以包括存储单元,该存储单元用于存储使得多个条目能够被标识的信息。例如,可以利用共同拥有的共同未决的申请号为15/501,278的美国专利申请中描述的技术,其中清除指令可以采取该专利申请中定义的结束指令的形式,这使得已经经受了写入操作的回写缓存中的多个所标识的条目随后被清除到主存储器。在上述共同未决案中讨论的示例中,存储器形成非易失性存储器,该非易失性存储器在系统中形成持久点,并且执行结束指令使得来自所标识的条目的写入数据被传播到持久点。然而,在本技术中,可以使用结束指令而不管存储器的形式如何,并且当与上述机制组合时,可以提供用于与由写入操作的序列产生的写入数据相关联地维护缓存一致性的非常高效的技术,其中软件协议确保没有其他处理设备可以在存储器区域中执行冲突的写入操作,并且硬件一致性电路然后响应于清除操作而使所有写入数据对至少一个另外的处理设备可见。

在一个示例布置中,存储单元可以被布置为存储由第一处理设备执行的写入操作的指示,清除指令可以是指令的序列中的结束指令,并且第一处理设备可以通过以下操作来对执行结束指令进行响应:使得作为每个下述写入操作的对象的写入数据从回写缓存被清除到存储器:针对该写入操作的指示被存储在存储单元中;以及清零被存储在存储单元中的写入操作的指示。

通过使用上述结束指令技术,在数据处理装置的程序员希望确保将发生针对存储器的特定排序的写入操作(由写入指令的执行启动)的情况下,这可以通过将结束指令添加到由程序员给出的指令的序列中以定义装置应当执行的数据处理操作来完成。

在一些示例布置中,第一处理设备还被布置为使得由第一处理设备执行的写入操作的指示被存储在存储单元中并且位于指令的序列中的开始指令之后。因此,可以将另外的指令添加到处理设备所响应的指令集合,这使得系统程序员能够封装写入操作的“写入集合”(开始指令位于其之前并且结束指令将其终结)。这样,能够按照回写缓存的操作而不是通过第一处理设备的操作(出于调度原因,第一处理设备可能改变执行特定指令的顺序)来确保在主存储器的内容中遵照程序员所期望的(该写入集合相对于其他写入操作的)写入顺序。

在一个示例布置中,第一处理设备可以被布置为仅当用于将数据写入第一存储器区域的所有权权限已经被建立,并且指定第一存储器区域中的存储器位置的未决写入指令之前是开始指令并且之后是结束指令时,才执行对第一存储器区域的写入操作。

虽然可以针对存储器中的所有存储器区域采用上述技术,但是在其他示例中,上述技术可以被限制于特定存储器区域,并且对于其他存储器区域,如果需要的话,可以实现完全的硬件缓存一致性方案。因此,在一个这样的布置中,对于至少一个另外的存储器区域,缓存一致性协议仅由一致性电路实现,并且第一处理设备被布置为通过由一致性电路执行的针对至少一个另外的缓存的步骤来获得对至少一个另外的存储器区域的独占写入访问。因此,对于至少一个另外的存储器区域,不使用软件协议,而是使用由一致性电路直接采取的针对系统内的各种其他缓存的步骤来确保第一处理设备在执行写入操作之前获得对该存储器区域的独占写入访问。

现在将参考附图描述特定示例。

图1是其中可以实现上述技术的系统的框图。多个处理设备10、20、30被布置为可以访问存储器70。每个处理设备可以被提供有一级或多级本地缓存15、25、35,在这些缓存中临时存储正在由处理设备处理的数据的本地副本。每个数据值具有标识存储器70中的存储器位置的相关联的存储器地址,并且根据标准实践,数据值的副本通常连同该存储器地址的指示一起被存储在缓存中。如果本地缓存中的数据被更新(例如作为由处理设备针对该数据执行的一个或多个写入操作的结果),则更新后的数据可以被写回到存储器70。缓存可以以各种方式布置。例如,如果缓存被布置为直写缓存(write through cache),则对存储在缓存行中的数据所做的任何更新也经由互连40传播到存储器70上,以便使该更新在存储器中被无延迟地复制。然而,通常将至少一级本地缓存布置为回写缓存,其中保存在缓存中的数据的更新后的版本不立即传播到存储器上。而是,脏标志(dirty flag)可以与包含比存储器更新(more up-to-date)的数据的缓存行相关联,使得当那些缓存行内容随后被从缓存中逐出(evict)时,可以对存储器进行必要的更新。本文描述的技术可以关于具有被布置为回写缓存的至少一级本地缓存的任何处理设备来应用。在图1中,缓存15被标识为回写缓存,但是在一个示例布置中,本地缓存15、25、35中的每个缓存都可以是回写缓存。

由于各个处理设备能够将数据的副本本地缓存在它们各自的本地缓存15、25、35中,有必要实现缓存一致性协议,以便确保在不同的处理设备中,对于相同的存储器位置,不发生冲突的写入操作,并且确保每个处理设备具有共享数据的相同视图。特别地,虽然保存在存储器中的一些数据可能是特定于特定处理设备的,但是通常的情况是处理设备将共享保存在存储器中的数据中的一些。作为示例,存储器可以包括共享数据库75,并且可以为处理设备中的每个分配与共享数据库75中保存的信息相关的处理任务。重要的是确保共享数据库中的特定数据不经受由多个处理设备进行的冲突的更新,并且处理设备中的每个被提供有共享数据库75中保存的数据的一致视图。

在一个示例布置中,可以在互连40中提供一致性电路50,以实现缓存一致性协议的至少一部分。当实现缓存一致性协议时,基本上需要承担两个任务。特别地,当处理设备希望执行关于特定存储器位置的写入操作时,必须确保希望进行写入操作的处理设备已经建立了执行针对该存储器位置的写入操作的权限。这可以用于避免针对相同存储器位置发生冲突地写入的可能性。此外,一旦针对特定存储器位置的数据已经通过这样的写入操作被更新,则重要的是确保无论何时任何其他处理设备请求访问该存储器位置,它都能看到更新后的数据。因此,作为缓存一致性协议的一部分,必须确保使得任何写入操作的结果对所有其他处理设备可见。

虽然可以在互连中布置一致性电路以在硬件中完全实现缓存一致性协议以考虑上述所需功能,但是根据本文描述的技术,对于至少一些存储器区域,缓存一致性协议的实现在软件和硬件之间分开。特别地,一致性电路50可以用于确保使得由一个处理设备作为写入操作的结果而生成的更新后的数据对其他处理设备可见。然而,获得将数据写入到存储器位置的权限被转移到软件协议,使得一致性电路50不需要考虑该方面。如稍后将更详细讨论的,软件协议可以使用基于锁定的机制,该基于锁定的机制使用存储器70中维护的锁定组件80,以便确保在任何处理设备对缓存一致性由分离软件/硬件机制控制的存储器区域中的存储器地址执行写入操作之前,该处理设备获得针对相关存储器区域的所有权权限。通过这种方法,软件具有避免针对这样的存储器区域出现竞争写入状况的任务,并且一致性电路然后实现硬件协议以便使得任何更新后的写入数据对其他处理设备可见。

根据本文所述的技术,一旦执行了写入操作(或在一些情况下,执行了一系列写入操作),以便在指定存储器区域的一个或多个存储器位置中产生更新后的写入数据,则触发清除操作以便使得本地回写缓存15中的更新后的写入数据传播到存储器70中的适当存储器位置。在一个示例中,存储器是非易失性存储器,并且因此表示系统中的持久点。特别地,一旦数据已经提交给存储器70,即使从系统移除电源,该数据也将保留。清除操作因此可以使得数据传播到系统中的持久点。然而,在另一示例中,存储器不必是非易失性存储器。

根据所描述的技术,一致性电路响应于清除操作的启动而随后采取多个一致性动作,以便使写入数据对其他处理设备可见。

例如,考虑以下情况:处理设备10执行指令以激活软件协议以便建立用于该处理设备将数据写入到第一存储器区域的所有权权限,并且然后对第一存储器区域中的至少一个存储器位置执行一个或多个写入操作,使得更新后的写入数据被存储在本地回写缓存15中。然后,处理设备10可以执行清除指令以启动清除操作,以便使得所有受影响的写入数据被传播到存储器70以存储在(一个或多个)适当的存储器位置处。然后,一致性电路可以通过采取与其他处理设备20、30的本地缓存25、35相关联的步骤来对该清除操作进行响应,以确保如果这些处理设备需要访问更新后的数据,则它们将看到这些更新后的数据。在一种情况下,一致性电路可以被布置为仅将无效请求传播到本地缓存25、35中的每个,从而指定(一个或多个)受影响的存储器位置。然后,每个本地缓存将执行针对每个指定的存储器位置的查找,以确定在缓存中是否存在针对该存储器位置的条目。如果是,则在本地缓存中使当前内容无效。这将确保如果处理设备随后请求该存储器地址处的数据,则将在本地缓存中检测到未命中,从而导致随后从存储器获得数据,其结果是,处理设备20、30将接收正确的数据。

虽然在简单的布置中,一致性电路可以只是向所有其他本地缓存广播无效请求,但是在替代实施例中,一致性电路可以采取包括监听控制器55和相关联的目录60的监听电路的形式。该目录由监听控制器维护以提供存储器位置的指示,其中,针对该存储器位置的数据由本地缓存15、25、35中的每个缓存。因此,关于受清除操作影响的一个或多个存储器位置,监听控制器55可以在目录内执行查找以标识各本地缓存中的哪些可能具有受影响数据的缓存本地副本,并且因此可以将无效请求定向到相关缓存,而不是只是将无效请求广播到每个缓存。

通过这种方法,可以看出,一致性电路可以对清除操作进行响应以确保在更新后的写入数据被写入到存储器的时刻,可以确保所有处理设备将具有该数据的一致视图。

在执行清除操作之前的时段中,并且当处理设备10正在执行一个或多个写入指令以生成针对一个或多个存储器位置的更新后的写入数据时,软件协议可以控制(regulate)其他处理设备对这些一个或多个存储器位置的访问。在某些情况下,所意在的数据的软件使用可以是这样的,软件协议允许另一处理设备从存储器读取数据的旧值;而在其他情况下,可以在那时禁止这样的读取操作。

图2是示意性地示出了图1的目录60的一个示例布置的图。在该示例中,目录具有多个条目100、105,每个条目标识存储器地址或一系列存储器地址,并且然后标识哪些缓存可能包含在该存储器地址或一系列存储器地址中的数据的副本。这可以被监听控制器用于确定哪些本地缓存需要响应于先前提到的清除操作而进行无效操作。在图2的示例中,使用勾号来指示相关联的缓存可能保存缓存的副本,并且使用叉号来指示相关联的缓存未保存副本。应当理解,可以用任何合适的值来编码勾号和叉号,例如,逻辑一值可以指示勾号,而逻辑零值可以指示叉号。

应当理解,图2仅示出了目录60的一个示例布置,并且任何其他合适的布置可以用于向监听控制器提供关于哪些缓存需要响应于接收到的清除操作而进行无效操作的信息。

图3示出了可以使用的锁定存储组件80的示例布置。锁定存储组件可以包含多个条目110、115、120,每个条目与特定的存储器区域相关。可以针对每个存储器区域维护锁定指示,以标识该区域中的至少一个存储器地址是否正处于使其数据值更新的过程中。如果锁定指示置位(set),则表明该区域中的至少一个存储器地址的数据正在被更新,而如果锁定指示清零(clear),则表明该区域中没有地址包含正处于被更新的过程中数据。

当处理设备希望针对由锁定存储组件管理的区域之一中的存储器地址执行写入操作时,该处理设备将执行指令以寻求使相关联的锁定指示置位。如果相关联的锁定指示当前清零,则将其置位,并且将向处理设备返回确认,这实际上向处理设备标识了现在已经针对相关联的存储器区域建立了所有权权限,并且因此可以自由地针对该存储器区域执行写入操作。然而,如果锁定指示已经置位,则将防止处理设备继续而超出寻求置位锁定的指令,具体地,处理设备在该阶段将不被允许执行寻求写入到相关区域中的存储器地址的任何写入指令。在一个示例中,执行将暂停(stall)直到针对相关区域的锁定指示返回到清零状态,此时锁定指示可以再次置位,并且向处理设备发出确认以标识其现在具有针对存储器区域的所有权权限,此后可以执行(一个或多个)写入指令。通过这种方法,因此可以使用软件协议来维护针对多个存储器区域的所有权权限,以确保在任何特定时间点,仅一个处理设备被赋予以下权限:针对每个这样的区域中的存储器位置执行写入操作。这简化了一致性电路50所需的操作,因为它不需要采取任何步骤来确保特定处理设备的独占所有权,而是只需要对后续清除操作进行响应以确保处理设备在数据被更新之后具有该数据的一致视图。

图4A和图4B提供了示出在一个示例布置中当处理设备希望更新特定存储器区域中的数据时在该处理设备中执行的步骤的流程图,其中针对该特定存储器区域使用组合的软件/硬件机制来实现缓存一致性。

在步骤200,由处理电路针对期望存储器区域执行获取锁定指令。这导致存储器中的锁定组件80被访问,尤其是针对相关区域的锁定指示状态被访问。如果锁定指示已置位,则该过程在步骤205暂停,直到确定锁定指示当前清零,然后可以在该时刻置位锁定指示,以便指示执行获取锁定指令的处理设备已经获得了锁定。一旦获得了锁定,这实际上意味着请求处理设备已经建立了用于将数据写入到所需存储器区域中的位置的所有权权限,如步骤210所示。在此阶段,软件协议防止其他处理设备能够对所讨论的存储器区域进行写入访问,因为如果那些其他处理设备中的任何处理设备要执行获取锁定指令,则将确定该锁定指示已置位,并且因此它们将无法获得针对该存储器区域的锁定。因此,步骤200、205、210可以被视为实现软件协议以建立写入数据的权限。

在步骤210之后,然后在步骤215,处理设备可以执行一个或多个写入操作,以便针对锁定的存储器区域中的存储器位置生成写入数据,然后将所生成的写入数据存储在处理设备的本地回写缓存中。该过程可以继续直到在步骤220检测到针对清除操作的触发。

在一个示例布置中,针对清除操作的触发可以由于各种原因而发生。例如,在简单的情况下,单独的清除指令可以与每个写入指令相关联,使得所执行的过程是用于处理设备获得锁定,以便然后执行对期望的存储器位置的单个写入操作,并且然后用于要被执行的清除指令以触发针对该写入数据的清除操作。然而,在另一示例布置中,可以将针对锁定的存储器区域中的存储器地址的一系列写入操作分组在一起,其中在已执行了这些写入操作之后触发单个清除操作。例如,用于实现这种功能的一个合适的机制是在共同拥有的共同未决的申请号为15/501,278的美国专利申请中描述的机制,该美国专利申请的全部内容通过引用合并于此。特别地,其中定义的结束指令可以用作清除指令以触发清除操作,并且如果需要的话,相关联的开始指令可以用于标识写入指令的序列的开始,当遇到结束指令时,将需要清除该写入指令的序列的写入数据。可以维护单独的存储结构,以跟踪响应于结束指令而需要被清除的存储器位置。

作为可以在步骤220处出现的触发的又一示例,这可以是以包含更新后的写入数据的缓存条目为目标的逐出事件,其中该更新后的写入数据由在步骤215处执行的写入操作产生。逐出事件可例如由于本地缓存中的容量问题而出现,其中需要选择受害者条目以便为要分配到缓存中的新数据腾出空间。当受害者条目是包含在步骤215处产生的写入数据的条目时,则这可以在步骤220处触发清除操作。如果采用先前的示例布置,其中一系列写入操作与开始指令和结束指令相关联,则针对受影响的缓存条目之一的逐出可用于引起针对至少该条目的清除操作被触发,或者如果需要的话,可以导致在逐出触发发生时,清除针对其在开始指令和结束指令之间已产生写入数据的所有条目。

当在步骤220处发生触发事件时,则过程进行到步骤225,在步骤225中对已针对锁定的存储器区域产生的写入数据执行清除操作,以便使得存储器内容被更新以反映由(一个或多个)写入操作产生的更新后的数据。

如前所述,一致性电路50将对种清除操作的存在进行响应,以执行针对其他处理设备的本地缓存中的任何相关条目的无效操作,以便确保将写入存储器的写入数据对所有处理设备都可见。在步骤230,已获得针对所需存储器区域的锁定的处理设备等待从一致性电路确认写入数据对其他处理设备可见。在清除过程期间多个缓存条目可以被清除的情况下,在步骤230处将等待已使得所有相关的写入数据对其他处理设备可见的确认,即,所有所需的无效操作已经被执行。

一旦在步骤230处接收到这样的确认,则清除操作完成,并且在步骤235处确定是否还有任何其他要执行的写入操作或清除操作。例如,如果在指令的序列中在执行该指令会导致锁定被释放的指令之前存在一个或多个附加的写入指令或清除指令,则可以确定这是这种情况。如果存在要执行的至少一个其他写入操作或清除操作,则该过程前进到步骤220,在步骤220中确定是否存在针对另一清除操作的触发,并且如果不存在,则该过程返回到步骤215以执行一个或多个另外的写入操作。

一旦在步骤235处确定不再有要执行的写入操作或清除操作,则处理电路然后可以被布置为在步骤240处执行释放锁定指令以释放针对存储器区域的锁定。这是通过执行对锁定存储组件80中的适当条目的访问以便将针对该区域的锁定指示复位到清零状态来实现的。

图5是示出在一个示例中的一致性电路50的操作的流程图。在步骤300处,一致性电路50等待来自执行先前参考图4A和图4B讨论的步骤的处理设备的清除操作的通知。在通知清除操作后,一致性电路在步骤305处使得相关联的写入数据传播到存储器70上,以便使得存储器内容被更新。并行地,该过程前进到步骤310,在步骤310中目录60被参考以便标识哪些其他缓存(如果有的话)可能存储与清除操作相关联的存储器地址的数据。然后,在步骤315处,监听控制器55被布置为向目录信息所指示的每个缓存发送无效请求。无效请求将标识所讨论的存储器地址,并且将使得接收该无效请求的本地缓存执行查找操作,以便标识实际上是否存在在该存储器地址处缓存数据副本的条目,并且如果存在,则该条目将被无效。这将确保如果相关联的处理设备请求该存储器地址处的数据,则该相关联的处理设备将不再接收本地缓存中的命中,而是将从存储器70中检索正确的数据。

虽然在所描述的示例中,在步骤315,监听控制器55将无效请求发送到相关本地缓存,但是在替代方法中,更新请求可以与新的写入数据一起发送,以便使得本地缓存内容被更新,以正确地反映所需数据。

在步骤320,监听控制器55等待所有所需无效已发生的确认。一旦接收到该确认,则在步骤325,监听控制器可以通知启动清除操作的处理设备,以标识数据现在对其他处理设备可见。应当注意,如果在步骤310,目录指示没有其他缓存可以存储针对所需存储器地址的数据,则过程可以直接从步骤310前进到步骤325。

在针对多个存储器地址应用清除操作的情况下,例如当使用先前提到的开始指令和结束指令时的情况,则无效请求可以被发送到针对每个更新后的缓存行内容的所需缓存,并且在步骤320,监听控制器将在进行到步骤325之前等待针对所有更新后的数据值的所有所需无效已发生的确认。

应当理解,步骤310至325完全由一致性电路50启动,并且不需要对软件程序员的任何可见性,并且尤其不需要由任何处理设备执行任何显式指令。因此,可以看出,步骤310至325实现硬件协议,以便使写入数据对所有处理设备可见。

虽然在步骤305处输出的数据实际写入到存储器可花费许多时钟周期,但是写入数据通常在其从缓存传播到互连40之后不久将到达一致点(例如,与到存储器的接口相关联的一个或多个写入缓冲器)。在图5中,假设至少在步骤310处的检查已经被执行时到达一致点,并且因此在到达步骤325时,应当理解,写入数据将从一致点可用,即使其还没有被写回到主存储器。

虽然可以针对可以在处理设备之间共享的存储器70的所有存储器区域来实现上述机制(该上述机制使用软件协议和硬件协议的组合来实现所需的缓存一致性协议),但是在替代示例中,这种方法可以用于一些区域,但是如果需要的话,可以针对其他区域实现完全的硬件缓存一致性。这由图6的流程图示意性地示出。具体地,在步骤350处确定所讨论的区域是否需要完全的硬件一致性。如果是,则过程前进到步骤355,在步骤355中一致性电路被用于在硬件中完全实现缓存一致性协议。具体地,可以使用如下现有监听机制:其不仅响应于清除操作而实现上述步骤,以便确保更新后的数据对所有处理设备可见,而且在任何处理设备执行写入操作之前,执行针对本地缓存的一致性动作以确保希望执行写入操作的处理设备具有被标记为该处理设备独占的缓存副本的现有监听机制。因此,这种方法使得用于写入数据的权利的建立能够嵌入由一致性电路50执行的硬件协议中。在步骤355处可以使用任何已知的硬件缓存一致性方案。

然而,如果该区域不需要完全的硬件一致性,则该过程前进到步骤360,在步骤360中使用先前描述的软件协议技术并且参考存储器70中的锁定组件80来管理对该区域的写入权限。然后,在步骤365处,使用先前讨论的、并且由一致性电路50实现的硬件协议来管理使更新后的写入数据对所有处理设备可见所需的步骤。

图7A至图7D示出了在软件协议和硬件协议被组合使用以实现缓存一致性的情况下,可以由具有本地回写缓存的处理设备执行的示例指令序列。如图7A所示,可以在获取锁定指令和释放锁定指令之间执行单个写入指令和相关联的清除指令。在一种替代布置中,如图7B所示,可以使用先前提到的开始指令和结束指令来标识一组写入指令,其中结束指令被用于启动针对由该一系列写入指令产生的所有写入数据的清除操作。图7C和图7D示出了作为图7A所示的布置的变体的另外的替代布置,并且具体地,其中在获取锁定指令和释放锁定指令之间执行多个写入指令和相关联的清除指令。图7D中应当注意,与特定写入指令相关联的清除指令不一定需要在序列中紧跟写入指令。

如前所述,在使用先前所述的开始指令和结束指令的示例布置中,可以与处理设备(该设备执行包括这样的开始指令和结束指令的指令的序列)相关联地提供存储单元,以便维护由处理设备在开始指令和结束指令之间执行的写入操作的指示。图8示出了这样的存储单元的一个示例布置,其中存储单元采用FIFO存储电路450的形式。

当遇到由开始指令和结束指令夹在中间的写入指令时,处理设备向FIFO控件448和相关联的回写缓存指示应当将响应于该写入指令而执行的写入操作的指示添加到FIFO存储组件446的条目中。图8示出了其中FIFO存储组件446的四个条目当前填充有写入操作A至D的指示的示例配置。如图中所示,这些指示可以包括写入操作的目标存储器地址(或实际上仅部分的存储器地址,如果这足以标识回写缓存中的相应条目的话)或可替代为缓存块指示符,以示出将在回写缓存中的何处找到相应条目。FIFO控制单元448维护对FIFO存储组件446的整体控制,从而根据需要管理条目的添加和条目的删除(FIFO的个别内容或FIFO的全部内容)。在需要FIFO存储电路450对来自回写缓存的关于回写缓存中的特定数据项在FIFO存储组件446中是否具有相应条目的查询进行响应情况下,FIFO存储电路450可以以内容可寻址的方式配置以便提供此功能。何时可接收这样的单独查询的一个示例是在从回写缓存中逐出数据项后,响应于此,FIFO控件448可以被配置为使得FIFO存储组件446中的相应条目被移除。替代地,作为其参与缓存一致性机制的一部分,可以响应于由回写缓存接收的监听查询而接收来自回写缓存的内容查询,但如下文将参考图9所描述的,回写缓存本身可以被配置为存储相应条目当前是否保存在FIFO存储组件446中的指示,以便避免FIFO存储组件446必须被提供有该内容可寻址存储器配置并且因此促进将FIFO存储组件446提供为对处理设备的相对较小的添加。最后,如图8所示,FIFO控件448还被配置为监视FIFO存储组件446是否变得被完全填充(并且因此将不能够产生更多条目)。在FIFO存储组件446被完全填充的情况下,FIFO控件448向回写缓存发信号通知这个事实,使得回写缓存中的相应条目随后被迅速地写回到存储器70,并且FIFO 446的内容被清除。

图9示意性地示出了回写缓存432,示出了该回写缓存具有控制器460和多个缓存行462。缓存控制器460监视从相关联的处理设备接收的数据项和控制信号,该控制信号是从处理设备的流水线和FIFO控件448两者接收的。缓存行462被配置为存储由处理设备在其数据处理操作中使用的数据项,并且每个缓存行存储数据项本身和相关联的状态标记(通常的方式为脏/有效等等)两者。然而,请注意,每个缓存行的另外一位在这里被定义为可以被视为监听时清除标记(clean-on-snoop marker)的专用标记464,其中如果从命中缓存行462之一的另一缓存/CPU接收到监听,则标记464的存在使得该缓存行被清除到存储器。缓存行的逐出只是一个这样的示例,对于这个示例,标记464因此可以被视为逐出时清除标记(clean-on-evict marker)。在所示的配置中,缓存控制器460被配置为监测从系统中的其他缓存接收的监听,并且当接收到来自另一缓存的、与存储在标记464缓存432的缓存行462中的数据项(针对该数据项,标记置位)相关的监听时,缓存控制器460被配置为立即使得该缓存行被逐出。该事件也被发信号通知给FIFO控件448,使得FIFO存储组件446中的任何相应内容可以被清除。

图10示出了在一个示例中可以由处理器设备执行的示例的指令的序列。在这种情况下,假设开始指令和结束指令用于标识要对(在系统内形成持久点的)非易失性存储器执行的一系列写入。具体地,非易失性存储器可以是非易失性字节可寻址(NVBA)存储器。序列的第一部分(标为A)具有与读取、写入相关的多个指令和数据处理指令,其中这些指令访问未存储在非易失性字节可寻址存储器中的数据项。此后跟随nvba_begin指令(先前提到的开始指令的示例),该nvba_begin指令定义第一区域(写入集合)的开始,其中读取指令、数据处理指令和写入指令(至少部分地)与存储在非易失性字节可寻址存储器中的数据项相关。该第一区域(写入集合)(标为B)以nvba_end指令(先前提到的结束指令的示例)结束。此后,接着是指令的第二集合(A),指令的第二集合(A)与存储在非易失性字节可寻址存储器中的数据项无关。最后,由第二nvba_begin指令和第二nvba_end指令来定义(至少部分地)与存储在非易失性写入可寻址存储器中的数据项相关的读取指令、数据处理指令和写入指令的第二区域(写入集合)(B)。即使当所访问的数据项被存储在非易失性存储器(对其进行的访问由回写缓存进行缓存)中时,nvba_begin和nvba_end指令的提供也使得程序员能够定义写入集合,本技术能够保持这些写入集合(相对于彼此的)顺序。

根据本文所述的技术,由开始指令和结束指令标识的每个块之前是获取锁定指令,并且之后是释放锁定指令,使得先前提到的软件协议机制可以用于确保处理设备在执行任何写入操作之前获得写入的权限。作为结果,一旦发生由结束指令触发的清除操作,由一致性电路递增的硬件协议则仅需要确保使写入数据对各种其他处理设备可见。

在本申请中,词语“被配置为…”用于表示装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意味着硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件、或者可以被编程以执行该功能的处理器或其他处理设备。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。

尽管本文已经参考附图详细描述了本发明的说明性实施例,但是应当理解,本发明不限于这些精确的实施例,并且在不脱离由所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可以在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以对从属权利要求的特征和独立权利要求的特征进行各种组合。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于分布式缓冲器存储器系统的地址/命令芯片同步的自动数据芯片地址定序器

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类