• Conectan nodos en diferentes niveles del sistema (chip, tarjeta, chásis, armario, ...). Desarrollado por diseñadores de arquitecturas de altas prestaciones. • Comunicar computadores, clasificación redes computación: – WAN (Wide Area Network). Conexión de redes de computadores. RDSI, ATM. – LAN (Local Area Network). Conexión de cientos-miles de nodos en distancias de decenas kilómetros. Redes Ethernet. – SAN (System Area Network). Conexión de cientos-miles de nodos en distancias cientos de metros. • • • • Altas prestaciones. Entre los sistemas a medida y LANs. Redes basadas en estándares: SCI o Infiniband. Diseños/implementaciones propias de fabricantes: Myrinet de Myricom, QsNet de Quadrics. • Diseños/implementaciones de fabricantes de computadores. • Tendencias en sistemas de comunicación de altas prestaciones: – Sustitución de buses por redes basadas en enlaces (punto a punto) y conmutadores a todos los niveles: (chip, tarjetas, ...) – Buena relación precio/prestaciones. • Componentes de un sistema de comunicación: – Interfaz de red: hardware y software – Conmutadores (switch o router) – Enlaces • Sistema de comunicación: Gestiona e implementa las transferencias de datos entre núcleos de nodos. • Mensaje: Unidad de información que se transfiere entre nodos a través del sistema de comunicación. • Núcleo de nodo: Puede constar de procesador+cache+MP+E/S • Transferencia mensaje puede suponer varias transferencias paquetes (unidad de transferencia entre interfaces). • Conmutadores y enlaces guían los paquetes a su destino. • Multiprocesador: – Nodo = Procesador+Cache ó Memoria ó E/S. – Mensaje generado por un acceso a memoria (load/store). – Controladores de memoria actúan de interfaz con la red interconexión. – Sistema transparente al programador y herramienta de programación. – Transferencia de paquetes con datos (línea de cache) y sólo de control. – Tamaño paquete impuesto por hardware – Protocolo de coherencia de cache. • Multicomputador: – Nodo = Al menos 1 procesador+cache, Memoria e interfaz. – Comunicación entre 2 procesos en 2 computadores: transferencia de datos de memoria fuente a memoria destino. (send/receive) – Sistema de comunicación es visible al programador como subsistema de E/S. – Tamaño de los paquetes controlado por programador. – Sistema, puede dividir datos en unidades más pequeñas para su transferencia entre interfaces. – Copia datos memoria-HW interfaz (fuente) y HW interfaz-memoria (destino) • Interfaz de red: – Multicomputadores: • • • • • Consta de Parte hardware (Network Interface NI) y parte software. Datos a enviar en espacio memoria usuario. Copiar al NI para enviar. Incluye colas de envío/recepción. Para recibir copiar de la cola del NI a memorias de usuario – Multiprocesadores: • La implementación es sólo hardware. • Diferencias cuando existe o no HW de coherencia de caches. • Tareas interfaz de red • • • • • • Almacenamiento de salida y entrada de paquetes Formateo de paquetes Copia y almacenamiento de datos Protección. Traducción de direcciones Control de flujo Direccionamiento, encaminamiento y reconfiguración • Almacenamiento de salida y entrada de paquetes – Se realiza en registros o memoria interna del interfaz – Gestion tipo cola (estructura circular con punteros) – Si los paquetes no tienen tamaño fijo, punteros adicionales. • Formateo de paquetes – Interfaz genera información de control para los datos (envoltorio paquete): Camino a seguir y nodo destino. Información usada por conmutadores. – Código detectores de errores – Código detección fin de paquete • Formateo de paquetes – División del bloque de datos a transferir. – Interfaz destino debe reconstruir. Posibilidad de cambio de orden. – División supone perdida de rendimiento • Ejemplo: 256 bytes->32MB/s y 1024 bytes-> 43MB/s • Copia y almacenamiento de datos – Transferencias: Multicomputadores->E/S. Multiprocesadores-> accesos a memoria. – Copia datos memoria-HW interfaz (fuente) y HW interfaz-memoria (destino) • Copia y almacenamiento de datos – Gestión de dispositivos de E/S. • Manejador de dispositivo (driver): Formar parte de núcleo de S.O. • Desde el nivel de usuario se accede mediante llamadas al sistema. • Transferencias entre dispositivo y memoria se realizan: – E/S Programada. El procesador se encarga de realizar la transferencia. – DMA. El controlador DMA es el encargado de realizar la transferencia. Se informa de eventos al procesador mediante interrupciones. – E/S controlada por interrupciones. Un procesador se encarga de realizar la transferencia. Se informa de eventos al procesador mediante interrupciones. • Copia y almacenamiento de datos – Gestión de dispositivos de E/S. • Es posible copias de memoria a memoria debido a la intervención del núcleo del S.O.. Pérdida de rendimiento. (LAN con TCP/IP ocurre). • Copia y almacenamiento de datos – Optimización del manejador del hardware de una interfaz para procesamiento paralelo • Eliminación de tareas no necesarias del protocolo. Transmisión optimista de paquetes si la fiabilidad es alta. • Aprovechar las características del hardware de interfaz. Modificar protocolo, driver,etc para maximizar las posibilidades que ofrece interfaz: control de flujo, ahorrar transferencias al nodo,..etc. Objetivo liberar los procesadores del nodo. • Optimizar tareas que deben realizar procesadores del nodo. Copias de memoria combinadas. • Reducir coste por intervención del núcleo. Llamadas al sistema ligeras. • Evitando copias de memoria a memoria mismo nodo. • Eliminar coste de interrupciones: Interrumpir por un conjunto de paquetes, no por uno solo. Consultas de cambio de estado. O combinación. • Segmentación o pipeline de diferentes partes del proceso • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • 1) Gestión de transferencia. E/S Programada, DMA, E/S interrupciones. • 2) Información de eventos: Consulta de estado. Interrupciones. • 3) Acceso a adaptador de red: Nivel de S.O.. Nivel usuario. • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • E/S Programada. – Procesador del nodo encargado de copias memoria-interfaz. Si es el mismo que esta ejecutando la aplicación->problemas con perdidas en cache. – Utiliza consulta de estado para tener conciencia de eventos. – Tiempos bajos de inicio de transferencia. Buena para mensajes cortos. Mala a partir de cierto tamaño en la transferencia (Tiempo no ocupado en otras tareas) • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • DMA – Transferencia directa entre memoria y adaptador mediante controlador DMA. – Tiempos altos de inicio de transferencia. Malo para mensajes cortos. Bueno a partir de cierto tamaño en la transferencia (Tiempo no ocupado en otras tareas) – Pueden implementar colas de descriptores de transferencias, evitar esperar termine la anterior para programar. Colas en memoria o en adaptador. • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • DMA – Evitar desalojo de páginas afectadas por transferencia de M.P: » Usar memoria del núcleo del S.O. Donde no hay intercambio » Bloquear páginas usuario mediante llamadas al sistema » Declarar memoria de usuario como no intercambiable y usarla como buffer. Copias memoria-memoria. • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • Recepción de datos. – Transferir datos desde adaptador a memoria. – Puede avisar al procesador mediante interrupciones. – Llamamiento a subrutina de servicio consume tiempo. – Otra opción es Consulta de estado. El procesador chequea estado del adaptador. – Solución híbrida. • Copia y almacenamiento de datos – Alternativas para implementar manejadores de red • Acceso a adaptador a nivel de usuario – Se eliminan llamadas al sistema y copias de memoria a memoria. – Asignar región del espacio de direcciones del usuario a la interfaz. Permite acceso del procesador y DMA. – Otras opciones son implementar acceso a memoria remotos: Sun Fire Link y QsNet. Las interfaces capturan las operaciones con direcciones de E/S y las mapean a operaciones con memoria en nodo remoto. – Ejemplo: El adaptador QsNet realiza DMA remoto sin copia, almacenamiento ni intervanción del S.O. • Protección. Traducción de direcciones – Acceso multiproceso a nivel de usuario elimina protección del S.O. – Protección SO: protege destrucción estado adaptador o datos e instrucciones en memoria por otros procesos – Implementar algún mecanismo de protección. – DMA usa direcciones físicas no virtuales. No la sabe aplicación de usuario. – Solución: • E/S Programada • Usuario copia datos a zona de memoria de uso por DMA. Implica copia memoria-memoria. • Llamadas al sistema para bloquear y desbloquear zonas. Adaptador usa una cache TLB con traducciones direcciones virtuales a fisicas. Si no hay entrada se pide al S.O. Que bloquee esa dirección y traduzca. • Direccionamiento, encaminamiento y reconfiguración – Para un paquete, la interfaz obtiene la dirección en la red del nodo destino y los conmutadores encuentran el camino. En otros casos la interfaz define el camino a seguir que se incluye en la cabecera del paquete. – Es posible implementar en la interfaz funciones colectivas de comunicación, como por ejemplo la difisión, evitando la implementación a niveles superiores. – Existen interfaces que reconfiguran el sistema de comunicación ante fallos. Objetivo, poder conectar cualquier entrada con culaquier salida. Otra posibilidad es incluir la reconfiguración en los conmutadores. • Ubicación de la interfaz respecto al procesador – En el propio procesador • Transferencia a velocidad de procesador • Posible para multiprocesadores memoria centralizada. No para multicomputadores – Conexión a cache • Interfaz incluida en el HW de la cache. Velocidad influida por implementación coherencia cache y red interconexión nodos. Multiprocesadores memoria centralizada. – Conexión a bus de sistema • Transferencias a velocidad de bus de sistema. Buena para multiprocesadores con memoria distribuida. – Conexión al bus de E/S • Transferencia entre memoria e interfaz es más lenta. Menor precio al utilizarse estandares (PCI) en SAN y LAN. Mayor volumen de ventas. • Elementos: – Conmutadores, enlaces y canales. • Conmutador – Dirigen paquetes hacia nodo destino. – Compuesto de : E/S, buffers de almacenamiento a las E/S, conmutador interno y encaminador – Varias entradas y salidas. Permiten varias transferencias en paralelo. También es posible conexiones uno-a-todos y todos-a-uno para implementar difusiones o reducciones. – Incluyen un buffer de almacenamiento de información de tránsito para cada entrada. Cola circular o lista enlazada. – Conmutador interno conecta buffers E/S. – Encaminador: Usa información cabecera paquete para encaminar el paquete a una salida. • Enlace y canales – Enlace: conectan dos componentes del sistema de comunicación (conmutador-conmutador o conmutador-interfaz de red). – Canal: conjunto formado por enlace y controladores en emisor y receptor. – Controlador enlace adecuan medio de transmisión usado a la información binaria a transmitir o recibir. – Los enlaces en computadores paralelos: hilos eléctricos (aluminio sobre silicio, o cobre) o fibras ópticas. Las fibras ópticas permiten equilibrar el ancho de banda de distancias cortas y largas en mayor medida que el cobre. • Evaluación sistema de comunicaciones: – Prestaciones extremo-a-extremo – Prestaciones globales – Prestaciones adicionales – Funcionalidad del sistema de comunicación • Prestaciones extremo-a-extremo – Evalúan las prestaciones que ofrece el sistema de comunicaciones al transferir un mensaje desde nodo/proceso fuente a nodo/proceso destino. – Se pretende evaluar camino de comunicación entre nodos y bibliteca de funciones de acceso (MPI, PVM, OpenMP). – Microbenchmark test ping-pong. Dos proceso, uno envía y otro recibe y devuelve. Tiempos se miden en proceso que envía/recibe. – Medidas: • Ancho de banda teórico. No experimental. Fast Ethernet = 100Mb/s o 12.4 MB/s. Ancho de banda disponible o capacidad del canal. • Latencia total. Tiempo de transferencia de un mensaje de cierto tamaño. • Productividad. Tamaño mensaje transferido dividido por la latencia total. Ancho de banda efectivo. • Ancho banda asintótico. Productividad límite al aumentar tamaño mensage. • Prestaciones extremo-a-extremo • Prestaciones extremo-a-extremo • Prestaciones extremo-a-extremo – Latencia total compuesta por: • Tiempo de sobrecarga en el procesador nodo fuente. Tiempo que consume el procesador para enviar mensaje. Puede ser tiempo constante o variable (cuando se realizan copias en memoria). Este tiempo es perdido por el procesador para otras tareas. • Tiempo procesamiento en hardware de la interfaz red del nodo origen. • Tiempo de transferencia en la red. Incluye el tiempo de encaminamiento. • Tiempo de procesamiento en interfaz red y procesador destino. • Prestaciones extremo-a-extremo • Prestaciones extremo-a-extremo – Comunicaciones consecutivas limitadas por interfaz hardware • Prestaciones globales – Las prestaciones extremo-a-extremo no evalúan el comportamiento del sistema de comunicación completo. No evalúan múltiples transferencias simultáneas (situación real al ejecutar una aplicación paralela). – Medidas de latencias medias y ancho de banda global con la intervención de todos los nodos terminales de la red. – Se inyecta tráfico en la red desde todos los nodos de entrada, generando nodos destinos con distribución uniforme (todos nodos misma probabilidad ser destino), con distribución normal (nodos cercanos mas probabilidad de ser destinos) o con distribución no uniforme (hay canales más utilizados que otro: reducción o permutaciones). – Latencia media: Suma de latencia de todos los mensajes divido por el número de mensajes. – Productividad global: Número de bits (bytes) que se transfieren por segundo en toda la red. Se suele dividir por el número de nodos de la red con el fin de normalizar. Se obtiene a partir de la latencia. • Prestaciones globales – Conveniente conocer la productividad máxima. Se alcanza al saturarse la red, no se acepta más trafico y las latencias aumentan. Los sistemas deben dejar de transmitir al acercarse a ese limite. – Productividad solicitada: trafico generado por los nodos. – Productividad aceptada: productividad que la red realmente lleva a cabo. – Antes del punto de saturación, las dos coinciden. Si la solicitada es mayor entonces estoy en saturación. – El punto de saturación depende del patrón de comunicación utilizado (existen patrones donde ciertas líneas actúan como cuellos de botella) • Prestaciones Adicionales – Funcionalidad: Tipos de transferencias que implementa el sistema de comunicaciones (liberando al software). Transferencias uno-a-uno sicronizadas, colectivas tipo difusión o reducción, etc – Escalabilidad: Posibilidad de incrementar la prestación global del sistema al incluir nuevos nodos terminales. No siempre es posible. – Tolerancia a fallos. Alta disponibilidad: ¿Es posible conectar todas las salidas y entradas cuando falla algún componente del sistema de comunicaciones?. Recuperación mediante redundancia de componentes. – Calidad de servicio (QoS): Asegurar cierto nivel de servicio para cierto tipo de tráfico. – Divisibilidad: Posibilidad de dividir el sistema paralelo en subsistemas también paralelos. Tráfico de cierto usuario no afecte a las prestaciones obtenidas por otro. Subdivisión en subredesredes. • Prestaciones Adicionales – Simplicidad: Diseño sencillo permite fácil comprensión y más asequible explotar prestaciones. – Carga de trabajo: Si se conoce la carga de trabajo que va a soportar el computador, se pueden conocer los esquemas de comunicación usuales, tamaños mensajes, frecuencia, etc. Esto permite escoger sistema de comunicaciones adecuado. • Mucho cálculo y poca comunicación: LAN con nodos de procesamiento potentes. • Mucha comunicación y poco tamaño: Sistema de comunicación con poca latencia y mucho ancho de banda. En clusters se puede utilizar tecnología SAN. – Prestaciones/precio. Utilizar componentes modulares disponibles comercialmente en tiendas reduce el coste global. • Servicios de comunicación colectivos. – Un buen sistema de comunicación ofrece facilidades a los niveles superiores para implementar paso de mensajes, variables compartidas o ambas posibilidades. – Ejemplo: Una difusión hacia 4 destinos a nivel de función de biblioteca equivale a 4 primitivas ‘send’ con el correspondiente consume de tiempo. Si el sistema de comunicaciones dispone de una API (Application Programming Interface) que implemente difusión, se evita la repetición de los 4 sends.