【计算机系统原理】 组相联 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 位):000011B0CH
  • 组号(中间 3 位):010B2
  • 标记位(高 9 位):000000100B04H

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。
相关推荐
皙然6 小时前
深入拆解缓存一致性:从原理到实战,彻底解决数据不一致难题
缓存
皙然7 小时前
深入拆解MESI协议:从原理到实战,搞懂CPU缓存一致性的核心机制
java·缓存
深蓝轨迹8 小时前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
于樱花森上飞舞9 小时前
【Redis】初识Redis
数据库·redis·缓存
山楂树の11 小时前
【计算机系统原理】Intel 与 AT&T 汇编指令格式转换
汇编·学习·缓存
山楂树の11 小时前
【计算机系统原理】 直接映射(模映射) Cache 地址划分与访问过程
学习·缓存
cyforkk11 小时前
缓存穿透难题:当 Value 为空字符串时,该如何优雅处理?
缓存
呆子也有梦11 小时前
redis 的延时双删、双重检查锁定在游戏服务端的使用(伪代码为C#)
redis·后端·游戏·缓存·c#
roman_日积跬步-终至千里12 小时前
【2025下半年系统架构设计师案例分析】电商平台 MySQL + Redis 与缓存击穿治理
mysql·缓存·系统架构