所谓的高速缓存(CPU Cache),就是我们常说的一级,二级,三级缓存。也是嵌入在CPU芯片中的芯片组。访问速度逐级减小而容量增加增大。
缓存条目中又包含三个属性:
组标记(Tag)指向了这个缓存数据在主内存中的数据的地址;
flag标识了缓存行的状态;
Data Block包含多个变量的值;
处理器在读写高速缓存的时候,会根据变量名执行一个内存地址解码的操作,解析出来3个东西,index、tag和offset。
index用于定位到拉链散列表中的某个bucket的位置;
tag是用于定位缓存条目;
offset是用于定位一个变量在cache line中的位置;
如果说可以成功定位到一个高速缓存中的数据,而且flag还标志着有效,则缓存命中;否则不满足上述条件,就是缓存未命中。如果是读数据未命中的话,会从主内存重新加载数据到高速缓存中,现在处理器一般都有三级高速缓存,L1、L2、L3,越靠前面的缓存读写速度越快;