CN103793339B - 基于内存访问堆栈距离的数据Cache性能探索方法 - Google Patents
基于内存访问堆栈距离的数据Cache性能探索方法 Download PDFInfo
- Publication number
- CN103793339B CN103793339B CN201410014367.9A CN201410014367A CN103793339B CN 103793339 B CN103793339 B CN 103793339B CN 201410014367 A CN201410014367 A CN 201410014367A CN 103793339 B CN103793339 B CN 103793339B
- Authority
- CN
- China
- Prior art keywords
- cache
- internal storage
- storage access
- size
- est
- 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
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于内存访问堆栈距离的数据Cache性能探索方法。本发明包括如下步骤:步骤1.计算内存访问堆栈距离及其概率分布;步骤2.确定探索的Cache容量及其三个参数组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围;步骤3.计算估计参数es(S)、ea(A)和eb(B),利用es(S)、ea(A)和eb(B)估计Cache三个参数组数S(Set size)、A(Associativity)和B(Block size)对命中率的影响,并计算命中率est1;步骤4.利用内存访问堆栈距离的概率分布计算命中率est2;步骤5.比较命中率est1和est2,最终估计出Cache命中率。本发明专利在嵌入式系统内存结构早期设计中是非常有用,它能够帮助设计者快速从巨大的内存设计空间中筛选出少量满足具体应用要求的片上内存结构,从而节约产品开发时间和成本。
Description
技术领域
本发明涉及嵌入式系统的存储系统设计领域,特别是涉及一种基于内存访问堆栈距离的数据Cache性能探索方法。
背景技术
片上内存结构是嵌入式系统关键部件之一,它对系统的整体性能、制造成本、系统功耗等多个参数具有很大的影响。为得到给定应用的最优片上内存结构,嵌入式系统设计者必须对片上内存结构设计空间的每一种方案进行性能评价,以得到满足系统性能、功耗和成本等约束的最佳方案。然而,由于设计空间巨大,如片上内存类型是SPM(Scratch PadMemory)还是高速缓存Cache、容量怎么划分、Cache或SPM的具体设计参数等,如果仅仅靠仿真的方法去评价每一种片上内存配置,无疑是一件耗时耗力的事情,特别是在产品有上市时间限制的条件下,这种全仿真的方法更不可实现。
为在巨大的片上内存设计空间找出满足性能、功耗和成本要求的配置,设计者需要用快速准确的方法去评价不同片上内存配置的相对性能,这点对成本敏感的嵌入式系统设计尤为重要。例如,如果分析表明一个小的片上内存结构就能获得满意的性能,那么设计时就可以采用小的片上内存结构,从而减少芯片面积和降低芯片的生产成本,使产品更有竞争力。在片上内存结构性能估计中,由于SPM是软件管理的片上内存,其上的数据对设计者是已知的,因此性能很好估计;难点在于硬件管理的Cache的性能估计,其上的数据对设计者未知,因此它的性能估计是片上内存结构性能估计的难点问题。由于Cache的性能公式为:
T=hit×Thit+(1-hit)×Tmiss
上述公式中,Thit和Tmiss分别为Cache命中时和失配时的访问延迟,它们很容易通过Cache的硬件结构和工艺库得到;hit为Cache针对不同应用的命中率,它是Cache性能估计的难点。可见,探索Cache在不同配置下的性能,关键是要估计Cache在不同配置下的命中率。针对这个问题,本发明专利提出一种基于内存访问堆栈距离的数据Cache命中率估计方法,以此实现对Cache性能的探索。
内存访问堆栈距离是指同一个内存地址两次连续访问之间的独一无二的其它内存地址的访问个数;如果该地址为第一次访问,堆栈距离记为∞,如图1所示。在图1中,前2次内存访问都是新地址,因此内存访问堆栈距离为∞;第3次访问在地址堆栈的第0个位置命中,因此内存访问的堆栈距离为0;依次类推。
内存访问堆栈距离之所以能用来进行Cache命中率估计,在于它具有这样的性质:对于一个采用最近最少使用(LRU)替换策略的全相联Cache,其大小为s组;如果内存访问堆栈距离计算时的地址大小与Cache的块大小一致,则当内存访问的堆栈距离d≤s时,它在Cache里面命中;d>s时,它在Cache里面失配。由于内存访问堆栈也是按最近最少使用排序的,即将最近访问的排在最前面,离现在访问最远的排在最后面,因此本发明专利提出的基于内存访问堆栈距离的Cache性能探索方法仅适合于采用LRU替换算法的Cache。
发明内容
本发明的目的在于针对现有技术不足,实现Cache性能快速且准确估计,提供一种基于内存访问堆栈距离的数据Cache性能探索方法。
本发明解决其技术问题所采用的技术方案具体包括如下步骤:
步骤1.计算内存访问堆栈距离及其概率分布;
步骤2.确定探索的Cache容量及其三个参数组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围;
步骤3.计算估计参数es(S)、ea(A)和eb(B),利用es(S)、ea(A)和eb(B)估计Cache三个参数组数S(Set size)、A(Associativity)和B(Block size)对命中率的影响,并计算命中率est1;
步骤4.利用内存访问堆栈距离的概率分布计算命中率est2;
步骤5.比较命中率est1和est2,最终估计出Cache命中率。
步骤1所述的计算内存访问堆栈距离及其概率分布的具体如下:
1-1.读入一条内存访问踪迹,得到当前内存访问地址;
1-2.如果该地址在SP中第i个位置命中,则对应位置的堆栈距离直方图H_SP(i)加1,同时将SP的0~(i-1)个元素往下挪移1个位置,用空出来的第0个位置保存该地址,SP中其它位置的元素不动。
1-3.如果该地址在SP中没有命中,则该地址是第一次访问,将H_SP(∞)加1,SP增加一个新元素,SP所有元素往下挪移1个位置,最后将此地址保存在SP第0个位置。
1-4.重复步骤1-1至1-3,直到n条内存访问踪迹处理完成,将内存访问堆栈距离直方图通过公式(1)转换为内存访问堆栈的概率分布P_SP。
P_SP=H_SP/n (1)
读入是应用程序执行时的内存访问踪迹,输出是内存访问堆栈距离的概率分布和应用程序数据量大小;计算内存访问堆栈距离时的地址粒度为处理器的字宽度,SP是内存访问的地址堆栈,H_SP是内存访问堆栈距离的直方图,P_SP是内存访问堆栈距离的概率分布,n为应用程序内存访问踪迹条数,Num为应用程序的数据量。
步骤2中所述的Cache容量C、组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围计算具体包括如下步骤:
2-1.根据应用程序数据量的大小Num,按下面公式(2)确定Cache探索的容量C;该公式确定的Cache容量C的单位是比特,对应以字为单位的Cache容量size=2C字。
2-2.Cache的组数S(Set size)、关联度A(Associativity)和块大小B(Blocksize)三个参数按以下方式确定。
Smin=Cmin-2
Smax=Cmax
A=0~2(分别对应直接映射、2或4路组关联Cache)
B=0~4(块大小从1个字到16个字)
步骤3中所述的参数es(S)、ea(A)、eb(B)和命中率est1的计算步骤具体如下:
3-1.计算估计参数es(S),es(S)用来估计组数S(Set size)对命中率的影响,计算过程如下:
3-1-1.确定es(Smin)和组数S(Set size)的初始值,
3-1-2.利用块大小为1个字的全相联Cache估计其相对性能speedup1:
3-1-3.利用此相对性能speedup1估计es(S)的值:
3-1-4.令组数S的值加1。
3-1-5.重复步骤3-1-2至3-1-4,直到组数S>Smax。
3-2.计算估计参数ea(A),ea(A)用来估计关联度A对命中率的影响,计算过程如下:
3-2-1.确定ea(A)的初始值,ea(0)=0.75。
3-2-2.用WayHit来保存Cache在不同关联度下的命中次数,执行一次Cache仿真(参数为S=Smin,A=2,B=0),并将Cache在不同关联度下的命中次数保存在WayHit中。
WayHit的具体计算如下:
当Cache命中,则判断Cache在哪一路数命中:若Cache在最新路数命中,则WayHit(0)加1;若Cache在次最新路数命中,则WayHit(1)加1;若Cache在其他路数命中,则WayHit(2)加1。
3-2-3.将不同关联度的命中次数转换为Cache的相对性能speedup2:
3-2-4.利用此相对性能speedup2估计ea(A)在A=1,2的值:
ea(A)=2×ea(A-1)×speedup2 2 (6)
3-3.计算估计参数eb(B),eb(B)用来估计块大小B对命中率的影响,计算过程下:
3-3-1.确定eb(B)的初始值,eb(0)=0.75。
3-3-2.用BlockHit来保存Cache在不同块大小的近似命中次数,执行一次Cache仿真(参数为S=Smin,A=0,B=4),并将Cache在不同块大小的近似命中次数保存在BlockHit中。
BlockHit的具体计算方法是:
当Cache命中时,计算上一次在此块命中的地址的块号(块大小为1个字)与当前在此块命中的地址的块号差值的绝对值,如果此绝对值小于1,则BlockHit(0)加1;若此绝对值大于等于1且小于2,则BlockHit(1)加1;若此绝对值大于等于2且小于4,则BlockHit(2)加1;若此绝对值大于等于4且小于8,则BlockHit(3)加1;若此绝对值大于等于8且小于16,则BlockHit(4)加1。
3-3-3.将不同块大小的命中次数转换为Cache的相对性能speedup3:
3-3-4.利用此相对性能speedup3估计eb(B)在B=1~4的值:
eb(B)=2×eb(B-1)×speedup3 2 (8)
3-4.按公式(9)估计Cache在不同组数S(Set size)、关联度A(Associativity)和块大小B(Block size)下的命中率est1:
上式(9)中,sd为内存访问堆栈距离,P_SP是内存访问堆栈距离的概率分布;u_sd为可能在Cache命中的堆栈距离的上界,u_sd用公式(10)计算如下:
上式(10)中,size表示Cache的容量,size=2S+A+B(其中,S、A和B用比特数表示)。
步骤4中所述的计算命中率est2具体方法如下:
在步骤1得到内存访问堆栈距离的概率分布P_SP后,应用公式(11)估计块大小为1个字、组数为size的全关联LRU Cache的命中率,并将此命中率的1.25倍作为est2,其实质是用它作为Cache在参数为S、A和B时的命中率的上限。
步骤5中所述的在参数为S、A和B时估计并输出最终Cache的命中率est,此命中率为est1和est2较小的,即:
est=min(est1,est2) (12)
本发明有益效果如下:
本发明专利只需要计算一次应用程序的内存访问堆栈距离和执行2次Cache仿真提取估计参数,就可以估算采用LRU替换策略的数据Cache在不同块大小、关联度、组数情况下的命中率,从而快速实现对Cache性能空间的探索。本专利利用一些实际程序进行测试,测试结果表明,本专利方法估计出的数据Cache命中率的平均绝对误差为3%左右,最大误差10%左右,不同配置的两两比较正确率在90%左右。本发明专利在嵌入式系统的早期设计中是非常有用的,它能够帮助设计者快速从巨大的内存设计空间中筛选出适应具体应用的少量片上内存结构,从而节约产品开发时间和成本。
附图说明
图1是内存访问的堆栈距离示意图;
图2是基于堆栈距离的Cache性能估计方法的流程图;
图3是平均误差和最大误差分布图;
图4是正确率分布图。
具体实施方式
本发明是一种基于内存访问堆栈距离的数据Cache性能估计方法,下面结合图2说明其具体实施过程。
步骤1.计算内存访问堆栈距离及其概率分布;
步骤2.确定探索的Cache容量及其三个参数组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围;
步骤3.计算估计参数es(S)、ea(A)和eb(B),利用es(S)、ea(A)和eb(B)估计Cache三个参数组数S(Set size)、A(Associativity)和B(Block size)对命中率的影响,并计算命中率est1;
步骤4.利用内存访问堆栈距离的概率分布计算命中率est2;
步骤5.比较命中率est1和est2,最终估计出Cache命中率。
步骤1所述的计算内存访问堆栈距离及其概率分布的具体如下:
1-1.读入一条内存访问踪迹,得到当前内存访问地址;
1-2.如果该地址在SP中第i个位置命中,则对应位置的堆栈距离直方图H_SP(i)加1,同时将SP的0~(i-1)个元素往下挪移1个位置,用空出来的第0个位置保存该地址,SP中其它位置的元素不动。
1-3.如果该地址在SP中没有命中,则该地址是第一次访问,将H_SP(∞)加1,SP增加一个新元素,SP所有元素往下挪移1个位置,最后将此地址保存在SP第0个位置。
1-4.重复步骤1-1至1-3,直到n条内存访问踪迹处理完成,将内存访问堆栈距离直方图通过公式(1)转换为内存访问堆栈的概率分布P_SP。
P_SP=H_SP/n (1)
读入是应用程序执行时的内存访问踪迹,输出是内存访问堆栈距离的概率分布和应用程序数据量大小;计算内存访问堆栈距离时的地址粒度为处理器的字宽度,SP是内存访问的地址堆栈,H_SP是内存访问堆栈距离的直方图,P_SP是内存访问堆栈距离的概率分布,n为应用程序内存访问踪迹条数,Num为应用程序的数据量。
步骤2中所述的Cache容量C、组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围计算具体包括如下步骤:
2-1.根据应用程序数据量的大小Num,按下面公式(2)确定Cache探索的容量C;该公式确定的Cache容量C的单位是比特,对应以字为单位的Cache容量size=2C字。
2-2.Cache的组数S(Set size)、关联度A(Associativity)和块大小B(Blocksize)三个参数按以下方式确定。
Smin=Cmin-2
Smax=Cmax
A=0~2(分别对应直接映射、2或4路组关联Cache)
B=0~4(块大小从1个字到16个字)
步骤3中所述的参数es(S)、ea(A)、eb(B)和命中率est1的计算步骤具体如下:
3-1.计算估计参数es(S),es(S)用来估计组数S(Set size)对命中率的影响,计算过程如下:
3-1-1.确定es(Smin)和组数S(Set size)的初始值,
3-1-2.利用块大小为1个字的全相联Cache估计其相对性能speedup1:
3-1-3.利用此相对性能speedup1估计es(S)的值:
3-1-4.令组数S的值加1。
3-1-5.重复步骤3-1-2至3-1-4,直到组数S>Smax。
具体实现如下:
行1用来确定es(Smin),行3利用块大小为1个字的全相联Cache估计不同S下的相对性能,行4确定其S下的es(S)的值。
3-2.计算估计参数ea(A),ea(A)用来估计关联度A对命中率的影响,计算过程如下:
3-2-1.确定ea(A)的初始值,ea(0)=0.75。
3-2-2.用WayHit来保存Cache在不同关联度下的命中次数,执行一次Cache仿真(参数为S=Smin,A=2,B=0),并将Cache在不同关联度下的命中次数保存在WayHit中。
WayHit的具体计算如下:
当Cache命中,则判断Cache在哪一路数命中:若Cache在最新路数命中,则WayHit(0)加1;若Cache在次最新路数命中,则WayHit(1)加1;若Cache在其他路数命中,则WayHit(2)加1。
3-2-3.将不同关联度的命中次数转换为Cache的相对性能speedup2:
3-2-4.利用此相对性能speedup2估计ea(A)在A=1,2的值:
ea(A)=2×ea(A-1)×speedup2 2 (6)
具体实现如下:
WayHit用来保存Cache在不同关联度下的命中次数,行2-9执行一次Cache仿真(参数为S=Smin,A=2,B=0),并将Cache在不同关联度下的命中次数保存在WayHit中;行11-12利用WayHit估计ea(A)。
3-3.计算估计参数eb(B),eb(B)用来估计块大小B对命中率的影响,计算过程下:
3-3-1.确定eb(B)的初始值,eb(0)=0.75。
3-3-2.用BlockHit来保存Cache在不同块大小的近似命中次数,执行一次Cache仿真(参数为S=Smin,A=0,B=4),并将Cache在不同块大小的近似命中次数保存在BlockHit中。
BlockHit的具体计算方法是:
当Cache命中时,计算上一次在此块命中的地址的块号(块大小为1个字)与当前在此块命中的地址的块号差值的绝对值,如果此绝对值小于1,则BlockHit(0)加1;若此绝对值大于等于1且小于2,则BlockHit(1)加1;若此绝对值大于等于2且小于4,则BlockHit(2)加1;若此绝对值大于等于4且小于8,则BlockHit(3)加1;若此绝对值大于等于8且小于16,则BlockHit(4)加1。
3-3-3.将不同块大小的命中次数转换为Cache的相对性能speedup3:
3-3-4.利用此相对性能speedup3估计eb(B)在B=1~4的值:
eb(B)=2×eb(B-1)×speedup3 2 (8)
具体实现如下:
BlockHit用来保存Cache在不同块大小的近似命中次数,行2-14执行一次Cache仿真(参数为S=Smin,A=0,B=4),并将Cache在不同块大小的近似命中次数保存在BlockHit中;行16-17利用BlockHit估计eb(B)。
3-4.按公式(9)估计Cache在不同组数S(Set size)、关联度A(Associativity)和块大小B(Block size)下的命中率est1:
上式(9)中,sd为内存访问堆栈距离,P_SP是内存访问堆栈距离的概率分布;u_sd为可能在Cache命中的堆栈距离的上界,u_sd用公式(10)计算如下:
上式(10)中,size表示Cache的容量,size=2S+A+B(其中,S、A和B用比特数表示)。
步骤4中所述的计算命中率est2具体方法如下:
在步骤1得到内存访问堆栈距离的概率分布P_SP后,应用公式(11)估计块大小为1个字、组数为size的全关联LRU Cache的命中率,并将此命中率的1.25倍作为est2,其实质是用它作为Cache在参数为S、A和B时的命中率的上限。
步骤5中所述的在参数为S、A和B时估计并输出最终Cache的命中率est,此命中率为est1和est2较小的,即:
est=min(est1,est2) (12)
实施例1
为验证本发明专利有效性,对本发明专利的方法进行了实验。所使用的7个测试程序的基本情况如表1所示。使用时间加速比、平均绝对误差、最大绝对误差、正确率作为性能评价指标。时间加速比反映本发明专利估计Cache性能的快速性;平均绝对误差、最大绝对误差、正确率反映本发明专利估计Cache性能的准确性。
表1测试程序基本情况
Trace | 来源 | 数据量(字) | Cache大小(字) | Cache配置数 |
FFT | MiBench | 4950 | 128-2048 | 56 |
CRC32 | MiBench | 1128 | 64-512 | 39 |
JPEG Coder | MiBench | 5416 | 128-2048 | 56 |
GCC | SPEC2000 | 18938 | 256-8192 | 71 |
SWIM | SPEC2000 | 6482 | 256-4096 | 56 |
AC3 Decoder | 实际应用 | 6123 | 256-4096 | 56 |
MP3 Decoder | 实际应用 | 6444 | 256-4096 | 56 |
对时间加速比性能只是利用MP3测试程序估计了本发明专利与指令集仿真、RTL级仿真方法的时间加速比,它表示为
上式中,Tstack、Tpara和分别为每个配置平均仿真时间、堆栈距离计算时间,参数估计时间和每个配置平均估计时间,N为配置数。在同一个实验平台上,对于MP3测试程序,相对于指令集仿真器,这几个参数为Tstack=5313ms、Tpara=3402ms和在N=56条件下,本发明专利的时间加速比接近11;相对于RTL级仿真器,在N=56条件下,本发明专利的时间加速比接近3.8*104。从上式也可以看出,内存设计探索空间越大,本发明专利的时间加速比越好,其极限是
平均绝对误差反映了估计命中率与仿真命中率整体上的接近程度,最大误差反映了估计命中率与仿真命中率的最大差异值。平均绝对误差、最大绝对误差用下式定义:
Max_err=max(|hitsim(i)-hitest(i)|),i=1,2,...,N
上式中,hitsim是仿真得到的Cache命中率,hitest是本发明专利估计出的Cache命中率。实验结果如图3所示,本发明专利的基于堆栈距离的Cache性能估计平均绝对误差为2.65%,最大绝对误差为10.9%。
在进行内存设计探索时,更重要的是比较Cache不同配置下的相对性能的正确率。如果两个配置其仿真得到的Cache命中率和估计出的Cache命中率满足下式,则认为这次比较是正确的:
(hitsim(i)-hitsim(j))×((hitest(i)-hitest(j))>=0
正确率则定义为比较正确的次数比上总次数。表1所示测试程序在不同Cache配置下的性能比较正确率指标如图4所示,其平均正确率为89.44%。
Claims (5)
1.基于内存访问堆栈距离的数据Cache性能探索方法,其特征在于包括如下步骤:
步骤1.计算内存访问堆栈距离及其概率分布;
步骤2.确定探索的Cache容量及其三个参数组数S(Set size)、关联度A(Associativity)和块大小B(Block size)的范围;
步骤3.计算估计参数es(S)、ea(A)和eb(B),利用es(S)、ea(A)和eb(B)估计Cache三个参数组数S(Set size)、A(Associativity)和B(Block size)对命中率的影响,并计算命中率est1;
步骤4.利用内存访问堆栈距离的概率分布计算命中率est2;
步骤5.比较命中率est1和est2,最终估计出Cache命中率;
步骤1所述的计算内存访问堆栈距离及其概率分布的具体如下:
1-1.读入一条内存访问踪迹,得到当前内存访问地址;
1-2.如果该地址在SP中第i个位置命中,则对应位置的堆栈距离直方图H_SP(i)加1,同时将SP的0~(i-1)个元素往下挪移1个位置,用空出来的第0个位置保存该地址,SP中其它位置的元素不动;
1-3.如果该地址在SP中没有命中,则该地址是第一次访问,将H_SP(∞)加1,SP增加一个新元素,SP所有元素往下挪移1个位置,最后将此地址保存在SP第0个位置;
1-4.重复步骤1-1至1-3,直到n条内存访问踪迹处理完成,将内存访问堆栈距离直方图通过公式(1)转换为内存访问堆栈的概率分布P_SP;
P_SP=H_SP/n (1)
读入是应用程序执行时的内存访问踪迹,输出是内存访问堆栈距离的概率分布和应用程序数据量大小;计算内存访问堆栈距离时的地址粒度为处理器的字宽度,SP是内存访问的地址堆栈,H_SP是内存访问堆栈距离的直方图,P_SP是内存访问堆栈距离的概率分布,n为应用程序内存访问踪迹条数,Num为应用程序的数据量。
2.如权利要求1所述的基于内存访问堆栈距离的数据Cache性能探索方法,其特征在于步骤2中所述的Cache容量C、组数S(Set size)、关联度A(Associativity)和块大小B(Blocksize)的范围计算具体包括如下步骤:
2-1.根据应用程序数据量的大小Num,按下面公式(2)确定Cache探索的容量C;该公式确定的Cache容量C的单位是比特,对应以字为单位的Cache容量size=2C字;
2-2.Cache的组数S(Set size)、关联度A(Associativity)和块大小B(Block size)三个参数的范围按以下方式确定;
Smin=Cmin-2
Smax=Cmax
A=0~2;分别对应直接映射、2或4路组关联Cache;
B=0~4;块大小从1个字到16个字。
3.如权利要求1所述的基于内存访问堆栈距离的数据Cache性能探索方法,其特征在于步骤3中所述的参数es(S)、ea(A)、eb(B)和命中率est1的计算步骤具体如下:
3-1.计算估计参数es(S),es(S)用来估计组数S(Set size)对命中率的影响,计算过程如下:
3-1-1.确定es(Smin)和组数S(Set size)的初始值,
S=Smin+1;
3-1-2.利用块大小为1个字的全相联Cache估计其相对性能speedup1:
3-1-3.利用此相对性能speedup1估计es(S)的值:
3-1-4.令组数S的值加1;
3-1-5.重复步骤3-1-2至3-1-4,直到组数S>Smax;
3-2.计算估计参数ea(A),ea(A)用来估计关联度A对命中率的影响,计算过程如下:
3-2-1.确定ea(A)的初始值,ea(0)=0.75;
3-2-2.用WayHit来保存Cache在不同关联度下的命中次数,执行一次Cache仿真,其中参数为S=Smin,A=2,B=0,并将Cache在不同关联度下的命中次数保存在WayHit中;
WayHit的具体计算如下:
当Cache命中,则判断Cache在哪一路数命中:若Cache在最新路数命中,则WayHit(0)加1;若Cache在次最新路数命中,则WayHit(1)加1;若Cache在其他路数命中,则WayHit(2)加1;
3-2-3.将不同关联度的命中次数转换为Cache的相对性能speedup2:
式(5)中k的表示WayHit的大小;
3-2-4.利用此相对性能speedup2估计ea(A)的值:
ea(A)=2×ea(A-1)×speedup2 2 (6)
将A=1,2代入式(6),分别估计ea(A)在A=1,2的值;
3-3.计算估计参数eb(B),eb(B)用来估计块大小B对命中率的影响,计算过程下:
3-3-1.确定eb(B)的初始值,eb(0)=0.75;
3-3-2.用BlockHit来保存Cache在不同块大小的近似命中次数,执行一次Cache仿真,其中参数为S=Smin,A=0,B=4,并将Cache在不同块大小的近似命中次数保存在BlockHit中;
BlockHit的具体计算如下:
当Cache命中时,计算上一次在此块命中的地址的块号与当前在此块命中的地址的块号差值的绝对值,块大小为1个字,如果此绝对值小于1,则BlockHit(0)加1;若此绝对值大于等于1且小于2,则BlockHit(1)加1;若此绝对值大于等于2且小于4,则BlockHit(2)加1;若此绝对值大于等于4且小于8,则BlockHit(3)加1;若此绝对值大于等于8且小于16,则BlockHit(4)加1;
3-3-3.将不同块大小的命中次数转换为Cache的相对性能speedup3:
式(7)中参数m表示BlockHit的大小;
3-3-4.利用此相对性能speedup3估计eb(B)的值:
eb(B)=2×eb(B-1)×speedup3 2 (8)
将B=1~4代入式(8),分别估计eb(B)在B=1~4的值;
3-4.按公式(9)估计Cache在不同组数S(Set size)、关联度A(Associativity)和块大小B(Block size)下的命中率est1:
上式(9)中,sd为内存访问堆栈距离,P_SP是内存访问堆栈距离的概率分布;u_sd为可能在Cache命中的堆栈距离的上界,u_sd用公式(10)计算如下:
上式(10)中,size表示Cache的容量,size=2S+A+B,其中,S、A和B用比特数表示。
4.如权利要求1所述的基于内存访问堆栈距离的数据Cache性能探索方法,其特征在于步骤4中所述的计算命中率est2具体方法如下:
在步骤1得到内存访问堆栈距离的概率分布P_SP后,应用公式(11)估计块大小为1个字、组数为S(Set size)的全关联LRU Cache的命中率,并将此命中率的1.25倍作为est2,其实质是用它作为Cache在参数为S、A和B时的命中率的上限;
size表示Cache的容量,size=2S+A+B。
5.如权利要求1所述的基于内存访问堆栈距离的数据Cache性能探索方法,其特征在于步骤5中所述的在参数为S、A和B时估计并输出最终Cache的命中率est,此命中率为est1和est2较小的,即:
est=min(est1,est2) (12)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410014367.9A CN103793339B (zh) | 2014-01-13 | 2014-01-13 | 基于内存访问堆栈距离的数据Cache性能探索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410014367.9A CN103793339B (zh) | 2014-01-13 | 2014-01-13 | 基于内存访问堆栈距离的数据Cache性能探索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793339A CN103793339A (zh) | 2014-05-14 |
CN103793339B true CN103793339B (zh) | 2016-08-24 |
Family
ID=50669036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410014367.9A Expired - Fee Related CN103793339B (zh) | 2014-01-13 | 2014-01-13 | 基于内存访问堆栈距离的数据Cache性能探索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793339B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677584B (zh) * | 2015-12-29 | 2019-01-04 | 东南大学—无锡集成电路技术研究所 | 一种基于统计推演的期望堆栈距离快速提取方法 |
CN107247675B (zh) * | 2017-05-31 | 2019-08-20 | 华中科技大学 | 一种基于分类预测的缓存选择方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748491B2 (en) * | 2001-04-19 | 2004-06-08 | International Business Machines Corporation | Designing a cache using an LRU-LFU array |
CN101901192A (zh) * | 2010-07-27 | 2010-12-01 | 杭州电子科技大学 | 一种片上和片外数据对象静态分配方法 |
CN103150265A (zh) * | 2013-02-04 | 2013-06-12 | 山东大学 | 面向嵌入式片上异构存储器的细粒度数据分配方法 |
CN103218304A (zh) * | 2013-04-03 | 2013-07-24 | 杭州电子科技大学 | 一种嵌入式内存数据片上片外分配方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792509B2 (en) * | 2001-04-19 | 2004-09-14 | International Business Machines Corporation | Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria |
-
2014
- 2014-01-13 CN CN201410014367.9A patent/CN103793339B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748491B2 (en) * | 2001-04-19 | 2004-06-08 | International Business Machines Corporation | Designing a cache using an LRU-LFU array |
CN101901192A (zh) * | 2010-07-27 | 2010-12-01 | 杭州电子科技大学 | 一种片上和片外数据对象静态分配方法 |
CN103150265A (zh) * | 2013-02-04 | 2013-06-12 | 山东大学 | 面向嵌入式片上异构存储器的细粒度数据分配方法 |
CN103218304A (zh) * | 2013-04-03 | 2013-07-24 | 杭州电子科技大学 | 一种嵌入式内存数据片上片外分配方法 |
Non-Patent Citations (1)
Title |
---|
Reuse Distance as a Metric for Cache Behavior;Kristof Beyls et.al.;《Iasted Conference on Parallel & Distributed Computing & Systems》;20010831;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103793339A (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103514369B (zh) | 一种基于主动学习的回归分析系统及方法 | |
CN112686464A (zh) | 短期风电功率预测方法及装置 | |
CN103020423B (zh) | 基于copula函数获取风电场出力相关特性的方法 | |
CN108446711A (zh) | 一种基于迁移学习的软件缺陷预测方法 | |
CN102279386B (zh) | 基于fpga的sar成像信号处理数据转置方法 | |
CN103065160B (zh) | 基于局部协同表示和邻域信息约束的高光谱图像分类方法 | |
CN104166731A (zh) | 一种社交网络重叠社区发现系统及其方法 | |
CN103488906A (zh) | 阀门内漏缺陷类型识别与内漏速率计算的方法 | |
CN105115692A (zh) | 一种cfd数值模拟与风洞试验相结合的气动预测方法 | |
CN103336771B (zh) | 基于滑动窗口的数据相似检测方法 | |
CN102915448B (zh) | 一种基于AdaBoost的三维模型自动分类方法 | |
CN106897511A (zh) | 圆环微带天线谐振频率预测方法 | |
CN107038297A (zh) | 全球能源互联网运行特性仿真的自适应变步长积分方法 | |
CN108764335A (zh) | 一种综合能源系统多能需求典型场景生成方法及装置 | |
CN103793339B (zh) | 基于内存访问堆栈距离的数据Cache性能探索方法 | |
CN104133836B (zh) | 一种实现变更数据检测的方法及装置 | |
CN102778555B (zh) | 预测变压器油中溶解气体浓度的方法 | |
CN102968813A (zh) | 一种三角面片网格模型的表面采样方法 | |
CN109685334A (zh) | 一种新的基于多尺度理论的水文模型模拟评估方法 | |
CN111461443A (zh) | 风电场的优化设计方法、系统、电子设备和存储介质 | |
CN101561833B (zh) | 专用指令集处理器的设计方法 | |
CN103914373A (zh) | 一种用于确定模块特征信息所对应的优先级的方法和设备 | |
CN105373884A (zh) | 一种电子设备效能的环境影响评估方法 | |
CN103838704A (zh) | 一种高吞吐率的fft加速器 | |
CN108021985A (zh) | 一种模型参数训练方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
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: 20160824 Termination date: 20180113 |