[an error occurred while processing the directive]

【特別企画】
Windows Vistaの仕組みを学ぶ
【共有ビデオメモリ編】

TurboCache対応のGeForce 7100 GS


 Windows Vistaでは、「Windows Vista Display Driver Model」という名の新しいディスプレイドライバモデルが採用された。これにより、GPUの共有ビデオメモリの取り扱い方法が大きく変更された。

●システムメモリを活用するGPU

 GPUには、大きく分けてAGPやPCI Expressカードで提供される単体GPUと、チップセットに内蔵される内蔵GPUの2種類がある。基本的に前者は、ビデオカード上のGPU専用のビデオメモリを搭載し、後者は専用メモリを持たず、システムメモリの一部をビデオメモリとして利用する。

 後者は一般的にUMA(Unified Memory Architecture)と呼ばれ、BIOSもしくはビデオドライバによってシステムメモリの一部がビデオメモリ専用として確保される。

 BIOSで割り当てを行なうと、その分はOSから見えなくなる。例えば、システムメモリが1GBあるシステムにおいて、BIOSで256MBをビデオメモリとして割り当てると、OSは残りの768MBだけを認識、使用する。

 一方、同じシステムにおいてビデオドライバで256MBを割り当てた場合、OSはシステムメモリの利用可能な容量を1GBと認識するが、そのうちの256MBはビデオメモリ以外の用途には利用できず、BIOS割り当ての場合同様、768MBが実際に利用できる容量となる。

 これに加えて2004年頃からは、少量の専用ビデオメモリを持ちつつも、システムメモリの一部をビデオメモリとして使うタイプの単体GPUも現われた。NVIDIAのTurboCache、AMD(旧ATI)のHyperMemory対応製品がそれにあたる。

 TurboCacheやHyperMemoryといった技術が登場した背景には、ビデオカードのバスがAGPからPCI Expressへと移行し、バス転送速度が大幅に向上したことで、システムメモリ、すなわちノンローカルバッファでも以前より高いパフォーマンスが得られることと、専用ビデオメモリを減らすことでカードの価格を引き下げられるといった狙いがある。

●WDDMでビデオメモリの割り当て方法が変更

 これらの製品では、ディスプレイドライバが一定量のシステムメモリを、ビデオメモリ用に自動的に占有する。例えば、カード上には64MBしか搭載されていないくても、システムメモリから192MBを占有することで、ユーザー、そしてOSやアプリケーションからは256MBのビデオメモリを搭載しているかのように見える。

Windows XPにおけるオンボードで256MBを搭載するGeForce 7600 GTのプロパティ こちらはオンボードで128MBを搭載するGeForce 7100 GSのプロパティ。TurboCacheにより384MBがシステムメモリからビデオメモリ専用に割り当てられ、その合計量の512MBが表示されている

 Windows XPなどWDDM以前のOSでは、TurboCache、HyperMemoryを利用した場合、ビデオメモリの容量は、ディスプレイドライバによって、オンボードメモリとシステムメモリから占有した合計量だけが報告される。

 だが、Microsoftによれば、この数値は不正確なことが多いという。また、Windows VistaはWindows Aeroの採用により、デスクトップ画面の表示でもGPUの利用率が以前のOSよりずっと高くなり、システム全体のパフォーマンスは、グラフィックスサブシステムの性能、そして利用可能なビデオメモリの容量に大きく影響されるようになった。そのため、WDDMではビデオメモリの割り当てを正確に報告する仕組みが採り入れられた。

 これにより、例えばWindows System Assessment Tool (WinSAT)が利用可能なビデオメモリの容量に応じてPremium Aero GlassのON/OFFを行なったりというように、アプリケーションがGPUをより有効活用できるようになるというメリットが生まれる。

●TurboCache/HyperMemoryではデメリットが

 しかしながら、TurboCacheやHyperMemoryについては、この仕組みがデメリットとなっている。実際、NVIDIAのRavi Kaushik氏(Marketing Manager, Notebook PC Graphics)は、「Windows XPでは、TurboCacheのメモリマッピングや利用をドライバが完全に制御していたが、Vistaでは専用ビデオメモリと共有システムメモリのマッピングと利用をOSが管理し、ドライバが寄与するところはほとんど無い。そのため、『理論的』にはVistaでも専用ビデオメモリと共有システムメモリの構成によってはTurboCacheの効果が出るが、通常出荷されている製品のメモリ構成では実質的な効果は得られない」と述べている。

 ここで、WDDMでのビデオメモリ周りの種類について解説しておく。Windows XPでは、ビデオメモリとシステムメモリの2種類の棲み分けだけがなされていた。一方のVistaでは、ビデオカード上に搭載されたメモリを「専用ビデオメモリ」、システムメモリの内、ビデオ専用に割り当てられたものを「システムビデオメモリ」、システムメモリの内、ビデオおよびそのほかのアプリケーションからも利用できるものを「共有システムメモリ」と分類している。

 つまり、専用ビデオメモリとシステムビデオメモリがGPU専用で、共有システムメモリから必要に応じてGPU用にも割り当てられる形になっている。チップセット内蔵GPUの場合は、専用ビデオメモリを持たないので、BIOSで割り当てられた分がシステムビデオメモリになる。なお、TurboCacheやHyperMemoryに対応しない単体GPUでも、Windows Vistaでは共有システムメモリが割り当てられる。

 では、TurboCacheの場合はどうかというと、GPU用にシステムビデオメモリが割り当てられることはなく、共有システムメモリを利用できるに留まる。共有システムメモリであっても、GPUがこれを有効活用できればいいのだが、現状はそのようには見受けられない。

Windows VistaにおけるGeForce 7100 GSのプロパティ。専用ビデオメモリが128MB、システムビデオメモリが0MB、共有システムメモリが495MBで、利用可能な全グラフィックスメモリは623MB こちらはIntel 945GM Express内蔵GPUの場合。専用ビデオメモリが0MBなので、最低限の32MBがシステムビデオメモリとして割り当てられている こちらはGeForce 7600 GT。TurboCacheには対応しないが、共有システムメモリが495MB割り当てられている

 例えば、128MBの専用ビデオメモリを搭載したビデオカードの場合、1,600×1,200ドットのディスプレイ2つに問題なく画面表示できるが、専用ビデオメモリが64MBのGeForce Go 7400(TurboCache対応)を搭載したノートPCで、本体ディスプレイ(1,280×800ドット)に加えて、1,600×1,200ドットの外部ディスプレイに出力すると、Windows Aeroの透明化効果が自動的にOFFになってしまう。

 このGeForce Go 7400のビデオメモリの構成を見てみると、共有システムメモリとして256MBが割り当てられており、最大でビデオメモリは320MB相当になるのだが、実際には上記のデュアルディスプレイ環境に必要なサイズのメモリは割り当てられていないようだ。

 ベンチマークソフトの結果もこのことを裏付けている。GeForce 7600 GT(256MB)とGeForce 7100 GS(128MB)を用意して、Windows XP/Vistaそれぞれで3DMark06を実行し、Windows XPからVistaのスコアの落ち込み具合を表1と表2に示した。

 検証で使用したPCにはシステムメモリを2GB積んでおり、GeForce 7100 GSはWindows XP環境ではTurboCacheにより、ビデオメモリのサイズが512MB相当になる。Vistaでは、専用ビデオメモリが128MBで、共有システムメモリが495MBで、利用可能な全グラフィックスメモリは623MBとなっている。

【表1】GeForce 7600 GTの結果(▲はスコアが向上したもの)
  1,024×768ドット 1,208×1,024ドット 1,600×1,200ドット
3DMark Score 1.41% 1.04% 1.26%
SM2.0 Score 1.11% 0.38% 0.82%
HDR/SM3.0 Score 0.45% 0.08% 0.84%
CPU Score 3.27% 3.64% 3.14%
GT1 1.53% 0.35% 0.47%
GT2 0.69% 0.42% 1.13%
CPU1 3.20% 4.00% 3.20%
CPU2 3.21% 3.46% 3.21%
HDR1 1.61% 1.47% 1.89%
HDR2 ▲0.48% ▲0.93% ▲0.04%
Fill Rate - Single-Texturing 0.93% 0.78% 0.54%
Fill Rate - Muti-Texturing 2.19% 1.85% 1.02%
Pixel Shader 3.07% 2.80% 1.50%
Vertex Shader - Simple 0.20% 0.26% 0.39%
Vertex Shader - Complex 0.54% 0.48% 0.53%
Shader Partices (SM3.0) 0.12% 0.11% 0.18%
Perlin Noise (SM3.0) 1.55% 1.24% ▲1.04%
8 Triangles 1.96% 5.08% 1.95%
32 Triangles 1.19% 3.33% 0.77%
128 Triangles 1.99% 4.21% 1.60%
512 Triangles 1.45% 2.75% 1.00%
2048 Triangles 1.16% 1.16% 0.85%
32768 Triangles 0.58% 0.59% 0.68%

【表2】GeForce 7100 GSの結果(▲はスコアが向上したもの)
  1,024×768ドット 1,208×1,024ドット 1,600×1,200ドット
3DMark Score 13.15% 9.66% 8.92%
SM2.0 Score 13.50% 10.06% 8.61%
CPU Score 3.40% 3.53% 3.66%
GT1 5.54% 0.73% 3.54%
GT2 18.32% 15.16% 12.88%
CPU1 3.21% 3.21% 3.61%
CPU2 3.23% 3.47% 3.47%
Fill Rate - Single-Texturing 4.34% 10.07% 14.97%
Fill Rate - Muti-Texturing 0.23% ▲0.39% ▲0.42%
Pixel Shader 2.84% 3.12% 3.46%
Vertex Shader - Simple ▲0.86% 0.18% 2.10%
Vertex Shader - Complex ▲7.17% 6.11% 18.76%
Shader Partices (SM3.0) 6.14% 2.80% 2.61%
Perlin Noise (SM3.0) 0.33% ▲0.51% ▲0.45%
8 Triangles 11.31% 7.01% 2.72%
32 Triangles ▲3.46% ▲5.47% ▲5.24%
128 Triangles ▲3.39% ▲3.75% ▲3.56%
512 Triangles 0.84% 7.20% 5.96%
2048 Triangles 5.05% 15.58% 13.52%
32768 Triangles 13.37% 17.14% 17.49%

 表1を見るとTurboCacheを使わないGeForce 7600 GTの場合、スコアの落ち込みは誤差とも呼べるくらい小さなものに収まっている。しかし表2の通り、GeForce 7100 GSでは多くの項目で大きくスコアが落ち込んでいる。

 将来のアップデートでこの点が改善される可能性もあるが、現状ではTurboCacheやHyperMemory対応製品は、Windows XP環境に比べVistaで性能が落ち込むことを覚えておいた方がいいだろう。

□Windows Vistaのホームページ
http://www.microsoft.com/japan/windows/products/windowsvista/
□関連記事
【6月5日】Windows Vistaの仕組みを学ぶ【SuperFetch/ReadyBoost/ReadyDrive編】
http://pc.watch.impress.co.jp/docs/2007/0605/vistamech1.htm

(2007年6月14日)

[Reported by wakasugi@impress.co.jp]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
お問い合わせに対して、個別にご回答はいたしません。

Copyright (c)2007 Impress Watch Corporation, an Impress Group company. All rights reserved.