指令周期的数据流

来源:互联网 发布:帝国cms小说 编辑:程序博客网 时间:2024/05/22 14:09

这一部分的知识脉络本身就足够结构化,很容易联想,但是忍不住来编故事以形象化这部分的内容。不仅是因为这部分的知识点很重要也因为这部分的内容有趣。

数据流

数据流是什么?
答:数据流是根据指令要求依次访问的数据序列。

取指周期

首先问,这个部分的核心任务是什么?

从主存中取出指令代码并交到IR中

上面便是行动的总指南。主存是个宝藏,有各种各样的资源。CPU里面的控制单元是行动的指挥,是个智囊。左右两大护法是MAR和MDR,一个拿着管地址一个管数据。后方PC负责产生MAR需要的地址。也即:左护法听命于PC。
现在任务来了,因为是取指令,那么地址得先明确,PC把地址告诉MAR,MAR并非事必躬亲,而是把这个地址发送到公交车Bus上。外面总共跑着三班公交车A,D,C:地址总线,数据总线和控制总线。
A路公交车专门搬运地址,D路公交车搬运的是数据,C路公交车搬运的是控制信号。

现在MAR把地址信号放在A路公交车上,就可以把地址送到主存那边,告诉主存需要的东西地址在哪里。但是,主存不会随便操作,它受CU的严密管控。因此,要等一个CU的信号过来,这个信号会乘着C路公交过来。等到它来了,主存愉快的配合把数据拿出来了,放到D路公交车上,开回到CPU,右护法MDR一看数据来了,取出来,再跑过去送给IR,任务完成。

所以:
PC>MAR,
MAR>线,
线>,
CU>,
>线,
线>MDR,
MDR>IR

间址周期

核心任务:取操作数的有效地址
因为间址可有一次间址,两次间址乃至更多,这里只用最简单的举例。

取完指令,IR中就有了一条指令,我们知道这个指令中有操作码还有待解析的操作数的地址。因此,用Ad()函数取出IR中的地址码,当然这里也可以去对MDR操作,因为间址是紧跟着取指周期的,MDR还暂存着指令的内容。地址码,一看到地址码,马上就该调用左护法MAR,将地址码交到A路公车,带着它到了主存。同样仅仅地址过来没用,还得等C路公车的信号过来。CU的信号过来告诉主存这么这么办,然后主存把数据放到D路公车,送到了MDR;这个数据是操作数的有效地址,拿着这个地址就可以到主存中找到数据了。
下一步如何进行,是另外的过程了。

执行周期

数据流形态各异,具体问题具体分析。

中断周期

核心任务是:处理中断请求。
在中断部分详细阐述,牵涉到更复杂的控制。

待update。

以上。

2 0
原创粉丝点击