需要澄清内存访问 (ISA/MIPS)
Need Clarification on Memory Accessing (ISA/MIPS)
我正在做一个设计我自己的 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”,我的指令将在内存地址 0001 中存储“5”。
还可以说我想用“4”覆盖地址 1100 中的值“3”。我可以做 Mem[1100] <--- 0100(binary for 4) ?
我执行的是否正确?还是我接近内存寻址完全错误?
这些架构通常有一个累加器。否则你需要一个双端口 ram 来同时访问两个操作数。
您可以锁存一个内存值,但那只是一种不太通用的累加器。
内存写入与读取在不同的时钟/时钟侧翼上完成。
常量内存操作使用与相同类型的内存-内存操作不同的操作码。
最后,如果你的 const 对于你的指令大小来说太大了,你需要先将 const 复制到内存地址,然后在内存-内存操作中使用它。
我正在做一个设计我自己的 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”,我的指令将在内存地址 0001 中存储“5”。
还可以说我想用“4”覆盖地址 1100 中的值“3”。我可以做 Mem[1100] <--- 0100(binary for 4) ?
我执行的是否正确?还是我接近内存寻址完全错误?
这些架构通常有一个累加器。否则你需要一个双端口 ram 来同时访问两个操作数。
您可以锁存一个内存值,但那只是一种不太通用的累加器。
内存写入与读取在不同的时钟/时钟侧翼上完成。
常量内存操作使用与相同类型的内存-内存操作不同的操作码。
最后,如果你的 const 对于你的指令大小来说太大了,你需要先将 const 复制到内存地址,然后在内存-内存操作中使用它。