TEMA 20 : SISTEMAS DE ALTAS PRESTACIONES. ARQUITECTURAS ESCALABLES. ARQUITECTURAS MULTINÚCLEO. GRID COMPUTING
INTRODUCCIÓN
SISTEMAS MULTIPROCESADOR
SISTEMAS MULTICOMPUTADOR
Taxonomía de Flynn: se basa en el flujo que siguen los datos dentro de la máquina y de las instrucciones sobre esos datos.
Clasificación de Tanenbaum (para los MIMD)
Ejemplos de sistemas de altas prestaciones
Arquitectura cluster: consiste en un conjunto de computadores independientes trabajando unidos como si fuera un único recurso computacional integrado
Arquitectura GRID: distribuida y paralela, de ámbito extenso geográficamente, en la que se premia la distribución y luego la paralelización
Un sistema de altas prestaciones es un ordenador multiusuario/tarea/proceso de muy altas capacidades de cómputo, orientado al procesamiento de grandes volúmenes de información, tanto para gestión como para cálculo científico
Dos aproximaciones
Sistema Multiprocesador : una máquina de mucha potencia de cálculo y elementos compartidos.
Sistema Multicomputador :distitntas máquinas que manteniendo su independencia, suman sus potencias
Taxonomía de Flynn
Diseño Grid
Diseño Cluster
SISD (Single Instruction Stream, Single Data Stream) :tienen un único flujo de instrucciones sobre un único flujo de datos. Se ejcuta una instrucción detrás de la otra (arquitectura serie).
Una instrucción por cada ciclo de reloj
La zona de memoria se divide en dos módulos
Uno reservado para el conjunto de instrucciones a ejecutar que forman el programa almacenado
Otro reservado para los datos sobre los que se van a ejecutar dichas instrucciones
La unidad de procesamiento (PU) se encarga de realizar las operaciones matemáticas necesarias para ejecutar las instrucciones del programa, teniendo como mínimo capacidad de sumar y realizar operaciones lógicas
No presentan soluciones de concurrencia ni paralelización. Solo una simulación de estas capacidades mediante la segmentación
Es una técnica de solapamiento de instrucciones mediante la división de su ejecución en etapas o segmentos
Se descompone la ejecución de cada instrucción en varias etapas para poder empezar a procesar una instrucción diferente en cada una de ellas y trabajar con varias a la vez.
Incrementa la productividad de instrucciones de la CPU, pero no disminuye el tiempo de ejecución de cada instrucción , que permanece inalterado
Ejemplos : S36 de IBM, AS400 de IBM, Sun Enterprise
SIMD (Singles Instructions Stream, Multiple Data Streams) :un único flujo de instrucciones que operan sobre múltiples flujos de datos.
Máquinas vectoriales con hardware escalar y vectorial
El procesamiento es síncrono, la ejecución de las instrucciones sigue siendo secuencial, pero sobre una gran cantidad de datos
Existe concurrencia real de operación, siendo el origen de la máquina paralela
La Unidad de Control manda una misma instrucción a todas las unidades de proceso que operan sobre datos diferentes pero con la misma instrucción recibida
Variantes
Arquitectura vectorial con segmentación: una CPU única particionada en unidades funcionales independientes trabajando sobre flujos de datos concretos
Arquitectura Matricial (matriz de procesadores) :varias ALUs idénticas a las que el procesador de instrucciones asigna una única instrucción, pero trabajando sobre diferentes partes del programa. Vectorial n veces.
Ejemplos : CRAY monoprocesador, ILLIAC IV,
MISD (Multiple Instructions Streams, Single Data Stream) :
Variantes
Varias instrucciones operando simultáneamente sobre un único dato
Varias instrucciones operando sobre un dato que se convierte en un resultado que será la entrada de la siguiente etapa. Se trabaja de forma segmentada y todas las UP trabajan de forma concurrente
Inconveniente : la latencia de los datos. Son arquitecturas experimentales
Ejemplos : arrays sistólicos o arrays de procesadores, aplicaciones de redes neuronales en máquinas masivamente paralelas
MIMD (Multiple Instructions Streams, Multiple Data Streams) :: sistemas con un flujo de múltiples instrucciones que operan sobre múltiples datos. (principios de los 80)
Basados en un bus multiplexado de altas prestaciones, a través del cual podemos transmitir simultáneamente más de unas instrucción y más de un dato
SMP (Simetric Multi Processor) : sistemas fuertemente acoplados en los que los procesadores dependen unos de otros, dado que comparten memoria.
MPP (Massively Parallel Processor):sistemas débilmente acoplados, en los que existe poca interacción entre los procesadores que forman el sistema, dado que disponen de memoria propia.
Se dispone de una única memoria compartida donde se encuentran almacenadas todas las instrucciones del programa y los datos necesarios para ejecutarlas
2 tipos de memoria
Datos de alcance global, almacenados en la memoria compartida y que pueden ser utilizados por cualquiera de las unidades de procesamiento
Datos de alcance local, almacenados por un determinado procesador en una memoria caché propia, y visibles únicamente en el ámbito de dicho procesador
Cuello de botella en el acceso a la memoria compartida. 2 alternativas para gestionar la memoria compartida
UMA (Acceso uniforme a memoria) : la memoria compartida es donde cada procesador tiene acceso a toda la memoria, se dan tiempos de acceso a memoria uniformes , ya que llegan mediante un bus en común y tienen las mismas latencias de lectura y escritura
Desventaja del acceso simultáneo a memoria de parte de todos los nodos y poca escalabilidad.
NUMA (Acceso no uniforme a memoria) :se introducen criterios de preferencia en el acceso a la memoria compartida. Por ejemplo, disposición física de los procesadores o en una distribución de prioridades dada.
Se añade un submódulo de E/S a los procesadores, que permite gestionar los accesos al submódulo de memoria interno
Se usan algoritmos de elevada complejidad para asegurarse que las instrucciones y los datos se encuentran distribuidos en los submódulos de memoria, agrupados de tal forma que puedan ejecutarse las instrucciones con los datos que necesitan
Superordenadores :con capacidades de cálculo muy elevadas y usados para fines específicos
Mainframes:equipos dedicados a la gestión, por lo que admiten gran cantidad de trabajos simultáneos.
Alto coste, hay poco más de 1000 en el mundo y son gestionados por personal especializado. Uso limitado a organismos gubernamentales, militares y científicos
Velocidades de centenas de teraFlop´s
Características
Fiabilidad
Disponibilidad
Integridad
Tolerancia a fallos
Pueden ejecutar múltiples sistemas operativos y ofrecen varios niveles de virtualización.
Diseñados para gestionar un elevado número de operaciones de E/S para lo que disponen de procesadores específicos
Enfocados a resolver problemas que requieran un gran número de E/S. Máquinas más generalistas
Introducción: se pueden ver como un computador paralelo en el cual cada procesador tiene su propia memoria local. La memoria se encuentra distribuida y no compartida
La comunicación se realiza mediante el paso de mensajes
La transferencia de los datos se realiza a través de la red de interconexión que conecta un subconjunto de procesadores (computador en sí) con otros subconjunto (otro computador)
Son sistemas distribuidos ya que la memoria está distribuida entre los diferentes elementos de proceso. Son débilmente acoplados
Tipos
Si la solución premia la paralelización de tareas antes que la distribución estamos ante una solución CLUSTER
Si la solución premia la distribución de tareas antes que la paralelización, estamos ante una solución GRID
Tipo de arquitectura hardware paralela y distribuida, en un ámbito local, en la que premia la paralelización y después la distribución
Los ordenadores están conectados mediante un medio físico o cable de alto ancho de banda y consiguen operar de forma conjunta, dando como resultado un único recurso computacional virtual
Cada nodo del cluster podrá ser mono o multiprocesador con memoria, gestión de E/S y sistema operativo propios
Los nodos pueden estar en el mismo armario o separados e interconectados mediante una LAN
Componentes
Nodo: podrá operar colectivamente, como un recurso computacional integrado o como un recurso individual. No se puede controlar el porcentaje de procesamiento que se dedica al cluster y el dedicado al procesamiento individual
Red de interconexión de altas prestaciones:los servicios de red se diseñan en forma de una pila de protocolos. Cada capa de protocolo proporciona una serie de servicios a las capas superiores, utilizando los servicios que le proporciona la capa inmediatamente inferior. (Ej: ISO/OSI, TCP/IP)
Middleware del cluster :la SSI (Single System Image) es la imagen de recurso único del grupo computacional, y es generada por la capa de middleware que se dispone entre el sistema operativo y el entorno de usuario. Se encarga también de la recuperación automática de errores y el balanceo de carga
Capas
SSI Hardware :la capa lógica de gestión del cluster se encuentra implementada por medio de una representación única de circuitos hardware. TIenen mayor eficiencia y velocidad pero son muy costosas, propietarias y nada escalables
SSI a nivel de kernel del S.O. :se modifican los S.O. de los nodos para que dentro de las rutinas internas incluya la virtualización del clúster. Más escalable y menos costosa
Gang scheduling : algoritmo que distribuye el trabajo entre los distintos nodos, de forma que el resultado sea equitativo
Gestión de usuarios del cluster
Administración de recursos del cluster
Seguridad y autenticación
SSI a nivel de Aplicación :se instala en cada nodo un módulo software que añade la lógica y las rutinas necesarias para formar el SSI. Será necesario tener la pareja adecuada "tipo de procesador/sistema operativo.
Lo normal es comenzar con un cluster basado en SSI a nivel de aplicación e ir introduciendo nodos con SSI a nivel de SO
Se basa en compartición, selección y agregación de forma dinámica y en tiempo de ejecución de recursos autónomos, distribuidos geográficamente, dependiendo de criterios como la disponibilidad del hardware, la capacidad transaccional, el rendimiento, el coste y los criterios de calidad del servicio
Formada por un conjunto de ordenadores independientes e interconectados que ponen a disposición de la red los excedentes de su procesamiento individual., sin poder superar un determinado porcentajes de dedicación configurado individualmente en cada nodo.. A partir de ahí se virtualiza un recurso computacional único
Están indicados para atender productividades sostenidas y sostenibles sin poder superar un determinado umbral
Se garantiza la escalabilidad como un criterio parametrizable
Características
Se puede conseguir máximo aprovechamiento de los nodos
Los nodos no tienen que estar dedicados
Son sistemas heterogéneos en los que podemos encontrar distintos SW y HW
La escalabilidad parametrizable
Arquitectura
Basada en capas, ejecutando cada una de ellas una determinada función. Las capas más altas están más cerca del usuario y las inferiores están más cerca de las redes de comunicación
Aplicaciones
Capa de red: asegura la conexión de los recursos del grid
Capa de recursos:son los dispositivos que forman parte del grid
Capa de middleware:proporciona las herramientas que permiten que los distintos elementos participen de forma coordinada en un entorno grid unificado
Funciones
Encontrar el lugar conveniente para ejecutar la tarea solicitada por el usuario
Optimiza el uso de los recursos que pueden estar muy dispersos
Organiza el acceso eficiente a los datos
Se encarga de la autentificación de los diferentes elementos
Se ocupa de las políticas de asignación de recursos
Ejecuta las tareas
Monitoriza el progreso de los trabajos en ejecución
Gestiona la recuperación ante fallos
Avisa de la terminación de la tarea y devuelve los resultados
El manejo de los metadatos, que contienen información sobre los datos y dónde se almacenan es fundamental
Capa de aplicación : donde se incluyen todas las aplicaciones de usuario, portales y herramientas de desarrollo
Proporciona también el "serviceware", que recoge las funciones generales de gestión del grid
Localización dinámica de recursos
Optimización de acceso a datos
Autenticación de usuario
Monitorización de tareas y procesos desde cualquier nodo de la red , siempre que el usuario tenga permisos
Ejemplos :Folding@home, BOINC, MilkyWay@home.......