(2)指令中的【寻址特征】又称为【寻址方式】;指令中的操作数可以有多个,每个操作数都是【寻址特征】+【形式地址】共同指出。
形式地址可能是具体的某个内存地址 或 寄存器编号。
(3)以in或out结尾的控制信号控制某部件的输入输出,如用1表示有效时,
Tin=1表示向T输入数据,Tin=0表示未向T输入数据。
以op结尾的控制信号,如存储器控制信号MEMop,助记符是read读和write写(实际还是发送0和1二进制编码)。
机器字长=存储字长=指令字长=16bit
计算机所需要的数据刚好能通过一次存取操作取出(16bit)
(1)图中哪些寄存器是程序员可见的?为啥要设置暂存器T?
【解析】通用寄存器R0~R3和PC。
因此采用了单总线结构,若无暂存器T,则ALU的A、B端口会同时获得2个相同的数据,使数据通路不能正常工作。
【注意】程序员可见即指可编程,如在可在指令中指示使用哪个通用寄存器;可通过转移指令修改PC值;可修改PSW中的中断允许位来进行中断控制。PSW程序状态字存放一些标志和状态位。
(2)控制信号ALUop和SRop的位数至少各是多少?
【解析】等价于问 分别给ALU和SR的操作编号,各需要多少个二进制位。
ALU共有7种操作,故其操作控制信号ALUop至少需要3位,
SR移位寄存器共3种操作,其操作控制信号SRop至少需要2位。
(3)控制信号SRout所控制部件的名称或作用是?
【解析】信号SRout所控制的部件用于控制移位器与总线之间数据通路的连接与断开。
名称为三态门——可以根据控制信号产生3种状态(连接、断开&高阻)。
(4)端点1~9中,哪些端点需连接到控制部件的输出端?
【解析】首先明确控制部件输出啥,由于IR存放指令(送到控制部件),所以控制部件输出指令译码的结果(对应数据通路的数据信号)。
控制部件通过输出端向各个部件发送控制信号,故需要接收控制信号的端点都需要连接到控制部件的输出端——即在图中所有横着画的信号(端口1、2、3、5、8需连接到控制部件输出端)。
(5)为完善总线数据通路,需要在端点1~9中相应的端点之间添加必要的连线,写出连线的起点和终点,以正确表示数据的流动方向。
【解析】由于6号最终要连到4号的,而现在中间多了一个MUX,则是6号连接9号,7号连接4号。
(6)为啥二路选择器MUX的一个输入端是2?
【解析】多路选择器MUX——通过控制信号来决定把哪个输入端传送到输出端。
联想平时做题的PC+1,而该图中的PC旁边并没有写“+1”即没自动加1功能,所以要把PC送到ALU的一端,再通过MUX多路选择器把2送入ALU的另一端,ALU运算完PC+2后将结果送回PC。
【答案】因为每条指令的长度为16位,按字节编址,所以每条指令占2个内存单元,顺序执行时,下条指令地址为(PC)+2.MUX的一个输入端为2,可便于执行(PC)+2操作。
记住上题给的条件——采用16位定长指令字格式
(1)该机的指令系统最多可定义多少条指令?
【解析】寻址方式位分别为0和1意味着用1个二进制位;需用2个二进制位“寻址”4个通用寄存器。
可以有3个操作数,每个操作数有1位寻址方式位和2位寄存器编号。
操作码字段为16-3×(1+2)=7位,最多定义2^7=128条指令。
(2)假定inc、shl和sub指令的操作码分别为01H、02H和03H,则以下指令对应的机器代码各是什么?
1)inc R1 ; R1+1->R1
——单地址指令,最后6位为0,OP=000 0001,目的操作数=001,
所以机器代码为0000 0010 0100 0000即0240H.
2)shl R2,R1 ; (R1)<<1->R2
——二地址指令,最后3位为0,OP=000 0010,目的操作数为010(送到R2,寄存器直接寻址);源操作数为001(对R1寄存器直接寻址),即机器代码为0000 0100 1000 1000即0488H。
3)sub R3,(R1),R1; ((R1))-(R2)->R3
——三地址指令, OP=000 0011,目的操作数为011(送往R3,寄存器直接寻址);源操作数1为101(对R1寄存器间接寻址);源操作数2为010(对R2寄存器直接寻址),即机器代码为0000 0110 1110 1010即06EAH.
先分析取指阶段:
【第一个时钟周期】PCout=1时PC的值就会输出到总线上,所有和总线连接的部件都可以看到这个PC的值(但是是根据in结尾的控制信号来判断是否接收)。
可以看做MEMop=read中省略了MDRin=1(或把这里的read功能看作一个复杂的功能)。
【第二个时钟周期】ALUop=add,因为加法器的一端是输入了PC,所以可以推测是“PC+1”,但应该是从MUX过来一个“2”。
每行代表一个时钟周期,所以对第二行分析前要撤销所有第一行的通路上的控制信号(撤销信号不会改变寄存器、暂存器里面的内容)。
MUX是多路选择器(由MUXop决定将哪个输入直接送到输出端),MUXop=0时会选择2通过MUX进入ALU的一个端口。
【第三个时钟周期】ALU完成+2操作后将结果送到移位寄存器,再mov直送到SRout指的部件,PCin=1即使新的PC值进入PC。
【第四个时钟周期】MDRout(题目省略=1),IRin=1实现MDR->IR
再分析执行阶段:
------shl R2,R1:执行效果是(R1)<<1->R2
进入T后,ALU不用做啥——所以【直送ALUop=mova】,接着去到移位寄存器SR(SRop=left)
【注意】审题——ALU的直送是mova,而SR的直送是mov。
-------sub R0,R2,(R1):执行效果是((R1))-(R2)->R0
R1out=1,MARin=1,MEMop=read;
R2out=1,Tin=1
MDRout=1,MUXop=1 ALUop=sub(间接寻址后将MDR数据送往ALU和R2值作减法) SRop=mov
最后一个时钟周期,先看R0in=1即R0准备好接收数据,即前一个是SRout=1.
(4)指令“sub R1,R3,(R2)”和“inc R1”的执行阶段至少各需要多少个时钟周期?
【解析】sub R1,R3,(R2)和第三问的sub R0,R2,(R1)类似(只是寄存器编号不同),从题目图中可看出至少是4个时钟周期。
inc R1的执行阶段:(也和第三问的sub类似)
R1out=1,Tin=1,ALUop=inc,SRop=mov(不用到移位寄存器,所以直送moc就行)
SRout=1,R1in=1
【注意】inc是自增1(上一大题的题干有说)即inc R1效果为(R1)+1->R1和第三问中左边的(R1)<<1->R2类似,至少用2个时钟周期。
【注意】本题中有些步骤比较特殊,不像上面总结第四点的2)说的“有先后顺序不可并行”,所以要注意题目说明。
另外,要学会仿造题目安排微操作序列或者控制信号。