Hardware cache的目的
Hardware Cache的是为系统加速而生的,这个是众所周知的事情。不过为了本文内容的完整性,我在此还是先将hardware cache的功能讲一下,不过我会尽量简短一点。
cpu访问hardware cache的速度要远高于访问主内存的速度,为了加快系统运行速度,会将主内存的部分数据放在hardware cache中,这样cpu就不必每次都访问主内存,如果要访问的数据在cache中命中,则直接从cache中读数据或者直接修改cache中的数据即可,从而加快了系统运行速度。至于由于hardware cache的引入,出现的多master环境下内存不一致问题,我们在后面的章节讨论。
这里有两个问题要特别注意:
第一,hardware cache由于比较昂贵,所以一般容量较小,而主内存一般容量很大,所以主内存中的数据不可能全部放在hardware cache中,所以cache中的内容在必要的时候会同步到内存,以便能装入新的内容。
第二,hardware的操作单位是cache line,cache line的长度由芯片设计而定,本文我们以32B cache line分析。
三种类型的cache
我们以32K的cache容量,32B的cache line size来分析。32K的cache容量,每个cache line是32B,所以总共有1024个cache line。
直接映射的cache
直接映射的cache方案中,每个cache line所对应的物理内存都是固定的,映射关系如