2.2.3 存储器
1.存储器的基本概念
存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
2.存储器的单元和地址
构成存储器的存储介质——存储元,可存储一个二进制代码。由若干个存储元组成一个存储单元,然后再由许多存储单元组成一个存储器。一个存储器包含许多存储单元,每个存储单元可存放一个字节(按字节编址)。每个存储单元的位置都有一个编号,即地址,一般用十六进制表示。一个存储器中所有存储单元可存放数据的总和称为它的存储容量。假设一个存储器的地址码由20位二进制数(即5位十六进制数)组成,则可表示220(即1M)个存储单元地址。每个存储单元存放一字节,则该存储器的存储容量为1MB。
(1)存储单元
存储单元一般应具有存储数据和读/写数据的功能,一般以8位二进制作为一个存储单元,也就是1字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。
(2)存储器地址
无论CPU数据处理的长度是多少,在存储器系统中,存储单元都是以字节为单位进行存储组织的,即每个存储单元可存放一个字节。每个存储单元在存储器的位置都有唯一的编号,该编号称为存储单元的地址。存储单元的地址在计算机内部用二进制编码表示,在书写时可以用十六进制或十进制表示,如图2-4所示。
图2-4 主存储器的结构
CPU根据存储单元的编号对存储单元的内容即数据进行存取操作。要注意的是,存储单元的地址和地址中的内容两者是不一样的。前者是存储单元的编号,表示存储器总的一个位置,而后者表示这个位置中存放的数据。例如,同一个建筑物具有许多大小相同的房间,把这个建筑物比作存储器,每个房间就是一个存储单元,每个房间号就是存储单元的地址,房间里面存放的物品就是存储单元的内容。
(3)存储容量
存储容量是指存储器可以容纳的二进制信息量,用存储器中存储地址寄存器MAR的编址数与存储字位数的乘积表示。以32位机器为例,其存储器的内存地址由32位二进制数(0~232-1)组成,每个存储单元存放一字节,其总存储容量为4GB(232=4×230)。容量的常用单位有KB、MB、GB等。
3.存储器的结构和种类
计算机技术的发展使存储器的地位不断得到提升,计算机系统由最初的以运算器为核心逐渐转变成以存储器为核心。这就对存储器技术提出了更高的要求,不仅要求存储器具有更高的性能,而且能通过硬件、软件或软硬件结合的方式将不同类型的存储器组合在一起来获得更高的性价比,这就是存储器系统。
(1)存储器系统的层次结构
一个存储器的性能通常用速度、容量、价格3个主要指标来衡量。计算机对存储器的要求是容量大、速度快、成本低,需要尽可能地同时兼顾这3方面的要求。但是一般来讲,存储器速度越快,价格也越高,因而也越难满足大容量的要求。目前通常采用多级存储器体系结构,使用高速缓冲存储器、主存储器和外存储器,如图2-5所示。
CPU能直接访问的存储器称为内存储器(简称内存),包括高速缓冲存储器和主存储器。CPU不能直接访问的存储器称为外存储器(简称外存,又称辅助存储器),外存的信息必须调入内存才能被CPU使用。
高速缓冲存储器(Cache)是计算机系统中的一个高速、小容量的半导体存储器,它位于高速的CPU和低速的主存之间,用于匹配两者的速度,达到高速存取指令和数据的目的。和主存相比,Cache的存取速度快,但存储容量小。
主存储器,简称主存,是计算机系统的主要存储器,用来存放计算机正在执行的大量程序和数据,主要由MOS半导体存储器组成。
外存储器,简称外存,是计算机系统的大容量辅助存储器,用于存放系统中的程序、数据文件及数据库。与主存相比,外存的特点是存储容量大,成本低,但访问速度慢。目前,外存储器主要有磁盘存储器、磁带存储器和光盘存储器。
CPU不能像访问内存那样,直接访问外存,外存要与CPU或I/O设备进行数据传输,必须通过内存进行。这种结构形式,构成存储器系统的主存-辅存结构,如图2-6所示。
图2-5 存储器系统层次结构
图2-6 存储器系统的主存-辅存结构
由Cache和主存储器构成的Cache-主存系统,其主要目标是利用与CPU速度接近的Cache来高速存取指令和数据以提高存储器的整体速度,从CPU角度看,这个层次的速度接近Cache,而容量和单位价格则接近主存;由主存和外存构成的虚拟存储器系统,其主要目的是增加存储器的容量,从整体上看,其速度接近于主存的速度,其容量则接近于外存的容量。计算机存储系统的这种多层次结构,很好地解决了容量、速度、成本三者之间的矛盾。这些不同速度、不同容量、不同价格的存储器,用硬件、软件或软硬件结合的方式连接起来,形成一个系统。这个存储系统对应用程序而言是透明的,在应用程序看来它是一个存储器,其速度接近于最快的那个存储器,存储容量接近于容量最大的那个存储器,单位价格则接近最便宜的那个存储器。
(2)存储器的性能指标
存储器的性能指标较多,常用的指标主要有存储容量和存储周期。存储周期是对存储器进行一次读/写操作所需要的时间,一般使用毫秒(ms,1s=1000ms)、微秒(µs,1ms=1000µs)以及纳秒(ns,1µs=1000ns)作为单位。表2-1给出了各种存储器的主要性能参数。
表2-1 各种存储器的主要性能参数
(3)存储器的种类
存储器的类型很多,如图2-7所示,其主要原因是不同器件的存储器有着不同的特性和成本。目前使用的存储器主要有半导体存储器、磁介质存储器和光存储设备。
图2-7 存储器系统组成
4.主存储器
主存储器主要由半导体存储器组成,计算机使用内存运行程序,因此拥有大容量内存的计算机的执行速度快,执行效率高。半导体存储器有RAM和ROM两种类型。图2-8所示为典型的存储器芯片的外形。
图2-8 半导体存储器芯片
(1)RAM
RAM(Random Access Memory,随机存取存储器)是计算机主存储器系统中的主要组成部分。顾名思义,RAM数据的存取是随机发生的,用户或者程序可以随时对RAM写入数据,也可以随时从RAM读取数据。
RAM的特点是存取速度快,体积小。它的另一个特点是易失性,也就是说RAM存储的数据会由于系统断电而消失。RAM根据其保持数据的方式可以分为动态RAM(Dynamic RAM,DRAM)和静态RAM(Static RAM,SRAM)两种类型。DRAM中的存储单元类似于一个电容,要保持数据必须定时给电容充电,这个过程称为“刷新”。SRAM的存储单元是一个具有自身维持信号不变的电路。相对于SRAM,DRAM的存取速度较慢,但价格要便宜些。
(2)ROM
ROM(Read Only Memory,只读存储器)中的数据只能被读出,而不能被写入。ROM芯片是为了存放只需要读取的数据和程序而设计的,数据和程序是在使用之前被写入的。它的特点是一旦数据被写入,即使断电也不会丢失。ROM在计算机中一个重要的应用是存放启动计算机所需要的BIOS(Basic Input and Output System,基本输入/输出系统)程序。因为计算机每次开机都执行相同的操作,所以BIOS程序是固定不变的,它被“固化”在ROM中。计算机每次开机加电时,首先执行的就是BIOS程序。
根据对芯片写入数据的方式不同,ROM有以下几种类型:
①PROM:可编程只读存储器(Programming ROM)。这是一次性地写入存储器芯片,用户或制造商通过专门编程设备把数据存储到芯片中。
②EPROM:可擦除的可编程只读存储器(Erasable PROM)。如果数据需要被改写,需要用一种紫外光设备将原数据擦除后再重新写数据。
③EEPROM:电可擦除的可编程只读存储器,它是通过施加特殊的电信号擦除原来的数据,可以对部分单元进行重新写入。
④Flash Memory:闪存,是EEPROM的一个特殊类型。它使用擦除数据块的方式,而不是对单个单元进行擦除,擦除速度快,适合于需要存放大量数据的应用,如固态硬盘、移动存储器。它也被广泛用于数码产品中,如数码照相机的图像存储器。
5.外存
外存储器是指除计算机内存及CPU缓存以外的存储器,此类存储器一般断电后仍然能保存数据。常见的外存储器有硬盘、软盘、光盘、U盘等。外存储器单位价格低、容量大,但速度慢,断电后数据不会丢失。
6.虚拟存储器
虚拟存储器是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。有Windows PE、Windows 7等。