¿De qué se trató el procesador de la celda de la PS3 que hizo que sea tan difícil desarrollarlo?

El procesador CELL de la PS3 es un procesador muy complejo, con diez núcleos independientes que Sony pretendía que los desarrolladores utilizaran para ciertos fines (por ejemplo, un núcleo se ocuparía de los cálculos físicos, otro manejaría la IA, etc.) y también es una pieza de hardware patentada. con su propio conjunto de instrucciones y herramientas de desarrollo. La historia ha demostrado que cuando una empresa presenta una consola basada en hardware propietario, solo un puñado de desarrolladores puede y está dispuesto a gastar el tiempo y el dinero extra para aprender a programar bien para ello. La mayor parte del resto termina usando el hardware suficiente para lanzar un juego que normalmente no aprovecha al máximo las capacidades de ese hardware. (Esto es particularmente cierto para los juegos multiplataforma, ya que tienen un código común que debe compilarse en todos sus sistemas compatibles).

Básicamente, todo se reduce a la dificultad que tiene un desarrollador para trabajar para obtener un buen rendimiento de un sistema propietario frente a uno que usa piezas estándar. El principal competidor de la PS3, la Xbox 360, utilizó una arquitectura PowerPC que, si bien no era tan fácil como los sistemas basados ​​en x86, se conocía y documentaba significativamente mejor.

Según alguien con experiencia relevante, los núcleos SPU en el procesador de la célula son inhumanamente difíciles de programar.

PS3 solo tiene 1 núcleo de CPU que es posible entender con sentido común, el resto son núcleos de SPU auxiliares, que es solo un nombre elegante para VPU. Aquí hay algunas características convenientes para molestarte.

Solo es compatible con el procesamiento vectorial de 128 bits, debe codificar todo en operaciones vectoriales.

No comparte espacio de memoria con la CPU principal. Debe escribir su propia implementación de DMA para transferir datos dentro o fuera, y debe sincronizarlos manualmente.

Macro todo para un máximo rendimiento.

No escriba nada que pueda entenderse con lógica humana, optimice la mierda.

Opciones limitadas de depuración Básicamente, solo puede imprimir, lo que por supuesto todavía tiene que hacerse manualmente. Si su código DMA tiene errores. no tiene absolutamente ninguna idea de lo que salió mal, ya que ni siquiera puede generar información de depuración correctamente.

Está ejecutando cosas de multimedia / gráficos, cuando depura, básicamente ve fragmentos grandes de datos binarios, intente depurar eso.

Dado que se espera que los utilices por completo para poder competir con Xbox 360, TIENES que hacer todo lo anterior. Le mostraré algunas muestras de código de ese tipo en el futuro.

El código, la única función para los siguientes espaguetis es convertir RBGa en YUV.

El procesador CELL tiene múltiples núcleos, pero cada núcleo tiene funciones diferentes. Entonces la aplicación requiere un diseño similar al uso de múltiples GPU. La programación de la GPU en sí misma no es fácil, incluso en la era de OpenCL, por lo que la complejidad multiplicada no puede facilitar el desarrollo.