Arquitectura SMP. Ventajas y desventajas. Alcance, ejemplos de aviones en SMP. Linux y el multiprocesamiento simétrico

5. SISTEMAS MULTIPROCESADORES SIMÉTRICOS

5.1. Características distintivas y ventajas de simétrico.

sistemas multiprocesador

Para la clase de multiprocesadores simétricos (SMP - simétrico multiprocesador) los sistemas se caracterizan por las siguientes características distintivas:

    la presencia de dos o más procesadores idénticos o similares en características;

    los procesadores tienen acceso a la memoria compartida, a la que están conectados a través de un bus de sistema común o mediante otro mecanismo para garantizar la interacción, pero en cualquier caso, el tiempo de acceso a los recursos de la memoria por parte de cualquier procesador es aproximadamente el mismo;

    los procesadores tienen acceso a instalaciones comunes de entrada/salida ya sea a través del mismo canal o a través de canales separados;

    todos los procesadores son capaces de realizar el mismo conjunto de funciones (de ahí la definición simétrico sistema);

    Todo el complejo está controlado por un sistema operativo común, que garantiza la interacción entre procesadores y programas a nivel de trabajos, archivos y elementos de datos.

Los primeros cuatro signos de esta lista apenas requieren más comentarios. En cuanto a la quinta característica, revela la diferencia más importante entre los sistemas SMP y los sistemas de clúster, en los que la interacción entre componentes se produce, por regla general, a nivel de mensajes individuales o archivos completos. En un sistema SMP, es posible intercambiar información entre componentes y a nivel de elementos de datos individuales y, por tanto, es posible organizar una interacción más estrecha entre procesos. En un sistema SMP, la distribución de procesos o subprocesos de tareas entre procesadores individuales se asigna al sistema operativo.

Las ventajas más importantes de los sistemas SMP sobre los sistemas de un solo procesador son las siguientes.

Aumento de la productividad. Si las tareas de aplicaciones individuales se pueden ejecutar en paralelo, un sistema con múltiples procesadores funcionará más rápido que un sistema con un solo procesador del mismo tipo.

Fiabilidad. Dado que todos los procesadores de un sistema SMP son del mismo tipo y pueden realizar las mismas tareas, si uno de ellos falla, la tarea programada para él se puede transferir a otro procesador. En consecuencia, el fallo de uno de los procesadores no provocará la pérdida de funcionalidad de todo el sistema.

Posibilidad de ampliación funcional. El usuario puede aumentar el rendimiento del sistema agregando procesadores adicionales.

Producción de sistemas similares de diferente rendimiento. Un fabricante de ordenadores puede ofrecer a sus clientes una gama de sistemas con la misma arquitectura, pero con diferentes costes y rendimiento, diferenciándose en el número de procesadores.

Cabe señalar que todas estas ventajas suelen ser potenciales y no siempre se materializan en la práctica.

Una característica muy atractiva de los sistemas SMP para los usuarios es su transparencia. El sistema operativo se encarga de todas las tareas de distribuir tareas entre procesadores individuales y sincronizar su trabajo.

5.2. Organización estructuralSMP–sistemas

En la Fig. La figura 5.1 muestra un diagrama de bloques generalizado de un sistema multiprocesador.

Arroz. 5.1. Diagrama generalizado de un sistema multiprocesador.

El sistema contiene dos o más procesadores, cada uno de los cuales tiene el conjunto completo de nodos necesarios: una unidad de control, ALU, registros y una unidad de caché. Cada procesador tiene acceso a la memoria principal del sistema y a los dispositivos de E/S a través de algún subsistema de comunicación. Los procesadores pueden intercambiar datos y mensajes a través de la memoria principal (para ello, se asigna en ella un área de comunicación separada). Además, el sistema también puede admitir la capacidad de intercambiar señales directamente entre procesadores individuales. A menudo, la memoria compartida está organizada de tal manera que los procesadores pueden acceder a diferentes bloques simultáneamente. En algunos sistemas, los procesadores tienen bloques de memoria local y sus propios canales de E/S además de recursos compartidos.

Las opciones para la organización estructural de sistemas multiprocesador se pueden clasificar de la siguiente manera:

    sistemas con carretera común o de tiempo compartido;

    sistemas con memoria multipuerto;

    Sistemas con un dispositivo de control central.

5.2.1. Sistemas ferroviarios comunes

Usar un bus común en modo de tiempo compartido es la forma más sencilla de organizar la colaboración de procesadores en un sistema SMP (Fig. 5.2). La estructura del bus y la interfaz son prácticamente las mismas que en un sistema de un solo procesador. La troncal incluye líneas de datos, direcciones y señales de control. Para simplificar el funcionamiento del mecanismo de acceso directo a la memoria por parte de los módulos de E/S, se toman las siguientes medidas.

Direccionamiento está organizado de tal manera que los módulos se pueden distinguir por el código de dirección al determinar las fuentes y los receptores de datos.

Arbitraje. Cualquier módulo de E/S puede convertirse temporalmente en un maestro de bus. El árbitro, utilizando algún mecanismo de prioridad, garantiza la resolución del conflicto cuando aparecen solicitudes competitivas de control de carreteras.

Tiempo compartido. Cuando un módulo obtiene el control de una carretera, los módulos restantes quedan bloqueados y deben, si es necesario, suspender sus operaciones y esperar hasta que se les conceda acceso a la carretera.

Estas funciones, que son comunes en sistemas de un solo procesador, se pueden utilizar sin modificaciones especiales en un sistema multiprocesador. La principal diferencia es que en la lucha por el derecho a acceder a un bloque de memoria participan no sólo los módulos de entrada/salida, sino también los procesadores.


Arroz. 5.2. Organización de un sistema SMP con una red troncal común

La estructura principal de conexiones tiene varias ventajas en comparación con otros enfoques para implementar el subsistema de interacción.

Sencillez. Esta opción es la más simple porque la interfaz física, el esquema de direccionamiento, el mecanismo de arbitraje y la lógica de intercambio de recursos troncales siguen siendo esencialmente los mismos que en un sistema de un solo procesador.

Flexibilidad. Un sistema troncal se puede reconfigurar fácilmente agregando nuevos procesadores.

Fiabilidad. La carretera es un medio pasivo y el fallo de cualquier dispositivo conectado a ella no provoca la pérdida de funcionalidad del sistema en su conjunto.

La principal desventaja de un sistema de bus común es su rendimiento limitado. Todas las operaciones de acceso a la memoria principal deben realizarse por un único camino: a través de una carretera común y, por tanto, la velocidad del sistema está limitada por la duración del ciclo de la carretera. Este problema puede solucionarse parcialmente equipando cada procesador con su propio bloque de memoria caché, lo que reduce el número de accesos a la memoria principal. Como regla general, se utiliza una organización de caché de dos niveles: la caché L1 se encuentra en el LSI del procesador (caché interna) y la caché L2 es externa.

Sin embargo, el uso de memoria caché en un sistema multiprocesador plantea el problema de la coherencia o integridad de la información de las cachés de los procesadores individuales.

5.2.2. Sistemas de memoria multipuerto

El uso de memoria multipuerto en sistemas SMP permite organizar el acceso directo de cada procesador y módulo de entrada/salida a una matriz común de información, independientemente de todos los demás (Fig. 5.3). En este caso, cada módulo de memoria debe estar equipado con un circuito lógico para resolver posibles conflictos. Para ello, a los puertos se les suelen asignar determinadas prioridades. Normalmente, la interfaz eléctrica y física de cada puerto es idéntica al dispositivo conectado a ese puerto; El módulo de memoria se puede considerar como de puerto único. Por lo tanto, prácticamente no es necesario realizar cambios en el procesador o en los circuitos del módulo de E/S para conectarse a la memoria multipuerto.


Arroz. 5.3. Circuito de memoria multipuerto

Sólo el diseño del bloque de memoria compartida se vuelve significativamente más complicado, pero esto vale la pena al aumentar el rendimiento del sistema en su conjunto, ya que cada procesador tiene su propio canal para acceder a la información compartida. Otra ventaja de los sistemas con esta organización es la capacidad de asignar áreas de memoria para uso exclusivo de un procesador (o grupo de procesadores) específico. Esto simplifica la creación de un sistema para proteger la información del acceso no autorizado y almacenar programas de recuperación en áreas de memoria que son inaccesibles para su modificación por parte de otros procesadores.

Hay un punto más importante cuando se trabaja con memoria multipuerto. Al actualizar información en el caché de cualquier procesador, es necesario realizar una escritura en la memoria principal, ya que no hay otra forma de notificar a otros procesadores que se han realizado cambios en los datos.

5.2.3. Sistemas con unidad de control central

El dispositivo de control central organiza flujos de datos separados entre módulos independientes: procesadores, memoria y módulos de entrada/salida. El controlador puede recordar solicitudes y actuar como árbitro y asignador de recursos. También es responsable de transmitir información de estado, mensajes de control y notificar a los procesadores sobre cambios en la información en las cachés.

Dado que todas las funciones lógicas asociadas con la coordinación del funcionamiento de los componentes del sistema se implementan en un dispositivo de control central, las interfaces de los procesadores, la memoria y los módulos de E/S permanecen prácticamente sin cambios. Esto le da al sistema casi la misma flexibilidad y simplicidad que usar una red troncal compartida. La principal desventaja de este enfoque es la importante complicación del diseño del dispositivo de control, que potencialmente puede conducir a una reducción del rendimiento.

La estructura con un dispositivo de control central alguna vez estuvo muy extendida en la construcción de sistemas informáticos multiprocesador basados ​​​​en máquinas grandes. Hoy en día son muy raros.

5.3. SMP–sistemas basados ​​en grandes ordenadores

5.3.1. EstructuraSMP–sistemas basados ​​en grandes

ordenadores

La mayoría de los sistemas y estaciones de trabajo SMP personales utilizan una columna vertebral del sistema para organizar la interacción entre los componentes. En complejos basados ​​​​en computadoras grandes (mainframes), se utiliza un enfoque alternativo . En la figura 2 se muestra un diagrama de bloques de dicho complejo. 5.4. La familia incluye ordenadores de diferentes clases, desde los de un solo procesador con una única tarjeta de memoria principal hasta sistemas de alto rendimiento con una docena de procesadores y cuatro bloques de memoria principal. La configuración también incluye procesadores adicionales que realizan las funciones de módulos de E/S. Los principales componentes de los sistemas informáticos basados ​​en ordenadores de gran tamaño son los siguientes.

procesador de relaciones públicas - CISC es un microprocesador en el que el procesamiento de los comandos utilizados con más frecuencia se controla en hardware y otros comandos se ejecutan mediante firmware. El LSI de cada PR incluye un caché L1 de 64 KB, que almacena instrucciones y datos.

caché de nivell2 volumen 384 KB. Los bloques de caché L2 están agrupados de dos en dos, y cada grupo admite tres procesadores y proporciona acceso a todo el espacio de direcciones de la memoria principal.

Adaptador de interruptor de línea- Licenciatura en Ciencias (autobústraspuesta red adaptador), que organiza la conexión de los bloques de caché L2 con uno de los cuatro bloques de memoria principal. El BSN también incluye una caché L3 de 2 MB.

Unidad de memoria principal de placa única Capacidad de 8 GB. El complejo incluye cuatro de estos bloques, lo que proporciona una capacidad total de memoria principal de 32 GB.

Hay varias características en esta estructura en las que vale la pena detenerse con más detalle:

    subsistema de interconexión conmutable;

    caché L2 compartida;

    Caché L3.


Fig.5.4. Diagrama de bloques de un sistema SMP basado en máquinas grandes.

5.3.2. Subsistema de interconexión conmutable

En sistemas SMP para uso personal y estaciones de trabajo, generalmente se acepta una estructura con una única columna vertebral del sistema. En esta opción, la columna vertebral puede convertirse con el tiempo en un cuello de botella, impidiendo una mayor expansión del sistema, añadiéndole nuevos componentes. Los diseñadores de sistemas SMP basados ​​en máquinas grandes han intentado solucionar este problema de dos maneras.

Primero, dividieron el subsistema de memoria principal en cuatro unidades de placa única, cada una equipada con su propio controlador, que es capaz de procesar solicitudes de memoria a alta velocidad. Como resultado, el ancho de banda total del canal de acceso a la memoria se ha cuadriplicado.

En segundo lugar, la conexión entre cada procesador (de hecho, entre su caché L2) y un bloque de memoria individual no se implementa en forma de una red troncal compartida, sino más bien en forma de una conexión punto a punto: cada enlace se conecta un grupo de tres procesadores a través de la caché L2 al módulo B.S.N. A su vez, el BSN actúa como un conmutador que combina cinco canales de comunicación (cuatro con cachés L2 y uno con una unidad de memoria), conectando cuatro canales físicos en una red troncal lógica de transmisión de datos. Por tanto, una señal que llega a través de cualquiera de los cuatro canales conectados a las cachés L2 se duplica en los otros tres canales, garantizando así la integridad de la información de las cachés.

Aunque hay cuatro bloques de memoria separados en el sistema, cada procesador y cada bloque de caché L2 tiene solo dos puertos físicos a través de los cuales se comunican con el subsistema de memoria principal. Se eligió esta solución porque cada bloque de caché L2 solo puede almacenar datos de la mitad del espacio total de direcciones de memoria. Se utiliza un par de bloques de caché para atender solicitudes en todo el espacio de direcciones, y cada procesador debe tener acceso a ambos bloques del par.

5.3.3. Compartir bloques de caché de nivell2

En una estructura de sistema SMP típica, cada procesador tiene sus propios bloques de caché (normalmente dos niveles). En los últimos años, el concepto de compartir bloques de caché L2 ha atraído un interés cada vez mayor entre los desarrolladores de sistemas. Una de las primeras versiones de un sistema SMP basado en una máquina grande utilizaba 12 bloques de caché L2, cada uno de los cuales estaba "a disposición" de un procesador específico. En versiones posteriores, los bloques de caché L2 se comparten entre varios procesadores. Esto se hizo con base en las siguientes consideraciones.

Las nuevas versiones utilizan procesadores cuya velocidad se ha duplicado respecto a los procesadores de la primera versión. Si deja la misma estructura de bloques de caché, el flujo de información a través del subsistema troncal aumentará significativamente. Al mismo tiempo, a los diseñadores se les encomendó la tarea de utilizar en la mayor medida posible los bloques ya preparados desarrollados para la versión antigua. Si el subsistema troncal no se actualiza, los bloques BSN de la nueva versión pueden convertirse en un cuello de botella con el tiempo.

Un análisis de las aplicaciones típicas que se ejecutan en el sistema mostró que una parte bastante grande de los comandos y datos se comparte entre diferentes procesadores.

Por ello, los desarrolladores de la nueva versión del sistema consideraron la opción de compartir uno o más bloques de caché L2 entre varios procesadores (cada procesador todavía tiene su propio bloque de caché L1 interno). A primera vista, la idea de compartir la caché L2 parece poco atractiva, ya que el procesador también debe buscar acceso a ella, y esto puede conllevar una pérdida de rendimiento. Pero si varios procesadores necesitan una parte importante de los datos y las instrucciones de la memoria caché, entonces una memoria caché compartida puede aumentar el rendimiento del sistema en lugar de reducirlo. Los datos que necesitan varios procesadores se encontrarán en la caché compartida más rápidamente que si tuvieran que transferirse a través de los subsistemas troncales.

Los desarrolladores de la nueva versión del sistema también consideraron la opción de incluir en el sistema un único caché grande, compartido por todos los procesadores. Aunque esta estructura del sistema prometía un aumento aún mayor de la productividad, hubo que abandonarla, ya que esta opción requería una revisión completa de toda la organización de comunicación existente. El análisis de los flujos de datos en el sistema mostró que la introducción de bloques de caché compartidos asociados con cada uno de los BSN disponibles ya permitirá un aumento muy notable en el rendimiento del sistema. Al mismo tiempo, en comparación con los cachés individuales, el porcentaje de aciertos al acceder al caché aumenta significativamente y, en consecuencia, el número de accesos a la memoria principal disminuye.

5.3.4. caché de nivell3

Otra característica de un sistema SMP basado en una máquina grande es la inclusión de una caché de tercer nivel, L3, en su estructura. La caché L3 está incluida en cada bloque BSN y, por lo tanto, es un búfer entre las cachés L2 y uno de los bloques de memoria principal. El uso de esta caché reduce la latencia de llegada de datos que faltan en las cachés L1 y L2. Si alguno de los procesadores requería anteriormente estos datos, entonces están presentes en la caché L3 y se pueden transferir al nuevo procesador. El tiempo para recuperar datos de la caché L3 es menor que el tiempo que lleva acceder a un bloque de memoria principal, lo que proporciona una ganancia de rendimiento.

En mesa La Figura 5.1 muestra datos obtenidos de un estudio de rendimiento de un sistema SMP típico basado en IBM S/390. El indicador de "latencia de acceso" caracteriza el tiempo necesario para que el procesador recupere datos si están presentes en un elemento estructural particular del subsistema de memoria. Cuando un procesador solicita nueva información, en el 89% de los casos se encuentra en su propia caché L1. En el 11% restante de los casos hay que acceder a las cachés de los siguientes niveles o al bloque de memoria principal. En el 5% de los casos, la información necesaria se encuentra en la caché L2, etc. Sólo el 3% de las veces se acaba accediendo a un bloque de memoria principal. Sin la caché L3, esta cifra sería el doble.

Tabla 5.1

Indicadores de eficiencia de los elementos del subsistema de memoria.

en un sistema SMP basado en IBM S/390

Subsistema de memoria

Retardo de acceso (ciclos de operación

procesador)

Porcentaje de acierto

Memoria principal

5.4. Integridad y protocolo de la información de cachéMESI

5.4.1. Formas de resolver el problema de la información.

integridad

Se ha convertido en la norma en los sistemas informáticos modernos tener uno o dos niveles de bloques de caché asociados con cada procesador. Esta organización permite lograr un alto rendimiento del sistema, pero plantea el problema de la integridad de la información de los datos en las cachés de diferentes procesadores. Su esencia es que las cachés de diferentes procesadores pueden almacenar copias de los mismos datos de la memoria principal. Si al mismo tiempo algún procesador actualiza alguno de los elementos de dichos datos en su copia, las copias con las que procesan otros procesadores se vuelven poco fiables, al igual que el contenido de la memoria principal. Es posible utilizar dos opciones para duplicar los cambios realizados en la memoria principal:

Respóndeme (escribir atrás). En esta realización, el procesador realiza cambios sólo en el contenido de su caché. El contenido de la línea se escribe en la memoria principal cuando es necesario borrar una línea de caché modificada para aceptar un nuevo bloque de datos.

Escriba por medio de (escribir a través de). Todas las escrituras de caché se duplican inmediatamente en la memoria principal, sin esperar a que se reemplace el contenido de la línea de caché correspondiente. Como resultado, siempre puede estar seguro de que la información más reciente y, por tanto, fiable, se almacena en la RAM en cualquier momento.

Es obvio que el uso de la técnica de reescritura puede provocar una violación de la integridad de la información de los datos en las cachés, ya que hasta que los datos actualizados se reescriban en la memoria principal, las cachés de otros procesadores contendrán datos no confiables. Incluso con técnicas de escritura directa, la integridad de la información no está garantizada porque los cambios realizados deben duplicarse no sólo en la memoria principal, sino también en todos los bloques de caché que contienen las copias originales de estos datos.

sistemas Pautas

Departamento Universitario de Medición Informática sistemas y metrología ________________________________________________ I N F O R M A T I C A Arquitecturainformáticasistemas. Subsistemas básicos de una computadora personal...

15/02/1995 V. Pyatenok

Arquitectura de un solo procesador Arquitectura de un solo procesador modificada Arquitectura SMP Arquitectura de enrutador SMP propuesta por Wellfleet Descripción general de la arquitectura Detalles del procesamiento de paquetes Resumen Literatura Los enrutadores han evolucionado utilizando tres arquitecturas diferentes: un solo procesador, un solo procesador modificado y un multiprocesador simétrico. Los tres fueron diseñados para soportar aplicaciones altamente críticas.

Los enrutadores en su desarrollo utilizaron tres arquitecturas diferentes: monoprocesador, monoprocesador modificado y multiprocesador simétrico. Los tres fueron diseñados para soportar aplicaciones altamente críticas. Sin embargo, los requisitos principales de estos requisitos, a saber, un rendimiento alto y escalable, así como un alto nivel de disponibilidad, incluida la tolerancia total a fallas y la recuperación de componentes inoperativos ("hot standby"), no pueden satisfacer en la misma medida. . El artículo analiza las ventajas de la arquitectura multiprocesador simétrica.

Arquitectura de un solo procesador

La arquitectura de un solo procesador utiliza varios módulos de interfaz de red, lo que permite una flexibilidad adicional en la configuración de los nodos. Los módulos de interfaz de red están conectados a un único procesador central a través de un bus de sistema común. Este único procesador se encarga de todas las tareas de procesamiento. Y estas tareas, dado el nivel actual de desarrollo de las redes corporativas, son complejas y variadas: filtrado y reenvío de paquetes, modificación necesaria de los encabezados de los paquetes, actualización de tablas de enrutamiento y direcciones de red, interpretación de paquetes de control de servicios, respuesta a solicitudes SNMP, generación de paquetes de control. , brindando otros servicios específicos como spoofing, es decir, estableciendo filtros especiales para lograr características de seguridad y rendimiento de la red mejorados.

Esta solución arquitectónica tradicional es la más fácil de implementar. Sin embargo, no es difícil imaginar las limitaciones a las que estarán sujetos el rendimiento y la disponibilidad de dicho sistema.

De hecho, todos los paquetes de todas las interfaces de red deben ser procesados ​​por un único procesador central. A medida que se agregan interfaces de red adicionales, el rendimiento se degrada notablemente. Además, cada paquete debe viajar a lo largo del bus dos veces: desde el módulo "fuente" al procesador y luego desde el procesador al módulo "receptor". El paquete realiza este viaje incluso si está destinado a la misma interfaz de red de la que procede. Esto también conduce a una caída significativa del rendimiento a medida que aumenta el número de módulos de interfaz de red. Se produce, pues, un clásico cuello de botella.

La confiabilidad también es baja. Si el procesador central falla, la funcionalidad del enrutador en su conjunto se verá afectada. Además, para una arquitectura de este tipo es imposible implementar una "recuperación en caliente" de la reserva de elementos del sistema dañados.

Las implementaciones modernas de esta arquitectura de enrutador suelen utilizar un procesador RISC bastante potente y un bus frontal de alta velocidad para superar las limitaciones de rendimiento. Se trata de un intento puramente contundente de resolver el problema: aumentar la productividad con una gran inversión inicial. Sin embargo, tales implementaciones no proporcionan escalamiento del rendimiento y su nivel de confiabilidad está predeterminado por la confiabilidad del procesador.

Arquitectura de procesador único modificada

Para superar algunas de las deficiencias mencionadas anteriormente de la arquitectura monoprocesador, se inventó su modificación. Se conserva la arquitectura subyacente: los módulos de interfaz están conectados a un único procesador a través de un bus de sistema común. Sin embargo, cada uno de los módulos de interfaz de red incluye un procesador periférico especial para aliviar al menos parcialmente el procesador central.

Los procesadores periféricos son, por regla general, microprocesadores universales o bit-slace que filtran y enrutan paquetes destinados a la interfaz de red del mismo módulo desde el que ingresaron al enrutador. (Desafortunadamente, en muchas implementaciones disponibles actualmente esto sólo se puede lograr para ciertos tipos de paquetes, como tramas Ethernet, pero no para IEEE 802.3.

El procesador central sigue siendo responsable de aquellas tareas que no se pueden delegar al procesador periférico (incluido el enrutamiento entre módulos, operaciones de todo el sistema, administración y gestión). Por lo tanto, la optimización del rendimiento lograda de esta manera es bastante limitada (para ser justos, en algunos casos, con un diseño de red adecuado, se pueden lograr buenos resultados). Al mismo tiempo, a pesar de una ligera reducción en el número de paquetes transmitidos a través del bus del sistema, sigue siendo un gran cuello de botella.

Incluir procesadores periféricos en la arquitectura no mejora la disponibilidad del enrutador en su conjunto.

arquitectura SMP

La arquitectura multiprocesador simétrica no presenta las desventajas inherentes a las arquitecturas mencionadas anteriormente. En este caso, la potencia informática se distribuye completamente entre todos los módulos de interfaz de red.

Cada módulo de interfaz de red tiene su propio módulo de procesador dedicado, que realiza todas las tareas relacionadas con el enrutamiento. En este caso, todas las tablas de enrutamiento, otra información necesaria, así como el software que implementa los protocolos, se replican (es decir, se copian) en cada módulo del procesador. Cuando un módulo de procesador recibe información de enrutamiento, actualiza su propia tabla y luego propaga las actualizaciones a todos los demás módulos de procesador.

Esta arquitectura, por supuesto, proporciona una escalabilidad casi lineal (si descuidamos los costos de replicación y el ancho de banda del canal de comunicación entre módulos). Esto, a su vez, significa la perspectiva de una expansión significativa de la red sin una caída notable en el rendimiento. Si es necesario, simplemente agregue un módulo de interfaz de red adicional; después de todo, simplemente no hay un procesador central en esta arquitectura.

Todos los paquetes son procesados ​​por procesadores locales. Los paquetes externos (es decir, destinados a otros módulos) se transmiten a través del canal de comunicación entre procesadores solo una vez. Esto conduce a una reducción significativa del tráfico dentro del enrutador.

En términos de disponibilidad, el sistema no fallará si falla un solo módulo de procesador. Esta falla solo afectará a aquellos segmentos de red que estén conectados al módulo procesador dañado. Además, un módulo dañado se puede reemplazar por un módulo que funcione sin apagar el enrutador y sin ningún impacto en todos los demás módulos.

Los fabricantes de ordenadores reconocen las ventajas de la arquitectura SMP. En los últimos años han surgido muchas plataformas similares, y sólo un número limitado de sistemas operativos estándar capaces de aprovechar plenamente los beneficios del hardware han frenado su proliferación. Otros fabricantes, incluidos los fabricantes de dispositivos de red activos, también utilizan la arquitectura SMP al crear dispositivos informáticos especializados.

En el resto de esta sección, analizaremos más de cerca los detalles técnicos de la arquitectura del enrutador SMP de Wellfleet.

Arquitectura de enrutador SMP propuesta por Wellfleet

Wellfleet, uno de los principales fabricantes de enrutadores y puentes, ciertamente no ha escatimado en gastos al evaluar y probar varias arquitecturas de enrutadores que admiten diferentes protocolos WAN y LAN en diferentes medios físicos y están diseñados para diferentes condiciones de tráfico. Los resultados de estos estudios se formularon en forma de una lista de requisitos que se tienen en cuenta al diseñar enrutadores destinados a construir entornos de red empresarial para aplicaciones altamente críticas. Presentemos algunos de estos requisitos, aquellos que, en nuestra opinión, justifican el uso de una arquitectura multiprocesador.

1. La necesidad de un rendimiento escalable, un alto nivel de disponibilidad y flexibilidad de configuración dicta el uso de la arquitectura SMP.

2. El nivel de requisitos de potencia informática del enrutamiento multiprotocolo (especialmente cuando se utilizan protocolos de enrutamiento modernos como TCP/IP OSPF) sólo puede satisfacerse mediante microprocesadores modernos y potentes de 32 bits. Sin embargo, dado que el enrutamiento implica atender una gran cantidad de solicitudes similares en paralelo, requiere una conmutación rápida entre diferentes procesos, lo que requiere una latencia de cambio de contexto excepcionalmente baja, así como una memoria caché integrada.

3. Para almacenar software de control y soporte de protocolos, tablas de enrutamiento y direcciones, información estadística y de otro tipo, se requiere una capacidad de memoria suficientemente grande.

4. Para garantizar velocidades de transferencia máximas entre las redes y los módulos de procesamiento del enrutador, se requieren controladores de interfaz de red de alta velocidad y controladores de comunicación entre procesadores con capacidades integradas de acceso directo a memoria (DMA).

5. Minimizar la latencia requiere direcciones y canales de datos de 32 bits de gran ancho de banda para todos los recursos.

6. Los requisitos de disponibilidad incluyen potencia informática distribuida, subsistemas de energía redundantes y, como característica adicional pero muy importante, canales de comunicación entre procesadores redundantes.

7. La necesidad de cubrir una amplia gama de entornos de red (desde un único nodo remoto o una red de grupo de trabajo hasta una red troncal de alto rendimiento y alta disponibilidad) requiere el uso de una arquitectura multiprocesador escalable.

Descripción general de la arquitectura

La Figura 2 muestra un diagrama esquemático de la arquitectura multiprocesador simétrica utilizada en todos los enrutadores modulares Wellfleet. Hay tres elementos arquitectónicos principales: módulos de comunicación, módulos de procesador y comunicación entre procesos.

Los módulos de comunicación proporcionan interfaces de red físicas que permiten conexiones a redes de área local y amplia de prácticamente cualquier tipo. Cada módulo de comunicación está conectado directamente a su módulo de procesador dedicado a través de una interfaz de enlace inteligente (ILI). Los paquetes recibidos por el módulo de comunicación se transmiten al módulo procesador conectado a él a través de su propia conexión directa. El procesador determina a qué interfaz de red están destinados estos paquetes y los redirige a otra interfaz de red del mismo módulo de comunicación o, a través de una conexión entre procesadores de alta velocidad, a otro módulo de procesador, que reenviará el paquete al módulo de comunicación conectado. .

Detengámonos con más detalle en la estructura de cada uno de los componentes.

El módulo del procesador incluye:

La unidad central de procesamiento real;

Memoria local, que almacena protocolos y tablas de enrutamiento, tablas de direcciones y otra información utilizada localmente por la CPU;

Memoria global, que desempeña el papel de un búfer para los paquetes de datos de "tránsito" provenientes del módulo de comunicación al módulo de procesador adjunto o de otros módulos de procesador (se llama global porque es visible y accesible para todos los módulos de procesador);

Procesador OMA, que brinda la capacidad de acceder directamente a la memoria al transferir paquetes entre búferes de memoria globales ubicados en diferentes módulos de procesador;

Interfaz de comunicación que proporciona conexión al módulo de comunicación correspondiente;

Canales de datos internos de 32 bits de ancho que conectan todos los recursos anteriores y están diseñados para proporcionar el mayor rendimiento posible y la mínima latencia; Se proporcionan múltiples canales, lo que permite que múltiples dispositivos informáticos (como la CPU y el procesador DMA) realicen operaciones simultáneamente y garantiza que no haya cuellos de botella que ralenticen el reenvío y el procesamiento de paquetes.

Varios modelos de enrutadores Wellfleet utilizan módulos de procesador ACE (Advanced Communication Engine) basados ​​en los procesadores Motorola 68020 o 68030, o módulos Fast Routing Engine (FRE) basados ​​en el MC68040.

El módulo de comunicación incluye:

Conectores que proporcionan una interfaz con redes específicas (por ejemplo, síncronas, Ethernet, Token Ring FDDI);

Controladores de comunicación que transfieren paquetes entre la interfaz de red física y la memoria global utilizando un canal DMA; los controladores de comunicación también están diseñados para un tipo específico de interfaz de red y son capaces de transmitir paquetes a una velocidad que coincide con la velocidad del cable;

Filtros (una característica opcional para los módulos de comunicación FDDI y Ethernet) que filtran previamente los paquetes entrantes, ahorrando recursos computacionales para un procesamiento de archivos significativo.

El VMEbus estándar se utiliza a menudo como canal de comunicación entre procesadores y proporciona un rendimiento total de 320 Mbit/s.

Los modelos más antiguos utilizan la interfaz Parallel Packet Express (PPX) desarrollada por la propia Wellfleet con un ancho de banda de 1 Gbit/s, utilizando cuatro canales de datos independientes y redundantes de 256 Mbit/s con distribución dinámica de carga. Esto garantiza un alto rendimiento general y garantiza que no haya un único punto de falla en la arquitectura. Cada módulo de procesador está conectado a los cuatro canales y tiene la capacidad de seleccionar cualquiera de ellos. Se selecciona aleatoriamente un canal específico para cada paquete, lo que debería garantizar una distribución uniforme del tráfico entre todos los canales disponibles. Si uno de los canales de datos PPX deja de estar disponible, la descarga se distribuye automáticamente entre los restantes.

Detalles del procesamiento de paquetes

Dependiendo de la red, los paquetes entrantes son recibidos por uno u otro controlador de comunicación. Si se incluye un filtro adicional en la configuración del módulo de comunicación, algunos paquetes se descartan y otros se aceptan. El controlador de comunicaciones coloca los paquetes recibidos en el búfer de memoria global del módulo de procesador directamente conectado a él. Para una transferencia rápida de paquetes, cada controlador de comunicación incluye un canal de acceso directo a la memoria.

Una vez en la memoria global, la CPU recupera los paquetes para enrutarlos. La CPU detecta la interfaz de red de salida, modifica el paquete adecuadamente y lo devuelve a la memoria global. Luego se realiza una de dos acciones:

1. El paquete se redirige a la interfaz de red del módulo directamente conectado a él. El controlador de comunicación de la interfaz de red de salida recibe instrucciones de la CPU para seleccionar paquetes de la memoria global y enviarlos a la red.

2. El paquete se reenvía a la interfaz de red de otro módulo de comunicación. El procesador DMA recibe instrucciones de la CPU para enviar paquetes a otro módulo de procesador y los carga a través de la conexión entre procesadores en la memoria global del módulo de procesador conectado a la interfaz de red de salida. El controlador de comunicación de la interfaz de red de salida selecciona paquetes de la memoria global y los envía a la red.

Las decisiones de enrutamiento las toma la CPU independientemente de otros módulos de procesador. Cada módulo de procesador mantiene una base de datos de direcciones y enrutamiento independiente en su memoria local, que se actualiza cuando el módulo recibe información sobre cambios en las tablas de enrutamiento o direcciones (en este caso, los cambios se envían a todos los demás módulos de procesador).

El funcionamiento simultáneo del controlador de comunicación, la CPU y el procesador DMA permite un alto rendimiento general. (Enfatizamos que todo esto sucede en un dispositivo donde el procesamiento está paralelizado entre varios módulos multiprocesador). Por ejemplo, puede imaginar una situación en la que el controlador de comunicaciones coloca paquetes en la memoria global, mientras que la CPU actualiza la tabla de enrutamiento en la memoria local y el procesador DMA coloca el paquete en la conexión entre procesadores.

Resumen

El mero hecho de la penetración de tecnologías informáticas desarrolladas para un área de aplicación en otras relacionadas no es nueva. Sin embargo, cada ejemplo concreto atrae la atención de los especialistas. En la arquitectura del enrutador discutida en este artículo, además de la idea de multiprocesamiento simétrico, diseñado para proporcionar un rendimiento escalable y un alto nivel de disponibilidad, también se utiliza el mecanismo de duplicación de canales de datos entre procesadores (para los mismos fines). así como la idea de replicación (o replicación) de datos, cuyo uso es más típico de la industria de DBMS distribuidos.

Literatura

Arquitectura multiprocesador simétrica. Comunicaciones Wellfleet, 10/1993.

G.G. Barón, G.M. Ladyzhensky. "Tecnología para la replicación de datos en sistemas distribuidos", "Sistemas Abiertos", primavera de 1994.

*) Wellfleet se fusionó el otoño pasado con otro líder en tecnología de redes, SunOptics Communications. La fusión dio lugar a la creación de un nuevo gigante de la red: Bay Networks (nota del editor)



UMA – Acceso uniforme a la memoria

5. La arquitectura SMP se utiliza en servidores y PC basados ​​en procesadores Intel, AMD, Sun, IBM, HP.

(+) : sencillez, “meticulosidad” de los principios básicos

(-) : se realiza todo el intercambio entre el procesador y la memoria. 1 bus cada uno - un cuello de botella de la arquitectura - limitación de rendimiento, escalabilidad.

Ejemplo:

MPP – arquitectura: procesamiento paralelo masivo

Sistema masivamente paralelo. estaba basado transputador– un potente procesador universal, cuya peculiaridad era la presencia de 4 enlaces (canales de comunicación). Cada enlace consta de dos partes, que sirven para transmitir información en direcciones opuestas y se utiliza para conectar transputadores entre sí y conectar dispositivos externos. Arquitectura: muchos nodos, cada nodo – OP+CPU

Arquitectura MPP clásica: cada nodo está conectado a 4 nodos mediante un enlace punto a punto.

Ejemplo: Intel Peragón

Arquitectura de clúster

Implementación de una combinación de máquinas que aparece como un todo único para el sistema operativo, el software del sistema y los programas de aplicación del usuario.

Tipos de clusters

  1. Sistemas de Alta Disponibilidad (HA).
  2. Sistemas para computación de alto rendimiento (High Performance, HP, Compute clusters).
  3. Sistemas multihilo.
  4. Clústeres de equilibrio de carga. (distribución de carga computacional)

Ejemplo: la arquitectura del clúster HIVE

5. Arquitectura NUMA Acceso a memoria no uniforme: acceso a memoria no uniforme

Cada procesador tiene acceso a su propia memoria y a la de otra persona (para acceder a la memoria de otra persona, se utiliza una red de conmutación o incluso un porcentaje del nodo de otra persona). El acceso a la memoria de otro nodo puede ser soportado por hardware: especial. controladores.



-: caro, poca escalabilidad.

Ahora: NUMA accede a la memoria externa mediante programación.

Un sistema informático NUMA consta de un conjunto de nodos (que contienen uno o más procesadores que ejecutan una única copia del sistema operativo), que están conectados entre sí mediante un conmutador o una red de alta velocidad.

La topología de las conexiones se divide en varios niveles. Cada capa proporciona conexiones en grupos con una pequeña cantidad de nodos. Estos grupos se tratan como nodos únicos en un nivel superior.

El OP está físicamente distribuido, pero lógicamente es público.

Dependiendo de la ruta para acceder al elemento de datos, el tiempo dedicado a esta operación puede variar significativamente.

Ejemplos de implementaciones específicas: cc-NUMA, SOMA, NUMA-Q

Ejemplo: HP Integridad SuperDomo

Diagramas de bloques simplificados de SMP (a) y MPP (b)

  1. Cinco arquitecturas principales de aviones de alto rendimiento, sus breves características, ejemplos. Comparación de arquitectura de clúster y NUMA.

En un clúster, cada procesador tiene acceso solo a su propia memoria en NUMA, no solo a la suya, sino también a la de otra persona (para acceder a la memoria de otra persona, se utilizan la red de conmutación y el procesador del nodo de otra persona).

  1. Arquitectura SMP. Principios de organización. Ventajas desventajas. Escalabilidad en el sentido “estrecho” y “amplio”. Alcance, ejemplos de aviones en SMP.

Arquitectura SMP (multiprocesamiento simétrico)- arquitectura multiprocesador simétrica. La característica principal de los sistemas con arquitectura SMP es la presencia de una memoria física común compartida por todos los procesadores.

1. El sistema SMP está construido sobre la base de un bus de sistema de alta velocidad, a cuyas ranuras están conectados tres tipos de bloques funcionales: procesadores (CPU), memoria de acceso aleatorio (RAM), subsistema de entrada/salida (I/ O).

2. La memoria es una forma de transferir mensajes entre procesadores.

3. Al acceder al OP, todos los dispositivos informáticos tienen los mismos derechos y el mismo direccionamiento para todas las celdas de memoria.



4. La última circunstancia le permite intercambiar datos de manera muy eficiente con otros dispositivos informáticos.

5. SMP se utiliza en servidores y estaciones de trabajo basados ​​en procesadores Intel, AMD, Sun, IBM, HP.

6. El sistema SMP se ejecuta bajo un único sistema operativo (ya sea tipo UNIX o Windows). El sistema operativo distribuye automáticamente (durante el funcionamiento) los procesos entre los procesadores, pero a veces es posible la vinculación explícita.

Principios de organización:

Un sistema SMP consta de varios procesadores homogéneos y una matriz de memoria compartida.

Uno de los enfoques que se utilizan a menudo en las arquitecturas SMP para crear un sistema de memoria compartida escalable es organizar de forma homogénea el acceso a la memoria mediante la organización de un canal de procesador de memoria escalable.

Cada operación de acceso a la memoria se interpreta como una transacción en el bus procesador-memoria.

En SMP, cada procesador tiene al menos un caché propio (y posiblemente varios). Podemos decir que un sistema SMP es una computadora con varios procesadores iguales.

La coherencia de la caché está respaldada por hardware.

Todo lo demás está en una copia: una memoria, un subsistema de entrada/salida, un sistema operativo.

La palabra "peer" significa que cada procesador puede hacer todo lo que puede hacer cualquier otro procesador. Cada procesador tiene acceso a toda la memoria, puede realizar cualquier operación de E/S e interrumpir a otros procesadores.

Escalabilidad:

En sentido “estricto”: la capacidad de conectar hardware dentro de ciertos límites (procesadores, memoria, interfaces).

En un sentido “amplio”: crecimiento lineal del rendimiento a medida que aumenta el hardware.

Ventajas:

Sencillez y versatilidad para la programación. La arquitectura SMP no impone restricciones sobre el modelo de programación utilizado para crear la aplicación: generalmente se usa un modelo de rama paralela, cuando todos los procesadores funcionan de manera completamente independiente entre sí; sin embargo, también se pueden implementar modelos que usan comunicación entre procesadores. El uso de la memoria compartida aumenta la velocidad de dicho intercambio; el usuario también tiene acceso a toda la cantidad de memoria a la vez.

Facilidad de uso. Normalmente, los sistemas SMP utilizan un sistema de refrigeración basado en aire acondicionado, lo que los hace más fáciles de mantener.

Precio relativamente bajo.

Ventaja del paralelismo. La transferencia implícita de datos entre cachés mediante hardware SMP es el medio de comunicación más rápido y económico en cualquier arquitectura paralela de propósito general. Por tanto, si hay un gran número de transacciones cortas (típicas, por ejemplo, de aplicaciones bancarias), cuando es necesario sincronizar frecuentemente el acceso a datos compartidos, la arquitectura SMP es la mejor opción; cualquier otra arquitectura funciona peor.

La arquitectura SMP es la más segura. Esto no significa que sea deseable la transferencia de datos entre cachés. Un programa paralelo siempre se ejecutará más rápido cuanto menos interactúen sus partes. Pero si estas partes necesitan interactuar con frecuencia, entonces el programa se ejecutará más rápido en SMP.

Defectos:

Los sistemas SMP no escalan bien:

1. El bus del sistema tiene un ancho de banda limitado (aunque alto) y un número limitado de ranuras, el llamado "cuello de botella".

2. En un momento dado, el bus es capaz de procesar solo una transacción, por lo que surgen problemas de resolución de conflictos cuando varios procesadores acceden simultáneamente a las mismas áreas de memoria física compartida. El momento en que se produce un conflicto de este tipo depende de la velocidad de la comunicación y del número de elementos informáticos.

Todo ello impide que el rendimiento aumente a medida que aumenta el número de procesadores y el número de usuarios conectados. En sistemas reales, no se pueden utilizar de forma eficaz más de 8-16-32 procesadores.

Área de aplicación: para trabajar con aplicaciones bancarias

Ejemplo: Arquitectura Sun Fire T2000. Arquitectura UltraSPARC T1.

  1. Arquitectura SMP. Mejora y modificación de la arquitectura SMP. SMP en procesadores multinúcleo modernos. Coherencia de caché.

Arquitectura SMP (multiprocesamiento simétrico)- arquitectura multiprocesador simétrica. La característica principal de los sistemas con arquitectura SMP es la presencia de una memoria física común compartida por todos los procesadores.

Mejora y modificación de SMP:

Ejemplo: Arquitectura de los sistemas de servidores QBB de la serie GS DEC

Para aumentar el rendimiento del bus, se intentó eliminar el bus, pero dejar el acceso compartido a la memoria --> transición y reemplazo del bus compartido por un conmutador local (o sistema de conmutadores): cada procesador está conectado a 4 memorias bancos en un momento dado.

Cada porcentaje trabaja con algún banco de memoria,

Cambia a otro banco de memoria

Comienza a trabajar con otro banco de memoria.

Clasificación de arquitecturas basadas en procesamiento de datos en paralelo.

Para dar una imagen más completa de las computadoras multiprocesador, además del alto rendimiento, es necesario nombrar otras características distintivas. En primer lugar, se trata de soluciones arquitectónicas inusuales destinadas a aumentar el rendimiento (trabajar con operaciones vectoriales, organizar mensajes rápidos entre procesadores u organizar la memoria global en sistemas multiprocesador, etc.).

El concepto de arquitectura de sistema de alto rendimiento es bastante amplio, ya que la arquitectura también puede entenderse como un método de procesamiento de datos en paralelo. , utilizado en el sistema y organización de la memoria. , y la topología de comunicación entre procesadores y la forma en que el sistema realiza operaciones aritméticas. Los intentos de sistematizar todas las arquitecturas se hicieron por primera vez a finales de los años 60 y continúan hasta el día de hoy.

En 1966, M. Flynn propuso un enfoque extremadamente conveniente para clasificar las arquitecturas CS. Se basó en el concepto de hilo, que se entiende como una secuencia de elementos, comandos o datos procesados ​​por el procesador. El sistema de clasificación correspondiente se basa en considerar el número de flujos de instrucciones y flujos de datos y describe cuatro clases de arquitectura:

1) SISD (Instrucción única, Datos únicos)2) MISD (Instrucción múltiple, Datos únicos)3) SIMD (Instrucción única, Datos múltiples)4) MIMD (Instrucción múltiple, Datos múltiples)

SISD (flujo de instrucciones único/flujo de datos único): flujo de comando único y flujo de datos único. Esta clase incluye sistemas informáticos secuenciales que tienen un único procesador central capaz de procesar solo un flujo de instrucciones ejecutadas secuencialmente. Actualmente, casi todos los sistemas de alto rendimiento tienen más de un procesador central, pero cada uno de ellos ejecuta flujos de instrucciones no relacionados, lo que hace que dichos sistemas sean complejos de sistemas SISD que operan en diferentes espacios de datos. Para aumentar la velocidad de procesamiento de comandos y la velocidad de realización de operaciones aritméticas, se puede utilizar la canalización. En el caso de sistemas vectoriales, el flujo de datos vectoriales debe considerarse como un flujo de vectores únicos e indivisibles. Ejemplos de computadoras con arquitectura SISD incluyen la mayoría de las estaciones de trabajo de Compaq, Hewlett-Packard y Sun Microsystems.

MISD (flujo de instrucciones múltiples/flujo de datos único): flujo de instrucciones múltiples y flujo de datos único. Teóricamente, en este tipo de máquina, se deberían ejecutar muchas instrucciones en un único flujo de datos. Hasta ahora no se ha creado ni un solo coche real que pertenezca a esta clase. Al parecer, el trabajo de un banco puede considerarse un análogo del funcionamiento de dicho sistema. Puedes emitir un comando desde cualquier terminal y hacer algo con el banco de datos existente. Dado que hay una base de datos y muchos comandos, estamos tratando con múltiples flujos de comandos y un único flujo de datos.


SIMD (flujo de instrucciones único/flujo de datos múltiple): flujo de instrucciones único y flujo de datos múltiple. Estos sistemas suelen tener una gran cantidad de procesadores, que van desde 1024 a 16384, que pueden ejecutar la misma instrucción con diferentes datos en una configuración rígida. Una sola instrucción se ejecuta en paralelo sobre muchos elementos de datos. Ejemplos de máquinas SIMD son los sistemas CPP DAP, Gamma II y Quadrics Apemille. Otra subclase de sistemas SIMD son las computadoras vectoriales. Las computadoras vectoriales manipulan conjuntos de datos similares de la misma manera que las máquinas escalares procesan elementos individuales de dichos conjuntos. Esto se hace mediante el uso de unidades centrales de procesamiento vectorial especialmente diseñadas. Cuando los datos se procesan utilizando módulos vectoriales, los resultados se pueden producir en uno, dos o tres ciclos de reloj (el ciclo de reloj es el principal parámetro de sincronización del sistema). Cuando funcionan en modo vectorial, los procesadores vectoriales procesan datos casi en paralelo, lo que los hace varias veces más rápidos que cuando funcionan en modo escalar. Ejemplos de sistemas de este tipo son, por ejemplo, los ordenadores Hitachi S3600.

MIMD (flujo de instrucciones múltiples/flujo de datos múltiple): flujo de instrucciones múltiple y flujo de datos múltiple. Estas máquinas ejecutan múltiples flujos de instrucciones sobre diferentes flujos de datos en paralelo. A diferencia de las máquinas SISD multiprocesador mencionadas anteriormente, las instrucciones y los datos están relacionados porque representan diferentes partes de la misma tarea. Por ejemplo, los sistemas MIMD pueden realizar múltiples subtareas en paralelo para reducir el tiempo de ejecución de la tarea principal. La gran variedad de sistemas que pertenecen a esta clase hace que la clasificación de Flynn no sea del todo adecuada. De hecho, tanto el SX-5 de cuatro procesadores de NEC como el Cray T3E de mil procesadores entran en esta clase. Esto nos obliga a utilizar un enfoque diferente de clasificación, que describe las clases de sistemas informáticos de manera diferente. La idea principal de este enfoque podría ser la siguiente. Supongamos que un flujo de comandos múltiple se puede procesar de dos maneras: mediante un único dispositivo de procesamiento canalizado que opera en modo de tiempo compartido para subprocesos separados, o cada subproceso se procesa mediante su propio dispositivo. La primera posibilidad se utiliza en computadoras MIMD, que generalmente se denominan canalización o vector, la segunda, en computadoras paralelas. Las computadoras vectoriales se basan en el concepto de canalización, es decir Segmentación explícita del dispositivo aritmético en partes separadas, cada una de las cuales realiza su propia subtarea para un par de operandos. Una computadora paralela se basa en la idea de utilizar varios procesadores trabajando juntos para resolver un problema, y ​​​​los procesadores pueden ser escalares o vectoriales.

La clasificación de las arquitecturas CS es necesaria para comprender las características operativas de una arquitectura en particular, pero no es lo suficientemente detallada como para confiar en ella al crear CS multiprocesador, por lo que se debe introducir una clasificación más detallada, que esté asociada con varias arquitecturas de computadora. y el tipo de equipo informático utilizado.

SMP (multiprocesamiento simétrico): arquitectura multiprocesador simétrica. La característica principal de los sistemas con arquitectura SMP es la presencia de una memoria física común compartida por todos los procesadores.

Figura 2.1 - Vista esquemática de la arquitectura SMP

La memoria sirve, en particular, para transferir mensajes entre procesadores, mientras que todos los dispositivos informáticos, al acceder a ella, tienen los mismos derechos y el mismo direccionamiento para todas las celdas de memoria. Por tanto, la arquitectura SMP se denomina simétrica. Esta última circunstancia le permite intercambiar datos de manera muy eficiente con otros dispositivos informáticos. El sistema SMP está construido sobre la base de un bus de sistema de alta velocidad (SGI PowerPath, Sun Gigaplane, DEC TurboLaser), a cuyas ranuras se conectan bloques funcionales de los siguientes tipos: procesadores (CPU), subsistema de entrada/salida ( E/S), etc. Para la conexión a módulos de E/S utilice buses más lentos (PCI, VME64). Los sistemas SMP más conocidos son los servidores y estaciones de trabajo SMP basados ​​en procesadores Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu, etc.). Todo el sistema se ejecuta bajo un único sistema operativo (normalmente tipo UNIX). , pero Windows NT es compatible con las plataformas Intel). El sistema operativo distribuye automáticamente (durante el funcionamiento) los procesos entre los procesadores, pero a veces es posible la vinculación explícita.

Ventajas de los sistemas SMP:

a) simplicidad y versatilidad para la programación. La arquitectura SMP no impone restricciones sobre el modelo de programación utilizado para crear la aplicación: normalmente se utiliza un modelo de rama paralela, en el que todos los procesadores funcionan de forma independiente unos de otros. Sin embargo, también es posible implementar modelos que utilicen comunicación entre procesadores. El uso de la memoria compartida aumenta la velocidad de dicho intercambio; el usuario también tiene acceso a toda la cantidad de memoria a la vez. Para los sistemas SMP, existen medios bastante eficaces de paralelización automática;

b) facilidad de operación. Normalmente, los sistemas SMP utilizan un sistema de aire acondicionado enfriado por aire, lo que los hace más fáciles de mantener;

c) precio relativamente bajo.

Desventajas de los sistemas SMP:

a) los sistemas de memoria compartida no escalan bien. Este importante inconveniente de los sistemas SMP no nos permite considerarlos realmente prometedores. La razón de la escasa escalabilidad es que el bus sólo puede manejar una transacción a la vez, lo que genera problemas de resolución de conflictos cuando varios procesadores acceden simultáneamente a las mismas áreas de memoria física compartida. Los elementos computacionales comienzan a interferir entre sí. El momento en que se produce un conflicto de este tipo depende de la velocidad de la comunicación y del número de elementos informáticos. Actualmente, pueden ocurrir conflictos con 8-24 procesadores. Además, el bus del sistema tiene un ancho de banda limitado (aunque elevado) y un número limitado de ranuras. Todo esto impide evidentemente que el rendimiento aumente a medida que aumenta el número de procesadores y el número de usuarios conectados. En sistemas reales no se pueden utilizar más de 32 procesadores.

Para construir sistemas escalables basados ​​en SMP se utilizan arquitecturas de cluster o NUMA. Cuando se trabaja con sistemas SMP, se utiliza el llamado paradigma de memoria compartida.

Libere el poder de Linux en sistemas SMP

Puedes aumentar el rendimiento de un sistema Linux de muchas formas, y una de las más populares es aumentar el rendimiento del procesador. La solución obvia es utilizar un procesador con una velocidad de reloj más alta, pero con cualquier tecnología existe un límite físico por el cual el generador de reloj simplemente no puede ir más rápido. Una vez que alcance este límite, podrá adoptar un enfoque mucho mejor y utilizar varios procesadores. Desafortunadamente, el rendimiento tiene una dependencia no lineal del conjunto de parámetros de los procesadores individuales.

Antes de discutir el uso del multiprocesamiento en Linux, echemos un vistazo a su historia.

Historia del multiprocesamiento

El multiprocesamiento comenzó a mediados de la década de 1950 en varias empresas, algunas que usted conoce y otras que quizás haya olvidado (IBM, Digital Equipment Corporation, Control Data Corporation). A principios de la década de 1960, Burroughs Corporation introdujo un multiprocesador simétrico de tipo MIMD de cuatro CPU con hasta dieciséis módulos de memoria conectados por una barra transversal (la primera arquitectura SMP). El conocido y exitoso CDC 6600 se introdujo en 1964 y dotaba a la CPU de diez subprocesadores (procesadores periféricos). A finales de la década de 1960, Honeywell lanzó otro sistema multiprocesador simétrico con ocho CPU Multics.

Si bien los sistemas multiprocesador han evolucionado, la tecnología también ha avanzado, haciendo que los procesadores sean más pequeños y aumentando su capacidad para operar a velocidades de reloj significativamente más altas. En la década de 1980, empresas como Cray Research introdujeron sistemas multiprocesador y sistemas operativos tipo UNIX® que podían utilizarlos (CX-OS).

A finales de la década de 1980 se produjo el declive de los sistemas multiprocesador con la popularidad de las computadoras personales con un solo procesador, como la IBM PC. Pero ahora, veinte años después, el multiprocesamiento ha regresado a esas mismas computadoras personales en forma de multiprocesamiento simétrico.

ley de amdahl

Gene Amdahl, arquitecto informático y empleado de IBM, desarrolló arquitecturas informáticas en IBM, creó la empresa del mismo nombre, Amdahl Corporation, etc. Pero lo que le dio fama fue su ley, que calcula la máxima mejora posible de un sistema al mejorar su parte. La ley se utiliza principalmente para calcular la mejora teórica máxima en el rendimiento del sistema cuando se utilizan varios procesadores (consulte la Figura 1).

Figura 1. Ley de Amdahl para paralelizar procesos

Usando la ecuación que se muestra en la Figura 1, puede calcular la mejora máxima de rendimiento para un sistema usando norte procesadores y factor F, que indica qué parte del sistema no se puede paralelizar (la parte del sistema que es de naturaleza serial). El resultado se muestra en la Figura 2.

Figura 2. Ley de Amdahl para un sistema con hasta diez CPU

La línea superior de la Figura 2 muestra la cantidad de procesadores. Idealmente, esto es lo que le gustaría ver después de agregar más procesadores para resolver el problema. Desafortunadamente, debido al hecho de que no todo el problema se puede paralelizar y hay una sobrecarga en la administración de los procesadores, la aceleración es ligeramente menor. A continuación (línea morada) se muestra un caso de un problema que es 90% secuencial. El mejor caso en este gráfico corresponde a la línea marrón, que representa una tarea que es 10% secuencial y, en consecuencia, 90% paralelizable. Aun así, diez procesadores no funcionan mucho mejor que cinco.

Multiprocesamiento y PC

La arquitectura SMP es aquella en la que dos o más procesadores idénticos están conectados entre sí a través de una memoria compartida. Todos tienen el mismo acceso a la memoria compartida (la misma latencia para acceder al espacio de la memoria). Lo opuesto es la arquitectura de acceso a memoria no uniforme (NUMA). Por ejemplo, cada procesador tiene su propia memoria y accede a la memoria compartida con diferente latencia.

Multiprocesamiento débilmente acoplado

Los primeros sistemas SMP de Linux eran sistemas multiprocesador débilmente acoplados, es decir, construidos a partir de varios sistemas separados conectados por una conexión de alta velocidad (como Ethernet 10G, Fibre Channel o Infiniband). Otro nombre para este tipo de arquitectura es clúster (ver Figura 3), para el cual el proyecto Linux Beowulf sigue siendo una solución popular. Los clústeres de Linux Beowulf se pueden construir a partir de hardware disponible y una conexión de red común como Ethernet.

Figura 3. Arquitectura multiprocesador débilmente acoplada

Construir sistemas con una arquitectura multiprocesador débilmente acoplada es fácil (gracias a proyectos como Beowulf), pero tiene sus limitaciones. La creación de una gran red multiprocesador puede requerir una cantidad significativa de energía y espacio. Un obstáculo más grave es el material del canal de comunicación. Incluso con una red de alta velocidad como Ethernet 10G, existe un límite para la escalabilidad del sistema.

Multiprocesamiento estrechamente acoplado

El multiprocesamiento estrechamente acoplado se refiere al multiprocesamiento a nivel de chip (CMP). Imagine una arquitectura débilmente acoplada reducida al tamaño del dado. Esta es la idea del multiprocesamiento estrechamente acoplado (también llamado computación multinúcleo). En un único circuito integrado, varios chips, memoria compartida e interconexión forman un núcleo bien integrado para el multiprocesamiento (consulte la Figura 4).

Figura 4. Arquitectura de multiprocesamiento estrechamente acoplada

En CMP, varias CPU están conectadas por un bus común con memoria compartida (caché de segundo nivel). Cada procesador también tiene su propia memoria de alta velocidad (caché L1). La naturaleza estrechamente acoplada de CMP permite distancias físicas muy cortas entre los procesadores y la memoria y, como resultado, una latencia de acceso a la memoria mínima y un mayor rendimiento. Este tipo de arquitectura funciona bien en aplicaciones de subprocesos múltiples, donde los subprocesos se pueden distribuir entre procesadores y ejecutarse en paralelo. Esto se llama paralelismo a nivel de subprocesos (TPL).

Dada la popularidad de esta arquitectura multiprocesador, muchos fabricantes están lanzando dispositivos CMP. La Tabla 1 enumera algunas opciones populares habilitadas para Linux.

Tabla 1. Dispositivos CMP seleccionados
FabricanteDispositivoDescripción
IBMPODER4SMP, dos CPU
IBMPODER5SMP, dos CPU, cuatro subprocesos paralelos
AMDAMDX2SMP, dos CPU
Intel®XeónSMP, dos o cuatro CPU
Intel2 núcleos, dualesSMP, dos CPU
BRAZOMPCoreSMP, hasta cuatro CPU
IBMXenónSMP, tres CPU Power PC
IBMProcesador celularMultiprocesamiento asimétrico (ASMP: multiprocesamiento asimétrico), nueve CPU

Configuración del núcleo

Para utilizar SMP con Linux en hardware compatible con SMP, el kernel debe estar configurado correctamente. La opción CONFIG_SMP debe estar habilitada durante la configuración del kernel para que el kernel reconozca SMP. Si dicho kernel se ejecuta en un host multiprocesador, puede determinar la cantidad de procesadores y su tipo utilizando el sistema de archivos proc.

Primero obtienes la cantidad de procesadores del archivo cpuinfo en /proc usando grep. Como puede ver en el Listado 1, utiliza la opción --count (-c) en las líneas que comienzan con procesador. También se muestra el contenido del archivo cpuinfo. Como ejemplo, tomamos una placa base Xeon con dos chips.

Listado 1. Uso del sistema de archivos proc para obtener información de la CPU
mtj@camus:~$ grep -c ^procesador /proc/cpuinfo 8 mtj@camus:~$ cat /proc/cpuinfo procesador: 0 id_proveedor: Familia de cpu Intel genuina: 15 modelo: 6 nombre del modelo: Intel(R) Xeon(TM ) CPU paso a paso de 3,73 GHz: 4 CPU MHz: 3724.219 tamaño de caché: 2048 KB ID física: 0 hermanos: 4 ID de núcleo: 0 núcleos de CPU: 2 fdiv_bug: no hlt_bug: no f00f_bug: no coma_bug: no fpu: sí fpu_exception: sí cpuid nivel: 6 wp: sí banderas: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl est cid xtpr bogomips: 7389.18... Procesador: 7 ID de proveedor: Familia de CPU Intel genuina: 15 Modelo: 6 Nombre del modelo: Intel(R) Xeon(TM) CPU Paso a paso de 3,73 GHz: 4 CPU MHz: 3724,219 Tamaño de caché: 2048 KB ID física: 1 hermanos: 4 ID de núcleo: 3 núcleos de CPU: 2 fdiv_bug: no hlt_bug: no f00f_bug: no coma_bug: no fpu: sí fpu_exception: sí nivel de cpuid: 6 wp: sí banderas: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl est cid xtpr bogomips: 7438.33 mtj@camus:~$

SMP y el kernel de Linux

Cuando apareció Linux 2.0 por primera vez, el soporte SMP consistía en un sistema de bloqueo básico que controlaba el acceso al sistema. Posteriormente hubo pocos avances en el soporte de SMP, pero no fue hasta el kernel 2.6 que finalmente surgió todo el poder de SMP.

Kernel 2.6 introdujo un nuevo programador 0(1) que incluía un mejor soporte para sistemas SMP. La clave era la capacidad de equilibrar la carga entre todas las CPU disponibles, evitando en la medida de lo posible el cambio de procesos entre procesadores para hacer un uso más eficiente de la caché. Con respecto al rendimiento de la caché, recuerde en la Figura 4 que cuando una tarea interactúa con una CPU, moverla a otra requiere que la caché intervenga. Esto aumenta la latencia del acceso a la memoria de una tarea mientras sus datos están en el caché de la nueva CPU.

El kernel 2.6 almacena un par de colas de ejecución por procesador (cola de ejecución caducada y activa). Cada cola de ejecución admite 140 prioridades, de las cuales 100 se utilizan para tareas en tiempo real y las 40 restantes para tareas de usuario. A las tareas se les asignan períodos de tiempo para ejecutarse y, cuando agotan su tiempo, se mueven de la cola de ejecución activa a la vencida. Esto garantiza el mismo acceso a la CPU para todas las tareas (bloqueando solo las CPU individuales).

Con una cola de tareas en cada CPU, el trabajo se puede equilibrar, dando una carga ponderada a todas las CPU del sistema. Cada 200 milisegundos, el programador realiza un equilibrio de carga para redistribuir trabajos y mantener el equilibrio en todo el complejo del procesador. Encuentre más información sobre el programador de Linux 2.6 en la sección.

Hilos del espacio de usuario: aprovechando el poder de SMP

Se ha trabajado mucho en el kernel de Linux para desarrollar SMP, pero el sistema operativo en sí no es suficiente. Recuerde que el poder de SMP reside en TLP. Los programas monolíticos individuales (de un solo subproceso) no pueden usar SMP, pero SMP se puede usar en programas que constan de muchos subprocesos que se pueden distribuir entre núcleos. Mientras un subproceso espera que se complete una operación de E/S, otro puede realizar un trabajo útil. Por lo tanto, los hilos funcionan superponiendo el tiempo de espera de cada uno.

Los subprocesos de la interfaz del sistema operativo portátil (POSIX) son una excelente manera de crear aplicaciones con subprocesos que puedan usar SMP. Los subprocesos POSIX proporcionan un mecanismo de subprocesos y memoria compartida. Cuando se invoca un programa, se crean varios subprocesos, cada uno de los cuales mantiene su propia pila (variables locales y estado) pero comparte el espacio de datos del padre. Todos los hilos creados comparten este mismo espacio de datos, pero aquí es donde radica el problema.

Para admitir el acceso de subprocesos múltiples a la memoria compartida, se requieren mecanismos de coordinación. POSIX proporciona una función de exclusión mutua para crear secciones críticas, que establecen acceso exclusivo a un objeto (área de memoria) para un solo hilo. Si no se hace esto, la memoria puede dañarse debido a manipulaciones no sincronizadas realizadas por múltiples subprocesos. El Listado 2 ilustra la creación de una sección crítica utilizando la exclusión mutua POSIX.

Listado 2. Usando pthread_mutex_lock y unlock para crear secciones críticas
pthread_mutex_t crit_section_mutex = PTHREAD_MUTEX_INITIALIZER; ... pthread_mutex_lock(&crit_section_mutex); /* Dentro de la sección crítica. El acceso a la memoria aquí es seguro * para la memoria protegida por crit_section_mutex. */ pthread_mutex_unlock(&crit_section_mutex);

Si varios subprocesos intentan bloquear el semáforo después de la llamada inicial en la parte superior, se bloquean y sus solicitudes se ponen en cola hasta que se realiza la llamada pthread_mutex_unlock.

Protección de variables del kernel para SMP

Cuando varios núcleos de un procesador se ejecutan en paralelo para un núcleo de sistema operativo, es recomendable evitar compartir datos específicos de ese núcleo de procesador. Por esta razón, el kernel 2.6 introdujo el concepto de variables por núcleo que están asociadas con CPU individuales. Esto le permite declarar variables específicas de la CPU que utiliza con mayor frecuencia esa CPU en particular, minimizando los requisitos de bloqueo y mejorando la ejecución.

La definición de variables individuales del kernel se realiza utilizando la macro DEFINE_PER_CPU, a la que se le pasa el tipo y nombre de la variable. Dado que la macro viene con un valor l, aquí es donde puedes inicializarla. El siguiente ejemplo (de /arch/i386/kernel/smpboot.c) define una variable que representa el estado de cada CPU en el sistema.

/* Estado de cada CPU. */ DEFINE_PER_CPU(int, cpu_state) = ( 0 );

La macro crea una matriz de variables, una para cada instancia de CPU. Para obtener una variable para una CPU individual, use la macro per_cpu junto con la función smp_processor_id, que devuelve el identificador actual de la CPU para la que se está ejecutando el programa actualmente.

per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;

El kernel proporciona otras funciones para bloquear cada CPU y asignar variables dinámicamente. Estas funciones se pueden encontrar en ./include/linux/percpu.h.

Conclusión

Cuando la frecuencia del procesador alcanza su límite, es común simplemente agregar más procesadores para aumentar el rendimiento. Anteriormente, esto significaba agregar más procesadores a la placa base o agrupar varias computadoras independientes. Hoy en día, el multiprocesamiento a nivel de chip proporciona más procesadores en un solo chip, lo que ofrece un rendimiento aún mayor al reducir la latencia de la memoria.

Encontrará sistemas SMP no sólo en servidores, sino también en escritorios, especialmente con la introducción de la virtualización. Como muchas tecnologías avanzadas, Linux brinda soporte para SMP. El kernel hace su parte para optimizar la carga en las CPU disponibles (desde subprocesos hasta sistemas operativos virtualizados). Todo lo que queda es garantizar que la aplicación pueda tener suficientes subprocesos para aprovechar el poder de SMP.




Arriba