De Wikipedia, la enciclopedia libre
  (Redirigido desde multiprocesamiento simétrico )
Saltar a navegación Saltar a búsqueda
Diagrama de un sistema de multiprocesamiento simétrico

El multiprocesamiento simétrico ( SMP ) implica una arquitectura de hardware y software de computadora multiprocesador en la que 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 están controlados por una única instancia del sistema operativo que trata todos los procesadores por igual, sin reservar ninguno para fines especiales. La mayoría de los sistemas multiprocesador actuales utilizan una arquitectura SMP. En el caso de los procesadores de múltiples núcleos , 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és. [1] Culler y Pal-Singh en su libro de 1998 "Parallel Computer Architecture: A Hardware / Software Approach" mencionan: "El término SMP se usa ampliamente pero causa un poco de confusión. [...] La descripción más precisa de qué SMP pretende ser 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 está almacenada en caché, el acceso será más rápido, pero los tiempos de acceso a la memoria caché y los tiempos de acceso a la memoria son los mismos en todos los procesadores ". [2]

Sistemas SMP se multiprocesador estrechamente unidas sistemas con un grupo de procesadores homogéneos ejecutan de forma independiente el uno del otro. 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 [ editar ]

Los sistemas SMP tienen 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 una memoria privada de alta velocidad asociada 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 pueden interconectarse mediante buses, conmutadores de barras cruzadas o redes de malla en chip. El cuello de botella en la escalabilidad de SMP usando 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 proporcionan una escalabilidad casi lineal a recuentos de procesadores mucho más altos sacrificando la capacidad de programación:

Siguen existiendo serios 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 poder no solo dividir la carga de trabajo, sino también comprender la localidad de la memoria, lo cual es grave en una arquitectura basada en malla. [3]

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 del sistema no esté en ejecución 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 [ editar ]

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

IBM ofreció sistemas informáticos de doble procesador basados ​​en su System / 360 Modelo 65 y el Modelo 67 [6] y 67-2 estrechamente relacionado . [7] Los sistemas operativos que se ejecutaban en estas máquinas eran OS / 360 M65MP [8] y TSS / 360 . Otro software desarrollado en universidades, en particular el Michigan Terminal System (MTS), utilizó ambas CPU. Ambos procesadores pueden acceder a los canales de datos e iniciar E / S. En OS / 360 M65MP, los periféricos generalmente se pueden conectar a cualquier procesador, ya que el núcleo del sistema operativo se ejecuta en ambos procesadores (aunque con un "gran bloqueo" alrededor del controlador de E / S). [9] El supervisor 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. [10]

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 , [11] [12] aunque GECOS en sistemas multiprocesador GE-635 se ejecutaba en un maestro. -slave asimétrica, a diferencia de Multics en sistemas multiprocesador GE-645, que funcionaban de forma simétrica. [13]

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 ejecutaba SMP fue el sistema de procesador KI10 dual DECSystem 1077 . [14] El sistema KL10 posterior podría agregar hasta 8 CPU en forma SMP. En contraste, el primer sistema VAX multiprocesador de DEC , el VAX-11/782, era asimétrico, [15] pero los sistemas multiprocesador VAX posteriores eran SMP. [dieciséis]

Las primeras implementaciones comerciales de Unix SMP incluyeron Sequent Computer Systems Balance 8000 (lanzado en 1984) y Balance 21000 (lanzado en 1986). [17] Ambos modelos se basaron 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 una memoria compartida.sistema. 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 era un sistema de procesador dual. . El sistema operativo fue derivado y adaptado por VAST Corporation del código AT&T 3B20 Unix SysVr3 utilizado internamente dentro de AT&T.

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

Usos [ editar ]

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 se han modificado. 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 procesamiento multiproceso (multitarea). El software programado a medida se puede escribir o modificar para utilizar varios subprocesos, de modo que pueda utilizar varios procesadores.

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

Ventajas / desventajas [ editar ]

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 todo un gabinete. 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, conocido como programación paralela .

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

Programación [ editar ]

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 monoprocesador. 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 ejecutarse 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 se ejecuta con mucha más fluidez. Algunas aplicaciones, en particular el software de construcción y alguna informática distribuidaproyectos, se ejecutan más rápido en un factor (casi) del número de procesadores adicionales. (Los compiladores por sí mismos son de un solo subproceso, pero, al construir un proyecto de software con múltiples unidades de compilación, si cada unidad de compilación se maneja de forma independiente, esto crea una situación vergonzosamente paralela en todo el proyecto de múltiples unidades de compilación , lo que permite un escalado casi lineal de la compilación. Los proyectos de computación distribuida son inherentemente paralelos por diseño).

Los programadores de sistemas deben crear soporte para SMP en el sistema operativo ; de lo contrario, los procesadores adicionales permanecen inactivos y el sistema funciona como un sistema monoprocesador.

Los sistemas SMP también pueden generar 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 [ editar ]

Cuando se ejecuta más de un programa al mismo tiempo, un sistema SMP tiene un rendimiento considerablemente mejor que un uni-procesador, porque diferentes programas pueden ejecutarse en diferentes CPU simultáneamente. De manera similar, 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 utilizar para asignar tareas específicas a la CPU en función de 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 la caché hacen que el rendimiento se retrase ligeramente con respecto al número de procesadores adicionales en el sistema.

Alternativas [ editar ]

Diagrama de un sistema SMP típico. Tres procesadores están conectados al mismo módulo de memoria a través de un bus del sistema o un 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 se utiliza normalmente para construir computadoras más pequeñas con hasta 8 procesadores.

Los sistemas informáticos más grandes pueden utilizar 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 encarece el costo de mover datos de un procesador a otro, como en el equilibrio de la carga de trabajo. Los beneficios de NUMA se limitan a cargas de trabajo particulares, especialmente en servidores donde los datos a menudo se asocian fuertemente con ciertas tareas o usuarios.

Por último, existe 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 agrupación en clústeres se utilizan con bastante frecuencia para construir supercomputadoras muy grandes.

SMP variable [ editar ]

El multiprocesamiento simétrico variable (vSMP) es una tecnología de casos 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, construido específicamente para ejecutar tareas a una frecuencia más baja durante el modo de espera activo móvil, reproducción de video y reproducción de música.

El Proyecto Kal-El ( Tegra 3 ), [19] 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 la coherencia de la caché, la eficiencia del sistema operativo y la optimización de la energía. Las ventajas de esta arquitectura se explican a continuación:

  • Coherencia de caché: No hay consecuencias por sincronizar cachés entre núcleos que se ejecutan a diferentes frecuencias, ya que vSMP no permite que el núcleo complementario y los núcleos principales se ejecuten simultáneamente.
  • Eficiencia del sistema operativo: es ineficiente cuando se ejecutan varios núcleos de CPU a diferentes frecuencias asíncronas porque esto podría dar lugar a posibles problemas de programación. [ ¿cómo? ] Con vSMP, los núcleos de CPU activos se ejecutarán a frecuencias similares para optimizar la programación del sistema operativo.
  • Optimización de energía: en la arquitectura basada en reloj asíncrono, cada núcleo está en un plano de energía diferente para manejar los ajustes de voltaje para diferentes frecuencias de operación. El resultado de esto podría afectar el rendimiento. [ ¿cómo? ] La tecnología vSMP puede habilitar y deshabilitar dinámicamente ciertos núcleos para el uso activo y en espera, lo que reduce el consumo total de energía.

Estas ventajas llevan a la arquitectura vSMP a beneficiarse considerablemente [ término de pavo real ] sobre otras arquitecturas que utilizan tecnologías de reloj asíncrono.

Ver también [ editar ]

  • Multiprocesamiento asimétrico
  • Máquina de flujo de datos modular binario
  • Locale (hardware de computadora)
  • Masivamente paralelo
  • Espacio de direcciones global particionado
  • Múltiples subprocesos simultáneos : donde los elementos funcionales de un núcleo de CPU se asignan en varios subprocesos de ejecución
  • Bloqueo de software
  • Xeon Phi

Referencias [ editar ]

  1. ^ John Kubiatowicz. Introducción a las arquitecturas paralelas y los subprocesos . 2013 Curso Corto de Programación Paralela.
  2. ^ David Culler ; Jaswinder Pal Singh; Anoop Gupta (1999). Arquitectura informática paralela: un enfoque de hardware / software . Morgan Kaufmann . pag. 47. ISBN 978-1558603431.
  3. ^ Lina J. Karam, Ismail AlKamal, Alan recolector, Gene A. Frantz, David V. Anderson, Brian L. Evans (2009). "Tendencias en plataformas DSP multinúcleo" (PDF) . Revista de procesamiento de señales IEEE . 26 (6): 38–49. Código Bibliográfico : 2009ISPM ... 26 ... 38K . doi : 10.1109 / MSP.2009.934113 . S2CID 9429714 .  CS1 maint: uses authors parameter (link)
  4. ^ Gregory V. Wilson (octubre de 1994). "La Historia del Desarrollo de la Computación Paralela" .
  5. ^ Martin H. Weik (enero de 1964). "Una cuarta encuesta de sistemas informáticos digitales electrónicos domésticos" . Laboratorios de investigación balística , campo de pruebas de Aberdeen . Burroughs D825.
  6. ^ Características funcionales IBM System / 360 Model 65 (PDF) . Cuarta edición. IBM. Septiembre de 1968. A22-6884-3.
  7. ^ Características funcionales IBM System / 360 Model 67 (PDF) . Tercera edicion. IBM. Febrero de 1972. GA27-2719-2.
  8. ^ M65MP: un experimento en multiprocesamiento OS / 360
  9. ^ Program Logic Manual, OS I / O Supervisor Logic, Release 21 (R21.7) (PDF) (Décima ed.). IBM. Abril de 1973. GY28-6616-9.
  10. ^ Programas de supervisor de tiempo compartido por Mike Alexander (mayo de 1971) tiene información sobre MTS, TSS, CP / 67 y Multics
  11. ^ Manual del sistema GE-635 (PDF) . General Electric . Julio de 1964.
  12. ^ Manual del sistema GE-645 (PDF) . Energia General. Enero de 1968.
  13. ^ Richard Shetron (5 de mayo de 1998). "¿Miedo al multiprocesamiento?" . Grupo de noticiasalt.folklore.computers . Usenet: [email protected] . 
  14. ^ DEC 1077 y SMP
  15. ^ 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
  16. ^ Guía del usuario del hardware del sistema VAX 8820/8830/8840 : en 1988, el sistema operativo VAX era SMP
  17. ^ Hockney, RW; Jesshope, CR (1988). Computadoras paralelas 2: Arquitectura, Programación y Algoritmos . Taylor y Francis. pag. 46. ISBN 0-85274-811-6.
  18. ^ Hawley, John Alfred (junio de 1975). "MUNIX, una versión multiprocesamiento de UNIX" (PDF) . core.ac.uk . Consultado el 11 de noviembre de 2018 .
  19. ^ SMP variable: una arquitectura de CPU de varios núcleos para bajo consumo y alto rendimiento. NVIDIA. 2011.

Enlaces externos [ editar ]

  • Historia del multiprocesamiento
  • Linux y multiprocesamiento
  • AMD