硬件层缓存一致性
一、缓存行
在讲缓存一致性之前,我们先来说一下缓存行的概念
缓存是分段(line)的,一个段对应一块存储空间,称为缓存行,它是CPU缓存中可分配的最小存储单元,大小为32、64、128字节不等,与CPU的架构有关,通常为64字节。当CPU看到一条读取内存的指令时,它会把内存地址传递给一级数据缓存,一级数据缓存会检查它是否有这个内存地址对应的缓存段,如果没有就把整个缓存段从内存(或高一级的缓存)中加载进来。
二、什么是缓存一致性
缓存一致性(cache coherence)是一种保证存储在多个缓存中的共享资源数据相同的机制。缓存不一致,是指相同数据在不同的缓存中呈现出不同的表现。
缓存不一致的问题,在多核CPU的系统中,比较容易出现。假设主存有一个x,值为5。核0和核3都从主存中加载x到缓存。此时核0更改x的值为8。此时核3的缓存中的x的值还是5,数据出现了不一致。