2011 年 7 月 23 日

DisplayPortとSATA3.0(6Gbps)の相性について




先日ちょろっと話した14443円のDELLの23インチIPS液晶「U2311H」が届きました。


こんにちは、montaです。

15日に注文、20日着でしたので恐らく2営業日ぐらいで届きます。DELLも人気商品は国内に在庫を持っているようですね。ちなみにまだ買えます。



どや!(©Clochette)
これがRadeonに封印されし力「Eyefinity-アイフィニティ-」です。
DVI+DVI+DisplayPortの3画面出力でございます。
さて、ここに至るまでにはかなりトリッキーな問題がありました。
※問題なく素直に動作してしまうとこの日記もココで終わりなので、monta@site的にはトラブルは美味しいです^q^

現時点でも完全な解決には至っていませんが、もし同じ環境の方がいたらご参考にしてください。

-環境-

 ■CPU:Corei7 920
 ■MB:ASRock X58 Extreme3(X58チップセット)
 ■Mem:SiliconPower DDR3-1333 4GBx6
 ■VideoCard:Radeon HD5770(Sapphire 11163-02-20R)
 ■SATA3.0コントローラ:Marvell 88SE9128(マザーオンボード)
 ■SATA3.0 SSD:Crucial C300 128GB
 ■電源:Antec EA-650
 ■DisplayPortケーブル:COMON(カモン) DP-30
U2311HとRadeon HD5770をDisplayPortで接続し、電源を入れるとBIOS後に、


起動デバイスが見つからない という極めて心臓に悪いメッセージが!
「SSDがご臨終してしまったのか!?」と寒気がしました。冷房要らずなのでオススメです。

とりあえず落ち着いて、ブートデバイスの優先順位を確認するためBIOS画面に目をやると


SATA3.0の先に繋がっているはずのSSDが認識していないじゃないですか。
↓は正常な状態


※DisplayPortを抜いてDVIで繋ぎ直すと普通にSSDを認識しました。
さてどうしたものかと色々なパーツ構成で試すうちにある法則を発見しました。

■コールドブート(ハードウェアキャッシュなし)
 ・ビデオカード完全初期化
 ・メモリチェックあり
 結果:○SATA3.0を認識する

■コールドブート(ハードウェアキャッシュあり)
 ・ビデオカード簡易初期化?
 ・メモリチェックあり
 結果:×SATA3.0を認識しない

■ウォームブート
 ・ビデオカード初期化なし
 ・メモリチェックなし
 結果:△コールドブートの段階でSATA3.0を認識していればその状態を維持する
どうやらハードウェアキャッシュがない状態、つまりマザーに電荷がない状態からのコールドブートだとDisplayPortとSATA3.0を同時に認識するようです。
あまり意識されていませんが、ブートにはいくつか種類があります。
有名なのが上でも挙げたコールドブート、ウォームブートですね。
PCの電源を入れて、「ディスプレイにPOST画面が表示されるまでの時間」を気にしたことはありますか?
例えばWindowsから再起動したらすぐにPOST画面が出ますよね?逆に完全に電源OFFの状態から電源ONにするとPOST画面が中々出ないですよね?
前者がウォームブート、後者がコールドブートです。
コールドブートはハードウェアの初期化、メモリチェックが走るのでウォームブートより遅くなります。
逆にウォームブートは「それまで正常に起動していたシステム」から再起動せよという命令が来たので「このシステムは安全なのだろう」という暗黙の了解のもと各種チェックはすっ飛ばしてブートします。

で、実はコールドブートにもいくつか種類があります。
厳密には私も仕組みを良く知らないのですが、マザーによっては「ハードウェア構成をCMOSか何かにキャッシュ」するものがあるのです。
またPOST画面の話ですが、
電源ケーブルを抜いた状態(or 電源ユニットのスイッチOFF状態)で電源ケーブルを挿し、PCの電源を入れた場合と、
一度起動していたPCをシャットダウンした状態から電源を入れた場合とでは明らかに後者の方がPOST画面が速く表示されますよね?
これはマザーがビデオカードの認識をすぐに行えるよう、何かしらのハードウェア情報をキャッシュしているとしか思えない挙動です。
このキャッシュは限定的なもののようで、電源をマザーから完全に切断するとキャッシュも消えてしまうようです。CMOSクリアに近い挙動と言えます。

困ったことにこのハードウェアキャッシュがある状態だと何故かSATA3.0を認識してくれないんですよ。
なので今は初回起動のたびに電源ユニットのスイッチをOFF→ONにしてから電源を入れている有り様です。
一度起動してしまえば後はシャットダウンしない限り再起動しようがスタンバイしようが使えるので、「家にいる時間=PCが起動している時間」のmontaにとってはそれほど支障がないとも言えますが、本来はとても不便な仕様と言えます。

このMarvellのコントローラが悪いのか、RadeonのDisplayPortコントローラにバグがあるのかどうかは定かではありませんが、とりあえず私のこの環境では正常には動かないというのは確かです。
DisplayPortに関しては、この現象以外にもかなり相性があるらしく(映りが安定しなかったり、スリープに入らなかったり)、まだまだ成熟した規格とは言えないようですね。
なにか良い解決方法をご存知の方がおりましたらお知らせください。
HD6000シリーズでは改善しているんですかね?
Filed under: PC,日記 — monta @ 23:59