三种映射方式总结
目录
📊 Comparative Table
🎯 例子演示
你已经学习了三种Cache映射方式,我们可以从物理地址的结构划分这个核心出发,进行一个系统的对比性总结。
📊 Comparative Table
特性 / Mapping Type | 直接映射 (Direct Mapping) | 全相联映射 (Fully Associative Mapping) | 组相联映射 (Set-Associative Mapping) |
---|---|---|---|
物理地址划分结构 | `Tag | Index | Block Offset` |
Index/Set Index | 对应Cache中的唯一行号 | 无(任何块可存任何行) | 表示数据所在的“组号” |
Tag位作用 | 用于唯一标识主存块,配合Index判断是否命中 | 用于判断块是否命中 | 用于判断组内块是否命中 |
块内偏移 (Block Offset) | 表示在块中的偏移地址(取决于块大小,= log₂(block size)) | 相同 | 相同 |
Tag 位数 | 物理地址位数 - Index位数 - Block Offset位数 | 物理地址位数 - Block Offset位数 | 物理地址位数 - Set Index位数 - Block Offset位数 |
Index / Set Index 位数 | log₂(Cache 行数) | 无 | log₂(Cache 组数) |
映射方式 | 每个主存块只能映射到一个特定Cache行 | 每个主存块可以映射到任意Cache行 | 每个主存块可以映射到某一组内任意Cache行 |
命中判定方式 | 比较Index行的Tag与地址Tag是否一致 | 遍历所有行的Tag匹配 | 组内并行比较Tag匹配 |
硬件复杂度 | 低 | 高(需并行比较所有行) | 中等(组内比较) |
冲突率 | 高 | 最低 | 较低,随组数增加而降低 |
适用场景 | 简单、速度快的系统(如L1 Cache) | 对命中率要求极高的场合 | 通常的主流方案(现代Cache多用组相联) |
🎯 例子演示
另外,我对这三种映射的过程和物理地址位分解 做了一个简单的总结,下面是内容展示: