オーディオの再生が他のタスクを停止しないのはなぜですか?


10

プロセッサが一度に実行できるのは1つだけの場合、音楽を継続的に再生しながら、他のタスクを実行できるのはなぜですか?

私は割り込みシステムを理解していますが、CPUが連続的に音声を処理して、ジッター/ラグのないサウンドにならないようにする必要はありませんか?

基礎となる実装について尋ねていますが、この質問はマルチスレッドに関連していますか?1コア、1スレッドのCPUはどのようにしてこのマルチタスクを実現できますか?


「ジッター」は理解できますが、「だらしない」とはどのような音ですか?(PS、私のiPod nanoからのFMチューナー出力は、同じステーションにチューニングされたアナログFMラジオの出力よりも約1/4秒遅れますが、iPodだけを聴いている場合は遅れを聞くことができません。)
ソロモンスロー

@jameslargeビデオゲームをプレイしている場合、音の四分の一秒の遅れのようなものが非常に顕著になります。同様にビデオ会議。
Derek Elkinsが

3
アリエルの答えが指摘するように、このタスクを処理するためにかなり古いCPUでも十分な処理能力があります。しかし、私はこのタスクがオーディオコプロセッサによって主に処理され続けてきたと確信しています。次に、CPUの仕事は、特にすべてのデータを事前に利用できる音楽の場合、CPUによる「連続」処理を必要としないオーディオコプロセッサバッファを単純に埋めることです。
Derek Elkinsが

私は、DMAC、サウンドカード処理ユニット、およびバッファを選択します。

回答:


9

CPUは固定クロックサイクルで動作するので、実際には連続的なものはありません。離散化が十分に敏感であるため、そうは思われません。

CPUクロックレートがます。CPUがオーディオの処理にクロックサイクルの1つのみを使用する場合(および関連しないタスクに残りのクロックサイクルを使用する場合)、実行されるすべての「オーディオ処理タスク」間に遅延があります。CPUによって(簡単にするために、CPUは1クロックサイクルだけを使用してこの処理を実行すると想定しています)。T T 10 - 91GHz=109Hztt109s

遅延を許容するとしましょう(人間は20Hzから20Khzの範囲の周波数を聞くため、人間の聴覚はそのような遅延に影響されません)、を必要とする必要があります、したがって、CPU は遅延を維持しながら、同時にタスクを処理できます。t < 10 4 10 4 10 5105st<104104105s


8

40年前、CPUがスピーカーを直接制御するコンピューターを使用していた可能性があります。それらの時代ははるか昔に終わりました。

あなたは原始的なサウンドカードを備えたコンピュータを持っているかもしれません。そのようなサウンドカードには、ステレオオーディオサンプル用のバッファーがあり、そのバッファーを埋めることができ、出力機能が開始され、サウンドカードは、CPUが何もしなくても、バッファー内のサンプルからオーディオの生成を開始します。CPUが実行する必要があるのは、バッファがなくなる前に、バッファにオーディオサンプルを追加することだけです。1メガバイトのバッファーがある場合、CD品質の250,000ステレオサンプル、つまり約6秒です。したがって、数秒ごとに、CPUはこれらのバッファーを再びいっぱいにする必要があります。

実際には、お使いのコンピュータにはもっと高度な機能があります。原則として同じですが、バッファは、たとえばmp3またはaac形式のサウンドで直接埋めることができます。サウンドカードは、このデータをデコードして、それ自体をステレオサンプルにします。おそらく、音量、音質の改善、ピッチや速度の個別変更、サラウンドサウンドの生成など、さまざまなエフェクトを生成するようにプログラムできます。

CPUはあまり機能せず、サウンドバッファを時々埋めるだけです。残りは別の何かによって行われます。もちろん、「サウンドカード」と言うと、サウンドカードからチップ、そしてさまざまな機能を備えた大規模なチップ上のトランジスタの小さな斑点へと縮小しています。

そのようなカードのメーカーの1つとして、出発点としてhttps://en.wikipedia.org/wiki/Wolfson_Microelectronicsを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.