Lobsters | 📄 原文链接 | 2026-11-02 收录

硬件性能计数器并不可靠:x86 上连退休指令数都会飘

来源:web.eece.maine.edu — 2021-03-18

📋 概述

Vincent Weaver 等人测量了 11 种 x86-64 CPU 的硬件性能计数器,发现本应精确、确定的事件(例如退休指令数)在严格受控的环境里依然逐次抖动,甚至超计数。他们定位到根因:iret 中断返回指令被算进了用户态指令数,尽管它运行在内核态,于是计数随中断时机变化而失去确定性。测过的事件中只有不把 iret 计入的那些(条件分支、退休存储等)足够确定,可以直接用于确定性重放与确定性线程库。ARM、IA64、POWER、SPARC 平台的确定性明显更好;x86-64 上的多数变通办法行不通,彻底解决需要重新设计 PMU。

🔑 核心要点

💡 金句

本应精确的事件,在 x86-64 机器上会随运行次数变化,并且超计数。
← 返回 Lobsters 首页