组成第五章答案2010版本.doc

上传人:jian****018 文档编号:8934272 上传时间:2020-04-02 格式:DOC 页数:13 大小:1.11MB
返回 下载 相关 举报
组成第五章答案2010版本.doc_第1页
第1页 / 共13页
组成第五章答案2010版本.doc_第2页
第2页 / 共13页
组成第五章答案2010版本.doc_第3页
第3页 / 共13页
点击查看更多>>
资源描述
计算机组成第五章考试部分参考答案陈天洲,居立晗(助教)tzchenzju.edu.cn, lhjuzju.edu.cn 本文档只针对2010级计算机组成章节考试的部分答案,请勿外传1、 单时钟周期中,IM与DM合成为一个MEM,可以吗?若可以,画出LW与SW指令的数据通道。若不可以,为什么?不可以,因为单时钟周期,一个周期内要先后用到IM和DM。无法用一个MEM器件完成一个时钟内两次触发。2、 多时钟周期中,DM能否分成IM与DM?若可以,如果仅仅实现LW与SW,画出LW与SW指令的数据通道。微程序的字段应该怎么修改。若不可以,为什么?可以。微程序的字段中要增加IM控制。存储器的字段的值要改,因为ALUOut已经没有必要了LabelALU controlsrc1src2register controlmemorypcwrite controlsequencingFetchaddpc4read pcALUSeqreadSeqaddAextenddispatch2SW2WriteFetchLW2readseqwrite mdrFetchDispatch rom2OpnameValue100011Lw2100101011Sw20113、 写出多时钟周期有限状态机第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。问最佳的时钟周期。如下表,不同指令在单时钟周期下的功能如下指令类型对应指令所使用的功能R-format取指令访问寄存器ALU访问寄存器LW取指令访问寄存器ALU访问寄存器访问寄存器SW取指令访问寄存器ALu访问寄存器Branch取指令访问寄存器ALUJump取指令计算各指令需要是时间,发现,LW指令是需要操作最多,时间最长的,2+4.6+1.3+1.7+2+1.3=12.9ns5、 单时钟周期仅仅完成jal指令,画出连线。Jal将PC4存储到寄存器组中,然后跳转所以需要一个加法器做PC4,然后把结果送到reg file的write data。Reg file的reg write为$ra,另外,后面的16bit扩展左移2bit后与PC4相加,结果送PC6、 多时钟周期下,实现一条指令,memadd $1 $2 $3,内存数组相加指令。将$1为起始地址的内存字,累加结果到$2,$3为需要相加的字的数目。使用微程序实现该指令的控制。分析:这是一道较难的题目,显然微程序里面有一个循环。这是典型的微程序的难题类型。memadd $1 $2 $3,显然需要进行如下流程:1、 取指令,pcpc42、 读寄存器。由于3个寄存器都需要读取,则加一个锁存器C。A存储$1,B存储$2,C存储$3。3、 以A为地址取内存数据到MDR4、 让ALU计算C1,结果存储在aluout,如果结果为0,转步骤1,否则转步骤5。需要一个dispatch5、 把步骤4计算的aluout写入$3,同时计算$1+4,输出到aluout6、 把aluout写入$1,同时以aluout为地址访问内存,输出到MDR7、 计算aluoutBMDR8、 将aluout写入$2,跳转到步骤5。微程序如下:含义labelALU controlsrc1src2register controlmemorypcwrite controlsequencingfetchaddPC4Read pcALUseqreadSeqMdr=Mem($1)Read ASeq$2=mdrWrite mdrSeqaluout=$3-1LoopsubtC1Dispatch$3=aluoutaluout=$1+4addA4Write aluSeq$1=aluoutMdr=mem($1)Write aluRead aluSeqaluout=$2+mdrAdd BmdrSeq$2=aluoutWrite aluloopDispatch表如下:计算结果转向目的数据0Fetch0非0Seq57、 多时钟周期下,实现指令jalr rs rd,该指令是无条件跳转指令,跳转地址在rs中,将下一条指令的地址保存在rd中。指令格式为R型:0rs0rd09655556a、 建立数据通道确保该指令的完成。b、 写出有限状态机。c、 实现该指令,完成的微程序(无需写出其他指令的微程序),写出修改的域,增加的值,新的dispatch表,对应的含义。d、 计算控存容量。A、修改原来的datapatch,锁存器A后面出来的那条线上增加一条线,拉到pc前面的多路选择器,增加一个选择项3。这是为了让rs的内容读出来以后直接找到跳转指令的地址pc+4那条线增加一个去向,拉到寄存器的writedata上,方便写入rd。就这两点变化。如图蓝色两根线与红色的两个选项。MemreadAlusrcA=0IorD=0IRwriteAluSrcB=01Aluop=00PcwritePcsource=00ab、只需要三步,一取指令,把pc+4存在pc中。二是译码。三是把A送到PC,把PC4送到rd里,所以有限状态机如下C、微程序如下所示labelALU controlsrc1src2register controlmemorypcwrite controlsequencingFetchAddPC4Read PCALUSeqReadWrite 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。8、 写出单时钟周期数据通道下,时钟周期的计算方法。已知IM,加4的加法器,控制器,寄存器组,ALU,DM各有延时,为TIM,T加4的加法器,T控制器,T寄存器组,TALU,TDM。其他开关、符号扩展、左移逻辑,门及控制器不考虑时延。有两条依赖关系:加法器完成PC+4,写PC读IM取指令;交给控制器译码,同时读寄存器组;然后可能是几种类别的指令1、 lw:首先ALU计算实际地址,如何访DM,然后写寄存器组2、 sw:首先ALU计算实际地址,如何访DM3、 R型: 首先ALU计算实际地址,然后写寄存器组由于题面没有给出条件跳转、无条件跳转等其他指令需要消耗的时间延迟所以T=max(T加4的加法器,(TIM +max(T控制器,T寄存器组)+TALU + + TDM + 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型指令。写出该指令使用多时钟周期实现时的微程序(仅仅实现该指令)。labelALU controlsrc1src2register controlmemorypcwrite controlsequencingFetchaddpc4read pcALUSeqreadSeqAddA0(增加)SeqRead ALUSeqRead MDRseqWrite MDRFetch增加一个mem操作read mdr,是用MDR内容为地址,访问内存。需要增加一条连接线,把MDR输入连接到memory read address。11、 已知dispatch rom 1与dispatch rom 2的内容可以调整。微程序如下,问:有没有哪条微程序位置不准确使得机器语言无法正常完成功能。若有,写出如何调整,并写出调整后的dispatch rom 1与dispatch rom 2的内容。若没有,也写出dispatch rom 1与dispatch rom 2的内容。labelALU controlsrc1src2register controlmemorypcwrite controlsequencingFetchaddpc4read pcALUSeqaddpcextshiftreaddispatch1Rformat1Func codeABseqwrite aluFetchMem1addAextenddispatch2BEQ1subtABAluout-condFetchSW2write aluFetchJump1jump addressFetchLW2read aluseqwrite mdrFetch正确,Dispatch1表如下:OpcodeName数据000000R型指令2100011Mem指令4101011Mem指令4000100Beq指令5000010Jump指令7Dispatch2表如下:OpcodeName数据100011Lw指令8101011Sw指令6其中是数据哪里来的?是该指令的序号。例如,dispatch2中sw指令的数据是什么?是sw2标号的微程序对应的序号。数一下,得到第0条是fetch,第二条是译码,sw2所在的微程序是第6条。12、 在CPU各组成部件不修改的情况下,有人提出,为了节省控存,可以将Rformat1的后续微指令与Rformat1的微指令合并,并且合并LW2与LW2的后续指令。新的微程序如下: Rformat1Func codeABwrite aluFetch 与LW2write mdrread aluFetch这样的修改需要修改微程序的地址选择逻辑。问新的微程序地址选择逻辑如何修改。微程序控制逻辑中还有没有需要修改的,if 有,怎么改。首先,需要把下一微程序的fetch改成自己定义的名词,例如Repeat,表示保持该状态2节拍,如何goto fetch。Rformat1Func codeABwrite aluRepeatLW2write mdrread aluRepeat地址选择逻辑里要增加addrcontrol的mux一个新的值为4,也就是维持不变状态,遇到Repeat后addrcontrol先选择4维持原始状态,如何下一节拍选择0去fetch。需要增加4,需要增加地址转接连接线路,如图蓝色所示。13、 已知有指令寻址方式为“变址寻址”,对数组操作特别有效。若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问这可能是什么指令的什么节拍。(前提:数据通道连线不修改)因为ALUSRCA1,ALU的A端数据为A;ALUSRCB=2,ALU的A端数据为16bit的32位扩展,即立即数;ALUOP01,做减法。意味着本指令节拍做A立即数。所以本指令是立即数减法。例如:Subi $1, $2, 4这是该指令的第三节拍。15、 一个计算机,能够完成j,beq,R型指令,LW,SW,以及类似addi $1, $1, 4的立即数ALU运算,写出微程序。labelALU controlsrc1src2register controlmemorypcwrite controlsequencingfetchaddPC4Read pcALUseqaddpcextshftreadDispatch 1AddiaddAextendSeqWrite alufetchR-typeaddABSeqWrite alufetchMem1AddAExtendDispatch2LW2Read ALuSeqWrite MDRFetchSW2Write ALUFetchBEQ1SubtABALUout-condFetchJUMP1Jump AddressFetchDispatch 1 table 3bitAddi2R4LW,SW6BEQ10J11Dispatch 2不变16、 PCWrite与PCWriteCond的区别。PCWrite:对PC进行写操作,数据来源由PCSource进行控制PCWritecond:如果ALU的Zero输出时,对PC进行写操作(当然要和PCWrite配合),当条件跳转的时候本信号被触发。17、 下图中5个箭头指向的线是几bit的,有什么作用?箭头3箭头2箭头1箭头4箭头5箭头1是2bit,控制ALU的第二个加数的来源。箭头2是2bit,控制ALU要进行的运算。箭头3是1bit,通过zero位之否为1控制是否写pc箭头4是3bit,控制alu的2bit 信号operation和1bit的Bnegate箭头5是5bit,提供rd。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!