跳转到内容

微处理器设计/移位和旋转块

来自维基教科书,开放的书籍,开放的世界

移位和旋转

[编辑 | 编辑源代码]

移位和旋转块是大多数处理器中必不可少的元素。它们本身很有用,但它们也用于乘法和除法模块。在二进制计算机中,左移位与乘以 2 具有相同的效果,右移位与除以 2 具有相同的效果。由于移位和旋转操作的执行速度远快于乘法和除法,因此它们作为程序优化工具非常有用。

逻辑移位

[编辑 | 编辑源代码]
左逻辑移位 右逻辑移位

在逻辑移位中,数据按适当的方向移位,并且零被移位到新位置。

算术移位

[编辑 | 编辑源代码]
右算术移位

在算术移位中,数据向右移位,以便保留数据的符号。这意味着 MSB 是移位到新位置的值。算术左移位与逻辑左移位相同,因此这里没有显示。

左旋转 右旋转

旋转类似于移位,不同之处在于移位出寄存器末端的位然后移位到新位置。

快速移位实现

[编辑 | 编辑源代码]

上面每个部分中的图像都有助于指示一种更快地移位寄存器的方法,但需要额外的硬件。与其使用一个试图就地移位的寄存器,不如并行使用两个寄存器,并用电线将各个块连接起来。当指示移位时,门打开,允许数据以适当的位数向前或向后从一个寄存器传递到另一个寄存器。

在实践中,快速移位块实现为“桶形移位器”。桶形移位器包括多个“级”的多路复用器,每个多路复用器通过直线(不移位传输数据的电线)和导致按 2 的连续幂进行移位的电线连接到前一个多路复用器。例如,第一级移位将是 4 个空格,下一级将是 2 个空格,最后一级将是 1 个空格。通过这种方式,每个移位级的值对应于要移位空格数的二进制表示。这种实现使移位器速度非常快,可以在一个时钟周期内移位任意数量的空格。

进一步阅读

[编辑 | 编辑源代码]

使用 74 系列集成电路的 32 位桶形移位器实现

华夏公益教科书