Llevo unas semanas buceando en páginas para informarme sobre el Cell y entender, sobretodo, que pretende Sony con su estrategía para su próxima consola, ya que después del E3 me quedé bastante descolocado...
Poco a poco creo que he ido entendiendo un poco más la arquitectura del Cell BE y los problemas que plantea de cara a desarrollar para ella de forma eficiente...
Lo que más me llamó la atención es que no sirve de nada, para entender el rendimiento del micro, contar nucleos, Mhz. o antecedentes de la arquitectura que utiliza, ya que el meollo del asunto está en el bus que comunica las distintas pates del micro... y está allí el meollo, precisamente, porque cuantos más nucleos le pongas al micro, mejor tiene que ser la comunicación entre ellos y los accesos a la memoria, si no quieres que se vayan creando cuellos de botella... y aquí es precisamente donde STI nos la mete doblada... Intentaré explicar porqué.
Primero, una breve introducción del Element Interconnect Bus (EIB)... El EIB es la forma con la cual IBM ha "solucinado" la comunicación entre los distintos elementos y he entrecomillado lo de solucionado, porque como veremos más adelante, han tenido que optar por una solucióln de compromiso. El EIB corre a la mitad de frecuencia que el nucleo del procesador y puede cambiar un máximo de 96 bytes por cada ciclo de procesador o 192 bytes por cada ciclo del bus. El EIB tiene redes independientes para realizar la peticiones de otros componentes y para mover los datos de un elemento a otro (más adelante se explica un poco mejor esta "red independiente"), tiene 12 puertos de entrada/salida, uno para cada elemento ( 1 PPU, 8 SPEs, 1 MIC -memory interface controller- y un dos puertos para el BIC- bus interface controller- ) cada uno de estos puertos puede mover un máximo de 16 bytes por entreda y 16 bytes por salida por cada ciclo de reloj del bus. Hay 5 ACs -adress concentrators- que se encargan de prevenir las colisiones de datos entre los elementos y de que todas tengan la misma capacidad de acceso al bus... excepto cuando sucede una petición crítica a la memoria principal por alguno de los conponentes, en ese caso en módulo DA -data arb- gestiona esa petición crítica de manera prioritaria en el sistema ...Y ahora llega...
La tranferencia de datos sobre el bus se realiza de manera más elaborada... Por restricciones de tamaño del micro, se tuvo que optar por una solución para comunicar los datos entre elementos que no fuese punto a punto entre ellos, ya que la cantidad de tamaño que necesitaba el cableado dentro del micro y la disipación de calor que produciría, estaría fuera de los parámetros que se habían prefijado para un procesador de producción barata destinado a "consumer electronics"... ¿ cual fué la solución ? Optar por un bus de conexión en anillo.
Como podéis ver, esta conexión en anillo, en realidad consta de 4 anillos siendo cada uno de ellos una cadena que va conectando los puertos de datos, que antes se han mencionado, LOS DATOS SOLO SE PUEDEN MOVER EN CADA ANILLO EN UN SENTIDO, de tal manera que si en un anillo movemos los datos del PPE al primer SPE, no podemos luego moverlos de ese primer SPE al PPE POR ESE MISMO ANILLO. Por esta razón, 2 anillos transportan los datos en sentido antihorario, y dos en sentido horario... Bien hasta aquí creo que todo queda más o menos claro... seguro que alguno os habréis ya dado cuenta de una cosa... ¿ Si solo tenemos 2 pares de anillos... el resultado equivalente no sería muy parecido a tener simplemente 2 núcleos con 2 hilos cada uno ? Sí, ciertamente sería muy similar y efectivamente se estan desaprovechando las posibilidades que ofrecen los 9 nucleos... Por eso, los ingenieros de IBM incorporporaron una capacidad extra a cada uno de esos anillos... Cada anillo es capaz de realizar 3 tranferencias concurrentes... pero ESTAS NO SE PUEDEN SOLAPAR, es decir que si en un anillo en sentido horario se realiza una transferencia desde el PPE al SPE5, NO PODEMOS REALIZAR EN ESE CICLO DE RELOJ EN ESE ANILLO UNA TRANSFERENCIA QUE VAYA DEL PPE AL SPE1. Esto nos quita alguna limitación que la pregunta anteriormente formulada planteaba... pero no todas... Si bien es cierto que podemos realizar un máximo de 12 tranferencias simultáneas ( 3 por cada anillo ) también es cierto que llegaremos a ese número muchas menos veces que las deseadas, ya que las rutas que necesitarían seguir en muchos momentos los datos de cada anillo podrían generar solapes entre ellas. Os pongo un ejemplo de gestión del bus eficiente, que solo alcanza 8 tranferencias:
... Que es lo que implica esto... Las buenas noticias son que ciertos procesos podrán conseguir velocidades inimaginadas hasta hoy... Las malas es que el sistema también es capaz de generar una nueva familia de cuellos de botella y problemas de ejecución también inimaginados hasta hoy...
Ahora traslademos esto al mundo en particular que nos interesa... el de los videojuegos, ¿Que ventajas nos trae el Cell BE? En teoría muchas, se deberían poder hacer juegos más complejos que los conocidos hasta ahora... Pero en la práctica, hemos de poner la nueva mentalidad de programación que implica este chip en su contexto realista... ¿ Cuantas empresas querrán optimizar su código, hasta el punto de tener que reescrribirlo desde 0 para esta plataforma ?... ¿ Cuanto TIEMPO de optimización requeriran los programas para hacer un uso eficiente de esta arquitectura ?... Hay que recordar la, por lo general, "pereza" que genera en el mundo de los videojuegos la optimización y el uso de recursos de la manera más eficiente... Si no, no estaríamos poniendo constantemente como ejemplos de programación en la GC el RE4 y el Rogue Squadron... o en PS3 los MGS... o en XBox el Ninja Gaiden. Luego, sacad vuestras conclusiones... quizás ahora se entienda mejor porque Kutaragi dió marcha atrás con el tema de poner 2 cells, uno de procesador central y otro para gráficos... imaginaros la reacción de los programadores cuando pensaron que tenían que resolver esos puzzles de gestión que plantea el bus POR DUPLICADO y además, en un apartado como los gráficos, supuesto baluarte de las consolas de nueva generación, en el que probablemente pasaría más tiempo del esperado hasta alcanzar el nivel gráfico que, actualmente, consiguen alcanzar con una 9800...
Para ir acabando os dejo con las palabras del propio diseñador del EIB, David Krolac, cuando un propio compañero de diseño del chip, James Mikos, le preguntó por la solución de los anillos del EIB:
dW: That is actually -- we're very near the end of the time that we have for today. Is there anything you would like to add, that we haven't covered?
Mikos: I have one question for Dave. Let me ask you this. If I was to relate back, because I know you've got a lot of experience in buses and how to interconnect processors and things and you mentioned with the crossbar switch. From a design perspective, would it have been easier for you to do a crossbar switch? It's just the area is so much larger; the power is so much higher.
Krolak: Yes, the crossbar switch would be simpler because arbitration would basically be... there would be a path from everybody to a destination. You would only have to do arbitration based on the destination. Who wants to talk to a particular destination? And you get them routed through the network to that guy. It would be easier to deal with than these rings where its transactions for different destinations are on the ring, when can you schedule it on a ring? How do you keep two transactions or successive transactions from arriving at a destination at the same time?
Mikos: So it's kind of back to when dW asked you the question earlier and you used the analogy of the train. So I can have up to twelve trains on these four tracks at any one time. That's what your logic has to keep track of. In a crossbar switch, that would have been much simpler I think.
Krolak: Yes, it probably would have been simpler.
Mikos: So the reason you went with the ring structure is that it takes up much less chip area, although the crossbar switch would have been simpler, because it gives you the point-to-point interconnect, and you relieve the performance concerns with software in that you don't have to have this knowledge of who's going to who, at least in as much detail.
Krolak: Yes, there's just more wire than we had space for and all the related buffering.
Mikos: And power was a big concern, so it saves area, it saves power to do it this way.
Krolak: Yes.
dW: Thank you so much for joining us today.
Conclusiones finales:
- ¿Que es mejor 6 hilos de ejecución de la CPU de X360 o 8 transferencias de lo anillos del Cell?. Tened en cuenta el caracter específico de los SPEs y el carácter más generalista de los PPEs.
- ¿Realmente pensáis que porque se vayan a usar en superordenadores los Cell eso ya es indicativo de que en los videojuegos van a realizar un cometido igual de impresionante? Los superordenadores se utilizan para unas tareas muy específicas, y también en el diseño de ellos influye la relación calidad-precio... si el Cell BE justo destaca en lo que los superordenadores demandan se usaran... pero recordemos siempre que se usan, como ya he dicho para realizar cálculos muy específicos...
- ¿ No creéis que tanto la X360 como la PS3 tienen un diseño muy descompensado, con unas CPUs demasiado potentes para lo que, con el tiempo, podrán dar de sí las GPUs que montan ? Al final los fillrates de los chips gráficos, limitarán la potencia que puedan proporcionar las CPUs.
- ¿ Cuantos SPEs se necesitan para "emular" un PPE ? Porque es la pregunta que le asaltará a mas de un desarrollador "vaguete"... seguro que entendéis a donde quiero ir a parar con la pregunta... Sí, creo que, como en la generación anterior, va a existir un "mínimo común multiplo" sobre el que programar. De aquí a un año, refloto el hilo, ya lo veréis...
- En el diseño del Cell BE han intervenido, quizás demasidos factores ajenos al mundo de los viedojuegos... creo que esos factores han ido en detrimento de, quizás, un hecho incuestionable, que es que, para el gran público, la PS3, será la puesta de largo del Cell BE... si no demuestra lo que todo el mundo espera de él, quizás se comience a asociar ( para el gran público, no lo olvidemos ), el nombre de CELL BE con el de un Bluff... puedo imaginarme que más de un directivo pueda estar sudando con las consecuencias negativas de esto. No olvidemos que el envite que hace Sony es doble, ahí también está metido Blu-Ray... El binomio de lo que el gran público piense de esas tecnologías depende, en gran parte, del exito de PS3... una CONSOLA DE VIDEOJUEGOS con una GPU ajena a toda estrategía a largo plazo que pueda tener Sony en esos dos terrenos ( aunque quizás por eso, sony firmó un contrato de colaboración con NVidia para la futura PS4 )