Arquitecturas Avanzadas
Arquitecturas Avanzadas
Arquitecturas Avanzadas
Las computadoras SIMD tienen una sola unidad de control y múltiples unidades funcionales. La unidad de control se encarga de enviar la misma instrucción a
todas las unidades funcionales. Cada unidad funcional trabaja sobre datos diferentes. Estos equipos son de propósito específico, es decir, son apropiados para
ciertas aplicaciones particulares, como por ejemplo el procesamiento de imágenes.
Los procesadores SIMS se especializan en problemas numéricos que puedan expresarse como matrices o vectores. Cada unidad de procesamiento consta de
una ALU y registros, y se utiliza para computar un elemento del resultado (front-end von Neumann, más un array de procesadores idénticos que realizan la
misma instrucción).
Ejemplo de Procesador SIMD: El procesador Pentium MMX introdujo en la arquitectura IA32 un set de recursos para el tratamiento de señales.
ARQUITECTURA MIMD: Cuyas siglas significa Multiple Instruction, Multiple Data. Es un sistema con un flujo de múltiples instrucciones que operan sobre
múltiples datos. Estos sistemas empezaron a utilizarse a principios de los 80. Se las conoce como múltiples computadoras y multiprocesadores. Se puede decir
que MIMD es un súper conjunto de SIMD.
CARACTERISTICAS
Son sistemas con memoria compartida que permite ejecutar varios procesos simultáneamente (sistema multiprocesador)
La diferencia con estos sistemas es que MIMD es asíncrono.
No tiene un reloj central.
Cuando las unidades de proceso reciben datos de una memoria no compartida estos sistemas reciben el nombre de Múltiple SISD (MSISD).
Los procesadores pueden ejecutar la misma o instrucción o diferentes instrucciones y tener sus propios datos
Diferentes elementos de información se asignan a diferentes procesadores
Pueden tener memoria distribuida o compartida.
Cada procesador MIMD corre casi independientemente de los otros.
Pueden ser utilizadas en aplicaciones con información en paralelo o con tareas en paralelo.
Cada procesador tiene su propia unidad de control y su propia unidad funcional.
Organización de procesadores en
paralelo; débil y fuertemente acoplado
La computación paralela es una forma de cómputo en la que muchas
instrucciones se ejecutan simultáneamente,1operando sobre el principio de que
problemas grandes, a menudo se pueden dividir en unos más pequeños, que
luego son resueltos simultáneamente (en paralelo). Hay varias formas
diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a
nivel de instrucción, paralelismo de datos y paralelismo de tareas. El
paralelismo se ha empleado durante muchos años, sobre todo en la
computación de altas prestaciones, pero el interés en ella ha crecido
últimamente debido a las limitaciones físicas que impiden el aumento de la
frecuencia.n. 12Como el consumo de energía —y por consiguiente la generación
de calor— de las computadoras constituye una preocupación en los últimos
años,n. 23la computación en paralelo se ha convertido en el paradigma
dominante en la arquitectura de computadores, principalmente en forma de
procesadores multinúcleo
Lenguajes paralelos
La programación vectorial está unida al concepto de vector. Cabe destacar que dicho concepto
se refiere a un conjunto de datos del mismo tipo almacenados en memoria normalmente en
posiciones contiguas pero no tiene por qué ser así ya que imaginase una matriz de dos
dimensiones que está almacenada en memoria por filas. Si consideramos que un vector es una
fila sí que se cumple que los datos están almacenados de forma contigua en la memoria pero si
se considera como vectores las columnas o incluso las diagonales se pierde esa contigüidad en
memoria. Decimos que la programación vectorial está unida al concepto de vector e hicimos
hincapié en ese concepto debido a que la principal diferencia entre la programación vectorial y
escalar estriba en que en la vectorial, utilizada en procesadores vectoriales, puede decodificar
instrucciones cuyos operandos sean vectores por lo que pueden realizar operaciones tanto
aritméticas como lógicas sobre las componentes de dichos vectores en una única instrucción. En
este contexto surge a su vez el proceso de vectorización que se basa en la conversión de un
programa correspondiente a un procesador escalar a otro vectorial. A continuación se mostrará
una parte del conjunto de operaciones vectoriales que se pueden realizar sobre operandos
vectoriales (vectores) compuestos por un conjunto de n componentes (nos referiremos a dicho n
como tamaño) donde cada componente es un escalar (por ejemplo entero, punto flotante…)
ALGORITMOS EN PARALELO