运行时内存-硬件层数据一致性

本文探讨了硬件层数据一致性问题,包括CPU存储结构中的寄存器、高速缓存及其层次,以及在多CPU环境下数据冲突的挑战。介绍了总线锁和MESI缓存一致性协议作为解决方案,指出现代CPU采用缓存锁与总线锁相结合的方式确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.2. 硬件层数据一致性

1)存储器的存储结构
存储的层次结构可以分为两大类:一是CPU内部的,有寄存器、一级高速缓存、二级高速缓存;二是位于CPU共享的部分,包含:三级高速缓存、主存、硬盘、远程存储。数据的读取和存储都要经过高速缓存(Cache),CPU(CPU Core)与高速缓存间有一条特殊的快速通道。主存(Main Memory)与高速缓存都连接在系统总线(Bus)上,系统总线同时还用于其他组件的通信。
在高速缓存出现后不久,系统变得更加复杂,高速缓存与主存间的速度差异被拉大,直到加入了另一级缓存,新加入的缓存比第一级缓存更大的同时更慢。由于加大一级缓存的做法从经济上考虑是行不通的,所以有了二级缓存,甚至现在的某些系统已经拥有了三级缓存。
在这里插入图片描述
在这里插入图片描述

不同的存储结构,CPU对他们的访问速度也是不一样的,越往上的访问速度越快,但是所需要的成本越高,其访问速度如图所示,越接近CPU的缓存越小也越快。
在这里插入图片描述

2)存在的问题
如果有多个CPU,每个CPU都对一数据进行读取和写入,那么该数据的值将会发生冲突。
3)解决的方法:
【方法1 总线锁】
上代CPU使用的,原理是直接锁住系统总线,只能有一个CPU访问CPU外的信息,在上锁期间,其他的CPU是无法访问主存上信息的。所以也就导致了问题:效率低下。
在这里插入图片描述

【方法2 数据一致性协议】
数据一致性协议有很种,不过一般常说的是MESI缓存一致性协议。CPU每个cache line标记四种状态(额外两位):Modified 被修改状态、 Exlusive独享状态、 Share共享状态、 Invalid无效状态。
存在的问题:有些数据是无法被缓存的;跨越多个缓存行的数据;这些数据必须要使用总线锁实现了。
现代CPU的数据一致性实现是通过缓存锁和总线锁共同实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值