プロセッサが一度に実行できるのは1つだけの場合、音楽を継続的に再生しながら、他のタスクを実行できるのはなぜですか?
私は割り込みシステムを理解していますが、CPUが連続的に音声を処理して、ジッター/ラグのないサウンドにならないようにする必要はありませんか?
基礎となる実装について尋ねていますが、この質問はマルチスレッドに関連していますか?1コア、1スレッドのCPUはどのようにしてこのマルチタスクを実現できますか?
プロセッサが一度に実行できるのは1つだけの場合、音楽を継続的に再生しながら、他のタスクを実行できるのはなぜですか?
私は割り込みシステムを理解していますが、CPUが連続的に音声を処理して、ジッター/ラグのないサウンドにならないようにする必要はありませんか?
基礎となる実装について尋ねていますが、この質問はマルチスレッドに関連していますか?1コア、1スレッドのCPUはどのようにしてこのマルチタスクを実現できますか?
回答:
CPUは固定クロックサイクルで動作するので、実際には連続的なものはありません。離散化が十分に敏感であるため、そうは思われません。
CPUクロックレートがます。CPUがオーディオの処理にクロックサイクルの1つのみを使用する場合(および関連しないタスクに残りのクロックサイクルを使用する場合)、実行されるすべての「オーディオ処理タスク」間に遅延があります。CPUによって(簡単にするために、CPUは1クロックサイクルだけを使用してこの処理を実行すると想定しています)。T ≈ T ⋅ 10 - 9秒
遅延を許容するとしましょう(人間は20Hzから20Khzの範囲の周波数を聞くため、人間の聴覚はそのような遅延に影響されません)、を必要とする必要があります、したがって、CPU は遅延を維持しながら、同時にタスクを処理できます。t < 10 4 10 4 10 − 5秒
40年前、CPUがスピーカーを直接制御するコンピューターを使用していた可能性があります。それらの時代ははるか昔に終わりました。
あなたは原始的なサウンドカードを備えたコンピュータを持っているかもしれません。そのようなサウンドカードには、ステレオオーディオサンプル用のバッファーがあり、そのバッファーを埋めることができ、出力機能が開始され、サウンドカードは、CPUが何もしなくても、バッファー内のサンプルからオーディオの生成を開始します。CPUが実行する必要があるのは、バッファがなくなる前に、バッファにオーディオサンプルを追加することだけです。1メガバイトのバッファーがある場合、CD品質の250,000ステレオサンプル、つまり約6秒です。したがって、数秒ごとに、CPUはこれらのバッファーを再びいっぱいにする必要があります。
実際には、お使いのコンピュータにはもっと高度な機能があります。原則として同じですが、バッファは、たとえばmp3またはaac形式のサウンドで直接埋めることができます。サウンドカードは、このデータをデコードして、それ自体をステレオサンプルにします。おそらく、音量、音質の改善、ピッチや速度の個別変更、サラウンドサウンドの生成など、さまざまなエフェクトを生成するようにプログラムできます。
CPUはあまり機能せず、サウンドバッファを時々埋めるだけです。残りは別の何かによって行われます。もちろん、「サウンドカード」と言うと、サウンドカードからチップ、そしてさまざまな機能を備えた大規模なチップ上のトランジスタの小さな斑点へと縮小しています。
そのようなカードのメーカーの1つとして、出発点としてhttps://en.wikipedia.org/wiki/Wolfson_Microelectronicsを参照してください。