Windows環境でProtoolsHDを動かすための情報その3
2012/06/18
以前よりこのブログで報告中のWindows環境でのProtoolsHDシステム構築の件の続報です。
※先日までの関連記事はコチラ。
>> Windows環境でProtoolsHDを動かすための情報その1
>> Windows環境でProtoolsHDを動かすための情報その2
現在、当方での運用は以前の報告時と変わらず
マザーボード: ASUS P7P55D (Socket 1156)
CPU: intel Core i7 860 2.8GHz
メモリー: DDR3 4GByte (デュアルチャネル駆動 2GBx2枚)
グラフィック: ATI RH5450-LE512HD
HDD: SATA 1TByte x1台 500GByte x1台
OS: Windows XP Home SP3
Protools: ProtoolsHD 8.1.1 HD3Accel (PCI-Xカード)
HUI: M-AUDIO ProjectMix I/O
というハードウェア環境をWindowsXPで稼働させています。
以前の報告に少々書いておりますが、FireWire機器との相性が悪いことや、時折6031エラーで停止してしまうのが唯一の問題でした。
一番の課題だったのが、6031エラーで再生/録音などが停止してしまうことで、この6031エラーの原因は前回にも書いたとおりHDカードの各DSPチップに割り当てられたIRQとマザーボード上の基幹システムコンフリクトだとわかっていました。
まぁ仕込みで使ってる程度なのでエラーで少々止まっても「その程度なら・・・」と妥協してましたが、その後6031エラーが起きる条件に気づきました。 とまる瞬間の一瞬前に必ずHDDへの大きめのアクセスが有るのです。Protoolsに24トラック同時Recをかけたり、巨大セッションを開いたりして、高負荷時のエラー発生を観察しているとHDDのアクセスランプと6031エラーの発生がほぼ確実な相関関係にあることがわかりました。
特に内蔵HDDへのアクセスが大きい時にはほぼ確実に6031エラーとなってしまうので間違いなくHDD関連のIRQとProtoolsHDのIRQの衝突が疑われる状況でした。
前回記事にも記載したとおりIRQの割り当ては、IDEチャンネルコントローラとIEEE1394(FireWire)コントローラとHDカードがIRQ 18で一緒くたになっている最悪な割り当て。OS側がACPIによって強制的に割り当てているのでユーザーサイドでは割り当て変更不可能。以下のような有様。
IRQ16 グラフィックカード、Chipset USBHostControler、HDCore、HDDSP
IRQ17 Chipset PCIExpressRootPort、HDAccel、HDDSP
IRQ18 Chipset PCIExpressRootPort、IDEチャネル、1394Controler、HDDSP
IRQ19 Chipset PCIExpressRootPort、NIC、1394Controler、HDDSP
当方のシステムはHD3Accelなので、Digidesign推奨の通りCPUに近いPCIスロットの1番から順番に
PCI SLOT1 :HD CORE <ここに192I/Oを接続
PCI SLOT2 :HD ACCEL
PCI SLOT3 :HD ACCEL
IRQのコンフリクトを回避しようとスロットを変更するとしても、各カードを繋ぐブリッジケーブルをCOREからACCELに順につながないといけない関係上、どうしても順番を逆さまにすることしかできませんでした。順を逆さまにしても結局WindowsXP以降のOS仕様であるACPIの強制IRQ割り当てが災いして、IRQが原因とわかっていてもどうにもこうにも回避できなかった。
そして1年以上経ってつい先日、急に思いついてIDEコントローラーを使わなければIRQ衝突も起きないのではと思いついた。どういうことかというと、昨今のPCに搭載されているHDDはSATAインターフェースでつながってはいても、制御を旧来のシステムと互換性を持たせるためIDE互換モードで運用している事が多い(多くはBIOSでモードを切り替えることで本来のSATA規格として動作する)。本来SATAはAHCIコントローラーで制御されるシステムである。
デバイスマネージャからIRQの割り当てを見てみると
IDEコントローラ :IRQ 18
AHCIコントローラ :IRQ 19
となっていた。
つまりHDDの制御をIDEコントローラーに渡すのではなくAHCIに渡してやればIRQ18でのコンフリクトを回避出来るかなと思ったわけです。
で、やってみたところ・・・ダメでした。
ちなみに、HDシステムではCOREカードとACCELカードをFLEXケーブルという本当に短くて取り回しの利かない専用のケーブルで繋ぐのですが、これを繋ぐ際には「必ずCOREのBポートとACCELのAポートを繋ぐ」というDigidesignのマニュアルにも書かれた決まりがあるので、これに従うと、どうしてもPCIスロットにはCOREが一番最初か一番最後に来ないといけなくなります。
▼COREやACCELカードを繋ぐFLEXケーブル

▼マニュアルには「常にコアのBからアクセルのAへ」との記載が。

その後自分でも何を思ってそんな行動に出たのかわからないのですが、トチ狂ってHDカードの順番を入れ替えてみようと思い
PCI SLOT1 :HD ACCEL
PCI SLOT2 :HD CORE <ここに192I/Oを接続
PCI SLOT3 :HD ACCEL
という普通ありえない挿し方をやってみました。
当然FLEXケーブルはマニュアル通りにはつなげませんが、ACCELのBポートからCOREのAポートへつながって、さらにCOREのBポートとACCELのAポートへとつなぎます。経験上壊れることはないのは知っていたのでまぁダメ元で・・・という気分で試してみました。
DigiTestという自己診断ソフトウェアを走らせると問題なくつながって認識されてるようだが、Protoolsを起動させてみると当然「オーディオインターフェイスが見つかりません。最初のHDカードにインターフェイスを接続してください」みたいなダイアログが出て起動しない。当然といえば当然。
・・・と、ここでまた気づいた。
「最初のHDカードにインターフェイスを接続してください」
なるほど・・・と思い
PCI SLOT1 :HD ACCEL <ここに192I/Oを接続
PCI SLOT2 :HD CORE
PCI SLOT3 :HD ACCEL
すると起動成功!!
そして、なんと 6031エラー克服!!!!
IRQ16 グラフィック、1394Controller、Chipset PCIExpressRootPort/USBHostController、HDAccel、HDDSP
IRQ17 Chipset PCIExpressRootPort、NIC、1394Controller、HDDSP
IRQ18 Chipset USBHostController、HDCore、HDDSP
IRQ19 Chipset USBHostController、AHCIController、HDAccel、HDDSP
上記のようにIRQ割り当てがガラッと変更され、HDCoreのあるIRQ 18に負担の重いシステムがいなくなっていました!
結果完全に6031エラーを克服し、相性の悪かったFireWire機器も問題なく使えるようになりました。
まさかマニュアル通りにしていたのが悪かったとは・・・。
WindowsでTDM動かしてる人は少ないと思いますが、上記のような症状でお困りの方は、マニュアルを「Fuck!!」と叫びながら破ってCOREカードの順番&Flexケーブルの接続方向を適当に変えてみるといいかもしれません。
※先日までの関連記事はコチラ。
>> Windows環境でProtoolsHDを動かすための情報その1
>> Windows環境でProtoolsHDを動かすための情報その2
現在、当方での運用は以前の報告時と変わらず
マザーボード: ASUS P7P55D (Socket 1156)
CPU: intel Core i7 860 2.8GHz
メモリー: DDR3 4GByte (デュアルチャネル駆動 2GBx2枚)
グラフィック: ATI RH5450-LE512HD
HDD: SATA 1TByte x1台 500GByte x1台
OS: Windows XP Home SP3
Protools: ProtoolsHD 8.1.1 HD3Accel (PCI-Xカード)
HUI: M-AUDIO ProjectMix I/O
というハードウェア環境をWindowsXPで稼働させています。
以前の報告に少々書いておりますが、FireWire機器との相性が悪いことや、時折6031エラーで停止してしまうのが唯一の問題でした。
一番の課題だったのが、6031エラーで再生/録音などが停止してしまうことで、この6031エラーの原因は前回にも書いたとおりHDカードの各DSPチップに割り当てられたIRQとマザーボード上の基幹システムコンフリクトだとわかっていました。
まぁ仕込みで使ってる程度なのでエラーで少々止まっても「その程度なら・・・」と妥協してましたが、その後6031エラーが起きる条件に気づきました。 とまる瞬間の一瞬前に必ずHDDへの大きめのアクセスが有るのです。Protoolsに24トラック同時Recをかけたり、巨大セッションを開いたりして、高負荷時のエラー発生を観察しているとHDDのアクセスランプと6031エラーの発生がほぼ確実な相関関係にあることがわかりました。
特に内蔵HDDへのアクセスが大きい時にはほぼ確実に6031エラーとなってしまうので間違いなくHDD関連のIRQとProtoolsHDのIRQの衝突が疑われる状況でした。
前回記事にも記載したとおりIRQの割り当ては、IDEチャンネルコントローラとIEEE1394(FireWire)コントローラとHDカードがIRQ 18で一緒くたになっている最悪な割り当て。OS側がACPIによって強制的に割り当てているのでユーザーサイドでは割り当て変更不可能。以下のような有様。
IRQ16 グラフィックカード、Chipset USBHostControler、HDCore、HDDSP
IRQ17 Chipset PCIExpressRootPort、HDAccel、HDDSP
IRQ18 Chipset PCIExpressRootPort、IDEチャネル、1394Controler、HDDSP
IRQ19 Chipset PCIExpressRootPort、NIC、1394Controler、HDDSP
当方のシステムはHD3Accelなので、Digidesign推奨の通りCPUに近いPCIスロットの1番から順番に
PCI SLOT1 :HD CORE <ここに192I/Oを接続
PCI SLOT2 :HD ACCEL
PCI SLOT3 :HD ACCEL
IRQのコンフリクトを回避しようとスロットを変更するとしても、各カードを繋ぐブリッジケーブルをCOREからACCELに順につながないといけない関係上、どうしても順番を逆さまにすることしかできませんでした。順を逆さまにしても結局WindowsXP以降のOS仕様であるACPIの強制IRQ割り当てが災いして、IRQが原因とわかっていてもどうにもこうにも回避できなかった。
そして1年以上経ってつい先日、急に思いついてIDEコントローラーを使わなければIRQ衝突も起きないのではと思いついた。どういうことかというと、昨今のPCに搭載されているHDDはSATAインターフェースでつながってはいても、制御を旧来のシステムと互換性を持たせるためIDE互換モードで運用している事が多い(多くはBIOSでモードを切り替えることで本来のSATA規格として動作する)。本来SATAはAHCIコントローラーで制御されるシステムである。
デバイスマネージャからIRQの割り当てを見てみると
IDEコントローラ :IRQ 18
AHCIコントローラ :IRQ 19
となっていた。
つまりHDDの制御をIDEコントローラーに渡すのではなくAHCIに渡してやればIRQ18でのコンフリクトを回避出来るかなと思ったわけです。
で、やってみたところ・・・ダメでした。
ちなみに、HDシステムではCOREカードとACCELカードをFLEXケーブルという本当に短くて取り回しの利かない専用のケーブルで繋ぐのですが、これを繋ぐ際には「必ずCOREのBポートとACCELのAポートを繋ぐ」というDigidesignのマニュアルにも書かれた決まりがあるので、これに従うと、どうしてもPCIスロットにはCOREが一番最初か一番最後に来ないといけなくなります。
▼COREやACCELカードを繋ぐFLEXケーブル

▼マニュアルには「常にコアのBからアクセルのAへ」との記載が。

その後自分でも何を思ってそんな行動に出たのかわからないのですが、トチ狂ってHDカードの順番を入れ替えてみようと思い
PCI SLOT1 :HD ACCEL
PCI SLOT2 :HD CORE <ここに192I/Oを接続
PCI SLOT3 :HD ACCEL
という普通ありえない挿し方をやってみました。
当然FLEXケーブルはマニュアル通りにはつなげませんが、ACCELのBポートからCOREのAポートへつながって、さらにCOREのBポートとACCELのAポートへとつなぎます。経験上壊れることはないのは知っていたのでまぁダメ元で・・・という気分で試してみました。
DigiTestという自己診断ソフトウェアを走らせると問題なくつながって認識されてるようだが、Protoolsを起動させてみると当然「オーディオインターフェイスが見つかりません。最初のHDカードにインターフェイスを接続してください」みたいなダイアログが出て起動しない。当然といえば当然。
・・・と、ここでまた気づいた。
「最初のHDカードにインターフェイスを接続してください」
なるほど・・・と思い
PCI SLOT1 :HD ACCEL <ここに192I/Oを接続
PCI SLOT2 :HD CORE
PCI SLOT3 :HD ACCEL
すると起動成功!!
そして、なんと 6031エラー克服!!!!
IRQ16 グラフィック、1394Controller、Chipset PCIExpressRootPort/USBHostController、HDAccel、HDDSP
IRQ17 Chipset PCIExpressRootPort、NIC、1394Controller、HDDSP
IRQ18 Chipset USBHostController、HDCore、HDDSP
IRQ19 Chipset USBHostController、AHCIController、HDAccel、HDDSP
上記のようにIRQ割り当てがガラッと変更され、HDCoreのあるIRQ 18に負担の重いシステムがいなくなっていました!
結果完全に6031エラーを克服し、相性の悪かったFireWire機器も問題なく使えるようになりました。
まさかマニュアル通りにしていたのが悪かったとは・・・。
WindowsでTDM動かしてる人は少ないと思いますが、上記のような症状でお困りの方は、マニュアルを「Fuck!!」と叫びながら破ってCOREカードの順番&Flexケーブルの接続方向を適当に変えてみるといいかもしれません。