
El multiprocesamiento simétrico o multiprocesamiento de memoria compartida [ 1 ] ( SMP ) implica una arquitectura de hardware y software de computadora multiprocesador donde dos o más procesadores idénticos están conectados a una única memoria principal compartida , tienen acceso completo a todos los dispositivos de entrada y salida, y son controlados por una única 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, tratándolos como procesadores separados.
El profesor John D. Kubiatowicz considera tradicionalmente que los sistemas SMP contienen procesadores sin caché. [ 2 ] Culler y Pal-Singh, en su libro de 1998 "Arquitectura de computadoras paralelas: un enfoque de hardware/software", mencionan: "El término SMP se usa ampliamente, pero causa cierta confusión. [...] La descripción más precisa de lo que se entiende por SMP es un multiprocesador de memoria compartida donde el costo de acceso a una ubicación de memoria es el mismo para todos los procesadores; es decir, tiene costos de acceso uniformes cuando el acceso es realmente a la memoria. Si la ubicación está en caché, el acceso será más rápido, pero los tiempos de acceso a la caché y los tiempos de acceso a la memoria son los mismos en todos los procesadores." [ 3 ]
Los sistemas SMP son sistemas multiprocesador estrechamente acoplados con un conjunto de procesadores homogéneos que funcionan 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 interrupciones, etc.) que están conectados mediante un bus del sistema o una matriz de interconexión .
Diseño
Los sistemas SMP cuentan con una memoria compartida centralizada , denominada memoria principal (MM), que opera bajo un único sistema operativo con dos o más procesadores homogéneos. Generalmente, cada procesador dispone de una memoria privada de alta velocidad asociada, conocida como memoria caché (o simplemente caché), para acelerar el acceso a los datos de la memoria principal y reducir el tráfico del bus del sistema.
Los procesadores pueden interconectarse mediante buses, conmutadores de barra cruzada o redes de malla integradas en el chip. El principal obstáculo para 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 obstáculos y proporcionan una escalabilidad casi lineal a un número mucho mayor de procesadores, a costa de la programabilidad.
Este tipo de arquitectura presenta serios desafíos de programación, ya que requiere dos modos de programación distintos: uno para las propias CPU y otro para la interconexión entre ellas. Un único lenguaje de programación tendría que ser capaz no solo de particionar la carga de trabajo, sino también de comprender la localidad de la memoria, que es crítica en una arquitectura basada en malla. [ 4 ]
Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea, independientemente de la ubicación de los datos de dicha tarea en la memoria, siempre que cada tarea del sistema no se ejecute simultáneamente en dos o más procesadores. Con el soporte adecuado del sistema operativo , los sistemas SMP pueden transferir 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 estuvo operativo alrededor de 1961. Sin embargo, en tiempo de ejecución, este sistema era asimétrico , con un procesador restringido a los programas de aplicación mientras que el otro se encargaba principalmente del sistema operativo y las interrupciones de hardware. El Burroughs D825 implementó por primera vez la multiprocesamiento simétrico (SMP) en 1962. [ 5 ] [ 6 ]
IBM ofreció sistemas informáticos de doble procesador basados en su System/360 Modelo 65 y los estrechamente relacionados Modelo 67 [ 7 ] y 67-2. [ 8 ] Los sistemas operativos que se ejecutaban en estas máquinas eran OS/360 M65MP [ 9 ] y TSS/360 . Otro software desarrollado en universidades, en particular el Michigan Terminal System (MTS), utilizaba ambas CPU. Ambos procesadores podían acceder a los canales de datos e iniciar E/S. En OS/360 M65MP, los periféricos generalmente podían conectarse a cualquiera de los dos procesadores, ya que el núcleo del sistema operativo se ejecutaba en ambos (aunque con un "bloqueo grande" alrededor del controlador de E/S). [ 10 ] El supervisor del MTS (UMMPS) tiene la capacidad de ejecutarse en ambas CPU del IBM System/360 modelo 67-2. Los bloqueos del supervisor eran pequeños y se utilizaban para proteger estructuras de datos comunes individuales a las que se podía acceder simultáneamente desde cualquiera de las CPU. [ 11 ]
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 GE-645 , [ 12 ] [ 13 ] aunque GECOS en los sistemas multiprocesador GE-635 funcionaba de forma asimétrica maestro-esclavo, a diferencia de Multics en los sistemas multiprocesador GE-645, que funcionaba de forma simétrica. [ 14 ]
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 la ejecutó fue el DECSystem 1077, un sistema de procesador dual KI10. [ 15 ] Posteriormente, el sistema KL10 podía agregar hasta 8 CPU de forma SMP. En contraste, el primer sistema VAX multiprocesador de DEC , el VAX-11/782, era asimétrico, [ 16 ] pero los sistemas VAX multiprocesador posteriores eran SMP. [ 17 ]
Las primeras implementaciones comerciales de Unix SMP incluyeron el Sequent Computer Systems Balance 8000 (lanzado en 1984) y el Balance 21000 (lanzado en 1986). [ 18 ] Ambos modelos se basaban en procesadores National Semiconductor NS32032 de 10 MHz , cada uno con una pequeña caché de escritura directa conectada a una memoria común para formar un sistema de memoria compartida . Otra implementación comercial temprana de Unix SMP fue el Honeywell Information Systems Italy XPS-100 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 fue un sistema de doble procesador. El sistema operativo fue derivado y portado por VAST Corporation a partir del código AT&T 3B20 Unix SysVr3 utilizado internamente dentro de AT&T.
Anteriormente existían puertos UNIX multiprocesador no comerciales, incluido un puerto llamado MUNIX creado en la Escuela Naval de Posgrado en 1975. [ 19 ]
Usos
Los sistemas de tiempo compartido y los sistemas de servidor a menudo pueden usar SMP sin realizar cambios en las aplicaciones, ya que pueden tener varios 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 ordenadores personales , el procesamiento multihilo (SMP) resulta menos útil para aplicaciones que no han sido modificadas. Si el sistema rara vez ejecuta más de un proceso a la vez, el SMP solo es útil para aplicaciones que han sido modificadas para el procesamiento multihilo (multitarea). El software programado a medida puede escribirse o modificarse para utilizar múltiples hilos, de modo que pueda aprovechar varios procesadores.
Los programas multihilo también pueden utilizarse en sistemas de tiempo compartido y servidores que admiten multihilo, lo que les permite aprovechar mejor los múltiples procesadores.
Ventajas/desventajas
En los sistemas SMP actuales, todos los procesadores están estrechamente conectados dentro de la misma caja mediante un bus o conmutador; en los sistemas SMP anteriores, una sola CPU ocupaba un gabinete completo. Algunos de los componentes compartidos son la memoria global, los discos y los dispositivos de E/S. Solo una copia del sistema operativo se ejecuta en todos los procesadores, y este debe diseñarse para aprovechar esta arquitectura. Algunas de las ventajas básicas incluyen métodos rentables para aumentar el rendimiento. Para resolver diferentes problemas y tareas, SMP aplica múltiples procesadores a un mismo problema, lo que se conoce como programación paralela .
Sin embargo, existen algunas limitaciones en la escalabilidad de SMP debido a la coherencia de la caché y los objetos compartidos.
Programación
Los sistemas monoprocesador y SMP requieren métodos de programación diferentes para alcanzar el máximo rendimiento. Los programas que se ejecutan en sistemas SMP pueden experimentar un aumento de rendimiento incluso si se han escrito para sistemas monoprocesador. Esto se debe a que las interrupciones de hardware suelen suspender la ejecución del programa, mientras que el núcleo que las gestiona puede ejecutarse en un procesador inactivo. En la mayoría de las aplicaciones (por ejemplo, juegos), el efecto no es tanto un aumento de rendimiento como la impresión de que el programa se ejecuta con mucha más fluidez. Algunas aplicaciones, en particular el desarrollo de software y algunos proyectos de computación distribuida , se ejecutan más rápido por un factor de (casi) el número de procesadores adicionales. (Los compiladores son de un solo hilo, pero, al desarrollar un proyecto de software con múltiples unidades de compilación, si cada unidad se gestiona de forma independiente, se crea una situación de paralelismo considerable en todo el proyecto, lo que permite una escalabilidad casi lineal del tiempo de compilación. 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 generar mayor complejidad en lo que respecta a los conjuntos de instrucciones. Un sistema de procesador homogéneo generalmente 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 o usos.
Actuación
Cuando se ejecutan varios programas simultáneamente, un sistema SMP ofrece un rendimiento considerablemente superior al de un sistema monoprocesador, ya que diferentes programas pueden ejecutarse en distintas CPU al mismo tiempo. Por el contrario, el multiprocesamiento asimétrico (AMP) generalmente permite que solo un procesador ejecute un programa o tarea a la vez. Por ejemplo, AMP se puede utilizar para asignar tareas específicas a la CPU según su prioridad e importancia. AMP se creó mucho antes que SMP en lo que respecta al manejo de múltiples CPU, lo que explica la menor eficiencia observada en el ejemplo proporcionado.
En entornos SMP donde se procesan muchos trabajos, los administradores suelen experimentar una disminución en la eficiencia del hardware. Se han desarrollado programas informáticos para programar los trabajos y otras funciones del equipo de manera que la utilización del procesador alcance su máximo potencial. Los mejores paquetes de software pueden lograr este máximo potencial programando cada CPU de forma independiente, además de poder integrar múltiples máquinas y clústeres SMP.
El acceso a la memoria RAM se realiza de forma serializada; esto, junto con problemas de coherencia de la caché, provoca que el rendimiento sea ligeramente inferior al de la cantidad de procesadores adicionales en el sistema.
Alternativas

SMP utiliza un único bus de sistema compartido que representa uno de los primeros estilos de arquitecturas de máquinas multiprocesador, utilizado normalmente para construir ordenadores más pequeños con hasta 8 procesadores.
Los sistemas informáticos de mayor tamaño pueden utilizar arquitecturas más modernas, como NUMA (Acceso a Memoria No Uniforme), que asigna distintos 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, en procesadores). Como desventaja, NUMA encarece el coste de transferir datos de un procesador a otro, como en el balanceo de carga. Las ventajas de NUMA se limitan a cargas de trabajo específicas, sobre todo en servidores donde los datos suelen estar estrechamente asociados a determinadas tareas o usuarios.
Finalmente, existe el procesamiento paralelo en clústeres (como Beowulf ), en el que no toda la memoria está disponible para todos los procesadores. Las técnicas de agrupación en clústeres se utilizan ampliamente para construir supercomputadoras de gran tamaño.
SMP variable
El procesamiento multiprocesador simétrico variable (vSMP) es una tecnología específica para dispositivos móviles desarrollada por NVIDIA. Esta tecnología incluye un quinto núcleo adicional en un dispositivo de cuatro núcleos, denominado núcleo complementario, diseñado específicamente para ejecutar tareas a una frecuencia menor durante el modo de espera activo, la reproducción de vídeo y la reproducción de música en dispositivos móviles.
El proyecto Kal-El ( Tegra 3 ), [ 20 ] patentado por NVIDIA, fue el primer SoC (Sistema en Chip) en implementar esta nueva tecnología vSMP. Esta tecnología reduce el consumo de energía móvil durante el estado de espera activo y, además, maximiza el rendimiento de los procesadores de cuatro núcleos durante el uso activo para aplicaciones móviles intensivas. En general, esta tecnología satisface la necesidad de aumentar la duración de la batería tanto en el uso activo como en el de espera, al reducir el consumo de energía de los procesadores móviles.
Véase también
- Multiprocesamiento asimétrico
- Multiprocesamiento celular
- Configuración regional (hardware informático)
- Masivamente paralelo
- Espacio de direcciones global particionado
- Multihilo simultáneo : donde los elementos funcionales de un núcleo de CPU se asignan a través de múltiples hilos de ejecución.
- bloqueo de software
- Xeon Phi
Referencias
- ↑ Patterson, David ; Hennessy, John (2018). Organización y diseño de computadoras: la interfaz hardware/software (ed. RISC-V ). Cambridge, Estados Unidos: Morgan Kaufmann. pág. 509. ISBN 978-0-12-812275-4.
- ↑ John Kubiatowicz. Introducción a las arquitecturas paralelas y Pthreads . Curso breve de programación paralela de 2013.
- ↑ David Culler ; Jaswinder Pal Singh; Anoop Gupta (1999). Arquitectura de computadoras paralelas: un enfoque de hardware/software . Morgan Kaufmann . pág. 47. ISBN 978-1-55860-343-1.
- ↑ Lina J. Karam; Ismail AlKamal; Alan Gatherer; Gene A. Frantz; David V. Anderson; Brian L. Evans (2009). "Tendencias en plataformas DSP multinúcleo" (PDF) . IEEE Signal Processing Magazine . 26 (6): 38– 49. Bibcode : 2009ISPM...26...38K . doi : 10.1109/MSP.2009.934113 . S2CID 9429714 .
- ↑ Gregory V. Wilson (octubre de 1994). "La historia del desarrollo de la computación paralela" .
- ↑ Martin H. Weik (enero de 1964). "Un cuarto estudio sobre sistemas informáticos digitales electrónicos domésticos" . Laboratorios de Investigación Balística , Campo de Pruebas de Aberdeen . Burroughs D825.
- ↑ Características funcionales del IBM System/360 Modelo 65 (PDF) . Cuarta edición. IBM. Septiembre de 1968. A22-6884-3.
- ↑ Características funcionales del IBM System/360 Modelo 67 (PDF) . Tercera edición. IBM. Febrero de 1972. GA27-2719-2.
- ↑ M65MP: Un experimento en multiprocesamiento OS/360
- ↑ Manual de lógica de programas, lógica de supervisión de E/S del sistema operativo, versión 21 (R21.7) (PDF) (Décima edición). IBM. Abril de 1973. GY28-6616-9.
- ↑ El libro "Time Sharing Supervisor Programs" de Mike Alexander (mayo de 1971) contiene información sobre MTS, TSS, CP/67 y Multics.
- ↑ Manual del sistema GE-635 (PDF) . General Electric . Julio de 1964.
- ↑ Manual del sistema GE-645 (PDF) . General Electric. Enero de 1968.
- ↑ Richard Shetron (5 de mayo de 1998). "¿Miedo al multiprocesamiento?" . Grupo de noticias : alt.folklore.computers . Usenet: 354e95a9.0@news.wizvax.net .
- ↑ DIC 1077 y SMP
- ↑ Guía de ventas de productos VAX, páginas 1-23 y 1-24 : el VAX-11/782 se describe como un sistema de multiprocesamiento asimétrico en 1982.
- ↑ Guía del usuario del hardware del sistema VAX 8820/8830/8840 : en 1988, el sistema operativo VAX era SMP.
- ↑ Hockney, RW; Jesshope, CR (1988). Computadoras paralelas 2: Arquitectura, programación y algoritmos . Taylor & Francis. pág. 46. ISBN 0-85274-811-6.
- ↑ Hawley, John Alfred (junio de 1975). "MUNIX, una versión multiprocesadora de UNIX" (PDF) . core.ac.uk. Consultado el 11 de noviembre de 2018 .
- ↑ Variable SMP: una arquitectura de CPU multinúcleo para bajo consumo y alto rendimiento. NVIDIA. 2011.
Enlaces externos
- Historia del multiprocesamiento
- Linux y multiprocesamiento
- AMD
- Clases de computadoras
- La taxonomía de Flynn
- Computación paralela