目录
3.1存储器概述
3.1.1存储器的分类
1.按在计算机中的作用(层次)分类
1)主存储器。简称主存,也称内存储器(内存),用来存放计算机运行期间所需的程序和数据,CPU可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)及辅助存储器交换数据。其特点是容量较小、存取速度较快、单位成本较高。
2)辅助存储器。简称辅存,也称外存储器或外存,用来存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息。辅存的内容需要调入主存后才能被CPU访问。其特点是容量大、存取速度较慢、单位成本低。
3)高速缓冲存储器。简称Cache,位于主存和CPU之间,用来存放当前CPU经常使用的指令和数据,以便CPU能高速地访问它们。Cache的存取速度可与CPU的速度相匹配,但存储容量小、价格高。现代计算机通常将它们制作在CPU中。
2.按存储介质分类
按存储介质,存储器可分为磁表面存储器(磁盘、磁带)、磁芯存储器、半导体存储器(MOS型存储器、双极型存储器)和光存储器(光盘)。
3.按存取方式分类
1)随机存储器(RAM)。存储器的任何一个存储单元都可以随机存取,而且存取时间与存储单元的物理位置无关。其优点是读/写方便、使用灵活,主要用作主存或高速缓冲存储器。RAM又分为静态RAM和动态RAM。
2)只读存储器(ROM)。存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变,即使断电,内容也不会丢失。因此,通常用它存放固定不变的程序、常数和汉字字库等。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。由ROM派生出的存储器也包含可反复重写的类型,ROM和RAM的存取方式均为随机存取。广义上的只读存储器已可通过电擦除等方式进行写入,其“只读”的概念没有保留,但仍保留了断电内容保留、随机读取特性,但其写入速度比读取速度慢得多。
3)串行访问存储器。对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)和直接存取存储器(如磁盘、光盘)。顺序存取存储器的内容只能按某种顺序存取,存取时间的长短与信息在存储体上的物理位置有关,其特点是存取速度慢。直接存取存储器既不像RAM那样随机地访问任何一个存储单元,又不像顺序存取存储器那样完全按顺序存取,而是介于两者之间。存取信息时通常先寻找整个存储器中的某个小区域(如磁盘上的磁道),再在小区域内顺序查找。
4.按信息的可保存性分类
断电后,存储信息即消失的存储器,称为易失性存储器,如RAM。断电后信息仍然保持的存储器,称为非易失性存储器,如ROM、磁表面存储器和光存储器。若某个存储单元所存储的信息被读出时,原存储信息被破坏,则称为破坏性读出;若读出时,被读单元原存储信息不被破坏,则称为非破坏性读出。具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。
3.1.2存储器的性能指标
存储器有三个主要性能指标,即存储容量、单位成本和存储速度。这三个指标相互制约,设计存储器系统所追求的目标就是大容量、低成本和高速度。
1)存储容量=存储字数×字长(如1M×8位)。单位换算:1B(Byte,字节)=8b(bit,位)。
存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量。
2)单位成本:位价=总成本/总容量。
3)存储速度:数据传输速率(每秒传送信息的位数)=数据的宽度/存取周期。
①存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
②存取周期(Tm):存取周期是指存储器进行一次完整的读/写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
③主存带宽(Bm):也称数据传输速率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。
存取时间不等于存取周期,通常存取周期大于存取时间。这是因为对任何一种存储器,在读/写操作之后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至可达Tm=2T,因为存储器中的信息读出后需要马上进行再生。存取时间与存取周期的关系如图3.1所示。
多级层次的存储系统
为了解决存储系统大容量、高速度和低成本这三个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,如图3.2所示。在图中由上至下,位价越来越低,速度越来越慢,容量越来越大,CPU访问的频度也越来越低。实际上,存储系统层次结构主要体现在Cache-主存层和主存-辅存层。在存储体系中,Cache、主存能与CPU直接交换信息,辅存则要通过主存与CPU交换信息;主存与CPU、Cache、辅存都能交换信息,如图3.3所示。
存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。当CPU要从存储器中存取数据时,先访问Cache,若不在Cache中,则访问主存,若不在主存中,则访问磁盘,此时,操作数从磁盘读出送到主存,然后从主存送到Cache。从CPU的角度看,Cache-主存层的速度接近于Cache,容量和位价却接近于主存。从主存-辅存层分析,其速度接近于主存,容量和位价却接近于辅存。这就解决了速度、容量、成本这三者之间的矛盾。
Cache-主存层主要解决CPU和主存速度不匹配的问题,主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的。主存-辅存层主要解决存储系统的容量问题,主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的。在主存-辅存层的不断发展中,逐渐形成了虚拟存储系统,在这个系统中程序员编程的地址范围与虚拟存储器的地址空间相对应,编程时可用的地址空间远大于主存空间。
注意:在Cache-主存层和主存-辅存层中,上一层中的内容都只是下一层中的内容的副本,也即Cache(或
主存)中的内容只是主存(或辅存)中的内容的一部分。
3.2主存储器
3.2.1SRAM芯片和DRAM芯片
半导体存储器分为随机存储器(RAM)和只读存储器(ROM)。RAM又分为静态随机存储器(SRAM)和动态随机存储器(DRAM),主存储器主要由DRAM实现,靠近处理器的那一层(Cache)则由SRAM实现,它们都是易失性存储器。ROM是非易失性存储器。
1.SRAM的工作原理
通常把存放一个二进制位的物理器件称为存储元,它是存储器的最基本的构件。地址码相同的多个存储元构成一个存储单元。若干存储单元的集合构成存储体。静态随机存储器(SRAM)的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,静态是指即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出)。SRAM的存取速度快,但集成度低,功耗较大,价格昂贵,一般用于高速缓冲存储器。
2.DRAM的工作原理
与SRAM的存储原理不同,动态随机存储器(DRAM)是利用存储元电路中栅极电容上的电荷来存储信息的,DRAM的基本存储元通常只使用一个晶体管,所以它比SRAM的密度要高很多。相对于SRAM来说,DRAM具有集成度高、位价低和功耗小等优点,但DRAM的存取速度比SRAM慢,且必须定时刷新和读后再生,一般用于大容量的主存系统。
●需要刷新的存储芯片:SDRAM
DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失。此外,读操作会使其状态发生改变(破坏性读出),需读后再生,这也是称其为动态存储器的原因。刷新可以采用读出的方法进行,根据读出内容对相应单元进行重写,即读后再生。对同一行进行相邻两次刷新的时间间隔称为刷新周期,通常取2ms。常用的刷新方式有以下3种:
1)集中刷新:在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行进行逐一再生,在此期间停止对存储器的读/写操作,称为死时间,也称访存死区。优点是读/写操作期间不受刷新操作的影响;缺点是在集中刷新期间(死区)不能访问存储器。
2)分散刷新:将一个存储器系统的工作周期分为两部分:前半部分用于正常的读/写操作;后半部分用于刷新。这种刷新方式增加了系统的存取周期,如存储芯片的存取周期为0.5μs,则系统的存取周期为lμs。优点是没有死区;缺点是加长了系统的存取周期。
3)异步刷新:结合了前两种方法,使得在一个刷新周期内每一行仅刷新一次。具体做法是将刷新周期除以行数,得到相邻两行之间刷新的时间间隔t,每隔时间t产生一次刷新请求。这样就使“死时间”的分布更加分散,避免让CPU连续等待过长的时间。
DRAM的刷新需要注意以下问题:①刷新对CPU是透明的,即刷新不依赖于外部的访问;②DRAM的刷新单位是行,由芯片内部自行生成行地址;③刷新操作类似于读操作,但又有所不同。另外,刷新时不需要选片,即整个存储器中的所有芯片同时被刷新。
●DRAM芯片的地址引脚复用技术
DRAM芯片容量较大,地址位数较多,为了减少芯片的地址引脚数,通常采用地址引脚复用技术,行地址和列地址通过相同的引脚分先后两次输入,这样地址引脚数可减少一半。
3.SRAM和DRAM的比较
4.存储器芯片的内部结构
如图3.5所示,存储器芯片由存储体、I/O写电路、地址译码器和控制电路等部分组成。
1)存储体(存储矩阵)。存储体是存储单元的集合,它由行选择线(X)和列选择线(Y)来选择所访问单元,存储体的相同行、列上的多位(位平面数)同时被读出或写入。
2)地址译码器。用来将地址转换为译码输出线上的高电平,以便驱动相应的读/写电路。地址译码有单译码法(一维译码)和双译码法(二维译码)两种方式。
●单译码法。只有一个行译码器,同一行中所有存储单元的字线连在一起,同一行中的各单元构成一个字,被同时读出或写入。缺点是地址译码器的输出线数过多。
●双译码法。如图3.5所示,地址译码器分为X和Y两个译码器,在选中的行和列交叉
点上能确定一个存储单元,这是DRAM芯片目前普遍采用的译码结构。
3)I/O电路。用以控制被选中的单元的读出或写入,具有放大信号的作用。
4)片选控制线。单个芯片容量太小,往往满足不了计算机对存储器容量的要求,因此需用一定数量的芯片进行存储器的扩展。在访问某个字时,必须“选中”该存储字所在的芯片,而其他芯片不被“选中”,因此需要有片选控制信号(经片选控制线传输)。
5)读/写控制线。根据CPU给出的读命令或写命令,经读/写控制线控制被选中单元进行读或写。
3.2.2只读存储器
1.只读存储器(ROM)的特点
ROM和RAM都是支持随机访问的存储器,其中SRAM和DRAM均为易失性半导体存储器。而ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失。ROM具有两个显著的优点:
①结构简单,所以位密度比可读/写存储器的高。②具有非易失性,所以可靠性高。
2.ROM的类型
根据制造工艺的不同,ROM可分为掩模式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、Flash存储器和固态硬盘(SSD)。
(1)掩模式只读存储器
MROM的内容由半导体制造厂商按用户提出的要求在芯片的生产过程中直接写入,写入以后任何人都无法改变其内容。优点是可靠性高、集成度高、价格便宜;缺点是灵活性差。
(2)一次可编程只读存储器
PROM是可以实现一次性编程的只读存储器,允许用户利用专门的设备(编程器)写入自己的程序,一旦写入,内容就无法改变。
(3)可擦除可编程只读存储器
EPROM不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次改写。EPROM虽然既可读又可写,但它不能取代RAM,因为EPROM的编程次数有限,且写入时间过长。
(4)Flash存储器
Flash存储器是在EPROM的基础上发展起来的,它兼有ROM和RAM的优点,可在不加电的情况下长期保存信息,又能在线进行快速擦除与重写。Flash存储器既有EPROM价格便宜、集成度高的优点,又有E²PROM电可擦除重写的特点,且擦除重写的速度快。
(5)固态硬盘(SolidStateDrive,SSD)
基于闪存的固态硬盘是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(Flash芯片)组成。保留了Flash存储器长期保存信息、快速擦除与重写的特性。对比传统硬盘也具有读/写速度快、低功耗的特性,缺点是价格较高。
3.2.3主存储器的基本组成
图3.6是主存储器(MainMemory,MM)的基本框图,其中由一个个存储0或1的记忆单元(也称存储元件、存储单元)构成的存储矩阵(也称存储体、存储阵列)是存储器的核心部件。存储元件是具有两种稳态的能表示二进制0和1的物理器件。为了存取存储体中的信息,必须对存储单元编号(也称编址)。编址单位是指具有相同地址的那些存储元件构成的一个单位,可以按字节编址,也可以按字编址。现代计算机通常采用字节编址方式,此时存储体内的一个地址中有1字节。
指令执行过程中需要访问主存时,CPU首先把被访问单元的地址送到MAR中,然后通过地址线将主存地址送到主存中的地址寄存器,以便地址译码器进行译码,选中相应单元,同时CPU将读/写控制信号通过控制线送到主存的读/写控制电路。若是写操作,则CPU同时将要写的信息送到MDR中,在读/写控制电路的控制下,经数据线将信号写入选中的单元;若是读操作,则主存读出选中单元的内容送至数据线,然后被送到MDR中。MDR的位数与数据线的位数相同,MAR的位数与地址线的位数相同。图3.6采用64位数据线,所以在按字节编址方式下,每次最多可以存取8个单元的内容。地址线的位数决定了主存地址空间的最大可寻址范围。例如,36位地址的最大寻址范围为0~23⁶-1,即地址从0开始编号。
注意:数据线的位数通常等于存储字长,因此MDR的位数通常等于存储字长;若数据线的位数不等于存储字长,则MDR的位数由数据线的位数决定。
3.2.4多模块存储器
多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。常用的有单体多字存储器和多体低位交叉存储器。(注意:CPU的速度比存储器快得多,若同时从存储器中取出n条指令,就可以充分利用CPU资源,提高运行速度。多体交叉存储器就是基于这种思想提出的。)
1.单体多字存储器
在单体多字系统中,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字。在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔1/m存取周期,CPU向主存取一条指令。这显然提高了单体存储器的工作速度。
缺点:只有指令和数据在主存中连续存放时,这种方法才能有效提升存取速度。一旦遇到转移指令,或操作数不能连续存放时,这种方法的提升效果就不明显。
2.多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读/写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。多体并行存储器分为高位交叉编址和低位交叉编址两种。
(1)高位交叉编址(顺序方式)
高位地址表示模块号(或体号),低位地址为模块内地址(或体内地址)。如图3.7所示,存储器共有4个模块M₀~M₃,每个模块有n个单