下冰雹 · 2023年04月06日 · 北京市

CPU多层caches的allocation方式

根据一个cache的内容是否存在于其它level(层次)的cache中,可以构成多种多层次的cache结构。如果上级cache的所有内容在下级cache里都有,那么则称下级cache包含上级cache(Inclusive策略)。如果下级cache只包含上级cache中不存在的内容,则称下级cache不包含上级cache(exclusive策略)。如果下级cache的内容既不严格包含也不排斥上级cache,则称Pseudo-exclusive策略。

1. Inclusive策略

在Inclusive策略中,也就是L2包含L1的所有内容。假设有一个处理器读取块 X 的请求。如果在 L1 缓存中找到该块,则从 L1 缓存中读取数据并返回给处理器。如果该块在 L1 缓存中未找到,但存在于 L2 缓存中,则从 L2 缓存中取出缓存块并将其放入 L1。如果这导致块从 L1 中逐出,则 L2 不参与。如果在 L1 或 L2 中均未找到该块,则将其从主存中取出并放入 L1 和 L2 中。现在,如果有从 L2 的逐出,L2 缓存向 L1 缓存发送回无效(back invalidation),这样就不会违反Inclusive策略。如下图所示是Inclusive策略下,cacheline在L1和L2之间搬移的1个例子。
image.png
 这种方式的优缺点:

优点:1. 在多core系统中,如果cache状态是S态,core只需检查L2的内容就可以得到数据,不需要再去snoop其它core了。2. L1和L2的cache size可以不一样。
缺点:1. L2的way必须大于等于连在L2之上所有L1的way相加起来的总way。2. L2的set必须要大于等于L1的set。3. L2的eviction可能会导致L1的eviction,这样一定程度上降低L1 cache命中率。

2. Exclusive策略

在Exclusive策略中,也就是L2不包含L1的所有内容。假设有一个处理器读取块 X 的请求。如果在 L1 缓存中找到该块,则从 L1 缓存中读取数据并返回给处理器。如果该块在 L1 缓存中未找到,但存在于 L2 缓存中,则将缓存块从 L2 缓存移动到 L1 缓存,并在L2中移除。如果这导致一个块从 L1 中被逐出,则被逐出的块将被放入 L2。这是填充 L2 的唯一方法。在这里,L2 的行为就像一个备用缓存。如果在 L1 或 L2 中均未找到该块,则将其从主内存中取出并仅放置在 L1 而不是 L2中。如下图所示是Exclusive策略下,cacheline在L1和L2之间搬移的1个例子。
image.png
  这种方式的优缺点:

优点:1. 可以存放更多的数据。2. 避免L2太过庞大。
缺点:1. 实现起来比较复杂。2. 如果在其它core里存在数据,当前core想要获得的话,必须要通过snoop方式获得。

3. Pseudo-exclusive

在Pseudo-exclusive策略中,L1和L2的内容没有严格的Inclusive或Exclusive的关系。

假设有一个处理器读取块 X 的请求。如果在 L1 缓存中找到该块,则从 L1 缓存中读取数据并返回给处理器。如果该块在 L1 缓存中未找到,但存在于 L2 缓存中,则从 L2 缓存中取出缓存块并将其放入 L1。如果这导致块从 L1 中被逐出,则 L2 不参与,这与包容性策略的情况相同。如果在 L1 和 L2 中都找不到该块,则将其从主存中取出并放入 L1 和 L2 中。现在,如果有从 L2 的逐出,与包容性策略不同,没有反向失效(back invalidation)。如下图所示是Pseudo-exclusive策略下,cacheline在L1和L2之间搬移的1个例子。
image.png
 这种方式是以上两种策略的折中,在Arm CPU中,比较常用这种方式。

作者:谷公子
文章来源:https://blog.csdn.net/W1Z1Q/article/details/129961994?spm=1001.2014.3001.5502

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
20187
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息