一种面向多核处理器的共享末级高速缓存访存方法和装置与流程

文档序号:12665700阅读:290来源:国知局
一种面向多核处理器的共享末级高速缓存访存方法和装置与流程

本发明涉及计算机系统中的处理器高速缓存管理,特别涉及一种面向多核处理器的共享末级高速缓存访存方法和装置。



背景技术:

多核处理器是将多个处理器封装在一个芯片内部,因此又被称为单芯片多处理器(single-chip multiprocessors,简称CMP)。多核处理器中每个处理器核都具有独立的微体系结构资源。多核处理器技术具有高度的可扩展性、设计可复用、软件优势明显、功耗低以及容忍线延迟等优点。

在现有多核处理器中,末级高速缓存大体可分为私有末级高速缓存和共享末级高速缓存两种基本组织形式。采用私有末级高速缓存结构,每个处理器核具有独立的末级高速缓存,处理器核同末级高速缓存紧密耦合。每个私有末级高速缓存只处理来自本地的处理器访存交易。私有末级高速缓存具有访存延迟较小、性能隔离和易于扩展等优点。但是,由于每个处理器核拥有的私有末级高速缓存大小是固定的,不能根据运行程序的访存行为动态调整,因此存在末级高速缓存利用率低等缺点。采用私有末级高速缓存结构可能会出现一个处理器核由于私有末级高速缓存空间不足导致大量失效、频繁访问主存,而另一个处理器核的部分私有末级高速缓存空间却处于空间状态。共享末级高速缓存结构是指由多个不同的处理器核共享一个容量较大的末级高速缓存。采用该结构可以方便、灵活地在多个处理器核之间共享公共数据,更能适应负载不均衡的情况,从而提高末级高速缓存的利用率并加速处理器核间通信速度。基于上述考虑,现代多核处理器多倾向于采用共享末级高速缓存结构。

但是,采用共享末级高速缓存结构也会带来并发进程间冲突和干扰等问题,对多核系统的整体性能和公平性造成损害。在多进程并发执行环境下,由于不同处理器核所运行程序的访存行为和局部性特征并不一致,来自不同进程的数据相互抢占共享末级高速缓存空间。

当前处理器末级高速缓存作为存储层次中的重要一级设备,目前普遍由硬件采用LRU替换算法进行管理,但LRU(Least Recently Used最近最少使用)替换算法过度依赖硬件实现,无法区分数据的局部性强度和级别,将会把局部性良好、被经常使用到的数据替换出末级高速缓存,从而引发高速缓存污染问题。末级高速缓存污染会增加系统的访存交易数量。随着处理器和存储器之间性能差距的逐渐扩大,末级高速缓存污染造成更加严重的性能损失,对系统整体性能造成较大的负面影响。由于并发进程相互之间存在共享资源冲突和争用,在多核处理器平台采用共享末级高速缓存结构会加剧高速缓存污染问题。该问题已经成为制约多核处理器整体性能提升的主要瓶颈之一。

在多进程并发执行环境中,当前解决方案是采用进程间共享末级高速缓存划分方法为每个进程分配适当的、相互隔离的末级高速缓存空间,以降低进程间的末级高速缓存冲突。但是进程间末级高速缓存划分结束后,同单独运行时相比,单个进程能够访问到的末级高速缓存空间减少。在这种情况下,单个进程内局部性良好的数据被替换出末级高速缓存的可能性显著增加,进一步加重了进程内的数据访问冲突和末级高速缓存污染。



技术实现要素:

本发明要解决的技术问题是:如何有效管理共享末级高速缓存,提高多进程并发执行环境下多核处理器的访存性能。

为了解决上述技术问题,本发明提供了一种面向多核处理器的共享末级高速缓存访存方法,包括:

步骤A、在多核处理器多进程并发执行环境中,统计每个进程中每个数据区域的末级高速缓存访问信息的数量;

步骤B、根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的访存模式;

步骤C、根据所述访存模式,决定并发执行的每个进程中每个数据区域的数据是否访问共享末级高速缓存。

优选地,所述步骤B还包括,根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的局部性强度。

优选地,所述方法还包括:

步骤D、对于判断结果为访问共享末级高速缓存的,根据所述局部性强度,决定并发执行的每个进程中每个数据区域的数据进入共享末级高速缓存使得插入位置。

优选地,在步骤A之前还包括:配置每个进程中每个数据区域的范围。

优选地,对于判断结果为不访问共享末级高速缓存的数据,直接访问主存储器。

优选地,所述访问信息包括访问命中信息和访问失效信息;访存模式包括最近最少使用访存模式、颠簸访存模式、流访存模式以及混合访存模式。

优选地,所述步骤B通过设置计数器统计访问信息的数量,根据步骤D中插入位置确定前和插入位置确定后,访问信息数量的变化,决定所述访存模式。

优选地,所述步骤C通过设置计数器统计结果,将失效率达到预定程度的数据设定为旁路数据,并不将所述旁路数据存放在高速缓存中;

根据所述旁路数据存放在高速缓存前和存放在高速缓存后高速缓存失效率变化,确定数据是否访问共享末级高速缓存;如果高速缓存失效率减小,则所述数据区域被旁路;否则,所述数据区域应该被缓存。。

为了解决上述技术问题,本发明还提供了一种面向多核处理器的共享末级高速缓存访存装置,包括监视器、控制器和旁路控制接口;

所述监视器,用于在多核处理器多进程并发执行环境中,统计每个进程中每个数据区域的末级高速缓存访问信息的数量;

所述控制器,用于根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的访存模式;并根据所述访存模式,决定并发执行的每个进程中每个数据区域的数据是否访问共享末级高速缓存;

所述旁路控制接口,用于为判断结果为访问共享末级高速缓存的数据提供访问共享末级高速缓存的通路。

优选地,所述控制器,还用于根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的局部性强度,并根据所述局部性强度,决定并发执行的每个进程中每个数据区域的数据进入共享末级高速缓存使得插入位置。

优选地,所述访存装置,还包括插入控制接口,用于为访问共享末级高速缓存的数据提供到达所述插入位置的通路。

优选地,所述控制器,还用于在监视器开始统计访问信息的数量之前,配置每个进程中每个数据区域的范围。。

与现有技术相比,本发明采用旁路技术并调整数据进入末级高速缓存的插入位置可以限制局部性差数据区域的末级高速缓存访问空间,可以减少对其他数据高速缓存空间的抢占,进而在高速缓存中保护局部性良好的数据,提高末级高速缓存的利用率。以数据区域为单位调整旁路和插入策略可以比现有分进程的优化方法更细粒度地管理末级高速缓存,进一步提升多核处理器的访存性能。

附图说明

图1为本发明提出的面向多核处理器的共享末级高速缓存访存装置的结构示意图;

图2是本发明提出的面向多核处理器的共享末级高速缓存访存方法的工作流程图;

图3是实施例一中的高速缓存访存的工作流程图;

图4是实施例一中的数据区域的访存行为配置结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

如图1所示,本发明实施例的一种面向多核处理器的共享末级高速缓存访存装置,包括监视器、控制器和旁路控制接口;

所述监视器,用于在多核处理器多进程并发执行环境中,统计每个进程中每个数据区域的末级高速缓存访问信息的数量;

所述控制器,用于根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的访存模式;并根据所述访存模式,决定并发执行的每个进程中每个数据区域的数据是否访问共享末级高速缓存;

所述旁路控制接口,用于为判断结果为访问共享末级高速缓存的数据提供访问共享末级高速缓存的通路。

本发明实施例在多核处理器中设计共享末级缓存分区域性能监视器,该监视器可以在线统计多核处理器多进程并发执行环境中不同进程内多个数据区域的共享末级高速缓存访问计数;

所述控制器,还用于根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的局部性强度,并根据所述局部性强度,决定并发执行的每个进程中每个数据区域的数据进入共享末级高速缓存使得插入位置。

所述访存装置,还包括插入控制接口,用于为访问共享末级高速缓存的数据提供到达所述插入位置的通路。

所述访问信息包括访问命中信息和访问失效信息;访存模式包括最近最少使用访存模式、颠簸访存模式、流访存模式以及混合访存模式。

颠簸访存模式是反复循环访问一片较大的内存区域,该内存区域大小大于高速缓存的容量,使得数据频繁地高速缓存;

流访存被认为是一组大量数据仅被访问一次的情况;

不同访存模式的数据组合在一起构成混合访存模式。

本发明实施例共享末级高速缓存分区域的插入控制接口,通过配置上述插入控制接口可以控制单个进程内不同数据区域中的数据进入末级高速缓存后的插入位置,从而可以间接影响数据在共享末级高速缓存中的分布和停留时间。

所述控制器,还用于在监视器开始统计访问信息的数量之前,配置每个进程中每个数据区域的范围。

如图2所示,本发明实施例的一种面向多核处理器的共享末级高速缓存访存方法,

步骤A、在多核处理器多进程并发执行环境中,统计每个进程中每个数据区域的末级高速缓存访问信息的数量;

步骤B、根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的访存模式;

步骤C、根据所述访存模式,决定并发执行的每个进程中每个数据区域的数据是否访问共享末级高速缓存。

本发明实施例的方法可以在分区域性能监视器的支持下,根据多核计算机系统整体性能变化,确定单个进程中不同数据区域的访存行为,并利用相应接口为其配置合理的共享末级高速缓存管理策略。

步骤B可以进一步根据所述访问信息的数量,判断每个进程中每个数据区域的末级高速缓存的局部性强度。

步骤B通过设置计数器统计访问信息的数量,根据步骤D中插入位置确定前和插入位置确定后,访问信息数量的变化,决定所述访存模式。

步骤C通过设置计数器统计结果,将失效率达到预定程度的数据设定为旁路数据,并不将所述旁路数据存放在高速缓存中;

根据所述旁路数据存放在高速缓存前和存放在高速缓存后高速缓存失效率变化,确定数据是否访问共享末级高速缓存;如果高速缓存失效率减小,则所述数据区域被旁路;否则,所述数据区域应该被缓存。

根据统计结果,失效率达到预定程度的局部性较弱;失效率低于预定程度的局部性较高。

程序的局部性原理:是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行可能仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域内。

但是,程序的访存行为日趋复杂,有些数据被访问一次后可能很长时间内都不会再被访问,这种数据被认为局部性强度较低。

对于判断结果为访问共享末级高速缓存的,根据所述局部性强度,决定并发执行的每个进程中每个数据区域的数据进入共享末级高速缓存使得插入位置。

插入到高速缓存的不同位置,对性能影响很大,判定方法同前面,根据设置不同插入位置的前后变化,决定插入位置判定是否正确。失效率高的一般插入到高速缓存的即将被替换的位置;失效率低的,插入到高速缓存的最远替换位置,具体判定需根据前后两个时间片段的失效率变化决定。

不同访存模式具有不同的局部性强度。本发明实施例提出的方法通过判断改变末级高速缓存管理策略前后的访问计数变化,确定不同进程以及进程内不同数据区域的访存模式。

高速缓存的目标是存放经常被访问到的数据,数据属于局部性差的访存模式,则不需要放入到高速缓存中,以保证高速缓存存放局部性更高的数据。

对于具有颠簸模式的数据区域,应采用BIP(Bimodal Insertion Policy双态插入策略);其他数据区域应该采用LRU。

插入位置是指数据进入末级高速缓存时,其所在的末级高速缓存行在替换链表中的位置。

通过控制每个进程每个数据区域的的数据进入共享末级高速缓存使得插入位置,可以影响共享末级高速缓存的数据分布。

在步骤A之前还包括:配置每个进程中每个数据区域的范围。

所述访问信息包括访问命中信息和访问失效信息。

本实施方式中,访问信息的数量包括命中次数和失效次数;本发明实施例提出的方法通过判断改变末级高速缓存管理策略前后的访问计数变化,确定不同进程以及进程内不同数据区域的访存模式。

利用本发明实施例的装置和方法一方面可以在共享末级高速缓存中保护局部性良好的数据,减少末级高速缓存污染造成的失效,降低多核处理器访存延迟;另一方面可以减少多进程并发执行环境中不同进程间的共享末级高速缓存访问冲突和干扰,提高多核处理器的整体性能。并且本发明实施例的装置可以应用于任何具有共享末级高速缓存结构,同时采用虚拟存储机制的多核处理器计算机系统中,具有实现简单、硬件代价低等优点。

实施例一

在实际运行过程中,对于采用共享末级高速缓存结构的多核处理器而言,每个处理器高层次私有高速缓存失效后的数据在进入共享末级高速缓存前会被判断其所在进程的相应区域是否被设置旁路位。如果该区域旁路位已经被置为1,则该次数据访问会被旁路,直接访问主存储器而不进入共享末级高速缓存中。此外,本发明实施例还设计了多核处理器共享末级高速缓存分区域插入策略控制位,用于设置共享末级高速缓存失效后从内存中读取到的数据在替换链表中的插入位置。

在图3所示的工作流程图中,在多核系统中当单个处理器核出访存操作时,会首先访问自身私有高速缓存。当私有高速缓存失效,没有查找到相应数据时,处理器核会通过片内总线将处理器核编号和访存地址发送到共享末级高速缓存中,对共享末级高速缓存发出访问请求。在访问共享末级高速缓存前,本发明实施例会查询分区域性能监视器及共享末级高速缓存控制器,通过比较该数据的处理器核编号和地址范围确定该数据所在区域的对应表相。如果该表项的旁路位被设置,则该次访存操作不再访问共享末级高速缓存,直接对内存设备发出访问操作。否则,系统将继续访问共享末级高速缓存,并在性能监视器中记录该次数据访问的状态计数。当访问共享末级高速缓存失效后,系统将从内存中读取所需要的数据。新的数据在进入共享末级高速缓存时,其在替换链表中的插入位置由其所在区域表项的插入策略控制位决定。

对于单个进程而言,每个数据区域的旁路和插入策略通过在线剖视分析的方法进行配置。本发明实施例将访存密集型程序虚拟地址空间划分为若干内存区域,并通过读取分区域性能监视器获得不同数据区域的访存信息。同时,本发明实施例根据单个数据区域选择不同的旁路和插入策略前后共享末级高速缓存失效率的变化,决定单个数据区域的访存行为和局部性特征,并为其选择合理地旁路和插入策略。程序地址空间由代码段、数据段、堆和栈组成。不同段之间的访存行为具有较大差异。本发明实施例首先以段为单位划分为四个大的区域;然后,将每个段又进一步划分为多个大小相等的区域,每个区域的大小、起始地址和结束地址由所在段决定。在程序运行过程中,堆和栈的大小会发生动态变化。操作系统等系统软件可以通过监控调整堆空间变化变化的系统调用获得堆的大小变化信息,而通过定时读取栈指针寄存器获得栈的变化信息。当堆或栈的大小发生变化时,需要计算每个区域的起始地址和地址,并重新配置分区域性能监视及末级高速缓存控制器,以适应程序运行状态的变化。同时,程序执行具有阶段性的特点,不同运行阶段的访存行为存在较大差异。本发明实施例将程序运行过程划分为若干片段。每个片段由预热、检测和执行三个阶段组成。在预热阶段,本发明实施例将每个区域的旁路控制位和插入策略控制位置零,统计每个区域的末级高速缓存访问信息;在检测阶段,分别判断每个数据区域设置旁路控制位和插入策略控制位后系统整体性能的变化。本发明将共享末级高速缓存失效率作为衡量系统性能的指标,通过判断失效率是否减少,作为评价旁路和插入策略是否设置成功的标准。单位时间内的指令数可以通过读取指令高速缓存性能监视器的访问计数获得。在执行阶段,根据检测阶段的分析结果确定每个区域的旁路和插入策略,并配置分区域性能监视及末级高速缓存控制器。设置每个阶段的时间长度需要权衡精度和时间代价。相关研究表明统计周期设置为500万个时钟周期可以在准确性和开销之间达到较好的平衡。因此,在本发明实施例中执行阶段设置为500万个时钟周期,而预热和检测阶段设置为50万个时钟周期。

分区域性能监视及共享末级高速缓存控制器主要用于记录不同并发进程内多个数据区域在末级高速缓存中的访问信息,并提供旁路和插入策略控制位由软件根据单个数据区域的访存行为进行配置。具体结构如图4所示。该设备由多个数据行组成。每个行表示一个数据区域,主要由以下七个域组成:

1)PID:处理器核编号;

2)S_Addr:标识该数据区域的起始地址;

3)e_addr:标识该数据区域的结束地址;

4)Hit:共享末级高速缓存命中计数器;

5)Miss:共享末级高速缓存失效计数器;

6)B_bit:旁路控制位;

7)I_bit:插入策略控制位。

在系统运行过程中,每次共享末级高速缓存访问操作会同时访问该控制器。通过比较处理器核编号和每个数据行起始地址及结束地址之间的大小关系,可以确定该地址所在的数据区域。如果该区域所在行的旁路控制位没有置1,说明该区域中的数据可以访问共享末级高速缓存,并根据访问状态更新共享末级高速缓存命中或失效计数器。否则,该次访问将被旁路。本发明实施例提出的分区域性能监视及共享末级高速缓存控制器不在末级高速缓存访问的关键路径上,可以和末级高速缓存访问并发执行。因此,本发明实施例的方法不增加末级高速缓存访问时延。

分区域旁路和插入策略控制,由分区域性能监视及共享末级高速缓存控制器所在行的旁路和插入策略控制位决定。当旁路位置1时,表示该区域中的数据将会被旁路。插入策略控制由该数据所在区域的插入策略控制位位决定。当该位为1时执行LRU替换算法,将进入共享末级高速缓存的数据放入到替换链表的最近最多使用MRU(Most Recently Used最近最多使用)位置;否则执行BIP插入策略,该策略通过引入一个较大的概率判断是否将新插入的数据行放入LRU位置,从而可以在两个插入位置之间进行切换,以适应更大的工作集范围。

本发明的有益效果是:第一,可以有效降低多核处理器多进程并发执行环境下的共享末级高速缓存冲突和污染,减少末级高速缓存失效造成的性能损失,提高多核处理器的访存性能;第二,仅需要添加少量存储单元和控制逻辑,就能够实现本发明提出的访存方法和访存装置,具有较少的硬件开销;第三,本发明提出的共享末级高速缓存分区域性能监视及控制器不在处理器访存的关键路径上,可以和共享末级高速缓存访问并发执行,因此,不增加多核处理器的访存延迟;最后,本发明对局部性差、不经常被访问到的数据进行限制和隔离时不需要调整现有操作系统的内存管理机制,仅需要在剖视信息的指导下有选择地设置区域一级的旁路或插入位置,软件开销和改动较小。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1