• No se han encontrado resultados

Arquitectura con varios procesadores

Los enfoques antes mencionados (memoria entrelazada, pipeline), y algunos otros, son formas efectivas de aumentar la velocidad y eficiencia de procesadores individuales. No obstante, existen aplicaciones en las cuales el uso de un procesador individual, por muy rápido que sea, es inadecuado. Modelos para solucionar problemas ubicados en campos del conocimiento tales como: el pronóstico del tiempo, simulaciones macroeconométricas y de urbanismo, astronomía, física y química atómica, requieren del manejo de enormes volúmenes de datos, que de procesarse en un computador de procesador único, aún trabajando a la velocidad de la luz, provocarían tiempos de respuesta inaceptables. Para tales aplicaciones, la solución es conectar varios procesadores en un computador de procesamiento en paralelo real.

Al diseñar máquinas paralelas se presentan una gran cantidad de opciones de diseño, éstas incluyen la definición del número y naturaleza de los procesadores que deberán conectarse, la forma en que se enlazarán los procesadores entre sí y con la memoria y el nivel de complejidad de cada uno de éstos.

Cuando los Computadores paralelos cuentan con procesadores iguales se dice que se trata de máquinas homogéneas, en tanto que si poseen procesadores especializados diferentes entre sí, se hablará de equipos heterogéneos.

Ya han sido desarrollados algunos computadores heterogéneos y otros se encuentran en etapa de diseño. Las máquinas hasta el momento construidas generalmente tienen dos clases de procesadores: un procesador de propósito general y otro especial destinado a realizar operaciones de punto flotante. También se han construido otros sistemas que combinan procesadores especializados con arquitecturas diseñadas especialmente para aplicaciones de

inteligencia artificial, graficación, bases de datos y procesamiento numérico, aunque todavía ninguno como gran sistema comercial.

El sistema de interconexión por medio del cual los procesadores pueden compartir información entre éstos y con las unidades de memoria es una de las características más importantes en cualquier sistema paralelo, y también un área donde se observa una gran variedad de diseños en los sistemas paralelos. En un método, conocido como de memoria compartida, todos los procesadores se conectan a un sistema de memoria común ya sea por conexión directa, con una red de conexiones, o por medio de lo que se conoce como un bus de memoria. En un sistema de memoria compartida cada localidad de datos está disponible directamente por cada procesador. Si el procesador requiere datos para realizar su trabajo, simplemente los lee de la memoria. Puesto que otros procesadores pueden continuamente modificar los datos almacenados, debe tenerse cuidado de que ningún procesador lea de alguna localidad de memoria antes de que el valor apropiado haya sido colocado. La mayor parte de la coordinación necesaria se realiza por medio de software, aunque alguna asistencia del hardware también es útil. Por ejemplo, en algunos sistemas ciertas áreas de memoria están reservadas para elementos que pueden llevar registro de si se ha escrito ya en ciertas localidades, con objeto de prevenir un intento prematuro de tener acceso a los datos que dichas localidades deberán contener.

Un enfoque alterno, que elimina problemas de congestión de bus consiste en agregarle cierta cantidad de memoria a cada procesador y conectar el par procesador-memoria (o nodo, como es conocido frecuentemente en este contexto). Los sistemas construidos sobre estas directrices se dice que poseen memoria local (conocida también como memoria distribuida).

Han sido desarrollados muchos esquemas de conexión de nodos en sistemas de memoria distribuida. El diseño de tales sistemas tiene diferentes metas: la comunicación entre nodos deberá ser rápida, ningún nodo en particular podrá presentar demasiadas conexiones y la topología de las conexiones deberá reflejar de alguna forma la geometría del problema que se pretende resolver.

Uno de los esquemas de interconexión más simples es el anillo, en éste cada nodo está conectado a otros dos y la línea de conexión forma una circunferencia. Otro esquema relativamente simple es la mafia, donde cada nodo se conecta con sus cuatro vecinos más cercanos. Aunque cualquier cantidad de nodos puede conectarse en anillo o en malla, la cantidad de conexiones que cada nodo debe presentar es pequeña (dos o cuatro, respectivamente). El procesador en memoria puede tener acceso a su propia memoria a una velocidad adecuada, en tanto que los canales de comunicación se emplearán para manejar el tráfico sólo entre algunos nodos.

Estas topologías simples presentan algunas desventajas. La cantidad de nodos necesarios para transmitir un mensaje entre dos nodos puede ser muy grande (por

ejemplo, en un anillo, puede involucrar a la mitad de los nodos), lo que trae por resultado largos retrasos. Si un nodo no encuentra una tarea que lo mantenga ocupado mientras espera la llegada de los datos, sus recursos estarán ociosos, mientras que si se requieren datos de otros nodos con frecuencia, se desperdiciará mucho poder computacional.

Una forma de aminorar el problema se presenta empleando una topología ligeramente más elaborada conocida como esquema de n-cubo o hipercubo. En este esquema los nodos se conectan como si estuvieran colocados en las esquinas de un cubo multidimensional. Por ejemplo, ocho nodos se conectan en un 3-cubo (cubo de tres dimensiones), mientras que 16 nodos se distribuirían en una topología que modela un cubo de cuatro dimensiones.

En vista de las diferencias entre las topologías disponibles para sistemas de memoria compartida y de memoria local, es natural intentar combinar ambas. Por ejemplo, es posible imaginar un sistema híbrido donde cada nodo conste de un número reducido de procesadores que compartan una unidad de memoria. Los nodos (denominados clusters en este contexto), podrían conectarse mediante una topología de malla o hipercubo.

Lección 9 Aplicaciones de Arquitecturas