「オンガク」が壊れないパソコンを作るために必要な考慮事項。
この記事の存在理由。
【ProCable 8】スレッドにおいて、なぜか「検証」だけではなく「推測」が混ざりつつあることに危機感を感じたために、これを書いています。
今のパソコンは、吸出し時点で大丈夫であれば「データがぶっ壊れたりはしない」……なんていうほど信頼性があるものではない*1のですが、その点が論じられていない点が気にかかっています。
そういった点を忘れて物事を記録しようとすると「あとで揚げ足を取られる」事が目に見えていますので、そういった点についての提示をしようとしています。
……なんて大それた話がメインではなくて、単純に「安心してオンガクを聞くことができるパソコンって、どうやって作ればいいのだろう?」というところをただ考えてみただけの話です。
大前提。
エラーが出た時点で「止まって」くれればそれでよい。
エラーが出た時点で「訂正」しようとすると、抜け道ができてしまう恐れがあり、エラーが伝染する原因になるので。
必要なもの。
- CD-DA吸出し能力があるドライブ2台(メーカー違い&スペック違いでそれぞれ1台)、ただしシリアルATA系に限る。
- 同じ内容を記録するためのハードディスク2台、シリアルATA系限定。再生用ソフトウェア側で二台平行読み取りをする必要があるので、RAIDによるサポートはかえって邪魔。
- メモリーはECCメモリを使う……が、これでもまだ信頼性は良いとは言い切れない。そのため、データは「異なる2台のドライブから読んだデータをメモリーに記録させる」ことで、データ破壊時の検出率を上げる。同じドライブから2度読みするとかいう方法では、リードキャッシュが働いてしまって意味が無い場合があるので注意。
- マザーボードはECCメモリに対応するものを使う。
- CPUは可能な限り単純なものを使うか、あるいはシングルスレッドで動作させて、かつMMXやSSEといった大規模レジスタを利用しない。
- OSは……なにを使っても同じなのかも?Linux/NILFSでは、ECCをサポートしているから意味がある……けど、ほかは(ジャーナリングとかでは役に立たないから)何を選んでも、ファイルシステム絡みの信頼性が同じだから、どれを選んでも同じか。
- オーディオボードについては、内部接続系であれば何でもよさそう。外部接続系であれば、アイソクロナス転送ではないモードでデータを送り出せる(受け側機器に大きなバッファがある)タイプを作るしかないのかなぁ。可逆圧縮ファイルのままで送り出してしまうという手も?
- 音楽管理ソフトには、次の機能が求められる。
- 異なるCD-DA対応ドライブ(2台またはそれ以上)から読み取ったデータを別々のメモリ空間へとコピーしていき、それらを比較検査し、合致していた場合にのみHDDへと書き込む機能。
- HDDへとデータを書き込むときに、全く同じデータを、別々のメモリ空間から、別々のハードディスクへと、(読み取り時に単独検査が可能なように)可逆圧縮をした上で書き込んでいく機能。
- 別々のハードディスクから、(読み取り時に単独検査が可能なように)可逆圧縮をした上で書き込まれたデータを平行して読み出していき、別々の領域のメモリへと可逆圧縮を解きつつ展開する機能。
- エラー訂正が可能な方法(仮想ディスクとして認識させる/LAN経由でデータを送るDLNAなど)によって音声データを送出するときに、別々の領域のメモリへと可逆圧縮を解きつつ展開されたデータを両方とも読んでいき、双方のデータが合致していた場合にのみ他の機器へと送出する機能。
- PCの負荷が一定以上になったとき/ディスクアクセス頻度が一定以上になったときに、データの転送そのものを数秒間程度強制的に休止する機能。
……と、「まじめに音楽を再生するために」必要な機能というと、大体こんな感じだろうか。
*1:メモリエラーでデータ破壊やプログラム暴走が起きたり、ハードディスクに書いていたテキストやデータが壊れたりするという現象が起きることを思い出してください……