#33 El problema de programar para Cell, es que excepto el core principal, los demás no son autónomos... Osease... cuanto programas multicore... una de las cosas más habituales es crear threads que realicen cierta parte de trabajo específico, independiente, comunicandose con un programa principal... más que para comunicar resultados, mandar eventos, o dependiendo de la técnica empleada, incluso morir despues de realizar su trabajo, para que se cree otro thread que vuelva a realizar algo nuevo...
Asi se suele trabajar en multi-core cuando haces un proceso "complicado"... El problema de cell, que no tiene otros cores... es a su vez su gran ventaja... Y es que "esos" cores estan "especializados" sobretodo en cálculos de coma flotante. Són más rápidos que un core normal en eso... pero no son capaces de hacer todo lo que hace un core normal. Lo cual los hace más dependientes del core principal... Tienen que ser hilos muy especificos los que corran en esos cores... y siempre a "mando" del core principal...
Corres más en segun que cálculos pq tienes 5 cores extras aparte del principal. (2 no son utilizados por los juegos)... pero son 5 cores que cada uno de eso en cosas que pueden ejecutar, son más rápidos que el principal... Lo cual en ese idílico caso de que el juego necesitase de ese volumen de cálculos... puede hacer que un cell pueda correr más que incluso 9 cores de los de que cada xts tiene 3...
Pero la parte mala? Pues que los juegos no necesitan de tanto cálculo... Que el Cell es un tremendo procesador, y hace las decilicias de cualquier contador de Seti@home... Pero el juego necesita de ciertas cosas que no pueden realizarse en esos 5 cores que rodean al principal del Cell... haciendo que sea precisamente el procesador principal del Cell quien haga la mayor parte del trabajo.
Por eso un juego pensado para 360... Pensado en multicore con 3 cores iguales... lo que acaba pasando al pasarlo a ps3 es que TODO lo que 360 puede repartirse en 3 cores... lo acaba ejecutando el core principal de Cell... y para optimizarlo para ps3 a los trozos que más peso tienen en cálculo intentan extraerlos para poderlos ejecutar en los 5 cores colindantes al principal...
Lo que acaba sucediendo es que esos 5 cores acaban usandose poco, y el core principal acaba dividiendose en 3 para hacer el trabajo de los 3 hilos principales que habian craedo para 360... cayendo asi todo el trabajo en el principal de cell, haciendo que la ps3 sea mucho menos efectiva en capacidad de proceso que una 360.
Por ejemplo esta es la forma de trabajo de Ubisoft y es de la que más conozco porque por curioso que parezca se tienen más de un español en Montreal y el mundo es muy pequeño...
La otra forma de trabajo seria desde el principio trabajar pensando en un único core principal, y sacando de un único hilo los procesos pesados de cálculo a múltiples threads con calculos de los que realmente están especializados dichos cores del cell...
De esta manera se siguen desaprovechando y se hará siempre la potencia del cell,... pero estos procesos, al pensarse desde el pricipio, estan agrupados correctamente (si se diseña bien), aprovechandose mucho más el cell... (aunque si en lugar de 6 fueran 3 no habria ni pizca de cambio de rendimiento, ya digo que son más potentes en algo especifico que un juego nunca va a necesitarlo más que lo que necesita de su core principal).
Eso provocaria que al pasar dicho juego a 360... una cpu de 360 hechara humo moviendo el hilo principla, mientras las dos otras cpus se encargan de defenderse en los cálculos que en PS3 hacen rápidamente los 5 cores restantes... haciendo que en 360 se hagan más lentos...
Además al no distribuir la potencia uniformemente que seria lo idílico siendo las 3 cpus iguales... una cpu de 360 estaria haciendo todo el trabajo de la cpu principal de Cell, si nrealizar (teóricamente) nada de los cálculos que realizan las 5 extras de cell,... dejando eso a las 2 de 360 que solo realizarian ese tipo de cálculo,... algo que pueden hacer, pero no estan optimizadas para ello...
Lo que acaba sucediendo es que se aprovechan muchissimo menos las 3 Cpus... consiguiendo una capacidad de proceso inferior a la ps3...
Esto, según me explicaron es la teorica... En la práctica... la diferencia de hacer un juego de un modo o de otro... pese a que existe ventaja para una u otra tecnologia depende de como lo hagas... esa ventaja no es tanta para ninguno de los dos lados ya que al final, tal y como se programa y se diseña... acaban trabajando bastante parecido... no se divide suficientemente bien el trabajo, acaba realizando tanto en 360 como en ps3 la mayor parte del trabajo la CPU principal... y raro es el juego que acaba aprovechando más que en un 30% de mejora el hecho del multicore en ambas CPUS...
En cuestiones de tiempo según me dijo, es más facil diseñar el juego para 360 que para PS3 (no programar que es otra cosa)... Pero que luego pasar ese diseño a ps3 llevaba un trabajo extra, pero que si se hace bien se puede aprovechar bastante el cell si se hace un buen trabajo... mientras que tal y como se diseña un juego para ps3, hacerlo correr en 360 es facil... pero desaprovechandola... Y el problema es que habria que rediseñarlo practicamente entero para que la aprovecharla...
Asi que supongo que Konami ha tirado por la segunda forma... Pero conociendo los PES.. Dudo que pueda existir alguna diferencia de contenido entre ambos justificada en Hardware... yo lo veo como el típico juego que desaprovecha toda la parte de cálculo de ambos núcleos... tanto de 360 como de ps3.