MSI协定


MSI协定

文章插图
MSI协定【MSI协定】监听一致性协定通过利用汇流排将处理器核的私有Cache 和主存储器连线在一起,每一个私有 Cache 中的控制器会时刻侦听汇流排上的讯息,并根据讯息的类型做出相应的操作 。MSI协定是一个在多处理器系统中运行的基本的监听高速快取一致性协定 。。与其他快取一致性协定一样,协定名称中“M,S,I”三个字母表明高速快取行可能的状态 。
基本介绍中文名:MSI协定
外文名:Modified Shared Invalid Protocol
领域:计算机存取
状态:修改、共享、无效
类型:监听高速快取一致性协定
目的:保持高速快取一致性
简介在MSI协定中,快取中包含的每个块可能处于以下三种状态之一:Modified(已修改):块已在快取中已被修改,快取中的数据与后备存储器(例如记忆体)中的数据不一致 。具有“M”状态的块的快取在该块被替换时需要将其中的内容写回后备存储 。Shared(共享):块未被修改,并在至少一个处理器的快取中以唯读状态存在 。高速快取可以将其替换而不将其中的数据写回后备存储 。Invalid(无效):该块不存在于当前快取中,或者因为汇流排请求而被标记为无效 。如果要将某个块存储在该快取中,则必须首先从记忆体或另一个高速快取中获取该块 。这些一致性状态通过高速快取和后备存储之间的通信进行维护 。当快取中的某个块被读或写时,或者当快取通过汇流排接收到其他快取发出的读写信号时,它需要据此来做出动作并调整自己的状态 。当快取收到读取请求时,如果一个块处于“M”或“S”状态,则它会直接提供数据 。但如果块尚未被装入快取(处于“I”状态),则在装入该块之前,必须先要保证该地址的数据不会在其他快取的快取块中处于“M”状态 。不同的快取架构处理这个问题的方式是不同的 。例如,汇流排架构通常使用汇流排监听来解决此问题,此时读取请求将广播给所有的快取 。其他架构,例如快取目录,则通过一个中介(例如目录)来获取哪一个快取拥有快取块的最新副本 。如果另一个快取中有处于“M”状态的块,则它必须将数据写回后备存储,并回到“S”或“I”状态 。在数据写回之后,快取可以通过后备存储或者其他快取中处于“S”状态的对应块获取内容 。之后快取会答覆读取请求 。在提供的数据后,快取块处于“S”状态 。当快取收到读取请求时,如果一个块处于"M"状态,则缓只需要修改本地的数据 。如果块处于"S"状态,则快取必须通知其他的具有处于“S”状态的同样的块的高速快取将其换出 。和上文所述类似,这种通知可以通过汇流排监听或快取目录来进行 。接下来快取会修改本地的数据 。如果块处于"I"状态,则快取必须通知其他的具有处于“S”或“M”状态的同样的块的高速快取将其换出 。如果块在另一个快取中处于"M"状态,那幺它必须将数据写回后备存储或者将其提供给请求数据的快取 。如果此时快取尚未装载该块的数据,则修改前要先将其从后备存储读入 。在数据被修改之后,缓块块处于"M"的状态 。优势与不足MSI 协定在解决快取一致性问题上有较大的优势,主要表现为以下几个方面:首先,系统中的每一个数据块都有状态标识,通过现有状态标识及汇流排传输的事务并依据状态转换图进行数据块状态的转换,整个流程有序进行,数据块状态不存在混淆的情况;其次,可以使用汇流排、环形网等作为一致性事务的广播介质,选材不单一;再次,硬体实现的 MSI 协定在功能及可靠性上更显健壮性;最后,MSI 协定简单而有效,并且汇流排作为互联结构其挂接设备方便快捷,易于讯息传输 。但 MSI 协定也有其自身的不足:首先,当多个私有快取中都含有同一个共享数据块时,採用写无效策略的MSI 协定会进行多次的写作废操作,增加流量负载;其次,汇流排作为互斥资源其频宽有限,即汇流排的扩展性差;最后,MSI 协定是通过广播的方式传送一致性讯息,存在于汇流排上的讯息对于一些处理器核来说是不需要的,即汇流排的有效利用率受到影响 。基于侦听的高速快取一致性协定基于监听的一致性协定使用汇流排或者环形网进行一致性命令的广播 。小规模的多处理器常採用汇流排进行广播 。这种类型的机器是通过高速共享汇流排将商用的微处理器与共享存储器连线起来,并且用硬体实现侦听高速快取一致性协定,以保证高速快取一致性 。侦听高速快取一致性协定主要是利用了汇流排的特性 。汇流排是一组连线多个设备的线路,汇流排上的每个设备都能侦听到汇流排上出现的事务 。在侦听高速快取一致性协定的实现中,所有高速快取控制器都侦听汇流排上出现的事务,一旦发现与自己相关的事务就执行相应的动作来保证高速快取一致性 。单片多处理器系统中,多个处理器核通过片内互联的进行通讯 。片内高速快取一致性自身的特点决定了它对可扩展性要求不高 。因此,在单片多处理器的片内高速快取一致性设计时,实现简单的监听协定比强调可扩展的目录协定更有吸引力 。汇流排和环形网都可以方便地实现广播,其中仲裁、汇流排长度、汇流排阻抗是汇流排设计中需要考虑的重要问题 。而环形网将网路上的设备串联起来,则不存在上面的问题 。而从广播的效率来看汇流排优于环形网 。在多核处理器中,各处理器核集中在一个晶片内部,仲裁、汇流排长度、汇流排阻抗等问题不会给设计带来太多麻烦 。因此,汇流排广播的方式也是多核处理器片内高速快取一致性实现中首选的方式 。在侦听高速快取一致性协定中,每个高速快取控制器接收的两方面输入处理器发出的记忆体请求和汇流排上侦听到的事务 。作为这些输入的回响,高速快取控制器可能根据相应高速快取块的当前状态及状态转换图来更新该块的状态,并且也可能要执行一些动作 。比如,作为对处理器发出的读请求的回响,高速快取控制器可能要产生一个汇流排事务来获得数据,并返回给处理器 。有时候,高速快取控制器也要参与到汇流排上侦听到的事务中去,并作出回响 。因此,侦听协定实际上是一组互相协作的有限状态机所代表的分散式算法,它由三部分组成:①状态集合一个与本地高速快取块相关联的状态集合②状态转换图以当前状态和处理器请求,或观察到的汇流排事务作为输入,并输出该高速快取块的下一个状态③动作与每个状态转换相关的实际动作,这是由汇流排、高速快取和处理器的具体设计来决定 。对同一个块的不同状态机不是独立操作的,而是由汇流排事务来协调的 。状态机处理器向高速快取发出的请求包括:PrRd:处理器请求读取一个快取块 。PrWr:处理器请求改写一个快取块 。状态图的总交易MSI协定 。此外,还有汇流排方面的请求 。包括:BusRd:当某个处理器的高速快取的读操作出现未命中,它会向汇流排传送一个BusRd请求,并预期能够收到该快取块的数据 。BusRdX:当某个处理器的高速快取的写操作出现未命中,它会向汇流排传送一个BusRdX请求,预期能够收到该快取块的数据,并且使其他处理器中对应相同地址的快取块无效 。BusUpgr:当某个处理器的高速快取的写操作命中时,它它会向汇流排传送一个BusUpgr,使其他处理器中对应相同地址的快取块无效 。Flush:该请求表明一个快取块正在被写回记忆体 。状态转移:处于Invalid(无效)状态的快取块:在PrRd,BusRd发出时,状态变为Shared(共享) 。在PrWr,BusRdX发出时,状态变为Modified(已修改) 。在BusRd,BusRdX或BusUpg发出时,状态保持Invalid(无效) 。处于Shared(共享)状态的快取块:在PrRd,BusRd发出时,状态保持Shared(共享) 。在PrWr,BusUpgr发出时,状态变为Modified(已修改) 。在BusRdX或BusUpgr发出时,状态变为Invalid(无效) 。处于Modified(已修改)状态的快取块在PrRd或PrWr发出时,状态保持Modified(已修改) 。在BusRd发出时,快取块被写回,状态变为Shared(共享) 。在BusRdX发出时,快取块被写回,状态变为Invalid(无效) 。