阳光100香港上市募资2.58亿美元华平成最大受益者
06-18
在没有齿轮的情况下,计算机是如何进行计算的? ALU是计算机中负责计算的组件。本文教您如何自己制作 ALU。
在第一个 ALU 年,第一个封装在单芯片中的完整 ALU——Intel 1 诞生了,这在当时是一项令人惊叹的工程壮举。 !在二进制运算单元中,1=真,0=假,两个数相加。
加法器电路半加器(不能处理进位)将两位(位为0或1)相加。两个输入A B,一个输出是AB之和。
这三个值都是单个位(0或1)。 0=0转换成逻辑门,表示两个输入都是假,输出也是假。
与异或逻辑门一致,1=1,0=1就变成了一个输入true,一个输入false,输出true的逻辑门。这也与异或逻辑门(特殊)1=0一致。
需要进位1的结果是0,1进位到下一位。可以看出,异或逻辑门不支持这一点(输入为真,输出为假,这只是部分正确)。
它还需要一条输出线来表示进位,所以我们需要在上述情况的基础上稍作修改,添加一条新的输出线。表示进位数字。
这个进位的输出只有在为1时才会输出1(当所有输入都为真时才为真)。这与 AND 逻辑门非常相似吗?将两条输入线连接到专门用于处理进位的AND逻辑门上,这样就将一个一位加法器(此时不能处理进位输入,也称为半加器)抽象封装为一个独立的组件。
将其封装为单独的组件。两个输入AB,两个输出SUM代表和,CARRY代表进位(计算下一位时,必须加上前一位的进位)。
全加器(可以处理进位的加法器)刚才提到了进位:下一个位计算时,必须加上前一个位的进位。以上仅完成了一位的加法(进位输入的加法无需处理)。
如果需要操作多个位,则需要额外输入进位。这种需要三个输入的加法器称为全加器,用于计算进位。
看全加器的运算表:两个输入AB,一个是前一个加法器C的进位。两个输出用来表示下一个加法器的进位,作为下一个加法器的C。
SUM代表该位的计算。结果实现思路输出SUM 我们先看一下我们是如何计算的:先将两个输入AB相加,然后将进位位相加。
第一步的计算是一位的加法,第二步的结果和进位加法也是一位的加法,所以我们组装了两个半加器。前半加器用于计算结果(前两个输入:AB);后半加器接受前半加器的结果和进位作为输入(前半加器的求和和进位【第三个输入】) 输出 CARRY 首先我们看一下需要进位的两种情况: 1. 两个输入本身需要进位(当 AB 均为 1 时,1 本身需要进位)。
这种情况不就是第一个加法器的进位吗~~2。两个AB的计算结果都是进位1,也需要进位1。
这种情况不就是第二个加法器的进位输出吗(AB的输出和进位相加)~~可以看到两个条件之一为真,此时就需要进位。因此,使用或门连接两个半加器的进位位,并将输出连接到全加器的进位输出。
说明: 请注意,这仍然是一位加法器,但它只支持比半加器多 1 个进位输入。这种加法器称为全加器。
验证过程是这样的:左边的AB是输入,右边的CS是进位和。第二个加法器的输入AB(实际上不是输入AB代表第一个加法器和输入C的SUM)。
不要感到困惑。读者可以用上面的全加器表输入ABC来验证最终对应的SUM和CARRY是否被正确抽象封装为独立组件?与半加法器相比,多了一位输入进位,构成八位加法器。
上面所说的是一位加法运算。只需将多个加法器组合起来即可获得多个位。
undefined代表一个数字:A和B代表两个八位数字作为输入,用A0、A1、A2...来表示数字。计算未定义:显然,A0和B0可以使用半加器计算,因为没有进位。
然后用全加器将A1B1和A0B0的进位连接起来。这三个用作操作的输入。
第三位、第四位依此类推...看图:第一位的计算使用了半加器,然后是全加器(注意全加器的输入C是前一个的进位输出)加法器)。进行计算,最后将sum0、sum1以及各位的和依次排列即可得到结果。
八位加法器是指计算机按照8位长度处理数据块,即返回第九位时八位计算机溢出。有进位(即进位7为1),表示两个数之和太大,超过8位。
例如,第三个输出进位为1,表示第四位进位为1,结果就多了三位。这是溢出。
一般来说,“溢出”是指两个数字之和太大,超过了原来表示的位数,这会导致错误和不可预测的结果。 《Pac-Man》溢出事件 Pac-Man 游戏使用 8 位存储当前级别编号。
如果玩关卡(最大8位bit表示的是),ALU就会溢出【因为需要9位来表示关卡编号,而8位表示的数字已经不够了。对比上面的例子,需要添加一位数字来表示],导致出现一系列错误和乱码,导致关卡无法进行。
这个bug已经成为强大的吃豆人玩家的代表。避免溢出的方法也很简单。
就像上面的例子,只要多加一位,就意味着需要再增加一个全加器来进行计算。哪一个(使用三位数加法,如果要变成四位数,就需要支持第四位数加法)。
给出的例子是十进制的,读者可以理解含义,所以解决方案是增加更多的全加器,可以操作16位或32位数字,使溢出更难以发生,但代价是更多的逻辑门,并且每个进行计算需要一段时间。虽然很快,但是在这个每秒都有数十亿次计算的时代,再小的延迟都会被放大。
超前进位加法器 现代计算机中使用的加法器电路有点不同,它使用超前进位加法器。它可以更快地完成同样的事情,添加二进制数。
其他数学运算 ALU还支持其他数学运算,一般有以下八种。与加法器一样,乘法和除法也是通过逻辑门形成的。
简单的ALU电路没有乘法和除法,而是使用多次加法来实现乘法。例如,12X5 相当于 12 加五次。
需要五次 ALU 运算才能得到结果。虽然慢,但是可以用!哈哈,简单的处理器就是这样制作出来的,比如电视遥控器、微波炉、恒温器等。
但电脑和手机有更好的处理器,专门处理这种复杂运算的算术单元本质上是更多的逻辑门组装成逻辑单元来执行逻辑运算,比如以前简单的AND、OR、XOR逻辑。但他也可以做??一些复杂的逻辑判断。
下面的电路用于判断输出数字是否为0。当数字为0时,输出为true1。
只要有一个1通过或门,最终的输出就是0false,因为数字是0。有一个1的位被抽象封装为一个独立的组件。
首先,INPUTA和INPUTB是两个八位输入(因为我们是一个八位ALU)。操作码:使用四位操作码来指示 ALU 的操作。
运算,比如加法ADD、减法OUTPUT,输出结果也是8Bit,那么如何知道是否溢出呢?别担心,下面会列出来。右边的FLAGS是1位(1Bit),代表某种状态(以下三种状态是最常用的,高级的ALU会有更多的FLAGS)。
OVERFLOW溢出标志表示是否溢出。该线连接到加法器的进位位。
ZERO代表结果是否为0(通过上面的逻辑单元运算来判断数字是否为0)。 NEGATIVE 表示负标志。
如果A-B小于0,那么就是1。 总结好了,经过上面的解释,你已经制作了一个可以处理8位的ALU(算术单元和逻辑单元)。
然而,文章开头提到的Intel 1只能处理四位ALU。你们制造了一个比英特尔更好的 ALU。
好阿鲁!虽然还没有完全创建出来,但是概念和原理你已经明白了。 1有70个电路,无法处理乘法和除法运算,但它向小型化迈出了一大步,使计算机变得更小、更便宜。
下一篇文章将使用这个ALU来构建CPU,但在此之前,需要计算机“内存”来记录这些计算的结果。如果计算完就扔掉,没有多大意义。
我们需要存储结果以供以后使用。因此,我们下一篇文章将对内存模块进行讲解。
我参加第二期腾讯科技创作特训营有奖征文分享万元奖池和键盘手表一块。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-17
06-18
06-18
06-18
06-18
06-21
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用