一种基于纯缺失检测方法的存算一体程序划分方法及装置制造方法及图纸

技术编号:29302552 阅读:22 留言:0更新日期:2021-07-17 01:31
本发明专利技术公开了一种基于纯缺失检测方法的存算一体程序划分方法及装置,方法包括:S1,判断代码是否为循环体;S2,如果是,将循环体的部分指令在CPU上执行,通过检测纯缺失,计算出纯缺失率,缺失检测包括:S21,当发生cache命中,记录当前的缓存行信息到命中列表中,缺失状态保持寄存器,记录缺失的缓存行信息到缺失列表中;S22,比较命中列表和缺失列表,找出纯缺失;S3,如果纯缺失率大于预设的阈值,将循环体划分到存算一体计算单元中进行计算。装置包括:CPU和存算一体单元,CPU上设有划分识别模块,该模块进行的循环采样,包括相互连接的最后一级缓存和缺失状态保持寄存器,最后一级缓存中设有纯缺失侦测部件。设有纯缺失侦测部件。设有纯缺失侦测部件。

A program partition method and device of memory computing integration based on pure deletion detection method

【技术实现步骤摘要】
一种基于纯缺失检测方法的存算一体程序划分方法及装置


[0001]本专利技术涉及计算机体系结构设计
,尤其是涉及了一种基于纯缺失检测方法的存算一体程序划分方法及装置。

技术介绍

[0002]随着大数据、云计算、人工智能等信息技术的快速发展,信息处理已经从计算密集型向数据密集型转变。传统的冯

诺伊曼体系结构面临存储墙瓶颈,难以满足信息社会对计算能力的需求。挑战主要来自两个方面:一是在存储与计算分离的冯

诺伊曼体系结构中,计算单元与存储单元之间频繁的数据传输已成为功耗和系统性能的瓶颈;其次,随着数据量的增加,传统的利用数据局部性的存储分层的方法有效性降低甚至失效。
[0003]随着存储器三维堆叠技术的发展,提出了一种解决存储墙问题的方法:存算一体(PIM,Processing in Memory)体系结构。PIM也叫存内计算或者近数据计算,是将计算资源集成到存储器中,减少了不必要的数据移动,从而显著提高内存访问的能源效率。
[0004]在PIM体系结构中,如何合理划分程序,选择合适的PIM指令成为一个重大的挑战。不合理的程序负载划分会导致CPU和存储器之间频繁的数据移动,导致不必要的性能和能量开销。随着PIM处理器的计算能力不断增强,为了提高整个PIM系统的性能和能源效率,有必要建立一个准确有效的程序划分模型。
[0005]目前,已经有研究人员提出存算一体程序划分的方法,例如PEI(Program Enable Instructions)考虑程序的局部性,并使用最后一级缓存(LLC,Last Level Cache)缺失作为代码划分的标准。再如GraphPIM通过将图计算中对图属性访问的原子操作划分到PIM中进行计算。
[0006]然而,现代的计算系统不仅有存储的层次结构支持,而且还有各种数据访问并发性支持。利用访存并发或数据并行的技术,如乱序执行和非阻塞缓存,可以有效的减少访存阻塞。访存并发允许多个内存请求重叠,以减少内存暂停时间。平均内存访问时间(AMAT,Average memory access time)是分析内存系统性能的一个标准指标。AMAT的一个隐含假设是内存只支持顺序访问,不会有多个内存访问重合。已经有研究提出C

AMAT(Concurrent

AMAT)性能模型,考虑到内存并发性,缓存请求的缺失(Cache miss)可以分为两种不同的类型:混合缺失(命中与缺失重叠)和纯缺失(命中与缺失没有重叠)。混合缺失不会对系统的性能造成影响,因为处理器仍然可以在重叠的缓存命中时执行。而在考虑并发性的现代存储系统中,纯缺失可能会对系统整体造成更大的性能损失。
[0007]另一方面,受限于现有的工艺条件,如芯片面积,散热等,PIM端的处理核心单元并不能做到和CPU端有着相同的性能,同时这一趋势在短期内是无法改进的。而在通常PIM架构下,现有的程序划分方法往往将程序以粗略的标准划进行程序划分,导致存算一体计算单元执行的代码较多,进而可能影响PIM系统的整体性能。
[0008]综上,由于目前的程序划分方法并没有充分考虑并发内存访问,引起两种类型访存缺失都可能加载到PIM计算单元,导致不必要的代码转移到PIM中。同时由于CPU和PIM处
理单元之间的性能差异,将过多的任务迁移到PIM端执行可能会导致存算一体整体系统的性能下降。

技术实现思路

[0009]为解决现有技术的不足,实现更有效地并发内存访问,避免不必要的代码转移,减少程序搬运量,提升系统性能的目的,本专利技术采用如下的技术方案:一种纯缺失检测方法,包括如下步骤:S21,在发生最后一级缓存请求时,根据每个缓存行的标记区来确定是否发生cache命中,命中的内容即为程序所需的数据,如果缓存请求命中,记录当前的缓存行信息到命中列表中,根据缺失状态保持寄存器,记录缺失的缓存行信息到缺失列表中,所述记录缺失的缓存行信息,包括混合缺失和纯缺失的缓存行信息,通过所述缺失状态保持寄存器中的缺失缓存行标记,记录其对应的缓存行信息到缺失列表中;S22,比较命中列表和缺失列表,查看缺失列表中的每一项是否出现在命中列表中,如果没有,则该访存缺失为纯缺失。
[0010]在存算一体计算中引入纯访存缺失的概念,提出的一种纯缺失的检测方法,充分考虑了访存并发性和局部性,并且实现纯缺失率的计算。
[0011]进一步地,所述当前的缓存行信息,是缓存行命中的访存周期号;所述缺失的缓存行信息,是缓存行缺失的周期号。
[0012]一种存算一体程序划分方法,包括如下步骤:S1,判断代码是否为循环体,如果不是,则代码相应的指令直接在CPU上执行;S2,如果是循环体,将循环体定义为一个代码块,将代码块的部分指令在CPU上执行,通过检测纯缺失,计算出纯缺失率;S3,如果纯缺失率大于预设的阈值,则说明该程序不适合在CPU上执行,将代码块(循环体)划分到存算一体计算单元中进行计算,否则,将代码块(循环体)继续在CPU上进行计算。
[0013]进一步地,所述纯缺失率=纯缺失的访存周期数/总的CPU访存周期数。
[0014]进一步地,所述部分指令是代码块(循环体)的前5%

15%的指令,高于此范围的采样可能会导致采样时间过长,低于该范围可能导致采样不具有代表性。
[0015]进一步地,所述阈值是3

7%,使程序划分的整体性能提高。
[0016]一种纯缺失检测装置,包括相互连接的最后一级缓存和缺失状态保持寄存器,所述最后一级缓存中设有纯缺失侦测部件,该部件包括命中列表和缺失列表,分别记录缓存命中与缺失信息,所述缺失信息,通过缺失状态保持寄存器记录到缺失列表中,比较命中列表和缺失列表,查看缺失列表中的每一项是否出现在命中列表中,如果没有,则该访存缺失为纯缺失。
[0017]进一步地,所述缓存命中与缺失信息,分别是缓存命中与缺失周期号。
[0018]一种存算一体程序划分装置,包括CPU和存算一体单元,所述CPU上,设有划分识别模块,用于识别出该程序段是否为循环体,对于非循环体的代码段对应的指令,该模块将对应的指令按照常规的体系结构下的模式执行;对于循环体,该模块会对循环体的部分指令在CPU上循环展开,进行循环采样,通过纯缺失检测装置得到纯缺失,通过纯缺失率计算模
块,算出采样代码段的纯缺失率,如果纯缺失率大于预设的阈值,则说明该程序不适合在CPU上执行,将循环体划分到存算一体计算单元中进行计算,否则,将循环体继续在CPU上进行计算。
[0019]进一步地,所述纯缺失率=纯缺失的访存周期数/总的CPU访存周期数。
[0020]本专利技术的优势和有益效果在于:本专利技术充分考虑访存的并发性,利用最后一级缓存的纯缺失率来判断需要在PIM中执行的代码,避免不必要的代码转移,同时避免过多的任务迁移,从而使存算一体系统获得更好的性能。
附图说明
[0021]图1是本专利技术中纯缺失检测流本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种纯缺失检测方法,其特征在于包括如下步骤:S21,在发生最后一级缓存请求时,根据每个缓存行的标记区来确定是否发生cache命中,如果缓存请求命中,记录当前的缓存行信息到命中列表中,根据缺失状态保持寄存器,记录缺失的缓存行信息到缺失列表中;S22,比较命中列表和缺失列表,查看缺失列表中的每一项是否出现在命中列表中,如果没有,则该访存缺失为纯缺失。2.根据权利要求1所述的一种纯缺失检测方法,其特征在于所述当前的缓存行信息,是缓存行命中的访存周期号;所述缺失的缓存行信息,是缓存行缺失的周期号。3.根据权利要求1所述方法的存算一体程序划分方法,其特征在于包括如下步骤:S1,判断代码是否为循环体,如果不是,则代码相应的指令直接在CPU上执行;S2,如果是循环体,将循环体的部分指令在CPU上执行,通过检测纯缺失,计算出纯缺失率;S3,如果纯缺失率大于预设的阈值,将循环体划分到存算一体计算单元中进行计算,否则,将循环体继续在CPU上进行计算。4.根据权利要求3所述的存算一体程序划分方法,其特征在于所述纯缺失率=纯缺失的访存周期数/总的CPU访存周期数。5.根据权利要求3所述的存算一体程序划分方法,其特征在于所述部分指令是循环体的前5%

15%的指令。6.根据权利要求3所述的存算一体程序...

【专利技术属性】
技术研发人员:邹兴奇闫亮
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1