在ARM体系结构中,如果发生ARM到Thumb模式切换,是否会发生管道停顿? 如果是这样,会影响多少个周期? Thumb to ARM模式切换是否相同? 这种行为会因不同的ARM处理器而异吗?
答案 0 :(得分:0)
假设您以合理的方式切换(使用BLX
/ BX LR
),any modern core will predict that(假设分支预测器当然没有关闭)。直接写入PC
变量有点多变 - 一般来说,大核心可能会预测它,但很少核心会赢 - 但通常最好避免使用。
否则,互通分支是AFAIK与常规分支没有什么不同,所以如果没有预测到惩罚只是管道冲洗。切换指令集的唯一方法是通过异常返回,这是整个内核的同步操作(即不是担心性能的地方)。
答案 1 :(得分:0)
不,完全没有。
成本就像任何其他分支指令一样。如果预测器命中,它是免费的,如果没有,它通常需要花费13个周期。
由于转换,没有其他隐藏的打嗝。
因此,您可以使用互通模式,而无需担心与模式切换相关的潜在处罚。