Optimización del número de hilos de ejecución para maximizar el rendimiento por watt de los sistemas de memoria transaccional hardware.
En los últimos años hemos sido testigos de un trascendental cambio de paradigma hacia arquitecturas de procesamiento paralelo, y los principales fabricantes han presentado productos que incluyen entre dos y ocho núcleos en un único chip. Sin embargo, la mayor parte del software no ha madurado lo suficiente como para sacar partido de estos nuevos recursos computacionales ofrecidos por los multiprocesadores en un chip (CMPs), en gran parte debido a la dificultad de la programación paralela.
Estos problemas suponen un gran problema, ya que no se puede esperar que el creciente número de transistores disponibles en el chip continúe siendo empleado para incrementar el rendimiento de los programas secuenciales con la misma eficiencia que en el pasado. La Memoria Transaccional (TM) es una prometedora abstracción sobre el modelo de programación de memoria compartida, y se presenta como una alternativa que trata de simplificar el desarrollo de programas multihilo.
TM puede aliviar muchos de los problemas que acarrea el uso de cerrojos como mecanismo de sincronización entre hilos. En un sistema TM, la sección crítica se encapsula en transacciones, delimitadas en bloques atómicos. El sistema TM subyacente se encarga de ejecutar concurrentemente dichas transacciones y detectar los posibles conflictos en el acceso a los datos compartidos, para crear la ilusión de que cada transacción se ejecuta de forma atómica y aislada con respecto al resto. En caso de existir conflictos irresolubles, una o varias de las transacciones implicadas deberán abortar, es decir, reiniciarán su ejecución.
Por otra parte, en el diseño de nuevos sistemas, la implicación del consumo energético está adquiriendo una mayor relevancia, actuando en muchas ocasiones en contra del rendimiento. La literatura en TM se ha centrado principalmente en la mejora del rendimiento, simplicidad e incluso flexibilidad de la TM. Sin embargo, el estudio de la eficiencia energética de estos sistemas se encuentra todavía en sus inicios.
Nuestro grupo de investigación ha publicado recientemente varios artículos que continúan esta línea. Primero analizamos el consumo energético de los sistemas HTM. En este primer artículo detectamos que existía mucho margen de mejora en el consumo energético de TM. Posteriormente hemos propuesto técnicas que mejoran el consumo de los sistemas TM sin afectar al rendimiento o incluso un nuevo protocolo de commit en hardware que mejora tanto el rendimiento como el consumo (paper pendiente de aprobación en el ICPP12).
Aunque algunas aplicaciones son totalmente paralelas y la mejora del rendimiento que se obtiene en comparación con la programación secuencial es directamente proporcional al número de núcleos del CMP, esto no es siempre así. La experiencia ha demostrado que el grado de paralelismo en la mayoría de las aplicaciones tiene un límite y el rendimiento obtenido por la paralelización ya no se incrementa en gran medida a partir de cierto número de hilos de ejecución e incluso puede resultar contraproducente para el rendimiento. Utilizar más núcleos implica aumentar el consumo del sistema. Si este derroche energético no es convertido en mayor rendimiento, el rendimiento por Watt decae considerablemente.
La línea de investigación para la estancia trata de maximizar el rendimiento por Watt con TM. Para ello el sistema detectará automáticamente el número óptimo de hilos de ejecución y deshabilitará los núcleos que no son necesarios. Es una técnica que permitirá reducir el consumo sin afectar al rendimiento o incluso llegar a un compromiso entre ambos.