第四章存储器第一节概述存储器是计算机系统中的记忆设备,用来存放程序和数据。随着计算机的发展,存储器在系统中的地位越来越重要。由于超大规模集成电路的制作技术,使CPU的速率变得惊人的高,而存储器的存数和取数的速度与它很难适配,这使计算机系统的运行速度在很大程度上受到存储器速度的制约。此外,由于I/O设备的不断增多,如果它们与存储器打交道都通过CPU来实现,会降低CPU的工作效率。为此,出现了I/O与存储器的直接存取方式(DMA),这也使存储器的地位更为突出。尤其在多处理机的系统中,各处理机本身都需与其主存交换信息,而且各处理机在互相通信中,也都需共享存放在存储器中的数据。因此,存储器的地位更为重要。从某种意义上讲,存储器的性能已成为计算机系统的核心。一、存储器的分类1.按存储介质分(1)半导体存储器。存储元件由半导体器件组成的叫半导体存储器。其优点是体积小、功耗低、存取时间短。其缺点是当电源消失时,所存信息也随即丢失,是一种易失性存储器。半导体存储器又可按其材料的不同,分为双极型(TTL)半导体存储器和MOS半导体存储器两种。前者具有高速的特点,而后者具有高集成度的特点,并且制造简单、成本低廉,功耗小、故MOS半导体存储器被广泛应用。(2)磁表面存储器。磁表面存储器是在金属或塑料基体的表面上涂一层磁性材料作为记录介质,工作时磁层随载磁体高速运转,用磁头在磁层上进行读写操作,故称为磁表面存储器。按载磁体形状的不同,可分为磁盘、磁带和磁鼓。现代计算机已很少采用磁鼓。由于用具有矩形磁滞回线特性的材料作磁表面物质,它们按其剩磁状态的不同而区分“0”或“1”,而且剩磁状态不会轻易丢失,故这类存储器具有非易失性的特点。(3)光盘存储器。光盘存储器是应用激光在记录介质(磁光材料)上进行读写的存储器,具有非易失性的特点。光盘记录密度高、耐用性好、可靠性高和可互换性强等。2.按存取方式分类按存取方式可把存储器分为随机存储器、只读存储器、顺序存储器和直接存取存储器四类。(1)随机存储器RAM(RandomAccessMemory)。RAM是一种可读写存储器,其特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。计算机系统中的主存都采用这种随机存储器。由于存储信息原理的不同,RAM又分为静态RAM(以触发器原理寄存信息)和动态RAM(以电容充放电原理寄存信息)。(2)只读存储器ROM(ReadonlyMemory)。只读存储器是能对其存储的内容读出,而不能对其重新写入的存储器。这种存储器一旦存入了原始信息后,在程序执行过程中,只能将内部信息读出,而不能随意重新写入新的信息去改变原始信息。因此,通常用它存放固定不变的程序、常数以及汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。只读存储器分为掩膜型只读存储器MROM(MaskedROM)、可编程只读存储器PROM(ProgrammableROM)、可擦除可编程只读存储器EPROM(ErasableProgrammableROM)、用电可擦除可编程的只读存储器EEPROM(ElectricallyErasableProgrammableROM)。以及近年来出现了的快擦型存储器FlashMemory,它具有EEPROM的特点,而速度比EEPROM快得多。(3)串行访问存储器。如果对存储单元进行读写操作时,需按其物理位置的先后顺序寻找地址,则这种存储器叫做串行访问存储器。显然这种存储器由于信息所在位置不同,使得读写时间均不相同。如磁带存储器,不论信息处在哪个位置,读写时必须从其介质的始端开始按顺序寻找,故这类串行访问的存储器又叫顺序存取存储器。还有一种属于部分串行访问的存储器,如磁盘。在对磁盘读写时,首先直接指出该存储器中的某个小区域(磁道),然后再顺序寻访,直至找到位置。故其前段是直接访问,后段是串行访问,也称其为半顺序存取存储器。3.按在计算机中的作用分类按在计算机系统中的作用不同,存储器又可分为主存储器、辅助存储器、缓冲存储器。主存储器的主要特点是它可以和CPU直接交换信息。辅助存储器是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,它不能与CPU直接交换信息。两者相比主存速度快、容量小、每位价格高;辅存速度慢、容量大、每位价格低。缓冲存储器用在两个速度不同的部件之中,如CPU与主存之间可设置一个快速缓冲存储器,起到缓冲作用。二、存储器的层次结构存储器有三个主要特性:速率、容量和价格/位(简称位价)。一般说来,速度越高,位价就越高;容量越大,位价就越低;而且容量越大,速度必越低。可以用一个形象的存储器分层结构图,来反映上述的问题,如下图所示。图中由上至下,每位的价格越来越低,速度越来越慢,容量越来越大,CPU访问的频度也越来越少。最上层的寄存器通常制作在CPU芯片内。寄存器中的数直接在CPU内部参与运算,寄存器的速度最快、位价最高、容量最小。主存用来存放要参与运行的程序和数据,其速度与CPU速度差距较大,为了使它们之间速度更好匹配,在主存与CPU之间,插入了一种比主存速度更快、容量更小的高速缓冲存储器Cache,其位价要高于主存。主存与缓存之间的数据调动是由硬件自动完成的,对程序员是透明的。以上三层存储器都是由速度不同、位价不等的半导体存储材料制成,它们都设在主机内。第四层是辅助存储器,其容量比主存大得多,大都用来存放暂时末用到的程序和数据文件。CPU不能直接访问辅存,辅存只能与主存交换信息,因此辅存的速度可以比主存慢得多。辅存与主存之间信息的调动均由硬件和操作系统来实现。辅存的位价是最低廉的。实际上,存储器的层次结构主要体现在缓存—主存、主存—辅存这两个存储层次上,如下图所示。从CPU角度来看,缓存—主存这一层次的速度接近于缓存,高于主存;其容量和位价却接近于主存。这就从速度和成本的矛盾中获得了理想的解决办法。主存—辅存这一层次,从整体分析,其速度接近于主存,容量接近于辅存,平均位价也接近于低速、廉价的辅存位价,这又解决了速度、容量、成本这三者矛盾。现代计算机系统几乎都具有这两个存储层次,构成了缓存、主存、辅存三级存储系统。在主存—辅存这一层次的不断发展中,形成了虚拟存储系统。在这个系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应。例如,机器指令地址码为24位,则虚拟存储器的存储单元可达16Mb。可是这个数与主存的实际存储单元个数相比要大得多,称这类指令地址码叫虚地址(虚存地址、虚拟地址)或叫逻辑地址,而把主存的实际地址称作物理地址或实地址。物理地址是程序在执行过程中能够真正访问的地址,也是真实存在于主存的存储地址。对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远远大于主存空间,使程序员以为自己占有一个容量极大的主存,其实这个主存并不存在,这就是我们将其称之为虚拟存储器的原因。对虚拟存储器而言,其逻辑地址变换为物理地址的工作,是由计算机系统的硬设备和操作系统自动完成的,对程序员是透明的。当虚地址的内容在主存时,机器便可立即使用;若虚地址的内容不在主存,则必须先将此虚地址的内容传递到主存的合适单元后再为机器所用。第二节主存储器一、概述主存的实际结构如上图所示,当根据MAR中的地址访问某个存储单元时,需经过地址译码、驱动等电路,才能找到所需访问的单元。读出时,需经过读出放大器,才能将被选中单元的存储字送到MDR。写入时,MDR中的数据也必须经过写入电路才能真正写入到被选中的单元中。现代计算机的主存都由半导体集成电路构成,图中的驱动器、译码器和读写电路均制作在存储芯片中,而MAR和MDR制作在CPU芯片内。存储芯片和CPU芯片可通过总线连接,如下图所示。当要从存储器读出某一信息字时,首先由CPU将该字的地址送到MAR,经地址总线送至主存,然后发读命令。主存接到读命令后,得知需将该地址单元的内容读出,便完成读操作,将该单元的内容读至数据总线上,至于该信息由MDR送至什么地方,远已不是主存的任务,而是由CPU决定的。若要向主存存入—个信息字时,首先CPU将该字所在主存单元的地址经MAR送到地址总线,并将信息字送入MDR,然后向主存发写命令,主存按到写命令后,便将数据线上的信息写入到对应地址线指出的主存单元中。1.主存中存储单元地址的分配主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出一个存储字。不同的机器存储字长也不同,为了满足字符处理的需要,常用8位二进制数表示一个字节,因此存储字长都取8的倍数。通常计算机系统既可按字寻址,也可按字节寻址。例如IBM370机其字长为32位,它可按字节寻址,即它的每一个存储字包含4个可独立寻址的字节,其地址分配如下图(a)所示。字地址是用该字高位字节的地址来表示,故其字地址是4的整数倍,正好用地址码的末两位来区分同一字的4个字节的位置。但对PDP-11机而言,其字地址是2的整数倍,它用低位字节的地址来表示字地址,如下图(b)所示。如上图(a)所示,对24位地址线的主存而言,按字节寻址的范围是16MB,按字寻址的范围为4MB。如上图(b)所示,对24位地址线而言,按字节寻址的范围仍为16MB,但按字寻址的范围为8MB。2.主存的技术指标主存的主要技术指标是存储容量和存储速度。(1)存储容量。存储容量是指主存能存放二进制代码的总数,即:存储容量=存储单元个数×存储字长它的容量也可用字节总数来表示,即:存储容量=存储单元个数×存储字长/8(2)存储速度。存储速度是由存取时间和存取周期来表示的。存取时间又叫存储器的访问时间(MemoryAccessTime),它是指启动一次存储器操作(读或写)到完成该操作所需的全部时间。存取时间分读出时间和写入时间两种。读出时间是从存储器接收到有效地址开始,到产生有效输出所需的全部时间。写入时间是从存储器接收到有效地址开始,到数据写入被选中单元为止所需的全部时间。存取周期(MemoryCycleTime)是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间,通常存取周期大于存取时间。现代MOS型存储器的存取周期可达100ns;双极型TTL存储器的存取周期接近10ns。与存取周期密切相关的指标叫存储器的带宽,它表示每秒从存储器进出信息的最大数量,单位可用字/秒或字节/秒或位/秒表示。如存取周期为500ns,每个存取周期可访问16位,则它的带宽为32M位/秒。存储器的带宽决定了以存储器为中心的机器可以获得的信息传输速度,它是改善机器瓶颈的一个关键因素。为了提高存储器的带宽,可以采用以下措施:①缩短存取周期;②增加存储字长,使每个周期访问更多的二进制位;③增加存储体。二、半导体存储芯片简介1.半导体存储芯片的基本结构半导体存储芯片采用超大规模集成电路制造工艺制成,其内部结构如下图所示:译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读写电路的配合下完成对被选中单元的读写操作。读写电路包括读出放大器和写入电路,用来完成读写操作。存储芯片通过地址总线、数据总线和控制总线与外部连接。地址线是单向输入的,其位数与芯片容量有关。数据线是双向的(有的芯片可用成对出现的数据线分别作输入或输出),其位数与芯片可读出或写入的数据位数有关。地址线和数据线的位数共同反映存储芯片的容量。如地址线为10根,数据线为4根,则芯片容量为210×4B=4KB控制线主要有读/写控制线与片选线两种。读/写控制线决定芯片进行读/写操作,片选线用来选择存储芯片。由于存储器是由许多芯片组成,需用片选信号来确定哪个芯片被选中。2.半导体存储芯片的译码驱动方式半导体存储芯片的译码方式有两种:线选法和重合法(1)线选法(又称单译码方式)上图是一个16×1字节线选法存储芯片的结构示意图。它的特点是用一根字选择线(字线),直接选中一个存储单元的各位(如一个字节)。这种方式结构较简单,但只适于容量不大的存储芯片。如当地址线A3A2A1A0为1111时,则第15根字线被选中,对应上图中的最