保持cache一致性自然要靠cache一致性协议。cache的不一致,是因为同样一份数据在多个cache中存在多份拷贝,如果数据在一个cache中被写另一个cache却不知道,就会有不一致。对于多核共享cache最基本的方法就是写失效和写更新两种。每个核的专有cache要时刻监听总线上的写cache请求,一旦监听到总线要写的cache块自己肚子里也有,就将自己肚子里的cache块置为失效(写失效),等到下次该块cache miss再重新load最新的数据。或者在总线更新某块的时候,刚好自己肚子里也有一份该块的拷贝,顺便把自己内部的cache块也更新了(写更新),就可以保证自己一直是最新的数据。
从硬件原理上来讲,主要就是做到写操作即时即刻的传递给所有的核/cache。写操作一定要广播出去,只要通知到位,就有办法。