操作系统–前言05--存储器-缓存

存储器分级策略

不能用一块存储器来解决所有的需求,那就必须把需求分级。

一种可行的方案,

  • 根据数据的使用频率使用不同的存储器:
  • 高频使用的数据,读写越快越好,因此用最贵的材料,放到离 CPU 最近的位置;
  • 使用频率越低的数据,我们放到离 CPU 越远的位置,用越便宜的材料。

寄存器分为6个级别

  1. 寄存器;
  2. L1-Cache;
  3. L2-Cache;
  4. L3-Cahce;
  5. 内存;
  6. 硬盘/SSD。

寄存器 --> l1-cache --> l2-cache --> l3-cache --> 内存 --> SSD/磁盘

从左到右,距离CPU逐渐变远,读取速度逐渐减低,空间逐渐增大。

寄存器:

寄存器紧挨着CPU的控制单元和逻辑计算单元,所以使用的材料是速度最快的,因而储存的速度最快,耗能就最高,产热就最大,而且花费也是最贵的,因此数量不多.

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

寄存器的访问速度非常快,一般在半个CPU时钟周期内完成

L1-Cache

L1- 缓存在 CPU 中,相比寄存器,虽然它的位置距离 CPU 核心更远,但造价更低。通常 L1-Cache 大小在几十 Kb 到几百 Kb 不等,读写速度在 2~4 个 CPU 时钟周期

L2-Cache

L2- 缓存也在 CPU 中,位置比 L1- 缓存距离 CPU 核心更远。它的大小比 L1-Cache 更大,具体大小要看 CPU 型号,有 2M 的,也有更小或者更大的,速度在 10~20 个 CPU 周期

L3-Cache

L3- 缓存同样在 CPU 中,位置比 L2- 缓存距离 CPU 核心更远。大小通常比 L2-Cache 更大,读写速度在 20~60 个 CPU 周期

L3 缓存大小也是看型号的,比如 i9 CPU 有 512KB L1 Cache;有 2MB L2 Cache; 有16MB L3 Cache。

内存

内存的主要材料是半导体硅,是插在主板上工作的。因为它的位置距离 CPU 有一段距离,所以需要用总线和 CPU 连接。因为内存有了独立的空间,所以体积更大,造价也比上面提到的存储器低得多。现在有的个人电脑上的内存是 16G,但有些服务器的内存可以到几个 T。内存速度大概在 200~300 个 CPU 周期之间。

SSD和硬盘

SSD也叫固态硬盘结构和内存类似,

主要的优点就是在于断电后数据还在.内存,寄存器,缓存断电后数据就消失了.内存的内存的读写速度比 SSD 大概快 10~1000 倍

当CPU需要内存中某个数据的时候,如果寄存器这个数据,直接用,如果寄存器没有这个数据,查询 L1 缓存;L1 中没有,再查询 L2 缓存;L2 中没有再查询 L3 缓存;L3 中没有,再去内存中拿。

缓存条目结构

无论是缓存还是,内存,是一个线性储存器,也就是数据一个挨着一个的储存.比如:把内存想象成一个只有 1 列的表格,那么缓存就是一个多列的表格,这个表格中的每一行叫作一个缓存条目。

方案 1

缓存本质上是一个 Key-Value 的存储,它的 Key 是内存地址,值是缓存时刻内存地址中的值。

  • 内存的地址;
  • 缓存的值。

CPU读取到一个内存地址,就增加一个条目.当查询一个内存地址的数据在不在 L1- 缓存中的时候,可以遍历每个条目,,看条目中的内存地址是否和查询的内存地址相同.如果相同,我们就取出条目中的缓存的值.

缺点:效率低.

方案 2

想要快速的定位缓存条目可以通过取余(类似hash算法)快速定位缓存条目位置。地址 % 10

指令的预读

通过对于指令的预读,使得读取指令的速度跟的上指令的执行速度。减少指令从内存中的读取次数(更耗时),其实就是批处理。

缓存的命中:

所谓命中就是指在缓存中找的需要的数据.和命中相反的是穿透,也叫miss.就是一次读取操作没有从缓存中找到对应的数据。

  • l1的缓存命中率约为80%,
  • l1 l2 l3缓存加在一块命中率高达95%。
  • CPU 缓存的设计还是相当合理的。只有 5% 的内存读取会穿透到内存,95% 都能读取到缓存。

缓存置换:

当缓存满了之后,再读取数据到缓存将置换掉之前的缓存。


SSD、内存和 L1 Cache 相比速度差多少倍?

因为内存比 SSD 快 10~1000 倍,L1 Cache 比内存快 100 倍左右。因此 L1 Cache 比 SSD 快了 1000~100000 倍。

这个问题告诉我们,不同的储存器之间的性能差距很大,构造储存器分级很有意义,分级的目录的是要构造缓存体系.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值