Sistemas de Memoria Compartida en Multiprocesadores

Clasificado en Informática

Escrito el en español con un tamaño de 4,42 KB

Protocolos de Coherencia de Caché

  • Actualización por escritura: En lugar de invalidar cada bloque compartido, el procesador escritor transmite los nuevos datos por el bus a todos los procesadores, actualizando todas las copias con el nuevo valor.
  • Protocolo de escritura a través de la caché:
  • Éxito de lectura: Se lee de la caché sin acceder a memoria.
  • Fracaso de lectura: Se trae de memoria la palabra solicitada a través del bus. Podría obtenerse de otra caché si, mediante el método de *snooping*, otra caché detecta que se solicita una palabra que contiene.
  • Éxito de escritura: Se actualiza la palabra en la caché y en memoria. Si otras cachés contienen esta palabra, podrían invalidarla (lo más común) o actualizarla (más lento).
  • Fracaso de escritura: Se actualiza la memoria y se guarda la palabra en la caché. Si otras cachés contienen esta palabra, podrían invalidarla (lo más común) o actualizarla (más lento).
  • Problema del protocolo: Excesiva utilización del bus.

Protocolo de Escritura o de Membresía

Se parte de la idea de que, una vez que un CPU escribe una palabra, es probable que la vuelva a utilizar y poco probable que otro CPU la utilice en breve. Así, se podría evitar actualizar la memoria en escrituras posteriores hasta que un CPU diferente muestre interés por la palabra.

  1. INVÁLIDO: Este bloque no contiene datos válidos.
  2. LIMPIO: El bloque puede estar en otras cachés. La memoria está actualizada.
  3. SUCIO: Ninguna otra caché puede contener el bloque. La memoria es incorrecta.
Caso de Estudio: Memnet

En Memnet, un espacio de direcciones se divide en:

  • Parte privada: Cada máquina tiene espacio para su pila, datos y código no compartidos.
  • Parte compartida: Común para todas las máquinas y distribuida entre ellas.
  • Un bloque exclusivo de lectura puede estar en varias máquinas.
  • Un bloque de lectura-escritura solo puede estar presente en una máquina.

Cada máquina contiene una tabla con una entrada por cada bloque (de toda la memoria) en el espacio compartido de direcciones, indexada por el número de bloque.

Cada entrada contiene una serie de bits:

  • Válido: Indica si el bloque está presente en la caché y actualizado.
  • Exclusivo: Especifica si el bloque es único.
  • Origen: Solo activo si esta es su máquina de origen.
  • Interrupción: Utilizado para forzar interrupciones.
  • Posición: Indica su localización en la caché si está presente y es válido.
Protocolo de Lectura
  • La dirección de memoria a leer se transfiere al dispositivo Memnet, que verifica la tabla del bloque para ver si está presente y es válido.
  • Problema: Que la máquina solicitante no tenga espacio libre en su caché. Para liberar espacio, toma al azar un bloque de otra máquina y lo envía a su origen. Nunca se tomarán bloques con el bit de origen activado.
Protocolo de Escritura

Hay tres casos:

  1. El bloque está presente y es la única copia (Exclusivo activado): la palabra se escribe localmente.
  2. El bloque está presente pero no es la única copia: se envía un paquete de invalidación por el anillo para que las otras máquinas descarten sus copias. Cuando el paquete regresa, se activa el bit Exclusivo y se escribe.
  3. Si el bloque no está presente, se envía un paquete que combina una solicitud de lectura y una de invalidación.

Los esquemas de bus y anillo funcionan bien para sistemas de hasta 64 CPU. Al agregar más CPU, el ancho de banda se satura. Métodos para abordar este problema:

  • Reducir la comunicación (muy limitado).
  • Incrementar la capacidad de comunicación: Añadiendo más ancho de banda cambiando la topología de un bus a dos, a un árbol o cuadrícula. Otro método es construir el sistema como una jerarquía.

Entradas relacionadas: