Multiprocesamiento simétrico

Ajustar Compartir Imprimir Citar
El reparto equitativo de todos los recursos por múltiples procesadores idénticos
Diagrama de un sistema de multiprocesamiento simétrico
El multiprocesamiento simétrico o multiprocesamiento de memoria compartida (SMP) involucra una arquitectura de hardware y software de computadora multiprocesador donde dos o más procesadores idénticos están conectados a una sola memoria principal compartida, tienen acceso total a todos los dispositivos de entrada y salida, y están controlados por una sola instancia del sistema operativo que trata a todos los procesadores por igual, sin reservar ninguno para propósitos especiales. La mayoría de los sistemas multiprocesador actuales utilizan una arquitectura SMP. En el caso de los procesadores multinúcleo, la arquitectura SMP se aplica a los núcleos y los trata como procesadores independientes.

El profesor John D. Kubiatowicz considera que los sistemas SMP tradicionales contienen procesadores sin caché. Culler y Pal-Singh en su libro de 1998 "Arquitectura informática paralela: un enfoque de hardware/software" mención: "El término SMP se usa mucho pero causa un poco de confusión. [...] La descripción más precisa de lo que pretende SMP es un multiprocesador de memoria compartida donde el costo de acceder a una ubicación de memoria es el mismo para todos los procesadores; es decir, tiene costos de acceso uniformes cuando el acceso en realidad es a la memoria. Si la ubicación se almacena en caché, el acceso será más rápido, pero los tiempos de acceso a la caché y a la memoria son los mismos en todos los procesadores."

Los sistemas SMP son sistemas multiprocesador estrechamente acoplados con un conjunto de procesadores homogéneos que se ejecutan de forma independiente entre sí. Cada procesador, que ejecuta diferentes programas y trabaja con diferentes conjuntos de datos, tiene la capacidad de compartir recursos comunes (memoria, dispositivo de E/S, sistema de interrupción, etc.) que están conectados mediante un bus del sistema o una barra transversal.

Diseño

Los sistemas SMP tienen una memoria compartida centralizada llamada memoria principal (MM) que opera bajo un solo sistema operativo con dos o más procesadores homogéneos. Por lo general, cada procesador tiene asociada una memoria privada de alta velocidad conocida como memoria caché (o caché) para acelerar el acceso a los datos de la memoria principal y reducir el tráfico del bus del sistema.

Los procesadores se pueden interconectar mediante buses, conmutadores de barras transversales o redes de malla en chip. El cuello de botella en la escalabilidad de SMP mediante buses o conmutadores de barra cruzada es el ancho de banda y el consumo de energía de la interconexión entre los distintos procesadores, la memoria y las matrices de discos. Las arquitecturas de malla evitan estos cuellos de botella y brindan una escalabilidad casi lineal a un número de procesadores mucho mayor sacrificando la capacidad de programación:

Sigue habiendo graves desafíos de programación con este tipo de arquitectura porque requiere dos modos distintos de programación; uno para las propias CPU y otro para la interconexión entre las CPU. Un solo lenguaje de programación tendría que ser capaz de dividir el volumen de trabajo, pero también comprender la localidad de memoria, que es severa en una arquitectura basada en malla.

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar dónde se encuentren los datos para esa tarea en la memoria, siempre que cada tarea en el sistema no se esté ejecutando en dos o más procesadores al mismo tiempo. Con el soporte adecuado del sistema operativo, los sistemas SMP pueden mover fácilmente tareas entre procesadores para equilibrar la carga de trabajo de manera eficiente.

Historia

El primer sistema de producción con múltiples procesadores idénticos fue el Burroughs B5000, que funcionó alrededor de 1961. Sin embargo, en tiempo de ejecución era asimétrico, con un procesador restringido a los programas de aplicación mientras que el otro manejaba principalmente el sistema operativo y las interrupciones de hardware.. El Burroughs D825 implementó SMP por primera vez en 1962.

IBM ofreció sistemas informáticos de dos procesadores basados en su System/360 Model 65 y los modelos estrechamente relacionados 67 y 67–2. Los sistemas operativos que se ejecutaban en estas máquinas eran OS/360 M65MP y TSS/360. Otro software desarrollado en universidades, en particular el Michigan Terminal System (MTS), utilizó ambas CPU. Ambos procesadores podrían acceder a los canales de datos e iniciar E/S. En OS/360 M65MP, los periféricos generalmente se podían conectar a cualquiera de los procesadores, ya que el kernel del sistema operativo se ejecutaba en ambos procesadores (aunque con un 'candado grande' alrededor del controlador de E/S). El supervisor de MTS (UMMPS) tiene la capacidad de ejecutarse en ambas CPU del IBM System/360 modelo 67–2. Los bloqueos de supervisor eran pequeños y se usaban para proteger estructuras de datos comunes individuales a las que se podía acceder simultáneamente desde cualquier CPU.

Otros mainframes que admitían SMP incluían el UNIVAC 1108 II, lanzado en 1965, que admitía hasta tres CPU, y el GE-635 y el GE-645, aunque GECOS en sistemas multiprocesador GE-635 funcionaba en un modo asimétrico maestro-esclavo. moda, a diferencia de Multics en sistemas multiprocesador GE-645, que funcionaban de forma simétrica.

A partir de su versión 7.0 (1972), el sistema operativo TOPS-10 de Digital Equipment Corporation implementó la función SMP, el primer sistema que ejecutó SMP fue el sistema de procesador dual KI10 DECSystem 1077. El sistema KL10 posterior podría agregar hasta 8 CPU de manera SMP. Por el contrario, el primer sistema VAX multiprocesador de DEC, el VAX-11/782, era asimétrico, pero los sistemas multiprocesador VAX posteriores eran SMP.

Las primeras implementaciones comerciales de Unix SMP incluyeron Sequent Computer Systems Balance 8000 (lanzado en 1984) y Balance 21000 (lanzado en 1986). Ambos modelos se basaron en procesadores National Semiconductor NS32032 de 10 MHz, cada uno con una pequeña memoria caché de escritura conectada a una memoria común para formar un sistema de memoria compartida. Otra implementación comercial temprana de Unix SMP fue el XPS-100 de Honeywell Information Systems Italia basado en NUMA diseñado por Dan Gielan de VAST Corporation en 1985. Su diseño admitía hasta 14 procesadores, pero debido a limitaciones eléctricas, la versión más grande comercializada era un sistema de procesador dual.. El sistema operativo fue derivado y portado por VAST Corporation a partir del código AT&T 3B20 Unix SysVr3 utilizado internamente en AT&T.

Existían puertos UNIX de multiprocesamiento no comerciales anteriores, incluido un puerto llamado MUNIX creado en la Escuela Naval de Posgrado en 1975.

Usos

Los sistemas de servidor y de tiempo compartido a menudo pueden usar SMP sin cambios en las aplicaciones, ya que pueden tener múltiples procesos ejecutándose en paralelo, y un sistema con más de un proceso en ejecución puede ejecutar diferentes procesos en diferentes procesadores.

En computadoras personales, SMP es menos útil para aplicaciones que no han sido modificadas. Si el sistema rara vez ejecuta más de un proceso a la vez, SMP es útil solo para aplicaciones que se han modificado para el procesamiento multiproceso (multitarea). El software programado a medida se puede escribir o modificar para usar varios subprocesos, de modo que pueda utilizar varios procesadores.

Los programas de subprocesos múltiples también se pueden usar en sistemas de servidor y de tiempo compartido que admiten subprocesos múltiples, lo que les permite hacer un mayor uso de varios procesadores.

Ventajas/desventajas

En los sistemas SMP actuales, todos los procesadores están estrechamente acoplados dentro de la misma caja con un bus o conmutador; en los sistemas SMP anteriores, una sola CPU ocupaba un gabinete completo. Algunos de los componentes que se comparten son la memoria global, los discos y los dispositivos de E/S. Solo se ejecuta una copia de un sistema operativo en todos los procesadores, y el sistema operativo debe estar diseñado para aprovechar esta arquitectura. Algunas de las ventajas básicas implican formas rentables de aumentar el rendimiento. Para resolver diferentes problemas y tareas, SMP aplica múltiples procesadores a ese problema, lo que se conoce como programación paralela.

Sin embargo, existen algunos límites en la escalabilidad de SMP debido a la coherencia de caché y los objetos compartidos.

Programación

Los sistemas monoprocesador y SMP requieren diferentes métodos de programación para lograr el máximo rendimiento. Los programas que se ejecutan en sistemas SMP pueden experimentar un aumento en el rendimiento incluso cuando se han escrito para sistemas de un solo procesador. Esto se debe a que las interrupciones de hardware generalmente suspenden la ejecución del programa, mientras que el núcleo que las maneja puede ejecutarlas en un procesador inactivo. El efecto en la mayoría de las aplicaciones (por ejemplo, juegos) no es tanto un aumento del rendimiento como la apariencia de que el programa funciona mucho mejor. Algunas aplicaciones, particularmente el software de construcción y algunos proyectos de computación distribuida, se ejecutan más rápido por un factor de (casi) la cantidad de procesadores adicionales. (Los compiladores en sí mismos son de un solo subproceso, pero, cuando se crea un proyecto de software con varias unidades de compilación, si cada unidad de compilación se maneja de forma independiente, se crea una situación vergonzosamente paralela en todo el proyecto de unidades de compilación múltiples, lo que permite una escala casi lineal de la compilación). tiempo Los proyectos de computación distribuida son inherentemente paralelos por diseño.)

Los programadores de sistemas deben incorporar soporte para SMP en el sistema operativo; de lo contrario, los procesadores adicionales permanecerán inactivos y el sistema funcionará como un sistema monoprocesador.

Los sistemas SMP también pueden dar lugar a una mayor complejidad con respecto a los conjuntos de instrucciones. Un sistema de procesador homogéneo normalmente requiere registros adicionales para "instrucciones especiales" como SIMD (MMX, SSE, etc.), mientras que un sistema heterogéneo puede implementar diferentes tipos de hardware para diferentes instrucciones/usos.

Rendimiento

Cuando se ejecuta más de un programa al mismo tiempo, un sistema SMP tiene un rendimiento considerablemente mejor que un monoprocesador, porque diferentes programas pueden ejecutarse en diferentes CPU simultáneamente. Por el contrario, el multiprocesamiento asimétrico (AMP) generalmente permite que solo un procesador ejecute un programa o una tarea a la vez. Por ejemplo, AMP se puede usar para asignar tareas específicas a la CPU según la prioridad y la importancia de la finalización de la tarea. AMP se creó mucho antes que SMP en términos de manejo de múltiples CPU, lo que explica la falta de rendimiento según el ejemplo proporcionado.

En los casos en que un entorno SMP procesa muchos trabajos, los administradores a menudo experimentan una pérdida de eficiencia del hardware. Se han desarrollado programas de software para programar trabajos y otras funciones de la computadora para que la utilización del procesador alcance su máximo potencial. Los buenos paquetes de software pueden lograr este máximo potencial programando cada CPU por separado, además de poder integrar múltiples máquinas y clústeres SMP.

El acceso a la RAM está serializado; esto y los problemas de coherencia de caché hacen que el rendimiento se retrase ligeramente con respecto a la cantidad de procesadores adicionales en el sistema.

Alternativas

Diagrama de un sistema SMP típico. Tres procesadores están conectados al mismo módulo de memoria a través de un bus de sistema o interruptor de barra cruzada

SMP utiliza un único bus de sistema compartido que representa uno de los primeros estilos de arquitecturas de máquinas multiprocesador, que normalmente se usa para construir computadoras más pequeñas con hasta 8 procesadores.

Los sistemas informáticos más grandes pueden usar arquitecturas más nuevas, como NUMA (Acceso a memoria no uniforme), que dedica diferentes bancos de memoria a diferentes procesadores. En una arquitectura NUMA, los procesadores pueden acceder a la memoria local rápidamente y a la memoria remota más lentamente. Esto puede mejorar drásticamente el rendimiento de la memoria siempre que los datos estén localizados en procesos específicos (y, por lo tanto, procesadores). En el lado negativo, NUMA hace que el costo de mover datos de un procesador a otro, como en el equilibrio de carga de trabajo, sea más caro. Los beneficios de NUMA se limitan a cargas de trabajo particulares, especialmente en servidores donde los datos a menudo están fuertemente asociados con ciertas tareas o usuarios.

Por último, está el multiprocesamiento en clúster de computadoras (como Beowulf), en el que no toda la memoria está disponible para todos los procesadores. Las técnicas de agrupamiento se utilizan bastante para construir supercomputadoras muy grandes.

Variable SMP

El multiprocesamiento simétrico variable (vSMP) es una tecnología de caso de uso móvil específica iniciada por NVIDIA. Esta tecnología incluye un quinto núcleo adicional en un dispositivo de cuatro núcleos, llamado Companion core, creado específicamente para ejecutar tareas a una frecuencia más baja durante el modo de espera activo móvil, la reproducción de video y la reproducción de música.

El Proyecto Kal-El (Tegra 3), patentado por NVIDIA, fue el primer SoC (System on Chip) en implementar esta nueva tecnología vSMP. Esta tecnología no solo reduce el consumo de energía móvil durante el estado de espera activo, sino que también maximiza el rendimiento de cuatro núcleos durante el uso activo para aplicaciones móviles intensivas. En general, esta tecnología aborda la necesidad de aumentar el rendimiento de la vida útil de la batería durante el uso activo y en espera al reducir el consumo de energía en los procesadores móviles.

A diferencia de las arquitecturas SMP actuales, el núcleo de vSMP Companion es transparente al sistema operativo, lo que significa que el sistema operativo y las aplicaciones en ejecución desconocen por completo este núcleo adicional, pero aún pueden aprovecharlo. Algunas de las ventajas de la arquitectura vSMP incluyen coherencia de caché, eficiencia del sistema operativo y optimización de energía. Las ventajas de esta arquitectura se explican a continuación:

Estas ventajas hacen que la arquitectura vSMP se beneficie considerablemente de otras arquitecturas que utilizan tecnologías de reloj asincrónico.