首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于基准测量和时间戳计数器频率的rdtsc精度

用于基准测量和时间戳计数器频率的rdtsc精度
EN

Stack Overflow用户
提问于 2015-09-14 17:12:06
回答 1查看 1.6K关注 0票数 5

作为基准测试任务的一部分,我正在研究可用于度量所用时间的不同机制。我已经完成了clock_gettime的使用,但我也做了足够的研究和RDTSC指令的测试。关于同样的问题,我有几个问题(根据我在几个在线线程上看到的):

  • 在较新的处理器(>奔腾4)上,TSC在系统上CPU的最大频率上滴答作响。这是正确的吗?在这种情况下,使用滴答数和频率来确定时间有效吗?
  • 如果上述情况属实,则意味着TSC不受由于省电和其他功能而引起的CPU频率变化的影响。知道了这一点,这是否意味着使用RDTSC获得的全部滴答不是抽样代码所使用的实际滴答--因为代码将以CPU的频率而不是TSC的频率运行?此外,这是否意味着使用TSC时钟和CPU频率所获得的时间不是代码块所使用的实际时间?
  • 我发现了许多关于跨核同步TSC值的不同声明(参见这条线)。我不知道什么是正确的,我猜它也取决于处理器模型。但是,是否可以假设它是在新CPU上的核心之间同步的呢?(这不需要使用sched_set_affinity)?

请注意,由于与其相关的各种问题(可移植性、可靠性等),我没有使用RDTSC。这些问题只是为了提高我对TSC的工作原理和一般基准的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 19:06:11

根据英特尔的说法,不变的TSC意味着,

不变的TSC将在所有的ACPI P-,C-中以恒定的速率运行。和T状态。

但这个比率是多少?井,

该速率可以由处理器的最大核心时钟与总线时钟比率来设置,也可以通过启动处理器的最大解析频率来设置。最大分辨频率可能与处理器的最大限定频率不同,有关更多细节,请参见第18.14.5节。在某些处理器上,TSC的频率可能与品牌字符串中的频率不同。

在我看来,他们似乎希望它是品牌字符串的频率,但不知怎么的,它并不总是正确的。那频率是多少?

TSC、IA32_MPERF和IA32_FIXED_CTR2在平台的最大分辨率频率相同的情况下工作,等于可伸缩总线频率和最大解析总线比的乘积。 对于基于Intel核心微体系结构的处理器,可伸缩的总线频率是在位字段MSR_FSB_FREQ2:0 (0 0CDH)中编码的,参见附录B,“特定模型寄存器(MSRs)”。可以从以下位字段读取最大解析总线比率: 如果禁用XE操作,则可以在MSR_PLATFORM_ID12:8中读取最大解析总线比率,它对应于最大限定频率。 如果启用XE操作,则在MSR_PERF_STAT44:40中给出最大解析总线比率,它对应于BIOS配置的最大XE操作频率。

不过,这可能没有多大帮助。TL;DR,以编程的方式找到TSC的速率太费劲了。当然,您可以很容易地在您自己的系统上找到它,只需根据一个定时循环得到一个不准确的猜测,并取“最近的数字,这是有意义的”。不管怎么说,这可能是品牌字符串中的数字。它已经在我测试过的所有系统上,但我还没有测试那么多。如果不是,那么它将是一些明显不同的比率,所以你一定会知道。

此外,这是否意味着使用TSC时钟和CPU频率所获得的时间不是代码块所使用的实际时间?

是的,然而并不是所有的希望都失去了,使用TSC滴答的时间和TSC的速率(如果你知道的话)将给出实际的时间。差不多了?在这里,通常有很多关于不可靠的FUD被喷射出来。是的,RDTSC没有序列化(但您可以添加序列化指令)。RDTSCP正在序列化,但在某些方面还不够(它不能太早执行,但可能执行得太晚)。但这并不是说你不能使用它们,你可以接受一个小错误,或者阅读我下面链接的那篇论文。

但是,是否可以假设它是在新CPU上的核心之间同步的呢?

是的,不,也许-它将是同步的,除非TSC被写到。谁知道,也许有人会这么做。失去你的控制。它也不会在不同的套接字之间同步。

最后,在基准测试的背景下,我并不真正购买关于RDTSC(P)的FUD。您可以根据需要序列化它,TSC是不变的,而且您知道速率,因为它是您的系统。也没有其他的选择,它基本上是高分辨率时间测量的来源,最终其他的一切最终都会被使用。即使没有特殊的预防措施(但需要对数据进行过滤),大多数基准测试的准确性和精度都很好,如果您需要更多的代码然后阅读如何在Intel IA-32和IA-64指令集体系结构上测试代码执行时间,那么他们就会编写一个内核模块,这样他们就可以消除其他两个基准测试错误的来源,这些错误都会受到很多FUD、抢占和中断的影响。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32570249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档