
内部存储器
-
2023年2月20日发(作者:)内部存储器——③主存储器
⼀、只读存储器ROM
即使电源断电,ROM中存储的信息也不会丢失。
(⼀)ROM的类型
ROM⼯作是只能读出,不能写⼊。把向ROM写⼊的过程称为对ROM进⾏编程,根据编程⽅法的不同,通常可分为以下⼏类:
(1)掩膜式ROM(MROM)
它的内容是由半导体制造⼚按⽤户提出的要求在芯⽚的⽣产过程中直接写⼊的。写⼊之后任何都⽆法改变。
(2)⼀次可编程ROM(PROM)
PROM允许⽤户利⽤专门的设备(编程器)写⼊⾃⼰的程序,⼀旦写⼊,其内容将⽆法改变。
(3)可擦除可编程ROM(EPROM)
EPROM不仅可以由⽤户利⽤编程器写⼊信息,⽽且可以对其内容进⾏多次修改。
EPROM⼜可分为两种:紫外线擦除(UVEPROM)和电擦除(EEPROM).
(4)闪速存储器
闪速存储器(FlashMemory,简称闪存)是⼀种允许在操作中被多次擦除或重写的只读存储器,它的主要特点是既可在不加电的情况长期保
存信息,⼜能在线进⾏快速擦除与重写。兼备了EEPROM和RAM的有点。
EPROM由以⾊列⼯程师DovFrohman发明,是⼀种断电后仍能保留数据的计算机储存芯⽚——即⾮易失性的(⾮挥发性)。它是
⼀组浮栅晶体管,被⼀个提供⽐电⼦电路中常⽤电压更⾼电压的电⼦器件分别编程。⼀旦编程完成后,EPROM只能⽤强紫外线照射来擦
除。通过封装顶部能看见硅⽚的透明窗⼝,很容易识别EPROM,这个窗⼝同时⽤来进⾏紫外线擦除。可以将EPROM的玻璃窗对准阳光直
射⼀段时间就可以擦除。
(1)简介
EPROM是⼀种具有可擦除功能,擦除后即可进⾏再编程的内存,写⼊前必须先把⾥⾯的内容⽤紫外线照射它的IC卡上的透明视窗的
⽅式来清除掉。这⼀类芯⽚⽐较容易识别,其封装中包含有“⽯英玻璃窗”,⼀个编程后的EPROM芯⽚的“⽯英玻璃窗”⼀般使⽤⿊⾊不
⼲胶纸盖住,以防⽌遭到阳光直射。
(2)特点
EPROM的编程需要使⽤编程器完成。编程器是⽤于产⽣EPROM编程所需要的⾼压脉冲信号的装置。编程时将EPROM的数据送到随
机存储器中,然后启动编程程序,编程器便将数据逐⾏地写⼊EPROM中。
⼀⽚编程后的EPROM,可以保持其数据⼤约10~20年,并能⽆限次读取。擦除窗⼝必须保持覆盖,以防偶然被阳光擦除。⽼式电脑
的BIOS芯⽚,⼀般都是EPROM,擦除窗⼝往往被印有BIOS发⾏商名称、版本和版权声明的标签所覆盖。EPROM已经被EEPROM取代
(电擦除只读寄存器)。
⼀些在快闪记忆体出现前⽣产的微控制器,使⽤EPROM来储存程序的版本,以利于程式开发;如使⽤⼀次性可编程器件,在调试时
将造成严重浪费。
(3)⼯作原理
EPROM是可编程器件,主流产品是采⽤双层栅(⼆层poly)结构,主要结构如图⼀所⽰。浮栅中没有电⼦注⼊时,在控制栅加电压时,
浮栅中的电⼦跑到上层,下层出现空⽳.由于感应,便会吸引电⼦,并开启沟道.如果浮栅中有电⼦的注⼊时,即加⼤的管⼦的阈值电压,沟
道处于关闭状态.这样就达成了开关功能。
如图⼆所⽰,这是EPROM的写⼊过程,在漏极加⾼压,电⼦从源极流向漏极沟道充分开启.在⾼压的作⽤下,电⼦的拉⼒加强,能量
使电⼦的温度极度上升,变为热电⼦(hotelectrON).这种电⼦⼏乎不受原⼦的振动作⽤引起的散射,在受控制栅的施加的⾼压时,热电⼦使
能跃过SiO2的势垒,注⼊到浮栅中.
在没有别的外⼒的情况下,电⼦会很好的保持着.在需要消去电⼦时,利⽤紫外线进⾏照射,给电⼦⾜够的能量,逃逸出浮栅。
EEPROM的写⼊过程,是利⽤了隧道效应,即能量⼩于能量势垒的电⼦能够穿越势垒到达另⼀边.
量⼦⼒学认为物理尺⼨与电⼦⾃由程相当时,电⼦将呈现波动性,这⾥就是表明物体要⾜够的⼩就pn结来看,当p和n的杂质浓度达到
⼀定⽔平时,并且空间电荷极少时,电⼦就会因隧道效应向导带迁移.电⼦的能量处于某个级别允许级别的范围称为\"带\",较低的能带称为价
带,较⾼的能带称为导带.电⼦到达较⾼的导带时就可以在原⼦间⾃由的运动,这种运动就是电流。
EEPROM写⼊过程,如图3所⽰,根据隧道效应,包围浮栅的SiO2,必须极薄以降低势垒。源漏极接地,处于导通状态.在控制栅上施加⾼
于阈值电压的⾼压,以减少电场作⽤,吸引电⼦穿越。
⼆、⾼速缓冲存储器
Cache是⼀种⾼速缓冲存储器,是为了解决CPU和主存之间速度不匹配⽽采⽤的⼀项重要技术。
1.访问局部性原理:
在程序执⾏过程中,处理器访问存储器中的指令和数据倾向于成块进⾏。程序通常包含许多迭代循环和⼦程序,⼀旦进⼊了⼀个循环
或⼦程序,则需要重复访问⼀⼩组指令,同样,对于表和数组的操作,包含存取⼀块块的数据字。在⼀长段时间内,使⽤的块是变化
的,⽽在⼀个⼩段时间内,处理器主要访问存储器中的固定块。
2.功能:
cache是⼀种⾼速缓冲存储器,是为了解决CPU和主存之间速度不匹配⽽采⽤的⼀项重要技术。cache是介于CPU和主存之间的⼩容
量存储器,但存取速度⽐主存快。
3.基本原理
Cache和主存都被分成若⼲个⼤⼩相等的块,每块由若⼲字节组成。由于cache的容量远⼩于主存的容量,所以cache中的块数要远
⼩于主存的块数,它保存的信息只是主存中最急需执⾏的若⼲块的副本。
CPU与Cache之间的数据交换是以块为单位的。当CPU读取主存中⼀个字时,便发出此字的内存地址到CACHE和主存。此时
CACHE控制逻辑依据地址判断此字当前是否在CACHE中,若是,为命中,此字⽴即传送给CPU;若⾮,为不命中则⽤主存读周期把此字
从内存读出送到CPU,与此同时,把含由这个字的整个数据块从主存读出送到CACHE中。
图5.4-1Cache原理图
三、虚拟存储器
虚拟存储器是⼀个容量⾮常⼤的存储器的逻辑模型,不是任何实际的物理存储器。
虚拟存储器指的是主存——外存层次。它以透明的⽅式给⽤户提供了⼀个⽐实际主存空间⼤得多的程序地址空间。
1.实地址与虚地址
⽤户编制程序时使⽤的地址称为虚地址或逻辑地址。其对应的存储空间称为虚存空间或逻辑地址空间;⽽计算机物理内存的访问地址
则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进⾏虚地址到实地址转换的过程称为程序再定位。
2.虚存的访问过程
每次访存是,⾸先判断该虚地址所对弈的部分是否在实存中,如果是,则进⾏地址转换并⽤实地址访问主存;否则,按照某种算法将
辅存中的部分程序调度进内存,再按同样的⽅法访问主存。
与虚存的异同
在三级存储体系中,cache-主存和主存-辅存这两个存储层次有许多相同点:
(1)出发点相同:⼆者都是为了提⾼存储系统的性能价格⽐⽽购置的分层存储体系,都⼒图使存储系统的性能接近⾼速存储器,⽽价格和
容量接近低速存储器。
(2)原理相同:都是利⽤了程序运⾏时的局部性原理吧最近常⽤的信息块从相对慢速⽽⼤容量的存储器调⼊相对⾼速⽽⼩容量的存储器。
(3)侧重点不同:cache主要解决主存与CPU的速度差异问题;⽽就性能价格⽐的提⾼⽽⾔,虚存主要是解决存储容量问题。
(4)数据通路不同:CPU与cache和主存之间均有直接访问通路,cache不命中时可直接访问主存,⽽虚存所⼀栏的辅存与CPU之间不存
在直接的数据通路,⽽主存不命中时只能通过调页解决,CPU最终还是要访问主存。
(5)透明性不同:cache的管理完全有硬件完成,对系统程序员和应⽤程序员均透明;⽽虚存管理由软件(操作系统)和硬件共同完成,
由于软件的介⼊,虚存对实现存储管理的系统程序员不透明,⽽⽀队应⽤程序员透明。
(6)未命中时的损失不同:由于主存的存取时间是cache的存取时间的5-10倍,⽽主存的存取速度通常⽐辅存的存取速度快上千倍,故主
存未命中时系统的性能损失要远岛屿cache未命中时的损失。
四、辅助存储器
辅助存储器⽤于存放当前不需要⽴即使⽤的信息,⼀旦需要,则与主存成批地交换数据,它作为主存的后备和补充,是主机的外部设备。
辅助存储器的特点是容量⼤、成本底、通常在断电后仍然保存信息。
辅助存储器的种类·磁表⾯存储器-磁盘-磁带光存储器光盘
磁盘由⼀组绕轴旋转的盘⽚组成,盘⽚的数量为1~20⽚。磁盘系统的转速⼀般在每分钟3600转到12000转之间,即3600rpm~
12000rpm。
1.辅助存储器的技术指标
(1)存储密度:单位长度或单位⾯积的磁层表⾯所能存储的⼆进制信息量。可⽤道密度和位密度来表⽰。
(2)磁道的单位长度所能记录⼆进制信息的位数为位密度或线密度。
(3)存储容量:磁盘的存储容量是指所能存储的⼆进制信息总量。⼀般⽤字节表⽰。
磁盘存储器含有格式化和⾮格式化容量两个指标。
格式化容量按某种特定的记录格式所能存储信息的总量。
⾮格式化量指磁记录表⾯全部可利⽤的磁化单元总数。⼀般格式化容量相当于⾮格式化容量的70%。
(3)寻址时间:包括两部分:⼀是找道时间;⼆是等待时间。
找道时间:磁头寻找⽬标磁道所需要的时间。
等待时间:磁头从⽬的道等待需要访问的扇区恰好旋转到它的正下⽅所经历的时间。
所需扇区转到磁头之下所需要的时间称为旋转时间。平均延迟是磁盘转半圈的时间,所以对⼤部分磁盘的平均旋转时间TAR为:
数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。
举例:
磁盘组有6⽚磁盘,每⽚有两个记录⾯,最上最下两个⾯不⽤,存储区域内径550px,外径825px,道密度为40道/cm,内层位密
度400位/cm,转速2400转/分。问:
(1)共有多少个柱⾯?
(2)盘组总存储容量是多少?
(3)数据传输率是多少?
(4)采⽤定长数据块记录格式,直接寻址的最⼩单位是什么?寻址命令中如何表⽰磁盘地址?
(5)如果某⽂件长度超过⼀个磁道的容量,应将它记录在同⼀个存储⾯上,还是记录在同⼀个柱⾯上?
解:(1)有效存储区域=16.5-11=5.5(cm)
道密度=40道/cm
40*5.5=220道
即220个柱⾯.
(2)内层磁道周长==2*3.14*11=69.08(cm)
每道信息量=400位/cm*69.08=27632=3454位
每⾯信息量=3454B*220=759880B
盘组总容量=759880*10=7598800B
(3)磁盘数据传输率Dr=rN=2400/60*3454=13816B/s
五、主存储器的基本组织
1.存储器的基本组织
(1)与CPU的连接:主要是地址线、控制线、数据线的连接。
(2)多个芯⽚连接:存储器容量与实际存储器的要求多有不符。如前所述存储器芯⽚有不同的组织形式,如1024*1、1024*4、
4096*8等;实际使⽤时,需进⾏字和位扩展(多个芯⽚连接),组成你所需要的实际的存储器,如1K*8、4K*8等的存储器。
2.位扩展法
说明:当芯⽚的容量和主存容量相同,⽽位数不⾜时,就要对位数进⾏扩展。
⽅法:将多⽚存储芯⽚的地址端、⽚选端和读/写控制端各⾃并联在⼀起,⽽他们的数据端分别引出,连到存储器不同位的数据总线上。只
加⼤字长,⽽存储器的字数与存储器芯⽚字数⼀致,对芯⽚没有⽚选要求。
某机字长32位,存储容量1MB,若按字编址,它的寻址范围是0~256kb
假设机器字长是n位,
按字编制:由于机器⼀字为n位,则⼀字也为nbits=n/8字节;
按半字编制:由于机器⼀字为n位,,则半字为n/2bits=n/16字节;
按双字编制:由于机器⼀字为n位,,则双字为n*2bits=n/4字节;
通过上述⽅法得出计算机的单位字/半字/双字,然后采⽤主存容量/单位=寻址范围了。
例如:
⽤8k*1的芯⽚组成8k*8的存储器需8个芯⽚
地址线——需13根8k=2^13所以需要13根地址线
数据线——8根8位意味着8根数据线
控制线——WR接存储器的WE
3.字扩展法
说明:当芯⽚字长与主存相同,⽽容量不⾜时,就需要⽤⼏⽚存储器芯⽚组成合起来对存储空间即地址空间进⾏扩展,称为字扩展。
⽅法:将各芯⽚的地址线,数据线、读/写线分别并联在⼀起,⽚选信号单独连接,⽤来区分各⽚地址,⽤⾼位地址经过译码⽽产⽣的输出
信号作为各个芯⽚的⽚选信号,⽤低位地址作为各芯⽚的⽚内地址。
例如:
⽤16K*8位的芯⽚组成64K*8位的存储器需4个芯⽚
地址线——共需16根
⽚内:(214=16K)14根,⽚选:2根
数据线——8根
控制线——WE
地址分配表
4.字位同时扩展法
⼀个存储器的容量假定为M×N位,若使⽤l×k位的芯⽚(l<M,k<N)需要在字向和位向同时进⾏扩展。此时共需要(M/
l)×(N/k)个存储器芯⽚。
其中,M/l表⽰把M×N的空间分成(M/l)个部分(称为页或区),每页(N/k)个芯⽚。
地址分配:
①⽤log2l位表⽰低位地址:⽤来选择访问页内的l个字
②⽤log2(M/l)位表⽰⾼位地址:⽤来经⽚选译码器产⽣⽚选信号。
例如:
⽤1k*4的存储器芯⽚2114组成2k*8的存储器
例:有若⼲⽚1M×8位的SRAM芯⽚,采⽤字扩展⽅法构成4MB存储器,问
(1)需要多少⽚RAM芯⽚?
(2)该存储器需要多少地址位?
(3)画出该存储器与CPU连接的结构图,设CPU的接⼝信号有地址信号、数据信号、控制信号MREQ和R/W#。
(4)给出地址译码器的逻辑表达式。
解:(1)需要4M/1M=4⽚SRAM芯⽚;(2)需要22条地址线(3)译码器的输出信号
(4)逻辑表达式为:
例设有若⼲⽚256K×8位的SRAM芯⽚,问:
(1)采⽤字扩展⽅法构成2048KB的存储器需要多少⽚SRAM芯⽚?
(2)该存储器需要多少字节地址位?
(3)画出该存储器与CPU连接的结构图,设CPU的接⼝信号有地址信号、数据信号、控制信号MREQ#和R/W#。
解:
(1)该存储器需要2048K/256K=8⽚SRAM芯⽚;
(2)需要21条地址线,因为221=2048K,其中⾼3位⽤于芯⽚选择,低18位作为每个存储器芯⽚的地址输⼊。
(3)该存储器与CPU连接的结构图如下。
例设有若⼲⽚256K×8位的SRAM芯⽚,问:
(1)如何构成2048K×32位的存储器?
(2)需要多少⽚RAM芯⽚?
(3)该存储器需要多少字节地址位?
(4)画出该存储器与CPU连接的结构图,设CPU的接⼝信号有地址信号、数据信号、控制信号MREQ#和R/W#。
解:采⽤字位扩展的⽅法。需要32⽚SRAM芯⽚。
存储容量=存储单元个数X存储字长
存储单元个数=2^地址总线数
存储字长=2^数据总线数
六、双端⼝存储器
双端⼝存储器由于同⼀个存储器具有两组相互独⽴的读写控制电路⽽得名。
1.逻辑结构
图5.3-1双端⼝存储器IDT7133逻辑框图
2.⽆冲突读写控制
当两个端⼝的地址不相同时,在两个端⼝上进⾏读写操作,⼀定不会发⽣冲突。当任⼀个端⼝被选中驱动时,就可对整个存储器进⾏
存取,每⼀个端⼝有⾃⼰的⽚选控制和输出驱动控制。读操作时,端⼝的打开输出驱动器,有存储矩阵读出的数据就出现在I/O线上。
3.有冲突读写控制
当两个端⼝同时存取存储器同⼀存储单元时,变发⽣读写冲突。为了解决此问题,特设置了标志。在这种情况下,⽚上的判断逻辑可
以决定对哪个端⼝优先进⾏读写操作,⽽对另⼀个被延迟的端⼝置标志(变为低电平),即暂时关闭此端⼝。换句话说,读写操作对变为低
电平的端⼝是不起作⽤的。⼀旦优先端⼝完成读写操作,才将被延迟端⼝的标志复位(变为⾼电平),开放此端⼝,允许延迟端⼝进⾏存
取。
七、交叉存储器
⼀个由若⼲个模块组成的主存储器是线性编址的。这些地址在各模块中如何安排,有两种⽅式:⼀种是顺序⽅式,⼀种是交叉⽅式。
1.顺序⽅式
设存储器容量为32个字,分成M0、M1、M2、M3四个模块,每个模块存储8个字,访问地址按顺序分配给⼀个模块后,接着⼜按顺
序为下⼀个模块分配访问地址,这样,存储器的32个字可由5位地址寄存器指⽰,其中⾼2位选择4个模块中的⼀个,低3位选择每个模块中
的8个字。
2.交叉⽅式
将4个线性地址0,1,2,3依次分配给M0、M1、M2、M3四个模块,再将线性地址4,5,6,7依次分配给M0、M1、M2、M3
四个模块……直到全部线性地址分配完毕为⽌。当存储器寻址时,⽤地址寄存器的低2位选择4个模块中的⼀个,⽽⽤⾼3位选择模块中的8
个字。
3.基本结构
主存被分为4个相互独⽴、容量相同的M0、M1、M2、M3四个模块。每个模块都有⾃⼰的读写控制电路、地址寄存器和数据寄存
器,各⾃以等同的⽅式与CPU传送信息。
CPU同时⽅位四个模块,由存储器控制部件控制他们分时使⽤数据总线进⾏信息传送。这样,对每⼀个存储模块来说,从CPU给出访
存命令知道读出信息仍然使⽤了⼀个存储周期时间,⽽对CPU来说,它可以在⼀个存取周期内连续访问四个模块。各个模块的读写将重叠进
⾏,所以多模块交叉存储器是⼀种并⾏存储器结构。
图5.3-2顺序⽅式和交叉⽅式的存储
假设模块⾃称等于数据总线宽度,模块存取⼀个字的存储周期为T,总线传送周期为,存储器的交叉模块数为m,那么为了实现流⽔线
⽅式存取,应当满⾜:T=mt
即成块传送可按间隔流⽔⽅式进⾏,也就是每经时间延迟后启动下⼀个模块。
m=T/r称为交叉存取度。交叉存储器要求其模块数必须⼤于或等于m,以保证启动某模块后经时间再次启动该模块是,他的上次存取操
作已经完成。这样,连续读取m个字所需的时间为:t1=T+(m-1)t
⽽顺序⽅式存储器连续读取m个字的时间为:t2=mT
⼋、相联存储器
是按内容访问存储器。相联存储器的基本原理是把存储单元所存内容的某⼀部分作为检索项(即关键字项),去检索存储器,并将存储器中
该检索项符合的存储单元内容进⾏读出或写⼊。
采⽤相联存储器可以极⼤地简化查找的形式和改进查找时间。
1.相联存储器的组成:检索寄存器、屏蔽寄存器、符合寄存器、⽐较线路、代码寄存器、存储体。
图5.3-3相联存储器逻辑图
九、命中率
在⼀个程序执⾏期间,设Nc表⽰完成存取的总次数,Nm表⽰主存完成存取的总次数,h定义为命中率。则有:
若tc表⽰命中时的CACHE访问时间,tm表⽰未命中时的主存访问时间,1-h表⽰未命中率,则CACHE/主存系统的平均访问时间ta为:
例如:CPU执⾏⼀段程序时,cache完成存取的次数为1900此,主存完成存取的次数为100次,已知cache存取周期为50ns,主存存取
后期为250ns,求cache/主存系统的效率和平均访问时间。
⼗、地址映射
为了把主存块放到cache中,必须应⽤某种⽅法把主存地址定位到cache中,称作地址映射。主要⽅式有:直接映射⽅式、相联映射⽅
式、组相联映射⽅式。
Cache的数据块的⼤⼩称为⾏,⽤Li表⽰,其中i=0,1,2,…m-1,共有m=2r⾏。主存的数据块⼤⼩称为块,⽤Bj表⽰,其中
j=0,1,2,…n-1,共有n=2s块。⾏与块是等长的,每个块(⾏)是由k=2w个连续的字组成,字是CPU每次访问存储器时可存取的最⼩单
位。
1.全相联映射⽅式
在全相联映象中,主存中任⼀个块能够映象到Cache中任意⼀个块的位置。将主存中的⼀个块的地址(块号)与块的内容(字)⼀起
存于cache的⾏中,其中块地址存于cache⾏的标记部分中。
主存地址长度=(s+w)位,寻址单元数=2s+w个字或字节,块⼤⼩=⾏⼤⼩=2w个字或字节,主存的块数=2s,Cache的⾏数=不由地址格
式确定,标记⼤⼩=s位
(a)全相联映射⽰意图
b)全相联cache的检索过程
图5.4-2全相联映射的cache组织
检索过程:CPU访存指令制定了⼀个内存地址(包括主存和cache),为了快速检索,指令中的块号与cache中所有⾏的标记同时在
⽐较器中进⾏⽐较。如果块号命中,则按字地址从cache中读取⼀个字;如果块号未命中,则按内存地址从主存中读取这个字。
全相联⽅式的主要缺点是⽐较器电路难于设计和实现,因此只适合⼩容量cache采⽤。
2.直接映射⽅式
⼀种多对⼀的映射关系,⼀个主存块只能拷贝到cache⼀个特定⾏的位置上。
在直接映象Cache中,地址被划分未标志、页号和偏移量。页号⽤于确定数据地址在Cache存储器中的物理位置。
直接映象⽅式:根据Cache的⼤⼩把主存分成若⼲个区,因此主存容量是Cache容量的若⼲倍。
i=jmodm
式中:m为cache的总⾏数
主存地址长度=(s+w)位,寻址单元数=2s+w个字或字节,块⼤⼩=⾏⼤⼩=2w个字或字节,主存的块数=2s,Cache
的⾏数=m=2r,标记⼤⼩=(s-r)位。
(a)直接映射⽰意图
(b)直接映射cache的检索过程
图5.4-3直接映射的cache组织
检索过程:Cache将s位的块地址分为两部分:r位作为cache的⾏地址,s-r位作为标记(tag)与块数据⼀起保存在该⾏。当CPU以
⼀个给定的内存地址访问cache时,⾸先⽤r位⾏号找到cache中的此⾏,然后⽤地址中的s-r位标记部分与此⾏的标记在⽐较器中做⽐较;
若相符即命中,在cache中找到所需要的块;⽽后⽤地址中的最低的w位读取所需要的字;若不符,则未命中,有主存读取所需要的字。
直接映射⽅式的优点是硬件简单,成本低。缺点是每个主存块只有⼀个固定的⾏位置可存放。效率低下。直接映射⽅式适合于需要⼤容量
cache的场合,更多的⾏数可以减少冲突的机会。
3.组相联映像
组相联映象提供了在性能和价格之间的⼀种良好平衡。组相联映象是直接映象和相联映象的结合。组内是全相联映象,组间是直接映象。
这种⽅式将cache分为u组,每组v⾏。主存块存放到哪个组是固定的,⾄于存到该组的哪⼀⾏是灵活的,即有如下函数关系:
m=u╳v
组号q=jmodu
块内存地址中s位块号划分成两部分:低序的d位(2d=u)⽤于表⽰cache组号,⾼序的s-d位作为标记(tag)与块数据⼀起存于
此组的某⾏中。
主存地址长度=(s+w)位,寻址单元数=2s+w个字或字节,块⼤⼩=⾏⼤⼩=2w个字或字节,主存的块数=2s,每组的⾏数
=k,第组的v=2d,Cache的⾏数=kv,标记⼤⼩=(s-r)位
(b)组相联cache的检索过程
图5.4-4组相联的cache组织
cache的每⼀⼩框代表的不是“字”⽽是“⾏”。当CPU给定⼀个内存地址访问cache时,⾸先⽤块号域的低d位找到cache的相应
组,然后将块号域的⾼s-d位与该组v⾏中的所有标记同时进⾏⽐较。哪⾏的标记与之相符,哪⾏即命中。此后再以内存地址的w位字域部分
检索此⾏的具体字,并完成所需要求得存取操作。如果词组没有⼀⾏的标记与之相符,即cache未命中,次数需要按内存地址访问内存。
举例:
⼀个组相联cache由64个⾏组成,每组4⾏,主存储器包含4K个块,每块128个字,请表⽰内存地址的格式。
解:块⼤⼩=⾏⼤⼩=2w个字=128=27,所以w=7
每组的⾏数=k=4
Cache的⾏数=kv=K╳2d=4╳2d=64,所以d=4
组数=v=2d=24=16
主存的块数=28=4K=22╳210=212,所以s=12
标记⼤⼩(s-d)位=12-4=8位
主存地址长度(s+w)位=12+7=19位
主存寻址单元数2s+w=219
⼗⼆、替换策略和写策略
1.替换策略
当⼀个新的主存块需要拷贝到cache,⽽允许存放此块的⾏位置都被其他主存块占满时,就要产⽣替换。
常⽤的替换算法主要有以下三种:
(1)最不经常使⽤(LFU)算法
LFU算法认为应将⼀段时间内被访问次数最少的那⾏数据换出。
(2)近期最少使⽤(LRU)算法
LRU算法将近期内长久未被访问过的⾏换出。
(3)随机替换
从特定的⾏位置中随机地选取⼀⾏换出即可。
图5.4-5
写
在Cache存储器与主存储器只能关键保持⼀致是很重要的。⼀种⽅法是只写Cache,在页替换时再传送给主存。另⼀种⽅法是只要对缓存
写操作,就要同时写⾄主存中。有三种写操作策略:分别是写操作策略、写回法、全写法写⼀次法。
写回法:当CPU写CACHE命中时,只修改CACHE的内容,⽽不⽴即写⼊主存。只有当此⾏被换出时才写回主存。如果CPU写CACHE未
命中,为了包含欲写字的主存块在CACHE分配⼀⾏,将此块整个拷贝到CACHE后对其进⾏修改。
全写法:当写CACHE命中时,CACHE与主存同时发⽣写修改,因⽽较好地维护了CACHE和主存内容的⼀致性。当写CACHE未命中时,
只能直接项主存进⾏写⼊。
写⼀次法:写命中与写未命中的处理⽅法与写回法基本相同,指⽰第⼀次写命中时同时要写⼊主存。
⼗三、虚拟存储器的管理⽅式
(⼀)页式虚拟存储器
页式虚拟存储系统中,虚地址空间被分成等长⼤⼩的页,称为逻辑页;主存空间也被分成同样⼤⼩的页,称为物理页。
1.页式虚存地址映射
虚地址分为两个字段:⾼字段为逻辑页号,低字段为页内地址(偏移量);
实存地址也分为两个字段:⾼字段为物理页号,低字段为页内地址。通过页表可以把虚地址转换成物理地址。
2.转换后援缓冲器(TLB)
由于页表通常在主存中,因⽽及时逻辑页已经在主存中,也⾄少要访问两次物理存储器才能实现⼀次访存,这将使虚拟存储器的存取
时间加倍。为了避免对主存访问次数的增多,可以对页表本⾝实⾏⽿机缓存,把页表中的最活跃的部分存放在⾼速存储器中。这个专⽤于页
表缓存的⾼速存储部件通常称为转换后援缓冲器(TLB),⼜称快表。⽽保存在主存中的完整页表则称为慢表。快表的作⽤是加快地址变
换。
地址变换时,根据逻辑页号同时查快表和慢表,当在快表中有此逻辑页时,就能很快的找到对应的物理页号。根据程序的局部性原
理,多数虚拟存储器访问都将通过TLB进⾏,从⽽有效降低访存的时间延迟。
图5.5-2TLB的地址映射过程
(⼆)段式虚拟存储器
在段式虚拟存储系统中,段是按照程序的逻辑结构划分的,各个段的长度因程序⽽异,虚拟地址由段号和段内地址组成。
在段式虚拟粗出系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。每个程序设置⼀个段
表,段表的每⼀表项对应⼀个段。每个表项⾄少包含三个字段:
(1)有效位:指明该段是否已经调⼊实存
(2)段起址:指明在该段已经调⼊实存的情况下,该段在实存中的⾸地址。
(3)段长:记录该段的实际长度。
段表本⾝也是⼀个段,可以存在辅存中,但⼀般是驻留在主存中。
针对每个虚地址,存储管理部件⾸先以段号s为索引访问段表的第s个表项。若该表项的有效位为1,则将虚地址的段内偏移量d与该表
项的段长字段⽐较:若偏移量较⼤,则说明地址越界,将产⽣地址越界中断;否则,将该表项的段起址与段内偏移量相加,求得主存实地址
并访存。如果该表项的有效位为0,则产⽣调页中断,从辅存中调⼊该页,并修改段表。
图5.5-3段式虚拟存储器的地址映射过程
优点:
(1)段的逻辑独⽴性使其易于编译、管理、修改和保护,便于多道程序共享;
(2)段长可以根据需要动态改变,允许⾃由调度,有效利⽤主存空间;
3.段页式虚拟存储器
段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。
实存被等分为页。每个程序则按逻辑结构分段,每段再按照实存的页⼤⼩分页。
在段页式虚拟存储系统中,每到程序均通过⼀个段表和多个页表进⾏两级再定位。段表中的每个表项对应⼀个段,每个表项有⼀个指
针指向该段的页表。页表则指明该段该段各页在主存中的位置,以及是否已装⼊,是否已修改等状态信息。
⼀个虚地址由段号、段内地址和页内偏移量构成。在多任务系统中,操作系统还会在每个虚地址中前增加⼀个表明该程序再系统的序号的
基号。
程序对主存的调⼊调出是按页⾯进⾏的,但它⼜可以按段实现共享和保护。因此,它可以兼取页式和段式系统的优点。它的缺点是在
地址映象过程中需要多次查表。⽬前,⼤中型机⼀般都采⽤这种段页式存储管理⽅式。
举例:
今假设有三道程序(⽤户标志号为A,B,C),其基址寄存器内容分别为SA,SB,SC,逻辑地址到物理地址的转移过程见图5--7。
在主存中,每道程序都有⼀张段表,A程序有4段,C程序有3段。每段应有⼀张页表,段表的每⾏就表⽰相应页表的起始位置,⽽页表内的
每⾏即为相应的物理页号。
地址转换过程如下:
(1)根据基号C,执⾏SC(基址寄存器内容)加1(段号)操作,得到段表相应⾏地址,其内容为页表的起始地址b。
(2)执⾏b(页表起始地址)+2(页号),得到物理页号的地址,其内容即为物理页号10。
(3)物理页号与页内地址拼接即得物理地址。
虚存的替换算法
常⽤的替换算法有FIFO算法、LRU算法、LFU算法等。
虚拟存储器的替换算法与cache的替换算法不同的是:
(1)cache的替换全部靠硬件实现,⽽虚拟存储器的替换有操作系统的⽀持。
(2)虚存缺页对系统性能的影响⽐cache未命中要⼤得多,因为调页需要访问辅存,并且要哦进⾏任务切换。
(3)虚存页⾯替换的选择余地很⼤,属于⼀个进程的页⾯都可替换。