如果我有一个有两个内核的 CPU,每个内核都有自己的 L1 缓存,那么 Core1 和 Core2 是否可能同时缓存同一部分内存?
如果可能,如果 Core1 和 Core2 都在缓存中编辑了它们的值,那么主内存的值将是多少?
Dav*_*rtz 26
如果我有一个有两个内核的 CPU,每个内核都有自己的 L1 缓存,那么 Core1 和 Core2 是否可能同时缓存同一部分内存?
是的。如果不是这种情况,性能会很糟糕。考虑运行相同代码的两个线程。您希望在两个 L1 缓存中都使用该代码。
如果可能,如果 Core1 和 Core2 都在缓存中编辑了它们的值,那么主内存的值将是多少?
旧值将在主内存中,这无关紧要,因为 CPU 都不会读取它。在从缓存中弹出修改后的值之前,必须将其写入内存。通常使用MESI 协议的某些变体。在 MESI 的传统实现中,如果一个值在一个缓存中被修改,它就不会出现在同一级别的任何其他缓存中。