一种热点数据的统计方法技术

技术编号:9490052 阅读:77 留言:0更新日期:2013-12-25 23:51
本发明专利技术公开了一种热点数据的统计方法,该方法步骤包括:通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;链接器通过定义数据结构来加载第一定义表,并在储存地址分配阶段基于文件名、变量名依次与数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在数据结构的表项中,最终输出第二定义表,第二定义表包括用于表示目标变量总数的参数;处理器模型在运行时加载第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;根据各个全局计数器,获取各目标变量的访问频度。本发明专利技术实现简单、便于移植。

【技术实现步骤摘要】
一种热点数据的统计方法
本专利技术涉及程序性能分析技术,尤其涉及一种热点数据的统计方法。
技术介绍
程序运行时并非均衡的对每个函数、数组进行访问,约80%的运行时间花在20%的代码中。嵌入式平台上的存储资源有限,对热点数据分布的统计是为了将访问频度较高的函数、数组尽可能存储与访问速度更快的片上存储。集成开发环境(IntegratedDevelopmentEnvironment,IDE)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。现有的集成开发环境,如微软的VisualStudio系列等,它们运行的底层硬件平台均提供了用于程序性能数据反馈的专用指令,并依托于编译器对目标源程序进行代码插桩(CodeInstrumentation),然后依托处理器硬件平台的计算完成对热点数据的统计。现有技术的热点数据统计方法的不足之处在于:1、依赖于处理器硬件平台的支持;2、评估热点数据的粒度并未细分至每个数组元素。
技术实现思路
本专利技术的目的是为了解决上述现有技术存在的不足之处,提供了一种实现简单、便于跨平台移植的热点数据统计方法。为实现上述目的,本专利技术提供了一种热点数据的统计方法,该方法包括以下步骤:通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;根据各全局计数器,获取各目标变量的访问频度。本专利技术实现简单、不依赖于硬件平台、可完成对数组元素的独立评估。附图说明图1为本专利技术实施例提供的一种热点数据统计方法流程图;图2为针对强制类型转换的处理流程图。具体实施方式下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。本专利技术实施例是在处理器模型的基础上讨论如何统计热点数据。应用程序对存储资源的申请通常是靠编译器静态分配和程序员从内存的堆空间中动态申请,其中动态数组的大小只有在运行时(Run-Time)可知,且伴随着动态释放的过程,很难结合静态数据进行分析。因此,热点数据通常是对应用程序执行时访问频度较高的全局或局部static类型的变量、静态分配数组的分析。进行热点数据分析时,尽管可在编译器前端获取目标数组、变量的名称、所在文件名等信息,但它们的存储地址只能在链接期确定,因此,本专利技术实施例将对目标数据信息的提取放在汇编期与链接期,未初始化的全局、局部静态变量、数组被分配在第一数据段,例如.bss段,已初始化的局部、全局静态变量、数组被分配在第二数据段,例如.data段,而被const修饰的只读数据和初始化字符串被分配在第三数据段,例如,.rodata段,它们的汇编格式如下所示。程序并不一定连续访问变量或数组内的各元素,评估热点数据时,本专利技术实施例统计了应用程序对包含n个元素的数组中每个元素i(0<=i<n-1)的访问次数f(i),最后求取各元素的访问期望值作为评估依据,评估数据热点度的公式如下:其中,f(i)为元素i被访问次数图1为本专利技术实施例提供的一种热点数据统计方法流程图,为了更客观的分析应用程序对静态变量、数组的访问频率,通常对同一个可执行文件施加多组数据激励,步骤1~7详细描述了整个操作流程以及各关键技术要点。1、针对应用程序特性提供多套数据激励,如Mp3Decoder程序中可提供不同格式、采样率不一致的音频文件;2、汇编器的语义分析前段按照指定语法格式,通过识别.data、.bss、.rodata等关键字,提取出静态分配变量的各项信息,并组织成第一定义表结构供后续阶段加载。在程序设计中,静态变量的数据类型不仅可以是整型,也可以是由用户定义的结构体或者联合体。结构体中一般由多种、多个子数据类型组成。如下表所示,结构体变量Sample变量有四个子元素{a,b,c,d},数据类型依次是{int,short,short,char},在编译后生成的汇编代码中它们的类型依次为{.long,.short,.short,.byte},在可执行文件中用于访问他们的模式以及内存读取的字节数分别为{{ldw,4},{ldh,2},{ldh,2},{ldb,1}}。本专利技术实施例是通过在处理器模型中对虚拟内存系统进行标记完成对热点数据的统计,然而,虚拟内存系统中是以字节为单位,为了避免统计过程中出现漏记或多记,需要严格的分析变量中子元素的类型,这就导致多层次定义表的出现,预处理表的结构如下所示,<Start>:<End>代表全部文件结构,FileNum代表整个应用程序中包含静态分配变量的文件数。<Head>:<Tail>代表一个汇编文件的组织结构,其中FileName是用于存储目标变量所在文件名的字符串,TotalNum代表文件内目标变量的个数。<BegVar>:<EndVar>代表一个目标变量的组织结构,其中VarName是用于存储目标变量名称的字符串,Section代表目标变量所在段的名称,且Section∈{Data,Bss,Rodata},VarNum代表目标变量中元素个数。<Set>代表目变量中具体子元素的属性,其中Type代表子元素所占据的字节数,且Type∈{Byte,Short,Long},Number则是为了压缩存储空间用,即如果连续的Number个子元素的类型一致,它的值默认为1,以文件main.c中变量Sample_为例,它对应的表结构如下所示。3、链接器定义了如下数据结构来加载汇编期生成的第一定义表Var.def,其中,结构体FileTable定义了文件级所需的参数信息,FileName用于存储文件名,VarTable_是用于存储本专利技术件中存在的目标变量表;结构体VarTable中定义了目标变量表中各表项的信息,VarName用于存储变量名,SecType_用于存储目标变量所在段名称,SetTable_是存储了变量中各子元素的表;结构体SetTable定义了子元素的各项信息,Addr代表内存分配完成后的存储空间地址,Number代表连续同数据类型的子元素个数,DataType_代表子元素的数据类型,链接器对预处理表Var.def的加载伪代码如下所示。4、链接器加载第一定义表Var.def成功后,开始执行基础功能并在储存地址分配阶段基于文件名、变量名依次与FileTable_中各级进行匹配。当匹配成功时,将变量子元素被分配的首地址记录在SetTable_的Addr表项中,最终以第二定义表,例如Set.def表结构输出。该表相比于Var.def表,只保留Set表项,其中Addr代表子元素存储首地址,Idx代表Set表项对应静态变量的索引值,Name代表变量名。TotalSe本文档来自技高网...
一种热点数据的统计方法

【技术保护点】
一种热点数据的统计方法,其特征在于:通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;根据各个全局计数器,获取各目标变量的访问频度。

【技术特征摘要】
1.一种热点数据的统计方法,其特征在于:通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;根据各个全局计数器,获取各目标变量的访问频度。2.根据权利要求1所述的方法,其特征在于,根据各个全局计数器,获取各目标变量的访问频度步骤包括:通过各个全局计数器,获取具体数组中各元素的访问次数;根据所述数组别中各元素的访问次数求取各元素的访问频度,并作为热点数据的评估依据。3.根据权利要求2所述的方法,其特征在于,所述热点数据的访问频度公式为:其中,f(...

【专利技术属性】
技术研发人员:朱浩彭楚应欢王东辉洪缨
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1