Mejoras en arquitecturas multiprocesador (I)

¡Hola!

Soy Javier Ferrer. Acabo de incorporarme a Visualtis hace menos de una semana. Estoy terminando el grado en Ingeniería Informática, el último paso que me queda es el Trabajo de Fin de Grado, que presento en unos días. Voy hablar un poco sobre él para estrenar mi participación en el blog.

Mi trabajo consiste en buscar mejoras para multiprocesadores. Los multiprocesadores son chips con muchos procesadores dentro trabajando a la vez. Empezaron utilizándose en superordenadores, pero cada vez se utilizan en sitios más comunes. Ahora, hasta los teléfonos móviles usan multiprocesadores, aunque a escala más pequeña.

La idea es mejorar los que son muy grandes (estamos trabajando sobre uno con 64 núcleos). Estos chips están divididos en nodos que se llaman tiles: son como baldosas. Cada una de ellas tiene un procesador, un trozo del caché, y un router que la conecta con el resto. Están conectados en una malla de dos dimensiones.

Como el caché se divide entre las tiles, a veces un nodo tiene que pedir un dato a otro que puede estar en la otra esquina del chip.

De ahí viene el problema que mi tutor encontró, y sobre el que yo estoy trabajando: Los nodos del centro tienen mucho más cerca a todos los demás, mientras que los de las esquinas pueden tener que irse a un caché muy lejano a pedir un dato, y por tanto tendrán tiempos de espera mayores.

La siguiente imagen muestra el problema: El nodo 27 (color rojo) pide un dato al nodo 0. La información viajará por el 19, el 11, el 3, etc., hasta el 0, y de vuelta; recorriendo una distancia de seis nodos. Sin embargo, cuando el nodo 63 (verde) pide ese mismo dato, tiene que recorrer catorce nodos; tardando mucho más.

Estas latencias se acumulan, y hacen que los núcleos de las esquinas tarden más en hacer el mismo trabajo que los núcleos centrales. Muchos programas que utilizan varios procesadores no pueden terminar hasta que no acabe el último de ellos, con lo cual todo el proceso tardará tanto como el más lento.

En la próxima entrada explicaré la solución que hemos implementado.