2. 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 instrucciones 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.
4. Modelo de Von Neumann
Von Neumann describió el fundamento de todo ordenador electrónico con programas
almacenados. Describía, a diferencia de como pasaba anteriormente, como podía
funcionar un ordenador con sus unidades conectadas permanentemente y su
funcionamiento estuviese coordinado desde la unidad de control (a efectos prácticos es
la CPU). Aunque la tecnología ha avanzado mucho y aumentado la complejidad de la
arquitectura inicial, la base de su funcionamiento es la misma y probablemente lo seguirá
siendo durante mucho tiempo. El artículo viene acompañado de una representación
gráfica del funcionamiento.
Antes de entrar en los detalles de las unidades tenemos que conocer lo siguiente:
Registros: es el lugar donde se almacenan temporalmente los datos que están en
movimiento para procesarlos. En la representación de la imagen del principio podéis ver
que son los registros.
Buses: son las uniones entre las distintas unidades, la memoria y los periféricos.
5. Unidad de proceso central (CPU)
Es la unidad encargada de controlar y gobernar todo el sistema que
comprende una computadora. La CPU consiste en un circuito integrado
formado por millones de transistores, que está diseñado para poder
procesar datos y controlar la máquina. Como ya sabéis, es un factor clave
para la potencia de la computadora. La CPU dispone de dos unidades en
su interior: la unida de control y la unidad aritmético-lógica.
8. La memoria principal
La memoria principal en la arquitectura inicial era directamente la RAM, pero esto ha
evolucionado y se han añadido memorias caché e implementado algoritmos que
predicen que datos vamos a usar más frecuentemente.
La memoria RAM es bastante sencilla, en comparación con la CPU, se podría decir que es
una tabla, que contiene la dirección (o lugar) donde está cierto dato y el contenido del
propio dato. La memoria dispone de un registro de direcciones (RDM) y un registro de
intercambio de memoria (RIM o registro de datos). En el registro de direcciones se
almacena la dirección en la que se almacenará o leerá un dato, y en el registro de
intercambio de memoria se almacena ese dato leído o que se almacenará.
Cuando hablamos de direcciones de memoria a muchos os sonará de los “punteros” de
C, y es por esto que es esencial conocer la arquitectura de Von Neumann antes de
aprender a programar en ciertos lenguajes que actúan a más bajo nivel.
La unidad de control contiene el registro contador de programa, que contiene la
dirección de memoria de la siguiente instrucción, que se incrementa tras realizar una
instrucción y así va recorriendo la memoria y ejecutando el programa.
9.
10. SISD (Single Instruction Single Data)
Ejemplo: Para procesar la suma de N números a1, a2, ... aN, el procesador
necesita acezar 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
sincronizada mente ejecutan la misma secuencia de instrucciones, pero en
diferentes datos. El tipo de memoria que estos sistemas utilizan es distribuida.
11. SIMD (Single Instruction Multiple Data).
A diferencia de SISD, en este caso se tienen múltiples procesadores que
sincronizada mente ejecutan la misma secuencia de instrucciones, pero
en diferentes datos. El tipo de memoria que estos sistemas utilizan es
distribuida.
12. 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
sincronizada mente 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.
13. 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 característica es
la más general y poderosa de esta clasificación.
14. Se tienen N procesadores, N secuencias de instrucciones y N secuencias
de datos. Cada procesador opera bajo el control de una secuencia 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
términos 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.
15. 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 ocurrir algún error.
Desventajas:
El acceso simultáneo a memoria es un problema.
Poca estabilidad 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.
16. 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.
17. 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.
18. 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.
19. 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
acezar a la memoria local de un procesador que acezar 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.
20. Algunos ejemplos de este tipo de sistemas son HP/Convex SPP-2000 y
SGI/Cray Origin2000.
21. 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.
22. Aquí 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.