|
1
2
计数周期,是的,但是 什么 ?
在现代x86上,内核使用的时间源(内部和
正常的
分析不受内存限制的紧循环可能需要使用实际的核心时钟周期,因此它对当前核心的实际速度不敏感。(也不必担心将CPU提高到最大涡轮等)例如使用
有些系统没有/没有在cpu中内置一个与挂钟等效的计数器,所以要么操作系统在ram中保留一个时间,以便在计时器中断时更新,要么时间查询功能从单独的芯片读取时间。
(系统调用+硬件I/O=更高的开销,这是x86
所有这些时钟频率最终都来自mobo上的晶体振荡器。但是,正如@tony指出的那样,从周期计数推断时间的比例因子可以调整,以保持时钟与原子时同步,通常使用网络时间协议(ntp)。 |
|
|
2
1
不同的硬件可以提供不同的设施。例如,x86 PC采用了几种硬件设施来计时:在过去的十年左右,x86 CPU Time Stamp Counters 以它们的处理频率或最近的一些固定频率(即“恒定速率”或“不变”tsc)运行;可能有 High Precision Event Timer ,再往前看,有可编程中断计时器( https://en.wikipedia.org/wiki/Programmable_interval_timer )
是的,没有原子钟的电脑(现在有了 on a chip )不会像原子钟那样精确。也就是说,诸如 Network Time Protocol 允许您在多台计算机之间保持更紧密的一致性。
那要看情况。对于tsc,较新的“恒定速率”tsc实现没有变化,其他实现也有变化。
我希望大多数实现调用操作系统提供的时间服务,因为操作系统往往对硬件有最好的了解和访问。有很多因素需要考虑-例如,TSC读数是否在内核之间同步,如果PC进入某种睡眠模式会发生什么,TSC采样周围需要什么样的内存栅栏……
对于英特尔CPU,请参阅 this answer .
|
|
|
Grehgous · C++:比较当前时间和下一个工作时间 8 年前 |