详解计算机储存系统,局部性原理,高速缓存与寄存器的作用

计算机储存系统

根据机械原理,较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低速设备。比如说,一个典型系统上的磁盘驱动器可能比主存大1000倍,但是对处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大1000万倍。
针对这个原因,计算机系统中的储存结构被设计成了多层,根据访问速度来排列,最顶层的访问速度最快相应的造假也更高储存容量更少,低层的造价便宜容量大,访问速度也更低,这样设计的主要原因是上一层的存储器作为低一层存储器的缓存,这种设计有效的原因是使用了局部性原理
在这里插入图片描述

局部性原理

局部性原理,简单来说,就是利用数据访问的特性,将频繁或快要访问的数据加载到高性能的存储设备上,比如高速缓存,而将不常用的数据放在低成本的存储设备上,比如硬盘。
数据访问特性主要分为两种,时间局部性与空间局部性

  • 时间局部性
    如果一个数据被访问,那么它在不久的将来很可能被再次访问,比如在程序中的循环结构、重复操作或频繁调用的函数,导致某些数据(如循环变量、计数器等)被反复使用,通过缓存保留最近访问的数据,可大大减少重复访问低级存储器的延迟。
  • 空间局部性
    如果一个数据被访问,那么它附近的数据(如相邻内存地址)也可能在不久的将来被访问,缓存不仅加载被请求的数据,还会预取其相邻数据(如整个缓存行或磁盘块),因为程序很可能随后访问这些相邻数据,比如遍历一维数组时,访问元素 a[i] 后,很可能继续访问 a[i+1]
    通过这两种特性,储存系统可以高效的将数据放入缓存中,减少访问低级储存设备带来的延迟

高速缓存

处理器访问主存或者磁盘等外部储存单元,速度及慢,而在整个计算机系统中数据的访问与复制是非常频繁的,为了解决这一点,设计师们设计了一种介于处理器与主存之间的储存设备高速缓存,用来储存处理器未来可能需要的数据
现在主流的处理器都设计有,三个高速缓存分别为L1、L2、L3,L1高速缓存一般直接设计中处理器中,它的访问速度是最快的接近于访问寄存器,相应的储存大小也是最小的,而L2、L3的访问速度低于L1,不过容量更大

  • L1缓存:分为指令缓存与数据缓存,直接嵌入处理器核心,延迟约1-4个时钟周期,容量通常为32-64KB。
  • L2缓存:核心私有或共享,容量数百KB至数MB,延迟约10-20周期。
  • L3缓存:多核共享,容量数MB至数十MB,延迟约30-50周期。
    高速缓存以“缓存行”(通常64字节)为单位加载数据,利用空间局部性预取相邻数据。
    缓存行是缓存与主存之间数据传输的最小单位。当处理器访问某个内存地址时,缓存控制器会一次性加载该地址所在的整个缓存行,而非仅请求的单个字节或字,常见的缓存行大小为 64字节(如x86、ARM架构),部分架构可能使用其他大小(如32字节或128字节)。大小选择需权衡空间局部性利用率和缓存污染风险。
    在这里插入图片描述

L1、L2、L3高速缓存也充分利用了局部性原理

寄存器与寄存器文件

寄存器是CPU内部的小型、高速存储单元,直接嵌入在处理器核心中,其容量通常为固定大小(例如32位或64位),不过访问速度远高于内存(L1缓存也比寄存器慢),在指令执行过程中,直接参与算术逻辑运算(ALU 操作)、数据搬运和指令控制,如“加法指令”可能要求将两个寄存器的值相加,并将结果存回一个寄存器。
寄存器分为两大类,通用寄存器与专用寄存器

  • 通用寄存器
    用于存储临时数据和地址,例如x86架构的EAXEBX,ARM的R0-R15,RISC-V的x0-x31
  • 专用寄存器
    • 程序计数器(PC):存储下一条待执行指令的地址。
    • 栈指针(SP):指向当前栈顶地址。
    • 状态寄存器(FLAGS/PSW):存储运算结果的状态(如零标志、进位标志)。
    • 指令寄存器(IR):暂存当前正在执行的指令。
      通过寄存器可以大大提高系统的运行效率,将频繁使用的数据保存在寄存器中,避免低速的内存访问,并且指令操作数直接从寄存器读取,无需等待内存。多个寄存器可同时为不同指令提供数据(如流水线中的多条指令)。

寄存器文件是CPU内部的一组寄存器的集合, 通常由高速静态随机存储器(SRAM)构成,支持多路读写,以结构化方式组织(如数组或矩阵),通常通过多端口访问,允许同时读取多个寄存器的值(例如RISC指令需要两个源操作数),允许在一个时钟周期内写入结果(如超标量处理器支持多指令提交)。

主存

主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。从物理上来说,主存是由一组动态随机存取存储器(DRAM)芯片组成的,从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),这些地址是从零开始的。
主存是介于高速缓存与外部存储(如磁盘、SSD)之间的核心存储层次,承担着程序和数据临时存储的核心任务。主存直接与CPU交互,是计算机运行程序和数据处理的“工作台”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值