在计算机系统中如何测量时间?


13

我一直不解的是:计算机如何精确地调节和显示时间?例如:如果我要编写一个执行此操作的程序:

做2 + 2,然后等待5秒

处理器如何知道“ 5秒”是什么?在计算机系统中如何测量时间?是否有专门用于此目的的特定芯片?它是如何工作的?

感谢您的答复;我对计算机科学非常感兴趣,很乐意为您提供= D的任何帮助。


2
这是有关计算机工作方式的易于理解的解释:eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htm这是计算机时钟精度的可选解释:ntp.org/ ntpfaq / NTP-s-sw-clocks-quality.htm
Synetech 2011年

Answers:


13

尽管Joel的答案是正确的,但实际上它要复杂一些。

需要考虑的第一件事(这里我仅关注PC)是计算机中有多个时钟,每个时钟都有自己的用途。

最受欢迎和最容易理解的是实时时钟。它基本上是一个内部具有简单时钟的芯片。它们通常具有与标准时钟相同类型的石英晶体,并且通常具有电池以在计算机断电时保持时间。从Syntech的链接可以看出,它们的问题在于它们不太准确。对于处理器在兆赫兹和千兆赫兹范围内的现代系统而言,32.768 kHz晶体对于任何计时都太慢了。

在这里,我们要谈到下一点:内部时钟用于精确的时间测量和倒计时。

一个简单的时钟是可编程的间隔计时器。它的作用是等待一段时间,然后将中断发送给CPU。当CPU接收到中断时,它将停止正在执行的任何操作,并倾向于执行产生中断的任务。这样,CPU不必不断检查是否已完成操作。相反,它可以专注于其他作业,并让PIT告知作业完成的时间。PIT使用1.193182 MHz时钟源,因此比简单的RTC精确得多。

下一个有趣的测量系统是时间戳计数器。其背后的想法是,我们可以使用处理器的时钟源(使用各种系统计时器)来更精确地测量时间。PIT具有1.193182 MHz的时钟,但是即使是最早的x86处理器也具有更高的时钟。因此,我们将拥有一个计时器,该计时器将在每设置一定数量的处理器周期后进行更新。当时处理器的时钟非常稳定,使用TSC是进行精确时间测量的好方法。但是,使用TSC会带来许多问题。不同的处理器具有不同的刻度速度,并以不同的速度测量时间。后来,随着技术的进步,我们得到了可以改变其频率的现代处理器。这是一个主要问题,因为CPU时钟不再恒定,因此我们无法使用它来测量时间。

这就是为什么我们现在有高精度事件计时器。HPET使用10 MHz时钟,因此比PIT更精确。另一方面,它的时钟源不依赖于CPU的时钟,即使CPU的时钟发生变化,它也可以用来测量时间。与PIT(用作倒数计时)不同,HPET可以测量自打开计算机以来的时间,并在需要采取措施时比较当前时间。

我认为还有其他时间来源可用于计算机。一些计算机连接到原子钟,并可以使用它们精确地测量时间。

较便宜的选择,更常见的是使用外部时间源来校准计算机的内部时间源。例如,GPS接收机可用于提供高精度的时间测量,因为GPS卫星具有内部原子钟。

比GPS接收机少见的另一种选择是使用特殊的无线电接收机,该接收机对来自诸如DCF77等计时无线电台的时间信息进行解码。这样的时间站具有自己的高精度时间源,并通过无线电传输其输出。由于无线电波以光速传播,因此延迟通常很小。


1
好答案。我不知道GPS卫星上有自己的原子钟。事实证明,根据本文,这24个原子中的每个原子都有4个原子钟:science.nasa.gov/science-news/science-at-nasa/2004/…–
deltaray

2
很详细的答案!感谢您抽出宝贵时间将所有内容全部写下来!
DRK3 2011年

1
特别有趣的是,时钟如何依赖于CPU时钟速度,但是鉴于当今CPU时钟速度如何变化,这成为一个问题。再次感谢。
DRK3 2011年

@ DRK3这是有关原子钟的精彩视频:wimp.com/atomicclock
Griffin

1
这个答案在某种程度上混淆了“准确性”,“精度”和“分辨率”的概念。用仪器的语言来说,“精度”是指测量的可重复性。如果未正确校准,则仪器可能会非常精确而不准确。(但是,如果它不精确,则可能不准确。)仅仅因为HPET每秒滴答一千万次-因此具有更高的分辨率-不能保证它比每毫秒左右滴答的精度更高。
Jamie Hanrahan 2015年

11

IIRC,有一个小晶体,当有电流通过时,它会以特定的频率振动。每个动作都被计数,并且其中特定数量触发一个时钟周期。


3
我相信它仍然是石英。(您甚至可以看到在主板上刻有“ 14MHz”或“ 14.3MHz”(或其他频率)的金属小圆角矩形,其中包含石英晶体。)
Synetech 2011年

感谢您的回答!我不知道要使用水晶(石英)。
DRK3'3

1
他们并不总是使用石英晶体。一些非常便宜的微控制器使用“陶瓷谐振器”来代替。即使是商用主板上的石英驱动时序也不是那么精确(即时序可能会变化)。它们通常不比典型的数字手表好。
Jamie Hanrahan 2015年

很简单的答案!石英表也会发生这种情况吗?
Nicolas Barbulesco 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.