CN106293626A - 持久性提交处理器、方法、系统和指令 - Google Patents

持久性提交处理器、方法、系统和指令 Download PDF

Info

Publication number
CN106293626A
CN106293626A CN201610355929.5A CN201610355929A CN106293626A CN 106293626 A CN106293626 A CN 106293626A CN 201610355929 A CN201610355929 A CN 201610355929A CN 106293626 A CN106293626 A CN 106293626A
Authority
CN
China
Prior art keywords
instruction
persistency
storage
processor
value
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
Application number
CN201610355929.5A
Other languages
English (en)
Other versions
CN106293626B (zh
Inventor
K.A.多斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN106293626A publication Critical patent/CN106293626A/zh
Application granted granted Critical
Publication of CN106293626B publication Critical patent/CN106293626B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30098Register arrangements
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Abstract

本发明涉及持久性提交处理器、方法、系统和指令。一种处理器包括至少一个存储器控制器和用于解码持久性提交划界指令的解码单元。持久性提交划界指令指示目的地存储位置。处理器还包括与解码单元和至少一个存储器控制器耦合的执行单元。执行单元响应于持久性提交划界指令来将划界值存储在目的地存储位置中。划界值可以将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。

Description

持久性提交处理器、方法、系统和指令
技术领域
本文描述的实施例一般地涉及处理器。特别地,本文描述的实施例一般地涉及处理器中的存储操作。
背景技术
处理器是通常使用的计算机系统以及具有用于存储数据的主存储器的其他电子设备。处理器可以执行指令以访问主存储器中的数据。例如,处理器可以执行加载指令以从主存储器加载或读取数据和/或执行存储指令以写入或以其他方式将数据存储到主存储器。
在计算机系统和其他电子设备中的一个挑战是电力故障、系统崩溃以及其他错误可能发生。通常,这样的错误导致与存储指令相关联的数据丢失。
附图说明
本发明可以通过参考以下描述和附图来最佳地理解,附图用于图示实施例。在附图中:
图1是具有持久性提交指令的实施例的指令集的处理器的实施例的框图。
图2是其中可以实现本发明的实施例的系统的实施例的框图。
图3是其中可以使用持久性提交划界(demarcate)指令和持久性提交阻止(block)指令的实施例的方法的一个可能的示例的块流程图。
图4是操作为实行持久性提交划界指令的实施例以及持久性提交阻止指令的实施例的处理器的实施例的框图。
图5是操作为使用附加到存储器控制器处的到达的存储操作的单调增加的值以确定划界值的处理器的示例性实施例的框图。
图6是最大值选择器的示例性实施例的框图。
图7是操作为用多个存储器控制器实行持久性提交阻止指令的处理器的示例性实施例的框图。
图8是用处理器实行的方法的一个可能的示例的块流程图,其中,持久性提交检查指令的实施例可以与持久性提交划界指令的实施例和持久性提交阻止指令的实施例一起使用。
图9是具有关于域特定的持久性提交指令的实施例的指令集的处理器的实施例的框图。
图10A是图示有序流水线的实施例和寄存器重命名乱序发出/执行流水线的实施例的框图。
图10B是包括耦合到执行引擎单元的前端单元并且二者都耦合到存储器单元的处理器核的实施例的框图。
图11A是单个处理器核连同其到管芯上互连网络的连接并且具有其2级(L2)高速缓存的本地子集的实施例的框图。
图11B是图11A的处理器核的部分的放大视图的实施例的框图。
图12是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图13是计算机架构的第一实施例的框图。
图14是计算机架构的第二实施例的框图。
图15是计算机结构的第三实施例的框图。
图16是计算机架构的第四实施例的框图。
图17是根据本发明的实施例的用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文公开了指令、用于执行指令的处理器、在处理或执行指令时由处理器实行的方法以及包含用于处理或执行指令的一个或多个处理器的系统。在下面的描述中,阐述了许多具体细节(例如,具体指令操作、指令的组合、处理器配置、微架构细节、操作序列等)。然而,实施例可​​以在没有这些具体细节的情况下被实践。在其他实例中,公知的电路、结构和技术尚未被详细示出以避免混淆对本说明书的理解。
图1是处理器100的实施例的框图。处理器具有指令集102。指令集包括处理器操作为实行的指令集。与从被解码的指令集的指令所得到的微指令、微操作或其他解码的指令相对,指令集的指令表示被提供给处理器以供执行的宏指令或机器级指令。
如所示,在一些实施例中,指令集可以包括持久性提交划界指令104。持久性提交划界指令可以指示目的地寄存器或其他目的地存储位置。在一些实施例中,持久性提交划界指令如果被实行可以操作为使得处理器存储划界值,该划界值将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被至少一个或多个处理器实行或者被接受到存储器的至少所有存储到持久性存储器操作相划界或区分。
如所示,在一些实施例中,指令集可以包括持久性提交阻止指令106。持久性提交阻止指令可以指示用于存储先前持久性提交划界指令的划界值的寄存器或其他源存储位置。在一些实施例中,持久性提交阻止指令如果被实行可以操作为使得处理器确保,在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,由划界值所划界的至少所有存储到持久性存储器操作(例如,当先前对应持久性提交划界指令被实行时已经被接受到存储器,但是在先前对应持久性提交划界指令被实行时不一定已经被持久存储)已经被持久存储。
如所示,在一些实施例中,指令集可以可选地包括持久性提交检查指令108,但是这不是要求的。在一些实施例中,持久性提交检查指令可以指示目的地存储位置。在一些实施例中,持久性提交检查指令如果被实行可以操作为使得处理器将值存储在目的地存储位置中。在一些实施例中,该值可以指示由先前持久性提交划界指令所划界的至少所有存储到持久性存储器操作(例如,在先前对应持久性提交划界指令被实行时已经被接受到存储器但是在先前对应持久性提交划界指令被实行时不一定已经被持久存储的存储到持久性存储器操作)是否现在已经被持久存储。在一些实施例中,所存储的值可以指示持久存储所有这些划界的存储到持久性存储器操作的进展水平。在一些实施例中,这样的值或状态不需要一定适用于最近的划界值,而是可以适用于各种在先划界值。在其他实施例中,指令可以可选地具有用于提供在目的地中存储的值或状态将适用于的特定划界值的源寄存器或操作数。
在其他实施例中,指令集可以可选地包括所图示指令的子集(例如,如这些指令中的任何单个指令那么少)。在又其他实施例中,指令集可以可选地包括其他指令或完全不同的指令(例如,以下结合图9讨论的指令)。
图2是其中可以实现本发明的实施例的系统210的实施例的框图。系统包括处理器200和与处理器耦合的系统存储器226。在各种实施例中,系统可以表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器,交换机等)、智能电视、上网机、机顶盒、视频游戏控制器、媒体播放器或其他类型的电子设备。
处理器包括至少一个逻辑处理器216。为简单起见,仅示出了单个逻辑处理器,但是可以理解,处理器可以可选地包括其他逻辑处理器。适当逻辑处理器的示例包括但不限于,核、硬件线程、线程单元、线程槽以及其他逻辑处理器。逻辑处理器中的每一个可以包括用于处理指令(例如,存储指令、算术指令、逻辑指令等)的指令执行流水线。通过示例的方式,每个流水线可以包括用于取出指令的指令取出单元、用于解码指令的指令解码单元、用于执行指令的执行单元以及其他流水线组件。本发明的范围不限于任何已知类型的流水线。
逻辑处理器与一个或多个高速缓存218耦合。在一些实施例中,一个或多个高速缓存可以包括高速缓存层级,高速缓存层级包括在不同高速缓存级的高速缓存。不同的高速缓存级可能在其与逻辑处理器和/或系统存储器的相对接近度上是不同的。作为一个说明性示例,逻辑处理器可以具有专用第一级或1级(L1)高速缓存、以及共享的第二级或2级(L2)高速缓存。作为另一说明性示例,逻辑处理器可以具有专用L1高速缓存和专用L2高速缓存、以及共享的第三级或3级(L3)​​高速缓存。本发明的范围不限于任何已知类型的高速缓存层级。此外,在其他实施例中,处理器可以具有单个高速缓存级,而不是高速缓存层级。
一个或多个高速缓存218可以用于存储期望用于特定实现的指令和/或数据。高速缓存可以表示比系统存储器226相对更小和更快访问的储存器。此外,高速缓存可以比系统存储器相对更接近指令流水线。高速缓存可以用于高速缓存或临时存储已经从系统存储器带入处理器的数据,以便于提供对数据的更快的后续访问。代表性地,对高速缓存中的数据的访问通常不会花费多于几个处理器时钟周期,而对系统存储器中的数据的访问通常可能花费多得多的周期。当处理器想要从系统存储器读取数据时,处理器可以首先检查以查看数据的副本是否已经被存储在高速缓存中。如果在高速缓存中发现该数据,则该处理器可以从高速缓存访问数据,这通常比如果代替地从系统存储器访问数据更快。类似地,当处理器想要将数据写入系统存储器时,数据可能经常首先被存储在高速缓存中。
处理器可以实现高速缓存一致性机制或协议,以帮助确保存储在一个或多个高速缓存218中的数据在适当时被一致地管理和存储到系统存储器226,使得系统中的所有相关实体一致地查看正确的和当前版本的数据。适当的高速缓存一致性协议的示例包括但不限于,MESI、MOSI、MOESI等。MESI协议包括由两个MESI位指示的四个状态,即已修改(M)、独占(E)、共享(S)和无效(I)。MOSI协议利用拥有(O)状态来代替独占(E)状态。MOESI协议利用独占(E)和拥有(O)状态二者。这样的高速缓存一致性协议没有考虑数据的持久性或耐久性,这将在下面进一步讨论。
再次参考图2,处理器具有包括存储器控制器222的存储器接口单元220。在一些实施例中,系统可以仅包括单个存储器控​​制器。在其他实施例中,系统可以包括两个或更多个存储器控制器。为简单起见,在图示中仅示出了单个存储器控制器。在该实施例中,存储器控制器位于处理器上(例如,是管芯上存储器控制器)。在另一实施例中,存储器控制器可以可选地位于处理器外(例如,是在芯片组组件中的管芯外存储器控制器)。存储器接口单元和/或存储器控制器可以操作为与系统存储器226耦合。例如,该耦合可以通过一个或多个总线或其他互连。存储器控制器具有用于临时缓冲被存储或写入到系统存储器的数据的写入未决缓冲器。
在一些实施例中,系统存储器226可以包括至少一些持久性存储器228。持久性存储器可以操作为持久或耐久地存储数据。甚至在电力损失、操作系统故障、系统崩溃、系统重引导等的情况下,持久或耐久地存储的数据也可能不丢失。适当形式的持久性存储器的示例包括但不限于,非易失性存储器和储存器、电池支持(或其他电源支持)的易失性存储器和储存器等及其组合。通常,当在相对短的时间段中没有供应电力时,易失性存储器丢失其存储的数据或内容。然而,用电池或其他备用电源支持易失性存储器可以有助于使易失性存储器成为持久性存储器。非易失性存储器和存储设备原生操作为,甚至在没有供应的电力的相对长的时段(例如,通常至少一个星期没有电力)之后也保持其存储的数据或内容。
用于持久性存储器228的适当类型的存储器和/或储存器的具体示例包括但不限于,电池支持(或其他电源支持)的动态随机存取存储器(DRAM)和其他形式的RAM、基于相变存储器(PCM)的非易失性存储器或储存器、忆阻器(例如,与电荷和磁通量链相关的非线性无源二端子电气组件)、以及自旋转移矩(例如,利用其中可以使用自旋极化电流来修改磁隧道结或自旋阀中的磁性层的取向的效应)及其组合,仅举几个示例。作为这些技术的扩展或改进或完全不同的技术的未来开发的其他技术也可能是适当的。而且,通常用作在计算机系统中的辅助支持存储器的其他形式的非易失性存储器也可能是适当的。示例包括但不限于,硬盘、磁带、其他类型的磁存储设备、各种类型的只读存储器(ROM)、光盘、铁电RAM(F-RAM)和磁阻RAM。通常,这样的形式的存储器具有有利于上述类型的存储器的速度或其他特性,但是本发明的范围不限于该方面。本发明的范围不限于任何特定类型的持久性存储器。
在一些实施例中,系统存储器226可以仅包括持久性存储器228。在其他实施例中,系统存储器可以包括持久性存储器以及非持久性存储器(例如,通常用于主或主要存储器的DRAM或其他类型的存储器)二者。在一些实施例中,持久性存储器可以是处理器可寻址物理地址空间的部分。软件可能能够通过实行加载指令、存储指令和处理器的指令集的其他指令来访问持久性存储器。在一些实施例中,与仅是页面/块寻址的相对,持久性存储器可以是字节可寻址的。在一些实施例中,持久性存储器可以与处理器存储器总线直接耦合。在一些实施例中,对持久性存储器的访问可能经历与传统主/主要存储器(例如,DRAM)大致相同的处理器存储器模型(例如,关于可高速缓存性、一致性、处理器存储器排序、存储器类型等)。
在持久性存储器228中持久或耐久地存储数据的能力可能对于某些应用和/或实现非常有价值。例如,在特定数据库应用和/或数据事务中,不丢失数据是非常重要的。然而,确保数据被持久或耐久地存储在持久性存储器228中可能趋向于对软件提出附加挑战。一方面,处理器可以具有各种中间易失性微架构组件和/或储存器,其中,与存储或写入类型的指令相关联的数据可以在其过程中被临时存储到持久性存储器。这样的易失性组件和/或储存器的可能的示例包括但不限于,一个或多个高速缓存218、存储器控制器222中的队列或缓冲器(例如,写入未决缓冲器224)、非核和/或互连队列或缓冲器、存储器侧高速缓存等。这样的易失性组件或储存器通常无法在电力故障、操作系统故障、系统崩溃、重引导等的情况下保持其数据或内容。朝向持久性存储器存储的数据实际上可能没有变得持久或耐久,直至其实际到达并被存储在持久性存储器中(或在中间电力故障保护的存储设备或缓冲器中)。如本文使用的,将数据存储到持久性存储器包括将数据存储在也是持久或耐久的这样的中间电力故障保护的存储设备或缓冲器中。结果,如果在数据被存储在这样的易失性组件或储存器中(例如,在存储器控制器222中的写入未决缓冲器224中)的同时发生电力故障、系统崩溃、操作系统故障或重引导,则数据通常将丢失,而尚未实现期望的持久性或耐久性。
如所示,在一些实施例中,逻辑处理器可以操作为实行如本文公开的一个或多个持久性提交指令204。在一些实施例中,这些(一个或多个)持久性提交指令可以用于帮助测量和控制以其将到持久性存储器212的存储(例如,指示与持久性存储器228相对应的地址范围的存储指令)提交到持久性存储器和/或被持久地存储的次序。
图3是用处理器实行的方法300的一个可能示例的块流程图,其中,可以使用持久性提交划界指令和持久性提交阻止指令的实施例。在该图示中,为了进一步说明其中可以使用持久性提交划界和持久性提交阻止指令的示例性上下文,以虚线示出若干可选块。这些虚线框的操作是可选的而不是要求的。
在块331处,可以可选地实行一个或多个在先存储到持久性存储器指令。例如,这些指令可以均指示与持久性存储器(例如,持久性存储器228)相对应的地址范围。如前所述,这样的存储的数据可能不会立即被存储在持久性存储器中或被提交为持久性,而是可以首先被高速缓存在一个或多个易失性处理器高速缓存(例如,一个或多个高速缓存218)中,并且然后在一些情况下,随后可以被临时存储在存储器接口单元中(例如,存储在存储器控制器222的写入未决缓冲器224中)。
在块332处,存储可以可选地被防护(fence)。例如,这可以包括实行存储防护指令,存储防护指令操作为使得处理器保证所有旧的存储(例如,以原始程序次序在存储防护指令之前)在所有较新的存储(如,以原始程序次序在存储防护指令之后)之前变得全局可见。
在块333处,到持久性存储器的在先存储(例如,在块331处实行的存储)可以被可选地从任何易失性一致性高速缓存(例如,一个或多个高速缓存218)被清除(flush)或以其他方式强夺(force)。例如,这可以包括在特定Intel®架构兼容的处理器中实行CLFLUSH或CLFLUSHOPT或CLWB指令。尽管这可以确保从易失性高速缓存强夺数据,但是这通常没有确保数据实际上被存储到持久性存储器。例如,当从高速缓存强夺的数据被接受到存储器,例如推送到或发布到存储器接口单元(例如,存储在存储器控制器222中的写入未决缓冲器224)时,CLFLUSH和CLFLUSHOPT或CLWB可以完成。然而,这样的数据并未实际上变得持久,直至其被存储在持久性存储器中(例如,实际上被存储在持久性存储器中,或者被存储在如本文中使用的被认为是持久性存储器的部分的中间电力故障保护的缓冲器)。
在块334处,存储可能再次可选地被防护。取决于特定实现(例如,部分地取决于存储器排序模型以及指令相对于彼此如何被排序),可以或可以不需要这样的防护。
在块335处,可以实行持久性提交划界指令的实施例。在一些实施例中,持久性提交划界指令在被实行时可以操作为使得处理器将划界值存储在由持久性提交划界指令所指示的目的地存储位置中。在一些实施例中,划界值可以将在持久性提交划界指令被实行时已经被接受到存储器但是不一定已经被持久存储的至少所有存储到持久性存储器操作(例如,不一定在至少一个存储器控制器处退出)与在持久性提交划界指令被实行时还没有被接受到存储器的至少所有存储到持久性存储器操作相划界。例如,在一些实施例中,划界值可以将在持久性提交划界指令被实行之前的时间已经在一个或多个存储器控制器处接收到的至少所有存储到持久性存储器操作(例如,在块333处从高速缓存中清除的可能在块331处实行的存储中的一些)与在持久性提交划界指令被实行之后的时间要在一个或多个存储器控制器处被接收的至少所有第二存储到持久性存储器操作(例如,将在块339处实行的存储)相划界。
如下面将进一步解释的,在一些实施例中,划界值可以表示单调增加的值(例如,存储器控制器的到达计数器的到达计数器值、存储器控制器的到达时钟或其他计时器的到达时间值)、或其他定界(delimitation)、轮廓(delineation)、分界线(divining line)或其他指示,其操作以将在持久性提交划界指令被实行时已经被接受到存储器但是不一定已经被持久存储的至少所有存储到持久性存储器操作(例如,其可能仍然处于写入未决缓冲器224中)与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有存储到持久性存储器操作相区分和/或分离和/或区别。
在不同实施例中,存储到存储器操作可以以各种不同的方式被接受到存储器。在一些实施例中,如果其被存储在写入未决缓冲器(例如,写入未决缓冲器224)中或以其他方式被存储在存储器控制器和/或存储器接口单元中,则存储操作可被接受到存储器。在一些实施例中,如果它们是到回写存储器的非临时存储或者是到变得全局可见的不可高速缓存、写入组合和通写存储器的存储,则存储操作可被接受到存储器。在一些实施例中,如果针对高速缓存行实行作为到回写存储器的先前存储的高速缓存行清除指令(例如,CLFLUSH、CLFLUSHOPT或CLWB指令)变得全局可见,则先前存储操作可被接受到存储器。
在块335处实行持久性提交划界指令之后并且在块337处实行持久性提交阻止指令之前,在块336处可以可选地实行非相关(non-dependent)工作。术语“非相关”工作是指不包括取决于持久性提交划界指令和/或划界值所应用于的存储的指令的可以被实行的工作、代码或任何指令集。例如,非相关工作可以包括仅访问与在持久性提交划界指令被实行时已经被接受到存储器的所有存储不同的存储器位置的指令。概念上,软件可以实行其知道其可以在不产生状态的错误的或不正确的修改的情况下进行的任何工作,包括软件知道其影响的工作,它可以标记为暂时或推测的直至稍后通过来自软件的完成动作被确认。
在块337处,可以实行持久性提交阻止指令的实施例。在一些实施例中,持久性提交阻止指令可以指示源存储位置,其可以具有可能是或至少等于由持久性提交划界指令所获得或存储的划界值的值。在一些实施例中,持久性提交阻止指令在被实行时可以操作为使得处理器确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前由划界值所划界的至少所有存储到持久性存储器操作(例如,其不一定已经退出或离开一个或多个存储器控制器的写入未决缓冲器224)已经被持久存储。例如,持久性提交阻止指令在被实行时可以操作为使得处理器确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,在先前对应持久性提交划界指令被实行时已经被接受到存储器但是在先前对应持久性提交划界指令被实行时不一定已经被持久存储(例如,不一定已经退出或离开一个或多个存储器控制器)的至少所有存储到持久性存储器操作已经被持久存储。在一些实施例中,持久性提交阻止指令在被实行时可以操作为使得处理器确保在持久性提交阻止指令退役或以其他方式提交之前至少所有这样划界的存储到持久性存储器操作已经被持久存储。
在一些实施例中,持久性提交阻止指令的确保或保证关于数据的持久性或耐久性。这与进行关于非持久性存储器(例如,传统主存储器)的保证是不同的,其中,在电力故障和/或特定其他事件的情况下,数据可能丢失。在一些实施例中,持久性提交阻止指令在被实行时可以不直接或主动地使处理器将任何数据强夺出处理器(例如,可以不具有“清除”操作)。而是,在一些实施例中,持久性提交阻止指令在被实行时可以操作为使得处理器停止或暂停(suspend)实行至少一个类型的附加后续指令,并且监视何时已经实现确保或保证,并且然后允许处理器恢复实行至少一个类型的附加后续指令。在一些实施例中,处理器可以仅停止或暂停实行存储到持久性存储器指令。在其他实施例中,处理器可以停止或暂停实行存储到持久性存储器指令和存储到非持久性存储器指令二者。在另外其他实施例中,处理器可以停止或暂停实行存储到持久性存储器指令、存储到非持久性存储器指令以及其他类型的指令(例如,存储到寄存器指令、所有指令等)。在一些实施例中,持久性提交阻止指令可以进行关于到持久性存储器的字节粒度或高速缓存行粒度(例如,针对处理器的高速缓存行的高速缓存行大小)的存储的确保和保证。
在块338处,存储可以再次被防护。取决于特定实现,可以或可以不需要这样的防护。
在块339处,可以向持久性存储器实行一个或多个在后存储。这些“在后”存储比在块331处实行的“在先”存储晚。此外,在块331处实行的在先存储在块335处实行持久性提交划界指令之前发生,而在块339处实行的在后存储在实行持久性提交划界指令之后发生。
图4是操作为实行持久性提交划界指令404的实施例和持久性提交阻止指令406的实施例的处理器400的实施例的框图。在一些实施例中,处理器400可以实行图3的方法330。本文针对处理器400描述的组件、特征和具体可选细节也可选地适用于方法300。替代地,方法330可以可选地由类似或不同的处理器或装置来实行和/或在其内实行。此外,处理器400可以可选地实行与方法330不同的方法。在一些实施例中,处理器400可以被包括在图2的系统210中。替代地,处理器400可以被包括在不同的系统中。
在一些实施例中,处理器400可以是通用处理器(例如,在台式计算机、笔记本计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。适当的专用处理器的示例包括但不限于,网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可具有任何各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、甚长指令字(VLIW)架构、混合架构、其他类型的架构,或者具有不同架构的组合(例如,不同的核可以具有不同架构)。
在操作期间,处理器可以接收持久性提交划界指令404。随后,处理器可以接收持久性提交阻止指令406。例如,这些指令可以通过总线或其他互连来从存储器接收。处理器包括解码单元或解码器442。解码单元可以接收和解码持久性提交划界指令404和持久性提交阻止指令406中的每一个。解码单元可以输出一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、经解码的指令或控制信号等),其反映、表示所接收到的相对较高级的指令和/或从所接收到的相对较高级的指令得到。在一些实施例中,解码单元可以包括用于接收指令的一个或多​​个输入结构(例如,(一个或多个)端口、(一个或多个)互连、接口)、与之耦合用于识别和解码指令的指令识别和解码逻辑、以及与之耦合以输出(一个或多个)较低级指令或(一个或多个)控制信号的一个或多个输出结构(例如,(一个或多个)端口、(一个或多个)互连、接口)。解码单元可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及适合于实现解码单元的其他机制。
处理器还包括寄存器452的集合。在一些实施例中,寄存器可以是通用寄存器。寄存器中的每一个可以表示操作为存储数据的管芯上存储位置。寄存器可以表示架构可见或架构寄存器,其对软件和/或编程器可见和/或是由处理器的指令集的指令指示以标识操作数的寄存器。将这些架构寄存器与给定微架构中的其他非架构寄存器进行对比(例如,临时寄存器、重排序缓冲器、退役寄存器等)。寄存器可以以不同方式在不同的微架构中实现,并且不限于任何特定类型的设计。适当类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器及其组合。
在一些实施例中,持久性提交划界指令404可以明确地指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐含地指示)划界值要被存储的目的地寄存器或其他存储位置。在一些实施例中,持久性提交阻止指令406可以明确地指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐含地指示)值要被存储的源寄存器或其他存储位置(例如,先前持久性提交划界指令的划界值)。作为一个示例,这些指令中的每一个可以可选地具有存储位置规定字段,用于指定寄存器(例如,寄存器452中的一个)、存储器位置或其他储存器。替代地,存储位置可以可选地对指令是隐含的(例如,对其操作码是隐含的)。在一个具体实施例中,持久性提交划界指令可以可选地隐含地指示(但不明确指定)用于划界值被存储的目的地存储位置的特定固定通用寄存器,但是本发明的范围不限于此。在一个具体实施例中,持久性提交阻止指令可以可选地隐含指示(但不明确指定)用于划界值要被取回(retrieve)的其源存储位置的相同特定固定通用寄存器,但是本发明的范围不限于此。
再次参考图4,执行单元444与解码单元442、寄存器452和一个或多个存储器控制器422耦合。(一个或多个)存储器控制器是可选的,因为在一些实施例中其可以是处理器的部分(例如,管芯上),而在其他实施例中其可以在处理器外(例如,在芯片组组件上)。执行单元进而可以接收一个或多个经解码或以其他方式转换的指令或控制信号,该指令或控制信号表示持久性提交划界和持久性提交阻止指令和/或从持久性提交划界和持久性提交阻止指令得到。执行单元可以响应于持久性提交划界和持久性提交阻止指令操作和/或作为其结果操作(例如,响应于从相应指令解码的一个或多个指令或控制信号),以实行用于实现相应指令的操作。
在一些实施例中,执行单元444可以响应于持久性提交划界指令和/或作为其结果来操作为将划界值454存储458在指定的或以其他方式指示的目的地存储位置(例如,寄存器452中的一个)中。在一些实施例中,划界值454可以将在持久性提交划界指令被实行时已经被接受到存储器但是不一定已经被持久存储的至少所有第一存储到持久性存储器操作与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。
在一些实施例中,执行单元可以从一个或多个存储器控制器422接收456划界值。在一些实施例中,(一个或多个)存储器控制器中的一个可以具有写入未决缓冲器424,用于缓冲或存储已经被接受到存储器但是实际上还没有被存储到存储器(例如,没有被存储到持久性存储器428)的未决写入。当在系统中采用时,处理器和持久性存储器428可以被耦合(例如,通过总线或其他互连)。如在图示的示例中所示,存储操作S1至S5可以被存储在缓冲器中。通过示例的方式,存储操作S1可能已经被首先存储在缓冲器中,并且存储操作S5可能已经最后被存储在缓冲器中。在先入先出(FIFO)缓冲器的情况下,这不是要求的,S1可以首先离开缓冲器,接下来是S2,接下来是S3等。通过示例的方式,如果仅存储操作S1至S4在持久性提交划界指令被实行时被存储在缓冲器中,并且此后将新的存储操作S5被存储在存储缓冲器中,则划界454可以包括足以将在先存储操作S1-S4与在后存储操作S5划界、指示或相区分的信息。各种不同类型的划界是可能的,诸如,例如,时间戳、计数器标签、标志、令牌等。如所示,执行单元可以包括用于获得和存储划界值的划界单元446。
在一些实施例中,执行单元444响应于持久性提交阻止指令和/或作为其结果,可以操作为从指定的或以其他方式指示的源存储位置(例如,寄存器452中的一个)接收460值。在一些实施例中,值可以是对应的先前持久性提交划界指令404的划界值454。通过示例的方式,两个指令可以指示相同的寄存器,持久性提交划界指令可以首先被实行以将划界值存储在寄存器中,并且然后持久性提交阻止指令可以被实行以从寄存器读取划界值。
在一些实施例中,执行单元还可以操作为,响应于持久性提交阻止指令和/或作为其结果,来确保在实行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,在对应持久性提交划界指令404被实行之前由划界值所划界的和/或到达一个或多个存储器控制器422处的至少所有存储到持久性存储器操作已经被持久存储(例如,在持久性存储器428中)。在一些实施例中,划界值可以对在先前对应持久性提交划界指令404被实行时已经被接受到存储器但是当先前对应持久性提交划界指令被实行时不一定已经被持久存储(例如,可能仍然处于写入未决缓冲器424中)的至少所有存储到持久性存储器操作进行划界。
如所示,执行单元可以包括阻止和检查单元450。在一些实施例中,阻止和检查单元可以操作为用至少一个存储器控制器(或者在其他实施例中可能是其他存储器系统单元)来重复地检查462当前状态,所述当前状态反映是否所有划界的存储到持久性存储器操作(例如,在在先持久性提交划界指令404被实行之前到达存储器控制器)已经被持久存储(例如,被存储在持久性存储器428中)。在一些实施例中,阻止和检查单元和/或执行单元可以操作为向其他流水线逻辑467提供阻止信号464(例如,取决于特定实现,其可以具有各种不同的类型),以阻止或停止或暂停在执行持久性提交阻止指令之后要被执行的一个或多个类型的其他指令(例如,仅存储到持久性存储器指令,或存储到持久性存储器指令和存储到非持久性存储器指令二者或所有指令)的执行,直至检查指示了所有划界的存储到持久性存储器操作已经被持久存储为止。在一些实施例中,阻止信号可以防止附加存储操作进入存储器控制器422并且可能变成被持久存储。在一些实施例中,这可以仅仅针对存储到持久性存储器操作来进行。在其他实施例中,这可以针对存储到持久性存储器操作和存储到非持久性存储器操作二者来进行。以该方式阻止指令的实行可以有效地允许处理器停止并等待其想要发生的事情(例如,划界的存储成为持久)实际发生,并且然后在其发生之后恢复实行指令。响应于持久性提交阻止指令而实行的成功检查(例如,指示划界的存储已经成为持久)可以用作处理器所等待的已经发生并且处理器可以响应地恢复的指示。
执行单元和/或处理器可以包括具体或特定逻辑(例如,晶体管、集成电路或可能与固件组合的其他硬件(例如,被存储在非易失性存储器中的指令)和/或软件),其操作为实行持久性提交划界和持久性提交阻止指令。在所示的实施例中,为简单起见,相同的执行单元被示出和描述为处理持久性提交划界和阻止指令二者,但是在其他实施例中,可以可选地使用不同的执行单元。
为了避免混淆本描述,已经示出和描述了相对简单的处理器。然而,处理器可以可选地包括其他处理器组件。例如,各种不同的实施例可以包括针对图10-12中的任何一个示出和描述的组件的各种不同的组合和配置。处理器的所有组件可以被耦合在一起以允许其按意图进行操作。
有利地,软件可以使用持久性提交划界和持久性提交阻止指令来获得以下保证:当持久性提交阻止指令被提交时,在先前持久性提交划界指令被实行时已经被存储器系统接受的对持久状态的任何控制改变在取决于对持久状态的这些在先控制改变的在持久性提交阻止指令之后的后续存储已经使其进入电力故障安全域之前已经被持久或耐久地存储。这些指令可以用于对到持久性存储器的存储进行排序,使得无纪律和/或不适当排序的到持久性存储器的存储不会发生,并且引起持久状态的损坏(corruption)。在没有作出这样的保证的能力的情况下,在电力故障时,该软件可能没有保证在先存储(例如,在图3中的块331处的在先存储)已经被持久存储,这可能导致数据的永久丢失、损坏的持久性存储器状态等。而且,通过防止相关存储或其他操作前进直至被接受到存储器但是在划界时尚未被持久存储的划界的存储为止,软件可以有自由来在持久性划界指令和持久性阻止指令之间的间隔期间实行独立操作。
取决于特定实现,持久性提交阻止指令可能趋向于具有相对长的完成时间和/或完成时间可能趋向于是相对可变的。通过示例的方式,在一个实现中,估计到完成时间通常可能从约一百到几百个时钟周期(例如,可能几百纳秒),其中约几千个时钟周期(例如,可能约一微秒)的偶然更长的持续时间发生。对于这样的相对长和/或相对可变的完成时间的一个贡献原因是,到持久性存储器的存储可以部分地取决于以下因素:诸如在持久性提交划界指令被实行时被接受到存储器的存储的数目、对持久性存储器的典型访问等待时间、到持久性存储器的存储的时间分布和/或空间分布(例如,持久性存储器范围重叠)、持久性存储器模块中的电力安全队列的深度(如果使用)、写入放大、在持久性存储器中修改的特定行是否是覆写或读取的主体和其他因素。此外,针对这样的相对长和/或相对可变的完成时间的另一贡献原因是,在一些实施例中,当持久性提交划界指令被实行时,这些指令可以用于实现全局持久性保证,其因此可以部分地取决于从不仅一个存储器控制器而且可能多个不同的存储器控制器到持久性存储器的存储。
在一些实施例中,持久性提交划界和持久性提交阻止指令可以表示可以被一起实行以提交向持久性存储器的存储的两个不同的指令。在一些实施例中,两个指令可以被一起实行,以实现与处理器的硬件(例如,存储器接口单元和/或存储器控制器)的分裂握手,以便于提交向持久性存储器的存储并且实现意图的保证。分裂握手可以包括实行持久性提交划界指令以与硬件交互以获得划界值。然而,持久性提交划界指令可能不会使得处理器停止实行任何类型的指令,以便于防止存储操作成为持久的。然后,分裂握手的第二部分可以包括实行持久性提交阻止指令,以与硬件交互以阻止一个或多个不同类型的在其之后的指令(例如,存储到持久性存储器指令、或存储到持久性存储器指令和存储到非持久性存储器指令二者、或所有指令)的实行,以确保在执行持久性提交阻止指令之后,在至少任何存储到持久性存储器指令被执行之前,划界的指令已经被持久存储(例如,因为否则,其可能以相反次序被持久存储)。
以该方式使用这两个不同的指令来提交到持久性存储器的存储可以可选地允许所述阻止在一段时间内被推迟或延迟。在推迟阻止或等待操作的同时,可以可选地异步地实行其他非相关工作(例如,在图3的块336处实行的非相关工作)。这样的非相关工作不需要同步地等待,直至持久性提交划界指令的划界的存储操作​​已经被持久存储(即,不需要锁步操作),而是可以在这些存储前进到变得被持久存储的同时异步地并且同时实行非相关工作。因为与持久性提交阻止指令相关联的阻止或等待操作引起性能惩罚(例如,在一些实施例中,可以暂停至少存储到持久性存储器指令的执行),使其延期,同时允许这样不相关的或至少非相关工作被实行,可以有助于减少实行这些指令所需要的总体性能惩罚。通过示例的方式,这可以可选地允许软件使从在代码的相同区域内对持久性存储器的多个不同的写入流重叠,并且确保在持久性存储器提交当中的必要的部分排序,而不是不必要的总排序。此外,当最终实行阻止或等待操作时(例如,当实行持久性提交阻止指令时),阻止或等待时间通常将用于较短的时间(平均上),因为划界的持久性提交中的一些能够在实行持久性提交划界和阻止指令时的时间之间发生。
这些指令可以以用于推迟阻止同步等待的能力来向软件给予用于提交向持久性存储器的存储的轻量架构机制,并且允许处理器在两个指令被实行的时间之间异步地实行非相关工作。这可能潜在地和可选地有助于实现用于持久性存储器的软件流水线化,其中,循环的一个迭代中的计算产生要在前向迭代中提交的值,并且每个迭代中的计算获得先前迭代异步持久性存储器提交,以继续将较新的相关值流动到持久性存储器。这可能潜在地和可选地有助于利用Intel®事务性同步扩展(Intel®TSX)。例如,Intel®TSX可以在持久性提交划界之后自由地产生相关未来值,但是保持其免于朝着持久性存储器流动,直至在对应持久性提交阻止被实行之后。
为了进一步说明某些概念,考虑下面的示例代码。
行1 mov memX, 4 //将4写入持久性存储器中的存储器位置X
行2 mov memY, 9 //将9写入持久性存储器中的存储器位置Y
行3 sfence //防护存储
行4 clwb memX //从高速缓存强夺X
行5 clwb memY //从高速缓存强夺Y
行6 sfence //防护存储
行7 pc_demarcate R //持久性提交划界指令
行8 add reg2, 12 //将12添加到寄存器2
行9 mov memZ, 18 //将18写入持久性存储器中的存储器位置Z
行10 add memW, 28 //将28添加到非持久性存储器中的存储器位置W
行11 pc_block R //持久性提交阻止指令
行12 add reg2, 17 //将12添加到寄存器2
行13 mov memW, 14 //将18写入非持久性存储器中的存储器位置W
行14 mov memX, 16 //将16写入持久性存储器中的存储器位置X
在该代码中,pc_demarcate是持久性提交划界指令的实施例,并且pc_block是持久性提交阻止指令的实施例。在一些实施例中,pc_demarcate或pc_block都不阻止或防止行8-10的指令的实行。在一些实施例中,行8-10的指令的指令可以被实行,并且行9的指令甚至可以存储为持久性,甚至在行1-2的指令的存储已经变得持久的任何保证之前。
在实行行11的pc_block指令之后,在一些实施例中,行11的指令之后的一个或多个类型的指令的实行以及将从其得到的到持久性存储器的任何存储可以被停止。在不同的实施例中,可以防止不同类型的指令被实行。在一些实施例中,到持久性存储器的存储的实行可以被停止(例如,行14的指令可以被停止)。在其他实施例中,到持久性存储器的存储的实行可以被停止(例如,行14的指令可以被停止),并且还可以可选地停止到非持久性存储器的存储的实行(例如,行13的指​​令也可以被停止)。通过示例的方式,处理器的流水线逻辑可以检查到持久性存储器的存储以及到非持久性存储器的存储的地址范围(例如,如通过处理器的范围寄存器配置的),并且相应地选择性地实行或不实行指令。在又其他实施例中,到持久性存储器的存储的实行可以被停止(例如,行14的指令可以被停止),并且到非持久性存储器的存储的实行可以可选地被停止(例如,行13的指​​令也可以被停止),并且到处理器架构寄存器的存储的实行可以可选地被停止(例如,行12的指令也可以被停止),或者大多数(如果不是所有)类型的指令可以可选地被停止。这些指令的实行的这样的停止可以在响应于行11的pc_block指令确定了在pc_demarcate指令之前的所有存储到持久性存储器操作已经被提交为持久时结束(例如,行1-2的指令的存储已经被持久存储)。
图5是操作为使用附加到存储器控制器522处的到达的存储操作568(例如,S152、S2、S3、S4)以确定划界值554的单调增加的值(V1、V2、V3、V4)的处理器500的示例性实施例的框图。存储器控制器可以接收到达的存储操作568。到达的存储操作可以包括至少一些存储到持久性存储器操作。如所示,到达的存储操作可以包括存储操作S1、S2、S3和S4。
存储器控制器具有到达存储值附加单元570。到达存储值附加单元与单调增加值生成器572耦合。单调增加值生成器可以或可以不是存储器控制器的一部分。单调增加值生成器操作为生成随时间单调增加的值。适当的单调增加值生成器的一个示例是存储操作到达计数器,其操作为对到达的存储操作进行计数(例如,每当新的存储操作到达时递增计数器)。例如,如果三个存储操作按顺序到达,则第一可以被给予计数X,下一个被给予计数(X+1),并且下一个被给予计数(X+2)。适当的单调增加值生成器的另一示例是操作为保持增加的时间值的自由运行时钟或其他计时器。每个到达的存储操作可以用指示该存储操作何时到达的时间戳值来标记。还预计到单调增加值生成器的其他示例。
到达存储值附加单元570可以操作为标记或以其他方式将当前值从单调增加值生成器附加到每个到达的存储操作。例如,第一值(V1)可以被附加到第一到达的存储操作(S1),第二增加的值(V2)可以被附加到后续到达的存储操作(S2)等。具有附加值的到达的存储操作可以被存储在写入未决缓冲器524中。附加值可以在其移动通过写入未决缓冲器524时与存储操作在一起。
存储器控制器包括离开存储操作值提取器单元574,其可以操作为在存储操作作为离开的存储操作而离开存储器控制器之前提取附加值(例如,在总线上传送到持久性存储器)。如所示,存储操作S1、S2、S3和S4可以在没有值V1、V2、V3和V4的情况下离开。当每个存储操作按次序离开存储器控制器时,提取器单元可以将对应的所提取的值保存在最后提取的值储存器580(例如,暂存器、临时寄存器等)中。通过示例的方式,在值是指示当对应存储操作到达存储器控制器时的相对时间的时间戳的特定情况下,在FIFO队列中,可以保存所提取的最后的时间戳(指示当对应存储操作到达时的时间)。存储器控制器还可以可选地具有空指示器576,其操作为指示写入未决缓冲器何时变空。
划界单元546与存储器控制器522和/或单调增加值生成器572耦合。划界单元响应于持久性提交划界指令504(例如,来自其的一个或多个经解码的控制信号)和/或作为其结果而可操作为从单调增加值生成器接收556当前值,并且将接收到的值作为划界值存储558在寄存器552中。通过示例的方式,如果在存储操作S3是到达存储器控制器处的最近的存储操作时持久性提交划界指令被实行,则到达值V3(例如,到达计数器值、到达时间戳值等)可以从单调增加值生成器接收并且被存储为划界值。
阻止和检查单元550与寄存器552和存储器控制器522耦合。在各种实施例中,阻止和检查单元可以是存储器控制器的部分,或者可以与存储器控制器分离但与之耦合(例如,可以在单独的执行单元中)。划界单元响应于持久性提交阻止指令506(例如,来自其的一个或多个经解码的控制信号)和/或作为其结果,可以操作为从寄存器接收560划界值。阻止和检查单元可以操作为重复地检查562最后提取的值储存器562,以确定从已经离开执行单元的离开的存储操作中提取的最后或最大值。阻止和检查单元可以操作为确定来自最后提取的值储存器的最后或最大值是否大于(或在另一实施例中大于或等于)划界值,或者空指示器是否指示写入待决缓冲器是空的。如果这些中的任一被确定为真,则该阻止和检查单元可以提供停止阻止信号565。在一些实施例中,停止阻止信号可以使得恢复实行一个或多个类型的指令,其实行在最后或最大值小于划界值的同时响应于持久性提交阻止指令而被停止。停止阻止信号可以指示处理器等待发生的某事已经发生并且现在处理器可以恢复实行其先前停止实行的一个或多个类型的指令。通过示例的方式,如果最后提取值储存器具有到达计数器值V4(例如,数57456),并且划界值具有值V3(例如,57455),则阻止和检查单元可以确定停止阻止(例如,因为用于V4的单调增加的值将大于用于V3的单调增加的值)。否则,阻止和检查单元可以操作为继续提供阻止信号564,以停止使得一个或多个类型的指令的执行或实行在最后或最大值小于划界值的同时被停止。
在一些实施例中,划界值可以关于时间次序(例如,在(一个或多个)存储器控制器处的存储操作的到达的时间次序),而持久性提交阻止指令可以实行关于程序次序的阻止。当在系统中存在一个或多个高速缓存时,在存储器次序(例如,存储器控制器处的存储操作的到达的时间次序)和程序次序之间可能不存在直接关联。高速缓存可以改变穿过高速缓存的存储到达(一个或多个)存储器控制器的次序。例如,这可以取决于以下因素:诸如存储是回写、通写、还是组合存储类型的写入、高速缓存逐出(eviction)的定时等。
图6是最大值选择器682的示例性实施例的框图。最大值选择器与单调增加时钟或计时器672(例如,自由运行时钟或计时器)耦合。时钟或计时器可以用于将值提供到到达存储值附加单元570。这些值可以被输入到最大值选择器的AND(与)逻辑684。空指示器676还可以被输入到AND逻辑。AND逻辑可操作为,当空指示器指示写入待决缓冲器队列是空的时从时钟或计时器输出值。AND逻辑的输出和来自最后提取值储存器580的最后提取的值被输入到最大值储存器686。除非空指示器指示写入未决缓冲器队列是空的,最大值储存器可操作为存储最后提取的值580。然而,当空指示器指示写入未决缓冲器队列是空的时,最大值储存器存储最大值,其通常将是来自时钟或计时器值672的值(例如,通常继续增加)。这可以有助于避免需要必须明确地检查空指示器,因为最大值储存器的输出可以自动地反映这一点。最大值储存器的输出被提供给阻止和检查单元550。
为了简化描述,图5中的方法的以上讨论在单个存储器控制器的上下文中进行描述。然而,当存在多个存储器控制器时,该方法也起作用。
图7是具有多个存储器控制器722的处理器700的示例性实施例的框图。在图示的实施例中,为简单起见,仅示出了第一存储器控制器722-1和第二存储器控制器722-2,但是处理器可以可选地具有以类似方式使用的其他数目的存储器控制器。存储器控制器中的每一个可以接收到达的存储操作768-1、768-2。存储器控制器中的每一个具有到达存储值附加单元770-1、770-2,用于将对于确定划界值有用的单调增加的值附加到到达的存储操作,如前结合图5所述。
如所示,在一些实施例中,存储器控制器中的每一个可以共享公共时钟、计时器或计数器772。单个共享公共时钟、计时器或计数器可以操作为生成单调增加的值。在替代实施例中,代替具有单个共享时钟、计时器或计数器,存储器控制器中的每一个可以可选地具有不同的对应时钟、计时器或计数器,并且这些不同的时钟、计时器或计数器可以被同步或以其他方式作出,以产生相互一致的值。例如,如果存储操作同时到达两个不同的存储器控​​制器,则同步或相互一致的时钟或计时器将生成相同的时间戳值。用于同步时钟、计时器或计数器的已知方法是适当的。作为一种可能示例,时钟或计时器可以可选地使用基于Intel®QuickPath互连的时钟交换和同步方法来同步。
这样的单调增加的并且同步或以其他方式相互一致的值可以跨所有存储器控制器具有全局相关性。换言之,如果任何第一值小于任何第二值,则意味着不论其到达哪个存储器控制器,对应于第一值的存储操作在对应于第二值的存储操作之前到达。这可以有助于允许单个划界值被确定并且用于跨所有存储器控制器对在划界指令之后的持久性提交进行排序。
再次参考图7,存储器控制器中的每一个具有离开存储值提取器单元774-1、774-2,用于提取和输出所提取的值780。存储器控制器中的每一个具有最大值选择器782-1、782-2。在一些实施例中,最大值选择器可以与图6的最大值选择器682相同或类似。如所示,每个存储器控制器还具有空指示器776-1、776-2,以指示对应的存储待决缓冲器或队列何时为空。空指示可以被提供给相应最大值选择器。单调增加且相互一致的值(例如,来自公共时钟、计时器或计数器772或来自同步或以其他方式相互一致的时钟、计时器或计数器的其他)还可以被提供给最大值选择器。最大值选择器可以操作为选择所提取的值或在空指示器指示缓冲器或队列为空时单调增加且相互一致的值(例如,如前图6所述)中的最大值。最小值储存器788与最大值选择器中的每一个的输出耦合。最小值储存器可以存储所有最大值选择器的输出中的最小值。该最小存储的值可以被提供给阻止和检查单元550。在所有不同存储器控制器上的最小值确保由持久性提交划界指令所获得的划界值与离开的最小值的存储操作作比较。使用跨所有不同存储器控制器的这样的最小值可以有助于允许持久性提交阻止指令阻止,直至最小值大于或等于划界值,所述划界值指示由划界值所区分的对持久性的所有需要的先前持久性提交已经完成到跨所有不同的存储器控制器的持久性。
在出自存储器控制器的非FIFO持久性提交的情况下,在一些实施例中,可以可选地使用滑动位图窗口。滑动位图窗口可以范围从还没有被提交为持久性的最小值和已经在存储器控制器或在存储器控制器中的任何一个处发出的最大值。使值R表示位图中的最小值,这可以表示位图窗口的右边缘。然后,如果任何值R大于划界值,或对于位图窗口,在划界值和值R之间的差等于零,则等待的存储操作已经被提交为持久性。
回想一下,如图1所示,在一些实施例中,指令集还可以可选地包括持久性提交检查指令108,虽然这不是所要求的。持久性提交检查指令可以类似于本文所公开的其他指令那样被解码(例如,由解码单元442)和执行(例如,由执行单元444或不同的执行单元)。
在一些实施例中,持久性提交检查指令可以明确指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐含地指示)当前状态或值要被存储的目的地存储位置。作为一个示例,持久性提交检查指令可以可选地具有存储位置指定字段,用于指定寄存器(例如,寄存器452中的一个)、存储器位置或其他目的地存储位置。替代地,目的地存储位置可以可选地对指令是隐含的(例如,对其操作码是隐含的)。在一个具体实施例中,持久性提交检查指令可以可选地隐含地指示(但不明确指定)用于目的地存储位置的特定固定通用寄存器,其是与由持久性提交划界指令的实施例和/或持久性提交阻止指令的实施例所隐含指示的通用寄存器不同的通用寄存器。这样的不同寄存器的隐含使用可以有助于避免需要对可以被持久性提交划界和阻止指令中的每一个使用的划界值进行覆写。
在一些实施例中,持久性提交检查指令如果被执行可以操作为使得关联的执行单元和/或处理器将值存储在所指示的目的地存储位置中。在一些实施例中,该值可以指示由先前对应持久性提交划界指令所划界的至少所有存储到持久性存储器操作(例如,在所指示的先前对应持久性提交划界指令被实行时已经被接受到存储器但是在先前对应持久性提交划界指令被实行时不一定已经被持久存储的存储到持久性存储器操作)现在是否已经被持久存储。该值不需要一定应用于任何一个特定划界值,而是可以应用于各种划界值(例如,反映离开的存储操作的当前状态的单调增加的值可以应用于表示划界值的先前这样的单调增加的值)。
在一些实施例中,所存储的值可能不仅指示所划界的存储到持久性存储器操作现在是否已经被持久存储,而且还可以指示所划界的存储操作的完成的当前水平或状态或度量。完成的不同度量适用于不同的实施例。完成的适当度量的示例包括但不限于,完成划界的持久性存储所需要的估计时间、已经被持久存储的划界的持久性存储的估计百分比、在划界值和反映到持久性存储器的最近离开的存储操作的值之间的差异等。通过示例的方式,在各种实施例中,持久性提交检查指令在被实行时可以操作为使得关联的执行单元和/或处理器读取图5中的最后提取的值储存器580、图6中的最大值储存器686、图7的最小值储存器788等中的一个。在一些实施例中,与前述持久性提交阻止指令相比,持久性提交检查指令在被实行时可能不会阻止或停止或暂停任何类型的指令的执行。
持久性提交检查指令的一个具体示例性实施例可以指示具有划界值的源寄存器以及要被用于存储完成值水平的目的地寄存器。如果由划界值所区分的所有划界的存储到持久性存储器操作已经被持久存储,则指示完全完成的值(例如,0值)可以被存储在目的地中。否则,指示进展或状态的当前水平的值可以被存储。该状态或进展的水平可以用作软件可以使用以估计直到划界的存储到持久性存储器操作已经完成为止的时间量(软件可以在不限制的情况下以各种方式进行)的提示(hint)。这仅仅是适当的持久性提交检查指令的一个说明性示例。
在一些实施例中,持久性提交检查指令可以连同持久性提交划界指令和持久性提交阻止指令一起使用。例如,在一些实施例中,可以在持久性提交划界指令之后可选地使用持久性提交检查指令的一个或多个实例以允许软件测量或确定朝着完成在持久性提交划界指令之前并且通过划界值划界的存储操作的持久性存储的进展或状态的当前水平,使得软件可以确定是否继续以推迟实行后续持久性提交阻止指令。如上所述,持久性提交阻止指令可以实行阻止操作,并且因此可以具有关联的性能惩罚。此外,要提交为持久性的所有先前存储所需要的时间可以可能是较长和/或可能是可变的。因此,持久性提交检查指令的可能的优点是有助于允许软件来测量和适应于这样的可能长的和/或可能可变的时间,并且可选地推迟实行持久性提交阻止指令,直至适当的和可选地最大推迟的时间为止。
图8是用处理器实行的方法890的一个可能示例的块流程图,其中,持久性提交检查指令的实施例可以与持久性提交划界指令的实施例和持久性提交阻止指令的实施例一起使用。该方法包括在块891处实行持久性提交划界指令。这可以如在本文中其他位置所述来进行。该方法可选地包括在块892处实行非相关工作。如本文其他位置所述,这可以表示不取决于由与持久性提交划界指令相关联的划界值所划界的到持久性存储器的存储的工作。
在块893处,可以实行持久性提交检查指令。在一些实施例中,这可以包括读取或以其他方式确定和存储指示是否所有划界的存储到持久性存储器操作已经完成的值。在一些实施例中,值可以指示朝着持久存储这些划界的存储操作的当前状态或水平,而不阻止或防止任何指令的执行。通过示例的方式,在各种实施例中,这可以包括在寄存器中读取和存储图5中的最后提取的值储存器580、图6中的最大值储存器686、图7的最小值储存器788等中的一个,而不阻止或防止任何持久性存储操作。
在块894处,可以进行是否存在进行更多非相关工作的时间的确定。例如,软件可以访问由持久性提交检查指令所读取和存储的值,并且将其与由持久性提交划界指令所存储的划界值作比较。如果该差异足够大,例如如果该差异超过可配置阈值,则所述确定可以是存在足够的时间来进行更多非相关工作(即,“是”可以是确定)。在这样的情况下,软件可以可选地决定重新拜访块892,其中可以可选地实行更多非相关工作。相反,如果差异未被软件认为足够大,例如,如果差异没有超过可配置阈值,则所述确定可以是不存在足够的时间来进行更多的非相关工作(即,“否”可以是确定)。在这样的情况下,该方法可以前进到块895。通过示例的方式,这可以可选地以语言级协例程来实行。该构造可以可选地允许软件流水线化事务的更容易的构造,其中,影响独立变量的事务组可以来回通过控制以覆盖具有实现耐久提交的间隔的处理器使用。
在块895处,可以实行持久性提交阻止指令。如前所述,持久性提交阻止指令在被实行时可以操作为阻止或停止在一个或多个类型的持久性提交阻止指令之后的后续指令的实行(例如,存储到持久性存储器指令、存储到持久性存储器和存储到非持久性存储器指令二者、所有指令等),直至由先前持久性提交划界指令所划界的所有存储到持久性存储器操作已经被持久存储为止。这可能导致性能惩罚。然而,通过在与持久性提交划界指令分离的指令中具有阻止操作有助于减少该性能惩罚。此外,通过具有非阻止持久性提交检查指令软件可以测量进展,并且智能地确定持久性提交阻止指令可以被推迟多长,由此进一步有助于减少性能惩罚。软件可以使用在不同时间顺序地实行的持久性提交检查指令的多个实例,以实现轮询完成操作,其中持久性提交阻止指令可以基于持久性提交检查指令的测量而被一再推迟(例如,甚至是最大延迟),并且然后在需要之前被实行。替代地,软件可以使用持久性提交检查指令,以确保其完全不需要实行持久性提交阻止指令。有利地,这样的指令可以有助于允许软件高效地处理对被接受到存储器但是尚未离开一个或多个存储器控制器的存储进行持久排序所需的可能较长和/或可能可变的时间。
图9是处理器900的实施例的框图。处理器具有指令集902。如所示,在一些实施例中,指令集可以包括单个域持久性提交划界指令904、单个域持久性提交阻止指令906、以及可选的单个域持久性提交检查指令,不过这不是要求的。替代地,在其他实施例中,指令集可以可选地包括所图示指令的子集(例如,与这些指令中的任何单个一样少)。
在一些实施例中,这些指令中的每一个可以类似于上述公开的对应命名的指令,除了其可以适用于单个存储器控​​制器域而不是多个存储器控制器域之外。在一些实施例中,指令可以指定或以其他方式指示该域(例如,指示逻辑处理器标识符)。在一些实施例中,这些指令中的每一个可以独立地针对多个存储器控制器中的每一个进行操作。软件可以进而针对存储器控制器中的全部或一些来使用这些指令,以确保在每个存储器控制器处并行地满足其相关性。例如,软件可以用单独的每存储器控制器握手(例如,每个存储器控制器域中的单独的划界值)合成多存储器控制器持久性握手。这允许软件高效地工作,特别是当其所有操作通过设计被限制到单个非统一存储器访问(NUMA)域。在这样的情况下,软件可以仅需要在单个NUMA域中实行排序。
这些单个域指令的一个可能的优点是灵活性,以及来自不必停转仅需要与存储器控制器的子集的握手的持久性提交阻止指令(例如,当用于特定事务的所有高速缓存行已知在相同的NUMA域中时)的可能的性能益处。尽管该方案使用更多的指令,但是其不一定具有对应更高数目的停转,因为在一个存储器控制器处的等待还可以覆盖对于其他存储器控制器而言耗尽(drain)所花费的时间。
图7和图9示出了适用于多个存储器控制器的两个不同的实施例。这些不同的实施例不是相互排斥的,而是可以可选地一起使用。这样的单调增加的值的使用是其中可以实现实施例的一个可能的方式。然而,还预计到其他方式。例如,一种可能的方法是强制所有的存储器控制器完全耗尽,并且在不允许任何新的值进入划界和阻止指令之间的情况下变空。又其他方式将对本领域并且受益于本公开的技术人员来说将是显而易见的。
示例性核架构、处理器和计算机架构
处理器核出于不同的目的以不同的方式并且在不同的处理器中实现。例如,这样的核的实现可以包括:1)意图用于通用计算的通用有序核;2)意图用于通用计算的高性能通用乱序核;3)主要意图用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可以包括:1)包括意图用于通用计算的一个或多​​个通用有序核和/或意图用于通用计算的一个或多个通用乱序核的CPU;以及2)包括主要意图用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可以包括:1)来自CPU的单独的芯片上的协处理器;2)与CPU在相同封装中的单独管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑或者作为专用核);以及4)可以在相同管芯上包括所描述的CPU的片上系统(有时被称为(一个或多个)应用核或(一个或多个)应用处理器),上述协处理器以及附加功能。接下来描述示例性核架构,之后是示例性处理器和计算机架构的描述。
示例性核架构
有序和乱序核框图
图10A是图示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发出/执行流水线二者的框图。图10B是图示根据本发明的实施例的要被包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、乱序发出/执行架构核二者的框图。图10A-B中的实线框图示了有序流水线和有序核,而虚线框的可选附加图示了寄存器重命名、乱序发出/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图10A中,处理器流水线1000包括取出级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也已知为分派或发出)级1012、寄存器读取/存储器读取级1014、执行级1016、回写/存储器写入级1018、异常处理级1022和提交级1024。
图10B示出了处理器核1090,其包括耦合到执行引擎单元1050的前端单元1030,并且二者都耦合到存储器单元1070。核1090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、甚长指令字(VLIW)核或混合或替代的核类型。作为又一选项,核1090可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,所述指令高速缓存单元1034耦合到指令转换后备缓冲器(TLB)1036,所述指令转换后备缓冲器1036耦合到指令取出单元1038,所述指令取出单元1038耦合到解码单元1040。解码单元1040(或解码器)可以解码指令,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其从原始指令解码或者以其他方式反映原始指令或者从原始指令得到。解码单元1040可以使用各种不同的机制来实现。适当的机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括微代码ROM或其他介质,其存储用于特定微指令的微代码(例如,在解码单元单元1040或以其他方式在前端单元1030中)。解码单元1040被耦合到执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合到退役单元1054和一个或多个调度单元1056的集合的重命名/分配器单元1052。(一个或多个)调度器单元1056表示任何数目的不同调度器,包括保留站、中央指令窗口等。(一个或多个)调度器单元1056被耦合到(一个或多个)物理寄存器文件单元1058。(一个或多个)物理寄存器文件单元1058中的每一个表示一个或多个物理寄存器文件,其中的不同的物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、封装整数、封装浮点、矢量整数、矢量浮点等、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元1058包括矢量寄存器单元、写入掩蔽寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩蔽寄存器和通用寄存器。(一个或多个)物理寄存器文件单元1058由退役单元1054重叠,以说明其中寄存器重命名和乱序执行可以被实现的各种方式(例如,使用(一个或多个)重排序缓冲器以及(一个或多个)退役寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)退役寄存器文件;使用寄存器映射和寄存器池等)。退役单元1054和(一个或多个)物理寄存器文件单元1058耦合到(一个或多个)执行群集1060。(一个或多个)执行群集1060包括一个或多个执行单元1062的集合以及一个或多个存储器访问单元1064的集合。执行单元1062可以实行各种操作(例如,移位、加法、减法、乘法)并且在各种类型的数据(例如,标量浮点、封装整数、封装浮点、矢量整数、矢量浮点)上实行操作。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可以仅包括一个执行单元或所有实行所有功能的多个执行单元。(一个或多个)调度器单元1056、(一个或多个)物理寄存器文件单元1058和(一个或多个)执行群集1060被示出为可能复数的,因为特定实施例创建用于特定类型的数据/操作的特定流水线(例如,标量整数流水线、标量浮点/封装整数/封装浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每个都具有其自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行群集——并且在单独的存储器访问流水线的情况下,实现特定实施例,其中仅该流水线的执行群集具有(一个或多个)存储器访问单元1064)。还应当理解,在使用单独流水线的情况下,这些流水线中的一个或多个可以是乱序发出/执行并且其余是有序的。
存储器访问单元1064的集合可以耦合到存储器单元1070,其包括耦合到数据高速缓存单元1074的数据TLB单元1072,所述数据高速缓存单元1074耦合到2级(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可以包括加载单元、存储地址单元和存储数据单元,其中的每一个可以耦合到存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034进一步被耦合到存储器单元1070中的2级(L2)高速缓存单元1076。L2高速缓存单元1076被耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。
通过示例的方式,示例性寄存器重命名、乱序发出/执行核架构可以如下实现流水线1000:1)指令取出1038实行取出和长度解码级1002和1004;2)解码单元1040实行解码级1006;3)重命名/分配器单元1052实行分配级1008和重命名级1010;4)(一个或多个)调度器单元1056实行调度级1012;5)(一个或多个)物理寄存器文件单元1058和存储器单元1070实行寄存器读取/存储器读取级1014;执行群集1060实行执行级1016;6)存储器单元1070和(一个或多个)物理寄存器文件单元1058实行回写/存储器写入级1018;7)各种单元可以在异常处理级1022中被涉及;并且8)退役单元1054和(一个或多个)物理寄存器文件单元1058实行提交级1024。
核1090可以支持一个或多个指令集(例如,x86指令集(具有已经添加有较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS科技的MIPS指令集;ARM指令集(具有加利福尼亚州桑尼维尔的ARM控股公司的可选附加扩展,诸如NEON),包括本文中描述的(一个或多个)指令。在一个实施例中,核1090包括用于支持封装数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许被许多多媒体应用使用的操作使用封装数据来实行。
应当理解,核可以支持多线程(执行操作或线程的两个或更多个并行集合),并且可以以各种方式来这样做,包括时间分段多线程、同时多线程(其中单个物理核提供用于物理核同时多线程化的线程中的每一个的逻辑核)或其组合(例如,时间分段取出和解码以及此后的同时多线程,诸如在Intel®超线程技术中)。
虽然寄存器重命名在乱序执行的上下文中进行描述,但是应当理解,寄存器重命名可以在有序架构中使用。尽管所示的处理器的实施例还可以包括单独的指令和数据高速缓存单元1034/1074和共享L2高速缓存单元1076,但是替代实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存可以在核和/或处理器外部。
具体示例性有序核架构
图11A-B图示了更具体的示例性有序核架构的框图,其核可以是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图11A是根据本发明的实施例的单个处理器核连同其到管芯上互连网络1102以及与其2级(L2)高速缓存1104的本地子集的连接的框图。在一个实施例中,指令解码器1100支持具有封装数据指令集扩展的x86指令集。L1高速缓存1106允许到标量和矢量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例(为了简化设计)中,标量单元1108和矢量单元1110使用单独的寄存器组(分别是标量寄存器11112和矢量寄存器1114),并且在其之间传输的数据被写入到存储器并且然后从1级(L1)高速缓存1106被读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在两个寄存器文件之间被传输而不被写入和读回的通信路径) 。
L2高速缓存1104的本地子集是全局L2高速缓存的一部分,其被划分成单独立的本地子集,每个处理器核一个。每个处理器核具有对L2高速缓存1104的其自己的本地子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1104中,并且可以与访问其自己的本地L2高速缓存子集的其他处理器核并行地被快速访问。由处理器核写入的数据被存储在其自己的L2高速缓存子集1104中,并且从其他子集清除,如果必要的话。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存或其他逻辑块之类的代理在芯片内与彼此进行通信。每个环形数据路径每个方向是1012位宽。
图11B是根据本发明的实施例的图11A中的处理器核的部分的放大视图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分以及关于矢量单元1110和矢量寄存器1114的更多细节。具体地,矢量单元1110是16宽矢量处理单元(VPU)(见16宽ALU 1128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU用拌和(swizzle)单元1120支持对寄存器输入进行拌和、用数值转换单元1122A-B支持数值转换、以及在存储器输入上用复制单元1124支持复制。写入掩蔽寄存器1126允许预测所得到的矢量写入。
具有集成存储器控制器和图形的处理器
图12是根据本发明的实施例的处理器1200的框图,所述处理器1200可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的。图12中的实线框图示了具有单个核1202A、系统代理1210、一个或多个总线控制器单元1216集合的处理器1200,而虚线框的可选添加图示了具有多个核1202A-N、系统代理单元1210中的一个或多个集成存储器控制器单元1214的集合以及专用逻辑1208的替代处理器。
因此,处理器1200的不同实现可以包括:1)具有作为集成图形和/或科学(吞吐量)逻辑的专用逻辑1208(其可以包括一个或多​​个核)以及作为一个或多个通用核(例如,通用有序核、通用乱序核、二者的组合)的核1202A-N的CPU;2)具有作为主要意图用于图形和/或科学(吞吐量)的大量专用核的核 1202A-N的协处理器;以及3)具有作为大量通用有序核的核1202A-N的协处理器。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器1200可以是使用诸如例如BiCMOS、CMOS或NMOS之类的任何数目的处理技术的一个或多个衬底的部分和/或可以在所述一个或多个衬底上实现。
存储器层级包括核内的一个或多个级的高速缓存、一个或多个共享的高速缓存单元1206的集合、以及耦合到集成存储器控制器单元1214的集合的外部存储器(未示出)。共享高速缓存单元1206的集合可以包括一个或多​​个中间级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其他级的高速缓存、最后一级高速缓存(LLC)和/或其组合。尽管在一个实施例中,基于环的互连单元1212互连集成图形逻辑1208、共享高速缓存单元1206的集合以及系统代理单元1210 /(一个或多个)集成存储器控制器单元1214,但是替代实施例可以使用用于互连这样的单元的任何数目的公知的技术。在一个实施例中,在一个或多个高速缓存单元1206与核1202-A-N之间保持一致性。
在一些实施例中,核1202A-N中的一个或多个有多线程能力。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核1202A-N和集成图形逻辑1208的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N可以在架构和/或指令集方面是同构或异构的;即,核1202A-N中的两个或更多个可以能够执行相同的指令集,而其他可能能够仅执行该指令集的子集或不同的指令集。
示例性计算机架构
图13-21是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、台式计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中心(hub)、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适当的。通常,如本文公开的能够包含处理器和/或其他执行逻辑的大量系统或电子设备通常是适当的。
现在参考图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括耦合到控制器中心1320的一个或多​​个处理器1310、1315。在一个实施例中,控制器中心1320包括图形存储器控制器中心(GMCH)1390和输入/输出中心(IOH)1350(其可能在分离的芯片上);GMCH 1390包括存储器1340和协处理器1345所耦合到的存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH 1390。替代地,存储器和图形控制器中的一个或二者被集成在处理器内(如本文所述),存储器1340和协处理器1345被直接耦合到处理器1310,以及在具有IOH 1350的单个芯片中的控制器中心1320。
在图13中用虚线表示附加处理器1315的可选性质。每个处理器1310、1315可以包括本文描述的处理核中的一个或多个,并且可以是某个版本的处理器1200。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者二者组合。对于至少一个实施例,控制器中心1320经由多点总线与(一个或多个)处理器1310、1315进行通信,诸如前侧总线(FSB)、诸如QuickPath互连(QPI)之类的点对点接口或类似的连接1395。
在一个实施例中,协处理器1345是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心1320可以包括集成图形加速器。
在物理资源1310、1315之间在指标的一系列度量方面可能存在各种差异,包括架构、微架构、热、功耗特性等。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。协处理器指令可以嵌入指令内。处理器1310将这些协处理器指令识别为应当由附连的协处理器1345执行的类型。因此,处理器1310在协处理器总线或其他互连上向协处理器1345发出这些协处理器指令(或表示协处理器指令的控制信号)。(一个或多个)协处理器1345接受并且执行接收到的协处理器指令。
现在参考图14,示出了根据本发明的实施例的第一更具体示例性系统1400的框图。如图14中所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个可以是某个版本的处理器1200。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310协处理器1345。
处理器1470和1480被示出分别包括集成存储器控制器(IMC)单元1472和1482。作为其总线控制器单元的部分,处理器1470还包括点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以使用P-P接口电路1478、1488经由点对点(P-P)接口1450来交换信息。如图14所示,IMC 1472和1482将处理器耦合到相应存储器,即存储器1432和存储器1434,其可以是本地附连到相应处理器的主存储器的部分。
处理器1470、1480可以均经由单独的P-P接口1452、1454使用点对点接口电路1476、1494、1486、1498来与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439来与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以被包括在两个处理器中的任何一个处理器中或在其外部,而经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任何一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1490可以经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或诸如快速PCI总线之类的总线或另一第三代I/O互连总线,但是本发明的范围并不限于此。
如图14中所示,各种I/O设备1414可以耦合到第一总线1416,连同总线桥1418,所述总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,一个或多个附加处理器1415(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器)被耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以被耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427和可以包括指令/代码和数据1430的存储单元1428,诸如盘驱动器或其他大容量存储设备。此外,音频I/O1424可以被耦合到第二总线1420。注意,其他架构可以是可能的。例如,代替图14的点对点架构,系统可以实现多点总线或其他这样的架构。
现在参考图15,示出了根据本发明的实施例的第二更具体的示例性系统1500的框图。如在图14和图15中的元件承载类似的附图标记,并且图14的特定方面已经从图15中省略,以避免混淆图15的其他方面。
图15图示了处理器1470、1480可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图15图示了不仅存储器1432、1434耦合到1472、1482而且I/O设备1514也耦合到控制逻辑1472、1482。传统(legacy)I/O设备1515耦合到芯片组1490。
现在参考图16,示出了根据本发明的实施例的SoC 1600的框图。图12中的类似元件承载类似的附图标记。而且,虚线框是更高级的SoC上的可选特征。在图16中,(一个或多个)互连单元1602被耦合到:应用处理器1610,其包括一个或多个核152A-N的集合和(一个或多个)共享高速缓存单元1206;系统代理单元1210;(一个或多个)总线控制器单元1216;(一个或多个)集成存储器控制器单元1214;一组或一个或多个协处理器1620,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,(一个或多个)协处理器1620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这样的实现方法的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输​​入设备以及至少一个输出设备。
诸如图14中图示的代码1430的程序代码可以应用于输入指令以实行本文描述的功能并且生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。对于本申请的目的,处理系统包括具有处理器的任何系统,诸如,例如;数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级的面向过程或面向对象的编程语言来实现以与处理系统进行通信。程序代码还可以以汇编或机器语言来实现,如果需要的话。事实上,本文描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,其当由机器读取时,使得机器制造用于实行本文描述的技术的逻辑。称为“IP核”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或制造设施,以加载到实际上作出逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于,由机器或设备制造或形成的物品的非临时有形布置,包括诸如硬盘之类的存储介质、任何其他类型的盘(包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM))、磁卡或光卡或者适用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非临时有形机器可读介质,包含指令或包含设计数据,诸如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可以用于将指令从源指令集转换为目标指令集。例如,指令转换器可以翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或以其他方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或其组合来实现。指令转换可能在处理器上、处理器外或部分在处理器上且部分在处理器外。
图17是根据本发明的实施例的对比使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图17示出了以高级语言1702的程序可以使用x86编译器1704来编译以生成可以由具有至少一个x86指令集核1716的处理器原生执行的x86二进制代码1706。具有至少一个x86指令集核1716的处理器表示可以通过兼容地执行或以其他方式处理下述来实行与具有至少一个x86指令集核的英特尔处理器大体上相同功能的任何处理器:(1)英特尔x86指令集核的指令集的大部分或(2)目的在于在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他软件的对象代码版本,以便于与具有至少一个x86指令集核的英特尔处理器实现大体上相同结果。x86编译器1704表示操作为生成x86二进制代码1706(例如,对象代码)的编译器,其可以具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1716的处理器上被执行。类似地,图17示出了以高级语言1702的程序可以使用替代指令集编译器1708来编译,以生成替代指令集二进制代码1710,其可以由不具有至少一个x86指令集核1714的处理器来原生地执行(例如,具有执行加利福尼亚州桑尼维尔的MIPS科技的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的核的处理器)。指令转换器1712用于将x86二进制码1706转换成可以由不具有x86指令集核1714的处理器原生地执行的代码。该转换的代码不太可能与替代指令集二进制代码1710相同,因为能够这样的指令转换器难以制作;然而,转换的代码将完成一般操作,并且在由来自替代指令集的指令组成。因此,指令转换器1712表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其他处理来允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1706。
针对图2和图5-7中任一个描述的组件、特征和细节还可以可选地适用于图4中的任何一个。此外,针对装置中的任何一个描述的组件、功能和细节还可以可选地适用于在实施例中可以有由和/或用这样的装置实行的方法中的任何一个。本文所述的处理器中的任何一个可以被包括在本文公开的计算机系统中的任何一个中(例如,图13-16)。在一些实施例中,计算机系统可以包括动态随机存取存储器(DRAM)。替代地,计算机系统可以包括不需要被刷新的易失性存储器或闪速存储器的类型。本文公开的指令可以用本文示出的处理器中的任何一个来实行,所述处理器具有在本文示出的系统中的任何一个上的本文示出的微架构中的任何一个。
在说明书和权利要求中,术语“耦合”和/或“连接”连同其派生可能已经被使用。这些术语不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可以意指两个或更多元件彼此直接物理和/或电接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但是仍彼此协作或交互。例如,执行单元可以通过一个或多个介入组件来与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
术语“和/或”可能已经被使用。如本文中所使用的,术语“和/或”意指一个或另一个或二者(例如,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包括示例1的处理器,进一步包括多个通用寄存器,并且其中,持久性提交划界指令指示在通用寄存器之一中的目的地存储位置。
示例4包括示例1的处理器,其中,处理器响应于持久性提交划界指令而不防止所述至少所有第二存储到持久性存储器操作在所述至少所有第一存储到持久性存储器操作被持久存储之前被持久存储。
示例5包括示例1的处理器,其中,执行单元响应于持久性提交划界指令来存储划界值,所述划界值将在持久性提交划界指令被实行之前的时间已经在至少一个存储器控制器处被接收的所述至少所有第一存储到持久性存储器操作与在持久性提交划界指令被实行之后的时间在至少一个存储器控制器处被接收的所述至少所有第二存储到持久性存储器操作相划界。
示例6包括示例1的处理器,进一步包括单调增加值生成器,用于在存储到存储器操作到达至少一个存储器控制器的第一存储器控制器处时生成用于存储到存储器操作的单调增加的值。所述执行单元响应于持久性提交划界指令来存储单调增加的值,其已经被生成用于在持久性提交划界被实行之前最近已经到达第一存储器控制器的存储到存储器操作。
示例7包括示例6的处理器,其中,所述单调增加值生成器包括到达计数器。
示例8包括示例6的处理器,其中,所述单调增加值生成器包括计时器和时钟中的一个。
示例9包括示例1的处理器,其中,至少一个存储器控制器包括多个存储器控制器。处理器还可选地包括至少一个单调增加值生成器,其用于生成在存储到存储器操作到达多个存储器控制器中的每一个时用于存储到存储器操作的单调增加且相互一致的值。
示例10包括示例1的处理器,其中,至少一个存储器控制器包括多个存储器控制器。执行单元响应于持久性提交划界指令来可选地存储划界值,所述划界值将要在多个存储器控制器的域内的所述至少所有第一存储到持久性存储器操作与也要在多个存储器控制器的域内的所述至少所有第二存储到持久性存储器操作相划界。
示例11包括示例1的处理器,其中,执行单元响应于持久性提交划界指令来存储划界值,所述划界值将要仅在单个存储器控制器的域内的所述至少所有第一存储到持久性存储器操作与也要仅在单个存储器控制器的域内的所述至少所有第二存储到持久性存储器操作相划界。
示例12包括示例1至11中的任一项的处理器,其中,解码单元解码持久性提交阻止指令。持久性提交阻止指令指示存储划界值的源存储位置。所述处理器响应于持久性提交阻止指令来确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令已经被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例13包括示例12的处理器,进一步包括多个寄存器。所述持久性提交划界指令隐含地指示多个寄存器中的给定寄存器作为目的地存储位置。所述持久性提交阻止指令可选地隐含地指示给定寄存器作为源存储位置。
示例14包括示例12的处理器,其中,所述处理器响应于持久性提交阻止指令来暂停对要在执行持久性提交阻止指令之后执行的所述至少任何存储到持久性存储器指令的执行,直至所述至少所有第一存储到持久性存储器操作已经被持久存储为止。
示例15包括示例12的处理器,其中,所述处理器响应于持久性提交阻止指令来确保,在执行持久性提交阻止指令之后在所述任何存储到持久性存储器指令被执行之前,但是不一定在执行持久性提交阻止指令之后在任何存储到非持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例16包括示例12的处理器,其中,所述处理器响应于持久性提交阻止指令来确保,在执行持久性提交阻止指令之后在所述任何存储到持久性存储器指令被执行之前,并且在执行持久性提交阻止指令之后在任何存储到非持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例17包括示例12的处理器,其中,所述处理器响应于持久性提交阻止指令来将划界值与在其从至少一个存储器控制器离开时从离开的存储到存储器操作获得的值相比较。
示例18包括示例1至11中的任一项的处理器,其中,解码单元用于解码持久性提交检查指令。持久性提交检查指令指示目的地存储位置。所述处理器响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中,其用于指示所述至少所有第一存储到持久性存储器操作是否已经被持久存储。
示例19包括示例18的处理器,其中,持久性提交检查指令指示具有划界值的源存储位置。
示例20包括示例18的处理器,其中,所述处理器响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中,其用于指示持久存储所述至少所有第一存储到持久性存储器操作的进展水平。
示例21是一种处理器中的方法,其包括接收持久性提交划界指令。持久性提交划界指令指示目的地存储位置。该方法还包括响应于持久性提交划界指令来将划界值存储在目的地存储位置中。划界值将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。
示例22包括示例21的方法,进一步包括:接收持久性提交阻止指令。所述持久性提交阻止指令指示存储划界值的源存储位置。该方法还包括响应于持久性提交阻止指令来确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例23包括示例21的方法,进一步包括:接收持久性提交检查指令。所述持久性提交检查指令指示目的地存储位置。所述方法还包括响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中。要响应于持久性提交检查指令而被存储的值指示所述至少所有第一存储到持久性存储器操作是否已经被持久存储。
示例24是一种用于处理指令的系统,其包括互连以及与互联耦合的处理器。所述处理器用于接收​​持久性提交划界指令。所述持久性提交划界指令指示目的地存储位置。所述处理器响应于持久性提交划界指令来将划界值存储在目的地存储位置中。划界值将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。该系统还包括与互连耦合的动态随机存取存储器(DRAM)。DRAM存储指令集,该指令集在由处理器执行时使得处理器实行操作,包括:(1)确定要实行的非相关工作,其不依赖于所述至少所有第一存储到持久性存储器操作;以及(2)在实行持久性提交划界指令之后实行工作。
示例25包括示例24的系统,其中,处理器用于接收持久性提交阻止指令。持久性提交阻止指令用于指示存储划界值的源存储位置。该处理器响应于持久性提交阻止指令来确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例26是一种制品,其包括非临时机器可读存储介质。非临时机器可读存储介质存储持久性提交划界指令。所述持久性提交划界指令指示目的地存储位置。所述持久性提交划界指令如果被机器执行使机器实行包括将划界值存储在目的地存储位置中的操作。划界值用于将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。
示例27包括示例26的制品,其中,非临时机器可读存储介质还存储持久性提交阻止指令。持久性提交阻止指令用于指示存储划界值的源存储位置。持久性提交阻止指令如果被机器执行使得机器实行操作,包括确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
示例28包括示例1至20中的任一项的处理器,进一步包括用于预测分支的可选分支预测单元以及与分支预测单元耦合的可选的指令预取单元,指令预取单元用于预取包括该指令的指令。处理器还可以可选地包括与指令预取单元耦合的可选的1级(L1)指令高速缓存,L1指令高速缓存用于存储指令;用于存储数据的可选的L1数据高速缓存、以及用于存储数据和指令的可选的2级(L2)高速缓存。处理器还可以可选地包括与解码单元、L1指令高速缓存以及L2高速缓存耦合的指令取出单元,用于在一些情况下从L1指令高速缓存和L2高速缓存中的一个中取出指令并且将指令提供到解码单元。处理器还可以可选地包括用于对寄存器进行重命名的寄存器重命名单元、用于调度已经从指令解码以用于执行的一个或多个操作的可选调度器、以及用于提交指令的执行结果的可选提交单元。
示例29是用于实行或操作为实行示例21至23中的任何一个的方法的处理器或其他装置。
示例30是包括用于实行示例21至23中的任何一个的方法的部件的处理器或其他装置。
示例31是一种制品,其包括可选非临时机器可读介质,其可选地存储或以其他方式提供指令,所述指令如果被处理器、计算机系统、电子设备或其他机器执行和/或当由处理器、计算机系统、电子设备或其他机器执行时,操作为使得机器实行示例21至23中的任何一个的方法。
示例32是大体上如上所述的处理器或其他装置。
示例33是操作为实行大体上如本文描述的任何方法的处理器或其他装置。
示例34是用于实行(例如,具有用于实行或操作为实行以下的组件)大体上如本文所述的任何指令的处理器或其他装置。
示例35是一种计算机系统或其他电子设备,其包括具有用于解码第一指令集的指令的解码单元的处理器。所述处理器还具有一个或多个执行单元。电子设备还包括与处理器耦合的存储设备。存储设备用于存储第一指令,其可以是大体上如本文公开的指令中的任何一个,并且是第二指令集的。存储设备还存储用于将第一指令转换成第一指令集中的一个或多个指令的指令。第一指令集中的一个或多个指令在由处理器实行时使得处理器仿真第一指令。

Claims (25)

1.一种处理器,包括:
至少一个存储器控制器;
用于解码持久性提交划界指令的解码单元,所述持久性提交划界指令指示目的地存储位置;以及
与解码单元和至少一个存储器控制器耦合的执行单元,所述执行单元响应于持久性提交划界指令来将划界值存储在目的地存储位置中,其中,划界值将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。
2.根据权利要求1所述的处理器,其中,所述至少所有第一存储到持久性存储器操作中的至少一个以字节粒度和对应于处理器的高速缓存行的高速缓存行粒度中的一个寻址到持久性存储器。
3.根据权利要求1所述的处理器,进一步包括多个通用寄存器,并且其中,持久性提交划界指令指示在通用寄存器之一中的目的地存储位置。
4.根据权利要求1所述的处理器,其中,所述处理器响应于持久性提交划界指令而不防止所述至少所有第二存储到持久性存储器操作在所述至少所有第一存储到持久性存储器操作被持久存储之前被持久存储。
5.根据权利要求1所述的处理器,其中,所述执行单元响应于持久性提交划界指令来存储划界值,所述划界值将在持久性提交划界指令被实行之前的时间已经在至少一个存储器控制器处被接收的所述至少所有第一存储到持久性存储器操作与在持久性提交划界指令被实行之后的时间在至少一个存储器控制器处被接收的所述至少所有第二存储到持久性存储器操作相划界。
6.根据权利要求1所述的处理器,进一步包括单调增加值生成器,用于在存储到存储器操作到达至少一个存储器控制器的第一存储器控制器处时生成用于存储到存储器操作的单调增加的值,并且其中所述执行单元响应于持久性提交划界指令来存储单调增加的值,其已经被生成用于在持久性提交划界被实行之前最近已经到达第一存储器控制器的存储到存储器操作。
7.根据权利要求6所述的处理器,其中,所述单调增加值生成器包括到达计数器。
8.根据权利要求6所述的处理器,其中,所述单调增加值生成器包括计时器和时钟中的一个。
9.根据权利要求1所述的处理器,其中,至少一个存储器控制器包括多个存储器控制器,并且所述处理器进一步包括至少一个单调增加值生成器,其用于生成在存储到存储器操作到达多个存储器控制器中的每一个时用于存储到存储器操作的单调增加并且相互一致的值。
10.根据权利要求1所述的处理器,其中,至少一个存储器控制器包括多个存储器控制器,并且其中执行单元响应于持久性提交划界指令来存储划界值,所述划界值将要在多个存储器控制器的域内的所述至少所有第一存储到持久性存储器操作与也要在多个存储器控制器的域内的所述至少所有第二存储到持久性存储器操作相划界。
11.根据权利要求1所述的处理器,其中,所述执行单元响应于持久性提交划界指令来存储划界值,所述划界值将要仅在单个存储器控制器的域内的所述至少所有第一存储到持久性存储器操作与也要仅在单个存储器控制器的域内的所述至少所有第二存储到持久性存储器操作相划界。
12.根据权利要求1至11中的任何一项所述的处理器,其中,所述解码单元解码持久性提交阻止指令,所述持久性提交阻止指令指示存储划界值的源存储位置,并且其中所述处理器响应于持久性提交阻止指令来确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
13.根据权利要求12所述的处理器,进一步包括多个寄存器,其中所述持久性提交划界指令隐含地指示多个寄存器中的给定寄存器作为目的地存储位置,并且其中所述持久性提交阻止指令隐含地指示给定寄存器作为源存储位置。
14.根据权利要求12所述的处理器,其中,所述处理器响应于持久性提交阻止指令来暂停对要在执行持久性提交阻止指令之后执行的所述至少任何存储到持久性存储器指令的执行,直至所述至少所有第一存储到持久性存储器操作已经被持久存储为止。
15.根据权利要求12所述的处理器,其中,所述处理器响应于持久性提交阻止指令来确保,在执行持久性提交阻止指令之后在所述任何存储到持久性存储器指令被执行之前,但是不一定在执行持久性提交阻止指令之后在任何存储到非持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
16.根据权利要求12所述的处理器,其中,所述处理器响应于持久性提交阻止指令来确保,在执行持久性提交阻止指令之后在所述任何存储到持久性存储器指令被执行之前,并且在执行持久性提交阻止指令之后在任何存储到非持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
17.根据权利要求12所述的处理器,其中,所述处理器响应于持久性提交阻止指令来将划界值与在其从至少一个存储器控制器离开时从离开的存储到存储器操作获得的值相比较。
18.根据权利要求1至11中的任何一项所述的处理器,其中,所述解码单元解码持久性提交检查指令,所述持久性提交检查指令指示目的地存储位置,并且其中所述处理器响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中,其用于指示所述至少所有第一存储到持久性存储器操作是否已经被持久存储。
19.根据权利要求18所述的处理器,其中,所述持久性提交检查指令指示具有划界值的源存储位置,并且其中,所述处理器响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中,其用于指示持久存储所述至少所有第一存储到持久性存储器操作的进展水平。
20. 一种处理器中的方法,包括:
接收持久性提交划界指令,所述持久性提交划界指令指示目的地存储位置;以及
响应于持久性提交划界指令来将划界值存储在目的地存储位置中,其中所述划界值将在持久性提交划界指令被实行时已经被接受到存储器但不一定已经被持久存储的至少所有第一存储到持久性存储器操作,与在持久性提交划界指令被实行时还没有已经被接受到存储器的至少所有第二存储到持久性存储器操作相划界。
21. 根据权利要求20所述的方法,进一步包括:
接收持久性提交阻止指令,所述持久性提交阻止指令指示存储划界值的源存储位置;以及
响应于持久性提交阻止指令来确保在执行持久性提交阻止指令之后在至少任何存储到持久性存储器指令被执行之前,所述至少所有第一存储到持久性存储器操作已经被持久存储。
22. 根据权利要求20所述的方法,进一步包括:
接收持久性提交检查指令,所述持久性提交检查指令指示目的地存储位置;以及
响应于持久性提交检查指令来将值存储在由持久性提交检查指令所指示的目的地存储位置中,其中要响应于持久性提交检查指令而被存储的值指示所述至少所有第一存储到持久性存储器操作是否已经被持久存储。
23.一种装置,包括用于实行根据权利要求20-22中的任何一项所述的方法的部件。
24.一种制品,包括非临时机器可读介质,其存储至少一个指令,所述指令如果被机器执行操作为使得机器实行权利要求20-22中的任何一项所述的方法。
25.一种电子设备,包括:
互连;
与互联耦合的根据权利要求1-11中的任何一项所述的处理器;以及
与互连耦合的动态随机存取存储器(DRAM),DRAM存储指令集,该指令集在由处理器执行时使得处理器实行操作,所述操作包括:
确定用于实行不取决于所述至少所有第一存储到持久性存储器操作的非相关工作;以及
在实行持久性提交划界指令之后实行工作。
CN201610355929.5A 2015-06-26 2016-05-26 持久性提交处理器、方法、装置、制品和电子设备 Active CN106293626B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/751892 2015-06-26
US14/751,892 US10303477B2 (en) 2015-06-26 2015-06-26 Persistent commit processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
CN106293626A true CN106293626A (zh) 2017-01-04
CN106293626B CN106293626B (zh) 2020-09-11

Family

ID=56096477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610355929.5A Active CN106293626B (zh) 2015-06-26 2016-05-26 持久性提交处理器、方法、装置、制品和电子设备

Country Status (8)

Country Link
US (2) US10303477B2 (zh)
EP (1) EP3109761B1 (zh)
JP (1) JP6450705B2 (zh)
KR (1) KR20170001568A (zh)
CN (1) CN106293626B (zh)
BR (1) BR102016012065A2 (zh)
DE (1) DE102016006402A1 (zh)
TW (1) TWI712952B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958955A (zh) * 2018-07-06 2018-12-07 美利车(北京)网络技术有限公司 一种基于消息驱动的事务处理方法及装置
CN112486728A (zh) * 2019-09-11 2021-03-12 富士通株式会社 障碍同步电路、障碍同步方法以及并行信息处理装置
US11244402B2 (en) 2017-06-30 2022-02-08 Advanced New Technologies Co., Ltd. Prediction algorithm based attribute data processing

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US11016890B2 (en) * 2018-02-05 2021-05-25 Micron Technology, Inc. CPU cache flushing to persistent memory
US11307854B2 (en) 2018-02-07 2022-04-19 Intel Corporation Memory write log storage processors, methods, systems, and instructions
US10564863B2 (en) 2018-04-24 2020-02-18 International Business Machines Corporation Identifying an availability of a system
US11392380B2 (en) * 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses
US11831033B2 (en) * 2020-01-09 2023-11-28 Otter Products, Llc Hot-swappable battery pack system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060294326A1 (en) * 2005-06-23 2006-12-28 Jacobson Quinn A Primitives to enhance thread-level speculation
US20140136786A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Asynchronous persistent stores for transactions
CN104050023A (zh) * 2013-03-14 2014-09-17 英特尔公司 用于实现事务存储器的系统和方法
US20140297595A1 (en) * 2013-03-28 2014-10-02 Microsoft Corporation Transaction processing for database in persistent system
US20150006834A1 (en) * 2013-06-29 2015-01-01 Subramanya R. DULLOOR Method and apparatus for store durability and ordering in a persistent memory architecture

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6802022B1 (en) * 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US7620661B2 (en) * 2005-10-27 2009-11-17 International Business Machines Corporation Method for improving the performance of database loggers using agent coordination
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US10817421B2 (en) * 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9208071B2 (en) * 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9218278B2 (en) * 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) * 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US10387331B2 (en) 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
CN103513958B (zh) * 2012-06-27 2017-01-25 上海芯豪微电子有限公司 高性能指令缓存系统和方法
WO2015012871A1 (en) * 2013-07-26 2015-01-29 Intel Corporation Methods and apparatus for supporting persistent memory
US20150095578A1 (en) * 2013-09-27 2015-04-02 Kshitij Doshi Instructions and logic to provide memory fence and store functionality
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
WO2016159930A1 (en) * 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US20160378344A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Processor and platform assisted nvdimm solution using standard dram and consolidated storage
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
WO2017012667A1 (en) * 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US10761946B2 (en) * 2017-02-10 2020-09-01 Sap Se Transaction commit protocol with recoverable commit identifier
US10445238B1 (en) * 2018-04-24 2019-10-15 Arm Limited Robust transactional memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060294326A1 (en) * 2005-06-23 2006-12-28 Jacobson Quinn A Primitives to enhance thread-level speculation
US20140136786A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Asynchronous persistent stores for transactions
CN104050023A (zh) * 2013-03-14 2014-09-17 英特尔公司 用于实现事务存储器的系统和方法
US20140297595A1 (en) * 2013-03-28 2014-10-02 Microsoft Corporation Transaction processing for database in persistent system
US20150006834A1 (en) * 2013-06-29 2015-01-01 Subramanya R. DULLOOR Method and apparatus for store durability and ordering in a persistent memory architecture

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11244402B2 (en) 2017-06-30 2022-02-08 Advanced New Technologies Co., Ltd. Prediction algorithm based attribute data processing
CN108958955A (zh) * 2018-07-06 2018-12-07 美利车(北京)网络技术有限公司 一种基于消息驱动的事务处理方法及装置
CN112486728A (zh) * 2019-09-11 2021-03-12 富士通株式会社 障碍同步电路、障碍同步方法以及并行信息处理装置

Also Published As

Publication number Publication date
DE102016006402A1 (de) 2016-12-29
US10303477B2 (en) 2019-05-28
BR102016012065A2 (pt) 2017-01-24
TWI712952B (zh) 2020-12-11
KR20170001568A (ko) 2017-01-04
US20190278599A1 (en) 2019-09-12
EP3109761B1 (en) 2018-03-07
CN106293626B (zh) 2020-09-11
TW201712529A (zh) 2017-04-01
EP3109761A1 (en) 2016-12-28
US11210099B2 (en) 2021-12-28
US20160378467A1 (en) 2016-12-29
JP6450705B2 (ja) 2019-01-09
JP2017016638A (ja) 2017-01-19

Similar Documents

Publication Publication Date Title
CN106293626A (zh) 持久性提交处理器、方法、系统和指令
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
TWI803030B (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
CN103620555B (zh) 抑制不正确的推测性执行路径上的控制转移指令
CN106648553B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令
CN107408036A (zh) 用户级分叉与结合处理器、方法、系统和指令
US20150278097A1 (en) Instruction and Logic for Reducing Data Cache Evictions in an Out-Of-Order Processor
CN108292221A (zh) 事务结束加上持续性提交指令、处理器、方法和系统
CN106708753A (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104025027B (zh) 结构访问处理器、方法、系统和指令
CN105247479B (zh) 指令次序实施指令对、处理器、方法和系统
CN114003288A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
CN107918546A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN107209723A (zh) 用于虚拟化的细粒度地址重新映射
CN108885586A (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
CN108694056A (zh) 用于基于二进制翻译的微处理器的混合原子性支持
CN106575284A (zh) 用于内核模块的多核存储器数据记录器
CN105027137B (zh) 用于针对增强型安全检查的页走查扩展的装置和方法
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
CN106293894A (zh) 执行事务性功率管理的硬件设备和方法
CN109416640A (zh) 孔径访问处理器、方法、系统和指令
CN107278295A (zh) 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测
CN107077421A (zh) 用于页表游走改变位的指令和逻辑
CN109328341A (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