- ベストアンサー
オンボードグラフィックにおけるメモリ使用量について
UMA方式のオンボードグラフィック環境にてVRAMを利用するアプリケーションを実行した場合、1つのプロセスが使用するメモリ(タスクマネージャー上のプライベートワーキングセット等)には、VRAMとして使用している量も含まれているのでしょうか? また、参考となるようなページがありましたら、教えて頂けると助かります。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何目的なのかが分かりませんが・・・。ゲームか何かかな? 含まれません。厳密にはメインメモリに含まれることがあるビデオチップならば、svchostなど別のプロセスになる可能性が高いです。 そもそも同じ領域をUnifiedで利用していても、ビデオメモリというのは、メインメモリとは別物として管理されています。 UMA(Unified Memory Architecture)では、たいていの場合予めパソコンの電源投入時にビデオメモリとして割り当てるメモリ領域(アドレス)をBIOSやEFI側で指定しており、その領域は汎用メモリ空間としてはカウントされません。これは、一緒にして、その都度割り当てると入出力の優先度が高いはずのビデオ演算が滞る危険やアプリケーションとビデオ処理が同じアドレスを参照してクラッシュする恐れがあるためで、表示が出来なくなる恐れがあるためです。 ただし、ビデオメモリとしてではなく、バッファーとしてアプリケーション(CPU)がCGキャプチャを管理している場合は、そのプロセスのワーキングセットまたは、カーネルメモリの一部にそれが含まれます。 要は、グラフィックスチップが介在していて、そのハードに一任されているエリアでは、ビデオメモリから外れることは原則としてありません。(例外としてそれをドライバやハードが認めている場合はあり得ます) OSの識別上はメモリのSPD情報を元に何ギガを積んでいる使っているとカウントすることはできます。即ち、4GBのメモリから512MBを使えるとしても、OS上は4GBと表示されます。 しかし、物理メモリの合計としてタスクに表示されているメモリは、ビデオメモリが差し引かれて表示されます。即ち、上記の例で言えば、タスクマネージャー上では、3.5GB相当の割り当てしかないのです。 もし、これ以外の方法でメインメモリをキャッシュする場合は、OSの機能やドライバの機能によってそれをコントロールすることになります。そのため、アプリケーションの占有ではなく、特定のAPIやカーネルドライバが占有することになり、そのAPIやカーネルドライバが一部の領域を取得することになります。即ち、指示を出したソフトプロセスが占有している扱いにはならないのです。 いかがでしょうか? 尚、メインメモリとは異なり、ビデオメモリは描画を司るメモリとなり、ディスプレイに対してビデオカードが対の関係となります。アプリケーションはビデオカードやビデオメモリと一対一の関係とはなりません。 簡単にいえば、2Dであればソフトを起動したからといって、ビデオメモリの消費が増えることはないのです。ビデオメモリの消費量は、2Dなら解像度の縦×横×ビット数(階調色数)÷8=必要なメモリ容量Byteとなります。即ち、いくら画面を表示しても2Dであれば必要なビデオメモリ量は変わりません。 3Dならば、縦×横×奥行および陰影処理に必要なバッファ数×ビット数÷8となります。この場合には、ソフトによってジオメトリやZバッファなどの奥行、および精細度などを決めるメモリが必要となります。 尚、3Dで動作が遅い場合は、たいていビデオメモリの不足よりも陰影処理に必要なGPU(グラフィックスプロセッサ性能)が絶対的に不足しています。
その他の回答 (1)
VRAMはOSの管理するメインメモリアドレスエリアにはありません。 タスクマネージャでは見えないでしょうねえ。
お礼
回答ありがとうございます。
お礼
とても詳しく説明して頂けて感謝です。 ありがとうございました。
補足
OpenGLを利用して大量の画像を読み込んで描画するアプリケーションを作成しているのですが、ビデオカード搭載環境とオンボード環境では、同一アプリケーションでもプロセスが使用するメモリ量が大きく違っていました。 また、WMPにて動画を再生した場合も、オンボード環境の方がメモリ使用量が大きくなっている為、可能性として思い浮かんだものが、質問内容となります。