程序片断执行时间的测量方法及装置.pdf

上传人:32 文档编号:781115 上传时间:2018-03-11 格式:PDF 页数:18 大小:739.78KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910167583.6

申请日:

2009.08.27

公开号:

CN101635940A

公开日:

2010.01.27

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 11/36申请公布日:20100127|||实质审查的生效|||公开

IPC分类号:

H04W24/00; H04B17/00

主分类号:

H04W24/00

申请人:

中兴通讯股份有限公司

发明人:

徐 融; 王立春; 杨青海

地址:

518057广东省深圳市南山区科技南路55号

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司

代理人:

余 刚;吴孟秋

PDF下载: PDF下载
内容摘要

本发明公开了一种程序片断执行时间的测量方法及装置。在上述方法中,程序加载后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点;当处理器执行程序到上述开始地址时,触发设置在开始地址的断点,记录程序片断执行开始的开始时间戳;当执行程序到上述结束地址时,触发设置在结束地址的断点,记录程序片断执行结束的结束时间戳;将上述结束时间戳与上述开始时间戳之差,作为该程序片断的执行时间。根据本发明,可以缩短测量的时间,节约测量的成本。

权利要求书

1: 一种程序片断执行时间的测量方法,其特征在于,包括: 程序加载后,在被测量程序片断的开始地址的位置和结束 地址的位置分别设置断点; 当处理器执行程序到所述开始地址时,触发设置在开始地 址的断点,记录所述程序片断执行开始的开始时间戳; 当执行程序到所述结束地址时,触发设置在结束地址的断 点,记录所述程序片断执行结束的结束时间戳; 将所述结束时间戳与所述开始时间戳之差,作为所述程序 片断的执行时间。
2: 根据权利要求1所述的方法,其特征在于,在执行所述程序片 断的期间,如果处理器调度了其他任务或线程,则所述方法还 包括: 记录在所述期间内每次上下文切出到切入的时间间隔并 求和,得到执行所述程序片断的等待时间; 将所述执行时间与所述等待时间之差作为所述程序片断 的净耗时间。
3: 根据权利要求2所述的方法,其特征在于,记录每次上下文切 出到切入的时间间隔包括: 在捕获到切出所述程序片断执行上下文事件时,获取并记 录上下文切出的时间戳; 在捕获到切入所述程序片断执行上下文事件时,获取上下 文切入的时间戳,并根据上下文切入的所述时间戳和上下文切 出的所述时间戳,获取所述时间间隔。
4: 根据权利要求1至3中任一项所述的方法,其特征在于,所述 断点包括:所述处理器支持的硬件断点或使用指令替换产生中 断方式实现的软件断点。
5: 根据权利要求1至3中任一项所述的方法,其特征在于,所述 时间戳的时钟源为驱动嵌入式操作系统节拍的时钟源。
6: 根据权利要求1所述的方法,其特征在于,在程序加载前,所 述方法还包括: 确定被测量的所述程序片断的所述开始地址和所述结束 地址。
7: 一种程序片断执行时间的测量装置,其特征在于,包括: 设置模块,用于在程序加载后,在被测量程序片断的开始 地址的位置和结束地址的位置分别设置断点; 第一记录模块,用于在处理器执行程序到所述开始地址 时,记录所述程序片断执行开始的开始时间戳,在执行程序到 所述结束地址时,记录所述程序片断执行结束的结束时间戳; 第一计算模块,用于根据所述结束时间戳和所述开始时间 戳计算所述程序片断的执行时间。
8: 根据权利要求7所述的装置,其特征在于,所述装置还包括: 第二记录模块,用于记录在所述程序片断的执行期间内每 次上下文切出到切入的时间间隔; 第二计算模块,用于根据所述第二记录模块记录的每次上 下文切出到切入的时间间隔,计算执行所述程序片断的等待时 间; 第三计算模块,用于根据所述执行时间与所述等待时间, 计算所述程序片断的净耗时间。
9: 根据权利要求8所述的装置,其特征在于,所述第二记录模块 包括: 第一捕获单元,用于捕获切出所述程序片断执行上下文事 件,并在捕获到切出所述程序片断执行上下文事件时,触发第 一记录单元; 第一记录单元,用于获取并记录上下文切出的时间戳; 第二捕获单元,用于捕获切入所述程序片断执行上下文事 件,并在捕获到切入所述程序片断执行上下文事件时,触发第 二记录单元; 第二记录单元,用于获取并记录上下文切入的时间戳; 计算单元,用于根据上下文切入的所述时间戳和上下文切 出的所述时间戳,计算所述时间间隔。
10: 根据权利要求7至9中任一项所述的装置,其特征在于,所述 时间戳的时钟源为驱动嵌入式操作系统节拍的时钟源。

说明书


程序片断执行时间的测量方法及装置

    【技术领域】

    本发明涉及移动通信技术领域,尤其涉及一种程序片断执行时间的测量方法及装置。

    背景技术

    目前,嵌入式产品一般都需要在同一时间内并发完成多项功能,因而,一般都基于多任务操作系统,例如VxWorks。特别是在高端领域(例如,通讯)涉及多处理器的分布式架构,其软件系统较为复杂。多任务嵌入式系统性能越强大、所承载的功能越多,其性能问题越显重要。在这样的多任务系统中,每个模块的执行效率不仅仅涉及该模块,同时也涉及其他模块及整个系统。

    各个具体模块在性能上展现出来的问题主要在两个方面,即时间和空间。其中,时间问题具体地是指程序指令执行所要花费的处理器时间问题。由于处理器单位时间内所能执行的最大指令条数总是有限的、确定的,因此,某个模块或者某个功能对处理器的消耗可以用时间来衡量,该时间称为处理器时间。对程序执行的实际时间和所占用的处理器时间的度量是模块性能度量的重要方面,通过这两个方面可以发现模块的性能问题,并可以进一步对系统性能进行优化。

    传统的时间度量方法是在代码编写时确定被测量程序片断,然后,在代码片断的前后分别打桩获取时间并进行计算。该方法需要在编译前确定并标记要被测量的程序片断,而编译后所标记程序片断不能变化,未打桩的程序片断无法测量。但是,在实际使用时,通常在程序编译完成后的执行过程中,才能根据执行的情况临时确定要被测量的程序片断,并需要根据测量的结果不断变化被测量的程序片断。在这种情况下,需要变更代码重新编译,费时费力。并且,在很多情况下,可能根本不允许重新制作版本,例如,系统测试或者不可复现故障,因此,可能无法进行测量。

    【发明内容】

    有鉴于此,本发明提供了一种改进的程序片断执行时间的测量方案,用以解决现有技术中无法动态确定被测量的程序片断而导致测量消耗的时间和精力较多的问题。

    根据本发明的一个方面,提供了一种程序片断执行时间的测量方法。

    根据本发明的程序片断执行时间的测量方法包括:程序加载后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点;当处理器执行程序到上述开始地址时,触发设置在开始地址的断点,记录程序片断执行开始的开始时间戳;当执行程序到上述结束地址时,触发设置在结束地址的断点,记录程序片断执行结束的结束时间戳;将上述结束时间戳与上述开始时间戳之差,作为该程序片断的执行时间。

    在执行上述程序片断的期间,如果处理器调度了其他任务或线程,则上述方法还包括:记录在该期间内每次上下文切出到切入的时间间隔并求和,得到执行该程序片断的等待时间;将所述执行时间与所述等待时间之差作为所述程序片断的净耗时间。

    具体地,记录每次上下文切出到切入的时间间隔包括:在捕获到切出该程序片断执行上下文事件时,获取并记录上下文切出的时间戳;在捕获到切入该程序片断执行上下文事件时,获取上下文切入的时间戳,并根据上下文切入的时间戳和上下文切出的时间戳,获取所述时间间隔。

    优选地,上述断点包括:处理器支持的硬件断点或者使用指令替换产生中断方式实现的软件断点。

    优选地,上述时间戳的时钟源为驱动嵌入式操作系统节拍的时钟源。

    进一步地,在程序加载前,上述方法还包括:确定被测量的所序片断的开始地址和结束地址。

    根据本发明的另一个方面,提供了一种程序执行时间的测量装置。

    根据本发明的程序执行时间的测量装置包括:设置模块、第一记录模块和第一计算模块。其中,设置模块,用于在程序加载后,在被测量程序片断的开始地址的位置和结束地址地位置分别设置断点;第一记录模块,用于在处理器执行程序到上述开始地址时,记录程序片断执行开始的开始时间戳,在执行程序到上述结束地址时,记录程序片断执行结束的结束时间戳;第一计算模块,用于根据上述结束时间戳和上述开始时间戳计算该程序片断的执行时间。

    进一步地,上述装置还包括:第二记录模块,用于记录在程序片断的执行期间内每次上下文切出到切入的时间间隔;第二计算模块,用于根据第二记录模块记录的每次上下文切出到切入的时间间隔,计算执行该程序片断的等待时间;第三计算模块,用于根据上述执行时间与上述等待时间,计算该程序片断的净耗时间。

    具体地,上述第二记录模块包括:第一捕获单元,用于捕获切出程序片断执行上下文事件,并在捕获到切出该程序片断执行上下文事件时,触发第一记录单元;第一记录单元,用于获取并记录上下文切出的时间戳;第二捕获单元,用于捕获切入程序片断执行上下文事件,并在捕获到切入该程序片断执行上下文事件时,触发第二记录单元;第二记录单元,用于获取并记录上下文切入的时间戳;计算单元,用于根据上下文切入的时间戳和上下文切出的时间戳,计算上述时间间隔。

    优选地,上述时间戳的时钟源为驱动嵌入式操作系统节拍的时钟源。

    通过本发明的上述至少一个方案,通过在程序加载后在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点,从而捕获并记录被测量的程序片断执行开始的开始时间戳和执行结束的结束时间戳,进而得到该程序片断的执行时间,解决了现有技术中被测量的程序片断无法动态确定的问题,缩短了测量的时间,节约了测量的成本。

    本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

    【附图说明】

    附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

    图1为根据本发明实施例的程序片断执行时间的测量方法的流程图;

    图2为根据本发明实施例的程序片断执行时间的测量方法的具体实现流程图;

    图3为根据本发明实施例的程序片断执行时间的测量装置的结构示意图;

    图4为根据本优选发明实施例的程序片断执行时间的测量装置的结构示意图。

    【具体实施方式】

    功能概述

    由于现有技术中通过在程序片断的前后分别打桩获取时间并进行计算的,因此需要在编译前确定并标记要被测量的程序片断,由于编译后所标记程序片断不能变化,如果被测量的程序片断发生改变,则需要变更代码重新编译,费时费力。针对该问题,本发明实施例提供了一种改变的程序片断执行时间的测量方案。在本发明实施例中,在确定被测量的程序片断的开始地址和结束地址后,在程序加载后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点,当处理器执行程序到开始地址时,触发设置在开始地址的断点,记录被测量的程序片断执行开始的开始时间戳,当执行程序到结束地址时,触发设置在结束地址的断点,记录被测量的程序片断执行结束的结束时间戳,然后根据记录的开始时间戳和结束时间戳,计算该程序片断的执行时间。

    在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

    以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

    根据本发明实施例,首先提供了一种程序片断执行时间的测量方法。

    图1为根据本发明实施例的程序片断执行时间的测量方法的流程图,如图1所示,根据本发明实施例的程序片断执行时间的测量方法主要包括以下步骤(步骤S101-步骤S107):

    步骤S101:程序加载后在被测量程序片断的开始地址和结束地址处分别设置断点;

    在具体实施过程中,在设置断点前,可以根据需要首先确定被测量程序片断的开始地址和结束地址。

    在具体应用中,在开始地址和结束地址处设置的断点,可以选取处理器支持的硬件断点,也可以选取使用指令替换产生中断方式实现的软件断点。其中,软件断点是指用可产生中断指令替换断点地址指令,以实现对指定地址的执行捕获功能。可产生中断指令如x86体系处理器的INT3指令。

    如果根据本发明实施例的技术方案应用在嵌入式操作系统,或应用的操作系统支持断点功能,则可以采用硬件断点,如果操作系统本身不支持断点功能或者没有使用嵌入式操作系统,则需要采用软件断点,在操作系统中补入软件断点功能。

    步骤S103:处理器执行程序到开始地址时,触发开始地址处断点,记录程序片断执行开始的时间戳tbegin,然后程序继续正常执行;

    在具体应用中,可以设置函数对时间戳进行记录,具体地,在步骤S101中设置断点时,可以为设置的每个断点设置一个对应的处理函数,当其对应的断点被触发时,处理函数记录当前的时间戳。

    步骤S105:执行程序到结束地址时,触发结束地址处断点,记录程序片断执行结束的时间戳tend;

    具体地,结束地址处的断点被触发时,进入该断点对应的处理函数,该处理函数记录当前的时间戳。

    步骤S107:计算得到程序片断的执行时间tΔ=tend-tbegin。

    在具体应用中,在上述步骤S103与步骤S105之间,如果在该程序执行期间,处理器调度了其他任务(或线程),则根据本发明实施例的上述程序片断执行时间的测量方法进一步可以包括以下步骤:

    步骤1,记录每次上下文切出到切入的时间间隔并求和,得到被测量的程序片断本次执行的等待时间tready;

    步骤2,将程序片断的执行时间tΔ减去等待时间tready,得到该程序片断实际被处理器调度的时间,即处理器时间tcpu,也称为该程序片断的净耗时间。

    根据本发明实施例的上述方法可以应用于嵌入式系统,由于嵌入式系统使用的处理器带有至少一个高精度时钟源,如x86系列处理器的TSC、PowerPC系列处理器的DEC、MIPS系列处理器的C0_COUNT、ARM系列处理器的timer等;该时钟源一般作为嵌入式操作系统的时间基准时钟源,嵌入式操作系统的时间基准是指调度的最小时间单位,如VxWorks的Ticks、Linux的jiffies等。因此,在本发明实施例中记录的时间戳的时钟源可以采用驱动嵌入式操作系统节拍的时钟源,由于该时钟源由操作系统进行配置管理,精度由硬件自身的工作频率决定,因此,采用该时钟源可以提高测量的精度。

    为进一步理解本发明实施例提供的技术方案,下面通过具体实施例对本发明实施例提供的上述技术方案的具体实现过程进行描述。

    图2为根据本发明实施例的程序片断执行时间的测量方法的具体实现流程图,如图2所示,根据本发明实施例的程序片断执行时间的测量方法的具体实现主要包括以下步骤:

    步骤201,确定待测量程序片断开始地址和结束地址;

    步骤202,注册任务(或线程)调度事件处理函数,用于捕获程序片断执行期间任务(或线程)的等待时间;

    步骤203,在待测量程序片断开始地址和结束地址处各打一个断点,用于捕获程序片断开始执行和执行完成事件;

    步骤204,触发程序片断执行;

    步骤205,捕获到程序片断开始执行事件,获取并记录程序片断开始执行时间;

    步骤206,任务(或线程)调度事件处理函数捕获到切出程序片断执行上下文事件(即处理器调度其他任务或线程),程序处于等待状态,等待下一次处理器调度,获取并记录上下文切出时间;

    步骤207,任务(或线程)调度事件处理函数捕获到切入程序片断执行上下文事件(即处理器调度其他任务或线程结束,返回执行被测量的程序),程序恢复执行状态,获取上下文切入时间,并根据之前记录的上下文切出时间计算出本次等待时间;

    步骤208,重复步骤206至步骤207,并将每次等待时间累加得到本次程序片断执行期间的等待时长;

    步骤209,捕获到程序片断结束执行事件,获取程序片断结束执行时间,并根据程序片断开始执行时间计算出本次程序片断执行时长;

    步骤210,用本次程序执行时长减去本次程序执行期间等待时长得出实际的净耗时。

    步骤211,取消待测量程序片断开始和结束处的断点;

    步骤212,注销任务(线程)调度事件处理函数,功能禁用。

    在本发明实施例的上述方法中借用断点技术,同时结合任务(线程)切换捕获技术,在保证精度的同时,极大地提高了程序片断执行时间测量的灵活性。

    根据本发明实施例,还提供了一种程序片断执行时间的测量装置。

    图3为根据本发明实施例的程序片断执行时间的测量装置的结构示意图,如图3所示,根据本发明实施例的程序片断执行时间的测量装置主要包括:设置模块1、第一记录模块3和第一计算模块5。其中,设置模块1,用于在程序加载后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点;第一记录模块3,用于在处理器执行程序到开始地址时,记录程序片断执行开始的开始时间戳,在执行程序到结束地址时,记录程序片断执行结束的结束时间戳;第一计算模块5,用于根据上述结束时间戳和上述开始时间戳计算程序片断的执行时间。

    在具体应用中,设置模块1在分别设置开始地址和结束地址处的断点后,当处理器执行程序到开始地址处,触发该位置的断点,从而触发第一记录模块3记录程序片断执行开始的时间戳,同样,当执行程序到结束地址处时,触发该位置的断点,第一记录模块3记录程序片断执行结束的时间戳。

    优选地,如图4所示,根据本发明实施例的程序片断执行时间的测量装置还可以包括:第二记录模块2、第二计算模块4和第三计算模块6,其中,第二记录模块2,用于记录在程序片断的执行期间内每次上下文切出到切入的时间间隔;第二计算模块4,用于根据第二记录模块2记录的每次上下文切出到切入的时间间隔,计算执行程序片断的等待时间;第三计算模块6,用于根据上述执行时间与上述等待时间,计算程序片断的净耗时间。具体地,净耗时间=执行时间-等待时间。

    进一步地,如图4所示,上述第二记录模块2可以进一步包括:第一捕获单元21、第一记录单元23、第二捕获单元25、第二记录单元27和计算单元29。其中,第一捕获单元21,用于捕获切出程序片断执行上下文事件,并在捕获到切出程序片断执行上下文事件时,触发第一记录单元23;第一记录单元23,用于获取并记录上下文切出的时间戳;第二捕获单元25,用于捕获切入程序片断执行上下文事件,并在捕获到切入程序片断执行上下文事件时,触发第二记录单元27;第二记录单元27,用于获取并记录上下文切入的时间戳;计算单元29,用于根据上下文切入的时间戳和上下文切出的时间戳,计算时间间隔。

    优选地,上述时间戳的时钟源为驱动嵌入式操作系统节拍的时钟源。

    如上所述,借助本发明实施例提供的技术方案,通过采用断点技术,同时结合任务或线程切换捕获技术,节省了确定被测量程序片断后重新编译加载程序的时间,提高了程序片断执行时间测量的灵活性,同时还提高了测量的精度和程序片断运行时间测量功能使用的效率。

    以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

程序片断执行时间的测量方法及装置.pdf_第1页
第1页 / 共18页
程序片断执行时间的测量方法及装置.pdf_第2页
第2页 / 共18页
程序片断执行时间的测量方法及装置.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《程序片断执行时间的测量方法及装置.pdf》由会员分享,可在线阅读,更多相关《程序片断执行时间的测量方法及装置.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种程序片断执行时间的测量方法及装置。在上述方法中,程序加载后,在被测量程序片断的开始地址的位置和结束地址的位置分别设置断点;当处理器执行程序到上述开始地址时,触发设置在开始地址的断点,记录程序片断执行开始的开始时间戳;当执行程序到上述结束地址时,触发设置在结束地址的断点,记录程序片断执行结束的结束时间戳;将上述结束时间戳与上述开始时间戳之差,作为该程序片断的执行时间。根据本发明,可以。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1