当前位置: 首页 > backend >正文

snoop操作怎么维护一致性?

假设cpu0要读地址addr=0x08的数据,这个数据L01有一份,DDRC里肯定也有一份,但是CPU0不知道这个事情,然后CPU0会发出一个读请求到HN,它会发一个snoop请求给到CPU1,然后CPU1把数据“可以”给HN,然后HN再把数据回给CPU0。

我理解:HN来自CPU0的请求,然后发snoop操作给CPU1的这整个过程叫做snoop。然后HN发给CPU1的请求叫snoop请求,CPU1在这个过程叫做snoopee

对于SOC维持一致性的话,一般(我所知道的)就有两种:

一种是:HN只要收到一个请求,就snoop到所有的节点,假设CPU1有数据就回,如果snoop到CPU2,CPU2没有数据,那就不用回数据了,优点是HN不用搞个directory记录各个cacheline的状态,当然这不是CHI。缺点也很明显,所有的请求你都要完整地snoop到各个节点,带宽啥的,有点笨。这种呢,就适合少节点的,要是2,3个节点那你就随便snoop吧,其实现在一般的消费者级别的芯片都是这种,ACE(协议),啥的。

另一种:就是CHI这种,HN要搞个directory记录着各个cacheline,所以来了一个请求,我HN是知道哪个cpu有这个地址的数据的,所以每来一个请求,HN就查directory,查到哪个节点有数据,什么状态,就精准的往对应节点发snoop。

所以CHI协议,是基于directory和snoop机制来维持cache一致性的一个系统。

http://www.xdnf.cn/news/5719.html

相关文章:

  • 射频ADRV9026驱动
  • 供应链学习
  • 电脑端实用软件合集:土拨鼠+Rufus+实时网速监控工具
  • IDEA+git将分支合并到主分支、IDEA合并分支
  • 力扣2094题解
  • langchain4j中使用milvus向量数据库做RAG增加索引
  • 激光雷达点云畸变消除:MCU vs CPU 方案详解
  • AI Agent(11):垂直行业应用
  • 如何避免Java中的ConcurrentModificationException
  • 网页jupyter如何显示jpipvenv虚拟环境
  • android setImageResource和setBackgroundResource区别
  • 【Dv3Admin】工具视图配置文件解析
  • PTA:jmu-ds-最短路径
  • 日常组件复用与基于构件开发的本质区别
  • 第三章 仿真器介绍
  • python标准库--itertools - 迭代器工具在算法比赛的应用
  • 提权相关记录
  • Dsp38335利用Bootloader实现在线升级的技术原理
  • Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
  • 旋转图像算法讲解
  • Hive原理
  • python打包成exe
  • LiveData:Android响应式编程的核心利器
  • 大规模容器集群怎么规划
  • 段错误(Segmentation Fault)总结
  • 病毒传播模拟:多智能体系统与时空可视化引擎
  • 02_线性模型(回归分类模型)
  • JAVA实战开源项目:医院挂号就诊系统 (Vue+SpringBoot) 附源码
  • web:InfiniteScroll 无限滚动
  • vue-i18n 优化