Multiprocesamiento simétrico

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 23 de abril de 2018; las comprobaciones requieren 7 ediciones .

Multiprocesamiento simétrico ( ing.  multiprocesamiento simétrico , abreviado SMP ) - arquitectura de computadoras multiprocesador , en la que dos o más procesadores idénticos de rendimiento comparable están conectados de manera uniforme a la memoria compartida (y dispositivos periféricos) y realizan las mismas funciones (por qué, en De hecho, el sistema se llama simétrico ) [1] . En inglés, los sistemas SMP también se denominan multiprocesadores fuertemente acoplados [2] , ya que en esta clase de sistemas, los procesadores están estrechamente conectados entre sí a través de un bus común.y tienen igual acceso a todos los recursos del sistema informático (memoria y dispositivos de E/S) y todos son administrados por una copia del sistema operativo .

En la taxonomía de Flynn, las máquinas SMP pertenecen a la clase de máquinas SM-MIMD . La mayoría de los sistemas multiprocesador actuales utilizan la arquitectura SMP.

Descripción

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea, independientemente de en qué parte de la memoria se almacenen los datos para esa tarea; con el soporte adecuado del sistema operativo , los sistemas SMP pueden mover fácilmente tareas entre procesadores, distribuyendo la carga de manera efectiva.

Diferentes sistemas SMP conectan procesadores a la memoria compartida de diferentes maneras. El enfoque más simple y económico es una conexión de bus del sistema [ 3 ] [4] . En este caso, solo un procesador puede acceder a la memoria en un momento dado, lo que impone un límite significativo en la cantidad de procesadores admitidos en dichos sistemas. Cuantos más procesadores, mayor la carga en el bus compartido, más tiempo debe esperar cada procesador hasta que el bus esté libre para acceder a la memoria. La disminución en el rendimiento general de un sistema de este tipo con un aumento en la cantidad de procesadores ocurre muy rápidamente, por lo que, por lo general, en dichos sistemas, la cantidad de procesadores no supera los 2-4. Un ejemplo de máquinas SMP con esta forma de conectar procesadores son los servidores multiprocesadores de nivel de entrada.

La segunda forma de conectar los procesadores es a través de una conexión conmutada (interruptor de barra transversal) [3] [5] . Con tal conexión, toda la memoria compartida se divide en bancos de memoria, cada banco de memoria tiene su propio bus, y los procesadores están conectados a todos los buses, teniendo acceso a cualquiera de los bancos de memoria a través de ellos. Tal conexión es más compleja en cuanto a circuitos, pero permite que los procesadores accedan a la memoria compartida al mismo tiempo. Esto le permite aumentar la cantidad de procesadores en el sistema hasta 8-16 sin una disminución notable en el rendimiento general. Un ejemplo de estas máquinas SMP son las estaciones de trabajo multiprocesador RS/6000.

Ventajas y desventajas

SMP es la forma más fácil y rentable de escalar un sistema informático: aumentando la cantidad de procesadores. La programación también es simple: usar hilos y mecanismos relacionados para intercambiar datos entre ellos a través de variables compartidas en la memoria.

SMP se usa a menudo en la ciencia, la industria y los negocios, donde el software está diseñado específicamente para la ejecución de subprocesos múltiples. Al mismo tiempo, la mayoría de los productos de consumo, como los editores de texto y los juegos de computadora, están escritos de tal manera que no pueden aprovechar las ventajas de los sistemas SMP. En el caso de los juegos, esto se debe muchas veces a que optimizar el programa para sistemas SMP conducirá a una pérdida de rendimiento al trabajar en sistemas monoprocesador, que hasta hace poco ocupaban gran parte del mercado de PC . (Los procesadores multinúcleo modernos son solo otra implementación de hardware de SMP). Debido a la naturaleza de los diferentes métodos de programación, para obtener el máximo rendimiento, se requerirán diseños separados para admitir un solo procesador de un solo núcleo y sistemas SMP. Sin embargo, los programas que se ejecutan en sistemas SMP obtienen poca ganancia de rendimiento, incluso si se escribieron para sistemas de un solo procesador. Esto se debe a que las interrupciones de hardware , que normalmente pausan la ejecución de un programa para ser procesado por el núcleo, se pueden procesar en un procesador libre (núcleo del procesador). El efecto en la mayoría de las aplicaciones no es tanto un aumento del rendimiento, sino una sensación de que el programa funciona con mayor fluidez. En algunos programas de aplicación (en particular: compiladores de software y algunos proyectos de computación distribuida ), el aumento del rendimiento será casi directamente proporcional a la cantidad de procesadores adicionales.

La falla de un procesador hace que todo el sistema funcione mal y requiere un reinicio de todo el sistema para desactivar el procesador fallido. La falla de un núcleo del procesador a menudo resulta en la falla de todo el procesador multinúcleo, si el procesador multinúcleo no está equipado con una protección integrada que desactive el núcleo del procesador defectuoso y, a través de esto, permita que los núcleos del procesador en buen estado continúen funcionando normalmente. .

Límite del procesador

Con un aumento en el número de procesadores, el requisito de ancho de banda del bus de memoria aumenta notablemente. Esto impone un límite en la cantidad de procesadores en la arquitectura SMP. Los modernos sistemas SMP permiten un funcionamiento eficiente con 16 procesadores.

Problema de coherencia de caché

Todos los procesadores modernos están equipados con una memoria caché de varios niveles para obtener más rápidamente los datos y las instrucciones de la máquina desde la memoria principal, que es más lenta que el procesador. En un sistema multiprocesador, la presencia de memoria caché en los procesadores reduce la carga en el bus común o en la conexión de acceso telefónico, lo que tiene un efecto muy favorable en el rendimiento general del sistema. Pero dado que cada procesador está equipado con su propia memoria caché individual, existe el peligro de que la memoria caché de un procesador obtenga un valor variable diferente del que está almacenado en la memoria principal y en la memoria caché de otro procesador. Imagine que el procesador cambia el valor de una variable en su caché, y otro procesador solicita esta variable de la memoria principal, y (el segundo procesador) recibirá un valor no válido para la variable. O, por ejemplo, el subsistema de E/S escribe un nuevo valor de una variable en la memoria principal y el obsoleto todavía está en la memoria caché del procesador. La solución a este problema se confía al protocolo de coherencia de caché, que está diseñado para garantizar la coherencia ("coherencia") de los cachés de todos los procesadores y la memoria principal sin pérdida de rendimiento general [6] .

Soporte del sistema operativo

La compatibilidad con SMP debe estar integrada en el sistema operativo; de lo contrario, los procesadores adicionales estarán inactivos y el sistema funcionará como un solo procesador. (En realidad, este problema también es relevante para los sistemas de un solo procesador con procesadores de varios núcleos). La mayoría de los sistemas operativos modernos admiten el multiprocesamiento simétrico, pero en diversos grados.

El soporte para multiprocesamiento en el sistema operativo Linux se agregó en la versión 2.0 [7] del kernel y se mejoró en la versión 2.6. La línea de sistemas operativos Windows NT se creó originalmente con soporte multiprocesador. ( Windows 9x SMP no era compatible).

Alternativas

SMP es solo una opción para construir una máquina multiprocesador. Otro concepto es NUMA , que proporciona a los procesadores bancos de memoria independientes. Esto permite que los procesadores trabajen con la memoria en paralelo y puede mejorar en gran medida el ancho de banda de la memoria cuando los datos están vinculados al proceso (y, por lo tanto, al procesador). Por otro lado, NUMA aumenta el costo de mover datos entre procesadores, lo que significa que el equilibrio de carga es más costoso. Los beneficios de NUMA se limitan a un rango específico de tareas, principalmente servidores, donde los datos a menudo están codificados para tareas o usuarios específicos.

Otro concepto es el multiprocesamiento asimétrico ( ASMP ), en el que se utilizan procesadores especializados individuales para tareas específicas, y el multiprocesamiento en clúster ( Beowulf ), en el que no toda la memoria está disponible para todos los procesadores. Estos enfoques no se utilizan con frecuencia (aunque los conjuntos de chips 3D de alto rendimiento en las tarjetas de video modernas pueden considerarse una forma de multiprocesamiento asimétrico), mientras que los sistemas de clúster se usan ampliamente en la construcción de supercomputadoras muy grandes .

Véase también

Notas

  1. Stallings, 2011 , pág. 33.
  2. Chevance, 2004 , pág. 265.
  3. 1 2 Severance_Dowd, 1998 , pág. 195.
  4. Chevance, 2004 , pág. 266.
  5. Chevance, 2004 , pág. 267.
  6. Severance_Dowd, 1998 , p. 198.
  7. Dhamdhere, 2008 , pág. 355.

Literatura

Enlaces