这是数据路径:
所以这似乎是一个很常见的问题,但我似乎找不到关于如何扩展数据路径以实现 SLL 和 SRL 的任何答案。
这就是我的想法,但我不完全确定:
在寄存器文件旁边的读取数据 1 旁边需要另一个多路复用器。该多路复用器将读取数据 1 (rs) 和读取数据 2 (rt) 作为输入。如果我们不进行移位操作,它将选择读取数据 1,如果我们正在执行移位操作,它将选择 rt(因为 sll 和 srl 使用 rt,而不是 rs)。然后将其馈入 ALU。
接下来,我们需要将 Instruction[10:6](移位量)从 Instruction[15:0] 中分支出来,然后将 Instruction[10:6] 馈送到 ALU 的另一个端口。这是正确的想法吗?