Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
chrono库的实现 在C++中,我们可以使用计时> 库来处理时间。我认为它与CPU时钟是异步的。我的意思是,chrono::seconds(1)是实1秒,与在此期间执行的指令数量无关。我说得对吗_C++_Time_Cpu Architecture - Fatal编程技术网

chrono库的实现 在C++中,我们可以使用计时> 库来处理时间。我认为它与CPU时钟是异步的。我的意思是,chrono::seconds(1)是实1秒,与在此期间执行的指令数量无关。我说得对吗

chrono库的实现 在C++中,我们可以使用计时> 库来处理时间。我认为它与CPU时钟是异步的。我的意思是,chrono::seconds(1)是实1秒,与在此期间执行的指令数量无关。我说得对吗,c++,time,cpu-architecture,C++,Time,Cpu Architecture,如果我是对的,它在低水平上是如何工作的?在一般的现代计算机体系结构中,是否有计时器硬件与CPU时钟异步工作 你典型的现代电脑有两种报时方式,这两种方式相互帮助 通常有一个寄存器,它只是一个特殊的寄存器,随着每个时钟周期递增。计算机也知道自己的循环时间,因此循环计数可以转换为物理持续时间,如纳秒。当操作系统提供一个“实时时钟”(在C++11中称为std::chrono::staid_clock)时,这就是最终使用的方法 此外,现代计算机能够理解并参与到一个系统中。这基本上是一种有组织的方式,让一台

如果我是对的,它在低水平上是如何工作的?在一般的现代计算机体系结构中,是否有计时器硬件与CPU时钟异步工作

你典型的现代电脑有两种报时方式,这两种方式相互帮助

  • 通常有一个寄存器,它只是一个特殊的寄存器,随着每个时钟周期递增。计算机也知道自己的循环时间,因此循环计数可以转换为物理持续时间,如纳秒。当操作系统提供一个“实时时钟”(在C++11中称为std::chrono::staid_clock)时,这就是最终使用的方法

  • 此外,现代计算机能够理解并参与到一个系统中。这基本上是一种有组织的方式,让一台计算机询问另一台计算机当前UTC时间是多少。计算机可以使用它来找出当前时间,然后在以后使用其本地时间将其转换为UTC时间。一台计算机可以一天使用几次时间来保持其本地时间的准确性。在C++11及更高版本中,这是通过
    std::chrono::system\u clock
    访问的

  • 几十年前,个人电脑没有参与,而是询问启动电脑的人当前的时间和日期,然后使用其板载记录本地时间

    更新


    请阅读下面的评论,了解我忽略的细节。

    您的问题不清楚。如果你想知道一段特定的代码是如何工作的,请发布它。据我所知,OP是在询问操作系统和底层硬件如何实现系统调用或其他与时间相关的调用机制,如
    std::chrono
    。x86的TSC作为实时时钟工作,因为它计算参考周期,而不是实际控制指令在管道中移动的核心时钟周期。Turbo/powersaving会改变核心时钟,当CPU处于睡眠状态时,它会停止,但参考时钟不会(在具有
    不间断\u tsc
    功能的CPU上,这是几年来的一切)。几十年前,CPU没有内置tsc,CPU会写入/读取定时器芯片的I/O寄存器以查找实时数据。使用
    rdtsc
    作为低开销的时间源非常好,甚至可以避免在
    gettimeofday
    中切换到内核,更不用说与外部硬件对话了。(
    rdtsc
    是在CPU节能真正成为一件事之前引入的,因此它作为性能计数器和实时时钟工作。在一些早期的节能芯片中,它仍然计算实际周期,而不是作为时间源工作。)可能值得注意的是,其他非TSC时间源(如各种硬件时钟)仍然经常被用作各种时间例程的基础:一种典型的方法是将此类时钟用于“粗略”时间,然后根据TSC的读取添加与粗略时间的偏移量。例如,可以在每个内核“滴答声”中写入粗略时间,然后使用TSC来确定从那时起经过了多少时间。除此之外,这可以使时间与“更精确”的时间大致同步,但读取实时时钟的速度较慢。请注意,“更准确”在这里通常意味着实际上更准确(因为TSC的实施依赖于与总准确度相关的细节),但也更准确,因为实时时钟得到各种调整,如NTP加速/减速(这适用于操作系统公开的一些时钟,但不是所有的时钟——例如,原始时钟忽略了它)。