首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS指令时序和修复风险

MIPS指令时序和修复风险
EN

Stack Overflow用户
提问于 2016-07-11 01:40:02
回答 1查看 53关注 0票数 0
代码语言:javascript
复制
               |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 |
ADD R1,R2,R3   | IF | ID | EX | MA | WB |    |    |    |    |    |    |
SUB R4,R1,R3   |    | IF | ID | EX | MA | WB |    |    |    |    |    |
AND R6,R1,R7   |    |    | IF | ID | EX | MA | WB |    |    |    |    |
OR  R8,R1,R9   |    |    |    | IF | ID | EX | MA | WB |    |    |    |
XOR R10,R1,R11 |    |    |    |    | IF | ID | EX | MA | WB |    |    |

所以我理解,从这个角度看,所有后续指令都依赖于正在写入的R1值。因此,为了解决这个问题,我需要插入陈列。

代码语言:javascript
复制
AFTER (Using Stalls)
               |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 |
ADD R1,R2,R3   | IF | ID | EX | MA | WB |    |    |    |    |    |    |
SUB R4,R1,R3   |    | IF | ID | *  | *  | EX | MA | WB |    |    |    |   
AND R6,R1,R7   |    |    | IF | ID | EX | MA | WB |    |    |    |    |
OR  R8,R1,R9   |    |    |    | IF | ID | EX | MA | WB |    |    |    |  
XOR R10,R1,R11 |    |    |    |    | IF | ID | EX | MA | WB |    |    |

这是否有效,或者在内存访问发生后,我是否需要插入另一个停顿?

如果我使用转发,时间会是什么样子的?我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2016-07-11 09:51:05

对于stalls,时间安排如下所示:

代码语言:javascript
复制
               |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 |
ADD R1,R2,R3   | IF | ID | EX | MA | WB |    |    |    |    |    |    |
SUB R4,R1,R3   |    | IF | ID | *  | *  | EX | MA | WB |    |    |    |
AND R6,R1,R7   |    |    | IF | ID | *  | EX | MA | WB |    |    |    |
OR  R8,R1,R9   |    |    |    | IF | ID | EX | MA | WB |    |    |    |
XOR R10,R1,R11 |    |    |    |    | IF | ID | EX | MA | WB |    |    |

这是因为只有初始ADD写入R1。并且,在指令的目的寄存器和后续指令的源寄存器之间不再有重叠。

通过转发,ADD (即R1)的输出将在T3EX阶段之后可用(即它可用于T4开始处的任何后续指令)

因此,由于转发,即使是最难压缩的指令( SUB)也会在T4中具有可用于其EX阶段的值。

因此,对于转发,时间与初始图相同(即转发修复了危险)。

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

https://stackoverflow.com/questions/38294721

复制
相关文章

相似问题

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