CN106575218A - 持久性存储屏障处理器、方法、系统和指令 - Google Patents
持久性存储屏障处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN106575218A CN106575218A CN201580045704.3A CN201580045704A CN106575218A CN 106575218 A CN106575218 A CN 106575218A CN 201580045704 A CN201580045704 A CN 201580045704A CN 106575218 A CN106575218 A CN 106575218A
- Authority
- CN
- China
- Prior art keywords
- persistent storage
- data
- processor
- instruction
- storage
- 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
- 230000002085 persistent effect Effects 0.000 title claims abstract description 404
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000003860 storage Methods 0.000 claims abstract description 557
- 230000004044 response Effects 0.000 claims abstract description 22
- 230000004888 barrier function Effects 0.000 claims description 260
- 239000000872 buffer Substances 0.000 claims description 120
- 230000008569 process Effects 0.000 claims description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000004519 manufacturing process Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 40
- 238000013500 data storage Methods 0.000 description 18
- 210000004027 cell Anatomy 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 12
- 230000004048 modification Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000005538 encapsulation Methods 0.000 description 9
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 210000004940 nucleus Anatomy 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000002045 lasting effect Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000000151 deposition Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000005611 electricity Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 244000166124 Eucalyptus globulus Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000005621 ferroelectricity Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006911 nucleation Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0875—Addressing 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Abstract
一方面的一种处理器包括对持久性存储屏障指令解码的解码单元。所述处理器还包括与解码单元耦合的存储器子系统模块。所述存储器子系统模块响应于持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前将与持久性存储屏障指令对应的给定数据持久性地存储在持久性存储装置中。后续存储指令在原始程序次序中出现在持久性存储屏障指令之后。还公开了其他处理器、方法、系统和制品。
Description
技术领域
本文描述的实施例一般地涉及存储数据。特别地,本文描述的实施例一般地涉及在持久性存储器中存储数据。
背景技术
处理器通常可操作来执行指令以访问存储器。例如,处理器可以执行加载指令以从主存储器加载或读取数据,和/或执行存储指令以将数据写入或以其他方式存储到主存储器。
加利福利亚圣克拉拉的Intel公司在2014年6月发布的订单编号为325462-051US的Intel®64和IA-32架构软件开发者手册联合卷:1、2A、2B、2C、3A、3B和3C描述了用于对存储操作串行化的SFENCE(存储屏障(fence))指令。SFENCE指令可以对在SFENCE指令之前发出的所有存储到存储器指令实行串行化操作。该串行化操作可以保证在程序次序中在SFENCE指令前面的每个存储指令在跟随在SFENCE指令之后的任何存储指令之前变成是全局可见的。
附图说明
本发明可以通过参考以下描述和附图来最佳地理解,附图用于图示实施例。在附图中:
图1是其中可以实现本发明实施例的计算机系统的实施例的框图。
图2是可操作来实行持久性存储屏障指令的实施例的处理器的实施例的框图。
图3是实行持久性存储屏障指令的实施例的方法的实施例的方框流程图。
图4是具有持久性存储屏障缓冲器的示例实施例的存储器子系统模块的示例实施例的框图。
图5是用于持久性存储屏障缓冲器的高速缓存行的示例实施例的框图,所述持久性存储屏障缓冲器具有与不同的持久性存储屏障指令对应的数据。
图6是具有数据和写入前(write ahead)日志的持久性存储器的实施例的框图。
图7是在没有本文所公开的持久性存储屏障指令的情况下实行的写入前记录日志(logging)的一种可能方法的方框流程图。
图8是利用持久性存储屏障指令的实施例实行的写入前记录日志的方法的示例实施例的方框流程图。
图9是图示用于持久性存储屏障缓冲器的实施例的各种合适位置的框图。
图10A是图示有序流水线的实施例和寄存器重命名乱序发出/执行流水线的实施例的框图。
图10B是包括耦合到执行引擎单元的前端单元并且二者都耦合到存储器单元的处理器核的实施例的框图。
图11A是单个处理器核连同其到管芯上互连网络的连接并且具有其2级(L2)高速缓存的本地子集的实施例的框图。
图11B是图11A的处理器核的部分的放大视图的实施例的框图。
图12是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图13是计算机架构的第一实施例的框图。
图14是计算机架构的第二实施例的框图。
图15是计算机结构的第三实施例的框图。
图16是片上系统架构的实施例的框图。
图17是根据本发明的实施例的将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文公开了持久性存储屏障指令、用于执行指令的处理器、当处理或执行指令时处理器所实行的方法,以及并入用于处理或执行这些指令的一个或多个处理器的系统。在下面的描述中,阐述了许多具体细节(例如,具体指令操作、处理器配置、微架构细节、操作序列、指令的使用等)。然而,实施例可以在没有这些具体细节的情况下被实践。在其他实例中,公知的电路、结构和技术尚未被详细示出以避免混淆对本说明书的理解。
图1是其中可以实现本发明的实施例的计算机系统100的实施例的框图。计算机系统包括处理器102、可选的易失性或其他方式的非持久性存储装置122以及非易失性或其他方式的持久性存储装置124。非持久性存储装置122是可选的不是必需的。处理器可以通过一个或多个互连结构120(诸如例如一个或多个总线或其他互连、一个或多个集线器或其他芯片组组件、它们的组合等)与非持久性存储装置122和持久性存储装置124耦合。本领域中已知的将处理器与易失性和非易失性存储器耦合的各种方式是合适的。
易失性存储器表示当未施加电力时丢失其内容的存储器或存储装置类型。相对的,非易失性存储器表示当未施加电力时能够在长持续时间内保留其内容的存储器或存储装置类型。例如,甚至在没有电力数周、数月或数年之后,也可以从非易失性存储器读取数据。合适类型的非持久性存储装置的示例包括但不限于动态随机存取存储器(DRAM)和其他形式的RAM,包括将来开发出的类型。合适类型的持久性存储装置的示例包括但不限于硬盘、磁带、其他类型的磁存储设备、闪速存储器、各种类型的只读存储器(ROM)、光盘、铁电RAM(F-RAM)和磁阻RAM,以及将来开发出的其他类型。
在一些实施例中,非持久性存储装置122和持久性存储装置124二者可以可选地一起或共同地用作主要存储装置并且二者可以是对处理器可访问的(例如,由处理器可寻址的)。在其他实施例中,非持久性存储装置122可以可选地被省略,并且持久性存储装置124可以用作是对处理器可访问的(例如由处理器可寻址的)主要存储装置。在再其他实施例中,非持久性存储装置122可以被部署为主要存储装置(例如,主存储器)并且持久性存储装置可以部署为辅助或后援存储装置,但是持久性存储装置可以对处理器是可访问的(例如由处理器可寻址的)。
处理器102具有指令集104。指令集是处理器的指令集架构(ISA)的部分,并且包括处理器可操作来执行的原生指令。指令集的指令表示被提供给处理器以供执行的宏指令、汇编语言指令、或机器级指令,其与微指令或已经从指令集的此类指令解码的其他指令是相反的。如所示,指令集可以包括一个或多个加载指令106,用于从非持久性和/或持久性存储装置加载或读取数据。指令集还包括一个或多个存储指令108,用于将数据移动到、写入或以其他方式存储在非持久性和/或持久性存储装置中。
处理器具有用于处理指令集的指令的流水线112。通过示例的方式,流水线可以包括取出指令的取出指令单元、对指令进行解码的解码单元、执行经解码的指令的一个或多个执行单元等。本领域中已知的各种不同的处理器流水线设计是合适的。本发明的范围不限于任何已知的流水线设计。处理器还具有与非持久性和/或持久性存储装置对接的存储器子系统114。存储器子系统可以包括一个或多个高速缓存118(例如,一级或多级高速缓存)。例如,某些处理器具有组合的1级(L1)指令和数据高速缓存和2级(L2)数据高速缓存,1级(L1)指令和数据高速缓存离流水线相对较近和/或离持久性存储装置较远,2级(L2)数据高速缓存离流水线相对较远和/或离持久性存储装置较近。其他处理器可以具有单级高速缓存,或者三级或更多不同级高速缓存。每个高速缓存可以保持指令和/或数据,如对于具体实现所期望的。
对于(一个或多个)高速缓存118的一个原因是帮助减少处理器对非持久性和/或持久性存储装置中的数据的访问的等待时间。对非持久性和/或持久性存储装置中的数据的访问一般趋向于比对(一个或多个)高速缓存中的数据的访问显著更慢。例如,通常来说,对(一个或多个)高速缓存中的数据的访问花费不多于几个处理器时钟周期,而对主要存储装置中的数据的访问可能代表性地花费从数十到数百个时钟周期。结果,为了帮助改进性能,处理器可以将某些数据(例如,具有空间和/或时间局部性的数据)从非持久性和/或持久性存储装置引入到(一个或多个)高速缓存中,使得如果在不远将来再次需要相同数据,可以从(一个或多个)高速缓存快速地访问它而不是从非持久性和/或持久性存储装置更慢地访问它。
另外,(一个或多个)存储指令108可以不直接和/或立即将数据从处理器存储到非持久性和/或持久性存储装置。而是可以初始将数据缓存或存储在(一个或多个)高速缓存118中。再一次,这可以帮助在不远的将来再次需要该数据的情况中将该数据保持为接近处理器,和/或可以帮助避免对存储装置的较长等待时间访问。处理器的存储器子系统可以具有高速缓存一致性机构或模块116,其帮助确保数据在适当时间被一致地存储到非持久性和/或持久性存储装置,使得系统中的所有实体(例如,另一处理器)查看正确且当前的版本的数据。通过示例的方式,高速缓存一致性机构或模块可以帮助实现MESI协议,在所述MESI协议中,每个高速缓存行处于以下四个状态之一:已修改、独占、共享或无效。
将数据存储在持久性存储装置124(例如,非易失性存储器)中的一个优势是数据的持久性或耐久性。持久性或耐久性一般意味着在电力丢失、操作系统失效、系统崩溃、处理器失效、或大多数其他类型错误(例如,其中需要重新引导计算机系统)的情况下,存储的数据不会丢失。一旦将数据存储在持久性存储装置中,即使存在电力丢失、操作系统失效等,该数据典型地也被保留。此外,即使处理器失效或计算机系统归因于硬件失效而以其他方式失效,只要持久性存储装置幸存,一般就可以有可能恢复数据。相对的,存储在非持久性存储装置122中(例如,易失性存储器中)的数据一般不被视为是持久或耐久的。类似地,存储在(一个或多个)高速缓存118以及加载/存储缓冲器和/或处理器的各种其他临时缓存和/或缓冲结构(为了简单起见未在图示中示出)中的数据一般也不被视为是持久或耐久的。在电力丢失、操作系统失效、系统崩溃、处理器失效以及某些其他类型的错误的情况下,存储在非持久性存储装置、(一个或多个)高速缓存等中的此类数据可能丢失。
另外,某些应用和/或实现需要数据被持久性地或耐久性地存储。例如,在某些数据库应用和/或数据事务中,不丢失数据是非常重要的。而且,在一些应用和/或实现中,以特定次序持久性地和/或耐久性地存储数据(在另一数据段之前持久性地和/或耐久性地存储一个数据段)可能是有用的。通过示例的方式,在实现写入前记录日志、其他串行存储算法等中可能是这种情况。在一些实施例中,处理器的指令集104可以包括持久性存储屏障指令110的实施例,持久性存储屏障指令110使得或确保在实行数据到持久性存储装置124的后续存储之前,实行数据到持久性存储装置124的相关联存储。
图2是可操作来实行持久性存储屏障指令210的实施例的处理器202的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、甚长指令字(VLIW)架构、混合架构、其他类型的架构中的任一个,或者具有不同架构的组合(例如,不同的核可以具有不同架构)。
在操作期间,处理器202可以执行、运行或实行代码230(例如,程序)。例如,可以将代码从持久性存储装置224和/或可选非持久性存储器(未示出)取出、加载或以其他方式接收到处理器中。以虚线示出持久性存储装置224以指示其一般不是处理器的部分。代码可以包括各种不同类型的指令。在那些指令当中,代码包括持久性存储屏障指令210。在一些实施例中,持久性存储屏障指令自身可以可选地是用于将数据移动、写入或以其他方式存储到持久性存储装置224的持久性存储指令(例如,指令210可以是持久性存储和持久性存储屏障指令)。此类持久性存储和持久性存储屏障指令210可以具有用于将关联的数据存储到持久性存储装置224的可选的关联的持久性存储操作228。在此类实施例中,指令210可以显式地指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式地指示)源操作数,所述源操作数具有要存储到持久性存储装置的数据。指令210可以显式地指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式地指示)数据要存储在其中的持久性存储装置224中的地址或其他位置。注意,在一些实施例中,持久性存储装置224可以是通过处理器的指令集的指令可寻址的。替代地,在其他实施例中,持久性存储屏障指令可能不具有关联的持久性存储操作228。例如,持久性存储屏障指令可以被设计为或意图与分离但是相关的持久性存储指令208E一起工作,持久性存储指令208E操作为将数据存储到持久性存储装置224。例如,分离的持久性存储指令208E可以被设计为或隐式地理解为在原始程序或代码次序中处于持久性存储屏障指令210(例如,紧接)之前(或替代地,(例如,紧接)之后)。代码还可以包括一个或多个持久性存储指令208L的集合,其在程序次序中比持久性存储屏障指令210更晚和/或在其之后出现。在原始程序或代码次序中,较早持久性存储指令208E也比所有(一个或多个)较晚持久性存储指令208L更早和/或在其之前出现。
再次参考图2,处理器包括解码单元或解码器226。解码单元可以接收并解码持久性存储屏障指令210。持久性存储屏障指令可以表示宏指令、汇编语言指令、机器代码指令,或者处理器的指令集的其他指令或控制信号。解码单元可以输出一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等),所述一个或多个相对较低级的指令或控制信号反映、表示相对较高级的持久性存储屏障指令和/或从相对较高级的持久性存储屏障指令导出。在一些实施例中,解码单元可以包括接收指令的一个或多个输入结构(例如,(一个或多个)端口、(一个或多个)互连、接口)、与之耦合以识别和解码指令的指令识别和解码逻辑以及与之耦合以输出(一个或多个)较低级指令或(一个或多个)控制信号的一个或多个输出结构(例如,(一个或多个)端口、(一个或多个)互连、接口)。解码单元可以使用各种不同的机构来实现,包括但不限于:微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及本领域已知的用于实现解码单元的其他机构。
在一些实施例中,取代将持久性存储屏障指令直接提供给解码单元,可以可选地使用指令仿真器、翻译器、变形器、解释器或其他指令转换模块。各种类型的指令转换模块在本领域中已知并且可以以软件、硬件、固件或它们的组合来实现。在一些实施例中,指令转换模块可以位于处理器外部,诸如例如在分离的管芯上和/或存储器中(例如,作为静态、动态或运行时仿真模块)。通过示例的方式,指令转换模块可以接收可以是第一指令集的指令的持久性存储屏障指令,并且可以将持久性存储屏障指令仿真、翻译、变形、解释或以其他方式转换成一个或多个对应的中间指令或控制信号,所述中间指令或控制信号可以是第二不同指令集的指令。可以将第二指令集的一个或多个中间指令或控制信号提供给解码单元(例如,解码单元226),所述解码单元可以将它们解码成由处理器的原生硬件(例如,存储器子系统模块)可执行的一个或多个较低级指令或控制信号。
再次参考图2,存储器子系统模块214与解码单元226耦合。存储器子系统模块可以接收一个或多个经解码的或经其他方式转换的指令或控制信号,所述经解码的或经其他方式转换的指令或控制信号表示持久性存储屏障指令和/或是从持久性存储屏障指令导出的。在其中持久性存储屏障指令是持久性存储和持久性存储屏障指令的实施例中,存储器子系统模块还可以接收关于以下的数据:由指令210指定或指示的源操作数,和由指令210指定或指示的其中要存储数据的持久性存储装置224中的地址或位置的指示。存储器子系统模块操作为响应于持久性存储屏障指令和/或作为持久性存储屏障指令的结果(例如,响应于从指令解码出的一个或多个指令或控制信号),而使得和/或确保在将来自所有之后或后续存储操作和/或指令(即,在原始程序次序中在给定存储操作之后出现的那些)的数据持久性地和/或耐久性地存储在持久性存储装置中之前,将与持久性存储屏障指令对应的该给定存储操作(例如,存储操作228或存储指令208E)的数据持久性地和/或耐久性地存储在持久性存储装置224中。在一些实施例中,持久性存储屏障指令可以不使得和/或确保在来自所有之后或后续存储操作和/或指令的数据之前将所有在先存储操作和/或指令的数据持久性地和/或耐久性地存储在持久性存储装置中,而是可以仅针对给定存储操作选择性地实行该屏障。也就是说,不需要对所有在先存储指令和/或操作进行屏障,而是仅对给定存储指令和/或操作进行屏障。这可以帮助避免对所有在先存储指令和/或操作进行屏障的较高性能成本。在一些实施例中,来自这些其它未被屏障的存储指令和/或操作的数据可以被存储在(一个或多个)处理器高速缓存中,而来自给定被屏障的存储指令和/或操作的数据可以是非暂时的并且可以绕过(一个或多个)高速缓存并被存储在不同的持久性存储屏障缓冲器(例如,缓冲器446)中。
在一些实施例中,持久性存储屏障指令是具有给定存储操作(例如,存储操作228)的持久性存储和持久性存储屏障指令。在此类实施例中,在一些情况中,持久性存储和持久性存储屏障指令可以是非暂时指令,其执行操作为使得要存储到持久性存储器224的数据绕过并且不存储在处理器的一个或多个高速缓存(未示出)中。在其他实施例中,给定存储操作可以对应于(例如,紧接)在持久性存储屏障指令之前或之后的分离但相关的指令(例如,存储指令208E)。在一些实施例中,持久性存储屏障指令使得给定存储操作的对应数据被存储在新的专用持久性存储屏障缓冲器(例如,图4中的缓冲器446)中。在一些实施例中,缓冲器可以可选地仅写入,和/或可以不实现由处理器的一个或多个高速缓存使用的高速缓存一致性协议(例如,可以不使用由处理器实现的MESI协议)。在一些实施例中,如将在下文进一步描述的,持久性存储屏障缓冲器可以实现写入组合,以允许与不同持久性存储屏障指令对应的数据被存储或组合在相同高速缓存行中。在一些实施例中,如将在下文进一步描述的,持久性存储屏障指令可以用于将数据存储到写入前日志以便改进写入前记录日志的性能。
存储器子系统模块和/或处理器可以包括具体或特定逻辑(例如,晶体管、集成电路,或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其他硬件),其可操作来响应于持久性存储屏障指令和/或作为持久性存储屏障指令的结果(例如,响应于从持久性存储屏障指令解码出的一个或多个指令或控制信号)而实行持久性存储屏障指令和/或存储结果。在一个方面,存储器子系统模块也可以一般地被视为执行经解码的持久性存储屏障指令的执行单元,和/或被视为实行经解码的持久性存储屏障指令的单元。在一些实施例中,存储器子系统模块可以包括针对图4-5中的一个或多个示出和描述的电路或逻辑,所述电路或逻辑是合适实现的说明性示例,但是本发明的范围不限于此。
有利地,持久性存储屏障操作可以用于使得、确保或保证来自给定存储操作的数据在来自所有后续存储操作的数据之前被存储在持久性存储装置中。一旦数据在持久性存储装置中,其是持久性的和/或耐久性的。这可以在某些实现中提供某些优势。例如,这可以帮助增加实行写入前记录日志的效率,如将在下文进一步讨论的,但是本发明的范围不限于此。在其他实例中,这可以用于针对各种其他类型的算法和/或出于其他原因串行化持久性存储。
与背景技术部分中讨论的SFENCE指令相比较,SFENCE指令不串行化到持久性存储装置的存储,和/或不串行化持久性或耐久性。相反,SFENCE指令可以用于屏障或串行化到主存储器(例如,DRAM或其他易失性存储器)的存储的全局可见性,但是在某些条件(例如,电力失效、操作系统失效、处理器失效、系统崩溃等)的情况下此类数据可能丢失。作为结果,此类指令不能串行化数据存储操作的持久性或耐久性。另外,SFENCE指令相对于所有跟随的存储指令屏障或串行化所有在先存储指令,而在一些实施例中,持久性存储屏障指令可以相对于所有跟随的存储指令和/或操作仅串行化单个给定的对应存储指令和/或操作。
为了避免使描述模糊,已经示出和描述了相对简单的处理器202。然而,处理器可以可选地包括其他公知的处理器组件。此类组件的可能示例包括但不限于:通用寄存器、状态寄存器(有时称为标记寄存器)、系统控制寄存器、指令取出单元、预取缓冲器、指令转换后备缓冲器(TLB)、数据TLB、分支预测单元、浮点执行单元、SIMD或矢量执行单元、乱序执行支持单元(例如,指令调度单元、寄存器重命名和/或分配单元、指令分派单元、重排序缓冲器(ROB)、保留站、存储器排序缓冲器、退役单元等)、总线接口单元、地址生成单元、调试单元、性能监视单元、功率管理单元、包括在处理器中的其他组件以及它们的各种组合。此类组件可以以本领域已知的各种不同的合适组合和/或配置耦合在一起。实施例不限于任何已知的此类组合或配置。此外,可以包括在处理器中的实施例具有多个核,其中的至少一个核操作为实行持久性存储屏障指令。
图3是实行持久性存储屏障指令的实施例的方法340的实施例的方框流程图。在各种实施例中,该方法可以由处理器、指令处理装置或其他数字逻辑设备来实行。在一些实施例中,方法340可以由图1的处理器102和/或图2的处理器202来实行,和/或在图1的处理器102和/或图2的处理器202内实行。本文针对处理器102、202描述的组件、特征以及特定可选细节也可选地适用于方法340。替代地,方法340可以由类似或不同处理器或装置来实行,和/或在类似或不同处理器或装置内实行。此外,处理器102、202可以实行与方法340相同、类似或不同的方法。
该方法包括在框341处接收持久性存储屏障指令。在各个方面,指令可以在处理器处或在其部分(例如,指令取出单元、解码单元、总线接口单元等)处被接收。在各个方面,可以从处理器外和/或管芯外源(例如,从存储器、互连等)或者从处理器上和/或管芯上源(例如,从指令高速缓存、指令队列等)接收指令。
该方法包括在框342处保证、确保、迫使或以其他方式使得:在将来自所有后续存储指令(即,在原始程序次序中在持久性存储指令之后的存储指令)持久性地存储在持久性存储装置中之前,将与持久性存储屏障指令对应或相关的给定数据持久性地存储在持久性存储装置中。在一些实施例中,该方法还可以包括响应于持久性存储指令(例如,在持久性存储和持久性存储屏障指令的情况中)而存储给定数据,但是这不是必需的。在一些实施例中,指令可以使得将给定数据绕过处理器高速缓存非暂时地存储到持久性存储屏障缓冲器(例如,缓冲器446),但是本发明的范围不限于此。
图4是存储器子系统模块414的示例实施例并且图示了持久性存储屏障缓冲器446的示例实施例的框图。持久性存储装置424与存储器子系统模块耦合。持久性存储装置可以与之前描述的那些类似或相同。
可以将一个或多个经解码的持久性存储屏障指令和/或操作411的集合提供给存储器子系统模块414。在该示例中,为了简单起见,假设被解码的持久性存储屏障指令被并入了持久性存储操作(例如,存储操作228),但是本发明的范围不限于此。存储器子系统模块包括持久性存储屏障缓冲器446和对应的持久性存储屏障缓冲器管理单元444。缓冲器管理单元操作为管理持久性存储屏障缓冲器,例如以管理数据在缓冲器中的存储、数据从缓冲器的清除(flush)或其他移除。管理单元可以以硬件(例如,集成电路、晶体管或其他电路元件等)、固件(例如,ROM、EPROM、闪速存储器或其它持久性或非易失性存储器,以及存储在其中的微代码、微指令或其他较低级指令)、软件(例如,存储在存储器中的较高级指令)或者其组合(例如,潜在地与固件和/或软件中的一个或多个组合的硬件)来实现。
持久性存储屏障缓冲器446操作为暂时地缓冲或存储与持久性存储屏障指令相关联的数据(例如,来自存储操作228或存储指令208E的数据)。本发明的范围不限于用于持久性存储屏障缓冲器的任何特定类型的存储器。各种类型的易失性存储器是合适的,诸如例如,静态随机存取存储器(SRAM)、用于实现处理器高速缓存的类型的存储器等。实际上,可以与处理器一起制造在管芯上的任何类型的存储器或数据存储设备潜在地是合适的。在一些实施例中,持久性存储屏障缓冲器可以可选地与处理器高速缓存类似地组织并且可以具有多个高速缓存行448。如所示,持久性存储屏障缓冲器可以具有高速缓存行0 448-0、高速缓存行L 448-L、直到高速缓存行N 448-N,其中N可以表示对于特定实现合适的任何期望的数字。在一些实施例中,可以存在大约从约四到约几百个高速缓存行、或者从约八到约一百二十八个高速缓存行,但是本发明的范围不限于此。
在一些实施例中,与(一个或多个)处理器高速缓存相对的,持久性存储屏障缓冲器可以可选地仅写入而一般不可读。例如,处理器(例如,核)可能一般不能实行常规用户级从存储器加载指令以从持久性存储屏障缓冲器加载或读取数据。应当意识到的是,在某些受限环境下,处理器可能能够读取持久性存储屏障缓冲器的内容,例如在调试或测试期间(例如,在内建自测试(BIST)期间)。在一些实施例中,除了与维持可以用于实现持久性存储屏障的(一个或多个)高速缓存418中的高速缓存一致性有关的那些操作之外,在持久性存储屏障缓冲器中可以不维持高速缓存一致性。例如,(一个或多个)高速缓存可以实现MESI协议(例如,高速缓存的高速缓存行可能每个具有两个MESI位),而持久性存储屏障缓冲器可能不是(例如,缓冲器的高速缓存行可能不具有两个MESI位)。
高速缓存一致性模块416与持久性存储屏障缓冲器管理模块444耦合。在一些实施例中,当高速缓存一致性模块确定要从处理器的一个或多个高速缓存418逐出、清除、或以其他方式移除高速缓存行时,高速缓存一致性模块可以在实际从(一个或多个)高速缓存清除或移除高速缓存行之前,将指示、通知或其他信号450(例如,清除高速缓存行信号的意图)提供给持久性存储屏障缓冲器管理单元。信号450可以向管理单元指示、通知、传达或以其他方式用信号告知即将从(一个或多个)高速缓存清除或以其他方式移除高速缓存行,并且可以帮助允许管理单元在来自(一个或多个)高速缓存的一个或多个高速缓存行被清除并变得是持久性的之前,将所述高速缓存行从缓冲器清除或以其他方式移除或存储到持久性存储器。在一些实施例中,为了维持持久性存储屏障,持久性存储屏障缓冲器管理单元可以实行缓冲器清除、逐出或其他移除操作452,以将高速缓存行(例如,高速缓存行L 448-L)从持久性存储屏障缓冲器清除、逐出或以其他方式移除或存储到持久性存储装置。在一些实施例中,处理器和/或存储器子系统模块可以保证和/或确保和/或使得:这在与信号450相关联的高速缓存清除或其他高速缓存行移除操作454被实行以将高速缓存行从(一个或多个)高速缓存418清除到持久性存储装置之前响应于关联的持久性存储屏障指令而发生。缓冲器可以基于来自高速缓存一致性模块的高速缓存行即将被逐出或清除的信号而在后台透明地清除到持久性存储器。在一些实施例中,当任何高速缓存行从(一个或多个)高速缓存清除到持久性存储装置时,整个持久性存储屏障缓冲器可以可选地清除到持久性存储装置。这可以帮助提供相对较简单的实现。在其他实施例中,附加信息可以可选地存储在持久性存储屏障缓冲器中,以允许基于从(一个或多个)高速缓存清除单独的对应高速缓存行而将缓冲器中的单独的高速缓存行选择性地清除到持久性存储装置。
在一些实施例中,直到就在高速缓存行即将从(一个或多个)高速缓存清除或移除到持久性存储装置和/或后续存储操作即将变得持久性地存储在持久性存储装置中之前,持久性存储屏障缓冲器中的数据可以不需要清除或移除到持久性存储装置。除了当需要时之外一般避免清除缓冲器帮助避免相对长等待时间存储器访问。有利地,持久性存储屏障缓冲器可以帮助避免需要等待与持久性存储屏障指令对应的数据被存储到持久性存储装置并变得是持久性的。如果此类数据被直接存储到持久性存储装置,一般将需要一般而言长得多的等待时间操作(例如,将数据存储到持久性存储器通常花费大约数十个到数百个时钟周期)。在一些实施例中,可以在不多于几个时钟周期(例如,不多于约五个时钟周期)中将数据存储在持久性存储屏障缓冲器中。
在一些实施例中,在不同的持久性存储屏障指令之间可以可选地没有持久性次序要求。在一些实施例中,这可以可选地通过允许与多个不同持久性存储屏障指令对应的数据被存储在持久性存储屏障缓冲器中的相同高速缓存行中,来帮助允许持久性存储屏障指令的甚至更高效的实现。
图5是具有与不同持久性存储屏障指令511-1、511-2对应的数据560-1、560-2的持久性存储屏障缓冲器的高速缓存行548的示例实施例以及在一个或多个互连520上的相同信号或周期中的高速缓存行到持久性存储器524的高速缓存行存储操作552的示例实施例的框图。第一持久性存储屏障指令511-1可以具有可以存储在高速缓存行中的第一关联或对应的数据560-1。同样,第二持久性存储屏障指令511-2可以具有可以与数据560-1同时地并且在相同高速缓存行中存储的第二关联或对应的数据560-2。在一些实施例中,这可以通过持久性存储屏障缓冲器中的写入组合操作来实行。也就是说,持久性存储屏障缓冲器可以表示写入组合缓冲器。
之后,在适当时间(例如,基于从高速缓存一致性模块接收的意图清除高速缓存行信号),可以通过高速缓存行存储操作552将高速缓存行548清除、逐出或以其他方式移除或存储到持久性存储装置524。高速缓存行存储操作可以存储具有与不同持久性存储屏障指令511-1、511-2对应的第一数据560-1和第二数据560-2的高速缓存行。在一些实施例中,可以在一个或多个互连520上的单个周期或信号和/或一个或多个周期或信号的公共集合中实行高速缓存行存储操作(例如,数据560-1和560-2二者可以在一个或多个总线周期的相同集合上行进)。也就是说,与多个不同持久性存储屏障指令对应的数据可以在相同总线或互连周期中写入或以其他方式存储到持久性存储器。为了简单起见,在该示例中描述了来自仅两个不同持久性存储屏障指令的数据,但是在一些情况中,来自三个或更多个不同持久性存储屏障指令的数据可以潜在地组合在相同高速缓存行中。有利地,将与不同持久性存储屏障指令对应的数据组合在相同高速缓存行中并实行对持久性存储器的单个高速缓存行写入的此类能力可以帮助避免或消除到持久性存储器的一个或多个相对长等待时间的存储。另外,这还可以帮助降低引向持久性存储器的一个或多个互连上的带宽的量。
处理器和/或存储器子系统单元可以实行数据到持久性存储屏障缓冲器的有序存储,并且当随后从持久性存储屏障缓冲器清除或移除数据时,相同高速缓存行中的所有数据可以原子地写入到持久性存储装置。通过有序,意味着数据可以以与对应持久性存储屏障指令的原始程序次序相同的次序存储在持久性存储屏障缓冲器中。在一些实施例中,可以从持久性存储屏障缓冲器乱序地清除或移除不同高速缓存行,以完全利用底层持久性存储器系统中的存储器并行性。通过乱序,意味着可以以与对应的持久性存储屏障指令的原始程序次序不同的次序从持久性存储屏障缓冲器清除或移除数据。
在一些实施例中,本文公开的指令和处理器可以用于改进写入前记录日志的效率。写入前记录日志是用于当修改数据时实现原子性和耐久性/持久性的已知技术。图6是具有数据664和写入前日志662的持久性存储器624的实施例的框图。持久性存储器可以表示任何之前描述类型的持久性存储器。数据可以表示计算机系统、数据库等中使用的各种不同类型的数据。合适数据的示例包括但不限于文件、记录、数据结构、表、数据库记录、图像、视频等。写入前日志一般位于持久性存储器的与数据相比不同的区域中。在图示中,虚线用于指示写入前日志可以可选地位于或存储在与数据相比不同的持久性存储设备(例如,不同盘)上。这还可以帮助确保数据耐久性/持久性(例如,在盘失效的情况下),但是不是必需的。
在写入前记录日志中,数据和/或对数据的修改可以在对数据的修改实际被存储盖在持久性存储器中的数据之上之前写入到写入前日志。例如,在改变或修改给定数据段670之前,给定数据段668的未经修改副本可以存储在写入前日志662中。以该方式,即使电力丢失或在给定数据段正在处理器内被修改时可能使得给定数据段从非持久性(例如,易失性)存储器(例如,处理器高速缓存)丢失的其他事件发生,也可以在该事件已经发生之后从写入前日志恢复给定数据段的副本。有利地,这可以帮助防止给定数据段在被修改时丢失,甚至在面对电力失效或各种其他潜在灾难性错误时。为了进一步说明,如果当计算机系统经历电力丢失或灾难性错误时程序正在实行修改数据集合的操作当中。当重启或重新引导时,程序一般需要知道操作是完全完成、部分完成还是整体失败。如果使用了写入前记录日志,则程序可以检查写入前日志以确定操作的什么部分在错误发生之前已经实际完成。程序可以使用该信息来决定如何继续进行和/或如何继续或重启操作。例如,程序可以重新尝试以如根据写入前日志所确定的第一未完成修改开始的操作。
写入前记录日志通常实现为事务,其中在相同事务内修改多个不同数据段。仅在已经成功地对所有不同数据段记录日志并且修改之后,并且经修改的数据段已经存储在持久性存储器中是成功完成的事务。一般,仅当事务整体成功完成时事务“已提交”。提交事务基本上声明整个事务已经成功完成,和/或指示所有尝试的修改已经成功完成并且已经存储在持久性存储器中。此时,不再需要存储或保留在写入前日志中的数据,因为即使灾难性事件发生,所有经修改的数据已经存储在持久性存储器中。写入前记录日志贯穿改变或修改向给定数据集合提供持久性和/或耐久性,因为在对给定数据集合做出任何改变之前给定数据集合的副本存储在持久性存储器中。另外,写入前记录日志提供原子性,因为在事务期间,通过提交或不提交整个事务来整体更新或不更新给定数据集合。
在写入前记录日志中,一般应当维持两个持久性次序。首先,一般应当维持日志持久性次序。根据日志持久性次序,要修改的原始数据应当在对应经修改的数据被存储在持久性存储装置中之前持久性地存储在持久性存储装置中的写入前日志中。否则,如果经修改的数据在持久性存储装置中被存储盖在原始数据之上并且要修改的原始数据在(一个或多个)高速缓存中并且尚未存储到持久性存储装置中的写入前日志,则如果灾难性事件(例如,电力失效)发生,要修改的原始数据未被保留并且可能丢失从而阻止在事务未成功完成的情况下的恢复。一般应当维持的第二持久性次序是提交持久性次序。根据提交持久性次序,事务中的所有经修改的数据应当在提交指示被持久性地存储到持久性存储装置中的写入前日志之前被持久性地存储到持久性存储装置。否则,如果提交指示在一些经修改的数据存储在(一个或多个)高速缓存中的同时被持久性地存储到持久性存储装置中的写入前日志,则该经修改的数据可能在灾难性事件期间丢失,尽管写入前日志中的提交指示将指示事务成功完成。一个挑战是:如果没有采取适当预防,则数据在一个或多个处理器高速缓存中的缓存可能违反这两个持久性次序中的一个或多个。高速缓存一般实现在易失性或以其他方式非持久性的存储装置中并且易受灾难性事件影响。
图7是在没有本文公开的持久性存储屏障指令的情况下实行的写入前记录日志的一种可能方法772的方框流程图。在框773处,将要修改或改变的持久性存储装置中的数据存储到持久性存储装置中的写入前日志。归因于在处理器中存在一个或多个高速缓存,要修改的数据可能不实际上直接存储在写入前日志中,而是可以缓存在这一个或多个高速缓存中。这些处理器高速缓存表示非持久性存储装置,并且可能在某些事件发生(例如,电力丢失等)时丢失它们的内容。
在框774处,将要修改的数据从一个或多个高速缓存移除(例如,清除)到持久性存储装置。例如,这可以利用高速缓存行清除类型的指令来实行。这一般被需要以便满足日志持久性次序。利用该方法的一个缺点是其一般花费大量时间和/或具有高等待时间,这归因于向持久性存储器写入或存储所需的时间(例如,大约数十到数百个时钟周期)。
然后,在框775处,要修改的数据可以实际上被修改。注意,在框775处对数据的修改在框774处已经将要修改的数据从一个或多个高速缓存移除到持久性存储装置之后发生,由此确保要修改的数据的副本被持久性地存储在持久性存储装置中而不是在非持久性处理器高速缓存中。这帮助确保数据持久性/耐久性,如之前所描述的。
在框776处,做出是否存在要修改的更多数据的确定。如果存在要修改的更多数据(即,在框776处的确定为“是”),则方法可以重新拜访框773-775。相反,如果在该事务中不存在要修改的更多数据(即,在框776处的确定为“否”),则方法可以前进到框777。注意,对于在框773处将要修改的数据存储到写入前日志的时间与在框775处实际修改数据的时间之间修改的每个数据段,在框775处需要将要修改的数据从(一个或多个)高速缓存清除到持久性存储装置(即,实际存储在持久性存储装置中的写入前日志中而不是在高速缓存中)。关于所有这些清除的缺点是它们花费大量时间来实行。
在框777处,将所有经修改的数据从(一个或多个)高速缓存移除(例如,清除)到持久性存储装置。这被实行是因为在框775处对数据的修改可能未实际将经修改的数据存储在持久性存储装置中而是在(一个或多个)高速缓存中。这一般需要在将提交指示存储在持久性存储装置中的写入前日志中之前完成,以便满足提交持久性次序。
然后,在框778处,可以将提交指示存储到写入前日志。提交指示可以指示事务已经成功完成,如之前所描述的。在框779处,可以将提交指示从(一个或多个)高速缓存移除(例如,清除)到持久性存储装置。
如果在提交指示被存储在写入前日志中之前已经发生了灾难性事件,则可以使用写入前日志中的原始数据将事务的所有部分数据更新恢复回它们的原始数据。相反,如果在提交指示被存储在写入前日志之后发生灾难性事件,则没有恢复的需要,因为所有数据更新已经成功完成。
如之前所描述的,在框775处的每个数据更新之前在框774处从(一个或多个)高速缓存移除(例如,清除)要修改的数据趋向于花费过量时间。在一些实施例中,因为经更新的数据典型地停留在高速缓存中,所以可能直到将经修改的数据实际从(一个或多个)高速缓存存储回持久性存储装置之前都没有需要将要修改的数据从(一个或多个)高速缓存移除(例如,清除)到持久性存储装置,这在许多实现中是相对不频繁的(例如,归因于程序中的数据局部性)。在此类实现中,可以通过省略在框774处对数据的此类移除(例如,清除)来实现显著更高效的写入前记录日志。不幸的是,将经修改的数据从(一个或多个)高速缓存写回到持久性存储装置一般由硬件(例如,由高速缓存一致性模块)实行,并因此在许多实现中未在软件的控制下。应注意的是,一些合适的实现可以替代地实行软件控制的高速缓存一致性。
图8是利用持久性存储屏障指令的实施例实行的写入前记录日志的方法880的示例实施例的方框流程图。在一些实施例中,在框881处,利用(或结合)持久性存储屏障指令的实施例,可以将要修改或改变的持久性存储装置中的数据存储到持久性存储装置中的写入前日志。持久性存储屏障指令本身可以存储数据,或对应的单独的存储指令可以存储数据,如之前所描述的。在一些实施例中,可以初始地和/或暂时地将数据存储在持久性存储屏障缓冲器(例如,缓冲器446)中。在一些实施例中,持久性存储屏障指令可以是非暂时指令并且数据可以绕过(一个或多个)处理器高速缓存。这可以帮助避免数据占据(一个或多个)高速缓存中的空间和/或污染(一个或多个)高速缓存。
然后,在框882处,可以实际修改要修改的数据。该经修改的数据可以初始地和/或暂时地被缓存在(一个或多个)处理器高速缓存中。
显著地,在框883处,处理器响应于持久性存储屏障指令而可以确保、保证或迫使要修改的数据在经修改的数据从(一个或多个)高速缓存移除(例如,清除、逐出等)并持久性地存储到持久性存储装置之前被移除(例如,清除、逐出等)并持久性地存储到持久性存储装置。有利地,没有需要将要修改的数据从(一个或多个)高速缓存清除或以其他方式移除到持久性存储装置,如在图7中的框774处实行的。显著地,这可以帮助避免对于每个修改的数据段的相对高等待时间的存储器访问操作(例如,从数十到数百个时钟周期)。持久性屏障指令可以确保仍然维持日志持久性次序。值得注意的是,在许多情况中,除了如果刚好在经修改的数据被持久性地存储到持久性存储装置之前或者直到刚好在经修改的数据持久性地存储到持久性存储装置之前,要修改的数据可以未被实际持久性地存储到持久性存储装置。如果经修改的数据未被存储到持久性存储装置,指令不保证要修改的数据被存储在持久性存储装置中。
在框884处,做出是否存在要修改的更多数据的确定。如果存在要修改的更多数据(即,在框884处的确定为“是”),则方法可以重新拜访框881-883。相反,如果在该事务中不存在要修改的更多数据(即,在框884处的确定为“否”),则方法可以前进到框885。
在框885处,将所有经修改的数据从(一个或多个)高速缓存移除(例如,清除)到持久性存储装置。这被实行是因为在框882处对数据的修改可能未实际将经修改的数据存储在持久性存储装置中而是在(一个或多个)高速缓存中。然后,在框886处,可以将提交指示存储到写入前日志。在框887处,可以将提交指示从(一个或多个)高速缓存移除(例如,清除)到持久性存储装置。
有利地,持久性存储屏障指令的使用可以帮助避免对于修改的每个数据段的相对高等待时间的存储器访问操作。在一些实施例中,如果所有经修改的数据能够适于或被存储在(一个或多个)高速缓存中,则算法可以在提交时将所有经修改的数据从(一个或多个)高速缓存清除到持久性存储装置之前仅将数据从持久性存储屏障缓冲器清除或移除到持久性存储装置一次。进一步的,在一些实施例中,如果持久性存储屏障缓冲器能够将与不同持久性存储屏障指令对应的数据写入组合在相同高速缓存行中,则这可以进一步帮助避免到持久性存储装置的一些长等待时间的数据写入。
在一些实施例中,软件可以在高速缓存行单元中实现携带序列号的写入前日志。在从持久性存储屏障缓冲器清除或移除高速缓存行期间系统崩溃的情况中,仅具有正确序列号的连续日志可以用于恢复数据。例如,序列号1、2、3和5可能存在,但是序列号4可能缺失。当进行恢复时,序列号具有关于哪些需要恢复和哪些不需要的信息。
尽管以上描述已经强调了写入前记录日志,但是应意识到的是,本发明的范围不限于此。本文描述的持久性存储屏障指令是通用指令并且可以用于各种不同目的。另外,与写入前记录日志类似或相关的技术也可以受益于本文描述的持久性存储屏障指令。例如,在数据被修改之前将数据的副本存储到不同的持久性存储器位置的其他技术、在更新期间提供数据的原子性和耐久性的其他技术等可能潜在地受益。也可以受益的其他技术的示例包括但不限于文件系统更新中的影式分页、记日记(journaling)等。
图9是图示用于持久性存储屏障缓冲器的实施例的合适位置的各种示例的框图。计算机系统典型地具有数据的存储在其去往持久性存储装置的过程中通过的多个不同类型的组件。在所图示的示例中,这些组件包括存储缓冲器992、一级或多级高速缓存或高速缓存层级918(包括L1高速缓存993和L2高速缓存994)、存储器控制器996以及最终持久性存储装置924。存储可以潜在地缓存或缓冲在处理器流水线与持久性存储装置之间的这些或其他组件或硬件结构中的任何一个处。
持久性存储屏障缓冲器可以不同地位于这些组件或硬件结构当中和/或位于处理器流水线与持久性存储装置之间的各种不同距离处。取决于特定位置,从该硬件结构清除或移除的数据可以引致从持久性存储屏障缓冲器清除或移除数据。一般,持久性存储屏障缓冲器越靠近处理器流水线,在程序次序中在后续非持久性存储屏障指令能够将数据存储到高速缓存之前数据被存储到持久性存储屏障缓冲器所需的持久性存储屏障指令等待时间越低。另一方面,持久性存储屏障缓冲器越靠近处理器流水线,持久性存储屏障缓冲器清除操作将越频繁(例如,因为在缓冲器之前存在更少缓存),并且此类持久性存储屏障缓冲器清除操作的等待时间越高(例如,因为从持久性存储屏障缓冲器到持久性存储装置存在更长路径)。
在一些实施例中,如在参考A处所示,持久性存储屏障缓冲器可以位于或置于存储缓冲器992的输出与至持久性存储装置924的输入之间的各种地点处。在一些实施例中,如在参考B处所示,持久性存储屏障缓冲器可以可选地位于或置于最靠近处理器流水线的第一级高速缓存(例如,L1高速缓存993)的输出与存储器控制器996的输出之间的各种地点处。在一些实施例中,如在参考C处所示,持久性存储屏障缓冲器可以可选地位于或置于最后一级高速缓存(例如,L2高速缓存994或替代地L3高速缓存)的输出与存储器控制器的输入之间。在一些实施例中,如在参考D处所示,持久性存储屏障缓冲器可以可选地位于或置于两个不同级高速缓存之间(例如,L1高速缓存与L2高速缓存之间)。在一方面中,L1高速缓存可以专用于第一核990-1,而L2高速缓存可以由第一核和第二核990-2共享。在一些实施例中,如在参考E处所示,持久性存储屏障缓冲器可以可选地位于或置于存储器控制器内。本发明的范围不限于持久性存储屏障缓冲器的任何已知位置。持久性存储屏障缓冲器的期望位置可以由本领域技术人员在无需过度实验的情况下确定并且具有本公开的益处,从而基于持久性存储屏障指令等待时间、持久性存储屏障缓冲器清除开销或其他考虑的相对折衷而满足特定实现的需要。
在多核系统上,另一设计选择是将持久性存储屏障缓冲器放置在共享组件或硬件结构或每核私有或专用组件或硬件结构中。私有/专用硬件结构更靠近处理流水线,并且共享硬件结构更靠近持久性存储装置。将持久性存储屏障缓冲器放置在共享硬件结构处可能趋向于引入更多持久性存储屏障缓冲器清除,这归因于来自不同软件线程的数据更新改变。另一方面,将持久性存储屏障缓冲器放置在私有硬件结构处可能趋向于牵涉到在软件线程到不同核的操作系统上下文切换时清除持久性存储屏障缓冲器。这可能牵涉到用于在可能导致操作系统上下文切换的所有硬件中断和/或异常时清除持久性存储屏障缓冲器的硬件。在一些实施例中,可以可选地基于高速缓存行地址散列法(hashing)而将持久性存储屏障缓冲器划分成多个切片。这可以允许持久性存储屏障缓冲器在逐出任何高速缓存切片中的高速缓存数据的情况下在所有高速缓存切片中被清除。
示例性核架构、处理器和计算机架构
处理器核出于不同的目的以不同的方式并且在不同的处理器中实现。例如,这样的核的实现可以包括: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使用单独的寄存器组(分别是标量寄存器1112和矢量寄存器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。
因此,处理器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-16是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、台式计算机、手持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耦合到CL 1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。传统(legacy)I/O设备1515耦合到芯片组1490。
现在参考图16,示出了根据本发明的实施例的SoC 1600的框图。图12中的类似元件承载类似的附图标记。而且,虚线框是更高级的SoC上的可选特征。在图16中,(一个或多个)互连单元1602被耦合到:应用处理器1610,其包括一个或多个核202A-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。
针对图1、4-6和9中任一个描述的组件、特征和细节还可以可选地适用于图2-3中的任何一个。此外,针对装置中的任何一个描述的组件、特征和细节还可以可选地适用于在实施例中可以由和/或用这样的装置实行的方法中的任何一个。本文所述的处理器中的任何一个可以被包括在本文公开的计算机系统中的任何一个中。
在说明书和权利要求中,术语“耦合”和/或“连接”连同其派生可能已经被使用。这些术语不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可以意指两个或更多元件彼此直接物理和/或电接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但是仍彼此协作或交互。例如,单元可以通过一个或多个介入组件来与解码单元耦合。在附图中,箭头用于示出连接和耦合。
术语“和/或”可能已经被使用。如本文中所使用的,术语“和/或”意指一个或另一个或二者(例如,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到3中任一项的处理器,可选地,其中存储器子系统模块响应于持久性存储屏障指令而不确保:在后续存储指令的数据之前将所有在先存储指令的数据持久性地存储在持久性存储装置中,所述在先存储指令在原始程序次序中出现在持久性存储屏障指令之前。
示例5包括示例1到3中任一项的处理器,进一步包括一个或多个高速缓存的集合。而且,可选地,其中存储器子系统模块响应于持久性存储屏障指令而使得给定数据绕过一个或多个高速缓存的集合。
示例6包括示例1到5中任一项的处理器,进一步包括持久性存储屏障缓冲器,并且可选地,其中存储器子系统模块响应于持久性存储屏障指令而使得给定数据被存储在持久性存储屏障缓冲器中。
示例7包括示例6的处理器,进一步包括持久性存储屏障缓冲器管理单元,其在从高速缓存移除高速缓存行之前,基于指示从高速缓存移除该高速缓存行的意图的信号将至少一个高速缓存行从持久性存储屏障缓冲器存储到持久性存储装置。
示例8包括示例6到7中任一项的处理器,可选地,其中持久性存储屏障缓冲器包括写入组合缓冲器,所述写入组合缓冲器允许与第二持久性存储屏障指令对应的第二数据被存储在持久性存储屏障缓冲器的与给定数据相同的高速缓存行中。
示例9包括示例6到8中任一项的处理器,可选地,其中处理器的指令集不包括从持久性存储屏障缓冲器读取数据的用户级加载指令。
示例10包括示例6到9中任一项的处理器,可选地,其中持久性存储屏障缓冲器不实现高速缓存一致性协议。
示例11包括示例1到6中任一项的处理器,可选地,其中处理器在要在互连上传输的一个或多个周期的公共集合中将具有给定数据和与第二持久性存储屏障指令对应的第二数据的高速缓存行存储到持久性存储装置,所述互连用于将处理器与持久性存储装置耦合。
示例12是一种在处理器中的方法,其包括接收持久性存储屏障指令。所述方法还包括响应于持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将与持久性存储屏障指令对应的给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在持久性存储屏障指令之后。
示例13包括示例12的方法,可选地,其中接收指令包括接收存储和持久性存储屏障指令,其指示具有给定数据的源操作数并且其指示其中要存储给定数据的持久性存储装置中的位置。
示例14包括示例12的方法,进一步包括接收指示具有给定数据的源操作数的存储指令,可选地,其中存储指令是在原始程序次序中紧接在持久性存储屏障指令之前和紧接在持久性存储屏障指令之后中的一个。
示例15包括示例12到14中任一项的方法,进一步包括响应于持久性存储屏障指令而使得给定数据绕过处理器的一个或多个高速缓存的集合。
示例16包括示例12到15中任一项的方法,可选地,其中确保包括确保在将后续存储指令的数据持久性地存储在持久性存储装置中之前将给定数据持久性地存储在持久性存储装置中,而不确保在将所述所有后续存储指令的数据持久性地存储在持久性存储装置中之前将所有在先存储指令的数据持久性地存储在持久性存储装置中。所述在先存储指令在原始程序次序中出现在持久性存储屏障指令之前。
示例17包括示例12到16中任一项的方法,进一步包括在互连上传输的一个或多个周期的公共集合中将具有给定数据和与第二持久性存储屏障指令对应的第二数据的高速缓存行存储到持久性存储装置。
示例18包括示例12到17中任一项的方法,进一步包括响应于持久性存储屏障指令而将给定数据存储在持久性存储屏障缓冲器中。而且,可选地,其中处理器的指令集不包括从持久性存储屏障缓冲器加载数据的用户级加载指令。
示例19包括示例18的方法,进一步包括接收指示从高速缓存移除高速缓存行的意图的信号,并且在接收到所述信号之后且在将所述高速缓存行从高速缓存移除到持久性存储装置之前,将至少一个高速缓存行从持久性存储屏障缓冲器存储到持久性存储装置。
示例20包括示例18到19中任一项的方法,可选地,其中将给定数据存储在持久性存储屏障缓冲器中包括将给定数据存储在持久性存储屏障缓冲器的高速缓存行中,所述高速缓存行具有与第二持久性存储屏障指令对应的第二数据。
示例21包括示例12到20中任一项的方法,进一步包括将给定数据存储到持久性存储器中的写入前日志。
示例22是一种用于处理指令的系统,包括互连和与互连耦合的持久性存储装置。持久性存储装置存储写入前记录日志算法的指令集。所述指令集包括存储和持久性存储屏障指令,其指示持久性存储装置中的位置并且由写入前记录日志算法用来将给定数据存储到持久性存储装置中的写入前日志。该系统还包括与互连耦合的处理器。处理器接收存储和持久性存储屏障指令。处理器响应于存储和持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在写入前记录日志算法中的存储和持久性存储屏障指令之后。
示例23包括示例22的系统,可选地,其中持久性存储和持久性存储屏障指令包括用于使得给定数据绕过处理器的一个或多个高速缓存的集合的非暂时指令。
示例24是一种制品,其包括非临时机器可读存储介质。非临时机器可读存储介质对存储和持久性存储屏障指令进行存储。存储和持久性存储屏障指令指示要具有给定数据的源操作数,并且指示其中要存储给定数据的持久性存储装置中的位置。如果由机器执行,存储和持久性存储屏障指令使得机器执行包括以下的操作:确保在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在持久性存储屏障指令之后。
示例25包括示例24的制品,可选地,其中如果由机器执行,存储和持久性存储屏障指令不使得机器确保在后续存储指令的数据之前将所有在先存储指令的数据持久性地存储在持久性存储装置中,所述在先存储指令在原始程序次序中出现在存储和持久性存储屏障指令之前。
示例26是一种处理器或其他装置,其操作为实行示例12到21中任一项的方法。
示例27是一种处理器或其他装置,其包括用于实行示例12到21中任一项的方法的部件。
示例28是一种处理器或其他装置,其包括实行示例12到21中任一项的方法的模块。
示例29是一种处理器,其包括用于实行示例12到21中任一项的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例30是一种制品,其包括可选非临时机器可读介质,其可选地存储或以其他方式提供指令,所述指令如果被处理器、计算机系统、电子设备或其他机器执行和/或当由处理器、计算机系统、电子设备或其他机器执行时,操作为使得机器实行示例12到21中任一项的方法。
示例31是一种计算机系统、其他电子设备或其他装置,其包括总线或其他互连、与互连耦合的示例1到11中任一项的处理器以及与互连耦合的选自以下的至少一个组件:动态随机存取存储器(DRAM)、网络接口、图形芯片、无线通信芯片、全球移动通信系统(GSM)天线、相变存储器以及视频摄像机。
示例32是一种大体上如本文描述的处理器或其他装置。
示例33是一种处理器或其他装置,其操作为实行大体上如本文描述的任何方法。
示例34是一种处理器或其他装置,其操作为实行大体上如本文描述的任何持久性存储屏障指令。
Claims (25)
1. 一种处理器,包括:
对持久性存储屏障指令解码的解码单元;以及
与解码单元耦合的存储器子系统模块,所述存储器子系统模块响应于持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将与持久性存储屏障指令对应的给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在持久性存储屏障指令之后。
2.如权利要求1所述的处理器,其中所述持久性存储屏障指令包括存储和持久性存储屏障指令,其指示具有给定数据的源操作数并且其指示其中要存储给定数据的持久性存储装置中的位置。
3.如权利要求1所述的处理器,其中所述给定数据要被包括在存储指令的源操作数中,其暗指持久性存储屏障指令将是在原始程序次序中紧接在持久性存储屏障指令之前和紧接在持久性存储屏障指令之后中的一个。
4.如权利要求1所述的处理器,其中所述存储器子系统模块响应于持久性存储屏障指令不确保:在后续存储指令的数据之前将所有在先存储指令的数据持久性地存储在持久性存储装置中,所述在先存储指令在原始程序次序中出现在持久性存储屏障指令之前。
5.如权利要求1所述的处理器,进一步包括一个或多个高速缓存的集合,并且其中所述存储器子系统模块响应于持久性存储屏障指令而使得给定数据绕过一个或多个高速缓存的集合。
6.如权利要求1到5中任一项所述的处理器,进一步包括持久性存储屏障缓冲器,并且其中所述存储器子系统模块响应于持久性存储屏障指令而使得给定数据被存储在持久性存储屏障缓冲器中。
7.如权利要求6所述的处理器,进一步包括持久性存储屏障缓冲器管理单元,其在从高速缓存移除高速缓存行之前,基于指示从高速缓存移除该高速缓存行的意图的信号而将至少一个高速缓存行从持久性存储屏障缓冲器存储到持久性存储装置。
8.如权利要求6所述的处理器,其中所述持久性存储屏障缓冲器包括写入组合缓冲器,所述写入组合缓冲器允许与第二持久性存储屏障指令对应的第二数据被存储在持久性存储屏障缓冲器的与给定数据相同的高速缓存行中。
9.如权利要求6所述的处理器,其中处理器的指令集不包括用于从持久性存储屏障缓冲器读取数据的用户级加载指令。
10.如权利要求6所述的处理器,其中所述持久性存储屏障缓冲器不实现高速缓存一致性协议。
11.如权利要求1到5中任一项所述的处理器,其中所述处理器在要在互连上传输的一个或多个周期的公共集合中将具有给定数据和与第二持久性存储屏障指令对应的第二数据的高速缓存行存储到持久性存储装置,所述互连用于将处理器与持久性存储装置耦合。
12. 一种在处理器中的方法,包括:
接收持久性存储屏障指令;以及
响应于持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将与持久性存储屏障指令对应的给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在持久性存储屏障指令之后。
13.如权利要求12所述的方法,其中接收指令包括接收存储和持久性存储屏障指令,其指示具有给定数据的源操作数并且其指示其中要存储给定数据的持久性存储装置中的位置。
14.如权利要求12所述的方法,进一步包括接收指示具有给定数据的源操作数的存储指令,其中所述存储指令是在原始程序次序中紧接在持久性存储屏障指令之前和紧接在持久性存储屏障指令之后中的一个。
15.如权利要求12所述的方法,进一步包括响应于持久性存储屏障指令而使得给定数据绕过处理器的一个或多个高速缓存的集合。
16.如权利要求12所述的方法,其中确保包括确保在将后续存储指令的数据持久性地存储在持久性存储装置中之前将给定数据持久性地存储在持久性存储装置中,而不确保在将所述所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将所有在先存储指令的数据持久性地存储在持久性存储装置中,所述在先存储指令在原始程序次序中出现在持久性存储屏障指令之前。
17.如权利要求12所述的方法,进一步包括在互连上传输的一个或多个周期的公共集合中将具有给定数据和与第二持久性存储屏障指令对应的第二数据的高速缓存行存储到持久性存储装置。
18.如权利要求12所述的方法,进一步包括响应于持久性存储屏障指令而将给定数据存储在持久性存储屏障缓冲器中,其中处理器的指令集不包括用于从持久性存储屏障缓冲器加载数据的用户级加载指令。
19. 如权利要求18所述的方法,进一步包括:
接收指示从高速缓存移除高速缓存行的意图的信号;以及
在接收到所述信号之后且在将所述高速缓存行从高速缓存移除到持久性存储装置之前,将至少一个高速缓存行从持久性存储屏障缓冲器存储到持久性存储装置。
20.如权利要求12所述的方法,进一步包括将给定数据存储到持久性存储器中的写入前日志。
21.一种用于处理指令的系统,包括:
互连;
与互连耦合的持久性存储装置,所述持久性存储装置存储写入前记录日志算法的指令集,所述指令集包括存储和持久性存储屏障指令,其指示持久性存储装置中的位置并且由写入前记录日志算法用来将给定数据存储到持久性存储装置中的写入前日志;以及
与互连耦合的处理器,所述处理器接收存储和持久性存储屏障指令,所述处理器响应于存储和持久性存储屏障指令而确保:在将所有后续存储指令的数据持久性地存储在持久性存储装置中之前,将给定数据持久性地存储在持久性存储装置中,所述后续存储指令在原始程序次序中出现在写入前记录日志算法中的存储和持久性存储屏障指令之后。
22.如权利要求21所述的系统,其中持久性存储和持久性存储屏障指令包括使得给定数据绕过处理器的一个或多个高速缓存的集合的非暂时指令。
23.一种装置,其包括用于实行权利要求12到20中任一项所述的方法的部件。
24.一种制品,其包括存储指令的非临时机器可读介质,所述指令如果由机器执行则操作为使得机器实行权利要求12到20中任一项所述的方法。
25.一种电子设备,其包括互连、与互连耦合的如权利要求1到11中任一项所述的处理器、以及与互连耦合的持久性存储装置,所述持久性存储装置存储写入前记录日志算法,所述写入前记录日志算法包括持久性存储屏障指令并且使用持久性存储屏障指令将数据存储到持久性存储装置中的写入前日志。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498,178 US10489158B2 (en) | 2014-09-26 | 2014-09-26 | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US14/498178 | 2014-09-26 | ||
PCT/US2015/047741 WO2016048592A1 (en) | 2014-09-26 | 2015-08-31 | Persistent store fence processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575218A true CN106575218A (zh) | 2017-04-19 |
CN106575218B CN106575218B (zh) | 2020-06-26 |
Family
ID=55581784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045704.3A Active CN106575218B (zh) | 2014-09-26 | 2015-08-31 | 持久性存储屏障处理器、方法、系统和指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10489158B2 (zh) |
EP (1) | EP3198403A4 (zh) |
JP (1) | JP2017532643A (zh) |
KR (1) | KR102282135B1 (zh) |
CN (1) | CN106575218B (zh) |
TW (1) | TWI598821B (zh) |
WO (1) | WO2016048592A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
CN114051605A (zh) * | 2019-07-02 | 2022-02-15 | 美光科技公司 | 基于耐久性条件而改变待用于条带的存储器组件 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US10303477B2 (en) | 2015-06-26 | 2019-05-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
JP6674085B2 (ja) * | 2015-08-12 | 2020-04-01 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10127243B2 (en) * | 2015-09-22 | 2018-11-13 | International Business Machines Corporation | Fast recovery using self-describing replica files in a distributed storage system |
US9747174B2 (en) * | 2015-12-11 | 2017-08-29 | Microsoft Technology Licensing, Llc | Tail of logs in persistent main memory |
US10254967B2 (en) * | 2016-01-13 | 2019-04-09 | Sandisk Technologies Llc | Data path control for non-volatile memory |
US10324650B2 (en) * | 2016-09-23 | 2019-06-18 | Advanced Micro Devices, Inc. | Scoped persistence barriers for non-volatile memories |
US11216396B2 (en) * | 2016-09-29 | 2022-01-04 | Intel Corporation | Persistent memory write semantics on PCIe with existing TLP definition |
CN107885671B (zh) * | 2016-09-30 | 2021-09-14 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
US10528286B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
US10528267B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Command queue for storage operations |
US10528255B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
US10409603B2 (en) * | 2016-12-30 | 2019-09-10 | Intel Corporation | Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory |
US11106468B2 (en) * | 2017-05-23 | 2021-08-31 | Eta Scale Ab | System and method for non-speculative reordering of load accesses |
US11436087B2 (en) * | 2017-05-31 | 2022-09-06 | Everspin Technologies, Inc. | Systems and methods for implementing and managing persistent memory |
US10303603B2 (en) * | 2017-06-13 | 2019-05-28 | Microsoft Technology Licensing, Llc | Low power multi-core coherency |
US10282298B2 (en) | 2017-06-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Store buffer supporting direct stores to a coherence point |
US10936441B2 (en) | 2017-12-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | Write-ahead style logging in a persistent memory device |
US11016669B2 (en) * | 2018-05-01 | 2021-05-25 | Qualcomm Incorporated | Persistent write data for energy-backed memory |
US20200210186A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Apparatus and method for non-spatial store and scatter instructions |
TWI773959B (zh) | 2019-01-31 | 2022-08-11 | 美商萬國商業機器公司 | 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品 |
US11416397B2 (en) * | 2019-10-14 | 2022-08-16 | Intel Corporation | Global persistent flush |
US11392380B2 (en) * | 2019-12-28 | 2022-07-19 | Intel Corporation | Apparatuses, methods, and systems to precisely monitor memory store accesses |
CN111857825A (zh) | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 指令执行方法、装置、电子设备和计算机可读存储介质 |
US11847048B2 (en) * | 2020-09-24 | 2023-12-19 | Advanced Micro Devices, Inc. | Method and apparatus for providing persistence to remote non-volatile memory |
US11853605B2 (en) | 2021-09-17 | 2023-12-26 | Micron Technology, Inc. | Database persistence |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084259A1 (en) * | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
CN1855033A (zh) * | 2001-05-11 | 2006-11-01 | 国际商业机器公司 | 可避免写后读的危险的存储器指令的发出和执行 |
US20120254120A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | Logging system using persistent memory |
US20140136786A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Asynchronous persistent stores for transactions |
CN105339908A (zh) * | 2013-07-26 | 2016-02-17 | 英特尔公司 | 用于支持持久存储器的方法和装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0795153A4 (en) | 1994-12-02 | 2001-11-14 | Intel Corp | MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS |
US6073210A (en) | 1998-03-31 | 2000-06-06 | Intel Corporation | Synchronization of weakly ordered write combining operations using a fencing mechanism |
US6546462B1 (en) | 1999-12-30 | 2003-04-08 | Intel Corporation | CLFLUSH micro-architectural implementation method and system |
US6708269B1 (en) | 1999-12-30 | 2004-03-16 | Intel Corporation | Method and apparatus for multi-mode fencing in a microprocessor system |
US7243200B2 (en) | 2004-07-15 | 2007-07-10 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
US7606998B2 (en) | 2004-09-10 | 2009-10-20 | Cavium Networks, Inc. | Store instruction ordering for multi-core processor |
US8909871B2 (en) | 2006-08-03 | 2014-12-09 | International Business Machines Corporation | Data processing system and method for reducing cache pollution by write stream memory access patterns |
EP2159703A4 (en) * | 2007-06-20 | 2010-12-08 | Fujitsu Ltd | INFORMATION PROCESSOR, CACHE MEMORY CONTROL, AND MEMORY ACCESS SEQUENCES PROCESSING |
US8219741B2 (en) | 2008-10-24 | 2012-07-10 | Microsoft Corporation | Hardware and operating system support for persistent memory on a memory bus |
US10430298B2 (en) | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
WO2013147820A1 (en) | 2012-03-29 | 2013-10-03 | Intel Corporation | System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory |
US9535836B2 (en) * | 2013-03-13 | 2017-01-03 | Hewlett Packard Enterprise Development Lp | Non-volatile memory update tracking |
US9304940B2 (en) | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
US9547594B2 (en) | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
US9367472B2 (en) * | 2013-06-10 | 2016-06-14 | Oracle International Corporation | Observation of data in persistent memory |
US9423959B2 (en) | 2013-06-29 | 2016-08-23 | Intel Corporation | Method and apparatus for store durability and ordering in a persistent memory architecture |
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 |
-
2014
- 2014-09-26 US US14/498,178 patent/US10489158B2/en active Active
-
2015
- 2015-08-20 TW TW104127169A patent/TWI598821B/zh not_active IP Right Cessation
- 2015-08-31 CN CN201580045704.3A patent/CN106575218B/zh active Active
- 2015-08-31 WO PCT/US2015/047741 patent/WO2016048592A1/en active Application Filing
- 2015-08-31 KR KR1020177005384A patent/KR102282135B1/ko active IP Right Grant
- 2015-08-31 EP EP15845271.4A patent/EP3198403A4/en not_active Withdrawn
- 2015-08-31 JP JP2017510898A patent/JP2017532643A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084259A1 (en) * | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
CN1855033A (zh) * | 2001-05-11 | 2006-11-01 | 国际商业机器公司 | 可避免写后读的危险的存储器指令的发出和执行 |
US20120254120A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | Logging system using persistent memory |
US20140136786A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Asynchronous persistent stores for transactions |
CN105339908A (zh) * | 2013-07-26 | 2016-02-17 | 英特尔公司 | 用于支持持久存储器的方法和装置 |
Non-Patent Citations (1)
Title |
---|
THAKKAR S等: "Internet streaming SIMD extensions", 《COMPUTER》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
CN110647480B (zh) * | 2018-06-26 | 2023-10-13 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
CN114051605A (zh) * | 2019-07-02 | 2022-02-15 | 美光科技公司 | 基于耐久性条件而改变待用于条带的存储器组件 |
Also Published As
Publication number | Publication date |
---|---|
KR20170039237A (ko) | 2017-04-10 |
EP3198403A4 (en) | 2018-05-30 |
TW201624279A (zh) | 2016-07-01 |
JP2017532643A (ja) | 2017-11-02 |
CN106575218B (zh) | 2020-06-26 |
EP3198403A1 (en) | 2017-08-02 |
WO2016048592A1 (en) | 2016-03-31 |
KR102282135B1 (ko) | 2021-07-26 |
US10489158B2 (en) | 2019-11-26 |
US20160092223A1 (en) | 2016-03-31 |
TWI598821B (zh) | 2017-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104050026B (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
CN109375949B (zh) | 一种具有多个核的处理器 | |
CN104603745B (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN108701027A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 | |
CN104603746B (zh) | 由读和写掩码控制的向量移动指令 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN106648554A (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN109313556A (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和系统 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN104246694B (zh) | 聚集页错误信令和处理 | |
CN107003921A (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
CN106293626A (zh) | 持久性提交处理器、方法、系统和指令 | |
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
CN105247479B (zh) | 指令次序实施指令对、处理器、方法和系统 | |
CN107918546A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN108694056A (zh) | 用于基于二进制翻译的微处理器的混合原子性支持 | |
CN108885551A (zh) | 存储器复制指令、处理器、方法和系统 | |
CN106293894A (zh) | 执行事务性功率管理的硬件设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |