存储器是计算机的重要部件,计算机用存储器来记忆信息,将计算机要执行的程序、要处理的数据以及计算的结果存储在存储器中,使计算机能高速、自动地工作。
本章介绍半导体存储器的分类、组成、工作原理,高速缓冲存储器cache和虚拟存储器的原理与微机的连接及其使用。
本章主要内容
& RAM、ROM的工作原理
& 高速缓冲存储器(cache)的原理
& 虚拟存储器的原理
计算机中的存储器由两部分组成,一部分是位于主机内部的存储器,简称主存,一般由半导体器件构成。CPU对它进行的一次读、写操作称为访问。这类存储器的主要特征是CPU可以按地址访问其中的任何一个单元,这一特性被称为随机存取。
现代计算机为了进一步提高运行速度,在主存和CPU之间增设了容量小、速度快的高速缓冲存储器(cache)。在这样的系统中,cache和主存构成内部存储器,简称内存。在没有cache的系统中,主存也称做内存。
计算机中存储器的另一部分是辅助存储器,也称为外部存储器,简称辅存或外存。外存目前主要采用磁表面存储和光存储器件,例如常见的磁带、磁盘、光盘存储器。它们通过专用接口电路与计算机主机相连接,相当于一台外部设备。辅存的重要特征是CPU只能以块为单位访问这类存储器,在电源关闭后,辅存中的信息仍然可以长期保存。
半导体存储器按制造工艺可以分为双极型、CMOS型和HMOS型等种类;从功能角度可以分为随机存取存储器(Radom Access Memory,RAM)和只读存储器(Read Only Memory,ROM)两类,近年来出现了新型的闪速存储器(flash memory)等新型存储器件。半导体存储器分类如表4-1所示。
表4-1 半导体存储器分类
ROM/ RAM |
分 类 |
特 点 |
应用场合 |
ROM 掉电时信息不丢失 |
MASKROM |
掩膜ROM:厂商根据用户要求制造掩膜,封装后信息不能改写 |
计算机固化程序/数据的存储器 |
OTPROM |
一次性可编程ROM:用户一次性编程写入,写入后不能改写 | ||
EPROM |
可擦除编程ROM:可多次用紫外线全部擦除,再编程改写 | ||
E2PROM |
可电擦除编程ROM:能以字节为单位多次在线用电擦除、改写 | ||
FLASH |
闪存:以块为单位多次在线用电擦除和改写,集成度高 | ||
SRAM 静态 |
SRAM |
以双稳态电路为存储单元,翻转快,存取速度高 |
cache |
SB SRAM |
同步SRAM:对它的所有操作均在统一时钟控制下同步操作,一般支持突发操作 |
L2(二级) cache | |
Multi-SRAM |
具有多个数据端口的SRAM |
数据共享 | |
FIFO |
按先进先出方式存储信息的SRAM |
缓冲器 | |
PSRAM |
类SRAM:在动态随机存取芯片DRAM内集成了动态刷新逻辑,对外表现为SRAM的不需刷新的特性 |
特定场合 | |
DRAM 动态 |
FPMDRAM |
快速页模式:快速操作时维持行地址不变,由连续的CAS信号对不同的列地址进行操作 |
计算机的主存储器 |
EDODRAM |
扩展数据输出:省略了用于行地址建立和保持的时间以及行列地址复合时间,提高了访问速度 | ||
SDRAM |
对存储器访问的所有操作均在统一的时钟控制下同步进行 | ||
RDRAM |
采用Rambus信号标准,允许多个设备同时以极高的带宽随机寻址存储器,进行高速数据传输 |
随机存取存储器按其制造工艺可以分为双极型半导体RAM和金属氧化物(MOS)型半导体RAM。
(1)双极型RAM。
双极型RAM的主要优点是存取时间短,通常为几纳秒到几十纳秒(ns)。与下面提到的MOS型RAM相比,其集成度低、功耗大,而且价格也较高。因此,双极型RAM主要用于要求存取时间非常短的特殊应用场合。
(2)MOS型RAM。
使用MOS器件构成的RAM又可分为静态读/写存储器(Static RAM,SRAM)和动态读/写存储器(Dynamic RAM,DRAM)。
① SRAM。
SRAM的存储单元由双稳态触发器构成。双稳态触发器有两个稳定状态,可用来存储一位二进制信息。只要不掉电,其存储的信息可以始终稳定地存在,故称其为“静态RAM”。SRAM的主要特点是存取时间短(几十纳秒到几百纳秒),外部电路简单,便于使用。常见的SRAM芯片容量在1KB~64KB之间。SRAM的功耗比双极型RAM低,价格也比较便宜。
② DRAM。
DRAM的存储单元以电容来存储信息,电路简单。但电容总有漏电存在,时间长了存放的信息就会丢失或出现错误。因此需要对这些电容定时充电,这个过程称为“刷新”,即定时地将存储单元中的内容读出再写入。由于需要刷新,所以这种RAM称为“动态RAM”。
DRAM的存取速度与SRAM的存取速度差不多。其最大的特点是集成度非常高,目前DRAM芯片的容量已达几百兆比特。其他的优点还有功耗低,价格比较便宜。
由于用MOS工艺制造的DRAM集成度高,存取速度能满足各种类型微机的要求,而且其价格也比较便宜,因此,现在微机中的内存主要由MOS型DRAM组成。
根据制造工艺不同,只读存储器分为ROM、PROM、EPROM、E2PROM等几类。只读存储器在工作时只能读出,不能写入,掉电后不会丢失所存储的内容。
(1)掩膜式只读存储器(ROM)。
掩膜式ROM是芯片制造厂根据ROM要存储的信息,对芯片图形(掩膜)通过二次光刻生产出来的,故称为掩膜ROM。其存储的内容固定在芯片内,用户可以读出,但不能改变。这种芯片存储的信息稳定,成本最低,适合存放一些可批量生产且固定不变的程序或数据。
(2)可编程ROM(PROM)。
如果用户要根据自己的需要来确定ROM中的存储内容,则可使用PROM。PROM允许用户对其进行一次编程。一旦编程之后,信息就永久性地固定下来,用户可以读出其内容,但再也无法改变它的内容。
(3)可擦除PROM(EPROM、E2PROM)。
上述两种芯片存放的信息只能读出而无法修改,这给许多方面的应用带来不便,由此又出现了两类可擦除的ROM芯片。这两类芯片允许用户通过一定的方式多次写入数据或程序,也可修改和擦除其中所存储的内容,且写入的信息不会因为掉电而丢失。由于这些特性,可擦除的PROM芯片在系统开发、科研等领域得到了广泛的应用。
可擦除的PROM芯片因其擦除方式的不同可分为两类:一是通过紫外线照射(约20分钟左右)来擦除,这种用紫外线擦除的PROM称为EPROM(Erasable Programmable Read Only Memory);另外一种是通过加电的方法(通常是加上一定的电压)来擦除,这种PROM称为EEPROM(Electronic Erasible Programmable ROM),也称E2PROM。擦除和重新编程都可以多次进行。但有一点要注意,尽管EPROM和E2PROM芯片既可读出也可以对其编程写入和擦除,但它们和RAM还是有本质区别的。首先它们不能够像RAM芯片那样随机快速地写入和修改,它们的写入需要一定的条件(这一点将在后面详细介绍);另外,RAM中的内容在掉电之后会丢失,而EPROM、E2PROM则不会,里面的内容一般可保存几十年。
(4)快闪存储器(FLASH)。
FLASH也称闪烁存储器,简称闪存,因其可以快速重新编程使其内容频繁变化而得名。FLASH存储信息密度高、存取速度快、成本低、不挥发,可以块擦除、单一供电,得到了广泛应用。
衡量半导体存储器的性能指标有很多,如存取速度、存储容量、可靠性、功耗等,其中最重要的是存储器的存取速度和存储容量。
(1)半导体存储器的存储容量。
在电子计算机内,信息的最小表示单位是一个二进制位(bit),它可以存储一个二进制0或者1。CPU访问存储器的最小单位通常是8位二进制数组成的字节(Byte)。每个字节有一个顺序编号,称为地址。每一个存储芯片或芯片组能够存储的二进制位数或者所包含的字节总数就是它的存储容量。计量单位千字节(KB)、兆字节(MB)、吉字节(GB)和太字节(TB)的相互关系如下:
1KB=1024B
1MB=1024 KB
1GB=1024 MB
1TB=1024 GB
半导体存储器芯片容量取决于存储单元的个数和每个单元包含的位数。存储容量可以用下面的式子表示:
存储器容量(S)=存储单元数(p)×数据位数(i)
存储单元数与存储器芯片的地址线条数(k)有密切关系:P=2k。数据位数i一般等于芯片数据线的根数。存储芯片的容量与地址线条数、数据线的位数之间的关系因此可表示为:S=2k×i。
例如,6264芯片是一个8K×8B的CMOS SRAM芯片,说明它有8条数据线,8192个单元,地址线的条数为k=log28192=13;如一个存储芯片有20条地址线和8条数据线,它的单元数为220=1M,容量为1M×8B(1MB)。
(2)存取时间。
存取时间是指CPU访问一次存储器(写入或读出)所需的时间。存储周期则是指连续两次访问存储器之间所需的最小时间,存储周期等于存取时间加上存储器的恢复时间。现在存储器的存取时间通常以纳秒为单位。秒(s)、毫秒(ms)、微秒(ms)和纳秒(ns)之间的换算关系为:
1s=1000ms
1ms=1000ms
1ms=1000ns
存储周期为0.1ms表示每秒钟可以存取1万次,1ns意味着每秒钟存取1亿次。存取时间越小,速度越快。目前微型计算机内存读/写时间一般在10ns以内,高速缓冲存储器的存取速度则更快。
(3)可靠性。
内存发生的任何错误都会使计算机不能正常工作。计算机要正确运行,必然要求存储器系统具有很高的可靠性。存储器的可靠性取决于构成存储器的芯片、配件质量及组装技术。
(4)功耗。
使用低功耗存储器芯片构成存储系统不仅可以减少对电源容量的要求,而且还可以减少发热量,提高存储系统的稳定性。
随机存取存储器(RAM)用来存放当前运行的程序、各种输入/输出数据、运算中间结果等,其存储的内容可以随时读出,也可以随时写入,掉电后内容会全部丢失。本节介绍了两类MOS静态和动态型随机存取存储器(SRAM和DRAM)的特点、外部特性以及它们的应用。
如图4-1所示为静态RAM的8管基本存储电路,上半部分是基本存储单元,用来存储一位二进制信息0和1。图4-1中T1、T3和T2、T4组成一个双稳态触发器,它的状态确定了该存储单元存储的一位二进制信息。T5和T6为行选通管,T7和T8为列选通管。下半部分是它的读/写逻辑,A、B和C是控制数据信号输入/输出的三态门,它们和列选通管T7、T8一起为一列上的多个基本存储单元电路共用。
图4-1 静态存储单元
静态存储器用双稳态触发器存储信息,一旦电压消失,原存储的状态同时消失,再次通电时,原来的信息不能恢复。SRAM最大的缺点就是信息的易失性。
图4-2 单管动态存储电路 |
单管动态存储电路如图4-2所示,它由一个MOS管T1和一个电容C构成。写入时,字选择线(地址选择线)为高电平,T1管导通,写入的信息通过位线(数据线)存入电容C中(写入1对电容充电,写入0对电容放电);读出时,字选择线也为高电平,存储在电容C上的电荷通过T1输出到位线上。根据位线上有无电流可知存储的信息是1还是0。字选择线的信号由片内地址译码得到。
DRAM芯片集成度高、价格低,微型计算机主存储器几乎毫无例外地都是由DRAM组成。
只读存储器ROM因具有掉电后信息不会丢失的特点,故一般用于存放一些固定的程序,如监控程序、BIOS程序等。本节主要介绍两种可擦除的只读存储器:PROM和EPROM。
MROM是掩膜型只读存储器的英文缩写,其内部结构如图4-3所示,芯片内每一个二进制位对应于一个MOS管,数据从它的漏极引出。该位上存储的信息取决于这个MOS管的栅极是否被连接到字线上。栅极与字线连接,该单元被选中时,MOS管导通,漏极与电源+E相通,输出高电平,该位存储的信息为1;栅极与字线未连接时,无论字线被选中与否,输出端与电源+E不能导通,输出低电平,对应的信息为0。由于MOS管的栅极与字线连接与否在生产过程中已经确定,未连接的MOS管封装后不能再接上,所以掩膜ROM内的信息不可改变。
掩膜ROM芯片批量生产成本低,适合于批量大、程序和数据已经成熟、不需要修改的场合。
图4-3 掩膜型ROM的结构示意图
可编程只读存储器(Programmable Read Only Memory,PROM)的基本存储单元由一只晶体管或MOS管组成,电路内串接有一段熔丝。芯片出厂时,所有熔丝均处于连通状态,根据具体电路的不同,每一个单元存储的信息同为全0或全1。
用户在使用该芯片时可以根据需要有选择地给部分单元电路通以较大的电流,将该电路上的熔丝烧断。熔丝被烧断后,该位所存储的信息就由原来的0变为1,或者由1变为0。
PROM靠存储单元中的熔丝是否熔断决定信息0和1。一旦存储单元的熔丝被烧断就不能恢复。因此,PROM只能写入一次。
有的PROM芯片采用PN结击穿的方式进行编程,原理与上述器件类似。
PROM也是一种非易失性存储器。少量使用时,它的总体成本低于掩膜型ROM。
图4-4 EPROM存储单元 |
EPROM的存储单元由浮空栅雪崩注入式MOS管(即FAMOS管)和一个普通MOS管T组成(如图4-4所示),其中TR为负载管。选中该单元时,字线有效,MOS管T导通,单元电路的输出取决于FAMOS管Tfa栅极的状态。
芯片第一次使用时,Tfa管栅极上没有电荷,该单元被选中后,尽管T栅极置上了高电平,但是由于Tfa管处于截止状态,T管仍然截止,数据线状态为l。
如果对FAMOS管加一定的高电压,使它的浮置栅积累一定数量的电荷,使Tfa导通,这个过程称为编程。由于Tfa漏极接地,该单元被选中时,数据线上输出0。
将紫外线对准EPROM芯片中间的透明石英窗照射一定时间(一般为5~10分钟),消除浮空栅上的电荷,可以使FAMOS管恢复到出厂时的状态,该位存储的信息又变回1,这一过程称为擦除,出厂时EPROM芯片内信息为全1。可以使用专门的编程写入器对芯片编程(写入新的内容)。
存储在EPROM中的内容能够长期保存达几十年之久,掉电后内容不会丢失。EPROM芯片的擦除和编程都容易实现,因此广泛应用于小批量应用系统的开发中。
E2PROM(EEPROM)是电擦除可编程只读存储器的英文缩写。由于采用电擦除技术,所以不必像EPROM芯片那样需要从系统中取下,再用专门的擦除器擦除。E2PROM还允许以字节为单位擦除和重写,使用比EPROM方便。E2PROM有以下几个主要特点。
(1)使用单一的+5V电源,不需要专门的编程电源。
(2)写入过程中自动进行擦写,但擦写时间较长,约需10ms。
(3)无须专用电路,只要按一定的时序操作即可进行在线擦除和编程。
(4)除了具有并行总线传输的芯片外,还具有串行传送的E2PROM芯片。
E2PROM能够在线编程,可以自动写入,在使用方便性及写入速度两个方面都较EPROM进了一步。但是,其编程时间相对RAM而言还是较长,特别对大容量的芯片更显得突出。人们希望有一种写入速度类似于RAM,掉电后内容又不丢失的存储器。一种称为闪速存储器(以下简称为FLASH或闪存)的新型E2PROM由此被研制出来。
闪速存储器首先由Intel公司开发,它采用非挥发性存储技术,能够在线擦除和重写,掉电后信息可以保持10年。FLASH的编程方法与E2PROM相同。擦除时,将栅极接地,源极接正电压,使浮空栅中的电子泄漏,达到擦除的目的。由于所有的源极是接在一起的,所以FLASH不能按字节擦除。FLASH具有ROM非易失性的优点,又有很高的存取速度,既可读又可写,具有集成度高、价格低、耗电少等优点,因此得到了广泛的使用。
FLASH存取速度比DRAM略慢,经过改进,目前其存取速度已突破了30ns。
随着集成电路技术的飞速发展,CPU的速度不断提高,这就要求用作主存的DRAM具有更快的访问速度。近几年来,新型DRAM存储器件不断涌现。
扩展数据输出(Extended Data Out,EDO)是对传统DRAM存取技术的改进,主要表现在两个方面。
对传统DRAM的访问需要经过发送行地址—发送列地址—读/写数据3个阶段,一次访问时间是每个阶段所需时间之和。EDO DRAM普遍使用一种快速页面模式(FPM)对地址连续的多个单元进行读/写访问。在这种模式里,由于连续存储单元的行地址是相同的,从第二个单元起,不再重复发送相同的行地址(使用芯片内已存储的行地址),在CAS信号的控制下,仅发送下一个要访问的列地址。这样,后续的访问只需要经历发送列地址—读/写数据两个阶段,从而有效地缩短了访问时间。
EDO DRAM采用的另一项技术是在输入下一个列地址时,仍然允许数据输出进行,这可以理解为扩展了数据输出的时间,EDO因此得名。由于列地址输入和数据输出同时进行,存储器读操作时间被进一步缩短。
采用上述技术,理论上可将RAM的访问速度提高30%。
EDO DRAM用于具有32位读/写能力的微型计算机中,最高频率为30 MHz~60MHz,工作电压一般为5V,其接口方式多为72线的SIMM类型。
传统DRAM采用异步的方式进行存取。处理器在给出存储器地址和读/写命令之后,要等待存储器内部进行地址译码、读/写等操作,这一段时间的长短取决于芯片的性能,随使用芯片的不同而不同。在这段时间内,处理器相关部件和总线除了等待之外不能做其他事情,这样就会降低系统的性能。
SDRAM采用同步的方式进行存取。送往SDRAM的地址信号、数据信号、控制信号都是在一个时钟信号的上升沿被采样和锁存的,SDRAM输出的数据也在时钟的上升沿锁存到芯片内部的输出寄存器。而且,输入地址、控制信号到数据输出所需的时钟个数可以通过对芯片内方式寄存器的编程来确定。这样,在SDRAM输入了地址、控制信号,进行内部操作期间,处理器和总线主控器可以安全地处理其他任务(例如,启动其他存储体的读操作),而无须简单等待,从而提高了系统的性能。
SDRAM芯片还采用一种突发总线模式进行读/写操作,进一步提高了读/写速度。
SDRAM芯片基于双存储体结构,内含两个交错的存储阵列,CPU从一个存储体或阵列访问数据的同时,另一个已准备好读/写数据,通过两个存储阵列的紧密切换,读数据效率得到成倍提高。
SDRAM的工作电压一般为3.3V,其接口多为168线的DIMM类型。
SDRAM的时钟频率早期为66MHz,后期发展为133MHz、150MHz。由于它以64位的宽度(8B)进行读/写,理论上单位时间内的数据流量峰值(带宽)可以达到1.2GB/s(88×150MHz)。
RDRAM是Rambus DRAM的简称,是SDRAM之后由Rambus公司开发的新型高速动态随机存取存储器。
为解决存储器的带宽问题,RDRAM采用了非常的变革方法。RDRAM总线使用异步的面向页的协议来传送地址信息和控制信息,总线最多能寻址320页RDRAM芯片,经过480ns初始地址存取时间后,总线本身能够产生555Mbps的数据传输速率(异步DRAM只有33Mbps)。RDRAM用28根总宽不超过12cm的引线与处理器交换数据,所有引线都在一边,采用垂直封装。Rambus精确地定义了阻抗、时序和信号,与传统的DRAM采用显式的RAS、CAS、R/W、CE#等控制信号来定义访问存储器周期不同,RDRAM通过高速总线获得存储器请求,该请求包含了访问存储器操作所需的地址、操作类型和字节数。
RDRAM的容量一般为64MB/72MB或128MB/144MB,组织结构为4M×16/4M×18或8M×16/8M×18,其中18位的组织结构允许进行ECC检验。
RDRAM引入了RISC(精简指令集)技术,工作频率有300MHz、356MHz、400MHz、533MHz等多种,采用双沿(上升沿和下降沿)传输。上述工作频率的RDRAM内存分别称为PC-600、PC-700、PC-800、PC-1066内存。RDRAM芯片具有多组结构,可分为16、32或64组,支持至多4组的同时传输(四通道)。RDRAM结构的带宽由工作频率和同时传输的组数决定,工作频率400MHz情况下,1组/2组/4组传输的带宽分别为400×2×16=1600MB/s=1.6GB/s、400×2×2×16=3.2GB/s、400×2×4×16=6.4GB/s。
RDRAM的行列地址相互分离、各自独立,行与列的地址几乎在同一时间内完成,弥补了RDRAM寻址过程较SDRAM慢的缺点,进一步提高了工作频率。
RDRAM可灵活使用3种预充电机制;具有减少读延迟的写缓冲,可在各组间交替传输。RDRAM具有高级电源管理特性,有多种低功耗状态,允许在传输数据期间处于激活状态而在自我刷新时处于低功耗状态。
RDRAM由于对外接口不同于以前的DRAM,所以采用184线的RIMM内存条封装。
现在流行的不少芯片组同时支持DDR与RDRAM,但两种不同类型的内存芯片不能混用。使用RDRAM要求所有的RIMM槽必须全部插满RIMM内存条,若有空余则必须用专门的Rambus终结器插满,这是由于时钟信号依次流过每个RIMM槽卡再返回。
RDRAM的缺点是价格比SDRAM贵,随着DDR SDRAM技术的进步,后者占据了市场的主流。RDRAM主要应用在高性能存储、图形图像、视频和其他需要高带宽、低延迟的应用场合。
双倍数据速率同步内存(Double Data Rate SDRAM,DDR SDRAM)是由SDRAM发展起来的新技术。原来的SDRAM对应地被称为单倍数据速率同步内存(SDR SDRAM)。SDR只在时钟脉冲的上沿进行一次数据写或读操作,而DDR不仅在时钟上沿进行操作,在时钟脉冲的下沿还可以进行一次对等的操作(写或读)。这样,理论上DDR的数据传输能力就比同频率的SDR提高一倍。假设系统FSB(Front Side Bus)的频率是100MHz,DDR的工作频率可以倍增为200 MHz,带宽也倍增为1.6GB/s(88×100MHz×2)。
DDR SDRAM的速度在不断提高,由DDR 200到目前常见的DDR 400,它还在向更高速度发展。其内存的带宽也由1.6GB/s发展到3.2GB/s。
随着800MHz前端总线的Pentium 4处理器的推出,处理器对内存系统的带宽要求越来越高,内存带宽成为系统最大的瓶颈。
双通道内存体系包含了两个独立的、具备互补性的64位智能内存控制器,两个内存控制器都能够在彼此间无等待时间的情况下同时运作,从而形成了128位宽度的内存数据通道,使内存的带宽翻了一番。
采用i865和i875以上芯片组的主板支持双通道DDR内存,它们大都具有4个DIMM插槽,每两个一组,每一组代表一个内存通道,只有当两组通道上都同时安装了内存时,才能使内存工作在双通道模式下。
从理论指标来看,双通道DDR 400的理论带宽是6.4GB/s,和英特尔的前端总线为800MHz的Pentium 4处理器及i865、i875芯片组实现最佳匹配。
双通道内存技术的理论值虽然非常诱人,但是在实际应用中,整机的性能并不能比使用单通道DDR内存的整机高1倍,因为毕竟系统性能瓶颈不仅仅是内存。从一些测试结果可以看到,采用128位内存通道的系统性能比采用64位内存通道的系统整体性能高出3%~5%,最高的可以获得15%~18%的性能提升。
DDR2 DRAM是在DDR DRAM基础上发展而来的新一代动态存储器。与DDR DRAM相比,通过锁相技术,可以在一个时钟周期内传输4次数据。采用100MHz核心频率时,实现了400MHz的实际频率,单通道数据吞吐量因此可以达到88×400MHz=3.2GB/s。由于核心频率没有提高,DDR2 DRAM可以更好地实现低电压、低散热、高数据吞吐量的目标。
为了保证传输的稳定流畅,减少电气干扰与数据冲突,DDR2采用了略大于DDR的延迟(CL)设定,因此DDR2 400MHz的实际性能略低于DDR 400MHz,不过随着高性能、低延迟DDR2 DRAM的出现,其性能一定会超过DDR DRAM。
DDR2内存的工作频率目前为533MHz/400MHz,采用200、220、240针脚的FBGA封装形式,与现有的DDR内存不兼容。