web-dev-qa-db-fra.com

Qu'est-ce que VRAM est utilisé exactement?

Mon ordinateur portable a un joli GPU avec une mémoire vidéo dédiée. Mais j'ai remarqué tout en jouant à Minecraft que l'ordinateur ne semble pas être en utilisant cela pour quoi que ce soit. Selon le responsable de la tâche Windows, il suffit d'environ 100 MB d'environ 100 Mo, alors qu'il mange environ la moitié de ma RAM régulière.

J'avais pensé que VRAM serait utilisé pour stocker des modèles et des textures et des trucs, ce qui réduirait la demande de RAM régulière; Si c'est vrai, les textures et les modèles doivent être beaucoup plus petits que ce que je pensais. (Notez qu'il s'agit d'une installation fortement modée, avec des modèles et des textures beaucoup plus complexes que votre standard Minecraft.)

Si ce n'est pas vrai, quoi est VRAM utilisé? Y a-t-il quelque chose que je puisse obtenir mon ordinateur pour mieux l'utiliser?

17
Hearth

Video RAM=== est spécialement conçu pour stocker tout ce qui est nécessaire pour rendre une trame de vidéo. Lorsque les jeux de jeu, cela inclut des textures, des modèles et d'autres données spécifiques aux graphiques tels que les informations sur l'information et les cartes d'éclairage. Généralement. Généralement Aucun de ces données n'est stockée dans le système principal RAM Comme vous avez fait allusion, bien que VRAM ne soit pas spécifiquement conçu pour réduire la demande de RAM régulière.

Minecraft est un peu une bête différente que la plupart des jeux. Je suppose que vous jouez au Java version pour PC. Java est un langage de programmation (relativement) de haut niveau par rapport aux autres tels que c ou C++ que d'autres jeux seront couramment écrits. A cause de cela, Java= est intrinsèquement à un inconvénient lorsqu'il s'agit de répondre aux exigences d'utilisation de la mémoire. C'est pourquoi votre mémoire système principale prend un tel coup Exécution de Minecraft, un programme très intensif de ressources écrit en Java.

Je ne suis pas surpris que votre vidéo RAM Usage soit faible, cependant - et ne devriez-vous pas non plus. Comme il est seulement destiné à stocker des textures et des modèles, et Minecraft est, eh bien, un jeu basé Sur les cubes et les textures 16x16, je pense que vous pouvez réaliser pourquoi votre utilisation de VRAM est si faible.

35
Sam Forbis

Java Minecraft est un processeur lourd, mais le GPU a vraiment très peu à faire, graphiques-sage, il est très simple et les ressources graphiques sont très petites par rapport à ... Call of Duty. Quand je dis petit, je veux dire très petit, 100 Mo sonne à peu près bien.

En raison de la conception de "bloc" du jeu, vous pouvez remplir l'écran avec relativement peu de ressources nécessaires. C'est comme utiliser "Duplo Lego" au lieu de "Lego Technics".

Java est une langue "interprétée", ce qui signifie qu'il n'est pas compilé dans des instructions indigènes. Donc, quand il est exécuté, il a besoin d'une machine virtuelle pour obtenir les instructions (ou bytecode) dans quelque chose que le processeur comprendra. Votre CPU fait plus de travail que le GPU.

10
user1165206

Le Java VM, comme celui utilisé dans Minecraft semblera utiliser beaucoup de RAM au moyen de la manière dont il réservera de grandes morceaux de système RAM Avant de l'utiliser. Ceci apparaît au système d'exploitation comme application en utilisant réellement cela beaucoup de RAM. Java utilise son propre tas de mémoire qui fonctionne un peu indépendamment du système d'exploitation sur lequel il fonctionne. (Il utilisera toujours des appels pour la culture du tas)

Le chargement de la texture dans Minecraft est assez faible. Ce qui pourrait également se produire est la façon dont votre pilote OpenGL alloue des textures. Par exemple, dans OpenGL 3.3, des tampons GPU peuvent être mappés en mémoire de manière à ce qu'un écriture écrite et ultérieure sur cette section de mémoire lui entraîne l'apparition de VRAM de GPU automatiquement. La partie délicate de ceci est de savoir si ce tampon n'est vraiment véritablement du côté GPU, ou s'il est réellement sur le côté de la CPU et du GPU et que le conducteur la copie simplement d'un tampon à l'autre. La spécification OpenGL dit que le conducteur peut faire soit à sa discrétion. Le résultat est que le côté CPU/Java attribue beaucoup d'espace d'adresses pour le tampon et nous pouvons avoir deux copies du tampon: un du côté du processeur et un du côté GPU.

Il est également possible que le Java programme stocke toujours les images dans RAM dans son propre cache, puis le chargement/le décharge sur/depuis le GPU tel qu'il est nécessaire. Cela nécessiterait RAM Utilisation pour toujours être au moins identique sinon plus grand que VRAM Usage.

Des pilotes vidéo plus récents et des itérations de Support OpenGL HSA Architecture , qui permet à VRAM d'agir comme un cache - le programme ne "télécharge pas" une texture sur le GPU - il passe simplement une adresse mémoire à une texture déjà chargée, ou même références de la texture d'un fichier qui a été allouée à une mémoire virtuelle. Cela rend l'utilisation plus difficile d'évaluer la ressource, car maintenant au lieu d'utiliser simplement RAM ou VRAM, nous pouvons utiliser uniquement la mémoire gammes d'adresses Dans certains cas, et une partie de Ces gammes pourraient être affectées à RAM et certains sur le disque, et le VRAM pourrait apparaître sans limites ou utilisées de zéro depuis, en tant que cache, il ne stocke que des pages récemment utilisées qui pourraient changer de manière arbitraire!

8
user515655