我知道在10年前,典型时钟精度等于一个系统蜱,这是在10-30ms的范围内。在过去几年里,精度多个步骤增加。如今,有很多方法可以测量实际纳秒的时间间隔。然而,通常的框架仍然返回时间仅为15毫秒左右精度。

我的问题是,哪些步骤没有提高精度,怎么可能在纳秒来衡量,和为什么我们仍然经常获得低于微秒精度(例如在.NET)

(声明:。这令我奇怪的是,这不是问过,所以我想我错过了这个问题,当我搜索,请关闭并指向我在这种情况下的问题,谢谢,我相信这属于对SO和未在任何其他SOFU站点。我明白精度和准确度之间的差异。)

有帮助吗?

解决方案

这真的是PC史上的一个特征。 原来IBM-PC使用了一种叫做实时时钟芯片,是电池备份(你还记得需要改变这些电池?)这些当机器被关闭并保持的时间进行操作。的这些频率为32.768KHz的(2 ^ 15个循环/秒),这使得它易于计算时间16位系统。 这个实时时钟,然后写入到CMOS其中通过中断系统是可利用的在老的操作系统。

一个较新的标准是从出微软和英特尔称为高精度事件计时器指定10MHz的时钟速度 http://www.intel.com/hardwaredesign/hpetspec_1.pdf 即使新的PC架构,借此,并把它的北桥控制器和HPET可以囤在100MHz或更大。 在10MHz我们应该能够得到的100毫微秒的分辨率,并且在100MHZ我们应该能够得到10纳米的第二分辨率。

在下列操作系统已知不能够使用HPET:视窗XP,Windows Server 2003和更早的Windows版本,老版本的Linux版本

以下操作系统已知能够使用HPET:Mac OS X中的Windows Vista中,Windows 2008中,Windows 7中,基于x86的版本,使用2.6内核和Linux操作系统FreeBSD的

通过Linux内核,需要新的“RTC-CMOS”硬件时钟设备驱动程序,而不是原来的“RTC”驱动程序

所有这一切说我们如何访问这些额外的分辨率是多少? 我可以截断并从以前的计算器的论文中,而不是 - 只要搜索HPET,你会发现关于如何获得更精细的定时器工作的答案

其他提示

我从字面上看MSDN上的一篇博客文章今天这个,的读它这里,它涵盖的主题非常好。它有C#的日期时间的强调但它是普遍适用的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top