Multiproceso Simétrico
En computación, SMP (del inglés Symmetric Multi-Processing, en español "multiproceso simétrico") es un tipo de arquitectura de computadores en la que dos o más unidades de procesamiento comparten una única memoria central.
Una de las soluciones posibles para aumentar el rendimiento de los servidores, y en general de cualquier PC, es dotar a la máquina de más de un procesador. Descubra en el presente artículo cómo funciona el multiproceso simétrico.
Determinadas aplicaciones necesitan una potencia de CPU que nunca es suficientemente elevada como, por ejemplo, los programas de animación y render en tres dimensiones o, en otro terreno, las equipos encargados de trabajar como servidores de entornos de red con muchas máquinas cliente.
Si bien la velocidad actual de los procesadores es muy elevada, se encuentran en el mercado CPUs con frecuencias de reloj de 200 MHz y más, en algunos casos puede ser muy útil disponer de un ordenador con más de un microprocesador, de forma que las tareas que ejecutemos en el sistema se dividan entre los dos procesadores, para aumentar el rendimiento general del equipo.
Sin embargo, la utilización de dos o más procesadores plantea serios, y a la vez interesantes, problemas que los fabricantes de hardware han tenido que resolver antes de poner en el mercado este tipo de soluciones.
Intel, como fabricante líder en el mercado de microprocesadores, ha desarrollado un estándar cuyo objetivo es estandarizar el hardware dotado de más de un procesador. Esta especificación, conocida como MP Specification, o Especificación Multi Procesador, define las características hardware y software de un ordenador equipado con más de un procesador compatible con la arquitectura y el juego de instrucciones de las CPUs Intel 486 y Pentium.
Objetivo de la especificación MP
La meta más importante de esta norma es realizar una ampliación de la plataforma PC/AT mediante la cual sea posible diseñar equipos multiprocesador manteniendo una compatibilidad total con el hardware y el software existente.
Mediante la consecución de este objetivo anteriormente mencionado, es posible continuar ejecutando todas las aplicaciones existentes para la plataforma PC/AT y, a través de la utilización de sistemas operativos y aplicaciones para multiproceso, conseguir importantes incrementos en la productividad de los equipos.
Para construir un sistema compatible con esta especificación es necesario, sin embargo, realizar modificaciones en elementos clave del ordenador, como la BIOS del equipo, que debe construir una tabla de datos que presente el hardware de una forma clara a los controladores de dispositivo o a la capa de abstracción de hardware del sistema operativo.
En los siguientes párrafos iremos desgranando todos los componentes, tanto hardware como software, necesarios para construir un ordenador que sea compatible con la especificación MP de Intel.
Aspectos generales de un sistema MP
La especificación diseñada por Intel define que los equipos compatibles MP utilizan un esquema de memoria compartida por todos los procesadores instalados en el sistema. Además, son máquinas totalmente simétricas, es decir, todos los procesadores son funcionalmente idénticos, cada uno es capaz de comunicarse con cualquier otra CPU y no existe entre ellos ningún tipo de jerarquía.
Podemos decir, por lo tanto, que este modelo es simétrico en dos aspectos importantes:
Simetría de memoria. Esto es así ya que todos los procesadores presentes en el sistema acceden a un espacio de memoria común, al cual acceden todas las CPU mediante las mismas direcciones de memoria. Gracias a esta característica es posible que todos los procesadores ejecuten una misma copia del sistema operativo, de forma que cualquier aplicación se ejecutará de idéntica manera, independientemente del número de microprocesadores instalados.
Simetría de entrada/salida. Todos los procesadores comparten el mismo subsistema de entrada/salida, lo cual incluye a los puertos de entrada/salida y a los controladores de interrupciones. Mediante esta característica cualquier procesador de un sistema compatible MP está en disposición de atender interrupciones o peticiones de entrada/salida, al contrario que ocurre con otros sistemas multiprocesador que dedican una de las CPUs a tareas de entrada/salida.
Un vistazo general al hardware
Para fabricar un ordenador compatible MP se necesitan unos componentes mínimos:
- Uno o más procesadores compatibles con la arquitectura y el juego de instrucciones de la familia Intel 486 o Pentium. Esto hace posible, al menos en teoría, el uso de CPUs de otros fabricantes, como AMD y Cyrix, ya que dichos chips son compatibles con el juego de instrucciones de la familia x86 de Intel.
- Una o más APIC (Advanced Programmable Interrupt Controller, Controlador Programable Avanzado de Interrupciones), como el 82489 de Intel. Algunos procesadores, como los Pentium 735\90 y 815\100 o el Pentium Pro, llevan integrada la APIC.
- Un subsistema de memoria compartida y de caché que sea transparente para el software, de forma que ni las aplicaciones ni ninguno de los componentes del sistema operativo deba preocuparse por accesos simultáneos de más de un procesador a una misma dirección de memoria.
- Un esquema de componentes compatible con la plataforma PC/AT desde el punto de vista del software, lo cual incluye mapas de memoria, puertos de entrada/salida, canales DMA, interrupciones, etc.
Procesadores del sistema
A pesar de que según la especificación MP todas las CPUs del equipo son funcionalmente idénticas, éstas se encuentran divididas en dos clases: el procesador de arranque o BSP (bootstrap processor) y los procesadores de aplicaciones o AP (application processors).
La CPU que actúa como procesador de arranque se determina mediante el hardware de la placa base, o bien mediante la combinación de dicho hardware y la BIOS del sistema. Esta diferenciación entre los procesadores del ordenador sólo tiene efecto durante el arranque y el cierre del sistema, de forma que el procesador BSP es el encargado de inicializar el equipo y realizar el arranque del sistema operativo.
Una vez que el sistema operativo ha tomado el control del ordenador los procesadores AP, o de aplicaciones, son activados.
El controlador programable avanzado de interrupciones
El APIC se basa en una arquitectura distribuida que utiliza dos unidades funcionales: una unidad local y otra unidad de entrada/salida. En un sistema MP las unidades locales, las cuales están integradas en el procesador en el caso del Pentium, y las de entrada/salida funcionan juntas, comunicándose a través de un bus dedicado denominado ICC (Interrupt Controller Bus, Bus de Controladores de Interrupciones).
Mediante la APIC local se proporciona interrupciones inter-procesador, por las que una CPU puede interrumpir a otro procesador o grupo de ellos.
Cada APIC local y de entrada/salida tiene un registro de identificación. Este registro de identificación, o ID, sirve para nombrar a cada una de las APIC, y es usado por el software para especificar el destino de determinada información para realizar interrupciones inter-procesador y para acceder al bus ICC.
Para conseguir la compatibilidad con la plataforma PC/AT, las APIC funcionan de forma conjunta con los controladores de interrupciones de la familia 8259A, que se encuentran de forma estándar en cualquier compatible PC/AT.
Mapa de memoria del sistema
Como ya se ha comentado anteriormente, una máquina MP es compatible con la plataforma PC/AT, por lo que los equipos de multiproceso simétrico utilizan el mapa de memoria de dicha plataforma.
Sin embargo, en un sistema MP se debe diseñar un subsistema de acceso a memoria más eficiente que el equivalente para un equipo monoprocesador, ya que la demanda de acceso a memoria es proporcional al número de procesadores presentes en el ordenador.
Una de las formas más fáciles y baratas de aumentar el rendimiento del hardware es poner más de una CPU en la placa. Esto se puede realizar haciendo que CPUs diferentes tengan trabajos diferentes (multiproceso asimétrico) o haciendo que todos se ejecuten en paralelo, realizando el mismo trabajo (multiproceso simétrico o SMP). El hacer multiproceso asimétrico requiere un conocimiento especializado sobre las tareas que la computadora debe ejecutar, lo que no está a nuestro alcance en un sistema operativo de propósito general como Linux. En cambio el multiproceso simétrico es relativamente fácil de implementar.
Por relativamente fácil, quiero decir exactamente eso; no que sea realmente fácil. En un entorno de multiproceso simétrico, las CPUs comparten la misma memoria, y como resultado, el código que corre en una CPU puede afectar a la memoria usada por otra. Ya no puedes estar seguro de que una variable que has establecido a un cierto valor en la línea anterior todavía tenga el mismo valor; la otra CPU quizás haya estado jugando con ella mientras no mirábamos. Obviamente, es imposible programar algo de esta manera.
En el caso de la programación de procesos esto no suele ser un problema, porque un proceso normalmente sólo se ejecutará en una CPU a la vez. El núcleo, sin embargo, podría ser llamado por diferentes procesos ejecutándose en CPUs diferentes.
En la versión 2.0.x, esto no es un problema porque el núcleo entero está en un gran `spinlock'. Esto significa que si una CPU está dentro del núcleo y otra CPU quiere entrar en él, por ejemplo por una llamada al sistema, tiene que esperar hasta que la primera CPU haya acabado. Esto es lo que hace al SMP en Linux seguro, pero terriblemente ineficiente.
En la versión 2.2.x, varias CPUs pueden estar dentro del núcleo al mismo tiempo. Esto es algo que los escritores de módulos tienen que tener en cuenta.
GLOSARIO:
Multiprocesador Asimétrico
En el asimétrico hay un procesador (maestro) en el cual se ejecuta el sistema operativo y los demás (esclavos) donde se ejecutan las demás tareas. La ventaja de éste es que al aumentar más procesadores se tiene que hacer un cambio mínimo y fácil para el manejo de éstos y en general se eliminan muchos problemas de integridad de datos. La gran desventaja es que al haber sólo una copia del sistema operativo en un sólo procesador (maestro) cuando este procesador falla todo el sistema falla porque todos los recursos que son manejados por el sistema operativo no pueden ser accesados.
Los sistemas operativos multiprocesador asimétricos (AMP) acaparan toda la potencia de cálculo de una CPU única (maestra) y desde allí dividen el potencial del resto de CPU´s (esclavas) entre los procesos de los usuarios.
· A cada procesador se le asigna una tarea específica; el procesador maestro planifica y asigna el trabajo a los procesadores esclavos.
· El más común en sistemas más grandes.
· El que manda es el de mayor jerarquía.
· Una desventaja es que se recarga todo el trabajo sobre el procesador que manda o el de mayor jerarquía
GLOSARIO:
Plataforma: Superficie horizontal plana, descubierta y elevada, construida sobre una armazón en el suelo u otra superficie mayor, que sirve de apoyo o base para algo.
Hardware: Conjunto de elementos físicos o materiales que constituyen una computadora o un sistema informático.
Aplicación: Colocación de una cosa sobre otra o en contacto con otra de modo que quede adherida o fijada o que ejerza alguna acción.
Especificación: Acción de especificar.
Sistemas operativos que utiliza Multiproceso Simétrico y Asimétrico:
· Solaris
· Unix
· Windows XP
· BIOS
· LINUX
No hay comentarios:
Publicar un comentario