三级缓存,MESI缓存一致性协议,指令重排,内存屏障,JMM,volatile。单拿一个出来,想必大家对这些概念应该有一定了解。但是这些东西有什么必然的联系,或者他们之间究竟有什么前世今生想必是困扰大家的一个问题。
为什么有了MESI协议,我们还需要volatile?
内存屏障的由来?
指令重排带来的问题?
下面我们通过分析每一个技术的由来,以及带来的负面影响,跟大家探讨一下这些技术之间的联系。具体每个关键词相关文章也很多不再赘述,只谈个人理解。
CPU的发展很快,几乎18-24个月,CPU的计算能力就能翻一番,然而内存的发展却相对缓慢,以至于内存的读写速度远远跟不上CPU的计算能力,也就是说,在CPU和内存的资源交换中,CPU常常需要等待内存,而浪费了大量的计算能力。三级缓存的出现正是为了弥补内存的慢和CPU的快而诞生的产物。
CPU将不再直接与内存进行数据的交换而是在二者之间加入一个缓存以解决这种不协调而导致的资源浪费情况。当然了缓存一定是比内存的读写速度更快的,不然也没有这个必要了。那是不是我们直接用缓存就不用内存了,呵呵,钱钱钱。
所谓的三级缓存正是诞生在这样的一个背景下。
三级缓存分为三种:L1 Cache,L2 Cache,L3 Cache
内存以及三级缓存的响应时间如上所示,由此可知内存和缓存的差距还是很大的,当时硬件价格和上图响应时间是成正比的。响应时间越快,价格越贵。
2,CPU缓存架构不同的CPU厂商的架构也有些不同,在这里只介绍流行的缓存架构
缓存的意义
1 时间局限性:如果某个数据被访问,那么它在不久的将来有可能被在次访问 2 空间局限性:如果某个缓存行的数据被访问,那么与之相邻的缓存行很快可能被访问到