目录
由于第三章内容比较多,所以拆成上下两部分发哦~看完觉得还行的小伙伴看完可以点个关注,持续更新ing
另:本文所选取的图片均来自《王道2026考研复习指导》,侵删
3.1 存储器概述
3.1.1 存储器的分类
存储器可以按照多种不同的标准进行分类。
- 按存储介质分类:
-
- 半导体存储器:这类存储器基于半导体材料制作而成,像常见的随机存取存储器(RAM)、只读存储器(ROM)以及闪存(Flash Memory)等都属于这一类别。例如,我们计算机中的内存条就是典型的半导体存储器,它能够快速地进行数据的读写操作,为计算机的高效运行提供支持。
-
- 磁存储器:利用磁性材料来存储数据,硬盘、软盘和磁带是常见的磁存储器。硬盘作为计算机中常用的大容量存储设备,通过磁头在盘片上进行数据的读写操作,能存储大量的文件、程序等数据。
-
- 光学存储器:借助光学原理来存储和读取数据,常见的有光盘(CD)、数字多功能光盘(DVD)以及蓝光光盘(Blu - ray)。比如我们使用的音乐 CD,通过激光束在光盘表面的微小凹坑上进行数据的读取,从而播放出美妙的音乐。
- 按存取方式分类:
-
- 随机存取存储器(RAM):数据的读取和写入可以在任意位置进行,访问速度快。这意味着计算机可以快速地从这里获取正在运行的程序和数据,极大地提高了计算机的运行效率。像计算机的内存就是主要由 RAM 构成,它能够迅速响应 CPU 的指令,进行数据的读写操作。
-
- 顺序存取存储器:数据的读取和写入需要按照顺序进行,访问速度相对较慢。磁带就是顺序存取存储器的典型代表,在读取磁带上的数据时,需要从开头开始,依次向后查找所需的数据,这种存取方式在一些对数据访问速度要求不高,但对存储成本较为敏感的场景中应用广泛,例如数据的长期备份等。
- 按存储容量分类:
-
- 主存储器:通常指的就是随机存取存储器(RAM),用于存储正在运行的程序和数据,速度快但容量有限。以常见的笔记本电脑为例,其内存容量可能为 8GB、16GB 或 32GB 等,这些内存能够快速地与 CPU 进行数据交互,保证计算机流畅地运行各种应用程序。
-
- 辅助存储器:像硬盘、固态硬盘(SSD)、光盘等,用于长期存储大量数据,容量较大但速度较慢。例如,现在常见的台式机硬盘容量可能达到 1TB 甚至 4TB,能够存储大量的电影、游戏、文档等文件,但在数据读取速度上,相对主存来说要慢一些。
- 按存储位置分类:
-
- 内部存储器:位于计算机内部,如 RAM、ROM 等,用于存储程序和数据,与 CPU 直接相连,数据传输速度快。内部存储器就像是计算机的 “近水楼台”,能够快速地为 CPU 提供所需的数据和指令,保证计算机的高效运行。
-
- 外部存储器:位于计算机外部,如硬盘、光盘等,用于扩展存储容量。当计算机内部的存储空间不足时,我们可以通过外接硬盘、移动硬盘等外部存储器来增加存储容量,满足我们存储大量数据的需求。
3.1.2 存储器的性能指标
- 存储容量:指存储器能够存储的最大数据量,通常以字节(Byte)为单位。例如,一个 8GB 的内存条,其存储容量为 8×1024×1024×1024 字节。存储容量的大小直接影响到计算机能够存储的数据量和运行程序的规模。对于一些需要处理大量数据的专业软件,如视频编辑软件、大型数据库等,就需要计算机配备足够大存储容量的存储器,以保证软件能够正常运行并处理大量的数据。
- 存取速度:指存储器读取或写入数据的时间,通常以纳秒(ns)或兆赫兹(MHz)为单位。存取速度越快,系统性能越高。以 DDR4 内存为例,其存取速度可达 3200MHz,这意味着它能够在极短的时间内完成数据的读写操作,使得计算机在运行程序时响应速度更快,用户能够感受到更流畅的操作体验。
- 单位成本:位价=总成本/总容量
- 带宽:指存储器在单位时间内传输的数据量,通常以 MB/s 或 GB/s 为单位。带宽越大,数据传输效率越高。比如 SATAIII 硬盘的带宽为 6GB/s,较高的带宽能够保证数据在硬盘和计算机其他部件之间快速传输,减少数据传输的等待时间,提高计算机整体的数据处理能力。
- 延迟:指从发出读写命令到数据传输完成的时间,通常以纳秒(ns)为单位。延迟越低,响应速度越快。NVMESSD 的延迟可低至 0.02ms,较低的延迟使得数据能够快速地被读取和写入,对于一些对实时性要求较高的应用场景,如游戏、金融交易系统等,低延迟的存储器能够极大地提升系统的性能和用户体验。
- 耐用性:指存储器的使用寿命和可靠性,通常以写入次数或 MTBF(平均故障间隔时间)表示。例如,某 SSD 的耐用性为 1500TBW(总写入字节数),这表示该固态硬盘在达到 1500TB 的总写入量之前,能够保证正常的使用性能,超过这个写入量后,其性能可能会下降甚至出现故障。耐用性对于一些需要长期稳定存储数据的场景非常重要,如数据中心、企业级存储等。
- 其中,前三个是最主要的性能指标,计算机存储系统追求的是大容量、低成本和高速度。
3.1.3 多级层次的存储系统
多级存储体系是一种将多种不同级别的存储器有机结合的方式,旨在平衡计算机系统中存储器的容量、速度和成本之间的关系。这种体系结构通过结合不同类型和层级的存储器,实现了高性能、大容量和低成本的存储解决方案。
在多级存储体系中,最内层是 CPU 内部的通用寄存器,用于快速计算和数据交换。通用寄存器就像是 CPU 身边的 “小助手”,能够快速地为 CPU 提供所需的数据,使得 CPU 能够高效地执行各种运算操作。
紧随其后的是高速缓存(Cache),位于 CPU 和主存之间,通常由高速静态随机存取存储器(SRAM)组成,以提高数据传输速率。Cache 的存在是为了解决 CPU 和主存速度不匹配的问题。由于 CPU 的运算速度非常快,而主存的存取速度相对较慢,如果 CPU 直接从主存中读取数据,会导致 CPU 在等待数据的过程中浪费大量的时间。Cache 通过存储 CPU 近期可能会频繁访问的数据和指令,当 CPU 需要这些数据时,可以直接从 Cache 中快速获取,大大提高了数据的访问速度,从而提升了计算机的整体性能。
主存则负责存储大量的数据和程序代码。它是计算机运行时存储正在使用的程序和数据的主要场所,其容量和速度对计算机的性能有着重要影响。
此外,还包括辅助存储器(如磁盘)和大容量存储器(如磁带),以扩大存储容量。辅助存储器和大容量存储器的容量非常大,可以存储大量的不经常使用的数据和文件,如电影、音乐、备份数据等。虽然它们的存取速度相对较慢,但由于其大容量和低成本的特点,在计算机存储系统中仍然起着不可或缺的作用。
这些层级间的交互可通过操作系统和硬件自动完成,使得存储器的整体性能得以提升。多级存储结构形成的存储体系作为一个整体,其速度接近于 Cache 和寄存器,容量相当于辅助存储器,而成本则更接近于大容量存储器。这种设计有效地解决了存储器在速度、容量和成本之间的权衡问题,适应了不断增长的应用需求。
3.2 主存储器
3.2.1 SRAM 芯片和 DRAM 芯片
SRAM(静态随机存取存储器)和 DRAM(动态随机存取存储器)是两种常见的主存储器芯片,它们在多个方面存在区别。
对比项目 | SRAM | DRAM |
存储单元结构 | 由多个(一般 6 个)晶体管构成 | 由一个晶体管和一个电容组成 |
数据存储稳定性 | 高,无需刷新 | 较差,需定期刷新 |
读写速度 | 非常快,读取延迟几纳秒 | 相对较慢,读取延迟几十纳秒 |
存储密度 | 较低 | 高 |
成本 | 高 | 低 |
功耗 | 静态功耗低,读写功耗相对 DRAM 低 | 静态需刷新有功耗,读写操作时功耗较高 |
应用场景 | 高速缓存(如 CPU 的 L1、L2 cache),对速度和稳定性要求极高的特定设备 | 计算机主存储器(内存),对存储容量要求高但读写速度要求非极致的存储设备 |
- 存储单元结构:
-
- DRAM:基本存储单元通常由一个晶体管和一个电容组成。电容用于存储数据,晶体管用于控制电容的充电和放电。由于电容存在漏电问题,数据需要定期刷新来维持。例如,在我们计算机的内存条中,如果使用的是 DRAM 芯片,就需要不断地对其内部的电容进行刷新操作,以保证存储的数据不会丢失。
-
- SRAM:存储单元由多个晶体管构成,一般是 6 个。这种结构使得 SRAM 能够在没有外部刷新电路的情况下,只要电源保持供电,就能稳定地存储数据,因为它不存在像 DRAM 电容漏电的问题。
- 数据存储稳定性:
-
- DRAM:数据存储的稳定性较差。因为电容会自然漏电,存储的数据只能保持很短的时间,通常在几毫秒到几十毫秒之间。所以,DRAM 需要不断地进行刷新操作(一般每隔几毫秒就刷新一次)来保持数据的准确性。在计算机运行过程中,DRAM 芯片会不断地进行刷新操作,以确保存储的数据始终正确,这也在一定程度上影响了它的读写速度。
-
- SRAM:数据存储稳定性高。只要供电正常,SRAM 存储的数据就可以一直保持,不需要刷新操作,这使得它在一些对数据稳定性要求极高的应用场景中非常有优势。比如在一些高端的服务器和军事设备中,就会大量使用 SRAM 来存储关键数据,以确保数据的稳定性和可靠性。
- 读写速度:
-
- DRAM:读写速度相对较慢。因为其存储单元结构简单,电容充电和放电以及刷新操作等都需要一定的时间,而且在读写过程中还涉及到复杂的地址译码和数据传输过程。例如,普通 DRAM 的读取延迟可能在几十纳秒左右。这使得 DRAM 在一些对读写速度要求极高的场景中,可能无法满足需求。
-
- SRAM:读写速度非常快。由于其存储单元基于多个晶体管的锁存器结构,能够快速地进行数据的读写操作,读取延迟通常可以达到几纳秒,这使得它在对速度要求极高的应用场景中表现出色。像 CPU 内部的高速缓存(Cache)就主要采用 SRAM 芯片,以满足 CPU 对高速数据访问的需求。
- 存储密度:
-
- DRAM:存储密度高。由于 DRAM 的存储单元结构简单,只需要一个晶体管和一个电容,所以在相同的芯片面积上可以集成更多的存储单元。这使得 DRAM 能够提供较大的存储容量,适合用于需要大容量存储器的系统,如计算机的主存储器。目前,我们常见的计算机内存条,大多采用 DRAM 芯片来实现大容量的存储,以满足用户同时运行多个程序和处理大量数据的需求。
-
- SRAM:存储密度较低。因为 SRAM 的存储单元需要多个晶体管,占用的芯片面积较大,在相同的芯片面积上能够集成的存储单元数量相对较少。所以,SRAM 的存储容量通常较小。这也限制了它在一些对存储容量要求极高的场景中的应用。
- 成本:
-
- DRAM:成本较低。由于 DRAM 能够在芯片上集成大量的存储单元,并且制造工艺相对较为简单,所以其单位存储容量的成本较低,适合大规模生产和广泛应用。这也是为什么我们在计算机中能够以相对较低的成本获得较大容量的内存。
-
- SRAM:成本较高。因为 SRAM 的存储单元结构复杂,占用面积大,并且制造工艺要求较高,所以单位存储容量的成本较高。这限制了它在大容量存储需求场景中的应用,主要用于对成本不太敏感但对速度和稳定性要求极高的特定领域。
- 功耗:
-
- DRAM:在静态(即不进行读写操作)时,由于需要不断地刷新来维持数据,仍然会消耗一定的能量,不过相对读写操作时的功耗较低。在读写操作时,DRAM 的功耗相对较高,主要是因为电容的充电和放电过程以及数据传输等操作会消耗能量。
-
- SRAM:功耗较低。特别是在静态时,由于不需要刷新操作,其功耗主要来自于泄漏电流,消耗的能量很少。在读写操作时,虽然也会消耗一定的能量,但相比 DRAM 读写操作时的功耗还是较低的。
- 应用场景:
-
- DRAM:主要用于计算机的主存储器(如内存),以及一些对存储容量要求较高但对读写速度要求不是特别苛刻的存储设备中。例如,在个人电脑、服务器等设备中,DRAM 提供了大容量的存储空间,用于存储正在运行的程序和数据。我们日常使用的电脑,其内存条中的 DRAM 芯片能够存储大量的程序和数据,使得计算机能够同时运行多个应用程序,并且在不同程序之间快速切换。
-
- SRAM:常用于高速缓存(cache),如 CPU 内部的一级缓存(L1cache)和二级缓存(L2cache)。这些缓存用于存储 CPU 近期可能会频繁访问的数据和指令,利用 SRAM 的高速度和高稳定性来提高 CPU 的运算效率。此外,SRAM 也用于一些对速度和稳定性要求极高的特定设备,如某些高端网络设备中的数据缓冲器等。在 CPU 执行指令时,会首先从 L1cache 和 L2cache 中查找所需的数据和指令,如果能够在缓存中找到,就可以大大缩短数据的访问时间,提高 CPU 的运算速度。
3.2.2 只读存储器
只读存储器(ROM)是一种只能读取数据,而在正常工作情况下不能写入数据的存储器。ROM 中的数据在制造时就被固化在芯片中,并且在计算机断电后,数据仍然能够保持。ROM 主要用于存储一些固定不变的程序和数据,如计算机的 BIOS(基本输入输出系统)。BIOS 是计算机启动时首先运行的程序,它负责初始化计算机的硬件设备,检测硬件状态,并引导操作系统的启动。由于 BIOS 的程序和数据在计算机的整个使用过程中基本不会改变,所以将其存储在 ROM 中,既保证了数据的安全性和稳定性,又节省了成本。
根据制造工艺和特性的不同,ROM 还可以分为以下几种类型:
- 掩模 ROM(MROM):在制造过程中,通过掩模工艺将数据固化在芯片中,一旦制造完成,数据就无法更改。这种 ROM 成本较低,适合大规模生产一些固定程序和数据的应用场景,如早期的电子游戏机中的游戏卡带,其中就可能采用了掩模 ROM 来存储游戏程序。
- 可编程 ROM(PROM):用户可以在使用前通过专门的编程设备将自己的数据写入到 PROM 中,但写入后数据就不能再修改。PROM 为用户提供了一定的灵活性,适用于一些需要定制特定程序和数据的场合,但由于其写入后不可更改的特性,使用范围相对较窄。
- 可擦除可编程 ROM(EPROM):可以通过紫外线照射等方式将芯片中的数据擦除,然后重新写入新的数据。这种 ROM 使得用户能够多次修改存储的数据,增加了 ROM 的使用灵活性。在一些电子设备的开发过程中,可能会使用 EPROM 来存储程序,方便在调试过程中对程序进行修改和更新。
- 电可擦除可编程 ROM(EEPROM):与 EPROM 类似,但它可以通过电信号来擦除和写入数据,操作更加方便快捷。EEPROM 广泛应用于一些需要频繁修改少量数据的场景,如计算机主板上的 CMOS 芯片,它用于存储计算机的硬件配置信息,用户可以在计算机的 BIOS 设置中对这些信息进行修改,修改后的数据就存储在 EEPROM 中。
3.2.3 主存储器的基本组成
主存储器主要由存储体、地址译码器、读写电路和控制电路等部分组成。
- 存储体:是主存储器的核心部分,由大量的存储单元组成,用于存储数据和指令。每个存储单元都有一个唯一的地址,计算机通过地址来访问存储单元中的数据。存储体就像是一个巨大的仓库,每个存储单元就是仓库中的一个个小房间,数据就存放在这些小房间里。
- 地址译码器:其作用是将 CPU 送来的地址信号转换为对存储体中具体存储单元的选择信号。当 CPU 要访问主存储器中的某个数据时,会将该数据的地址发送给地址译码器,地址译码器根据这个地址信号,找到对应的存储单元,然后将该存储单元选中,以便后续进行读写操作。可以把地址译码器看作是仓库中的导航系统,它能够根据地址信息准确地找到存储数据的 “小房间”。
- 读写电路:负责完成对存储单元的读写操作。在写操作时,将 CPU 送来的数据写入到选中的存储单元中;在读操作时,将存储单元中的数据读取出来并传送给 CPU。读写电路就像是仓库中的搬运工人,负责将数据搬进或搬出存储单元。
- 控制电路:用于控制主存储器的各种操作,如读写操作的启动、停止,地址译码器和读写电路的协调工作等。控制电路就像是仓库的管理员,负责指挥和协调仓库中的各项工作,确保主存储器能够有条不紊地运行。
3.2.4 多模块存储器
多模块存储器是为了提高主存储器的访问速度和带宽而设计的一种存储器结构。它将主存储器分成多个独立的存储模块,这些模块可以并行工作,从而提高数据的传输效率。
多模块存储器主要有两种组织方式:
- 高位交叉编址:将存储器的地址空间按照高位地址进行划分,每个存储模块负责存储高位地址相同的数据。例如,假设有 4 个存储模块 M0、M1、M2、M3,当地址为 A = a7a6a5a4a3a2a1a0 时,如果按照高位交叉编址,地址的高 2 位 a7a6 用于选择存储模块,低 6 位 a5a4a3a2a1a0 用于确定存储模块内的地址。当 CPU 访问地址为 A 的数据时,根据 a7a6 的值选择对应的存储模块,然后在该模块内根据 a5a4a3a2a1a0 找到具体的存储单元。高位交叉编址方式有利于连续存储大的数据块,因为相邻地址的数据通常存放在同一个存储模块中。比如在进行顺序文件读取时,数据可以在单个模块内依次被访问,减少了模块间切换带来的额外开销。但这种方式在多处理机并行访问时,容易出现访问冲突,因为多个处理机可能同时访问同一个存储模块。
- 低位交叉编址:与高位交叉编址相反,它按照低位地址来划分存储模块。假设同样有 4 个存储模块 M0、M1、M2、M3,对于地址 A = a7a6a5a4a3a2a1a0,地址的低 2 位 a1a0 用于选择存储模块,高 6 位 a7a6a5a4a3a2 用于确定存储模块内的地址。在低位交叉编址中,相邻地址的数据分布在不同的存储模块中。这使得 CPU 可以同时向多个模块发出访问请求,从而实现并行访问,极大地提高了存储器的带宽。例如,在一个需要快速读取大量数据的科学计算程序中,低位交叉编址的多模块存储器可以让多个存储模块同时工作,快速地将数据传输给 CPU,加速程序的运行。不过,这种方式在处理单个连续大数据块时,由于数据分散在不同模块,可能会增加一些额外的调度和管理成本。
-
3.3 主存储器与 CPU 的连接
3.3.1 连接原理
CPU 与主存储器之间通过数据总线、地址总线和控制总线进行连接。
- 数据总线:负责在 CPU 和主存储器之间传输数据。其位数决定了一次能传输的数据量,例如 32 位的数据总线一次可以传输 32 位(4 字节)的数据。当 CPU 读取数据时,主存储器将数据通过数据总线传送给 CPU;当 CPU 写入数据时,数据则通过数据总线从 CPU 传送到主存储器。数据总线就像是一条繁忙的高速公路,不断地在 CPU 和主存储器之间运输数据。
- 地址总线:用于 CPU 向主存储器发送要访问的存储单元的地址。地址总线的位数决定了主存储器的寻址范围,比如 32 位的地址总线可以寻址 2^32 个存储单元,即 4GB 的地址空间。通过地址总线,CPU 能够准确地定位到主存储器中存储数据的具体位置。
- 控制总线:传输各种控制信号,如读写控制信号。当 CPU 要读取数据时,会通过控制总线向主存储器发送读控制信号;当要写入数据时,发送写控制信号。此外,控制总线还可能包含其他信号,如存储器选择信号等,用于协调 CPU 和主存储器之间的各种操作。控制总线如同交通指挥系统,确保数据在 CPU 和主存储器之间的传输有序进行。
-
3.3.2 主存容量的扩容
随着计算机应用的日益复杂和多样化,对主存容量的需求也在不断增长。当现有的主存容量无法满足系统运行和数据处理的需求时,就需要对主存进行扩容。
扩容的必要性:在运行大型软件、多任务并行处理以及处理大数据集时,较小的主存容量会导致系统频繁地进行数据交换,从硬盘等辅助存储器中读取数据,这大大降低了系统的运行效率。例如,在进行视频渲染时,大量的视频帧数据需要在内存中进行处理,如果主存容量不足,软件会不断地等待从硬盘读取数据,使得渲染过程变得极为缓慢。
扩容的实现方式:
- 增加存储芯片数量:这是一种常见的扩容方法。如果主板上还有空余的内存插槽,就可以插入更多相同规格的内存条。例如,一台原本只有一根 8GB 内存条的电脑,若主板支持双插槽,就可以再插入一根 8GB 内存条,将主存容量提升至 16GB。在这个过程中,要确保新插入的内存条与原有内存条的工作频率、电压等参数一致,否则可能会出现兼容性问题,导致系统不稳定甚至无法正常工作。
- 选用大容量芯片替换:当主板插槽已满,或者希望以较少的插槽占用实现更大容量提升时,可以选用大容量的存储芯片来替换原有的小容量芯片。比如,将原来的 4GB 内存条更换为 16GB 内存条。在更换时,同样需要注意新内存条与主板的兼容性,包括主板支持的最大内存容量、内存类型(如 DDR3、DDR4 等)。不同的主板对内存的支持规格有所不同,在升级前需要查阅主板说明书或相关技术文档,以确保所选的大容量内存条能够被主板正确识别和使用。
-
扩容后的系统调整:完成主存容量扩容后,操作系统需要对新增加的内存进行识别和管理。在某些情况下,操作系统可能需要重新启动才能正确检测到新的内存容量。同时,一些应用程序可能需要根据新的内存配置进行优化设置,以充分利用扩容后的内存资源。例如,数据库管理系统可以调整缓存大小,以提高数据的读写速度,从而提升整个系统的性能。
-
3.3.3 存储芯片的地址分配和片选
在构建主存储器时,通常会使用多个存储芯片。这就需要对这些芯片进行地址分配和片选操作。
- 地址分配:根据存储芯片的容量和主存储器的整体地址空间来确定每个芯片所占用的地址范围。例如,若有两个 1MB 的存储芯片,而主存储器地址空间为 2MB,那么可以将 0x000000 - 0x0FFFFF 的地址范围分配给第一个芯片,0x100000 - 0x1FFFFF 的地址范围分配给第二个芯片。地址分配要合理规划,确保每个存储芯片都能被 CPU 正确访问,并且地址空间不重叠。
- 片选:当 CPU 要访问某个存储单元时,需要先通过地址信号确定该单元所在的存储芯片,这个过程就是片选。片选信号通常由地址总线的高位部分经过译码产生。比如,对于上述两个 1MB 的存储芯片,地址总线的最高位(第 20 位)可以作为片选信号,当第 20 位为 0 时,选中第一个芯片;当第 20 位为 1 时,选中第二个芯片。只有被选中的芯片才能响应 CPU 的读写请求,其他未被选中的芯片则处于高阻态,不参与数据传输。
-
3.3.4 存储器与 CPU 的连接
将存储芯片与 CPU 连接时,需要综合考虑数据总线、地址总线和控制总线的连接。
- 数据总线连接:将存储芯片的数据引脚与 CPU 的数据总线对应连接。例如,8 位的存储芯片有 8 个数据引脚,需要将这 8 个引脚分别与 CPU 数据总线的 8 条线连接,确保数据能够在两者之间正确传输。
- 地址总线连接:一部分地址线用于选择存储芯片内的存储单元,另一部分高位地址线用于产生片选信号。如前面提到的两个 1MB 存储芯片与 32 位地址总线的 CPU 连接时,地址总线的低 20 位(A0 - A19)连接到每个芯片的地址输入引脚,用于选择芯片内的存储单元;而最高位(A20)经过译码器产生片选信号,连接到芯片的片选引脚。
- 控制总线连接:将 CPU 的读写控制信号引脚与存储芯片的相应读写控制引脚连接。例如,CPU 的读控制信号(WE#)连接到存储芯片的写允许引脚,CPU 的写控制信号(OE#)连接到存储芯片的读允许引脚,以实现对存储芯片读写操作的控制。通过合理连接这些总线,就能实现 CPU 与主存储器之间高效、稳定的数据交互,保障计算机系统的正常运行。