O sea si influye como decis en sistemas lentos por ejemplo cuando la cantidad de memoria de vídeo utilizada por el juego es mayor que la memoria con que cuenta una tarjeta de video y esta empieza a utilizar la memoria RAM del sistema para cache de texturas, porque estamos hablando de una memoria mucho mas lenta que encima esta limitada al ancho de banda del canal PCI Express.
no realmente, influye tambien en el caso hipotetico que vos propones. porque estarias imponiendo un cuello de botella de todos modos.
Pero lo decía porque en el caso de la GTX 660 esa memoria aun tendría 48GB/s lo cual asumiendo que solo puede almacenar en ella 0.5 GB de texturas es mas que suficiente, mientras que con el frame buffer es distinto ya que estamos hablando de docenas de frames por segundo para presentar en pantalla, cada uno de ellos compuesto por sus multiples samples para obtener el anti-aliasing, cada uno de dichos samples con su back buffer, z-buffer, stencil buffer, etc. lo cual hace que prácticamente puedan llevar a tope el ancho de banda de la memoria.
ahi creo que estas confundido, todos esos buffers son SEPARADOS y no es que exista uno por cada frame. el frame buffer como su nombre lo dice un buffer que almacena los cuadros TERMINADOS solamente, es decir guarda la imagen a mostrarse tal y como aparece en la pantalla, es decir ya esta procesado. este frame es el resultado de las operaciones hechas con los demas buffers, pero no hay una instancia de cada buffer por cada cuadro. asi que de hecho es bien facil saber que tan grande es el framebuffer que tu tarjeta esta usando, es tu resolucion multipicada por la cantidad de bits multiplicado por cuantos cuadros tiene buffereados tu tarjeta a la vez. por
ejemplo para una resolucion 1080P a 32 bits de profundidad con triplebuffering activado.:
( 1920x1080)x32x3)/8 ) da 24883200 Bytes, esto es aproximadamente 24 Megabytes para el framebuffer. como ves, es en realidad una cantidad pequeña. el grueso de datos almacenados es de hecho todo el resto de buffers, en particular las texturas.
La textura en cambio hasta donde entiendo solo es almacenada y es cargada según se va requiriendo
noooo. eso es cierto SOLO en los juegos que usan texture streaming, pero en realidad solo se usa texture streaming cuando tenes juegos que ocupan cantidades exageradas de memoria. te lo voy a poner asi, de estas DESPRECIANDO de gran manera la forma en que se usan las texturas. cada textura que vez en pantalla tiene por lo menos tres versiones de si misma cargadas (para hacer algo llamado mipmapping) y eso es cuando es una textura plana. cuando tienen algun efecto de mapeado, teselado o shading, la cantidad requerida para cargar esa textura aumenta.
el comportamiento que vos decis se llama texture streaming y en realidad se ocupa porque en los juegos actuales, la cantidad de datos que necesita para generar la imagen muchas veces las texturas consumen (si se hiciera de la forma tradicional) muchos gigas mas de los que las tarjetas tienen. las texturas de rage por ejemplo son alrededor de veinte gigabytes. una imagen en rage facilmente puede llegar a tener cinco o seis gigas que sin texture streaming (John Carmack lo llama "Megatexture") no podrian cargarse en pantalla a la vez.
no como en el frame buffer que el uso es repetitivo e intensivo basado en la resolución, el antialiasing y la cantidad de fotogramas presentados por segundo,
no realmente, el tamaño del framebuffer solo cambia cuando cambias la resolucion y si usas double o triple buffering, segun la ecuacion que te puse arriba.
es interesante hacer mención a algo relacionado con esto y es el caso del Xbox 360 y el Xbox One que dedican una memoria pequeña pero muy veloz exclusivamente al frame buffer, lo cual le permite un buen nivel de anti-aliasing aun cuando el resto de memoria utilizada para video no sean tan veloz.
precisamente por lo que te estoy diciendo es que las consolas al tener resolucion fija podes predecir que tan grande va a ser tu buffer siempre y asi podes asignar esa cantidad de memoria especificamente.
A ver Goomba, justamente en resoluciones Altas es donde juegos exigentes,pueden llegar a usar mas 1,5gb, y creo que ese el tema que al sobrepasar es cantidad, vendría los problemas por tener ese controlador funcionando a 64btis, que eso implica menos ancho de banda, por lo tanto una reducción en el rendimiento, obviamente mientras no sobrepase va a ir normal como si nada.
esque mira, creo que no has entendido como funcionan internamente las tarjetas de video. el problema NO es que se tope la memoria o no. el problema se da solo y exclusivamente cuando el chip de video tiene que acceder a dos direcciones de memoria que estan en el mismo controlador, SIMULTANEAMENTE.
la tarjeta, en un ciclo de trabajo, NO puede acceder a toda la memoria a la vez. en el caso de la 660 la tarjeta puede acceder solamente a 192 bits de esos dos millones y pico de bits que tiene de memoria por ciclo. ENTONCES, si logras distribuir tus datos de manera que cada controlador te de un bloque de esos 192 bits no tenes problema, el problema es cuando mas de un grupo de bits estan en el mismo controlador, esto no pasa en tarjetas que tienen cantidades de memoria y cantidades de bits que son potencias de dos. pero cuando NO son potencias de dos, pero si cuando tenes que poner dos chips de memoria por controlador, porque solo podes acceder a uno de los dos por ciclo. ENTONCES, la solucion esta en distribuir la memoria de manera que las situaciones donde tu gpu pida dos grupos de memoria del mismo controlador sea la menor cantidad de veces posibles. el algoritmo es relativamente facil, simplemente le decis que si un grupo de bits esta asociado a otro, que NO lo ponga en el mismo controlador.
También hay que recordad que cada contralador tiene asignada su memoria, asi que no se puede distribuir la carga,
esque SI se puede. si no se pudiera distribuir como se reparten los datos dentro de la memoria de un sistema, programarlo seria imposible. lo que pasa es que vos te imaginas que dentro de la tarjeta estan el vergo de chunches integros, acordate que todos esos datos son unos y ceros. siempre y cuando lleves un registro de donde esta cada cosa, podes partir todo en pedazos pequenisismos para ser procesados.
siempre a uno por ley le tocaría 2 memorias mas, por lo cual iría mas saturado cuando se USE ese extra (512), así que físicamente no se puede hacer nada, solo aumentado el Bus a 256bits o asigno un multiplo que seria 3gb, es mas si no tengo mal entendido hay Gtx 660 de 3gb.
si se puede hacer algo. implementas un algorimo de balanceo de carga.
Luego llegaría la optimizacion por software, que pudieran reducir ese cuello gestionando mejor los datos, pero eso imposible hasta donde tengo entendido porque se tuviera que trabajar abajo nivel, y eso jamas va apasar en PC por la cantidad de hardware.
NOOOO esa optimizacion se hace en el scheduler del GPU, esa optimizacion es por HARDWARE.