本发明专利技术属于高速缓存技术领域,公开了一种自适应栈高速缓存方法及系统;其中,所述自适应栈高速缓存方法包括以下步骤:获取指令的访问类型;基于所述访问类型,获取对应的流水级;其中,不同的访问类型对应的流水级不同;根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射;其中,栈高速缓存和栈顶指针寄存器集成于存储子系统中;在指令发射阶段,每一拍最多发射两条访存指令,一条指令的基址寄存器为栈指针,另一条指令的基址寄存器为非栈指针。本发明专利技术提供的技术方案,可提高指令级并行度,且能够增加数据高速缓存命中率。
【技术实现步骤摘要】
本专利技术属于高速缓存,特别涉及一种自适应栈高速缓存方法及系统。
技术介绍
1、利用局部性原理,采用一级或多级高速缓存(cache)是提高存储系统性能的有效手段之一;进一步地,为了更好地利用局部性原理,提高高速缓存命中率,高速缓存又分为指令高速缓存(instruction cache)和数据高速缓存(data cache)。内存按功能分为代码段、数据段、堆空间和栈空间,为数据高速缓存的进一步细分提供了可能。栈空间数据的访问具有很好的时间局部性和空间局部性,程序连续地访问接近栈顶的数据;函数调用时局部变量的保存、参数传递、寄存器的保存和恢复都是通过栈空间的访问完成的。
2、目前,针对数据高速缓存分离(decouple)技术的研究,主要集中于在片上设置专门的栈存储装置,将局部性的栈数据从其他全局性的数据访问中分离出来。为了更好地将栈访问与其他数据访问并行起来,需要在指令发射阶段同时发射一条栈访问指令和一条非栈访问指令。在指令发射阶段访存指令的地址还没有计算出来,目前将栈访问从其他数据访问中区分出来的技术,包括采用软件在栈分配空间时对其加标记、利用预测表根据历史信息预测访存指令的访问区域和在译码阶段加入额外的地址计算逻辑将访存指令的地址计算出来。
3、现有技术中,关于快速地址计算技术的研究是通过只进行低位地址计算预测访问地址,降低命中时间,但对于栈访问地址预测正确率不高。栈高速缓存溢出和进程切换时的开销非常大,是目前栈高速缓存不能应用于商用的通用处理器的原因。
技术实现思路</p>1、本专利技术的目的在于提供一种自适应栈高速缓存方法及系统,以解决上述存在的一个或多个技术问题。本专利技术提供的技术方案,可提高指令级并行度,且能够增加数据高速缓存命中率。
2、为达到上述目的,本专利技术采用以下技术方案:
3、本专利技术第一方面,提供一种自适应栈高速缓存方法,包括以下步骤:
4、获取指令的访问类型;
5、基于所述访问类型,获取对应的流水级;其中,不同的访问类型对应的流水级不同;
6、根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射;其中,栈高速缓存和栈顶指针寄存器集成于存储子系统中;在指令发射阶段,每一拍最多发射两条访存指令,一条指令的基址寄存器为栈指针,另一条指令的基址寄存器为非栈指针;
7、其中,
8、所述基于所述访问类型,获取对应的流水级的步骤包括:
9、使用栈顶指针寄存器作为基址寄存器的栈访问指令,流水级分为2级;
10、非使用栈顶指针寄存器作为基址寄存器的栈访问指令,流水级分为3级;
11、非栈访问的访存指令,流水级分为4级;
12、所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,在栈高速缓存标志中增加有指令的进程地址空间标识;指令的进程地址空间标识的值来自处理器的控制寄存器。
13、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
14、流水级分为2级时,在指令发射阶段,第一拍利用保存的栈顶指针寄存器的值进行地址计算并利用计算的地址访问栈高速缓存,确定栈高速缓存是否命中并送到存储管理队列;第二拍将访问结果写回。
15、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
16、流水级分为3级时,在指令发射阶段,第一拍地址运算部件计算虚地址,并把访存请求送到栈高速缓存;第二拍访问栈高速缓存,确定栈高速缓存是否命中并送到存储管理队列;第三拍将访问结果写回。
17、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
18、流水级分为4级时,在指令发射阶段,第一拍地址运算部件计算虚地址并把访存请求送到转换后备缓冲器和数据cache;第二拍在转换后备缓冲器把虚地址转换为物理地址的同时访问数据cache;第三拍根据转换后备缓冲器和数据cache的访问结果进行标志位比较,确定数据cache是否命中,并送到存储管理队列;第四拍把访问结果写回。
19、本专利技术的进一步改进在于,数据cache的容量为64kb,结构采用四路组相联、单端口结构;栈高速缓存的容量为16kb。
20、本专利技术第二方面,提供一种自适应栈高速缓存系统,包括:
21、第一获取模块,用于获取指令的访问类型;
22、第二获取模块,用于基于所述访问类型,获取对应的流水级;其中,不同的访问类型对应的流水级不同;
23、指令发射模块,用于根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射;其中,栈高速缓存和栈顶指针寄存器集成于存储子系统中;在指令发射阶段,每一拍最多发射两条访存指令,一条指令的基址寄存器为栈指针,另一条指令的基址寄存器为非栈指针;
24、其中,
25、所述基于所述访问类型,获取对应的流水级的步骤包括:
26、使用栈顶指针寄存器作为基址寄存器的栈访问指令,流水级分为2级;
27、非使用栈顶指针寄存器作为基址寄存器的栈访问指令,流水级分为3级;
28、非栈访问的访存指令,流水级分为4级;
29、所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,在栈高速缓存标志中增加有指令的进程地址空间标识;指令的进程地址空间标识的值来自处理器的控制寄存器。
30、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
31、流水级分为2级时,在指令发射阶段,第一拍利用保存的栈顶指针寄存器的值进行地址计算并利用计算的地址访问栈高速缓存,确定栈高速缓存是否命中并送到存储管理队列;第二拍将访问结果写回。
32、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
33、流水级分为3级时,在指令发射阶段,第一拍地址运算部件计算虚地址,并把访存请求送到栈高速缓存;第二拍访问栈高速缓存,确定栈高速缓存是否命中并送到存储管理队列;第三拍将访问结果写回。
34、本专利技术的进一步改进在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
35、流水级分为4级时,在指令发射阶段,第一拍地址运算部件计算虚地址并把访存请求送到转换后备缓冲器和数据cache;第二拍在转换后备缓冲器把虚地址转换为物理地址的同时访问数据cache;第三拍根据转换后备缓冲器和数据cache的访问结果进行标志位比较,确定数据cache是否命中,并送到存储管理队列;第四拍把访问结果写回。
36、本专利技术的进一步改进在于,数据cache的容量为64kb,结构采用四路组相联、单端口结构;栈高速缓存的容量为16kb。本文档来自技高网
...
【技术保护点】
1.一种自适应栈高速缓存方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
3.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
4.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
5.根据权利要求4所述的一种自适应栈高速缓存方法,其特征在于,数据Cache的容量为64KB,结构采用四路组相联、单端口结构;栈高速缓存的容量为16KB。
6.一种自适应栈高速缓存系统,其特征在于,包括:
7.根据权利要求6所述的一种自适应栈高速缓存系统,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
8.根据权利要求6所述的一种自适应栈高速缓存系统,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
9.根据权利要求6所述的一种自适应栈高速缓存系统,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
10.根据权利要求9所述的一种自适应栈高速缓存系统,其特征在于,数据Cache的容量为64KB,结构采用四路组相联、单端口结构;栈高速缓存的容量为16KB。
...
【技术特征摘要】
1.一种自适应栈高速缓存方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
3.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
4.根据权利要求1所述的一种自适应栈高速缓存方法,其特征在于,所述根据栈高速缓存、栈顶指针寄存器和流水级的状态,进行指令发射的步骤中,
5.根据权利要求4所述的一种自适应栈高速缓存方法,其特征在于,数据cache的容量为64kb,结构采用四路组相联、单端口结构;栈高速缓存的容量为16kb。
【专利技术属性】
技术研发人员:施凌鹏,卢士达,李天宇,李一鸣,
申请(专利权)人:国网上海市电力公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。