CN110651250A - 生成和验证包括存储器数据内容的硬件指令跟踪 - Google Patents

生成和验证包括存储器数据内容的硬件指令跟踪 Download PDF

Info

Publication number
CN110651250A
CN110651250A CN201880031674.4A CN201880031674A CN110651250A CN 110651250 A CN110651250 A CN 110651250A CN 201880031674 A CN201880031674 A CN 201880031674A CN 110651250 A CN110651250 A CN 110651250A
Authority
CN
China
Prior art keywords
imt
processor
data
contents
records
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
CN201880031674.4A
Other languages
English (en)
Other versions
CN110651250B (zh
Inventor
李长洙
C·雅各比
C·佐林
D·李
J·巴尔蒂克
A·萨珀里托
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110651250A publication Critical patent/CN110651250A/zh
Application granted granted Critical
Publication of CN110651250B publication Critical patent/CN110651250B/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

本发明的实施例涉及一种用于生成和验证包括存储器数据内容的硬件指令跟踪的计算机实现的方法。该方法包括针对处理器启动存储器内跟踪(IMT)数据采集,IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。该方法还包括通过以下方式采集处理器的架构寄存器的内容:将架构寄存器的内容存储到预定存储器位置,并使加载‑存储单元(LSU)读取预定存储器位置的内容。

Description

生成和验证包括存储器数据内容的硬件指令跟踪
背景技术
本发明一般涉及计算机系统性能建模,更具体地涉及提供改进的跟踪(trace)数据。
在多个虚拟地址空间中使用虚拟寻址的数据处理系统是众所周知的。许多数据处理系统包括例如中央处理单元(CPU)和主存储。CPU包含用于指令执行,中断动作,定时功能,初始程序加载和其它机器相关功能的排序和处理设施。主存储可直接寻址,并提供CPU对数据的高速处理。主存储可以与CPU物理集成,也可以在独立单元中构建。
通常,地址空间驻留在主存储,其中,地址空间是整数(或虚拟地址)的连续序列,具有特定的变换参数,其允许将每个号码与存储中的字节位置相关联。序列从零开始,从左到右进行。
当CPU使用虚拟地址访问主存储时,虚拟地址首先通过动态地址转换(DAT)被转换为实地址,然后,通过加前缀,被转换为绝对地址。DAT使用各种级别的表作为转换参数,并通过转换表将计算机系统的虚拟地址转换为实地址。表的目的地(在过去,包括原点和长度)被找到,以供DAT在控制寄存器中使用或用于由访问寄存器指定的用途。
通过提供在重要事件或基准的存储中的持续记录,跟踪协助确定在数据处理系统中是否存在问题。跟踪系统的一个示例是控制台监视系统(CMS)辅助跟踪系统(CATS),其包括一组连贯的,顺序的和通常连续的架构指令记录,这些架构指令记录在通过数据处理系统处理指令时被采集。
发明内容
本发明的实施例涉及一种用于生成和验证包括存储器数据内容的硬件指令跟踪的计算机实现的方法。该方法包括针对处理器启动存储器内跟踪(IMT)数据采集,IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。该方法还包括通过将架构寄存器的内容存储到预定存储器位置并使加载-存储单元(LSU)读取预定存储器位置的内容来采集处理器的架构寄存器的内容。
在一个或多个示例中,使所述LSU读取预定存储器位置的内容包括:在IMT数据采集中生成存储器提取控制记录和存储器提取数据记录。在一个或多个示例中,存储器提取控制记录的结构基于处理器的类型。
在一个或多个示例中,响应于断点,采集指令的操作数的内容。例如,断点是来自时间依赖的存储位置的提取指令。例如,断点是输入-输出类型指令。例如,断点是外部中断。
在一个或多个示例中,响应于IMT数据采集在扩展IMT模式中被初始化,采集架构寄存器的内容。此外,在一个或多个示例中,在扩展IMT模式中,IMT数据采集还包括正在执行的指令中的操作数的值。使用存储器提取控制和存储器提取数据记录来采集操作数的值,并使用源操作数记录和/或目的地操作数记录来采集它们的地址。
在一个或多个示例中,在处理器执行每个预定数量的指令之后,采集架构寄存器的内容。
在一个或多个示例中,所述处理器是第一处理器,所述方法还包括:使用第二处理器执行由第一处理器使用IMT采集数据跟踪的指令。
在一个或多个示例中,所述方法还包括:使用模拟处理器执行由处理器使用IMT采集数据跟踪的指令。
在一个或多个示例中,响应于IMT数据采集在扩展IMT模式下被启动,采集操作数的内容。所描述的技术的实现可以包括硬件,方法或过程,或计算机可访问介质上的计算机软件。
此外,在一个或多个示例中,该方法还包括:在采集IMT数据之前验证IMT数据记录。通过使用第一AVP文件生成伪IMT采集,使用伪IMT生成第二AVP文件,以及比较第一AVP文件和第二AVP文件来执行验证。
本发明的实施例涉及一种系统,用于生成和验证包括存储器数据内容的硬件指令跟踪。该系统的非限制性示例包括存储器和彼此耦接的处理器。处理器接收启动存储器内跟踪(IMT)数据采集的请求,IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。处理器通过将架构寄存器的内容存储到预定存储器位置并使加载-存储单元(LSU)读取预定存储器位置的内容来在IMT数据中采集处理器的架构寄存器的内容。
本发明的实施例涉及一种计算机程序产品,用于生成和验证包括存储器数据内容的硬件指令跟踪。该计算机程序产品包括计算机可读存储介质,在该计算机可读存储介质中体现程序指令。程序指令可由处理器执行以使处理器执行方法。该方法的非限制性示例包括:针对处理器启动存储器内跟踪(IMT)数据采集,IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。该方法还包括通过将架构寄存器的内容存储到预定存储器位置并使加载-存储单元(LSU)读取预定存储器位置的内容来采集处理器的架构寄存器的内容。
此外,本发明的实施例包括用于测试处理器的装置。该装置可以是测试系统。该装置接收针对处理器启动存储器内跟踪(IMT)数据采集的请求,该IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。该装置通过将架构寄存器的内容存储到预定存储器位置并使加载-存储单元(LSU)读取预定存储器位置的内容来在IMT数据中采集架构寄存器的内容。该装置还使用采集的IMT数据生成测试序列,该测试序列包括来自采集的IMT数据的指令和架构寄存器的内容。该装置还使用第二处理器执行测试序列。
此外,本发明的实施例包括用于测试处理器的计算机实现的方法,该方法包括针对处理器启动存储器内跟踪(IMT)数据采集,IMT数据是在指令流过处理器的执行流水线时收集的指令跟踪。该方法还包括:响应于采集的IMT数据在扩展模式下被启动,通过将架构寄存器的内容存储到预定存储位置,并使加载-存储单元(LSU)读取预定存储器位置的内容,在IMT数据中采集处理器的架构寄存器的内容。该计算机实现的方法还包括使用所采集的IMT数据生成测试序列,该测试序列包括来自所采集的IMT数据的指令和架构寄存器的内容。计算机实现的方法还包括使用第二处理器执行测试序列。
另外的技术特征和优点通过本发明的技术来实现。本文详细描述了本发明的实施例和方面,并且本发明的实施例和方面被认为是所要求保护的主题的一部分。为了更好地理解,请参考详细说明和附图。
附图说明
本文所描述的专有权利的细节在本说明书的结尾处的权利要求中被特别地指出并清楚地要求保护。通过以下结合附图的详细描述,本发明的实施例的前述和其它特征和优点将变得显而易见,其中:
图1描绘了用于实现本文描述的一个或多个技术方案的系统的示例性实施例;
图2描绘了跟踪段表的示例性实施例;
图3A-3D描绘了如本文所述的用于生成跟踪数据的方法;
图4描绘了根据本发明的一个或多个实施例的采集IMT;
图5描绘了根据本发明的一个或多个实施例的采集IMT;
图6示出了根据本发明的一个或多个实施例的用于在IMT中采集存储器数据内容的示例方法的流程图;
图7描绘了根据本发明的一个或多个实施例的用于在IMT采集中从存储器采集数据内容的示例MFC记录;
图8示出了根据本发明的一个或多个实施例的示例MFD记录;
图9示出了根据本发明的一个或多个实施例的用于验证存储器数据内容的示例方法的流程图;
图10示出了根据本发明的一个或多个实施例的示例源操作数(SRCOP)记录;以及
图11示出了根据本发明的一个或多个实施例的示例目的地操作数(DSTOP)记录。
本文描绘的图是说明性的。在不脱离本发明的精神的情况下,可以对图或其中描述的操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加,删除或修改动作。而且,术语“耦接”及其变形描述了在两个元件之间具有通信路径,并不意味着元件之间的直接连接而在它们之间没有中间元件/连接。所有这些变化都被认为是规范的一部分。
在附图和以下公开的实施例的详细描述中,在附图中示出的各个元件具有两个或三个数字的附图标记。除了少数例外,每个附图标记的最左边的数字对应于其元素首先被示出的图。
具体实施方式
这里参考相关附图描述了本发明的各种实施例。在不脱离本发明的范围的情况下,可以设计出本发明的替代实施例。在以下描述和附图中的元件之间阐述了各种连接和位置关系(例如,上方,下方,相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不意图在这方面进行限制。因此,实体的耦接可以指直接或间接耦接,并且实体之间的位置关系可以是直接或间接的位置关系。此外,本文描述的各种任务和处理步骤可以合并到具有本文未详细描述的附加步骤或功能的更全面的进程或过程中。
以下定义和缩写是用于权利要求和说明书的解释。如这里所使用的,术语“包括”,“包括了”,“包含”,“包含了”,“具有”,“具有了”,“含有”或“含有了”或其任何其它变型旨在涵盖非排它的包容。例如,包含元素列表的组合物,混合物,过程,方法,物品或装置不一定仅限于那些元素,而是可以包括未明确列出的其它元素或这种组合物,混合物,过程,方法,物品或装置固有的其它元素。
此外,术语“示例性”在本文中用于表示“用作示例,实例或说明”。本文描述为“示例性”的任何实施例或设计不必被解释为比其它实施例或设计更优选或更具优势。术语“至少一个”和“一个或多个”可以被理解为包括大于或等于一的任何整数,即,一个,两个,三个,四个等。术语“多个”可以被理解为包括任何大于或等于2的整数,即,两个,三个,四个,五个等。术语“连接”可以包括间接“连接”和直接“连接”。
术语“约”,“基本上”,“大约”和它们的变型,意在包括与基于在提交申请时可用的设备的特定数量的测量相关的误差程度。例如,“约”可以包括给定值的±8%或5%,或2%的范围。
为了简洁起见,与制造和使用本发明的方面相关的传统技术可以或可以不被在此详细描述。特别地,用于实现本文描述的各种技术特征的计算系统和特定计算机程序的各个方面是公知的。因此,为了简洁起见,在此仅简要地提及许多传统的实现细节,或者在不提供公知的系统和/或处理细节的情况下完全省略许多传统的实现细节。
现在转向与本发明的各方面更特别相关的技术的概述,数据处理系统(诸如,计算机服务器)采集存储器内跟踪(IMT)数据,其包括在指令流过执行流水线时由硬件收集的指令跟踪。例如,诸如z
Figure BDA0002271059720000061
处理器内核的数据处理系统包括将硬件指令跟踪采集为IMT数据的功能。通过针对复杂的工作负载采用毫码指令来采集跟踪,采集IMT数据已经处理并解决了使用CMS辅助跟踪系统(CATS)的传统跟踪方法的技术挑战。通常,这种采集需要高技能的工程师,并且在虚拟机中执行复杂的工作负载环境的复制以采集CATS跟踪。以前,此类数据无法使用CATS跟踪,或者需要高技能工程师在虚拟机中复制复杂的工作负载环境以采集CATS跟踪。但是,与CATS跟踪不同,IMT跟踪不提供存储器数据内容,这些内容用于通过受控测试套件(诸如完全自动化包(CAP)测试用例套件)生成CAP序列测试用例的逆向工程数据流。通过测量/比较内核性能模型,内核硬件描述语言(例如VHDL)模拟器和实际硬件上的无限CPI(每个指令的周期),CAP测试用例已用于新处理器内核的性能验证。IMT跟踪中数据内容的缺少阻止了针对性能验证使用新的指令集来反映新的客户工作负载,这对于开发下一代处理器内核至关重要。
现在转到对本发明的各方面的概述中,本发明的一个或多个实施例通过促进生成和验证包括在IMT中的存储器数据内容的硬件指令跟踪来处理上述的技术挑战。这里的技术特征进一步有助于使用现有的基础设施和工具从IMT跟踪生成CAP测试用例。此外,技术特征有助于验证存储器数据内容。
现在转到本发明的各方面的更详细的描述,参考图1,提供了一种数据处理系统100。系统100包括中央处理器或中央处理单元(CPU)105。CPU 105可以包括任何合适的组件,例如指令提取单元110,并且可以与存储器115通信地耦接。
典型地,指令提取单元110(IFU)被用来提取代表处理器105的指令。IFU 110提取“下一个顺序指令”,分支选取指令的目标指令,或者上下文切换之后的程序的第一个指令。在一个或多个示例中,IFU 110采用预取技术来基于可能使用预取指令的可能性来推测性地预取指令。例如,IFU110提取16字节的指令,该指令包括下一顺序指令和另外的顺序指令的附加字节。
然后,所提取的指令由处理器105执行。在一个或多个实施例中,所提取的指令(一个指令或多个指令)传递到IFU 110的调度单元。调度单元解码指令(一个指令或多个指令)且将关于解码指令的信息转寄给处理器105的适当的单元。例如,处理器105包括执行单元112,其从IFU 110接收关于解码的算术指令的信息,并根据指令的操作码对操作数执行算术运算。操作数优选地从存储器115,处理器105的架构寄存器,和/或从正在执行的指令的立即字段提供给执行单元112。当存储时,执行结果存储在存储器115,架构寄存器,和/或其它机器硬件(例如,控制寄存器,PSW寄存器等)中。
处理器105还包括一个加载/存储单元114(LSU)。处理器105使用LSU 114访问存储。LSU 114通过获得存储器中的目标操作数的地址并将操作数加载到寄存器或另一存储器位置来执行加载操作,或者通过获得存储器中的目标操作数的地址并将从寄存器或另一存储器位置获得的数据存储在存储器中的目标操作数位置来执行存储操作。在一个或多个示例中,LSU 114是推测性的并且可以以相对于指令序列无序的顺序来访问存储器,然而LSU 114将保持对指令按顺序执行的程序的表象(appearance)。LSU114与处理器105的组件通信,例如IFU 110,执行单元112,寄存器,解码/调度单元,高速缓存/存储器接口或处理器105的其它元件,并包括各种寄存器电路,ALU和控制逻辑以计算存储地址并提供流水线排序以使操作保持顺序。如本领域所已知的,某些操作可能是无序的,但是加载/存储单元提供功能以使得无序操作对程序显示为已经按顺序执行。
典型地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为它们通过以下各种动态地址转换(DAT)技术中的一种被重定向到物理存储器位置,包括但不限于:简单地在虚拟地址前加上偏移值,通过一个或多个转换表转换虚拟地址,转换表优选地至少包括单独的段表和页表,或它们的组合,优选地,段表具有指向页表的条目。例如,在一些处理器中,提供了转换层次,包括区域第一表,区域第二表,区域第三表,段表和可选页表。通常利用转换后备缓冲器(TLB)来改善地址转换的性能,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储器位置的条目。条目在DAT使用转换表转换虚拟地址时创建。然后,虚拟地址的随后使用可以利用快速TLB的条目而不是慢速的顺序转换表访问。TLB内容可以通过各种替换算法来管理,包括LRU(最近最少使用)。
在其中处理器105是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,如I/O,高速缓存,TLB和存储器,它们相互关联以达成一致性。通常,“窥探(snoop)”技术用于维持高速缓存一致性。在窥探环境中,每个高速缓存行可以被标记为处于共享状态,独占状态,改变状态,无效状态等中的任何一个,以便促进共享。
处理器105可以与多个TLB通信耦接,它们是通常仅保持转换表映射的高速缓存存储器。在每个引用上,TLB用于查找针对引用的虚拟页码。如果存在命中,则使用物理页码来形成地址,并打开相应的引用位。如果发生TLB中的未命中,并且如果引用的页存在于存储器中,则可以将转换从存储器115中的页表加载到TLB中,并且可以再次尝试引用。如果页不存在于存储器115中,则发生页错误并且必须向CPU通知异常。
在一个实施例中,TLB包括第一级TLB 120或“TLB1”,和支持TLB1的第二级TLB 125或“TLB2”。在一个实施例中,TLB1包括对应于指令TLB或“ITLB”的指令高速缓存(I-高速缓存)130和对应于数据TLB或“DTLB”的数据高速缓存(D-高速缓存)135。
TLB在本文中被描述为,但不限于,适于z
Figure BDA0002271059720000091
体系结构的实施例。该体系结构使用连接到TLB页表条目(PTE)的TLB组合区域和段表条目(CRSTE),其中,发生地址转换的顺序是:首先是区域,然后是段,并且其后是页。
应当指出的是,在本文中结合z
Figure BDA0002271059720000092
的体系结构来描述示例,然而,在其它示例中,系统100可用于结合任何合适的计算机体系结构。
本文所描述的系统100仅仅是示例性的。该系统可以包括提供数据处理所必需的任何附加组件。示例性组件包括但不限于存储,存储器,输入设备,输出设备等。由于这些组件是本领域技术人员已知的,因此这里不再详细描述。
在一个或多个示例中,IMT被采集为包括各种记录类型的跟踪段表。如这里所使用的,“表”指的是跟踪段的集合,其可以采用任何合适的形式,例如虚拟或存储器页。一个或多个记录类型可以构成一个或多个跟踪记录段,并且可以称为转换指令地址,或“TrInA”记录段。这些记录可以由不同的单元(例如,CPU 105)创建,并且可以存储在例如存储器115或其它合适的位置。应当注意,对于执行的指令,收集一组IMT记录。记录的数量和类型取决于指令类型。例如,导致提取/存储操作数的存储器指令导致IMT包括SRCOP和/或DESTOP记录(取决于操作数的数量)。如果指令提取或数据提取错过了TLB1,则取决于CRSTE/PTE命中和地址转换所需的转换表级别来写入一些转换记录(虚拟地址……PTO记录)中的全部。图2显示了为每个正在执行的指令编写的“可能的IMT记录类型”。因此,“跟踪记录段”指的是按指令写入的一组IMT记录,“TrInA”指的是一组“跟踪记录段”,在一个或多个示例中,它是具有多个指令的整个IMT跟踪。
参考图2,提供了包括多个跟踪记录段的跟踪段表200。每个记录段提供与系统事件相关的特定信息,例如指令。所描绘的记录段是示例性的,并且应当注意,在其它示例中,IMT可以包括更少,附加的,和/或不同的跟踪记录段。此外,在本文描述的实施例中,每个记录段是包括位0-63的64位记录。然而,该配置是示例性的,并且可以使用任何合适类型或大小的记录段。所描绘的跟踪段表包括以下指令记录段中的一个或多个:
针对每条指令的指令记录300(来自所提取的指令,即,正在处理/执行的指令);
指令地址(IA)和时刻(TOD)记录400(即,IA+TOD)(来自所提取的指令);
指令转换后备缓冲器(ITLB)记录500(来自TLB1);以及
在需要时,操作数记录(来自所提取的指令),例如,源操作数记录600和目的地操作数记录700。根据指令类型,可以生成零个或更多个操作数记录。
在一个或多个实施例中,跟踪段表200还可以包括主地址空间号(PASN)记录800(来自所提取的指令)。
或者,如果访问系统区域,则ITLB和操作数记录可以包括:
ITLB系统区域记录900(来自TLB1);以及
在需要时,操作数系统区域记录(来自所提取的指令),例如源操作数(系统区域)记录1000和目的地操作数(系统区域)记录1100。
在发生TLB未命中的情况下,可以生成各种转换记录。多层转换受支持,并且可以被编码在这些转换记录中。取决于所传递的记录段的类型和特定比特值,可以确定转换未命中或命中的类型,并且还可以确定转换活动发生在系统的何处,例如在PTE/CRSTE中的何处。此类转换记录的示例包括:
虚拟地址记录1200(来自TLB1和/或TLB2);
绝对地址记录1300(来自TLB1和/或TLB2);
地址空间控制元素(ASCE)记录1400(来自TLB1和/或TLB2);
区域第二表原点(RSTO)记录1500(来自TLB2);
区域第三表原点(RTTO)记录1600(来自TLB2);
段表原点(STO)记录1700(来自TLB2);以及
页表原点(PTO)记录1800(来自TLB2)。
在一个或多个示例中,注释记录2000也可以被包括在跟踪段表200中。注释记录可以在后处理期间添加。
本发明提供用于生成跟踪段,从跟踪段生成跟踪和验证生成的结果的方法。该方法包括以下阶段中的一个或多个阶段。注意,该方法不需要包括在这里描述的每个阶段,并且不限于呈现阶段的顺序。本文结合系统100描述了该方法,尽管该方法可以结合处理器或处理系统的任何类型,数量和配置来执行。
在第一阶段中,确定跟踪段的最小数量。例如,如果发生TLB未命中,则例如可以将转换信息加载到TLB1中,并且可以生成诸如虚拟地址,绝对地址和ASCE记录的转换记录作为跟踪段。在另一示例中,来自指令的操作数信息可用于确定是否应生成操作数记录段。
在第二阶段中,可以产生如上所述的各种跟踪段。针对跟踪段的信息可以从任何所需的存储区域获取,并且可以使用各种页,例如指令,PSW,ASCE等。
参考图3A,在一个实施例中,可以通过从跟踪器310获取信息来生成跟踪记录段305。跟踪310可以是预先计算的跟踪,或者可以在本文描述的方法的过程中生成。在一个实施例中,通过CMS辅助跟踪系统生成跟踪,即,CATS跟踪,尽管可以采用任何合适的系统或过程来生成跟踪。
在一个实施例中,创建了一个C(或其它编程语言)程序,以生成跟踪记录段,这将允许用户确定要在各种环境中输出多少数据。该程序还可用于准备处理实际记录段。
参考图3B,在第三阶段中,处理记录段305以产生部分跟踪(sub-trace)315。部分跟踪315具有与跟踪310相同的格式,但相对于跟踪310有数据块缺失。在一个实施例中,部分跟踪315是CATS部分跟踪。
在一个实施例中,编写C(或其它编程语言)程序以处理记录段305和生成CATS部分跟踪315。相同的C程序可以在以后用于处理由系统硬件生成的记录段305。
参考图3C,在第四阶段中,可以验证部分跟踪生成过程。在一个实施例中,部分跟踪315和跟踪310被输入到模型320中,例如模拟系统100的各个部分的性能模型,包括处理器,高速缓存器,一个或多个TLB等。生成跟踪输出325和部分跟踪输出330。可以将部分跟踪输出330与跟踪输出325进行比较,以确定是否正确地生成了部分跟踪315。
参考图3D,在第五阶段中,通过经由受控测试套件(诸如完全自动化包(CAP)测试用例套件)生成跟踪310和跟踪段305,可验证跟踪段生成过程。例如,可以经由IMT测试系统(例如,专有内部系统)上的CAP测试用例335生成跟踪310,并且可以从跟踪310生成跟踪段305。此外,跟踪段305可以从硬件模拟器340独立地生成,并与从跟踪310生成的跟踪段305进行比较,以验证生成过程。
应当注意的是,在一个或多个示例中,伪IMT在正在被测试/评估的处理器的VHDL模拟器可用之前生成。例如,伪IMT从内核模型(图4中的CPI分析工具)生成。因此,在本文的以下示例中描述的此类情况下,使用伪IMT来验证IMT内容和后处理。
应当注意的是,本文所描述的方法仅仅是一个例子。在不脱离本发明的精神的情况下,可存在对其中描述的阶段(或操作)的许多变化。例如,可以以不同的顺序执行阶段,或者可以添加,删除或修改步骤。所有这些变化都被认为是所要求保护的发明的一部分。
然而,在图4中描绘了使用现有技术采集的IMT的技术限制之一。由于使用现有技术在IMT中没有采集数据内容,它导致缺乏针对系统100的新工作负载的CAP的测试用例,如标有'X'的路径所示。通过由性能CPI工具410测量/比较无限CPI(每个指令的周期),CAP测试用例用于新处理器内核的内核性能验证。对内核性能模型,内核VHDL模拟器,和/或系统100的实际硬件执行CPI测量。例如,在所描绘的场景中,系统100执行一个或多个工作负载基准405并在执行期间采集IMT 420。IMT 420用于使用CATS生成器工具430生成CATS跟踪440。性能CPI分析工具410使用所选择的跟踪460(450是选择)来生成CPI结果415。然后将CPI结果415用于内核性能反馈,以用于进一步开发以及内核性能验证。然而,IMT 420中缺少数据内容阻止了子序列测试生成器(例如CAP)生成序列测试用例480。然后系统100使用序列测试用例来生成测试响应485。以类似的方式,测试响应485在IMT模式412和非IMT模式414下从系统100的模拟模型生成。在一个或多个示例中,通过比较来自非IMT模式VHDL模拟器和性能CPI分析工具与实际机器的输出来完成性能验证/检验。IMT模式VHDL模拟器创建伪IMT以开发CATS.sub生成器和IMT验证工具,该IMT验证工具用于在实际机器可用之前验证开发阶段的IMT竞争(contest)。比较来自不同基础在测系统(SUT)的测试响应485,以用于内核性能验证。然而,序列测试用例480独立于IMT 420生成,需要额外的努力和成本。因此,IMT 420中缺少数据内容导致无法使用新的指令集来反映新的客户工作负载以进行性能验证。
这里描述的用于采集IMT的技术方案解决了这些技术挑战。例如,除了上面的记录之外,这里描述的技术方案有助于收集信息以构建由测试用例中的指令访问的所有架构寄存器和存储器的初始内容,从而可以从所采集的IMT创建CMD或AVP文件。CMD文件是包含由测试用例中的指令访问的所有架构寄存器和存储器的初始内容的文件,它可以在测试系统上运行,例如在IMT测试系统上,例如专有内部系统。AVP文件是包含由测试用例中的指令访问的所有架构寄存器和存储器的初始内容的文件,其可以在VHDL内核模拟器上运行。
图5描绘了用于在使用本文的技术方案在IMT中采集数据内容时与来自图4的上述场景进行比较的数据流。如图所示,CMD文件从具有数据内容的IMT 520生成。CMD文件有助于序列测试生成器470使用现有的基础设施和工具生成用于新工作负载的CAP序列测试用例480。在一个或多个示例中,CMD文件由测试系统515处理,例如在诸如专有内部系统的IMT测试系统上处理以生成CATS跟踪530。跟踪选择450选择CATS跟踪540的子集,其由序列测试生成器470使用以生成序列测试用例480。
为了有助于上述场景,使用具有存储器数据内容的IMT 520跟踪直接生成序列测试用例480,系统100收集在IMT 520中的所有必要信息,以(诸如针对z
Figure BDA0002271059720000141
)在VHDL sim或真实硬件上实现指令执行。在一个或多个示例中,因为收集存储器数据内容导致额外的减速,所以系统100可以以两种不同的模式运行,即正常IMT模式和扩展IMT模式。正常IMT模式生成没有存储器数据内容的指令跟踪,因此具有足以驱动内核性能模型的跟踪,如图4所示。扩展IMT模式生成具有生成CAP测试用例所需的存储器数据内容的指令跟踪,如图5所示。
图6示出了根据本发明的一个或多个实施例的用于在IMT中采集存储器数据内容的示例方法的流程图。如在610处示出,处理器105接收初始化IMT采集的请求。例如,该请求包括一个或多个毫码指令。此外,该请求指示采集IMT的模式,即,正常IMT或扩展IMT。如615和620所示,如果选择正常IMT模式,这表示不采集存储器数据内容以生成序列测试用例,则如前所述,处理器继续仅采集具有指令数据的IMT,而没有存储器数据内容,例如操作数值。
相反,如果选择了扩展IMT模式,则如在615处所示,处理器采集存储器数据内容以用于生成序列测试用例。在一个或多个示例中,在扩展IMT模式下,处理器105使用LSU 114针对操作数从存储器提取数据的所有指令写入MFC(存储器提取控制)和MFD(存储器提取数据)记录。
例如,如在图6中所描绘的,处理器采集架构寄存器的初始内容,如在630所示。在一个或多个示例中,通过执行用于以预定顺序将所有架构寄存器内容写入预定存储器位置并从相同的预定存储器位置读回所存储的内容的一个或多个毫码指令,采集初始内容。这种顺序写入和读取操作使得LSU 114采用包含操作数地址(预定存储器位置的地址)的操作数记录来写入MFD/MFC记录。然后可以使用该信息,例如通过后处理程序来解析IMT并使用预定顺序及其存储位置采集特定寄存器的初始内容。处理器105还采集正在执行的指令的IMT,如在635处所示。
处理器105继续IMT采集直到用于采集架构寄存器的内容的条件发生,如在640处所示。响应于该条件,所述处理器通过强制存储器写入和读取架构寄存器以使用LSU 114采集IMT中的内容来采集架构寄存器的内容,如在645处所示。由正在执行的指令之一提取的任何存储器数据由LSU采集为(本文描述的)MFC和MFD记录。可以解析IMT操作数记录(SRCOP/DESTOP)和数据记录(MFC/MFD)以分别确定指令的操作数的地址和数据。例如,MFC记录只有操作数地址的一部分。MFC记录中的部分地址和OPC计数用于查找相应的SRCOP/DESTOP以获得完整的操作数地址。另外,响应于触发断点,执行写入/读取预定存储器(645)以在断点之后采集所有架构寄存器的内容(类似于IMT的启动)。通过使用LSU读取/写入架构寄存器的内容,技术方案可以生成写操作数记录和数据记录,可以通过在MFC和MFD记录中查看预定存储器的操作数地址和数据来依次解析这些记录以确定寄存器类型和内容。因为,架构寄存器的内容以预定方式写入,以相同的预定方式解析MFD记录识别哪些架构寄存器内容存储在读取的MFD记录中的哪个位置。
在一个或多个示例中,在IMT扩展模式下,直到启动采集架构寄存器内容的条件,IMT采集继续,以包括指令从存储器访问的数据。例如,指令的操作码可用于确定指令是否从存储器115访问数据。例如,来自预定子集的指令操作码被识别为访问存储器内容的指令。替代地或另外地,指令的操作数用于确定存储器内容是否正在被访问。例如,如果操作数包括存储器地址,则可以认为该指令访问存储器内容。应当注意,以上是一些示例,并且在本发明的其它实施例中,处理器105可以确定被跟踪的指令以不同的方式访问存储器内容。IMT使用MFC和MFD记录来采集操作数数据,并使用SRCOP和/或DESTOP记录来采集操作数的地址。MFC记录包含用于从MFD记录解析操作数值的信息。
替代地或另外地,启动要采集的架构寄存器内容的条件包括:自最近的架构寄存器内容采集以来已经执行了预定数量的指令。例如,为了允许从采集的IMT跟踪生成多个CAP测试用例,每完成K个指令就强制写入和读取架构寄存器,K是可配置的。例如,初始化请求包括用于K的值。因此,一旦测试用例需要在断点处停止,则下一个测试用例可以在IMT提供所有架构寄存器的快照(snapshot)的任何点再次启动。CAP测试用例中的断点可以包含特定类型的指令。例如,断点可以包括从时间依赖的存储位置的提取,IO指令,外部中断,不提供用于测试用例生成的足够信息的指令等,和/或其组合。
处理器105进一步检查IMT采集是否完成,如在650处所示。例如,IMT采集可以响应于以下情况而完成:当前正在执行的程序完成,特定的IMT采集完成请求被接收,手动中断IMT采集,阻止IMT采集的操作等,以及它们的组合。如果IMT采集尚未完成,则处理器继续监视下一条指令,以根据IMT模式采集IMT记录。在扩展IMT模式中,处理器还监视采集架构寄存器内容的条件的发生。否则,如果IMT采集完成,则处理器停止采集IMT直到进一步的初始化请求,如在655处所示。
图7描绘了根据本发明的一个或多个实施例的示例MFC记录700,其用于在IMT采集中从存储器采集数据内容。应当注意,所描绘的示例仅是一种实现,并且在其它实施例中,处理器105可以使用MFC记录700的不同配置。在一个或多个示例中,MFC记录700由LSU 114在每个提取数据的循环生成。MFC可以覆盖1或2个操作数。例如,在正常加载/ISU-ops的情况下,如果指令使用单个存储器访问,则只有1个操作数是有效的。在定序器操作的情况下,两个数据操作数是有效的,表示两次存储器访问。
在所示的示例中,MFC记录有64位,并且包括如图7所示的字段。应当注意,在其它实施例中,与所示出的相比,MFC记录700可以包括不同数量的位,以及不同的,更多或更少的字段。如图所示,MFC记录700包括线程标识符705,线程标识符705是正在写MFC/MFD记录的线程的唯一标识。MFC记录700还包括报告类型标识符710,其指示当前记录类型是MFC记录。MFC记录700还包括用于第一存储器数据的第一有效性指示符715。有效性指示器指示存储器数据内容是否有效并且是否可用于测试。
此外,MFC记录700包括操作数计数字段725,其指示第一存储器数据与指令中的哪个操作数相关联。例如,如果第一存储器数据与指令中的第一操作数相关联,则操作数计数字段725具有第一值,例如0,而且相反地,如果第一存储器数据与指令中的第二操作数相关联,则操作数计数字段725具有第二值,例如1。MFC记录700还包含第一存储器数据信息字段730,其包括关于第一存储器数据的信息,例如对齐,长度等。MFC记录700还包含第一地址字段735,其包括第一存储器数据的存储器地址。在一个或多个示例中,字段735仅包括存储器地址的几个预定位,例如最后8位,最后9位。该地址和OPC1用于从操作数记录(DESTOP/SRCOP)确定/验证完整操作数地址,这些记录是具有完整操作数地址的单独记录。
应当注意的是,所描绘的MFC记录700具有针对两个操作数的信息以在具有两个提取操作数的指令的情况下工作。如果指令只有一个操作数,则MFC记录700只有一个有效的操作数信息。例如,对于RISC处理器,MFC记录700仅具有一个操作数信息。
在这种情况下,MFC记录700还包括与第二存储器数据相对应的类似字段。例如,MFC记录700包括指示第二操作数的有效性的有效性指示符字段720,以及指示第二存储器数据与指令中的哪个操作数相关联的操作数计数字段745。例如,如果第二存储器数据与指令中的第一操作数相关联,则操作数计数字段725具有第一值,例如0,而且相反地,如果第一存储器数据与指令中的第二操作数相关联,则操作数计数字段745具有第二值,例如1。MFC记录700还包含第二存储器数据信息字段750,其包括关于第一存储器数据的信息,例如对齐,长度等。MFC记录700还包含第二地址字段755,其包括第二存储器数据的存储器地址。在一个或多个示例中,字段755仅包括存储器地址的几个预定位,例如最后8位,最后9位。
如果操作数提取多于8个字节,则写多个MFC记录。例如,在z
Figure BDA0002271059720000181
中,操作数最多可以提取256个字节,这需要如上所述的32个MFC/MFD记录。如果指令提取两个操作数,则可以有32个MFC记录(覆盖这两个操作数),随后是64个MFD记录。
在一个或多个示例中,针对相同操作数的所有MFC记录被连续地写入。如何从MFC记录中识别MFD记录取决于实现方式。在一个或多个示例中,所有MFC记录被连续写入并且后面跟着所有MFD记录,并且当MFC记录具有两个有效操作数时,MFD记录是交错的。有效操作数信息的总数应与MFD记录的数量相同。一旦识别出相应的MFD记录,就使用相应MFC记录中的对齐和数据长度信息来确定MFD记录中的实际数据。根据MFC和MFD记录的排列,解析和确定信息在其它实现方式中可以变化。
图8示出了根据本发明的一个或多个实施例的示例MFD记录800。应当注意,在其它示例中,与所描绘的相比,MFC记录700可以包括不同数量的位以及不同,更多或更少的字段。MFD记录包括MFC记录700中指定的存储器地址的内容,例如字段735和755。
因此,所采集的IMT数据包括与系统事件有关的跟踪数据。在一个或多个示例中,处理器105从处理器105中的位置接收与系统事件有关的指令,例如TLB,IFU,执行单元等。生成IMT数据还包括确定记录指令信息所需的最小数量的跟踪段记录。处理器105创建包括跟踪段记录的数量的跟踪段表,跟踪段记录的数量包括至少一个指令记录。在一个或多个示例中,处理器105还从跟踪段记录生成部分跟踪,部分跟踪具有比针对指令生成的跟踪更少数量的数据记录。生成IMT数据的附加细节在专利号为No.7,975,182的美国专利中提供,其内容结合于此。
此外,本文的技术方案通过经由受控测试套件生成跟踪和跟踪段的第一实例,从跟踪生成跟踪段的第二实例,并比较第一实例和第二个实例,促进验证跟踪段表。
例如,返回参考图5,描述了根据本发明的一个或多个实施例的针对用于从所采集的IMT生成CAP测试用例的方法的数据流。可以使用现有的基础设施和工具生成CAP测试用例。例如,利用IMT中可用的架构寄存器和存储器的初始内容,后处理程序通过解析所采集的IMT来创建CMD文件。CMD文件在诸如IMT测试系统的测试套件(可以是专有内部系统)上运行,并且生成CATS跟踪。CATS跟踪被馈入到诸如现有CAP测试用例生成工具等工具中,以生成CAT测试用例。使用如本文所述生成的改进的IMT的该方法避免了通过从IMT直接生成CAP测试用例来开发单独的参考模型所需的实质性努力和复杂性。
技术方案还包括验证通过本文描述的IMT采集技术采集的存储器数据内容的方法。图9示出了根据本发明的一个或多个实施例的用于验证IMT采集记录的示例方法的流程图。在待评估/测试的处理器可用之前,因此在IMT 520可用之前,将验证IMT采集记录。例如,使用AVP文件从内核模拟器生成伪IMT 490。AVP文件已预先存在。AVP文件是体系结构验证程序文件,其具有架构寄存器的初始内容和针对用于测试用例的指令和数据的存储器内容,该测试用例用于通过在诸如VHDL模型的模拟器上运行而进行的硬件验证。CMD文件是一个命令文件,其内容与AVP文件相同,但格式不同,用于在测试套件上运行,诸如IMT测试系统,诸如专有内部系统。
在一个或多个示例中,使用扩展IMT模式生成伪IMT 490。内核模拟器是模拟处理器105和/或正在测试的硬件组件的模型,例如,VHDL模拟模型。由模拟器采集的IMT被称为伪IMT 490。此外,该方法包括通过后处理程序从伪IMT 490生成新的AVP文件。该方法还包括比较原始和新的AVP文件以查看寄存器/存储器内容上的任何不匹配。例如,为了比较AVP文件,两个AVP文件在内核模拟器上执行,并且比较来自两个执行的响应。使用伪IMT 490生成的预先存在的AVP文件和新AVP文件在非IMT模式下在内核模拟器中执行,以比较它们。在一个或多个示例中,CMD文件510从伪IMT 490生成并在IMT测试系统上运行,例如专有内部系统或任何其它测试套件,以调试可能未采用AVP比较或内核模拟器调试的任何问题。
参考图10,根据本发明的一个或多个实施例示出源操作数(系统区域)记录1000(SRCOP)。在一个实施例中,源操作数(系统区域)记录1000包括多个区域1005-1030。对应于位0-1的ID区域1005标识中央处理器。对应于位2-6的记录类型区域1010标识记录的类型。对于分支指令,对应于位7的分支(“B”)区域1018提供关于是否已经采用分支的指示符。对应于位8-18的区域1015未使用。对应于位19的标签区域1020被定义为“任何绝对”,其中值1表示任何非系统区域的加载/存储单元(LSU)的绝对地址,而值1表示系统区域的LSU。非零位区域1025包括对应于位20的非零值。对应于位21-63的地址区域1030提供源操作数地址信息。应当注意,在其它示例中,SRCOP 1000可以具有与以上示例中描绘的结构不同的结构。
参考图11,根据本发明的一个或多个实施例示出目的地操作数(系统区域)记录1100(DSTOP)。在一个实施例中,目的地操作数(系统区域)记录1100包括多个区域1105-1130。对应于位0-1的ID区域1105标识中央处理器。对应于位2-6的记录类型区域1110标识记录的类型。对应于位7-18的区域1115未被使用。对应于位19的标签区域1120被定义为“任何绝对”,其中值1表示任何非系统区域的加载/存储单元(LSU)的绝对地址,而值1表示系统区域的LSU。非零位区域1125包括对应于位20的非零值。对应于位21-63的地址区域1130提供目的地操作数地址信息。应当注意,在其它示例中,DSTOP 1100可以具有与以上示例中描绘的结构不同的结构。
因此,本文的技术方案有助于处理器改进采集IMT。IMT是硬件生成的跟踪,包含有关处理器内核(例如
Figure BDA0002271059720000201
内核)执行的指令的详细信息。IMT用于驱动性能模型或模拟模型,以帮助预测和验证未来系统的性能。IMT可以为多层和多分区基准提供跟踪,这些基准无法通过IMT测试系统(例如专有内部系统)进行模拟。通过实现这里描述的技术方案,所采集的IMT得到改进,并提供驱动序列测试用例所需的寄存器内容和参考存储器数据。
在理想的场景下,IMT采集在每一个断点处停止,并通过采集架构寄存器的初始内容再次启动。然而,这种IMT采集实现起来很昂贵,因为它需要硬件来监视/解码指令以识别导致断点的潜在指令。这里描述的技术方案通过在每K个指令上采集架构寄存器的初始内容来解决这样的技术问题。这样,如果在解析IMT期间在IMT中识别出断点,则可以停止生成测试用例,并且可以在IMT中提供架构寄存器的快照的下一个点开始下一个测试用例。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、存储器棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (25)

1.一种计算机实现的方法,包括:
针对处理器启动存储器内跟踪(IMT)数据采集,所述IMT数据是在指令流过所述处理器的执行流水线时收集的指令跟踪;以及
通过以下方式采集架构寄存器的内容:
将架构寄存器的所述内容存储到预定存储器位置;以及
使加载-存储单元(LSU)读取所述预定存储器位置的内容。
2.根据权利要求1所述的计算机实现的方法,其中,使所述LSU读取所述预定存储器位置的所述内容包括:在所述IMT数据采集中生成存储器提取控制记录和存储器提取数据记录。
3.根据权利要求1所述的计算机实现的方法,其中,响应于断点,采集所述架构寄存器的所述内容。
4.根据权利要求1所述的计算机实现的方法,其中,响应于所述IMT数据采集在扩展IMT模式下被初始化,采集架构寄存器的所述内容。
5.根据权利要求4所述的计算机实现的方法,其中,所述IMT数据采集包括所述指令的操作数的值。
6.根据权利要求5所述的计算机实现的方法,其中,使用存储器提取控制记录和存储器提取数据记录来采集操作数的值,并且使用源操作数记录或目的地操作数记录来采集所述操作数的地址。
7.根据权利要求2所述的计算机实现的方法,其中,所述存储器提取控制记录的结构基于所述处理器的类型。
8.根据权利要求1所述的计算机实现的方法,其中,在由所述处理器执行每个预定数量的指令之后采集所述架构寄存器的所述内容。
9.根据权利要求1所述的计算机实现的方法,所述处理器是第一处理器,并且所述方法还包括:
通过从所述IMT采集数据访问架构寄存器的所述内容,使用第二处理器执行由所述第一处理器使用所述IMT采集数据跟踪的指令。
10.根据权利要求1所述的计算机实现的方法,还包括:
通过从所述IMT采集数据访问架构寄存器的所述内容,使用模拟处理器执行由所述处理器使用所述IMT采集数据跟踪的指令。
11.根据权利要求1所述的计算机实现的方法,还包括:
在采集所述IMT数据之前,通过使用第一AVP文件生成伪IMT采集来验证IMT数据记录;
使用所述伪IMT生成第二AVP文件;以及
比较所述第一AVP文件和所述第二AVP文件。
12.一种系统,包括:
存储器;以及
与所述存储器耦接的处理器,所述处理器被配置为:
接收启动存储器内跟踪(IMT)数据采集的请求,所述IMT数据是在指令流过所述处理器的执行流水线时收集的指令跟踪;以及
通过以下方式在所述IMT数据中采集所述处理器的架构寄存器的内容:
将架构寄存器的所述内容存储到预定存储器位置;以及
使加载-存储单元(LSU)读取所述预定存储器位置的内容。
13.根据权利要求12所述的系统,其中,使所述LSU读取所述预定存储器位置的所述内容包括:在所采集的IMT数据中生成存储器提取控制记录和存储器提取数据记录。
14.根据权利要求12所述的系统,其中,响应于断点,采集所述架构寄存器的所述内容。
15.根据权利要求12所述的系统,其中,响应于所述IMT数据采集在扩展IMT模式下被初始化,采集架构寄存器的所述内容。
16.根据权利要求15所述的系统,其中,所述IMT数据采集包括所述指令的操作数的值。
17.根据权利要求16所述的系统,其中,使用存储器提取控制记录和存储器提取数据记录来采集操作数的值,并且使用源操作数记录或目的地操作数记录来采集所述操作数的地址。
18.根据权利要求12所述的系统,所述处理器是第一处理器,并且所述系统还包括:
第二处理器,其被配置为通过从所述IMT数据访问架构寄存器的所述内容,执行由所述第一处理器使用所述IMT数据跟踪的指令。
19.根据权利要求12所述的系统,还包括:
模拟处理器,其被配置为通过从所述IMT数据访问架构寄存器的所述内容,执行由所述处理器使用所述IMT数据跟踪的指令。
20.一种用于测试处理器的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,在所述计算机可读存储介质中体现程序指令,所述程序指令可由处理电路执行以使所述处理电路实现包括以下的方法:
针对处理器启动存储器内跟踪(IMT)数据采集,所述IMT数据是在指令流过所述处理器的执行流水线时收集的指令跟踪;以及
通过以下方式在所述IMT数据采集中采集所述处理器的架构寄存器的内容:
将架构寄存器的所述内容存储到预定存储器位置;以及
使加载-存储单元(LSU)读取所述预定存储器位置的内容。
21.根据权利要求20所述的计算机程序产品,其中,使所述LSU读取所述预定存储器位置的所述内容包括:在所述IMT数据采集中生成存储器提取控制记录和存储器提取数据记录。
22.根据权利要求20所述的计算机程序产品,其中,在由所述处理器执行每个预定数量的指令之后采集架构寄存器的所述内容。
23.根据权利要求20所述的计算机程序产品,所述处理器是第一处理器,并且所述方法还包括:
通过从所述IMT采集数据访问架构寄存器的所述内容,使用第二处理器执行由所述第一处理器使用所述IMT采集数据跟踪的指令。
24.一种用于测试处理器的装置,所述装置被配置为:
接收针对处理器启动存储器内跟踪(IMT)数据采集的请求,所述IMT数据是在指令流过所述处理器的执行流水线时收集的指令跟踪;
通过以下方式在所述IMT数据中采集所述处理器的架构寄存器的内容:
将所述架构寄存器的所述内容存储到预定存储器位置;以及
使加载-存储单元(LSU)读取所述预定存储器位置的内容;使用所采集的IMT数据生成测试序列,所述测试序列包括:来自所采集的IMT数据的指令和所述架构寄存器的所述内容;以及
使用第二处理器执行所述测试序列。
25.一种用于测试处理器的计算机实现的方法,所述方法包括:
针对处理器启动存储器内跟踪(IMT)数据采集,所述IMT数据是在指令流过所述处理器的执行流水线时收集的指令跟踪;
响应于所述IMT数据采集在扩展模式下启动,通过以下方式在IMT数据中采集所述处理器的架构寄存器的内容:
将所述架构寄存器的所述内容存储到预定存储器位置;以及
使加载-存储单元(LSU)读取所述预定存储器位置的内容;使用所采集的IMT数据生成测试序列,所述测试序列包括:来自所采集的IMT数据的所述指令,所述架构寄存器的所述内容,和操作数数据;以及
使用第二处理器执行所述测试序列。
CN201880031674.4A 2017-05-23 2018-05-21 生成和验证包括存储器数据内容的硬件指令跟踪 Active CN110651250B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/602,618 US10331446B2 (en) 2017-05-23 2017-05-23 Generating and verifying hardware instruction traces including memory data contents
US15/602,618 2017-05-23
PCT/IB2018/053567 WO2018215911A1 (en) 2017-05-23 2018-05-21 Generating and verifying hardware instruction traces including memory data contents

Publications (2)

Publication Number Publication Date
CN110651250A true CN110651250A (zh) 2020-01-03
CN110651250B CN110651250B (zh) 2023-05-05

Family

ID=64396434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880031674.4A Active CN110651250B (zh) 2017-05-23 2018-05-21 生成和验证包括存储器数据内容的硬件指令跟踪

Country Status (6)

Country Link
US (3) US10331446B2 (zh)
JP (1) JP6959995B2 (zh)
CN (1) CN110651250B (zh)
DE (1) DE112018001257T5 (zh)
GB (1) GB2576288B (zh)
WO (1) WO2018215911A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023148561A1 (en) * 2022-02-04 2023-08-10 International Business Machines Corporation In-memory trace with overlapping processing and logout

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents
CN111523283B (zh) * 2020-04-16 2023-05-26 北京百度网讯科技有限公司 一种验证处理器的方法、装置、电子设备及存储介质
CN114996167B (zh) * 2022-08-03 2022-11-01 成都星联芯通科技有限公司 一种测试用例管理方法、装置、存储介质及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US20060184836A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Method, apparatus, and computer program product in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
CN101151594A (zh) * 2005-03-30 2008-03-26 可递有限公司 在具有多个发送端口的处理器中准备指令群
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
CN101976187A (zh) * 2010-11-16 2011-02-16 广州迪庆电子科技有限公司 反编译过程中的堆栈跟踪方法、装置及反编译器
US20120096247A1 (en) * 2010-10-19 2012-04-19 Hee-Jin Ahn Reconfigurable processor and method for processing loop having memory dependency
JP2013171410A (ja) * 2012-02-20 2013-09-02 Fujitsu Ltd トレース結合装置及びプログラム
CN103679134A (zh) * 2013-09-09 2014-03-26 华中科技大学 一种对海目标红外成像识别装置
CN104067276A (zh) * 2012-01-19 2014-09-24 微软公司 客户机侧最小下载和模拟的页面导航特征

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282629B1 (en) * 1992-11-12 2001-08-28 Compaq Computer Corporation Pipelined processor for performing parallel instruction recording and register assigning
US5838692A (en) * 1996-11-14 1998-11-17 Hewlett-Packard Company System and method for extracting realtime debug signals from an integrated circuit
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6173395B1 (en) * 1998-08-17 2001-01-09 Advanced Micro Devices, Inc. Mechanism to determine actual code execution flow in a computer
US6530076B1 (en) * 1999-12-23 2003-03-04 Bull Hn Information Systems Inc. Data processing system processor dynamic selection of internal signal tracing
US7043668B1 (en) * 2001-06-29 2006-05-09 Mips Technologies, Inc. Optimized external trace formats
US7080289B2 (en) * 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
US20030135719A1 (en) 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
US20030135718A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7107585B2 (en) * 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US9207958B1 (en) * 2002-08-12 2015-12-08 Arm Finance Overseas Limited Virtual machine coprocessor for accelerating software execution
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
US7383428B2 (en) * 2003-09-11 2008-06-03 International Business Machines Corporation Method, apparatus and computer program product for implementing atomic data tracing
US7284153B2 (en) * 2003-11-17 2007-10-16 International Business Machines Corporation Apparatus, method, and system for logging diagnostic information
WO2005109203A2 (en) * 2004-05-12 2005-11-17 Koninklijke Philips Electronics N.V. Data processing system with trace co-processor
US7421619B2 (en) 2005-02-11 2008-09-02 International Business Machines Corporation Method in a processor for performing in-memory tracing using existing communication paths
US7987342B1 (en) * 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7444499B2 (en) 2006-03-28 2008-10-28 Sun Microsystems, Inc. Method and system for trace generation using memory index hashing
US20080082801A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Apparatus and method for tracing instructions with simplified instruction state descriptors
US8527959B2 (en) 2007-12-07 2013-09-03 International Business Machines Corporation Binary programmable method for application performance data collection
US7975182B2 (en) 2008-02-25 2011-07-05 International Business Machines Corporation Method, system and computer program product for generating trace data
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors
US8438547B2 (en) * 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8626993B2 (en) 2011-11-18 2014-01-07 Apple Inc. Method for tracking memory usages of a data processing system
US9124481B2 (en) 2012-05-29 2015-09-01 Alcatel Lucent Custom diameter attribute implementers
CN102789401B (zh) 2012-07-12 2014-11-05 北京泛华恒兴科技有限公司 基于柔性测试技术的测试流程控制方法和装置
US9703675B2 (en) * 2014-08-11 2017-07-11 Microsoft Technology Licensing, Llc Structured logging and instrumentation framework
US9372947B1 (en) 2014-09-29 2016-06-21 Cadence Design Systems, Inc. Compacting trace data generated by emulation processors during emulation of a circuit design
US9535820B2 (en) * 2015-03-27 2017-01-03 Intel Corporation Technologies for application validation in persistent memory systems
US10546075B2 (en) * 2015-05-15 2020-01-28 Futurewei Technologies, Inc. System and method for a synthetic trace model
EP3338192A1 (en) 2015-08-18 2018-06-27 Telefonaktiebolaget LM Ericsson (PUBL) Method for observing software execution, debug host and debug target
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US20060184836A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Method, apparatus, and computer program product in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
CN101151594A (zh) * 2005-03-30 2008-03-26 可递有限公司 在具有多个发送端口的处理器中准备指令群
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
CN101482810A (zh) * 2007-12-26 2009-07-15 英特尔公司 用于处理矢量数据的方法、设备和指令
CN103500082A (zh) * 2007-12-26 2014-01-08 英特尔公司 用于处理矢量数据的方法、设备和指令
US20120096247A1 (en) * 2010-10-19 2012-04-19 Hee-Jin Ahn Reconfigurable processor and method for processing loop having memory dependency
CN101976187A (zh) * 2010-11-16 2011-02-16 广州迪庆电子科技有限公司 反编译过程中的堆栈跟踪方法、装置及反编译器
CN104067276A (zh) * 2012-01-19 2014-09-24 微软公司 客户机侧最小下载和模拟的页面导航特征
JP2013171410A (ja) * 2012-02-20 2013-09-02 Fujitsu Ltd トレース結合装置及びプログラム
CN103679134A (zh) * 2013-09-09 2014-03-26 华中科技大学 一种对海目标红外成像识别装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
沈秀红等: "基于基地址寄存器映射的数据缓存研究", 《计算机工程》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023148561A1 (en) * 2022-02-04 2023-08-10 International Business Machines Corporation In-memory trace with overlapping processing and logout
US11907724B2 (en) 2022-02-04 2024-02-20 International Business Machines Corporation In-memory trace with overlapping processing and logout

Also Published As

Publication number Publication date
GB2576288A (en) 2020-02-12
US10331446B2 (en) 2019-06-25
US20180341480A1 (en) 2018-11-29
GB201917044D0 (en) 2020-01-08
DE112018001257T5 (de) 2019-12-12
US10824426B2 (en) 2020-11-03
CN110651250B (zh) 2023-05-05
JP2020522784A (ja) 2020-07-30
WO2018215911A1 (en) 2018-11-29
US20180341481A1 (en) 2018-11-29
US10496405B2 (en) 2019-12-03
JP6959995B2 (ja) 2021-11-05
GB2576288B (en) 2022-09-28
US20190235864A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
Cui et al. {REPT}: Reverse debugging of failures in deployed software
US10824426B2 (en) Generating and verifying hardware instruction traces including memory data contents
US10509713B2 (en) Observation by a debug host with memory model and timing offset calculation between instruction and data traces of software execution carried on in a debug target having a main memory and a cache arrangement
US8521499B1 (en) Run-time switching for simulation with dynamic run-time accuracy adjustment
US8352713B2 (en) Debug circuit comparing processor instruction set operating mode
US9471727B2 (en) Simulation with dynamic run-time accuracy adjustment
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
US9280346B2 (en) Run-time instrumentation reporting
US20130246741A1 (en) Run-time instrumentation directed sampling
Payer et al. Lightweight memory tracing
Nanavati et al. Whose cache line is it anyway? operating system support for live detection and repair of false sharing
Fang et al. Transformer: A functional-driven cycle-accurate multicore simulator
US9111034B2 (en) Testing of run-time instrumentation
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
US7228266B1 (en) Instruction processor emulator having separate operand and op-code interfaces
Clarke et al. Implementation aspects of a SPARC V9 complete machine simulator
US11907724B2 (en) In-memory trace with overlapping processing and logout
Teodorescu et al. Prototyping architectural support for program rollback using FPGAs
Ravishankar et al. pcache: An observable l1 data cache model for fpga prototyping of embedded systems
Wronka et al. Embedded software debug in simulation and emulation environments for interface IP
Dreesen et al. A synchronization method for register traces of pipelined processors
Julino Lightweight introspection for full system simulations
Burris Instrumented architectural level emulation technology
Goldstein et al. ePASS-a software-based POWER simulator
Hazelwood Architectural Exploration

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