cache的功能:为了解决CPU和主存之间速度不匹配的一种技术,其原理基于程序运行中具有的空间局部性和时间局部性
cpu和cache之间的数据交换是以字为单位的,而cache和主存之间的数据交换是以块为单位的
cache的命中率:h=cache中完成存取的总次数/(cache中的次数+主存中完成的次数),所以h越接近1则性能越好
主存与cache的地址映射:与主存相比,cache的容量很小,它保存的内容只是主存内容的一个子集,因此,把主存地址定位到cache中,称为地址映射
地址映射的三种常用方式:全相联映射方式,直接映射方式,组相联映射方式
全相联映射方式:当计算机要访问某个数据的时候,通过访存指令指定一个内存地址(包括主存和cache),然后要在指令中的块号与cache中所有行的标记同时比较,如果命中,则按字地址从cache中读取一个字,否则,则按内存地址从主存中读取这个字,缺点是比较器电路难于设计实现,因此使用与小容量的cache采用
直接映射方式:根据主存进行取模来地址映射,比如主存有256块,而cache只有8行,则,cache的标记位数有8位,其中3位作为行号,后面5位作为0-31的二进制表示,举例,如果主存块数位256,每个块有4个字,则内存地址为10位,也就是指令中必须给出10位的内存地址,这种方式比较电路简单,但是容易发生冲突,因此适用于大容量cache的场合
组相联映射方式:就是前面两种方式的折中,将cache进行分组,比如将8行的cache分成4组,每组两行,cache的标记组成为2位的组号,6位0-63的二进制表示,在每组的里面进行类似全相联映射的比较