电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

发明计算机的人真是个天才。计算机执行的所有计算都可以分解成一系列简单的数学运算。计算机不断地进行数字相加、相乘、比较大小、移动数字等操作,以便高效地解决问题。为了使这些操作变得实用,计算机需要能够快速执行这些操作。

以其中一种操作为例,计算机如何进行数字相加?又如何能够快速地解决复杂的问题?其基本策略与人计算数字并没有太大的区别。

·如果要将两组数字相加,可能会一次处理一对数字,先加第一对数字,然后是下一对,依此类推。有时可能会加一对数字,并留下一个进位,然后影响下一对数字的加法。计算机也是这样做的,只不过是用二进制位代替十进制数字。

一个称为全加器的电路可以将两个位相加,还可能有一个进位位,然后它产生一个和及可能的进位。例如,如果用输入进位位为0来相加1和0,则和将是1而没有输出进位。但是如果用输入进位位为1来相加1和0,那么情况就变了。现在输出一个进位为1,而和位为0。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

这些全加器在位上执行非常简单的操作,但可以将它们组合起来,以相加更大的数字。要将两个四位数相加,可以将四个全加器串联成一个脉动进位加法器。第一个全加器将右侧位相加并产生一个和,它还将一个进位位传递给下一个全加器,后者计算出一个和,并将可能的进位位传递给下一个加法器

通过连接足够多的这些单位加法器,可以设计出添加数字尺寸任意大的电路。但随着相加的数字变得更大,会注意到加法所需的时间越来越长,大多数加法器大部分时间都在等待传递进位位,以便开始计算,但这并不是很有效的时间利用。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

理想情况下,所有这些加法器都希望立即开始计算它们的和,但它们不能,因为它们的和取决于上一个加法器是否有进位输出。进位前瞻逻辑在这里就可以发挥重要作用。在进位前瞻加法器中,基本思想是添加逻辑,来快速且同时地计算所有进位,并将它们传递给需要的加法器。这使得单个位加法器无需等待所有先前的加法器即可完成工作。

但这是如何实现的?这个进位前瞻加法器如何知道所有进位是什么而不必进行完整的加法?为了回答这个问题,让我们看看其中一个单位加法器并考虑它是否会产生进位。

根据输入值,我们可能能够对这个加法作出一些断言。对于某些输入值,我们可能会说这个加法"产生"进位。产生进位意味着无论是否有输入进位,加法都会产生一个进位。如果要添加的两个位都是1,则会出现这种情况。当两个1相加时,无论是否有输入进位都会产生一个进位输出,因此我们说这个加法会产生一个进位。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

更正式地说,如果我们要相加的两个位是A和B,则我们可以说该加法会在A和B都是1时产生一个进位。对于其他输入值,我们可能会说这个加法"传播"进位。传播进位意味着如果有输入进位,则会有一个输出进位。

例如,如果输入位是1和0,则这个加法会传播进位;如果有输入进位,则输出也会有进位。但如果输入位都是两个0,则该加法不会传播进位。即使有输入进位,也不会有输出进位。换句话说,如果我们要相加的两个位是A和B,则当A或B是1时,该加法会传播进位。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

从产生和传播进位的角度考虑,这些单位加法的思路有两个用处。

·首先,对于每一对位,我们可以立即计算出该加法是否产生或传播进位,而不需要等待任何其他计算的结果。这意味着当加法开始时,我们可以同时计算所有位对的这些产生和传播值。

·其次,我们可以使用这些产生和传播值来计算所有的进位。对于任何给定的位相加,我们可以按照以下方式计算出进位输出。如果加法产生进位,或者如果有输入进位且加法传播进位,则加法会产生一个进位为1。

我们可以利用这个思想得到这个四位加法器中每个进位的公式。假设我们正在相加的只是这四位数,没有进位输入到它们,那么第一次加法的进位输出就等于该加法是否产生进位。第二次加法的进位输出为1,如果第二次加法产生进位。或者如果第一次加法产生进位,且第二次加法传播了该进位,第三次加法的进位输出为1。如果第三次加法产生进位,或者如果第二次加法产生了进位,且第三次加法传播了该进位,或者如果第一次加法产生了进位,且第二次和第三次加法都传播了该进位。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

也许你可以看到这里形成了一个模式,我们可以为第四次加法的进位输出构建类似的公式。注意,所有这些公式都是根据我们可以快速计算和同时计算的产生和传播值计算出来的。这些公式本身也可以快速计算,将公式中的这些单独项进行与运算只需一个逻辑步骤,然后再进行或运算将这些项组合在一起以得到进位值。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

这是第二步,结果是当相加的两个四位数的第一对位被相加时,我们可以计算出传播和产生值,并开始将它们组合起来,这样就得到了所有的进位值,然后可以将它们传递给所有其他单个位加法器,以便它们可以同时进行工作。

理论上,随着我们相加的数字越来越大,通过这种进位前瞻逻辑节省的时间也越来越多。在传统的脉动进位加法器中,添加更大的数字意味着等待时间更长。因为进位从一个加法器传递到下一个加法器,但在进位前瞻加法器中,我们可以一次计算出所有进位。

然而在实践中,计算后面的进位的公式,随着项数增多而变得更大。用两个步骤计算出这些公式的电路也不再那么实用。相反,我们经常会将四位进位前瞻加法器的逻辑封装在一起,然后将它们串联起来以构建一个更大的加法器。每个四位加法器可以依次运行,并将进位传递给下一个。

电脑是如何进行数据计算的呢? #计算机(电脑是如何进行数据计算的呢英语)

但是现在我们知道了一个更有效的方法来做到这一点,我们可以再次使用进位前瞻逻辑,只是在更大的范围内,每个四位组现在可以为其组计算生成和传播值,而较大的进位前瞻单元可以使用该信息来计算出每个四位加法器的进位,以便它们可以在不等待彼此的情况下并行地工作。

在添加大数时应用进位前瞻逻辑可以节省大量时间。当我们谈论电路时,这段时间以纳秒为单位衡量,但当计算机执行数十亿次操作时,这些纳秒就会累加起来。

通过利用计算机电路可以同时执行多个任务的事实,我们的逻辑现在更快了。因此,通过给予它们多个任务,它们可以在不需要等待其他逻辑完成的情况下执行任务,从而使我们的计算更加高效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年4月2日 上午8:34
下一篇 2024年4月2日 上午8:40

相关推荐