El Multiprocesamiento
consiste en hacer funcionar un sistema de cómputo
con más de un procesador. En teoría
se duplica el desempeño, usando dos procesadores
en lugar de sólo uno.
Pero en la realidad no es tan simple,
aunque el multiprocesamiento puede producir un mejor
desempeño bajo ciertas condiciones. Para
poder emplear el multiprocesamiento es necesario
contar con las siguientes características:
-
Soporte de la Motherboard:
Una motherboard capaz de manejar múltiples
procesadores. Esto significa sockets adicionales
o slots para los chips extras, y un chipset
capaz de controlar una configuración
de múltiples procesadores.
-
Soporte del Procesador:
Un procesador capaz de ser utilizado
en un sistema multiprocesador. No todos cuentan
con este soporte, hay versiones que lo tienen
y otras que no.
-
Soporte del Sistema
Operativo:
Un sistema operativo que soporta el
multiprocesamiento, como WINDOWS NT o uno de
los varios sabores de UNIX.
Adicionalmente, el multiprocesamiento
es más eficaz cuando es utilizado con aplicaciones
diseñadas específicamente para ello.
El Multiprocesamiento es gestionado por el sistema
operativo, el cual asigna diferentes tareas a ser
procesadas por los distintos procesadores. Las aplicaciones
diseñadas para utilizarse en multiprocesamiento
se diseñan para ser divididas en pequeñas
rutinas que pueden ser ejecutadas independientemente.
Esto permite al sistema operativo que estas pequeñas
rutinas puedan ser ejecutadas simultáneamente
en diferentes procesadores, lo que resulta en un
aumento en el desempeño global. Si la aplicación
no está diseñada de esta manera, entonces
no puede tomar las ventajas del multiprocesamiento,
a pesar de que el sistema operativo todavía
pueda hacer uso del procesador(es) adicional(es)
para las multitareas.
El multiprocesamiento puede ser
asimétrico o simétrico. Esto se refiere
a cómo el sistema operativo divide las tareas
entre los procesadores en el sistema.
El multiprocesamiento asimétrico
designa algunos procesadores para realizar sólo
procesos del sistema operativo, y otros para sólo
ejecutar aplicaciones o procesos del usuario.
Éste es un diseño
rígido que produce una pérdida de
rendimiento, durante las veces en que es necesario
ejecutar muchos procesos del sistema y ningún
proceso de usuario, o viceversa.
El multiprocesamiento simétrico,
a menudo abreviado como SMP, permite tanto a los
procesos del sistema operativo como a los de usuario,
poder ser ejecutados en cualquier procesador, este
diseño es más flexible y por consiguiente
conlleva a un aumento en el rendimiento. El multiprocesamiento
SMP es el más usado en las motherboards de
las PCs. En el multiprocesamiento SMP, múltiples
procesadores comparten la memoria RAM y el bus del
sistema.
Una desventaja es que conforme
se añaden procesadores, el tráfico
en el bus de memoria se satura. Al añadir
memoria caché a cada procesador se puede
reducir algo del tráfico en el bus, pero
el bus generalmente se convierte en un cuello de
botella al manejarse alrededor de ocho o más
procesadores.
Para que un procesador soporte
el multiprocesamiento, debe soportar un protocolo
de multiprocesamiento que dicta la manera en que
los procesadores y el chipset se comunicarán
para poder implementar el multiprocesamiento SMP.
Los procesadores de Intel como el Pentium y Pentium
Pro, usan un protocolo SMP llamado APIC, y los chipsets
de Intel que soportan el multiprocesamiento (como
los 430HX, 440FX y 450GX/KX) son diseñados
para trabajar con estos procesadores.
APIC es un estándar propietario
de Intel, y se encuentra patentado para impedir
a AMD o a Cyrix su utilización, a pesar de
que AMD y Cyrix pueden hacer procesadores compatibles
con los de Intel, no pueden hacerlos trabajar en
las configuraciones SMP de las motherboards y chipset
estándares de Intel. De esta manera Intel
tiene el mercado SMP para sí mismo.
AMD y Cyrix crearon su propio estándar
SMP, llamado OpenPIC, el cual es excelente excepto
por el hecho de que no hay motherboards que lo implementen.
Por lo que hasta este momento,
los chips de Intel son la única opción
para aquellos que quieren multiprocesamiento.
Además, el Pentium Pro o
Pentium II fueron buenas opciones para multiprocesamiento
porque cada chip tenia su propio Caché L2
autónomo.
En un sistema con más de
un procesador y una caché L2 en la motherboard,
los procesadores deben compartir el Caché.
Cada nuevo procesador que se agregue dará
como resultado una menor cantidad de memoria caché
para cada procesador, lo que degrada el rendimiento.
Cada Pentium Pro o Pentium II, sin embargo, traen
consigo su propio caché L2, evitando este
problema y mejorando el rendimiento. Para realizar
multiprocesamiento cuádruple (cuatro CPUs)
el Pentium Pro era la única opción,
a pesar de su antigüedad, ya que era el único
CPU para el que se encontraba disponible un chipset
que soportaba multiprocesamiento cuádruple.
Los chipsets posteriores permitieron cuatro o a
más Pentium II en un sistema.
Otro diseño de multiprocesamiento
es el procesamiento masivamente paralelo (Massively
parallel processing / MPP). Para evitar los cuellos
de botella en el bus de la memoria, el MPP no utiliza
memoria compartida.
En su lugar, distribuye la memoria
RAM entre los procesadores de modo que se semeja
a una red (cada procesador con su memoria distribuida
asociada es similar a un computador dentro de una
red de procesamiento distribuido).
Únicamente cuando un procesador
no dispone de la memoria RAM suficiente, utiliza
la memoria RAM sobrante de los otros procesadores.
La parte negativa de MPP es que
la programación se vuelve difícil,
debido a que la memoria se rompe en pequeños
espacios separados. Sin la existencia de un espacio
de memoria globalmente compartido, correr (y escribir)
una aplicación que requiere una gran cantidad
de RAM (comparada con la memoria local), puede ser
difícil.
La sincronización de datos
entre tareas ampliamente distribuidas también
se vuelve difícil, particularmente si un
mensaje debe pasar por muchas fases hasta alcanzar
la memoria del procesador destino.
El Procesamiento paralelo escalable
(Scalable Parallel Processing / SPP) es un híbrido
de SMP y MPP, que utiliza una memoria jerárquica
de dos niveles. La primera capa de memoria consiste
de un nodo que es esencialmente un sistema SMP completo,
con múltiples procesadores y su memoria globalmente
compartida. Se construyen sistemas SPP grandes interconectando
dos o más nodos a través de la segunda
capa de memoria, de modo que esta capa aparece lógicamente,
ante los nodos, como una memoria global compartida. |