计算机组织分科教学一个分支是计算机程序中的一条指令,它可以使计算机开始执行不同的指令序列,从而偏离其按顺序执行指令的默认行为。分支也可以指作为执行分支指令的结果而将执行切换到不同指令序列的行为。分支指令用于实现程序循环和条件中的控制流(即,仅在满足某些条件时执行特定的指令序列)。 分支指令可以是无条件转移,这总是导致分支或条件分支,这可能会导致分支,也可能不会,这取决于某些条件。另外,这取决于它如何指定新指令序列的地址(目标地址)。 分支指令一般分为直接、间接或相对。这意味着指令包含目标地址,指定在哪里可以找到目标地址(例如,寄存器或存储器位置),或指定当前地址和目标地址之间的差异。分支指令以四种方式之一计算目标地址:
可以在分支之前充分计算目标地址,以便使用前两种方法沿目标路径预取指令。 使用第三和第四种方法,如果在分支指令之前充分加载了链接寄存器或计数寄存器,那么沿着分支路径预获取指令也是可能的。 分支指令的类型在计算机组织中有三种类型的分支指令: 1.跳转指令 跳转指令根据指定的标志将程序序列传输到操作数中给定的内存地址。跳转指令又分为无条件跳转指令和条件跳转指令两部分。
2.调用指令 调用指令将程序序列传输到操作数中给定的内存地址。在传输之前,在CALL之后的下一条指令的地址被压入堆栈。呼叫指令也分为无条件呼叫指令和条件呼叫指令两种。
3.返回指令 返回指令将程序序列从子程序传输到调用程序。返回指令有两种类型:无条件跳转指令和条件跳转指令。
分支指令的实现从机械上讲,分支指令可以改变CPU的程序计数器。程序计数器存储下一条要执行的指令的内存地址。因此,分支会导致CPU开始从不同的内存单元序列中获取指令。有时称为机器级分支指令跳转指令。
分支指令的处理分支指令可以用几种方式处理,以减少它们对指令执行速度的负面影响。 1.分支延迟槽 处理器在确定当前指令是否为分支指令之前获取下一条指令。当当前指令执行完毕,要进行分支时,处理器必须丢弃剩余的指令,并在分支目标处获取新的分支指令。分支指令后面的位置称为a分支延迟槽。根据执行分支指令的时间,可能有多个分支延迟槽。 一种称为延迟分支的技术可以最大限度地减少由条件分支指令引起的损失。延迟槽中的指令总是被获取。因此,我们想安排他们完全执行,无论分支是否采取或不采取。我们的目标是能够在这些插槽中放置有用的指令。如果延迟插槽中不能放置有用的指令,则必须用NOP指令填充这些插槽。 2.分支预测 分支预测获取统计数据并使用结果来优化代码。程序员会编译一个程序的测试版本,并使用测试数据运行它。
软件分支预测的问题在于它需要一个复杂的软件开发过程。 3.Branch-free代码 有些逻辑可以不使用分支或使用更少的分支编写。通常可以使用位操作、条件移动或其他预测来代替分支。由于定时攻击,无分支代码对于密码学是必须的。 4.硬件分支预测器 为了运行任何软件,硬件分支预测者将统计数据转移到电子设备中。分支预测器是处理器的一部分,用于猜测条件分支的结果。然后处理器的逻辑在猜测上下注,开始执行预期的指令流。 一个简单的硬件分支预测方案的例子是假设所有向后分支(到较小的程序计数器)都被取走了(因为它们是循环的一部分),而所有向前分支(到较大的程序计数器)都没有被取走(因为它们离开了循环)。 通过在各种测试程序中模拟运行,开发了更好的分支预测器并进行了统计验证。好的预测者通常会计算分支之前执行的结果。
下一个话题
计算机组织中的数据表示
|