当前位置: 首页 > 专利查询>东南大学专利>正文

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

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

Clustering based method for obtaining random entry behavior patterns of applications

The invention discloses a method for obtaining disorderly memory access behavior patterns of applications based on clustering, reordering the disorderly execution flow of applications, obtaining sequential execution flow, extracting stack distance distribution of sequential execution flow and stack distance distribution of disorderly execution flow respectively, and calculating sequential execution flow stack of each thread. The percentage of change in stack distance distribution of distance distribution and stack distance distribution of disorderly execution flow; clustering the percentage of change in stack distance distribution of all threads; and selecting the program fragments of threads nearest to the centroid from each class according to the clustering results. The memory access behavior pattern obtained by this method can be used as the smallest change unit of instruction disorder within a program to provide more fine-grained disorder behavior analysis.

【技术实现步骤摘要】
基于聚类获取应用程序乱序访存行为模式的方法
本专利技术属于软硬件协同设计
,具体地涉及一种基于聚类获取应用程序乱序访存行为模式的方法。
技术介绍
目前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射、乱序执行等各种措施。其中,乱序执行机制通过将指令重新排序,分开发送给各相应电路单元处理,从而加快了程序的执行速度。在芯片的性能评估体系中,cache的miss率是一个很重要的参数。因为cache的访存拥有空间局部性和时间局部性,所以访存指令的执行顺序会影响cache的miss率。乱序处理器的乱序执行机制可以打乱程序原有的指令顺序,但是,对于不同的程序,乱序后指令的执行顺序与程序本身的指令顺序之间的差异也不相同,我们称这种情况为乱序程度的不一致。显然,不同的程序经过乱序执行后其cache的miss率的变化也不一样。当前,研究者们通常使用堆栈距离的概念来表征程序的执行顺序。访存堆栈距离指对同一Cacheline的两次连续访存请求之间的请求地址个数。基于LRU替换策略的Cache结构,可直接利用访存堆栈距离分布,根据Cache组关联数直接获取访问缺失次数。乱序执行机制对指令顺序的改变会影响到堆栈距离的分布,不同的乱序程度也就意味着不同的堆栈距离分布变化。目前虽然已经有研究者注意到了这种乱序程度因程序而异的情况,但是一般的应用程序都较大,执行过程较为复杂,整个程序的乱序程度是由一系列的更小的乱序执行单位共同影响造成的。如今业内缺少一种可以用来研究乱序程度的最小变化单位,而本专利技术就是针对这个问题,提供程序乱序程度的最小变化单位的提取方法。
技术实现思路
针对上述存在的技术问题,本专利技术目的是:提供了一种基于聚类获取应用程序乱序访存行为模式的方法,使用该方法获得的访存行为模式可以作为一个程序内部指令乱序的最小变化单位,提供更细粒度的乱序行为分析。本专利技术的技术方案是:一种基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,包括以下步骤:S01:对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;S02:计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;S03:对所有线程的堆栈距离分布变化百分比进行聚类;S04:根据聚类结果,从每一类中选出距离质心最近的线程的程序片段。优选的,所述步骤S01堆栈距离分布计算方法,包括:设置第一哈希表和第二哈希表,所述第一哈希表采用地址中Tag与Set位域作为索引,获取内容无效化标志以及前次同地址访存的序号,所述第二哈希表采用地址Set位域索引,获取指向红黑树的指针;通过在第一哈希表中索引到的SN号,在红黑树中找到存储位置,所述红黑树中存储访存序号为SN,并按照升序排列,计算该位置与红黑树尾端的距离作为当前访存请求在CacheSet内的堆栈距离;计算堆栈距离完成后,将当前访存序号更新到在哈希表和红黑树中索引的SN处,当检测到写操作时,依据写地址找到第一个哈希表中对应的内容失效位置1。优选的,所述步骤S02包括,将顺序执行流的堆栈距离分布和乱序执行流的堆栈距离分布分别转化为各个堆栈距离的百分比dp(i),dp(i)的计算公式为:其中,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位域索引是为了统计每个CacheSet内的访存堆栈距离。红黑树中存储访存序号SN,并按照升序排列。通过在第一个哈希表中索引到的SN号,在红黑树中找到存储位置,计算该位置与红黑树尾端的距离即为当前访存请求在CacheSet内的堆栈距离。完成堆栈距离计算后,将当前访存序号更新到在哈希表和红黑树中索引的SN处。当检测到写操作时,依据写地址找到第一个哈希表中对应的内容失效位置1。堆栈距离分布变化百分比的获取先将顺序执行流的堆栈距离分布和乱序执行流的堆栈距离分布分别转化为各个堆栈距离的百分比dp(i),dp(i)的计算公式为:其中,d(i)为堆栈距离为i本文档来自技高网
...

【技术保护点】
1.一种基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,包括以下步骤:S01:对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;S02:计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;S03:对所有线程的堆栈距离分布变化百分比进行聚类;S04:根据聚类结果,从每一类中选出距离质心最近的线程的程序片段。

【技术特征摘要】
1.一种基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,包括以下步骤:S01:对应用程序的乱序执行流进行重排序,得到访存顺序执行流,分别提取顺序执行流堆栈距离分布和乱序执行流堆栈距离分布;S02:计算每个线程的顺序执行流堆栈距离分布和乱序执行流堆栈距离分布的堆栈距离分布变化百分比;S03:对所有线程的堆栈距离分布变化百分比进行聚类;S04:根据聚类结果,从每一类中选出距离质心最近的线程的程序片段。2.根据权利要求1所述的基于聚类获取应用程序乱序访存行为模式的方法,其特征在于,所述步骤S01堆栈距离分布计算方法,包括:设置第一哈希表和第二哈希表,所述第一哈希表采用地址中Tag与Set位域作为索引,获取内容无效化标志以及前次同地址访存的序号,所述第二哈希表采用地址Set位域索引,获取指向红黑树的指针;通过在第一哈希表中索引到的SN号,在红黑树中找到存储位置,所述红黑树中存储访存序号为SN,并按照升序排列,计算该位置与红黑树尾端的距离作为当前访存请求在CacheSet内的堆栈距离;计算堆栈距离完成后,将当前访存序号更新到在哈希表和红黑树中索引的SN处...

【专利技术属性】
技术研发人员:凌明季柯丞李宽张凌峰
申请(专利权)人:东南大学
类型:发明
国别省市:江苏,32

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

1