CN103473319A - 一种热点数据的统计方法 - Google Patents

一种热点数据的统计方法 Download PDF

Info

Publication number
CN103473319A
CN103473319A CN2013104154697A CN201310415469A CN103473319A CN 103473319 A CN103473319 A CN 103473319A CN 2013104154697 A CN2013104154697 A CN 2013104154697A CN 201310415469 A CN201310415469 A CN 201310415469A CN 103473319 A CN103473319 A CN 103473319A
Authority
CN
China
Prior art keywords
data
variable
target
virtual memory
address
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
CN2013104154697A
Other languages
English (en)
Other versions
CN103473319B (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.)
Institute of Acoustics CAS
Original Assignee
Institute of Acoustics CAS
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 Institute of Acoustics CAS filed Critical Institute of Acoustics CAS
Priority to CN201310415469.7A priority Critical patent/CN103473319B/zh
Publication of CN103473319A publication Critical patent/CN103473319A/zh
Application granted granted Critical
Publication of CN103473319B publication Critical patent/CN103473319B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种热点数据的统计方法
技术领域
本发明涉及程序性能分析技术,尤其涉及一种热点数据的统计方法。
背景技术
程序运行时并非均衡的对每个函数、数组进行访问,约80%的运行时间花在20%的代码中。嵌入式平台上的存储资源有限,对热点数据分布的统计是为了将访问频度较高的函数、数组尽可能存储与访问速度更快的片上存储。
集成开发环境(Integrated Development Environment,IDE)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
现有的集成开发环境,如微软的Visual Studio系列等,它们运行的底层硬件平台均提供了用于程序性能数据反馈的专用指令,并依托于编译器对目标源程序进行代码插桩(Code Instrumentation),然后依托处理器硬件平台的计算完成对热点数据的统计。
现有技术的热点数据统计方法的不足之处在于:
1、依赖于处理器硬件平台的支持;
2、评估热点数据的粒度并未细分至每个数组元素。
发明内容
本发明的目的是为了解决上述现有技术存在的不足之处,提供了一种实现简单、便于跨平台移植的热点数据统计方法。
为实现上述目的,本发明提供了一种热点数据的统计方法,该方法包括以下步骤:
通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;
链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;
处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;
根据各全局计数器,获取各目标变量的访问频度。
本发明实现简单、不依赖于硬件平台、可完成对数组元素的独立评估。
附图说明
图1为本发明实施例提供的一种热点数据统计方法流程图;
图2为针对强制类型转换的处理流程图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明实施例是在处理器模型的基础上讨论如何统计热点数据。应用程序对存储资源的申请通常是靠编译器静态分配和程序员从内存的堆空间中动态申请,其中动态数组的大小只有在运行时(Run-Time)可知,且伴随着动态释放的过程,很难结合静态数据进行分析。因此,热点数据通常是对应用程序执行时访问频度较高的全局或局部static类型的变量、静态分配数组的分析。进行热点数据分析时,尽管可在编译器前端获取目标数组、变量的名称、所在文件名等信息,但它们的存储地址只能在链接期确定,因此,本发明实施例将对目标数据信息的提取放在汇编期与链接期,未初始化的全局、局部静态变量、数组被分配在第一数据段,例如.bss段,已初始化的局部、全局静态变量、数组被分配在第二数据段,例如.data段,而被const修饰的只读数据和初始化字符串被分配在第三数据段,例如,.rodata段,它们的汇编格式如下所示。
Figure BDA0000381238610000031
程序并不一定连续访问变量或数组内的各元素,评估热点数据时,本发明实施例统计了应用程序对包含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}}。
Figure BDA0000381238610000041
本发明实施例是通过在处理器模型中对虚拟内存系统进行标记完成对热点数据的统计,然而,虚拟内存系统中是以字节为单位,为了避免统计过程中出现漏记或多记,需要严格的分析变量中子元素的类型,这就导致多层次定义表的出现,预处理表的结构如下所示,<Start>:<End>代表全部文件结构,File Num代表整个应用程序中包含静态分配变量的文件数。<Head>:<Tail>代表一个汇编文件的组织结构,其中File Name是用于存储目标变量所在文件名的字符串,Total Num代表文件内目标变量的个数。<BegVar>:<EndVar>代表一个目标变量的组织结构,其中Var Name是用于存储目标变量名称的字符串,Section代表目标变量所在段的名称,且Section∈{Data,Bss,Rodata},Var Num代表目标变量中元素个数。<Set>代表目变量中具体子元素的属性,其中Type代表子元素所占据的字节数,且Type∈{Byte,Short,Long},Number则是为了压缩存储空间用,即如果连续的Number个子元素的类型一致,它的值默认为1,以文件main.c中变量Sample_为例,它对应的表结构如下所示。
Figure BDA0000381238610000051
3、链接器定义了如下数据结构来加载汇编期生成的第一定义表Var.def,其中,结构体File Table定义了文件级所需的参数信息,File Name用于存储文件名,Var Table_是用于存储本发明件中存在的目标变量表;结构体Var Table中定义了目标变量表中各表项的信息,Var Name用于存储变量名,SecType_用于存储目标变量所在段名称,Set Table_是存储了变量中各子元素的表;结构体Set Table定义了子元素的各项信息,Addr代表内存分配完成后的存储空间地址,Number代表连续同数据类型的子元素个数,Data Type_代表子元素的数据类型,链接器对预处理表Var.def的加载伪代码如下所示。
Figure BDA0000381238610000052
Figure BDA0000381238610000061
4、链接器加载第一定义表Var.def成功后,开始执行基础功能并在储存地址分配阶段基于文件名、变量名依次与File Table_中各级进行匹配。当匹配成功时,将变量子元素被分配的首地址记录在Set Table_的Addr表项中,最终以第二定义表,例如Set.def表结构输出。该表相比于Var.def表,只保留Set表项,其中Addr代表子元素存储首地址,Idx代表Set表项对应静态变量的索引值,Name代表变量名。Total Set中的Total Num则代表目标变量的总数。
Figure BDA0000381238610000062
5、处理器模型按照步骤4中表的加载方法,在运行时加载已生成的Set.def表,并根据Set.def表中的参数Total Num,动态创建Total Num个unsigned int型指针:
unsigned int**VarCount=new unsigned int*[TotalNum];
{*(VarCount[i])|i=0,…,Total Num-1}代表目标变量i的全局计数器,各Set表项的信息存储于Set Table中。然后,当处理器模型加载完成可执行ELF文件、数据激励后开始对虚拟内存系统进行标记,二级虚拟内存中数据存储的数据结构定义如下,info为存储的数据,Data Type_对应子元素的数据类型,Var Count对应于全局计数器,标记的过程等价于对数据结构中Var Count变量赋值,具体过程如下:
(1)、读取{Set Table[i]|i=0,…Total Num-1}中各项的Addr值;
(2)、计算虚拟内存系统中起始页号SPageIdx=SetTable[i].Addr>>mem_blok_bit_width,以及虚拟内存索引SPageAddr=SetTable[i].Addr&(0xFFFF);
(3)、计算终止页号EPageIdx=(SetTable[i].Addr+SetTable[i].Number*SetTable[i].Type)>>mem_blok_bit_width,以及虚拟内存索引EPageAddr=SetTable[i].Addr&(0xFFFF);
(4)、初始化SetTable[i].Number个虚拟内存单元{Dmem[SPageIdx][SPageAddr],…,Dmem[EPageIdx][EPageAddr]}的值为VarCount[i],该过程中只需标记各元素在虚拟内存中的首地址;
Figure BDA0000381238610000072
Figure BDA0000381238610000081
(5)程序设计中强制类型转换的存在是不可避免的,对底层编译系统而言,这不外乎是内存读取模式的变化,一般分为(a)读取多字节变量中部分字节,(b)以小字节变量为起始地址读取多字节。然而,本发明实施例为了节省处理器模型过度的占用PC机的存储资源,仅仅对目标变量中各子元素的首地址进行标记,因此,在计数过程中需提供额外的算法支持。假设目标处理器平台是32位的,数据读取支持1字节、2字节以及4字节读取。为了处理模式(a)和模式(b),内存访问过程中对每个字节向低地址空间依次判断1字节,2字节,4字节的首地址上是否被标记,是否已存在同一子元素内的其它字节后将对应的全局计数器加1。
6、运行过程中根据获取的全局计数器指针,进行累计,直到程序运行结束,计算过程为*(VarCount[i])++;
7、根据数据访问频度公式的要求,求取各目标变量的访问频度。
本发明实施例实现简单、不依赖于硬件平台、可完成对数组元素的独立评估,以及对语句块执行时间的评估。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所述的权利要求书进行限定。

Claims (8)

1.一种热点数据的统计方法,其特征在于:
通过识别数据段类型提取出静态分配变量的各项信息,并组织成第一定义表结构供链接器加载;
链接器通过定义数据结构来加载所述第一定义表,并在储存地址分配阶段基于文件名、变量名依次与所述数据结构中各级进行匹配,当匹配成功时,将变量子元素被分配的首地址记录在所述数据结构的表项中,最终输出第二定义表,所述第二定义表包括用于表示目标变量总数的参数;
处理器模型在运行时加载所述第二定义表,并根据所述第二定义表中的目标变量总数创建相应个数的全局计数器,所述各全局计数器分别用于记录目标变量被访问的次数;
根据各个全局计数器,获取各目标变量的访问频度。
2.根据权利要求1所述的方法,其特征在于,根据各个全局计数器,获取各目标变量的访问频度步骤包括:
通过各个全局计数器,获取具体数组中各元素的访问次数;
根据所述数组别中各元素的访问次数求取各元素的访问频度,并作为热点数据的评估依据。
3.根据权利要求1或2所述的方法,其特征在于,所述数据访问频度公式为:
Figure FDA0000381238600000011
其中,f(i)为元素i被访问次数。
4.根据权利要求1所述的方法,其特征在于,当所述处理器模型加载所述第二定义表后生成可执行文件,并在数据激励后对虚拟内存系统进行目标数据标记。
5.根据权利要求4所述的方法,其特征在于,所述对虚拟内存系统进行目标数据标记是针对目标变量中各子元素的首地址进行标记。
6.根据权利要求4所述的方法,其特征在于,所述对虚拟内存系统进行目标数据标记步骤包括:
读取数据结构体中各子元素存储的首地址;
计算虚拟内存系统中起始页号,以及虚拟内存索引值;
计算虚拟内存系统中终止页号,以及虚拟内存索引值;
标记各子元素在所述虚拟内存中的首地址。
7.根据权利要求1所述的方法,其特征在于,所述数据段类型包括用于定义未初始化的全局、局部静态变量的第一数据段、用于定义己初始化的全局、局部静态变量的第二数据段和用于定义只读数据和初始化字符串的第三数据段。
8.根据权利要求1至7中任一权利要求所述的方法,其特征在于:该方法在模拟执行平台上运行,所述模拟执行平台是针对各种体系结构处理器的模拟器。
CN201310415469.7A 2013-09-12 2013-09-12 一种热点数据的统计方法 Expired - Fee Related CN103473319B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310415469.7A CN103473319B (zh) 2013-09-12 2013-09-12 一种热点数据的统计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310415469.7A CN103473319B (zh) 2013-09-12 2013-09-12 一种热点数据的统计方法

Publications (2)

Publication Number Publication Date
CN103473319A true CN103473319A (zh) 2013-12-25
CN103473319B CN103473319B (zh) 2017-02-15

Family

ID=49798167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310415469.7A Expired - Fee Related CN103473319B (zh) 2013-09-12 2013-09-12 一种热点数据的统计方法

Country Status (1)

Country Link
CN (1) CN103473319B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016015A (zh) * 2016-10-08 2017-08-04 阿里巴巴集团控股有限公司 业务数据汇总方法及其系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6873934B1 (en) * 2000-06-29 2005-03-29 Microsoft Corporation Performance markers to measure benchmark timing of features in a program
CN1783009A (zh) * 2004-12-03 2006-06-07 中国科学院计算技术研究所 一种汇编代码热函数中的热路径搜寻方法
US20080126339A1 (en) * 2006-11-29 2008-05-29 American Express Travel Related Services Company, Inc. System and method for managing simulation models
CN101477472A (zh) * 2009-01-08 2009-07-08 上海交通大学 动态二进制翻译器中热路径的多核多线程构建方法
CN102156631A (zh) * 2011-04-27 2011-08-17 Tcl集团股份有限公司 程序设计语言中管理指针的方法及系统
CN103136107A (zh) * 2011-12-03 2013-06-05 南京南瑞继保电气有限公司 一种嵌入式程序动态分配内存的变量调试方法
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN103282890A (zh) * 2011-01-12 2013-09-04 松下电器产业株式会社 程序执行装置以及编译器系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6873934B1 (en) * 2000-06-29 2005-03-29 Microsoft Corporation Performance markers to measure benchmark timing of features in a program
CN1783009A (zh) * 2004-12-03 2006-06-07 中国科学院计算技术研究所 一种汇编代码热函数中的热路径搜寻方法
US20080126339A1 (en) * 2006-11-29 2008-05-29 American Express Travel Related Services Company, Inc. System and method for managing simulation models
CN101477472A (zh) * 2009-01-08 2009-07-08 上海交通大学 动态二进制翻译器中热路径的多核多线程构建方法
CN103282890A (zh) * 2011-01-12 2013-09-04 松下电器产业株式会社 程序执行装置以及编译器系统
CN102156631A (zh) * 2011-04-27 2011-08-17 Tcl集团股份有限公司 程序设计语言中管理指针的方法及系统
CN103136107A (zh) * 2011-12-03 2013-06-05 南京南瑞继保电气有限公司 一种嵌入式程序动态分配内存的变量调试方法
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016015A (zh) * 2016-10-08 2017-08-04 阿里巴巴集团控股有限公司 业务数据汇总方法及其系统

Also Published As

Publication number Publication date
CN103473319B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
EP2487585B1 (en) Method and device for dynamically loading relocatable file
TWI577539B (zh) 用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統
JP6275819B2 (ja) ユーザに指向されかつプロファイル主導の最適化用のフレームワーク
US8578339B2 (en) Automatically adding bytecode to a software application to determine database access information
US8656377B2 (en) Tracking variable information in optimized code
US20050246685A1 (en) Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language
US10614227B2 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
US9558096B2 (en) Method and apparatus for supporting performance analysis
KR20080047444A (ko) 확장 가능한 메타 데이터
CN109086215B (zh) 一种嵌入式软件单元测试用例生成方法及系统
CN110019111B (zh) 数据处理方法、装置、存储介质以及处理器
CN115328454A (zh) 程序编译和程序加载方法
CN105224309A (zh) 一种调取函数的方法和装置
JP5465358B2 (ja) データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム
CN111880801A (zh) 应用程序动态化方法、装置、电子设备
CN116991381A (zh) 一种应用交叉编译方法、装置、计算设备及存储介质
CN112905443A (zh) 一种测试用例生成方法、设备及存储介质
CN103473319A (zh) 一种热点数据的统计方法
KR20180098584A (ko) App 프로그램 실행 방법 및 장치
JP6717140B2 (ja) 解析プログラム、解析方法、及び解析装置
CN114706586A (zh) 代码编译、代码运行方法、装置、计算机设备及存储介质
CN114168122A (zh) 数据脚本的生成方法及装置
Hadri et al. Software usage on Cray systems across three centers (NICS, ORNL and CSCS)
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
CN105653252A (zh) 一种linux下扩展select模型管理能力的方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170215

Termination date: 20200912

CF01 Termination of patent right due to non-payment of annual fee