SYSCALLSYSRET (以及它们仅32位的英特尔对应物 SYSENTERSYSEXIT )通常被描述为在x86处理器中进入和退出管理员模式的“通常更快”的方式,而不是调用门或软件中断,但这个声明的确切数字仍然很大程度上没有证件 . 特别是,我能找到的所有英特尔或AMD优化指南都没有提及这些指令 . 所以:

  • 最近的英特尔64微架构 SYSCALLSYSRET 需要多少个周期(估计)?这可能通过直接实验来衡量,但是有很多不同的CPU需要测试 .

根据此数字的数量级,更详细的问题可能是相关的:

  • 他们是否会产生完整的管道摊位或任何其他类型的摊位?

  • 如果有的话,它们如何与分支预测(例如返回堆栈缓冲区)和获取逻辑交互?

  • 延迟,数据依赖,序列化怎么样?

  • &tc .

假设用户空间一侧有64位代码,没有额外的地址空间切换(写入CR3),甚至匹配 SYSCALLSYSRET 对,如果重要的话 .