CN102520984A - 目标软件在指定硬件环境中最差时间的计算方法 - Google Patents

目标软件在指定硬件环境中最差时间的计算方法 Download PDF

Info

Publication number
CN102520984A
CN102520984A CN2011103866407A CN201110386640A CN102520984A CN 102520984 A CN102520984 A CN 102520984A CN 2011103866407 A CN2011103866407 A CN 2011103866407A CN 201110386640 A CN201110386640 A CN 201110386640A CN 102520984 A CN102520984 A CN 102520984A
Authority
CN
China
Prior art keywords
simulation
cpu
instruction
time
internal memory
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
CN2011103866407A
Other languages
English (en)
Other versions
CN102520984B (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.)
China General Nuclear Power Corp
China Techenergy Co Ltd
Original Assignee
China General Nuclear Power Corp
China Techenergy Co 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 China General Nuclear Power Corp, China Techenergy Co Ltd filed Critical China General Nuclear Power Corp
Priority to CN 201110386640 priority Critical patent/CN102520984B/zh
Publication of CN102520984A publication Critical patent/CN102520984A/zh
Application granted granted Critical
Publication of CN102520984B publication Critical patent/CN102520984B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种目标软件在指定硬件环境中最差时间的计算方法,包括:步骤1、读取目标文件并对目标文件进行解析及反汇编;步骤2、模拟目标软件使用的虚拟硬件环境,包括:步骤3、在虚拟硬件环境中执行汇编后的目标文件,其中:步骤4、把每一个程序分支的运行时间横向比较后,计算并输出目标文件中最差运行时间的程序路径。本发明能够预估目标软件在控制系统中的最差运行时间,从而在目标软件下装之前确定是否超时,以满足系统的时间确定性要求。

Description

目标软件在指定硬件环境中最差时间的计算方法
技术领域
本发明涉及一种程序运行时间统计方法,具体涉及一种利用虚拟机来运行目标程序从而确定最差运行时间的方法。
背景技术
在现代工业控制系统中,由于对系统及时性的要求越来越高,程序在实际应用前应该明确其最差的运行时间从而判断在执行过程中是否超时。目前对程序最差运行时间的分析方法主要是采用静态分析和动态分析的方式:静态分析方式的工具如Ait通过对可执行程序的静态分析,结合处理器的特性对目标文件的最差运行时间进行计算,并规划出分支程序可能存在的最短路径,其工作过程如图1所示:首先在软件中将可执行目标文件进行反汇编,再输入目标文件所使用的硬件环境,如:CPU型号、外部总线类型等参数,然后用户输入EntryPoint,再计算分支程序在各个函数中所消耗的时间。此方法能够给出分支程序的最差运行时间,以及最差运行时间所在的函数和最差运行时间的分析方法,及模型设计的原因,不需要用户编写插装代码以及购置测试平台,但是此方法不能给出分支程序最差运行时间的发生条件,也没有考虑存储器和外部总线配置方式改变对于最终分析结果所带来的影响。
动态分析的工具如Rapitime是通过实测程序各个分支的运行时间,从而得到软件的最长运行时间。其工作流程如图1所示,首先在软件中打开要分析的目标文件源代码,对源代码的分支语句进行插装,然后在目标设备中执行目标代码,计算相信两个插装点消耗的时间,遍历所有分支后对记录结果进行分析,从而得到目标文件的最差运行时间。此方法可以得到比较精确的分支程序运行时间,最终结果显示较为直观,能够贴合设备实际情况,对于不同的设备,只要适当调正一下测试设备的硬件和插装代码即可完成运行时间的测量,但是此方法无法给出测量结果“最差”的理论依据,且需要用户手动的编写插装代码,对于较大工程量的程序来说,存在极大的漏编或错编的可能性,从而因为人因故障引入精度的错误,此外测试环境较为复杂,对于工控环境来说,用户需要额外的预算来组件测试平台,成本较高,并且要求用户必须持有该目标软件的源代码,在某些商业环境中,该方案并不能满足用户的需要。
发明内容
为解决现有技术在对目标软件进行最差时间分析时,考虑面过窄使得最终结果精确度差的问题,本发明提供一种利用虚拟软件对目标软件的运行硬件环境进行虚拟,并计算目标软件的所有分支程序从而得到精确的最差运行时间的技术方案,具体方案如下:目标软件在指定硬件环境中最差时间的计算方法,包括:
步骤1、读取目标文件并对目标文件进行解析及反汇编;其特征在于,还包括如下步骤:
步骤2、模拟目标软件使用的虚拟硬件环境,包括:
步骤21、模拟CPU及其工作流程;
步骤22、模拟内存及其工作流程;
步骤3、在虚拟硬件环境中执行汇编后的目标文件,其中:
步骤31、记录每一条指令的当前位置,当该指令为分支指令时,则记录该指令的当前位置、跳转目标位置及跳转的判断条件;
步骤32、运行每一条指令在各种情况下所耗费的时间并记录;
步骤4、把每一个程序分支的运行时间横向比较后,计算并输出目标文件中最差运行时间的程序路径。
为保证测试过程的精确:所述步骤21中模拟CPU及其工作流程包括:
1)、对CPU的型号及其工作频率的模拟;
2)、对CPU在指令执行中的流水线过程模拟,此由以下四个方面组成:
(1)、CPU对指令的预读和分支预测算法的模拟;
(2)、CPU指令发射结构的模拟;
(3)、CPU执行指令的过程及执行时间的模拟;
(4)、CPU接到指令回馈信息的过程模拟;
累加此四个过程所花费的时钟周期数,即得到CPU流水线处理该指令所花费的时间。为确定测试过程的精确:所述步骤22中模拟内存及其工作流程包括:
1)、内存的容量和工作频率的模拟;
2)、内存的访存宽度模拟;
3)、内存的行/列访问延时模拟;
4)、内存的刷新延时模拟;
5)、内存的充电延时模拟。
本发明能够预估目标软件在嵌入式工业控制系统中的最差运行时间,从而在目标软件下装之前,确定是否超时,从而满足系统的时间确定性要求。本发明使用虚拟机的方式模拟程序运行的指令内容,虚拟机包含了对处理器、外部总线,以及外部存储器之间功能的状态机的模拟,从而使得本方法兼具Rapitime和Ait两种方法的优点,并且尽可能的规避了两者的不足之处,本发明使用到了ELF反汇编技术、处理器指令解析技术、处理器时序解析技术、DDR总线时序分析技术、DDR芯片时序分析技术、程序分支记录分析技术。结合上述技术得到目标软件各个分支程序所消耗的时间,从而给出目标软件在特定平台中执行所消耗的最差时间。此外本方法可以有效统计有哪些分支是可达的,哪些分支是不可跳出的死循环,自动对分支进行记录,而不需要用户手动在分支上插装。避免了由于人因而导致的故障。同时,比照动态分析的方式,本软件能够更好的说明测试结果的原理。而不是简单的得到一个统计性的数据。
附图说明
图1静态分析方法流程示意图。
图2动态分析方法流程示意图。
图3本发明的分析方法流程示意图。
具体实施方式
如图3所示,本方案按下列步骤执行:
101、读取目标文件并对目标文件进行解析及反汇编;
此步主要是解析ELF文件,并从中得到代码段、数据段等具体结构,明确它们在ELF文件中的偏移,以及要加载到内存的位置和长度,具体解析的内容如表一所示:
Figure BDA0000113728090000031
表一
然后对ELF解析后的代码段(其内容是二进制)进行反汇编,从而把该二进制的机器语言,用汇编语言表示出来。
102、模拟目标软件使用的虚拟硬件环境,包括模拟CPU及其工作流程和模拟内存及其工作流程;目标文件所使用的硬件环境是通过给定的硬件配置信息确定的。在对目标程序的模拟过程中,其中CPU对指令的运行方式和所花费的时间等因素,是模拟过程中最重要的一环,因此首先需要对CPU的工作模式进行模拟,再根据后续的模拟程序对目标程序的执行进行判断。从而得到最终的结果。
一、模拟CPU及其工作流程包含两方面的模拟。
1、对指令结果的模拟:明确指令的运行结果,确定其操作了哪些寄存器,以及操作了哪些内容。对于一段程序来说存在输入值是确定以及非确定的情况,在虚拟机中,某些寄存器的初始值设定为UNKNOWN,当该寄存器始终没有被直接赋值的时候,那么该寄存器的值就始终为(do sth on UNKNOWN),其中sth是对unknown的操作数,且该操作数是一个结构体数组,每个节点包含了三个成员,依次为“操作类型”、“操作数类型”、“操作数的值”。对于一个比较指令来说,如果两个寄存器的值都不确定,那么对于接下来的分支指令就使用全部遍历的方式来分别模拟,在最后的结果中,如果计算的时间值与寄存器的值有着关联,那么就依最差的结果进行分析。
2、对CPU执行分支指令的流水线过程模拟,包括:
1)对CPU的型号及其工作频率的模拟;CPU的基本信息包括处理器种类,工作频率等内容,不同的CPU其内部的结构和时钟都可能存在着一定的差异,通过检查CPU的种类和频率可以判断该CPU是否被当前虚拟机所支持。
2)、对流水线过程模拟包括下面四个方面:
(1)、CPU对指令的预读和分支预测算法的模拟;模拟CPU的分支预测算法,并判断反汇编代码中,哪些可能会预测成功,哪些可能预测失败。CPU会对指令进行预读取,由于程序中可能存在分支的情况,所以CPU会通过分支预测算法来确定下一条指令从什么地方开始加载。通过比较当前寄存器的值和目的跳转地址能够判断处理器分支预测算法的结果是否成功,分支预测可能成功也可能失败,一旦分支预测失败,会额外的消耗时间来同步和重加载数据。在虚拟机中模拟CPU的分支预测算法,能够提高分析模型的精度。
(2)、CPU指令发射结构的模拟;模拟CPU的指令发射策略,判断出那些指令可以被CPU同时执行,哪些指令不可以被同时执行,CPU的多发射结构,可以让处理器的执行单元在一个时钟周期内执行多条指令,对于最差运行时间的分析来说,使用虚拟机模拟CPU的发射结构,可以提高模型的精度。
(3)、CPU执行该指令的过程及执行时间的模拟;CPU执行各条分支指令所消耗的时钟周期数,CPU执行不同指令会消耗不同的时钟周期。综合发射结构的模拟算法,通过查表的方式可以确定指令在CPU执行器中消耗的时长。
(4)、CPU接到指令回馈信息的过程模拟。
CPU的加载器(分支预测算法)、(译码)发射器、执行器、写回队列,可以按照流水线的方式独立的工作,模拟这个流水线的调度算法,就是对CPU流水线的模拟,按照流水线的方式协同工作可以提高工作效率,但是,该流水线可能受到分支预测的结果、发射器发射的指令类型或指令的上下文依赖性、甚至写回队列的容量所影响,综合上述限制,分析CPU的流水线模型可以得到CPU处理指令所消耗的时间,从而提高模型的精度。
累加上述四个过程所耗费的时间,即就得CPU流水线处理该指令所花费的时间。
二、对DDR的模拟包括以下几个方面。
1、内存的容量和工作频率的模拟;内存的容量(页*行*列这三个值是多少)和内存的工作频率确定后,可得到标识出内存芯片的容量,以及刷新和充电情况,而内存的工作频率可以把换算访存消耗的时钟周期数折换成时间长度。
2、内存的访存宽度模拟;即内存单次访存的字节数,这样就可以知道访问指定数据量的时候内存芯片发生的访存次数。
3、内存的行/列访问延时模拟;内存的行选和列选都需要消耗的一定时钟周期数,这样可以计算出内存的寻址时间。
4、内存的刷新延时模拟;即内存刷新特定列消耗的时钟周期。
5、内存的充电延时模拟;得到内存充电消耗的时钟周期数后,可以计算出内存的充电时间。
103、在虚拟硬件环境中执行汇编后的目标文件。
在前步对硬件的环境虚拟后,将反汇编后的程序调入硬件虚拟环境中执行,执行过程中需要记录每一个指令的位置,包括分支指令的起始位置、分支的触发条件,分支的预测值,分支的实际值等信息,运行目标程序的所有的指令和分支指令,包括每个分支指令多种选择情况下的运行时间,并分别记录。其中对于顺序执行,只记录该指令的执行时间和所在地址。
104、把每一个程序分支的运行时间横向比较后,计算并输出目标文件中最差运行时间的程序路径。
通过读取分支树和每个分支对应的最差运行时间,并进行横向比较,最终计算出整个目标文件中分支程序的最差运行时间。

Claims (3)

1.目标软件在指定硬件环境中最差时间的计算方法,包括:
步骤1、读取目标文件并对目标文件进行解析及反汇编;其特征在于,还包括如下步骤:
步骤2、模拟目标软件使用的虚拟硬件环境,包括:
步骤21、模拟CPU及其工作流程;
步骤22、模拟内存及其工作流程;
步骤3、在虚拟硬件环境中执行汇编后的目标文件,其中:
步骤31、记录每一条指令的当前位置,当该指令为分支指令时,则记录该指令的当
前位置、跳转目标位置及跳转的判断条件;
步骤32、运行每一条指令在各种情况下所耗费的时间并记录;
步骤4、把每一个程序分支的运行时间横向比较后,计算并输出目标文件中最差运行时间的程序路径。
2.如权利要求1所述的计算方法,其特征在于,所述步骤21中模拟CPU及其工作流程包括:
1)、对CPU的型号及其工作频率的模拟;
2)、对CPU在指令执行中的流水线过程模拟,此由以下四个方面组成:
(1)、CPU对指令的预读和分支预测算法的模拟;
(2)、CPU指令发射结构的模拟;
(3)、CPU执行指令的过程及执行时间的模拟;
(4)、CPU接到指令回馈信息的过程模拟;
累加此四个过程所花费的时钟周期数,即得到CPU流水线处理该指令所花费的时间。
3.如权利要求1所述的计算方法,其特征在于,所述步骤22中模拟内存及其工作流程包括:
1)、内存的容量和工作频率的模拟;
2)、内存的访存宽度模拟;
3)、内存的行/列访问延时模拟;
4)、内存的刷新延时模拟;
5)、内存的充电延时模拟。
CN 201110386640 2011-11-29 2011-11-29 目标软件在指定硬件环境中最差时间的计算方法 Active CN102520984B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110386640 CN102520984B (zh) 2011-11-29 2011-11-29 目标软件在指定硬件环境中最差时间的计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110386640 CN102520984B (zh) 2011-11-29 2011-11-29 目标软件在指定硬件环境中最差时间的计算方法

Publications (2)

Publication Number Publication Date
CN102520984A true CN102520984A (zh) 2012-06-27
CN102520984B CN102520984B (zh) 2013-09-04

Family

ID=46291926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110386640 Active CN102520984B (zh) 2011-11-29 2011-11-29 目标软件在指定硬件环境中最差时间的计算方法

Country Status (1)

Country Link
CN (1) CN102520984B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631573A (zh) * 2012-08-24 2014-03-12 中兴通讯股份有限公司 可迁移函数执行时间的获得方法及系统
CN104407968A (zh) * 2014-10-30 2015-03-11 北京控制工程研究所 一种通过静态分析测算代码指令最长运行时间的方法
CN104516770A (zh) * 2014-12-31 2015-04-15 北京神舟航天软件技术有限公司 一种基于高速仿真的程序计算开销评估技术
CN109558141A (zh) * 2018-11-28 2019-04-02 北京东土科技股份有限公司 一种最坏执行时间wcet的确定方法、装置和可读介质
CN110825351A (zh) * 2019-09-26 2020-02-21 泰牛汽车技术(苏州)有限公司 嵌入式ecu中软件占用ram+rom容量的推算方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093449A (zh) * 2007-06-22 2007-12-26 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
CN101694628A (zh) * 2009-10-21 2010-04-14 中国人民解放军国防科学技术大学 一种串行与并行模拟相结合的并行计算机系统性能模拟方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093449A (zh) * 2007-06-22 2007-12-26 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
CN101694628A (zh) * 2009-10-21 2010-04-14 中国人民解放军国防科学技术大学 一种串行与并行模拟相结合的并行计算机系统性能模拟方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徐传福,车永刚,王正华: "基于并行模拟的多核集群系统性能预测和分析", 《国防科技大学学报》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631573A (zh) * 2012-08-24 2014-03-12 中兴通讯股份有限公司 可迁移函数执行时间的获得方法及系统
CN103631573B (zh) * 2012-08-24 2017-12-08 中兴通讯股份有限公司 可迁移函数执行时间的获得方法及系统
CN104407968A (zh) * 2014-10-30 2015-03-11 北京控制工程研究所 一种通过静态分析测算代码指令最长运行时间的方法
CN104407968B (zh) * 2014-10-30 2017-06-13 北京控制工程研究所 一种通过静态分析测算代码指令最长运行时间的方法
CN104516770A (zh) * 2014-12-31 2015-04-15 北京神舟航天软件技术有限公司 一种基于高速仿真的程序计算开销评估技术
CN109558141A (zh) * 2018-11-28 2019-04-02 北京东土科技股份有限公司 一种最坏执行时间wcet的确定方法、装置和可读介质
CN109558141B (zh) * 2018-11-28 2022-05-13 北京东土科技股份有限公司 一种最坏执行时间wcet的确定方法、装置和可读介质
CN110825351A (zh) * 2019-09-26 2020-02-21 泰牛汽车技术(苏州)有限公司 嵌入式ecu中软件占用ram+rom容量的推算方法
CN110825351B (zh) * 2019-09-26 2023-09-01 坤泰车辆系统(常州)有限公司 嵌入式ecu中软件占用ram+rom容量的推算方法

Also Published As

Publication number Publication date
CN102520984B (zh) 2013-09-04

Similar Documents

Publication Publication Date Title
Engblom Processor pipelines and static worst-case execution time analysis
US5347647A (en) Method of predicting the performance of an emulated computer system
US8612944B2 (en) Code evaluation for in-order processing
US20100180263A1 (en) Apparatus and method for detecting software error
Joshua et al. The future of simulation: A field of dreams
US20070011664A1 (en) Device and method for generating an instruction set simulator
CN102520984B (zh) 目标软件在指定硬件环境中最差时间的计算方法
CN103154890A (zh) 模拟装置、方法以及程序
CN109189479A (zh) 一种用于处理器指令集的并行自动化验证方法
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
Dick et al. Measurement and Rating of Software-induced Energy Consumption of Desktop PCs and Servers.
CN102902906A (zh) 微处理器指令集验证方法
CN104156311A (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
JP5514211B2 (ja) 分岐オーバーライドを用いたプロセッサ実行のシミュレーション
US20080168426A1 (en) Automatic inspection of compiled code
Banerjee et al. A highly configurable hardware/Software stack for DNN inference acceleration
CN111813672A (zh) 一种针对多种处理器架构的非侵入式覆盖率统计方法
US7684971B1 (en) Method and system for improving simulation performance
CN113515348B (zh) 一种基于时机动作流的模拟器建模方法及装置
Sharma et al. Performance evaluation of real-time systems
CN115629928B (zh) 一种面向类脑处理器的软硬协同验证方法及系统
CN109814924B (zh) 一种软件复杂度计算方法
US11719749B1 (en) Method and system for saving and restoring of initialization actions on dut and corresponding test environment
US20100251213A1 (en) Method for executing debug commands
Cornelis et al. The pipeline performance model: a generic executable performance model for GPUs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100094 Yongfeng Road, Beijing, No., building 5, building 5

Patentee after: Beijing Guangli Nuclear Power Co., Ltd.

Patentee after: China General Nuclear Power Corporation

Address before: 100094 Yongfeng Road, Beijing, No., building 5, building 5

Patentee before: Beijing Guangli Nuclear Power Co., Ltd.

Patentee before: China Guangdong Nuclear Power Group Co., Ltd.

CB03 Change of inventor or designer information

Inventor after: Zhang Zhihui

Inventor after: Bai Tao

Inventor after: Gao Ming

Inventor after: Wang Yanhai

Inventor after: Du Qiaorui

Inventor after: Shi Guilian

Inventor before: Zhang Zhihui

Inventor before: Gao Ming

Inventor before: Wang Yanhai

Inventor before: Du Qiaorui

Inventor before: Shi Guilian

COR Change of bibliographic data
CB03 Change of inventor or designer information

Inventor after: Jiang Guojin

Inventor after: Zhang Zhihui

Inventor after: Bai Tao

Inventor after: Gao Ming

Inventor after: Wang Yanhai

Inventor after: Du Qiaorui

Inventor after: Shi Guilian

Inventor after: Ning Dai

Inventor before: Zhang Zhihui

Inventor before: Bai Tao

Inventor before: Gao Ming

Inventor before: Wang Yanhai

Inventor before: Du Qiaorui

Inventor before: Shi Guilian

CB03 Change of inventor or designer information