首页 > 其他分享 >第七章:Snooping Coherence Protocols

第七章:Snooping Coherence Protocols

时间:2024-05-06 15:12:18浏览次数:10  
标签:状态 缓存 Snooping Coherence 总线 LLC GetS Protocols 请求

chapter7:snooping coherence 协议

简介

窥探(Snooping)缓存一致性协议是最早被广泛使用的协议并被沿用至今。它有较短的一致性传输延时以及相对于目录(directory)协议更简单的设计。

窥探协议通过要求对一个缓存行的所有要求按顺序到达,实现了所有分布式缓存控制器都能正确更新共同表示缓存行 state的有限状态机。

在表7.1中,针对缓存行 A,Core1、Core2、LLC/Memory以相同的顺序观察C1发出的GetM、C2发出的GetM,最终得到了正确的运行结果。但在表7.2中,Core C2先观察到了C2发出的GetM,再观察到C1发出的GetM。这样会导致在Time1时Core C2完成写入操作并转变为M状态,在Time2时Core2看到了Core1的GetM,于是自发把缓存行 invalidate,此时系统中没有Core认为自己是M状态,但除了Core2以外的其它Core都认为Core2是M状态,于是如果总线上出现了GetS请求,Core2应该对其发送DataResp,但I状态的Core2不会发送,因此可能导致请求者持续Stall等待数据,导致系统死锁。

基本snooping协议

这里讨论一个最简单的、没有优化的协议,并描述在两个不同的系统模型上的实现,前者说明了实现的基本方法,后者更复杂一些,表明即使是相对简单的性能改进的方法也会影响协议实现的复杂性。

  • M(Modified):该缓存行是有效的(valid),独有的(exclulsive),有所有权的(owned);有可能是脏的(dirty)。可以对其进行读写操作。
  • S(Shared):该缓存行是有效的(valid),干净的(not dirty),无所有权的(not owned)。可以对其进行读操作。
  • I(Invalid):该缓存行是无效的(invalid)。不能对其进行读写操作。

原子请求与原子事务

更加详细地说,原子请求表示一致性请求是在请求从缓存控制器发出的同一周期在总线上排序的,这消除了缓存行从发出请求到请求在总线上出现之间的状态变化——不考虑在这之间由于别的一致性消息而更改状态的情况,这是一种简单情况的考虑。

非原子请求、原子事务

在实际硬件实现过程中,许多优化措施(如在缓存控制器与bus之间插入queue)会导致非原子请求的情况出现,这种情况也是在教材中作为基准窥探系统模型来分析的。当考虑非原子的情况时,根据上述分析可以得知主要增加了“缓存控制器发出请求”到“请求出现在总线上”这段时期内缓存控制器接收到别的一致性消息的可能.

加入独占态(MESI)

观察一个常用的数据处理场景:一个核先读了一个缓存行,再写了这个缓存行。如果使用MSI协议实现,那么默认该缓存行在LLC中是I状态,传输流程是:1)Core 发送GetS来获取读权限;2)Core 发送GetM来获取写权限。

MESI协议则加速了这种行为。当GetS发生时没有其它cache拥有目标缓存行时,缓存控制器允许该缓存行以E状态被获取。当后续对该缓存行有store请求时,该块可以“无声地(silently)”转换为M状态,即从E转换为M状态时不需要发送任何一致性请求。

进入E状态

  • 通过或门实现:在总线上增加nbit对应n个缓存控制器连接至一个或门,当GetS出现在总线上时,所有share这个缓存行的共享者 将总线上属于自己的这一bit置位,运算后的结果被请求者(Req)观察,若结果为1则缓存行 state变为S,否则为E。

  • 让LLC在原本的“IorS”状态下区分I状态与S状态,若LLC为I状态则变为E状态,若LLC为S状态则变为S状态。要实现这种情况同样具有两个方法:

    • 一个方法是让每个缓存控制器显示地发送PutS给LLC,同时目录需要记录共享者的个数以便在最后一个共享者的PutS收到后转变为I状态。
    • 另一个简单但不完全的实现方法是允许LLC保守地记录共享者,即LLC不记录共享者的个数,一旦收到第一个GetS就转变为S状态,只有收到PutM后才会转变为I状态。这样做放弃了很多使用E状态的机会,因为S状态的LLC代表着记录0个或多个共享者,而我们放弃了记录0个共享者时使用E状态的机会。

添加所属态(MOSI)

提出动机

在MSI或MESI协议中,如果缓存行为M或者E状态时遇到了GetS请求,则其在状态变为S的同时,向请求者和LLC/memory同时发送数据,因为此时该缓存行放弃了所有权,而将所有权归还给了LLC/memory。LLC/memory变成了owner,有最新的数据副本,并负责响应后续请求。

在这种情况下,引入O状态,即在M或E状态收到GetS请求后,该缓存行转变为O状态,依然负责响应后续的请求。这样做有两个好处:

  • 免去了向LLC/memory传输、写入(如果是dirty)数据的过程,减少了transactions和对传输带宽的需求。
  • 当后续的请求到来时,不需要从LLC/memory搬运数据,大量减少数据传输延时。

非原子总线

标签:状态,缓存,Snooping,Coherence,总线,LLC,GetS,Protocols,请求
From: https://www.cnblogs.com/icwangpu/p/18175041

相关文章

  • 第六章:Coherence Protocols
    chapter6:cachecoherence1、大局观coherence的目标,具体包括:单写多读(single-writer-multiple-reader,SWMR)不变性:对任何内存地址A,在任何时间点上只存在一个可以向A写入的内核,但可以存在多个从A读取的内核。数据-值(data-value)不变性:一个内存位置在一个时间片开始时的值与该内存......
  • 第二章:Coherence Basics
    chapter2:coherence基础在本章将充分介绍cachecoherence,以了解一致性模型如何与缓存交互。2.1节开始介绍贯穿本书的系统模型。第2.2节解释了必须解决的缓存一致性问题以及不一致性的可能性是如何产生的。第2.3节精确地定义了缓存一致性1、基准系统模型(BaselineSystemmodel)基......
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    [SWPUCTF2021新生赛]PseudoProtocols尝试直接访问hint.php,发现并没有效果联想到题目为PseudoProtocols(伪协议),尝试使用伪协议php://filter参数详解该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:php://filter参数描述res......
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    第三层的意思是:(file_get_contents($a,'r'))是一个函数调用,它尝试以读取模式打开$a参数指定的文件,并返回文件的内容。==='Iwantflag'是一个比较操作符,用于比较file_get_contents($a,'r')的结果与字符串"Iwantflag"是否完全相等。如果相等,则条件成立。因此,整......
  • 26 DHCP中继/DHCP SNOOPING
    DHCPRelayDHCPRelay即DHCP中继,它是为解决DHCP服务器和DHCP客户端不在同一个广播域而提出的,提供了对DHCP广播报文的中继转发功能,能够把DHCP客户端的广播报文“透明地”传送到其它广播域的DHCP服务器上,同样也能够把DHCP服务器端的应答报文“透明地”传送到其它广播域的DHCP客户......
  • Electrical(Hardware) Protocols: FIFO / JTAG / SPI / IIC / IIS / UART / SWD / ICS
    Electrical(Hardware)Protocols:JTAG(JointTestActionGroup),JTAGisactuallyaprotocoloverSPI.5pins/connections(GND,TMS,TCK,TDI,TDO),Outputtype:Maximumvoltage:5.5volts(5voltsafe),3.3voltnormal,oropencollector(pull-upresistorsre......
  • Cache-Coherence
     CacheCoherence(utexas.edu) CS377P:Lectureschedule(utexas.edu) MemoryBarriers:aHardwareViewforSoftwareHackershwViewForSwHackers.pdf(puppetmastertrading.com) CacheCoherenceI–ComputerArchitecture(umd.edu)  Directory-BasedCa......
  • 华为交换机DHCP snooping功能开启
    客户网络环境是使用DHCP来自动分配地址的。但是有的人私接小路由器wifi。导致小路由器的dhcp地址分发到了网络中,引起了局部的网络中断问题。解决方法:开启DHCPsnooping功能。原理:通过全局先开启dhcpsnoopingenable功能,再在普通接口或者vlan下再次启用dhcpsnoopingenable。......
  • DHCP Snooping实验
    DHCPSnooping实验目的:PC从DHCP服务器获取地址,SW1开启snooping功能。1.在SW1上设置VLAN10分配给与客户端连接的端口,与中继连接的端口做trunk。SW1(config)#vlan10SW1(config)#inte0/0SW1(config-if)#switchportmodeaccessSW1(config-if)#switchportaccessvlan10SW1(config)......
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    [SWPUCTF2021新生赛]PseudoProtocols题目来源:nssctf题目类型:web涉及考点:PHP伪协议1.先看题目,给了一个提示要我们找hint.php,我们直接修改url:http://node2.anna.nssctf.cn:28069/hint.php发现页面空白无回显,这时候想到了使用PHP伪协议让其base64编码输出:http://node2.ann......