Multiprocesamiento
Multiprocesamiento es el uso de dos o más unidades centrales de procesamiento (CPU) dentro de un solo sistema informático. El término también se refiere a la capacidad de un sistema para admitir más de un procesador o la capacidad de asignar tareas entre ellos. Hay muchas variaciones sobre este tema básico, y la definición de multiprocesamiento puede variar según el contexto, principalmente en función de cómo se definen las CPU (múltiples núcleos en un dado, múltiples dados en un paquete, múltiples paquetes en una unidad de sistema, etc.).
Según algunos diccionarios en línea, un multiprocesador es un sistema informático que tiene dos o más unidades de procesamiento (múltiples procesadores), cada una de las cuales comparte memoria principal y periféricos, para procesar programas simultáneamente. Un libro de texto de 2009 definió el sistema multiprocesador de manera similar, pero señaló que los procesadores pueden compartir "alguna o toda la memoria del sistema y las instalaciones de E/S"; también dio sistema estrechamente acoplado como término sinónimo.
A nivel del sistema operativo, multiprocesamiento a veces se usa para referirse a la ejecución de múltiples procesos simultáneos en un sistema, con cada proceso ejecutándose en una CPU o núcleo separado, en lugar de un solo proceso en cualquier instante. Cuando se usa con esta definición, el multiprocesamiento a veces se contrasta con la multitarea, que puede usar un solo procesador pero cambiarlo en intervalos de tiempo entre tareas (es decir, un sistema de tiempo compartido). Sin embargo, el multiprocesamiento significa una verdadera ejecución paralela de múltiples procesos utilizando más de un procesador. El multiprocesamiento no significa necesariamente que un solo proceso o tarea use más de un procesador simultáneamente; el término procesamiento paralelo se usa generalmente para denotar ese escenario. Otros autores prefieren referirse a las técnicas del sistema operativo como multiprogramación y reservan el término multiprocesamiento para el aspecto hardware de tener más de un procesador. El resto de este artículo analiza el multiprocesamiento solo en este sentido de hardware.
En la taxonomía de Flynn, los multiprocesadores definidos anteriormente son máquinas MIMD. Como el término "multiprocesador" normalmente se refiere a sistemas estrechamente acoplados en los que todos los procesadores comparten memoria, los multiprocesadores no son la clase completa de máquinas MIMD, que también contienen sistemas de múltiples computadoras que pasan mensajes.
Prehistoria
Posiblemente, la primera expresión de la idea de multiprocesamiento fue escrita por Luigi Federico Menabrea en 1842, sobre el motor analítico de Charles Babbage (traducido por Ada Lovelace): "la máquina puede ponerse en juego para que como para dar varios resultados al mismo tiempo, lo que acortará en gran medida la cantidad total de los procesos."
Temas clave
Simetría del procesador
En un sistema de multiprocesamiento, todas las CPU pueden ser iguales o algunas pueden reservarse para propósitos especiales. Una combinación de consideraciones de diseño de hardware y software del sistema operativo determina la simetría (o la falta de ella) en un sistema determinado. Por ejemplo, las consideraciones de hardware o software pueden requerir que solo una CPU en particular responda a todas las interrupciones de hardware, mientras que el resto del trabajo en el sistema puede distribuirse equitativamente entre las CPU; o la ejecución del código en modo kernel puede estar restringida a una sola CPU en particular, mientras que el código en modo usuario puede ejecutarse en cualquier combinación de procesadores. Los sistemas de multiprocesamiento suelen ser más fáciles de diseñar si se imponen tales restricciones, pero tienden a ser menos eficientes que los sistemas en los que se utilizan todas las CPU.
Los sistemas que tratan todas las CPU por igual se denominan sistemas de multiprocesamiento simétrico (SMP). En sistemas donde todas las CPU no son iguales, los recursos del sistema se pueden dividir de varias maneras, incluido el multiprocesamiento asimétrico (ASMP), el multiprocesamiento de acceso a memoria no uniforme (NUMA) y el multiprocesamiento en clúster.
Sistema multiprocesador maestro/esclavo
En un sistema multiprocesador maestro/esclavo, la CPU maestra tiene el control de la computadora y las CPU esclavas realizan las tareas asignadas. Las CPU pueden ser completamente diferentes en términos de velocidad y arquitectura. Algunas (o todas) las CPU pueden tener un bus común compartido, cada una también puede tener un bus privado (para recursos privados) o pueden estar aisladas excepto por una ruta de comunicaciones común. Asimismo, las CPU pueden compartir RAM común y/o tener RAM privada a la que los otros procesadores no pueden acceder. Los roles de maestro y esclavo pueden cambiar de una CPU a otra.
Un ejemplo temprano de un sistema multiprocesador maestro/esclavo es la computadora de escritorio Tandy/Radio Shack TRS-80 Modelo 16 que salió al mercado en febrero de 1982 y ejecutaba el sistema operativo multiusuario/multitarea Xenix, Microsoft' s versión de UNIX (llamada TRS-XENIX). El Modelo 16 tiene 3 microprocesadores, una CPU Zilog Z80 de 8 bits que funciona a 4 MHz, una CPU Motorola 68000 de 16 bits que funciona a 6 MHz y un Intel 8021 en el teclado. Cuando se arrancó el sistema, el Z-80 era el maestro y el proceso de arranque de Xenix inicializó el esclavo 68000 y luego transfirió el control al 68000, con lo cual las CPU cambiaron sus roles y el Z-80 se convirtió en un procesador esclavo responsable de todo. Operaciones de E/S que incluyen disco, comunicaciones, impresora y red, así como el teclado y el monitor integrado, mientras que el sistema operativo y las aplicaciones se ejecutaron en la CPU 68000. El Z-80 podría usarse para hacer otras tareas.
El TRS-80 Model II anterior, que se lanzó en 1979, también podría considerarse un sistema multiprocesador, ya que tenía una CPU Z-80 y un microprocesador Intel 8021 en el teclado. El 8021 convirtió al Modelo II en el primer sistema de computadora de escritorio con un teclado liviano desmontable separado conectado por un solo cable delgado y flexible, y probablemente el primer teclado en usar un microprocesador dedicado, ambos atributos que luego serían copiados años después por Apple e IBM..
Flujos de instrucciones y datos
En el multiprocesamiento, los procesadores se pueden usar para ejecutar una sola secuencia de instrucciones en múltiples contextos (instrucción única, datos múltiples o SIMD, a menudo usado en el procesamiento de vectores), secuencias múltiples de instrucciones en un solo contexto (instrucción múltiple, data o MISD, que se usa para la redundancia en sistemas a prueba de fallas y, a veces, se aplica para describir procesadores segmentados o hiperprocesamiento), o secuencias múltiples de instrucciones en contextos múltiples (instrucción múltiple, datos múltiples o MIMD).
Acoplamiento del procesador
Sistema multiprocesador fuertemente acoplado
Los sistemas multiprocesador estrechamente acoplados contienen varias CPU que están conectadas a nivel de bus. Estas CPU pueden tener acceso a una memoria compartida central (SMP o UMA), o pueden participar en una jerarquía de memoria con memoria local y compartida (SM) (NUMA). El IBM p690 Regatta es un ejemplo de un sistema SMP de gama alta. Los procesadores Intel Xeon dominaron el mercado de multiprocesadores para PC comerciales y fueron la única opción x86 importante hasta el lanzamiento de la gama de procesadores Opteron de AMD en 2004. Ambas gamas de procesadores tenían su propio caché integrado pero proporcionaban acceso a la memoria compartida; los procesadores Xeon a través de una tubería común y los procesadores Opteron a través de rutas independientes a la RAM del sistema.
Los multiprocesadores de chip, también conocidos como computación multinúcleo, involucran más de un procesador colocado en un solo chip y pueden considerarse la forma más extrema de multiprocesamiento estrechamente acoplado. Los sistemas mainframe con múltiples procesadores suelen estar estrechamente acoplados.
Sistema multiprocesador débilmente acoplado
Los sistemas multiprocesador débilmente acoplados (a menudo denominados clústeres) se basan en varias computadoras básicas independientes con un número relativamente bajo de procesadores interconectadas a través de un sistema de comunicación de alta velocidad (Gigabit Ethernet es común). Un clúster Linux Beowulf es un ejemplo de un sistema débilmente acoplado.
Los sistemas estrechamente acoplados funcionan mejor y son físicamente más pequeños que los sistemas débilmente acoplados, pero históricamente han requerido mayores inversiones iniciales y pueden depreciarse rápidamente; Los nodos en un sistema débilmente acoplado suelen ser computadoras básicas de bajo costo y pueden reciclarse como máquinas independientes al retirarse del clúster.
El consumo de energía también es una consideración. Los sistemas estrechamente acoplados tienden a ser mucho más eficientes energéticamente que los clústeres. Esto se debe a que se puede lograr una reducción considerable en el consumo de energía mediante el diseño de componentes para que funcionen juntos desde el principio en sistemas estrechamente acoplados, mientras que los sistemas débilmente acoplados utilizan componentes que no necesariamente fueron diseñados específicamente para su uso en dichos sistemas.
Los sistemas poco acoplados tienen la capacidad de ejecutar diferentes sistemas operativos o versiones de SO en diferentes sistemas.
Contenido relacionado
Luser
IEEE 802.15
Núcleo monolítico