视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W5U5.3 - Central Processing Unit
第五周,前两节课 U5.1 和 U5.2 基本上大概描述了一下 总线 和 CPU 执行程序时的运行方式。
这节课 U5.3,老师就提供了一种实现CPU的 逻辑单元组成图。
老师在给出一种方案前,还是要再说说抽象概念。感叹了一下CPU的神奇与美丽,静态程序马上就可以被运行起来了,仔细想想是挺不可思议。
CPU黑盒
CPU黑盒,执行当前命令,准备下一条要执行的命令
讲CPU的内部方案前,先说明一下黑盒对外的输入输出,主要就是和 数据存储和 程序存储 的交互。
黑盒左侧三个输入
16位data 要被当前命令处理的数据
16位instruction 当前的命令
还有1位输入之后再说 reset
CPU 的 输入项
黑盒右侧四个输出
16位outM 要写回的数据(往data memory存的数据)
1位writeM 是否写标识 (决定上面数据要不要写,也可以丢弃)
15位addressM 要存哪 (如果决定写入,那么这个提供写入data memory里的地址)
15位pc 下一条要执行的命令的地址(这个很重要,接下来会讲到)
CPU 的 输出项
打开黑盒
老师提供了其中一种高效简洁的方案,如下图
蓝色框的左右侧是上面提到的 输入和输出。
蓝色框内部,一看都是我们之前学过的。
(ALU 回顾 U2.4)
(PC 回顾 U3.4)
c 符号是控制位 control bits 不过这些从哪里来?老师故意不说清楚的,就是让学生在作业里自己搞明白...,命令里提取出来的?
黑盒内部
下面老师分三部分来讲解 CPU黑盒的内部
黑盒第一部分
19.png
第一部分主要是 处理指令,放大如下
首先如下图,看一个 指令@3001,回顾U4.3我们知道
@3001 就是把 3001 存入A register
(指令分 A指令 和 C指令,回顾U4.3)
A register 还有可能存入 ALU 的数据输出 (上图的outM),有一个Mux16的c控制位决定。
A register 根据之前 U4.3 的知识回顾,有三个功能。
A命令有设置常数参与计算的功能。应该就是上图A register输出 走入ALU的箭头路线。
A命令,还有自动选取M 寄存器 的功能。所以上图 A register输出 不加控制位,直接有一箭头走到 addressM
A命令,还有可能参与跳转,所以上图再往下 A register输出 有一箭头走到了PC(回顾U4.3 实例练习3)
@3001 的二进制数最左侧是0,代表是A指令
黑盒第二部分
在开始讲第二部分前,回顾一下C指令 (具体请看 U4.4)
最左边一位为1,代表C-指令,然后依次往右两位没用到,但是惯例设成1。
然后7位 蓝色0011111 代表 comp (决定选择哪些寄存器,参与什么运算)
然后3位 绿色010 代表 dest(决定结果存在哪里)
最后3位 红色111 代表 jump(决定运算结果与0进行那种判断,跳转位置需提前存在A寄存器)
C指令,回顾第四周内容
接下来讲解最黑盒内部复杂的部分-ALU
ALU 回顾 U2.4
放大如下图
ALU 输入
一个 D 寄存器
一个 A寄存器或者M寄存器
对进入的两个数,进行怎样的操作,由C指令上的 蓝色 数决定(不应该是7位吗?回顾U2.4 和 U4.4,为啥图里只有6位)
命令中的蓝色位决(comp)定由谁(D、A、M寄存器)参与什么计算
ALU 输出
上面提到回顾U4.4时,ALU输出存在哪里由 下图绿色三位决定(dest)
ALU 的输出会同时 送到 D、A、M寄存器,但是三个寄存器是不是要接受,就由dest决定了。
这个看来图中c标志都是根据 指令里提取出来的
注意上图里 ALU 还有两个 输出位,如下图所示
一个说明 ALU的计算结果是否为 负
一个说明 ALU的计算结果是否为 零
这个和接下来黑盒第三部分PC,有关
是负吗?是零吗?
黑盒第三部分
第三部分
Reset:它就像计算机重启按钮,一按hack小电脑就从头开始执行程序
(估计就是把PC地址设置成 instruction memory 的第一个位置。)
PC:决定下一条指令的地址
Reset、 PC
下图左侧C指令里红色位(jjj)回顾U4.4
如果
jjj = 000,不跳转,下一步执行,PC自加1的位置
jjj = 111,直接跳转,下一步执行,PC等于当前A存的位置
有条件跳转,参考U4.4里的一个图表。
这里具体几个细节如何实现老师让自己想
这里老师给出一个大概判断顺序,如下图
先判断 Reset
再通过 当前指令的jump(jjj) 和 ALU 两个输出 控制位(是负?是零?)
得出一个结果(load)
在通过load来判断PC如何设置下一条指令的地址。
原理讲清楚了,具体怎么实现还是自己想
到此 HACK小电脑的 CPU 就算讲解完了。
照理说,现在可以去写那个 HDL吧。
老师说别急。
因为CPU涉及到整个架构(存储啊,显示器,键盘)
总之先听完下节课再动手。












网友评论