加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 数码 > 正文

CPU缓存和内存屏障不得不说的联系

发布时间:2021-05-31 18:33:55 所属栏目:数码 来源:互联网
导读:在CPU缓存出现不久,随着系统越来越复杂,高速缓存和主内存之间的速度被拉大,直到加入了另一级缓存,新加入的这级缓存比第一缓存更大,并且更慢,而且经济上不

在CPU缓存出现不久,随着系统越来越复杂,高速缓存和主内存之间的速度被拉大,直到加入了另一级缓存,新加入的这级缓存比第一缓存更大,并且更慢,而且经济上不合适,所以有了二级缓存,甚至是三级缓存。每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。当CPU要读取一个数据时,首先从一级缓存中查找,如果没有找到再从二级缓存中查找,如果还是没有就从三级缓存或内存中查找。一般来说,每级缓存的命中率大概都在80%左右,也就是说全部数据量的80%都可以在一级缓存中找到,只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取,由此可见一级缓存是整个CPU缓存架构中最为重要的部分。

CPU缓存一致性

多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。

CPU中每个缓存行使用四种状态进行标记

M(被修改,Modified):

该缓存行只缓存在该CPU缓存中,并 且是被修改过的,与主内存数据不一 致,缓 存行的数据需要在未来某个时 间点写回主内存。当被写回主内存 之后,该缓存行就会变成独享状态。

E(独享的,Exclusive)

该缓存行只被缓存在该CPU缓存中,并且与主存数据一致,可以在任何时刻当有其他CPU读取该内存时变成共享(shared)状态,同样的,当CPU修改该缓存内容时,该状态可以变成M状态。

S(共享的,Shared)

该状态意味着该缓存行可能被多个CPU缓存,并且各个缓存与主内存数据一致,当有一个CPU修改该缓存行时,其他CPU中该缓存行可以被作废(变成无效状态(Invalid))

I(无效的,Invalid)

该缓存是无效的(可能有其他CPU修改了 该缓存行)。

在一个典型系统中,可能会有几个缓存共享主存总线,每个相应的CPU会发出读写请求,而缓存的目的就是减少CPU读写共享主存的次数。

一个缓存除在I状态外都可以满足cpu的读请求,一个invalid的缓存行必须从主存中读取来满足该CPU的请求。

一个写请求必须是在M或E状态才能被执行,如果缓存行处于S状态,必须先将其它缓存中该缓存行变成Invalid状态(也即是不允许不同CPU同时修改同一缓存行,即使该缓存行中不同位置也不允许)。

一个处于M状态的缓存行必须时刻监控所有试图读取该缓存行相对主内存的操作,这种操作必须在缓存将该缓存行写回主内存并将状态变成S之前被延迟执行。

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读