第08章 高速缓冲存储器和虚拟存储器
第8章_虚拟存储管理

8.2 .2 页面分配策略
内存页面分配策略: 平均分配 :将内存中的所有可供分配的物理块,
平均分配给各个进程。这是最简单的分配方式, 它看起来很公平,但实际上很不公平,因为它没 有考虑进程的大小等因素。 按进程大小比例分配 :系统按进程的大小按比例 分配物理块。若m为可用物理块总和,S为各进程 页面总和,si为第i个进程的页面数,则为第i个进 程分配的页面数为: s ai INT ( i m) S
5
0
5
1
0 5
2
1 0 +
0
2 1 -
3
0 2 +
0
3 2 -
4
0 3 +
2
4 0 +
3
2 4 +
0
3 2 +
3
0 2 -
2
3 0 -
1
2 3 +
2
1 3 -
0
2 1 +
1
0 2 -
5
1 0 +
0
5 1 -
1
0 5 -
+
+
+
缺页中断次数=12 缺页中断率=12/20=60%
8.2 .4 页面置换算法
访问字段A:用于记录该页在一段时间内被访问的 次数,或最近已有多长时间未被访问,供置换算法 选择页面时参考;
8.2 .1 请求分页式存储管理的基本概念
修改位M:用于记录该页在调入内存后是否被修 改过。由于内存中的每一页都在外存上保留一个副 本,因此,若未被修改,在置换该页时就不需将该 页写回到磁盘上,以减少系统的开销和启动磁盘的 次数;若已被修改,则必须将该页重写回磁盘上, 以保证磁盘上所保留的始终是最新副本。
虚拟存储器

程序只能访问同层或更外层的数据 程序可以调用同层或更内层的服务 CHM(change-mode,改变模式) REI(return from exception or interrupt,从异常
或中断返回)
4MB、16MB、256MB R4000( MIPS 于1991年10月1日发布的64位CPU)
支持7种:4KB到16MB
26
页面大小与缺页率
缺页率 缺页次数/内存访问次数 缺页的平均时间间隔
页面大小会影响缺页率 页面很小:每个进程的内存页较多,通过调页很快适 应局部性原理的要求,缺页率低 页面很大:进程使用的大部分地址空间都在内存,缺 页率低 页面中等大小:局部性区域只占每页的较小部分,缺 页率高
OS将页面调入内存并更新页表,进而形成物理地址
24
TLB的一些细节
逻辑地址中的虚页号与TLB表项的匹配检查由硬件 实现,是并行的——关联映射
TLB中每个表项的页号部分必须包含虚页号的所有 域,只有整个虚页号匹配时才算命中
TLB应随着进程的切换而刷新:
提供一条清除TLB中有效位的机器指令 扩充TLB使包含一个进程标识域,同时增加一寄存器
除一些老式PC操作系统(如MS-DOS)和专用系统外, 现在所有重要的OS均支持虚存
软件支持
OS必须管理内存与外存之间的页/段/段&页的交换 调页策略、放置策略、替换策略 驻留集和工作集管理 清除(回写)策略、加载(并发度)控制
11
8.1.2 虚拟分页
12
页表
页表项(Page Table Entry,简称为PTE)的一般内容: Present:在/不在内存 Modified:有没有被修改 Protection:保护码,1位或多位(rwe:读/写/执行) Referenced:有没有被访问 Cache:是否禁止缓存
组成原理课件 - 虚拟存储器

速4.度在虚拟存储器中,当程序正在执行时,由( )完成地址映
射A、程序员
B、编译器
D.装入程序
D.操作系统
5.若某单片机的系统程序不允用户在执行时改变,则可以选用
( )作为存储芯片。
A、SRAM
B、flash
C.Cache
Memory D.辅助
存储器
6.程序访问的局限性是使用(
)依据。
A、缓冲
B、
3.段页式虚拟存储器
它是将存储空间按逻辑模块分成段,每段以分成若干个页,这 种访问通过一段表和若干个页表进行。段的长度必须是页长的 数倍,段的起点必须是某一页的起点。在段页式虚拟存储器中 ,拟地址被分为基号、段号、页号、页内地址在进行地址映象 时:先根据基号查找段基址表,从表中查出段表的起始地址, 然后用号从段表中查找该 段的页表的起始地址,然后根据段内 页号在页中查找该页在内存中的起始地址(实页号),同时判 断该段是否入内存,如果该段已装入内存,则从段表中取出实 页号,与页内址字段拼成被访问数据的物理地址。
谢谢
一、填空
1、Cache是指(
)。
2.虚拟存储器是建立在( )结构上, 用来解决( )的问题
3.将辅助存储器当作主存来使用,从而扩大程序可访问的存储空 间,这样的存储结构称为( )。
4、地址映象(射)用来确定( )地址和( )地址之间的逻辑 关系。
5.常用的地址映射方法有( )、( )、组相联映射三种。
2、在主存和CPU之间增加Cache的目的是
)。
(A、增加内存容量
B、解决CPU与内存之间的速度匹配问
C.提高内存的可靠性 题 D.增加内存空量,同时加快存取速
3.采用虚拟存储器的主要度目的是(
高速缓冲存储器

高速缓冲存储器(Cache)
–Cache的写操作
Cache中的块是主存中相应块的副本。如果程序执
行过程中要对某块的某单元进行写操作,有两种方法:
(1)标志交换方式(写回法):即只向Cache写入,
并用标志注明,直至该块在替换中被排挤出来,才将该
块写回主存,代替未经修改的原本;
12/
高速缓冲存储器(Cache)
(t,T)表示,也称之为工作集合。 根据程序访问局部 化性质,W(t,T)随时间的变化是相当缓慢的。把这 个集合从主存中移至(读出)一个能高速访问的小容量 存储器内,供程序在一段时间内随时访问,大大减少程
序访问主存的次数,从而加速程序的运行。
6/
高速缓冲存储器(Cache)
(2)这个介于主存和CPU之间的高速小容量存储器就称 为Cache。所以,程序访问局部化性质是Cache得以实现 的原理基础,而高速(能与CPU匹配)则是Cache得以
高速缓冲存储器(Cache)
–Cache的读操作
CPU进行读存储器作时,根据其送出的主存地址区分两 种不同情况: (1)一种是需要的信息已在Cache中,那末直接访问 Cache就行了; (2)另一种是所需信息不在Cache中,就要把该单元 所在的块从主存调Cache。后一种情况又有两种实现方 法:一种是将块调入Cache后再读入CPU;另一种读直 达(读直达通路)。在调入新的块时,如果Cache已占 满,这就产生替换,由替换控制部件按已定的替换算法 实现。
如果进程切换发生在用户程序因为系统运行管理程
序、处理I/O中断或时钟中断时,QSW值越小,表明
由管理程序切换至原来的用户程序越块,Cache中
(2)写直达法:即在写入Cache的同时,也写入
组成原理课件 - 高速缓冲存储器

主存地址
访问主存 替换Cache 替换机构 块号 N
调入?
块内地址
N
命中?
地址映象表 Y 块号 块内地址
主 存
访问主存装入Cache 数据直接通路
Y CACHE
Cache 地址
数据总线
CPU
在访问存储器时,根据主存地址的低位部分在地址映象表中 查找标志并与主存地址的高位部分进行比较,相同命中,将高速 CACHE中数据送CPU,不相同从主存调入数据,再送入CPU。 地址变换和替换算法均用硬件实现,CACHE对程序员是透明的。
2、全相联映象:每个主存块可映象到任何CACHE块的地址映象。
主存块号
第0块 第1块 ……. 第N-1块 第M(N-1) 第0块 第1块
块内地址
不相等 块失效
找 1 2 主存块号标志
CACHE块号
在访问操作时,根据地址中的块号在块表中查找是否有相同的主存 块号。如果有,则表示CACHE命中,将对应的CACHE块号取出并 对CACHE进行访问,如果没有,则CACHE没有命中,需对主存访 问,在将主存中的块调入CACHE中的同时将主存块号写入块表中, 以改变地址映象关系。 特点:是最灵活的地址映象方式,地址是映象算法复杂,需要采用 相联存储器,适合小容量的CACHE,速度慢。
主存块号 主存储器 0 1 2 : : : : : : : : : : : : 字块0 字块1 字块2
标记 0 1
Cache
: : : : 字块0 字块1
2c-1
~ ~
: : : :
~ ~
字块C-1
~ ~ 2m-1
~ ~
字块M-1 M= 2m
C = 2c
(1)CACAHE命中:CPU访问的数据或指令已存在于CACHE中。
数据库系统工程师知识点精讲之高速缓冲存储器

数据库系统工程师知识点精讲之高速缓冲存储器高速缓冲存储器Cache的功能是提高CPU数据输入输出的速率,突破所谓的“冯•诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。
高速存储器能以极高的速率进行数据的访问,但因其价格高昂,如果计算机的内存完全由这种高速存储器组成则会大大增加计算机的成本。
通常在CPU和内存之间设置小容量的高速存储器Cache。
Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,仿佛其存储系统容量与内存相当而访问速度近似Cache。
1.Cache基本原理使用Cache改善系统性能的依据是程序的局部性原理。
依据局部性原理,把内存中访问概率高的内容存放在Cache中,当CPU需要读取数据时首先在Cache中查找是否有所需内容,如果有,则直接从Cache中读取;若没有,再从内存中读取该数据,然后同时送往CPU和Cache。
如果CPU需要访问的内容大多都能在Cache中找到(称为访问命中),则可以大大提高系统性能。
如果以h代表对Cache的访问命中率(“1-h”称为失效率,或者称为未命中率),t1表示Cache的周期时间,t2表示内存的周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为t3,则:计算机硬件基础系统的平均存储周期与命中率有很密切的关系,命中率的提高即使很小也能导致性能上的较大改善。
例如:设某计算机主存的读/写时间为100ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为10ns,取指令的命中率为98%,取数的命中率为95%。
在执行某类程序时,约有1/5指令需要存/取一个操作数。
假设指令流水线在任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为:(2%×100ns+98%×10ns)+1/5×(5%×100ns+95%×10ns)=14.7ns2.映射机制当CPU发出访存请求后,存储器地址先被送到Cache控制器以确定所需数据是否已在Cache中,若命中则直接对Cache进行访问。
高速缓冲存储器(Cache)

高速缓冲存储器 (Cache)
1.1 Cache的结构和工作 原理
如图6-18所示为Cache的结构和工作原理图。
图6-1Cache存储体:存放由主存调入的指令与数据块。 (2)地址转换部件:建立目录表以实现主存地址到缓存地址 的转换。 (3)替换部件:在缓存已满时按一定策略进行数据块替换, 并修改地址转换部件。
图6-21 例6.2.3的地址格式、目录表格式
2.直接相联方式
地址映象规则:主存储器中一块只能映象到Cache的一个特定的块中。
(1)主存与缓存分成相同大小的数据块。 (2)主存容量应是缓存容量的整数倍,将主存空间按缓存的容量 分成区,主存中每一区的块数与缓存的总块数相等。 (3)主存中某区的一块存入缓存时只能存入缓存中块号相同的位 置。
数字电子技术
图6-19 Cache的全相联映像方式
如图6-20所示为全相联地址转换图。
图6-20 全相联地址转换图
例1.1 某处理器的主存容量为1 MB,Cache的容量为32 KB,每块 的大小为16个字,试画出主、缓存的地址格式、目录表格式,并 计算每块的容量。
解: 如图6-21所示画划出主、缓存的地址格式、目录表格式。
3.组相联方式
组相联的映象规则主要包括以下几点。
(1)主存和Cache按同样大小划分成块。 (2)主存和Cache按同样大小划分成组。 (3)主存容量是缓存容量的整数倍,将主存空间按缓冲区的大 小分成区,主存中每一区的组数与缓存的组数相同。 (4)当主存的数据调入缓存时,主存与缓存的组号应相等,也 就是各区中的某一块只能存入缓存的同组号的空间内,但组内 各块地址之间则可以任意存放,即从主存的组到Cache的组之间 采用直接映象方式;在两个对应的组内部采用全相联映象方式。
虚拟存储器

虚拟存储器
虚拟出一个容量极大的内存储器
01 作用
目录
02 设置
03 调整分页位置
04 使用技巧
05 相关
பைடு நூலகம்
06 替换方法
07 虚实地址
09 页式调度 011 段页式调度
目录
08 异构体系 010 段式调度 012 变换算法
虚拟存储器(Virtual Memory):在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能, 能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小 无关,而受限于计算机的地址结构和可用磁盘容量。根据所用的存储器映像算法,虚拟存储器管理方式主要有段 式、页式、和段页式三种。
虚拟存储器(2)单独建立一个空白分区,在该分区设置虚拟内存,其最小值设置为物理内存的1.5倍,最大值 设置为物理内存的3倍,该分区专门用来存储页面文件,不要再存放其它任何文件。
相关
虚拟存储器
virtual memory
为了给用户提供更大的随机存取空间而采用的一种存储技术。它将内存与外存结合使用,好像有一个容量极 大的内存储器,工作速度接近于主存,每位成本又与辅存相近,在整机形成多层次存储系统。
如果你的硬盘够大,那就请你打开”控制面板“中的“系统”,在“性能”选项中打开“虚拟内存”,选择 第二项:用户自己设定虚拟内存设置,指向一个较少用的硬盘,并把最大值和最小值都设定为一个固定值,大小 为物理内存的2倍左右。这样,虚拟存储器在使用硬盘时,就不用迁就其忽大忽小的差别,而将固定的空间作为虚 拟内存,加快存取速度。虚拟内存的设置最好在“磁盘碎片整理”之后进行,这样虚拟内存就分布在一个连续的、 无碎片文件的空间上,可以更好的发挥作用。
高速缓冲存储器

映象与转换
映象是指某一数据在内存中的与在缓冲中的,两者之间的对应关系。下面介绍三种映象的方式。 1.全相联方式 映象规则:主存的任意一块可以映象到Cache中的任意一块 (1)主存与缓存分成相同大小的数据块。 (2)主存的某一数据块可以装入缓存的任意一块空间中。如果Cache的块数为Cb,主存的块数为Mb,则映象 关系共有Cb×Mb种。 目录表存放在相关(联)存储器中,其中包括三部分:数据块在主存的块、存入缓存后的块、及有效位(也 称装入位)。由于是全相联方式,因此,目录表的容量应当与缓存的块数相同。 优点:命中率比较高,Cache存储空间利用率高。 缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。 2.直接相联方式 映象规则:主存储器中一块只能映象到Cache的一个特定的块中。
读取命中率
读取命中率
CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才 访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1Cache的命中率为80%。也就是说CPU从L1Cache中 找到的有用数据占数据总量的80%,剩下的20%从L2Cache读取。由于不能准确预测将要执行的数据,读取L2的命 中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一 个相当小的比例了。在一些高端领域的CPU中,我们常听到L3Cache,它是为读取L2Cache后未命中的数据设计 的—种Cache,在拥有L3Cห้องสมุดไป่ตู้che的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
主-辅存存储层次
主-辅存存储层次
存储器和高速缓存技术ppt文档

3.地址译码器
由于存储器系统是由许多存储单元构成的,每个存储单元一般 存放8位二进制信息,为了加以区分,我们必须首先为这些存储单 元编号,即分配给这些存储单元不同的地址。地址译码器的作用 就是用来接受CPU送来的地址信号并对它进行译码,选择与此地 址码相对应的存储单元,以便对该单元进行读/写操作。
(3)按在微机系统中位置分类
分为主存储器(内存)、辅助存储器(外存)、缓冲存 储器等,主存储器又称为系统的主存或者内存,位于
系统主机的内部,CPU可以直接对其中的单元进行读/ 写操作;辅存存储器又称外存,位于系统主机的外部, CPU对其进行的存/取操作,必须通过内存才能进行; 缓冲存储器位于主存与CPU之间,其存取速度非常快, 但存储容量更小,可用来解决存取速度与存储容量之 间的矛盾,提高整个系统的运行速度。
3.地址译码器(续)
0
A5
0 1
存储单元
• 单译码A结2 构行
1
A4 A3 A2 A1 A0
译 码 器
63
• 双u 双译译码AA码结10 可构简译码化7 芯片6设4个计单元
64个单u元主要采用的译码0 结构1
7
列译码
单译码 双译码
A3A4A5
4.1.2 存储器的系统结构
4.片选与读/写控制电路 片选信号用以实现芯片的选择。对于一个芯片 来讲,只有当片选信号有效时,才能对其进行读 /写操作。片选信号一般由地址译码器的输出及 一些控制信号来形成,而读/写控制电路则用来控 制对芯片的读/写操作。 5.I/O电路 I/O电路位于系统数据总线与被选中的存储单元 之间,用来控制信息的读出与写入,必要时,还 可包含对I/O信号的驱动及放大处理功能。
掩膜式ROM 一次性可编程ROM(PROM) 紫外线擦除可编程ROM(EPROM) 电擦除可编程ROM(EEPR
虚拟存储和高速缓冲存储器

工作原理
虚拟存储器是由硬件和操作系统自动实现存储信息调 度和管理的。 它的工作过程包括5个步骤:
①
中央处理器访问主存的逻辑地址,以确定该信息是否存放在主存内。
②
如该信息已在主存内,则转而执行④;如果该信息不在主存内,则 检查主存中是否有空闲区,如果没有,便将某个暂时不用的调出送 往辅存,以便将这组信息调入主存。 从辅存读出所要的信息,并送到主存空闲区。
最不经常使用算法(LFU)
LFU算法认为应将一段时间内被访问次数最少的那行数 据换出。为此每行设置一个计数器。新行建立后从0开始计 数,每访问一次,被访问行的计数器加1。当需要替换时, 对这些特定行的计数器进行比较,将计数值最小的换出,同 时将这些特定行的计数器都清零。
缺点:
这种算法将计数周期限定在这些特定行两次替换之间的 间隔内,不能严格反映近期访问情况。
二级缓存
二级缓存是为了协调一级缓存与内存之间的速度。它 比一级缓存速度更慢,容量更大,主要就是做一级缓存 和内存之间数据临时交换的地方用。
三级缓存
三级缓存是为读取二级缓存后未命中的数据设计的—种 缓存。在拥有三级缓存的CPU中,只有约5%的数据需要 从内存中调用,这进一步提高了CPU的效率。
三级缓存的性能影响
虚拟存储器发展背景
主存储器通常用动态随机存储器(DRAM)实现,它的存 储容量相对比较小,速度比较快,单位容量的价格比较贵。
虚拟存储器由主存储器和联机工作的外部存储器共同组成。 外部存储器通常为磁盘存储器,它的存储容量很大,与主 存储器相比,速度很低,单位容量的价格很便宜。
由于早起计算机系统的存储容量,特别是内存容量成本非常高、容 量也很小,对于大型应用程序或多程序应用就受到了很大的限制。为 了克服这样的限制,人们就采用了虚拟存储的技术。
计算机系统结构课件-虚拟存储器

13
页式存储管理
页式存储管理是把虚拟空间和主存空间都分成大 小相同的页(为二的整数幂个字), 并以页为单位进行虚存与主存间的信息交换。 此时虚存地址和主存地址分别被分为 虚存页号、页内地址和主存页号、页内地址, 虚、实二页号会不同,但使用相同的页内地址。
与段式存储管 理不一样,页不是程序本身的结构 特性,而是从管理的角度人为划分的结果。
虚拟存储器
1
内容提要
• 虚拟存储器的目的
– 给程序员提供比实际主存大得多的地址空间
• 虚拟存储器的管理
– 段式管理、页式管理、段页式管理
• 段页式管理的地址映射 • Pentium的虚拟存储管理
2
存储容量需求
• 应用需求
– 海量数据处理
• 天气预报、地震预测、石油勘探
– 多媒体信息处理
• 语音、图形、图象
CPU
Translation with a TLB
hit
VA
PA
TLB Lookup
Cache
miss
Main Memory
miss
hit
Translation
1/2 t
data t
20 t18
TLB 设计问题
• 访问频繁:速度是第一位的
• TLB 缺失将造成:
Virtual page
number
CPU 生成实地址
23
页面失效处理程序 操作系统指示CPU访问辅存
CPU 唤醒输入/输出硬件
将该页从辅存调入到主存
主存已满?
是
否
进行页面替换
修改页表
返回调用指令
24
段页式虚拟存储器管理
是段式虚拟存储器和页式虚拟存储器的综合。 它先把程序按逻辑单位分为段,再把每段分成 固定大小的页。操作系统对主存的调入调出是 按页面进行的,但它又可以按段实现共享和保 护,可以兼取页式和段式系统的优点。其缺点 是需要在地址映射过程中多次查表。其地址映 射通过一个段表和一组页表来进行。
chap8 虚拟存储器

页面大小的选择
• 设系统内每个进程的平均长度为s,页面大 小为p,每个页表项需e个字节,内存大小 为m。
– 内存中的进程数为:m/s – 页面数为:m/p
– 页表项占用空间:me/p
– 每进程碎片的平均大小:p/2 – 总碎片空间为:(p/2)×(m/s)=pm/2s
– 分页系统总开销:pm/2s+me/p
18/96
具有快表的地址变换过程
• 首先通过页表查看该页是否在主存中
– 若不在主存中,则发生缺页中断
• 更新TLB,使其包含新的页表项
19/96
缺页中断处理
OS通知CPU 从磁盘读取该页 否 CPU激活I/O硬件
开始 CPU检查TLB 是
页表项在 TLB中?
该页从磁盘 传送到主存中
访问页表
主存满? 否 页表更新
34/96
缺段中断处理流程
缺段中断处理 阻塞请求进程 淘汰实段以形成合适的空闲区 N N 空闲区容量总和能否满足
内存中有合适的空闲区吗? Y
从外存读入缺段 修改段表及内存空闲区链
Y
拼接以形成合适的空闲区
唤醒请求进程
返回
35/96
缺段中断涉及的几个问题
• 内存管理:请求分段的内存管理与与分区 管理类似,采用连续内存管理方式
10/96
页表中的修改位
• 修改位用于标识该页自调入内存后是 否被修改过
• 若没被修改过,则该页被换出内存时, 不必回写到磁盘
11/96
页表项
虚拟地址 页 号 偏移量
页表项 S M A 其它控制位 外存地址 S 页面存在位 M 修改位 A 访问字段
12/96
物理块号
物理地址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优淘汰算法(OPT)
系统预测作业今后要访问的页面,淘汰页是将来不被访 问的页面或者在最长时间后才被访问的页面。它保证有最少 的缺页率,但它实现困难,只能通过理论分析用来衡量其它 算法的优劣
改写主存储器的策略
若 CPU 改写了 Cache 一单元内容(写命中)后且尚未 改变主存相应单元内容,则出现数据不一致性。有两种 解决办法: 直接改写主存单元内容(Write Through写 直达):
多路组相联映像方式特点: 折衷方案。组间为全相联,组内为直接映像。 集中了两个方式的优点。成本也不太高。 内存与CACHE关系,有限度的多对多。
最常用的CACHE映像方式
两路组相联映像方式
有 效 位 标志
比较
CACHE 比较
主存地址
主存字 块标记
译码
数 据
主 存 储 器
数据
译码
组内地址
cache的容量与命中率的关系
100% 80% 60% 40% 20% 0% 1 8 16 32 64 128 256 512
Hit Rate
Cache Size in KB
cache line size与缺失率的关系
多级的cache结构与命中率的关系
为增加计算机系统中的cache容量,通常可以在已有的 cache存储器系统之外,再增加一个容量更大的cache。 此时原有cache为第一级cache(例如奔腾机微处理机芯 片内的cache),新增加的cache则成为第二级的cache。 第二级cache的容量比第一级cache的容量要大得多,在 第一级cache中保存的信息也一定保存在第二级cache中, 但保存有比第一级cache中更多的信息。当CPU访问第一 级cache出现缺失情况时,就去访问第二级cache。 若第一级、第二级cache的命中率为90%,则它们合起 来后的命中率为1-(1-90%)×(1-90%)=99%, 而不会是81%。
译码 CPU
主存字块 标记
组内地址
块内 地址
多路组相联硬件实现举例
三种映像方式比较
全相联映射
主存中的一块可以映射到Cache中任何一个位置,灵活、命中率高, 但是使用价格比较高 主存中的一块只能映射到Cache中唯一的一个位置,命中率低,使 用价格低 定位时,不需要判断,只需替换 主存中的一块可以选择映射到Cache中多个位置,适当的价格和命 中率。 从主存中取出新块 为了腾出Cache空间,需要替换出一个Cache块 不唯一,则需要判断应替出哪块
8. 1 高速缓冲存储器(Cache)
目的:就是在性能上使主存储器的平均读出时间尽 可能的接近与Cache的读出时间。要实现这个目的, 就是要将CPU将要读取的主存单元内容先预先读到 Cache中。 由于程序编制的局部性,即程序总是按顺序编写 和编址的,指令按地址顺序存放在存储器中;一条指 令执行后一般是执行紧接着的那条指令,只有遇到 转移指令时才会跳到另一个区域,但跳转之后又会 顺序执行;还有就是当执行一个循环程序时,会在一 块小的区域内重复循环执行若干指令;对于存储的数 据也是如此。按照一定的预读算法,可以实现很高 的Cache命中率。
如果CPU写内存的数据不在Cache中(写缺失)那么怎么 处理呢?
CACHE 接入系统的体系结构
侧接法:像入出设备似的连接到总线上,优点是结构 简单,成本低,缺点是不利于降低总线占用率。
MEMORY
Bus Master 1
CPU
总 线
CCACHE 接入系统的体系结构
使用成本太高
全相联映像方式
有 效 位 标志 数据
数 据 CACHE
比 较
主 存 储 器
主存字块标记
主存地址
译码
CPU
主存字块标记 块内地址
全相联硬件实现举例
主存地址
31 30 ……… 3 2 1 0
主存字块标记
30
块内地址
有效位 标记
0
数据
有效位 标记
1
数据
…… ……
有效位 标记
1023
数据
=
=
第8章
高速缓冲存储器和虚拟存储器
本章主要内容
高速缓冲存储器(Cache) 高速缓存的基本运行原理、高速缓存的3种映像 方式、高速缓存使用中的问题 虚拟存储器 虚拟存储器概述、段式存储管理、页式存储管理
程序的局部性原理
程序在一定时间段内通常只访问较小的地址空间
访问概率
地址空间
两种局部性:时间局部性和空间局部性
8. 1 高速缓冲存储器(Cache)
用途:设置在 CPU 和 主存储器之间,完成高速 与 CPU 交换信息,尽量避免 CPU不必要地多次 直接访问慢速的主存储器,从而提高计算机系统 的运行效率。 实现:这是一个存储容量很小,但读写速度更快 的,以 关联存储器方式 运行、用静态存储器芯 片实现的存储器系统。 要求:有足够高的命中率,既当 CPU需用主存中 的数据时,多数情况可以直接从CACHE中得到, 称二者之比为命中率。
利用率低,命中率低,效率较低
直接映像方式
CACHE
有 效 位
标志
数据
数 据
比 较
主存 字块 标记
译 码
cache 字块 地址
主 存 储 器
主存地址
译码 CPU
主存字块 标记
cache字块 地址
块内 地址
直接映像硬件实现举例
主存地址
主存字块标记
cache字块地址 块内地址
多路组相联映像方式
多路组相联映像方式:是对全相联映像和直接映想象的 一种折衷的处理方案。既不在主存和CACHE之间实现字 块的完全随意对应,也不在主存和CACHE之间实现字块 的多对一的硬性对应,而是实现一种有限度的随意对应。
8. 1 高速缓冲存储器(Cache)
当CPU要从主存中读取一个字,先把这个 字的地址传给Cache,检查这个字是否在 Cache中,如果在,就把这个字直接从 Cache送到CPU中,如果不在,则把这个地 址传给主存,从主存中读出这个字。同时,把 这个字附近地址单元的内容取到Cache中,以 满足下次访问的字能在Cache中。
8. 1 高速缓冲存储器(Cache)
CPU和主存之间的速度大约相差一个数 量级,为了弥补主存速度的不足,在CPU和 主存之间设置了一级容量不大,但速度很高 的高速缓冲存储器(Cache),简称高速缓 存或快存。CPU在某一小段时间内所要访问 的程序和数据被事先从主存中调入Cache中, 当CPU需要这些程序和数据时,就直接去 Cache中读取,这样将大大提高存取速度。 Cache和主存借助于辅助硬件构成一个整体。
虚拟存储器概述
主-辅存层次 --容量 辅助存储器是主存的补充,用来存放暂 时不用的程序和数据,当需要时,再调到主 存中去。主-辅存层次通过附加的硬件及存 储管理软件来控制,主-辅存形成一个整体, 称之为虚拟存储器。 虚存=主存+辅存
虚存 主存 辅存
虚拟存储器概述
虚拟存储器概述
虚拟空间可以比实际空间大得多: 80286,实存空间224=16MB,虚存空间1GB。 Pentium,实存空间232=4GB,虚存空间 64TB。 辅存只与主存交换信息,CPU不能直接访问 辅存。 从整体看,主-辅存层次的存取速度接近于 主存的存取速度,容量则接近于辅存的容量,而 每位平均价格也接近于廉价的辅存平均价格,从 而解决了大容量和低成本间的矛盾。
3. CACHE的3种映像方式
地址映像:把一主存单元的数据复制到CACHE中 时,还要把该主存单元的地址,经过某种函数关 系处理后写进CACHE的标志字段,这一过程被称 为CACHE的地址映像。 地址变换:在程序执行时,还要把主存地址变换 为访问CACHE的地址,这一过程被叫做CACHE 的地址变换。 CACHE存储器通常使用3种映像方式,它们是全 相联映像方式、直接映像方式、多路组相联映像 方式,3种映像方式有各自的优缺点。
直接映像
多路组相联映射
全相联映射和多路组相联映射的失效处理
CACHE使用中的几个问题
CACHE的重要技术指标:命中率 影响 CACHE 命中率的因素
CACHE 的容量,大一些好 CACHE 与主存储器每次交换信息的单位量(Cache Line Size)适中 CACHE 不同的组织方式,多路组相联更好 CACHE 的多级组织可提高命中率 CACHE 装满后的替换算法
Cache替换算法
随机替换(RAND)
随机找一个Cache块进行替换,比较盲目。
先进先出算法(FIFO)
将最早调入Cache的字块替换出去,采用循环电路容易 实现,开销小。
最不常使用淘汰算法(LFU)
即替换掉引用次数最少的块。需要计算字块的使用次数, 开销大,但平均命中率比FIFO要高。
最近最少使用算法(LRU)
1. Cache存储单元的组成部分
有效位
标志
数据
数据字段:保存从主存单元复制过来的数据 标志字段:保存相应主存单元的地址信息 有效位字段:标识数据字段和标志字段的是否有效
Cache单元的大小:cache line size(几个主存字,减少标志位位 数,较少Cache总容量) Cache与主存交换数据的单位: cache line size(充分利用空间 局部性) Cache单元与主存单元的对应关系,例如:
=
……
1024-1选择器
命中
数据
直接映像方式
直接映像方式:是指主存的一个字块只能映像到 CACHE的一个准确确定的字块中。 直接映像方式特点:
主存的字块只可以和固定的Cache字块对应,方式直接, 利用率低。内存与CACHE关系,多对一。 标志位较短,比较电路的成本低。如果主存空间有2m 块,Cache中字块有2c块,则标志位只要有m-c位。且 仅需要比较一次。