前回の記事で、(A)と(B)の違いが判らないと言うコメントをいただいたの
で、まず(A)から説明したいと思います。
(判りやすくするためにいろいろ簡略化していますのでご理解ください)

上図に示すように、CPUの処理と言うのは色々なお仕事(タスク)を時間を区
切ってどんどんこなしていきます。厳密に言えばタスクの優先度などがあります
し、OS(Windows)自体の処理作業もあるので、こんなに単純ではないと思いま
すが、簡単のためこのように考えます。
問題は図の中にも書いたように、1回処理をしてもらってから次にいつ処理し
てもらえるかが不明なことです。これをある一定時間内に必ず処理をしてもらえ
るようにしたのがリアルタイムOSですが、残念ながらWindowsにはその機能は
ありません。ですので、図のように②、③、④の処理時間がすごく長くなってオー
ディオの処理のための⑤の時間が来るのがすごく遅くなると、ブッといって音が
出なくなってしまいます。
でもあまり心配は要りません。そうなることはめったにありませんので。
なぜなら、
CPU(ボード)のデータ処理能力というのは恐ろしく高いです。1秒間に数百
メガバイトくらいのデータ処理は可能です。一方、オーディオに必要なデータ処
理能力はどれくらいでしょうか?
CDフォーマットで考えると、
16ビット、44.1KHz、2チャンネル
ですから、1秒当たりたったの176Kバイトです。24ビット、196KHz
でも、高々1秒当たり1.2メガバイト程度です。
と言うことは、CPUの処理能力はその数百倍あると言うことになります。
(オーディオと言うのはデータ量で言うとほんの少しのデータ量なのです)
ですので、オーディオ以外のお仕事がよほど忙しくなければ十分間に合います。
ではなぜ実際にブッといって音が出なくなってしまうことがあるのでしょう?
それはオーディオのためのデータ処理(それに限りませんが)と言うのは必ず一
定の時間処理したら必ず他の処理のために作業を中断して、CPUを他のお仕事
に引き渡す必要があるのです。一般的な非リアルタイムのOSの場合それは1ミ
リ秒程度毎に一回順番が回ってくる(カーネルモードでの場合)と言う感じになっ
ていますが、一定はしていません。

と言うことは、例えばCDフォーマットの音楽再生の場合、200バイト程度の
データを処理するたびに一旦処理を中断しCPUに処理を引き渡しても、
次に順番が回ってくるのが1ミリ秒後以内であれば音は途切れないと言うことです。
CPUの処理能力は恐ろしく高いので、200バイトの処理など一瞬で済んでし
まいます。ですので、CPUがこなすオーディオの仕事と言うのは、上図のよう
に、ほんの一瞬で処理し、1ミリ秒経ったらまたほんの一瞬だけ処理し、また1ミリ
秒経ったらまたほんの一瞬だけ処理し、の繰り返しになります。
(実際にはおそらく1回に1Kバイト単位以上で処理していると想像します)
ところが、たまたまCPUの他の仕事がすごく忙しくなると1ミリ秒以上経って
もオーディオに順番が回ってこないことが在るのです。そうなるとオーディオ機器に
データが渡らず、ブッといって音が出なくなってしまう事になるのです。
(単に忙しいと言うだけでなく、マナーの悪いデバイスドライバーソフトなどが
あると、自分の処理だけで長時間CPUを占有してしまう場合もあります)
これが(A)の場合です。
つまりこれはCPUそのもののデータ処理能力の問題ではなく、たまたますごく
忙しい仕事が他にあって、順番が回ってこないということですので、わたしは最
近のPC自体の性能が悪くて(A)の問題が起きることはあまり無いだろうと
考えていますが、マナーの悪いドライバーソフトなどがインストールされていると
そういうことが起きる可能性は十分あります。
この待ち時間を計測しているのが、”DPC Latency Checker ” です。これで測
り、CPUの待ち時間が長く(棒グラフが赤く)なっていると、ブッといって音
が出なくなってしまう事になるのです。
(B)の場合は、(A)のように大きな単位でデータが不足すると言うのではな
く、もう少し小さい単位でデータがロスする場合です。それはまた次回に。
- 2011/04/06(水) 23:31:42|
- 音の比較/技術解説
-
| トラックバック:0
-
| コメント:0