在阅读有关缓存一致性协议的讲座幻灯片时,我遇到了以下问题:如果使用带写策略的缓存,那么哪些MESI状态是相关的?
给出了答案:I (无效)和S (共享未修改)。
我理解状态M (修改的独占)与此无关,因为带有写操作策略的缓存无论如何都会将更改传播到主内存。
状态E (独占未修改的)是不相关的,因为它只在发生独占读取丢失和替换时才发出(并且保留了进一步的读取命中)。
有人能解释一下答案吗?
发布于 2015-08-01 12:58:58
正如您所提到的,M状态显然是无用的,因为您从未将修改过的数据保存在缓存中。
至于独占状态:请记住,在某种意义上,它比共享状态“更强”,因为在WB缓存中,它保证对该行的写入不需要先获得所有权并使其他副本无效,而是可以直接写入该行而不必离开本地缓存。换句话说,从E到M的转换很简单,而S到M更复杂,需要首先使所有其他复制无效。
另一方面,在WT缓存中,您已经可以保证没有其他人持有行的修改版本,更重要的是,您没有在本地缓存中进行简单转换的好处(因为您无论如何都必须将数据写到外部),因此实际上不需要独占状态--您没有从中获益。实际上,您可能会因此而损失,因为E状态迫使您在任何其他读取同一行(E -> S转换)的核心上发送窥探,
当然,在编写外部的东西时,您仍然需要使所有其他副本无效,但是您不需要区分E和S来告诉您它们是否存在,通常有一个窥探过滤器或其他列表来告诉您要窥探哪些核心。
https://stackoverflow.com/questions/31761454
复制相似问题