0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

讨论经典的DynamIQ的cache架构

Linux阅码场 来源:代码改变世界ctw 作者:代码改变世界ctw 2022-10-26 11:04 次阅读

思考:1、在经典的 DynamIQ架构 中,数据是什么时候存在L1 cache,什么时候存进L2 cache,什么时候又存进L3 cache,以及他们的替换策略是怎样的?比如什么时候数据只在L1?什么时候数据只在L2?什么时候数据只在L3?还有一些组合,比如什么时候数组同时在L1和L3,而L2没有?这一切的规则是怎样定义的?

2、本文不讨论什么MESI协议,也不讨论cache基本原理,本文讨论的是多级cache之间的替换策略。

说明:本文讨论经典的DynamIQ的cache架构,忽略 big.LITTLE的cache架构

d105c8a8-4853-11ed-a3b6-dac502259ad0.png

1、L1 / L2 cache直接的替换策略

我们先看一下DynamIQ架构中的cache中新增的几个概念:

(1)Strictly inclusive: 所有存在L1 cache中的数据,必然也存在L2 cache中

(2)Weakly inclusive: 当miss的时候,数据会被同时缓存到L1和L2,但在之后,L2中的数据可能会被替换

(3)Fully exclusive: 当miss的时候,数据只会缓存到L1

综上总结:inclusive/exclusive 描述的仅仅是 L1和L2之间的替换策略

我们再去查阅 ARMV9 cortex-A710 trm手册,查看该core的cache类型,得知:

d11e1f5c-4853-11ed-a3b6-dac502259ad0.png

L1 I-cache和L2之间是 weakly inclusive的

L1 D-cache和L2之间是 strictly inclusive的

也就是说:

当发生D-cache发生miss时,数据缓存到L1 D-cache的时候,也会被缓存到L2 Cache中,当L2 Cache被替换时,L1 D-cache也会跟着被替换

当发生I-cache发生miss时,数据缓存到L1 I-cache的时候,也会被缓存到L2 Cache中,当L2 Cache被替换时,L1 I- cache不会被替换

再次总结 :L1 和 L2之间的cache的替换策略,I-cache和D-cache可以是不同的策略,每一个core都有每一个core的做法,请查阅你使用core的手册。

2、core cache / DSU cache / memory 之间的替换策略

说实话, core cache/DSU cache/ 这个名字可能不好,感觉叫 privatecache和share cache更好,我也不知道官方一般使用哪个,反正我们能理解其意思即可吧。

那么他们之间的替换策略是怎样的呢?

我们知道MMU的页表中的表项中,管理者每一块内存的属性,其实就是cache属性,也就是缓存策略。其中就有cacheable和shareable、Inner和Outer的概念。如下是针对 DynamIQ 架构做出的总结,注意哦,仅仅是针对 DynamIQ 架构的cache。

如果将block的内存属性配置成Non-cacheable,那么数据就不会被缓存到cache,那么所有observer看到的内存是一致的,也就说此时也相当于Outer Shareable。其实官方文档,也有这一句的描述:在B2.7.2章节 “Data accesses to memory locations are coherent for all observers in the system, and correspondingly are treated as being Outer Shareable”

如果将block的内存属性配置成write-through cacheable 或 write-back cacheable,那么数据会被缓存cache中。write-through和write-back是缓存策略。

如果将block的内存属性配置成 non-shareable, 那么core0访问该内存时,数据缓存的到Core0的L1 D-cache / L2 cache (将L1/L2看做一个整体,直接说数据会缓存到core0的private cache更好),不会缓存到其它cache中。

如果将block的内存属性配置成 inner-shareable, 那么core0访问该内存时,数据只会缓存到core 0的L1 D-cache / L2 cache和 DSU L3 cache,不会缓存到System Cache中(当然如果有system cache的话 ) ,(注意这里MESI协议其作用了)此时core0的cache TAG中的MESI状态是E, 接着如果这个时候core1也去读该数据,那么数据也会被缓存core1的L1 D-cache / L2 cache, 此时core0和core1的MESI状态都是S

如果将block的内存属性配置成 outer-shareable, 那么core0访问该内存时,数据会缓存到core 0的L1 D-cache / L2 cache 、cluster0的DSU L3 cache 、 System Cache中, core0的MESI状态为E。如果core1再去读的话,则也会缓存到core1的L1 D-cache / L2 cache,此时core0和core1的MESI都是S。这个时候,如果core7也去读的话,数据还会被缓存到cluster1的DSU L3 cache. 至于DSU0和DSU1之间的一致性,非MESI维护,具体怎么维护的请看DSU手册,本文不展开讨论。

Non-cacheable write-through
cacheable
write-back
cacheable
non-shareable 数据不会缓存到cache
(对于观察则而言,又相当于outer-shareable)
core0访问该内存时,数据缓存的到Core0的L1 D-cache / L2 cache (将L1/L2看做一个整体,直接说数据会缓存到core0的private cache更好),不会缓存到其它cache中 同左侧
inner-shareable 数据不会缓存到cache
(对于观察则而言,又相当于outer-shareable)
core0访问该内存时,数据只会缓存到core 0的L1 D-cache / L2 cache和 DSU L3 cache,不会缓存到System Cache中(当然如果有system cache的话 ) , (注意这里MESI协议其作用了)此时core0的cache TAG中的MESI状态是E, 接着如果这个时候core1也去读该数据,那么数据也会被缓存core1的L1 D-cache / L2 cache, 此时core0和core1的MESI状态都是S 同左侧
outer-shareable 数据不会缓存到cache
(对于观察则而言,又相当于outer-shareable)
core0访问该内存时,数据会缓存到core 0的L1 D-cache / L2 cache 、cluster0的DSU L3 cache 、 System Cache中, core0的MESI状态为E。如果core1再去读的话,则也会缓存到core1的L1 D-cache / L2 cache,此时core0和core1的MESI都是S
思考:那么此时core7去读取会怎样?
同左侧





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据缓存
    +关注

    关注

    0

    文章

    23

    浏览量

    7055
  • MMU
    MMU
    +关注

    关注

    0

    文章

    91

    浏览量

    18283

原文标题:深度解读DynamIQ架构cache的替换策略

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    紫光展锐推出全球首款基于DYNAMIQ架构的4核LTE平台--虎贲T310

    4月9日,紫光展锐宣布推出新一代LTE移动芯片平台紫光展锐虎贲T310(以下简称:虎贲T310),这是全球首款基于Arm DynamIQ架构、面向智能手机的4核LTE芯片平台,可实现优异的运算性能
    发表于 04-12 15:50 1445次阅读

    ARM全新DynamIQ架构奠定未来10年发展基础

    ARM全新推出的DynamIQ架构首次允许一个处理器芯片集成8个内核,而且可以是异构内核,它第一次使得处理器供应商可以采用更高效、更灵活的多核配置,它彻底奠定了未来10年ARM Cortex-A系列处理器的发展基础。
    发表于 04-05 15:30 1548次阅读

    Arm Cortex-A53 cache架构解析

    A53的L1 Data cache遵从的是MOESI协议,如下所示在L1 data cache的tag中存有MOESI的标记位。
    的头像 发表于 09-01 15:01 8317次阅读
    Arm Cortex-A53 <b class='flag-5'>cache</b>的<b class='flag-5'>架构</b>解析

    浅析Cache多核之间的一致性MESI协议

    进入正文,我们来看现代 ARM 架构体系(DynamIQ 架构)中的 cache 层级关系图。注意 L1/L2 都在 core 中,L3 在 cluster 中。
    的头像 发表于 10-27 16:26 814次阅读
    浅析<b class='flag-5'>Cache</b>多核之间的一致性MESI协议

    DynamIQ,ARM的千亿出货量大生意

    面对未来巨大的市场需求,ARM也开始了行动,敲响了DynamIQ的千亿出货量大生意。
    发表于 03-24 11:00 2318次阅读

    DynamIQ世界中的big.LITTLE是什么样的?

    ARM DynamIQ 技术于近期发布,因其对 big.LITTLE 技术未来发展的影响而引起了科技行业和“技术爱好者”的强烈兴趣。简而言之,big.LITTLE 成为了 DynamIQ 技术中的一部分。那么现在让我们回过头来,从一个更大的范围,看看这其中的关系。
    发表于 10-16 06:44

    ARM DynamIQ计算技术介绍

    ARM DynamIQ全新时代的计算技术
    发表于 02-03 06:49

    浅析ARM处理器的power架构

    的power mode和cluster的power mode。1、core的power modepower mode有以下一些模式:可见,在DynamiQ架构下的power,core的power模式,有多种
    发表于 03-31 11:24

    Arm DynamIQ共享单元技术参考手册

    DynamIQ™ 共享单元(DSU)包括支持DynamIQ的L3存储系统、控制逻辑和外部接口™ 簇DynamIQ™ 集群微体系结构将一个或多个核心与DSU集成,以形成一个集群,该集群实现为指定的配置
    发表于 08-08 06:48

    ARM Dynamiq共享单元-120型技术参考手册

    DynamIQ™ 共享单元-120(DSU-120)提供了一个共享的L3存储系统、窥探控制和过滤以及其他控制逻辑,以支持a级架构核心的集群。该集群被称为DSU-120 DynamIQ™ 簇此外,片上系统(SoC)的所有外部接口均
    发表于 08-08 06:29

    ARM Dynamiq™共享单元-110型技术参考手册

    DynamIQ™ 共享单元-110(DSU-110)提供了一个共享的L3内存系统、窥探控制和过滤以及其他控制逻辑,以支持a级架构核心的集群。该集群被称为DSU-110 DynamIQ™ 簇此外,到片上系统(SoC)的所有外部接口
    发表于 08-10 07:52

    DynamIQ世界中的big.LITTLE

    ARM DynamIQ 技术于近期发布,因其对 big.LITTLE 技术未来发展的影响而引起了科技行业和“技术爱好者”的强烈兴趣。简而言之,big.LITTLE 成为了 DynamIQ 技术中的一部分。那么现在让我们回过头来,从一个更大的范围,看看这其中的关系。
    发表于 04-14 16:36 1019次阅读
    <b class='flag-5'>DynamIQ</b>世界中的big.LITTLE

    解读ARM架构最新的DynamIQ技术,人工智能和VR

    ARM DynamIQ 技术于近期发布,因其对 big.LITTLE 技术未来发展的影响而引起了科技行业和“技术爱好者”的强烈兴趣。简而言之,big.LITTLE 成为了 DynamIQ 技术中的一部分。那么现在让我们回过头来,从一个更大的范围,看看这其中的关系。
    发表于 04-21 16:54 896次阅读

    big.LITTLE 和DynamIQ有什么关系?DynamIQ big.LITTLE 有什么好处?

    ARM DynamIQ 技术于近期发布,因其对 big.LITTLE 技术未来发展的影响而引起了科技行业和技术爱好者的强烈兴趣。简而言之,big.LITTLE 成为了 DynamIQ 技术中的一部分
    发表于 07-10 10:51 5668次阅读

    什么是 Cache? Cache读写原理

    由于写入数据和读取指令分别通过 D-Cache 和 I-Cache,所以需要同步 D-Cache 和 I-Cache,即复制后需要先将 D-Cach
    发表于 12-06 09:55 2552次阅读