Help and Support

文書番号: 940105 - 最終更新日: 2008年6月6日 - リビジョン: 4.1

Windows Vista ゲーム開発における仮想アドレス空間の使用について

目次

すべて展開する | すべて折りたたむ

概要

この更新プログラムにより、特定の状況における仮想アドレス空間の使用量が減少します。この更新プログラムをインストールすると、大容量のビデオ メモリが搭載されたハードウェア構成で実行されているアプリケーションが仮想アドレス空間の上限に達する可能性が低くなります。この更新プログラムにより、特定のハードウェア構成におけるアプリケーションの性能が向上する可能性があります。

この更新プログラムは、Windows Vista Service Pack 1 (SP1) に収められています。 最新の Windows Vista Service Pack を入手する方法または最新の Vista Service Pack がインストールされているかどうかを確認する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
935791? (http://support.microsoft.com/kb/935791/ ) 最新の Windows Vista Service Pack を入手する方法

上級ユーザー向けの詳細

この資料では、Windows ゲーム開発における仮想アドレス空間の使用について説明します。また、Windows Vista などの最新のオペレーティング システムでアプリケーションを実行した場合に発生する可能性がある問題について説明します。このうちのいくつかの問題を解決できる可能性がある更新プログラムに関する情報も掲載しています。これらの問題の関連情報については、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/whdc/device/display/WDDM_VA.mspx (http://www.microsoft.com/japan/whdc/device/display/WDDM_VA.mspx)
Windows Vista などの最新のオペレーティング システムでは、アプリケーションはそのアプリケーション専用の仮想アドレス空間で実行されます。通常、この仮想アドレス空間のサイズは、32 ビット アプリケーションでは 2 GB に固定されています。利用可能な仮想アドレス空間のサイズは、コンピュータに搭載されている物理メモリのサイズに関係しません。

メモリ割り当て、ファイル マッピング、およびアプリケーションによって読み込まれるライブラリはすべて、この仮想アドレス空間を消費します。アプリケーションの仮想アドレス空間がすべて消費されると、それ以降のこれらの処理は失敗します。すべてのアプリケーションにおいて、メモリ割り当てが失敗した場合の処理がコードに記述されている必要がありますが、このようなエラーが発生した場合に正常に復旧できないアプリケーションが数多く存在します。それらのアプリケーションでは、このようなエラーから復旧した後に、不安定になったり、応答が停止したりすることがあります。

既存のゲームやその他のグラフィック アプリケーションでは、アプリケーションが使用するビデオ メモリ リソースのコピー用に仮想メモリを頻繁に割り当てます。アプリケーションは、ビデオ メモリの内容が失われたときに、このコピーを使用して画面をすばやく復元します。たとえば、Alt + Tab キーが押されたときや、コンピュータがスタンバイ状態に移行された場合に、アプリケーションはこのコピーを使用します。通常は、アプリケーションがマネージ リソースを作成すると、DirectX ランタイムがアプリケーションの代わりにコピーを管理します。ただし、アプリケーション自身がコピーを管理することもできます。コピーに使用される仮想メモリは、アプリケーションが割り当てるビデオ メモリ リソースに正比例します。

最新の GPU (Graphics Processing Unit) では、512 MB 以上のビデオ メモリが搭載されている場合があります。このような大容量のビデオ メモリを活用しようとするアプリケーションでは、ビデオ リソースのメモリ上のコピー用に大量の仮想アドレス空間が使用される可能性があります。32 ビット システムでそのようなアプリケーションが実行されると、利用可能な仮想アドレス空間がすべて消費されることがあります。

DirectX 10 および Windows Vista の Windows Display Driver Model (WDDM) では、アプリケーションがリソースのコピーをシステム メモリ上に保持する必要はありません。代わりに、ビデオ メモリ マネージャによって、画面が遷移しても各ビデオ メモリ割り当ての内容が保持されることが保証されます。互換性を維持するために、Windows Vista では DirectX 10 より前のバージョンの DirectX の "デバイスの消失" をエミュレートして、アプリケーションから見える範囲の API 動作に変更がないようにしています。

ビデオ メモリを仮想化するために、Windows Vista のビデオ メモリ マネージャは各ビデオ メモリ リソースに仮想アドレス範囲を割り当てます。このアドレス範囲は、概念的には、アプリケーションで作成されるコピーと同様のものです。ただし、ビデオ メモリ マネージャは、アプリケーションよりも効率的にその処理を管理します。ビデオ メモリ マネージャは仮想アドレス範囲を使用して、遷移およびビデオ メモリのオーバーコミットを処理します。ただし、仮想アドレス範囲は通常、大容量のビデオ メモリを持つシステムでは使用されません。この仮想アドレス範囲が使用されない限り、これに対応する物理メモリは割り当てられません。これに対して、古いドライバ モデルで保持されるシステム メモリのコピーは、完全に物理メモリに対応付けられます。

アプリケーション自身がビデオ リソースのコピーをメモリ内に作成する場合や、DirectX 9 より前のバージョンが使用されている場合、仮想アドレス空間には、WDDM ビデオ メモリ マネージャによる仮想アドレス範囲とアプリケーションによるコピーが含まれます。DirectX 9 以前のグラフィック API を使用し、大容量のビデオ メモリを持つ GPU を対象にするアプリケーションでは、仮想アドレス空間が簡単に枯渇する可能性があります。

この問題に対処するために、ビデオ メモリ マネージャがビデオ メモリ リソースの内容を保持する方法が変更されました。この変更により、恒久的な仮想アドレス範囲が各仮想割り当てで使用される必要がなくなりました。新しい手法では、"ロック可能" として作成される割り当てだけが、アプリケーションの仮想アドレス空間内の空間を消費します。"ロック可能" として作成されない割り当ては、空間を消費しません。この手法により、使用される仮想アドレス空間が大幅に削減されます。これにより、大容量のビデオ メモリを搭載した構成で、上限に達することなくアプリケーションを実行することが可能になります。

この手法により、仮想アドレスの消費が削減されますが、2 GB の仮想アドレス空間の制限がなくなるわけではありません。多くのアプリケーションではこの 2 GB の制限にすぐに達します。他の原因によって、アプリケーションがこの制限に達する可能性があります。

更新プログラムの情報

下記のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。

Windows Vista (32 ビット版)

元に戻す画像を拡大する
ダウンロード
940105 パッケージ (http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=a156e265-40ff-468e-bba2-3d1e1929c416)

Windows Vista (64 ビット版)

元に戻す画像を拡大する
ダウンロード
940105 パッケージ (http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=18499035-f799-4f93-bb3c-db70e22e1c1e)

マイクロソフトのサポート ファイルをダウンロードする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
119591? (http://support.microsoft.com/kb/119591/ ) オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用して、配布ファイルのウイルス チェックを行っています。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

必要条件

複数のグラフィック カードを搭載した Windows Vista ベースのコンピュータを実行している場合は、「サポート技術情報」 (Microsoft Knowledge Base) の文書番号 936710 の資料に記載されている更新プログラムを先にインストールすることを推奨します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
936710? (http://support.microsoft.com/kb/936710/ ) 複数のグラフィック カードを搭載する Windows Vista ベースのコンピュータで DirectX 10 アプリケーションを実行したときにセカンダリ グラフィック カードがコンピュータで使用されない

再起動の必要性

この更新プログラムの適用後に、コンピュータを再起動する必要があります。

更新プログラムの置き換えに関する情報

この更新プログラムを適用しても、以前にリリースされた更新プログラムが置き換えられることはありません。

ファイル情報


Windows Vista (32 ビット版)
元に戻す全体を表示する
ファイル名バージョン日付時刻サイズプラットフォーム
update.mum該当なし2007/07/2802:271,788該当なし
x86_5e2dac6229b5926b0c74da835150f1a5_31bf3856ad364e35_6.0.6000.20648_none_42a29c9b7959cc08.manifest該当なし2007/07/2802:27696該当なし
x86_microsoft-windows-lddmcore_31bf3856ad364e35_6.0.6000.20648_none_aa48b77dff9d11aa.manifest該当なし2007/07/2802:278,958該当なし
cdd.dll6.0.6000.206482007/07/2711:1736,864x86
dxgkrnl.sys6.0.6000.206482007/07/2710:08621,056x86
Windows Vista (64 ビット版)
元に戻す全体を表示する
ファイル名バージョン日付時刻サイズプラットフォーム
amd64_ce07f9e62de28926f56e50610267ed82_31bf3856ad364e35_6.0.6000.20648_none_ff82e7b15cf29216.manifest該当なし2007/07/2802:27700該当なし
amd64_microsoft-windows-lddmcore_31bf3856ad364e35_6.0.6000.20648_none_06675301b7fa82e0.manifest該当なし2007/07/2802:319,223該当なし
update.mum該当なし2007/07/2802:271,798該当なし
cdd.dll6.0.6000.206482007/07/2712:1347,104x64
dxgkrnl.sys6.0.6000.206482007/07/2710:19878,080x64

この資料は以下の製品について記述したものです。
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Business 64-bit edition
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Ultimate 64-bit edition
  • Windows Vista Starter
  • Windows Vista Home Basic
  • Windows Vista Home Premium
  • Windows Vista Business
  • Windows Vista Enterprise
  • Windows Vista Ultimate
キーワード:?
kbvistasp1fix kbresolve atdownload kbfix kbexpertiseadvanced kbwinvistapostrtmfix kbqfe kbhotfixserver KB940105
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

サポート技術情報の翻訳