浅学高速缓存

193 阅读5分钟

CPU高速缓存简单概述

CPU 高速缓存: 说白了就是一 “牛逼的缓存,嘎嘎快的缓存”。解决的是 CPU 速度与主内存(运行内存、物理内存)速度之间巨大差距的问题,它缓存的是程序实际使用的数据(Data)和指令(Instructions)。

A. 解决的问题:

 CPU 的执行速度远远快于访问主内存(DRAM)的速度。如果 CPU 每次需要数据或指令都去访问慢速的主内存,CPU 就会花费大量时间等待,性能会急剧下降。这被称为“内存墙”。

B. 它是看的见摸得着的硬件:

  高速缓存是集成在 CPU 内部(或非常靠近 CPU)的一小块速度极快但容量较小的静态随机存取存储器(SRAM)。它比主内存快几个数量级。

C. 工作原理: 基于局部性原理

  1. 时间局部性: 如果 CPU 访问了某个内存位置的数据或指令,它很可能在不久的将来再次访问它。
  2. 空间局部性: 如果 CPU 访问了某个内存位置的数据或指令,它很可能在不久的将来访问其附近的内存位置。

D. 如何工作:当 CPU 需要访问内存时

(1).  它首先检查所需的数据或指令是否在最快的一级缓存(L1 Cache)中(命中)。
(2).  如果命中,CPU 直接从 L1 Cache 中获取数据,速度极快。
(3).  如果未命中,则检查稍大稍慢的二级缓存(L2 Cache)。
(4).  如果 L2 也未命中,则检查更大更慢的三级缓存(L3 Cache,如果存在且共享)。
(5).  如果所有缓存都未命中,CPU 才不得不去访问慢速的主内存获取数据,同时会将这块数据及其附近的数据(一个缓存行)加载到各级缓存中,以备下次可能的使用。

E. 层级结构:

  • L1 Cache:最小最快,通常分为指令缓存(L1i)和数据缓存(L1d),每个 CPU 核心独享。
  • L2 Cache:比 L1 大、比 L1 慢,通常每个 CPU 核心独享或小范围共享。
  • L3 Cache:更大更慢,通常由同一个 CPU 芯片上的所有核心共享。

F. 关键作用:

 显著减少 CPU 访问内存的平均延迟,极大提升整体系统性能。缓存命中率是衡量 CPU 性能的关键指标之一。

存储器(硬件)层次结构

image.png

CPU性能衡量有两个指标

指标1: 响应时间(或执行时间) :执行一条指令平均时间
指标2:吞吐量,1秒内CPU可以执行多少条代码指令呢

举例: 假设某个CPU 执行一条指令320ns,

image.png

疑问1:为什么程序的代码指令和数据事先存储在磁盘中?

(1)存储在磁盘中的数据不易丢失
(2)磁盘容量很大,可以存储大量的程序数据和指令
手机,车机,平板电脑
EMMC嵌入式多媒体卡SSD固态硬盘,HDD机械硬盘
128G, 256G, 512G1T, 2T

疑问2:为什么程序执行的时候要先将磁盘中数据和指令加载到内存(物理内存,运行内存)中呢?

CPU读取磁盘数据是非常慢的哦,与之有鲜明对比的是CPU读取内存数据稍微快一点哦

image.png

image.png

疑问3:如何将磁盘中的数据和代码指令加载到内存中呢?

DMA(Direct Memory Access) 一种硬件技术,由独立的DMA控制器芯片(或集成在主板/SOC中)实现,详细信息可AI了解。

  • DMA是硬件加速数据传输的核心技术,它像一名“专职搬运工”,在磁盘与内存间直接搬数据,彻底解放CPU。

  • 数据加载流程:CPU发起请求 → DMA初始化 → 磁盘读取 → DMA传输 → 中断通知。

  • 现代计算机中几乎所有高速I/O设备(SSD、网卡、GPU)都依赖DMA提升性能

image.png 现在可以把内存或寄存器看成缓存的一种

image.png

为了让CPU可以更快的读取数据或指令执行,随着时间变迁CPU和内存之间性能差距越来越大,出现了 ”CPU高速缓存“,为了就是快,快快,快快快。

image.png CPU高速缓存L1, L2, L3 缓存数据快的你都受不了, 就是快, 但是Man你得既要快也要持久哈。 image.png

存在MMU中的一种高速缓存小组件

TLB(Translation Lookaside Buffer,快表)是计算机系统中加速虚拟地址到物理地址转换的硬件缓存,属于 CPU 内存管理单元(MMU)中的关键组件。它的核心作用是解决虚拟内存地址转换过程中的性能瓶颈。

TLB 的解决方案:缓存最近使用的页表项

  • TLB 本质上是一个高速、容量较小的硬件缓存(通常集成在 CPU 芯片上)。

  • 它缓存了最近成功转换过的虚拟页号到物理页帧号的映射关系(即页表项)。

  • 工作原理(简化)

    (1). CPU 需要转换虚拟地址 VA。

    (2). MMU 首先查询 TLB:用 VA 中的虚拟页号作为键去查找 TLB。

    (3). TLB 命中: 如果在 TLB 中找到对应的条目(TLB Hit),则立即获得物理页帧号。物理地址 PA = 物理页帧号 + VA 中的页内偏移量。整个过程非常快(通常在 1 个 CPU 周期内完成)。

    (4). TLB 未命中: 如果在 TLB 中没找到(TLB Miss),则 MMU 必须启动代价高昂的页表遍历过程,从内存(或更高级缓存)中查找正确的页表项。找到后,将该页表项加载到 TLB 中(可能替换掉一个旧项),然后才能完成地址转换和内存访问。这个过程非常慢。

image.png

image.png

无处不在的缓存

image.png