这个场景在性能优化下,应该很少会用到。但是还是总结一下。
Input: CPU给的一个地址,例如 0xffads1233423
Out: 这个地址上的值。
WORKFLOW
CPU
问高速缓存
,高速缓存
会拿这个地址的中间几个位置,组成一个key
高速缓存
拿着这个key
去set
里面查找,是否有当前的kley
-
false:
高速缓存从L2缓存读取这个地址的信息。同时把这个地址后面的一些位子,也一起加载到高速缓存中。 比如,CPU 地址是p1, 高速缓存会把p1
,p1+1
,p1+2
,等加载到缓存行中。至于加载多少,取决于缓存行的大小。 -
true
高速缓存直接返回给cpu
.
-
Discuss
从这个过程我们可以看到,
- 为了提高
缓存命中率
,我们需要尽量使用后面加载进来的地址东西。 - 对于已经加载到高速缓存的内容,如果他will be used.那么 keep it still
there
before it will be used.