计算机系统结构习题答案郑伟民Word文档下载推荐.docx
《计算机系统结构习题答案郑伟民Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机系统结构习题答案郑伟民Word文档下载推荐.docx(32页珍藏版)》请在冰点文库上搜索。
![计算机系统结构习题答案郑伟民Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/258fabed-de40-4ea1-8064-e9973e63bf07/258fabed-de40-4ea1-8064-e9973e63bf071.gif)
而全部由硬件实现,或是在机器语言、汇编语言编程中不会出现和不需要了解的部分,以及只影响机器的速度和价格的逻辑实现(计算机组成)和物理实现(计算机实现)的那些部分,对计算机系统结构都是透明的。
[解答]客观存在的事物或属性。
从某个角度去看,却看不到,称这些事物和属性对他是透明的。
透明了就可以简化这部分的设计,然而因为透明而无法控制和干预,就会带来不利。
因此,透明性的取舍要正确选择。
对计算机系统结构透明的有:
存贮器的模m交叉存取,数据总线宽度,阵列运算部件,通道是采用结合型还是独立型,PDP一11系列的单总线结构,串行、重叠还是流水控制方式,Cache存贮器。
对计算机系统结构不透明的有:
浮点数据表示,I/O系统采用通道方式还是外围处理机方式,字符行运算指令,访问方式保护,程序性中断,堆栈指令,存贮器最小编址单位。
题1.8从机器(汇编)语言程序员的角度来看,以下哪些是透明的?
指令地址寄存器;
指令缓冲器;
时标发生器;
条件码寄存器;
乘法器;
主存地址寄存器;
磁盘外设;
先行进位链;
移位器;
通用寄存器;
中断字寄存器。
[分析]从机器(汇编)语言程序员看,实际上也就是从计算机系统结构看的内容。
指令地址寄存器就是程序计数器,汇编语言或机器语言程序都要用到它的,其位数多少会影响到可执行程序的空间大小。
指令缓冲器、主存地址寄存器都属于计算机组成中的缓冲器技术,是由全硬件实现的,系统程序不参预对它们的管理。
时标发生器、乘法器、先行进位链、移位器等都属于计算机组成中的专用部件配臀,它只影响机器的速度和价格,与软件编程无关。
条件码寄存器是存放指令执行后生成反映结果状态或特征的标志码,它要供转移等指令使用,是编程要用到的。
磁盘外设的种类、编址方式、容量等都是磁盘管理服务程序要用到的。
通用寄存器的数量、位效、编址、使用规定在汇编语言程序和机器语言程序中都是会直接用到的。
中断字寄存器是用来记录每一个中断类中,各个中断源发生中断请求的状况的,它是中断服务程序在处理中断时要用到的。
[解答]从机器(汇编)语言程序员来看,透明的有:
指令缓冲器,时标发生器,乘法器,主存地址寄存器,先行进位链,移位器。
题1.9下列哪些对系统程序员是透明的?
哪些对应用程序员是透明的?
系列机各档不同的数据通路宽度;
虚拟存贮器;
Cache存贮器;
程序状态字:
“启动I/O”指令;
“执行”指令;
指令缓冲寄存器。
[分析]系统程序员是编写诸如操作系统、编译程序等各种系统软件的人员。
应用程序员是指利用计算机及所配的系统软件支持来编写解决具体应用问题的程序员。
他们都可以使用汇编语言或机器语言来编写程序,当然也可以用高级语言来编写程序。
所以,对系统程序员或应用程序员是不透明的,应包括计算机系统结构所包含的各个方面。
而属全硬件实现的计算机组成所包含的方面,如系列机各档不同的数据通路宽度、Cache存贮器、指令缓冲寄存器等,无论是对系统程序员,还是对应用程序员都应当是透明的。
对目前高性能计算机系统来讲,大多数都是多用户环境,应用程序(也称算态,目态或用户态程序)中不允许使用管态(也林系统态,监督态)中所用的特权指令。
例如,大型多用户系统中,程序状态字是用于反映计算机系统在当前程序的各种关键状态(它并不是IBMPC计算机那种狭义的所谓程序状态字)的,它是操作系统用于管理计算机系统资源及其使用状况的,用户是不能直接对程序状态字内容进行读,写和访问的,只能由系统来管理。
“启动I/O”指令是大型机中的—种管态指令,属于特权指令,只能在操作系绕程序中使用(见教材中第3章3.4.1节的介绍)。
用户程序是不能用它来直接启动I/O通道和设备的。
虚拟存贮器(参看教材第4章4.1.3节)是一个主存——辅存两级存贮层次。
它对应用程序员是完全透明的,使应用程序不必作任何修改就可以在系统上运行。
但是,在操作系统中必须配置有相应的管理软件,能对其虚实外部地址的映象和变换、程序的换道、程序由辅存调入主存、主存页面的替换、存贮保护等进行管理,所以对系统程序员来说是不透明的。
“执行”指令(参看教材中第5章5.1.2节)是IBM370等系列机上用于解决程序在执行过程中不准修改指令,又允许将指令放在操作数区中作修改,以满足指令在执行过程中允许修改的要求。
这种指令无论是用户程序,还是系统程序,都希望可以被使用,所以,“执行”指令应设计成对应用程序员和系统程序员都是不透明的。
[解答]系列机各档不同的数据通路宽度、Cache存贮器、指令缓冲寄存器属计算机组成,对系统程序员和应用程序员都是透明的。
虚拟存贮器、程序状态字、“启动I/O”指令,对系统程序员是不透明的,面对应用程序员却是透明的。
“执行”指令则对系统程序员和应用程序员都是不透明的。
1.7
(1)从指定角度来看,不必要了解的知识称为透明性概念。
(2)见下表,“√”为透明性概念,“P”表示相关课文页数。
模m交叉,√,
浮点数据,×
,P4
通道与I/O处理机,×
总线宽度,√,
阵列运算部件,×
,
结合型与独立型通道,√,
单总线,√,
访问保护,×
中断,×
指令控制方式,√,
堆栈指令,×
最小编址单位,×
Cache存储器,√,
1.8见下表,“√”为透明性概念,“P”表示相关课文页数。
指令地址寄存器,×
指令缓冲器,√,
时标发生器,√,
条件码寄存器,×
乘法器,√,
主存地址寄存器,√,
磁盘,×
先行进位链,√,
移位器,√,
通用寄存器,×
中断字寄存器,×
1.9见下表,“√”表示都透明,“应”表示仅对应用程序员透明,“×
”表示都不透明。
数据通路宽度,√,
虚拟存储器,应,
程序状态字,×
“启动I/O”指令,应,
“执行”指令,×
指令缓冲寄存器,√,
Sn
20
1
01Fe
1.12已知Se=20,求作Fe-Sn关系曲线。
将Se代入Amdahl定律得
1.13上式中令Sn=2,解出Fe=10/19≈0.526
1.14上式中令Sn=10,解出Fe=18/19≈0.947
1.15已知两种方法可使性能得到相同的提高,问哪一种方法更好。
(1)用硬件组方法,已知Se=40,Fe=0.7,解出Sn=40/12.7≈3.1496(两种方法得到的相同性能)
(2)用软件组方法,已知Se=20,Sn=40/12.7,解出Fe=27.3/38≈0.7184(第二种方法的百分比)
(3)结论:
软件组方法更好。
因为硬件组需要将Se再提高100%(20→40),而软件组只需将Fe再提高1.84%(0.7→0.7184)。
1.17
1.18记f──时钟频率,T=1/f──时钟周期,B──带宽(Byte/s)。
方案一:
方案二:
1.19由各种指令条数可以得到总条数,以及各百分比,然后代公式计算。
(1)
(2)
(3)
1.21
1.24记Tc──新方案时钟周期,已知CPI=CPIi=1
原时间=CPI×
IC×
0.95Tc=0.95IC×
Tc
新时间=(0.3×
2/3+0.7)×
Tc=0.9IC×
二者比较,新时间较短。
第二章
P912.3.2.2Huffman编码法
2.3(忽略P124倒1行~P125第8行文字,以简化题意)已知2种浮点数,求性能指标。
此题关键是分析阶码、尾数各自的最大值、最小值。
原图为数据在内存中的格式,阶码的小数点在其右端,尾数的小数点在其左端,遵守规格化要求。
由于尾数均为原码,原码的绝对值与符号位无关,所以最大正数与最小负数的绝对值相同,可用“±
最大绝对值”回答;
最小正数与最大负数的绝对值相同,可用“±
最小绝对值”回答。
第1小问中,阶码全部位数为8,作无符号数看待真值为0~255,作移-127码看待真值为-127~+128;
尾数(不计符号位)有23位小数,另加1位整数隐藏位,所以尾数绝对值为1.0~2.0–2-23,有效位数p=24;
第2小问中,阶码全部位数为11,作无符号数看待真值为0~2047,作移-1023码看待真值为-1023~+1024;
尾数(不计符号位)有52位小数,另加1位整数隐藏位,所以尾数绝对值为1.0~2.0–2-52,有效位数p=53。
最大绝对值为最大阶码与最大尾数绝对值的组合,最小绝对值为最小阶码与最小尾数绝对值的组合。
代入相关公式后得最终结果如下表。
32位
64位
±
最大绝对值
(1-2-24)·
2129
(1-2-53)·
21025
最小绝对值
2-127
2-1023
表数精度δ
2-24
2-53
表数效率η
100%
2.5
(1)rm=2,re=2,p=24(隐藏最高位),q=7。
(2)Nmax=1.7×
1038,-|N|min=-1.47×
10-39
δ≤5.96×
10-8≈10-7.22,η=100%
2.6
1位
7位
6位
0111111
333333
(1)0.2=0.333333H×
160
设阶码为移-63码(即-26+1,原题未指明)
0.2=0.110011001100110011001101B×
2-2
8位
23位
01111101
10011001100110011001101
(其中最高有效位需隐藏)
阶码为移-127码(即-27+1)
(2)符号位不变,(阶码–63)×
4+127;
尾数左规,除去最高位;
(3)符号位不变,(阶码–127)/4+63;
尾数补最高位,按除法余数右移若干位,左补0。
2.11
从地址的整数倍位置开始访问
20%|字节8位|浪费8位|半字16位|单子32位
2.5%|半字16位|半字16位|半字16位|半字16位|
30%|双字64位|
2.13已知10条指令使用频度,求3种编码方法的平均码长与信息冗余量。
(1)此问中的“最优Huffman编码法”实际是指码长下限,即信源的平均信息量──熵,代公式得H=2.9566。
(2)Huffman编码性能如下表;
公式:
(3)2/8扩展编码是8/64/512法的变种,第一组2条指令,码长为2(1位扩展标志,1位编码),第二组8条指令,码长为4(1位扩展标志,与第一组区别,加3位编码),编码性能如下表;
00;
01;
1***;
(4)3/7扩展编码是15/15/15法的变种,第一组3条指令,码长为2(共有4种组合,其中3种组合分别代表3条指令,留1种组合作为扩展前缀标志),第二组7条指令,码长为5(2位固定的前缀扩展标志,与第一组区别,加3位编码,只用其中7种组合),编码性能如下表。
10;
11***(只用7种);
Huffman编码
2/8扩展编码
3/7扩展编码
平均码长L
2.99
3.1
3.2
信息冗余量R
1.10%
4.61%
7.59%
2.14
2.15
(1)15条/63条/64条
(2)14条/126条/128条
说明:
每种扩展刘两种组合:
0000
……
1101
11100000001110111111000000
1110……扩充码1110111111……
11101111101110111111111111
11110000001111111111000000
1111……扩充码1111111111……
11111111101111111111111111
2.18P117
2.20向后转移
(1)start:
moveas,r1
Movnum,r2
decr1
incr1
Loop:
move(r1),ad-as(r1)
Decr2
Bgtloop
Incr1
Halt
Num:
N
(2)N=100,循环100次,节省100个周期,循环体前后浪费3个周期,故能节省97个指令周期
(3)start:
moveas,r1
Decr1
第三章
难点:
3.1.4.2交叉访问存储器
地址映射及替换算法
P1463.2虚拟存储器P1743.3Cache
3.2T=H1T1+H2T2+H3T3;
S=S1+S3+S2;
C=(C1S1+C2S2+C3S3)/S
3.3直接代公式计算存储层次性能指标。
(1)74ns,38ns,23.6nsH*t1+(1-h)*t2
(2)0.258,0.315,0.424(c1s1+c2s2)/(s1+s2)
(3)T256K<
T128K<
T64K
c256K>
c128K>
c64K
(4)T*C分别得19.092,11.97,10.0064。
答案是256K方案最优。
3.5已知
,其中g=0.1
依题意有
整理得0.9n≥0.2,解出
,向下取整,得15;
按另一种题意理解是向上取整,得16,也对。
3.7
3.9
=2,Nv:
虚存大小;
Np:
页面大小;
Nd:
页表存储字大小
(2)4KB/4B=1K,故而二级页表空间为:
4GB/1K=4MB,需4MB/4KB=1024页;
4MB/1K=4KB,故一级页表空间为4KB,即1页
(3)一级页表必须驻立主存
3.10令TM为主存的平均访问时间,TD为硬盘的访问时间,则
T=HTM+(1-H)TD=(10000-9999*0.9999)TM=1.9999TM
Ŋ=TM/T=1/1.9999=50.0025%
3.12
(1)U=log264=6;
P=log21024=10;
D=log24K=12
(2)总数为log28M=23;
D=log24K=12,故实页号p=23-12=11;
(3)快表:
多用户虚页号(U+P)+实页号p,即16+11=17
(4)每个实页在页表中都存在一行与之对应,故共需211=2K=2048(个存储字);
慢表包括主存页号(实页号)+装入位及其它标志位,即11+1+其它
(5)P159图3.27
3.14
P=
2
3
1
5
4
命中次数
FIFO
2*
5*
3*
25%
1*
4*
入
中
换
向每行回看,最大的为待换出的
LFU
41.67%
向页地址流回看,最后出现的为待换出的
OPT
6
50%
向页地址流后看,最远才访问的为待换出的
注:
最好的办法是堆栈模拟。
3.15欲知可能的最高命中率及所需的最少主存页数,较好的办法是通过“堆栈模拟法”,求得命中次数随主存页数变化的函数关系。
下图就是“堆栈模拟图”,其中“√”表示命中。
n=1
n=2
√
n=3
n=4
7
n=5
(1)Hmax=7/12≈58.3%
(2)n=4
(3)当1次页面访问代表连续1024次该页内存储单元访问时,后1023次单元访问肯定是命中的,而第1次单元访问的命中情况与这1次页面访问的命中情况相同。
根据上图中最高命中情况,共有7次页命中(折算为7×
1024次单元命中),5次页不命中(折算为5×
1023次单元命中,也可写为5×
1024-5),单元访问总次数为12×
1024,故有:
Hcell=(12×
1024-5)/(12×
1024)=12283/12288≈99.96%
改LRU替换算法:
[分析]由于LRU替换算法是堆栈型的替换算法,因而随着分配给该程序的实页数增加,实页命中率只会上升,至少是不会下降的。
但是,当实页数增加到一定程度之后,其命中率就不会再提高了.如耍再增加分配给该道程序的实页数,只会导致实存空间的利用率下降.所以,只要分别求出分配给该道程序不同实页数时的页命中率,找出达到最高命中率时所分配的最少实页数即可.
既然LRU替换算法是堆栈型的替换算法,对虚页地址流只需要用堆栈处理技术处理一次,就可以同时求出不同实页数时各自的命中率.这样,可以大大减少模拟的工作量。
[解答]用堆栈对页地址流处理一次的过程见表4.6所示,其中H表示命中。
页地址流
453251322513
S
(1)
S
(2)
S(3)
S(4)
S(5)
S(6)
45325l33251
45325l1325
443255132
n=1
实n=2
页n=3
数n=4
n=5
H
H
HH
HHHHHHH
模拟结果表明,使用LRU替换算法替换,对该程序至少应分配4个实页.如果只分配
3个实页,其页命中率只有2/12,太低:
而分配实页数多于4页后,其页命中率不会再有提高.所以,分配给该程序4个实页即可,其可能的最高命中串为H=7/12.
3.15加1题一个二级存储层次,采用全相联映象和最久没有使用算法,实存共5页,为2道程序分享,页地址流分别如下
P1=12341321
P2=12342233
试作2个实存分配方案,分别使2道程序满足
(1)命中率相同;
(2)命中次数之和最大。
P1=
命中次数N
(1)