From Nand To Tetris 从与非门到俄罗斯方块

33、P1 W5 U5.2 取-执行-再取-再执行(待完善)

2019-08-12  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W5U5.2 - The Fetch-Execute Cycle

基本上CPU就是在循环干两件事:

1.取 指令 fetch
2.执行 指令 execute

取、执行

一、取 - Fetching

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

Fetching

而下下条将要执行的指令,是通过Program Counter (PC)里存的地址 来决定取ROM里哪条指令的。

如下图:
PC里存的 是 程序存储区(ROM)的 地址。
通过地址 在程序存储区找到 对应的寄存器。取出CPU将要执行的指令。

取出的指令 是通过 控制总线(上节提到的c控制位)被传到CPU。

PC里通常都是当前指令地址加1,跳转由其它命令载入跳转地址

二、执行 - Executing

指令主要干下面一些事:

1.算术或者逻辑运算
2.访问存储器
3.跳转指令

U4.4 HACK的机器语言这节课里讲过,指令都是被具体分成好几块来提供不同的控制。

指令的执行会涉及 访问寄存器 或者 访问 数据存储区。

那么详细细节,老师会在接下来的几节课里说命令。

Executing

三、取 和 执行,这里有一个冲突问题。

取指令 (程序区ROM)
读数据 (数据区RAM)

两种操作都会用到 存储区,那么控制指令如何区分这种的区别呢?

解决办法也很简单,就是分两步来执行。先取,再执行。就区分开了。


12.png

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

Multiplexor

这种把 程序 和 数据 放在一个 存储器里,并分别处理的架构叫

哈佛架构

一种 冯诺依曼架构的 变种。

避免了复杂化。


哈佛架构

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

上一篇下一篇

猜你喜欢

热点阅读