我们在代码中使用计时器,我只是对它的实际实现感到好奇,是否有计时器
CPU逻辑电路或CPU外部,例如,外部时钟或类似的东西。
如果没有,那么到底哪里是计时器?请帮助我,不需要任何详细的解释
如何制作硬件定时器,只需关注我们所拥有的硬件板上的定时器。
提前感谢。
答案 0 :(得分:7)
计算机硬件中有许多不同类型的时钟和计时器。所有基本计算机都有一个像数字手表一样的水晶,用于同步CPU并形成以Hz为单位的“时钟速度”。
大多数CPU都内置了许多定时器,它们使用时钟速度来计算两点之间的相对时间。这允许系统程序员设置一个定时器,该定时器将在晶体的一定数量的时钟周期内“熄灭”。定时器通过引发中断线来向CPU通知已经过了定义的时间,程序员将一段代码附加到该中断行。
操作系统和编程语言通常会抽象中断计时器,因此您无需直接使用它们。
大多数高级计算机(如PC)都有一个实时时钟,可以存储实际的日历时间和日期,但不常用于计时操作。
回答你的问题:
将计时器放在我们的硬件板上
它非常依赖于您的硬件以及您感兴趣的计时器。您将无法亲眼看到大多数计时器或时钟,但晶体通常很容易找到并且看起来像一个小金属胶囊 - 请参阅{{ 3}}
答案 1 :(得分:4)
x86机器上有很多计时器。最着名的是TSC(时间戳计数器)。那个在CPU里面。然后有PIT(可编程间隔定时器)作为主板上的芯片,如Intel 8253和8254.我不确定它们是否仍在使用。另一个定时器是HPET(高精度事件定时器)。它不在CPU内部,是三者中最新的。
当然还有电池供电的实时时钟。不确定这是否算作计时器。可能不是。
使用哪个计时器由操作系统决定。在某些系统上使用TSC,在其他HPET上使用。 TSC通常是首选,因为它位于CPU内部,因此访问速度非常快。如果没有直接与硬件对话的汇编指令,您无法直接从C代码访问特定的计时器。