繁体   English   中英

为什么 ALU 结果将地址写入 memory 用于 R-Type 指令?

[英]Why ALU result writes address into memory for R-Type instructions?

我正在尝试了解 MIPS 指令的单周期数据路径。 目前我可以跟踪 R 型、I 型和 J 型指令,并且我知道不同指令上的控制信号,但我的脑海中仍有不清楚的地方。 在这个例子中,我假设有一个 R 类型的指令,比如说add指令。

单周期数据通路

我认为add指令与 memory 无关。 当然,它不会将结果值写入 memory,但它指向数据 memory 中的“地址”输入。 这就是我感到困惑的地方。

它不会将地址“写入”到 memory,而是将地址提供给数据 Memory。

memory 操作需要 3 件事:

  • 一个地址
  • 一个值
  • 一个尺寸

一些 memory 操作是“加载”——这些操作将一个值从 memory 传输到 CPU,因此加载指定该值的目标寄存器; 一些 memory 操作是“存储”——这些操作将值从 CPU 传输到 memory,因此存储指定该值的源寄存器。

无论是加载还是存储,都必须指定地址才能执行数据 Memory 操作。 在 MIPS 上,我们只有一种寻址模式,即寄存器 + 符号扩展立即数。 在简单的 MIPS 处理器中,ALU 执行这个加法,因为它在那个时钟周期内是免费的/可用的。

控制信号为加载打开 MemRead,为存储打开 MemWrite。 否则,这两个都关闭,因此数据 Memory 对于 R 型指令、分支指令、任何不加载或存储的指令都是无效的。

对于 R-Type 指令,ALU 结果被路由(围绕数据 Memory,最终)作为写入数据返回到寄存器。 对于加载指令,数据 Memory 值变为写入数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM