|
|
|
|
 MIPS跳转指令嵌套的延迟槽问题 - zyj001et [ 2005-10-14 22:34 | 953 byte(s)]
 Re: MIPS跳转指令嵌套的延迟槽问题 - zmingliu [ 2005-10-16 11:09 | 314 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
在看 see mips run的 分支延迟的时候,突然想到 一个问题,如果brach指令是嵌套的呢,即branch的延迟槽中由有一个 branch 指令
比如
jal 1
jal 2
nop
1:
move $4,$3
move $3,$4
2:
XXXXXXX
在 jal 1 指令计算 转移地址的时候,jal 2指令已经进入IF阶段。 在jal 1计算好 转移地址后,程序将跳转到1处, move $4,$3 开始进入IF阶段。 当move $3,$4 开始进入 IF阶段时候,jal 2的转移地址已经计算处,那么就应该调到 2处执行。 也就是说jal 2 后的nop指令是永远没有机会执行的。
流水线如下:
因为我目前也没有 测试环境,所以也无法 写程序来测试。 哪位兄弟知道的, 来讨论一下啊。
|
|
|
----
|
|
--
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
这类体系结构的问题,如果怀疑说明自己没有看仔细。一个用的很广的系统是不会出现意想不到的后果的,而且这类问题也没有讨论的意义。我虽然没有实际做过MIPS的系统。但是无论DSP程序还是微码程序这类需要汇编编程,并且需要精确计算cycle的软件,都存在这种问题。关键在于不是所有的指令都可以放在延迟槽中。这类指令通常就包括跳转指令。
|
|
|
----
Only interested in OS RT CPU ACE DOC MM etc. ;-)
|
|
[Original]
[Print]
[Top]
|
|
|