计算机组成原理-算数逻辑单元

工作中涉及处理器设计的,对ALU接触比较多,但很多是对它抽象的了解,今天学习记录一下内部组成。
ALU即算术逻辑单元,用来执行算数和逻辑运算,比如对两个数据进行加/减/乘/除/布尔操作,是CPU的重要组成部分,我们拿到的是一个独立组件,内部最小单元其实是晶体管,通过一层层封装连接组成。

逻辑门

先介绍怎么用晶体管做逻辑门,以以下几种基本布尔运算举例

  1. 非门

非门可以通过一个三极管实现,当输入高电平时,三极管导通,输出低电平;当输入是低电平时,三极管截止,输出高电平。最后将逻辑电路抽象为一个单独组件:非门
在这里插入图片描述
2. 与门

与门可以通过两个三极管串联实现,当两个输入都为高电平时,三极管都导通,输出高电平;当输入有一个是低电平时,三极管截止,输出低电平。最后将逻辑电路抽象为一个单独组件:与门
在这里插入图片描述

  1. 或门

或门可以通过两个三极管并联实现,当其中一个输入都为高电平时,对应三极管导通,输出高电平;当两个输入都为低电平时,三极管均截止,输出低电平。最后将逻辑电路抽象为单独组件:或门
在这里插入图片描述
4. 异或门
异或门和或门有点像,只是当两个输入都为高电平时,输出为低电平,可以用一个或门另外与上一个与非门实现。最后将逻辑电路抽象为单独组件:一个异或门
在这里插入图片描述

算数运算

到这一层,直接用逻辑门的高级抽象来实现。

  1. 半加器
    累加和的结果和异或门结果一致,累加会产生进位,通过与门输出进位。最后将逻辑图抽象为单独的组件:半加器
    在这里插入图片描述2. 全加器
    要处理超过1+1的运算,就需要用到全加器,利用半加器输出的进位。先用半加器将A和B累加,再把进位输入到第二个半加器,最后用一个或门检查进位是不是true。最后将逻辑抽象为单独组件:全加器。这样输入就是3位(A和B以及地位输出的进位),输出两位(依然是进位和总和)
    在这里插入图片描述
    在这里插入图片描述
  2. 8位加法器
    以上是1位数字相加,现在试着将两个8位数A(A0-A7)和B(B0-B7)相加,也就是1byte.
    在这里插入图片描述输出也为8位,最大值为255,当最后的CARRY为1时,表示产生了溢出。
    可以根据需要设计出16位/32位的加法器。

【补充】

1.随着位数的增多,就需要更多的逻辑门,而且每次的进位都需要时间,对超量计算很影响效率,现在的加法器电路基本用超前进位加法器,这里只用来说明ALU的最小组成单元,也就是如何用晶体管实现的运算。
2.ALU没有专门的乘法器和除法器,乘法是通过多次加法,除法是通过多次减法实现,现在很多处理器会做专门的乘法或除法运算单元,电路更复杂,价格也更高

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值