首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从不同核心的L1缓存线协议中获取状态信息?

是否可以从不同核心的L1缓存线协议中获取状态信息?
EN

Stack Overflow用户
提问于 2017-10-09 02:59:15
回答 1查看 89关注 0票数 1

其中有几种缓存一致性协议,如MSI、MESI、MOSI、MOESI等。

让我们假设这个场景: CPU包含4核和L1专用缓存(L1缓存大小在这里并不重要)。这里的内存地址是说明性的。

  1. Core-0请求访问内存以寻址0x1111,因此该值将从主内存加载到其L1缓存行中。
  2. Core-1请求访问内存以寻址0x2222,因此该值将从主内存加载到其L1缓存行中。
  3. Core-2请求内存访问地址为0x1111 (以前由Core-0访问)。此引用已加载到Core-0的缓存线中,因此缓存一致性协议将复制包含该引用的Core-0缓存线,并最终将其存储到Core-2的缓存线中。

问题1: core-2知道内存访问是由Core-0的缓存线而不是主存提供的吗?还是缓存一致性协议对检索数据的位置是透明的?

问题2:步骤3之后, core -0Core-2的缓存行处于共享状态。然而,从不同的内核从给定的内存引用获取当前状态的core-2<代码>E 239是否有可能?在这种情况下,Core-2是否可能知道对于这个内存引用,0x1111 Core-0缓存行处于共享状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-11 14:49:01

内核-2知道内存访问是由Core-0的缓存线而不是主存提供的吗?

是的,在所描述的场景中,缓存线应该处于“共享”状态(即缓存线在几个核心之间共享)。但请看下面..。

缓存一致性协议对于检索数据的位置是透明的?

是的,缓存一致性协议对于核心是透明的,缓存线状态是内部的。有些体系结构可能有直接缓存状态访问的指令,但我对此表示怀疑。大多数体系结构都只是预取/零/刷新/无效指令.

接下来的问题的答案是显而易见的:

在步骤3之后,核心-0和Core-2的缓存线处于共享状态。但是,是否可以从另一个核的给定内存引用中获取当前状态?

这在某些体系结构上可能是可能的,但在x86上则是不可能的。

在这种情况下,Core-2是否知道对于这个内存引用,0x1111Core-0缓存行处于共享状态?

和上面一样。高速缓存是连贯的,因此在大多数体系结构上,高速缓存的指令级接口非常简单。

总的来说,它看起来像XY问题。你想用高速缓存线状态感知的核心来实现什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46638233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档