为什么ALU结果将地址写入R型指令的存储器?

问题描述 投票:1回答:1

我正在尝试了解MIPS指令的单周期数据路径。目前,我可以跟踪R型,I型和J型指令,并且我知道不同指令上的控制信号,但是我仍然有一些不清楚的地方。在此示例中,我假设存在R型指令,例如add指令。

single-cycle datapath

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

assembly mips processor instruction-set
1个回答
4
投票

不会将地址“写入”到内存,而是将地址提供给数据内存。

内存操作需要三件事:

  • 地址
  • 尺寸

某些内存操作是“负载”-这些操作将值从内存传输到CPU,因此负载为该值指定了目标寄存器;一些内存操作是“存储”-这些操作将值从CPU传输到内存,因此存储为该值指定一个源寄存器。

无论装入还是存储,都必须指定一个地址来执行数据存储操作。在MIPS上,我们只有一个addressing mode,即寄存器+符号立即扩展。在简单的MIPS处理器中,ALU执行此加法,因为它在该时钟周期内是空闲/可用的。

控制信号打开MemRead进行加载,打开MemWrite进行存储。否则,这两个都关闭,因此对于R-Type指令,分支指令以及任何未加载或存储的指令,数据存储器均处于非活动状态。

对于R-Type指令,ALU结果被发送(围绕数据存储器,并最终)作为写数据返回到寄存器。对于加载指令,“数据存储器”值将成为“写数据”。

© www.soinside.com 2019 - 2024. All rights reserved.