CN105009089A - 用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构 - Google Patents

用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构 Download PDF

Info

Publication number
CN105009089A
CN105009089A CN201380073000.8A CN201380073000A CN105009089A CN 105009089 A CN105009089 A CN 105009089A CN 201380073000 A CN201380073000 A CN 201380073000A CN 105009089 A CN105009089 A CN 105009089A
Authority
CN
China
Prior art keywords
instruction
replay
record
macro
ntb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380073000.8A
Other languages
English (en)
Other versions
CN105009089B (zh
Inventor
N·道滕翰
J·E·高茨施里奇
G·A·博卡姆
C·L·佩雷拉
胡世亮
K·丹尼
R·卡萨
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 CN105009089A publication Critical patent/CN105009089A/zh
Application granted granted Critical
Publication of CN105009089B publication Critical patent/CN105009089B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/3009Thread control 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

描述一种根据一个实施例的用于促进在软件程序中指令原子性违反行为的动态和高效管理的机构。如本文中描述的方法实施例包括:在重播逻辑处从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录。第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行。记录系统可以记录第一和第二宏指令之间的交错。方法包括:精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录。正确重播可以包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。

Description

用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构
技术领域
本文描述的实施例一般地涉及计算机编程。更具体地,各个实施例涉及用于促进对在计算系统处的软件程序中指令原子性违反行为(instruction atomicity violations)的动态和高效管理的机构。
背景技术
多线程和/或多核处理器在目前是普遍的。它们被用在各种类型的计算装置中,仅列举一些示例,诸如服务器、桌面计算机、笔记本、平板电脑、智能电话、和移动电话。随着多核技术的增长,并行编程已经变得普遍存在,不断增加的更多线程和/或核心的趋势在未来被预期会继续。不幸的是,由于诸多因素(any number of factors),编写正确和高效的并行程序对于许多开发者来说仍然是挑战。
尤其对于调试的困难性有贡献的一个因素是这种软件执行的不确定性。例如,多线程程序的线程可以从程序的一个执行到下一个执行不同地交错。在线程交错方面的这种变化可以导致线程从程序的一个执行到下一个执行对共享存储器的访问排序的变化。例如,线程可以在一次执行程序时按照一个特定交错次序访问共享存储器,但是线程可以在程序另一次执行时按照不同的交错次序访问共享存储器。
由于这种不确定的执行行为,一些类型的程序错误可能是尤其难以分析、调试和改正的。例如,并发程序错误可能仅在一些而非所有线程交错和/或共享存储器访问排序情况下发生。例如,并发程序错误可能在一次程序按照特定线程交错(和/或共享存储器访问排序)执行时发生,但是并发程序错误可能在另一次程序按照不同的线程交错(和/或不同的共享存储器访问排序)执行时不发生。这可能倾向于使得软件开发者、软件调试者等难以知道(更不要说再现)导致并发程序错误的特定线程交错和/或共享存储器访问排序。
这倾向于导致更严重的编程低效率,资源浪费(诸如电力、时间、性能、人力资源等的浪费)以及进一步导致更高的软件开发成本和/或将多线程或并行处理软件推向市场的潜在延迟。
附图说明
在附图的图中作为示例而非作为限制图示了各个实施例,在附图中相似的附图标记指代相似的元件。
图1图示了根据一个实施例用于促进对软件程序中指令违反行为的基于记录/重播(replay)的管理的程序重播机构。
图2A图示了根据一个实施例的程序重播机构。
图2B图示了一个实施例中的具有专用数据包编码的块数据包。
图3图示了根据一个实施例的用于对在计算系统处的软件程序中的指令原子性违反行为的动态和高效管理的架构。
图4A图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的动态和高效管理的方法。
图4B图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的动态和高效管理的方法。
图5图示了根据一个实施例的适合于实施本公开的实施例的计算机系统。
具体实施方式
在下面的描述中,许多特定细节被阐述。然而,如本文描述的实施例可以在没有这些特定细节的情况下被实践。在其它实例中,为了不使对本描述的理解模糊,公知的电路、结构和技术没有被详细示出。
各个实施例提供用于诸如关于单个宏指令或在处理单个宏指令时正确检测、记录和重播编程或计算指令内的指令原子性违反行为(“IAV”)。使用基于硬件的存储器竞争记录(MMR)技术,可以实现对并行程序的“一刻不停(always-on)”的记录,该记录随后可以被重播以便产生并行程序被初始执行导致的结果。另外,MMR可以使用块(表示来自单个线程的多个顺序指令的逻辑分组)来高效地改善软件回播中它们在足迹方面减小的空间硬件的指令排序和放松的排序限制。
各个实施例提供了一种机构,该机构通过促进对程序记录的正确和精确的回播来恰当地、动态地并且高效地检测与指令(诸如单个宏指令)一起发生的任何原子性违反行为,从而克服了与基于块的MRR系统有关(诸如与重播MMR记录程序有关)的任何有挑战的困境情况。常规系统对于正确重播所记录的程序的失效留下许多未检测到的并发违反行为。各个实施例促进对所记录程序的准确重播,诸如对所记录的并行程序的正确和确定的重播,以便如指令被记录的那样精确重播这些指令(包括来自其它线程的可能交错的指令),从而检测和再现并行程序中的任何和所有并发违反行为。
图1图示了根据一个实施例的用于促进对软件程序中指令违反行为的基于记录/重播的管理的程序重播机构110。计算装置100充当主机机器以便采用用于促进对在计算装置(诸如计算装置100)处软件程序中基于指令的违反行为(例如,IAV)的基于记录和重播的管理(包括再现)的程序重播机构(“重播机构”)110。在一个实施例中,违反行为管理机构110采用或包括记录系统(例如,使用块的基于MRR的记录系统等)以便产生对编程指令的记录,并且还采用或包括新颖记录播放器以便精确和高效地重播这种记录,以使得任何违反行为(诸如指令原子性违反行为)可被准确再现和管理。要注意的是,比如“播放”和“重播”之类的术语和比如“正在播放”、“正在重播”、“播放器”、“重播器”等之类的其它等同术语遍及本文档可互换地使用。例如,“重播”绝不被限制为仅播放记录的多重或随后的实例,而是它还可以包括第一时间播放。
在一个实施例中,重播机构110促进所记录的程序的正确重播,诸如所记录的并行程序的准确和确定的重播,以便如指令被精确记录的那样重播指令(包括来自其它线程的可能交错的指令)从而检测和再现并行程序中的任何和所有并发违反行为。例如,使用重播机构110,单个宏指令内的原子性违反行为可以使用MRR记录技术被精确重播。对所记录程序的正确重播可以涉及对所记录程序的准确和确定重播以使得所重播的执行精确实施或重新实施被初始记录的所有指令交错,同时既在每个指令执行之前又在每个指令执行期间维持精确存储器状态。另外,在一个实施例中,对所记录程序指令的正确重播可以由重播机构110执行,即使在新的指令被添加到现有指令集架构(“ISA”)时。
计算装置100可以包括移动计算装置(诸如蜂窝电话,包括智能电话(例如,Apple®的iPhone®、Research in Motion®的BlackBerry®)、个人数字助理(PDA)等)、平板计算机(例如Apple®的iPad®、Samsung®的Galaxy 3®等)、膝上型计算机(例如笔记本、上网本、UltrabookTM等)、电子阅读器(例如Amazon®的Kindle®、Barnes and Nobles®的Nook®等)等。计算装置100还可以包括机顶盒(例如,基于互联网的有线电视机顶盒等),和更大的计算装置,诸如桌面计算机、服务器计算机等。
计算装置100包括操作系统(OS)106,操作系统106充当计算装置100的任何硬件或物理资源与用户之间的接口。计算装置100还包括一个或多个处理器102、存储器装置104、网络装置、驱动器等以及输入输出(I/O)资源108,诸如触摸屏、触摸面板、触摸板、虚拟或规则的键盘、虚拟或规则的鼠标等。要注意,比如“计算装置”、“节点”、“计算节点”、“客户端”、“主机”、“服务器”、“存储器服务器”、“机器”、“装置”、“计算装置”、“计算机”、“计算系统”等的术语遍及本文档可以互换地使用。
图2A图示了根据一个实施例的程序重播机构110。在一个实施例中,程序重播机构110包括多个组件,诸如检测逻辑202、处理逻辑204、执行/终止逻辑206、重播逻辑(“播放逻辑”、“播放器”或简单地称为“重播器”)208以及通信/兼容性逻辑210。遍及本文档,“逻辑”可以互换地称为“组件”或“模块”并且作为示例可以包括软件、硬件和/或软件和硬件的任何组合,诸如固件。
在一个实施例中,程序重播机构110包括重播逻辑208,用于正确播放或重播记录以便检测、播放、再现等任何和所有指令原子性违反行为(例如_asm inc),指令原子性违反行为可能在单个宏指令内发生并且可以被记录在MRR记录系统(诸如图3的基于硬件的MRR系统308)上或由MRR记录系统记录。现在考虑单个inc汇编指令,其被扩展成其微操作(例如存储器操作)组件,如下:
该上述示例开始于说明单个宏操作如何可以导致指令原子性违反行为,如果例如次要线程将在这种单个inc宏操作指令内的某些微操作之间精确执行的话。为了说明,例如考虑下述情况:
上面说明了两个相同inc指令,inc x和 inc y,宏指令或宏操作在两个不同线程(线程1和线程2)上并列运行。在这个示例中,线程1对共享变量x执行inc宏操作的加载和inc部分。然而,线程2随后对共享存储器变量y执行完整的inc操作,从而在inc temp处中断线程1上inc x微操作的最后一个(last)。同时,随着时间推移,当在线程2上执行inc y的整个操作时,线程1随后重新开始并且把stale tmp值(例如st ox3, tmp)提交给共享存储器变量x,以改写由线程2执行的对x的更新,从而导致丢失更新指令原子性违反行为,其中inc操作之一被丢失。
在一个实施例中,为了继续上面的示例,以便避免这种种类的情况以及所产生的违反行为或丢失,重播逻辑208可以通过下述方式提供这个指令的正确重播:实施例如经历原子性违反行为的宏操作的内部存储器状态以及实施由该应用的所有线程观察到的全局存储器状态。在上面的示例中,将被观察到的是,每个指令具有两个存储器视图,内部局部存储器和外部全局存储器。
例如,如果被重播的程序仅重播宏级别的指令,则指令原子性违反行为可能无法在重播期间被观察到,并且丢失的更新可能被意外地消除,从而致使用以对执行再现的重播不忠实于初始记录。如果来自线程1的指令在重播期间首先执行,则如由线程2在ld tmp, 0x3微操作中读取的全局存储器状态可能不同于初始记录期间,因为线程1的st 0x3, tmp微操作可以在来自线程2的指令被执行时存在于全局存储器中,这可能导致被不正确重播的程序并且可能隐藏可能由MRR记录器记录的并发。
因此,在一个实施例中,每个指令的局部和全局存储器状态两者都被精确地维持为与它们的记录相关,它们的记录包括由微操作修改的存储器状态。另外,在一个实施例中,重播机构110促进针对每个指令的这些存储器属性的维持,从而使得重播逻辑208可以正确地重播MRR记录的应用。例如,IAV的各种存储器操作可以被中断,并且对微操作的仿真与对宏指令的推测执行的组合被用于捕捉在记录期间观察到的全局可见存储器状态。
在一个实施例中,例如,使用基于块的MRR,如参照图2B图示的,一个或多个字段(例如NTB字段)可以被分配给每个数据包以便与检测逻辑202一起工作,从而精确捕捉在该块内执行的操作的数量。如将参考图4A-4B被进一步描述的,在一个实施例中,检测逻辑202检测数据包的与挂起指令有关的NTB值。设想被分配给或被选择用于捕捉操作的数量的字段不限于NTB字段并且任何数量、类型和大小的字段可以被用于这个目的。NTB值可以提供关于指令的块的当前状态的信息,诸如指令是否完成或中断或仍然在运行,如关于图4A-4B图示的。处理逻辑204可以包括各种模块,诸如计算模块、分离模块、取回和利用模块等,用于基于由检测模块202检测到的信息执行特定计算和确定。例如,如图4A中所示的,如果数据包的NTB被确定为非零,则处理逻辑204经由其分离模块可以把宏指令分离成存储器操作组件。类似地,如图4B中所示的,如果数据包的NTB值等于零,但是线程的先前块NTB值不是零,处理逻辑204经由其计算模块可以计算针对先前部分执行的指令的剩余存储器操作,等等。
执行/终止逻辑206可以执行任何数量的操作,诸如宏指令的执行(诸如当最终确定NTB等于零并且不存在违反行为时)、下一个存储器操作的执行(如果例如NTB值不等于零并且在由处理逻辑204的分离模块实施将宏指令分离成存储器操作组件时)。类似地,如果例如所执行的存储器操作等于NTB值,则执行/终止逻辑206可以终止块。
程序重播机构进一步包括维持逻辑208,用于维持各种信息以便维持与其记录精确相关的关于每个指令的局部和全局存储器状态的信息,包括如由微操作修改的存储器状态。另外,例如,在执行逻辑206终止该块并且停止线程等时,维持逻辑208可以被用于维持比如作为未来参考的主题线程的下一个块的NTB信息之类的信息,如参考图4B所图示的。虽然维持逻辑208可以被用于维持用于计算目的或作为未来参考的任何量和类型的数据,但是在一个实施例中,与重播机构110通信的本地和/或远程数据库可以被用于存储任何和所有数据。
在一个实施例中,使用通过检测逻辑202检测到、通过处理逻辑204处理并且通过维持逻辑208维持的信息,重播逻辑210执行对基于MRR/基于块的记录的正确重播。如参考图3图示和描述的,在一个实施例中,基于块、基于MRR的硬件系统可以被用于获得所记录应用的硬件MRR生成线程交错日志、表示经历原子性违反行为的指令的内部状态的信息、用于在由指令进行存储器访问时进行插入的虚拟机二进制仪表化工具、以及用于实施IAV的正确重播的重播算法,等等。例如,每个宏指令可以被处理逻辑204拦截,如由基于硬件MRR的系统记录的,并且使用MRR块日志,可以做出关于指令是否遭受原子性违反行为的确定,并且随后,对于该指令的每个操作对象,可以仿真正确的存储器状态实施。另外,在原子性违反行为的情况下,MRR系统可以识别,并且检测逻辑202可以精确检测在原子性违反行为之前在宏指令中已经成功完成了多少存储器操作。这个信息可以被处理逻辑204处理并且被维持逻辑208维持以便被重播逻辑210用于重播来自另一线程的交错块执行之前的精确相同数量的存储器操作。
在IAV的情况下,维持逻辑208可以促进例如下面的各个不变量的保存:1)在交错的块执行之前发生的任何全部或部分加载(“LD”)微操作可以在交错块的重播之前被存储到临时局部存储器;2)在交错的块执行之后发生的任何全部或部分LD微操作可以在交错块的执行之后被读取到指令的局部存储器状态中;3)在交错的块执行之前发生的任何全部或部分存储(“ST”)微操作可以在交错块的执行之前对全局存储器可见;4)在交错的块执行之后发生的任何全部或部分ST微操作可以仅在交错块执行之后对全局存储器可见。随后的图提供了前面提到的不变量的细节以及它们在经由重播逻辑210进行重播期间如何被实施。
下面反映了包含块排序信息的MRR记录日志文件,MRR记录日志文件被用于保存正确的程序回播。
线程1:日志文件 线程2:日志文件 线程3:日志文件
如上面所示的,MRR生成线程交错日志可被重播逻辑210用于经由执行/终止逻辑206实施执行,以使得记录阶段期间共享存储器访问如它们被基于硬件的MRR记录系统所记录的那样被精确重播。这些日志可以包括在初始执行内的共享存储器排序相关性。
通信/配置逻辑212可以促进与各种虚拟机、编译器、编程代码、指令、记录系统、共享资源等动态通信和保持被配置有各种虚拟机、编译器、编程代码、指令、记录系统、共享资源等的能力。通信/配置逻辑216进一步促进如下能力:与各种计算装置(例如移动计算装置(诸如各种类型的智能电话、平板计算机、膝上型计算机等)、网络(例如互联网、云计算网络等)、网站(诸如社交联网网站(例如Facebook®、LinkedIn®、Google+®等))等动态通信和保持被配置有上述各种,同时确保与改变技术、参数、协议、标准等的兼容性。
设想了任何数量和类型的组件可以被添加到程序重播机构110和/或被从程序重播机构110去除,以便促进各种实施例,包括添加、去除、和/或增强某些特征。为了简短、清楚和易于理解,并且为了避免使程序重播机构110模糊,许多标准和/或已知组件(诸如计算装置的那些)在这里没有示出或讨论。设想了如本文描述的实施例不限于任何特定技术、拓扑、系统、架构和/或标准,并且是足够动态的以便采用和适合于任何未来改变。
现在参考图2B,它图示了一个实施例中的具有专用数据包编码252、262的块数据包250、260。在一个实施例中,块数据包250包括16位字段或数据包编码,诸如NTB 252,用于精确捕捉在块内执行的存储器操作的精确数量。例如,如所图示的,关于块数据包250,从位64到位79的矩形部分指示NTB数据包编码部分252,其被用于捕捉在块终止之前执行的最后宏指令有多少存储器操作。如果这个(NTB)值是0,则宏指令被认为执行到完成。然而,如果该NTB值非零(例如大于零的数),则该数量指示被执行的存储器操作的精确数量。类似地,块数据包260包括扩展NTB 262,具有从位64到位79的16位NTB以及从位80到位95的16位NTB扩展。在一个实施例中,MRR数据包编码可以通过NTB字段252、262提供NTB信息,NTB字段252、262在一个实施例中随后可以被用于指示在对应的块终止之前执行的最后宏指令的存储器操作的数量。设想了被分配给或被选中用于捕捉操作的数量的字段不限于NTB字段并且任何数量、类型和大小的字段都可以被用于这个目的。另外,例如,出于上述目的留出的字段可以具有任何大小,诸如NTB扩展字段262可以不限于32位并且它可以是大于由标准NTB字段252占据的位的任何数量。
图3图示了根据一个实施例的用于对在计算系统处的软件程序中的指令原子性违反行为的动态和高效管理的架构300。要注意的是,为了简短、清楚和易于理解,并且为了避免使图1的程序重播机构110模糊,上面参考先前附图提到的许多组件和细节在这里不再重复,并且类似地,关于计算系统、虚拟机、程序二进制、记录系统等的许多已知信息在这里未被讨论。
在图示实施例中,基于块的硬件MRR系统312被采用计算系统处的记录系统312。例如,第一处理器核可以执行第一软件线程,而第二处理器核可以执行第二软件线程。MRR系统132可以具有存储器监视逻辑,用于监视对例如第一线程的存储器的访问并且记录与被监视的访问相关联的存储器地址,并且进一步检测涉及所记录的存储器地址与其他线程的任何数据竞争。此外,MRR系统312的块生成逻辑可以被用于生成表示第一软件线程的委托执行的块,其中每个块可以包括执行和委托的第一软件线程的多个指令和时间戳,块生成逻辑可以响应于由存储器监视逻辑检测到的数据竞争而停止当前块的生成。另外,可以采用与块生成逻辑进行通信的块缓冲器,其中块缓冲器临时存储块直到块被转移出处理器。
通过使由MRR系统312记录的任何信息在硬件记录日志文件316处登记,该信息然后可以成为共享资源304的一部分。另外,虚拟机(“VM”)318可以被用于促进二进制仪表化和存储器指令控制以使得VM 318允许本来将从初始程序二进制314被执行的指令改为被重新引导到重播系统306的程序重播机构110的重播逻辑210。在一个实施例中,重播逻辑210通过例如捕捉加载并且仿真指令来捕捉用于写入的数据以便确保任何并发违反行为被正确重播的方式来仿真初始执行的指令。
图4A图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的动态和高效管理的方法400。方法400可以由处理逻辑执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(诸如在处理装置上运行的指令)或它们的组合。在一个实施例中,方法400可以由图1的程序重播机构110执行。
方法400包括与块的最后指令有关的过程,并且开始于方框402处的挂起指令。在方框404,做出关于块数据包的NTB是否等于零的确定。如果是,则过程继续在方框406执行宏指令。如果否,则宏指令在方框408被分离成存储器操作组件,并且进一步,在方框410,下一个存储器操作被执行并且存储器操作的临时状态被保存在方框处的线程局部存储装置中。在方框412,做出关于所执行的存储器操作是否等于NTB的确定。如果否,过程返回到方框410。如果是,则在方框414,过程继续终止块并且保存针对这个线程的下一个块的用于参考的任何NTB信息并且停止该线程。
图4B图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的动态和高效管理的方法450。方法450可以由处理逻辑执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(诸如在处理装置上运行的指令)或它们的组合。在一个实施例中,方法450可以由图1的程序重播机构110执行。
方法400包括与块的第一指令有关的过程,并且开始于方框452处的挂起指令。在方框454,做出关于挂起指令的块数据包的NTB是否等于零的确定。如果否,则在方框456处做出关于该挂起指令是否块的最后指令的另一确定。如果该指令不是最后指令或者返回参考方框454,如果数据包的NTB等于零,则过程在方框470继续关于该线程的在先块是否具有等于零的NTB值的另一确定。如果是,则在方框472执行该宏指令。如果否,则过程在方框474继续计算在先部分执行的指令的剩余存储器操作,并且线程局部存储状态被从被执行的微指令中检索。随后,在方框476,与未完成的宏指令有关的所有剩余存储器操作被执行。
返回参见方框456,如果挂起指令被确定为是块的最后指令,则在方框458处,做出关于该线程的在先块是否具有等于零的NTB值的确定。如果是,则该块的最后指令在方框468被执行。如果否,过程在方框460继续从线程局部存储装置检索和利用任何在先存储器操作的状态。在方框462,过程继续执行下一个存储器操作并且把存储器操作的临时状态保存在线程局部存储装置中。在方框464,做出关于所执行的存储器操作是否等于NTB的确定。如果否,则过程返回到方框462。如果是,则在方框466该块被终止并且任何NTB信息被保存以便充当这个线程的下一个块的参考,同时线程被停止。
图5图示了计算系统500的实施例。计算系统500表示一系列计算和电子装置(有线或无线)包括例如桌面型计算系统、膝上型计算系统、蜂窝电话、个人数字助理(PDA)(包括蜂窝使能PDA)、机顶盒、智能电话、平板等。替代的计算系统可以包括更多、更少和/或不同的组件。
计算系统500包括总线505(或链路、互联或用于传送信息的另一类型的通信装置或接口)和耦合到总线505的可以处理信息的处理器510。虽然计算系统500被图示为具有单个处理器,但是电子系统500还可以包括多个处理器和/或协作处理器,诸如一个或多个中心处理器、图形处理器和物理处理器等。计算系统500还可以包括耦合到总线505并且可以存储可由处理器510执行的信息和指令的随机存取存储器(RAM)或其它动态存储装置520(称为主存储器)。主存储器520还可以被用于在由处理器510执行指令期间存储临时变量和其它中间信息。
计算系统500还可以包括耦合到总线505并且可以存储用于处理器510的静态信息和指令的只读存储器(ROM)和/或其它存储装置530。数据存储装置540可以耦合到总线505以便存储信息和指令。数据存储装置540(诸如磁盘或光盘和对应的驱动器)可以耦合到计算系统500。
计算系统500还可以经由总线505耦合到显示装置550(诸如阴极射线管(CRT)、液晶显示器(LCD)或有机发光二极管(OLED)阵列)用于向用户显示信息。用户输入装置560(包括数字字母和其它键)可以耦合到总线505以便传送信息和命令选择到处理器510。另一类型的用户输入装置560是光标控制570,诸如鼠标、跟踪球或光标方向键,用于向处理器510传送方向信息和命令选择并且控制光标在显示器550上移动。计算系统500的摄像机和麦克风阵列590可以耦合到总线505以便观察手势、记录音频和视频并且接收和传输视觉和音频命令。
计算系统500还可以包括(一个或多个)网络接口580用于提供对网络(诸如局域网(LAN)、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云网络、移动网络(例如第三代(3G)等)、企业网、互联网等)的访问。(一个或多个)网络接口580可以包括例如具有天线585的无线网络接口,天线585可以表示一个或多个天线。(一个或多个)网络接口580还可以包括例如有线网络接口,用于经由网络电缆587与远程装置通信,网络电缆587例如可以是以太网电缆、同轴电缆、光纤电缆、串行电缆、或并行电缆。
(一个或多个)网络接口580可以提供对LAN的访问,例如通过符合IEEE 802.11b和/或IEEE 802.11g标准,和/或无线网络接口可以提供对个域网的访问,例如通过符合蓝牙标准。也可以支持其它无线网络接口和/或协议,包括标准的先前和随后版本。
附加或替代经由无线LAN标准的通信,(一个或多个)网络接口580可以使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其它类型的无线通信协议来提供无线通信。
(一个或多个)网络接口580可以包括一个或多个通信接口(诸如调制解调器、网络接口卡或其它公知的接口装置,诸如用于耦合到以太网、令牌环的那些)或用于提供通信链路以支持例如LAN或WAN的目的的其它类型的物理有线或无线附件。以这个方式,计算机系统还可以经由常规网络基础设施(包括例如企业网或互联网)耦合到多个外围装置、客户端、控制表面、控制台、或服务器。
要意识到的是,对于某些实施方式,比上面描述的示例更少或更多装备的系统可以是优选的。因此,计算系统500的配置可以取决于多个因素(诸如价格约束、性能要求、技术改进或其它情况)而从实施方式到实施方式发生变化。电子装置或计算机系统500的示例可以包括但不限于移动装置、个人数字助理、移动计算装置、智能电话、蜂窝电话、手机、单向寻呼机、双向寻呼机、消息发送装置、计算机、个人计算机(PC)、桌面型计算机、膝上型计算机、笔记本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器农场、web服务器、网络服务器、互联网服务器、工作站、微型计算机、大型计算机、超级计算机、网络设施、web设施、分布式计算系统、多处理器系统、基于处理器的系统、消费电子装置、可编程消费电子装置、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、网桥、交换机、机器或它们的组合。
各个实施例可以被实施为下列各组中的任何一个或组合:使用母版(parentboard)互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器装置存储并且有微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可以包括例如软件或硬件和/或软件和硬件的组合。
各个实施例可以被例如提供作为计算机程序产品,其可以包括一个或多个机器可读介质,具有存储在其上的机器可执行指令,当该指令由一个或多个机器(诸如计算机、计算机网络或其它电子装置)执行时可以导致一个或多个机器根据本文描述的实施例执行操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(紧凑盘-只读存储器)和磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光学卡、闪存或适合于存储机器可执行指令的其它类型的介质/机器可读介质。
此外,各个实施例可以作为计算机程序产品被下载,其中该程序可以通过体现在载波或其它传播介质中和/或由载波或其它传播介质调制的一个或多个数据信号经由通信链路(例如调制解调器和/或网络连接)从远程计算机(例如服务器)被转移到请求计算机(例如客户端)。
提及的“一个实施例”、“实施例”、“示例实施例”、“各个实施例”等指示这样描述的(一个或多个)实施例可以包括特定特征、结构或特性,但不是每个实施例一定包括该特定特征、实施例或特性。另外,一些实施例可以具有针对其他实施例描述的特征中的一些或所有或没有这些特征。
在下面的描述和权利要求中,术语“耦合”连同其变体可以被一起使用。“耦合”被用于指示两个或更多个元件协同操作或彼此交互,但是它们可以或可以不在它们之间具有介入的物理或电气部件。
如在权利要求中使用的,除非另外规定,否则用以描述共同元件的序数形容词“第一”、“第二”、“第三”等的使用仅指示所指代的相似元件的不同实例,并且不意图暗示如此描述的这些元件必须按照给定的时间、空间、等级或任何其它方式的顺序。
下面的条款和/或示例涉及进一步的实施例或示例。示例中的细节可以在一个或多个实施例中的任何地方使用。不同实施例或示例的各个特征可以与所包括的一些特征或不包括除外的其它特征以各种方式组合以适合各种不同的应用。一些实施例涉及一种方法,包括:在重播逻辑处从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
实施例或示例包括上面方法中的任一个,所述方法还包括在如由记录系统所记录的所述记录中检测第一和第二宏指令的所述交错。
实施例或示例包括上面方法中的任一个,所述方法还包括处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
实施例或示例包括上面方法中的任一个,所述方法还包括维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑。
实施例或示例包括上面方法中的任一个,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令或第二宏指令的所述局部存储器状态和由第一和第二软件线程观察到的全局存储器状态,其中所述指令原子性违反行为由第一宏指令或第二宏指令中的一个或多个微指令的运行中的拦截引起。
实施例或示例包括上面方法中的任一个,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程和第二软件线程。
实施例或示例包括上面方法中的任一个,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括16位NTB编码或32位扩展NTB编码。
实施例或示例包括上面方法中的任一个,其中所述计算系统包括以下各项中的一个或多个:桌面型计算机、服务器计算机、机顶盒、移动计算机,移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理(PDA)、平板计算机、电子阅读器和膝上型计算机。
另一实施例或示例包括一种设备,用于执行上面提到方法中的任一个。
在另一实施例或示例中,一种设备包括用于执行上面提到方法中的任一个的装置。
在再另一实施例或示例中,至少一种机器可读介质包括多个指令,响应于所述指令在计算装置上被执行,使得计算装置执行根据上面提到的方法中的任一个的方法。
在再另一实施例或示例中,至少一种非临时性或有形机器可读存储介质包括多个指令,响应于所述指令在计算装置上被执行,使得计算装置执行根据上面提到的方法中的任一个的方法。
在再另一实施例或示例中,计算装置被布置为执行根据上面提到方法中任一项的方法。
一些实施例涉及一种设备,包括:重播逻辑,用于从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及重播逻辑将进一步精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
实施例或示例包括上面设备中的任一个,所述设备还包括检测逻辑,用于在如由记录系统所记录的所述记录中检测第一和第二宏指令的交错。
实施例或示例包括上面设备中的任一个,所述设备还包括处理逻辑,用于处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
实施例或示例包括上面设备中的任一个,所述设备还包括维持逻辑,用于维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑。
实施例或示例包括上面设备中的任一个,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令的所述局部存储器状态和如由第一和第二软件线程观察到的全局存储器状态,其中所述原子性违反行为由第一宏指令或第二宏指令的一个或多个微指令的运行中的拦截引起。
实施例或示例包括上面设备中的任一个,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
实施例或示例包括上面设备中的任一个,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括16位NTB编码或32位扩展NTB编码。
实施例或示例包括上面设备中的任一个,其中所述计算系统包括以下各项中的一个或多个:桌面型计算机、服务器计算机、机顶盒、移动计算机,移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理(PDA)、平板计算机、电子阅读器和膝上型计算机。
一些实施例涉及一种系统,包括:计算装置,具有用于存储指令的存储器和用于执行所述指令的处理装置,所述计算装置还具有执行下列操作的机构:在重播逻辑处从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
实施例或示例包括上面系统中的任一个,其中所述机构还用于在如由记录系统所记录的所述记录中检测第一和第二宏指令的所述交错。
实施例或示例包括上面系统中的任一个,其中所述机构还用于处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
实施例或示例包括上面系统中的任一个,所述系统还包括维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑。
实施例或示例包括上面系统中的任一个,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令或第二宏指令的所述局部存储器状态和由第一和第二软件线程观察到的全局存储器状态,其中所述指令原子性违反行为由第一宏指令或第二宏指令的一个或多个微指令的运行中的拦截引起。
实施例或示例包括上面系统中的任一个,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
实施例或示例包括上面系统中的任一个,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括16位NTB编码或32位扩展NTB编码。
实施例或示例包括上面系统中的任一个,其中所述计算系统包括以下各项中的一个或多个:桌面型计算机、服务器计算机、机顶盒、移动计算机,移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理(PDA)、平板计算机、电子阅读器和膝上型计算机。
实施例或示例包括上面系统中的任一个,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
实施例或示例包括上面系统中的任一个,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括标准NTB和扩展NTB,其中标准NTB包括16位NTB编码,并且其中扩展NTB包括大于16位NTB编码的NTB编码。
实施例或示例包括上面系统中的任一个,其中所述计算系统包括以下各项中的一个或多个:桌面型计算机、服务器计算机、机顶盒、移动计算机,移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理(PDA)、平板计算机、电子阅读器和膝上型计算机。
附图和前面的描述给出了实施例的示例。本领域技术人员将意识到,所描述元件中的一个或多个可很好地组合成单个功能元件。替代地,某些元件可被分成多个功能元件。来自一个实施例的元件可以被添加到另一实施例。例如,本文描述的过程的次序可以被改变并且不限于本文描述的方式。此外,任何流程图的动作不必按照示出的次序实施;所有动作也不一定必须被执行。而且,不依赖于其它动作的那些动作可以与其它动作并行执行。实施例的范围绝不由这些特定示例限定。许多变化是可能的,不论是否在说明书中明确给出,诸如结构、尺寸或材料使用的差异。实施例的范围至少与由所附权利要求给出的一样宽。

Claims (25)

1.一种用于促进对指令违反行为的管理的设备,包括:
重播逻辑,用于从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及
重播逻辑将进一步精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
2.根据权利要求1所述的设备,还包括检测逻辑,用于在如由记录系统所记录的所述记录中检测第一和第二宏指令的交错。
3.根据权利要求1或2的设备,还包括处理逻辑,用于处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
4.根据权利要求1所述的设备,还包括维持逻辑,用于维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑。
5.根据权利要求1或4的设备,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令或第二宏指令的所述局部存储器状态和如由第一和第二软件线程观察到的全局存储器状态,其中所述指令原子性违反行为由第一宏指令与第二宏指令的一个或多个微指令中的交错引起。
6.根据权利要求5的设备,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
7.根据权利要求6的设备,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括标准NTB和扩展NTB,其中标准NTB包括16位NTB编码,并且其中扩展NTB包括大于16位NTB编码的NTB编码。
8.根据权利要求1的设备,其中所述计算系统包括以下各项中的一个或多个:桌面型计算机、服务器计算机、机顶盒、移动计算机,所述移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理(PDA)、平板计算机、电子阅读器和膝上型计算机。
9.一种用于促进对指令违反行为的管理的方法,包括:
在重播逻辑处从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及
精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
10.根据权利要求9所述的方法,还包括在如由记录系统所记录的所述记录中检测第一和第二宏指令的所述交错。
11.根据权利要求9的方法,还包括处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
12.根据权利要求9所述的方法,还包括维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令或第二宏指令的所述局部存储器状态和如由第一和第二软件线程观察到的全局存储器状态,其中所述指令原子性违反行为由第一宏指令与第二宏指令的一个或多个微指令之间的交错引起。
13.根据权利要求12的方法,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
14.根据权利要求13的方法,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括标准NTB和扩展NTB,其中标准NTB包括16位NTB编码,并且其中扩展NTB包括大于16位NTB编码的NTB编码。
15.一种用于促进对指令违反行为的管理的系统,包括:
计算装置,具有用于存储指令的存储器和用于执行所述指令的处理装置,所述计算装置还具有执行下列操作的机构:
在重播逻辑处从记录系统接收运行第一宏指令的第一软件线程和运行第二宏指令的第二软件线程的记录,其中第一软件线程和第二软件线程分别由计算装置处的处理器的第一核和第二核执行,其中所述记录系统用于记录第一和第二宏指令之间的交错;以及
精确地如所述交错发生的那样正确重播第一和第二宏指令的所述交错的记录,其中正确重播包括重播第一和第二宏指令的局部存储器状态和第一和第二软件线程的全局存储器状态。
16.根据权利要求15所述的系统,其中所述机构还用于在由记录系统所记录的所述记录中检测第一和第二宏指令的所述交错。
17.根据权利要求15或16的系统,其中所述机构还用于处理所述交错以便确定与在所述交错中涉及并且导致在局部存储器状态或全局存储器状态中发生的指令原子性违反行为的第一和第二宏指令的一个或多个微指令相关的精确信息。
18.根据权利要求15所述的系统,还包括维持所述信息并且允许所述重播逻辑正确重播所述交错的所述记录,其中所述记录由记录系统产生并且经由硬件记录日志文件、程序二进制和虚拟机(VM)中的一个或多个被提供给所述重播逻辑。
19.根据权利要求15或16的系统,其中正确重播具有所述交错的所述记录包括在精确阶段精确再现每个微指令,所述再现包括实施经历指令原子性违反行为的第一宏指令或第二宏指令的所述局部存储器状态和如由第一和第二软件线程观察到的全局存储器状态,其中所述指令原子性违反行为由第一宏指令与第二宏指令的一个或多个微指令之间的交错引起。
20.根据权利要求19的系统,其中所述记录系统包括使用块的基于硬件的存储器竞争记录(MRR)系统,其中块指代来自单个软件线程的多个顺序指令的逻辑分组,单个软件线程包括第一软件线程或第二软件线程。
21.根据权利要求20的系统,其中所述块包括程序包块,程序包块包括用于提供与第一宏指令或第二宏指令的状态相关的信息的编码,其中所述编码包括标准NTB和扩展NTB,其中标准NTB包括16位NTB编码,并且其中扩展NTB包括大于16位NTB编码的NTB编码。
22.一种设备,被配置为执行根据权利要求9至14中任一项的方法。
23.一种设备,包括用于执行根据权利要求9至14中任一项的方法的装置。
24.至少一种机器可读介质,包括多个指令,响应于所述指令在计算装置上被执行,使得计算装置执行根据权利要求9至14中任一项的方法。
25.一种通信装置,被布置为执行根据权利要求9至14中任一项的方法。
CN201380073000.8A 2013-03-15 2013-03-15 用于促进对指令违反行为的管理的设备和方法 Active CN105009089B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/032640 WO2014143059A1 (en) 2013-03-15 2013-03-15 Mechanism for facilitating dynamic and efficient management of instruction atomicity volations in software programs at computing systems

Publications (2)

Publication Number Publication Date
CN105009089A true CN105009089A (zh) 2015-10-28
CN105009089B CN105009089B (zh) 2018-12-25

Family

ID=51534186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380073000.8A Active CN105009089B (zh) 2013-03-15 2013-03-15 用于促进对指令违反行为的管理的设备和方法

Country Status (4)

Country Link
US (2) US9501340B2 (zh)
EP (1) EP2972878B1 (zh)
CN (1) CN105009089B (zh)
WO (1) WO2014143059A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153589A (zh) * 2016-12-06 2018-06-12 国际商业机器公司 用于多线程的处理布置中的数据处理的方法和系统
CN111079914A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、系统及相关产品

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697040B2 (en) * 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs
GB2552519A (en) * 2016-07-27 2018-01-31 Undo Ltd Debugging Systems
US10558464B2 (en) 2017-02-09 2020-02-11 International Business Machines Corporation Infinite processor thread balancing
US10860411B2 (en) * 2018-03-28 2020-12-08 Futurewei Technologies, Inc. Automatically detecting time-of-fault bugs in cloud systems
US10599552B2 (en) 2018-04-25 2020-03-24 Futurewei Technologies, Inc. Model checker for finding distributed concurrency bugs
US11025732B2 (en) 2019-06-17 2021-06-01 Vmware, Inc. Method and apparatus to perform user authentication during cloud provider sessions

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US6851075B2 (en) * 2002-01-04 2005-02-01 International Business Machines Corporation Race detection for parallel software
US20090077540A1 (en) * 2007-03-07 2009-03-19 Yuanyuan Zhou Atomicity Violation Detection Using Access Interleaving Invariants
US20090235262A1 (en) * 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
US20110022893A1 (en) * 2009-07-22 2011-01-27 Microsoft Corporation Detecting data race and atomicity violation via typestate-guided static analysis
WO2012087402A1 (en) * 2010-12-23 2012-06-28 Intel Corporation Method and system for detecting abnormal interleavings in concurrent programs

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6817009B2 (en) * 2000-11-30 2004-11-09 Hewlett-Packard Development Company, L.P. Method and apparatus for verifying data local to a single thread
US7174554B2 (en) * 2002-12-20 2007-02-06 Microsoft Corporation Tools and methods for discovering race condition errors
US7818723B2 (en) * 2004-09-07 2010-10-19 Sap Ag Antipattern detection processing for a multithreaded application
US7620938B2 (en) * 2005-10-31 2009-11-17 Microsoft Corporation Compressed program recording
US7752605B2 (en) * 2006-04-12 2010-07-06 Microsoft Corporation Precise data-race detection using locksets
US8185874B2 (en) * 2006-11-07 2012-05-22 Microsoft Corporation Automatic and systematic detection of race conditions and atomicity violations
US8185875B2 (en) * 2007-01-24 2012-05-22 Nec Laboratories America, Inc. Fast and accurate static data-race detection for concurrent programs
US8527976B2 (en) * 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
US8032706B2 (en) * 2008-08-05 2011-10-04 Intel Corporation Method and apparatus for detecting a data access violation
US8539450B2 (en) * 2009-03-11 2013-09-17 Nec Laboratories America, Inc. Fast and accurate data race detection for concurrent programs with asynchronous calls
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US8468501B2 (en) * 2010-04-21 2013-06-18 International Business Machines Corporation Partial recording of a computer program execution for replay
US20120011491A1 (en) * 2010-07-06 2012-01-12 Adi Eldar Efficient recording and replaying of the execution path of a computer program
US9038048B2 (en) * 2010-07-22 2015-05-19 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for protecting applications from races
US8813038B2 (en) * 2011-02-09 2014-08-19 Microsoft Corporation Data race detection
US9063766B2 (en) * 2011-03-16 2015-06-23 Vmware, Inc. System and method of manipulating virtual machine recordings for high-level execution and replay
US9135082B1 (en) * 2011-05-20 2015-09-15 Google Inc. Techniques and systems for data race detection
US9081628B2 (en) * 2011-05-27 2015-07-14 Intel Corporation Detecting potential access errors in a multi-threaded application
WO2013147898A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Tracing mechanism for recording shared memory interleavings on multi-core processors
US20130283101A1 (en) * 2012-04-18 2013-10-24 The Regents Of The University Of Michigan Trace-Driven Verification of Multithreaded Programs Using SMT-Based Analysis
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
US8909992B2 (en) * 2012-11-27 2014-12-09 International Business Machines Corporation Dynamic concolic execution of an application
US9128781B2 (en) * 2012-12-28 2015-09-08 Intel Corporation Processor with memory race recorder to record thread interleavings in multi-threaded software
US9129058B2 (en) * 2013-02-19 2015-09-08 Microsoft Technology Licensing, Llc Application monitoring through continuous record and replay
US9842009B2 (en) * 2013-05-13 2017-12-12 Nxp Usa, Inc. Method and device for detecting a race condition and a computer program product
US9990183B2 (en) * 2015-12-28 2018-06-05 Wipro Limited System and method for validating software development requirements
US10223268B2 (en) * 2016-02-23 2019-03-05 International Business Systems Corporation Transactional memory system including cache versioning architecture to implement nested transactions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US6851075B2 (en) * 2002-01-04 2005-02-01 International Business Machines Corporation Race detection for parallel software
US20090077540A1 (en) * 2007-03-07 2009-03-19 Yuanyuan Zhou Atomicity Violation Detection Using Access Interleaving Invariants
US20090235262A1 (en) * 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
US20110022893A1 (en) * 2009-07-22 2011-01-27 Microsoft Corporation Detecting data race and atomicity violation via typestate-guided static analysis
WO2012087402A1 (en) * 2010-12-23 2012-06-28 Intel Corporation Method and system for detecting abnormal interleavings in concurrent programs

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AHMAD HEYDARI 等: "A Survey in Deterministic Replaying Approaches in Multiprocessors", 《INTERNATIONAL JOURNAL OF ELECTRICAL & COMPUTER SCIENCES》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153589A (zh) * 2016-12-06 2018-06-12 国际商业机器公司 用于多线程的处理布置中的数据处理的方法和系统
CN111079914A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079914B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品

Also Published As

Publication number Publication date
US9501340B2 (en) 2016-11-22
EP2972878A1 (en) 2016-01-20
EP2972878B1 (en) 2018-09-26
CN105009089B (zh) 2018-12-25
US20140281705A1 (en) 2014-09-18
US20170039070A1 (en) 2017-02-09
EP2972878A4 (en) 2016-11-09
WO2014143059A1 (en) 2014-09-18
US10394561B2 (en) 2019-08-27

Similar Documents

Publication Publication Date Title
CN105009089A (zh) 用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构
US10402253B2 (en) Methods and systems to detect and classify changes in a distributed computing system
US10430324B2 (en) System and method for automated intelligent mobile application testing
Saha et al. Apache tez: A unifying framework for modeling and building data processing applications
CN109634561B (zh) 一种在线可视化编程方法及装置
US20160364273A1 (en) Data Processing Apparatus and Method for Processing Serial Tasks
US20190258822A1 (en) Efficient application feedback collection
CN104137076A (zh) 用于图形处理单元的应用的验证
CN110493342B (zh) 文件传输方法、装置、电子设备及可读存储介质
Chinnaiah et al. Fault tolerant software systems using software configurations for cloud computing
Salihoglu et al. Graft: A debugging tool for apache giraph
Ganelin et al. Spark: Big data cluster computing in production
Tannir Optimizing Hadoop for MapReduce
CN111611479A (zh) 用于网络资源推荐的数据处理方法及相关装置
CN103970512A (zh) 多核处理器及其并行重放方法
US10061566B2 (en) Methods and systems to identify log write instructions of a source code as sources of event messages
CN107908552A (zh) 一种基于链接的测试方法、装置及设备
US9697018B2 (en) Synthesizing inputs to preserve functionality
CN102426535A (zh) 动态进程虚拟化
Mandrioli et al. Dynamic models for the formal verification of big data applications via stochastic model checking
Pandey Kafka Streams-Real-Time Stream Processing
Siewert Real-time embedded components and systems
US11847046B1 (en) Application functionality testing, resiliency testing, chaos testing, and performance testing in a single platform
US20210397539A1 (en) Deployment of variants built from code
Noor et al. Benchmarking erasure coding schemes in openStack swift

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