今天复习了下CPU缓存的知识。(๑•̀ㅂ•́)و✧
文章目录
CPU的访问速率要远高于内存的访问速率,为了减少内存访问次数,提高计算机系统效率,CPU中引入了缓存。
这是我虚拟机的三级缓存结构。L1d和L1i是一级缓存,他距离cpu核心最近,
其中,l1d用来存数据,l1i用来存指令。L1和L1 cache是每个核心独有的缓存,而L3则是多个cpu核心共享的。
缓存每次从内存中读取的数据的大小cache line 可以从这里看到,默认是64字节。
接下来进入正题:
数据写入内存的两种方式
如何同步cache和内存的数据呢?
写直达 & 写回
写直达就是每次写数据的时候都同时往cache和内存写。如果写操作比较频繁的话,这样显然效率很低。
写回则是cpu只往cache写,只有当某个cache block要被替换时,才把他写回内存,这就引出了下一个问题:
缓存一致性问题
因为每个cpu核心都有自己私有的cache。假设有两个cpu核心A和B,他们都从内存读取了同一个变量i,之后A修改了 i 的值并且写回了内存,此时B的缓存中 i 的值就和内存中的i不一