其中有几种缓存一致性协议,如MSI、MESI、MOSI、MOESI等。
让我们假设这个场景: CPU包含4核和L1专用缓存(L1缓存大小在这里并不重要)。这里的内存地址是说明性的。
问题1: core-2知道内存访问是由Core-0的缓存线而不是主存提供的吗?还是缓存一致性协议对检索数据的位置是透明的?
问题2:步骤3之后, core -0和Core-2的缓存行处于共享状态。然而,从不同的内核从给定的内存引用获取当前状态的core-2<代码>E 239是否有可能?在这种情况下,Core-2是否可能知道对于这个内存引用,0x1111 Core-0缓存行处于共享状态?
发布于 2017-10-11 14:49:01
内核-2知道内存访问是由Core-0的缓存线而不是主存提供的吗?
是的,在所描述的场景中,缓存线应该处于“共享”状态(即缓存线在几个核心之间共享)。但请看下面..。
缓存一致性协议对于检索数据的位置是透明的?
是的,缓存一致性协议对于核心是透明的,缓存线状态是内部的。有些体系结构可能有直接缓存状态访问的指令,但我对此表示怀疑。大多数体系结构都只是预取/零/刷新/无效指令.
接下来的问题的答案是显而易见的:
在步骤3之后,核心-0和Core-2的缓存线处于共享状态。但是,是否可以从另一个核的给定内存引用中获取当前状态?
这在某些体系结构上可能是可能的,但在x86上则是不可能的。
在这种情况下,Core-2是否知道对于这个内存引用,0x1111Core-0缓存行处于共享状态?
和上面一样。高速缓存是连贯的,因此在大多数体系结构上,高速缓存的指令级接口非常简单。
总的来说,它看起来像XY问题。你想用高速缓存线状态感知的核心来实现什么?
https://stackoverflow.com/questions/46638233
复制相似问题