CN107003896B - 具有共享事务处理资源的装置和数据处理方法 - Google Patents

具有共享事务处理资源的装置和数据处理方法 Download PDF

Info

Publication number
CN107003896B
CN107003896B CN201580066172.1A CN201580066172A CN107003896B CN 107003896 B CN107003896 B CN 107003896B CN 201580066172 A CN201580066172 A CN 201580066172A CN 107003896 B CN107003896 B CN 107003896B
Authority
CN
China
Prior art keywords
processing
transaction
data
transactional
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580066172.1A
Other languages
English (en)
Other versions
CN107003896A (zh
Inventor
斯蒂芬·迪斯特尔霍斯特
马修·詹姆斯·霍斯内尔
盖伊·拉里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN107003896A publication Critical patent/CN107003896A/zh
Application granted granted Critical
Publication of CN107003896B publication Critical patent/CN107003896B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

具有多个处理元件(4、6、8)的装置(2)具有用于支持对事务的处理的共享事务处理资源(10、50、75),事务包括跟随在事务开始事件之后推测性地执行的操作,其结果跟随在事务结束事件之后被提交。事务处理资源可具有显著的开销,而在处理元件之间共享这些事务处理资源帮助减少能量消耗和电路面积。

Description

具有共享事务处理资源的装置和数据处理方法
技术领域
本技术涉及数据处理领域。更具体地,本技术涉及对事务的处理。
背景技术
一些数据处理装置可以支持对事务的处理,其中,在事务开始事件之后,随后推测性地执行后续的数据处理操作(例如,数据访问操作),直到事件结束事件发生,此时可以提交推测性地执行的操作的结果。如果在事务结束事件之前发生中止事件,则可以丢弃推测性结果。这种类型的处理可以被称为事务存储器,并且可以用于确保一系列操作原子地完成而不受其它处理的干扰。然而,事务的处理可能需要额外的资源才能正常运行,这可消耗硅片不动产和功率。
发明内容
从一个方面来看,本技术提供了一种装置,包括:
多个处理元件,用于执行数据处理;以及
在多个处理元件之间共享的用于支持事务的处理的至少一个事务处理资源,每个事务包括跟随在事务开始事件之后推测性地执行的一个或多个数据处理操作,针对事务的推测性地执行的数据处理操作的结果响应于事务结束事件而被提交;
其中至少一个事务处理资源支持每次针对最多M个处理元件的事务的处理,其中M小于处理元件的数量。
从另一方面来看,本技术提供了一种装置,包括:
用于执行数据处理的多个处理装置;以及
用于支持事务的处理的至少一个事务处理资源装置,每个事务包括跟随在事务开始事件之后推测性地执行的一个或多个数据处理操作,针对事务的推测性地执行的数据处理操作的结果响应于事务结束事件而被提交;
其中至少一个事务处理资源装置在多个处理装置之间共享;并且
至少一个事务处理资源装置支持每次针对最多M个处理装置的事务的处理,其中M小于处理装置的数量。
从另一方面来看,本技术提供了一种用于包括多个处理元件的装置的数据处理方法,该方法包括:
响应于事务开始事件,请求使用在多个处理元件之间共享的至少一个事务处理资源来进行事务的处理,其中所述至少一个事务处理资源支持每次针对最多M个处理元件的事务的处理,其中M小于处理元件的数量;以及
当至少一个事务处理资源可用于处理事务时:
使用至少一个事务处理资源来推测性地执行跟随在事务开始事件之后的一个或多个数据处理操作;并且
响应于事务结束事件,提交推测性地执行的数据处理操作的结果。
附图说明
从以下结合附图阅读的示例的描述中,本技术的其它方面、特征和优点将变得显而易见,其中:
图1示出了具有专用事务处理元件和多个通用处理元件的装置的示例,专用事务处理元件具有用于处理事务的资源,多个通用处理元件不具有支持事务的处理的资源;
图2示出了包括多个处理元件的装置的第二示例,其中一个处理元件支持通用处理和对事务的处理;
图3示出了包括在多个处理元件之间共享的事务处理资源的装置的示例;以及
图4示出了使用共享事务处理资源处理事务的方法。
具体实施方式
事务的处理可能需要额外的事务处理资源,这在电路面积和能量消耗方面可以是昂贵的。如果事务处理功能仅很少被要求,则这种特征的成本不可被收益所抵消。对于一些处理元件,与处理元件的其余微架构相比,事务处理资源的开销可以是显著的。此开销可以通过在多个处理元件之间共享至少一个事务处理资源以使得并非所有处理元件都能够同时处理事务而被抵消。通过避免在每个处理元件处对事务处理资源的重复,可以减少电路面积和功耗。在实践中,许多处理元件可能很少需要同时处理事务,因此此方法对整体性能的影响可相对较小,同时大大改善了面积和能效。
在一些实现中,至少一个事务处理资源可在任何给定时间仅支持处理元件之一处理事务,使得其它处理元件不能够处理事务,直至第一处理元件已经完成处理事务。在事务处理功能仅很少需要的情况下,这可以是足够的。在其它示例中,可存在允许两个或多个但小于处理元件总数的处理元件同时处理事务的事务资源。因而,通常可以有某一最大数量M的处理元件能够同时处理事务,其中M小于N(处理元件的总数)。
虽然给定的处理元件可以访问事务处理资源,它可处理单个事务或者可同时处理访问不同数据的多个事务。因而,虽然可以同时处理事务的处理元件的数量被限制为M,但是如果一些处理元件正在处理多个事务,则正在处理的事务的总数仍然可以大于M。
共享的事务处理资源可以是被提供以支持处理元件对事务进行处理的资源类型的范围中的任何一种。不是所有这些处理资源都需要在处理元件之间共享。有可能为每个处理元件单独提供一种类型的事务处理资源,同时共享另一类型的事务处理资源。
在一个示例中,事务处理资源可以是数据存储设备,用于存储跟踪为事务执行的推测性地执行的数据处理操作的结果的推测性数据。事务的处理可能需要大量的数据被推测性地保持,直到事务的结束,此时推测性数据被提交。可存在与将数据标记为推测性以及管理推测性数据并随后在事务完成时提交数据相关联的开销。例如,如果推测性数据被存储在也存储非推测性数据的共享缓存中,则可能需要额外的标志来区分推测性数据和非推测性数据,并且缓存控制器可能需要额外的电路用于确保标记为推测性的数据不被回写至更高级别的缓存或存储器。可以通过在多个处理元件之间共享用于推测性数据的数据存储设备和任何相关联的控制逻辑来减少与此资源相关联的开销。
共享事务处理资源的另一示例可以是用于存储状态恢复数据的数据存储设备,该状态恢复数据指示当在事务结束事件之前发生中止事件时要恢复到装置的至少一个存储位置的一个或多个数据值。使用状态恢复数据恢复的存储位置可以是存储器或缓存中的位置或寄存器。中止事件可出于各种原因而发生,诸如另一数据尝试访问在事务的处理期间已被访问的相同数据(冲突),或者如果事务处理资源不足以继续事务的处理。当发生中止事件时,事务被暂停,并且处理元件的状态可恢复到事务开始事件发生时呈现的状态。中止的事务可在稍后重试。状态恢复数据存储设备可引起显著的开销,特别是在多个事务正在被处理并且需要备份多个版本的状态数据时。通过在若干处理元件之间共享恢复数据存储设备,可以减少电路面积和功耗。
共享事务处理资源的另一示例可以是冲突检测电路,用于检测当另一数据访问操作指定与事务的数据访问操作之一相同的地址时的冲突。例如,冲突检测电路可以包括用于存储在事务期间执行的数据访问操作的地址的数据存储设备,并且可以将其它数据访问的地址与由冲突检测电路存储的地址进行比较。如果存在地址匹配,则可以检测到冲突,并且这可触发如上所述的中止事件。再次,用于跟踪已被访问的地址的存储设备以及用于将这些地址与正被访问的其它地址进行比较的关联电路具有面积和能量开销,这可通过在处理元件之间共享冲突检测电路来减少。
事务处理资源的另一示例可以是用于解码表示事务开始事件和/或事务结束事件的指令的指令解码器能力。虽然事务的开始和结束可以以多种方式来用信号通知(诸如通过接收外部信号),实现它的一个方便的方式是提供事务开始指令和后面的事务结束指令,事务开始指令当被执行时标记事务的开始,事务结束指令标记事务的结束。然而,这可能需要专用于事务开始/结束指令的指令集编码空间。在许多指令集架构中,指令编码空间可以是至关重要的,所以提供专用的事务开始/结束指令可阻止其它类型的指令被编码。因而,在若干元件之间共享用于事务的处理的指令集架构支持可以是有用的,从而使得不是所有的处理元件都需要能够执行事务开始指令或事务结束指令。如果不具有所需指令集架构支持的处理元件遇到事务开始指令,则可以触发异常,并且处理迁移到具有处理这些指令的能力的不同处理元件。
因而,存在可以在多个处理元件之间进行分时共享的多个资源,使得并非所有元件都可以同时处理事务。这使得能够在多处理元件系统中支持事务的处理,而没有与向每个元件提供其自己的资源相关联的高开销。
可以提供一种机制来查询事务处理资源的可用性。当处理元件遇到表示事务开始事件的事务开始指令时,它可以检查至少一个事务处理资源是否可用于处理事务,如果是,则触发使用资源对事务的处理。例如,可以通过向具有资源的另一处理元件或设备发送消息或者通过检查指示另一处理元件是否当前正在使用资源的可用性标志来检查可用性。如果事务开始指令不是遇到此指令的处理元件所支持的指令,则可以通过出现中止或异常事件然后执行相应的异常处置程序来触发对事务的处理,该异常处置程序可将事务的处理迁移到不同的处理元件。
此外,可存在将事务或事务功能卸载到其它处理元件的机制,其可以在硬件中实现或使用基于软件的机制(例如,使用异常处置程序)实现。当将事务卸载到另一处理元件时,可以在处理元件之间传递状态数据,使得第二处理元件可以基于先前在第一处理元件上的处理期间所达到的该处理元件的状态来继续处理事务。
还可以在至少一个处理元件或在共享资源内实现策略来处理对共享事务资源的并发访问。例如,可以提供仲裁器以在来自若干不同处理元件对于相同资源的请求之间进行仲裁。例如,仲裁可以根据轮询策略,或者基于与每个处理单元相关联的优先级值。
如果处理元件需要处理事务,但是至少一个事务处理资源当前不可用,则存在处理元件可以采取的各种动作。例如,动作可以包括以下任何内容:
·处理单元可以简单地推迟对事务的处理并等待资源变得可用。
·处理元件可以在事务处理资源处设置一些控制信息,其控制资源一旦它已完成其当前事务就开始处理该事务。例如,可以存在用于排队等待资源使用的待处理事务的事务队列。
·事务的处理可被迁移到另一处理元件,该另一处理元件可具有用于处理事务的其它资源。
·处理元件可以使用不需要至少一个事务处理资源的不同处理机制来触发对事务的数据处理操作的处理。例如,可以使用事务来实现对存储器的某些区域的独占访问,使得一系列操作可以原子地完成而没有来自其它进程的任何干扰。可存在可用于实现类似效果的其它机制,例如使用锁来确保对数据的独占访问,然后使用锁定的数据执行非推测性操作。因而,如果所需的事务处理资源不可用,则可以使用用于执行操作的锁定机制或另一非基于事务的技术。
·处理元件可切换到执行不同的处理线程。因而,如果要求事务的线程不能进行,处理元件可以使用等待事务处理资源变得可用所花费的时间来执行另一线程。
因而,如果处理事务所需的资源因为另一处理元件正在使用它而不可用,处理元件可以以多种方式响应。
这些类型的动作在某些情况下可能在硬件中得到支持,因此处理元件具有用于当所需资源不可用时触发这些动作中的一个或多个的某一电路。在其它情况下,软件可以控制处理元件(或另一处理元件)来执行这些动作。例如,如果所需资源不可用,则事务开始指令可以触发由处理元件发信号通知的异常状况,然后这可导致在软件中执行异常处置程序来控制此处理元件或不同的处理元件执行预定动作。
可存在实现共享事务处理资源的不同方式。在一个示例中,至少一个处理元件可以是具有用于支持事务的处理的至少一个事务处理资源的事务处置处理元件。至少一个其它处理元件可以不具有这样的事务处理资源。因而,如果由另一处理元件执行的进程或线程需要处理事务,则可以将对事务的处理迁移到事务处置处理单元。
在一些情况下,事务处置处理元件可以是支持使用事务处理资源的事务处理以及不需要事务处理资源的其它数据处理操作的处理二者的通用处理元件。例如,处理器核心的集群中的一个可以配备完整的事务存储器组件以及其它通用处理资源,而其它处理元件可以仅具有通用资源。
可替换地,事务处置处理元件可以包括专用于对事务的处理的专用事务处置处理元件并且可以不支持其它类型的操作。例如,可以在处理元件的集群中提供专用事务存储器加速器,其致力于代表集群中的其它处理元件执行事务。
当事务处置处理元件代表另一处理元件处理事务时,可以提供状态传送电路(例如,总线或互连)用于将状态数据传送到事务处置处理元件。例如,状态数据可以包括指示要执行的下一个指令的地址的程序计数器和/或指示另一处理单元的各种寄存器的状态的寄存器状态数据。一旦事务已完成,状态传送电路可以将状态从事务处置处理元件传回到另一处理元件,使得然后可使用另一处理元件继续后续的处理。在一些情况下,不是在事务开始处传送所有的状态数据,而可能仅传送事务的处理实际需要的状态数据。例如,程序计数器可以被首先传送,然后当事务内的每个指令被执行时,此指令的任何所需状态数据可以从其它处理元件传送。这可以通过避免传送实际未被事务使用的数据所花费的时间来帮助减少与状态传送相关联的延迟。可替换地,可以在检查共享资源的可用性时传送状态数据,以避免在资源实际变得可用时的进一步延迟。
当事务完成时,可以存在一些条件,在这些条件下抑制状态数据传回发起处理事务的请求的处理元件可以是更高效的。例如,另一处理元件可能需要由事务处置处理元件处理又一事务。通过在事务处置处理元件处保留源自先前事务的状态数据,该又一事务可在无需引起与状态传送相关联的任何进一步开销的情况下继续。另外,可能不存在要由事务处置处理元件处理的又一事务。如果包括事务的线程的后续处理可以由事务处置处理元件自身执行,则线程的处理可以在事务处置处理元件上继续,以避免与将处理传送回原始处理元件相关联的延迟和能量开销。当事务处置处理元件是也具有事务处置能力的通用处理元件时,该方法可能是有用的。
因而,在一些示例中,事务的处理期间的操作的推测性执行发生在事务处置处理元件处,但是可以由在另一处理元件上执行的线程来请求。
在其它示例中,事务的数据处理操作的执行仍然可发生在请求的处理元件处,但是处理元件可以使用在多个处理元件之间共享的至少一个资源。例如,共享存储结构可用于存储在事务的处理期间的跟踪数据。这允许事务处置所需的至少一些相对较大的数据结构(例如跟踪冲突检测、推测性数据版本化或寄存器检查点的存储设备)仅被实现一次或几次,而存储设备在不同的处理元件之间被分时共享。例如,复用电路可以复用来自各处理元件的访问共享跟踪结构的请求。利用这种方法,提供指示共享资源当前是否被处理元件使用的使用标志可以是有用的,使得其它处理元件能够确定它们是否能够处理事务。
图1示意性地示出了数据处理装置2的示例,数据处理装置2包括经由互连12与共享二级(L2)缓存14和存储器16通信并且彼此通信的多个处理元件(PE)4、6、8、10。例如,每个PE可以是处理器核心。在此示例中,三个PE 4、6、8是通用PE,其具有用于执行数据处理操作的处理流水线20、用于存储要由流水线20处理的数据的一组寄存器(R)22、和用于存储来自L2缓存14或存储器16的数据的缓存版本的一级(L1)缓存24。流水线20可以例如包括多个流水线级,例如,用于从存储器系统(L1缓存10、L2缓存14、或存储器16)抓取指令的抓取级、用于解码所抓取的指令的解码级、用于将由指令指定的架构寄存器说明符重命名为标识寄存器组22的物理寄存器的物理寄存器说明符的重命名级(如果提供)、用于发布以供执行的指令的发布级、以及用于执行解码的指令以执行诸如例如算术运算、逻辑运算、加载/存储操作之类的各种处理操作的一个或多个执行级。在一些情况下,流水线20可以支持无序执行。应当理解,简便起见,图1中的每个PE的表示是示意性的,并且在实践中每个PE可以具有图1中未示出的许多其它组件。互连12可以管理每个PE 4、6、8的L1缓存24和保存在L2缓存14或存储器16中的数据之间的一致性。
PE 10是用于应其它PE 4、6、8中的一者的请求而处理事务的专用事务处置PE。事务可以包括一系列处理操作,这包括数据访问操作(存储器读或写),这些操作跟随在标记事务的开始的事务开始指令之后被推测性地执行。推测性执行继续,直到遇到发信号通知事务的完成的事务结束指令。专用事务处置PE 10具有用于处理事务的共享事务处理资源,包括用于执行推测性处理操作的事务处理流水线30。例如,事务处理流水线30可以具有支持事务开始和结束指令的解码和执行的电路,其可不被PE4、6、8的通用流水线20支持。其它事务处理资源包括状态恢复存储设备32、冲突检测电路34、一些寄存器36和推测性结果存储设备40(例如可以是缓存)。
当PE 4、6、8中的一个遇到事务开始指令时,该PE可以向事务处置PE 10发送查询其可用性的请求。发起请求的PE 4可以向事务处置PE 10发送一些状态,包括程序计数器、来自寄存器22的状态、以及来自L1缓存24的数据。可在查询事务处置PE 10的可用性时或者随后一旦可用性被确认时传送此状态。寄存器状态和来自L1缓存24的数据由事务处置PE10保存到状态恢复存储设备32,作为稍后如果事务被中止则可被恢复的数据的备份版本。
中止事务的原因可有所不同,但常见的原因可能是检测到针对事务执行的数据访问与另一数据访问之间的冲突。冲突检测电路34存储跟踪在事务期间访问的地址的数据,将此数据与由其它PE 4、6、8或由其它事务访问的存储器地址进行比较,并且如果发现匹配则发信号通知冲突。如果检测到冲突,则事务被中止,并且存储设备32中保存的恢复数据被用于将数据恢复到装置中的各种存储位置,各种存储位置可以包括发起事务的PE 4、6、8的寄存器22或L1缓存24和/或事务处置PE本身的寄存器36或推测性结果存储设备40。
从发起事务的请求PE传送的状态数据也用于初始化寄存器36和推测性结果存储设备40,使得事务处置PE 10可以开始使用由请求PE保持的相同状态数据处理事务。在事务期间,事务处理流水线30可以执行各种处理操作。对于诸如算术运算之类的一些操作,这可导致寄存器36中的值被更新。对于数据访问操作,推测性值可以被加载到寄存器36、被放置到推测性结果存储设备40,或者从L2缓存14或存储器16中抓取。在图1的使用专用事务处置PE 10的示例中,可能不必要将推测性结果存储设备40中的数据标记为推测性的,因为此数据存储设备中的所有数据都将是源自事务处理的推测性数据。推测性结果存储设备40中的推测性数据被阻止写回到L2缓存14或存储器16。
假设没有发生中止事件,最终遇到事务结束指令,此时在事务期间生成的推测性状态被提交。数据可以写回到L2缓存14或存储器。此外,状态数据可以从寄存器36和推测性结果存储设备40被传送到发起事务的PE4、6、8的寄存器22和L1缓存24。可替换地,如果紧随先前事务之后要立即执行来自相同PE的另一事务,则可以抑制此状态数据的传送。如果发起事务的PE没有更多的事务要处理,事务处置PE 10变得可用于另一PE的处理。
以这种方式,与在PE 10内提供的用于事务处置的各种跟踪结构和指令集架构支持相关联的电路面积开销和能量消耗可以在PE 4、6、8之间分摊,使得不必要向每个PE提供此资源。
在处理一个PE 4的事务时,另一PE 6、8也可能有事务需要处理。如果事务处置PE10不可用,则另一PE 6、8可以采取各种动作,其可以由硬件或软件触发(例如使用异常处置程序)。例如,PE 6、8可以等待指定数量的周期,同时周期性地检查共享机制10是否可用。此外,PE 6、8可以向共享事务处置PE 10发信号通知它有事务需要处理,并且当事务处置PE10变得可用时,该事务处置PE 10然后可以切换为处理此待处理事务。此外,当资源不可用时,被阻挡的PE 6、8可以向正在执行的应用发信号通知事务被中止,然后软件可以采用补救动作,例如:等待和重试事务,使用用于并发控制的另一机制(例如使用锁),或者在多线程进程的情况下停止当前线程并执行不使用事务机制的另一线程。
在图1的示例中,共享事务处理资源被提供为不提供任何其它处理能力的专用事务PE 10。例如,事务PE 10可以被视为代表其它元件执行事务的事务加速器。
图2示出了其中事务处置PE 50也具有通用(GP)处理能力的另一示例。PE 4、6、8、互连12、L2缓存14和存储器16与图1中相同。然而,在此示例中,PE 50可以以与其它PE 4、6、8相同的方式执行代码,包括请求对事务的处理。通用PE 50具有与PE 4、6、8类似方式的L1缓存24、寄存器22和流水线20,但是对于PE 50,这些也分别用作推测性结果存储设备40、事务寄存器36和事务流水线30。例如,PE 50的L1缓存24中的数据可以被标记以指示该数据是与事务有关的推测性数据还是与其它操作有关的非推测性数据的标识符。类似地,流水线20中的操作可被标志为推测性的或非推测性的。此外,事务处置PE 50具有诸如恢复数据存储设备32和冲突检测电路34之类的额外事务资源。当PE 4、6、8、50中的任何一个需要处理事务时,它们可以检查PE 50中提供的事务处置资源是否可用,并且在可用时,可以以与图1所讨论的相同的方式处理事务,除了当代表事务处置PE 50自身处理事务时将不需要传送状态数据。
图3示出了具有在若干PE 4、6之间共享事务处理资源75的数据处理装置2的第三示例。这次,每个PE 4、6的处理流水线20以类似于图2的PE 50的流水线20的方式支持通用处理和对事务的处理二者。然而,用于存储恢复数据、冲突跟踪数据和推测性结果的跟踪结构32、34、40在PE之间共享。复用器70在任何给定时间选择PE 4、6中的哪一个可以访问共享资源75。使用标志72被维持以指示资源75是否当前正在使用。当PE4、6中的一个在使用标志72被清零(指示资源75未在使用中)时遇到事务开始指令时,此PE可以设置使用标志72以防止其它PE访问资源,并且然后开始使用资源75。另一方面,如果使用标志72已被设置,则资源不可用,并且然后可以执行上述补救动作之一。当使用资源时,可以由PE以类似于上面针对图1的PE 10讨论的技术来处理事务。
图4示出了处理事务的方法。在步骤100处,PE遇到事务开始指令。如果PE支持解码事务开始指令,那么它可以执行此指令以触发后续动作。如果未提供解码器支持,则可以发信号通知异常并且异常处置例程可以触发后续动作。无论哪种方式,在步骤102处,PE发送查询事务处理资源的可用性的请求,事务处理资源可以在相同的PE内或远程位置处。在步骤104处,确定事务处理资源是否可用。如果不可用,则在步骤106处,采取资源不可用的动作(例如上面讨论的任何动作)。如果有若干PE需要使用资源,则可以使用仲裁策略来确定哪个PE应首先获得对资源的访问。
如果资源可用于PE,则在步骤108处,PE通过自身处理事务(如果PE具有资源)、通过将事务的处理转移到另一PE、或者通过如图3的示例中使用共享跟踪结构来开始使用资源。使用标志72可被设置为指示资源现在正在使用。状态数据的备份被存储在恢复存储设备32中。在步骤110处事务被处理,其中操作被推测地进行并且推测性结果存储设备40被相应地更新。冲突检测电路34检测是否存在可触发中止的任何地址冲突。如果没有足够的事务处理资源来继续处置事务(例如,如果推测性结果存储设备40变满),也可以触发中止事件。
在步骤112处,确定是否存在中止状况。如果是这样,则在步骤114处,至少一个存储位置被恢复以来自数据存储设备32的状态。恢复的存储位置可以是寄存器22或36、L1缓存24或推测性结果存储设备40。在步骤116处,事务处理资源然后被释放以使得另一PE能够处理事务。
如果没有发生中止事件,则在步骤118处确定是否已经遇到事务结束指令。如果没有,则处理循环通过步骤112至118同时事务继续被处理。一旦事务完成,则在步骤120处,存储设备40中的推测性结果被提交,然后在步骤116处事务处理资源被释放。在资源释放时,使用标志72可被清零。
总而言之,事务存储器需要额外的资源来正常工作,这将消耗硅片不动产和功率。如果这样的功能仅很少需要,这种特征的成本不可被益处所抵消。特别是在小核心(A7,A53,M类)中,用于(1)冲突检测、(2)数据版本化、(3)寄存器检查点、和(4)ISA支持的逻辑的开销在剩余的微架构上会是显著的。在这些情况下,在多个核心之间共享事务存储器逻辑因此是可取的。这可以例如通过使得集群中的一个核心配备以完整的事务存储器组件、在集群中具有专用事务存储器加速器(集中于代表集群中的通用核心执行事务的特殊处理器核心)、或通过仅实现用于事务跟踪所需的大数据结构一次并在各个小核心之间进行分时共享来实现。此应用描述了对可用资源进行分时共享而不限制实际选取的实现变体的多种方式。可存在查询远程事务执行器资源的可用性的机制、将事务或事务功能卸载至执行器的机制、以及如何处理对共享事务资源的并发访问的策略。
事务存储器(TM)是通过开始和结束标记符指令(通常被称作推测/提交,或者txbegin/txend)将在CPU上执行的指令分组到事务中的机制。这些指令向处理器发信号通知事务即将开始/结束,并且所有随后的指令将(不再)成为事务的一部分。存在许多针对TM的学术和行业提案,包括微处理器中的商业可用实现。被分组到事务中的指令如前所述流经微处理器的流水线,但在事务开始时,做出对寄存器和存储器状态的快照。寄存器和存储器状态的这个快照允许在检测到中止原因时将事务回滚回初始状态。快照包括两个组件,寄存器文件快照和撤消在事务期间已对存储器做出的修改的机制。如果事务执行结束指令,它不能再中止,并且快照被丢弃并且事务提交。
中止原因可能会有所不同,但最显著的原因是在一个事务中访问的数据与其它存储器访问之间的数据冲突。通常,目的是不允许对事务中访问的存储器进行任何并发写入以及从已经在进行中的事务中被修改的数据中进行并发读取。如果事务执行此冲突检测并在冲突时中止,则此事务将与其它观察者隔离或原子地执行。优点是这些事务可以在其中同步是重要的多线程应用中使用。由于动态性质,两个事务如果它们彼此不冲突则可以并发执行(避免锁的串行瓶颈)。在大多数情况下,实际的数据冲突被预计是很少的,所以事务存储器可以解锁多线程应用的附加性能。
查询事务资源的可用性
如果处理遇到事务开始指令但不具有所需的事务机制,则它可以查询可用的共享机制以确定该共享机制是否可用。这可以例如意味着在总线上发送分组到集群中的TM使能的核心、加速器或总线连接的共享TM资源;或者检查共享TM逻辑的“在使用中”信号/字段。如果资源可用,则事务将获取TM逻辑(通过发送另一获取分组或设置在使用中位字段),并发送事务以便远程执行(加速器/TM使能的核心)或直接使用共享机制。在远程执行单元的情况下,可以通过发送寄存器状态(包括程序计数器/指令指针)并通过自事务入口指令起的执行来继续在远程实体上执行的手段来将事务发送到远程核心/加速器。在共享事务存储器资源(缓冲器)的情况下,本地核心将直接使用组件(借助于复用器、总线等),而其它用户由于设置的在使用中位而被阻止使用资源。
未能获取共享事务存储器机制
如果共享事务存储器机制在使用中,则核心不能执行当前事务。可以执行若干机制作为补救动作:
(1)处理器可以等待(指定的)周期数,同时周期性地重复检查共享机制是否可用。这会意味着事务开始指令需要更长的时间来执行。
(2)核心可能向应用发信号通知事务已中止并且让软件采取补救动作(例如等待和重试),或者使用其它机制进行并发控制(抓住全局锁)
(3)在多线程处理器的情况下,核心可停止当前硬件线程并执行不使用事务机制的另一硬件线程。
替代(1)中的轮询,未成功的核心/线程也可以留下消息给共享事务机制,使得:只要当前执行的事务完成/中止,共享事务机制将处置请求并唤醒/恢复事务的执行。
事务机制的使用
事务中的指令通过使用用于冲突检测和寄存器检查点的TM机制(在专用TM核、加速器、或来自原始核心的共享TM资源上)推测性地执行。在此时间期间,集群中的其它核心不能执行事务。
事务的完成
如果事务完成,它们可以释放事务资源/机制,并允许其它等待的事务运行。在共享事务资源(例如用于事务存储设备的版本化的缓冲器)的情况下,资源被释放(在使用中的位被去设置),并且执行事务的核心继续执行跟随事务后面的指令。
在使用TM使能的核心/加速器的情况下,事务结束之后的状态应当最终被移回原始执行指令流的核心。这意味着在事务结束时的寄存器状态(包括程序计数器/指令指针、堆栈指针等)需要再次被传送回原始核心。
在单个核心一回回地执行多个事务的情况下,或者一般而言如果没有其它核心想要使用事务存储器机制,则这样的传输可能是昂贵的。因此,如果没有记录来自另一核心的其它请求,则在该TM使能的核心/加速器上继续后事务流的执行是可取的。
取决于握手(轮询相对于留下唤醒请求),事务端可以在事务结束时检查唤醒请求的邮箱,并唤醒等待的线程/核心中的一个并且发信号通知它们事务机制的可用性。
替代方案
用于查询可用性、获取资源、发送寄存器状态和请求唤醒的消息可以全部组合成较小数量的复合消息。例如,核心可初始地发送包含完整寄存器状态的消息,并且如果TM使能的核心/加速器被释放,则它将立即开始执行。如果该机制在使用中,那么它将排入寄存器状态并且一旦当前执行的事务完成,TM核心将立即根据保存的寄存器状态执行下一待处理指令。
TM核心/加速器可以决定立即重试失败的事务而不是挑选一个等待的事务来执行。这种行为可以由系统策略以及驱动预测逻辑的过去行为引导。
在使用特定事务处置处理元件的示例中,除了共享资源来处理事务的电路面积和能量优点之外,事务的集中执行在一些场景中也具有一些性能改进,例如,由于缓存消息的数量减少。
实现方式变体
除了三个建议的硬件实现:
(1)TM使能的全微处理器核心
(2)以TM为中心的加速器核心(具有可能精简的指令集)
(3)事务存储器资源(冲突检测逻辑,缓冲区版本控制,寄存器快照存储)的共享,
存在将部分策略卸载到软件的其它选项。
通过生成软件可见信号(具有特殊标志的事务中止)或异常,(1)和(2)的这种机制的软件管理的形式是可能的,从而使得应用可以通过发送包含实时寄存器/变量和指令指针的软件消息来执行代码到TM使能的核心/加速器的迁移。这样的行为被建议用于上文链接的公开中的关键节段。
扩展/灵活性
作为仅提供单个共享资源/TM机制的替代,更多数量的可共享资源可以是可用的(例如,用于8个TM禁用核心的两个TM使能核心,或者用于8个核心的两个版本化缓冲器)。本技术容易通过检查多个资源中之一的可用性并且仅在所有可用的共享资源/机制在使用中时才经过停止/中止路径来扩展到这些情况。益处是,如果这些机器的预期SW使用已经被拾取,则硬件实现可允许TM机制的更高级别的并发使用。
在本申请中,词语“配置为...”用于表示装置的元件具有能够执行定义的操作的配置。在此上下文中,“配置”表示指硬件或软件的互连的布置或方式。例如,装置可以具有提供定义的操作的专用硬件,或者可被编程以执行功能的处理器或其它处理设备。“配置为”并不暗示装置元件为了提供定义的操作而需要以任何方式改变。
虽然本文参考附图已经详细描述了本发明的说明性实施例,但是应当理解,本发明不限于那些精确实施例,并且本领域技术人员可以在其中实现各种改变和修改而不脱离由所附权利要求限定的本发明的范围和精神。

Claims (20)

1.一种数据处理装置,包括:
多个处理元件,用于执行数据处理;以及
在所述多个处理元件之间共享的用于支持对事务的处理的至少一个事务处理资源,每个事务包括跟随在事务开始事件之后推测性地执行的一个或多个数据处理操作,针对事务的推测性地执行的数据处理操作的结果响应于事务结束事件而被提交;
其中所述至少一个事务处理资源支持每次针对最多M个处理元件的事务的处理,其中M小于处理元件的数量,
其中所述至少一个事务处理资源包括用于存储状态恢复数据的数据存储设备,状态恢复数据指示在所述事务结束事件之前发生中止事件时要被恢复至所述装置的至少一个存储位置的一个或多个数据值,并且
其中用于存储所述状态恢复数据的所述数据存储设备在所述多个处理元件之间共享。
2.如权利要求1所述的装置,其中所述至少一个事务处理资源包括用于存储跟踪所述推测性地执行的数据处理操作的结果的推测性数据的数据存储设备。
3.如权利要求1所述的装置,其中所述至少一个事务处理资源包括冲突检测电路以检测当另一数据访问操作指定与所述事务的数据访问操作相同的地址时的冲突。
4.如权利要求1所述的装置,其中响应于表示所述事务开始事件的事务开始指令,所述处理元件中的至少一个处理元件被配置为检查所述至少一个事务处理资源是否可用于处理事务,并且在所述至少一个事务处理资源可用时触发使用所述至少一个事务处理资源对所述事务的处理。
5.如权利要求4所述的装置,其中当所述至少一个事务处理资源不可用于处理所述事务时,处理元件中的所述至少一个处理元件被配置为执行预定动作,其中所述预定动作包括以下各项中的至少一项:
推迟对所述事务的处理;
设置控制信息用于在所述至少一个事务处理资源变得可用时控制所述至少一个事务处理资源处理所述事务;
把对所述事务的处理迁移至另一处理元件;
使用不需要所述至少一个事务处理资源的处理机制来触发对所述事务的数据处理操作的处理;以及
切换为不同线程的处理的执行。
6.如权利要求5所述的装置,其中当所述至少一个事务处理资源不可用时,处理元件中的所述至少一个处理元件被配置为发信号通知异常状况以触发异常处置程序执行所述预定动作。
7.如任何前述权利要求所述的装置,其中所述多个处理元件包括事务处置处理元件,该事务处置处理元件包括所述至少一个事务处理资源。
8.如权利要求7所述的装置,其中所述事务处置处理元件包括支持对事务的处理以及对其它数据处理操作的处理的通用处理元件。
9.如权利要求7所述的装置,其中所述事务处置处理元件包括专用于对事务的处理的专用事务处置处理元件。
10.如权利要求7所述的装置,其中不具有所述至少一个事务处理资源的另一处理元件被配置为发送请求所述事务处置处理元件代表所述另一处理元件执行对事务的处理的请求。
11.如权利要求10所述的装置,包括状态传送电路以把状态数据从所述另一处理元件传送至所述事务处置处理元件。
12.如权利要求10所述的装置,包括状态传送电路以跟随在所述对事务的处理的完成之后把状态数据从所述事务处置处理元件传送至所述另一处理元件。
13.如权利要求12所述的装置,其中所述状态传送电路被配置为在跟随在所述对事务的处理的完成之后满足预定条件时抑制所述状态数据到所述另一处理元件的传送。
14.如权利要求7所述的装置,其中所述至少一个事务处理资源包括能够解码表示所述事务开始事件的事务开始指令或者表示所述事务结束事件的事务结束指令的指令解码电路。
15.如权利要求7所述的装置,其中不具有所述至少一个事务处理资源的处理元件被配置为在遇到表示所述事务开始事件的事务开始指令时发信号通知异常状况。
16.如权利要求15所述的装置,其中响应于所述异常状况,在所述多个处理元件中的一个处理元件上执行的异常处置程序被配置为触发由所述事务处置处理元件对所述事务的处理。
17.如权利要求1至6中任一项所述的装置,包括能够执行所述对事务的处理的多个处理元件;
其中所述至少一个事务处理资源包括至少一个共享存储结构以在由所述处理元件中的一个处理元件对事务的处理期间存储跟踪数据。
18.如权利要求17所述的装置,其中所述至少一个事务处理资源具有相关联的使用标志,该使用标志指示所述至少一个事务处理资源当前是否正被用于由所述处理元件中的一个处理元件对事务的处理。
19.一种数据处理装置,包括:
用于执行数据处理的多个处理装置;以及
用于支持事务的处理的至少一个事务处理资源装置,每个事务包括跟随在事务开始事件之后推测性地执行的一个或多个数据处理操作,针对事务的推测性地执行的数据处理操作的结果响应于事务结束事件而被提交;
其中所述至少一个事务处理资源装置在多个处理装置之间共享;并且
所述至少一个事务处理资源装置支持每次针对最多M个处理装置的事务的处理,其中M小于处理装置的数量,
其中所述至少一个事务处理资源包括用于存储状态恢复数据的装置,状态恢复数据指示在所述事务结束事件之前发生中止事件时要被恢复至所述装置的至少一个存储位置的一个或多个数据值,
其中用于存储所述状态恢复数据的所述装置在所述多个处理元件之间共享。
20.一种用于包括多个处理元件的装置的数据处理方法,所述方法包括:
响应于事务开始事件,请求使用在所述多个处理元件之间共享的至少一个事务处理资源来进行事务的处理,其中所述至少一个事务处理资源支持每次针对最多M个处理元件的事务的处理,其中M小于处理元件的数量;以及
当所述至少一个事务处理资源可用于处理所述事务时:
使用所述至少一个事务处理资源来推测性地执行跟随在事务开始事件之后的一个或多个数据处理操作;并且
响应于事务结束事件,提交推测性地执行的数据处理操作的结果,
其中所述至少一个事务处理资源包括用于存储状态恢复数据的数据存储设备,状态恢复数据指示在所述事务结束事件之前发生中止事件时要被恢复至所述装置的至少一个存储位置的一个或多个数据值,
其中用于存储所述状态恢复数据的所述数据存储设备在所述多个处理元件之间共享。
CN201580066172.1A 2014-12-19 2015-11-24 具有共享事务处理资源的装置和数据处理方法 Active CN107003896B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1422791.2A GB2533414B (en) 2014-12-19 2014-12-19 Apparatus with shared transactional processing resource, and data processing method
GB1422791.2 2014-12-19
PCT/GB2015/053568 WO2016097679A1 (en) 2014-12-19 2015-11-24 Apparatus with shared transactional processing resource, and data processing method

Publications (2)

Publication Number Publication Date
CN107003896A CN107003896A (zh) 2017-08-01
CN107003896B true CN107003896B (zh) 2021-05-18

Family

ID=54771148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580066172.1A Active CN107003896B (zh) 2014-12-19 2015-11-24 具有共享事务处理资源的装置和数据处理方法

Country Status (4)

Country Link
US (1) US10908944B2 (zh)
CN (1) CN107003896B (zh)
GB (1) GB2533414B (zh)
WO (1) WO2016097679A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599441B2 (en) * 2017-09-04 2020-03-24 Mellanox Technologies, Ltd. Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator
EP3462308B1 (en) * 2017-09-29 2022-03-02 ARM Limited Transaction nesting depth testing instruction
CN107729052A (zh) * 2017-10-16 2018-02-23 郑州云海信息技术有限公司 一种数据操作方法、装置、设备及计算机可读存储介质
US10963383B2 (en) * 2018-05-15 2021-03-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Hardware assisted remote transactional memory
JP6912421B2 (ja) * 2018-06-01 2021-08-04 ファナック株式会社 制御装置
US10783031B2 (en) * 2018-08-20 2020-09-22 Arm Limited Identifying read-set information based on an encoding of replaceable-information values
GB2579246B (en) * 2018-11-28 2021-10-13 Advanced Risc Mach Ltd Apparatus and data processing method for transactional memory
KR20210003370A (ko) 2019-07-02 2021-01-12 삼성전자주식회사 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치
CN111797107B (zh) * 2020-07-08 2024-02-09 贵州易鲸捷信息技术有限公司 混合乐观锁和悲观锁的数据库事务并发控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492324A (zh) * 2002-09-17 2004-04-28 �Ҵ���˾ 多处理器存储器一致性的高效仿真方法和系统
CN1726468A (zh) * 2002-12-05 2006-01-25 国际商业机器公司 状态信息的跨分区共享

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7533237B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip memory allocation for a unified shader
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
US8429656B1 (en) * 2006-11-02 2013-04-23 Nvidia Corporation Thread count throttling for efficient resource utilization
CN101430650B (zh) * 2007-11-07 2013-02-06 国际商业机器公司 用于事务内存的方法和设备
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US8041900B2 (en) * 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
JP2011529603A (ja) * 2008-07-28 2011-12-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド バーチャル化可能な高度な同期機構
CN101739298B (zh) * 2008-11-27 2013-07-31 国际商业机器公司 共享缓存管理方法和系统
US9569254B2 (en) * 2009-07-28 2017-02-14 International Business Machines Corporation Automatic checkpointing and partial rollback in software transaction memory
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8739186B2 (en) 2011-10-26 2014-05-27 Autodesk, Inc. Application level speculative processing
US9268596B2 (en) * 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
US9298469B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8914586B2 (en) * 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
US9208090B2 (en) * 2012-08-31 2015-12-08 Silicon Graphics International Corp. Transactional memory proxy
CN103399894A (zh) 2013-07-23 2013-11-20 中国科学院信息工程研究所 一种基于共享存储池的分布式事务处理方法
IN2013CH04449A (zh) * 2013-09-30 2015-04-03 Empire Technology Dev Llc
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
US20150242216A1 (en) * 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9501411B2 (en) * 2014-08-29 2016-11-22 International Business Machines Corporation Cache backing store for transactional memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492324A (zh) * 2002-09-17 2004-04-28 �Ҵ���˾ 多处理器存储器一致性的高效仿真方法和系统
CN1726468A (zh) * 2002-12-05 2006-01-25 国际商业机器公司 状态信息的跨分区共享

Also Published As

Publication number Publication date
US20170269960A1 (en) 2017-09-21
GB2533414A (en) 2016-06-22
WO2016097679A1 (en) 2016-06-23
GB2533414B (en) 2021-12-01
US10908944B2 (en) 2021-02-02
CN107003896A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
CN107003896B (zh) 具有共享事务处理资源的装置和数据处理方法
US7882339B2 (en) Primitives to enhance thread-level speculation
JP5054665B2 (ja) スリープ‐起動機構を用いた比較および交換動作
US7178062B1 (en) Methods and apparatus for executing code while avoiding interference
US9626187B2 (en) Transactional memory system supporting unbroken suspended execution
US8180977B2 (en) Transactional memory in out-of-order processors
US8180967B2 (en) Transactional memory virtualization
US6044430A (en) Real time interrupt handling for superscalar processors
JP5404574B2 (ja) マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
US20110208921A1 (en) Inverted default semantics for in-speculative-region memory accesses
US20090119459A1 (en) Late lock acquire mechanism for hardware lock elision (hle)
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
US11579873B2 (en) Handling load-exclusive instructions in apparatus having support for transactional memory
US20050283783A1 (en) Method for optimizing pipeline use in a multiprocessing system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant