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

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

3天内不再提示

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

冬至子 来源:Arm精选 作者:baron 2023-10-27 16:26 次阅读

思考:
1、为什么要学习 MESI 协议?哪里用到了?你确定真的用到了?
2、MESI 只是一个协议,总得依赖一个硬件去执行该协议吧,那么是谁来维护或执行的呢?
3、你不理解的真的是 MESI 吗,真的需要学习 MESI 吗?应该是 cache 架构吧
4、core0 和 core1 之间的一致性是 MESI?那 cluster0 和 cluster1 之间的呢?sytem1 和 sytem2 之间的呢?
5、MESI 协议中的 M、E、S、I 的比特位,都是存在哪里的?

1、系统中有哪些一致性需要维护

进入正文,我们来看现代 ARM 架构体系(DynamIQ 架构)中的 cache 层级关系图。注意 L1/L2 都在 core 中,L3 在 cluster 中。

所以从以下图中就能够直观的看到答案了:

  • (1)core0、core1… 之间的一致性 需要维护
  • (2)cluster0 和 cluster1 之间的 L3 Cache 一致性 需要维护
  • (3)system 之间的一致性需要维护

image.png

其中,core0、core1 之间的一致性是遵从 MESI 协议,而 cluster0/cluster1 之间的一致性、多个 system 之间的一致性并没有遵从 MESI 协议。
所以本文重点介绍的,也就是 core0、core1 之间的一致性,即 MESI 协议。

2、core 硬件对 MESI 协议的支持

接下来,进入下一个问题, MESI 协议中的 M、E、S、I 的比特位都是存在哪里的?这个问题并不难,告别懒惰,多翻一翻 ARM TRM 手册就能找到答案,如下是armv9 -- cortex-A710 TRM手册中的,cache 的 TAG 里都有什么?

答案显然易见,在 Cache 的 TAG 中,有两个比特位表示了 MESI 的状态

image.png

3、MESI 协议的原理

接下来进入本文的核心,MESI 协议到底是什么?怎样维护一致性的?

(看以下图表,我就不说话了)

image.png

image.png

image.png

Events

  • RH = Read Hit
  • RMS = Read miss, shared
  • RME = Read miss, exclusive
  • WH = Write hit
  • WM = Write miss
  • SHR = Snoop hit on read
  • SHI = Snoop hit on invalidate
  • LRU = LRU replacement

Bus Transactions

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

    关注

    2

    文章

    134

    浏览量

    35373
  • ARM架构
    +关注

    关注

    14

    文章

    167

    浏览量

    35992
  • Cortex-A7
    +关注

    关注

    0

    文章

    33

    浏览量

    16324
  • cache技术
    +关注

    关注

    0

    文章

    41

    浏览量

    986
  • TRM
    TRM
    +关注

    关注

    0

    文章

    7

    浏览量

    3268
收藏 人收藏

    评论

    相关推荐

    一致性测试

    谁有聚星公司射频一致性测试的程序啊,求个做参考,!
    发表于 07-14 18:11

    C6678 多核程序的初始化及L1P cache一致性问题

    工作? 2)C66x DSP CorePac User Guide上说了L1D cache和LL2之间cache一致性是由硬件维护的。但没有提到L1P
    发表于 06-21 14:21

    cache一致性的问题

    我在做多核的同步的时候,定义了个int型的flag,并且把它放到了共享存储区中。在core0中将其值改写为1,但在其他核中该值依然是0,并没有随着core0改变。 只是知道用的是CACHE_invL1d之类的函数,但是具体操作
    发表于 06-21 04:09

    c6678cache一致性

    专家您好!    我现在在做6678 cache一致性的东西,想请问一下一致性的维护哪些是硬件实现的,哪些需要程序员实现?谢谢!
    发表于 06-24 04:38

    请问当定义多核共享的变量的时候是否要定义成Volatile变量?多核共享的Volatile变量是否要求程序员维护cache一致性

    本帖最后由 只耳朵怪 于 2018-6-25 15:08 编辑 请问当定义多核共享的变量的时候 是否要定义成Volatile变量多核共享的Volatile变量 是否仍然要求程序员维护c
    发表于 06-25 05:40

    6678多核之间的L1 CACHE一致性是由硬件实现的吗

    工程师您好! 按照6678文档上所讲,每个core都有个L1D cache和L1P cache,那么这八个核之间的L1 CACHE是会存在
    发表于 12-25 11:25

    请问6678 L2的数据搬移到DDR需要人为的进行cache一致性操作吗?

    我看论坛中讲LL2的cache一致性是由硬件维护。也就是说如果从DDR搬移到L2或者L2搬移到DDR,都不需要程序员进行cache一致性的操作,硬件会自动进行
    发表于 01-14 14:36

    LTE基站一致性测试的类别

    (LTE)能否成功部署,大部分取决于系统中不同组件的兼容,以及彼此之间能否有效地互通。通过一致性测试(Conformance Testing),可确保这些组件的性能符合3GPP规格
    发表于 06-06 06:41

    MIPI一致性测试

    一致性测试选件;>复杂信号分离软件:N5415B InfiniiScan选件;>MIPI D-PHY 协议触发和解码软件:N8802A CSI/DSI解码选件>有源探头放大器:1132A×4;>探头放大器前端附件:E2669A×4;测试夹具:
    发表于 09-26 13:31

    什么是霍尔元件的一致性

    什么是霍尔元件的一致性?霍尔开关元件主要是通过感应磁性来进行开关机,霍尔元件本身又属于无触点开关,因此具有感应距离。霍尔开关都有个触发值和释放值,触发值是指霍尔元件表面达到参数磁性大小,霍尔元器件
    发表于 10-12 09:34

    为什么需要进行WiMAX协议一致性测试?

    为什么需要进行WiMAX协议一致性测试看完你就知道
    发表于 04-15 06:16

    小编科普CPU缓存一致性协议MESI

    什么是缓存一致性协议MESIMESI协议中的状态有哪几种?MESI
    发表于 06-17 10:00

    顺序一致性和TSO一致性分别是什么?SC和TSO到底哪个好?

    如果是多核心的程序,那么顺序一致性就是,对于任何个核心而言所有核心的内存访问实际执行顺序都和程序指定顺序相同上图中左边是核心C1的程序指定顺序,右边是核心C2的程序指定顺序,中间是实际的内存访问顺序
    发表于 07-19 14:54

    CMP中Cache一致性协议的验证

    CMP是处理器体系结构发展的一个重要方向,其中Cache一致性问题的验证是CMP设计中的一项重要课题。基于MESI一致性协议,本文建立了CM
    发表于 07-20 14:18 38次下载

    Cache一致性协议优化研究

    问题的由来.总结了多核时代高速缓存一致性协议设计的关键问题,综述了近年来学术界对一致性的研究.从程序访存行为模式、目录组织结构、一致性粒度、
    发表于 12-30 15:04 0次下载
    <b class='flag-5'>Cache</b><b class='flag-5'>一致性</b><b class='flag-5'>协议</b>优化研究