PSX22 escribió:Quieres decir que de esos 14GB asignados ( en uso son 11GB) se copian 2 veces y pasan a la DDR4 ahi ? para que? si lo tienes en la memoria mas rapida posible ya retenido? No lo comprendo, porque meter duplicados ahi me he dado cuenta que "a veces" no es todo el tiempo da un tiron y se modifica esa memoria arriba o abajo ( no mucho) y eso rompe el frametime. Es molesto. Indicas que es porque la CPU necesita acceder a esos datos por eso los tiene en RAM por si acaso, algo no me encaja, pero 2 cuestiones: 1- No esta el REBAR activo para que la CPU vaya a pescar a la VRAM directamente? y 2- Porque cuando pongo texturas normales, no altas, entonces tambien hay 700MB en DDR4 duplicados ( en vez de 2GB que seria en alto) pero en ese caso no tengo penalizacion? ( es decir por el bus, lo que sea, cuando la cpu accede al bloque de 700MB tengo 0 penalizacion o remotamente minima, comparado con tener ahi 2.5GB ( texturas en alto) Me escama mucho. Entoces el meter cosas en DDR4 son dupicadas y no es que me haya quedado sin Vram a los 14gb no? es decir no esta desperdiciando 2GB de vram, sino que tiene suficiente con esa, pero al ser mas grandes, lleva tambien mas duplicadas texturas a la DDR4 y por eso pasa de 700MB a 2.2GB... es lo que estoy entendiendo
Porque en algunos casos es necesario. No sé si esto es un buen ejemplo porque son solo unos pocos bytes y no 2GB, pero lo uso igualmente porque es algo que hay que mantener duplicado sí o sí.
Piensa por ejemplo en las coordenadas del jugador dentro del mapa, y la dirección en la que está mirando y apuntando. ¿De qué sirve quitar eso de la memoria principal para dejarlo solo en la gráfica, por muy rápida que sea la VRAM? Sería más lento al final, porque la CPU necesita acceder a esos valores y modificarlos constantemente, cuando mueves el ratón para apuntar, cuando pulsas las teclas para moverte, o cuando el retroceso del arma hace que la vista se mueva hacia arriba. En lugar de leerlo desde la gráfica a memoria principal y borrarlo cada vez, es más sencillo mantenerlo por duplicado y listo. Como solo es necesario sincronizar el contenido en los dos sitios cuando se escribe (cuando se lee no hace falta), sigue siendo una ventaja tenerlo en memoria más rápida, ya que la gráfica también necesita esos valores para hacer su trabajo (para saber qué objetos tiene que dibujar, etc.). Pero sin quitarlo de la lenta.
No creo que ni mucho menos el tirón sea motivado solamente por eso, porque las escalas en las que se ve un tirón son, en el peor de los casos, milisegundos, mientras que los tiempos de acceso a RAM son de nanosegundos (50-60 en ram muy rápida, no más de 100-120 en RAM lenta). Quiere decir que estamos
6 órdenes de magnitud por debajo.Por dar un poco de contexto de cómo de grande es esta diferencia, entre un día (3600 x 24 segundos) y 1 segundo hay 5 órdenes de magnitud (redondeando 86K a 100K). Es decir, la diferencia entre los tiempos de acceso a la memoria "lenta" y el retraso que tiene que haber para que exista un tirón es de hecho menor que la proporción de la duración de 1 día y la duración de 1 segundo. Los tirones, especialmente si son pequeños, pueden tener mil causas, pero muy rara vez es la falta de VRAM ni el hecho de compartir datos, que es algo que hacen habitualmente todos los motores gráficos. Cuando falta VRAM "de verdad" en vez de un juego parece una presentación de PowerPoint, por muy potente que sea la GPU.
...otra cosa es cuando en lugar de unas pocas lecturas/escrituras pequeñas, se hacen miles. Cosa nada rara cada segundo que estás jugando. Pero en general no son cosas muy grandes, si se copian texturas en memoria principal son cosas relativamente pequeñas. 2-4GB hoy en día se podría decir que son cosas relativamente pequeñas. Pero vamos, que muchas veces un tirón de este estilo con hardware potente suele ser porque hay algún detalle no demasiado bien resuelto y no demasiado optimizado. Quizás con DDR5 o con overclock a tu RAM mejoraría, lo desconozco en este juego en concreto.
PSX22 escribió:Esclarecedor cuanto menos eso de la duplicidad es un descubrimiento para mi, pensaba que REBAR se encargaba de eso , y poder olvidar a la RAM yendo a lo mas rapido , aunque ahora que lo pienso REBAR es para que la cpu acceda a la VRAM completamente sin ir por fragmentos, y supongo que el motor de juego no puede cargarlo todo en GDDR6x ( en PS5 lo hace , porque no hay otra). Entonces con 24GB de la 4090 en ultra , me temo que nuevamente meteria 2GB en DDR4, teniendo como 12GB libres de vram, absurdo! eso nos lleva a tirones , porque no cargarlo todo en vram si es que hay de sobra? se me escapa pero es lo que hay, es como se comporta.
Realmente el REBAR lo único que hace es que, a la hora de mover "agua" entre dos piscinas, se pueda pueda usar un caldero grande en lugar de un vasito (que es lo que por defecto permite la especificación PCIe, porque cuando se diseñó no se pensaba en que a futuro habría que mover cantidades de datos tan grandes). Solo que cambiando "agua" por "datos", y las piscinas suelen ser la memoria principal y la VRAM. Pero realmente pueden ser datos generados por la CPU "al momento" que no estén en RAM, Casi cualquier dispositivo de entrada/salida en un ordenador se trata como si fueran direcciones de memoria, porque es lo más sencillo y viene de hace muchos años.
Y es como dices, con la 4090 en ultra seguramente esos mismos 2GB de datos duplicados se mantendrían porque el juego/motor gráfico está hecho así.
Saludos