当前位置:文档之家› 组成第五章答案2010版本

组成第五章答案2010版本

计算机组成第五章考试部分参考答案陈天洲,居立晗(助教)tzchen@, lhju@ 本文档只针对2010级计算机组成章节考试的部分答案,请勿外传1、单时钟周期中,IM与DM合成为一个MEM,可以吗?若可以,画出LW与SW指令的数据通道。

若不可以,为什么?不可以,因为单时钟周期,一个周期内要先后用到IM和DM。

无法用一个MEM器件完成一个时钟内两次触发。

2、多时钟周期中,DM能否分成IM与DM?若可以,如果仅仅实现LW与SW,画出LW与SW指令的数据通道。

微程序的字段应该怎么修改。

若不可以,为什么?可以。

微程序的字段中要增加IM控制。

存储器的字段的值要改,因为ALUOut已经没有必要了Dispatch rom23、写出多时钟周期有限状态机第0状态的各个信号量,并写出触发的时间顺序。

Memread,ALUSrcA=0,IorD=0,IRWrite,ALUSrcB=01,ALUOp=00,PCWrite,PCSource=00.有前后依赖关系的信号有两个系列:1、ALUSrc,ALUSrcB在前,ALUOp后触发,用来做PC+4操作,之后触发PCSource,然后是PCwrite。

2、IorD先触发,然后是Memread4、已知单时钟周期cpu,IM/DM读访问周期2ns,IM/DM写访问周期1.5ns,REGDST等信号由控制器产生需要延时为4.6ns,ALU延时1.7ns,寄存器组访问延时为1.3ns。

问最佳的时钟周期。

如下表,不同指令在单时钟周期下的功能如下计算各指令需要是时间,发现,LW指令是需要操作最多,时间最长的,2+4.6+1.3+1.7+2+1.3=12.9ns5、单时钟周期仅仅完成jal指令,画出连线。

Jal将PC+4存储到寄存器组中,然后跳转所以需要一个加法器做PC+4,然后把结果送到reg file的write data。

Reg file的reg write 为$ra,另外,后面的16bit扩展左移2bit后与PC+4相加,结果送PC6、多时钟周期下,实现一条指令,memadd $1 $2 $3,内存数组相加指令。

将$1为起始地址的内存字,累加结果到$2,$3为需要相加的字的数目。

使用微程序实现该指令的控制。

分析:这是一道较难的题目,显然微程序里面有一个循环。

这是典型的微程序的难题类型。

memadd $1 $2 $3,显然需要进行如下流程:1、取指令,pc=pc+42、读寄存器。

由于3个寄存器都需要读取,则加一个锁存器C。

A存储$1,B存储$2,C存储$3。

3、以A为地址取内存数据到MDR4、让ALU计算C-1,结果存储在aluout,如果结果为0,转步骤1,否则转步骤5。

需要一个dispatch5、把步骤4计算的aluout写入$3,同时计算$1+4,输出到aluout6、把aluout写入$1,同时以aluout为地址访问内存,输出到MDR7、计算aluout=B+MDR8、将aluout写入$2,跳转到步骤5。

微程序如下:Dispatch表如下:7、多时钟周期下,实现指令jalr rs rd,该指令是无条件跳转指令,跳转地址在rs中,将下一条指令的地址保存在rd中。

指令格式为R型:a、建立数据通道确保该指令的完成。

b、写出有限状态机。

c、实现该指令,完成的微程序(无需写出其他指令的微程序),写出修改的域,增加的值,新的dispatch表,对应的含义。

d、计算控存容量。

A、修改原来的datapatch,锁存器A后面出来的那条线上增加一条线,拉到pc前面的多路选择器,增加一个选择项3。

这是为了让rs的内容读出来以后直接找到跳转指令的地址pc+4那条线增加一个去向,拉到寄存器的writedata上,方便写入rd。

就这两点变化。

如图蓝色两根线与红色的两个选项。

b 、只需要三步,一取指令,把pc+4存在pc 中。

二是译码。

三是把A 送到PC ,把PC +4送到rd 里,所以有限状态机如下 C 、微程序如下所示 label ALU controlsrc1src2 register control memory pcwrite control sequencing Fetch Add PC 4 Read PC ALU Seq ReadWrite pcAFetch红色的两个值是需要增加的,表示需要增加register control 一个新的值,write pc ,表示寄存器的数据来源于PC 。

Pcwrite control 需要增加一个来源为A 。

D 、由于原来的register control 需要2bit ,只有3个值,不需要增加register control 的bit 数目。

Pcwrite control 也一样。

所以控存数目不变。

ALU control 需要2bit ,src1需要1bit ,src2需要2bit ,register control 需要2bit ,memory 需要2bit ,pcwrite control 需要2bit ,sequencing 需要2bit 。

一行微程序大小为2+1+2+2+2+2+2=13bit 。

3行需要控存39bit 。

MemreadAlusrcA=0 IorD=0 IRwrite AluSrcB=01 Aluop=00 PcwritePcsource=00a8、写出单时钟周期数据通道下,时钟周期的计算方法。

已知IM,加4的加法器,控制器,寄存器组,ALU,DM各有延时,为T IM,T加4的加法器,T控制器,T寄存器组,T ALU,T DM。

其他开关、符号扩展、左移逻辑,门及控制器不考虑时延。

有两条依赖关系:加法器完成PC+4,写PC读IM取指令;交给控制器译码,同时读寄存器组;然后可能是几种类别的指令1、l w:首先ALU计算实际地址,如何访DM,然后写寄存器组2、s w:首先ALU计算实际地址,如何访DM3、R型: 首先ALU计算实际地址,然后写寄存器组由于题面没有给出条件跳转、无条件跳转等其他指令需要消耗的时间延迟所以T=max(T加4的加法器,(T IM +max(T控制器,T寄存器组)+T ALU + + T DM + T寄存器组))9、有人说,多时钟周期实现R型指令,在第四节拍写回寄存器节拍中,需要保持ALUSRCA=1, ALUSRCB=00, ALUOP=10,这样在R型指令就不需要ALUOUT这个锁存器了。

这个说法是否正确,说明原因。

正确。

因为ALUOUT这个锁存器的作用是保存跳转地址,而R型指令的值直接写回就可以了,如果只需要R型指令,那么这个锁存器可以去掉。

但是要注意的是,如果在R型指令中取消了ALUOUT这个锁存器,必须在第四周期保持三个信号,因为数据存储在alu输出的数据存储在32位数据线上,以免在数据没有写入寄存器组前,三个信号出现变化造成alu输出变化。

10、已知有指令寻址方式为“存储器间接寻址”,若内存1000H的内容为404CH,又内存地址为404CH的内容为607FH。

则指令load $1, @($2)表示从内存1000的内容404CH为地址,取出该地址的数据607FH传输到寄存器$1。

指令index型指令。

写出该指令使用多时钟周期实现时的微程序(仅仅实现该指令)。

把MDR输入连接到memory read address。

11、已知dispatch rom 1与dispatch rom 2的内容可以调整。

微程序如下,问:有没有哪条微程序位置不准确使得机器语言无法正常完成功能。

若有,写出如何调整,并写出调整后的dispatch rom 1与dispatch rom 2的内容。

若没有,也写出dispatch rom 1与dispatch rom 2的内容。

正确,Dispatch1表如下:Dispatch2表如下:其中是数据哪里来的?是该指令的序号。

例如,dispatch2中sw指令的数据是什么?是sw2标号的微程序对应的序号。

数一下,得到第0条是fetch,第二条是译码,…,sw2所在的微程序是第6条。

12、在CPU各组成部件不修改的情况下,有人提出,为了节省控存,可以将Rformat1的后续微指令与Rformat1的微指令合并,并且合并LW2与LW2的后续指令。

新的微程序如下:微程序控制逻辑中还有没有需要修改的,if 有,怎么改。

首先,需要把下一微程序的fetch改成自己定义的名词,例如Repeat,表示保持该状态2节拍,如何goto fetch。

地址选择逻辑里要增加addrcontrol的mux一个新的值为4,也就是维持不变状态,遇到后addrcontrol先选择4维持原始状态,如何下一节拍选择0去fetch。

Repeat13、已知有指令寻址方式为“变址寻址”,对数组操作特别有效。

若add $3 ($1+$2)指令,表示$3=$3+MEM($1+$2)。

指令为R型指令。

该指令能否使用单时钟周期来完成(可以增加必要的器件)?如果可以,写出该指令使用单时钟周期实现时的数据通道(仅仅实现该指令)。

如果不可以,为什么?不可以使用单时钟周期完成。

因为单时钟周期里,要实现$1+$2,必须读这两个寄存器的值,于是指令的[25-21]和[20-16]就存的是$1和$2。

而做完了MEM($1+$2)以后,要和$3相加并存放在$3中,这就要求$3存在[20-16]中,矛盾了。

如果硬件可以更新,可以:1、寄存器组需要修改:成为3个读口,1个写口,3个数据输出锁存器14、已知有限状态机中,有一个状态,其中部分信号量如下:ALUSRCA=1ALUSRCB=2ALUOP=01问这可能是什么指令的什么节拍。

(前提:数据通道连线不修改)因为ALUSRCA=1,ALU的A端数据为A;ALUSRCB=2,ALU的A端数据为16bit 的32位扩展,即立即数;ALUOP=01,做减法。

意味着本指令节拍做A-立即数。

所以本指令是立即数减法。

例如:Subi $1, $2, 4这是该指令的第三节拍。

15、一个计算机,能够完成j,beq,R型指令,LW,SW,以及类似addi $1, $1, 4的立即数ALU运算,写出微程序。

Dispatch 1 table 3bitDispatch 2不变16、PCWrite与PCWriteCond的区别。

PCWrite:对PC进行写操作,数据来源由PCSource进行控制PCWritecond:如果ALU的Zero输出时,对PC进行写操作(当然要和PCWrite配合),当条件跳转的时候本信号被触发。

17、下图中5个箭头指向的线是几bit的,有什么作用?箭头1是2bit,控制ALU的第二个加数的来源。

箭头2是2bit,控制ALU要进行的运算。

箭头3是1bit,通过zero位之否为1控制是否写pc箭头4是3bit,控制alu的2bit 信号operation和1bit的Bnegate 箭头5是5bit,提供rd。

相关主题