我正在学习RiscV体系结构。我认识到,和其他RISC体系结构一样,它也是一个负载存储架构。我在google上搜索并了解了负载存储体系结构,它告诉我,在执行附加操作的负载存储体系结构中,必须将两个操作数从内存加载到寄存器中,然后执行操作,结果再次从寄存器存储在内存中。下一个语句,即它可以区分ALU操作和内存访问之间的指令。有人能说出它是怎么做到的吗。
发布于 2020-07-12 16:21:54
必须将两个操作数从内存加载到寄存器中,然后执行操作,结果再次从寄存器存储在内存中。
这有点误导或过于简单化。
首先,只有当操作数都在内存中,例如在以下表达式中时,才会发生这种情况:
a[i] = b[i] + c[i];
你会有两批货和一家商店。
相比之下,像i = i + 1;这样的表达式通常已经在寄存器中包含了i,所以这只是一条指令--没有加载或存储。
其次,非加载/存储体系结构可能能够用较少的指令来表示内存添加,但它们仍然必须完成相同的工作:从内存中获取操作数,在CPU中添加,并将结果存储回内存。
下一条语句,即它可以区分ALU操作和内存访问之间的指令。
简单的答案是,负载、存储和ALU操作都有不同的操作码。操作码告诉CPU (以及软件反汇编器和人)指令格式,该格式还可能有一个次级操作码,进一步区分操作。(在RISC V上,操作码的前两位通知指令大小是32位还是16位,而更多位用于48位和更大的指令。)
查看操作码字段和可能的次要操作码字段的方法并不是加载/存储体系结构的唯一方法--所有指令集体系结构都使用操作码字段,例如理解指令的长度(如果该实现需要的话)以及操作数、含义、位置/大小。
https://stackoverflow.com/questions/62863238
复制相似问题