ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:103.72KB ,
资源ID:24265364      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24265364.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机组织与系统结构第六章习题答案.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机组织与系统结构第六章习题答案.docx

1、计算机组织与系统结构第六章习题答案习题1给出以下概念的解释说明。指令周期(Instruction Cycle) 机器周期(Machine Cycle) 同步系统(Synchronous system) 时序信号(Timing signal)控制单元(Control Unit, CU) 执行部件(Execute Unit,EU)组合逻辑元件(Combinational logic element)或操作元件(Operate element)时序逻辑元件(Sequential logic circuit)或状态元件(State element)多路选择器(Multiplexor) 扩展器(Exte

2、nsion unit) “零”扩展(0- extend) “符号”扩展(Sign extend)算术逻辑部件ALU(Arithmetic Logic Unit) 加法器(Adder) CPU总线(CPU Bus) 寄存器堆(Register file)定时方式(Clocking methodology) 边沿触发(Edge-triggered)寄存器写信号(Register Write) 指令存储器(Instruction Memory)数据存储器(Data Memory) 程序计数器(Program Counter)指令寄存器(Instruction Register) 指令译码器(Inst

3、ruction Decoder)时钟周期(Clock Cycle) 主频(CPU Clock Rate / Frequency转移目标地址(Branch target address) 控制信号(Control signal)微程序控制器(Microprogrammed control) 硬布线控制器(Hardwared control)控制存储器(Control Storage,控存CS) 微代码(Microcode)微指令(Microinstruction) 微程序(Microprogram)固件(Firmware) 中断过程(Interrupt Processing) 异常(Except

4、ion) 故障(fault)自陷(Trap) 终止(Abort)中断(Interrupt) 中断服务程序(Interrupt Handler)中断允许位(Interrupt Enable Bit) 关中断(Interrupt OFF)开中断(Interrupt ON) 中断响应(Interrupt Response)向量中断(Vector Interrupt) 中断向量(Interrupt vector)中断向量表(Interrupt vector table) 向量地址(vector Address)中断类型号(Interrupt number)2. 简单回答下列问题。 (1)CPU的基本组

5、成和基本功能各是什么? (2)取指令部件的功能是什么?(3)控制器的功能是什么?(4)为什么对存储器按异步方式进行读写时需要WMFC信号?按同步方式访问存储器时,CPU如何实现存储器读写?(5)单周期处理器的CPI是多少?时钟周期如何确定?为什么单周期处理器的性能差?元件在一个指令周期内能否被重复使用?为什么?(6)多周期处理器的设计思想是什么?每条指令的CPI是否相同?为什么在一个指令周期内某个元件可被重复使用?(7)单周期处理器和多周期处理器的控制逻辑设计的差别是什么?(8)硬布线控制器和微程序控制器的特点各是什么?(9)为什么CISC大多用微程序控制器实现,RISC大多用硬布线控制器实现

6、?(10)水平型微指令和垂直型微指令的基本概念和优缺点是什么?(11)CPU检测内部异常和外部中断的方法有什么不同?3. 在书中图6.9中,假定总线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间为10ps,寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Q time)为4ps,控制信号的生成延迟(Clk-to-signal time)为7ps,三态门接通时间为3ps,则从当前时钟到达开始算起,完成以下操作的最短时间是多少?各需要几个时钟周期?(1)将数据从一个寄存器传送到另一个寄存器(2)将程序计数器PC加1所示。(a) 当前周期内不执行ALU运算 (b) 当前周期

7、内执行ALU运算图6.10 单总线数据通路中主要路径的定时参考答案:(1)寄存器的锁存延迟与控制信号的生成延迟的时间重叠, 且Clk-to-signal time Clk-to-Q time,所以完成寄存器传送的时间延迟为:7+3+20+10=40ps。因为在这个过程中,只要最后保存一次信息到寄存器,所以只需要一个时钟周期。(2)分两个阶段: PC+1Z :7+3+20+200+10=240ps;ZPC:7+3+20+10=40ps寄存器保持时间用来作为时间约束。因为在这个过程中,需要经过两次总线传输,每次都将传输信息保存在某个寄存器中,所以需要两个时钟周期。4. 右图6.30给出了某CPU内

8、部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。在两个总线之间的所有数据传送都需经过算术逻辑部件ALU。ALU可实现的部分功能及其控制信号如下:MOVa:F=A; MOVb:F=B;a+1:F=A+1; b+1:F=B+1a-1:F=A-1; b-1:F=B-1其中A和B是ALU的输入,F是ALU的输出。假定JSR(转子指令)指令占两个字,第一个字是操作码,第二个字给出子程序的起始地址,返回地址保存在主存的栈中,用SP(栈指示器)指向栈顶,按字编址,每次从主存读取一个字。请写出读取并执行JSR指令所要求的控制信号序列(提示:当前 指令地址在PC中)。参考答案:假定采用同步方式(若

9、为异步,则只需在read和Write后加一个等待信号WMFC)分三个阶段:1. 取指令操作码:PCout, MOVb, MARin Read, b+1, PCin MDRout, MOVb, IRin2. 取子程序首址:PCout, MOVb, MARin Read, b+1, Yin (返回地址在Y中) MDRout, MOVb, PCin(子程序首址在PC中)3. 保存返址至栈:SPout, MOVb, MARin Yout, MOVb, MDRin Write, SPout, b-1, SPin (注:若按最长的存储访问时间作为CPU时钟周期,则上述每个阶段都需三个时钟周期)能否用更少的

10、时钟周期完成上述功能?不能!以下是另一种方式)1. 取指令操作码:PCout, MOVb, MARin Read, b+1, Yin MDRout, MOVb, IRin2. 取子程序首址:Yout, MOVb, MARin Read, a+1, Yin (用b+1也行) MDRout, MOVb, PCin3. 保存返址至栈:SPout, MOVb, MARin Yout, MOVb, MDRin Write, SPout, b-1, Spin5. 假定某计算机字长16位,CPU内部结构如书中图6.9所示,CPU和存储器之间采用同步方式通信,按字编址。采用定长指令字格式,指令由两个字组成,第

11、一个字指明操作码和寻址方式,第二个字包含立即数Imm16。若一次存储访问所花时间为2个CPU时钟周期,每次存储访问存取一个字,取指令阶段第二次访存将Imm16取到MDR中,请写出下列指令在指令执行阶段的控制信号序列,并说明需要几个时钟周期。(1)将立即数Imm16加到寄存器R1中,此时,Imm16为立即操作数。即:RR1RR1+ Imm16(2)将地址为Imm16的存储单元的内容加到寄存器R1中,此时,Imm16为直接地址。即:RR1RR1+ MImm16(3)将存储单元Imm16的内容作为地址所指的存储单元的内容加到寄存器R1中。此时,Imm16为间接地址。即:RR1RR1+ MMImm16

12、参考答案:(1)MDRout, YinR1out, add, ZinZout, R1in需3个时钟周期(2)MDRout, MARinRead1,(R1out, Yin也可以放在该控制信号所在的时钟周期中) Read2, R1out, Yin MDRout, add, ZinZout, R1in需5个时钟周期(3)MDRout, MARinRead1 Read2 MDRout, MARinRead1,(R1out, Yin) Read2, R1out, Yin MDRout, add, ZinZout, R1in需8个时钟周期6. 假定图6.24单周期数据通路对应的控制逻辑发生错误,使得在任何

13、情况下控制信号RegWr、RegDst、Branch、MemWr、ExtOp、R-type总是为0,则哪些指令不能正确执行?为什么?参考答案:总是0总是1RegWr则所有需写结果到寄存器的指令(如:R-Type指令、load指令等)都不能正确执行,因为寄存器不发生写操作不需写结果到寄存器的指令可能会出错(如store,分支,转移指令等)RegDst则所有R-Type指令都不能正确执行,因为目的寄存器指定错误所有非R-Type指令都不能正确执行BranchBranch指令可能出错,因为永远不会发生转移非Branch指令都出错,因为下条指令的地址计算错误MemWrStore指令不能正确执行,因为存

14、储器不能写入所需数据非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”时的指令序

15、列 (2)假定用硬件实现时会使一条指令的执行时间增加10%,则swap指令在程序中占多大的比例才值得用硬件方式来实现? 参考答案: (1) swap指令可用以下三条指令实现。 xor $rs, $rs, $rt xor $rt, $rs, $rt xor $rs, $rs, $rt(若使用额外寄存器$rtemp,则$rtemp内容会被破坏,所以伪指令一般不能用额外寄存器)add $rtemp, $rs, $zero add $rs, $rt, $zero add $rt, $rtemp, $zero(若使用加减法,,可能溢出。如使用无符号数加减法addu,subu也可以)add $rs, $r

16、s, $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 5%9. 假定图6.33多周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号PCWr、IRWr、RegWr、BrWr、PCSource、MemWr、MemtoReg、PCWrCond、R-type总是为0,则哪些指令不能正确执行?为什么?参考答案:若PCWr=0,则所有指令都不正确,因为无法更新PC

17、 若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-

18、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指令不能正确执行,因为运算阶段的

19、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,其功能是:

20、若(ZF+(NFVF)=0) 则 PC=PC+2+Imm8 否则 PC=PC+2(1)该计算机的编址单位是什么?(2)画出实现Bgt指令的数据通路。参考答案:(1)该计算机的编址单位是字节。因为PC的增量是2,且每条指令占2个字节,所以编址单位是字节。(2)实现Bgt指令的数据通路如下根据“大于”条件判断表达式,可以看出该bgt指令实现的是带符号整数比较。因为无符号数比较时,其判断表达式中没有溢出标志OF。偏移地址Imm8为补码表示,转移目标地址可能在bgt指令之前,也可能在bgt指令之后。计算转移目标地址时,偏移量为Imm8, 范围为-128127,故转移目标地址的范围是PC+2+(-128

21、)PC+2+127 如果偏移量为Imm8x2, 转移目标地址的范围是PC+2+(-1282)PC+2+1272,其实意味着相对于bgt指令的前127条指令到后128条指令之间。13. 对于多周期MIPS处理器,假定将访问数据的过程分成两个时钟周期可使时钟频率从4.8GHz提高到5.6GHz,但会使得lw和sw指令增加时钟周期数。已知基准程序CPUint 2000中各类指令的频率为:Load: 25%,Store: 10%,Branch: 11%,Jump: 2%,ALU: 52%。以基准程序CPUint 2000为标准计算时钟频率提高后处理器的性能提高了多少?若将取指令过程再分成两个时钟周期,

22、则可进一步使时钟频率提高到6.4GHz,此时,时钟频率的提高是否也能带来处理器性能的提高?为什么?参考答案: 三种频率的机器上,各类指令的百分比和 CPILoadStoreBranchJumpALU25%10%11%2%52%M1 4.8GHz54334M2 5.6GHz65334M3 6.4GHz76445三种机器的平均CPI和MIPSCPIofM1=25%x5+10%x4+11%x3+2%x3+52%x4=4.12 CPIofM2=25%x6+10%x5+11%x3+2%x3+52%x4=4.47CPIofM3=25%x7+10%x6+11%x4+2%x4+52%x5=5.47 MIPSo

23、fM1=4.8G / 4.12 =1165MIPSofM2=5.6G / 4.47 = 1253MIPSofM3=6.4 G / 5.47 = 1170由此可见,数据存取改为双周期的做法效果较好。进一步把取指令改为双周期的做法反而使MIPS数变小了,所以不可取。因为数据存取只涉及到load/Store指令,而指令存取涉及到所有指令,使得CPI显著提高。15. 微程序控制器容量为102448位,微程序可在整个控存内实现转移,反映所有指令执行状态转换的有限状态机中有4个分支点,微指令采用水平格式,微地址由专门的下地址字段确定。请设计微指令的格式,说明各字段有多少位?为什么? 参考答案: 微程序控制

24、器容量为102448位,说明微地址占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,001

25、00,01000,10000 -其它16. 对于多周期CPU的异常和中断处理,回答以下问题:(1)对于除数为0、溢出、无效指令操作码、无效指令地址、无效数据地址、缺页、访问越权和外部中断, CPU在哪些指令的哪个时钟周期能分别检测到这些异常或中断?(2)在检测到某个异常或中断后,CPU通常要完成哪些工作?简要说明CPU如何完成这些工作?(3)TLB缺失和cache缺失各在哪个指令的哪个时钟周期被检测到?如果检测到发生了TLB缺失和cache缺失,那么,CPU各要完成哪些工作?简要说明CPU如何完成这些工作?(提示:TLB缺失可以有软件和硬件两种处理方式。)部分参考答案:a. “除数为0”异常在

26、取数/译码(ID/Reg)周期进行检测 b. “溢出”异常在R-Type指令的执行(Exe)周期进行检测 c. “无效指令”异常在取数/译码(ID/Reg)周期进行检测 d. “无效指令地址”、“缺页”和“访问越权”异常在取指令(IF)周期检测 e. “无效数据地址”、“缺页”和“访问越权”异常在存储器访问(Mem)周期检测f. “中断”可在每条指令的最后一个周期(WB)的最后进行检测11. 假定有一条MIPS伪指令“Bcmp $t1, $t2, $t3”,其功能是实现对两个主存块数据的比较,$t1和$t2中分别存放两个主存块的首地址,$t3中存放数据块的长度,每个数据占四个字节,若所有数据都

27、相等,则将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的内容不等

28、,则结束 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+507+1=352。其中,load指令为502=100条,时钟周期数为5100=500;branch指令数为1+250=101,时钟周期数为3101=303;addi指令数为1+350=151,时钟周期数为4151=604。所以,总时钟周期数最多为500+303+604=1407。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1