CN102906703A - 硬件交易存储器的自动暂停及回复 - Google Patents
硬件交易存储器的自动暂停及回复 Download PDFInfo
- Publication number
- CN102906703A CN102906703A CN2011800106547A CN201180010654A CN102906703A CN 102906703 A CN102906703 A CN 102906703A CN 2011800106547 A CN2011800106547 A CN 2011800106547A CN 201180010654 A CN201180010654 A CN 201180010654A CN 102906703 A CN102906703 A CN 102906703A
- Authority
- CN
- China
- Prior art keywords
- transaction
- processor
- data
- situation
- detecting
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Multi Processors (AREA)
Abstract
本发明揭示一种用于计算机处理器(102)的装置及方法,该计算机处理器配置成存取由多个处理核心共享的存储器(140),以及在交易模式下执行当作单一原子交易的多个存储器存取操作,以及回应隐性暂停状况的判断,例如程序控制转移,而暂停该交易模式。作为执行该交易的一部分,该处理器标示所述推测存储器存取操作所存取的数据为推测数据(220)。因应暂停状况的判断(包括通过侦测执行中的线程的控制转移)(230),该处理器暂停该交易执行模式,这包括设定暂停旗标(240)以及暂停标示推测数据(250)。如果该处理器稍后侦测到回复状况(例如,对应至该控制转移的返回的返回控制转移),该处理器配置成回复推测数据的标示。
Description
背景技术
硬件交易存储器(HTM)为计算机架构里用来支持平行编程的机构。程序员可用HTM简单地宣告一组指令为一交易(transaction),而HTM系统保证可用原子及隔离的方式执行该交易中的指令。原子性(atomicity)意指对于所有其它并行执行的线程(thread),是以单一原子区块的身份执行该交易的所有指令。隔离意指交易的中间结果不暴露于系统的其余部分直到该交易完成。HTM系统可让多个交易平行运行,只要它们不冲突。两个交易在存取同一个存储器区以及这两个交易中的任一交易写到该存储器区时,可能冲突。
许多现有HTM设计在有程序控制转移(program control transfer)的情况下存在正确性及/或安全问题,例如回应系统呼叫、异常、中断、信号或其它事件而转移至操作系统。传统上,此类程序控制转移对于HTM系统可能是透明地发生。如果此一转移在交易执行(transactionalexecution)期间发生,操作系统代码可当作交易的一部分执行。这可能造成正确性及/或安全问题。在有些传统系统中,如果放弃在操作系统中执行的交易,可能发生意想不到的副作用。
在一实例中,考虑到TCP/IP网络装置驱动程序。在接收来自网络的封包时,触发中断以执行装置驱动程序代码。假设处理器在运行应用系统交易(application transaction)时收到中断。程序控制会被转移到装置驱动程序,以及在传统HTM系统下,该驱动程序会当作交易的一部分运行,因为传统HTM设计只考虑到在交易头尾间的所有指令为交易的一部分。
这种行为可能产生至少两个问题。第一,如果在装置驱动程序代码执行时放弃交易可能发生系统失效。例如,如果装置驱动程序配置成写入存储器映像寄存器(memory-mapped register)以管理网络接口硬件以及在改变寄存器值的当中放弃,则接口硬件可能处于不一致状态,而破坏网络系统的整体性。另外,在以上所给出的实例中,在装置驱动程序当作交易的一部分执行的期间或后,放弃交易可能造成网络连线丢失封包。例如,在驱动程序代码处理封包后,驱动程序送出应答信息(acknowledge message)给封包发送方。在此时,发送方可能删除该封包,因为不需要重新发送。不过,如果稍后放弃交易,则可能回滚(rollback)用来储存封包于接收方的存储器写入操作以及该封包可能永久丢失,从而违背TCP/IP系统的可靠通讯保证。
第二,安全问题为透明地跳到当作交易的一部分的操作系统代码的另一副作用。许多现代处理器支持安全特征以分离操作系统与应用系统代码执行。例如,x86架构允许操作系统及应用系统通过在系统呼叫的边界处切换代码段选择子(code segment selector)来使用不同的代码段及特权层级(privilege level)(例如,使用者层级与核心层级特权)。不过,传统HTM系统经常不设检查点(checkpoint)及管理处理器状态的一些部分,例如代码段选择子。当发源于使用者层级代码的交易执行操作系统的系统呼叫时,则特权层级会提高。如果放弃交易,传统HTM可能未配置成使特权层级恢复到较低的层级。因此,可能产生安全漏洞。恶意程序可能能够利用此一安全漏洞以在交易放弃后获得操作系统的特权层级。
发明内容
本发明揭示一种用于计算机处理器的装置及方法,该计算机处理器配置成存取由多个处理核心共享的存储器以及在交易模式下执行当作单一原子交易的多个存储器存取操作。该装置配置成回应一隐性暂停状况(implicit suspend condition)的判断而暂停该交易模式。作为执行该交易的一部分,该处理器标示(mark)所述推测存储器存取操作所存取的数据为推测数据(speculative data)。因应一隐性暂停状况的判断(包括通过侦测正被执行的一线程的一控制转移,例如转移至操作系统),该处理器暂停该交易执行模式,包括设定一暂停旗标以及暂停推测数据的标示。稍后,如果该处理器侦测到一回复状况(例如,通过侦测对应至该控制转移的返回的返回控制转移),该处理器通过回复推测数据的标示来回复该交易执行模式。
在一些具体实施例中,可进一步将该处理器配置成侦测到该原子交易在该交易被暂停时已失败。在一些具体实施例中,处理器可用以下方式回应侦测到被暂停的交易的失败:设定一放弃旗标,以及在企图回复该交易时检查该放弃旗标。如果该检查判断该放弃旗标已设定,则处理器放弃该交易。在一些具体实施例中,可将该处理器配置成保存/恢复放弃旗标及/或暂停旗标的数值作为执行脉络(execution context)的一部分。
附图说明
图1是根据一些具体实施例图示配置成实现有暂停/回复能力的HTM机构的计算机系统的方块图;
图2是根据一些具体实施例图示在执行存储器交易时用于暂停交易执行模式的方法的流程图;
图3是图示使用HTM执行原子交易的方法的流程图,包括通过在交易期间暂停交易执行模式;
图4是根据一些具体实施例图示用于处理在交易模式暂停期间侦测到的放弃状况的方法的流程图;
图5是根据一些具体实施例图示用于实现有自动暂停/回复能力的HTM的特定方法;
图6是根据一些具体实施例列出可执行暂停的各种控制转移的表格;以及
图7是根据一些具体实施例图示配置成如本文所述实现有自动暂停/回复机能的硬件交易存储器系统的计算机系统。
用于本文的标题仅出于组织目的而且不打算用来限制说明内容及权利要求书的范畴。如本文所使用的,词语“可”为容许意义(也就是,有潜力...)而非以强制意义(也就是,必须)而使用。同样,术语“包括”及“包含”意谓“包括,但不受限于...”。
具体实施方式
传统HTM设计在有程序控制转移的情况下存在正确性及/或安全问题。如本文所使用的,术语“控制转移”指例如由某个正在执行的软件程序向某个监督程序或错误处理程序或中断处理程序(反之亦然)发出信号、造成或指示改变程序流程的指令或事件。在一些具体实施例中,监督程序可为操作系统。在各种具体实施例中,可使用不同的操作系统(例如,Linux、WindowsTM、等等),每种操作系统可用软件实现成支持计算机的基本功能,例如调度任务、执行应用系统以及控制周边。在一些具体实施例中,操作系统可包含用以实现基本机能的核心。在各种具体实施例中,操作系统的核心可为单片(monolithic)或可为微核心。
在一些具体实施例中,一或更多操作系统可为虚拟机(例如,操作系统可为虚拟机内的“客户”操作系统)。在此类具体实施例中,控制转移可在程序、虚拟操作系统间转移程序控制给用来部署虚拟操作系统的系统管理程序(hypervisor),或给另一运行时系统(runtime system)。尽管描述于此的具体实施例指转移进/出操作系统的控制,然而应了解,具体实施例可适合包括进/出虚拟操作系统、系统管理程序及/或任何其它运行时系统的转移。同样地,除非另有说明,“控制转移”不限于改变某个正在执行的代码与该代码在其上运行的操作系统间的程序流程。
在不同的环境中,回应侦测到不同的事件,例如程序执行操作系统的系统呼叫、软件及/或硬件异常、硬件中断、软件信号、或其它事件,而可执行控制转移。由应用系统至操作系统的每个控制转移可具有对应返回控制转移,使得该返回控制转移交还控制给发生最初(暂停作用)控制转移的程序。例如,如果程序调用(invoke)系统呼叫以控制转移给操作系统,该操作系统可通过执行某个机能然后交还控制到调用程序紧接在调用系统呼叫后的点来回应。
在各种具体实施例中,硬件交易存储器系统(HTM)可提供用于执行当作单一原子交易的多个存储器存取操作的机能。在一些具体实施例中,程序可执行初始化指令以初始化交易执行模式及后续的终止指令以结束交易执行模式。可将该HTM配置成保证应用系统在交易模式下(也就是,在初始化、终止指令间)所执行的存储器操作中的一些或所有对于其它线程/处理器在系统中的执行是以原子方式进行。
为了确保原子执行,可将该HTM配置成按推测处理交易的存储器存取操作直到交易确认(commit)成功以及监视放弃状况(abortcondition)。例如,该HTM可将在交易执行模式期间用推测指令写入及读取的数据标示为推测,以及如果交易成功完成(也就是,未侦测到放弃状况),该HTM可将该数据标示成非推测数据及/或以其它方式使它并入共享存储器。另一方面,如果侦测到放弃状况,则可将该HTM配置成丢弃/无效化(invalidate)推测数据及/或回滚推测数据写到共享存储器的结果。
根据各种具体实施例,可将硬件机构(例如,在处理器上者)配置成自动侦测暂停状况(suspension condition),包括通过侦测在有效交易(active transaction)内的程序控制转移,以及通过暂停该交易执行模式来回应。在一些具体实施例中,可将该HTM配置成接着侦测对应的返回控制转移,以及如果适合,回复该交易执行模式。
在一些具体实施例中,在交易执行模式被暂停时,处理器不把被存储器操作存取的数据标示为推测。因此,在此类具体实施例中,如果交易被放弃,不会回滚在交易模式被暂停时执行的存储器存取操作。
在一些具体实施例中,如果在交易执行暂停时侦测到放弃状况,可将该HTM配置成延迟放弃该交易直到在该交易模式回复后。例如,因应侦测到放弃状况(例如,由数据冲突造成的),该HTM可设定放弃旗标以及在交易模式暂停下继续执行。在回复交易执行模式时,该HTM可检查放弃旗标以及在该旗标被设定时放弃。
在各种具体实施例中,交易执行模式的暂停/回复可由HTM以对于正在执行的软件是透明的方式完成。也就是,由于该HTM配置成自动侦测暂停/回复状况以及可暂停/回复交易执行模式,不需要把软件(例如,程序及/或操作系统)修改成执行特定指令以适时指示该HTM暂停或回复交易执行模式。
图1是根据一些具体实施例图示配置成实现有暂停/回复能力的HTM机构的计算机系统的方块图。在图1中,系统100(在有些具体实施例中,可称为交易存储器系统)包含计算机处理器102,共享存储器140,以及其它处理器150。这些组件可用总线150连接,它可为包括广播及/或点对点的各种互连。在各种具体实施例中,其它处理器150可包含与计算机处理器102共享存储器140的一或更多处理器。在一些具体实施例中,可将处理器150中的每一个配置成计算机处理器102。
根据图示具体实施例,计算机处理器102包含用于实现有暂停/回复能力的硬件交易存储器机能的HTM 110,如上述。在各种具体实施例中,HTM 110可用不同的方式标示推测数据。例如,HTM 110可使用基于快取(cache)的推测数据缓存(buffer),包括通过储存及标示数据快取(例如,数据快取130)中的推测数据。在其它具体实施例中,推测数据缓存可以其它结构实现,例如载入、储存或载入/储存队列。在不同的具体实施例中,每个处理器可实现多个合作式推测数据缓存(例如,在数据快取130中以及在载入/储存队列中)。
在系统100中,HTM 110包含各种硬件单元,包括控制转移侦测单元112,交易暂停单元114,冲突侦测单元116,以及溢出侦测单元118。在各种具体实施例中,所述组件中的不同者可整个或部分结合或分成其它的子组件。
在一些具体实施例中,可将控制转移侦测单元112配置成判断暂停状况。在某些具体实施例中,此暂停状况可为“隐性”暂停状况,意指暂停状况的判断是基于某一组准则,而不是显性指令(例如,“中止”或“暂停”)的存在。在一些具体实施例中,可将单元112配置成部分基于侦测到正被处理器102执行的线程的控制转移来判断暂停状况存在。例如,控制转移侦测单元可侦测由系统呼叫调用或硬件中断(例如,I/O中断)造成的控制转移。
在各种具体实施例中,暂停状况的判断也可包括证实处理器102目前处于交易执行模式及/或该处理器在较低的特权层级(例如,应用系统层级)下执行而不是较高的特权层级(例如,核心层级)。例如,在有些系统中,当前的特权层级(CPL)储存在寄存器(例如,寄存器120)中以及可保存表示各种特权层级的数值。在此类系统中,在较高的特权层级时,该系统准许正在执行的线程存取受保护的资源,例如各种存储器区域,I/O接口,及/或特殊指令。在x86架构上,例如,有4个特权层级:由特权最大的0至特权最小的3。在此类系统上,层级0用于核心/执行体(executive),以及层级3用于应用程序。在一些系统中,当软件需要以加高的特权层级(例如,在执行操作系统代码时)执行指令时,该软件可执行一或更多指令以提升特权层级(例如,由3至0)以及于不再需要加高特权时执行一或更多指令以降低特权层级(例如,由0至3)。在一些系统中,操作系统代码可分别在入口及出口处提高及降低特权层级。
在一些具体实施例中,可将控制转移侦测单元112配置成侦测暂停状况以回应侦测到:a)控制转移给操作系统,b)处理器正在交易模式下执行,以及c)当前特权层级没有被提升(例如,为3)。因应侦测到暂停状况,控制转移侦测单元112可通知交易暂停单元114该暂停状况。相应地,可将交易暂停单元114配置成通过暂停交易执行模式来回应,例如设定寄存器120中的暂停旗标122。如上述,当交易模式被暂停时,在一些具体实施例中,处理器配置成暂停把被存储器操作存取的数据标示为推测。不过,保留在交易模式暂停前被标示成推测的数据以及推测标示。因此,在某些具体实施例中,如果发生放弃,不会回滚在暂停期间发生的存储器值修改,同时会回滚在交易模式暂停前或后发生的存储器值修改。
在一些具体实施例中,可将控制转移侦测单元112进一步配置成判断回复状况,包括通过侦测返回控制转移,其对应至受侦测以判断暂停状况的控制转移。例如,如果受侦测以判断暂停状况的控制转移是对于操作系统的系统呼叫,则可由该系统呼叫交还返回转移呼叫。
在有些环境中,在最初造成暂停状况的控制转移(在此被称作“暂停作用”转移)后,可为在执行来自暂停作用控制转移的返回前的一或更多后续控制转移。就此情形而言,尽管可执行多次返回控制转移,然而不会回复交易模式直到执行对应至该暂停作用控制转移的返回控制转移。
在一些具体实施例中,可将控制转移侦测单元112配置成通过通知该交易暂停单元要回复交易执行模式来回应侦测到回复状况。在一些具体实施例中,回复交易模式可包括取消设定暂停旗标122及/或检查放弃旗标124,如以下所述。
根据图示具体实施例,HTM 110可包含各种其它机构及/或单元,例如冲突侦测单元116。在各种具体实施例中,可将冲突侦测单元116配置成侦测不同种类的放弃状况。例如,可将该冲突侦测单元配置成监视由其它处理器150收到的快取连贯性信息(探询),其作为快取连贯性协定(cache coherency protocol,例如MESI或MOESI)的一部分。如果一或更多此类探询表示数据冲突,则冲突侦测单元116判断存在放弃状况以及可能放弃交易企图。
如上述,在一些具体实施例中,可将该HTM配置成延迟放弃正在交易模式暂停下执行的交易企图直到交易执行模式被回复。在此类具体实施例中,因应在交易模式暂停期间侦测到放弃状况,可将该冲突侦测单元配置成设定放弃旗标(也就是,储存预定值于适当的储存位置中),例如124,而不是立即放弃及/或回滚该交易。当交易执行模式被回复时(例如,由操作系统核心返回时),该HTM可侦测到放弃旗标124被设定以及以放弃该交易企图来回应。
各种其它硬件单元可侦测其它的放弃状况。例如,可将溢出侦测单元118配置成侦测形式为推测缓存溢出状况的放弃状况。在执行交易需要将数据的一给定部分缓存于容量不足以缓存新推测数据的推测缓存中(例如,实现于数据快取130中的一个)时,可侦测到缓存溢出状况。如本文所使用的,推测缓存溢出指正被侦测的溢出状况,而不是指推测数据被实际逐出缓存的情形。
如同数据冲突,如果溢出侦测单元118在处理器正在交易模式暂停下执行时侦测到溢出状况,则可设定放弃旗标124,这可造成HTM110在交易执行模式被回复时放弃/回滚交易企图。
图2是根据一些具体实施例图示在执行存储器交易时用于暂停交易执行模式的方法的流程图。在配置成利用存储器交易的计算机程序的执行期间,可用HTM(例如,图1的HTM 110)执行方法200。
根据图示具体实施例,方法200在处理器开始以在交易模式下执行时开始,如在步骤210。在一些具体实施例中,回应执行一或更多架构式指令(architected instruction)以初始化交易执行的软件程序而可进行此步骤。如在步骤210,初始化交易执行模式可包括设定例如在系统100的寄存器120中的一或更多旗标。
一旦处理器以交易模式执行,它可配置成标示推测存储器存取操作所存取的数据为推测,如在步骤220。在一些具体实施例中,在交易模式下执行的每个存储器存取操作可视为推测,因此,可将每个存储器存取操作所存取的数据标示为推测。在其它具体实施例中,交易内的存储器存取操作的子集可显性指定为推测。在一些此类具体实施例中,在步骤220,可将只被这些显性推测指令中的每一个存取的数据标示为推测。
在各种具体实施例中,将数据标示为推测的方法可取决于HTM所使用的推测缓存的类型。例如,对于缓存推测数据于数据快取中的HTM,将数据标示为推测的步骤可包括储存数据的副本于数据快取中以及用一或更多推测位(speculative bit)来标示含有该推测数据的快取的快取区块。推测位的标示也可用来标示在以其它结构(例如,载入/储存队列)实现的缓存中的推测数据。
根据图示具体实施例,在交易执行期间的某一时刻,该HTM(或是它的某个组件,例如控制转移侦测单元112)判断暂停状况,包括通过侦测控制转移,如在步骤230。在一些具体实施例中,暂停状况可为程序控制即将被转移到操作系统核心时的状况。例如,在一些具体实施例中,回应所做的系统呼叫以及对应至某个给定应用系统层级的当前处理器特权层级(例如,在某些具体实施例中,此给定特权层级可为3(使用者或应用系统层级))而可侦测暂停状况。在另一实施例中,回应侦测到硬件中断以及CPL为应用系统层级特权,例如层级3,而可侦测暂停状况。因此,在此类具体实施例中,如果在交易执行期间侦测到控制转移,该HTM可检查CPL以判断该控制转移是否为由应用系统至操作系统核心的转移。若是,可判定存在暂停状况。
如同在方法200,因应侦测到暂停状况,该HTM可暂停交易执行,如在步骤240。交易执行的暂停可包括设定暂停旗标(例如,暂停旗标122,其指储存于某个储存位置中的数值),它可发出信号给暂停交易执行模式的HTM。
一旦交易执行模式被暂停,处理器可执行存储器操作而不把存取的数据标示为推测,如在步骤250。也就是,一旦转移控制给操作系统,交易执行模式被暂停以及不按推测来处理被操作系统执行的存储器操作,从而如果是放弃的话,不经受回滚。如上述,在一些具体实施例中,处理器在模式暂停下可能不放弃交易企图,即使侦测到放弃状况。在此类具体实施例中,对于侦测到放弃状况,处理器可以通过设定放弃旗标(储存于某个储存位置中的数值)以及一旦交易执行模式被回复就以放弃(包括回滚)该交易来回应。
图3是图示用HTM执行原子交易的方法的流程图,包括通过在该交易期间暂停交易执行模式。方法300以初始化交易执行模式开始,如在步骤305。如前述,回应交易初始化指令的执行而处理器可执行此步骤。
在方法300中,如果HTM侦测到暂停状况(以“是”离开步骤310表示),则该HTM可暂停交易模式,例如通过在步骤315设定暂停旗标。步骤310的侦测暂停状况可类似于图2的步骤230的侦测暂停状况,以及可包括在有效(未被暂停)交易模式期间侦测进入操作系统的控制转移。因应侦测到进入操作系统的控制转移,该HTM也可记录所用控制转移的类型,藉此稍后可识别适当的返回控制转移。如果未侦测到暂停状况(以“否”离开步骤310表示),则不暂停交易。
根据方法300,处理器随后执行下一个存储器存取指令,如在步骤320。如果交易执行模式未被暂停(以“否”离开步骤325表示),则HTM将存储器操作所存取的任何推测数据标示为推测,如在步骤330。例如,如果操作为读取操作,则HTM可指出读出该数值的存储器位置为交易的读取集(read set)的一部分。因此,如果收到表示另一处理器已修改储存于该推测存储器位置的数值的无效化探询,则处理器侦测到放弃状况。
如上述,在一些具体实施例中,有效交易中的每一个存储器操作可视为推测,然而在其它具体实施例中,有些数据及/或存储器操作可明确地认出为推测,尽管其它的不然。在此类具体实施例中,只存取非推测数据的存储器操作不会造成任何数据被标示为推测。例如,在一个像这样的具体实施例中,可增补方法300使得以“否”离开步骤325进一步依赖存储器操作及/或被该存储器操作存取而且已被明确标示为推测的数据。
在用快取实现推测数据缓存的具体实施例中,可用表示在交易执行模式下读取的“推测旗标”来标示对应至读取数据的快取区块。在一些具体实施例中,每个快取区块可包含或以其它方式与“读取推测旗标”及“写入推测旗标”关连,其表示在存储器区(若有的话)上进行的推测存储器存取操作的类型。在各种具体实施例中,可结合或分离所述旗标,而且可用于不同的推测缓存,例如用数据快取、载入/储存队列、及/或其它实现者。
根据图示具体实施例,如果交易被暂停(以“是”离开步骤325表示),则HTM不做推测数据的标示(如在步骤330)。反而,该HTM可判断回复状况是否存在,如在步骤335。在一些具体实施例中,回应侦测到由操作系统至应用系统的返回控制转移而可侦测到回复状况。在一些具体实施例中,侦测该返回控制转移可包括判断正被执行(或即将被执行)的控制转移是对应至进入操作系统的最初(暂停作用)控制转移的返回。另外,回复状况的侦测可进一步取决于表示处理器正在特权(例如,核心层级)模式(例如,层级0)下执行的CPL。
在方法300中,如果侦测到回复状况(以“是”离开步骤335表示),则可回复该交易执行模式,如在步骤340。交易执行模式的回复可包括取消设定暂停旗标,藉此向HTM表示应适时回复推测数据的标示。如以下在说明图4时所述,交易模式的回复也可包括在暂停期间判断是否侦测到放弃状况(例如,通过检查放弃旗标)。
在图3的图示具体实施例中,如果交易包含更多指令(以“是”离开步骤345表示),则处理器可重复方法300(以由步骤345至310的反馈回路表示)。否则(以“否”离开步骤345表示),可确认该交易,如在步骤350。在各种具体实施例中,交易的确认可包括不同的步骤。例如,确认交易的一部分,可标示被标示为推测的数据为非推测。在一些具体实施例中,交易的确认可包括将推测写入数据写到共享存储器或以其它方式与系统中的其它处理器共享该推测写入值。读者应注意,尽管方法300包括侦测暂停状况的步骤310与侦测回复状况的步骤335间执行至少一存储器存取指令,然而熟谙此艺者应了解,这对于被暂停的交易的所有实例并非必然。
图4是根据一些具体实施例图示用于处理在交易模式暂停期间侦测到的放弃状况的方法的流程图。如前述,该方法以初始化交易执行模式开始,如在步骤405,以及回应侦测到暂停状况而暂停交易执行模式,如在步骤410。一旦该交易执行模式被暂停,处理器可开始以非交易模式(也就是,不标示所存取的数据为推测)执行操作系统代码。
根据方法400,该HTM可侦测表示交易企图失败的放弃状况,如在步骤415。在各种具体实施例中,不同的环境可能造成放弃状况,包括与另一处理器有数据冲突或侦测到推测缓存溢出状况,如上述。例如,若是另一处理器存取被该处理器标示为推测的存储器区而所述处理器中的任一修改储存于存储器区的数据,则可能发生数据冲突。在另一实施例中,回应推测缓存溢出状况被侦测到,例如当推测数据缓存(例如,数据快取)的容量不足以缓存在交易期间存取的所有推测数据时而可侦测到放弃状况。该缓存的容量可能不够,因为要同时缓存太多推测及/或非推测数据。
在传统系统中,HTM会在侦测到放弃状况时立即放弃交易。不过,这可能让操作系统软件的各种结构处于不一致状态。反而,各个具体实施例中的HTM可延迟放弃被暂停的交易直到它回复以后。例如,在图4的方法400中,因应在步骤415侦测到放弃状况,该HTM设定一放弃旗标,如在步骤420,以及继续在交易模式暂停下执行,如在步骤425。
当执行在操作系统中在交易模式暂停下继续时,可进行各种附加控制转移。在稍后时刻,回应侦测到与暂停作用控制转移匹配的返回控制转移以及交还控制给应用系统代码而该HTM可侦测回复状况(如在步骤430)。
根据图示具体实施例,在交还给应用系统代码以及回复交易执行后,该HTM可放弃旗标是否被设定,如在步骤435。如果放弃旗标未被设定,则交易在执行模式暂停期间没有失败,因此HTM可清除被暂停的旗标以及继续在交易模式下执行。不过,在方法400中,放弃旗标在步骤420被设定,因此HTM会决定在步骤435设定放弃旗标,以及相应地,放弃交易,如在步骤440。
如上述,放弃交易的步骤440可包括将推测数据标示为无效。这在此可被称作“丢弃”推测数据。一旦推测数据被丢弃,它不存到共享存储器供其它处理器存取。例如,如果推测缓存中的推测数据被标示为无效,处理器不会依靠此一数据供其它指令执行用,也不会馈送到共享存储器。此外,不需要采取其它的交易放弃或快取连贯性动作以使作废的数据与系统中的其它处理器协调。
图5是根据一些具体实施例图示用于实现有自动暂停/回复能力之HTM的特定方法。方法502以初始化交易执行模式开始,如在步骤500。在执行期间,HTM侦测到给操作系统核心的控制转移,如在步骤505。如果处理器正在交易模式暂停下执行(以“是”离开步骤510表示),则不需要采取与暂停交易执行模式有关的其它动作。不过,如果处理器目前不处于执行模式暂停的话,则HTM可检查当前的特权层级,如在步骤515。如果特权层级是加高的(例如,核心层级0,或在某些实施例中,非应用系统层级)(以“否”离开步骤515表示),则不需要采取与暂停交易执行模式有关的其它动作。
根据图示具体实施例,如果处理器不在交易模式暂停下(以“否”离开步骤510表示)以及当前特权层级(CPL)是较低的特权层级(例如,应用系统层级3)(以“是”离开步骤515表示),则HTM可记录控制转移事件的指示(如在步骤520)以及暂停交易执行模式(如在步骤525)。
方法502中,在步骤525暂停交易执行模式后,HTM可侦测另一个控制转移,如在步骤530。如果在步骤530侦测到的后续控制转移是与步骤505的暂停作用控制转移对应的返回控制转移(以“是”离开步骤535表示),则处理器可交还执行给应用系统模式,以及HTM可回复(也就是,解除暂停)该交易执行模式,如在步骤540。不过,如果控制转移不是与步骤505的暂停作用控制转移对应的返回控制转移,则HTM可继续处于交易执行模式直到发现对应的返回控制转移,如由步骤535至530的反馈回路所示。在某些情况下,给定交易在最终被确认前可多次暂停及/或回复(例如,如由步骤540至505的视需要反馈回路所示)。
在各种具体实施例中,在暂停作用转移与其对应返回控制转移间可执行任意多次控制转移。不过,在一些具体实施例中,只有在侦测到对应至暂停作用转移的返回控制转移时(以“是”离开步骤535表示),HTM会回复交易模式。
图6是根据一些具体实施例列出可执行暂停的各种控制转移的表格。列出的控制转移种类包括远控制转移、系统呼叫、以及异常/中断。各种转移可各自用列出的暂停事件侦测,以及转移的返回可各自用列出回复事件侦测。例如,通过侦测SYSENTER指令可侦测进入操作系统的系统呼叫,以及会用SYSEXIT指令表示匹配的返回控制转移。
图7是根据一些具体实施例图示配置成实现有自动暂停/回复机能的硬件交易存储器系统的计算机系统,如本文所述。计算机系统700可为各种装置中的任何一种,包括但不受限于:个人计算机系统、桌上计算机、膝上或笔记计算机、大型计算机系统、手持计算机、工作站、网络计算机、消费者装置、应用系统服务器、储存装置、周边装置(例如,开关、数据机、路由器等等)、或大体为任何类型的计算装置。
计算机系统700可包含各自可包含多个核心的一或更多处理器750,处理器750中的任一可为单或多线程型。如本文所述,以及在图1中,每个处理器可包含可用来储存各种旗标及运算数(operand)的寄存器752。处理器750可进一步包含:配置成快取被存取数据及/或实现推测数据缓存的数据快取754。例如,数据快取754可包含与每个快取区块关连以及可用来以推测方式表示读取及/或写入数据的一或更多位。处理器750可进一步包含:用于侦测暂停/回复状况的控制转移侦测单元756,包括通过侦测控制转移。根据图7,处理器750也可包括交易暂停单元758用于暂停/回复交易执行模式,如本文所述。
在图示具体实施例中,计算机系统700也可包括一或更多芯片外快取(off-chip cache)760,例如芯片外L2或L3快取。在一些具体实施例中,可实现芯片上的L2及/或L3快取。计算机系统700也可包括永久性储存装置770(例如,光学储存器,磁性储存器,硬盘,磁盘,固态存储器等等),它可储存用档案系统(例如,772)组织的数据。计算机系统700也可包括一或更多网络接口,例如780,用于透过任意多个网络来收发数据。计算机系统700也可包括一或更多存储器710(例如,一或更多的快取、SRAM、DRAM、RDRAM、EDO RAM、DDR 7 RAM、SDRAM、Rambus RAM、EEPROM等等)。各种具体实施例可包含未图示于图7的更少或附加组件(例如,视讯卡、声卡、附加网络接口、周边装置、网络接口(例如,ATM接口)、以太网络接口、讯框传送接口(Frame Relay interface)等等)。
通过系统互连740,可耦合一或更多处理器750,储存装置(或多个)740,芯片外快取760,永久性储存装置770,网络接口780,以及系统存储器710。系统存储器710中的一或更多可包含程序指令720以及各种数据结构及变量730。程序指令720可编码成平台原生二元码(platform native binary),任何解译语言(例如,JavaTM字节码,或任何其它语言(例如,C/C++、Fortran等等)或彼等的组合。
程序指令720可包含可执行以实现一或更多单及/或多线程程序722的程序指令,它们可利用原子存储器交易,例如通过执行初始化及确认指令,如本文所述。
根据图示具体实施例,存储器710可包含可执行以实现操作系统724(例如,WindowsTM及/或Linux)的程序指令。在一些具体实施例中,操作系统724可包含配置成以升高特权层级执行各种功能的核心。例如,操作系统724可暴露定义应用系统722可调用的系统呼叫的应用系统编程接口(API)。因应此类系统呼叫的调用,处理器750可以对于应用系统722及操作系统724呈实质透明的方式暂停正由应用系统722执行的有效交易,如本文所述。
可提供该软件程序(例如,应用系统722)为计算机程序产品或软件,可包括已有指令储存于其上的计算机可读取储存媒体,所述指令可用来编程计算机系统(或其它电子装置)以完成根据各种具体实施例的方法。计算机可读取储存媒体可包含以机器(例如,计算机)可读取形式(例如,软件,处理应用系统)储存资讯的任何机构。(非暂时性)机器可读取储存媒体可包含但不限于:磁性储存媒体(例如,软盘);光学储存媒体(例如,CD-ROM);磁光储存媒体;唯读存储器(ROM);随机存取存储器(RAM);可擦可编程存储器(例如,EPROM及EEPROM);闪存;适合储存程序指令的电气或其它类型的媒体。此外,程序指令的通讯可利用光学、声学或其它形式的传播信号(例如,载波、红外线信号、数字信号、等等)。
如上述的计算机可读取储存媒体可用于一具体实施例以储存由程序读取的指令以及直接或间接地用来制造包含系统处理器750的硬件。例如,所述指令可用高阶设计语言(HDL,例如Verilog或VHDL)描述描述硬件机能的行为层级或寄存器转移层级(RTL)描述的一或更多数据结构。该描述可由可合成该描述以产生网络清单(netlist)的合成工具(synthesis tool)读取。该网络清单可包含阐明处理器750的机能的栅极集合(例如,定义于合成库中者)。然后,可安置及布线该网络清单以产生描述要应用于掩膜的几何形状的数据集(data set)。然后,所述掩膜可用于各种半导体制造步骤以生产半导体电路或对应至处理器750的电路。替换地,承载媒体300上的数据库可按需要为网络清单(有或无合成库)或数据集。
本揭示内容的范畴包括揭示于本文的任何特征及彼等的组合(以明示或暗示方式),或彼等的任何泛化,不论它是否减轻本文所针对的问题中的任一或所有。因此,在审查本申请案(或主张优先权的申请)期间可将新的权利要求书制定成特征的任何组合。特别是,参考随附的权利要求书,从属权利要求的特征可与独立权利要求的组合以及独立权利要求的组合可用任何适当方式组合而不仅仅是列举于随附的权利要求书的特定组合。
尽管已相当详细地描述以上的具体实施例,然而在熟谙此艺者完全明白以上的揭示内容后仍可做出许多变体与修改。希望权利要求书能被解释成涵盖所有此类的变体及修改。
Claims (21)
1.一种装置,其包含:
一计算机处理器,其配置成在一交易模式下执行当作单一原子交易的多个推测存储器存取操作,包括标示所述推测存储器存取操作所存取的数据为推测数据,以及其中,该处理器包含:
配置成判断一隐性暂停状况的一侦测单元;以及
一交易暂停单元,其配置成回应收到一暂停状况的一指示而暂停该交易执行模式,其中,因应该交易模式的暂停,该处理器配置成暂停标示推测数据。
2.根据权利要求1所述的装置,其中,该侦测单元配置成用以下步骤来判断该隐性暂停状况:侦测正被该处理器执行的一线程的一控制转移,侦测该处理器正在一交易模式下执行,以及侦测该处理器正在以一给定特权层级执行。
3.根据权利要求2所述的装置,其中,该被侦测的控制转移为至一操作系统的转移。
4.根据权利要求2所述的装置,其中,该处理器配置成侦测到该原子交易在该交易被暂停时已失败,以及其中,该处理器配置成放弃失败的交易,包括通过抛弃该推测数据。
5.根据权利要求4所述的装置,其中,该处理器进一步配置成对于该交易,只在侦测到该交易执行模式的一回复状况后,才放弃该失败的交易。
6.根据权利要求5所述的装置,其中,该交易模式的暂停包括该处理器设定一暂停旗标,以及其中,因应侦测到该交易已失败,该处理器进一步配置成设定一放弃旗标。
7.根据权利要求6所述的装置,其中,该处理器配置成保存该暂停旗标以及该放弃旗标作为一执行脉络的一部分,其中,在该处理器执行一脉络切换的情形下,保存的执行脉络用来恢复该处理器的状态。
8.根据权利要求2所述的装置,其中,该侦测单元配置成判断一回复状况,包括通过侦测对应至由该控制转移的一返回的一返回控制转移,以及其中,该处理器配置成在判断该回复状况后,回复标示数据为推测。
9.根据权利要求8所述的装置,其中,该交易暂停单元配置成用以下步骤回应该回复状况的判断:回应该交易在该交易模式被暂停时失败的判断而放弃该交易,其中,该放弃步骤包括抛弃该推测数据。
10.根据权利要求9所述的装置,其中,在该交易被回复时,该处理器配置成确认该交易,包括通过标示在暂停该交易前及后被标示的推测数据为非推测。
11.一种方法,其包含以下步骤:
在一交易存储器系统内的一计算机处理器在一交易模式下执行当作单一原子交易的多个推测存储器存取操作,其中,该执行步骤包括:
标示所述推测存储器存取操作所存取的数据为推测数据;
判断一隐性暂停状况存在;以及
因应该隐性暂停状况存在的判断,暂停该交易执行模式以及暂停推测数据的标示。
12.根据权利要求11所述的方法,该判断该隐性暂停状况的步骤包括:侦测正被该处理器执行的一线程的一控制转移,侦测该处理器正在一交易模式下执行,以及侦测该处理器正在以一给定特权层级执行。
13.根据权利要求12所述的方法,其进一步包括:
在该交易执行模式被暂停时,侦测一回复状况,包括通过侦测对应至该控制转移的一返回的一返回控制转移;
其中,该方法进一步包括:回应侦测到该回复状况而回复推测数据的标示。
14.根据权利要求13所述的方法,其进一步包括:确认该交易,包括通过标示在暂停该交易前及后被标示的推测数据为非推测。
15.根据权利要求13所述的方法,其进一步包括:
在侦测到该回复状况后,回应该交易在该交易执行模式被暂停时失败的判断而放弃该交易企图,其中,该放弃步骤包括抛弃被标示为推测数据的数据。
16.根据权利要求11所述的方法,其进一步包括:在该交易执行模式被暂停时,判断该交易企图失败以及相应地设定一放弃旗标,以及在该模式暂停下继续执行该交易。
17.一种系统,其包含:
一处理器;
由多个处理核心共享的一存储器,所述多个处理核心有至少一在该处理器上;
其中,该处理器配置成在一交易模式下执行当作单一原子交易的多个推测存储器存取操作,包括通过:
标示所述推测存储器存取操作所存取的数据为推测数据;
判断一隐性暂停状况存在;以及
因应该隐性暂停状况存在的判断,暂停该交易执行模式以及暂停推测数据的标示。
18.根据权利要求17所述的系统,其中,该隐性暂停状况的判断也部分基于:侦测正被该处理器执行的一线程的一控制转移,侦测该处理器正在一交易模式下执行,以及侦测该处理器正在以一给定特权层级执行。
19.根据权利要求18所述的系统,其中,该处理器进一步配置成在该交易执行模式被暂停时侦测一回复状况,包括通过侦测对应至该控制转移的一返回的一返回控制转移;
其中,该处理器配置成对于侦测到该回复状况至少用以下步骤回应:回复标示推测存储器存取操作所存取的数据为推测数据。
20.根据权利要求19所述的系统,其中,该处理器进一步配置成确认该交易,包括通过标示在暂停该交易前及后被标示的推测数据为非推测。
21.一种计算机可读取储存媒体,其包含用在一计算机系统上可执行的一程序操作的一数据结构,该程序操作该数据结构以完成一制程的一部分来制造包含用该数据结构描述的电路的一集成电路,该数据结构所描述的电路包括:
一计算机处理器,其配置成在一交易模式下执行当作单一原子交易的多个推测存储器存取操作,包括标示所述推测存储器存取操作所存取的数据为推测数据,以及其中,该处理器包含:
配置成判断一隐性暂停状况的一侦测单元;以及
一交易暂停单元,其配置成回应收到一暂停状况的一指示,而暂停该交易执行模式,其中,因应该交易模式的暂停,该处理器配置成暂停标示推测数据。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/711,851 | 2010-02-24 | ||
| US12/711,851 US8739164B2 (en) | 2010-02-24 | 2010-02-24 | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
| PCT/US2011/025778 WO2011106333A2 (en) | 2010-02-24 | 2011-02-22 | Automatic suspend and resume in hardware transactional memory |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN102906703A true CN102906703A (zh) | 2013-01-30 |
| CN102906703B CN102906703B (zh) | 2016-10-19 |
Family
ID=44462118
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201180010654.7A Active CN102906703B (zh) | 2010-02-24 | 2011-02-22 | 硬件交易存储器的自动暂停及回复 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US8739164B2 (zh) |
| EP (1) | EP2539816A2 (zh) |
| JP (1) | JP5615384B2 (zh) |
| KR (1) | KR101678133B1 (zh) |
| CN (1) | CN102906703B (zh) |
| WO (1) | WO2011106333A2 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
Families Citing this family (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9626187B2 (en) | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
| US9880848B2 (en) * | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
| US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
| US8424015B2 (en) * | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
| US8788794B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
| US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
| US9021299B2 (en) * | 2011-02-18 | 2015-04-28 | Ab Initio Technology Llc | Restarting processes |
| US9116759B2 (en) | 2011-02-18 | 2015-08-25 | Ab Initio Technology Llc | Restarting data processing systems |
| US9219752B2 (en) * | 2011-08-26 | 2015-12-22 | Hewlett-Packard Development Company, L.P. | Data leak prevention systems and methods |
| US9223687B2 (en) | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
| US9015419B2 (en) | 2012-06-15 | 2015-04-21 | International Business Machines Corporation | Avoiding aborts due to associativity conflicts in a transactional environment |
| US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
| US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
| US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
| US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
| US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
| US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
| US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
| US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
| US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
| US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
| US8682877B2 (en) * | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
| US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
| US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
| US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
| US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
| US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
| US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
| US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
| US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
| US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
| US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
| US9182956B2 (en) * | 2012-07-08 | 2015-11-10 | International Business Machines Corporation | Flattening conditional statements |
| US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
| US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
| US9081607B2 (en) | 2012-10-24 | 2015-07-14 | International Business Machines Corporation | Conditional transaction abort and precise abort handling |
| US9459877B2 (en) | 2012-12-21 | 2016-10-04 | Advanced Micro Devices, Inc. | Nested speculative regions for a synchronization facility |
| US20140280669A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
| US9824039B2 (en) * | 2013-09-09 | 2017-11-21 | International Business Machines Corporation | Signal interrupts in a transactional memory system |
| US9384036B1 (en) * | 2013-10-21 | 2016-07-05 | Google Inc. | Low latency thread context caching |
| US9311260B2 (en) * | 2013-12-09 | 2016-04-12 | Jack Mason | Context preservation during thread level speculative execution |
| CN105723348B (zh) * | 2013-12-17 | 2019-02-15 | 英特尔公司 | 使用事务性存储器检测未授权存储器修改及访问 |
| US9317379B2 (en) | 2014-01-24 | 2016-04-19 | International Business Machines Corporation | Using transactional execution for reliability and recovery of transient failures |
| US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
| US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
| US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
| GB2528270A (en) * | 2014-07-15 | 2016-01-20 | Advanced Risc Mach Ltd | Call stack maintenance for a transactional data processing execution mode |
| WO2016155008A1 (en) | 2015-04-03 | 2016-10-06 | Yahoo! Inc. | Method and system for scheduling transactions in a data system |
| US9760494B2 (en) * | 2015-06-24 | 2017-09-12 | International Business Machines Corporation | Hybrid tracking of transaction read and write sets |
| US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
| US9563467B1 (en) * | 2015-10-29 | 2017-02-07 | International Business Machines Corporation | Interprocessor memory status communication |
| US10261827B2 (en) | 2015-10-29 | 2019-04-16 | International Business Machines Corporation | Interprocessor memory status communication |
| US9772874B2 (en) * | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
| US20180004946A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Regulating control transfers for execute-only code execution |
| US20180267807A1 (en) * | 2017-03-15 | 2018-09-20 | Microsoft Technology Licensing, Llc | Precise exceptions for edge processors |
| US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
| US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
| US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
| US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
| US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
| US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
| US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060271767A1 (en) * | 2005-05-31 | 2006-11-30 | Toshiba America Electronic Components | System and method for detecting instruction dependencies in multiple phases |
| CN101203831A (zh) * | 2005-06-23 | 2008-06-18 | 英特尔公司 | 用于增强线程级推测的原语 |
Family Cites Families (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4819234A (en) * | 1987-05-01 | 1989-04-04 | Prime Computer, Inc. | Operating system debugger |
| US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
| US5659721A (en) * | 1995-02-14 | 1997-08-19 | Hal Computer Systems, Inc. | Processor structure and method for checkpointing instructions to maintain precise state |
| US5884059A (en) * | 1996-01-26 | 1999-03-16 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
| GB2362733B (en) * | 2000-05-25 | 2002-02-27 | Siroyan Ltd | Processors having compressed instructions. |
| JP3661614B2 (ja) * | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
| JP3632635B2 (ja) * | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
| US6799236B1 (en) * | 2001-11-20 | 2004-09-28 | Sun Microsystems, Inc. | Methods and apparatus for executing code while avoiding interference |
| US6810472B2 (en) * | 2002-06-24 | 2004-10-26 | Intel Corporation | Page handling efficiency in a multithreaded processor |
| US7657880B2 (en) * | 2003-01-31 | 2010-02-02 | Intel Corporation | Safe store for speculative helper threads |
| US7269717B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
| US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
| US7451300B1 (en) * | 2003-07-15 | 2008-11-11 | Transmeta Corporation | Explicit control of speculation |
| US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
| US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
| US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
| US7404041B2 (en) * | 2006-02-10 | 2008-07-22 | International Business Machines Corporation | Low complexity speculative multithreading system based on unmodified microprocessor core |
| US8135405B2 (en) * | 2006-08-31 | 2012-03-13 | Qualcomm Incorporated | Efficient search for wireless networks while minimizing page loss |
| US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
| US8930644B2 (en) | 2008-05-02 | 2015-01-06 | Xilinx, Inc. | Configurable transactional memory for synchronizing transactions |
| US9218290B2 (en) * | 2009-04-27 | 2015-12-22 | Intel Corporation | Data caching in a network communications processor architecture |
| US8250331B2 (en) * | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
| US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
| US8438571B2 (en) * | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Thread speculative execution and asynchronous conflict |
| US9626187B2 (en) * | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
-
2010
- 2010-02-24 US US12/711,851 patent/US8739164B2/en active Active
-
2011
- 2011-02-22 JP JP2012555083A patent/JP5615384B2/ja active Active
- 2011-02-22 EP EP11707741A patent/EP2539816A2/en not_active Ceased
- 2011-02-22 KR KR1020127025000A patent/KR101678133B1/ko active Active
- 2011-02-22 CN CN201180010654.7A patent/CN102906703B/zh active Active
- 2011-02-22 WO PCT/US2011/025778 patent/WO2011106333A2/en not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060271767A1 (en) * | 2005-05-31 | 2006-11-30 | Toshiba America Electronic Components | System and method for detecting instruction dependencies in multiple phases |
| CN101203831A (zh) * | 2005-06-23 | 2008-06-18 | 英特尔公司 | 用于增强线程级推测的原语 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
| TWI798370B (zh) * | 2018-03-05 | 2023-04-11 | 南韓商三星電子股份有限公司 | 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法 |
| CN110232031B (zh) * | 2018-03-05 | 2024-09-20 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20110209151A1 (en) | 2011-08-25 |
| KR101678133B1 (ko) | 2016-12-06 |
| JP5615384B2 (ja) | 2014-10-29 |
| CN102906703B (zh) | 2016-10-19 |
| EP2539816A2 (en) | 2013-01-02 |
| JP2013520753A (ja) | 2013-06-06 |
| WO2011106333A3 (en) | 2011-10-27 |
| WO2011106333A2 (en) | 2011-09-01 |
| US8739164B2 (en) | 2014-05-27 |
| KR20120130004A (ko) | 2012-11-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102906703A (zh) | 硬件交易存储器的自动暂停及回复 | |
| US9430275B2 (en) | Synchronization between concurrent notifier and waiter transactions using transaction condition variables | |
| US7178062B1 (en) | Methods and apparatus for executing code while avoiding interference | |
| Rossbach et al. | TxLinux: Using and managing hardware transactional memory in an operating system | |
| US8533699B2 (en) | System and method for optimizing a code section by forcing a code section to be executed atomically | |
| CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
| US8140497B2 (en) | System and method for implementing nonblocking zero-indirection transactional memory | |
| US8417897B2 (en) | System and method for providing locale-based optimizations in a transactional memory | |
| US8881153B2 (en) | Speculative thread execution with hardware transactional memory | |
| US8776063B2 (en) | Method and system for hardware feedback in transactional memory | |
| US9372718B2 (en) | Virtualizable advanced synchronization facility | |
| CN106030534B (zh) | 用于挽救部分执行的硬件事务的方法和系统 | |
| KR101970390B1 (ko) | 2진 변환 기반 프로세서들에 의한 록 생략 | |
| TWI801603B (zh) | 處理獨佔式載入指令的資料處理設備、方法及電腦程式 | |
| CN101833475A (zh) | 用于增强线程级推测的原语 | |
| CN101788922A (zh) | 基于辅助线程实现事务存储系统的方法和装置 | |
| KR20140003515A (ko) | 데이터 없이 추론적 소유권에 대한 지원 | |
| US10346196B2 (en) | Techniques for enhancing progress for hardware transactional memory | |
| KR20200061361A (ko) | 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가 | |
| Duan et al. | SCsafe: Logging sequential consistency violations continuously and precisely | |
| Duan | Techniques for low overhead fences and sequential consistency violation recording | |
| Harris et al. | Hardware-Supported Transactional Memory |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant |