por Mesias-X » 12-08-2005 00:42
http://www.anandtech.com/video/showdoc.aspx?i=2453
*El punto de una consola es jugar juegos, si bien al usuario de PC le interesa el benchmark al de consola le interesan los juegos.
*Son los desarrolladores los que tienen que preocuparse por que consola es mas rapida o que hardware es mejor y como usarlo. Pero a los usuarios de consolas poco nos importa si el CPU de PS3 es la mejor cosa, o 360 posee una GPU mas rapida.
*Usted puede tener la consola mas rapida del mundo, pero si los juegos no estan alli de poco le servira y no importa realmente el hardware.
*Igualmente a estas palabras previas siempre hay un deseo de comparar hardware entre ambas consolas. Desafortunadamente las pocas comparativas que hay son hechas por los mismo fabricantes de las consolas en una tentativa por ganar el mercado en forma temprana, o hechas por los usuarios fanaticos de una marca; lo que lleva a corromper los datos que se dan.
*Dado que Nintendo aun no ha dado ningun dato de su sistema entonces tampoco de puede hablar mucho a nivel comparacion. Lo que deja dos competidores en el analisis.
*No se busca con este articulo coronar un ganador o determinar que plataforma tendra los mejores juegos. Esta solo para contestar preguntas que los usuarios tienen sobre estas plataformas.
*Habiendo dado este prefacio comienza el analisis:
*La meta mas importante de todo sistema es el balance en todos los niveles. Los ejemplos numerosos mostrados de los sistemas pueden hacer desequilibrios de arquitectura en el funcionamiento real. Un FSB chico puede hacer morir de hambre a un sistema cuando tiene CPUs de alta velocidad interna.
*GPUs sin el ancho de banda requerido pueden hacer temblar al sistema cuando se llega a sus fillrates maximos sin importar cuan grande puedan ser.
*Realizar un sistema equilibrado en PC es posible, aunque solo si usted dispone de un capital ilimitado. Un CPU chico aun con la mejor tarjeta de video poca mejora significa o aun significa un funcionamiento peor que un sistema con mejor GPU pero CPU mas acorde.
*Con las consolas por el contrario el sistema se diseña para ser estable de origen dentro del presupuesto que se le quiere dedicar.
*Estos comentarios tienen razon de ser porque un fabricante de una consola nunca pondra un hardware especifico mas rapido en una consola que el que el resto de su hardware pueda aprovechar. Hacer lo contrario es dinero perdido. Poner un CPU de gran alcance con un GPU de bajo nivel es perder dinero.
*Viendo lo que Sony y Microsoft han hecho podemos decir que cada consola es equilibrada dentro de todo. Cada una con sus ventajas y debilidades.
*Es incorrecto decir que el CPU de PS3 es mas alcance que el de 360 solo porque al aislarlos el primero llega a mas numeros que el otro.
LAS CONSOLAS Y SUS CPUs
*Las CPUs de PS3 y 360 a pesar de compartir algunos elementos comunes luego son muy diferentes.
*La CPU de 360 es de 3 cores Power PC G5 custom de fines generales. Estos cores pueden ejecutar cualquier tipo de codigo y lo hacen de manera relativamente bien.
*La CPU de PS3, el CELL, tiene un solo core de fines generales (el PPE) de base muy similar a uno de los cores de 360 sumado a 7 cores mas de proceso sinergico especializados en ejecutar ciertos tipos de codigo.
*Intel considera que a futuro lo necesario es el uso de uno o dos cores genericos para todos los fines. A futuro Intel plantea el uso de cores especializados (a pesar de sus duras criticas a CELL) a ciertas tareas pero considera que recien por el 2015 sera la epoca adecuada para este tipo de CPU mas que todo porque el proceso de fabricacion en 32nm podria ser viable para incluir estos cores dentro de los CPU actuales de 90nm
*Los creadores de CELL tuvieron que hacer grandes sacrificios para crear CELL a 90nm fuera del tiempo en que deberia ser creada (2015) y al tamaño que deberia ser creada (32nm) para ser incluida junto a los CPU de 90nm de fines generales.
EL CPU DE 360.
*El CPU de 360 fue diseñado con 3 cores, no hay cores muertos en el CPU de 360 para mejorar el rendimiento de la produccion (en comparacion con el SPE muerto de PS3).
*La razon de elegir 3 cores es porque proporciona buen equilibrio entre la ejecucion de varios hilos y el tamaño de los datos. Segun Microsoft el punto de multihilos en esta generacion esta entre los 4 y 6 hilos simultaneos.
*El sistema esta construido en 90nm (igual que el CELL) y todos los cores son identicos a los demas, y muy similares al PPE de PS3 con algunas diferencias menores.
*La incorporacion especial de Microsoft en este CPU multiple es una extension del sistema de instrucciones VMX. En detalle Microsoft incorpora de punto-producto como parte del VMX-128 ISA
*Microsoft indico que no hay ninguna limitacion para que IBM incorpore este sistema en otros CPU, sin embargo ningun otro lo usa. Ni siquiera el CELL en su PPE.
*Los tres cores comparte una L2 cache algo pobre de 1Mb. Que puede parecer mucho para los juegos de un solo hilo de ejecucion, pero para juegos de multihilo es algo pobre y sera el principal limitador de funcionamiento.
*Cada core ejecuta 2 hilos simultaneos. Un total de 6 hilos que deja por cada hilo 170,66k de memoria para cada uno. En una comparacion con un PIV actual esto es muy poco ya que 1Mb lo tiene por un solo hilo y se espera que ese nivel de L2 suba en poco tiempo.
*El punto mas acertado e importante de 360 es que los 3 cores sean identicos. El desarrollador no tiene que preocuparse por como encajar su codigo en cores de diferente naturaleza que crean hilos diferentes. El desarrollador puede elegir libremente el hilo que desea para ejecutar lo que desee.
*La otra ventaja del sistema de 360 es la portabilidad. Al ser de fines generales los cores de 360 los juegos de diferentes plataformas podran ser llevados a 360 y de 360 a las demas con un minimo proceso de optimizacion y cambios menores en el codigo. Esto le sera una gran ayuda con los juegos portados de PC a 360 o de 360 a PC. Sera como llevar trabajos de un MAC a un Intel-PC o de un Intel-PC a un MAC. HAbra diferencias cierto, pero el modelo no cambia mucho.
*Pero no se puede decir lo mismo con PS3. Portar un codigo de 360 a PS3 seria recargar sobre un unico PPE de un solo hilo lo que 3 cores de 2 hilos cada uno pueden hacer y el rendimiento del PPE de PS3 seria muy bajo especialmente para los juegos que usen el multihilo de 360. Aunque PS3 tiene potencial que podria ser usado con cierto esfuerzo.
XENON VS CELL
*La primer demostracion real de PS3 es el motor Unreal 3.0 en su rueda de prensa. Segun Epic se pueden usar los SPE de PS3 para la aceleracion de ciertas tareas como logica de alto nivel (IA, fisicas o scripting).
*Pero afortunadamente Epic concluyo que estos procesos de logica de alto nivel son muy poco del tiempo total de una CPU de un solo hilo como es el PPE y perfectamente este PPE podria tambien hacerlos y dejar a los SPE y GPU haciendo otras cosas.
*Segun Epic se pueden usar los SPE para aceleracion de fisicas, sonidos, sistemas de particulas y algunos otros procesos (pero estos ultimos requieren mucha mas experimentacion).
*La opinion de Epic es alejada de la mayoria del sector desarrollador que ve en los SPE un agregado completamente inutil y que no se aprovecharan para nada, siendo que deberia haber mas PPEs de fines generales que harian mejor las cosas y menos SPEs.
*Para la mayor parte de areas donde Unreal 3.0 usa los SPE son bastante predecibles, aceleracion de sonido por ejemplo y otras tareas especialziadas donde los SPE serian utiles. Pero es un dato curioso el intentar enfocar los SPE a fisicas en lo referente a calculo multiple de colisiones con varios objetos.
*No entiendo bien esta parte:
[quote]One method of implementing collision detection in a game is through the use of a Binary Search Partitioning (BSP) tree. BSP trees are created by organizing lists of polygons into a binary tree. The structure of the tree itself doesn't matter to this discussion, but the important thing to keep in mind is that to traverse a BSP tree in order to test for a collision between some object and a polygon in the tree you have to perform a lot of comparisons. You first traverse the tree finding to find the polygon you want to test for a collision against. Then you have to perform a number of checks to see whether a collision has occurred between the object you're comparing and the polygon itself. This process involves a lot of conditional branching, code which likes to be run on a high performance OoO core with a very good branch predictor.
*Desafortunadamente los SPEs no trabajan con predictores de ancho de banda. Le es imposible al desarrollador saber de antemano cuanto ha de tardar un calculo en un SPE en terminarse y compararlo con los demas calculos de los SPEs restantes y el PPE.
*Tambien el otro inconveniente es que los calculos en los SPE son dependientes de los demas calculos en un codigo complejo y no se equiparan de manera estable dando lugar a que un codigo deba esperar al otro.
*Seria sin embargo posible detectar los resultados de antemano y equipararlos. Pero eso requeriria de un acercamiento diferente al problema con el uso de algoritmos de deteccion pero que son mas comunes en 360 y PC que en PS3.
*Aparentemente Epic encontro la manera de trabajar utilizando los SPE en sus codigos de fisica. Si se estructura bien este sistema el CELL no seria un PPE util y 7 SPE que no se usan para nada.
*El hecho es que bien aprovechando los 7 SPE en paralelo la aceleracion de fisicas en PS3 seria mayor que en 360 gracias a la especifica naturaleza de los SPE.
*Microsoft se refirio a los 7 SPE como una manojo de circuitos inutiles cuando hablo a las desarrolladoras. El hecho es que el Unreal 3.0 logro usar los SPE para aceleracion de fisicas, actualizaciones de animacion, particulas, y aceleracion de audio. Aunque no muchos desarrolladores seguiran los pasos de Epic, pero los que quieran lograr los resultados de Epic si.
*El fondo es que Sony no pasaria el 75% de su presupuesto en un hardware inutil de 7 SPE que no se usan. El hecho es que los SPE tiene uso, la pregunta es ¿los desarrolladores se lo daran?.
*El hecho es que el desarrollo de multihilos en juegos multiplica el tiempo y costos de desarrollo entre 2 a 3 veces. Y la cantidad de multihilos de PS3 no hace la tarea facil para los desarrolladores.
EN ORDEN:
*En un mundo perfecto usted puede usar el multihilo para mejorar el rendimiento en todo lo posible.
*Pero en este mundo hay limitaciones. Los cores de 90nm de Intel y AMD caben 2 en condiciones normales y buenas. 360 tiene 3 cores y CELL tiene 9 (aunque realmente son 8) en 90nm. Eso genero una base compleja individual.
*El problema es que a pesar de los multhilos de 360 y PS3 con sus diferencias, aun asi lo que logren se realizara mucho mas lento que los simple hilo de un PC de escritorio con un solo hilo pero mayor ancho de banda y apoyo de memoria L2.
*Lo peor del caso es que los limites de estas CPUs molestaran sobre las GPUs limitando su funcionamiento.
*Esta otra parte tampoco la entiendo bien...habla de que programar en multihilo es un lio barbaro en los cores de 360 y el PPE de PS3 por problemas en los recopiladores que actualmente se usan para CPUs de un solo hilo.
[quote]As we discussed in our Cell article, in-order execution makes a lot of sense for the SPEs. With in-order execution as well as a small amount of high speed local memory, memory access becomes quite predictable and code is very easily scheduled by the compiler for the SPEs. However, for the PPE in Cell, and the PowerPC cores in Xenon, the in-order approach doesn't necessarily make a whole lot of sense. You don't have the advantage of a cacheless architecture, even though you do have the ability to force certain items to remain untouched by the cache. More than anything having an in-order general purpose core just works to simplify the core, at the expense of depending quite a bit on the compiler, and the programmer, to optimize performance.
Very little of modern day games is written in assembly, most of it is written in a high level language like C or C++ and the compiler does the dirty work of optimizing the code and translating it into low level assembly. Compilers are horrendously difficult to write; getting a compiler to work is a pretty difficult job in itself, but getting one to work well, regardless of what the input code is, is nearly impossible.
However, with a properly designed ISA and a good compiler, having an in-order core to work on is not the end of the world. The performance you lose by not being able to extract the last bit of instruction level parallelism is made up by the fact that you can execute far more threads per clock thanks to the simplicity of the in-order cores allowing more to be packed on a die. Unfortunately, as we've already discussed, on day one that's not going to be much of an advantage.
*En PS3 el uso de SPE es mas que un desafio, pues es hardware especializado y los SPE no satisfacen bien el codigo general. Los recopiladores aptos para este sistema simplemente no existen y cada programador tendria que crear uno en particular que le sirva lo que seria todo un desafio.
*Este año se vio la transicion de CPU mas rapidas de un solo hilo a CPUs mas lentas de varios hilos en el mundo del ordenador. Ahora este movimiento llego al mundo de las consolas.
*Las consolas deben tener una esperanza de vida de 5 años. El uso de multihilos tiene logica si dentro de 2 años en el mundo del ordenador este cambio esta completo.
*El problema es que todos los juegos de hoy son de simple hilo y por ejemplo en caso de 360 sus multihilos recien seran usados cuando los juegos cambien a esa modalidad.
*El caso de PS3 es aun peor. Un solo core de un hilo de fines generales similar al de 360.
*Esto es realmente un problema porque estos cores (los 3 de 360o el PPE de PS3) son mas debiles que un actual PIV o Athlon 64 incluso siendo estos ultimos de velocidades de reloj mas bajas.
*En PC por ahora la base es el simple hilo y todo parece apuntar a que asi seguira siendo por un buen tiempo. Pero en 360 y PS3 el multihilo es una garantia de origen, pero ¿cual de las dos plataformas es mejor para introducir a los desarrolladores y sus juegos en el uso de multihilos?
*Mirando todas las versiones parciales de juegos de 360 y PS3 no solo vemos que ofrecen una mejor fisica o IA pero que no aprovechan mejor el multihilo. No vemos como el ragdoll esta mejorado o como la tierra cambia por el efecto de un rayo sobre el suelo.
*El hecho es que casi todos los juegos desarrollados para 360 parecen estar desarrollados para PC sobre un solo hilo y no los 6 que 360 tiene.
*Como mucho algunos desarrolladores han partido las fisicas en IA en otro hilo separado, pero la mayor parte del trabajo corre por el primer hilo.
*Lo cierto es que el uso adecuado del multihilo podria posibilitar a las consolas venideras para posicionarse con un PC high-end de hoy con un solo hilo de trabajo.
*Se calcula que dos de los cores de 360 al menos por el primer año de vida del sistema no seran usados y todo correra por un solo core y como mucho dos hilos de trabajo. Aunque tambien se especula que el resto de los cores y sus 4 hilos sean usados como hilos ayudantes de las 2 tareas que realiza el primer core y podrian acelerar el funcionamiento de sus tareas con recursos ociosos.
*Estos hilos suplementarios usados en funcion de ayudantes podrian balancear el funcionamiento total de la plataforma.
*Hay que tener presente que 360 usa aun DVD9. Hoy los desarrolladores con 4,5 GB van sobrados. Pero tiene que tenerse en consideracion que los desarrolladores del 2006 contaran con el mismo espacio que tenian en el 2001 para juegos. Y en el 2010 9Gb pueden ser un poco escasos.
Aunque nadie prohibe usar dos DVD9. Aclaro yo, sigo sin entender la fascinacion de no tener que usar mas de un solo disco que tienen algunos. El CD en PC entonces esta muerto, sus juegos deberian ser inferiores, pues se usan CD desde el 93 mas o menos.*Lo bueno es que 360 con sus tres cores y varios hilos generales pueden usar los hilos sobrantes para realizar descompresion de datos en tiempo real y hacer que el DVD9 sea mucho mas grande de lo que parece.
*Usando algoritmos avanzados de compresion/descompresion de datos 9Gb seran mas que suficientes. Sumese que los codecs de audio y video comprimidos son los conocidos de Microsoft asi que no sera un problema. Aunque esto llevara uno o dos hilos dedicados a esa tarea.
*Otra idea interesante es la codificacion de audio digital. En Xbox Microsoft utilizo un DSP costoso para crear la condificacion en tiempo real del Dolby 5.1. Esto ofrecio un sistema donde pocos cables simples lograban el 5.1 en perfecta calidad.
*En 360 esta tarea correra seguramente por alguno de los 6 hilos disponibles y le reduce a Microsoft la necesidad de comprar un DSP costoso para su consola y simplifica el puente de salida de audio de 360.
*Pero lo mas importante en las nuevas consolas es el GPU, la verdadera batalla de poder y rendimiento sera en ese ambito.
*El 360 tiene 3 veces mas poder que el PS3 en fines generales. 1 o 2 hilos solamente de un core de 360 superan al PPE de PS3.
*PS3 tambien usara sistemas de compresion/descompresion de audio y video. Solo que esta tarea sera hecha por los SPE. No habra necesidad de hardware adicional para estas tareas.
EL ATI XENOS:
*Podemos decir que el Xenos es puramente interesante. Tiene dos partes fisicas, una que contiene lo tradicional de toda GPU, ALUs y demas energias de proceso y otra con una memoria de alta velocidad de NEC en 10Mb especialmente dedicada a tareas del eje Z y plantilla de color, como el AA conectada al sistema del GPU a 32GB/s pero sobre datos de origen ya comprimidos asi que este ancho de banda del autobus seria aun mucho mas grande.
*En el resto del sistema el ancho de banda entre modulo Edram y resto del GPU sera de 256Gb/s.
*Muchos del ancho de banda de un GPU se va en generar y manejar el color asi como los datos Z que mueven el framebuffer. ATI espera eliminar este embotellamiento moviendo esta tareas de la memoria central de 512MB GDDR3 de 700Mhz a 22Gb/s a la Edram.
*Con esto se logra que ese ancho de banda quede casi totalmente libre para texturas y demas tareas graficas.
*El GPU en 360 actua como puente norte para el sistema y esta en el centro de todo.
*Hay 10.8Gb/s hacia arriba y abajo entre GPU y CPU. El resto del sistema tiene adentro 500Mb/s de ancho de banda.
*Para que se hagan una idea de la ventaja de este sistema el GPU puede leer datos directamente de la cache L2 sin problemas. Esta tradicion de GPU y CPU ligados se uso en Xbox con total exito.
*Una principal diferencia entre lo visto en PC y Xenos es que las ALUs de pixel shader y pixel vertex no son separadas sino unicas.
*Shader y vertex funcionan en una misma pieza de hardware y no en piezas separadas.
*Tampoco lo entendi bien, pero lo que dicen es algo como que cada desarrollador podra enfocar libremente a que quiere dedicar recursos y problemas especificos mas que estar limitado por lo que por defecto trae de pixel vertex y pixel shader la placa de video.
[quote]There are 3 parallel groups of 16 shader units each. Each of the three groups can either operate on vertex or pixel data. Each shader unit is able to perform one 4 wide vector operation and 1 scalar operation per clock cycle. Current ATI hardware is able to perform two 3 wide vector and two scalar operations per cycle in the pixel pipe alone. The vertex pipeline of R420 is 6 wide and can do one vector 4 and one scalar op per cycle. If we look at straight up processing power, this gives R420 the ability to crunch 158 components (30 of which are 32bit and 128 are limited to 24bit precision). The Xbox GPU is able to crunch 240 32bit components in its shader units per clock cycle. Where this is a 51% increase in the number of ops that can be done per cycle (as well as a general increase in precision), we can't expect these 48 piplines to act like 3 sets of R420 pipelines. All things being equal, this increase (when only looking at ops/cycle) would be only as powerful as a 24 piped R420.
What will make or break the difference between something like a 24 piped R420 and the unified shaders of the Xbox GPU is how well applications will lend themselves to the adaptive nature of the hardware. Current configurations don't have nearly the same vertex processing power as they do pixel processing power. This is quite logical when we consider the fact that games have many more pixels displayed than vertices. For each geometry primitive, there are likely a good number of pixels involved. Of course, not all titles will need the same ratio of geometry to pixel power. This means that all the ops per clock could either be dedicated to geometry processing in truly polygon intense scenes. On the flip side (and more likely), any given clock cycle could see all 240 ops being used for pixel processing. If game designers realize this and code their shaders accordingly, we could see much more focused processing power dedicated to a single type of problem than on current hardware.
ATI is predicting that developers will use lots of very small triangles in Xbox 360 games. As engines like Epic's Unreal Engine 3 have shown incredible results using pixel shaders and normal maps to augment low geometric detail, we can't tell if ATI is trying to provide the chicken or the egg. In other words, will we see many small triangles on Xbox 360 because console developers are moving in that direction or because that is what will run well on ATI's hardware?
Regardless of the paths that lead to this road, it is obvious that the Xbox 360 will be a geometry power house. Not only are all 3 blocks of 16 shaders able to become vertex shaders, but ATI's GPU will be able to handle twice as many z operations if a z only pass is performed. The same is true of current ATI and NVIDIA hardware, but the fact that a geometry only pass can now make use of shader hardware to perform 48 vector and 48 scalar operations in any given clock cycle while doing twice the z operations is quite intriguing. This could allow some very geometrically complicated scenes.
*ATI esta prediciendo que los desarrolladores utilizaran triangulos muy pequeños en los juegos de 360 como en Unreal 3.0 para aumentar el detalle y el sistema unificado mejora ese uso.
*Pero, ¿veremos en 360 este efecto porque es lo que los desarrolladores usaran a futuro o porque ATI incorporo un sistema que es util para mover eso?
*Realmente no importa. Es notorio y evidente que Xenos es una casa de poder geometrico no solo porque los Shaders puedan convertirse totalmente en Vertex sino tambien porque Xenos puede manejar dos veces tantas operaciones del eje Z que lo que hoy se puede en los sistema tradicionales. Esto es muy intrigante al punto que puede dar lugar a ver escenas geometricas realmente muy complejas y jamas vistas.
*Otro detalle es que el funcionamiento del sistema de shader unificado tiene specs mas altas que las del Dx9 y es necesario para aprovecharlas usar una mejora del API de Microsoft.
[quote]One of the key aspects of performance for the Xbox 360 will be in how well ATI manages threads on their GPU. With the shift to the unified shader architecture, it is even more imperative to make sure that everything is running at maximum efficiency. We don't have many details on ATI's ability to context switch between vertex and pixel shader programs on hardware, but suffice it to say that ATI cannot afford to have any difficulties in managing threads on any level. As making good use of current pixel shader technology requires swapping out threads on shaders, we expect that this will go fairly well in this department. Thread management is likely one of the most difficult things ATI had to work out to make this hardware feasible.
In the PC space, we are seeing shifts to more and more complex pixel shaders. Large and larger textures are being used in order to supply data, and some predict that texture processing will eclipse color and z bandwidth in the not so distant future. We will have to see if the console and desktop space continue to diverge in this area.
One of the key aspects of performance for the Xbox 360 will be in how well ATI manages threads on their GPU. With the shift to the unified shader architecture, it is even more imperative to make sure that everything is running at maximum efficiency. We don't have many details on ATI's ability to context switch between vertex and pixel shader programs on hardware, but suffice it to say that ATI cannot afford to have any difficulties in managing threads on any level. As making good use of current pixel shader technology requires swapping out threads on shaders, we expect that this will go fairly well in this department. Thread management is likely one of the most difficult things ATI had to work out to make this hardware feasible.