Problemas y soluciones en una red de comunicación
Podemos encontrar algunos problemas en una red de comunicación como por ejemplo los bloqueos, que son un conjunto de paquetes que agota los recursos para seguir adelante y se queda parado para siempre. Para solucionar esto utilizaremos topologías o estrategias de encaminamiento que no generen bloqueos. Las más utilizadas son: encaminamiento estático y canales virtuales. Si utilizamos un encadenamiento dinámico podemos solucionar este problema con: Mallas virtuales 2D, Turn model (mallas), caminos seguros y controlar la inyección. Otros problemas que pueden existir son: Livelock (los paquetes van adelante y atrás pero no consiguen llegar al destino y la causa puede estar relacionada con las prioridades). Starvation (Algunos procesadores no consiguen inyectar sus paquetes en la red porque hay mucho tráfico alrededor). Algunos de los parámetros básicos que definen las prestaciones son: Ancho de banda teórico o capacidad del canal (B), latencia total o tiempo de comunicación y productividad o ancho de banda efectivo. Estos son algunas características generales de las redes: Modo de operación que puede ser sincronizado (con control central de los switches) o no sincronizado, técnicas de switching, técnicas de ruteo que son métodos para establecer paths de comunicación y puede ser: centralizado, distribuido y adaptativo, y topología: distribución física. Los distintos tipos de red son: de medio compartido (redes de área local, bus de sistema), directas (estáticas basadas en routers) (topologías estrictamente ortogonales como malla, toroides, hipercubo y otras topologías como árboles, grafos en estrella etc), indirectas (dinámicas basadas en switches) (topologías regulares como crossbar, de interconexión multietapa e hipercubo así como topologías irregulares. Existen tres tipos dependiendo de la disponibilidad de caminos para establecer nuevas conexiones: bloqueantes, no bloqueantes y reconfigurables) e híbridas (buses de sistema múltiples, redes jerárquicas e hipergrafos como hiperbuses e hipermallas).
Dos tipos de multiprocesadores
Existen dos tipos de multiprocesadores: Arquitectura centralizada de memoria compartida, las máquinas con memoria compartida tienen un único mapa de memoria común a todos los procesadores y Arquitectura de memoria distribuida, las máquinas con memoria privada tienen un mapa de memoria por cada procesador. La ACMC son máquinas que constan de varios procesadores, normalmente un número pequeño, y debido a esto la comunicación a través de un bus es económica y eficiente. Cada procesador puede tener una memoria caché para reducir la cantidad de datos que viajan por el bus y la comunicación entre procesadores es a través de variables compartidas y zonas de memoria comunes. El principal problema es el de la coherencia, los procesadores del sistema guardan en caché los datos con los que trabajan, estos datos los podemos dividir en privados, sólo los necesita un procesador y compartidos los necesitan varios. El problema surge cuando un procesador modifica datos que otros tienen en sus cachés. Tenemos dos formas para notificar estas modificaciones en línea: Protocolo de invalidación por escritura (cuando un procesador realiza una escritura en una línea, esta acción invalida las copias de esa línea en las otras caches) y protocolo de actualización en escritura (cuando un procesador realiza una escritura en una línea, envía la nueva versión a las otras cachés). En la AMD un nodo no puede observar todas las transferencias entre los restantes nodos, por ello si la memoria está distribuida se suele utilizar el protocolo de directorios. Existe una estructura de datos, el directorio, que contiene información sobre el estado de cada bloque y esta estructura también puede estar distribuida. Según la cantidad de información que se almacene en el directorio, tenemos tres tipos de protocolos de directorios: completos: tiene toda la información centralizada, lo que hace eficiente su gestión. Se puede añadir o eliminar procesadores a la lista, esto es, activar o desactivar un bit pero requiere espacio para todos los procesadores en cada una de las entradas. Limitados: también tienen la información centralizada y se puede añadir y eliminar procesadores a la lista de forma sencilla. Puede haber dificultades si el número de espacios para identificadores es pequeño. Encadenados: tienen la información distribuida y el espacio que ocupa la lista es proporcional al número de procesadores que tiene una copia del bloque. Añadir y eliminar procesadores es un proceso largo. La sincronización es una forma especial de comunicación en la que se intercambia información de control en lugar de datos. Se utiliza para conseguir el seguimiento correcto de los procesos y los procesadores a la par que permite el acceso correcto a los datos.