公开/公告号CN113254084A
专利类型发明专利
公开/公告日2021-08-13
原文格式PDF
申请/专利权人 航天中认软件测评科技(北京)有限责任公司;
申请/专利号CN202110765305.1
申请日2021-07-07
分类号G06F9/38(20060101);G06F9/455(20060101);
代理机构11710 北京开阳星知识产权代理有限公司;
代理人王艳斌
地址 100195 北京市海淀区闵庄路3号玉泉慧谷21号楼一层01室
入库时间 2023-06-19 12:13:22
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于处理器流水线分析的时间和时序校准方法及装置。
背景技术
基于仿真虚拟环境的嵌入式系统设计与开发,是一种全新的敏捷开发模式,能在脱离物理硬件的虚拟平台上,有效支持系统设计人员进行系统定义、设计评估、软件开发、测试验证、集成和部署。
在全数字计算机仿真系统中,保证仿真系统的时间和时序关系与实际系统一致是一个重大挑战。在现有的仿真虚拟环境中,缺乏可以依赖的时间基准,例如硬件晶振。同时,仿真过程中,运行时间被极大的延缓,不同指令由于仿真步骤不同,时间延缓步长也有较大差异。因此,无法直接将主机时间作为仿真时间的基准,如何保证仿真时间与时序的一致性已经成为全数字仿真验证的关键技术。
传统的全数字仿真系统利用指令集架构手册给出的指令执行周期作为计时基准,也就是说将执行轨迹上每条指令执行的周期累加起来,形成当前系统的时间基准。但是这种方式获得的时间与实际系统时间之间具有较大偏差;根据试验结果,这种方式获取的时间与实际时间之间相差至少2倍以上,计时误差极大。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于处理器流水线分析的时间和时序校准方法及装置。
本公开提供了一种基于处理器流水线分析的时间和时序校准方法,包括:
识别仿真运行程序的多个基本块;根据处理器流水线,分析各所述基本块中第一条指令的取指时间和最后一条指令的写回时间,并根据分析的时间确定各所述基本块的第一执行时间;其中,多个所述基本块的第一执行时间形成执行时间查询表;将所述仿真运行程序装载至预设仿真器,并通过所述仿真器执行所述仿真运行程序中的指令;每当所述仿真器执行完成一条指令时,根据最新完成的当前指令和预设的时间更新操作,更新所述仿真器执行的逻辑时间;其中,所述时间更新操作包括:
记录所述仿真器执行完所述当前指令时的程序执行轨迹;从多个所述基本块中,确定至少一个与所述程序执行轨迹相匹配的基本块,按照所述程序执行轨迹将确定的匹配基本块排列为基本块序列;根据所述执行时间查询表确定所述基本块序列对应的执行时间序列;基于所述执行时间序列确定所述仿真器执行的逻辑时间。
可选的,所述基于所述执行时间序列确定所述仿真器执行的逻辑时间,包括:
获取所述基本块序列中排列在最后的末端基本块,所述末端基本块的最后一条指令为所述当前指令;根据所述末端基本块中第一条指令的取指时间和所述当前指令的写回时间,确定所述末端基本块的第二执行时间;基于所述执行时间序列和所述第二执行时间确定所述仿真器执行的逻辑时间。
可选的,所述基于所述执行时间序列和所述第二执行时间确定所述仿真器执行的逻辑时间,包括:
获取所述执行时间序列中,除所述末端基本块之外的其他各个基本块的第一执行时间;将其他各个基本块的第一执行时间与所述末端基本块的第二执行时间之间的时间之和,确定为所述仿真器执行的逻辑时间。
可选的,所述根据处理器流水线,分析各所述基本块中第一条指令的取指时间和最后一条指令的写回时间,包括:
根据处理器流水线,分析各所述基本块中各条指令的起点时间和完成时间;按照时间轴对各所述基本块中各条指令的起点时间和完成时间进行重叠排列;根据排列结果确定第一条指令的第一取值时间和最后一条指令的第一写回时间。
可选的,所述根据分析的时间确定各所述基本块的第一执行时间,包括:针对各所述基本块,将该基本块对应的所述第一取值时间和所述第一写回时间之间的时间差值,确定为该基本块的第一执行时间。
可选的,在确定任意一个所述基本块的第一执行时间之后,所述方法还包括:
判断当前确定第一执行时间的基本块是否为最后一个基本块;如果是,则将多个所述基本块的第一执行时间形成所述执行时间查询表。
可选的,所述识别仿真运行程序的多个基本块,包括:
对仿真运行程序的所有指令进行反汇编识别,形成指令序列;识别所述指令序列中的分支指令和跳转指令;根据所述分支指令和所述跳转指令,将所述指令序列划分为多个基本块。
本公开提供了一种基于处理器流水线分析的时间和时序校准装置,包括:
识别模块,用于识别仿真运行程序的多个基本块;时间确定模块,用于根据处理器流水线,分析各所述基本块中第一条指令的取指时间和最后一条指令的写回时间,并根据分析的时间确定各所述基本块的第一执行时间;其中,多个所述基本块的第一执行时间形成执行时间查询表;程序运行模块,用于将所述仿真运行程序装载至预设仿真器,并通过所述仿真器执行所述仿真运行程序中的指令;时间更新模块,用于每当所述仿真器执行完成一条指令时,根据最新完成的当前指令和预设的时间更新操作,更新所述仿真器执行的逻辑时间;其中,所述时间更新操作通过如下单元实现:
轨迹记录单元,用于记录所述仿真器执行完所述当前指令时的程序执行轨迹;匹配单元,用于从多个所述基本块中,确定至少一个与所述程序执行轨迹相匹配的基本块,按照所述程序执行轨迹将确定的匹配基本块排列为基本块序列;时间对应单元,用于根据所述执行时间查询表确定所述基本块序列对应的执行时间序列;逻辑时间确定单元,用于基于所述执行时间序列确定所述仿真器执行的逻辑时间。
本公开提供了一种电子设备,所述电子设备包括:
处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一所述的方法。
本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的一种基于处理器流水线分析的时间和时序校准方法及装置,该方法包括:识别仿真运行程序的多个基本块;根据处理器流水线,分析各基本块中第一条指令的取指时间和最后一条指令的写回时间,并根据分析的时间确定各基本块的第一执行时间;其中,多个基本块的第一执行时间形成执行时间查询表;将仿真运行程序装载至预设仿真器,并通过仿真器执行仿真运行程序中的指令;每当仿真器执行完成一条指令时,根据最新完成的当前指令和预设的时间更新操作,更新仿真器执行的逻辑时间;其中,时间更新操作包括:记录仿真器执行完当前指令时的程序执行轨迹;从多个基本块中,确定至少一个与程序执行轨迹相匹配的基本块,按照程序执行轨迹将确定的匹配基本块排列为基本块序列;根据执行时间查询表确定基本块序列对应的执行时间序列;基于执行时间序列确定仿真器执行的逻辑时间。本公开能够降低仿真时间与实际时间之间的计时误差,提升确定仿真器执行时间的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所述基于处理器流水线分析的时间和时序校准方法流程图;
图2为本公开实施例所述基于流水线的执行时间校准方式示意图;
图3为本公开实施例所述基于处理器流水线分析的时间和时序校准装置的结构示意图;
图4为本公开实施例所述电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
在基于仿真虚拟环境的嵌入式系统设计与开发过程中,如何保证仿真系统的时间和时序关系与实际系统的一致性,已经成为全数字仿真验证的关键技术。传统的全数字仿真系统利用指令集架构手册给出的指令执行周期作为计时基准,但是该方式获得的仿真时间与实际系统时间之间具有较大偏差。影响指令执行时间的最主要因素是处理器流水线机制,如果将相邻指令的各个阶段并行执行,可以极大地提高指令执行效率。流水线机制是CPU性能提升的关键技术之一,良好的流水线设计可将计算性能提升数倍。但是,流水线的性能提升并未被考虑进入仿真系统计时中;大部分仿真系统是将指令执行周期进行简单累加,这就使得仿真系统的计时时间和实际系统运行计时时间之间存在非常大的差异。进而,导致软件设计与开发过程中,与时间敏感和时序相关的任务测试有效性难以保障。
根据以上考虑,本公开基于处理器流水线分析,提供一种基于处理器流水线分析的时间和时序校准方法及装置。为便于理解,以下对本公开实施例进行详细介绍。
参照图1所示的一种基于处理器流水线分析的时间和时序校准方法流程图,该方法可以包括如下步骤:
步骤S101,识别仿真运行程序的多个基本块。基本块是指程序中顺序执行的指令序列。本实施例识别基本块的方式可以为:
先对仿真运行程序(下文简称为程序)的所有指令进行反汇编识别,形成指令序列;而后再识别指令序列中的分支指令和跳转指令;根据分支指令和跳转指令,将指令序列划分为多个基本块。具体的,上述分支指令和跳转指令可以作为入口指令,一个入口指令对应一个基本块;对于各个基本块,它是由入口指令到下一入口指令(不包含该下一入口指令)之间的指令序列组成。
仿真运行程序的多个基本块形成基本块表,每个基本块可以表示为b,基本块表可以表示为Blocks。
步骤S102,根据处理器流水线,分析各基本块中第一条指令的取指时间和最后一条指令的写回时间,并根据分析的时间确定各基本块的第一执行时间;其中,多个基本块的第一执行时间形成执行时间查询表。流水线是指在处理器执行程序时,多条指令重叠进行操作的一种准并行处理实现技术。
本实施例根据处理器流水线对程序中的指令进行分析时,以基本块为单位,根据基本块中第一条指令的取指时间和最后一条指令的写回时间确定基本块的第一执行时间;该方式能够将流水线对指令执行时间的影响考虑到仿真计时过程中,对基本块中第一条指令与最后一条指令之间的重叠指令所对应的重叠执行时间进行压缩,消除流水线加速导致的仿真时间偏差,有效校准了基本块的第一执行时间,进而能够降低仿真器执行程序的时间与真实处理器执行程序的时间之间的误差。
步骤S103,将仿真运行程序装载至预设仿真器,并通过仿真器执行仿真运行程序中的指令。预设仿真器例如:能够满足嵌入式软件研发和测试需求的SPARC V7、SPARC V8、BM3803、DSP 6713等处理器仿真软件。在实际应用中,可以将仿真器集成到嵌入式软件测试环境中,以支持开展软件调试、测试、目标码覆盖分析、故障注入测试。
在本实施例中,仿真器装置仿真运行程序装载进入内存空间,并通过仿真器逐条执行仿真运行程序中的指令。
步骤S104,每当仿真器执行完成一条指令时,根据最新完成的当前指令和预设的时间更新操作,更新仿真器执行的逻辑时间;其中,时间更新操作包括如下步骤S105-步骤S108:
步骤S105,记录仿真器执行完当前指令时的程序执行轨迹;
步骤S106,从多个基本块中,确定至少一个与程序执行轨迹相匹配的基本块,按照程序执行轨迹将确定的匹配基本块排列为基本块序列。也就是说,将程序执行轨迹与基本块表进行匹配,得到基本块序列;基本块序列可以表示为< b
步骤S107,根据执行时间查询表确定基本块序列对应的执行时间序列。该执行时间序列可以表示为< Δt
步骤S108,基于执行时间序列确定仿真器执行的逻辑时间。
在本实施例中,基本块序列中的基本块为仿真器每执行完成且与程序执行轨迹相匹配的基本块,对于每个基本块而言,均经过执行时间的校准,对于基本块序列而言,降低了仿真轨迹跟踪对仿真性能的影响,从而,利用基本块序列对应的执行时间序列确定仿真器执行的逻辑时间,能够有效降低仿真时间与实际时间之间的误差,提升仿真器执行时间的准确性。
本公开实施例提供的基于处理器流水线分析的时间和时序校准方法,以仿真运行程序中的基本块为单位,首先通过流水线分析对基本块中重叠指令的重叠时间做压缩,校准了基本块的第一执行时间;而后每当仿真器执行完成一条指令时,更新仿真器执行的逻辑时间,在更新逻辑时间的过程中,利与上述校准后的基本块的第一执行时间,又进一步结合程序执行轨迹降低仿真轨迹跟踪对仿真性能的影响。因此,本公开能够有效降低仿真时间与实际时间之间的计时误差,提升确定仿真器执行时间的准确性。
参照图2,展示了一种包括多条指令的基本块的示例,基于此,本实施例提供一种基于处理器流水线,确定基本块的第一执行时间的方法,该方法如下所示:
根据处理器流水线,分析各基本块中各条指令的起点时间和完成时间;按照时间轴对各基本块中各条指令的起点时间和完成时间进行重叠排列。每条指令的执行时间为从起点时间至完成时间,由图2可以看出,多条指令的执行时间是重叠的。根据排列结果确定第一条指令的第一取值时间和最后一条指令的第一写回时间。
接下来,针对各基本块,将该基本块对应的第一取值时间和第一写回时间之间的时间差值Δt
本实施例在确定任意一个基本块的第一执行时间之后,还可以判断当前确定第一执行时间的基本块是否为最后一个基本块;如果是,则将多个基本块的第一执行时间形成执行时间查询表;如果不是,则采用同样的方式继续确定下一个基本块的第一执行时间。
由于仿真器逐条执行指令,因此,基本块序列中排列在最后的末端基本块可能并未完全执行,也就是说,仿真器并未执行到末端基本块的最后一条指令,比如,刚刚完成末端基本块的第一条指令的执行。在此情况下,针对最后一个基本块,其预先确定的第一执行时间并不是真实的仿真时间。从而,针对上述步骤S108,在此提供一种更加准确地确定仿真器执行的逻辑时间的实施例,包括:
步骤1,获取基本块序列中排列在最后的末端基本块,末端基本块的最后一条指令为当前指令;也即仿真器最新执行完成的当前指令所对应的基本块为末端基本块。
步骤2,根据末端基本块中第一条指令的取指时间和当前指令的写回时间,确定末端基本块的第二执行时间。
对于末端基本块,其当前指令是真实执行过程中的最后一条指令,基于此,可以参照确定第一执行时间的方式确定末端基本块的第二执行时间,具体不在展开描述。
步骤3,基于执行时间序列和第二执行时间确定仿真器执行的逻辑时间。
具体的,获取执行时间序列中,除末端基本块之外的其他各个基本块的第一执行时间;参照如下公式(1),将其他各个基本块的第一执行时间与末端基本块的第二执行时间之间的时间之和,确定为仿真器执行的逻辑时间:
其中,t为仿真器执行完当前指令时的逻辑时间,Δt
本实施例对末端基本块,进行基本块内部的流水线分析校准,进一步降低了仿真时间与实际时间之间的计时误差。
综上,与主流CPU仿真器的计时机制相比,上述公开实施例提供的基于处理器流水线分析的时间和时序校准方法,基于处理器流水线分析的校准方式,在指令流水过程中,充分考虑并行流水线状态下相邻指令之间的可并行性,极大地降低了仿真执行的时间与真实CPU上执行程序的时间之间的计时误差。同时,基于处理器流水线的技术,还能够压缩指令执行时间,提高流水线的时间和时序精度,缩短仿真时间,提升计算机系统仿真的性能。
根据以上实施例提供的基于处理器流水线分析的时间和时序校准方法,本公开实施例提供一种基于处理器流水线分析的时间和时序校准装置,如图3所示,该装置包括:
识别模块310,用于识别仿真运行程序的多个基本块;
时间确定模块320,用于根据处理器流水线,分析各基本块中第一条指令的取指时间和最后一条指令的写回时间,并根据分析的时间确定各基本块的第一执行时间;其中,多个基本块的第一执行时间形成执行时间查询表;
程序运行模块330,用于将仿真运行程序装载至预设仿真器,并通过仿真器执行仿真运行程序中的指令;
时间更新模块340,用于每当仿真器执行完成一条指令时,根据最新完成的当前指令和预设的时间更新操作,更新仿真器执行的逻辑时间;其中,时间更新操作通过如下单元实现:
轨迹记录单元341,用于记录仿真器执行完当前指令时的程序执行轨迹;
匹配单元342,用于从多个基本块中,确定至少一个与程序执行轨迹相匹配的基本块,按照程序执行轨迹将确定的匹配基本块排列为基本块序列;
时间对应单元343,用于根据执行时间查询表确定基本块序列对应的执行时间序列;
逻辑时间确定单元344,用于基于执行时间序列确定仿真器执行的逻辑时间。
本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
图4为本公开实施例提供的一种电子设备的结构示意图。如图4所示,电子设备400包括一个或多个处理器401和存储器402。
处理器401可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备400中的其他组件以执行期望的功能。
存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本公开的实施例的基于处理器流水线分析的时间和时序校准方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置403还可以包括例如键盘、鼠标等等。
该输出装置404可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图4中仅示出了该电子设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备400还可以包括任何其他适当的组件。
进一步,本实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述基于处理器流水线分析的时间和时序校准方法。
本公开实施例所提供的一种基于处理器流水线分析的时间和时序校准方法、装置、电子设备及介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
机译: 通过在基于时钟信号频率和所选功率模式的选择时间内将指令加载到流水线电路中的同时多线程处理器中的功率管理方法
机译: 基于无线局域网
机译: 通过基于松弛时间计算选择性地显示信号路径来执行平面布置图时序分析的方法以及使用该方法的集成电路