首页 > 其他分享 >cache 一致性

cache 一致性

时间:2023-01-16 10:39:02浏览次数:31  
标签:Cache cache 总线 内存 一致性 Line 内存地址 CPU


合这个状态图,我们深入分析 MESI 协议的一些实现细节。
(1)某个 CPU(CPU A)发起本地读请求(Local Read),比如读取某个内存地址的变量,
如果此时所有 CPU 的 Cache 中都没加载此内存地址,即此内存地址对应的 Cache Line 为无效状
态(Invalid),则 CPU A 中的 Cache 会发起一个到 Memory 的内存 Load 指令,在相应的 Cache Line
中完成内存加载后,此 Cache Line 的状态会被标记为 Exclusive。接下来,如果其他 CPU(CPU
B)在总线上也发起对同一个内存地址的读请求,则这个读请求会被 CPU A 嗅探到(SNOOP),
然后 CPU A 在内存总线上复制一份 Cache Line 作为应答,并将自身的 Cache Line 状态改为
Shared,同时 CPU B 收到来自总线的应答并保存到自己的 Cache 里,也修改对应的 Cache Line
状态为 Shared。
(2)某个 CPU(CPU A)发起本地写请求(Local Write),比如对某个内存地址的变量赋值,
如果此时所有 CPU 的 Cache 中都没加载此内存地址,即此内存地址对应的 Cache Line 为无效状
态(Invalid),则 CPU A 中的 Cache Line 保存了最新的内存变量值后,其状态被修改为 Modified。
随后,如果 CPU B 发起对同一个变量的读操作(Remote Read),则 CPU A 在总线上嗅探到这
个读请求以后,先将 Cache Line 里修改过的数据回写(Write Back)到 Memory 中,然后在内存
总线上复制一份 Cache Line 作为应答,最后将自身的 Cache Line 状态修改为 Shared,由此产生
的结果是 CPU A 与 CPU B 里对应的 Cache Line 状态都为 Shared

cache 一致性_内存地址


cache 一致性_内存地址_02


cache 一致性_计算机原理_03


cache 一致性_内存地址_04


cache 一致性_缓存_05


链接:https://pan.baidu.com/s/1FEoLtB2gxL2JXcMnTmbyZQ?pwd=hiy4

提取码:hiy4


标签:Cache,cache,总线,内存,一致性,Line,内存地址,CPU
From: https://blog.51cto.com/u_15202985/6010080

相关文章

  • go-zero的一致性hash
    最近在尝试使用图来记录如何处理一个虚拟节点映射到多个物理节点(hash冲突,也就是图中(a2,b2在一起了,我们只能找到最后映射的物理节点))首先连线对应的是一个物理节点......
  • (11)SpringBoot整合EhCache做缓存
      摘要:本文介绍在SpringBoot项目中,如何使用EhCache做缓存。EhCache简介:EhCache是一个纯Java的进程内缓存框架,是Hibernate中默认的CacheProvider;其缓存的数据可以存放......
  • 一致性哈希算法
    一个良好的分布式哈希方案,应该具有良好的单调性,即服务节点的增减不会造成大量哈希的重新定位。首先,一致性哈希算法会将整个哈希值空间理解成一个环,其取值范围是\(0\sim2^......
  • Redis做缓存和SpringCache缓存
    记录一下Redis做缓存和SpringCache缓存的区别1.Redis做缓存的话,相当于是一个第三方缓存,所以项目重启之后缓存数据还是存在的2.SpringCache作缓存的话是建立在JVM上的,所以......
  • 《Spring in action 4》(九)SpringCache
    SpringCache文章目录​​SpringCache​​​​简述​​​​ConcurrentMapCacheManager​​​​切换成RedisCacheManager​​​​SpringCache注解​​​​注解声明规则​​......
  • hcache查看linux系统缓存的占用情况
    hcache是基于pcstat的,pcstat可以查看某个文件是否被缓存和根据进程pid来查看都缓存了哪些文件。hcache在其基础上增加了查看整个操作系统Cache和根据使用Cache大小排序的特......
  • node nodejs 绿色版 添加环境变量 淘宝镜像源 全局安装文件夹 npm_global npm_cache
    解压文件和创建两个文件夹配置一个文件将上面的两个文件夹路径添加到文件中同时添加npm的淘宝镜像源cache=D:\node-v16.17.0-win-x64\node_cacheprefix=D:\node-v......
  • 从实战出发,聊聊缓存数据库一致性
    在云服务中,缓存是极其重要的一点。所谓缓存,其实是一个高速数据存储层。当缓存存在后,日后再次请求该数据就会直接访问缓存,提升数据访问的速度。但是缓存存储的数据通常是短......
  • Spring Cache
    SpringCache1、SpringCache介绍SpringCache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。SpringCache提供一层抽象,底层可以切换......
  • @Cacheable使用在MyBatis的Mapper接口上
    背景使用Caffeine本地缓存,外加@Cacheable注解,想把这个注解加到mapper上,并且把参数id做key的时候,发现参数拿不到。这样是拿不到的@Cacheable(value="xxCache",key="......