続・メモリ帯域は偉大だという話。
さて、前回のネタは「Full HD動画を再生するにはVGAのメモリ帯域が必要だ」というお話だったのだが。
これをちょっと視点をズラして言い換えてみると、こんなことが言えるのでは。
統合型チップセットでFull HD動画再生を行っている間、VGA画像転送に圧迫されてメインメモリの帯域は著しく制限される
→従ってこの間はバックグラウンドで実行されているプログラムの処理効率は著しく落ちる
VGAもメインメモリも同じメモリを分け合っているので、Full HD再生中はメモリ争奪戦がナカナカ凄いことになっている筈。
でもこれ、ユーザが体感出来る程の違いは出るのか?
・・・ということで、実験してみた。
大量のメモリアクセスを繰り返すと思われるアプリをいくつか、ついでにVMware Workstationも引っ張り出して。
Full HD動画を再生中と、何もしないでいる時と、条件を変えて実行し、パフォーマンスに差が出るかどうか。
◇
結論。
確かに違いは出ているようだが、何と言ったら良いやら。
・・・スッキリしない言い方だが、実際あんまりスッキリした結論は出てないのよ。
まずアプリレベルでは、何度か繰り返してみても「振れ幅」が大きく、「確実」ということを言うのは正直キビシイ。
個人的主観ではパフォーマンスは劣化していると思うのだが・・・という。
一方、VMware Workstation上で動かしているOSには目に見えてパフォーマンス劣化が。
特に仮想I/O周辺は影響が大きく、画面描画やNetworkデータ入出力といった部分では、パフォーマンスが半分以下に。
まあVMware Workstationの仮想I/Oがクソ重いというのは周知の事実で、ちょっと重いアプリを走らせればあっさりとパフォーマンスが劣化するのは常識ではあるのたが。
ポイントはFull HD再生時にはCPUは「演算は殆どしていない」ということ。GPU側のアクセラレーション(790GXの場合UVD)が効いているので、世間一般ではこの状態を「システムに負荷はかかっていない」と表現することが多い。
にも関わらず実際に仮想I/Oに強烈なダメージが来る、いうことは「動画再生のためにデータ転送と画面描画をそこそこ頑張っていて、メモリ帯域もそれなりに占有している」という状態は、「システムに少なくない負荷がかかっている」と表現することが正しいのでは、という気がする。
#にしても、こうやってイロイロいじっていると、単純な機能単位で測るいわゆるベンチマークってのがホントに「参考程度」でしかない、というのを実感しますな。
あと、そんなにメモリ帯域が大切なら素直に単品VGA刺せよ、と。
メモリ帯域は偉大だ、という話。
または、SidePort Memoryだけでは苦し過ぎるというお話。
さて、AMDの7×0/8×0系のIGXではお馴染みのSidePort Memory。
128MB程度がオンボードに乗っていて、コレがあると無いとではビミョーに性能が変わるという。最近では搭載しているのが当たり前。
#・・・かと思ったら、785Gから880Gに世代交代してまた採用率が下がっているような?ビミョーな性能とコストを天秤にかけて、コストが優先されてるのかね。
ところで、一部のマザボではSidePort Memoryを使うかどうか、或いはUMAを使うかどうか、ということをBIOSで設定が可能なんですな。
さて、ここからが本題。
128MBもあればWindows 7でAEROも使用可能。Full HDの2枚表示でも問題ない。
そこで、モノは試し。790GXをSidePort Memory「だけ」で動かしたらどうなるか、ちょいと試してみた。
といっても、ポイントはベンチマーク値ではなく。そんな分かり易く数字が下がるのはどうでも良くて、「体感で」分かる程の差が出るかどうか。
ちなみにSidePort MemoryはDDR-667MHzとクロック数だけは高いが、帯域は僅か「16bit」。
同世代のRadeon 3450(とその後継の4350)がDDR-500MHzとはいえ64bitの帯域があるのと比べると、1/3という。
◇
実際にBIOSで切り替えて少し使ってみた。
ビジネスアプリでは・・・ほぼ違いは分からない。
といっても全く分からないというワケでもない。画像をやったら貼ったExcel画面のスクロールや、画像とFlash満載のサイトをFirefoxで開いている時なんかは、体感で明らかに違いが分かる。
逆に、そういう画像べったりモノ以外では、ほぼ問題ない。
#16bitという帯域はダテじゃない。
とはいえ、AEROそのものって意外と軽いやん。Vistaってなんであんなに重いんだ?
で、これで課題がクリアになるかと思ったら・・・世の中そんなに甘くなかった。
劇的にダメになるモノがあったんですわ。もうボロボロという。
それは何かというと、「動画再生」。
SidePort+UMAでは余裕だったFull HD再生が、SidePort Memory Onlyでは全く無理。
フレーム落ち、ガクガク、時間軸ズレ、挙げ句にはフレーム逆転。全く見られたモンじゃない。
それではどこまで画面を縮小すれば再生が間に合うかと試してみると、倍率50%ならば何とかギリギリ正常に再生出来る様子。
うーん、SidePort Memoryの帯域ではこれが限界か。
◇
結論。
SidePort Memory Onlyってのはナシだよね。
・・・それは良いのだが、一つ気になることが。
今回の実験で、DDR2-667MHz/16bitの帯域でまともに動画再生が可能なのは960×540程度が限界、ということが判明したのだが。
ここから逆にFull HDで必要な帯域を計算してみる。
Full HDは縦横2倍=面積比4倍のため、メモリ帯域もこの4倍必要。
ということは、Radeon HD 3450と4350は単体VGAにも関わらず、メモリ帯域が不足してFull HD再生はおぼつかない、ということでは。
こう考えると、最新のRadeon 5000シリーズから5350という型番のローエンド品が無くなったのも当然かも。
現在ローエンドの5450はDDR3-800MHz/64bitが一応リファレンスということになっているので、SidePort Memoryの約5倍の帯域。
コレなら取り敢えずFull HD再生でも問題ない計算になる・・・あまり余裕も無さそうだが。
ついでに、ローエンド5450にはDDR2-400MHz/64bitなんてモノも転がっているが、これでは明らかに帯域が不足ということに。
Blu-rayをまともに見たければ、5450でもDDR3採用モデルを選びましょ、と。
帰ってきた2Dベンチネタ。
今回はPCIe バス幅編。
手元の790FXはx32リンクをx8とx16にバラして使うことが出来ます。I/Oが欲しければx8を使えば良いという話。
ところが、昨今の超高速SSDブームで、x8リンクをRAIDに使うというのは珍しくなくなってきましたよ。
で、I/Oをよく見てたら・・・あれ?以前からネタにしてる3124を2スロット挿して、ローカルHDD用のRAIDを挿そうとしたら、VGAがx8になってしまいますよ。おや困った。
ということで、ここからが本題。
世間の大多数でx16駆動が大前提のVGAを、x8で動かした時、どれぐらい2D関係の速度が落ちるのか。
これをベンチマークで確認する、と。
ちなみに前回とはCPUがPhenom X4 9750、M/BがM3A79-T Deluxe(790FX)に変わってます。
前回ベンチ時はCPUがAthlonX2 5200+、M/BがGA-M55S-S3(nForce550)だったので、CPUパワーが格段に上がっている一方、VGA自体はPCIe 1.0のままなので、ボトルネックになる部分のバス幅は「理論的には」変わらない筈。
なお、ベンチマークソフトはこのblogでGF8500/8400ネタやった時からずっと変わらずのCrystalMark2004R3。
まずはGDIから。
| VGA | GDI | Text | Square | Circle | BitBlt |
|---|---|---|---|---|---|
| GeForce 7600GT x16 | 12655 | 1268 | 4665 | 1930 | 4880 |
| GeForce 7600GT x8 | 12497 | 1240 | 4605 | 1791 | 4803 |
| GeForce 7600GT x16 DualDisplay | 8377 | 1218 | 4137 | 1467 | 1567 |
| GeForce 7600GT x8 DualDisplay | 8310 | 1216 | 4087 | 1440 | 1519 |
次、D2D。
| VGA | D2D | 10 | 100 | 500 | 1000 | 5000 | 10000 |
|---|---|---|---|---|---|---|---|
| GeForce 7600GT x16 | 3549 | 480 | 324 | 132 | 75 | 17 | 9 |
| GeForce 7600GT x8 | 3536 | 473 | 321 | 132 | 75 | 17 | 9 |
| GeForce 7600GT x16 DualDisplay | 3519 | 470 | 318 | 130 | 75 | 17 | 9 |
| GeForce 7600GT x8 DualDisplay | 3514 | 467 | 318 | 130 | 75 | 17 | 9 |
ふむふむ、成る程。
全体的な傾向として、x8とx16で差が「無いワケではない」が「正直誤差程度」。選べる状況でわざわざx8を選ぶ必要は無いが、選べない状況をそう悲観する必要も無さそう。
ちなみに3Dの方はどうかというと・・・Tom’s Hardwareにちょっと古いがレーン数別でベンチ取ったネタが出てます。
これ見ると、3Dゲームで余程負荷かけまくったりしない限り、x8とx16の差は誤差程度。Tom’sでは更にx4でも計測して「x4あれば取り敢えず困らない」という結論。
とはいえPCIe x4ってちょっと考えてみればAGP 8xとほぼ同等なんだから、当然といえば当然か。
・・・というか、逆に考えると。
AGP 8xなんて「オーバースペック」と散々言われていたのに、今じゃその帯域は「必須」ということですか。
まあ勿論、このベンチの頃からは時間が経っているで、最新のゲーム相手にすると多分x8とx16の差はもう少し出るとは思うが。
取り敢えず、2Dメインならx8あれば困らない、ということで。
◇
つまり、790FXでPCIe16を4本持ってたり、790GXでPCIe16を2本持ってたり・・・なんて人は、ベンチマークで限界値に挑戦でもしない限りは、物理スロットを有効に使えます、と。
そうなると、俄然お薦めなのは広帯域I/Oですな。SSD+Hardware RAIDの組み合わせなんて超ゴキゲンですわな。
・・・ふむ、ではそのHardware RAIDは何がいいかね。
Adaptecの2405は低価格でSASも使えて速いんだが、いかんせんシステムとの相性出たら全く使い物にならないし、ArecaのはAdaptecより相性が緩いらしいがSATAオンリーでちょぃと高いし・・・。
・・・790FXでAdaptec 2405の使用実績は・・・MSIのはあるのか。
MSIだと790Xでの使用実績もありますな。
これなら行けるのかな?790FX+ASR-2405。
・・・あでもここにRAID挿すと、手元のM/BだとLANがオンボードのMarvellになっちまうのか。遅いのよねぇコレ・・・。
せめてもう一本x1があれば・・・う~む。
◇
P.S.
以前のベンチと見比べて貰うと全体的に数字が上がっているが、特にBitbltの数値向上が激しい。これやっぱり、Phenomだからか?
だとすると、以前騒がれた「790GXもっさり病はPhenomだと出ない」というネタと丁度符合するな・・・と。
Tags: 2DonGPU
そしてもっさりは消えた、のだが・・・。
HDMIセレクタにハンダを入れた挙げ句、無事、HDMI接続によるDualDisplay環境が出来上がった780G。
巷で言われている「Dualにしたらもっさりが消えた」というウワサを確かめて、780Gネタ最終回としましょう。
ということで、まずベンチ・・・。
| VGA | GDI | Text | Square | Circle | BitBlt |
|---|---|---|---|---|---|
| 780G DualDisplay | 4774 | 136 | 2565 | 1270 | 803 |
| VGA | D2D | 10 | 100 | 500 | 1000 | 5000 | 10000 |
|---|---|---|---|---|---|---|---|
| 780G DualDisplay | 1774 | 105 | 90 | 54 | 36 | 10 | 5 |
えと、何これ(笑。GDI速度、Singleの時より圧倒的に上がってるんですけど。
更に、Singleの時は「こいつはすげぇ」というレベルでもっさりしていたWebを開いてみても、全然もっさりしてないんですが。普通にサクサク行けるよ?
ということで、Dualにするともっさりが消える、というのは事実でしたとさ。
◇
しかしこうなると、原因は何じゃらほい。
普通に考えると、Dualにすると描画面積が増えるのでパフォーマンスには負の影響が出る。
8500GTや7600GSを使ったベンチテストでもその通りの数字が出ている。
だというのに、数字が上がる。体感で分かるぐらい動きが良くなる。
以前PowerPlayが原因だという話もあったが、実際にAMD OverDriveで見てみたところ、このM/BではGPUは500MHzで固定の様子。
数字がぴょこぴょこ変わりまくるのを期待していたのに、実につまらないというかなんというか。
こうなると、考えられる原因はただ一つ。ドライバが駄目、以上。
まぁ確かにベンチ取ってみると絶対値が低めということもあるが、Dual時は少なくとも「体感では」問題ない。
そうなると、Single時のドライバの挙動に問題があるとしか思えない。
◇
で、ここまで書いてふと思いついた・・・。思いついただけで何の証拠も無いのだが。
もしかしてCatalyst、Single Display時には780Gの2Dアクセラエミュを使い、Multi Display時には全部CPUが面倒を見る、なんて構造になっていやしないだろうか。
そして、780Gの2Dアクセラエミュは死ぬほど遅いので、CPU丸投げ状態のMulti Display時の方がCPU負荷は上がるものの快適に動く。
何でこんなことを思いついたかというと、もっさり問題解消のためにある設定が効くという話があるので。
具体的にはWindowsの設定のDisplayのところにある「ハードウェア アクセラレータ」スライダを一番右(普通)から一つ下げるというもので、確かにこれ効くんですよ、試してみたら。
で、コレは文字通り、ハードウェアが持っている機能(の一部)を使わなくする設定なんでね。
Radeon HD世代からは、単体ボードですら2Dが遅ぇ!という話が時々聞こえてきたりもするし。
統合型でメモリ帯域もダイ面積も限られている780G(HD 3200)ではその影響は更に大きくて、という解釈も個人的には出来なくもない、ですな。
2Dベンチネタ、最終章。
さて、このところうだうだと続いてきた2Dアクセラレーション絡みのネタ、今回が最終回ですよ。
#もっさりネタは続きます。
というのは、秋葉原をうろうろしていたら、かなり状態の良い中古のGeForce 7600GTが激安になっていたので、思わずゲットしてしまったので。
2D(GDI)のハードウェアアクセラレーションを装備した最終世代GeForce、7シリーズの中堅モデルですな。
#実は購入の決め手は2Dがどうこうではなく、DualDVIなVGAがこの値段で買えたから、だけど。
ということで、部屋に戻って早速ベンチ。VGAとドライバ(ForceWare90)以外の環境は以前の8500GT/8400GSの時(ForceWare176)と一緒なので、見比べてみて下さいな。
| VGA | GDI | Text | Square | Circle | BitBlt |
|---|---|---|---|---|---|
| GeForce 7600GT | 11484 | 1156 | 3393 | 3125 | 3610 |
| GeForce 7600GT DualDisplay | 8166 | 1118 | 3006 | 2719 | 1323 |
| VGA | D2D | 10 | 100 | 500 | 1000 | 5000 | 10000 |
|---|---|---|---|---|---|---|---|
| GeForce 7600GT | 9440 | 611 | 540 | 318 | 199 | 52 | 27 |
| GeForce 7600GT DualDisplay | 8710 | 583 | 522 | 308 | 178 | 48 | 24 |
GeForce 7世代+2桁ドライバの効果てきめんなのがDirect2D。こりゃすげぇや。
あと、前回と違ってD2DベンチでもDualDisplay有効化で数字が明らかに変化したので別に記録。
一方、GDI周り。TextとCircleの速度はさすがGDIアクセラレーションが効いてるだけあるが、Squareは逆に遅くなっている。
そして、BitBltの速度はやや良いものの、激差ということでもない。
◇
以上の結果とネット上に数多ある各種ベンチ結果と突き合わせた結果、自分の中で出た結論。
GDIアクセラレーションについて。確かに文字描画等はハードウェアアクセラレーションを持ってた方が圧倒的に有利だが、四角描画では逆にCPUに仕事させた方が速かったりする。
総合的に見ると、GDIアクセラレーションの有無にこだわる必要は無いと思われる。
但し、最近のRadeonに見られる妙に遅かったり一部機能がバグってたりというのは論外。・・・つかどうせドライバのバグだろ?とっとと直せや>AMD。
BitBltについて。メモリ速度も多少影響はあるが、それよりメモリ幅が圧倒的な意味を持つ。VRAMメモリ幅が64bitは核地雷、逆に 256bitあるGF9600GT(ファンレス限界・・・補助電源要るけど)ではもう一ランク上が狙える。
但し、こちらもRadeonは・・・う~ん。つ~か、ドライバの品質はホントどうにかならんのか・・・
Direct2Dに関して。もう泣く子もキレる(何だそれ)違いが実際にあります、としか言い様がない。
ごく限られた用途とはいえ、目的によってはD2Dのパフォーマンスが実際に大きく影響する場面も存在するので、そういう場合はやはり「古めの一品」を掘り出すしかない。
・・・以上をまとめると、こうなる。
Direct2Dを本気で使う「よっぽど特殊」な環境でもない限り、WindowsXP環境を理由にGeForce 7シリーズやRadeonX1シリーズを選択する理由はない。
但し、「よっぽど特殊」な環境では、やはりGF7やRadeonX1に価値はある。
ということで。
◇
個人的に一番意外だったのは、メモリクロック400MHzと700MHzという圧倒的な速度差が、2D周りのベンチでは殆ど見えてなかったこと(無いワケではないけど)。
少なくともGeForce系の場合、128bit/400MHz DDRってのは「世間的に恥ずかしくない最低限度の2D速度」を確保するのに丁度いい目安、なのかも。
◇
以下、12/5追記。
色々いじっていたらうっかり(笑)ForceWare178を入れてしまったので、SingleDisplayの状態だが軽くベンチ。
| VGA | GDI | Text | Square | Circle | BitBlt |
|---|---|---|---|---|---|
| GeForce 7600GT FW178 | 10012 | 1189 | 3666 | 1719 | 3438 |
| VGA | D2D | 10 | 100 | 500 | 1000 | 5000 | 10000 |
|---|---|---|---|---|---|---|---|
| GeForce 7600GT FW178 | 3485 | 465 | 320 | 130 | 75 | 17 | 9 |
・・・えっと、最新のForcewareって最新のチップに最適化されてるのね、と分かる数字ですなコレは。
まず、GDIに関しては思ったより落ちないな、というのが感想。Circleが半分以下に落っこちてたりするので、ドライバの挙動が違うのは間違いないが、それでも昨今ではバリュークラスのこのCPUでこの数字が出せるなら、ソレほど気にすることでもないかと。
それに、8500GTとほぼ同条件で比べてもBitBltに明確な速度差が出ているのは、やはりメモリ速度差が有意ということでしょう。
対して、とんでもないことになっているのがD2D。というか、絶対性能では勝ってる筈の8500GTと比べてここまでボロ負けするとはね・・・。いやはや、ハードウェアアクセラレーションは偉大だ。
Tags: 2DonGPU
