CN111143245A - 一种缓存数据处理方法、电路、处理器及芯片 - Google Patents
一种缓存数据处理方法、电路、处理器及芯片 Download PDFInfo
- Publication number
- CN111143245A CN111143245A CN201911121905.3A CN201911121905A CN111143245A CN 111143245 A CN111143245 A CN 111143245A CN 201911121905 A CN201911121905 A CN 201911121905A CN 111143245 A CN111143245 A CN 111143245A
- Authority
- CN
- China
- Prior art keywords
- data block
- current
- value
- cache
- accessed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本方案实施例提供一种缓存数据处理方法、电路、处理器及芯片,所述方法包括:获取上一级缓存驱逐到本级缓存的待加载数据块;根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应,进而将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。通过当前预测标识的状态预测待加载数据块的访问命中概率,进而将待加载数据块加载至对应的加载位置,提高数据块在本级缓存被访问命中的概率、降低系统延迟、提升整体性能。
Description
技术领域
本发明实施例涉及缓存数据处理技术领域,具体涉及一种缓存数据处理方法、电路、处理器及芯片。
背景技术
对于计算设备来说,利用缓存(Cache)存储需要经常访问的数据及其地址是一种有效的提高计算设备运行速度的方法。多级缓存方案通过将数据分层缓存,以提升访问效率。一般地,缓存级别越高则离CPU越远,相应的访问速度越慢。
缓存通常配置有MRU(Most-Recently Used,最近最常访问)位置和LRU(Least-Recently Used,最近最少被访问)位置,其中,MRU位置用于存放被访问概率较大的数据块,LRU位置用于存放被访问概率较小的数据块,当缓存写满时,会将LRU位置的数据块驱逐(evict)至下一级缓存。
在下一级缓存接收到上一级缓存驱逐的数据块时,通常会默认这些数据块被访问的概率较大,从而将这些数据块加载(insert)到MRU的位置。
然而,在上述缓存数据处理方案中,缓存性能仍有待提高。
发明内容
有鉴于此,本发明实施提供一种缓存数据处理方法、电路、处理器及芯片,以提高缓存性能。
为解决上述问题,本发明实施例提供一种缓存数据处理方法,该方法包括:
获取上一级缓存驱逐到本级缓存的待加载数据块;
根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;
将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
优选的,所述方法还包括:
训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。
优选的,所述训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态的步骤包括:
根据数据块在本级缓存的访问命中情况,调整计数值;
根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
优选的,所述根据数据块在本级缓存的访问命中情况,调整计数值,包括:
当访问命中本级缓存中的数据块时,减小所述计数值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
优选的,所述当访问未命中本级缓存中的数据块,且需访问的数据块在本级缓存中从未被访问过,增大所述计数值,包括:
当访问未命中本级缓存中的数据块时,判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,所述预设表记录本级缓存历史访问过的数据块的信息;
若所述需访问的数据块的信息与预设表中记录的数据块的信息不匹配,则所述需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
优选的,所述判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,包括:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配;
将需访问的数据块的set信息与所述预设表中记录的数据块的set信息进行匹配;
将需访问的数据块的way信息与所述预设表中记录的数据块的way信息进行匹配;
当所述预设表中存在的数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
优选的,所述根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括;
当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;
当所述计数值小于或等于0时,配置所述当前预测标识的状态为假;
其中,所述阈值大于0。
优选的,所述计数值包括第一计数值和第二计数值;
所述根据数据块在本级缓存的访问命中情况,调整计数值包括:
根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数值;
根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数值。
优选的,所述第一参数值包括第一步进值和第二步进值;
所述根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数值,包括;
当访问命中本级缓存中的数据块时,将所述第一计数值的值减小第一步进值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,将所述第一计数值的值增大第二步进值。
优选的,所述第二参数值包括第三步进值和第四步进值;
所述根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数值,包括;
当访问命中本级缓存中的数据块时,将所述第二计数值的值减小第三步进值,所述第三步进值大于所述第一步进值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,将所述第二计数值的值增大第四步进值。
优选的,所述当前预测标识包括对应第一计数值的第一预测标识和对应第二计数值的第二预测标识,所述第一预设参数组还包括对应第一预测标识的第一阈值,所述第二预设参数组还包括对应第二预测标识的第二阈值;
所述根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括;
当所述第一计数值大于或等于第一阈值时,配置所述第一预测标识的状态为真;
当所述第二计数值大于或等于第二阈值时,配置所述第二预测标识的状态为真。
优选的,所述方法还包括:
对所述第一预设参数组中各参数的候选取值进行测试回归,得到所述第一预设参数组中各参数的最终取值;和/或,对所述第二预设参数组中各参数的候选取值进行测试回归,得到所述第二预设参数组中各参数的最终取值。
优选的,所述根据本级缓存的当前预测标识的状态,确定待加载数据块的age值,包括:
获取所述本级缓存的当前预测标识的状态;
当所述第一预测标识的状态为真时,配置所述待加载数据块的age值为第二age值;
当所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
当所述第一预测标识的状态为真,且所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
所述第三age值大于所述第二age值。
优选的,所述将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,包括:
当所述age值为第三age值时,将所述待加载数据块加载到本级缓存中的LRU位置;
当所述age值为第二age值时,将所述待加载数据块加载到本级缓存中LRU+1位置;
其中,所述LRU+1位置存放的数据块的被访问频率高于所述LRU位置存放的数据块的被访问频率。
优选的,所述根据本级缓存的当前预测标识的状态,确定待加载数据块的age值包括:
获取所述本级缓存的当前预测标识的状态;
当所述第一预测标识的状态为假,且所述第二预测标识的状态为假时,配置所述待加载数据块的age值为第一age值;其中,所述第一age值小于所述第二age值;
所述将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,包括:
当所述age值为第一age值时,将所述待加载数据块加载到本级缓存中的MRU位置;
所述MRU位置存放的数据块的被访问频率高于本级缓存中其他位置存放的数据块的被访问频率。
优选的,所述根据数据块在本级缓存的访问命中情况,调整计数值,包括:
根据本级缓存中采样点对应的数据块的访问命中情况,调整计数值。
优选的,还包括:
根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
优选的,所述根据处理器核ID设置对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与已访问处理器核ID是否一致;
如果是,将标志位压入所述数据块引用。
优选的,所述根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与待访问处理器核ID是否一致;
如果是,读出所述本级缓存的数据块引用的标志位。
本发明实施例还提供一种缓存数据处理电路,包括:
获取单元,用于获取上一级缓存驱逐到本级缓存的待加载数据块;
确定单元,用于根据本级缓存的所述当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;
加载单元,用于将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
优选的,还包括:
训练单元,用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。
优选的,所述训练单元包括计数器;
所述训练单元用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态,包括:
根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值;
根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
优选的,所述训练单元用于根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值,包括:
当访问命中本级缓存中的数据块时,减小所述计数器的计数值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,增大所述计数器的计数值。
优选的,所述训练单元用于当访问未命中本级缓存中的数据块,且需访问的数据块在本级缓存中从未被访问过,增大所述计数器的计数值,包括:
当访问未命中本级缓存中的数据块时,判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,所述预设表记录本级缓存历史访问过的数据块的信息;
若所述需访问的数据块的信息与预设表中记录的数据块的信息不匹配,则所述需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
优选的,所述训练单元用于判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,包括:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配;
将需访问的数据块的set信息与所述预设表中记录的数据块的set信息进行匹配;
将需访问的数据块的way信息与所述预设表中记录的数据块的way信息进行匹配;
当所述预设表中存在的数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
优选的,所述训练单元用于根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括:
当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;
当所述计数值小于或等于0时,配置所述当前预测标识的状态为假;
其中,所述阈值大于0。
优选的,所述训练单元包括:加法逻辑子单元、减法逻辑子单元和计数器;
所述加法逻辑子单元包括第一比较器,加法器,第一多路选择器,第二多路选择器;
其中,所述第一比较器用于读取所述计数器的计数值,比较当前计数值是否大于或等于阈值,并将比较结果发送至所述第一多路选择器和所述第二多路选择器;
所述加法器用于读取所述计数器的计数值,将计数值加上预设的步进值,并将加法结果发送至所述第二多路选择器;
所述第一多路选择器用于根据所述第一比较器的比较结果输出对应的状态;
所述第二多路选择器用于根据第一比较器的比较结果输出对应的数值并写入计数器;
所述减法逻辑子单元包括第二比较器,减法器,第三多路选择器,第四多路选择器;
其中,所述第二比较器用于读取计数器的计数值,比较当前计数值是否小于或等于0,并将比较结果发送至第三多路选择器和第四多路选择器;
减法器用于读取计数器的计数值,并将计数值减去预设的步进值,并将减法结果发送至第四多路选择器;
所述第三多路选择器用于根据第二比较器的比较结果输出对应的状态;
所述第四多路选择器用于根据第二比较器的比较结果输出对应的数值并写入计数器。
优选的,所述计数器包括第一计数器和第二计数器,所述第一计数器的计数值为第一计数值,所述第二计数器的值为第二计数值:
所述训练单元用于根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值,包括:
根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数器的第一计数值;
根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数器的第二计数值。
优选的,还包括:
标志位设置单元,用于根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
标志位读出单元,用于根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
优选的,所述计数器为全局计数器,所述全局计数器为每片每核共享。
本发明实施例还提供一种处理器,包括上述的缓存数据处理电路。
本发明实施例还提供一种芯片,包括上述的处理器。
本发明实施例的技术方案具有以下优点:
本发明实施例在获取上一级缓存驱逐到本级缓存的待加载数据块后,根据本级缓存的当前预测标识的状态,确定待加载数据块的age值,其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应,从而将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。通过当前预测标识的状态预测待加载数据块的访问命中概率,进而将待加载数据块加载至对应的加载位置,提高数据块在本级缓存被访问命中的概率、降低系统延迟、提升整体性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为计算机系统体系结构的可选框图;
图2为缓存的位置分布示意图;
图3为各级缓存替换数据示意图;
图4为age值与缓存位置的对照图;
图5为本发明实施例提供的缓存数据处理方法的流程图;
图6为本发明实施例提供的预设表中的地址结构图;
图7为本发明实施例提供的L3缓存片(slice)结构图;
图8为本发明实施例提供的另一缓存数据处理方法的流程图;
图9为图7的缓存数据处理方法中步骤S10的流程图;
图10为图8的缓存数据处理方法中步骤S40的流程图;
图11为图8的缓存数据处理方法中步骤S40的另一实现流程图;
图12为本发明实施例提供的另一缓存数据处理方法的流程图;
图13为图12的缓存数据处理方法中步骤S60的流程图;
图14为图12的缓存数据处理方法中步骤S70的流程图;
图15为本发明实施例提供的缓存数据处理电路的结构图;
图16为本发明实施例提供的另一缓存数据处理电路的结构图;
图17为本发明实施例提供的训练单元的结构图;
图18为本发明实施例提供的训练单元的加法逻辑子单元结构图;
图19为本发明实施例提供的训练单元的减法逻辑子单元结构图;
图20为本发明实施例提供的另一训练单元的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例公开内容的一个可选示例,图1示例性的示出了计算机系统体系架构的一种框图;应该说明的是,该框图是为便于理解本发明实施例公开内容而示出,本发明实施例并不限于图1所示架构。
参考图1,计算机系统体系架构可包括:处理器核11,与处理器核11耦合的缓存12,与缓存12耦合的总线13和与总线13耦合的内存14。
处理器核11为处理器中用于执行至少一个指令的处理系统,处理器核11表示任何类型的体系结构的处理器核,如RISC(Reduced Instruction Set Computer,精简指令集计算机)处理器核、CISC(Complex Instruction Set Computer,复杂指令计算机)处理器核、VLIM(Very Long Instruction Word,超长指令集架构)处理器核或混合处理器核等。处理器核11可以以任何适合的方式实现,在处理器集成多个处理器核11的情况下,处理器核11可在体系结构和/或指令集方面是同构或异构的。
缓存(cache)是在处理器核11和内存14之间的存取速度极快的存储单元,一般具有多级结构;图1示出的是三级缓存结构,分为一级缓存(L1cache),二级缓存(L2cache)和三级缓存(L3cache);当然,本发明实施例也可支持多于三级缓存或小于三级缓存的结构。
作为一种可选示例,处理器核11的数量可以为多个,每个处理器核11内部可集成L1缓存(L1cache)和L2缓存(L2cache),L3缓存(L3cache)被多个处理器核11所共享;当然,这种缓存设置方式仅是一种示例,也可能是处理器核11内部集成L1缓存,L2和L3缓存作为共享缓存。被共享的三级缓存L3通过总线13访问内存14,用于在处理器核11和内存14之间传递信号。
在多级结构的缓存中,每个层级的缓存将数据块的加载位置分为:MRU位置,MRU-1位置,LRU+1位置和LRU位置;参考图2示出的缓存的加载位置分布示意图,其中,LRU位置用于存放最近最少被访问的数据块,MRU位置用于存放最近最常访问的数据块,MRU-1位置靠近MRU位置,用于存放最近较常访问的数据块,MRU-1位置存放的数据块的被访问频率低于MRU位置存放的数据块的被访问频率,但高于LRU+1位置存放的数据块的被访问频率,LRU+1位置靠近LRU位置,用于存放最近较少访问的数据块,LRU+1位置存放的数据块的被访问频率高于LRU位置存放的数据块的被访问频率,但低于MRU-1位置存放的数据块的被访问频率。
每个层级的缓存都需要在存储空间写满,而需要插入新数据块时,会替换数据块,替换数据块通常采用LRU策略实现;在LRU策略中,上一级缓存将LRU位置的数据块驱逐(evict)至下一级缓存,并将新数据块插入到MRU位置,以此类推,从而末级缓存在需要替换数据块时,将LRU位置的数据块踢到内存,例如动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。
以三级缓存结构为例,参考图3所示的各级缓存替换数据块示意图,L1缓存需要替换数据块时,将LRU位置的数据块驱逐至L2缓存,并将新数据块插入到MRU位置;L2缓存将接收到的L1缓存驱逐的数据块,插入到MRU位置,当L2缓存需要替换数据块时,将LRU位置的数据块驱逐至L3缓存;L3缓存将接收到的L2缓存驱逐的数据块,插入到MRU位置,而L3缓存作为末级缓存,在需要替换数据块时,将LRU位置的数据踢到DRAM。
本方案中对于缓存划分的方式仅是对缓存数据块(cache block)做出的策略性地划分,在本方案的其他实施例中,也可采用其他策略进行划分;即本方案中所述MRU位置、LRU位置等位置,并非物理分隔区域,而是基于对缓存管理的考虑,进行的策略性地划分。例如,可以将缓存数据块(cache block)平均划分为4个区域,并分别对应MRU位置,MRU-1位置,LRU+1位置和LRU位置;再例如,可以将缓存数据块(cache block)划分为8个区域,并对用8种位置情形,等等。
本方案实施例沿用了“重参考预测值”(Re-reference Prediction Value,RRPV)的表示方式,来标识数据块的访问频率。具体的,采用age(年龄)值标识缓存中的数据块在缓存中被访问频率的高低,以此来反应数据块在缓存中的活跃时间。其中,age值的刷新,可以是定期的,也可以是不定期的,或者是由系统根据任务变化进行设定。
基于上述对缓存数据块(cache block)的划分策略,可以为缓存数据块(cacheblock)内设置的不同的数据加载位置对应设置不同的age值。本领域技术人员在本发明公开的基础上可以根据不同的使用需求、不同的缓存管理策略进行对应的设定。
具体地,本方案中缓存的安装位置与数据块的age值进行对应,参考图4示出的数据块的age值与缓存位置的对应图,该表示方式约定:age的取值范围为{0,1,2,3},LRU的位置对应了年龄矩阵(age matrix)中的元素age=3;MRU的位置对应了age=0,LRU+1的位置对应了age=2,MRU-1的位置对应了age=1。
以RRPV的表示方式为例,在LRU策略下,将初始时的所有数据块的age值都设为‘3’,一旦数据块被访问命中,则数据块的age值调整成‘0’。而在需要进行数据块替换,确定驱逐的数据块时,则会查找age值为‘3’的数据块进行驱逐,如果没有找到age值为‘3’的数据块,就将所有cache块的age值加1后再进行查找,直到找到age值为‘3’的数据块,并将该数据块驱逐;而下一级缓存接收到从上一级缓存驱逐的数据块后,默认设置该数据块的age值为‘0’,从而加载到MRU位置。
然而,由于程序引用流的模式事先未知,LRU替换策略默认下一级缓存将从上一级缓存驱逐的数据块加载到MRU位置,会导致无法应对一些特殊场景,特别是某些数据块被上一级缓存驱逐后就不会再被引用时,会形成“死块”,例如,从L2缓存evict到L3缓存的数据块,刚刚到达就成为“死块”(后期永远不会再被访问),若L3缓存将L2缓存evict的数据块,机械的加载到MRU位置,则会使得缓存中“死块”污染加剧,命中率降低。
可以看出,这种对上一级缓存驱逐的数据不加区分,而默认加载到MRU位置的做法,会导致由于MRU位置很快被占满,而真正经常被访问的数据块被“挤到”LRU位置,进而由于数据策略的存在,会导致原本可以在最后一级缓存被命中的数据块被进一步踢到内存;然而在最后一级缓存(Last Level Cache:LLC)发生miss时,需要从内存、甚至磁盘中将需要访问的数据找回,并存储到缓存中,这一过程导致的延迟往往是前级miss的数十倍,从而极大地增加了CPU的访问延迟、降低了缓存性能。
为解决上述问题,需要对缓存中数据块的被访问概率有比较准确的预测,从而合理地设计上一级缓存驱逐的数据块的加载位置,以提升缓存性能。基于此,本发明实施例提供一种缓存数据处理方法,包括:获取上一级缓存驱逐到本级缓存的待加载数据块;根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。通过根据本级缓存中数据块的访问命中情况相对应的当前预测标识的状态预测待加载数据块的访问命中概率,进而将待加载数据块加载至对应的加载位置,实现比较准确地预测上一级缓存驱逐的数据块加载到下一级缓存中的位置。由于上一级缓存驱逐的待加载数据块是按照访问命中概率,在本级缓存中选择对应加载位置进行加载,因此最近最少被访问的数据块将加载到LRU位置,最近最常被访问的数据块将加载到MRU位置,从而可将MRU位置用于加载实际的最近最常被访问的数据块,而不会被其他的数据块占用空间,可提高缓存的命中率,降低CPU访问延迟,提高缓存性能。
作为本发明实施例公开内容的一个可选实施例,在确定与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态时,可以通过训练的方式得到。图5示出了本发明实施例提供的缓存数据处理方法的流程图,通过该缓存数据处理方法本发明实施例可实现训练得到本级缓存的当前预测标识的状态。参照图5,该流程可以包括:
步骤S10、根据数据块在本级缓存的访问命中情况,调整计数值。
数据块在本级缓存的访问命中情况,可以基于每次访问本级缓存时,访问的数据块是否在本级缓存命中而得到;基于每次访问本级缓存,数据块可能在本级缓存中命中(hit),也可能未命中(miss),进而根据数据块在本级缓存中是hit还是miss,来调整计数值。
可选的,计数值的调整规则可根据预设策略设定,当一次访问中,需访问的数据块在本级缓存命中,则计数值减小,当一次访问中,需访问的数据块在本级缓存未命中,且需访问的数据块在本级缓存中从未被访问过,则计数值增大;可选的,在一次访问中,本发明实施例可以根据本级缓存历史访问过的数据块的信息,判断需访问的数据块是否在本级缓存中从未被访问过;在更进一步的可选实现中,本级缓存历史访问过的数据块的信息可以通过预设表进行记录,在一次访问中,本发明实施例可判断需访问的数据块的信息,与预设表中记录的数据块的信息是否相匹配,以实现判断需访问的数据块是否在本级缓存中从未被访问过,如果需访问的数据块的信息,与预设表中记录的数据块的信息不匹配,则认为需访问的数据块在本级缓存中从未被访问过,如果需访问的数据块的信息,与预设表中记录的数据块的信息匹配,则认为需访问的数据块在本级缓存中被访问过。
在一种可选实现中,所述预设表记录的本级缓存历史访问过的数据块的信息可以包括:本级缓存历史访问过的数据块的tag信息,数据块所对应的本级缓存实例信息,数据块所对应的集(set)信息,数据块所对应的路(way)信息,数据块所在的本级缓存的片(slice)信息等;
预设表可以通过预设位数的地址记录本级缓存历史访问过的数据块的信息。所述地址可以包括第一地址段、第二地址段、第三地址段、第四地址段和第五地址段,其中,第一地址段可以存储数据块的tag信息,第二地址段可以存储数据块所对应的本级缓存实例信息,第三地址段可以存储数据块所对应的set信息,第四地址段可以存储数据块所对应的slice信息,第五地址段可以存储数据块所在的本级缓存的way信息。
以本级缓存为L3缓存为例,结合图6所示,预设表可通过48位的地址记录本级缓存历史访问过的数据块的信息,以图6示例的addr[47:0]为例,其中,addr[47:20]用于记录数据块的tag信息,addr[19:18]为数据块对应的实例(L3M)信息,addr[17:8]为数据块对应的set信息,addr[7:6]为数据块对应的slice信息,addr[4:2]为数据块的way信息。
其中需要说明的是,如图7所示,L3缓存总共大小是8MByte,一共有4个slice,每个L3slice的大小是2MB,每个L3slice又被进一步分成2个L3M“实例”(奇/偶):L3M-odd、L3M-even(图中虚线划分出的部分),因此本发明实施例可在预设表中记录数据块所对应的本级缓存实例,以区分数据块在所在slice中实际对应的缓存实例。
需要说明的是,上述关于预设表及其结构的说明,同样适用于缓存结构的其他层级中,在此不再赘述。
基于上述描述,在一次访问中,本发明实施例在判断需访问的数据块的信息,与预设表中记录的数据块的信息是否相匹配的一种可选实现可以为:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配,将需访问的数据块的set信息,与预设表中记录的数据块的set信息进行匹配,及将需访问的数据块的way信息,与预设表中记录的数据块的way信息进行匹配;
当预设表中存在数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
其中,在程序中或RTL(Register Transfer Level)中,tag信息指从整个地址(addr)的第20位(bit)开始直至最高有效位(Most Significant Bit:MSB)。
可以理解的是,考虑数据块的历史访问信息,数据块在本级缓存中历史从未被访问过,则该数据块极可能为本级缓存中的死块,在出现此种状况时,增大计数值,以反映本级缓存中数据块的访问命中情况,预测待加载数据块的访问命中概率。
与基于签名的命中预测器(Signature-Based Hit Predictor:SHiP)不同,本发明实施例仅需要在预设表中记录缓存的tag信息即可,而不需要像SHiP一样依赖于庞大的签名历史计数表(Signature History Counter Table:SHCT),并为每个cache line设置额外的“签名”、“输出”字段。因此,本发明实施例在硬件实施上更易实现,且不必设置复杂的cache架构。
示例的,仍以三级缓存结构中的L3缓存为例,假定计数器的初值为0,每次访问L3缓存时,数据块在L3缓存命中(hit),则计数值进行减计数;每次访问L3缓存时,数据块在L3缓存未命中(miss),并且需访问的数据块历史从未被访问过,则计数值进行加计数。
其中,所述计数值减小的值,和计数值增大的值可以相同,也可以不同,可以根据实际情况设置;优选的,计数值减小的值,和计数值增大的值不同。考虑缓存的实际运行情况,可以设置每次计数值减小的值,大于每次计数值增大的值;例如,每次计数值减小的值可以为10,而每次计数值增大的值可以为1。
步骤S20、根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
当前预测标识可以表示本级缓存中的数据块整体被访问命中的程度,当前预设标识可以为至少一个,以表示本级缓存中的数据块整体被访问命中的不同程度;当前预设标识的状态可以为真状态或假状态,当前预设标识的状态为真,则其表示的本级缓存中的数据块整体被访问命中的程度成立,当前预设标识的状态为假,则其表示的本级缓存中的数据块整体被访问命中的程度不成立。
本实施例中,所述计数值的变化可以调整,本级缓存的当前预测标识的状态,以指示当前预测标识是真状态还是假状态,从而确定当前预测标识表示的本级缓存中的数据块整体被访问命中的程度是否成立;具体的,计数值是根据数据块在本级缓存中的访问命中情况进行调整,因此根据计数值的变化,可以确定本级缓存的数据块整体的访问命中概率,从而基于计数值的变化所指示的本级缓存的数据块整体的访问命中概率,可以判断本级缓存的数据块当前整体的访问命中程度,从而调整本级缓存的当前预测标识的状态,确定当前预测标识表示的本级缓存中的数据块整体被访问命中的程度是否成立。
进而,根据本级缓存的当前预测标识的状态,可以确定本级缓存的数据块当前整体的访问命中程度,从而可以预测被上一级缓存驱逐到本级缓存的待加载数据块整体被访问概率,为预测待加载数据块的加载位置提供了基础。
可选的,步骤S20可以包括:当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;当所述计数值小于或等于0时,配置所述当前预测标识的状态为假,所述阈值大于0。
本发明实施例通过调整本级缓存的当前预测标识的状态,以标识本级缓存的预测结果。示例的,当计数值变化至特定的阈值时,即将本级缓存的当前预测标识调整为对应状态,例如,以计数值为20和0时作为状态改变的阈值,当计数值为20时,配置所述当前预测标识的状态为真,当计数值为0时,配置所述当前预测标识的状态为假。仍以三级缓存结构中的L3缓存为例,在对应计数器中的计数值达到设定的阈值时,对应的状态为真,则将相应的当前预测标识(dead flag)拉高(isStrongDead或isWeakDead)。
其中,设定计数值小于或等于0的时候才令当前预测标识为“假”的目的在于,让当前预测标识为“真”的状态维持一段时间。从物理意义上来讲,仍以三级缓存结构中的L3缓存为例,L3cache不断miss,则计数不断增长。在达到设定的阈值之后,有可能会发生L3命中(hit),从而计数会小于阈值。甚至有可能发生连续命中,造成计数连续“减”的情形。对于这种情况下,考虑标识达到真说明很长一段时间内确实L3持续地未命中,因此,不改变当前预测标识的状态,即仍旧维持当前预测标识达到“真”的状态,从而对L3之后的命中有一定的容忍,只要计数未减到小于或等于0,标识仍旧为真(仍旧将数据块视作是死块)。
可选的,所述计数值可以是为本级缓存中全局计数器的计数值。本发明实施例该全局计数器每片每核(per slice per core)共享,即一个CPU核心在本级缓存中的一个slice(片)中的数据块(block)共享全局计数器。
本级缓存中的全局计数器可以为一个,也可以为多个;对应的,计数值也可以为一个或多个。设置多个计数值,可以基于不同计数规则实现不同的策略,以对数据块的命中概率进行不同程度的预测。
可选的,计数值可以为2个,包括第一计数值和第二计数值,第一计数值可以是第一计数器的计数值,第二计数值可以是第二计数器的计数值;第一计数器对应的数据块和第二计数器对应的数据块可以相同,例如第一计数器和第二计数器为一个CPU核心在本级缓存中的一个片的数据块所共享的计数器;第一计数器对应的数据块和第二计数器对应的数据块也可以不同,例如第一计数器和第二计数器为不同CPU核心在本级缓存中的不同片对应的不同计数器;
示例的,在一种可选的第一计数值的计数规则下,在本级缓存的访问命中,则第一计数器的第一计数值减计数,在本级缓存的访问未命中,且对应的数据块在本级缓存历史从未被访问过,则第一计数器的第一计数值加计数,第一计数值减的数值和加的数值可以不同,例如第一计数值每次减计数时,减10,每次加计数时,加1;
在一种可选的第二计数值的计数规则下,在本级缓存的访问命中,则第二计数器的第二计数值减计数,在本级缓存的访问未命中,且对应的数据块在本级缓存历史从未被访问过,则第二计数器的第二计数值加计数,第二计数值减的数值和加的数值可以不同,例如第二计数值每次减计数时,减30,每次加计数时,加1。
可选的,当设置多个计数值时,可以设置多个预测标识对应多个计数值。以三级缓存结构中的L3缓存为例,可以引入两个预测标识:cntStrongDead和cntWeakDead,分别用于刻画本级缓存中数据块极长时间未命中的状态(对应数据块的age=3的情况)、和本级缓存中数据块较长时间未命中的状态(对应数据块的age=2的情况);
以第一计数值对应cntWeakDead,第二计数值对应cntStrongDead为例,可以设定第一计数值为20作为当前预测标识cntWeakDead的状态为真,第二计数值为50时作为当前预测标识cntStrongDead的状态为真进行判断。可以看出,第一计数值统计的数据块的命中概率大于第二计数值统计的数据块的命中概率,从而可以根据对应的逻辑对当前预测标识的状态进行确定。
需要说明的是,本实施例中,所述训练过程与待加载数据块的加载过程可以同时进行,在所述训练过程中,不断调整当前预测标识的状态。
通过训练得到当前预测标识的状态,进而可以根据本级缓存的当前预测标识的状态,确定待加载数据块的age值,进而将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
需要说明的是,本发明实施例中,对本级缓存数据块的访问命中情况的训练,可以是针对本级缓存中所有数据块的训练,也可以是针对本级缓存中部分数据块的训练。例如:训练可以仅针对SamplingSet={index|index=33*i,i∈N}的采样点进行。优选的,本实施例针对本级缓存中特定采样点对应的数据块进行训练,从而避免对所有数据块的训练造成的软硬件负担过大的问题。
作为本发明实施例公开内容的一个可选实施例,图8示出了本发明实施例提供的另一缓存数据处理方法的流程图,通过该数据处理方法本发明实施例可实现待加载数据块的加载。需要说明的是,所述缓存数据处理方法可以应用于整个缓存结构,也可以仅应用于最后一级缓存结构。参照图8,该流程可以包括:
步骤S30、获取上一级缓存驱逐到本级缓存的待加载数据块;
本级缓存为比上一级缓存高一层级的缓存。示例的,在三级缓存结构中,上一级缓存可以为L1缓存或L2缓存,对应的,上一级缓存为L1缓存时,本级缓存为L2缓存,上一级缓存为L2缓存时,本级缓存为L3缓存。
在上一级缓存驱逐数据块时,本级缓存需要将该数据块作为待加载数据块,通过预设的规则将其加载至对应的位置。
步骤S40、根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态根据本级缓存中数据块的访问命中情况相对应;
可选的,本实施例中可以通过训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。在本申请的其他实施方式中,还可以通过采用其他方式得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态,如通过对本级缓存中数据块的访问命中情况的表单进行查询等。
可选的,本级缓存的当前预测标识的状态种类可以为一个或多个,该数量可以依据计数值的数量而定。示例的,以计数值为2个为例,所述当前预测标识可以包括分别对应不同计数值的第一预测标识和第二预测标识两类,第一预测标识的状态可以为真或假,第二预测标识的状态可以为真或假,对应不同状态,对应不同的预测结果,进而根据不同的预测结果,确定待加载数据块的age值。
所述age值与所述当前预测标识的状态相对应,以第一预测标识对应age值为2,第二预测标识对应age值为3为例,当第一预测标识的状态为真时,确定待加载数据块的age值为2,当第二预测标识的状态为真时,确定待加载数据块的age值为3。其中,当前预测标识的状态与age值之间的对应关系可以根据不同的策略设置不同的逻辑,从而根据对应的状态确定待加载数据块的age值,进而将待加载数据块加载至对应的位置。
仍以三级缓存结构中的L3缓存为例,如果第一预测标识isWeakDead=true,则令age=2;如果第二预测标识isStrongDead=true,则令age=3。
步骤S50、将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
本实施例中,缓存中的不同位置对应不同的age值。示例的,可以采用Re-reference Prediction Value(RRPV)的表示方式,参考图4示出RRPV表示方式下的age值与缓存位置的对照示意图,age值等于‘0’,对应的缓存位置为MRU位置;age值等于‘3’,对应的缓存位置为LRU位置;age值等于‘1’,对应的缓存位置为MRU-1位置,age值等于‘2’,则对应LRU+1位置。
可以看出,本实施例根据本级缓存的当前预测标识的状态,预测待加载数据块的命中概率,确定待加载数据块的age值,进而将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,避免待加载数据块被机械的加载到最近最常访问(Most-RecentlyUsed:MRU)的位置造成的CPU访问延迟和系统性能的降低。
由于死区的判定没有绝对的标准,不同的应用对于确定死区边界的要求不同。因此,在另一种可选的实现中,可以将本级缓存的当前预测标识分为两个不同的预测标识,并对应不同的计数值和不同的计数规则。
可选的,图7示出了缓存数据处理方法中步骤S10的流程图,通过该数据处理方法本发明实施例可实现计数值为两个时的训练过程,以应对不同的应用对于确定死区边界的要求。其中,计数值包括第一计数值和第二计数值,对应的计数器可以为第一计数器和第二计数器。仍以三级缓存结构中的L3缓存为例,第一计数值可以为对应cntWeakDead标识的计数,第二计数值可以为对应cntStrongDead的计数。
优选的,步骤S10可以包括:
步骤S11、根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数值;
其中,第一预设参数组用于描述对应第一计数值的预设计数规则,第一预设参数组中对应所述访问命中情况的第一参数值可以包括访问命中时的步进数和访问未命中时的步进数,从而根据对应的参数值调整第一计数值。可选的,所述第一参数值包括第一步进值和第二步进值,其中,第一步进值对应访问命中时的步进数,第二步进值对应访问未命中,且数据块在本级缓存历史从未被访问时的步进数。
可选的,步骤S11可以包括;
当访问命中本级缓存中的数据块时,将所述第一计数值的值减小第一步进值;当访问未命中本级缓存中的数据块时,且需访问的数据块在所述本级缓存中从未被访问过,将所述第一计数值的值增大第二步进值。
具体的,在本级缓存的访问结束时,获取访问结果,当访问命中本级缓存中的数据块时,将所述第一计数值的值减小第一步进值;当访问未命中本级缓存中的数据块时,查询预设表中需访问的数据块在本级缓存中的历史访问情况,确定所述需访问的数据块在本级缓存中从未被访问过时,将第一计数值的值增大第二步进值。
步骤S12、根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数值;
其中,第二预设参数组用于描述对应第二计数值的预设计数规则。第二预设参数组中对应所述访问命中情况的第二参数值可以包括访问命中时的步进数和访问未命中时的步进数,从而根据对应参数的参数值配置第二计数值。可选的,所述第二预设参数组包括第三步进值和第四步进值,其中,第三步进值对应访问命中时的步进数,第四步进值对应访问未命中时,且数据块在本级缓存历史从未被访问的步进数。
并且,需要说明的是,所述第一参数值不同于所述第二参数值。可选的,设置第三步进值大于第一步进值,从而使得第一预设参数组描述的计数规则下的访问命中概率大于第二预设参数组描述的计数规则。
可选的,步骤S12可以包括;
当访问命中本级缓存中的数据块时,将所述第二计数值的值减小第三步进值,所述第三步进值大于所述第一步进值;当访问未命中本级缓存中的数据块时,且需访问的数据块在所述本级缓存中从未被访问过,将所述第二计数值的值增大第四步进值。
具体的,在本级缓存的访问结束时,获取访问结果,当访问命中本级缓存中的数据块时,将所述第二计数值的值减小第三步进值;当访问未命中本级缓存中的数据块时,查询预设表中需访问的数据块的历史访问情况,确定所述需访问的数据块从未被访问过时,将第二计数值的值增大第四步进值。
其中,计数值为多个时,对本级缓存的一次访问即对应多个计数值的调整。需要说明的是,本级缓存的访问结束时,查询预设表中所述数据块的历史访问情况的逻辑可以仅执行一次,在得到对应的结果后,根据该结果对第一计数值和第二计数值分别执行对应的逻辑。
可选的,在计数值为两个时,所述当前预测标识包括对应第一计数值的第一预测标识和对应第二计数值的第二预测标识,所述第一预设参数组还包括对应第一预测标识的第一阈值,所述第二预设参数组还包括对应第二预测标识的第二阈值。
具体的,步骤S20可以包括:
当所述第一计数值大于或等于第一阈值时,配置所述当前预测标识的第一预测标识的状态为真;当所述第二计数值大于或等于第二阈值时,配置所述当前预测标识的第二预测标识的状态为真;
其中,由于第一预设参数组描述的计数规则下的访问命中概率大于第二预设参数组描述的计数规则,因此,所述第一预测标识对应的访问命中概率大于第二预测标识对应的访问命中概率,对应的,所述第一预测标识的状态为真时对应的age值小于所述第二预测标识的状态为真时对应的age值。
可选的,所述第一阈值可以大于所述第二阈值。当所述第一计数值大于或等于第一阈值时,配置所述当前预测标识的第一预测标识的状态为真,进而配置所述待加载数据块的age值为对应第一预测标识的状态为真时的age值;当所述第二计数值大于或等于第二阈值时,配置所述当前预测标识的第二预测标识的状态为真,进而配置所述待加载数据块的age值为对应第二预测标识的状态为真时的age值。
对应第一预测标识和第二预测标识的状态为假的状态,步骤S20可以包括:
当所述第一计数值小于或等于0时,配置所述当前预测标识的第一预测标识的状态为假;当所述第二计数值小于或等于0时,配置所述当前预测标识的第二预测标识的状态为假;
对应的,当所述第一计数值小于或等于0时,配置所述当前预测标识的第一预测标识的状态为假,进而配置所述待加载数据块的age值为对应第一预测标识的状态为假时的age值;当所述第二计数值小于或等于0时,配置所述当前预测标识的第二预测标识的状态为假,进而配置所述待加载数据块的age值为对应第二预测标识的状态为假时的age值。
在一种可选的实现中,考虑预设的判定阈值以及步进值都基于经验值,不适用于所有的场景,因此,本发明实施例还采用了遍历参数组合的方式,筛选出预设参数组中各参数的最优参数值作为参数的最终取值。
可选的,可以对所述第一预设参数组中各参数的候选取值进行测试回归,得到所述第一预设参数组中各参数的最终取值;以及,对所述第二预设参数组中各参数的候选取值进行测试回归,得到所述第二预设参数组中各参数的最终取值。
在一个可选的示例中,可以同时对第一预设参数组和第二预设参数组中的各参数进行测试回归。
具体的,可以设定所述第一步进值的取值范围为{8,16},所述第二步进值的取值范围为{1},所述第三步进值的取值范围为{64,128},所述第四步进值的取值范围为{1},所述第一阈值的取值范围为{128,256},所述第二阈值的取值范围为{256,512}。其中,需要说明的是,所述{8,16},指的是8至16范围内的所有整数(包含端点值),对应的,{64,128}指的是64至128范围内的所有整数(包含端点值),以此类推。
对应的,对所述第一步进值、第二步进值、第三步进值、第四步进值、第一阈值和第二阈值的可选参数值进行测试回归,得到最优参数组合;所述最优参数组合包括第一步进值、第二步进值、第三步进值、第四步进值、第一阈值和第二阈值对应的最优参数值,并将所述最优参数值作为各参数的最终取值。
仍以三级缓存结构中的L3缓存为例,第一预设参数组为针对Weak Dead的参数组合:{thdWeakDead,decWeakDead,incWeakDead}。其中,thdWeakDead表示全局计数器的上界;decWeakDead表示每一次L3hit的减计数步进;incWeakDead表示每一次L3miss并且该存储块从未被访问过的加计数步进。第二预设参数组为针对Strong Dead的参数组合:{thdStrongDead,decStrongDead,incStrongDead}。其中,thdStrongDead表示全局计数器的上界;decStrongDead表示每一次L3hit的减计数步进;incStrongDead表示每一次L3miss并且该存储块从未被访问过的加计数步进。
具体的,为每一个参数设定一个取值集合,将上述6种参数的所有可能取值进行组合,在包含SPEC CPU2006(cfp2006/cint2006)、SPEC CPU2017(cfp2017/cint2017)、CoreBench、Memory这4大类标准性能测试模板上进行回归,根据每个时钟周期的执行指令数(Instructions per cycle:IPC)、每一千条指令L3的丢失次数(L3Miss Count perKilo-Instructions:L3_MPKI)、L3的丢失率(L3Miss Ratio)来筛选出最优参数组合。其中,SPEC CPU2006(cfp2006/cint2006)、SPEC CPU2017(cfp2017/cint2017)、CoreBench、Memory为此4大类标准性能测试模板的名称,本发明在此不再赘述。
可选的,图8示出了本发明实施例提供的缓存数据处理方法中步骤S40的流程图,在计数值为两个,所述当前预测标识包括对应第一计数值的第一预测标识和对应第二计数值的第二预测标识时,通过该数据处理方法本发明实施例可实现待加载数据块的加载。
优选的,步骤S40可以包括:
步骤S41、获取所述本级缓存的当前预测标识的状态;
步骤S42、当所述第一预测标识的状态为真时,配置所述待加载数据块的age值为第二age值;
步骤S43、当所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
步骤S44、当所述第一预测标识的状态为真,且所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
所述第三age值大于所述第二age值。可选的,所述第三age值可以为3,所述第二age值可以为2。
仍以三级缓存结构中的L3缓存为例,如果第一预测标识isWeakDead=true,则令age=2;如果第二预测标识isStrongDead=true,则令age=3;如果第一预测标识isWeakDead=true,且第二预测标识isStrongDead=true,则令age=3。
参考图9示出的本发明实施例提供的缓存数据处理方法中步骤S40的另一实现流程图,步骤S40还可以包括:
步骤S45、当所述第一预测标识的状态为假,且所述第二预测标识的状态为假时,配置所述待加载数据块的age值为第一age值;其中,所述第一age值小于所述第二age值。
可选的,所述第一age值可以为0或者1。仍以三级缓存结构中的L3缓存为例,设第一age值为0,如果第一预测标识isWeakDead=false,且第二预测标识isStrongDead=false,则令age=0;
在一个可选的实施方式中,对于非死数据块(non-dead blocks),即age=0或age=1的数据块,引入forceMruOnNonDeadBlock的开关。若开关打开,并且当前block对应的age<=1,则令age=0。即开关打开的情况下,只要是“非死”的块,一律认定其被访问的频率最高,加载到MRU位置。
优选的,步骤S50可以包括:
步骤S51、当所述age值为第三age值时,将所述待加载数据块加载到本级缓存中的最近最少被访问(LRU)位置;
步骤S52、当所述age值为第二age值时,将所述待加载数据块加载到本级缓存中LRU+1位置。
步骤S53、当所述age值为第一age值时,将所述待加载数据块加载到本级缓存中最近最常访问(MRU)位置。
可以看出,通过当前预测标识的状态预测待加载数据块的访问命中概率,进而将待加载数据块加载至对应的加载位置,避免待加载数据块被机械的加载到最近最常访问(Most-Recently Used:MRU)的位置造成的CPU访问延迟和系统性能的降低。
考虑多核场景下,存在不同的核互相之间修改各自先前判定的数据块的“年龄(age)”的问题,在一种可选的实现中,引入处理器核ID(coreID)对setReference、getReference的机制进行了修正。
参考图10示出的本发明实施例提供的另一缓存数据处理方法的流程图,所述缓存数据处理方法还包括:
步骤S60、根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
所谓的引用(reference)指的是存储块是否被访问过。现有技术的设计在本地会开辟一块缓冲区,存放已经被访问过的数据块(block)的set/way以及是否被访问过的标志位“referenced”。
在设置对应所述本级缓存的数据块引用的标志位时,对处理器核ID进行判断,使得设置标志位以处理器核ID为前提,避免不同处理器核ID访问同一缓存数据块,解决不同的处理器核互相之间修改各自先前判定的数据块的“年龄(age)”的问题。
可选的,可以将处理器核ID(coreID)增至缓冲区的键(key)组中,每次setReference都以coreID为前提,令特定的core独占特定的set/way,从而确保dead-block预测和实施的准确性。
可选的,参考图11示出的本发明实施例提供的缓存数据处理方法的流程图,步骤S60包括:
步骤S61、查询对应所述本级缓存的数据块引用的键组;
在访问结束时,根据数据块(block)的set/way查询对应的键组。
步骤S62、判断所述键组中的处理器核ID与已访问处理器核ID是否一致;
由于处理器核ID(coreID)已增至缓冲区的键(key)组中,判断所述键组中的处理器核ID与待访问处理器核ID是否一致,即可判断已访问处理器核是否独占该set/way。
步骤S63、如果是,将标志位压入所述数据块引用。
继续参考图10,所述缓存数据处理方法还包括:
步骤S70、根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
在读出对应所述本级缓存的数据块引用的标志位时,对处理器核ID进行判断,使得读出标志位以处理器核ID为前提,避免不同处理器核ID访问同一缓存数据块,解决不同的处理器核互相之间修改各自先前判定的数据块的“年龄(age)”的问题。
可选的,将处理器核ID(coreID)增至缓冲区的键(key)组中,每次getReference都以coreID为前提,令特定的core独占特定的set/way,从而确保dead-block预测和实施的准确性。
可选的,参考图12示出的本发明实施例提供的另一可选缓存数据处理方法的流程图,步骤S70包括:
步骤S71、查询对应所述本级缓存的数据块引用的键组;
在开始访问时,根据数据块(block)的set/way查询对应的键组。
步骤S72、判断所述键组中的处理器核ID与待访问处理器核ID是否一致;
由于处理器核ID(coreID)已增至缓冲区的键(key)组中,判断所述键组中的处理器核ID与待访问处理器核ID是否一致,即可判断待访问处理器核是否独占该set/way。
步骤S73、如果是,读出所述本级缓存的数据块引用的标志位。
可以看出,根据处理器核ID设置或读出数据块引用的标志位,可以使特定的处理器核独占特定的数据块,解决不同的核互相之间修改各自先前判定的数据块的“年龄(age)”的问题。
作为本发明实施例公开内容的又一个可选实施例,图15示出了本发明实施例提供的缓存数据处理电路的结构图。参照图15,该电路可以包括:
获取单元1,用于获取上一级缓存驱逐到本级缓存的待加载数据块;
确定单元3,用于根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;
加载单元4,用于将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
可选的,图16示出了本发明实施例提供的另一缓存数据处理电路的结构图,该电路还包括:训练单元2,用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。
可选的,图17示出了本发明实施例提供的训练单元的结构图,所述训练单元2包括计数器21;
所述训练单元2用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态,包括:
根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值;
根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
可选的,所述训练单元2用于根据数据块在本级缓存的访问命中情况,调整计数器的计数值,包括:
当访问命中本级缓存中的数据块时,所述计数器22减小所述计数值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,所述计数器22增大所述计数值;
可选的,所述获取单元还用于:获取所述待加载数据块的历史命中情况,并将所述历史命中情况及所述待加载数据块的标识(tag)存入预设表中;
所述训练单元用于当访问未命中本级缓存中的数据块,且需访问的数据块在本级缓存中从未被访问过,增大所述计数器的计数值,包括:当访问未命中本级缓存中的数据块时,判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,所述预设表记录本级缓存历史访问过的数据块信息;若所述需访问的数据块的信息与预设表中记录的数据块的信息不匹配,则所述需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
可选的,所述训练单元用于判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,包括:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配;
将需访问的数据块的set信息与所述预设表中记录的数据块的set信息进行匹配;
将需访问的数据块的way信息与所述预设表中记录的数据块的way信息进行匹配;
当所述预设表中存在的数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
可选的,所述训练单元用于根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括:
当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;
当所述计数值小于或等于0时,配置所述当前预测标识的状态为假;
其中,所述阈值大于0。
可选的,继续参考图17,所述训练单元2包括:加法逻辑子单元2a、减法逻辑子单元2b和计数器21;
参考图18和图19示出了本发明实施例提供的训练单元的结构图,加法逻辑子单元2a包括第一比较器23,加法器22,第一多路选择器24,第二多路选择器25;
其中,所述第一比较器23用于读取计数器21的计数值,比较当前计数值是否大于或等于阈值,并将比较结果发送至第一多路选择器24和第二多路选择器25;
加法器22用于读取计数器21的计数值,并将计数值加上预设的步进值,并将加法结果发送至第二多路选择器25;
所述第一多路选择器24根据第一比较器23的比较结果输出对应的状态,其中,在结果为真时,取1对应的状态TRUE,以isStrongDead为例,即isStrongDead=TRUE;在结果为假时,取0对应的状态FALSE,以isStrongDead为例,isStrongDead=FALSE。
所述第二多路选择器25根据第一比较器23的比较结果输出对应的数值并写入计数器21,其中,在结果为真时,取1对应的thd值,结果为假时,取0对应的加法结果。
减法逻辑子单元2b包括第二比较器26,减法器27,第三多路选择器28,第四多路选择器29,
其中,所述第二比较器26用于读取计数器21的计数值,比较当前计数值是否小于或等于0,并将比较结果发送至第三多路选择器28和第四多路选择器29;
减法器27用于读取计数器21的计数值,并将计数值减去预设的步进值,并将减法结果发送至第四多路选择器29;
所述第三多路选择器28根据第二比较器26的比较结果输出对应的状态,其中,在结果为真时,取1对应的状态FALSE,以isStrongDead为例,即isStrongDead=FALSE;在结果为假时,取0对应的状态TRUE,以isStrongDead为例,isStrongDead=TRUE。
所述第四多路选择器29根据第二比较器26的比较结果输出对应的数值并写入计数器21,其中,在结果为真时,取1对应的0值,结果为假时,取0对应的减法结果。
其中,减法器也可以认为是加法器,以第二个操作数的符号位是1,表示负数,从而实现减法运算。其中,当约定计数值采用有符号数来表示,则最高位为1表示负数,从而做减法运算;为0则是正数,做加法。因此,本发明的其他实施例中的减法器和加法器可以复用一个加法器。
可选的,图20示出了本发明实施例提供的另一训练单元的结构图,所述计数器为2个,分别为第一计数器21a和第二计数器21b,所述第一计数器21a的计数值为第一计数值,所述第二计数器21b的值为第二计数值:
所述训练单元2用于根据数据块在本级缓存的访问命中情况,调整计数值,包括:
根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数器21a的第一计数值;
根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数器21b的第二计数值;
所述第一预设参数组中对应所述访问命中情况的参数值不同于所述第二预设参数组中对应所述访问命中情况的参数值。
可选的,所述当前预测标识包括对应第一计数值的第一预测标识和对应第二计数值的第二预测标识,所述第一预设参数组还包括对应第一预测标识的第一阈值,所述第二预设参数组还包括对应第二预测标识的第二阈值;
所述训练单元2用于根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括;
当所述第一计数值大于或等于第一阈值时,配置所述第一预测标识的状态为真;
当所述第二计数值大于或等于第二阈值时,配置所述第二预测标识的状态为真。
可选的,所述确定单元用于根据本级缓存的当前预测标识的状态,确定待加载数据块的age值,包括:
获取所述本级缓存的当前预测标识的状态;
当所述第一预测标识的状态为真时,配置所述待加载数据块的age值为第二age值;
当所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
当所述第一预测标识的状态为真,且所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
所述第三age值大于所述第二age值。
可选的,所述加载单元用于将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,包括:
当所述age值为第三age值时,将所述待加载数据块加载到本级缓存中的最近最少被访问(Least-Recently Used:LRU)位置;
当所述age值为第二age值时,将所述待加载数据块加载到本级缓存中LRU+1位置。
可选的,所述缓存数据处理电路还包括:
标志位设置单元,用于根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
标志位读出单元,用于根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
可选的,所述标志位设置单元,用于根据所述处理器核ID设置对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与已访问处理器核ID是否一致;
如果是,将标志位压入所述数据块引用。
可选的,所述标志位读出单元,用于根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与待访问处理器核ID是否一致;
如果是,读出所述本级缓存的数据块引用的标志位。
本发明实施例还提供一种处理器,该处理器包括上述实施例描述的缓存数据处理电路。
本发明实施例还提供一种芯片,该芯片包括上述实施例描述的处理器。
上述所述的逻辑电路单元的细化逻辑实现,可参照方法部分的相应说明,说明书中关联的各部分均可对应参照,此处不再赘述
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (32)
1.一种缓存数据处理方法,其特征在于,所述方法包括:
获取上一级缓存驱逐到本级缓存的待加载数据块;
根据本级缓存的当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;
将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。
3.根据权利要求2所述的方法,其特征在于,所述训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态的步骤包括:
根据数据块在本级缓存的访问命中情况,调整计数值;
根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
4.根据权利要求3所述的方法,其特征在于,所述根据数据块在本级缓存的访问命中情况,调整计数值,包括:
当访问命中本级缓存中的数据块时,减小所述计数值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
5.根据权利要求4所述的方法,其特征在于,所述当访问未命中本级缓存中的数据块,且需访问的数据块在本级缓存中从未被访问过,增大所述计数值,包括:
当访问未命中本级缓存中的数据块时,判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,所述预设表记录本级缓存历史访问过的数据块的信息;
若所述需访问的数据块的信息与所述预设表中记录的数据块的信息不匹配,则所述需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
6.根据权利要求5所述的方法,其特征在于,所述判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,包括:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配;
将需访问的数据块的set信息与所述预设表中记录的数据块的set信息进行匹配;
将需访问的数据块的way信息与所述预设表中记录的数据块的way信息进行匹配;
当所述预设表中存在的数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
7.根据权利要求3-6任一项所述的方法,其特征在于,所述根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括;
当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;
当所述计数值小于或等于0时,配置所述当前预测标识的状态为假;
其中,所述阈值大于0。
8.根据权利要求3所述的方法,其特征在于,所述计数值包括第一计数值和第二计数值;
所述根据数据块在本级缓存的访问命中情况,调整计数值包括:
根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数值;
根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数值。
9.根据权利要求8所述的方法,其特征在于,所述第一参数值包括第一步进值和第二步进值;
所述根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数值,包括;
当访问命中本级缓存中的数据块时,将所述第一计数值的值减小第一步进值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,将所述第一计数值的值增大第二步进值。
10.根据权利要求9所述的方法,其特征在于,所述第二参数值包括第三步进值和第四步进值;
所述根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数值,包括;
当访问命中本级缓存中的数据块时,将所述第二计数值的值减小第三步进值,所述第三步进值大于所述第一步进值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,将所述第二计数值的值增大第四步进值。
11.根据权利要求8所述的方法,其特征在于,所述当前预测标识包括对应第一计数值的第一预测标识和对应第二计数值的第二预测标识,所述第一预设参数组还包括对应第一预测标识的第一阈值,所述第二预设参数组还包括对应第二预测标识的第二阈值;
所述根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括;
当所述第一计数值大于或等于第一阈值时,配置所述第一预测标识的状态为真;
当所述第二计数值大于或等于第二阈值时,配置所述第二预测标识的状态为真。
12.根据权利要求8-11任一项所述的方法,其特征在于,所述方法还包括:
对所述第一预设参数组中各参数的候选取值进行测试回归,得到所述第一预设参数组中各参数的最终取值;和/或,对所述第二预设参数组中各参数的候选取值进行测试回归,得到所述第二预设参数组中各参数的最终取值。
13.根据权利要求11所述的方法,其特征在于,所述根据本级缓存的当前预测标识的状态,确定待加载数据块的age值,包括:
获取所述本级缓存的当前预测标识的状态;
当所述第一预测标识的状态为真时,配置所述待加载数据块的age值为第二age值;
当所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
当所述第一预测标识的状态为真,且所述第二预测标识的状态为真时,配置所述待加载数据块的age值为第三age值;
所述第三age值大于所述第二age值。
14.根据权利要求13所述的方法,其特征在于,所述将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,包括:
当所述age值为第三age值时,将所述待加载数据块加载到本级缓存中的LRU位置;
当所述age值为第二age值时,将所述待加载数据块加载到本级缓存中LRU+1位置;
其中,所述LRU+1位置存放的数据块的被访问频率高于所述LRU位置存放的数据块的被访问频率。
15.根据权利要求11所述的方法,其特征在于,所述根据本级缓存的当前预测标识的状态,确定待加载数据块的age值包括:
获取所述本级缓存的当前预测标识的状态;
当所述第一预测标识的状态为假,且所述第二预测标识的状态为假时,配置所述待加载数据块的age值为第一age值;其中,所述第一age值小于所述第二age值;
所述将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置,包括:
当所述age值为第一age值时,将所述待加载数据块加载到本级缓存中的MRU位置;
所述MRU位置存放的数据块的被访问频率高于本级缓存中其他位置存放的数据块的被访问频率。
16.根据权利要求2所述的方法,其特征在于,所述根据数据块在本级缓存的访问命中情况,调整计数值,包括:
根据本级缓存中采样点对应的数据块的访问命中情况,调整计数值。
17.根据权利要求1所述的方法,其特征在于,还包括:
根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
18.根据权利要求17所述的方法,其特征在于,所述根据处理器核ID设置对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与已访问处理器核ID是否一致;
如果是,将标志位压入所述数据块引用。
19.根据权利要求17所述的方法,其特征在于,所述根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位,包括:
查询对应所述本级缓存的数据块引用的键组;
判断所述键组中的处理器核ID与待访问处理器核ID是否一致;
如果是,读出所述本级缓存的数据块引用的标志位。
20.一种缓存数据处理电路,其特征在于,包括:
获取单元,用于获取上一级缓存驱逐到本级缓存的待加载数据块;
确定单元,用于根据本级缓存的所述当前预测标识的状态,确定待加载数据块的age值;其中,所述当前预测标识的状态与本级缓存中数据块的访问命中情况相对应;
加载单元,用于将所述待加载数据块加载到本级缓存中与所述age值对应的加载位置。
21.根据权利要求20所述的缓存数据处理电路,其特征在于,还包括:
训练单元,用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态。
22.根据权利要求21所述的缓存数据处理电路,其特征在于,所述训练单元包括计数器;
所述训练单元用于训练得到与本级缓存中数据块的访问命中情况相对应的当前预测标识的状态,包括:
根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值;
根据所述计数值的变化,调整本级缓存的当前预测标识的状态。
23.根据权利要求22所述的缓存数据处理电路,其特征在于,所述训练单元用于根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值,包括:
当访问命中本级缓存中的数据块时,减小所述计数器的计数值;
当访问未命中本级缓存中的数据块时,且需访问的数据块在本级缓存中从未被访问过,增大所述计数器的计数值。
24.根据权利要求23所述的缓存数据处理电路,其特征在于:所述训练单元用于当访问未命中本级缓存中的数据块,且需访问的数据块在本级缓存中从未被访问过,增大所述计数器的计数值,包括:
当访问未命中本级缓存中的数据块时,判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,所述预设表记录本级缓存历史访问过的数据块的信息;
若所述需访问的数据块的信息与预设表中记录的数据块的信息不匹配,则所述需访问的数据块在本级缓存中从未被访问过,增大所述计数值。
25.根据权利要求24所述的缓存数据处理电路,其特征在于,所述训练单元用于判断需访问的数据块的信息与预设表中记录的数据块的信息是否相匹配,包括:
将需访问的数据块的tag信息与预设表中记录的数据块的tag信息进行匹配;
将需访问的数据块的set信息与所述预设表中记录的数据块的set信息进行匹配;
将需访问的数据块的way信息与所述预设表中记录的数据块的way信息进行匹配;
当所述预设表中存在的数据块的tag信息,set信息,way信息均与需访问的数据块相匹配时,则需访问的数据块在本级缓存中被访问过,否则,需访问的数据块在本级缓存中从未被访问过。
26.根据权利要求22-25任一项所述的缓存数据处理电路,其特征在于,所述训练单元用于根据所述计数值的变化,调整本级缓存的当前预测标识的状态,包括:
当所述计数值大于或等于阈值时,配置所述当前预测标识的状态为真;
当所述计数值小于或等于0时,配置所述当前预测标识的状态为假;
其中,所述阈值大于0。
27.根据权利要求22所述的缓存数据处理电路,其特征在于,所述训练单元包括:加法逻辑子单元、减法逻辑子单元和计数器;
所述加法逻辑子单元包括第一比较器,加法器,第一多路选择器,第二多路选择器;
其中,所述第一比较器用于读取所述计数器的计数值,比较当前计数值是否大于或等于阈值,并将比较结果发送至所述第一多路选择器和所述第二多路选择器;
所述加法器用于读取所述计数器的计数值,将计数值加上预设的步进值,并将加法结果发送至所述第二多路选择器;
所述第一多路选择器用于根据所述第一比较器的比较结果输出对应的状态;
所述第二多路选择器用于根据第一比较器的比较结果输出对应的数值并写入计数器;
所述减法逻辑子单元包括第二比较器,减法器,第三多路选择器,第四多路选择器;
其中,所述第二比较器用于读取计数器的计数值,比较当前计数值是否小于或等于0,并将比较结果发送至第三多路选择器和第四多路选择器;
减法器用于读取计数器的计数值,并将计数值减去预设的步进值,并将减法结果发送至第四多路选择器;
所述第三多路选择器用于根据第二比较器的比较结果输出对应的状态;
所述第四多路选择器用于根据第二比较器的比较结果输出对应的数值并写入计数器。
28.根据权利要求22所述的缓存数据处理电路,其特征在于,所述计数器包括第一计数器和第二计数器,所述第一计数器的计数值为第一计数值,所述第二计数器的值为第二计数值:
所述训练单元用于根据数据块在本级缓存的访问命中情况,调整所述计数器的计数值,包括:
根据本级缓存中数据块的访问命中情况和第一预设参数组中对应所述访问命中情况的第一参数值,调整所述第一计数器的第一计数值;
根据本级缓存中数据块的访问命中情况和第二预设参数组中对应所述访问命中情况的第二参数值,调整所述第二计数器的第二计数值。
29.根据权利要求20所述的缓存数据处理电路,其特征在于,还包括:
标志位设置单元,用于根据处理器核ID设置对应所述本级缓存的数据块引用的标志位;
标志位读出单元,用于根据所述处理器核ID读出对应所述本级缓存的数据块引用的标志位。
30.根据权利要求22所述的缓存数据处理电路,其特征在于,所述计数器为全局计数器,所述全局计数器为每片每核共享。
31.一种处理器,其特征在于,包括权利要求20至30任一项所述的缓存数据处理电路。
32.一种芯片,其特征在于,包括权利要求31所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121905.3A CN111143245B (zh) | 2019-11-15 | 2019-11-15 | 一种缓存数据处理方法、电路、处理器及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121905.3A CN111143245B (zh) | 2019-11-15 | 2019-11-15 | 一种缓存数据处理方法、电路、处理器及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143245A true CN111143245A (zh) | 2020-05-12 |
CN111143245B CN111143245B (zh) | 2021-07-13 |
Family
ID=70517090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911121905.3A Active CN111143245B (zh) | 2019-11-15 | 2019-11-15 | 一种缓存数据处理方法、电路、处理器及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143245B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6170054B1 (en) * | 1998-11-16 | 2001-01-02 | Intel Corporation | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache |
CN101052164A (zh) * | 2007-05-11 | 2007-10-10 | 中兴通讯股份有限公司 | 对点对点短消息话单处理速度进行动态调整的方法 |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
US9734070B2 (en) * | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
CN107291635A (zh) * | 2017-06-16 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种缓存替换方法和装置 |
CN108829343A (zh) * | 2018-05-10 | 2018-11-16 | 中国科学院软件研究所 | 一种基于人工智能的缓存优化方法 |
CN110362377A (zh) * | 2018-04-09 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 虚拟机的调度方法和装置 |
-
2019
- 2019-11-15 CN CN201911121905.3A patent/CN111143245B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6170054B1 (en) * | 1998-11-16 | 2001-01-02 | Intel Corporation | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache |
CN101052164A (zh) * | 2007-05-11 | 2007-10-10 | 中兴通讯股份有限公司 | 对点对点短消息话单处理速度进行动态调整的方法 |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
US9734070B2 (en) * | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
CN107291635A (zh) * | 2017-06-16 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种缓存替换方法和装置 |
CN110362377A (zh) * | 2018-04-09 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 虚拟机的调度方法和装置 |
CN108829343A (zh) * | 2018-05-10 | 2018-11-16 | 中国科学院软件研究所 | 一种基于人工智能的缓存优化方法 |
Non-Patent Citations (4)
Title |
---|
J. YELLOZ: "Optimization and Load Balancing of the Semantic Tagging and Searching System", 《008 IEEE INTERNATIONAL WORKSHOP ON SEMANTIC COMPUTING AND APPLICATIONS》 * |
MPACT OF SOCIALLY BASED DEMAND ON THE EFFICIENCY OF CACHING STRA: "Buster O", 《2014 IEEE INTERNATIONAL CONFERENCE ON PERVASIVE COMPUTING AND COMMUNICATION WORKSHOPS (PERCOM WORKSHOPS)》 * |
张奇龙: "基于系统仿真的硬软件Cache性能优化方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
薛源: "面向小文件的缓存优化和系统实现", 《中国优秀硕士学位论文全文数据库 信息科技》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111143245B (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558577B2 (en) | Managing memory access requests with prefetch for streams | |
US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
Jaleel et al. | High performance cache replacement using re-reference interval prediction (RRIP) | |
US7783836B2 (en) | System and method for cache management | |
US7558920B2 (en) | Apparatus and method for partitioning a shared cache of a chip multi-processor | |
TWI684099B (zh) | 剖析快取替代 | |
RU2438165C2 (ru) | Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша | |
EP3089039B1 (en) | Cache management method and device | |
US20080052488A1 (en) | Method for a Hash Table Lookup and Processor Cache | |
US20130166846A1 (en) | Hierarchy-aware Replacement Policy | |
US10929308B2 (en) | Performing maintenance operations | |
US20150234745A1 (en) | Data cache prefetch controller | |
US20090063777A1 (en) | Cache system | |
US20200250098A1 (en) | Cache access detection and prediction | |
US10423534B2 (en) | Cache memory | |
CN113342265A (zh) | 缓存管理方法、装置、处理器及计算机装置 | |
US10831673B2 (en) | Memory address translation | |
WO2023173991A1 (en) | Cache line compression prediction and adaptive compression | |
CN111143245B (zh) | 一种缓存数据处理方法、电路、处理器及芯片 | |
US20190243778A1 (en) | Memory address translation | |
CN114138685B (zh) | 缓存的资源分配方法及装置、电子装置和存储介质 | |
JP6249120B1 (ja) | プロセッサ | |
CN116383100A (zh) | 基于合并位向量访存模式的缓存数据预取方法和系统 | |
US11334488B2 (en) | Cache management circuits for predictive adjustment of cache control policies based on persistent, history-based cache control information | |
US20230297382A1 (en) | Cache line compression prediction and adaptive compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 300384 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone No. 18 Haitai West Road North 2-204 Industrial Incubation-3-8 Applicant after: Haiguang Information Technology Co., Ltd Address before: 300384 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone No. 18 Haitai West Road North 2-204 Industrial Incubation-3-8 Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |