java缓存--缓存一致性
为什么需要缓存
在现代的CPU(大多数)上,所有的内存访问都需要通过层层的缓存来进行。CPU的读/写(以及去指令)单元正常情况下甚至都不能直接与内存进行访问-这是物理结构决定的;CPU都没有管脚直接连到内存。相反,CPU和一级缓存(L1 Cache)通讯,而一级缓存才能和内存进行通讯。大约20年前,一级缓存可以直接和内存传输数据。如今,更多级别的缓存加入到设计中,一级缓存不能和内存直接通讯了,而二级缓存才可以。
那缓存的作用是什么呢?其目的就是为了弥补处理器和存储器之前相差巨大的处理能力。
缓存是如何运转的
- 程序以及数据被加载到主内存
- 指令和数据被加载到CPU的高速缓存
- CPU执行指令,把结果写到高速缓存
- 高速缓存中的数据写回主内存
- cpu会通过内存地址分别去L1缓存–>L2缓存–>L3缓存–>主存里去获取内存数据,如果其中某一层获取到则直接返回
- 从L1到L3其存储空间是一层比一层大,L1的缓存32KB,L2缓存256KB
- 缓存的最小单位为缓存行,大小为64个字节。&#