《微型计算机原理与接口技术》课件第5章 2_第1页
《微型计算机原理与接口技术》课件第5章 2_第2页
《微型计算机原理与接口技术》课件第5章 2_第3页
《微型计算机原理与接口技术》课件第5章 2_第4页
《微型计算机原理与接口技术》课件第5章 2_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.1存 储 器 概 述随着CPU速度的不断提高和软件规模的不断扩大,人们希望存储器能同时满足速度快、容量大、价格低的要求。但实际上这一点很难办到,解决这一问题的较好方法是设计一个快慢搭配,具有层次结构的存储系统。微型计算机中的信息是分级存储的,所以存储系统是以层次结构进行组织的。典型的存储系统层次结构是高速缓冲存储器(Cache)—内存储器—外存储器这样三级。图5-1显示了新型微机系统的层次结构。CPU中的寄存器位于顶端,它有最快的存取速度,但数量极为有限;向下依次是CPU内的Cache(高速缓冲存储器)、主板上的Cache(由高速SRAM组成)、内存储器(简称内存,又称主存储器),这些都是计算机主机的一个组成部分,用于存放当前与CPU频繁交换的信息。CPU可以通过三总线(地址总线、数据总线、控制总线)直接对它进行访问,因此要求它的工作速度和CPU的处理速度接近,但其容量相对于外存储器要小得多。外存储器(简称外存)又称辅助存储器(简称辅存),属于计算机的外部设备,用来存储相对来说不经常使用的可永久保存的信息。外存中的信息要通过专门的接口电路传送到内存后,才能供CPU处理。因此它的速度可以低一些,但容量相对于内存却要大得多。图5-1微机存储系统的层次结构5.1.1存储器的分类

半导体存储器的种类繁多,从制造工艺的角度看,可分为双极(Bipolar)型存储器和MOS(Metal-OxideSemiconductor)型存储器两类。双极型存储器速度快,常作微机系统中的高速缓冲存储器(Cache)。MOS型存储器因制造工艺的不同,又有静态RAM、动态RAM、EPROM、E2PROM和FlashMemory等,它们的速度较双极型慢,但集成度高、功耗低、价格便宜,是构成微型机内存的主要半导体存储器件。按信息存储方式,半导体存储器可分为随机存取存储器RAM(RandomAccessMemory)和只读存储器ROM(ReadOnlyMemory)。

(1)随机存取存储器RAM。RAM又称读写存储器。计算机在运行期间,这种存储器中的信息可随时读出或写入。它里面存放的信息会丢失,因此又称易失性或挥发性存储器。但目前有些RAM芯片内部带有电池,掉电后信息不会丢失,称为非易失或不挥发性的RAM(NVRAM)。

(2)只读存储器ROM。ROM在机器运行期间其信息只能读出不能写入。这种存储器断电后,其信息亦不丢失。常用它来存放固定的程序或数据。根据信息写入的方式,常用的ROM类型有:掩膜式(Mask)ROM(简称ROM)、可编程(programmable)ROM(即PROM)、紫外线可擦除(Erasable)PROM(即EPROM)、电可擦除(ElectricallyErasable)PROM(即EEPROM,或称E2PROM)、快速整体电擦除(FLASHMEMORY,也称闪速存储器)。半导体存储器的分类如图5-2所示。图5-2半导体存储器的分类5.1.2半导体存储器的性能指标

1.存储容量

存储容量是内存储器的一个重要指标,它反映了存储空间的大小。存储容量常以字节或字为单位。在计算机中,定义一个字节为8位二进制信息,而字长一般为8的倍数。微型计算机中均以字节B(Byte)为单位,如8位机的内存储器的容量为64KB,16位微型机的内存储器的容量为640KB或1 MB。外存一般用MB、GB、TB为单位以表示更大的容量,如3.5inch软盘的容量为1.44MB。这里,1 KB=210B,1MB=1024KB=220B,1GB=1024MB=230B,1 TB=1024 GB=240B。在用存储芯片设计内存储器时,存储容量是指存储器(或存储器芯片)存放二进制信息的总位数,一般描述为N×M(其中:N表示芯片的存储单元数,M表示每单元的存储位数),即

存储器容量=存储单元数×每个单元的位数(或数据线位数)例如,SRAM芯片6264的容量为8K×8,即它有8K个单元(1K=1024),每个单元存储8位(一个字节)二进制数据。DRAM芯片NMC41257的容量为256K×l,即它有256K个单元,每个单元存储1位二进制数据。

2.存取速度

存取速度是以存储器的存取时间来衡量的。存取速度指从CPU给出有效的存储地址到存储器给出有效数据所需的时间,一般为几纳秒到几百纳秒。存取时间越小,则存取速度越快。存取时间主要与存储器的制造工艺有关。双极型半导体存储器的速度高于MOS型的速度,但随着工艺的提高,MOS型的速度也在不断提高。

3.功耗

功耗一般指每个存储单元的功耗,单位为微瓦/单元(μW/单元)。也有给出每块芯片总功耗的,单位为毫瓦/芯片(mW/芯片)。功耗是半导体存储器的一个重要指标,它不仅涉及到消耗功率的大小,也关系到芯片的集成度,还要考虑微机的电源容量,由此产生的热量和在机器中的组装和散热问题。手册中常给出工作功耗和维持功耗。

4.可靠性

可靠性通常以平均无故障时间(MTBF)来衡量。平均无故障时间可以理解为两次故障之间的平均时间间隔,平均无故障时间越长,则可靠性越高。集成存储芯片一般在出厂时需经过测试以保证它有很高的可靠性。

5.性能/价格比

性能/价格比用于衡量存储器的经济性能,它是存储容量、存取速度、可靠性、价格等的一个综合指标,其中的价格还应包括系统中使用存储器时而附加的线路的价格。用户选用存储器时,应针对具体的用途,侧重考虑要满足某种性能,以利于降低整个系统的价格。例如,选用外存储器要求它有大的存储容量,但对于存取是否高速则不作要求;高速缓存Cache要求高的存取速度,但对于其存储容量则不作过高要求。5.1.3存储器的基本结构

如图5-3所示,半导体存储器由地址寄存器、译码驱动电路、存储器、读/写控制电路、数据寄存器、控制逻辑等6个部分组成。图5-3存储器的基本组成

1.地址寄存器

地址寄存器用于存放CPU访问存储单元的地址,经译码驱动后指向相应的存储单元。通常,在微型计算机中,访问地址由地址锁存器提供,如8086CPU中的地址锁存器8282。存储单元地址由地址锁存器输出后,经地址总线送到存储器芯片内直接译码。

2.译码驱动电路

译码驱动电路实际上包含译码器和驱动器两部分。译码器将地址总线输入的地址码转换成与它对应的译码输出线上的高电平或低电平,以表示选中了某一单元,并由驱动器提供驱动电流去驱动相应的读/写控制电路,完成对被选中单元的读/写操作。

3.存储器

存储器是存储单元的集合体,它由若干个存储单元组成,每个存储单元又由若干个基本存储电路(或称存储元)组成,每个存储元可存放一位二进制信息。通常,一个存储单元为一个字节,存放8位二进制信息,即以字节来组织。为了区分不同的存储单元和便于读/写操作,每个存储单元都有一个地址(称为存储单元地址),CPU访问时按地址访问。为了减少存储器芯片的封装引线数和简化译码器结构,存储体总是按照二维矩阵的形式来排列存储元电路。体内基本存储元的排列结构通常有两种方式:一种是“多字一位”结构(简称位结构),即将多个存储单元的同一位排在一起,其容量表示成N字×1位,例如,1K×l位,4K×l位;另一种排列是“多字多位”结构(简称字结构),即将一个单元的若干位(如4位、8位)连在一起,其容量表示为

N字×4位/字或N字×8位/字

如静态RAM的6116为2K×8,6264为8K×8等。

4.读/写控制电路

读/写控制电路包括读出放大器、写入电路和读/写控制电路,用以完成对被选中单元中各位的读出或写入操作。存储器的读/写操作是在CPU的控制下进行的,只有当接收到来自CPU的读/写命令和后,才能实现正确的读/写操作。

5.数据寄存器

数据寄存器用于暂时存放从存储单元读出的数据,或从CPU以及I/O端口送出的要写入存储器的数据。暂存的目的是为了协调CPU和存储器之间在速度上的差异,故又称之为存储器数据缓冲器。

6.控制逻辑

控制逻辑接收来自CPU的启动、片选、读/写及清除命令,经控制电路综合和处理后,发出一组时序信号来控制存储器的读/写操作。

虽然现在微型机的存储器多由芯片构成,但任何存储器的结构都保留了这6个基本部分,只是在组成各种结构时做了一些相应的调整。5.2随 机 存 储 器随机存储器(RAM)主要用来存放当前运行的程序、各种输入输出数据、中间运算结果及堆栈等,其存储的内容既可随时读出,也可随时写入和修改,掉电后内容会全部丢失。随机存储器RAM可进一步分为静态RAM(SRAM)和动态RAM(DRAM)两类。图5-46管静态随机存储器SRAM基本存储电路图

2.静态随机存储器的结构

静态随机存储器通常由地址译码、存储矩阵、读/写控制逻辑及三态数据缓冲器4部分组成,图5-5所示为1K×1的静态RAM芯片的内部组成框图。图5-5静态RAM内部结构示意图

1)存储矩阵

存储矩阵是存储器芯片的核心部分。一个基本存储电路仅能存放一位二进制信息。在计算机中为了保存大量的信息,需要由许多如图5-4所示的基本存储元电路组成,通常排列成二维矩阵形式。本例中采用位结构,即将所有单元(1024个)的同一位制作在同一芯片上,并排成32×32方阵,1024个单元需要10条地址线,其中,5条(A4~A0)用于列(X)译码,5条(A9~A5)用于行(Y)译码,行、列同时选中的单元为所要访问的单元。这种结构的优点是芯片封装时引线较少。例如,本例中1K×1的容量,若采用多字多位结构,如排成128×8的矩阵结构,即一个芯片上共128个单元,每单元8位,这样每个芯片封装时的引线数为7位地址线、8位数据线;而排成多字一位的结构时,每片只需10位地址线和1位数据线。芯片的封装引线数少,可以提高产品的合格率。如果要求每单元为8位,则只需用8片相同的芯片并联即可满足要求。

2)地址译码器

每个存储单元都有自己的编号,即存储单元地址。要对一个存储单元进行读/写,必须先给出它的地址,这就是计算机的“存储器按地址访问”的原理。如前所述,CPU在读/写一个存储单元时,总是先将访问地址送到地址总线上,然后将高位地址经译码后产生片选信号(

)选中某一芯片,用低位地址送至存储器,经片内地址译码器译码选中所需的存储单元,最后在CPU的读/写命令控制下完成对该单元的读出或写入。由此可见,RAM中的地址译码完成存储单元的选择。通常的译码方法有两种:单译码和双译码。不同的译码方法对译码器的结构和输出线的要求是不同的。单译码是把所有地址都输入到一个译码器进行译码,这样,若地址为n位,则要求译码器有2n个输出,结构就比较复杂。双译码是将所有地址线分为行、列两个方向进行译码,如图5-5所示。1024个单元共需10位地址线,分为行、列两个方向,每个方向5条,经行列译码,各输出32条线到存储矩阵中,只有行、列方向同时选中的单元才是所要访问的单元。因此,双译码可以简化译码器结构。图5-6SRAM6264引脚图5.2.2动态随机存储器

1.基本存储单元

最简单的动态RAM(DRAM)基本存储电路由一个MOS晶体管和一个电容CS组成,如图5-7所示。在这个电路中,存储信息依赖于电容CS,电容CS上的电荷(信息)是能够维持的。该电路的工作过程如下:

(1)写入时,行、列选择线信号为“1”。行选管V1真导通,该存储元被选中。若写入“1”,则经数据I/O线送来的写入信号为高电平,经刷新放大器和V2管(列选管)向CS充电,CS上有电荷,表示写入了“1”;若写入“0”,则数据I/O线上为“0”,CS经V1管放电,CS上便无电荷,表示写入了“0”。图5-7单管DRAM基本存储元件

(2)读出时,先对行地址译码,产生行选择信号(为高电平)。该行选择信号使本行上所有基本存储元电路中的V1管均导通,由于刷新放大器具有很高的灵敏度和放大倍数,并且能够将从电容上读取的电压值(此值与CS上所存“0”或“1”有关)折合为逻辑“0”,或逻辑“1”,于是连接在列线上的刷新放大器就能够读取对应于电容CS上的电压值。若此时列地址(较高位地址)产生列选择信号,则行和列均被选通的基本存储元电路得以驱动,从而读出数据送入数据I/O线。

(3)读出操作完毕,电容CS上的电荷被放完,而且选中行上所有基本存储元电路中的电容CS都受到打扰,故是破坏性读出。为使CS上读出后仍能保持原存信息(电荷),刷新放大器又对这些电容进行重写操作,以补充电荷使之保持原信息不变。所以,读出过程实际上是读、回写过程。回写也称为刷新。

这种单管动态存储单元电路的优点是结构简单、集成度高且功耗小。缺点是列线对地间的寄生电容大,噪声干扰也大,因此,要求CS值做得比较大,刷新放大器应有较高的灵敏度和放大倍数。

2.DRAM的结构

1) DRAM芯片的结构特点

DRAM芯片的结构特点是设计成位结构形式,即一个芯片上含有若干字,而每个存储单元只有一位数据位,如4K×1位、8K×1位、16K×1位、64K×1位或256K×1位等。存储体的这一结构形式是DRAM芯片的结构特点之一。

DRAM存储体的二维矩阵结构也使得DRAM的地址线总是分成行地址线和列地址线两部分,芯片内部设置有行、列地址锁存器。在对DRAM进行访问时,总是先由行地址选通信号(CPU产生)把行地址打入内置的行地址锁存器,随后再由列地址选通信号把列地址打入内置的列地址锁存器,再由读/写控制信号控制数据读出/写入。所以,访问DRAM时,访问地址需要分两次打入,这也是DRAM芯片的特点之一。行、列地址线的分时工作,可以使DRAM芯片的对外地址线引脚大大减少,仅需与行地址线相同即可。

2) DRAM的刷新

所有的DRAM都是利用电容存储电荷的原理来保存信息的。虽然利用MOS管栅源间的高阻抗可以使电容上的电荷得以维持,但由于电容总存在泄漏现象,时间长了其存储的电荷会消失,从而使其所存信息自动丢失。所以,必须定时对DRAM的所有基本存储元电路进行电荷补充,即进行刷新操作,以保证存储的信息不变。所谓刷新,就是不断地每隔一定时间(一般每隔2 ms)对DRAM的所有单元进行读出,经读出放大器放大后再重新写入原电路中,以维持电容上的电荷,进而使所存信息保持不变。对DRAM必须设置专门的外部控制电路和安排专门的刷新周期来系统地对DRAM进行刷新。刷新类似于读操作,但刷新时不发送片选信号或不发送列地址。对DRAM的刷新是按行进行的,每刷新一次的时间称为刷新周期。从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍所用的时间间隔称为最大刷新时间间隔,一般为2 ms。设相继刷新2行之间的时间间隔为Tn,单片存储器的行数为LR,则整个存储器刷新一遍的时间为

T=Tn × LR

不论行数多少,均应保证T小于2 ms。图5-8Intel2164DRAM芯片引脚及内部结构图图5-8中,64 K的存储体由4个128×128的存储矩阵组成,每个128×128的存储矩阵由7条行地址线和7条列地址线进行选择,在芯片内部经地址译码后,可分别选择128行和128列。

锁存在行地址锁存器中的7条行地址线RA6~RA0同时加到4个存储矩阵上,在每个矩阵中选中一行,则共有4×128=512个基本存储元电路被选中,存放信息被选通到512个读出放大器,经过鉴别后锁存或重写。5.3只 读 存 储 器5.3.1只读存储器的结构只读存储器(ROM)中各基本存储单元电路所存信息在机器运行期间只能读出不能写入,且在断电或停电之后也不会改变和消失,具有固定非易失的特点。

ROM中的信息是事先用专用仪器设备写入的,对简单的程序也可用人工方式写入。通常称对ROM信息的写入过程是对ROM进行编程。ROM芯片的内部结构如图5-9所示。图5-9ROM的结构框图可以看出,它是由存储矩阵、地址译码器和输出缓冲器三部分组成的。存储矩阵采用N行8列或N行4列的结构。行列线信号由地址译码器译码产生,在行列线之间则用单向选择开关组成的基本存储电路耦合。选用二极管、双极型三极管或MOS三极管作单向选择开关。

编址方式可采用单译码编址方式或双译码编址方式。输出缓冲器采用能方便地挂接于总线的单向三态门结构。下面用一个16×8位的假想存储器来说明ROM的工作原理及特点,它的行列线之间的耦合单元为二极管。存储矩阵分成8个16×1位的阵列,用图5-10表示其中一个16×1位的阵列。四位地址码分成两组,低两位送行译码器,译码产生行选择信号;高两位送列译码器,译码产生列选择信号,行列选择信号复合选择基本存储电路。图5-1016 × 1位的阵列5.3.2只读存储器的分类

ROM存储矩阵中各基本存储电路的信息存储是用单向选择开关接通或断开的状态来实现的,单向选择开关的状态应事先设计好。根据选择开关设置方法也即编程方式的不同,只读存储器(ROM)常分为下列三种。

1.掩膜式ROM(MaskProgrammedROM)

掩膜式ROM简称ROM,是厂家按用户提供的数据对芯片进行两次光刻来控制某特定基本存储电路的晶体管能否工作(即单向开关是否接通),来达到预先写入信息的目的,所以一旦完工用户就不可以改变其信息。它可以用双极工艺实现,也可以用MOS来实现。掩膜ROM中,由于只有读出所需的电路,所以结构简单、集成度高、接口容易,大批量生产时也很便宜。掩膜ROM主要作为微型机的标准存储器,也可以用来存储数学用表、代码转换表、逻辑函数表、固定常数表以及阴极射线管或打印机用的字符产生图形等。例如,国家标准的一、二级汉字字模(汉字字形信息)就可以做到一个掩膜式的ROM芯片中。图5-11所示为一种单译码结构的掩膜式ROM,其容量为4×4位。图中有4条行选线,4条数据位线(列线),后者通过有源负载挂在高电平上。每个行线和列线交叉处可存放一位信息,若两线间接有场效应管,则选中该行时,将从该位线上读到低电平0;否则,将读到高电平1。

若地址线A1A0=00,则选中0号单元,即字线0为高电平,则凡与该行相连的MOS管导通,对应位输出为0,而不与该行相连的位因没有MOS管的导通而输出为1。表5-2为图5-11存储矩阵的存放内容。图5-11掩膜式ROM结构示意图

2.可编程ROM(ProgrammableROM)

可编程ROM(ProgrammableROM),简称PROM。PROM在产品出厂时未存储任何信息,使用时,用户可以根据需要自行写入信息。但只能写入一次,一旦写入,不可更改。目前,PROM只有双极型(主要包括TTL工艺及ECL工艺)产品,基本存储电路有熔丝型和PN击穿型两种,读数时间范围在40~90ns,有些ECL产品的读数时间低到20 ns。由于PROM的典型应用是作为高速计算机的微程序存储器,高速是主要目标,很少考虑降低功耗的问题。双极型产品的功耗确实比较大,典型的PROM单片机总功耗为600~1000mW。

PROM基本存储电路是熔丝式PROM的基本存储结构,其存储单元通常用二极管或三极管实现。图5-12所示为存储单元用双板型三极管的发射级串接一个可熔金属丝,因此这种PROM也称为“熔丝式”PROM。

出厂时,所有存储单元的熔丝都是完好的,编程时,通过字线选中某个晶体管。若准备写入1,则向位线送高电平,此时管子截止,熔丝将被保留;若写入0,则向位线送低电平,此时管子导通,控制电流使熔丝烧断。也就是说,所有的存储单元出厂时均存放信息1,一旦写入0即使熔丝烧断,不可能恢复,所以它只能进行一次编程。图5-12熔丝式PROM的基本存储结构

3.可擦除可编程ROM(ErasbleProgrammableROM)

可擦除可编程ROM(ErasbleProgrammableROM),简称EPROM,是指用户既可以采取某种方法自行写入信息,也可以采取某种方法将信息全部擦去,而且擦去后还可以重新写入的ROM。根据擦去信息的方法不同,EPROM又可以分为两种,即紫外线擦除的EPROM(UltravioletEPROM,简称UVEPROM)和电擦除的EPROM(ElectricallyEPROM,简称EEPROM或E2PROM)。UVEPROM常用作微型机的标准程序存储器或专用程序存储器。5.3.3典型PROM芯片简介

典型的EPROM芯片以27系列为代表,如2716(2K×8位)、2732(4K×8位)、2764(8K×8位)、27128(16K×8位)、27256(32K×8位)、27512(64K×8位);容量更大的有27010(128K×8位)、27020(256K×8位)、27030(512K×8位)、27040(1M×8位)等,这些芯片多采用NMOS工艺制造,若采用CMOS工艺,其功耗要比前者小得多,多用于便携式仪器场合,如27C64。

典型的E2PROM芯片以28系列为代表,如2816(2K×8位)、2832(4K×8位)、2864(8K×8位)、28128(16K×8位)、28256(32K×8位)、28512(64K×8位)。下面以Intel2864A为例,说明E2PROM的基本特点和工作方式。

Intel2864A的容量为8K×8,采用28个引脚双引直插式封装,图5-13所示为2864A的引脚图,其引脚与EPROM2764兼容。图5-132864AE2PROM的引脚5.4高速缓存存储器(Cache)使用Cache的目的在于提高CPU数据的输入/输出速率,突破所谓的“冯·诺依曼瓶颈”,即CPU与存储系统间的数据传送带宽限制。高速缓存存储器能以极高的速率进行数据的访问,但其价格较高。通常在CPU和主存储器之间设置小容量的高速存储器,其容量小但速度快,主存储器速度较低但容量大。通过优化调度算法,系统的性能会大大改善,其存储系统容量与主存相当而访问速度近似Cache。在计算机的存储系统中,Cache是访问速度最快的层次。在CPU内部通常设有一级或二级Cache,在PC机的主板上设有片外Cache。5.4.1Cache存储器原理

1.原理

使用Cache改善系统性能的依据是程序的局部性原理,即程序的地址访问流有很强的时序相关性,未来的访问模式与最近已发生的访问模式相似。研究结果表明,在任一给定的时间间隔内,对不同地址区域的访问概率是不同的,有的区域高,有的区域低。而另一种可能则是访问概率随着离当前执行指令的远近而变化,离当前执行指令越近,其概率也越高。

根据局部性原理,把主存储器中访问概率高的内容存放在Cache中,当CPU需要读取数据据时就首先在Cache中查找是否有所需内容。如果有,则直接从Cache中读取;若没有,则再从主存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache中找到(称为命中,Hit),则可以大大提高系统性能。图5-14Cache的基本结构当CPU发出读请求时,将主存地址m位(或m位中的一部分)与Cache中某页的标识相比较,当比较结果相等时,说明相等的数已在Cache中,那么直接访问Cache就可以了,在CPU和Cache之间,通常一次传送一个字;当比较结果不相等时,说明需要的数据尚未调入Cache,那么就要把该数据所在的整个页从主存一次调进来。前一种情况称为访问Cache命中,后一种情况称为访问Cache不命中。页的大小称为页长。页长一般取一个主存周期所能调出的信息长度。Cache的容量和页的大小是影响Cache效率的重要因素,通常用“命中率”来测量Cache的效率。命中率指CPU所要访问的信息在Cache中的比率,而将所要访问的信息不在Cache中的比率称为失效率。一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显的增长。但随着技术的发展和芯片价格的下降,Cache的容量还是不断增大,已由几十千字节发展到几百千字节,甚至达到几兆字节。在从主存读出新的页调入Cache存储器时,若Cache中已满,那么就必须去掉一个旧的页,让位于一个新的页。这种替换应该遵循一定的规则,最好能使被替换的页是下一段时间内估计最少使用的。这些规则称为替换策略或替换算法,由替换部件加以实现。

Cache存储器中保存的字页是主存中相应字页的一个副本。如果程序执行过程中要对该字页的某个单元进行写操作,就会遇到如何保持Cache与主存的一致性问题。通常有两种写入方式:一种方式是暂时只向Cache存储器写入,并用标志加以注名,直到经过修改的字页被从Cache中替换出来时才一次写入主存;第二种方式是每次写入Cache存储器时也同时写入主存,使Cache和主存保持一致。前一种方式称为标志交换(Flag-Swap)方式。只有写标志“置位”的字页才有必要最后从Cache存储器一次写回主存,所以又称为“写回法”。这种方式写操作快,缺点是,在此以前的主存中的字页未经过及时修改而可能失效。后一种方式称为写通(Write-through),又称为直达法。这种方式实现简单,且能随时保持主存数据的正确性。但有可能要增加多次不必要的向主存的写入,向Cache存储器某一单元写入多少次,也要向主存相应单元写入多少次。另有一种写操作方法是,当被修改的单元根本就不在Cache时,写操作直接对主存进行,而不写入Cache存储器。

为了说明标记是否有效,每个标记还应该设置一个有效位,当机器刚加电启动时,总机的RESET信号或执行程序将所有标记的有效位置“0”,使标记无效。在程序执行过程中,当Cache不命中时逐步将指令页或数据页从主存调入Cache中的某一页,并将这一页标记中的有效位置“1”,当再次用到这一页中的指令或数据时,肯定命中,可直接从Cache中取值或取数。从这里也可看到,刚加电后所有标记有效位都为“0”,因此开始执行程序时,命中率较低。另外,Cache的命中率还与程序本身有关,即不同的程序,其命中率可能不同。5.4.2Cache存储器组织

1.地址映像

为了把信息放到Cache存储器中,必须应用某种函数把主存地址映像到Cache,称做地址映像。在信息按照这种映像关系装入Cache后,执行程序时,应将主存地址变换成Cache地址,这个变换过程叫做地址变换。地址的映像与变换是相关的。

下面将通过一个实例,说明Cache的几种地址映像并简要说明更新Cache内容的替换方法。

1)直接映像

如图5-15所示,Cache与主存之间采取直接映像方式,即主存中每一个页只能复制到某一个固定的Cache页中,可以同时复制16页。其映像的规律是:将主存的2048页按顺序分为128组,每组16页,分别与Cache的16页直接映像,即以16为模重复映像关系。主存的第0页、第16页、第32页、……、第2032页等,共128页,只能映像到Cache的第0页;主存的第1页、第17页、第33页、……、第2033页,只能直接映像到Cache第1页;主存第15页、第31页、……、第2047页等,只能映像到Cache第15页。图5-15直接映像的Cache组织访问时,给出20位主存地址,其中高11位为主存页号,低9位为页内地址。为了实现与Cache间的地址映像与变换,将高11位进一步分为两部分:高7位给出主存的组号,称为主存标志,选择0~127组中的某一组;低4位给出Cache的页号,选择组内16页的某一页。于是,20位主存地址的低13位也就是转换后的Cache地址。在Cache方面,为每一页设立一个7位的Cache标记。如果现在Cache第0页中复制的是主存的第16页的内容,其标记段为1,标志它现在与主存第一组相对应。因此,在访问主存时,只需比较主存地址中高7位的标记段与对应的Cache页的7位标记,如果二者相同,表明所需访问的主存页的内容现在复制于对应的Cache页中。

直接映像方式比较容易实现,但不够灵活,有可能使Cache的存储空间得不到充分利用。例如,需将主存第0页与第16页同时复制到Cache,由于它们只能都复制到Cache的第0页,即使Cache其他页空闲,也将有一个主存页不能写入Cache。

2)全相联映像

图5-16所示的映像方式称为全相联映像,即主存的每一页可映像到Cache的任一页。访问主存时,给出的20位地址分为两部分:高11页为主存页号,低9位为页内地址(与直接映像相同)。但Cache中每页的标记为11位,表示它现在所映像的主存页号(2×1024页之一)。图5-16全相联映像的Cache组织采用全相联映像方式,其优点是映像关系比较灵活,主存各页可以映像到Cache任一页,因此只要淘汰Cache中某一页的内容,即可调入任一主存页的内容。一旦不能直接从主存地址码中提取Cache页号,需将主存标记与Cache标记逐个比较,直接找到标记符合的页为止(访问Cache命中),或是全部比较后仍无符合的标记(访问Cache失败)。因此,全相联映像方式的速度很慢,失掉高速缓存的作用,因而不太实用。

3)组相联映像

一种折衷方案称为组相联映像方式,如图5-17所示。主存与Cache都分组,主存中一个组内的页数与Cache中的分组数相同。如果Cache只有一组,就是全相联映像方式。如果Cache分为16组,每组只有一页,就是直接映像方式。可以根据设计目标选取一个折衷方案,如图所示,主存分为256组,每组8页;Cache分为8组,每组2页。图5-17组相联映像的Cache组织映像规律是:主存中的各页与Cache的组号有固定的映像关系,但可以映像到对应的Cache组中的任何一页。主存第0、8、16、……页等,共256页,均映像于Cache第0组,但可以映像于该组内Cache的第0页或第1页。主存的第1、9、17、……页等,均映像于Cache的第1组,但可以映像于该组内Cache的第2页或第3页。

访问主存时,给出20位主存地址,它分为四部分。高7位连同1位Cache组内页号共8位,称为主存页标记,也就是主存的组号。Cache组号共3位,可选择8组之一。低9位为页内地址。因此主存地址的低13位给出了Cache地址,即Cache组号、组内页号、页内地址。

Cache每一页设有8位标记,填写所复制的主存页的组号,如果Cache第0页复制了主存的第8页(属第1组)内容,则在Cache第0页的标记中写入1。访问主存时,根据主存地址的中间二段共4位,找到Cache页,并将该页标记与主存地址中的主存页标记进行比较,判断是否是主存页的副本,即访问是否命中。

Cache中每组有若干可供选择的页,因而较直接映像方式灵活。每组页数有限,因而代价比全相联映像方式小。

2.替换算法

当新的主存页需要调入Cache存储器而它的可用位置又被占满时,就产生了替换算法问题。常用的替换算法有三类。

1)先进先出算法(FIFO)

FIFO算法思想是:按调入Cache的先后决定淘汰的顺序,即在需要更新时,将最先调入Cache的页面内容予以淘汰。这种方法比较简单,容易实现,系统开销小,但不一定合理,因为有些内容虽然调入较早,但可能仍需使用。

2)近期最少使用算法(LRU)

LRU算法是把每一组中最近使用少的页替换出去。这种替换算法需随时记录Cache存储器中各个字块的使用情况,以便确定哪个字块是最近使用最少的字块,LRU替换算法的平均命中率比FIFO算法要高,并且当分组容量加大时,能提高LRU替换算法的命中率,因而使用较多,但这种算法较前一种算法复杂。

3)随机替换法(RAND)

RAND算法不考虑使用情况,在组内随机选择一页来替换。其性能比根据使用情况的替换算法要差些。多层次Cache存储器中是将指令和数据存放在同一Cache中的。随着计算机技术的发展和处理速度的加快,存取数据的操作经常会与取指令的操作发生冲突,从而延迟了指令的读取。发展的趋势是将指令Cache和数据Cache分开而成为两个互相独立的Cache。在给定的Cache总容量的情况下,单一Cache可以有较高的利用率,因而在执行不同的程序时,Cache中指令和数据所占的比例是不同的,在单一Cache中,指令和数据的空间是可以自动调剂的,为了照顾速度,还是采取将指令Cache和数据Cache分开的方案。多层次Cache结构随着超大规模集成电路的发展,近年来新设计的微处理器都将Cache集成在片内,片内Cache的读取速度要比片外Cache快得多。Pentium微处理器的片内包含有8KB数据Cache和8 KB指令Cache,Cache行的长度为32 B,采用两路组相联组织。数据Cache有两个端口,分别为两个ALU交换数据,每个端口传送32位数据,也可以组合成64位数据,与浮点部件接口相连,4传送浮点数。数据Cache采取“写回”策略,即仅当Cache中的数据要调出且被修改过,才需要写回主存。

指令Cache只读不写,其控制比数据Cache简单。在Pentium处理器刚推出时,由于当时的技术限制,片内Cache的容量只有8 KB+8 KB,因此命中率比大容量Cache低,于是推出了二级Cache方案:片内为第一级Cache(L1)。片外为第二级Cache(L2),容量为256 KB或512 KB,也是采用两路组相联方案。

后来发展的PentiumMMX处理器的内部Cache增大到16 KB+16 KB,PentiumⅡ处理器又发展为片内二级Cache,L1为16KB+16KB,L2为256 KB或512 KB,性能显著增强。5.5半导体存储器与CPU的连接5.5.1需要考虑的问题

1.总线驱动在微型机系统中,CPU通过总线与存储器芯片、I/O接口芯片连接,而CPU的总线驱动能力是有限的,一般是带一个标准TTL门或20个MOS器件。由于存储器芯片多为MOS电路,在小型系统中,CPU可直接与存储器芯片连接,但与大容量的存储器连接时就应考虑总线的驱动问题。对于单向传送的地址和控制总线,常采用单向缓冲器(如74LS244,74LS367)或驱动器(如74LS373、Intel8282);对双向传送的数据总线,必须采用双向总线驱动器(如74LS245、Intel8286/8287)加以驱动。

2.时序配合

在微机工作过程中,CPU对存储器的读/写操作是最频繁的基本操作。因此,在考虑存储器与CPU连接时,必须考虑存储器芯片的工作速度是否能与CPU的读/写时序相匹配。这是关系到整个微机系统工作效率的关键问题。

关于存储器工作速度与CPU读/写时序的匹配问题,应从存储器芯片工作时序和CPU时序两个方面来考虑。对CPU来说,由于CPU的取指周期和读/写操作都有固定的时序,也就决定了对存储器存取速度的要求。具体来说,CPU在对存储器进行读操作时,在CPU发出地址和读命令后,存储器必须在规定的时间内给出有效数据(即将读出数据送入数据总线);而当CPU对存储器进行写操作时,存储器必须在写脉冲规定的时间内将数据写入指定的存储单元,否则就无法保证迅速准确地传送数据。所以,应考虑选择速度能与CPU相匹配的存储器芯片。若芯片已选定,则应考虑如何插入等待周期的问题。从存储器芯片来说,存储器芯片对输入信号的时序也是有严格要求的,而且不同的存储器件,其时序要求也不相同。为确保整个微机系统能正常高效地工作,要求给存储器提供的地址信号和控制信号必须满足存储器所规定的时序参数,其中最重要的参数是存取时间。存取时间是指存储器从接收到稳定的地址输入到读/写操作完成所需要的时间。具体来说,在存储器读周期中就是读取时间,在写周期中就是写入时间。存取时间与存储器件的制造工艺有关,一般双极型的器件速度快、功耗大,MOS型器件速度慢但功耗低。

图5-18所示为SRAM读周期的时序图。图5-18SRAM读周期的时序图图5-19SRAM写周期时序图需要指出的是,以上所讨论的读/写周期时间均指存储器本身能达到的最小时间要求,当把存储器连入系统构成一个完整的微机系统时,由于还要涉及到系统总线驱动电路和存储器接口电路延时等因素,所以,实际的读出/写入时间和读/写周期的时间要长得多。

除了上述两问题外,在考虑存储器与CPU的连接时,还应考虑到存储器的扩展、地址分配、片选以及数据线和控制线与CPU的连接问题等。图5-208K×8芯片组成8K×16芯片组称地址线A12~A0实现片内寻址,A14~A13实现片间寻址。

当存储器的单元数和位数都需要扩充时,如用8K×8芯片构成32K×16存储区,则需要4×2个芯片。可以先扩充位数,每2个芯片一组,构成4个8K×16芯片组;然后再扩充单元数,将这4个芯片组组合成32K×16存储区。图5-218K×8芯片扩充成32K×8芯片组

3.8086/8088与存储器连接

8086/8088有20位地址线,其中8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论