需要澄清内存访问(ISA/MIPS)



我正在做一项理论作业,设计我自己的ISA。我正在做一个内存设计,ALU从内存接收输入,并在不使用任何寄存器的情况下输出回内存。这是一种过时的方法,寄存器现在更有效,但这对我的任务来说并不重要。

我的问题:

如果我的一条指令的编码看起来像这个

opcode|destination|value1|value2|function
00 0001 0011 1100 00

函数"00"代表加法,操作码00代表ALU运算。

我的RTN对于该函数是这样的:

Mem[0001] <--- Mem[0011] + Mem[1100]

00010011100是内存地址,我试图完成的是将这些内存地址内的值相加,然后将其存储在0001的内存地址中(覆盖它)。

因此,如果内存地址0011中的值是"2",内存地址1100中的值为"3",则我的指令将"5"存储在内存地址0001中。

还假设我想用"4"覆盖地址1100中的值"3"。我可以做Mem[1100]<---0100(二进制表示4)?

我正在实施的是正确的吗?还是我接近记忆寻址完全错误?

这些体系结构通常有一个累加器。否则,您将需要一个双端口ram来同时访问两个操作数。

您可以锁存一个内存值,但这只是一个通用性较差的累加器。

内存写入是在与读取不同的时钟/时钟侧翼上完成的。

内存常量操作与相同类型的内存操作使用不同的操作码。

最后,如果const对于指令大小来说太大,则需要首先将const复制到内存地址,然后在内存操作中使用它。

最新更新