Intel Quartus Prime数字系统设计权威指南:从数字逻辑、Verilog HDL 到复杂数字系统的实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 存储器

本节将介绍存储器的分类和存储器的工作原理。计算机中所包含的存储器是物理设备,它们用于保存程序代码或者处理过程中产生的暂时或永久的数据,如图2.62所示。

img

图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所示。

img

图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,读/写该比特位。下面对其工作原理进行分析。

img

图2.64 SRAM中一个存储单元的内部结构

bit和img为互补关系。

读取SRAM内的数据,需要执行以下操作:

(1)对地址进行译码,选中所期望访问的存储单元。当选中某个存储单元时,将该存储单元内的select信号驱动为逻辑高电平。

(2)根据M1~M4上的值,将bit线设置为逻辑高/逻辑低,将img设置为逻辑低/逻辑高。

(3)读bit和img线上的状态,将其作为一个比特位数据。

将数据写到SRAM内,需要执行以下操作:

(1)将两个位线(bit和img)预充电到所希望的逻辑电平,如bit=VDD和img=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”)。

img

图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)机械存储设备

例如,硬盘、磁带和光盘,这类存储设备成本较低,但是访问速度也很慢。