跳转至正文

RDTSCP

架构参考Feex

RDTSCP 读取 x86 时间戳计数器和具有唯一定义的有序属性的辅助处理器标识符值。它不是完全串行化的指令,也不是自动基准测试工具。

您需要了解的内容

RDTSCP 读取 x86 时间戳计数器和具有唯一定义的有序属性的辅助处理器标识符值。它不是完全串行化的指令,也不是自动基准测试工具。

工作原理

RDTSCP 在 EDX:EAX 中返回计数器,在 ECX 中返回 IA32_TSC_AUX 值。其排序规则约束了某些先前的操作,但后续指令可能会在读取完成之前开始,且先前的存储具有额外的可见性考量。正确的屏障序列取决于测量旨在约束的内容。

适用场景

当操作系统进行适当配置时,底层计时代码可以使用辅助值来帮助检测处理器更改。稳健的基准测试仍然需要控制编译、工作负载预热、中断、调度、计数器校准以及正在排序的操作。

如何检查支持与启用状态

CPUID.80000001H:EDX 第 27 位枚举 RDTSCP。在实际操作系统或虚拟机监控程序中验证计数器策略,并使用具有所需屏障的文档化计时方法。对于应用程序流逝时间,首选操作系统的单调时钟。

根据所要测量的目标选择时钟:流逝时间、线程 CPU 时间和时钟周期是不同的测量指标。操作系统的时钟接口融入了平台策略,而原始指令采样可能会绕过这些策略。

该特性未确立的内容

RDTSCP 支持并不确立恒定或同步的 TSC 行为。辅助值的解释由操作系统定义。在不了解排序的情况下对两个样本求差可能会测量与预期不同的时间间隔。

实践中的兼容性与性能

基准测试还需要正确的编译器边界、预热、代表性数据以及对迁移和调度的理解。重复执行顺序不当的测量并不能提高其准确性。报告任何结果时,均应同时说明测试环境与不确定性。

实用验证核对清单

  1. 记录所涉及的具体处理器或平台型号,以及应用程序、操作系统和运行时的版本。保留实际错误或要求的原始措辞。
  2. 查阅该具体型号的制造商参考资料,然后检查程序运行环境中生效的功能与启用状态。
  3. 逐项比对所选二进制文件或后端的每项要求。仅凭名称相似的特性、别名或宽泛的技术标签是不够的。
  4. 确认应用程序选择了预期的实现。在不满足要求时,使用其文档中记录的诊断工具和受支持的回退方案。
  5. 每次只进行一项受支持的更改并重复相同的负载测试。保留原始配置和恢复路径以便随时使用。

若特性已列出但软件无法使用

首先排查出现故障的具体组件。硬件数据库描述的是记录在案的功能;操作系统或虚拟机监控程序可能会呈现不同的生效环境。非法指令错误同样需要调查实际发生故障的指令和二进制构建版本,因为数据损坏或不相关的未受支持指令也可能产生类似症状。

安装适用于该特定平台的受支持应用程序、驱动程序或运行时版本,并在需要时使用厂商文档记录的基线或回退构建版本。软件更新无法凭空创造处理器缺失的指令。固件和安全策略的更改应遵循系统制造商的规程和恢复计划,而非通用的优化方案。

本说明的来源与适用范围

Intel 64 和 IA-32 架构软件开发人员手册

这些参考资料确立了架构行为和软件要求。它们并不独立验证关联硬件型号页面上的每个特性值。如需了解型号支持情况,请使用该页面的制造商证据并检查实际生效的系统配置。本文不提供基准测试、认证或独立审查日期。

来源与验证

编辑归属:Feex。未记录独立审核日期。 我们的研究方式.

这篇文章有用吗?

回答"是"或"否"即可。如果您愿意,可以选择一个原因,或添加一段简短附言。

这篇文章有用吗?