算术逻辑单元(How Computes Calculate——The ALU)

一.前言

前面文章学习了逻辑门,那么一个个逻辑门是如果组合进行运算的呢?我们首先来了解计算机的运算基础单元——ALU,ALU就是一个个逻辑门组成的运算单元。

下图为第一个在单个芯片内的完整ALU,他是1970年发布的,这个芯片可以说是当时科技领域惊人的壮举,但是通过这一章的学习,我们来简做一个简单ALU电路,功能和因特尔74181一样。

二.“算术逻辑单元”(ALU)

如果想让两个数字完成相加运算,我们就要用“算术逻辑单元”(ALU)来处理,ALU就是计算机负责计算的组件,基本其他的组件也会用到它。

ALU有1个“算术单元”和一个“逻辑单元”组成

1.“算术单元”实现一个行波进位加法器

下面就通过一个例子来实现:ALU实现两个数字相加。

我们可以用一个个晶体管去拼,把这个电路做出来,但很快就会复杂的难以理解,所以我们为了便于理解,用更高层的抽象,之前学到的逻辑门来做,我们会用到AND,OR,NOT和XOR逻辑门

1.“半加器”

我们用二进制计算时会有四种情况(要理解下面的知识,你必须要先搞懂二进制)

1.0+0=0

2.1+0=1

3.0+1=1

4.1+1=10

我们会发现前三种情况输出和我们前面讲到的异或门XOR完全一致

至于1+1=10这种情况,我们也可以用小学数学学加法的一种思想:满十近一,只不过在二进制里,最大的个位数是1,所以要满二近一,所以1+1=10。

我们看异或门XOR只对了一部分,就是让1+1=0,但是没有记录近一位1,我们可以改进一下电路,加入一个AND门

如图:

我们可以用XOR门的输出记录当前位的运算值,用AND门口输出记录近位值,我们放大上面这张图,这个电路有个专门的名字——“半加器”

如图所示:

理解上面这两个这个“半加器”的输入输出后,为了便于理解,我们把这个半加器抽象为一个整体组件,如图:

2.“全加器”

但是半加器其实只能处理“个位数”的运算,比如“111+111=1110”这个算式,如果我们只用满二加一的思想,会出现近一位后还要运算一加一,则会出现1+1+1的运算,这种运算情况我们需要在当前位写1,近位也要写1,很明显“半加器”已经无法满足这个运算,所以我们需要对半加器进行升级,升级后的组件叫“全加器”,如图为全加器算术表格:

我们可以用两个半加器加上一个OR门封装一个全加器组件,OR门的作用就是检查近位,如图:

全加器有三个输入,一个近位值,一个总和值。

了解完全加器和半加器之后,我们来用它们制做一个更加复杂的8位加法器,半加器可以完美的处理二进制的“个位运算”,所以可以将半加器作为8位加法器的个位运算组件,也就是8位数的第一位和第二位值的运算,然后将个位运算结果输入到下一个全加器,然后与8位数的第三位进行运算,运算的输出结果再输入到下一个全加器……以此类推到第8位的全加器

如图是一个完整的8位加法器组件连接:

我们观察最下面那个全加器的输出carry,如果第九位任然有近位,代表输入两个数字的和太大了,超过了8位加法器的运算范围,我们称之的“溢出”(overflow)

小时候玩吃豆子游戏就是一个8位溢出的最好例子,当我们通关第255关后,继续下一关游戏就会出现乱码,因为8位的最大值是十进制的255,因此256关会造成溢出bug,这个bug也成为了厉害吃豆人的代表

若果要避免溢出,我们可以加更多的全加器,以便于操作16位或者32位数字,让溢出更难发生,但代价是更多的逻辑门,另一个缺点是,每次近位都要一点时间,当然时间也不久,因为电子自动速度很快,但是对于如今的量级是每秒几十亿次运算,每一点时间都不容小觑的,所以现代计算机用的加法电路和我们上面说的有点不同,叫“超前近位加法器”,它更快,但做的事情也是一样的——二进制的相加

ALU的算术单元,还可以做如下数学运算,就像前面的加法器一样,这些操作也是由一些逻辑门构成的,我们只要简单了解就好了。

有趣的是,你可能会注意到上面的数学运算没有乘法和除法,那是因为简单的ALU没有专门的电路来处理乘除,而是把乘法多次加法来实现,你可能觉得这不是一种很好的设计,但是对于很多简单的处理器已经足够用了,同样也可以节约制作的成本,比如我们生活中用到的电视遥控器,微波炉,恒温器等等。

当然对于运算要求很高的设备如手机和电脑,它们的处理器,是有专门的乘除算术单元的。

你可能猜到了,乘法电路比加法复杂,不过也没有什么魔法,只是很多的逻辑门罢了,有兴趣的可以自行资料了解,这里就不做深入了。

2.“逻辑单元”

我们接下来讲ALU的另一半:“逻辑单元”

逻辑单元用来执行逻辑操作,比如之前讨论过的AND,OR,NOT操作都可以说是逻辑单元,它也能做简单的数值测试,比如逻辑单元可以检测一个数字是不是负数。

下面我们先来看一个“检查ALU输出是否为0”的电路,下面电路只有所有输入为0时才会输出1,这个电路我们后面文章会用到。

我们分析完上面电路后继续回到我们文章最开始提到的因“特尔74181”,“特尔74181”用了大概七十多个逻辑门,也不能进行乘除运算,而且只支持处理4位输出,比我们刚刚做的8位输出的ALU还低( ´͈ ᗨ `͈ ),不过我们做的没有人家完整,但是我们已经了解了完整的概念,如图为“特尔74181”的逻辑门:

看这个4位的逻辑门就已经很复杂了,不用担心,我们不必要去想这些复杂的电路,我们把这个逻辑门也抽象位为一个整体组件

如图所示:

我们的8位ALU有两个输入(图上边两个),我们命名为输入A和B,都是8位(bits),我们还需要告诉ALU执行什么操作,所以我们加入一个组件来专门记录我们的操作代码(图左边),我们用4位记录操作代码,我们这里用“1000”代表加法命令代码,“1100”代表减法命令代码,操作代码会告诉ALU执行什么操作,我们还需要一个8位的输出(图下边),最后ALU还需要输出一堆标志(flag)(图右边三个标志,分别是输出是否溢出标志,输出是否为0标志,输出是否为负数标志),当然还可以有其他标志,我们目前只涉及这三个。

例如我们的ZERO标志判断输出是否为0,可以用来判断两个输入值是否相等,ZERO标志里面的逻辑就用到了我们前面提到的电路,如图所示:

三.总结

我们现在知道了,计算机的最基础原件是如何进行运算的,后面两章,我们在学习完内存和寄存器之后,会用ALU做一个CPU,来整体了解计算机的运行过程。

计算机基础算术加法,计算机基础第二章:算术逻辑单元(How Computes Calculate——The ALU)...相关推荐

  1. 计算机组成与系统结构期末复习 第二章 2.2

    计算机组成与系统结构期末复习 第二章 2.2 1.实现下列各数的转换: (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421 (0101 1001 0110.0 ...

  2. JAVA 基础入门课本例题代码(第二章)

    JAVA 基础入门课本例题代码(第二章) Example01 public class Example01 {public static void main (String[] ags){int nu ...

  3. 简述计算机软件系统的功能及分类,第二章 管理信息系统技术基础

    第二章管理信息系统技术基础 1 计算机系统的组成 1.简述计算机系统组成? 答:计算机系统由硬件系统和软件系统两大部分组成. 硬件系统:计算机的硬件是指组成一台计算机的各种物理装置,由运算器.控制器. ...

  4. 计算机组成原理定点除法手工与机器运算本质,计算机组成原理和结构图式(第二章)...

    计算机组成原理和结构图式(第二章) 一.数值型数据表示 1)进位计数制spa (1)十进制->二对象 整数部:除基取余 小数部:乘积取整 (2)二进制->按权相加原理 2)数符表示:无符号 ...

  5. r认识计算机教案,八年级信息技术教案第二章 程序新天地----初识QBASIC

    第二章 程序新天地----初识QBASIC 一.学习目标 1.了解机器语言和高级语言各自的特点. 2.了解什么是计算机程序. 3.了解程序设计的基本步骤. 二.教学重点 程序设计的基本步骤. 三.教学 ...

  6. 计算机三级网络技术第一轮(第二章)

    第二章    中小型网络系统 总体规划与设计 (选择题5-7    知识为理论型-话说根据我多年的应试来看前几章都是理论,多看两眼就能几下来滴! 常考知识点:网络总体设计基本方法      网络关键设 ...

  7. 备考全国计算机三级数据库考试+自学MySQL 第二章第三章数据库的基本操作

    第二章MySQL的安装与配置 有Windows和Linux两种版本.(个人建议:先装一个VMware虚拟机,在里面装MySQL).安装步骤自行百度,或者后期,再补发,安装文件直接下载MySQL官方文件 ...

  8. 计算机基础算术加法,计算机基础第二讲.ppt

    计算机基础第二讲 计算机的运算 算术运算:加.减.乘.除 逻辑运算:与.或.非 数据比较:大于.小于.等于.不等于.大于等于.小于等于 数据传送:输入.输出.赋值 二进制的算术运算 加法 0+0=0 ...

  9. Spring框架IOC基础及XML的配置 第二章

    1 Spring概述 1.1 关于框架 框架的概念 框架:特指软件框架,它是我们在实际开发中解决项目需求的技术集合.运用框架可以大大简化代码的编写,缩短开发周期.同时,对后续负责项目维护的人员降低技术 ...

  10. (计算机组成原理题目题型总结)第二章:数据的表示和运算

    文章目录 基础小题 白中英课本习题 此部分内容选择题重点会出在进制转换.数据范围等一些内容 此部分重点会出计算题 基础小题 核心转换原则:八进制.十六进制和二进制之间是有位数对应的关系的,而十进制和二 ...

最新文章

  1. 71张图详解IP 地址、IP 路由、分片和重组、三层转发、ARP、ICMP
  2. 安装 Windows8 后值得做的十多项简单优化,让Win8速度快上加快!
  3. uestc 1073 秋实大哥与线段树 Label:线段树
  4. JavaScript高级部分概念用法
  5. couldn't find libweibosdkcore.so
  6. PHP的strpos函数辨析
  7. hashmap put复杂度_你碰到过几种HashMap在高并发下出现的问题,哪些可能出现的问题...
  8. VirtualBox 安装 Linux 时遇到的问题及解决办法
  9. AutoCADDCL对话框设计示例八
  10. 计算机应用教程 卢湘鸿答案,计算机应用教程(Windows 2000环境)习题解答与实验指导...
  11. cf Educational Codeforces Round 77 D. A Game with Traps
  12. 小米洗手机拆解自动关机
  13. 一个放在口袋里的项目,将社交裂变做到了极致
  14. 千兆路由器和百兆路由器
  15. Maven详细入门及教学视频推荐
  16. MFC软件欢迎界面(基于对话框,VS2013)
  17. ZY-Player安静看电影
  18. 工业RFID低频读卡器|AGV车载地标识读器L8820配套标签与配件选型注意事项
  19. RoboGuide学习笔记(一)——基本工作站的建立
  20. 3d wallpaper android,3D Parallax Wallpaper

热门文章

  1. 应用内收费--商品列表--子龙山人
  2. VeriSign SSL证书产品及服务_VeriSign证书|SSL证书|EVSSL证书|服务器证书|数字证书
  3. android webview同步,android httpclient与webview cookie同步
  4. android httpclient版本,Android studio使用http 没有 HttpClient
  5. 手把手较你编写Python爬虫程序-不要干坏事哦
  6. 高品质的算法混响插件-Initial Audio AR1 Reverb v1.0.1 WiN-MAC
  7. 虚拟板式混响插件:Fuse Audio Labs VREV-140 Mac
  8. Android多线程下载文件
  9. Win10获取管理员权限
  10. 时间单位的换算(秒,毫秒,微秒,纳秒,皮秒)