缓存+写缓冲区+无效化队列 == 缓存一致性协议+内存屏障

缓存+写缓冲区+无效化队列 == 缓存一致性协议+内存屏障

参考

计算机体系结构(第五版)-复习-MESI&MOESI协议

Java多线程编程实战指南-核心篇 第11章前4节

介绍三种基本的地址映射方法

ARM的cache和写缓冲器(write buffer

理解 Memory barrier(内存屏障)

计算机科学基础知识(一):The Memory Hierarchy

intel软件开发者指南

硬件

缓存+写缓冲区+无效化队列

指令

内存屏障指令

阶段

缓存 == 缓存一致性协议
缓存+写缓冲区+无效化队列 == 缓存一致性协议+内存屏障

MESI将缓存条目的状态划分为Modified,Exclusive,Shared,Invalid4种。并在此基础上定义了一组消息,用于协调各个处理器的读写内存操作。

无效态(Invalid) 此缓存行内容无效(空行)

共享态(Shared)此缓存行内容同于主存,并且其他处理器上的缓存也可能包含内存地址对应的副本数据。

独占态(Exclusive)此缓存行内容同于主存,并且这个内存地址的数据不存在与其他处理器缓存中。

修改态(Modified)此缓存行内容已被修改,不同于主存。

  • 处理器在读写操作时向总线发送特定的消息

  • 处理器嗅探总线中其他处理器发送的消息并回复。

缓存条目结构

缓存条目组成:tag+flag(缓存行状态标志)+data block(缓存行)

缓存条目地址:如0x00-0xFF,同内存地址一样连续的。

缓存条目地址对应存储单元位数:tag的位数+flag的位数+缓存行的位数

内存地址位数:32位。

内存地址对应存储单元位数:8位(4GB内存)

缓存行是缓存与cpu交换数据的单位。因为tag和flag的存在,缓存行的位数小于缓存条目的位数。

posted @ 2019-12-14 21:49  没有理由不会呀  阅读(878)  评论(0编辑  收藏  举报