sábado, 17 de noviembre de 2012

4.1 Memoria compartida y distribuida


Computación paralela


Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema.
El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones. Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs. Técnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.

La computación paralela a eficientado los procesos al compartir los recursos sin utilizar de dos o mas CPUs

¿Por qué utilizar computación paralela?

  • Reducir el tiempo de procesamiento
  • Resolver problemas de gran embergadura.
  • Proveer concurrencia.
  • Utilizar recursos remotos de cómputo cuando los locales son escasos.
  • Reducción de costos usando múltiples recursos”baratos” en lugar de costosas supercomputadoras.
  • Ampliar los límites de memoria para resolver problemas grandes.


El mayor problema de la computación paralela radica en la complejidad de sincronizar unas tareas con otras, ya sea mediante secciones críticas, semáforos o paso de mensajes, para garantizar la exclusión mutua en las zonas del código en las que sea necesario.
La computación paralela está penetrando en todos los niveles de la computación, desde computadoras masivamente paralelas usados en las ciencias de larga escala computacional, hasta servidores múltiples procesadores que soportan procesamiento de transacciones. Los principales problemas originados en cada uno de las áreas básicas de la informática (por ejemplo, algoritmos, sistemas, lenguajes, arquitecturas, etc.) se vuelven aún más complejos dentro del contexto de computación paralela.

De circuitos, basados en bus, anillo o con conmutador

Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.

Las diferentes arquitecturas nos permiten aprovechar al máximo el rendimiento de la red dependiendo de la aplicacion


  • Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
  • MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
    • Multiprocesadores tipo bus
      • Conexión entre CPU y memoria se hace a través de cables paralelos:
        • algunos transmiten las direcciones y datos que el CPU quiere leer o escribir
        • otros envían o reciben datos
        • el resto para controlar las transferencias.
      • Dicha colección de cables se conoce con el nombre de bus.
      • Buses pueden ser parte del chip, pero en la mayoría de los sistemas los buses son externos y son usados para conectar circuitos impresos.
      • Una forma simple de construir multiprocesadores es conectarlos en un bus con más de un CPU
  • MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
    • Multiprocesadores basados en anillo.
      • Ejemplo Memnet: un espacio de direcciones se divide en una parte privada y otra compartida.
        • La parte privada: se divide en regiones cada máquina cuenta con memoria para su pila, datos y códigos no compartidos.
        • Parte compartida: común a todas las máquinas y se guarda de forma consistente mediante un protocolo de hardware parecido a los de bus se divide en bloques de 32 bytes, (unidad transferencia)
  • MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redirecciones a otro grupo.
    • Multiprocesadores con conmutador.
      • En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo
      • Dos métodos para solucionar el problema:
        1. Reducir la cantidad de comunicación
        2. Incrementar la capacidad de comunicación
      • Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:
        • mejorar protocolo de ocultamiento
        • optimizar el tamaño del bloque
        • incrementar la localidad de las referencias a memoria.
      • Sin embargo siempre se querrá añadir más CPUs y no habrá más ancho de banda en el bus.

No hay comentarios.:

Publicar un comentario