mips - 计算机体系结构管道停滞

标签 mips pipeline cpu-architecture

首先,抱歉我的英语不好。这个问题是我的计算机体系结构类(class)教科书中的一个问题。我在网上找到了答案,但仍然查不到详细信息。

以下是五阶段(获取、解码、执行、内存、写入)单流水线微架构无转发机制中的指令阶段。 除LW和SW为1+2、Branch为1+1外,所有操作均为一个周期。

Loop:             C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 C11 C12 C13 C14 ...
LW   R3, 0(R0)    F   D   E   M   -   -   W
LW   R1, 0(R3)        F   D   -   -   -   E   M   -   -   W
ADDI R1, R1, #1           F   -   -   -   D   -   -   -   E   M   W
SUB  R4, R3, R2                           F   -   -   -   D   E   M   W
SW   R1, 0(R3)                                            F   D   W   M   ...
BNZ  R4, Loop                                                 F   D   E   ...
...

我有几个问题:

  1. 为什么第二条指令可以在C2中启动D?据我所知,D阶段包括“寄存器读取”,但之前的指令直到C7才写回R3。​​

  2. 和上一样,是什么原因导致第3首的D从C7开始,E从C11开始?

  3. 为什么第四个实例必须从 C7 而不是 C4 开始?

这个问题源自《Computer Architecture : A Quantitative Approach 5e》一书,例3.11。

最佳答案

看起来你的管道在执行内存相关操作(LW)时卡住了整个系统,除了我无法想到 ADDI 无法在 C4 中执行解码的有效原因之外。我并不是说加载操作卡住整个执行是有效的,但这似乎是“唯一”的逻辑解释。

指令 2 可以在 C3 中执行解码,但它必须等到指令 1 将其数据写回到 R1。这就是为什么第二条指令的执行被延迟到C7

顺便说一句,当您说您在“网络”上找到答案时,它来自可靠的来源吗?

关于mips - 计算机体系结构管道停滞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397993/

相关文章:

python - scrapy管道中的结构化图像下载

python-3.x - 使用 Imblearn 管道和 GridSearchCV 进行交叉验证

cpu - 超标量和乱序 (OoO) 执行之间的一般区别是什么?

clang - 为什么添加 xorps 指令使这个函数使用 cvtsi2ss 并添加 ~5x 快?

cpu-word - 计算机中字的大小是什么意思?

MARS 上的 MIPS 系统调用 : "address out of range"

assembly - 汇编语言中的 or 和 ori 有什么区别?

python - MongoDB 中是否有等效的 redis 命令管道?

assembly - 帧指针 MIPS 的使用

assembly - 为什么我们在MIPS汇编语言中使用.globl main?