Arquitectura de un sistema computacional

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Introducción

Un sistema computacional se puede organizar de varias maneras diferentes, las cuales podemos clasificar de acuerdo al número de procesadores de propósito general utilizados.

El objetivo principal de un procesador es el de ejecutar los distintos pasos de una tarea. Debe también conseguir funcionar lo más rápido posible, consumiendo la mínima potencia y evitando errores y paradas. Para ello, el procesador utiliza una serie de operaciones elementales, a partir de las cuales se pueden resolver tareas más complejas. Cada una de las operaciones elementales tiene un código binario y puede tener uno, o varios operandos sobre los que actuar. El procesador dispone habitualmente de un conjunto reducido de posiciones de memoria internas, que se conocen como registros, y que le permiten almacenar los datos y los resultados con los que está trabajando en ese momento. El procesador, o CPU, consta básicamente de dos partes: La unidad aritmética lógica (ALU, es decir aritmetic-logic unit) y la unidad de control (CU o control unit).

La unidad aritmética lógica

La unidad aritmética lógica o ALU de nuestro ordenador es la encargada de realizar las operaciones aritméticas (suma, resta, comparación, producto, cociente) y lógicas (and, or, not). Está formada por el acumulador, un conjunto de circuitos lógicos, y el registro de códigos de condición o flags. En los procesadores más primitivos el acumulador era el registro que contenía obligatoriamente uno de los operandos y el resultado de las operaciones. Los procesadores más modernos no tienen un registro tan especializado, normalmente cualquier registro puede contener los operandos y los resultados de las operaciones.

La unidad de control

La unidad de control, reducida a la mínima expresión, consta de contador de programa (normalmente llamado PC), decodificador de instrucciones, puntero de pila (comúnmente llamado SP, en inglés Stack Pointer) y, opcionalmente, de registro índice. La unidad de control tiene asimismo, algo muy necesario, que es el generador de impulsos de reloj, encargado de sincronizar el funcionamiento del procesador. Para ello, se emplea un cristal de cuarzo externo a la CPU que le suministra a través de una de sus patas una onda cuadrada. Cada período de la onda recibe el nombre de ciclo de reloj y se utiliza su frecuencia para medir la velocidad del procesador.

Sistemas de un solo procesador

Sistema monoprocesador.

Un sistema de un solo procesador o monoprocesador, como su nombre lo indica, es un procesador que solo puede ejecutar un proceso a la vez, esto quiere decir que si se requiere que se ejecuten varias tareas al mismo tiempo, no va a ser posible que se realicen con satisfacción.

Lo que pueden hacer los monoprocesadores es alternar las tareas, y es por eso que los procesadores con grandes capacidades de velocidad, dan una simulación de multiprocesadores, ya que parece que se están ejecutando varios procesos al mismo tiempo, pero esto no es cierto.

En un sistema monoprocesador hay una CPU principal que ejecuta instrucciones de propósito general, incluyendo instrucciones de procesos de usuario. Pero casi todos los sistemas disponen de otros procesadores de propósito especial como procesadores gráficos o, más procesadores de propósito general como procesadores de E/S.

Los procesadores de propósito especial ejecutan un conjunto limitado de instrucciones, nunca procesos de usuario. En ocasiones el SO los gestiona (enviando información sobre su siguiente tarea y monitorizando su estado). Este método libera a la CPU principal de trabajo adicional. Por ejemplo, un microprocesador incluido en una controladora de disco, que recibe una secuencia de solicitudes procedentes de la CPU, libera a esta de tener que preocuparse de planificar las tareas de disco.

Sistemas multiprocesador

Procesamiento simétrico y asimétrico

Estos sistemas disponen de dos o más procesadores que se comunican entre sí, compartiendo el bus de la computadora y, en ocasiones, el reloj, la memoria y los dispositivos periféricos. Presentan tres ventajas:

  • Mayor rendimiento: se realiza más trabajo en menos tiempo (aunque la mejora en velocidad con N procesadores es menor que N). Cuando múltiples procesadores cooperan en la realización de una tarea, se necesita parte de este tiempo en poder coordinar estos procesadores.
  • Economía de escala: los sistemas multiprocesador son más baratos que múltiples sistemas de un solo procesador, ya que comparten periféricos, alimentación y almacenamiento. Por ejemplo, si múltiples programas utilizan los mismos datos, es más barato tener los datos en un solo disco que tener múltiples sistemas con copias de los mismos datos.
  • Mayor fiabilidad: el fallo de un procesador no hará que el sistema deje de funcionar. Si tenemos 10 procesadores y uno falla, el sistema trabajará un 10% más despacio, en lugar de dejar de funcionar.

La capacidad de seguir proporcionando servicio proporcionalmente al nivel de hardware superviviente se llama degradación suave. Los sistemas multiprocesador actuales son de dos tipos: multiprocesamiento asimétrico (en el que cada procesador se asigna a una tarea específica, un procesador maestro controla el sistema y el resto esperan instrucciones de este) y multiprocesamiento simétrico (SMP)(en el que todos los procesadores son iguales y realizan las tareas correspondientes al SO. La ventaja es que se pueden ejecutar simultáneamente muchos procesos; la desventaja es que al estar las CPUs separadas, una puede estar inactiva y la otra sobrecargada, dando lugar a ineficiencias). Una tendencia actual es incluir múltiples nucleos de cálculo en un mismo chip. Dejando de lado las consideraciones sobre la arquitectura (caché, memoria y contienda del bus) el sistema operativo ve estas CPU con N núcleos como N procesadores estándar.

Multiprocesamiento Asimétrico

El multiprocesamiento asimétrico (AMP) consiste en que cada procesador cumple una tarea específica. En este sistema hay un procesador (maestro) donde se ejecuta el sistema operativo y los demás procesadores (esclavos) esperan que el maestro les de instrucciones o tienen asignadas tareas predefinidas. Es una relación maestro-esclavo.

El procesador maestro planifica el trabajo de los procesadores esclavos asignándoles tareas específicas. Tiene el control sobre toda la memoria y de todos los recursos de E/S. Los procesadores esclavos solo ejecutan aplicaciones de usuario. Una vez que un proceso está activo y el esclavo necesitar un servicio de E/S le envía una solicitud al maestro y espera a que el servicio se lleve a cabo.

La ventaja de es que al aumentar más procesadores se tiene que hacer un cambio mínimo y fácil para el manejo de estos y en general se eliminan muchos problemas de integridad de datos. La gran desventaja es que al haber solo una copia del sistema operativo en un solo procesador (maestro) cuando este procesador falla todo el sistema falla porque todos los recursos que son manejados por el sistema operativo no pueden ser accedidos, esto quiere decir que el procesador maestro puede ser un cuello de botella en el rendimiento.

Multiprocesamiento Simétrico

El multiprocesamiento simétrico (SMP) consiste en una arquitectura de hardware multiprocesador donde dos o más procesadores idénticos están conectados a una única memoria principal común y son controlados por una sola instancia del sistema operativo. Sistemas multiprocesador más comunes hoy en día utilizan una arquitectura SMP. En el caso de los procesadores multinúcleo, la arquitectura SMP se aplica a los núcleos, tratándolos como procesadores separados. Los procesadores pueden estar interconectadas mediante autobuses, interruptores de barra transversal o en el chip de redes de malla. El cuello de botella en la escalabilidad de SMP utilizando autobuses o interruptores de barra transversal es el consumo de ancho de banda y la potencia de la interconexión entre los diversos procesadores, la memoria y los arrays de disco.

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar donde los datos de esa tarea están ubicados en la memoria, a condición de que cada tarea en el sistema no está en ejecución en dos o más procesadores al mismo tiempo, con el apoyo adecuado del sistema operativo, los sistemas SMP puede mover fácilmente tareas entre los procesadores para equilibrar la carga de trabajo de manera eficiente.

La limitación más importante de la arquitectura SMP, en términos del rendimiento máximo que puede alcanzarse, es la posibilidad de saturación de los buses del sistema. Ya que todos los procesadores tienen acceso al mismo bus de memoria, y en general a todos los periféricos que se encuentran comunicados comúnmente por buses, conforme se incrementa el número de procesadores se incrementa también el tráfico en dichos buses. Esto causa una saturación que finalmente termina por negar el incremento de rendimiento obtenido teniendo varios procesadores. Por esta razón una arquitectura SMP difícilmente puede escalar más allá de algunas decenas de procesadores.

Sistemas en Cluster

Los sistemas en cluster son sistemas con múltiples CPU para lleva acabo el trabajo. Los sistemas en cluster se diferencian de los sistemas de multiprocesamiento en que están formados por dos o más sistemas individuales acoplados. La definición del término en cluster no es concreta. La definición generalmente aceptada es que las computadoras en cluster comparten el almacenamiento y se conectan entre sí a través de una red de área local o mediante una conexión más rápida como InfiniBand.

Los sistemas cluster se suelen usar para proporcionar un servicio de alta disponibilidad, es decir, que funcione incluso si uno o más sistemas fallan. Un cluster se puede estructurar de varias formas: cluster asimétrico (una máquina está en modo de espera mientras otra ejecuta las aplicaciones, monitorizándola, si dicho servidor falla, el host en espera pasa a ser el servidor activo) y cluster simétrico  (dos o más hosts ejecutan aplicaciones y se monitorizan entre sí, obviamente es más eficiente), cluster en paralelo  (permite que varios hosts accedan a los mismos datos) y clusters conectados a una red de área extensa. Otros son los clusters de base de datos  (donde docenas de hosts pueden compartir la misma base de datos, incrementando el rendimiento y la fiabilidad).

Procesamiento Masivamente Paralelo

Procesamiento masivamente paralelo (MPP)

El procesamiento masivamente paralelo (MPP) consiste en una máquina paralela que consta de varias unidades de procesamiento básicamente independientes. Cada una de estas unidades, conocida como "nodo", es prácticamente una computadora en sí misma, contando con su propio procesador, memoria no compartida, y que se comunica con las demás unidades de procesamiento a través de un canal provisto exclusivamente para este propósito.

Una máquina MPP presenta una serie de consideraciones importantes derivadas de su arquitectura, que se deben tomar en cuenta al escribir programas que pretendan aprovechar su naturaleza multiprocesador. La característica más importante es el hecho de que, en cada nodo, cada procesador opera básicamente como una computadora independiente, ejecutando su propio código independiente de los demás procesadores, y teniendo un área de memoria con datos también independientes. Para obtener un mayor desempeño, se requiere colaboración entre los nodos. Una máquina MPP debe contar con un canal que permita a los nodos comunicarse entre sí, a fin de intercambiar datos y coordinar sus operaciones. Ya que el objetivo principal es obtener alto rendimiento, para esto se busca que este canal de comunicaciones sea lo más eficiente posible, en términos tanto de ancho de banda como de tiempo de latencia. En la mayoría de los casos este canal será un bus propietario, diseñado por el fabricante del equipo MPP.

Para tener acceso a información fuera de su propia área de memoria, los nodos se comunican entre sí, regularmente empleando un esquema de paso de mensajes. Esto resuelve el problema de saturación del bus de comunicaciones, pues este solo se emplea cuando se está realizando comunicación entre los nodos. De esta manera se tiene una arquitectura que puede escalarse a varios cientos o miles de procesadores (las máquinas MPP más grandes en la actualidad tienen alrededor de 10 mil procesadores).

Sin embargo el tener varias secciones de memoria independientes complica la programación en este tipo de arquitecturas. En una arquitectura MPP la distribución de trabajo entre los nodos es una consideración vital al diseñar cualquier aplicación. Se debe tomar en cuenta la sincronización de datos entre los nodos, y en toda comunicación entre ellos debe realizarse explícitamente por medio de llamadas al mecanismo de paso de mensajes.



Computación de alto desempeño (HPC) (tema de investigación)

Bibliografía

  • Fundamentos de sistemas operativos (7a ed). Galvin, Silberschatz, Gagne. McGraw-Hill (2005).

Referencias

Sistemas multiprocesador

A Look to Parallel Computers

Cluster Operating Systems, Clarke & T B Lee

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas