根据此维基百科页面(https://en.wikipedia.org/wiki/System_time#Implementation) 计算机使用可编程间隔计时器(PIT),该计时器会定期(当达到某个值时)通过计时器中断例程中断 CPU,从而为系统时钟添加一个滴答。
如果我改变 PIT 所需的值以使其更低,我是否可以使计算机运行得更快(对于使用系统时间作为参考的进程)?这样,PIT 会更频繁地产生中断,并且系统时间会增加得更快。
我的目标是让计算机执行时间敏感的进程比应该的要快。例如,播放音频文件时,音频听起来会加速,或者使用time.sleep(5)
Python 中的指令时,实际时间实际上会低于 5 秒(因此这是错误的)。我不需要更高的精度,我希望计算机有一个不反映实时性的内部时钟。这可能吗?也许可以改变硬件?
答案1
根据此维基百科页面(https://en.wikipedia.org/wiki/System_time#Implementation) 计算机使用可编程间隔计时器(PIT),该计时器会定期(当达到某个值时)通过计时器中断例程中断 CPU,从而为系统时钟添加一个滴答。
呃。这个说法有点宽泛,但我们假设你的CPU 和操作系统都会这样做。好的。
如果我改变 PIT 所需的值以使其更低,是否可以使计算机运行得更快?
不。这和你的电脑速度无关。’
这样,PIT 就会更频繁地产生中断,系统时间也会增加得更快。
非常不受欢迎。这意味着需要完成的实际工作被实际上毫无意义的例行事务打断了。
我的目标是让计算机以比应有的速度更快地执行时间敏感的进程。
然后你需要编写一个定时器中断针对您的问题,而不是依赖于系统滴答!
Linux 具有高精度计时器 API,并且我确信 Windows 和其他操作系统具有类似的功能。
例如,播放音频文件时,音频听起来像是加速的,或者在python中使用time.sleep(5)之类的指令时,实际时间实际上会低于5秒。这可能吗?
无论如何,音频处理和睡眠都不需要比 systick 更好的精度,并且音频处理很可能由实际音频硬件中断驱动。
所以,你真是想错了。我认为你的电脑比你想象的要快得多。
修改默认计时器不是解决方案(除了破坏其他数千个东西之外)。如果您确实需要低延迟处理,那么您的程序将直接与计时器本身交互,或者通过操作系统与中断生成硬件交互,而无需或仅需非常薄的硬件抽象层。