在计算机科学中,算术逻辑单元(ALU)是一种组合数位电路,用于对整数二进制数字执行算术和位元运算。与浮点运算单元(FPU)不同的是,ALU专注于对二进制数进行操作。 ALU是众多计算电路的基本组件,包括计算机的中央处理单元(CPU)、FPU和图形处理单元(GPU)等。
ALU的输入资料称为操作数,而指示要执行操作的代码称为操作码(opcode)。 ALU的输出则是执行运算后的结果。
一个基本的ALU拥有三个平行数据总线,分别承载两个操作数(A和B)和一个结果输出(Y)。这些数据总线的宽度通常相同且与外部电路的原生字位大小相匹配。操作码是传递给ALU的一个平行总线,该操作码指定希望ALU执行的算术或逻辑操作。操作码的大小决定了ALU最长可支持的不同操作数量。
ALU的运作是一种组合逻辑电路,意味着其输出将随着输入的变化而异步改变。在正常运作中,相对稳定的信号会被应用到所有ALU的输入上,经过适当时间(即传播延迟)后,ALU的运算结果便会显示在输出端。
外部电路负责确保ALU的输入信号在运作过程中保持稳定,并提供充足的时间让信号穿过ALU电路。
进入具体操作,ALU常见的基本算术与逻辑运算包括:加法、减法、位元逻辑与位元移位等。每种操作都有其特定的流程,比如对于加法,A和B的和会进入输出Y,同时返回进位信号。
ALU的功能不仅限于基本算术运算,它也能执行多种位元逻辑运算,如与(AND)、或(OR)和异或(XOR)。
ALU在处理任务时也会生成状态输出信号,这些信号提供有关当前运算结果的附加信息,例如进位信号、零信号、溢出与奇偶信号等。这些状态信号将被外部寄存器储存,并在未来的ALU运作中被利用。
在多精度运算中,ALU可以处理超出其字长的整数,通过将整数视为有序的ALU大小片段集合来实现。这一过程中,ALU逐个运算各个片段,生成完整的多精度运算结果。
当前的ALU设计多为集成电路,这些现代的ALU具备宽广的字长,并添加了如桶移位器和二进制乘法器的架构增强,使其在单一时钟周期内执行以往多运算才能完成的操作。
随着计算机技术的发展,ALU的历史源远流长。早在1945年,数学家约翰·冯·纽曼便提出了ALU的概念。而1951年的Whirlwind I计算机则是第一个具有多个并行单一位ALU的计算机。随着技术演进,ALU的复杂性和功能版本也不断增加。
如今的ALU无论在微处理器还是在图形处理单元中,均发挥着不可或缺的作用。在图形处理单元中,成百上千的ALU可同时操作,为数位影像运算提供支持。这样的设计不仅提高了计算效率,也为复杂的应用提供了强大的计算能力。
在了解ALU的运作和架构后,读者或许会思考,这些基本的逻辑运算究竟如何影响我们所使用的现代技术?