2.6 寄存器
处理器中的寄存器可以临时存储数据,可用于多种指令操作的输入和输出,例如,与内存进行数据传送、算术运算和位操作等。大多数通用处理器包含用于将寄存器中的二进制数据进行左移或右移的指令,以及对寄存器操作数进行循环移位的指令。循环移位操作类似于环形计数器,不同之处在于循环移位中的位可以保存任意值,而环形计数器通常通过位序列的位置来传送单个位。执行这些功能的电路由本章前面讨论的简单逻辑门和触发器构成。
对处理器内寄存器的数据进行加载或读取通常是并行的,这意味着在公共时钟边沿的控制下,所有的数据位同时在各自的信号线上进行写入或读取。为了简单起见,本节中的示例将使用4位寄存器,但可以根据需要扩展到8位、16位、32位或64位。
图2.14显示了一个具有并行输入和输出的简单4位寄存器。这是一个同步电路,其中输入D0-D3提供的数据位在CLK信号的上升沿被加载到触发器中,数据位立即出现在输出Q0-Q3,并保持其状态,直到在随后的时钟上升沿加载新的数据值。
图2.14 4位寄存器电路
要使用寄存器实现除数据存储之外的其他功能,必须能够将来自多个源的数据加载到寄存器中、对寄存器的上下文执行操作,并将结果数据值写入多个潜在的目的地之一。
在通用处理器中,数据通常可以从内存单元、输入端或另一个寄存器加载到寄存器中。对寄存器的上下文可以执行的操作包括递增、递减、算术运算、移位、翻转和位操作(例如AND、OR和XOR)。需要注意的是,对整数进行递增或递减相当于使用另一个为1的隐含操作数进行加减。一旦寄存器包含计算结果,其上下文就可以写入内存单元、输出端或另一个寄存器。
图2.9显示了两输入多路选择器的电路。很容易扩展该电路以支持更多输入,任何一个输入都可以通过控制输入端来进行选择。对单比特多路选择器进行复制,即可支持处理器数据字(word)中所有比特的并行操作。当向寄存器中加载数据时,此类电路可用于在各种数据源中进行选择。当在处理器中实现时,由指令操作码触发的逻辑会设置多路选择器的输入来将数据从适当的源传送到指定的目标寄存器。第3章将详细介绍如何使用多路选择器将数据传送到寄存器和处理器内的其他单元。
下一节将介绍二进制加法电路。