是什么

  • 定义TLB 与 Cache 结构辨识 是通过 408 统考中给出的硬件结构图、地址切分方式或文字参数,快速反推 TLB/Cache 的映射方式、硬件介质(SRAM/DRAM)以及控制策略(替换算法/写策略)的方法。

  • 大白话:看懂考卷上的硬件原理图和参数表,一眼看穿“这是什么映射方式”、“用什么芯片造的”、“怎么替换”以及“数据怎么写回”。

核心内容

1. 如何一眼看出 TLB 的映射方式?

看图或看参数时,抓住 “虚页号是否被切分”“比较器的连接方式”

                    ┌──► 虚页号完整送入每一项比对 ──────────────► 【全相联映射】
                    │
虚页号 (VPN) ───────┼──► 拆为 [ TLB Tag ] + [ TLB 组号 ] ────────► 【K 路组相联映射】
                    │
                    └──► 拆为 [ TLB Tag ] + [ TLB 行号 ] ────────► 【直接映射】
判别特征全相联映射(统考最常考)K 路组相联映射直接映射(极少见)
看结构图中的比较器每一行都有一个比较器,虚页号同时送入所有比较器并行比对。只有 K 个比较器,先用组号选中一组,组内 K 行并行比对。只有 1 个比较器,先用行号选中一行,直接比对 Tag。
看地址切分虚页号没有切分,完整的虚页号直接作为 TLB Tag(字段 B 长度 = 虚页号长度)。虚页号被切为 [ TLB Tag ] + [ TLB 组号 ] 两截。虚页号被切为 [ TLB Tag ] + [ TLB 行号 ] 两截。
文字描述关键词“相联存储器(CAM)实现”、“可放入任意表项”。“4 路组相联 TLB”、“共 8 项划分为 2 组”。“虚页号低位直接作为快表索引”。

2. TLB 是用 SRAM 还是 DRAM 实现?

  • 标准答案SRAM(静态随机存储器)

  • 判别理由与考点

    • 位置与速度需求:TLB(Translation Lookaside Buffer)集成在 CPU 内部(MMU 中),属于极高速缓存,必须在 单个 CPU 时钟周期内 完成虚实地址转换。TLB 与 Cache 都在带有虚线边框的区域内即为CPU内部

    • 介质特性:SRAM 采用双稳态触发器存储,速度极快(纳秒级),不需要动态刷新;而 DRAM(动态随机存储器)需要定期刷新且速度较慢,主要用于主存

  • 遇到问 “TLB / Cache 采用什么存储介质”:统一回答 SRAM(因为它们都在 CPU 片内,追求极速,不需要动态刷新)。

  • 遇到问 “主存(内存)/ 页表存放介质”:统一回答 DRAM(主存容量大、成本低、需要动态刷新)。

3. 如何一眼看出 Cache 的映射方式?

观察 Cache 结构图的 “槽位排列”“物理地址字段切分”

Cache 映射方式看结构图特征看物理地址切分特征
直接映射每一行只有 1 个 Data 槽位1 个 Tag 槽位;由“行号”直接索引到具体行。物理地址划分为:




[ Tag ] + [ Cache 行号 ] + [ 块内地址 ]
K 路组相联映射同一个组号/行号下横向并排了 K 个数据槽位(如左路+右路=2路),对应并联了 K 个比较器物理地址划分为:




[ Tag ] + [ Cache 组号 ] + [ 块内地址 ]




全相联映射无任何行号/组号译码器,物理地址 Tag 直接送入所有 Cache 行的比较器。物理地址划分为:




[ Tag ] + [ 块内地址 ]




(无任何组号/行号)

4. 替换算法(LRU)与写策略(回写/直写)的判定与标志位

① 替换算法判断(LRU vs 其他)

  • 判定规则

    • 直接映射:位置唯一确定,不需要任何替换位(0 bit)

    • 组相联 / 全相联映射:若题目明确采用 LRU 算法,单行所需的替换控制位为:

      • 2 路组相联:

      • 4 路组相联:

      • 8 路组相联:

② 写策略判断(回写法 vs 直写法)

  • 回写法(Write Back / 写回法)

    • 核心特征:只写 Cache 不立即写主存,仅在 Cache 行被替换淘汰时才写回主存。

    • 必备标志位必须包含 1 位“脏位/修改位(Dirty Bit)”(1 表示被修改过,0 表示未修改)。

  • 直写法(Write Through / 全写法)

    • 核心特征:写 Cache 的同时写回主存(通常配有 Write Buffer)。

    • 必备标志位不需要脏位(0 bit),因为 Cache 与主存数据时刻保持一致。

5. 单行控制位综合速查清单

看主存物理地址占多少位

一、方法一:Cache 视角切分(向下看)

根据 Cache 的三种映射方式,物理地址切分公式通用覆盖如下:

  • 组相联映射(考得最多)

  • 直接映射

  • 全相联映射

任何一个物理地址送入 Cache,其二进制位都必须且只能被瓜分为这几个字段,因此各字段位数之和必定严格等于物理地址总位数

二、方法二:虚存分页视角拼接(向上看)

在页式/段页式虚拟存储管理中:

  • 为什么绝对通用

    • 分页机制的核心原理就是“把物理内存按固定页面切块”。

    • 物理地址的高位用来定位是第几个物理页面(实页号),低位用来定位页面内部的偏移量(页内地址)。

    • 无论是单级页表、多级页表,还是 TLB 快表,虚实地址翻译最终拼出来的物理地址结构永远是 [ 实页号 ] + [ 页内地址 ]

三、考场上唯一的特殊陷阱(非对齐/分段)

这两种方法在以下极特殊场景下看图时需要注意提取方式:

  1. 纯分段存储管理(非分页)

    • 若题目是纯段式虚存,物理地址 (通过加法器计算得出,而不是直接做二进制拼接)。不过 408 绝大多数涉及 Cache/TLB 的大题全部是页式或段页式

  2. 图里没标实页号位数,只给十六进制内容

    • 例如图中 TLB 表项实页号写着 F800H(4 个十六进制字符 ),此时要确认高位是否有省略前导 0,一般优先以 Cache 的字段切分和给定的主存容量(如 )进行双向验算闭环。

例题

  • 题目(2018 统考真题节选):

    某计算机 CPU 进行存储访问的过程示意图中:

    1. 虚拟地址 32 位(虚页号 20 位,页内地址 12 位),TLB 中每一行左侧均配有一个独立的比较器,直接接收 20 位虚页号;

    2. 物理地址划分为:[ 20位 Tag ] + [ 3位 组号 ] + [ 5位 块内地址 ];Cache 结构图中每一行有 2 个并排的 Tag+Data 槽位,并各接一个比较器。

    • 请回答:

      ① TLB 采用什么映射方式?TLB 是用 SRAM 还是 DRAM 实现?

      ② Cache 采用什么映射方式?若 Cache 采用 LRU 算法和回写法,则 Cache 每一行中除数据、标记和有效位外,还应有哪些附加位?各占几位?

  • 分析

    1. TLB 判定:20 位虚页号没有切分出组号,直接并行接入所有行的比较器 全相联映射。TLB 位于 CPU 内部要求单周期完成,采用 SRAM

    2. Cache 判定:物理地址给出了“3位组号”,且图中一个组内并排包含 2 个路(2 个槽位、2 个比较器) 2 路组相联映射。(看 Cache 结构图:每一行包含两个槽位(左边一列 Tag+Data,右边一列 Data+Tag),由“3位组号”选中一行,然后每路各有一个比较器并行比对。这说明每组有 2 行,采用的是 2 路组相联映射。)

    3. 控制位判定

      • 回写法(Write Back) 需要 1 位脏位(修改位)

      • 2 路组相联采用 LRU 需要

  • 规范答案

    1. TLB 采用 全相联映射;TLB 采用 SRAM 实现。

    2. Cache 采用 2 路组相联映射;Cache 每一行除数据、标记和有效位外,还应有 脏位(修改位,1 位)LRU 替换位(1 位)

⚠️ 易错点

Warning

  • 把 TLB 介质错答为 DRAM:DRAM 速度慢且需要周期性动态刷新,只能做主存;TLB 位于 CPU 内部,是与寄存器、Cache 同级别的超高速硬件,必为 SRAM

  • 全相联 TLB 误切组号:看到 TLB 时,先看虚页号有没有被拆分成两截。若虚页号完整送入比对,则是全相联;千万不要盲目拿主存/Cache 的组数公式套用到 TLB 上。

  • 直写法硬加脏位:直写法(Write Through)数据随时同步写入主存,Cache 行永远与主存一致,绝不需要脏位(Dirty Bit 为 0 位)

  • LRU 位数算错基数:组相联映射的 LRU 位数取决于组内路数 (即组相联度),即 ,而不是 Cache 的总行数或总组数。