【计算机系统原理】 组相联 Cache 地址划分与访问过程

目录

组相联映射

主存地址划分

[1. 计算地址总位数](#1. 计算地址总位数)

[2. 计算块内偏移量](#2. 计算块内偏移量)

[3. 计算 Cache 组数与组号位数](#3. 计算 Cache 组数与组号位数)

[4. 计算标记位(Tag)位数](#4. 计算标记位(Tag)位数)

[5. 地址划分结果](#5. 地址划分结果)

[主存块与 Cache 行的映射关系](#主存块与 Cache 行的映射关系)

[1. 映射规则](#1. 映射规则)

[2. 示例映射](#2. 示例映射)

[CPU 访问主存单元 0240CH 的过程](#CPU 访问主存单元 0240CH 的过程)

[1. 地址分解](#1. 地址分解)

[2. 访问流程](#2. 访问流程)


组相联映射

主存地址划分

1. 计算地址总位数

主存容量 256KB = 2^8 × 2^10 B = 2^18 B,因此主存地址总长度为 18 位。

2. 计算块内偏移量

块大小 64B = 2^6 B,因此块内偏移占 6 位,用于定位块内字节。

3. 计算 Cache 组数与组号位数

  • Cache 总块数:1KB / 64B = 16 块
  • 2 路组相联 → 每组 2 行 → 组数 = 16 / 2 = 8 = 2^3 组
  • 因此组号占 3 位,用于定位 Cache 组。

4. 计算标记位(Tag)位数

标记位 = 地址总位数 - 组号位数 - 块内偏移位数 = 18 - 3 - 6 = 9位,用于唯一标识主存块。

5. 地址划分结果

地址段 位数 作用
标记位(Tag) 9 位 标识主存块,与 Cache 组内各行标记比较
组号(Index) 3 位 定位 Cache 中的目标组
块内偏移(Offset) 6 位 定位主存块内的具体字节

主存块与 Cache 行的映射关系

1. 映射规则

  • 主存块号 = 主存地址 / 块大小
  • 组号 = 主存块号 mod 组数
  • 主存块只能映射到对应组内的任意一行(2 路组相联 → 每组 2 行可选)

2. 示例映射

以主存块号 i 为例:

  • 组号 g = i mod 8
  • 可映射到第 g 组的第 0 行或第 1 行
  • 若组内两行均已满,则需按替换算法(如 LRU)替换其中一行

CPU 访问主存单元 0240CH 的过程

1. 地址分解

将十六进制地址 0240CH 转换为 18 位二进制:0240CH = 0000 0010 0100 0000 1100B

  • 块内偏移(低 6 位):000011B → 0CH
  • 组号(中间 3 位):010B → 2 组
  • 标记位(高 9 位):000000100B → 04H

2. 访问流程

  1. 地址拆分:CPU 将 18 位地址拆分为 9 位标记、3 位组号、6 位块内偏移。
  2. 组定位 :根据组号 2 定位到 Cache 的第 2 组。
  3. 标记比较 :将标记 04H 与第 2 组内两行的标记并行比较:
    • 若某行标记匹配且有效位为 1 → Cache 命中
    • 若未匹配或有效位为 0 → Cache 缺失
  4. 命中处理 :根据块内偏移 0CH,从命中行中读取目标字节并返回 CPU。
  5. 缺失处理 :
    • 向主存请求读取包含 0240CH 的整个主存块(64B)。
    • 将主存块加载到第 2 组的空闲行中;若组内无空闲行,按替换算法淘汰一行。
    • 更新该行标记为 04H,有效位置 1。
    • 根据块内偏移 0CH 读取目标字节并返回 CPU。
相关推荐
Lucis__1 天前
Redis持久化机制解析
redis·缓存·操作系统·文件·非关系型数据库·1024程序员节
李纲明1 天前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
码士集团小青1 天前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
一条泥憨鱼1 天前
【Redis | 黑马点评】附近商铺功能源码解读
数据库·redis·缓存
小南家的青蛙2 天前
Redis的资料
redis·缓存·1024程序员节
深圳市恒星物联科技有限公司2 天前
排水管网监测后期运维成本高吗?成本构成与控制策略分析
运维·缓存
黄俊懿2 天前
【架构师从入门到进阶】第七章:缓存和存储的优化思路——第一节:缓存概述
数据结构·数据库·分布式·缓存·架构·系统架构·1024程序员节
李纲明2 天前
WordPress 挂上 Cloudflare 后询盘和后台异常:缓存规则、SSL 模式和真实 IP 怎么核
运维·缓存·https·cdn·wordpress·cloudflare
Shaoshing2 天前
缓存一致问题及常见解决方案
java·缓存
码士集团小青2 天前
Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?
数据库·redis·缓存