《大话处理器》Cache一致性协议之MESI

Cache一致性协议之MESI

处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议,奔腾处理器有使用它,很多其他的处理器都是使用它的变种。

单核Cache中每个Cache line有2个标志:dirty和valid标志,它们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效,数据是否被修改),而在多核处理器中,多个核会共享一些数据,MESI协议就包含了描述共享的状态。

在MESI协议中,每个Cache line有4个状态,可用2个bit表示,它们分别是:

状态描述
M(Modified)这行数据有效,数据被修改了,和内存中的数据不一致,数据只存在于本Cache中。
E(Exclusive)这行数据有效,数据和内存中的数据一致,数据只存在于本Cache中。
S(Shared)这行数据有效,数据和内存中的数据一致,数据存在于很多Cache中。
I(Invalid)这行数据无效。

MESI状态

  • M(Modified)和E(Exclusive)状态的Cache line,数据是独有的,不同点在于M状态的数据是dirty的(和内存的不一致),E状态的数据是clean的(和内存的一致)。
  • S(Shared)状态的Cache line,数据和其他Core的Cache共享。只有clean的数据才能被多个Cache共享。
  • I(Invalid)表示这个Cache line无效。
E状态示例如下:

在这里插入图片描述
只有Core 0访问变量x,它的Cache line状态为E(Exclusive)。

S状态示例如下:

在这里插入图片描述
3个Core都访问变量x,它们对应的Cache line为S(Shared)状态。

M状态和I状态示例如下:

在这里插入图片描述
Core 0修改了x的值之后,这个Cache line变成了M(Modified)状态,其他Core对应的Cache line变成了I(Invalid)状态。

在MESI协议中,每个Cache的Cache控制器不仅知道自己的读写操作,而且也监听(snoop)其它Cache的读写操作。每个Cache line所处的状态根据本核和其它核的读写操作在4个状态间进行迁移。

MESI协议状态迁移图如下:

在这里插入图片描述

在上图中,Local Read表示本内核读本Cache中的值,Local Write表示本内核写本Cache中的值,Remote Read表示其它内核读其它Cache中的值,Remote Write表示其它内核写其它Cache中的值,箭头表示本Cache line状态的迁移,环形箭头表示状态不变。

当内核需要访问的数据不在本Cache中,而其它Cache有这份数据的备份时,本Cache既可以从内存中导入数据,也可以从其它Cache中导入数据,不同的处理器会有不同的选择。MESI协议为了使自己更加通用,没有定义这些细节,只定义了状态之间的迁移,下面的描述假设本Cache从内存中导入数据。

AMD的Opteron处理器使用从MESI中演化出的MOESI协议,O(Owned)是MESI中S和M的一个合体,表示本Cache line被修改,和内存中的数据不一致,不过其它的核可以有这份数据的拷贝,状态为S。

Intel的core i7处理器使用从MESI中演化出的MESIF协议,F(Forward)从Share中演化而来,一个Cache line如果是Forward状态,它可以把数据直接传给其它内核的Cache,而Share则不能。

大话处理器处理器基础知识读本的真正完整本,全部八章,手动呕血扫描加书签,非网上那种6.33MB的太监版~!以全家人性命为誓~! 作者简介   万木杨,网名木兮清扬,华为公司服务近6年,曾任软件工程师、算法工程师、系统工程师,擅长多媒体算法设计和编写高效代码。 作者自2004年起开始研究多媒体算法,从语音识别,到人脸动画,再到视频编解码,足迹遍布语音、图像、视频、3D。自2006年在DSP上编写程序,从此开始深入研究处理器内部结构,后来接触过大量的半导体公司和处理器芯片,对处理器技术和产品有着深刻的理解。 闲暇之余,作者喜爱读书,多年来保持平均两周一本的速度。 ·查看全部>>目录 第1章 漫游计算机世界 1.1 计算机的前世、今生、来世 1.2 计算机分门别类 1.3 PC机结构探秘 第2章 初识处理器——掀起你的盖头来 2.1 处理器是怎样工作的——处理器的硬件模型 2.2 怎样来使用处理器——处理器编程模型 2.3 处理器的分层模型 2.4 选什么样的处理器——适合的才是最好的 第3章 指令集体系结构——处理器的外表 3.1 指令集是什么 3.2 指令集发展的来龙去脉 3.3 指令集的五朵金花 3.4 地盘之争 3.5 汇编语言格式——没有规矩不成方圆 第4章 微架构——处理器的内心世界 4.1 跟着顺溜学流水线 4.2 从子弹射击到指令执行 4.3 从顺序执行到乱序执行——因时制宜 4.4 处理器并行设计——并行,提高性能的不二法门 4.5 指令并行(Instruction Level Parallelism) 4.6 数据并行(Data Level Parallelism) 4.7 线程并行(Thread Level Parallelism) 4.8 并行总结 4.9 微架构总结 第5章 Cache——处理器的“肚量” 5.1 什么是Cache——探索既熟悉又陌生的领域 5.2 处理器Cache结构——探索那些鲜为人知的秘密 5.3 Cache一致性 5.4 片内可寻址存储器——软件管理的Cache 第6章 编写高效代码——时间就是生命 6.1 软件效率——21世纪什么最重要?效率! 6.2 减少指令数——勤俭持家 6.3 减少处理器不擅长的操作——不要逼我做我不喜欢的事情 6.4 优化内存访问——别让包袱拖垮了你 6.5 充分利用编译器进行优化——编译器:我才是优化第一高手 6.6 利用多核来加速程序——人多力量大 第7章 SOC——吸星大法 7.1 SOC大一统时代 7.2 IP核 第8章 “芯”路历程——明明白白我的“芯” 8.1 逻辑电路基础——计算机的基本构成 8.2 芯片设计——芯者,国之大事,不可不察也 8.3 芯片制造——点沙成金
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值