直接映射:
将主存的每一个地址分成以下样式:
|地址 |块内地址|
|标记 |Cache块号|块内地址|对于Cache来说,只保留标记和块内地址;
因此,标记等于主存地址位数减去Cache地址位数;
比较过程:
- cpu给出想要的地址;
- 将地址的后几位分出,找到对应的Cache块;
- 将对应的Cache块的标记与主存地址的前几位进行对比;
- 只需要
一个比较器
全相联映射:
由于内存中的每一块都会和Cache中的各块相对应,因此需要将主存地址全部保留作为Cache标记;
比较过程:
- cpu给出想要的地址;
- 将主存地址与Cache各块进行比较
- 需要
Cache块个数个比较器
组相联映射:
将每一个地址分成以下样式:
主存:
|地址 |块内地址|
|标记 |Cache组号|块内地址|
Cache:
|标记 |块|比较过程:
- cpu给出想要的地址;
- 将主存地址后几位拆出(拆的位数根据分成几组而定);
- 根据主存地址后几位找到对应的组;
- 将组中的各个块标记和地址前几位进行比较
- 需要
(Cache每组中的块数)个比较器
如何求标记位数:
- 求出Cache中的块数、主存块数;
- 求出根据题目要求,Cache可以分为多少组;
- 主存块位数 - 组数位数 = 标记位数