第3章 存储器.docx

上传人:b****6 文档编号:12147841 上传时间:2023-06-04 格式:DOCX 页数:31 大小:155.62KB
下载 相关 举报
第3章 存储器.docx_第1页
第1页 / 共31页
第3章 存储器.docx_第2页
第2页 / 共31页
第3章 存储器.docx_第3页
第3页 / 共31页
第3章 存储器.docx_第4页
第4页 / 共31页
第3章 存储器.docx_第5页
第5页 / 共31页
第3章 存储器.docx_第6页
第6页 / 共31页
第3章 存储器.docx_第7页
第7页 / 共31页
第3章 存储器.docx_第8页
第8页 / 共31页
第3章 存储器.docx_第9页
第9页 / 共31页
第3章 存储器.docx_第10页
第10页 / 共31页
第3章 存储器.docx_第11页
第11页 / 共31页
第3章 存储器.docx_第12页
第12页 / 共31页
第3章 存储器.docx_第13页
第13页 / 共31页
第3章 存储器.docx_第14页
第14页 / 共31页
第3章 存储器.docx_第15页
第15页 / 共31页
第3章 存储器.docx_第16页
第16页 / 共31页
第3章 存储器.docx_第17页
第17页 / 共31页
第3章 存储器.docx_第18页
第18页 / 共31页
第3章 存储器.docx_第19页
第19页 / 共31页
第3章 存储器.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第3章 存储器.docx

《第3章 存储器.docx》由会员分享,可在线阅读,更多相关《第3章 存储器.docx(31页珍藏版)》请在冰点文库上搜索。

第3章 存储器.docx

第3章存储器

第3章存储器

本章系统地介绍计算机中存储系统的基本知识,要求学生掌握计算机中存储层次的组织和半导体存储器的工作原理。

重点提示:

●存储层次

●随机读写存储器

●只读存储器和闪速存储器

●高速存储器

●cache存储器

●虚拟存储器

●存储保护

3-1重点难点指导

3-1-1存储器概述

字地址:

存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址。

字节地址:

存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址。

如果计算机中可编址的最小单位是字存储单元,则该计算机称为按字寻址的计算机。

如果计算机中可编址的最小单位是字节,则该计算机称为按字节寻址的计算机。

存储器的特性:

●存储容量:

在一个存储器中可以容纳的存储单元总数通常称为该存储器的存储容量。

●存取时间:

存取时间ta又称存储器访问时间。

●存储周期:

存储周期tc是指连续启动两次读操作所需间隔的最小时间。

●传输率:

传输率是指数据传入或传出存储单位的速率。

●带宽:

单位时间内存储器可读写的字节数(或二进制的位数)称为存储器的带宽。

●价格:

价格是存储器的一个经济指标,一般用每位价格来表示。

存储器的分类方法:

●按存取方式分:

顺序存取、直接存取、随机存取、相联存取;

●按存储介质分:

半导体存储器、磁表面存储器、光存储器;

●按读写功能分:

ROM、RAM;

●按信息的可保存性分:

非永久记忆存储器、永久记忆存储器;

●按在计算机系统中的作用分:

主存储器、辅助存储器、Cache等。

存储器是计算机的核心部件之一。

其性能直接关系到整个计算机系统性能的高低,如何以合理的价格,设计出容量和速度满足计算机系统要求的存储器系统是我们关心的问题。

在存储系统,存在如下关系:

●存取时间越短,每位的价格就越高。

●容量越大,每位的价格就越低。

●容量越大,存取时间就越长。

但计算机系统中的存储器不仅需要大容量,而且需要低的每位价格,因此希望采用提供大容量存储器的技术,但为了满足性能要求,设计者又必须使用昂贵、容量较低和存取时间快的存储器。

解决这个难题的方法是采用存储器层次结构(MemoryHierarchy),而不只是依赖单一的存储部件或技术。

图3-1-1存储器的层次结构

在通用的存储层次中,如图3-1-1所示,从上到下有如下关系:

●每位价格降低

●容量增大

●存取时间增大

●处理器访问存储器的频度降低

在微机系统中,存储器的层次结构主要是缓存—主存和主存—辅存这两个存储层次。

3-1-2半导体随机存储器

存储器的构成单元是存储位元,用于保存一位二进制的信息,这是现代计算机采用二进制的重要原因。

但存储位元只要具备了以下3个条件就可以作为存储位元。

存储位元的性质:

●呈现两种稳态(或半稳定),分别代表二进制的1和0

●能够写入(至少一次)来设置状态

●能够读出状态。

常用的半导体存储位元:

●双极型半导体TTL(Transistor-TransistorLogic):

速度高,驱动能力强,但集成度低,功耗大,价格高,多用于小容量高速存储器;

●金属氧化物场效应晶体管MOS(MetalOxideSemiconductor):

集成度高,功耗小,工艺简单,成本低,但速度较低,主要用于大容量存储器。

在计算机中MOS器件组成的存储器是最为常用的。

计算机中使用的半导体存储器主要有两类:

半导体RAM(RandomAccessMemory)和半导体ROM(ReadOnlyMemory),RAM具有易失性,而ROM是非易失性的。

RAM分为:

●静态RAM(StaticRAM):

速度快,集成度低,容量小,使用方便;

●动态RAM(DynamicRAM):

速度比SRAM慢,容量大,需要定时刷新操作。

静态随机存储器SRAM(StaticRandomAccessMemory)是一种快速存储器,所谓“静态”的含义是这种存储器不需要刷新操作。

但SRAM造价较高,通常用作高速缓冲存储器(Cache)。

动态随机存储器DRAM(DynamicRandomAccessMemory)是目前在个人计算机中使用最多的存储器形式。

“动态”的含义是指这种存储器必须定时的进行刷新操作,否则,其存储的数据就会丢失。

存储器芯片中,存储位元的组织形式:

●一维地址译码方式(单译码方式)

●二维地址译码的位选方式

●二维地址译码的字选方式

常用的形式为二维地址译码的字选方式。

采用地址线的复用和方阵型行列结构,每增加一个专用的地址引脚,便使得行地址和列地址的指示范围加倍,因此存储器芯片的容量以4的倍数增长。

由于DRAM存储单元被访问是随机的,有可能某些存储单元长期得不到访问,无读出也就无重写,其原信息必然消失,为此,必须采用定时刷新的方法。

常用的刷新方式有三种:

●集中式

●分散式

●异步式

在实际应用中,经常使用DRAM控制器与DRAM配合使用。

DRAM控制器是CPU与DRAM芯片之间的接口电路,负责完成刷新、刷新/访存裁决等操作。

借助DRAM控制器,可把DRAM看作SRAM一样使用,为系统设计带来很大方便。

3-1-3半导体只读存储器

ROM主要用于存放系统程序、常用功能的库例程和功能表,当程序或数据需要永久保存在主存中,不需要从辅助存储器中调入时,存放在ROM中。

计算机中配置ROM的原因:

由于目前绝大部分计算机的工作方式为指令流驱动,因此要求计算机加电后必须要运行程序,因此不能只用易失性的RAM构成主存储器,需要有ROM存储引导程序。

常用ROM芯片有如下几种:

●半导体掩模只读存储器MROM(MaskedReadOnlyMemory)

●一次性编程只读存储器PROM(ProgrammableROM)

●可擦写可编程只读存储器EPROM(ErasablePROM)

●电可擦写可编程只读存储器EEPROM(ElectricallyErasablePROM)

●快闪存储器FLASHMemory

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种:

●写直达法又称为通过式写(WriteThrough),是最简单的实现技术。

优点是数据不会出现不一致,缺点是对写操作没有高速缓存的作用。

●写回法(WriteBack)。

优点是速度快,缺点是存在数据不一致隐患。

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,8B.29,32C.27,8D.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是StaticRAM的缩写,表示静态随机访问存储器,SRAM记忆单元由6个MOS管组成,利用双稳态触发器来存储信息,速度很快,可以用作Cache。

选项D:

DRAM是DynamicRAM的缩写,表示动态随机访问存储器,一个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的结构处理,本例是64K×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组x8字块/组x256字/字块。

主存容量按每8个字块对于Cache的8组,共有4096/8=512=29个组群

即:

220字=29组群x23块/组群x28字/块

因此,主存地址划分:

标志位为9位,组号为3位,字块内地址为8位。

所以,Cache的每个字块的标志位有9位。

7、某计算机有64K字节的主存和4K字节的Cache,Cache每组4字块,每字块64字节。

存储系统按组相联方式工作。

请问:

①主存地址的标志字段、组字段和块内地址字段各有多少位?

②若Cache原来是空的,CPU依次从0号地址单元顺序访问到4344号单元,采用LRU替换算法。

若访问Cache的时间为20ns,访问主存的时间为200ns,试估计CPU访存的平均时间。

解析:

假设按字节编址

①Cache容量为:

4KB=16组x4字块/组x64B/字块

主存容量为:

64KB=64组群x16块/组群x64B/字块

主存地址为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-1Cache映射关系

0槽

1槽

2槽

3槽

0组

0/64

16

32

48

1组

1/65

17

33

49

2组

2/66

18

34

50

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%

平均访存时间ta=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(L1Cache)中寻找指令或数据,找不到时,再到速度次快的二级Cache

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2