Nuestros artículos imprescindibles

05 noviembre 2008

Estrategias de éxito del software multinúcleo

La tecnología multi-núcleo es increíblemente poderosa, y desde su aparición, los desarrolladores de software se encuentran embarcados en la revisión de sus herramientas para aumentar el rendimiento y añadir nuevas características, a la vez que simultáneamente se consume consumo, coste y área en los paneles. Pero también es necesario que los desarrolladores aprendan nuevas técnicas de programación, tomen decisiones más cuidadosamente, y equilibren las nuevas herramientas. Para alcanzar el máximo rendimiento, por ejemplo, la carga de trabajo debe estar equilibrada entre los núcleos. Ese concepto se ilustra fácilmente. Imaginemos un sistema de dos núcleos en el que un código A funciona en un núcleo, y un código B, funciona en otro. Si el procesamiento de la información se concentra en el código A, uno de los núcleos estará sobrecargado y el otro estará infrautilizado.
Pero el software multinúcleo también requiere mecanismos de sincronización que gestionen recursos compartidos tales como la memoria compartida. La implementación de estos mecanismos de forma incorrecta puede provocar errores de ejecución, o hacer que el sistema se pare. Los mecanismos de sincronización pueden crear también cuellos de botella que limiten el rendimiento.

Elección del multiprocesador

Los modelos de multiprocesado pueden caer en dos campos básicos: Multiprocesado simétrico (SMP) y multiprocesado asimétrico (AMP). La diferencia entre ambos tecnologías podemos verla de la siguiente forma:

En la tecnología SMP, un simple OS funciona en todos los núcleos del microprocesador. Este OS trata los núcleos como una serie compartida de recursos. La tecnología SMP OS, equilibra de manera automática la sobrecarga del sistema, asignando procesos a cada núcleo basándose en esta sobrecarga. En contraste, la tecnología AMP restringe la carga de trabajo que puede distribuirse a cada núcleo. Hay tres métodos para implementar AMP: afinidad de procesadores, AMP clásico y virtualización
La elección del modelo de multiprocesado depende de la naturaleza de la aplicación. Algunas aplicaciones pueden tomar ventaja de la tecnología multinúcleo simplemente replicando el mismo procesado a través de cada núcleo. En estas aplicaciones la opción apropiada es AMP. La mejor opción es por el contrario SMP cuando la replicación no es una opción viable.
AMP clásico es una buena elección si la aplicación requiere tiempos de ejecución altamente determinísticos. AMP permite a los desarrolladores reservar recursos para procesos críticos, asegurando que estos recursos se ejecutan de manera predecible.
SMP trabaja muy bien con código nuevo, pero usar SMP con código convencional usualmente requiere rediseñar el software. Esto puede ser difícil debido a dependencias y otras limitaciones en el diseño del código original.
Uno de los mayores beneficios de los procesadores multinúcleo es que permiten la integración de software que previamente funcionaba en procesadores o sistemas separados. Sin embargo, este proceso es a menudo complicado por el hecho del software legado que se ha escrito en múltiples sistemas operativos. En tales casos la virtualización es una buena opción, que permite al desarrollador integrar OSs en una plataforma.

Bibliografía: Multi-core software. Strategies for success. Embedded innovator. Fall 2008

Palabras clave: Symmetric multiprocessing (SMP), Asymmetric Multi processing (AMP), processor affinity, classic AMP, multiprocessing model, deterministic execution times.

0 comentarios: