首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >负载存储体系结构如何区分alu操作和内存访问指令

负载存储体系结构如何区分alu操作和内存访问指令
EN

Stack Overflow用户
提问于 2020-07-12 15:52:31
回答 1查看 760关注 0票数 0

我正在学习RiscV体系结构。我认识到,和其他RISC体系结构一样,它也是一个负载存储架构。我在google上搜索并了解了负载存储体系结构,它告诉我,在执行附加操作的负载存储体系结构中,必须将两个操作数从内存加载到寄存器中,然后执行操作,结果再次从寄存器存储在内存中。下一个语句,即它可以区分ALU操作和内存访问之间的指令。有人能说出它是怎么做到的吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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位和更大的指令。)

查看操作码字段和可能的次要操作码字段的方法并不是加载/存储体系结构的唯一方法--所有指令集体系结构都使用操作码字段,例如理解指令的长度(如果该实现需要的话)以及操作数、含义、位置/大小。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62863238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档