Te habrás dado cuenta, si miras en el administrador de tareas de Windows 10, de que el sistema operativo está tomando parte de la memoria RAM para darle más VRAM a la tarjeta gráfica, incluso aunque ésta sea dedicada y tenga su propia memoria. ¿Por qué sucede esto y cómo puedes evitarlo? A continuación te lo contamos todo.
Cuando en tu equipo no tienes una tarjeta gráfica dedicada con su memoria VRAM propia, es normal que el sistema asigne parte de la memoria RAM a la gráfica, ya que es necesario para que funcione. No obstante, cuando tienes una gráfica dedicada con su propia memoria, ¿por qué Windows sigue asignándole parte de la memoria RAM del equipo?
La memoria RAM compartida con la gráfica
Para ver lo que os estamos contando, tan solo tenéis que abrir el Administrador de tareas de Windows, acceder a la pestaña «Rendimiento» y seleccionar GPU en la parte izquierda.
Si os fijáis en la zona inferior, donde aparece la información de la tarjeta gráfica, aparece «Memoria de GPU dedicada» que es, efectivamente y tomando este ejemplo, la VRAM de la gráfica, 8 GB. Pero justo más abajo aparece «Memoria de GPU compartida«, donde aparece que se están utilizando 300 MB de 16 GB asignados, y de hecho justo a su izquierda aparece el término «Memoria de GPU», donde se puede ver que se están usando 4 de 24 GB, que no son sino los 8 GB físicos de la tarjeta gráfica sumados a los 16 GB adicionales asignados por Windows.
Esto significa que Windows está utilizando parte de la memoria RAM del equipo para asignárselo a la tarjeta gráfica pero, ¿por qué hace esto?
La memoria compartida es en realidad virtual
Para empezar os diremos que os os preocupéis, no es que Windows esté «robando» memoria RAM para nada (bueno, en realidad sí pero muy poca). La realidad es que esa memoria gráfica compartida, Windows la utiliza para la iGPU del procesador porque no tenemos la gráfica desactivada en la BIOS (así que si queréis que esto deje de suceder solo tenéis que ir a la BIOS y desactivar la iGPU, aunque no os lo recomendamos por si acaso).
En todo caso, desactivar la iGPU no es algo que recomendamos porque si en un momento dado falla la gráfica dedicada, estaremos bastante indefensos porque no podremos utilizar la integrada mientras tanto y necesitaremos, obligatoriamente, otra gráfica dedicada.
Si queréis hacerlo de todos modos, debéis entrar en la BIOS e ir al apartado de ajustes avanzados. A partir de aquí depende del fabricante de la placa base, pero normalmente tendremos que entrar en la configuración del chipset donde encontraremos algo relacionado con «Internal Graphics», donde podremos desactivarlo.
Esta pequeña porción de memoria RAM que Windows nos «roba» son en realidad unos pocos MB, no los 16 GB que tiene «asignados» porque no están asignados como tal, simplemente los tiene disponibles pero no consumidos para asignar a la gráfica en el caso de que fuera necesario. Y, un dato curioso, si en la BIOS seleccionáramos la iGPU como gráfica primaria pero teniendo una dedicada conectada, Windows utilizaría la VRAM de la gráfica dedicada para la iGPU. En cualquier caso, esto no es lo común, sino que utilice la DDR, por lo que siempre tenemos que tener claro que la VRAM que se asigna de esta manera no tiene nada que ver con la memoria dedicada de una tarjeta gráfica
VRAM de la GPU o VRAM con la RAM
En este caso es cierto que ganaremos rendimiento en escritura y lectura secuencial, algo donde la GDDR peca de un rendimiento muy pobre, pero es que su función no se basa en estos términos, sino en la copia, donde multiplica por varias veces el rendimiento de la DDR4 en Quad Channel, ni que decir de la diferencia con Dual Channel. Aunque la parte reservada para la iGPU de la memoria del sistema es a día de hoy minúscula, lo cierto es que las cantidades de ésta deben de incrementarse en poco tiempo debido al aumento del tamaño medio de la RAM y sobre todo de los requerimientos de las nuevas iGPU.
Así que lo esperable es que pasemos a ver 2 GB de asignación o quizás hasta 4 GB para los equipos que tengan 32 GB o más, cifras que en breve serán estándar en cualquier PC medio si el avance con las NAND Flash cumple sus plazos. En todo caso se llegará al punto en que las iGPU tendrán acceso totalmente coherente a la RAM con la CPU, esto evitará tener que tomar prestada parte de la RAM y las cantidades utilizadas en cada momento irán variando según la carga de trabajo.
GPGPU y el uso de la RAM por parte de la gráfica
Las GPUs a día de hoy no solamente se utilizan para renderizar gráficos, sino también para tareas de computación, donde en muchos casos necesita comunicarse en el mismo espacio de memoria que la CPU. La clave es que para que dos unidades de hardware se puedan sincronizar han de utilizar la misma memoria y es por ello que todas las GPU a día de hoy pueden trabajar en dos espacios de memoria:
- Un pozo de memoria no coherente con la CPU que corresponde a su memoria local o VRAM.
- Un pozo de memoria coherente con la CPU, que corresponde a la RAM del sistema.
Muchos programas a día de hoy utilizan las capacidades de la GPU no para renderizar gráficos sino como apoyo para la CPU, para ello hacen que esta interaccione al mismo nivel de memoria. Lo cual es posible con las unidades DMA de la GPU teniendo acceso a la RAM a través del puerto PCI Express.
El funcionamiento de ello es simple, la CPU invoca a la GPU a través de un programa Compute Shader, el cual es resuelto por la GPU que escribe de vuelta el resultado en la RAM del sistema en vez de su VRAM. Muchos algoritmos tienen partes que se aceleran no en una, sino en varias órdenes de magnitud cuando son ejecutados en una GPU respecto a hacerlo en la CPU.