CN108694056A - 用于基于二进制翻译的微处理器的混合原子性支持 - Google Patents

用于基于二进制翻译的微处理器的混合原子性支持 Download PDF

Info

Publication number
CN108694056A
CN108694056A CN201810166118.XA CN201810166118A CN108694056A CN 108694056 A CN108694056 A CN 108694056A CN 201810166118 A CN201810166118 A CN 201810166118A CN 108694056 A CN108694056 A CN 108694056A
Authority
CN
China
Prior art keywords
memory
instruction
supposition
register
label
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.)
Pending
Application number
CN201810166118.XA
Other languages
English (en)
Inventor
V.梅卡特
J.M.阿格龙
吴佑峰
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 CN108694056A publication Critical patent/CN108694056A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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
    • 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
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Abstract

用于基于二进制翻译的微处理器的混合原子性支持。一种处理设备,包括第一影子寄存器、第二影子寄存器以及指令执行电路,其通信地耦合到第一影子寄存器和第二影子寄存器,以接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记和引用架构寄存器的第一寄存器访问指令、推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值、响应于标识第一局部提交标记,在第一影子寄存器中存储推测的寄存器状态值并且响应于标识第一全局提交标记,在第二影子寄存器中存储推测的寄存器状态值。

Description

用于基于二进制翻译的微处理器的混合原子性支持
技术领域
本公开的实施例一般地涉及微处理器,并且更具体地但不限制地涉及用于基于二进制翻译(基于BT)的微处理器的混合原子性支持。
背景技术
如今在大部分计算系统中找到多核心处理器,计算机系统包括服务器、台式计算机和片上系统(SoC)。利用这些多核心处理器的计算机系统可以执行各种类型的代码的指令。常常,代码不是针对特定处理器设计的,并且因此,需要被翻译为目标代码。
附图说明
根据以下给出的具体实施方式并且根据本公开的各种实施例的附图,将更全面地理解本公开。然而,附图不应被考虑为将本公开限制于具体实施例,而是仅用于解释和理解。
图1图示了根据本公开的实施例的处理系统。
图2图示了根据本公开的实施例的包括由二进制翻译器生成的代码的代码示例。
图3A图示了根据本公开的实施例的包括全局提交(commit)模式和局部提交模式的混合原子性(hybrid atomicity)的示例。
图3B图示了根据本公开的实施例的回滚(rollback)的示例。
图4是根据本公开的实施例的用于执行BT代码的方法400的框图。
图5A是图示了用于包括在其中可以使用本公开的一个实施例的异构(heterogeneous)核心的处理器的微架构的框图。
图5B是图示了根据本公开的至少一个实施例实现的顺序流水线和寄存器重命名级、乱序发布/执行流水线的框图。
图6图示了根据本公开的一个实施例的包括逻辑的处理器的微架构的框图。
图7是图示了在其中可以使用本公开的实施例的系统的框图。
图8是本公开的实施例可以在其中操作的系统的框图。
图9是本公开的实施例可以在其中操作的系统的框图。
图10是根据本公开的实施例的片上系统(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12图示了计算机系统的一个实施例的框图。
具体实施方式
某些多核心处理器可以包括二进制翻译器(binary translator),所述二进制翻译器生成可以在目标平台上执行的目标代码。可以使用某些优化技术来优化翻译的代码。优化可以包括指令的重新排序。因此,应当原子地(atomically)执行指令的优化的组。原子性可以保证乱序执行(即,指令的重新排序的组的执行)和顺序执行(即,指令的原始组的执行)之间的结果一致性。在一些计算机系统中,有效的优化技术可以改进性能并且减少功耗。在运行时间期间,二进制翻译器可以对代码的指令的布置(placement)重新排序。在一些系统中,存储器访问指令(修改存储器位置的指令)或寄存器访问指令(修改物理寄存器的指令)可以以与取出和解码指令的顺序不同的顺序来执行(被称为乱序执行)。例如,根据特定优化过程,二进制翻译器可以对某些存储器访问指令的执行重新排序。在此类系统中,用于对存储器(或寄存器)访问指令重新排序的这些技术被示出为用于改进支持乱序(OoO)指令执行的微处理器的性能的有效的机制。
微处理器(在本文中被称为处理器)可以依赖于硬件机制(例如,硬件事务存储器)以支持在指令的OoO执行中需要的原子性。处理器可以执行定向在存储设备(例如,寄存器或存储器)的数据访问指令。包括两个或更多指令的执行的事务的原子性保证事务完成或对存储设备没有影响(即,中止的事务不改变存储设备中的内容)。为了实现与事务相关联的指令集合的执行的原子性,系统可能需要创建捕捉系统的开始状态(包括存储器状态值和寄存器状态值)的检查点。当曾经知道微处理器的状态是正确的(非推测的)时,寄存器和存储器状态值可以定义用于相应的寄存器和存储器位置的正确数据值。响应于检测到在事务期间发生的回滚事件,系统可以回滚到检查点。回滚保证了失败的事务不影响系统的状态值。处理器可以配置有事务存储器以跟踪处理器的内部状态,其中所述内部状态可以包括可以被用于回滚的存储器状态值和寄存器状态值。在改进执行的速度的一些实现中,处理器可以实现硬件事务存储器,所述硬件事务存储器包括跟踪哪些高速缓存线与读或写指令相关联的逻辑电路。在处理器上实现的硬件事务存储器,虽然提供了保证最终结果中的顺序一致性的可靠的和内置(bulit-in)原子性,但是特别是对于如在以下部分中解释的基于BT的处理器可能引起处理器性能上的显著的开销。
被设计成执行重新排序的二进制翻译(BT)指令的处理器可能需要通过背对背(back-to-back)事务时常地处于原子事务模式中。这些处理器被称为基于BT的处理器。基于BT的处理器为了功率和性能增益执行推测的优化。如果代码的推测的执行未提供正确的结果,则基于BT的处理器回滚到正确的状态。代码可以包括区边界,所述区边界限定执行中处理器状态(存储器和寄存器)是正确的并且可以使得对外部世界(其他处理器)可见的时间点。在那些边界其间的指令的执行(即,推测的执行)对外界(outside world)而言应当看起来是原子的。因此,基于BT的处理器需要始终处于原子状态。基于BT的处理器可以使用用于此的现有的硬件事务存储器,但是其引起可能使通过二进制翻译优化实现的性能增益无效的高性能开销。针对此类情况,基于BT的处理器可以采用轻量级原子机制(而不是重量级硬件事务存储器)以减少与事务相关联的开销,其中重量级意味着大处理器开销并且轻量级意味着小处理器开销。在一些实现中,基于BT的处理器可以使用不是数据高速缓存的部分而是通信地耦合到数据高速缓存的缓冲器,以在到数据高速缓存的原子提交之前暂时地保持存储器存储指令。因此,由于与硬件事务存储器相关联的高开销,基于BT的处理器的实现通常不支持重量级硬件事务存储器。然而,硬件事务存储器对基于BT的处理器可能是有用的,因为硬件事务存储器可以适应大量的加载/存储(load/store)操作并且可以被使用来优化某些情况中的代码执行(例如,使用环不变码运动(loop invariant code motion)(LICM)、加载提升(load hoisting)、加载消除等的环的优化)。此外,基于BT的处理器可能需要提供后向兼容性以支持硬件事务存储器。
本公开的实施例可以包括处理器架构,所述处理器架构支持用于推测地执行的指令的两种类型的提交模式(全局提交模式和局部提交模式),其中指令可以修改存储器位置或物理寄存器中的至少一个。代码(例如,由二进制翻译器生成的代码)可以包括局部提交标记,所述局部提交标记标识将在由处理器架构支持的局部提交模式之下被推测地执行并且然后提交的代码的部分,其中可以由代码开发者或编译器插入局部提交标记。代码可以进一步包括全局提交标记,所述全局提交标记标识将在也由处理器架构支持的全局提交模式之下被推测地执行并且然后提交的代码的另一部分,其中可以由二进制翻译器插入全局提交标记。全局提交代码区可以利用事务存储器(或基于高速缓存的原子性),而局部提交代码区遭受存储/加载缓冲器的延迟的回收(reclamation)。
本公开的处理器架构可以支持代码中的局部提交模式和全局提交模式两者。对于修改存储器位置的指令,处理器可以通过在局部提交模式之下将推测的存储器状态值存储在缓冲器中来支持延迟的指令回收。与没有原子性的回收相比,延迟了指令回收。存储在缓冲器中可以延迟到事务存储器的提交直到全局提交事件的发生。对于引用物理寄存器的指令,处理器可以将推测的寄存器状态值存储在与局部提交模式相关联的第一影子寄存器(shadow register)集合中,并且将推测的寄存器状态值存储在与全局提交模式相关联的第二影子寄存器集合中。响应于局部提交事件,可以将第一影子寄存器的内容复制到架构寄存器,而响应于全局提交事件,可以将第二影子寄存器的内容复制到架构寄存器(结合图3提供了详细描述)。架构寄存器是被指定为指令的操作数(operand)以存储结果值的逻辑寄存器。处理器可以实现寄存器重命名以使用寄存器别名表(RAT)来将逻辑寄存器动态地映射到物理寄存器文件中的物理寄存器。因此,本公开提供了一种技术方案,其支持在由二进制翻译器重新排序的优化代码中指定的两种类型的提交。
图1图示了根据本公开的实施例的处理系统100。如在图1中示出的那样,处理系统100(例如,片上系统(SOC)或计算机系统的主板)可以包括处理器102和通信地耦合到处理器102的存储器设备104。处理器102可以是硬件处理设备,诸如例如包括用于执行软件应用的一个或多个处理核心的中央处理单元(CPU)或图形处理单元(GPU)。
处理器102可以进一步包括处理核心106和与类似于处理核心106的另一个处理核心共享的级别2(L2)高速缓存。处理核心106在各种实现中可能具有顺序核心或指令的乱序执行的能力。在说明性示例中,处理核心106可以具有包括用于实现指令集架构(ISA)的处理器逻辑和电路的微架构。具有不同微架构的处理器102可以共享公共指令集的至少一部分。例如,可以使用各种技术在不同的微架构中以不同方式来实现ISA的相同的寄存器架构,包括专用物理寄存器、使用寄存器重命名机制(例如,寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器文件的使用)的一个或多个动态分配的物理寄存器,如结合图5A-5B图示的那样。在引用寄存器的指令的执行期间,可以使用动态分配的寄存器来保持数据值。数据值可以被重写直到数据值被移动到架构寄存器(即,对程序员可见的那些寄存器。当代码读架构寄存器的内容时,架构寄存器的内容需要是正确的)。
参考图1,处理核心106可以进一步包括指令高速缓存108、前端电路110、执行电路112、指令引退电路114、寄存器文件116、指令延迟回收电路118(包括加载/存储缓冲器120)、级别1(L1)数据高速缓存124、第一影子寄存器集合126和第二影子寄存器集合128。处理核心106可以可选地包括二进制翻译器140用于将指令重新排序为目标代码,所述目标代码可以被以OoO方式可推测地执行。在一个实施例中,二进制翻译器140可以在逻辑电路中被实现为处理核心106的硬件部件。在另一个实施例中,二进制翻译器104可以被实现为在处理核心106上运行的软件应用。
可以将指令高速缓存电路108耦合到指令取出电路(未示出)。指令高速缓存电路108可以接收并且存储由指令取出电路取回的指令。在一个实施例中,二进制翻译器140可以从指令高速缓存电路108接收指令的序列并且通过对代码中的指令重新排序来执行代码优化以生成目标代码。在二进制翻译器140的代码优化之后,目标代码可以包括标识将在局部提交模式之下执行的代码的部分的局部提交标记和标识将在全局提交模式之下执行的代码的部分的全局提交标记。可以由二进制翻译器140插入局部提交标记。替代地,可以由应用开发者来插入全局提交标记。
图2图示了根据本公开的实施例的包括由二进制翻译器生成的代码204的代码示例200。原始代码202(例如,x86指令代码)可以包括环206,所述环206包括若干指令。二进制翻译器140可以基于代码202生成目标代码204。在目标代码204中,二进制翻译器140可以使用局部提交标记(例如,CMIT.LOCAL)来指定在局部提交模式之下的代码的部分,并且使用全局提交标记(例如,CMIT.GLOBAL)来指定在全局提交模式之下的代码的部分。例如,代码204可以在环206内在局部提交模式之下运行并且在环206外在全局提交模式之下运行。
参考图1,前端电路110可以接收由二进制翻译器140生成的目标代码204以在执行之前执行预处理。在一个实施例中,前端电路110可以包括指令解码器电路,所述指令解码器电路可以将指令翻译成其中指令的微代码开始的微存储器中的地址。前端电路110可以将指令馈送到指令执行电路112用于推测的执行。
处理核心106可以包括逻辑电路以支持在目标代码中指定的局部提交模式和全局提交模式两者。处理核心106可以提供不同的硬件部分以处理引用存储器104中的存储器位置的指令(被称为存储器访问指令)和引用寄存器文件116的物理寄存器的指令(被称为寄存器访问指令)。
在这点上,处理核心106可以包括寄存器文件116,所述寄存器文件116可以包括可以被寄存器访问指令引用的物理寄存器。在提交事件发生之前,这些物理寄存器可以被重新命名和/或重写。处理核心112可以进一步包括耦合到寄存器文件116的影子寄存器集合126、128以维持寄存器文件116的内容的副本。在一些实现中,影子寄存器集合可以维持寄存器文件116中的每个物理寄存器的推测的副本和非推测的副本两者。随后的寄存器访问指令的执行可以引起物理寄存器中的内容的重写,引起相应的影子寄存器中的推测的副本的更新。提交事件(例如,由指令执行电路112标识“COMMIT.GLOBAL”标记或“COMMIT.LOCAL”标记)可以触发寄存器文件116中的所有推测的副本到非推测的副本的转换。
在一个实施例中,为了改进效率,影子寄存器集合126、128可以被实现为维持物理寄存器和架构寄存器之间的先进先出(FIFO)映射的写时复制(copy-on-write)(CoW)结构。在执行期间由寄存器访问指令引用的物理寄存器被称为“实时(live)”物理寄存器。响应于“实时”物理寄存器的第一重写,影子寄存器集合126、128可以维持影子副本。然而,该重写未使得指令引退电路114回收物理寄存器用于其他寄存器访问指令。影子寄存器集合126、128不维持用于实时物理寄存器的随后的重写的内容,因为它们不表示原子事务的回滚状态值。响应于全局或局部提交事件的引退(例如,通过标识随后的全局或局部提交标记),回收实时物理寄存器并且实时物理寄存器的内容变成非推测的。因此,CoW影子寄存器集合126、128可以消除对响应于频繁的重写从物理寄存器到影子寄存器集合126、128的多个复制操作的需求。
在一个实施例中,影子寄存器集合126与局部提交模式相关联,并且影子寄存器集合128与全局提交模式相关联。影子寄存器集合126可以维持局部提交模式之下的实时物理寄存器的原始内容,并且影子寄存器集合128可以维持全局提交模式之下的实时物理寄存器的原始内容。响应于局部提交事件,指令引退电路114可以回收局部提交模式之下的实时物理寄存器。响应于全局提交事件,指令引退电路114可以回收全局提交模式之下的实时物理寄存器。
处理核心106可以进一步包括级别1(L1)数据高速缓存124,所述级别1(L1)数据高速缓存124可以包括事务存储器132的实现。如以上讨论的那样,事务存储器132可以通过引用存储器位置的存储器访问指令来提供存储器事务的原子性。事务存储器132可以包括用于跟踪可以被用于回滚的存储器状态值的逻辑电路。在一个实施例中,事务存储器可以跟踪与高速缓存线相关联的读或写指令。事务存储器132可以包括用于存储与存储器位置相关联的内容的副本的高速缓存线。所述副本被称为在存储器位置处的存储器状态值。在一个实施例中,高速缓存线可以进一步包括用于指示高速缓存是否是推测的状态标志。例如,可以将状态标志设置(到“1”)以指示推测的状态,并且清除(到“0”)以指示非推测的状态。在一个实施例中,使用高速缓存线的读(RD)比特和/或写(WR)比特来指示推测状态。当设置时,RD比特可以指示高速缓存线与读指令相关联,并且当设置时,WR比特可以指示高速缓存线与写指令相关联。
在一个实施例中,在全局提交模式之下,在高速缓存线中维持与存储器位置相关联的推测的存储器状态值。响应于提交事件,将所有推测的高速缓存线设置成非推测的(例如,通过清除推测状态比特)。
为了改进在局部提交模式之下的性能,处理核心106可以包括延迟回收电路118以临时地保持存储器状态值,所述存储器状态值之后可能被复制到事务存储器132。在一个实施例中,延迟回收电路118可以包括加载/存储缓冲器120。响应于标识局部提交标记(例如,COMMIT.LOCAL),指令执行电路112可以首先创建响应于标识局部提交标记捕捉的局部检查点(checkpoint)。此外,指令执行电路120可以推测地执行修改存储器位置的存储器访问指令。在局部提交模式之下,指令执行电路112可以响应于推测地执行存储器访问指令而将推测的存储器状态存储在加载/存储缓冲器120中。响应于修改存储器位置的另一个存储器访问指令的执行,指令执行电路112可以将存储在加载/存储缓冲器120中的推测的存储器状态值修改成新的值。响应于提交事件(例如,标识第二局部提交标记),指令执行电路112可以将推测的存储器状态值从加载/存储缓冲器120移动到作为高速缓存线的事务存储器130。此处,提交事件(例如,标识局部提交标记)用作先前的局部提交模式的结尾(conclusion)和新的局部提交模式的开始。可以将高速缓存线的推测状态设置成推测的状态(设置成“1”)。
在下文中,根据全局提交模式和局部提交模式讨论了混合原子性支持。
本公开的实施例可以提供用于处理在全局提交模式之下的推测地执行的存储器访问指令和推测地执行的寄存器访问指令的不同的部件和方法。指令执行电路112可以接收包括全局提交标记(例如,如在图2中示出的COMMIT.GLOBAL)的指令的序列。所述指令的序列可能已经由二进制翻译器140用代码优化生成。因此,指令的序列的执行可以包括OoO推测的执行。响应于标识全局提交标记,指令执行电路112可以首先创建全局检查点(对存储保留的存储器状态值和寄存器状态值的存储器位置的引用),在全局回滚事件发生的情况中处理核心106可以回滚到所述全局检查点。当处理器故障使得处理器回滚到由全局检查点引用的状态值时,全局回滚事件发生。为了简洁讨论,结合图3A-3B提供全局检查点的创建和全局回滚事件的检测。此外,响应于标识全局提交标记,指令执行电路112可以开始在全局提交模式之下推测地执行指令。
在全局提交模式之下,指令执行电路112可以标识存储器访问指令(例如,修改存储器位置的指令)并且推测地执行所述存储器访问指令。存储器访问指令的执行可以使得高速缓存控制器在数据高速缓存124的事务存储器132中生成高速缓存线条目并且将存储器状态值的副本存储在高速缓存线中。在一个实施例中,指令执行电路112还可以将推测比特设置成“推测的”状态,其中所述推测比特可以是指示高速缓存线已经由存储器访问指令访问的RD/WT比特。
指令执行电路112可以进一步标识寄存器访问指令(例如,修改物理寄存器的指令)并且推测地执行所述寄存器访问指令。在指令的执行期间,指令执行电路112可以将推测的寄存器值存储在全局影子寄存器128中,其中所述全局影子寄存器被实现为CoW结构。响应于全局提交事件,将全局影子寄存器128中的推测的寄存器值复制到物理寄存器。
响应于全局提交事件(例如,标识第二全局提交标记),指令执行电路112可以使得高速缓存控制器清除事务存储器132的高速缓存线中的推测比特。指令执行电路112可以将推测的寄存器值从全局影子寄存器128复制到寄存器访问指令的架构寄存器操作数(指示物理寄存器)。
本公开的实施例可以提供用于处理在局部提交模式之下的推测地执行的存储器访问指令和推测地执行的寄存器访问指令的不同的部件和方法。指令执行电路112可以接收包括局部提交标记(例如,如在图2中示出的COMMIT.LOCAL)的指令的序列。
图2图示了根据本公开的实施例的包括由二进制翻译器生成的代码204的代码示例200。原始代码202(例如,x86指令代码)可以包括环206,所述环206包括若干指令。二进制翻译器140可以基于代码202生成目标代码204。在目标代码204中,二进制翻译器140可以使用局部提交标记(例如,CMIT.LOCAL)来指定在局部提交模式之下的代码的部分,并且使用全局提交标记(例如,CMIT.GLOBAL)来指定在全局提交模式之下的代码的部分。例如,代码204可以在环206内在局部提交模式之下运行并且在环206外在全局提交模式之下运行。
指令的序列可能已经由二进制翻译器140用代码优化生成。因此,指令的序列的执行可以包括OoO推测的执行。响应于标识局部提交标记,指令执行电路112可以首先创建局部检查点,在局部回滚事件发生的情况中处理核心106可以回滚到所述局部检查点。此外,响应于标识局部提交标记,指令执行电路112可以开始在局部提交模式之下推测地执行指令。
在局部提交模式之下,指令执行电路112可以标识存储器访问指令(例如,修改存储器位置的指令)并且推测地执行所述存储器访问指令。存储器访问指令的执行可以使得指令执行电路112将存储器状态值的副本存储在加载/存储缓冲器120中。
指令执行电路112可以进一步标识寄存器访问指令(例如,修改物理寄存器的指令)并且推测地执行寄存器访问指令。在寄存器访问指令的执行期间,指令执行电路112可以将推测的寄存器值存储在局部影子寄存器126中,其中所述局部影子寄存器可以被实现为CoW结构。寄存器访问指令的随后的执行可以修改物理寄存器而局部影子寄存器126保留回滚寄存器状态值。
响应于局部提交事件(例如,第二局部提交标记),指令执行电路112可以将加载/存储缓冲器120的内容移动到事务存储器132的一个或多个高速缓存线。如果局部提交事件位于首要(overarching)全局提交代码区中,那么指令执行电路112可以将高速缓存线的推测比特设置成推测的状态。指令执行电路112可以将推测的寄存器值从物理寄存器复制到由寄存器访问指令引用的架构寄存器。
图3A图示了根据本公开的实施例的包括全局提交模式和局部提交模式的混合原子性的示例。在该示例中,与局部提交模式相关联地执行的代码部分位于与全局提交模式相关联的代码部分中。在其他示例中,与全局提交模式相关联的代码部分可以在与局部提交模式相关联的代码部分中。在此类情况中,全局提交事件可以迫使局部提交模式分成子部分。参考图3A,指令执行电路112可以接收将根据序列300执行的指令。这些指令的执行可以包括可能需要事务原子性的指令的OoO推测执行。指令的序列可能已经由二进制翻译器使用代码优化生成。指令可以包括如以上结合图1讨论的全局提交标记(例如,COMMIT.GLOBAL)、局部提交标记(例如,COMMIT.LOCAL)、存储器访问指令和寄存器访问指令。
在302处,指令执行电路112可以标识代码中的第一全局提交标记。响应于标识第一全局提交标记,指令执行电路112可以通过如以下示例中的将所有推测的存储器状态值和推测的寄存器状态值转换成非推测的来创建第一全局检查点310。例如,指令执行电路112可以清除事务存储器132中的高速缓存线的推测比特以将推测的存储器状态值转换成非推测的,并且将存储在物理寄存器中的推测的寄存器值移动到目标架构寄存器。第一全局检查点130可以用作对从之后的全局回滚事件到由第一全局检查点130引用的保留的状态值的回滚的引用。在创建第一全局检查点310之后,指令执行电路112可以开始在全局提交模式之下执行指令312。所述执行可以包括存储器访问指令和寄存器访问指令的推测的执行。
在304处,指令执行电路112可以进一步标识代码中的第一局部提交标记。响应于标识第一局部提交标记,指令执行电路112可以通过如以下示例中的将与局部提交模式相关联的推测的存储器状态值和推测的寄存器状态值转换成非推测的来创建第一局部检查点314。例如,指令执行电路112可以将加载/存储缓冲器120中的推测的存储器状态值移动到事务存储器132中(而不是直接移动到如在全局提交模式之下的事务存储器132中),并且将推测的寄存器值存储的物理寄存器移动到目标架构寄存器。可以将推测的存储器状态值存储在具有设置成推测的状态的推测比特的高速缓存线中。第一局部检查点134可以在回滚点处服务于之后的全局回滚事件。在创建第一局部检查点314之后,指令执行电路112可以开始在局部提交模式之下执行指令316。所述执行可以包括存储器访问指令和寄存器访问指令的推测的执行。
类似地,在306处,指令执行电路112可以标识第二局部提交标记并且创建第二局部检查点318。第二局部检查点318可以将第一局部检查点314替代为用于局部回滚事件的回滚点。然后指令执行电路112可以开始在局部提交模式之下执行指令320。
在308处,指令执行电路112可以进一步标识第二全局提交标记并且创建第二全局检查点322。在一个实施例中,第二全局检查点322的创建可以包括首先将推测的寄存器状态值从影子寄存器集合216复制到相应的架构寄存器,并且将推测的存储器状态值从加载/存储缓冲器120移动到事务存储器132。在局部提交模式之下的推测的状态值到非推测的转换是因为不允许推测的优化跨事务存储器的边界。
指令执行电路112可能遇到全局/局部回滚事件,所述全局/局部回滚事件可能迫使中止事务并且将处理核心106的状态值回滚到相应的全局/局部检查点。全局回滚事件可以是全局提交故障,包括诸如例如x86级别异常、中断、XABORTS、外部高速缓存窥探(snoop)、写设置(Write-set)高速缓存线逐出(eviction)等。当这些全局回滚事件在全局提交代码区内发生时,它们引起全局中止和全局回滚。局部回滚事件可以是引起局部中止(不是x86全局级别中止)的微架构和BT特定的事件。这些局部中止在x86架构级别处不可见。局部回滚事件可以包括诸如例如BT特定的存储器推测失败、BT特定的中断/异常等。取决于出现的故障的类型,如在本公开中描述的混合原子性使能回滚和恢复到精确的局部或全局检查点。该能力通过减少与实施事务原子性有关的开销来帮助进一步改进处理核心107的性能。
图3B图示了根据本公开的实施例的回滚的示例。参考图3B,指令执行电路112可能已经创建如在图3A中示出的全局检查点和局部检查点。局部回滚事件324可能发生。响应于检测到局部回滚事件324,指令执行电路112可以将处理核心106的状态值回滚到第一局部检查点312。因为混合原子性(两个级别),指令执行电路112不需要将L1数据高速缓存124中的推测的存储器状态值和全局影子寄存器集合128中的推测的寄存器状态值回滚到第一全局检查点310,因此减少了与实施事务原子性相关联的开销。局部回滚事件324可以包括从局部影子寄存器126取回保留的寄存器状态值并且从由局部检查点312引用的位置取回存储器状态值。
类似地,全局回滚事件326可能发生。响应于检测到全局回滚事件326,指令执行电路112可以将存储在全局影子寄存器128中的推测的寄存器状态值和存储在L1数据高速缓存124中的推测的存储器状态值回滚到第一全局检查点。
图4是根据本公开的实施例的用于执行BT代码的方法400的框图。可以由处理逻辑来执行方法400,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如运行在处理设备、通用计算机系统或专用机器上的指令)、固件或其组合。在一个实施例中,可以由处理器102和处理核心106部分地执行方法400,如在图1中示出的那样。
为了解释的简单,将方法400描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时地发生并且具有未在本文中呈现和描述的其他动作。此外,不是所有图示的动作都可以被执行以实现根据公开主题的方法400。此外,本领域技术人员将理解并且意识到,方法400可以经由状态图或事件替代地被表示为一系列相关的状态。
参考图4,在402处,处理设备可以接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、与存储器位置相关联的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令。
在404处,处理设备可以推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值并且推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值。
在406处,处理设备可以标识可以基于活跃的提交标记来确定的事务模式。所述事务模式可以是“不在事务区中”(即,不在全局提交代码区中也不在局部提交代码区中)或“在全局事务区中但是不在局部事务区中”(即,在全局提交代码区中但是不在局部提交代码区中)或“在局部事务区中”(即,不在全局提交代码区中但是在局部提交代码区中)或“在全局事务区和局部事务区两者中”(即,在局部提交代码区中,所述局部提交代码区在全局提交代码区内)。
响应于标识全局事务区和局部事务区中的局部提交标记,在408处,处理设备可以在耦合到数据高速缓存的缓冲器中存储推测的存储器状态值,并且在410处,处理设备可以在第一影子寄存器中存储推测的寄存器状态值。
响应于标识全局事务区和局部事务区中的全局提交标记,在412处,处理设备可以在数据高速缓存的事务存储器中存储推测的存储器状态值,并且在414处,处理设备可以在第二影子寄存器中存储推测的寄存器状态值。
图5A是图示了根据本公开的一个实施例的用于实现包括异构核心的处理设备的处理器500的微架构的框图。具体地,处理器500描绘了根据本公开的至少一个实施例的将被包括在处理器中的顺序架构核心和寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括耦合到执行引擎单元550的前端单元530,并且两者都耦合到存储器单元570。处理器500可以包括精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(very long instruction word)(VLIW)核心或混合或替代的核心类型。如又一选择,处理器500可以包括专用核心,诸如例如网络或通信核心、压缩引擎、图形核心或者诸如此类。在一个实施例中,处理器500可以是多核心处理器或可以是多处理器系统的部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,所述指令高速缓存单元534被耦合到指令翻译旁视缓冲器(instruction translation lookasidebuffer)(TLB)536,所述指令翻译旁视缓冲器(TLB)536被耦合到指令取出单元538,所述指令取出单元538被耦合到解码单元540。所述解码单元540(还被称为解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,所述一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号从原始指令解码或否则反映原始指令或从原始指令导出。可以使用各种不同的机制来实现解码器540。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534被进一步耦合到存储器单元570。解码单元540被耦合到执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554和一个或多个调度器单元的集合556的重命名/分配器单元552。(一个或多个)调度器单元556表示任何数量的不同的调度器,包括保留站(RS)、中央指令窗等。(一个或多个)调度器单元556被耦合到(一个或多个)物理寄存器文件单元558。(一个或多个)物理寄存器文件单元558中的每个表示一个或多个物理寄存器文件,其不同的物理寄存器文件存储诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点等的一个或多个不同的数据类型、状态(例如,是将被执行的接下来的指令的地址的指令指针)等。(一个或多个)物理寄存器文件单元558被引退单元554重叠以图示各种方式,可以以所述各种方式来实现寄存器重命名和乱序执行(例如,使用(一个或多个)重新排序缓冲器和(一个或多个)引退寄存器文件、使用(一个或多个)未来文件、(一个或多个)历史文件和(一个或多个)引退寄存器文件;使用寄存器映射和寄存器的池等)。
在一个实现中,处理器500可以与关于图1描述的处理器102相同。特别地,处理器500可以包括如在图1中示出的处理核心106。
通常,从处理器的外部或从程序员的角度,架构寄存器是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储并且提供如在本文中描述的数据。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。引退单元554和(一个或多个)物理寄存器文件单元558被耦合到(一个或多个)执行群集560。(一个或多个)执行群集560包括一个或多个执行单元562的集合和一个或多个存储器访问单元564的集合。执行单元562可以执行各种操作(例如,移位、加、减、乘)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)操作。
虽然一些实施例可以包括专用于特定功能或功能的集合的多个执行单元,但是其他实施例可以包括仅一个执行单元或所有都执行所有功能的多个执行单元。(一个或多个)调度器单元556、(一个或多个)物理寄存器文件单元558和(一个或多个)执行群集560被示出为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线,和/或每个都具有它们自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行群集的存储器访问流水线,并且在单独的存储器访问流水线的情况下,实现了某些实施例,其中该流水线的仅执行群集具有(一个或多个)存储器访问单元564)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行并且其余顺序发布/执行。
存储器访问单元564的集合被耦合到存储器单元570,所述存储器单元570可以包括,仅列出几个示例,数据预取出器580、数据TLB单元572、数据高速缓存单元(DCU)574和级别2(L2)高速缓存单元576。在一些实施例中,DCU 574还被称为第一级别数据高速缓存(L1高速缓存)。DCU 574可以处理多个未解决(outstanding)的高速缓存未命中(miss)并且继续服务传入存储和加载。其还支持维持高速缓存一致性(coherency)。数据TLB单元572是用于通过映射虚拟和物理地址空间来改进虚拟地址翻译速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元570中的数据TLB单元572。L2高速缓存576可以被耦合到高速缓存的一个或多个其他级别并且最终被耦合到主存储器。
在一个实施例中,数据预取出器580通过自动地预测程序将要消耗那些数据来推测地加载/预取出数据到DCU 574。预取出可以指的是在处理器实际需要数据之前,将存储在存储器层级的一个存储器位置(例如,较低级别高速缓存或存储器)中的数据传递到更接近(例如,产生较低访问延迟)于处理器的较高级别存储器位置。更具体地,预取出可以指的是在处理器发布针对正被返回的特定数据的需求之前从较低级别高度缓存/存储器之一到数据高速缓存和/或预取出缓冲器的数据的早期取回。
处理器500可以支持一个或多个指令集(例如,x86指令集(具有已经被添加了较新版本的一些扩展);Sunnyvale, CA的MIPS技术的MIPS指令集;Sunnyvale, CA的ARM控股的ARM指令集(具有诸如NEON之类的可选的附加扩展))。
应当理解,核心可以支持多线程(执行操作或线程的两个或更多并行集合),并且可以以多种方式这样做,所述多种方式包括时间片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的线程中的每个提供逻辑核心)或其组合(例如,诸如在Intel®超线程技术中的时间片取出和解码以及此后的同时多线程)。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应当理解,可以将寄存器重命名用在顺序架构中。虽然处理器的图示的实施例还包括单独的指令以及数据高速缓存单元和共享的L2高速缓存单元,但是替代的实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如级别1(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和外部高速缓存的组合,所述外部高速缓存在核心和/或处理器的外部。替代地,所有高速缓存可以在核心和/或处理器的外部。
图5B是图示了根据本公开的一些实施例的由图5A的处理器500实现的顺序流水线和寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框图示了顺序流水线,而虚线框图示了寄存器重命名、乱序发布/执行流水线。在图5B中,作为流水线的处理器500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(还被称为分派或发布)级512、寄存器读/存储器读级514、执行级516、写回/存储器写级518、异常处理级522和提交级524。在一些实施例中,级502-524的排序可以与图示的不同并且不限于在图5B中示出的特定排序。
图6图示了根据本公开的一个实施例的用于包括混合核心的处理器600的微架构的框图。在一些实施例中,可以实现根据一个实施例的指令以对具有字节、字、双字、四倍字(quadword)等的大小以及诸如单精度和双精度整数以及浮点数据类型之类的数据类型的数据元素操作。在一个实施例中,顺序前端601是取出将被执行的指令并且准备它们以之后在处理器流水线中使用的处理器600的部分。
前端601可以包括若干个单元。在一个实施例中,指令预取出器626从存储器取出指令并且将它们馈送到指令解码器628,所述指令解码器628继而解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码为一个或多个操作,所述一个或多个操作被称为机器可以执行的“微指令”或“微操作”(还称为微op或uop)。在其他实施例中,解码器将指令解析为由微架构使用的操作码和相应的数据以及控制字段以执行根据一个实施例的操作。在一个实施例中,跟踪高速缓存(trace cache)630采取解码的uop并且将它们组装为uop队列634中的程序排序的序列或轨迹用于执行。当跟踪高速缓存630遇到复杂的指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微op,而其他需要若干微op来完成全部操作。在一个实施例中,如果需要多于四个微op来完成指令,那么解码器628访问微代码ROM 632以进行指令。对于一个实施例,可以在指令解码器628处将指令解码为小数量的微op用于处理。在另一个实施例中,如果需要多个微op来实现操作,那么可以将指令存储在微代码ROM 632内。跟踪高速缓存630指的是入口点可编程逻辑阵列(PLA)以确定用于读微代码序列的正确的微指令指针来完成来自微代码ROM 632的根据一个实施例的一个或多个指令。在所述微代码ROM632完成用于指令的微op排序之后,机器的前端601继续从跟踪高速缓存630取出微op。
乱序执行引擎603是指令被准备用于执行的地方。乱序执行逻辑具有多个缓冲器以平滑(smooth out)指令的流并且对指令的流重新排序以当它们沿着(go down)流水线和被调度用于执行时优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名为寄存器文件中的条目。分配器还在指令调度器之前为两个uop队列之一中的每个uop分配条目,一个用于存储器操作并且一个用于的非存储器操作:存储器调度器、快调度器602、慢/通用浮点调度器604和简单浮点调度器606。uop调度器602、604、606基于它们的依赖的输入寄存器操作数源的准备度(readiness)和uop需要用于完成它们的操作的执行资源的可用性来确定uop何时准备好执行。一个实施例的快调度器602可以在主时钟周期的每一半上调度而其他调度器可以每个主处理器时钟周期仅调度一次。调度器为分派端口仲裁以调度uop用于执行。
寄存器文件608、610位于调度器602、604、606和执行块611中的执行单元612、614、616、618、620、622、624之间。对于整数和浮点操作,分别存在单独的寄存器文件608、610。一个实施例的每个寄存器文件608、610还包括旁路(bypass)网络,所述旁路网络可以旁路或转发只是完成的结果到新的依赖的uop,所述完成的结果还尚未被写到寄存器文件中。整数寄存器文件608和浮点寄存器文件610还能够彼此传送数据。对于一个实施例,将整数寄存器文件608分割为两个单独的寄存器文件,一个寄存器文件用于数据的低顺序32比特并且第二寄存器文件用于数据的高顺序32比特。一个实施例的浮点寄存器文件610具有128比特宽的条目,因为浮点指令通常具有宽度上从64到128比特的操作数。
执行块611包含执行单元612、614、616、618、620、622、624,其中指令被实际地执行。该部分包括寄存器文件608、610,所述寄存器文件608、610存储微指令需要以执行的整数和浮点数据操作数值。一个实施例的处理器600由多个执行单元组成:地址生成单元(AGU)612、AGU 614、快ALU 616、快ALU 618、慢ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD和SSE或其他操作。一个实施例的浮点ALU 622包括64比特乘以64比特的浮点除法器以执行除、平方根和其余微op。对于本公开的实施例,可以用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元616、618。一个实施例的快ALU616、618可以以半个时钟周期的有效延迟执行快操作。对于一个实施例,大部分复杂的整数操作去往慢ALU 620,因为所述慢ALU 620包括用于长延迟类型的操作的整数执行硬件,诸如乘法器、移位、标志逻辑和分支处理。由AGU 612、614执行存储器加载/存储操作。对于一个实施例,在执行对64比特数据操作数的整数操作的上下文中描述了整数ALU 616、618、620。在替代的实施例中,可以实现ALU 616、618、620以支持包括16、32、128、256等的多种数据比特。类似地,可以实现浮点单元622、624以支持具有各种宽度的比特的操作数的范围。对于一个实施例,浮点单元622、624可以结合SIMD和多媒体指令对128比特宽打包数据操作数操作。
在一个实施例中,在父加载已经完成执行之前,uop调度器602、604、606分派依赖的操作。因为uop在处理器600中被推测地调度和执行,所以处理器600还包括用于处理存储器未命中的逻辑。如果数据将未命中加载在数据高速缓存中,在流水线中可以存在飞行(flight)中的依赖的操作,其给调度器留下临时地不正确数据。重放机制跟踪并且重新执行使用不正确数据的指令。仅依赖的操作需要重放并且独立的操作被允许完成。处理器的一个实施例的调度器和重放机制还被设计用于抓住用于文本串比较操作的指令序列。
处理器600还包括用于根据本公开的实施例来实现对存储器消歧(disambiguation)的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现对存储器消歧的存储地址预测的存储地址预测器(未示出)。
术语“寄存器”可以指的是被用作用于标识操作数的指令的部分的板上处理器存储位置。换言之,寄存器可以是从处理器的外部(从程序员的角度)可使用的那些。然而,实施例的寄存器不应在含义上被限制于特定类型的电路。而是,实施例的寄存器能存储和提供数据并且执行在本文中描述的功能。可以由处理器内的电路使用任何数量的不同的技术来实现在本文中描述的寄存器,所述任何数量的不同的技术诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二比特整数数据。一个实施例的寄存器文件还包含用于打包数据的八个多媒体SIMD寄存器。
对于以下讨论,寄存器被理解成是被设计以保持打包数据的数据寄存器,诸如以来自Santa Clara, California的Intel公司的MMX技术使能的微处理器中的64比特宽MMXTM寄存器(在一些实例中还被称为‘mm’寄存器)。以整数和浮点形式两者可用的这些MMX寄存器可以与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或以后的(一般地被称为“SSEx”)技术的128比特宽XMM寄存器还可以被用来保持此类打包数据操作数。在一个实施例中,在存储打包数据和整数数据中,寄存器不需要在两个数据类型之间区分。在一个实施例中,将整数和浮点包含在相同的寄存器文件中或者不同的寄存器文件中。此外,在一个实施例中,可以将浮点和整数数据存储在不同的寄存器或相同的寄存器中。
现在参考图7,示出了图示在其中可以使用本公开的实施例的系统700的框图。如在图7中示出的那样,多处理器系统700是点到点互连系统,并且包括经由点到点互连750耦合的第一处理器770和第二处理器780。虽然示出了具有仅两个处理器770、780,但是将会理解,本公开的实施例的范围不限于此。在其他实施例中,一个或多个附加的处理器可以存在于给定的处理器中。在一个实施例中,多处理器系统700可以实现如在本文中描述的混合核心。
示出了处理器770和780分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的部分的点到点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用P-P接口电路778、788经由点到点(P-P)接口750交换信息。如在图7中示出的那样,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,所述存储器732和存储器734可以是本地地附接到相应的处理器的主存储器的部分。
处理器770、780可以每个使用点到点接口电路776、794、786、798经由个别P-P接口752、754与芯片组790交换信息。芯片组790还可以经由高性能图形接口739与高性能图形电路738交换信息。
共享的高速缓存(未示出)可以被包括在任一处理器中或在两个处理器之外,仍然经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一处理器或两个处理器的局部高速缓存信息可以被存储在共享的高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或诸如PCI Express总线或另一个第三代I/O互连总线之类的总线,虽然本公开的范围不限于此。
如在图7中示出的那样,各种I/O设备714可以连同总线桥718耦合到第一总线716,所述总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(low pin count)(LPC)总线。在一个实施例中,各种设备可以被耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727和诸如可以包括指令/代码和数据730的盘驱动器或其他大容量存储设备之类的存储单元728。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点到点架构,系统可以实现多点(multi-drop)总线或其他此类架构。
现在参考图8,示出了本公开的一个实施例可以在其中操作的系统800的框图。系统800可以包括一个或多个处理器810、815,所述处理器810、815被耦合到图形存储器控制器集线器(GMCH)820。在图8中用虚线来表示附加的处理器815的可选的性质。在一个实施例中,根据本公开的实施例,处理器810、815实现了混合核心。
每个处理器810、815可以是如以上描述的电路、集成电路、处理器和/或硅集成电路的一些版本。然而,应当注意,集成图形逻辑和集成存储器控制单元将存在于处理器810、815中是不太可能的。图8图示了GMCH 820可以被耦合到存储器840,所述存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,所述DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组或芯片组的一部分。GMCH 820可以与(一个或多个)处理器810、815通信,并且控制(一个或多个)处理器810、815和存储器840之间的交互。GMCH 820还可以充当(一个或多个)处理器810、815和系统800的其他元素之间的加速总线接口。对于至少一个实施例,GMCH 820经由诸如前端总线(frontside bus)895之类的多点总线与(一个或多个)处理器810、815通信。
此外,GMCH 820被耦合到显示器845(诸如平板或触摸屏显示器)。GMCH 820可以包括集成图形加速器。GMCH 820被进一步耦合到输入/输出(I/O)控制器集线器(ICH)850,所述输入/输出(I/O)控制器集线器(ICH)850可以被用来将各种外围设备耦合到系统800。例如,在图8的实施例中示出的是外部图形设备860,连同另一个外围设备870耦合到ICH 850,所述外部图形设备860可以是分立的图形设备。
替代地,附加的或不同的处理器也可以存在于系统800中。例如,(一个或多个)附加的处理器815可以包括与处理器810相同的(一个或多个)附加的处理器、与处理器810、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器异构的或不对称的(一个或多个)附加的处理器。在(一个或多个)处理器810、815之间在包括架构、微架构、热、功耗特性以及诸如此类的一系列优点的度量(spectrum ofmetrics of merit)的方面中可以存在多种差异。这些差异可以有效地将它们本身表现(manifest)为在处理器810、815之中的不对称性和异构性。对于至少一个实施例,各种处理器810、815可以驻留在相同的管芯封装中。
现在参考图9,示出了本公开的实施例可以在其中操作的系统900的框图。图9图示了处理器970、980。在一个实施例中,处理器970、980可以实现以上描述的混合核心。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点到点(P-P)接口978和988之间的点到点互连950彼此互相通信。处理器970、980中的每个如示出的那样通过相应的P-P接口976至994和986至998经由点到点互连952和954与芯片组990通信。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如描绘的那样,存储器932、934耦合到CL 972、982并且I/O设备914也耦合到控制逻辑972、982。旧有I/O设备915经由接口996耦合到芯片组990。
可以以许多不同系统类型来实现实施例。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC上的可选特征。在一些实现中,如在图10中示出的SoC 1000包括如在图1中示出的SoC 100的特征。在图10中,(一个或多个)互连单元1012被耦合到:应用处理器1020,其包括一个或多个核心的集合1002A-N和(一个或多个)共享的高速缓存单元1006;系统代理单元1010;(一个或多个)总线控制器单元1016;(一个或多个)集成存储器控制器单元1014;集合或一个或多个媒体处理器1018,其可以包括集成图形逻辑1008、用于提供静止照相机和/或视频摄像机功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026和用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;和用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,存储器模块可以被包括在(一个或多个)集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可以用来访问和/或控制存储器的SoC 1000的一个或多个其他部件中。应用处理器1020可以包括用于实现如在本文中的实施例中描述的混合核心的存储地址预测器。
存储器层级包括在核心内的高速缓存的一个或多个级别、集合或一个或多个共享高速缓存单元1006和耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可以包括一个或多个中级别高速缓存,诸如级别2(L2)、级别3(L3)、级别4(L4)或其他级别的高速缓存、最后级别高速缓存(LLC)和/或其组合。
在一些实施例中,核心1002A-N中的一个或多个具有多线程能力。系统代理1010包括协调和操作核心1002A-N的那些部件。系统代理单元1010可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心1002A-N和集成图形逻辑1008的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核心1002A-N在架构和/或指令集的方面中可以是同构的或异构的。例如,核心1002A-N中的一些可以是顺序的而其他是乱序的。作为另一个示例,核心1002A-N中的两个或更多可能能够执行相同的指令集,而其他可能能够执行该指令集的仅子集或不同的指令集。
应用处理器1020可以是通用处理器,诸如从Santa Clara, Calif的IntelTM公司可得到的CoreTM i3、i5、i7、2 Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM处理器。替代地,应用处理器1020可以来自另一个公司,诸如ARM HoldingsTM有限公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或者诸如此类。可以在一个或多个芯片上实现应用处理器1020。应用处理器1020可以是使用多个工艺技术中的任何工艺技术的一个或多个衬底的一部分和/或可以在使用多个工艺技术中的任何工艺技术的一个或多个衬底上实现,所述多个工艺技术诸如例如BiCMOS、CMOS或NMOS。
图11是根据本公开的片上系统(SoC)设计的实施例的框图。作为具体说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE指的是将由最终用户用来通信的任何设备,诸如手持式电话、智能电话、平板计算机、超薄笔记本计算机、具有宽带适配器的笔记本计算机或任何其他类似的通信设备。UE常常连接到基站或节点,其在性质上潜在地对应于GSM网络中的移动台(MS)。
此处,SOC 1100包括2个核心——1106和1107。核心1106和1107可以符合指令集架构,诸如基于Intel® Architecture CoreTM的处理器、Advanced Micro Devices公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及他们的被许可人或采用者(adopter)。核心1106和1107被耦合到与总线接口单元1109和L2高速缓存1110相关联的高速缓存控制1108以与系统1100的其他部分通信。互连1110包括片上互连,诸如IOSF、AMBA或以上讨论的其他互连,其潜在地实现描述的公开的一个或多个方面。在一个实施例中,核心1106、1107可以实现如在本文中的实施例中描述的混合核心。
互连1110提供了到其他部件的通信信道,诸如订户身份模块(SIM)1130以与SIM卡对接(interface)、引导ROM 1135以保存引导代码用于由核心1106和1107执行来初始化和引导SoC 1100、SDRAM控制器1140以与外部存储器(例如,DRAM 1160)对接、闪存控制器1145以与非易失性存储器(例如,闪存1165)对接、外围控制1150(例如,串行外围接口)以与外围设备对接、视频编解码器1120和视频接口1125以显示和接收输入(例如,触摸使能的输入)、GPU 1115以执行图形相关计算等。这些接口中的任何接口可以合并在本文中描述的本公开的方面。另外,系统1100图示了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180和Wi-Fi 1185。
图12图示了计算机系统1200的示例形式的机器的图形表示,在所述计算机系统1200中,可以执行指令集,用于使得机器执行在本文中讨论的方法(methodology)的任何一个或多个方法。在替代的实施例中,可以将机器连接(例如,联网)到LAN、内联网、外联网或因特网中的其他机器。机器可以以客户端-服务器网络环境中的服务器或客户端设备的能力、或作为对等(或分布式)网络环境中的对等体机器来操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥或能够执行指定要由该机器采取的动作的指令的集合(顺序的或其他)的任何机器。此外,虽然仅图示了单个机器,但是术语“机器”还应当被解释成包括机器的任何集合,所述机器单独地或联合地执行指令的集合(或多个集合)以执行在本文中讨论的方法的任何一个或多个方法。
计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1218,其经由总线1230彼此通信。
处理设备1202表示一个或多个通用处理设备,诸如微处理器、中央处理器单元或者诸如此类。更特别地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器或实现指令集的组合的处理器。处理设备1202还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或者诸如此类。在一个实施例中,处理设备1202可以包括一个或多个处理核心。处理设备1202被配置成执行用于执行在本文中讨论的操作和步骤的处理逻辑1226。例如,处理逻辑1226可以执行如在图4中描述的操作。在一个实施例中,处理设备1202与如以本公开的实施例在本文中描述的那样的关于图1描述的处理器架构102相同。
计算机系统1200可以进一步包括通信地耦合到网络1220的网络接口设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)和信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228和音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,在所述机器可访问存储介质1224上的是存储的实现在本文中描述的功能的方法中的任何一个或多个方法的软件1226,诸如实现如上所述的用于存储器消歧的存储地址预测。在由计算机系统1200对其执行期间,软件1226还可以完全地或至少部分地驻留在主存储器1204中作为指令1226和/或驻留在处理设备1202中作为处理逻辑1226;主存储器1204和处理设备1202还构成机器可访问存储介质。
机器可读存储介质1224还可以被用来存储实现用于诸如根据本公开的实施例描述的混合核心的存储地址预测的指令1226。虽然在示例实施例中将机器可访问存储介质1128示出为单个介质,但是术语“机器可访问存储介质”应当被理解成包括存储指令的一个或多个集合的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应当被理解成包括能够存储、编码或携带用于由机器执行的指令的集合以及使得机器执行本公开的方法的任何一个或多个方法的任何介质。术语“机器可访问存储介质”应当因此被理解成包括但不限于固态存储器以及光和磁介质。
以下示例与进一步的实施例有关。示例1是一种处理器,其包括指令引退电路、包括事务存储器的数据高速缓存、第一影子寄存器集合和第二影子寄存器集合,以及指令执行电路,用以接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、与存储器位置相关联的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令、推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值和推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值、响应于标识第一局部提交标记,在与指令引退电路相关联的缓冲器中存储推测的存储器状态值并且在第一影子寄存器中存储推测的寄存器状态值、并且响应于标识第一全局提交标记,在数据高速缓存的事务存储器中存储推测的存储器状态值并且在第二影子寄存器中存储推测的寄存器状态值。
在示例2中,示例1的主题可以进一步提供:处理核心包括二进制翻译器以基于输入指令生成指令的序列,并且其中局部提交模式与执行的代码的第一部分相关联,并且全局提交模式与包含代码的第一部分的代码的第二部分相关联。
在示例3中,示例1的主题可以进一步提供:指令执行电路进一步用于标识第二局部提交标记、响应于标识第二提交标记,将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的局部检查点。
在示例4中,示例1和3中的任何示例的主题可以进一步提供:指令执行电路进一步用于推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值、在第一影子寄存器中存储第二推测的寄存器值、标识局部回滚事件、并且将处理设备回滚到存储在由局部检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第一影子寄存器中的第二推测的寄存器状态值。
在示例5中,示例1的主题可以进一步提供:指令执行电路进一步用于标识第二全局提交标记、并且响应于标识第二全局提交标记,清除与事务存储器中的推测的存储器状态值相关联的推测标志、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的全局检查点。
在示例6中,示例1和5中的任何示例的主题可以进一步提供:指令执行电路进一步用于推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值、在第二影子寄存器中存储第二推测的寄存器值、标识全局回滚事件、并且将处理设备回滚到存储在由全局检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第二影子寄存器中的第二推测的寄存器状态值。
在示例7中,示例1的主题可以进一步提供:使用写时复制(CoW)结构来实现第一影子寄存器或第二影子寄存器中的至少一个。
在示例8中,示例1的主题可以进一步提供:用于在数据高速缓存的事务存储器中存储推测的存储器状态值,指令执行电路用于在事务存储器中的高速缓存线中存储推测的存储器状态值并且将高速缓存线中的推测标志设置成推测的状态。
在示例9中,示例1的主题可以进一步提供:事务存储器包括用于存储推测的存储器值的高速缓存线,并且其中高速缓存线包括用于存储推测的状态的推测标志,并且其中推测标志是高速缓存线的读/写状态标志。
示例10是一种系统,其包括存储器和处理器,所述处理器通信地耦合到所述存储器,包括指令引退电路、包括事务存储器的数据高速缓存、和指令执行电路,以接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记和与存储器位置相关联的第一存储器访问指令、推测地执行第一存储器访问指令以生成由存储器位置引用的推测的存储器状态值、响应于标识第一局部提交标记,在与指令引退电路相关联的缓冲器中存储推测的存储器状态值、并且响应于标识第一全局提交标记,在数据高速缓存的事务存储器中存储推测的存储器状态值。
在示例11中,示例10的主题可以进一步提供:指令执行电路进一步用于标识第二局部提交标记、并且响应于标识第二提交标记,将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态、并且生成引用高速缓存线和物理寄存器的局部检查点、标识局部回滚事件、并且将处理设备回滚到存储在由局部检查点引用的高速缓存线中的状态值。
在示例12中,示例10的主题可以进一步提供:指令执行电路进一步用于标识第二全局提交标记、并且响应于标识所述第二全局提交标记,清除与事务存储器中的推测的存储器状态值相关联的推测标志、并且生成引用高速缓存线的全局检查点、标识全局回滚事件、并且将处理设备回滚到存储在由全局检查点引用的高速缓存线中的状态值。
在示例13中,示例10的主题可以进一步提供:用于在数据高速缓存的事务存储器中存储推测的存储器状态值,指令执行电路用于在事务存储器中的高速缓存线中存储推测的存储器状态值并且将高速缓存线中的推测标志设置成推测的状态。
示例14是一种处理设备,包括第一影子寄存器、第二影子寄存器和通信地耦合到第一影子寄存器和第二影子寄存器的指令执行电路,以接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记和引用架构寄存器的第一寄存器访问指令,推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值,响应于标识第一局部提交标记,在第一影子寄存器中存储推测的寄存器状态值,并且响应于标识第一全局提交标记,在第二影子寄存器中存储推测的寄存器状态值。
在示例15中,示例14的主题可以进一步提供:指令执行电路进一步用于标识第二局部提交标记、并且响应于标识第二提交标记,将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用架构寄存器的局部检查点、推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值、在第一影子寄存器中存储第二推测的寄存器值、标识局部回滚事件、并且将处理设备回滚到存储在由局部检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第一影子寄存器中的第二推测的寄存器状态值。
在示例16中,示例14的主题可以进一步提供:指令执行电路进一步用于标识第二全局提交标记、并且响应于标识第二全局提交标记,将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的全局检查点、推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值、在第二影子寄存器中存储第二推测的寄存器值、标识全局回滚事件、并且将处理设备回滚到存储在由全局检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第二影子寄存器中的第二推测的寄存器状态值。
在示例17中,示例14的主题可以进一步提供:使用写时复制(CoW)结构来实现第一影子寄存器或第二影子寄存器中的至少一个。
示例18是一种方法,包括由处理器接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、与存储器位置相关联的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令、推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值和推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值、响应于标识第一局部提交标记,在耦合到数据高速缓存的缓冲器中存储推测的存储器状态值、并且在第一影子寄存器中存储推测的寄存器状态值、并且响应于标识第一全局提交标记,在数据高速缓存的事务存储器中存储推测的存储器状态值、并且在第二影子寄存器中存储推测的寄存器状态值。
在示例19中,示例18的主题可以进一步包括标识第二局部提交标记、并且响应于标识第二局部提交标记,将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的局部检查点。
在示例20中,示例18的主题可以进一步包括标识第二全局提交标记、并且响应于标识第二全局提交标记,清除与事务存储器中的推测的存储器状态值相关联的推测标志、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的全局检查点。
示例21是一种装置,包括:用于执行示例18至20中的任何示例的方法的装置。
示例22是一种机器可读非暂态介质,其具有存储在其上的程序代码,所述程序代码当被执行时执行包括如下内容的操作:由处理器接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、与存储器位置相关联的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令、推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值和推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值、响应于标识第一局部提交标记,在耦合到数据高速缓存的缓冲器中存储推测的存储器状态值、并且在第一影子寄存器中存储推测的寄存器状态值、并且响应于标识第一全局提交标记、在数据高速缓存的事务存储器中存储推测的存储器状态值、并且在第二影子寄存器中存储推测的寄存器状态值。
在示例23中,示例22的主题可以进一步提供:所述操作进一步包括标识第二局部提交标记、并且响应于标识第二局部提交标记,将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的局部检查点。
在示例24中,示例22的主题可以进一步提供:所述操作进一步包括标识第二全局提交标记、并且响应于标识第二全局提交标记,清除与事务存储器中的推测的存储器状态值相关联的推测标志、将推测的寄存器状态值从物理寄存器复制到架构寄存器、并且生成引用高速缓存线和架构寄存器的全局检查点。
设计可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用的那样,可以使用硬件描述语言或另一个功能描述语言来表示硬件。此外,在设计过程的一些阶段处可以产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在一些阶段处到达了表示硬件模型中的各种设备的物理放置的数据的级别。在使用常规半导体制造技术的情况中,表示硬件模型的数据可以是指定用来生产集成电路的掩模的不同的掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。诸如盘之类的存储器或磁的或光的存储设备可以是用于存储经由调制的或否则生成以传输信息的光波或电波传输的此类信息的机器可读介质。当传输指示或携带代码或设计的电载波时,从执行电信号的复制、缓冲或重新传输的程度上说,制作新的副本。因此,通信提供者或网络提供者可以在有形的、机器可读介质上至少临时地存储物品(article),诸如编码成载波的信息,实现本公开的实施例的技术。
如在本文中使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如与非暂态介质相关联的微控制器以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是硬件,其被具体地配置成识别和/或执行将被保持在非暂态介质上的代码。此外,在另一个实施例中,模块的使用指的是包括代码的非暂态介质,其具体地适于由微控制器执行以执行预定操作。并且如可以推断的那样,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。常常图示为分离的模块边界通常变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,而潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,诸如可编程逻辑设备。
在一个实施例中,短语‘被配置成’的使用指的是布置、放在一起、制造、提供用于销售、导入和/或设计装置、硬件、逻辑或元素以执行指定的或确定的任务。在该示例中,未正在操作的装置或其元件仍旧“被配置成”执行指定的任务,如果其被设计、耦合和/或互连以执行所述指定的任务的话。作为纯说明性示例,在操作期间逻辑门可以提供0或1。但是‘被配置成’向时钟提供使能信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。代之以,逻辑门是以一些方式耦合的逻辑门,一些方式是,在操作期间,1或0输出将使能时钟。再次注意,术语‘被配置成’的使用不需要操作,但是代之以聚焦于装置、硬件和/或元素的潜在的状态,其中在潜在的状态中,装置、硬件和/或元素被设计成当装置、硬件和/或元素正在操作时执行特定任务。
此外,在一个实施例中,短语‘以’、‘能够/以’和/或‘可操作以’的使用指的是一些装置、逻辑、硬件和/或元素以此类方式被设计成使能装置、逻辑、硬件和/或元素以指定的方式的使用。如以上注意的那样,在一个实施例中,‘以’、‘能够/以’和/或‘可操作以’的使用指的是装置、逻辑、硬件和/或元素的潜在的状态,其中装置、逻辑、硬件和/或元素未正在操作但是以此类方式被设计成使能装置以指定的方式使用。
如在本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用还被称为1和0,其简单地表示二进制逻辑状态。例如,1指的是高逻辑电平并且0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保持单个逻辑的值或多个逻辑的值。然而,已经使用计算机系统中的值的其他表示。例如,十进制数字十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,可以由值或值的部分来表示状态。作为示例,诸如逻辑的一之类的第一值可以表示默认的或初始的状态,而诸如逻辑的零之类的第二值可以表示非默认的状态。另外,在一个实施例中,术语重新设置和设置分别指的是默认的和更新的值或状态。例如,默认的值潜在地包括高逻辑的值,即重新设置,而更新的值潜在地包括低逻辑的值,即,设置。注意,值的任何组合可以被利用来表示任何数量的状态。
可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现以上记载的方法、硬件、软件、固件或代码的实施例,所述指令或代码可由处理元件执行。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)由诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声学存储设备;用于保持从暂态的(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备等,其将被从可以从那里接收信息的非暂态介质区分。
可以将用于执行本公开的实施例的程序逻辑的指令存储在系统中的存储器内,系统中存储器诸如DRAM、高速缓存、闪存或其他存储设备。此外,可以经由网络或通过其他计算机可读介质分发指令。因此,机器可读介质可以包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制,但是不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在经由电的、光的、声学的或其他形式的传播的信号(例如,载波、红外信号、数字信号等)通过因特网的信息的传输中使用的有形的机器可读存储设备。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形的机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿本说明书在各种位置中的短语“在一个实施例中”或“在实施例中”的出现不一定都指的是相同的实施例。此外,可以以任何合适的方式将特定特征、结构或特性组合在一个或多个实施例中。
在前述说明书中,已经参考具体示例性实施例给出了具体实施方式。然而,将清楚的是,在不脱离如在所附权利要求书中记载的本公开的较广精神和范围的情况下,可以对其做出各种修改和改变。因此,说明书和附图将被视为说明性的意义而不是限制性的意义。此外,实施例和其他示例性语言的前述使用不一定指的是相同的实施例或相同的示例,而可能指的是不同的和相异的(distinct)实施例以及潜在地指相同的实施例。

Claims (20)

1.一种处理设备,包括:
第一影子寄存器;
第二影子寄存器;以及
指令执行电路,其通信地耦合到第一影子寄存器和第二影子寄存器,以:
接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记和引用架构寄存器的第一寄存器访问指令;
推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值;
响应于标识第一局部提交标记,在第一影子寄存器中存储推测的寄存器状态值;并且
响应于标识第一全局提交标记,在第二影子寄存器中存储推测的寄存器状态值。
2. 如权利要求1所述的处理设备,其中指令执行电路进一步用于:
标识第二局部提交标记;并且
响应于标识第二提交标记,
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用架构寄存器的局部检查点;
推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值;
在第一影子寄存器中存储第二推测的寄存器值;
标识局部回滚事件;并且
将处理设备回滚到存储在由局部检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第一影子寄存器中的第二推测的寄存器状态值。
3. 如权利要求1所述的处理设备,其中指令执行电路进一步用于:
标识第二全局提交标记;并且
响应于标识第二全局提交标记,
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用高速缓存线和架构寄存器的全局检查点;
推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值;
在第二影子寄存器中存储第二推测的寄存器值;
标识全局回滚事件;并且
将处理设备回滚到存储在由全局检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第二影子寄存器中的第二推测的寄存器状态值。
4.如权利要求1所述的处理设备,其中使用写时复制(CoW)结构来实现第一影子寄存器或第二影子寄存器中的至少一个。
5. 一种系统,包括:
存储器;以及
处理器,其通信地耦合到所述存储器,包括:
指令引退电路;
包括事务存储器的数据高速缓存;以及
指令执行电路,以:
接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记和与存储器位置相关联的第一存储器访问指令;
推测地执行第一存储器访问指令以生成由存储器位置引用的推测的存储器状态值;
响应于标识第一局部提交标记,在与指令引退电路相关联的缓冲器中存储推测的存储器状态值;并且
响应于标识第一全局提交标记,在数据高速缓存的事务存储器中存储推测的存储器状态值。
6. 如权利要求5所述的系统,其中指令执行电路进一步用于:
标识第二局部提交标记;并且
响应于标识第二提交标记,
将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态;并且
生成引用高速缓存线和物理寄存器的局部检查点;
标识局部回滚事件;并且
将处理设备回滚到存储在由局部检查点引用的高速缓存线中的状态值。
7. 如权利要求5所述的系统,其中指令执行电路进一步用于:
标识第二全局提交标记;并且
响应于标识所述第二全局提交标记,
清除与事务存储器中的推测的存储器状态值相关联的推测标志;并且
生成引用高速缓存线的全局检查点;
标识全局回滚事件;并且
将处理设备回滚到存储在由全局检查点引用的高速缓存线中的状态值。
8. 如权利要求5所述的系统,其中用于在数据高速缓存的事务存储器中存储推测的存储器状态值,指令执行电路将用于:
在事务存储器中的高速缓存线中存储推测的存储器状态值;并且
将高速缓存线中的推测标志设置成推测的状态。
9.一种处理设备,包括:
指令引退电路;
包括事务存储器的数据高速缓存;
第一影子寄存器和第二影子寄存器;以及
指令执行电路,以:
接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、引用存储器位置的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令;
推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值和推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值;
响应于标识第一局部提交标记,
在与指令引退电路相关联的缓冲器中存储推测的存储器状态值;并且
在第一影子寄存器中存储推测的寄存器状态值;并且
响应于标识第一全局提交标记,
在数据高速缓存的事务存储器中存储推测的存储器状态值;并且
在第二影子寄存器中存储推测的寄存器状态值。
10.如权利要求9所述的处理设备,其中处理核心包括二进制翻译器以基于输入指令来生成指令的序列,并且其中局部提交模式与执行的代码的第一部分相关联,并且全局提交模式与包含代码的第一部分的代码的第二部分相关联。
11. 如权利要求9所述的处理设备,其中指令执行电路进一步用于:
标识第二局部提交标记;并且
响应于标识第二提交标记,
将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态;
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用高速缓存线和架构寄存器的局部检查点。
12.如权利要求9和11中的任一项所述的处理设备,其中指令执行电路进一步用于:
推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值;
在第一影子寄存器中存储第二推测的寄存器值;
标识局部回滚事件;并且
将处理设备回滚到存储在由局部检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第一影子寄存器中的第二推测的寄存器状态值。
13. 如权利要求9所述的处理设备,其中指令执行电路进一步用于:
标识第二全局提交标记;并且
响应于标识第二全局提交标记,
清除与事务存储器中的推测的存储器状态值相关联的推测标志;
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用高速缓存线和架构寄存器的全局检查点。
14.如权利要求9和13中的任一项所述的处理设备,其中指令执行电路进一步用于:
推测地执行第二寄存器访问指令以生成第二推测的寄存器状态值;
在第二影子寄存器中存储第二推测的寄存器值;
标识全局回滚事件;并且
将处理设备回滚到存储在由全局检查点引用的高速缓存线中的推测的存储器状态值并且回滚到存储在第二影子寄存器中的第二推测的寄存器状态值。
15.如权利要求9所述的处理设备,其中使用写时复制(CoW)结构来实现第一影子寄存器或第二影子寄存器中的至少一个。
16. 如权利要求9所述的处理设备,其中用于在数据高速缓存的事务存储器中存储推测的存储器状态值,指令执行电路将用于:
在事务存储器中的高速缓存线中存储推测的存储器状态值;并且
将高速缓存线中的推测标志设置成推测的状态。
17.如权利要求9所述的处理设备,其中事务存储器包括用于存储推测的存储器值的高速缓存线,并且其中高速缓存线包括用于存储推测的状态的推测标志,并且其中推测标志是高速缓存线的读/写状态标志。
18.一种方法,包括:
由处理器接收指令的序列,所述指令的序列包括第一局部提交标记、第一全局提交标记、与存储器位置相关联的第一存储器访问指令和引用架构寄存器的第一寄存器访问指令;
推测地执行第一存储器访问指令以生成与存储器位置相关联的推测的存储器状态值和推测地执行第一寄存器访问指令以生成与物理寄存器相关联的推测的寄存器状态值;
响应于标识第一局部提交标记,
在耦合到数据高速缓存的缓冲器中存储推测的存储器状态值;并且
在第一影子寄存器中存储推测的寄存器状态值;并且
响应于标识第一全局提交标记,
在数据高速缓存的事务存储器中存储推测的存储器状态值;并且
在第二影子寄存器中存储推测的寄存器状态值。
19. 如权利要求18所述的方法,进一步包括:
标识第二局部提交标记;并且
响应于标识第二局部提交标记,
将推测的存储器状态值从缓冲器复制到事务存储器中的高速缓存线并且将推测标志设置成推测的状态;
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用高速缓存线和架构寄存器的局部检查点。
20. 如权利要求18所述的方法,进一步包括:
标识第二全局提交标记;并且
响应于标识第二全局提交标记,
清除与事务存储器中的推测的存储器状态值相关联的推测标志;
将推测的寄存器状态值从物理寄存器复制到架构寄存器;并且
生成引用高速缓存线和架构寄存器的全局检查点。
CN201810166118.XA 2017-03-30 2018-02-28 用于基于二进制翻译的微处理器的混合原子性支持 Pending CN108694056A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/474,666 US10296343B2 (en) 2017-03-30 2017-03-30 Hybrid atomicity support for a binary translation based microprocessor
US15/474666 2017-03-30

Publications (1)

Publication Number Publication Date
CN108694056A true CN108694056A (zh) 2018-10-23

Family

ID=63524578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810166118.XA Pending CN108694056A (zh) 2017-03-30 2018-02-28 用于基于二进制翻译的微处理器的混合原子性支持

Country Status (3)

Country Link
US (1) US10296343B2 (zh)
CN (1) CN108694056A (zh)
DE (1) DE102018002525A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241010A (zh) * 2020-01-17 2020-06-05 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN112860266A (zh) * 2021-04-07 2021-05-28 南京大学 一种基于汇编表征的智能化二进制编译信息推断方法
CN115867888A (zh) * 2020-05-18 2023-03-28 超威半导体公司 用于利用主-影子物理寄存器文件的方法和系统

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671395B2 (en) * 2017-02-13 2020-06-02 The King Abdulaziz City for Science and Technology—KACST Application specific instruction-set processor (ASIP) for simultaneously executing a plurality of operations using a long instruction word
US10496596B2 (en) * 2017-02-13 2019-12-03 King Abdulaziz City For Science And Technology Application specific instruction-set processor (ASIP) architecture having separated input and output data ports
US20200310798A1 (en) * 2019-03-28 2020-10-01 Manjunath Shevgoor Technology For Providing Memory Atomicity With Low Overhead
WO2020255144A1 (en) * 2019-06-20 2020-12-24 Technion Research & Development Foundation Limited A secured speculative execution processor
JP7436192B2 (ja) * 2019-12-05 2024-02-21 ファナック株式会社 制御装置及び産業機械

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6011908A (en) 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US9009020B1 (en) * 2007-12-12 2015-04-14 F5 Networks, Inc. Automatic identification of interesting interleavings in a multithreaded program
US9880848B2 (en) * 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9535744B2 (en) * 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241010A (zh) * 2020-01-17 2020-06-05 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN111241010B (zh) * 2020-01-17 2022-08-02 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN115867888A (zh) * 2020-05-18 2023-03-28 超威半导体公司 用于利用主-影子物理寄存器文件的方法和系统
CN112860266A (zh) * 2021-04-07 2021-05-28 南京大学 一种基于汇编表征的智能化二进制编译信息推断方法
CN112860266B (zh) * 2021-04-07 2022-03-18 南京大学 一种基于汇编表征的智能化二进制编译信息推断方法

Also Published As

Publication number Publication date
US10296343B2 (en) 2019-05-21
DE102018002525A1 (de) 2018-10-04
US20180285112A1 (en) 2018-10-04

Similar Documents

Publication Publication Date Title
CN108694056A (zh) 用于基于二进制翻译的微处理器的混合原子性支持
CN104954356B (zh) 保护共享的互连以用于虚拟机
US10534613B2 (en) Supporting learned branch predictors
US10901899B2 (en) Reducing conflicts in direct mapped caches
CN108388528A (zh) 基于硬件的虚拟机通信
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
CN106716434A (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
CN108027732A (zh) 与断言的加载指令相关联的预取
TWI712952B (zh) 持續確定處理器、方法、系統及指令
CN108027778A (zh) 与断言的存储指令相关联的预取
CN110199242A (zh) 基于使用参数配置处理器的基本时钟频率
US9836399B2 (en) Mechanism to avoid hot-L1/cold-L2 events in an inclusive L2 cache using L1 presence bits for victim selection bias
CN108446763A (zh) 可变字长神经网络加速器电路
US11093414B2 (en) Measuring per-node bandwidth within non-uniform memory access (NUMA) systems
CN110321299A (zh) 用于检测重复数据访问并自动地将数据加载到本地高速缓存中的系统、方法和装置
CN107209723A (zh) 用于虚拟化的细粒度地址重新映射
US20190196841A1 (en) Scatter reduction instruction
US20170242797A1 (en) Reducing interconnect traffics of multi-processor system with extended mesi protocol
TWI630480B (zh) 用於分頁表走查位元交換之指令和邏輯
CN106575284A (zh) 用于内核模块的多核存储器数据记录器
CN109661656A (zh) 用于利用条件所有权请求的智能存储操作的方法和装置
CN108475199A (zh) 用于执行密钥值查找指令的处理设备
CN107925420A (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