# 层次化存储结构
计算机系统中的存储结构通常采用层次化的设计,从上到下主要包括以下几个层次:
寄存器 (Register):
- 位于 CPU 内部,是速度最快的存储器。
- 用于暂时存放 CPU 正在处理的数据和地址信息。
- 容量非常小,一般只有几十到几百个字节。
Cache 存储器:
- 位于 CPU 和主存储器之间,是一种高速缓存存储器。
- 用于暂时存放常用的数据和指令,加快 CPU 访问速度。
- 容量较寄存器大一些,从几 KB 到几 MB 不等。
主存储器 (Main Memory):
- 也称为内存或随机存取存储器 (RAM)。
- 是 CPU 直接访问的主要存储区域,容量较大。
- 存取速度比寄存器和 Cache 慢,但比磁盘存储器快。
辅助存储器 (Secondary Storage):
- 也称为外存或永久存储器,包括硬盘、光盘、U 盘等。
- 容量大,但存取速度相对较慢。
- 用于存储大量的程序和数据,供主存储器调用。
这种由快到慢、由小到大的层次化存储结构,充分利用了不同存储介质的特点,提高了整个计算机系统的性能和效率。上层存储器作为下层存储器的缓存,通过数据的局部性原理,大大减少了对下层存储器的访问,从而提高了整体的存取速度。
# Cache - 概念
Cache 是一种高速缓存存储器,它位于 CPU 和主存储器之间,用于暂时存放常用的数据和指令,从而加快 CPU 对数据和指令的访问速度。Cache 的工作原理主要包括以下几个方面:
数据局部性原理:
- 时间局部性 - 被访问的数据在短时间内很可能再次被访问。
- 空间局部性 - 被访问的数据附近的数据在短时间内很可能也会被访问。
Cache 与主存的交互:
- CPU 首先在 Cache 中查找所需的数据和指令,如果找到 (Cache 命中), 则直接从 Cache 中读取。
- 如果在 Cache 中找不到 (Cache 未命中), 则从主存中读取数据和指令,并将其复制到 Cache 中。
- 当 Cache 空间满时,根据一定的替换算法 (如 LRU) 淘汰掉一些数据,腾出空间。
Cache 的组织结构:
- 按照组相联的方式组织,包括直接映射、全相联、n - 路组相联。
- 通过标记、组索引、块偏移等字段定位数据在 Cache 中的位置。
Cache 的性能指标:
- 命中率 - 访问数据在 Cache 中命中的概率。
- 平均访问时间 - 包括命中时间和未命中时的主存访问时间。
通过 Cache 的设计,可以大幅提高 CPU 与主存之间的数据传输速度,提升整个计算机系统的性能。现代 CPU 中通常配备有 L1、L2、L3 等多级 Cache, 层次更加丰富。
# 局部性原理
局部性原理是计算机系统中非常重要的一个概念,它描述了程序在执行过程中对存储器的访问模式。主要包括以下两种类型的局部性:
时间局部性 (Temporal Locality):
- 这种局部性指的是,如果某个数据项被访问,那么在不远的将来它很可能被再次访问。
- 产生时间局部性的原因包括:
- 程序中存在循环、递归等结构,同一段代码会被多次执行。
- 变量在程序中的生命周期较短,在较短时间内会被重复访问。
- 利用时间局部性可以将频繁访问的数据保存在速度较快的存储器 (如缓存) 中,提高访问效率。
空间局部性 (Spatial Locality):
- 这种局部性指的是,如果某个数据项被访问,那么在它附近的数据项在不远的将来也很可能被访问。
- 产生空间局部性的原因包括:
- 程序中存在顺序执行的结构,按照地址顺序访问内存。
- 数据结构中存在相邻元素的访问,如数组、链表等。
- 利用空间局部性可以将相邻的数据一起加载到较快的存储器中,提高访问效率。
计算机系统的层次化存储结构,如 CPU 缓存、虚拟内存等,都是充分利用局部性原理来提高系统性能的结果。程序员在设计程序时,也要充分考虑局部性原理,通过合理的数据结构和算法设计来提高程序的执行效率。