Problema Procesador–Memoria Procesadores lanzan instrucciones aprox. cada nanosegundo. DRAM puede ser accesada aprox. cada 100 nanosegundos (!). DRAM no puede mantener al procesador al 100%! La diferencia está creciendo: procesadores son más rápidos 60% por año DRAM es más rápida 7% por año (SDRAM and EDO RAM ayudan, pero no es suficiente)
Procesador-Memoria Performance Gap µProc 60%/yr. DRAM 7%/año. 1 10 100 1000 1980 1981 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 DRAM CPU 1982 Procesador-Memoria Performance Gap:(crece 50% / año) Performance Moores Law From D. Patterson, CS252, Spring 1998 ©UCB
Procesador-Memoria Performance Gap Los problemas vienen a ser peores cuando se necesita memoria remota (distribuida o NUMA) La latencia de red es aprox. 1000-10000 nanosegundos (aprox. 1-10 microsegundos) Las redes son muy rápidas, pero no lo suficiente Por tanto, la cache es usada en todos los procesadores Casi tan rápida como el procesador costosa, se puede usar cantidades pequeñas El sistema se debe diseñar para cargar la cache de forma eficiente
CPU Memoria Principal Cache Procesador-Cache-Memoria La cache es mucho más pequeña que la memoria principal, y por lo tanto existe un mapeo de datos desde memoria principal a cache.
CPU Cache Local Memory
Remote Memory Jerarquía de Memoria
Cache-Términos Relacionados ICACHE : cache de instrucciones DCACHE (L1) : cache de datos cercana a los registros SCACHE (L2) : cache secundaria de datos Los datos desde SCACHE tienen que ir a través DCACHE hacia los registros SCACHE es más grande que la DCACHE No todos los procesadores tienen SCACHE
Beneficios de la Cache La cache de datos fue diseñada con dos conceptos claves en mente Localidad Espacial Cuando un elemento es referenciado sus vecinos deberán ser referenciados también Las lineas de cache son buscadas juntas Trabajar sobre elementos de datos consecutivos en la misma linea de cache Localidad Temporal Cuando un elemento es referenciado, éste volverá a ser referencia de nuevo muy pronto Los datos en la cache son reusados constantemente
(Gp:) cache (Gp:) main memory
Cache de Correspondencia Directa Cache de mapeo directo: Un bloque en la memoria principal puede ir exactamente a un lugar en la cache. Esto es llamado correspondencia directa porque existe un mapeo directo desde cualquier direción de bloque en memoria a una simple ubicación en la cache.
cache Main memory Cache Completamente Asociativa Cache Completamente Asociativa : Un bloque en memoria principal puede ser colocado en cualquier lugar de la cache. Esto es llamado Completamente asociativa porque el bloque en memoria principal puede ser asociado con cualquier entrada en la cache.
(Gp:) 2-way set-associative cache (Gp:) Main memory
Cache Asociativa por Conjuntos Cache asociativa por conjuntos : El diseño intermedio entre cache de mapeo directo y cache completamente asociativa es llamado cache asociativa por conjuntos. En una cache asociativa por conjuntos de n-vías un bloque en la memoria principal puede ir a N (N > 1) posiciones en la cache.
Cache-Términos Relacionados Least Recently Used (LRU): Una estrategia de reemplazo para cache asociativa por conjuntos. El bloque de la cache que es el menos recientemente usado es reemplazado con un nuevo bloque. Random Replace: Una estrategia de reemplazo para cache asociativa por conjuntos. Un bloque de la cache es reemplazado aleatoriamente.
Ejemplo: CRAY T3E Cache Los procesadores de la CRAY T3E pueden ejecutar 2 ops punto flotante(1 suma, 1 multiplicación) y 2 ops enteros/memoria (incluye 2 loads o 1 store) Para ayudar a mantener los procesadores trabajando on-chip 8 KB direct-mapped data cache on-chip 8 KB direct-mapped instruction cache on-chip 96 KB 3-way set associative secondary data cache with random replacement.
Colocando las Piezas juntas Recordemos: Arquitectura de memoria compartida: Uniform Memory Access (UMA): Symmetric Multi-Processors (SMP). Eje: Sun E10000 Non-Uniform Memory Access (NUMA): Las más comunes son Distributed Shared Memory (DSM), o sistemas cc-NUMA (cache coherent NUMA). Eje: SGI Origin 2000 Arquitectura de Memoria Distribuida: Massively Parallel Processor (MPP): sistema integrado, se tiene la imágende un simple sistema. Eje: CRAY T3E, IBM SP Clusters: nodes conectados por interconexión. Ejemplo: Beowulf clusters.
Multiproces. Simétricos (SMPs) Los procesadores SMPs están conectados a una memoria global compartida usando: bus crossbar Provee un simple modelo de programación, pero tiene problemas: Buses saturados Tamaño de crossbar debe crecer con el # de procesadores Los problemas aumentan con el número de procesadores, limitando el tamaño máximo del SMPs
Programación Memoria Compartida Los modelos de programación son sencillos ya que no es necesario el paso de mensajes. Técnicas: autoparalelización via opciones del compilador Paralelismo a nivel de bucles via directivas del compilador OpenMP pthreads Más sobre modelos de programación luego.
Computadores Masivamente Paralelos Cada procesador tiene su propia memoria: La memoria no está compartida de forma global Se adiciona otro nivel en la jerarquía de memoria (memoria remota) Los nodos procesador/memoria son conectados por una red de interconexión Varias posibilidades de topología Los procesadores deben pasar datos via mensajes La comunicación debe ser minimizada (overhead)
Interconexión Custom Las compañias proveen una red de interconexión de alto rendimiento para sus sistemas MPP La interconexión en la CRAY T3E es la más rápida para MPPs: baja latencia, alto ancho de banda Commodity Usada en algunos sistemas MPPs y en todos los clusters Myrinet, Gigabit Ethernet, Fast Ethernet, etc.
Tipos de Interconexiones Fully connected No factible Array and torus Intel Paragon (2D array), CRAY T3E (3D torus) Crossbar IBM SP (8 nodos) Hypercube SGI Origin 2000 (hypercube), Meiko CS-2 (fat tree) Combinaciones de algunos de los anteriores IBM SP (crossbar & fully connected para 80 nodos) IBM SP (fat tree para > 80 nodos)
Clusters Similar a MPPs Utilidad procesadores y memoria Rendimiento del procesador debe ser máximizado La jerarquía de memoria incluye la memoria remota No hay memoria compartidapaso de mensaje El overhead de comunicación debe ser minimizado Diferencia de MPPs Comodidad, incluyendo interconexión y SO Sistemas múltiples independientes: más robusto Sistema separado de I/O
Cluster: ventajas y desventajas Ventajas Menos costoso ($) Procesadores muy rápidos Potencial desarrollo de I/O paralela Alta disponibilidad Desventajas: Menos maduración en software (programación y sistema) Más dificultad en el manejo Rendimiento bajo de la interconexión: no se puede escalar a grandes números de procesadores
Programación Memoria Distribuida El paso de mensaje es más eficiente MPI MPI-2 Active/one-sided messages Vendedor: SHMEM (T3E), LAPI (SP) Viene en MPI-2 Modelos de memoria compartida pueden ser implementados en software, pero no es tan eficiente. Más sobre modelos de programación en la próxima sección.
Memoria Compartida Distribuida Generalmente llamada cc-NUMA (cache coherent NUMA) Consiste de m SMPs con n procesadores en un espacio de direccionamiento global: Cada procesador tiene alguna memoria local (SMP) todos los procesadores pueden accesar todas las memorias El hardware garantiza coherencia de cache El acceso a memoria en otros SMPs es mucho más lento (NUMA)
Memoria Compartida Distribuida Fácil de construir porque los accesos a memoria remota son muy lentos (no es costoso un bus/crossbar) Problemas similares de caché Al escribir códigos se debe tener en cuenta la distribución de datos Balance de carga: Minimizar accesos a memorias lejanas
DSM Racional y Realidad Racional: combina lo fácil de la programación SMP con la escalabilidad de la programación MPP a un costo mayor que un MPP Realidad: NUMA introduce capas adicionales en la jerarquía de memoria SMP relativa al SMPs, entonces la escalabilidad está limitada si se programa como SMP Realidad: la programación debe explotar el rendimiento y la alta escalablidad de la arquitectura.
SMPs Clusters Mucho más simple que DSMs: Compuesto de nodos conectados por una red, como un MPP o cluster Cada nodo es un SMP Procesadores de un SMP no comparten memoria de otros SMPs Comunicación entre nodos SMP es vía paso de mensajes Ej: IBM Power3-basado en sistemas SP
Diagrama SMP Cluster (Gp:) Network (Gp:) P (Gp:) P (Gp:) P (Gp:) P (Gp:) BUS (Gp:) Memory (Gp:) P (Gp:) P (Gp:) P (Gp:) P (Gp:) BUS (Gp:) Memory
Razones para un SMPs Cluster Natural extension de SMPs y clusters SMPs ofrece gran rendimiento para su limitado crossbar/bus La conección de nodos es como una memoria se puede escalar a muchos procesadores con menos interconexión Máximo rendimiento: Optimizar en un nivel SMP – no hay overhead de comunicación Optimizar en un nivel MPP – minimizar el número de mensajes
SMP Clusters Desventajas Los clusters SMPs tienen las siguientes desventajas No hay acceso a la memoria compartida del sistema completo Tiene otras desventajes del DSMs Capa extra en la jerarquía de memoria El rendimeinto requiere más esfuerzo del programador que en SMPs o MPPs Sin embargo, con los clusters SMPs se obtiene un alto rendimiento y escalabilidad
Cluster SMP: NPACI Blue Horizon Sistema IBM SP: procesadores Power3: buen rendimiento pico (~1.5 Gflops) mejora del rendimiento sostenido (superscalar y pipelined) con respecto a otros procesadores los nodos SMP tienen 8 procesadores Power3 El sistema tiene 144 SMP nodos (1152 procesadores en total)
Programación de Clusters SMPs NSF: La mayoría de los usuarios sólo usan MPI, para mensajes entre nodos DoE: la mayoría de aplicaciones están siendo desarrolladas con MPI (entre nodos) y OpenMP (dentro del node) La programación MPI+OpenMP es más compleja, pero conduce al máximo rendimiento Los mensajes activos y pthreads deben teóricamente dar máximo rendimiento