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

时间:2016-03-26 23:09:00

标签: memory-management architecture mips cpu-architecture isa

我正在做一个理论任务,我设计自己的ISA。我正在进行存储器 - 存储器设计,其中ALU从存储器接收输入并输出回存储器而不使用任何寄存器。这是一种过时的方法,寄存器现在更有效,但这对我的任务无关紧要。

我的问题:

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

opcode|destination|value1|value2|function

00 0001 0011 1100 00

函数“00”代表加法,操作码00代表ALU操作。

我的RTN对于该功能看起来像这样:

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

0001,0011,1100是内存地址,我正在尝试完成的是将这些内存地址中的值加起来然后将其存储在0001的内存地址中(覆盖它)。

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

还可以说我想用'4'覆盖地址1100中的值'3'。我可以做Mem [1100]&lt; --- 0100(二进制4)?

我正在实施的是正确的吗?或者我正在接近完全错误的内存寻址?

1 个答案:

答案 0 :(得分:1)

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

你可以锁存一个内存值,但这只是一个不太通用的累加器。

内存写入在与读取不同的时钟/时钟侧进行。

Memory-const操作使用与相同类型的内存操作不同的操作码。

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