cache coherence 概念

    xiaoxiao2021-03-25  115

    引子 首先说一下一致性,现实中,由于沟通不好而导致的问题,比如,一方改变了某些东西,而没有及时通知另一方,导致两方的信息不同,这就是一致性问题。

    概念 多核处理器中也存在不一致的问题。 举个例子,比如内存中有个数据x,被缓存到不同的 私有cache 中,假如有两个核,core0 和 core1, 本来x=1,如果core0 将x 重新赋值为3的话,而core1还以为x=1,那么就会导致程序出错了,这就是cache的不一致。

    底层操作 为了保证cache 的一致性,处理器有两个底层操作:write invalidate(写失效) 和 write update(写更新)。

    1.write invalidate 当一个内核修改了一份数据时,其他内核如果有这个数据的副本(copy),那么我们将其他核的这份数据, 置为无效。 2.write update 当一个内核修改了一份数据时,其他内核如果有这个数据的副本(copy),那么我们将其他核的这份数据, 更新到最新值。

    3.对比 1)write invalidate 是一种简单的方式,不需要更新数据。如果以后处理器都不再使用这个变量 的话,这时候 置为无效是很有效的;不过由于每个valid位,对应的是一个cache line ,那么将valid位置invalid后,这个cache line 中其他的有效的数据就不能用了。

    2)write update 会产生大量的数据更新操作,不过只更新修改的数据,如果 处理器还会使用这个数据 的话,那么 write update 就很有效了。 通常,由于write invalidate 简单,大多数处理器都用这种策略。

    转载请注明原文地址: https://ju.6miu.com/read-13329.html

    最新回复(0)