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:
Ordenador: El ordenador es una máquina
electrónica para procesar información.
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.
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.
Sistemas operativos que utiliza Multiproceso Simétrico y Asimétrico:
·
Solaris
·
Unix
·
Windows XP
·
BIOS
·
LINUX
Comentarios
Publicar un comentario