一种数据预取方法及装置的制造方法

文档序号:8430727阅读:286来源:国知局
一种数据预取方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种数据预取方法及装置。
【背景技术】
[0002]目前存储器和处理器的性能差距不断扩大,存储延迟可能高达数百个处理器周期,这使得存储访问成为系统性能提升的关键瓶颈之一。为降低存储访问延迟导致的性能损失,研究人员提出了数据预取机制。预取是指在处理器访问指令或数据前就把它们从芯片外存储器取到高速缓存或者预取缓存。目前预取技术主要是通过一个固定的预取方法进行预取。但是在实际应用中地址的模式包括线性流和链式流模式,且各模式的读取方法是不同的,这样通过一种固定的预取方式进行预取,那么在预取过程中就会出现大量的无用预取。例如:通过基于内容指导的无状态预取方法的预取,该方法监控所有的缺失返回值,并判断这些值是否是指针类型,如果判断是指针则以该值作为地址发起预取。该技术中,只能对缺失返回值为指针类型且该缺失返回值可以作为地址使用时,才会是有用预取。而实际应用中并非所有取到的指针都可以作为地址使用,另外,并非所有缺失返回值都是针类型,这样该方法就会产生大量的无用预取。
[0003]可见,目前的预取技术中预取准确率较低。

【发明内容】

[0004]本发明实施例提供了一种数据预取方法及装置,可以解决目前的预取技术中预取准确率较低的问题。
[0005]第一方面,本发明提供一种数据预取方法,包括:
[0006]获取缺失返回值;
[0007]根据所述缺失返回值判断训练模式;
[0008]当判断训练模式为目标训练模式时,采用所述目标训练模式对缺失地址进行训练,所述目标训练包括线性流训练模式或者链式流训练模式;
[0009]当所述目标训练模式发现的预取模式为目标预取模式时,采用所述目标预取模式进行预取;其中,所述目标预取模式包括线性流预取模式或者链式流预模式。
[0010]在第一种可能的实现方式中,所述根据所述缺失返回值判断训练模式,包括:
[0011]判断所述缺失返回值是否为缺失地址,若是,则判断训练模式为链式流训练模式,若否,则判断训练模式为线性流训练模式。
[0012]结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述目标训练包括线性流训练模式;
[0013]所述采用所述目标训练模式对缺失地址进行训练,包括:
[0014]获取第一缺失地址,并将所述第一缺失地址作为索引地址索引历史访存池MAP得到第一入口项entry ;当所述第一 entry的状态为初始状态时,记录所述第一缺失地址,并将所述第一 entry的状态设置为准训练状态;其中,所述MAP用于记录历史访存信息;
[0015]获取第二缺失地址,并将所述将第二缺失地址作为索引地址索引所述MAP得到所述第一 entry,当所述第一 entry的状态为准训练状态时,将所述第二缺失地址减去所述第一缺失地址得到第一计算距离,并将所述第一 entry的状态设置为模式发现状态;
[0016]获取第三缺失地址,并将所述将第三缺失地址作为索引地址索引所述MAP得到所述第一 entry,当所述第一 entry的状态为模式发现状态时,判断所述第三缺失地址与所述第二缺失地址之差是否等于所述第一计算距离,若是,则发现线性流预取模式;其中,所述第一缺失地址、第二缺失地址和第三缺失地址为相邻缺失地址;
[0017]所述采用所述目标预取模式进行预取,包括:
[0018]对所述第三缺失地址与所述第一计算距离之和的地址发起深度为N的预取,其中,所述N预先设置的预取深度;或者
[0019]对所述第三缺失地址与所述第一计算距离之和的地址发起深度为N的预取,并获取模式表PTB的最旧项,再修改所述最旧项,修改后的所述最旧项的首地址为所述第三缺失地址与所述第一计算距离之和,修改后的所述最旧项的尾地址为所述第三缺失地址与T倍所述第一计算距离之和,修改后的所述最旧项的距离为所述第一计算距离;当缓存命中,且所述缓存命中的地址在所述首地址和所述尾地址的中间时,继续向所述缓存命中的地址之后的地址发起预取;其中,所述N预先设置的预取深度,所述T为大于I的整数。
[0020]结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述目标训练包括链式流训练模式;
[0021]所述采用所述目标训练模式对缺失地址进行训练,包括:
[0022]获取第四缺失地址,并将所述第四缺失地址作为索引地址索引MAP得到第二入口项entry ;当所述第一 entry的状态为初始状态时,记录所述第四缺失地址的第一缺失返回值,并将所述第一 entry的状态设置为准训练状态;其中,所述MAP用于记录历史访存信息;
[0023]获取第五缺失地址,并将第五缺失地址作为索引地址索引所述MAP得到所述第二 entry,当所述第二 entry的状态为准训练状态时,记录所述第五缺失地址的第二缺失返回值,再将所述第五缺失地址减去所述第一缺失返回值得到第二计算距离,并将所述第一entry的状态设置为模式发现状态;
[0024]获取第六缺失地址,并将第六缺失地址作为索引地址索引所述MAP得到所述第一entry,当所述第一 entry的状态为模式发现状态时,判断所述第六缺失地址与所述第二缺失返回值之差是否等于所述第二计算距离,若是,则发现链式流预取模式;其中,所述第四缺失地址、第五缺失地址和第六缺失地址为相邻缺失地址;
[0025]所述采用所述目标预取模式进行预取,包括:
[0026]对所述第三缺失返回值与所述第二计算距离之和的地址发起深度为N的预取,其中,所述N预先设置的预取深度;或者
[0027]对所述第三缺失返回值与所述第二计算距离之和的地址发起深度为N的预取,并获取模式表PTB的最旧项,再修改所述最旧项,修改后的所述最旧项的首地址为所述第三缺失返回值与所述第二计算距离之和,修改后的所述最旧项的尾地址为所述预取中最后一次预取的地址,修改后的所述最旧项的距离为所述第二计算距离;当缓存命中,且所述缓存命中的地址为所述首地址或者所述尾地址时,继续向所述缓存命中的地址之后的地址发起预取;其中,所述N预先设置的预取深度。
[0028]结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:
[0029]统计特定时间段内的预取准确率、预取有害率和预取迟到率,其中,所述预取准确率为预取命中次数除以总预取次数,所述预取有害率为污染预取次数除以总预取次数,所述预取迟到率为迟到预取次数除以预取命中次数;
[0030]所述采用所述目标预取模式进行预取,包括:
[0031]当所述预取准确率超过第一预设阈值时,增加预取深度,采用所述目标预取模式进行预取,所述预取的深度为所述增加后的预取深度;或者
[0032]当所述预取准确率超过第一预设阈值,且所述预取迟到率超过第二预设阈值时,增加预取深度,并增加预取距离,采用所述目标预取模式进行预取,所述预取的深度为所述增加后的预取深度,所述预取的距离为所述增加后的预取距离;
[0033]当所述预取有害率超过第三预设阈值时,减少预取深度,采用所述目标预取模式进行预取,所述预取的深度为所述减少后的预取深度。
[0034]第二方面,本发明提供一种数据预取装置,包括:获取模块、判断模块、训练模块和预取模块,其中:
[0035]所述获取模块,用于获取缺失返回值;
[0036]所述判断模块,用于根据所述获取模块获取的缺失返回值判断训练模式;
[0037]所述训练模块,用于当所述判断模块判断训练模式为目标训练模式时,采用所述目标训练模式对缺失地址进行训练,所述目标训练包括线性流训练模式或者链式流训练模式;
[0038]所述预取模块,用于当训练模块训练的目标训练模式发现的预取模式为目标预取模式时,采用所述目标预取模式进行预取;其中,所述目标预取模式包括线性流预取模式或者链式流预模式。
[0039]在第二方面的第一种可能的实现方式中,所述方法还包括:
[0040]统计特定时间段内的预取准确率、预取有害率和预取迟到率,其中,所述预取准确率为预取命中次数除以总预取次数,所述预取有害率为污染预取次数除以总预取次数,所述预取迟到率为迟到预取次数除以预取命中次数;
[0041]所述采用所述目标预取模式进行预取,包括:
[0042]当所述预取准确率超过第一预设阈值时,增加预取深度,采用所述目标预取模式进行预取,所述预取的深度为所述增加后的预取深度;或者
[0043]当所述预取准确率超过第一预设阈值,且所述预取迟到率超过第二预设阈值时,增加预取深度,并增加预取距离,采用所述目标预取模式进行预取,所述预取的深度为所述增加后的预取深度,所述预取的距离为所述增加后的预取距离;
[0044]当所述预取有害率超过第三预设阈值时,减少预取深度,采用所述目标预取模式进行预取,所述预取的深度为所述减少后的预取深度。
[0045]结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述训练模块,包括:
[0046]第一训练子单元,用于当所述目标训练包括线性流训练模式时,获取第一缺失地址,并将所述第一缺失地址作为索引地址索引历史访存池MAP得到第一入口项entry ;当所述第一 entry的状态为初始状态时,记录所述第一缺失地址,并将所述第一 entry的状态设置为准训练状态;其中,所述MAP用于记录历史访存信息;
[0047]第二训练子单元,用于获取第二缺失地址,并将所述将第二缺失地址作为索引地址索引所述MAP得到所述第一 entry,当所述第一 entry的状态为准训练状态时,将所述第二缺失地址减去所述第一缺失地址得到第一计算距离,并将所述第一 entry的状态设置为模式发现状态;
[0048]第三训练子单元,用于获取第三缺失地址,并将所述将第三缺失地址作为索引地址索引所述MAP得到所述第一 entry,当所述第一 entry的状态为模式发现状态时,判断所述第三缺失地址与所述第二缺失地址之差是否等于所述第一计算距离,若是,则发现线性流预取模式;其中,所述第一缺失地址、第二缺失地址和第三缺失地址为相邻缺失地址;
[0049]所述预取模块用于当所述线性流训练模式发现的预取模式为线性流预模式时,对所述第三缺失地址与所述第一计算距离之和的地址发起深度为N的预取,其中,所述N预先设置的预取深度;或者
[0050]所述预取模块用于当所述线性流训练模式发现的预取模式为线性流预模式时,对所述第三缺失地址与所述第一计算距离之和的地址发起深度为N的预取,并获取模式表PTB的最旧项,再修改所述最旧项,修改后的所述最旧项的首地址为所述第三缺失地址与所述第一计算距离之和,修改后的所述最旧项的尾地址为所述第三缺失地址与T倍所述第一计算距离之和,修改后的所述最旧项的距离为所述第一计算距离;以及当缓存命中,且所述缓存命中的地址在所述首地址和所述尾地址的中间时,继续向所述缓存命中的地址之后的地址发起预取;其中,所述N预先设置的预取深度,所述T为大于I的整数。
[0051]结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1