计算机组成原理——ALU

文章目录

1. ALU

1.1 复用器

2. 16位ALU

3. 自动计算单元


1. ALU

ALU(算术逻辑单元)是计算机中的一种关键组件,负责执行算术运算和逻辑运算。它是中央处理器(CPU)内部的一个重要功能模块,用于处理数据和执行指令。ALU可以看作是计算机的大脑之一,能够实现加法、减法、按位与、按位或运算等,同时还有一个零标志(ZF, Zero Flag)指示A、B两数是否相等。

1.1 复用器

在ALU中,我们常常用到复用器(Multiplexer),复用器根据控制信号选择输入信号并输出。

1. 简单复用器

  • 结构:一个简单的复用器有两个输入(A和B)和一个控制信号(sel),输出(Q)取决于控制信号的值。
  • 工作原理:如果控制信号sel为0,输出Q为输入A;如果控制信号sel为1,输出Q为输入B。

这个电路展示了一个简单复用器,当sel为0时,Q输出A;当sel为1时,Q输出B。

这个电路展示了同样的简单复用器,使用逻辑门实现,当sel为0时,通过一个与门和或门组合,Q输出A;当sel为1时,通过另一个与门和或门组合,Q输出B。

  • 输入

    • A = 0
    • B = 1
    • sel = 0
  • 输出:Q = A(因为sel = 0)

    • Q = 0

2. 四相复用器

  • 结构:一个四相复用器(使用两个简单复用器组合实现)有四个输入(A, B, C, D)和两个控制信号(sel0, sel1),输出(Q)取决于控制信号的组合。
  • 工作原理:根据控制信号的组合选择一个输入作为输出。例如,如果sel0和sel1的组合为00,输出Q为A;如果组合为01,输出Q为B;如果组合为10,输出Q为C;如果组合为11,输出Q为D。

  • 输入

    • A = 0
    • B = 1
    • C = 0
    • D = 1
    • sel0 = 1
    • sel1 = 0
  • 输出:Q = C(因为sel0和sel1的组合为10)

    • Q = 0

2. 16位ALU

该电路能够实现A、B两数的加法、减法、按位与、按位或等操作,最终的输出由选择信号sel决定。ALU的实现通过使用加法器、减法器、逻辑门等组件,将它们的位数扩为16位,从而实现对16位数据的运算。

输入信号

  • AB:16位输入数据。
  • Sel:输入的进位标志。

输出信号

  • S:结果输出。
  • Cout:输出的进位标志。
  • ZF:零标志,表示A和B是否相等。当A和B相等时,ZF输出为1;否则为0。

主要组件

  • 加法器(Adder):用于执行A + B操作。
  • 减法器(Subtractor):用于执行A - B操作。
  • 逻辑与门(AND Gate):用于执行A & B操作。
  • 逻辑或门(OR Gate):用于执行A | B操作。
  • 选择器(Multiplexer):根据sel信号选择最终的输出。

通过选择信号sel,可以控制ALU执行不同的操作:

sel结果
0b00A + B
0b01A - B
0b10A & B
0b11A | B

示例:按位或操作

  • 输入:A = 0x1234, B = 0x5678, sel = 0b11
  • 操作:S = A | B = 0x1234 | 0x5678
  • 输出:S = 0x1234 | 0x5678 = 0x567C

3. 自动计算单元

如果想使用刚才的ALU去实现连续加法,例如20+30+50,我们就需要手动去操作,先计算20+30,记住结果后,使用结果再加上50。这个操作需要每次手动记录S的结果,然后将其作为下一次计算的输入。

为了避免每次手动记录结果,我们可以通过添加寄存器组件来实现自动存储ALU的结果,并将其作为下一次计算的输入。

组件和连接

添加组件

  • 一个16位寄存器(Reg)
  • 一个16位ALU
  • 一个按钮组件
  • 三个常量组件(常量值设置为0,用于输入)
  • 输入和输出组件(设置为16位,数据模式为decimal)

连接

  • ALU的输出S连接到寄存器的输入D
  • 寄存器的输出Q连接到ALU的输入A
  • ALU的输入B通过输入组件提供
  • ALU的选择信号sel连接到常量组件,设置值为0(表示只进行加法运算)

自动计算步骤

  1. 设置输入和时钟

    • 将寄存器和ALU连接好,并配置时钟信号。
    • 将sel设置为2bit,值为0,表示进行加法运算。
  2. 执行操作

    • B输入15,按下按钮,ALU进行加法运算,将结果15存储在寄存器中。
    • B输入20,按下按钮,ALU进行加法运算,将结果35存储在寄存器中。
    • B输入30,按下按钮,ALU进行加法运算,将结果65存储在寄存器中。
    • B输入10,按下按钮,ALU进行加法运算,最终结果为75。

时钟信号

在上述操作过程中,按下按钮的动作模拟的是计算机中的时钟信号。时钟信号在计算机电路中充当节拍器的角色,由晶振统一产生。CPU的计算就是以时钟信号为单位进行的。时钟信号频率越高,CPU计算速度越快,但相应的电流也会增大,导致发热增加,这也是限制CPU频率提升的重要因素之一。

通过将ALU与寄存器组合使用,可以实现自动累加运算,无需手动记录中间结果。时钟信号控制计算过程的节奏,提高了计算效率。

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TENET-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值