CN107003895B - 事务内的指令采样 - Google Patents

事务内的指令采样 Download PDF

Info

Publication number
CN107003895B
CN107003895B CN201580064594.5A CN201580064594A CN107003895B CN 107003895 B CN107003895 B CN 107003895B CN 201580064594 A CN201580064594 A CN 201580064594A CN 107003895 B CN107003895 B CN 107003895B
Authority
CN
China
Prior art keywords
transaction
instruction
diagnostic data
sampled
data
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
Application number
CN201580064594.5A
Other languages
English (en)
Other versions
CN107003895A (zh
Inventor
迈克尔·约翰·威廉姆斯
约翰·迈克尔·霍利
斯蒂芬·迪斯特尔霍斯特
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.)
ARM Ltd
Original Assignee
ARM Ltd
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
Priority claimed from GB1423041.1A external-priority patent/GB2533603A/en
Priority claimed from GB1423042.9A external-priority patent/GB2533604B/en
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN107003895A publication Critical patent/CN107003895A/zh
Application granted granted Critical
Publication of CN107003895B publication Critical patent/CN107003895B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Abstract

数据处理装置(4)包括用于执行形成事务的一部分的程序指令的处理电路(6),该事务执行以生成推测性更新并且如果事务没有冲突地完成则提交推测性更新。指令采样电路(44)捕获与经采样的指令的执行有关的指令诊断数据(IDD)。事务跟踪电路(46)检测经采样的指令是否在事务内,并且如果如此,则跟踪与事务相关联的推测性更新是否被提交并捕获指示推测性更新是否被提交的事务诊断数据(TDD)。因此,与经采样的指令有关的指令诊断数据和与包含经采样的指令的事务的结局有关的事务诊断数据二者被捕获。

Description

事务内的指令采样
技术领域
本发明涉及数据处理系统领域。
背景技术
已知提供包含指令采样机制的数据处理系统,由此当满足触发条件时,涉及数据处理系统的状态和程序指令的执行的数据被采样。这些机制通常允许对系统的行为进行统计剖析以提供在对系统进行调试和/或性能调整中可能有用的信息。
发明内容
在本公开的至少一些示例实施例中,提供了用于处理数据的装置,所述装置包括:
处理电路,用于执行包括事务的程序指令,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
指令采样电路,用于捕获与由所述处理电路对经采样的指令的执行有关的指令诊断数据;以及
事务跟踪电路,用于:
检测所述经采样的指令是否在所述事务内;并且
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
在本公开的至少一些示例实施例中,提供了用于处理数据的装置,所述装置包括:
用于执行包括事务的程序指令的处理装置,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
用于捕获与由所述处理电路对经采样的指令的执行有关的指令诊断数据的指令采样装置;以及
用于以下操作的事务跟踪装置:
检测所述经采样的指令是否在所述事务内;并且
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
在本公开的至少一些示例实施例中,提供了一种处理数据的方法,所述方法包括:
执行包括事务的程序指令,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
捕获与由所述处理电路对经采样的指令的执行有关的指令诊断数据;
检测所述经采样的指令是否在所述事务内;以及
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
附图说明
现在将仅通过示例的方式参照附图来描述示例实施例:
图1示意性地示出了包括事务的程序指令流;
图2示意性地示出了用于执行程序指令的数据处理系统;
图3A和3B是示意性地示出事务执行的流程图;
图4示意性地示出了调试和诊断电路;
图5示意性地示出了生成和输出诊断数据和事务诊断数据的第一示例;
图6是示意性地示出了根据图5对指令诊断数据和事务诊断数据的输出的控制的流程图;
图7示出了生成和输出诊断数据和事务诊断数据的第二示例;
图8是示意性地示出根据图7对指令诊断数据和事务诊断数据的输出的控制的流程图;
图9示出了生成和输出诊断数据和事务诊断数据的第三示例;
图10是示意性地示出根据图9对指令诊断数据和事务诊断数据的输出的控制的流程图;
图11示出了生成和输出诊断数据和事务诊断数据的第四示例;
图12是示意性地示出根据图11对指令诊断数据和事务诊断数据的输出的控制的流程图;以及
图13是示意性地示出当事务完结时对先前采样事务数据的设置的流程图。
具体实施方式
在支持事务的处理系统(例如,包含事务存储器的系统)内,多个程序指令被执行以生成对状态数据(例如,架构状态数据)的推测性更新,并且如果所涉及的事务没有冲突地完成则操作以准许(提交)那些推测性更新。作为示例,事务可包括对存储器位置的加载或存储操作,并且如果那些加载和存储操作完成而没有来自外面事务的访问尝试做出对相同存储器位置的冲突(或潜在的冲突)访问,则那些事务的结果被提交并更新架构系统状态。如果存在冲突,则事务中止并保存的以前的状态数据用于将系统的状态“回滚”到事务被执行之前的点。然后事务可在随后的某一时间被重复以查看其是否没有出现冲突地完成、可使得异常发生、可以不同的方式(例如,使用锁定机制)执行或根据所涉及的系统的具体形式以其它方式进行处理。
可导致事务中止的其它类型的冲突包括用于管理事务的资源(例如,临时存储设备,用于嵌套事务的深度计数器等)的耗尽,或者诸如中断事务的中断、数据中止(MMU故障)等等异常。
当执行指令采样时,捕获的指令诊断数据与由处理电路对经采样的指令的执行有关。然而,在经采样的指令在事务内的情况下,与此经采样的指令相关联的重要诊断特性例如是其事务是否被部分完成以使得它的推测性更新被提交。因此,可提供与指令采样电路联接的事务跟踪电路。事务跟踪电路用于检测经采样的指令是否在事务内,然后如果是这种情况,则跟踪与此事务相关联的推测性更新是否被提交并捕获指示那些推测性更新是否被提交的事务诊断数据。
在一些实施例中,事务跟踪电路还可负责在事务的处理完结之后将事务诊断数据写入存储器。在其它实施例中,事务跟踪电路可用于在事务的处理完结之后将事务诊断数据写入跟踪数据流。在一些实施例中,指令诊断数据可与事务诊断数据一起由采样电路写入存储器或跟踪数据流。当指令诊断数据和事务诊断数据一起被写入存储器或跟踪数据流时,这些可被布置以形成固定大小的诊断数据记录的一部分。这样的固定大小的诊断数据记录可以这样的诊断数据的写入对系统的行为具有减小的影响并因此对观察到的诊断特性的有效性具有减小的影响的方式在存储器系统内被方便地管理。
在一些示例实施例中,事务跟踪电路和采样电路可被形成为:响应于对另一经采样的指令(例如,事务内跟随原始采样的指令之后的一个指令)的另一指令诊断数据的捕获来把原始采样的指令的指令诊断数据与指示事务尚未完结的未完成事务数据一起写入。因此,可缓冲指令诊断数据直到遇到下一个经采样的指令,此时如果原始采样的指令的关联事务尚未完成,则输出原始指令诊断数据和未完成事务数据,由此减轻缓冲区以存储另一经采样的指令的指令诊断数据。指令诊断数据和未完成事务数据可作为前面提到的固定大小的诊断数据记录的一部分被一起写入。其它实施例可使用可变大小的诊断数据记录来适应它们的数据特性。
在其它示例实施例中,事务跟踪电路和采样电路可被形成为响应于指令诊断数据的捕获而将指令诊断数据与指示采样指令在事务内的事务内数据一起写入。因此,指令诊断数据与事务内数据一起的写入不需要等到事务完结。指令诊断数据和事务内数据可作为可变大小的诊断数据记录的一部分被写入。对于这样的系统内的事务诊断数据也是如此,因为事务诊断数据可与指令诊断数据分离地被写入,并且可具有比指令诊断数据小得多的大小,因此将会在具有固定大小(该固定大小具有足够容纳与指令诊断数据相关联的显著更大的数据量)的诊断数据记录内低效地表示。
在其它示例实施例中,事务跟踪电路和采样电路可被形成为响应于另一经采样的指令(例如,跟随原始采样的指令之后的一个指令)的另一指令诊断数据的捕获来将另一指令诊断数据与指示包括先前采样的指令(例如,紧接在前的经采样的指令)的事务的状态的先前采样事务数据一起写入。因此,另一指令诊断数据伴随有指示包括先前采样的指令的事务的状态的数据(当先前采样的指令在事务内时)。在这样的实施例中,另一指令诊断数据和先前采样事务数据可形成前面提到的固定大小的诊断数据记录的一部分。
在一些实施例中,指令诊断数据和事务诊断数据可被写入存储器。存储器可以是专用存储器,或者在其它实施例中可以是也由处理电路执行的程序指令内的存储器访问指令使用的存储器。
应当理解,事务诊断数据可采取各种不同的形式。在一个示例形式中,事务诊断数据可指示以下各项中的一项:事务完成从而推测性更新被提交,或者事务中止从而推测性更新未被提交。
可控制采样电路以根据各种不同的触发条件执行指令诊断数据捕获。这样的触发条件的示例包括以下各项中的一项或多项:固定间隔的到期、随机间隔的到期、固定间隔加上随机间隔的和的到期、或者响应于外部刺激(例如,外部信号输入处的电压)。
应当理解,指令诊断数据可捕获与经采样的指令相关联的许多不同特性。这些特性可包括以下各项中的一项或多项:经采样的指令的程序计数器值、与经采样的指令相关联的异常级别、与经采样的指令相关联的虚拟机标识符(VMID)、与经采样的指令相关联的上下文标识符(ASID)、当执行经采样的指令时使用的转换表基地址值(TTB)、与经采样的指令相关联的(一个或多个)安全状态值、经采样的指令的类型(例如,操作码)、经采样的指令是否触发缓存访问、经采样的指令是否触发缓存未命中、与经采样的指令的至少一部分的执行相关联的周期计数数据、和/或与指令相关联的架构状态的改变(例如,根据无序处理)是否被提交。
图1示意性地示出了可由处理电路执行的程序指令2。应当理解,此程序指令流可以是多线程系统内的一个执行线程。可替换地,程序指令流可以是执行的程序指令的唯一线程。在图1所示的程序指令流内,包括事务开始指令TStart和事务结束指令TEnd。这些指令分别指示包括指令IA,IB,IC和ID的事务的边界。由TStart和Tend划界的这些指令由处理电路执行以生成对状态数据的推测性更新。这些推测性更新被存储在系统的存储器或其它存储资源内(例如,影子寄存器、允许回滚的专用存储器等),直到确定事务已经完成而没有冲突,此时推测性更新被提交至系统(例如,更新系统的架构状态,而存储的回滚数据然后被丢弃来释放相关的存储器资源以支持另一事务)。
图2示意性地示出了包括处理器核心6和存储器系统8的数据处理系统4。存储器系统8可以是包括一级或多级缓存存储器以及主存储器的层级系统。层级存储器系统8可被与其它处理器或与在同一处理器上运行的其它线程共享。处理器核心6提供用于执行从存储器8取出的程序指令的处理电路。程序指令的执行的结果可被写回存储器8。加载和存储程序指令可用于从存储器8读取数据和写入数据到存储器8。处理器核心6包括寄存器组10、乘法器12、移位器14、和加法器16,它们一起执行处理操作以随着程序指令到达指令流水线20内的译码级而在由指令译码器18生成的控制信号的控制下执行程序指令。还与处理器核心6相关联的是调试和诊断电路22,其用于执行例如指令采样以捕获指令诊断数据以及对包括经采样的数据的事务的跟踪以便生成事务诊断数据。当操作支持两个潜在输出机制的实施例时,根据实施例和/或配置,此指令诊断数据和事务诊断数据可被写出至存储器8或者可输出到跟踪数据流中。
图3A是示意性地示出包括多个程序指令的事务的执行的流程图。在步骤24处,处理等待直到执行事务开始指令(TStart)。然后,步骤26分配要使用的事务资源,例如在事务完成前存储对状态数据的推测性更新的资源。步骤28选择事务内的第一指令。步骤30确定此时是否检测到任何冲突。如果检测到任何此类冲突,则步骤32用于丢弃任何推测性更新,跳转到修复例程(或以其它方式向软件指示事务已失败)并返回在步骤26中分配的事务资源以供用于其它事务。
如果在步骤30没有检测到冲突,则步骤34用于执行所选择的指令。然后,步骤36将在步骤34执行的结果作为对状态数据的推测性更新存储在所分配的事务资源内。步骤38选择下一指令。步骤40确定所选择的指令是否是事务结束指令(TEnd)。如果指令不是事务结束指令,则处理返回到步骤30。如果步骤40处的确定是所选择的指令是事务结束指令,则步骤42用于提交存储在所分配的事务资源内的推测性更新,以便更新系统的架构状态。
图3B是示意性地示出了图3A被修改为支持扁平事务嵌套的事务执行的流程图。在步骤26,当分配事务资源时,事务嵌套深度计数器被设置为“1”。在步骤38处选择下一指令之后,步骤35确定所选择的指令是否是事务开始指令。如果选择的指令是事务开始指令,则步骤37用于递增深度计数器,并且处理返回到步骤30。
如果步骤35处的确定是所选择的指令不是事务开始指令,则步骤40确定所选择的指令是否是事务结束指令。如果选择的指令不是事务结束指令,则处理返回到步骤30。如果所选择的指令是事务结束指令,则步骤39递减深度计数器,并且步骤41确定深度计数器是否具有等于零的值。如果深度计数器不等于0,则处理再次返回到步骤30。如果深度计数器等于0,则处理进行到如图3A中的步骤42。
图3B的动作是响应于步骤24处开始的事务来跟踪扁平嵌套事务深度并当相同的事务结束时提交存储在所分配的事务资源中的推测性更新。中止用于中止所有嵌套事务。事务的事务诊断数据(TDD)输出还可包括它在这样的嵌套事务的布置内的“深度”的指示。其它示例性实施例可支持事务的真正嵌套也是可能的。
图4更详细地示意性地示出了调试和诊断电路22。此调试和诊断电路22包括指令采样电路44和事务跟踪电路46。指令采样电路接收采样触发输入,其用于控制指令采样控制电路44以捕获与采样指令相关联的诊断数据。例如,采样触发可与固定间隔的到期、随机间隔的到期、固定间隔和随机间隔的和的到期、或者与某一外部刺激(例如,接收到的外部输入信号)相关联。指令采样电路44具有到它的输入,该输入指定可由指令诊断数据(IDD)表示的采样指令参数。这些参数包括例如程序计数器值、异常级别、虚拟机标识符(VMID)、上下文标识符(ASID)、与虚拟地址环境相关联的转换表基地址值(TTB)、(一个或多个)安全状态值(例如,系统是在安全状态还是非安全状态中操作)、经采样的指令的操作码(类型)、经采样的指令是否触发缓存访问、经采样的指令是否触发缓存未命中、与经采样的指令的一个或多个部分相关联的周期计数数据、和/或经采样的指令是否提交它的架构状态。应当理解,可结合其它特性组合以形成指令诊断数据(IDD)。
事务跟踪电路46响应于正在执行的程序指令内的事务开始或事务结束指令的执行,这些指令标记了事务的边界。事务跟踪电路还可跟踪嵌套事务中的事务深度,如图3B所述。此外,事务跟踪电路46针对标识的给定事务确定该事务是否在没有冲突的情况下完成并从而提交它的推测性更新给系统状态。可替换地,如果发生冲突,则事务可中止,并且推测性更新被丢失而未被提交给系统状态。事务跟踪电路46用于检测经采样的指令是否在事务内,即是否在事务开始指令和事务结束指令之间。如果是这种情况,则事务跟踪电路46跟踪与该事务相关联的推测性更新是否被提交并且捕获指示这些推测性更新是否被提交的事务诊断数据(TDD)(以及如果适当的话,经采样的指令的嵌套事务深度指示符)。然后,此事务诊断数据(TDD)与指令诊断数据一起被输出。
记录形成电路48用于将指令诊断数据(IDD)和事务诊断数据(TDD)组合成记录诊断数据,然后该记录诊断数据依据所涉及的实现方式以固定大小的数据记录或可变大小的数据记录进行输出。在许多情况下,指令诊断数据(IDD)和事务诊断数据(TDD)将一起输出,但是在一些实施例中,它们也可被分离地输出。
图5示意性地示出了第一示例实施例。在该示例中,事务50在事务开始指令和事务结束指令之间延伸,并且包括由指令采样触发器标识的经采样的指令52。当执行经采样的指令52时,指令采样电路44用于捕获指令诊断数据(IDD)。此指令诊断数据(IDD)被缓冲,直到事务50的结束,在事务50结束时,指示事务50是否被提交或中止的事务诊断数据(TDD)被确定。此时,指令诊断数据(IDD)和事务诊断数据(TDD)作为固定大小的数据记录的一部分被写出至存储器(或跟踪数据流)。
图6是示意性地示出根据图5的示例的操作的流程图。在步骤54,处理等待直到遇到指令采样触发。步骤56然后捕获指令诊断数据(IDD)。步骤58确定经采样的指令是否在事务内。如果经采样的指令不在事务内,则步骤60用于不延迟地输出指令诊断数据(IDD)。如果经采样的指令在事务内,则处理进行到步骤62,在其中做出处理是否仍在事务内的确定(例如,单个事务已经完结,或者当支持平坦嵌套事务时,事务深度计数器为零)。当不仍在事务内时,处理进行到步骤64,在其中做出事务是否被提交的确定。如果事务已提交,则步骤66将指令诊断数据(IDD)与指示事务完成的事务诊断数据(TDD)一起输出。如果事务未提交,则处理进行到步骤68,其中指令诊断数据(IDD)与指示事务被中止的事务诊断数据(TDD)一起被输出。
图7示意性地示出了第二示例。在此示例中,事务70包括经采样的指令72,跟随经采样的指令72有另一经采样的指令74。经采样的指令72由第一指令采样触发的发生来标识。另一经采样的指令74由另一指令采样触发的发生来标识。在此示例中,事务70包括两个经采样的指令。与经采样的指令72相关联的指令诊断数据(IDD)被缓冲而不被输出,直到另一经采样的指令74的开始。此时,经采样的指令72的指令诊断数据(IDD)与事务诊断数据(TDD)一起被输出(例如,作为固定大小的数据记录的一部分输出到存储器或跟踪数据流),事务诊断数据(TDD)指示包括经采样的事务72的事务70在该事务诊断数据的输出时是未完成的。此事务诊断数据(TDD)包括指示状态的未完成事务数据(例如通过使用适当的标志值)。
当已经输出经采样的指令72的指令诊断数据(IDD)时,这释放了正在存储此数据的缓冲器以便然后存储与另一经采样的指令74相关联的另一指令诊断数据。此另一指令诊断数据被缓冲,直到事务70的结束,在事务70结束时,该另一指令诊断数据与指示事务是否被完成或中止的事务诊断数据一起被输出。
图8是示意性地示出图7的示例的操作的流程图。在步骤76,处理等待直到接收到指令采样触发。然后,步骤78确定经采样的指令是否在事务内。如果采样指令不在事务内,则步骤80用于捕获指令诊断数据(IDD)并在此时输出指令诊断数据(IDD)。如果步骤78处的确定是经采样的指令在事务内,那么处理进行到步骤82,在其中做出是否存在任何已捕获的指令诊断数据(IDD)等待其相关联的事务完结的确定。这样已捕获的指令诊断数据(IDD)将会如前所述地存储在缓冲器内。如果存在这样已捕获的指令诊断数据(IDD)等待其事务完结,则处理进行到步骤84,其中此已捕获的指令诊断数据(IDD)与未完成事务数据(未完成事务数据是事务诊断数据的一种形式)一起输出。缓冲区于是被释放以用于存储与最新指令采样触发相关联的指令诊断数据(IDD)。如果步骤82处的确定是没有任何已捕获的诊断数据(IDD)等待其事务完结,或者在步骤84完成之后,步骤86用于捕获与在步骤76处标识的采样指令触发的指令相关联的指令诊断数据(IDD)。然后,步骤88确定处理是否仍在事务内,例如,与来自步骤86所捕获的指令诊断数据(IDD)相关联的事务是否已经完结。如果此事务已经完结,则步骤90确定此事务是否被提交。如果事务已提交,则步骤92将指令诊断数据(IDD)与指示事务完成的事务诊断数据(TDD)一起输出。如果事务没有提交,则步骤94用于将指令诊断数据(IDD)与指示事务中止的事务诊断数据(TDD)一起输出。
如果步骤88处的确定是处理仍处于事务内,则步骤96确定是否已经接收到另一采样触发。如果尚未接收到另一采样触发,则处理返回到步骤88。如果接收到另一采样触发,则处理返回到步骤82。
图9示意性地示出了第三示例。在此第三示例中,事务98包括第一经采样的指令100和第二经采样的指令102。每个经采样的指令100、102由相关联的指令采样触发标识。在这些经采样的指令中的每一个已经执行之后,与该经采样的指令100、102相关联的指令诊断数据(IDD)与指示经采样的指令100、102在事务内(以及可能的支持嵌套事务的系统中的事务深度)的事务诊断数据(TDD)一起被输出。此指令诊断数据(IDD)和事务内数据可被写入为可变大小的数据记录。由于指令诊断数据(IDD)被写出而不等待事务98结束,所以不需要缓冲或者需要有限的缓冲。当事务98完成时,则写出另一事务诊断数据(TDD)以指示事务98是否完成或中止。再次,此事务诊断数据(TDD)可被写出为可变大小的数据记录。
图10是示意性地示出图9的示例的操作的流程图。在步骤104,处理等待直到接收到指令采样触发。然后,步骤106确定经采样的指令是否在事务内。如果经采样的指令不在事务内,则步骤108用于捕获经采样的指令的指令诊断数据(IDD),并输出此指令诊断数据(IDD)。
如果在步骤106处标识经采样的指令在事务内,则步骤110用于捕获与该经采样的指令相关联的指令诊断数据(IDD)。然后,步骤112将捕获的指令诊断数据与事务内数据形式的事务诊断数据(TDD)一起输出到存储器或跟踪数据流。步骤114确定处理是否仍在事务内。如果处理仍然不在事务内,那么步骤116确定事务是否已被提交(例如,完成而没有冲突)。如果事务确实提交,则步骤118输出指示事务完成的事务诊断数据(TDD)。如果事务未完成,则步骤120输出指示事务中止的事务诊断数据(TDD)。
如果步骤114处的确定是处理仍处于事务内,则步骤122确定是否已经发生另一采样触发。如果没有发生另一采样触发,则处理返回到步骤114。如果发生另一指令采样触发,则处理返回到步骤110。
图11示意性地示出了第四示例。在此示例中,事务124包括第一经采样的指令126和第二经采样的指令128。第三经采样的指令130位于事务124之外。由于针对每个经采样的指令126、128、130输出指令诊断数据(IDD),所以这伴随着先前采样事务数据形式的事务诊断数据(TDD)。这指示包含先前采样的指令的任何事务的状态。如图11所示,由于从图11中不清楚先前采样指令的性质,第一经采样的指令126伴随着未知形式的先前采样事务数据。在执行第一经采样的指令126的时候,更新先前采样事务数据的状态数据以指示执行第一经采样的指令126时事务124未完成。此先前采样事务数据此时不输出,而是与针对第二经采样的指令128捕获并输出的指令诊断数据(IDD)一起输出。在执行第二经采样的指令128时,第二经采样的指令128再次将先前采样事务数据状态更新为未完成。当事务124完成时,分离的机制更新先前采样事务数据以指示事务的完成的性质,例如,完成或中止。因此,当执行第三经采样的指令130并输出其指令诊断数据(IDD)时,伴随的先前采样事务数据指示完成或中止。
图12是示意性地示出图11的示例的操作的流程图。在步骤132处,处理等待直到遇到指令采样触发。当遇到指令采样触发时,步骤134捕获经采样的指令的指令诊断数据(IDD)。然后,步骤136将捕获的指令诊断数据(IDD)与先前采样事务数据一起输出到存储器或跟踪数据流。然后,步骤138确定与步骤132处的指令采样触发相对应的经采样的指令是否在事务内。如果经采样的指令在事务内,则步骤140用于将系统存储的先前采样事务数据状态设置为“未完成”。如果步骤138处的确定是经采样的指令不在事务内,则步骤142用于将存储的先前采样事务数据状态设置为“不在事务中”。
图13示意性地示出了当事务被事务跟踪电路46检测为完成时对先前采样事务数据状态的更新。在步骤144处,做出处理仍不在事务内的确定。然后,步骤146确定先前采样事务数据是否指示“不在事务中”。如果这是真的,则它指示在步骤144刚被检测为完成的事务不是包含经采样的指令的事务,因此先前采样事务数据被保留为“不在事务中”。如果步骤146的确定是先前采样事务数据不等于“不在事务中”,则处理进行到步骤148,其中做出步骤144处被检测为完结的事务是否没有冲突地完成的确定。如果事务没有冲突地完成,则步骤150将先前采样事务数据状态设置为“完成”。如果事务未没有冲突地完成,则步骤152将先前采样事务数据状态设置为“中止”。
尽管本文参照附图详细描述了说明性实施例,但是应当理解,权利要求不限于这些精确实施例,并且本领域技术人员可在其中实现各种改变、添加和修改而不脱离所附权利要求的范围和精神。例如,可做出独立权利要求的特征与从属权利要求的特征的各种组合。

Claims (15)

1.一种用于处理数据的装置,所述装置包括:
处理电路,用于执行包括事务的程序指令,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
指令采样电路,用于捕获与由所述处理电路对经采样的指令的执行有关的指令诊断数据;以及
事务跟踪电路,用于:
检测所述经采样的指令是否在所述事务内;并且
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
2.如权利要求1所述的装置,其中所述事务跟踪电路被形成为在事务处理已完结之后把所述事务诊断数据写入到存储器。
3.如权利要求2所述的装置,其中所述采样电路被形成为在事务处理已完结之后把所述指令诊断数据与所述事务诊断数据一起写入到所述存储器。
4.如权利要求1所述的装置,其中所述事务跟踪电路被形成为在事务处理已完结之后把所述事务诊断数据写入到跟踪数据流。
5.如权利要求4所述的装置,其中所述采样电路被形成为在事务处理已完结之后把所述指令诊断数据与所述事务诊断数据一起写入到所述跟踪数据流。
6.如任一前述权利要求所述的装置,其中所述事务跟踪电路和所述采样电路被形成为响应于所述事务内的另一经采样的指令的另一指令诊断数据的捕获而把所述指令诊断数据与指示事务处理尚未完结的未完成事务数据一起写入。
7.如权利要求1至5中任一项所述的装置,其中所述事务跟踪电路和所述采样电路被形成为响应于所述指令诊断数据的捕获而把所述指令诊断数据与指示所述经采样的指令在所述事务内的事务内数据一起写入。
8.如权利要求1至5中任一项所述的装置,其中所述事务跟踪电路和所述采样电路被形成为响应于另一经采样的指令的另一指令诊断数据的捕获而把所述另一指令诊断数据与指示包括所述经采样的指令的所述事务的状态的先前采样事务数据一起写入。
9.如权利要求2和3中的任一者所述的装置,其中所述存储器被在由所述处理电路执行的所述程序指令内的存储器访问指令使用。
10.如权利要求1至5中任一项所述的装置,其中所述指令诊断数据和所述事务诊断数据被写入为以下各项中的一项:
固定大小的数据记录;以及
可变大小的数据记录。
11.如权利要求1至5中任一项所述的装置,其中所述事务诊断数据指示以下各项中的一项或多项:
所述事务完成从而使得所述推测性更新被提交;
所述事务中止从而使得所述推测性更新未被提交;
嵌套深度;
所述事务尚未完成;以及
所述经采样的指令在所述事务内。
12.如权利要求1至5中任一项所述的装置,其中所述采样电路被形成为以如下各项中的一项执行指令诊断数据捕获:
固定间隔;
随机间隔;
固定间隔加上随机间隔的和;以及
响应于外部刺激。
13.如权利要求1至5中任一项所述的装置,其中所述指令诊断数据包括以下各项中的一项或多项:
所述经采样的指令的程序计数器值;
异常级别;
虚拟机标识符;
上下文标识符;
转换表基地址值;
安全状态值;
所述经采样的指令的类型;
所述经采样的指令是否触发缓存访问;
所述经采样的指令是否触发缓存未命中;
与所述经采样的指令的至少一部分的执行相关联的周期计数数据;以及
与所述指令相关联的架构状态的改变是否被提交。
14.一种用于处理数据的装置,所述装置包括:
用于执行包括事务的程序指令的处理装置,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
用于捕获与由所述处理装置对经采样的指令的执行有关的指令诊断数据的指令采样装置;以及
用于以下操作的事务跟踪装置:
检测所述经采样的指令是否在所述事务内;并且
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
15.一种处理数据的方法,所述方法包括:
在处理电路上执行包括事务的程序指令,该事务包括执行以生成对状态数据的推测性更新并且如果所述事务没有冲突地完成则提交所述推测性更新的多个程序指令;
捕获与由所述处理电路对经采样的指令的执行有关的指令诊断数据;
检测所述经采样的指令是否在所述事务内;以及
如果所述经采样的指令在所述事务内,则跟踪所述推测性更新是否被提交并捕获指示所述推测性更新是否被提交的事务诊断数据。
CN201580064594.5A 2014-12-23 2015-11-23 事务内的指令采样 Active CN107003895B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GB1423041.1A GB2533603A (en) 2014-12-23 2014-12-23 Debugging data processing transactions
GB1423041.1 2014-12-23
GB1423042.9 2014-12-23
GB1423042.9A GB2533604B (en) 2014-12-23 2014-12-23 Instruction sampling within transactions
GB1500183.7A GB2533650B (en) 2014-12-23 2015-01-07 Debugging data processing transactions
GB1500183.7 2015-01-07
PCT/GB2015/053561 WO2016102920A1 (en) 2014-12-23 2015-11-23 Instruction sampling within transactions

Publications (2)

Publication Number Publication Date
CN107003895A CN107003895A (zh) 2017-08-01
CN107003895B true CN107003895B (zh) 2021-02-23

Family

ID=56096844

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580069226.XA Active CN107111488B (zh) 2014-12-23 2015-11-23 调试数据处理事务
CN201580064594.5A Active CN107003895B (zh) 2014-12-23 2015-11-23 事务内的指令采样

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201580069226.XA Active CN107111488B (zh) 2014-12-23 2015-11-23 调试数据处理事务

Country Status (4)

Country Link
US (2) US10228942B2 (zh)
CN (2) CN107111488B (zh)
GB (1) GB2533650B (zh)
WO (2) WO2016102920A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690623B2 (en) 2015-11-06 2017-06-27 International Business Machines Corporation Regulating hardware speculative processing around a transaction
EP3479248A4 (en) * 2016-06-29 2019-12-18 Synopsys, Inc. AUTOMATED HTTP USER FLOW SIMULATOR
US11907091B2 (en) * 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
GB2571538B (en) * 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
CN108681500B (zh) * 2018-04-28 2021-09-07 格兰菲智能科技有限公司 具有事务记录能力的系统和事务记录方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US6938130B2 (en) * 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8677104B2 (en) 2006-05-30 2014-03-18 Arm Limited System for efficiently tracing data in a data processing system
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US8661204B2 (en) * 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
US8180986B2 (en) 2008-09-17 2012-05-15 Microsoft Corporation Memory conflict detection via mapping of the physical heap to control access permissions to the memory
CN101719116B (zh) * 2009-12-03 2011-09-28 浙江大学 基于异常处理的事务存储访问机制的实现方法及所用系统
US8479053B2 (en) * 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US9411591B2 (en) * 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8977587B2 (en) * 2013-01-03 2015-03-10 International Business Machines Corporation Sampling transactions from multi-level log file records
US9495159B2 (en) * 2013-09-27 2016-11-15 Intel Corporation Two level re-order buffer
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
GB2535212B (en) * 2015-02-13 2021-08-04 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Hardware Support for Unbounded Transactional Memory;Sean Lie;《Massachusetts Institute of Technology 2004》;20040507;第1-111页 *
多核软件的几个关键问题及其研究进展;杨际祥 等;《电子学报》;20100915;第38卷(第9期);第2140-2146页 *

Also Published As

Publication number Publication date
GB2533650B (en) 2021-07-21
US20170337115A1 (en) 2017-11-23
CN107003895A (zh) 2017-08-01
US10228942B2 (en) 2019-03-12
WO2016102920A1 (en) 2016-06-30
US20170351517A1 (en) 2017-12-07
US10394557B2 (en) 2019-08-27
WO2016102919A1 (en) 2016-06-30
CN107111488A (zh) 2017-08-29
GB2533650A (en) 2016-06-29
CN107111488B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
KR101423480B1 (ko) 트랜잭셔널 메모리를 위한 최종 브랜치 레코드 표시자
CN107003895B (zh) 事务内的指令采样
US9513959B2 (en) Contention management for a hardware transactional memory
CN107278296B (zh) 用于响应于事务执行生成跟踪数据的装置和方法
JP7281491B2 (ja) トランザクショナル比較及び破棄命令
KR20190051036A (ko) 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리
US10810039B2 (en) Monitoring utilization of transactional processing resource
US9858172B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
US11379233B2 (en) Apparatus and data processing method for transactional memory
US9990269B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
JP7153731B2 (ja) コミット・ウィンドウ移動要素
GB2533604A (en) Instruction sampling within transactions
TWI784049B (zh) 事務巢套深度測試指令

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant