2.3 存储器
本节将介绍存储器的分类和存储器的工作原理。计算机中所包含的存储器是物理设备,它们用于保存程序代码或者处理过程中产生的暂时或永久的数据,如图2.62所示。
图2.62 计算机上的存储介质
2.3.1 存储器的分类
一般将存储器分成两类,即易失性存储器和非易失性存储器。
1)易失性存储器
这种类型的存储器只有上电时才能保存数据。一旦断电,存储器内所保存的所有数据信息将要丢失。它的特点主要包括:
(1)要求上电才能持续保存信息;
(2)通常情况下,有较快的访问速度和较低的成本;
(3)用于暂存数据,如CPU高速缓存和内部存储器等。
例如,笔记本和PC内存插槽上的DDR3 SDRAM内存条,其就属于易失性存储器。
2)非易失性存储器
这种类型的存储器可以永久保存数据。即使断电,存储器中仍然保存着写入的数据信息。它的特点主要包括:
(1)一旦写入信息,在断电时仍能保存它;
(2)通常情况下,有较低的访问速度和较高的成本;
(3)用于第二级存储,或者长期永久地保存数据。
例如,笔记本和PC所搭载的基本输入输出系统(Basic Input Output System,BIOS)其就属于非易失性存储器。
2.3.2 存储器的工作原理
在计算机中,访问存储器就是指处理器对存储器执行读/写操作。其中:
(1)写存储器。处理器首先给出所要访问的存储器单元的地址,然后再将数据写到该地址所指向存储器的地址空间。
(2)读存储器。处理器首先给出所要访问的存储器单元的地址,然后从该地址所指向存储器的地址空间读取数据。
例如,一个8位宽度和28(0~255)个存储深度的存储器结构如图2.63所示。
图2.63 8×8比特存储器的结构
从图中可以看出,地址信号Address[7:0]可实现的任务包括:
(1)它可以提供用于访问存储器内不同单元的地址(可以产生28=256个存储器地址);
(2)通过存储器内建的地址译码器,将Address[7:0]所携带的地址信息映射到存储器内的一个存储单元(也就是一个字);
(3)将该存储单元连接到位线放大器。
注
对于一个容量较大的存储器来说,将存储器的地址分为行和列两部分。
对于读操作来说,随后执行的操作包括:
(1)将选中的存储单元与位线放大器连接;
(2)位线放大器将读取的信号恢复到正常的电压,然后将信息送到Data_Out[7:0]数据端口上。
对于写操作来说,随后执行的操作包括:
(1)将写到存储器的数据放到Data_In[7:0]端口上;
(2)放大器将位线设置为期望的值,并驱动端口将其保存到所选中的存储单元中。
思考与练习2-11:根据本小节所介绍的知识,说明易失性存储器的特点。
思考与练习2-12:根据本小节所介绍的知识,说明非易失性存储器的特点。
2.3.3 易失性存储器
本小节将介绍易失性存储器,包括静态存储器和动态存储器。
1.静态存储器
对于静态存储器(Static RAM,SRAM)来说,其特点主要包括:
(1)当且仅当给SRAM供电时,数据就一直保存在存储单元中,一旦掉电,则信息丢失;
(2)通常使用6个晶体管保存一个比特位数据;
(3)具有快速访问数据的能力;
(4)功耗较大;
(5)密度较低,需要较大的硅片面积;
(6)其单位存储的成本较高。
图2.64给出了SRAM中一个存储单元的内部结构。从图中可知,一个存储单元由6个FET构成(M1~M6),在M1~M4(构成两个反相器)内保存着一个比特位信息。在select信号的控制下,通过M5和M6,读/写该比特位。下面对其工作原理进行分析。
图2.64 SRAM中一个存储单元的内部结构
注
bit和为互补关系。
读取SRAM内的数据,需要执行以下操作:
(1)对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select信号驱动为逻辑高电平。
(2)根据M1~M4上的值,将bit线设置为逻辑高/逻辑低,将设置为逻辑低/逻辑高。
(3)读bit和线上的状态,将其作为一个比特位数据。
将数据写到SRAM内,需要执行以下操作:
(1)将两个位线(bit和)预充电到所希望的逻辑电平,如bit=VDD和=VSS。
(2)对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select信号驱动为逻辑高电平。
(3)翻转或保持4个晶体管的逻辑状态。
2.动态存储器
对于动态存储器(Dynamic RAM,DRAM)来说,其特点主要包括:
(1)在包含一个晶体管和电容的单元中,保存一个数据比特位。根据电容的充电或者放电状态,表示逻辑“1”或者逻辑“0”。
(2)由于电容上的电荷会“泄漏”,因此需要周期性地刷新(充电),如每10ms刷新一次;
(3)与SRAM相比,其存储密度高,占用面积小。因此,成本较低。
根据数据率,将DRAM进一步划分为
(1)单数据率(Single Data Rate,SDR);
(2)双数据率(Double Data Rate,DDR);
(3)双数据率×2(Double Data Rate 2,DDR2);
(4)双数据率×4(Double Data Rate 3,DDR3);
(5)双数据率×8(Double Data Rate 4,DDR4)。
根据同步方式,将DRAM进一步划分为同步DRAM和非同步DRAM。
在DRAM中,每个存储单元要求很少的晶体管,如3个晶体管单元,甚至只需要1个晶体管单元。例如,如图2.65所示,一个晶体管单元包含一个晶体管和一个电容。其中,晶体管用于选择一个单元,电容用于保存该位的逻辑状态(“0”或“1”)。
图2.65 单管DRAM存储单元的内部结构
读取DRAM内的数据,需要执行以下操作:
(1)地址译码器对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select线设置为逻辑高电平。
(2)根据电容存储电荷的状态,设置bit信号线的逻辑状态。
将数据写到DRAM内,需要执行以下操作:
(1)将单个bit线预充电到期望的值,如VDD或者VSS。
(2)地址译码器对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select线设置为逻辑高电平。
(3)由bit线向电容充电,或者是由电容向bit线放电。
思考与练习2-13:根据本小节所介绍的知识,请说明SRAM靠________存储信息。
思考与练习2-14:根据本小节所介绍的知识,请说明DRAM靠________存储信息。
思考与练习2-15:由于DRAM电容所存储的电荷会泄露,因此需要每隔一段时间对其执行________操作,以维持电容上所存储的电荷。
2.3.4 非易失性存储器
本小节将对非易失性存储器的分类进行详细说明。
1)只读存储器(Read Only Memory,ROM)
早期,在制造ROM时就将期望的数据事先固化到其中,用户只能读取但不能修改ROM中的数据。后来,允许用户通过重新编程ROM来修改其中的数据,如EPROM和EEPROM。
2)非易失性的随机访问存储器(Non-Volatile RAM,NVRAM)
允许随机访问,可以读写数据。例如,Flash存储器。
3)机械存储设备
例如,硬盘、磁带和光盘,这类存储设备成本较低,但是访问速度也很慢。