第3章存储器
本章系统地介绍计算机中存储系统的基本知识,要求学生掌握计算机中存储层次的组织和半导体存储器的工作原理。
重点提示:
●存储层次
●随机读写存储器
●只读存储器和闪速存储器
●高速存储器
●cache存储器
●虚拟存储器
●存储保护
3-1 重点难点指导
3-1-1存储器概述
字地址:存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址。
字节地址:存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址。
如果计算机中可编址的最小单位是字存储单元,则该计算机称为按字寻址的计算机。如果计算机中可编址的最小单位是字节,则该计算机称为按字节寻址的计算机。
存储器的特性:
●存储容量:在一个存储器中可以容纳的存储单元总数通常称为该存储器的存储容
量。
●存取时间:存取时间t a又称存储器访问时间。
●存储周期:存储周期t c是指连续启动两次读操作所需间隔的最小时间。
●传输率:传输率是指数据传入或传出存储单位的速率。
●带宽:单位时间内存储器可读写的字节数(或二进制的位数)称为存储器的带宽。
●价格:价格是存储器的一个经济指标,一般用每位价格来表示。
存储器的分类方法:
●按存取方式分:顺序存取、直接存取、随机存取、相联存取;
●按存储介质分:半导体存储器、磁表面存储器、光存储器;
●按读写功能分:ROM、RAM;
●按信息的可保存性分:非永久记忆存储器、永久记忆存储器;
●按在计算机系统中的作用分:主存储器、辅助存储器、Cache等。
存储器是计算机的核心部件之一。其性能直接关系到整个计算机系统性能的高低,如何以合理的价格,设计出容量和速度满足计算机系统要求的存储器系统是我们关心的问题。
在存储系统,存在如下关系:
● 存取时间越短,每位的价格就越高。
● 容量越大,每位的价格就越低。
● 容量越大,存取时间就越长。
但计算机系统中的存储器不仅需要大容量,而且需要低的每位价格,因此希望采用提
供大容量存储器的技术,但为了满足性能要求,设计者又必须使用昂贵、容量较低和存取时间快的存储器。解决这个难题的方法是采用存储器层次结构(Memory Hierarchy ),而不只是依赖单一的存储部件或技术。
图3-1-1 存储器的层次结构 在通用的存储层次中,如图3-1-1所示,从上到下有如下关系:
● 每位价格降低
● 容量增大
● 存取时间增大
● 处理器访问存储器的频度降低
在微机系统中,存储器的层次结构主要是缓存—主存和主存—辅存这两个存储层次。
3-1-2半导体随机存储器
存储器的构成单元是存储位元,用于保存一位二进制的信息,这是现代计算机采用二进
制的重要原因。但存储位元只要具备了以下3个条件就可以作为存储位元。存储位元的性质:
● 呈现两种稳态(或半稳定),分别代表二进制的1和0
● 能够写入(至少一次)来设置状态
● 能够读出状态。
常用的半导体存储位元:
● 双极型半导体TTL (Transistor-Transistor Logic ):速度高,驱动能力强,但集成度
低,功耗大,价格高,多用于小容量高速存储器;
● 金属氧化物场效应晶体管MOS (Metal Oxide Semiconductor ):集成度高,功耗小,
工艺简单,成本低,但速度较低,主要用于大容量存储器。
在计算机中MOS 器件组成的存储器是最为常用的。
计算机中使用的半导体存储器主要有两类:半导体RAM (Random Access Memory )和
半导体ROM (Read Only Memory ),RAM 具有易失性,而ROM 是非易失性的。
RAM 分为:
● 静态RAM (Static RAM ):速度快,集成度低,容量小,使用方便;
●动态RAM(Dynamic RAM):速度比SRAM慢,容量大,需要定时刷新操作。
静态随机存储器SRAM(Static Random Access Memory)是一种快速存储器,所谓“静态”的含义是这种存储器不需要刷新操作。但SRAM造价较高,通常用作高速缓冲存储器(Cache)。动态随机存储器DRAM(Dynamic Random Access Memory)是目前在个人计算机中使用最多的存储器形式。“动态”的含义是指这种存储器必须定时的进行刷新操作,否则,其存储的数据就会丢失。
存储器芯片中,存储位元的组织形式:
●一维地址译码方式(单译码方式)
●二维地址译码的位选方式
●二维地址译码的字选方式
常用的形式为二维地址译码的字选方式。
采用地址线的复用和方阵型行列结构,每增加一个专用的地址引脚,便使得行地址和列地址的指示范围加倍,因此存储器芯片的容量以4的倍数增长。
由于DRAM存储单元被访问是随机的,有可能某些存储单元长期得不到访问,无读出也就无重写,其原信息必然消失,为此,必须采用定时刷新的方法。
常用的刷新方式有三种:
●集中式
●分散式
●异步式
在实际应用中,经常使用DRAM控制器与DRAM配合使用。DRAM控制器是CPU与DRAM芯片之间的接口电路,负责完成刷新、刷新/访存裁决等操作。借助DRAM控制器,可把DRAM看作SRAM一样使用,为系统设计带来很大方便。
3-1-3半导体只读存储器
ROM主要用于存放系统程序、常用功能的库例程和功能表,当程序或数据需要永久保存在主存中,不需要从辅助存储器中调入时,存放在ROM中。
计算机中配置ROM的原因:由于目前绝大部分计算机的工作方式为指令流驱动,因此要求计算机加电后必须要运行程序,因此不能只用易失性的RAM构成主存储器,需要有ROM存储引导程序。
常用ROM芯片有如下几种:
●半导体掩模只读存储器MROM(Masked Read Only Memory)
●一次性编程只读存储器PROM(Programmable ROM)
●可擦写可编程只读存储器EPROM(Erasable PROM)
●电可擦写可编程只读存储器EEPROM(Electrically Erasable PROM)
●快闪存储器FLASH Memory
3-1-4存储器与CPU连接
存储器和CPU的连接,必须按照芯片提供的引脚特征进行连接。CPU对存储器进行读/写操作,首先由地址总线给出地址信号,然后发出读操作或写操作的控制信号,最后在数据总线上进行信息交流。因此,存储器同CPU连接时,要完成地址线、数据线和控制线的
连接。
半导体存储器是封装的芯片,封装在陶瓷外壳中,并有与外界相连接的引脚。一般的存储芯片的引脚包括:地址、数据,片选信号、读写信号等。
常用的存储容量扩展方法:位扩展法、字扩展法、字位同时扩展法。
在字扩展中需要使用译码器,常用的有3-8译码器74138和2-4译码器74139。
存储芯片与CPU芯片相连时,特别要注意片与片之间的地址线、数据线和控制线(如片选等)的连接。
由于CPU和主存的发展方向不太一样,CPU重点提高的是处理速度,而主存重点是提高容量,兼顾访问速度的提高。不同的发展策略导致CPU和主存的速度差异越来越大,使主存的存取速度成为计算机系统的瓶颈。可以采取一些加速CPU和存储器之间有效传输的特殊措施,这可以通过下列几种途径来实现:
●主存储器采用更高速的技术来缩短存储器的读出时间,或加长存储器的字长;
●采用并行操作的双端口存储器;
●在每个存储器周期中存取几个字(多体交叉存储器);
●在CPU和主存储器之间插入一个高速缓冲存储器(Cache),以缩短读出时间。
一个由若干个模块组成的主存储器是线性编址的。这些地址在各模块中如何安排,有两种方式:一种是顺序方式,一种是交叉方式。
顺序组织方式的特点是:当某个模块进行存取时,其他模块不工作,优点是某一模块出现故障时,其他模块可以照常工作,通过增添模块来扩充存储器容量比较方便。缺点是各模块串行工作,存储器的带宽受到了限制。
交叉组织方式的特点是:连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的。优点是对连续字的成块传送可实现多模块流水式并行存取,大大提高存储器的带宽。使用场合为成批数据读取。
3-1-5高速缓冲存储器(Cache)
多级存储体系能够解决存储器容量、速度、价格之间的矛盾的关键:程序执行的局部性原理。
程序局部性原理,是指程序在执行时所呈现的局部性规律,即在一段较短时间内,程序的执行仅限于某个部分。相应地,它所访问的存储器空间也局限在某个空间。局部性原理表现为两个方面:
●时间局部性:如果某条指令被执行,则不久以后该指令很可能再次被执行;如果某
条数据结构被访问,则不久以后该数据结构很可能再次被访问。产生时间局部性的
主要原因是程序中有大量的循环操作。
●空间局部性:一旦程序访问了某个内存单元,不久以后,其附近的内存单元也要被
访问,即程序在一段时间内所访问的存储器空间可能集中在一定的范围之内,其最
常见情况就是程序的顺序执行。
高速缓冲存储器是为了解决CPU和主存之间速度不匹配而采取的一项重要技术。Cache 的基本原理可总结如下:
●Cache的主要目的是为了解决存储器速度问题;
●Cache的容量要远小于主存,因此必须考虑两者间的地址变换问题;
●Cache中使用的所有算法均由硬件实现;
●Cache技术实现的基本目标是提高命中率;
●Cache和主存之间以块为单位交换信息;
●Cache与主存同时进行读写。
在Cache系统的设计中,需要考虑的基本要素有:
●Cache容量的大小;
●主存地址映射到Cache的方法;
●当新的数据块装入Cache时,替换掉原数据块的策略;
●CPU执行写操作时写的策略;
●数据块大小的选择;
●Cache数目的选择。
映射功能的选择决定了Cache的结构,通常采用三种技术:
●全相联:灵活,不易产生冲突。其缺点是比较电路难于实现,且效率低,速度慢。
●直接映射:硬件简单,成本低,但容易产生冲突,不能有效利用Cache空间。
●组相联:以上两种方式的结合,组间采用直接映射,组内采用全相联映射。
当使用全相联和组相联方式时,当新的一块数据装入Cache时,原存储的一块数据就有可能被替换掉,这就会使用到替换策略或是替换算法。常用的替换策略有:
●先进先出(FIFO)算法:替换掉那些在Cache中停留时间最长的块。FIFO用循环
或环形缓冲技术很容易实现。
●最不经常使用(LFU)算法:这种算法将计数周期限定在对这些特定行两次替换之
间的时间间隔内,因而不能严格反映近期访问情况。没有考虑对新调入行的处理,因为新调入行的计数值小,容易被替换出去。
●近期最少使用(LRU)算法:目前使用较多的一种策略,能够有效的提高命中率。
●随机替换:硬件上容易实现并且速度快,虽然表面看起来算法比较随意,但实际模
拟显示,其性能还是不错的。
Cache的写操作过程比较复杂,因为对Cache块内写入的信息,必须与被映象的主存块内的信息完全一致。当程序运行过程中需要对某个单元进行写操作时,会出现如何使Cache 与主存内容保持一致的问题。目前采用的方法主要有以下2种:
●写直达法又称为通过式写(Write Through),是最简单的实现技术。优点是数据不
会出现不一致,缺点是对写操作没有高速缓存的作用。
●写回法(Write Back)。优点是速度快,缺点是存在数据不一致隐患。
Cache块大小与命中率的关系是复杂的,它取决于特定程序的局部性特征,目前还没有找到确定的最优值。较大的块能减少装入Cache的块数。因为每装入一块要改写Cache中原来的内容,少量的块导致了装入的数据很快被改写;当块变得较大时,每个附加的字离所要的字更远。因此,将被使用的可能性就更小。
最早引入Cache时,通常系统只有一个Cache。近年来,使用多个Cache己相当普通。我们所考虑的两个设计问题是关于Cache的级数以及采用统一或分立的Cache。
●单级与两级Cache:一些研究已经表明,使用两级或两级以上Cache确实可以提高
性能。
●统一和分立Cache:统一Cache的好处是可充分利用Cache空间,便于管理。分立
Cache的好处是取消了指令和数据的访问冲突,便于实现流水线。
3-1-6虚拟存储器
虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器。它借助于磁盘等辅助存储器来扩大主存容量,使之能被更大或更多的程序所使用。
虚拟存储器不仅是解决存储容量和存取速度矛盾的一种方法,而且也是管理存储设备的有效方法。
程序的逻辑地址称为虚拟地址(虚地址),程序的逻辑地址空间称为虚拟地址空间。
物理地址(实地址)由CPU地址引脚送出,它是用于访问主存的地址。
虚拟存储器和Cache的主要区别:
●Cache用硬件实现,对操作系统透明,而虚拟存储器是用软件、硬件相结合组成。
●虚拟存储器对未命中更加敏感。
主存—外存层次的基本信息传送单位可采用几种不同的方案:段、页或段页。
段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立的部分。
页式管理系统的基本信息传送单位是定长的页。
3-2 典型例题解析
1、假定一个存储器容量为512MB,按字节编址,每次读写操作最多可以一次存取32位。则存储器地址寄存器MAR和存储器数据寄存器MDR的位数分别为()。
A.29,8
B.29,32
C.27,8
D.27,32
参考答案:选项B
解析:存储器容量为512MB,按字节编址,说明该存储器的每个存储单元有8位,因而共有512M=229个存储单元。所以,地址位数应该有29位,存放主存地址的存储器地址寄存器MAR也应该有29位。
假定一次最多存取32位,则用来作为读/写数据缓冲的存储器数据寄存器MDR的位数应该有32位。
所以,选项B是正确的。
2、下面有关半导体存储器的叙述中,错误的是()。
A.主存由RAM和ROM构成,它们都是半导体存储器
B.半导体存储器都采用随机访问方式进行读写
C.SRAM是静态随机访问存储器,可以用作Cache
D.DRAM是动态随机访问存储器,主存RAM用DRAM芯片实现
参考答案:选项B
解析:选项A:主存储器由RAM和ROM组成。对于台式PC机来说,就是指插在主板上的内存条和其他存储芯片。它们都是用半导体元器件来实现的。
选项B:半导体存储器大多用随机存储方式进行存取。通过对地址进行译码,选中要访问的
单元进行读写。但是,有一种相联存储器,也可以用半导体元器件实现,但它不按地址进行访问,而是按内容进行访问的。通过比较每个存储字的内容来查找给定的二进制字串。所以,并不是所有半导体存储器都采用随机存取方式进行读写。
选项C:SRAM是Static RAM的缩写,表示静态随机访问存储器,SRAM记忆单元由6个MOS管组成,利用双稳态触发器来存储信息,速度很快,可以用作Cache。
选项D:DRAM是Dynamic RAM的缩写,表示动态随机访问存储器,一个DRAM记忆单元有三管MOS电路或单管MOS电路等。DRAM芯片的集成度高,适合于做大容量的主存,因此主存中的RAM芯片都是DRAM芯片。由于它是利用栅极电容来存储信息的,因而需要读后再生,并定时刷新。
综上所述,错误的是B。
3、某机主存储器有16位地址,每个存储单元有8位,问:
①如果用1K×4位的RAM芯片构成该存储器,需要多少片芯片?
②该存储器能存放多少字节的信息?
③片选逻辑需要多少位地址?
解析:
①存储器有16位地址,所以容量为64K个存储单元,每存储单元占8位。因此需要的芯片数为:(64K / 1K)×(8 / 4)= 64×2 = 128(片)。
②该存储器能存放64K字节的信息。
③存储器在字方向上扩展了64=26倍,因而片选逻辑需要6位地址。存储器共16位地址,而芯片共有1K=1024=210个单元,所以芯片内地址位数为10位,剩下16-10=6位地址正好用于片选逻辑。
4、用64K×1位的DRAM芯片构成256K×8位的存储器,要求:
①计算所需芯片数
②采用异步刷新方式,如每单元刷新间隔不超过2ms,则刷新信号周期是多少?
③如采用集中刷新方式,存储器刷新一遍最少用多少读/写周期?
解析:
①该存储器所需芯片数:(256K / 64K)×(8 / 1)= 32(片)。
②DRAM芯片的容量为64K×1位,假定芯片内部只有一个位平面,则存储阵列的结构为256×256,则存储器刷新一遍至少需要256次刷新操作。若采用异步刷新方式,则相邻两次刷新的时间]间隔为2ms/256≈7.8μs,所以,刷新信号周期应为7.8μs。
③若采用集中刷新方式,则存储器刷新一遍最少用256个读/写周期。
注1:DRAM芯片的内部结构可从手册中查出。如不知芯片的内部结构,按惯例可将芯片按n×n的结构处理,本例是64 K×1的芯片,则存储器刷新一遍需要256次刷新操作。
注2:若由四个128×128的矩阵构成,则刷新时4个存储矩阵同时对128个记忆单元进行操作。整个存储器刷新一遍只需要128次刷新操作。
5、某计算机主存8M字节,分成4096个主存块,Cache有64K字节,采用直接映射方式。请问:
①Cache有多少个字块?
②Cache的字块内地址为多少位?
③Cache的字块地址为多少位?
解析:
假设主存按字节编址,则:
①每字块大小为:8MB / 4096 = 2K字节,故Cache有64KB / 2KB = 32个字块。
②由于每字块大小为2KB,故Cache的字块内地址为11位。
③因为采用直接映射技术,Cache共有32个字块,故Cache 的字块地址为5位。
6、一个组相联高速缓存由64个字块组成,每个字块有256字,分为8组,主存有4096个字块。请问:
①主存地址有多少位?
②主存地址的划分如何?即:标志字段、组字段和块内地址字段各有多少位?
解析:
①主存容量为4096块x256字=220字,故主存地址为20位。
②Cache容量为64块x256字= 8组x 8字块/ 组x 256字/字块。
主存容量按每8个字块对于Cache的8组,共有4096/8=512=29个组群
即:220字=29组群x 23块/组群x 28字/块
因此,主存地址划分:标志位为9位,组号为3位,字块内地址为8位。
所以,Cache的每个字块的标志位有9位。
7、某计算机有64K字节的主存和4K字节的Cache,Cache每组4字块,每字块64字节。存储系统按组相联方式工作。请问:
①主存地址的标志字段、组字段和块内地址字段各有多少位?
②若Cache原来是空的,CPU依次从0号地址单元顺序访问到4344号单元,采用LRU替换算法。若访问Cache的时间为20ns,访问主存的时间为200ns,试估计CPU访存的平均时间。
解析:
假设按字节编址
① Cache容量为:4KB=16组 x 4字块/组 x 64B/字块
主存容量为: 64KB=64组群 x 16块/组群 x 64B/字块
主存地址为16位,划分为标志位:6位,组号:4位,块内地址:6位
所以,Cache的每个字块的标志位有6位。
②因为每块为64字节,4345/64=67.89,67x64=4288,所以0~4344单元应对应前68块(第0到第67块),即处理器访问过程是对前68块连续访问。Cache共有64个字块,分成16组,每组4个字块(槽)。图中列方向是Cache的16组,行方向是每组的4个槽。根据组相联映射方式的特点,Cache字块(槽)和主存块之间的映射关系如表3-2-1所示。
表3-2-1 Cache映射关系
3组3/67 19 35 51
4组 4 20 36 52
……………
……………
15组15 31 47 63
主存的第0块到第15块分别对应Cache的第0组到第15组,可以放在对应组的任意一块(槽)中,假定按顺序存放在第0槽;主存的第16块到第31块也分别对应Cache的第0组到第15组,放到第1槽中;同理,主存的第32块到第47块分别放到Cache的第0组到第15组的第2槽中,主存的第48块到第63块分别放到Cache的第0组到第15组的第3槽中。这样,第0到第63块都是没有冲突的,每块都是第一次在Cache中没有找到,然后把这一块调到Cache对应组的某一块中,使得以后每次都能在Cache中找到。因此,每一块只有第一字未命中,其余都命中。
主存的第64块到第67块分别对应Cache的第0组到第3组,此时,这4组的4个槽都已经满了,所以要选择一个字块淘汰出来,因为是采用LRU算法,所以,分别将最近最少用的第0块到第3块从第0槽中替换出来。再把第64块到第67块分别放到Cache中,每块也都是第一次在Cache中没有找到,调入后,以后每次都能在Cache中找到。因此,每一块只有第一字未命中,其余都命中。
所以,总访存次数是4345次,未命中次数68次。
命中率p =(4345-68)/4345=98.43%
平均访存时间t a= 20p+200x(1-p)=19.69+3.14=22.83ns
8、ROM是一种和RAM一样的随机存取存储器吗?
解析:
是的。虽然经常把只读存储器ROM和随机访问存储器RAM放在一起进行分类,但ROM 的存取方式和RAM是一样的,都是通过对地址进行译码,选择某个单元进行读写。所以两者采用的都是随机存取方式。不同的是:ROM是只读的,RAM是可读可写的。在程序执行过程中,ROM存储区只能读出信息,不能修改,而RAM区可以读出,也可以修改信息。
9、寄存器和主存储器都是用来存放信息的,它们有什么不同?
解析:
寄存器在CPU中,用触发器来实现,速度极快,价格高,容量只有几十个,多的机器也只有几百个,主要用来暂存指令运行时的操作数和结果。
主存储器在CPU之外,用MOS管电路实现,速度没有寄存器快,价格也比寄存器便宜,目前主存容量可以达到1GB左右,用来存放已被启动的程序代码和数据。
10、存取时间Ta就是存储周期Tm吗?
解析:
不是。存取时间Ta是执行一次读操作或写操作的时间。分为读出时间和写入时间。读出时间为从主存接受到有效地址开始到数据取出有效为止的时间;写入时间是从主存接受到有效地址开始到数据写入被写单元为止的时间。
存储周期Tm是指存储器进行连续两次独立的读或写操作所需的最小时间间隔。
所以存取时间Ta不等于存储周期Tm。通常存储周期Tm大于存取时间Ta。对于破坏性读出DRAM,Tm约为Ta的两倍。
11、主存和Cache分块时,是否字块越大,命中率越高?
解析:
不是。字块大,可以充分利用程序访问的空间局部性特点,字块大使得一个比较大的局部空间被一起调到Cache中,因而可以增加命中机会。但是,字块不能太大。主要原因有两个:(1)字块大使失效损失变大,也就是说,如果不命中的话,需花更多时间从主存读块。
(2)字块太大,则Cache项数变少,因而,命中的可能性变小。
12、指令和数据都是放在同一个Cache中的吗?
解析:
现代计算机系统中,一般采用多级的Cache系统。CPU执行指令时,先到速度最快的一级Cache (L1 Cache) 中寻找指令或数据,找不到时,再到速度次快的二级Cache (L2 Cache) 中找,……最后到主存中找。对于一级Cache,指令和数据一般是分开存放的。因此,有L1 Data Cache 和L1 Code Cache。
13、Cache可以做在CPU芯片里面吗?
解析:
可以。早期的计算机,其Cache是做在主板上的。但随着CPU芯片技术的提高,Cache可以做在CPU里面。从逻辑上来说,Cache是位于CPU和主存之间的部件,但在物理上,Cache 被封装在一个CPU芯片内。现代计算机系统中,一般采用多级的Cache系统。CPU执行指令时,先到速度最快的一级Cache (L1 Cache) 中寻找指令或数据,找不到时,再到速度次快的二级Cache (L2 Cache) 中找,……最后再到主存中找。目前,一级Cache和二级Cache 都可以封装在CPU芯片中。
14、直接映射方式下是否需要考虑替换方式?为什么?
解析:
无需考虑。因为,在直接映射方式下,一个给定的主存块只能放到一个惟一的固定Cache 槽中,所以,在对应Cache槽已有一个主存块的情况下,新的主存块毫无选择地把原先已有的那个主存块替换掉,因而无需考虑替换算法。
3-3 练习题
一、选择题
1、存储器是计算机系统中的记忆设备,它主要用来_______。
A. 存放数据
B. 存放程序
C. 存放数据和程序
D. 存放微程序
2、计算机的存储器采用分级存储体系的主要目的是________。
A. 便于读写数据
B. 减小机箱得体积
C. 便于系统升级
D. 解决存储容量,价格和存取速度之间的矛盾
3、存储周期是指_______。
A. 存储器的读出时间
B. 存储器的写入时间
C. 存储器进行连续读和写操作所允许的最短时间间隔。
D. 存储器进行连续写操作所允许的最短时间间隔。
4、和外存储器相比,内存储器的特点是_______。
A. 容量大,速度快,成本低
B. 容量大,速度慢,成本高
C. 容量小,速度快,成本高
D. 容量小,速度快,成本低
5、某SRAM芯片。其存储容量为64K×16位,该芯片的地址线和数据线数目为_____。
A. 64, 16
B. 16, 64
C. 64, 8
D. 16, 16
6、某SRAM芯片,其容量为512×8位,除电源端和接地端外,控制端有片选和读写信号
位,该芯片引出线的最小数目应为______。
A. 23
B. 25
C. 50
D. 19
7、某微型计算机系统,其操作系统保存在软磁盘上,其内存储器应采用________。
A. RAM
B. ROM
C. RAM和ROM
D. CCD
8、相联存储器是按______ 进行寻址的存储器。
A. 地址指定方式
B. 堆栈存取方式
C. 内容指定方式
D. 地址指定与堆栈存取方式结合
9、主存储器和CPU 之间增加cache的目的是_______。
A. 解决CPU和主存之间的速度匹配问题
B. 扩大主存储器的容量
C. 扩大CPU 通用寄存器的数量
D. 即扩大主存容量又扩大CPU通用寄存器数量
10、采用虚拟存储器的主要目的是_____。
A. 提高主存储器的存取速度
B. 扩大主存储器的存贮空间,并能进行自动管理和调度
C. 提高外存储器的存取速度
D. 扩大外存储器的存储空间
11、在虚拟存储器中,当程序正在执行时,_______ 完成地址映射。
A. 程序员
B. 编译器
C. 装入程序
D. 操作系统
12、下列因素下,与cache的命中率无关的是_______。
A. 主存的存取时间
B. 块的大小
C. cache的组织方式
D. cache的容量
13、下列说法中不正确的是________。
A. 每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间。
B. 多级存储体系由cache,主存和虚拟存储器构成。
C. cache和虚拟存储器这两种存储器管理策略都利用了程序的局部性原理.
D. 当cache未命中时,CPU可以直接访问主存,而外存与CPU之间则没有直接通路。
14、下列说法中正确的是_____。
A. 虚拟存储器技术提高了计算机的速度
B. 若主存由两部分组成,容量分别为2n和2m,则主存地址共需要n+m位
C. 闪速存储器是一种高密度,非易失性的读/写半导体存储器
D. 闪存时间是指连续两次读操作所需间隔的最小时间。
15、下列说法正确的是_______。
A. 多体交叉存储器主要解决扩充容量问题
B. cache与主存统一编址,cache 的地址空间是主存地址空间的一部分。
C. 主存都是有易失性的随机读写存储器构成的
D. cache的功能全部由硬件实现
16、在cache的地址映射中,若主存中的任意一块均可映射到cache内的任意一块的位置上,则这种方法称为________。
A. 全相联映射
B. 直接映射
C. 组相连映射
D. 混合映射
17、某计算机字长32位,其存储容量为4MB,若按半字编址,它的寻址范围是______。
A. 0~4MB
B. 0~2MB
C. 0~2M
D. 0~1M
18、EPROM是指______。
A. 读写存储器
B. 只读存储器
C. 闪速存储器
D. 光擦除可编程只读存储器
19、存储单元是指______。
A 存放1个二进制信息位的存储元
B 存放1个机器字的所有存储元集合
C 存放1个字节的所有存储元集合
D 存放2个字节的所有存储元集合
20、直接映射cache的主要优点是实现简单。这种方式的主要缺点是______。
A 它比其他cache映射方式价格更贵
B 如果使用中的2个或多个块映射到cache同一行,命中率则下降
C 它的存取时间大于其它cache映射方式
D cache中的块数随着主存容量增大而线性增加
21、常用的虚拟存储系统由______两级存储器组成,其中辅存是大容量的磁表面存储器。
A cache-主存
B 主存-辅存
C cache-辅存
D 通用寄存器-cache
22、交叉存储器实质上是一种多模块存储器,它用______方式执行多个独立的读写操作。
A 流水
B 资源重复
C 顺序
D 资源共享
23、双端口存储器所以能进行高速读/写操作,是因为采用______。
A 高速芯片
B 新型器件
C 流水技术
D 两套相互独立的读写电路
24、虚拟存储器中段页式存储管理方案的特性为______。
A 空间浪费大,存储共享不易,存储保护容易,不能动态连接
B 空间浪费小,存储共享容易,存储保护不易,不能动态连接
C 空间浪费大,存储共享不易,存储保护容易,能动态连接
D 空间浪费小,存储共享容易,存储保护容易,能动态连接
二、填空题
1、对存储器的要求是________、________、________,为了解决这三方面的矛盾,计算机采用________体系结构。
2、相联存储器不按地址而是按________访问的存储器,在cache中用来存放________,在虚拟存储中用来存放________。在这两种应用中,都需要________查找。
3、Cache是一种________存储器,是为了解决CPU和主存之间________不匹配而采用的一项重要的硬件技术。现发展为________体系;________分设体系。
4、主存与cache的地址映射有________、________、________三种方式。其中________方式,适度的兼顾了前二者的优点又尽量避免其缺点,从________来说较为理想。
5、在计算机系统中,下列部件都能够存储信息:①主存、②CPU内的通用寄存器、③cache、
④磁带、⑤磁盘。按照CPU存取速度排列,又快至慢依次为________。其中,内存包括________;属于外存的是________;由半导体材料构成的是________。
6、在计算机体系中通常使用下列存贮器:①SRAM、②DRAM、③FLASH、④EPROM、⑤
硬盘驱动器、⑥软盘驱动器。其中,非易失性的存储器有________;具有在线重写能力的存储器有________;可以单字节修改的有________;低功耗的存储器包括________;高密度的存储器包括________;可以快速读出的存储器包括________。
7、三级存储系统是由________、________、________组成。二级存储系统则是由________和________组成。分级的目的是________。
8、DRAM存储器的刷新一般有________、________、________三种方式,之所以刷新是因为________。
9、使用cache是为了解决________问题,存储管理主要由________实现。使用虚拟存储器是为了解决________问题,存储管理主要由________实现。后一种情况下,CPU________访问第二级存储器。
10、主存储器的技术指标有_____,_____,_____,_____。
11、双端口存储器和多模块交叉存储器属于并行存储器结构,其中前者采用_____并行技术,后者采用_____并行技术。
12、虚拟存储器分为页式、_____式、_____式三种。
13、一个组相联映射的Cache,有128块,每组4块,主存共有16384块,每块64个字,则主存地址共_____位,其中主存字块标记应为_____位,组地址应为_____位,Cache地址共_____位。
14、在虚存系统中,通常采用页表保护、段表保护和键保护方法实现_____保护。
三、综合应用题
1、设有一个具有24位地址和8位字长的存储器,问:
①该存储器能够存储多少字节的信息?
②如果存储器有4M×1位的RAM芯片组成,需要多少片?
③需要多少位做芯片选择?
2、某SRAM芯片有17位地址线和4位数据线。用这种芯片为32位字节的处理器构成1M ×32比特的存储器,并采用模块板结构。问:
①若每个模块板为256K×32比特,供需几快板?
②每块板内工序多少片这样的芯片?
③所构成的存储器需用多少这样的芯片?
④共需多少位地址线,各完成什么功能?
3、某DRAM芯片内部的存储单元为128×128结构。该芯片每隔2ms至少要刷新一次,且刷新是通过数顺序对所有128行的存储单元进行内部读操作和写操作实现的。设存储器周期为500ns。求其刷新的开销(也即进行刷新操作的时间所占的百分比)。
4、刷新和再生是一回事吗?
5、刷新是一个个芯片按顺序完成的吗?
6、主存都是由RAM组成的吗?
7、设存储器容量为32字,字长64位,模块数m=4,分别用顺序方式和交叉方式进行组织。存储周期T=200ns,数据总线宽度为64位,总线传送周期τ=50ns。问顺序存储器和交叉存
储器的带宽各是多少?
8、某计算机系统的内存储器由cache 和主存构成,cache 的存取周期为45ns ,主存的存取周期为200ns 。已知在一段给定的时间内,CPU 共访问内存4500次,其中340次访问主存。问:
① cache 的命中率是多少?
② CPU 访问内存的平均时间是多少纳秒?
③ cache-主存的效率是多少?
9、CPU 执行一段程序时,cache 完成存取的次数为3800次,主存完成存取的次数为200次,已知cache 存取周期为50ns ,主存为250ns ,求cache/主存系统的效率和平均访问时间。
10、某存储器容量为4KB ,其中ROM 为2KB ,选用EPROM 2K ×8;RAM 2KB ,选用RAM 1K ×8;地址线A 15~A 0。写出全部片选信号的逻辑式。
11、如图3-3-1(a )所示为存储器的地址码的地址空间分布图,(b )为存储器的地址译码电路,后者可在A 组跨接端子和B 组跨接端子之间分别进行接线,74LS139是2:4译码器,(A 位高有效位)。使能端G 接地表示译码起初与正常译码状态。
要求:A 组跨接地端子与B 组跨接地端子内部的正确连接,以便使地址译码电路按图(a)的要求进行正确寻址。
地址
0000H 4000H 8000H
C000H
F000H
FFFFH 存储映象
(a)地址空间
ROM1ROM2A 组跨接端子74LS139B 组跨接端子(b)地址译码电路
图3-3-1 存储器地址空间分布图
12、某机器中,已知配有一个地址空间为0000H ~3FFFH 的ROM 区域。现在再用一个RAM 芯片(8K ×8)形成40K ×16位的RAM 区域,起始地为6000H 。假设RAM 芯片有和信号控制端。CPU 的地址总线为A 15~A 0,数据总线为D 15~D 0 ,控制信号为WR (读/写)、
MREQ (访存)
,要求:①画出地址译码方案。②将ROM 与RAM 同CPU 连接。
13、用32K ×8位的EPROM 芯片组成128K ×l6位的只读存储器,试问:
①数据寄存器多少位?
②地址寄存器多少位?
③共需多少个EPROM 芯片?
④画出此存储器的组成框图。
14、图3-3-2是某SRAM 的写入时序,其中W R /是读 、写命令控制线,当W R / 线为低电平时,存贮器按给定地址把数据线上的数据写入存贮器。请指出图中时序的错误,并画出正确的写入时序。
图3-3-2 某SRAM 写入时序
15、程序员是否需要知道高速缓存的访问过程?
3-4 参考答案
一、选择题
1、C
2、D
3、C
4、C
5、D
6、D
7、C
8、C
9、A 10、B 11、D 12、A 13、
B 14、
C 15、
D 16、A 17、C 18、D 19、B 20、B 21、B 22、A 23、D 24、D
二、填空题
1、容量大 速度快 成本低 多级存储
2、内容 行地址表 段表、页表和快表 快速
3、高速缓冲 速度 多级cache 指令cache 和数据cache
4、全相联 直接 组相联 组相联 灵活性,命中率,硬件投资
5、②③①⑤④ ①③ ④⑤ ①②③
6、③④⑤⑥ ①②③⑤⑥ ①② ③④ ③④⑤ ①②③④
7、cache 主存 辅存 主存 辅存 解决容量、速度、价格之间的矛盾
8、集中式 分散式 异步式 有电荷泄漏,需定期补充
9、CPU 和主存的速度匹配,提高主存速度 硬件 扩大主存容量和地址分配 软件 不能直接
10、存储容量 存取时间 存储周期 存储器带宽
11、空间 时间
12、段 段页
13、20 14 5 11
地址 数据
CS R/W ① ② ③
④ ⑤
14、存储
三、综合应用题
1、解:
①存储单元数位224=16M=16777216单元,故能存储16777216个字节的信息。
②由于存储容量为16MB,每4M字节需要8片(位并联方式),故所需芯片数尾16/4×8=32片。
③如果用32片组成一个16M的存储器,地址总线的低22位可以直接连到芯片的A0~A21管脚,而地址总线的高两位(A23,A22)需要通过2:4线译码器进行芯片选择。存储器组成方案为位并联与地址串联相结合的方式。
2、解:
①1M=1024K,共需要模块板1024/256=4块。
②该芯片为217×4比特=128K×4比特,故每快板内需芯片(256/128)×(32/4)=16片。
③构成该存储器共需4×16=64片芯片。
④所构成的存储器的总量为1M×32比特=4M字节=221字节,故共需21位地址线。在每个模块板内,首先用每两片位并联的方式构成128K×8比特的存储空间,芯片内部地址需要17位。然后用每两组这样的存储空间地址串联构成256K×8比特的存储体,四个这样的存储体构成一个模块板。最低两位地址线A0和A1用于存储体的选择,A2~A18这17位地址线用于芯片内部的存储单元的选择,地址线A19用于构成存储体的两个存储空间(相当于通过1:2线译码其产生片选信号)。最后,地址线A0和A21通过2:4线译码其产生片选信号用于模块选择。
3、解:
每刷新一行需进行一次读操作和一次写操作。故每行的刷新时间为500ns×2=1000ns=1μs。在2ms时间内需进行128次刷新,需时1×128=128μs。故刷新的开销为:
128μs/2ms×100%=6.4%
4、解:
不是一回事。对某个单元的刷新和再生操作过程是一样的,即读后恢复。但再生操作是随机的,只对所读单元进行;而刷新操作则是按顺序定时对一行一行进行的。
5、解:
不是。刷新按行进行,每一行中的记忆单元同时被刷新,仅需要行地址,不需要列地址。刷新行号由DRAM芯片的刷新控制电路中的刷新计数器产生。整个存储器中的所有芯片的相同行同时进行刷新,所以不是一个一个芯片按顺序进行的,而是单个芯片的所有行按顺序定时一行一行进行的。
6、解:
不是。主存是由RAM和ROM两部分组成的,它们统一编址,分别占用不同的地址空间。
7、解:
信息总量:q=64位×4=256位
顺序存储器与交叉存储器读出4个字的时间分别是:
t2=mT=4×200ns=8×10-7 s
t1=T +(m -1)τ=200+3×50=3.5×10-7 s
则顺序存储器带宽为:W2=q/t2=32×10-7 (位/s )
交叉存储器带宽为:W1=q/t1=73×10-7 (位/s )
8、解:
① cache 的命中率
92.04500
3404500=-=+=
m c c N N N H ② CPU 访问的平均时间 ns T H T H T m c a 4.57200)92.01(4592.0)1(=?-+?=-+?=
③ cache-主存系统的效率
%78%10078.0%1004
.5745%100=?=?=?=
a c T T e
9、解:
cache 的命中率 95.0200
38003800=+=+=m c c N N N H 550250===ns
ns T T r c m cache-主存系统效率e 为
%3.83%10095
.0)51(51%100)1(1=??-+=?-+=H r r e 平均访问时间a T 为
ns ns e T T c a 60833
.050===
10、解: 11A ROM = 10111A A RAM ?= 10112A A RAM ?=
11、解:
根据图3-3-1(a ),ROM1的空间地址为00000H ~3FFFH (十六进制表示,下同)ROM2的地址空间为4000H ~7FFFH ,RAM1的地址空间为C000H ~DFFFH ,RAM2的地址空间
为E000H~FFFFH。
对应上述空间,地址码追高4位A15—A12状态如下:
0000~0011 ROM1
0100~0111 ROM2
1100~1101 ROM1
2:4译码器对A15、A14两位进行移码,产生四路输出,其中Y0=00对应ROM1,Y1=01对应ROM2,Y3=1对应RAM1和RAM2,然后用A13区分是RAM1(A13=0)还是RAM2(A13=1),此处采用部分译码。
由此,两组端字的连接方法如下:1-6,2-5,3-7,8-10,11-14,9-13
12、解:
②3-4-1所示。
图3-4-1 CPU与存储器连接图
13、解:
①数据寄存器16位。
②地址寄存器17位。
③共需8个EPROM芯片
④组成框图如图3-4-2所示。
位)8位)0
图3-4-2 组成框图
14、解:
写入存贮器时时序信号必须同步。通常,当W R /线加负脉冲时,地址线和数据线的电平必须是稳定的。当W R /线达到逻辑0电平时,数据立即被存贮。因此,当W R /线处于低状态时,如果数据线改变数值,那么存贮器将存贮新的数据⑤。同样,当W R /线处于低状态时,地址发生了变化,那么同样的数据将存贮到新的地址(②或③)。
正确的写入时序图如图3-4-3所示:
图3-4-3 正确的写入时序
15、解:
不需要。高速缓存Cache 的访问过程对程序员来说,是透明的。执行到一条指令时,需地址
数据
CS
要到内存取指令,有些指令还要访问内存取操作数或存放运算结果。采用Cache的计算机系统中,总是先到Cache去访问指令或数据,没有找到才到主存去访问。这个过程是CPU在执行指令过程中自动完成的。程序员不需要知道要找的指令和数据在不在Cache中、该在Cache的哪一块中,等等,也不需要知道Cache的访问过程,只要在指令中给定内存单元的地址就行了。