计算机组成之大题

1.“非常简单CPU"的寄存器和内部组织结构如下:存储空间为64B,程序员可访问的寄存器AC,另有工作用的6位地址寄存器AR、6位程序计数器PC、8位数据寄存器DR、2位指令寄存器IR。指令集结构如下:
指令指令码操作
在这里插入图片描述
(1) 假设初始时PC=0, AC=25H,内存各单元的内容如下所示。程序运行5个指令周期后,AC=?写出每步的过程。
在这里插入图片描述
在这里插入图片描述
(2)画出CPU状态图。
(3)用RTL语言写出各状态的操作语句。
在这里插入图片描述
(1) 1、执行AC和7号单元内容相与: 0010 0101 /\ 1010 1010=20H
2、AC和6号单元内容相加: 0010 0000+0000 0011=23H
3、AC自增1:24H
4、跳到1号单元
5、AC和6号单元内容相加: 24H+3H=27H
故程序运行5个指令周期后,AC=27H

(2)CPU状态图就是完成上面四种操作CPU所要进行的操作及其状态。因为指令寄存器IR有两位,所以完成四种操作需要用的IR指令分别为00、01、10、11
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.下图是一个简化的 CPU与主存连接结构示意图。各部件及其之间的连线表示数据通路,箭头表示信息传送方向。其中有四个寄存器:主存地址寄存器MAR、主存数据寄存器MDR、程序计数器PC、指令寄存器IR。图中的a、b、c. d各是其中之一。
要求:(1)写出图中a、b、C、d四个寄存器的名称。
(2)简述图中取指令(从主存取到控制器)的过程。
(3)说明数据从主存取出、运算、写回主存所经过的数据通路(假设数据地址已在MAR中)
在这里插入图片描述
(1)在图中,a和c与主存储器之间有连线,而MAR和MDR都是与主存储器有关联的,又因为a和主存储器之间连线是双向箭头的,说明之间可以交换数据,因此a是MDR,c是MAR。a有到b的连线,从取指过程可以知道,MDR中的地址数据可以交给IR进行译码,所以b是IR,因为d可以+1,很明显是PC
(2)
MAR<-PC
MDR<-M(MAR)
IR<-MDR
控制器<-IR
(3)根据图中进行写
M<-MAR (先将MAR的内容放进M中)
MDR<-M(MAR) (根据MAR在主存中找到地址对应的操作)
ALU<-MDR (MDR将操作给ALU)
AC<-ALU(ALU将计算结果给AC)
MDR<-AC(为什么不直接给主存反而给MDR呢?因为MDR可以和主存直接进行数据交换,所以用MDR来充当媒介)
M(MAR)<-MDR(利用MAR找到相应在主存中的存放地址)对应题目中返回主存的步骤


3.假定某计算机字长16位,CPU内部结构如图所示,CPU和存储器之间采用同步方式通信,按字编址。采用定长指令字格式,指令由两个字组成,第一字指明操作码、 寻址方式和一个寄存器编号,第二字为立即数imm16。若一次存储 访问所用时间为2个CPU时钟周期(Read1和Read2分别表示两个时钟周期内的操作控制信号),每次存储访问存取一个字, 取指令阶段第二次访存将imml6取到MDR中,请写出下列指令在执行阶段的控制信号序列,并说明需要几个时钟周期。
(1)将imm16加到寄存器R1中,即R[R1]←R[R1]+imm16
(2)将存储单元imm16中的内容加到寄存器RI中,此时,imm16为直接地址。即R[R1]←R[R1]+M[imm16]。
在这里插入图片描述
(1)每写入到一个寄存器中,都需要一个时钟周期
控制信号的书写都是一些in和out 的组合
指令功能为R[R1]←R[R1]+imm16时,执行阶段不需要访存操作,因此,可用3个时钟周期完成,分别包含以下各控制信号:
MDRout, Yin
Rlout, add, Zin
Zout, R1in
理解:第一步,是将imm16从MDR中读出来放进Y中(根据图来做)
第二步:将R1的内容读出并进入ALU中与Y的内容(imm16)进行add将结果放进Z中
第三步:将Z的内容放进R1中
(2)指令功能为R[R1]←R[R1]+M[imm16]时,执行需要访问一次主存,所以至少需要5个时钟周期。
MDRout,MARin
Read1,(R1out,Yin)
Read2,R1out,Yin
MDRout,add,Zin
Zout,R1in
理解:首先,需要将imm16的地址给MAR(因为涉及到访存)
然后,因为Read1和Read2需要经过两个时钟周期,又因为Read1和Read2的过程中是在主存中完成的,而R1out,Yin是在主存外完成的,所以可以同时进行而不互相影响,Read完成后,将操作数MDR中的与Y进行add操作并给Z,将Z中的数给R1


4.、某16位计算机主存按字节编码。存取单位为16位,采用16位定长指令格式,CPU采用单总线结构。主要部分如下图a所示。图中RO-R3为通用寄存器,T为暂存器,SR 为移位寄存器。SR 可实现直送(mov)、 左移一位(left)、 右移位(right) 3种操作,控制信号为SRop, SR的输出信号SRout控制。ALU可实现直送A (mova)、 A加B(add)、A减B(sub)、A与B(and)、A或B(or)、非A (not)、A加1(inc)等7种操作,控制信号为ALUop。
该机指令格式如图b所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为0、1。通用寄存器RO-R3的编号分别为0、1、2、3.图b中Md、Ms1、Ms2为寻址方式位,Rd、Rsl、Rs2 为寄存器编号。当为二地址指令时,末3位为0;当为单地址指令时,末6位为0。
在这里插入图片描述
在这里插入图片描述
(1)写出寄存器TAR、 HDR、 PC、 IR的中文名称。
答: MAR:存储器地址寄存器,
MDR:存储器数据寄存器,
PC:程序计数器,
IR:指令寄存器。

(2) 控制信号SRop 和ALUop的位数至少各是多少?
看控制信号为多少位,需要知道它各有几个操作。
SR 可实现直送(mov)、 左移一位(left)、 右移位(right) 3种操作,所以需要2位
ALU可实现直送A (mova)、 A加B(add)、A减B(sub)、A与B(and)、A或B(or)、非A (not)、A加1(inc)等7种操作,所以需要3位

(3)为什么二路选择器MUX的一个输入端是2?
答:主存按字节编码,存取单位为16位,指令长度为16位,故PC自增2以获得下一个指令的地址。

(4)该机的指令系统最多可定义多少条指令?写出分析过程。(3分)。
可以实现多少条指令需要看指令字长中操作码有多少位。
支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为0、1。通用寄存器RO-R3的编号分别为0、1、2、3.图b中Md、Ms1、Ms2为寻址方式位,Rd、Rsl、Rs2 为寄存器编号。当为二地址指令时,末3位为0;当为单地址指令时,末6位为0。
因为寻址方式有0、1,所以需要1位,即Md为1位,寄存器RO-R3的编号分别为0、1、2、3,所以需要2位,所以地址码需要3*3位,即9位,所以操作码有16-9=7位,可以实现2^7=128条指令

(5) 假设左移指令shl 和减法指令sub 的操作码分别为02H、03H, 则以下指令语句对应的机器代码各是什么?写出过程,结果用十六进制表示
shl R2, R1 ;R2←R1<<1
sub R3, (R1),R2 ;R3←(R1)-R2 注: 括号为间接寻址。
答: shl R2,RI ;R2←R1<<1: 2
在这里插入图片描述
机器码为488H
理解:shl中,源操作数只有1个,所以源操作数2为000,又因为是直接寻址,所以Md和Ms1为0,因为目的操作数为R1,所以Rd为10,源操作数为R1,所以Ms1为01
最后,将所有的指令二进制机器码变成16进制表示就可以了

sub R3, (R1),R2 ;R3←(R1)-R2
在这里插入图片描述
机器码为6EAH。

(6)假定任意寄存器X的输入和输出信号分别为Xin、Xout、1为有效。0为无效(如PCout=1表示PC内容送总线)。以下是指令语句shl R2, R1的取指和执行过程。写出其中标号甲、乙、丙、丁的控制信号(如加法信号为add) 或控制信号取值(0或1)。
在这里插入图片描述
理解:shl R2, R1表示将R1的内容左移1位之后存在R2中
在上面中的0表示无效,所有的1表示有效。
可以根据对比正常的取指和执行操作来判断他们的取值

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值