从零入门Alu算术逻辑单元的组成及原理01

Alu 是 cpu 里的 算术逻辑单元

一个32位的Alu由32个独立的Alu 单元组成 每一个Alu单元的构成 由逻辑单元(and or not 等)和选择器组成, 选择器相当于控制选择哪个逻辑门或者逻辑群进行操作, 如下图 所示的一位选择器 比如有三个输入(A,B,C) 有一个输出 out, 细心发现 当A为 0时 out的结果取决于 B的值,当A为1的时候out的结果取决于C的值,因此 A相当于选择器 只不过是一位选择器,一位选择器 可以控制两个输入,当有更多位数时候,可以控制2^n个输入.  

从零入门Alu算术逻辑单元的组成及原理01

可能又有人疑问了,那么计算机自己是怎么设置控制器里的值的呢,其实值是由我们自己设置的,比如当我们声明一个变量 int a =1 此时编译器会将这行代码变成包含操作码的机器码,操作码就是控制器里对应的值。而cpu只需要转换这些机器码就可以了。

刚刚说了Alu里面包含简单的and or not,那么通过简单的And or not 就可以 执行复杂的加法操作,减法操作。

比如一个无符号位的加法     001  ,001二进制转换为十进制是1,因此结果是2,此时  110中的0刚好就是1异或1的结果,而异或                                             +001 

                                   ------------------

                                           010

的公式表达是~ABV~BA,也就是相同为1不同为0,细心发现异或是由~A(not 逻辑门) ~AB(and逻辑门)以及V代表的或逻辑门组成。这个例子证明了通过简单的逻辑Alu就能执行更复杂的运算,当这些逻辑不断组合可以实现更复杂的操作。

在Alu启动的时候, Alu内部已经计算好了输入的值所所对应的and,or,not,xor等运算的的结果,不管接下来的操作是否要用到这些结果,每个Alu都会预先先将这些计算结果进行保留,比如有两个输入A和B,其值分别为0和1,那么and,or,xor的结果分别是0,1,1,将这些结果保留到Alu单元里。随后接受控制器中的信号,选择要输出的值。下图是完整的Alu单元组成的简化模型,Binvert的含义是将输入的B的值进行取反从零入门Alu算术逻辑单元的组成及原理01是逻辑and从零入门Alu算术逻辑单元的组成及原理01是逻辑与,可以看到从左到右Alu先将两个输入的and,or结果计算出来并保留,当operation也就是选择器设置不同的值,就将不同逻辑门里面计算出来的值输出。

从零入门Alu算术逻辑单元的组成及原理01