CN112579169B - 处理器追踪流的生成方法及装置 - Google Patents

处理器追踪流的生成方法及装置 Download PDF

Info

Publication number
CN112579169B
CN112579169B CN201910924140.0A CN201910924140A CN112579169B CN 112579169 B CN112579169 B CN 112579169B CN 201910924140 A CN201910924140 A CN 201910924140A CN 112579169 B CN112579169 B CN 112579169B
Authority
CN
China
Prior art keywords
information
processor
loop body
operand
instruction loop
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
CN201910924140.0A
Other languages
English (en)
Other versions
CN112579169A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910924140.0A priority Critical patent/CN112579169B/zh
Publication of CN112579169A publication Critical patent/CN112579169A/zh
Application granted granted Critical
Publication of CN112579169B publication Critical patent/CN112579169B/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Landscapes

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

Abstract

本发明公开了一种处理器追踪流的生成方法,处理器追踪流包括顺序生成的多项追踪信息,该方法包括步骤:在处理器首次执行指令循环体时,生成基础追踪信息,基础追踪信息适于记录处理器首次执行指令循环体时的运行信息;在处理器再次执行指令循环体时,生成增量追踪信息,增量追踪信息适于记录处理器再次执行指令循环体时的运行信息,且增量追踪信息基于基础追踪信息生成。本发明一并公开了相应的装置。

Description

处理器追踪流的生成方法及装置
技术领域
本发明涉及处理器追踪技术领域,尤其涉及一种针对指令循环体的处理器追踪流的生成方法及装置。
背景技术
处理器追踪技术是一种非侵入地实时记录处理器运行信息的技术,其可以在程序运行期间,收集处理器产生的控制流、内存访问、外设中断等信息,为程序调试和性能优化提供数据基础。实时记录处理器运行信息的数据流即为追踪流。追踪信息是追踪流的基本组成单位,每项追踪信息对应记录特定类型的处理器运行信息。
在许多程序中,为了实现特定功能,需要对相同的处理步骤重复执行多次。相应地,在处理器中,经常需要重复执行一段由一个或多个指令构成的指令片段,本领域将这种需要重复执行的指令片段称为指令循环体。处理器执行指令循环体时,所生成的追踪流的数据量很大,且存在较多的冗余信息,为追踪流的传输及存储带来较大压力。
因此,需要提供一种新的追踪流生成方案,以优化处理器执行指令循环体时的追踪流,减少追踪流的数据量。
发明内容
为此,本发明提供一种处理器追踪流的生成方法及装置,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种处理器追踪流的生成方法,追踪流包括顺序生成的多项追踪信息,该方法包括步骤:在处理器首次执行指令循环体时,生成基础追踪信息,基础追踪信息适于记录处理器首次执行指令循环体时的运行信息;在处理器再次执行指令循环体时,生成增量追踪信息,增量追踪信息适于记录处理器再次执行指令循环体时的运行信息,且增量追踪信息基于基础追踪信息生成。
可选地,在根据本发明的处理器追踪流的生成方法中,运行信息包括:指令循环体的入口地址、执行指令循环体中的指令涉及的操作地址和操作数;其中,入口地址为指令循环体中第一条指令的地址信息。
可选地,在根据本发明的处理器追踪流的生成方法中,基础追踪信息包括循环起始信息,循环起始信息包括入口地址信息。
可选地,在根据本发明的处理器追踪流的生成方法中,增量追踪信息包括用于记录指令循环体的连续执行次数的计数信息。
可选地,在根据本发明的处理器追踪流的生成方法中,生成增量追踪信息的步骤包括:在处理器第二次执行指令循环体时,生成计数信息,并初始化计数信息的值。
可选地,在根据本发明的处理器追踪流的生成方法中,生成增量追踪信息的步骤还包括:在处理器第三次及后续每次执行指令循环体时,将计数信息的值加一。
可选地,在根据本发明的处理器追踪流的生成方法中,基础追踪信息还包括基址信息和第一操作数信息;基址信息包括处理器首次执行指令循环体时的操作地址;第一操作数信息包括处理器首次执行指令循环体时的操作数;增量追踪信息包括偏移量信息和第二操作数信息;偏移量信息包括处理器相邻两次执行指令循环体时的操作地址的差值;第二操作数信息包括处理器再次执行指令循环体时的操作数。
可选地,在根据本发明的处理器追踪流的生成方法中,生成增量追踪信息的步骤包括:在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的操作地址与首次执行指令循环体时的操作地址的差值;以及生成包含本次的操作数的第二操作数信息。
可选地,在根据本发明的处理器追踪流的生成方法中,生成增量追踪信息的步骤还包括:在处理器第三次及后续每次执行指令循环体时,生成包含本次的操作数的第二操作数信息。
可选地,在根据本发明的处理器追踪流的生成方法中,基址信息包括加载基址信息和存储基址信息,加载基址信息包括处理器首次执行指令循环体时的加载操作地址,存储基址信息包括处理器首次执行指令循环体时的存储操作地址;第一操作数信息包括第一加载数信息和第一存储数信息,第一加载数信息包括处理器首次执行指令循环体时的加载操作数,第一存储数信息包括处理器首次执行指令循环体时的存储操作数。
可选地,在根据本发明的处理器追踪流的生成方法中,第二操作数信息包括第二加载数信息和第二存储数信息,第二加载数信息包括处理器再次执行指令循环体时的加载操作数,第二存储数信息包括处理器再次执行指令循环体时的存储操作数。
可选地,在根据本发明的处理器追踪流的生成方法中,在指令循环体终止执行时,生成循环结束信息。
可选地,在根据本发明的处理器追踪流的生成方法中,循环起始信息、基址信息、第一操作数信息、计数信息、偏移量信息、循环结束信息中还包括用于标识追踪信息类型的类型标识符。
根据本发明的第二个方面,提供一种处理器追踪流的生成方法,追踪流包括顺序生成的多项追踪信息,该方法包括步骤:在处理器首次执行指令循环体时,生成循环起始信息,循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息;在处理器再次执行指令循环体时,生成计数信息,计数信息用于记录指令循环体的连续执行次数。
根据本发明的第三个方面,提供一种处理器追踪流的生成方法,追踪流包括顺序生成的多项追踪信息,该方法包括步骤:在处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息;其中循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息;加载基址信息包括处理器首次执行指令循环体时的加载操作地址;第一加载数信息包括处理器首次执行指令循环体时的加载操作数;存储基址信息包括处理器首次执行指令循环体时的存储操作地址;第一存储数信息包括处理器首次执行指令循环体时的存储操作数;其中,加载操作数和存储操作数相同;在处理器再次执行指令循环体时,生成偏移量信息和第二加载数信息;其中,偏移量信息包括处理器相邻两次执行指令循环体时的加载操作地址的差值;第二加载数信息包括处理器再次执行指令循环体时的加载操作数。
根据本发明的第四个方面,提供一种处理器追踪流的生成方法,追踪流包括顺序生成的多项追踪信息,该方法包括步骤:当处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息;其中循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息;加载基址信息包括处理器首次执行指令循环体时的加载操作地址;第一加载数信息包括处理器首次执行指令循环体时的加载操作数;存储基址信息包括处理器首次执行指令循环体时的存储操作地址;第一存储数信息包括处理器首次执行指令循环体时的存储操作数;其中,加载操作数和存储操作数不同;当处理器再次执行指令循环体时,生成偏移量信息、第二加载数信息和第二存储数信息;偏移量信息包括处理器相邻两次执行指令循环体时的加载操作地址的差值;第二加载数信息包括处理器再次执行指令循环体时的加载操作数;第二存储数信息包括处理器再次执行指令循环体时的存储操作数。
根据本发明的第五个方面,提供一种追踪单元,驻留于处理器中,适于执行如上任一项所述的处理器追踪流的生成方法,以生成处理器的追踪流。
根据本发明的第六个方面,提供一种处理器,包括如上所述的追踪单元。
根据本发明的第七个方面,提供一种追踪装置,与处理器耦接,适于执行如上任一项所述的处理器追踪流的生成方法,以生成处理器的追踪流。
根据本发明的第八个方面,提供一种片上系统,包括:处理器;以及如上所述的追踪装置。
根据本发明的第九个方面,提供一种智能设备,包括如上所述的片上系统。
根据本发明的第十个方面,提供一种软件模拟器,驻留于计算设备中,包括:模拟模块,适于模拟处理器执行指令循环体;以及追踪模块,适于执行如上任一项所述的处理器追踪流的生成方法,以生成模拟模块所模拟的处理器的追踪流。
根据本发明的第十一个方面,提供一种计算设备,包括:至少一个处理器;以及存储有程序指令的存储器,程序指令包括如上所述的软件模拟器。
根据本发明的第十二个方面,提供一种测试系统,包括:终端设备;以及与终端设备通信连接的计算设备,计算设备包括如上所述的软件模拟器;
其中,该计算设备适于:接收终端设备发来的测试请求,基于测试请求,调用软件模拟器的模拟模块来模拟处理器执行指令循环体,以及调用软件模拟器的追踪模块来执行如上任一项所述的处理器追踪信息的生成方法,以生成模拟模块所模拟的处理器的追踪流。
根据本发明的技术方案,在处理器首次执行指令循环体时,生成基础追踪信息,基础追踪信息适于记录处理器首次执行指令循环体时的运行信息。在处理器再次执行该指令循环体时,生成增量追踪信息,增量追踪信息适于记录处理器再次执行该指令循环体时的运行信息,且增量追踪信息基于基础追踪信息生成。增量追踪信息不是以全量的形式记录处理器再次执行指令循环体时的运行信息,而是以增量的形式,仅记录与基础追踪信息记载的运行信息存在差异的运行信息,从而避免追踪流中出现冗余信息,大大降低了追踪流的数据量。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的处理器100的示意图;
图2示出了根据本发明一个实施例的片上系统200的示意图;
图3示出了根据本发明一个实施例的计算设备300的示意图;
图4示出了根据本发明一个实施例的测试系统400的示意图;
图5示出了根据本发明一个实施例的处理器追踪流的生成方法500的流程图;
图6A、6B分别示出了根据本发明第一个实施例的未采用本发明的方法500时、采用了本发明的方法500时所生成的追踪流的示意图;
图7A、7B分别示出了根据本发明第二个实施例的未采用本发明的方法500时、采用了本发明的方法500时所生成的追踪流的示意图;
图8A、8B分别示出了根据本发明第三个实施例的未采用本发明的方法500时、采用了本发明的方法500时所生成的追踪流的示意图;
图9A~9C分别示出了根据本发明第四个实施例的未采用本发明的方法500时、采用了本发明的方法500时所生成的追踪流的示意图;
图10~图12分别示出了本发明三个实施例的处理器追踪流的生成方法1000~1200的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了减少针对指令循环体的追踪流的数据量,本发明提供了一种处理器追踪流的生成方法。该方法可以由处理器中的追踪单元执行,或者由与处理器耦接的追踪装置执行,或者由驻留于计算设备中的软件模拟器执行。
图1示出了根据本发明一个实施例的处理器100的示意图。如图1所示,处理器100包括高速缓存110、执行单元120、寄存器组130和追踪单元140。追踪单元140为用于生成处理器追踪流的电路,其例如可以是由比较电路、计数电路等组成的集成电路模块,但不限于此。
存储器150与处理器100耦接。存储器150例如可以是只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)等,但不限于此。执行单元120可以从高速缓存110、存储器120或其他源获取指令并执行,以实现特定功能。执行单元120在执行指令的过程中,从寄存器组130、高速缓存110和/或存储器150接收数据输入并向它们生成数据输出。
在一些情况中,执行单元120从高速缓存110或存储器120中获取指令循环体,并重复执行该指令循环体。在执行单元120执行指令循环体的过程中,追踪单元140可以追踪处理器100的运行信息,执行本发明的处理器追踪流的生成方法,以生成优化后的、包含数据量较少的追踪流。
需要说明的是,为了使附图更加简洁,便于明确处理器100和追踪单元140的连接关系,图1仅示出了处理器中的部分结构,省略了处理器中的其他结构。本领域技术人员可以理解,除了图1中所示的结构外,处理器100还包括其他结构,例如取指令单元、解码单元等。此外,图1中所示的结构还可以进一步进行划分和合并,例如,高速缓存110可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合;寄存器组130进一步包括通用寄存器、标志寄存器、段寄存器;等。本发明对处理器100的具体结构不做限制,任意包括追踪单元的处理器均在本发明的保护范围之列。
图2示出了根据本发明一个实施例的片上系统((SoC,System on Chip))200的流程图。如图2所示,片上系统200包括处理器210和追踪装置220,处理器210和追踪装置220耦接。处理器210获取指令循环体并执行,在处理器执行指令循环体的过程中,追踪装置220追踪处理器210的运行信息,执行本发明的处理器追踪流的生成方法,以生成优化后的、包含数据量较少的追踪流。
需要说明的是,为了使附图更加简洁,便于明确处理器210和追踪装置220的连接关系,图2中仅示出了处理器210和追踪装置220,省略了片上系统中的其他结构。本领域技术人员可以理解,除了处理器210和追踪装置220之外,片上系统200中还包括其他结构,例如存储器、总线控制器、用于与外部输入输出设备进行耦接的接口等。本发明对于片上系统所包括的其他结构的种类、数量以及连接关系等均不做限制,任意包括相互耦接的处理器和追踪装置的片上系统均在本发明的保护范围之列。
另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
图3示出了根据本发明一个实施例的计算设备300的示意图。如图3所示,计算设备300包括处理器310和存储器320。存储器320中存储有程序指令,程序指令包括软件模拟器330。
如图3所示,软件模拟器330包括模拟模块332和追踪模块334。模拟模块332适于模拟处理器执行指令的过程,以便于对处理器进行硬件特征验证、以及对处理器软件进行调试等。本领域技术人员可以理解,模拟模块332所模拟的处理器是处于开发过程中的、待调试的处理器,而不是计算设备300的处理器310。在本发明的实施例中,模拟模块332适于模拟处理器执行指令循环体的过程,追踪模块334适于执行本发明的处理器追踪流的生成方法,以生成模拟模块332所模拟的处理器的追踪流。
需要说明的是,为了使附图更加简洁,便于明确计算设备300、软件模拟器330以及追踪模块334的关系,图3中仅示出了处理器310和存储器320,省略了计算设备中的其他结构;并且,图3中仅示出了模拟模块332和追踪模块334,省略了软件模拟器中的其他模块。本领域技术人员可以理解,除了处理器310和存储器320之外,计算设备300还包括诸如存储器总线、输入输出设备等其他结构;除了模拟模块332和追踪模块334之外,软件模拟器330还包括诸如调试模块、追踪流解析模块等其他模块。本发明对于计算设备300以及软件模拟器330的具体结构不做限制,任意包括追踪模块的软件模拟器、以及存储器中包括软件模拟器的计算设备均在本发明的保护范围之列。
上面描述的计算设备300可以是任意具有存储及运算能力的设备。
在一些实施例中,计算设备300为位于用户侧的设备,其例如可以是桌面计算机、笔记本计算机等个人配置的计算机,也可以是手机、平板电脑、智能可穿戴设备等移动终端,还可以是智能音箱、智能空调、智能门禁、车载设备等IoT设备,但不限于此。
在该场景中,用户可以通过诸如鼠标、键盘、触摸屏、显示器等输入输出设备来与计算设备300直接进行交互。用户可以通过与计算设备300进行交互操作,来启动软件模拟器330的模拟调试功能,使软件模拟器330的模拟模块332模拟处理器执行指令,例如模拟处理器执行指令循环体。在模拟模块332模拟处理器执行指令循环体的过程中,追踪模块334可以执行本发明的处理器追踪流的生成方法,生成模拟模块332所模拟的处理器的追踪流。
在另一些实施例中,计算设备300为用户不可直接触及的设备,例如云服务器、远程计算机等,但不限于此。在该场景中,用户可以通过与计算设备300通信连接的本地终端设备来启动计算设备300中的软件模拟器330,采用软件模拟器330来模拟处理器执行指令的过程,以实现对处理器的远程模拟测试。这时,本地终端设备与计算设备300组成远程测试系统400。
图4示出了根据本发明一个实施例的测试系统400的示意图。如图4所示,测试系统400包括位于用户侧的终端设备410和远处的计算设备300。终端设备410例如可以是个人计算机、手机、平板电脑、IoT设备等,但不限于此。计算设备300例如可以是云服务器,但不限于此。计算设备300中部署有前述软件模拟器330,当计算设备300实现为云服务器时,软件模拟器330可以实现为部署于云服务器中的计算实例。
终端设备410与计算设备300通信连接。用户可以在终端设备410上登录特定的远程测试应用(App)或在浏览器中访问特定的网页,并且通过在特定的应用或特定的网页中进行操作,来向计算设备300发送测试请求,以启动处理器的远程模拟测试过程。计算设备300接收终端设备410发来的测试请求,响应于该测试请求,调用软件模拟器330的模拟模块332来模拟处理器执行指令的过程,同时,计算设备330也调用软件模拟器330的追踪模块334,追踪模块334在模拟模块332模拟处理器执行指令的过程中,实时记录该模拟的处理器的运行信息,以生成该模拟的处理器的追踪流。在本发明的实施例中,模拟模块332模拟处理器所执行的指令包括指令循环体,即,响应于终端设备410发来的测试请求,计算设备300调用软件模拟器330的模拟模块332来模拟处理器执行指令循环体。在这种情形下,软件模拟器330的追踪模块334可以执行本发明的处理器追踪流的生成方法,以生成优化后的、包含数据量较少的追踪流。
需要说明的是,尽管图4所示的测试系统400仅包括一个终端设备410和一个计算设备300,但本领域技术人员可以理解,在实践中,测试系统400可以包括任意数量的终端设备410和计算设备300,本发明对测试系统所包括的终端设备和计算设备的数量均不作限制。例如,在一些实施例中,测试系统400中包括多个终端设备410和多个计算设备300,每个计算设备300中可以部署任意数量个软件模拟器330。用户可以在终端设备410上进行操作,从多个计算设备所部署的多个软件模拟器中选择一个或多个,来进行处理器的远程模拟测试。前述追踪单元140、追踪装置220、追踪模块334均适于执行本发明的处理器追踪流的生成方法。
图5示出了根据本发明一个实施例的处理器追踪流的生成方法500的流程图,追踪流包括顺序生成的多项追踪信息。如图5所示,方法500始于步骤S510。
在步骤S510中,在处理器首次执行指令循环体时,生成基础追踪信息,基础追踪信息适于记录处理器首次执行指令循环体时的运行信息。
运行信息为能够表征处理器运行情况的信息。根据一种实施例,运行信息包括指令循环体的入口地址,以及执行指令循环体中的指令涉及的操作地址和操作数。指令循环体由顺序执行的至少一条指令组成,指令循环体的入口地址为指令循环体中第一条指令的地址信息(通常为内存地址)。操作数为指令循环体中的指令所要操作的数据,操作地址为操作数所在的地址。根据一种实施例,操作数包括加载操作数和存储操作数,操作地址包括加载操作地址和存储操作地址。例如,指令循环体中的指令可能需要从加载操作地址中读取加载操作数,对加载操作数进行某种处理,得到存储操作数,随后将存储操作数存储至存储操作地址。
本领域技术人员可以理解,指令循环体的入口地址、操作地址和操作数是运行信息的几个示例,但运行信息不限于入口地址、操作地址和操作数。除了入口地址、操作地址、操作数之外,运行信息还包括诸如中断信息、进程切换信息、控制寄存器读写信息等信息项目,本发明对运行信息所包括的具体内容不做限制。
在本发明的实施例中,基础追踪信息用于记录处理器首次执行指令循环体时的运行信息。根据所记录的运行信息的不同,基础追踪信息被划分为多种类型,每一类型的基础追踪信息用于记录特定类型的处理器运行信息。
根据一种实施例,基础追踪信息包括循环起始信息、基址信息和第一操作数信息。循环起始信息包括指令循环体的入口地址信息。基址信息包括处理器首次执行指令循环体时的操作地址(通常为内存地址)。第一操作数信息包括处理器首次执行指令循环体时的操作数。
在处理器首次执行指令循环体时,所生成的基础追踪信息的数量以及类型根据指令循环体中的指令的具体内容来确定。
根据一种实施例,指令循环体为寄存器变量自增程序等不涉及内存操作的程序。寄存器变量自增程序中的指令用于指示存储于寄存器中的某一个或某几个变量进行自增,而不涉及对内存操作地址和操作数的操作。当处理器首次执行这种指令循环体时,仅生成包括入口地址信息的循环起始信息,不会生成用于记录操作地址的基址信息,也不会生成用于记录操作数的第一操作数信息(因为处理器执行该指令循环体时不涉及操作地址和操作数)。
根据另一种实施例,指令循环体为内存拷贝程序(将源地址中的数据拷贝至目标地址)、内存修改程序(将源地址中的数据做一定处理后,存储至目标地址)等涉及内存操作的程序。这种指令循环体与寄存器变量自增指令循环体的区别在于,这种指令循环体需要对内存中的数据进行操作,即涉及操作地址和操作数。在处理器首次执行这种指令循环体时,首先生成包括入口地址信息的循环起始信息。随后,随着处理器从源地址获取操作数以及向目标地址中存储操作数,将生成用于记录操作地址的基址信息和用于记录操作数的第一操作数信息。需要说明的是,在处理器一次执行指令循环体的过程中,可能涉及多个操作地址以及多个操作数,相应地,可以对应生成多个基址信息和多个第一操作数信息。
根据一种实施例,基址信息进一步包括加载基址信息和存储基址信息。加载基址信息包括处理器首次执行指令循环体时的加载操作地址,存储基址信息包括处理器首次执行指令循环体时的存储操作地址。相应地,第一操作数信息包括第一加载数信息和第一存储数信息,第一加载数信息包括处理器首次执行指令循环体时的加载操作数,第一存储数信息包括处理器首次执行指令循环体时的存储操作数。
例如,当处理器首次执行指令循环体时,首先生成包括入口地址信息的循环起始信息。随后,随着处理器从加载操作地址获取加载操作数以及向存储操作地址中存储存储操作数,将相应生成加载基址信息、第一加载数信息和存储基址信息、第一存储数信息。需要说明的是,在处理器一次执行指令循环体的过程中,可能涉及多个加载操作地址、多个加载操作数、多个存储操作地址和多个存储操作数,相应地,可以对应生成多个加载基址信息、多个第一加载数信息、多个存储基址信息、多个第一存储数信息。
根据一种实施例,基础追踪信息中还包括用于标识追踪信息类型的类型标识符。本发明对各类型的基础追踪信息所对应的类型标识符不做限制,只要其能够对不同类型的基础追踪信息进行区分即可。根据一种实施例,类型标识符可以定义为长度为1个字节的数值。例如,定义循环起始信息的类型标识符为0x5,加载基址信息的类型标识符为0x40,存储基址信息的类型标识符为0x41,第一操作数信息的类型标识符为0x42。至于第一操作数信息具体是第一加载数信息还是第一存储数信息,则由第一操作数信息之前的基址信息的类型来确定。若第一操作数信息之前的基址信息为加载基址信息,则该第一操作数信息为第一加载数信息;若第一操作数信息之前的基址信息为存储基址信息,则该第一操作数信息为第一存储数信息。
基于以上定义的各基础追踪信息的类型标识符,以下给出处理器首次执行指令循环体时,生成的追踪流的一个示例:
如上表所示,在处理器首次执行指令循环体时,生成的追踪流中包括5个基础追踪信息。第一个基础追踪信息的类型标识符为0x5,表明这是一个循环起始信息,相应地,该追踪信息中记录的运行信息为指令循环体的入口地址。第二个基础追踪信息的类型标识符为0x40,表明这是一个加载基址信息,相应地,该追踪信息中记录的运行信息为首次执行指令循环体时的加载操作地址。第三个基础追踪信息的类型标识符为0x42,表明这是一个第一操作数信息,且由于该追踪信息位于加载基址信息之后,因此该追踪信息为第一加载数信息,相应地,该追踪信息中记录的运行信息为首次执行指令循环体时的加载操作数。第四个基础追踪信息的类型标识符为0x41,表明这是一个存储基址信息,相应地,该追踪信息中记录的运行信息为首次执行指令循环体时的存储操作地址。第五个基础追踪信息的类型标识符为0x42,表明这是一个第一操作数信息,且由于该追踪信息位于存储基址信息之后,因此该追踪信息为第一存储数信息,相应地,该追踪信息中记录的运行信息为首次执行指令循环体时的存储操作数。
在步骤S510生成用于记录处理器首次执行指令循环体时的运行信息的基础追踪信息后,执行步骤S520。
在步骤S520中,在处理器再次执行指令循环体时,生成增量追踪信息,增量追踪信息适于记录处理器再次执行指令循环体时的运行信息,且增量追踪信息基于基础追踪信息生成。
需要说明的是,步骤S520中的“再次”指的是第二次以及后续每次,而不是特指第二次。
增量追踪信息用于记录处理器再次执行指令循环体时的运行信息。增量追踪信息基于步骤S510中的基础追踪信息生成,其不是以全量的形式记录处理器再次执行指令循环体时的运行信息,而是以增量的形式,仅记录与基础追踪信息中记载的运行信息存在差异的运行信息。换句话说,增量追踪信息用于记录处理器再次执行指令循环体时的运行信息与首次执行指令循环体时的运行信息的变化量,从而避免追踪流中出现冗余信息,大大降低了追踪流的数据量。
在本发明的实施例中,增量追踪信息用于记录处理器再次执行指令循环体时的运行信息。根据所记录的运行信息的不同,增量追踪信息被划分为多种类型,每一类型的增量追踪信息用于记录特定类型的处理器运行信息。
根据一种实施例,增量追踪信息包括计数信息、偏移量信息和第二操作数信息。计数信息用于记录指令循环体的连续执行次数。偏移量信息包括处理器相邻两次执行指令循环体时的操作地址的差值。通常来说,指令循环体会操作连续的内存,处理器相邻两次执行指令循环体的操作地址的差值为一固定的、比较小的数值,该数值即为地址的偏移量。第二操作数信息包括处理器再次执行指令循环体时的操作数。
进一步地,第二操作数信息包括第二加载数信息和第二存储数信息。第二加载数信息包括处理器再次执行指令循环体时的加载操作数,第二存储数信息包括处理器再次执行指令循环体时的存储操作数。
在处理器再次执行指令循环体时,所生成的增量追踪信息的数量和类型根据步骤S510中生成的基础追踪信息的数量和类型来确定。
根据一种实施例,指令循环体为寄存器变量自增程序等不涉及内存操作的程序。在处理器首次执行该指令循环体时,仅生成包括入口地址信息的循环起始信息。由于处理器每次执行指令循环体的入口地址均相同,因此,在处理器第二次及后续每次执行指令循环体时,可以不再记录入口地址信息,仅记录指令循环体的连续执行次数,从而减少追踪流的数据量。因此,在处理器再次执行该指令循环体时,所生成的增量追踪信息仅包括用于记录指令循环体的连续执行次数的计数信息。
具体地,在处理器第二次执行指令循环体时,生成计数信息,并初始化计数信息的值。例如,将计数信息的值初始化为2,表明当前指令循环体被执行了两次。随后,在处理器第三次以及后续每次执行指令循环体时,将计数信息的值加一。例如,在处理器第三次执行指令循环体时,将计数信息的值在原数值2的基础上加一,即将计数信息的值更新为3;在处理器第四次执行指令循环体时,将计数信息的值在原数值3的基础上加一,即将计数信息的值更新为4;以此类推,直至指令循环体终止执行(即循环结束)。
根据另一种实施例,指令循环体为内存拷贝程序、内存修改程序等涉及内存操作的程序。在处理器首次执行该指令循环体时,生成包括入口地址信息的循环起始信息、包括操作地址的基址信息和包括操作数的第一操作数信息。由于处理器每次执行指令循环体的入口地址均相同,因此,在处理器第二次及后续每次执行指令循环体时,可以不再记录入口地址信息,从而减少追踪流的数据量。此外,由于指令循环体通常会操作连续的内存,处理器相邻两次执行指令循环体的操作地址的差值为一固定的、比较小的数值,该数值即为地址的偏移量。因此,在处理器第二次及后续每次执行指令循环体时,可以不再记录操作地址本身,而仅记录地址的偏移量。地址的偏移量的长度较小(通常为1字节,而操作地址通常为4字节),且仅需记录一次,从而大大减少了追踪流的数据量。因此,在该实施例中,在处理器再次执行该指令循环体时,所生成的增量追踪信息包括偏移量信息和第二操作数信息。
具体地,在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的操作地址与首次执行指令循环体时的操作地址的差值;以及生成包含本次的操作数的第二操作数信息。在处理器第三次及后续每次执行指令循环体时,不再生成偏移量信息,仅生成包含本次操作数的第二操作数信息。
根据一种实施例,增量追踪信息中还包括用于标识追踪信息类型的类型标识符。本发明对各类型的增量追踪信息所对应的类型标识符不做限制,只要其能够对不同类型的增量追踪信息进行区分即可。根据一种实施例,类型标识符可以定义为长度为1个字节的数值。例如,定义计数信息的类型标识符为0x45,偏移量信息的类型标识符为0x44,第二操作数信息的类型标识符缺省,即,第二操作数信息中不包括类型标识符,仅包括再次执行指令循环体时的操作数。不为第二操作数信息设置类型标识符的考虑是,在大多数指令循环体中均会涉及操作地址和操作数。这种情况下,在处理器重复执行指令循环体的过程中,每次执行指令循环体均会生成第二操作数信息,第二操作数信息的数量较多。通过缺省第二操作数信息的类型标识符,可以在不模糊第二操作数信息的类型的基础上(因为其他追踪信息均有类型标识符,没有类型标识符的追踪信息即为第二操作数信息),进一步减少追踪流的数据量。
至于第二操作数信息具体为第二加载数信息还是第二存储数信息,则由处理器首次执行指令循环体时所生成的第一操作数信息的类型及顺序来确定。例如,若在首次执行指令循环体时依次生成了一个第一加载数信息、一个第一存储数信息,则处理器再次执行指令循环体所生成的第二操作数信息中,第一个第二操作数信息为第二加载数信息,第二个第二操作数信息为第二存储数信息。
根据一种实施例,在指令循环体终止执行时,生成循环结束信息。循环结束信息表明本次针对指令循环体的追踪流生成过程结束。
以下结合多个实施例进一步说明本发明的处理器追踪流的生成方法及其有益效果。
实施例一
在未采用本发明的方法500时,处理器多次执行指令循环体所生成的追踪流如图6A所示。在图6A中,每一次执行指令循环体时生成的追踪信息的类型和数量均相同,仅追踪信息中记录的运行信息的值可能存在区别。
采用了本发明的方法500后,处理器多次执行指令循环体所生成的追踪流如图6B所示。如图6B所示,在处理器首次执行指令循环体时,生成用于记录运行信息的基础追踪信息1~n。在处理器第二次执行指令循环体时,基于基础追踪信息1~n生成比基础追踪信息数量更少的增量追踪信息1、增量追踪信息2。增量追踪信息中仅记录与基础追踪信息中记载的运行信息存在差异的运行信息,从而避免追踪流中出现冗余信息,大大降低了追踪流的数据量。在处理器第三次执行指令循环体时,将继续生成增量追踪信息,第三次执行指令循环体时所生成的增量追踪信息可以比第二次执行指令循环体时生成的增量追踪信息的数量更少。
实施例二
指令循环体为寄存器变量自增程序。该程序用于指示存储于寄存器中的某一个或某几个变量进行自增,而不涉及对内存操作地址和操作数的操作。
在未采用本发明的方法500时,处理器多次执行该指令循环体所生成的追踪流如图7A所示。如图7A所示,处理器每次执行该指令循环体时,均生成相同的循环起始信息,每个循环起始信息中均记录有相同的入口地址信息,即,记录有该指令循环体的入口地址。
设该指令循环体指示寄存器变量自增50次,入口地址信息的长度为4字节,追踪信息的类型标识符的长度为1字节,并定义各追踪信息的类型标识符如下:
循环起始信息 0x5
计数信息 0x45
则图7A所示的追踪流具体如下表1所示:
表1
如表1所示,每次执行指令循环体均产生相同的循环起始信息。每个循环起始信息的数据量为5个字节,其中类型标识符占1字节,入口地址的值占4字节。整个追踪流的数据量为5*50=250个字节。
采用了本发明的方法500后,处理器多次执行指令循环体所生成的追踪流如图7B所示。如图7B所示,在处理器首次执行指令循环体时,生成用于记录入口地址信息的循环起始信息(循环起始信息是基础追踪信息的一种)。在处理器第二次执行指令循环体时,生成计数信息(计数信息是增量追踪信息的一种),并将计数信息的值设置为2,计数信息用于记录指令循环体的连续执行次数。在处理器第三次及后续每次执行指令循环体时,将计数信息的值加一,而不再生成新的追踪信息。
设计数信息的值的长度为4字节,则图7B所示的追踪流具体如下表2所示:
表2
如表2所示,采用了本发明的方法500后,整个追踪流的数据量大大减少,仅为10字节。
实施例三
指令循环体为涉及内存操作的程序。该程序需要对内存中的数据进行操作,即,涉及操作地址和操作数。
在未采用本发明的方法500时,处理器多次执行该指令循环体所生成的追踪流如图8A所示。如图8A所示,处理器每次执行该指令循环体时,均生成相同数量、相同类型的追踪信息。图8A中,每次执行指令循环体时,均产生一个用于记录入口地址信息的循环起始信息、一个用于记录本次操作地址的操作地址信息和一个用于记录本次操作数的操作数信息(在其他实施例中,根据指令循环体的指令内容的不同,每次执行指令循环体可能产生多个操作地址信息和多个操作数信息)。
采用了本发明的方法500后,处理器多次执行指令循环体所生成的追踪流如图8B所示。如图8B所示,在处理器首次执行指令循环体时,生成用于记录入口地址信息的循环起始信息、用于记录本次操作地址的基址信息和用于记录本次操作数的第一操作数信息。循环起始信息、基址信息、第一操作数信息均为基础追踪信息。实际上,图8B中的基址信息、第一操作数信息分别与图8A中首次执行指令循环体时生成的的操作地址信息、操作数信息相同。
在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的操作地址与首次执行指令循环体时的操作地址的差值;并且生成包含本次操作数的第二操作数信息。
在处理器第三次以及后续每次执行指令循环体时,不再生成偏移量信息,仅生成包含本次操作数的第二操作数信息。
在指令循环体终止执行时,生成循环结束信息。
通过在处理器第二次及后续每次执行指令循环体时,生成用于记录地址偏移量的偏移量信息和用于记录本次操作数的第二操作数信息,避免了入口地址信息的重复记录,从而减少了追踪流的数据量。此外,地址偏移量的长度较小(通常为1字节,而操作地址通常为4字节)且仅记录一次(仅第二次执行指令循环体时进行记录),从而进一步减少了追踪流的数据量。
实施例四
指令循环体为涉及内存操作的程序。该程序需要对内存中的数据进行操作,即,涉及操作地址和操作数。进一步地,操作地址包括加载操作地址和存储操作地址,操作数包括加载操作数和存储操作数。
在未采用本发明的方法500时,处理器多次执行该指令循环体所生成的追踪流如图9A所示。如图9A所示,处理器每次执行该指令循环体时,均生成相同数量、相同类型的追踪信息。图9A中,每次执行指令循环体时,均产生一个用于记录入口地址信息的循环起始信息、一个用于记录本次加载操作地址的加载地址信息、一个用于记录本次加载操作数的加载数信息、一个用于记录本次存储操作地址的存储地址信息和一个用于记录本次存储操作数的存储数信息(在其他实施例中,根据指令循环体的指令内容的不同,每次执行指令循环体可能产生多个加载/存储地址信息和多个加载/存储数信息)。
设该指令循环体连续执行了50次,入口地址、操作地址、操作数的长度均为4字节,追踪信息的类型标识符的长度为1字节,并定义各追踪信息的类型标识符如下:
循环起始信息 0x5
加载地址信息/加载基址信息 0x40
存储地址信息/存储基址信息 0x41
加载数信息/存储数信息/第一加载数信息/第一存储数信息 0x42
循环结束信息 0x43
偏移量信息 0x44
第二加载数信息/第二存储数信息缺省
则图9A所示的追踪流具体如下表3所示:
表3
如表3所示,每次执行指令循环体均产生5个追踪信息,共占用25字节。整个追踪流的数据量为25*50=1250字节。
采用了本发明的方法500后,处理器多次执行指令循环体所生成的追踪流如图9B、9C所示。
在图9B所示的实施例中,指令循环体为内存拷贝程序,该程序将源地址中的数据拷贝至目标地址。例如,该程序将源地址中的200字节数据拷贝至目标地址,指令循环体执行50次,每次拷贝4字节。
当指令循环体为内存拷贝程序时,如图9B所示,在处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息。循环起始信息用于记录入口地址信息,加载基址信息用于记录本次的加载操作地址;第一加载数信息用于记录本次的加载操作数;存储基址信息用于记录本次的存储操作地址;第一存储数信息用于记录本次的存储操作数。其中,由于指令循环体为内存拷贝程序,因此加载操作数与存储操作数相同。需要说明的是,此处的“相同”指的是在获取加载操作数后,不经处理,直接将获取到的加载操作数作为存储操作数,而不是指加载操作数与存储操作数的值相同。
在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的加载操作地址与首次执行指令循环体时的加载操作地址的差值。并且,生成包含本次的加载操作数的第二加载数信息。由于加载操作数与存储操作数相同,因此不需要再生成用于记录本次存储操作数的第二存储数信息。
在处理器第三次及后续每次执行指令循环体时,生成包含本次加载操作数的第二加载数信息。
在指令循环体终止执行时,生成循环结束信息。
地址偏移量的长度为1字节,则图9B所示的追踪流具体如下表4所示:
表4
如表4所示,采用了本发明的方法500后,整个追踪流的数据量为25+6+4*47+5=224字节。阴影部分为相对于表3的追踪流所减少的数据量。
在图9C所示的实施例中,指令循环体为内存修改程序,该程序将源地址中的数据做一定处理后,存储至目标地址。例如,该程序将源地址中的200字节数据做一定处理后存储至目标地址,指令循环体执行50次,每次处理4字节。
当指令循环体为内存修改程序时,如图9C所示,在处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息。循环起始信息用于记录入口地址信息,加载基址信息用于记录本次的加载操作地址;第一加载数信息用于记录本次的加载操作数;存储基址信息用于记录本次的存储操作地址;第一存储数信息用于记录本次的存储操作数。其中,由于指令循环体为内存修改程序,因此加载操作数与存储操作数不同。需要说明的是,此处的“不同”指的是存储操作数是对加载操作数进行处理后所得到,而不是直接将加载操作数作为存储操作数。此外,尽管存储操作数是对加载操作数进行处理后所得到,但存储操作数与加载操作数的值可能相同,也可能不同。
在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的加载操作地址与首次执行指令循环体时的加载操作地址的差值。并且,生成包含本次的加载操作数的第二加载数信息,以及生成包含本次的存储操作数的第二存储数信息。
在处理器第三次及后续每次执行指令循环体时,生成包含本次的加载操作数的第二加载数信息;以及生成包含本次的存储操作数的第二存储数信息。
在指令循环体终止执行时,生成循环结束信息。
地址偏移量的长度为1字节,则图9C所示的追踪流具体如下表5所示:
表5
如表5所示,采用了本发明的方法500后,整个追踪流的数据量为25+10+8*47+9=420字节。阴影部分为相对于表3的追踪流所减少的数据量。
图10示出了根据本发明一个实施例的处理器追踪流的生成方法1000的流程图,追踪流包括顺序生成的多项追踪信息。方法1000是前述方法500的进一步细化,适用于指令循环体为不涉及内存操作的程序的情况,例如,指令循环体为寄存器变量自增程序。如图10所示,方法1000始于步骤S1010。
在步骤S1010中,在处理器首次执行指令循环体时,生成循环起始信息,循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息。
随后,在步骤S1020中,在处理器再次执行指令循环体时,生成计数信息,计数信息用于记录指令循环体的连续执行次数。
根据一种实施例,步骤S1020进一步包括以下步骤:
在处理器第二次执行指令循环体时,生成计数信息,并初始化计数信息的值。
在处理器第三次及后续每次执行指令循环体时,将计数信息的值加一。
方法1000的一个具体实施例可以参考前述实施例二,此处不再赘述。
图11示出了根据本发明一个实施例的处理器追踪流的生成方法1100的流程图,追踪流包括顺序生成的多项追踪信息。方法1100是前述方法500的进一步细化,适用于指令循环体为涉及内存操作但不涉及操作数运算的程序的情况。例如,指令循环体为内存拷贝程序。如图11所示,方法1100始于步骤S1110。
在步骤S1110中,在处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息;循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息;加载基址信息包括处理器首次执行指令循环体时的加载操作地址;第一加载数信息包括处理器首次执行指令循环体时的加载操作数;存储基址信息包括处理器首次执行指令循环体时的存储操作地址;第一存储数信息包括处理器首次执行指令循环体时的存储操作数;其中,加载操作数和存储操作数相同。
需要说明的是,步骤S1110中所说的加载操作数和存储操作数“相同”,指的是在获取加载操作数后,不经处理,直接将获取到的加载操作数作为存储操作数,而不是指加载操作数与存储操作数的值相同。
随后,在步骤S1120中,在处理器再次执行指令循环体时,生成偏移量信息和第二加载数信息;其中,偏移量信息包括处理器相邻两次执行指令循环体时的加载操作地址的差值;第二加载数信息包括处理器再次执行指令循环体时的加载操作数。
根据一种实施例,步骤S1120进一步包括以下步骤:
在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的加载操作地址与首次执行指令循环体时的加载操作地址的差值;以及生成包含本次的加载操作数的第二加载数信息。
在处理器第三次及后续每次执行指令循环体时,生成包含本次的加载操作数的第二加载数信息。
方法1100的一个具体实施例可以参考前述实施例四中图9B的相关描述,此处不再赘述。
图12示出了根据本发明一个实施例的处理器追踪流的生成方法1200的流程图,追踪流包括顺序生成的多项追踪信息。方法1200是前述方法500的进一步细化,适用于指令循环体为涉及内存操作且涉及操作数运算的程序的情况。例如,指令循环体为内存修改程序。如图12所示,方法1200始于步骤S1210。
在步骤S1210中,在处理器首次执行指令循环体时,生成循环起始信息、加载基址信息、第一加载数信息、存储基址信息和第一存储数信息;循环起始信息包括入口地址信息,入口地址为指令循环体中第一条指令的地址信息;加载基址信息涉及处理器首次执行指令循环体时的加载操作地址;第一加载数信息涉及处理器首次执行指令循环体时的加载操作数;存储基址信息涉及处理器首次执行指令循环体时的存储操作地址;第一存储数信息涉及处理器首次执行指令循环体时的存储操作数;其中,加载操作数和存储操作数不同。
需要说明的是,步骤S1210中所说的加载操作数与存储操作数“不同”,指的是存储操作数是对加载操作数进行处理后所得到,而不是直接将加载操作数作为存储操作数。此外,尽管存储操作数是对加载操作数进行处理后所得到,但存储操作数与加载操作数的值可能相同,也可能不同。
随后,在步骤S1220中,当处理器再次执行指令循环体时,生成偏移量信息、第二加载数信息和第二存储数信息;偏移量信息包括处理器相邻两次执行指令循环体时的加载操作地址的差值;第二加载数信息包括处理器再次执行指令循环体时的加载操作数;第二存储数信息包括处理器再次执行指令循环体时的存储操作数。
根据一种实施例,步骤S1220进一步包括以下步骤:
在处理器第二次执行指令循环体时,生成偏移量信息,将偏移量信息的值设置为本次的加载操作地址与首次执行指令循环体时的加载操作地址的差值;生成包含本次的加载操作数的第二加载数信息;以及生成包含本次的存储操作数的第二存储数信息。
在处理器第三次及后续每次执行指令循环体时,生成包含本次的加载操作数的第二加载数信息;以及生成包含本次的存储操作数的第二存储数信息。
方法1200的一个具体实施例可以参考前述实施例四中图9C的相关描述,此处不再赘述。
根据本发明的技术方案,在处理器首次执行指令循环体时,生成基础追踪信息,基础追踪信息适于记录处理器首次执行指令循环体时的运行信息。在处理器再次执行该指令循环体时,生成增量追踪信息,增量追踪信息适于记录处理器再次执行该指令循环体时的运行信息,且增量追踪信息基于基础追踪信息生成。增量追踪信息不是以全量的形式记录处理器再次执行指令循环体时的运行信息,而是以增量的形式,仅记录与基础追踪信息中记载的运行信息存在差异的运行信息,从而避免追踪流中出现冗余信息,大大降低了追踪流的数据量。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的处理器追踪流的生成方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (17)

1.一种处理器追踪流的生成方法,所述追踪流包括顺序生成的多项追踪信息,所述方法包括步骤:
在处理器首次执行指令循环体时,生成基础追踪信息,所述基础追踪信息适于记录所述处理器首次执行所述指令循环体时的运行信息,所述运行信息包括:所述指令循环体的入口地址、执行所述指令循环体中的指令涉及的操作地址和操作数,其中所述入口地址为所述指令循环体中第一条指令的地址信息,所述基础追踪信息包括循环起始信息、基址信息和第一操作数信息,所述循环起始信息包括所述入口地址信息,所述基址信息包括处理器首次执行所述指令循环体时的操作地址,所述第一操作数信息包括处理器首次执行所述指令循环体时的操作数;
在处理器再次执行所述指令循环体时,生成增量追踪信息,所述增量追踪信息适于记录所述处理器再次执行所述指令循环体时的运行信息,且所述增量追踪信息基于所述基础追踪信息生成,所述增量追踪信息包括用于记录所述指令循环体的连续执行次数的计数信息、偏移量信息和第二操作数信息,所述偏移量信息包括处理器相邻两次执行所述指令循环体时的操作地址的差值,所述第二操作数信息包括处理器再次执行所述指令循环体时的操作数。
2.如权利要求1所述的方法,其中,所述生成增量追踪信息的步骤包括:
在处理器第二次执行所述指令循环体时,生成所述计数信息,并初始化所述计数信息的值。
3.如权利要求2所述的方法,其中,所述生成增量追踪信息的步骤还包括:
在处理器第三次及后续每次执行所述指令循环体时,将所述计数信息的值加一。
4.如权利要求1所述的方法,其中,所述生成增量追踪信息的步骤包括:
在处理器第二次执行所述指令循环体时,生成所述偏移量信息,将所述偏移量信息的值设置为本次的操作地址与首次执行所述指令循环体时的操作地址的差值;以及
生成包含本次的操作数的第二操作数信息。
5.如权利要求4所述的方法,其中,所述生成增量追踪信息的步骤还包括:
在处理器第三次及后续每次执行所述指令循环体时,生成包含本次的操作数的第二操作数信息。
6.如权利要求1所述的方法,其中,
所述基址信息包括加载基址信息和存储基址信息,所述加载基址信息包括处理器首次执行所述指令循环体时的加载操作地址,所述存储基址信息包括处理器首次执行所述指令循环体时的存储操作地址;
所述第一操作数信息包括第一加载数信息和第一存储数信息,所述第一加载数信息包括处理器首次执行所述指令循环体时的加载操作数,所述第一存储数信息包括处理器首次执行所述指令循环体时的存储操作数。
7.如权利要求1所述的方法,其中,所述第二操作数信息包括第二加载数信息和第二存储数信息,所述第二加载数信息包括处理器再次执行所述指令循环体时的加载操作数,所述第二存储数信息包括处理器再次执行所述指令循环体时的存储操作数。
8.如权利要求1所述的方法,还包括步骤:
在所述指令循环体终止执行时,生成循环结束信息。
9.如权利要求8所述的方法,其中,所述循环起始信息、基址信息、第一操作数信息、计数信息、偏移量信息、循环结束信息中还包括用于标识追踪信息类型的类型标识符。
10.一种追踪单元,驻留于处理器中,适于执行如权利要求1-9中任一项所述的处理器追踪流的生成方法,以生成所述处理器的追踪流。
11.一种处理器,包括如权利要求10所述的追踪单元。
12.一种追踪装置,与处理器耦接,适于执行如权利要求1-9中任一项所述的处理器追踪流的生成方法,以生成所述处理器的追踪流。
13.一种片上系统,包括:
处理器;以及
如权利要求12所述的追踪装置。
14.一种智能设备,包括如权利要求13所述的片上系统。
15.一种软件模拟器,驻留于计算设备中,包括:
模拟模块,适于模拟处理器执行指令循环体;以及
追踪模块,适于执行如权利要求1-9中任一项所述的处理器追踪流的生成方法,以生成所述模拟模块所模拟的处理器的追踪流。
16.一种计算设备,包括:
至少一个处理器;以及
存储有程序指令的存储器,所述程序指令包括如权利要求15所述的软件模拟器。
17.一种测试系统,包括:
终端设备;以及
与所述终端设备通信连接的计算设备,所述计算设备包括如权利要求15所述的软件模拟器;
其中,所述计算设备适于:接收所述终端设备发来的测试请求,基于所述测试请求,调用所述软件模拟器的模拟模块来模拟处理器执行指令循环体,以及调用所述软件模拟器的追踪模块来执行如权利要求1-9中任一项所述的处理器追踪信息的生成方法,以生成所述模拟模块所模拟的处理器的追踪流。
CN201910924140.0A 2019-09-27 2019-09-27 处理器追踪流的生成方法及装置 Active CN112579169B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910924140.0A CN112579169B (zh) 2019-09-27 2019-09-27 处理器追踪流的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910924140.0A CN112579169B (zh) 2019-09-27 2019-09-27 处理器追踪流的生成方法及装置

Publications (2)

Publication Number Publication Date
CN112579169A CN112579169A (zh) 2021-03-30
CN112579169B true CN112579169B (zh) 2024-04-09

Family

ID=75109833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910924140.0A Active CN112579169B (zh) 2019-09-27 2019-09-27 处理器追踪流的生成方法及装置

Country Status (1)

Country Link
CN (1) CN112579169B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5922070A (en) * 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
CN1286769A (zh) * 1997-12-16 2001-03-07 英特尔公司 具有多程序计数器和在执行流水线外面的追踪缓冲区的处理器
CN1779654A (zh) * 2004-11-19 2006-05-31 凌阳科技股份有限公司 用于处理器的追踪调试方法及系统
CN101159732A (zh) * 2007-08-14 2008-04-09 电子科技大学 基于数据流分析的恶意攻击检测方法
CN102947804A (zh) * 2010-06-21 2013-02-27 Arm有限公司 当追踪数据处理系统时的键配置
CN103593167A (zh) * 2012-06-15 2014-02-19 苹果公司 循环缓冲器学习
CN105229616A (zh) * 2013-06-27 2016-01-06 英特尔公司 在指令追踪系统中跟踪处理装置的模式
CN107025167A (zh) * 2015-12-21 2017-08-08 英特尔公司 在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备
CN109361653A (zh) * 2018-09-13 2019-02-19 上海华元创信软件有限公司 一种powerlink主站
CN109901222A (zh) * 2019-04-02 2019-06-18 中国石油大学(华东) 基于动态字典匹配追踪的地震拓频方法、存储介质及设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943369B2 (en) * 2011-02-21 2015-01-27 Texas Instruments Incorporated Prioritizing stall/reason data into priority information stream over PC/data trace
US20180004526A1 (en) * 2016-06-30 2018-01-04 Intel IP Corporation System and Method for Tracing Data Addresses
US10540178B2 (en) * 2016-09-14 2020-01-21 Intel Corporation Eliminating redundant stores using a protection designator and a clear designator

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5922070A (en) * 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
CN1286769A (zh) * 1997-12-16 2001-03-07 英特尔公司 具有多程序计数器和在执行流水线外面的追踪缓冲区的处理器
CN1779654A (zh) * 2004-11-19 2006-05-31 凌阳科技股份有限公司 用于处理器的追踪调试方法及系统
CN101159732A (zh) * 2007-08-14 2008-04-09 电子科技大学 基于数据流分析的恶意攻击检测方法
CN102947804A (zh) * 2010-06-21 2013-02-27 Arm有限公司 当追踪数据处理系统时的键配置
CN103593167A (zh) * 2012-06-15 2014-02-19 苹果公司 循环缓冲器学习
CN105229616A (zh) * 2013-06-27 2016-01-06 英特尔公司 在指令追踪系统中跟踪处理装置的模式
CN107025167A (zh) * 2015-12-21 2017-08-08 英特尔公司 在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备
CN109361653A (zh) * 2018-09-13 2019-02-19 上海华元创信软件有限公司 一种powerlink主站
CN109901222A (zh) * 2019-04-02 2019-06-18 中国石油大学(华东) 基于动态字典匹配追踪的地震拓频方法、存储介质及设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
反馈式编译在循环级性能分析中的应用;郝云龙;赵荣彩;侯永生;朱嘉风;;计算机工程;20110505(第09期);全文 *
基于Fabric的跨境汇款追踪平台实现;朱涛;姚翔;许玉壮;周钰;;信息安全学报;20180515(第03期);全文 *
基于不同编译器的短波射线追踪计算;程延锋;王俊江;曹红艳;王世凯;杨东升;;中国电子科学研究院学报;20131020(第05期);全文 *

Also Published As

Publication number Publication date
CN112579169A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN102099798B (zh) 用于使用本机代码模块执行应用的方法和系统
US10180850B1 (en) Emulating applications that use hardware acceleration
US11016773B2 (en) Processor trace extensions to facilitate real-time security monitoring
CN101706750B (zh) 一种基于嵌入式模拟器的测试桩获取方法
KR20090064397A (ko) 명령어 스트림의 효율적인 에뮬레이션을 용이하게 하기 위한 레지스터 기반의 명령어 최적화
US20110154110A1 (en) Verifying a Register-Transfer Level Design of an Execution Unit
CN102841837B (zh) 一种基于模拟器的软硬件协同验证方法及系统
CN103176899A (zh) 手机模拟器及在宿主机上模拟手机功能的方法
US20100280817A1 (en) Direct pointer access and xip redirector for emulation of memory-mapped devices
CN113868068B (zh) 一种内核性能测试方法、计算设备及存储介质
CN109388435A (zh) 实现app同时多次开启操作的方法和装置
CN112579373B (zh) 用于分支预测器的验证方法、系统、设备以及存储介质
CN102541727B (zh) 一种程序调试方法及系统
US8886512B2 (en) Simulation apparatus, computer-readable recording medium, and method
CN112579169B (zh) 处理器追踪流的生成方法及装置
CN114428642B (zh) 一种基于新型处理器架构的随机指令生成环境
WO2022111703A1 (zh) 用于获取硬件性能数据的方法、设备和系统
CN106970825B (zh) 一种基于gdb可配置框架的arm7仿真目标机实现方法
CN115374017A (zh) 一种仿真运行可执行文件时抓取现场的方法及计算设备
US6813751B2 (en) Creating standard VHDL test environments
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
JP5056493B2 (ja) 仮想ソフトウェア生成装置
Bartzas et al. Enabling run-time memory data transfer optimizations at the system level with automated extraction of embedded software metadata information
US7925487B2 (en) Replaying distributed systems
CN116089019B (zh) 面向Hexagon架构的细粒度CPU模拟器

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