Ver Mensaje Individual
  #1237 (permalink)  
Antiguo 21/04/2008, 13:19
Avatar de Sancho_Davila
Sancho_Davila
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Empire: Total War

Saludos a todos. Me presento: "Mi nombre es Sancho Dávila y fui aquél Maestre de Campo que guió a los Gloriosos Tercios Españoles en la batalla de Mock, en el motín de Alost, en..." ¡es coña! . Sólo soy un remoto descendiente suyo que hace lo posible por llegarle siquiera a los talones.

En fin, la cuestión es que llevo ya siguiendo y leyendo este foro largo tiempo (creo que más de 4 meses), sin intervenir por temor a escribir demasiado y descentrarme de mi apretada agenda diaria...pero que le vamos a hacer, la carne es débil y si adicionalmente le añadimos "Total War" aún más. El detonante sin duda han sido las dos grandiosas fotos nuevas que han hecho que se me caiga la baba hasta el teclado, habiéndo éste último cobrado vida propia para registrarse en este foro (si que tiene mala baba este jodío...).

Bueno, no me voy a liar a escribir como un poseso, así que me centraré un poco en lo que estaís discutiendo sobre el Hardware aplicado a videojuegos o aplicaciones gráficas en general. En principio, y basándome en mi experiencia de haberme cargado ya bastantes CPUs, placas base, GPUs, fuentes de alimentación, discos, etc. en mis oscuros experimentos, además de los arcanos conocimientos teóricos que he ido recopilando, puedo aportar lo siguiente: Desde el punto de vista teórico, lo que determina realmente el rendimiento de cualquier aplicación, y las aplicaciones gráficas no son una excepción, son dos factores: la propia capacidad de proceso y la capacidad de manejo de datos(léase ésto último como memoria+cachés+buses). (De lo que viene a continuación, lo que esté en cursiva son detalles técnicos que podeís no leerlos si os resultan farragosos.

1.- Sobre el primer factor decir que las propias GPUs incluyen su procesador gráfico, que implementa las microinstrucciones ( si la unidad de proceso de la GPU es microprogramada -CISC- , lo cuál ya no es tan normal como antes al darse la convergencia de procesadores hacia arquitecturas microcableadas - RISC ó CRISC en caso de que sea microcableada estaríamos hablando de instrucciones HW - ) ESPECÍFICAS de las propias aplicaciones gráficas. Por tanto, vuestra CPU, por muy potente que sea, sólo aporta un mero tránsito de instrucciones, ya que el verdadero procesado gráfico se hace en la GPU. Por suspuesto, esto no quiere decir que de igual la CPU que tengaís, si no que afecta en mucha menor medida al procesado gráfico (instrucciones tipo: transpón esta matriz de características de imagen o cosas por el estilo), que lo que afecta el propio procesador de la GPU. Mi consejo si quereís ayudar a vuestra GPU es que utiliceís procesadores AMD, ya que tienen una librería gráfica mucho más extensa y moderna que la de los procesadores Intel (siempre que comparemos gamas similares de procesadores, es decir gama ceteris paribus) y podrá "ayudar" en mayor medida a que vuestra GPU no se coma solita todo el "marrón". El procesador de la GPU puede ser el cuello de botella que haga que vaya lento un videojuego (Porque no tenga actualizada la librería gráfica -obsolescencia- ; o porque tenga un bus y/o unas cachés internas de la GPU lentas o de baja capacidad en comparación con la memoria o el procesador en sí de la propia GPU -cosa que suelen hacer para abaratar las GPUs más impresionantes y sacarlas como gama media, donde te encuentras con componentes muy buenos con otros no tan buenos como sería deseable- ;), aunque normalmente la causa es un desaprovechamiento de instrucciones por parte de los desarrolladores, que NO han optimizado el código para ahorrarse instrucciones redundantes. Un ejemplo muy tonto de ésto último es pintar píxel a píxel un cielo azul: imaginaos 10.000 píxeles del mismo tono de azul, donde UNA SOLA INSTRUCCIÓN de "setteo" a azul de los píxeles 1 a 10.000 se convierte en 10.000 instrucciones de setteo de UN SÓLO píxel en azul. Es decir, en vez de decir "Quiero estos 10.000 píxeles en azul", lo que hacen es decir "quiero el píxel uno en azul", "quiero el píxel dos en azul" ... así hasta el 10.000 ¿Kafkiano, no? Pues real como que estaís leyendo ésto.

2.- Si no seguís hasta el feneque de mi parrafada, continúo con el segundo factor: Los datos normalmente residen en almacenamiento secundario (discos duros, CDs, ...), por lo que para recuperarlos y operar con ellos hay que pasar por una de jerarquía de memorias. Esto quiere decir que desde el disco duro -que tiene mucha capacidad y es extremadamente lento- hasta llegar a la CPU -que tiene capacidad para un sólo dato y es extremadamente rápido- ha de existir una serie de memorias que hacen de intermediarias entre estos dos extremos, y esto es MUY IMPORTANTE tenerlo equilibrado para poder disfrutar de aplicaciones gráficas.La razón de que sea tan importante es que la aplicación gráfica utiliza una cantidad ingente de datos (los tan conocidos frames son en realidad unas matrices de coeficientes monísimos superpuestas unas a otras en una jerarquía de capas), no en vano, la arquitectura de las GPUs es SIMD -"Single Instruction Multiple Data"- según taxonomía de máquinas de Flynn. Si no está equilibrado, se formarán CUELLOS DE BOTELLA en los elementos en desequilibrio. Pues bien, para equilibrar la jerarquía de memoria, teneís que hacer que las cachés L1, L2 , el frontal-size-bus, la controladora DMA y la frecuencia de la RAM vayan en ese orden decreciendo en frecuencia(alias velocidad) y subiendo en capacidad (MBytes puros y duros). Por supuesto, el frontal-size-bus y la DMA no tiene capacidad de almacenamiento, así que sólo le aplica la parte de velocidad. Cuanto mayor sea la capacidad de las L1, L2 y RAM, y mayores sean las frecuencias de bus y DMA, mucho mejor, pero OJO, han de estar equilibradas. Para aclarar este extremo, pongo un ejemplo: Os rendirá mejor (normalmente) un PC con frontal-size-bus a 675MHz y RAM a 400MHz que un PC con fsb a 533MHz y la RAM también a 533MHz ó un PC con fsb a 400MHz y RAM a 800MHz. Esto es crítico a la hora de jugar, ya que cualquier evento que haga cambiar los datos mostrados puede hacer acceso a RAM o en el peor de los casos, a disco, con lo que si esto va lento, olvidaos de los 60 frames/s por mucha GPU que tengaís. Aclarar también que la memoria RAM de la propia GPU almacena gran cantidad de datos "cacheados", por lo que sí que es cierto que cuanto mayor memoria en capacidad y velocidad tenga la GPU, mejor. No obstante, la arquitectura de la GPU es como la de un ordenador, pero en miniatura, así que también le aplica el principio de la JERARQUÍA DE MEMORIAS. Por lo tanto, pillad la GPU más equilibrada que veaís dentro de la misma gama, aunque eso sí, uno nunca se resiste a babear ante el último "pepinazo" de N-Vidia o ATI. Mi humilde recomendación al respecto es que cojaís la inmediatamente anterior a la que acaba de salir, y dentro de ésta, la más equilibrada ( o también la que mejor se "overclockee"). Por si alguien se ha preocupado sobre cómo diantres se pasan datos de la RAM y la placa base a la GPU, la respuesta es PCI-express, que los pasa a 9,6 GB/s -realmente menos,porque reserva un tercio del ancho de banda al FireWire,pero bueno- así que por eso no os preocupeís, que el PCI-e va sobradísmo

Por último, y supongo que es obvio, pero las RAM que pongaís, por Dios, ponéndlas SDRAM DDR2 ó superior en módulos DIMM en la placa base, habilitando el doble canal. Una configuración muy chula son 4GB de RAM (que es el límite compatible con Sistemas Opertaivos de núcleo programado en 32-bit, como el Microplof Windows XP) en 4 slots DIMM a dobles canal (es decir, 1GB por slot) o en 2 slots (2GB por slot), DDR2 a 800 ó 1000MHz. NUNCA introduzcaís desquilibrios entre canales, siempre las RAM todas igualitas en capacidad y prestaciones, y a ser posible, todas del mismo horno (fabricante) . Con eso y un buen equilibrio de jerarquía de memoria vaís de puta madre con la parte de datos. Os recomendaría una placa base que tenga mínimo un frontal-size bus de 800MHz, y una DMA y North bridge a la altura de ese fsb (eso suele venir muy bien equilibrado en la placas, por lo que no es crítico). También, aunque es menos crítico, pillad un procesador con caché L2 de 2 ó 4MB con una frecuencia a frontal-size bus de 800 o 1000 MHz. Sobre la frecuencia de reloj de la CPU, os vale con lo normalito que hay ahora, que como bien comentábais, existen muy pocas aplicaciones que utilicen las dos unidades de control de procesos (bautizadas como "núcleos" por el siniestro marketing).En principio, no os comento nada sobre el bus de control entre los dos "núcleos" (vaya, estoy diciendo núcleo, ya me he convertido al lado oscuro...), porque por lo que he visto,para una frecuencia de reloj, suelen venir prefijados a un valor y no hay variedad de modelos respecto de esta característica técnica..

Ah! Y sobre discos duros, S-ATA. Los discos IDE antiguos dejadlos para el museo. El disco sólo afecta a las cargas y descargas masivas de datos cuando,por ejemplo, empezamos una batalla y tiene que cargar el escenario y las unidades. Las cargas posteriores desde disco no son frecuentes, pero puestos a mejorar, mejoremos todo.

En Resumen, lo que quiero decir en relación a la mejora de prestaciones para videojuegos es:
1.-Equilibrad la jerarquía de memorias del PC. Los datos son el factor crítico donde podeís influir.
2.-Elegid la GPU más equilibrada dentro de la gama.
3.-El procesador importa menos de lo que realmente uno piensa. No obstante, mejor AMD en cualquier caso.

Muchas gracias por haberlo leído todo.

Última edición por Sancho_Davila; 21/04/2008 a las 13:53