gpt4 book ai didi

assembly - 有什么方法可以触发 RDTSC 的传统模式吗?

转载 作者:行者123 更新时间:2023-12-02 19:25:12 26 4
gpt4 key购买 nike

我重写了整个问题,人们显然不理解它。

RDTSC 用于计算 CPU 周期,它随 CPU 节流而变化。

目前,RDTSC 不随 CPU 限制而变化。

一些旧应用程序预计 RDTSC 会随着 CPU 限制而变化。

我如何让 RDTSC 满足他们的期望?

我不想分析代码,我不想重写大量代码,我不想强​​迫用户弄乱 BIOS 或内核权限,我只想让旧版应用程序像以前一样工作他们应该。

最佳答案

简单地说,您无法通过轻按开关来完成

英特尔开发人员手册 3B第 17 章,明确读取

The invariant TSC will run at a constant rate in all ACPI P-, C-. and T-states. This is the architectural behavior moving forward.

这是告诉您无法切换回之前的行为的另一种方式。

<小时/>

但是如果你真的喜欢,你可以尝试一些东西。

rdtscIA32_TIME_STAMP_COUNTER 获取其值,该值是可写的。
因此,您可以“伪造”rdtsc 的读取,而无需更改任何程序,但您需要一个驱动程序。
更改IA32_TIME_STAMP_COUNTER来调整内部时钟计数可能并不那么容易。

我不记得自重置以来是否有一个性能事件对内部时钟进行计数,如果有,那么理论上您只需读取该值并写入IA32_TIME_STAMP_COUNTER
较新的 CPU 还支持 IA32_TSC_ADJUST,可用于以相对方式调整 TSC:无论您从 IA32_TSC_ADJUST 添加/减去什么,都会添加/减去从IA32_TIME_STAMP_COUNTER开始。所以你可以减慢或加快计数器的速度。

无论您需要哪种方式:

  • 创建一个驱动程序以交付给您的用户。可能没有安装它的权限。
  • 要了解 CPU 的确切限制,与 gudok 答案的投票计数相反,性能计数器寄存器是唯一的方法。除非您想 Hook 操作系统电源管理器功能/事件并进行有根据的猜测。
  • 将该限制映射到 TSC 值。
  • 选择更新 TSC 的频率(非常重要)。

关于assembly - 有什么方法可以触发 RDTSC 的传统模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com