更新于 

主存储器

易失性半导体随机存储器

主存储器由DRAM实现,靠近处理器的那一层(Cache)是由SRAM实现的,这两种半导体随机存储器都属于易失性存储器,只要电源被切断了,那么原来保存的信息便会丢失。DRAM的位成本低于SRAM,速度也慢于SRAM,主要原因是制造DRAM需要更多硅。而ROM属于非易失性存储器。ROM我们后面详细介绍,我们先来学习一下易失性存储器DRAM和SRAM的工作原理。

SRAM工作原理

我们通常把一个存放二进制位的物理器件称为存储元,他是存储器的最基本的构件。地址码相同的多个存储元构成一个存储单元。若干个存储单元就构成了存储体。

静态随机存储器SRAM的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,因此即使信息被读出以后,他仍然能够保持其原状态而不需要再生,所以是非破坏性读出。SRAM的存取速度快符合高速缓存Cache的要求,但是集成度低,功耗大,所以一般来组成高速缓冲存储器。

DRAM的工作原理

和SRAM的存储原理不同,动态随机存储器DRAM是利用存储元电路中栅极电容上的电荷来存储信息的,DRAM的基本存储元通常只会使用一个晶体管(注意SRAM一个存储元是使用的六晶体管),所以它比SRAM的密度要高很多。DRAM采用地址复用技术,地址线是原来的1/2,且地址线信号分行、列两次传送。

思考:什么是地址复用技术?

地址复用技术只适用于DRAM,不适用于SRAM,地址复用技术的目的就是为了减少地址线的数量,便于增加DRAM的集成度。地址复用技术的本质就是分两次送行地址和列地址,因为半导体存储芯片的核心存储矩阵是采用行列地址交叉确定存储单元的,而SRAM需要一次性传入行列地址,假设行列地址一共需要40根地址线,那么SRAM需要至少40根地址线才可以完成一个存储单元的查找读取,而DRAM可以先传入行地址,再传入列地址,因而只需要20根即可。这样就减少了地址线的数量,SRAM和DRAM有许多不同,这个技术也是导致不同的原因之一。

相比于SRAM,DRAM具有容易集成,位价低,容量大和功耗小的优点,但是DRAM比SRAM存取速度要慢, ,一般用来组成大容量主存系统。

DRAM的刷新方式

DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失,所以每隔一段时间必须刷新,通常取2ms,这个时间称为刷新周期。常用的刷新方式有3种:集中刷新,分散刷新和异步刷新。

  • 集中刷新:在一段刷新周期内,利用一段固定的时间,依次对存储器的所有行进行逐一再生,在此期间停止对存储器的读写操作,称为“死时间”,又称访存“死区”。集中刷新的优点是读写操作时不受刷新工作的影响,因此系统的存取速度较高,缺点是在集中刷新期间不能访问存储器。例如有128行且每行刷新时间是0.5μs,那么每隔2ms就要占用一段固定时间64μs对128行统一进行刷新。

  • 分散刷新:把对每行的刷新分散到各个工作周期中。一个存储器的系统工作周期分为两部分:前半部分用于正常读、写或保持,后半部分用于刷新某一行。这种刷新方式增加了系统的存取周期,如存储芯片的存取周期为0.5μs,但是系统的存取周期却为1μs(因为还包括了行刷新时间)。很明显分散刷新的优点是没有死区,缺点是加长了系统的存取周期,降低了整机的速度。即128行某一行被读取后就要立刻进行未检查的一行刷新操作,所以每隔128次读取操作就可以刷新完所有行一遍,此时刷新周期不再是2ms而是128μs。虽然整体上刷新周期减少了,但是每一行的刷新时间都增大为了1μs。

  • 异步刷新:异步刷新结合了前面两种方法,它既可缩短“死时间”,又能充分利用最大刷新间隔为2ms的特点。具体做法是将刷新周期除以行数,得到两次刷新操作之间的时间间隔t,利用逻辑电路每隔时间t产生一次刷新请求。这样可以避免CPU连续等待过程时间,而且减少了刷新次数,从根本上提升了整机的工作效率。即128行,那么2ms/128=15.6μs,每隔15.6μs就进行一次刷新一行且每一行的刷新时间就是0.5s即此时相对于每一行来说是集中刷新而相对整体是分散刷新。

如果将刷新安排在不需要访问存储器的移码阶段,那么就既不会加长存取周期,又不会产生“死时间”了。这是分散刷新方式的发展,也称为“透明刷新”。

思考:三种方法的总结?

刷新方式 刷新周期 一行的刷新时间 某一行何时刷新 死区 所有行刷新一遍的时间和
集中刷新 2ms 0.5μs 64μs来集中刷新所有行 64μs
分散刷新 128μs 1μs 进行一次存取操作后刷新一行 128μs
异步刷新 2ms 0.5μs 每隔15.6μs刷新一行 64μs

思考:刷新和存取的关系?

前面也讲过了刷新和存取并不能并行发生,即刷新就不能存取,所以刷新时间就是死时间,刷新与存取很相似,他也是选中一行,这期间片选线,地址线和地址译码器全部占用,只是不同于存取没有输入和输出。所以刷新时间一般和存取时间相同因此存取时间也是0.5μs。集中刷新有64μs刷新时间也就是64μs的死时间。而分散刷新是将刷新放到了存取的后面,所以不会占用存取时间,所以无死时间。而异步刷新虽然集成了两者的优点,但是也是又死时间的,因为异步刷新每个15.6μs产生的某一行的刷新时间0.5μs就是死时间。

思考:刷新周期和所有行刷新时间和的区别?

刷新周期是指每隔多少时间后所有的行都刷新了一遍,这其中还包括了其他操作的时间。而所有行刷新时间和是仅仅将所有的行刷新时间累加。

思考:DRAM刷新的补充?

我们要注意上面所讲的刷新仅仅是为了维持存储单元存储的信息不变,这对于内存厂商来说并不难实现,只要在隔多少时间后进行刷新就好了。但是同时还要注意当DRAM某一个存储单元被信息访存后不仅仅要进行保存内容不变的刷新,还需要再刷新一遍因为主存的读取操作是破坏性的,需要再生存储数据。所以DRAM读取操作后可能某一行需要两次刷新一次是维持自身电荷稳定,还有一次是存储信息的再生刷新,而SRAM是非破坏性读取,永远也不需要刷新。

DRAM的刷新需要注意一下问题:

  1. 刷新对CPU是透明的,即刷新不依赖于外部的访问,是特定时间自动刷新的。
  2. 动态RAM的刷新单位是行,因此刷新操作时仅需要行地址,即刷新行即可。而SRAM不需要这些操作。
  3. 刷新操作类似于读操作,但又有所不同。刷新操作仅给栅极电容补充电荷,不需要信息输出。另外刷新时不需要选片,即整个存储器的所有芯片同时被刷新。
  4. 一定要区分维持自身信息的刷新和读取后刷新的目的是不同的。

我们一定要注意易失性存储器和刷新的区别。易失性存储器是指断电后数据丢失,SRAM和DRAM都满足断电内容消失。但是需要定时刷新只有DRAM,而SRAM不需要。究其原因是SRAM是使用双稳态触发器来记忆信息的,而DRAM使用的是栅极电容发上的电荷,电荷会逐渐减少,所以需要定时补充。

SRAM与DRAM的总结

SRAM(静态) DRAM(动态)
存储信息 双稳态触发器 电容
破坏性读出
读取特点 读:“查看”触发器状态
写:改变触发器状态
读出后需要重新充电(破坏性读取)
读:连接电容,检测电流变化
写:给电容充/放电
需要刷新 是(一种刷新是用来维持电荷稳定,还有一种是破坏性读取后存储数据再生)
送行列地址 同时送 分两次送
运行速度
集成度 低(6个逻辑元件组成) 高(1个或3个逻辑元件构成)
发热量
存储成本
存储作用 常用Cache 常用作主存

存储器的读、写周期

RAM的读周期

从给出有效地址开始,到读出所选中单元的内容并在外部数据总线上稳定地出现所需要的时间,称为读出时间(tA)。地址片选信息号非CS必须保持到数据稳定输出(注意不是必须为高/低电位,而是只要稳定即可),tCO为片选信息号的保持时间,在读周期写命令信号非WE必须为高电平。RAM芯片的读周期时序图如下:

一定要注意读周期tRC与读出时间tA是不同的,读周期tRC表示存储芯片进行两次连续读操作时必须间隔的时间,他总是大于等于读出时间。即读周期是从地址有效一直到地址失效的过程,而读出时间仅仅是地址有效到内容稳定出现到数据总线的时间,所以读周期更加长。在读周期中包括了数据有效到数据稳定的过程,而读出时间仅仅有数据有效时间,因为到了数据稳定读出时间就停止了。

RAM的写周期

要实现写操作,要求片选信号非CS和写命令信号WE都必须为低电平,为了使数据总线上的信息能够可靠的写入存储器,要求非CS信号和非WE信号相“与”的宽度至少为tW(即相较时间,也是写数据时间)。具体的写操作时序图如下:

为了保证在地址变化期间不会发生错误写入而破坏存储器的内容,非WE信号在地址变化期间必须保持高电位。为了保证有效数据的可靠写入,地址有效时间至少应为tWC=tAW+tW+tWR即整个写周期地址都要有效。为了保证在非WE和非CS变为无效前能够把数据可靠的写入,要求写入的数据必须在tDW以前在数据总线上已经稳定。

非易失性半导体存储器

RAM和ROM都是支持随机存取的存储器,其中SRAM和DRAM均是易失性半导体存储器。而ROM是一旦有了信息,那么就不能轻易改变,即使断电了也不会丢失信息,他在计算机中是只供读出的存储器,ROM有两个优点:

  1. 结构简单,位密度比可读写存储器的高
  2. 具有非易失性,所以可靠性高

ROM同样也有许多类型,我们一一了解即可:

ROM分类

根据制造工艺的不同,ROM可以分为掩模式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、闪速存储器(Flash Memory)和固态硬盘(Solid State Drives)。

掩模式只读存储器

MROM的内容由半导体制造商按用户提出的要求在芯片的生产过程中直接写入,写入以后任何人都无法改变其内容。优点是可靠性高,集成度高,价格便宜,缺点是灵活性差。

一次可编程只读存储器

PROM是可以实现一次性变成的只读存储器,允许用户利用专门的设备(编程器)写入自己的程序,一旦写入,内容就无法改变。

可擦除可编程只读存储器

EPROM不仅可以由用户利用编程器写入信息,而且可以对内容进行多次修改。需要修改EPROM内容时,先将全部内容擦除,然后编程。EPROM又可以分为两种,紫外线擦除(UEPROM)和电擦除(E2PROM)。EPROM虽然既可以读又可以写,但是不能取代RAM,因为EPROM的编程次数有限且写入时间长。

闪速存储器(Flash Memory)

闪速存储器是在EPROM与E2PROM的基础上发展而来,主要特点是既可以在不加电情况下长期保存信息,又能在线进行快速擦除与重写。闪速存储器既有EPROM的价格便宜,集成度高的优点,又有E2PROM电擦除可重写的特点,且擦除重写的速度快。

固态硬盘

基于闪存的固态硬盘是固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(FLASH芯片)组成。保留了闪速存储器长期保存信息、快速擦除和重写的特性。对比传统硬盘具有读写速度快、低功耗的特性、缺点是价格高昂。

思考:ROM是非破坏性读出吗?

很明显ROM是非破坏性读出的方式进行工作的,因为再生数据就是重写数据,而ROM一般是不能进行数据写修改的。一般ROM用来存储固定不修改的数据和程序的,例如Apple II或者IBM PC XT/AT等早期个人电脑的开机程序(操作系统)或是其他各种微电脑系统中的韧体所使用的硬件都是ROM。

总结

主存储器的基本组成

下面我们来从整体学习一下一个主存信息存储,读取的操作过程。下图是主存储器(Main Memory,MM)的基本组成框图,其中由许多个存储0或1的记忆单元(也称为存储元件)构成的存储矩阵(也称存储体)是存储器的核心部件。记忆单元是具有两种稳态的能表示二进制0和1的物理器件。为了存取存储体中的信息,必须对存储单元进行编号(也称为编址)。编制单位是指具有相同地址的那些存储元件构成一个单位,可以按照字节编址,也可以按字编址。现代计算机常使用字节编址方式,此时存储体内的一个地址中有一个字节。

指令执行过程中需要访问主存,CPU首先会把访问存储单元的地址送到MAR中,然后通过地址线(注意是单向的,MDR->地址寄存器)将主存地址送到主存中的地址寄存器,以便地址编码器进行译码选中相应的存储单元,同时CPU将读写信号通过控制线送到主存中读写控制电路。如果是写操作,那么将信号写入选中的存储单元,如果是读操作,那么主存读出选中存储单元的内容送到数据线,然后送到MDR中。数据线的宽度和MDR的宽度相同,地址线的宽度和MAR宽度相同。上图中数据线是64位,所以在按字节编址方式下,每次最多可以存取8个单元的内容。地址线的位数决定了主存地址空间的最大可寻址范围。例如上图中地址线是36位,所以寻址范围是0~2^36-1。数据线和地址线共同反应存储体的最大容量,上图中最大容量是2^36*64位。

总结