En esta tesis hemos considerado tres mecanismos diferentes que mejoran las prestaciones obtenidas por un multiprocesador de memoria compartida cuando ejecuta en paralelo threads o tareas extraídas de una aplicación, En particular hemos considerado prebúsqueda hardware y soporte para reducciones para códigos paralelziados por el compilador, y soporte para ejecucción paralela especulativa para aquellas secciones de códigos que el compilador no pudo paralelizar.
En primer lugar se han evaluado varios mecanismos de prebúsqueda hardware, y se ha estudiado cuál es la combinación que consigue las mejores aceleraciones para sistemas multiprocesadores basados en bus. Para este estudio se ha realizado una caracterización de patrones sencillos de acceso a los datos que aparecen en programas paralelos. En esta caracterización se ha prestado especial atención al cambio en el comportamiento de los programas al variar el número de procesadores.
En segundo lugar proponemos un soporte arquitectónico para multiprocesadores basados en directorio. Este soporte acelera la ejecucción paralela de las operaciones de reducción que aparecen en muchos códigos científicos, y es particularmente apropiados para las operaciones de reducción que aparecen en códigos dispersos y/o dinámicos. Las modificaciones que nuestro soporte requiere se concentran principalmente en el controlador del directorio.
Finalmente estudiamos el problema de almacenamiento de estado especulativo en entornos de ejecucción paralela especulativa a nivel de thread. Introducimos una nueva taxonomía que clasifica los distintas propuestas para almacenamiento de estado especulativo, y evaluamos el coste hardware y las prestaciones obtenidas por cada de los puntos de diseño de nuestra taxonomía utilizando un mismo entorno para todos los puntos de diseño. Además, para un tipo particular de propuestas, proponemos un esquema software para almacenar el estado especulativo.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados