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

第六章:Coherence Protocols

时间:2024-05-06 11:55:42浏览次数:19  
标签:状态 缓存 Coherence cache LLC 内存 第六章 coherence Protocols

chapter6:cache coherence

1、大局观

coherence的目标,具体包括:

  1. 单写多读(single-writer-multiple-reader, SWMR)不变性:对任何内存地址A,在任何时间点上只存在一个可以向A写入的内核,但可以存在多个从A读取的内核。
  2. 数据-值(data-value)不变性:一个内存位置在一个时间片开始时的值与该内存位置在其上一个时间片结束时的值相同。

为了上述这些性质,可以把每个存储结构(包括cache、LLC、内存)与coherence contorller连接起来,构成一个分布式系统,控制器之间交换信息。下面两张图展示了缓存控制器与LLC/内存控制器的功能。对于cache的coherence controller称为cache controller,如下图所示。

controller接受来自core的load和store指令,并将load值返回到核心。cache miss发生时,controller发起一笔coherence transaction,并且这笔transaction通过network与其他controller交互。transaction的类型及格式取决于特定的一致性协议。

每个block对应一个有限状态机,根据当前event改变block的状态,多个相同的状态机构成controller。

2、指定一致性协议

一般可以通过定义controller的行为来定义coherence协议,通常用表格的形式来说明,如下图所示。

3、简单coherence协议示例

为了方便理解举一个简单例子,假设所有处理器通过共享总线(一个Core发送的消息可以被所有Core看到)连接,假设每个缓存行可以在两个稳定态:I(Invalid)和V(Valid)。

根据cache行为分析,可以得到使用三种总线消息传输实现的两种一致性事务:Get请求一个缓存行;数据回复(DataRep)传输一个缓存行的数据;Put将缓存行内容写回LLC/memory。当发生load/store miss时,缓存控制器发送Get消息,并等待即将到来的DataResp消息。上图中前缀Own表示自身Core的请求,Other表示其它Core的请求。

IV_D是指瞬态,当前block状态为ivalid,在等待data response变为valid。在IV_D瞬态中,如果cache controller收到了load/store请求或者需要evict缓存行的请求,都采取Stall等待的措施,这是因为IV_D在逻辑上属于I状态,一方面自然不能满足load/store的请求;另一方面如果对evict请求不stall而直接evict该缓存行的话,最后会产生I状态的缓存行接收到了有可能是dirty的DataResp,由于不是预期的请求,缓存行不会做出任何反应,进而使得dirty的数据没有写回memory,造成错误。

4、coherence设计空间概述

状态

在只有一个参与者的系统中(如没有coherent DMA的单核处理器),一个缓存行的状态是有效(valid)或者无效(invalid)。或许在需要分辨缓存行是否是脏的时候可能需要两个有效状态。在多个参与者的系统中也可以只使用两三个有效状态,但我们通常使用多个有效状态来标志缓存行的某些特性。这些特性有:

  • 有效性(validity):该缓存行有最新的值。
  • 脏(Dirtiness):就像单核系统一样,缓存行拥有最新的值,该值区别于LLC/memory,缓存控制器需要最终将其写回LLC/memory。
  • 独有(Exclusivity):缓存行在系统中只有一份存在于某个核心的private cache(没有其它共享者)。
  • 所有权(Ownership):如果该缓存控制器负责响应对某个缓存行的所有请求,那么称该缓存控制器是该缓存行的所有者。

稳定状态

MOESI协议

过渡状态

在复杂的协议中,我们可能会有几十个过渡状态,我们用XY_Z的形式来表示这些状态,如IV_D表示在Invalid状态中,准备进入Valid状态,且正在等待DataResp。

LC/内存中的状态

有两种命名这些状态的方法:

  1. 以缓存(cache)为中心:一个缓存行在LLC和内存中的状态是该行在缓存中的状态的集合,例如,如果该行在所有缓存中状态都是I,那么在LLC/内存状态也是I,如果在一个或多个缓存中的状态是S,那么LLC/内存状态就是S,如果在一个缓存中状态为M,那么LLC/内存状态就是M。
  2. 以内存(memory)为中心:一个缓存行在LLC/内存中的状态对应于内存控制器对该行的权限(而不是缓存的权限),例如,如果该行在所有缓存中状态都是I,那么在LLC/内存控制器中的状态就是O(而不是以缓存为中心的方法中的I),如果在一个或多个缓存中的状态是S,那么LLC/内存的状态也是O,如果在一个缓存中状态为M或O,那么LLC/内存的状态就是I。

后面我们都使用以缓存为中心的命名方法来表示LLC/内存中的缓存行的状态。

标签:状态,缓存,Coherence,cache,LLC,内存,第六章,coherence,Protocols
From: https://www.cnblogs.com/icwangpu/p/18174723

相关文章

  • 第二章:Coherence Basics
    chapter2:coherence基础在本章将充分介绍cachecoherence,以了解一致性模型如何与缓存交互。2.1节开始介绍贯穿本书的系统模型。第2.2节解释了必须解决的缓存一致性问题以及不一致性的可能性是如何产生的。第2.3节精确地定义了缓存一致性1、基准系统模型(BaselineSystemmodel)基......
  • 《算法竞赛进阶指南》 第六章 291. 蒙德里安的梦想 状态压缩DP
    https://www.acwing.com/problem/content/293/求把N×M的棋盘分割成若干个1×2的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0......
  • 《无垠的太空(8).提亚玛特之怒》第六章:亚历克斯
    第六章:亚历克斯亚历克斯他们的首要目标是俘获拉科尼亚的症府guān员,顺带抢下“暴风”号亟需的补给,所以他们要搞定两艘护卫舰保护下的一艘货运飞船。亚历克斯首先击毁货运飞船的引擎,博比率领突击队登舰;然后和护卫舰交战。护卫舰不敌,舰情急之下用定点防御pào射穿了货运飞船。“暴......
  • 第六章总结
    网络Api微信小程序处理的数据通常从后台服务器获取,再将处理过的结果保存到后台服务器,这就要求微信小程序要有与后台进行交互的能力。微信原生API接口或第三方API提供了各类接口实现前后端交互。网络API可以帮助开发者实现网络URL访问调用、文件的上传和下载、网络套接字的......
  • 21天【代码随想录算法训练营34期】第六章 二叉树part08 (● 235. 二叉搜索树的最近公共
    235.二叉搜索树的最近公共祖先因为是搜索二叉树,所以只要值在q和p之间,那么就是lowestcommonancestor#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=None......
  • 20天【代码随想录算法训练营34期】第六章 二叉树part07 ( ● 530.二叉搜索树的最小绝对
    530.二叉搜索树的最小绝对差#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:deftraversal(self,......
  • C ++ 标准库 第六章
    第六章标准模板库6.1STL组件(Component)容器(Container):用来管理某类对象的集合。 迭代器(Iterator):用来在一个对象集合(collectionofobjects)内遍历元素。算法(Algorithm):用来处理集合内的元素。STL的基本观念就是将数据和操作分离。数据由容器类加以管理,操作则由可定制(con......
  • 19天【代码随想录算法训练营34期】第六章 二叉树 part06(● 654.最大二叉树 ● 617.合
    654.最大二叉树#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defconstructMaximumBinaryTree(s......
  • 第六章-实用渗透技巧-1:针对云环境的渗透
    针对云环境的渗透1.云术语概述1.1.RDS关系数据库服务(RelationalDatabaseService,RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务RDS采用即开即用的方式,兼容MySQL、SQLServer两种关系数据库,并提供数据库在线扩容、备份回滚、性能检测及分析等功能RDS与云服务器搭配使用......
  • 17天【代码随想录算法训练营34期】第六章 二叉树part04(● 110.平衡二叉树 ● 257.
    110.平衡二叉树#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defgetDepth(self,root):......