一种热点数据的统计方法

文档序号:6511335阅读:2305来源:国知局
一种热点数据的统计方法
【专利摘要】本发明公开了一种热点数据的统计方法,该方法步骤包括:通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;链接器通过定义数据结构来加载第一定义表,并在储存地址分配阶段基于文件名、变量名依次与数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在数据结构的表项中,最终输出第二定义表,第二定义表包括用于表示目标变量总数的参数;处理器模型在运行时加载第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;根据各个全局计数器,获取各目标变量的访问频度。本发明实现简单、便于移植。
【专利说明】一种热点数据的统计方法
【技术领域】
[0001]本发明涉及程序性能分析技术,尤其涉及一种热点数据的统计方法。
【背景技术】
[0002]程序运行时并非均衡的对每个函数、数组进行访问,约80%的运行时间花在20%的代码中。嵌入式平台上的存储资源有限,对热点数据分布的统计是为了将访问频度较高的函数、数组尽可能存储与访问速度更快的片上存储。
[0003]集成开发环境(IntegratedDevelopment Environment, IDE)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
[0004]现有的集成开发环境,如微软的Visual Studio系列等,它们运行的底层硬件平台均提供了用于程序性能数据反馈的专用指令,并依托于编译器对目标源程序进行代码插桩(Code Instrumentation),然后依托处理器硬件平台的计算完成对热点数据的统计。
[0005]现有技术的热点数据统计方法的不足之处在于:
[0006]1、依赖于处理器硬件平台的支持;
[0007]2、评估热点数据的粒度并未细分至每个数组元素。

【发明内容】

[0008]本发明的目的是为了解决上述现有技术存在的不足之处,提供了一种实现简单、便于跨平台移植的热点数据统计方法。
[0009]为实现上述目的,本发明提供了一种热点数据的统计方法,该方法包括以下步骤:
[0010]通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;
[0011 ] 链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;
[0012]处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;
[0013]根据各全局计数器,获取各目标变量的访问频度。
[0014]本发明实现简单、不依赖于硬件平台、可完成对数组元素的独立评估。
【专利附图】

【附图说明】
[0015]图1为本发明实施例提供的一种热点数据统计方法流程图;[0016]图2为针对强制类型转换的处理流程图。
【具体实施方式】
[0017]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0018]本发明实施例是在处理器模型的基础上讨论如何统计热点数据。应用程序对存储资源的申请通常是靠编译器静态分配和程序员从内存的堆空间中动态申请,其中动态数组的大小只有在运行时(Run-Time)可知,且伴随着动态释放的过程,很难结合静态数据进行分析。因此,热点数据通常是对应用程序执行时访问频度较高的全局或局部static类型的变量、静态分配数组的分析。进行热点数据分析时,尽管可在编译器前端获取目标数组、变量的名称、所在文件名等信息,但它们的存储地址只能在链接期确定,因此,本发明实施例将对目标数据信息的提取放在汇编期与链接期,未初始化的全局、局部静态变量、数组被分配在第一数据段,例如.bss段,已初始化的局部、全局静态变量、数组被分配在第二数据段,例如.data段,而被const修饰的只读数据和初始化字符串被分配在第三数据段,例如,.1Odata段,它们的汇编格式如下所示。
[0019]
【权利要求】
1.一种热点数据的统计方法,其特征在于: 通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载; 链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数; 处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数; 根据各个全局计数器,获取各目标变量的访问频度。
2.根据权利要求1所述的方法,其特征在于,根据各个全局计数器,获取各目标变量的访问频度步骤包括: 通过各个全局计数器,获取具体数组中各元素的访问次数; 根据所述数组别中各元素的访问次数求取各元素的访问频度,并作为热点数据的评估依据。
3.根据权利要求1或2所述的方法,其特征在于,所述数据访问频度公式为:

4.根据权利要求1所述的方法,其特征在于,当所述处理器模型加载所述第二定义表后生成可执行文件,并在数据激励后对虚拟内存系统进行目标数据标记。
5.根据权利要求4所述的方法,其特征在于,所述对虚拟内存系统进行目标数据标记是针对目标变量中各子元素的首地址进行标记。
6.根据权利要求4所述的方法,其特征在于,所述对虚拟内存系统进行目标数据标记步骤包括: 读取数据结构体中各子元素存储的首地址; 计算虚拟内存系统中起始页号,以及虚拟内存索引值; 计算虚拟内存系统中终止页号,以及虚拟内存索引值; 标记各子元素在所述虚拟内存中的首地址。
7.根据权利要求1所述的方法,其特征在于,所述数据段类型包括用于定义未初始化的全局、局部静态变量的第一数据段、用于定义己初始化的全局、局部静态变量的第二数据段和用于定义只读数据和初始化字符串的第三数据段。
8.根据权利要求1至7中任一权利要求所述的方法,其特征在于:该方法在模拟执行平台上运行,所述模拟执行平台是针对各种体系结构处理器的模拟器。
【文档编号】G06F17/30GK103473319SQ201310415469
【公开日】2013年12月25日 申请日期:2013年9月12日 优先权日:2013年9月12日
【发明者】朱浩, 彭楚, 应欢, 王东辉, 洪缨 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1