Efficient and Scalable Cache Coherence for Many-Core Chip Multiprocessors
- Manuel Eugenio Acacio Sánchez Doktorvater
- José Manuel García Carrasco Doktorvater
Universität der Verteidigung: Universidad de Murcia
Fecha de defensa: 24 von September von 2009
- Antonio Robles Martínez Präsident/in
- Jose Flich Cardo Sekretär/in
- José Ángel Gregorio Monasterio Vocal
- José María González González Vocal
Art: Dissertation
Zusammenfassung
Los continuos avances en la escala de integración permiten reducir cada vez más el tamaño de los transistores y, por tanto, cada vez podemos encontrar chips con un mayor número de transistores. Los fabricantes de chips han decidido dedicar estos transistores a aumentar el número de procesadores en lugar de a incrementar el rendimiento de un único procesador, dando lugar a los multiprocesadores en un único chip o CMPs (Chip-multiprocessors). Aunque actualmente los CMPs están formados por un número reducido de procesadores (entre 2 y 8), se espera que CMPs con decenas de procesadores, llamados many-core CMPs, salgan al mercado en un futuro cercano. La mayoría de los many-core CMPs mantendrán la coherencia de las caches privadas a cada procesador vía hardware y, por tanto, el protocolo de coherencia de caches tomará gran importancia en estos sistemas. Hoy en día, la mejor manera de mantener la coherencia en sistemas con decenas de procesadores es mediante los protocolos basados en directorio. Sin embargo, estos protocolos tienen dos grandes problemas: una gran sobrecarga de memoria y una alta latencia para los fallos de cache. La sobrecarga de memoria es provocada por el mantenimiento del directorio, o información de coherencia. Dependiendo de cómo se organice esta información, la cantidad de memoria requerida puede resultar prohibitiva para CMPs de gran escala. Las altas latencias para los fallos de cache vienen como consecuencia de la indirección introducida por la necesidad de acceder al directorio antes de realizar las acciones de coherencia necesarias. Por otro lado, los many-core CMPs suelen organizar el último nivel de cache, que normalmente comparten todos los procesadores, de un modo distribuido. Esto provoca que el acceso a esta cache dependa del banco donde se almacena el bloque accedido, lo que puede incrementar su latencia de acceso. En esta tesis nuestros esfuerzos se han centrado en estos tres problemas claves para la eficiencia y escalabilidad del CMP. En primer lugar, hemos presentado una organización para directorios distribuidos que es escalable, es decir, que el tamaño de la estructura de directorio incluida en cada cache no depende del número de procesadores del sistema. Además, hemos implementado un nuevo mecanismo de reemplazos, que elimina todos los mensajes de coherencia causados por los reemplazos, realizándolos de forma implícita con los mensajes generados por la petición que causa el reemplazo. En segundo lugar, hemos propuesto una nueva familia de protocolos de coherencia de cache, llamados protocolos de coherencia directa. Estos protocolos evitan la indirección para la mayoría de los fallos de cache. Para ello, es necesario que la información de directorio se almacene junto con el bloque de datos y que los mensajes se envíen directamente al nodo que almacena dicho bloque de datos. De este modo se reducen las latencias de fallo de cache y, por tanto, el tiempo de ejecución de las aplicaciones. Por último, hemos desarrollado una política de mapeo para caches compartidas que se encuentran físicamente distribuidas en el chip. Esta política intenta reducir la distancia entre los procesadores que acceden a un bloque y el banco de cache donde se encuentra dicho bloque. Además, esta política intenta garantizar una distribución uniforme de la memoria almacenada por los diferentes bancos con el fin de reducir la tasa de fallos de la cache. Estas dos mejoras se traducen finalmente en reducciones en el tiempo de ejecución de las aplicaciones.