MSI
(缓存一致性协议)
目录
在多处理器系统中,MSI(Modified-Shared-Invalid)是一个最基本的缓存一致性协议。缓存中的每一个块(block)包括3中状态:Modified(M,已修改)、Shared(S,共享)、Invalid(I,无效)。
Modified
表示缓存中的块(block)已被修改。这时,缓存中的数据和后端存储(如,内存)不一致。当缓存被收回(内存被收回,块“block”数据将丢失)时,缓存负责将“M”状态(Modified)的块(block)写回到后端存储。
Shared
表示缓存中的块(block)没有被修改,并且至少在一个缓存中存在一个只读状态(缓存中的块“block”数据有被读取拷贝)。缓存中的块(block)数据可以被收回(内存被收回,块“block”数据将丢失)而不需要写回到后端存储。
Invalid
表示块(block)在当前缓存中不存在,这时,如果该块(block)需要存储在这个缓存中,必须从内存或其他缓存中读进来。
通过在缓存和后端存储之间保持通信来维护这些一致性状态。缓存在读取块(block)或写入块(block),或从其他缓存读取或写入一个块(block)时充当的角色不同。
在一个缓存上,如果请求读取一个“M”或“S”状态的块(block),缓存直接提供数据。如果读取的块不在缓存中(处于“I”状态),缓存必须检查确认在其他缓存中不存在“M”状态的块(拷贝)。不同的缓存架构有不同的处理。例如总线架构,如果读请求被广播给所有的缓存,这种架构一般通过侦听窥探的方式知道最近有哪些缓存存在这个缓存块(block)的拷贝。其他的架构,包括缓存目录,这种缓存目录通过代理目录(一种代理,也是一种目录)知道最近有哪些缓存存在这个缓存块(block)的拷贝。如果其他缓存存在“M”状态的块(拷贝),混存必须将这个块(block, 拷贝)数据写回到后端存储,并将该块(block)设置为“S”或“I”状态。一旦其他所有缓存的处于“M”状态的块(拷贝)数据全部写回到后端存储中,缓存就可以从后端存储读取,或者从其他缓存读取对应的“S”状态的块(block, 拷贝)。这样,缓存就可以(为读请求)提供数据。之后,缓存的块(block)被设置为“S”状态。
如果请求写入一个“M”状态的块(block),缓存直接修改本地数据。如果写入的块(block)处于“S”状态,缓存必须通知其他所有存在“S”状态的块(拷贝)的缓存,其他缓存必须收回(内存被收回,块“block”数据将丢失)对应的块(拷贝)。这个通知可以通过如上总线侦听窥探的方式(总线架构),或者通过代理目录(一种代理,也是一种目录)的方式(缓存目录架构)。之后才能修改本地数据。如果写入的块(block)处于“I”状态,缓存必须通知其他所有存在“S”或者“M”状态的块(拷贝)的缓存,其他缓存必须收回(内存被收回,块“block”数据将丢失)对应的块(block,拷贝)。如果对应的块(拷贝)处于“M”状态,缓存必须将对应的块(block,拷贝)写回后端存储,或者将对应的块(block,拷贝)提供给请求的缓存。如果这个时候正好在本地还没有写入的块,在修改之前,将先从后端存储中读进来。块(block)修改之后,设置缓存块为“M”状态。
对于任何两个给定的缓存,某个块(block,包括拷贝)允许的状态如下:
M S I
M n n y
S n y y
I y y y
<!--[if !supportLists]-->1、 <!--[endif]-->https://en.wikipedia.org/wiki/MSI_protocol
<!--[if !supportLists]-->2、 <!--[endif]-->https://en.wikipedia.org/wiki/Cache_coherence
<!--[if !supportLists]-->3、 <!--[endif]-->Cache Coherence,https://www.cs.auckland.ac.nz/~jmor159/363/html/cache_coh.html
<!--[if !supportLists]-->4、 <!--[endif]-->
相关推荐
在IT领域的核心概念中,存储模型与缓存一致性协议是多处理器环境中不可或缺的主题,它们直接影响着系统的性能、可靠性和效率。本文将深入探讨这些概念,尤其是《存储一致性与缓存一致性初探》一书中的关键知识点,该...
首先,让我们理解高速缓存一致性协议的基础。在多处理器系统中,每个处理器可能有自己的局部高速缓存,它们与主内存交互以提高性能。然而,当多个处理器同时修改同一块内存时,如果不加以管理,就会出现数据不一致的...
这通常通过缓存一致性协议实现,例如MESI(Modified、Exclusive、Shared、Invalid)协议,这是一种广泛采用的协议,用于标记缓存行的状态。当一个处理器修改了缓存中的数据,它会将该缓存行状态设为“修改”,同时...
综上所述,这个项目提供了一个用于模拟缓存一致性协议的工具,支持MSI、MESI和MOESI协议,并考虑了回写缓冲区和非原子总线事务等实际系统中的复杂情况。这样的模拟器对于理解和分析多处理器系统中的数据一致性问题...
【多处理器高速缓存一致性分析与评价】 在现代计算机系统中,随着处理器性能的不断提升,多处理器系统已经成为主流。为了提高整体性能,每个处理器通常配备有自己的高速缓存(Cache),以减少对主内存的访问时间。...
为了解决这个问题,有多种高速缓存一致性协议被提出,如MSI(Modified, Shared, Invalid)、MESI(Modified, Exclusive, Shared, Invalid)和MESIF(Modified, Exclusive, Shared, Invalid, Forward)。在这些协议中...
传统的缓存一致性协议如MESI(Modified、Exclusive、Shared、Invalid)和MSI(Modified、Shared、Invalid)在写操作时会触发一致性更新,这可能导致频繁的网络通信和性能开销。 非写分配(No Write Allocate,NWA)...
标题“网络游戏-有序和无序网络的缓存相干握手协议”揭示了这个主题关注的是网络游戏环境下的缓存一致性,其中可能涉及有序和无序网络模型的不同处理方式。 有序网络假设网络传输严格按照发送顺序接收,而无序网络...
文章还对传统的目录一致性协议进行了分析和比较,如MSI(Modified、Shared、Invalid)、MESI(Modified、Exclusive、Shared、Invalid)和MOESI(Modified、 Owned、Exclusive、Shared、Invalid)等,这些协议在保证...
接着,文章对传统的目录一致性协议进行了分析,如MSI(Modified、Shared、Invalid)、MESI(Modified、Exclusive、Shared、Invalid)和MOESI(Modified、 Owned、Exclusive、Shared、Invalid)等协议。这些协议通过...
2. **缓存一致性协议**:介绍如MESI(Modified, Exclusive, Shared, Invalidated)或MSI(Modified, Shared, Invalidated)等经典协议的工作原理,以及如何确保多个处理器缓存之间的一致性。 3. **并发控制**:探讨...
本主题将深入探讨MI、MSI、MESI、MOSI、MOESI和MOESIF这六种缓存一致性协议,并解释它们在C++编程环境中的应用。 1. **MI协议(Modified, Invalid)**:是最简单的协议,每个处理器都有自己的私有缓存。当一个...
2. **状态管理**:理解并实现各种缓存一致性协议的状态,如MSI(Modified, Shared, Invalid)或MESI(Modified, Exclusive, Shared, Invalid)。 3. **通信机制**:模拟处理器之间的通信,可能涉及到消息传递和锁的...
MSI(Modified, Shared, Invalid)协议是一种典型的目录式缓存一致性协议。在这个协议中,每个缓存条目可以处于M、S或I三种状态之一。M状态表示该数据已被修改且仅存在于本地缓存,S状态表示数据是共享的,且可能...
题目给出了一系列代码序列,要求计算在两种不同的缓存一致性协议——MSI(Modified、Shared、Invalid)和MESI下,总停顿周期(即完成操作所需的总时间)。停顿周期包括读写操作以及可能的缓存状态转换所花费的时间。...
除了总线侦听,还有基于目录的一致性协议(Directory-Based protocols),例如MSI(Modified, Shared, Invalid)和MESI(Modified, Exclusive, Shared, Invalid)等。这些协议通常在更复杂的网络结构中使用,通过...
4. **缓存一致性协议**:多处理器系统中,每个处理器都有自己的缓存,为了保证数据一致性,需要遵循诸如MESI(Modified、Exclusive、Shared、Invalidated)或MSI(Modified、Shared、Invalidated)等一致性协议。...
这可以通过各种一致性协议实现,如MESI(Modified、Exclusive、Shared、Invalidated)、MSI(Modified、Shared、Invalidated)等。 2. **脏数据检测**:确定哪些缓存行需要被刷写,通常通过设置 dirty 标志来追踪。...
4. **缓存一致性(Cache Coherence)**:在多处理器系统中,多个处理器可能共享同一缓存,需要确保数据的一致性。常见的协议有MSI、MESI、MOESI等。 5. **缓存写策略(Write Policy)**:包括写直达(Write-Through...