关于CUP运算器如何运算

提示:学习心得!

目录

前言

一、逻辑门

1.与门

2.或门

3.反向器

4.或非门

5.与非门

二、加法机

1.“和”与“进位”

2.半加器

3.全加器

总结


前言

   运算器是一个负责算术运算和逻辑运算的模块,主要包含算术逻辑单元(Arithmetic Logic Unit,简称ALU)和浮点运算单元(Floating Point Unit,简称FPU)。ALU的主要功能:在控制信号的作用下,完成加、减、乘、除等算术运算,以及与、或、非、异或等逻辑运算以及移位、补位等运算。通常ALU由两个输入端和一个输出端(两个值输入,一个结果输出)。FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

   运算器是用与、或、非逻辑门电路搭建起来的,接下来将对这些逻辑电路进行简单的介绍,以及如何进行加法运算:


一、逻辑门

1.与门

        这是逻辑门中的第一个。与门有两个输入端,一个输出端。这样表示的与门通常输入在左部,输出在右部,这是因为人们习惯于从左到右读图。但是与门同样可以画成输入在上部,右部或底下。

有两个继电器、两个开关和一个灯泡的原始电路图如下所示:

使用“与门”符号,上图可同样表示成

        注意与门不仅代替了窗帘的两个继电器,同时也隐含了上面的继电器连接着电源,且两个继电器都是接地的。只有当上下两个开关都闭合时,灯泡才会发光,这就是他之所以叫与门的原因。对于继电器的工作原理大家可以自行百度,这里就不做过多的介绍。
        与门的输入未必一定要和开关相连,且输出一不一定只能是灯泡,我们真正要处理的是输入端的电压和输出端的电压。例如,一个门的输出可以是另外一个门的输入:

        只有当三个开关都闭合时,灯泡才会发光。当上面的两个开关闭合时,第一个与门的输出会触发第二个与门的第一个继电器,而最下面的开关会触发第二个与门的第二个继电器。
        如果把不加电压视为0,加上电压视为1,则与门的输出按如下方式由输入来决定:

正如两个串联的开关一样,与门的输入输出关系可做如下描述:

与门也可以有多余两个的输入端。例如,假设串联了三个继电器:

只有当三个开关同时闭合时,灯泡才会发亮。这种配置可用如下符号表示

它被称为三输入端与门

2.或门

或门可以用两个并联的继电器解释:

        注意两个继电器的输出是连在一起的,这个连接在一起的输出为灯泡提供了能源。任何一方继电器都可以点亮灯泡,例如,如果闭合上面的开关,灯泡会亮。这时,灯泡从左上角的继电器得到了电源供应:

如果让上面的开关断开而闭合下面的开关,灯泡也会亮:

当两个开关都闭合时,灯泡同样会亮:

可见,当上开关或下开关中的任何一个闭合时,灯泡都会亮。这里的关键字是“或”,所以这样的门叫“OR gate(或门)”。电气工程师使用如下符号表示或门:

它看上去和与门很相似,只是接输入端的一边是弧形的,很像英语“OR“中的字母”O“。
        或门的两个输入中,只要有一个加上电压,输出就是高电位。同样,如果约定不加电压是0,而加电压是1,则或门也有四种可能的组合状态:

可以把或门的输入输出关系小结成如下表格:

或门也可以有两个以上的输入端(当任意输出端为1时,输出就为1;只有所有输入端均为0时,输出端才为0)。

3.反向器

前面解释过的继电器可称为双掷继电器,因为其输出可以两种不同的方式连接。通常情况下,当开关断开时,灯泡不亮:

当开关闭合时,灯泡点亮。
也可以用另外一种连接方式,使开关断开时灯泡点亮:

在这种情况下,只有闭合开关时灯泡才熄灭。以这种方式连接的继电器叫做反向器。反向器不是逻辑门(逻辑门通常有两个以上的输入),但它十分有用。反向器可以用作下面的符号表示:

它被称为反向器的原因是当输入为0时输出却为1,反之亦然:

4.或非门

该继电器在不被触发时,其输出为高电位(这是用在反向器中的输出)。例如,下面配置中,一个继电器的输出为第二个继电器提供了电源。当两个输入都断开时,灯泡是点亮的:

如果上面的开关闭合了,灯泡就会熄灭:

灯泡熄灭是因为第二个继电器没有电源供应。同样,若下面的开关闭合灯泡也会熄灭:

若两个开关都闭合,开关还是不亮:


这种行为和行为正好相反,被称为”NOR gate(或非门)“。下面是或非门的符号:

它和或门的符号很像,是只在输出端有一个空心的小圆圈,故而或非门也可以用下面的表示

或非门的输出如下表所示

这张表显示的结果和或门相反。在或门中,输入端中只要有一个是1,输出就是1;只有输入端均为0时,输出才为0。

5.与非门

连接两个继电器的另一种方式如下图所示:

在这种情况下,两个输出连在一起,除了连在继电器的另一个触点上之外,这种连接形式与或门类似。当两个开关都断开时灯泡是量的。
但只有上面的开关闭合时,灯泡也是亮的:

但只有下面的开关闭合时,灯泡也是亮的:

当只有两个开关都闭合时,灯泡才会熄灭:

这种行为和与门行为正好相反,被称为”NAND gate(与非门)“。与非门的画法和与门的画法很像,只是在输出端加了一个小圆圈,表示其最后的输出和与门的输出是相反的:

与非门的输出如下表所示:

注意:与非门的输出与与门恰恰相反。对于们而言,当两个输入都为1时,输出才为1;否则输出就是0。
        到此为止,我们已经看到可以用4种不同的方式来连接有两个的输入,一个输出的继电器,每一种方式的行为功耗都不一样。我们把这些连接称为逻辑门并使用电气工程师使用的符号来表示它们。特定的逻辑门的输出取决于其输入,总结如下:

下面我们要讲解的就是一台简单的加法机

二、加法机

        加法是最基本的算术运算,所以,如果想要建立一台计算机,必须首先知道如何构造一种机器,它可以把两个数加起来。当你解决了这个问题,你会发现加法正是计算机唯一所做的事,因为通过使用用于加法的机器,我们还可以构造用加法来实现减法,乘法,触发以及计算房产抵押款,引导向火星发射卫星,下棋和电话计费等等功能的机器。
        同现代的计算器和计算机比起来,我们现在讲的加法机庞大,笨重,速度慢且噪声大,但有意思的是构成他的部件完全是简单的电子设备,如开关,灯泡,电线,电池以及可以构成几种逻辑门的继电器。这个加法机包含的所有部件都于120年以前就已经发明了,而且,我们并不能真正的在屋子里建造它,只需要在纸上和脑子里构造这台机器就行了。
这个加法机只能工作于二进制数,而且他缺少很多现代计算机(器)的辅助设备。你不能用键盘来敲入你想加的数,取而代之的时一排开关表示待加的数。他也不能用显示器显示结果,所以你看到的只是一排灯泡。
        但这台加法机的却实现了两数相加的功能,而且其工作方式和计算机做加法十分相似。
二进制加法与十进制加法很像。当你相加十进制数如245和673时,你把问题分解成简单的步骤,每一步只对一对十进制数字相加。

1.“和”与“进位”

你可能在学校里记过上面这张表,并背诵过如下口诀:

把相加结果的数前加上0,可以把加发表改写成如下形式:

这样一来,二进制数字相加的结果是两位数,分别成为”和“和”进位“(比如”1加1等于0,进位是1“)。现在,可以把这张二进制加发表分成两张表,第一张是表示”和“的表:

第二张是表示”进位“的表:

以这种方式来看待二进制加法就很方便了,因为加法机会分开求和与进位。构造二进制加法机需要设计一个能执行表中所描述操作的电路。因为电路的所有部件,如开关,灯泡,电线都是可以表示成为二进制数的,因而该电路由于仅工作与二进制数从而大大降低了电路的复杂性。
    与十进制加法一样,二进制加法也从最右边的一列开始,逐列相加两个数:

注意,当从右边加到第三列的时候,产生了一个进位。同样的情况也发生在第6、7、8列。
    我们要加多大的数呢?由于这个加法机只是在脑子里构造,因而可以加很长的数字。为更合理一些,选择不超过位的二进制数。也就是说,操作数的范围从0000 0000 - 1111 1111,即十进制的0 - 255.两个8位二进制数的和最大可以是1 1111 1110,即510。
    此二进制加法机的控制面板如下图所示:

    板上有两行开关,每行8个。这些开关集是输入设备,我们将用它输入两个8位数。开关往下表示0,往上表示1,正如家里墙上的开关。输出设备在面板的底部,是一行灯泡,共9个。这些灯泡用来表示加法的结果,不亮的灯泡表示0,亮的表示1.我们用了9个灯泡是因为两个位数相加的结果可能是9位数。
    加法机的余下部分包含了以不同方式连接而成的逻辑门。开关出发逻辑门中的继电器,继电器接着点亮相应的灯泡。例如,如果我们想把0110 0101和1011 0110加起来(即前例中显示的两个数字),需把相应的开关设置成下面的样子:

灯泡的亮暗表明答案是100011011(当然,这只是希望的情况。毕竟,我们还没有把这个加法机构造出来)

当你看到下面这儿二进制数相加的进位表时,你可能会想到逻辑门和二进制加法之间有某种联系:

你也许已意识到这和之前说的与门的输出是一样的:

所以,与门可以用来计算两个1位二进制数相加得到的进位
    看来我们已取得一点儿进展了,下一步就要看看有没有继电器能完成下面的工作:

2.异或门

这是二进制加法运算中的另一半问题,虽说表示和的这一位不如进位那么容易实现,当我们会有办法的。
    首先应意识到或门的输出和我们所期望的很近似,只是右下角结果不同

而对于与非门而言,除了左上角的输出不同以外,其他结果也与期望的一样:

所以,使用相同的输入,让我们把与非门和或门连接起来:

下表总了解了或门和与非门的输出,并将其结果和加法机所要求的结果进行比较:

注意,当或门和与非门的输出都为1时,就可以得到期望的结果1,这暗示着把两个输出作为与门的输入:

好,这样就能满足要求了。
        整个电路仍然只有两个输入,一个输出。两个输入即连接到了与门,也连接到了与非门。或门和与非门的输出作为与门的输入,从而得到预期的结果:

        这个电路有它自己的名字,称为”异或门(Exclusive OR gate 或 XOR)“。异或门输出位1时,A输入为1或B输入为1,但不能同时为1.不用再去画一个或门、一个非门和一个与门,可以用电气工程师会定的符号来表示它:

它看上去和或门很像,只是在输入端还有一条曲线。异或门的行为表示如下:

异或门是需要详细描述的最后一个逻辑门(在电气工程中有时还会遇到第6个门,称为”同或门“,同或门只有当两个输入相等才输出1.同或门描述的输出情况正好和异或门相反,所以这个们的符号和异或门相同,同时在输出端有一个小圆圈)。
    总结。两个二进制数相加产生两个表,一个是”和“的表,另一个时表示”进位“的表:

3.半加器

用下面两个逻辑门可以得到同样的结果:

二进制数的”和“可以由异或门得到,而“进位”可以由与门得到,所以可以把异或门和与门结合起来完成两个二进制数A和B的加法:

不用话与门和异或门,可以把上图简单的表示成如下的样子

其中的方块简称为“半加器(Half Adder)”,它可以把两个二进制位A和B相加,从而得到一个和输出(简称S)和一个进位输出(简称CO)。但大部分二进制数是多余一位的,半加器不能够把前一步的进位加到本次运算中。例如1111+1111=11110,只能用半加器来计算最右边一列的数:即1加1等于0,进位为1。对于右边第2列数,由于进位的存在,需要加三个数。接下来的几列都有这个问题,每一列二进制位的加法都包括了来自前一列的进位。
            要把三个二进制数相加,需要按如下方式把两个半加器和一个或门连接起来:

4.全加器

        要理解它的工作原理,先从左边第一个半加器的A输入和B输入开始,其输出的是一个和及相应的进位。这个和必须和前一列的进位输出(简称IC)加起来,然后把它们输入到第二个半加器。第二个半加器的和输出是最后的和。两个半加器的进位输出又输入到另一个或门,或门产生了本次加法的进位输出。你可能会像这里还需要一个半加器,这当然是可行的。但当你把所有的可能情况考虑完,你会发现两个进位不可能同时为1,当两个输入不能同时为1时,或门足够用于表示两个进位的加法,此时或门和异或门的功能是完全相同的。

上图可简化表示为下面的方块图,称其为“全加器(Full Addre)”:

下面的表是对全加器所有可能的输入及其相应输出的小结:

前面说过加法机需要144个继电器,这个数目是如何得到的呢?每个与门,或门,与非门都需要两个继电器,所以,一个异或门需要6个继电器。一个班假期由一个异或门和一个与门构成,所以他要8个继电器。一个全加器需要两个半加器和一个或门,所以他要18个继电器。对于8为二进制加法机而言,共需要8个全加器,因而总共是144个继电器。
    回想一下最开始的灯泡控制面板

现在可以把这些开关和灯泡连接成全加器了
    首先把最右边的两个开关和一个灯泡连到一个全加器上,如图所示

当把两个二进制数相加时,第一列的处理有所不同。因为接下去的几列可能包括来自前面加法机的进位,而第一列不会有进位,所以全加器的进位输入端是接地的,这表示输入为“0”。第一列相加后很可能会产生一个进位输出,这个进位输出是下一列加法的输入
    对于接下去的两个二进制位和灯泡,可以按如下办法连接全加器:

第一个全加器的进位输出是第二个全加器的进位输入。接下去的每一列数都以这种方式连接,每一列的进位输出都是下一列的仅为输入。
    第八个灯泡和最后一对开关连接到最后一堆全加器上,连接方式如下图所示:

这里最后的进位输出连接到第九个灯泡上。
    这样,8个全加器就构造成功了。
    还可以用另一种方式来看8个全加器的集成,每个全加器的进位输出都是下一个全加器的进位输出:

下面是一个完整的屏蔽在一个盒子里的8位加法器。输入时A和B标识为从A0-A7及B0-B7。输出为和输出,标识为从S0-S7;

这是标识多为数字的常用方法。下标为0的位A0,B0和S0表示最右边的,最不起眼的位。而位A7,B7和S7是最左边的,最引人瞩目的位。例如,下面展示的是这些字母是如何用来表示二进制数0110-1001的:

下标始于0,且向高位递增的原因是因为是它们和2的乘方数(幂)是对应的:

如果把每个二进制位和对应的2的幂次数相乘再依次相加,你就会得到110-1001的十进制数表示,即64+31+8+1=105。

8位加法器的另一种画法是:

双向箭头包含了8个输入端,代表一组8个分开的信号。它们标识为A7-A0,B7-B0,S7-S0也可以用来标识一个8位二进制数。

一旦构造了一个8位加法器,就可以构造另一个加法器。把他们级串联起来可以很容易的构成16位加法器:

右边加法器的进位输出连到左边加法器的进位输入端。左边加法器的输入包含了两个加数的高8位,同时产生了结果的高8位。


总结

        现在,你可能会问:“计算机真的是以这种方式把数字加起来的吗?”
        基本上是这样的,但不完全是。
        首先,加法器应该做得更快。如果你明白这个电路是如何工作的,你会看到最低位相加产生的进位作为下一列数相加的一个输入,而第3列的加法又等着第2列加法的进位,依此类推。加法器总体的速度等于加数的位数乘以单个全加器的速度,这种进位方式称为行波进位。更快的加法器使用称为先行进位的加法电路,从而加快了加法进程。
        第二(但是十分重要),计算机再也不用继电器了!尽管它们曾经用过。建于20世纪30年代初的第一批数字计算机使用继电器,后来又用了真空管。现代计算机用晶体管。当用在计算机中时,晶体管和继电器的功能差不多,但是晶体管速度更快,体积更小,更安静,更省电,而且还便宜不少。构造一个8位加法器仍然需要144个晶体管(如果采用先行进位,则需要得更多),但整个电路的体积却小多了。

        运算器主要的处理对象是数据,所以数据的长度以及数据的表示方法,对运算器的影响很大。大多数通用CPU是以16、32、64位数据作为运算器一次处理数据的长度。能够一次性对一个数据的所有位,同时处理的运算器称为并行运算器,一次只能对数据的一个位处理的运算器称为串行运算器。我们通常所说的“CPU是几位的”就是指ALU一次所能处理的数据的位数。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初见Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值