Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 ARM 架构中,如果发生 ARM 到 Thumb 模式的切换,会不会出现流水线停顿?如果是这样,有多少个周期受到影响?Thumb 到 ARM 模式切换也一样吗?这种行为是否因不同的 ARM 处理器而异?
一点都不。
成本就像任何其他分支指令一样。如果预测器命中,它是免费的,如果没有,它通常需要 13 个周期。
由于切换,没有其他隐藏的小问题。
因此,您可以使用互通模式,而不必担心与模式切换相关的潜在损失。
假设您以明智的方式切换(使用BLX/ BX LR),任何 现代 核心 都会 预测(当然 ,假设分支预测器没有关闭)。直接写入的PC变量要多一些——通常,大内核可能会预测它,但小内核不会——但通常最好避免。
BLX
BX LR
PC
否则,互通分支是 AFAIK,与常规分支没有什么不同,所以如果没有预测到,惩罚只是管道刷新。切换指令集的唯一其他方法是通过异常返回,这是整个内核的同步操作(即不是担心性能的地方)。