一种处理器缓存特性的检测分析方法与流程

文档序号:12176699阅读:151来源:国知局
一种处理器缓存特性的检测分析方法与流程

本发明属于计算机软件技术领域,具体涉及一种处理器缓存特性的检测分析方法。



背景技术:

现代处理器普遍使用片上缓存(Cache)来弥补处理器运行速度与主存读写速度上的巨大差异。软硬件开发者则需要根据缓存的具体结构及特性参数进行系统设计及性能评估。但是,出于商业利益等原因,芯片厂家所发布的硬件实现信息往往比较模糊,甚至很多硬件特性参数并不能从厂家获得,由此为系统高效应用带来了困难。基于检测方法的硬件结构分析方法,通常以目标硬件在访问延时、组成原理等方面所具有的特性为出发点,在其基础上构造可以反馈硬件结构信息的分析模型与对应的测量程序集,通过不同条件下测量程序集在运行时间、所触发硬件事件等行为上的差异分析出目标硬件的结构信息。该类方法不需要借助其他设备,具有使用方便,适用性好等方面优势。

但是,现有基于检测方法的硬件分析技术多是针对单核处理器架构下的缓存结构设计的,而在多核系统上,缓存结构发生了较大变化。在整体结构上,多核处理器普遍采用了多级缓存,末级缓存被多个计算核心共享;在末级缓存上,由于到达末级缓存的访问序列会首先被前级缓存处理,使得末级缓存所见的序列行为与原始序列行为差异较大,而传统上被广泛使用的缓存替换策略不能很好应对此类行为,所以在其上需要使用更加高性能的新型替换策略,同时,由于多核系统末级缓存的容量比以往有显著增加,占用空间也相应增大,单体形式的缓存实现方式已很难平衡访问延时、功耗等方面问题,所以末级缓存多以多个子块组合而成,并由此带来了处理器缓存访问资源分布等方面问题。因此,传统的缓存特性检测分析技术并不能解决现有的多核处理器的特性检测分析问题。



技术实现要素:

针对上述现有技术存在的不足,本发明提供一种处理器缓存特性的检测分析方法。

本发明的技术方案:

一种处理器缓存特性的检测分析方法,包括如下步骤:

步骤1:使用超级页分配内存;

步骤2:判断处理器缓存中是否存在组竞争自适应替换策略,是,执行步骤3,否,执行步骤6;

步骤2-1:根据处理器缓存地址的哈希映射函数为处理器缓存组生成同构的测试序列,每条测试序列包括一组处理器缓存访问,处理器缓存访问以读操作方式实现,且测试序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度,测试序列元素间关系满足每一元素的处理器缓存访问地址为上一个元素的执行结果;

步骤2-2:为测试序列执行过程分配最高优先级;

步骤2-3:分两阶段执行测试序列:第一阶段从处理器缓存低地址向高地址依次对每个处理器缓存组循环执行测试序列,并求取各处理器缓存组的多个访问延时的平均值或访问缺失数的平均值;第二阶段从处理器缓存高地址向低地址依次对每个处理器缓存组循环执行测试序列,并求取各处理器缓存组的多个访问延时的平均值或访问缺失数的平均值;

步骤2-4:判断处理器缓存中是否存在组竞争自适应替换策略:如果多数处理器缓存组两阶段测试序列执行过程中的平均访问延时或平均访问缺失数不同,而少数处理器缓存组相同,则该处理器缓存上存在组竞争自适应替换策略,执行步骤3,否则,执行步骤6。其中,存在不同的平均访问延时或平均访问缺失数的处理器缓存组为从属组,存在相同的平均访问延时或平均访问缺失数的处理器缓存组为专用组。

步骤3:选择需要执行的替换策略;

步骤4:为不需要执行的组竞争自适应替换策略对应的专用组上生成一组选择序列,选择序列包括一组处理器缓存访问,处理器缓存访问以读操作方式实现;选择序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度;

步骤5:执行选择序列;

步骤6:根据待检测的处理器缓存特性及处理器缓存地址的哈希映射函数为处理器缓存组构造一组同构的检测序列,所述检测序列包括一组处理器缓存访问,处理器缓存访问以读操作方式实现;检测序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度;根据内存地址映射对检测序列中的元素进行排列,保证每一元素都单独使用内存的一个Bank行;检测序列元素间关系满足每一元素的处理器缓存访问地址为上一个元素的执行结果;

步骤7:为检测序列执行过程分配最高优先级;

步骤8:执行检测序列,分析处理器缓存特性:

当待检测处理器缓存特性为分析每个处理器核心中缓存的最大缓存缺失数时,执行检测序列,读取并行度和带宽,当并行度即同时执行的检测序列数增加而访存带宽不再提升时,并行度到达了上限,并行度上限值为处理器所支持的最大缓存缺失数,即分析得到处理器缓存特性处理器最大缓存缺失数。

当待检测处理器缓存特性为分析处理器缓存资源分布情况时,步骤8包括:

步骤8.1:同时执行各缓存分片上的检测序列,读取每一缓存分片的并行度和带宽,处理器缓存的最大的并行度即全局访存上限为每一缓存分片上最大并行度与缓存分片数乘积;

步骤8.2:执行单个缓存分片上的检测序列,读取单个缓存分片的并行度和带宽,得到单个缓存分片的最大并行度;

步骤8.3:判断单个缓存分片所能支持的最大并行度与全局访存上限是否相同,是,该处理器缓存中访存资源是集中的,否则,该处理器缓存中访存资源是分布的,即分析得到处理器缓存特性处理器缓存分布情况。

有益效果:本发明的处理器缓存特性检测分析方法与现有技术相比,具有一下优点:

(1)通过运行软件的方式获得处理器缓存上的硬件特性,无需使用额外设备;

(2)能够在多数的处理器上运行,能够对现今多数主流处理器的缓存结构进行检测;

(3)具有成本低、方便实施、使用范围广的优点。

附图说明

图1为本发明一种实施方式的Intel 3770多核处理器内部结构示意图;

图2为本发明一种实施方式的一种处理器缓存特性的检测分析方法流程图;

图3为本发明一种实施方式的一种处理器缓存特性的检测分析方法中处理器缓存组-延时曲线图;

图4为本发明一种实施方式的一种处理器缓存特性的检测分析方法中缓存块-内存映射关系示意图,其中,(a)(b)(c)(d)分别为处理器缓存中缓存分片0、1、2、3中缓存块与内存映射关系;

图5为本发明一种实施方式的一种处理器缓存特性的检测分析方法中全局缓存块-内存映射关系示意图;其中,(a)(b)(c)(d)分别为处理器缓存中缓存分片0、1、2、3中缓存块与内存映射关系;

图6为本发明一种实施方式的一种处理器缓存特性的检测分析方法中单个缓存分片中缓存块-内存映射关系示意图;

图7为本发明一种实施方式的一种处理器缓存特性的检测分析方法中并行度-带宽曲线图;

图8为本发明一种实施方式的一种处理器缓存特性的检测分析方法中全局访存并行度-带宽曲线图,其中,(a)(b)(c)(d)分别为缓存分片0、1、2、3中最大并行度示意图;

图9为本发明一种实施方式的一种处理器缓存特性的检测分析方法中单个缓存分片的并行度-带宽曲线图。

具体实施方式

下面结合附图对本发明的一种实施方式作详细说明。

本实施方式以Intel 3770多核处理器上每一核上所能发生的最大缓存缺失数分析为例。如图1所示,Intel 3770多核处理器拥有四个核和三级缓存,末级缓存大小为8MB,被四个核共享,8MB末级缓存由4个缓存分片:缓存分片0、1、2、3组成,每个缓存分片包括多个处理器缓存组,处理器缓存组由多个缓存块构成,每个缓存分片上每个处理器缓存组对应16路,一个缓存块大小为64B,Intel 3770使用了4个2GB动态随机存取存储器(Dynamic Random Access Memory,DRAM),每一个DRAM上拥有8个Bank,操作系统为Linux。

如图2所示,本实施方式的处理器缓存特性的检测分析方法,包括如下步骤:

步骤1:使用超级页为处理器缓存特性的检测分析过程分配内存;使用超级页分配内存可以解决两方面问题,其一,能够为处理器缓存特性的检测分析过程提供大块在物理地址上连续的内存;其二,可以减少由后援缓存缺失(TLB Miss)而引入系统中的额外处理器缓存访问事件及操作系统执行时间开销。

步骤2:判断处理器缓存中是否存在组竞争自适应替换策略(Set Dueling based Dynamic Insertion Policy,SDDIP),是,执行步骤3,否,执行步骤6;

步骤2-1:根据处理器缓存地址的哈希映射函数分别为处理器各缓存组生成同构的测试序列,每条测试序列包括一组处理器缓存访问,处理器缓存访问以读操作方式实现;测试序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度;测试序列元素间关系满足每一元素的访问地址为上一个元素的执行结果,以c语言表示测试序列p的构造形式如下:p=*(void**)p。

步骤2-2:为测试序列执行过程分配最高优先级;优先级设置为FIFO;

步骤2-3:分两阶段执行测试序列:第一阶段从处理器缓存低地址向高地址依次对每个处理器缓存组循环执行测试序列,并求取各处理器缓存组的多个访问延时的平均值或访问缺失数的平均值;第二阶段从处理器缓存高地址向低地址依次对每个处理器缓存组循环执行测试序列,并求取各处理器缓存组的多个访问延时的平均值或访问缺失数的平均值;

步骤2-4:判断处理器缓存中是否存在组竞争自适应替换策略:如果多数处理器缓存组两阶段测试序列执行过程中的平均访问延时或平均访问缺失数不同,而少数处理器缓存组相同,则该缓存上存在组竞争自适应替换策略,执行步骤3;否则,执行步骤6;其中,存在不同的平均访问延时或平均访问缺失数的处理器缓存组为从属组,存在相同的平均访问延时或平均访问缺失数的处理器缓存组为专用组;

如图3所示,本实施方式中,在512-576这64个处理器缓存组中访问延时固定保持高数值,即只有高延时,而在768-832这64个处理器缓存组中访存延时始终保持低数值,即只有低延时,可知两阶段测试序列执行过程中的平均访问延时或平均访问缺失数相同;在处理器缓存组1-512、576-768和768-中两阶段测试序列执行过程中的平均访问延时或平均访问缺失数不同,由此可以推断出该末级缓存上存在组竞争自适应替换策略,其中,512-576这64个处理器缓存组和768-832这64个处理器缓存组为专用组,剩余处理器缓存组1-512、576-768和768-为从属组。

步骤3:选择需要执行的替换策略;

步骤4:为不需要执行的组竞争自适应替换策略对应的专用组上生成一组选择序列,选择序列包括一组处理器缓存访问;选择序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度;

步骤5:执行选择序列;

步骤6:根据待检测的处理器缓存特性及处理器缓存地址的哈希映射函数为处理器缓存组生成同构的检测序列,每条检测序列包括一组处理器缓存访问,处理器缓存访问以读操作方式实现,读操作可避免写操作可能带来的检测序列执行过程被抢占以及写回时延不确定等问题;检测序列所访问的每个处理器缓存组上对应的处理器缓存访问个数大于处理器缓存的组相连度;根据内存地址映射对检测序列中的元素进行排列,保证每一元素都单独使用内存的一个Bank行;检测序列元素间关系满足每一元素的处理器缓存访问地址为上一个元素的执行结果,以此解决两方面问题,其一避免了现代处理器缓存上的指令乱序执行问题;其二可以避免处理器预取部件带来的未受控缓存内容。

当待检测处理器缓存特性为分析每个处理器核心中缓存的最大缓存缺失数时,本实施方式中,检测序列个数N为20,每一缓存组上包含32个元素。如图4(a)~(d)所示,缓存分片0、1、2、3上分别分到5条检测序列,检测序列中元素平均映射到16个内存bank上,每一条检测序列的首元素顺次交错排列,当任何n个检测序列同时执行时,所发生的缓存缺失会落在不同的内存bank上,由于每一检测序列元素都单独使用内存的一个Bank行,每一个缓存缺失拥有相同且固定的延时,即执行检测序列产生的访问延时只由执行检测序列的核所能产生的最大并行度决定;且最大限度的利用了每个处理器缓存组上所能使用的内存bank资源,减少了内存的使用。

当待检测处理器缓存特性为分析处理器缓存资源分布情况时,根据处理器缓存地址的哈希映射函数为处理器缓存中各缓存分片的处理器缓存组生成同构的检测序列,并根据内存地址映射对检测序列中的元素进行排列,保证每一元素都单独使用内存的一个Bank行;本实施方式中,如图5所示,当验证全局访存上限时,缓存分片中缓存块平均映射到8个内存bank上;本实施方式中,当验证每一缓存片所支持的最大并行度时,如图6所示,单个缓存分片中缓存块平均映射到16个内存bank上。

步骤7:为检测序列执行过程分配最高优先级;避免由于检测序列执行过程被抢占而对检测序列执行时间或处理器缓存内容产生影响;优先级设置为FIFO;

步骤8:执行检测序列,分析处理器缓存特性;

当待检测处理器缓存特性为分析每个处理器核心中缓存的最大缓存缺失数时,步骤8具体为:执行检测序列,读取并行度和带宽,当并行度即同时执行的检测序列数增加而访存带宽不再提升时,并行度到达了上限,并行度上限值为最大缓存缺失数,即分析得到处理器缓存特性处理器最大缓存缺失数。并行度和带宽通过直接读取处理器上的计数器或通过第三方工具,如PAPI(Performance Application Programming Interface)检测分析。如图7所示,当并行度,即同时执行的检测序列数增加到10以后带宽不再提升,并行度到达了上限,也即该处理器核心所能产生的最大缓存缺失数为10。

当待检测处理器缓存特性为分析处理器缓存资源分布情况时,步骤8包括:

步骤8.1:同时执行各缓存分片中检测序列即同时执行线程1、线程2、线程3和线程4,读取每一缓存分片的并行度和带宽,处理器缓存的最大的并行度即全局访存上限为每一缓存分片上最大并行度与缓存分片数乘积;如图8(a)到(d)所示,在每一缓存分片上都是在并行度为5的时候带宽不再增加,全局访存上限为5*4=20。

步骤8.2:执行检测序列,读取单个缓存分片的并行度和带宽,得到单个缓存分片的最大并行度;由于每个缓存分片中都得到类似结果,以其中一个缓存分片为例,如图9所示,在单个缓存分片中,并行度达到7以后,带宽不再增加,即单个缓存分片最大并行度为7。

步骤8.3:判断单个缓存分片所能支持的最大并行度与全局访存上限是否相同:是,该处理器缓存中访存资源是集中的,否则,该处理器缓存中访存资源是分布的;即分析得到处理器缓存特性处理器缓存分布情况。本实施方式中,单个缓存分片最大并行度为7小于全局访存上限20,则该处理器缓存中访存资源是以分布的方式实现的,每一缓存分片所能支持的最大并行度相同,系统所支持的最大并行度小于各缓存分片上的最大并行度之和。

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