首页 > 解决方案 > 相干和非相干缓存

问题描述

我想澄清一些关于包含连贯和非连贯缓存的架构的问题。作为一个具体的例子,我将参考描述英特尔计算机图形架构的文章。

简而言之,假设我们在同一个芯片上有一个集成显卡的处理器。集成 GPU 与 CPU 共享最后一级缓存 (LLC)。GPU 包含许多执行单元 (EU),它们组合成子切片,每个子切片都具有私有 L1 和 L2 缓存(与 CPU不一致)。这些子切片被聚合形成一个切片,它由一个共享的 L3 缓存(与 CPU一致)和一个存储的共享本地内存 (SLM) 组成。

在此处输入图像描述

只要这个架构中存在不连贯的缓存,如何保证 EU 或 CPU 内核不会读取陈旧的值?

我怀疑它可能需要内存屏障来增强连贯性。或者连贯和非连贯的缓存硬件对程序员有什么不同?

如果程序员是负责保持一致性的人,那么使某些缓存级别与 CPU 保持一致的目的是什么(在此示例中,GPU 切片的 L3 缓存)?由于程序员无法确定数据是属于一致性缓存还是非一致性缓存,这是否意味着他无论如何都必须插入内存屏障

标签: cachingx86cpu-architecturegpu

解决方案


推荐阅读