多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Cache 与主存的三种映射方式速记总结如下

Cache 与主存的三种映射方式速记总结如下 Cache 与主存的三种映射方式速记总结如下直接映射映射规则主存块号 mod Cache 总块数 Cache 块号即每个主存块有唯一对应 Cache 行特点地址结构含「标记Tag 组索引Index即块号 块内偏移Offset」硬件实现最简单成本低。缺点冲突率高不同主存块竞争同一 Cache 行Cache 利用率低。全相联映射映射规则主存块可映射到 Cache 中任意空闲行或替换某行特点需对所有 Cache 行的 Tag 并行比较查找速度慢、功耗高、电路复杂需全比较器阵列。优点零冲突Cache 空间利用率最高命中率通常最优。组相联映射最常用映射规则Cache 分为若干组如每组 2/4/8 行主存块映射到固定组由块号 mod 组数决定组内自由选择行类似全相联特点折中设计——组索引定位组Tag 在组内比对兼顾速度、成本与命中率。例如128 行 Cache每组 4 行 → 共 32 组 → 主存块映射到 (块号 mod 32) 所在组再在该组 4 行中匹配 Tag。✅ 速记口诀“直映快但易撞全联准但太忙组联平衡是王道。”在直接映射中主存块映射到 Cache 的行号计算公式为Cache 行号 主存块号 mod Cache 总行数已知主存块号 200Cache 总行数 64计算200 ÷ 64 3 × 64 192余数 200 − 192 8即200 mod 64 8✅ 所以主存块号为 200 的块应映射到Cache 第 8 行行号从 0 开始计数即第 0 行、第 1 行……第 8 行是第 9 个物理行。⚠️ 注意Cache 行号范围是 0 ~ 63共 64 行余数 8 合法且唯一对应。在直接映射中主存块号到 Cache 行号的映射公式为Cache 行号 主存块号 mod Cache 总行数已知主存块号 1000Cache 行数 128计算1000 ÷ 128 7 × 128 896余数 1000 − 896 104即1000 mod 128 104✅ 因此主存块号 1000 映射到Cache 第 104 行行号从 0 开始范围 0 ~ 127104 在有效范围内。验证128 × 7 896896 104 1000 ✔️
返回列表