上一节讲到了CPU内部单总线数据通路方式,这节来讲专用数据通路方式
1.专用数据通路方式
(1)取指令
•将PC的值传送到MAR中,即(PC)--->MAR,此时C0有效
•MAR的地址信息通过地址总线传送给主存,即(MAR)--->主存,此时C1有效
•主存接收地址信息,再让CU给主存发送读控制信号,主存则可读取出对应地址的数据,即:1--->R
•主存将读取的数据通过数据总线传送给MDR,即M(MAR)--->MDR,此时C2有效。
•执行指令之前,应该将指令送到IR中,即,(MDR)--->IR,此时C3有效
•每取出一条指令PC自动加1
取指令过程,如下图所示:
(2)分析指令
将IR中的指令的操作码部分传到CU中进行译码,Oo(IR)--->CU,此时C4有效。如下图所示:
(3)专用数据通路方式的例题
下图是一个简化了的CPU主存连接结构示意图(图中省略了所有的多路选择器)。其中有一个累
加寄存器(ACC)、一个状态数据寄存器和其他4个寄存器:主存地址寄存器(MAR)、主存数据寄存器(MDR)、程序寄存器(PC)和指令寄存器(IR),各部件及其之间的连线表示数据通路,箭头表示信息传递方向。
(1)请写出图中a、b、c、d 4个寄存器的名称。
(2)简述图中取指令的数据通路。
(3)简述数据在运算器和主存之间进行存/取访问
(4)简述完成指令LDA X的数据通路(X为主存地址,LDA的功能为(X)--->ACC)
(5)简述完成指令ADD Y的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)--->ACC)
(6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)--->Z)
(1)请写出图中a、b、c、d 4个寄存器的名称。
d 能自动“+1”,是PC
PC内容是地址,送MAR,故c是MAR
微操作信号发生器中包含指令译码器,用来解析操作码,b与微操作信号发生器相连,是IR。IR将指令的操作码部分传送到微操作信号发生器,微操作信号发生器的指令译码器再解析操作码
MAR中的地址信息只有可能单向的传送给主存储器,而MDR与主存是双向交互的,即MDR读/写主存。所以a是MDR
(2)简述图中取指令的数据通路。
指令的地址存放在PC中,所以将PC的值放到MAR中
(PC)--->MAR
根据MAR的值在主存中找到相应的数据,放到MDR中
M(MAR)--->MDR
将MDR的指令存放到IR中
(MDR)--->IR
将指令的操作码部分交由微操作信号发生器解析
OP(IR)--->微操作信号发生器
取出一条指令后,PC自动加1
(PC)+1--->PC
(3)简述数据在运算器和主存之间进行存/取访问
解读:运算器ALU并不是寄存器,这个部件没有存储的功能,ALU要使用的数据会放到ACC中,题目中问的运算器和主存之间进行存/取访问的数据通路,实质上是ACC和主存之间进行存/取访问的数据通路
设数据地址已放入MAR中
取:
把主存中MAR指明的数据放到MDR中
M(MAR)--->MDR
MDR的数据由ALU转发到ACC中,这样就完成了从主存读一个数据存放到ACC中
(MDR)--->ALU--->ACC
存:
将ACC中的数据传输到MDR中
(ACC)--->MDR
主存储器根据MAR提供的地址信息,往存储单元中存放MDR的数据
(MDR)--->M(MAR)
(4)简述完成指令LDA X的数据通路(X为主存地址)
(5)简述完成指令ADD Y的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)--->ACC)
(6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)--->Z)
(4)(5)(6)要完成的将X放到ACC中,再从主存储器中取出另一个操作数Y,
(6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)--->Z)
(4)(5)(6)要完成的将X放到ACC中,再从主存储器中取出另一个操作数Y,X+Y的运算结果再放入ACC中,再把这一结果存入主存储器中,存放到Z所指的地址。
(4)
把地址X放入MAR中
X--->MAR或Ad(IR)--->MAR
主存储器根据MAR的地址信息在存储单元找到相应的数据放到MDR中
M(MAR)--->MDR
再将MDR的数据,由ALU转发,存入ACC中
(MDR)--->ALU--->ACC
(5)
Y为主存地址,所以将Y存放到MAR中
Y--->MAR或者Ad(IR)--->MAR
将Y所指的数据从主存储器读出,通过数据总线放到MDR中
M(MAR)--->MDR
到这一步骤,加法操作的X存放到ACC中,Y存放再MDR中,将这两个数相加,再把相加的结果存放回ACC中
ALU--->ACC
(6)
由于这个指令已经放到IR指令寄存器中,所以MAR直接从IR指令寄存器中将指令的地址码取出
Z--->MAR或Ad(IR)--->MAR
再将加法得到的结果,由ACC传送到MDR中
(ACC)--->MDR
最后将MDR存放的数据,存放到MAR指向的存储单元即可
(MDR)--->M(MAR)
总结:
对于专用数据通路,若两个部件之间存在数据流动,就需要为其建立专门数据通路。所以成本较高,但是各个数据通路相互独立,可以并行进行指令的传送,效率提高很多。
专用数据通路中,某个部件的输入可能会有多条,可以用多路选择器或三态门,CU通过控制信号决定哪个输入信号有效即可。