操作系统--存储器

一、存储器的层次结构

操作系统--存储器_第1张图片

存储器通常可以分为这么几个级别:

  • 寄存器;
  • CPU Cache;
    1. L1-Cache;
    2. L2-Cache;
    3. L3-Cahce;
  • 内存;
  • SSD/HDD 硬盘

对于存储器,它的速度越快、能耗会越高、而且材料的成本也是越贵的,以至于速度快的存储器的容量都比较小

1.寄存器

寄存器的数量通常在几十到几百之间,每个寄存器可以用来存储一定的字节的数据。比如:

  • 32 位 CPU 中大多数寄存器可以存储 4 个字节;
  • 64 位 CPU 中大多数寄存器可以存储 8 个字节。

寄存器的访问速度非常快,一般要求在半个 CPU 时钟周期内完成读写,CPU 时钟周期跟 CPU 主频息息相关,比如 2 GHz 主频的 CPU,那么它的时钟周期就是 1/2G,也就是 0.5ns(纳秒)。

2.CPU Cache

CPU Cache 用的是一种叫 SRAM(静态随机存储器) 的芯片。

SRAM 之所以叫「静态」存储器,是因为只要有电,数据就可以保持存在,而一旦断电,数据就会丢失了。

操作系统--存储器_第2张图片

L1 高速缓存(一级缓存)

  • L1 高速缓存的访问速度几乎和寄存器一样快
  • 通常只需要 2~4 个时钟周期,而大小在几十 KB 到几百 KB 不等
  • 每个 CPU 核心都有
  • 指令和数据在 L1 是分开存放的,所以 L1 高速缓存通常分成指令缓存数据缓存

L2 高速缓存(二级缓存)

  • L2 高速缓存访问速度更慢,大小更大,位置距离 CPU 核心 更远
  • 速度在 10~20 个时钟周期,通常大小在几百 KB 到几 MB 不等
  • 每个 CPU 核心都有

L3 高速缓存(三级缓存)

  • 访问速度相对也比较慢一些,大小会更大些,位置也距离 CPU 核心 更远
  • 访问速度在 20~60个时钟周期,通常大小在几 MB 到几十 MB 不等
  • 多个 CPU 核心共用的

3.内存

内存使用的是一种叫作 DRAM (动态随机存取存储器) 的芯片。

DRAM 之所以被称为「动态」存储器的原因,只有不断刷新,数据才能被存储起来。

DRAM 的数据访问电路和刷新电路都比 SRAM 更复杂,所以访问的速度会更慢,内存速度大概在 200~300 个 时钟周期之间。

4.SSD/HDD 硬盘

SSD(Solid-state disk) 固体硬盘,结构和内存类似,但是它相比内存的优点是断电后数据还是存在的,而内存、寄存器、高速缓存断电后数据都会丢失。内存的读写速度比 SSD 大概快 10~1000 倍。

机械硬盘(Hard Disk Drive, HDD),它是通过物理读写的方式来访问数据的,因此它访问速度是非常慢的,它的速度比内存慢 10W 倍左右。


二、存储器的层次关系

操作系统--存储器_第3张图片

存储器层次结构

  • 每个存储器只和相邻的一层存储器设备打交道
  • 存储设备为了追求更快的速度,所需的材料成本必然也是更高,所以 CPU 内部的寄存器、L1\L2\L3 Cache 只好用较小的容量,相反内存、硬盘则可用更大的容量

所以,存储层次结构也形成了缓存的体系。


三、补充

那机械硬盘、固态硬盘、内存这三个存储器,到底和 CPU L1 Cache 相比速度差多少倍呢?

CPU L1 Cache 比内存快 100 倍左右

CPU L1 Cache 比 SSD 快 150000 倍左右

CPU L1 Cache 比机械硬盘快 10000000 倍左右;

可以发现,不同的存储器之间性能差距很大,构造存储器分级很有意义,分级的目的是要构造缓存体系


四、参考

小林 coding

你可能感兴趣的:(操作系统学习记录,linux)