人世繁华|CPU中的程序是怎么运行起来的( 三 )


ALU(算数逻辑单元)有两个单元:一个算数单元(加法器) , 负责计算机里的所有数字操作 , 例如加减法、增量运算等;一个逻辑单元 , 负责一些简单的数值测试 , 例如检测ALU输出是否为零的的电路
加法器:
用单个晶体管一个个去拼 , 把这个电路做出来 , 到那时会很复杂很难理解 。 所以我们更高层面的抽象-逻辑门去实现(AND、OR、NOT、XOR) 。
下面这是一个1位的加法器:
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
二进制数的“和”可以由异或门得到 , 而“进位”可以由与门得到 , 所以可以把异或门和与门结合起来来完成两个二进制数 A和B的加法
AB只能输入0或者1 , 也就是这个加法器能算0+0 , 1+0或者1+1 。
脱离具体的形状 , 我们可以把以上的一个加法器 , 抽象为一个符号用来显示:
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
然后我们在进行扩展 , 把八个全加器连接 , 这样就变成了一个8bit的加法器 。 每个全加器的进位输出都是下一个全加器的进位输入:
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
用一个抽象的框图进行表示 , 其中输入是A和B标识为从A0~A7及B0~B7 。 输出为和输出 , 标识为从 S0~S7:
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
这样我们就构造了一个简单8位的加法器 。
逻辑单元:同样AND、OR、NOT、XOR的执行 , 如下图一个简单的判断输出是否为0的电路


推荐阅读