• 计算机组成原理——How to build a computer (calculator) with switch


    怎样用开关组成一个计算机

    十进制加法回顾

    十进制表示

    假如一个十进制数从高位到低位如下,abcde,那么这个数的值如下式:
    a b c d e = a ∗ 1 0 4 + b ∗ 1 0 3 + c ∗ 1 0 2 + d ∗ 1 0 1 + e ∗ 1 0 0 abcde = a*10^4 + b*10^3 +c*10^2+d*10^1+e*10^0 abcde=a104+b103+c102+d101+e100

    举例来说,
    12345 = 1 ∗ 1 0 4 + 2 ∗ 1 0 3 + 3 ∗ 1 0 2 + 4 ∗ 1 0 1 + 5 ∗ 1 0 0 12345 = 1*10^4+2*10^3+3*10^2+4*10^1+5*10^0 12345=1104+2103+3102+4101+5100

    一位十进制加法

    举例如下,

    5 + 8 = 13 5+8=13 5+8=13

    5+8超过了十进制的最大表示9,因此向前进位1位得到十位上的1和个位的3

    十进制推广到二进制

    二进制表示

    二进制与十进制一样,只不过把基底从10换到2,那么二进制下一个数abcde在十进制下的大小就是如下式,

    a b c d e = a ∗ 2 4 + b ∗ 2 3 + c ∗ 2 2 + d ∗ 2 1 + e ∗ 2 0 abcde=a*2^4+b*2^3+c*2^2+d*2^1+e*2^0 abcde=a24+b23+c22+d21+e20,其中a,b,c,d,e的取值为0/1

    举例来说,二进制数10101的十进制大小就是

    1 ∗ 2 4 + 0 ∗ 2 3 + 1 ∗ 2 2 + 0 ∗ 2 1 + 1 ∗ 2 0 = 21 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21 124+023+122+021+120=21

    一位二进制加法

    0+0=0; 0+1=1; 1+0=1; 1+1=10

    逻辑门

    逻辑门包括 与;或;非;异或;同或等逻辑门,每个逻辑门的输入都有两个端口一个输出,以与门为例

    输入A和B两位二进制数,输出C代表的二进制数

    有如下对应关系,

    A B C
    0 0 0
    0 1 0
    1 0 0
    1 1 1

    半加器

    我们定义半加器为输入A和B两个二进制个位数,输出C为和的个位结果,不考虑进位

    有如下关系,

    A B C
    0 0 0
    0 1 1
    1 0 1
    1 1 0

    全加器

    我们定义全加器为输入A和B两个二进制个位数,输出S和C两个二进制数分别代表和的个位数和进位,如下关系

    A B S C
    0 0 0 0
    0 1 1 0
    1 0 1 0
    1 1 0 1

    单独把A B C拎出来会发现满足与门的关系

    因此一个全加器可以表示为如下关系

    在这里插入图片描述
    上图可以看到,两个二进制个位数的加法得到的进位可以用一个逻辑与门表示

    如何实现一个与门

    从上面可以看到,只要实现了一个逻辑与门,就实现了全加器中得到进位的方法

    同理全加器中得到个位的方法也可以通过逻辑门的组合来实现,此处先考虑最简单的与门的实现

    最早的时候,人们发现了电磁原理,并据此创造出了继电器

    继电器是一种开关类电子器件,通过通电生磁吸引开关断合或关闭,使用继电器可以完成开关电路的目的

    那么能不能用继电器实现一个逻辑与门,答案如下

    在这里插入图片描述
    如上图所示,只有A和B都为1时,C才为1,其他情况都为0

    因此便通过真实的物理电路实现了一个逻辑与门,因此也就实现了一个全加器中的进位电路

    同理我们也可以用继电器实现其他的逻辑门从而组成一个完整的全加器,那么我们就完成了两个一位二进制加法

    多位二进制加法

    上面讲述了两个一位二进制加法的原理,那么两个一位二进制加法会得到进位和个位

    当多位的时候,我们需要继续把进位传递给高位进行计算,那么高位的输入就变成了三个

    如下例子所示

    01+01的计算过程如下,

    个位的1和1相加得到个位0和进位1

    十位的0和0与进位的1进行相加,也即0+0+1等于1

    因此最终结果就是01+01=10

    换算成十进制也即1+1=2

    为了计算多位二进制加法就需要考虑到进位的输入,将全加器由两个输入扩充到三个输入,同样可以由逻辑门实现该全加器,而逻辑门都可由继电器主导的物理电路实现

    因此多位二进制加法的图示如下,

    在这里插入图片描述

    如上我们就用继电器物理电路实现了多位二进制加法,而加减乘除均可由加法表示,因此我们可以用继电器物理电路实现加减乘除,也就是最早的继电器计算机

    优化方向

    继电器主导的物理电路构成逻辑门有如下缺点,开关的闭合速度慢导致运算速度慢,物理体积大,机械磨损

    因此优化方向为不使用机械,缩小体积,加快开关闭合速度

    后续出现了体积较大的二极管,三极管等晶体管,再后面出现了小型二极管三极管晶体管,最后出现了现代芯片工艺

    这些新的物理元件本质上都是代替继电器的作用

    因此实际上现代芯片里充满着数十亿的微小继电器,从而构成了当今的计算机芯片

  • 相关阅读:
    SKG 渠道中台借助 SAE + 大禹打造云原生 DevOPS,提效 60%
    Java高级---Spring Boot---1引言
    天翼云为这场酷炫的元宇宙会议做了这件事
    八叉树(Octree)和KD树区别?2d tree与3d tree区别?
    目标检测中的BBox 回归损失函数-L2,smooth L1,IoU,GIoU,DIoU,CIoU,Focal-EIoU,Alpha-IoU,SIoU
    SSL证书:网络通信安全的基石
    OpenResty
    左连接一对多的情况
    牛客多校十 - Shannon Switching Game (倒推,bfs)
    BigInteger.toString方法生成md5字符串,会删除开头0
  • 原文地址:https://blog.csdn.net/qq_34193345/article/details/126149381