• 3
  • 11月

openrisc,或者说mips吧,跳转指令会有一个延迟槽。

首先,Hanny可能先需要解释一下什么是延迟槽。我们知道,CPU指令在执行跳转指令时,一般是会清空流水线的。这样,就会造成几个指令周期的浪费。具体浪费周期数取决于流水线的级数。

而延迟槽的作用呢,则是在执行完跳转指令,并执行跳转指令的下一条指令后,才会真正地跳转至目标PC。因此,延迟槽在一定程度上,能够提高CPU的效率。

有的时候,可能不想去利用延迟槽,在GCC的编译选项中增加

-fno-delayed-branch

这样,在编译过程中的跳转,都会在延迟槽中填入nop指令。缺点就是有点浪费程序空间了。