【问题标题】:Extending MIPS datapath to implement SLL and SRL扩展 MIPS 数据路径以实现 SLL 和 SRL
【发布时间】:2015-10-25 20:07:54
【问题描述】:

这是数据路径:

所以这似乎是一个很常见的问题,但我似乎找不到任何关于如何扩展数据路径以实现 SLL 和 SRL 的答案。

这就是我的想法,但我不完全确定:

在寄存器文件旁边的读取数据 1 旁边需要另一个多路复用器。该多路复用器将读取数据 1 (rs) 和读取数据 2 (rt) 作为输入。如果我们不进行移位操作,它将选择读取数据 1,如果我们正在执行移位操作,它将选择 rt(因为 sll 和 srl 使用 rt,而不是 rs)。然后将其馈入 ALU。

接下来,我们需要将 Instruction[10:6](移位量)从 Instruction[15:0] 中分支出来,然后将 Instruction[10:6] 输入 ALU 的另一个端口。这是正确的想法吗?

【问题讨论】:

    标签: mips sll srl


    【解决方案1】:

    这是单周期数据路径上的 sll,但我不确定 ALU 现在是否获得 5 位而不是 4 位控制输入。 如果您进行 sll,那么第一个 ALU 输入将是假的,第二个是要移位的寄存器,ALU 知道是否由于指令字段而必须进行移位,因为它是 R-Type 指令。然后移位的数据将保存在 rd 寄存器中。 SLL SC datapath

    【讨论】:

    • 我认为这是要走的路。如果您需要 5 位 ALU 控制取决于您已经支持多少 ALU 操作。我也会将“shamt”直接提供给 ALU,因为值 0 也是有效的。 ALU可以根据运算决定是否使用。
    【解决方案2】:

    您需要修改 SLL 指令的数据路径,在 ALU 中添加一条带有“shamt”字段的输入线以确定移位量。 ALU 将通过 ALUop 字段识别 SLL 操作。 Modiffied datapath

    【讨论】:

    • 如果你这样做了,那么 ALU 的第二个输入会发生什么?多路复用器之后的那个。
    【解决方案3】:

    你正朝着正确的方向前进。如其中一个答案所述,可以向 ALU 添加一个额外的端口,该端口将考虑 shamt 数量(位 [10:6])。可能有一些内部硬件,例如 ALU 中的 MUX,它负责从寄存器文件的输出中选择 shamt 字段或读取数据 2。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多