事务存储器支持的制作方法

文档序号:10699112阅读:187来源:国知局
事务存储器支持的制作方法
【专利摘要】非对称性多处理器系统(2)包括经由控制器(14、16)支持事务存储器的多个处理器核心(4、6)以及不经由硬件支持事务存储器的一个或多个处理器核心(8)。控制器通过以下方式对请求对于锁地址的排他性访问的请求的接收进行回应:确定它们相关联的处理元件当前是否正在执行由此锁地址处存储的锁值保护的存储器事务,并且如果它们的处理元件正在执行这样的事务,则延迟释放锁地址用于排他性访问,直至预定条件被满足。如果处理元件没有正在执行这样的受保护的存储器事务,则锁地址可被无条件地释放用于排他性访问。预定条件可以是自从请求被接收到起已经超出阈值延迟和/或请求先前已经被接收并拒绝了阈值次数。请求可通过用于从存储锁地址的架构寄存器(76)中读取锁地址的事务启动指令的执行(如果执行此事务启动指令的处理器没有在执行正在进行的存储器事务)而产生。如果处理器已在执行存储器事务,则事务启动指令不需要访问在锁地址寄存器(76)内保持的锁地址处存储的锁值,因为假设锁值已经被检杳过。
【专利说明】
事务存储器支持
技术领域
[0001]本公开涉及数据处理系统的领域。更具体地,本公开涉及对于具有多个处理元件的数据处理系统内的事务存储器的支持,这多个处理元件在存储器内存储共享的数据值。
【背景技术】
[0002]提供具有共享在存储器内存储的数据值的多个处理元件的数据处理系统是已知的。为了控制处理元件之间的一致性,已知的是提供与存储器地址空间的区域相关联的锁,从而使得当一个处理元件希望执行对于该区域的访问时,它首先检查与该区域相关联的锁值未被设置。如果锁值被设置,那么这表明另一处理元件已正在该区域内执行事务,因此当前访问应当被中止并在晚些时候重试。如果测试揭露该锁当前未被设置,那么作出访问请求的处理元件可以设置锁值、执行它的访问、并然后重置锁值。
[0003]尽管锁的使用提供了在处理元件之间共享数据值的安全机制,但是它会不利地影响性能,因为锁可能被以粗粒度级别设置而使得实际上不影响被锁区域内的相同数据值的存储器访问当在实践中它们能够没有困难地并行进行时被阻止并行地运行。不利地,如果锁被设置的粒度过细,则与存储和管理锁相关联的开销级别变得繁重。
[0004]解决以上问题的一种方式是提供省略机制。根据此机制,处理元件可以获得对于数据值的访问并且在它掌握的那些数据值的本地副本上推测性地执行存储器事务。当执行这样的存储器事务时,处理元件向系统内的其他处理元件通知它正在执行对于给定区域的存储器地址的存储器访问。如果任何其他处理元件当前正在执行涉及此区域内的任何存储器地址的存储器事务作为它自己的推测性处理的一部分,那么它中止此推测性处理(存储器事务),从而使得请求者能够获得对于所涉及的存储器区域的访问并执行更近期的推测性操作。
[0005]应当认识到正在进行的存储器事务的中止引起发生死锁情况的可能性。因此,一些机制被提供用于确保在处理工作负载内发生可供执行的回退路径以及做出进步。这可通过将上面描述的锁机制用作当处理元件之间出现竞争时的回退路径来实现。与基于在出现竞争时被中止的推测性存储器事务的管理相比,使用这样的锁机制可降低性能,但是它提供了确保死锁可被克服的方式。因此,即使在省略机制被提供时,处理元件在开始存储器事务时将查看所涉及的存储器区域是否被锁定,即使它们并不旨在自己锁定该存储器区域而是将替代地基于推测性存储器事务正常进行。如果处理元件发现区域被锁定,那么它将不进行存储器事务并且可在稍晚的时间处重试。此外,处理元件将监视保卫它在其上执行推测性存储器事务的存储器区域的锁地址,并且如果此锁地址被另一处理元件以相冲突的方式访问,那么它将中止它的推测性存储器事务。因此,需要利用锁的处理元件能够以一方式设置锁值而无需等待正在进行的存储器事务完成,该方式在其他情形中将阻止锁值被设置并阻止获得对区域的排他访问。

【发明内容】

[0006]从本公开的一个方面来看,提供了一种用于处理数据并且包括对于原子存储器事务的硬件支持的装置,装置包括:
[0007]多个处理元件,每个处理元件被配置为执行一系列程序指令;以及
[0008]存储器,该存储器被配置为存储由多个处理元件共享的数据值,
[0009]其中多个处理元件中的至少一个处理元件是事务存储器支持型处理元件,该事务存储器支持型处理元件具有被配置为监控对存储器内的锁地址的访问的控制器并且控制器被配置为通过以下操作来回应从多个处理元件中的另一处理元件接收的、获得对锁地址的排他性访问的请求:
[0010](I)当事务存储器支持型处理元件正执行由锁地址保护的存储器事务时,延迟释放锁地址用于排他性访问,直至预定条件被满足;以及
[0011](2)当事务存储器支持型处理元件未正执行由锁地址保护的存储器事务时,独立于预定条件地释放锁地址用于排他性访问。
[0012]本公开认识到在监控保护由一个处理元件推测性地执行的存储器事务的锁地址时,存在这样的场景:在这些场景中,无条件地通过立即释放此锁地址以供由请求者排他性地使用来回应请求获得对于此锁地址的排他性访问的请求是不适当的。无条件地释放锁地址以供请求者排他性地访问的简单方式可能在包含就性能和优先级而言是对等者的处理元件的同构系统中是适当的,但是在其他场景中可采取不同的方式。本公开提供了以下方案:当处理元件正在执行由此锁地址保护的存储器事务时,在锁地址被释放以供请求者排他性地访问之前必须满足预定条件。相反地,当处理元件没有正在执行由请求所针对的锁地址保护的存储器事务时,独立于预定条件,锁地址被无条件地释放用于排他性访问。
[0013]在一些实施例中,控制器可被配置为通过对该接收的请求返回请求拒绝响应来延迟释放锁地址。在其他实施例中,控制器可被配置为通过延迟返回对于该接收的请求的任何响应来延迟释放锁地址。
[0014]在释放锁地址之前要满足的预定条件的一个示例形式可以是事务存储器支持型处理元件在不释放锁地址的情形下已经接收到对于锁地址的预定数目的访问请求。因此,在若干请求已经被做出并且被拒绝之前将不进行释放。
[0015]在释放锁地址之前要满足的预定条件的另一示例可以是自从接收到请求起已经过去了预定时间,即释放被延迟达预定时段。
[0016]在释放锁地址之前等待直至预定条件被满足为正在进行的存储器事务提供了在锁地址被释放之前完成的额外时间。当锁地址被释放并且由此锁地址保护的存储器事务尚未完成时,存储器事务可被中止。
[0017]本公开可被用于以下实施例中,其中多个处理元件包括至少一个不具有用于支持更高级的事务存储器技术(包括省略、缓存侦听等等)的控制器的事务存储器不支持型处理元件。作为示例,系统可包括若干复杂的高性能处理器核心以及一个或多个简单的低功率处理器核心。高性能处理器核心可包括用于更精细的数据值共享以及事务存储器支持的机制,而简单的低功率核心可依赖于过渡的锁机制来确保一致性。在这样的系统内,如果低功率处理器核心寻求访问正在由高性能处理器核心使用的存储器区域,则它正常地强制施行那些高性能处理器核心上的存储器事务的立即中止并且将总体系统的性能退化至低功率处理器核心的水平。然而,使用本公开,高性能处理器核心可暂缓向低功率处理器核心释放锁地址(准许锁值被设置)直至预定条件被满足,因而允许降低对于要被减少的高性能处理器核心的性能的退化。
[0018]这样的非对称性多处理装置可用于提供能够以能量高效地方式来应对多种多样的不同处理工作负载的系统。
[0019]在一些实施例中,预定条件可以是请求是从作为事务存储器支持型处理元件的一个处理元件(例如,高性能核心)接收的,从而使得至少一段时间不对从不匹配此形式的处理元件接收的请求采取动作。
[0020]在存储器事务的启动时与执行采用对于锁地址/值的访问的程序指令相关联的开销可在以下系统中被减小:其中在保持规定了处理器的配置的参数的架构寄存器内提供专用于存储锁地址的锁地址寄存器。因此,当事务启动指令被此处理元件的指令译码器译码时,这可用于确定处理元件是否已在执行存储器事务,并且如果处理元件未在执行存储器事务,则从锁地址寄存器中读取锁地址并且访问在锁地址处存储的锁值。相反地,如果处理元件已在执行存储器事务,则系统可进行事务启动指令随后的进一步处理而无需访问在锁地址处存储的锁值。
[0021]此特征认识到程序代码将通常给执行任何存储器事务的程序指令预先安排一事务启动指令从而至少检查所涉及的存储器区域的锁值是否被(例如,使用过渡的锁机制的处理元件)设置。在嵌套式代码内,这可导致冗余的检查和访问被做出,因为处理器已经在执行存储器事务并且已经控制锁地址,所以后续的存储器事务将不必重复检查锁地址值,这浪费了时间和能量。另外,与经由软件机制提供锁地址相关联的开销可通过替代地提供在每个进程的基础上存储锁地址的架构寄存器来降低,从而使得当事务启动指令被遇到时,可对于架构寄存器内的固定位置而非对于指令规定位置做出锁地址的查找。
[0022]从本公开的另一方面来看,提供了一种用于处理数据并且包括对于原子存储器事务的硬件支持的装置,装置包括:
[0023]多个处理装置,每个处理装置被配置为执行一系列程序指令;以及
[0024]存储器装置,被配置为存储由多个处理装置共享的数据值,
[0025]其中多个处理装置中的至少一个处理装置是事务存储器支持型处理装置,该事务存储器支持型处理装置具有用于监控对存储器装置内的锁地址的访问的控制装置并且控制装置用于通过以下操作来回应从多个处理装置中的另一处理装置接收的、获得对锁地址的排他性访问的请求:
[0026](I)当事务存储器支持型处理装置正执行由锁地址保护的存储器事务时,延迟释放锁地址用于排他性访问,直至预定条件被满足;以及
[0027](2)当事务存储器支持型处理装置未正执行由锁地址保护的存储器事务时,独立于预定条件地释放锁地址用于排他性访问。
[0028]从本公开的另一方面来看,提供了一种使用对于原子存储器事务的硬件支持来处理数据的方法,方法包括以下步骤:
[0029]通过使用多个处理元件来执行一系列程序指令;以及
[0030]在存储器内存储由多个处理元件共享的数据值,
[0031]其中多个处理元件中的至少一个处理元件是事务存储器支持型处理元件,该事务存储器支持型处理元件监控对存储器内的锁地址的访问并且通过以下操作来回应从多个处理元件中的另一处理元件接收的、获得对锁地址的排他性访问的请求:
[0032](I)当事务存储器支持型处理元件正执行由锁地址保护的存储器事务时,延迟释放锁地址用于排他性访问,直至预定条件被满足;以及
[0033](2)当事务存储器支持型处理元件未正执行由锁地址保护的存储器事务时,独立于预定条件地释放锁地址用于排他性访问。
[0034]用作在专用于存储锁地址的锁地址寄存器内存储锁地址的地方的架构寄存器的配置可与用来当锁地址正在保护正在进行中的存储器事务时仅当满足预定条件时才响应于请求释放锁地址的机制相分离地使用。因此,本公开还提供了一种用于处理数据并且提供对于原子存储器事务的硬件支持的装置,装置包括:
[0035]多个处理元件,每个处理元件被配置为执行一系列程序指令;以及
[0036]存储器,该存储器被配置为存储由多个处理元件共享的数据值,其中:
[0037]多个处理元件中的至少一个给定处理元件包括:
[0038]一个或多个架构寄存器,被配置为保持规定了多个处理元件中的至少一个处理元件的配置的参数,一个或多个架构寄存器包括专用于存储锁地址的锁地址寄存器,该锁地址用于控制对于存储器中的区域的排他性访问;以及
[0039]指令译码器电路,被配置为译码指示存储器事务的启动的事务启动指令并且被配置为:
[0040](I)如果多个处理元件中的给定处理元件未正执行存储器事务,则生成一个或多个控制信号来控制从锁地址寄存器中读取锁地址;并且
[0041](2)如果多个处理元件中的给定处理元件已正执行存储器事务,则进行下一步处理而无需从锁地址寄存器中读取锁地址。
[0042]从本公开的另一方面来看,提供了一种用于处理数据并且提供对于原子存储器事务的硬件支持的装置,装置包括:
[0043]多个处理装置,每个处理装置被配置为执行一系列程序指令;以及
[0044]存储器装置,被配置为存储由多个处理装置共享的数据值,其中
[0045]多个处理装置中的至少一个给定处理装置包括:
[0046]—个或多个架构寄存器装置,被配置为保持规定了多个处理装置中的至少一个处理装置的配置的参数,一个或多个架构寄存器装置包括专用于存储锁地址的锁地址寄存器装置,该锁地址用于控制对于存储器装置中的区域的排他性访问;以及
[0047]指令译码器装置,被配置为译码指示存储器事务的启动的事务启动指令并且被配置为:
[0048](I)如果多个处理装置中的给定处理装置未正执行存储器事务,则生成一个或多个控制信号来控制从锁地址寄存器装置中读取锁地址;并且
[0049](2)如果多个处理装置中的给定处理装置已正执行存储器事务,则进行下一步处理而无需从锁地址寄存器装置中读取锁地址。
[0050]从本公开的另一方面来看,提供了一种使用对于原子存储器事务的硬件支持来处理数据的方法,方法包括以下步骤:
[0051]通过使用多个处理元件来执行一系列程序指令;以及
[0052]在存储器内存储由多个处理元件共享的数据值,其中:
[0053]多个处理元件中的至少一个给定处理元件执行以下步骤:
[0054]在一个或多个架构寄存器内保持规定了多个处理元件中的至少一个处理元件的配置的参数,一个或多个架构寄存器包括专用于存储锁地址的锁地址寄存器,该锁地址用于控制对于存储器中的区域的排他性访问;以及
[0055]译码指示存储器事务的启动的事务启动指令并且:
[0056](I)如果多个处理元件中的给定处理元件未正执行存储器事务,则生成一个或多个控制信号来控制从锁地址寄存器中读取锁地址;并且
[0057](2)如果多个处理元件中的给定处理元件已正执行存储器事务,则进行下一步处理而无需从锁地址寄存器中读取锁地址。
【附图说明】
[0058]仅通过示例的方式,本发明的实施例现在将参考其附图来进行描述,其中:
[0059]图1示意性地示出了包括共享存储器内的数据值的多个处理元件的数据处理装置;
[0060]图2是示意性地示出控制器响应从另一处理元件接收的请求获得对于锁地址的排他性访问的请求的行为的流程图;
[0061]图3是示出在请求被获准之前要满足的预定条件的第一形式的流程图;
[0062]图4是示出在请求被获准之前要满足的预定条件的第二示例的流程图;
[0063]图5是示意性地示出在由发起存储器事务的事务启动指令访问的架构寄存器内包括锁地址寄存器的数据处理系统的图示;以及
[0064]图6是示意性地示出事务启动指令的处理的流程图。
【具体实施方式】
[0065]图1示意性地示出包括共享存储器10内存储的数据值的多个处理元件4、6、8的数据处理系统2。处理元件4、6是用于执行程序指令的处理器核心形式的事务存储器支持型处理元件并且各自具有相关联的缓存存储器10、12和控制器14、16用于根据省略技术控制数据值的共享。处理器核心4、6是通常消耗更多能量但是与消耗更少能量的低性能处理器核心相比具有更高指令处理吞吐量的高性能处理器核心。
[0066]数据处理系统2内还包括用于执行处理指令流的相对低功率和慢处理器核心形式的事务存储器不支持型处理元件8。此事务存储器不支持型处理元件8不包括缓存存储器或控制器。因此,为了管理对存储器10内存储的共享数据值的访问,事务存储器不支持型处理元件8无论它何时希望获得对于存储器10的区域内保持的数据值的排他访问,必须依赖于锁值的使用。
[0067]数据处理系统2将被看作非对称多处理器系统。不同的处理器核心4、6、8各自执行程序指令流。这些指令可来自相同进程内或者来自不同进程。给定进程可与存储器10内的锁地址处存储的锁值相关联。锁地址可被保持在定义处理器核心的配置并且专用于存储锁地址的架构寄存器(即,锁地址寄存器)中的一个架构寄存器内。
[0068]处理器核心4、6形式的事务存储器支持型处理元件利用它们各自的控制器14、16来管理在它们的缓存存储器1、12内存储的数据值之间的一致性并且避免由各自核心4、6在共享数据值上执行的推测性存储器事务不适当地彼此干扰。当处理器核心4、6中的一个正在执行存储器事务时,它在它的缓存存储器10、12内保持所读取和写入的数据值的推测性副本。如果存储器事务完成,那么这些数据值变成非推测的并且能够被返回写出至存储器10,或者在适当的时候被转发至另一处理元件。然而,如果在存储器事务期间接收到访问与此存储器事务关联地本地保持的任何推测性数据值的请求,那么存储器事务被中止并且要访问的请求者获得访问那些数据值的权利。
[0069]总地考虑事务存储器支持,存储器地址空间的关键区段传统上由锁来保护,其是在给定锁地址处的锁值。(事务存储器类型的)事务由推测性维持的状态(存储器和寄存器)组成,从而使得它能够在失败时回滚。失败可由于各种不同原因而发生,但是特别地由于对数据的冲突性访问而发生。为了检测冲突,事务维持读集(由处理元件在事务执行状态中读取的地址)和写集(在事务执行状态中的相应写地址)。在事务期间写入的值对于其他处理元件是不可见的,它们被推测性地存储在缓存中。如果PE(称为ΡΕ0)对在另一(称为PEl上的)事务的读集或写集中的行进行写操作,则PEI上的事务将中止。如果(称为PEO上的)事务对另一(称为PEl上的)事务的写集进行读操作,则PEl上的事务将中止,并且PEO将接收此地址的全系统非推测性值(而不是PEl的缓存中的预测性值)。存在其他选项,但这种请求者赢的方案通常被实现,因为它遵循现有的缓存一致性协议而运作。
[0070]当(事务存储器类型的)事务被用于(经由被称作锁省略的概念)保护关键区段时,它通常将仅读取锁地址,即它不设置锁值。如果锁已经被设置,则事务不能安全地进行,因为它必须假定对锁的传统使用并且假若它继续的话将有可能与锁的拥有者相竞争。
[0071]如果锁未被设置,即它的锁值处于未锁状态,则读取锁地址的处理将足以确保互斥(mutual exclus1n)。如果另一事务读操作进入相同的受保护存储器区域,那么对锁地址的两次读操作是没问题的,并且只要不发生“真实”数据冲突,则这两个事务能够同时进行。多个处理元件能够通过开始(事务存储器类型的)事务而推测性地进入关键区段。如果处理元件非事务性地进入关键区段(因为它没有正在事务性地做出进步,或者因为处理元件不支持事务存储器),那么它必须在传统意义上占用(设置)锁,即它必须拖延,直至它能够取得并设置锁。
[0072]在锁地址处将锁值设置为锁定状态的处理将对其他处理元件排他地请求锁地址。在读/写集中具有此锁地址的任何事务将需要中止。
[0073]返回图1的示例实施例,事务存储器支持型处理元件4、6自己不设置与它们在其中进行操作的存储器区域相关联的锁值,因为它们利用它们的控制器14、16来确保存储器事务彼此不相互干扰。然而,为了提供对于(当存储器事务应被中止时所需要的)回退执行机制的支持,或者为了支持不具有自己的控制器的处理元件(例如,事务存储器不支持型处理元件8),控制器14、16监控对于存储器10内存储它们正在执行存储器事务的区域的锁值的锁地址的访问请求,并且在开始事务之前检查此锁值未被设置。如果检测到访问此锁值的请求,那么控制器14、16确定另一处理元件与该推测性存储器事务相冲突并且将正常地立即终止该推测性存储器事务并返回释放对于锁地址的访问的响应。然而,根据本公开,控制器14、16修改此正常行为,并替代地响应于接收的请求而延迟释放锁地址用于排他访问,直至预定条件被满足。
[0074]此延迟可准许控制器14、16内涉及的正在进行的推测性存储器事务被完成,从而降低了接收的请求的影响。这在例如防止低功率低性能的事务存储器不支持型处理元件8(依赖于单独用于它的共享数据值的锁值)过度地打断和干扰由高性能事务存储器支持型处理元件4、6执行的处理中是有用的。事务存储器不支持型处理元件8应当最终被允许执行它的事务,否则它将被不希望地阻止做出正式进展。然而,本公开认识到事务存储器不支持型处理元件8立即中止与它相冲突的所有其他处理活动可能是不适当的。
[0075]在响应于请求而释放锁地址用于排他访问之前必须满足的预定条件能够采用多种不同形式。这些形式可包括请求在它被最终获准之前被拒绝预定的阈值次数。另一形式将是对请求的任何响应被延迟预定的阈值时段。还可应用这些条件以及其他条件的组合,这些其他条件例如是基于识别出请求的源的条件,例如从事务存储器支持型处理元件接收的请求将被立即回应以请求的获准,然而来自不支持事务存储器的另一源的请求将在它被获准之前要符合其他条件。当处理元件没有正在执行由此锁地址保护的存储器事务时,预定条件不被应用于锁地址的门限释放,即在此情形中释放独立于预定条件。
[0076]图2是示意性地示出控制器14、16中的一者响应于访问请求的动作的流程图。在步骤18处,处理等待访问请求被接收。当访问请求被接收时,步骤20确定访问请求是否是对锁地址的访问请求。如果该访问请求是对锁地址的访问请求,则处理前进至步骤22,其中确定在已经接收请求的处理器内当前是否存在正在进行的、对于相同存储器区域的冲突/重叠的存储器事务。如果不存在正在进行的事务,则处理可直接前进至步骤24,其中对于请求者,请求被获准,从而使得如图2中处理的那样,该请求者由至少接收到请求的处理器给予获得对锁地址的排他访问的许可(其他的(一个或多个)处理器可执行它们自己的类似检查)。
[0077]如果步骤22处的确定是在接收请求的处理器内存在正在进行的事务,那么步骤26用于在处理进一步进行下去之前确定是否满足预定条件。在一个示例实施例中,当预定条件被满足时,处理前进至步骤28,其中在处理前进至步骤24之前,正在进行的存储器事务被中止。在另一示例实施例中,如图2中的虚线框中所示,预定条件可以如下:来自该请求者的请求已经被拒绝了一定次数,而如果该条件未被满足,则在步骤30返回请求拒绝响应而无需中止正在进行的存储器事务并且替代地依靠请求者重复请求(如果它们愿意的话)。
[0078]如果步骤20处的确定的结果是访问请求不是对于锁地址的访问请求,则处理前进至步骤30,其中做出关于接收到请求的处理器是否正保持接收的请求所涉及的存储器地址的确定。如果处理器没有保持该存储器地址,则访问请求在步骤24被获准。如果步骤30处的确定是处理器保持了所涉及的存储器地址,则步骤32确定此存储器地址是否被推测性地保持(即,作为由本地控制器14、16管理的存储器事务的一部分)。如果存储器地址被推测性地保持,则整个正在进行的存储器事务在步骤34被中止并且访问请求在步骤24处被获准。如果存储器地址未被推测性地保持,则步骤36确定存储器地址是否是脏的,在步骤40处从接收请求的处理器中清除该存储器地址(因为该地址要由请求者排他地保持)之前,如果需要的话在步骤38处执行回写,随后是步骤24处返回获准响应。
[0079]图3示意性地示出了关于是否满足预定条件的确定的一种形式。在步骤42处,做出关于是否已经从事务存储器支持型处理元件接收到请求的确定。如果请求是从事务存储器支持型处理元件(即,接收者的对等者)接收到的,则处理直接前进至步骤44,其中条件被设置为被满足。如果请求不是从事务存储器支持型处理元件接收到的,则步骤46初始化一延迟计时器。处理然后循环地通过步骤48和50直至接收到请求的处理元件已经完成它的存储器事务或者自从步骤46处的初始化起延迟时间已经超出预定阈值。当这些条件中的一个被满足时,预定条件在步骤44处被设置为满足。
[0080]图4提供了预定条件如何被设置为满足的另一示例。在步骤52处,做出关于是否已经从事务存储器支持型处理元件接收到请求的确定。如果请求是从这样的事务存储器支持型处理元件接收到的,则它将被立即标记为被获准并且处理经由将拒绝计数设置为零的步骤54以及其中预定条件被设置为满足的步骤56而前进。如果步骤52处确定请求是从事务存储器支持型处理元件之外的处理元件接收到的,则步骤58确定拒绝计数是否已经达到阈值计数。如果拒绝计数已经达到阈值计数,则步骤54处的处理将拒绝计数设置为零并且步骤56处的处理将预定条件设置为满足。然而,如果拒绝计数尚未达到阈值计数,则处理前进至步骤60和步骤62,在步骤60中拒绝计数被递增,在步骤62中采取进行生成请求拒绝的步骤。图4的处理用于在针对从事务存储器不支持型处理元件接收的请求将预定条件设置为满足并且允许获得排他性访问之前拒绝这样的请求达阈值次数。
[0081]图5示意性地示出了包括处理器的数据处理系统64,该处理器具有指令流水线66、指令译码器68、指令执行电路70、通用寄存器组72、和一组架构寄存器74。数据处理装置64可以是图1中的事务存储器支持型处理元件4、6中的一者。取回至指令流水线66的指令依次通过指令流水线66直至它们被指令译码器68译码。指令译码器68用于生成控制处理器内的指令执行电路70和其他元件的动作的控制信号,从而执行所涉及的指令。所执行的指令包括事务启动指令。
[0082]这样的事务启动指令可被包括在与要执行的存储器事务相对应的要运行的程序指令序列的开头处。此事务启动指令负责从形成一个架构寄存器74的锁地址寄存器76内存储的锁地址中读取锁值。此读取仅需要在处理器尚未正在执行存储器事务时发生。如果处理器已正在读取存储器事务,则确定锁值是否被设置的检查将已经被执行并因此不需要重复,因为倘若出现这样的需求的话,控制器14、16将使用它的硬件机制中止存储器事务。然而,如果处理器尚未正在执行存储器事务,则译码器的动作是执行事务开始动作以至少访问在锁地址寄存器76内保持的锁地址处存储的锁值。处理器关于它是否当前正在执行存储器事务的状态可被存储在另一架构状态寄存器78内,其指示该处理器内是否有存储器事务当前是活动的。当存储器事务被启动时,控制器14、16将架构状态计算器78的值设置为指示此状态。事务启动指令还可具有其他动作,例如确定锁值是否已被设置以及在适当的时候触发对于此锁值的排他性访问的请求的发出。
[0083]如果当事务启动指令被指令译码器68译码时,来自架构状态寄存器78的确定是处理器内已存在正在进行的存储器事务,那么对来自指令流的指令的处理被允许进一步进行而无需不得不做出对于锁地址处存储的锁值的访问,因为能够做出以下假设:这些检查将已经由启动已正在进行的存储器事务的事务启动指令完成。
[0084]由锁地址寄存器76存储的锁地址可与由处理器在当前时间执行的给定程序进程相关联。当此进程改变时,在锁地址寄存器76内存储的锁地址可被适当地改变。因此,由不同处理器保持的锁地址在当它们正执行相同的程序进程时会匹配,这一般将是它们正共享存储器10内的数据值时的情形。
[0085]图6是示出指令译码器68在译码事务启动指令时的动作的流程图。在步骤80处,处理等待,直到事务启动指令被译码。在步骤82处,做出关于处理器当前是否正在执行存储器事务的确定。这可通过读取来自架构寄存器74内的架构状态寄存器78中的值来实现。如果处理器当前正在执行存储器事务,则至少此方面的事务启动指令的执行可被视为完成并且处理终止。
[0086]如果步骤82处的确定是处理当前没有正在执行存储器事务,则步骤84用于从锁地址寄存器76读取锁地址。步骤86然后访问在已经从锁地址寄存器76读取的地址处存储的锁值。在一些实施例中,这种对锁值的访问用于设置锁值,或者至少向已经在监控对于此锁地址的访问的其他处理器通知已经执行了事务启动指令的处理器的动作。架构寄存器内基于每个进程地存储锁地址准许实现对锁值的更高效查找并且还准许当所涉及的处理器已正在执行存储器事务时,基于查找已经被执行的假设而抑缩用于执行这样的查找的处理工作。这例如可以是以下情形:嵌套式存储器事务被执行并且不需要对锁值的重复访问,因为处理器是事务存储器支持型处理元件并且它的控制器14、16将负责管理存储器事务之间的冲突(如果它们发生的话)。
【主权项】
1.一种用于处理数据并且包括对于原子存储器事务的硬件支持的装置,所述装置包括: 多个处理元件,每个处理元件被配置为执行一系列程序指令;以及 存储器,该存储器被配置为存储由所述多个处理元件共享的数据值, 其中所述多个处理元件中的至少一个处理元件是事务存储器支持型处理元件,该事务存储器支持型处理元件具有被配置为监控对所述存储器内的锁地址的访问的控制器并且所述控制器被配置为通过以下操作来回应从所述多个处理元件中的另一处理元件接收的、获得对所述锁地址的排他性访问的请求: (1)当所述事务存储器支持型处理元件正执行由所述锁地址保护的存储器事务时,延迟释放所述锁地址用于排他性访问,直至预定条件被满足;以及 (2)当所述事务存储器支持型处理元件未正执行由所述锁地址保护的存储器事务时,独立于所述预定条件地释放所述锁地址用于排他性访问。2.如权利要求1所述的装置,其中所述控制器被配置为通过对该接收的请求返回请求拒绝响应来延迟释放所述锁地址。3.如权利要求1所述的装置,其中所述控制器被配置为通过延迟返回对于该接收的请求的任何响应来延迟释放所述锁地址。4.如权利要求1、2和3中任一项所述的装置,其中所述预定条件至少部分是所述事务存储器支持型处理元件在不释放所述锁地址的情形下已经接收到对于所述锁地址的预定数目的访问请求。5.如前述权利要求中任一项所述的装置,其中所述预定条件至少部分是所述事务存储器支持型处理元件已经延迟释放所述锁地址达预定时间。6.如前述权利要求中任一项所述的装置,其中所述控制器被配置为:如果所述锁地址在所述存储器事务已经完成之前被释放,则中止由所述锁值保护的所述存储器事务。7.如前述权利要求中任一项所述的装置,其中所述多个处理元件包括至少一个不具有所述控制器的事务存储器不支持型处理元件。8.如权利要求7所述的装置,其中所述事务存储器不支持型处理元件被配置为在开始由所述锁值保护的存储器事务的执行之前执行一系列锁获取程序指令。9.如权利要求7和8中任一项所述的装置,其中所述事务存储器不支持型处理元件相比所述事务存储器支持型处理元件具有更低的功耗和更低的指令处理性能。10.如前述权利要求中任一项所述的装置,其中所述多个处理元件形成非对称多处理目.ο11.如前述权利要求中任一项所述的装置,包括多个事务存储器支持型处理元件。12.如权利要求11所述的装置,其中如果该接收的请求是从所述多个事务存储器支持型处理元件中的一个中接收的,则所述预定条件被满足。13.如前述权利要求中任一项所述的装置,其中所述多个处理元件中的至少一个处理元件包括: 一个或多个架构寄存器,被配置为保持规定了所述多个处理元件中的所述至少一个处理元件的配置的参数,所述一个或多个架构寄存器包括专用于存储所述锁地址的锁地址寄存器;以及 指令译码器电路,被配置为译码指示存储器事务的启动的事务启动指令并且被配置为: (1)如果所述多个处理元件中的所述至少一个处理元件未正执行存储器事务,则生成一个或多个控制信号来控制从所述锁地址寄存器中读取所述锁地址以及至少访问在所述锁地址处存储的所述锁值;并且 (2)如果所述多个处理元件中的所述至少一个处理元件已正执行存储器事务,则进行下一步处理而无需访问在所述锁地址处存储的所述锁值。14.如权利要求13所述的装置,其中所述装置被配置为执行与多个不同的程序进程相对应的程序指令,其中所述多个处理元件中一个给定处理元件在给定时段内执行所述多个程序进程中一个给定程序进程,并且所述多个处理元件中所述一个给定处理元件的锁地址寄存器在所述给定时段期间存储针对所述多个程序进程中所述一个给定程序进程的锁地址。15.—种用于处理数据并且包括对于原子存储器事务的硬件支持的装置,所述装置包括: 多个处理装置,每个处理装置用于执行一系列程序指令;以及 存储器装置,用于存储由所述多个处理装置共享的数据值, 其中所述多个处理装置中的至少一个处理装置是事务存储器支持型处理装置,该事务存储器支持型处理装置具有用于监控对所述存储器装置内的锁地址的访问的控制装置并且所述控制装置用于通过以下操作来回应从所述多个处理装置中的另一处理装置接收的、获得对所述锁地址的排他性访问的请求: (1)当所述事务存储器支持型处理装置正执行由所述锁地址保护的存储器事务时,延迟释放所述锁地址用于排他性访问,直至预定条件被满足;以及 (2)当所述事务存储器支持型处理装置未正执行由所述锁地址保护的存储器事务时,独立于所述预定条件地释放所述锁地址用于排他性访问。16.—种使用对于原子存储器事务的硬件支持来处理数据的方法,所述方法包括以下步骤: 通过使用多个处理元件来执行一系列程序指令;以及 在存储器内存储由所述多个处理元件共享的数据值, 其中所述多个处理元件中的至少一个处理元件是事务存储器支持型处理元件,该事务存储器支持型处理元件监控对所述存储器内的锁地址的访问并且通过以下操作来回应从所述多个处理元件中的另一处理元件接收的、获得对所述锁地址的排他性访问的请求: (1)当所述事务存储器支持型处理元件正执行由所述锁地址保护的存储器事务时,延迟释放所述锁地址用于排他性访问,直至预定条件被满足;以及 (2)当所述事务存储器支持型处理元件未正执行由所述锁地址保护的存储器事务时,独立于所述预定条件地释放所述锁地址用于排他性访问。17.—种用于处理数据并且提供对于原子存储器事务的硬件支持的装置,所述装置包括: 多个处理元件,每个处理元件被配置为执行一系列程序指令;以及 存储器,该存储器被配置为存储由所述多个处理元件共享的数据值,其中: 所述多个处理元件中的至少一个给定处理元件包括: 一个或多个架构寄存器,被配置为保持规定了所述多个处理元件中的至少一个处理元件的配置的参数,所述一个或多个架构寄存器包括专用于存储锁地址的锁地址寄存器,该锁地址用于控制对于所述存储器中的区域的排他性访问;以及 指令译码器电路,被配置为译码指示存储器事务的启动的事务启动指令并且被配置为: (1)如果所述多个处理元件中的所述给定处理元件未正执行存储器事务,则生成一个或多个控制信号来控制从所述锁地址寄存器中读取所述锁地址;并且 (2)如果所述多个处理元件中的所述给定处理元件已正执行存储器事务,则进行下一步处理而无需从所述锁地址寄存器中读取所述锁地址。18.如权利要求17所述的装置,其中所述装置被配置为执行与多个不同的程序进程相对应的程序指令,其中所述多个处理元件中一个给定处理元件在给定时段内执行所述多个程序进程中一个给定程序进程,并且所述多个处理元件中所述一个给定处理元件的锁地址寄存器在所述给定时段期间存储针对所述多个程序进程中所述一个给定程序进程的锁地址。19.一种用于处理数据并且提供对于原子存储器事务的硬件支持的装置,所述装置包括: 多个处理装置,每个处理装置用于执行一系列程序指令;以及 存储器装置,用于存储由所述多个处理装置共享的数据值,其中 所述多个处理装置中的至少一个给定处理装置包括: 一个或多个架构寄存器装置,用于保持规定了所述多个处理装置中的至少一个处理装置的配置的参数,所述一个或多个架构寄存器装置包括专用于存储锁地址的锁地址寄存器装置,该锁地址用于控制对于所述存储器装置中的区域的排他性访问;以及 指令译码器装置,被配置为译码指示存储器事务的启动的事务启动指令并且被配置为: (1)如果所述多个处理装置中的所述给定处理装置未正执行存储器事务,则生成一个或多个控制信号来控制从所述锁地址寄存器装置中读取所述锁地址;并且 (2)如果所述多个处理装置中的所述给定处理装置已正执行存储器事务,则进行下一步处理而无需从所述锁地址寄存器装置中读取所述锁地址。20.—种使用对于原子存储器事务的硬件支持来处理数据的方法,所述方法包括以下步骤: 通过使用多个处理元件来执行一系列程序指令;以及 在存储器内存储由所述多个处理元件共享的数据值,其中: 所述多个处理元件中的一个给定处理元件执行以下步骤: 在一个或多个架构寄存器内保持规定了所述多个处理元件中的至少一个处理元件的配置的参数,所述一个或多个架构寄存器包括专用于存储锁地址的锁地址寄存器,该锁地址用于控制对于所述存储器中的区域的排他性访问;以及译码指示存储器事务的启动的事务启动指令并且: (I)如果所述多个处理元件中的所述给定处理元件未正执行存储器事务,则生成一个或多个控制信号来控制从所述锁地址寄存器中读取所述锁地址;并且 (2)如果所述多个处理元件中的所述给定处理元件已正执行存储器事务,则进行下一步处理而无需从所述锁地址寄存器中读取所述锁地址。
【文档编号】G06F9/46GK106068497SQ201580011400
【公开日】2016年11月2日
【申请日】2015年3月4日 公开号201580011400.5, CN 106068497 A, CN 106068497A, CN 201580011400, CN-A-106068497, CN106068497 A, CN106068497A, CN201580011400, CN201580011400.5, PCT/2015/50619, PCT/GB/15/050619, PCT/GB/15/50619, PCT/GB/2015/050619, PCT/GB/2015/50619, PCT/GB15/050619, PCT/GB15/50619, PCT/GB15050619, PCT/GB1550619, PCT/GB2015/050619, PCT/GB2015/50619, PCT/GB2015050619, PCT/GB201550619
【发明人】马修·詹姆斯·霍斯内尔, 理查德·罗伊·格里森思怀特, 斯图亚特·大卫·贝尔斯
【申请人】Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1