处理ret指令及预测错误的分支

处理ret指令及预测错误的分支

处理ret指令

如下图所示。当y86_64处理器遇到一条ret指令时,不会尝试对返回地址进行预测,只是会简单地暂停整个流水线的执行,直到ret指令抵达了Memory阶段,再进行转发。

处理预测错误的分支

当y86_64处理器在Execute阶段检测到预测错误的指令时(jne的Execute阶段),会暂停整个流水线的执行,并在下个周期向流水线的Decode、Execute阶段插入气泡以取消已经取出的两个指令。

0x000:       xorq %rax,%rax
0x002:       jne target     #not token
0x00b:       irmovq $1, %rax #Fall through
0x015:       halt
0x016: target:
0x016:       irmovq $2, %rdx #Target
0x020:       irmovq $3, %rbx #Target1
0x02a:       halt

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据