CN108762811B - 基于聚类获取应用程序乱序访存行为模式的方法 - Google Patents

基于聚类获取应用程序乱序访存行为模式的方法 Download PDF

Info

Publication number
CN108762811B
CN108762811B CN201810283802.6A CN201810283802A CN108762811B CN 108762811 B CN108762811 B CN 108762811B CN 201810283802 A CN201810283802 A CN 201810283802A CN 108762811 B CN108762811 B CN 108762811B
Authority
CN
China
Prior art keywords
stack distance
clustering
stack
order
distance distribution
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
Application number
CN201810283802.6A
Other languages
English (en)
Other versions
CN108762811A (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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN201810283802.6A priority Critical patent/CN108762811B/zh
Publication of CN108762811A publication Critical patent/CN108762811A/zh
Application granted granted Critical
Publication of CN108762811B publication Critical patent/CN108762811B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering

Abstract

本发明公开了一种基于聚类获取应用程序乱序访存行为模式的方法,对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;对所有线程的堆栈距离分布变化百分比进行聚类;根据聚类结果,从每一类中选出距离质心最近的线程的程序片段。使用该方法获得的访存行为模式可以作为一个程序内部指令乱序的最小变化单位,提供更细粒度的乱序行为分析。

Description

基于聚类获取应用程序乱序访存行为模式的方法
技术领域
本发明属于软硬件协同设计技术领域,具体地涉及一种基于聚类获取应用程序乱序访存行为模式的方法。
背景技术
目前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射、乱序执行等各种措施。其中,乱序执行机制通过将指令重新排序,分开发送给各相应电路单元处理,从而加快了程序的执行速度。
在芯片的性能评估体系中,cache的miss率是一个很重要的参数。因为cache的访存拥有空间局部性和时间局部性,所以访存指令的执行顺序会影响cache的miss率。乱序处理器的乱序执行机制可以打乱程序原有的指令顺序,但是,对于不同的程序,乱序后指令的执行顺序与程序本身的指令顺序之间的差异也不相同,我们称这种情况为乱序程度的不一致。显然,不同的程序经过乱序执行后其cache的miss率的变化也不一样。
当前,研究者们通常使用堆栈距离的概念来表征程序的执行顺序。访存堆栈距离指对同一Cache line的两次连续访存请求之间的请求地址个数。基于LRU替换策略的Cache结构,可直接利用访存堆栈距离分布,根据Cache组关联数直接获取访问缺失次数。乱序执行机制对指令顺序的改变会影响到堆栈距离的分布,不同的乱序程度也就意味着不同的堆栈距离分布变化。目前虽然已经有研究者注意到了这种乱序程度因程序而异的情况,但是一般的应用程序都较大,执行过程较为复杂,整个程序的乱序程度是由一系列的更小的乱序执行单位共同影响造成的。如今业内缺少一种可以用来研究乱序程度的最小变化单位,而本发明就是针对这个问题,提供程序乱序程度的最小变化单位的提取方法。
发明内容
针对上述存在的技术问题,本发明目的是:提供了一种基于聚类获取应用程序乱序访存行为模式的方法,使用该方法获得的访存行为模式可以作为一个程序内部指令乱序的最小变化单位,提供更细粒度的乱序行为分析。
本发明的技术方案是:
一种基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,包括以下步骤:
S01:对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;
S02:计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;
S03:对所有线程的堆栈距离分布变化百分比进行聚类;
S04:根据聚类结果,从每一类中选出距离质心最近的线程的程序片段。
优选的,所述步骤S01堆栈距离分布计算方法,包括:
设置第一哈希表和第二哈希表,所述第一哈希表采用地址中Tag与Set位域作为索引,获取内容无效化标志以及前次同地址访存的序号,所述第二哈希表采用地址Set位域索引,获取指向红黑树的指针;
通过在第一哈希表中索引到的SN号,在红黑树中找到存储位置,所述红黑树中存储访存序号为SN,并按照升序排列,计算该位置与红黑树尾端的距离作为当前访存请求在Cache Set内的堆栈距离;
计算堆栈距离完成后,将当前访存序号更新到在哈希表和红黑树中索引的SN处,当检测到写操作时,依据写地址找到第一个哈希表中对应的内容失效位置1。
优选的,所述步骤S02包括,
将顺序执行流的堆栈距离分布和乱序执行流的堆栈距离分布分别转化为各个堆栈距离的百分比dp(i),dp(i)的计算公式为:
Figure BDA0001615439180000021
其中,d(i)为堆栈距离为i的指令数量,imax为i取指的上限,dp(i)为堆栈距离为i的指令占总体的百分比;
将乱序指令流的堆栈距离百分比dpout(i)减去顺序指令流的堆栈距离百分比dpin(i),得到堆栈距离分布变化百分比Δdp(i),即:
Δdp(i)=dpout(i)-dpin(i)。
优选的,所述步骤S03中采用K-means聚类算法进行聚类,具体步骤为:
(1)从n个数据对象任意选择k个对象作为初始聚类中心;
(2)根据每个聚类对象的均值作为中心对象,计算每个对象与中心对象的距离,并根据最小距离重新对相应对象进行划分;
(3)重新计算每个聚类的均值;
(4)循环(2)到(3)直到每个聚类不再发生变化。
与现有技术相比,本发明的优点是:
该方法可以用来提取程序内部的多种乱序访存行为模式,当前的研究都是以整个程序的乱序程度作为探索乱序执行机制对程序的指令执行顺序的影响的切入点,而本发明可以提供更细粒度的乱序行为分析,将乱序程度的研究从整体程序转换到了各个有代表性的程序片段上,这为之后的研究做出铺垫。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明基于聚类获取应用程序乱序访存行为模式的方法的流程图;
图2为访存堆栈距离计算框图;
图3为堆栈距离变化百分比示意图;
图4为K-means聚类算法聚类过程流程图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例:
如图1所示,本发明的基于聚类获取应用程序乱序访存行为模式的方法,该方法的重点在于使用了堆栈距离概念来表征访存指令的执行状态;借助时钟精确型仿真模型获得访存指令顺序执行与乱序执行的堆栈距离分布,并以两个堆栈距离分布的差值为标准进行聚类,获取不同程序执行阶段的乱序访存行为模态,具体包括以下步骤:
步骤1.在Gem5上运行目标程序,依据Gem5指令取指序号对乱序执行流进行重排序,获取访存顺序执行流。指令取指序号是指Gem5模拟cpu取指阶段时为每一个指令分配的序列号。在顺序执行指令的cpu中,指令的取指顺序就是其执行顺序,所以我们统计乱序执行时访存指令的序列号,根据序列号重新排列来达到不需要额外执行一遍程序就能获取顺序执行流的目的。
设计堆栈距离算法,分别对顺序执行流与乱序执行流提取堆栈距离分布。设置Gem5为每当发生线程切换时将统计数据写至一个文件内;
步骤2.根据步骤1得到的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布来计算每个线程的乱序前后的堆栈距离分布变化百分比;
步骤3.使用K-means聚类算法对所有线程的堆栈距离变化百分比进行聚类;
步骤4.根据聚类结果,从每一类中选出距离质心最近的那个线程。
如图2所示,堆栈距离指,针对同一Cacheline的两次连续访存请求间的访存地址个数。本发明将红黑树与哈希表组合,设计算法计算堆栈距离。本发明采用的访存Trace包含2个模块,一是当前访存请求地址,二是当前访存请求序号SN。算法中包含两个哈希表,一是采用地址中Tag与Set位域作为索引,获取内容无效化标志以及前次同地址访存的序号。二是通过地址Set位域索引,获取指向红黑树的指针。利用Set位域索引是为了统计每个Cache Set内的访存堆栈距离。红黑树中存储访存序号SN,并按照升序排列。通过在第一个哈希表中索引到的SN号,在红黑树中找到存储位置,计算该位置与红黑树尾端的距离即为当前访存请求在Cache Set内的堆栈距离。完成堆栈距离计算后,将当前访存序号更新到在哈希表和红黑树中索引的SN处。当检测到写操作时,依据写地址找到第一个哈希表中对应的内容失效位置1。
堆栈距离分布变化百分比的获取
先将顺序执行流的堆栈距离分布和乱序执行流的堆栈距离分布分别转化为各个堆栈距离的百分比dp(i),dp(i)的计算公式为:
Figure BDA0001615439180000051
其中,d(i)为堆栈距离为i的指令数量,imax为i取指的上限,dp(i)为堆栈距离为i的指令占总体的百分比;
然后将乱序指令流的堆栈距离百分比dpout(i)减去顺序指令流的堆栈距离百分比dpin(i),得到堆栈距离分布变化百分比Δdp(i),如图3所示,即:
Δdp(i)=dpout(i)-dpin(i)。
对所有线程的堆栈距离变化百分比进行聚类
将步骤2所得的堆栈距离变化百分比以矩阵的格式导入MATLAB或其他可以实现K-means聚类算法的工具中,使用该工具的的K-means聚类算法对该矩阵进行聚类。本方法所采用K-means聚类的具体流程,如图4所示,包括:
(1)从n个数据对象任意选择k个对象作为初始聚类中心;
(2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分;
(3)重新计算每个(有变化)聚类的均值(中心对象);
(4)循环(2)到(3)直到每个聚类不再发生变化为止。聚类数量根据线程总数而定,一般为总数的30%,过多可能会出现重复的类别。
优选的,使用python脚本来实现K-means聚类算法,并使用该脚本进行聚类。
获取所有类别的代表性程序片段
步骤3获得了每个类别的聚类质心,但是这些质心并不一定对应程序的某一个线程,所以我们需要找到这个类别中最具代表性的线程,即距离质心位置最近的那个线程。具体方案是使用MATLAB脚本对步骤3所得到的聚类质心进行测距,找到每一类中距离质心最近的那个线程。MATLAB脚本如下:
1 D=d;
2 [C,I]=min(D);
d为n*k的矩阵,存储的是每个点与所有质心的距离,该变量可以由步骤3聚类后得到;C存储的是k个最小距离;I是k个最小距离的行号,即线程编号。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

Claims (2)

1.一种基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,包括以下步骤:
S01:对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;
S02:计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;
S03:对所有线程的堆栈距离分布变化百分比进行聚类;
S04:根据聚类结果,从每一类中选出距离质心最近的线程的程序片段;
所述步骤S01堆栈距离分布计算方法,包括:
设置第一哈希表和第二哈希表,所述第一哈希表采用地址中Tag与Set位域作为索引,获取内容无效化标志以及前次同地址访存的序号,所述第二哈希表采用地址Set位域索引,获取指向红黑树的指针;
通过在第一哈希表中索引到的SN号,在红黑树中找到存储位置,所述红黑树中存储访存序号为SN,并按照升序排列,计算该位置与红黑树尾端的距离作为当前访存请求在CacheSet内的堆栈距离;
计算堆栈距离完成后,将当前访存序号更新到在哈希表和红黑树中索引的SN处,当检测到写操作时,依据写地址找到第一个哈希表中对应的内容失效位置1;
所述步骤S02包括:
将顺序执行流的堆栈距离分布和乱序执行流的堆栈距离分布分别转化为各个堆栈距离的百分比dp(i),dp(i)的计算公式为:
Figure FDA0003484769420000011
其中,d(i)为堆栈距离为i的指令数量,imax为i取指的上限,dp(i)为堆栈距离为i的指令占总体的百分比;
将乱序指令流的堆栈距离百分比dpout(i)减去顺序指令流的堆栈距离百分比dpin(i),得到堆栈距离分布变化百分比Δdp(i),即:
Δdp(i)=dpout(i)-dpin(i)。
2.根据权利要求1所述的基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,所述步骤S03中采用K-means聚类算法进行聚类,具体步骤为:
(1)从n个数据对象任意选择k个对象作为初始聚类中心;
(2)根据每个聚类对象的均值作为中心对象,计算每个对象与中心对象的距离,并根据最小距离重新对相应对象进行划分;
(3)重新计算每个聚类的均值;
(4)循环(2)到(3)直到每个聚类不再发生变化。
CN201810283802.6A 2018-04-02 2018-04-02 基于聚类获取应用程序乱序访存行为模式的方法 Active CN108762811B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810283802.6A CN108762811B (zh) 2018-04-02 2018-04-02 基于聚类获取应用程序乱序访存行为模式的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810283802.6A CN108762811B (zh) 2018-04-02 2018-04-02 基于聚类获取应用程序乱序访存行为模式的方法

Publications (2)

Publication Number Publication Date
CN108762811A CN108762811A (zh) 2018-11-06
CN108762811B true CN108762811B (zh) 2022-03-22

Family

ID=63980664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810283802.6A Active CN108762811B (zh) 2018-04-02 2018-04-02 基于聚类获取应用程序乱序访存行为模式的方法

Country Status (1)

Country Link
CN (1) CN108762811B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115454989B (zh) * 2022-09-29 2023-12-08 深圳市手心游戏科技有限公司 一种应用程序数据的数据处理方法和装置
CN115543719B (zh) * 2022-11-24 2023-04-07 飞腾信息技术有限公司 基于芯片设计的组件优化方法、装置、计算机设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794067A (zh) * 2014-01-17 2015-07-22 想象力科技有限公司 堆栈存储的变量值预测
CN105630458A (zh) * 2015-12-29 2016-06-01 东南大学—无锡集成电路技术研究所 一种基于人工神经网络的乱序处理器稳态下平均吞吐率的预测方法
CN105653790A (zh) * 2015-12-29 2016-06-08 东南大学—无锡集成电路技术研究所 一种基于人工神经网络的乱序处理器Cache访存性能评估方法
CN107111691A (zh) * 2014-10-27 2017-08-29 阿卜杜拉国王科技大学 识别配体‑蛋白质结合位点的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632911B2 (en) * 2013-02-08 2017-04-25 Red Hat, Inc. Stack trace clustering

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794067A (zh) * 2014-01-17 2015-07-22 想象力科技有限公司 堆栈存储的变量值预测
CN107111691A (zh) * 2014-10-27 2017-08-29 阿卜杜拉国王科技大学 识别配体‑蛋白质结合位点的方法和系统
CN105630458A (zh) * 2015-12-29 2016-06-01 东南大学—无锡集成电路技术研究所 一种基于人工神经网络的乱序处理器稳态下平均吞吐率的预测方法
CN105653790A (zh) * 2015-12-29 2016-06-08 东南大学—无锡集成电路技术研究所 一种基于人工神经网络的乱序处理器Cache访存性能评估方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种面向能耗的可重构片上统一存储架构;凌明 等;《东南大学学报(自然科学版)》;20111130;第1137-1145页 *

Also Published As

Publication number Publication date
CN108762811A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
KR102165776B1 (ko) 시스템 성능 향상을 위한 적응적 값 범위 프로파일링
CN102792285B (zh) 用于处理数据的装置和方法
Lu et al. BloomStore: Bloom-filter based memory-efficient key-value store for indexing of data deduplication on flash
US8621184B1 (en) Effective scheduling of producer-consumer processes in a multi-processor system
CN108762811B (zh) 基于聚类获取应用程序乱序访存行为模式的方法
EP2885728A2 (en) Hardware implementation of the aggregation/group by operation: hash-table method
EP3134821B1 (en) System and method for parallel optimization of database query using cluster cache
US10067963B2 (en) Method for pre-processing and processing query operation on multiple data chunk on vector enabled architecture
CN107315694B (zh) 一种缓存一致性管理方法及节点控制器
US10901640B2 (en) Memory access system and method
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
CN105359142B (zh) 哈希连接方法和装置
CN114036084B (zh) 一种数据访问方法、共享缓存、芯片系统和电子设备
Haque et al. Dew: A fast level 1 cache simulation approach for embedded processors with fifo replacement policy
DE102018002480A1 (de) System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung
CN105654120B (zh) 一种基于SOM和K-means两阶段聚类的软件负载特征提取方法
CN105573838B (zh) 缓存健康度检测方法及装置
CN104050189B (zh) 页面共享处理方法及装置
CN106649143B (zh) 一种访问缓存的方法、装置及电子设备
KR20180072345A (ko) 페이지의 프리페칭 방법 및 장치
CN105653680A (zh) 一种基于文档型数据库的存储数据的方法及系统
CN113986778B (zh) 一种数据处理方法、共享缓存、芯片系统及电子设备
CN106569961B (zh) 一种基于访存地址连续性的cache模块及其访存方法
CN105183668B (zh) 缓存刷新方法及装置
US9158798B2 (en) Database large object reorganization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant