设置
  • 日夜间
    随系统
    浅色
    深色
  • 主题色

告别老旧硬件:Linux 内核将 TSC 设为 x86 处理器硬性要求

2026/8/17 6:46:00 来源:IT之家 作者:远洋 责编:远洋

IT之家 8 月 17 日消息,Linux 内核终于将时间戳计数器(TSC)设为 x86 处理器的硬性要求,而微软早在十多年前就已经开始将其作为兼容 Windows 系统中高精度计时的首选依据。

Linux 内核近期提交的一项修改,移除了剩余的配置逻辑,使 x86 内核无法在不支持 TSC 的情况下进行构建。这项提交名为“x86/cpu: Make CONFIG_X86_TSC unconditional”,意味着如今 TSC 支持已经成为无条件要求,因为目前仍受支持的 x86 处理器预计都具备这一功能。看起来这或许只是一次规模不大的内核代码清理,但它实际上标志着 Linux 对极其老旧 x86 硬件支持的一个时代正式结束。

TSC 是一种特殊的 64 位寄存器,可以充当处理器计数器,自英特尔奔腾(Pentium)时代便已经存在。它能够以非常高的精度测量经过的时间,而且由于本身就是 CPU 寄存器,因此读取速度远高于 HPET(高精度事件计时器)或 ACPI PM(电源管理)计时器等平台级计时器。

性能提升一直是软件和硬件发展的重要指标,因此 TSC 获得优先采用也就不难理解了。如今,所有现代英特尔和 AMD 处理器都配备了 64 位 TSC,并可以通过 RDTSC、RDTSCP 等指令读取。

不过,Linux 过去一直需要保留针对某些处理器的代码,因为这些处理器要么没有 TSC,要么无法可靠地使用 TSC。这主要是因为 Linux 内核长期以来一直支持最早可以追溯到 i486 时代的硬件。但随着这些处理器的支持逐步被移除,相关兼容代码也越来越没有存在的必要。

IT之家注意到,Linux 7.0 已经取消了对英特尔 486 处理器的支持,而随后的开发周期又移除了其他一些阻碍 TSC 被视为通用功能的处理器。随着这些 CPU 退出支持范围,Linux 内核如今终于可以安全地假定所有 x86 处理器都具备 TSC。

因此,这项新修改并不是让 Linux 突然依赖一项现代 PC 不具备的功能,而是终于删除了过去几十年来一直用于兼容老旧硬件的代码。

有趣的是,微软更早就达到了类似的阶段,不过 Windows 的情况与 Linux 有很大不同。

Windows 2000 和 Windows XP 引入了 QueryPerformanceCounter(QPC),作为一种高精度性能计数器。较老的系统可能会遇到 TSC 频率不恒定或不同处理器之间无法同步的问题,因此当处理器的 TSC 不适合使用时,Windows 可以回退到 HPET 或 ACPI PM 计时器等平台级计时器。

在能够同步各处理器计数器的系统上,Windows 7 和 Windows Server 2008 R2 已经使用恒定速率的 TSC 作为 QPC 的基础。微软在 Windows 8、Windows 8.1 以及对应的服务器版本中进一步推进了这一做法,这些系统以 TSC 作为性能计数器的基础,同时针对大型系统引入了更完善的同步机制。

尽管如此,微软至今仍然记录了对恒定 TSC 和同步 TSC 的检查机制,并表示当 TSC 不适合使用时,Windows 可以选择其他硬件计时器。微软还提醒开发者不要直接读取 TSC,而应该使用 QPC,因为后者可以通过抽象层处理不同硬件以及虚拟化环境之间的差异。

微软之所以倾向于在 TSC 可用时使用它,是有充分理由的。微软表示,读取基于 TSC 的 QPC 可能只需要几十到几百个 CPU 周期,而如果回退到主板级计时器,耗时可能增加到约 0.8 至 1.0 微秒,这一差异相当明显。此外,基于 TSC 的 QPC 还可以避免进入内核态,而 Windows 使用 HPET 或 PM 计时器等替代方案时则无法做到这一点。

因此,多年来 Linux 一直需要检测、校准 TSC,并针对各种可靠性问题进行处理。如今,这套历史悠久的兼容代码终于开始被移除。用户可以在 Linux 内核的 Git 代码仓库中查看这项提交。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家包含外链的文章均包含本声明。

相关文章

关键词:LinuxTSCx86 处理器linux

软媒旗下网站: IT之家 最会买 - 返利返现优惠券 iPhone之家 Win7之家 Win10之家 Win11之家

软媒旗下软件: 软媒手机APP应用 魔方 最会买 要知