SYSCALL
和 SYSRET
(以及它们仅32位的英特尔对应物 SYSENTER
和 SYSEXIT
)通常被描述为在x86处理器中进入和退出管理员模式的“通常更快”的方式,而不是调用门或软件中断,但这个声明的确切数字仍然很大程度上没有证件 . 特别是,我能找到的所有英特尔或AMD优化指南都没有提及这些指令 . 所以:
- 最近的英特尔64微架构
SYSCALL
和SYSRET
需要多少个周期(估计)?这可能通过直接实验来衡量,但是有很多不同的CPU需要测试 .
根据此数字的数量级,更详细的问题可能是相关的:
-
他们是否会产生完整的管道摊位或任何其他类型的摊位?
-
如果有的话,它们如何与分支预测(例如返回堆栈缓冲区)和获取逻辑交互?
-
延迟,数据依赖,序列化怎么样?
-
&tc .
假设用户空间一侧有64位代码,没有额外的地址空间切换(写入CR3),甚至匹配 SYSCALL
和 SYSRET
对,如果重要的话 .