El Cray MTA , anteriormente conocido como Tera MTA , es una arquitectura de supercomputadora basada en miles de subprocesos independientes, comunicación de grano fino y sincronización entre subprocesos y tolerancia de latencia para cálculos irregulares.
Cada procesador MTA ( CPU ) tiene una ALU de alto rendimiento con muchos conjuntos de registros independientes, cada uno de los cuales ejecuta un subproceso independiente. Por ejemplo, el Cray MTA-2 usa 128 conjuntos de registros y, por lo tanto, 128 subprocesos por CPU / ALU. Todos los MTA hasta la fecha utilizan un arreglo de procesador de barril , con un interruptor de hilo en cada ciclo, con hilos bloqueados (estancados) omitidos para evitar el desperdicio de ciclos de ALU. Cuando un hilo realiza una lectura de memoria, la ejecución se bloquea hasta que los datos regresan; mientras tanto, otros subprocesos continúan ejecutándose. Con suficientes subprocesos (concurrencia), casi siempre hay subprocesos ejecutables para "cubrir" los subprocesos bloqueados, y las ALU permanecen ocupadas. El sistema de memoria utiliza bits llenos / vacíos para garantizar un pedido correcto. Por ejemplo, una matrizA se escribe inicialmente con bits "vacíos" y cualquier subproceso que lee un valor de los bloques A hasta que otro subproceso escribe un valor. Esto asegura un orden correcto, pero permite un entrelazado de grano fino y proporciona un modelo de programación simple. El sistema de memoria también es "aleatorio", con direcciones físicas adyacentes que van a diferentes bancos de memoria. Por lo tanto, cuando dos subprocesos acceden a la memoria simultáneamente, rara vez entran en conflicto a menos que accedan a la misma ubicación.
Un objetivo del MTA es que la transferencia de códigos de otras máquinas sea sencilla, pero proporcione un buen rendimiento. Un compilador FORTRAN en paralelo puede producir un alto rendimiento para algunos códigos con poca intervención manual. Cuando se requiere la migración manual, el modelo de sincronización simple y detallado a menudo permite a los programadores escribir código de la manera "obvia" pero logrando un buen rendimiento. Otro objetivo es que los programas para el MTA sean escalables , es decir, cuando se ejecutan en un MTA con el doble de CPU, el mismo programa tendrá casi el doble de rendimiento. Ambos son desafíos para muchos otros sistemas informáticos de alto rendimiento.
Una característica poco común del MTA es que se pueden intercalar varias cargas de trabajo con un buen rendimiento. Normalmente, las supercomputadoras se dedican a una tarea a la vez. El MTA permite que los subprocesos inactivos se asignen a otras tareas con muy poco efecto en los cálculos principales.
Implementaciones
Ha habido tres implementaciones de MTA y a partir de 2009 se planea una cuarta. Las implementaciones son:
- MTA-1 El MTA-1 utiliza un procesador GaAs y se instaló en el San Diego Supercomputer Center . Usó cuatro procesadores (512 subprocesos)
- MTA-2 El MTA-2 utiliza un procesador CMOS y se instaló en el Laboratorio de Investigación Naval . Según los informes, era inestable, pero estar dentro de una instalación segura no estaba disponible para depurarlo o repararlo.
- MTA-3 El MTA-3 usa la misma CPU que el MTA-2 pero una interfaz de red mucho más barata y lenta. Se han vendido aproximadamente seis sistemas Cray XMT (2009) utilizando el MTA-3. [1]
- MTA-4 El MTA-4 es un sistema planificado (2009) que es arquitectónicamente similar pero utilizará un almacenamiento en caché de datos limitado y una interfaz de red más rápida que el MTA-3.
Actuación
Solo se han implementado unos pocos sistemas y solo se han informado ampliamente las pruebas comparativas de MTA-2, lo que dificulta las comparaciones de rendimiento.
En varios puntos de referencia, un MTA-2 de 2 CPU muestra un rendimiento similar al de un Cray T90 de 2 procesadores. [2] Para la aplicación específica del trazado de rayos, un MTA-2 de 4 CPU fue aproximadamente 5 veces más rápido que un Cray T3E de 4 CPU, y al escalar de 1 CPU a 4 CPU, el rendimiento de Tera mejoró en 3.8 veces, mientras que el T3E Pasar de 1 a 4 CPU mejoró en solo 3.0x. [3]
Consideraciones arquitectónicas
Otra forma de comparar sistemas es por los gastos generales inherentes y los cuellos de botella del diseño.
El MTA utiliza muchos conjuntos de registros, por lo que el acceso a cada registro es lento. Aunque la concurrencia (ejecutar otros subprocesos) generalmente oculta la latencia, el acceso lento a los archivos de registro limita el rendimiento cuando hay pocos subprocesos ejecutables. En las implementaciones de MTA existentes, el rendimiento de un solo subproceso es de 21 ciclos por instrucción, [4] por lo que el rendimiento se ve afectado cuando hay menos de 21 subprocesos por CPU.
El MTA-1, -2 y -3 no utilizan cachés de datos. Esto reduce la complejidad de la CPU y evita problemas de coherencia de la caché. Sin embargo, la falta de almacenamiento en caché de datos presenta dos problemas de rendimiento. En primer lugar, el sistema de memoria debe admitir todo el ancho de banda de acceso a datos de todos los subprocesos, incluso para datos no compartidos y, por lo tanto, que se pueden almacenar en caché. Por lo tanto, un buen rendimiento del sistema requiere un ancho de banda de memoria muy alto. En segundo lugar, las referencias de memoria toman 150-170 ciclos, [4] [5] una latencia mucho mayor que incluso una caché lenta, aumentando así el número de subprocesos ejecutables necesarios para mantener ocupada la ALU. El MTA-4 tendrá una caché no coherente, que se puede usar para datos de solo lectura y no compartidos (como marcos de pila no compartidos), pero que requiere coherencia de software, por ejemplo, si se migra un subproceso entre CPU. La competencia de la caché de datos suele ser un cuello de botella en el rendimiento para los procesadores altamente concurrentes y, a veces, incluso para los sistemas de 2 núcleos; sin embargo, al usar la caché para datos que son muy compartidos o que tienen una localidad muy alta (marcos de pila), la competencia entre subprocesos se puede mantener baja.
Los cambios de estado de lleno / vacío usan sondeo, con un tiempo de espera para los hilos que sondean demasiado. Un subproceso agotado puede ser desprogramado y el contexto de hardware utilizado para ejecutar otro subproceso; el programador del sistema operativo establece un bit de "captura en escritura" para que la escritura esperada atrape y vuelva a colocar el subproceso programado en la cola de ejecución. [5] Cuando el subproceso reprogramado se encuentra en la ruta crítica, el rendimiento puede verse afectado sustancialmente.
El MTA es tolerante a la latencia, incluida la latencia irregular, lo que proporciona un buen rendimiento en cálculos irregulares si hay suficiente concurrencia para "cubrir" retrasos. El hardware de tolerancia a la latencia puede desperdiciarse en cálculos regulares, incluidos aquellos con latencia alta pero que se pueden programar fácilmente.
Ver también
Referencias
- ^ "Sistema Cray XMT" . 2009. Archivado desde el original el 15 de enero de 2010.
- ^ "Rendimiento multiprocesador en el Tera MTA" . 1999. Archivado desde el original el 22 de febrero de 2012.
- ^ "Visualización de volumen intensivo de datos en Tera MTA y Cray T3E" . 1999. Archivado desde el original el 15 de agosto de 2010 . Consultado el 16 de diciembre de 2009 .
- ^ a b "Tera MTA (Arquitectura de subprocesos múltiples)" . 1999.
- ^ a b "Microbenchmarking del Tera MTA" (PDF) . 1999.