本节将介绍存储器的分类和存储器的工作原理。计算机中所包含的存储器是物理设备,它们用于保存程序代码或者处理过程中产生的暂时的或者永久的数据,如图2.62所示。
图2.62 计算机中的存储介质
一般将存储器分成两类,即易失性存储器和非易失性存储器。
这种类型的存储器只有上电时才能够保存数据。一旦断电,存储器内所保存的所有数据信息将会丢失。它的特点主要包括:
(1)要求上电才能够持续保存信息;
(2)通常情况下有较快的访问速度和较低的成本;
(3)用于暂存数据,如CPU高速缓存和内部存储器等。
例如,笔记本和PC内存插槽上的DDR3 SDRAM内存条就属于易失性存储器。
这种类型的存储器可以永久地保存数据。即使断电,存储器中仍然保存着写入的数据信息。它的特点主要包括:
(1)一旦写入信息,在断电时仍能保存它;
(2)通常情况下有较低的访问速度和较高的成本;
(3)用于第二级存储,或者长期永久保存数据。
例如,笔记本和PC所搭载的基本输入输出系统(Basic Input Output System, BIOS)就属于非易失性存储器。
在计算机中,访问存储器是指处理器执行对存储器的读/写操作。其中:
(1)写存储器。处理器首先给出所要访问存储器单元的地址,然后再将数据写到该地址所指向存储器的地址空间。
(2)读存储器。处理器首先给出所要访问存储器单元的地址,然后从该地址所指向存储器的地址空间读取数据。
例如,一个8位宽度和2 8 (0~ 255)个存储深度的存储器结构如图2.63所示。
图2.63 一个8位宽度和2 8 (0~255)个存储深度的存储器结构
从图2.63中可以看出,地址信号Address[7∶0]可实现的任务包括:
(1)它可以提供用于访问存储器内不同单元的地址(可以产生2 8 =256个存储器地址);
(2)通过存储器内建的地址译码器,将 Address[7∶0]所携带的地址信息映射到存储器内的一个存储单元(也就是一个字);
(3)将该存储单元连接到位线放大器。
注: 对于一个容量较大的存储器来说,将存储器的地址分为行和列两部分。
对于读操作来说,随后执行的操作包括:
(1)将选中的存储单元与位线放大器连接;
(2)位线放大器将读取的信号恢复到正常的电压,然后将信息送到Data_Out[7∶0]数据端口上。
对于写操作来说,随后执行的操作包括:
(1)将写到存储器的数据放到Data In[7∶0]端口上;
(2)放大器将位线设置为期望的值,并驱动端口将其保存到所选中的存储单元中。
思考与练习2-11: 根据本节所介绍的知识,说明易失性存储器的特点。
思考与练习2-12: 根据本节所介绍的知识,说明非易失性存储器的特点。
本节将介绍易失性存储器,内容包括静态RAM和动态RAM。
对于静态存储器(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个晶体管的逻辑状态。
对于动态存储器(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或者VCC。
(2)地址译码器对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select信号设置为逻辑高电平;
(3)由bit线向电容充电,或者是由电容向bit线放电。
思考与练习2-13: 根据本节所介绍的知识,请说明SRAM靠______存储信息。
思考与练习2-14: 根据本节所介绍的知识,请说明DRAM靠______存储信息。
思考与练习2-15: 由于DRAM电容所存储的电荷会泄露,因此需要每隔一段时间对其执行______操作,以维持电容上所存储的电荷。
本节将对非易失性存储器的分类进行详细说明。
早期,在制造ROM时就将期望的数据事先固化到其中,用户只能读取但不能修改ROM中的数据。后来,允许用户通过重新编程ROM来修改其中的数据,如EPROM和EEPROM。
允许随机访问,可以读写数据。例如,Flash存储器。
例如,硬盘、磁带、光盘,这类存储设备的成本较低,并且访问速度也很慢。