• 作者:老汪软件技巧
  • 发表时间:2024-09-10 21:01
  • 浏览量:

存储器的层次结构

这是一张大家熟悉的存储器的层次结构图,形状类似金字塔。金字塔塔尖是 CPU 中的寄存器,容量最小,速度最快,价格也是最贵的;从上往下依次是高速缓存、主存、磁盘,容量依次变大,速度依次变慢,价格也逐渐降低。

这个金字塔结构是怎么来的呢?为什么需要有这么一个金字塔的存储结构呢?

先说结论,这个金字塔是性能成本和容量三者平衡的结果,使得计算机以低成本实现快速运行,并享受较为海量的存储。

CPU 与主存的性能差异

通过前边的内容,我们知道 CPU 就是一个无情的执行指令的机器。如果以“信号与系统”的眼光来看,处理的指令就是信号,CPU 就是一个处理指令的系统,它的任务就是对输入数据进行运算,运算完成之后进行输出,那 CPU 运算的数据从哪里来?算完的数据又去往哪里呢?

答案其实是内存。计算机把要执行的软件事先放在内存中,CPU 的取指令单元自动从内存中读取指令,然后加载到 CPU 中执行;软件在运行过程中,通常需要从内存中读取要计算的数据或者把计算结果写回内存。

CPU 核心是直接读取的内存吗?其实不是的。CPU 通过内存控制器模块与内存相连接。CPU 读写内存都是通过内存控制器来完成的。

随着技术的发展(摩尔定律),CPU 运行速度远远超过内存访问速度,下图是一张各存储器之间性能差异图,我们从图中可以看到明显的差异。结合 CPU 指令执行过程分析,这巨大的差异必将拖慢 CPU 的执行速度。

如何平衡 CPU 与主存的性能差异

那应该如何平衡CPU和主存的性能差异呢?

按照计算机领域的基本规则,没有什么问题是不能通过增加中间层解决的,如果有那就多分几层。面对这个问题,工程师们在 DRAM 和 CPU 之间再加个缓存层:高速缓存,来平衡二者之间的速度差异。

起源金字塔__人类金字塔模型

如何平衡存储容量的差异

数字资源占用空间大小的增长很快。以手机照片为例,随着各个厂商不断卷像素,照片的占用空间越来越大,一张照片从几 KB 一路涨到 10 多 MB 甚至更多。

而内存空间是有限的,普通的PC内存一般也就 8G 或者 16G,肯定是没有办法放下所有数据的。如果继续扩大内存,成本就会很高。于是,为了存放更多的数据,我们寻找更加廉价的解决方案。那就是,SSD(Solid-state drive 或 Solid-state disk,固态硬盘)、HDD(Hard Disk Drive,硬盘)。

当然还有另外一个重要原因,内存掉电会丢失数据,而磁盘不会,磁盘更适合长时间保存数据。你的照片或者文档肯定也不希望关机之后就消失了吧。

SRAM 和 DRAM 有什么区别

图片里面有 SRAM 和 DRAM,这两个又是什么呢?

半导体存储器按照存取方式划分可以分为:RAM(Random-Access Memory 随机存取存储器)和 ROM(Read-Only Memory 只读存储器)。RAM 又分为 SRAM 和 DRAM 两种实现类型:

SRAM(静态 RAM):SRAM 只要在保持通电状态下,内部存储的数据就不会丢失,因此称为 “静态” RAM。DRAM(动态 RAM):DRAM 在保持通电状态下,还需要定时刷新,才能保证内部存储的数据不会丢失,因此称为 “动态” RAM。当运行游戏时存储设备会发生什么

假设我想在电脑上玩最近大火的《黑神话:悟空》。游戏本身安装在持久性的设备中的(SSD 中)。当运行游戏时,CPU 会发送大量指令来控制数据流。信息从存储复制到主内存(DRAM),然后进行Loading……这种传输对于减少运行程序时的延迟是必要的,也是所有游戏对电脑配置有最低 RAM 要求的原因。

根据当前正在玩的游戏部分,部分数据会被复制到缓存中。然后,缓存中的一部分数据会被复制到 CPU 寄存器并由 CPU 处理。想象一下,如果内存金字塔不存在,CPU 被迫直接从磁盘中读取数据并运行程序;由于磁盘比与缓存相比慢很多,那悟空的画面就会卡顿,根本没法玩了。

小结

在日常中,我们总是希望存储器速度更快、容量更大、价格更便宜;“又要马儿跑得快,又不马儿不吃草”,这些需求其实是互相冲突的,不可能完全解决的。

随着技术的发展,计算机工程师通过层次结构来处理这些冲突的需求。在存储层次中,速度最快、容量最小并且每位价格最昂贵的存储器处于顶层,而速度最慢、容量最大且每位价格最便宜的存储器处于底层。这样就给了我们错觉,计算机存储又快、又大、又便宜。


上一条查看详情 +2. 生成渲染函数
下一条 查看详情 +没有了