4.1 存储器的层次结构
L22
学习目标
存储器从寄存器到辅存形成多层结构,速度递减、容量递增,局部性原理是虚拟存储和缓存工作的基础。
- 存储器层次结构:从寄存器、高速缓存、主存到辅存,速度递减、容量递增、价格递减。
- 寄存器:CPU内最快的存储,直接参与运算;高速缓存:介于CPU和主存之间,缓解速度差距。
- 主存:存放执行中的程序和数据;辅存:存放大量暂时不用的程序和数据。
- 局部性原理:程序在执行时呈现空间局部性和时间局部性,是虚拟存储和缓存工作的基础。
原理 · 深入理解
4.1 存储器的层次结构
本节概览:先建立「存储器的层次结构」的框架,再依次展开下列小节。
- 多层结构的存储器系统
- 主存储器与寄存器
- 高速缓存和磁盘缓存
4.1.1 多层结构的存储器系统
通用计算机存储层次至少三级:CPU寄存器、主存、辅存。
高档机可细分为六层:寄存器、高速缓存、主存、磁盘缓存、固定磁盘、可移动介质。
可执行存储器
在计算机系统的存储层次中,寄存器和主存储器又被称为可执行存储器。对于存放于其中的信息,与存放于辅存中的信息相比较而言,计算机所采用的访问机制是不同的,所需耗费的时间也是不同的。进程可以在很少的时钟周期内使用一条load或store指令对可执行存储器进行访问。 对于不同层次的存储介质,由操作系统进行统一管理。
操作系统的存储管理负责对可执行存储器的分配、回收以及提供在存储层次间数据移动的管理机制。而设备和文件管理则根据用户的需求,提供对辅存的管理机制。
4.1.2 主存储器与寄存器
主存即内存,保存进程运行时的程序和数据,属可执行存储器。
主存访问速度远低于CPU,故引入寄存器与高速缓存以缓和速度矛盾。
寄存器与处理机同速,访问最快但价格昂贵,容量有限。
微机和大中型机有数十至数百个寄存器,字长32或64位;小型嵌入式仅几个到十几个,字长常为8位。
4.1.3 高速缓存和磁盘缓存
高速缓存介于寄存器与主存之间,备份主存常用数据,减少CPU访存次数。
容量从几十KB到几MB,比内存小两三个数量级,速度快于主存。访问时若命中缓存则直接取用,避免访问主存。
磁盘缓存
由于目前磁盘的I/O速度远低于对主存的访问速度,为了缓和两者之间在速度上的不匹配,而设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。但磁盘缓存与高速缓存不同,它本身并不是一种实际存在的存储器,而是利用主存中的部分存储空间暂时存放从磁盘中读出(或写入)的信息。
主存也可以看作是辅存的高速缓存,因为,辅存中的数据必须复制到主存方能使用,反之,数据也必须先存在主存中,才能输出到辅存。
做 · 实验
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
- 完成 06-heap 或等价练习:分配-释放-再分配观察。
存储器的层次结构
contiguous-alloc
用控件单步操作;日志区记下每一步发生了什么。
代码导读
本课在工作台编译烧录。先读 user 实验入口,再对照 kernel / HDF 中被调用的函数,不要一上来改链接脚本。
总结与提升
- 能说明 MCU 课为何跳过对换实验。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
- 能对比页式与段式的优缺点各一条。
- 能区分内碎片与外碎片。
- 能结合动画解释一次分配失败原因。
- 能说出 Flash 与 DRAM 在链接中的角色。
- 能画出嵌入式常见两级(SRAM/Flash)。
延伸思考
- 把进程映像存到 Flash 文件系统算对换吗?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
- ESP32 的 MMU/Cache 与教材页表哪一层接近?
- 固定分区适合固件里的什么对象?