数据通路习题分析之二

来源:互联网 发布:子账号在淘宝哪里登陆 编辑:程序博客网 时间:2024/05/22 05:26

某计算机的数据通路结构如下,写出实现指令ADD R1,(R2)的微操作序列。
PS:结构图手绘。
这里写图片描述

结构分析:这并不是任何一个我们见过的机器的结构,这么设计的原因是对知识的理解程度的考察。我们写过那么多定式,不是为了记忆一模一样的结构下,数据的通路计算,而是领会设计的思想。

首先观察结构,ALU无疑是核心,左右两端各有一个寄存器,应该就是我们常说的暂存寄存器,同时也表明暂存寄存器可以多个。这里没有累加寄存器,运算结果直接排出到总线了。暂存寄存器的数值也是从总线拿来。总线只画了一条粗的,我们按照一次只能传送一个数据的原则考虑。右边那个大大的M表示的是主存,左右两大护法这下是围绕在主存左右了。这个不是重点,重点是它俩的职责还是一样。
最下面一排通用寄存器组可以向LA,LB两个暂存寄存器提供值。
最底层的是PC,PC的功能我们太熟悉了,主要记住取完指令会自增。且PC可以向MAR提供地址值。

分析完毕,开始动手写流程。

C1:(PC)MAR;PCout,MARin
C2:M(MAR)MDR,(PC)+1PC;MemR,MDRin,PC+1
C3:(MDR)IR;MDRout,IRin //取得的指令完美送到IR

C4:指令译码
//开始去取R2内容表示的主存单元的数据
C5:(R2)MAR;R2out,MARin
C6:M(MAR)MDR;MARout,MDRin
C7:(MDR)LA;MDRout,LAin
C8:(R1)LB;R1out,LBin
C9:(LA)+(LB)R1;LAout,LBout,R1in,Bus,BusR1

以上是仿照真题的答案给出的写法。但是注意到有两条指令可以并行:

C7:(MDR)LA;MDRout,LAin
C8:(R1)LB;R1out,LBin

C7需要总线,C8不用总线,因此可以同时执行,所以可以节省一个时钟周期。

以上。

0 0
原创粉丝点击