视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W5U5.2 - The Fetch-Execute Cycle
基本上CPU就是在循环干两件事:
1.取 指令 fetch
2.执行 指令 execute

一、取 - Fetching
通过下一条指令的地址,对应找到程序存储区(ROM是存程序的memory)的 寄存器。
并把指令从对应寄存器取出来。

而下下条将要执行的指令,是通过Program Counter (PC)里存的地址 来决定取ROM里哪条指令的。
如下图:
PC里存的 是 程序存储区(ROM)的 地址。
通过地址 在程序存储区找到 对应的寄存器。取出CPU将要执行的指令。
取出的指令 是通过 控制总线(上节提到的c控制位)被传到CPU。

二、执行 - Executing
指令主要干下面一些事:
1.算术或者逻辑运算
2.访问存储器
3.跳转指令
U4.4 HACK的机器语言这节课里讲过,指令都是被具体分成好几块来提供不同的控制。
指令的执行会涉及 访问寄存器 或者 访问 数据存储区。
那么详细细节,老师会在接下来的几节课里说命令。

三、取 和 执行,这里有一个冲突问题。
取指令 (程序区ROM)
读数据 (数据区RAM)
两种操作都会用到 存储区,那么控制指令如何区分这种的区别呢?
解决办法也很简单,就是分两步来执行。先取,再执行。就区分开了。

实际操作的时候,这里 利用了 一个 选择器 Multiplexor,先取指令,存在一个寄存器里。然后在取数据,存在一个寄存器里。最后一起执行。

这种把 程序 和 数据 放在一个 存储器里,并分别处理的架构叫
哈佛架构
一种 冯诺依曼架构的 变种。
避免了复杂化。

这节课有点抽象。
下节课终于可以具体来实现Hack小电脑了。
网友评论