首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定CPU中寄存器的值

确定CPU中寄存器的值
EN

Stack Overflow用户
提问于 2021-05-06 07:33:22
回答 1查看 34关注 0票数 0

在特定的时钟周期内,考虑图中所示的enter image description here

假设存在以下初始数据(所有值均以十进制显示):

x3=72、x4=40、x8=0、x16=24、x17=56、x18=48、x20=40、x24=80

假设以下五条指令正在流水线中

(第一列是指令的地址;所有值都以十进制显示):

66992 beq x17,x16,24

66996 addi x17,x8,8

67000标清x20,40(x24)

67004用户x10、x4、x18

67008 ori x27,x3,16

在所讨论的周期内,上述列表第一行上的指令位于

写回阶段,并且上述列表的最后一行上的指令在指令提取中

舞台。

如何确定L1、L2和L3的值?:

我不确定如何开始解决这类问题。就像L1是关于

读取数据% 1。但是它将从哪里读取数据。看起来

L1连接到说明书31-0、说明书30、14-12和

说明书11-7。因此它将从其中一条指令中读取数据

如果我考虑到or x21,x3,x19处于指令获取阶段

则L1应包含x3 = 72的值

我不确定这是否正确

EN

回答 1

Stack Overflow用户

发布于 2021-05-06 11:16:41

行:读寄存器1、读寄存器2、写寄存器都是5位行,它们是来自指令字段的寄存器名称(数字)。写数据是来自较早指令(图中后面)的64位行。

你必须知道在处理器中解码的一些基础知识,以及每条指令要做什么才能知道这一点。

不幸的是,您的图表是非常抽象的--例如,L2线没有标记。

请看这篇文章,它解释了一些关于时序的事情:https://www.codementor.io/@erikeidt/logic-block-diagrams-w6zxr6sp6.需要特别注意,供给读取寄存器1、2和写入寄存器的指令字段都标有指令字段位位置,您可以在演示文稿中将这些位位置与RISC V指令格式关联起来:https://inst.eecs.berkeley.edu/~cs61c/resources/su18_lec/Lecture7.pdf (有关格式的概述,请参阅幻灯片8)。

这两条信息放在一起,告诉我们,例如,读寄存器2来自指令字段24:20,该字段对应于R型、S型和SB型指令的rs2字段。

这有点跳跃,但L1上的对应值是在由L2命名的寄存器(寄存器堆)中查找的64位(假设为RV64)值(在执行查找时)。

因此,如果您稍微了解一下I-Type指令与R-Type指令的不同工作方式,就会了解其中一些数据路径上的内容。

L3是算术逻辑单元比较器输出,在某些处理器设计中,它在EX级上输出,以指示两个寄存器是否相等,并由条件分支指令(beq和bne)使用。

这些图表都是从硬件中实际发生的事情中抽象出来的,因为RISC V比==和!=有更多的条件分支,但这些图表中的许多都是从原始的MIPS改编而来的,它只有这两个比较器用于条件分支。

L4是一个新的PC值,在采用条件分支时使用。

算术逻辑单元,在这个图中很难看到,但是算术逻辑单元的输出被转发到一些MUXes,用于选择写入数据的值。

(您的图表还包括流水线寄存器和阶段,许多其他图表没有,在相应的单周期图表中,某些细节更容易理解。)

是的,对于带有寄存器x3ori,L2将是3(对于x3),L1将是72。

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

https://stackoverflow.com/questions/67410037

复制
相关文章

相似问题

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