学习目标:重点学习主存储器的分类、工作原理、组成方式以及与其他部件(如CPU)的联系。以及高速缓冲存储器、磁表面存储器等的基本组成和工作原理。建立起如何用不同的存储器组成具有层次结构的存储系统的概念。
存储器是计算机系统中的记忆设备,用来存放程序和数据。随着计算机发展,存储器在系统中的地位越来越重要。
1.按存储介质分类
存储介质是指能寄存“0”、“1”两种代码并能区别两种状态的物质或元器件。存储介质主要有半导体器件、磁性材料和光盘等。
2.按存取方式分类
按存取方式可把存储器分为随机存储器、只读存储器、顺序存取存储器和直接存取存储器。
3.按在计算机中的作用分类
按在计算机系统中的作用不同,存储器主要分为主存储器、辅助存储器、缓冲存储器。
存储器有3个主要性能指标:速度、容量和每位价格(简称位价)。
存储系统层次结构主要体现在缓存一主存和主存-辅存这两个存储层次上
缓存—主存层次 主要解决CPU和主存速度不匹配的问题。由于缓存的速度比主存的速度高,只要将CPU近期要用的信息调人缓存,CPU便可以直接从缓存中获取信息,从而提高访存速度。主存和缓存之间的数据调动是由硬件自动完成的。
主存—辅存层次 主要解决存储系统的容量问题。辅存的速度比主存的速度低,而且不能和CPU直接交换信息,但它的容量比主存大得多,可以存放大量暂时未用到的信息。当CPU需要用到这些信息时,再将辅存的内容调人主存,供CPU直接访问。主存和辅存之间的数据调动是由硬件和操作系统共同完成的。
存储器的层次结构解决了速度、容量、成本这三者的矛盾。
主存储器一般采用半导体存储器,与辅助存储器相比有容量小、读写速度快、价格高等特点。计算机中的主存储器主要由存储体、控制线路、地址寄存器、数据寄存器和地址译码电路五部分组成。从70年代起,主存储器已逐步采用大规模集成电路构成。用得最普遍的也是最经济的动态随机存储器芯片(DRAM)。
存储器地址寄存器(MAR)和存储器数据寄存器(MDR)是主存和CPU之间的接口。MAR可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址,以确定要访问的单元。MDR是向主存写入数据或从主存读出数据的缓冲部件。
读入时,根据MAR中的地址访问某个存储单元时,经过地址译码、驱动等电路,找到所需访问的单元。读出时,需经过读出放大器,将被选中单元的存储字送到MDR。写入时,MDR中的数据经过写入电路写入到被选中的单元中。
现代计算机的主存都由半导体集成电路构成,图中的驱动器、译码器和读写电路均制作在存储芯片中,而MAR和MDR制作在CPU芯片内。存储芯片和CPU芯片可通过总线连接,如图
CPU对主存的基本操作:CPU对主存进行读写操作时,首先CPU在地址总线上给出地址信号,然后发出相应的读写命令,并在数据总线上交换信息。
主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出或写人一个存储字。
吐血整理!这篇带你彻底理解主存中存储单元地址的分配
字长、字节、字、字位的区别
主存的主要技术指标是存储容量和存储速度。
(1)存储容量
存储容量是指主存能存放二进制代码的总位数,即 存储容量 = 存储单元个数 x 存储字长
也可用字节总数来表示,即 存储容量 = 存储单元个数 x 存储字长 / 8
目前的计算机存储容量大多以字节数来表示,例如,某机主存的存储容量为256 MB,则按字节寻址的地址线位数应对应28位。
(2)存储速度
存储速度是由存取时间和存取周期来表示的。存取时间又称为存储器的访问时间(MemoryAccessTime),是指启动–次存储器操作(读或写)到完成该操作所需的全部时间。存取时间分读出时间和写人时间两种。读出时间是从存储器接收到有效地址开始,到产生有效输出所需的全部时间。写人时间是从存储器接收到有效地址开始,到数据写人被选中单元为止所需的全部时间。
存取周期(MemoryCycleTime)是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间,通常存取周期大于存取时间。现代MQS型存储器的存取周期可达100ns;双极型TTL存储器的存取周期接近于10ns。
(3)存储器带宽
与存取周期密切相关的指标为存储器带宽,它表示单位时间内存储器存取的信息量,单位可用字/秒或字节/秒或位/秒表示。如存取周期为500 ns ,每个存取周期可访问16位,则它的带宽为32M位/秒。带宽是衡量数据传输率的重要技术指标。存储器的带宽决定了以存储器为中心的机器获得信息的传输速度,它是改善机器瓶颈的一个关键因素。
1.半导体存储芯片的基本结构
半导体存储芯片采用超大规模集成电路制造工艺,在一个芯片内集成具有记忆功能的存储矩阵、译码驱动电路和读/写电路等
译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读/写电路的配合下完成对被选中单元的读/写操作。
读/写电路包括读出放大器和写人电路,用来完成读/写操作。
存储芯片通过地址总线、数据总线和控制总线与外部连接。
地址线是单向输入的,其位数与芯片容量有关。数据线是双向的(有的芯片可用成对出现的数据线分别作为输人或输出),其位数与芯片可读出或写人的数据位数有关。数据线的位数与芯片容量有关。
地址线和数据线的位数共同反映存储芯片的容量。地址线一次确定一个存储单元,地址线上值可能取的所有组合确定了存储单元的个数。所以,存储单元的个数=2^地址线的条数 。例如,地址线为10根,数据线为4根,则芯片容量为2’°x4=4K位; 又如地址线为14根,数据线为1根,则其容量为16K位。
(大写K表示千的意思,大写B则表示字节,所以KB表示为信息单位千字节, 4K表示4千个寻址范围;而4KB则表示的就是4千字节)
(位表示的是一个存储单元中能放几位二进制数)
控制线主要有读/写控制线与片选线两种。不同存储芯片的读/写控制线和片选线可以不同。
读/写控制线决定芯片进行读/写操作,片选线用来选择存储芯片。由于半导体存储器是由许多芯片组成的,为此需用片选信号来确定哪个芯片被选.中。
2.半导体存储芯片的译码驱动方式
半导体存储芯片的译码驱动方式有两种:线选法和重合法,一个16x1字节线选法存储芯片的结构示意图。它的特点是用一根字选择线(字线) ,直接选中一个存储单元的各位(如一个字节)。这种方式结构较简单,但只适于容量不大的存储芯片。
当地址线为全0时,译码输出X。和Y。有效,矩阵中第0行、第0列共同选中的那位即被选中。由于被选单元是由X、Y两个方向的地址决定的,故称为重合法。当欲构成1 Kx1字节的存储器时,只需用8片如图所示的芯片即可。
1.存储容量的扩展
由于单片存储芯片的容量总是有限的,很难满足实际的需要,因此,必须将若干存储芯片连在一起才能组成足够容量的存储器,称为存储容量的扩展,通常有位扩展和字扩展。
(1)位扩展
位扩展是指增加存储字长,例如,2片1K.x4位的芯片可组成1Kx8位的存储器,如图
(2)字扩展是指增加存储器字的数量。例如,用2片1 Kx8位的存储芯片可组成一个2K x 8位的存储器,即存储字增加了一倍,如图
(3)字、位扩展
字、位扩展是指既增加存储字的数量,又增加存储字长。
2.存储器与CPU的连接
存储芯片与CPU芯片相连时,特别要注意片与片之间的地址线、数据线和控制线的连接。
(1)地址线的连接
存储芯片的容量不同,其地址线数也不同,CPU的地址线数往往比存储芯片的地址线数多。通常总是将CPU地址线的低位与存储芯片的地址线相连。CPU地址线的高位或在存储芯片扩充时用,或做其他用途,如片选信号等。
(2)数据线的连接
同样,CPU的数据线数与存储芯片的数据线数也不一定相等。此时,必须对存储芯片扩位,使其数据位数与CPU的数据线数相等。
(3)读/写命令线的连接
CPU读/写命令线–般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。有些CPU的读/写命令线是分开的,此时CPU的读命令线应与存储芯片的允许读控制端相连,而CPU的写命令线则应与存储芯片的允许写控制端相连。
(4)片选线的连接.
片选线的连接是CPU与存储芯片正确工作的关键。存储器由许多存储芯片组成,哪一片被选中完全取决于该存储芯片的片选控制端CS是否能接收到来自CPU的片选有效信号。片选有效信号与CPU的访存控制信号MREQ (低电平有效)有关,因为只有当CPU要求访存时,才需选择存储芯片。
(5)合理选择存储芯片
合理选择存储芯片主要是指存储芯片类型(RAM或ROM)和数量的选择。通常选用ROM存放系统程序、标准子程序和各类常数等。RAM则是为用户编程而设置的。此外,在考虑芯片数量时,要尽量使连线简单方便。
在计算机运行过程中,由于种种原因致使数据在存储过程中可能出现差错。为了能及时发现错误并及时纠正错误,通常可将原数据配成汉明编码。
1.汉明码的组成
汉明码是由RichardHanming于1950年提出的,它具有一位纠错能力。
2.汉明码的纠错过程
汉明码的纠错过程实际上是对传送后的汉明码形成新的检测位P(i=1,2,4,8,…) ,根据P的状态,便可直接指出错误的位置。P的状态是由原检测位C;及其所在小组内“1”的个数确定的。倘若按配偶原则配置的汉明码,其传送后形成新的检测位P;应为0,否则说明传送有错,并且还可直接指出出错的位置。
例:
汉明码常常被用在纠错一位的场合,若欲实现检错两位,实用时还得再增添.一位检测位。
在多体并行存储系统中,由于I/0设备向主存请求的级别高于CPU访存,这就出现了CPU等待I/0设备访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周期,从而降低了CPU的工作效率。为了避免CPU与I/0设备争抢访存,可在CPU与主存之间加一级缓存,这样,主存可将CPU要取的信息提前送至缓存,一且主存在与I/0设备交换时,CPU可直接从缓存中读取所需信息,不必空等而影响效率。从另一角度来看,主存速度的提高始终跟不上CPU的发展。这也希望由高速缓存Cache来解决主存与CPU速度的不匹配问题。Cache的出现使CPU可以不直接访问主存,而与高速Cache交换信息。
通过大量典型程序的分析,发现CPU从主存取指令或取数据,在一定时间内,只是对主存局部地址区域的访问(局部性)。这是由于指令和数据在主存内都是连续存放的,并且有些指令和数据往往原理。根据这一原理,很容易设想,只要将CPU近期要用到的程序和数据提前从主存送到Cache,那么就可以做到CPU在一定时间内只访问Cache。一般Cache采用高速的SRAM制作,其价格比主存贵,但因其容量远小于主存,因此能很好地解决速度和成本的矛盾。
任何时刻都有一- 些主存块处在缓存块中。CPU欲读取主存某字时,有两种可能:一种是所需要的字已在缓存中,即可直接访问Cache(CPU与Cache之间通常一次传送一 个字);另 .一种是所需的字不在Cache内,此时需将该字所在的主存整个字块一次调人Cache中(Cache与主存之间是字块传送)。如果主存块已调人缓存块,则称该主存块与缓存块建立了对应关系。
Cache的容量与块长是影响Cache效率的重要因素,通常用“命中率”来衡量Cache的效率。命中率是指CPU要访问的信息已在Cache内的比率。
一般而言,Cache容量越大,其CPU的命中率就越高。当然容量也没必要太大,太大会增加成本,而且当Cache容量达到-定值时,命中率已不因容量的增大而有明显的提高。块长与命中率之间的关系更为复杂,它取决于各程序的局部特性。
由主存地址映射到Cache地址称为地址映射。地址映射方式很多,有直接映射(固定的映射关系)、全相联映射(灵活性大的映射关系)、组相联映射(.上述两种映射的折中)。
1.直接映射
这种方式的优点是实现简单,只需利用主存地址的某些位直接判断,即可确定所需字块是否在缓存中。直接映射方式的缺点是不够灵活,因每个主存块只能固定地对应某个缓存块,
2.全相联映射
全相联映射允许主存中每一字块映射到Cache中的任何一块位置上,如图4.55所示。这种映射方式可以从已被占满的Cache中替换出任一旧字块。显然,这种方式灵活,命中率也更高。但这种方式所需的逻辑电路甚多,成本较高。
3.组相联映射
组相联映射是对直接映射和全相联映射的一种折中。
当新的主存块需要调人Cache并且它的可用空间位置又被占满时,需要替换掉Cache的数据,这就产生了替换策略(算法)问题。在直接映射的Cache中,由于某个主存块只与一个Cache字块有映射关系,因此替换策略很简单。而在组相联和全相联映射的Cache中,主存块可以写人Cache中若干位置,这就有一个选择替换掉哪-一个Cache字块的问题,即所谓替换算法问题。理想的替换方法是把未来很少用到的或者很欠才用到的数据块替换出来,但实际上很难做到。常用的替换算法有先进先出算法、近期最少使用算法和随机法。
1.辅助存储器的特点
辅助存储器作为主存的后援设备又称为外部存储器,简称外存,与主存相比,辅存具有容量大、速度慢、价格低、可脱机保存信息等特点,属“非易失性”存储器。而主存具有速度快、成本高、容量小等特点,而且大多由半导体芯片构成,所存信息无法永久保存,属“易失性”存储器。目前,广泛用于计算机系统的辅助存储器有硬磁盘软磁盘、磁带光盘等。前三种均属磁表面存储器。
2.磁表面存储器的主要技术指标
(1)记录密度
记录密度通常是指单位长度内所存储的二进制信息量。
(2)存储容量
存储容量是指外存所能存储的二进制信息总数量, - -般以位或字节为单位。
(3)平均寻址时间;
(4)数据传输率
数据传输率D,是指单位时间内磁表面存储器向主机传送数据的位数或字节数
(5)误码率
误码率是衡量磁表面存储器出错概率的参数,它等于从辅存读出时,出错信息位数和读出信息的总位数之比。为了臧少出错率,磁表面存储器通常采用循环冗余码来发现并纠正错误。
3.各类辅助存储器工作原理