第4章部分习题参考答案
4.1 解释下列术语
⏹存储器最大频宽-存储器连续工作时所能达到的频宽。
⏹存储器实际频宽-存储器实际工作时达到的频宽,它一般小于存储器最大频宽。
⏹模m交叉编址-交叉访问存储器由多个存储体(m个存储模块)组成一个大容量的存
储器,对多个存储体的存储单元采用交叉编址方式,组成交叉访问存储器。
通常有两种交叉编址方式,一是地址的高位交叉编址,一般使用较少转型是低位交叉编址,即由m个存储体组成的低位交叉存储器的存储单元地址的低log2m位称为体号k,高log2n 位称为体内地址j,存储单元地址A的计算公式为:A=m×j×k。
若已知地址A,可计算出对应的体号k=A mod m,体内j=[A/m]地址。
高位交叉编址主要用于扩展常规主存的容量,而低位交叉编址主要用于提高常规主存的访问速度。
⏹程序局部性-程序中对于存储空间90%的访问局限于存储空间的10%的区域中,而另
外10的访问则分布在存储空间的其余90%的区域中。
这就是通常说的程序局部性原理。
访存的局部性规律包括两个方面,一是时间局部性:如果一个存储项被访问,则可能该项会很快被再次访问;二是空间局部性:如果一个存储项被访问,则该项及其邻近的项也可能很快被访问。
⏹虚拟存储器-即“主存-辅存”存储层次,主要目的是为了弥补主存容量的不足,可
以为程序员提供大量的程序空间。
其部分功能采用硬件,其余则由操作系统的存储管理软件来实现,对于系统程序员不透明。
⏹段式管理-把主存按段分配的存储管理方式。
它是一促模块化的存储管理方式,每个
用户程序模块可分到一个段,该程序模块博只能访问分配给该模块的段所对应的主存空间。
段长可以任意设定,并可放大和缩小。
系统中通过一个段表指明保段在主存中的位置。
段表中包括段名(段号)、段起点、装入位和段长等。
段表本身也是一个段。
段一般是程序模块划分的。
⏹页式管理-把虚拟存储空间和实际存储空间等分成固定大小的页,各虚拟页可装入主
存中的不同实际页面位置。
页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分成页号和页内地址两部分,由地址映像机构将虚页号转换成主存的实页号。
页式管理用一个页表,包括页号、每页在主存的起始位置、装入位等。
页表是虚页号与物理页号的映射表。
页式管理由操作系统进行,对应用程序员是透明的。
⏹段页式管理-是段式管理和页式管理的结合,它将存储空间按逻辑模块分成段,每段
又分成若干个页,访问通过一个段表和若干个页表进行。
目前大多数操作系统采用段页式对存储器进行管理。
⏹地址的映像-对虚拟存储器而言,指多用户程序的虚拟地址与主存地址之间的对应关
系。
对于Cache存储器而言,指主存地址与Cache地址之间的对应关系。
⏹地址的变换-对虚拟存储器而言,指按照地址映像规则将多用户程序的虚拟地址转变
为主存地址的过程,包括把多用户的虚拟地址变换成主存实地址(内部地址变换)或磁盘存储器地址(外部地址变换)。
对于Cache存储器而言,指按照地址映像规则将主存地址转变为Cache地址的过程。
⏹堆栈型替换算法-以任意一个程序的页地址流作为两次主存页面数分配,分另分配m
个主存页面和n个主存页面,并且有mn。
如果在任何时刻t,主存页面数集合Bt都满足关系:,则这类算法称为堆栈型替换算法。
简单地说,堆栈型替换算法的基本思想是:随着分配给程序的主存页面数增加,主存命中率也提高,至少不下降。
⏹Cache存储器-即“Cache-主存”存储层次,主要目的是为了弥补主存速度的不足,
通过在CUP和主存之间增加速度快、容量小、价格较高的Cache,它与主存的构成有机整体,来提高访存速度。
其功能主要采用硬件来实现,对于系统程序员是透明的。
⏹直接映像-主存中的每一块只能被放置到Cache中唯一的一个地方。
计算公式为:,其
中,b为Cache块号,B是主存块号,C是Cache的块数。
整个Cache地址与主存地址的低位部分完全一样。
⏹组相联映像-主存与Cache按同样大小划分成块,还按同样大小划分成组。
从主存的
组到Cache的组之间采用直接映像,在两个对应的组内部采用全相联映像方式。
⏹写回法-当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有
当此行被换出时才写回主存。
⏹写直达法-当Cache写命中时,Cache与主存同时发生写修改。
⏹恒预取法-当CPU访问主存时,无论Cache是否命中,都把紧接着访问字所在块的下
一块从主存中取到Cache中。
⏹不命中预取法-当CPU访问存储器时,如果Cache不命中,在把包含访问字的块取到
Cache之后,还把紧接着的下一块也取到Cache中。
⏹环保护-将系统程序和用户程序按访问权限分层。
最内的几层是系统程序层,其外的
几层为用户程序层,级别由里向外逐层降低。
程序各页的环号由操作系统给定,并置
入页表,每个程序都规定了一个上限环号,即可访问的最内层的环号。
环式保护既能保护用户程序的出错而不破坏系统程序的工作,又能使同一用户程序的外层部分的出错不破坏其内层部分。
访问方式保护-对主存信息的使用可以另上读、写和执行3种方式。
4.2 (题目略)
【解】由访问效率计算公式:1
22!11/)1(1
)1(A A A A A A T T H H T H HT T T T e -+=
-+==
,有5
10
)1(1
8.0⋅-+=
H H ,得H =0.9999974999…≈0.9999975。
显然,这样高的命中率是很难达到的,为了不对H 提出过高的要求,可能通过减少相邻两级存储器的访问速度差异,或是减少相邻两级存储器的容量差距来解决,也可以在两级间增加一个中间级来实现。
4.10 (题目略)
【解】(1)(2)采用组相联映像,主存地址和C 地址的格式分别如下图所示:
Cache 有2组,每组2块,Cache 容量为4,组号G 和g 长度为1位,组内块号B 和b 的长度为1位。
每块大小为16B ,如果访存是以字节为寻址单位,块内地址W 和w 的长度为4位。
主存按Cache 大小划分为区,主存容量为8,Cache 容量为4,故主存分2个区,区号E 的长度为1位。
(3)根据组相联映像规则,主存的组到Cache 的组是直接映像,对应的组内块和块之间的全相联映像。
因此,主存和Cache 空间块的映像对应关系以及对应关系表(√为有关系)分别如下表所示。
主存地址格式
Cache 地址格式
第0组第1组第0组第1组第0区
第1区
0组 1组
主存块B0, B1, B4, B5只能映射到Cache块C0, C1任意1块上。
主存块B2, B3, B6, B7只能映射到Cache块C2, C3任意1块上。
(4)组相联映像方式,采用LFU替换算法,Cache的块地址流序列如下:
P=
C0
C1
C2
C3
Cache块命中率H=4/12=1/3
(5)组相联映像方式,采用FIFO替换算法,Cache的块地址流序列如下:
P=
C0
C1
C2
C3
入入入入中中替替中替替中Cache块命中率H=3/12=0.25
(6)组相联映像方式,采用LRU替换算法,Cache的块地址流序列如下:
P=
C0
C1
C2
C3
入入入入中中替替中替替中Cache块命中率H=4/12=1/3
(7)全相联映像方式,采用FIFO替换算法,Cache的块地址流序列如下:
P=
C0
C1
C2
C3
入入入入中中替替中替替中Cache块命中率H=4/12=1/3
全相联映像方式,采用LRU替换算法,Cache的块地址流序列如下:
P=
C0
C1
C2
C3
入入入入中中替替中替替替Cache块命中率H=3/12=0.25。
(8)若在程序执行过程中,每从主存装入一块到Cache,平均要对这个块访问16次。
总的访问次数为:12*16=192,而其中有8次是不命中Cache的,其余则为命中Cache的。
所以Cache 存储单元命中率为H=(12*16-8)/(12*16)≈95.8%
4.17 (题目略)
【解】(1)增大主存容量对Cache的访问时间基本不影响,从而对Cache的等效访问速度基本不影响。
(2)增大Cache的块数(块的大小不变)一般使Cache的命中率上升,从而使下降,并提高Cache的等效访问速度。
(3)增大组组相联的大小(块的大小不变)一般使Cache的命中率上升,从而使下降,并提高Cache的等效访问速度。
(4)增大块的大小(组的大小和Cache总容量不变)一般将使下降,从而提高Cache的等效访问速度。
(5)提高Cache本身器件的访问速度一般将缩短,从而提高Cache的等效访问速度。