在多线程并发场景下,一般的累加很可能错的
CPU 多级缓存
- Main Memory : 主存
- Cache : 高速缓存, 数据的读取存储都通过此通知缓存
- CPU Core : CPU 外围
- Bus : 系统总线
CPU Core 和 Cache 通过快速通道连贯,Main menory 和 Cache 都挂载到 Bus 上通信,Bus 还用于其它组件的通信,在 Cache 呈现后, 零碎变得越来越简单,Cache 和 Main memory 的速度差别越来越大,直到退出另一级 Cache, 新退出的 Cache 比第一级 Cache 要大, 然而速度更慢, 因为加大一级 Cache 从经济上不划算,所以呈现了二级 Cache, 三级 Cache.
为什么要应用 CPU CACHE
CPU 的频率太快了, 快到主存跟不上, 在 CPU 时钟周期内,CPU 须要期待主存, 浪费资源,这样 CPU 会花很长时间期待数据或把数据写入主存。所以 Cache 呈现的意义是匹配 Main menory(主存)和 CPU 速度不匹配的问题。
CPU > CACHE > Main Memory
CPU CACHE 的意义
缓存的容量要远远小于 Main Memory(主存), 因而呈现缓存不命中的状况在劫难逃。
CACHE 意义
1. 工夫局部性: 如果一个数据被拜访,那么在不久的未来很可能再次被拜访。
2. 空间局部性: 如果一个数据被拜访,那么它相邻的数据很可能被再次拜访。
缓存的工作原理: 当 CPU 读取一个数据时,先从 Cache(缓存)中查找, 如果查到了,就间接送给 CPU 解决, 反之就会去速度慢的 Main Memory(主存)去读取, 并把该数据写入到 Cache(缓存), 下次 CPU 再次读取该数据时,间接去 Cache 取。
Cache(缓存)的命中率很高 (90%), 也就是说 CPU 下一次读取数据 90% 都在缓存,只有 10% 的数据须要去 Main Memory(主存) 中读取。