13、P1 W2 U2.4 ALU 算术逻辑单元

视频:
如果本次课程对应的 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 算术逻辑单元)

上图架构:1945年 冯诺依曼 提出的 计算机架构。对比我在第一篇文章里写到的“我的世界”里季文瀚搭建出的计算机,使用的是哈佛结构,而非更常见的冯·诺依曼结构。程序储存器和数据储存器分开放置。

下图是 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个控制位的英文名,可以猜出对应的功能

那么这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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容