「オンガク」が壊れないパソコンを作るために必要な考慮事項。

この記事の存在理由。

 【ProCable 8】スレッドにおいて、なぜか「検証」だけではなく「推測」が混ざりつつあることに危機感を感じたために、これを書いています。
 今のパソコンは、吸出し時点で大丈夫であれば「データがぶっ壊れたりはしない」……なんていうほど信頼性があるものではない*1のですが、その点が論じられていない点が気にかかっています。
 そういった点を忘れて物事を記録しようとすると「あとで揚げ足を取られる」事が目に見えていますので、そういった点についての提示をしようとしています。


 ……なんて大それた話がメインではなくて、単純に「安心してオンガクを聞くことができるパソコンって、どうやって作ればいいのだろう?」というところをただ考えてみただけの話です。

大前提。

 エラーが出た時点で「止まって」くれればそれでよい。
 エラーが出た時点で「訂正」しようとすると、抜け道ができてしまう恐れがあり、エラーが伝染する原因になるので。

必要なもの。

  • CD-DA吸出し能力があるドライブ2台(メーカー違い&スペック違いでそれぞれ1台)、ただしシリアルATA系に限る。
  • 同じ内容を記録するためのハードディスク2台、シリアルATA系限定。再生用ソフトウェア側で二台平行読み取りをする必要があるので、RAIDによるサポートはかえって邪魔。
  • メモリーはECCメモリを使う……が、これでもまだ信頼性は良いとは言い切れない。そのため、データは「異なる2台のドライブから読んだデータをメモリーに記録させる」ことで、データ破壊時の検出率を上げる。同じドライブから2度読みするとかいう方法では、リードキャッシュが働いてしまって意味が無い場合があるので注意。
  • マザーボードECCメモリに対応するものを使う。
  • CPUは可能な限り単純なものを使うか、あるいはシングルスレッドで動作させて、かつMMXやSSEといった大規模レジスタを利用しない。
  • OSは……なにを使っても同じなのかも?Linux/NILFSでは、ECCをサポートしているから意味がある……けど、ほかは(ジャーナリングとかでは役に立たないから)何を選んでも、ファイルシステム絡みの信頼性が同じだから、どれを選んでも同じか。
    • ああ、一つ例外があるか。エラー訂正の代用処置として「可逆圧縮(圧縮/展開の確認用にエラー訂正コードを使う)」を使う方法がある……から、それを使うなら「Windows/NTFSのZIP圧縮フォルダ」にデータを突っ込むというのは、方針としては正しいと思う。
      • あるいは、ファイル再生ソフト側で可逆圧縮(音声専用フォーマットではなくても良い)をサポートするものを使う、とか。これもデータ破損を検出するために役立つ。
  • オーディオボードについては、内部接続系であれば何でもよさそう。外部接続系であれば、アイソクロナス転送ではないモードでデータを送り出せる(受け側機器に大きなバッファがある)タイプを作るしかないのかなぁ。可逆圧縮ファイルのままで送り出してしまうという手も?
  • 音楽管理ソフトには、次の機能が求められる。
    • 異なるCD-DA対応ドライブ(2台またはそれ以上)から読み取ったデータを別々のメモリ空間へとコピーしていき、それらを比較検査し、合致していた場合にのみHDDへと書き込む機能。
    • HDDへとデータを書き込むときに、全く同じデータを、別々のメモリ空間から、別々のハードディスクへと、(読み取り時に単独検査が可能なように)可逆圧縮をした上で書き込んでいく機能。
    • 別々のハードディスクから、(読み取り時に単独検査が可能なように)可逆圧縮をした上で書き込まれたデータを平行して読み出していき、別々の領域のメモリへと可逆圧縮を解きつつ展開する機能。
    • エラー訂正が可能な方法(仮想ディスクとして認識させる/LAN経由でデータを送るDLNAなど)によって音声データを送出するときに、別々の領域のメモリへと可逆圧縮を解きつつ展開されたデータを両方とも読んでいき、双方のデータが合致していた場合にのみ他の機器へと送出する機能。
    • PCの負荷が一定以上になったとき/ディスクアクセス頻度が一定以上になったときに、データの転送そのものを数秒間程度強制的に休止する機能。

 ……と、「まじめに音楽を再生するために」必要な機能というと、大体こんな感じだろうか。

*1:メモリエラーでデータ破壊やプログラム暴走が起きたり、ハードディスクに書いていたテキストやデータが壊れたりするという現象が起きることを思い出してください……