指令缓存替换装置、方法及电子设备与流程
- 国知局
- 2024-08-05 11:39:55
本公开涉及芯片,尤其涉及一种指令缓存替换装置、方法及电子设备。
背景技术:
1、处理器在运行程序段时会处理汇编指令,为了提高处理速度,通常从指令缓存中获取汇编指令,当处理器中运行的程序段需要访问某个地址的汇编指令时,会先检查缓存中是否存在,若在缓存中找到该地址(称为“命中”),则可以直接将缓存中的汇编指令返回给处理器,若在缓存中没找到,则需要进行缓存替换,也即需要将外部存储中该地址的汇编指令替换到缓存的缓存行中,再从缓存行中返回给处理器。
2、现有对于指令缓存的访问可以来自单一处理器中单一程序段的访问,也可以是来自多个处理器中多个程序段的并行访问。而现有的缓存替换算法(如随机替换、先进先出替换、最近最少使用替换以及最近最少使用替换等)主要适应于单一程序段访问的场景下,而在多程序段场景下,不同处理器中程序段之间可能相互抢占缓存行,导致缓存的缺失率提升,从而使得缓存性能下降。
技术实现思路
1、有鉴于此,本公开提出了一种指令缓存替换装置、方法及电子设备,能够避免不同处理器中程序段相互抢占缓存装置中的缓存行,从而可以降低缓存装置的缓存缺失率,提高缓存性能。
2、根据本公开的一方面,提供了一种指令缓存替换装置,包括:查找模块,用于响应于接收到至少一个处理器发送的至少一个缓存访问请求,根据所述至少一个缓存访问请求中的指令地址,分别从缓存装置中查找与各个缓存访问请求中指令地址匹配的缓存行;缓存替换模块,用于针对所述至少一个缓存访问请求中的缓存缺失请求,根据所述缓存装置在当前时钟周期内的动态掩码与缓存行年龄,从所述缓存装置中确定出待替换的目标缓存行,并将从存储装置中读取的与所述缓存缺失请求中指令地址匹配的目标指令写入所述目标缓存行;其中,所述缓存缺失请求包括未从所述缓存装置中查找到与地址指令匹配的缓存行的缓存访问请求;所述动态掩码用于指示所述缓存装置中的缓存行是否可被替换;所述缓存行年龄用于指示所述缓存装置中缓存行的替换优先级。
3、在一种可能的实现方式中,所述缓存行年龄与替换优先级呈负相关,其中,所述根据所述缓存装置中在当前时钟周期内的动态掩码与缓存行年龄,从所述缓存装置中确定出待替换的目标缓存行,包括:根据当前时钟周期内的动态掩码以及缓存行年龄,从所述缓存装置中确定出可被替换的且缓存行年龄最小的至少一个候选缓存行;根据所述至少一个候选缓存行,确定待替换的目标缓存行。
4、在一种可能的实现方式中,所述根据所述至少一个候选缓存行,确定待替换的目标缓存行,包括:在候选缓存行为多个的情况下,计算每个候选缓存行对应的指令地址与所述缓存缺失请求中的指令地址之间的地址距离;将候选缓存行对应的指令地址小于所述缓存缺失请求中的指令地址且地址距离最小的候选缓存行,确定为待替换的目标缓存行。
5、在一种可能的实现方式中,所述缓存替换模块,还用于:在根据所述缓存装置中在当前时钟周期内的动态掩码与缓存行年龄,从所述缓存装置中确定出待替换的目标缓存行之前,查找所述缓存装置中是否存在处于空闲状态的缓存行;在所述缓存装置中存在处于空闲状态的缓存行的情况下,从处于空闲状态的缓存行中确定出待替换的目标缓存行;在所述缓存装置中不存在处于空闲状态的缓存行的情况下,执行所述根据所述缓存装置中在当前时钟周期内的动态掩码与缓存行年龄,从所述缓存装置中确定出待替换的目标缓存行;其中,处于空闲状态的缓存行包括未缓存指令的空缓存行。
6、在一种可能的实现方式中,所述缓存替换模块包括:至少两个地址寄存器、至少两个距离计算单元、至少两个第一选择单元、最小距离确定单元、第二选择单元以及替换单元;其中,一个缓存行对应一个地址寄存器、一个地址距离计算单元和一个第一选择单元;其中,任一地址寄存器,用于存储缓存行对应的指令地址;任一距离计算单元,用于从缓存行对应的地址寄存器中读取缓存行对应的指令地址,并计算缓存行对应的指令地址与输入的缓存缺失请求中的指令地址之间的地址距离,并输出计算出的地址距离至对应的第一选择单元;任一第一选择单元,用于在当前时钟周期内的动态掩码指示缓存行不可替换的情况下,输出预设的最大地址距离至所述最小距离确定单元;以及,在所述动态掩码指示缓存行可替换的情况下,输出对应的距离计算单元所计算出的地址距离至所述最小距离确定单元;所述最小距离确定单元,用于从所述至少两个第一选择单元各自输出的地址距离中确定出最小地址距离以及与所述最小地址距离对应的缓存行索引,并输出与所述最小地址距离对应的缓存行索引至所述第二选择单元,所述缓存行索引用于标识缓存行;所述第二选择单元,用于在所述缓存装置中存在处于空闲状态的缓存行的情况下,输出处于空闲状态的缓存行的缓存行索引至所述替换单元;以及,在所述缓存装置中不存在处于空闲状态的缓存行的情况下,输出所述最小距离确定单元所确定出的缓存行索引至所述替换单元;所述替换单元,用于根据所述第二选择单元所输出的缓存行索引,将从存储装置中读取的与缓存缺失请求中指令地址匹配的目标指令,写入所述第二选择单元输出的缓存行索引所指示的目标缓存行。
7、在一种可能的实现方式中,所述替换装置还包括:年龄更新模块,用于根据所述缓存装置在当前时钟周期内的缓存行访问情况,更新缓存行年龄;其中,所述缓存行访问情况用于指示发生替换或命中的缓存行,其中,发生命中的缓存行包括从所述缓存装置中查找到与缓存访问请求中指令地址匹配的缓存行;其中,当前时钟周期内发生替换或命中的缓存行的缓存行年龄增大,未发生替换或命中的缓存行的缓存行年龄减小。
8、在一种可能的实现方式中,所述缓存装置中包括至少一个缓存组,每个缓存组包括至少两个缓存行,每个缓存组中的每个缓存行对应一个缓存行年龄,所述缓存行年龄表示为n位二进制数,n为正整数,其中,在所述缓存装置复位时,各个缓存行的缓存行年龄初始化为n位0;其中,所述根据所述缓存装置在当前时钟周期内的缓存行访问情况,更新缓存行年龄,包括:在当前时钟周期内,针对所述缓存装置中发生替换或命中的第一缓存行,在下一个时钟周期内将所述第一缓存行的缓存行年龄更新为n位1;在当前时钟周期内,在同一缓存组中存在发生替换或命中的第一缓存行的情况下,在下一个时钟周期内将同一缓存组中其它未发生替换或命中的第二缓存行的缓存行年龄右移1位;在当前时钟周期内,在同一缓存组中不存在发生替换或命中的第一缓存行的情况下,在下一个时钟周期内保持同一缓存组中各个缓存行的缓存行年龄不变。
9、在一种可能的实现方式中,所述年龄更新模块包括:至少一个年龄更新子模块,一个年龄更新子模块对应一个缓存组,每个年龄更新子模块包括:至少两个年龄寄存器、至少两个右移单元、至少两个第三选择单元、至少两个第四选择单元;其中,一个缓存行对应一个年龄寄存器、一个右移单元、一个第三选择单元及一个第四选择单元;其中,任一年龄寄存器,用于存储缓存行的缓存行年龄;任一右移单元,用于在当前时钟周期内,对从缓存行对应的年龄寄存器中读取的缓存行年龄右移1位,并输出右移后的缓存行年龄至对应的第三选择单元;任一第三选择单元,用于在当前时钟周期内,在缓存行所在同一缓存组中存在发生替换或命中的其它缓存行的情况下,输出所述右移单元所右移后的缓存行年龄至对应的第四选择单元,以及,在缓存行所在同一缓存组中不存在发生替换或命中的其它缓存行的情况下,输出从缓存行对应的年龄寄存器中读取的缓存行年龄至对应的第四选择单元;任一第四选择单元,用于在当前时钟周期内,在缓存行发生命中或替换的情况下,输出缓存行年龄为n位1并写入对应的年龄寄存器,以及,在缓存行未发生命中或替换的情况下,输出对应的第三选择单元所输出的缓存行年龄至对应的年龄寄存器。
10、在一种可能的实现方式中,所述替换装置还包括:掩码更新模块,用于根据所述缓存装置在上一个时钟周期内的缓存行年龄、缓存行访问情况以及缓存行状态,更新所述动态掩码;其中,所述缓存行状态用于指示已经被占用但没发生替换的不可用缓存行;所述缓存行访问情况用于指示发生替换或命中的缓存行。
11、在一种可能的实现方式中,所述缓存装置包括m个缓存行,m为正整数,所述动态掩码表示为m位二进制数,所述动态掩码中的第m位二进制数用于指示所述缓存装置中的第m个缓存行是否可被替换,m∈[0,m-1],其中,采用1表示可被替换,采用0表示不可被替换;其中,在所述缓存装置复位时,所述动态掩码初始化为m位1;其中,所述根据所述缓存装置在上一个时钟周期内的缓存行年龄、缓存行访问情况以及缓存行状态,更新所述动态掩码,包括:将上一个时钟周期内的不可用缓存行以及发生替换或命中的缓存行在所述动态掩码中对应的二进制数置为0;将剩余缓存行中缓存行年龄最小的至少一个缓存行在所述动态掩码中对应的二进制数置为1;将所述剩余缓存行中除了缓存行年龄最小的缓存行以外的其它缓存行在所述动态掩码中对应的二进制数置为0;其中,所述剩余缓存行包括所述缓存装置中除了所述上一个时钟周期内的不可用缓存行以及发生替换或命中的缓存行以外的缓存行。
12、在一种可能的实现方式中,所述掩码更新模块包括:至少两个第五选择单元、最小年龄确定单元、第六选择单元以及掩码寄存器;其中,一个缓存行对应一个第五选择单元;任一第五选择单元,用于在上一个时钟周期内缓存行发生替换或命中或是不可用缓存行的情况下,输出预设的最大年龄值至所述最小年龄确定单元;以及,在上一个时钟周期内缓存行未发生替换与命中且不是不可用缓存行的情况下,输出从缓存行对应的年龄寄存器中读取的缓存行年龄至所述最小年龄确定单元;所述最小年龄确定单元,用于从所述至少两个第五选择单元各自输出的缓存行年龄选出至少一个最小缓存行年龄,并输出至少一个最小缓存行年龄所对应的缓存行索引至所述第六选择单元;所述第六选择单元,用于将所述最小年龄确定单元输出最小缓存行年龄的缓存行索引所对应的缓存行在所述动态掩码中对应的二进制数置为1并写入所述掩码寄存器,以及,将除了所述最小年龄确定单元输出的缓存行索引所对应缓存行以外的其余缓存行在所述动态掩码中对应的二进制数置为0并写入所述掩码寄存器;所述掩码寄存器,用于存储所述动态掩码。
13、在一种可能的实现方式中,所述替换装置还包括:指令返回模块,用于:在所述缓存替换模块已将与所述缓存缺失请求中指令地址匹配的目标指令写入目标缓存行后,将写入目标缓存行中的目标指令返回给发送所述缓存缺失请求的处理器;或者,在所述查找模块从所述缓存装置中查找到与任一缓存访问请求中地址指令匹配的缓存行的情况下,将查找到的缓存行中的指令返回给发送所述缓存访问请求的处理器。
14、根据本公开的另一方面,提供了一种指令缓存替换方法,包括:响应于接收到至少一个处理器发送的至少一个缓存访问请求,根据所述至少一个缓存访问请求中的指令地址,分别从缓存装置中查找与各个缓存访问请求中指令地址匹配的缓存行;针对所述至少一个缓存访问请求中的缓存缺失请求,根据所述缓存装置在当前时钟周期内的动态掩码与缓存行年龄,从所述缓存装置中确定出待替换的目标缓存行,并将从存储装置中读取的与所述缓存缺失请求中指令地址匹配的目标指令写入所述目标缓存行;其中,所述缓存缺失请求包括未从所述缓存装置中查找到与地址指令匹配的缓存行的缓存访问请求;所述动态掩码用于指示所述缓存装置中的缓存行是否可被替换;所述缓存行年龄用于指示所述缓存装置中缓存行的替换优先级。
15、根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;缓存装置;以及,所述的指令缓存替换装置。
16、在一种可能的实现方式中,所述处理器包括以下至少一种:中央处理器、图形处理器、通用图形处理器、人工智能加速器。
17、根据本公开的各方面,通过根据用于指示缓存装置中缓存行是否可被替换的动态掩码以及用于指示缓存行的替换优先级的缓存行年龄,可以针对任一未从缓存装置中查找到与指令地址匹配的缓存行的缓存缺失请求,来高效地确定出待替换的目标缓存行,尤其是在多个处理器发送的缓存访问请求中出现缓存缺失请求时,利用动态掩码和缓存行年龄来确定被替换的目标缓存行,可以避免不同处理器的不同缓存缺失请求(也即不同程序段)相互抢占缓存行,从而可以降低缓存装置的缓存缺失率,提高缓存装置的缓存性能,进而可以有利于提高处理器的处理性能。
18、根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
本文地址:https://www.jishuxx.com/zhuanli/20240802/258686.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表