CN103198002B - 程序运行时间的测量方法及仿真器 - Google Patents
程序运行时间的测量方法及仿真器 Download PDFInfo
- Publication number
- CN103198002B CN103198002B CN201210004989.4A CN201210004989A CN103198002B CN 103198002 B CN103198002 B CN 103198002B CN 201210004989 A CN201210004989 A CN 201210004989A CN 103198002 B CN103198002 B CN 103198002B
- Authority
- CN
- China
- Prior art keywords
- program
- instruction code
- counter
- value
- software
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种程序运行时间的测量方法及仿真器,其中仿真器包括软件部分和硬件部分。所述硬件部分包括:程序计数器和微控制单元;所述软件部分包括:模式设定模块、模式识别模块、执行控制模块、周期确定模块、软件计数器和时间运算模块。本发明采用软件计数器对机器周期进行计数累计,从而克服了计数溢出的问题;并且测量结果中不包含额外的通信时间和处理时间,因此测量的准确度更高。
Description
技术领域
本发明涉及一种程序运行时间的测量方法及仿真器,属于芯片设计技术领域。
背景技术
秒表(StopWatch)仿真器是一种用于测量仿真芯片的程序运行时间的软件。程序是由仿真芯片支持的不同指令所组成,而程序运行时间则是由这些指令的机器周期及当前的时钟频率所决定的。在现有的指令中,部分程序跳转指令及寄存器间寻址指令的运行时间为两个机器周期,其余指令的运行时间均为一个机器周期,一个机器周期为n个主时钟周期,n为整数,由仿真芯片的特性决定。假设n=4,当仿真器运行完一段程序时,该程序的运行时间的计算公式如下:
程序运行时间=程序执行的所有机器周期数*一个机器周期的时间
其中,一个机器周期的时间=1/(时钟频率/4),当时钟频率=4MHz时,则一个机器周期的时间为1μs。
现有实现方式一:
仿真器由硬件计数器记录仿真芯片在运行时输出时钟信号的时钟数;当程序停止运行时,仿真器的主控芯片在读寄存器的时候同时读出所述时钟数,再上传至界面软件,由界面软件根据所述时钟数和已知的时钟频率计算出所述程序的运行时间。
这种方式的缺陷在于:硬件计数器的计时长度是固定的,当实际的时钟数超出硬件的计时长度时,便会发生计数溢出,使硬件计数器被强制清零,从而造成计算结果不准确。
现有实现方式二:
在程序开始运行后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点;当程序运行到上述断点时,记录开始时间戳和结束时间戳;将上述结束时间戳与开始时间戳之差作为程序运行时间的测量结果。
这种方式的缺陷在于:程序的执行是由硬件完成的,而时间戳的记录是由软件执行的,由于软硬件之间的交互还存在额外的通信时间,并且仿真器固件的处理过程也需要额外的处理时间,使得上述时间戳差值中包含这两种时间,因此造成测量结果不准确。
发明内容
本发明提供一种程序运行时间的测量方法及仿真器,用以提高程序运行时间的测量准确度。
本发明一方面提供一种程序运行时间的测量方法,其中包括:
步骤110,将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址;
步骤120,根据所述程序计数器的值确定相应的指令码的机器周期;
步骤130,汇编单步执行所述指令码,结束后,通过所述软件计数器累计所述机器周期,当汇编单步执行的所述指令码为中断指令码,或者当所述收到用户输入的暂停命令时,执行步骤150,否则执行步骤140;
步骤140,将所述程序计数器的值更新为所述被测程序的下一个待执行的指令码的地址,并返回执行步骤120;
步骤150,停止所述累计得到累计值,并根据所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。
本发明另一方面提供一种测量芯片的仿真器,其中包括:软件部分和硬件部分,其中,
所述硬件部分包括:程序计数器和微控制单元;
所述软件部分包括:执行控制模块,用于将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址,并指示所述微控制单元汇编单步执行所述指令码;在所述汇编单步执行结束后,将所述程序计数器的值更新为所述被测程序的下一个待执行的指令码的地址;周期确定模块,用于根据所述程序计数器的值确定相应的指令码的机器周期;软件计数器,用于在每个所述汇编单步执行结束后,累计由周期确定模块确定的所述机器周期,当汇编单步执行的所述指令码为中断指令码,或者当收到用户输入的暂停命令时,停止所述累计得到累计值;时间运算模块,用于根据软件计数器得到的所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。
本发明采用软件计数器对机器周期进行计数累计,从而克服了计数溢出的问题;并且测量结果中不包含额外的通信时间和处理时间,因此测量的准确度更高。
附图说明
图1为本发明所述程序运行时间的测量方法实施例的流程图;
图2为本发明所述测量芯片的仿真器实施例的结构示意图。
具体实施方式
图1为本发明所述程序运行时间的测量方法实施例的流程图,该方法可以结合仿真器的硬件实现,也可以通过软件模拟实现,如图所示,该方法包括如下步骤:
步骤100,当收到用户输入的运行命令时,识别运行模式,当识别出所述运行模式为测量模式时,继续执行下述步骤110。
其中,当采用仿真器实现本实施例时,所述仿真器可以为秒表仿真器,该仿真器的运行模式可以包括测量模式和仿真模式;所述测量模式是用于对被测程序的执行时间进行测量的模式;所述仿真模式是用于对程序在仿真芯片中的运行状况进行模拟仿真的模式。仿真器在测量模式下接收到运行命令时,继续执行下述步骤进行测量;仿真器在仿真模式下接收到运行命令时,可以采用现有技术的方式进行处理,与本发明无关,不再赘述。
此处需要说明的是,如果采用现有技术中的其他方式可以确定仿真器已经处于测量模式,则可以直接执行下述步骤110而省略本步骤。
步骤110,将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址。
其中,所述软件计数器是所述仿真器通过占用缓存空间而构建的计数器,与现有仿真器中的硬件计数器相比,由于缓存空间的容量相对较大,因此足够保存机器周期的累计值而不会发生计数溢出。
其中,所述程序计数器(Program Counter,简称:PC)是用于存放待执行的指令码的地址的存储空间,仿真器中的微控制单元根据该地址可以找到相应的指令码,以便用于执行。
步骤120,根据所述程序计数器的值确定相应的指令码的机器周期。
具体地,可以先根据所述PC的值确定相应的指令码,例如根据PC中存放的地址找到相应的指令码;然后根据预设的编译前的指令码与编译后的二进制码的映射关系确定所述指令码的机器周期,其中,该映射关系是在定义指令码时预先保存在编译器中的信息,用于对指令码进行编译。
步骤130,汇编单步执行所述指令码,结束后,通过所述软件计数器累计所述机器周期,当汇编单步执行的所述指令码为中断指令码,或者当所述仿真器收到用户输入的暂停命令时,执行步骤150,否则执行步骤140。
其中,所述汇编单步执行可以由所述仿真器实现,也可以由软件模拟实现。与连续执行操作不同的是,汇编单步执行操作每执行一次指令码,则返回一次执行结果,使软件计数器有机会对机器周期进行累计。这样做的目的是,指令码的执行是由仿真器中的硬件处理单元实现的,而机器周期的累计是由软件计数器实现的,如果让硬件处理单元连续执行被测程序中的多个指令码,则软件计数器无法得知在该连续执行过程中共执行了多少个指令码,也就无法进行累计,因此,本步骤中需要采用汇编单步执行的操作方式。
本步骤中设定的计数的结束条件:一个条件是当汇编单步执行的所述指令码为中断指令码时停止计数累计,在此之前执行的指令码的运行时间对于用户而言已经具有一定的参考价值,如果用户还关心该中断指令码之后的程序运行时间,可以重复执行本实施例所述方法;另一个条件是当仿真器收到用户输入的暂停命令时也停止计数累计,表明在此之前执行的指令码的运行时间是用户所关心的,因此不用再继续累计。
步骤140,将所述程序计数器的值更新为所述被测程序的下一个待执行的指令码的地址,并返回执行步骤120;
步骤150,停止所述累计得到累计值,并根据所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。
具体地,可以先根据所述时钟频率计算得到单个机器周期的运行时间;然后将所述单个机器周期的运行时间与所述机器周期的累计值相乘后得到所述被测程序的程序运行时间。
步骤160,将计算得到的所述被测程序的程序运行时间进行显示。
本步骤是可选步骤,用于告知用户最终的测量结果,采用其他方式进行通知也是可以的。
本实施例所述方法采用软件计数器对机器周期进行计数累计,从而克服了计数溢出的问题;并且测量结果中不包含额外的通信时间和处理时间,因此测量的准确度更高。
图2为本发明所述测量芯片的仿真器实施例的结构示意图,用以实现上述方法,如图所示,该仿真器包括:软件部分10和硬件部分20,其中的硬件部分20包括程序计数器21和微控制单元22。此处需要说明的是,虽然本实施例将仿真器划分为软件部分10和硬件部分20,但本领域技术人员应当理解,软件部分10中的各模块也必然要通过硬件实现,例如在作为缓存的只读存储器(Read-Only Memory,简称:ROM)中实现,只不过这些模块的具体实现方式并不属于本发明要讨论的内容,因此不做详细描述。以下说明该仿真器的工作原理:
软件部分10中的模式设定模块11根据用户的选择设定所述仿真器的运行模式,具体地,该仿真器的运行模式可以包括测量模式和仿真模式;当收到用户输入的运行命令时,由模式识别模块12识别所述运行模式;当识别模块识别12出所述运行模式为测量模式时,由执行控制模块13将软件计数器15清零,并将程序计数器21的值设定为被测程序的待执行的指令码的地址,并指示所述微控制单元22汇编单步执行所述指令码,所述微控制单元22根据程序计数器21中记录的地址找到相应的指令码进行执行。
此处需要说明的是,如果采用现有技术中的其他方式可以设定仿真器的模式并确认仿真器已经处于测量模式,则可以省略上述模式设定模块11和识别模块识别12。
在执行指令码之前,由周期确定模块14根据所述程序计数器21的值确定相应的指令码的机器周期,具体地,可以先根据程序计数器21的值确定相应的指令码,然后根据预设的编译前的指令码与编译后的二进制码的映射关系确定所述指令码的机器周期。
在所述微控制单元22的汇编单步执行结束后,由软件计数器15累计由周期确定模块14确定的所述机器周期,并由执行控制模块13将所述程序计数器21的值更新为所述被测程序的下一个待执行的指令码的地址,然后重复进行上述过程,直到当汇编单步执行的所述指令码为中断指令码,或者当收到用户输入的暂停命令时,停止所述软件计数器15的累计,并得到累计值。
此后,由时间运算模块16根据软件计数器15得到的所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。具体地,可以先根据所述时钟频率计算得到单个机器周期的运行时间;然后将所述单个机器周期的运行时间与所述机器周期的累计值相乘后得到所述被测程序的程序运行时间。
另外,所述软件部分10还可以进一步包括结果显示模块17,用于将所述时间运算模块16计算得到的所述被测程序的程序运行时间进行显示,使用户及时得知测量结果。
本实施例所述仿真器采用软件计数器对机器周期进行计数累计,从而克服了计数溢出的问题;并且测量结果中不包含额外的通信时间和处理时间,因此测量的准确度更高。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种程序运行时间的测量方法,其特征在于,包括:
步骤110,将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址;其中,所述软件计数器是仿真器通过占用缓存空间而构建的计数器;
步骤120,根据所述程序计数器的值确定相应的指令码的机器周期;
步骤130,汇编单步执行所述指令码,结束后,通过所述软件计数器累计所述机器周期,当汇编单步执行的所述指令码为中断指令码,或者当收到用户输入的暂停命令时,执行步骤150,否则执行步骤140;
步骤140,将所述程序计数器的值更新为所述被测程序的下一个待执行的指令码的地址,并返回执行步骤120;
步骤150,停止所述累计得到累计值,并根据所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。
2.根据权利要求1所述的方法,其特征在于,所述步骤120包括:
根据所述程序计数器的值确定相应的指令码;
根据预设的编译前的指令码与编译后的二进制码的映射关系确定所述指令码的机器周期。
3.根据权利要求1所述的方法,其特征在于,所述步骤150包括:
根据所述时钟频率计算得到单个机器周期的运行时间;
将所述单个机器周期的运行时间与所述机器周期的累计值相乘后得到所述被测程序的程序运行时间。
4.根据权利要求1所述的方法,其特征在于,所述步骤150之后还包括:步骤160,将计算得到的所述被测程序的程序运行时间进行显示。
5.根据权利要求1所述的方法,其特征在于,所述步骤110之前还包括:步骤100,当收到用户输入的运行命令时,识别运行模式,当识别出所述运行模式为测量模式时,执行所述步骤110,其中,所述测量模式是用于对所述被测程序的执行时间进行测量的模式。
6.一种测量芯片的仿真器,其特征在于,包括:软件部分和硬件部分,其中,
所述硬件部分包括:程序计数器和微控制单元;
所述软件部分包括:
执行控制模块,用于将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址,并指示所述微控制单元汇编单步执行所述指令码;在所述汇编单步执行结束后,将所述程序计数器的值更新为所述被测程序的下一个待执行的指令码的地址;其中,所述软件计数器是仿真器通过占用缓存空间而构建的计数器;
周期确定模块,用于根据所述程序计数器的值确定相应的指令码的机器周期;
软件计数器,用于在每个所述汇编单步执行结束后,累计由周期确定模块确定的所述机器周期,当汇编单步执行的所述指令码为中断指令码,或者当收到用户输入的暂停命令时,停止所述累计得到累计值;
时间运算模块,用于根据软件计数器得到的所述累计值和预设的时钟频率计算得到所述被测程序的程序运行时间。
7.根据权利要求6所述的仿真器,其特征在于,所述软件部分还包括:结果显示模块,用于将所述时间运算模块计算得到的所述被测程序的程序运行时间进行显示。
8.根据权利要求6所述的仿真器,其特征在于,所述软件部分还包括:
模式设定模块,用于根据用户的选择设定所述仿真器的运行模式;
模式识别模块,用于当收到用户输入的运行命令时,识别所述运行模式;
所述执行控制模块还用于当识别模块识别出所述运行模式为测量模式时,将软件计数器清零,并将程序计数器的值设定为被测程序的待执行的指令码的地址,并指示所述微控制单元汇编单步执行所述指令码;其中,所述测量模式是用于对所述被测程序的执行时间进行测量的模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210004989.4A CN103198002B (zh) | 2012-01-09 | 2012-01-09 | 程序运行时间的测量方法及仿真器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210004989.4A CN103198002B (zh) | 2012-01-09 | 2012-01-09 | 程序运行时间的测量方法及仿真器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198002A CN103198002A (zh) | 2013-07-10 |
CN103198002B true CN103198002B (zh) | 2015-03-25 |
Family
ID=48720585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210004989.4A Active CN103198002B (zh) | 2012-01-09 | 2012-01-09 | 程序运行时间的测量方法及仿真器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198002B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407968B (zh) * | 2014-10-30 | 2017-06-13 | 北京控制工程研究所 | 一种通过静态分析测算代码指令最长运行时间的方法 |
CN106201802B (zh) * | 2016-07-20 | 2019-08-13 | 中国航空工业集团公司航空动力控制系统研究所 | 基于逻辑分析仪的cpu内部中断响应时间和恢复时间的测量方法 |
CN107665159B (zh) * | 2016-07-27 | 2022-07-12 | 上海华虹集成电路有限责任公司 | 安全处理器跳转指令固定执行时间的测试方法 |
CN106933665B (zh) * | 2017-03-09 | 2020-06-26 | 中国科学技术大学 | 预测mpi程序运行时间的方法 |
CN109491877A (zh) * | 2017-09-12 | 2019-03-19 | 江西洪都航空工业集团有限责任公司 | 一种飞控计算机软件耗时计算方法 |
CN111984521B (zh) * | 2019-05-23 | 2022-11-29 | 核工业理化工程研究院 | 一种无需jtag介入的板级调试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1558328A (zh) * | 2004-02-11 | 2004-12-29 | 绿创科技股份有限公司 | 硬件仿真程序执行时间调整方法及该仿真程序的记录媒体 |
CN101226500A (zh) * | 2008-02-18 | 2008-07-23 | 中兴通讯股份有限公司 | 借用中央处理单元定时器精确测量程序运行时间的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5920059A (ja) * | 1982-07-23 | 1984-02-01 | Citizen Watch Co Ltd | マイクロ・プロセツサ |
-
2012
- 2012-01-09 CN CN201210004989.4A patent/CN103198002B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1558328A (zh) * | 2004-02-11 | 2004-12-29 | 绿创科技股份有限公司 | 硬件仿真程序执行时间调整方法及该仿真程序的记录媒体 |
CN101226500A (zh) * | 2008-02-18 | 2008-07-23 | 中兴通讯股份有限公司 | 借用中央处理单元定时器精确测量程序运行时间的方法 |
Non-Patent Citations (1)
Title |
---|
51系列单片机延时程序运行时间的计算;彭志刚;《仪器仪表用户》;20081008(第5期);第102-103页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103198002A (zh) | 2013-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198002B (zh) | 程序运行时间的测量方法及仿真器 | |
US20110197174A1 (en) | Method, System and Computer Readable Medium for Generating Software Transaction-Level Modeling (TLM) Model | |
CN102722434B (zh) | 一种针对Linux进程调度的性能测试方法和工具 | |
HRP20180982T1 (hr) | Naredba za izračunavanje udaljenosti do specificirane granice memorije | |
US7844928B2 (en) | Method and apparatus for evaluating integrated circuit design performance using enhanced basic block vectors that include data dependent information | |
CN102623069B (zh) | 随机激励闪存模型验证方法 | |
US10101796B2 (en) | Processor power estimation | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
KR20180096780A (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
CN100456248C (zh) | 获得程序代码和函数执行覆盖率及执行效率的装置及方法 | |
US8700380B2 (en) | Method for generating performance evaluation model | |
JP2007334812A (ja) | シミュレータ及びシミュレーション方法 | |
CN102520984B (zh) | 目标软件在指定硬件环境中最差时间的计算方法 | |
CN106610873B (zh) | 一种Android设备上应用程序能耗预测方法 | |
KR20150062654A (ko) | 소프트웨어 성능 측정 방법 및 장치 | |
JP6471615B2 (ja) | 性能情報生成プログラム、性能情報生成方法及び情報処理装置 | |
CN116501734A (zh) | 一种传感器时序数据实时后处理方法、装置及电子设备 | |
CN104685473B (zh) | 一种软件测试方法及装置 | |
CN116149917A (zh) | 评估处理器性能的方法及装置、计算设备、可读存储介质 | |
CN109933499A (zh) | 一种读写指示灯的控制方法及相关装置 | |
CN112269723B (zh) | 存储设备的性能分析方法、装置及可读存储介质 | |
CN110688289A (zh) | 一种基于仿真的处理器性能事件动态监测方法 | |
CN112527571A (zh) | 一种cpu指令集覆盖率计算方法及装置 | |
CN115658455B (zh) | 处理器性能评估方法、装置、电子设备及可读存储介质 | |
JP2005165825A (ja) | トレース情報記録装置 |
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: 200235 Shanghai city Xuhui District Longcao Road No. 299 Tianhua Information Technology Park Building 2 floor A block 5 Patentee after: SHANGHAI EASTSOFT MICROELECTRONICS CO., LTD. Address before: 200235 Shanghai city Xuhui District Longcao Road No. 299 Tianhua Information Technology Park Building 2 floor A block 5 Patentee before: Shanghai Hair Group Integated Circuit Co., Ltd. |