Transactional memory on heterogeneous architectures

Si observamos las necesidades computacionales de hoy, y tratamos de predecir las necesidades del manana, podemos concluir que el procesamiento heterogeneo estara presente en muchos dispositivos y aplicaciones. El motivo es logico: algoritmos diferentes y datos de naturaleza diferente encajan mejor en unos dispositivos de computo que en otros. Pongamos como ejemplo una tecnologia de vanguardia como son los vehiculos inteligentes. En este tipo de aplicaciones la computacion heterogenea no es una opcion, sino un requisito. En este tipo de vehiculos se recolectan y analizan imagenes, tarea para la cual los procesadores graficos (GPUs) son muy eficientes. Muchos de estos vehiculos utilizan algoritmos sencillos, pero con grandes requerimientos de tiempo real, que deben implementarse directamente en hardware utilizando FPGAs. Y, por supuesto, los procesadores multinucleo tienen un papel fundamental en estos sistemas, tanto organizando el trabajo de otros coprocesadores como ejecutando tareas en las que ningun otro procesador es mas eficiente. No obstante, los procesadores tampoco siguen siendo dispositivos homogeneos. Los diferentes nucleos de un procesador pueden ofrecer diferentes caracteristicas en terminos de potencia y consumo energetico que se adapten a las necesidades de computo de la aplicacion. Programar este conjunto de dispositivos es una tarea compleja, especialmente en su sincronizacion. Habitualmente, esta sincronizacion se basa en operaciones atomicas, ejecucion y terminacion de kernels, barreras y senales. Con estas primitivas de sincronizacion basicas se pueden construir otras estructuras mas complejas. Sin embargo, la programacion de estos mecanismos es tediosa y propensa a fallos. La memoria transaccional (TM por sus siglas en ingles) se ha propuesto como un mecanismo avanzado a la vez que simple para garantizar la exclusion mutua. TM proporciona una interfaz sencilla para definir las secciones de codigo en las que se debe garantizar la exclusion mutua. TM emplea un mecanismo de sincronizacion optimista capaz de mejorar otros mecanismos de sincronizacion basados en cerrojos. Dada la creciente demanda de poder de procesamiento y de una alta eficiencia energetica, los procesadores heterogeneos estan siendo un producto por el que la industria esta apostando muy fuerte. Sin embargo, la complejidad es estos sistemas pone una carga de trabajo importante en los programadores. Dado que TM es una tecnica efectiva en CPUs homogeneas, es importante entender su aplicabilidad en arquitecturas heterogeneas. En esta tesis, analizamos TM como mecanismo de sincronizacion en arquitecturas heterogeneos. Las principales contribuciones de esta tesis, y las publicaciones asociadas, son: 1) Un analisis de una popular libreria de TM por software ejecutada sobre una CPU heterogenea y una propuesta de planificacion que tenga en cuenta las caracteristicas de TM. 2) Una implementacion de TM por software para procesadores APU. El objetivo principal es minimizar la comunicacion entre CPU y GPU, y comprender las ventajas y desventajas de TM en estos dispositivos. 3) Un diseno de TM por hardware para un acelerador de tipo GPU con la que tratamos de proporcionar soporte TM en la memoria tipo scratchpad ofrecida por estos aceleradores.