3.1.1 存储器的分类
存储器种类繁多,可从不同角度进行分类。
1. 按存储元件分类
存储元件需具备两个可区分的稳定物理状态,以分别表示二进制数0和1。常用的存储元件主要有半导体器件、磁性材料和光介质。半导体器件利用电荷或电压状态存储信息,构成半导体存储器(如DRAM、SRAM);磁性材料通过磁化方向表示数据,用于磁表面存储器(如硬盘、磁带);光介质则依靠反射率或相变特性记录信息,构成光存储器(如光盘)。
2. 按存取方式分类
-
随机存取存储器(RAM):可对任意存储单元进行读/写,且存取时间与物理位置无关。其优点是读/写灵活、使用方便,半导体存储器属于此类,常用于主存或高速缓存。 -
顺序存取存储器:信息按顺序存放和读出,存取时间取决于数据在介质中的位置,通常以记录块为单位编址。典型代表是磁带,具有容量大但速度慢的特点。 -
直接存取存储器:兼具随机访问和顺序访问的特点。可先直接定位到目标区域,再按顺序读取数据。典型代表是传统机械磁盘。 -
相联存储器:按内容而非地址进行存取,查找速度快且与存储位置无关,但成本高、容量小,主要用于快表(TLB)、路由表等小容量高速查找场景。
3. 按信息的可更改性分类
按信息的可更改性,可分为可读可写存储器和只读存储器(Read-Only Memory, ROM)。ROM中的信息在正常工作时只能读取,通常不可修改,但某些类型(如 、Flash)支持特定条件下的重写。RAM属于可读可写存储器,与ROM一样,通常采用随机存取方式。
4. 按信息的可保存性分类
-
易失性存储器:断电后,信息即丢失,如RAM。 -
非易失性存储器:断电后信息仍能保持,如ROM、Flash存储器、磁盘和光盘等。
此外,若读取操作会破坏存储单元中的原有信息,则称为破坏性读出,读出后需立即执行再生操作以恢复数据;若读取不改变原内容、无须再生,则称为非破坏性读出。
3.1.2 主存储器的组成和基本操作
主存储器(Main Memory, MM)的基本组成。其中,由大量用于存储二进制数0或1的记忆单元(也称存储元)构成的存储矩阵(也称存储体、存储阵列)是存储器的核心部件。每个记忆单元是一种具有两种稳定物理状态、能够表示0和1的器件。为访问存储体中的信息,必须对存储单元编号(编址)。编址单位是指具有相同地址的一组记忆单元,称为一个存储单元。现代计算机普遍采用字节编址方式,即每个地址对应1字节(8位)数据。
当CPU执行指令需访问主存时,首先将目标地址送入存储器地址寄存器(MAR),并通过地址线传至主存的地址寄存器;地址译码器据此选中对应的存储单元。同时,CPU通过控制线向主存发送读/写控制信号。若为写操作,CPU将待写入的数据送入存储器数据寄存器(MDR),在控制电路作用下,经数据线写入选中单元;若为读操作,主存将选中单元的内容经数据线送至MDR。MDR的位数等于数据线宽度,MAR的位数等于地址线位数。数据线为64位,因此在字节编址下,每次可并行存取8个字节(64位 ÷ 8 位/字节=8字节)。地址线的位数决定了主存的最大可寻址范围。例如,36位地址的寻址范围为 ,共 个字节(64GB)。
3.1.3 存储器的层次化结构
为缓解存储系统在容量、速度与成本之间的矛盾,现代计算机普遍采用多级存储器结构。从上至下,各层存储器的单位价格逐渐降低,存取速度变慢,容量增大,CPU访问频率也相应降低。该层次结构主要体现为两个关键层级:Cache-主存层和主存-辅存层。其中,Cache和主存可直接与CPU交换信息;辅存则需通过主存间接与CPU通信;主存作为枢纽,能与CPU、Cache及辅存双向交换数据。
存储层次的核心思想如下:上一层存储器作为下一层的高速缓存。当CPU访问数据时,按Cache→主存→辅存的顺序逐级查找;若所需数据不在上层,则从下层逐级调入:先从磁盘读入主存,再从主存加载到Cache。从CPU视角看:Cache-主存层的速度接近Cache,而容量和单位成本接近主存;主存-辅存层的速度接近主存,而容量和单位成本接近辅存。
两层机制的主要目标和实现方式不同:Cache-主存层用于缓解CPU与主存速度不匹配问题,数据调度由硬件自动完成,对所有程序员透明。主存-辅存层则用于解决存储容量不足问题,数据调度由硬件与操作系统协同完成,对应用程序员透明。
TIP主存和辅存数据交换仅对应用级程序员透明
随着主存-辅存层的不断发展,逐渐形成了虚拟存储系统。在该系统中,程序员使用的地址空间(虚拟地址空间)远大于实际主存容量,程序可按更大的逻辑地址空间进行编写。
NOTE在 Cache-主存层和主存-辅存层中,上一层的内容始终是下一层内容的子集副本,即 Cache 中的数据来自主存,主存中的数据来自辅存。
3.1.4 存储器的主要性能指标
存取时间:完成一次读/写操作所需的时间,其中读出时间是指从主存接收到有效地址到数据有效输出的时间,写入时间是指从主存接收到有效地址到数据成功写入指定单元的时间。
存储周期:存储器进行连续两次独立的读/写操作所需的最小时间间隔。
存取时间不等于存储周期。通常,存储周期大于存取时间,因为每次读/写操作后,存储器需要一定时间恢复内部状态。对于破坏性读出的存储器(如DRAM),读出后必须立即再生数据,因此其存储周期往往显著大于存取时间,甚至可达 (其中 为存储周期, 为存取时间)。
存储器带宽:存储器每秒能够传输的最大数据量。例如,若存储周期为50ns,每个周期可传输64位数据,则理论带宽为 。在实际系统中,存储器常被组织为多模块结构,允许多个模块并行工作,从而将总带宽提升至单模块带宽的若干倍。
