「HPET」をサポートしていない「ALIX3D2」
コメント欄の方で面白い課題を提供していただきましたので、こちらの方で少し詳しく取り上げて諸兄の意見をいただければと思います。
その課題とは、hiroさんよりいただいたもので、
「本日、ある掲示板で、ALIX3D2 は HPETはサポートされて居ない、と言う旨の記述が有ったのですが、実際はどうなのでしょうか?
組み込みボードなので、それもあり得るか、と思いますが、HPETを有効にした際の音質を知ってしまうと、これは致命的か?と思えて来ました。」
というものです。
正直申し上げて、この事は私の中では全く盲点になっていました。
「HPETを有効」にするメリットに関しては一年ほど前に取り上げたのですが、いきなりこんな事を言われても理解できない方もおられると思います。そう言う方は、「Vine MPDを使いこなす(3)~「HPET」をオンにする」あたりを参考にしていただければと思います。
さて、問題は、何故にこの問題が盲点になっていたかです。
まず、初期ヴァージョンの「Voyage MPD」では、デフォルトのclocksourceは「tsc」でした。ですから、clocksourceを「HPET」に変更したいときは、「/boot/grob/menu.lst」を編集する必要がありました。
ところが、その後のヴァージョンアップで、このデフォルトが「tsc」から「HPET」に変更になりました。ですから、そんな煩わしい作業をする必要がなくなり、「Voyage MPD」のclocksourceはデフォルトで「HPET」だと言うことになりました。
実は、この「刷り込み」が影響をして、「Voyage MPD Starter Kit」においても、clocksourceのデフォルトは「HPET」だと思いこんでしまったのです。
ですので、早速に確認してみました。
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
pit
あれれ?
「HPET」じゃないですね・・・(^^;
まさか、「HPET」がサポートされていないのかな?
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
pit jiffies tsc
はい、サポートされていませんね。(^^;
そこで、あれこれ調べてみると、一枚基盤のALIX3D2は「HPET」をサポートしていないことが分かりました。でも、これって考えてみれば当然ですね。できる限りスリム化が必要な組み込み用途の基盤ですから、そんなものをサポートする必要はないという判断は間違ったものではないと思います。
私なりの結論から言いますと、「何の問題もないだろう」
さて、問題はここからです。
では、「ALIX3D2がHPETをサポートしていないことは致命的か?」です。
まず、私なりの結論から言いますと、「何の問題もないだろう」です。
ただし、この判断は、結構マニアックではあっても専門家ではない私の判断ですから、間違いを含んだ部分もあるかと思いますので、その時は遠慮なく突っ込んでください。
まず、USB-DAC(DDC)の一般的な転送方式は「アイソクロナス転送でかつシンクロナス伝送」というものでした。
アイソクロナス転送とは「とにかくエラーがあっても良いから一定時間内に一定量のデータを送受信してくれ!」というものです。よって、転送されるデータの正確性を担保しないことが問題にされてきたのですが、その事は今回のクロックの問題には直接関係しません。
問題は、その後の「シンクロナス伝送」という転送の仕様です。
「シンクロナス伝送」とは、PCからUSB-DAC(DDC)に対してデータを送り出すときに、PC側で主導権を握って一定の時間感覚でデータをUSB-DAC(DDC)に送り出すという仕様です。
具体的に言いますと、1msごとに最大1023バイトのデータを送り出します。
1msと言えば1000分の1秒ですから、人間の感覚で言えばかなりの高精度ですが、PCにとってはかなりザックリした値です。しかし、PC内部のタイマーが「pit」や「tsc」よりは、「HPET」のような高精度のものに変更すれば、この転送に伴うジッター値が上昇することを防げます。
実際、その効果は理屈云々よりも聴感的にもはっきりと確認できます。ですから、私も「HPET」を有効にすることのメリットを紹介したわけです。
しかし、PCオーディオの世界はドッグイヤーです。
あれを紹介してからほんの一年ほどなのですが、USB-DAC(DDC)の一般的な転送方式は「アイソクロナス転送でかつシンクロナス伝送」から「アイソクロナス転送でかつアシンクロナス伝送」に変わっていきました。(一部には特別なドライバを採用してパルク転送に対応したものもあります。)
この違いはよく読まないと見逃すのですが、要は「シンクロナス伝送」から「アシンクロナス伝送」に変わったと言うことです。
「アシンクロナス伝送」とは何かと言えば、これはUSB-DAC(DDC)の側が主導権を握って、PCからデータを送り出させる仕様です。
つまりは、この伝送方式のUSB-DAC)DDC)を使っているならば、データをやりとりするときの主導権はPC側にはないので、PCのタイマーが「tsc」であろうと「HPET」であろうと関係がありません。
そして、当然のことですが、USB-DAC(DDC)に積み込まれたクロックの精度はPCに搭載されたクロックよりははるかに優秀です。
ですから、「アシンクロナス伝送」に対応しているUSB-DAC(DDC)を使っているならば、PC側のタイマーが何を採用していようとデータ転送に限って言えば何の関係もないと言うことになります。
そして、「アシンクロナス伝送」に対応したUSB-DAC(DDC)は、一昔前ならばよほどの高級品でもなければ対応していなかったのですが、最近ではほとんどの製品が「アシンクロナス伝送」を採用しています。逆に言えば、対応していない製品を見つけることの方が困難です。
例えば、Onkyoは早くからこの「アシンクロナス伝送」に対応した機器をリリースしていました。
よって、ALIX3D2が「HPET」をサポートしていないことは「何の問題もないだろう」という私なりの結論になるわけです。
ただし、この結論は、PC内部のクロックの精度がデータの送り出しにのみ影響を及ぼしているという前提の話であって、その他の局面においても音質に影響を及ぼしているとなると話は違ってきます。
なお、私の手元には「Voyage MPD」をインストールして「HPET」を有効にしたシンプル構成のファンレスPCがあります。(「Voyage MPD」を一から構築する方法」で紹介したPCです。)
これと「Starter Kit」を聞き比べてみると、音質的には文句なく「Starter Kit」の方が上回っています。その違いは「何となく」というレベルではなくて、「歴然たる差」です。もちろん、「Starter Kit」に接続しているUSB-DDCは「アシンクロナス伝送」に対応したものです。
ですから、「アシンクロナス伝送」に対応しているUSB-DAC(DDC)を使っているのならば、「HPET」に対応していないという事はあまり気にする必要がないのではないかと思います。それよりは、限界まで構成をシンプルにして電磁波ノイズの発生を抑え込むことの方が重要なように思います。
ユング君様、早々のご回答、ご対応、ありがとうございます。
こんなに早くモヤモヤが晴れるとは感激です!!
詳細なご説明に悩みが一気に解消致しました。
原理を考えればご指摘の通りですね。
素晴らしいご考察に感服致しました。
質問させて頂いて本当に良かったです。
更に、実際に聴き比べた結果を拝見し、一層 starter kit を導入したくなりました。
CPUオンボードのマザーで組もうか、と候補を
探し始めた所でした。
ありがとうございました。
今後共宜しくお願い致します。
>こんなに早くモヤモヤが晴れるとは感激です!!
いやいや、これが本当に正解なのかどうかは分かりません。ただ、突っ込みがないところを見ると(^^;、それほど大筋は外していないのかもしれません。
なお、ちなみに、clocksourceを「tsc」に変更してみましたが、私の環境では明らかによろしくありませんでした。
Starter Kitに関しては、「アシンクロナス伝送」のUSB-DAC(DDC)を使って、clocksourceはデフォルトの「pit」にしておくのが無難なようです。
ユング君様、こんにちは!
>いやいや、これが本当に正解なのかどうかは分かりません。
いえいえ、実際にお聞きになった情報が一番欲しかったので、
嬉しいです。
生の情報をありがとうございます。
ますます楽しみになって来ました。
>Starter Kitに関しては、「アシンクロナス伝送」のUSB-DAC(DDC)を使って、clocksourceはデフォルトの「pit」にしておくのが無難なようです。
これも貴重な情報ですね。
ありがとうございます。
starter kit 導入します!!
面白い記事を見つけました。
http://av.watch.impress.co.jp/docs/topic/dackit/20120302_513902.html