单周期32位MIPS处理器中指令执行后信号值是多少?

问题描述 投票:0回答:1

考虑单周期 32 位 MIPS 处理器的以下数据路径。

 Datapath for a single-cycle 32-bit MIPS processor

假设以下程序中正在执行lw指令:

lui $t2,0x3f

原 $t2,$t2,0x11

lw $t8,4($t2)

指令lui位于地址0x40004044。那么执行lw指令时A、B、C、D、E的信号值是多少呢?对于每个信号,请用整数回答,或者在无法使用给定信息确定准确值的情况下为信号值写入未知。

任何人都可以指导我如何解决这个问题吗?我已经得到了答案,但我不知道如何解决实际问题才能得到这些答案。

答案:

信号值为

A = 24

B = 0x003f0011

C = 未知

D = 0x40004060

E = 0x4000404C

mips cpu cpu-architecture cpu-registers alu
1个回答
0
投票

首先,由于这是一个单周期处理器,因此在感兴趣的

lw
之前有指令这一事实,仅影响寄存器(包括 PC)中的值,而不影响
lw
执行时的控制信号。

如果

lui
指令存储在
0x40004044
,则
ori
存储在
0x40004048
,而
lw
存储在
0x4000404C
。因此,当
lw
执行时,当前PC值为
0x4000404C

那么,让我们从

E
开始,它是一个PC值:
0x4000404C
lw
指令的位置。您可以看到这一行从 PC 寄存器出来,进入指令存储器,这是对
lw
指令位的提取。该 PC 值也进入增量电路,该电路将 PC 值加 4,以便顺序执行下一条指令。

接下来,

A
lw
指令的目标寄存器号。我们怎么知道呢?这是一个“指令解码”的问题。 lw指令具有I-Type格式。这意味着
rs
rt
字段是相关的。它执行
R[rt] = M[R[rs]+SignExtImm]
rs
字段占用比特25:21并且
rt
字段占用比特20:16。因此,在
lw $t8,4($t2)
中,
$t8
rt
,而从
$t8
的友好名称我们可以知道
$24
的实际寄存器编号值,因此24基十(即24
10
),通过只需在寄存器名称表中查找即可。

© www.soinside.com 2019 - 2024. All rights reserved.