事务结束加上持续性提交指令、处理器、方法和系统与流程

文档序号:14958858发布日期:2018-07-18 00:07阅读:261来源:国知局

本文描述的实施例总体上涉及处理器。具体地,本文描述的实施例总体上涉及具有针对持久性存储器的架构支持的处理器。



背景技术:

处理器经常用于计算机系统以及具有用于存储数据的主存储器的其他电子装置中。处理器可以执行用于访问主存储器中的数据的指令。例如,处理器可以执行用于从主存储器加载或读取数据的加载指令和/或用于向主存储器写入或以其他方式存储数据的存储指令。主存储器通常用动态随机存取存储器(dram)或其他易失性存储器来实施。这种计算机系统和其他电子装置中的一个挑战是电源故障、系统崩溃、以及可能发生的存储在dram或其他易失性存储器中的数据会丢失的各种其他类型的错误。

附图说明

可以通过参考以下用于展示实施例的描述和附图来最佳地理解本发明。在附图中:

图1是可以实施本发明的一些实施例的计算机系统的实施例的框图。

图2是适用于一些实施例的嵌套事务的示例的方框流程图。

图3是能操作用于执行事务结束加上持久性提交指令的实施例的处理器的实施例的框图。

图4是执行事务结束加上持久性提交指令的实施例的方法的实施例的方框流程图。

图5是框图,展示了用于允许在事务内进行的某些存储被非推测性地执行并且旁路(bypass)事务性执行的第一种适当方法。

图6是框图,展示了用于允许在事务内进行的某些存储被非推测性地执行并且绕过事务性执行的第二种适当方法。

图7是框图,展示了用于允许在事务内进行的某些存储被非推测性地执行并且绕过事务性执行的第三种适当方法。

图8a是框图,展示了有序流水线的实施例和寄存器重命名乱序发布/执行流水线的实施例。

图8b是处理器核的实施例的框图,所述处理器核包括耦合至执行引擎单元的前端单元,并且所述执行引擎单元和所述前端单元两者都耦合至存储器单元。

图9a是单个处理器核的实施例连同其与管芯上互连网络的连接以及连同其2级(l2)高速缓存的本地子集的框图。

图9b是图9a的处理器核的一部分的展开视图的实施例的框图。

图10是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成显卡的处理器的实施例的框图。

图11是计算机架构的第一实施例的框图。

图12是计算机架构的第二实施例的框图。

图13是计算机架构的第三实施例的框图。

图14是计算机架构的第四实施例的框图。

图15是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

本文所公开的是事务结束加上持久性提交指令(transactionendpluscommittopersistenceinstruction)、用于执行所述指令的处理器、当执行所述指令时由所述处理器执行的方法、包含有一个或多个用于执行所述指令的处理器的系统、以及包括所述指令的程序(或存储程序的机器可读存储介质)。在一些实施例中,处理器可以包括:用于接收指令的单元、组件、逻辑或模块(例如,解码单元);以及响应于所述指令而用于确保具有某种特性的某些先前存储至持久性存储器操作(例如,已经被接受到存储器的那些操作)已经被持久地存储并且结束事务性存储器事务的一个或多个单元、组件、逻辑或模块(例如,执行单元)。在以下描述中,阐述了许多具体细节(例如,具体指令操作、处理器配置、微架构细节、操作序列、用于日志记录的示例等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他实例中,未详细示出众所周知的电路、结构和技术,以避免模糊对所述描述的理解。

图1是可以实施本发明的实施例的计算机系统100的实施例的框图。在各个实施例中,计算机系统可以是台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如,路由器或交换机)、媒体播放器、智能电视、上网机、机顶盒、视频游戏控制器或其他类型的电子装置。计算机系统包括处理器102和与所述处理器耦合的持久性存储器104。处理器和持久性存储器可以通过一个或多个常规耦合机制106(例如,通过一个或多个总线、中枢、存储器控制器、芯片组组件等)来彼此耦合或以其他方式彼此进行通信。

处理器102包括多个处理元件或逻辑处理器108。在图示中,示出了第一逻辑处理器108-1至第n逻辑处理器108-n,其中,逻辑处理器(n)的数量可以表示适用于特定实施方式的任何期望数量。数量n的可能示例包括但不限于2、3、4、5、6、7、8、16、20、32、50、64、100、128或者少于或多于128的其他数量。合适逻辑处理器或处理器元件的示例包括但不限于核、硬件线程、线程单元、线程槽、能操作用于存储上下文或架构状态和程序计数器或指令指针的逻辑、能操作用于存储状态并且独立地与代码相关联的逻辑等。

第一逻辑处理器108-1与第一组一个或多个层级的专用高速缓存110-1耦合。同样地,第二逻辑处理器108-n与第二组一个或多个层级的专用高速缓存110-n耦合。处理器还可选地具有一个或多个层级的共享高速缓存112,所述共享高速缓存与专用高速缓存110相比距执行单元相对更远。本发明的范围不限于任何已知数量的高速缓存安排。广泛地,在各个实施例中,处理器可以具有零个或更多个专用高速缓存以及零个或更多个共享高速缓存。当处理器想要将数据存储至持久性存储器时,数据经常可以首先被存储在高速缓存中。

再次参照图1,计算机系统具有包括一个或多个存储器控制器116的存储器子系统单元114。在一些实施例中,计算机系统可以仅包括单个存储器控制器。在其他实施例中,计算机系统可以包括两个或更多个存储器控制器。在一方面,(多个)存储器控制器可以是单片地位于与处理器同一管芯上(例如,与包括解码器及其执行单元的逻辑处理器一起位于管芯上)的管芯上存储器控制器。在另一方面,(多个)存储器控制器可以可选地关于逻辑处理器位于管芯外(例如,在芯片组组件的单独管芯中)。存储器子系统单元和/或(多个)存储器控制器可以可操作为与持久性存储器104耦合(例如,通过耦合机制106)。(多个)存储器控制器具有用于暂时缓冲或以其他方式存储正在被存储或写入至持久性存储器的过程中的数据的写等待缓冲器(writependingbuffer)118。

计算机系统还包括持久性存储器104。尽管未示出,计算机系统还可以可选地具有非持久性存储器(例如,dram或适用于主存储器或主要存储器的其他类型的存储器)。顾名思义,持久性存储器可以能操作用于持久地或耐久地存储数据。在一些实施例中,即使在失去电源、操作系统故障、系统崩溃、系统重启等情况下,持久存储的数据也可能不会丢失。合适形式的持久性存储器的示例包括但不限于非易失性存储器或存储设备、电池(或其他合适的电源)支持的易失性存储器或存储设备、及其组合。通常,易失性存储器或存储设备在相对较短的时间段上不供电时会丢失其存储的数据或内容。然而,用电池(或其他可靠的备用电源,诸如电容、燃料电池单元等)支持易失性存储器或存储设备可以有助于使易失性存储器足够持久而被认为是持久性存储器。非易失性存储器和存储装置原生地能操作用于即使在相对较长时段没有供电之后(例如,通常至少一天或经常在没有电源的情况下更长时间)也保留其存储的数据或内容。

用于持久性存储器104的合适类型的存储器和/或存储设备的具体示例包括但不限于电池(或其他合适的电源)支持的动态随机存取存储器(dram)和/或其他形式的易失性存储器和非易失性存储器或存储设备。合适形式的原生非易失性存储器或存储设备的示例包括但不限于基于相变存储器(pcm)、忆阻器(例如,与电荷和磁通链有关的非线性无源两端子电气部件)、和自旋转移转矩存储器(例如,其利用可以使用自旋极化电流来修改磁隧道结或自旋阀中的磁层的取向的效应)及其组合的那些存储器,仅举几个例子。未来开发的作为这些技术的扩展或改进或完全不同的技术的其他技术也可能是合适的。而且,通常在计算机系统中用作辅助支持存储器的其他形式的非易失性存储器也可能是合适的。示例包括但不限于硬盘、磁带、其他类型的磁存储装置、各种类型的只读存储器(rom)、光盘、铁电ram(f-ram)以及磁阻ram。虽然,这种形式的存储器通常具有较慢的访问速度和/或倾向于支持上述较新类型的非易失性存储器的其他特性。本发明的范围不限于任何特定类型的持久性存储器。

在一些实施例中,单独或与可选易失性存储器(未示出)组合的持久性存储器可以用于实施计算机系统的主要或主存储器。在一些实施例中,单独或与可选易失性存储器组合的持久性存储器可以是可寻址物理地址空间的处理器的一部分。软件可以能够通过执行至少一个用户级加载指令、用户级存储指令、以及处理器的指令集其他指令来访问持久性存储器,类似于这种指令能够访问易失性主存储器/主要存储器(例如,dram)的方式。在一些实施例中,持久性存储器可以是字节可寻址的,而不仅仅是仅页/块可寻址的。在一些实施例中,持久性存储器可以可选地直接与处理器存储器总线耦合。在一些实施例中,对持久性存储器的访问可能经受与对易失性主存储器/主要存储器(例如,dram)的访问相同或基本上类似的处理器存储器模型(例如,关于被高速缓存的能力、一致性、处理器存储器排序、存储器类型等)。

在一些实施例中,存储至持久性存储器可以共享处理器和/或计算机系统的与存储至易失性主存储器/主要存储器(例如,dram)相同的易失性微架构资源中的至少一些,如例如,处理器存储缓冲器、一致性高速缓存(例如,l1、l2等)、任何可选存储器侧高速缓存、片上和片外互连缓冲器、存储器控制器写缓冲器(例如,写等待缓冲器118)等。在一些实施例中,持久性存储器可以作为持久性存储器被识别到系统软件。在一些实施例中,基本输入输出系统(bios)可以支持持久性存储器,例如,用于配置某些组件(例如,(多个)存储器控制器、存储器装置(例如,双列直插存储器模块(dimm))、系统地址解码器等)以便利用持久性存储器,并且将持久性存储器识别为与系统软件(例如,操作系统、虚拟机监视程序等)的非持久性存储器不同。

将数据持久地或耐久地存储在持久性存储器104中的能力对于各种应用和/或实施方式都是有用的。例如,在一些应用和/或实施方式(例如,数据库应用)中,即使在电源故障、系统崩溃、重启等情况下也不会丢失数据可能是重要的。在这种应用/实施方式中,经常对共享数据120(例如,共享数据结构)执行写入,并且关于这种共享数据实施某些保证经常是有利的。作为一个示例,提供acid(atomicity,consistency,isolation,durability;原子性,一致性,隔离性,耐久性)保证经常是有用的。持久性存储器在这方面(例如,关于耐久性)上可以有所帮助。

然而,确保数据被持久地存储至持久性存储器104中可能倾向于带来附加挑战。一方面,处理器可以具有各种中间易失性微架构组件和/或存储设备,在这些组件和存储设备中,与存储至存储器指令/操作相关联的数据可以暂时存储在其到持久性存储器的路径上。这种易失性组件和/或存储设备的可能示例包括但不限于处理器存储缓冲器、(多个)一致性高速缓存(例如,高速缓存110、112)、存储器子系统单元114中的中间易失性存储设备(例如,(多个)存储器控制器的写等待缓冲器118)、任何可选存储器侧高速缓存、片上互连缓冲器等。这种易失性组件/存储设备通常无法在电源故障、操作系统故障、系统崩溃、重启等情况下保留其数据或内容。朝向持久性存储器存储的数据在其实际上被存储在持久性存储器中(或至少在中间电源故障保护的存储装置或缓冲器中,如果其可选地被实施的话)之前实际上未变成持久或耐久的。如本文所使用的,将数据存储在持久性存储器中包括将数据存储在这种可选的受中间电源故障保护的存储装置或缓冲器(其也被认为对于特定实施方式是足够持久的)中。因此,如果电源故障、系统崩溃、操作系统故障、重启等将要发生,同时数据存储在这种易失性组件或存储设备(例如,在(多个)存储器控制器116中的写等待缓冲器118)中,则数据通常将丢失而未实现期望的持久性。

如所提及的,处理器可以具有从多个(即,至少两个)到潜在地/可选地大量的逻辑处理器108。在具有从多个到潜在地/可选地大量的逻辑处理器的系统中可能遇到的一个挑战是在逻辑处理器之中增加的数据共享和/或更多的需要同步或者以其他方式控制对逻辑处理器之中的共享数据的并发访问的趋势。在操作期间,逻辑处理器108中的两个或更多个可以访问共享数据120。通常需要对由系统中的不同逻辑处理器对共享数据的访问进行控制以防止对数据的可能导致错误结果的冲突访问。在一些实施例中,共享数据可以可选地存储在持久性存储器中,具体地存储在持久性存储器的第二部分124中。可替代地,在其他实施例中,共享数据可以可选地存储在其他地方,例如,dram或其他易失性存储器(未示出)中。

同步或以其他方式控制对共享数据120的并发访问的一种方式涉及使用锁或信号量(semaphore)来保证跨多个逻辑处理器的访问的互斥。锁或信号量可以用于串行化对共享数据的访问。例如,给定的逻辑处理器可以获取与给定的数据相对应的锁以便防止其他逻辑处理器修改给定的数据,在所述给定的逻辑处理器已经获取锁之后原子地修改给定的所述给定的数据,并且然后释放锁从而使得其他逻辑处理器可以访问经修改的数据。然而,信号量或锁的这种使用可能倾向于具有某些缺点,如例如,由于不必要的执行串行化导致的低效率、与管理所述锁相关联的编程时的复杂性、针对逻辑处理器之中的锁的假争用等。另外,这种挑战通常倾向于随着逻辑处理器的数量的增加而增大。

因此,有助于减少锁或信号量的这种使用的方法可能倾向于是有益的。在一些实施例中,处理器102和/或至少第一逻辑处理器108-1可以能操作用于支持事务性执行。事务性执行(transactionalexecution)有时还被称为事务性存储器(transactionalmemory)。事务性执行表示用于对由逻辑处理器108对共享数据120的并发访问进行控制的方法,所述方法可以帮助减少锁或信号量的使用。对于一些实施例,事务性执行的一个合适示例是事务同步扩展(tsx)形式的事务性执行)的受限事务性存储器(restrictedtransactionalmemory,rtm)形式的事务性执行,但是本发明的范围不限于此。如本文所描述的事务性执行可以在一些实施例中具有rtm形式的事务性执行的特征中的任何一个或多个特征或可选地基本上全部特征,但本发明的范围不限于此。其他形式的事务性执行也是合适的。

在操作期间,第一逻辑处理器108-1可以能操作用于执行事务132。事务可以表示程序员指定的代码关键区段或部分。事务性执行可以能操作用于允许以原子地方式透明地执行事务内的一组指令和/或操作(例如,包括指令135)。原子性(atomicity)部分地意味着这些指令和/或操作(例如,指令135)被完全执行、或根本不被执行、或不被部分地执行。在事务132内,将以其他方式由锁保护的数据可以仅被读取,而不是在事务内非推测性地或以全局可见的方式被写入,并且所述锁实际上可能不会被获取。如果事务性执行成功,则可以原子地执行由事务内的指令对数据进行的写入,而无需已经获取锁。这可以通过减少锁等待开销、延迟和串行化、通过提供更高并发性等来帮助提高性能。而且,避免对管理或处置锁的需要可以有助于简化编程、编译器等。

再次参照图1,所述事务包括事务开始指令133。事务开始指令可以能操作用于指定、标定或以其他方式指示事务的开始。合适的事务开始指令的一个具体示例是采用rtm形式的事务性执行的xbegin指令,但本发明的范围不限于此。xbegin指令当被执行时可以能操作用于使处理器将执行转换为事务性执行(例如,开启事务性执行),如果其尚未被转换为事务性执行的话。xbegin指令当被执行时还可以能操作用于使处理器递增、增加或以其他方式更新事务嵌套计数,如果嵌套事务被支持和/或用于特定实施方式的话。xbegin指令还可以指定或以其他方式指示用于提供相对偏移量以计算回退指令地址的操作数,如果事务未成功完成和/或在事务中止(transactionabort)的情况下可以在所述回退指令地址处恢复执行。在其他实施例中,事务开始指令133可能不是特定的xbegin指令,而是可以具有xbegin指令的上述特征中的任何一个或多个,或具有可能与附加特征组合的类似特征。本发明的范围不限于任何已知的事务开始指令或其操作。

所述事务还包括一个或多个存储至存储器指令134,所述存储至存储器指令在所展示的示例中正在对持久性存储器的第一部分126进行。在一些实施例中,第一部分126可以可选地用于存储至少一个日志128(例如,撤销日志、重做日志或其他预写日志),所述日志可以具有日志结束标记131。所述事务还包括一个或多个存储至存储器指令135,所述存储至存储器指令在所展示的示例中正在对持久性存储器的第一部分126的外部进行,例如,可选地对持久性存储器的第二部分124进行。在一些实施例中,第二部分124可以可选地用于存储共享数据120。可替代地,共享数据可以可选地存储在除了持久性存储器之外的其他地方,如例如可选地在dram或其他非持久性存储器中。然而,修改在持久性存储器中就位的共享数据可以倾向于为某些实施方式提供某些优点(例如,包括避免对随后将修改传播至持久性存储器的需要)。

预写日志记录是一种在修改数据时(例如,共享数据120)帮助实现原子性和持久性的技术。在数据库中和其他应用中经常使用如例如重做日志和/或撤销日志等预写日志来帮助维护数据完整性。在预写日志记录时,数据和/或对共享数据120的修改可以按时间顺序排在对预写日志128进行和/或在其中反映的相应修改之后。以这种方式,如果在对共享数据120实际完成改变之前发生电源故障、系统崩溃或其他这种事件,则日志128可以用于将共享数据120恢复到已知非损坏状态(例如,通过使用日志来重做或撤销对共享数据的更改)。在一些情况下,两种或更多种不同类型的日志(例如,重做日志和撤销日志两者)可以可选地用于提供附加保护。至少一种日志的这种使用可以有助于避免在电源故障、系统崩溃或各种其他类型的故障的情况下导致的数据的不可恢复的损失和/或损坏。

如所示出的,在一些实施例中,在所展示的示例中正在对持久性存储器的第一部分126的外部进行的(例如,对可以可选地用于存储共享数据120的第二部分124进行的)一个或多个推测性存储至存储器操作(speculativestoretomemoryoperation)138可以被推测性地或事务性地排队、缓冲或以其他方式存储在事务队列、缓冲器或其他存储设备130中。操作138可以与指令135相对应。如所示出的,在一些实施例中,事务存储设备130可以可选地实施在(多个)专用高速缓存之一中,如例如,在专用于第一逻辑处理器108-1的l1高速缓存110-1中。可替代地,事务存储设备可以可选地实施在共享高速缓存(例如,(多个)共享高速缓存112之一)、专用存储设备、处理器的其他缓冲器或存储设备等中。这些推测性存储至存储器操作138可以被事务性地存储,并且然后取决于事务是否成功而原子地提交或中止。

再次参照图1,一个或多个非推测性存储至存储器操作122与事务的指令134相对应。在一些实施例中,在所展示的示例中正在对持久性存储器的第一部分126(例如,其可以可选地用于日志128)进行的这些(多个)非推测性存储至存储器操作122可以是非推测性和/或可以不存储在事务存储设备130中,即使这些操作由于事务的指令134而被执行。相反,在一些实施例中,这些非推测性存储至存储器操作122可以被允许旁路事务存储设备130,并且在事务132成功完成之前和/或无论事务是否结束和/或成功完成都继续非事务性地和/或非推测性地被接受到存储器。如所示出的,在事务成功完成之前和/或无论事务是否成功完成,这些(多个)非推测性、非事务性存储至存储器操作122可以存储在存储器子系统单元中(例如,(多个)存储器控制器的写等待缓冲器118中)。此外,在事务成功完成之前和/或无论事务是否成功完成,这些(多个)存储至存储器操作可以可选地存储在其到持久性存储器的路径上的处理器的各种其他之前描述的易失性微架构结构中。作为示例,这些存储至存储器操作122可以旁路或经过(多个)高速缓存110、112(例如,从其中被驱逐)到存储器子系统单元114中,或者(例如,事务132(出于简单起见未示出)的)高速缓存行转储清除或高速缓存行写回指令可以被执行用于将这些存储至存储器操作转储清除或写回到存储器子系统单元114。因此,可以可选地对日志128和/或对持久性存储器的第一部分126进行的(多个)非推测性存储至存储器操作122可以非推测性且非事务性地执行,而可以可选地对共享数据120和/或可选地在持久性存储器的第一部分126外部进行的(多个)推测性存储至存储器操作138可以推测性且事务性地执行。

再次参照图1,事务132还包括事务结束加上持久性提交指令136的实施例。在一些实施例中,事务结束加上持久性提交指令136当被执行时可以能操作用于使处理器102确保被存储在存储器子系统单元114内和/或已经以其他方式被接受到存储器的至少(多个)非推测性存储至存储器操作122在事务结束加上持久性提交指令136完成和/或全局可见之前被存储在持久性存储器104(例如,包括可选电源故障支持的中间缓冲器,如果其被实施的话)中,并且进一步确保在指令136完成和/或全局可见之后保证不会中止事务。

在一些实施例中,事务结束加上持久性提交指令136当被执行时可以能操作用于使处理器102原子地:(1)可选地将值存储至由事务结束加上持久性提交指令指示的目的地存储位置(例如,由其操作数指定的);(2)确保对持久性存储器进行的所有先前存储至存储器操作(例如,包括可选的所述值的上述存储,如果其可选地实施的话)将在所述指令变为全局可见和/或提交之前被存储在持久性存储器中,在所述指令开始执行时所述存储至存储器操作将已经被接受到存储器和/或已经经过末级高速缓存,但在所述指令开始执行时所述存储至存储器操作不一定已经存储在所述持久性存储器中;以及(3)在所述指令变为全局可见和/或提交之前结束事务性存储器事务。在一些实施例中,将所述值存储至目的地存储位置可以用于可选地在日志128中非推测性写入日志结束标记131,所述日志结束标记可以由所述指令指示为目的地存储位置。然而,如以下将进一步讨论的,将所述值存储至事务结束加上持久性提交指令的执行内的目的地存储位置是可选的并且因此不是必需的(例如,单独存储指令可以可选地用于写入日志结束标记,所述指令可以用于除了重做和/或撤销日志记录之外的目的等)。

在一些实施例中,结束所述事务可以包括试图提交事务132以及提交事务或中止事务。如果事务132未成功完成,则处理器可以执行事务中止。在执行事务中止时,可能不会提交存储在事务存储设备130中的(多个)推测性存储至存储器操作138,而是可能会丢弃或以其他方式不执行所述存储至存储器操作,从而使得这些操作对于其他逻辑处理器永远不可见。在一些实施例中,管芯上硬件事务性存储器逻辑可以丢弃这些(多个)推测性存储至存储器操作138。在一些实施例中,处理器还可以将架构状态恢复至看起来好像所述事务从未发生过。因此,事务性执行可以原生地提供撤销能力,所述撤销能力可以允许在事务中止的情况下对存储器推测性地或事务性地执行的更新被撤销,而不会对于其他逻辑处理器曾经可见。然而,(多个)非推测性和/或非事务性存储至存储器操作122仍然可以被执行,而不管事务132是被提交还是被中止。另外,事务结束加上持久性提交指令136当被执行时可以能操作用于使处理器确保这种非推测性存储至存储器操作122在所述指令引退或以其他方式提交之前被持久地提交。在一个示例使用中,这可以有助于确保在由(多个)推测性存储操作138对共享数据120进行的相应更改对所述共享数据进行之前由(多个)非推测性存储操作122对日志128进行的更改已经被提交至持久性。

存在中止事务的各种可能原因。中止事务的一个可能原因是由于检测到(例如,由于另一个逻辑处理器而导致的)数据冲突或对共享数据的冲突访问。从事务内读取的存储器地址可以构成事务的读取集。被写入至事务内的存储器地址可以构成事务的写入集。在一方面,如果另一个逻辑处理器读取作为事务的写入集的一部分的位置和/或写入作为事务的读取集或写入集的一部分的位置,则可能检测到数据冲突。通常,处理器可以包括管芯上存储器访问监测硬件和/或用于原子地监测存储器访问并检测这种冲突的其他逻辑。可以可选地使用高速缓存行粒度或其他粒度。

在一些实施例中,如果这种数据冲突在启动执行事务结束加上持久性提交指令136之前的任何点时发生,则事务可能被中止并且不会全局可见。此外,在一些实施例中,如果这种数据冲突在启动执行事务结束加上持久性提交指令136之后、但在值已经被存储在目的地存储位置(例如,日志结束标记331已经被持久地存储在日志128中)之前发生,则事务也可能被中止并且不会全局可见。然而,在一些实施例中,如果这种数据冲突在启动执行事务结束加上持久性提交指令136之后、并且在值已经被存储在目的地存储位置(例如,日志结束标记331已经被持久地存储在日志128中)之后发生,则事务可能不会被中止而是可以完成并且为全局可见。由于事务结束标记可以被持久地存储,因此事务可以被提交,从而使得其变化为全局可见。冲突访问(例如,冲突事务)可以被中止,或者其可以等待事务结束加上持久性提交指令完成并且此后一旦第一事务已经提交就获得与数据冲突相关联的经修改数据的副本。

事务中止的另一可能的原因是由于不足的事务资源。事务中止的又另一个可能的原因是某些类型的异常或其他系统事件。事务中止的另外可能的原因是执行事务中止指令(例如,采样tsx形式的事务性执行的rtm形式的事务性执行的xabort指令)。实施例可以支持中止事务的这些不同原因中的任何一个或多个以及特定实施方式所期望的其他原因。在一些实施例中,处理器的管芯上硬件和/或其他管芯上逻辑可以自主地能操作用于检测事务中止事件或冲突。

相反,如果未检测到事务中止事件,则事务结束加上持久性提交指令136可以能操作用于使处理器102提交事务132。在一些实施例中,可以通过原子地执行所有的(多个)存储至存储器操作138(例如,现在为非推测性的)以使得这些操作变为对其他逻辑处理器可见(例如,变为全局可见)来提交事务。如所提及的,原子性意味着执行所有这些(多个)存储至存储器操作138,或不执行其中任何一个,但不是仅其中的一些。另外,在一些实施例中,当从其他逻辑处理器的角度观察时,这些(多个)存储至存储器操作138可以基本上瞬间执行。有利地,在事务成功完成并提交的情况下,第一逻辑处理器可以已经能够动态地执行关键区段,而无需获取锁,不具有通常与获取并管理锁相关联的编程复杂性,并且不具有不必要的跨逻辑处理器的串行化。

各种不同类型的事务性执行或事务性存储器适用于各个不同的实施例。示例包括但不限于纯硬件事务性存储器(htm)、无约束事务性存储器(utm)和硬件支持(例如,加速)的软件事务性存储器(stm)(硬件支持的stm)。在硬件事务性存储器(htm)中,存储器访问、冲突解决方案、中止任务和其他事务任务的跟踪中的一个或多个或全部可以主要或完全在处理器的管芯上硬件(例如,电路系统)或其他逻辑(例如,硬件和固件或存储在管芯上非易失性存储器中的其他控制信号的任何组合)中执行。在无约束事务性存储器(utm)中,管芯上处理器逻辑和软件两者可以一起用于实施事务性存储器。例如,utm可以使用实质上htm的方法来处置相对较小的事务,而使用实质上更多软件与某些硬件或其他管芯上处理器逻辑组合来处置相对较大的事务(例如,无约束尺寸事务,其对于由管芯上处理器逻辑本身处置而言可能太大了)。在又一实施例中,即使当软件正在处置事务性存储器的某个部分时,硬件或其他管芯上处理器逻辑可以用于通过管芯上处理器逻辑支持的stm来辅助、加速或以其他方式支持事务性存储器。

在一些实施例中,事务性执行可以可选地支持嵌套事务,但是这不是必需的。在一方面,所有嵌套事务可以被执行或不被执行为集合,但非单独地执行。因此,在这种实施例中,一组两个或更多个嵌套事务可以试图提交,并且仅当事务结束指令(例如,事务结束加上持久性提交指令)是最外层事务结束指令和/或属于所述一组嵌套事务的最外层事务时才可以被提交或中止。作为示例,嵌套计数变量可以可选地用于保持跟踪嵌套事务的数量(例如,可以根据事务开始指令而递增并且根据事务结束指令而递减)。在其他实施例中,在不允许嵌套事务的情况下,仅可以可选地支持单个非嵌套事务,并且所有事务结束指令可以试图提交并且可以在所述指令被执行是提交或中止所有事务。

图2是适用于一些实施例的示例一组两个嵌套事务242的方框流程图。所述组包括最外层事务,所述最外层事务至少包括最外层事务开始指令243和最外层事务结束加上持久性提交指令246。内部事务至少包括内部事务开始指令244和内部事务结束加上持久性提交指令245。在一些实施例中,由于内部事务结束加上持久性提交指令245不是所述一组嵌套事务的最外层事务结束指令,因此其可能不会结束嵌套事务,并且可以可选地不会确保正对持久性存储器进行的并且已经被接受到存储器的先前存储至存储器操作已经被持久地存储。可选地,避免作出此保证可以有助于提高性能。可替代地,在其他实施例中,这种内部事务结束加上持久性提交指令245可能不会结束嵌套事务,但可以可选地确保正对持久性存储器进行的并且已经被接受到存储器的先前存储至存储器操作已经被持久地存储。最外层事务结束加上持久性提交指令246可以结束嵌套事务,并且可以确保正对持久性存储器进行的并且已经被接受到存储器的先前存储至存储器操作已经被持久地存储。

图3是能操作用于执行事务结束加上持久性提交指令336的实施例的处理器302的实施例的框图。在一些实施例中,处理器302可以包括在图1的计算机系统100中。可替代地,处理器302可以包括在类似或不同的计算机系统中。此外,计算机系统100可以包括与处理器302类似或不同的处理器。

在一些实施例中,处理器可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用的类型的通用微处理器或中央处理单元(cpu))。可替代地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于:网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(dsp)以及控制器(例如,微控制器)。处理器可以具有以下架构中的任何架构:各种复杂指令集计算(cisc)架构、精简指令集计算(risc)架构、超长指令字(vliw)架构、混合架构、其他类型的架构,或者具有不同架构的组合(例如,不同核可以具有不同架构)。

在操作过程中,处理器302可以接收事务结束加上持久性提交指令336。事务结束加上持久性提交指令336可以可选地具有如之前所描述的图1的事务结束加上持久性提交指令136的特性中的任何一个。可以用指令取出单元来取出指令或者以其他方式从总线或其他互连上的存储器接收所述指令。指令可表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。在一些实施例中,事务结束加上持久性提交指令可以显式地指定(例如,通过一个或多个字段或一组位)或以其他方式指示(例如,隐式地指示)响应于指令(例如,写入日志结束标记331)而将值存储到的目的地存储位置,但在其他实施例中,不需要由所述指令来存储这样的值。

处理器包括解码单元或解码器350。解码单元可接收并解码事务结束加上持久性提交指令336。所述解码单元可以输出一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等),所述一个或多个相对较低级别的指令或控制信号反映、表示相对较高级别的事务结束加上持久性提交指令和/或是从其中导出的。在一些实施例中,所述解码单元可以包括用于接收指令的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口)、与所述输入结构耦合用于对指令进行识别和解码的指令识别和解码逻辑、以及与所述指令识别和解码逻辑耦合用于输出(多个)较低级指令或(多个)控制信号的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。所述解码单元可以使用各种不同的机制来实施,包括但不限于:微代码只读存储器(rom)、查找表、硬件实施、可编程逻辑阵列(pla)、以及适合于实施解码单元的其他机制。在一些实施例中,代替将事务结束加上持久性提交指令336直接提供给解码单元350,可以可选地使用指令仿真器、翻译器、变形器、解释器或其他指令转换模块。

再次参照图3,管芯上执行单元352与解码单元350、存储器子系统单元314、事务存储设备330、以及架构状态358耦合。存储器子系统单元314与持久性存储器304耦合。存储器子系统314、持久性存储器304和事务存储设备330可以可选地具有如之前所描述的图1的存储器子系统单元114、持久性存储器104和事务存储设备130的特性中的任何一个。在所展示的示例中,出于简单起见,执行单元被示出为单个单元,但应当理解,执行单元可以包括分布式逻辑(例如,在事务存储设备处与提交或中止事务有关的逻辑、在存储器子系统单元处用于监测并且当存储器控制器中的未决存储已经被排出并且已经被持久性存储器接收到时发出信号的逻辑等。

执行单元可以接收所述一个或多个经解码或以其他方式转换的指令或控制信号,这些指令或控制信号表示事务结束加上持久性提交指令336和/或是从其中导出的。执行单元和/或处理器可以包括能操作用于执行事务结束加上持久性提交指令的特定或具体逻辑(例如,晶体管、集成电路系统或者可能与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其他硬件)。在一些实施例中,执行单元可以可选地能操作用于响应于事务结束加上持久性提交指令336和/或作为所述指令的结果(例如,响应于从事务结束加上持久性提交指令中解码的一条或多条指令或控制信号和/或响应于所述指令被解码和/或响应于所述指令被提供至解码器)而原子地将值存储至由所述指令指定或以其他方式指示的目的地存储位置。在一些实施例中,将所述值存储至目的地存储位置可以包括写入日志结束标记331。如所示出的,执行单元可以包括用于执行所述值到目的地存储位置的写入或存储398的写入逻辑399。在其他实施例中,不需要所述指令将这个值存储至目的地存储位置。

执行单元还可以能操作用于响应于事务结束加上持久性提交指令336和/或作为所述指令的结果而确保或保证某些先前存储至存储器操作在事务结束加上持久性提交指令336提交(例如,引退)和/或变为全局可见之前将已经被持久地或耐久地存储(例如,存储在持久性存储器或中间电源支持的缓冲器中),所述先前存储至存储器操作是在开始执行事务结束加上持久性提交指令336之前执行的,并且是对持久性存储器304进行的,但在事务结束加上持久性提交指令开始执行之前实际上不一定已经被持久地或耐久地存储。在各个实施例中,事务结束加上持久性提交指令能够确保已经被持久性提交的上述某些存储至存储器操作可以具有以下特性中的至少一项:(1)当开始执行事务结束加上持久性提交指令时所述操作已经被接受到存储器;和/或(2)当开始执行事务结束加上持久性提交指令时所述操作已经经过在持久性存储器的路径上的处理器的高速缓存层次结构或从所述高速缓存层次结构移除;和/或(3)当开始执行事务结束加上持久性提交指令时所述操作已经被存储在存储器控制器中;和/或(4)当开始执行事务结束加上持久性提交指令时,所述操作已经旁路了用于存储事务的推测性操作的事务存储设备并且不在高速缓存中;和/或(5)当开始执行事务结束加上持久性提交指令时,所述操作可以是非推测性的或者非事务性指令,并且不在高速缓存中;和/或(6)所述操作可以被执行到持久性存储器的第一部分326和/或预写日志而不是第一部分326的外部和/或而不是共享数据,并且不再高速缓存中。作为示例,如所展示的实施例中所示的,执行单元352可以能操作用于确保先前的(多个)存储至存储器操作322在事务结束加上持久性提交指令336提交和/或全局可见之前如箭头370处所示的被存储至持久性存储器304(例如,可选地存储至第一部分326,所述第一部分可选地用于实施日志),所述存储至存储器操作是对持久性存储器304进行的,并且已经被接受到存储器,并且被存储在存储器子系统单元314(例如,一个或多个存储器控制器的写等待缓冲器)中。

如本文所使用的,在事务结束加上持久性提交指令之前已经被执行的、对持久性存储器进行的先前存储至存储器操作当其在其到存储器的路径上前进经过(多个)高速缓存(例如,已经经过或已经旁路(多个)高速缓存)时可以广泛地被认为是“被接受到存储器(acceptedtomemory)”。作为一个示例,当这种存储已经被接收到存储器子系统单元314中的缓冲器或队列和/或所述存储器子系统单元的一个或多个存储器控制器的写等待缓冲器中时,所述存储可以被接受到存储器。作为另一个示例,当这种存储是已经变为全局可见的非暂时性存储至写回存储器(wb)的非暂时性存储时,所述存储可以被接受到存储器。作为另一个示例,当这类存储是存储至不可高速缓存(uncacheable,uc)存储器、合并写(write-combining,wc)存储器或直写(write-through,wt)存储器并且已经变为全局可见时,它们可以被接受到存储器。作为又另一个示例,当这种存储是已经变为全局可见的暂时性存储至写回(wb)存储器时,并且在高速缓存行转储清除或高速缓存行写回已经针对与到写回(wb)存储器的暂时存储相同的高速缓存行而被执行之后,所述存储可以被接受到存储器。

如所示出的,在一些实施例中,执行单元352可以可选地具有能操作用于有助于辅助作出这种保证的持久性提交逻辑353。在不同实施例中,这种保证可以以各种不同方式来进行。例如,在一些实施例中,执行单元和/或持久性提交逻辑可以能操作用于结合作出此保证来执行与存储器子系统单元的握手或其他通信。作为示例,执行单元和/或持久性提交逻辑可能不会允许事务结束加上持久性提交指令引退,直到存储器子系统单元已经发出在启动执行事务结束加上持久性提交指令时所述存储器子系统单元已经接收的所有存储已经从所述存储器子系统单元排出或以其他方式离开并且已经被持久性存储器接收到(或者在可选中间电源故障支持的缓冲器中,如果其被实施的话)的信号。

实际上,这种保证可能主要对于执行事务结束加上持久性提交指令336的给定的软件线程而言是有意义的,对于其他软件线程而言并不那么重要。这些其他软件线程可以具有相关联的存储操作,这些存储操作同样已经被接受到存储器并且同样由持久性提交子操作来持久性提交。由持久性提交子操作作出的保证经常无法在给定的软件线程的存储至存储器操作与其他软件线程的存储至存储器操作之间进行区分。然而,只有执行事务结束加上持久性提交指令的给定的软件线程可以已经采取适当的高速缓存转储清除、高速缓存写回和/或其他适当的动作来为事务结束加上持久性提交指令做准备以使保证是有意义的。给定的软件线程可以采取这种动作来为事务结束加上持久性提交指令做准备以允许其操作有意义地作出保证,但其他线程可能不一定关心并且因此在这些其他软件线程未进行的情况下事务结束加上持久性提交指令的操作可能对于这些其他软件线程而言并无意义。

在一些实施例中,响应于事务结束加上持久性提交指令336,执行单元352还可以能操作用于利用其他所执行操作来原子地结束包括所述执行单元的相应事务(例如,事务132)。为了结束事务,所述执行单元可以:(1)提交事务(例如,在事务结束加上持久性提交指令提交(例如,引退)或变为全局可见之前原子地提交事务的推测性状态更新);或(2)中止事务(如果在事务结束加上持久性提交指令提交或变为全局可见之前试图提交事务的推测性状态更新失败,则原子地中止事务的推测性状态更新)。在一些实施例中,如果在某个点之前(例如,在指令的存储操作已经将值存储至可以用于持久地存储日志结束标记的目的地位置之前)检测到中止事件,则事务可以在已经开始事务结束加上持久性提交指令之后被中止,但是如果直到在所述某个点之后才检测到中止事件,则否则事务可以完成。如所示出的,执行单元可以可选地具有用于结束事务的事务结束逻辑354、用于提供用于试图提交并在可能的情况下提交事务的信号或控制的提交逻辑355、以及用于中止事务的中止逻辑356。例如,如所示出的,执行单元和/或事务结束逻辑可以提交或中止已经存储在事务存储设备330中的一个或多个存储至推测性存储器操作338。

在不同的实施例中,执行单元352和/或提交逻辑355响应于指令336而可以能操作用于以不同的方式提交事务。如在箭头366处所示的,在一些实施例中,执行单元和/或提交逻辑可以将事务的存储至存储器操作提交至高速缓存310。例如,在一些实施例中,事务存储设备330可以在高速缓存中实施(例如,类似于在图1的事务存储设备130和高速缓存110中所示的),并且为了提交事务,与每个高速缓存行相关联的、由存储至存储器操作338修改的一个或多个位可以被修改以指示高速缓存行的状态从推测性到非推测性的变化。然后,非推测性高速缓存行可以然后例如基于高速缓存行逐出算法而逐渐地被写回到存储器(例如,到持久性存储器的可以可选地用于存储共享数据的第二部分324)。作为另一示例,在一些实施例中,事务存储设备330可以可选地在(多个)高速缓存外部实施,并且为了提交事务,(例如,现在是非推测性的)存储至存储器操作338可以从事务存储设备存储至(多个)高速缓存。可替代地,在其他实施例中,执行单元和/或提交逻辑可以可选地将存储至存储器操作338从事务存储设备提交至存储器子系统单元314。例如,如果事务存储设备是在高速缓存中实施的,则高速缓存行可以被标记为非推测性的(例如,如上所述),并且不久以后(例如,在几个时钟周期内),然后,非推测性高速缓存行可以从(多个)高速缓存被驱逐到存储器子系统单元314中。作为另一示例,当所述操作被提交时,事务存储设备的存储至存储器操作338可以可选地被非暂时地执行以使得所述操作旁路(多个)高速缓存、或者被存储在高速缓存中并被立即驱逐、或者将在高速缓存之外也会被转发的副本留在高速缓存中。作为又另一个示例,事务存储设备330的存储至存储器操作338可以直接对存储器系统单元314应用或执行,从而完全旁路(多个)高速缓存。在一些实施例中,所述指令可以能操作用于使处理器利用先前存储至存储器操作322的持久性存储设备来原子地提交事务的存储至存储器操作338。

在一些实施例中,持久性存储器的第二部分324可以用于存储共享数据,并且可以在共享数据驻留在持久性存储器中时直接对共享数据进行事务的存储至存储器操作338,但这不是必需的。对就位在持久性存储器中的共享数据进行这种存储器状态更新的一个可能优点是其可以有助于避免对缓冲或托管对共享数据的修改(即,除了在存储操作仍然是推测性时在事务存储设备中完成的之外)的需要,否则,如果更新最初替代地针对非持久性存储器(例如,用于主存储器的ram)中的共享数据进行的,并且然后更新被传播到持久性存储器(例如,用于支持存储的硬盘或其他rom),则经常需要完成这些修改。

执行单元352和/或中止逻辑356响应于指令336而可以能操作用于在试图提交事务失败时中止事务。在一些实施例中,这可以包括丢弃事务的(多个)存储至存储器操作338,从而使得这些操作对于其他逻辑处理器永远不可见。如在箭头371处所示的,执行单元和/或中止逻辑可以向事务存储设备发信号以丢弃(多个)存储至存储器操作338。作为一个示例,这可以包括修改一个或多个相应的高速缓存行中指示高速缓存行无效的一个或多个位。例如,这可以包括修改mesi或mosi一致性协议高速缓存行的无效位。可替代地,如果事务缓冲器是在高速缓存行的外部实施的,则这可以包括简单地丢弃存储操作而不执行或应用这些存储操作。

如在箭头368处所示的,在一些实施例中,在中止的情况下,执行单元352和/或中止逻辑356响应于指令336而可以可选地能操作用于将检查点或以其他方式保存的架构状态363恢复至处理器的架构状态358,作为经恢复检查点的架构状态360。在一方面,经保存并恢复的架构状态可以包括如例如通用寄存器、紧缩数据寄存器、状态寄存器、标志寄存器、以及控制寄存器等各个架构寄存器的当前状态以及在首次进行事务性执行时各种其他类型的架构状态。

在一些实施例中,在中止的情况下,执行单元352和/或中止逻辑356响应于指令336而可以可选地能操作用于将中止信息359存储在目的地存储位置中。在一些实施例中,事务结束加上持久性提交指令可以显式地指定(例如,通过一个或多个字段或一组位)或以其他方式指示(例如,隐式地或固有地指示而没有显式地指定)在事务中止的情况下中止信息将被存储到的目的地寄存器(例如,目的地通用寄存器)或其他存储位置。如由箭头367所示的,中止信息359可以可选地被存储在架构状态的目的地寄存器364中。各种不同类型的中止信息是合适的。例如,在一些实施例中,中止信息可以指示为什么发生中止的原因,如例如,中止是否是由于检测到数据冲突、是否是由于执行事务性执行中止指令、是否是由于不足的用于完成事务的事务资源、是否是由于调试、断点或其他异常等。作为另一示例,在一些实施例中,如果引退,则中止信息可以指示估计或预期事务是否可能成功。作为又另一个示例,在一些实施例中,中止信息可以指示中止是否在嵌套事务期间发生。其他中止信息以及这种中止信息的任何子集或组合也是合适的。

如在箭头369处所示的,在一些实施例中,执行单元352和/或中止逻辑响应于指令336而可以可选地能操作用于将回退指令地址361存储至指令指针362。这可以允许在中止之后在回退指令地址处恢复。如在图示中所示的,在一些实施例中,回退地址可以可选地最初已经被存储在架构寄存器365中。可替代地,存储器位置或其他存储位置可以可选地用于存储回退地址。作为示例,回退地址可以已经由之前的事务开始指令(例如,xbegin指令)指示,并且响应于执行之前的事务开始指令(例如,最初启动事务性执行的单个非嵌套事务或嵌套事务集的最初事务开始指令)而被存储在寄存器365或其他存储位置中。在一些实施例中,可以可选地支持仅单个非嵌套事务,然而在其他实施例中,可以可选地支持嵌套事务。

在一些实施例中,处理器可以将嵌套事务视为一个单片事务。例如,嵌套事务可以全部提交或中止但不会单独地进行。作为示例,处理器可以仅当最外层事务结束加上持久性提交指令被执行时试图提交嵌套事务(例如,嵌套计数对于每个事务开始指令递增并且对于每个事务结束指令递减变为零)。在一方面,在中止嵌套事务的情况下,处理可以在由最初针对嵌套事务启动事务性执行的第一/最外层事务开始指令指示的回退指令/地址处恢复。

当然,虽然不限于与预写日志记录一起使用,但事务结束加上持久性提交指令336的一种可能的使用是结合被执行用于修改持久性存储器的第一部分326中的日志的事务的先前存储至存储器操作322以及被执行用于修改持久性存储器的第二部分324中的共享数据的事务的存储至存储器操作338。事务结束加上持久性提交指令当被执行时可以能操作用于确保在由于事务被允许对持久存储器中的共享数据进行而引起的任何推测性事务变化之前已经被接受到存储器的对预写日志的修改被持久地存储。事务性执行可以限制对(例如,事务存储设备330中的)共享数据的修改,直到对日志的相应修改已经被持久地提交。所述值到日志结束标记331的可选存储可以用于指示事务已经被持久地记录在日志中。有利地,这种保证可以有助于允许软件确保在电源故障、系统崩溃等情况下共享数据不会发生不可逆转的损坏和/或丢失,而是日志可以用于恢复至稳定点。然而,本文所公开的事务结束加上持久性提交指令是还可以可选地用于除了受制于程序员的广泛创造力的预写日志记录之外的各种其他目的的通用指令。例如,所述指令可以在期望使某些存储至存储器操作(例如,已知将不被共享的数据、更多时间关键数据等)绕过事务性执行并且在未绕过事务性执行的其他存储至存储器操作(例如,很可能或有可能共享的数据、较少时间关键数据)之前被持久地存储的其他应用或环境中是有用的。

存在关于日志结束标记的若干种可能性。第一种可能性是日志结束标记未被写入至持久性存储设备。这可以意味着软件未达到事务结束加上持久性提交指令。在这种情况下,事务性存储器事务不会对可见状态进行除了不完整的日志记录之外的任何更改,例如,利用异常处置程序进行清理。第二种可能性是日志结束标记由于事务自中止而未被写入至持久性存储设备。通过恢复代码,这可以被视为与第一种可能性相同。第三种可能性是写入至日志结束标记在所述事务可能完成之前被执行并且被持久地存储,事务结束加上持久性提交指令在日志结束标记实际上被持久地存储之前被电源故障等中断。在这种情况下,恢复代码可以将其视为不完整事务并丢弃推测性变化。可见系统状态是正确的,因为由于电源故障而没有并发线程会注意到事务的成功执行。第四种可能性是写入至日志结束标记被执行并且被持久地存储,但是事务结束加上持久性提交指令在其完成之前被电源故障等中断。在这种情况下,事务可以被视为已经通过恢复代码而起作用。例如,重做日志可以被重放以恢复数据。

为了避免模糊描述,已经示出和描述了相对简单的处理器302。然而,可选地,处理器可以包括其他处理器组件。例如,各种不同的实施例可以包括针对图8a至图8b、图9a至图9b、以及图10中的任一者示出和描述的组件的各种不同的组合和配置。作为示例,考虑图8b,指令取出单元838可以取出指令,解码单元840可以对指令进行解码,调度器单元856可以调度相关联的操作,引退单元854可以引退指令等。可以将处理器的所有组件耦合在一起以允许它们按照预期的那样操作。

图4是执行事务结束加上持久性提交指令的实施例的方法475的实施例的方框流程图。在各个实施例中,所述方法可由处理器、指令处理设备或其他数字逻辑装置来执行。在一些实施例中,图4的方法可以由图3的处理器执行和/或在其内执行。本文中针对图3的处理器所描述的组件、特征和特定可选细节也可选地适用于图4的方法。可替代地,图4的方法可以由相似或不同的处理器或设备和/或在其内执行。此外,图3的处理器可以执行与图4的方法相同、相似或不同的方法。

所述方法包括:在框476处,接收事务结束加上持久性提交指令。在各个方面,可在处理器或其一部分(例如,指令取出单元、解码单元、总线接口单元等)处接收指令。在各个方面,可从处理器外(off-processor)源和/或管芯外(off-die)源(例如,从存储器、互连等)接收指令,或从处理器上(on-processor)源和/或管芯上源(例如,从指令高速缓存、指令队列等)接收指令。

在一些实施例中,所述方法可选地包括:在框477处,利用其他操作原子地将值存储至由所述指令指定或以其他方式指示的目的地存储位置。在一些实施例中,将所述值存储至目的地存储位置可以可选地用于在预写日志中写入日志结束标记,所述日志结束标记可以由所述指令指示为目的地存储位置。然而,如以下将进一步讨论的,将所述值存储至事务结束加上持久性提交指令的执行内的目的地存储位置是可选的、非必需的(例如,单独存储指令可以可选地用于写入日志结束标记,所述指令可以用于除了重做和/或撤销日志记录之外的目的等)。

所述方法包括:在框478处,响应于事务结束加上持久性提交指令而原子地:确保所有先前存储至存储器操作(即,在开始执行事务结束加上持久性提交指令之前已经执行的操作)在事务结束加上持久性提交指令提交(例如,引退)或以其他方式变为全局可见之前已经被存储在持久性存储器中,所述存储至存储器操作是正对持久性存储器进行的,并且在所述指令开始执行时所述存储至存储器操作已经经过(例如,经过或旁路)在其到持久性存储器的路径上的末级高速缓存和/或已经被接受到存储器,但在开始执行事务结束加上持久性提交指令时所述存储至存储器操作不一定已经存储在持久性存储器中。确保先前存储至存储器操作已经存储在持久性存储器中包括这些存储至存储器操作被存储在中间电源故障保护的缓冲器中,如果所述缓冲器可选地被实施的话。

所述方法包括:在框479处,响应于事务结束加上持久性提交指令而原子地结束事务。这可以包括:或者在事务结束加上持久性提交指令提交(例如,引退)或以其他方式变为全局可见之前原子地提交事务的推测性状态更新;或者中止事务的推测性状态更新(例如,如果在日志结束标记被写入之前检测到中止条件或试图提交事务的推测性状态更新失败)。

流程图示出了根据实施例的操作的特定顺序,但是此顺序是示例性的。替代实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作等。另外,已经以相对基本的形式描述了所述方法,但是可选地可以将若干操作添加到所述方法和/或从所述方法移除若干操作。例如,在其他实施例中,可选地,所述方法可以包括用于实施指令的一个或多个微架构操作。作为示例,指令可以被乱序取出、解码、调度,执行单元可以执行用于实施指令的微架构操作(例如,以上结合图3所描述的各种操作中的任何一个),指令可以被引退等。

如之前所描述的,在一些实施例中,处理器可以允许(例如,具有架构支持或扩展来允许)在给定的事务内进行的某些存储至存储器操作非推测性且非事务性地执行。例如,这种存储至存储器操作可以在事务提交或中止之前不会被保留在事务缓冲器中,而是可以继续为可见,并且可能被接受到存储器,并且在事务提交之前并且不管事务提交还是中止,潜在地可能一直前进到持久性存储器。处理器还可以允许在同一给定的事务内进行的其他存储至存储器操作推测性且事务性地执行。例如,这些其他存储至存储器操作可以在事务提交或中止之前被保留在事务缓冲器中,并且只有在事务实际上提交并且原子地提交之前才可以被允许前进到持久性存储器。处理器的事务性执行逻辑可以自主地防止这些存储被执行到在事务实际上被提交之前所述存储可见的点。

设想了不同类型的架构支持以允许处理器允许在事务内进行的某些存储绕过事务性执行。为了进一步展示某些概念,将描述若干不同的示例实施例。

图5是与持久性存储器504耦合的处理器502的示例实施例的框图,展示了用于允许在事务532内进行的某些存储534绕过事务性执行的第一种方法。处理器包括存储器类型范围寄存器(mtrr)580、事务性执行旁路逻辑584、事务存储设备530以及存储器子系统单元514。事务性执行旁路逻辑与mtrr、事务存储设备、以及存储器子系统单元耦合。mtrr可以存储指定的持久性存储器地址范围582。

处理器可以利用事务性执行来执行事务532。事务包括在mtrr中指示的指定持久性存储器地址范围582外部进行的存储535以及在mtrr中指示的指定持久性存储器地址范围内进行的存储534两者。这两种类型的存储可以通过事务性执行旁路逻辑来处置。事务性执行旁路逻辑可以检验每个所接收存储以查看所述所接收存储是否是正对在mtrr中指示的指定持久性存储器地址范围内或外部进行的。如果存储是在mtrr中指示的指定持久性存储器地址范围外部进行的,则事务性执行旁路逻辑可能不允许存储绕过事务性执行。而是,存储可以被事务性地且推测性地执行,并且可以被引导至事务存储设备530。

相反,如果存储是在mtrr中指示的指定持久性存储器地址范围内进行的,则事务性执行旁路逻辑可以允许存储绕过事务性执行。存储可以被允许非事务性且非推测性地执行,并且可以被引导至存储器子系统单元514,从而旁路事务存储设备530。如所示出的,存储器子系统单元可以允许存储前进到持久性存储器504中的指定持久性存储器地址范围585。这种存储可以被允许从存储器子系统单元排出或泄露至持久性存储设备。如本文其他地方所公开的事务结束加上持久性提交指令的实施例可以用于确保这种存储被持久性提交。代表性地,这种指定的持久性存储器地址范围可以可选地用于存储预写日志。

在所展示的实施例中,已经示出并描述了单个mtrr和单个指定持久性存储器地址范围,但是两个或更多个mtrr可以用于存储两个或更多个指定持久性存储器地址范围。此外,使用mtrr不是必需的,而是指定持久性存储器地址范围可以可选地存储在其他寄存器或存储位置。在所展示的实施例中,mtrr用于存储对所述mtrr进行的存储被允许绕过事务性执行的范围,但是在另一实施例中,mtrr可以用于存储对所述mtrr进行的存储不被允许绕过事务性执行的范围。

图6是与持久性存储器604耦合的处理器602的示例实施例的框图,展示了用于允许在事务632内进行的某些存储绕过事务性执行的第二种方法。处理器包括转换后备缓冲器(tlb)686、事务性执行旁路逻辑684、事务存储设备630以及存储器子系统单元614。事务性执行旁路逻辑与tlb、事务存储设备、以及存储器子系统单元耦合。

tlb可以存储多个页表条目687。页表条目(pte)中的每一条可以具有表示事务性执行旁路页指示符688的一个或多个位。如所示出的,第一pte可以具有第一指示符688-1,第二pte可以具有第二指示符688-2,并且第三pte可以具有第三指示符688-3。每个事务性执行旁路页指示符可以指示相应的页(例如,具有存储在页表条目中的物理地址)是否是事务性执行旁路页。根据图示中使用的一个可能惯例,单个位可以具有用于指示相应页是事务性执行旁路页的二进制值一,或者可以具有用于指示相应页不是事务性执行旁路页的二进制值零。相反惯例也是可能的。

处理器可以利用事务性执行来执行事务632。事务包括不对事务性执行旁路页进行的存储635以及对事务性执行旁路页进行的存储634两者。这两种类型的存储可以通过事务性执行旁路逻辑来处置。事务性执行旁路逻辑可以检验每个所接收存储以查看所述所接收存储是否是正对事务性执行旁路页进行的。如果存储不是正对事务性执行旁路页进行的,则事务性执行旁路逻辑可能不允许存储绕过事务性执行。而是,存储可以被事务性地且推测性地执行,并且可以被引导至事务存储设备630。

相反,如果存储是正对事务性执行旁路页进行的,则事务性执行旁路逻辑可以允许存储绕过事务性执行。存储可以被非事务性且非推测性地执行,并且可以被引导至存储器子系统单元614,从而旁路事务存储设备630。如所示出的,存储器子系统单元可以允许存储前进到持久性存储器604中的一组一个或多个事务性执行旁路页689。如所示出的,持久性存储器或可替代地另一类型的存储器可以存储与在tlb中高速缓存的页表条目687相对应的页表条目690。

在图5至图6中展示了处理器的示例微架构结构(例如,mtrr或tlb),能操作用于指定持久性存储器中存储被允许绕过事务性执行的部分。在又其他实施例中,代替持久性存储器中需要在这些或其他微架构结构中指定的这种部分,持久性存储器的固定或隐式的地址范围、持久性存储器的固定或隐式的一组一个或多个页、或持久性存储器的其他固定或隐式部分可以可选地用于允许存储绕过事务性执行。

图7是与持久性存储器704耦合的处理器702的示例实施例的框图,展示了用于允许在事务732内进行的某些存储绕过事务性执行的第三种方法。处理器包括解码单元750、执行单元752、事务性执行旁路逻辑784、事务存储设备730以及存储器子系统单元714。执行单元和事务性执行旁路逻辑与解码单元、

-27-事务存储设备、以及存储器子系统单元耦合。在图示中,事务性执行旁路逻辑被示出为是执行单元的一部分,但在另一实施例中,可以是单独的但耦合在一起。

处理器可以利用事务性执行来执行事务732。事务包括一条或多条存储至存储器指令735以及一条或多条非事务性存储至存储器指令734两者。当在事务内执行时,(多条)存储至存储器指令735能操作用于使处理器处置相应的存储操作,以使得这些存储操作不会绕过事务性执行。相反,当在事务内执行时,(多条)非事务性存储至存储器指令734能操作用于使处理器处置相应的存储操作,以使得这些存储操作能够绕过事务性执行。

(多条)存储至存储器指令和(多条)非事务性存储至存储器指令可以被提供至解码单元。解码单元可以将如本文其他地方所描述的这些指令解码成可以被提供至执行单元和事务性执行旁路逻辑的(多个)相应控制信号。在一些实施例中,(多条)指令734可以可选地具有与(多条)指令735不同的操作码。例如,(多条)非事务性存储至存储器指令的操作码可以隐式地或固有地固定存储操作将绕过事务性执行。针对这些指令的绕过事务性执行可以响应于解码单元对操作码进行解码。在其他实施例中,(多条)指令734可以可选地具有与(多条)指令735相同的操作码,但是(多条)非事务性存储至存储器指令734可以具有前缀、一个或多个位的字段、其他组一个或多个位、或到处理器的用于指示存储操作将绕过事务性执行的其他“提示”。

事务性执行旁路逻辑响应于(多条)存储至存储器指令784(例如,响应于所述指令被解码)而可以能操作用于使相应的存储操作不会绕过事务性执行,并且可以能操作用于将这些存储操作引导至事务存储设备730。相反,事务性执行旁路逻辑响应于(多条)非事务性存储至存储器指令734(例如,响应于所述指令被解码)而可以能操作用于使相应的存储操作绕过事务性执行,并且可以能操作用于将这些存储操作引导至存储器子系统单元714,从而旁路事务存储设备730。如所示出的,存储器子系统单元可以允许存储操作前进到持久性存储器704。

应当理解,图5至图7的事务、事务存储设备、持久性存储器以及存储器子系统单元可以可选地具有与如本文其他地方所描述的特性。这些仅仅是几个说明性示例方法。其他方法也是预期的和将为本领域技术人员所显而易见的,并且具有本公开的益处。例如,又另一种方法将允许如由操作系统来协调例如并且可以通过单个寄存器来描述的整个线程本地存储设备用于此目的。

在一个使用模型中,绕过事务性执行的存储可以用于写入至预写日志(例如,日志128),然而不绕过事务性执行的存储可以用于写入至共享数据(例如,共享数据120)。然后,在一些实施例中,事务结束加上持久性提交指令(例如,指令136或指令336)可以用于确保先前的非事务性执行的存储已经持久性提交并结束事务,并且用于试图提交事务性地执行的存储。然而,本发明的范围不仅仅限于这种使用模型或与预写日志记录结合使用。而是,这可以可选地用于受制于程序员的创造力的各种其他目的(例如,其中,事务中的一些指令对已知不被共享的数据进行写入,而其他指令对共享数据进行写入)。

如之前所讨论的,不需要事务结束加上持久性提交指令将值存储至目的地存储位置。虽然针对预写日志记录写入日志结束标记可以在一些实施例中是有用的,但事务结束加上持久性提交指令可以可选地用于除预写日志记录之外的目的。例如,可以可选地在期望使某些存储至存储器操作绕过事务性执行并且在不绕过事务性执行的其他存储至存储器操作之前被持久地存储的其他应用或环境中更一般地使用事务结束加上持久性提交指令。

进一步地,即使事务结束加上持久性提交指令用于预写日志记录,单独的存储指令也可以可选地用于将值存储至目的地存储位置(例如,用于写入日志结束标记)。在一些实施例中,此单独的存储指令可以推测性地执行,而无需绕过事务性执行,从而使得存储操作在指令被提交之前实际上不被执行。在不同实施例中,这可以以不同方式来实现。作为一个示例,事务结束标记可以位于非推测性持久性存储器的一部分的外部(例如,不在指定的持久性存储器地址范围585中,或者不在(多个)事务性执行旁路页689中)。作为另一个示例,即使事务结束标记位于非推测性持久性存储器的一部分中,存储指令也可以具有使其被推测性地执行的属性(例如,不同的操作码或推测性/非推测性位),而非绕过事务性执行。作为又另一个示例,存储指令可以是存储至存储器指令735,而不是非事务性存储至存储器指令734。在这种实施例中,事务性执行可以有助于保持事务结束标记不被存储指令修改,直到事务性存储器事务被提交。

在一些实施例中,处理器的指令集可以包括事务结束加上持久性提交加上转储清除的指令。这种指令可以具有如本文其他地方所描述的事务结束和持久性提交特性,可以附加地具有转储清除操作,并且可以省略将值存储至目的地存储器位置的操作(例如,省略写入事务结束标记)。而是,上述单独的存储指令可以将这个值存储至目的地存储器位置(例如,写入事务结束标记)。事务结束加上持久性提交加上转储清除的指令可以显式地指定或以其他方式指示与单独的存储指令相同的存储器位置。转储清除操作可以转储清除或迫使将值存储至事务性存储器事务和/或高速缓存之外的存储器位置。这可以利用由指令执行的其他操作原子地执行。这可以允许将值存储至存储器位置以逃离事务性存储器的监狱或隔离。在一些实施例中,而不是事务结束加上持久性提交加上转储清除的指令需要指定与前述单独的存储指令相同的存储器位置,存储器位置可以可选地是由附加单独指令配置或在模型特定寄存器或其他专用寄存器中配置的隐式变量。

示例性核架构、处理器和计算机架构

处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)cpu,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与cpu分开的芯片上的协处理器;2)在与cpu相同的封装中但在分开的管芯上的协处理器;3)与cpu在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯芯片上系统,其可以将所描述的cpu(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和乱序核框图

图8a是展示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图8b是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图8a-图8b中的实线框展示有序流水线和有序核,而虚线框的任选增加展示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。

在图8a中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也被称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处置级822和提交级824。

图8b示出处理器核890,该处理器核890包括前端单元830,该前端单元830耦合到执行引擎单元850,并且前端单元830和执行引擎单元850两者都耦合到存储器单元870。核890可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核、或混合或替代的核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核,等等。

前端单元830包括分支预测单元832,该分支预测单元832耦合到指令高速缓存单元834,该指令高速缓存单元834耦合到指令转换后备缓冲器(tlb)836,该指令转换后备缓冲器836耦合到指令取出单元838,该指令取出单元838耦合到解码单元840。解码单元840(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核890包括存储用于某些宏指令的微代码的微代码rom或其他介质(例如,在解码单元840中,或以其他方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。

执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合到引退单元854和一个或多个调度器单元的集合856。(多个)调度器单元856表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元856耦合到(多个)物理寄存器堆单元858。(多个)物理寄存器堆单元858中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元858由引退单元854重叠,以展示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元854和(多个)物理寄存器堆单元858耦合到(多个)执行集群860。(多个)执行集群860包括一个或多个执行单元的集合862以及一个或多个存储器访问单元的集合864。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元856、(多个)物理寄存器堆单元858和(多个)执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。

存储器访问单元的集合864耦合到存储器单元870,该存储器单元870包括数据tlb单元872,该数据tlb单元872耦合到数据高速缓存单元874,该数据高速缓存单元874耦合到第二级(l2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元870中的数据tlb单元872。指令高速缓存单元834还耦合到存储器单元870中的第二级(l2)高速缓存单元876。l2高速缓存单元876耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线800:1)指令取出838执行取出级802和长度解码级804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)(多个)调度器单元856执行调度级812;5)(多个)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取级814;执行集群860执行执行级816;6)存储器单元870和(多个)物理寄存器堆单元858执行写回/存储器写入级818;7)各单元可牵涉到异常处置级822;以及8)引退单元854和(多个)物理寄存器堆单元858执行提交级824。

核890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的mips技术公司的mips指令集;加利福尼亚州桑尼维尔市的arm控股公司的arm指令集(具有诸如neon的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核890包括用于支持紧缩数据指令集扩展(例如,avx1、avx2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。

尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所展示的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享的l2高速缓存单元876,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(l1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图9a-图9b展示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器i/o接口和其他必要的i/o逻辑进行通信。

图9a是根据本发明的实施例的单个处理器核以及它至管芯上互连网络902的连接及其第二级(l2)高速缓存的本地子集904的框图。在一个实施例中,指令解码器900支持具有紧缩数据指令集扩展的x86指令集。l1高速缓存906允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(l1)高速缓存906读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。

l2高速缓存的本地子集904是全局l2高速缓存的一部分,该全局l2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的l2高速缓存的本地子集904的直接访问路径。由处理器核读取的数据被存储在其l2高速缓存子集904中,并且可以与其他处理器核访问其自身的本地l2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的l2高速缓存子集904中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。

图9b是根据本发明的实施例的图9a中的处理器核的一部分的展开图。图9b包括l1高速缓存904的l1数据高速缓存906a部分,以及关于向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(vpu)(见16宽alu928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该vpu通过混合单元920支持对寄存器输入的混合,通过数值转换单元922a-b支持数值转换,并且通过复制单元924支持对存储器输入的复制。写掩码寄存器926允许预测所得的向量写入。

具有集成存储器控制器和图形器件的处理器

图10是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1000的框图。图10中的实线框展示具有单个核1002a、系统代理1010、一个或多个总线控制器单元的集合1016的处理器1000,而虚线框的任选增加展示具有多个核1002a-n、系统代理单元1010中的一个或多个集成存储器控制器单元的集合1014以及专用逻辑1008的替代处理器1000。

因此,处理器1000的不同实现可包括:1)cpu,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002a-n是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1002a-n是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002a-n是大量通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1000可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,bicmos、cmos、或nmos)中的任何技术被实现在一个或多个基板上。

存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1006、以及耦合到集成存储器控制器单元的集合1014的外部存储器(未示出)。共享高速缓存单元的集合1006可包括一个或多个中间级别的高速缓存,诸如,第二级(l2)、第三级(l3)、第四级(l4)或其他级别的高速缓存、末级高速缓存(llc)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1012将集成图形逻辑1008、共享高速缓存单元的集合1006以及系统代理单元1010/(多个)集成存储器控制器单元1014互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1006与核1002a-n之间维持一致性。

在一些实施例中,一个或多个核1002a-n能够实现多线程化。系统代理1010包括协调和操作核1002a-n的那些部件。系统代理单元1010可包括例如功率控制单元(pcu)和显示单元。pcu可以是对核1002a-n以及集成图形逻辑1008的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。

核1002a-n在架构指令集方面可以是同构的或异构的;即,核1002a-n中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。

示例性计算机架构

图11至图21是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。

现在参考图11,所示出的是根据本发明一个实施例的系统1100的框图。系统1100可以包括一个或多个处理器1110、1115,这些处理器耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(gmch)1190和输入/输出中枢(ioh)1150(其可以在分开的芯片上);gmch1190包括存储器和图形控制器,存储器1140和协处理器1145耦合到该存储器和图形控制器;ioh1150将输入/输出(i/o)设备1160耦合到gmch1190。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1140和协处理器1145直接耦合到处理器1110,并且控制器中枢1120与ioh1150处于单个芯片中。

附加的处理器1115的任选性在图11中通过虚线来表示。每一处理器1110、1115可包括本文中描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。

存储器1140可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前端总线(fsb)之类的多分支总线、诸如快速路径互连(qpi)之类的点对点接口、或者类似的连接1195来与(多个)处理器1110、1115进行通信。

在一个实施例中,协处理器1145是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。在一个实施例中,控制器中枢1120可以包括集成图形加速器。

在物理资源1110、1115之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。

在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1110将这些协处理器指令识别为具有应当由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1145。(多个)协处理器1145接受并执行所接收的协处理器指令。

现在参见图12,所示出的是根据本发明的实施例的第一更具体的示例性系统1200的框图。如图12中所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1210和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。

处理器1270和1280示出为分别包括集成存储器控制器(imc)单元1472和1482。处理器1270还包括作为其总线控制器单元的一部分的点对点(p-p)接口1276和1278;类似地,第二处理器1280包括p-p接口1286和1288。处理器1270、1280可以经由使用点对点(p-p)接口电路1278、1288的p-p接口1250来交换信息。如图12中所示,imc1472和1482将处理器耦合到相应的存储器,即存储器1232和存储器1234,这些存储器可以是本地附连到相应处理器的主存储器的部分。

处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的各个p-p接口1252、1254来与芯片组1290交换信息。芯片组1290可以任选地经由高性能接口1239来与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。

共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由p-p互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。

芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围部件互连(pci)总线或诸如pci快速总线或另一第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如图12中所示,各种i/o设备1214可连同总线桥1218一起耦合到第一总线1216,该总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚数(lpc)总线。在一个实施例中,各种设备可耦合到第二总线1220,这些设备包括例如键盘和/或鼠标1222、通信设备1227以及存储单元1228,该存储单元1228诸如可包括指令/代码和数据1230的盘驱动器或者其他大容量存储设备。此外,音频i/o1224可以被耦合到第二总线1220。注意,其他架构是可能的。例如,代替图12的点对点架构,系统可以实现多分支总线或其他此类架构。

现在参考图13,示出的是根据本发明的实施例的第二更具体的示例性系统1300的框图。图12和13中的类似元件使用类似的附图标记,并且从图13中省略了图12的某些方面以避免混淆图13的其他方面。

图13展示处理器1270、1280可分别包括集成存储器和i/o控制逻辑(“cl”)1472和1482。因此,cl1472、1482包括集成存储器控制器单元,并包括i/o控制逻辑。图13展示不仅存储器1232、1234耦合到cl1472、1482,而且i/o设备1314也耦合到控制逻辑1472、1482。传统i/o设备1315被耦合到芯片组1290。

现在参考图14,示出的是根据本发明的实施例的soc1400的框图。图10中的类似要素使用类似的附图标记。另外,虚线框是更先进的soc上的任选的特征。在图14中,(多个)互连单元1402被耦合到:应用处理器1410,其包括一个或多个核的集合202a-n的集合以及(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一个或多个协处理器的集合1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1430;直接存储器访问(dma)单元1432;以及用于耦合到一个或多个外部显示器的显示单元1440。在一个实施例中,(多个)协处理器1420包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器,等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如,图12中展示的代码1230)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。

程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“ip核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、可重写紧致盘(cd-rw)以及磁光盘;半导体器件,诸如,只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);相变存储器(pcm);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。

图15是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所展示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图15示出可使用x86编译器1504来编译高级语言1502形式的程序,以生成可由具有至少一个x86指令集核的处理器1516原生执行的x86二进制代码1506。具有至少一个x86指令集核的处理器1516表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1504表示能操作用于生成x86二进制代码1506(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1516上执行。类似地,图15示出可以使用替代的指令集编译器1508来编译高级语言1502形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1514(例如,具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集、和/或执行加利福尼亚州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生执行的替代的指令集二进制代码1510。指令转换器1512用于将x86二进制代码1506转换成可以由不具有x86指令集核的处理器1514原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或其组合。

对于图1至图2和图5至图7中任一者描述的组件、特征和细节也可以可选地应用于图3至图4中的任一者。此外,可选地,针对所述设备中的任一者描述的组件、特征和细节还可以适用于在实施例中可由和/或用这种设备执行的任何方法。本文所述处理器中的任何一个可以包括在本文(例如,图11至图14)公开的计算机系统或soc中的任何一个中。本文公开的指令可使用本文示出的在本文示出的系统中的任何系统上的具有本文示出的微架构中的任何微架构的处理器中的任何处理器来执行。

在说明书和权利要求书中,可能使用术语“耦合”和/或“连接”及其衍生词。这些术语并不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件直接物理和/或电气接触。“耦合”可以意指两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但仍彼此协作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。

可能已使用术语“和/或”。如本文所使用的,术语“和/或”是指一个或另一个或两者(例如,a和/或b意指a或b或a和b两者)。

在以上描述中,已经阐述了许多特定细节以便提供对实施例的透彻理解。然而,可以在没有这些具体细节中的一些具体细节的情况下实践其他实施例。本发明的范围不是通过上面提供的具体实施例来确定,而是由下面的权利要求书来确定的。在其他情况下,已知的电路、结构、装置和操作已经以框图形式和/或没有详细地示出,以避免模糊对说明书的理解。在认为适当的情况下,参考数字或参考数字的终端部分已经在附图中重复,以指示相应的或类似的元件,可选地,所述元件可以具有相似或相同的特性,除非另有说明或清楚地显现。

某些操作可以由硬件组件执行、或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行这些操作的指令。可选地,还可以通过硬件和软件的组合来执行操作。可以包括特定或具体电路或其他逻辑(例如,可能与固件和/或软件组合的硬件)的处理器、机器、电路或硬件能操作用于执行和/或处理指令并且响应于指令而存储结果。

一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。介质可以包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可以提供或已经在其上存储有指令或指令序列,所述指令或指令序列如果和/或当被机器执行时能操作用于使所述机器执行和/或导致所述机器执行本文公开的一种或多种操作、方法或技术。

在一些实施例中,机器可读介质可以包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储设备、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播信号组成。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固体物质。

适合机器的示例包括但不限于:通用处理器、专用处理器、数字逻辑电路、集成电路等。合适机器的其他示例包括:计算机系统或包括处理器、数字逻辑电路或集成电路的其他电子装置。这种计算系统或电子装置的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如,路由器和交换机)、移动互联网装置(mid)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。

贯穿本说明书,对“一个实施例”、“实施例”,“一个或多个实施例”、“一些实施例”的提及例如指示特定特征可以在本发明的实践中被包括但未必是必须的。类似地,在说明书中,为了简化本公开并辅助理解各个发明性方面,各种特征有时在单个实施例、图或对其的描述中分组在一起。然而,本公开的方法并不被解释为反映本发明要求比每个权利要求中明确陈述的更多特征的意图。相反,正如以下的权利要求书所反映的,发明性方面在于少于单个公开的实施例的全部特征。因此,据此明确地将具体实施方式之后的权利要求书结合到具体实施方式中,其中每一项权利要求独立地代表本发明的一个单独的实施例。

示例实施例

以下示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用这些示例中的细节。

示例1是一种处理器,所述处理器包括:解码单元,所述解码单元用于对事务结束加上持久性提交指令进行解码;以及执行单元,与所述解码单元耦合。所述执行单元响应于所述指令而原子地:确保对持久性存储器进行的所有先前存储至存储器操作将在所述指令变为全局可见之前被存储在所述持久性存储器中,在所述指令开始执行时所述存储至存储器操作将已经被接受到存储器,但在所述指令开始执行时所述存储至存储器操作将不一定已经存储在所述持久性存储器中。所述执行单元还响应于所述指令而原子地:在所述指令变为全局可见之前结束事务性存储器事务。

示例2包括如示例1所述的处理器,其中,所述解码单元用于对用于指示目的地存储位置的所述指令进行解码,并且其中,所述执行单元响应于所述指令而用于将值存储至所述目的地存储位置。

示例3包括如示例2所述的处理器,其中,如果所述事务性存储器事务的数据冲突在所述值被存储至所述目的地存储位置之后被检测到,则所述执行单元响应于所述指令而用于在所述指令变为全局可见之前、在检测到所述数据冲突之后原子地提交所述事务性存储器事务的推测性状态更新。

示例4包括如示例2所述的处理器,其中,如果所述事务性存储器事务的数据冲突在所述值被存储至所述目的地存储位置之前被检测到,则所述执行单元响应于所述指令而用于在所述指令变为全局可见之前、在检测到所述数据冲突之后原子地中止所述事务性存储器事务的推测性状态更新。

示例5包括如示例1所述的处理器,其中,所述执行单元响应于所述指令而用于通过以下各项中的一项来结束所述事务性存储器事务:(1)在所述指令变为全局可见之前原子地提交所述事务性存储器事务的推测性状态更新;或者(2)在所述指令变为全局可见之前原子地中止所述事务性存储器事务的所述推测性状态更新。

示例6包括如示例5所述的处理器,其中,所述执行单元响应于所述指令而在所述推测性状态更新将被中止时用于将架构寄存器状态恢复至所述事务性存储器事务之前的点。

示例7包括如示例5至6中任一项所述的处理器,其中,所述执行单元响应于所述指令而在所述推测性状态更新将被中止时用于将回退指令地址存储至指令指针。

示例8包括如示例5至7中任一项所述的处理器,其中,所述解码单元用于对用于指示目的地存储位置的所述指令进行解码,并且其中,所述执行单元响应于所述指令而在所述推测性状态更新将被中止时用于将中止信息存储在所指示的目的地存储位置中。

示例9包括如示例1至8中任一项所述的处理器,进一步包括:用于允许从所述事务性存储器事务内对所述持久性存储器进行的给定的存储至存储器操作绕过事务性执行并且在所述事务性存储器事务结束之前被非推测性地接受到存储器的逻辑。

示例10包括如示例1至8中任一项所述的处理器,进一步包括:寄存器,用于存储用于指示持久性存储器的一部分的信息;以及事务性执行旁路逻辑,用于允许从所述事务性存储器事务内对所述持久性存储器的所指示部分进行的给定的存储至存储器操作绕过事务性执行并且在所述事务性存储器事务结束之前被接受到存储器。

示例11包括如示例10所述的处理器,其中,所述寄存器包括存储器类型范围寄存器(mtrr),并且其中,所述持久性存储器的所述所指示部分包括持久性存储器地址范围。

示例12包括如示例1至8中任一项所述的处理器,进一步包括:转换后备缓冲器(tlb),用于存储将与所述持久性存储器的页相对应的页表条目。所述页表条目用于存储事务性执行旁路页指示符,所述事务性执行旁路页指示符用于指示从所述事务性存储器事务内对所述持久性存储器的所述页进行的给定的存储至存储器操作将绕过事务性执行并且在所述事务结束之前被接受到存储器。所述处理器还包括:事务性执行旁路逻辑,用于允许从所述事务性存储器事务内对所述持久性存储器的所述页进行的所述给定的存储至存储器操作绕过所述事务性执行并且在所述事务性存储器事务结束之前被接受到存储器。

示例13包括如示例1至8中任一项所述的处理器,其中,所述解码单元用于对非事务性存储至存储器指令进行解码。所述非事务性存储至存储器指令用于指示从所述事务性存储器事务内对所述持久性存储器进行的给定的存储至存储器操作。所述处理器包括:事务性执行旁路逻辑,响应于所述非事务性存储至存储器指令而用于允许所述给定的存储至存储器操作绕过事务性执行并且在所述事务性存储器事务结束之前被接受到存储器。

示例14包括如示例1至8中任一项所述的处理器,其中,当所述指令开始执行时将已经被接受到存储器的、对所述持久性存储器进行的所述先前存储至存储器操作中的每一个将通过作为以下各项中的一项而已经被接受到存储器:(a)非暂时性存储至写回(wb)存储器,其在变为全局可见时将被接受到存储器;(b)存储至不可高速缓存(uc)存储器、合并写(wc)存储器、以及直写(wt)存储器之一,其在变为全局可见时将被接受到存储器;以及(c)暂时性存储至写回(wb)存储器,其在已经变为全局可见之后将被接受到存储器,并且在高速缓存行转储清除和高速缓存行写回之一针对与所述暂时存储至所述写回(wb)存储器相同的高速缓存行而被执行之后变为全局可见。

示例15包括如示例1至14中任一项所述的处理器,其中,所述执行单元响应于所述指令而仅在所述事务性存储器事务为非嵌套事务性存储器事务和一组嵌套事务性存储器事务的最外层事务性存储器事务之一时结束所述事务性存储器事务。

示例16是一种在处理器中的方法,所述方法包括接收事务结束加上持久性提交指令。所述方法还包括响应于所述事务结束加上持久性提交指令而原子地:确保正对持久性存储器进行的所有先前存储至存储器操作在所述指令提交之前被存储在所述持久性存储器中,在所述指令开始执行时所述存储至存储器操作已经经过在其到所述持久性存储器的路径上的末级高速缓存,但在所述指令开始执行时所述存储至存储器操作不一定已经存储在所述持久性存储器中。所述方法还包括响应于所述事务结束加上持久性提交指令而原子地:在所述指令提交之前结束事务性存储器事务。

示例17包括如示例16所述的方法,其中,接收包括接收指示目的地存储位置的所述指令,并且所述方法进一步包括响应于所述指令而将值存储至所述目的地存储位置。

示例18包括如示例17所述的方法,其中,将所述值存储至所述目的地存储位置包括将日志结束标记存储至位于所述持久性存储器中的所述目的地存储位置。

示例19包括如示例16至18中任一项所述的方法,进一步包括:在所述值已经被存储至所述目的地存储位置之后检测所述事务性存储器事务的数据冲突;以及在已经检测到所述数据冲突之后并且在所述指令变为全局可见之前,响应于所述指令而原子地提交所述事务性存储器事务的推测性状态更新。

示例20包括如示例16至19中任一项所述的方法,进一步包括:允许从所述事务性存储器事务内对所述持久性存储器进行的存储至存储器操作在所述事务性存储器事务提交之前被接受到存储器。

示例21是一种用于处理指令的系统,所述系统包括互连、以及与所述互连耦合的处理器。所述处理器用于接收用于指示目的地存储位置的事务结束加上持久性提交指令。所述处理器响应于所述指令而用于原子地:将值存储至有待由所述指令指示的所述目的地存储位置。所述处理器响应于所述指令而原子地:确保对持久性存储器进行的所有先前存储至存储器操作将在所述指令变为全局可见之前被存储在所述持久性存储器中,在所述指令开始执行时所述存储至存储器操作将已经被接受到存储器,但在所述指令开始执行时所述存储至存储器操作将不一定已经存储在所述持久性存储器中。所述处理器响应于所述指令而用于原子地:在所述指令变为全局可见之前结束事务性存储器事务。所述系统还包括至少一个存储器装置,与所述互连耦合,所述至少一个存储器装置存储有指令集,所述指令集如果被执行则使所述系统执行一组操作。所述一组操作包括:(1)启动所述事务性存储器事务;(2)执行从所述事务性存储器事务内到所述持久性存储器中的日志的至少一个存储至存储器操作,所述至少一个存储至存储器操作包括绕过事务性执行并且在所述事务性存储器事务结束之前被接受到存储器;并且(3)执行从所述事务性存储器事务内到共享数据的至少一个存储至存储器操作,无需绕过事务性执行;并且(4)执行所述事务结束加上持久性提交指令,其中,将所述值存储到所述目的地存储位置用于写入日志结束标记。

示例22包括如示例21所述的系统,其中,如果所述事务性存储器事务的数据冲突在所述值被存储至所述目的地存储位置之后被检测到,则所述处理器响应于所述事务结束加上持久性提交指令而用于在所述指令变为全局可见之前、在检测到所述数据冲突之后原子地提交所述事务性存储器事务的推测性状态更新。

示例23是一种包括非暂态机器可读存储介质的制品。所述非暂态机器可读存储介质存储有事务结束加上持久性提交指令。所述指令当由机器执行时用于使所述机器原子地执行包括以下操作的操作:确保正对持久性存储器进行的所有先前存储至存储器操作在所述指令提交之前被存储在所述持久性存储器中,在所述指令开始执行时所述存储至存储器操作已经经过在其到所述持久性存储器的路径上的末级高速缓存,但在所述指令开始执行时所述存储至存储器操作不一定已经存储在所述持久性存储器中。所述指令当由机器执行时还用于使所述机器原子地在所述指令提交之前结束事务性存储器事务。

示例24包括如示例23所述的制品,其中,所述指令当由所述机器执行时进一步使所述机器将值存储至将由所述指令指示的目的地存储位置。

示例25包括如示例1至15中任一项所述的处理器,进一步包括:可选的分支预测单元,用于预测分支;以及可选的指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括事务结束加上持久性提交指令的指令。所述处理器还可以可选地包括:可选的1级(l1)指令高速缓存,与所述指令预取单元耦合,所述l1指令高速缓存用于存储指令;可选的l1数据高速缓存,用于存储数据;以及可选的2级(l2)高速缓存,用于存储数据和指令。所述处理器还可以可选地包括:指令取出单元,与所述解码单元、所述l1指令高速缓存和所述l2高速缓存耦合,所述指令取出单元用于:取出所述事务结束加上持久性提交指令,在一些情况下,从所述l1指令高速缓存和所述l2高速缓存中的一者中取出;并且将所述事务结束加上持久性提交指令提供给所述解码单元。所述处理器还可以可选地包括:寄存器重命名单元,用于对寄存器进行重命名;可选的调度器,用于对已经从所述事务结束加上持久性提交指令中解码出的一个或多个操作进行调度以供执行。

示例26包括一种芯片上系统,其包括:至少一个互连;如示例1至15中任一项所述的处理器,与所述至少一个互连耦合;可选的图形处理单元(gpu),与所述至少一个互连耦合;可选的数字信号处理器(dsp),与所述至少一个互连耦合;可选的显示控制器,与所述至少一个互连耦合;可选的存储器控制器,与所述至少一个互连耦合;可选的无线调制解调器,与所述至少一个互连耦合;可选的图像信号处理器,与所述至少一个互连耦合;可选的兼容通用串列总线(usb)的控制器,与所述至少一个互连耦合;可选的兼容蓝牙的控制器,与所述至少一个互连耦合;以及可选的无线收发器控制器,与所述至少一个互连耦合。

示例27是一种处理器或其他设备,用于执行(例如,能操作用于执行)如示例16至20中任一项所述的方法。

示例28是一种处理器或其他设备,其包括用于执行如示例16至20中任一项所述的方法的装置。

示例29是一种处理器,所述处理器包括用于执行(例如,能操作用于执行)如示例16至20中任一项所述的方法的逻辑。

示例30是一种制品,其包括可选地非暂态机器可读介质,所述非暂态机器可读介质可选地存储或以其他方式提供指令,所述指令如果和/或当由处理器、计算机系统、电子装置或其他机器执行时能操作用于使所述机器执行如示例16至20中任一项所述的方法。

示例31是一种基本上如本文描述的处理器或其他设备。

示例32是一种处理器或其他设备,其能操作用于执行基本上如本文描述的任何方法。

示例33是一种处理器或其他设备,其用于执行基本上如本文描述的任何指令(例如,其具有用于执行所述指令的逻辑或其能操作用于执行所述指令)。

示例34是一种计算机系统或其他电子装置,其包括处理器,所述处理器具有解码单元,所述解码单元用于对第一指令集的指令进行解码。所述处理器还具有一个或多个执行单元。所述电子装置还包括与所述处理器耦合的存储设备。所述存储装置用于存储第一指令,所述第一指令可以是基本上如本文公开的事务结束加上持久性提交指令中的任何指令,并且所述第一指令将属于第二指令集。所述存储装置还用于存储用于将所述第一指令转换成所述第一指令集的一个或多个指令的指令。所述第一指令集的所述一个或多个指令当由所述处理器执行时将使所述处理器仿真所述第一指令。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1