El desarrollo de software para el microprocesador Cell implica una combinación de prácticas de desarrollo convencionales para el núcleo PPU compatible con PowerPC y nuevos desafíos de desarrollo de software con respecto a los coprocesadores SPU con funcionalidad reducida.
Linux en dispositivos móviles
Se adoptó una estrategia basada en software de código abierto para acelerar el desarrollo de un ecosistema Cell BE y proporcionar un entorno para desarrollar aplicaciones Cell, incluyendo un compilador Cell basado en GCC, binutils y una adaptación del sistema operativo Linux. [ 1 ]
Octopilador
Octopiler es el compilador prototipo de IBM para permitir a los desarrolladores de software escribir código para procesadores Cell . [ 2 ] [ 3 ] [ 4 ]
Portabilidad del software
Adaptación de VMX para SPU
Diferencias entre VMX y SPU
La tecnología VMX (Vector Multimedia Extensions) es conceptualmente similar al modelo vectorial proporcionado por los procesadores SPU, pero existen varias diferencias significativas.
El modo Java de VMX cumple con el subconjunto de la Especificación del Lenguaje Java 1 del estándar IEEE predeterminado , ampliado para incluir la compatibilidad con IEEE y C9X donde el estándar Java no ofrece ninguna solución. En una implementación típica, el modo que no es Java convierte los valores desnormalizados a cero, pero el modo Java activa un emulador cuando el procesador encuentra un valor de este tipo.
El manual IBM PPE Vector/SIMD no define operaciones para coma flotante de doble precisión, aunque IBM ha publicado material que implica ciertas cifras de rendimiento de doble precisión asociadas con la tecnología Cell PPE VMX.
Intrínsecos
Los compiladores para Cell proporcionan funciones intrínsecas para exponer instrucciones SPU útiles en C y C++. Las instrucciones que difieren solo en el tipo de operando (como a, ai, ah, ahi, fa y dfa para la suma) suelen estar representadas por una única función intrínseca de C/C++ que selecciona la instrucción adecuada en función del tipo de operando.
Adaptación del código VMX para SPU
Una cantidad considerable de código VMX ( Altivec ) desarrollado para microprocesadores IBM Power , en particular para la versión PowerPC de macOS , puede adaptarse para su uso en la SPU. La viabilidad de la adaptación depende del grado de funcionalidades específicas de VMX utilizadas, que pueden ser desde sencillas hasta poco prácticas. Sin embargo, las cargas de trabajo clave suelen ser compatibles con la arquitectura de la SPU.
En algunos casos, el código VMX existente se puede portar directamente. Si el código VMX es muy genérico (hace pocas suposiciones sobre el entorno de ejecución), la traducción puede ser relativamente sencilla. Los dos procesadores especifican un formato de código binario diferente , por lo que se requiere, como mínimo, una recompilación. Incluso cuando existen instrucciones con el mismo comportamiento, no tienen los mismos nombres, por lo que esto también debe mapearse. El kit de desarrollo de IBM incluye funciones intrínsecas del compilador que automatizan gran parte de este mapeo.
En muchos casos, sin embargo, no existe una instrucción directamente equivalente. La solución alternativa puede ser obvia o no. Por ejemplo, si se requiere un comportamiento de saturación en la SPU, se puede implementar añadiendo instrucciones adicionales para lograrlo (con cierta pérdida de eficiencia). En el otro extremo, si se requiere la semántica de punto flotante de Java, esto es prácticamente imposible de lograr en el procesador SPU. Para realizar el mismo cálculo en la SPU, podría ser necesario escribir un algoritmo completamente diferente desde cero.
La similitud conceptual más importante entre VMX y la arquitectura SPU radica en que admiten el mismo modelo de vectorización . Por este motivo, la mayoría de los algoritmos adaptados a Altivec suelen adaptarse con éxito también a la arquitectura SPU.
Explotación de tiendas locales
La transferencia de datos entre los almacenes locales de diferentes SPU puede tener un alto costo en términos de rendimiento. Los almacenes locales de cada SPU pueden aprovecharse mediante diversas estrategias.
Las aplicaciones con alta localidad, como los cálculos de matrices densas, representan una clase de carga de trabajo ideal para los almacenes locales en Cell BE. [ 5 ]
Los cálculos en flujo continuo se pueden gestionar de manera eficiente mediante la segmentación por software de las transferencias de bloques de memoria utilizando una estrategia de almacenamiento en búfer múltiple. [ 1 ]
La caché de software ofrece una solución para los accesos aleatorios. [ 6 ]
Las aplicaciones más sofisticadas pueden utilizar múltiples estrategias para diferentes tipos de datos. [ 7 ]
Referencias
- El proyecto Cell en IBM Research
- Compilador optimizador para un procesador CELL
- Utilización de tecnología de compilación avanzada para aprovechar el rendimiento de la arquitectura Cell Broadband Engine.
- Tecnología de compiladores para arquitecturas escalables. Archivado el 29/01/2009 en Wayback Machine.
- 1 2 "Un entorno de código abierto para el software del sistema Cell Broadband Engine" (PDF) . Junio de 2007.
- ↑ Utilización de tecnología de compilación avanzada para aprovechar el rendimiento de la arquitectura Cell Broadband Engine , IBM Systems Journal, 23/10/2017, archivado del original el 11/04/2006.
- ↑ "Tecnología de compiladores para arquitecturas escalables" . IBM Research . 2006-01-20. Archivado del original el 2008-03-20 . Consultado el 2025-06-11 .
- ↑ Stokes, Jon (26 de febrero de 2006). "El Octopiler de IBM, o por qué la PS3 se está retrasando" . Ars Technica . Consultado el 11 de junio de 2025 .
- ↑ "Procesamiento sinérgico en la arquitectura multinúcleo de Cell" (PDF) . Marzo de 2006.
- ↑ "Uso de tecnología de compilación avanzada para aprovechar el rendimiento de la arquitectura Cell Broadband Engine" (PDF) . Enero de 2006.
- ↑ "Cell GC: Uso del procesador sinérgico celular como coprocesador de recolección de basura" (PDF) . Marzo de 2008.
- Arquitectura de celdas BE
- Compiladores
- Vaporware