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

文档序号:8258379阅读:428来源:国知局
一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法
【技术领域】
[0001] 本发明涉及多核架构中共享缓存的性能优化方法。更具体的说,本发明涉及在多 核架构中多任务并行执行共享使用缓存时的缓存性能优化方法。
【背景技术】
[0002] 近年来,由于集成电路制造工艺和芯片功耗的限制,已经不可能通过简单提升主 频的办法提高处理器的性能。目前学术界和工业界普遍认为,只有通过提高集成度,实现处 理器片内并行,才能延长摩尔定律,不断提高处理器的性能。基于这一共识,依靠半导体和 微电子技术的进步,多核或众核处理器结构逐渐成为主流。
[0003] 尽管处理器核数的增加保证了计算和数据处理能力持续提高,如果没有足够的编 程语言和软件层面的支持,这种硬件能力的提高并不能直接转变成程序性能的提升,这是 多核时代所面临的严峻的挑战之一。如何充分利用多核处理器的并行处理能力,获得实际 的应用性能,不仅对微处理器系统结构、片上互连网络和存储体系结构等提出了挑战,也给 处理器的运行时技术带来了亟待解决的新问题。
[0004] 在多核环境下,多核处理器可能同时执行多个任务,这些任务通常会共享使用缓 存资源。但是传统的最近最少使用(LRU,least recently used)的缓存替换策略并不能 区分不同任务的访问,因此一个任务的缓存未命中可能会替换属于另一个任务的缓存行。 任务间的相互干扰和冲突造成缓存命中率下降,进而导致任务对内存带宽和总线带宽的争 抢,对系统的性能影响很大。因此高效管理片上共享缓存资源是提高多核处理器系统性能 的关键点之一。
[0005] 为了避免多核环境下的共享缓存竞争,人们提出了缓存分区技术,它通过控制程 序或任务访问的缓存区域,实现不同缓存分区间的隔离。在分配缓存分区时,一类方法是给 程序或任务分配固定大小的缓存,此种方法忽视了程序在执行过程中数据局部性的阶段性 特征,即程序在执行过程的不同阶段对缓存的需求可能存在较大差异,因而容易导致缓存 资源浪费或不足;另一类方法则是在程序执行过程中根据程序行为动态调整缓存分区,这 种方法通过历史预测未来,存在一定误差,且动态行为采集和分析的开销较大。
[0006] 综上所述,多核环境下共享缓存的性能优化是具有广泛应用价值的研究方向,但 现阶段针对共享缓存的性能优化的已有研究成果都存在着一定不足。因此在现阶段,对共 享缓存性能优化的实现思路进行更多的思考和尝试是十分有意义的。

【发明内容】

[0007] 本发明的目的是提出一种基于访存踪迹局部性分析的多核环境下共享缓存优化 方法,应用场景为多核架构下多任务并行的情况。本发明通过局部性分析方法对要运行的 任务的访存踪迹序列进行预分析,标记其阶段信息,并在实际执行的过程中根据任务的阶 段变化进行动态的分配与调整。在分配与调整的过程中采用了缓存分配方法,可以使得每 个任务的分配与调整不影响其他任务的执行,并大大减少数据迁移量。在本发明中任务一 般指线程,但也可以根据具体的分隔需求而定。例如一个多线程程序各个线程间出现缓存 干扰的情况,应用本发明方法能够减少这种干扰,则可把每个线程看做一个任务。同理如果 只想减少一个进程与其他任务间的干扰,则可把这个进程看做一个任务。如非特指本发明 方法是针的是在一个多核环境下,同时有多个任务并行执行。
[0008] 本发明的技术方案是:对各任务进行预先执行,通过它们的访存踪迹分析出其各 自的阶段性特征,再通过一种缓存分配方法根据实际运行时各任务所处的阶段对缓存进行 动态的分配与调整,从而减少任务间的缓存干扰。
[0009] 本发明旨在根据各任务实时的缓存需求对缓存进行优化管理,并通过合理的分配 方法尽可能的减小优化的代价。实时的测量各任务的缓存需求是不现实的,这会严重拖慢 系统运行。考虑到程序中普遍存在的阶段性特征,依据缓存需求对任务进行预分析,划分出 具有不同缓存需求的阶段。这里的缓存需求,最直观的表现是命中率曲线,即程序单独运行 时总体的缓存命中率关于缓存空间大小的曲线。获取这种曲线的代价是非常大的,需要在 不同缓存大小的情况下完整执行程序以获得相应的命中率。同时缓存命中率是程序局部性 的一种具体表象,难以对此进行分析,需要一种更内在的能提现缓存需求的属性,据此本发 明采用重用距离分布进行划分。
[0010] 重用距离分布是缓存需求的一种内在表现。一次内存访问的重用距离定义为到再 次访问同一位置之间访问的不同地址的数量。重用距离越大,说明两次访问之间对其他位 置的访问越多,就缓存行为来说,这意味着之前被缓存的内容很可能已经被其他的内存访 问替换出去了,这就使得该次缓存没有产生效果,造成命中率下降。如果一个访存踪迹序列 中大部分重用距离都比较大,那么就需要相应的比较大的缓存空间来保证命中率。一个访 存踪迹序列的所有重用距离产生一个重用距离分布,根据这个分布得到其缓存需求。注意 到重用距离分布是完全由访存踪迹序列决定的,在给定访存踪迹序列后,任意一段的重用 距离分布都可以直接计算出来。
[0011] 在确定了刻画缓存需求的方法后,要利用该指标对访存踪迹序列进行划分,划分 的目的在于找到程序缓存需求的阶段性变化,具有类似重用距离分布的相邻的段应该被划 分在一起。符合要求的划分任意相邻的两段应当有一定的差异,并且每一段都不能再划分 为有一定差异的子段,同时划分的段数应当尽量少。
[0012] 在各任务并行执行的过程中,任务的阶段会发生变化。本发明通过一个缓存管理 模块来根据任务的阶段变化动态分配或调整缓存的分配。阶段的特性由阶段信息来描述, 阶段信息包括该阶段的类型,该阶段访问的数据对象。
[0013] 本发明基于访存踪迹局部性分析的多核环境下共享缓存优化流程如下:
[0014] 步骤一:用户将需要执行的程序、每个用户程序的样例以及重用距离阈值提 交给预分析模块,并根据需求指定任务的划分方式。例如是将一个程序当做一个任务,还是 将其每个线程当做一个任务。预分析模块对每个任务以给定的样例作为输入执行,并获取 其访存踪迹序列,再利用自顶向下的层次划分方法对每个访存踪迹序列进行划分。将划分 的结果回映射到程序的源码,最终实现对程序源码的划分。对划分出的每一段代码前插入 阶段信息代码,每当执行到该段代码时,向缓存管理模块发送阶段信息,该阶段信息包括阶 段的类型和访问的数据对象;
[0015] 步骤二:将经过步骤一处理的各任务在系统中实际执行;缓存管理模块为各任务 保存着历史信息,一个任务的历史信息定义为该任务当前已分配的数据对象及其占用缓存 的类型;当某个任务的执行阶段发生改变时,缓存管理模块将新阶段的信息与该任务的历 史信息进行对比,检测是否产生冲突;冲突定义为存在同时出现在新阶段信息与历史信息 中并且具有不同缓存类型的数据对象;如果新阶段中的数据对象在历史信息中未出现,则 意味着该数据对象是第一次访问,还未分配空间;除去产生冲突和未分配的数据对象,剩下 的便是已分配但未冲突的数据对象,该类数据对象无需进行任何改动;将产生冲突和未分 配的数据对象传入缓存分配模块;
[0016] 步骤三:对于未分配的数据对象,缓存分配模块直接给其分配指定类型的缓存; 对于产生冲突的数据对象,缓存分配模块需要将该数据对象从其所在的物理内存空间迁移 到新的物理内存空间,然后将其原来的虚拟内存映射到新的物理内存。
[0017] 在上述的技术方案下,本发明的有益效果主要在于,提出了一种具有实用性的多 任务并行系统缓存优化策略,可以提高多任务并行时的缓存性能,主要表现在 :
[0018] ①整个优化策略引入的额外代价小,主要时间消耗在预分析阶段,而实际执行阶 段不需要再实时提取额外的信息。
[0019] ②通过把任务划分成具有不同访存特性的段,可以更细粒度的调节缓存的分配。
[0020] ③通过区分具有不同缓存需求的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1