如果处理器一次只能执行一件事情,那么我怎么能连续播放音乐却仍然能够执行其他任务?
我了解中断系统,但不是不要求CPU持续处理音频以使其听起来不那么抖动/迟钝吗?
我问的是底层实现,这个问题与多线程有关吗?1核1线程CPU如何实现这种多任务处理?
如果处理器一次只能执行一件事情,那么我怎么能连续播放音乐却仍然能够执行其他任务?
我了解中断系统,但不是不要求CPU持续处理音频以使其听起来不那么抖动/迟钝吗?
我问的是底层实现,这个问题与多线程有关吗?1核1线程CPU如何实现这种多任务处理?
Answers:
40年前,您可能有一台计算机,其中CPU直接控制扬声器。那些日子早已过去。
您可能有一台带有原始声卡的计算机。这样的声卡将具有一个用于立体声音频样本的缓冲区,该缓冲区可以被填充,输出功能将被启动,并且声卡开始从其缓冲区中的样本生成音频,而无需CPU做任何事情。CPU所需要做的就是在缓冲区用完之前用更多的音频样本填充缓冲区。如果您有一个1兆字节的缓冲区,则CD品质的250,000个立体声样本大约需要6秒钟。因此,每隔几秒钟,CPU必须再次填充这些缓冲区。
实际上,您的计算机将具有更高级的功能。原则上是相同的,但是缓冲区可以直接以mp3或aac格式的声音填充,例如,声卡会自行将这些数据解码为立体声样本。它很可能可以进行编程以产生各种不同的效果,例如音量,改善音质,独立改变音高或速度,产生环绕声等等。
CPU并没有做太多事情,只是不时地填充声音缓冲区。其余的工作由其他方式完成。当然,当我说“声卡”时,它们已经从声卡缩小到芯片,再到具有许多不同功能的大型芯片上的晶体管斑点。
对于此类卡的制造商,请参阅https://en.wikipedia.org/wiki/Wolfson_Microelectronics作为起点。