本文介绍: 以一个Cache Size 为 128 Bytes 并且Cache Line是 16 Bytes的Cache为例。首先把这个Cache想象成一个数组,数组总共8个元素,每个元素大小是 16 Bytes,如下图:现在考虑一个问题,CPU从0x0654地址读取一个字节,由于Cache大小相对于主存来说,是非常小的。所以Cache只能缓存主存中极小一部分数据。如何根据地址在有限大小的Cache中查找数据呢?现在硬件采取的做法是对地址进行散列(可以理解成地址取模操作)。
1 Cache的与存储地址的映射
以一个Cache Size 为 128 Bytes 并且Cache Line是 16 Bytes的Cache为例。首先把这个Cache想象成一个数组,数组总共8个元素,每个元素大小是 16 Bytes,如下图:
现在考虑一个问题,CPU从0x0654地址读取一个字节,由于Cache大小相对于主存来说,是非常小的。所以Cache只能缓存主存中极小一部分数据。如何根据地址在有限大小的Cache中查找数据呢?现在硬件采取的做法是对地址进行散列(可以理解成地址取模操作)。分为如下多种映射方式,他们各有优劣,同时也有着继承与发展的关系
1.1 直接映射缓存(Direct Mapped Cache)
1.1.1 地址映射方式
上面的例子中,直接映射缓存的地址映射分配方式如下:
1.1.2 直接映射缓存的优缺点
1.2 两路组相连缓存(Two-way Set Associative Cache)
1.2.1 地址映射方式
1.2.2 两路组相连缓存的优缺点
1.3 全相连缓存(Full associative Cache)
1.3.1 地址映射方式
1.3.2 全相连缓存优缺点
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。