计算机组织与系统结构第六章习题答案Word文档格式.docx
- 文档编号:22211899
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:105.52KB
计算机组织与系统结构第六章习题答案Word文档格式.docx
《计算机组织与系统结构第六章习题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组织与系统结构第六章习题答案Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
(3)控制器的功能是什么?
(4)为什么对存储器按异步方式进行读写时需要WMFC信号?
按同步方式访问存储器时,CPU如何实现存储器读写?
(5)单周期处理器的CPI是多少?
时钟周期如何确定?
为什么单周期处理器的性能差?
元件在一个指令周期内能否被重复使用?
为什么?
(6)多周期处理器的设计思想是什么?
每条指令的CPI是否相同?
为什么在一个指令周期内某个元件可被重复使用?
(7)单周期处理器和多周期处理器的控制逻辑设计的差别是什么?
(8)硬布线控制器和微程序控制器的特点各是什么?
(9)为什么CISC大多用微程序控制器实现,RISC大多用硬布线控制器实现?
(10)水平型微指令和垂直型微指令的基本概念和优缺点是什么?
(11)CPU检测内部异常和外部中断的方法有什么不同?
3.在书中图6.9中,假定总线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间为10ps,寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Qtime)为4ps,控制信号的生成延迟(Clk-to-signaltime)为7ps,三态门接通时间为3ps,则从当前时钟到达开始算起,完成以下操作的最短时间是多少?
各需要几个时钟周期?
(1)将数据从一个寄存器传送到另一个寄存器
(2)将程序计数器PC加1
所示。
(a)当前周期内不执行ALU运算
(b)当前周期内执行ALU运算
图6.10单总线数据通路中主要路径的定时
参考答案:
(1)寄存器的锁存延迟与控制信号的生成延迟的时间重叠,
且Clk-to-signaltime>
Clk-to-Qtime,所以完成寄存器传送的时间延迟为:
7+3+20+10=40ps。
因为在这个过程中,只要最后保存一次信息到寄存器,所以只需要一个时钟周期。
(2)分两个阶段:
PC+1→Z:
7+3+20+200+10=240ps;
Z→PC:
7+3+20+10==40ps
寄存器保持时间用来作为时间约束。
因为在这个过程中,需要经过两次总线传输,每次都将传输信息保存在某个寄存器中,所以需要两个时钟周期。
4.右图6.30给出了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。
在两个总线之间的所有数据传送都需经过算术逻辑部件ALU。
ALU可实现的部分功能及其控制信号如下:
MOVa:
F=A;
MOVb:
F=B;
a+1:
F=A+1;
b+1:
F=B+1
a-1:
F=A-1;
b-1:
F=B-1
其中A和B是ALU的输入,F是ALU的输出。
假定JSR(转子
指令)指令占两个字,第一个字是操作码,第二个字给出
子程序的起始地址,返回地址保存在主存的栈中,用SP(栈
指示器)指向栈顶,按字编址,每次从主存读取一个字。
请
写出读取并执行JSR指令所要求的控制信号序列(提示:
当前
指令地址在PC中)。
假定采用同步方式(若为异步,则只需在read和Write后加一个等待信号WMFC)
分三个阶段:
1.取指令操作码:
PCout,MOVb,MARin
Read,b+1,PCin
MDRout,MOVb,IRin
2.取子程序首址:
Read,b+1,Yin(返回地址在Y中)
MDRout,MOVb,PCin(子程序首址在PC中)
3.保存返址至栈:
SPout,MOVb,MARin
Yout,MOVb,MDRin
Write,SPout,b-1,SPin
(注:
若按最长的存储访问时间作为CPU时钟周期,则上述每个阶段都需三个时钟周期)
能否用更少的时钟周期完成上述功能?
不能!
以下是另一种方式)
Read,b+1,Yin
Yout,MOVb,MARin
Read,a+1,Yin(用b+1也行)
MDRout,MOVb,PCin
Write,SPout,b-1,Spin
5.假定某计算机字长16位,CPU内部结构如书中图6.9所示,CPU和存储器之间采用同步方式通信,按字编址。
采用定长指令字格式,指令由两个字组成,第一个字指明操作码和寻址方式,第二个字包含立即数Imm16。
若一次存储访问所花时间为2个CPU时钟周期,每次存储访问存取一个字,取指令阶段第二次访存将Imm16取到MDR中,请写出下列指令在指令执行阶段的控制信号序列,并说明需要几个时钟周期。
(1)将立即数Imm16加到寄存器R1中,此时,Imm16为立即操作数。
即:
R[R1]←R[R1]+Imm16
(2)将地址为Imm16的存储单元的内容加到寄存器R1中,此时,Imm16为直接地址。
R[R1]←R[R1]+M[Imm16]
(3)将存储单元Imm16的内容作为地址所指的存储单元的内容加到寄存器R1中。
此时,Imm16为间接地址。
R[R1]←R[R1]+M[M[Imm16]]
(1)
MDRout,Yin
R1out,add,Zin
Zout,R1in
需3个时钟周期
(2)MDRout,MARin
Read1,(R1out,Yin也可以放在该控制信号所在的时钟周期中)
Read2,R1out,Yin
MDRout,add,Zin
需5个时钟周期
(3)MDRout,MARin
Read1
Read2
MDRout,MARin
Read1,(R1out,Yin)
需8个时钟周期
6.假定图6.24单周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号RegWr、RegDst、Branch、MemWr、ExtOp、R-type总是为0,则哪些指令不能正确执行?
总是0
总是1
RegWr
则所有需写结果到寄存器的指令(如:
R-Type指令、load指令等)都不能正确执行,因为寄存器不发生写操作
不需写结果到寄存器的指令可能会出错(如store,分支,转移指令等)
RegDst
则所有R-Type指令都不能正确执行,因为目的寄存器指定错误
所有非R-Type指令都不能正确执行
Branch
Branch指令可能出错,因为永远不会发生转移
非Branch指令都出错,因为下条指令的地址计算错误
MemWr
Store指令不能正确执行,因为存储器不能写入所需数据
非Store指令都会出错,因为存储器内会写入错误数据
ExtOp
需要符号扩展的指令(如Beq、lw/sw,addiu等)发生错误
必须0扩展的指令会出错(比如ori)
7.假定图6.24单周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号RegWr、RegDst、Branch、MemWr、ExtOp、R-type总是为1,则哪些指令不能正确执行?
见第6题的表格.
8.在MIPS指令集中需要增加一条swap指令,可以使用软件方式用若干条已有指令来实现伪指令,也可以通过改动硬件来实现。
(1)写出用伪指令方式实现“swap$rs,$rt”时的指令序列
(2)假定用硬件实现时会使一条指令的执行时间增加10%,则swap指令在程序中占多大的比例才值得用硬件方式来实现?
参考答案:
(1)swap指令可用以下三条指令实现。
xor$rs,$rs,$rt
xor$rt,$rs,$rt
(若使用额外寄存器$rtemp,则$rtemp内容会被破坏,所以伪指令一般不能用额外寄存器)
add$rtemp,$rs,$zero
add$rs,$rt,$zero
add$rt,$rtemp,$zero
(若使用加减法,,可能溢出。
如使用无符号数加减法addu,subu也可以)
add$rs,$rs,$rt
sub$rt,$rs,$rt
add$rs,$rs,$rt
(2)假定该指令占x%,其他指令占(1-x)%
则用硬件实现该指令时,程序执行时间为原来的1.1*(x+1-x)=1.1倍
用软件实现该指令时,程序执行时间为原来的3x+1-x=(2x+1)倍
当1.1<
2x+1时,硬件实现才有意义
由此可知,x>
5%
9.假定图6.33多周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号PCWr、IRWr、RegWr、BrWr、PCSource、MemWr、MemtoReg、PCWrCond、R-type总是为0,则哪些指令不能正确执行?
若PCWr=0,则所有指令都不正确,因为无法更新PC
若IRWr=0,则所有指令都不能正确执行,因为IR中不能写入指令
若RegWr=0,则所有需要写结果到寄存器的指令(如:
R-Type指令、load指令等)都
不能正确执行,因为寄存器不发生写操作
若BrWr=0,则Branch指令不能正确执行,因为投机计算的分支地址无法送入寄存器
若PCSource=00,则除j之外的其他指令都不能正确得到下条指令地址
若MemWr=0,则Store指令不能正确执行,因为存储器不能写入数据
若MemtoReg=0,则所有Load指令执行错误,因为寄存器写入的是ALU输出
若PCWrCond=0,则Branch指令不能正确执行,因为不能写入转移目标地址到PC
若R-type=0,则所有R-type指令的执行可能出错
10.假定P.185图6.32多周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号PCWr、IRWr、RegWr、BrWr、PCSource、MemWr、MemtoReg、PCWrCond、R-type总是为1,则哪些指令不能正确执行?
若PCWr=1,则程序执行顺序失控,因为每个时钟都会更新PC
若IRWr=1,则所有指令都可能不能正确执行,因为写入IR的可能不是当前指令
若RegWr=1,则所有不需写结果到寄存器的指令(如:
sw、beq等)都不能正确执行
若BrWr=1,则Branch指令不能正确执行,因为运算阶段的ALU输出也会放入寄存器,成为错误的分支转移目标地址。
若PCSource=01,则j和Branch指令不能正确得到下条指令地址
若MemWr=1,则除Store指令外的所有指令都不能正确执行
若MemtoReg=1,则除Load外的所有指令执行错误
若PCWrCond=1,则除Branch外的其他指令可能不能正确执行
若R-type=1,则所有非R-type指令的执行可能出错
12.假定某计算机字长16位,标志寄存器Flag中的ZF、NF和VF分别是零、负和溢出标志,采用双字节定长指令字。
假定Bgt(大于零转移)指令的第一个字节指明操作码和寻址方式,第二个字节为偏移地址Imm8,其功能是:
若(ZF+(NF⊕VF)=0)则PC=PC+2+Imm8否则PC=PC+2
(1)该计算机的编址单位是什么?
(2)画出实现Bgt指令的数据通路。
(1)该计算机的编址单位是字节。
因为PC的增量是2,且每条指令占2个字节,所以编址单位是字节。
(2)实现Bgt指令的数据通路如下
根据“大于”条件判断表达式,可以看出该bgt指令实现的是带符号整数比较。
因为无符号数比较时,其判断表达式中没有溢出标志OF。
偏移地址Imm8为补码表示,转移目标地址可能在bgt指令之前,也可能在bgt指令之后。
计算转移目标地址时,偏移量为Imm8,范围为-128~127,故转移目标地址的范围是PC+2+(-128)~PC+2+127
如果偏移量为Imm8x2,转移目标地址的范围是PC+2+(-128×
2)~PC+2+127×
2,其实意味着相对于bgt指令的前127条指令到后128条指令之间。
13.对于多周期MIPS处理器,假定将访问数据的过程分成两个时钟周期可使时钟频率从4.8GHz提高到5.6GHz,但会使得lw和sw指令增加时钟周期数。
已知基准程序CPUint2000中各类指令的频率为:
Load:
25%,Store:
10%,Branch:
11%,Jump:
2%,ALU:
52%。
以基准程序CPUint2000为标准计算时钟频率提高后处理器的性能提高了多少?
若将取指令过程再分成两个时钟周期,则可进一步使时钟频率提高到6.4GHz,此时,时钟频率的提高是否也能带来处理器性能的提高?
三种频率的机器上,各类指令的百分比和CPI
Load
Store
Jump
ALU
25%
10%
11%
2%
52%
M14.8GHz
5
4
3
M25.6GHz
6
M36.4GHz
7
三种机器的平均CPI和MIPS
CPIofM1=25%x5+10%x4+11%x3+2%x3+52%x4=4.12CPIofM2=25%x6+10%x5+11%x3+2%x3+52%x4=4.47
CPIofM3=25%x7+10%x6+11%x4+2%x4+52%x5=5.47
MIPSofM1=4.8G/4.12=1165
MIPSofM2=5.6G/4.47=1253
MIPSofM3=6.4G/5.47=1170
由此可见,数据存取改为双周期的做法效果较好。
进一步把取指令改为双周期的做法反而使MIPS数变小了,所以不可取。
因为数据存取只涉及到load/Store指令,而指令存取涉及到所有指令,使得CPI显著提高。
15.微程序控制器容量为1024×
48位,微程序可在整个控存内实现转移,反映所有指令执行状态转换的有限状态机中有4个分支点,微指令采用水平格式,微地址由专门的下地址字段确定。
请设计微指令的格式,说明各字段有多少位?
微程序控制器容量为1024×
48位,说明微地址占10位,微指令字共48位,其中10位下地址字段用来给出下条微地址;
转移控制字段需要对5种情况进行控制,需3位。
例如,
000:
取指令微指令首地址
100:
根据分支1处的条件选择下条微地址
101:
根据分支2处的条件选择下条微地址
110:
根据分支3处的条件选择下条微地址
111:
根据分支4处的条件选择下条微地址
剩下的48-10-3=35位用来表示微操作码字段。
(如果采用计数器法,则转移控制字段需要对6种情况进行控制,比上述5种情况多一种:
即顺序执行下条微指令,此时,也要3位。
)
也可以用5位作为转移控制字段,33位作为微操作码字段
00001,00010,00100,01000,10000
------------------其它
16.对于多周期CPU的异常和中断处理,回答以下问题:
(1)对于除数为0、溢出、无效指令操作码、无效指令地址、无效数据地址、缺页、访问越权和外部中断,CPU在哪些指令的哪个时钟周期能分别检测到这些异常或中断?
(2)在检测到某个异常或中断后,CPU通常要完成哪些工作?
简要说明CPU如何完成这些工作?
(3)TLB缺失和cache缺失各在哪个指令的哪个时钟周期被检测到?
如果检测到发生了TLB缺失和cache缺失,那么,CPU各要完成哪些工作?
(提示:
TLB缺失可以有软件和硬件两种处理方式。
部分参考答案:
a.“除数为0”异常在取数/译码(ID/Reg)周期进行检测
b.“溢出”异常在R-Type指令的执行(Exe)周期进行检测
c.“无效指令”异常在取数/译码(ID/Reg)周期进行检测
d.“无效指令地址”、“缺页”和“访问越权”异常在取指令(IF)周期检测
e.“无效数据地址”、“缺页”和“访问越权”异常在存储器访问(Mem)周期检测
f.“中断”可在每条指令的最后一个周期(WB)的最后进行检测
11.假定有一条MIPS伪指令“Bcmp$t1,$t2,$t3”,其功能是实现对两个主存块数据的比较,$t1和$t2中分别存放两个主存块的首地址,$t3中存放数据块的长度,每个数据占四个字节,若所有数据都相等,则将0置入$t1;
否则,将第一次出现不相等时的地址分别置入$t1和$t2并结束比较。
若$t4和$t5是两个空闲寄存器,请给出实现该伪指令的指令序列,并说明在类似于P.185图6.32的多周期数据通路中执行该伪指令时要用多少时钟周期。
(1)实现伪指令“bcmp$t1,$t2,$t3”的指令序列如下。
beq$t3,$zero,done#若数据块长度为0,则结束
compare:
lw$t4,0($t1)#块1的当前数据取到$t4
lw$t5,0($t2)#块2的当前数据取到$t5
bne$t4,$t5,done#$t4和$t5的内容不等,则结束
addi$t1,$t1,4#块1中的当前数据指向下一个
addi$t2,$t2,4#块2中的当前数据指向下一个
addi$t3,$t3,-1#比较次数减1
bne$t3,$zero,compare#若没有全部比较完,则继续比较
addi$t1,$zero,0#若全部都相等,则将$t1置0
done:
(2)在多周期数据通路执行时,上述程序段中用到的指令beq、lw、bne和addi的时钟周期数分别为3、5、3和4。
若比较的数据块大小为50个字,则上述指令序列中的循环(粗体部分)最多被执行50次,因而所需的指令数最多为1+50×
7+1=352。
其中,load指令为50×
2=100条,时钟周期数为5×
100=500;
branch指令数为1+2×
50=101,时钟周期数为3×
101=303;
addi指令数为1+3×
50=151,时钟周期数为4×
151=604。
所以,总时钟周期数最多为500+303+604=1407。
Welcome!
!
欢迎您的下载,
资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组织 系统 结构 第六 习题 答案