视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W2U2.4 - Arithmetic Logic Unit
软件:
全课程所需软件项目包官方下载:
https://www.nand2tetris.org/software
备了一份软件项目包放在CSDN了,版本2.6支持Mac、Linux、Windows:
https://download.csdn.net/download/shazizm/11268147
经过一周多的基础知识的学习和枯燥的坚持。今天终于有了猛料了。
在下图看到熟悉的CPU了。
今天就一探CPU的核心部分ALU(Arithmetic Logic Unit 算术逻辑单元)
下图是 ALU 的示意图(只是示意,后面有详细的介绍),像其他逻辑门一样:
左边2个输入,
右边1个输出。
上方1个 f 代表 也是输入。
ALU由很多操作组成,例如:清零、置一、加、减、与、或、非、等等。
那么 f 就是说,选择ALU中哪些操作,来对左边2个输入进行算术或逻辑运算。
另外这里提到了一个取舍问题。因为有些操作是可以在软件部分处理的。
那么哪些该用硬件实现,哪些该用软件间接实现。
对应计算性能和架构复杂度就成了一个取舍的问题。
取舍问题,我们就不考虑了,老师已经选好了
下图 是这次老师为“HACK”小电脑,特别定制准备的“HACK”ALU,也是学生要去实现的作业。
下图右侧可以看出老师设计了18 种 操作。
如下图:
x、y: 两个输入操作数 (16位的补码表示的二进制,方便负数加法和溢出,参考:P1 W2 U2.3 负数 与 减法)
out:输出结果 (16位二进制)
zx 、nx、 zy、 ny、 f、 、no:功能位(不同的基础功能组合,可以得出不同的运算。这很像Mux里的sel)
zr、ng:输出控制位(一会儿解释)
可以大概对应理解 x、y 送进来的就是 “数据”。zx、nx、zy、ny、f、no 送进来的就是“程序”。
下图给出了
zx、nx、zy、ny、f、no
out
真值表
已知上图,求...
关于 ALU 和 真值表。是怎么回事。老师用了 硬件模拟器 举了两个例子:算术运算(减),逻辑运算(与)。
算术运算:20 - 30 = ?
000111 对应上图真值表 就是 选了 y - x 这种操作。
设值 y - x = 20 - 30 = -10。
如图显示 20-30 的操作,该如何设置,并 运算出 结果
逻辑运算:11110 & 10100 (“&”表示 与运算)
找到 x&y 对应真值表为 000000
点击运算按钮 核对结果
x与y
大概了解了ALU的输入输出端口和使用。我最疑惑的就是这6个功能位。
那么接下来就来一探究竟吧。
下图先说 6个功能位:
对X预处理操作
zx(Zero X): 如果 zx = 1 那么 x = 00000... (全部清零)
nx(Negate X) : 如果 nx = 1 那么 x = !x (全部取反)
注意1:如果 zx、nx = 0 那么就对输入的 x 不进行任何操作。
注意2:这个操作是有顺序的从左往右,如果 zx=1 nx=1,那么先 清零,在取反,也就是实现了 全置1的目的了。
对Y预处理操作(同理X)
zy(Zero Y): 如果 zy = 1 那么 y = 00000... (清零)
ny(Negate Y) : 如果 ny = 1 那么 y = !y (取反)
算术加、逻辑与
f (Function):如果 f =1 那么 out = x+y ,否则 f = 0 那么 out = x&y
后处理 out
no (Negate Out) :如果 no =1 那么 out = !out (取反)
那么这6个控制真的能对应实现 之前给出的18种运算吗?
如下图举例: !x
假设 x = 1100 , y = 1011。6位控制 = 001101
按照上图讲的,可以自己推一遍。
神奇真香,x确实取反了再举例:y - x
假设 x = 0010(2),y = 0111 (7)。6位控制 = 000111
2个输出控制位:
如果 out 的 十进制 等于 0,那么zr = 1,否则 zr = 0
如果 out 的 十进制 小于 0,那么ng = 1,否则 ng = 0
这里并没有过多解释,它俩会在之后的整体架构设计中扮演重要的角色。
zr、 ng 下次讲解
最后,回顾ALU的18种运算,除了x+y和x-y。
其它都是逻辑运算。而这些逻辑门如何实现,之前课程已经完成了。(如果你做完作业了)
而x-y 又可以 表示成 x+(-y)。所以只用一个Adder加法器(我们也在这周重点突破实现了) 又解决了所有 算术运算的问题。
老师提供的ALU的设计,简单,优雅。当然,工业上用ALU肯定比这个复杂多了。
但做为启发思考
方便理解
在此
才更是可贵!
大道至简 Simplicity is the ultimate sophistication
网友评论