skip to content

Search

缓存

3 min read Updated:
白花,草地与天空

关于缓存cache的知识,包括缓存作用,缓存结构

直接映射缓存

直接映射地址

直接映射缓存将内存地址分为三个部分:标签(tag)、索引(index)和块内偏移(block offset)。

缓存只是内存的一小块拷贝。

直接映射缓存中,每一块缓存(就是一行)对应一个索引,包含Valid位, tag标签和数据块。在每个索引对应的块里面,通过offset寻找具体某一个字节。

块内偏移offset的位数的2次幂等于块的大小。索引index的位数的2次幂等于缓存行数。

直接映射缓存示例 直接映射缓存结构

全相联缓存

全相联结构的缓存取消了索引,而是改由tag标签来标识每一块缓存。

内存数据可以被存储在缓存的任何位置。

当访问缓存时,检查所有缓存行的标签,以找到匹配的标签来确定数据是否在缓存中。

全相联缓存结构

组相联缓存

组相联缓存是介于直接映射缓存和全相联缓存之间的一种设计。

组相联缓存将缓存分为多个组,每个组包含多个缓存行。每个内存地址通过索引确定它所属的组,然后在该组内进行全相联搜索以找到匹配的标签。

组相联缓存地址 组相联缓存结构

多级缓存

多级缓存将缓存分为多个层次,例如L1、L2和L3缓存。

L1缓存从L2缓存中获取数据,L2缓存从L3缓存中获取数据,L3缓存从内存中获取数据。

多级缓存有效提高了访问内存的速度。