CN104050023A - 用于实现事务存储器的系统和方法 - Google Patents
用于实现事务存储器的系统和方法 Download PDFInfo
- Publication number
- CN104050023A CN104050023A CN201410093028.4A CN201410093028A CN104050023A CN 104050023 A CN104050023 A CN 104050023A CN 201410093028 A CN201410093028 A CN 201410093028A CN 104050023 A CN104050023 A CN 104050023A
- Authority
- CN
- China
- Prior art keywords
- memory
- impact damper
- memory access
- carry out
- processor
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
描述了用于实现事务存储器访问的系统和方法。一种示例方法可以包括:发起存储器访问事务;使用与存储器访问跟踪逻辑相关联的第一缓冲器,相对于第一存储器位置执行事务读操作,和/或使用与存储器访问跟踪逻辑相关联的第二缓冲器,相对于第二存储器位置执行事务写操作;相对于第三存储器位置执行非事务读操作,和/或相对于第四存储器位置执行非事务写操作;响应于由存储器访问跟踪逻辑检测到由不同于处理器的设备访问第一存储器位置或第二存储器位置,中止存储器访问事务;以及响应于无法检测到事务中止条件且不考虑第三存储器位置和第四存储器位置的状态,完成存储器访问事务。
Description
技术领域
本公开内容通常涉及计算机系统,且尤其涉及用于实现事务存储器的系统和方法。
背景技术
两个或更多个进程的并发执行可以要求相对于共享资源(例如,可由两个或更多个处理器实现的存储器)实现同步机制。这样的同步机制的一个示例是基于信号量的锁定,引起进程执行的串行化,因而潜在地负面影响总体系统性能。此外,基于信号量的锁定可以引起死锁(在两个或更多个进程均等待另一进程释放资源锁定时发生的条件)。
附图说明
作为示例而非限制阐释本公开内容,且在结合附图考虑时借助于下列具体实施方式可以更完整地理解本公开内容,附图中:
图1叙述根据本公开内容的一个或多个方面的示例计算机系统的高层次组件图;
图2叙述根据本公开内容的一个或多个方面的处理器的框图;
图3a-3b示意性地阐释根据本公开内容的一个或多个方面的处理器微体系结构的元素;
图4阐释根据本公开内容的一个或多个方面实现事务存储器访问的示例计算机系统的若干方面;
图5是阐释根据本公开内容的一个或多个方面使用事务模式指令的示例代码片段;
图6描绘根据本公开内容的一个或多个方面用于实现事务存储器访问的方法的流程图;以及
图7叙述根据本公开内容的一个或多个方面的示例计算机系统的框图。
具体实施方式
在此描述的是用于实现计算机系统的事务存储器访问的方法和系统。“事务存储器访问”是指由处理器按原子操作执行两个或更多个存储器访问指令,以使得各指令要么共同成功,要么共同失败。在后一种情况中,存储器可以保持在执行操作序列中的第一个之前出现的状态中未经修改,和/或可以执行其他矫正动作。在某些实现中,可以投机性地执行事务存储器访问,即无需锁定正在访问的存储器,从而提供用于同步两个或更多个并发执行的线程和/或进程对共享资源的访问的有效机制。
为了实现事务存储器访问,处理器指令集可以包括事务开始指令和事务结束指令。在事务操作模式中,处理器可以分别经由读缓冲器和/或写缓冲器投机性地执行多个存储器读操作和/或存储器写操作。写缓冲器可以持有存储器写操作的结果而不把数据提交给相应的存储器位置。与缓冲器相关联的存储器跟踪逻辑可以检测另一设备对指定的存储器位置的访问,并把错误条件通知给处理器。响应于接收到错误信号,处理器可以中止事务并把控制传递给错误恢复例程。替代地,处理器可以在到达事务结束指令时检查错误。在缺乏事务中止条件时,处理器可以把写操作结果提交给相应的存储器或高速缓存位置。在操作事务模式中,处理器也可以执行一个或多个存储器读和/或写操作,可以立即提交这些存储器读和/或写操作,以使得它们的结果立即对其他设备(例如,其他处理器核心或其他处理器)可见,而不考虑事务成功完成还是中止。在事务内执行非事务存储器访问的能力提供处理器编程中的较好灵活性,并通过潜在地减少完成给定编程任务所必需的事务的数量增加总体执行效率。
在本文下面作为示例而非限制具体实施方式上面引用的方法和系统的各种方面。
在下列描述中,陈述了众多特定的细节,例如特定类型的处理器和系统配置、特定的硬件结构、特定的体系结构和微体系结构的细节、特定的寄存器配置、特定的指令类型、特定的系统组件、特定的测量/高度、特定的处理器流水线级和操作等等的示例,以便提供对本发明的透彻理解。然而,本领域中的技术人员将明显看出,实践本发明不需要使用这些特定的细节。在其他实例中,为了避免不必要地模糊本发明,不详细描述公知的组件或方法,例如特定的和替代的处理器体系结构、用于所描述的算法的特定的逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码中的算法的特定表示、特定的断电和门控技术/逻辑和计算机系统的其他特定操作细节。
尽管参考处理器描述下列实施方式,但其他实施方式也适用于其他类型的集成电路和逻辑设备。本发明的各实施方式的类似的技术和教导可以应用到可以受益于更高的流水线吞吐量和经改善的性能的其他类型的电路或半导体设备。本发明的各实施方式的教导适用于执行数据处理的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,且可以应用到其中执行对数据的处理和管理的任何处理器和机器。另外,出于阐释的目的,下列的描述提供示例,且附图示出各种示例。然而,不应以限制的意义来把这些示例解释成它们仅仅旨在提供本发明的实施方式的示例,而不是提供本发明的实施方式的所有可能实现的详尽列表。
尽管下面示例在执行单元和逻辑电路的上下文中描述指令处理和分配,但可以通过被存储在机器可读的有形介质中的数据或指令完成本发明的其他实施方式,在由机器执行时,这些数据或指令引起机器执行与本发明的至少一种实施方式相一致的功能。在一种实施方式中,与本发明的各实施方式相关联的功能用机器可执行的指令来实现。各指令可以用来引起用指令编程的通用或专用的处理器执行本发明的步骤。本发明的各实施方式可以被提供为计算机程序产品或软件,该计算机程序产品或软件可以包括其上存储有指令的机器或计算机可读介质,这些指令可以被用来把计算机(或其他电子设备)编程为执行根据本发明的各实施方式的一个或多个操作。替代地,本发明的各实施方式的操作可以由包含用于执行操作的固定功能逻辑的特定硬件组件执行,或由经编程的计算机组件和固定功能硬件组件的任何组合执行。
可以把用来把逻辑编程为执行本发明的各实施方式指令存储在系统中的存储器内,例如DRAM、高速缓存、闪速存储器或其他存储。此外,可以经由网络或通过其他计算机可读介质分发指令。因而,机器可读介质可以包括用于以可由机器(例如,计算机)读取的形式存储或传送信息的任何机制,但不限于软盘、光盘、紧致盘、只读存储器(CD-ROM)和磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器或用于在因特网上经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等等)传递信息的有形的、机器可读的储存器。因此,计算机可读介质包括适用于以可由机器(例如,计算机)读取的形式存储或传送电子指令或信息的任何类型的有形机器可读介质。
本文中,“处理器”应当是指能够执行编码算术、逻辑或I/O操作的指令的设备。在一个说明性的示例中,处理器可以遵循冯·诺依曼体系结构的模型,且可以包括运算逻辑单元(ALU)、控制单元和多个寄存器。在进一步的方面,处理器可以包括一个或多个处理器核心,且因此可以是通常能够处理单个指令流水线的单个核心处理器或可以同时地处理多个指令流水线的多核心处理器。在另一方面中,处理器可以被实现为单个集成电路、两个或更多个集成电路或者可以是多芯片模块的组件(例如,其中多个单独的微处理器晶片被包括在单个集成电路封装中且因此共享单个插槽)。
图1叙述根据本公开内容的一个或多个方面的计算机系统的一个示例的高层次组件图。计算机系统100可以包括处理器102,处理器102采用包括执行用于根据在此描述实施方式处理数据的算法的逻辑的执行单元。系统100表示基于可从加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM IIITM、PENTIUM4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但也可以使用其他系统(包括具有其他微处理器的PC、工作站、机顶盒等等)。在一种实施方式中,示例系统100执行可从华盛顿州雷蒙德市微软公司获得的WINDOWSTM操作系统的一个版本,但也可以使用其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户接口。因而,本发明的各实施方式不限于硬件电路和软件的任何特定组合。
各实施方式不限于计算机系统。本发明的替代实施方式可以用于其他设备,例如手持式设备和嵌入式应用。手持式设备的一些示例包括蜂窝式电话、因特网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一种实施方式的一个或多个指令的任何其他系统。
在所阐释的这一示例中,处理器102包括实现用于执行一个或多个指令例如事务存储器访问指令的算法的一个或多个执行单元108。可以在单个处理器台式或服务器系统的上下文中描述一种实施方式,但多处理器系统中可以包括替代的实施方式。系统100是‘集线器’系统体系结构的示例。计算机系统100包括处理数据信号的处理器102。作为说明性示例,处理器102包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备,例如数字信号处理器。处理器102被耦合到处理器总线110,处理器总线110在处理器102和系统100中的其他组件之间传送数据信号。系统100的元素(例如图形加速器112、存储器控制器中枢116、存储器120、I/O控制器中枢124、无线收发器126、闪速BIOS128、网络控制器134、音频控制器136、串行扩展端口138、I/O控制器140等等)执行其传统功能,这些功能对熟悉本领域的技术人员来说是众所周知的。
在一种实施方式中,处理器102包括1级(L1)内部高速缓存104。取决于体系结构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。其他实施方式包括内部和外部高速缓存两者的组合,这取决于具体的实现和需要。寄存器文件106用于把不同类型的数据存储在各种寄存器中,这些寄存器包括整数寄存器、浮点数寄存器、矢量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
包括执行整数和浮点操作的逻辑的执行单元108也驻留在处理器102中。在一种实施方式中,处理器102包括存储微代码(ucode)的微代码ROM,微代码在被执行时实现用于某些微指令的算法或处理复杂场景。在这里,微代码潜在地可升级为处理处理器102的逻辑错误/修复。对于一种实施方式,执行单元108包括处理经封装的指令集109的逻辑。通过在通用处理器102的指令集中包括经封装的指令集109,结合有执行指令的关联电路,可以使用通用处理器102中的经封装数据来执行多种多媒体应用所使用的操作。因而,通过把处理器的数据总线的全部宽度用于对经封装数据执行操作,加速了多种多媒体应用,并且更高效地执行这些多媒体应用。这潜在地消除了对跨越处理器的数据总线每次一个数据元素地传输较小数据单元以便执行一个或多个操作的需要。
在其他示例中,执行单元108也可以用于微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路。系统100包括存储器120。存储器120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储器设备。存储器120存储由应由处理器102执行的数据信号表示的指令和/或数据。
系统逻辑芯片116被耦合到处理器总线110和存储器120。在所阐释的实施方式中,系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可以经由处理器总线110与MCH116通信。MCH116向用于指令和数据存储以及用于存储图形命令、数据和纹理的存储器120提供高带宽存储器路径118。MCH116在处理器102、存储器120和系统100中的其他组件之间引导数据信号并在处理器总线110、存储器120和系统I/O122之间桥接数据信号。在一些实施方式中,系统逻辑芯片116可以提供图形端口以供耦合到图形控制器112。MCH116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH116。
系统100使用专有中枢接口总线122来把MCH116耦合到I/O控制器中枢(ICH)130。ICH130提供经由局部I/O总线到一些I/O设备的直接连接。局部I/O总线是用于把外围设备连接到存储器120、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪速BIOS)128、无线收发器126、数据存储124、包含用户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)等的串行扩展端口和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。
在系统的另一示例中,根据一种实施方式的指令可以与片上系统一起使用。片上系统的一种实施方式包括处理器和存储器。用于一个这样的系统的存储器是闪速存储器。闪速存储器可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器等的其他逻辑块也可以位于片上系统上。
上面示例的处理器102能够执行事务存储器访问。在某些实现中,处理器102也能够执行一个或多个存储器读和/或写操作,可以立即提交这些存储器读和/或写操作以使得它们的结果立即对其他设备(例如,其他处理器核心或其他处理器)可见,而不考虑事务成功完成还是中止,如本文下面更详细地描述的。
图2是用于处理器200的微体系结构的框图,其包括执行根据本发明的一种实施方式的事务存储器访问指令和/或非事务存储器访问指令的逻辑电路。在一些实施方式中,根据一种实施方式的指令可以被实现为对具有字节、字、双字、四字等等的大小的数据元素以及数据类型例如单精度和双精度整数和浮点数数据类型操作。在一种实施方式中,有序前端201是处理器200的一部分,其用于提取要执行的指令并准备它们以供稍后在处理器流水线中使用。前端201可以包括若干单元。在一种实施方式中,指令提取器226从存储器提取指令并把它们馈送到指令解码器228,指令解码器228又解码或解析它们。例如,在一种实施方式中,解码器把所接收的指令解码成机器可以执行的一个或多个操作,这些操作被称为“微指令”或“微操作”(也被称为微op或uop)。在其他实施方式中,解码器把指令解析成由微体系结构用来执行根据一种实施方式的操作的操作码和相应的数据和控制字段。在一种实施方式中,踪迹缓存230取用已解码的uop并把它们组装成uop队列234中的程序已排序序列或踪迹,以用于执行。当踪迹缓存230遭遇复杂指令时,微代码ROM232提供完成该操作所需要的uop。
一些指令被转换成单个微op,而其他需要若干个微op来完成整个操作。在一种实施方式中,如果完成指令需要多于四个的微op,则解码器228访问微代码ROM232以便执行该指令。对于一种实施方式,在指令解码器228处可以把指令解码成少量的微op以供处理。在另一实施方式中,如果完成操作需要多个微op,则该指令可以被存储在微代码ROM232内。踪迹缓存230参考入口点可编程逻辑阵列(PLA)以确定用于读取微代码序列的正确的微指令指针,以便完成来自微代码ROM232的根据一种实施方式的一个或多个指令。在微代码ROM232完成对指令的微op进行定序之后,该机器的前端201恢复从踪迹缓存230提取微op。
乱序执行引擎203中准备用于执行的指令。乱序执行逻辑具有多个缓冲器,以便在指令流沿着流水线下行并被调度为执行时对指令流进行平滑和再排序,从而优化性能。除法器逻辑分配每一uop执行所需要的机器缓冲器和资源。寄存器重命名逻辑把逻辑寄存器重命名成寄存器文件中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/普通浮点数调度器204和单精度浮点数调度器206)之前,除法器也为两个uop队列中的一个uop队列中的每一uop分配条目,这两个uop队列中,一个uop队列用于存储器操作且另一个uop队列用于非存储器操作。基于uop调度器202、204、206相关输入寄存器操作数源的准备情况以及uop完成它们的操作所需要的执行资源的可用性,uop调度器202、204、206确定uop何时准备好执行。一种实施方式的快速调度器202可以在主时钟周期的每半个周期上进行调度,而其他调度器可以在每个主处理器时钟周期中调度一次。调度器仲裁分派端口以便调度uop以供执行。
寄存器文件208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点数操作的单独的寄存器文件208、210。一种实施方式的每一寄存器文件208、210也包括旁路网络,旁路网络可以把还没有被写入到寄存器文件的刚刚完成的结果旁路或转发到新的相关uop。整数寄存器文件208和浮点数寄存器文件210也能够互相之间进行数据的通信。对于一种实施方式,整数寄存器文件208被拆分成两个分离的寄存器文件,一个寄存器文件用于该数据的低32位且第二寄存器文件用于该数据的高32位。一种实施方式的浮点数寄存器文件210具有128位宽的条目,这是因为浮点数指令通常具有操作数从64位到128位的宽度。
执行框211包含执行单元212、214、216、218、220、222、224,在这些执行单元中实际地执行指令。这一部分包括存储微指令执行所需要的整数和浮点数数据操作数值的寄存器文件208、210。一种实施方式的处理器200由多个执行单元组成:地址生成单元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮点数ALU222、浮点数移动单元224。对于一种实施方式,浮点执行块222、224执行浮点数、MMX、SIMD和SSE或其他操作。一种实施方式的浮点数ALU222包括64位×64位的浮点数除法器,以便执行除法、开方和求余数微操作。对于本发明的各实施方式,可以用浮点硬件来处理涉及浮点值的指令。在一种实施方式中,ALU操作去往高速ALU执行单元216、218。一种实施方式的快速ALU216、218可以以半个时钟周期的有效延迟时间执行快速操作。对于一种实施方式,大多数复杂整数操作去往慢速ALU220,因为慢速ALU220包括用于诸如乘法器、移位、标志逻辑和分支处理等的长延迟时间类型的操作的整数执行硬件。存储器加载/存储操作由AGU212、214执行。对于一种实施方式,在对64位数据操作数执行整数操作的上下文中描述整数ALU216、218、220。在替代的实施方式中,ALU216、218、220可以被实现为支持包括16、32、128、256等等的各种数据位。类似地,浮点单元222、224可以被实现为支持具有各种宽度的位数的操作数范围。对于一种实施方式,浮点单元222、224可以对128位宽的经封装数据操作数以及SIMD和多媒体指令进行操作。
在一种实施方式中,在父加载已经完成执行之前,uop调度器202、204、206分派相关操作。由于在处理器200中投机性地调度和执行uop,处理器200也包括处理存储器未命中的逻辑。如果在数据高速缓存中数据加载未命中,则在该流水线中可以实时存在给调度器留下暂时不正确的数据的相关操作。重放机制跟踪和再次执行使用不正确数据的指令。依赖性操作需要被重新执行,而独立操作被允许完成。处理器的一种实施方式的调度器和重放机制也被设计成捕捉用于文本字符串比较操作的指令序列。
术语“寄存器”可以是指板载处理器存储位置,其被用作为指令的一部分用于标识操作数。换句话说,寄存器可以是(从程序员的视角来看)在处理器外部可用的那些寄存器。然而,一个实施方式的寄存器在含义上不应限于特定类型的电路。相反,一个实施方式的寄存器能够存储和提供数据,并执行在此描述的功能。在此描述的寄存器可以由在处理器内使用任何数量的不同技术的电路来实现,例如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等等。在一种实施方式中,整数寄存器存储32位整数数据。一种实施方式的寄存器文件也包含用于经封装数据的八个多媒体SIMD寄存器。对于下面的讨论,应理解,寄存器是被设计为保存经封装数据的数据寄存器,例如在启用来自加利福尼亚州圣克拉拉市英特尔公司的MMXTM技术的微处理器中的64位宽的MMX寄存器(在一些实例中也被称为‘mm’寄存器)。以整数和浮点数形式两者可用的这些MMX寄存器可以与伴随着SIMD和SSE指令的经封装数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更高(通常称为SSEx)技术的128位宽的XMM寄存器也可以用来保存这样的经封装数据操作数。在一种实施方式中,在存储经封装数据和整数数据时,寄存器不需要区分这两种数据类型。在一种实施方式中,整数和浮点数被包含在相同的寄存器文件或不同的寄存器文件中。此外,在一种实施方式中,浮点数和整数数据可以被存储在不同的寄存器或相同的寄存器中。
图3a-3b示意性地阐释根据本公开内容的一个或多个方面的处理器微体系结构的元素。在图3a中,处理器流水线400包括提取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读/存储器读级414、执行级416、回写/存储器写级418、异常处理级422和提交级424。
在图3b中,箭头指示在两个或更多个单元之间的耦合,且箭头的方向指示在那些单元之间的数据流的方向。图3b示出处理器核心490,处理器核心490包括被耦合到执行引擎单元450的前端单元430,且两者均被耦合到存储器单元470。
核心490可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或替代的核心类型。作为再一种选项,核心490可以是专用核心,诸如例如网络或通信核心、压缩引擎、图形核心等等。在某些实现中,根据本公开内容的一个或多个方面,核心490能够执行事务存储器访问指令和/或非事务存储器访问指令。
前端单元430包括被耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434被耦合到指令转换后备缓冲器(TLB)436,指令转换后备缓冲器436被耦合到指令提取单元438,指令提取单元438被耦合到解码单元440。解码单元或解码器可以解码指令,且作为输出生成从原始指令解码或以另外方式反映原始指令或从原始指令导出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。可以使用各种不同的机制实现解码器。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元434还被耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440被耦合到执行引擎单元450中的重命名/分配器452。
执行引擎单元450包括被耦合到引退单元454和一组一个或多个调度器单元456的重命名/分配器452。调度器单元456表示任何数量的不同的调度器,包括保留站(reservation station)、中央指令窗口等等。调度器单元456被耦合到物理寄存器文件单元458。物理寄存器文件单元458中的每一个表示一个或多个物理寄存器文件,其中不同的各个存储一个或多个不同的数据类型,例如标量整数、标量浮点数、经封装整数、经封装浮点数、矢量整数、矢量浮点数等等、状态(例如,指令指针,即要执行的下一指令的地址)等等。物理寄存器文件单元458与引退单元454重叠,以便阐释可以实现寄存器假名和乱序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器文件、使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。通常,体系结构寄存器在处理器外或从程序员的透视图视角可见。寄存器不限于任何已知的具体类型的电路。只要各种不同类型的寄存器能够如在此描述的存储和提供数据,它们就是合适的。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器假名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等等。引退单元454和物理寄存器文件单元458被耦合到执行集群460。执行集群460包括一组一个或多个执行单元162和一组一个或多个存储器访问单元464。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法)且对各种类型的数据(例如,标量浮点、经封装整数、经封装浮点数、矢量整数、矢量浮点数)执行操作。尽管一些实施方式可以包括对特定的功能或功能集来说专用的多个执行单元,但其他实施方式可以包括全都执行所有功能的一个执行单元或多个执行单元。调度器单元456、物理寄存器文件单元458和执行集群460被示出为可能是复数个,这是因为某些实施方式创建用于某些类型的数据/操作的单独的流水线(例如,标量整数流水线、标量浮点/经封装整数/经封装浮点数/矢量整数/矢量浮点数流水线,以及/或者存储器访问流水线,每一个均均具有其自己的调度器单元、物理寄存器文件单元和/或执行集群——并且在独立的存储器访问流水线的情况下,特定实施方式被实现为其中这一流水线的执行集群具有存储器访问单元464)。还应理解,在使用独立的流水线的情况下,这些流水线中的一个或多个可以是乱序发起/执行,且其余的可以是有序发起/执行。
该组存储器访问单元464被耦合到存储器单元470,存储器单元470包括被耦合到数据高速缓存单元474的数据转换后备缓冲器单元472,数据高速缓存单元474被耦合到2级(L2)高速缓存单元476。在一个示例性的实施方式中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,其中的每一个都被耦合到存储器单元470中的数据转换后备缓冲器单元472。L2高速缓存单元476被耦合到一个或多个其他级别的高速缓存且最终耦合到主存储器。
作为示例,乱序发起/执行核心体系结构可以如下所示地实现流水线400:指令提取438执行提取级402和长度解码级404;解码单元440执行解码级406;重命名/分配器452执行分配级408和重命名级410;调度器单元456执行调度级412;物理寄存器文件单元458和存储器单元470执行寄存器读/存储器读级414;执行集群460执行执行级416;存储器单元470和物理寄存器文件单元458执行回写/存储器写级418;异常处理级422中可以涉及各种单元;并且引退单元454和物理寄存器文件单元458执行提交级424。
核心490可以支持一个或多个指令集(例如,x86指令集(且新近的版本已经添加了一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(带有诸如NEON的附加扩展))。
在某些实现中,核心可以支持多线程化(执行两个或更多个并行的操作或线程集),且可以以各种方式这样做,这些方式包括分时多线程、同时多线程(其中单个物理核心为该物理核心同时地多线程化的每一线程提供逻辑核心)或其组合(例如,分时提取和解码以及此后的同时多线程,例如在英特尔超线程技术中)。
尽管所阐释的处理器的实施方式也包括分离的指令和数据高速缓存单元434/474和共享L2高速缓存单元476,但替代的实施方式可以具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存,或多级内部高速缓存。在一些实施方式中,系统可以包括内部高速缓存和外置于核心和/或处理器的外部高速缓存的组合。替代地,所有高速缓存都可以外置于核心和/或处理器。
图4示意性地阐释根据本公开内容的一个或多个方面的计算机系统100的几个方面。如本文以上提到且由图4示意性地阐释的,处理器102可以包括用于存储指令和/或数据的一个或多个高速缓存104,包括例如L1高速缓存和L2高速缓存。高速缓存104可以由一个或多个处理器核心123访问。在某些实现中,高速缓存104可以由直写式高速缓存表示,直写式高速缓存中每一高速缓存写操作引起对系统存储器120的写操作。替代地,高速缓存104可以由回写式高速缓存表示,回写式高速缓存中并不立即把高速缓存写操作镜像到系统存储器120。在某些实现中,高速缓存104可以实现高速缓存一致性协议,诸如例如修改独占共享无效(MESI)协议,以提供被存储在一个或多个高速缓存中的数据相对于共享存储器的一致性。
在某些实现中,处理器102还可以包括一个或多个读缓冲器127和一个或多个写缓冲器129,以便保存从存储器120读取或向其写入的数据。缓冲器可以具有相同的大小或几种固定的大小,或者可以具有可变的大小。在一个示例中,读缓冲器和写缓冲器可以由相同的多个缓冲器表示。在一个示例中,读缓冲器和/或写缓冲器可以由高速缓存104的多个高速缓存条目表示。
处理器102还可以包括与缓冲器127和129相关联的存储器跟踪逻辑131。存储器跟踪逻辑可以包括被配置为跟踪对(例如由物理地址标识的)存储器位置的访问的电路,这些存储器位置先前已经被缓冲到缓冲器127和/或129,从而提供由缓冲器127和/或129存储的数据相对于相应存储器位置的一致性。在某些实现中,缓冲器127和/或129可以具有与它们相关联的地址标签,以便保存所缓冲的存储器位置的地址。实现存储器跟踪逻辑131的电路可以通信上耦合到计算机系统100的地址总线,且因此可以通过以下实现监听:读取地址总线上的其他设备(例如,其他处理器或直接存储器访问(DMA)控制器)指定的地址,并把那些地址与先前已经被缓冲到缓冲器127和/或129的标识存储器位置的地址进行比较。
处理器102还可以包括错误恢复例程地址寄存器135,错误恢复例程地址寄存器135保存在异常事务终止的情况下要执行的错误恢复例程的地址,如本文下面更详细地描述的。处理器102还可以包括事务状态寄存器137,事务状态寄存器137保存事务错误代码,如本文下面更详细地描述的。
为了允许处理器102实现事务存储器访问,其指令集可以包括事务开始(TX_START)指令和事务结束(TX_END)指令。TX_START指令可以包括一个或多个操作数,这些操作数包括如果事务异常终止则由处理器102执行的错误恢复例程的地址,和/或执行事务所需要的硬件缓冲器的数量。
在某些实现中,事务开始指令可以引起处理器分配用于执行事务的读和/或写缓冲器。在某些实现中,事务开始指令还可以引起处理器提交所有待决的存储操作以便确保先前执行的存储器访问操作的结果对访问相同的存储器的其他设备可见。在某些实现中,事务开始指令还可以引起处理器停止数据预取。在某些实现中,事务开始指令还可以引起处理器在已界定数量的周期内禁用中断,以便改善事务成功的机会(这是由于在事务待决的同时发生的中断发生可以使得该事务失效)。
响应于处理TX_START指令,处理器102可以进入到事务操作模式,可以由相应的TX_END指令或通过检测错误条件来终止事务操作模式。在事务操作模式中,处理器102可以投机性地(即,无需获取关于正在访问的存储器的锁)经由各自的读缓冲器127和/或写缓冲器129执行多个存储器读和/或存储器写操作。
在事务操作模式中,处理器可以为每一加载获取操作分配读缓冲器127(如果现有缓冲器已经保存了正在访问的存储器位置的内容,则可以重用现有缓冲器;否则可以分配新的缓冲器)。处理器还可以为每一存储获取操作分配写缓冲器129(如果现有缓冲器已经保存了正在访问的存储器位置的内容,则可以重用现有缓冲器;否则可以分配新的缓冲器)。写缓冲器129可以保存写操作的结果而无需把数据提交给相应的存储器位置。存储器跟踪逻辑131可以检测其他设备对指定的存储器位置的访问,并向处理器102告知错误条件。响应于接收到错误信号,处理器102可以中止事务并把控制传递给由相应的TX_START指令指定的错误恢复例程。否则,响应于接收到TX_END指令,处理器102可以把写操作提交给相应的存储器或高速缓存位置。
在事务操作模式中,处理器也可以执行一个或多个存储器读和/或写操作,可以立即提交这些读和/或写操作,以使得它们的结果立即对其他设备(例如,其他处理器核心或其他处理器)可见,而不考虑事务成功完成还是中止。在事务内执行非事务存储器访问的能力增强了处理器的编程灵活性且还可以改善执行效率。
可以通过分配处理器102的最低级数据高速缓存中的多个高速缓存条目来实现读缓冲器127和/或写缓冲器129。如果终止了事务,则读和/或写缓冲器可以被标记为无效和/或可用。如本文上面提到的,可以响应于在事务执行模式期间检测到其他设备对正在读取和/或修改存储器的访问而中止事务。其他事务中止条件可以包括在事务执行模式期间检测到的硬件中断、硬件缓冲器溢出和/或程序错误。在某些实现中,包括例如零标志、进位标志和/或溢出标志的状态标志可以被用来保存指示事务执行模式中所检测到的错误的源头的状态。替代地,事务错误代码可以被存储在事务状态寄存器137中。
如果执行达到相应的TX_END指令且由缓冲器127和/或129缓冲的数据中没有被读取或被修改,则事务正常地完成。一旦达到TX_END指令,处理器就可以响应于查明在事务操作模式期间没有发生事务中止条件而把写操作结果提交给相应的存储器或高速缓存位置,并释放先前已经为该事务分配的缓冲器127和/或127。在某些实现中,处理器102可以提交事务写操作,而不考虑由非事务存储器访问操作读取和/或修改的存储器位置的状态。
如果已经检测到事务中止条件,处理器可以中止事务并把控制传递到错误恢复例程地址,该错误恢复例程地址可以被存储在错误恢复例程地址寄存器135中。如果中止了事务,则先前已经为该事务分配的缓冲器127和/或129可以被标记为无效和/或可用。
在某些实现中,处理器102可以支持嵌套事务。嵌套事务可以从在另一(外部)事务的范围内执行的TX_START指令开始。提交嵌套事务可以不影响外部事务的状态,而不是把在外部事务的范围内的可见性提供给嵌套事务的结果;然而,直到外部事务也提交之前,那些结果仍然可以对其他设备隐藏。
为了实现嵌套事务,TX_END指令可以包括操作数指示相应TX_START指令的地址。此外,可以扩展错误恢复例程地址寄存器135以便保存用于可以同时活动的多个嵌套事务的错误恢复例程地址。
发生在嵌套事务的范围内的错误可以使得所有外部事务失效。在嵌套事务链内的每一错误恢复例程可以负责调用相应外部事务的错误恢复例程。
在某些实现中,通过把多个加载获取和/或存储获取指令分组成以事务模式执行的指令序列,如本文上面更详细地描述的,事务开始和事务结束指令可以被用来修改处理器的指令集中存在的加载获取和/或存储获取指令的行为。
图5中示出了阐释事务模式指令的使用的示例代码片段。代码片段500阐释在两个账户之间的转换:把被存储在EBX中的数量从SrcAccount传输到DstAccount。代码片段200还阐释非事务存储器操作:SomeStatistic计数器的内容被加载到寄存器中、被递减、且被存储回到存储器而不监视所读取和修改的存储器的状态。相对于SomeStatistic计数器的地址的存储操作的结果被立即提交,且因此其立即对所有其他设备可见。
图6叙述根据本公开内容的一个或多个方面用于事务存储器访问的示例方法的流程图。方法600可以由计算机系统执行,该计算机系统可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上可执行以便执行硬件仿真的指令)或其组合。方法600和/或其函数、例程、子程序或操作中的每一个可以由执行该方法的计算机系统的一个或多个物理处理器执行。方法600的两个或更多个函数、例程、子程序或操作可以由访问相同的存储器的不同处理器并行执行,或者以与上面所描述的次序不同的次序执行。在一个示例中,正如图6所阐释的,方法600可以由图1的计算机系统100执行,用于实现事务存储器访问。
参见图6,在框610,处理器可以发起存储器访问事务。如本文上面提到的,存储器访问事务可以由专用的事务开始指令发起。事务开始可以包括一个或多个操作数,这些操作数包括如果事务异常终止则由处理器执行的错误恢复例程的地址,和/或执行事务所需要的硬件缓冲器的数量。在某些实现中,事务开始指令还可以引起处理器分配读和/或写缓冲器以用于执行事务。在某些实现中,事务开始指令还可以引起处理器提交所有待决的存储操作以便确保先前执行的存储器访问操作的结果对访问相同的存储器的其他设备可见。在某些实现中,事务开始指令还可以引起处理器停止数据预取。
在框620,处理器可以投机性地经由与存储器跟踪逻辑相关联的一个或多个硬件缓冲器执行一个或多个存储器读操作。要读取的每一存储器块可以由开始地址和大小标识,或者由地址范围标识。存储器跟踪逻辑可以检测其他设备对指定的内存地址的访问,并把错误条件发送给处理器。
在框630,处理器可以投机性地经由与存储器跟踪逻辑相关联的一个或多个硬件缓冲器来执行一个或多个存储器写操作。要写入的每一存储器块可以由开始地址和大小标识,或者由地址范围标识。写缓冲器可以保存存储器写操作的结果而不把数据提交给相应的存储器位置。存储器跟踪逻辑可以检测其他设备对指定的内存地址的访问,并把错误条件发送给处理器。
如由框640示意性地示出的,响应于检测到由框630引用在存储器写操作期间的错误,在框660,处理器可以执行由TX_START指令指定的错误恢复例程;否则,在框670,处理可以继续。
在框670,处理器可以执行并立即提交一个或多个存储器读和/或写操作。当那些操作被立即提交时,它们的结果立即变得对其他设备(例如,其他处理器核心或其他处理器)可见,而不考虑事务成功完成还是中止。
一旦达到事务结束指令,处理器就可以确认在事务操作模式期间没有发生事务中止条件,如框670示意性地示出的。在框670,响应于在框610发起的事务操作模式期间检测到错误,处理器可以执行错误恢复例程,如由框660示意性地示出的;否则,如由框680示意性地示出的,处理器可以完成该事务,而不考虑框670所引用的非事务存储器访问操作读取和/或修改的存储器位置的状态。处理器可以把写操作结果提交给相应的存储器或高速缓存位置,并释放先前已经为该事务分配的缓冲器。一旦完成由框670引用的操作,该方法就可以终止。
在某些实现中,在以事务操作模式执行若干指令(例如加载或存储指令)期间也可以检测到事务错误。在图6中,起源于框620和630的虚线示意性地阐释从以事务操作模式执行的若干指令分支到错误恢复例程。
在某些实现中,在执行事务结束指令期间也可以检测到事务错误(例如,如果在报告其他设备对事务存储器的访问的逻辑中存在延时)。在图6中,起源于框680的虚线示意性地阐释从事务结束指令分支到错误恢复例程。
图7叙述根据本公开内容的一个或多个方面的示例计算机系统的框图。如图7中所示出,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是能够执行事务存储器访问操作和/或非事务存储器访问操作的处理器102的某种版本,如本文上面更详细地描述的。
尽管借助于仅两个处理器770、780示出,应理解,本发明的范围不限于此。在其他实施方式中,给定的处理器中可以存在一个或多个附加的处理器。
处理器770和780被示出为分别包括集成存储器控制器单元772和782。处理器770也包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由点对点(P-P)接口750使用P-P接口电路778、788来交换信息。如图7中所示出,IMC772和782把各处理器耦合到各自的存储器,即存储器732和存储器734,它们可以是本地附加到各自的处理器的主存储器的一部分。
处理器770、780均可以经由各个P-P接口752、754使用点对点接口电路776、794、786、798来与芯片组790交换信息。芯片组790也可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以被包括在任一个处理器内或者在这两个处理器之外,仍经由P-P互连与各处理器连接,以使得如果处理器被置于低功率模式则任一处理器或这两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一种实施方式中,第一总线716可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线等的总线,但本发明的范围不限于此。
如图7中所示出,各种I/O设备714可以耦合到第一总线716,总线桥718也是如此,总线桥718把第一总线716耦合到第二总线720。在一种实施方式中,第二总线720可以是低引脚数(LPC)总线。各种设备可以耦合到第二总线720,在一种实施方式中例如包括键盘和/或鼠标722、通信设备727和存储单元728,例如盘驱动器或可以包括指令/代码和数据730的其他大容量存储设备。进一步,音频I/O724可以耦合到第二总线720。注意,其他体系结构是可能的。例如,代替图7的点对点体系结构,系统可以实现多点总线或其他这样的体系结构。
下列的示例阐释根据本公开内容的一个或多个方面的各种实现。
示例1是用于事务存储器访问的方法,包括:由处理器发起存储器访问事务;执行以下中的至少之一:使用与存储器访问跟踪逻辑相关联的第一缓冲器,相对于第一存储器位置执行事务读操作,或使用与存储器访问跟踪逻辑相关联的第二缓冲器,相对于第二存储器位置执行事务写操作;执行以下中的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;响应于由存储器访问跟踪逻辑检测到由不同于处理器的设备访问第一存储器位置或第二存储器位置中的至少之一,中止存储器访问事务;以及响应于无法检测到事务中止条件且不考虑第三存储器位置的状态和第四存储器位置的状态,完成存储器访问事务。
在示例2中,示例1的方法的第一缓冲器和第二缓冲器可以由一个缓冲器表示。
在示例3中,示例1的方法的第一存储器位置和第二存储器位置可以由一个存储器位置表示。
在示例4中,示例1的方法的第三存储器位置和第四存储器位置可以由一个存储器位置表示。
在示例5中,示例1的方法的第一缓冲器或第二缓冲器中的至少之一可以由数据高速缓存中的一个条目提供。
在示例6中,示例1-6中的任何方法的执行操作可以包括提交第二写操作。
在示例7中,示例1-6中的任何方法的完成操作可以包括把来自第二缓冲器的数据复制到以下之一:更高级的高速缓存条目或存储器位置。
在示例8中,示例1-6中的任何方法还可以包括响应于检测到以下的至少之一中止存储器访问事务:中断、缓冲器溢出或程序错误。
在示例9中,示例1-6中的任何方法的中止操作可以包括释放第一缓冲器和第二缓冲器中的至少之一。
在示例10中,示例1-6中的任何方法的发起操作可以包括提交待决的写操作。
在示例11中,示例1-6中的任何方法的发起操作可以包括禁用中断。
在示例12中,示例1-6中的任何方法的发起操作可以包括禁用数据预取。
在示例13中,示例1-6中的任何方法还可以包括:在完成存储器访问事务之前,发起嵌套存储器访问事务;执行以下中的至少之一:使用与存储器访问跟踪逻辑相关联的第三缓冲器,执行第二事务读操作,或使用与存储器访问跟踪逻辑相关联的第四缓冲器,执行第二事务写操作;以及
完成嵌套存储器访问事务。
在示例14中,示例13的方法还可以包括响应于检测到事务中止条件中止存储器访问事务和嵌套存储器访问事务。
示例15是处理系统,包括:存储器访问跟踪逻辑;与存储器访问跟踪逻辑相关联的第一缓冲器;与存储器访问跟踪逻辑相关联的第二缓冲器;通信上耦合到第一缓冲器和第二缓冲器的处理器核心,该处理器核心被配置为执行包括以下的操作:发起存储器访问事务;执行以下中的至少之一:使用第一缓冲器,相对于第一存储器位置执行事务读操作,或使用第二缓冲器,相对于第二存储器位置执行事务写操作;执行以下中的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;响应于由存储器访问跟踪逻辑检测到由不同于处理器的设备访问第一存储器位置或第二存储器位置中的至少之一,中止存储器访问事务;以及响应于无法检测到事务中止条件且不考虑第三存储器位置的状态和第四存储器位置的状态,完成存储器访问事务。
示例16是处理系统,包括:存储器访问跟踪装置;与存储器访问跟踪装置相关联的第一缓冲器;与存储器访问跟踪装置相关联的第二缓冲器;通信上耦合到第一缓冲器和第二缓冲器的处理器核心,该处理器核心被配置为执行包括以下的操作:发起存储器访问事务;执行以下中的至少之一:使用第一缓冲器,相对于第一存储器位置执行事务读操作,或使用第二缓冲器,相对于第二存储器位置执行事务写操作;执行以下中的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;响应于由存储器访问跟踪装置检测到由不同于处理器的设备访问第一存储器位置或第二存储器位置中的至少之一,中止存储器访问事务;以及响应于无法检测到事务中止条件且不考虑第三存储器位置的状态和第四存储器位置的状态,完成存储器访问事务。
在示例17中,示例15-16中的任何的处理系统还可以包括数据高速缓存,且第一缓冲器和第二缓冲器中的至少之一可以驻留在数据高速缓存中。
在示例18中,示例15-16中的任何的处理系统还可以包括存储错误恢复例程的地址的寄存器。
在示例19中,示例15-16中的任何的处理系统还可以包括存储存储器访问事务的状态的寄存器。
在示例20中,示例15-16中的任何的处理系统的第一缓冲器和第二缓冲器可以由一个缓冲器表示。
在示例21中,示例15-16中的任何的处理系统的第三缓冲器和第四缓冲器可以由一个缓冲器表示。
在示例22中,示例15-16中的任何的处理系统的第一存储器位置和第二存储器位置可以由一个存储器位置表示。
在示例23中,示例15-16中的任何的处理系统的第三存储器位置和第四存储器位置可以由一个存储器位置表示。
在示例24中,示例15-16中的任何的处理系统的处理器核心还可以被配置为响应于检测到以下的至少之一中止存储器访问事务:中断、缓冲器溢出或程序错误。
在示例25中,示例15的处理系统的处理器核心还可以被配置为:在完成存储器访问事务之前,发起嵌套存储器访问事务;执行以下的至少之一:使用与存储器访问跟踪逻辑相关联的第三缓冲器,执行第二事务读操作,或使用与存储器访问跟踪逻辑相关联的第四缓冲器,执行第二事务写操作;以及完成嵌套存储器访问事务。
在示例26中,示例16的处理系统的处理器核心还可以被配置为:在完成存储器访问事务之前,发起嵌套存储器访问事务;执行以下的至少之一:使用与存储器访问跟踪装置相关联的第三缓冲器,执行第二事务读操作,或使用与存储器访问跟踪装置相关联的第四缓冲器,执行第二事务写操作;以及完成嵌套存储器访问事务。
在示例27中,示例25-26中的任何的处理系统的处理器核心还可以被配置为响应于检测到事务中止条件而中止存储器访问事务和嵌套存储器访问事务。
示例28是包括存储器和耦合到存储器的处理系统的装置,其中,该处理系统被配置为执行示例1-14中的任何的方法。
示例29是包括可执行指令的计算机可读非暂态存储介质,在由处理器执行时,这些可执行指令引起处理器:由处理器发起存储器访问事务;执行以下的至少之一:使用与存储器访问跟踪逻辑相关联的第一缓冲器,相对于第一存储器位置执行事务读操作,或使用与存储器访问跟踪逻辑相关联的第二缓冲器,相对于第二存储器位置执行事务写操作;执行以下的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;响应于由存储器访问跟踪逻辑检测到由不同于处理器的设备访问第一存储器位置或第二存储器位置中的至少之一,中止存储器访问事务;以及响应于无法检测到事务中止条件且不考虑第三存储器位置的状态和第四存储器位置的状态,完成存储器访问事务。
在对在计算机存储器内的数据位的操作的算法和符号表示方面,给出了具体实施方式中的一些部分。这些算法描述和表示是由数据处理领域中的技术人员用来最有效地把他们的工作实质传达给本领域中的其他技术人员的手段。在此,且一般地,算法被设想为引起期望结果的自相一致的操作序列。操作是那些需要对物理量的物理操作的那些操作。通常,尽管并不必定,这些量采用能够被存储、传递、组合、比较且以另外方式操纵的电或磁信号的形式。已经证明,有时,主要是出于通常使用的原因,将这些信号称为位、值、元素、符号、字符、术语、数字或类似物。
然而,应当牢记的是,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非特别声明,否则从上面的讨论可知,应明白,在整个说明书中,利用诸如“加密”、“解密”、“存储”、“提供”、“导出”、“获得”、“接收”、“认证”、“删除”、“执行”、“请求”、“通信”、等等的术语的讨论,是指计算机系统或类似电子计算设备的动作和过程,其操纵表示为在计算系统的数据寄存器和存储器内的物理(例如,电子)量的数据并将其变换为类似地表示为在计算系统存储器或寄存器或其它此类信息存储、传输或显示设备中的物理量的其他数据。
词语“示例”或“示例性”在本文中用于表示用作示例、实例或说明。本文描述为“示例”或“示例性”的任何方面或设计并不必定被解释为优于或胜过其他方面或设计。相反,使用词语“示例”或“示例性”旨在以具体方式呈现概念。在本申请所使用的术语“或”意指包括性的“或”而非排他性的“或”。也就是说,除非另外指定,或者从上下文可以清楚看出,否则“X包含A或B”意指任何自然的包括性排列。也就是说,如果X包含A,X包括B;或X包含A和B,那么在上述任何情况下都满足“X包含A或B”。此外,在本申请中和所附权利要求书中使用的冠词“一”和“一个”通常应被解释为是指“一个或多个”,除非另有指定或从上下文中清晰看出是针对单数形式。此外,全文中使用术语“一种实施方式”或“一个实施方式”或“一种实现”不预期是指同一个实施方式或实施,除非如此描述。此外,在此所使用的术语“第一”、“第二”、“第三”、“第四”等预期用作区分不同元素的标签,并不一定具有根据其数字标号的序数的含义。
本文所描述的实施方式还可以涉及一种用于执行本文的操作的装置。该装置可以被特别地构造为用于所需目的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在非暂态计算机可读存储介质中,例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、闪速存储器或适用于存储电子指令的任何类型的介质。术语“计算机可读存储介质”应当被理解为包括用于存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“计算机可读存储介质”应相应地被理解为包括但不限于固态存储器、光介质、磁介质、能够存储用于执行本机指令集并引起该机器执行各实施方式的任何一种或多种方法的任何介质。
本文中所呈现的算法和显示并不固有地与任何特定计算机或其它装置相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明便于构造更加专用的装置来执行所需的方法操作。将从下面的描述看出各种这些系统所需的结构。此外,并不参照任何特定的编程语言进行描述各实施方式。应理解,多种编程语言可以用来实现再次描述的实施方式的教导。
上面的描述中阐述了许多具体细节,例如特定系统、组件、方法等的示例,以提供对若干实施方式的良好了解。然而,本领域中的一个技术人员明显看出,无需这些特定的细节就可以实践至少一些实施方式。在其他实例中,没有具体实施方式众所周知的组件或方法,或者以简单框图格式给出众所周知的组件或方法,以便避免不必要地模糊本实施方式。因此,上面陈述的特定细节仅仅是示例性的。具体实现可以与这些示例性细节有所不同,但仍然可以被认为是落在各实施方式的范围之内。
应理解,上面的描述旨在是说明性的而非限制性的。在阅读和理解上面的描述之后,本领域中的技术人员将明显看出许多其他实施方式。因此,应该参照所附的权利要求以及这样的权利要求所赋予的等同物的完整范围来确定各实施方式的范围。
Claims (25)
1.一种用于事务存储器访问的方法,包括:
由处理器发起存储器访问事务;
执行以下中的至少之一:使用与存储器访问跟踪逻辑相关联的第一缓冲器,相对于第一存储器位置执行事务读操作,或使用与所述存储器访问跟踪逻辑相关联的第二缓冲器相对于第二存储器位置,执行事务写操作;
执行以下中的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;
响应于由所述存储器访问跟踪逻辑检测到由不同于所述处理器的设备访问所述第一存储器位置或所述第二存储器位置中的至少之一,中止所述存储器访问事务;以及
响应于无法检测到事务中止条件且不考虑所述第三存储器位置的状态和所述第四存储器位置的状态,完成所述存储器访问事务。
2.如权利要求1所述的方法,其特征在于,所述第一缓冲器和所述第二缓冲器由一个缓冲器表示。
3.如权利要求1所述的方法,其特征在于,所述第一存储器位置和所述第二存储器位置由一个存储器位置表示。
4.如权利要求1所述的方法,其特征在于,所述第三存储器位置和所述第四存储器位置由一个存储器位置表示。
5.如权利要求1所述的方法,其特征在于,所述第一缓冲器或所述第二缓冲器中的至少之一由数据高速缓存中的一个条目提供。
6.如权利要求1所述的方法,其特征在于,执行所述第二写操作包括提交所述第二写操作。
7.如权利要求1所述的方法,其特征在于,完成所述存储器访问事务包括把来自所述第二缓冲器的数据复制到以下的其中之一:更高级的高速缓存条目或存储器位置。
8.如权利要求1所述的方法,进一步包括中止所述存储器访问事务响应于检测到以下的至少之一:中断、缓冲器溢出或程序错误。
9.如权利要求1所述的方法,其特征在于,所述中止包括释放所述第一缓冲器和所述第二缓冲器中的至少之一。
10.如权利要求1所述的方法,其特征在于,发起所述存储器访问事务包括提交待决的写操作。
11.如权利要求1所述的方法,其特征在于,发起所述存储器访问事务包括禁用中断。
12.如权利要求1所述的方法,其特征在于,发起所述存储器访问事务包括禁用数据预取。
13.如权利要求1所述的方法,进一步包括:
在完成所述存储器访问事务之前,发起嵌套存储器访问事务;
执行以下中的至少之一:使用与所述存储器访问跟踪逻辑相关联的第三缓冲器,执行第二事务读操作,或使用与所述存储器访问跟踪逻辑相关联的第四缓冲器,执行第二事务写操作;以及
完成所述嵌套存储器访问事务。
14.如权利要求13所述的方法,进一步包括响应于检测到事务中止条件而中止所述存储器访问事务和所述嵌套存储器访问事务。
15.一种处理系统,包括:
存储器访问跟踪逻辑;
与所述存储器访问跟踪逻辑相关联的第一缓冲器;
与所述存储器访问跟踪逻辑相关联的第二缓冲器;
处理器核心,其通信上耦合到所述第一缓冲器和所述第二缓冲器,所述处理器核心被配置为执行包括以下的操作:
发起存储器访问事务;
执行以下中的至少之一:使用所述第一缓冲器,相对于第一存储器位置执行事务读操作,或使用第二缓冲器,相对于第二存储器位置执行事务写操作;
执行以下中的至少之一:相对于第三存储器位置执行非事务读操作,或者相对于第四存储器位置执行非事务写操作;
响应于由所述存储器访问跟踪逻辑检测到由不同于所述处理器的设备访问所述第一存储器位置或所述第二存储器位置中的至少之一,中止所述存储器访问事务;以及
响应于无法检测到事务中止条件且不考虑所述第三存储器位置的状态和所述第四存储器位置的状态,完成所述存储器访问事务。
16.如权利要求15所述的处理系统,进一步包括数据高速缓存;其中,所述第一缓冲器或所述第二缓冲器中的至少之一驻留在所述数据高速缓存中。
17.如权利要求15所述的处理系统,进一步包括存储错误恢复例程的地址的寄存器。
18.如权利要求15所述的处理系统,进一步包括存储所述存储器访问事务的状态的寄存器。
19.如权利要求15所述的处理系统,其特征在于,所述第一缓冲器和所述第二缓冲器由一个缓冲器表示。
20.如权利要求15所述的处理系统,其特征在于,所述第三缓冲器和所述第四缓冲器由一个缓冲器表示。
21.如权利要求15所述的处理系统,其特征在于,所述第一存储器位置和所述第二存储器位置由一个存储器位置表示。
22.如权利要求15所述的处理系统,其特征在于,所述第三存储器位置和所述第四存储器位置由一个存储器位置表示。
23.如权利要求15所述的处理系统,其特征在于,所述处理器核心还被配置为响应于检测到以下的至少之一中止所述存储器访问事务:中断、缓冲器溢出或程序错误。
24.如权利要求15所述的处理系统,其特征在于,所述处理器核心还被配置为:在完成所述存储器访问事务之前,发起嵌套存储器访问事务;执行以下的至少之一:使用与所述存储器访问跟踪逻辑相关联的第三缓冲器,执行第二事务读操作,或使用与所述存储器访问跟踪逻辑相关联的第四缓冲器,执行第二事务写操作;以及完成所述嵌套存储器访问事务。
25.如权利要求15所述的处理系统,其特征在于,所述处理器核心还被配置为响应于检测到事务中止条件而中止所述存储器访问事务和所述嵌套存储器访问事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/803,658 US20140281236A1 (en) | 2013-03-14 | 2013-03-14 | Systems and methods for implementing transactional memory |
US13/803,658 | 2013-03-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050023A true CN104050023A (zh) | 2014-09-17 |
CN104050023B CN104050023B (zh) | 2018-03-30 |
Family
ID=50440290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410093028.4A Active CN104050023B (zh) | 2013-03-14 | 2014-03-13 | 用于实现事务存储器的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140281236A1 (zh) |
JP (2) | JP2014194754A (zh) |
KR (1) | KR101574007B1 (zh) |
CN (1) | CN104050023B (zh) |
BR (1) | BR102014005697A2 (zh) |
DE (1) | DE102014003399A1 (zh) |
GB (1) | GB2512470B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293626A (zh) * | 2015-06-26 | 2017-01-04 | 英特尔公司 | 持久性提交处理器、方法、系统和指令 |
CN107003897A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 监控事务处理资源的利用率 |
CN107077421A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于页表游走改变位的指令和逻辑 |
CN107111785A (zh) * | 2014-03-04 | 2017-08-29 | 迈克尔·曼希 | 计算装置中的类空计算 |
CN108027775A (zh) * | 2015-09-24 | 2018-05-11 | 高通股份有限公司 | 避免采用重试及按次序响应非重试总线一致性协议的基于处理器的系统中的死锁 |
CN108701023A (zh) * | 2016-03-21 | 2018-10-23 | 英特尔公司 | 带内重定时器寄存器访问 |
CN109196485A (zh) * | 2016-05-27 | 2019-01-11 | Arm有限公司 | 用于维持非均匀计算装置中的数据一致性的方法和设备 |
CN109478139A (zh) * | 2016-08-13 | 2019-03-15 | 英特尔公司 | 用于共享存储器中的访问同步的装置、方法和系统 |
CN110419030A (zh) * | 2016-09-28 | 2019-11-05 | 英特尔公司 | 测量非均匀存储器访问(numa)系统内按节点的带宽 |
CN111602121A (zh) * | 2018-01-09 | 2020-08-28 | 微软技术许可有限责任公司 | 利用所应用的存储器区域生命期的比特精确跟踪分析 |
CN112597091A (zh) * | 2016-12-28 | 2021-04-02 | 英特尔公司 | 用于处理结构中非投递式存储器写入事务的方法、装置和系统 |
CN115396250A (zh) * | 2021-05-09 | 2022-11-25 | 迈络思科技有限公司 | 具有一致事务排序的多插槽网络接口控制器 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244746B2 (en) * | 2013-08-01 | 2016-01-26 | Intel Corporation | Automatic transaction coarsening |
US20150205721A1 (en) * | 2014-01-22 | 2015-07-23 | Advanced Micro Devices, Inc. | Handling Reads Following Transactional Writes during Transactions in a Computing Device |
GB2533415B (en) * | 2014-12-19 | 2022-01-19 | Advanced Risc Mach Ltd | Apparatus with at least one resource having thread mode and transaction mode, and method |
US9928064B2 (en) | 2015-11-10 | 2018-03-27 | International Business Machines Corporation | Instruction stream modification for memory transaction protection |
US9971687B2 (en) * | 2016-02-15 | 2018-05-15 | International Business Machines Corporation | Operation of a multi-slice processor with history buffers storing transaction memory state information |
US20170371701A1 (en) * | 2016-06-27 | 2017-12-28 | Kshitij A. Doshi | Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization |
GB2567433B (en) * | 2017-10-10 | 2020-02-26 | Advanced Risc Mach Ltd | Checking lock variables for transactions in a system with transactional memory support |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260942A1 (en) * | 2006-03-30 | 2007-11-08 | Ravi Rajwar | Transactional memory in out-of-order processors |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的机制 |
US20100333096A1 (en) * | 2009-06-26 | 2010-12-30 | David Dice | Transactional Locking with Read-Write Locks in Transactional Memory Systems |
US20100332807A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Performing escape actions in transactions |
CN102144218A (zh) * | 2008-07-28 | 2011-08-03 | 超威半导体公司 | 可虚拟化的先进同步设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5291581A (en) * | 1987-07-01 | 1994-03-01 | Digital Equipment Corporation | Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system |
US6055208A (en) * | 1998-06-05 | 2000-04-25 | Micron Technology, Inc. | Method and circuit for sending a signal in a semiconductor device during a setup time |
US6457065B1 (en) * | 1999-01-05 | 2002-09-24 | International Business Machines Corporation | Transaction-scoped replication for distributed object systems |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US6918053B1 (en) * | 2000-04-28 | 2005-07-12 | Microsoft Corporation | Compensation framework for long running transactions |
EP1182558A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments Incorporated | MME descriptor having big/little endian bit to control the transfer data between devices |
US6983395B2 (en) * | 2001-05-23 | 2006-01-03 | Hewlett-Packard Development Company, L.P. | Multi-agent cooperative transaction method and system |
US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
US6735113B2 (en) * | 2002-10-15 | 2004-05-11 | T-Ram, Inc. | Circuit and method for implementing a write operation with TCCT-based memory cells |
US7478400B1 (en) * | 2003-12-31 | 2009-01-13 | Symantec Operating Corporation | Efficient distributed transaction protocol for a distributed file sharing system |
DE602005024514D1 (de) * | 2005-03-31 | 2010-12-16 | Texas Instruments Inc | Verfahren und System zum Vereiteln und Neutralisieren von Pufferüberläufangriffen |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US9367465B2 (en) * | 2007-04-12 | 2016-06-14 | Hewlett Packard Enterprise Development Lp | Method and system for improving memory access performance |
US7899999B2 (en) * | 2007-06-27 | 2011-03-01 | Microsoft Corporation | Handling falsely doomed parents of nested transactions |
US8533663B2 (en) * | 2008-05-12 | 2013-09-10 | Oracle America, Inc. | System and method for utilizing available best effort hardware mechanisms for supporting transactional memory |
US20100122073A1 (en) * | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
US8473950B2 (en) * | 2009-06-23 | 2013-06-25 | Oracle America, Inc. | Parallel nested transactions |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9348642B2 (en) * | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9436477B2 (en) * | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9244846B2 (en) * | 2012-07-06 | 2016-01-26 | International Business Machines Corporation | Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses |
-
2013
- 2013-03-14 US US13/803,658 patent/US20140281236A1/en not_active Abandoned
-
2014
- 2014-02-14 JP JP2014026130A patent/JP2014194754A/ja active Pending
- 2014-02-17 GB GB1402776.7A patent/GB2512470B/en not_active Expired - Fee Related
- 2014-03-07 DE DE102014003399.6A patent/DE102014003399A1/de not_active Withdrawn
- 2014-03-11 KR KR1020140028430A patent/KR101574007B1/ko active IP Right Grant
- 2014-03-12 BR BR102014005697-1A patent/BR102014005697A2/pt not_active Application Discontinuation
- 2014-03-13 CN CN201410093028.4A patent/CN104050023B/zh active Active
-
2016
- 2016-05-06 JP JP2016093506A patent/JP2016157484A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260942A1 (en) * | 2006-03-30 | 2007-11-08 | Ravi Rajwar | Transactional memory in out-of-order processors |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的机制 |
CN102144218A (zh) * | 2008-07-28 | 2011-08-03 | 超威半导体公司 | 可虚拟化的先进同步设备 |
US20100333096A1 (en) * | 2009-06-26 | 2010-12-30 | David Dice | Transactional Locking with Read-Write Locks in Transactional Memory Systems |
US20100332807A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Performing escape actions in transactions |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107111785A (zh) * | 2014-03-04 | 2017-08-29 | 迈克尔·曼希 | 计算装置中的类空计算 |
US10810039B2 (en) | 2014-12-19 | 2020-10-20 | Arm Limited | Monitoring utilization of transactional processing resource |
CN107003897A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 监控事务处理资源的利用率 |
CN107077421A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于页表游走改变位的指令和逻辑 |
US10303477B2 (en) | 2015-06-26 | 2019-05-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
US11210099B2 (en) | 2015-06-26 | 2021-12-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
CN106293626B (zh) * | 2015-06-26 | 2020-09-11 | 英特尔公司 | 持久性提交处理器、方法、装置、制品和电子设备 |
CN106293626A (zh) * | 2015-06-26 | 2017-01-04 | 英特尔公司 | 持久性提交处理器、方法、系统和指令 |
CN108027775A (zh) * | 2015-09-24 | 2018-05-11 | 高通股份有限公司 | 避免采用重试及按次序响应非重试总线一致性协议的基于处理器的系统中的死锁 |
CN108701023B (zh) * | 2016-03-21 | 2023-10-31 | 英特尔公司 | 用于带内重定时器寄存器访问的装置和系统 |
CN108701023A (zh) * | 2016-03-21 | 2018-10-23 | 英特尔公司 | 带内重定时器寄存器访问 |
CN109196485A (zh) * | 2016-05-27 | 2019-01-11 | Arm有限公司 | 用于维持非均匀计算装置中的数据一致性的方法和设备 |
CN109196485B (zh) * | 2016-05-27 | 2023-03-07 | Arm有限公司 | 用于维持非均匀计算装置中的数据一致性的方法和设备 |
CN109478139A (zh) * | 2016-08-13 | 2019-03-15 | 英特尔公司 | 用于共享存储器中的访问同步的装置、方法和系统 |
US11681529B2 (en) | 2016-08-13 | 2023-06-20 | Intel Corporation | Apparatuses, methods, and systems for access synchronization in a shared memory |
CN109478139B (zh) * | 2016-08-13 | 2024-01-23 | 英特尔公司 | 用于共享存储器中的访问同步的装置、方法和系统 |
CN110419030A (zh) * | 2016-09-28 | 2019-11-05 | 英特尔公司 | 测量非均匀存储器访问(numa)系统内按节点的带宽 |
CN110419030B (zh) * | 2016-09-28 | 2024-04-19 | 英特尔公司 | 测量非均匀存储器访问(numa)系统内按节点的带宽 |
CN112597091A (zh) * | 2016-12-28 | 2021-04-02 | 英特尔公司 | 用于处理结构中非投递式存储器写入事务的方法、装置和系统 |
CN111602121A (zh) * | 2018-01-09 | 2020-08-28 | 微软技术许可有限责任公司 | 利用所应用的存储器区域生命期的比特精确跟踪分析 |
CN111602121B (zh) * | 2018-01-09 | 2023-10-24 | 微软技术许可有限责任公司 | 利用所应用的存储器区域生命期的比特精确跟踪分析 |
CN115396250A (zh) * | 2021-05-09 | 2022-11-25 | 迈络思科技有限公司 | 具有一致事务排序的多插槽网络接口控制器 |
Also Published As
Publication number | Publication date |
---|---|
GB201402776D0 (en) | 2014-04-02 |
BR102014005697A2 (pt) | 2018-02-27 |
JP2016157484A (ja) | 2016-09-01 |
KR101574007B1 (ko) | 2015-12-02 |
KR20140113400A (ko) | 2014-09-24 |
CN104050023B (zh) | 2018-03-30 |
JP2014194754A (ja) | 2014-10-09 |
GB2512470B (en) | 2015-06-03 |
GB2512470A (en) | 2014-10-01 |
DE102014003399A1 (de) | 2014-09-18 |
US20140281236A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050023A (zh) | 用于实现事务存储器的系统和方法 | |
US9495159B2 (en) | Two level re-order buffer | |
CN106648553B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US9292288B2 (en) | Systems and methods for flag tracking in move elimination operations | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN104335183B (zh) | 用于测试事务性执行状态的方法、装置和系统 | |
US9256433B2 (en) | Systems and methods for move elimination with bypass multiple instantiation table | |
US20150278097A1 (en) | Instruction and Logic for Reducing Data Cache Evictions in an Out-Of-Order Processor | |
KR101923289B1 (ko) | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 | |
CN104049941A (zh) | 跟踪指令的控制流程 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
US9569212B2 (en) | Instruction and logic for a memory ordering buffer | |
US10296343B2 (en) | Hybrid atomicity support for a binary translation based microprocessor | |
CN108701101A (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
CN108369508A (zh) | 使用处理器指令前缀的二进制转换支持 | |
JP2024527169A (ja) | マルチストランドアウトオブオーダプロセッサにおいてリタイア可能な複数の命令を特定する命令及びロジック | |
US10133620B2 (en) | Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit | |
CN107408035B (zh) | 用于缕程间通信的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |