小智 5
查看以下英特尔手册的摘录。根据第 16.12 节,我认为下面的“较新的处理器”是指任何比奔腾 4 新的处理器。如果支持,您可以使用 rdtscp 指令同时原子地确定 tsc 值和核心 ID。不过我没试过。祝你好运。
英特尔 64 位和 IA-32 架构软件开发人员手册
第 3 卷(3A 和 3B):系统编程指南:
第 16.12.1 章不变的 TSC
较新处理器中的时间戳计数器可能支持增强功能,称为不变 TSC。处理器对不变 TSC 的支持由 CPUID.80000007H:EDX[8] 指示。
不变 TSC 将在所有 ACPI P-、C- 中以恒定速率运行。和 T 状态。这是向前发展的架构行为。在具有不变 TSC 支持的处理器上,操作系统可以将 TSC 用于挂钟定时器服务(而不是 ACPI 或 HPET 定时器)。TSC 读取效率更高,并且不会产生与环转换或访问平台资源相关的开销。
英特尔还有一个关于代码执行基准测试的指南,讨论了 cpu 与 rdtsc 的关联 - http://download.intel.com/embedded/software/IA/324264.pdf