MULTIPROCESADORES SIMÉTRICOS Hasta hace poco, prácticamente todos los computadores personales y estaciones de trabajo utilizaban un único microprocesador de uso general. A medida que aumenta la demanda de mayores prestaciones y dado que el coste de los microprocesadores continúa reduciéndose, los fabricantes han introducido los sistemas SMP. El término SMP se refiere a la arquitectura hardware del computador y también al comportamiento del sistema operativo que utiliza dicha arquitectura. Un SMP puede definirse como un computador con las siguientes características: 1. Hay dos o más procesadores similares de capacidades comparables. 2. Estos procesadores comparten la memoria principal y las E/S y están interconectados mediante un bus u otro tipo de sistema de interconexión, de forma que el tiempo de acceso memoria es aproximadamente el mismo para todos los procesadores. 3. Todos los procesadores comparten los dispositivos de E/S, bien a través de los mismos canales mediante canales distintos que proporcionan caminos de acceso al mismo dispositivo. 4. Todos los procesadores pueden desempeñar las mismas funciones (de ahí el término simétrico). 5. El sistema está controlado por un sistema operativo integrado que proporciona la interacción entre los procesadores y sus programas a los niveles de trabajo, tarea, fichero y datos.
El sistema operativo de un SMP planifica la distribución de procesos o hilos entre todos los procesadores. Un SMP tiene las siguientes ventajas potenciales con respecto a una arquitectura Monoprocesador: Prestaciones: si el trabajo a realizar por un computador puede organizarse de forma que Partes del mismo se puedan realizar en paralelo, entonces un sistema con varios procesadores Proporcionará mejores prestaciones que uno con un solo procesador del mismo tipo.
Disponibilidad: en un multiprocesador simétrico, debido a que todos los procesadores pueden realizar las mismas funciones, un fallo en un procesador no hará que el computador se detenga. • Crecimiento incremental: se pueden aumentar las prestaciones del sistema añadiendo más procesadores.
• Escalado: los fabricantes pueden ofrecer una gama de productos con precios y prestaciones Diferentes en función del número de procesadores que configuran el sistema. Es importante resaltar que los anteriores son beneficios potenciales más que beneficios garantizados. El sistema operativo debe disponer de herramientas y funciones que permitan explotar el paralelismo presente en un SMP. Una característica atractiva de un SMP es que la existencia de varios procesadores es transparente al usuario. El sistema operativo se encarga de la sincronización entre los procesadores y de la planificación de los hilos o de los procesos, asignándolos a los distintos procesadores. ORGANIZACIÓN En la siguiente imagen describe en términos generales la organización de un sistema multiprocesador. Hay dos o más procesadores. Cada procesador es autónomo, incluyendo una unidad de control, una ALU, Registros y, posiblemente, caché. Cada procesador tiene acceso a una memoria principal compartida y A los dispositivos de E/S a través de alguna forma de mecanismo de interconexión. Los procesadores pueden comunicarse entre sí a través de la memoria (mensajes e información de control almacenada en áreas comunes para datos). También es posible que los procesadores intercambien señales directamente. La memoria a menudo se organiza de forma que sean posibles los accesos simultáneos a bloques de memoria separados. En algunas configuraciones, cada procesador puede tener también su propia memoria principal privada y sus canales de E/S, además de los recursos compartidos.
BUS DE TIEMPO COMPARTIDO La organización más común en los computadores personales, estaciones de trabajo y servidores es el bus de tiempo compartido. El bus de tiempo
compartido es el mecanismo más simple para construir un sistema multiprocesador (Figura 18.5). La estructura y las interfaces son básicamente las mismas que las de un sistema de un único procesador que utilice un bus para la interconexión. El bus consta de líneas de control, dirección y datos. Para facilitar las transferencias de DMA con los procesadores de E/S, se proporcionan los elementos para el: • Direccionamiento: debe ser posible distinguir los módulos del bus para determinar la fuente Y el destino de los datos. • Arbitraje: cualquier módulo de E/S puede funcionar temporalmente como un «maestro». Se proporciona un mecanismo para arbitrar entre las peticiones que compiten por el control del bus, utilizando algún tipo de esquema de prioridad.
• Tiempo Compartido: cuando un módulo está controlando el bus, los otros módulos no tienen acceso al mismo y deben, si es necesario, suspender su operación hasta que dispongan del bus. Estas características monoprocesador son utilizables directamente en una configuración de SMP.En este caso, hay varias CPU además de varios procesadores de E/S que intentan tener acceso a uno o más módulos de memoria a través del bus. La organización del bus presenta varias características atractivas: • Simplicidad: es la aproximación más simple para organizar el multiprocesador. La interfaz física y la lógica de cada procesador para el
direccionamiento, el arbitraje y para compartir el tiempo del bus es el mismo que el de un sistema con un solo procesador. • Flexibilidad: es generalmente sencillo expandir el sistema conectando más procesadores al bus. • Fiabilidad: el bus es esencialmente un medio pasivo, y el fallo de cualquiera de los dispositivos conectados no provocaría el fallo de todo el sistema.
La principal desventaja de la organización de bus son las prestaciones. Todas las referencias a Memoria pasan por el bus. En consecuencia, la velocidad del sistema está limitada por el tiempo de ciclo. Para mejorar las prestaciones, es deseable equipar a cada procesador de una memoria caché. Esta reduciría dramáticamente el número de accesos. Típicamente, los PC y las estaciones de trabajo de tipo SMP tienen dos niveles de caché, una caché L1 interna (en el mismo chip que el procesador) y una caché L2 extema o interna. Algunos procesadores actuales también utilizan una memoria caché L3. El uso de cachés introduce algunas consideraciones de diseño nuevas. Puesto que cada caché local contiene una imagen de una parte de la memoria, si se altera una palabra en una caché,es concebible que eso podría invalidar una palabra en otra caché. Para evitarlo, se debe avisar a los otros procesadores de que se ha producido una actualización de memoria. Este problema se conoce como problema de coherencia de caché, que es resuelto típicamente por el hardware más que por el sistema operativo. La Sección 18.3 trata este punto.
CONSIDERACIONES DE DISEÑO DE UN SISTEM A OPERATIVO DE MULTIPROCESADOR Un sistema operativo de SMP gestiona los procesadores y demás recursos del computador para que el usuario perciba un solo sistema operativo controlando los recursos del sistema. De hecho, el computador debería parecer un sistema monoprocesador con multiprogramación. Tanto en un SMP como en un sistema monoprocesador, pueden estar activos varios trabajos o procesos al mismo tiempo, y es responsabilidad del sistema operativo planificar su ejecución y asignar los recursos. Un usuario puede desarrollar aplicaciones que utilizan varios procesos o varios hilos dentro de un proceso sin tener en cuenta si se dispone de uno o de varios procesadores. Así, un sistema operativo de multiprocesador debe proporcionar toda la funcionalidad de un sistema
operativo con multiprogramación más, las características adicionales que permitan utilizar varios procesadores. Entre los puntos clave de diseño están: • Procesos concurrentes simultáneos: las rutinas del sistema operativo deben ser reentrantes para permitir que varios procesadores puedan ejecutar simultáneamente el mismo código IS paralelo Con varios procesadores ejecutando la misma o distintas partes del sistema operativo, las tablas y las estructuras de gestión del sistema operativo deben manejarse apropiadamente para evitar bloqueos u operaciones no válidas. • Planificación: la planificación puede realizarla cualquier procesador, por lo que deben evitárselos conflictos. El planificador debe asignar los procesos preparados a los procesadores disponibles. • Sincronización: puesto que hay varios procesos que pueden acceder a espacios de memoria ya recursos de E/S compartidos, debe proporcionarse una sincronización efectiva. La sincronización asegura la exclusión mutua y la ordenación de eventos.
• Gestión de memoria: la gestión de memoria en un multiprocesador debe comprender todos los aspectos propios de los computadores monoprocesadores, discutidos en el Capítulo 8. Además, el sistema operativo debe explotar el paralelismo que proporciona el hardware, por ejemplo las memorias multipuerto, para obtener mejores prestaciones. Los mecanismos de paginación en procesadores distintos deben coordinarse para mantener la consistencia cuando varios procesadores comparten una página o un segmento y para decidir sobre el reemplazo de páginas. • Fiabilidad y tolerancia a fallos: el sistema operativo debería hacer posible una degradación gradual cuando se produce un fallo en un procesador. El planificador y otros elementos del sistema operativo deben reconocer la pérdida de un procesador y reestructurar las tablas de gestión en consecuencia. UN SMP COMO GRAN COM PUTADOR La mayoría de los PC y estaciones de trabajo de tipo SMP utilizan una estrategia de interconexión basada en un bus tal y como muestra la Figura 18.6. Resulta ilustrativo analizar una aproximación alternativa, que se utiliza en las implementaciones más recientes de la familia de grandes computadores (mainframes) IBM series [SIEG04, MAK04] denominada z990. Esta familia de sistemas incluye desde computadores monoprocesador con un módulo de memoria principal hasta sistemas con 48 procesadores y ocho módulos de memoria. Los componentes clave de la configuración son los siguientes:
• Chip con dos núcleos de procesamiento (dual-core): cada microprocesador incluye dos procesadores idénticos denominados procesadores centrales (Central Processors, CP). Un CP es un microprocesador CISC en el que la mayoría de las instrucciones se encuentran cableadas mientras que las restante se ejecutan mediante un microcódigo vertical. Cada CP incluye cachés L1 separados para datos e instrucciones de 256 Kbytes cada una. • Caché L2: cada caché L2 contiene 32 Mbytes. Las cachés L2 se organizan en grupos de cinco, de forma que cada grupo recibe accesos de ocho microprocesadores duales y proporciona acceso a todo el espacio de memoria principal. • Elemento de Control de Sistema (System Control Element, SCE): se encarga del arbitraje de la comunicación en el sistema y tiene un papel central e el mantenimiento de la coherencia de caché. • Control de almacenamiento principal (Main Store Control, MSC): interconecta las cachés L2 y la memoria principal. 6 7 8 Organización y arquitectura de computadores CP = Procesador central SCE = Elemento de control de sistema MBA = Adaptador de bus de memoria SMI = Interfaz de memoria síncrona MSC = Control de almacenamiento principal Figura 18.6. Estructura del m u ltip roce sad or IB M z990. • Módulos de memoria: cada módulo dispone de 32 GB de memoria. La memoria máxima que se puede configurar consta de ocho módulos de memoria, con lo que se tiene una capacidad máxima de 256 GB. Los módulos de memoria se conectan al MSC a través de interfaces de memoria síncronos (Synchronous Memory Interfaces, SMI).
• Adaptador de bus de memoria (Memory Bus Adapter\ MBA): el MBA proporciona una interfaz a diversos canales de E/S. El tráfico a, o desde, esos canales atraviesa directamente la caché L2. El procesador utilizado en el z990 es relativamente peculiar si se compara con otros procesadores actuales debido a que, aunque es superescalar, ejecuta las instrucciones en el orden estricto que marca la arquitectura. Sin embargo, para compensar esto utiliza un cauce más corto y cachés y TLB mucho Procesamiento paralelo 6 7 9 mayores que otros procesadores, junto con otras características que contribuyen a mejorar las prestaciones. El sistema z990 incluye entre uno y cuatro libros. Cada libro es una unidad que consta de hasta doce procesadores y hasta 64 GB de memoria, adaptadores de E/S y un elemento de control de sistema (SCE) que los conecta. El SCE que incluye cada libro tiene una caché L2 de 32 MB que actúa como punto de coherencia central para ese libro particular. Los procesadores y los adaptadores de E/S de cada libro tienen acceso tanto a la caché L2 como a la memoria principal de ese libro o de cualquiera de los otros tres que componen el sistema. El SCE y los chips de caché L2 también se conectan con los elementos correspondientes de los otros libros a través de conexiones configuradas en anillo. Hay una serie de características interesantes en el SMP z990 que pasamos a discutir: • Interconexión conmutada. • Cachés L2 compartidas. Interconexión conmutada. En los PC y las estaciones de trabajo de tipo SMP es común utilizar una organización basada en un único bus compartido (Figura 18.5). Con esta organización, el
bus pasa a ser un cuello de botella que afecta a la escalabilidad (escalado de las prestaciones cuando se amplía el sistema) del diseño. El z990 se enfrenta a este problema de dos formas. En primer lugar, la memoria principal se distribuye en cuatro módulos, cada una con su propio controlador de almacenamiento que puede gestionar los accesos a memoria a velocidades elevadas. El tráfico de cargas desde memoria se reduce, gracias a los caminos independientes que hay a las áreas distintas en las que se ha dividido la memoria. Cada bloque incluye dos módulos de memoria, con un total de ocho módulos en la configuración máxima. En segundo lugar, la conexión entre los procesadores (desde la caché L2) y un módulo de memoria no se lleva a cabo a través de un bus sino mediante enlaces punto a punto. Cada microprocesador tiene un enlace a cada una de las cachés L2 del libro, y cada caché L2 tiene un enlace, vía MSC, a cada uno de los dos módulos de memoria del mismo libro. Cada caché L2 solo se conecta a los dos módulos de memoria de su libro. El controlador de sistema proporciona los enlaces (que no se representan en la figura) a los otros libros de la configuración, de forma que se pueda acceder a toda la memoria principal desde cualquier procesador. Las conexiones a los canales de E/S también se realizan a través de enlaces punto a punto en vez de mediante buses. La caché L2 de cada libro se conecta al MBA de dicho libro. A su vez, el MBS se conecta a los canales de E/S. Cachés L2 compartidas. E un esquema típico de caché de dos niveles para un SMP, cada procesador tiene una cachés L1 y L2 propias. En los últimos años, ha aumentado el interés en el concepto
de utilizar una caché L2 compartida. En una de las primeras versiones de sus grandes SMP, conocida como generación 3 (G3), IBM utilizaba cachés L2 específicas para cada procesador. En las versiones más recientes (G4, G5, y serie z900) se utilizan cachés L2 compartidas. Dos consideraciones han causado este cambio: 1. En el cambio de la versión G3 a la G4, IBM pasó a utilizar microprocesadores con el doble de velocidad. Si se hubiese mantenido la organización G3, se hubiese producido un incremento significativo del tráfico a través del bus. Al mismo tiempo, se deseaba utilizar tantos 6 8 0 Organización y arquitectura de computadores componentes de las versiones G3 como fuese posible. A no ser que se mejorase significativamente el bus, el MSC podría llegar a ser un cuello de botella. 2. El análisis de las cargas de trabajo típicas mostraba un nivel elevado de instrucciones y datos compartidos por los procesadores. Estas consideraciones llevaron al equipo de diseño de la versión G4 a considerar el uso de una o más cachés L2 compartidas por varios procesadores (cada procesador dispone de una caché Ll interna). A primera vista, compartir la caché L2 podría parecer una mala idea. El acceso a memoria desde los procesadores podría ser más lento debido a que los procesadores deben pugnar por el acceso a la caché L2. Sin embargo, si de hecho varios procesadores comparten un elevado volumen de datos, una caché compartida puede incrementar el rendimiento en lugar de disminuirlo, ya que los datos compartidos que se encuentran en la caché compartida se obtienen más rápidamente que si se debiera acceder a ellos a través del bus. 4