System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种预取方法、装置、电子设备及可读存储介质。
技术介绍
1、随着处理器运算速度的不断提高,处理器的运算速度和数据访问速度之间的差距逐渐增大形成的存储墙(memory wall)问题成为制约处理器性能进一步提升的瓶颈。为解决存储墙问题,需要基于应用程序访存行为的规律,识别访存序列中潜藏的规律并预测未来即将被读写的数据,在数据被处理器使用之前预先将数据取入高速缓存(cache)中,从而减少处理器未来访问该数据时的访存延迟。
2、指针(pointer)是应用程序中一种常见的寻址方式,普遍出现于应用程序常用的链表、图等数据结构中,具体可以将目标对象(例如链表或图的节点)的虚拟地址作为数据存入内存中,作为指向目标对象的指针,当需要访问目标对象时,先将该指针取回,再根据该指针访问目标对象。
3、但是,指针本身的地址和指针指向的地址通常不相关,例如在图数据结构中会利用指针链接图中不同的节点,这些节点之间的关系取决于图本身的拓扑特点,无法直接从空间变化上观察到可利用的规律,指针寻址的间接性的特点导致指针指向的数据的缓存命中率低、数据访问延迟长,阻碍了处理器性能的提升。
技术实现思路
1、本专利技术实施例提供一种预取方法、装置、电子设备及可读存储介质,可以解决相关技术基于指针进行预取的过程中存在缓存命中率、数据访问延迟长,阻碍处理器性能提升的问题。
2、为了解决上述问题,本专利技术实施例公开了一种预取方法,应用于高速缓存,所述方法包括
3、接收处理器发送的访存请求,并获取所述访存请求中携带的访存地址;
4、在所述高速缓存中存在与所述访存地址对应的第一缓存块的情况下,对所述第一缓存块进行扫描,确定所述第一缓存块中是否存在指向在历史周期内发生过缓存缺失的地址空间的目标指针;
5、在所述第一缓存块中存在指向在历史周期内发生过缓存缺失的地址空间的目标指针的情况下,将所述第一缓存块的第一参数的值加n;所述第一参数用于指示所述缓存块对应的预取深度,所述第一参数的起始值为a;n为正整数,a为自然数;
6、以所述第一缓存块中的目标指针为预取的触发起点,进行连续预取,直至满足预取中止条件的情况下,停止预取操作;每触发一次预取,所述第一参数的值加n;
7、其中,所述预取中止条件包括以下至少一项:
8、所述第一参数的值大于第一阈值;
9、预取的数据块中不存在指向在历史周期内发生过缓存缺失的地址空间的目标指针。
10、另一方面,本专利技术实施例公开了一种预取装置,应用于高速缓存,所述装置包括:
11、接收模块,用于接收处理器发送的访存请求,并获取所述访存请求中携带的访存地址;
12、确定模块,用于在所述高速缓存中存在与所述访存地址对应的第一缓存块的情况下,对所述第一缓存块进行扫描,确定所述第一缓存块中是否存在指向在历史周期内发生过缓存缺失的地址空间的目标指针;
13、计算模块,用于在所述第一缓存块中存在指向在历史周期内发生过缓存缺失的地址空间的目标指针的情况下,将所述第一缓存块的第一参数的值加n;所述第一参数用于指示所述缓存块对应的预取深度,所述第一参数的起始值为a;n为正整数,a为自然数;
14、预取模块,用于以所述第一缓存块中的目标指针为预取的触发起点,进行连续预取,直至满足预取中止条件的情况下,停止预取操作;每触发一次预取,所述第一参数的值加n;
15、其中,所述预取中止条件包括以下至少一项:
16、所述第一参数的值大于第一阈值;
17、预取的数据块中不存在指向在历史周期内发生过缓存缺失的地址空间的目标指针。
18、再一方面,本专利技术实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的预取方法。
19、本专利技术实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的预取方法。
20、本专利技术实施例包括以下优点:
21、本专利技术实施例提供了一种预取方法,在高速缓存中存在与访存请求中携带的访存地址对应的第一缓存块,且第一缓存块中存在指向在历史周期内发生过缓存缺失的地址空间的目标指针的情况下,以第一缓存块中的目标指针为预取的触发起点,进行连续预取,根据程序的局部性原理,在近期内发生过缓存缺失的地址空间,更有可能会再次发生缓存缺失,将第一缓存块中指向在历史周期内发生过缓存缺失的地址空间的指针确定为目标指针,并以目标指针为预取的触发起点,进行连续预取,可以提高预取至高速缓存的数据块的缓存命中率;此外,在预取的数据块的第一参数的值大于第一阈值和/或预取的数据块中不存在指向在历史周期内发生过缓存缺失的地址空间的目标指针的情况下,停止预取操作,可以避免在预取错误的情况下继续发出多条错误预取,造成高速缓存存储空间的污染和内存带宽的占用的问题,提高了数据访问的速度,降低了处理器的运算速度和数据访问速度之间的差距对于计算机系统性能的影响。
本文档来自技高网...【技术保护点】
1.一种预取方法,其特征在于,应用于高速缓存,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述在所述高速缓存中存在与所述访存地址对应的第一缓存块的情况下,对所述第一缓存块进行扫描,确定所述第一缓存块中是否存在指向在历史周期内发生过缓存缺失的地址空间的目标指针,包括:
3.根据权利要求2所述的方法,其特征在于,所述以所述第一缓存块中的目标指针为预取的触发起点,进行连续预取,包括:
4.根据权利要求1所述的方法,其特征在于,所述高速缓存还包括缓存缺失表,所述缓存缺失表用于记录历史周期内的缓存缺失地址;
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,在接收处理器发送的访存请求,并获取所述访存请求中携带的访存地址之后,所述方法还包括:
7.一种预取装置,其特征在于,应用于高速缓存,所述装置包括:
8.根据权利要求7所述的装置,其特征在于,所述确定模块,包括:
9.根据权利要求8所述的装置,其特征在于,所述预取模块,包括:
...【技术特征摘要】
1.一种预取方法,其特征在于,应用于高速缓存,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述在所述高速缓存中存在与所述访存地址对应的第一缓存块的情况下,对所述第一缓存块进行扫描,确定所述第一缓存块中是否存在指向在历史周期内发生过缓存缺失的地址空间的目标指针,包括:
3.根据权利要求2所述的方法,其特征在于,所述以所述第一缓存块中的目标指针为预取的触发起点,进行连续预取,包括:
4.根据权利要求1所述的方法,其特征在于,所述高速缓存还包括缓存缺失表,所述缓存缺失表用于记录历史周期内的缓存缺失地址;
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,在接收处理器发送的访存请求,并获取所述访存请求中携带的访存地址之后,所述方法还包括:
7.一种预取装置,其特征在于,应用于高速缓存,所述装置包括:
8.根据权利要...
【专利技术属性】
技术研发人员:刘宇航,宋逸斐,陈明宇,
申请(专利权)人:北京开源芯片研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。