当前位置: 首页 > 专利查询>山东大学专利>正文

一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质技术方案

技术编号:35754698 阅读:11 留言:0更新日期:2022-11-26 19:01
本发明专利技术涉及本发明专利技术涉及一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质,该预取方法包括:设置历史记录表;读历史记录表,判断缓存失效类型;缓存失效类型分为:过渡型,重复型以及跳跃型。计算预取地址和内存行数量;向总线发起预取请求;根据预取数据组的命中率调整历史记录表。本发明专利技术的数据预取策略能够有效地预取数据回填多级缓存,且不影响已有的预取策略,能够提升预取的准确性。能够提升预取的准确性。能够提升预取的准确性。

【技术实现步骤摘要】
一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质


[0001]本专利技术涉及一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质,属于集成电路领域。

技术介绍

[0002]缓存(Cache)是计算机存储结构中位于较高层级的存储单元,是主存储器与中央处理器(Central Processing Unit,CPU)之间的桥梁,缓存技术的应用很好的解决了“内存墙”对处理器性能提升的限制。现代处理器通过多级缓存的层次结构,很大程度上降低了缓存的失效率,但是,缓存与主存储器之间的访问速度差距依旧很大,所以当某一级缓存未命中时,CPU从主存储器获取缓存行仍要付出很大代价。
[0003]因此,现代处理器大多采用数据预取技术,预测未到来的内存访问需求,并在CPU正式访问缓存之前向相应内存行发出预取请求,提前将内存行数据预取到缓存中,提高缓存的命中率。
[0004]数据预取利用计算机程序的时间局部性和空间局部性提高缓存的命中率。从内存行预取的数据会替换缓存中原有的缓存行,预取地址一旦发生预测错误,不仅会造成预取的数据失效,也会使原先缓存中有用的缓存行被替换,造成性能损失。现有的数据预取策略,大都对发生缓存失效的类型不加区分,采用直接预取发生缓存失效地址的下一内存行的方法。这种策略虽然能够提升缓存的命中率,但发生预取错误的几率较高。

技术实现思路

[0005]针对现有技术的不足,本专利技术提供了一种基于局域算法的高速缓存动态数据预取方法,该方法基于局域算法,将缓存失效分为三种类型,并针对不同类型的失效进行数据预取地址的计算,提出了高精度的数据预取策略,提高了预取数据的命中率。
[0006]术语解释:
[0007]1、缓存:一种存储器,位于CPU与主存储器之间,速度高于主存储器,但存储空间相对较小。
[0008]2、缓存命中:CPU发出访问请求时,首先查找缓存有无所需数据,如果有,则称之为缓存命中。
[0009]3、缓存失效:CPU发出访问请求,但未在缓存中查找到对应数据,则称之为缓存失效。
[0010]4、缓存行:数据信息以块或行的方式存储在存储器中,称之为缓存行。
[0011]5、预取:在发生缓存失效时,CPU只能向下一级存储发请求数据,但是越低级存储(指离CPU越远)的访问速度越慢,预取的技术能够提前将发生缓存失效时所需的局域数据提取到缓存行中,以供CPU选择。
[0012]6、时间局部性:程序访问某一缓存行的内存数据,在接下来的一段时间,会再次甚
至多次访问该数据。
[0013]7、空间局部性:程序访问某一缓存行的内存数据,下一次很可能访问该缓存行的相邻缓存行。
[0014]8、局域算法:依据缓存失效类型对数据预取目标地址的计算方法。
[0015]9、步长:当前发生缓存失效地址与上一次缓存失效地址的差值。
[0016]本专利技术的技术方案为:
[0017]一种基于局域算法的高速缓存动态数据预取方法,所述方法应用于缓存,具体包括:
[0018]S1,构建历史记录表,历史记录表用于记录发生缓存失效的指令地址;
[0019]S2,读取历史记录表,计算预取步长,判断缓存失效类型;
[0020]S3,采用局域算法计算预取数据的地址,将预取地址保存在局域地址表,再通过总线向主存储器发起预取请求;
[0021]S4,根据预取数据组的命中率调整历史记录表,控制历史记录表的替换法则,控制预取停止。
[0022]根据本专利技术优选的,所述缓存为多级缓存,并且每级缓存为多路组相连结构,每路包含多个缓存行,所述缓存行至少包括标签位、数据位以及标志位,所述标志位至少包括缓存有效位和写脏位。
[0023]根据本专利技术优选的,步骤S1中,当缓存发生失效,将失效的指令地址存放到历史记录表,进而构建历史记录表;历史记录表包括n个表项,每个表项包括1位有效位、2位的类型位、x位标号位和失效指令地址位;
[0024]有效位包括0和1,当有效位为1,则代表该表项有效,该表项能够被步骤S2中的读历史记录表行为选中并读取;当有效位为0,则代表该表项失效,表项等待被其他待保存的指令地址替换;初始化后的三种缓存失效类型有效位均为1,当发生一次预取数据未命中,有效位从1变为0,等待被替换;
[0025]类型位包括01、10和11,类型位为01代表缓存失效类型为过渡型,类型位为10代表缓存失效类型为跳跃型,类型位为11代表缓存失效类型为重复型;
[0026]标号位x与所述历史记录表的表项个数n有关,标号位x满足:2
x
‑1<n≤2
x
,并且n≥3,x≥2;x位标号位构成标号C;例如,若x=2,则标号宽度为2,标号C的取值范围为:00,01,10,11。
[0027]根据本专利技术优选的,步骤S1中,设置计数器记录各表项标号,标号代表发生缓存失效的地址存入历史记录表的时间顺序,计数值为0表示该表项中的指令地址最早记录在历史记录表中;当历史记录表满时,依据替换法则,替换表中历史指令地址;
[0028]所述替换法则具体为:当存在无效的表项时,替换有效位为0且标号值小的表项,假设当前待替换表项标号为r,则按顺序依次更新为:r=n+1,其他表项标号t=t

1,r<t≤(n+1);
[0029]若所有表项均有效,则替换最早记录指令地址的表项,假设最早记录地址的表项标号为r,则按顺序依次更新为:r=n+1、其他表项标号t=t

1(0<t≤(n+1))。这种替换法则及能够及时替换无效的表项、并且能够保护最近写入历史记录表的表项不被替换。
[0030]根据本专利技术优选的,步骤S2中,读取历史记录表,计算预取步长,判断缓存失效类
型;具体过程为:
[0031]S2

1,读历史记录表,判断缓存失效的地址是否命中历史记录表,若命中且表项有效,则跳转至步骤S4,返回预取数据组的相应数据;若没有命中或命中后表项无效,则跳转至步骤S2

2;
[0032]S2

2,只读最新写入的历史记录表的三个缓存失效地址,计算步长的变化值,通过计算步长来判断三个缓存失效地址的关系;
[0033]S2

3,假设在时间上由远到近写入历史记录表的最新的三个指令地址依次为a
i
‑2、a
i
‑1、a
i

[0034]S2

4,令步长k1=a
i

a
i
‑1,步长k0=a
i
‑1‑
a
i
‑2,判断k1与k0两个步长之间的关系,
[0035]如果k1与k0两者均为0,则判定该缓存失效类型为重复型;
[0036]如果k1与k0两者相等且不为0,则判定该缓存失效类本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于局域算法的高速缓存动态数据预取方法,其特征在于,所述方法应用于缓存,具体包括:S1,构建历史记录表,历史记录表用于记录发生缓存失效的指令地址;S2,读取历史记录表,计算预取步长,判断缓存失效类型;S3,采用局域算法计算预取数据的地址,将预取地址保存在局域地址表,再通过总线向主存储器发起预取请求;S4,根据预取数据组的命中率调整历史记录表,控制历史记录表的替换法则,控制预取停止。2.根据权利要求1所述的一种基于局域算法的高速缓存动态数据预取方法,其特征在于,所述缓存为多级缓存,并且每级缓存为多路组相连结构,每路包含多个缓存行,所述缓存行至少包括标签位、数据位以及标志位,所述标志位至少包括缓存有效位和写脏位。3.根据权利要求1所述的一种基于局域算法的高速缓存动态数据预取方法,其特征在于,步骤S1中,当缓存发生失效,将失效的指令地址存放到历史记录表,进而构建历史记录表;历史记录表包括n个表项,每个表项包括1位有效位、2位的类型位、x位标号位和失效指令地址位;有效位包括0和1,当有效位为1,则代表该表项有效,该表项能够被步骤S2中的读历史记录表行为选中并读取;当有效位为0,则代表该表项失效,表项等待被其他待保存的指令地址替换;初始化后的三种缓存失效类型有效位均为1,当发生一次预取数据未命中,有效位从1变为0,等待被替换;类型位包括01、10和11,类型位为01代表缓存失效类型为过渡型,类型位为10代表缓存失效类型为跳跃型,类型位为11代表缓存失效类型为重复型;标号位x满足:2
x
‑1<n≤2
x
,并且n≥3,x≥2;x位标号位构成标号C。4.根据权利要求1所述的一种基于局域算法的高速缓存动态数据预取方法,其特征在于,步骤S1中,设置计数器记录各表项标号,标号代表发生缓存失效的地址存入历史记录表的时间顺序,计数值为0表示该表项中的指令地址最早记录在历史记录表中;当历史记录表满时,依据替换法则,替换表中历史指令地址;所述替换法则具体为:当存在无效的表项时,替换有效位为0且标号值小的表项,若所有表项均有效,则替换最早记录指令地址的表项。5.根据权利要求1所述的一种基于局域算法的高速缓存动态数据预取方法,其特征在于,步骤S2中,读取历史记录表,计算预取步长,判断缓存失效类型;具体过程为:S2

1,读历史记录表,判断缓存失效的地址是否命中历史记录表,若命中且表项有效,则跳转至步骤S4,返回预取数据组的相应数据;若没有命中或命中后表项无效,则跳转至步骤S2

2;S2

2,只读最新写入的历史记录表的三个缓存失效地址,计算步长的变化值,通过计算步长来判断三个缓存失效地址的关系;S2

3,假设在时间上由远到近写入历史记录表的最新的三个指令地址依次为a
i
‑2、a
i
‑1、a
i
;S2

4,令步长k1=a
i

a
i
‑1,步长k0=a
i
‑1‑
a
i
‑2,判断k1与k0两个步长之间的关系,如果k1与k0两者均为0,则判定该缓存失效类型为重复型;
如果k1与k0两者相等且不为0,则判定该缓存失效类型为跳跃型;如果k1与k0两者不相等,但其中一个步长为0,则判定该缓存失效类型为过渡型;如果k1与k0两者不相等且均不为0,则不进行数据预取...

【专利技术属性】
技术研发人员:周莉王肖丛孙田弋贾思敏牟进正薛立晓
申请(专利权)人:山东大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1