- ALU的核心是带标志加法器。
- ALU是功能强大的组合逻辑电路,能进行算术运算、逻辑运算、移位操作。
- ALUop是操作控制端,决定ALU所执行的处理操作。
- ALUop的位数决定了操作的种类,位数为3时,有
种操作。 - 在ALUop的控制下,由一个多路选择器MUX选择输出某种操作结果。
- MUX是多路选择开关,它从多个输入信号中选择一个送到输出端。

通过学习移位运算、定点加减法运算和乘除法运算、浮点加减法运算和乘除法运算,我们了解到计算机中的各类算术运算都可以通过基本的定点加法运算和移位运算来实现。将实现加法运算、移位运算、逻辑运算以及各种算术运算所需的数字逻辑电路集成在一起,就可以构成CPU中的运算器。
运算器通常分为定点运算器和浮点运算器两种。定点运算器以算术逻辑单元ALU为核心,支持定点数的位运算、算术运算和逻辑运算。而浮点运算器则以浮点运算单元FPU为核心,负责浮点数的算术运算。

通过之前的课程,我们知道浮点运算比定点运算复杂得多,因此实现浮点运算的逻辑电路也比较复杂。早期,这些功能被集成到单独的芯片中。我还记得1992年底,我拥有的第一台计算机,其CPU是386SX,它直接焊接在主板上。主板上还有一个方形的空插座,是用于安装浮点运算器的,称为387SX协处理器,根据应用需求可以选装。目前,浮点运算器通常集成在CPU内部。接下来,我们举例说明定点运算器的核心——算术逻辑单元ALU,而浮点运算单元FPU的内容已超出本课程的教学大纲,有兴趣的同学可以自行查阅相关资料。

如图所示,一个能完成3种运算——与、或和加法的一位ALU,由与门、或门和一位全加器等关键部件组成。多路选择器被用来选择输出运算结果。当向该ALU输入信号,即操作数A和B以及进位输入c in时,与门、或门以及一位全加器会并行运行,将各自的运算结果送入多路选择器的输入端。多路选择器在操作控制端ALUOP的控制下,选择并输出相应的运算结果。例如,当ALUOP输入为00时,与运算的结果将从多路选择器输出;若输入为01,则或运算的结果输出;当输入为10时,一位全加器的输出结果通过多路选择器输出。为了简化表示,我们可以使用特定符号来表示这个ALU,以隐藏其内部的组成细节。
进一步观察例2,即使用我们之前介绍的单个ALU构建N位ALU,如图所示,许多同学可能已经注意到了ALU之间的这种串行连接方式。我们在学习关于串行进位加法器的硬件逻辑实现时已经了解过这种连接方式。实际上,这种串行连接意味着将各个ALU内部的一位全加器按照串行进位加法器的方式进行链接。我们相信同学们都能够理解这一过程,因此将不再赘述。我们用该符号来表示这个N位ALU,以屏蔽其内部组成细节。
ALU的输出除了运算结果外,还包括一些状态标志位。常见的状态标志位包括:ZF,表示运算结果是否为零;OF,表示有符号运算是否溢出;SF,表示运算结果是否为负数;CF,表示加法或逻辑左移操作是否产生进位。请同学们注意,不同计算机系统可能使用不同的方法和时机来利用这些标志位。许多计算机将这些标志位暂存在一个状态寄存器中,以供后续指令使用,例如x86架构中的EFLAGS寄存器,其中的条件分支指令会根据标志位的不同执行不同的操作。然而,一些计算机如M68000并不设有状态寄存器,其条件分支指令直接根据ALU当前的状态标志位执行不同的分支。

需要指出的是,定点运算器除了包含核心的ALU之外,还配备了通用寄存器组和缓冲寄存器等功能部件。这些部件通过内部总线相互连接。