HNU-计算机体系结构-实验3-缓存一致性

计算机体系结构 实验3

计科210X 甘晴void 202108010XXX
在这里插入图片描述

1 实验目的

熟悉cache一致性模拟器(监听法和目录法)的使用,并且理解监听法和目录法的基本思想,加深对多cache一致性的理解。

做到给出指定的读写序列,可以模拟出读写过程中发生的替换、换出等操作,同时模拟出cache块的无效、共享和独占态的相互切换。

参考资料:

  • 【强烈推荐】https://www.bilibili.com/video/BV1iA4m137Xr
  • 【经典A橙】https://blog.csdn.net/Aaron503/article/details/133985380

声明:部分讲解图片来源于B站up主kami陆【技术杂谈】缓存一致性,总结的非常好,一看就看懂了。

2 实验过程

学习cache一致性监听法和目录法,并且进行一致性算法的模拟实验,同时熟悉相关知识。

2.0 预备知识

2.0.1 多cache一致性算法——监听法
2.0.1.1 MSI协议
  • Modified 已修改:缓存中的数据和内存中的数据不一致,最新的数据只存在于当前的缓存块当中
  • Shared 共享:缓存数据和内存中的一致
  • Invalidated 已失效:该缓存块无效

每个块都有如下三种状态,由CPU对块的不同操作在如下状态图上跳转。

注意,read/write miss信号会指明块编号,监听时会对适当的块编号做出反应。

在这里插入图片描述

每个处理器上都有一个模块在总线上监听,并对接收到的信号(块编号一致)作出反应,进行如下跳转。

在这里插入图片描述

2.0.1.2 MESI协议

相较于之前多了一个exclusive,解决重复步骤的问题。

在这里插入图片描述

2.0.1.3 本题讲解

本题的“占用”好像地位类似于上面的“已修改”,可以认为是基于MSI协议进行的。

2.0.2 多cache一致性算法——目录法
2.0.2.1 有中心的目录法

视频介绍的是一种有中心的目录法,它所有的块状态都存在中心结点上,更新时都需要与中心结点进行交互。这与我们的问题有一些差别,后面会提到,但是模式有相似之处。

在这里插入图片描述

在这里插入图片描述

2.0.2.2 本题讲解

本题是一种去中心分布式的目录法,存储器分布式地存储在各个结点上(事实上,这样会更好)。与上面所给出的有一定区别。此外,本题还引入了独占(Exclusive),接下来我来讲解本题的做法。

在这里插入图片描述

根据每一次的具体任务,会有三类结点(任务不一样,需要重新划分)

  • 宿主H(记录我想要操作的这个缓存块目录的所在结点)
  • 本地L(处理操作的CPU与Cache所在的结点)
  • 远端R(其它与这个操作有关系的结点)

举例:如在上图中,此时在CPU-C上写块6,那么宿主结点是A,本地结点是C,远端结点是D。

下面是不存在替换的情况(即Cache的这个位置本来是空的,不会覆盖原有的)

  • 读,命中:不做处理
  • 写,命中:不做处理
  • 读,不命中:
    • 与宿主结点H通信,若H的目录为【空】或【共享】,从H的存储器发数据给L,H的目录中标记【共享】L;本地L的Cache标记【共享】
    • 与宿主结点H通信,若H的目录为另一节点R【独占】,H先从R处取回数据,放在H存储器,从H的存储器发数据给L,H的目录中解除R【独占】,标记【共享】RL,本地L的Cache标记【共享】
  • 写,不命中:
    • 与宿主结点H通信,若H的目录为【空】,从H的存储器发送数据给L,H的目录中标记【独占】L;本地L的Cache标记【独占】
    • 与宿主结点H通信,若H的目录为另一节点M【独占】,H发【作废】信号给M,M将该数据块送还给H,M的Cache标记为【作废】,取消掉这个块的存在,H再发数据给L,H的目录中解除M【独占】,添加L【独占】,L的Cache标记为【独占】
    • 与宿主结点H通信,若H的目录为另一两个R【共享】,H发【作废】信号给所有的R,所有的R将Cache标记为【作废】,并取消掉这个快的存在,H再发数据给L,H的目录中解除R的【共享】,添加L【独占】,L的Cache标记为【独占】

看下面这个例子,此时如果写入6,会覆盖掉10,此时在上面的步骤之前还要加一个写回与修改目录的操作。

在这里插入图片描述

写回并修改共享集:如上图中,L结点(D)向10所在的R‘结点(B)通信,把10的最新值传回去,并要求取消掉块10目录中的L【独占】标记。然后把L结点的Cache-2,即块10在的那块清空,此时情况转化为了上面的情况,可以按照前面列出来的例程处理。

总结:如果存在替换的情况,要先做写回并修改共享集。然后先跟宿主机H通信,确定是哪种情况,然后再做相应的操作。凡是写不命中,都是用【独占】解决,相当于在目录上开了个声明:“最新的副本在我这,想要的来问我要”。凡是读不命中,都用【共享】来解决。凡是要在目录中删除一项【独占】标记,都必须先把最新的副本拿回来,再删除。

2.1 cache一致性算法-监听法模拟

1) 利用监听法模拟器进行下述操作,并填写下表

【注意】

  • 用I代表Invalidated,为“无效”
  • 用S代表Shared,为“共享”
  • 用E代表Exclusive,为“独占”
  • 举例:A5:I->S表示A处理器上的块5原来标记“无效”,现在改为“共享”
所进行的访问是否发生了替换?是否发生了写回?监听协议进行的操作与块状态改变具体事件
CPU A 读第5块××A5:I->S读不命中,发送读不命中信号,将块5从主存读入Cache A1
CPU B 读第5块××B5:I->S读不命中,发送读不命中信号,将块5从主存读入CacheB1
CPU C 读第5块××C5:I->S读不命中,发送读不命中信号,将块5从主存读入CacheC1
CPU B 写第5块××B5:S->E; A5:S->I; C5:S->I写命中,让其他CPU的块5失效
CPU D 读第5块×B5:E->S; D5:I->S读不命中,发送读不命中信号,CPUB接收到该信号,发送给CPUD块5,CPUD将块5读入CacheD1
CPU B 写第21块×B5:S->I; B21:I->E写不命中,将块21写入CacheB1,替换块5,发送写失效信号
CPU A 写第23块××A23:I->E写不命中,将块23写入CacheA3,发送写失效信号
CPU C 写第23块×A23:E->I; C23:I->E写不命中,将块23写入CacheA3,发送写失效信号,CPUA将块写回主存
CPU B 读第29块×B29:I->S读不命中,发送读不命中信号,将块29从主存读入CacheB1,替换掉块21
CPU B 写第5块×B29:S->I; B5:I->E; D5:S->I写不命中,发送写不命中信号,将块5写入CacheB1,替换掉块29,块29为独占,先将其写回。写入块5后发送写失效信号

2) 请截图,展示执行完以上操作后整个cache系统的状态

在这里插入图片描述

2.2 cache一致性算法-目录法模拟

1) 利用目录法模拟器进行下述操作,并填写下表

所进行的访问监听协议进行的操作存储器块状态改变Cache块状态改变
CPU A 读第6块读不命中,块6在A的存储器中,读取到缓存。块6目录:添加ACacheA块6:无效->共享
CPU B 读第6块读不命中,块6在A的存储器中,读取到缓存。块6目录:添加BCacheB块6:无效->共享
CPU D 读第6块读不命中,块6在A的存储器中,读取到缓存。块6目录:添加DCacheD块6:无效->共享
CPU B 写第6块写命中,更新CPU-A的目录中块6为CPU-B独占,告知CPU-A,CPU-D该块失效。块6目录:删除ABD,添加B(独占)CacheA、CacheD块6:共享->无效; CacheB块6:独占->共享
CPU C 读第6块读不命中,访问目录得知CPU-B独占块6,CPU-A从CPU-B的缓存取回块6写回,将该块交给CPU-C。块6目录:解除独占,添加CCacheB块6:共享->独占; CacheC块6:无效->共享
CPU D 写第20块写不命中,块20在C的存储器上,读取到缓存并写入新块。块20目录:添加D(独占)CacheD块20:无效->独占
CPU A 写第20块写不命中,块20在C的存储器上,读取目录发现CPU-D独占该块,CPU-C从CPU-D取回块20写回。块20目录:删除D,添加ACacheD块20:独占->无效; CacheA块20:无效->独占
CPU D 写第6块写不命中,块6在A的存储器上,读取目录发现B和C共享此块20,CPU-A通知B和C该块写失效,设置为CPU-D独占,新块写入CPU-D的缓存。块6目录:删除BC,添加DCacheB块6:共享->无效;CacheC块6:共享->无效;CacheD块6:无效->独占;
CPU A 读第12块读不命中,将块20写回C的存储器并清除目录中对块20的独占态。读取B的存储器上的块12,并更新相应目录。块20目录:删除A; 块12目录:添加ACacheA块12:无效->共享

2) 请截图,展示执行完以上操作后整个cache系统的状态

在这里插入图片描述

2.3 思考题

1) 目录法和监听法分别是集中式和基于总线,两者优劣是什么?

监听法基于总线,通过广播信号来实现写失效,优点是不需要额外的存储空间维护一致性信息,缺点是可扩展性差,处理器数量越多,总线通信的压力就越大。

目录法采用集中式的目录维护一致性信息,增加了存储开销。一致性信息是集中式的存储在目录中,但目录结构本身是分布式的,因此具有可拓展性。目录法最大的优点是可以实现在分布式的系统中,不需要总线。

3 实验总结

对缓存一致性有了更深入的了解,具体是掌握了监听法(MSI和MESI),目录法。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值