美文网首页
JUC并发编程-2.CPU多级缓存与JMM

JUC并发编程-2.CPU多级缓存与JMM

作者: 笨鸡 | 来源:发表于2019-06-11 21:51 被阅读0次

1.CPU多级缓存

1.1 为什么需要CPU cache

CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题(结构:cpu >> cache >> memory).

1.2 CPU cache有什么意义

1.时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问
2.空间局部性:如果某个数据被访问,那么与它响铃的数据很快也可能被访问

1.3 CPU缓存一致性协议 MESI

  • M: 被修改(Modified)

该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应内存之前)写回(write back)主存。
.
当被写回主存之后,该缓存行的状态会变成独享(exclusive)状态。

  • E: 独享的(Exclusive)

该缓存行只被缓存在该CPU的缓存中,它是未被修改过的(clean),与主存中数据一致。该状态可以在任何时刻当有其它CPU读取该内存时变成共享状态(shared)。
.
同样地,当CPU修改该缓存行中内容时,该状态可以变成Modified状态。

  • S:共享的(Shared)

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

  • I: 无效的(Invalid)

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

MESI状态转换图.png MESI转移表.png

2.JMM

CPU多级缓存1.jpg
CPU与JMM1.jpg
CPU与JMM2.jpg
JMM.jpg
JMM同步操作.jpg
JMM与线程.jpg

相关文章

  • JUC并发编程-2.CPU多级缓存与JMM

    1.CPU多级缓存 1.1 为什么需要CPU cache CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期...

  • Java高并发--CPU多级缓存与Java内存模型

    Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的...

  • ReentrantLock(AQS),Volatile,Sync

    本文参考: JUC学习(八):AQS的CLH队列并发编程——详解 AQS CLH 锁JMM和底层实现原理 AQS ...

  • Java-JMM

    JMM(JavaMemoryModel) Java内存模型,简称JMM,隶属于JVM。 现在的cpu都存在多级缓存...

  • Java并发与高并发总结

    Java 并发和高并发 ava 多线程模块: 并发的基本概念: CPU 多级缓存 Cpu多级缓存的意义? Cpu对...

  • JUC并发编程引导学习(超长篇)

    JUC并发编程学习 1、什么是JUC juc是Java并发编程的一个工具包,包名为java.util.concur...

  • 2、Java并发编程入门与高并发面试-课程基础

    慕课网 Jimin老师 Java并发编程入门与高并发面试 学习笔记Java并发编程入门与高并发面试 CPU多级缓...

  • Java并发编程

    并发编程基础 CPU多级缓存 我们为什么需要CPU缓存呢?因为cpu太快了,快到主存跟不上,cpu常常需要等待主存...

  • 并发基础

    想要深入并发编程,必然需要了解一些底层基础的知识点,例如什么是CPU的多级缓存,缓存之间的一致性又是如何实现的?以...

  • JUC并发编程

    知识点: 线程生命周期(新建、运行、阻塞、等待(一直等待)、超时等待(超时取消等待)、终止); Synchroni...

网友评论

      本文标题:JUC并发编程-2.CPU多级缓存与JMM

      本文链接:https://www.haomeiwen.com/subject/uywffctx.html