CN104572501B - 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 - Google Patents

一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 Download PDF

Info

Publication number
CN104572501B
CN104572501B CN201510010199.0A CN201510010199A CN104572501B CN 104572501 B CN104572501 B CN 104572501B CN 201510010199 A CN201510010199 A CN 201510010199A CN 104572501 B CN104572501 B CN 104572501B
Authority
CN
China
Prior art keywords
represent
task
data object
type
memory
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.)
Expired - Fee Related
Application number
CN201510010199.0A
Other languages
English (en)
Other versions
CN104572501A (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.)
Kaixi Beijing Information Technology Co ltd
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN201510010199.0A priority Critical patent/CN104572501B/zh
Publication of CN104572501A publication Critical patent/CN104572501A/zh
Application granted granted Critical
Publication of CN104572501B publication Critical patent/CN104572501B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提出了一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法,该方法涉及了在多核环境中改进程序缓存性能,并减少任务间缓存干扰的技术。本发明通过局部性分析方法对要运行的任务的访存踪迹序列进行预分析,标记其阶段信息,并在实际执行的过程中根据任务的阶段变化进行动态的分配与调整。在分配与调整的过程中采用了缓存分配方法,可以使得每个任务的分配与调整不影响其他任务的执行,并大大减少数据迁移量。本发明提出的缓存优化方法具有优化效果显著、使用灵活和额外代价小的优势。

Description

一种基于访存踪迹局部性分析的多核环境下共享缓存优化 方法
技术领域
本发明涉及多核架构中共享缓存的性能优化方法。更具体的说,本发明涉及在多核架构中多任务并行执行共享使用缓存时的缓存性能优化方法。
背景技术
近年来,由于集成电路制造工艺和芯片功耗的限制,已经不可能通过简单提升主频的办法提高处理器的性能。目前学术界和工业界普遍认为,只有通过提高集成度,实现处理器片内并行,才能延长摩尔定律,不断提高处理器的性能。基于这一共识,依靠半导体和微电子技术的进步,多核或众核处理器结构逐渐成为主流。
尽管处理器核数的增加保证了计算和数据处理能力持续提高,如果没有足够的编程语言和软件层面的支持,这种硬件能力的提高并不能直接转变成程序性能的提升,这是多核时代所面临的严峻的挑战之一。如何充分利用多核处理器的并行处理能力,获得实际的应用性能,不仅对微处理器系统结构、片上互连网络和存储体系结构等提出了挑战,也给处理器的运行时技术带来了亟待解决的新问题。
在多核环境下,多核处理器可能同时执行多个任务,这些任务通常会共享使用缓存资源。但是传统的最近最少使用(LRU,least recently used)的缓存替换策略并不能区分不同任务的访问,因此一个任务的缓存未命中可能会替换属于另一个任务的缓存行。任务间的相互干扰和冲突造成缓存命中率下降,进而导致任务对内存带宽和总线带宽的争抢,对系统的性能影响很大。因此高效管理片上共享缓存资源是提高多核处理器系统性能的关键点之一。
为了避免多核环境下的共享缓存竞争,人们提出了缓存分区技术,它通过控制程序或任务访问的缓存区域,实现不同缓存分区间的隔离。在分配缓存分区时,一类方法是给程序或任务分配固定大小的缓存,此种方法忽视了程序在执行过程中数据局部性的阶段性特征,即程序在执行过程的不同阶段对缓存的需求可能存在较大差异,因而容易导致缓存资源浪费或不足;另一类方法则是在程序执行过程中根据程序行为动态调整缓存分区,这种方法通过历史预测未来,存在一定误差,且动态行为采集和分析的开销较大。
综上所述,多核环境下共享缓存的性能优化是具有广泛应用价值的研究方向,但现阶段针对共享缓存的性能优化的已有研究成果都存在着一定不足。因此在现阶段,对共享缓存性能优化的实现思路进行更多的思考和尝试是十分有意义的。
发明内容
本发明的目的是提出一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法,应用场景为多核架构下多任务并行的情况。本发明通过局部性分析方法对要运行的任务的访存踪迹序列进行预分析,标记其阶段信息,并在实际执行的过程中根据任务的阶段变化进行动态的分配与调整。在分配与调整的过程中采用了缓存分配方法,可以使得每个任务的分配与调整不影响其他任务的执行,并大大减少数据迁移量。在本发明中任务一般指线程,但也可以根据具体的分隔需求而定。例如一个多线程程序各个线程间出现缓存干扰的情况,应用本发明方法能够减少这种干扰,则可把每个线程看做一个任务。同理如果只想减少一个进程与其他任务间的干扰,则可把这个进程看做一个任务。如非特指本发明方法是针的是在一个多核环境下,同时有多个任务并行执行。
本发明的技术方案是:对各任务进行预先执行,通过它们的访存踪迹分析出其各自的阶段性特征,再通过一种缓存分配方法根据实际运行时各任务所处的阶段对缓存进行动态的分配与调整,从而减少任务间的缓存干扰。
本发明旨在根据各任务实时的缓存需求对缓存进行优化管理,并通过合理的分配方法尽可能的减小优化的代价。实时的测量各任务的缓存需求是不现实的,这会严重拖慢系统运行。考虑到程序中普遍存在的阶段性特征,依据缓存需求对任务进行预分析,划分出具有不同缓存需求的阶段。这里的缓存需求,最直观的表现是命中率曲线,即程序单独运行时总体的缓存命中率关于缓存空间大小的曲线。获取这种曲线的代价是非常大的,需要在不同缓存大小的情况下完整执行程序以获得相应的命中率。同时缓存命中率是程序局部性的一种具体表象,难以对此进行分析,需要一种更内在的能提现缓存需求的属性,据此本发明采用重用距离分布进行划分。
重用距离分布是缓存需求的一种内在表现。一次内存访问的重用距离定义为到再次访问同一位置之间访问的不同地址的数量。重用距离越大,说明两次访问之间对其他位置的访问越多,就缓存行为来说,这意味着之前被缓存的内容很可能已经被其他的内存访问替换出去了,这就使得该次缓存没有产生效果,造成命中率下降。如果一个访存踪迹序列中大部分重用距离都比较大,那么就需要相应的比较大的缓存空间来保证命中率。一个访存踪迹序列的所有重用距离产生一个重用距离分布,根据这个分布得到其缓存需求。注意到重用距离分布是完全由访存踪迹序列决定的,在给定访存踪迹序列后,任意一段的重用距离分布都可以直接计算出来。
在确定了刻画缓存需求的方法后,要利用该指标对访存踪迹序列进行划分,划分的目的在于找到程序缓存需求的阶段性变化,具有类似重用距离分布的相邻的段应该被划分在一起。符合要求的划分任意相邻的两段应当有一定的差异,并且每一段都不能再划分为有一定差异的子段,同时划分的段数应当尽量少。
在各任务并行执行的过程中,任务的阶段会发生变化。本发明通过一个缓存管理模块来根据任务的阶段变化动态分配或调整缓存的分配。阶段的特性由阶段信息来描述,阶段信息包括该阶段的类型,该阶段访问的数据对象。
本发明基于访存踪迹局部性分析的多核环境下共享缓存优化流程如下:
步骤一:用户将需要执行的程序、每个用户程序的样例以及重用距离阈值K阈值提交给预分析模块,并根据需求指定任务的划分方式。例如是将一个程序当做一个任务,还是将其每个线程当做一个任务。预分析模块对每个任务以给定的样例作为输入执行,并获取其访存踪迹序列,再利用自顶向下的层次划分方法对每个访存踪迹序列进行划分。将划分的结果回映射到程序的源码,最终实现对程序源码的划分。对划分出的每一段代码前插入阶段信息代码,每当执行到该段代码时,向缓存管理模块发送阶段信息,该阶段信息包括阶段的类型和访问的数据对象;
步骤二:将经过步骤一处理的各任务在系统中实际执行;缓存管理模块为各任务保存着历史信息,一个任务的历史信息定义为该任务当前已分配的数据对象及其占用缓存的类型;当某个任务的执行阶段发生改变时,缓存管理模块将新阶段的信息与该任务的历史信息进行对比,检测是否产生冲突;冲突定义为存在同时出现在新阶段信息与历史信息中并且具有不同缓存类型的数据对象;如果新阶段中的数据对象在历史信息中未出现,则意味着该数据对象是第一次访问,还未分配空间;除去产生冲突和未分配的数据对象,剩下的便是已分配但未冲突的数据对象,该类数据对象无需进行任何改动;将产生冲突和未分配的数据对象传入缓存分配模块;
步骤三:对于未分配的数据对象,缓存分配模块直接给其分配指定类型的缓存;对于产生冲突的数据对象,缓存分配模块需要将该数据对象从其所在的物理内存空间迁移到新的物理内存空间,然后将其原来的虚拟内存映射到新的物理内存。
在上述的技术方案下,本发明的有益效果主要在于,提出了一种具有实用性的多任务并行系统缓存优化策略,可以提高多任务并行时的缓存性能,主要表现在:
①整个优化策略引入的额外代价小,主要时间消耗在预分析阶段,而实际执行阶段不需要再实时提取额外的信息。
②通过把任务划分成具有不同访存特性的段,可以更细粒度的调节缓存的分配。
③通过区分具有不同缓存需求的任务,可以有效提高分隔需求较高的任务的性能;同时使分隔需求较低的任务均匀共享一部分缓存,可以降低出现缓存热点的概率。
④动态调整缓存分配的代价小,主要表现在(a)一个任务状态出现变化时仅会影响其自身的缓存分配,不影响其他的任务,所以仅需调整该任务的缓存分配;
(b)将任务进行划分后,各段访问的数据只是整个任务的一部分,调整时仅需调整这一段中的数据的缓存分配。
附图说明
图1是本发明基于访存踪迹局部性分析的多核环境下共享缓存优化的流程图。
图2是本发明预分析模块的流程图。
图3是本发明缓存管理模块的流程图。
具体实施方式
下面将结合附图对本发明做进一步的详细说明。
在本发明中,程序代码记为P,每个程序代码P运行时产生一个任务,任务记为task。操作系统中所有任务记为T={task1,task2,…,taskc},task1表示第一个任务,task2表示第一个任务,taskc表示最后一个任务,c表示任务的标识号,为了方便说明,taskc也表示任意一个任务。操作系统中所有任务T的访存踪迹序列记为其中:
task1的访存踪迹序列记为 表示task1的第一个访存踪迹序列,表示task1的第二个访存踪迹序列,表示task1的最后一个访存踪迹序列,j表示task1的访存踪迹序列标识号,为了方便说明,也表示task1的任意一个访存踪迹序列。
task2的访存踪迹序列记为 表示task2的第一个访存踪迹序列,表示task2的第二个访存踪迹序列,表示task2的最后一个访存踪迹序列,v表示task2的访存踪迹序列标识号,为了方便说明,也表示task2的任意一个访存踪迹序列。
taskc的访存踪迹序列记为 表示taskc的第一个访存踪迹序列,表示taskc的第二个访存踪迹序列,表示taskc的最后一个访存踪迹序列,w表示taskc的访存踪迹序列标识号,为了方便说明,也表示taskc的任意一个访存踪迹序列。
在本发明中,任意一个程序代码P划分为多个代码段,即P={p1,p2,…,pa},p1表示第一个代码段,p2表示第二个代码段,pa表示最后一个代码段,a表示代码段标识号,为了方便说明,pa也表示任意一个代码段。代码段在实际运行的过程中,也称为阶段。任意一个任务taskc运行时所处的任务阶段记为任意一个代码段pa的阶段信息记为任意一个代码段pa的阶段信息代码记为所述是指将阶段信息发送给缓存管理模块的指令序列。
在本发明中,多个数据对象构成的集合记为Q={q1,q2,…,qb},q1表示第一个数据对象,q2表示第二个数据对象,qb表示最后一个数据对象,b表示数据对象标识号,为了方便说明,qb也表示任意一个数据对象。对于程序代码P中包括的数据对象记为QP,即QP={q1,q2,…,qb};同理,表示p1中包括的数据对象,表示p2中包括的数据对象,表示pa中包括的数据对象。
在本发明中,设置的内存空间类型有两种,将第一种内存空间类型记为Type_A,第二种内存空间类型记为Type_B。
对于任意一个代码段pa所需的内存空间类型记为则有
对于任意一个数据对象qb所需的内存空间类型记为则有所述Q={q1,q2,…,qb}的内存空间类型为 表示q1的内存空间类型,表示q2的内存空间类型,表示qb的内存空间类型。
对于任意一个任务taskc在缓存管理模块中将存储其的历史信息,记为
图1给出了本发明所提出的整体技术方案。在具体的实施方式中,本专利的技术方案可以划分为如下的几个模块:
预分析模块:预分析模块对用户将要执行的程序代码P进行预先分析,将程序代码P划分成数个代码段p1,p2,…,pa;然后,确定出任意一个代码段pa的代码段类型然后,在任意一个代码段pa的开始插入阶段信息代码在实际运行的过程中所述的与缓存管理模块进行交互,指导缓存的动态分配和调整。
缓存管理模块:缓存管理模块在实际执行的过程中控制着由预分析模块处理过的程序的缓存分配。缓存管理模块保存维护着各任务的历史信息并当某个任务taskc的任务阶段发生变化时,将根据接收到的阶段信息与历史信息进行比对,得出调整信息F={G,TypesG,H,TypesH};进而将所述调整信息F={G,TypesG,H,TypesH}输出给缓存分配模块进行处理。
G={g1,g2,…ge}表示未分配的数据对象集,g1表示第一个未分配的数据对象,g2表示第二个未分配的数据对象,ge表示最后一个未分配的数据对象,e表示未分配的数据对象标识号,为了方便说明,ge也表示任意一个未分配的数据对象。
所述G={g1,g2,…ge}的内存空间类型为 表示g1的内存空间类型,表示g2的内存空间类型,表示ge的内存空间类型。
H={h1,h2,…hf}表示存在冲突的数据对象集,h1表示第一个存在冲突的数据对象,h2表示第二个存在冲突的数据对象,hf表示最后一个存在冲突的数据对象,f表示存在冲突的数据对象标识号,为了方便说明,hf也表示任意一个存在冲突的数据对象。
所述H={h1,h2,…hf}的内存空间类型为 表示h1的内存空间类型,表示h2的内存空间类型,表示hf的内存空间类型。
缓存分配模块:缓存分配模块实现具体的缓存分配与调整。当收到来自缓存管理模块的调整信息F={G,TypesG,H,TypesH}时,该模块给未分配的数据对象G={g1,g2,…ge}分配对应类型的内存空间;该模块将存在冲突的数据对象H={h1,h2,…hf}迁移到对应类型的内存空间中。
接下来将对上述各个模块的具体实现方式进行进一步详细的说明。
预分析模块
参见图2所示,用户将需要执行的程序、每个用户程序的样例以及重用距离阈值K阈值提交给预分析模块;预分析模块的处理过程为:
步骤11,预分析模块对T={task1,task2,…,taskc}中的每个任务以给定的样例作为输入执行,并获取其访存踪迹序列
步骤12,采用局部性划分方法对所述中的每个访存踪迹序列进行划分,得到划分后的访存踪迹序列
步骤13,将所述的映射到所属程序的源代码上,从而实现了对程序源代码的划分;
步骤14,对划分出的任意一个代码段pa确定其类型并插入阶段信息代码得到处理后的任务F_T={task1,task2,…,taskc}。
本发明的具体保护点并不涵盖获取程序访存踪迹序列的具体实现过程,但可以给出特定硬件平台上的一种实现方法:该方法适用于Intel IA-32/64处理器架构。Intel公司开发的Intel Pin工具提供了一系列的函数接口来帮助用户捕获程序运行时的详细信息。利用Pin对程序进行二进制插桩,可以获得程序的访存踪迹序列。
在本发明中,局部性划分方法的具体实现步骤如下:
步骤21,获取访存踪迹序列并压缩;通过Intel Pin对程序二进制文件进行插桩,获取程序的访存踪迹序列。一方面为了减少数据量,另一方面限制划分的最小粒度,把访存踪迹序列中的多个元素合并为一个,统计这些访问的重用距离的分布。
步骤22,通过自顶向下的层次划分法对压缩后的序列进行划分,然后将划分结果映射到程序源代码,将代码划分成数个代码段p1,p2,…,pa
在本发明中,所述自顶向下的层次划分法请参考《模式识别与人工智能》在2007年6月第20卷第3期公开的“基于层次聚类的时间序列在线划分算法”一文。其中最佳划分点的选择方法为:假设压缩后的序列有多个元素,则任意相邻两个元素之间都可以作为划分点。每个划分点左右两侧的元素各自合并成一个重用距离分布,左右两个重用距离分布归一化后对应位置的差值的平方和记为该划分点的差异值。在所有划分点中选取差异值最大的,如果该差异值大于事先设定的阈值,则以该划分点将当前段划分为下一层次的两段;否则停止对该段的划分。
步骤23,对划分出的每个代码段,根据其重用距离分布,将其归入到Type_A或者Type_B中。如果任务taskc的pa的重用距离分布记为RK,且所述RK中小于K阈值的部分大于等于超过80%,则将该pa归入到Type_A中;所述RK中小于K阈值的部分小于超过80%,则将该pa归入到Type_B中。在本发明中,所述K阈值可根据缓存空间大小进行调节。
在本发明中,阶段信息代码的具体作用是向缓存管理模块发送阶段信息将要访问的数据对象以及阶段类型,待缓存管理模块与缓存分配模块完成相应的处理后,开始正式执行该阶段。
缓存管理模块
参见图3所示,缓存管理模块在实际执行的过程中控制着由预分析模块处理过的程序的缓存分配。缓存管理模块保存维护着各任务的历史信息并当某个任务taskc的阶段发生变化时,将接收到的阶段信息与该任务的历史信息进行比对,得到调整信息F={G,TypesG,H,TypesH},并交给缓存分配模块进行处理,待处理完成后更新历史信息,通知该任务阶段处理完成,可以开始执行。
在本发明中,历史信息的比对方法是:假设taskc发送的阶段信息taskc在缓存管理模块中存储的历史信息令数据对象交集对任意qv,如果满足则将qv加入H,将加入TypesH;再令数据对象差异对任意qv,将加入TypesG,最终得到调整信息F={G,TypesG,H,TypesH}。
在本发明中,更新历史信息的方法是:taskc在缓存管理模块中存储的历史信息当缓存分配模块处理完调整信息F={G,TypesG,H,TypesH}后,首先对任意hf∈H,必有qb∈Q,使得hf=qb,则令再令数据对象并集Q=Q∪G,最终更新历史信息,即将Q更新为Q,TypesQ更新为
缓存分配模块
在本发明中,每当缓存分配模块接收到某个任务taskc的调整信息F={G,TypesG,H,TypesH}后,则具体进行如下处理:
对G={g1,g2,…ge}中的任意一未分配数据对象ge,为其分配类型的内存空间;
对H={h1,h2,…hf}中的任意一存在冲突数据对象hf,将其迁移到类型的内存空间;
在完成缓存调整后,通知缓存管理模块更新历史信息
本发明是一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法,所要解决的是如何提高多核环境下共享缓存的技术问题,该方法通过执行计算机程序实现对共享缓存空间的控制,反映的是对各任务进行预先执行,通过它们的访存踪迹分析出其各自的阶段性特征,再通过一种缓存分配方法根据实际运行时各任务所处的阶段对缓存进行动态的分配与调整,从而减少任务间的缓存干扰。本发明利用的是遵循自然规律的技术手段,从而实现对共享缓存空间的优化,提高系统运行速度。

Claims (7)

1.一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:在多核环境下共享缓存中设置了预分析模块、缓存管理模块和缓存分配模块;
基于访存踪迹局部性分析的多核环境下共享缓存优化的步骤为:
步骤一:用户将需要执行的程序、每个用户程序的样例以及重用距离阈值K阈值提交给预分析模块,并根据需求指定任务的划分方式;预分析模块对每个任务以给定的样例作为输入执行,并获取其访存踪迹序列,再利用自顶向下的层次划分方法对每个访存踪迹序列进行划分;将划分的结果回映射到程序的源码,最终实现对程序源码的划分;对划分出的每一段代码前插入阶段信息代码,每当执行到该段代码时,向缓存管理模块发送阶段信息,该阶段信息包括阶段的类型和访问的数据对象;
步骤二:将经过步骤一处理的各任务在系统中实际执行;缓存管理模块为各任务保存着历史信息;当某个任务的执行阶段发生改变时,缓存管理模块将新阶段的信息与该任务的历史信息进行对比,检测是否产生冲突;如果新阶段中的数据对象在历史信息中未出现,则意味着该数据对象是第一次访问,还未分配空间;除去产生冲突和未分配的数据对象,剩下的便是已分配但未冲突的数据对象,该类数据对象无需进行任何改动;将产生冲突和未分配的数据对象传入缓存分配模块;
步骤三:对于未分配的数据对象,缓存分配模块直接给其分配指定类型的缓存;对于产生冲突的数据对象,缓存分配模块需要将该数据对象从其所在的物理内存空间迁移到新的物理内存空间,然后将其原来的虚拟内存映射到新的物理内存;
一个任务的历史信息定义为该任务当前已分配的数据对象及其占用缓存的类型;
冲突定义为存在同时出现在新阶段信息与历史信息中并且具有不同缓存类型的数据对象。
2.根据权利要求1所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:在预分析模块中的处理过程为:
步骤11,预分析模块对T={task1,task2,…,taskc}中的每个任务以给定的样例作为输入执行,并获取其访存踪迹序列
task1表示第一个任务,task2表示第一个任务,taskc表示最后一个任务,c表示任务的标识号;
task1的访存踪迹序列记为 表示task1的第一个访存踪迹序列,表示task1的第二个访存踪迹序列,表示task1的最后一个访存踪迹序列,j表示task1的访存踪迹序列标识号;
task2的访存踪迹序列记为 表示task2的第一个访存踪迹序列,表示task2的第二个访存踪迹序列,表示task2的最后一个访存踪迹序列,v表示task2的访存踪迹序列标识号;
taskc的访存踪迹序列记为 表示taskc的第一个访存踪迹序列,表示taskc的第二个访存踪迹序列,表示taskc的最后一个访存踪迹序列,w表示taskc的访存踪迹序列标识号;
步骤12,采用局部性划分方法对所述中的每个访存踪迹序列进行划分,得到划分后的访存踪迹序列
步骤13,将所述的映射到所属程序的源代码上,从而实现了对程序源代码的划分;
步骤14,对划分出的任意一个代码段pa确定其类型第一种内存空间类型记为Type_A,第二种内存空间类型记为Type_B,并插入阶段信息代码得到处理后的任务F_T={task1,task2,…,taskc}。
3.根据权利要求2所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于局部性划分方法的具体实现步骤为:
步骤21,获取访存踪迹序列并压缩;通过Intel Pin对程序二进制文件进行插桩,获取程序的访存踪迹序列;
步骤22,通过自顶向下的层次划分法对压缩后的序列进行划分,然后将划分结果映射到程序源代码,将代码划分成数个代码段p1,p2,…,pa;p1表示第一个代码段,p2表示第二个代码段,pa表示最后一个代码段,a表示代码段标识号;
步骤23,对划分出的每个代码段,根据其重用距离分布,将其归入到第一种内存空间类型Type_A或者第二种内存空间类型Type_B中;如果任务taskc的代码段pa的重用距离分布记为RK,且所述RK中小于K阈值的部分大于等于超过80%,则将该pa归入到Type_A中;所述RK中小于K阈值的部分小于超过80%,则将该pa归入到Type_B中。
4.根据权利要求1所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:缓存管理模块在实际执行的过程中控制着由预分析模块处理过的程序的缓存分配;缓存管理模块保存维护着各任务的历史信息多个数据对象构成的集合记为Q={q1,q2,…,qb},q1表示第一个数据对象,q2表示第二个数据对象,qb表示最后一个数据对象,b表示数据对象标识号,所述Q={q1,q2,…,qb}的内存空间类型为 表示q1的内存空间类型,表示q2的内存空间类型,表示qb的内存空间类型,并当某个任务taskc的任务阶段发生变化时,将接收到的一个代码段pa的阶段信息与该任务的历史信息进行比对,得到调整信息F={G,TypesG,H,TypesH},并交给缓存分配模块进行处理,待处理完成后更新历史信息;任意一个程序代码P划分为多个代码段,即P={p1,p2,…,pa},p1表示第一个代码段,p2表示第二个代码段,pa表示最后一个代码段,a表示代码段标识号,任意一个代码段pa的阶段信息代码记为所述是指将阶段信息发送给缓存管理模块的指令序列;
对于程序代码P中包括的数据对象记为QP,即QP={q1,q2,…,qb};同理,表示p1中包括的数据对象,表示p2中包括的数据对象,表示pa中包括的数据对象;对于任意一个代码段pa所需的内存空间类型记为
G={g1,g2,…ge}表示未分配的数据对象集,g1表示第一个未分配的数据对象,g2表示第二个未分配的数据对象,ge表示最后一个未分配的数据对象,e表示未分配的数据对象标识号;
所述G={g1,g2,…ge}的内存空间类型为 表示g1的内存空间类型,表示g2的内存空间类型,表示ge的内存空间类型;
H={h1,h2,…hf}表示存在冲突的数据对象集,h1表示第一个存在冲突的数据对象,h2表示第二个存在冲突的数据对象,hf表示最后一个存在冲突的数据对象,f表示存在冲突的数据对象标识号;
所述H={h1,h2,…hf}的内存空间类型为 表示h1的内存空间类型,表示h2的内存空间类型,表示hf的内存空间类型。
5.根据权利要求1所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:每当缓存分配模块接收到某个任务taskc的调整信息F={G,TypesG,H,TypesH},则具体进行如下处理:对G={g1,g2,…ge}中的任意一未分配数据对象ge,为其分配类型的内存空间;对H={h1,h2,…hf}中的任意一存在冲突数据对象hf,将其迁移到类型的内存空间;在完成缓存调整后,通知缓存管理模块更新历史信息;
G={g1,g2,…ge}表示未分配的数据对象集,g1表示第一个未分配的数据对象,g2表示第二个未分配的数据对象,ge表示最后一个未分配的数据对象,e表示未分配的数据对象标识号;
所述G={g1,g2,…ge}的内存空间类型为 表示g1的内存空间类型,表示g2的内存空间类型,表示ge的内存空间类型;
H={h1,h2,…hf}表示存在冲突的数据对象集,h1表示第一个存在冲突的数据对象,h2表示第二个存在冲突的数据对象,hf表示最后一个存在冲突的数据对象,f表示存在冲突的数据对象标识号;
所述H={h1,h2,…hf}的内存空间类型为 表示h1的内存空间类型,表示h2的内存空间类型,表示hf的内存空间类型。
6.根据权利要求1所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:历史信息的比对方法是,假设taskc发送的阶段信息taskc在缓存管理模块中存储的历史信息令数据对象交集对任意交集后数据对象qv,如果满足则将qv加入H,将加入TypesH;再令对任意qv,将加入TypesG;最终调整信息F={G,TypesG,H,TypesH};
对于程序代码P中包括的数据对象记为QP,即QP={q1,q2,…,qb};同理,表示p1中包括的数据对象,表示p2中包括的数据对象,表示pa中包括的数据对象;
对于任意一个代码段pa所需的内存空间类型记为则有第一种内存空间类型记为Type_A,第二种内存空间类型记为Type_B;表示交集后数据对象qv的内存空间类型;
多个数据对象构成的集合记为Q={q1,q2,…,qb},q1表示第一个数据对象,q2表示第二个数据对象,qb表示最后一个数据对象,b表示数据对象标识号,所述Q={q1,q2,…,qb}的内存空间类型为 表示q1的内存空间类型,表示q2的内存空间类型,表示qb的内存空间类型;
H={h1,h2,…hf}表示存在冲突的数据对象集,h1表示第一个存在冲突的数据对象,h2表示第二个存在冲突的数据对象,hf表示最后一个存在冲突的数据对象,f表示存在冲突的数据对象标识号;
所述H={h1,h2,…hf}的内存空间类型为 表示h1的内存空间类型,表示h2的内存空间类型,表示hf的内存空间类型。
7.根据权利要求1所述的基于访存踪迹局部性分析的多核环境下共享缓存优化方法,其特征在于:更新历史信息的方法是:taskc在缓存管理模块中存储的历史信息当缓存分配模块处理完调整信息F={G,TypesG,H,TypesH}后,首先对任意hf∈H,必有qb∈Q,使得hf=qb,则令再令数据对象并集Q=Q∪G,最终更新历史信息,即将Q更新为Q,TypesQ更新为
多个数据对象构成的集合记为Q={q1,q2,…,qb},q1表示第一个数据对象,q2表示第二个数据对象,qb表示最后一个数据对象,b表示数据对象标识号,所述Q={q1,q2,…,qb}的内存空间类型为 表示q1的内存空间类型,表示q2的内存空间类型,表示qb的内存空间类型;
G={g1,g2,…ge}表示未分配的数据对象集,g1表示第一个未分配的数据对象,g2表示第二个未分配的数据对象,ge表示最后一个未分配的数据对象,e表示未分配的数据对象标识号;
所述G={g1,g2,…ge}的内存空间类型为 表示g1的内存空间类型,表示g2的内存空间类型,表示ge的内存空间类型;
H={h1,h2,…hf}表示存在冲突的数据对象集,h1表示第一个存在冲突的数据对象,h2表示第二个存在冲突的数据对象,hf表示最后一个存在冲突的数据对象,f表示存在冲突的数据对象标识号;
所述H={h1,h2,…hf}的内存空间类型为 表示h1的内存空间类型,表示h2的内存空间类型,表示hf的内存空间类型。
CN201510010199.0A 2015-01-08 2015-01-08 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 Expired - Fee Related CN104572501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510010199.0A CN104572501B (zh) 2015-01-08 2015-01-08 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510010199.0A CN104572501B (zh) 2015-01-08 2015-01-08 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法

Publications (2)

Publication Number Publication Date
CN104572501A CN104572501A (zh) 2015-04-29
CN104572501B true CN104572501B (zh) 2017-05-17

Family

ID=53088622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510010199.0A Expired - Fee Related CN104572501B (zh) 2015-01-08 2015-01-08 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法

Country Status (1)

Country Link
CN (1) CN104572501B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132834A (zh) * 2017-12-08 2018-06-08 西安交通大学 多级共享高速缓冲存储器架构下的任务分配方法和系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808358B (zh) * 2016-03-29 2019-10-18 西安交通大学 一种用于众核系统的数据相关性线程分组映射方法
CN105808322B (zh) * 2016-04-01 2019-05-03 深圳市硅格半导体股份有限公司 多分区虚拟内存的映射控制方法及装置
CN105912405B (zh) * 2016-04-28 2019-01-29 浪潮(北京)电子信息产业有限公司 一种任务部署方法及装置
CN107463509B (zh) * 2016-06-05 2020-12-15 华为技术有限公司 缓存管理方法、缓存控制器以及计算机系统
CN106095552B (zh) * 2016-06-07 2019-06-28 华中科技大学 一种基于i/o去重的多任务图处理方法及系统
CN110647390B (zh) * 2019-09-20 2021-12-28 西安交通大学 一种多核系统基于局部性量化的并行任务分配调度方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110019A (zh) * 2010-12-31 2011-06-29 北京航空航天大学 一种基于众核处理器和分区结构的事务存储方法
CN103226487A (zh) * 2013-04-25 2013-07-31 中国人民解放军信息工程大学 面向异构众核多级存储结构的数据分布与局部性优化方法
CN103455364A (zh) * 2013-09-05 2013-12-18 北京航空航天大学 一种多核环境并行程序Cache性能在线获取系统及方法
CN103559148A (zh) * 2013-11-15 2014-02-05 山东大学 面向多任务嵌入式系统的片上便笺式存储器管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086816B2 (en) * 2008-10-20 2011-12-27 Dataram, Inc. Method for controlling performance aspects of a data storage and access routine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110019A (zh) * 2010-12-31 2011-06-29 北京航空航天大学 一种基于众核处理器和分区结构的事务存储方法
CN103226487A (zh) * 2013-04-25 2013-07-31 中国人民解放军信息工程大学 面向异构众核多级存储结构的数据分布与局部性优化方法
CN103455364A (zh) * 2013-09-05 2013-12-18 北京航空航天大学 一种多核环境并行程序Cache性能在线获取系统及方法
CN103559148A (zh) * 2013-11-15 2014-02-05 山东大学 面向多任务嵌入式系统的片上便笺式存储器管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于重用距离分析的多虚拟机缓存划分系统";郭雪蓉;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140630;全文 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132834A (zh) * 2017-12-08 2018-06-08 西安交通大学 多级共享高速缓冲存储器架构下的任务分配方法和系统
CN108132834B (zh) * 2017-12-08 2020-08-18 西安交通大学 多级共享高速缓冲存储器架构下的任务分配方法和系统

Also Published As

Publication number Publication date
CN104572501A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
CN104572501B (zh) 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法
US20210201124A1 (en) Systems and methods for neural network convolutional layer matrix multiplication using cache memory
US8400458B2 (en) Method and system for blocking data on a GPU
CN104133661B (zh) 基于列存储的多核并行哈希分区优化方法
CN102663115B (zh) 基于页面染色技术的内存数据库访问优化方法
WO2015058695A1 (zh) 一种存储器资源优化方法和装置
CN103970602B (zh) 一种面向x86多核处理器的数据流程序调度方法
CN107423234A (zh) 多处理器系统及缓存共享方法
CN103761215B (zh) 基于图形处理器的矩阵转置优化方法
CN103959275B (zh) 优化多处理器计算系统中的存储器存取的方法和系统
CN106708626A (zh) 一种面向低功耗的异构多核共享cache划分方法
CN105917319A (zh) 存储器单元和方法
CN102985910A (zh) 对无用存储单元收集的gpu支持
CN102890625A (zh) 运算和控制单元、运算和控制方法、与并行处理器
CN106383792B (zh) 一种基于缺失感知的异构多核缓存替换方法
Mukherjee Synthesis of non-replicated dynamic fragment allocation algorithm in distributed database systems
DE112020007087T5 (de) Gleichzeitige Hashtabellen-Aktualisierungen
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
CN105045564A (zh) 图形处理器中的前端动态共享方法
CN114510319A (zh) 一种基于Kubernetes集群GPU空间共享的方法
CN103020077A (zh) 一种电力系统实时数据库内存管理方法
CN107341193B (zh) 路网中移动对象查询方法
CN104050189B (zh) 页面共享处理方法及装置
CN104778088A (zh) 一种基于减少进程间通信开销的并行i/o优化方法与系统
Chen et al. DBSCAN-PSM: an improvement method of DBSCAN algorithm on Spark

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210416

Address after: 100160, No. 4, building 12, No. 128, South Fourth Ring Road, Fengtai District, Beijing, China (1515-1516)

Patentee after: Kaixi (Beijing) Information Technology Co.,Ltd.

Address before: 100191 Haidian District, Xueyuan Road, No. 37,

Patentee before: BEIHANG University

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

Granted publication date: 20170517

Termination date: 20220108