CN106030532B - 用于事务存储器程序的软件回放器 - Google Patents
用于事务存储器程序的软件回放器 Download PDFInfo
- Publication number
- CN106030532B CN106030532B CN201580010710.5A CN201580010710A CN106030532B CN 106030532 B CN106030532 B CN 106030532B CN 201580010710 A CN201580010710 A CN 201580010710A CN 106030532 B CN106030532 B CN 106030532B
- Authority
- CN
- China
- Prior art keywords
- program
- instructions
- htm
- transactional
- software
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Multimedia (AREA)
Abstract
本文公开了包括处理器和动态随机存取存储器(DRAM)的系统。处理器包括混合事务存储器(HyTM),其包括硬件事务存储器(HTM)以及回放程序的程序调试器,程序包括HTM指令并且已使用HyTM执行。程序调试器包括将通过HTM的仿真来回放HTM指令的软件仿真器。本文也公开和声明了其它实施例。
Description
技术领域
实施例与事务存储器有关。
背景技术
硬件事务存储器(HTM)系统可在不远的将来对广泛采用可用。与经测试和可靠的软件事务存储器系统组合,HTM系统可在可编程性和性能方面可以是比基于锁的并行编程更具吸引力的备选方案。
混合事务存储器(TM)系统(“HyTM”)是采用HTM和软件事务存储器(STM)的系统。诸如断点和自组织I/O调试的传统调试技术不应用到HyTM,这是因为在调试技术使用对硬件事务非法的某些指令(例如,中断、I/O、上下文切换等)时,传统调试技术能够使硬件事务中止。因此,随HyTM系统产生的问题是如何调试执行一些硬件事务的事务存储器程序。
附图说明
图1是根据本发明的实施例的记录和回放(RnR)系统的框图。
图2是根据本发明的实施例的回放器(replayer)/事务调试器的框图。
图3是根据本发明的实施例的促进事务程序的调试的方法的流程图。
图4是根据本发明的实施例的处理器核的框图。
图5是根据本发明的实施例的系统的框图。
具体实施方式
本文中呈现包括记录和回放(RnR)软件回放器的RnR系统。RnR系统可提供对使用HTM的HyTM系统(本文中也称为“HyTM”)的调试支持。在本文中呈现的记录和回放系统(RnR系统)中,事务存储器(TM)程序由硬件系统执行和记录,并且然后由使用基础硬件的仿真和HyTM系统的软件部分的实施的组合的软件系统回放。
使用基于硬件的记录,本文中呈现的RnR系统使TM程序的争用特征标记完整,从而允许记录正确性TM缺陷(例如,编程错误)和性能TM缺陷(例如,效率有关的问题)。使用基于软件的回放,能够使用STM和HTM的仿真的组合来回放记录的TM程序,以便提供有用的正确性和性能调试分析。
本文中呈现的RnR事务调试器(TDB)系统可精确地记录和回放TM程序,具有对TM程序的执行可忽略不计的干扰。本文中呈现的方法和设备不改变有缺陷TM程序的争用特征特制标记。RnR TDB系统可捕捉事务中止的确切位置和原因,这可使程序员能够分析TM程序以确定执行失败的原因。
图1是根据本发明的实施例的RnR系统100的框图。系统100包括硬件记录逻辑102、存储装置106和包括软件事务调试器(TDB)回放软件110和虚拟机插装(instrumentation)工具112的软件回放器108。
在操作中,(硬件)记录逻辑102可记录在TM程序104的执行期间发生的事件。事件可包括但不限于事务起始、事务结束和事务中止。事件可在存储装置106中记录为记录的日志文件。
软件回放器108可配置成仿真记录逻辑102,其包括在程序记录中使用的硬件事务存储器(HTM)。虚拟机插装工具112可配置成插装和回放应用二进制码。软件回放器108可回放TD程序104并且分析结果,例如,识别正确性错误和性能错误。
TM系统通常不支持完全转义(full escape)动作,并且因此硬件事务的上下文内执行的指令能够变成该硬件事务的执行的一部分。如果回放器108要使用硬件记录逻辑102(例如,包括HTM),则协调程序线程的排序的所有管理操作将出现在硬件事务内,并且会导致原始记录的程序的行为的改变。也就是,硬件事务会包括另外的指令,所述指令会可能更改硬件事务的执行行为。
另外,即使支持逸出动作,诸如上下文切换和输入/输出(I/O)操作的一些操作可能对于事件事务仍是非法的。如果此类非法操作在硬件事务内执行,则硬件事务可能立即中止。上下文切换、中断和I/O命令是在回放记录的程序中可考虑的操作。例如,通常通过停止一个线程的执行以恢复另一线程的执行(例如,上下文切换),在回放器中管理在线程之间共享的存储器交叉存取。
带有精确错误代码的事务中止再现包括在HTM仿真中,这是因为此类错误代码可由争用管理器使用,导致对每个错误代码的不同的争用管理行为。
也可出于如上所述关于事务中止的类似原因,仿真事务提交再现。对于任何尽力而为型HTM,一般存在软件回退。因此,软件回退使HTM能够向前前进。因此,为回放记录的基于HTM的程序,软件事务存储器(STM)可用于记录程序执行和回放记录的程序两者。只要在回放中使用在记录中使用的STM,程序便能够正确回放。
图2是根据本发明的实施例的回放器/事务调试器系统200的框图。系统200的组件包括回放器引擎202、非事务执行204、事务执行206、STM实施208、HTM仿真210、事务后(post-transaction)指令处理程序212及HyTM争用管理器216。
(基于块(chunk)的)回放器引擎202回放TM程序,并且确定每个指令是事务指令还是非事务指令。如果确定指令为非事务性,则在204回放指令(例如,正常执行)。通过用于正确性调试的强STM隔离,可执行非事务执行。如果正常回放执行204检测到被中止的指令,则可将该指令发送到HyTM争用管理器216。
如果在回放器引擎202回放的指令是事务指令,则将指令发送到事务执行206。如果指令是与软件事务关联的事务指令,则回放使用STM(STM实施)208来执行。如果事务指令与硬件事务关联,则将指令发送到HTM仿真210。事务后指令处理程序212能够确定有关已引发的一个或多个冲突的信息,并且包括精确的冲突检测组件212以分析冲突和确定每个冲突的原因。如果指令中止或提交,则可将指令发送到混合事务存储器(HyTM)争用管理器216以便进行解析。
混合事务存储器争用管理器(HyTM CM) 216将仿真在程序记录中使用的HyTM CM,使得提交和中止的再现与记录的程序相同。如果HyTM CM未重复,则存在的可能性是在输出中回放的程序将与记录的程序不相同。HyTM CM 216决定哪些事物要中止以及哪些事物要提交,以及在事务中止时什么时候应重新执行硬件事务或软件事务。如果HyTM CM 216不仿真在程序记录中使用的HyTM CM,则能够违反事务中止和提交顺序,这可导致与原始记录的可能不同的最后回放状态。
对于HTM,争用管理的中止决策部分由基础硬件自动提供。因此,HTM指令的中止决策由HTM仿真206处理。剩余HyTM CM部分可在软件中实施,并且取决于HyTM CM 216是否支持动态争用管理策略,可在STM实施208的范围之外,在此情况下,可在辅助库中找到STM争用管理器。出于至少此原因,HyTM CM 216显示为与STM实施208分开的组件。
回放器引擎202回放指令块内的指令,块由可识别的开始标志和可识别的结束标志定义。例如,块可在事务的起始处开始,并且可在事务的结束处,或者在冲突发生时,或者在发现不支持的指令时等结束。回放器引擎202将回放指令,使得在并发执行线程的共享存储器存取之间的因果顺序在回放中被保持,并且包括所有类型的共享存储器同步机制,包括获得和释放锁,执行原子指令等。另外,回放引擎202将正确地回放在它们被记录时的非确定性输入系统事件(OS级别)。
由于基于块的记录,回放器引擎202可基于块。在没有基于块的回放的情况下,记录的程序会不正确地回放。基于块的回放器引擎202可包括用于记录的非确定性存储器事件的解析器、用于记录的非确定性输入事件的解析器和逐指令回放引擎。回放器引擎202可执行非HTM指令的仿真,并且也可回放宏指令原子性违反。
事务后指令处理程序210包括用于回放的事务的精确冲突检测组件212。在硬件与软件事务之间的精确冲突检测将被实施,同时保留用于如原始记录的硬件和软件事务的程序的事务隔离语义。此处描述的精确冲突检测由(基于块的)回放器引擎202用于跟踪事务冲突的源,并且不更改如原始记录的程序的语义或行为。
精确冲突检测可在以下示例中实施:假设软件事务由硬件事务中止,在软件事务与硬件事务之间冲突的识别方面可存在缺少精度,这是因为STM对使得软件事务中止的硬件事务没有直接认知。通过包括在软件事务与硬件事务之间的精确冲突检测(例如,只用于冲突识别目的),系统200能够识别冲突的确切位置(在程序内),这例如通过消除用于以其它方式可发生的存储器冲突的误报或猜测位置,可改进调试的质量。
非事务性回放执行204包括强STM隔离。通过RnR系统200可实现的属性之一是模拟用于回放的软件事务的强STM隔离。由于能够将交织的共享存储器存取排序的基础RnR记录硬件的原因,这在最初是可能的。在回放期间,共享的存储器交织能够用于识别在存取存储器的弱隔离软件事务与可在事务外并发存取的弱隔离软件事务之间的正确性缺陷。强隔离不会更改回放的行为。相反,强隔离能够通过原始存储器存取来识别何时违反了软件事务隔离。
图3是根据本发明的实施例的促进事务程序的调试的方法300的流程图。在框302,回放器引擎将回放TM程序中的下一指令。继续到决定菱形框304,如果指令不是事务指令,则前进到框306,将指令作为正常(例如,非事务性)指令处理,并且通过强STM隔离对其进行评估。移动到决定菱形框308,如果指令未中止,则返回框302,回放器引擎回放程序的下一指令。如果指令中止,则前进到框318,将指令发送到混合事务争用管理器以解决冲突。
返回决定菱形框304,如果确定指令是事务指令,则继续到决定菱形框310,确定指令是否为硬件事务指令,并且如果是,则继续到框 312,相对于可实现识别正确性和/或性能TM错误(“缺陷”)的指令的回放,仿真HTM。
如果在决定菱形框310,确定指令是软件事务指令,则继续到框314,STM可用于回放指令并且识别缺陷,例如,可包括与指令关联的正确性错误和/或性能错误的一个或更多个错误。
前进到决定菱形框316,如果与指令关联的冲突由事务后指令处理程序检测到,则移动到框318,将指令(无论是事务还是非事务指令)发送到混合事务争用管理器以解决冲突,并且前进到决定菱形框320,确定是否已回放当前块中的所有指令。如果当前块中另外指令尚未回放,则返回框302,回放器引擎回放程序的下一指令。如果已回放当前块的所有指令,则方法在320结束。
如果在决定菱形框316事务后指令处理程序未检测到冲突,则前进到决定菱形框320,如果当前块中另外指令尚未回放,则返回框302,回放器引擎回放程序的下一指令。如果已回放当前块的所有指令,则方法在320结束。
实施例能够在许多不同的处理器类型中实施。例如,能够在诸如多核处理器的处理器中实现实施例。现在参照图4,所示的是根据本发明的一个实施例的处理器核的框图。如图4中所示,处理器核400可以为多级流水线乱序处理器。
如图4所示,核400包括可用于获取要执行的指令并且将它们准备好以便以后在处理器中使用的前端单元410。例如,前端单元410可包括获取单元401、指令高速缓存403和指令解码器405。在一些实施中,前端单元410可还包括追踪高速缓存连同微代码存储装置以及指令存储装置。获取单元401可例如从存储器(未示出)或从指令高速缓存403获取宏指令,并且将它们馈送到指令解码器405以将宏指令解码成诸如供处理器执行的指令的原语。
耦合在前端单元410与执行单元420之间的是可用于接收指令并且准备好它们以便执行的乱序(OOO)引擎415。更具体地说,OOO引擎415可包括各种缓冲器以将指令流重新排序,并且分配执行需要的各种资源以及提供逻辑寄存器的重命名到各种寄存器文件内的存储位置上,例如寄存器文件430和扩展寄存器文件435。寄存器文件430可包括用于整数和浮点操作的单独寄存器文件。扩展寄存器文件435可提供用于向量大小的单元的存储,例如每寄存器256或512比特。
各种资源可存在于执行单元420中,例如除其它专用硬件外还包括各种整数、浮点和单指令多数据(SIMD)逻辑单元。例如,此类执行单元可包括一个或更多个算术逻辑单元(ALU) 422。执行单元420可包括混合事务存储器(HyTM) 472以在HyTM 472的HTM部分中执行和记录程序。根据本发明的实施例,HyTM 472可包括回放器/事务调试器,回放器/事务调试器配置成使用HyTM 472的软件(例如,STM)和/或HyTM 472的硬件事务存储器HTM部分的软件仿真,执行程序(或代码块)的回放和错误检测。
在对执行单元内的数据执行操作时,可将结果提供到引退逻辑,即,重新排序缓冲器(ROB) 440。更具体地说,ROB 440可包括各种阵列和逻辑以接收与执行的指令关联的信息。然后,此信息由ROB 440检查,以确定指令是否能够有效地引退以及结果数据是否能够有效地提交到处理器的体系结构状态,或者是否发生了阻止指令的适当引退的一个或更多个例外。在本发明的实施例中,ROB 440可包括混合事务争用管理器(未示出)以根据本发明的实施例,解决由HyTM 472的回放器检测到的冲突。另外,ROB 440可处理与引退关联的其它操作。
如图4中所示,ROB 440耦合到高速缓存450,在一个实施例中,高速缓存450可以是低级高速缓存(例如,L1高速缓存),并且也可包括转译后备缓冲器(TLB) 455,尽管本发明的范围在此方面不受限制。从高速缓存450,可与更高级高速缓存、系统存储器等进行数据通信。
要注意的是,虽然图4的处理器的实施是关于诸如所谓的x86 ISA体系结构的乱序机,但本发明的范围在此方面不受限制。也就是说,其它实施例可在有序处理器、诸如基于ARM的处理器的精简指令集计算(RISC)处理器或能够经由仿真引擎和关联逻辑电路仿真不同ISA的指令和操作的另一类型的ISA的处理器中实施。此外,其它实施例可在图形处理器中实施。
实施例可在许多不同的系统类型中实施。现在参照图5,所示的是根据本发明的实施例的系统的框图。如图5中所示,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。(在未示出的其它实施例中,处理器可经由星形拓扑、网状拓扑、交叉式拓扑或者通过另一连接方案连接)。如图5中所示,每个处理器570和580可以为多核处理器,包括第一和第二处理器核(即,处理器核574a和574b以及处理器核584a和584b),但处理器中可存在可能更多核。
仍参照图5,第一处理器570还包括存储器控制器中心(MCH) 572和点对点(P-P)接口576与578。类似地,第二处理器580包括MCH 582和P-P接口586与588。如图5中所示,MCH572和582将处理器与相应存储器(即,存储器532和存储器534)耦合,其可以是在本地附连到相应处理器的系统存储器(例如,DRAM)的一部分。第一处理器570和第二处理器580可分别经由P-P互接562和554耦合到芯片组590。如图5中所示,芯片组590包括P-P接口594和598。此外,芯片组590包括接口592以便通过P-P互连539将芯片组590与图形引擎538耦合。
根据本发明的实施例,每个处理器核574a和584a可分别包括混合事务存储器(HyTM) 502和504。每个HyTM(502,504)可在HyTM的HTM部分中执行和记录对应程序。根据本发明的实施例,每个HyTM(502,504)可包括回放器/事务调试器,回放器/事务调试器配置成使用对应HyTM的软件和/或对应HyTM的硬件事务存储器(HTM)部分的软件仿真,执行对应程序(或代码块)的回放和错误检测。
芯片组590可经由接口596耦合到第一总线516。如图5中所示,各种输入/输出(I/O)装置514可连同将第一总线516耦合到第二总线520的总线桥518一起耦合到第一总线516。在一个实施例中,各种装置可耦合到第二总线520,例如包括键盘/鼠标522、通信装置526和诸如磁盘驱动器或其它海量存储装置的可存储代码530的数据存储单元528。此外,音频I/O 524可耦合到第二总线520。实施例能够结合到其它类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、Ultrabook™、笔记本、台式计算机或诸如此类的移动装置。
下面描述其它实施例。
在一个示例中,一种包括处理器的系统,所述处理器包括混合事务存储器(HyTM),HyTM包括硬件事务存储器(HTM)。处理器也包括程序调试器以回放包括硬件事务存储器(HTM)指令并且已使用HyTM执行的程序。程序调试器包括软件仿真器以通过HTM的仿真来回放HTM指令。系统也包括存储程序的动态随机存取存储器(DRAM)。
在示例中,程序调试器还通过软件事务存储器(STM)的使用,回放程序的软件事务指令。
在示例中,程序调试器将通过强软件事务存储器(STM)隔离,回放程序的非事务指令。
在示例中,程序调试器将识别程序中的正确性错误和性能错误至少之一。
在另一示例中,至少一种计算机可读存储介质,其上存储有指令,用于使系统回放已由包括硬件事务存储器(HTM)的混合事务存储器(HyTM)系统执行的程序。回放至少部分通过HTM的软件仿真来执行。
在示例中,HyTM系统也包括软件事务存储器(STM)。在示例中,在要回放的程序指令是与软件事务关联的事务指令时,回放使用STM来执行。
在示例中,至少一种计算机可读存储介质还包括经程序的回放,识别程序中一个或更多个冲突的指令,程序包括识别正确性错误和性能错误至少之一的指令。
在示例中,回放完全仿真由HyTM执行的程序的执行的记录。
在示例中,回放程序的指令包括确定程序的程序指令是事务指令还是非事务指令的指令。当程序指令是非事务指令时,回放通过强软件事务存储器(STM)隔离来执行。
在示例中,在要回放的程序指令是与硬件事务关联的事务指令时,回放通过HTM的软件仿真来执行。
在示例中,存储的指令使系统回放程序而不干扰程序。
在示例中,至少一种计算机可读存储介质还包括使系统捕捉事务中止的原因和位置至少之一的指令。
在示例中,程序的回放包括使暂停第一线程的执行和恢复第二线程的执行的至少一个上下文切换,并且回放使用HTM的软件仿真来执行。
在示例中,至少一种计算机可读存储介质还存储经由软件仿真,仿真HTM的事务存储器争用管理器的中止决策部分的指令。
在另一示例中,方法包括回放在包括硬件事务存储器(HTM)的混合事务存储器(HyTM)系统中已执行的程序,其中,回放至少部分使用HTM的软件仿真来执行。方法也包括经由回放程序,识别程序中的一个或更多个冲突。
在示例中,方法包括经由软件仿真,仿真HTM的事务存储器争用管理器的中止决策部分。
在示例中,HyTM包括软件事务存储器(STM),方法还包括利用STM回放程序的一个或更多个软件事务指令。
在示例中,通过强软件事务存储器(STM)隔离,执行程序的非事务指令的回放。
在示例中,方法包括捕捉与程序关联的事务中止的原因和位置至少之一。
在示例中,设备可执行任何上述方法。
在示例中,机器可读存储装置,包括机器可读指令,在指令被执行时,可实施任何上述方法。
实施例可在许多不同类型的系统中使用。例如,在一个实施例中,通信装置能够布置成执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信装置,并且替代地其它实施例能够被引导至用于处理指令的其它类型的设备或包括指令的一个或更多个机器可读媒体,指令响应于在计算装置上被执行,使装置执行本文中所描述的一个或更多个方法和技术。
实施例可以在代码中实现,并可存储在非暂时性存储介质上,所述介质具有指令存储在其上,所述指令能用于对系统进行编程以执行指令。存储介质可包括但不限于任一类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体器件(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除编程只读存储器(EPROM)、闪存、电擦除可编程只读存储器(EEPROM)随机存取存储器(RAM))、磁卡或光卡或适用于存储电子指令的任何其它类型的媒体。
虽然本发明已相对有限数量的实施例进行了描述,但本领域的技术人员将意识到从其的多种修改和变化。随附权利要求旨在涵盖本发明真正精神和范围内的所有此类修改和变化。
Claims (25)
1.一种记录和回放系统,包括:
处理器,包括:
包括硬件事务存储器HTM和软件事务存储器STM的混合事务存储器HyTM,用于经由硬件记录逻辑执行TM程序并且记录所述TM程序,所述硬件记录逻辑用于将交织的共享存储器存取排序;以及
回放记录的程序的程序调试器,所述程序调试器包括回放器引擎以回放所述TM程序的指令并且如果一个或多个被回放指令是非事务指令则提供所述一个或多个被回放指令用于非事务执行,并且提供一个或多个别的被回放指令用于事务执行,包括提供HTM指令给软件仿真器以通过所述HTM的仿真来回放所述HTM指令并且通过所述STM的使用提供STM指令以供回放;以及
存储所述程序的动态随机存取存储器(DRAM)。
2.如权利要求1所述的系统,其中所述程序调试器还采用强软件事务存储器(STM)隔离回放所述程序的非事务指令。
3.如权利要求1所述的系统,其中所述程序调试器将识别所述程序中的性能错误。
4.如权利要求1所述的系统,其中所述程序调试器将识别所述程序中的正确性错误。
5.如权利要求1所述的系统,其中所述程序调试器将确定所述程序内的与所述程序关联的事务中止的原因和位置中至少之一。
6.如权利要求1所述的系统,其中所述软件仿真器在软件中仿真所述HTM的事务存储器争用管理器的中止决策部分。
7.如权利要求1所述的系统,其中所述程序调试器将回放所述程序而不干扰所述程序。
8.如权利要求1到7中任一项所述的系统,其中所述程序的回放完全仿真由所述HyTM执行的程序的执行的记录。
9.一种处理器,包括:
至少一个核:
包括硬件事物存储器HTM和软件事务存储器STM的混合事物存储器HyTM,用于经由硬件记录逻辑执行TM程序并且记录所述TM程序,所述硬件记录逻辑用于将交织的共享存储器存取排序;以及
回放记录的程序的程序调试器,所述程序调试器包括回放器引擎以回放所述TM程序的指令并且如果一个或多个被回放指令是非事务指令则提供所述一个或多个被回放指令用于非事务执行,并且提供一个或多个别的被回放指令用于事务执行,包括提供HTM指令给软件仿真器以通过所述HTM的仿真来回放所述HTM指令并且通过所述STM的使用提供STM指令以供回放。
10.如权利要求9所述的处理器,其中所述程序调试器将识别所述程序中的性能错误。
11.如权利要求9所述的处理器,其中所述程序调试器将识别所述程序中的正确性错误。
12.如权利要求9所述的处理器,其中所述程序的回放完全仿真由所述HyTM执行的程序的执行的记录。
13.如权利要求9所述的处理器,其中所述软件仿真器在软件中仿真所述HTM的事务存储器争用管理器的中止决策部分。
14.如权利要求9所述的处理器,其中所述程序调试器将回放所述程序而不干扰所述程序。
15.如权利要求9到14中任一项所述的处理器,其中所述程序调试器将确定所述程序内的与所述程序关联的事务中止的位置和原因中至少之一。
16.一种用于记录和回放的方法,包括:
经由硬件记录逻辑记录程序,所述程序已在包括硬件事务存储器HTM和软件事务存储器STM的混合事务存储器HyTM系统中被执行;
经由调试器回放记录的程序,所述调试器包括回放器引擎以回放TM程序的指令,包括如果一个或多个被回放指令是非事务指令则提供所述一个或多个被回放指令用于非事务执行,并且提供一个或多个别的被回放指令用于事务执行,包括提供HTM指令给软件仿真器以通过所述HTM的仿真来回放所述HTM指令并且通过所述STM的使用提供STM指令以供回放;以及
经由回放所述程序,识别所述程序中的一个或多个冲突。
17.如权利要求16所述的方法,还包括经由软件仿真仿真所述HTM的事务存储器争用管理器的中止决策部分。
18.如权利要求16所述的方法,其中采用强软件事务存储器(STM)隔离执行所述程序的非事务指令的回放。
19.如权利要求16所述的方法,还包括捕捉与所述程序关联的事务中止的原因和位置中至少之一。
20.一种记录和回放设备,包括用于执行如权利要求16到19中任一项所述的方法的部件。
21.一种用于记录和回放的设备,包括:
用于记录程序的装置,所述程序已在包括硬件事务存储器HTM和软件事务存储器STM的混合事务存储器HyTM系统中被执行;
用于经由调试器回放记录的程序的装置,所述调试器包括回放器引擎以回放TM程序的指令,包括如果一个或多个被回放指令是非事务指令则提供所述一个或多个被回放指令用于非事务执行,并且提供一个或多个别的被回放指令用于事务执行,包括提供HTM指令给软件仿真器以通过所述HTM的仿真来回放所述HTM指令并且通过所述STM的使用提供STM指令以供回放;以及
用于经由回放所述程序识别所述程序中的一个或多个冲突的装置。
22.如权利要求21所述的设备,还包括用于经由软件仿真仿真所述HTM的事务存储器争用管理器的中止决策部分的装置。
23.如权利要求21所述的设备,其中采用强软件事务存储器(STM)隔离执行所述程序的非事务指令的回放。
24.如权利要求21所述的设备,还包括用于捕捉与所述程序关联的事务中止的原因和位置中至少之一的装置。
25.一种已在其上存储有指令的计算机可读介质,所述指令在被执行时引起处理器执行如权利要求16-19中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/226312 | 2014-03-26 | ||
US14/226,312 US9697040B2 (en) | 2014-03-26 | 2014-03-26 | Software replayer for transactional memory programs |
PCT/US2015/021929 WO2015148339A1 (en) | 2014-03-26 | 2015-03-23 | Software replayer for transactional memory programs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106030532A CN106030532A (zh) | 2016-10-12 |
CN106030532B true CN106030532B (zh) | 2020-06-12 |
Family
ID=54190496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580010710.5A Active CN106030532B (zh) | 2014-03-26 | 2015-03-23 | 用于事务存储器程序的软件回放器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9697040B2 (zh) |
EP (1) | EP3123321A4 (zh) |
JP (1) | JP6306261B2 (zh) |
KR (1) | KR101862094B1 (zh) |
CN (1) | CN106030532B (zh) |
WO (1) | WO2015148339A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697040B2 (en) | 2014-03-26 | 2017-07-04 | Intel Corporation | Software replayer for transactional memory programs |
US11188336B2 (en) | 2015-12-28 | 2021-11-30 | Qualcomm Incorporated | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
WO2017205408A1 (en) * | 2016-05-24 | 2017-11-30 | Hada Joan | System and method for abstracted and fragmented data retrieval |
KR101885030B1 (ko) * | 2017-04-21 | 2018-08-02 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 |
KR102007117B1 (ko) * | 2018-01-19 | 2019-08-02 | 전북대학교산학협력단 | 트랜잭션 처리 방법 및 트랜잭션 처리 시스템 |
KR102186719B1 (ko) * | 2018-11-15 | 2020-12-08 | 주식회사 마르시스 | 블록형 무선 코딩 명령어 입력 장치 및 방법 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3542463B2 (ja) * | 1997-07-29 | 2004-07-14 | Necエレクトロニクス株式会社 | 集積回路装置、その動作制御方法 |
US7870545B2 (en) * | 2005-12-16 | 2011-01-11 | Intel Corporation | Protecting shared variables in a software transactional memory system |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8307346B2 (en) * | 2006-06-09 | 2012-11-06 | Oracle America, Inc. | Atomic groups for debugging |
US7849446B2 (en) * | 2006-06-09 | 2010-12-07 | Oracle America, Inc. | Replay debugging |
US8316352B2 (en) * | 2006-06-09 | 2012-11-20 | Oracle America, Inc. | Watchpoints on transactional variables |
US8533681B2 (en) * | 2007-03-07 | 2013-09-10 | The Board Of Trustees Of The University Of Illinois | Atomicity violation detection using access interleaving invariants |
US8688920B2 (en) * | 2007-05-14 | 2014-04-01 | International Business Machines Corporation | Computing system with guest code support of transactional memory |
US8099719B2 (en) | 2007-06-19 | 2012-01-17 | Microsoft Corporation | Transactional debugger for a transactional memory system and detecting conflicts |
US9043553B2 (en) | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US7941411B2 (en) * | 2007-06-29 | 2011-05-10 | Microsoft Corporation | Memory transaction grouping |
US9772751B2 (en) * | 2007-06-29 | 2017-09-26 | Apple Inc. | Using gestures to slide between user interfaces |
JP4856023B2 (ja) * | 2007-08-08 | 2012-01-18 | パナソニック株式会社 | リアルタイムウォッチ装置及びその方法 |
US8661204B2 (en) * | 2007-08-15 | 2014-02-25 | University Of Rochester, Office Of Technology Transfer | Mechanism to support flexible decoupled transactional memory |
US8140497B2 (en) * | 2007-12-31 | 2012-03-20 | Oracle America, Inc. | System and method for implementing nonblocking zero-indirection transactional memory |
US8972794B2 (en) * | 2008-02-26 | 2015-03-03 | International Business Machines Corporation | Method and apparatus for diagnostic recording using transactional memory |
JP5255887B2 (ja) * | 2008-04-08 | 2013-08-07 | ルネサスエレクトロニクス株式会社 | 情報処理装置及びデバッグ方法 |
US8612950B2 (en) * | 2008-06-19 | 2013-12-17 | Intel Corporation | Dynamic optimization for removal of strong atomicity barriers |
US8555016B2 (en) * | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
JP5608738B2 (ja) * | 2009-06-26 | 2014-10-15 | インテル・コーポレーション | 無制限トランザクショナルメモリ(utm)システムの最適化 |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8516202B2 (en) | 2009-11-16 | 2013-08-20 | International Business Machines Corporation | Hybrid transactional memory system (HybridTM) and method |
US8095824B2 (en) * | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US20110258613A1 (en) | 2010-04-15 | 2011-10-20 | International Business Machines Corporation | Software debugger activation based on key performance indicators |
US8453120B2 (en) * | 2010-05-11 | 2013-05-28 | F5 Networks, Inc. | Enhanced reliability using deterministic multiprocessing-based synchronized replication |
US8639981B2 (en) * | 2011-08-29 | 2014-01-28 | Apple Inc. | Flexible SoC design verification environment |
CN104220989B (zh) | 2011-12-21 | 2017-12-12 | 英特尔公司 | 用于识别并且再现多线程程序中并发冲突的方法及系统 |
US9311101B2 (en) * | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9135139B2 (en) | 2012-06-27 | 2015-09-15 | Intel Corporation | Methods and systems to identify and reproduce concurrency violations in multi-threaded programs using expressions |
US9268598B2 (en) * | 2012-09-13 | 2016-02-23 | International Business Machines Corporation | Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories |
US9317297B2 (en) | 2012-09-27 | 2016-04-19 | Intel Corporation | Replay execution of instructions in thread chunks in the chunk order recorded during previous execution |
US9836316B2 (en) | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
WO2014100698A1 (en) * | 2012-12-20 | 2014-06-26 | Massachusetts Institute Of Technology | Methods and systems for enhancing hardware transactions using hardware transactions in software slow-path |
US9128781B2 (en) * | 2012-12-28 | 2015-09-08 | Intel Corporation | Processor with memory race recorder to record thread interleavings in multi-threaded software |
US9501340B2 (en) * | 2013-03-15 | 2016-11-22 | Intel Corporation | Mechanism for facilitating dynamic and efficient management of instruction atomicity violations in software programs at computing systems |
WO2015009275A1 (en) | 2013-07-15 | 2015-01-22 | Intel Corporation | Improved transactional memory management techniques |
US9183043B2 (en) * | 2013-07-16 | 2015-11-10 | Oracle International Corporation | Systems and methods for adaptive integration of hardware and software lock elision techniques |
US9244724B2 (en) * | 2013-08-15 | 2016-01-26 | Globalfoundries Inc. | Management of transactional memory access requests by a cache memory |
US9086974B2 (en) * | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Centralized management of high-contention cache lines in multi-processor computing environments |
US9146774B2 (en) * | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
US9965320B2 (en) * | 2013-12-27 | 2018-05-08 | Intel Corporation | Processor with transactional capability and logging circuitry to report transactional operations |
US9697040B2 (en) | 2014-03-26 | 2017-07-04 | Intel Corporation | Software replayer for transactional memory programs |
US10007549B2 (en) * | 2014-12-23 | 2018-06-26 | Intel Corporation | Apparatus and method for a profiler for hardware transactional memory programs |
-
2014
- 2014-03-26 US US14/226,312 patent/US9697040B2/en active Active
-
2015
- 2015-03-23 EP EP15769041.3A patent/EP3123321A4/en not_active Withdrawn
- 2015-03-23 JP JP2017501141A patent/JP6306261B2/ja active Active
- 2015-03-23 KR KR1020167023067A patent/KR101862094B1/ko active IP Right Grant
- 2015-03-23 WO PCT/US2015/021929 patent/WO2015148339A1/en active Application Filing
- 2015-03-23 CN CN201580010710.5A patent/CN106030532B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106030532A (zh) | 2016-10-12 |
JP2017510014A (ja) | 2017-04-06 |
EP3123321A4 (en) | 2017-11-29 |
US20150277968A1 (en) | 2015-10-01 |
EP3123321A1 (en) | 2017-02-01 |
KR20160113205A (ko) | 2016-09-28 |
KR101862094B1 (ko) | 2018-05-29 |
WO2015148339A1 (en) | 2015-10-01 |
JP6306261B2 (ja) | 2018-04-04 |
US9697040B2 (en) | 2017-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106030532B (zh) | 用于事务存储器程序的软件回放器 | |
US10073719B2 (en) | Last branch record indicators for transactional memory | |
US9558118B2 (en) | Tracing mechanism for recording shared memory interleavings on multi-core processors | |
US9086969B2 (en) | Establishing a useful debugging state for multithreaded computer program | |
CN111149094B (zh) | 处理缓冲器中的错误 | |
CN111133418B (zh) | 在例外屏蔽更新指令之后允许未中止的事务处理 | |
US8392891B2 (en) | Technique for finding relaxed memory model vulnerabilities | |
CN112334874A (zh) | 事务比较和丢弃指令 | |
US11030075B2 (en) | Efficient register breakpoints | |
CN113168367A (zh) | 位精确跟踪中的处理器存储器重排序提示 | |
US10133655B1 (en) | Emulation of target system using JIT compiler and bypassing translation of selected target code blocks | |
Pereira et al. | Virtues and obstacles of hardware-assisted multi-processor execution replay | |
CN112639728A (zh) | 用于事务存储器的设备和数据处理方法 | |
Jiang et al. | Kernel data race detection using debug register in Linux | |
Di Carlo et al. | On the on-line functional test of the Reorder Buffer memory in superscalar processors | |
Orosa et al. | A hardware approach to detect, expose and tolerate high level data races | |
JP2024512556A (ja) | オフロードされた動作における実行ハザードの検出 | |
CN116194893A (zh) | 用于在采用事务性存储器的系统中处理事务的技术 | |
Dimitrov | Architectural Support For Improving System Hardware/software Reliability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |