domingo, 25 de mayo de 2008

TIPOS DE ARQUITECTURA

ARQUITECTURAS DE COMPUTADORAS.

En 1966 Michael Flynn propuso un mecanismo de clasificación de las computadoras. La taxonomía de Flynn es la manera clásica de organizar las computadoras, y aunque no cubre todas las posibles arquitecturas, proporciona una importante penetración en varias arquitecturas de computadoras. El método de Flynn se basa en el número de instruccciones y de la secuencia de datos que la computadora utiliza para procesar información. Puede haber secuencias de instrucciones sencillas o múltiples y secuencias de datos sencillas o múltiples. Esto da lugar a 4 tipos de computadoras, de las cuales solamente dos son aplicables a las computadoras paralelas.

SISD (Single Instruction Single Data).
Este es el modelo tradicional de computación secuencial donde una unidad de procesamiento recibe una sola secuencia de instrucciones que operan en una secuencia de datos.

Modelo SISD (Single Instruction Single Data).


Ejemplo: Para procesar la suma de N números a1, a2, ... aN, el procesador necesita accesar a memoria N veces consecutivas (para recibir un número). También son ejecutadas en secuencia N-1 adiciones. Es decir los algoritmos para las computadoras SISD no contienen ningún paralelismo, éstas están constituidas de un procesador.

SIMD (Single Instruction Multiple Data).
A diferencia de SISD, en este caso se tienen múltiples procesadores que sincronizadamente ejecutan la misma secuencia de instrucciones, pero en diferentes datos. El tipo de memoria que estos sistemas utilizan es distribuida.




Modelo SIMD(Single Instruction Multiple Data).

Aquí hay N secuencias de datos, una por procesador, así que diferentes datos pueden ser utilizados en cada procesador. Los procesadores operan sincronizadamente y un reloj global se utiliza para asegurar esta operación. Es decir, en cada paso todos lo procesadores ejecutan la misma instrucción, cada uno en diferente dato.
Máquinas con arreglos de procesadores tales como ICL DAP (Distributed Array Processor) y computadoras vectoriales canalizadas como CRAY 1 & 2 y CIBER 205 son de arquitectura SIMD.
Ejemplo: Sumando dos matrices A + B = C. Siendo A y B de orden 2 y teniendo 4 procesadores:
A11 + B11 = C11 A12 + B12 = C12
A21 + B21 = C21 A22 + B22 = C22
La misma instrucción es ejecutada en los 4 procesadores (sumando dos números) y los 4 ejecutan las instrucciones simultáneamente. Esto toma un paso en comparación con cuatro pasos en una máquina secuencial.




MIMD (Multiple Instruction Multiple Data).
Este tipo de computadora es paralela al igual que las SIMD, la diferencia con estos sistemas es que MIMD es asíncrono. No tiene un reloj central. Cada procesador en un sistema MIMD puede ejecutar su propia secuencia de instrucciones y tener sus propios datos. Esta caracteristica es la más general y poderosa de esta clasificación.


Modelo SIMD(Single Instruction Multiple Data).


Se tienen N procesadores, N secuencias de instrucciones y N secuencias de datos. Cada procesador opera bajo el control de una sencuencia de instrucciones, ejecutada por su propia unidad de control, es decir cada procesador es capaz de ejecutar su propio programa con diferentes datos. Esto significa que los procesadores operan asíncronamente, o en terminos simples, pueden estar haciendo diferentes cosas en diferentes datos al mismo tiempo.
Los sistemas MIMD se clasifican en:
Sistemas de Memoria Compartida.
Sistemas de Memoria Distribuida.
Sistemas de Memoria Compartida Distribuida.


Sistemas de Memoria Compartida.
En este tipo de sistemas cada procesador tiene acceso a toda la memoria, es decir hay un espacio de direccionamiento compartido. Se tienen tiempos de acceso a memoria uniformes ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal y las lecturas y escrituras de todos los procesadores tienen exactamente las mismas latencias; y además el acceso a memoria es por medio de un ducto común. En esta configuración, debe asegurarse que los procesadores no tengan acceso simultáneamente a regiones de memoria de una manera en la que pueda occurrir algún error.
Desventajas:
El acceso simultáneo a memoria es un problema.
Poca escabilidad de procesadores, debido a que se puede generar un cuello de botella al incrementar el numero de CPU's.
En computadoras vectoriales como Crays, etc.
Todos los CPUs tienen un camino libre a la memoria. No hay interferencia entre CPUs.
La razón principal por el alto precio de Cray es la memoria.
Ventaja:
La facilidad de la programación. Es mucho más fácil programar en estos sistemas que en sistemas de memoria distribuida.


Fig. 3.4 Sistemas de Memoria Compartida.


Las computadoras MIMD con memoria compartida son sistemas conocidos como de multiprocesamiento simétrico (SMP) donde múltiples procesadores comparten un mismo sistema operativo y memoria. Otro término con que se le conoce es máquinas firmemente juntas o de multiprocesadores. Ejemplos son: SGI/Cray Power Challenge, SGI/Cray C90, SGI/Onyx, ENCORE, MULTIMAX, SEQUENT y BALANCE, entre otras.

Sistemas de Memoria Distribuida.
Estos sistemas tienen su propia memoria local. Los procesadores pueden compartir información solamente enviando mensajes, es decir, si un procesador requiere los datos contenidos en la memoria de otro procesador, deberá enviar un mensaje solicitándolos. Esta comunicación se le conoce como Paso de Mensajes.
Ventajas:
La escalabilidad. Las computadoras con sistemas de memoria distribuida son fáciles de escalar, mientras que la demanda de los recursos crece, se puede agregar más memoria y procesadores.
Desventajas:
El acceso remoto a memoria es lento.
La programación puede ser complicada.



Sistemas de Memoria Distribuida.


Las computadoras MIMD de memoria distribuida son conocidas como sistemas de procesamiento en paralelo masivo (MPP) donde múltiples procesadores trabajan en diferentes partes de un programa, usando su propio sistema operativo y memoria. Además se les llama multicomputadoras, máquinas libremente juntas o cluster. Algunos ejemplos de este tipo de máquinas son IBM SP2 y SGI/Cray T3D/T3E.



Sistemas de Memoria Compartida Distribuida.
Es un cluster o una partición de procesadores que tienen acceso a una memoria compartida común pero sin un canal compartido. Esto es, físicamente cada procesador posee su memoria local y se interconecta con otros procesadores por medio de un dispositivo de alta velocidad, y todos ven las memorias de cada uno como un espacio de direcciones globales.
El acceso a la memoria de diferentes clusters se realiza bajo el esquema de Acceso a Memoria No Uniforme (NUMA), la cual toma menos tiempo en accesar a la memoria local de un procesador que accesar a memoria remota de otro procesador.
Ventajas:
Presenta escalabilidad como en los sistemas de memoria distribuida.
Es fácil de programar como en los sistemas de memoria compartida.
No existe el cuello de botella que se puede dar en máquinas de sólo memoria compartida.



Fig. 3.6 Sistemas de Memoria Compartida Distribuida.




Algunos ejemplos de este tipo de sistemas son HP/Convex SPP-2000 y SGI/Cray Origin2000.



MISD (Multiple Instrucion Single Data).
En este modelo, secuencias de instrucciones pasan a través de múltiples procesadores. Diferentes operaciones son realizadas en diversos procesadores. N procesadores, cada uno con su propia unidad de control comparten una memoria común.



MISD (Multiple instruction Single Data.


Aqui hay N secuencias de instrucciones (algoritmos/programas) y una secuencia de datos. El paralelismo es alcanzado dejando que los procesadores realicen diferentes cosas al mismo tiempo en el mismo dato.
Las máquinas MISD son útiles en cómputos donde la misma entrada esta sujeta a diferentes operaciones.